ZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCA4ZDkxN2EyLi5lYzMzOTVhIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDkgKzEsMzkwNiBAQAotPT09IHJlbGVhc2UgMS42LjMgPT09Cis9PT0gcmVsZWFzZSAxLjcuOTEgPT09CiAKLTIwMTYtMDEtMjAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNsb21vQGNvYXhpb24ubmV0PgorMjAxNi0wMy0xNSAgU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AY29heGlvbi5uZXQ+CiAKIAkqIGNvbmZpZ3VyZS5hYzoKLQkgIHJlbGVhc2luZyAxLjYuMworCSAgcmVsZWFzaW5nIDEuNy45MQorCisyMDE2LTAzLTEyIDE1OjQ0OjU0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSAgdHNkZW11eDogYWRkIHZpZGVvL3gtaDI2NSB0byB0ZW1wbGF0ZSBjYXBzCisKKzIwMTYtMDMtMTIgMDM6MDA6MTQgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkgIG1wZWd0czogRG9uJ3QgbGVhdmUgZnJlZWQgcHJvZ3JhbXMgaW4gdGhlIGhhc2ggdGFibGUKKwkgIFdoZW4gdGhlIHN1Yi1jbGFzcyBjbGFpbXMgYSBwcm9ncmFtIGZvciBsYXRlciBmcmVlaW5nLCBtYWtlCisJICBzdXJlIGl0J3Mgbm90IGxlZnQgaW4gdGhlIGhhc2ggdGFibGUsIG9yIGl0IGNhbiBjYXVzZSBjcmFzaGVzIG9uIHNodXRkb3duLgorCSAgTWFrZSBzdXJlIHRzZGVtdXggZnJlZXMgYW55IHByb2dyYW0gaXQgaGFzIGtlcHQgYXJvdW5kIGF0IHNodXRkb3duCisJICBpZiBpdCB3YXNuJ3QgZnJlZWQgYWxyZWFkeS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM1MDMKKworMjAxNi0wMy0xMSAxNzozNDowMyArMDIwMCAgU3JlZXJlbmogQmFsYWNoYW5kcmFuIDxzcmVlcmVuai5iYWxhY2hhbmRyYW5AaW50ZWwuY29tPgorCisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jOgorCSAgdmlkZW9wYXJzZXJzOiBoMjY1OiBGaXggc2VnZmF1bHQgd2hpbGUgdHJhbnNmb3JtaW5nIGhldmMgdG8gbmFsIGFsaWduZWQgYnl0ZXN0cmVhbQorCSAgQ3JlYXRlIHRlbXBvcmFyeSBQYXJzZUZyYW1lIGFuZCBjb3B5IHRoZSBuYWwgc2l6ZSBidWZmZXIgcmVnaW9uCisJICBmb3IgZWFjaCBuYWwgdW5pdCBsaWtlIHdlIGRpZCBmb3IgaDI2NC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0OTQKKworMjAxNi0wMy0xMSAxMDowODoyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jYXVkaW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9lbmMuYzoKKwkgIGFtYzogQ29ycmVjdGx5IGhhbmRsZSBOVUxMIGlucHV0IGJ1ZmZlcnMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjM0MDEKKworMjAxNi0wMy0xMSAxMDowMDozOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0am5pdXRpbHMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBnZXRPdXRwdXRCdWZmZXJzKCkgcmV0dXJucyBhIE5VTEwgYXJyYXkgd2hlbiBhIHN1cmZhY2Ugd2FzIGNvbmZpZ3VyZWQKKwkgIFNvIGRvbid0IGVycm9yIG91dCBpZiBpdCBkb2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzQwMQorCisyMDE2LTAzLTExIDAxOjQwOjM5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuaDoKKwkgIGdsZWZmZWN0czsgZ2l2ZSBlYWNoIGVmZmVjdCBhIHVuaXF1ZSBsb25nIG5hbWUgYW5kIGRlc2NyaXB0aW9uCisJICBHaXZlcyBhcHBsaWNhdGlvbnMgdGhhdCBzY3JhcGUgdGhlIGZhY3RvcnkgZGV0YWlscyBtb3JlIGRldGFpbGVkIGFuZCB1bmlxdWUKKwkgIGRldGFpbHMgb24gdGhlIGV4YWN0IGVsZW1lbnQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTY2CisKKzIwMTYtMDMtMTAgMTc6NDY6MDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNoYWRlcjogc29tZSBjb21wYXRpYmlsaXR5IGNoYW5nZXMgZm9yIEdMIDEuNAorCSAgR0wgMS40ICh3aXRoIEdMX0FSQl9zaGFkZXJfb2JqZWN0cykgZG9lc24ndCBoYXZlIGdsSXNQcm9ncmFtIG9yIGdsSXNTaGFkZXIKKwkgIGVxdWl2YWxlbnRzLiAgQXMgdGhleSBhcmUgc2ltcGx5IGFzc2VydGlvbnMsIHNraXAgdGhlbSB3aGVuIHRoZXJlIGlzbid0IGEKKwkgIHZhbGlkIGZ1bmN0aW9uIHBvaW50ZXIuCisKKzIwMTYtMDMtMTAgMDA6Mjk6NDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyYXBwLmM6CisJICBnbGZpbHRlcmFwcDogdXBkYXRlIGZvciB0aGUgdXNlIG9mIHNoYWRlcnMKKwkgIEZpeGVzIGJsYWNrIG91dHB1dCB3aGVuIHBsYWNlZCBpbiBwaXBlbGluZXMgKHVzaW5nIHRoZSBkZWZhdWx0IGRyYXdpbmcpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzM2NQorCisyMDE2LTAzLTEwIDAwOjI3OjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmg6CisJICBnbGZpbHRlcjogcmV0cmlldmUgdGhlIHNoYWRlciBhdHRyaWJ1dGVzIGZyb20gdGhlIEdMIHRocmVhZAorCSAgT3RoZXJ3aXNlIHdlIHdpbGwgcmVjZWl2ZSBib2d1cyB2YWx1ZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMzNjUKKworMjAxNi0wMy0xMCAwMDoyNDo0OCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvbWFpbi5jcHA6CisJKiB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmV5dXYvbWFpbi5jcHA6CisJICBnbC9leGFtcGxlcy9jdWJlKjogY2hvb3NlIG9wZW5nbCBieSBkZWZhdWx0CisJICBUaGUgZXhhbXBsZXMgZG9uJ3Qgd29yayB3aXRoIGFueSBvdGhlciBHTCBBUEkuCisJICBBbHNvIGZpeCB0aGUgeXV2IGV4YW1wbGUgdG8gbm90IHRyYW5zbGF0ZSB0aGUgY3ViZSBvdXQgb2YgdGhlIGNsaXBwaW5nIGFyZWEuCisKKzIwMTYtMDMtMTAgMDA6MjM6MTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9meHRlc3QuYzoKKwkgIGdsL2V4YW1wbGVzL2Z4dGVzdDogYWRkIG5lZWRlZCBnbHVwbG9hZCB0byB0aGUgcGlwZWxpbmUKKwkgIEZpeGVzIGEgbmVnb3RpYXRpb24gZmFpbHVyZSBpbiB0aGUgZXhhbXBsZQorCisyMDE2LTAzLTA3IDEzOjA0OjA4ICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuaDoKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2UuYzoKKwkgIG1wZWd2aWRlb3BhcnNlcjogSGFuZGxlIG5vbi1oaWVyYXJjaGljYWwgcHJvZmlsZXMgYWdhaW4KKwkgIFRoaXMgaXMgYSByZWdyZXNzaW9uIGZyb20gc2luY2UgbXBlZ3ZpZGVvcGFyc2VyIHdhcyBzd2l0Y2hlZCB0bworCSAgdXNlIHRoZSBjb2RlY3BhcnNpbmcgbGlicmFyeS4KKwkgIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGhpZ2ggYml0IG9mIHRoZSBwcm9maWxlX2FuZF9sZXZlbCBpcyB1c2VkCisJICB0byBzcGVjaWZ5IG5vbi1oaWVyYXJjaGljYWwgcHJvZmlsZXMgYW5kIGxldmVscy4gVW5mb3J0dW5hdGVseSB3ZQorCSAgd2VyZSBkaXNjYXJkaW5nIHRoYXQgaW5mb3JtYXRpb24uCisJICBFeHBvc2UgdGhhdCBlc2NhcGUgYml0LCBhbmQgdXNlIGl0IGluIHRoZSBlbGVtZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMjIwCisKKzIwMTYtMDMtMDkgMTE6NTg6NDMgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IEZpeCB3aW5kb3cgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMzNTYKKworMjAxNi0wMy0wOCAxMTo0MTo0OSArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkgIHRzZGVtdXg6IERvbid0IHJlc2V0L3JlY2FsY3VsYXRlIHNlZ21lbnRzIHdpdGggYWNjdXJhdGUgc2Vla3MKKwkgIFdoZW4gZGVhbGluZyB3aXRoIGFjY3VyYXRlIHNlZWtzLCB3ZSBtdXN0IHNlbmQgb3V0IGEgc2VnbWVudCB3aGljaAorCSAgaXMgZXhhY3RseSB3aGF0IGlzIHJlcXVlc3RlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMyNjIKKworMjAxNi0wMy0wOCAwMjowNjo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IHNpZ25hbCBjb250aW51YXRpb24gaW4gcmVzZXQKKwkgIFdlIHdhbnQgdG8gaXRlcmF0ZSBvdmVyIGFsbCB0aGUgcGFkcywgbm90IGp1c3QgdGhlIGZpcnN0IG9uZS4gIEZpeCBieSByZXR1cm5pbmcKKwkgIFRSVUUgaW4gdGhlIEdzdEFnZ3JlZ2F0b3JQYWRGb3JlYWNoRnVuYy4KKwkgIFJlbW92ZXMgYSBHU1RfSVNfR0xfQ09OVEVYVCgpIGFzc2VydGlvbiBvbiBzaHV0ZG93biB3aXRoID4yIGlucHV0cworCSAgdXNpbmcgZ3N0LWxhdW5jaC4KKworMjAxNi0wMy0wOCAwMDozNToyMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsY29udGV4dC5jOgorCSAgZ2xkaXNwbGF5OiBtYWtlIHJlYWRkaW5nIHRoZSBzYW1lIGNvbnRleHQgYSBuby1vcAorCSAgV2l0aCBlMzhhZjIzMDQ0MjdkYjkwOGExNmJiYWUwZTYwYWE2OGJlMWJhNWI1IHJldHVybmluZyB0aGUgY29ycmVjdCBjb250ZXh0cywKKwkgIGdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0KCkgd2FzIHN1c2NlcHRpYmxlIHRvIGNhdXNpbmcgaW5maW50ZSBsb29wcyB3aGVuCisJICBhZGRpbmcgdGhlIHNhbWUgR3N0R0xDb250ZXh0IG1vcmUgdGhhbiBvbmNlLiAgRml4IGFuZCBhZGQgYSB0ZXN0IGZvcgorCSAgZ3N0X2dsX2Rpc3BsYXlfYWRkX2NvbnRleHQoKS4KKwkgIEZpeGVzIGdsdmlkZW9taXhlciBnc3QtdmFsaWRhdGUgdGVzdHMuCisKKzIwMTYtMDMtMDcgMDg6NTI6NTQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbF9jb2NvYV9wcml2YXRlLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLm06CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EubToKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5tOgorCSAgUmV2ZXJ0ICJsaWJnc3RnbDogY29jb2EsIGVhZ2w6IGRvbid0IG1hcnNoYWwgR0wgY2FsbHMgdG8gdGhlIGNvbnRleHQgdGhyZWFkIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCA3OTdkNjQxNWRmZDZlMTExZWZiMmNhYjU0NDk1OGE2N2NiZjIyYjE3LgorCSAgV2UncmUgZnJvemVuIGZvciAxLjguMCByZWxlYXNlIGFuZCB0aGlzIGNoYW5nZSBtaWdodCBoYXZlIGJpZ2dlciBpbXBhY3QuCisKKzIwMTYtMDMtMDcgMTY6MDM6MjUgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xfY29jb2FfcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsd2luZG93X2NvY29hLm06CisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2xjb250ZXh0X2VhZ2wubToKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wubToKKwkgIGxpYmdzdGdsOiBjb2NvYSwgZWFnbDogZG9uJ3QgbWFyc2hhbCBHTCBjYWxscyB0byB0aGUgY29udGV4dCB0aHJlYWQKKwkgIEV4ZWN1dGUgR0wgY2FsbHMgd2l0aG91dCBtYXJzaGFsbGluZyB0aGVtIHRvIHRoZSBjb250ZXh0IHRocmVhZC4gSW4gdGhlIGNvY29hCisJICBhbmQgZWFnbCBiYWNrZW5kcyBjYWxsaW5nIGdzdF9nbF9jb250ZXh0X2FjdGl2YXRlIGlzIGNoZWFwIGFuZCB0aGVyZWZvcmUgY2FsbGluZworCSAgaXQgb24gdGhlIGN1cnJlbnQgdGhyZWFkIGFuZCBzZXJpYWxpemluZyBHTCBjYWxscyB3aXRoIGEgcGVyLWNvbnRleHQgbG9jayBpcworCSAgbW9yZSBlZmZpY2llbnQgKGZhc3RlciBhbmQgaGFzIGxlc3Mgb3ZlcmhlYWQpIHRoYW4gbWFyc2hhbGxpbmcgZXZlcnl0aGluZyB0byB0aGUKKwkgIGNvbnRleHQgdGhyZWFkLgorCSAgVGhpcyBvcHRpbWl6YXRpb24gY3V0cyBhIGxhcmdlIG92ZXJoZWFkIGluIGdfcG9sbCAoY29udGludW91c2x5IHdha2luZyB1cCB0aGUKKwkgIGNvbnRleHQgdGhyZWFkKSBhbmQgaW4gZ19tdXRleF8qL2dfY29uZF8qICh3YWl0aW5nIGZvciByZXN1bHRzIGZyb20gdGhlIGNvbnRleHQKKwkgIHRocmVhZCkuCisKKzIwMTYtMDMtMDUgMTc6MTY6MjQgKzAxMDAgIE1hcmsgTmF1d2VsYWVydHMgPG1uYXV3QHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jOgorCSAgZ2xkaXNwbGF5OiByZWFsbHkgcmV0cmlldmUgZ2xjb250ZXh0IGZvciBhIHNwZWNpZmljIHRocmVhZAorCSAgV2hlbiByZXF1ZXN0aW5nIGEgZ2xjb250ZXh0IChyZWdhcmRsZXNzIG9mIHRocmVhZCksIHRoZSByZXN1bHQgd2FzIGNvcnJlY3QuCisJICBIb3dldmVyLCB3aGVuIHJlcXVlc3RpbmcgY3VycmVudCBnbGNvbnRleHQgb24gYSBzcGVjaWZpYyB0aHJlYWQsIGl0IGNvdWxkCisJICBjb21lIHVwIHdpdGggYSBnbGNvbnRleHQgYWN0aXZlIG9uIGFub3RoZXIgdGhyZWFkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzE2OAorCisyMDE2LTAzLTA2IDE5OjM1OjM4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYXBpLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSAgZ2w6IG1pc2MgZG9jcyBmaXhlcy9hZGRpdGlvbnMKKworMjAxNi0wMy0wNiAxOTozMjoyMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZW51bXMuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmb3JtYXQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSAgZ2wqbWVtb3J5OiBkb2N1bWVudCBuZXcgZnVuY3Rpb25hbGl0eSBhbmQgb2JqZWN0cworCisyMDE2LTAzLTA2IDE5OjIzOjA2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkgIGRvY3M6IGFkZCBuZXcgR0wgYXBpIHRvIC50eXBlcyBmaWxlIGZvciB0eXBlL3NpZ25hbCBpbnRyb3NwZWN0aW9uCisKKzIwMTYtMDMtMDYgMTk6MjI6MzEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL01ha2VmaWxlLmFtOgorCSAgZG9jczogaWdub3JlIHNvbWUgcHJpdmF0ZSBHTCBoZWFkZXJzCisKKzIwMTYtMDMtMDYgMTk6MTg6NTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLWRvY3Muc2dtbDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1zZWN0aW9ucy50eHQ6CisJICBkb2NzL2dsOiBhZGQgZ2wgZnVuY3Rpb25zL3N0cnVjdHMgZnJvbSAtdW51c2VkIGludG8gdGhlIGRvY3MKKworMjAxNi0wMy0wNSAxOTo0ODo0NSArMDEwMCAgTWFyayBOYXV3ZWxhZXJ0cyA8bW5hdXdAdXNlcnMuc291cmNlZm9yZ2UubmV0PgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuYzoKKwkgIGdsZmlsdGVyOiBoYW5kbGUgc29tZSBtb3JlIHVuZml4ZWQgZmllbGRzIHdoZW4gZml4YXRpbmcgY2FwcworCisyMDE2LTAzLTA1IDExOjM4OjQ2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuYW06CisJICBndGs6IGV4YW1wbGVzOiAjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJIGFuZCBsaW5rIHdpdGggWDExX0xJQlMKKwkgIFgxMV9MSUJTIGlzIG5lZWRlZCBmb3IgWEluaXRUaHJlYWRzKCkgYW5kIHdpdGhvdXQgdGhlICNkZWZpbmUgd2UgZ2V0CisJICB3YXJuaW5ncyBhYm91dCB0aGUgR0wgQVBJIGJlaW5nIHN0aWxsIHVuc3RhYmxlLgorCisyMDE2LTAzLTAyIDE5OjMyOjEzICswOTAwICBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWRjYW1lcmEuYzoKKwkgIGFuZHJvaWRtZWRpYTogUmVtb3ZlIHVudXNlZCBmaWxlCisJICBhaGNzcmMgaXMgcmVnaXN0ZXJlZCBieSBnc3RhbWMuYworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzA5OAorCisyMDE2LTAyLTE3IDA5OjM2OjE1IC0wODAwICBNYXJ0aW4gS2VsbHkgPG1hcnRpbkBzdXJyb3VuZC5pbz4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkgIGFtYzogcHJvcGVybHkgZGVpbml0IHdoZW4gYWhjc3JjIHJlZ2lzdGVyIGZhaWxzCisJICBJbiB0aGUgYW5kcm9pZG1lZGlhIHBsdWdpbl9pbml0LCB3ZSBpbml0aWFsaXplIHZhcmlvdXMgcmVzb3VyY2VzIG9uIHRoZQorCSAgQW5kcm9pZCBkZXZpY2UuIElmIGFueXRoaW5nIGZhaWxzIGR1cmluZyB0aGlzIHNlcmllcyBvZiBpbml0aWFsaXphdGlvbnMsCisJICB3ZSBuZWVkIHRvIGRlaW5pdGlhbGl6ZSBhbnkgaW5pdGlhbGl6YXRpb25zIHRoYXQgYWxyZWFkeSBvY2N1cnJlZC4KKwkgIEhvd2V2ZXIsIHdlIGRvbid0IGRvIHNvIGlmIHdlIGZhaWwgdG8gcmVnaXN0ZXIgdGhlIGFoY3NyYyBlbGVtZW50LiBGaXgKKwkgIHRoaXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDY1CisKKzIwMTYtMDItMTggMTE6MDA6NTAgLTA4MDAgIE1hcnRpbiBLZWxseSA8bWFydGluQHN1cnJvdW5kLmlvPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYWhjOiBjb3JyZWN0IGVycm9yIG1lc3NhZ2UKKwkgIFRoZSBlcnJvciBtZXNzYWdlIGlzIHNwZWNpZmljIHRvIG9ubHkgb25lIG9mIHRoZSBmYWlsdXJlIGNhc2VzIGFuZCBpcworCSAgbWlzbGVhZGluZyBpbiB0aGUgb3RoZXJzLiBDb3JyZWN0IGl0IHRvIGJlIG1vcmUgZ2VuZXJpYyBhbmQgY292ZXIgYWxsCisJICB0aGUgZmFpbHVyZSBjYXNlcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMwNjUKKworMjAxNi0wMi0xNiAxMTo0NTowMSAtMDgwMCAgTWFydGluIEtlbGx5IDxtYXJ0aW5Ac3Vycm91bmQuaW8+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhaGM6IHJlbW92ZSB1bm5lZWRlZCAjaW5jbHVkZSA8c3RkaW8uaD4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMwNjUKKworMjAxNi0wMi0xOCAxNjowMDoxOCAtMDgwMCAgTWFydGluIEtlbGx5IDxtYXJ0aW5Ac3Vycm91bmQuaW8+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmM6CisJICBhaGM6IHR5cG8gZml4CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYzMDY1CisKKzIwMTYtMDMtMDMgMjI6MTU6MDcgLTA1MDAgIEpvZSBHb3JzZSA8amhnb3JzZUBnbWFpbC5jb20+CisKKwkqIGV4dC9obHMvTWFrZWZpbGUuYW06CisJICBobHM6IEFkZCBPUEVOU1NMX0NGTEFHUyB0byBDRkxBR1MKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjMwNzkKKworMjAxNi0wMy0wMyAxOTo0NTo0MyAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJICBnbGJhc2VtZW1vcnk6IERvbid0IGNoYW5nZSBtYXhzaXplIGF0IHJ1bi10aW1lCisJICBNYXhzaXplIGlzIGluaXRpYWxpemVkIG9uY2UgYW5kIHNob3VsZCBuZXZlciBjaGFuZ2UuIEFsbG9jYXRpbmcgZGF0YQorCSAgc2hvdWxkIGhhdmUgbm8gaW1wYWN0IG9uIHRoZSBzZWxlY3RlZCBtYXggc2l6ZSBmb3IgdGhpcyBtZW1vcnkuIFRoaXMKKwkgIGNhdXNpbmcgbWVtb3J5IG1hcCBmYWlsdXJlIGFzIHRoZSBtYXhzaXplIHdvdWxkIGJlY29tZSBzbWFsbGVyIHRoZW4KKwkgIHNpemUuIFRoaXMgaGFwcGVuZWQgd2hlbiB1c2luZyBkaXJlY3QgcmVuZGVyaW5nIGluIGF2dmlkZGVjIG9uIEdMIHRoYXQKKwkgIGRvZXMgbm90IHN1cHBvcnQgUEJPIHRyYW5zZmVyLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MzA0NQorCisyMDE2LTAzLTAxIDE4OjIyOjM3ICswMzAwICBTZXJnZXkgQm9yb3Zrb3YgPHNlcmdleS5ib3JvdmtvdkB3aXJlbG9hZC5uZXQ+CisKKwkqIGV4dC9xdC9xdGl0ZW0uY2M6CisJICBxbWw6IEZpeCBsZWFrIG9mIHRoZSBPcGVuR0wgY29udGV4dHMKKwkgIFtNYXR0aGV3IFdhdGVyc106IGFkZCBOVUxMIGNoZWNrcyBiZWZvcmUgdW5yZWZmaW5nCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyOTk5CisKKzIwMTYtMDItMjkgMTQ6MjQ6NDYgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkgIHZrc2luazogZml4IHNwZWxsaW5nIG9uIGZhaWxlZCBfZW5zdXJlX2RhdGEoKSBlcnJvciBtZXNzYWdlCisKKzIwMTYtMDMtMDIgMjE6NDY6NDQgKzAyMDAgIFZpdmlhIE5pa29sYWlkb3UgPHZpdmlhQGFoaXJ1LmV1PgorCisJKiBleHQvbXBlZzJlbmMvZ3N0bXBlZzJlbmMuY2M6CisJICBtcGVnMmVuYzogUHJvdmlkZSBmb3JtYXQgYXMgYSBzdHJpbmcgaW5zdGVhZCBvZiBhIGNoYXIgdG8gZ3N0X3N0cnVjdHVyZV9uZXcKKwkgIFRoZSBmb3JtYXQgd2FzIHByb3ZpZGVkIGFzICdJNDIwJyBpbnN0ZWFkIG9mICJJNDIwIiwgY2F1c2luZyBhIGNyYXNoLgorCisyMDE1LTAxLTIwIDE2OjIwOjEwICswMTAwICBBdXLDqWxpZW4gWmFuZWxsaSA8YXVyZWxpZW4uemFuZWxsaUBwYXJyb3QuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFja2V0aXplci5jOgorCSAgbXBlZ3RzcGFja2V0aXplcjogaGFuZGxlIGVhcmx5IFBUUyBjb252ZXJzaW9uIHdoZW4gYSBncm91cCBoYXMgYmVlbiBmb3VuZAorCSAgSW4gc29tZSBjYXNlcywgdGhlIFBUUyBtaWdodCBiZSBzbWFsbGVyIHRoYW4gdGhlIGZpcnN0IG9ic2VydmVkIFBDUgorCSAgdmFsdWUgd2hpY2ggY2F1c2VzIGVsZW1lbnQgdG8gYXBwbHkgd3JhcGFyb3VuZCBsZWFkaW5nIHRvIGJvZ3VzCisJICB0aW1lc3RhbXAuIFRvIHNvbHZlIHRoaXMsIHdlIG9ubHkgYXBwbHkgaXQgaWYgdGhlIFBUUy1QQ1IgZGlmZmVyZW5jZSBpcworCSAgZ3JlYXRlciB0aGF0IDEgc2Vjb25kIHRvIGJlIHN1cmUgdGhhdCBpdCdzIGEgcmVhbCB3cmFwYXJvdW5kLgorCSAgTW9yZW92ZXIsIHVzaW5nIHVuc2lnbmVkIDMyIGJpdHMgdmFsdWVzIHRvIGhhbmRsZSB3cmFwb3ZlciBjb3VsZCBlbmQgdXAKKwkgIHdpdGggYm9ndXMgdmFsdWUsIHNvIGl0IHVzZSBwdHMgdmFsdWUgdG8gaGFuZGxlIGl0LgorCSAgQWxzbywgY29udmVydCBwY3IgdGltZSB0byBnc3QgdGltZSBiZWZvcmUgY29tcGFyaW5nIGl0IHRvIHB0cy4KKwkgIFNpbmNlIHJlZnBjciBpcyBleHByZXNzZWQgaW4gUENSIHRpbWUgYmFzZSB3aGlsZSBwdHMgaXMgZXhwcmVzc2VkIGluIEdTdHJlYW1lcgorCSAgdGltZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMyNTkKKworMjAxNi0wMy0wMiAxMDo0MToxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogRml4IFJFTU9WRV9TTkFQX0ZMQUdTKCkgbWFjcm8KKwkgICEoZmxhZzEgfCBmbGFnMiB8IGZsYWczKSBpcyBhbHdheXMgZXZhbHVhdGlvbiB0byAwLiB+IHdhcyBtZWFudCBoZXJlCisJICBpbnN0ZWFkIG9mICEuCisJICBDSUQgMTM1MjAzMi4KKworPT09IHJlbGVhc2UgMS43LjkwID09PQorCisyMDE2LTAzLTAxIDE4OjIzOjM2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBDaGFuZ2VMb2c6CisJKiBORVdTOgorCSogUkVMRUFTRToKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHk6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWNjdXJpcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21kZWMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1haWZmLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc2ZtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzc3JlbmRlci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9taXhlci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW92aXN1YWxpemVycy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXV0b2NvbnZlcnQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJheWVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNhbWVyYWJpbi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2hyb21hcHJpbnQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbG9yZWZmZWN0cy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY3VybC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGF0YXVyaXNyYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVidWd1dGlsc2JhZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRzZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2YnN1Ym92ZXJsYXkueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2ZHNwdS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tbXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGxleC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb2ZhLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuYWwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcG5tLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yYXdwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVtb3Zlc2lsZW5jZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVzaW5kdmQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRtcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2Nocm8ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNkcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2VnbWVudGNsaXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNobS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3RoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zb3VuZHRvdWNoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGFuZHNwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGVlZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3ViZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYWFjZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FtcndiZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13YXlsYW5kc2luay54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teTRtZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi16YmFyLnhtbDoKKwkqIGdzdC1wbHVnaW5zLWJhZC5kb2FwOgorCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgorCSAgUmVsZWFzZSAxLjcuOTAKKworMjAxNi0wMy0wMSAxNzoxMDoyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogcG8vYWYucG86CisJKiBwby9hei5wbzoKKwkqIHBvL2NhLnBvOgorCSogcG8vY3MucG86CisJKiBwby9kYS5wbzoKKwkqIHBvL2RlLnBvOgorCSogcG8vZWwucG86CisJKiBwby9lbl9HQi5wbzoKKwkqIHBvL2VvLnBvOgorCSogcG8vZXMucG86CisJKiBwby9ldS5wbzoKKwkqIHBvL2ZpLnBvOgorCSogcG8vZ2wucG86CisJKiBwby9oci5wbzoKKwkqIHBvL2h1LnBvOgorCSogcG8vaWQucG86CisJKiBwby9pdC5wbzoKKwkqIHBvL2phLnBvOgorCSogcG8va3kucG86CisJKiBwby9sdC5wbzoKKwkqIHBvL2x2LnBvOgorCSogcG8vbXQucG86CisJKiBwby9uYi5wbzoKKwkqIHBvL29yLnBvOgorCSogcG8vcGwucG86CisJKiBwby9wdF9CUi5wbzoKKwkqIHBvL3JvLnBvOgorCSogcG8vcnUucG86CisJKiBwby9zay5wbzoKKwkqIHBvL3NsLnBvOgorCSogcG8vc3EucG86CisJKiBwby9zci5wbzoKKwkqIHBvL3N2LnBvOgorCSogcG8vdHIucG86CisJKiBwby91ay5wbzoKKwkqIHBvL3ZpLnBvOgorCSogcG8vemhfQ04ucG86CisJICBVcGRhdGUgLnBvIGZpbGVzCisKKzIwMTYtMDMtMDEgMTY6NTM6NTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHBvL2JnLnBvOgorCSogcG8vZnIucG86CisJKiBwby9ubC5wbzoKKwkgIHBvOiBVcGRhdGUgdHJhbnNsYXRpb25zCisKKzIwMTYtMDItMjkgMTI6MzU6NTggKzAyMDAgIFNyZWVyZW5qIEJhbGFjaGFuZHJhbiA8c3JlZXJlbmouYmFsYWNoYW5kcmFuQGludGVsLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYzoKKwkgIHZpZGVvcGFyc2VyczogaDI2NDogRGlzYWJsZSBwYXNzdGhvcnVnaCBtb2RlIGVuYWJsaW5nCisJICBFbmFibGluZyBwYXNzdGhvcnVnaCBtb2RlIGlzIGNhdXNpbmcgbXVsdGlwbGUgaXNzdWU6CisJICBGb3IgbmFsIGFsaWduZWQgbXVsdGlyZXNvbHV0b24gc3RyZWFtcywgcGFzc3Rocm91Z2ggbW9kZQorCSAgbWFrZSBoMjY0cGFyc2UgdW5hYmxlIHRvIGFkdmVydGlzZSB0aGUgbmV3IHJlc291bHRpb25zLgorCSAgQWxzbyBjYXVzaW5nIGlzc3VlcyB3aGlsZSBwYXJzaW5nIE1WQyBzdHJlYW1zIHdoaWNoIGhhdmUgdHdvCisJICBzZXBhcmF0ZSBsYXllcnMgKGJhc2UtdmlldyBhbmQgbm9uLWJhc2UtdmlldykuCisJICBUaGlzIGZpeCBpcyBvbmx5IGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuCisJICBGb3IgTVZDLCBwcm9wZXIgZml4ZXMgbmVlZGVkIGluIG1hbnkgcGxhY2VzOgorCSAgKGhhbmRsZSBwcmVmaXggbmFsIHVuaXQsIGhhbmRsZSBub24tYmFzZS12aWV3IHNsaWNlIG5hbCBleHRlbnNpb24sCisJICBmaXggdGhlIHBpY3R1cmVfc3RhcnQgZGV0ZWN0aW9uIGZvciBtdWx0aS1sYXllci1tdmMgc3RyZWFtcyBldGMpCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4NjU2CisKKzIwMTYtMDItMjkgMTE6NTM6MTkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkgIHNkcGRlbXV4OiBTZXQgY2FwcyB0byBhcHBsaWNhdGlvbi94LXJ0cCBpbnN0ZWFkIG9mIGFwcGxpY2F0aW9uL3gtdW5rbm93biBhcyByZXR1cm5lZCBieSB0aGUgU0RQIGhlbHBlcnMKKwkgIFRoZSBTRFAgaGVscGVycyBjYW4ndCBrbm93IGlmIHRoaXMgaXMgZ29pbmcgdG8gYmUgUlRQLCBTUlRQLCBvciAuLi4uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyODYwCisKKzIwMTYtMDItMjkgMTE6NTE6MjggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkgIHNkcGRlbXV4OiBBZGQgcGFkcyB3aXRoIHRoZSBjb3JyZWN0IG5hbWVzIGluIGNhc2UgYW4gcnRwYmluIGlzIHVzZWQKKwkgIFRoZXkncmUgc3VwcG9zZWQgdG8gYmUgc3RyZWFtXyV1IGFuZCBub3QgcmVjdl9ydHBfc3JjXyV1XyV1XyV1LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2Mjg2MAorCisyMDE2LTAyLTI5IDEwOjM4OjMyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJICB2a3N3YXBwZXIvdmt1dGlsczogRml4IGdlcnJvciBtZW1vcnkgbGVhaworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2Mjg0MgorCisyMDE2LTAyLTI5IDEwOjM3OjExICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJICB2a2RldmljZTogRml4IGR1cGxpY2F0ZSBhc3NpZ25tZW50IG9mIHF1ZXVlIHZhcmlhYmxlCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyODQyCisKKzIwMTYtMDItMjkgMTA6MzM6NDUgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzaW5rLmM6CisJICB2a3Npbms6IEZpeCBHRXJyb3IgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI4NDIKKworMjAxNi0wMi0yOCAxNDowNjoxNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogd2luMzIvY29tbW9uL2xpYmdzdGdsLmRlZjoKKwkgIHdpbjMyOiB1cGRhdGUgZXhwb3J0cyBmb3IgbmV3IGxpYmdzdGdsIGZ1bmN0aW9uCisKKzIwMTYtMDItMjggMTA6MTI6MDEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBXaGVuIG91dHB1dHRpbmcgb24gYSBzdXJmYWNlLCBhY2NlcHQgYWxsIGNvbG9yIGZvcm1hdHMKKwkgIFdlIGRvbid0IGhhdmUgdG8gdW5kZXJzdGFuZCB0aGVtLCB3ZSBoYW5kbGUgdGhlbSBhcyBhIEdMIHRleHR1cmUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNzkyCisKKzIwMTYtMDItMjYgMTg6MTc6MzcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogaGFuZGxlIHNuYXAgc2Vla2luZyB3aXRob3V0IHNldHRpbmcgYW55IHBvc2l0aW9uCisJICBXaGVuIHRoZSBzdGFydF90eXBlIGlzIEdTVF9TRUVLX1RZUEVfTk9ORSBmb3IgYSBmb3J3YXJkIHNlZWsKKwkgIChvciBzdG9wX3R5cGUgZm9yIGEgcmV2ZXJzZSkgaXMgbm90IHNldCBvbiBhIHNuYXAgc2Vla2luZyBvcGVyYXRpb24sCisJICB0aGUgZWxlbWVudCBzaG91bGQgdXNlIHRoZSBjdXJyZW50IHBvc2l0aW9uIGFuZCB0aGVuIHNuYXAgYXMgcmVxdWVzdGVkLgorCSAgQWxzbyBmaXhlcyB1bmluaXRpYWxpemVkIHZhcmlhYmxlIGNvbXBsYWludCBieSBjbGFuZyBhYm91dAorCSAgJ3RzJyB2YXJpYWJsZS4KKworMjAxNi0wMi0yNiAxNzozMTo0NCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogc3luYyBpbmRleCBhbmQgdGhlIHNlbGVjdGVkIGNodW5rIHdoZW4gc2Vla2luZworCSAgT3RoZXJ3aXNlIHRoZSBjaHVuayBzZWxlY3RlZCBpc24ndCBtYXRjaGVkIHRvIHRoZSBpbmRleCBhbmQKKwkgIHRoZSB0aW1pbmcgd2lsbCBiZSBkaWZmZXJlbnQsIGNhdXNpbmcgaXQgdG8gYWN0dWFsbHkgc3RhcnQKKwkgIGZyb20gYSBkaWZmZXJlbnQgcG9zaXRpb24KKworMjAxNi0wMi0yNiAxMjo0MToxMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgorCSAgQXV0b21hdGljIHVwZGF0ZSBvZiBjb21tb24gc3VibW9kdWxlCisJICBGcm9tIGEyNTM5NzQgdG8gNmYyZDIwOQorCisyMDE2LTAyLTE3IDIwOjEzOjIxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuYzoKKwkgIGVnbGltYWdlbWVtb3J5OiBhZGQgY29tcGF0aWJpbGl0eSBkZWZpbml0aW9ucyBmb3IgRUdMIGRtYWJ1ZgorCSAgZS5nLiB0aGUgUlBpIGRvZXNuJ3QgaGF2ZSB0aGVtIGRlZmluZWQKKworMjAxNi0wMi0yNiAwMDozNTozMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogTWFrZWZpbGUuYW06CisJKiBleHQvb3B1cy9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcHVzL2dzdG9wdXMuYzoKKwkgIG9wdXM6IHJlbmFtZSBwbHVnaW4gdG8gb3B1c3BhcnNlIGZvciB0aGUgdGltZSBiZWluZworCSAgVW50aWwgd2UgZml4IGl0IHVwIGFuZCBnZXQgcmlkIG9mIHRoZSBvcHVzIGRlcGVuZGVuY3kgYW5kCisJICBtb3ZlIGl0IGVsc2V3aGVyZSB0b28uCisKKzIwMTYtMDItMTkgMDA6Mzg6MzMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2NzLnNnbWw6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2VjdGlvbnMudHh0OgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZXh0L29wdXMvTWFrZWZpbGUuYW06CisJKiBleHQvb3B1cy9nc3RvcHVzLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzY29tbW9uLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzY29tbW9uLmg6CisJKiBleHQvb3B1cy9nc3RvcHVzZGVjLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZGVjLmg6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmg6CisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9vcHVzLmM6CisJICBvcHVzOiByZW1vdmUgT3B1cyBlbmNvZGVyL2RlY29kZXIsIG1vdmVkIHRvIC1iYXNlCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MjgyCisKKzIwMTYtMDItMjYgMDg6MzQ6MTEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY2FvcGVuZ2xsYXllci5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5oOgorCSAgZ2xjb250ZXh0OiBhZGQgYSBtZXRob2QgdG8gYWRkIGEgY29udGV4dCB0byBhbm90aGVyIHNoYXJlIGdyb3VwCisJICBJbnRlbmRlZCBmb3IgdXNlIHdpdGggd3JhcHBlZCBjb250ZXh0cyB0aGF0IGFyZSBjcmVhdGVkIHNoYXJlZCB3aXRoIGdzdCdzCisJICBnbCBjb250ZXh0cyBpbiBvcmRlciB0byBtYW5hZ2UgdGhlIGludGVybmFsIHNoYXJlZ3JvdXAgc3RhdGUgY29ycmVjdGx5LgorCSAgZS5nLiB3aXRoIGNhb3BlbmdsbGF5ZXIgKHdoaWNoIGlzIHVzZWQgaW4gZ2xpbWFnZXNpbmsgYW5kIGNhb3BlbmdsbGF5ZXJzaW5rCisJICBvbiBPUyBYKSwgd2UgY3JlYXRlIGEgQ0dMIGNvbnRleHQgZnJvbSB0aGUgZ3N0IGNvbnRleHQgYW5kIHRoZSBzaGFyaW5nIHN0YXRlCisJICB3YXMgbm90IGJlaW5nIGNvcnJlY3RseSBzZXQgb24gZWl0aGVyIEdMIGNvbnRleHQgYW5kIGdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCgpCisJICB3YXMgYWx3YXlzIHJldHVybmluZyBGQUxTRS4KKwkgIFdpdGggMTFmYjRmZmY4MGI2M2I5ZDY3YTczMWQ0YmIyMzhiNmMwYTI5ZDc3NCBvbmx5IGZsdXNoaW5nIHdpdGggbXVsdGlwbGUKKwkgIHNoYXJlZCBjb250ZXh0cywgdGhlIHJlcXVpcmVkIGZsdXNoIHdhcyBub3Qgb2NjdXJpbmcgY2F1c2luZyBzY3JlZW4KKwkgIGNvcnJ1cHRpb24gb3Igc3R1dHRlcmluZy4KKwkgIE5vdGU6IHRoaXMgZGlkbid0IGFmZmVjdCBHU1RfR0xfQVBJPW9wZW5nbCBwaXBlbGluZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MjAKKworMjAxNi0wMi0xNyAxNToyMDo0NyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvY3Muc2dtbDoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZWN0aW9ucy50eHQ6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaGllcmFyY2h5OgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZXh0L29wdXMvTWFrZWZpbGUuYW06CisJKiBleHQvb3B1cy9nc3RvcHVzLmM6CisJKiBleHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuYzoKKwkqIGV4dC9vcHVzL2dzdHJ0cG9wdXNkZXBheS5oOgorCSogZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5jOgorCSogZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5oOgorCSAgb3B1czogcmVtb3ZlIE9wdXMgUlRQIGVsZW1lbnRzLCB0aGV5IGhhdmUgbW92ZWQgdG8gLWdvb2QKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyODIKKworMjAxNi0wMS0xOCAwODo1MDozNCArMDAwMCAgQWxleCBBc2hsZXkgPGFsZXguYXNobGV5QHlvdXZpZXcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIGhsc2RlbXV4OiB0ZXN0czogcGFzcyB0ZXN0IG5hbWUgaW50byB0ZXN0IHNldHVwIGZ1bmN0aW9uCisJICBBbGwgaGxzZGVtdXggdGVzdHMgY3JlYXRlIGEgR3N0U3RydWN0dXJlIGNhbGxlZCAic3RhdGUiIHRoYXQgY2FuIGJlIHVzZWQKKwkgIGJ5IHRlc3QgY2FzZXMgdG8gc3RvcmUgaW5mb3JtYXRpb24gZHVyaW5nIGEgdGVzdC4gVGhlIG5hbWUgb2YgdGhpcworCSAgc3RydWN0dXJlIGlzIGFyYml0cmFyeS4gV2hlbiB0aGUgY29kZSB3YXMgd3JpdHRlbiwgdGhlIGludGVudGlvbiB3YXMKKwkgIHRvIHVzZSB0aGUgbmFtZSBvZiB0aGUgdGVzdCwgdG8gYWlkIGRlYnVnZ2luZy4gSG93ZXZlciwgZHVyaW5nCisJICBkZXZlbG9wbWVudCB0aGlzIHdhcyBsb3N0LCBzbyB0aGF0IHRoZSBzdGF0ZSBHc3RTdHJ1Y3R1cmUgaXMgYWx3YXlzCisJICBnaXZlbiB0aGUgbmFtZSAic2V0dXBfdGVzdF92YXJpYWJsZXMiLgorCSAgVGhpcyBjb21taXQgY2hhbmdlcyB0aGlzIHNvIHRoYXQgdGhlIG5hbWUgb2YgdGhlIHRlc3QgaXMgdXNlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2ODQKKworMjAxNi0wMi0yMyAxMjo0MjoxOSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jb21wb3NpdG9yLmM6CisJICB0ZXN0czogY29tcG9zaXRvcjogZHJvcCBzcGVjaWFsIGNhc2UgZm9yIHZhbGdyaW5kIHRpbWVvdXQKKwkgIFRoZSBkZWZhdWx0IG9uZSBpcyA2IG1pbnV0ZXMsIHRoZSB0ZXN0IHdhcyB1c2luZyA1IG1pbnV0ZXMgc28ganVzdAorCSAgcmVzb3J0IHRvIHVzaW5nIHRoZSBkZWZhdWx0LgorCSAgRm9yIHRoZSBub24tdmFsZ3JpbmQgdGVzdCBhbHNvIHVzZSB0aGUgZGVmYXVsdCAyMCBzZWNzIGluc3RlYWQgb2YKKwkgIHJlZHVjaW5nIGl0IHRvIDZzLiBObyByZWFsIHJlYXNvbiB0byBzZXQgYSBjdXN0b20gdmFsdWUgaGVyZS4KKworMjAxNi0wMi0yMyAxMjoxNzo1OSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jb21wb3NpdG9yLmM6CisJICB0ZXN0czogY29tcG9zaXRvcjogYWRkIHRlc3RzIGZvciBjYXBzIHF1ZXJpZXMKKwkgIFZlcmlmaWVzIHRoYXQgcHJvcGVyIGNhcHMgYXJlIHJldHVybmVkIGJhc2VkIG9uIHdoYXQgZG93bnN0cmVhbQorCSAgcmVzdHJpY3RzLgorCisyMDE2LTAyLTE4IDEwOjU3OjUxIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2NvbXBvc2l0b3IuYzoKKwkgIHZpZGVvYWdncmVnYXRvcjogZml4IGNhcHMgcXVlcmllcyB0byBhbGxvdyBwcm9wZXIgcmVuZWdvdGlhdGlvbgorCSAgV2hlbiBjYXBzIGFyZSBhbHJlYWR5IG5lZ290aWF0ZWQgaXQgc2hvdWxkIGJlIHBvc3NpYmxlIHRvCisJICBzZWxlY3QgZm9ybWF0cyBvdGhlciB0aGFuIHRoZSBvbmUgdGhhdCB3YXMgbmVnb3RpYXRlZC4gSWYgZG93bnN0cmVhbQorCSAgYWxsb3dzIGFscGhhIHZpZGVvIGNhcHMgYW5kIGl0IGhhcyBhbHJlYWR5IG5lZ290aWF0ZWQgdG8gYSBub24tYWxwaGEKKwkgIGZvcm1hdCwgY2FwcyBxdWVyaWVzIHNob3VsZCBzdGlsbCByZXR1cm4gdGhlIGFscGhhIGNhcHMgYXMgYSBwb3NzaWJsZQorCSAgZm9ybWF0IGFzIGNhcHMgcmVuZWdvdGlhdGlvbiBjYW4gaGFwcGVuLgorCSAgSW5jbHVkZXMgdGVzdHMgKGZvciBjb21wb3NpdG9yKSB0byBjaGVjayB0aGF0IGNhcHMgcXVlcmllcyBkb25lIGFmdGVyCisJICBhIGNhcHMgaGFzIGJlZW4gbmVnb3RpYXRlZCByZXR1cm5zIGNvbXBsZXRlIHJlc3VsdHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MTAKKworMjAxNi0wMi0yNCAxNzowNzoxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIHZ0ZGVjOiBOZWdvdGlhdGUgdGhlIGRlY29kZXIgaW4gc2V0X2Zvcm1hdCgpIGFscmVhZHkKKwkgIERvbid0IHdhaXQgdW50aWwgbGF0ZXIsIHdlIHdhbnQgdG8ga25vdyBoZXJlIGlmIHRoZSBjb2RlYyBjYW4gYmUgb3BlbmVkIG9yIG5vdAorCSAgZm9yIHRoZSByZXF1ZXN0ZWQgZm9ybWF0LiBUaGlzIHdhcyByZW1vdmVkIChhY2NpZGVudGlhbGx5PykgYnkKKwkgIDExOWUwOWVhYzMxNWY3OWFjMmNmNDViNDQ0MWFkMWQ5MzIxMzA2MTQKKwkgIFdpdGhvdXQgdGhpcyBkZWNvZGViaW4gaGFzIG5vIHdheSB0byBzd2l0Y2ggdG8gYSBkaWZmZXJlbnQgZGVjb2RlciBpZiB0aGlzIG9uZQorCSAgZG9lcyBub3Qgd29yay4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjI2MTMKKworMjAxNi0wMi0yNSAxMTozNDo0MCArMDIwMCAgSm9lIEdvcnNlIDxqaGdvcnNlQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGF2ZnZpZGVvc3JjOiBGcmFtZSBkdXJhdGlvbnMgYXMgQ1RpbWUgdG8gdGhlIEFQSSwgbm90IGRvdWJsZQorCSAgTmV3ZXIgaU9TIHNlZW1zIHRvIGF1dG9tYXRpY2FsbHkgY29udmVydCwgb2xkZXIgaU9TL09TWCBqdXN0IGNyYXNoZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNTc1CisKKzIwMTYtMDItMjQgMjM6NDg6MTkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jOgorCSAgbnZlbmM6IHJlbGVhc2UgdGhlIGZyYW1lcyBhbmQgIGxpc3Qgd2hlbiBzZWFyY2hpbmcgZm9yIGFuIG91dHB1dCBidWZmZXIKKwkgIEZpeGVzIGEgbWFzc2l2ZSBsZWFrIGluOgorCSAgdmlkZW90ZXN0c3JjICEgbnZoMjY0ZW5jICEgZmFrZXNpbmsKKworMjAxNi0wMi0yMyAyMzoxMDoyMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvcXQvZ3N0cXRzaW5rLmNjOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkgIHF0OiB1c2UgYSBzdGF0aWNfY2FzdCBpbnN0ZWFkIG9mIGR5bmFtaWMgb25lCisJICBUaGUgZHluYW1pY19jYXN0IGlzIGEgbGl0dGxlIGJ1dCBvZiBvdmVya2lsbCBhcyB0aGUgYXBwIHdpbGwgc3RpbGwgY3Jhc2ggaWYgaXQKKwkgIGZhaWxzIGluIHRoZSBsYXRlciBnX2Fzc2VydC4KKwkgIEFsbG93cyBjb21waWxhdGlvbiB3aXRoIC1mbm8tcnR0aQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjUyNgorCisyMDE2LTAyLTI0IDEwOjQ1OjE3ICswODAwICBXYW5nIFhpbi15dSAo546L5piV5a6HKSA8Y29taWNmYW5zNDRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xtb3NhaWMuYzoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb21peC5jOgorCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jOgorCSAgZ2xtaXhlcjogaXRlcmF0b3IgZGlkbid0IGFkdmFuY2UgaW4gY29udGludWUgc3RhdGVtZW50CisJICBMZWFkaW5nIHRvIGEgZGVhZGxvY2suCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwODczCisKKzIwMTYtMDItMjMgMTg6MTc6NDIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9kYXRhdXJpc3JjL2dzdGRhdGF1cmlzcmMuYzoKKwkgIGRhdGF1cmlzcmM6IERvbid0IGFzc3VtZSB0aGF0IGdldF9jdXJyZW50X2NhcHMoKSByZXR1cm5zIG5vbi1OVUxMIGNhcHMgYWZ0ZXIgaGFzX2N1cnJlbnRfY2FwcygpCisJICBSZW1vdmUgY2FsbHMgdG8gZ3N0X3BhZF9oYXNfY3VycmVudF9jYXBzKCkgd2hpY2ggdGhlbiBnbyBvbiB0byBjYWxsCisJICBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMoKSBhcyB0aGUgY2FwcyBjYW4gZ28gdG8gTlVMTCBpbiBiZXR3ZWVuLiBJbnN0ZWFkIGp1c3QKKwkgIHVzZSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMoKSBhbmQgY2hlY2sgZm9yIE5VTEwuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTM5CisKKzIwMTYtMDItMjMgMTg6MTM6MzcgKzAyMDAgIERhdmUgQ3JhaWcgPGRjcmFpZ0BicmlnaHRzaWduLmJpej4KKworCSogZXh0L29wZW5jdi9nc3RkaXNwYXJpdHkuY3BwOgorCSAgZGlzcGFyaXR5OiBEb24ndCBhc3N1bWUgdGhhdCBnZXRfY3VycmVudF9jYXBzKCkgcmV0dXJucyBub24tTlVMTCBjYXBzIGFmdGVyIGhhc19jdXJyZW50X2NhcHMoKQorCSAgUmVtb3ZlIGNhbGxzIHRvIGdzdF9wYWRfaGFzX2N1cnJlbnRfY2FwcygpIHdoaWNoIHRoZW4gZ28gb24gdG8gY2FsbAorCSAgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKCkgYXMgdGhlIGNhcHMgY2FuIGdvIHRvIE5VTEwgaW4gYmV0d2Vlbi4gSW5zdGVhZCBqdXN0CisJICB1c2UgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKCkgYW5kIGNoZWNrIGZvciBOVUxMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUzOQorCisyMDE2LTAyLTIzIDEwOjQ5OjQwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGNvcnJlY3RseSBoYW5kbGUgYW4gSFRUUC1YU0RBVEUgdGhhdCBpcyBleGFjdGx5IHRoZSBzaXplIG9mIHRoZSBkYXRlIHN0cmluZworCSAgVGhlIGNvZGUgaW4gdGhlIGdzdF9kYXNoX2RlbXV4X3BhcnNlX2h0dHBfeHNkYXRlKCkgd2FzIHRyeWluZyB0bworCSAgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBzdHJpbmcgaXMgbm90IG51bGwgdGVybWluYXRlZCBieSByZXNpemluZworCSAgdGhlIGJ1ZmZlciBhbmQgYXBwZW5kaW5nIGEgemVybyBieXRlLiBUaGlzIGRvZXMgbm90IHdvcmsgaWYgdGhlIGJ1ZmZlcgorCSAgaXMgZXhhY3RseSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcgYmVjYXVzZSB0aGUgZ3N0X2J1ZmZlcl9yZXNpemUoKQorCSAgZnVuY3Rpb24gZG9lcyBub3QgcmUtYWxsb2NhdGUgdGhlIGJ1ZmZlciwgaXQganVzdCBjaGFuZ2VzIGl0cyBzaXplLgorCSAgSWYgYSBidWZmZXIgaXMgcGFzc2VkIHRvIGdzdF9kYXNoX2RlbXV4X3BhcnNlX2h0dHBfeHNkYXRlKCkgdGhhdCBpcworCSAgZXhhY3RseSB0aGUgbGVuZ3RoIG9mIHRoZSBzdHJpbmcsIHRoZSBmdW5jdGlvbiBmYWlscyB3aXRoIGFuIGFzc2VydAorCSAgZmFpbHVyZSBpbiBnc3RfYnVmZmVyX3Jlc2l6ZSgpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MjE0OAorCisyMDE2LTAyLTIzIDExOjU5OjUyICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKKwkgIGRvY3M6IEFkZCBhdWRpb2ludGVybGVhdmUKKworMjAxNi0wMi0yMiAxMDoyMTo0NyArMDEwMCAgUGV0ZXIgU2VpZGVyZXIgPHBzLnJlcG9ydEBnbXgubmV0PgorCisJKiBzeXMvZmJkZXYvZ3N0ZmJkZXZzaW5rLmM6CisJICBmYmRldnNpbms6IGZpeCBieXRlcyBwZXIgcGl4ZWwgY2FsY3VsYXRpb24KKwkgIFNpbXBsZSBwaXBlbGluZQorCSAgJCBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBmYmRldnNpbmsKKwkgIGNyYXNoZXMgd2l0aCBTSUdTRUdWIGluIGNhc2UgdGhlIGZyYW1idWZmZXIgeHJlcyBpcyBzbWFsbGVyCisJICB0aGFuIHRoZSB2aXJ0dWFsIHhyZXMgcmVzb2x1dGlvbiwgZS5nLjoKKwkgICQgZmJzZXQKKwkgIG1vZGUgIjgwMHg0ODAtMCIKKwkgICMgRDogMC4wMDAgTUh6LCBIOiAwLjAwMCBrSHosIFY6IDAuMDAwIEh6CisJICBnZW9tZXRyeSA4MDAgNDgwIDE5MjAgMTIwMCAxNgorCSAgdGltaW5ncyAwIDAgMCAwIDAgMCAwCisJICBhY2NlbCB0cnVlCisJICByZ2JhIDUvMTEsNi81LDUvMCwwLzAKKwkgIGVuZG1vZGUKKwkgIERlYnVnOgorCSAgJCBnZGIgZ3N0LWxhdW5jaC0xLjAKKwkgIChnZGIpIHJ1biB2aWRlb3Rlc3RzcmMgISBmYmRldnNpbmsKKwkgIChnZGIpIHdoZXJlCisJICAjMCAgMHhiNmJkMmQyNCBpbiBfX21lbWNweV9uZW9uICgpCisJICBhdCAuLi9zeXNkZXBzL2FybS9hcm12Ny9tdWx0aWFyY2gvbWVtY3B5X2ltcGwuUzo1OTEKKwkgICMxICAweGI2OWIwNGU4IGluIGdzdF9mYmRldnNpbmtfc2hvd19mcmFtZSAodmlkZW9zaW5rPTB4MTBhMzM3OCwKKwkgIGJ1Zj0weGI1YzA4ODM4KSBhdCBnc3RmYmRldnNpbmsuYzoyNjkKKwkgICMyICAweGI2OWU4OGM0IGluIGdzdF9iYXNlX3NpbmtfZG9fcHJlcm9sbCAoc2luaz1zaW5rQGVudHJ5PTB4MTBhMzM3OCwKKwkgIG9iaj0weGI1YzA4ODM4LCBvYmpAZW50cnk9MHhhMCkgYXQgZ3N0YmFzZXNpbmsuYzoyMjgxCisJICAjMyAgMHhiNjllOTJiYyBpbiBnc3RfYmFzZV9zaW5rX2RvX3N5bmMgKGJhc2VzaW5rPWJhc2VzaW5rQGVudHJ5PTB4MTBhMzM3OCwKKwkgIG9iaj0weGEwLCBvYmpAZW50cnk9MHhiNWMwODgzOCwgbGF0ZT0weDAsIGxhdGVAZW50cnk9MHhiNjU0OGJhMCwKKwkgIHN0ZXBfZW5kPTB4MTQwLCBzdGVwX2VuZEBlbnRyeT0weGI2NTQ4YmE0KSBhdCBnc3RiYXNlc2luay5jOjI1MDAKKwkgICM0ICAweGI2OWVhNjdjIGluIGdzdF9iYXNlX3NpbmtfY2hhaW5fdW5sb2NrZWQgKAorCSAgYmFzZXNpbms9YmFzZXNpbmtAZW50cnk9MHgxMGEzMzc4LCBvYmo9MHgwLCBvYmpAZW50cnk9MHhiNWMwODgzOCwKKwkgIGlzX2xpc3Q9aXNfbGlzdEBlbnRyeT0wLCBwYWQ9PG9wdGltaXplZCBvdXQ+KSBhdCBnc3RiYXNlc2luay5jOjM0ODYKKwkgICM1ICAweGI2OWVjMWMwIGluIGdzdF9iYXNlX3NpbmtfY2hhaW5fbWFpbiAoYmFzZXNpbms9MHgxMGEzMzc4LAorCSAgcGFkPTxvcHRpbWl6ZWQgb3V0Piwgb2JqPTB4YjVjMDg4MzgsIGlzX2xpc3Q9MCkgYXQgZ3N0YmFzZXNpbmsuYzozNjQ3CisJICAjNiAgMHhiNmViNWIxMCBpbiBnc3RfcGFkX2NoYWluX2RhdGFfdW5jaGVja2VkIChwYWQ9MHgxMGE2MTcwLAorCSAgdHlwZT08b3B0aW1pemVkIG91dD4sIGRhdGE9MHhiNWMwODgzOCkgYXQgZ3N0cGFkLmM6NDA4NgorCSAgIzcgIDB4YjZlYjdhMzQgaW4gZ3N0X3BhZF9wdXNoX2RhdGEgKHBhZD1wYWRAZW50cnk9MHgxMGE2MDIwLAorCSAgdHlwZT10eXBlQGVudHJ5PTQxMTIsIGRhdGE9MHhiNWMwODgzOCkgYXQgZ3N0cGFkLmM6NDMzOAorCSAgIzggIDB4YjZlYmYzNDQgaW4gZ3N0X3BhZF9wdXNoIChwYWQ9cGFkQGVudHJ5PTB4MTBhNjAyMCwKKwkgIGJ1ZmZlcj08b3B0aW1pemVkIG91dD4pIGF0IGdzdHBhZC5jOjQ0NTQKKwkgICM5ICAweGI2OWYyMmYwIGluIGdzdF9iYXNlX3NyY19sb29wIChwYWQ9MHgxMGE2MDIwKSBhdCBnc3RiYXNlc3JjLmM6Mjg0NQorCSAgIzEwIDB4YjZlZWRkZmMgaW4gZ3N0X3Rhc2tfZnVuYyAodGFzaz0weDEwYTg4MjgpIGF0IGdzdHRhc2suYzozMzEKKwkgICMxMSAweGI2ZDQ4NWEwIGluIGdfdGhyZWFkX3Bvb2xfdGhyZWFkX3Byb3h5IChkYXRhPTxvcHRpbWl6ZWQgb3V0PikKKwkgIGF0IGd0aHJlYWRwb1F1aXQKKwkgIChnZGIpIGZyYW1lIDEKKwkgICMxICAweGI2OWIwNGU4IGluIGdzdF9mYmRldnNpbmtfc2hvd19mcmFtZSAodmlkZW9zaW5rPTB4MTBhMzM3OCwKKwkgIGJ1Zj0weGI1YzA4ODM4KSBhdCBnc3RmYmRldnNpbmsuYzoyNjkKKwkgIDI2OSAgICAgZ3N0ZmJkZXZzaW5rLmM6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkuCisJICAoZ2RiKSBwIGZiZGV2c2luaworCSAgJDEgPSAoR3N0RkJERVZTaW5rICopIDB4MTBhMzM3OAorCSAgKGdkYikgcCAqZmJkZXZzaW5rCisJICAkMiA9IHt2aWRlb3NpbmsgPSB7ZWxlbWVudCA9IHtlbGVtZW50ID0ge29iamVjdCA9IHtvYmplY3QgPSB7CisJICBnX3R5cGVfaW5zdGFuY2UgPSB7Z19jbGFzcyA9IDB4MTBhMmQ2MH0sIHJlZl9jb3VudCA9IDMsCisJICBxZGF0YSA9IDB4MH0sIGxvY2sgPSB7cCA9IDB4MCwgaSA9IHswLCAwfX0sCisJICBuYW1lID0gMHgxMGEyZjMwICJmYmRldnNpbmswIiwgcGFyZW50ID0gMHgxMGE3MGEwLCBmbGFncyA9IDMyLAorCSAgY29udHJvbF9iaW5kaW5ncyA9IDB4MCwgY29udHJvbF9yYXRlID0gMTAwMDAwMDAwLAorCSAgbGFzdF9zeW5jID0gMTg0NDY3NDQwNzM3MDk1NTE2MTUsIF9nc3RfcmVzZXJ2ZWQgPSAweDB9LAorCSAgc3RhdGVfbG9jayA9IHtwID0gMHgxMDlmOWE4LCBpID0gezAsIDB9fSwgc3RhdGVfY29uZCA9IHtwID0gMHgwLCBpID0geworCSAgMywgMH19LCBzdGF0ZV9jb29raWUgPSAyLCB0YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfUEFVU0VELAorCSAgY3VycmVudF9zdGF0ZSA9IEdTVF9TVEFURV9SRUFEWSwgbmV4dF9zdGF0ZSA9IEdTVF9TVEFURV9QQVVTRUQsCisJICBwZW5kaW5nX3N0YXRlID0gR1NUX1NUQVRFX1BBVVNFRCwKKwkgIGxhc3RfcmV0dXJuID0gR1NUX1NUQVRFX0NIQU5HRV9BU1lOQywgYnVzID0gMHgxMDhiY2I4LCBjbG9jayA9IDB4MCwKKwkgIGJhc2VfdGltZSA9IDAsIHN0YXJ0X3RpbWUgPSAwLCBudW1wYWRzID0gMSwgcGFkcyA9IDB4MTA5Y2MyMCwKKwkgIG51bXNyY3BhZHMgPSAwLCBzcmNwYWRzID0gMHgwLCBudW1zaW5rcGFkcyA9IDEsIHNpbmtwYWRzID0gMHgxMDljYzMwLAorCSAgcGFkc19jb29raWUgPSAxLCBfZ3N0X3Jlc2VydmVkID0gezB4MCwgMHgwLCAweDAsIDB4MH19LAorCSAgc2lua3BhZCA9IDB4MTBhNjE3MCwgcGFkX21vZGUgPSBHU1RfUEFEX01PREVfUFVTSCwgb2Zmc2V0ID0gMCwKKwkgIGNhbl9hY3RpdmF0ZV9wdWxsID0gMCwgY2FuX2FjdGl2YXRlX3B1c2ggPSAxLCBwcmVyb2xsX2xvY2sgPSB7cCA9IDB4MSwKKwkgIGkgPSB7MSwgMH19LCBwcmVyb2xsX2NvbmQgPSB7cCA9IDB4MCwgaSA9IHswLCAwfX0sIGVvcyA9IDAsCisJICBuZWVkX3ByZXJvbGwgPSAxLCBoYXZlX3ByZXJvbGwgPSAwLCBwbGF5aW5nX2FzeW5jID0gMSwKKwkgIGhhdmVfbmV3c2VnbWVudCA9IDEsIHNlZ21lbnQgPSB7ZmxhZ3MgPSBHU1RfU0VHTUVOVF9GTEFHX05PTkUsIHJhdGUgPSAxLAorCSAgYXBwbGllZF9yYXRlID0gMSwgZm9ybWF0ID0gR1NUX0ZPUk1BVF9USU1FLCBiYXNlID0gMCwgb2Zmc2V0ID0gMCwKKwkgIHN0YXJ0ID0gMCwgc3RvcCA9IDE4NDQ2NzQ0MDczNzA5NTUxNjE1LCB0aW1lID0gMCwgcG9zaXRpb24gPSAzMzMzMzMzMywKKwkgIGR1cmF0aW9uID0gMTg0NDY3NDQwNzM3MDk1NTE2MTUsIF9nc3RfcmVzZXJ2ZWQgPSB7MHgwLCAweDAsIDB4MCwKKwkgIDB4MH19LCBjbG9ja19pZCA9IDB4MCwgc3luYyA9IDEsIGZsdXNoaW5nID0gMCwgcnVubmluZyA9IDAsCisJICBtYXhfbGF0ZW5lc3MgPSAyMDAwMDAwMCwgcHJpdiA9IDB4MTBhMzE4OCwgX2dzdF9yZXNlcnZlZCA9IHsKKwkgIDB4MCA8cmVwZWF0cyAyMCB0aW1lcz59fSwgd2lkdGggPSAwLCBoZWlnaHQgPSAwLCBwcml2ID0gMHgxMGEzMTgwLAorCSAgX2dzdF9yZXNlcnZlZCA9IHsweDAsIDB4MCwgMHgwLCAweDB9fSwgZml4aW5mbyA9IHsKKwkgIGlkID0gJ1wwMDAnIDxyZXBlYXRzIDE1IHRpbWVzPiwgc21lbV9zdGFydCA9IDEwNzg5ODQ3MDQsCisJICBzbWVtX2xlbiA9IDQ2MDgwMDAsIHR5cGUgPSAwLCB0eXBlX2F1eCA9IDAsIHZpc3VhbCA9IDIsIHhwYW5zdGVwID0gMSwKKwkgIHlwYW5zdGVwID0gMSwgeXdyYXBzdGVwID0gMCwgbGluZV9sZW5ndGggPSAzODQwLCBtbWlvX3N0YXJ0ID0gMCwKKwkgIG1taW9fbGVuID0gMCwgYWNjZWwgPSAwLCBjYXBhYmlsaXRpZXMgPSAwLCByZXNlcnZlZCA9IHswLCAwfX0sIHZhcmluZm8gPSB7CisJICB4cmVzID0gODAwLCB5cmVzID0gNDgwLCB4cmVzX3ZpcnR1YWwgPSAxOTIwLCB5cmVzX3ZpcnR1YWwgPSAxMjAwLAorCSAgeG9mZnNldCA9IDAsIHlvZmZzZXQgPSAwLCBiaXRzX3Blcl9waXhlbCA9IDE2LCBncmF5c2NhbGUgPSAwLCByZWQgPSB7CisJICBvZmZzZXQgPSAxMSwgbGVuZ3RoID0gNSwgbXNiX3JpZ2h0ID0gMH0sIGdyZWVuID0ge29mZnNldCA9IDUsCisJICBsZW5ndGggPSA2LCBtc2JfcmlnaHQgPSAwfSwgYmx1ZSA9IHtvZmZzZXQgPSAwLCBsZW5ndGggPSA1LAorCSAgbXNiX3JpZ2h0ID0gMH0sIHRyYW5zcCA9IHtvZmZzZXQgPSAwLCBsZW5ndGggPSAwLCBtc2JfcmlnaHQgPSAwfSwKKwkgIG5vbnN0ZCA9IDAsIGFjdGl2YXRlID0gMCwgaGVpZ2h0ID0gNDI5NDk2NzI5NSwgd2lkdGggPSA0Mjk0OTY3Mjk1LAorCSAgYWNjZWxfZmxhZ3MgPSAxLCBwaXhjbG9jayA9IDAsIGxlZnRfbWFyZ2luID0gMCwgcmlnaHRfbWFyZ2luID0gMCwKKwkgIHVwcGVyX21hcmdpbiA9IDAsIGxvd2VyX21hcmdpbiA9IDAsIGhzeW5jX2xlbiA9IDAsIHZzeW5jX2xlbiA9IDAsCisJICBzeW5jID0gMCwgdm1vZGUgPSAwLCByb3RhdGUgPSAwLCBjb2xvcnNwYWNlID0gMCwgcmVzZXJ2ZWQgPSB7MCwgMCwgMCwgMH19LAorCSAgZmQgPSA1LAorCSAgZnJhbWVidWZmZXIgPSAweGI2NTRhMDAwIDxlcnJvcjogQ2Fubm90IGFjY2VzcyBtZW1vcnkgYXQgYWRkcmVzcyAweGI2NTRhMDAwPiwgZGV2aWNlID0gMHgxMGEzOGQ4ICIvZGV2L2ZiMCIsIHdpZHRoID0gMzIwLCBoZWlnaHQgPSAyNDAsIGN4ID0gMjQwLCBjeSA9IDEyMCwKKwkgIGxpbmVsZW4gPSAxMjgwLCBsaW5lcyA9IDI0MCwgYnl0ZXNwcCA9IDQsIGZwc19uID0gMzAsIGZwc19kID0gMX0KKwkgIChnZGIpIHAgbWFwCisJICAkMyA9IHttZW1vcnkgPSAweGI1ZDI0MDA4LCBmbGFncyA9IEdTVF9NQVBfUkVBRCwKKwkgIGRhdGEgPSAweGI1ZDI0MDU4ICdcMzc3JyA8cmVwZWF0cyA5MCB0aW1lcz4sICJcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNDBcMzc3XDM0MFwzNzdcMzQwXDM3N1wzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYVwzNzdcYSIuLi4sCisJICBzaXplID0gMTUzNjAwLCBtYXhzaXplID0gMTUzNjAzLCB1c2VyX2RhdGEgPSB7MHgwLAorCSAgMHhiNjllM2JhNCA8Z3N0X2Jhc2Vfc2lua19zZXRfbGFzdF9idWZmZXJfdW5sb2NrZWQrOTI+LCAweDEwYTMzNzgsIDB4MH0sCisJICBfZ3N0X3Jlc2VydmVkID0gezB4MSwgMHgxMGEzMzc4LCAweGI2ZjUwZGQ4IDxfZ3N0X2RlYnVnX21pbj4sIDB4YjVjMDg4Mzh9fQorCSAgKGdkYikgcCBpCisJICAkNCA9IDEyMQorCSAgRml4IHRoaXMgYnkgY2hhbmdpbmcgdGhlIGZiZGV2c2luay0+Ynl0ZXNwcCBjYWxjdWxhdGlvbiB1c2luZworCSAgdGhlIGZyYW1lIGJ1ZmZlciB4cmVzX3ZpcnR1YWwgc2l6ZSBpbnN0ZWFkIG9mIHhyZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyNDgyCisKKzIwMTYtMDItMjIgMTI6NTM6MDAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1zZWN0aW9ucy50eHQ6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmM6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmg6CisJKiB3aW4zMi9jb21tb24vbGliZ3N0cGxheWVyLmRlZjoKKwkgIHBsYXllcjogRXhwb3NlIG1vcmUgR3N0VmlkZW9PdmVybGF5IEFQSSBpbiB0aGUgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcgorCSAgRXhwb3NlIHRoZSBleHBvc2UoKSBhbmQgc2V0X3JlbmRlcl9yZWN0YW5nbGUoKSBtZXRob2RzLiBUaGVzZSBhcmUgdXNlZnVsIGZvcgorCSAgcHJvcGVyIGZ1bmN0aW9uaW5nIG9mIHRoZSB2aWRlbyBvdmVybGF5IGluIHZhcmlvdXMgc2l0dWF0aW9ucyBhbmQgdG9vbGtpdHMuCisKKzIwMTYtMDItMjIgMjE6MDM6MTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsc3RlcmVvc3BsaXQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYzoKKwkgIGdsOiBmaXggdGhlIGJ1aWxkCisJICAyZDI4NzgxMiB3YXMgaW5jb21wbGV0ZQorCisyMDE2LTAyLTIyIDIwOjQ5OjUyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGJhc2VtaXhlci5jOgorCSogZXh0L2dsL2dzdGdsc3RlcmVvc3BsaXQuYzoKKwkqIGV4dC9nbC9nc3RnbHRlc3RzcmMuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYzoKKwkgIGdsOiBlcnJvciBvdXQgaWYgdGhlIGNvbmZpZ3VyZWQgR0wgQVBJIGlzIHVuc3VwcG9ydGVkIGJ5IG91ciBlbGVtZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5ODAxCisKKzIwMTYtMDEtMjQgMTc6NDA6MzcgKzAzMDAgIFNlcmdleSBCb3JvdmtvdiA8c2VyZ2V5LmJvcm92a292QHdpcmVsb2FkLm5ldD4KKworCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGV4dC9xdC9xdGl0ZW0uaDoKKwkgIHFtbGdsc2luazogU2NoZWR1bGUgb25TY2VuZUdycGFoSW5pdGlhbGl6ZWQgdG8gZXhlY3V0ZSBvbiByZW5kZXIgdGhyZWFkCisJICBvblNjZW5lR3JhcGhJbml0aWFsaXplZCgpIGlzIGNhbGxlZCBmcm9tIG5vbiByZW5kZXIgdGhyZWFkIGN1cnJlbnRseSB3aGVuCisJICBzY2VuZSBncmFwaCBpcyBhbHJlYWR5IGluaXRpYWxpemVkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTAwMworCisyMDE2LTAxLTA3IDE4OjI2OjI2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvYWlmZi9haWZmcGFyc2UuYzoKKwkgIGFpZmZwYXJzZTogZml4IG5lZ290aWF0aW9uIGVycm9ycyB3aXRoIG11bHRpLWNoYW5uZWwgZmlsZXMKKwkgIFNldCBmYWxsYmFjayBjaGFubmVsIGxheW91dCBvbiBmaWxlcyB3aXRoIG1vcmUgdGhhbiB0d28KKwkgIGNoYW5uZWxzLiBOb3QgY2xlYXIgd2hlcmUgdG8gcmV0cmlldmUgdGhlIHJlYWwgbGF5b3V0IGZyb20KKwkgIG9yIHdoYXQgdGhlIGRlZmF1bHQgbGF5b3V0IGlzIGZvciBBSUZGIGZpbGVzLCB0aGUgc3BlYworCSAgb25seSBzZWVtcyB0byBzcGVjaWZ5IHNvbWUgbGF5b3V0IGZvciB1cCB0byA2IGNoYW5uZWxzCisJICBhbmQgdGhlIGZpbGUgaW4gcXVlc3Rpb24gZG9lc24ndCBoYXZlIGEgQ0hBTiBjaHVuay4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NzY0MjUKKworMjAxNi0wMi0yMSAxMDozNDo1NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2NkeGFwYXJzZS9jZHhhcGFyc2UudmNwcm9qOgorCSogZ3N0L21peG1hdHJpeC9taXhtYXRyaXgudmNwcm9qOgorCSogZ3N0L292ZXJsYXkvb3ZlcmxheS52Y3Byb2o6CisJKiBnc3QvcnRqcGVnL3J0anBlZy52Y3Byb2o6CisJKiBnc3Qvc21vb3RoL3Ntb290aC52Y3Byb2o6CisJKiBnc3Qvc3BlZWQvc3BlZWQudmNwcm9qOgorCSogZ3N0L3N0ZXJlby9zdGVyZW8udmNwcm9qOgorCSogd2luMzIvTUFOSUZFU1Q6CisJKiB3aW4zMi9nc3Quc2xuOgorCSogd2luMzIvdnM2L2dzdF9wbHVnaW5zX2JhZC5kc3c6CisJKiB3aW4zMi92czYvbGliZ3N0ZHNob3cuZHNwOgorCSogd2luMzIvdnM2L2xpYmdzdGRzaG93ZGVjd3JhcHBlci5kc3A6CisJKiB3aW4zMi92czYvbGliZ3N0Zmx2LmRzcDoKKwkqIHdpbjMyL3ZzNi9saWJnc3RtcGVndmlkZW9wYXJzZS5kc3A6CisJKiB3aW4zMi92czYvbGliZ3N0bmVvbi5kc3A6CisJKiB3aW4zMi92czgvZ3N0LXBsdWdpbnMtYmFkLnNsbjoKKwkqIHdpbjMyL3ZzOC9saWJnc3RkaXJlY3Rzb3VuZC52Y3Byb2o6CisJKiB3aW4zMi92czkvZ3N0LXBsdWdpbnMtYmFkLnNsbjoKKwkqIHdpbjMyL3ZzOS9saWJnc3Rkc2hvd3NyY3dyYXBwZXIudmNwcm9qOgorCSAgd2luMzI6IHJlbW92ZSBvdXRkYXRlZCBidWlsZCBjcnVmdAorCSAgVGhpcyBoYXNuJ3QgYmVlbiB0b3VjaGVkIGZvciBnZW5lcmF0aW9ucywgZG9lc24ndCB3b3JrLAorCSAgYW5kIGlzIGp1c3QgY2F1c2luZyBjb25mdXNpb24uIFdlIGFsc28gZG9uJ3Qgd2FudCB0bworCSAgbWFpbnRhaW4gdGhlc2UgZmlsZXMgbWFudWFsbHkuCisKKzIwMTYtMDItMjAgMTI6NTU6MDggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9kYWFsYS9nc3RkYWFsYWRlYy5jOgorCSAgZGFhbGE6IGRvbid0IHVzZSBleHBvcnRlZCBidXQgdW5kZWNsYXJlZCBjb3JlIGRlYnVnIGNhdGVnb3J5IHN5bWJvbHMKKwkgIEl0J3Mgbm90IHJpZ2h0IGFuZCB3b24ndCB3b3JrIG9uIFdpbmRvd3Mgd2l0aCBNU1ZDLgorCisyMDE2LTAyLTE5IDE0OjI3OjU5IC0wODAwICBTY290dCBEIFBoaWxsaXBzIDxzY290dC5kLnBoaWxsaXBzQGludGVsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmM6CisJICBjb2RlY3BhcnNlcnM6IGgyNjU6IEZpeCBpbml0aWFsaXphdGlvbiBvZiBzbGljZV9kZWJsb2NraW5nX2ZpbHRlcl9kaXNhYmxlZF9mbGFnCisJICBILjI2NSA3LjQuNy4xIHNheXM6CisJICA+IFdoZW4gc2xpY2VfZGVibG9ja2luZ19maWx0ZXJfZGlzYWJsZWRfZmxhZyBpcyBub3QgcHJlc2VudCwgaXQgaXMKKwkgID4gaW5mZXJyZWQgdG8gYmUgZXF1YWwgdG8gcHBzX2RlYmxvY2tpbmdfZmlsdGVyX2Rpc2FibGVkX2ZsYWcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYyMzUxCisKKzIwMTYtMDItMTkgMTY6NDA6NTQgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVnNHBhcnNlci5jOgorCSAgbXBlZzRwYXJzZXI6IHByZXZlbnQgYXNzZXJ0aW9uIHdoZW4gc2Nhbm5pbmcgZm9yIHN5bmMgY29kZQorCSAgT25seSBzZWFyY2ggaWYgdGhlcmUgaXMgaW5kZWVkIGVub3VnaCBkYXRhIHRvIGJlIHNlYXJjaGVkIG90aGVyd2lzZQorCSAgYW4gYXNzZXJ0aW9uIGlzIHJhaXNlZAorCisyMDE2LTAyLTE5IDE3OjQ4OjU1ICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYzoKKwkgIHRzcGFyc2U6IEZpeCBwZXItcHJvZ3JhbS1wYWQgcHVzaGluZworCSAgVGhpcyBmaXhlcyBhIGNvdXBsZSBvZiBpc3N1ZXMgcmVnYXJkaW5nIHRoZSBvdXRwdXQgb2YgKHJlcXVlc3QpCisJICBwZXItcHJvZ3JhbSBwYWRzIG91dHB1dDoKKwkgIFdlIHdvdWxkIG5ldmVyIHB1c2ggb3V0IFBBVCBzZWN0aW9ucyAob2ssIHRoYXQgd2FzIG9uZSByZWFsbGx5IHN0dXBpZAorCSAgbWlzdGFrZS4gSSBndWVzcyBub2JvZHkgZXZlciB1c2VzIHRoaXMgZmVhdHVyZSAuLi4pLgorCSAgSW4gdGhlIGNhc2Ugd2hlcmUgdGhlIFBNVCBzZWN0aW9uIG9mIGEgcHJvZ3JhbSB3YXMgYmlnZ2VyIHRoYW4gb25lCisJICBwYWNrZXQsIHdlIHdvdWxkIG9ubHkgZW5kIHVwIHB1c2hpbmcgdGhlIGxhc3QgcGFja2V0IG9mIHRoYXQgUE1ULiBXaGljaAorCSAgb2J2aW91c2x5IHJlc3VsdHMgaW4gdGhlIHJlc3VsdGluZyBzdHJlYW0gbmV2ZXIgY29udGFpbmluZyB0aGUgcHJvcGVyCisJICAoY29tcGxldGUpIFBNVC4KKwkgIFRoZSBwcm9ibGVtIHdhcyB0aGF0IHRoZSBwcm9ncmFtIGlzIG9ubHkgc3RhcnRlZCAoaW4gdGhlIGJhc2UgY2xhc3MpCisJICBhZnRlciB0aGUgUE1UIHNlY3Rpb24gaXMgY29tcGxldGVseSBwYXJzZWQuIFdoZW4gZGVhbGluZyB3aXRoIHNpbmdsZS1wcm9ncmFtCisJICBwYWRzLCB0c3BhcnNlIG9ubHkgd2FudHMgdG8gcHVzaCB0aGUgUE1UIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHJlcXVlc3RlZAorCSAgcHJvZ3JhbSAoYW5kIG5vdCB0aGUgb3RoZXIgb25lcykuIHRzcGFyc2UgZGlkIHRoYXQgY2hlY2sgYnkgbG9va2luZworCSAgYXQgdGhlIHN0cmVhbXMgb2YgdGhlIHByb2dyYW0uLi4KKwkgIC4uLiBidXQgdGhhdCBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QgZm9yIHRoZSBmaXJzdCBwYWNrZXRzIG9mIHRoZSBpbml0aWFsCisJICBQTVQuCisJICBUaGUgZml4IGlzIHRvIHVzZSB0aGUgYmFzZSBjbGFzcyBwcm9ncmFtIGluZm9ybWF0aW9uIChpZiBpdCBwYXJzZWQgdGhlCisJICBQQVQgaXQgYWxyZWFkeSBoYXMgc29tZSBpbmZvcm1hdGlvbiwgbGlrZSB0aGUgUE1UIFBJRCBmb3IgYSBnaXZlbiBwcm9ncmFtKQorCSAgaWYgdGhlIHByb2dyYW0gaGFzbid0IHN0YXJ0ZWQgeWV0LgorCisyMDE2LTAyLTE5IDE3OjQ1OjI2ICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYzoKKwkqIGdzdC9tcGVndHNkZW11eC9tcGVndHNwYXJzZS5oOgorCSAgdHNwYXJzZTogVXNlIEdzdEZsb3dDb21iaW5lcgorCSAgSW4gYWRkaXRpb24gdG8gdGhlIGZhY3QgdGhhdCBpdCdzIGEgc2FuZSB0aGluZyB0byBkbyBmb3IgbXVsdGktc291cmNlCisJICBwYWQgZWxlbWVudHMsIGl0IGFsc28gYXZvaWRzIHRoZSBzaXR1YXRpb24gd2hlcmUganVzdCB1c2luZyBhIHJlcXVlc3QKKwkgIHBhZCAoYW5kIG5vdCB0aGUgbWFpbiBzdGF0aWMgcGFkKSB3b3VsZCByZXN1bHQgaW4gdGhlIHByb2Nlc3NpbmcKKwkgIHN0b3BwaW5nLgorCisyMDE2LTAyLTE5IDEyOjM4OjMxICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJICBCYWNrIHRvIGRldmVsb3BtZW50CisKKz09PSByZWxlYXNlIDEuNy4yID09PQorCisyMDE2LTAyLTE5IDExOjUwOjI1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBDaGFuZ2VMb2c6CisJKiBORVdTOgorCSogUkVMRUFTRToKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmhpZXJhcmNoeToKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5pbnRlcmZhY2VzOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFjY3VyaXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWlmZi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNmbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc3NyZW5kZXIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvbWl4ZXIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvdmlzdWFsaXplcnMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1dG9jb252ZXJ0LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iYXllci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYnoyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jYW1lcmFiaW4ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNocm9tYXByaW50LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb2xvcmVmZmVjdHMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWN1cmwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRhdGF1cmlzcmMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlYnVndXRpbHNiYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0c2RlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZiLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmJzdWJvdmVybGF5LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmRzcHUueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZlc3RpdmFsLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1maWVsZGFuYWx5c2lzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mbGl0ZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJlaTByLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nYXVkaWVmZmVjdHMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdkcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nbWVkZWMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzbS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3N0c2lyZW4ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWhscy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXJsYWNlLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcGVnZm9ybWF0LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1taW1pYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW1zLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tb2RwbHVnLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVnMmVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzZGVtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc211eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzZGVtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWd0c211eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBsZXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9mYS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmFsLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuY3YueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcG5tLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yYXdwYXJzZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVtb3Zlc2lsZW5jZS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVzaW5kdmQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRtcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2Nocm8ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNkcC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2VnbWVudGNsaXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNobS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc21vb3RoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zb3VuZHRvdWNoLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGFuZHNwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGVlZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3ViZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYWFjZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FtcndiZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13YXlsYW5kc2luay54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teTRtZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi16YmFyLnhtbDoKKwkqIGdzdC1wbHVnaW5zLWJhZC5kb2FwOgorCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgorCSAgUmVsZWFzZSAxLjcuMgorCisyMDE2LTAyLTE5IDEwOjMyOjI4ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBwby9hZi5wbzoKKwkqIHBvL2F6LnBvOgorCSogcG8vYmcucG86CisJKiBwby9jYS5wbzoKKwkqIHBvL2NzLnBvOgorCSogcG8vZGEucG86CisJKiBwby9kZS5wbzoKKwkqIHBvL2VsLnBvOgorCSogcG8vZW5fR0IucG86CisJKiBwby9lby5wbzoKKwkqIHBvL2VzLnBvOgorCSogcG8vZXUucG86CisJKiBwby9maS5wbzoKKwkqIHBvL2ZyLnBvOgorCSogcG8vZ2wucG86CisJKiBwby9oci5wbzoKKwkqIHBvL2h1LnBvOgorCSogcG8vaWQucG86CisJKiBwby9pdC5wbzoKKwkqIHBvL2phLnBvOgorCSogcG8va3kucG86CisJKiBwby9sdC5wbzoKKwkqIHBvL2x2LnBvOgorCSogcG8vbXQucG86CisJKiBwby9uYi5wbzoKKwkqIHBvL25sLnBvOgorCSogcG8vb3IucG86CisJKiBwby9wbC5wbzoKKwkqIHBvL3B0X0JSLnBvOgorCSogcG8vcm8ucG86CisJKiBwby9ydS5wbzoKKwkqIHBvL3NrLnBvOgorCSogcG8vc2wucG86CisJKiBwby9zcS5wbzoKKwkqIHBvL3NyLnBvOgorCSogcG8vc3YucG86CisJKiBwby90ci5wbzoKKwkqIHBvL3VrLnBvOgorCSogcG8vdmkucG86CisJKiBwby96aF9DTi5wbzoKKwkgIHBvOiBVcGRhdGUgdHJhbnNsYXRpb25zCisKKzIwMTYtMDItMTggMTQ6MzI6MjMgKzAwMDAgIEp1bGllbiBJc29yY2UgPGouaXNvcmNlQHNhbXN1bmcuY29tPgorCisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UtdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItcGx1Z2lucy1iYWQtdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMuaW46CisJICB1bmluc3RhbGxlZC5wYzogYWRkIHN1cHBvcnQgZm9yIG5vbiBsaWJ0b29sIGJ1aWxkIHN5c3RlbXMKKwkgIEN1cnJlbnRseSB0aGUgLmxhIHBhdGggaXMgcHJvdmlkZWQgd2hpY2ggcmVxdWlyZXMgdG8gdXNlIGxpYnRvb2wgYXMKKwkgIG1lbnRpb25lZCBpbiB0aGUgR1N0cmVhbWVyIG1hbnVhbCBzZWN0aW9uLWhlbGxvd29ybGQtY29tcGlsZXJ1bi5odG1sLgorCSAgSXQgaXMgZmluZSBhcyBsb25nIGFzIHRoZSBhcHBsaWNhdGlvbiBpcyBidWlsdCB1c2luZyBsaWJ0b29sLgorCSAgU28gY3VycmVudGx5IGl0IGlzIG5vdCBwb3NzaWJsZSB0byBjb21waWxlIGEgR1N0cmVhbWVyIGFwcGxpY2F0aW9uCisJICB3aXRoaW4gZ3N0LXVuaW5zdGFsbGVkIHdpdGggQ01ha2Ugb3Igb3RoZXIgYnVpbGQgc3lzdGVtIGRpZmZlcmVudAorCSAgdGhhbiBhdXRvdG9vbHMuCisJICBUaGlzIHBhdGNoIGFsbG93cyB0byBkbyB0aGUgZm9sbG93aW5nIGluIGdzdC11bmluc3RhbGxlZCBlbnY6CisJICBnY2MgdGVzdC5jIC1vIHRlc3QgJChwa2ctY29uZmlnIC0tY2ZsYWdzIC0tbGlicyBnc3RyZWFtZXItMS4wIFwKKwkgIGdzdHJlYW1lci1nbC0xLjApCisJICBQcmV2aW91c2x5IGl0IHJlcXVpcmVkIHRvIHByZXBlbmQgbGlidG9vbCAtLW1vZGU9bGluaworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTcyMDc3OAorCisyMDE2LTAyLTE4IDE2OjIxOjM4ICswMDAwICBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkgIGdsZGVidWc6IG1ha2Ugc3VyZSBkZWJ1ZyBpcyBpbml0aWFsaXplZCB3aGVuIGNhbGxpbmcgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIKKwkgIFVzdWFsbHkgZ2wgZGVidWcgaXMgaW5pdGlhbGl6ZWQgaW4gZ3N0X2dsX2NvbnRleHRfY3JlYXRlX3RocmVhZC4KKwkgIEJ1dCB0aGlzIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIHdoZW4gdXNpbmcgdGhlIEdzdEdMQ29udGV4dEdQVVByb2Nlc3MKKwkgIGZyb20gQ2hyb21pdW1HU3RyZWFtZXJCYWNrZW5kLgorCSAgUmVjZWl2ZWQgc2lnbmFsIDExIFNFR1ZfTUFQRVJSIDAwMDAwMDAwMDAwMAorCSAgZ3N0X2RlYnVnX2NhdGVnb3J5X2dldF90aHJlc2hvbGQKKwkgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyCisJICBnc3RfZ2xfYmFzZV9maWx0ZXJfZ2xfc3RhcnQKKworMjAxNi0wMi0xOCAxMDozMzoyMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvdXRpbHMvZ2xlc192ZXJzaW9ucy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3V0aWxzL29wZW5nbF92ZXJzaW9ucy5oOgorCSAgZ2w6IEZpeCBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBjb25zdCB2YXJpYWJsZSB3aXRoIGdjYyA2CisJICBDQyAgICAgICBsaWJnc3RnbF94MTFfbGEtZ3N0Z2xjb250ZXh0X2dseC5sbworCSAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdzdGdsY29udGV4dF9nbHguYzozOTowOgorCSAgLi4vdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmg6NTI6NDM6IGVycm9yOiDigJhnbGVzMl92ZXJzaW9uc+KAmSBkZWZpbmVkIGJ1dCBub3QgdXNlZCBbLVdlcnJvcj11bnVzZWQtY29uc3QtdmFyaWFibGVdCisJICBzdGF0aWMgY29uc3Qgc3RydWN0IHsgaW50IG1ham9yLCBtaW5vcjsgfSBnbGVzMl92ZXJzaW9uc1tdID0geworCSAgXn5+fn5+fn5+fn5+fn4KKworMjAxNi0wMi0xOCAxMDoyOToyMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSAgZ2w6IE1vdmUgcHJpdmF0ZSBoZWFkZXJzIGZyb20gU09VUkNFUyB0byBub2luc3RfSEVBREVSUworCisyMDE2LTAyLTE4IDAwOjI0OjA0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvbW9kcGx1Zy9nc3Rtb2RwbHVnLmNjOgorCSAgbW9kcGx1ZzogRml4IGNvbXBpbGVyIHdhcm5pbmcgYWJvdXQgQysrMTEgY29tcGF0aWJpbGl0eQorCSAgZ3N0bW9kcGx1Zy5jYzo5NDoxNzogZXJyb3I6IGludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBzdHJpbmcgbWFjcm8gWy1XZXJyb3I9bGl0ZXJhbC1zdWZmaXhdCisJICAjZGVmaW5lIEZPUk1BVFMgInsgIkdTVF9BVURJT19ORSAoUzMyKSIsICJHU1RfQVVESU9fTkUgKFMxNikiLCBVOCB9IgorCSAgXgorCSAgZ3N0bW9kcGx1Zy5jYzo5NDozOTogZXJyb3I6IGludmFsaWQgc3VmZml4IG9uIGxpdGVyYWw7IEMrKzExIHJlcXVpcmVzIGEgc3BhY2UgYmV0d2VlbiBsaXRlcmFsIGFuZCBzdHJpbmcgbWFjcm8gWy1XZXJyb3I9bGl0ZXJhbC1zdWZmaXhdCisJICAjZGVmaW5lIEZPUk1BVFMgInsgIkdTVF9BVURJT19ORSAoUzMyKSIsICJHU1RfQVVESU9fTkUgKFMxNikiLCBVOCB9IgorCSAgXgorCisyMDE2LTAyLTE2IDE1OjEwOjM0ICswMTAwICBEYXZpZCBGZXJuYW5kZXogPGQuZmVybmFuZGV6bG9wQGdtYWlsLmNvbT4KKworCSogZXh0L2N1cmwvZ3N0Y3VybGJhc2VzaW5rLmM6CisJICBjdXJsYmFzZXNpbms6IGRvbid0IHNlbmQgZW1wdHkgYnVmZmVycworCSAgRml4ZXMgcHJvYmxlbSBpbiBjdXJsaHR0cHNpbmsgd2hlbiBxdG11eCB1c2VzIGZhc3RzdGFydC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjIwMTMKKworMjAxNi0wMi0xNyAxMToxNjo1MyArMDEwMCAgVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAZ25vbWUub3JnPgorCisJKiBleHQvbGFkc3BhL2dzdGxhZHNwYWZpbHRlci5jOgorCSAgbGFkc3BhOiBGaXggc29tZSBkZWJ1Z3MKKworMjAxNi0wMS0yNiAwOTozNDowMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9zcmMuYzoKKwkgIHV2Y2gyNjRfc3JjOiBGaXggY2FwcyBtZW1vcnkgbGVhaworCSAgdjRsX2NhcHMgYW5kIG5ld19jYXBzIGFyZSBiZWluZyBhbGxvY2F0ZWQgbmV3IG1lbW9yeSBiZWZvcmUgZnJlZWluZyB0aGUKKwkgIG9sZCBhbGxvY2F0aW9uLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTEwOAorCisyMDE1LTEyLTI0IDE1OjM2OjU0ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSAgbXBlZ3RzYmFzZTogUmVmYWN0b3IgY29kZSB0byBjaGVjayBmb3Igc3ViY2xhc3Mgc2VlayBoYW5kbGluZworCSAgSWYgc3ViY2xhc3MgaXMgbm90IGFibGUgdG8gaGFuZGxlIHNlZWsgZXZlbnQsIHRoZW4gdGhlcmUgaXMgbm8gbmVlZCB0bworCSAgc3RvcCBzdHJlYW1pbmcgYW5kIHNlbmQgZmx1c2ggZXZlbnRzLiBXZSBzaG91bGQgc2ltcGx5IHJldHVybiBGQUxTRQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODUxNgorCisyMDE1LTEyLTI0IDE1OjEwOjE2ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSAgbXBlZ3RzYmFzZTogQWRkIGNvbmRpdGlvbiB0byBjaGVjayBmb3Igbm9uIHdvcmtpbmcgbmVnYXRpdmUgcmF0ZQorCSAgdHNkZW11eCBpcyBub3QgYWJsZSB0byBoYW5kbGUgbmVnYXRpdmUgcGxheWJhY2sgcmF0ZXMuCisJICBCdXQgaW4gbXBlZ3RzYmFzZSwgdGhlIHNhbWUgY2hlY2sgaXMgbm90IGJlaW5nIGRvbmUuCisJICBhZGRlZCBhIGNoZWNrIHRvIG5vdCBoYW5kbGUgbmVnYXRpdmUgcmF0ZSB3aGlsZSBzZWVraW5nIHVubGVzcworCSAgdGhlIHNhbWUgaXMgaGFuZGxlZCB1cHN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1MTYKKworMjAxNi0wMi0xNyAxMzowMDo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuYzoKKwkgIGdsZmlsdGVyOiBpbnNlcnQgdGhlIGRlYnVnIG1hcmtlciBmcm9tIHRoZSBHTCB0aHJlYWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE1MzgKKworMjAxNi0wMi0xNyAxMTo0MjoyMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkgIGdsaW1hZ2VzaW5rOiByZW1vdmUgdW5zZWQgcmVjb25maWd1cmUgdmFyaWFibGUKKworMjAxNi0wMS0xMyAxMzoxNzo1NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5oOgorCSAgZ2xpbWFnZXNpbms6IGRvbid0IHB1c2ggYSByZWNvbmZpZ3VyZSBldmVudCBmcm9tIHRoZSBHTCB0aHJlYWQKKwkgIERvaW5nIHNvIG1heSBjYXVzZSBkZWFkbG9ja3Mgd2hlbiBvdGhlciBlbGVtZW50cyBhdHRlbXB0IGRlc3Ryb3kgb3IgY3JlYXRlZAorCSAgR0wgcmVzb3VyY2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDU1OQorCisyMDE2LTAxLTIxIDEwOjQwOjM2ICswODAwICBXYW5nIFhpbi15dSAo546L5piV5a6HKSA8Y29taWNmYW5zNDRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IGRvbid0IGxlYWsgcGFkJ3MgdmVydGV4IGJ1ZmZlciBvbiByZWxlYXNlX3BhZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDg3MworCisyMDE2LTAyLTE3IDAxOjA4OjE4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbG1peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xtaXhlci5oOgorCSogZXh0L2dsL2dzdGdsbW9zYWljLmM6CisJKiBleHQvZ2wvZ3N0Z2xtb3NhaWMuaDoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb21peC5jOgorCSogZXh0L2dsL2dzdGdsc3RlcmVvbWl4Lmg6CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmg6CisJICBnbG1peGVyOiBSZW1vdmUgdXNhZ2Ugb2YgR3N0R0xNaXhlckZyYW1lRGF0YQorCSAgU3ViY2xhc3NlcyBjYW4ganVzdCBpdGVyYXRlIG92ZXIgdGhlIGxpc3Qgb2YgcGFkcyB0aGVtc2VsdmVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwODczCisKKzIwMTYtMDEtMTMgMTQ6NDE6MjIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsbWl4ZXIuYzoKKwkgIGdsbWl4ZXI6IGRvbid0IGhvbGQgdGhlIG9iamVjdCBsb2NrIHdoaWxlIGNhbGxpbmcgaW50byBHTAorCSAgRG9pbmcgc28gY2FuIGRlYWRsb2NrIGJldHdlZW4gdGhlIEdMIHRocmVhZCBhbmQgdGhlIG9iamVjdCBsb2NrIGUuZy4KKwkgIHdoZW4gcGVyZm9ybWluZyByZWNvbmZpZ3VyZSBldmVudHMgaW4gZ2xpbWFnZXNpbmsgb24gYSByZXNpemUgZXZlbnQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTU5CisKKzIwMTYtMDItMTYgMjI6MzQ6NDMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbW1vbjoKKwkgIFVwZGF0ZSBjb21tb246IG1ha2UgY2hlY2stZXhwb3J0cyBub3QgZmFpbCBmb3IgbGliZ3N0Z2wuZGVmCisJICBTaG91bGQgZml4IGRpc3RjaGVjayBvbiBzb21lIGJ1aWxkIGJvdHMuCisKKzIwMTYtMDEtMjYgMDk6Mzc6MDQgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIHN5cy9hY21lbmMvYWNtZW5jLmM6CisJKiBzeXMvYWNtbXAzZGVjL2FjbW1wM2RlYy5jOgorCSAgYWNtZW5jL2FjbW1wM2RlYzogcmVtb3ZlIHVubmVjZXNzYXJ5IGJyZWFrIGFmdGVyIHJldHVybgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTEwOQorCisyMDE1LTA3LTIxIDE4OjAyOjM4IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIGNvbmZpZ3VyZTogaW1wcm92ZSBjaGVjayBmb3Igd2F5bGFuZC1zY2FubmVyIGJpbmFyeQorCSAgVGhlIHBsdWdpbiBkb2Vzbid0IG5lZWQgdGhlIHdheWxhbmQtc2Nhbm5lciBwYWNrYWdlIHRvIGJlIGJ1aWx0CisJICBvciBydW4sIGl0IG9ubHkgbmVlZHMgdGhlIHdheWxhbmQtc2Nhbm5lciBwcm9ncmFtIGR1cmluZyBjb21waWxlIHRpbWUuCisJICBXaGVuIGNyb3NzLWNvbXBpbGluZywgYnVpbGQgc3lzdGVtcyBtaWdodCBub3QgaGF2ZSB0aGUgd2F5bGFuZC1zY2FubmVyCisJICBwYWNrYWdlIGZvciB0aGUgdGFyZ2V0IHN5c3RlbSBhcyBpdCBpcyBhIGRldmVsb3BlcidzIHRvb2wsIHdoaWxlIGl0IHNob3VsZAorCSAgc3RpbGwgYmUgcG9zc2libGUgdG8gdXNlIHdheWxhbmQtc2Nhbm5lciBmcm9tIHRoZSBob3N0IHN5c3RlbS4KKwkgIFRoaXMgcGF0Y2ggZml4ZXMgaXQgYnkgbm90IHJlcXVpcmluZyB0aGUgd2F5bGFuZC1zY2FubmVyIHBhY2thZ2UgYnV0CisJICBqdXN0IHRoZSBiaW5hcnkgaXRzZWxmLgorCSAgTm90ZSB0aGF0IHRoZSBjaGVjayBpcyBkb25lIG91dHNpZGUgb2YgdGhlIFBLR19DSEVDS19NT0RVTEVTCisJICBhcyBpdCBkb2Vzbid0IHdvcmsgaW5zaWRlIG9mIGl0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjY4OAorCisyMDE2LTAxLTIxIDExOjUzOjMzICswMTAwICBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJICBhZGFwdGl2ZWRlbXV4OiByZXN0b3JlIGJpdHJhdGUgYXZlcmFnaW5nIHN1cHBvcnQKKwkgIFRoaXMgd2FzIGFjY2lkZW50YWxseSByZW1vdmVkIGluIGNvbW1pdCBjY2ZmM2JlMy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM5NTkKKworMjAxNi0wMS0yMCAxNTozMzoyOCArMDEwMCAgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogcmVtb3ZlIHF1ZXVlMiBvdmVycnVuIG5vdGlmaWNhdGlvbgorCSAgRHVlIHRvIHBlcmZvcm1hbmNlIGltcGFjdCBjb25jZXJucyB0aGlzIGlzIHJlbW92ZWQuIEFuIGFsdGVybmF0aXZlCisJICBhcHByb2FjaCB3b3VsZCBiZSB0byByZWx5IG9uIGJ1ZmZlcmluZyBtZXNzYWdlcyBtb25pdG9yaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczMzk1OQorCisyMDE2LTAyLTE2IDE2OjE4OjIxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkgIHZrZGV2aWNlOiBhZGQgdGhlIG5lY2Vzc2FyeSBidXQgYXJiaXRyYXJ5IHF1ZXVlIHByaW9yaXR5CisJICBTaWxlbmNlcyBhbiBlcnJvciBpbiB0aGUgdmFsaWRhdGlvbiBsYXllcnMuCisKKzIwMTYtMDItMTYgMTY6MTI6MDcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogYWRkIHRoZSBuZWNlc3NhcnkgY2FsbCB0byBjaGVjayBpZiB0aGUgcGh5c2ljYWwgZGV2aWNlIHN1cHBvcnRzIHRoZSBzdXJmYWNlCisJICBTaWxlbmNlcyBhbiBlcnJvciBpbiB0aGUgdmFsaWRhdGlvbiBsYXllcnMuCisKKzIwMTYtMDItMTYgMTU6NTM6NTYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2FwaS5oOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmM6CisJICB2dWxrYW46IHVwZGF0ZSB0byBTREsgMS4wLjMuMQorCisyMDE2LTAyLTE2IDE1OjM2OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIHZ1bGthbi9idWlsZDogc2VhcmNoIGZvciB0aGUgY29ycmVjdCBsaWJyYXJ5CisJICBTREsgMS4wLjEgdXNlZCBsaWJ2dWxrYW4tMS5zbywgMS4wLjIgdXNlcyBsaWJ2dWxrYW4uc28KKworMjAxNi0wMi0xNiAxMTo1MToyOCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSAgdmtzd2FwcGVyOiBpdGVyYXRlIG92ZXIgdGhlIGRldmljZSBxdWV1ZSdzIHVzaW5nIHRoZSBuZXcgaXRlcmF0aW9uIEFQSQorCisyMDE2LTAyLTE2IDExOjQ5OjI0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuaDoKKwkgIHZrZGV2aWNlOiBhZGQgY2FsbGJhY2sgaXRlcmF0aW9uIG92ZXIgdGhlIGRldmljZSBxdWV1ZSdzCisKKzIwMTYtMDItMTYgMTE6MjI6MzcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3F1ZXVlLmM6CisJKiBleHQvdnVsa2FuL3ZrcXVldWUuaDoKKwkgIHZrcXVldWU6IGFkZCBjb250ZXh0IGhlbHBlcnMKKworMjAxNi0wMi0xMSAwMTozMToxNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSogZXh0L3Z1bGthbi92a3VwbG9hZC5jOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHMuaDoKKwkgIHZrdXRpbHM6IG1vdmUgb2JqZWN0LXNwZWNpZmljIGNvbnRleHQgcXVlcmllcyB0byB0aGVpciByZXNwZWN0aXZlIGZpbGVzCisJICB2a3V0aWxzIG5vdyBqdXN0IGNvbnRhaW5zIHNvbWUgdXRpbGl0eSBmdW5jdGlvbnMgdG8gZnVydGhlciBzaW1wbGlmeSByZXRyaWV2aW5nCisJICBtdWx0aXBsZSBvYmplY3RzLgorCisyMDE2LTAyLTExIDAwOjUwOjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuaDoKKwkgIHZrZGV2aWNlOiByZW1vdmUgdW5uZWVkZWQgZXJyb3IgcGFyYW1ldGVyIGZyb20gZ2V0X3F1ZXVlKCkKKworMjAxNi0wMi0xMCAxODowNjo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrdXBsb2FkLmM6CisJKiBleHQvdnVsa2FuL3ZrdXBsb2FkLmg6CisJICB2a3VwbG9hZDogaW1wbGVtZW50IGFuIHVwbG9hZGVyIGFic3RyYWN0aW9uCisKKzIwMTYtMDItMTAgMTk6NTA6MjcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuYzoKKwkgIHZrZGlzcGxheTogdW5yZWYgdGhlIGluc3RhbmNlCisJICBmaXhlcyBtZW1vcnkgbGVhaworCisyMDE2LTAyLTEwIDE5OjM0OjU1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogY2hhaW4gdXAgaW4gZmluYWxpemUKKwkgIFRoZXkgd2VyZSBtaXNzaW5nIGluIHNvbWUgY2FzZXMKKworMjAxNi0wMi0xMCAxODo1ODozMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSAgdmtzaW5rOiBvbmx5IHVucmVmIGlmIHRoZSBwb2ludGVycyBhcmUgbm9uLU5VTEwKKworMjAxNi0wMi0xMCAxODowNTo0NyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkgIHZraW1hZ2VtZW1vcnk6IGZyZWUgdGhlIG1hbmFnaW5nIHN0cnVjdCBvbiBfZnJlZQorCSAgZml4ZXMgYSBtZW1vcnkgbGVhaworCisyMDE2LTAyLTA5IDE4OjI2OjQwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkgIHZrZGV2aWNlOiBwZXJmb3JtIGEgd2FpdElkbGUgYmVmb3JlIGRlc3Ryb3lpbmcgdGhlIGRldmljZQorCisyMDE2LTAyLTA5IDE3OjQ2OjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5Lmg6CisJICBSZXZlcnQgInZ1bGthbjogcmVtb3ZlIHZpZXdzIGZyb20gdGhlIG1lbW9yeSBvYmplY3RzLiIKKwkgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMWVhODE3Mjk4ZWU0ZDVlZjliMDBmODg4ZjhlYmUxNmE4ODhiMTE1MC4KKworMjAxNi0wMi0wOSAxNzozMToyNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5jOgorCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuaDoKKwkgIHZ1bGthbm1lbW9yeTogcmVtb3ZlIGJpbmQgdmFyaWFudHMKKworMjAxNi0wMi0wOSAxNjoyMTowMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSAgdnVsa2FuOiByZW1vdmUgdmlld3MgZnJvbSB0aGUgbWVtb3J5IG9iamVjdHMuCisJICBUaGV5IGFyZSBub3QgdXNlZCBhbmQgaXQncyBub3QgcG9zc2libGUgdG8gY3JlYXRlIHRoZSB2aWV3IGJlZm9yZSBiaW5kaW5nIHRoZQorCSAgVmtEZXZpY2VNZW1vcnkgb2JqZWN0IHRvIHRoZW0uCisKKzIwMTYtMDItMDkgMTE6MzQ6NTcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogYWxwaGEgZmxhZ3MgYXJlIG5vdyBzdXBwb3J0ZWQgYnkgTHVuYXJHJ3MgZHJpdmVyCisKKzIwMTYtMDItMDkgMDA6MDc6MzggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi9NYWtlZmlsZS5hbToKKwkqIGV4dC92dWxrYW4vdmsuaDoKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5jOgorCSogZXh0L3Z1bGthbi92a2J1ZmZlcnBvb2wuaDoKKwkqIGV4dC92dWxrYW4vdmt1cGxvYWQuYzoKKwkgIHZ1bGthbjogYWRkIGEgdnVsa2FuYnVmZmVyIGJ1ZmZlcnBvb2wKKworMjAxNi0wMi0wOCAyMjo0OToxNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi9nc3R2dWxrYW4uYzoKKwkqIGV4dC92dWxrYW4vdmtzaW5rLmM6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuaDoKKwkqIGV4dC92dWxrYW4vdmt1cGxvYWQuYzoKKwkqIGV4dC92dWxrYW4vdmt1cGxvYWQuaDoKKwkgIHZ1bGthbjogYWRkIHVwbG9hZCBlbGVtZW50CisKKzIwMTYtMDItMDggMTg6Mjg6MjkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJICB2a3V0aWxzOiBmaXggYXNzZXJ0IGludmVyc2lvbgorCisyMDE2LTAyLTA4IDE4OjI3OjE2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSAgdnVsa2FuOiBhZGQgY2FwcyBmZWF0dXJlIG5hbWVzIGZvciB0aGUgYnVmZmVyIGFuZCBpbWFnZSBtZW1vcmllcworCisyMDE2LTAyLTA4IDE0OjQ0OjIwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzaW5rLmM6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHMuYzoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5oOgorCSAgdnVsa2FuOiBhZGQgZGV2aWNlIHRvIGhhbmRsZV9jb250ZXh0X3F1ZXJ5CisKKzIwMTYtMDItMDggMTQ6MzI6MTAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5jOgorCSAgdnVsa2FuOiBtb3ZlIGluc3RhbmNlX29wZW4gaW50byB0aGUgdXRpbGl0eSBlbnN1cmVfZWxlbWVudF9kYXRhCisJICBTbyBjYWxsZXJzIGRvbid0IGhhdmUgdG8gcGVyZm9ybSBpdCB0aGVtc2VsdmVzLgorCisyMDE2LTAyLTA4IDE0OjI1OjQ5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSAgdmtpbnN0YW5jZTogYWRkIHNpZ25hbCBmb3Igb3ZlcnJpZGluZyBkZXZpY2UgY3JlYXRpb24KKworMjAxNi0wMi0wOCAxMjoyMjoxMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSogZXh0L3Z1bGthbi92a21hY3Jvcy5oOgorCSogZXh0L3Z1bGthbi92a21lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a21lbW9yeS5oOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogc2VwYXJhdGUgYWxsb2NhdGlvbiBhbmQgYmluZGluZyBvZiBtZW1vcnkKKworMjAxNi0wMi0wOCAxMjoxNDo0NCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJICB2a2J1ZmZlcm1lbW9yeTogZm9sbG93IHRoZSByZXN0IG9mIHRoZSBzdHJ1Y3QgbWFjcm9zCisKKzIwMTYtMDItMDUgMTk6MzE6NDkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogdXNlIGJ1ZmZlciBtZW1vcnkgdG8gdXBsb2FkIHZpZGVvIGZyYW1lcyB0byB0aGUgR1BVCisKKzIwMTYtMDItMDUgMTk6MTg6NDAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi9NYWtlZmlsZS5hbToKKwkqIGV4dC92dWxrYW4vdmsuaDoKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkgIHZ1bGthbjogYWRkIGEgYnVmZmVyIG1lbW9yeSBhbGxvY2F0b3IKKwkgIFdyYXBzIHRoZSBWa0J1ZmZlciBpbiBhIEdzdE1lbW9yeSBzdWJjbGFzcy4KKworMjAxNi0wMi0wNSAxOToxMTo1MSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5Lmg6CisJICB2a21lbW9yeTogYWxpZ24gc3RydWN0IG1lbWJlcnMgaW4gdGhlIGhlYWRlcgorCisyMDE2LTAyLTA1IDE5OjEwOjQzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmttYWNyb3MuaDoKKwkgIHZrbWFjcm9zOiB1c2Ugc3BlY2lmaWMgX0lOSVQgbWFjcm9zIHRvIGluaXRpYWxpemUgc3RydWN0dXJlcworCisyMDE2LTAyLTA1IDE5OjA5OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5Lmg6CisJICB2a2ltYWdlbWVtb3J5OiBhZGQgZ2V0X3t3aWR0aCxoZWlnaHQpIGZ1bmN0aW9ucworCisyMDE2LTAxLTI3IDE1OjIwOjQ5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC92dWxrYW4vdmthcGkuaDoKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJICB2dWxrYW46IHVwZGF0ZSB0byByZWxlYXNlIDEuMC4xLjEKKworMjAxNi0wMS0yMiAxNDozNDowNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuYzoKKwkgIHZ1bGthbi94Y2I6IGZsdXNoIGFmdGVyIG1hcHBpbmcgdGhlIHdpbmRvdworCSAgT3RoZXJ3aXNlIHRoZSBtYXAgbWF5IG5vdCByZWFjaCB0aGUgc2VydmVyIGFuZCBub3QgYXBwZWFyLgorCisyMDE2LTAxLTA0IDE2OjUxOjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJICB2a3N3YXBwZXI6IGZpeCBzZW1hcGhvcmUgdXNhZ2UKKworMjAxNS0xMi0zMSAxNjozNDoyNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkgIHZ1bGthbjogYWRkIHNvbWUgZGVidWdnaW5nIGFib3V0IHRoZSBzdXBwb3J0ZWQgZXh0ZW5zaW9ucworCisyMDE1LTEyLTMxIDE1OjU4OjM3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJICB2a3N3YXBwZXI6IGdldCB0aGUgZnVuY3Rpb24gcG9pbnRlcnMgZnJvbSB0aGUgY29ycmVjdCBvYmplY3QKKwkgIEdldFBoeXNpY2FsRGV2aWNlKiBmdW5jdGlvbnMgYXJlIGluc3RhbmNlIGZ1bmN0aW9ucyByYXRoZXIgdGhhbiBkZXZpY2UKKwkgIGZ1bmN0aW9ucy4KKworMjAxNS0xMi0zMSAxNTozODozNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5oOgorCSAgdmtpbnN0YW5jZTogYWRkIHRoZSBuZWNlc3Nhcnkgd2luc3lzIGV4dGVuc2lvbgorCisyMDE1LTEyLTMxIDE1OjM0OjQ1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5oOgorCSAgdmtkaXNwbGF5OiBmb3J3YXJkIGRlY2xhcmUgR3N0VnVsa2FuRGlzcGxheVR5cGUKKworMjAxNS0xMi0zMSAxNTozMjoxNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrYXBpLmg6CisJICB2a2FwaTogcmVtb3ZlIHVubmVlZGVkIGhlYWRlcnMKKwkgIHZrYXBpIGlzIGZvciBhY2Nlc3NpbmcgdGhlIHZ1bGthbiBoZWFkZXJzIHdpdGggdGhlIGNvcnJlY3QgZGVmaW5lcyBhcHBsaWVkIHNvCisJICBkb2Vzbid0IG5lZWQgYW55IGludGVyYWwgaGVhZGVycy4KKworMjAxNS0xMi0zMCAxNToxNTo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkgIHZraW1hZ2VtZW1vcnk6IGZpeCB0aGUgbWVtb3J5IGJhcnJpZXIgYWNjZXNzIG1hc2tzCisJICBzaWxlbmNlcyB0aGUgZm9sbG93aW5nIHdhcm5pbmdzIGZyb20gdGhlIHZhbGlkYXRpb24gbGF5ZXIKKwkgIEFjY2Vzc01hc2sgeHh4IG11c3QgaGF2ZSByZXF1aXJlZCBhY2Nlc3MgYml0IHh4eCBhbmQgbWF5IGhhdmUgb3B0aW9uYWwgYml0cyAwCisJICB3aGVuIGxheW91dCBpcyBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfe1NSQyxEU1R9X09QVElNQUwKKworMjAxNS0xMi0zMCAxNToxNDoyMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSAgdmtzd2FwcGVyOiBvbmx5IHdhaXQgb24gdGhlIHNlbWFwaG9yZSBvbmNlCisJICBJdCdzIGludmFsaWQgdXNhZ2UgYW5kIHdlIG1heSBkZWFkbG9jaworCisyMDE1LTEyLTMxIDAxOjI3OjU0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSAgdmtpbWFnZW1lbW9yeTogaW5pdGlhbGl6ZSBmbGFncyBhbmQgZG9uJ3QgY3Jhc2ggb24gZXJyb3JzCisKKzIwMTUtMTItMzAgMTQ6MDY6MDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2RldmljZS5jOgorCSogZXh0L3Z1bGthbi92a2Vycm9yLmM6CisJKiBleHQvdnVsa2FuL3ZrZXJyb3IuaDoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogdXBkYXRlIGVycm9yIGRiIGZvciAwLjEwLjIKKworMjAxNS0xMi0yOSAxNjowNToxNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrLmg6CisJKiBleHQvdnVsa2FuL3ZrYXBpLmg6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuaDoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5jOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmM6CisJKiBleHQvdnVsa2FuL3ZrbWFjcm9zLmg6CisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5Lmg6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuaDoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5jOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5jOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5oOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5jOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5oOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJKiBleHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuaDoKKwkgIHZ1bGthbjogdXBkYXRlIHRvIFNESyAwLjEwLjIKKworMjAxNS0xMi0wNyAxNzozMzo0MyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi92ay5oOgorCSogZXh0L3Z1bGthbi92a2RldmljZS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuYzoKKwkqIGV4dC92dWxrYW4vdmtkaXNwbGF5Lmg6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5oOgorCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkqIGV4dC92dWxrYW4vdmt1dGlscy5jOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmg6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHNfcHJpdmF0ZS5oOgorCSAgdnVsa2FuOiBpbXBsZW1lbnQgR3N0Q29udGV4dCBoZWxwZXJzCisJICBCYXNlZCBvZmYgbGliZ3N0Z2wncyBpbXBsZW1lbnRhdGlvbgorCisyMDE1LTEyLTA3IDE3OjIxOjEyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSAgdmtkZXZpY2U6IHJlbW92ZSBnc3RfdnVsa2FuX2RldmljZV9jbG9zZSgpCisJICBXaGVuIHNoYXJpbmcgdGhlIGRldmljZSBiZXR3ZWVuIG11bHRpcGxlIGVsZW1lbnRzL2FwcGxpY2F0aW9uLCB3ZSBuZWVkCisJICB0byB1c2UgdGggZXJlZmNvdW50IHRvIGtub3cgd2hlbiB0byBjbG9zZSB0aGUgZGV2aWNlLgorCisyMDE1LTEyLTA3IDE3OjAwOjM3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5oOgorCSogZXh0L3Z1bGthbi92a3NpbmsuYzoKKwkgIHZraW5zdGFuY2U6IHJlbW92ZSBnc3RfdnVsa2FuX2luc3RhbmNlX2Nsb3NlCisJICBTaGFyaW5nIHRoZSBpbnN0YW5jZSBhY3Jvc3MgbXVsdGlwbGUgZWxlbWVudHMvYXBwbGljYXRpb24gd2lsbCByZXF1aXJlCisJICB1c2luZyB0aGUgcmVmY291bnQgaW5zdGVhZCB0byBrbm93IHdoZW4gdG8gY2xvc2UgYW5kIGRlc3Ryb3kgdGhlIGluc3RhbmNlLgorCisyMDE1LTEyLTA3IDE2OjQ2OjI4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJICB2a3N3YXBwZXI6IHJlbW92ZSBvdXRkYXRlZCBjb21tZW50CisKKzIwMTUtMTItMDcgMTY6Mzk6NTMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZrc3dhcHBlcjogYWx3YXlzIG1hdGNoIGxvY2svdW5sb2NrIG9mIHRoZSByZW5kZXIgbG9jaworCSAgSWYgYSBkcmF3IGV2ZW50IGNvbWVzIGZyb20gdGhlIHdpbnN5cyBiZWZvcmUgd2UndmUgcmVuZGVyZWQgYSBidWZmZXIgd2Ugd2VyZQorCSAgZGVhZGxvY2tpbmcuCisKKzIwMTUtMTItMDIgMTc6NTQ6MzAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5LmM6CisJKiBleHQvdnVsa2FuL3ZrbWVtb3J5LmM6CisJICB2a21lbW9yeTogZGVidWcgb3V0cHV0IHRoZSBtZW1vcnkgcHJvcGVydGllcyByZXF1ZXN0ZWQKKworMjAxNS0xMi0wMiAxNzoxNDo0OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkgIHZraW1hZ2VtZW1vcnk6IGRvbid0IGxlYWsgR3N0TWFwSW5mbyBpbiBmYWlsdXJlIGNhc2VzIG9uIF9tYXAoKQorCisyMDE1LTEyLTAyIDE3OjEwOjM5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkZXZpY2UuYzoKKwkqIGV4dC92dWxrYW4vdmtpbnN0YW5jZS5jOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkgIHZ1bGthbjogZGUtQzk5IHN0cnVjdCBkZWNsYXJhdGlvbnMKKworMjAxNS0xMi0wMSAxODozNzozNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvdnVsa2FuL3ZrX2Z3ZC5oOgorCSogZXh0L3Z1bGthbi92a3N3YXBwZXIuYzoKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmg6CisJKiBleHQvdnVsa2FuL3Zrd2luZG93LmM6CisJKiBleHQvdnVsa2FuL3Zrd2luZG93Lmg6CisJKiBleHQvdnVsa2FuL3hjYi94Y2JfZXZlbnRfc291cmNlLmM6CisJICB2a3dpbmRvdy9zd2FwcGVyOiBpbXBsZW1lbnQgcmVkcmF3IGhhbmRsaW5nCisJICBvbmx5IHhjYiBoYXMgYmVlbiBpbXBsZW1lbnRlZAorCisyMDE1LTEyLTAxIDE2OjI4OjI4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC92dWxrYW4vdmtkaXNwbGF5LmM6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5oOgorCSogZXh0L3Z1bGthbi92a3NpbmsuaDoKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5oOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5jOgorCSogZXh0L3Z1bGthbi92a3dpbmRvdy5oOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5jOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJKiBleHQvdnVsa2FuL3hjYi94Y2JfZXZlbnRfc291cmNlLmM6CisJICB2dWxrYW46IGltcGxlbWVudCBxdWl0dGluZyBhbmQgcmVzaXppbmcgdGhlIHdpbmRvdworCSAgQXMgYmVmb3JlLCBvbmx5IHhjYiBoYXMgYmVlbiBpbXBsZW1lbnRlZC4KKworMjAxNS0xMC0yNCAxNzoyOTowNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvdnVsa2FuLy5naXRpZ25vcmU6CisJKiBleHQvdnVsa2FuL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi9nc3R2dWxrYW4uYzoKKwkqIGV4dC92dWxrYW4vdmsuaDoKKwkqIGV4dC92dWxrYW4vdmtfZndkLmg6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmM6CisJKiBleHQvdnVsa2FuL3ZrZGV2aWNlLmg6CisJKiBleHQvdnVsa2FuL3ZrZGlzcGxheS5jOgorCSogZXh0L3Z1bGthbi92a2Rpc3BsYXkuaDoKKwkqIGV4dC92dWxrYW4vdmtlcnJvci5jOgorCSogZXh0L3Z1bGthbi92a2Vycm9yLmg6CisJKiBleHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oOgorCSogZXh0L3Z1bGthbi92a2luc3RhbmNlLmM6CisJKiBleHQvdnVsa2FuL3ZraW5zdGFuY2UuaDoKKwkqIGV4dC92dWxrYW4vdmttZW1vcnkuYzoKKwkqIGV4dC92dWxrYW4vdmttZW1vcnkuaDoKKwkqIGV4dC92dWxrYW4vdmtxdWV1ZS5jOgorCSogZXh0L3Z1bGthbi92a3F1ZXVlLmg6CisJKiBleHQvdnVsa2FuL3Zrc2luay5jOgorCSogZXh0L3Z1bGthbi92a3NpbmsuaDoKKwkqIGV4dC92dWxrYW4vdmtzd2FwcGVyLmM6CisJKiBleHQvdnVsa2FuL3Zrc3dhcHBlci5oOgorCSogZXh0L3Z1bGthbi92a3V0aWxzLmM6CisJKiBleHQvdnVsa2FuL3ZrdXRpbHMuaDoKKwkqIGV4dC92dWxrYW4vdmt3aW5kb3cuYzoKKwkqIGV4dC92dWxrYW4vdmt3aW5kb3cuaDoKKwkqIGV4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5jOgorCSogZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5oOgorCSogZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmM6CisJKiBleHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuaDoKKwkqIGV4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuYzoKKwkqIGV4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuaDoKKwkgIG5ldyB2dWxrYW4gYmFzZWQgdmlkZW8gc2luaworCSAgQ3VycmVudGx5IHhjYiBpcyB0aGUgb25seSB3aW5zeXMgdGhhdCBpcyBpbXBsZW1lbnRlZCBhbmQgdGhlcmUncyBubyByZWRyYXdzIGV0CisJICBhbAorCisyMDE2LTAyLTE2IDEyOjM4OjIxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9maWxlcy9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2ZpbGVzL2Nicl9zdHJlYW0ubXAzOgorCSogdGVzdHMvZmlsZXMvc3RyZWFtLm1wMjoKKwkqIHRlc3RzL2ZpbGVzL3Zicl9zdHJlYW0ubXAzOgorCSAgdGVzdHM6IHJlbW92ZSB0ZXN0IGZpbGVzIG5vIGxvbmdlciBuZWVkZWQKKworMjAxNi0wMi0xNiAxMDo0NDozMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogTWFrZWZpbGUuYW06CisJKiBjb25maWd1cmUuYWM6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sOgorCSogZXh0L01ha2VmaWxlLmFtOgorCSogZXh0L21wZzEyMy9NYWtlZmlsZS5hbToKKwkqIGV4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuYzoKKwkqIGV4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuaDoKKwkqIGdzdC1wbHVnaW5zLWJhZC5zcGVjLmluOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy8uZ2l0aWdub3JlOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYzoKKwkgIG1wZzEyMzogbW92ZSBwbHVnaW4gZnJvbSAtYmFkIHRvIC11Z2x5CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzE5ODQ5CisKKzIwMTYtMDItMTYgMTk6NTk6MTMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2d0ay9nc3RndGtiYXNlc2luay5jOgorCSogZXh0L2d0ay9nc3RndGtiYXNlc2luay5oOgorCSAgZ3RrKGdsKXNpbms6IHJlbW92ZSB0aGUgc2lnbmFsIGhhbmRsZXJzIG9uIGZpbmFsaXplCisJICBJdCdzIHBvc3NpYmxlIHRoYXQgdGhlIHNpbmsgZWxlbWVudCB3aWxsIGJlIGZyZWVkIGJlZm9yZSB0aGUgd2lkZ2V0IGlzCisJICBkZXN0cm95ZWQuICBXaGVuIHRoZSB3aWRnZXQgd2FzIGV2ZW50dWFsbHkgZGVzdHJveWVkLCBpdCB3YXMgYXR0ZW1wdGluZyB0bworCSAgYWNjZXNzIG1lbWJlciB2YXJpYWJsZXMgb2YgdGhlIGZyZWVkIHNpbmsgc3RydWN0IHdoaWNoIHJlc3VsdGVkIGluIHVuZGVmaW5lZAorCSAgYmVoYXZpb3VyLgorCSAgRml4IGJ5IGRpc2Nvbm5lY3Rpbmcgb3VyIHNpZ25hbCBvbiBmaW5hbGl6ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjIwOTgKKworMjAxNi0wMi0xNiAwODo0ODoyMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJICBnbDogUmVtb3ZlIGxlZnRvdmVyIGdfcHJpbnRzCisJICBPbmUgd2FzIGNvbW1lbnRlZCBvdXQsIGJ1dCB3ZSBhbHNvIGRvbid0IHVzZSAvLyBjb21tZW50cyA6KQorCisyMDE2LTAyLTE2IDE0OjQxOjM3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJICBnbGRlYnVnOiB1c2UgdGhlIGNvcnJlY3Qgc3BlbGxpbmcgZm9yIGJlaGF2aW9yCisJICBUaGUgaGVhZGVycyB1c2UgdGhlIGFtZXJpY2FuIHNwZWxsaW5nIG9mIGJlaGF2aW9yIG5vdCB0aGUgVUsvQVVTIHZlcnNpb24gd2l0aAorCSAgdGhlIGV4dHJhIFUuCisKKzIwMTYtMDItMTYgMTM6NTg6NDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkgIGdsY29udGV4dDogZG9uJ3QgZW5hYmxlIEdMIGRlYnVnIGZvciBtZXNzYWdlcyB0aGF0IHdvbid0IGJlIGxvZ2dlZAorCSAgVGhpcyBpcyBhbiBvcHRpbWl6YXRpb24gdG8gYXZvaWQgcG9pbnRsZXNzIHN0cmluZyBwcm9jZXNzaW5nLgorCisyMDE2LTAyLTE2IDEzOjAxOjIwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmM6CisJICBnbHZpZGVvZmxpcDogZG9uJ3QgaWdub3JlIG1ldGhvZCBjaGFuZ2VzIHdoZW4gY2FwcyBhcmVuJ3Qgc2V0ICh5ZXQpCisKKzIwMTYtMDItMTYgMDA6MzM6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIE1ha2VmaWxlLmFtOgorCSogY29uZmlndXJlLmFjOgorCSogZ3N0L3J0cC9NYWtlZmlsZS5hbToKKwkqIGdzdC9ydHAvZ3N0cnRwLmM6CisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5jOgorCSogZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuaDoKKwkqIGdzdC9ydHAvZ3N0cnRwaDI2NXBheS5jOgorCSogZ3N0L3J0cC9nc3RydHBoMjY1cGF5Lmg6CisJICBydHA6IG1vdmUgUlRQIEguMjY1IHBheWxvYWRlci9kZXBheWxvYWRlciB0byAtZ29vZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTYwNgorCisyMDE1LTEwLTA3IDIzOjQ5OjU4ICswMjAwICBTdGlhbiBTZWxuZXMgPHN0aWFuQHBleGlwLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZ3N0L25ldHNpbS9NYWtlZmlsZS5hbToKKwkqIGdzdC9uZXRzaW0vZ3N0bmV0c2ltLmM6CisJKiBnc3QvbmV0c2ltL2dzdG5ldHNpbS5oOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9uZXRzaW0uYzoKKwkgIG5ldHNpbTogQWRkIG5ldHNpbSBlbGVtZW50CisJICBSZXN1cnJlY3RlZCBmcm9tIHRoZSBGYXJzdHJlYW0gcmVwb3NpdG9yeSBhbmQgZ2l2ZW4gYW4KKwkgIG92ZXJoYXVsIHRvIGZpeCByYWNlcywgZGVhZGxvY2tzIGV0Yy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyNTIKKworMjAxNS0xMS0yMCAxOTozODowMyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgZGFzaGRlbXV4OiBnc3RfZGFzaF9kZW11eF9nZXRfbGl2ZV9zZWVrX3JhbmdlIHJldHVybnMgcG9zaXRpdmUgdmFsdWVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyMzc0CisKKzIwMTYtMDItMTAgMTA6MzE6MTkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmM6CisJICBnbDogc3luY21ldGE6IGRlZmluZSBHTF9USU1FT1VUX0lHTk9SRUQgaW4gbW9yZSBwb3J0YWJsZSB3YXkKKworMjAxNi0wMi0xMCAxNjozNzoyMiArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jOgorCSAgZ3N0Z2xzaGFkZXI6IGNhY2hlIHVuaWZvcm0gbG9jYXRpb25zCisJICBBdm9pZCByZWR1bmRhbnQgY2FsbHMgdG8gZ2xHZXRVbmlmb3JtTG9jYXRpb24uIFRoZSByZXN1bHRzIGNhbiBiZSBjYWNoZWQgb25jZQorCSAgdGhlIHNoYWRlciBoYXMgYmVlbiBsaW5rZWQuCisKKzIwMTYtMDItMTAgMTU6NDA6MDIgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tOgorCSAgYXBwbGVtZWRpYTogdmlkZW90ZXN0dXJlY2FjaGU6IGxldCBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlIGZsdXNoIGV2ZXJ5IDFzCisJICBMZWF2ZSBrQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZU1heGltdW1UZXh0dXJlQWdlS2V5IHRvIHRoZSBkZWZhdWx0ICgxcykuIFdlIHVzZWQKKwkgIHRvIHNldCBpdCB0byAwIGFuZCBmbHVzaCBtYW51YWxseSwgYnV0IGFwcGFyZW50bHkgKGxvb2tpbmcgYXQgdGhlIEdMRVMgcHJvZmlsZXIpCisJICAwIG1lYW5zICJkaXNhYmxlIHRoZSBjYWNoZSBlbnRpcmVseSIuCisKKzIwMTYtMDItMTAgMTM6MDg6NDMgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmM6CisJICBnc3RnbGNvbnRleHQ6IG1pY3JvIG9wdGltaXphdGlvbiB0byBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkCisJICBJbnZva2UgdGhlIGNhbGxiYWNrIHJpZ2h0IGF3YXkgd2hlbiBjYWxsZWQgb24gdGhlIGNvbnRleHQgdGhyZWFkLiBSZW1vdmVzCisJICBvdmVyaGVhZCB3aGVuIG5lc3RpbmcgbGliZ3N0Z2wgY2FsbHMgKGZvciBleGFtcGxlIHdoZW4gd29ya2luZyB3aXRoIHRoZSBzeW5jCisJICBtZXRhKS4KKworMjAxNi0wMS0wNiAyMTozOTowMCArMDAwMCAgSnVsaWVuIE1PVVRURSA8anVsaWVuQG1vdXR0ZS5uZXQ+CisKKwkqIGV4dC9ydG1wL2dzdHJ0bXBzaW5rLmM6CisJKiBleHQvcnRtcC9nc3RydG1wc2luay5oOgorCSAgcnRwbXNpbms6IEltcGxlbWVudCBzZXRjYXBzIHRoYXQgdXNlcyBzdHJlYW1oZWFkZXIKKwkgIFRoaXMgYWxsb3cgYWRkaW5nIHJ0bXBzaW5rIGFmdGVyIHRoZSBmbHYgc3RyZWFtaW5nIGhhdmUgc3RhcnRlZC4gT3RoZXJ3aXNlLAorCSAgRkxWIHN0cmVhbWhlYWRlciBpcyBuZXZlciBzZW50IHRvIHRoZSBzZXJ2ZXIsIHdoaWNoIGNhbm5vdCBmaWd1cmUtb3V0CisJICB3aGF0IGlzIHRoaXMgc3RyZWFtIGFib3V0LiBJdCBzaG91bGQgYWxzbyBoZWxwIGluIGNlcnRhaW4gcmVuZWdvdGlhdGlvbgorCSAgZmlndXJlcy4gVGhlIHNpbmsgd2lsbCBubyBsb25nZXIgd29yayB3aXRob3V0IGFuIHN0cmVhbWhlYWRlciBpbiBjYXBzLAorCSAgdGhvdWdoIHRoZXJlIGlzIG5vIGtub3duIGltcGxlbWVudGF0aW9uIG9mIGZsdmRlbXV4IHRoYXQgZG9lcyBub3QKKwkgIHN1cHBvcnQgdGhpcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNDIKKworMjAxNi0wMi0wOSAyMTozNToxOSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSAgbXNzZGVtdXg6IHJlbW92ZSB1bm5lY2Vzc2FyeSBjaGVjaworCSAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50IGhhcyB0aGUgdmFsdWUgb2YgZ19saXN0X3ByZXZpb3VzIChpdGVyKSB3aGljaCBoYXMKKwkgIGp1c3QgYmVlbiBjaGVja2VkLiBObyBuZWVkIHRvIGNoZWNrIGl0IGFnYWluLgorCSAgSnVzdCB0byBiZSBzYWZlLCB1c2UgYSBnX2Fzc2VydCgpIHRvIGNoZWNrIGZyYWdtZW50IGJlZm9yZSBkZXJlZmVyZW5jaW5nLgorCSAgQ0lEICMxMzUyMDQxCisKKzIwMTYtMDItMDkgMTc6MjQ6NTAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IHBsdWcgbXBkIGNsaWVudCBsZWFrCisJICBPbiBwYXJzaW5nIGVycm9yLCBmcmVlIHRoZSBtcGQgY2xpZW50IG9iamVjdAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDEyMAorCisyMDE2LTAxLTA0IDEyOjEyOjQ1ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGZpeCBtZW1vcnkgbGVhayBpbiBnc3RfZGFzaF9kZW11eF91cGRhdGVfbWFuaWZlc3RfZGF0YQorCSAgbmV3X2NsaWVudCBsb2NhbCB2YXJpYWJsZSB3YXMgbm90IGZyZWVkIGluIGNhc2Ugb2YgZXJyb3JzLgorCSAgQWxzbywgdGhlIGJ1ZmZlciBpcyBub3QgdW5tYXBwZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMTIwCisKKzIwMTUtMTEtMTAgMjI6MDE6MzggKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiByZW5hbWVkIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X2VuZF90aW1lIHRvIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUKKwkgIFRoZSBmdW5jdGlvbiBhY3R1YWxseSByZXR1cm5zIHRoZSBzZWdtZW50IGF2YWlsYWJpbGl0eSBzdGFydCB0aW1lIChhcyBkZWZpbmVkIGJ5IHRoZSBzdGFuZGFyZCkuCisJICBUaGF0IGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQsIGJ1dCBpdCBpcyBjYWxsZWQgYXZhaWxhYmlsaXR5IHN0YXJ0IHRpbWUuCisJICBBdmFpbGFiaWxpdHkgZW5kIHRpbWUgaXMgc29tZXRoaW5nIGVsc2UgKHRoZSB0aW1lIHdoZW4gdGhlIHNlZ21lbnQgaXMgbm8gbG9uZ2VyCisJICBhdmFpbGFibGUgb24gdGhlIHNlcnZlcikuIFRoZSBmdW5jdGlvbiBuYW1lIHdhcyBtaXNsZWFkaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzY1NQorCisyMDE1LTExLTEwIDIyOjAwOjU4ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGNvcnJlY3RlZCBnZXR0aW5nIHNlZ21lbnQgYXZhaWxhYmlsaXR5CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjU1CisKKzIwMTUtMTEtMTkgMTU6MzA6MzQgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiB0ZXN0czogYWRkZWQgdW5pdCB0ZXN0IGZvciBnZXR0aW5nIHNlZ21lbnQgYXZhaWxhYmlsaXR5IHdoZW4gc2VnbWVudCB0aW1lbGluZSBpcyB1c2VkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3NjU1CisKKzIwMTYtMDEtMDcgMTI6NTA6MDYgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYzoKKwkgIGFkYXB0aXZlX2RlbXV4OiB0ZXN0czogaW1wcm92ZWQgdmFsaWRhdGlvbiBvZiBwYWRzCisJICBXaGVuIHJlbW92aW5nIGEgcGFkLCB0aGUgb25fZGVtdXhQYWRSZW1vdmVkIGZ1bmN0aW9uIG11c3QgZmluZCBhIHN0cmVhbQorCSAgZm9yIHRoYXQgcGFkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDMyOAorCisyMDE2LTAxLTA3IDEyOjQ4OjEyICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmM6CisJICBhZGFwdGl2ZV9kZW11eDogdGVzdHM6IGZpeCBwYWQgdXNlZCBmb3IgQXBwU2luayBldmVudAorCSAgb25fZGVtdXhOZXdQYWQgcmVnaXN0ZXJlZCB0aGUgb25fYXBwc2lua19ldmVudCBjYWxsYmFjayBvbiBhIHdyb25nIHBhZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAzMjgKKworMjAxNi0wMS0wOCAxNjoyNToxMiArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmg6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogcmVtb3ZlIHVudXNlZCBkZW11eF9zZW50X2VvcyBjYWxsYmFjaworCSAgVGhlIGRlbXV4X3NlbnRfZW9zIGNhbGxiYWNrIGlzIHVudXNlZCBpbiB0ZXN0cy4gSXQgd2FzIGFsc28gcmVnaXN0ZXJlZCBvbgorCSAgYSB3cm9uZyBwYWQsIHNvIGl0IGFjdHVhbGx5IHRyaWdnZXJlZCB3aGVuIGRlbXV4IHJlY2VpdmVkIGVvcyBmcm9tIGEKKwkgIGZyYWdtZW50IGRvd25sb2FkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDMyOAorCisyMDE2LTAxLTA4IDE4OjE3OjIxICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogdGVzdHM6IHJlbW92ZSB1bm5lZWRlZCB5b3V0dWJlIHhtbG5zIGZyb20gbWFuaWZlc3RzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMzI4CisKKzIwMTYtMDItMDkgMTQ6MDc6NTQgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IGltcGxlbWVudCBHc3RFbGVtZW50OjpzZXRfY29udGV4dAorCisyMDE2LTAyLTA5IDE0OjA0OjA5ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIGFwcGxlbWVkaWE6IHZ0ZGVjOiB1cGRhdGUgY29weXJpZ2h0CisKKzIwMTYtMDItMDkgMTM6NDI6NDggKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IGltcGxlbWVudCBHc3RFbGVtZW50OjpzZXRfY29udGV4dAorCSAgTmVlZGVkIHRvIHByb3Blcmx5IGhhbmRsZSBnc3QuZ2wuYXBwX2NvbnRleHQocykuCisKKzIwMTYtMDItMDkgMTM6Mzk6MTggKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IGFkZCBteXNlbGYgdG8gdGhlIGNvcHlyaWdodCBob2xkZXJzCisKKzIwMTYtMDItMDkgMTM6NTY6MzIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogd2luMzIvY29tbW9uL2xpYmdzdGdsLmRlZjoKKwkgIGdsOiB1cGRhdGUgd2luMzIgLmRlZiBmaWxlCisKKzIwMTYtMDItMDkgMTM6MDg6MjEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYzoKKwkgIGdsc3luY21ldGE6IGFkZCBjb21wYXRpYmlsaXR5IGRlZmluaXRpb24gZm9yIEdMX1RJTUVPVVRfSUdOT1JFRAorCisyMDE2LTAyLTA5IDEyOjE0OjA0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9ndGsvZ3RrZ3N0Z2x3aWRnZXQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgZ2xzeW5jbWV0YTogc2VwYXJhdGUgb3V0IGdwdS9jcHUgd2FpdHMuCisJICBDUFUgd2FpdHMgYXJlIG1vcmUgZXhwZW5zaXZlIGFuZCBhcmUgb25seSByZXF1aXJlZCBpZiB0aGUgQ1BVIGlzIGV2ZXIgZ29pbmcgdG8KKwkgIGFjY2VzcyB0aGUgZGF0YS4gR1BVIHdhaXRzIHBlcmZvcm0gaW50ZXItY29udGV4dCBzeW5jaHJvbmlzYXRpb24gYW5kIGFyZSBjaGVhcGVyCisJICBhcyB0aGV5IGRvbid0IHJlcXVpcmUgQ1BVIGludGVydmVudGlvbi4KKworMjAxNi0wMi0wOCAyMzoxNzozNCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogcmVtb3ZlIG92ZXJ3cml0dGVuIHZhbHVlCisJICByZXQgaXMgb3ZlcndpdHRlbiBiZWZvcmUgdXNlZCB3aXRoIHRoZSByZXR1cm4gb2YgdGhlIHN1YmNsYXNzIHNlZWsuCisJICBDSUQgIzEzNTIwNDQKKworMjAxNi0wMi0wOCAxNTowMDozNSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmM6CisJICByZXNpbmR2ZDogcmVtb3ZlIGNvbW1lbnRlZCBvdXQgaW5jbHVkZQorCSAgQ29tbWl0IDIxMTgyODk3OWI4YzEwYWJmM2M3NGQ5NjRiYzY5OGRiZGE0ZDQ5N2QgcmVtb3ZlZCByc25hdWRpb211bmdlLAorCSAgbm8gbmVlZCBmb3IgdGhpcyBjb21tZW50ZWQgb3V0IGluY2x1ZGUgZm9yIGEgZmlsZSB0aGF0IGRvZXNuJ3QgZXhpc3QKKwkgIGFueW1vcmUuCisKKzIwMTYtMDItMDggMTQ6MjY6NDYgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jOgorCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmg6CisJICBSZXZlcnQgInJlc2luZHZkOiBnZXQgcmlkIG9mIF9zdGRpbnQuaCBpbmNsdWRlIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCAwZWZmNmUxOTkxY2IyNGNiNjVmMDdjNDgxNzQyNzgyYWNhYThlYzYyLgorCSAgQnJlYWtzIHRoZSBidWlsZCB3aGVuIGxpbmtpbmcgd2l0aCBkdmRuYXYuaAorCisyMDE2LTAyLTA4IDEzOjQzOjIyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQveDI2NS9nc3R4MjY1ZW5jLmg6CisJICB4MjY1ZW5jOiBnZXQgcmlkIG9mIF9zdGRpbnQuaCBpbmNsdWRlCisJICBJdCB3YXMgbmV2ZXIgbmVlZGVkIHNpbmNlIGl0IGRvZXNuJ3QgdXNlIGFueSBzdGFuZGFyZCBpbnRlZ2VyIGZpeGVkIHdpZHRoCisJICB0eXBlcy4gT25seSB0aGUgR2xpYiB0eXBlcy4KKworMjAxNi0wMi0wOCAxMzozMjo0NiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmM6CisJKiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuaDoKKwkgIHJlc2luZHZkOiBnZXQgcmlkIG9mIF9zdGRpbnQuaCBpbmNsdWRlCisKKzIwMTYtMDItMDggMTI6NDQ6NTMgKzAxMDAgIFBpb3RyIERyxIVnIDxwaW90cmRyYWdAZ21haWwuY29tPgorCisJKiBwby9QT1RGSUxFUy5za2lwOgorCSAgcG86IHVwZGF0ZSBQT1RGSUxFUworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTcwNAorCisyMDE2LTAyLTA4IDEyOjIzOjEyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYzoKKwkgIGdsZWZmZWN0czogaWRlbnRpdHk6IGFkZCB0aGUgc2hhZGVyIHRvIHRoZSBoYXNoIHRhYmxlCisJICBTbyB0aGF0IHdlIGRvbid0IHJlY3JlYXRlIGl0IGV2ZXJ5IGZyYW1lIGFuZCBsZWFrIG1lbW9yeS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE1NzgKKworMjAxNi0wMi0wNSAyMDowMjoyMiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkgIHRlc3RzOiBleHRlbmQgdGhlIEFNX1RFU1RTX0VOVklST05NRU5UIGZyb20gY2hlY2subWFrCisJICBUbyBnZXQgdGhlIENLX0RFRkFVTFRfVElNRU9VVCBkZWZpbmVkIGZvciBhbGwgdGVzdHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE0NzIKKworMjAxNi0wMi0wNSAxODowNjozMiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBSRUFETUU6CisJKiBjb21tb246CisJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKKwkgIEZyb20gZTk3YzliYiB0byBiNjRmMDNmCisKKzIwMTYtMDItMDUgMTU6MzQ6NTEgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC9ydHAvZ3N0cnRwaDI2NWRlcGF5LmM6CisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5oOgorCSAgZ3N0cnRwaDI2NWRlcGF5OiBrZWVwIGNvbnNpc3RlbmN5IHdpdGggcnRwaDI2NGRlcGF5CisJICBVc2UgZ3N0X3J0cF9kcm9wX21ldGEoKSBhbmQgdGhlIHNhbWUgZnVuY3Rpb24gcHJvdG90eXBlIGZvcgorCSAgZ3N0X3J0cF9jb3B5X21ldGEoKSB0byBrZWVwIGNvbnNpc3RlbmN5IHdpdGggdGhlIFJUUCBlbGVtZW50cyBpbgorCSAgZ3N0LXBsdWdpbnMtZ29vZAorCisyMDE2LTAyLTA1IDIxOjMzOjM4ICswNTMwICBBcnVuIFJhZ2hhdmFuIDxhcnVuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBVc2UgZ2xpYiBDTEFNUCgpIGluc3RlYWQgb2Ygb3VyIG93biBtYWNybworCisyMDE2LTAyLTA1IDEzOjU2OjM0ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5jOgorCSAgcnRwaDI2NWRlcGF5OiBmaXggdGVybWluYXRpb24gb2YgYWNjZXNzIHVuaXQKKwkgIE9ubHkgY29uc2lkZXIgdGhlIGFjY2VzcyB1bml0IGNvbXBsZXRlIHdoZW4gdGhlIG5leHQtb2NjdXJyaW5nIFZDTCBOQUwgdW5pdAorCSAgaGFzIHRoZSBmaXJzdCBiaXQgYWZ0ZXIgaXRzIE5BTCB1bml0IGhlYWRlciBlcXVhbCB0byAxLgorCisyMDE2LTAyLTAyIDEzOjUwOjI1ICswMDAwICBEYXZpZCBXYXJpbmcgPGRhdmlkLndhcmluZ0ByZC5iYmMuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IFVwZGF0ZSBwb3NpdGlvbiBpbiBzdHJlYW0tPnNlZ21lbnQgZm9yIG5ldyBzdHJlYW0gc2VnbWVudCBtZXNzYWdlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTQ1OAorCisyMDE2LTAyLTA1IDE1OjQzOjIyICswNTMwICBBcnVuIFJhZ2hhdmFuIDxhcnVuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBMaW1pdCBwZXJpb2Qgc2l6ZSBhbmQgY291bnQgdG8gd2hhdCB0aGUgaC93IHBlcm1pdHMKKworMjAxNi0wMi0wNSAxMDo0Mzo0OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xfcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvd2F5bGFuZF9ldmVudF9zb3VyY2UuaDoKKwkqIHdpbjMyL2NvbW1vbi9saWJnc3RnbC5kZWY6CisJICBnbDogYWRkIC5kZWYgZmlsZSBmb3IgbXN2YyBidWlsZHMKKwkgIEFsc28gaW50ZXJuYWxpemUgc29tZSBBUEkgZnJvbSBiZWluZyBleHBvcnRlZC4KKworMjAxNi0wMi0wMiAxNzowMjo0MSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9tc3NkZW11eC5jOgorCSAgdGVzdHM6IG1zc2RlbXV4OiBhZGQgdW5pdCB0ZXN0cworCSAgQWRkcyB1bml0IHRlc3RzIHNpbWlsYXIgdG8gdGhlIG9uZXMgdGhhdCB3ZSBoYXZlIGZvciBEQVNIIGFuZCBITFMuCisJICBUZXN0czoKKwkgICogbWFuaWZlc3QgcGFyc2luZyBmaW5pc2hlcyBzdWNjZXNzZnVsbHkKKwkgICogc29tZSBxdWVyaWVzIChkdXJhdGlvbiwgc2Vla2FibGUsIGxhdGVuY3kpCisJICAqIHNlZWtpbmcgd2l0aCB2YXJpb3VzIHZhbHVlcyBhbmQgZmxhZ3MKKworMjAxNi0wMi0wMiAxNjo1NDoxMCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0Lmg6CisJICBtc3NkZW11eDogaW1wbGVtZW50IHNuYXAgc2Vla2luZworCSAgSW1wbGVtZW50IHNuYXAgc2VlayBmbGFncyBoYW5kbGluZyBpbiBzdHJlYW1fc2VlayB0byBhbGxvdyB0aGUKKwkgIHBhcmVudCBjbGFzcyB0byBoYW5kbGUgaXQgZm9yIHVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MTU4CisKKzIwMTYtMDItMDIgMTY6NTE6MjIgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgorCSAgbXNzZGVtdXg6IHVzZSBjb3JyZWN0IHNlZWsgcG9zaXRpb24gb24gcmV2ZXJzZSBzZWVrcworCSAgT3RoZXJ3aXNlIGl0IHdhcyBhbHdheXMgdXNpbmcgdGhlICdzdGFydCcgdmFsdWUsIGxlYWRpbmcgdG8gd3JvbmcKKwkgIGJlaGF2aW9yCisKKzIwMTYtMDItMDIgMTE6MzA6MzEgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgorCSAgbXNzZGVtdXg6IG9ubHkgdXBkYXRlIGRvd25sb2FkIHBvc2l0aW9uIGlmIHRoZSBzZWVrIHJlcXVlc3RzIHRvCisJICBTb21lIHNlZWtzIGFyZSBvbmx5IHVwZGF0aW5nIHRoZSBzdG9wIHBvc2l0aW9uLCB0aGVyZSBpcyBubyBuZWVkCisJICB0byBjaGFuZ2UgdGhlIGN1cnJlbnQgZG93bmxvYWRpbmcgcG9zaXRpb24uCisKKzIwMTYtMDItMDIgMDk6NTI6MTcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSAgbXNzZGVtdXg6IGRvIG5vdCBhc3NlcnQgb24gZnJhZ21lbnQgcmVsb2FkcyBmb3Igbm9uLWxpdmUKKwkgIEl0IGNhbiBiZSB1c2VkIGFzIGEgcmVzb3VyY2UgdG8gdmVyaWZ5IGlmIHRoZSBzZXJ2ZXIgaGFzIHVwZGF0ZWQKKwkgIHNvbWV0aGluZyBpbiB0aGUgTWFuaWZlc3Qgd2hlbiBkb3dubG9hZHMgYXJlIGZhaWxpbmcKKworMjAxNi0wMS0yNyAxMDo0ODo1MyAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICB0ZXN0czogZGFzaGRlbXV4OiBhZGQgdGVzdHMgZm9yIHNuYXAgZmxhZ3Mgc2Vla2luZworCSAgU2ltaWxhciB0byBITFMgYnV0IERBU0ggaGFzIHRoZSBleHRyYSBpc3N1ZSB0aGF0IGl0IGNhbiBoYXZlCisJICBtdWx0aXBsZSBzdHJlYW1zIHNvIHNuYXBwaW5nIGNhbiBiZSB0cmlja3kgYXMgc3RyZWFtcyB1c3VhbGx5CisJICB3b24ndCBiZSBhbGlnbmVkLgorCSAgRm9yIG5vdywgdGhvc2UgdGVzdHMgaGFuZGxlIHRoZSBjYXNlIG9mIG9ubHkgaGF2aW5nIGEgc2luZ2xlCisJICBzdHJlYW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MTU4CisKKzIwMTYtMDItMDEgMTA6NDk6MjMgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogaW1wbGVtZW50IHNuYXAgc2VlayBoYW5kbGluZworCSAgSGFuZGxlIHNuYXAgc2Vla2luZyBhdCB0aGUgc3RyZWFtX3NlZWsgbWV0aG9kIGFuZCBsZXQgc3VwZXJjbGFzcworCSAgZG8gdGhlIHJlc3QgdG8gc3VwcG9ydCBzbmFwIHNlZWtpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTkxNTgKKworMjAxNi0wMS0yNyAxMzozMToxMCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmg6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0Lmg6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJICBhZGFwdGl2ZWRlbXV4OiBoYW5kbGUgc25hcCBzZWVrcworCSAgQWRhcHRpdmUgZGVtdXhlcnMgbmVlZCB0byBzdGFydCBkb3dubG9hZGluZyBmcm9tIHNwZWNpZmljIHBvc2l0aW9ucworCSAgKGZyYWdtZW50cykgZm9yIGV2ZXJ5IHN0cmVhbSwgdGhpcyBtZWFucyB0aGF0IGFsbCBzdHJlYW1zIGNhbiBzbmFwLXNlZWsKKwkgIHRvIGEgZGlmZmVyZW50IHBvc2l0aW9uIHdoZW4gcmVxdWVzdGVkLiBTbmFwIHNlZWtpbmcgaW4gdGhpcyBjYXNlIHdpbGwKKwkgIGJlIGRvbmUgaW4gMiBzdGVwczoKKwkgIDEpIGRvIHRoZSBzbmFwIHNlZWtpbmcgb24gdGhlIHBhZCB0aGF0IHJlY2VpdmVkIHRoZSBzZWVrIGV2ZW50IGFuZAorCSAgZ2V0IHRoZSBmaW5hbCBwb3NpdGlvbgorCSAgMikgdXNlIHRoaXMgcG9zaXRpb24gdG8gZG8gYSByZWd1bGFyIHNlZWsgb24gdGhlIG90aGVyIHN0cmVhbXMgdG8KKwkgIG1ha2Ugc3VyZSB0aGV5IGFsbCBzdGFydCBmcm9tIHRoZSBzYW1lIHBvc2l0aW9uCisJICBNb3JlIGFyZ3VtZW50cyB3ZXJlIGFkZGVkIHRvIHRoZSBzdHJlYW1fc2VlayBmdW5jdGlvbiwgYWxsb3dpbmcgYmV0dGVyIGNvbnRyb2wKKwkgIG9mIGhvdyBzZWVraW5nIGlzIGRvbmUuIEtub3dpbmcgdGhlIGZsYWdzIGFuZCB0aGUgcGxheWJhY2sgZGlyZWN0aW9uIGFsbG93cworCSAgc3ViY2xhc3NlcyB0byBoYW5kbGUgc25hcC1zZWVraW5nLgorCSAgQW5kIGFsc28gYWRkcyBhIG5ldyByZXR1cm4gcGFyYW1ldGVyIHRvIGluZm9ybSBvZiB0aGUgZmluYWwKKwkgIHNlbGVjdGVkIHNlZWtpbmcgcG9zaXRpb24gdGhhdCBpcyB1c2VkIHRvIGFsaWduIHRoZSBvdGhlciBzdHJlYW1zLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTE1OAorCisyMDE2LTAxLTI2IDIzOjQzOjI0IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaDoKKwkgIGFkYXB0aXZlZGVtdXg6IGFkZCB1dGlsaXR5IGZ1bmN0aW9uIHRvIGdldCBzdHJlYW0gZnJvbSBwYWQKKwkgIFNpbXBsaWZpZXMgdGhlIGNvZGUgYSBiaXQgYW5kIGF2b2lkIHJlcGVhdGluZyB0aGlzCisJICBjb21tb24gb3BlcmF0aW9uCisKKzIwMTYtMDItMDQgMTI6NTA6NDMgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NHBhcnNlLmM6CisJICBoMjY0cGFyc2U6IHJlbW92ZSB1bnVzZWQgbXZpZXdfbW9kZSB2YWx1ZQorCSAgU2luY2UgY29tbWl0IGI3N2Y4ZTE3MmEzZjBiZTZiZTVjYjRhNzJlNjU0MjUzNDA0ZTY5NGYgdGhlIG5ldyB2YWx1ZQorCSAgYXNzaWduZWQgdG8gbXZpZXdfbW9kZSBoYXNuJ3QgYmVlbiB1c2VkLiBUaGF0IGNvbW1pdCBjaGFuZ2VkIHRoZSBmb2xsb3dpbmcKKwkgICJpZiIgY2hlY2sgdG8gYW4gImVsc2UgaWYiLCB3aGljaCBtZWFucyB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgbXZpZXdfbW9kZQorCSAgaXMgdXNlZC4KKworMjAxNi0wMi0wNCAxMjoxNzozMSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuYzoKKwkgIGdscXVlcnk6IHJlbW92ZSB1bm5lY2Vzc2FyeSBwb2ludGVyIGNoZWNrCisJICBBbGwgdXNlcyBvZiBxdWVyeS0+Y29udGV4dCBpbiBnc3RnbHF1ZXJ5LmMgYXNzdW1lIGl0IGV4aXN0cy4gV2UgY2FuIGFzc3VtZQorCSAgdGhpcyBhcyB3ZWxsIGJlZm9yZSB1bnJlZmluZyBpdC4gRnVydGhlcm1vcmUsIGdzdF9vYmplY3RfdW5yZWYoKSB3aWxsIGp1c3QKKwkgIHNpbGVudGx5IHJldHVybiBpZiBpdCBldmVyIHdlcmUgdG8gbm90IGV4aXN0LgorCisyMDE2LTAyLTA0IDE4OjE1OjU2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NXBhcnNlLmM6CisJICBoMjY1cGFyc2U6IGF2b2lkIHNlbmRpbmcgdW5uZWNlc3NhcnkgZG93bnN0cmVhbSBjYXBzIHF1ZXJpZXMvZXZlbnRzCisJICBoMjY1IHZlcnNpb25zIG9mIHRoZSBmb2xsb3dpbmcgY29tbWl0czoKKwkgIGYzNTI2OTFhMDQ4OTZkMGRlMzM4MWZlOGVlODVhZGE5NDhiZDYzMzcKKwkgIHRyeSB0aGUgY3VycmVudCBjYXBzIGJlZm9yZSBxdWVyeWluZyBkb3duc3RyZWFtCisJICA3MmJjN2Q3ZjczNmExMDExN2ZlZGI4ZTFkNDAxM2E0OTQ2Y2ZlZmJjCisJICBpbmNyZWFzZSBjYXBzIGVxdWFsaXR5IGNoZWNrIGZvciBubyBjb2RlY19kYXRhCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTY6MzY6MjggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYzoKKwkgIGgyNjRwYXJzZTogaW5jcmVhc2UgY2FwcyBlcXVhbGl0eSBjaGVjayBmb3Igbm8gY29kZWNfZGF0YQorCSAgV2hlbiBjb252ZXJ0aW5nIGZyb20gYXZjIHRvIGJ5dGUtc3RyZWFtLCB0aGVyZSB3aWxsIG5vdCBiZSBhbnkgY29kZWNfZGF0YQorCSAgaW4gdGhlIHNyYyBjYXBzLiAgUmVtb3ZlIGl0IGJlZm9yZSB0aGUgZXF1YWxpdHkgY2hlY2sgdG8gYXZvaWQgc2VuZGluZyBjYXBzCisJICBldmVudHMgZG93bnN0cmVhbSBvbiBldmVyeSBTUFMvUFBTIGNoYW5nZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEwMTQKKworMjAxNi0wMi0wNCAxNTozNDowNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjRwYXJzZS5jOgorCSAgaDI2NHBhcnNlOiB0cnkgdGhlIGN1cnJlbnQgY2FwcyBiZWZvcmUgcXVlcnlpbmcgZG93bnN0cmVhbQorCSAgSWYgd2UgaGF2ZSBhIHN0cmVhbSB0aGF0IGNvbnRhaW5zIGFuIHVuY2hhbmdpbmcgU1BTL1BQUyBmb3IgZXZlcnkgdmlkZW8gZnJhbWUsCisJICB3ZSBkb24ndCBuZWVkIHRvIHRvIGNvbnN0YW50bHkgcXVlcnkgZG93bnN0cmVhbSBmb3IgaXQncyBzdXBwb3J0ZWQgY2FwcyBpZiB0aGUKKwkgIGN1cnJlbnQgY2FwcyBhcmUgY29tcGF0aWJsZSB3aXRoIHRoZSBuZWdvdGlhdGVkIGNhcHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTc6MzE6MDMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWZpbHRlci5jOgorCSAgZ2xiYXNlZmlsdGVyOiBlbmFibGUgcW9zIGJ5IGRlZmF1bHQKKwkgIEltcHJvdmVzIHRoZSByZXNwb25zaXZlbmVzcyBvZiB0aGUgcGlwZWxpbmUgd2hlbiByZXNvdXJjZXMgYXJlIGNsb3NlL2Fib3ZlIHRoZQorCSAgbGltaXRhdGlvbnMgb2YgdGhlIGhhcmR3YXJlLgorCSAgQW55IHN1YmNsYXNzIHRoYXQgd2lzaGVzIG5vdCB0byBlbmFibGUgcW9zIGNhbiBkbyBzbyB0aGVtc2VsdmVzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTUxOQorCisyMDE2LTAyLTA0IDE1OjExOjE1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBwYXNzIHRoZSBjb3JyZWN0IHRpbWUgdmFsdWUgdG8gd2FpdF9mb3Jfc3luYworCSAgV2hlbiB3ZSBhcmUgbm90IHdhaXRpbmcsIHdlIG5lZWQgdG8gcGFzcyAtMSB0byBzaWduYWwgdGhhdCB3ZSBqdXN0IHdhbnQgdG8gY2hlY2sKKwkgIHRoYXQgdGhlIGZyYW1lIHdhcy9uJ3QgcmVuZGVyZWQuICBBdm9pZHMgd2FpdGluZyBmb3IgZnJhbWVzIHRoYXQgd2lsbCBuZXZlciBiZQorCSAgcmVuZGVyZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTU6MDc6NDQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgYW1jdmlkZW9kZWM6IGFkdmFuY2UgdGhlIHJlYWR5IGNvdW50ZXIgb3Vyc2VsdmVzIHdoZW4gcmVuZGVyPUZBTFNFCisJICBXaGVuIG5vdCByZW5kZXJpbmcgdGhlIHZpZGVvIGZyYW1lLCBlLmcuIHdoZW4gZnJlZWluZyBhbiB1bnJlbGVhc2VkIHN5bmMgZnJhbWUsCisJICB3ZSB3aWxsIG5vdCByZWNlaXZlIGEgZnJhbWUgbGlzdGVuZXIgY2FsbGJhY2suCisJICBSZWR1Y2VzIHRoZSBhbW91bnQgb2YgJ29uX2ZyYW1lX2F2YWlsYWJsZSBtaXNzIGRldGVjdGVkJyBtZXNzYWdlcyB3aGVuIGRyb3BwaW5nCisJICBmcmFtZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDItMDQgMTQ6MjU6MTIgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmthdWRpb3NyYy5jcHA6CisJICBkZWNrbGlua2F1ZGlvc3JjOiBGaXggZGlzY29udCB0cmFja2luZworCSAgRG9uJ3QgcmVzZXQgdGhlIG1hcmtlciB0aGF0J3MgdHJhY2tpbmcgZGlzY29udHMgdW50aWwKKwkgIGVpdGhlciB0aGUgZGlzY29udCBkaXNhcHBlYXJzIG9yIHdlIHJlc3luYy4KKworMjAxNi0wMi0wMyAyMToyMjoyOCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL01ha2VmaWxlLmFtOgorCSogc3lzL2Nkcm9tL01ha2VmaWxlLmFtOgorCSogc3lzL2Nkcm9tL2dzdGNkcGxheWVyLmM6CisJKiBzeXMvY2Ryb20vZ3N0Y2RwbGF5ZXIuaDoKKwkqIHN5cy9jZHJvbS9nc3RjZHBsYXllcl9pb2N0bC5jOgorCSogc3lzL2Nkcm9tL2dzdGNkcGxheWVyX2lvY3RsLmg6CisJKiBzeXMvY2Ryb20vZ3N0Y2RwbGF5ZXJfaW9jdGxfYnNkLmg6CisJKiBzeXMvY2Ryb20vZ3N0Y2RwbGF5ZXJfaW9jdGxfaXJpeC5oOgorCSogc3lzL2Nkcm9tL2dzdGNkcGxheWVyX2lvY3RsX3NvbGFyaXMuaDoKKwkgIFJlbW92ZSBhbmNpZW50IGFuZCBkZWFkIGNkcm9tIGNvbnRyb2wgcGx1Z2luCisJICBUaGlzIHdhcyBuZXZlciBldmVuIHBvcnRlZCB0byAwLjEwLCBhbmQgSSBkb24ndCB0aGluaworCSAgaXQncyBwYXJ0aWN1bGFybHkgdXNlZnVsLCBzaW5jZSBpdCdzIGp1c3QgYSBjb250cm9sCisJICBpbnRlcmZhY2UgcmVhbGx5LiBMZXQncyByZW1vdmUgaXQuCisKKzIwMTYtMDItMDMgMjE6MTY6MTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5LmM6CisJKiBnc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5oOgorCSogZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuaDoKKwkqIGdzdC9kZWJ1Z3V0aWxzL2Zwc2Rpc3BsYXlzaW5rLmM6CisJICBkb2NzOiByZW1vdmUgc29tZSBsZWZ0b3ZlciAnU2luY2UgMC4xMC54JyBtYXJrZXJzCisKKzIwMTYtMDItMDMgMjE6MTM6NTggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9kZWJ1Z3V0aWxzLy5naXRpZ25vcmU6CisJKiBnc3QvZGVidWd1dGlscy9NYWtlZmlsZS5hbToKKwkqIGdzdC9kZWJ1Z3V0aWxzL2RlYnVndXRpbHMtbWFyc2hhbC5saXN0OgorCSogZ3N0L2RlYnVndXRpbHMvZnBzZGlzcGxheXNpbmsuYzoKKwkgIGRlYnVndXRpbHM6IHVzZSBnZW5lcmljIG1hcnNoYWxsZXIKKworMjAxNi0wMi0wMyAxNjoyODo0MiArMDAwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXM6IGZpeCBGRUMKKwkgIEZFQyBtYXkgb25seSBiZSB1c2VkIHdoZW4gUExDIGlzIGVuYWJsZWQgb24gdGhlIGF1ZGlvIGRlY29kZXIsCisJICBhcyBpdCByZWxpZXMgb24gZW1wdHkgYnVmZmVycyB0byBnZW5lcmF0ZSBhdWRpbyBmcm9tIHRoZSBuZXh0CisJICBidWZmZXIuIEhvb2tpbmcgdG8gdGhlIGdhcCBldmVudHMgZG9lc24ndCB3b3JrIGFzIHRoZSBhdWRpbworCSAgZGVjb2RlciBkb2VzIG5vdCBsaWtlIG1vcmUgYnVmZmVycyBvdXRwdXQgdGhhbiBpdCBzZW5kcy4KKwkgIFRoZSBsZW5ndGggb2YgZGF0YSB0byBnZW5lcmF0ZSB1c2luZyBGRUMgZnJvbSB0aGUgbmV4dCBwYWNrZXQKKwkgIGlzIGRldGVybWluZWQgYnkgcm91bmRpbmcgdGhlIGdhcCBkdXJhdGlvbiB0byBuZWFyZXN0LiBUaGlzCisJICBlbnN1cmVzIHRoYXQgZHVyYXRpb24gaW1wcmVjaXNpb24gZG9lcyBub3QgY2F1c2UgcXVhbnRpemF0aW9uCisJICB0byAyLjUgbWlsbGlzZWNvbmRzIGxlc3MgdGhhbiBhdmFpbGFibGUuIERvaW5nIHNvIGNhdXNlcyB0aGUKKwkgIE9wdXMgQVBJIHRvIGZhaWwgZGVjb2RpbmcuIFN1Y2ggZHVyYXRpb24gaW1wcmVjaXNpb24gaXMgY29tbW9uCisJICBpbiBsaXZlIGNhc2VzLgorCSAgVGhlIGJ1ZmZlciB0byBjb25zaWRlciB3aGVuIGRldGVybWluaW5nIHRoZSBsZW5ndGggb2YgYXVkaW8KKwkgIHRvIGJlIGRlY29kZWQgaXMgdGhlIHByZXZpb3VzIGJ1ZmZlciB3aGVuIHVzaW5nIEZFQywgYW5kIHRoZQorCSAgbmV3IGJ1ZmZlciBvdGhlcndpc2UuIEluIHRoZSBGRUMgY2FzZSwgdGhpcyBtZWFucyB3ZSBkZXRlcm1pbmUKKwkgIHRoZSBhbW91bnQgb2YgYXVkaW8gZnJvbSB0aGUgcHJldmlvdXMgYnVmZmVyLCB3aGV0aGVyIGl0IHdhcworCSAgbWlzc2luZyBvciBub3QgKGFuZCBnZXQgdGhlIGRhdGEgZWl0aGVyIGZyb20gdGhpcyBidWZmZXIsIG9yCisJICB0aGUgY3VycmVudCBvbmUgaWYgdGhlIHByZXZpb3VzIG9uZSB3YXMgbWlzc2luZykuCisKKzIwMTYtMDItMDMgMTA6NTk6MjMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKKwkgIGdsdHJhbnNmb3JtYXRpb246IHJlY29uZmlndXJlIHRoZSBzcmMgd2hlbiBjaGFuZ2luZyB0by9mcm9tIHBhc3N0aHJvdWdoCisJICBPdGhlcndpc2UgaXQncyB2ZXJ5IHBvc3NpYmxlIHRoYXQgYW55IEdMIHJlc291cmNlcyBoYXZlIG5vdCBiZWVuIGNyZWF0ZWQgeWV0LgorCisyMDE2LTAyLTAzIDEwOjUyOjA4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbHZpZGVvZmxpcC5jOgorCSogZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmg6CisJICBnbHZpZGVvZmxpcDogY29ycmVjdGx5IHVwZGF0ZSB0aGUgb3V0cHV0IGNhcHMgb24gbWV0aG9kIGNoYW5nZXMKKwkgIFdoZW4gY2hhbmdpbmcgbWV0aG9kcyB3ZSBtYXkgbmVlZCBkaWZmZXJlbnQgb3V0cHV0IGNhcHMuCisKKzIwMTYtMDItMDIgMTE6MjA6MTcgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBmaXggdGluYWxzYSB0eXBvCisKKzIwMTYtMDItMDIgMTE6MDY6NTIgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jOgorCSAgdGlueWFsc2FzaW5rOiBmaXggc2FtcGxlIGxhdW5jaCBsaW5lCisKKzIwMTYtMDItMDIgMTQ6NDY6MzAgKzAwMDAgIERhdmlkIFdhcmluZyA8ZGF2aWQud2FyaW5nQHJkLmJiYy5jby51az4KKworCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZS5hbToKKwkgIGxpYnM6IHBsYXllcjogdXNlIGNvbmZpZ3VyZWQgR1NUX1BLR19DT05GSUdfUEFUSCB3aGVuIGludm9raW5nIHRoZSBpbnRyb3NwZWN0aW9uIHNjYW5uZXIKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjE0NjAKKworMjAxNi0wMi0wMiAxNToyMDo0OCArMDAwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXNkZWM6IGZpeCB3cm9uZyBidWZmZXIgYmVpbmcgY2hlY2tlZCBmb3IgbWlzc2luZyBkYXRhCisJICBUaGlzIGNhdXNlZCBhIGRlY29kaW5nIGVycm9yIGlmIHRoZSByZXN1bHRpbmcgKHdyb25nKSBidWZmZXIgc2l6ZQorCSAgd2FzIHBhc3NlZCB0byB0aGUgT3B1cyBkZWNvZGluZyBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTU4CisKKzIwMTYtMDItMDIgMTY6MjY6MDkgKzA1MzAgIEFydW4gUmFnaGF2YW4gPGFydW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmM6CisJICB0aW55YWxzYXNpbms6IFVzZSBpbnQgdHlwZSBpZiB3ZSBzdXBwb3J0IGEgc2luZ2xlIHJhdGUvY2hhbm5lbCBjb3VudAorCSAgQXZvaWRzIHVzaW5nIGFuIGludCByYW5nZSBpZiB0aGUgZmllbGQgd2UncmUgc2V0dGluZyBpcyBub3QgYWN0dWFsbHkgYQorCSAgcmFuZ2UuCisKKzIwMTYtMDItMDIgMTg6MzY6MzQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2xjb250ZXh0X2VhZ2wubToKKwkgIFJldmVydCAiZ2wvZWFnbDogdHJ5IGdldHRpbmcgYSBnbGVzMyBjb250ZXh0IgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCA5NmI5NjY2ZDU5NmJlMTE1ZmQ0YjQ0NmVmODQ2NTA4YjdmZDA1YzI0LgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCBkMTEzODVkMTY3ZDg4NDM2MDRlYTIzYTA1ZTJkZWE0MGI4YmJhYzM1LgorCSAgVGhpcyBicmVha3MgdGhlIHRleHR1cmUgc2hhcmluZyB3aXRoIHRoZSBhcHBsZW1lZGlhIGVsZW1lbnRzIGFzCisJICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlIHNlZW1zIHRvIGhhdmUgYW4gYXJiaXRyYXJ5IHJlc3RyaWN0aW9uIG9uIEdMRVMyIG9ubHkuCisKKzIwMTYtMDItMDIgMTY6MjE6MTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZG9uJ3Qgc2tpcCBzdWJzZXQgc3RydWN0dXJlcworCSAgV2UgbWF5IG5lZWQgdGhlbSB0byB0cmFuc2Zvcm0gaW50byBhIGRpZmZlcmVudCBzZXQgb2YgZm9ybWF0cy4KKwkgIEZpeGVzIFlVVi0+WVVWIHdpdGggdHdvIGdsY29sb3Jjb252ZXJ0cywgZS5nOgorCSAgZm9ybWF0PUk0MjAgISBnbGNvbG9yY29udmVydCAhIGdsY29sb3Jjb252ZXJ0ICEgZm9ybWF0PU5WMTIKKworMjAxNi0wMi0wMiAxNjoxOTo1NCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJICBnbGJhc2VmaWx0ZXI6IGFsd2F5cyBjYWxsIGdsX3N0YXJ0IHdoZW4gbm90IGNhbGxlZCBhbHJlYWR5CisJICBGaXhlcyBlbGVtZW50cyB0cmFuc2l0aW9uaW5nIG91dCBvZiBwYXNzdGhyb3VnaCBtb2RlIHVzaW5nIEdMIHJlc291cmNlcyB0aGF0CisJICBoYWRuJ2UgYmVlbiBhbGxvY2F0ZWQgeWV0LgorCisyMDE2LTAyLTAyIDE1OjE0OjI1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGZpeCBSR0IscmVjdGFuZ2xlLT5wbGFuYXIgWVVWIGNvbnZlcnNpb24KKwkgIENvbnZlcnRpbmcgdG8gR1JBWSBpcyBubyBmdW4uICBBbm90aGVyIGNhc2Ugb2Ygbm9ybWFsaXplZCB2cyB1bm5vcm1hbGl6ZWQKKwkgIHRleHR1cmUgY29vcmRpbmF0ZXMuCisKKzIwMTYtMDItMDIgMTM6NTE6MTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZml4IFlVWTIvVVlWWSxyZWN0YW5nbGUtPlJHQiBjb252ZXJzaW9uCisJICAxLjAgLyB3aWR0aCBkb2VzIG5vdCBvZmZzZXQgYnkgb25lIHBpeGVsIGluIHJlY3Rhbmd1bGFyIHRleHR1cmVzICh3aGljaCB1c2UKKwkgIHVubm9ybWFsaXplZCBjb29yZGluYXRlcykuCisJICBQcm92aWRlIHRoZSBhY3R1YWwgcGl4ZWwgb2Zmc2V0IGFzIGEgdW5pZm9ybSB0byB0aGUgc2hhZGVyLgorCisyMDE2LTAxLTI3IDE2OjQyOjA5ICswNTMwICBBcnVuIFJhZ2hhdmFuIDxhcnVuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogc3lzL01ha2VmaWxlLmFtOgorCSogc3lzL3RpbnlhbHNhL01ha2VmaWxlLmFtOgorCSogc3lzL3RpbnlhbHNhL3RpbnlhbHNhLmM6CisJKiBzeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmM6CisJKiBzeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmg6CisJICB0aW55YWxzYTogQWRkIGEgbmV3IHNpbmsgcGx1Z2luIHVzaW5nIHRpbnlhbHNhCisJICBUaGlzIHVzZXMgdGhlIHRpbnlhbHNhIGxpYnJhcnkgdG8gcGxheWJhY2sgdG8gYW4gQUxTQSBkZXZpY2UuIEZ1dHVyZQorCSAgd29yayBjYW4gaW5jbHVkZSB1c2luZyB0aGUgbW1hcCBpbnRlcmZhY2UuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjMwCisKKzIwMTYtMDItMDIgMTI6NTA6MjYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogcGVyZm9ybSBiZXR0ZXIgbmVnb3RpYXRpb24KKwkgIDEuIENvcnJlY3RseSBkZXNjcmliZSB3aGF0IHdlIGNhbiBjYXBzIHdlIGNhbiB0cmFuc2Zvcm0gdG8vZnJvbS4KKwkgIGkuZS4gbm8gWVVWLT5ZVVYgb3IgR1JBWS0+WVVWIG9yIFlVVi0+R1JBWSAoZXhjZXB0IGZvciBwYXNzdGhyb3VnaCkuCisJICAyLiBQcmVmZXIgc2ltaWxhciBmb3JtYXRzIGFuZCBpZ25vcmUgaW5jb21wYXRpYmxlIGZvcm1hdHMgb24gZml4YXRpb24uCisKKzIwMTYtMDEtMjYgMjM6MTU6MTAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgdGVzdHM6IGRhc2hkZW11eDogYWRkIHRlc3QgZm9yIHVwZGF0aW5nIHN0b3AgcG9zaXRpb24KKwkgIFRlc3QgdGhhdCBhIHNlZWsgdGhhdCBvbmx5IHVwZGF0ZXMgdGhlIHN0b3AgcG9zaXRpb24gd29ya3MKKwkgIGFzIGV4cGVjdGVkCisKKzIwMTYtMDItMDEgMDk6NDg6MzMgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IG9ubHkgdXBkYXRlIGN1cnJlbnQgcmVhZGluZyBwb3NpdGlvbiB3aGVuIG5lZWRlZAorCSAgSWYgdGhlIHNlZWsgZG9lc24ndCBzZXQgdGhlIHN0YXJ0L3N0b3AgcG9zaXRpb24sIG5vIG5lZWQgdG8KKwkgIHJlcG9zaXRpb24gdGhlIGRvd25sb2FkIGluZGV4LgorCisyMDE2LTAxLTI5IDIwOjM0OjQyIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSAgZGFzaGRlbXV4OiByZXNwZWN0IHNlZWtpbmcgcGFyYW1ldGVyCisJICBJbnN0ZWFkIG9mIHVzaW5nIHRoZSBzZWdtZW50IHZhbHVlcywgdXNlIHRoZSBwYXJhbWV0ZXIKKwkgIHJlcXVlc3RlZCBpbiB0aGUgc2Vla2luZyBhcmd1bWVudAorCisyMDE2LTAyLTAxIDE0OjI1OjQyIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICB0ZXN0czogZGFzaDogZml4IGRhc2ggdGVzdHMgYWZ0ZXIgaW5kZXggZml4CisJICA4ZTc4OGYyODQ1MDg2MTI5ODJlOGUzODMzNmVlZDY3NmMyZWVjMzVhIGJyb2tlIG9uZSBvZiB0aGUKKwkgIGRhc2ggbXBkIHRlc3RzLiBUaGlzIHVwZGF0ZXMgYW5kIGZpeGVzIGl0LgorCisyMDE2LTAyLTAxIDEyOjIzOjMyICswMDAwICBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJICBnc3RnbHdpbmRvdzogaW5pdGlhbGl6ZSBuYXZpZ2F0aW9uX2xvb3AgdG8gTlVMTAorCSAgVXNlZnVsIHdoZW4gZ3N0X2dsX3dpbmRvdy5jOjpnc3RfZ2xfd2luZG93X25ldyBpcyBub3QgdXNlZC4KKwkgIFRoaXMgaXMgdGhlIGNhc2Ugd2hlbiB1c2luZyBhIGN1c3RvbSBHc3RHTFdpbmRvdy4KKwkgIChleDogR3N0R0xXaW5kb3dHUFVQcm9jZXNzIGZyb20gQ2hyb21pdW0pCisKKzIwMTYtMDItMDEgMDk6MjY6MzcgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLm06CisJICBnbDogZWFnbDogZml4IGJ1aWxkCisJICBnc3RnbGNvbnRleHRfZWFnbC5tOjIzODo0NTogZXJyb3I6IHRvbyBmZXcgYXJndW1lbnRzIHRvIGZ1bmN0aW9uIGNhbGwsCisJICBleHBlY3RlZCBhdCBsZWFzdCA0LCBoYXZlIDMKKworMjAxNi0wMi0wMSAxNToxMzowMyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGRvd25sb2FkZWxlbWVudC5jOgorCSAgZ2xkb3dubG9hZDogYWxsb3cgdmlkZW8veC1yYXcgYXMgaW5wdXQKKwkgIC4uLmFuZCBqdXN0IHBhc3N0aHJvdWdoLiBUaGlzIGlzIHVzZWZ1bCBmb3IgcGlwZWxpbmVzIHdoZXJlIGRvd25zdHJlYW0gbXVzdCBiZQorCSAgbm9uLUdMIGJ1dCB1cHN0cmVhbSBjYW4gb3B0aW9uYWxseSBiZSBHTC4KKworMjAxNi0wMi0wMSAxMjo1NzozMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5tOgorCSAgZ2wvZWFnbDogdHJ5IGdldHRpbmcgYSBnbGVzMyBjb250ZXh0CisJICBGYWxsYmFjayB0byBhIGdsZXMyIGNvbnRleHQgaWYgdGhhdCBmYWlscworCisyMDE2LTAxLTIxIDE2OjEwOjQ4ICswODAwICBXYW5nIFhpbi15dSAo546L5piV5a6HKSA8Y29taWNmYW5zNDRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IGZpeCBjaGVja2VyIHZibyBsZWFrCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwOTI1CisKKzIwMTYtMDEtMjQgMTU6NDc6MTIgKzAxMDAgIEhvbGdlciBLYWVsYmVyZXIgPGhvbGdlci5rQGVsYmVyZXIuZGU+CisKKwkqIHRlc3RzL2V4YW1wbGVzL3F0L3FtbC9tYWluLnFtbDoKKwkgIHRlc3RzOiBmaXggd2FybmluZyBpbiBxbWwgZXhhbXBsZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjA4MgorCisyMDE2LTAxLTI0IDE1OjQyOjMyICswMTAwICBIb2xnZXIgS2FlbGJlcmVyIDxob2xnZXIua0BlbGJlcmVyLmRlPgorCisJKiBjb25maWd1cmUuYWM6CisJICBxdDogRml4IGJ1aWxkIGZvciBhbmRyb2lkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MDgyCisKKzIwMTYtMDItMDEgMDE6MDE6MTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9zbmFwc2hvdC9NYWtlZmlsZS5hbToKKwkqIGV4dC9zbmFwc2hvdC9nc3RzbmFwc2hvdC5jOgorCSogZXh0L3NuYXBzaG90L2dzdHNuYXBzaG90Lmg6CisJICBSZW1vdmUgZGVhZCBzbmFwc2hvdCBwbHVnaW4KKwkgIFdhcyBuZXZlciBwb3J0ZWQgYW5kIGRvZXNuJ3QgbG9vayBsaWtlCisJICB3ZSB3YW50IGl0IG9yIG5lZWQgaXQgaW4gdGhpcyBmb3JtLCBjYW4KKwkgIGRvIHRoZSBzYW1lIHdpdGggdGhlIGxpYmdzdHZpZGVvIHNhbXBsZQorCSAgY29udmVyc2lvbiB1dGlsaXR5IEFQSSBub3csIGJ1dCBiZXR0ZXIKKwkgIGFuZCBpbiBhIG1vcmUgZmxleGlibGUgd2F5LgorCisyMDE2LTAyLTAxIDAwOjQ5OjQ4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBleHQvcnN2Zy9nc3Ryc3ZnZGVjLmg6CisJKiBleHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5oOgorCSAgcnN2ZzogYnVtcCByZXF1aXJlbWVudCB0byAyLjM2LjIKKwkgIFdoaWNoIGFsbG93cyB1cyB0byBzaW1wbGlmeSB0aGUgY29uZmlndXJlIGNoZWNrIGFuZAorCSAgc29tZSBzcGVjaWFsLWNhc2luZyBpbiB0aGUgY29kZSwgYW5kIGlzIHBsZW50eSBvbGQKKwkgIGluIGFueSBjYXNlLgorCisyMDE2LTAyLTAxIDAwOjI5OjM3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvbGliZmFtZS9NYWtlZmlsZS5hbToKKwkqIGV4dC9saWJmYW1lL1JFQURNRToKKwkqIGV4dC9saWJmYW1lL2dzdGxpYmZhbWUuYzoKKwkqIGV4dC9saWJmYW1lL2dzdGxpYmZhbWUuaDoKKwkqIG00L01ha2VmaWxlLmFtOgorCSogbTQvbGliZmFtZS5tNDoKKwkgIFJlbW92ZSBkZWFkIGxpYmZhbWUgcGx1Z2luCisJICBXYXMgbmV2ZXIgZXZlbiBwb3J0ZWQgdG8gMC4xMCwgYW5kIHRoZSBsaWIKKwkgIGhhcyBiZWVuIHVubWFpbnRhaW5lZCBmb3IgZXZlciBhbmQgZG9lc24ndAorCSAgZXZlbiBzZWVtIHRvIGJlIHBhY2thZ2VkIGFueSBtb3JlLgorCisyMDE2LTAxLTMxIDE5OjA5OjU3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvYXVkaW9maWxlL01ha2VmaWxlLmFtOgorCSogZXh0L2F1ZGlvZmlsZS9SRUFETUU6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmLmM6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmcGFyc2UuYzoKKwkqIGV4dC9hdWRpb2ZpbGUvZ3N0YWZwYXJzZS5oOgorCSogZXh0L2F1ZGlvZmlsZS9nc3RhZnNpbmsuYzoKKwkqIGV4dC9hdWRpb2ZpbGUvZ3N0YWZzaW5rLmg6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmc3JjLmM6CisJKiBleHQvYXVkaW9maWxlL2dzdGFmc3JjLmg6CisJKiBwby9QT1RGSUxFUy5za2lwOgorCSAgUmVtb3ZlIGRlYWQgYXVkaW9maWxlIHBsdWdpbgorCSAgVGhpcyB3YXMgbmV2ZXIgZXZlbiBwb3J0ZWQgdG8gMC4xMC4KKworMjAxNi0wMS0zMSAxOTowNDoyMCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogLmdpdGlnbm9yZToKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmludGVyZmFjZXM6CisJKiBleHQvTWFrZWZpbGUuYW06CisJKiBleHQvZ3NldHRpbmdzL01ha2VmaWxlLmFtOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3MuaDoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmM6CisJKiBleHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc2F1ZGlvc2luay5oOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5jOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3NhdWRpb3NyYy5oOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYzoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmg6CisJKiBleHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmM6CisJKiBleHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmg6CisJKiBleHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuYzoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc2luay5oOgorCSogZXh0L2dzZXR0aW5ncy9nc3Rzd2l0Y2hzcmMuYzoKKwkqIGV4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc3JjLmg6CisJKiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjoKKwkqIGV4dC9nc2V0dGluZ3MvcGx1Z2luLmM6CisJKiBtNC9nc2V0dGluZ3MubTQ6CisJKiBwby9QT1RGSUxFUy5pbjoKKwkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgorCSAgUmVtb3ZlIGdzZXR0aW5ncyBwbHVnaW4gd2hpY2ggd2FzIG5ldmVyIHBvcnRlZAorCSAgRG9uJ3QgdGhpbmsgd2UgbmVlZCB0aGlzIGFueSBsb25nZXIgb3Igd2FudCB0bworCSAgc3VwcG9ydCBpdCwgYW5kIGNsZWFybHkgbm8gb25lIGhhcyBiZWVuIG1pc3NpbmcKKwkgIGl0IGFsbCB0aGVzZSB5ZWFycyBlaXRoZXIsIHNvIGxldCdzIGp1c3QgZ2V0IHJpZAorCSAgb2YgaXQuCisKKzIwMTYtMDEtMzEgMTY6MDI6MzMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW06CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4Lmg6CisJICBzbW9vdGhzdHJlYW1pbmc6IHJlbW92ZSB1bnVzZWQgZGVwZW5kZW5jeSBvbiB1cmlkb3dubG9hZGVyCisKKzIwMTYtMDEtMzEgMTQ6NDI6MjEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC9mYWFkL01ha2VmaWxlLmFtOgorCSogZXh0L2ZhYWQvZ3N0ZmFhZC5jOgorCSogZXh0L2ZhYWQvZ3N0ZmFhZC5oOgorCSAgZmFhZDogc2ltcGxpZnkgY29uZmlndXJlIGNoZWNrIGFuZCByZXF1aXJlIGZhYWQgPj0gMi43CisJICBKdXN0IGNoZWNrIHdoZXRoZXIgTEFUTSBpcyBkZWZpbmVkIHdoaWNoIGlzIG9ubHkgYXZhaWxhYmxlCisJICBpbiAyLjcgYW5kIGxhdGVyLiBBbGxvd3MgdXMgdG8gc2ltcGxpZnkgdGhlIGNvbmZpZ3VyZSBjaGVjaworCSAgYSBsaXR0bGUgYW5kIHdlIGNhbiBnZXQgcmlkIG9mIHNvbWUgaGFja2lzaCB3b3JrYXJvdW5kcyBmb3IKKwkgIHByb2JsZW1zIHdpdGggZWFybGllciB2ZXJzaW9uIGhlYWRlcnMuCisKKzIwMTYtMDEtMzAgMTc6MzE6NDEgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9kdmIvZ3N0ZHZic3JjLmM6CisJICBkdmJzcmM6IGRyb3AgdW5uZWNlc3NhcnkgdXNlIG9mIF9zdGRpbnQuaAorCisyMDE2LTAxLTI5IDIzOjM5OjI2ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZnR5cGVzLmM6CisJICBteGZ0eXBlczogR2VuZXJhdGUgVVVJRHMgYWNjb3JkaW5nIHRvIFJGQzQxMjIgdmVyc2lvbiA0IChha2EgcmFuZG9tKQorCSAgSW5zdGVhZCBvZiBmdWxseSByYW5kb20gVVVJRHMsIHRoZXNlIHNob3VsZCBmb2xsb3cgYSBzY2hlbWUuCisKKzIwMTYtMDEtMjkgMjE6MDk6NDQgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbWV0YWRhdGEuYzoKKwkgIG14Zm1ldGFkYXRhOiBQcm9wZXJseSB3cml0ZSB2aWRlbyBsaW5lIG1hcCBkYXRhIGFzIGFuIGFycmF5IG9mIDMyIGJpdCBpbnRlZ2VycworCisyMDE2LTAxLTI5IDIwOjU4OjI3ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm1ldGFkYXRhLmM6CisJICBteGZtZXRhZGF0YTogRE1TY2hlbWVzIGluIHRoZSBQcmVmYWNlIGlzIGEgcmVxdWlyZWQgZmllbGQKKwkgIEV2ZW4gaWYgaXQgaGFzIDAgZW50cmllcy4KKworMjAxNi0wMS0yOSAxODo0MTo1MiArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZ1bC5jOgorCSAgbXhmdWw6IEZpeCBDb250ZW50IFN0b3JhZ2UgVUwKKworMjAxNi0wMS0yOSAxODoyODowMyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtZXRhZGF0YS5jOgorCSAgbXhmbWV0YWRhdGE6IEJlc3QgZWZmb3J0IHZhbHVlcyBtdXN0IGJlIHdyaXR0ZW4gYW5kIGlmIHVuc2V0IG11c3QgY29udGFpbiB0aGUgZGlzdGluZ3Vpc2hlZCB2YWx1ZQorCSAgSXQncyBpbnZhbGlkIHRvIG5vdCB3cml0ZSB0aGVtIGF0IGFsbC4KKworMjAxNi0wMS0yOSAxNzozNjoxMSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZ1bC5jOgorCSAgbXhmdWw6IEFkZCBtaXNzaW5nIE9wZXJhdGlvbmFsUGF0dGVybiBVTCwgd2hpY2ggZml4ZXMgYW4gb2ZmLWJ5LW9uZSB3aXRoIHRoZSBvdGhlcnMKKworMjAxNi0wMS0yOSAxNzowNzowOCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogT3VyIGJvZHkgcGFydGl0aW9uIGlzIGFsd2F5cyBjb21wbGV0ZSBhbmQgY2xvc2VkCisJICBXZSBoYXZlIG5vIG1ldGFkYXRhIGluIGl0LgorCisyMDE2LTAxLTI5IDE3OjAyOjAxICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBVc2UgSW5kZXhTSUQgb2YgMiBpbnN0ZWFkIG9mIDEKKwkgIFNvbWUgdG9vbHMgY29tcGxhaW4gaWYgZXNzZW5jZSBhbmQgaW5kZXggaGF2ZSB0aGUgc2FtZSBTSUQuCisKKzIwMTYtMDEtMjkgMTY6Mzg6MjMgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IFJld3JpdGUgYm9keSBwYXJ0aXRpb24gcGFjayBvbiBFT1MgYW5kIG1hcmsgaXQgYXMgY29tcGxldGUvY2xvc2VkCisKKzIwMTYtMDEtMjkgMjM6Mjg6NTkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgYW1jdmlkZW9kZWM6IGd1YXJkIGFnYWluc3Qgbm90IGZpbmRpbmcgYSB2YWxpZCBmcmFtZSBpbiBsb29wCisJICBGaXhlcyBzcG9yYWRpYyBjcmFzaGVzIG9uIGZpbmlzaGluZyBkZWNvZGluZyBhIHZpZGVvLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTAxNAorCisyMDE2LTAxLTI5IDE1OjI0OjM2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvb3JnL2ZyZWVkZXNrdG9wL2dzdHJlYW1lci9hbmRyb2lkbWVkaWEvR3N0QW1jT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyLmphdmE6CisJICBhbWN2aWRlb2RlYzogc2V0IG91ciBkYXRhIHBvaW50ZXIgaW4gamF2YSB0byBOVUxMIG9uIGNsb3NlCisJICBUaGUgZnJhbWUgYXZhaWxhYmxlIGNhbGxiYWNrIGNhbiBiZSBjYWxsZWQgYWZ0ZXIgZGVjb25maWd1cmluZyB0aGUgYW1jIGNvZGVjLgorCSAgR3VhcmQgYWdhaW5zdCB0aGlzIGJ5IHNldHRpbmcgdGhlIGJhY2sgcG9pbnRlciB0byBOVUxMIG9uIGNsb3NlKCkgYW5kIGlnbm9yaW5nCisJICBhbnkgTlVMTCBkYXRhIHBvaW50ZXIuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMDE0CisKKzIwMTYtMDEtMjkgMTU6MDc6NTkgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS9nbGNvbnRleHRoZWxwZXIuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2dsY29udGV4dGhlbHBlci5oOgorCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmg6CisJICBhcHBsZW1lZGlhOiByZWZhY3RvciBHTCBjb250ZXh0IGNvZGUKKwkgIFJld29yayB0aGUgR0wgY29udGV4dCBjb2RlLiBOb3cgYm90aCBhdmZ2aWRlb3NyYyBhbmQgdnRkZWMgY2FuIGNyZWF0ZSBhbgorCSAgaW50ZXJuYWwgR0wgY29udGV4dCBmb3IgcHVzaGluZyB0ZXh0dXJlcy4gQm90aCBlbGVtZW50cyB3aWxsIHN0aWxsIHRyeSB0bworCSAgdXNlL3N3aXRjaCB0byBhIGxvY2FsIGNvbnRleHQgd2hlcmUgYXZhaWxhYmxlIChpbmNsdWRpbmcgYWZ0ZXIgUkVDT05GSUdVUkUKKwkgIGV2ZW50cykuCisKKzIwMTYtMDEtMjkgMTA6MzU6MTUgKzA4MDAgIFdhbmcgWGluLXl1ICjnjovmmJXlrocpIDxjb21pY2ZhbnM0NEBnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYmFzZS5oOgorCSAgZ2xwcm90b3R5cGVzOiBmaXggcGFyYW1ldGVyIHR5cGUgb2YgZ2xHZW5CdWZmZXJzCisJICBUaGUgbnVtYmVyIG9mIGJ1ZmZlcnMgc2hvdWxkIGJlIEdMc2l6ZWkgaW5zdGVhZCBvZiBHTHVpbnQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYxMjcyCisKKzIwMTUtMTItMDggMTQ6MDk6NTggKzA4MDAgIEhhaWh1YSBIdSA8YjU1NTk3QGZyZWVzY2FsZS5jb20+CisKKwkqIGV4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYzoKKwkgIGdsZWZmZWN0czogZml4IGdsZWZmZWN0cyBmaXNoZXllIHNoYWRlciBjb21waWxlIGVycm9yCisJICBPbiBzb21lIGVtYmVkZGVkIHN5c3RlbXMsIHNxcnQoKSBpcyBub3Qgc3VwcG9ydGVkIGluIHRoZSBzaGFkZXIsCisJICB1c2UgdGhlIGFjdHVhbCB2YWx1ZSBvZiBzcXJ0KDIpIGluc3RlYWQuCisJICBTaWduZWQtb2ZmLWJ5OiBIYWlodWEgSHUgPGI1NTU5N0BmcmVlc2NhbGUuY29tPgorCSAgQnVnemlsbGE6IGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjEyNzEKKworMjAxNi0wMS0yOSAxNDowMzoyNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmM6CisJICBnbHZpZGVvbWl4ZXI6IHBhciBtYXkgbm90IGV4aXN0IGluIHRoZSBjYXBzCisJICBGaXhlcyBhIGNyaXRpY2FsIGluIHRoZSBnc3QtdmFsaWRhdGUgdGVzdHM6CisJICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uOiBhc3NlcnRpb24gJ2dzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkCisJICAoc3RydWN0dXJlLCBmaWVsZF9uYW1lKQorCisyMDE2LTAxLTI5IDEyOjQ1OjU3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSAgZ2xjb250ZXh0OiBiYWNrIG91dCB1bmludGVuZGVkIGxvc3RfY29udGV4dCBjaGFuZ2VzCisKKzIwMTYtMDEtMjggMTY6Mzk6MDcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC91dGlscy9vcGVuZ2xfdmVyc2lvbnMuaDoKKwkgIGVnbDogaW1wbGVtZW50IHNlbGVjdGluZyBvcGVuZ2wzIGNvbnRleHRzCisKKzIwMTYtMDEtMjggMTQ6MzE6MzMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaDoKKwkgIGdsL2VnbDogcGFzcyB0aGUgZXJyb3IgdmFsdWUgdG8gZ2V0X2Vycm9yX3N0cmluZygpCisKKzIwMTYtMDEtMjggMTg6MjA6NDQgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmM6CisJICB2aWRlb3BhcnNlOiBpbml0aWFsaXplIHVwZGF0ZV9zaXplIHRvIEZBTFNFIHdoZW4gdXBkYXRpbmcgaW5mbworCSAgT3RoZXJ3aXNlLCBiZWhhdmlvciB3aWxsIGJlIHVuZGVmaW5lZCB3aGVuIG5vIHN0cmlkZXMvb2Zmc2V0cyBhcmUgc2V0CisJICBhbmQgaXQgd2lsbCBsaWtlbHkgZ28gd3JvbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMjggMTE6NTY6MzYgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYzoKKwkgIHZpZGVvcGFyc2U6IEZpeCBmcmFtZXNpemUgY2FsY3VsYXRpb24KKwkgIFdoZW4gdGhlIGZyYW1lc2l6ZSBpcyBub3Qgc3BlY2lmaWVkLCB3ZSB0cnkgYW5kIGNhbGN1bGF0ZSBhIHNpemUgZnJvbQorCSAgdGhlIHN0cmlkZXMgYW5kIG9mZnNldCBpbmZvcm1hdGlvbi4gVGhpcyB3YXMgZG9uZSB3aXRoIHRoZSBzdW0gb2YKKwkgIG9mZnNldHMgKyB0aGUgc2l6ZSBvZiB0aGUgbGFzdCBmcmFtZS4gVGhhdCBpcyBqdXN0IHdyb25nIG1ldGhvZC4gV2UgYWxzbworCSAgbmVlZCB0byBhY2NvdW50IGZvciB2aWRlbyBtZXRhIHRoYXQgbWF5IGJlIGZsaXBwaW5nIHR3byBwbGFuZXMuIEFuCisJICBleGFtcGxlIGlzIGlmIHlvdSBjb252ZXJ0IEk0MjAgdG8gWVYxMiBieSBmbGlwcGluZyB0aGUgdHdvIGxhc3Qgb2Zmc2V0cy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0yOCAxOTozNjo0NyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2dkcC9nc3RnZHBkZXBheS5jOgorCSogZ3N0L2dkcC9nc3RnZHBkZXBheS5oOgorCSAgZ2RwZGVwYXk6IEFkZCB0cy1vZmZzZXQgcHJvcGVydHkgdG8gYWRqdXN0IGJ1ZmZlciB0aW1lc3RhbXBzCisKKzIwMTYtMDEtMjkgMDQ6NTA6NDIgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW46CisJICBwa2ctY29uZmlnOiBEb24ndCBnZW5lcmF0ZSBhbmQgaW5zdGFsbCBwa2ctY29uZmlnIHdpdGggcmVsYXRpdmUgcGF0aHMKKwkgIERvbid0IHB1dCByZWxhdGl2ZSBwYXRocyBpbiBwa2ctY29uZmlnIGZpbGVzLCBpbmNsdWRpbmcgdW5pbnN0YWxsZWQKKwkgIG9uZXMuIEZvciB0aG9zZSwgdXNlIEBhYnNfdG9wYnVpbGRkaXJAIGFuZCBAYWJzX3RvcHNyY2RpckAgYXMgd2UKKwkgIGRvIGVsc2V3aGVyZS4KKwkgIFJlbW92ZSBsaWJyYXJpZXM9IGRpcmVjdGl2ZXMsIHdoaWNoIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIHBrZy1jb25maWcKKwkgIHZhcmlhYmxlIHRoYXQgYWN0dWFsbHkgZXhpc3RzLCBidXQgaGFzIGJlZW4gaW4gYWxsIG91ciBwa2ctY29uZmlnCisJICBmaWxlcyBmb3IgYXMgbG9uZyBhcyB0aGV5J3ZlIGV4aXN0ZWQuCisKKzIwMTYtMDEtMjggMTY6NDk6NTMgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXBlZy5jOgorCSAgbXhmbXBlZzogV3JpdGUgdGhlIGNvcnJlY3QgZXNzZW5jZSBjb250YWluZXIgVUwgZm9yIGFsbCBjb2RlY3MKKworMjAxNi0wMS0yOCAxNjo0MTozMSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtcGVnLmM6CisJICBteGZtcGVnOiBXcml0ZSB2ZXJzaW9uIG51bWJlciBpbnRvIHRoZSBwaWN0dXJlIGVzc2VuY2UgY29kaW5nIFVMCisKKzIwMTYtMDEtMjggMTY6MzI6MzQgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IFdyaXRlIGEgdGltZWNvZGUgdHJhY2sgaW50byB0aGUgc291cmNlIHBhY2thZ2UgdG9vCisKKzIwMTYtMDEtMTEgMTU6NDc6MjQgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmM6CisJKiBnc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5oOgorCSAgdmlkZW9wYXJzZTogdXNlIGRlY2lkZV9hbGxvY2F0aW9uIHRvIGNoZWNrIGlmIGRvd25zdHJlYW0gc3VwcG9ydHMgdmlkZW9tZXRhCisJICBJZiB5ZXMsIHdlIGFkZCB0aGVtIHRvIGVhY2ggb3V0cHV0IGJ1ZmZlcnMgYW5kIHdlIGF2b2lkIGZyYW1lIGNvcHkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMTEgMTU6NDY6MTYgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jOgorCSogZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmg6CisJICByYXdwYXJzZTogYWRkICdkZWNpZGVfYWxsb2NhdGlvbicgdmZ1bmMgdG8gbGV0IHN1YmNsYXNzIHBhcnNlIGFuIGFsbG9jYXRpb24gcXVlcnkKKwkgIEFuZCBzbyBzZW5kIGFuIGFsbG9jYXRpb24gcXVlcnkuIFRoaXMgY291bGQgYmUgdXNlZCB0byBjaGVjayB3aGV0aGVyCisJICBkb3duc3RyZWFtIGVsZW1lbnQgc3VwcG9ydHMgc29tZSBtZXRhcyBvciBub3QuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMDggMTc6MTc6MDEgKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jOgorCSAgcmF3cGFyc2U6IHVzZSBzaXplIG9mIGJ1ZmZlciB3ZSBnb3QgZnJvbSBhZGFwdGVyCisJICBPdGhlcndpc2UgcG9zaXRpb24gaW4gc3RyZWFtIGNvdWxkIGJlIHdyb25nIGlmIHN1YmNsYXNzICdwcmVfcHVzaF9mcmFtZScKKwkgIG1ldGhvZCBjaGFuZ2VzIHRoZSBidWZmZXIgc2l6ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0wNyAxNDoyNzoyNyArMDEwMCAgQXVyw6lsaWVuIFphbmVsbGkgPGF1cmVsaWVuLnphbmVsbGlAcGFycm90LmNvbT4KKworCSogZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYzoKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmg6CisJICB2aWRlb3BhcnNlOiBhZGQgcHJvcGVydGllcyB0byBzZXQgZnJhbWVzaXplLCBzdHJpZGVzIGFuZCBwbGFuZXMgb2Zmc2V0cworCSAgVG8gbWFrZSBwYXJzZXIgd29yayB3aXRoIGltYWdlIGhhdmluZyBub24tc3RhbmRhcmQgc3RyaWRlcywgcGxhbmUKKwkgIG9mZnNldHMgb3Igd2l0aCBwYWRkaW5nIGJldHdlZW4gaW1hZ2VzLgorCSAgRm9yIG5vdywgc2luY2UgZWxlbWVudCBkb2Vzbid0IGNoZWNrIGZvciB2aWRlb21ldGEsIHdlIGNhbid0IGRpcmVjdGx5CisJICBwdXNoIGJ1ZmZlcnMgd2hlbiB0aGVzZSBwcm9wZXJ0aWVzIGFyZSBzZXQgc28gaXQgY29udmVydCB0aGUgZnJhbWUKKwkgIGluIHRoZSBwcmVfcHVzaF9idWZmZXIgbWV0aG9kIHRvIHJlbW92ZSBhbnkgY3VzdG9tIHBhZGRpbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMjcwCisKKzIwMTYtMDEtMDggMTU6MjE6MjggKzAxMDAgIEF1csOpbGllbiBaYW5lbGxpIDxhdXJlbGllbi56YW5lbGxpQHBhcnJvdC5jb20+CisKKwkqIGdzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5jOgorCSogZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmg6CisJKiBnc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5jOgorCSAgcmF3cGFyc2U6IHJlbmFtZSAnc2V0X2J1ZmZlcl9mbGFncycgdmZ1bmMgdG8gJ3ByZV9wdXNoX2J1ZmZlcicKKwkgIHRvIGFsbG93IHN1YmNsYXNzIHRvIGNoYW5nZSBvdGhlciBmaWVsZHMgb2YgdGhlIGJ1ZmZlci4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0wNyAxNDoxODowOCArMDEwMCAgQXVyw6lsaWVuIFphbmVsbGkgPGF1cmVsaWVuLnphbmVsbGlAcGFycm90LmNvbT4KKworCSogZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYzoKKwkqIGdzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmg6CisJICB2aWRlb3BhcnNlOiBjYWNoZSB2aWRlbyBpbmZvIGluIGluc3RhbmNlCisJICBUbyBhdm9pZCBpbml0aWFsaXppbmcgYW5kIGZpbGxpbmcgdmlkZW8gaW5mbyBlYWNoIHRpbWUgd2UgbmVlZCBpdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAyNzAKKworMjAxNi0wMS0yOCAxNTozODo0NSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtZXRhZGF0YS5jOgorCSogZ3N0L214Zi9teGZ1bC5jOgorCSogZ3N0L214Zi9teGZ1bC5oOgorCSAgbXhmbXV4OiBXcml0ZSBUaGlzIEdlbmVyYXRpb24gVUlEIGludG8gdGhlIElkZW50aWZpY2F0aW9uIG1ldGFkYXRhCisJICBJdCdzIHJlcXVpcmVkIGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQgYW5kIHdlIGZvcmdvdCB0byBhY3R1YWxseSB3cml0ZSBpdCB0bworCSAgdGhlIGZpbGUgYWx0aG91Z2ggd2Ugc3RvcmVkIGl0IGluIHRoZSBkYXRhIHN0cnVjdHVyZXMuCisKKzIwMTYtMDEtMjggMTU6Mjk6MDEgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbWV0YWRhdGEuYzoKKwkgIG14Zm1ldGFkYXRhOiBBZGQgd29ya2Fyb3VuZCBmb3IgZmZtcGVnIG9ubHkgd3JpdGluZyBvbmUgVmlkZW8gTGluZSBNYXAgdmFsdWUKKwkgIGh0dHBzOi8vZmZtcGVnLm9yZy9waXBlcm1haWwvZmZtcGVnLWRldmVsLzIwMTYtSmFudWFyeS8xODgyMDIuaHRtbAorCisyMDE1LTEwLTE0IDIxOjEzOjU3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbG1peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xzdGVyZW9taXguYzoKKwkqIGV4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYzoKKwkqIGdzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuaDoKKwkqIGdzdC9jb21wb3NpdG9yL2NvbXBvc2l0b3IuYzoKKwkgIHZpZGVvYWdncmVnYXRvcjogZG9uJ3QgZG8gY2FwcyBwcm9jZXNzaW5nIHRoYXQgaXMgbm90IG92ZXJyaWRhYmxlCisJICBBbGxvd3MgdGhlIHN1YmNsYXNzIHRvIGNvbXBsZXRlbHkgb3ZlcnJpZGUgdGhlIGNob3NlbiBzcmMgY2Fwcy4KKwkgIFRoaXMgaXMgbmVlZGVkIGFzIHZpZGVvYWdncmVnYXRvciBnZW5lcmFsbHkgaGFzIG5vIGlkZWEgZXhhY3RseQorCSAgd2hhdCBvcGVyYXRpb24gaXMgYmVpbmcgcGVyZm9ybWVkLgorCSAgLSBBZGRzIGEgZml4YXRlX2NhcHMgdmZ1bmMgZm9yIGZpeGF0aW9uCisJICAtIE1lcmdlcyBnc3RfdmlkZW9fYWdncmVnYXRvcl91cGRhdGVfY29udmVydGVycygpIGludG8KKwkgIGdzdF92aWRlb2FnZ3JlZ2F0b3JfdXBkYXRlX3NyY19jYXBzKCkgYXMgd2UgbmVlZCBzb21lIG9mIGl0cyBpbmZvCisJICBmb3IgcHJvcGVyIGNhcHMgaGFuZGxpbmcuCisJICAtIFBhc3MgdGhlIGRvd25zdHJlYW0gY2FwcyB0byB0aGUgdXBkYXRlX2NhcHMgdmZ1bmMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyMDcKKworMjAxNi0wMS0yNyAyMDoyMzoyMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuYzoKKwkgIGdsY29sb3JiYWxhbmNlOiByZXR1cm4gSEFSRFdBUkUgZnJvbSBnZXRfYmFsYW5jZV90eXBlCisKKzIwMTYtMDEtMjcgMjA6MDQ6MDAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsc2lua2Jpbi5jOgorCSogZXh0L2dsL2dzdGdsc2lua2Jpbi5oOgorCSAgZ2xzaW5rYmluOiBhZGQgZ2xjb2xvcmJhbGFuY2UgZWxlbWVudAorCSAgVGhpcyBtYWtlcyBwbGF5YmluIG5vdCBwbHVnIHZpZGVvYmFsYW5jZSBhcyBnbGNvbG9yYmFsYW5jZSBhbHJlYWR5IGV4aXN0cyBhbmQKKwkgIGltcGxlbWVudHMgdGhlIEdzdENvbG9yQmFsYW5jZSBpbnRlcmZhY2UuCisKKzIwMTYtMDEtMjcgMTk6NTY6MzYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5Lmg6CisJICBnbDogbW92ZSBjb250cm9sIGJpbmRpbmcgcHJveHkgaW1wbGVtZW50YXRpb24gZnJvbSBnbHZpZGVvbWl4ZXIKKwkgIE90aGVyIGVsZW1lbnRzIG1heSBuZWVkIHRvIHVzZSBpdCdzIGZ1bmN0aW9uYWxpdHkKKworMjAxNi0wMS0yNyAxODoxNzowNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuYzoKKwkgIGdsY29sb3JiYWxhbmNlOiBjcmVhdGUgdGhlIHNoYWRlciBpZiBpdCBkb2Vzbid0IGV4aXN0IGluIHRoZSByZW5kZXIgY2FsbGJhY2sKKwkgIENoYW5naW5nIHRoZSBwcm9wZXJ0aWVzIG1heSByZXN1bHQgaW4gZ2xjb2xvcmJhbGFuY2UgbW92aW5nIGZyb20gcGFzc3Rocm91Z2ggdG8KKwkgIG5vbi1wYXNzdGhyb3VnaCBhbmQgd2Ugd2VyZW4ndCBjcmVhdGluZyB0aGUgc2hhZGVyIGluIHRoYXQgY2FzZS4KKworMjAxNi0wMS0yNSAxNjoyOTo0NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvcXQvZ3N0cXRzaW5rLmNjOgorCSAgcXQ6IHNwZWNpZnkgdGhhdCB3ZSBjdXJyZW50bHkgb25seSB0YWtlIDJEIHRleHR1cmVzCisJICBGaXhlcyBibGFjayBzY3JlZW4gdmlkZW8gcGxheWJhY2sgb24gYW5kcm9pZCB3aXRob3V0IGEgY2FwcyBmaWx0ZXIuCisKKzIwMTYtMDEtMjUgMTk6MTE6MzggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmM6CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuaDoKKwkgIGdsdmlkZW9mbGlwOiBpbmNvcnBvcmF0ZSB0aGUgYXNwZWN0IHJhdGlvIGludG8gdGhlIHNjYWxlX3ggY2FsY3VsYXRpb25zCisJICAxLiBPdGhlcndpc2Ugcm90YXRpbmcgdGhlIHZpZGVvIHdpbGwgY2xpcCBhbmQgc2hvdyBibGFjayBiYXJzIGR1ZSB0bworCSAgZ2x0cmFuc2Zvcm1hdGlvbidzIGltcGxlbWVudGF0aW9uLgorCSAgMi4gVGhlIG90aGVyIG9wdGlvbiBvZiBtYWtlIGdsdHJhbnNmb3JtYXRpb24gYXNwZWN0LWFnbm9zdGljIHByb2R1Y2VzCisJICBpbmNvcnJlY3Qgb3V0cHV0IHdpdGggcGVyc3BlY3RpdmUgdHJhbnNmb3JtYXRpb25zLgorCisyMDE2LTAxLTI3IDE0OjM2OjM2ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBhY3R1YWxseSBzZXQgdGhlIGNvbmZpZ3VyZWQgZnJhbWVyYXRlCisJICBBY3R1YWxseSBzZXQgdGhlIGNvbmZpZ3VyZWQgZnJhbWVyYXRlLiBCZWZvcmUgd2Ugb25seSB1c2VkIHRvIHNldCB0aGUgZmlyc3QKKwkgIG1hdGNoaW5nIGZyYW1lcmF0ZSByYW5nZS4gT24gaU9TIHdoZXJlIHRoZSBjYW1lcmEgcmVwb3J0cyByYW5nZXMgWzIsIDYwXSwgd2UKKwkgIHVzZWQgdG8gY29uZmlndXJlIHRoZSBjYW1lcmEgdG8gb3V0cHV0IGFueXRoaW5nIGJldHdlZW4gMiBhbmQgNjBmcHMuCisKKzIwMTYtMDEtMjUgMjI6MzA6MjkgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmg6CisJICBvcGVuY3Y6IGFkZCBtYXNrIHByb3BlcnR5IHRvIGN2bGFwbGFjZQorCSAgQWRkIGEgIm1hc2siIHByb3BlcnR5IHRoYXQgc2V0cyB3aGV0aGVyIHRoZSBlZGdlcyBieSBjdkxhcGxhY2Ugc2hvdWxkIGJlCisJICB1c2VkIGFzIGEgbWFzayBvbiB0aGUgb3JpZ2luYWwgaW5wdXQgb3Igbm90LiBUaGUgc2FtZSB3YXkgdGhlIG9yaWdpbmFsCisJICBpbWFnZSBpcyBjb3BpZWQgdG8gdGhlIGVkZ2VzIGluIGVkZ2VkZXRlY3QuCisKKzIwMTYtMDEtMjUgMjE6NDI6NTIgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuaDoKKwkgIG9wZW5jdjogYWRkIG1hc2sgcHJvcGVydHkgdG8gY3Zzb2JlbAorCSAgQWRkIGEgIm1hc2siIHByb3BlcnR5IHRoYXQgc2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBkZXJpdmF0aXZlIGVkZ2VzCisJICBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdC4gVGhlIHNhbWUgd2F5CisJICB0aGUgb3JpZ2luYWwgaW1hZ2UgaXMgYWRkZWQgdG8gdGhlIGVkZ2VzIGluIGVkZ2VkZXRlY3QuCisKKzIwMTYtMDEtMjUgMTU6MTk6MzcgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5jcHA6CisJICBvcGVuY3Y6IHVwZGF0ZSBkZXByZWNhdGVkIGZ1bmN0aW9uIGluIHNraW5kZXRlY3QKKwkgIGN2Q3Z0UGl4VG9QbGFuZSgpIGhhcyBiZWVuIGRlcHJlY2F0ZWQgaW4gT3BlbkNWIDMuMCwgYW5kIGN2U3BsaXQoKSBpcyB0aGUKKwkgIHN1Z2dlc3RlZCByZXBsYWNlbWVudC4gU2luY2UgY3ZTcGxpdCgpIGlzIGF2YWlsYWJsZSBpbiBPcGVuQ1YgMi40LCBpdCBpcworCSAgc2FmZSBhbmQgY2F1dGlvdXMgdG8gdXBkYXRlIHRoZSBmdW5jdGlvbiB1c2FnZSBiZWZvcmUgaXQgYmVjb21lcyBhbiBpc3N1ZS4KKworMjAxNi0wMS0yNSAxMTo0Mzo1OSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuaDoKKwkgIG9wZW5jdjogZml4IGN2bGFwbGFjZQorCSAgY3ZsYXBsYWNlIHdhcyBhbHNvIGFmZmVjdGVkIGJ5IHRoZSBzaWxlbnQgY2hhbmdlIGluIE9wZW5DViBBUEksIHNhbWUgYXMKKwkgIGN2c29iZWwuIEl0IGhhc24ndCBiZWVuIHdvcmtpbmcgZm9yIGEgd2hpbGUuIEl0IHdvdWxkIHJldHVybiBhIHBsYWluIGJsYWNrCisJICBpbWFnZS4gVGhpcyBjb21taXQgdXBkYXRlcyB0aGUgdXNhZ2Ugb2YgY3ZMYXBsYWNlIGJ5IHVzaW5nIGN2Q3Z0Q29sb3IgdG8KKwkgIGNyZWF0ZSB0aGUgZ3JheXNjYWxlIGludGVybWVkaWF0ZSBpbWFnZSB0byBwcm9jZXNzLiBUaGlzIGFsc28gbWVhbnMgdGhlcmUKKwkgIGlzIG5vIG5lZWQgYW55bW9yZSB0byB1c2UgR3N0QmFzZVRyYW5zZm9ybSdzIHRyYW5zZm9ybV9jYXBzLCBzaW5jZSB0aGUgcGFkcworCSAgYXJlIFJHQi4KKworMjAxNi0wMS0yNSAxMzozMzowOSArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY1cGFyc2UuYzoKKwkgIGgyNjVwYXJzZTogRml4IGJ1ZmZlciBsZWFrIHdoZW4gc3BzIGlzIG5vdCBwcmVzZW50CisJICBXaGVuIHNwcyBkYXRhIGlzIE5VTEwsIHRoZSBidWZmZXIgYWxsb2NhdGVkIGFuZCBtYXBwZWQgaXMgbm90IGJlaW5nIGZyZWVkLgorCSAgSW4gdGhpcyBzY2VuYXJpbyB0aGVyZSBpcyBubyBuZWVkIHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgYXMgd2UgYXJlIHN1cHBvc2VkIHRvIHJldHVybiBOVUxMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTA3MAorCisyMDE2LTAxLTI1IDEyOjA1OjEyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jOgorCSAgaDI2NXBhcnNlOiBGaXggYnVmZmVyIG1lbW9yeSBsZWFrLgorCSAgV2hpbGUgc2V0dGluZyBjYXBzLCBjb2RlY19kYXRhIGJ1ZmZlciBpcyBtYXBwZWQsIGJ1dCBub3QgYmVpbmcgdW5tYXBwZWQKKwkgIGxlYWRpbmcgdG8gbWVtb3J5IGxlYWtzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MTA3MAorCisyMDE2LTAxLTIzIDE3OjEwOjUxICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdnNvYmVsLmg6CisJICBvcGVuY3Y6IGZpeCBjdnNvYmVsCisJICBjdnNvYmVsIGhhbid0IGJlZW4gd29ya2luZyBmb3IgYSB3aGlsZSBkdWUgdG8gYSBzaWxlbnQgY2hhbmdlIGluIE9wZW5DVgorCSAgQVBJLiBJdCB3b3VsZCByZXR1cm4gYSBwbGFpbiBibGFjayBpbWFnZS4gVGhpcyBjb21taXQgdXBkYXRlcyB0aGUgdXNhZ2UKKwkgIG9mIGN2U29iZWwgYnkgdXNpbmcgY3ZDdnRDb2xvciB0byBjcmVhdGUgdGhlIGdyYXlzY2FsZSBpbWFnZSB0byBwcm9jZXNzLgorCSAgVGhpcyBhbHNvIG1lYW5zIHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIEdzdEJhc2VUcmFuc2Zvcm0ncyB0cmFuc2Zvcm1fY2FwcworCSAgYW55bW9yZSwgc2luY2UgdGhlIHBhZHMgY2FuIGJlIFJHQi4KKworMjAxNi0wMS0yMyAwNTozMDowNSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogcGtnY29uZmlnL01ha2VmaWxlLmFtOgorCSAgcGtnLWNvbmZpZzogUHJvcGVybHkgdmVyc2lvbiBhbmQgaW5zdGFsbCBiYXNlL2F1ZGlvL3ZpZGVvIC5wYyBmaWxlcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDczMyNjMTcKKworMjAxNi0wMS0yMiAxNjo0MzowMyArMDAwMCAgQWxleCBBc2hsZXkgPGFsZXguYXNobGV5QHlvdXZpZXcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBmaXggbGVhayBvZiBzdHJlYW0tPmludGVybmFsX3BhZAorCSAgVGhlIGZ1bmN0aW9uIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fdXBkYXRlX3NvdXJjZSgpIGZ1bmN0aW9uIGNyZWF0ZXMKKwkgIGEgbmV3IEdzdFBhZCBjYWxsZWQgaW50ZXJuYWxfcGFkLiBUaGlzIHBhZCBpcyBub3QgZnJlZWQgd2hlbiByZWxlYXNpbmcKKwkgIHRoZSBzdHJlYW0uCisJICBUaGUgc29sdXRpb24gaXMgdG8gc2V0IEdTVF9QQURfRkxBR19ORUVEX1BBUkVOVCBzbyB0aGF0IHRoZSBjaGFpbgorCSAgZnVuY3Rpb25zIGRvIG5vdCBnZXQgY2FsbGVkIHdoZW4gdGhlIHBhZCBoYXMgbm8gcGFyZW50IGFuZCB0aGVuCisJICByZW1vdmUgdGhlIHBhcmVudCBpbiB0aGUgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlKCkgZnVuY3Rpb24uIFRoaXMKKwkgIGNhdXNlcyB0aGUgcmVmY291bnQgb2YgdGhlIHBhZCB0byBiZSBzZXQgdG8gemVyby4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA5ODIKKworMjAxNi0wMS0yMSAyMjowMDo0NCArMDgwMCAgSm9obiBDaGFuZyA8cjk3OTIyMTUzQGdtYWlsLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IFVzZSBSZXByZXNlbnRhdGlvbkluZGV4IGluc3RlYWQgb2YgSW5pdGlhbGl6YXRpb24gdG8gZ2V0IHRoZSBVUkwgb2YgdGhlIFJlcHJlc2VudGF0aW9uSW5kZXgKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA5MzYKKworMjAxNi0wMS0yMiAxNzoyNToyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkgIGFoYzogRmFpbCBncmFjZWZ1bGx5IGlmIG91ciBjYWxsYmFjayBjbGFzcyBjYW4ndCBiZSBmb3VuZAorCSAgSW5zdGVhZCBvZiBqdXN0IGlnbm9yaW5nIHRoYXQgZXJyb3IgYW5kIHRoZW4gY2FsbGluZyBKTkkgZnVuY3Rpb25zIHdpdGggTlVMTCwKKwkgIHdoaWNoIHdpbGwga2lsbCB0aGUgdmlydHVhbCBtYWNoaW5lLgorCSAgVGhlIGVycm9yIGhhbmRsaW5nIGhlcmUgbmVlZHMgc29tZSBmdXJ0aGVyIGltcHJvdmVtZW50cyB0aG91Z2gsIGVycm9ycyBpbiBtb3JlCisJICBwbGFjZXMgYXJlIGp1c3QgaWdub3JlZC4KKworMjAxNi0wMS0yMiAxNzoyMjo0NyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkgIGFoYzogSW5pdGlhbGl6ZSBHRXJyb3IgcG9pbnRlciB3aXRoIE5VTEwKKwkgIE90aGVyd2lzZSB0aGVyZSB3aWxsIGJlIGFzc2VydGlvbnMuCisKKzIwMTYtMDEtMjIgMTc6MTg6NTggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBPbmx5IGZyZWUgR3N0QW1jQnVmZmVyIGlmIGl0J3Mgbm90IE5VTEwKKwkgIEFuZCBhbHNvIGZyZWUgaXQgb24gR0wgZXJyb3JzLgorCisyMDE2LTAxLTEzIDIyOjA1OjQ5ICswMTAwICBKdWxpZW4gTW91dHRlIDxqdWxpZW5AY3RvbmRlbWFuZC5jb20+CisKKwkqIHN5cy9kZWNrbGluay9nc3RkZWNrbGluay5jcHA6CisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmsuaDoKKwkqIHN5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc2luay5jcHA6CisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5jcHA6CisJKiBzeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5oOgorCSAgZGVja2xpbmt2aWRlb3NyYzogaW1wbGVtZW50IFJHQiBjYXB0dXJlIHN1cHBvcnQKKwkgIENvbWJpbmUgbW9kZSBhbmQgZm9ybWF0IHRvIGdlbmVyYXRlIGNhcHMgYW5kIHN1cHBvcnQgdGhlIGZsYWdzIGZyb20gVmlkZW9DaGFuZ2VkIGNhbGxiYWNrIHRvIHN1cHBvcnQgUkdCIGNhcHR1cmUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTk0CisKKzIwMTYtMDEtMjIgMTY6MjI6MDcgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmg6CisJICBhbWM6IEFkZCBhbiBhc3NlcnRpb24gZm9yIE5VTEwgR0Vycm9ycworCSAgU2hvdWxkIG5ldmVyIGhhcHBlbiEgQnV0IGFuIGFzc2VydGlvbiBpcyBiZXR0ZXIgdGhhbiBhIE5VTEwgcG9pbnRlcgorCSAgZGVyZWZlcmVuY2UuCisKKzIwMTYtMDEtMjIgMTY6MTQ6NDYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhaGM6IEZpeCBpbmRlbnRhdGlvbgorCisyMDE2LTAxLTIyIDE2OjEzOjQ1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNhdWRpb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2VuYy5jOgorCSAgYW1jOiBNZWRpYUNvZGVjOjpnZXRPdXRwdXRCdWZmZXIoKSBjYW4gcmV0dXJuIE5VTEwgd2l0aG91dCBleGNlcHRpb24KKwkgIEhhcHBlbnMgd2hlbiBkb2luZyB6ZXJvY29weSByZW5kZXJpbmcsIG9yIHdoZW4gcGFzc2luZyBhIHdyb25nIGluZGV4IHRvIGl0LgorCSAgSGFuZGxlIHRoaXMgcHJvcGVybHkgZm9yIHplcm9jb3B5IHJlbmRlcmluZywgZmFpbCBwcm9wZXJseSBmb3IgdGhlIG90aGVyCisJICBjYXNlcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA5NjEKKworMjAxNi0wMS0xNiAxODo1OTo0MyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW06CisJKiBwa2djb25maWcvTWFrZWZpbGUuYW06CisJICBiYXNlL2F1ZGlvL3ZpZGVvOiBJbnN0YWxsIGhlYWRlcnMgYW5kIHBrZy1jb25maWcgZmlsZXMKKwkgIFRoZXkgYXJlIHN0aWxsIGNvbnNpZGVyZWQgdW5zdGFibGUgQVBJIGJ1dCBpdCB3b3VsZCBiZSBnb29kIHRvIGdpdmUgdGhlbSBzb21lCisJICB3aWRlciB0ZXN0aW5nIGFscmVhZHkgdG8gbWFrZSBzdXJlIHRoZSBBUEkgaXMgdXNlZnVsLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDczMworCisyMDE2LTAxLTE2IDE4OjU2OjI2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBnc3QtbGlicy9nc3QvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJKiBnc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmg6CisJKiBnc3QvYXVkaW9taXhlci9NYWtlZmlsZS5hbToKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvYWdncmVnYXRvci5jOgorCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmg6CisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2ludGVybGVhdmUuaDoKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuaDoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLXVuaW5zdGFsbGVkLnBjLmluOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYXVkaW8ucGMuaW46CisJICBhdWRpbzogTW92ZSBhdWRpb2FnZ3JlZ2F0b3IgYmFzZSBjbGFzcyB0byBhIGxpYnJhcnkKKwkgIEl0J3MgdXNlZnVsIGVub3VnaCBhbHJlYWR5IHRvIGJlIHVzZWQgaW4gb3RoZXIgZWxlbWVudHMgZm9yIGF1ZGlvIGFnZ3JlZ2F0aW9uLAorCSAgbGV0J3MgZ2l2ZSBwZW9wbGUgdGhlIG9wcG9ydHVuaXR5IHRvIHVzZSBpdCBhbmQgZ2l2ZSBpdCBzb21lIEFQSSB0ZXN0aW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc2MDczMworCisyMDE2LTAxLTIxIDIzOjEzOjM2ICswMTAwICBIb2xnZXIgS2FlbGJlcmVyIDxob2xnZXIua0BlbGJlcmVyLmRlPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9nc3RnbHdpbmRvd19hbmRyb2lkX2VnbC5jOgorCSAgZ2x3aW5kb3c6IEZpeCBhbmRyb2lkIGJ1aWxkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwOTcyCisKKzIwMTYtMDEtMjIgMTM6NTE6NDkgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tOgorCSAgYXBwbGVtZWRpYTogdGV4dHVyZSBjYWNoZTogY29weSB0aGUgaW5wdXQgbWV0YXMKKwkgIENvcHkgdGhlIGlucHV0IG1ldGFzIHNvIGF2ZnZpZGVvc3JjIGFuZCB2dGVuYyBjYW4gZmFzdCBwYXRoIHRvIHVzaW5nCisJICBDVlBpeGVsQnVmZmVyKHMpIGV2ZW4gd2hlbiB1c2luZyBHTE1lbW9yeS4KKworMjAxNi0wMS0yMSAxMzo1MDo0NCAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJICBNZXJnZSBicmFuY2ggJ2FuZHJvaWQtaGFyZHdhcmUtY2FtZXJhJworCSAgVGhpcyBicmFuY2ggYWRkcyBzdXBwb3J0IGZvciBBbmRyb2lkIEhhcmR3YXJlIENhbWVyYSBBUEkgdGhyb3VnaCBhIG5ldworCSAgZWxlbWVudCBjYWxsZWQgYWhjc3JjLiBUaGlzIGlzIHRoZSAib2xkIiBBbmRyb2lkIENhbWVyYSBBUEksIHRoZW4gb25seQorCSAgQVBJIGF2YWlsYWJsZSBvbiBBbmRyb2lkIDQuWC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVmLmNnaT9pZD03Mzc3ODYKKworMjAxNi0wMS0wOCAxNjoxNjowOSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5jOgorCSAgYWhjc3JjOiBGaXggbGF0ZW5jeSByZXBvcnRpbmcKKwkgIEN1cnJlbnRseSBpdCB3YXMgd3JvbmdseSByZXBvcnRpbmcgbWluL21heCBhcyBiZWluZyB0aGUgc2hvcnRlc3QgYW5kCisJICBsb25nZXN0IHBvc3NpYmxlIGZyYW1lIGR1cmF0aW9uLiBUaGlzIGlzIG5vdCBob3cgbGF0ZW5jeSB3b3JrcyBpbgorCSAgR1N0cmVhbWVyLgorCSAgRml4IGJ5IHJlcG9ydGluZyBtaW4gbGF0ZW5jeSBhcyBiZWluZyB0aGUgbG9uZ2VzdCBwb3NzaWJsZSBkdXJhdGlvbiBvZgorCSAgb25lIGZyYW1lLiBBcyB3ZSBkb24ndCBrbm93IGhvdyBtYW55IGJ1ZmZlcnMgdGhlIHN0YWNrIGNhbiBhY2N1bXVsYXRlLCB3ZQorCSAgc2ltcGx5IGFzc3VtZSB0aGF0IG1heCBsYXRlbmN5IGlzIHRoZSBzYW1lICh0aGUgdXN1YWwgZGVmYXVsdCBiZWhhdmlvdXIpLgorCisyMDE1LTEyLTA3IDE0OjMxOjQwICswMTAwICBHZW9yZ2UgS2lhZ2lhZGFraXMgPGdlb3JnZS5raWFnaWFkYWtpc0Bjb2xsYWJvcmEuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5jOgorCSAgYWhjc3JjOiBmaXggZGVhZGxvY2sgd2hlbiBmbHVzaGluZworCSAgX2RhdGFfcXVldWVfaXRlbV9mcmVlKCkgY2FsbHMgZ3N0X2J1ZmZlcl91bnJlZigpLCB3aGljaAorCSAgY2FsbHMgZ3N0X2FoY19zcmNfYnVmZmVyX2ZyZWVfZnVuYygpLCB3aGljaCBjYWxscworCSAgZ19tdXRleF9sb2NrKCkgb24gc2VsZi0+bXV0ZXggYW5kIHRoZXJlIHlvdSBnby4uLiBkZWFkbG9jayEKKworMjAxNS0xMi0yNCAxMjo1MToxMyArMDkwMCAgSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlYy5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9vcmcvZnJlZWRlc2t0b3AvZ3N0cmVhbWVyL2FuZHJvaWRtZWRpYS9Hc3RBaGNDYWxsYmFjay5qYXZhOgorCSAgYWhjc3JjOiBwb3J0aW5nIGZyb20gMC4xMCB0byAxLjAKKworMjAxNS0xMi0yNCAxMjoxNDoyNCArMDkwMCAgSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZHZtL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2R2bS9nc3Rkdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0ZHZtLmg6CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWR2bS11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItZHZtLnBjLmluOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9jb20vZ3N0cmVhbWVyL0dzdEFoY0NhbGxiYWNrLmphdmE6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNjYWxsYmFjay5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZGNhbWVyYS5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmg6CisJICBtb3ZlIGFuZHJvaWRjYW1lcmEgaW50byBhbmRyb2lkbWVkaWEKKwkgIFRoaXMgY29tbWl0IGlzIGEgcGFydCBvZiBwb3J0bmcgYW5kcm9pZCBoYXJkd2FyZSBjYW1lcmEgZnJvbSAwLjEwIGltcGxlbWVudGF0aW9uLgorCSAgVG8gcHJlc2VydmUgaGlzdG9yeSBhbmQgZ2V0IGRpZmYgY2xlYXJseSwgdGhlIGludGVyZXN0aW5nIGZpbGVzIGFyZSBtb3ZlZCB0bworCSAgZGVwbG95bWVudCBkaXJlY3RvcnkgYW5kIHRoZSByZW1haW5pbmcgZmlsZXMgYXJlIHJlbW92ZWQuCisKKzIwMTMtMDEtMDcgMTg6Mjc6NDAgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogU2VwYXJhdGUgcmVsZWFzZSBhbmQgZnJlZSBBUElzCisKKzIwMTMtMDEtMDcgMTg6MjA6NDcgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2luZm8uYzoKKwkgIGFuZHJvaWRtZWRpYTogRml4IGdldF9sZXZlbCBhbmQgZ2V0X3Byb2ZpbGUgZXhjZXB0aW9uIGNoZWNraW5nIGJ5IG5vdCB1c2luZyByZXR1cm4KKworMjAxMy0wMS0wNyAxODoxOToyOCAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2luZm8uYzoKKwkgIGFuZHJvaWRtZWRpYTogQWRkIGV4dGVybiBnaW50IGRlY2xhcmF0aW9ucworCisyMDEzLTAxLTA3IDE4OjE4OjE4IC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdGR2bS5oOgorCSAgZ3N0ZHZtOiBGaXggR1NUX0RWTV9HRVRfU1RBVElDX0ZJRUxECisKKzIwMTItMTEtMjkgMjA6MTA6MTkgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogU21hbGwgcmVmYWN0b3IgaW4gY2FzZSBvcGVuIGRvZXNuJ3QgdGhyb3cgYW4gZXhjZXB0aW9uIGJ1dCByZXR1cm5zIG51bGwKKworMjAxMi0xMi0xMyAxNzo1Nzo1OCArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MKKworMjAxMi0xMi0xMyAxNzo1NjowMSArMDAwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9kdm0vTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0LWR2bS5oOgorCSogZ3N0LWxpYnMvZ3N0L2R2bS9nc3Rkdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0ZHZtLmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZGNhbWVyYS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2luZm8uYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlY2xpc3QuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuYzoKKwkgIGR2bTogUmVuYW1lIGdzdC1kdm0uW2NoXSB0byBnc3Rkdm0uW2NoXSBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBHU3RyZWFtZXIgY29kZQorCisyMDEyLTEyLTEzIDE3OjQwOjIyICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogZ3N0LWxpYnMvZ3N0L2R2bS9nc3QtZHZtLmM6CisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uaDoKKwkgIGR2bTogQWRkIG5ldyBmdW5jdGlvbiB0byBjaGVjayBpZiB3ZSBzdGFydGVkIGEgVk0gb3Igb25seSB1c2VkIGFuIGV4aXN0aW5nIG9uZQorCisyMDEyLTEyLTEzIDE3OjQwOjA0ICswMDAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuaDoKKwkgIGFuZHJvaWRtZWRpYTogTWFrZSBldmVyeXRoaW5nIGNvbXBpbGUgd2l0aCB0aGUgbmV3IHdyYXBwZXJzCisKKzIwMTItMTItMTMgMTI6MTM6MjcgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFjb2RlYy5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjaW5mby5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjbGlzdC5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWZvcm1hdC5oOgorCSAgYW5kcm9pZG1lZGlhOiBBZGQgcmVtYWluaW5nIGJpdHMgb2YgdGhlIEphdmEgd3JhcHBlcnMgdXNpbmcgbGliZ3N0ZHZtCisKKzIwMTItMTItMTMgMTI6MTM6MTIgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uaDoKKwkgIGR2bTogQWRkIHNvbWUgbW9yZSBoZWxwZXIgbWFjcm9zCisKKzIwMTItMTItMTIgMTg6MTA6MTMgKzAwMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuYzoKKwkgIGFuZHJvaWRtZWRpYTogUmVtb3ZlIGdfcmV0dXJuX2lmX2ZhaWxzKCkKKwkgIFRoaXMgaXMgbm90IHB1YmxpYyBBUEkgc28gaXQgaGFzIG5vIGFkdmFudGFnZSB0byBoYXZlIHRoZW0gaGVyZS4KKworMjAxMi0xMS0yOCAyMDo1Mzo1MSAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1tZWRpYS1tZWRpYWNvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLW1lZGlhLW1lZGlhY29kZWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtbWVkaWEtbWVkaWFmb3JtYXQuaDoKKwkgIGFuZHJvaWRtZWRpYTogVXNlIGdzdC1kdm0gYW5kIHJlZmFjdG9yIGphdmEgd3JhcHBlcnMgKFdJUCkKKwkgIE1vdmVkIHRoZSBqYXZhIHdyYXBwZXIgQVBJIGludG8gaXRzIG93biBmaWxlcyBhbmQgbWFkZSB1c2Ugb2YgdGhlCisJICBnc3QtZHZtIG1hY3Jvcy4gQWxzbyByZW5hbWVkIHRoZSBBUEkgdG8gaGF2ZSB0aGUgcHJvcGVyIG5hbWluZworCSAgY29udmVudGlvbiBhbmQgY29kaW5nIHN0eWxlIGluIG9yZGVyIHRvIG1hdGNoIHRoZSBvbmUgaW4gYW5kcm9pZGNhbWVyYS4KKwkgIFRoaXMgaXMgYSB3b3JrIGluIHByb2dyZXNzISAiYW5kcm9pZC9tZWRpYS9NZWRpYUNvZGVjTGlzdCIgaXMgc3RpbGwgbWlzc2luZworCSAgYW5kIHRoZSBhY3R1YWwgZWxlbWVudHMgaGF2ZSBub3QgYmVlbiBwb3J0ZWQgdG8gdXNlIHRoZSBuZXcgZnVuY3Rpb24gbmFtZXMuCisKKzIwMTItMTEtMjggMTU6MjY6NDkgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0Lmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgR19CRUdJTi9FTkRfREVDTFMgdG8gdGhlIC5oCisKKzIwMTItMTEtMjcgMTk6MjU6MDYgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9kdm0vTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvZHZtL2dzdC1kdm0uYzoKKwkqIGdzdC1saWJzL2dzdC9kdm0vZ3N0LWR2bS5oOgorCSogcGtnY29uZmlnL2dzdHJlYW1lci1kdm0tdW5pbnN0YWxsZWQucGMuaW46CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLWR2bS5wYy5pbjoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtZHZtLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtZHZtLmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGdzdC1kdm06IENyZWF0ZSBhIGdzdC1kdm0gbGlicmFyeSB1c2luZyBwYXJ0IG9mIGFuZHJvaWRjYW1lcmEKKworMjAxMi0xMS0yNyAxNzoyNDozNSAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBBZGRpbmcgYSBkZXZpY2UtbmFtZSBwcm9wZXJ0eQorCisyMDEyLTExLTIwIDE5OjU2OjIyIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYW5kcm9pZGNhbWVyYS54bWw6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5oOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIGVsZW1lbnQgZG9jdW1lbnRhdGlvbgorCisyMDEyLTExLTE5IDE4OjI1OjEyIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkgIGFuZHJvaWRjYW1lcmE6IFByZXR0aWZ5IHRoZSBnc3RhaGNjYWxsYmFjay5jIGdlbmVyYXRpb24gbGluZSBpbiB0aGUgbWFrZWZpbGUKKworMjAxMi0xMS0xNSAxMjozMzoyNiAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhbmRyb2ljYW1lcmE6IE1ha2Ugc3VyZSB0aGUgVE1QIGVudiB2YXIgZXhpc3RzIGFuZCBjaGVjayBmb3IgREVYIHZhciB0b28KKworMjAxMi0xMS0xNCAxMTozODo1MSAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJICBhbmRyb2lkY2FtZXJhOiBEbyBub3QgdXNlIGdzdF9saXN0X2ZyZWVfZnVsbCBzaW5jZSBpdCByZXF1aXJlcyBnbGliIDIuMjgKKworMjAxMi0xMS0xMiAxODo1OTo1NyAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkgIGFuZHJvaWRjYW1lcmE6IEFkZCBzbW9vdGgtem9vbSBwcm9wZXJ0eSBmb3Igc21vb3RoIHpvb21pbmcgZmVhdHVyZQorCisyMDEyLTExLTEyIDE4OjE5OjIwIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEFkZCBmb2NhbC1sZW5ndGgsIHZpZXctYW5nbGUgYW5kIHZpZGVvLXN0YWJpbGl6YXRpb24gcHJvcGVydGllcworCisyMDEyLTExLTEyIDE4OjE4OjExIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIHZpZGVvIHN0YWJpbGl6YXRpb24gQVBJCisKKzIwMTItMTEtMTIgMTY6Mzg6NDAgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIHByb3BlcnR5IHByb2JlIGZvciB0aGUgcGhvdG9ncmFwaHkgcHJvcGVydGllcworCisyMDEyLTExLTA5IDE4OjIxOjIxIC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IFNtYWxsIHJlZmFjdG9yCisKKzIwMTItMTEtMDkgMTY6NTc6MzAgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IHNtYWxsIG1lbWxlYWsKKworMjAxMi0xMS0wOSAxNjo1NTo1NyAtMDUwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBTdG9yZSBHUGFyYW1TcGVjIGZvciBwcm9wZXJ0aWVzIGFuZCB1c2UgdGhhdCBmb3IgdGhlIFByb3BlcnR5UHJvYmUgY29tcGFyaXNvbgorCisyMDEyLTExLTA5IDEyOjIzOjM3IC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEhhbmRsZSB6b29tIGNvbXBhcmlzb24gYmV0dGVyLCBhbmQgYXZvaWQgZmxvYXQgcHJlY2lzaW9uIGlzc3VlCisKKzIwMTItMTEtMDkgMTI6MjI6MTIgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IEVWIGNvbXBlbnNhdGlvbiBzdXBwb3J0CisKKzIwMTItMTEtMDcgMTk6MTY6MDUgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogSW1wbGVtZW50IG5ldyBHc3RQaG90b2dyYXBoeSBlbnVtcworCisyMDEyLTExLTA3IDE1OjM4OjE5IC0wNTAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IERvIG5vdCBhZHZlcnRpc2Ugem9vbSBjYXBhYmlsaXRpZXMgaWYgY2FtZXJhIGRvZXNuJ3Qgc3VwcG9ydCB6b29tCisKKzIwMTItMTEtMDcgMTU6Mzc6NDMgLTA1MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogQmUgTlVMTC1zYWZlIHdoZW4gYSBKTkkgbGlzdCBpcyByZXR1cm5lZAorCisyMDEyLTExLTAyIDE4OjA3OjI0IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IFVzZSBzdHJjbXAgb24gdGhlIEdQYXJhbVNwZWMgcHJvcGVydHkgbmFtZQorCSAgVXNlIHN0cmNtcCBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBwcm9wZXJ0eV9pZCBiZWNhdXNlIGl0J3Mgb3ZlcnJpZGVuCisKKzIwMTItMTEtMDIgMTg6MDA6NTUgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBJbXBsZW1lbnQgcHJvcGVydHkgcHJvYmUgZm9yIHpvb20gYW5kIGV2X2NvbXBlbnNhdGlvbgorCisyMDEyLTExLTAyIDE3OjAwOjQ1IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9jb20vZ3N0cmVhbWVyL0dzdEFoY0NhbGxiYWNrLmphdmE6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgYXV0b2ZvY3VzIHN1cHBvcnQKKworMjAxMi0xMS0wMiAxNjo1OTo0MiAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBPdmVycmlkZSBwcm9wZXJ0aWVzCisKKzIwMTItMTEtMDEgMTU6MjQ6MTIgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5yb2lkY2FtZXJhOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEdzdFBob3RvZ3JhcGh5IGludGVyZmFjZQorCisyMDEyLTExLTAxIDExOjU4OjMzIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkIG1vcmUgd3JhcHBlcnMgZm9yIHRoZSBDYW1lcmEuUGFyYW1ldGVycyBjbGFzcworCisyMDEyLTEwLTMxIDE0OjIxOjQ3IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IFNlbmQgcHJvcGVyIGVycm9yIHdoZW4gdW5hYmxlIHRvIG9wZW4gY2FtZXJhCisKKzIwMTItMTAtMzAgMTI6MTM6MTIgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogQWRkaW5nIGRldmljZS1vcmllbnRhdGlvbiBhbmQgZGV2aWNlLWZhY2luZyBwcm9wZXJ0aWVzCisKKzIwMTItMTAtMzAgMTE6MzU6MzYgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgZGV2aWNlIHByb3BlcnR5IGFuZCBwcm9wZXJ0eSBwcm9iZSBpdAorCisyMDEyLTEwLTMwIDEwOjEyOjA2IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEZpeCBtZW1sZWFrIGFuZCBsb3NlIG9mIGJ1ZmZlciBpZiB0aGUgZGF0YSBxdWV1ZSBpcyBmbHVzaGluZworCisyMDEyLTEwLTMwIDA5OjQ5OjM5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IENhbGxpbmcgc2V0X3ByZXZpZXdfY2FsbGJhY2sgd2l0aCBOVUxMIGZyZWVzIGFsbCB0aGUgYnVmZmVycyBpbiB0aGUgcXVldWUuCisJICBXZSBtdXN0IG5vdCBkbyBpdCBhdCB0aGUgc3RvcCBvdGhlcndpc2Ugd2UgbG9zZSBhbGwgb3VyIGJ1ZmZlcnMuIEl0J3MgYmVzdCB0byBkbworCSAgaXQgZHVyaW5nIHRoZSBjbG9zZSwgc28gd2UgZnJlZSB1cCB0aGUgcmVzb3VyY2VzLgorCisyMDEyLTEwLTMwIDA5OjQ5OjAzIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IERyb3AgZnJhbWVzIGlmIHdlIGRvbid0IGhhdmUgYSBjbG9jayBhbmQgdmFyIHJlbmFtZQorCisyMDEyLTEwLTMwIDA5OjQ1OjU1IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWNhbWVyYTogaWYgYnVmZmVyIHNpemUgaW5jcmVhc2VzLCB0aGVuIHJlYWRkIG5ldyBidWZmZXJzIHRvIHRoZSBxdWV1ZSBhbmQgZHJvcCBvbGQgb25lcworCSAgVGhlIG9uX3ByZXZpZXcgY2FsbGJhY2sgZ2V0cyBjYWxsZWQgd2l0aCBOVUxMIGlmIHRoZSBidWZmZXIgaW4gdGhlIHF1ZXVlIGlzCisJICB0b28gc21hbGwsIHNvIHdlIG5lZWQgdG8gaGFuZGxlIHRoZSBjYXNlIHdoZXJlIHRoZSBhcnJheSBpcyBOVUxMLiBBbHNvCisJICB0aGVyZSBpcyBhIGJ1ZyBpbiB0aGUgYW5kcm9pZCBzb3VyY2Ugd2hpY2ggbWFrZXMgaXQgZHJvcCBvbmUgb2YgdGhlIGJ1ZmZlcnMKKwkgIHNvIGlmIHdlIGhhZCA1IGJ1ZmZlcnMsIGFuZCB3ZSByZW5lZ290aWF0ZSB0byBhIGhpZ2hlciByZXNvbHV0aW9uLCB0aGVuIHdlJ2QKKwkgIG9ubHkgZ2V0IDQgY2FsbHMgdG8gb25fcHJldmlld19mcmFtZSB3aXRoIE5VTEwsIHdpdGggb25lIGJlaW5nIGRyb3BwZWQuCisJICBUaGlzIG1lYW5zIHdlIGNhbid0IHJlYWxsb2NhdGUgdGhlIGJ1ZmZlcnMgaW4gdGhlIGlmIChkYXRhID09IE5VTEwpIGNhc2UKKwkgIGJlY2F1c2Ugd2UgbWlnaHQgZW5kIHVwIHdpdGggMCBidWZmZXJzIGluIHRoZSBlbmQuCisKKzIwMTItMTAtMzAgMDk6NDQ6MzEgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jOgorCSAgYW5kcm9pZGNhbWVyYTogSWYgY2FsbGJhY2sgaXMgTlVMTCB0aGVuIHNldCBpdCB0byBOVUxMIGluIGpuaQorCisyMDE2LTAxLTIxIDEzOjQ2OjUyIC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogRml4IGRlYnVnIG91dHB1dAorCisyMDEyLTEwLTI2IDEyOjU3OjUwICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBDaG9zZSB0aGUgc21hbGxlc3QgcmFuZ2UgdGhhdCBjb250YWlucyB0aGUgdGFyZ2V0IGZyYW1lcmF0ZQorCisyMDEyLTEwLTI2IDEyOjQzOjA5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBJbXByb3ZlIG5lZ290aWF0aW9uCisJICBBbmQgbWFrZSBzdXJlIHdlIHNldCBhbiBGUFMgcmFuZ2UgZnJvbSB0aGUgc3VwcG9ydGVkIG9uZXMKKwkgIG5vdyBpbnN0ZWFkIG9mIGEgcG90ZW50aWFsbHkgdW5zdXBwb3J0ZWQgcmFuZ2UuCisKKzIwMTItMTAtMjYgMTI6MTk6NTUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEltcGxlbWVudCBMQVRFTkNZIHF1ZXJ5CisKKzIwMTItMTAtMjYgMTE6NTc6NDcgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IE1ha2Ugc3VyZSB3ZSBhbHdheXMgaGF2ZSBhIHZhbGlkIGNhbWVyYSBzb3VyY2UgaW5zdGFuY2UgaW4gdGhlIGJ1ZmZlciBmcmVlIGZ1bmN0aW9uCisKKzIwMTItMTAtMjYgMTE6NDY6MjMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZGNhbWVyYTogTWFrZSBzdXJlIHRvIG5vdCBjYWxsIGFueSBjYWxsYmFja3MgYWZ0ZXIgc3RvcHBpbmcgdGhlIGNhbWVyYQorCSAgRml4ZXMgc2VnZmF1bHRzIHdoZW4gcm90YXRpbmcgdGhlIGRldmljZSBmb3IgZXhhbXBsZS4KKworMjAxMi0xMC0yNCAxNToyNTo1NCAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkY2FtZXJhOiBGaXggdGltZXN0YW1waW5nIGlzc3VlCisKKzIwMTItMTAtMjQgMTM6NTk6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgY2FwcyBuZWdvdGlhdGlvbiBzdXBwb3J0CisKKzIwMTItMTAtMjQgMTA6NTU6NTIgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgQWRkIHN1cHBvcnQgZm9yIGdldGNhcHMgdGhhdCBwcm9iZXMgdGhlIGNhbWVyYSBmb3IgY2FwYWJpbGl0aWVzCisKKzIwMTItMTAtMjMgMTM6NTQ6NDYgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBEcm9wIHRoZSBmaXJzdCBidWZmZXIgdG8gaGF2ZSBwcm9wZXIgdGltZXN0YW1waW5nCisKKzIwMTItMTAtMjMgMTE6MTQ6MDAgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBGbHVzaCB0aGUgcXVldWUgd2hlbiB0aGUgc291cmNlIGlzIHN0b3BwZWQKKworMjAxMi0xMC0yMyAxMToxMzozNyAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkbWVkaWE6IEFsbG9jYXRlL2ZyZWUgdGV4dHVyZSB3aGVuIGNhbWVyYSBpcyBvcGVuL2Nsb3NlZAorCisyMDEyLTEwLTIzIDExOjEzOjEyIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIGFuZHJvaWRtZWRpYTogYWRkIGEgZ3N0X2FoY19zcmNfY2xvc2UgZnVuY3Rpb24KKworMjAxMi0xMC0yMyAxMToxMjoxOSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBhbmRyb2lkbWVkaWE6IEZpeCBzbWFsbCBpbmRlbnRhdGlvbiBpc3N1ZXMKKworMjAxMi0xMC0yMyAxMDoxMjo1MiAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJICBhbmRyb2lkbWVkaWE6IERpc2FibGUgcGx1Z2luIGlmIGFuZHJvaWQtc2RrIGlzbid0IGZvdW5kIGFuZCBkeW5hbWljYWxseSBzZWFyY2ggZm9yIHBsYXRmb3JtIHZlcnNpb24KKworMjAxMi0xMC0yMyAwOTowMTo1MCAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9jb20vZ3N0cmVhbWVyL0dzdEFoY0NhbGxiYWNrLmphdmE6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY2NhbGxiYWNrLmg6CisJICBhbmRyb2lkY2FtZXJhOiBBZGQgc3VwcG9ydCBmb3IgdXNpbmcgRGV4TG9hZGVyIHdpdGggRW1iZWRlZCBHc3RBaGNDYWxsYmFjay5qYXIKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkgIGFuZHJvaWRjYW1lcmE6IEZpeCBjb21waWxhdGlvbiBpc3N1ZXMKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZGNhbWVyYS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWRtZWRpYS5jOgorCSAgUmVtb3ZlIHByZXZpb3VzIGNydWZ0IGFuZCBjcmVhdGUgYW5kcm9pZGNhbWVyYSBwbHVnaW4KKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBGcmVlIHRoZSBidWZmZXJzIGFuZCByZWFkZCB0aGUgYXJyYXlzIHdoZW4gdGhlIHF1ZXVlIGlzIGNsZWFyZWQKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1kdm0uaDoKKwkgIEFkZCBhIEdTVF9EVk1fQ0FMTCBtYWNybyB0byBlYXNlIGZ1bmN0aW9uIGNhbGxpbmcgd2l0aCBleGNlcHRpb24gY2hlY2sKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkgIENhbGN1bGF0ZSB0aW1lc3RhbXAgYXQgcmVjZXB0aW9uIG9mIHRoZSBidWZmZXIsIG5vdCB3aGVuIHB1c2hpbmcgaXQgb3V0CisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgTWFrZSB0aGUgbnVtYmVyIG9mIGNhbGxiYWNrIGJ1ZmZlcnMgY29uZmlndXJhYmxlLCBhbmQgZGVsZXRlIHRoZWlyIGxvY2FsIHJlZgorCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5oOgorCSAgVXNlIEdzdERhdGFRdWV1ZSBpbnN0ZWFkIG9mIEdBc3luY1F1ZXVlIGZvciBzdG9yaW5nIGJ1ZmZlcnMKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJICBVc2UgdGhlIGJ1ZmZlcidzIGZyZWVfZnVuYyB0byBtYXAgYnl0ZUFycmF5IGRhdGEgd2l0aG91dCBtYWtpbmcgYSBjb3B5CisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdGFoY3NyYy5jOgorCSAgUmVtb3ZlIG9wZW4gZmFpbHVyZSB0ZXN0IGNvZGUgYW5kIGRlYnVnIGxvZworCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuYzoKKwkgIFVzZSBZVjEyIGFzIHRoZSBkZWZhdWx0IGZvcm1hdAorCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuaDoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkbWVkaWEuYzoKKwkgIEFkZCBhIGRlaW5pdCBmdW5jdGlvbiBhbmQgcmVtb3ZlIGpjbGFzcyByZWZlcmVuY2VzIGluIGNhc2Ugb2YgZXJyb3IKKworMjAxMi0xMC0xNyAxOTo0Mjo1OSAtMDQwMCAgWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKworCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYzoKKwkgIFN1cmZhY2VUZXh0dXJlIGNvbnN0cnVjdHVyZSBuZWVkcyB0ZXh0dXJlX2lkCisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWRtZWRpYS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0YWhjc3JjLmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3RhaGNzcmMuaDoKKwkgIEFkZCBhaGNzcmMgQ2FtZXJhIHNvdXJjZSBlbGVtZW50IHByb3RvdHlwZQorCisyMDEyLTEwLTE3IDE5OjQyOjU5IC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmM6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmg6CisJKiBzeXMvYW5kcm9pZGNhbWVyYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYzoKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oOgorCSAgQWRkIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhIChhbmQgZGVwcykgSk5JIHdyYXBwZXJzCisKKzIwMTItMTAtMTcgMTk6NDI6NTkgLTA0MDAgIFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWR2bS5jOgorCSogc3lzL2FuZHJvaWRjYW1lcmEvZ3N0LWR2bS5oOgorCSAgQWRkaW5nIERhbHZpayBWaXJ0dWFsIE1hY2hpbmUgcm91dGluZXMgYW5kIG1hY3JvcworCisyMDEyLTEwLTE3IDE3OjU2OjMzIC0wNDAwICBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorCisJKiBzeXMvYW5kcm9pZGNhbWVyYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hbmRyb2lkY2FtZXJhL2dzdC1hbmRyb2lkbWVkaWEuYzoKKwkgIGFuZHJvaWRtZWRpYTogQWRkIGFuZHJvaWRtZWRpYSBwbHVnaW4KKworMjAxNi0wMS0xNSAxNDozMTo1NCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3NwYW5kc3AvTWFrZWZpbGUuYW06CisJKiBleHQvc3BhbmRzcC9nc3RzcGFuZHNwLmM6CisJKiBleHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuYzoKKwkqIGV4dC9zcGFuZHNwL2dzdHRvbmVnZW5lcmF0ZXNyYy5oOgorCSAgc3BhbmRzcDogQWRkIHRvbmUgZ2VuZXJhdG9yCisKKzIwMTUtMDctMTQgMTM6NDA6NDYgKzA5MDAgIEh5dW5qdW4gS28gPHp6b29uLmtvQHNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmM6CisJICBtcGVndHNtdXg6IHNldCBub24tMCBwYXlsb2FkIGxlbmd0aCBpbiBQRVMgaGVhZGVyIGlmIHZpZGVvIEVTIHBhY2tldCBpcyBzbWFsbCBlbm91Z2gKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg1MDcKKworMjAxNS0wNy0xNCAxMzo0Mjo1NCArMDkwMCAgSHl1bmp1biBLbyA8enpvb24ua29Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYzoKKwkgIG1wZWd0c211eDogcmVzZXQgcGVzX2J5dGVzX3dyaXR0ZW4gd2hlbiBzdGFydGluZyB0byB3cml0ZSBuZXcgUEVTIHBhY2tldAorCSAgSW4gY2FzZSBvZiBhbiB1bmJvdW5kZWQgcGFja2V0ICh2aWRlbyB1c3VhbGx5KSwgcGVzX2J5dGVzX3dyaXR0ZW4gd2FzCisJICBubyByZXNldC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDg1MDcKKworMjAxNi0wMS0xOSAxNzowODo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYzoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uaDoKKwkgIG1wZWd0c211eDogYWRkIHN1cHBvcnQgZm9yIEguMjY1L0hFVkMgdmlkZW8KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDQzNjcKKworMjAxNi0wMS0xOSAxMzoyMDoyMyArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL01ha2VmaWxlLmFtOgorCSogZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmM6CisJKiBleHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaDoKKwkgIGdsOiBmaXggY29tcGlsZXIgd2FybmluZ3Mgd2l0aCBnY2MtNgorCSAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGVmZmVjdHMvZ3N0Z2xlZmZlY3RyZ2J0b2N1cnZlLmM6MjU6MDoKKwkgIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmg6MTc0OjMyOiBlcnJvcjogJ3hyYXlfY3VydmUnIGRlZmluZWQgYnV0IG5vdCB1c2VkCisJICBzdGF0aWMgY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgeHJheV9jdXJ2ZSA9IHsKKwkgIC4uLgorCisyMDE2LTAxLTE5IDA4OjM5OjU4ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuYW06CisJICBsaWJzOiBnLWk6IGZpeCBpbml0IHNlY3Rpb24gdG8gYXZvaWQgY29tcGlsZXIgd2FybmluZ3MKKwkgIC4uR3N0UGxheWVyLTEuMC5jOiBJbiBmdW5jdGlvbiDigJhtYWlu4oCZOgorCSAgLi5Hc3RQbGF5ZXItMS4wLmM6NTg3OjM6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uIOKAmGdzdF9pbml04oCZCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwMDkwCisKKzIwMTYtMDEtMTkgMTk6MTg6NDMgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGVuYy5jOgorCSAgYXBwbGVtZWRpYTogdnRlbmM6IGZpeCBidWlsZCBvbiBpT1MKKworMjAxNi0wMS0xOSAxNTo1MDoyMiArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZmFzc2V0c3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZW1lZGlhYnVmZmVyLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb2J1ZmZlci5jOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmg6CisJKiBzeXMvYXBwbGVtZWRpYS9xdGtpdHZpZGVvc3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tOgorCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZW5jLmM6CisJICBhcHBsZW1lZGlhOiBhbHdheXMgZmlsbCBHc3RCdWZmZXJzIHdpdGggR3N0TWVtb3J5CisJICBBbHdheXMgZmlsbCBidWZmZXJzIHdpdGggb3VyIGN1c3RvbSBtZW1vcnkuIFRoZSBjdXN0b20gbWVtb3J5IHdpbGwgYXZvaWQKKwkgIG1hcHBpbmcgQ1YvQ00gYnVmZmVycyB1bmxlc3MgbmVjZXNzYXJ5LgorCisyMDE1LTA0LTE5IDAwOjMwOjQ4ICswMzAwICBJbHlhIEtvbnN0YW50aW5vdiA8aWx5YS5rb25zdGFudGlub3ZAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb2J1ZmZlci5jOgorCSAgYXBwbGVtZWRpYTogaW1wbGVtZW50IGNvcHlpbmcgb2YgbWV0YQorCSAgQmVmb3JlIHRoaXMsIGJ1ZmZlcnMgd291bGQgbG9zZSB0aGVpciBDb3JlIFZpZGVvIC8gQ29yZSBNZWRpYSBtZXRhCisJICBvdmVyIGludGVydmlkZW8qIGJvdW5kYXJ5LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzIxNgorCisyMDE1LTA0LTAyIDIwOjA0OjE4ICswMzAwICBJbHlhIEtvbnN0YW50aW5vdiA8aWx5YS5rb25zdGFudGlub3ZAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmVtZWRpYWJ1ZmZlci5jOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9idWZmZXIuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb21lbW9yeS5jOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvbWVtb3J5Lmg6CisJKiBzeXMvYXBwbGVtZWRpYS9wbHVnaW4ubToKKwkgIGFwcGxlbWVkaWE6IGltcGxlbWVudCBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeQorCSAgSW1wbGVtZW50IGEgbmV3IG1lbW9yeSB0eXBlIHdyYXBwaW5nIENWUGl4ZWxCdWZmZXIuCisJICBUaGVyZSBhcmUgdHdvIGltbWVkaWF0ZSBhZHZhbnRhZ2VzOgorCSAgYSkgTWFrZSB0aGUgR3N0TWVtb3J5IGl0c2VsZiByZXRhaW4gdGhlIENWUGl4ZWxCdWZmZXIuIFByZXZpb3VzbHksCisJICB0aGUgY29udGFpbmluZyBHc3RCdWZmZXIgd2FzIHNvbGVseSByZXNwb25zaWJsZSBmb3IgdGhlIGxpZmV0aW1lIG9mCisJICB0aGUgYmFja2luZyBDVlBpeGVsQnVmZmVyLgorCSAgV2l0aCB0aGlzIGNoYW5nZSwgd2UgcmVtb3ZlIHRoZSBHU1RfTUVNT1JZX0ZMQUdfTk9fU0hBUkUgc28gdGhhdAorCSAgR3N0TWVtb3J5IG9iamVjdHMgYmUgcmVmZXJlbmNlZCBieSBtdWx0aXBsZSBHc3RCdWZmZXJzIChkb2luZyBhd2F5CisJICB3aXRoIHRoZSBuZWVkIHRvIGNvcHkuKQorCSAgYikgRGVsYXkgbG9ja2luZyBDVlBpeGVsQnVmZmVyIGludG8gQ1BVIG1lbW9yeSB1bnRpbCBpdCdzIGFjdHVhbGx5CisJICBtYXBwZWQgLS0gcG9zc2libHkgbmV2ZXIuCisJICBUaGUgQ1ZQaXhlbEJ1ZmZlciBvYmplY3QgaXMgc2hhcmVkIGFtb25nIHJlZmVyZW5jZXMsIHNoYXJlcyBhbmQKKwkgIChpbiBwbGFuYXIgZm9ybWF0cykgcGxhbmVzLCBzbyBhIHdyYXBwZXIgR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlcgorCSAgc3RydWN0dXJlIHdhcyBpbnRyb2R1Y2VkIHRvIG1hbmFnZSBsb2NraW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NzIxNgorCisyMDE2LTAxLTE5IDEyOjU2OjQwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5LmM6CisJICBhcHBsZW1lZGlhOiBpb3N1cmZhY2VtZW1vcnk6IGFsbG9jIHdpdGggZ19uZXcwCisJICAuLi5zaW5jZSB0aGUgYmFzZSBjbGFzcyBkb2Vzbid0IHVzZSBnX3NsaWNlIGFueW1vcmUKKworMjAxNi0wMS0wOCAxMTowNDoxMyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSAgZGFzaGRlbXV4OiBhZGRlZCBjaGVjayB0aGF0IGF2YWlsYWJpbGl0eVN0YXJ0VGltZSBpcyBwcmVzZW50IGZvciBsaXZlIHN0cmVhbXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2MDIKKworMjAxNS0xMS0wNCAxODoxNToyNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSAgYWRhcHRpdmVkZW11eDogaW1wcm92ZWQgZXJyb3IgbWVzc2FnZSBpZiBhdmFpbGFiaWxpdHlTdGFydFRpbWUgaXMgbWlzc2luZyBmb3IgYSBsaXZlIHN0cmVhbQorCSAgRm9yIGEgbGl2ZSBtcGQsIGlmIGF2YWlsYWJpbGl0eVN0YXJ0VGltZSBpcyBtaXNzaW5nLCBhZGFwdGl2ZSBkZW11eCBhc3NlcnRzCisJICB3aXRoOiBVbmV4cGVjdGVkIGNyaXRpY2FsL3dhcm5pbmc6IGdzdF9kYXRlX3RpbWVfdG9fZ19kYXRlX3RpbWU6IGFzc2VydGlvbgorCSAgJ2RhdGV0aW1lICE9IE5VTEwnIGZhaWxlZC4KKwkgIFRoaXMgcGF0Y2ggaW1wcm92ZXMgdGhlIGVycm9yIG1lc3NhZ2UgdG86CisJICBVbmV4cGVjdGVkIGNyaXRpY2FsL3dhcm5pbmc6IGdzdF9tcGRfY2xpZW50X3NlZWtfdG9fdGltZTogYXNzZXJ0aW9uCisJICAnY2xpZW50LT5tcGRfbm9kZS0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lICE9IE5VTEwnIGZhaWxlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzYwMgorCisyMDE2LTAxLTE0IDE4OjI3OjUwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jOgorCSAgdGVzdHM6IGFkYXB0aXZlLXN0cmVtYWluZzogZml4IG1lbW9yeSBsZWFrIGluIHRlc3RfaHR0cF9zcmMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2MDAKIAogMjAxNi0wMS0xNSAxMDo0OToxMiAtMDUwMCAgTWF0dCBDcmFuZSA8bWF0dGNyYW5lQHR5Y29pbnQuY29tPgogCkBAIC0xNCw2ICszOTExLDI3NSBAQAogCSAgZGVhZGxvY2suCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzYwNTUxCiAKKzIwMTYtMDEtMTYgMTc6MTQ6NTQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSAgZ2xmaWx0ZXI6IEZpcnN0IG1ha2UgY2FwcyB3cml0YWJsZSBpbiBmaXhhdGVfY2FwcygpLCB0aGVuIHRydW5jYXRlIHRoZW0KKwkgIFRydW5jYXRpbmcgcmVxdWlyZXMgd3JpdGFibGUgY2Fwcy4KKworMjAxNi0wMS0xNiAxNzoxMjoyOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogQ2FwcyBwYXNzZWQgdG8gZml4YXRlX2NhcHMoKSBhcmUgbm90IG93bmVkIGJ5IHVzIGFuZCBndWFyYW50ZWVkIHRvIGJlIGZpeGVkCisJICBTbyBkb24ndCB0cnkgdG8gZml4YXRlIHRoZW0sIHdoaWNoIHRha2VzIG93bmVyc2hpcCBhbmQgc3RlYWxzIHRoZW0gZnJvbQorCSAgYmFzZXRyYW5zZm9ybS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OTYKKworMjAxNi0wMS0xNiAxNjo1NTo0MiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5jOgorCSAgUmV2ZXJ0ICJnbHBvb2w6IGZpeCBjYXBzIHJlZmNvdW50IGlzc3VlIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCAzYmRjZGVkZmEwMGI4N2YxZGI1MDUyMTg3ODkxNzgzMThhMTZjNzQzLgorCSAgZ3N0X2NhcHNfcmVwbGFjZSgpIHRha2VzIGEgbmV3IHJlZmVyZW5jZSBhbHJlYWR5LCBpZiB0aGVyZSBpcyBhIHByb2JsZW0gdGhlbgorCSAgaXQgaXMgZWxzZXdoZXJlLiBBbmQgdGhlcmUgYXJlIGEgZmV3IHByb2JsZW1zLCBzZWUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjA2OTYKKworMjAxNi0wMS0xNSAxNjoxMDowMiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuYzoKKwkgIHJ0cGgyNjVkZXBheTogZml4IHVubmVlZGVkIHN1Yi1idWZmZXIgY3JlYXRpb24KKwkgIFdlIGNyZWF0ZSBhIHN1Yi1idWZmZXIganVzdCB0byBjb3B5IG92ZXIgaXRzIG1ldGFzIGFuZCB0aGVuIHRocm93IGl0CisJICBhd2F5IGltbWVkaWF0ZWx5LCBqdXN0IHVzZSB0aGUgb3JpZ2luYWwgaW5wdXQgYnVmZmVyIGRpcmVjdGx5LgorCisyMDE2LTAxLTE1IDE1OjU2OjU5ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvcnRwL2dzdHJ0cGgyNjVwYXkuYzoKKwkgIHJ0cGgyNjVwYXk6IGFkZCAic2VuZCBWUFMvU1BTL1BQUyB3aXRoIGV2ZXJ5IGtleSBmcmFtZSIgbW9kZQorCSAgSXQncyBub3QgZW5vdWdoIHRvIGhhdmUgdGltZW91dCBvciBldmVudCBiYXNlZCBWUFMvU1BTL1BQUyBpbmZvcm1hdGlvbgorCSAgc2VudCBpbiBSVFAgcGFja2V0cy4gVGhlcmUgYXJlIHNvbWUgc2NlbmFyaW9zIHdoZW4ga2V5IGZyYW1lcyBtYXkgYXBwZWFyCisJICBtb3JlIGZyZXF1ZW50bHkgdGhhbiBvbmNlIGEgc2Vjb25kLCBpbiB3aGljaCBjYXNlIHRoZSBtaW5pbXVtIHRpbWVvdXQKKwkgIGZvciAiY29uZmlnLWludGVydmFsIiBvZiAxIHNlY29uZCBmb3Igc2VuZGluZyBWUFMvU1BTL1BQUyBpc24ndCBlbm91Z2guCisJICBJdCBtaWdodCBhbHNvIGJlIGRlc2lyYWJsZSBpbiBnZW5lcmFsIHRvIG1ha2Ugc3VyZSB0aGUgVlBTL1NQUy9QUFMgaXMKKwkgIGF2YWlsYWJsZSB3aXRoIGV2ZXJ5IGtleWZyYW1lIChwYWNrZXQgbG9zcyBhc2lkZSksIHNvIHJlY2VpdmVycyBjYW4KKwkgIGFjdHVhbGx5IHBpY2sgdXAgZGVjb2RpbmcgaW1tZWRpYXRlbHkgZnJvbSB0aGUgZmlyc3Qga2V5ZnJhbWUgaWYKKwkgIFZQUy9TUFMvUFBTIGlzIG5vdCBzaWduYWxlZCBvdXQgb2YgYmFuZC4KKwkgIFRoaXMgY29tbWl0IGFkZHMgdGhlIHBvc3NpYmlsaXR5IHRvIHNlbmQgVlBTL1NQUy9QUFMgd2l0aCBldmVyeSBrZXkgZnJhbWUuCisJICBUaGlzIG1vZGUgY2FuIGJlIGVuYWJsZWQgYnkgc2V0dGluZyAiY29uZmlnLWludGVydmFsIiBwcm9wZXJ0eSB0byAtMS4gSW4KKwkgIHRoaXMgY2FzZSB0aGUgcGF5bG9hZGVyIHdpbGwgYWRkIFZQUywgU1BTIGFuZCBQUFMgYmVmb3JlIGV2ZXJ5IGtleSAoSURSKQorCSAgZnJhbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODkyCisKKzIwMTYtMDEtMTUgMTU6MTk6NDEgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC9ydHAvZ3N0cnRwaDI2NXBheS5jOgorCSogZ3N0L3J0cC9nc3RydHBoMjY1cGF5Lmg6CisJICBydHBoMjY1cGF5OiBjaGFuZ2UgY29uZmlnLWludGVydmFsIHByb3BlcnR5IHR5cGUgZnJvbSB1aW50IHRvIGludAorCSAgVGhpcyB3YXkgd2UgY2FuIHVzZSAtMSBhcyBzcGVjaWFsIHZhbHVlLCB3aGljaCBpcyBuaWNlciB0aGFuIE1BWFVJTlQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODkyCisKKzIwMTYtMDEtMTMgMDk6NTE6MjAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmg6CisJICBhZGFwdGl2ZWRlbXV4OiByZXBsYWNlIGdob3N0cGFkIHdpdGggYSBzdGFuZGFyZCBwYWQKKwkgIEhhbmRsaW5nIHRoZSBnaG9zdHBhZCBhbmQgaXRzIGludGVybmFsIHBhZCB3YXMgY2F1c2luZyBtb3JlIGlzc3VlcworCSAgdGhhbiBoZWxwaW5nIGJlY2F1c2Ugb2YgdGhlaXIgY291cGxlZCBhY3RpdmF0aW9uL2RlYWN0aXZhdGlvbgorCSAgYWN0aW9ucy4KKwkgIEFzIHdlIGhhdmUgdG8gaW5zdGFsbCBjdXN0b20gY2hhaW4sZXZlbnQgYW5kIHF1ZXJ5IGZ1bmN0aW9ucyBpdCBpcworCSAgYmV0dGVyIHRvIHVzZSBhIGZsb2F0aW5nIHNpbmsgcGFkIGludGVybmFsbHkgaW4gdGhlIGRlbXV4ZXIgYW5kIGp1c3QKKwkgIHVzZSB0aG9zZSBwYWQgZnVuY3Rpb25zIHRvIHB1c2ggdGhyb3VnaCBhIHN0YW5kYXJkIHBhZCBpbiB0aGUgZGVtdXhlcgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk1MQorCisyMDE1LTExLTExIDE3OjI0OjMzICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZG8gbm90IGZsdXNoIHRoZSBpbnB1dCBwYWQKKwkgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fY2xlYXJfZW9zX2FuZF9mbHVzaF9zdGF0ZSgpIGZ1bmN0aW9uIHdpbGwgZG8KKwkgIGFsbCB0aGUgbmVjZXNzYXJ5IGNsZWFuaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk1MQorCisyMDE2LTAxLTE1IDExOjQ0OjUyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3Qvc2VnbWVudGNsaXAvZ3N0dmlkZW9zZWdtZW50Y2xpcC5jOgorCSAgdmlkZW9zZWdtZW50Y2xpcDogZmFpbCB0byBzZXRfY2FwcyBpZiBwcm9ibGVtIGluIGNhcHMgc3RydWN0dXJlCisJICBnc3RfdmlkZW9fc2VnbWVudF9jbGlwX3NldF9jYXBzICgpIHNob3VsZCByZXR1cm4gRkFMU0UgaWYgdGhlcmUgd2FzIGEKKwkgIHByb2JsZW0gcmVhZGluZyB0aGUgZnJhbWVyYXRlIHZhbHVlcyBmcm9tIHRoZSBjYXBzIHN0cnVjdHVyZS4KKworMjAxNi0wMS0xNSAxNzowMDo1NSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xxdWVyeS5jOgorCSAgZ2xxdWVyeTogcHJvdmlkZSBjb21wYXQgZGVmaW5pdGlvbiBmb3IgR0xfUVVFUllfUkVTVUxUCisJICBlLmcuIGFuZHJvaWQgZG9lc24ndCBoYXZlIGl0CisJICBXaGlsZSB3ZSdyZSBoZXJlIG1vdmUgYSBzdGF0ZSBzcGVjaWZpYyBhc3NlcnRpb24gYWZ0ZXIgdGhlIHN1cHBvcnRlZCBjaGVjay4KKwkgIFJlbW92ZXMgYW4gYXNzZXJ0aW9uIG9uIEdMRVMKKworMjAxNi0wMS0xNSAxNjowNzoyNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2dzdGdsX2NvbXBhdC5oOgorCSAgZ2w6IGFkZCBjb21wYXRpYmlsaXR5IGRlZmluaXRpb24gb2YgR0xpbnQ2NAorCSAgZS5nLiBhbnJkb2lkIGRvZXNuJ3QgaGF2ZSBpdAorCisyMDE2LTAxLTA4IDIyOjE5OjA2ICswMzAwICBTZXJnZXkgQm9yb3Zrb3YgPHNlcmdlLmJvcm92a292QGdtYWlsLmNvbT4KKworCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkgIHFtbDogTWFyayBtYXRlcmlhbCBkaXJ0eSB3aGVuIHRleHR1cmUgYnVmZmVyIGlzIHVwZGF0ZWQKKwkgIFF0IG1pZ2h0IG5vdCByZWRyYXcgdGhlIHNjZW5lIG90aGVyd2lzZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgyODYKKworMjAxNi0wMS0xNSAxNDowMDo1NiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJICBnbHBvb2w6IGZpeCBjYXBzIHJlZmNvdW50IGlzc3VlCisJICBUaGUgY2FwcyBhcmUgZnJvbSBhbiBhbGxvY2F0aW9uIHF1ZXJ5IHdoaWNoIGFyZSB0cmFuc2ZlciBub25lIGJ1dCB3ZXJlIGJlaW5nCisJICB0cmVhdGVkIGFzIHRyYW5zZmVyIGZ1bGwuCisKKzIwMTYtMDEtMTEgMTM6MzA6MDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogbG9nIHRoZSB0aW1lIGZvciBnbFRleFN1YkltYWdlL2dsUmVhZFBpeGVscworCisyMDE2LTAxLTA4IDE4OjM2OjU0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYWxsX2Z1bmN0aW9ucy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9xdWVyeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHF1ZXJ5Lmg6CisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvLmdpdGlnbm9yZToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xxdWVyeS5jOgorCSAgZ2w6IGFkZCBhIGdzdGdscXVlcnkgb2JqZWN0IGZvciBhcmJpdHJhcnkgR0wgcXVlcmllcworCSAgQ3VycmVudGx5IG9ubHkgR0xfVElNRV9FTEFQU0VEIGFuZCBHTF9USU1FU1RBTVAgYXJlIHN1cHBvcnRlZAorCisyMDE2LTAxLTExIDE3OjIyOjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5oOgorCSAgZ2xkZWJ1ZzogaW1wbGVtZW50IGEgZGVsYXllZCBkZWJ1ZyBzeXN0ZW0KKwkgIFRoZSBtZXNzYWdlcyBhcmUgc3RvcmVkIGJ5IGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnKCkgYW5kIG91dHB1dCBsYXRlcgorCSAgYnkgYSBjb3JyZXNwb25kaW5nIHN0b3JlKCksIG91dHB1dCgpIG9yIGFuIHVuc2V0KCkvZnJlZSgpLgorCSAgU29tZSB3cmFwcGVyIG1hY3JvcyBhcmUgcHJvdmlkZWQgdG8gYXZvaWQgY2FsbGVycyBleHBsaWNpdGx5IHVzaW5nIF9fRklMRV9fLAorCSAgR1NUX0ZVTkNUSU9OIGFuZCBfX0xJTkVfXworCisyMDE2LTAxLTExIDE3OjI2OjA4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJICBnbGRlYnVnOiB1c2UgZ3N0X2luZm9fdmFzcHJpbnRmIGluIGluc2VydF9kZWJ1Z19tYXJrZXIoKQorCSAgQWxsb3dzIGV4cGFuc2lvbiBvZiBHU1RfUFRSX0ZPUk1BVCBhbmQgR1NUX1NFR01FTlRfRk9STUFUIGFyZ3VtZW50cy4KKworMjAxNi0wMS0xNSAxMToyMjo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvTWFrZWZpbGUuYW06CisJKiBleHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuYzoKKwkqIGV4dC9nbC9nc3RnbHZpZGVvZmxpcC5oOgorCSogZXh0L2dsL2dzdG9wZW5nbC5jOgorCSAgZ2w6IGFkZCBhIHZpZGVvZmxpcCBlbGVtZW50CisJICBCZWhhdmVzIGV4YWN0bHkgdGhlIHNhbWUgYXMgdGhlIG5vbi1HTCB2aWRlb2ZsaXAgZWxlbWVudAorCisyMDE2LTAxLTE1IDAwOjA0OjIwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSAgZ2xmaWx0ZXI6IHJlY3JlYXRlIHRoZSBmYm8gb24gY2FwcyBjaGFuZ2VzCisJICBUaGUgd2lkdGgvaGVpZ2h0IG1heSBjaGFuZ2Ugd2hpY2ggcmVxdWlyZXMgcmVjcmVhdGluZyB0aGUgZGVwdGggYnVmZmVyLgorCisyMDE2LTAxLTE1IDAwOjAyOjQzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuaDoKKwkgIGdsYmFzZWZpbHRlcjogYWRkIGEgY2xhc3MgZnVuY3Rpb24gb24gc2V0X2NhcHMgKGZyb20gR0wpCisJICBUaGlzIGlzIHNpbXBseSBhIGNvbnZlbmllbmNlIHRvIGF2b2lkIGR1cGxpY2F0aW5nIHRoZSB0aHJlYWQgbWFyc2hhbGxpbmcgb24KKwkgIHNldF9jYXBzLgorCisyMDE2LTAxLTE1IDAwOjAwOjI5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmM6CisJICBnbHRyYW5zZm9ybWF0aW9uOiBhbHdheXMgYnVpbGQgYSB2YWxpZCBtdnAgbWF0cml4CisJICBUaGUgZGVmYXVsdCBjYXNlIGlzIHRvIGJ1aWxkIGFuIGlkZW50aXR5IG1hdHJpeC4KKworMjAxNi0wMS0xNCAxOTowMzowNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jOgorCSAgZ2x0cmFuc2Zvcm1hdGlvbjogc3VwcG9ydCBuZWdhdGl2ZSBzY2FsZXMKKwkgIEEgc2NhbGUgb2YgLTEuMCBtZWFucyB0byBmbGlwIHRoZSB2aWRlby4KKworMjAxNi0wMS0xNCAxODo0MjowNSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jOgorCSAgZ2x0cmFuc2Zvcm1hdGlvbjogaW1wbGVtZW50IHBhc3N0aHJvdWdoIGhhbmRsaW5nCisKKzIwMTYtMDEtMTQgMTc6NDU6MDMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKKwkqIGV4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmg6CisJICBnbHRyYW5zZm9ybWF0aW9uOiBpbXBsZW1lbnQgbmF2aWdhdGlvbiBldmVudHMKKwkgIFJldmVyc2VzIHRoZSB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIHRocm91Z2ggdGhlIHByb3BlcnRpZXMgYW5kIGZvcndhcmRzIHRoZQorCSAgZXZlbnQuCisJICBUaGUgcHJvY2VzcyBmb3IgZmluZGluZyB0aGUgY29vcmRpbmF0ZXMgb24gdGhlIHZpZGVvIGFyZSBhcyBmb2xsb3dzOgorCSAgMS4gQ29udmVydCB0aGUgZ2l2ZW4gcG9pbnRlcl94IGFuZCBwb2ludGVyX3kgdG8gbW9kZWwgc3BhY2UgYXQgdGhlIG5lYXIgYW5kIGZhciBwbGFuZXMKKwkgIDIuIEdldCB0aGUgZXF1YXRpb24gb2YgdGhlIHZpZGVvIHBsYW5lCisJICAzLiBGaW5kIHdoZXJlIHRoZSByYXkgaW4gMSBpbnRlcnNlY3RzIHRoZSBwbGFuZQorCSAgNC4gUHJvZml0IQorCisyMDE2LTAxLTE0IDE2OjU5OjEyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IHJlbW92ZSByZWR1bnRhbnQgZ2xpbWFnZXNpbmsgZnJvbSBkZWJ1ZyBsb2dnaW5nCisKKzIwMTYtMDEtMTQgMTY6NTc6NDAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbHdpbmRvd194MTEuYzoKKwkgIGdsL3gxMS9uYXZpZ2F0aW9uOiBhZGQgYnV0dG9uIHByZXNzIHRvIHRoZSBzZWxlY3RlZCBldmVudCBtYXNrCisJICBPdGhlcndpc2Ugd2Ugd29uJ3QgZ2V0IHRoZSBidXR0b24gcHJlc3MgZXZlbnRzIGFuZCBHc3ROYXZpZ2F0aW9uIGZhaWxzLgorCisyMDE2LTAxLTE0IDE2OjAwOjAwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogdHJ5IGhhcmRlciB0byBwYXNzdGhyb3VnaAorCSAgVGhpcyBtYWtlcyBhIHBpcGVsaW5lIGxpa2U6CisJICAuLi4gISB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLGZvcm1hdD1VWVZZICEgZ2xjb2xvcmNvbnZlcnQgIQorCSAgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSxmb3JtYXQ9e1VZVlksIE5WMTJ9ICEgLi4uCisJICBwYXNzdGhyb3VnaCBpbnN0ZWFkIG9mIGNvbnZlcnRpbmcgVVlWWSA9PiBOVjEyLiBUaGUgY29udmVyc2lvbiB3b3VsZCBoYXBwZW4KKwkgIGJlZm9yZSB0aGlzIGNoYW5nZSBzaW5jZSB0aGUgZWxlbWVudCAoYW5kIGJhc2V0cmFuc2Zvcm0pIHRyYW5zZm9ybSB0aGUgc3JjIGNhcHMKKwkgIHRvIGZvcm1hdD17TlYxMiwgVVlWWX0gKHNpbmNlIE5WMTIgY29tZXMgZmlyc3QgaW4gdGhlIGdsY29sb3Jjb252ZXJ0OnNyYworCSAgdGVtcGxhdGUpIGFuZCB0aGVuIHRoZSBkZWZhdWx0IGNhcHMgZml4YXRlIGZ1bmMgd291bGQgZml4YXRlIHRvIE5WMTIuIEJsYWguCisJICBBbHNvIHRoZXJlJ3Mgbm8gbmVlZCB0byBpbnRlcnNlY3QgYWdhaW5zdCB0aGUgdGVtcGxhdGUgY2FwcyBpbiA6OnRyYW5zZm9ybV9jYXBzCisJICBzaW5jZSBiYXNldHJhbnNmb3JtIGRvZXMgdGhhdCByaWdodCBhZnRlciBjYWxsaW5nIHRoZSB2ZnVuYy4KKworMjAxNi0wMS0xMiAxODozMToyOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvTWFrZWZpbGUuYW06CisJKiBleHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuYzoKKwkqIGV4dC9nbC9nc3RnbGNvbG9yYmFsYW5jZS5oOgorCSogZXh0L2dsL2dzdG9wZW5nbC5jOgorCSAgZ2w6IGltcGxlbWVudCBhIGNvbG9yYmFsYW5jZSBlbGVtZW50CisJICBJdCBwZXJmb3JtcyB0aGUgZXhhY3Qgc2FtZSBvcGVyYXRpb24gYXMgdmlkZW9iYWxhbmNlIGJ1dCB3aXRoIG9wZW5nbCBzaGFkZXJzIGFuZAorCSAgd2FzIHRlc3RlZCB3aXRoIGdsdmlkZW9taXhlciBieSBjb21wYXJpbmcgZnJhbWVzIGZyb20gdmlkZW9iYWxhbmNlIGFuZAorCSAgZ2xjb2xvcmJhbGFuY2UuCisKKzIwMTYtMDEtMTIgMTg6MjE6NTAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jOgorCSogZXh0L2dsL2dzdGdsdmlkZW9taXhlci5oOgorCSAgZ2x2aWRlb21peGVyOiBpbXBsZW1lbnQgZ2xCbGVuZEZ1bmMgYW5kIGdsQmxlbmRFcXVhdGlvbgorCSAgQWxsb3dzIG1vcmUgYmxlbmRpbmcgb3B0aW9ucyB0aGFuIGp1c3QgQSBvdmVyIEIKKwkgIGUuZy4gZnJhbWUgY29tcGFyaXNvbnMgYXJlIG5vdyBwb3NzaWJsZS4KKwkgIGdsdmlkZW9taXhlciBuYW1lPW0KKwkgIHNpbmtfMDo6em9yZGVyPTAKKwkgIHNpbmtfMTo6em9yZGVyPTEKKwkgIHNpbmtfMTo6YmxlbmQtZXF1YXRpb24tcmdiPXtzdWJ0cmFjdCxyZXZlcnNlLXN1YnRyYWN0fQorCSAgc2lua18xOjpibGVuZC1mdW5jdGlvbi1zcmMtcmdiPXNyYy1jb2xvcgorCSAgc2lua18xOjpibGVuZC1mdW5jdGlvbi1kc3QtcmdiPWRzdC1jb2xvcgorCSAgISBnbGltYWdlc2lua2VsZW1lbnQKKwkgIHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWNoZWNrZXJzLTQgISBtLnNpbmtfMAorCSAgdmlkZW90ZXN0c3JjIHBhdHRlcm49Y2hlY2tlcnMtOCAhIG0uc2lua18xCisKKzIwMTYtMDEtMDggMTg6Mzg6NDYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYzoKKwkgIGdsZGVidWc6IGFkZCBhIHNwZWNpZmljIGNhdGVnb3J5IGZvciB0aGUgZGVidWcgc3BhbSBmcm9tIHRoZSBkcml2ZXIKKwogMjAxNi0wMS0xMiAxNDo1NDoyMyArMDAwMCAgVGltIFNoZXJpZGFuIDx0aW0uc2hlcmlkYW5AaW1ndGVjLmNvbT4KIAogCSogZXh0L3NiYy9nc3RzYmNkZWMuYzoKQEAgLTI0LDEyICs0MTkwLDYzIEBACiAJICBjYWxjdWxhdGVkIGZyYW1lIGxlbmd0aHMuCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQyNDQ2CiAKLTIwMTYtMDEtMDggMjI6MTk6MDYgKzAzMDAgIFNlcmdleSBCb3JvdmtvdiA8c2VyZ2UuYm9yb3Zrb3ZAZ21haWwuY29tPgorMjAxNi0wMS0xMiAyMzozNDozMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogCi0JKiBleHQvcXQvcXRpdGVtLmNjOgotCSAgcW1sOiBNYXJrIG1hdGVyaWFsIGRpcnR5IHdoZW4gdGV4dHVyZSBidWZmZXIgaXMgdXBkYXRlZAotCSAgUXQgbWlnaHQgbm90IHJlZHJhdyB0aGUgc2NlbmUgb3RoZXJ3aXNlLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODI4NgorCSogc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jOgorCSAgbnZlbmM6IHVwZGF0ZSBmb3IgcmVjZW50IEdMIGFwaSBjaGFuZ2VzCisJICBTcGVjaWZpY2FsbHkgdGhlIEdzdEdMTWVtb3J5UEJPIGFkZGl0aW9uICh3aGljaCB3YXMgdGhlIHVuYWRvcm5lZCBHc3RHTE1lbW9yeSkuCisKKzIwMTYtMDEtMTIgMTQ6MzY6MDIgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IG9wdGlvbmFsbHkgZ2V0IHRoZSBHTCBjb250ZXh0IGZyb20gZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQKKwkgIEFsbG93IHNldHRpbmcgdGhlIEdMIGNvbnRleHQgd2l0aCBnc3RfZWxlbWVudF9zZXRfY29udGV4dC4gV2hlbiBhdmFpbGFibGUsIHRoZQorCSAgbG9jYWwgY29udGV4dCBvYnRhaW5lZCB2aWEgdGhlIGNvbnRleHQgcXVlcnkgc3RpbGwgaGFzIHRoZSBwcmVjZWRlbmNlLgorCisyMDE2LTAxLTEyIDE0OjAyOjQ2ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5LmM6CisJICBhcHBsZW1lZGlhOiBpb3N1cmZhY2VtZW1vcnk6IHJlbW92ZSBOT19TSEFSRSBmbGFnCisJICBUaGUgZnVsbCBtZW1vcnkgY2FuIGJlIHNhZmVseSBzaGFyZWQuIFNoYXJpbmcgYSBzdWIgcmVnaW9uIGNhbid0IGJlIGRvbmUgYW5kCisJICB3aWxsIGZhaWwgaW4gdGhlIGJhc2UgYWxsb2NhdG9yLCB0cmlnZ2VyaW5nIGEgY29weS4KKworMjAxNi0wMS0xMSAxMzozMzo0NiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvZnJlaTByL2dzdGZyZWkwcm1peGVyLmM6CisJICBmcmVpMHJtaXhlcjogcmVwbGFjZSBhY2NlcHQtY2FwcyB3aXRoIGNhcHMgcXVlcnkKKwkgIEl0IHdhbnRzIHRvIGNoZWNrIGlmIHVwc3RyZWFtIGNhbiBwcm9kdWNlIGEgY2VydGFpbiBmb3JtYXQsCisJICBhY2NlcHQtY2FwcyBtaWdodCBvbmx5IGNoZWNrIGlmIHRoZSBuZXh0IGVsZW1lbnQgY2FuIHByb2R1Y2UgaXQuCisKKzIwMTYtMDEtMDcgMjA6NTY6NTQgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbGJhc2VtZW1vcnk6IEZyZWUgdGhlIGFjdHVhbCBtZW1vcnkgb2JqZWN0IHdoZW4gcmVxdWVzdGVkCisJICBPdGhlcndpc2Ugd2UgYXJlIGxlYWtpbmcgfjQwMEIgb24gZWFjaCBHc3RNZW1vcnkgYWxsb2NhdGlvbi4KKwkgIEZyZWVpbmcgaW4gdGhlIGJhc2UgY2xhc3MgbWF0Y2hlcyB0aGUgR09iamVjdCBzZW1hbnRpY3MuCisKKzIwMTYtMDEtMDcgMjA6NTQ6NDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbG1lbW9yeXBibzogZG9uJ3QgZG91YmxlIHJlYWQgcGl4ZWxzCisJICBUaGUgb3B0aW1pc3RpYyBkb3dubG9hZF90cmFuc2ZlciB3YXMgbm90IHNldHRpbmcgdGhlIHJlcXVpcmVkIGZsYWcgdG8gbm90CisJICBwZXJmb3JtIGdsUmVhZFBpeGVscyBvbiBzdWJzZXF1ZW50IG1hcCAoUkVBRCkuIHJlc3VsdGluZyBpbiBnbFJlYWRQaXhlbHMKKwkgIGhhcHBlbmluZyB0d2ljZS4KKworMjAxNi0wMS0wNyAxODo0NzozNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbG1lbW9yeTogZXhwb3NlIGdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UKKwkgIFJlbW92ZXMgZXh0cmVtZWx5IHNpbWlsYXIgY29kZSBmcm9tIGdsbWVtb3J5cGJvLgorCisyMDE2LTAxLTA3IDE4OjA1OjIzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuYzoKKwkgIGdsZmVhdHVyZSBhZGQgYSBzcGVjaWZpYyBkZWJ1ZyBjYXRlZ29yeQorCSAgU2F2ZXMgaGF2aW5nIHRvIHRyYXdsIHRocm91Z2ggdGhlICdkZWZhdWx0JyBjYXRlZ29yeSB3aGVuIGZ1bmN0aW9uIHJldHJpZXZhbAorCSAgZ29lcyB3cm9uZy4KIAogMjAxNi0wMS0wNSAxNDozNToxMSAtMDUwMCAgQm9iIEhvbGNvbWIgPGJob2xjb21iQG1hay5jb20+CiAKQEAgLTQwLDYgKzQyNTcsNjEgQEAKIAkgIG9uIHNvbWUgc3lzdGVtcy4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NjAxMjcKIAorMjAxNi0wMS0wOCAxNzoxMTowOSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oOgorCSAgb3BlbmN2OiByZW1vdmUgY2hlY2sgZm9yIE9wZW5DViB2ZXJzaW9uCisJICBBZnRlciBjb21taXQgNjQwODBlNjMyLCBjb25maWd1cmUgY2hlY2tzIGZvciBhbGwgdGhlIGhlYWRlciBmaWxlcyB0aGF0CisJICBzaG91bGQgYmUgYXZhaWxhYmxlIGluIE9wZW5DViAyLjMgYW5kIGxhdGVyLiBJZiBhbnkgb2YgdGhlc2UgZmlsZXMgaXNuJ3QKKwkgIHRoZXJlIHRoZSBPcGVuQ1YgZWxlbWVudHMgd29uJ3QgYmUgcGFydCBvZiB0aGUgYnVpbGQuCisJICBObyBuZWVkIHRvIHJlY2hlY2sgZm9yIG9wZW5jdjIvbGVnYWN5L2xlZ2FjeS5ocHAgYWdhaW4gaW4KKwkgIGdzdHB5cmFtaWRzZWdtZW50LmguIE1pbmltdW0gc3VwcG9ydGVkIE9wZW5DViB2ZXJzaW9uIG11c3QgaGF2ZSB0aGlzIGhlYWRlcgorCSAgYW5kIGNvbmZpZ3VyZSBhbHJlYWR5IGNoZWNrcyBmb3IgaXQuIFJlbW92aW5nIGNoZWNrLgorCisyMDE2LTAxLTA4IDE1OjAxOjQ3ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkgIG9wZW5jdjogYWx3YXlzIGRvIGN2c21vb3RoIGluIHBsYWNlCisJICBBZnRlciB0aGUgdXBkYXRlIHRvIG5ldyBPcGVuQ1YgQVBJIHRoZSB0cmFuc2Zvcm0gZnVuY3Rpb24gdXNpbmcgYW4gb3V0CisJICBidWZmZXIgaXMgbm90IG5lY2Vzc2FyeS4gV2UgY2FuIGFsd2F5cyBkbyB0aGUgdHJhbnNmb3JtYXRpb24gaW4gcGxhY2UuCisKKzIwMTYtMDEtMDggMTI6Mzk6MjkgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuY3BwOgorCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oOgorCSAgb3BlbmN2OiBkbyBweXJhbWlkc2VnbWVudCdzIHRyYW5zZm9ybWF0aW9uIGluIHBsYWNlCisJICBSdW4gdGhlIHRyYW5zZm9ybSBmdW5jdGlvbiBvZiBweXJhbWlkc2VnbWVudCBpbiBwbGFjZSwgcmV1c2luZyB0aGUgaW1hZ2UKKwkgIGRhdGEgYXMgYm90aCBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGluIGN2UHlyU2VnbWVudGF0aW9uLiBUaGlzIGF2b2lkcworCSAgY29weWluZyB0aGUgaW1hZ2UgYmFjayBhbmQgZm9ydGggYW5kIHRoZSBleHRyYSBtZW1vcnkuCisKKzIwMTYtMDEtMDcgMTU6MjE6NDAgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIHRlc3RzOiBobHNkZW11eDogYWRkIHRlc3QgZm9yIHVwZGF0aW5nIHNlZ21lbnQgc3RvcAorCSAgQWRkIGEgdGVzdCBmb3Igc2Vla2luZyB0aGF0IG9ubHkgdXBkYXRlcyBzdG9wIHBvc2l0aW9uIGFuZCB2ZXJpZmllcworCSAgdGhhdCBzdGFydCBpcyB1bm1vZGlmaWVkCisKKzIwMTYtMDEtMDcgMTU6MjE6MjIgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZml4IHNlZWtpbmcgdGhhdCBqdXN0IHVwZGF0ZXMgc3RvcCBwb3NpdGlvbgorCSAgRml4ZWQgYWRhcHRpdmVkZW11eCBzZWVraW5nIHdpdGhvdXQgZmx1c2hpbmcgdGhhdCBqdXN0IHdhbnRzCisJICB0byB1cGRhdGUgc3RvcCBwb3NpdGlvbi4gVGhpcyByZXF1aXJlZCBwcm90ZWN0aW5nIHRoZSBzZWdtZW50CisJICB2YXJpYWJsZXMgd2l0aCBhIG5ldyBtdXRleCBzbyB0aGF0IHRoZSBzZWVraW5nIHRocmVhZCBhbmQgdGhlCisJICBkb3dubG9hZCB0aHJlYWRzIGNvdWxkIHNhZmVseSBtYW5pcHVsYXRlIHRoZSBzZWdtZW50IGFuZAorCSAgZXZlbnRzIHJlbGF0ZWQgdG8gaXQuCisJICBUaGlzIGNvbnRlbnRpb24gaXMgb25seSBsb2NrZWQvdW5sb2NrZWQgd2hlbiBzdGFydGluZyBhIG5ldworCSAgZG93bmxvYWQsIHdoZW4gdGhlIGZpcnN0IGZyYWdtZW50IG9mIGEgc2VnbWVudCBpcyByZWNlaXZlZCBhbmQKKwkgIHdoZW4gc2Vla2luZyBzbywgaG9wZWZ1bGx5LCBpdCB3b24ndCBkYW1hZ2UgcGVyZm9ybWFuY2UuCisKKzIwMTYtMDEtMDYgMTY6NTE6MDggLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZml4IHNlZ21lbnQgdXBkYXRlIG9uIHNlZWtzCisJICBGaXhlcyB0eXBvIG9uIHJldmVyc2UgcmF0ZSBjaGVjayBhbmQgYWxzbyBvbmx5IHVwZGF0ZSB0aGUKKwkgIHBvc2l0aW9uIHdoZW4gdGhlIHN0YXJ0L3N0b3Agd2FzIGFjdHVhbGx5IGNoYW5nZWQuCisKIDIwMTYtMDEtMDcgMTg6MTA6NDkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKIAkqIGdzdC9teGYvbXhmdHlwZXMuYzoKQEAgLTUwLDI3ICs0MzIyLDQ5NCBAQAogCSAgYSBiaXQgbW9yZSBhbmQgY2F1c2VzIHdyaXRpbmcgdG8gdGhlIGd1aW50IGFzIHBvaW50ZXIgdG8gb3ZlcndyaXRlIG1hcC5tZW1vcnksCiAJICB3aGljaCB0aGVuIGxhdGVyIGNyYXNoZXMgZHVyaW5nIHVubWFwcGluZyBvZiB0aGUgbWVtb3J5LgogCisyMDE2LTAxLTA3IDE4OjAyOjMzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm1ldGFkYXRhLmM6CisJICBteGZtZXRhZGF0YTogSW5pdGlhbGl6ZSBib29sZWFuIHRvIEZBTFNFIHRvIGZpeCB2YWxncmluZCB3YXJuaW5nCisJICBTZWVtcyB0byBiZSBhIGZhbHNlIHdhcm5pbmcgdGhvdWdoLgorCisyMDE2LTAxLTA3IDE0OjA4OjM5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmM6CisJICBnbHN5bmNtZXRhOiBvbmx5IGZsdXNoIHdpdGggYSBzaGFyZWQgY29udGV4dAorCSAgVGhlIHdhaXQgY29kZSB3aWxsIGZsdXNoIGZvciB1cyBmb3Igc2luZ2xlIGNvbnRleHQgcGlwZWxpbmVzLgorCisyMDE2LTAxLTA3IDE0OjAyOjUyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuaDoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb250ZXh0LmM6CisJICBnbGNvbnRleHQ6IGltcGxlbWVudCBjaGVja2luZyB3aGV0aGVyIGEgY29udGV4dCBoYXMgYmVlbiBzaGFyZWQKKwkgIFNvbWUgb3BlcmF0aW9ucyBhcmUgdW5uZWNlc3Nhcnkgd2hlbiBydW5uaW5nIHdpdGggb25seSBhIHNpbmdsZSBHTAorCSAgY29udGV4dC4KKwkgIGUuZy4gZ2xGbHVzaCB3aGVuIHNldHRpbmcgYSBmZW5jZSBvYmplY3QgYXMgdGhlIGZsdXNoIGhhcHBlbnMgb24gd2FpdC4KKwkgIEFQSTogZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkCisKKzIwMTYtMDEtMDYgMTQ6NTQ6MzAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBwdXQgYm9vbGVhbiB2YWx1ZXMgaW50byBnYm9vbGVhbiB2YXJpYWJsZXMKKwkgIEFuZCByZW1vdmUgc3VwZXJmbHVvdXMgYXNzaWdubWVudHMuCisKKzIwMTYtMDEtMDYgMTY6NTQ6NDkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmM6CisJICBwbGF5ZXI6IE9ubHkgc2V0IHRoZSBwaXBlbGluZSB0byBQTEFZSU5HIGluIHBsYXkoKSBpZiBidWZmZXJpbmc+PTEwMCUKKwkgIE90aGVyd2lzZSB0aGUgYXBwbGljYXRpb24gY2FuIGJyZWFrIHRoZSBidWZmZXJpbmcgbG9naWMgYnkgc2V0dGluZyB0aGUKKwkgIHBpcGVsaW5lIHRvIFBMQVlJTkcgYmVmb3JlIHdlIGJ1ZmZlcmVkIGVub3VnaC4KKworMjAxNi0wMS0wNSAxNzo0MToyMyAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICB0ZXN0czogZGFzaGRlbXV4OiBhZGQgdGVzdHMgZm9yIHBvc3Qtc2VlayBzZWdtZW50IGJvdW5kYXJpZXMgY2hlY2sKKwkgIENoZWNrcyBpZiB0aGUgcG9zdCBzZWVrIHNlZ21lbnQgaXMgd2hhdCBpcyBleHBlY3RlZC4KKwkgIEFsc28gbWFrZXMgaXQgZWFzeSB0byBhZGQgbW9yZSB0ZXN0cyB3aXRoIGRpZmZlcmVudCBzZWVraW5nIGZsYWdzIHVzaW5nIHRoZQorCSAgc2FtZSBmdW5jdGlvbnMuCisKKzIwMTYtMDEtMDUgMTA6NDE6MjcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzX2RlbXV4LmM6CisJICB0ZXN0czogaGxzZGVtdXg6IGFkZCB0ZXN0cyBmb3Igc2VlayB3aXRoIHJldmVyc2UgcmF0ZSBhbmQgc25hcCBmbGFncworCSAgQWRkIHRlc3RzIHRvIGVuc3VyZSBzbmFwIGZsYWdzIHdvcmsgYXMgZXhwZWN0ZWQgZm9yIHJldmVyc2UKKwkgIHJhdGVzCisKKzIwMTYtMDEtMDUgMTA6Mzk6MTEgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogc3RvcCByZXZlcnNlIHBsYXliYWNrIHdoZW4gd2UgcmVhY2ggdGhlIGxpbWl0CisJICBBdm9pZHMgZG93bmxvYWRpbmcgYW5kIHB1c2hpbmcgYSBmdWxsIHNlZ21lbnQganVzdCB0byBnZXQgMSBuYW5vc2Vjb25kCisJICBvZiBkYXRhLiBUaGlzIGhhcHBlbnMgZnJlcXVlbnRseSB3aGVuIHNlZWtpbmcgaXMgZG9uZSB3aXRoIGZsYWdzCisJICB0aGF0IGFkanVzdCB0byBib3VuZGFyaWVzIG9yIHdoZW4gdGhlIHN0YXJ0IGlzIGFsaWduZWQgd2l0aCBzZWdtZW50CisJICBzdGFydHMuIFRoZSBsYXRlciBpcyBjb21tb24gd2hlbiBzZWdtZW50IGR1cmF0aW9ucyBpcyBhIG11bHRpcGxlIG9mCisJICBhIHNlY29uZC4KKworMjAxNi0wMS0wNSAwOToxNjo0NSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogZml4IHJldmVyc2UgcGxheWJhY2sgc2VlayB3aXRoIHNuYXAgZmxhZ3MKKwkgIFByb3Blcmx5IGhhbmRsZSBzbmFwIGZsYWdzIGR1cmluZyByZXZlcnNlIHNlZWtpbmcuIEluIHRoaXMgY2FzZQorCSAgdGhlIGJlZm9yZS9hZnRlciBhcmUgYWxzbyByZXZlcnNlZCwgc28gaGFuZGxlIHRob3NlIGFzIHN1Y2guCisJICBGb3IgZXhhbXBsZTogd2l0aCBhIHNlcXVlbmNlIG9mIDFzIGZyYWdtZW50czoKKwkgIHwtLSAwIC0tfC0tIDEgLS18LS0gMiAtLXwtLSAzIC0tfAorCSAgSWYgeW91IHNlZWsgdG8gMS41cyBpdCBpcyBpbnNpZGUgZnJhZ21lbnQgMS4gV2l0aCByZXZlcnNlIGFuZAorCSAgc25hcC1iZWZvcmU6IHNob3VsZCBwbGF5IGZyb20gdGhlIGVuZCBvZiBmcmFnbWVudCAxCisJICBzbmFwLWFmdGVyOiBzaG91bGQgcGxheSBmcm9tIHRoZSBlbmQgb2YgZnJhZ21lbnQgMAorCisyMDE2LTAxLTA1IDA5OjAxOjEwIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGNvcnJlY3RseSB0cmFjayBzZWdtZW50LnBvc2l0aW9uIGluIHJldmVyc2UgcGxheWJhY2sKKwkgIEZvciByZXZlcnNlLCBzZXQgcG9zaXRpb24gdG8gc2VnbWVudC5zdG9wIHdoZW4gc3RhcnRpbmcgYW5kIGFsc28KKwkgIGRvbid0IHNldCB0aGUgcG9zaXRpb24gdG8gZnJhZ21lbnQgZW5kIHRpbWVzdGFtcCB3aGVuIGl0IGZpbmlzaGVzLAorCSAganVzdCBsZWF2ZSBpdCBhdCB0aGUgZnJhZ21lbnQgc3RhcnQuCisKKzIwMTYtMDEtMDUgMDg6NTk6MjYgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHNpbXBsaWZ5IHNuYXAgZmxhZ3MgY2hlY2tpbmcKKwkgIFJlcGxhY2U6CisJICBpZiAoYm9vbGVhbikgdmFyID0gdHJ1ZTsKKwkgIHdpdGg6CisJICB2YXIgPSAoYm9vbGVhbik7CisKKzIwMTUtMTItMjggMDI6MTg6MDYgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHJlc3BlY3Qga2V5dW5pdCBmbGFnIGZvciBwb3NpdGlvbgorCSAgU2V0IHRoZSBzZWdtZW50IHN0YXJ0IHBvc2l0aW9uIHdoZW4ga2V5dW5pdCBmbGFnIGlzIGFjdGl2ZQorCisyMDE1LTEyLTI0IDE4OjQ5OjM5IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzX2RlbXV4LmM6CisJICB0ZXN0czogaGxzX2RlbXV4OiBhZGQgdGVzdHMgZm9yIHNlZWtpbmcgc2VnbWVudAorCSAgVGVzdHMgdGhhdCBjaGVjayB0aGF0IHRoZSBzZWdtZW50IHNlbnQgYWZ0ZXIgYSBzZWVrIGlzIGNvcnJlY3QuCisJICBBbGxvd3MgdGVzdGluZyB0aGF0IG11bHRpcGxlIHNlZWtpbmcgZmxhZ3Mgd29yayBhcyBleHBlY3RlZAorCisyMDE1LTEyLTI0IDA5OjI3OjMzIC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oOgorCSAgdGVzdHM6IGFkYXB0aXZlX2RlbXV4OiBhZGQgZnVuY3Rpb24gdG8gYmUgYWJsZSB0byBjaGVjayBkZW11eGVyIGV2ZW50cworCSAgQWxsb3dzIHdyaXRpbmcgdGVzdHMgdGhhdCB2ZXJpZnkgdGhhdCBldmVudHMgYXJlIGNvcnJlY3QuCisJICBVc2VmdWwgdG8gbW9uaXRvciBhbmQgY2hlY2sgc2VnbWVudHMgYWZ0ZXIgc2Vla3MsIGZvciBleGFtcGxlLgorCisyMDE1LTEyLTIzIDE1OjI1OjI5IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIHRlc3RzOiBhZGFwdGl2ZTogdXBkYXRlIHRvIGFsbG93IG1vcmUgZmxleGlibGUgc2Vla2luZyB0ZXN0cworCSAgQWxsb3dzIGRlZmluaW5nIGEgc2VlayBldmVudCB0byBiZSBhYmxlIHRvIGNoYW5nZSBzZWVraW5nIHBhcmFtZXRlcnMKKwkgIGFuZCBjcmVhdGUgbW9yZSBzZWVraW5nIHRlc3Qgc2NlbmFyaW9zCisKKzIwMTUtMTItMjMgMTU6MjM6MjcgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJICB0ZXN0czogaGxzZGVtdXg6IGZpeCBtYWtlZmlsZSB2YXJpYWJsZSB0eXBvCisKKzIwMTYtMDEtMDYgMTY6NTA6MDAgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IGVuYWJsZSByZW5lZ290aWF0aW9uCisJICBXZSBjYW4gYWN0dWFsbHkgcmVuZWdvdGlhdGUgbm93LCBzbyByZW1vdmUgb2xkIGNoZWNrIHdoaWNoIGRpc2FibGVkIGl0LgorCisyMDE2LTAxLTA2IDE2OjI1OjM4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0Lmg6CisJICBnbGNvbG9yY29udmVydDogaW1wbGVtZW50IHVzYWdlIG9mIGEgYnVmZmVyIHBvb2wKKwkgIFNhdmVzIHVubmVjZXNzYXJ5IGdsR2VuVGV4dHVyZXMgYW5kIGdsRGVsZXRlVGV4dHVyZXMgd2hpY2ggbWF5IGhhdmUgYQorCSAgbm9uLXRyaXZpYWwgY29zdC4KKworMjAxNi0wMS0wNiAxNTo1MDowNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJICBnbGJhc2VtZW1vcnk6IGZpeCBjb3B5aW5nIEdzdEdMQWxsb2NhdGlvblBhcmFtcworCSAgRml4ZXMgYSBHU1RfSVNfR0xfQ09OVEVYVCBjcml0aWNhbAorCisyMDE2LTAxLTA2IDE1OjQ0OjUyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSAgZ2xtZW1vcnlwYm86IHJlbW92ZSB1bnVzZWQgY29kZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTY3OQorCisyMDE2LTAxLTA2IDEzOjIwOjE3ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBzbWFsbCBuZWdvdGlhdGlvbiBmaXgKKwkgIEZpeCBuZWdvdGlhdGlvbiB3aGVuIEdMTWVtb3J5IGlzIHJlcXVlc3RlZCBidXQgYSBjb250ZXh0IGlzIG5vdCBhdmFpbGFibGUKKworMjAxNi0wMS0wNiAxMTo0MDozOCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZW5jLmM6CisJICBhcHBsZW1lZGlhOiB2dGVuYzogYWNjZXB0IFVZVlkgb24gTWFjCisJICBXaGVuIGRvaW5nIEdMTWVtb3J5IGF2ZnZpZGVvc3JjIG5lZ290aWF0ZXMgVVlWWS4gVGhpcyBjaGFuZ2UgYWxsb3dzIGF2ZnZpZGVvc3JjCisJICAhIHRlZSBuYW1lPXQgISAuLi4gISBnbGltYWdlc2luayB0LiAhIC4uLiAhIGdsZG93bmxvYWQgISB2dGVuY19oMjY0ICEgLi4uCisJICB0byBkbyBHTE1lbW9yeSBhbmQgMC1jb3B5IHdpdGggdGhlIGVuY29kZXIgKHdpdGggdGhlIENWIG1ldGEpLgorCisyMDE2LTAxLTA2IDExOjI5OjE1ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBjaGFuZ2UgdGV4dHVyZSBmb3JtYXQgZnJvbSBCR1JBIHRvIE5WMTIgb24gaU9TCisJICBDaGFuZ2UgdGV4dHVyZSBmb3JtYXQgZnJvbSBCR1JBIHRvIE5WMTIuIFRoaXMgYWxsb3dzIGEgcGlwZWxpbmUgbGlrZSBhdmZ2aWRlb3NyYworCSAgISB0ZWUgbmFtZT10ICEgLi4uICEgZ2xpbWFnZXNpbmsgdC4gISAuLi4gISBnbGRvd25sb2FkICEgdnRlbmNfaDI2NCAhIC4uLiAgdG8KKwkgIG5lZ290aWF0ZSBHTE1lbW9yeS4gVGhpcyBtYWtlcyB0aGUgZ2xpbWFnZXNpbmsgYnJhbmNoIG11Y2ggZmFzdGVyIChvYnZpb3VzbHkpCisJICBhbmQgdHJpZ2dlcnMgdGhlIDAtY29weSBwYXRoIGJldHdlZW4gYXZmdmlkZW9zcmMgYW5kIHZ0ZW5jICh1c2luZyB0aGUgQ1YgbWV0YSkuCisJICBDb21iaW5lZCB0aGlzIHJlc3VsdHMgaW4gYSBodWdlIHBlcmYgaW1wcm92ZW1lbnQgb24gaU9TICgyNS0zMCUgb2YgQ1BVIHRpbWUgaW4gYQorCSAgcGlwZWxpbmUgbGlrZSB0aGUgb25lIGFib3ZlKS4KKwkgIE5vdGUgdGhhdCB0aGlzIGRvZXNuJ3QgaW50cm9kdWNlIGEgbmV3IHNoYWRlciBjb252ZXJzaW9uIGluIHRoZSBzaW5rLCBzaW5jZSBCR1JBCisJICB0ZXh0dXJlcyBoYWQgdG8gYmUgY29waWVkL2NvbnZlcnRlZCBmcm9tIGZvcm1hdD1CR1JBLHRleHR1cmUtdGFyZ2V0PVJFQ1RBTkdMRSB0bworCSAgZm9ybWF0PVJHQkEsdGV4dHVyZS10YXJnZXQ9MkQgYW55d2F5LgorCisyMDE2LTAxLTA0IDIwOjI2OjA5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuaDoKKwkgIGdsdXBsb2FkOiBhbHdheXMgYWRkIHRleHR1cmUtdGFyZ2V0IGZpZWxkIHRvIEdMIGNhcHMKKwkgIDEuIFZhcmlvdXMgZWxlbWVudHMvYmFzZSBjbGFzc2VzIG9ubHkgcGVyZm9ybSBhIHN1YnNldCBjaGVjayBvbiBhY2NlcHQtY2FwcworCSAgMi4gU29tZSBHTCBlbGVtZW50cyBoYXZlIHRleHR1cmUtdGFyZ2V0IGluIHRoZWlyIHBhZCB0ZW1wbGF0ZQorCSAgMy4gV2hlbiBjaGVja2luZyBzdWJzZXRzLCBvbmx5IHRoZSBjYXBzIHRvIGNoZWNrIGFyZSBhbGxvd2VkIHRvIGNvbnRhaW4gZXh0cmEKKwkgIGZpZWxkcy4gIElmIHRoZSAndGVtcGxhdGUnIGNhcHMgaGF2ZSBleHRyYSBmaWVsZHMsIHRoZSBzdWJzZXQgZmFpbHMuCisJICBUaHVzIHdpdGhvdXQgdGV4dHVyZS10YXJnZXQgb24gdGhlIGNhcHMsIHZhcmlvdXMgYWNjZXB0LWNhcHMgaW1wbGVtZW50YXRpb25zCisJICB3ZXJlIGZhaWxpbmcuCisJICBBbHNvLCBhZGQgc29tZSBjb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIHNldHRpbmcgYW5kIHJldHJpZXZpbmcKKwkgIHRleHR1cmUgdGFyZ2V0cyB0by9mcm9tIEdWYWx1ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk4NjAKKworMjAxNS0xMi0yOSAxODoxNjowNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsdXBsb2FkOiBwYXNzdGhyb3VnaCBjb21wb3NpdGlvbiBjYXBzIGZlYXR1cmVzCisJICBEb24ndCB1bmNvbmRpdGlvbmFsbHkgYWRkIGl0IHRvIGFueSBhbmQgYWxsIGNhcHMgdHJhbnNmb3JtYXRpb25zLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTg2MAorCisyMDE2LTAxLTA0IDA5OjUyOjQ3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtc2VjdGlvbnMudHh0OgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmg6CisJKiB0ZXN0cy9jaGVjay9saWJzL3BsYXllci5jOgorCSogd2luMzIvY29tbW9uL2xpYmdzdHBsYXllci5kZWY6CisJICBwbGF5ZXI6IFJlbW92ZSBnc3RfcGxheWVyX25ldygpIGFuZCBtYWtlIGdzdF9wbGF5ZXJfbmV3X2Z1bGwoKSB0aGUgbm9ybWFsIGNvbnN0cnVjdG9yCisJICBJbiB2ZXJ5IGZldyBjYXNlcyB0aGUgc2ltcGxlIHZlcnNpb24gd2FzIGFjdHVhbGx5IG5lZWRlZCBhbmQgaGF2aW5nIHRoZQorCSAgcGFyYW1ldGVycyBoaWRkZW4gYnkgYSBfZnVsbCgpIHZlcnNpb24gY2F1c2VkIGFwcGxpY2F0aW9uIHRoYXQgYWN0dWFsbHkgbmVlZGVkCisJICBpdCB0byBub3QgdXNlIGl0LgorCisyMDE2LTAxLTA0IDAxOjAzOjA4ICsxMTAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0Lmg6CisJICBnbHZpZXdjb252ZXJ0OiBGaXggc3RlcmVvc2NvcGljIGhhbmRsaW5nIHcvIHRleHR1cmUtdGFyZ2V0CisJICBUaGUgYWRkaXRpb24gb2YgdGV4dHVyZS10YXJnZXQgbmVnb3RpYXRpb24gYnJva2Ugc3RlcmVvc2NvcGljCisJICBoYW5kbGluZyB3aGVuIG5vdCBpbiBwYXNzdGhyb3VnaCBtb2RlLCBzbyBmaXggdGhhdC4KKworMjAxNS0xMC0wNyAxODo1Mzo0MyArMDkwMCAgSHl1bmp1biBLbyA8enpvb24ua29Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkgIHNkcGRlbXV4OiByZXBsYWNlIGR1cGxpY2F0ZWQgY29kZXMgdG8gY2FsbCBuZXcgYmFzZSBzZHAgYXBpcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0NTg4MAorCisyMDE1LTEyLTMwIDE4OjAwOjQ3IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9ydG1wL1JFQURNRToKKwkgIHJ0bXA6IHJlZmVyIHRvIGJvdGggZWxlbWVudHMgaW4gdGhlIFJFQURNRQorCisyMDE1LTEyLTI5IDE0OjM1OjE0IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9ydG1wL2dzdHJ0bXBzcmMuYzoKKwkgIHJ0bXBzcmM6IGNoZWNrIGZvciBmYWlsZWQgUlRNUCBjb250ZXh0IGFsbG9jCisJICBBdm9pZHMgYW4gdW5saWtlbHkgY3Jhc2guCisJICBBcmd1YWJseSwgaWYgYWxsb2NhdGlvbiBmYWlscyB3ZSBoYXZlIG5vIGNoYW5jZSBvZgorCSAgcmVjb3ZlcmluZyBidXQgbm9uZXRoZWxlc3MsIFJUTVBfQWxsb2MgY2FuIGZhaWwgYW5kCisJICBsaWJydG1wJ3MgUlRNUF9pbml0KCkgKGNhbGxlZCBuZXh0KSBhc3N1bWVzIGEgbm9uLU5VTEwKKwkgIHBvaW50ZXIgaXMgcGFzc2VkIHdpdGhvdXQgY2hlY2tpbmcuCisJICBBZGRpdGlvbmFsbHksIHVuaWZ5IGV4aXQgcGF0aCBvbiBlcnJvci4KKworMjAxNS0xMi0yOSAxNDoxNjo1OCAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvcnRtcC9nc3RydG1wc2luay5jOgorCSAgcnRtcHNpbms6IGNoZWNrIGZvciBmYWlsZWQgUlRNUCBjb250ZXh0IGFsbG9jCisJICBBdm9pZHMgYW4gdW5saWtlbHkgY3Jhc2guCisJICBBcmd1YWJseSwgaWYgYWxsb2NhdGlvbiBmYWlscyB3ZSBoYXZlIG5vIGNoYW5jZSBvZgorCSAgcmVjb3ZlcmluZyBidXQgbm9uZXRoZWxlc3MsIFJUTVBfQWxsb2MgY2FuIGZhaWwgYW5kCisJICBsaWJydG1wJ3MgUlRNUF9pbml0KCkgKGNhbGxlZCBuZXh0KSBhc3N1bWVzIGEgbm9uLU5VTEwKKwkgIHBvaW50ZXIgaXMgcGFzc2VkIHdpdGhvdXQgY2hlY2tpbmcuCisJICBBZGRpdGlvbmFsbHksIHVuaWZ5IGV4aXQgcGF0aCBvbiBlcnJvci4KKworMjAxNS0xMi0yOSAxMTo1ODozMSAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvcnRtcC9nc3RydG1wLmM6CisJICBydG1wOiBjb3JyZWN0IGxpYnJ0bXAgbG9nLWxldmVsIG1hcHBpbmdzCisJICBBZGRpdGlvbmFsbHksIG1vdmUgdG8gYSBzd2l0Y2ggaW4gX3NldF9kZWJ1Z19sZXZlbCgpCisJICB0byBtYWtlIGVhc2llciB0byBmb2xsb3cgYW5kIGNvbXBhcmUgd2l0aCB0aGUKKwkgIG1hcHBpbmdzIGluIF9sb2dfY2FsbGJhY2soKQorCisyMDE1LTEyLTMwIDEzOjE2OjQwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSAgY29kZWNwYXJzZXJzOiB2cDk6IG1pbm9yIGNsZWFuLXVwCisJICBSZW1vdmUgc2V0dGluZyBvZiBwYXJzZXIgdmFyaWFibGUgdG8gTlVMTCBhZnRlciBmcmVlLAorCSAgdGhhdCBtYWtlcyBubyBzZW5zZSAoYW5kIGNvdmVyaXR5IGlzIG5vIGRvdWJ0IGdvaW5nCisJICB0byBjb21wbGFpbiBhYm91dCBpdCkuCisKKzIwMTUtMTItMzAgMTM6MTI6MTMgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmM6CisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5oOgorCSAgY29kZWNwYXJzZXJzOiB2cDk6IGZpeCBtYWNybyBuYW1lc3BhY2luZyBhbmQgcmVuYW1lIEdzdFZwOUludGVycEZpbHRlcgorCisyMDE1LTEyLTMwIDEzOjA4OjMwICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3R2cDlwYXJzZXIuaDoKKwkgIGNvZGVjcGFyc2VyczogdnA5OiBmaXggZG9jIHR5cG9zIGFuZCBzcHJpbmtsZSBzb21lIFNpbmNlIG1hcmtlcnMKKworMjAxNS0xMi0zMCAxMTowMzowNCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuQVVUSE9SUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuTElDRU5TRToKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuUEFURU5UUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuaDoKKwkgIGNvZGVjcGFyc2VyczogdnA5OiBtb3ZlIGxpY2Vuc2UgYmx1cmIgaW50byBoZWFkZXIgYW5kIHJlbW92ZSBhdXggZmlsZXMKKwkgIFRoaXMgaXMganVzdCBhIGJ1bmNoIG9mIGxvb2t1cCB0YWJsZXMuLgorCisyMDE1LTEyLTMwIDExOjU0OjI1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB3aW4zMi9jb21tb24vbGliZ3N0Y29kZWNwYXJzZXJzLmRlZjoKKwkgIHdpbjMyOiBVcGRhdGUgbGliZ3N0Y29kZWNwYXJzZXJzLmRlZiB3aXRoIHRoZSBuZXcgc3ltYm9scworCisyMDE1LTEyLTMwIDExOjU0OjE0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2Rib29saHVmZi5oOgorCSAgY29kZWNwYXJzZXJzOiBBZGQgYW5vdGhlciBHX0dOVUNfSU5URVJOQUwKKworMjAxNS0xMi0zMCAxMTo0MDo1OSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9kYm9vbGh1ZmYuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbmFsdXRpbHMuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvcGFyc2VydXRpbHMuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA4dXRpbHMuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuaDoKKwkgIGNvZGVjcGFyc2VyczogU3ByZWFkIHNvbWUgR19HTlVDX0lOVEVSTkFMIGluIHZhcmlvdXMgcGxhY2VzCisKKzIwMTUtMTItMzAgMTE6Mzg6MTQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYzoKKwkgIHZwOXBhcnNlcjogRml4IGluZGVudGF0aW9uIHRvIG1ha2UgZ3N0LWluZGVudCBoYXBwaWVyCisKKzIwMTUtMTItMzAgMTE6MzY6NDUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDl1dGlscy5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDl1dGlscy5oOgorCSAgdnA5cGFyc2VyOiBSZW5hbWUgc3ltYm9scyB0byBwcmV2ZW50IHN5bWJvbCBjb25mbGljdHMKKwkgIEFsc28gbWFrZSBjbGFtcCgpIGEgc3RhdGljIGZ1bmN0aW9uIGZvciB0aGUgc2FtZSByZWFzb24gYW5kIHVzZSBDTEFNUCAoYXMKKwkgIGRlZmluZWQgYnkgR0xpYikgaW4gdGhlIEdTdHJlYW1lciBjb2RlLgorCisyMDE1LTEyLTMwIDExOjE5OjMzICswMjAwICBTcmVlcmVuaiBCYWxhY2hhbmRyYW4gPHNyZWVyZW5qLmJhbGFjaGFuZHJhbkBpbnRlbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3R2cDlwYXJzZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuQVVUSE9SUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuTElDRU5TRToKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuUEFURU5UUzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuaDoKKwkgIGNvZGVjcGFyc2VyczogQWRkIFZQOSBjb2RlYyBwYXJzZXIKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc1OTcKKworMjAxNS0xMi0zMCAxMjoxMjoxNyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsbWVtb3J5cGJvOiBmaXggd3JhcHBpbmcgZGF0YSBvbiBHTCAyLjEKKwkgIEdMIDIuMSBvbmx5IHN1cHBvcnRzIHBibyB1cGxvYWQuCisJICBUaGUgd3JhcHBlZCBkYXRhIHBvaW50ZXIgd2FzIG9ubHkgYmVpbmcgc2V0IG9uIHRoZSBwYm8gbWVtb3J5IGFuZCBvbiB0aGUKKwkgIGdsbWVtb3J5IHNvIHdoZW4gYSBkb3dubG9hZCB3YXMgcmVxdWVzdGVkIChpbiBHTCAyLjEpLCBnbG1lbW9yeSB3YXMKKwkgIGFsbG9jYXRpbmcgYSBuZXcgZGF0YSBwb2ludGVyIGFuZCB0aHVzIG5vdCByZXR1cm5pbmcgdGhlIHdyYXBwZWQgZGF0YS4KKworMjAxNS0xMi0zMCAxMjoxMTowOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsbWVtb3J5cGJvOiBvbmx5IGNyZWF0ZSBhIHBibyBtZW1vcnkgaWYgdGhlIGNvbnRleHQgYWN0dWFsbHkgc3VwcG9ydHMgaXQKKwkgIGUuZy4gR0wgPD0gMi4wIGRvZXMgbm90IHN1cHBvcnQgcGJvIHVzYWdlIGFuZCBHTCAyLjEgb25seSBzdXBwb3J0cyBwYm8gdXBsb2FkLgorCisyMDE1LTEyLTMwIDEyOjA5OjI5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJICBnbG1lbW9yeTogc21hbGwgY29kZSByZWZvcm1hdAorCSAgbWFrZXMgdGhlIGFsbG9jX3BhcmFtcyBzZWxlY3Rpb25zIGZpdCBvbiBhIHNpbmdsZSBsaW5lLgorCisyMDE1LTEyLTMwIDEyOjA2OjE3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xtZW1vcnkuYzoKKwkgIHRlc3RzL2dsbWVtb3J5OiBvdXRwdXQgZGF0YSBwb2ludGVyIHZhbHVlcyBvbiBmYWlsdXJlCisJICBBbGxvd3MgcXVpY2tlciBpbnNwZWN0aW9uIG9mIHdoYXQgZmFpbGVkLgorCisyMDE1LTEyLTI5IDE3OjA0OjU3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkgIGdsZWZmZWN0czogZml4IHNoYWRlciBjb21waWxhdGlvbiB3aXRoIGxlZ2FjeSBvcGVuZ2wKKwkgIEFsbCB0aGUgZ2xlZmZlY3RzIHNoYWRlcnMgY2FuIGJlIHJ1biBhZ2FpbnN0IGEgZ2xlczIgb3IgYSBsZWdhY3kgb3BlbmdsIGdsc2wKKwkgIGNvbXBpbGVyIGJ1dCB3ZXJlbid0IGJlaW5nIGFkdmVydGlzZWQgYXMgc3VjaC4KKwkgIEZpeGVzIGdsZWZmZWN0cyB1bmRlciBkZXNrdG9wIG9wZW5nbCA8IDMuMi4KKworMjAxNS0xMi0yOSAxODowMTozMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSAgZ2xiYXNlbWVtb3J5OiBSZW1vdmUgYm9ndXMgTlVMTCBjaGVjaworCSAgQ0lEIDEzNDY1MzQKKworMjAxNS0xMi0yOSAxMDo1NzozNiArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJICBhcHBsZW1lZGlhOiBhdmZ2aWRlb3NyYzogb3V0cHV0IGF0IGhpZ2hlc3QgZnBzL3Jlc29sdXRpb24gYnkgZGVmYXVsdAorCSAgRml4YXRlIHRvIHRoZSBoaWdoZXN0IHBvc3NpYmxlIHJlc29sdXRpb24gYW5kIGZwcy4gT3RoZXJ3aXNlIGJ5IGRlZmF1bHQgd2UgZW5kCisJICB1cCBmaXhhdGluZyBhdCAyZnBzIGFuZCB0aGUgbG93ZXN0IHN1cHBvcnRlZCByZXNvbHV0aW9uLCB3aGljaCBpcyBoYXJkbHkgd2hhdAorCSAgc29tZW9uZSB3aG8gYm91Z2h0IGFuIG92ZXJwcmljZWQgc21hcnRwaG9uZSB3YW50cy4KKwogMjAxNS0xMi0yOCAxNTo1Mzo1OSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9zeW5jLmg6CiAJICBnbDogQWRkIFwwIHRlcm1pbmF0b3JzIGZvciB0aGUgQXBwbGUgc3luYyBleHRlbnNpb24KIAkgIE90aGVyd2lzZSBHTCBpbml0aWFsaXphdGlvbiBtaWdodCBjaGVjayBmb3IgZXh0ZW5zaW9ucyBmb3JldmVyIGFuZCBuZXZlciBmaW5pc2hlcy4KIAotMjAxNS0xMi0yMyAyMDoyNDo0NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTItMjggMTQ6NDE6NTkgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKLQkqIGdzdC9wY2FwcGFyc2UvZ3N0cGNhcHBhcnNlLmM6Ci0JICBwY2FwcGFyc2U6IGRvbid0IGNyYXNoIG9uIDAtc2l6ZWQgcGFja2V0cwotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU3MworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSAgZ2xjb250ZXh0OiBBZGQgc29tZSBkZWJ1ZyBvdXRwdXQgd2hlbiB0aGUgR0wgdGhyZWFkIGlzIGFjdHVhbGx5IHJ1bm5pbmcKIAotMjAxNS0xMi0xNyAxNTo1Njo1NyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTItMjIgMTE6MjM6MTkgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgogCi0JKiBleHQvb3BlbmpwZWcvZ3N0b3BlbmpwZWdkZWMuYzoKLQkgIG9wZW5qcGVnZGVjOiBEb24ndCBjcmFzaCB3aGVuIGRlY29kaW5nIHJldHVybnMgTlVMTCBkYXRhIGZvciBhbnkgY29tcG9uZW50Ci0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTQzCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkgIGRhc2hkZW11eDogcmVtb3ZlZCB1bm5lY2Vzc2FyeSBzcGFjZSB0cmltbWluZyBpbiBnc3RfZGFzaF9kZW11eF9wYXJzZV9odHRwX2hlYWQKKwkgIHNzY2FuZiBoYXMgcmVtb3ZlZCBhbGwgc3BhY2VzIHdoZW4gaXQgaGFzIGNvbnN0cnVjdGVkIHpvbmUgc3RyaW5nLiBUaGVyZSBpcworCSAgbm8gbmVlZCB0byBzZWFyY2ggZm9yIGxlYWRpbmcgc3BhY2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTc0MwogCi09PT0gcmVsZWFzZSAxLjYuMiA9PT0KKzIwMTUtMTItMjEgMTQ6NTA6MTUgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgogCi0yMDE1LTEyLTE0IDE5OjUxOjU3ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGFjY2VwdCAyIG9yIDQgZGlnaXQgeWVhciB3aGVuIHVzaW5nIEhUVFAgSEVBRCBmb3IgY2FsY3VsYXRpbmcgY2xvY2sgY29tcGVuc2F0aW9uCisJICBDb252ZXJ0IHllYXIgZnJvbSAyIGRpZ2l0cyB0byA0IGRpZ2l0cyBpbiBnc3RfZGFzaF9kZW11eF9wYXJzZV9odHRwX2hlYWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk3NDMKKwkgIEFsc28gdXBkYXRlZCByZWZlcmVuY2VzIHRvIFJmYzgyMiB0byBSZmM1MzIyCisKKzIwMTUtMTItMjcgMTE6Mzc6MDkgKzAxMDAgIEZsb3JlbnQgVGhpw6lyeSA8ZmxvcmVudC50aGllcnlAdWJpY2FzdC5ldT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJICBnbHNoYWRlcjogZml4IHVzYWdlIGRvYworCSAgVGhlIHByb3BlcnR5IGxvY2F0aW9uIGhhcyBiZWVuIGNoYW5nZWQgaW4gZmF2b3Igb2YgdmVydGV4L2ZyYWdtZW50CisJICBzdHJpbmcgcHJvcGVydGllczsgdGhlIGRvYyBoYWQgbm90IGJlZW4gdXBkYXRlZCBhbmQgd2FzIHN0aWxsIHJlZmVycmluZworCSAgdG8gdGhlIHByZXZpb3VzIHByb3BlcnR5OyBhbHNvLCBub3cgdGhlICN2ZXJzaW9uIGhlYWRlciBoYXMgYmVjb21lIG1hbmRhdG9yeQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTkwMgorCisyMDE1LTEyLTI2IDIyOjM0OjI5ICswMTAwICBGbG9yZW50IFRoacOpcnkgPGZsb3JlbnQudGhpZXJ5QHViaWNhc3QuZXU+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IFBvc3QgdW5oYW5kbGVkIG5hdmlnYXRpb24gZXZlbnRzIG9uIHRoZSBidXMKKwkgIEJhc2VkIG9mZiB4dmltYWdlc2luayBpbXBsZW1lbnRhdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTg2OQorCisyMDE1LTEyLTI3IDIyOjMyOjIyIC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSAgbW90aW9uY2VsbHM6IGZpeCBzcGxpdHRpbmcgb2YgUkdCIGNvbG9yIHN0cmluZworCSAgTm8gbmVlZCB0byBhdHRlbXB0IHNwbGl0dGluZyB0aGUgUkdCIHN0cmluZyBpbiAyNTUgdG9rZW5zCisJICBpZiB3ZSBvbmx5IGV4cGVjdCAzLgorCSAgTGVmdCBtYXhfdG9rZW5zIGF0IDQgdG8gcHJlc2VydmUgdGhlIGN1cnJlbnQgbG9naWMgKHdoaWNoCisJICBhbGxvd3MgZm9yIGV4dHJhIHN0dWZmIGF0IHRoZSBlbmQpIGFuZCBhZGRlZCBhIHdhcm5pbmcgb24KKwkgIHBhcnNpbmcgZmFpbHVyZSBpbnN0ZWFkIG9mIHNpbGVudGx5IGRpc2NhcmRpbmcgdGhlIHZhbHVlLgorCisyMDE1LTEyLTI3IDIxOjIzOjM3IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSAgbW90aW9uY2VsbHM6IGZpeCB0eXBvIGluIGhlYWRlcgorCisyMDE1LTEyLTI3IDIxOjE5OjE5IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSAgbW90aW9uY2VsbHM6IGZpeCBtaXNsZWFkaW5nIHdhcm5pbmcgbWVzc2FnZQorCSAgY2FsY3VsYXRlX21vdGlvbiAhPSBGQUxTRSBtZWFucyB0aGUgbW90aW9uIGNvbXB1dGF0aW9uCisJICBsb2dpYyBpcyBkaXNhYmxlZCwgbm90IGEgbWFwcGluZyBlcnJvci4KKworMjAxNS0xMi0yNyAyMToxMToxOCAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcDoKKwkgIG1vdGlvbmNlbGxzOiByZXdvcmsgcHJvcGVydHkgZGVzY3JpcHRpb25zCisKKzIwMTUtMTItMjcgMDE6MTE6NDIgLTA4MDAgIFJleW5hbGRvIEguIFZlcmRlam8gUGlub2NoZXQgPHJleW5hbGRvQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jcHA6CisJICBtb3Rpb25jZWxsczogdXNlIE5VTEwgaW5zdGVhZCBvZiBnX3N0cmR1cChOVUxMKQorCisyMDE1LTEyLTI4IDA5OjA0OjEyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJICBnbGJ1ZmZlcnBvb2w6IEZpeCBidWlsZCBlcnJvcgorCSAgV2hlbiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wgaXMgbm90IGRlZmluZWQsIHRoZW4gaW5mbyB2YXJpYWJsZQorCSAgd2lsbCBub3QgYmUgdXNlZCBhbmQgdGhpcyByZXN1bHRzIGluIGJ1aWxkIGVycm9yCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5OTEzCisKKzIwMTUtMTItMjQgMTU6Mjg6MjYgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIEJhY2sgdG8gZGV2ZWxvcG1lbnQKKworPT09IHJlbGVhc2UgMS43LjEgPT09CisKKzIwMTUtMTItMjQgMTQ6Mjg6NDIgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKIAkqIENoYW5nZUxvZzoKIAkqIE5FV1M6CkBAIC0xMDMsNyArNDg0Miw2IEBACiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmFnbWVudGVkLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbDoKQEAgLTExMSwxMSArNDg0OSwxMSBAQAogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbDoKIAkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWxpdmVhZGRlci54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbWltaWMueG1sOgogCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1tcy54bWw6CiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW9kcGx1Zy54bWw6CkBAIC0xNTQsOSArNDg5Miw5IEBACiAJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teTRtZGVjLnhtbDoKIAkqIGdzdC1wbHVnaW5zLWJhZC5kb2FwOgogCSogd2luMzIvY29tbW9uL2NvbmZpZy5oOgotCSAgUmVsZWFzZSAxLjYuMgorCSAgUmVsZWFzZSAxLjcuMQogCi0yMDE1LTEyLTE0IDE5OjI3OjU5ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorMjAxNS0xMi0yNCAxNDowMDo1NCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogcG8vYWYucG86CiAJKiBwby9hei5wbzoKQEAgLTIwMCwyOCArNDkzOCwxMzk3IEBACiAJKiBwby96aF9DTi5wbzoKIAkgIFVwZGF0ZSAucG8gZmlsZXMKIAotMjAxNS0xMi0xNCAxOToxNjoxMiArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTItMjQgMTI6MjM6MDAgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKKwkqIHBvL2NzLnBvOgogCSogcG8vZGEucG86CisJKiBwby9kZS5wbzoKIAkqIHBvL2h1LnBvOgogCSogcG8va3kucG86CisJKiBwby9uYi5wbzoKKwkqIHBvL25sLnBvOgorCSogcG8vcGwucG86CisJKiBwby9ydS5wbzoKKwkqIHBvL3NyLnBvOgogCSogcG8vc3YucG86CisJKiBwby91ay5wbzoKKwkqIHBvL3ZpLnBvOgorCSogcG8vemhfQ04ucG86CiAJICBwbzogVXBkYXRlIHRyYW5zbGF0aW9ucwogCi0yMDE1LTEyLTEyIDEwOjA3OjQ2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisyMDE1LTEyLTIzIDIzOjEzOjIxICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgogCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsZnRwc2luay5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGh0dHBzaW5rLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsc210cHNpbmsuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL3BjYXBwYXJzZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYzoKKwkgIHRlc3RzOiBmaXggaW5kZW50YXRpb24KKworMjAxNS0xMi0yMyAyMzoxMDo1MCArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcGNhcHBhcnNlLmM6CisJICB0ZXN0czogcGNhcHBhcnNlOiBhZGQgY2hlY2sgZm9yIDAtc2l6ZWQgcGFja2V0cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU3MworCisyMDE1LTEyLTIzIDIwOjI0OjQ2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jOgorCSAgcGNhcHBhcnNlOiBkb24ndCBjcmFzaCBvbiAwLXNpemVkIHBhY2tldHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1NzMKKworMjAxNS0xMi0yMyAxMzowNjo0NSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgorCSAgVXBkYXRlIGNvbW1vbgorCisyMDE1LTEyLTIzIDEzOjA0OjIzICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBwa2djb25maWcvTWFrZWZpbGUuYW06CisJKiBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbjoKKwkqIHBrZ2NvbmZpZy9nc3RyZWFtZXItcGxheWVyLnBjLmluOgorCSAgcGxheWVyOiBBZGQgcGtnLWNvbmZpZyBmaWxlcworCisyMDE1LTEyLTIzIDEyOjE2OjU0ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBhdXRvZ2VuLnNoOgorCSAgYXV0b2dlbi5zaDogRW5hYmxlIHBsYXllciB0ZXN0cyBieSBkZWZhdWx0CisJICBUaGlzIHdpbGwgYmUgYXV0b21hdGljYWxseSBiZSB1cGRhdGVkIHRvZ2V0aGVyIHdpdGggdGhlIG5leHQgY29tbW9uIHVwZGF0ZQorCSAgYWdhaW4uCisKKzIwMTUtMTItMjMgMDk6NTU6MjYgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIHRlc3RzL2NoZWNrL01ha2VmaWxlLmFtOgorCSogdGVzdHMvY2hlY2svbGlicy9wbGF5ZXIuYzoKKwkgIHBsYXllcjogQWRkIHVuaXQgdGVzdCB0aGF0IGlzIGRpc2FibGVkIGJ5IGRlZmF1bHQKKwkgIFRoZSB1bml0IHRlc3QgaXMgZG93bmxvYWRpbmcgYSBmZXcgc21hbGwgbWVkaWEgZmlsZXMgZnJvbSB0aGUgSW50ZXJuZXQsCisJICB3aGljaCBhcmUgdGhlbiB1c2VkIGR1cmluZyB0aGUgdGVzdC4gIm1ha2UgY2xlYW4iIHJlbW92ZXMgdGhlIGZpbGVzIGFnYWluLgorCisyMDE1LTEyLTIyIDE0OjQ0OjI4ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvTWFrZWZpbGUuYW06CisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sOgorCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkgIHBsYXllcjogSW50ZWdyYXRlIGludG8gdGhlIGRvY3VtZW50YXRpb24gYnVpbGQgc3lzdGVtCisKKzIwMTUtMTItMjIgMTQ6MjQ6MDAgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGdzdC1saWJzL2dzdC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmg6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci10eXBlcy5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmg6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmM6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmg6CisJKiBnc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci5jOgorCSogZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9wbGF5ZXIvcGxheWVyLmg6CisJKiB3aW4zMi9jb21tb24vbGliZ3N0cGxheWVyLmRlZjoKKwkgIHBsYXllcjogSW1wb3J0IEdzdFBsYXllciBwbGF5YmFjayBjb252ZW5pZW5jZSBBUEkKKwkgIEJhc2VkIG9uIGh0dHBzOi8vZ2l0aHViLmNvbS9zZHJvZWdlL2dzdC1wbGF5ZXIKKwkgIGNvbW1pdCA5Y2U2YWUwZGJiOGVlZWVmYWY3OTRjZmFlODBlMjc5YTAzY2M1OThkCisKKzIwMTUtMTItMjMgMDk6NTA6MTMgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSAgZ2xtZW1vcnlwYm86IENvbW1lbnQgb3V0IHVudXNlZCBmdW5jdGlvbnMgdG8gZml4IGNvbXBpbGF0aW9uIHdpdGggY2xhbmcKKwkgIEl0J3Mgbm90IGNsZWFyIGlmIHRoZXNlIGFyZSBpbnRlbnRpb25hbGx5IHVudXNlZCBvciB0aGUgY29kZSBzaG91bGQgYmUKKwkgIGNoYW5nZWQsIGJ1dCB0aGlzIGZpeGVzIGNvbXBpbGF0aW9uIGZvciB0aGUgdGltZSBiZWluZyBhdCBsZWFzdC4KKwkgIFNlZSBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5Njc5CisKKzIwMTUtMTEtMTAgMTY6MjU6NTMgKzAwMDAgIEFsZXggQXNobGV5IDxidWd6aWxsYUBhc2hsZXktZmFtaWx5Lm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jOgorCSAgaGxzZGVtdXg6IHRlc3RzOiBjaGVjayBVUkwgam9pbmluZyBpZiBtZWRpYSBVUkwgY29udGFpbnMgYSAnLycgY2hhcmFjdGVyCisJICBJZiB0aGUgcXVlcnkgcGFyYW1ldGVyIChmb3IgZXhhbXBsZQorCSAgaHR0cDovL2V4YW1wbGUubmV0LzEwNTQ1NTlfMTUwMGsubXA0L21hc3Rlci5tM3U4P2FjbD0vKjEwNTQ1NTlfMTUwMGsubXA0KSwKKwkgIGNoZWNrIHRoYXQgbTN1OC5jIGNvcnJlY3RseSBjb252ZXJ0cyB0aGUgcmVsYXRpdmUgVVJMcyBvZiB0aGUgbWVkaWEKKwkgIHBsYXlsaXN0cyBpbiB0byBhYnNvbHV0ZSBVUkxzLiBJdCBtdXN0IG5vdCB1c2UgdGhlIGxhc3QgJy8nIGl0IGZpbmRzIGluCisJICB0aGUgVVJMLCBhcyBhY2NvcmRpbmcgdG8gUkZDMzk4NiB0aGUgJy8nIGNoYXJhY3RlciBpcyBhbGxvd2VkIGluCisJICB0aGUgcXVlcnkgcGFydCBvZiB0aGUgVVJMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODM4NAorCisyMDE1LTExLTEwIDE2OjIzOjU5ICswMDAwICBBbGV4IEFzaGxleSA8YnVnemlsbGFAYXNobGV5LWZhbWlseS5uZXQ+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jOgorCSAgaGxzZGVtdXg6IHVucXVvdGUgYWxsIHRoZSBxdW90ZWQtc3RyaW5nIGF0dHJpYnV0ZXMKKwkgIFRoZSBVUkkgYXR0cmlidXRlIGZyb20gdGhlIEVYVC1YLUtFWSB0YWcgYW5kIHRoZSBVUkkgYXR0cmlidXRlIGZyb20gdGhlCisJICBFWFQtWC1JLUZSQU1FUy1PTkxZIHRhZyBhcmUgYm90aCBxdW90ZWQtc3RyaW5nIGF0dGlidXRlcyB0aGF0IGhhdmUgdGhlaXIKKwkgIHF1b3RhdGlvbiBtYXJrcyByZW1vdmVkIGR1cmluZyBwYXJzaW5nLiBUaGUgQ09ERUNTIGF0dHJpYnV0ZSBvZiB0aGUKKwkgIEVYVC1YLVNUUkVBTS1JTkYgaXMgYWxzbyBhIHF1b3RlZC1zdHJpbmcgYXR0cmlidXRlLCBidXQgdGhpcyBhdHRyaWJ1dGUKKwkgIHdhcyBub3QgYmVpbmcgdW4tcXVvdGVkLgorCSAgVGhpcyBjb21taXQgY2hhbmdlcyB0aGUgcGFyc2VyIHRvIGFsd2F5cyB1bnF1b3RlIGFsbCBxdW90ZWQtc3RyaW5nCisJICBhdHRyaWJ1dGVzIGFuZCBhZGp1c3RzIHRoZSB1bml0IHRlc3RzIHRvIHRoaXMgbmV3IGJldmFoaW91ciBmb3IgdGhlCisJICBDT0RFQ1MgYXR0cmlidXRlLgorCSAgQW4gYWRkaXRpb25hbCB0ZXN0IGlzIGFkZGVkIHRvIGNoZWNrIHRoYXQgcGFyc2luZyBvZiBhbGwgb2YgdGhlIGZpZWxkcworCSAgaW4gdGhlIEVYVC1YLVNUUkVBTSB0YWcgaXMgY29ycmVjdCwgaW5jbHVkaW5nIHRob3NlIHRoYXQgY29udGFpbiBjb21tYQorCSAgY2hhcmFjdGVycy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgzODQKKworMjAxNS0xMS0xMCAxNjo0MTowMiArMDAwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYzoKKwkgIGhsc2RlbXV4OiB0ZXN0czogYWRkIHVuaXQgdGVzdHMgZm9yIGhsc2RlbXV4CisJICBVc2luZyB0aGUgbmV3IEdzdEFkYXB0aXZlRGVtdXggdGVzdCBmcmFtZXdvcmssIGFkZCB0ZXN0cyB0aGF0CisJICBleGVyY2lzZSBobHNkZW11eC4gVGhlIGZvbGxvd2luZyB0ZXN0cyBhcmUgYWRkZWQ6CisJICBzaW1wbGVUZXN0CisJICBBIHNpbXBsZSBwbGF5bGlzdCB0aGF0IGNvbnRhaW5zIHNvbWUgbWVkaWEgVVJMcworCSAgdGVzdE1lZGlhUGxheWxpc3QKKwkgIEEgbWFzdGVyIHBsYXlsaXN0IHdpdGggYSB2YXJpYW50IHBsYXlsaXN0IHRoYXQgY29udGFpbnMgbWVkaWEgVVJMcworCSAgdGVzdE1lZGlhUGxheWxpc3ROb3RGb3VuZAorCSAgQSBtYXN0ZXIgcGxheWxpc3QgdGhhdCBwb2ludHMgdG8gYSBtaXNzaW5nIHZhcmlhbnQgcGxheWxpc3QKKwkgIHRlc3RGcmFnbWVudE5vdEZvdW5kCisJICBBIG1hc3RlciBwbGF5bGlzdCB3aXRoIGEgdmFyaWFudCBwbGF5bGlzdCB0aGF0IGNvbnRhaW5zIG1lZGlhIFVSTHMKKwkgIFRoZXJlIGlzIGEgbWlzc2luZyBtZWRpYSBmaWxlIHJlZmVyZW5jZWQgZnJvbSB0aGUgdmFyaWFudCBwbGF5bGlzdC4KKwkgIHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IKKwkgIEEgbWFzdGVyIHBsYXlsaXN0IHdpdGggYSB2YXJpYW50IHBsYXlsaXN0IHRoYXQgY29udGFpbnMgbWVkaWEgVVJMcworCSAgRHVyaW5nIHRoZSBkb3dubG9hZCBvZiBvbmUgbWVkaWEgZmlsZSwgdGhlIHRlc3Qgc2ltdWxhdGVzIHRoZSBuZXR3b3JrCisJICBjb25uZWN0aW9uIGJlaW5nIGRyb3BwZWQuCisJICB0ZXN0U2VlaworCSAgQSBzaW1wbGUgdGVzdCBvZiB0cnlpbmcgdG8gcGVyZm9ybSBhIHNlZWsgb24gYW4gSExTIHN0cmVhbS4KKworMjAxNS0xMS0xMCAxMzoxMzozNSArMDAwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5oOgorCSAgZGFzaGRlbXV4OiB0ZXN0czogUmVmYWN0b3IgaW50byBhZGFwdGl2ZV9lbmdpbmUgY29tcG9uZW50cworCSAgVG8gYWxsb3cgY29kZSBmcm9tIGRhc2hfZGVtdXguYyB0byBiZSB1c2VkIGJ5IG90aGVyIGVsZW1lbnRzCisJICB0aGF0IGFyZSBiYXNlZCB1cG9uIEdzdEFkYXB0aXZlRGVtdXgsIHRoZSBjb2RlIGhhcyBiZWVuCisJICByZWZhY3RvcmVkIGludG8gZm91ciBuZXcgZmlsZXM6CisJICBhZGFwdGl2ZV9kZW11eF9lbmdpbmUuW2NoXQorCSAgYWRhcHRpdmVfZGVtdXhfY29tbW9uLltjaF0KKwkgIFRoZSBjb2RlIGluIGFkYXB0aXZlX2RlbXV4X2VuZ2luZS5jIHByb3ZpZGVzIGEgZ2VuZXJpYworCSAgdGVzdCBlbmdpbmUgZm9yIGVsZW1lbnRzIGJhc2VkIHVwb24gR3N0QWRhcHRpdmVEZW11eC4KKwkgIFRoZSBjb2RlIGluIGFkYXB0aXZlX2RlbXV4X2NvbW1vbi5jIHByb3ZpZGVzIGEgc2V0CisJICBvZiB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFyZSBjb21tb24gYmV0d2VlbiB0aGUgdGVzdHMKKwkgIGZvciBobHNkZW11eCBhbmQgZGFzaGRlbXV4LgorCSAgQXMgcGFydCBvZiB0aGUgcmVmYWN0b3JpbmcsIHZhcmlhYmxlcyBpbiBzdHJ1Y3R1cmVzIHdlcmUKKwkgIHJlbmFtZWQgZnJvbSB1c2luZyBjYW1lbENhc2UgdG8gdW5kZXJzY29yZV9jYXNlIHRvIG1hdGNoIG90aGVyCisJICBHU3RyZWFtZXIgc291cmNlIGNvZGUuCisJICBUaGUgZmFrZV9odHRwX3NyYyB3YXMgcmVuYW1lZCB0ZXN0X2h0dHBfc3JjIGFuZCBjaGFuZ2VkIHRvIHVzZQorCSAgY2FsbGJhY2tzIHRvIHByb3ZpZGUgaW5wdXQgZGF0YSBhbmQgZXJyb3IgY29uZGl0aW9ucy4gUmF0aGVyIHRoYW4KKwkgIHVzaW5nIGFuIGFycmF5IG9mIGlucHV0IGRhdGEgdGhhdCB0cmllcyB0byBlbmNvZGUgYWxsIHRoZQorCSAgcG9zc2libGUgdXNlIGNhc2VzIGZvciB0aGUgR3N0VGVzdEhUVFBTcmMgZWxlbWVudCwgdXNlIGEgc3RydWN0IG9mCisJICBjYWxsYmFja3MuCisJICBVc2VycyBvZiB0aGlzIGVsZW1lbnQgYXJlIG9ibGlnZWQgdG8gaW1wbGVtZW50IGF0IGxlYXN0IHRoZSBzcmNfc3RhcnQKKwkgIGNhbGxiYWNrLCB3aGljaCBwcm92aWRlcyBhIHdheSB0byBsaW5rIGZyb20gYSBVUkkgdG8gdGhlIHNldHRpbmdzCisJICBmb3IgdGhhdCBVUkkuCisKKzIwMTUtMTItMjIgMTE6MTA6MzEgKzAyMDAgIE1hdHRoZXcgTWFyc2ggPG1hdHRAc3RvbmV0aHJlZS5jb20+CisKKwkqIHN5cy9udmVuYy9nc3RudmJhc2VlbmMuYzoKKwkgIG52ZW5jOiBmaXggaGlnaCBDUFUgdXNlIG9uIGluaXRpYWxpemF0aW9uIG9mIG11bHRpcGxlIGVuY29kZXJzIGF0IHRoZSBzYW1lIHRpbWUKKwkgIFdlIG5lZWQgYSBzdGF0aWMgbG9jayB0byBwcm90ZWN0IHZhcmlvdXMgTlZFTkMgbWV0aG9kcyBpbiBfc2V0X2Zvcm1hdCgpLiBXaXRob3V0CisJICB0aGlzIHRoZSBDUFUgdXNlIGluY3JlYXNlcyBkcmFtYXRpY2FsbHkgb24gaW5pdGlhbGlzYXRpb24gb2YgdGhlIGVsZW1lbnQgd2hlbgorCSAgdGhlcmUgYXJlIG11bHRpcGxlIGVsZW1lbnRzIGJlaW5nIGluaXRpYWxpc2VkIGF0IHRoZSBzYW1lIHRpbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NzQyCisKKzIwMTUtMTItMjIgMTA6MTU6MzkgLTAzMDAgIFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IG1ha2Ugc3VyZSBldmVyeSBiYWQgdXBkYXRlX3BsYXlsaXN0IHJldHVybiBzZXRzIGFuIGVycm9yCisJICBPdGhlcndpc2UgaXQgc2VnZmF1bHRzIHdoZW4gcmVwb3J0aW5nIHRoZSBlcnJvciBpbiB0aGUgYnVzCisKKzIwMTUtMTItMjEgMTM6NTc6MDQgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5jOgorCSAgdGVsZXRleHRkZWM6IFVzZSBOVUxMIGluc3RlYWQgb2YgZ19zdHJkdXAoJ1wwJykKKwkgIFdoaWNoIGlzIGVxdWl2YWxlbnQgdG8gZ19zdHJkdXAoTlVMTCkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NzI4CisKKzIwMTUtMTItMjEgMTI6MzM6MjUgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbW1vbjoKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIGNvbmZpZ3VyZTogVXNlIC1Cc3ltYm9saWMtZnVuY3Rpb25zIGlmIGF2YWlsYWJsZQorCSAgV2hpbGUgdGhpcyBpcyBtb3JlIHVzZWZ1bCBmb3IgbGlicmFyaWVzLCBzb21lIG9mIG91ciBwbHVnaW5zIHdpdGggbXVsdGlwbGUKKwkgIGZpbGVzIGFuZCBzb21lIGludGVybmFsIEFQSSBjYW4gYWxzbyBiZW5lZml0IGZyb20gdGhpcy4KKworMjAxNS0xMi0yMSAxMjoxOToxMSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IEZpeCBuYW1lIG9mIHRlc3RzdWl0ZQorCisyMDE1LTEyLTIxIDEyOjEzOjE1ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmM6CisJICBnbGNvbnRleHQ6IFNpZ25hbCBjb250ZXh0IGNyZWF0aW9uIGZyb20gaW5zaWRlIHRoZSBjb250ZXh0IGxvb3AgYW5kIHVzZSBnX3RocmVhZF9qb2luKCkgaW5zdGVhZCBvZiBhIGN1c3RvbSBjb25kaXRpb24gdmFyaWFibGUKKwkgIEFsc28gcHJvdGVjdCBhZ2FpbnN0IHNwdXJpb3VzIGNvbmRpdGlvbiB2YXJpYWJsZSB3YWtldXBzIGR1cmluZyBjb250ZXh0CisJICBjcmVhdGlvbi4KKworMjAxNS0xMi0yMSAxMToyNzowOSArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmM6CisJICBnbHdpbmRvdzogSGlkZSBuYXZpZ2F0aW9uIHNwZWNpZmljIGludGVybmFsIEFQSSBhbmQgYWRkIEFQSSB0byBhc3luY2hyb25vdXNseSBzZW5kIG5hdmlnYXRpb24gZXZlbnRzCisJICBFeHBvc2luZyB0aGUgbmF2aWdhdGlvbiB0aHJlYWQncyBtYWluIGNvbnRleHQsIEdTb3VyY2VGdW5jcyBhbmQgc3RydWN0cyBjYWxsZWQKKwkgIGtleV9ldmVudCBhbmQgbW91c2VfZXZlbnQgaXMgZXhwb3NpbmcgYSBiaXQgdG9vIG11Y2ggb2YgdGhlIGludGVybmFscy4gTGV0J3MKKwkgIGp1c3QgZ28gd2l0aCB0d28gZnVuY3Rpb25zIHRvIGFzeW5jaHJvbm91c2x5IHNlbmQgbmF2aWdhdGlvbiBldmVudHMgb24gdGhlCisJICB3aW5kb3cgd2l0aCB0aGUgc2FtZSBBUEkgYXMgdGhlIHN5bmNocm9ub3VzIG9uZXMuCisKKzIwMTUtMTItMjEgMTA6NDY6NTIgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93Lmg6CisJICBnbHdpbmRvdzogVXNlIGdfdGhyZWFkX2pvaW4oKSBpbnN0ZWFkIG9mIGEgY3VzdG9tIGNvbmRpdGlvbiB2YXJpYWJsZSBmb3Igd2FpdGluZyBmb3IgdGhlIG5hdmlnYXRpb24gdGhyZWFkIHRvIGZpbmlzaAorCSAgQWxzbyBoaWRlIHNvbWUgaW50ZXJuYWwgZnVuY3Rpb25zIGFuZCBmaWVsZHMgd2hpbGUgd2UncmUgYXQgaXQgYW5kIGZpeAorCSAgYSByYWNlIGNvbmRpdGlvbiB3aXRoIHRoZSBzdGFydHVwIGNvbmRpdGlvbiB2YXJpYWJsZS4KKworMjAxNS0xMS0zMCAwOTozNjowOSArMDgwMCAgSGFpaHVhIEh1IDxiNTU1OTdAZnJlZXNjYWxlLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJICBnbHdpbmRvdzogRml4IG1lbW9yeSBsZWFrIG9mIG5hdmlnYXRpb24gdGhyZWFkCisJICBXaGVuIHN0b3BwaW5nIHRoZSBuYXZpZ2F0aW9uIHRocmVhZCwgY2FsbCBnX3RocmVhZF9qb2luKCkgdG8gcmVsZWFzZQorCSAgdGhlIHJlc291cmNlcyBob2xkIGJ5IGl0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODgyMAorCisyMDE1LTEyLTE5IDIxOjI1OjQ5ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jOgorCSogZ3N0L2R2YnN1Ym92ZXJsYXkvZ3N0ZHZic3Vib3ZlcmxheS5jOgorCSAgYXNzcmVuZGVyLCBkdmJzdWJvdmVybGF5OiBmaXggZXhhbXBsZSBwaXBlbGluZXMgaW4gZG9jcworCisyMDE1LTEyLTE5IDIxOjEwOjU2ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogcmVmbG93IHVwZGF0ZV9wbGF5bGlzdCBhIGJpdAorCSAgUmVkdWNlIGluZGVudGF0aW9uIGJ5IGVycm9yaW5nIG91dCBkaXJlY3RseSBvbiBmYWlsdXJlLgorCisyMDE1LTEyLTE5IDIwOjU5OjEyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogZml4IHBvdGVudGlhbCBlcnJvciBsZWFrCisJICBDbGVhciBlcnJvciBhcyBzb29uIGFzIHdlIGRldGVybWluZSB0aGF0IHRoZSBkb3dubG9hZCBmYWlsZWQsCisJICBvdGhlcndpc2UgdGhlcmUgYXJlIGNvZGUgcGF0aHMgd2hlcmUgd2UgbWlnaHQgcmV0dXJuIHdpdGhvdXQKKwkgIGNsZWFyaW5nIGl0IGV2ZXIsIHdoaWNoIHdvdWxkIGxlYWsgdGhlIEdFcnJvciB0aGVuLiBBbHNvLCB3ZQorCSAgY2FuIHBhc3MgYSBOVUxMIEdFcnJvciBwb2ludGVyIHRvIF9mZXRjaF91cmkoKSwgc28ganVzdCBkbyB0aGF0CisJICBpbnN0ZWFkIG9mIHBhc3Npbmcgb25lIHRoYXQgd2UncmUgZ29pbmcgdG8ganVzdCBmcmVlIGFnYWluCisJICByaWdodCBhd2F5IGFueXdheS4KKworMjAxNS0xMi0xOSAxMjowNTo1OSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jcHA6CisJICBvcGVuY3Y6IHJlbW92ZSB1bm5lZWRlZCBzaW5rX2V2ZW50IGZ1bmN0aW9uIGluIHB5cmFtaWRzZWdtZW50CisKKzIwMTUtMTItMTkgMTI6MDQ6MDEgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuY3BwOgorCSAgb3BlbmN2OiByZW1vdmUgdW5uZWVkZWQgc2lua19ldmVudCBmdW5jdGlvbiBpbiB0ZXh0b3ZlcmxheQorCisyMDE1LTEyLTE4IDE4OjUxOjQ5IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHA6CisJICB0ZW1wbGF0ZW1hdGNoOiByZW1vdmUgdXNlbGVzcyBmdW5jdGlvbgorCisyMDE1LTEyLTE4IDExOjU2OjE3IC0wMzAwICBUaGlhZ28gU2FudG9zIDx0aGlhZ29zc0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBhbHdheXMgc2V0IHRpbWVzdGFtcCBvbiByZXZlcnNlIHBsYXliYWNrCisJICBEb3duc3RyZWFtIG5lZWRzIHRvIGJlIGFibGUgdG8gcmVzdG9yZSB0aGUgdGltZXN0YW1wcyBhZnRlciBhIGRpc2NvbnQKKwkgIHRvIGRvIHJldmVyc2UgcGxheWJhY2sKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1OTIKKworMjAxNS0xMi0xOCAxNTozNjo0MCAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29udmVydDogRml4IGNvbXBpbGF0aW9uIG9mIEdSQVkxNl9MRS9CRSBzaGFkZXIKKworMjAxNS0xMS0xMyAxNzoyNDozMCArMDEwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsdXBsb2FkOiBBZGQgZG1hYnVmIHVwbG9hZCBtZXRob2QuCisJICBUaGlzIHVwbG9hZCBtZXRob2QgZGV0ZWN0IGFuZCBvcHRpbWl6ZSB1cGxvYWRzIG9mIERNQUJ1ZiBtZW1vcnkuIFRoaXMgaXMKKwkgIGRvbmUgYnkgY3JlYXRpbmcgYW5kIGNhY2hpbmcgRUdMSW1hZ2VzIHdyYXBwZXIgYXJvdW5kIERNQUJ1Zi4gVGhlCisJICBFR0xJbWFnZXMgYXJlIHRoZW4gYmluZGVkIHRvIGEgdGV4dHVyZSB3aGljaCBnZXQgY29udmVydGVyIHVzaW5nCisJICBzdGFuZGFyZCBzaGFkZXIuCisJICBFeGFtcGxlIHBpcGVsaW5lOgorCSAgR1NUX0dMX1BMQVRGT1JNPWVnbCBcCisJICBnc3QtbGF1bmNoLTEuMCB2NGwyc3JjIGRldmljZT0vZGV2L3ZpZGVvMSBpby1tb2RlPTQgISBcCisJICB2aWRlby94LXJhdyxmb3JtYXQ9TlYxMiAhIGdsaW1hZ2VzaW5rCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQ1CisKKzIwMTUtMTItMTggMTU6NTI6NDYgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5jOgorCSAgZWdsaW1hZ2VtZW1vcnk6IEFsc28gaW1wb3J0IEJHUjE2LCBBQkdSLCB4QkdSLCBBWVVWLCBHUkFZMTZfTEUvQkUgYW5kIFk0NDQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzNDUKKworMjAxNS0xMi0xOCAxMTowODoyOSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmM6CisJICBlZ2xpbWFnZW1lbW9yeTogQWRkIFJHQi9CR1IgRE1BQnVmIGltcG9ydGF0aW9uIHN1cHBvcnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzNDUKKworMjAxNS0xMS0xMyAxNzo0MDowOCArMDEwMCAgTHVib3N6IFNhcm5lY2tpIDxsdWJvc3ouc2FybmVja2lAY29sbGFib3JhLmNvLnVrPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5Lmg6CisJICBlZ2xpbWFnZW1lbW9yeTogTWV0aG9kcyB0byBjcmVhdGUgR3N0R0xNZW1vcnkgZnJvbSBkbWFidWZzCisJICBNYXBzIEdzdFZpZGVvRm9ybWF0cyB0byBzdWl0YWJsZSBEUk0gZm91cmNjcyB3aGljaCB3b3JrIHdpdGgKKwkgIGdsY29sb3Jjb252ZXJ0LCB1c2luZyBnc3RfZ2xfbWVtb3J5X2FsbG9jKCkuIFdlIHJlcXVpcmUgbW9zdGx5CisJICBvbmx5IDQgZm9ybWF0cyB0byBiZSBzdXBwb3J0ZWQgYnkgdGhlIGRyaXZlci4gV2UgcmVxdWlyZSBEUk0KKwkgIGVxdWl2YWxlbnQgdG8gUkdCMTYsIFJHQkEsIFI4IGFuZCBSRzg4LiBUaGlzIHdheSBpdCdzIGNvbXBhdGlibGUgd2l0aAorCSAgRGVza3RvcEdMLCBzaW5jZSBHTF9URVhUVVJFXzJEIGlzIHVzZWQgYW5kIGxpbWl0IGRyaXZlciByZXF1aXJlbWVudHMuCisJICBXaXRoIHRoaXMgd2UgY2FuIHZpcnR1YWxseSBzdXBwb3J0IGFsbCBmb3JtYXRzIHRoZSBnbGNvbG9yY29udmVydAorCSAgc3VwcG9ydHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQ1CisKKzIwMTUtMTAtMDIgMTM6MzE6MzkgKzAyMDAgIEx1Ym9zeiBTYXJuZWNraSA8bHVib3N6LnNhcm5lY2tpQGNvbGxhYm9yYS5jby51az4KKworCSogY29uZmlndXJlLmFjOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSAgYnVpbGQ6IEFkZCBkbWFidWYgYnVpbGQgY29uZGl0aW9uLgorCSAgY29uZmlndXJlLmFjOiBCdWlsZCBkbWFidWYgd2hlbiBFR0wgYW5kIGRybV9mb3VyY2MuaCBpcyBhdmFpbGFibGUuCisJICBnbDogTGluayBnc3QtYWxsb2NhdG9ycy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDMzNDUKKworMjAxNS0xMS0xMyAxNzowOToxMyArMDEwMCAgTHVib3N6IFNhcm5lY2tpIDxsdWJvc3ouc2FybmVja2lAY29sbGFib3JhLmNvLnVrPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkgIGdsaW1hZ2VzaW5rOiBTaG93IGVycm9yIHdoZW4gdmlkZW8gZnJhbWUgaXMgbm90IG1hcHBlZC4KKwkgIEFkZHMgbW9yZSBtZWFuaW5nZnVsIGVycm9yIHRoYW4KKwkgICJGYWlsZWQgdG8gY29udmVydCBtdWx0aXZpZXcgdmlkZW8gYnVmZmVyIiwgd2hpY2ggaXMgYWx3YXlzIHVzZWQKKwkgIHdoZW4gcHJlcGFyZV9uZXh0X2J1ZmZlcigpIGZhaWxzIGluIGdzdF9nbGltYWdlX3NpbmtfcHJlcGFyZSgpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0MzM0NQorCisyMDE1LTExLTEzIDE3OjA1OjExICswMTAwICBMdWJvc3ogU2FybmVja2kgPGx1Ym9zei5zYXJuZWNraUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmg6CisJICBnc3RnbGNvbnRleHRfZWdsOiBFeHBvc2UgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQzMzQ1CisKKzIwMTUtMTItMTggMTY6NTY6MDQgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuY3BwOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5oOgorCSAgb3BlbmN2OiB1cGRhdGUgb3BlbmN2dGV4dG92ZXJsYXkgdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBvcGVuY3Z0ZXh0b3ZlcmxheSB0byBpbmhlcml0IGZyb20gR3N0T3BlbmN2VmlkZW9GaWx0ZXIgaW5zdGVhZCBvZgorCSAgZnJvbSBHc3RFbGVtZW50LiBUaGlzIG1lYW5zIGxlc3MgY29kZSBhbmQgbW9yZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgT3BlbkNWCisJICBlbGVtZW50cy4gVGhlIGNoYWluL3RyYW5zZm9ybSBmdW5jdGlvbiBpcyBub3cgYSB0aGlyZCBvZiB0aGUgc2l6ZSB0aGFuCisJICBiZWZvcmUuCisKKzIwMTUtMTItMTggMTY6MTg6NTIgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guaDoKKwkgIG9wZW5jdjogdXBkYXRlIHRlbXBsYXRlbWF0Y2ggdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBweXJhbWlkc2VnbWVudCB0byBpbmhlcml0IGZyb20gR3N0T3BlbmN2VmlkZW9GaWx0ZXIgaW5zdGVhZCBvZiBmcm9tCisJICBHc3RFbGVtZW50LiBUaGlzIG1lYW5zIGxlc3MgY29kZSBhbmQgbW9yZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgT3BlbkNWCisJICBlbGVtZW50cy4KKworMjAxNS0xMi0xOCAxNTo0ODoxNiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50Lmg6CisJICBvcGVuY3Y6IHVwZGF0ZSBweXJhbWlkc2VnbWVudCB0byBHc3RPcGVuY3ZWaWRlb0ZpbHRlcgorCSAgVXBkYXRlIHB5cmFtaWRzZWdtZW50IHRvIGluaGVyaXQgZnJvbSBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBpbnN0ZWFkIG9mIGZyb20KKwkgIEdzdEVsZW1lbnQuIFRoaXMgbWVhbnMgbGVzcyBjb2RlIGFuZCBtb3JlIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBPcGVuQ1YKKwkgIGVsZW1lbnRzLgorCisyMDE1LTEyLTE3IDE3OjI2OjI5ICswMjAwICBWaXZpYSBOaWtvbGFpZG91IDx2aXZpYUBhaGlydS5ldT4KKworCSogc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rLmNwcDoKKwkqIHN5cy9kZWNrbGluay9nc3RkZWNrbGluay5oOgorCSogc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rYXVkaW9zcmMuY3BwOgorCSogc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zaW5rLmNwcDoKKwkgIGRlY2tsaW5rdmlkZW9zaW5rOiBNYWRlICJhdXRvIiBtb2RlIHdvcmsgYWNjb3JkaW5nIHRvIGNhcHMKKwkgIFdoZW4gdGhlIG1vZGUgb2YgZGVja2xpbmt2aWRlb3NpbmsgaXMgc2V0IHRvICJhdXRvIiwgdGhlIHNpbmsgY2xhaW1zIHRvCisJICBzdXBwb3J0IHRoZSBmdWxsIHNldCBvZiBjYXBzIHRoYXQgaXQgY2FuIHN1cHBvcnQgZm9yIGFsbCBtb2Rlcy4gVGhlbiwgZXZlcnkKKwkgIHRpbWUgbmV3IGNhcHMgYXJlIHNldCwgdGhlIHNpbmsgd2lsbCBhdXRvbWF0aWNhbGx5IGZpbmQgdGhlIGNvcnJlY3QgbW9kZSBmb3IKKwkgIHRoZXNlIGNhcHMgYW5kIHNldCBpdC4KKwkgIENhdmVhdDogV2UgaGF2ZSBubyB3YXkgdG8ga25vdyB3aGV0aGVyIGEgc3BlY2lmaWMgbW9kZSB3aWxsIGFjdHVhbGx5IHdvcmsgZm9yCisJICB5b3VyIGhhcmR3YXJlLiBUaGVyZWZvcmUsIGlmIHlvdSB0cnkgc2VuZGluZyA0SyB2aWRlbyB0byBhIDEwODAgc2NyZWVuLCBpdAorCSAgd2lsbCBzaWxlbnRseSBmYWlsLCB3ZSBoYXZlIG5vIHdheSB0byBrbm93IHRoYXQgaW4gYWR2YW5jZS4gTWFudWFsbHkgc2V0dGluZworCSAgdGhhdCBtb2RlIGF0IGxlYXN0IGdhdmUgdGhlIHVzZXIgYSB3YXkgdG8gZG91YmxlLWNoZWNrIHdoYXQgdGhleSBhcmUgZG9pbmcuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NjAwCisKKzIwMTUtMTItMTggMTI6Mjg6MjMgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwOgorCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5oOgorCSAgb3BlbmN2OiB1cGRhdGUgbW90aW9uY2VsbHMgdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBtb3Rpb25jZWxscyB0byBpbmhlcml0IGZyb20gR3N0T3BlbmN2VmlkZW9GaWx0ZXIgaW5zdGVhZCBvZiBmcm9tCisJICBHc3RFbGVtZW50LiBUaGlzIG1lYW5zIGxlc3MgY29kZSBhbmQgbW9yZSB1bmlmb3JtaXR5IHdpdGggb3RoZXIgT3BlbkNWCisJICBlbGVtZW50cy4KKworMjAxNS0xMi0xOCAxMjoyNjoxNiArMDEwMCAgVGhvbWFzIFJvb3MgPHRob21hcy5yb29zQGluZHVzdHJvbmljLmRlPgorCisJKiBzeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYzoKKwkqIHN5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5oOgorCSAgZGlyZWN0c291bmRzcmM6IGFkZCBkZXZpY2UgcHJvcGVydHkgYXMgaXQgaXMgZG9uZSBpbiBkaXJlY3Rzb3VuZHNpbmsKKwkgIFRoaXMgYWxsb3dzIHNlbGVjdGlvbiBvZiB0aGUgZGV2aWNlIGJ5IEdVSUQgaW5zdGVhZCBvZiB0aGUgbmFtZS4gVGhlIG5hbWUgaXMKKwkgIHVzZXItZ2l2ZW4gYW5kIG11bHRpcGxlIGRldmljZXMgY2FuIGhhdmUgdGhlIHNhbWUgbmFtZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk0ODQKKworMjAxNS0xMi0xOCAxMjozNjoyNiArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmg6CisJICBkaXJlY3Rzb3VuZHNyYzogQ29udmVydCBoZWFkZXIgZnJvbSAoc29tZSkgRE9TIGxpbmUgZW5kaW5ncyB0byBVTklYCisJICBBIG1peCBiZXR3ZWVuIGRpZmZlcmVudCBsaW5lIGVuZGluZ3MgaW4gdGhlIHNhbWUgZmlsZSBpcyBub3QgYSBnb29kIGlkZWEsCisJICBhbmQgdGhlIC5jIGZpbGVzIGFyZSBib3RoIHdpdGggVU5JWCBsaW5lIGVuZGluZ3Mgc28gbGV0J3MgdXNlIHRoYXQuCisKKzIwMTUtMTItMTggMTA6MzA6MjUgKzAwMDAgIEp1bGllbiBJc29yY2UgPGouaXNvcmNlQHNhbXN1bmcuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkgIGFwcGxlbWVkaWE6IHNldCAtbW1hY29zeC12ZXJzaW9uLW1pbiB0byAxMC44CisJICBPdGhlcndpc2UgcXRraXR2aWRlb3NyYyBmYWlscyB0byBidWlsZCBvbiBPU1ggMTAuMTAuNAorCSAgYmVjYXVzZSBRVEtpdCBoYXMgYmVlbiBkZXByZWNhdGVkIHNpbmNlIE9TIFggMTAuOS4KKwkgIEFsc28gc2V0IC1tbWFjb3N4LXZlcnNpb24tbWluPTEwLjggaW4gZnJvbnQgdG8gYWxsb3cKKwkgIHRoZSB1c2VyIG9yIGNlcmJlcm8gdG8gb3ZlcnJpZGUgdGhlIHZlcnNpb24uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ1NTY0CisKKzIwMTUtMTItMTggMTM6MTc6MzQgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xvdmVybGF5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBnbG1lbW9yeTogYWRkIGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0CisJICBBZGQgZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgdG8gZ2V0IHRoZSBkZWZhdWx0IGFsbG9jYXRvciBiYXNlZCBvbgorCSAgdGhlIG9wZW5nbCB2ZXJzaW9uLiBBbGxvd3MgdXMgdG8gc3RvcCBoYXJkY29kaW5nIHRoZSBQQk8gYWxsb2NhdG9yIHdoaWNoIGlzbid0CisJICBzdXBwb3J0ZWQgb24gZ2xlczIuCisJICBGaXhlcyBHTCB1cGxvYWQgb24gaU9TOSBhbW9uZyBvdGhlciB0aGluZ3MuCisKKzIwMTUtMTItMTggMTE6NDk6MjUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CisJICBnbGltYWdlc2luazogZG9uJ3QgZGVhZGxvY2sgb24gcmVzaXplCisJICBQZXJmb3JtaW5nIGFueSBHTCBmdW5jdGlvbiBtYXJzaGFsbGluZyBvZmYgdGhlIEdMIHRocmVhZCB3aXRoIGdsaW1hZ2VzaW5rJ3MKKwkgIHJlbmRlciBsb2NrIGlzIHByb25lIHRvIGRlYWRsb2NrcyBiZXR3ZWVuIHRoZSBHTCB0aHJlYWQgYW5kIHRoZSBub24tR0wgdGhyZWFkLgorCSAgV2hhdCBjYW4gaGFwcGVuIGlzIHRoaXM6CisJICAxLiBub24tR0wgdGhyZWFkIGF0dGVtcHRzIHRvIGZ1bmN0aW9uIG1hcnNoYWwgdG8gdGhlIEdMIHRocmVhZC4KKwkgIDIuIHdoaWxlIDEgaXMgaGFwcGVuaW5nLCB0aGUgd2luc3lzIGdpdmVzIGFuIGV2ZW50IChzYXkgcmVzaXplKQorCSAgMy4gVGhpcyBjYWxscyBiYWNrIGludG8gZ2xpbWFnZXNpbmsgd2hpY2ggdGFrcyB0aGUgcmVuZGVyIGxvY2suCisJICA0LiBBcyB0aGUgR0wgZnVuY3Rpb24gbWFyc2hhbGxpbmcgaXMgYXR0ZW1wdGluZyB0byBydW4gb24gdGhlIEdMCisJICBhbmQgYWxyZWFkeSBoYXMgZ2xpbWFnZXNpbmsncyByZW5kZXIgbG9jayBsb2NrZWQuICBUaGlzIGRlYWRsb2NrcworCSAgYXMgdGhlIHRocmVhZHMgYXJlIHdhaXRpbmcgZm9yIGVhY2ggb3RoZXIuCisKKzIwMTUtMTItMTcgMTg6MTY6NDQgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuaDoKKwkgIG9wZW5jdjogdXBkYXRlIGVkZ2VkZXRlY3QgdG8gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKwkgIFVwZGF0ZSBlZGdlZGV0ZWN0IHRvIGluaGVyaXQgZnJvbSBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBpbnN0ZWFkIG9mIGZyb20KKwkgIEdzdEVsZW1lbnQuIFRoaXMgbWVhbnMgbGVzcyBjb2RlIGFuZCBtb3JlIHVuaWZvcm1pdHkgd2l0aCBvdGhlciBPcGVuQ1YKKwkgIGVsZW1lbnRzLgorCisyMDE1LTEyLTE3IDE1OjU2OjU3ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3BlbmpwZWcvZ3N0b3BlbmpwZWdkZWMuYzoKKwkgIG9wZW5qcGVnZGVjOiBEb24ndCBjcmFzaCB3aGVuIGRlY29kaW5nIHJldHVybnMgTlVMTCBkYXRhIGZvciBhbnkgY29tcG9uZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTQzCisKKzIwMTUtMTItMTUgMTQ6MTQ6MzYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oOgorCSAgZ2xiYXNlbWVtb3J5OiBkb24ndCB1bmNvbmRpdGlvbmFsbHkgYWRkIHRoZSBhbGlnbm1lbnQgYnl0ZXMgdG8gdGhlIHNpemUKKwkgIGUuZyB3aGVuIHdyYXBwaW5nIGEgZGF0YSBwb2ludGVyIHdlIGRvbid0IHdhbnQgdG8gbWFwL3VubWFwIG9mZiB0aGUgZW5kIG9mCisJICBwb2ludGVyIHdpdGggdGhlIGFsaWdubWVudCBieXRlcy4KKwkgIEluc3RlYWQgdHJhY2sgdGhhdCBpbmZvcm1hdGlvbiBzZXBhcmF0ZWx5IGFzIG1heHNpemUgaXMgdXNlZCBmb3IgbWFwcGluZyBieQorCSAgR3N0TWVtb3J5IGFuZCB0aHVzIHJlcHJlc2VudHMgYSBzaXplIHdpdGhvdXQgYW55IGFsaWdubWVudCBwYWRkaW5nIGJ5dGVzLgorCisyMDE1LTEyLTE3IDEwOjUxOjMxICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaDoKKwkgIG9wZW5jdjogYWRkIGJsdXIgYW5kIGJpbGF0ZXJhbCBzdXBwb3J0IGluIGN2c21vb3RoCisJICBBZGRpbmcgdGhlIHN1cHBvcnQgZm9yIHRoZSB0d28gb3RoZXIgT3BlbkNWIGxpbmVhciBmaWx0ZXJzIHRvIHNtb290aAorCSAgaW1hZ2VzLiBUaGUgbmV3IEFQSSBkb2VzIHN1cHBvcnQgc3BhdGlhbCBzaWdtYSBpbiB0aGUgYmlsYXRlcmFsIGZpbHRlciwKKwkgIGhlbmNlIGJyaW5naW5nIHRoYXQgcHJvcGVydHkgYmFjay4KKwkgIEFkZGluZyByZWZlcmVuY2UgdG8gbmV3IGRvY3VtZW50YXRpb24uCisKKzIwMTUtMTItMTcgMDg6NTE6NDggKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9wbm0vZ3N0cG5tZW5jLmM6CisJICBwbm1lbmM6IEZpeCB3cm9uZyBsb2dpYyBsZWFkaW5nIHRvIG1lbW9yeSBtaXNoYW5kbGluZworCSAgV2hpbGUgZW5jb2RpbmcgdGhlIGZyYW1lIGluIEFTQ0lJIG1vZGUsIHBlciBjb21wb25lbnQgZm91ciBieXRlcyBhcmUgbmVlZGVkCisJICBhbmQgYWZ0ZXIgZXZlcnkgMjAgYnl0ZXMsIGEgXG4gd2lsbCBiZSBhZGRlZC4gU28gdGhlIGNhbGN1bGF0aW9uIHNob3VsZCBiZQorCSAgc2l6ZSA9IHNpemUgKiAoNCArIDEgLyAyMCkuIFRoaXMgc2hvdWxkIGV4Y2x1ZGUgdGhlIGhlYWRlciBiZWluZyB3cml0dGVuLgorCSAgU2luY2UgaGVhZGVyIGlzIGFsc28gYmVpbmcgaW5jbHVkZWQgaW4gdGhlIGNhbGN1bGF0aW9ucywgbWVtb3J5IG1pc2hhbmRsaW5ncworCSAgYXJlIGhhcHBlbmluZy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MjAKKworMjAxNS0xMi0xNyAxNTo1MDo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuYzoKKwkgIGdsYnVmZmVyOiBhZGQgYSBuYW1lIHRvIHRoZSBhbGxvY2F0b3IKKworMjAxNS0xMi0xNyAxNToyMzoxMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2lvc3VyZmFjZW1lbW9yeS5jOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsKm1lbW9yeSo6IHJldmVyc2UgdGhlIHBhcmFtZXRlciBvcmRlciBvZiB1c2VyX2RhdGEgYW5kIGRlc3Ryb3kgbm90aWZ5CisJICBUaGUgY29udmVudGlvbiBpcyB0byBoYXZlIHRoZSBkZXN0cm95IG5vdGlmeSBsYXN0IGFmdGVyIGFueSB1c2VyIGRhdGEKKworMjAxNS0xMi0xNyAxNTowNzozMyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBhcHBsZW1lZGlhOiBmaXggYnVpbGQgb24gaU9TCisJICBGaXggYnVpbGQgYWZ0ZXIgNzc5ZGMzMTMyYzhmNmRkNTYwY2IwN2NjMmUyYzNjNzJhZWFhNzg0NQorCisyMDE1LTEyLTE3IDE0OjQ5OjEzICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubToKKwkgIGFwcGxlbWVkaWE6IGF2ZnZpZGVvc3JjOiBkbyBmaXhhdGUKKworMjAxNS0xMi0xNiAxODo0MTowNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xvdmVybGF5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xtZW1vcnkuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsbWVtb3J5cGJvOiByZW1vdmUgb3VyIG93biBhbGxvYygpL3dyYXBwZWQoKS9ldGMgZnVuY3Rpb25zCisJICByZXBsYWNlZCBieSBlcXVpdmFsZW50IGZ1bmN0aW9uYWxpdHkgd2l0aGluIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYygpCisKKzIwMTUtMTItMTYgMTg6Mzk6MzIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogZG9jdW1lbnQgZ3N0X2dsX21lbW9yeV9pbml0CisKKzIwMTUtMTItMTYgMTg6Mzg6MTkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsYnVmZmVyOiByZW1vdmUgdW5uZWVkZWQgZ3N0X2dsX2J1ZmZlcl9hbGxvYygpCisJICBSZXBsYWNlZCBieSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MoKQorCisyMDE1LTEyLTE2IDE4OjM3OjExICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuYzoKKwkgIGdsYmFzZW1lbW9yeTogZG9jdW1lbnQgc29tZSBmdW5jdGlvbnMKKworMjAxNS0xMi0xNiAxODozNjoxMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkgIGdsbWVtb3J5OiBhZGQgYSBkZWZhdWx0IGNvcHkgaW1wbGVtZW50YXRpb24KKwkgIFN1YmNsYXNzZXMgc3RpbGwgbmVlZCB0byBvdmVycmlkZSB0aGlzIHRvIGNvcHkgaW50byB0aGUgY29ycmVjdCBtZW1vcnkgdHlwZS4KKworMjAxNS0xMi0xNiAxODozMjo0MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmg6CisJICBnbGJ1ZmZlcnBvb2w6IHVzZSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgYXMgYSBnZW5lcmljIEdMIGFsbG9jYXRpb24gZnJhbWV3b3JrCisJICBSZXF1aXJlcyB0aGUgdXNhZ2Ugb2YgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgaG93ZXZlciBhbnkgdXNlciBjYW4gc2V0IHRoZWlyCisJICBvd24gcGFyYW1ldGVycyBhbG9uZyB3aXRoIGFuIGFsbG9jYXRvciB3aGljaCB3aWxsIGJlIHVzZWQgdG8gYWxsb2NhdGUgdGhlCisJICBjb3JyZWN0IG1lbW9yeSB0eXBlLgorCisyMDE1LTEyLTE2IDE4OjMwOjU5ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg6CisJICBnbG1lbW9yeXBibzogaW1wbGVtZW50IEdzdEdMQmFzZU1lbW9yeTphbGxvYworCSAgVXNlcyB0aGUgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgcGFyYW1ldGVycworCisyMDE1LTEyLTE2IDE4OjIzOjMxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmg6CisJICBnbGJ1ZmZlcjogaW1wbGVtZW50cyBHc3RHTEJhc2VNZW1vcnk6OmFsbG9jCisJICBDcmVhdGUgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIHdoaWNoIGlzIHN1YmNsYXNzIG9mIEdzdEdMQWxsb2NhdGlvblBhcmFtcworCisyMDE1LTEyLTE2IDE4OjIwOjE3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5Lmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBnbG1lbW9yeTogaW1wbGVtZW50IEdzdEdMQmFzZU1lbW9yeTo6YWxsb2MKKwkgIC0gQ3JlYXRlIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIHdoaWNoIGlzIGEgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHN1YmNsYXNzLgorCSAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIGFsbG9jYXRlIGdsbWVtb3J5IG9iamVjdHMgZGlyZWN0bHkgaWYgbm8gZnJpbGxzIGFyZQorCSAgbmVlZGVkLgorCisyMDE1LTEyLTE2IDE4OjEzOjIxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaDoKKwkgIGdsYmFzZW1lbW9yeTogYWRkIGEgZ2VuZXJpYyBpbnRlcmZhY2UgZm9yIGFsbG9jYXRpbmcgR0wgbWVtb3JpZXMKKwkgIFRoaXMgaXMgbWFkZSBwb3NzaWJsZSBieSBhIHN1YmNsYXNzYWJsZSBHc3RHTEFsbG9jYXRpb25QYXJhbXMgdGhhdCBob2xkcworCSAgdGhlIGFsbG9jYXRpb24gcGFyYW1ldGVycworCSAgRXZlcnkgYWxsb2NhdGlvbiB3b3VsZCBub3cgZ28gdGhyb3VnaCBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2Mgd2l0aCB0aGUKKwkgIGFsbG9jYXRpb24gcGFyYW1ldGVycyBub3cgYmVpbmcgc3BlY2lmaWVkIGluIGEgc2luZ2xlIHN0cnVjdCB0byBhbGxvdworCSAgZXh0ZW5zaW9uIGJ5IGRpZmZlcmVudCBhbGxvY2F0b3JzLgorCisyMDE1LTEyLTE3IDEyOjMwOjA1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbW1vbjoKKwkgIHJldmVydCBjb21tb24gc3VibW9kdWxlIGNoYW5nZQorCSAgOGFlMDAzMzI2MTU3NDM4YzEyYzQ1NTg5ZTA1MGM1ZjQ0NjcyM2Y2MSBjb250YWluZWQgYSBlcnJvbmVvdXMgY29tbW9uIGNoYW5nZQorCisyMDE1LTEyLTE3IDExOjA2OjM0ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jOgorCSAgUmV2ZXJ0ICJnbGJ1ZmZlcjogRG9uJ3QgcGFzcyBhbGxvY2F0aW9uIHBhcmFtcyIKKwkgIFRoaXMgcmV2ZXJ0cyBjb21taXQgMDUyZjQxZTVjMjkzZWMxN2MwMzg0NjdlZDFlN2I5MmIwNGQ0OTRiMC4KKwkgIFRoaXMgaXMgaW5jb3JyZWN0IGFuZCB3aWxsIGFmZmVjdCBhbnkgb3RoZXIgZ2xidWZmZXIgdXNlciB0aGF0IG5lZWRzL3dhbnRzIHRvCisJICBwZXJmb3JtIGRhdGEgYWxpZ25tZW50LgorCisyMDE1LTEyLTE2IDE5OjIxOjI0ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkgIG9wZW5jdjogYWRkIG1lZGlhbkJsdXIgc3VwcG9ydCBpbiBjdnNtb290aAorCSAgV2l0aCB0aGUgZGVwcmVjYXRpb24gb2YgY3ZTbW9vdGggd2UgaGF2ZSB0byBoYW5kbGUgdGhlIG90aGVyIHNtb290aGluZworCSAgZnVuY3Rpb25zIG1hbnVhbGx5LgorCisyMDE1LTEyLTE2IDE4OjM3OjM3ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaDoKKwkgIG9wZW5jdjogc3dpdGNoIGRlcHJlY2F0ZWQgY3ZTbW9vdGggZm9yIEdhdXNzaWFuQmx1cgorCSAgVGhlIE9wZW5DViBjdlNtb290aCBmdW5jdGlvbiBpcyBkZXByZWNhdGVkIFswXSBhbmQgdGhlIGRvY3VtZW50YXRpb24KKwkgIHJlY29tbWVuZHMgdG8gdXNlIEdhdXNzaWFuQmx1ciAoKS4gVGhpcyBtYWtlcyB0aGUgc3BhdGlhbCBwcm9wZXJ0eSBnbworCSAgdW51c2VkLiBNYXJraW5nIGl0IGFzIGRlcHJlY2F0ZWQsIG1ha2luZyBpdCBub24tZnVuY3Rpb25hbCBhbmQgd2lsbCByZW1vdmUKKwkgIGluIHRoZSBuZXh0IGN5Y2xlLgorCSAgWzBdIGh0dHA6Ly9kb2NzLm9wZW5jdi5vcmcvMi40L21vZHVsZXMvaW1ncHJvYy9kb2MvZmlsdGVyaW5nLmh0bWwKKworMjAxNS0xMi0xNiAxMTo1NjowOCAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuYzoKKwkgIGdsYnVmZmVyOiBEb24ndCBwYXNzIGFsbG9jYXRpb24gcGFyYW1zCisJICBUaGUgaW1wb3J0ZWQgbWVtb3J5IGhhcyBhbHJlYWR5IGJlZW4gYWxsb2NhdGVkLCBwYXNzaW5nIGFsbG9jYXRpb24KKwkgIHBhcmFtZXRlcnMgd2l0aCBhbGlnbm1lbnQgY29uZnVzZXMgdGhlIG1lbW9yeSB3aGljaCBlbmR1cCB3aXRoIGEKKwkgIHNpemUgZGlmZmVyZW50IGZyb20gbWF4c2l6ZSBhbmQgbGVhZCB0byBvdmVycnVuIHdoZW4gdGhlIG1lbW9yeQorCSAgaXMgYmVpbmcgY29waWVkLgorCisyMDE1LTEyLTE2IDEzOjU5OjE4ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgZGFzaGRlbXV4OiBpbXByb3ZlIHZhbGlkYXRpb24gb2YgVVRDdGltaW5nIGVsZW1lbnQKKwkgIGdzdF9tcGRwYXJzZXJfcGFyc2VfdXRjdGltaW5nX25vZGUgZG9lcyBub3QgdmFsaWRhdGUgdGhlIHBhcnNlZCB2YWx1ZXMgY29tcGxldGVseS4gVGhlIGZvbGxvd2luZyBzY2VuYXJpb3MgYXJlIGluY29ycmVjdGx5IGFjY2VwdGVkOgorCSAgLSBlbGVtZW50cyB3aXRoIG5vIHNjaGVtZUlkVXJpIHByb3BlcnR5IHNob3VsZCBiZSByZWplY3RlZAorCSAgLSBlbGVtZW50cyB3aXRoIHVucmVjb2duaXplZCBVVENUaW1pbmcgc2NoZW1lIHNob3VsZCBiZSByZWplY3RlZAorCSAgLSBlbGVtZW50cyB3aXRoIGVtcHR5IHZhbHVlcyBzaG91bGQgYmUgcmVqZWN0ZWQKKwkgIFRoZSBsYXN0IG9uZSB0cmlnZ2VycyBhIGRpdmlzaW9uIGJ5IDAgaW4gZ3N0X2Rhc2hfZGVtdXhfcG9sbF9jbG9ja19kcmlmdDoKKwkgIGNsb2NrX2RyaWZ0LT5zZWxlY3RlZF91cmwgPSBjbG9ja19kcmlmdC0+c2VsZWN0ZWRfdXJsICUgZ19zdHJ2X2xlbmd0aCAodXJscyk7CisJICBiZWNhdXNlIGl0IHVybHMgaXMgYSB2YWxpZCBwb2ludGVyIHRvIGFuIGVtcHR5IGFycmF5LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTU0NworCisyMDE1LTEyLTE2IDEwOjQxOjQ3ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGNsb2NrX2NvbmQgaXMgbm90IHVzZWQgYW5kIHNob3VsZCBiZSByZW1vdmVkCisJICBUaGVyZSBhcmUgbm8gdGhyZWFkcyB3YWl0aW5nIG9uIGNsb2NrX2NvbmQuIEl0IGlzIGp1c3QgaW5pdGlhbGlzZWQgYW5kCisJICBzaWduYWxsZWQuIEl0IHNob3VsZCBiZSByZW1vdmVkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUzNworCisyMDE1LTEyLTE2IDEwOjIzOjIzICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBmaXhlZCBjbG9jayBjb21wZW5zYXRpb24gaW4gZ2V0X2ZyYWdtZW50X3dhaXRpbmdfdGltZQorCSAgQ2xvY2sgY29tcGVuc2F0aW9uIGlzIGNhbGN1bGF0ZWQgaW4gdXNlYyBidXQgaXMgYWRkZWQgdG8gYSBHc3RDbG9ja1RpbWUgdmFsdWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTM0CisKKzIwMTUtMTItMTYgMTA6MjE6NTkgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtOgorCSAgYXBwbGVtZWRpYTogTGluayB0byBJT1N1cmZhY2UuZnJhbWV3b3JrIGZvciB0aGUgSU9TdXJmYWNlIEFQSQorCisyMDE1LTEyLTE1IDE3OjEwOjAwICswMDAwICBEYXZlIENyYWlnIDxkYXZlY3JhaWdAdW5iYWxhbmNlZGF1ZGlvLmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RkaXJhY3BhcnNlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjNwYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYzoKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NXBhcnNlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdG1wZWc0dmlkZW9wYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3RwbmdwYXJzZS5jOgorCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3R2YzFwYXJzZS5jOgorCSAgdmlkZW9wYXJzZXJzOiBDaGVjayBmb3IgTlVMTCByZXR1cm4gdmFsdWUgb2YgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzKCkKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MDMKKworMjAxNS0xMi0xNiAxNDozMjoyMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0L2l2dGMvZ3N0aXZ0Yy5jOgorCSAgaXZ0YzogRml4IHZhbHVlIG1lbW9yeSBsZWFrCisJICBndmFsdWUgdmFyaWFibGUgc2hvdWxkIGJlIHVuc2V0IGluc3RlYWQgb2YgcmVzZXQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTI1CisKKzIwMTUtMTItMTYgMTQ6Mjk6MjAgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9pdnRjL2dzdGNvbWJkZXRlY3QuYzoKKwkgIGNvbWJkZXRlY3Q6IEZpeCB2YWx1ZSBtZW1vcnkgbGVhaworCSAgZ3ZhbHVlIHZhcmlhYmxlIHNob3VsZCBiZSB1bnNldCBpbnN0ZWFkIG9mIHJlc2V0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMworCisyMDE1LTEyLTE2IDEzOjA4OjIyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvcG5tL2dzdHBubWRlYy5jOgorCSAgcG5tZGVjOiBGaXggc2Nhbm5lciBtZW1vcnkgbGVhaworCSAgRm9yIGNvcnJ1cHRlZCBmaWxlcywgc2Nhbm5lciBtZW1vcnkgaXMgYmVpbmcgbGVha2VkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMgorCisyMDE1LTEyLTE2IDEzOjA2OjQ1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvcG5tL2dzdHBubWRlYy5jOgorCSAgcG5tZGVjOiBGaXggYnVmZmVyIG1lbW9yeSBsZWFrCisJICBJbiBjYXNlIG9mIGNvcnJ1cHRlZCBmaWxlLCBzLT5idWYgYWxsb2NhdGVkIGlzIG5vdCBiZWluZyBmcmVlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMgorCisyMDE1LTEyLTE2IDA5OjA1OjQyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvcG5tL2dzdHBubWVuYy5jOgorCSAgcG5tZW5jOiBGaXggc3RyaW5nIG1lbW9yeSBsZWFrCisJICBoZWFkZXIgYmVpbmcgYWxsb2NhdGVkIGlzIG5vdCBmcmVlZCByZXN1bHRpbmcgaW4gbGVhaworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1OTUyMAorCisyMDE1LTEyLTE2IDA4OjUyOjEyICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvZ2RwL2dzdGdkcHBheS5jOgorCSAgZ2RwcGF5OiBGaXggYnVmZmVyIG1lbW9yeSBsZWFrCisJICBvdXRidWZmZXIgYmVpbmcgYWxsb2NhdGVkIGlzIG5vdCBiZWluZyBwdXNoZWQgdG8gcXVldWUgZm9yIEVPUyBldmVudCBhbmQgaGVuY2UKKwkgIHNob3VsZCBiZSBmcmVlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MTkKKworMjAxNS0xMi0xNiAwOTozOTowMyArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUuYW06CisJICBhcHBsZW1lZGlhOiBMaW5rIHRvIElPS2l0LmZyYW1ld29yayBmb3IgSU9TdXJmYWNlIHJlbGF0ZWQgZnVuY3Rpb25zCisKKzIwMTUtMTItMTYgMDk6MzM6MTIgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5hcmdzOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmhpZXJhcmNoeToKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5zaWduYWxzOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWN1cmwueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWd0c2RlbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNtdXgueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNwYW5kc3AueG1sOgorCSAgZG9jczogdXBkYXRlIHRvIGdpdAorCisyMDE1LTEyLTE2IDA4OjI1OjE5ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QveWFkaWYvdmZfeWFkaWYuYzoKKwkgIHlhZGlmOiBGaXggaWxsZWdhbCBtZW1vcnkgYWNjZXNzCisJICBXaGVuIGFwcGx5aW5nIHRoZSBzcGF0aWFsIHByZWRpY3Rpb24sIHRoZXJlIGlzIGFuIGlsbGVnYWwgYWNjZXNzIG9mIC0xIGluZGV4IG9mIGFycmF5LgorCSAgSGVuY2UgYWRkaW5nIGEgY29uZGl0aW9uIHRvIGF2b2lkIHRoaXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NTE4CisKKzIwMTUtMTItMTYgMDg6MjI6MDAgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC95YWRpZi9nc3R5YWRpZi5jOgorCSAgeWFkaWY6IEZpeCBndmFsdWUgbWVtb3J5IGxlYWsKKwkgIGd2YWx1ZSB2YXJpYWJsZSBzaG91bGQgYmUgdW5zZXQgaW5zdGVhZCBvZiByZXNldC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTk1MTgKKworMjAxNS0xMi0xNiAxNzowMjoyNyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IHRleHR1cmUtdGFyZ2V0IG9uIGlPUworCisyMDE1LTEyLTE2IDE1OjIwOjMwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIGFwcGxlbWVkaWE6IHZ0ZGVjOiByZW1vdmUgb2Jzb2xldGUgRklYTUUKKworMjAxNS0xMi0xNiAxNDozODo0NCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJICBhcHBsZW1lZGlhOiBhdmZ2aWRlb3NyYzogcmV3b3JrIEdMTWVtb3J5IG5lZ290aWF0aW9uCisJICBPbmx5IGRvIEdMTWVtb3J5IHdoZW4gYSBHc3RHTENvbnRleHQgaXMgYXZhaWxhYmxlIEFORCBHTE1lbW9yeSBpcyBhY3R1YWxseQorCSAgbmVnb3RpYXRlZCB3aXRoIGRvd25zdHJlYW0uCisKKzIwMTUtMTItMTYgMTM6NDc6MDAgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tOgorCSAgYXBwbGVtZWRpYTogYXZmdmlkZW9zcmM6IHVwZGF0ZSBhZnRlciBJT1N1cmZhY2UgY2hhbmdlcworCSAgUHJlZmVyIEdMTWVtb3J5IG92ZXIgc3lzbWVtLiBBbHNvIG5vdyB3aGVuIHB1c2hpbmcgR0xNZW1vcnkgd2UgcHVzaCB0aGUKKwkgIG9yaWdpbmFsIGZvcm1hdHMgKFVZVlkgaW4gT1NYLCBCR1JBIGluIGlPUykgYW5kIGxlYXZlIGl0IHRvIGRvd25zdHJlYW0gdG8KKwkgIGNvbnZlcnQuCisKKzIwMTUtMTItMTQgMTY6MTA6MDEgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5oOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogcmVtb3ZlIHRoZSBpbnRlcm5hbCBHc3RHTENvbG9yQ29udmVydAorCSAgSXQgd2FzIGFkZGVkIGJhY2sgaW4gdGhlIGRheSB0byBtYWtlIHRleHR1cmUgc2hhcmluZyB3b3JrIGJ5IGRlZmF1bHQgd2l0aAorCSAgZ2xpbWFnZXNpbmsgaW5zaWRlIHBsYXliaW4uIFRoZXNlIGRheXMgZ2xpbWFnZXNpbmsgYWNjZXB0cyAoYW5kIGNvbnZlcnRzKSBZVVYKKwkgIGludGVybmFsbHkgc28gaXQncyBubyBsb25nZXIgbmVlZGVkLgorCisyMDE1LTEyLTE0IDE0OjIzOjIwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIGFwcGxlbWVkaWE6IHZ0ZGVjOiBkZWNvdXBsZSBvdXRwdXR0aW5nIHRleHR1cmVzIGZyb20gb3V0cHV0dGluZyBSR0JBCisJICBXZSdyZSBnb2luZyB0byBiZSBhYmxlIHRvIG91dHB1dCBOVjEyIHRleHR1cmVzIHNvb24uCisKKzIwMTUtMTItMTEgMTM6MjA6MDUgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBjb21tb246CisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2lvc3VyZmFjZW1lbW9yeS5jOgorCSogc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5Lmg6CisJKiBzeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5oOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubToKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogc3dpdGNoIHRvIElPU3VyZmFjZSBvbiBNYWMKKwkgIFN3aXRjaCB0byB1c2luZyBJT1N1cmZhY2UgaW5zdGVhZCBvZiBDVk9wZW5HTFRleHR1cmVDYWNoZSBvbiBPU1guIFRoZSBsYXR0ZXIgY2FuJ3QgYmUKKwkgIHVzZWQgYW55bW9yZSB0byBkbyBZVVYgPT4gUkdCIHdpdGggb3BlbmdsMyBvbiBFbCBDYXBpdGFuIGFzIEdMX1lDQkNSXzQyMl9BUFBMRQorCSAgaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIHRoZSBvcGVuZ2wzIGRyaXZlci4gQWxzbyBzd2l0Y2ggdG8gTlYxMiBmcm9tIFVZVlksIHdoaWNoCisJICB3YXMgdGhlIG9ubHkgWVVWIGZvcm1hdCBzdXBwb3J0ZWQgYnkgQ1ZPcGVuR0xUZXh0dXJlQ2FjaGUuCisKKzIwMTUtMTItMTAgMTY6MjI6MDggKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbToKKwkqIHN5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm06CisJKiBzeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tOgorCSogc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL3ZpZGVvdGV4dHVyZWNhY2hlLm06CisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuaDoKKwkgIGFwcGxlbWVkaWE6IHJlbmFtZSBHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgdG8gR3N0VmlkZW9UZXh0dXJlQ2FjaGUKKwkgIEZpcnN0IG9mIGEgZmV3IGNvbW1pdHMgdG8gc3RvcCB1c2luZyBDVk9wZW5HTFRleHR1cmVDYWNoZSBvbiBPU1ggYW5kIHVzZQorCSAgSU9TdXJmYWNlcyBkaXJlY3RseSBpbnN0ZWFkLiBDVk9wZW5HTFRleHR1cmVDYWNoZSBoYXNuJ3QgYmVlbiB1cGRhdGVkIGZvciBPcGVuR0wKKwkgIDMgd2hpY2ggaXMgd2h5IHRleHR1cmUgc2hhcmluZyBpcyBjdXJyZW50bHkgZGlzYWJsZWQgb24gT1NYLgorCisyMDE1LTExLTE3IDE5OjMxOjUzICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvdnRkZWMuYzoKKwkgIFJldmVydCAidnRkZWM6IGRpc2FibGUgdGhlIHRleHR1cmUgY2FjaGUgb24gT1NYIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCBmMDI0MjVjNGFmY2Q4NTI2MGExYjM4N2FlZGRmODYzNzc0MjU3OTE3LgorCisyMDE1LTEyLTE1IDE0OjE3OjE2ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJICBnbHVwbG9hZDogZml4IGFsbG9jYXRvciBuYW1lIGFmdGVyIEdMTWVtb3J5IEFQSSBjaGFuZ2VzCisKKzIwMTUtMTItMTUgMTk6Mjg6MDUgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogZXh0L3F0L01ha2VmaWxlLmFtOgorCSAgcXRzaW5rOiBBZGQgY29uZmlndXJlZCBHTCBjZmxhZ3MgdG8gdGhlIGJ1aWxkCisJICBXZSBkb24ndCBkaXJlY3RseSBsaW5rIHRvIEdMIGluIHRoZSBlbGVtZW50LCB0aG91Z2ggd2UgdXNlIEdMIGhlYWRlcnMuCisJICBGb3IgdGhpcyByZWFzb24gd2UgbmVlZCB0byBpbmNsdWRlIHRoZSBwcm9wZXIgR0wgaGVhZGVycyBwYXRoLiBUaGlzCisJICBwcmV2ZW50IHRoaXMgZWxlbWVudCBmcm9tIHVzaW5nIGEgZGlmZmVyZW50IEdMIGhlYWRlciB0aGVuIGxpYmdzdGdsLgorCisyMDE1LTEyLTE1IDE5OjI1OjE2IC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5oOgorCSAgZ2w6IEFsbG93IHVzaW5nIG5vbi1zeXN0ZW0gbWVzYSB3aXRoIGJvdGggR0wgYW5kIEdMRVMKKwkgIEdDQyBhdXRvbWF0aWNhbGx5IGRpc2FibGUgcmVkdW5kYW5jZSB3YXJuaW5ncyBmb3Igc3lzdGVtIGhlYWRlcnMuIEFzCisJICBzb29uIGFzIHdlIHN0YXJ0IHVzaW5nIGEgbm9uLXN5c3RlbSBpbnN0YWxsZWQgbWVzYSwgd2Ugd291bGQgc3RhcnQKKwkgIGhhdmluZyBpc3N1ZXMuIFRoZSB0ZXN0IGZvciBib3RoIHdhc24ndCBzZXR0aW5nIGFueSBmbGFncywgc28gaXQgd291bGQKKwkgIHdvcmsgYnV0IHRoZW4gZmFpbCBhdCBydW50aW1lLgorCSAgVGhpcyBpcyBiZWluZyBmaXhlZCBieSBkaXNhYmxpbmcgaW4gdGhlIGNvZGUgKHdoZXJlIG5lZWRlZCBvbmx5KSB0aGF0CisJICBHQ0Mgd2FybmluZy4gVGhlIHRlc3QgaXMgYWxzbyBmaXhlZCB0byBhdm9pZCB0aGUgZmFsc2UgcG9zaXRpdmUgd2UgaGFkLgorCisyMDE1LTEyLTE1IDE1OjU5OjMwICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmNwcDoKKwkgIG9wZW5jdjogcHlyYW1pZHNlZ21lbnQ6IGZpeCBleGFtcGxlIGxhdW5jaCBsaW5lCisJICBVc2UgdmlkZW90ZXN0c3JjIGFuZCBhdXRvdmlkZW9zaW5rIGluIHRoZSBleGFtcGxlIGdzdC1sYXVuY2gtMS4wIGxpbmUgYW5kCisJICBub3QgYSB1c2VsZXNzIGZha2VzcmMtZmFrZXNpbmsgZXhhbXBsZS4KKworMjAxNS0xMi0xNSAxNTo1NjoxOSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zlcm9kZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jcHA6CisJICBvcGVuY3Y6IGFkZCBoZWFkZXJzIHdpdGggZXhhbXBsZSBsYXVuY2ggbGluZXMKKwkgIEFkZCBkZXNjcmlwdGlvbiBoZWFkZXJzIGZvciBhbGwgdGhlIE9wZW5DViBwbHVnaW5zIG1pc3NpbmcgdGhlbSwgc28gd2UgY2FuCisJICBoYXZlIGdzdC1sYXVuY2gtMS4wIGV4YW1wbGUgbGF1bmNoIGxpbmVzIGZvciBhbGwgb2YgdGhlbS4KKworMjAxNS0xMi0xNCAxNjo0ODo0NSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJICBvcGVuZ2w6IFVzZSBwa2ctY29uZmlnIGlmIGF2YWlsYWJsZQorCSAgbGliTWVzYSBzaGlwcyAucGMgZmlsZXMgbm93IGZvciBnbC9lZ2wvZ2xlc3YyLiBUaGlzIHBhdGNoIG1ha2VzIHVzZQorCSAgb2YgaXQgd2hpbGUga2VlcGluZyBzdXBwb3J0IGZvciBzeXN0ZW0gd2l0aG91dC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTEwNjgKKworMjAxNS0xMi0xNSAxMTo1OTowMCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RidWxnZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RjaXJjbGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0ZGlmZnVzZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RmaXNoZXllLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGthbGVpZG9zY29wZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWlycm9yLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBlcnNwZWN0aXZlLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBpbmNoLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHJvdGF0ZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzcGhlcmUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3F1YXJlLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHN0cmV0Y2guYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0dHVubmVsLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHR3aXJsLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHdhdGVycmlwcGxlLmM6CisJICBnZW9tZXRyaWN0cmFuc2Zvcm06IGFkZCBoZWFkZXJzIHdpdGggZXhhbXBsZSBsYXVuY2ggbGluZXMKKwkgIEFkZCBkZXNjcmlwdGlvbiBoZWFkZXJzIGZvciBhbGwgZ2VvbWV0cmljdHJhbnNmb3JtIGVsZW1lbnRzIHNvIHdlIGNhbiBoYXZlCisJICBnc3QtbGF1bmNoLTEuMCBleGFtcGxlIGxhdW5jaCBsaW5lcyBmb3IgYWxsIG9mIHRoZW0uCisKKzIwMTUtMTItMTQgMTE6MDk6NDYgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIFJFQURNRToKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJKiBleHQvY2hyb21hcHJpbnQvZ3N0Y2hyb21hcHJpbnQuYzoKKwkqIGV4dC9jdXJsL2dzdGN1cmxiYXNlc2luay5jOgorCSogZXh0L2N1cmwvZ3N0Y3VybGZpbGVzaW5rLmM6CisJKiBleHQvY3VybC9nc3RjdXJsZnRwc2luay5jOgorCSogZXh0L2N1cmwvZ3N0Y3VybGh0dHBzaW5rLmM6CisJKiBleHQvY3VybC9nc3RjdXJsc2Z0cHNpbmsuYzoKKwkqIGV4dC9jdXJsL2dzdGN1cmxzbXRwc2luay5jOgorCSogZXh0L2RhYWxhL2dzdGRhYWxhZGVjLmM6CisJKiBleHQvZGFhbGEvZ3N0ZGFhbGFlbmMuYzoKKwkqIGV4dC9kaXJlY3RmYi9kZmJ2aWRlb3NpbmsuYzoKKwkqIGV4dC9kdHMvZ3N0ZHRzZGVjLmM6CisJKiBleHQvZmFhYy9nc3RmYWFjLmM6CisJKiBleHQvZmFhZC9nc3RmYWFkLmM6CisJKiBleHQvZ2wvZ3N0Z2xidW1wZXIuYzoKKwkqIGV4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmM6CisJKiBleHQvZ2wvZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuYzoKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkqIGV4dC9nbC9nc3RnbGZpbHRlcnJlZmxlY3RlZHNjcmVlbi5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xzdGVyZW9zcGxpdC5jOgorCSogZXh0L2dsL2dzdGdsdGVzdHNyYy5jOgorCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKKwkqIGV4dC9rYXRlL2dzdGthdGVkZWMuYzoKKwkqIGV4dC9rYXRlL2dzdGthdGVlbmMuYzoKKwkqIGV4dC9rYXRlL2dzdGthdGVwYXJzZS5jOgorCSogZXh0L2thdGUvZ3N0a2F0ZXRhZy5jOgorCSogZXh0L2thdGUvZ3N0a2F0ZXRpZ2VyLmM6CisJKiBleHQvbGFkc3BhL2dzdGxhZHNwYS5jOgorCSogZXh0L2xpYnZpc3VhbC92aXN1YWwtZ2wuYzoKKwkqIGV4dC9tcGcxMjMvZ3N0bXBnMTIzYXVkaW9kZWMuYzoKKwkqIGV4dC9tcGxleC9nc3RtcGxleC5jYzoKKwkqIGV4dC9vcGVuYWwvZ3N0b3BlbmFsc2luay5jOgorCSogZXh0L29wZW5hbC9nc3RvcGVuYWxzcmMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNlbmMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNwYXJzZS5jOgorCSogZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXk6CisJKiBleHQvcmVzaW5kdmQvcmVzaW4tcGxheTI6CisJKiBleHQvcnN2Zy9nc3Ryc3ZnZGVjLmM6CisJKiBleHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5jOgorCSogZXh0L3J0bXAvZ3N0cnRtcHNpbmsuYzoKKwkqIGV4dC9ydG1wL2dzdHJ0bXBzcmMuYzoKKwkqIGV4dC9zbmRpby9zbmRpb3NpbmsuYzoKKwkqIGV4dC9zbmRpby9zbmRpb3NyYy5jOgorCSogZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmM6CisJKiBleHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jOgorCSogZXh0L3piYXIvZ3N0emJhci5jOgorCSogZ3N0L2FpZmYvYWlmZnBhcnNlLmM6CisJKiBnc3QvYXNmbXV4L2dzdGFzZm11eC5jOgorCSogZ3N0L2F1ZGlvZnhiYWQvZ3N0YXVkaW9jaGFubmVsbWl4LmM6CisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmM6CisJKiBnc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmM6CisJKiBnc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuYzoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuYzoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHdhdmVzY29wZS5jOgorCSogZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG92aWRlb2NvbnZlcnQuYzoKKwkqIGdzdC9jYW1lcmFiaW4yL2dzdGNhbWVyYWJpbjIuYzoKKwkqIGdzdC9jYW1lcmFiaW4yL2dzdHZpZXdmaW5kZXJiaW4uYzoKKwkqIGdzdC9jb2xvcmVmZmVjdHMvZ3N0Y2hyb21haG9sZC5jOgorCSogZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuYzoKKwkqIGdzdC9kYXRhdXJpc3JjL2dzdGRhdGF1cmlzcmMuYzoKKwkqIGdzdC9kZWJ1Z3V0aWxzL2Zwc2Rpc3BsYXlzaW5rLmM6CisJKiBnc3QvZGVidWd1dGlscy9nc3RjaG9wbXlkYXRhLmM6CisJKiBnc3QvZGVidWd1dGlscy9nc3RkZWJ1Z3NweS5jOgorCSogZ3N0L2RlYnVndXRpbHMvZ3N0d2F0Y2hkb2cuYzoKKwkqIGdzdC9kdmJzdWJvdmVybGF5L2dzdGR2YnN1Ym92ZXJsYXkuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJKiBnc3QvZmVzdGl2YWwvZ3N0ZmVzdGl2YWwuYzoKKwkqIGdzdC9maWVsZGFuYWx5c2lzL2dzdGZpZWxkYW5hbHlzaXMuYzoKKwkqIGdzdC9mcmVldmVyYi9nc3RmcmVldmVyYi5jOgorCSogZ3N0L2dhdWRpZWZmZWN0cy9nc3RidXJuLmM6CisJKiBnc3QvZ2F1ZGllZmZlY3RzL2dzdGNocm9taXVtLmM6CisJKiBnc3QvZ2F1ZGllZmZlY3RzL2dzdGRpbGF0ZS5jOgorCSogZ3N0L2dhdWRpZWZmZWN0cy9nc3Rkb2RnZS5jOgorCSogZ3N0L2dhdWRpZWZmZWN0cy9nc3RleGNsdXNpb24uYzoKKwkqIGdzdC9nYXVkaWVmZmVjdHMvZ3N0Z2F1c3NibHVyLmM6CisJKiBnc3QvZ2F1ZGllZmZlY3RzL2dzdHNvbGFyaXplLmM6CisJKiBnc3QvZ2RwL1JFQURNRToKKwkqIGdzdC9nZHAvZ3N0Z2RwZGVwYXkuYzoKKwkqIGdzdC9nZHAvZ3N0Z2RwcGF5LmM6CisJKiBnc3QvaWQzdGFnL2dzdGlkM211eC5jOgorCSogZ3N0L2ludGVyL2dzdGludGVyYXVkaW9zaW5rLmM6CisJKiBnc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NyYy5jOgorCSogZ3N0L2ludGVyL2dzdGludGVyc3Vic2luay5jOgorCSogZ3N0L2ludGVyL2dzdGludGVyc3Vic3JjLmM6CisJKiBnc3QvaW50ZXIvZ3N0aW50ZXJ2aWRlb3NpbmsuYzoKKwkqIGdzdC9pbnRlci9nc3RpbnRlcnZpZGVvc3JjLmM6CisJKiBnc3QvaW50ZXJsYWNlL2dzdGludGVybGFjZS5jOgorCSogZ3N0L2l2dGMvZ3N0Y29tYmRldGVjdC5jOgorCSogZ3N0L2l2dGMvZ3N0aXZ0Yy5jOgorCSogZ3N0L2pwMmtkZWNpbWF0b3IvZ3N0anAya2RlY2ltYXRvci5jOgorCSogZ3N0L2pwZWdmb3JtYXQvZ3N0amlmbXV4LmM6CisJKiBnc3QvanBlZ2Zvcm1hdC9nc3RqcGVncGFyc2UuYzoKKwkqIGdzdC9teGYvbXhmZGVtdXguYzoKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJKiBnc3QvbnV2ZGVtdXgvZ3N0bnV2ZGVtdXguYzoKKwkqIGdzdC9wbm0vZ3N0cG5tZGVjLmM6CisJKiBnc3QvcG5tL2dzdHBubWVuYy5jOgorCSogZ3N0L3Jhd3BhcnNlL1JFQURNRToKKwkqIGdzdC9yZW1vdmVzaWxlbmNlL2dzdHJlbW92ZXNpbGVuY2UuYzoKKwkqIGdzdC9zZHAvZ3N0c2RwZGVtdXguYzoKKwkqIGdzdC9zcGVlZC9nc3RzcGVlZC5jOgorCSogZ3N0L3N0ZXJlby9nc3RzdGVyZW8uYzoKKwkqIGdzdC92aWRlb2ZpbHRlcnMvZ3N0c2NlbmVjaGFuZ2UuYzoKKwkqIGdzdC92aWRlb2ZpbHRlcnMvZ3N0dmlkZW9kaWZmLmM6CisJKiBnc3QvdmlkZW9maWx0ZXJzL2dzdHplYnJhc3RyaXBlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGRpcmFjcGFyc2UuYzoKKwkqIGdzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmsuYzoKKwkqIGdzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmtkZXRlY3QuYzoKKwkqIGdzdC92aWRlb3NpZ25hbC9nc3R2aWRlb2FuYWx5c2UuYzoKKwkqIGdzdC95NG0vZ3N0eTRtZGVjLmM6CisJKiBnc3QveWFkaWYvZ3N0eWFkaWYuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2F0ZGVjLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9hdmZhc3NldHNyYy5tOgorCSogc3lzL2FwcGxlbWVkaWEvaW9zYXNzZXRzcmMubToKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJKiBzeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYzoKKwkqIHN5cy9kdmIvUkVBRE1FOgorCSogc3lzL2R2Yi9nc3RkdmJzcmMuYzoKKwkqIHN5cy9vcGVuc2xlcy9vcGVuc2xlc3NpbmsuYzoKKwkqIHN5cy9vcGVuc2xlcy9vcGVuc2xlc3NyYy5jOgorCSogc3lzL3NobS9nc3RzaG1zaW5rLmM6CisJKiBzeXMvc2htL2dzdHNobXNyYy5jOgorCSogc3lzL3ZkcGF1L2dzdHZkcHZpZGVvcG9zdHByb2Nlc3MuYzoKKwkqIHN5cy92ZHBhdS9tcGVnL2dzdHZkcG1wZWdkZWMuYzoKKwkqIHN5cy92ZHBhdS9tcGVnNC9nc3R2ZHBtcGVnNGRlYy5jOgorCSogc3lzL3dpbmtzL2dzdGtzdmlkZW9zcmMuYzoKKwkqIHN5cy93aW5zY3JlZW5jYXAvZ3N0ZHg5c2NyZWVuY2Fwc3JjLmM6CisJKiBzeXMvd2luc2NyZWVuY2FwL2dzdGdkaXNjcmVlbmNhcHNyYy5jOgorCSogdG9vbHMvZ3N0LWVsZW1lbnQtbWFrZXI6CisJICBwbHVnaW5zLWJhZDogRml4IGV4YW1wbGUgcGlwZWxpbmVzCisJICByZW5hbWUgZ3N0LWxhdW5jaCAtLT4gZ3N0LWxhdW5jaC0xLjAKKwkgIHJlcGxhY2Ugb2xkIGVsZW1lbnRzIHdpdGggbmV3IGVsZW1lbnRzKGZmbXBlZ2NvbG9yc3BhY2UgLT4gdmlkZW9jb252ZXJ0LCBmZmVuY18qKiAtPiBhdmVuY18qKikKKwkgIGZpeCBjYXBzIGluIGV4YW1wbGVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NDMyCisKKzIwMTUtMTItMTQgMTU6MDE6MDkgLTA1MDAgIE5pY29sYXMgRHVmcmVzbmUgPG5pY29sYXMuZHVmcmVzbmVAY29sbGFib3JhLmNvbT4KKworCSogLmdpdGlnbm9yZToKKwkgIGlnbm9yZTogdmlkZW9mcmFtZS1hdWRpb2xldmVsIHRlc3QKKworMjAxNS0xMi0xNCAxNDo0NDozMSAtMDUwMCAgWGF2aWVyIENsYWVzc2VucyA8eGF2aWVyLmNsYWVzc2Vuc0Bjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmcmFtZWJ1ZmZlci5oOgorCSogZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9nc3RpbnNlcnRiaW4uaDoKKwkgIGJhZDogQWRkIGdfYXV0b3B0cigpIHN1cHBvcnQgdG8gYWxsIHR5cGVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0NDY0CisKKzIwMTUtMTItMTQgMTI6MzE6NTIgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJICBnbHZpZXdjb252ZXJ0OiBjaGVjayBwb2ludGVyIGJlZm9yZSBkZXJlZmVyZW5jaW5nCisJICBwcml2LT5wcmltYXJ5X291dCBjb3VsZCBiZSBOVUxMLCBjaGVjayBiZWZvcmUgZGVyZWZlcmVuY2luZyBpdCBpbgorCSAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoKQorCSAgQ0lEIDEzMDg5NDUKKworMjAxNS0xMi0xNCAxMzo0MzoxMCArMDIwMCAgVml2aWEgTmlrb2xhaWRvdSA8dml2aWFAYWhpcnUuZXU+CisKKwkqIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmM6CisJICB2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWw6IEZpeCBwb3NzaWJsZSBkaXZpc2lvbiBieSB6ZXJvCisJICBJbiB1cGRhdGVfcm1zX2Zyb21fYnVmZmVyKCksIGRpdmlzaW9uIGJ5ICJmcmFtZXMiIHdhc24ndCBjaGVja2luZyB3aGV0aGVyCisJICAiZnJhbWVzIiBpcyB6ZXJvLgorCSAgQ0lEIDEzNDE1MTkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5NDQzCisKKzIwMTUtMTItMTQgMDk6Mzg6NDEgKzAxMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvY2x1dHRlcnNoYXJlLmM6CisJICBjbHV0dGVyOiBGaXggY29tcGlsYXRpb24gZXJyb3IgaW4gR0wgZXhhbXBsZXMKKwkgIEluY2x1ZGUgZ3N0L2dsLmggaW5zdGVhZCBvZiBzcGVjaWZpYyBoZWFkZXJzIHRvIHByZXZlbnQgc3VjaCBwcm9ibGVtcyBhbHNvIGluCisJICB0aGUgZnV0dXJlLgorCSAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nbC5oOjQ3OjAsCisJICBmcm9tIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaDoxMzcsCisJICBmcm9tIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOjI5LAorCSAgZnJvbSBjbHV0dGVyc2hhcmUuYzozOToKKwkgIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5oOjUxOjIwOiBlcnJvcjogZmllbGQg4oCYbWVt4oCZIGhhcyBpbmNvbXBsZXRlIHR5cGUKKwkgIEdzdEdMTWVtb3J5ICAgICAgbWVtOworCSAgXgorCSAgLi4vLi4vLi4vLi4vZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg6MTI0OjI0OiBlcnJvcjogZmllbGQg4oCYcGFyZW504oCZIGhhcyBpbmNvbXBsZXRlIHR5cGUKKwkgIEdzdEdMTWVtb3J5QWxsb2NhdG9yIHBhcmVudDsKKwkgIF4KKwkgIC4uLy4uLy4uLy4uL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5oOjEzNDoyOTogZXJyb3I6IGZpZWxkIOKAmHBhcmVudF9jbGFzc+KAmSBoYXMgaW5jb21wbGV0ZSB0eXBlCisJICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKKwkgIF4KKworMjAxNS0xMi0xNCAxOToxODoxNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUubToKKwkgIGFwcGxlbWVkaWE6IHVwZGF0ZSBmb3IgR0xNZW1vcnkgQVBJIGNoYW5nZXMKKworMjAxNS0xMi0xNCAxOToxNToxNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogdXBkYXRlIGZvciBHTE1lbW9yeSBBUEkgY2hhbmdlcworCisyMDE1LTEyLTE0IDE4OjQxOjMwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYzoKKwkgIHRlc3RzOiB1cGRhdGUgZm9yIGdsbWVtb3J5IGFwaSBjaGFuZ2VzCisKKzIwMTUtMTItMTQgMTg6MjA6MjMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJICBnbGJ1ZmZlcjogYmluZC91bmJpbmQgb24gbWFwL3VubWFwIGZvciBHTCBtYXBwaW5ncworCSAgQmluZCB0aGUgaGFuZGxlIHRvIHRoZSBHTCB0YXJnZXQgb24gbWFwL3VubWFwIHRvIHNhdmUgdGhlIGNhbGxlciBmcm9tCisJICBoYW5kbGluZyB0aGlzIHRoZW1zZWx2ZXMuCisKKzIwMTUtMTItMTQgMTg6MTk6MzcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuaDoKKwkgIGdsYnVmZmVyOiByZW1vdmUgYnVmZmVyIHNwZWNpZmljIHRyYW5zZmVyIGZsYWdzCisJICBJbnN0ZWFkIHJlbHkgb24gR3N0R0xCYXNlTWVtb3J5J3MgdHJhbnNmZXIgaGFuZGxpbmcKKworMjAxNS0xMi0xNCAxODoxODoyMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYzoKKwkgIGdsbWVtb3J5cGJvOiBtYXAvdW5tYXAgcGJvIG1lbW9yeSBjb3JyZWN0bHkgZm9yIHN0YXRlIHRyYWNraW5nCisJICBPdGhlcndpc2Ugc29tZSBkb3dubG9hZHMgd2lsbCBmYWlsIHRvIG9jY3VyIGZyb20gdGhlIFBCTy4KKworMjAxNS0xMi0xNCAxODoxNTo0MiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmM6CisJICB0ZXN0cy9nbG1lbW9yeTogaW5jbHVkZSB0aGUgZ2VuZXJpYyBnbCBoZWFkZXIKKwkgIEluY2x1ZGluZyBnc3RnbG1lbW9yeS5oIGRpcmVjdGx5IHJlc3VsdHMgaW4gdGhlIGNvbXBpbGVyIGNvbXBsYWluaW5nCisJICBhYm91dCBpbmNvbXBsZXRlIHR5cGVzLgorCisyMDE1LTEyLTE0IDE3OjA1OjMxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5jOgorCSAgZ2xmb3JtYXQ6IGFkZCBjb21wYXRpYmlsaXR5IGRlZmluaXRpb25zIGZvciBPRVMvcmVjdGFuZ2xlIHRleHR1cmVzCisKKzIwMTUtMTItMTQgMTM6NDk6MTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmM6CisJICBnbGJhc2VidWZmZXI6IHJlbW92ZSB1bnNlZCBtZW1vcnkgc3ViY2xhc3MKKwkgIFRoZSBmdW5jdGlvbmFsaXR5IGhhcyBiZWVuIHNwbGl0IGludG8gR3N0R0xCYXNlTWVtb3J5IGFuZCBHc3RHTEJ1ZmZlci4KKworMjAxNS0xMi0xNCAxMzo0Mzo1OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMudHlwZXM6CisJKiBleHQvZ2wvZ3N0Z2xkb3dubG9hZGVsZW1lbnQuYzoKKwkqIGV4dC9nbC9nc3RnbG92ZXJsYXkuYzoKKwkqIGV4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZm9ybWF0Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogYmFzZSBjbGFzc2lmeSBhbmQgYWRkIHRoZSBwYm8gbWVtb3J5IG9uIHRvcAorCSAgVGhlIGJhc2UgY2xhc3MgaXMgdXNlZnVsIGZvciBoYXZpbmcgbXVsdGlwbGUgYmFja2luZyBtZW1vcnkgdHlwZXMgb3RoZXIKKwkgIHRoYW4gdGhlIGRlZmF1bHQuICBlLmcuIElPU3VyZmFjZSwgRUdMSW1hZ2UsIGRtYWJ1Zj8KKwkgIFRoZSBQQk8gdHJhbnNmZXIgbG9naWMgaXMgbm93IGluc2lkZSBHc3RHTE1lbW9yeVBCTyB3aGljaCB1c2VzIEdzdEdMQnVmZmVyCisJICB0byBtYW5hZ2UgdGhlIFBCTyBtZW1vcnkuCisJICBUaGlzIGFsc28gbW92ZXMgdGhlIGZvcm1hdCB1dGlsaXR5IGZ1bmN0aW9ucyBpbnRvIHRoZWlyIG93biBmaWxlLgorCisyMDE1LTEyLTE0IDEzOjA4OjEwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYzoKKwkgIGdsOiBhZGQgYSBHTCBidWZmZXIgYmFzZWQgR3N0TWVtb3J5CisJICBIZWF2aWx5IGJhc2VkIG9uIEdzdEdMQmFzZUJ1ZmZlciB0aGF0IGlzIGEgc3ViY2xhc3Mgb2YgR3N0R0xCYXNlTWVtb3J5LgorCSAgUHJvdmlkZXMgR1BVIGFuZCBDUFUgYWNjZXNzaWJsZSBHTCBidWZmZXIgb2JqZWN0cyBieSBHTCBoYW5kbGUgb3IgYnkKKwkgIHN5c21lbSBkYXRhIHBvaW50ZXIuCisKKzIwMTUtMTItMTQgMTI6NTk6MDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg6CisJICBnbDogYWRkIGEgYmFzZSBtZW1vcnkgb2JqZWN0CisJICBJdCBoYW5kbGVzIHRoZSBmb2xsb3dpbmcKKwkgIC0gR3N0QWxsb2NhdGlvblBhcmFtcyAtPiBnc3RfbWVtb3J5X2luaXQgdHJhbnNmb3JtYXRpb24KKwkgIC0gTWFrZXMgc3VyZSB0aGF0IG1hcC91bm1hcC9jcmVhdGUvZGVzdHJveSBoYXBwZW4gb24gdGhlIEdMIHRocmVhZCB3aXRoCisJICBhIEdMIGNvbnRleHQgY3VycmVudC4KKwkgIC0gSG9sZHMgYSBwb3NzaWJsZSBzeXNtZW0gYWNjZXNzaWJsZSBkYXRhIHBvaW50ZXIgd2l0aCBhbGlnbm1lbnQuCisJICAtIEhvbGRzIHRoZSBuZWVkIHVwbG9hZC9kb3dubG9hZCB0cmFuc2ZlciBzdGF0ZQorCisyMDE1LTEyLTE0IDEyOjI2OjAxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5oOgorCSAgZ2w6IGFkZCBjb252ZW5pZW5jZSBmdW5jdGlvbiBmb3IgdGhlIHN0YXJ0IG9mIGEgdmlkZW8gZnJhbWUKKwkgIEdldCdzIHRoZSBzdGFydCBvZiB0aGUgdmlkZW8gZnJhbWUgYmFzZWQgb24gYSBHc3RWaWRlb0luZm8gYW5kCisJICBHc3RWaWRlb0FsaWdubWVudC4KKworMjAxNS0xMi0xMSAxNjowNzozNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sOgorCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5oOgorCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbHVwbG9hZC5jOgorCSAgZ2x1cGxvYWRtZXRhOyByZW1vdmUgY29udmVuaWVuY2UgaGVscGVyIEFQSQorCSAgSXQgd2FzIG5vdCByZWFsbHkgdXNlZnVsIGFzIGlmIG9uZSBrbm93cyBhYm91dCBsaWJnc3RnbCwgb25lIGNhbiBqdXN0IHVzZQorCSAgR0xNZW1vcnkgb2JqZWN0cyBkaXJlY3RseS4KKworMjAxNS0xMi0xMSAxNTozOTo1NyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sOgorCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlczoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb21peC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkb3dubG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuaDoKKwkgIGdsZG93bmxvYWQ6IHJlbW92ZSBoZWxwZXIgYXBpIGZyb20gdGhlIGxpYnJhcnkKKwkgIEl0IHdhcyBuZXZlciB1c2VkIGJ5IGFueW9uZSBhbmQgaXMgbm90IG5lZWRlZCBhbnltb3JlIHdpdGggdGhlIGVsZW1lbnQKKwkgIGFuZCBHc3RHTE1lbW9yeSdzIHRyYW5zcGFyZW50IHN1cHBvcnQgZm9yIGRvd25sb2FkaW5nIHRleHR1cmVzLgorCisyMDE1LTEyLTEyIDIwOjA3OjMyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuaDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5oOgorCSogZXh0L29wZW5jdi9nc3RjdmVyb2RlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmg6CisJKiBleHQvb3BlbmN2L2dzdGN2c21vb3RoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaDoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuaDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5Lmg6CisJKiBleHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuY3BwOgorCSogZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0Lmg6CisJKiBleHQvb3BlbmN2L2dzdGZhY2VibHVyLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuaDoKKwkqIGV4dC9vcGVuY3YvZ3N0ZmFjZWRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGdyYWJjdXQuY3BwOgorCSogZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5oOgorCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jcHA6CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmg6CisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuY3BwOgorCSogZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oOgorCSogZXh0L29wZW5jdi9nc3RyZXRpbmV4LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0cmV0aW5leC5oOgorCSogZXh0L29wZW5jdi9nc3RzZWdtZW50YXRpb24uY3BwOgorCSogZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5oOgorCSogZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5oOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jcHA6CisJKiBleHQvb3BlbmN2L2dzdHRleHRvdmVybGF5Lmg6CisJICBvcGVuY3Y6IGNsZWFuIGluY2x1ZGVzCisJICBUaGUgb3BlbmN2IGVsZW1lbnQgaW5jbHVkZXMgd2VyZSBmdWxsIG9mIGR1cGxpY2F0ZXMgYW5kIHVuZWVkZWQgaGVhZGVycy4KKwkgIEZvciBleGFtcGxlIGEgZmV3IGVsZW1lbnRzIHRoYXQgc3RvcHBlZCB1c2luZyBnc3Rjdm9wZW5jdnV0aWxzIHN0aWxsCisJICBpbmNsdWRlZCB0aGF0IGhlYWRlciBmaWxlLgorCisyMDE1LTEyLTEyIDE5OjMxOjU1ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuaDoKKwkgIG9wZW5jdjogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgaW4gZ3N0b3BlbmN2dXRpbHMKKwkgIFNpbmNlIGNvbW1pdCA0NWNhODg3NmIyZjUyNjdmN2VkYjg0MmI2ZDU2ZDdhNmMyNzFjY2IzIG5vYm9keSBpcyB1c2luZworCSAgZ3N0X29wZW5jdl9nZXRfaXBsX2RlcHRoX2FuZF9jaGFubmVscygpIG9yCisJICBnc3Rfb3BlbmN2X3BhcnNlX2lwbGltYWdlX3BhcmFtc19mcm9tX3N0cnVjdHVyZSgpLiBSZW1vdmUgdGhpcyBkZWFkCisJICBjb2RlLgorCisyMDE1LTEyLTEyIDE5OjEzOjQyICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01vdGlvbkNlbGxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvTW90aW9uQ2VsbHMuaDoKKwkgIG1vdGlvbmNlbGxzOiBSZW1vdmUgdW51c2VkIGluY2x1ZGVzCisKKzIwMTUtMTItMTIgMTA6MDY6NTUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgorCSAgcmV2ZXJ0IGNvbW1vbiBzdWJtb2R1bGUgY2hhbmdlCisKKzIwMTUtMTItMTIgMDk6MzM6MzggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29tbW9uOgogCSogZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYzoKIAkgIGdsdHJhbnNmb3JtYXRpb246IGNsZWFyIHRvIHRyYW5zcGFyZW50CiAJICBPdGhlcndpc2UgY29tcG9zaXRpb24gd2lsbCByZXN1bHQgaW4gYSBibGFjayBmcmFtZSBvdXRzaWRlIHRoZSB0cmFuc2Zvcm1lZAogCSAgdmlkZW8uCiAKLTIwMTUtMTItMDggMTY6MzU6NDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KLQotCSogZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9zeW5jLmg6Ci0JICBnbHByb3RvOiBpbmNsdWRlIGZ1bmN0aW9uIGRlZmluaXRpb25zIGZvciBHTF9BUFBMRV9zeW5jCi0JICBQcm92aWRlcyBhIHBlcmZvcm1hbmNlIGltcHJvdmVtZW50IG9uIGlPUyB3aGVyZSB3ZSB3ZXJlIGZhbGxpbmcgYmFjayB0byBnbEZpbmlzaAotCSAgb24gc2V0dHRpbmcgc3luYyBwb2ludHMuCi0KIDIwMTUtMTItMTEgMTE6Mzk6MDggKzAxMDAgIFRob21hcyBSb29zIDx0aG9tYXMucm9vc0BpbmR1c3Ryb25pYy5kZT4KIAogCSogc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmM6CkBAIC0yMzAsMTcgKzYzMzcsNTAyIEBACiAJICBBbHNvIHRha2UgdGhlIGVsZW1lbnQncyBtdXRleCBpbiB1bnByZXBhcmUoKS4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzgyOTIKIAorMjAxNS0xMi0xMCAxMjo0NzoxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZkZW11eC5jOgorCSAgbXhmZGVtdXg6IE9ubHkgcHJlLXNldCBwb3NpdGlvbiBmb3IgZXhhY3RseSB0aGUgc2FtZSBlc3NlbmNlIHRyYWNrCisJICBUaGUgZWRpdCByYXRlIGlzIG9ubHkgc3VwcG9zZWQgdG8gYmUgdGhlIHNhbWUgaW4gYSBzb3VyY2UgcGFja2FnZSwgYnV0IHRoZXJlCisJICBtaWdodCBiZSBtdWx0aXBsZSBzb3VyY2UgcGFja2FnZXMgd2l0aCB0aGUgc2FtZSBlc3NlbmNlIGNvbnRhaW5lci4gQXMgc3VjaAorCSAganVzdCBjb21wYXJpbmcgdGhlIGJvZHkvaW5kZXggU0lEIGlzIG5vdCBzdWZmaWNpZW50LgorCisyMDE1LTEyLTEwIDEyOjI1OjU0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmRlbXV4LmM6CisJICBteGZkZW11eDogT25seSBwcmUtc2V0IHRoZSB0cmFjayBwb3NpdGlvbiBpZiBpdCdzIGZvciB0aGUgc2FtZSBib2R5L2luZGV4IFNJRAorCisyMDE1LTEyLTEwIDE0OjQxOjQ0ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5tOgorCSAgbGliZ3N0Z2w6IGdzdGdsY29udGV4dF9jb2NvYToga0NHTFBGQVN0ZXJlbyBoYXMgYmVlbiBkZXByZWNhdGVkIGluIDEwLjExCisJICBBbHNvIHNpbmNlIHRoZSB2ZXJzaW9uIHNjaGVtZSBoYXMgY2hhbmdlZCAodG8gaW5jbHVkZSB0aGUgbWljcm8gbnVtYmVyKSBzaW5jZQorCSAgMTAuMTAsIHVzZSB0aGUgTUFDX09TX1hfVkVSU0lPTl8qIG1hY3JvIHRvIGF2b2lkIGNvbmZ1c2lvbi4KKworMjAxNS0xMi0xMCAxMjo0MTowMCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuYzoKKwkgIGdsYnVmZmVycG9vbDogcmVsYXggY2hlY2sgZm9yIG11bHRpcGxlIHRleHR1cmUgdGFyZ2V0cworCSAgT25seSBjb21wbGFpbiBhYm91dCBtdWx0aXBsZSB0ZXh0dXJlIHRhcmdldHMgd2hlbiBfZGlmZmVyZW50XyB0ZXh0dXJlIHRhcmdldHMKKwkgIGFyZSBjb25maWd1cmVkLgorCisyMDE1LTEyLTEwIDEyOjMzOjUyICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmM6CisJICBnbG1lbW9yeTogdGFrZSBzdWJzYW1wbGluZyBpbnRvIGFjY291bnQgZm9yIHJlY3RhbmdsZSB0ZXh0dXJlcworCSAgUmVjdGFuZ2xlIHRleHR1cmVzIGRvbid0IHVzZSBub3JtYWxpemVkIGNvb3JkaW5hdGVzIHNvIHN1YnNhbXBsaW5nIG5lZWRzIHRvIGJlCisJICBmYWN0b3JlZCBpbiBleHBsaWNpdGx5LgorCSAgRml4ZXMgWVVWID0+IFJHQiBjb252ZXJzaW9uIGZvciByZWN0YW5nbGUgdGV4dHVyZXMuCisKKzIwMTUtMTItMDkgMTY6NTU6MDAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmZGVtdXguYzoKKwkgIG14ZmRlbXV4OiBPbmx5IGFjY2VzcyB0aGUgaW5kZXggdGFibGUgaWYgaXQgaGFzIGVub3VnaCBlbGVtZW50cworCisyMDE1LTEyLTA5IDE2OjI4OjUzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmRlbXV4LmM6CisJICBteGZkZW11eDogVXNlIGtleWZyYW1lIGluZm9ybWF0aW9uIGZyb20gaW5kZXggdGFibGUgc2VnbWVudHMgaWYgYXZhaWxhYmxlCisJICBXZSBkb24ndCBpbXBsZW1lbnQga2V5ZnJhbWUgZGV0ZWN0aW9uIGZvciBhbGwgY29kZWNzIGFuZCB0aGlzIHdpbGwgYWxsb3cgdXMgdG8KKwkgIGltcGxlbWVudCBiZXR0ZXIgc2Vla2luZy4KKworMjAxNS0xMi0wOSAxNjozMToxOSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZkZW11eC5jOgorCSAgbXhmZGVtdXg6IENvbGxlY3QgYWxsIGluZGV4IHRhYmxlIHNlZ21lbnRzIGFmdGVyIGZpbmRpbmcgdGhlIHJhbmRvbSBpbmRleCBwYWNrCisJICBUaGF0IHdheSB3ZSBhbHdheXMgaGF2ZSB0aGUgaW5kZXggdGFibGUgaW5mb3JtYXRpb24gYXZhaWxhYmxlLCBlc3BlY2lhbGx5IHRoZQorCSAga2V5ZnJhbWUtbmVzcyBvZiBhbGwgYnVmZmVycy4KKworMjAxNS0xMi0wOCAxODoxNTo1NSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZkZW11eC5jOgorCSogZ3N0L214Zi9teGZkZW11eC5oOgorCSogZ3N0L214Zi9teGZ0eXBlcy5oOgorCSAgbXhmZGVtdXg6IEZpeCBoYW5kbGluZyBvZiBJbmRleFRhYmxlU2VnbWVudHMKKwkgIFRoaXMgd2FzIGNvbXBsZXRlbHkgYnJva2VuIGJlZm9yZSBhbmQgY291bGQgb25seSB3b3JrIG9uIGEgdmVyeSBjb25zdHJhaW5lZAorCSAgc2V0IG9mIGZpbGVzLiBBZnRlciB0aGVzZSBjaGFuZ2VzIGl0IHNob3VsZCB3b3JrIGV4Y2VwdCBmb3Igc2l0dWF0aW9ucyB3aGVyZQorCSAgUFRTICE9IERUUywgd2hpY2ggaXMgbm90IGhhbmRsZWQgYXQgYWxsIGluIG14ZmRlbXV4IGN1cnJlbnRseS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTkxMTgKKworMjAxNS0xMi0wOCAxNDowNjoyMSAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBhdm9pZCBwdXNoaW5nIGV2ZW50cyB3aXRoIG1hbmlmZXN0IGxvY2sKKwkgIEl0IGNhbiBiZSBhbiBlYXN5IHNvdXJjZSBvZiBkZWFkbG9ja3MuIFJlcHJvZHVjaWJsZSB3aXRoIHZlcnkKKwkgIGZhc3QgY29ubmVjdGlvbnMgKGxvY2FsIHNlcnZlcikuCisKKzIwMTUtMTItMDggMjA6MjQ6NDUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmdHlwZXMuYzoKKwkgIG14ZnR5cGVzOiBGaXggcGFyc2luZyBvZiBpbmRleCB0YWJsZSBzZWdtZW50cworCisyMDE1LTEyLTA4IDE4OjIzOjAyICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBIYW5kbGUgYWdncmVnYXRpb24gd2l0aCBOVUxMIGJ1ZmZlcnMgd2l0aG91dCBjcmFzaGluZworCisyMDE1LTEyLTA4IDE2OjQ1OjMzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBBZGQgRklYTUUgYWJvdXQgZW5mb3JjaW5nIHRoYXQgYWxsIHRyYWNrcyBpbiBhIHNvdXJjZSBwYWNrYWdlIGhhdmUgdGhlIHNhbWUgZWRpdCByYXRlCisJICBUaGUgc3RhbmRhcmQgcmVxdWlyZXMgdGhpcyBhbmQgYWxzbyB0aGUgaW5kZXggdGFibGUgc2VnbWVudHMgYXJlIG5vdCBnb2luZyB0bworCSAgd29yayBvdGhlcndpc2UuCisKKzIwMTUtMTItMDcgMjA6Mjc6MjMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJKiBnc3QvbXhmL214Zm11eC5oOgorCSAgbXhmbXV4OiBXcml0ZSBpbmRleCB0YWJsZSBzZWdtZW50cworCSAgQnV0IG9ubHkgZm9yIHRoZSBmaXJzdCBlc3NlbmNlIHRyYWNrLCBhbmQgb25jZSBmb3IgZXZlcnkga2V5ZnJhbWUgZXZlcnkgMgorCSAgc2Vjb25kcy4KKworMjAxNS0xMi0wNyAyMDoyNjoxNyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtZXRhZGF0YS5jOgorCSAgbXhmbWV0YWRhdGE6IEZpeCBzdGF0aWMgbG9jYWwgdGFnIGZvciBpbmRleCBzaWQKKworMjAxNS0xMi0wNyAxOTozNDoyNSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZ0eXBlcy5jOgorCSogZ3N0L214Zi9teGZ0eXBlcy5oOgorCSAgbXhmdHlwZXM6IEFkZCBmdW5jdGlvbiB0byBzZXJpYWxpemUgYW4gaW5kZXggdGFibGUgc2VnbWVudCB0byBhIGJ1ZmZlcgorCisyMDE1LTEyLTA3IDE4OjU5OjM2ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmRlbXV4LmM6CisJKiBnc3QvbXhmL214ZnR5cGVzLmM6CisJKiBnc3QvbXhmL214ZnR5cGVzLmg6CisJICBteGZtdXg6IEluZGV4IHRhYmxlIHNlZ21lbnRzIG11c3Qgbm90IHVzZSB0aGUgcHJpbWVyIHBhY2sKKwkgIEFjY29yZGluZyB0byBTMzc3LTEtMjAwOWMgOS4yIHRoZSBsb2NhbCB0YWdzIG11c3Qgbm90IGJlIHJlc29sdmVkIGZyb20gdGhlCisJICBwcmltZXIgcGFjaywgd2hpY2ggYXMgYSByZXN1bHQgbWVhbnMgdGhhdCB0aGVyZSBjYW4ndCBiZSBhbnkgb3RoZXIgdGFncyB0aGFuCisJICBzdGF0aWNhbGx5IGFzc2lnbmVkIG9uZXMuCisKKzIwMTUtMTItMDcgMTQ6MTA6MzAgKzEwMDAgIER1bmNhbiBQYWxtZXIgPGRwYWxtZXJAZGlnaXNvZnQudHY+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBhZGQgc3VwcG9ydCBmb3Igc2Vla2luZyB0byBmcmFnbWVudCBib3VuZGFyaWVzCisJICBTZXR0aW5nIHRoZSBzZWVrIGZsYWdzIHRvIEdTVF9TRUVLX0ZMQUdfU05BUF8qIHdpbGwgY2hhbmdlIHRoZSBzZWVrCisJICB0YXJnZXQgdGltZSB0byBhIHNlZ21lbnQgYm91bmRhcnkuCisJICBCYXNlZCBvbiBvcmlnaW5hbCB3b3JrIGJ5IEJlbiBXaWxsZXJzIDxid2lsbGVyc0BkaWdpc29mdC50dj4uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU5MTA4CisKKzIwMTUtMTItMDggMDk6NTM6MTEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoOiBGaXggdW5pdCB0ZXN0IGFmdGVyIG1vdmluZyBvZiBmcmFtZXJhdGVzIHRvIFJlcHJlc2VudGF0aW9uQmFzZVR5cGUKKworMjAxNS0xMi0wOCAwOTozMzozOSArMDkwMCAgc3Vod2FuZy5raW0gPHN1aHdhbmcua2ltQGxnZS5jb20+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuaDoKKwkgIGRhc2hkZW11eDogU3VnZ2VzdGlvbiBmb3Igc2V0dGluZyB0aGUgZnJhbWVyYXRlIGluZm9ybWF0aW9uLgorCSAgRGFzaGRlbXV4IGhhcyBzZXQgdGhlIHdpZHRoIGFuZCBoZWlnaHQgaW5mb3JtYXRpb24gZnJvbSBNUEQgbWFuaWZlc3QuCisJICBTb21lIGVtYmVkZGVkIGRldmljZXMgd2hpY2ggYXJlIG5vdCBpbnN1ZmZpY2llbnQgSC9XIHJlc291cmNlcyBuZWVkIG1vcmUgaW5mb3JtYXRpb24gc3VjaCBhcyBmcmFtZXJhdGUKKwkgIHRvIGFzc2lnbiBIL1cgcmVzb3VyY2VzLiBTbyBJIHN1Z2dlc3RlZCB0aGF0IGRhc2hkZW11eCBhbHNvIG5lZWRzIHRvIHNldCB0aGUgZnJhbWVyYXRlIGluZm9ybWF0aW9uIGZyb20gTURQIG1hbmlmZXN0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODUxNQorCisyMDE1LTEyLTA4IDA5OjIzOjIyICswOTAwICBzdWh3YW5nLmtpbSA8c3Vod2FuZy5raW1AbGdlLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuaDoKKwkgIGRhc2hkZW11eDogbWF4RnJhbWVSYXRlICYgbWluRnJhbWVSYXRlIHNob3VsZCBiZSBpbiBSZXByZXNlbnRhdGlvbkJhc2UuCisJICBBY2NvcmRpbmcgdG8gdGhlIHNwZWMsIHRoZXkgY2FuIGJlIGluIEFkYXB0YXRpb25TZXQsIFJlcHJlc2VudGF0aW9uIGFuZCBTdWJSZXByZXNlbnRhdGlvbi4KKwkgIFNvIFRoZXkgc2hvdWxkIGJlIGluIFJlcHJlc2VudGF0aW9uQmFzZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1MTUKKworMjAxNS0xMi0wOCAxNjozNTo0NSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL3N5bmMuaDoKKwkgIGdscHJvdG86IGluY2x1ZGUgZnVuY3Rpb24gZGVmaW5pdGlvbnMgZm9yIEdMX0FQUExFX3N5bmMKKwkgIFByb3ZpZGVzIGEgcGVyZm9ybWFuY2UgaW1wcm92ZW1lbnQgb24gaU9TIHdoZXJlIHdlIHdlcmUgZmFsbGluZyBiYWNrIHRvIGdsRmluaXNoCisJICBvbiBzZXR0dGluZyBzeW5jIHBvaW50cy4KKwogMjAxNS0xMi0wNyAyMDozNDoxMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZXh0L29wZW5qcGVnL2dzdG9wZW5qcGVnZW5jLmM6CiAJICBvcGVuanBlZ2VuYzogQWxsIGZyYW1lcyBpbiBKUEVHMjAwMCBhcmUga2V5ZnJhbWVzLCBtYXJrIHRoZW0gYXMgc3VjaAogCisyMDE1LTEyLTA3IDA5OjA4OjE1IC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jby51az4KKworCSogYXV0b2dlbi5zaDoKKwkqIGNvbW1vbjoKKwkgIEF1dG9tYXRpYyB1cGRhdGUgb2YgY29tbW9uIHN1Ym1vZHVsZQorCSAgRnJvbSBiMzE5OTA5IHRvIDg2ZTQ2NjMKKworMjAxNS0xMi0wNyAxMzo0ODoxMiArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogUmVtb3ZlIG1vcmUgZGVhZCBjb2RlCisJICBDb3Zlcml0eSBDSUQgIzEzMjg4MTgKKworMjAxNS0xMi0wNyAxMzozNjoyOSArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmM6CisJICB0ZWxldGV4dGRlYzogRml4IGxlYWsgYW5kIE5VTEwgcG9pbnRlciB1c2FnZQorCSAgQ292ZXJpdHkgQ0lEICMxMzQxNzQ0CisKKzIwMTUtMTItMDcgMTE6NTY6MDkgKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC90ZWxldGV4dGRlYy9nc3R0ZWxldGV4dGRlYy5jOgorCSAgdGVsZXRleHRkZWM6IFJlbW92ZSBkZWFkIGNvZGUKKwkgICsraSBpbiBhIGZvcigpIGxvb3AgcmVzdWx0cyBpbiB0aGUgbG9vcCBuZXZlciBiZWluZyBleGVjdXRlZCBtb3JlIHRoYW4gb25jZQorCSAgQ292ZXJpdHkgQ0lEICMxMzQxNzQ4CisJICBDb3Zlcml0eSBDSUQgIzEzNDE3NDMKKworMjAxNS0wMy0xMiAxMToyOTowMCArMDAwMCAgRnLDqWTDqXJpYyBXYW5nIDxmcmVkLndhbmdAZnJlZS5mcj4KKworCSogY29uZmlndXJlLmFjOgorCSogc3lzL2FjbWVuYy9hY21lbmMuYzoKKwkqIHN5cy9hY21tcDNkZWMvYWNtbXAzZGVjLmM6CisJICBhY206IFBvcnQgQUNNIE1QMyBkZWNvZGVyIGFuZCBlbmNvZGVycyB0byBHU3RyZWFtZXIgMS54CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ0MDQ3CisKKzIwMTUtMDktMjQgMTc6NDA6MDIgKzAyMDAgIERhbmllbCBLYW1pbCBLb3phciA8ZGtrMDg5QGdtYWlsLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmFtOgorCSogZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmM6CisJKiBleHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuaDoKKwkqIGV4dC90ZWxldGV4dGRlYy90ZWxldGV4dC5jOgorCSAgcG9ydCB0ZWxldGV4dGRlYyB0byAxLjAKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM4MTkKKworMjAxNS0xMi0wMiAxODoyODoxNSAtMDUwMCAgTmljb2xhcyBEdWZyZXNuZSA8bmljb2xhcy5kdWZyZXNuZUBjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NHBhcnNlLmM6CisJKiBnc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jOgorCSAgaDI2eHBhcnNlOiBSZXNlbmQgUFBTL1NQUyBhZnRlciBzZWVrCisJICBUaGlzIGlzIHRvIHN1cHBvcnQgYnl0ZS1zdHJlYW0gZGVjb2RlciB0aGF0IGRvZXMgbm90IHJlbWVtYmVyIHRoZQorCSAgUFBTL1NQUyBhZnRlciBhIGZsdXNoLiBUaGlzIGlzIG5vdCBuZWVkZWQgYnkgYWxsIGRlY29kZXJzLCBidXQgaXMKKwkgIGhhcm1sZXNzIGZvciB0aG9zZSB0aGF0IGRvIHJlbWVtYmVyLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODQwNQorCisyMDE1LTEyLTAxIDE4OjA5OjI1IC0wNTAwICBOaWNvbGFzIER1ZnJlc25lIDxuaWNvbGFzLmR1ZnJlc25lQGNvbGxhYm9yYS5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSAgZ2x1cGxvYWQ6IE9ubHkgb2ZmZXIgY3VzdG9tIGFsbG9jYXRvciB3aXRoIGNhcHMgZmVhdHVyZXMKKwkgIFRvIHVzZSBHTE1lbW9yeSBhbmQgRUdMSW1hZ2UgYWxsb2NhdG9ycywgb25lIG5lZWQgdG8ga25vdyB0aGUKKwkgIGxpYmdzdGdsIEFQSS4gVGhpcyBpcyBvbmx5IGV4cGVjdGVkIGlmIHRoZSBhc3NvY2lhdGVkIGNhcHMgZmVhdHVyZXMKKwkgIGhhdmUgYmVlbiBuZWdvdGlhdGVkLiBHZW5lcmljIGVsZW1lbnQgdGhhdCBvdGhlcndpc2UgcmVjZWl2ZSB0aG9zZQorCSAgYWxsb2NhdG9ycyBtYXkgZmFpbCwgcmVzdWx0aW5nIGluIGJyb2tlbiBwaWVsaW5lLiBXZSBkb24ndCB3YW50IHRvCisJICBmb3JjZSBhbGwgZ2VuZXJpYyBlbGVtZW50IHRvIGNoZWNrIGlmIHRoZSBhbGxvY2F0b3IgaXMgYSBjdXN0b20KKwkgIGFsbG9jYXRvciBvciBhIG5vcm1hbCBhbGxvY2F0b3IgKHdoaWNoIGltcGxlbWVudCB0aGUgX2FsbG9jIG1ldGhvZCkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4ODc3CisKKzIwMTUtMTItMDQgMTg6MDU6NTggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGNvcHkgaW5wdXQgYnVmZmVycywganVzdCBhcHBlbmQgdGhlbSB0byB0aGUgaGVhZGVyCisKKzIwMTUtMTItMDMgMTE6NDY6MTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzZGVtdXg6IFJlc3luYyBsaXZlIHBsYXlsaXN0cyB0byB0aGUgM3JkIG5ld2VzdCBmcmFnbWVudCBpZiB3ZSBmYWxsIG9mZiB0aGUgcGxheWxpc3QKKwkgIEFzIEhMUyBkb2VzIG5vdCBwcm92aWRlIGFueSB3YXkgb2Yga25vd2luZyB0aGUgc2VydmVyJ3MgY2xvY2ssIGFuZCB3ZSBkbworCSAgYnVmZmVyaW5nIG9mICJsaXZlIiBzdHJlYW1zLCBhdCBzb21lIHBvaW50IHdlIHdpbGwgZmFsbCBiZWhpbmQgdGhlIHNlcnZlciBpbgorCSAgbWFueSBjYXNlcyBhbmQgd291bGQgaGF2ZSB0byBhZHZhbmNlIHRvIGEgZnJhZ21lbnQgdGhhdCBpcyBub3QgaW4gdGhlIHBsYXlsaXN0CisJICBhbnltb3JlLgorCSAgUHJldmlvdXNseSB3ZSB3b3VsZCd2ZSBqdXN0IHJlc3luY2VkIHRvIHRoZSBuZXh0IG9sZGVzdCBmcmFnbWVudCB0aGF0IGlzIHN0aWxsCisJICB0aGVyZSwgYnV0IHRoaXMgY2F1c2VzIHByb2JsZW1zIGFzIGZyb20gdGhpcyBwb2ludCBvbndhcmRzIHdlIHdvdWxkIGFsd2F5cworCSAgZmFsbCBvZmYgdGhlIHBsYXlsaXN0IGFnYWluIGFsbCB0aGUgdGltZS4KKwkgIEluc3RlYWQgd2Ugbm93IHJlc3luYyBhbmQgbW92ZSB0byB0aGUgM3JkIG5ld2VzdCBmcmFnbWVudCBsaWtlIHdlIHdvdWxkIGRvCisJICB3aGVuIHN0YXJ0aW5nIHBsYXliYWNrIG9mIGEgbGl2ZSBzdHJlYW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTg3CisKKzIwMTUtMTItMDMgMTg6MjE6NTAgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzOiBtM3U4OiByZW1vdmUgc3VwZXJmbHVvdXMgZ3N0X20zdThfY29weSgpIGltcGxlbWVudGF0aW9uCisJICBObyBuZWVkIHRvIGltcGxlbWVudCBfY29weSgpIHdoZW4gd2UganVzdCBjb3B5IGEgbGlzdCB0aGF0CisJICB3ZSdyZSBmcmVlaW5nIHRocmVlIGxpbmVzIGxhdGVyIGFueXdheS4gSW5zdGVhZCBqdXN0IHN0ZWFsCisJICB0aGUgbmV3IG1haW4gbGlzdC4KKworMjAxNS0xMi0wMyAxMDowODowNSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogTG9nIFBUUyBvZiBidWZmZXJzIHRoYXQgYXJlIHB1c2hlZCBkb3duc3RyZWFtCisKKzIwMTUtMTAtMjAgMDk6NDk6MTYgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiBFeHBvc2UgRFZCIFN1YnBpY3R1cmUgYXMgc3VicGljdHVyZXMKKwkgIEZvciBzb21lIHJlYXNvbiB3ZSB3ZXJlIGNvbnNpZGVyaW5nIHRoZW0gYXMgcHJpdmF0ZSBkYXRhLgorCisyMDE1LTEwLTIwIDE3OjIyOjIzICswMjAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSAgdHNkZW11eDogUHVzaCBHQVAgZXZlbnRzICphZnRlciogZGVhY3RpdmF0aW5nIG9sZCBwcm9ncmFtcworCSAgVGhlIG9yZGVyIGluIHdoaWNoIHByb2dyYW0gc3dpdGNoIG11c3QgaGFwcGVuIGlzOgorCSAgMSkgZHJhaW4gYWxsIGRhdGEgb24gb2xkIHBhZHMgKGJ1dCBkb24ndCBwdXNoIEVPUykKKwkgIDIpIGFkZCBuZXcgcGFkcyAoYnV0IGRvbid0IHB1c2ggYW55IGRhdGEgb24gdGhlbSkKKwkgIDMpIFB1c2ggRU9TIGFuZCByZW1vdmUgb2xkIHBhZHMKKwkgIDQpIFN0YXJ0IHB1c2hpbmcgZGF0YSBvbiBuZXcgcGFkcworCSAgVGhlcmUgd2FzIG9uZSBjYXZlYXQgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiwgd2hpY2ggaXMgdGhhdCB3aGVuCisJICB3ZSBhY3RpdmF0ZSBhIHNwYXJzZSBwYWQgKHN0ZXAgMikgd2Ugd291bGQgcHVzaCBhIEdBUCBldmVudC4gVGhlIHByb2JsZW0KKwkgIGlzIHRoYXQsIHdoaWxlIGJlaW5nIGFuIGV2ZW50LCBpdCBpcyBhY3R1YWxseSAqZGF0YSouCisJICBXZSB0aGVyZWZvcmUgbmVlZCB0byBtYWtlIHN1cmUgcHVzaGluZyB0aG9zZSBHQVAgZXZlbnQgaXMgZG9uZSBhdCB0aGUgc3RlcAorCSAgd2Ugc3RhcnQgcHVzaGluZyBkYXRhLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDQwMgorCisyMDE1LTA5LTE1IDE4OjIwOjM4ICswMjAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSAgdHNkZW11eDogTWFrZSBzdXJlIG9sZCBzdHJlYW1zIGFyZSBkcmFpbmVkIGJlZm9yZSBzd2l0Y2hpbmcKKwkgIEJlZm9yZSB3ZSBhZGQgYW55IHN0cmVhbXMsIG1ha2Ugc3VyZSB3ZSBkcmFpbiBhbGwgc3RyZWFtcy4gVGhpcyBlbnN1cmVzCisJICB0aGVyZSdzIGNvbnNpc3RlbmN5IHRoYXQgb25seSAibmV3IiBkYXRhIHdpbGwgYmUgcHVzaGVkIG9uIGJ1ZmZlcnMgb25jZQorCSAgdGhlIG5ldyBwYWRzIGFyZSBhZGRlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDQwMgorCisyMDE1LTA5LTEwIDE0OjU1OjA1ICswMjAwICBFZHdhcmQgSGVydmV5IDxiaWxib2VkQGJpbGJvZWQuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOgorCSogZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuaDoKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5oOgorCSAgbXBlZ3RzZGVtdXg6IEFsbG93IGRlYWN0aXZhdGlvbiBvZiBwcm9ncmFtcyB0byBiZSBkZWxheWVkCisJICBXaGVuIGNoYW5naW5nIHByb2dyYW1zLCB0aGUgb3JkZXIgb2YgZXZlbnRzIG5lZWRzIHRvIGJlIHRoZSBmb2xsb3dpbmc6CisJICAqIGFkZCBwYWRzIGZyb20gbmV3IHByb2dyYW0KKwkgICogc2VuZCBFT1Mgb24gb2xkIHBhZHMKKwkgICogcmVtb3ZlIG9sZCBwYWRzCisJICAqIGVtaXQgJ25vLW1vcmUtcGFkcycKKwkgIFByZXZpb3VzbHkgdHNkZW11eCB3YXMgbm90IGRvaW5nIHRoYXQsIGFuZCB3YXMgZmlyc3QgZGVhY3RpdmF0aW5nIGFuZAorCSAgcmVtb3Zpbmcgb2xkIHBhZHMgYmVmb3JlIGFkZGluZyBuZXcgb25lcy4KKwkgIFdlIGZpeCB0aGlzIGJ5IGFsbG93aW5nIHN1YmNsYXNzZXMgb2YgbXBlZ3RzYmFzZSB0byBiZSBhYmxlIHRvIGhhbmRsZQorCSAgdGhlbXNlbHZlcyB0aGUgZGVhY3RpdmF0aW9uIG9mIHByb2dyYW1zLiBJbiB0aGlzIGNhc2UgdHNkZW11eCB3aWxsCisJICBwcm9wZXJseSBkZWFjdGl2YXRlIGl0IG9uY2UgaXQgaGFzIGFjdGl2YXRlZCB0aGUgbmV3IHByb2dyYW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUwNDAyCisKKzIwMTUtMTItMDIgMTE6MDE6NTMgKzAxMDAgIE1hcm/FoSBPbmRyw6HFoWVrIDxteDNsZGV2QGdtYWlsLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHVwZGF0ZSBjdXJyZW50IHZhcmlhbnQgaWYgY29ubmVjdGlvbiBzcGVlZCBpcyBzZXQKKwkgIElmIGNvbm5lY3Rpb24gc3BlZWQgaXMgc2V0LCBwbGF5bGlzdCBhY2NvcmRpbmcKKwkgIHRvIGNvbm5lY3Rpb24gc3BlZWQgaXMgc2VsZWN0ZWQgYXMgY3VycmVudCBwbGF5bGlzdC4KKwkgIFByb2JsZW0gaXMgdGhhdCB0aGUgY3VycmVudCB2YXJpYW50IG9mIG1haW4gcGxheWxpc3Qgc3RpbGwKKwkgIHBvaW50cyB0byBwcmV2aW91c2x5IHNldCB2YXJpYW50LgorCSAgSWYgcHJldmlvdXNseSBzZXQgdmFyaWFudCBkb2Vzbid0IGNvcnJlc3BvbmQgdG8gY3VycmVudAorCSAgcGxheWxpc3QsIHRoZW4gaXQgY2F1c2VzIHVubmVjZXNzYXJ5IGNoYW5nZSBvZiBwbGF5bGlzdAorCSAgdG8gdGhlIHNhbWUgcGxheWxpc3QgYWZ0ZXIgZmlyc3QgZnJhZ21lbnQgaXMgZG93bmxvYWRlZCwKKwkgIGJlY2F1c2Ugb2Ygbm90IHVwZGF0ZWQgY3VycmVudCB2YXJpYW50LgorCSAgVG8gZml4IHRoaXMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoYXQgY3VycmVudCB2YXJpYW50CisJICBvZiBtYWluIHBsYXlsaXN0IGNvcnJlc3BvbmRzIHRvIHRoZSBjdXJyZW50IHBsYXlsaXN0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTQ2CisKKzIwMTUtMTItMDIgMTQ6MzU6MjIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmM6CisJICB2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWw6IEZpeCBjb21waWxhdGlvbiBvZiBzdGF0aWMgcGx1Z2luIGFuZCBzb21lIGNvbXBpbGVyIHdhcm5pbmdzCisJICBVc2UgR19HU0laRV9GT1JNQVQgZm9yIGdzaXplIGluc3RlYWQgb2YgJWxkIGFuZCBtYWtlIHN1cmUgdGhhdCB0aGUgcGx1Z2luIG5hbWUKKwkgIGlzIGEgdmFsaWQgQyBpZGVudGlmaWVyLCBpLmUuIGNvbnRhaW5zIG5vIHNwYWNlcyBvciBkYXNoZXMuCisKKzIwMTUtMTItMDIgMjI6NDI6MzkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogaW1wcm92ZSB0aGUgWVVZMi9VWVZZLT5SR0JBIGNvbnZlcnNpb24gc2hhZGVyCisJICBEb24ndCBvZmZzZXQgdGhlIHktYXhpcy4gIFdlIG9ubHkgbmVlZCB0byBvZmZzZXQgb24gdGhlIHgtYXhpcy4KKwkgIFJlbW92ZXMgYSBzYXd0b290aCBwYXR0ZXJuIG9uIGhvcml6b250YWwgYW5kIHZlcnRpY2FsIGVkZ2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTQ4NgorCisyMDE1LTEyLTAyIDIyOjQwOjA2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGltcHJvdmUgUkdCQS0+WVVZMi9VWVZZIGNvbnZlcnNpb24gc2hhZGVyCisJICBXZSBzaG91bGQgb25seSBhdmVyYWdlIHRoZSBjaHJvbWEgc2FtcGxlcyBub3QgdGhlIGx1bWEgc2FtcGxlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODkwNAorCisyMDE1LTExLTExIDAzOjU1OjI3ICsxMTAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IFRlbGwgdGhlIGJhc2UgY2xhc3MgdGhlIGZyYWdtZW50IGR1cmF0aW9uCisJICBhZGFwdGl2ZWRlbXV4IHVzZXMgdGhlIGZyYWdtZW50IGR1cmF0aW9uIGFzIGEgZGVsYXkKKwkgIGluIHNvbWUgY2FzZXMsIHNvIG1ha2Ugc3VyZSB0byBzZXQgaXQuCisKKzIwMTUtMTEtMTEgMDM6NTQ6NTEgKzExMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJICBhZGFwdGl2ZWRlbXV4OiBTZW5kIHRoZSBiaXRyYXRlIG9mIHRoZSBzdHJlYW0gYXMgYSB0YWcKKwkgIElmIHdlIGtub3cgb3IgY2FuIG1lYXN1cmUgdGhlIG5vbWluYWwgYml0cmF0ZSBvZiBhIHN0cmVhbSwKKwkgIHNlbmQgdGhhdCBpbmZvIGFzIGEgdGFnIGRvd25zdHJlYW0KKworMjAxNS0xMS0wOCAwMTozNDozMCArMTEwMCAgSmFuIFNjaG1pZHQgPGphbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBXaGVuIHN3aXRjaGluZyBiaXRyYXRlIHZhcmlhbnRzLCBkb24ndCBqdW1wIGJhY2sKKwkgIERvbid0IGp1bXAgYmFja3dhcmQgdG8gMyBmaWxlcyBmcm9tIHRoZSBlbmQgb2YgdGhlIHBsYXlsaXN0CisJICB3aGVuIHN3aXRjaGluZyB2YXJpYW50cyAtIGl0IGp1c3QgbWVhbnMgd2UgZG93bmxvYWRlZAorCSAgZnJhZ21lbnRzIGZhc3QgYW5kIGNhdWdodCB1cCB0byB0aGUgZW5kIG9mIHRoZSBwbGF5bGlzdC4KKwkgIERpc2FibGUgdGhhdCBieSB0cmVhdGluZyBhIHZhcmlhbnQgc3dpdGNoIGFzIGEgcGxheWxpc3QKKwkgIHVwZGF0ZSwgbm90IGEgcmVzdGFydCBkdWUgdG8gYSBzZWVrIG9yIHNvLgorCisyMDE1LTA0LTIxIDIxOjA5OjE5ICswMzAwICBWaXZpYSBOaWtvbGFpZG91IDx2aXZpYUB0b29sc29uYWlyLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9NYWtlZmlsZS5hbToKKwkqIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmM6CisJKiBnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5oOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYzoKKwkgIGFsZXZlbDogTmV3IGF1ZGlvL3ZpZGVvIGxldmVsIGVsZW1lbnQKKwkgIFRoZSB2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwgZWxlbWVudCBhY3RzIGxpa2UgYSBzeW5jaHJvbml6ZWQgYXVkaW8vdmlkZW8gImxldmVsIgorCSAgZWxlbWVudC4gRm9yIGVhY2ggdmlkZW8gZnJhbWUsIGl0IHBvc3RzIGEgbGV2ZWwtc3R5bGUgbWVzc2FnZSBjb250YWluaW5nIHRoZQorCSAgUk1TIHZhbHVlIG9mIHRoZSBjb3JyZXNwb25kaW5nIGF1ZGlvIGZyYW1lcy4gVGhpcyBlbGVtZW50IG5lZWRzIGJvdGggdmlkZW8gYW5kCisJICBhdWRpbyB0byBwYXNzIHRocm91Z2ggaXQuIEZ1cnRoZXJtb3JlLCBpdCBuZWVkcyBhIHF1ZXVlIGFmdGVyIGl0cyB2aWRlbworCSAgc291cmNlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODI1OQorCisyMDE1LTEyLTAxIDIzOjIwOjQ1IC0wODAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW06CisJICBEcm9wIHVzYWdlIG9mIGRlcHJlY2F0ZWQgZy1pci1zY2FubmVyIC0tc3RyaXAtcHJlZml4IGZsYWcKKworMjAxNS0xMS0xMCAxNjoxOTozNCArMDAwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiBleHQvaGxzL20zdTguYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYzoKKwkgIGhsc2RlbXV4OiBjb3JyZWN0IHRoZSBjYWxjdWxhdGlvbiBvZiBzZWVrIHJhbmdlIG9mIG5vbi1saXZlIHN0cmVhbXMKKwkgIFRoZSBzZWVrIHJhbmdlIGNhbGN1bGF0aW9uIGZvciBvbi1kZW1hbmQgc3RyZWFtcyB3YXMgaW5jb3JyZWN0bHkKKwkgIGV4Y2x1ZGluZyB0aGUgbGFzdCB0aHJlZSBzZWdtZW50cyBvZiB0aGUgc3RyZWFtLiBUaGlzIHRocmVlIHNlZ21lbnQKKwkgIHJ1bGUgc2hvdWxkIG9ubHkgYmUgYXBwbGllZCB0byBsaXZlIHN0cmVhbXMgWzFdLgorCSAgWzFdIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9kcmFmdC1wYW50b3MtaHR0cC1saXZlLXN0cmVhbWluZy0xNyNzZWN0aW9uLTYuMy4zCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4Mzg2CisKIDIwMTUtMTItMDEgMTc6NTI6MDMgKzAwMDAgIFBhb2xvIFBldHRpbmF0byA8cHBldHRpbmFAY2lzY28uY29tPgogCiAJKiBnc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jOgogCSAgcGNhcHBhcnNlOiBGb3J3YXJkIEZMVVNIX1NUT1AgZXZlbnRzIGRvd25zdHJlYW0gdG9vCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4OTEzCiAKKzIwMTUtMTEtMjkgMDE6MDI6MTUgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBmaXggY3Jhc2ggd2hlbiBkZWNyeXB0aW9uIGtleSBjYW4ndCBiZSBkb3dubG9hZGVkCisJICBIYXBwZW5lZCB3aXRoCisJICBodHRwOi8vc3NsaGxzLm02dHYuY2RuLnNmci5uZXQvaGxzLWxpdmUvbGl2ZXBrZ3IvX2RlZmluc3RfL202X2hsc19hZXMvbTZfaGxzX2Flc184NTYubTN1OAorCSAgaWYgZ2xpYi1uZXR3b3JraW5nIHdhcyBub3QgaW5zdGFsbGVkIChzaW5jZSBrZXkgaGFzIGh0dHBzIHVyaSkuCisKKzIwMTUtMTEtMzAgMTE6MDU6MzggKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkqIGV4dC9obHMvbTN1OC5jOgorCSogZXh0L2hscy9tM3U4Lmg6CisJICBobHM6IG0zdTg6IHJlbW92ZSBwb2ludGxlc3MgY2xpZW50X2hhc19tYWluKCkgZnVuY3Rpb24KKwkgIFdlIGFsd2F5cyBoYXZlIGEgbWFpbiBsaXN0LgorCisyMDE1LTExLTI4IDAwOjEyOjA0ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL20zdTguYzoKKwkqIGV4dC9obHMvbTN1OC5oOgorCSAgaGxzOiBtM3U4OiByZW1vdmUgdW51c2VkIF9nZXRfY3VycmVudF9mcmFnbWVudF9kdXJhdGlvbigpIGZ1bmN0aW9uCisKKzIwMTUtMTEtMjcgMTk6MjE6MjIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSogZXh0L2hscy9tM3U4Lmg6CisJICBobHM6IG0zdTg6IHJlbW92ZSB1bnVzZWQgbTN1OCBjbGllbnQgdXBkYXRlX2ZhaWxlZF9jb3VudCBmaWVsZAorCisyMDE1LTExLTE1IDE3OjMxOjA1ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL20zdTguYzoKKwkqIGV4dC9obHMvbTN1OC5oOgorCSAgaGxzOiBtM3U4OiByZW1vdmUgaGVscGVyIHZhciB0aGF0J3Mgb25seSB1c2VkIGR1cmluZyBwYXJzaW5nIGZyb20gc3RydWN0dXJlCisJICBKdXN0IGtlZXAgdGhhdCBsb2NhbCB0byB0aGUgcGFyc2luZyBmdW5jdGlvbi4KKworMjAxNS0xMS0wMSAxMzoyMTo0NSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogTWFrZWZpbGUuYW06CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJhZ21lbnRlZC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbDoKKwkqIGV4dC9obHMvTWFrZWZpbGUuYW06CisJKiBleHQvaGxzL2dzdGZyYWdtZW50ZWQuaDoKKwkqIGV4dC9obHMvZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jOgorCSogZXh0L2hscy9nc3RobHMuaDoKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguaDoKKwkqIGV4dC9obHMvZ3N0aGxzcGx1Z2luLmM6CisJKiBleHQvaGxzL2dzdG0zdThwbGF5bGlzdC5jOgorCSogZXh0L2hscy9tM3U4LmM6CisJKiBnc3QtcGx1Z2lucy1iYWQuc3BlYy5pbjoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYzoKKwkgIGhsczogcmVuYW1lIHBsdWdpbiBmcm9tIGZyYWdtZW50ZWQgdG8gaGxzCisKKzIwMTUtMTItMDEgMTk6NDQ6MzYgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkgIGhsc2RlbXV4OiBBbHdheXMgZ2l2ZSB0aW1lc3RhbXBzIGlmIHdlJ3JlIGRpc2NvbnQgYW5kIGRvbid0IG1hcmsgc3RyZWFtIGRpc2NvbnQgaWYgYSBwbGF5bGlzdCBjaGFuZ2Ugd2FzIG5vdCBzdWNjZXNzZnVsCisJICBJZiB0aGUgc3RyZWFtIGlzIGRpc2NvbnQsIHdlIG11c3QgcHJvdmlkZSBhIHRpbWVzdGFtcCBpbiBhbnkgY2FzZS4gRWxlbWVudHMKKwkgIGxpa2UgdHNkZW11eCBhcmUgbm90IGdvaW5nIHRvIG91dHB1dCBhbnl0aGluZyBpZiB3ZSBnaXZlIGEgTk9ORSB0aW1lc3RhbXAKKwkgIGFmdGVyIGEgZGlzY29udC4KKwkgIEFsc28gbWFya2luZyBhIHN0cmVhbSBhcyBkaXNjb250IGlmIGEgcGxheWxpc3QgY2hhbmdlIHdhcyBub3Qgc3VjY2Vzc2Z1bCB3b3VsZAorCSAgbGVhZCB0byB0aGUgYWJvdmUgc2l0dWF0aW9uLCBidXQgaW4gdGhhdCBjYXNlIHdlIGFyZSBub3QgcmVxdWlyZWQgYXQgYWxsIHRvCisJICBtYXJrIHRoZSBzdHJlYW0gZGlzY29udCBhcyB3ZSdyZSBzdGlsbCBhdCB0aGUgb2xkIHBsYXlsaXN0LgorCisyMDE1LTEyLTAxIDE3OjA2OjMzICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmM6CisJICB0c211eDogZml4IHdyb25nIGxvZyBtZXNzYWdlIGxldmVsCisJICBFUlJPUiBsZXZlbCBpcyBkZWJ1Z2dpbmcgbGVmdC1vdmVyLgorCisyMDE1LTExLTA5IDE2OjA4OjMwICswOTAwICBIeXVuanVuIEtvIDx6em9vbi5rb0BzYW1zdW5nLmNvbT4KKworCSogdGVzdHMvY2hlY2svbGlicy9hZ2dyZWdhdG9yLmM6CisJICB0ZXN0czphZ2dyZWdhdG9yOiBmaXggdGMgZmFpbHVyZSBhbmQgY29ycmVjdCBjaGVjayB2YWx1ZQorCSAgRmFpbHVyZSBieSB0aGlzIGNvbW1pdCAyZGZhNTQ4ZjM2NDU4NDQwODJjM2RiNjVkOTZkODcyNTU3MDFiM2FkLCB3aGljaCBpcworCSAgdG8gYXBwZW5kIGhvb2tzIGluc3RlYWQgb2YgcHJlcGVuZC4KKwkgIEJlY2F1c2Ugb2YgdGhpcyBjaGFuZ2UsIGFnZ3JldGF0ZWRfY2IgaXMgbm90IGNhbGxlZCBhbmQgbGVhZHMgdG8gZmFpbHVyZS4KKwkgIEFuZCBjb3JyZWN0IHRvIGNoZWNrIGZsdXNoIHN0b3AgdmFsdWUgaW5zdGVhZCBvZiBmbHVzaCBzdGFydCB2YWx1ZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzgwMQorCiAyMDE1LTExLTMwIDE5OjUzOjI4ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgogCiAJKiBzeXMvZDNkdmlkZW9zaW5rL2QzZGhlbHBlcnMuYzoKQEAgLTI0OSw2ICs2ODQxLDE0NyBAQAogCSAgdmlzaWJsZSBhZ2FpbiBiZWZvcmUgY2hlY2tpbmcgaWYgdGhlIHN3YXBjaGFpbiByZWFsbHkgaGFzIHRvIGJlIHJlY3JlYXRlZC4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDE2MDgKIAorMjAxNS0xMS0yNyAxODo0Njo1NiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmM6CisJICBvcHVzcGFyc2U6IHJlbW92ZSB1bm5lZWRlZCBzdGF0ZW1lbnQKKwkgIGNvbW1pdCBkYTVjNDE5MzBjNDA4Mzk3OWIxNzQ1ZjRkODg0OGQ5N2ZlMDNkOGViIHJlbW92ZWQgdGhlIHR3byB1c2VzIG9mIHRoZQorCSAgbmV3IHZhbHVlIG9mIGRhdGE6CisJICBjaGFubmVscyA9IG9wdXNfcGFja2V0X2dldF9uYl9jaGFubmVscyAoZGF0YSk7CisJICBiYW5kd2lkdGggPSBvcHVzX3BhY2tldF9nZXRfYmFuZHdpZHRoIChkYXRhKTsKKwkgIFNpbmNlIHRoZW4sIGRhdGEgaXNuJ3QgYmVpbmcgdXNlZCBiZXR3ZWVuIGluY3JlbWVudGluZyBpdCBieSBwYWNrZXRfb2Zmc2V0CisJICBhbmQgZ29pbmcgb3V0IG9mIHNjb3BlLiBSZW1vdmluZyB0aGlzIHVuZWVkZWQgc3RhdGVtZW50LgorCisyMDE1LTExLTI3IDEyOjQ0OjU3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9pZDNtdXguYzoKKwkgIHRlc3RzOiBpZDNtdXg6IGFkZCB1bml0IHRlc3QgZm9yIEdTVF9UQUdfUFJJVkFURV9EQVRBIHdyaXRpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg3MjgKKworMjAxNS0xMS0yNyAxMTozMzowNyArMDUzMCAgUmF2aSBLaXJhbiBLIE4gPHJhdmkua2lyYW5Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9pZDN0YWcvaWQzdGFnLmM6CisJICBpZDNtdXg6IHdyaXRlIHByaXZhdGUgZGF0YSB0YWcKKwkgIEhhbmRsZSAiUFJJViIgdGFnIGluIGlkM211eC4gV3JpdGUgb3duZXIKKwkgIGlkZW50aWZpZXIgYW5kIHByaXZhdGUgZGF0YSBhbmQgYWRkIHRvIHRoZQorCSAgaWQzdjIgZnJhbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4NzI4CisKKzIwMTUtMTEtMjYgMTA6MTU6MzYgKzAxMDAgIE1hdGhpYXMgSGFzc2VsbWFubiA8bWF0aGlhcy5oYXNzZWxtYW5uQGtkYWIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbmRyb2lkbWVkaWE6IERvbid0IGFkZCBtZXRhZGF0YSB0byBsb2NrZWQgYnVmZmVyCisJICBUaGUgdmlkZW8gZGVjb2RlcnMgdHJpZWQgY2FsbGluZyBnc3RfYnVmZmVyX2FkZF8qbWV0YSgpIG9uIG5vbi13cml0YWJsZQorCSAgYnVmZmVyIHJlc3VsdGluZyBpbiB3YXJuaW5ncyBvZiB0aGlzIGtpbmQ6CisJICBnc3RhbWN2aWRlb2RlYy5jOjkyMSAoX2dsX3N5bmNfcmVuZGVyX3VubG9ja2VkKTogV0FSTklORzogYW1jdmlkZW9kZWMKKwkgIEZhaWxlZCB0byBjcmVhdGUgdGhlIHRyYW5zZm9ybWF0aW9uIG1ldGEgZm9yIHRoZSBnbF9zeW5jIDB4YWJjMDM4NDgKKwkgIGJ1ZmZlciAweGFiYjAxYjQwICgwKQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODY5NAorCisyMDE1LTExLTA5IDE4OjA3OjMwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogdGVzdHM6IGRpc2FibGVkIHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IgdGVzdAorCSAgVW50aWwgd2Ugd2lsbCBoYXZlIHN1cHBvcnQgdG8gY29udHJvbCB0aGUgZ2VuZXJhdGluZyB0aHJlYWQgZnJvbQorCSAgZmFrZUhUVFBzcmMgZWxlbWVudCwgdGhlIHRlc3QgdGVzdEZyYWdtZW50RG93bmxvYWRFcnJvciBpcyBkaXNhYmxlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc3NzYKKworMjAxNS0xMS0wOSAxNDoxNDozNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHRlc3RzOiBjb3JyZWN0ZWQgYWNjZXNzIHRvIGZha2VIVFRQc3JjIGVsZW1lbnQKKwkgIFRoZSBzcmMgZWxlbWVudCBmb3IgYWRhcHRpdmVkZW11eCBpcyBub3cgYSBiaW4uIFVwZGF0ZWQgdGhlIHRlc3RzIHRvCisJICBjb3JyZWN0bHkgcmVhY2ggaW50byB0aGUgYmluIGFuZCBnZXQgdGhlIGZha2VIVFRQc3JjIGVsZW1lbnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc3NzYKKworMjAxNS0xMS0wOSAxNDoxMzowNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Zha2VfaHR0cF9zcmMuYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHRlc3RzOiBtYWRlIGZha2VIVFRQc3JjIGVsZW1lbnQgTVQgc2FmZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzc3NgorCisyMDE1LTExLTIzIDExOjMyOjEzICswOTAwICBWaW5lZXRoIFQgTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJICBzcHUtcGdzOiBGaXggYXJyYXkgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1MTcKKworMjAxNS0xMS0yNCAwMDoyMDozNiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJICBhdWRpb21peGVyOiByZWdpc3RlciBmdW5jdGlvbiBuYW1lIGZvciBkZWJ1Z2dpbmcganVzdCBvbmNlCisJICBOb3QgZXZlcnkgdGltZSBhZ2dyZWdhdGUgaXMgY2FsbGVkLi4uCisKKzIwMTUtMTEtMjQgMTI6NDI6NDUgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogcmVtb3ZlIGdzdF9tcGRfY2xpZW50X2NoZWNrX3RpbWVfcG9zaXRpb24KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1OTMKKworMjAxNS0xMS0yNCAxMTo1MDo1MSArMDEwMCAgTWFyb8WhIE9uZHLDocWhZWsgPG14M2xkZXZAZ21haWwuY29tPgorCisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmM6CisJICBtc3NkZW11eDogYWRkIGRlcHRoIGZpZWxkIHRvIGF1ZGlvIGNhcHMgaWYgYXZhaWxhYmxlCisJICBkZXB0aCBmaWVsZCBjYW4gYmUgcmV0cmlldmVkIGZyb20gIkJpdHNQZXJTYW1wbGUiIG9yCisJICBmcm9tICJXYXZlRm9ybWF0RXgiIHN0cnVjdHVyZSwgaWYgcHJvdmlkZWQgaW4gTWFuaWZlc3QKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg1ODYKKworMjAxNS0xMS0yMCAxNjozNTo0MyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBtcGRwYXJzZXI6IHRlc3RzOiBhZGRlZCB0ZXN0IGZvciBmcmFjdGlvbiBvZiBzZWNvbmRzIGluIGF2YWlsYWJpbGl0eVN0YXJ0VGltZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODQxMAorCisyMDE1LTExLTIwIDE2OjM2OjAwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGFkZGVkIHN1cHBvcnQgZm9yIHBhcnNpbmcgZnJhY3Rpb24gb2Ygc2Vjb25kcyBpbiBkYXRlVGltZSBmaWVsZHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTg0MTAKKworMjAxNS0xMS0yMiAxMzoxMTo0OCArMDEwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuYW06CisJICB0ZXN0czogcHV0IHRoZSB3YXlsYW5kc2luayBleGFtcGxlIHdpbmRvdy51aSBmaWxlIGluIEVYVFJBX0RJU1QKKworMjAxNS0xMS0yMiAxMzowODozNSArMDEwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuYW06CisJICB0ZXN0czogZml4IGxpbmtpbmcgd2F5bGFuZHNpbmsgZXhhbXBsZSB3aXRoIHRoZSBnc3R3YXlsYW5kIGxpYnJhcnkKKwkgIEZpcnN0LCB1c2UgdG9wX2J1aWxkZGlyLCBvdGhlcndpc2UgaXQgZmFpbHMgaW4gb3V0LW9mLXNvdXJjZSBidWlsZHMuCisJICBTZWNvbmQsIGxpbmsgdG8gdGhlIGxpYnRvb2wgYXJjaGl2ZSBkaXJlY3RseSB0byBsZXQgbWFrZSB1bmRlcnN0YW5kCisJICB0aGUgZGVwZW5kZW5jeS4KKworMjAxNS0xMS0yMCAyMDo1OToxNiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogYWx3YXlzIHNldCBwcmVzZW50YXRpb25UaW1lT2Zmc2V0CisJICBTZXQgaXQgZm9yIGFsbCB0eXBlcyBvZiBzZWdtZW50IGxpc3RzICh0ZW1wbGF0ZXMgLyBsaXN0cyAvIGJhc2UpCisJICBhbmQgbm90IG9ubHkgZm9yIHRlbXBsYXRlcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE1MjkKKworMjAxNS0xMS0yMCAxNzo1MDozMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogRXJyb3Igb3V0IGlmIHdlIGdldCBhIHRpbWVvdXQgZHVyaW5nIGxpdmUgbWl4aW5nCisJICBXZSBjYW4ndCBoYW5kbGUgdGhhdCBidXQgbmVlZCBjb21wbGV0ZSBzdHJlYW1zIHdpdGhvdXQgZ2Fwcy4KKworMjAxNS0xMS0yMCAxNzo0Njo1MyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtcGVnLmM6CisJICBteGZtcGVnOiBVc2UgdGhlIGNvcnJlY3Qgc291bmQgZXNzZW5jZSBjb21wcmVzc2lvbiBVTCBmb3IgTVAzCisJICBUaGVyZSdzIG9uZSBmb3IgTVBFRyAxIExheWVyIDEgYW5kIG9uZSBmb3IgTGF5ZXIgMiBhbmQgMy4gV2UgcHJldmlvdXNseQorCSAgaGFkIHRoZSBzZWNvbmQgZm9yIExheWVyIDEgYW5kIDIgYW5kIG5vdGhpbmcgZm9yIExheWVyIDMsIHdoaWNoIHdhcyB3cm9uZy4KKworMjAxNS0xMS0yMCAxNzozNDoyMiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtcGVnLmM6CisJICBteGZtcGVnOiBTZXQgdGhlIGVzc2VuY2UgY29udGFpbmVyIFVMIGJ5dGUgMTMgdG8gMHgxMCBmb3IgaDI2NAorCSAgMHgwNCBzaWduaWZpZXMgYSBNUEVHIGVsZW1lbnRhcnkgc3RyZWFtIGJ1dCBhY2NvcmRpbmcgdG8gUlAyMDA4LCAweDEwIHNob3VsZAorCSAgYmUgdXNlZCBmb3IgYSBoMjY0IGJ5dGUtc3RyZWFtLiBUaGlzIGFsc28gZml4ZXMgY29tcGF0aWJpbGl0eSBvZiBvdXIgZmlsZXMKKwkgIHdpdGggZmZtcGVnLgorCiAyMDE1LTExLTIwIDExOjE4OjQzICsxMTAwICBSb21hbiBOb3dpY2tpIDxybm93aWNraUBzaW1zLnBsPgogCiAJKiBleHQvcXQvcXRpdGVtLmNjOgpAQCAtMjcyLDEyICs3MDA1LDQ1OSBAQAogCSAgbm90aWZpY2F0aW9uLiAgSW5pdGlhbGl6ZSBvdXJzZWxmIGluIHRoaXMgY2FzZS4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgzMzcKIAorMjAxNS0wNy0yOSAyMjozMTozMCArMDkwMCAgSmltbXkgT2huIDx5b25namluLm9obkBsZ2UuY29tPgorCisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguYzoKKwkgIGRhc2hkZW11eDogQWRkIGJpbmFyeSBzZWFyY2ggZm9yIHN0cmVhbV9zaWR4X3NlZWsKKwkgIEFkZCBiaW5hcnkgc2VhcmNoIHRvIG9wdGltaXplIGluIHN0cmVhbV9zaWR4X3NlZWsuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ5NjUzCisKKzIwMTUtMTEtMTkgMTU6NTk6NTYgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMgZ3N0X21wZHBhcnNlcl9nZXRfY2h1bmtfYnlfaW5kZXggYW5kIGdzdF9tcGRwYXJzZXJfZmluZF9zZWdtZW50X2J5X2luZGV4CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MjMzCisKKzIwMTUtMTEtMTkgMTc6MjQ6NTMgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9tcGVnMmVuYy9nc3RtcGVnMmVuYy5jYzoKKwkqIGV4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHA6CisJKiBnc3QvZGF0YXVyaXNyYy9nc3RkYXRhdXJpc3JjLmM6CisJKiBnc3QvbXZlL2dzdG12ZW11eC5jOgorCSogZ3N0L3BjYXBwYXJzZS9nc3RpcnRzcHBhcnNlLmM6CisJKiBnc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGF0YXVyaXNyYy5jOgorCSAgZG9jczogdXBkYXRlIGdzdC1sYXVuY2gtMC4xMCBsaW5lcworCSAgVXBkYXRlIHJlZmVyZW5jZXMgdG8gZ3N0LWxhdW5jaC0wLjEwIHRvIGdzdC1sYXVuY2gtMS4wCisKKzIwMTUtMTEtMTkgMTA6MzI6MDMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oOgorCSAgYW1jdmlkZW9kZWM6IG1vdmUgcmVsZWFzZV9vdXRwdXRfYnVmZmVyIGludG8gdGhlIHN5bmMgbWV0YQorCSAgU29tZSBkZXZpY2VzIG9ubHkgZXZlciBrZWVwIG9uZSBidWZmZXIgYXZhaWxhYmxlIGluIHRoZSBHTCBxdWV1ZSByZXN1bHRpbmcgaW4KKwkgIG11bHRpcGxlIGNhbGxzIHRvIHJlbGVhc2Vfb3V0cHV0X2J1ZmZlciBvbmx5IGNhdXNpbmcgb25lIGZyYW1lIHRvIGJlIHJlbmRlcmVkLgorCSAgSWYgdGhlcmUgaXMgYSBxdWV1ZSBhZnRlciBhbWN2aWRlb2RlYyAoZXZlbiBwbGF5c2luaydzIHNtYWxsIG9uZSksIHRoZW4KKwkgIG11bHRpcGxlIGJ1ZmZlcnMgYXJlIHB1c2hlZCBidXQgb25seSBhIHNtYWxsIGZyYWN0aW9uIG9mIHRoZW0gYXJlIGFjdHVhbGx5CisJICByZW5kZXJlZCBvbiB0aW1lLiAgVGhlIHJlc3Qgd2lsbCBlaXRoZXIgcmVuZGVyIHNvbWUgbnVtYmVyIG9mIGZyYW1lcyBhaGVhZCBvZgorCSAgd2hlcmUgdGhleSBhcmUgbWVhbnQgdG8gYmUgb3IgdGltZW91dCB3YWl0aW5nIGZvciBhIGZyYW1lIHRoYXQncyBhbHJlYWR5IGJlZW4KKwkgIHJlbmRlcmVkLgorCSAgU29sdmVkIGJ5IG1vdmluZyB0aGUgcmVsZWFzZV9vdXRwdXRfYnVmZmVyIGludG8gdGhlIHN5bmNfbWV0YSB0aGUgaXMgcHVzaGVkCisJICBkb3duc3RyZWFtLiAgV2hlbiBkb3duc3RyZWFtIHJlbmRlcnMsIHRoZSBjdXN0b20gc3luYyBpbXBsZW1lbnRhdGlvbiBhdHRlbXB0cworCSAgdG8gcmVsZWFzZSB0aGUgY3VycmVudCBidWZmZXIgKGlmIG5vdCBhbHJlYWR5IHJlbGVhc2VkKSBhbmQgcmVuZGVyLiBPbmNlIHRoZQorCSAgZnJhbWUgaGFzIGJlZW4gcmVuZGVyZWQgdG8gdGhlIHNjcmVlbiwgdGhlIG5leHQgZnJhbWUgaXMgcmVsZWFzZWQgYW5kIGlzCisJICBob3BlZnVsbHkgYXZhaWxhYmxlIGJ5IHRoZSB0aW1lIHRoZSBuZXh0IGZyYW1lIGlzIHRvIGJlIHJlbmRlcmVkLgorCSAgVGhpcyBmaXhlcyBhIHBlcmNlaXZlZCBmcmFtZSBqaXR0ZXIgaW4gdGhlIG91dHB1dC4KKworMjAxNS0xMS0xNyAxNToyMzoxNyAtMDgwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvYXVkaW9maWxlL2dzdGFmc2luay5jOgorCSogZXh0L2F1ZGlvZmlsZS9nc3RhZnNyYy5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZ2wvZ3N0Z2xidW1wZXIuYzoKKwkqIGV4dC9nbC9nc3RnbGRpZmZlcmVuY2VtYXR0ZS5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xvdmVybGF5LmM6CisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJKiBleHQva2F0ZS9nc3RrYXRlZW5jLmM6CisJKiBleHQva2F0ZS9nc3RrYXRlc3B1LmM6CisJKiBleHQva2F0ZS9nc3RrYXRldXRpbC5jOgorCSogZXh0L2xpYm1tcy9nc3RtbXMuYzoKKwkqIGV4dC9uZW9uL2dzdG5lb25odHRwc3JjLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmM6CisJKiBleHQvc25kZmlsZS9nc3RzZnNpbmsuYzoKKwkqIGV4dC9zbmRmaWxlL2dzdHNmc3JjLmM6CisJKiBleHQvc3BjL3RhZy5jOgorCSogZXh0L3RpbWlkaXR5L2dzdHRpbWlkaXR5LmM6CisJKiBleHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xkaXNwbGF5X3gxMS5jOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmM6CisJKiBnc3QvZHZic3Vib3ZlcmxheS9kdmItc3ViLmM6CisJKiBnc3QvbGlicmZiL3JmYmRlY29kZXIuYzoKKwkqIGdzdC9tcGVndHNkZW11eC9tcGVndHNwYWNrZXRpemVyLmM6CisJKiBnc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jOgorCSogZ3N0L21wZWd0c211eC90c211eC90c211eC5jOgorCSogc3lzL2FjbWVuYy9hY21lbmMuYzoKKwkqIHN5cy9hY21tcDNkZWMvYWNtbXAzZGVjLmM6CisJKiBzeXMvYXBwbGVtZWRpYS9hdmZhc3NldHNyYy5tOgorCSogc3lzL2JsdWV6L2dzdGEyZHBzaW5rLmM6CisJKiBzeXMvYmx1ZXovZ3N0YXZkdHBzaW5rLmM6CisJKiBzeXMvYmx1ZXovZ3N0YXZkdHB1dGlsLmM6CisJKiBzeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93YXVkaW9kZWMuY3BwOgorCSogc3lzL2RzaG93ZGVjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvZGVjLmNwcDoKKwkqIHN5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3cuY3BwOgorCSogc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvc3JjLmNwcDoKKwkqIHN5cy9kc2hvd3ZpZGVvc2luay9kc2hvd3ZpZGVvc2luay5jcHA6CisJKiBzeXMvZHZiL2NhbXN3Y2xpZW50LmM6CisJKiBzeXMvZHZiL2R2YmJhc2ViaW4uYzoKKwkqIHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOgorCSogc3lzL3B2cjJkL2dzdHB2cnZpZGVvc2luay5jOgorCSogc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9tanBnZGVtdXguYzoKKwkqIHN5cy92ZHBhdS9nc3R2ZHB2aWRlb21lbW9yeS5jOgorCSogdGVzdHMvZXhhbXBsZXMvZ3RrL2dsbGl2ZXNoYWRlci5jOgorCSogdGVzdHMvaWNsZXMvbWV0YWRhdGFfZWRpdG9yLmM6CisJICBSZW1vdmUgdW5uZWNlc3NhcnkgTlVMTCBjaGVja3MgYmVmb3JlIGdfZnJlZSgpCisJICBnX2ZyZWUoKSBpcyBOVUxMLXNhZmUKKworMjAxNS0xMS0xMSAxNjoxMToxNCArMDEwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiBBbHNvIGFsbG93ICcvJyBpbiBSZXByZXNlbnRhdGlvbklECisJICBVc2VkIGJ5IGh0dHA6Ly93d3cuYm9rLm5ldC9kYXNoL3RlYXJzX29mX3N0ZWVsL2NsZWFydGV4dC9zdHJlYW0ubXBkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTAzCisKKzIwMTUtMTAtMjYgMTY6MjQ6NDAgKzAxMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CisKKwkqIC5naXRpZ25vcmU6CisJKiBjb25maWd1cmUuYWM6CisJKiB0ZXN0cy9leGFtcGxlcy9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlLmFtOgorCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvbWFpbi5jOgorCSogdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvd2luZG93LnVpOgorCSAgdGVzdHMvZXhhbXBsZXM6IGFkZCBhIHdheWxhbmRzaW5rIGV4YW1wbGUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMjIKKworMjAxNS0xMS0xOCAxMjo1NjowNiArMDEwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogZXh0L3dheWxhbmQvd2x3aW5kb3cuYzoKKwkgIHdheWxhbmRzaW5rOiBjYWxsIGdzdF92aWRlb19zaW5rX2NlbnRlcl9yZWN0IHdpdGggYSBkZXN0aW5hdGlvbiByZWN0YW5nbGUgdGhhdCBzdGFydHMgZnJvbSAoMCwwKQorCSAgVGhlIGludGVudGlvbiBvZiB0aGlzIGNvZGUgaXMgdG8gZmluZCB0aGUgY2VudGVyIHJlY3RhbmdsZSByZWxhdGl2ZQorCSAgdG8gKDAsMCksIHNpbmNlIHN1YnN1cmZhY2UgY29vcmRpbmF0ZXMgYXJlIHJlbGF0aXZlIHRvIHRoZSBwYXJlbnQKKwkgIHN1cmZhY2UuCisJICBUaGUgb2xkIGNvZGUgdXNlZCB0byB3b3JrIGJ1dCB3YXMgd3JvbmcgYW5kIGJyb2tlbiBieQorCSAgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYXNlL2NvbW1pdC9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9zaW5rLmM/aWQ9ZmY1N2Y2OTEzNDU2ZWMxOTkxZTU1NTE3Y2YxZjIzOWU4MGVlZGRlZgorCisyMDE1LTExLTE2IDE3OjI1OjM0ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBkYXNoZGVtdXg6IGZpeGVkIGlsbGVnYWwgbWVtb3J5IGFjY2VzcyBpbiBnc3RfbXBkX2NsaWVudF9nZXRfbGFzdF9mcmFnbWVudF90aW1lc3RhbXBfZW5kCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MTg4CisKKzIwMTUtMTEtMTYgMTc6MjU6MjEgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgbXBkcGFyc2VyOiB0ZXN0czogYWRkZWQgdGVzdCBmb3IgZ3N0X21wZF9jbGllbnRfZ2V0X2xhc3RfZnJhZ21lbnRfdGltZXN0YW1wX2VuZAorCSAgVGhlIHRpbWVzdGFtcCBmb3IgbGFzdCBmcmFnbWVudCBpcyBpbmNvcnJlY3RseSByZXRyaWV2ZWQgaWYgc2VnbWVudCB0ZW1wbGF0ZXMKKwkgIGFyZSB1c2VkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODE4OAorCisyMDE1LTExLTE3IDE2OjIxOjQ0ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogRG9uJ3QgcmVxdWlyZSBhIG5vbi16ZXJvIGJ1ZmZlciBzaXplIHdoZW4gZG9pbmcgZGVjb2RpbmcgdG8gYSBzdXJmYWNlCisJICBBdCBsZWFzdCBvbiBzb21lIGRldmljZXMvQW5kcm9pZCB2ZXJzaW9ucyB0aGUgYnVmZmVyIHNpemUgd2lsbCBhbHdheXMgYmUgemVybworCSAgaW4gdGhlc2UgY2FzZXMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MjI4CisKKzIwMTUtMTEtMTcgMTc6MTc6NTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKwkgIGdzdGdsaW1hZ2VzaW5rLmM6IEluIGZ1bmN0aW9uICdnc3RfZ2xpbWFnZV9zaW5rX29uX2RyYXcnOgorCSAgZ3N0Z2xpbWFnZXNpbmsuYzoxOTU5OjE4OiBlcnJvcjogdW51c2VkIHZhcmlhYmxlICdzeW5jX21ldGEnIFstV2Vycm9yPXVudXNlZC12YXJpYWJsZV0KKwkgIEdzdEdMU3luY01ldGEgKnN5bmNfbWV0YSA9IE5VTEw7CisJICBeCisKKzIwMTUtMTEtMTcgMTc6MDk6NTEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJICBnbHZpZXdjb252ZXJ0OiBTdHJpbmcgbGl0ZXJhbHMgYXJlIGNvbnN0CisJICBnc3RnbHZpZXdjb252ZXJ0LmM6IEluIGZ1bmN0aW9uICdfbWFuZ2xlX2V4dGVuc2lvbnMnOgorCSAgZ3N0Z2x2aWV3Y29udmVydC5jOjE1MTE6MTM6IGVycm9yOiBhc3NpZ25tZW50IGRpc2NhcmRzICdjb25zdCcgcXVhbGlmaWVyIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZSBbLVdlcnJvcj1kaXNjYXJkZWQtcXVhbGlmaWVyc10KKwkgIGV4dF9zdHIgPSAiI2V4dGVuc2lvbiBHTF9PRVNfRUdMX2ltYWdlX2V4dGVybmFsIDogcmVxdWlyZVxuIjsKKwkgIF4KKworMjAxNS0xMS0xNyAxNzowODoxNCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYzoKKwkgIGdsc3luY21ldGE6IEFjdHVhbGx5IHJldHVybiB0aGUgbmV3bHkgY3JlYXRlZCBtZXRhIGZyb20gZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhKCkKKwkgIGdzdGdsc3luY21ldGEuYyAgLWZQSUMgLURQSUMgLW8gLmxpYnMvbGliZ3N0Z2xfMS4wX2xhLWdzdGdsc3luY21ldGEubworCSAgZ3N0Z2xzeW5jbWV0YS5jOiBJbiBmdW5jdGlvbiAnZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhJzoKKwkgIGdzdGdsc3luY21ldGEuYzoxMzE6MTogZXJyb3I6IGNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24gWy1XZXJyb3I9cmV0dXJuLXR5cGVdCisJICB9CisJICBeCisKKzIwMTUtMTEtMTcgMTY6MjE6MTAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFtY3ZpZGVvZGVjOiBGaXggaW5kZW50YXRpb24KKworMjAxNS0xMS0xNyAxNjowODoxNyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IG5lZ290aWF0aW9uIG1vcmUKKwkgIFllYXIgMTI6IEkgc3RpbGwgZG9uJ3QgdW5kZXJzdGFuZCBob3cgbmVnb3RpYXRpb24gd29ya3MuCisJICBBcHBhcmVudGx5IGdzdF9wYWRfcXVlcnlfY2FwcyBkb2Vzbid0IGRvIHdoYXQgSSB0aG91Z2h0IGl0IGRpZC4gVG8gZ2V0IHRoZQorCSAgYWN0dWFsIGNhcHMgdGhhdCBjYW4gZmxvdyB0aHJvdWdoIHZ0ZGVjOnNyYyB3ZSBtdXN0IGNhbGwgZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMKKwkgIHdpdGggdGhlIHRlbXBsYXRlIGNhcHMgYXMgZmlsdGVyLgorCSAgRml4ZXMgbmVnb3RpYXRpb24gd2l0aCBzdHVmZiB0aGF0IGRvZXNuJ3QgdW5kZXJzdGFuZCBHTE1lbW9yeSAoaGVsbG8gdmlkZW9zY2FsZSkuCisKKzIwMTUtMTEtMTcgMTY6MTQ6MTEgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IG1pbm9yIHRleHR1cmUgY2FjaGUgZml4ZXMKKwkgIFNtYWxsIGZpeCBvbiBob3cgdGhlIHRleHR1cmUgY2FjaGUgaXMgY2xlYW5lZCB1cCAvIHNldHVwIGluIGNhc2Ugb2YgcmVuZWdvdGlhdGlvbgorCisyMDE1LTExLTE3IDE2OjEzOjAwICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKworCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBhcHBsZW1lZGlhOiBjb3JldmlkZW90ZXh0dXJlY2FjaGU6IHN0b3AgY29uZmlndXJpbmcgY2FjaGUtPmNvbnZlcnQgb3ZlciBhbmQgb3ZlcgorCisyMDE1LTExLTE2IDE1OjQ2OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBnbGltYWdlc2luazogd2FpdCBvbiB0aGUgY29ycmVjdCBzeW5jIG1ldGEgd2hlbiByZW5kZXJpbmcKKworMjAxNS0xMS0wMyAxMzoxOTo0MSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmFtOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMyZHRleHR1cmVyZW5kZXJlci5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMyZHRleHR1cmVyZW5kZXJlci5oOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oOgorCSAgYW1jdmlkZGVjOiBvdXRwdXQgZXh0ZXJuYWwtb2VzIHRleHR1cmVzCisJICBUaGlzIHByb3ZpZGVzIGEgcGVyZm9ybWFuY2UgYW5kIHBvd2VyIHVzYWdlIGltcHJvdmVtZW50IGJ5IHJlbW92aW5nCisJICB0aGUgdGV4dHVyZSBjb3B5IGZyb20gYW4gT0VTIHRleHR1cmUgdG8gMkQgdGV4dHVyZS4KKwkgIFRoZSBmbG93IGlzIGFzIGZvbGxvd3MKKwkgIDEuIEdlbmVyYXRlIHRoZSBvdXRwdXQgYnVmZmVyIHdpdGggdGhlIHJlcXVpcmVkIHN5bmMgbWV0YSB3aXRoIHRoZSBpbmNyZW1lbnRpbmcKKwkgIHB1c2ggY291bnRlciBhbmQgT0VTIEdMIG1lbW9yeQorCSAgMS4xIHJlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoYnVmLCByZW5kZXI9dHJ1ZSkgYW5kIHB1c2ggZG93bnN0cmVhbQorCSAgMi4gRG93bnN0cmVhbSB3YWl0cyBmb3Igb24gdGhlIHN5bmMgbWV0YSAodGltZWQgd2FpdCkgb3IgZHJvcHMgdGhlIGZyYW1lIChubyB3YWl0KQorCSAgMi4xIFRpbWVkIHdhaXQgZm9yIHRoZSBmcmFtZSBudW1iZXIgdG8gcmVhY2ggdGhlIG51bWJlciBvZiBmcmFtZSBjYWxsYmFja3MgZmlyZWQKKwkgIDIuMiBVbmNvbmRpdGlvbmFsbHkgdXBkYXRlIHRoZSBpbWFnZSB3aGVuIHRoZSB3YWl0IGNvbXBsZXRlcyAoc3VjY2VzcyBvciBmYWlsKS4KKwkgIFNldHMgdGhlIGFmZmluZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXggbWV0YSBvbiB0aGUgYnVmZmVyLgorCSAgMy4gRG93bnN0cmVhbSByZW5kZXJzIGFzIHVzdWFsLgorCSAgQXQgKnNvbWUqIHBvaW50IHRocm91Z2ggdGhpcyB0aGUgb25fZnJhbWVfY2FsbGJhY2sgbWF5IG9yIG1heSBub3QgZmlyZS4gIElmIGl0CisJICBkb2VzIGZpcmUsIHdlIGNhbiBmaW5pc2ggd2FpdGluZyBlYXJseSBhbmQgcmVuZGVyLiBPdGhlcndpc2Ugd2UgaGF2ZSB0bworCSAgd2FpdCBmb3IgYSB0aW1lb3V0IHRvIG9jY3VyIHdoaWNoIG1heSBjYXVzZSBtb3JlIGJ1ZmZlcnMgdG8gYmUgcHVzZWQgaW50byB0aGUKKwkgIGludGVybmFsIEdMIHF1ZXVlIHdoaWNoIHNpZ2luaWZpY2FudGx5IGRlY3JlYXNlcyB0aGUgY2hhbmNlcyBvZiB0aGUKKwkgIG9uX2ZyYW1lX2NhbGxiYWNrIHRvIGZpcmUgYWdhaW4uICBUaGlzIGlzIGJlY2F1c2UgdGhlIGZyYW1lIGNhbGxiYWNrIG9ubHkgb2NjdXJzCisJICB3aGVuIHRoZSBpbnRlcm5hbCBHTCBxdWV1ZSBjaGFuZ2VzIHN0YXRlIGZyb20gZW1wdHkgdG8gbm9uLWVtcHR5LgorCSAgQmVjYXVzZSB0aGVyZSBpcyBubyB3YXkgdG8gcmVsaWFibHkgY29ycmVsYXRlIGJldHdlZW4gdGhlIG51bWJlciBvZiBidWZmZXJzCisJICBwdXNoZWQgYW5kIHRoZSBudW1iZXIgb2YgZnJhbWUgY2FsbGJhY2tzIHJlY2VpdmVkLCB0aGVyZSBhcmUgYSBudW1iZXIgb2YKKwkgIHdvcmthcm91bmRzIGluIHBsYWNlLgorCSAgMS4gV2Ugc2VsZi1pbmNyZW1lbnQgdGhlIHJlYWR5IGNvdW50ZXIgd2hlbiBpdCBmYWxscyBiZWhpbmQgdGhlIHB1c2ggY291bnRlcgorCSAgMi4gVGltZSBiYXNlZCB3YWl0cyBhcyB0aGUgZnJhbWUgY2FsbGJhY2sgbWF5IG5vdCBiZSBmaXJlZCBmb3IgYSBjZXJ0YWluIGZyYW1lLgorCSAgMy4gSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBkZXZpY2UgY2FuIHJlbmRlciBhdCBzcGVlZCBvciBwZXJmb3JtcyBzb21lIFFvUyBvZgorCSAgdGhlIGludGVyYWwgR0wgcXVldWUgKHdoaWNoIG1heSBub3QgbWF0Y2ggdGhlIEdTdHJlYW1lciBRb1MpLgorCSAgSXQgaG9sZHMgdGhhdCB3ZSBjYWxsIFN1cmZhY2VUZXh0dXJlOjp1cGRhdGVUZXhJbWFnZSBmb3IgZWFjaCBidWZmZXIgcHVzaGVkCisJICBkb3duc3RyZWFtIGhvd2V2ZXIgdGhlcmUncyBubyBndWFyZW50ZWUgdGhhdCB1cGRhdGVUZXhJbWFnZSB3aWxsIHJlc3VsdCBpbgorCSAgdGhlIGV4YWN0IG5leHQgZnJhbWUgKGl0IGNvdWxkIHNraXAgb3IgZHVwbGljYXRlKSBzbyBzeW5jaHJvbml6YXRpb24gaXMgbm90CisJICBndWFyYW50ZWVkIHRvIGJlIGFjY3VyYXRlIGFsdGhvdWdoIGl0IHNlZW1zIHRvIGJlIGNsb3NlIGVub3VnaCB0byBiZSB1bmFibGUKKwkgIHRvIGRpc2Nlcm4gdmlzdWFsbHkuICBUaGlzIGhhcyBub3QgY2hhbmdlZCBmcm9tIGJlZm9yZSB0aGlzIHBhdGNoLiAgVGhlIGN1cnJlbnQKKwkgIHJlcXVpcmVtZW50IGZvciBzeW5jaHJvbml6YXRpb24gaXMgdGhhdCB1cGRhdGVUZXhJbWFnZSBpcyBjYWxsZWQgYXQgdGhlIHBvaW50IGluCisJICB0aW1lIHdoZW4gdGhlIGJ1ZmZlcnMgaXMgdG8gYmUgcmVuZGVyZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3Mjg1CisKKzIwMTUtMTEtMDIgMTc6NTc6MjkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmg6CisJICBnbHN5bmNtZXRhOiBhZGQgdmZ1bmNzIGZvciBhbGwgb3BlcmF0aW9ucworCSAgdGhlcmUgY291bGQgYmUgb3RoZXIgd2F5cy9yZXF1aXJlbWVudHMgZm9yIHN5bmNocm9uaXNpbmcgdHdvIEdQVSBjb21tYW5kCisJICBzdHJlYW1zICh3aGV0aGVyIEdMIG9yIHBsYXRmb3JtIHNwZWNpZmljKS4KKwkgIGUuZy4gZ2xmZW5jZXN5bmMvZWdsd2FpdG5hdGl2ZS9jb25kL2V0YworCisyMDE1LTExLTEwIDE1OjM3OjA1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmg6CisJICBnbGltYWdlc2luazogYWRkIHN1cHBvcnQgZm9yIHJlbmRlcmluZyBleHRlcm5hbC1vZXMgdGV4dHVyZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcyODUKKworMjAxNS0xMS0xMCAxNDo1NDowMiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuaDoKKwkgIGdsdmlld2NvbnZlcnQ6IGFkZCBzdXBwb3J0IHJlY3RhbmdsZS9leHRlcm5hbC1vZXMgdGV4dHVyZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcyODUKKworMjAxNS0xMS0xNyAxNToxODoyOCArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IHNldHRpbmcgaW50ZXJuYWwgU0tJUCAvIERST1AgZmxhZ3MKKwogMjAxNS0xMS0xNyAwOTowODo1MiArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KIAogCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CiAJICBnbGltYWdlc2luazogRml4IHN0cnVjdHVyZSBtZW1vcnkgbGVhawogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODIwNQogCisyMDE1LTExLTE2IDIxOjUyOjA3IC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b2NvbnZlcnQuYzoKKwkgIGF1dG9jb252ZXJ0OiBBZGQgc3VwcG9ydCBmb3IgYnVmZmVybGlzdHMKKworMjAxNS0xMS0xNyAxMToyMToyNyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5oOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IGltcHJvdmUgbmVnb3RpYXRpb24KKwkgIFJld29yayBuZWdvdGlhdGlvbiBpbXBsZW1lbnRpbmcgR3N0VmlkZW9EZWNvZGVyOjpuZWdvdGlhdGUuIE1ha2UgaXQgcG9zc2libGUgdG8KKwkgIHN3aXRjaCB0ZXh0dXJlIHNoYXJpbmcgb24gYW5kIG9mZiBhdCBydW50aW1lLiBVc2VmdWwgdG8gKGV2ZW50dWFsbHkpIHR1cm4KKwkgIHRleHR1cmUgc2hhcmluZyBvbiBpbiBwaXBlbGluZXMgd2hlcmUgZ2xpbWFnZXNpbmsgaXMgbGlua2VkIG9ubHkgYWZ0ZXIKKwkgIGRlY29kaW5nIGhhcyBhbHJlYWR5IHN0YXJ0ZWQgKGZvciBleGFtcGxlIE9XUikuCisKKzIwMTUtMTEtMTcgMTE6MTk6NTcgKzExMDAgIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorCisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgYXBwbGVtZWRpYTogdnRkZWM6IGltcHJvdmUgaGFuZGluZyBvZiBkZWNvZGUgZXJyb3JzL2ZyYW1lIGRyb3BzCisJICBJbXByb3ZlIGRlY29kZSBlcnJvciBoYW5kbGluZyBieSBhdm9pZGluZyBjYWxsaW5nIGludG8gR3N0VmlkZW9EZWNvZGVyIGZyb20gdGhlCisJICBWVCBkZWNvZGUgY2FsbGJhY2suIFRoaXMgcmVtb3ZlcyBjb250ZW50aW9uIG9uIHRoZSBHU1RfVklERU9fREVDT0RFUl9TVFJFQU1fTE9DSworCSAgd2hpY2ggdXNlZCB0byBtYWtlIHRoZSBkZWNvZGUgY2FsbGJhY2sgc2xvdyBlbm91Z2ggZm9yIFZUIHRvIHN0YXJ0IGRyb3BwaW5nIGxvdHMKKwkgIG9mIGZyYW1lcyBvbmNlIHRoZSBmaXJzdCBmcmFtZSB3YXMgZHJvcHBlZC4KKworMjAxNS0xMS0xNyAxMToyMjoxNSArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL3Z0ZGVjLmM6CisJICBhcHBsZW1lZGlhOiB2dGRlYzogZml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgd2FybmluZworCisyMDE1LTExLTE0IDIwOjIxOjE3ICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4Lmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiByZW1vdmUgbm93LWRlZnVuY3QgIm51bS1sb29rYmFjay1mcmFnbWVudHMiIHByb3BlcnR5CisJICBUaGlzIG5vIGxvbmdlciBkb2VzIGFueXRoaW5nLCBhbmQgaXQgd2FzIG1hcmtlZCBhcyBDT05TVFJVQ1RfT05MWQorCSAgd2hpY2ggbWVhbnMgc29tZW9uZSB3b3VsZCByZWFsbHkgaGF2ZSB0byBnbyBvdXQgb2YgdGhlaXIgd2F5IHRvCisJICBiZSBhYmxlIHRvIHNldCB0aGlzLCB3aGljaCB3b3VsZCBvbmx5IGJlIGRvbmUgaW4gdmVyeSBjdXN0b20KKwkgIHNjZW5hcmlvcywgaWYgZXZlciwgYW5kIHRob3NlIHdpbGwgbGlrZWx5IHRhcmdldCBhIHNwZWNpZmljCisJICB2ZXJzaW9uIG9mIEdTdHJlYW1lciB0aGVuLCBzbyBwcm9iYWJseSBub3QgbXVjaCBwb2ludCBrZWVwaW5nCisJICBpdCBkZXByZWNhdGVkIGZvciBhIHdoaWxlIGJlZm9yZSByZW1vdmluZyBpdC4KKworMjAxNS0xMS0xMyAxNzoxNDoxNCAtMDUwMCAgT2xpdmllciBDcsOqdGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG9jb252ZXJ0LmM6CisJICBhdXRvY29udmVydDogQWx3YXlzIGdpdmUgYSB2YWxpZCByZXBseSB0byBpbnRlcm5hbCBjYXBzIHF1ZXJpZXMKKwkgIENhcHMgcXVlcmllcyBjYW4gYWx3YXlzIGhhdmUgYSB2YWxpZCByZXBseSwgZWl0aGVyIHRoZSBmaWx0ZXIgb3IgQU5ZLgorCSAgSWYgdGhlIGNhcHMgYXJlIEFOWSwgdGhlbiBhY2NlcHQtY2FwcyBhbHdheXMgcmV0dXJucyBUUlVFLgorCisyMDE1LTExLTEyIDE2OjM1OjEyICswMTAwICBOaWNvbGFzIEh1ZXQgPG5pY29sYXMuaHVldEBwYXJyb3QuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFja2V0aXplci5jOgorCSAgbXBlZ3RzZGVtdXg6IGZpeCBzZWN0aW9uX2RhdGEgbGVhaworCSAgSWYgcGFja2V0LT5wYXlsb2FkX3VuaXRfc3RhcnRfaW5kaWNhdG9yIGlzIHRydWUgYW5kIHBvaW50ZXIgMCwgdGhlcmUgaXMgbm8KKwkgIGRpc2NvbnRpbnVpdHkgY2hlY2suIFRoZXJlZm9yZSB0aGVyZSBjb3VsZCBiZSBhIHByZXZpb3VzIHNlY3Rpb24gbm90IGNvbXBsZXRlCisJICB0aGF0IG5lZWQgdG8gYmUgY2xlYXJlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgwMTAKKworMjAxNS0xMS0xMyAxMDo0MTo1OCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2wuYzoKKwkgIGdsc2w6IGZpeCBwb3NzaWJsZSBzdHJpbmcgb3ZlcnJ1biBpbiBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcKKwkgIGdpdmVuIGEgTlVMTC10ZXJtaW5hdGVkIHN0cmluZywgcy4KKwkgIHNbaV0gPSAnXDAnOworCSAgaSsrOworCSAgZG9lcyBub3QgZ3VhcmVudGVlIHRoYXQgc1tpXSBpcyBOVUxMIHRlcm1pbmF0ZWQgYW5kIHRodXMgc3RyaW5nIG9wZXJhdGlvbnMKKwkgIGNvdWxkIHJlYWQgb2ZmIHRoZSBlbmQgb2YgdGhlIGFycmF5LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODAzOQorCisyMDE1LTExLTEzIDE2OjUwOjIyICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jOgorCSAgZ2xzaGFkZXI6IGRvbid0IHJlYWQgaW52YWxpZCBsaXN0IHBvaW50ZXJzICh1c2UgYWZ0ZXIgZnJlZSkKKwkgIGdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkIGFscmVhZHkgcmVtb3ZlcyB0aGUgbGlzdCBlbnRyeSBzbyBhdHRlbXB0aW5nIHRvCisJICB1c2UgdGhlIGVsZW1lbnQgdG8gaXRlcmF0ZSB0byB0aGUgbmV4dCBzdGFnZSBjb3VsZCByZWFkIGludmFsaWQgZGF0YS4KKwkgIEJhc2VkIG9uIHBhdGNoIGJ5IFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU4MDM5CisKKzIwMTUtMTEtMTMgMTA6NDQ6MjYgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xzbC5jOgorCSAgdGVzdHM6Z2xzbDogdmVyc2lvbl9wcm9maWxlX3Mgc3RyaW5nIGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgwMzkKKworMjAxNS0xMS0xMyAxMDo1NjoxMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2wuYzoKKwkgIGdsc2w6IGZyZWUgc3RyIHdoaWxlIHJldHVybmluZyBlcnJvcgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1ODAzOQorCisyMDE1LTExLTEzIDExOjA0OjM0ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmM6CisJICB0ZXN0czpnbHVwbG9hZDogZml4IGNhcHMgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTgwMzkKKworMjAxNS0xMS0xMiAxMjoyMTo1NCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogYXZvaWQgcG90ZW50aWFsIG92ZXJmbG93IGV4cHJlc3Npb24KKwkgIFRoZSByZXN1bHQgb2YgdGhlIHR3byBleHByZXNzaW9ucyB3aWxsIGJlIHByb21vdGVkIHRvIGd1aW50NjQgYW55d2F5LAorCSAgcGVyZm9ybSBhbGwgdGhlIGFyaXRobWV0aWMgaW4gNjQgYml0cyB0byBhdm9pZCBwb3RlbnRpYWwgb3ZlcmZsb3dzLgorCSAgQ0lEIDEzMzg2OTAsIENJRCAxMzM4NjkxCisKKzIwMTUtMTEtMTIgMTI6MDA6MDcgKzAwMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiByZW1vdmUgbWVtb3J5IGxlYWsKKwkgIFRoZSB2YWx1ZXMgb2YgY2hhbm5lbF9tYXBwaW5nIGFyZSBjb3BpZWQgYnkgZ3N0X2NvZGVjX3V0aWxzX29wdXNfY3JlYXRlX2NhcHMgKCkKKwkgIGJ1dCBpdCBkb2Vzbid0IGZyZWUgb3IgdGFrZSBvd25lcnNoaXAgb2YgdGhlIGdfbmV3MCBhbGxvY2F0ZWQgbWVtb3J5LiBUaGlzCisJICBuZWVkcyB0byBiZSBmcmVlZCBiZWZvcmUgZ29pbmcgb3V0IG9mIHNjb3BlLgorCSAgQ0lEIDEzMzg2OTIKKworMjAxNS0xMS0xMiAxMTo0MjozNiArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkgIG1wZWd0c211eDogcmVtb3ZlIHVubmVjZXNzYXJ5IGJ1ZmZlciBjaGVjaworCSAgYnVmIHN1cmVseSBpc24ndCBOVUxMIGluc2lkZSB0aGUgYmxvY2sgY29uZGl0aW9uYWwgdG8gYSBidWZmZXIgc2l6ZSBiaWdnZXIKKwkgIHRoYW4gKEdfTUFYVUlOVDE2IC0gMykuIFBsdXMgZ3N0X2J1ZmZlcl91bnJlZigpIGNoZWNrcyBpZiB0aGUgYnVmZmVyIGlzCisJICBOVUxMIGFuZCBkb2VzIG5vdGhpbmcgaWYgaXQgaXMuCisJICBDSUQgMTMzODY5MworCisyMDE1LTExLTEyIDExOjIzOjMxICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3B1cy9nc3RvcHVzcGFyc2UuYzoKKwkgIG9wdXNwYXJzZTogaW5pdGlhbGl6ZSBzYW1wbGUgcmF0ZSB0byBhIGRlZmF1bHQKKwkgIHNhbXBsZV9yYXRlIG1pZ2h0IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpZiAhc2lua19jYXBzIGlzIFRSVUUuIEluaXRpYWxpemUKKwkgIGl0IHRvIHRoZSBkZWZhdWx0IHVzZWQgaW4gZ3N0X2NvZGVjX3V0aWxzX29wdXNfcGFyc2VfY2FwcyAoKSB3aGVuIHRoZXJlIGlzCisJICBubyByYXRlIGRlZmluZWQgaW4gdGhlIGNhcHMuCisJICBDSUQgMTMzODY5NQorCisyMDE1LTExLTEyIDE2OjM2OjAzICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNsc3RhZ2U6IEZpeCB2ZXJ0ZXhfc291cmNlcyBtZW1vcnkgbGVhaworCSAgdmVydGV4X3NvdXJjZXMgaXMgYmVpbmcgYWxsb2NhdGVkIGJ1dCBub3QgZnJlZWQgcmVzdWx0aW5nIGluIGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5NzQKKworMjAxNS0xMS0xMiAxNjoyNjowMCArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogcmVtb3ZlIHVubmVjZXNzYXJ5IGZyZWUKKwkgIHZlcnNpb25fc3RyIGlzIGFscmVhZHkgYmVpbmcgZnJlZWQuIFNvIG5vIG5lZWQgdG8gY2FsbCBhZ2FpbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk3NAorCisyMDE1LTExLTEyIDE2OjE4OjM1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiBGaXggc3RyaW5nIGxlYWsKKwkgIFN0cmluZyBnb3QgdXNpbmcgZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZywgaXMgYWxsb2NhdGVkCisJICBtZW1vcnkgYW5kIHNob3VsZCBiZSBmcmVlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzk3NAorCisyMDE1LTExLTEyIDE2OjAyOjQ1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiBGaXggZnJhZ19wcm9nIGFuZCBmcmFnX2JvZHkgbWVtb3J5IGxlYWsKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5NzQKKworMjAxNS0xMS0xMSAxNjo1MToyMyArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeGVkIGhhbmRsaW5nIGVycm9ycyBlbWl0dGVkIGJ5IHVyaSBoYW5kbGVyCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTQ3CisKIDIwMTUtMTEtMTAgMTY6MzI6MzcgKzAxMDAgIE5pY29sYXMgSHVldCA8bmljb2xhcy5odWV0QHBhcnJvdC5jb20+CiAKIAkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CkBAIC0yOTMsNiArNzQ3MywxNiBAQAogCSAgcGFkIHdpbGwgbm90IGJlIHVucmVmZmVkIGFuZCB3aWxsIGJlIGxlYWtlZC4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc4NzMKIAorMjAxNS0xMS0wOSAxNzo0NToyOSArMDIwMCAgU3JlZXJlbmogQmFsYWNoYW5kcmFuIDxzcmVlcmVuai5iYWxhY2hhbmRyYW5AaW50ZWwuY29tPgorCisJKiBnc3QvaXZmcGFyc2UvZ3N0aXZmcGFyc2UuYzoKKwkgIGl2ZnBhcnNlOiBGaXggdGhlIHdyb25nIHdpZHRoICYgaGVpZ2h0IHBhcnNpbmcgb2YgdnA5IGJpdHN0cmVhbQorCSAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZm9yIGRldGVjdGluZyB0aGUgcmVzb2x1dGlvbiBjaGFuZ2VzCisJICBvbiBrZXkgZnJhbWVzIGlzIGJhc2VkIG9uIHZwOCBiaXRzdHJlYW0gYWxpZ25tZW50LiBBdm9pZCB0aGlzCisJICB3aWR0aCBhbmQgaGVpZ2h0IHBhcnNpbmcgZm9yIHZwOSBiaXRzdHJlYW0sIHdoaWNoIHJlcXVpcmVzIHByb3BlcgorCSAgZnJhbWUgaGVhZGVyIHBhcnNpbmcgaW5vcmRlciB0byBkZXRlY3QgdGhlIHJlc29sdXRpb24gY2hhbmdlIChGaXhtZSkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODI1CisKIDIwMTUtMTEtMTEgMTE6NDA6NTIgKzAxMDAgIEhlaW5yaWNoIEZpbmsgPGhmaW5rQHRvb2xzb25haXIuY29tPgogCiAJKiBzeXMvYXBwbGVtZWRpYS92dGVuYy5jOgpAQCAtMzAyLDYgKzc0OTIsMTQgQEAKIAkgIHZ0ZW5jIGluc3RhbmNlIGlzIHN0b3BwZWQgYW5kIHRoZW4gcmVzdGFydGVkLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzkzNQogCisyMDE1LTExLTExIDIzOjM5OjM1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IG1hbmdsZSBnbF9GcmFnQ29sb3IgZm9yIEdMMworCSAgU29tZSBkcml2ZXJzIGRvbid0IHByb3ZpZGUgdGhlIGNvbXBhdGliaWxpdHkgZGVmaW5pdGlvbiBhbmQgd2UgbmVlZCB0byBwcm92aWRlCisJICBvdXIgb3duICdvdXQgdmVjNCcgdmFyaWFibGUgdG8gcHV0IHRoZSByZXN1bHRzIG9mIHRoZSBmcmFnbWVudCBzaGFkZXIgaW50by4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc5MzgKKwogMjAxNS0xMS0xMSAxNjowNjoyNSArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KIAogCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbG9yY29udmVydC5jOgpAQCAtMzA5LDYgKzc1MDcsMTM2IEBACiAJICBPdXRwdXQgY2FwcyBiZWluZyBnb3QgZnJvbSB2aWRlbyBpbmZvIGlzIG5vdCBnZXR0aW5nIGZyZWVkCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3OTI5CiAKKzIwMTUtMTEtMTAgMTc6NTg6NTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkgIHRzZGVtdXg6IHByb3ZpZGUgb3VyIG93biBkZWZpbml0aW9uIG9mIGxvZzIoKQorCSAgVGhlIGxvZzIgZnVuY3Rpb24vbWFjcm8gZG9lc24ndCBleGlzdCB3aGVuIHRhcmdldHRpbmcgYW5kcm9pZCBBUEkgPCAxOCAob3IgTVNWQworCSAgPCAyMDEzKSB3aGVyZWFzIG91ciBjdXJyZW50IGJhc2VsaW5lIGlzIEFQSSA5LgorCisyMDE1LTExLTEwIDEzOjUyOjMwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmg6CisJKiBleHQvZ2wvZ3N0Z2xzdGVyZW9taXguYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5oOgorCSAgZ2x2aWV3Y29udmVydDogcmVtb3ZlIHNldF9mb3JtYXQKKwkgIFdlIG5lZWQgdGhlIGNhcHMgdG8gYmUgYWJsZSB0bworCSAgMS4gY2hlY2sgdGhlIGNhcHMgZmVhdHVyZXMKKwkgIDIuIGdldCB0aGUgcmVxdWVzdGVkIHRleHR1cmUtdGFyZ2V0IG9uIGlucHV0L291dHB1dAorCisyMDE1LTExLTExIDEwOjMxOjA3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IGZpeCBhIG1lbW9yeSBsZWFrIGlmIHRoZSB2aWV3IGNvbnZlcnNpb24gZmFpbHMKKworMjAxNS0xMS0xMSAxMzozNzo1OSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkgIGdsaW1hZ2VzaW5rOiBiYWxhbmNlIHRoZSBjcmVhdGlvbi9kZXN0cnVjdGlvbiBvZiB0aGUgb3ZlcmxheSBjb21wb3NpdG9yCisJICBGaXhlcyBzb21lIGxlYWtzL3Bvc3NpYmxlIHNlZ2ZhdWx0IG9uIHdoZW4gZmFpbGluZyB0byBjcmVhdGUgdGhlIGNvbXBvc2l0b3IuCisKKzIwMTUtMTEtMTEgMTI6MjM6MzAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jOgorCSAgZ2xzaGFkZXI6IHByb3Blcmx5IHVucmVmIHRoZSBzdGFnZXMgb24gZmFpbHVyZQorCSAgV2hlbiBmYWlsaW5nIGluIHRoZSB2YXJhcmdzIGZ1bmN0aW9ucywgYWxsIHRoZSBzdGFnZSBvYmplY3RzIG5vdCBoYW5kbGVkIG5lZWQgdG8KKwkgIGJlIHVucmVmZmVkIHRvIHByZXZlbnQgYSBsZWFrLgorCisyMDE1LTExLTExIDExOjI5OjM1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuYzoKKwkgIGdsc2xzdGFnZTogcHJvcGVybHkgcmV0dXJuIGFuIGVycm9yIHdoZW4gd2UgY291bGQgbm90IGNyZWF0ZSB0aGUgc2hhZGVyIHN0YWdlCisJICBXaGlsZSBpdCB3YXMgZXJyb3Jpbmcgb3V0IGNvcnJlY3RseSBsYXRlciwgdGhlcmUgd2VyZSBHTGliIHdhcm5pbmdzIGFib3V0CisJICBzZXR0aW5nIGEgR0Vycm9yIG92ZXIgdGhlIHRvcCBvZiBhbm90aGVyIEdFcnJvci4KKworMjAxNS0xMS0xMSAwMTowNToyMCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmM6CisJICBnbHNoYWRlcnN0cmluZ3M6IGZpeHVwIHRoZSBleHRlcm5hbC1vZXMgZnJhZ21lbnQgc2hhZGVyCisJICBUaGUgd3Jvbmcgc2FtcGxlciB0eXBlIHdhcyB1c2VkCisJICBzL3NhbXBsZXIyREV4dGVybmFsT0VTL3NhbXBsZXJFeHRlcm5hbE9FUy8KKworMjAxNS0xMS0xMCAyMzo0MToyNCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiB0cnkgdG8ga2VlcCB0aGUgc2FtZSB0ZXh0dXJlLXRhcmdldCBpZiBwb3NzaWJsZQorCSAgRml4ZXMgaXNzdWVzIGF0dGVtcHRpbmcgdG8gcGFzc3Rocm91Z2ggZXh0ZXJuYWwtb2VzIHRleHR1cmVzCisKKzIwMTUtMTEtMTAgMjI6NDE6NTcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZml4IHJlbmRlcmluZyByZWN0YW5ndWxhciB0ZXh0dXJlcyB3aXRoIEdMMworCSAgUmVjdGFuZ3VsYXIgdGV4dHVyZXMgYXJlIHVuYXZhaWxhYmxlIGluIHVuZXh0ZW5kZWQKKwkgIEdMRVMyICN2ZXJzaW9uIDEwMCBzaGFkZXJzLgorCSAgRml4ZXMKKwkgIHRleHR1cmUtdGFyZ2V0PXJlY3RhbmdsZSAhIGdsY29sb3Jjb252ZXJ0ICEgdGV4dHVyZS10YXJnZXQ9MkQKKwkgIFRoZXJlJ3MgYSBjb3VwbGUgb2YgZGlmZmVyZW5jZXMgYmV0d2VlbiBHTDMgYW5kIEdMRVMyL0dMCisJICAtIHZhcnlpbmcgLT4gaW4gb3Igb3V0IGRlcGVuZGluZyBvbiB0aGUgc3RhZ2UgKHZlcnRleC9mcmFnbWVudCkKKwkgIC0gYXR0cmlidXRlIC0+IGluCisJICAtIGZpbHRlcmVkIHRleHR1cmUgYWNjZXNzIGlzIGEgc2luZ2xlIGZ1bmN0aW9uLCB0ZXh0dXJlKCkKKworMjAxNS0xMS0xMCAyMDoyMDoyOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiBwcm9wZXJseSB1c2UgdGhlIG90aGVyIHRleHR1cmUtdGFyZ2V0IG9uIGZpeGF0aW9uCisKKzIwMTUtMTEtMTAgMjA6MTU6NTYgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSAgZ2xzbHN0YWdlOiBhZGQgZGVidWcgYXMgdG8gd2h5IF9zZXRfc3RyaW5ncygpIGZhaWxlZAorCisyMDE1LTExLTEwIDIwOjEzOjUzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmM6CisJICBnbHNsOiBmaXggY2hlY2sgZm9yIGdsc2wgdmVyc2lvbiBhZ2FpbnN0IEdMIGNvbnRleHQgaW52ZXJzaW9uCisJICBBbnkgR0xTTCB2ZXJzaW9uIHRoYXQgd2FzIGxlc3MgdGhhbiB0aGUgcHJvdmlkZWQgR0wgdmVyc2lvbiB3b3VsZCBmYWlsCisKKzIwMTUtMTEtMTAgMTA6MDI6MzggKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IEZpeCBwYWQgbWVtb3J5IGxlYWsuCisJICBUaGUgc3RhdGljIHBhZHMgZ290IGZyb20gcXVldWUgYW5kIHVyaV9oYW5kbGVyIGFyZSBub3QgYmVpbmcgZnJlZWQKKwkgIHJlc3VsdGluZyBpbiBtZW1vcnkgbGVha3MuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3ODU5CisKKzIwMTUtMTEtMTAgMTM6MTM6NTAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZW51bXMuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSAgZ2w6IGZvcndhcmQgZGVjbGFyZSBzb21lIGVudW1zCisJICBTcGVjaWZpY2FsbHkgdGhlIEdzdEdMVGV4dHVyZVRhcmdldCBlbnVtCisKKzIwMTUtMTEtMTAgMTM6MTE6MzcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNsc3RhZ2U6IGV4cG9zZSB0aGUgZGVmYXVsdCBzaGFkZXIgc3RyaW5ncyBhcyBwdWJsaWMKKwkgIEFkZCBzb21lIG90aGVyIHNpbXBsZSBzdHJpbmdzIGZvciBleHRlcm5hbC1vZXMgdGV4dHVyZXMgb3IgdHJhbnNmb3JtaW5nCisJICB0aGUgdGV4dHVyZSBjb29yZGluYXRlcyB3aXRoIGEgdHJhbnNmb3JtYXRpb24gbWF0cml4CisKKzIwMTUtMTEtMDYgMDM6MDU6MzEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogd2FpdCBvbiB0aGUgc3luYyBtZXRhIGZvciBpbnB1dCBidWZmZXJzCisKKzIwMTUtMTEtMDUgMDA6MTM6MDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CisJICBnbGltYWdlc2luazogd2FpdCBvbiB0aGUgcHJvdmlkZWQgc3luYyBtZXRhIHByb3ZpZGVkIHRvIGdsaW1hZ2VzaW5rCisKKzIwMTUtMTEtMDggMjI6MTQ6MDEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0Lmg6CisJICBnbGNvbG9yY29udmVydDogdXNlIHRoZSBjb3JyZWN0IG9lcyB0YXJnZXQgc3RyaW5nIGluIHRoZSB0ZW1wbGF0ZSBjYXBzCisKIDIwMTUtMTEtMTAgMTI6MzI6MzkgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZXh0L2d0ay9nc3RndGtnbHNpbmsuYzoKQEAgLTMxOCwxMyArNzY0NiwyNiBAQAogCSAgd2lsbCByZXR1cm4gRU1QVFkgYW5kIHRoZXJlZm9yZSBmYWlsIG5lZ290aWF0aW9uLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Nzg1NAogCi0yMDE1LTExLTA2IDE2OjE2OjMyICswMTAwICBFZHdhcmQgSGVydmV5IDxlZHdhcmRAY2VudHJpY3VsYXIuY29tPgorMjAxNS0xMS0xMCAxNDoyMTozMyArMTEwMCAgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CiAKLQkqIGdzdC9kdmJzdWJvdmVybGF5L2dzdGR2YnN1Ym92ZXJsYXkuYzoKLQkgIGR2YnN1Ym92ZXJsYXk6IERvbid0IHNlbmQgZmx1c2ggZXZlbnRzCi0JICBJdCBpcyB1cCB0byB0aGUgZWxlbWVudCBoYW5kbGluZyB0aGUgc2VlayB0byBzZW5kIGZsdXNoIGV2ZW50cwotCSAgZG93bnN0cmVhbSwgb3RoZXJ3aXNlIHdlIGVuZCB1cCB3aXRoIGEgc2l0dWF0aW9uIHdoZXJlIHVwc3RyZWFtCi0JICB3b3VsZCBnZXQgdW5leHBlY3RlZCBHU1RfRkxPV19GTFVTSElORworCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm06CisJICBhcHBsZW1lZGlhOiBmaXggdnRkZWMgdGV4dHVyZSBzaGFyaW5nIG9uIGlvcyA5LjEKKwkgIFVzZSBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgdG8gZ2V0IHRoZSBmb3JtYXQgcGFzc2VkIHRvCisJICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlVGV4dHVyZUZyb21JbWFnZS4gQmVmb3JlIHRoaXMgY2hhbmdlIGV4dHJhY3RpbmcgdGhlCisJICBzZWNvbmQgdGV4dHVyZSBmcm9tIHRoZSBwaXhlbCBidWZmZXIgd2FzIGZhaWxpbmcgb24gaW9zIDkuMS4KKworMjAxNS0xMS0wNiAxNzoyNDo1MiAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy90ZW1wbGF0ZW1hdGNoLmM6CisJICB0ZW1wbGF0ZW1hdGNoOiBhZGQgYSBmcmFtZXJhdGUgdG8gdGVzdCBjYXBzCisJICBUaGUgcGFkIHRlbXBsYXRlIHJlcXVpcmVzIGEgZnJhbWVyYXRlLCBzbyB1c2UgaXQgdG8gcHJldmVudAorCSAgY2FwcyBuZWdvdGlhdGlvbiBmYWlsdXJlcy4KKwkgIEZpeGVzIHRoZSB1bml0IHRlc3QKKworMjAxNS0xMS0wNiAyMDozODo1NiArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvLmdpdGlnbm9yZToKKwkgIHRlc3RzOiB1cGRhdGUgLmdpdGlnbm9yZSBmb3IgbmV3IHRlc3QgYmluYXJpZXMKIAogMjAxNS0xMS0wNiAxOToyNjoyMSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KIApAQCAtMzM4LDYgKzc2NzksNDU1IEBACiAJICBvZiBHU1RfRkxPV19GTFVTSElORyB3aGVuIHRyeWluZyB0byBmb3J3YXJkIHN0aWNreQogCSAgZXZlbnRzIGF0IGp1c3QgdGhlIHdyb25nIG1vbWVudC4KIAorMjAxNS0xMS0wNiAxNjoxNjozMiArMDEwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2R2YnN1Ym92ZXJsYXkvZ3N0ZHZic3Vib3ZlcmxheS5jOgorCSAgZHZic3Vib3ZlcmxheTogRG9uJ3Qgc2VuZCBmbHVzaCBldmVudHMKKwkgIEl0IGlzIHVwIHRvIHRoZSBlbGVtZW50IGhhbmRsaW5nIHRoZSBzZWVrIHRvIHNlbmQgZmx1c2ggZXZlbnRzCisJICBkb3duc3RyZWFtLCBvdGhlcndpc2Ugd2UgZW5kIHVwIHdpdGggYSBzaXR1YXRpb24gd2hlcmUgdXBzdHJlYW0KKwkgIHdvdWxkIGdldCB1bmV4cGVjdGVkIEdTVF9GTE9XX0ZMVVNISU5HCisKKzIwMTUtMTEtMDYgMTk6MjM6MDkgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJKiBleHQvY3VybC9nc3RjdXJsZnRwc2luay5jOgorCSogZXh0L2R0bHMvZ3N0ZHRsc2RlYy5jOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtaXJyb3IuYzoKKwkqIGdzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jOgorCSAgRml4IGNvZGUgaW5kZW50YXRpb24KKworMjAxNS0xMC0yMiAxMzo0MDozNiArMDIwMCAgQnJhbmtvIFN1YmFzaWMgPGJyYW5rb0BheGlzLmNvbT4KKworCSogZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jOgorCSAgcnRwb252aWZ0aW1lc3RhbXA6IHVzZSBzdHJlYW0gdGltZSBmb3IgdGltZXN0YW1wCisJICBUaGUgT252aWYgU3RyZWFtaW5nIFNwZWNpZmljYXRpb24gc3BlY2lmaWVzIHRoYXQgdGhlIE5UUCB0aW1lc3RhbXBzCisJICBpbiB0aGUgT252aWYgZXh0ZW5zaW9uIGhlYWRlciBpbmRpY2FlcyB0aGUgYWJzb2x1dGUgVVRDIHRpbWUgYXNzb2NpYXRlZAorCSAgd2l0aCB0aGUgYWNjZXNzIHVuaXQuIEJ1dCBieSB1c2luZyBydW5uaW5nIHRpbWUgd2UgY2FuIG5vdCBhY2hpZXZlIHRoYXQsCisJICBzaW5jZSBhIGZyYW1lJ3MgcnVubmluZyB0aW1lIGRlcGVuZHMgb24gdGhlIHBsYXllZCBpbnRlcnZhbCwgd2hldGhlciBhCisJICBub24tZmx1c2hpbmcgaXMgZG9uZSwgZXRjLiBJbnN0ZWFkIHdlIGhhdmUgdG8gdXNlIHRoZSBzdHJlYW0gdGltZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2ODgKKworMjAxNS0xMS0wNiAwOTo0NDo1NyArMDEwMCAgTGludXMgU3ZlbnNzb24gPGxpbnVzc25AYXhpcy5jb20+CisKKwkqIGdzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jOgorCSogZ3N0L29udmlmL2dzdHJ0cG9udmlmdGltZXN0YW1wLmg6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jOgorCSAgcnRwb252aWZ0aW1lc3RhbXA6IFVwZGF0ZSBudHAtb2Zmc2V0IGFuZCBkL2UtYml0cyB3aXRoIGEgR3N0RXZlbnQKKwkgIEl0IGlzIG5vdyBwb3NzaWJsZSB0byB1cGRhdGUgdGhlIGN1cnJlbnRseSB1c2VkIG50cC1vZmZzZXQgd2l0aCBhCisJICBjdXN0b20gc2VyaWFsaXplZCBkb3duc3RyZWFtIGV2ZW50LiBUaGUgZWxlbWVudCB3aWxsIHJlYWQgdGhlIG50cC1vZmZzZXQKKwkgIHByb3BlcnR5IHdoZW4gZG9pbmcgdGhlIHN0YXRlIHRyYW5zaXRpb24gZnJvbSBSRUFEWSB0byBQQVVTRUQgYW5kCisJICB1c2UgdGhhdCBvZmZzZXQgdW50aWwgaXQgcmVjZWl2ZXMgYSAiR3N0TnRwT2Zmc2V0IiBldmVudCwgd2hpY2ggYWxzbworCSAgaGFzIGEgIm50cC1vZmZzZXQiIGF0dHJpYnV0ZSBpbiB0aGF0IGl0J3Mgc3RydWN0dXJlLiBJbiBjYXNlIHRoZQorCSAgcHJvcGVydHkgaXMgbm90IHNldCBhbmQgbm8gZXZlbnQgaGFzIGJlZW4gcmVjZWl2ZWQsIHRoZSBlbGVtZW50IHdpbGwKKwkgIGd1ZXNzIHRoZSBucHQtb2Zmc2V0IHdpdGggaGVscCBvZiB0aGUgY2xvY2suIElmIG5vIGNsb2NrIGNhbiBiZQorCSAgcmV0cmlldmVkLCB0aGUgZWxlbWVudCB3aWxsIGVycm9yIG91dCBhbmQgc3RvcCB0aGUgZGF0YSBmbG93LgorCSAgVGhlIHNhbWUgZXZlbnQgaXMgYWxzbyB1c2VkIGZvciB1cGRhdGluZyB0aGUgRC9FLWJpdHMgaW4gdGhlIFJUUAorCSAgZXh0ZW5zaW9uIGhlYWRlci4gVGhlIGRpc2NvbnQgZmxhZyBpbiBhIGJ1ZmZlciBjYW4gYmUgc2V0IHdoZW52ZXIgYQorCSAgbGl2ZS9uZXR3b3JrIHNvdXJjZSBsb29zZXMgYSBmcmFtZSwgYnV0IHRoYXQgaXMgbm90IHRoZSB0eXBlIG9mCisJICBkaXNjb250aW51aXR5IHRoYXQgdGhlIG9udmlmIGV4dGVuc2lvbiBoZWFkZXIgc2hvdWxkIHJlZmxlY3QuIFRoZQorCSAgaGVhZGVyIGlzIG1haW5seSB1c2VkIGZvciBwbGF5YmFjayBvZiBhIHRyYWNrIGNvbmNlcHQsIGluIHdoaWNoCisJICBnYXBzIGNhbiBiZSBwcmVzZW50LCBhbmQgaXQncyB0aG9zZSBraW5kIG9mIGdhcHMgdGhhdCBzaG91bGQgYmUKKwkgIGhpZ2hsaWdodGVkIHdpdGggdGhlIEQtIGFuZCBFLWJpdHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3Njg4CisKKzIwMTUtMTEtMDYgMDk6NDQ6MTYgKzAxMDAgIExpbnVzIFN2ZW5zc29uIDxsaW51c3NuQGF4aXMuY29tPgorCisJKiBnc3Qvb252aWYvZ3N0cnRwb252aWZ0aW1lc3RhbXAuYzoKKwkqIGdzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYzoKKwkgIHJ0cG9udmlmdGltZXN0YW1wOiBEbyBub3QgcmVhcmFuZ2Ugb3JkZXIgb2YgZGF0YQorCSAgSWYgYSBidWZmZXIgb3IgYSBidWZmZXIgbGlzdCBpcyBjYWNoZWQsIG5vIGV2ZW50cyBzZXJpYWxpemVkIHdpdGggdGhlCisJICBkYXRhIHN0cmVhbSBzaG91bGQgZ2V0IHRocm91Z2guIFRoZSBjYWNoZWQgYnVmZmVycyBhbmQgZXZlbnRzIHNob3VsZAorCSAgYmUgcHVyZ2VkIHdoZW4gd2Ugc3RvcCBmbHVzaGluZy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2ODgKKworMjAxNS0xMC0xMyAxNDoyMTo0NyArMDIwMCAgQnJhbmtvIFN1YmFzaWMgPGJyYW5rb0BheGlzLmNvbT4KKworCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZi5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZwYXJzZS5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYzoKKwkgIHJ0cG9udmlmOiBzcGxpdCB1bml0IHRlc3RzIGluIHNldmVyYWwgZmlsZXMKKwkgIFNwbGl0IHRoZSB1bml0IHRlc3RzIGZvciBydHBvbnZpZnRpbWVzdGFtcCBhbmQgcnRwb252aWZwYXJzZQorCSAgZWxlbWVudHMgaW4gc2VwYXJhdGUgZmlsZXMuCisJICBTZXR1cCBhbmQgY2xlYW51cCB0aGUgZWxlbWVudCBhbmQgcGFkcyBpbiBmaXh1cmVzLiBNYWtlIHRoZSB0ZXN0cyB3b3JrCisJICB3aXRoIENLX0ZPUks9bm8gYXMgd2VsbCwgYnkgY2xlYW5pbmcgdXAgdGhlICdidWZmZXJzJyBsaXN0IHdoZW4gbmVlZGVkLgorCSAgTWFrZSB1bml0IHRlc3RzIHdvcmsgd2hlbiBydW4gaW4gdmFsZ3JpbmQgYnkgdW5yZWZmaW5nIGFsbCBidWZmZXJzLAorCSAgYW5kIGJ5IG5vdCBhbGxvY2F0aW5nIGFueSBwYXlsb2FkIGluIFJUUCBidWZmZXJzLiBTaW5jZSB3ZSdyZSBub3QKKwkgIGRvaW5nIGFueXRoaW5nIHdpdGggdGhlIHBheWxvYWQgcGFydCwgYnV0IHdlJ3JlIG1lbWNtcC1hcmluZyB0aGUKKwkgIGNvbXBsZXRlIGJ1ZmZlciBtZW1vcnksIHZhbGdyaW5kIGNvbXBsYWluZWQgYWJvdXQgbm9uLWluaXRpYWxpemVkCisJICBtZW1vcnkgYmVpbmcgdXNlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc2ODgKKworMjAxNS0wOS0wNCAwOTo1OTowNiArMDIwMCAgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oOgorCSAgYWRhcHRpdmVkZW11eDogaW1wcm92ZWQgYml0cmF0ZSBlc3RpbWF0aW9ucworCSAgQml0cmF0ZSBlc3RpbWF0aW9uIGlzIG5vdyBoYW5kbGVkIHRocm91Z2ggYSBxdWV1ZTIgZWxlbWVudCBhZGRlZCBhZnRlcgorCSAgdGhlIHNvdXJjZSBlbGVtZW50IHVzZWQgdG8gZG93bmxvYWQgZnJhZ21lbnRzLgorCSAgT3JpZ2luYWwgaGxzZGVtdXggcGF0Y2ggYnkgRHVuY2FuIFBhbG1lciA8ZHBhbG1lckBkaWdpc29mdC50dj4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MzM5NTkKKworMjAxNS0xMS0wNiAxMjo1OTo1MSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvdy5jcHA6CisJICBkc2hvdzogZml4IEdMaXN0IGxlYWsKKwkgIF9yZW1vdmVfbGluaygpIHdvdWxkIG5vdCBmcmVlIHRoZSBhY3R1YWwgbGlzdCBub2Rlcy4KKworMjAxNS0xMS0wNiAxMjozMTowOSArMDAwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFyc2UuYzoKKwkgIGdsc2hhZGVyLCB0c2RlbXV4OiBzaW1wbGlmeSBjb2RlCisJICBKdXMgdXNlIF9kZWxldGVfbGluaygpIGluc3RlYWQgb2YgX3JlbW92ZV9saW5rKCkgKyBfZnJlZTEoKQorCisyMDE1LTExLTA2IDEyOjMwOjEyICswMDAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xtaXhlcmJpbi5jOgorCSAgZ2xtaXhlcmJpbjogZml4IG1pbm9yIGxlYWsKKwkgIERvbid0IGxlYWsgcmVtb3ZlZCBsaXN0IG5vZGUuCisKKzIwMTUtMTEtMDYgMTA6MjI6NDIgKzAxMDAgIFRoaWJhdWx0IFNhdW5pZXIgPHRzYXVuaWVyQGdub21lLm9yZz4KKworCSogZXh0L2ZhYWMvZ3N0ZmFhYy5jOgorCSAgZmFhYzogSW5pdGlhbGl6ZSBkZWJ1ZyBjYXRlZ29yeSBzb29uIGVub3VnaAorCSAgQXZvaWRpbmcgYXNzZXJ0aW9ucworCisyMDE1LTExLTA1IDEwOjEyOjQxICswMDAwICBKdWxpYW4gQm91emFzIDxqdWxpYW4uYm91emFzQHZjYXRlY2hub2xvZ3kuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJICBjb25maWd1cmUuYWM6IEFkZGVkIC0td2l0aC1obHMtY3J5cHRvPWF1dG98bmV0dGxlfGxpYmdjcnlwdHxvcGVuc3NsIG9wdGlvbiB0byBidWlsZCB0aGUgc291cmNlIHVzaW5nIHRoZSBkZXNpcmVkIGNyeXB0b2dyYXBoaWMgbGlicmFyeSBmb3IgSExTCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MzE5CisKKzIwMTUtMTEtMDYgMDA6NDg6NDIgKzAwMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzOiBtM3U4OiBkb24ndCBsZWFrIEdMaXN0IG5vZGVzIHdoZW4gbWF0Y2hpbmcgdXAgdmFyaWFudCBsaXN0cyBhZnRlciBtYXN0ZXIgbGlzdCB1cGRhdGUKKworMjAxNS0xMS0wNSAxMjozNjo0OCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogdXNlIEdTVF9TVElNRV9GT1JNQVQgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gbWFudWFsbHkgaGFuZGxlIG5lZ2F0aXZlIHZhbHVlIG9mIGRlYWRsaW5lLCBHU1RfU1RJTUVfRk9STUFUIGRvZXMKKwkgIGV4YWN0bHkgdGhpcy4KKworMjAxNS0xMS0wNSAxMjoxNzowMCArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmM6CisJICByZXNpbmR2ZDogdXNlIEdTVF9TVElNRV9GT1JNQVQgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gdXNlIEdfR0lOVDY0X0ZPUk1BVCBmb3IgcG90ZW50aWFsbHkgbmVnYXRpdmUgdmFsdWVzIG9mCisJICBHc3RDbG9ja1RpbWVEaWZmLiBTaW5jZSAxLjYgdGhlc2UgY2FuIGJlIGhhbmRsZWQgd2l0aCBHU1RfU1RJTUVfRk9STUFULgorCSAgUGx1cyBpdCBjcmVhdGVzIG1vcmUgcmVhZGFibGUgdmFsdWVzIGluIHRoZSBsb2dzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzQ4MAorCisyMDE1LTExLTA1IDEyOjExOjE5ICswMTAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3B1cy9nc3RvcHVzZGVjLmM6CisJICBvcHVzZGVjOiBVcGRhdGUgc2luayBwYWQgdGVtcGxhdGVzCisJICBXZSBhbHdheXMgcmVxdWlyZSB0aGUgY2hhbm5lbC1tYXBwaW5nLWZpZWxkLiBJZiBpdCdzIDAgd2UgcmVxdWlyZSBub3RoaW5nCisJICBlbHNlLCBvdGhlcndpc2Ugd2UgbmVlZCBjaGFubmVscywgc3RyZWFtLWNvdW50IGFuZCBjb3VwbGVkIGNvdW50IHRvIGJlCisJICBhdmFpbGFibGUuCisKKzIwMTUtMTEtMDMgMTk6MDk6MzMgLTA4MDAgIFN0ZWZhbiBTYXVlciA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYzoKKwkgIGFnZ3JlZ2F0b3I6IGRvbid0IGNvbXBhcmUgdGVtcGwgaW5zdGFuY2UgcG9pbnRlcnMKKwkgIE9uZSBjYW4gcGFzcyB0aGUgUGFkVGVtcGxhdGUgZnJvbSB0aGUgZWxlbWVudF9jbGFzcyBvciB0aGUgb25lIGZyb20gdGhlIGZhY3RvcnkuCisJICBXaGlsZSB0aGV5IGhhdmUgdGhlIHNhbWUgY29udGVudCwgdGhlIGFkZHJlc3NlcyBhcmUgZGlmZmVyZW50LgorCisyMDE1LTExLTA0IDAwOjEyOjUyICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9vcHVzLmM6CisJICBvcHVzOiBSZW1vdmUgaW52YWxpZCB1bml0IHRlc3QKKwkgIE9wdXMgaGVhZGVycyBzaG91bGQgbmV2ZXIgYmUgaW4tYmFuZCwgc28gZG9uJ3QgdGVzdCBmb3IgY29ycmVjdAorCSAgaGFuZGxpbmcgb2YgdGhhdC4KKworMjAxNS0xMS0wNCAwMDoxMjoyMiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogQ3JlYXRlIGFuIGVtcHR5IHRhZ2xpc3QgaWYgdGhlcmUgaXMgbm9uZQorCSAgVGhlcmUgYWx3YXlzIGhhdmUgdG8gYmUgMiBidWZmZXJzIGluIHRoZSBzdHJlYW1oZWFkZXJzLCBldmVuIGlmCisJICB0aGUgY29tbWVudCBidWZmZXIgaXMgYmFzaWNhbGx5IGVtcHR5LgorCisyMDE1LTExLTAzIDE0OjQxOjU3IC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmM6CisJICBhZ2dyZWdhdG9yOiBTZXQgdG8gcnVubmluZyBpbiBhIHNpbmdsZSBwbGFjZQorCSAgT25seSBzZXQgdG8gcnVubmluZyB3aGVuIHRoZSB0aHJlYWQgaXMgYWN0dWFsbHkgc3RhcnRlZC4KKworMjAxNS0xMS0wMyAxNDozNzoyNiAtMDUwMCAgT2xpdmllciBDcsOqdGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogRG9jdW1lbnQgbW9yZSBsb2NraW5nCisKKzIwMTUtMTEtMDMgMTk6NTM6MDAgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiBEb24ndCBjcmVhdGUgYW4gaW5jb21wbGV0ZSBPcHVzSGVhZCBidXQgc2V0IGFsbCB0aGUgb3RoZXIgY2FwcyBmaWVsZHMgaW5zdGVhZAorCSAgT3B1c0hlYWQgaXMgb3B0aW9uYWwsIHRoZSBvdGhlciBmaWVsZHMgYXJlIG5vdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTIKKworMjAxNS0xMS0wMyAxOTo1MTowMyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvTWFrZWZpbGUuYW06CisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jOgorCSAgdHNtdXg6IFNpbXBsaWZ5IE9wdXMgY2FwcyBwYXJzaW5nIGJ5IHVzaW5nIGNvZGVjdXRpbHMgaGVscGVycworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzE1MgorCisyMDE1LTExLTAzIDE0OjUwOjUzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3B1cy9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuaDoKKwkqIGV4dC9vcHVzL2dzdG9wdXNlbmMuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNoZWFkZXIuYzoKKwkqIGV4dC9vcHVzL2dzdG9wdXNoZWFkZXIuaDoKKwkqIGV4dC9vcHVzL2dzdG9wdXNwYXJzZS5jOgorCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmg6CisJKiBleHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuYzoKKwkqIGV4dC9vcHVzL2dzdHJ0cG9wdXNwYXkuYzoKKwkgIG9wdXM6IEFkZCBwcm9wZXIgc3VwcG9ydCBmb3IgbXVsdGljaGFubmVsIGF1ZGlvCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MTUyCisKKzIwMTUtMTEtMDMgMTE6NDE6MDcgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNwYXJzZS5jOgorCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmg6CisJICBvcHVzcGFyc2U6IEZpeCB1cCBwcmUtc2tpcCBpbiBPcHVzSGVhZCBpZiB1cHN0cmVhbSB1c2luZyBHc3RBdWRpb0NsaXBwaW5nTWV0YQorCSAgTWFrZXMgdHJhbnNtdXhpbmcgZnJvbSBlLmcuIE1QRUctVFMgdG8gT2dnIHNhbXBsZSBhY2N1cmF0ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMS0wMiAxODowMjo1NSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmFtOgorCSogZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvTWFrZWZpbGUuYW06CisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eF9vcHVzLmM6CisJICB0c2RlbXV4L211eDogQWRkIHN1cHBvcnQgZm9yIEdzdEF1ZGlvQ2xpcHBpbmdNZXRhIGZvciBPcHVzCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MTUzCisKKzIwMTUtMTEtMDIgMTc6MzM6NTMgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXNkZWM6IEhhbmRsZSBHc3RBdWRpb0NsaXBwaW5nTWV0YSBpbnN0ZWFkIG9mIHRoZSBwcmUtc2tpcCBmaWVsZCBpbiB0aGUgT3B1c0hlYWQKKwkgIG9nZ2RlbXV4IGlzIG91dHB1dHRpbmcgdGhlIG1ldGEgbm93LCBhbmQgb25seSBvdXRwdXRzIGlmIGl0IHNob3VsZCByZWFsbHkKKwkgIGFwcGx5IHRvIHRoZSBjdXJyZW50IGJ1ZmZlci4gUHJldmlvdXNseSB3ZSB3b3VsZCBza2lwIE4gc2FtcGxlcyBhbHNvIGlmIHdlCisJICBzdGFydGVkIHRoZSBkZWNvZGVyIGluIHRoZSBtaWRkbGUgb2YgdGhlIHN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMS0wMiAxNjo1MjoyOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogQWRkIEdzdEF1ZGlvQ2xpcHBpbmdNZXRhIHRvIGJ1ZmZlcnMgdGhhdCBuZWVkIHRvIGJlIGNsaXBwZWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMS0wMiAxMDozMDo1MiArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogRGlzYWJsZSBncmFudWxlIHBvc2l0aW9uIGNhbGN1bGF0aW9ucyBieSB0aGUgYmFzZSBjbGFzcworCSAgSXQgaXMgZG9pbmcgdGhlIHdyb25nIHRoaW5nIGJlY2F1c2Ugb2YgdGhlIE9wdXMgcHJlLXNraXA6IHdoaWxlIHRoZSB0aW1lc3RhbXBzCisJICBhcmUgc2hpZnRlZCBieSB0aGUgcHJlLXNraXAsIHRoZSBncmFudWxlIHBvc2l0aW9ucyBhcmUgbm90IHNoaWZ0ZWQuCisJICBvZ2dtdXggaXMgZG9pbmcgdGhlIHJpZ2h0IHRoaW5nIGhlcmUgYWxyZWFkeS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMC0zMSAxNTowMjo1MCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSAgb3B1c2VuYzogQWRkIHNvbWUgRklYTUUgY29tbWVudHMgYWJvdXQgY2FsY3VsYXRpbmcgcGFkZGluZyB3aXRoIExQQworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzE1MworCisyMDE1LTEwLTMwIDIwOjU3OjM3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmM6CisJKiBleHQvb3B1cy9nc3RvcHVzZW5jLmg6CisJICBvcHVzZW5jOiBFbmNvZGUgZXhhY3RseSB0aGUgYW1vdW50IG9mIHNhbXBsZXMgd2UgZ290IGFzIGlucHV0IGFuZCBwdXQgY29ycmVjdCB0aW1lc3RhbXBzIG9uIGl0CisJICBUaGUgZmlyc3QgZnJhbWUgaGFzIGxvb2thaGVhZCBsZXNzIHNhbXBsZXMsIHRoZSBsYXN0IGZyYW1lIG1pZ2h0IGhhdmUgc29tZQorCSAgcGFkZGluZyBvciB3ZSBtaWdodCBoYXZlIHRvIGVuY29kZSBhbm90aGVyIGZyYW1lIG9mIHNpbGVuY2UgdG8gZ2V0IGFsbCBvdXIKKwkgIGlucHV0IGludG8gdGhlIGVuY29kZWQgZGF0YS4KKwkgIFRoaXMgaXMgYmVjYXVzZSBvZiBhKSB0aGUgbG9va2FoZWFkIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGVuY29kaW5nLCB3aGljaAorCSAgc2hpZnRzIGFsbCBkYXRhIGJ5IHRoYXQgYW1vdW50IG9mIHNhbXBsZXMgYW5kIGIpIHRoZSBwYWRkaW5nIG5lZWRlZCB0byBmaWxsCisJICB0aGUgdmVyeSBsYXN0IGZyYW1lIGNvbXBsZXRlbHkuCisJICBJZGVhbGx5IHdlIHdvdWxkIHVzZSBMUEMgdG8gY2FsY3VsYXRlIHNvbWV0aGluZyBiZXR0ZXIgdGhhbiBzaWxlbmNlIGZvciB0aGUKKwkgIHBhZGRpbmcgdG8gbWFrZSB0aGUgZW5jb2RpbmcgYXMgc21vb3RoIGFzIHBvc3NpYmxlLgorCSAgV2l0aCB0aGlzIHdlIGdldCBleGFjdGx5IHRoZSBzYW1lIGFtb3VudCBvZiBzYW1wbGVzIGFnYWluIGluIGFuCisJICBvcHVzZW5jICEgb3B1c2RlYyBwaXBlbGluZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcxNTMKKworMjAxNS0xMC0zMCAyMDo0NzoyMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L29wdXMvZ3N0b3B1c2VuYy5jOgorCSogZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5jOgorCSogZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5oOgorCSogZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmM6CisJICBvcHVzZW5jOiBQdXQgbG9va2FoZWFkL3ByZS1za2lwIGludG8gdGhlIE9wdXNIZWFkIGhlYWRlcgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzE1MworCisyMDE1LTEwLTI1IDE3OjI3OjM5ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L01ha2VmaWxlLmFtOgorCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkqIGdzdC9tcGVndHNtdXgvbXBlZ3RzbXV4X29wdXMuYzoKKwkqIGdzdC9tcGVndHNtdXgvbXBlZ3RzbXV4X29wdXMuaDoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYzoKKwkqIGdzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uaDoKKwkgIHRzbXV4OiBBZGQgc3VwcG9ydCBmb3IgT3B1cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA0OQorCisyMDE1LTEwLTI0IDE0OjI3OjQzICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUuYW06CisJKiBnc3QvbXBlZ3RzZGVtdXgvZ3N0bXBlZ2Rlc2MuaDoKKwkqIGdzdC9tcGVndHNkZW11eC90c2RlbXV4LmM6CisJICB0c2RlbXV4OiBBZGQgc3VwcG9ydCBmb3IgT3B1cworCSAgQ29kZSBwYXJ0aWFsbHkgYmFzZWQgb24KKwkgIGh0dHBzOi8vZ2l0LnZpZGVvbGFuLm9yZy8/cD1mZm1wZWcuZ2l0O2E9Y29tbWl0O2g9NzQxNDFmNjkzZGVkMmZiZjc1YWY1NmZmZjMwOWQyZGIzNTE4MzYzNQorCSAgYW5kIGJhc2VkIG9uIHRoZSBzcGVjIGRyYWZ0IGF0CisJICBodHRwczovL3dpa2kueGlwaC5vcmcvT3B1c1RTCisJICBNYWtlcyBpdCBwb3NzaWJsZSB0byBkZW11eAorCSAgaHR0cDovL3d3dy5vYmUudHYvRG93bmxvYWRzL29wdXMudHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTcwNDkKKworMjAxNS0xMC0yNSAxOTozMTo1MSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkgIHRzbXV4OiBEb24ndCBsZWFrIGJ1ZmZlciBpbiBlcnJvciBjYXNlcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA0OQorCisyMDE1LTEwLTI1IDE5OjI5OjUzICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jOgorCSAgdHNtdXg6IENhbGwgcHJlcGFyZSBmdW5jdGlvbiBmb3IgZWFjaCBjb2xsZWN0ZWQgYnVmZmVyCisJICBOb3Qgd2hlbiBjbGlwcGluZyBidWZmZXJzLCBhcyB0aGF0IGRvZXNuJ3QgaGFwcGVuIGZvciBldmVyeSBidWZmZXIuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MDQ5CisKKzIwMTUtMTAtMjUgMTg6MDk6MjQgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzZGVzY3JpcHRvci5jOgorCSogZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmg6CisJICBtcGVndHNkZXNjcmlwdG9yOiBBZGQgQVBJIGZvciBjcmVhdGluZyBleHRlbmRlZCBkZXNjcmlwdG9ycyBhbmQgZml4IHdyaXRpbmcgdGhlbQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA0OQorCisyMDE1LTExLTAyIDIxOjE2OjE1IC0wODAwICBTdGVmYW4gU2F1ZXIgPGVuc29uaWNAdXNlcnMuc2YubmV0PgorCisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwOgorCSAgb3BlbmN2OiBjYXN0IHBhcmFtc3BlYyBmbGFncyB0byBmaXggdGhlIGJ1aWxkIGZvciBjKysKKwkgIEFsbCB0aGUgb3RoZXIgZWxlbWVudHMgaW4gdGhpcyBwbHVnaW4gZG8gdGhpcyBhbHJlYWR5LgorCisyMDE1LTExLTAzIDE1OjA1OjIwICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBzeXMvZHZiL2dzdGR2YnNyYy5jOgorCSAgZHZic3JjOiB1c2UgR1NUX1NUSU1FX0FSR1MgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gdXNlIEdfR0lOVDY0X0ZPUk1BVCBmb3IgcG90ZW50aWFsbHkgbmVnYXRpdmUgdmFsdWVzIG9mCisJICBHc3RDbG9ja1RpbWVEaWZmLiBTaW5jZSAxLjYgdGhlc2UgY2FuIGJlIGhhbmRsZWQgd2l0aCBHU1RfU1RJTUVfQVJHUy4KKwkgIFBsdXMgaXQgY3JlYXRlcyBtb3JlIHJlYWRhYmxlIHZhbHVlcyBpbiB0aGUgbG9ncy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTc0ODAKKworMjAxNS0xMS0wMyAxNTowMDowMSArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSAgYW1jdmlkZW9kZWM6IHVzZSBHU1RfU1RJTUVfQVJHUyBmb3IgR3N0Q2xvY2tUaW1lRGlmZgorCSAgTm8gbmVlZCB0byBtYW51YWxseSBoYW5kbGUgbmVnYXRpdmUgdmFsdWUgb2YgZGVhZGxpbmUsIEdTVF9TVElNRV9BUkdTIGRvZXMKKwkgIGV4YWN0bHkgdGhpcy4KKworMjAxNS0xMS0wMyAxMDo0Mjo0MCArMDAwMCAgSHl1bmlsIFBhcmsgPGh5dW5pbDQ2LnBhcmtAc2Ftc3VuZy5jb20+CisKKwkqIGV4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmM6CisJICB3YXlsYW5kc2luazogQWRkIGV4Y2VwdGlvbiBjb2RlIGZvciBzZXR0aW5nIHdsX3N1cmZhY2UKKwkgIFdheWxhbmRzaW5rIG5lZWRzIGV4Y2VwdGlvbiBjb2RlIGluIGdzdF93YXlsYW5kX3Npbmtfc2V0X3dpbmRvd19oYW5kbGUoKS4KKwkgIEFmdGVyIG1ha2luZyBzaW5rLT53aW5kb3csIFVzZXIgY2FuIGNhbGwKKwkgIGdzdF93YXlsYW5kX3Npbmtfc2V0X3dpbmRvd19oYW5kbGUoKS4gSXQgaXMgdGhlIHVzZXIncyBmYXVsdCwgYnV0CisJICBXYXlsYW5kc2luayBuZWVkcyB0byBoYW5kbGUgdGhlIGV4Y2VwdGlvbiwgaWYgbm90IHRoZW4gc2luay0+d2luZG93IGlzCisJICBjaGFuZ2VkIGFuZCByZW5kZXJpbmcgZmFpbHMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ3NDgyCisKKzIwMTUtMDQtMDkgMTM6MTc6MDEgKzA5MDAgIEh5dW5pbCBQYXJrIDxoeXVuaWw0Ni5wYXJrQHNhbXN1bmcuY29tPgorCisJKiBleHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jOgorCSAgd2F5bGFuZHNpbms6IEFkZCBleGNlcHRpb24gY29kZSBmb3Igc2V0dGluZyB3bF9kaXNwbGF5CisJICBXYXlsYW5kc2luayBuZWVkcyBleGNlcHRpb24gY29kZSBpbiBnc3Rfd2F5bGFuZF9zaW5rX3NldF9jb250ZXh0KCkuIEFmdGVyCisJICBjYWxsaW5nIGdzdF93YXlsYW5kX3Npbmtfc2V0X2NvbnRleHQoKSwgYmVsb3cgY29kZSBpcyBzZXQuCisJICBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2V0X2NvbnRleHQgKGVsZW1lbnQsIGNvbnRleHQpOyBidXQsIElmCisJICB1c2VyIGNhbiBjYWxsIG9uZW1vcmUuIEl0IGlzIHVzZXIncyBmYXVsdC4gYnV0IHdheWxhbmRzaW5rIG5lZWQgdG8KKwkgIGV4Y2VwdGlvbi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDc0ODIKKworMjAxNS0xMS0wMiAyMDoxMDozNSAtMDUwMCAgT2xpdmllciBDcsOqdGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogSG9sZCBvYmplY3QgbG9jayB3aGlsZSBtYW5pcHVsYXRpbmcgdGhlIHNlZ21lbnQKKwkgIE1ha2Ugc3VyZSB0aGUgb2JqZWN0IGxvY2sgaXMgaGVsZCB3aGVuIGFnZ3JlZ2F0b3ItPnNlZ21lbnQgaXMKKwkgIG1vZGlmaWVkLgorCisyMDE1LTExLTAyIDE5OjQwOjI4IC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYzoKKwkgIGF1ZGlvYWdncmVnYXRvcjogSW1wcm92ZSBsb2cgbWVzc2FnZXMKKwkgIE1ha2UgdGhlIGxldmVsIG9mIGxvZyBtZXNzYWdlcyBzYW5lciBhbmQgaW1wcm92ZSBzb21lLgorCisyMDE1LTExLTAyIDE5OjA1OjAxIC0wNTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmM6CisJICBhZ2dyZWdhdG9yOiBSZW1vdmUgZGVhZCBjb2RlCisJICBUaGlzIGNvZGUgd2lsbCBuZXZlciBiZSBjYWxsZWQgYXMgbWF4Pj1taW4gaW4gYWxsIGNhc2VzLiBJZiB0aGUgdXBzdHJlYW0KKwkgIGxhdGVuY3kgcXVlcnkgcmV0dXJuZWQgbWluPm1heCwgdGhlIGZ1bmN0aW9uIGFscmVhZHkgcmV0dXJuZWQgYW5kIGFsbAorCSAgdmFsdWVzIHRoYXQgYXJlIGFkZGVkIHRvIHRob3NlIGhhdmUgbWF4Pj0gbWluLgorCisyMDE1LTExLTAyIDE3OjAyOjQ3ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBnc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jOgorCSAgbXBlZ3RzbXV4OiB1c2UgR1NUX1NUSU1FX0FSR1MgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gbWFudWFsbHkgaGFuZGxlIG5lZ2F0aXZlIHZhbHVlcyBvZiBiZXN0LT5kdHMgaW4KKwkgIEdTVF9ERUJVR19PQkpFQ1QuIFVzZSBHU1RfU1RJTUVfQVJHUyBmb3IgdGhpcy4KKworMjAxNS0xMS0wMiAxNjo1ODo1NyArMDAwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jOgorCSAgdmlkZW9hZ2dyZWdhdG9yOiB1c2UgR1NUX1NUSU1FX0FSR1MgZm9yIEdzdENsb2NrVGltZURpZmYKKwkgIE5vIG5lZWQgdG8gbWFudWFsbHkgaGFuZGxlIG5lZ2F0aXZlIHZhbHVlcyBvZiBkaWZmLCBHU1RfU1RJTUVfQVJHUyBkb2VzCisJICBleGFjdGx5IHRoaXMuCisKKzIwMTUtMTEtMDIgMTE6MTc6MjkgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogcmVtb3ZlIHVucmVhY2hhYmxlIGNvZGUKKwkgIFRoZSBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUgaXMgc2V0IHRvIHRoZSBsb3dlc3QgYXZhaWxhYmxlIHNlZ21lbnQKKwkgIHRlbXBsYXRlIChyZXByZXNlbnRhdGlvbiBvciBhZGFwdGF0aW9uIG9yIHBlcmlvZCwgaW4gdGhpcyBvcmRlcikuCisJICBCZWNhdXNlIHRoZSB0ZW1wbGF0ZSBlbGVtZW50cyBhcmUgaW5oZXJpdGVkLCB0aGUgbG93ZXN0IHRlbXBsYXRlIHdpbGwKKwkgIGhhdmUgYWxsIHRoZSBlbGVtZW50cyB0aGUgcGFyZW50cyBoYWQsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gY2hlY2sgdGhlCisJICBwYXJlbnQgZm9yIGFuIGVsZW1lbnQgdGhhdCBpcyBub3QgZm91bmQgaW4gdGhlIGNoaWxkIChlZyBpbml0aWFsaXNhdGlvbgorCSAgb3IgaW5kZXgpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjcxNAorCisyMDE1LTExLTAyIDEwOjQ4OjExICswMDAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIHRlc3RzOiBhZGQgYSB0ZXN0IGZvciBNUEQgZmlsZSBkdXJhdGlvbiBwYXJzaW5nCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyMzM2CisKKzIwMTUtMTEtMDIgMTA6MjU6MzggKzAwMDAgIFZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIG1wZHBhcnNlcjogYWRkIHNvbWUgY2hlY2tzIHRvIGR1cmF0aW9uIHBhcnNpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIzMzYKKworMjAxNS0wOS0yOSAwOTozMjowMiArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSAgZGFzaGRlbXV4OiBhZGRlZCBkdXJhdGlvbiBmb3JtYXQgdmFsaWRhdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjMzNgorCisyMDE1LTExLTAyIDExOjIxOjE0ICswMDAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogZml4IG1lbW9yeSBsZWFrCisJICBGcmVlIG5ld19tcGQsIGFsbG9jYXRlZCB3aXRoIGdfc2xpY2VfbmV3KCksIGJlZm9yZSBnb2luZyBvdXQgb2Ygc2NvcGUgaW4KKwkgIGdvdG8gZXJyb3IuCisJICBDSUQgMTMzODA1MAorCiAyMDE1LTExLTAyIDIwOjE0OjExICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KIAogCSogc3lzL2FwcGxlbWVkaWEvdnRlbmMuYzoKQEAgLTM0NiwxNTEgKzgxMzYsMzUwIEBACiAJICBHc3RWaWRlb0VuY29kZXIgYXNzdW1lcyB0aGF0IHRoZSBpbnB1dCBidWZmZXIgaXMgYXZhaWxhYmxlIHVudGlsIF9maW5pc2hfZnJhbWUuCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2OTUxCiAKKzIwMTUtMTEtMDEgMjM6MzQ6MzIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9vcHVzL2dzdG9wdXNkZWMuYzoKKwkgIG9wdXNkZWM6IEFzc3VtZSA0OGtIeiBpZiBubyBzYW1wbGUgcmF0ZSBpcyBnaXZlbiBpbiB0aGUgaGVhZGVyCisKIDIwMTUtMTAtMzAgMjA6NTk6NDEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKIAkqIGV4dC9vcHVzL2dzdG9wdXNlbmMuYzoKIAkgIG9wdXNlbmM6IFBsYWNlIDQ4a0h6IGZpcnN0IGluIHRoZSBjYXBzCiAJICBGb3IgYWxsIHRoZSBvdGhlciBzYW1wbGUgcmF0ZXMgdGhlIGVuY29kZXIgd2lsbCBoYXZlIHRvIHJlc2FtcGxlIGludGVybmFsbHkuCiAKLTIwMTUtMTEtMDEgMjM6MzQ6MzIgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisyMDE1LTExLTAyIDEyOjEwOjQ0ICsxMTAwICBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KIAotCSogZXh0L29wdXMvZ3N0b3B1c2RlYy5jOgotCSAgb3B1c2RlYzogQXNzdW1lIDQ4a0h6IGlmIG5vIHNhbXBsZSByYXRlIGlzIGdpdmVuIGluIHRoZSBoZWFkZXIKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJICBnc3RnbHV0aWxzOiBmaXggc2hhZGVyIGNvbXBpbGF0aW9uIG9uIE1vdW50YWluIExpb24KKwkgIE1ha2UgZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlci9fY29tcGlsZV9zaGFkZXIgYXNzdW1lIEdTVF9HTFNMX1BST0ZJTEVfRVMgfAorCSAgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZIGFzIHRoZSBwcm9maWxlLiBXaXRob3V0IHRoaXMsIHRoZSBzaGFkZXIgY29tcGlsZXIKKwkgIGRvZXNuJ3QgaW5qZWN0IHRoZSAjdmVyc2lvbiB0YWcgcmVzdWx0aW5nIGluIGEgY29tcGlsYXRpb24gZXJyb3Igb24gTW91bnRhaW4KKwkgIExpb24uCisJICBUaGlzIGlzIGEgd29ya2Fyb3VuZCBmb3Igb2xkIGNvZGUgdXNpbmcgZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlci4gTmV3IGNvZGUKKwkgIHNob3VsZCB1c2UgdGhlIGdzdF9nbHNsX3N0YWdlXyogQVBJIGRpcmVjdGx5IHdoaWNoIGFsbG93cyB0aGUgY2FsbGVyIHRvCisJICBleHBsaWNpdGx5IHNwZWNpZnkgdmVyc2lvbi9wcm9maWxlLgogCi09PT0gcmVsZWFzZSAxLjYuMSA9PT0KKzIwMTUtMTAtMzEgMTg6NDc6MzkgKzAxMDAgIFBoaWxpcHBlIFJlbm9uIDxwaGlsaXBwZV9yZW5vbkB5YWhvby5mcj4KIAotMjAxNS0xMC0zMCAxNjo0NDo0NSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKwkqIHN5cy93aW5rcy9nc3Rrc3ZpZGVvc3JjLmM6CisJICBrc3ZpZGVvc3JjOiBkb24ndCB0cnkgdG8gYWxpZ24gY3VycmVudCB0aW1lc3RhbXAgb24gcHJldmlvdXMgdGltZXN0YW1wCisJICB0aGlzIGNhdXNlcyBmcmFtZXMgdG8gYmUgZHJvcHBlZC4KKwkgIEJhc2VkIG9uIGEgcGF0Y2ggYnkgU2ViYXN0aWFuIERyw7ZnZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMzNwogCi0JKiBDaGFuZ2VMb2c6Ci0JKiBORVdTOgotCSogUkVMRUFTRToKLQkqIGNvbmZpZ3VyZS5hYzoKLQkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHk6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWNjdXJpcC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21kZWMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZW5jLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1haWZmLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc2ZtdXgueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzc3JlbmRlci54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9taXhlci54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW92aXN1YWxpemVycy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXV0b2NvbnZlcnQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJheWVyLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNhbWVyYWJpbi54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2hyb21hcHJpbnQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbG9yZWZmZWN0cy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY3VybC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGF0YXVyaXNyYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVidWd1dGlsc2JhZC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRzZGVjLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2YnN1Ym92ZXJsYXkueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2ZHNwdS54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhZC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmFnbWVudGVkLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdhdWRpZWZmZWN0cy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdtZWRlYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3NtLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlci54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXJsYWNlLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcGVnZm9ybWF0LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saXZlYWRkZXIueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tbXMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wbGV4LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5hbC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmN2LnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wY2FwcGFyc2UueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBubS54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmF3cGFyc2UueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlbW92ZXNpbGVuY2UueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlc2luZHZkLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZmJzcmMueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0bXAueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNjaHJvLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZHAueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNlZ21lbnRjbGlwLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zaG0ueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc291bmR0b3VjaC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BhbmRzcC54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BlZWQueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9wYXJzZXJzYmFkLnhtbDoKLQkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FhY2VuYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hbXJ3YmVuYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2F5bGFuZHNpbmsueG1sOgotCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXk0bWRlYy54bWw6Ci0JKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4temJhci54bWw6Ci0JKiBnc3QtcGx1Z2lucy1iYWQuZG9hcDoKLQkqIHdpbjMyL2NvbW1vbi9jb25maWcuaDoKLQkgIFJlbGVhc2UgMS42LjEKKzIwMTUtMTAtMzEgMjM6Mjg6MjAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KIAotMjAxNS0xMC0zMCAxNjoyOTo1NyArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuYzoKKwkgIGdsYnVmZmVycG9vbDogZXhwbGljaXRseSBpbml0aWFsaXplIGEgcG9zc2libHkgdW5pbml0aWFsaXplZCB2YXJpYWJsZQorCSAgVGhlIHJldCB2YXJpYWJsZSBtYXkgYmUgdW5pbml0aWFsaXplZCBhbmQgc28gaXRzIGNvbnRlbnRzIHdlcmUgdW5kZWZpbmVkIGFuZAorCSAgdGhlIHJlc3VsdHMgd2VyZSBlcnJhdGljIChmYWlsaW5nIHdpdGggZ2x2aWRlb21peGVyLCBzdWNjZWVkaW5nIGluIG90aGVyIGNhc2VzKQorCSAgUC5TLiBObyBpZGVhIHdoeSBnY2MvY2xhbmcgZXQgYWwgbmV2ZXIgcGlja2VkIHVwIG9uIHRoaXMgbGlrZSB0aGV5IG5vcm1hbGx5IGRvCisJICAocHJvYmFibHkgZHVlIHRvIHNvbWUgb3B0aW1pc2F0aW9uIHBhc3MgZmlndXJpbmcgb3V0IGl0J3Mgb25seSBzZXQgb25jZS4uLikKIAotCSogcG8vYWYucG86Ci0JKiBwby9hei5wbzoKLQkqIHBvL2JnLnBvOgotCSogcG8vY2EucG86Ci0JKiBwby9kYS5wbzoKLQkqIHBvL2VsLnBvOgotCSogcG8vZW5fR0IucG86Ci0JKiBwby9lby5wbzoKLQkqIHBvL2VzLnBvOgotCSogcG8vZXUucG86Ci0JKiBwby9maS5wbzoKLQkqIHBvL2ZyLnBvOgotCSogcG8vZ2wucG86Ci0JKiBwby9oci5wbzoKLQkqIHBvL2h1LnBvOgotCSogcG8vaWQucG86Ci0JKiBwby9pdC5wbzoKLQkqIHBvL2phLnBvOgotCSogcG8va3kucG86Ci0JKiBwby9sdC5wbzoKLQkqIHBvL2x2LnBvOgotCSogcG8vbXQucG86Ci0JKiBwby9uYi5wbzoKLQkqIHBvL29yLnBvOgotCSogcG8vcHRfQlIucG86Ci0JKiBwby9yby5wbzoKLQkqIHBvL3NrLnBvOgotCSogcG8vc2wucG86Ci0JKiBwby9zcS5wbzoKLQkqIHBvL3NyLnBvOgotCSogcG8vc3YucG86Ci0JKiBwby90ci5wbzoKLQkgIFVwZGF0ZSAucG8gZmlsZXMKKzIwMTUtMTAtMjkgMTE6Mzg6MzUgKzAwMDAgIFZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrPgogCi0yMDE1LTEwLTMwIDE0OjMwOjE3ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuaDoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBtcGRwYXJzZXI6IG1ha2UgZHVyYXRpb25zIHVuc2lnbmVkIHdoZXJlIGFwcHJvcHJpYXRlCisJICBUaGUgc3RhbmRhcmQgZG9lcyBub3Qgc2VlbSB0byBtYWtlIGFueSBwYXJ0aWN1bGFyIGV4cGxpY2l0IG5vdAorCSAgaW1wbGljaXQgcmVmZXJlbmNlIHRvIHRoZSBzaWduZWRuZXNzIG9mIGR1cmF0aW9ucywgYW5kIHRoZSBjb2RlCisJICBkb2VzIG5vdCByZWx5IG9uIHN1Y2gsIG5vciBvbiB0aGUgbmVnYXRpdml0eSBvZiB0aGUgLTEgdmFsdWUKKwkgIHRoYXQncyB1c2VkIGFzIGEgcGxhY2Vob2xkZXIgd2hlbiBhIGR1cmF0aW9uIHByb3BlcnR5IGlzIG5vdAorCSAgcHJlc2VudCBpbiB0aGUgWE1MLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDg0NwogCi0JKiBwby9jcy5wbzoKLQkqIHBvL2RlLnBvOgotCSogcG8vbmwucG86Ci0JKiBwby9wbC5wbzoKLQkqIHBvL3J1LnBvOgotCSogcG8vdWsucG86Ci0JKiBwby92aS5wbzoKLQkqIHBvL3poX0NOLnBvOgotCSAgcG86IFVwZGF0ZSB0cmFuc2xhdGlvbnMKKzIwMTUtMTAtMzAgMTU6NTU6MTkgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IGluaGVyaXQgYml0c3RyZWFtU3dpdGNoaW5nIGZyb20gUGVyaW9kIHRvIEFkYXB0YXRpb25TZXQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIzNDAKKworMjAxNS0wOC0yMCAxODoxNDozNiArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSAgZGFzaGRlbXV4OiBtYXJrZWQgUFJPUF9CQU5EV0lEVEhfVVNBR0UgcHJvcGVydHkgYXMgZGVwcmVjYXRlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Mzg5MAorCisyMDE1LTEwLTMwIDE1OjAyOjM1ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogdW5pdCB0ZXN0aW5nIHJlcHJvZHVjaW5nIGluaGVyaXRlZCBzZWdtZW50IGR1cmF0aW9uIG92ZXJmbG93CisJICB1bml0IHRlc3QgcmVwcm9kdWNpbmcgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTgzMgorCisyMDE1LTEwLTMwIDE0OjMxOjIxICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgZGFzaGRlbXV4OiBpbmhlcml0ZWQgc2VnbWVudCBVUkxzIGFyZSBpZ25vcmVkIGlmIHRoZXkgYXJlIGRlZmluZWQgYWdhaW4gaW4gYSBsb3dlciBTZWdtZW50TGlzdAorCSAgQWNjb3JkaW5nIHRvIHRoZSBzdGFuZGFyZDoKKwkgICJTZWdtZW50QmFzZSwgU2VnbWVudFRlbXBsYXRlIGFuZCBTZWdtZW50TGlzdCBzaGFsbCBpbmhlcml0CisJICBhdHRyaWJ1dGVzIGFuZCBlbGVtZW50cyBmcm9tIHRoZSBzYW1lIGVsZW1lbnQgb24gYSBoaWdoZXIgbGV2ZWwuCisJICBJZiB0aGUgc2FtZSBhdHRyaWJ1dGUgb3IgZWxlbWVudCBpcyBwcmVzZW50IG9uIGJvdGggbGV2ZWxzLAorCSAgdGhlIG9uZSBvbiB0aGUgbG93ZXIgbGV2ZWwgc2hhbGwgdGFrZSBwcmVjZWRlbmNlIG92ZXIgdGhlIG9uZQorCSAgb24gdGhlIGhpZ2hlciBsZXZlbC4iCisJICBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlIHdpbGwgbm93IGRpc2NhcmQgYW55IGluaGVyaXRlZAorCSAgc2VnbWVudCBVUkxzIGlmIHRoZSBwYXJzZWQgZWxlbWVudCBkZWZpbmVzIHNvbWUgdG9vLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MTgzMgorCisyMDE1LTEwLTIwIDE3OjIxOjAwICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZmFrZV9odHRwX3NyYy5oOgorCSAgYWRhcHRpdmVkZW11eDogdGVzdHM6IGFkZGVkIHRlc3QgZm9yIGZyYWdtZW50IGRvd25sb2FkIGVycm9yCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MzYxCisKKzIwMTUtMTAtMjAgMTU6NDY6MzYgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogbWFkZSBhZGFwdGl2ZSBkZW11eCB0ZXN0IHRocmVhZCBzYWZlCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU3MzYxCisKKzIwMTUtMTAtMTYgMTY6MjA6MzQgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogYWRkZWQgcXVlcnkgdGVzdAorCSAgVGVzdGluZyBpZiBhZGFwdGl2ZSBkZW11eCByZXNwb25kcyB0byBxdWVyaWVzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzM2MQorCisyMDE1LTEwLTI4IDExOjIxOjE0ICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogdGVzdHM6IGFkZGVkIHRlc3QgZm9yIG11bHRpcGxlIEJhc2VVUkwgZW50cmllcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzI0NQorCisyMDE1LTA5LTE2IDEwOjQwOjMzICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogdGVzdHM6IGFkZGVkIHVuaXQgdGVzdCBmb3IgNmQxZWRhOTM5MWQzMTQzYjVmYzYzM2VkZmQ5NGI4OWRiYmEyMDlhYgorCSAgQ29tbWl0IDZkMWVkYTkzOTFkMzE0M2I1ZmM2MzNlZGZkOTRiODlkYmJhMjA5YWIgZml4ZWQgdGhlIHBlcmlvZCBzdGFydAorCSAgdGltZSBzY2FsaW5nLiBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIHVuaXQgdGVzdHMgdG8gY292ZXIgdGhhdCBzY2VuYXJpby4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUxMDUKKworMjAxNS0xMC0xNiAxNzoxMDoxMSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHRlc3RzOiBhZGRlZCBkb3dubG9hZCBlcnJvciB0ZXN0CisJICBUZXN0cyBhZGFwdGl2ZSBkZW11eCBiZWhhdmlvdXIgd2hlbiB0aGUgdXJpIGlzIHdyb25nIGFuZCBkb3dubG9hZCBkb2VzCisJICBub3QgaGFwcGVuLgorCisyMDE1LTEwLTMwIDEyOjQ5OjIwICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogc3RvcCB0YXNrIG9uIG11bHRpcGxlIGRvd25sb2FkIGVycm9ycworCSAgT24gbXVsdGlwbGUgZG93bmxvYWQgZXJyb3JzLCB3ZSBzdG9wIHRoZSBkb3dubG9hZCB0YXNrIGFuZCBjaGFuZ2UgdGhlIHNyYworCSAgZWxlbWVudCBzdGF0ZSB0byBOVUxMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjI0MAorCisyMDE1LTEwLTMwIDEyOjI0OjIyICswMDAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogZml4IGEgbWlzc2luZyBsb2NrIGluIHdyaXRlIHRvIHN0cmVhbS0+bGFzdF9yZXQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTczNTkKKworMjAxNS0xMC0wNyAyMzoyMDo1MSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJldHVybiBlcnJvciBpZiBzcmMgZWxlbWVudCBjYW5ub3Qgc3RhcnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyMDkKKworMjAxNS0xMC0wOCAxMTo0NToyNSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeGVkIHdhaXRpbmcgZm9yIGZyYWdtZW50IHVwZGF0ZXMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYyMzcKKworMjAxNS0xMC0wOCAxMjozNTo0NCArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeCBoZWFkZXIgcmVkb3dubG9hZCBpbiBjYXNlIG9mIGVycm9ycworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjIzOQorCisyMDE1LTEwLTMwIDAwOjA0OjEyICswMDAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOgorCSAgYWRhcHRpdmVkZW11eDogcmVsZWFzZSBtYW5pZmVzdCBsb2NrIGJlZm9yZSBzZW5kaW5nIGZsdXNoIHN0b3AgZXZlbnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTczMzcKKworMjAxNS0xMC0yOSAyMzo0MTo0NiArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJlc2V0IGRvd25sb2FkX2ZpbmlzaGVkIGJlZm9yZSBzdGFydGluZyB0aGUgc3JjIGVsZW1lbnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTczMzYKKworMjAxNS0xMC0yOSAyMzoyMzowNSArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJlbGVhc2UgbWFuaWZlc3QgbG9jayBiZWZvcmUgY2hhbmdpbmcgZWxlbWVudCBzdGF0ZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzMzNQorCisyMDE1LTEwLTMwIDE2OjM4OjE3ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tOgorCSAgdnRkZWM6IGZpeCBjb21waWxhdGlvbiBlcnJvcgorCSAgVW5kZWZpbmVkIHN5bWJvbHMgZm9yIGFyY2hpdGVjdHVyZSB4ODZfNjQ6CisJICAiX19nbF90YXJnZXRfdG9fZ3N0IiwgcmVmZXJlbmNlZCBmcm9tOgorCSAgX19kb19nZXRfZ2xfYnVmZmVyIGluIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLm8KKworMjAxNS0xMC0zMCAxNTowMDoyMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmM6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmM6CisJICBnbC90ZXN0czogdXBkYXRlIGZvciBnbG1lbW9yeSBhcGkgY2hhbmdlcworCisyMDE1LTEwLTMwIDE0OjQzOjIzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYzoKKwkgIGdsY29sb3Jjb252ZXJ0OiByZW1vdmUgdW51c2VkIHJldCB2YXJpYWJsZQorCisyMDE1LTEwLTMwIDE0OjQwOjM1ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuaDoKKwkgIGdsc2xzdGFnZTogcmVtb3ZlIHR5cGVkZWZzIGZyb20gdGhlIGhlYWRlcgorCSAgVGhleSBhcmUgYWxyZWFkeSBkZWZpbmVkIGluIHRoZSBmb3J3YXJkIGRlY2xlcmF0aW9uIGhlYWRlciBhbmQgZGVmaW5pbmcgdGhlbQorCSAgbW9yZSB0aGFuIG9uY2Ugd2lsbCBnaXZlIGFuIGVycm9yIHdpdGggT1NYJ3MgY2xhbmcgYWJvdXQgdHlwZWRlZiByZWRlZmluaXRpb24KKwkgIGJlaW5nIGEgQzExIGZlYXR1cmUuCisKKzIwMTUtMTAtMzAgMTQ6Mzg6MDUgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJICBnbGNvbG9yY29udmVydDogZm9sbG93IHRoZSBjb3JyZWN0IHRleHR1cmUgdGFyZ2V0IG5hbWVzCisKKzIwMTUtMTAtMzAgMDE6NDI6NDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmM6CisJICBnbHVwbG9hZDogZXhwbGljaXRseSBjb25maWd1cmUgdGhlIHRleHR1cmUgdGFyZ2V0IG9uIHRoZSBnbCBidWZmZXIgcG9vbAorCSAgSWYgd2UgZG9uJ3QsIHRoZW4gdGhlIHBvb2wgY291bGQgZW5kIHVwIGFsbG9jYXRpbmcgMkQgdGV4dHVyZXMgd2hlbiB0aGUKKwkgIGNhcHMgZXhwbGljdGx5IHN0YXRlIHRoZXkgc2hvdWxkIGJlIHJlY3RhbmdsZSB0ZXh0dXJlcy4KKworMjAxNS0xMC0zMCAwMToyNzozNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSAgZ2xidWZmZXJwb29sOiBhZGQgYnVmZmVycG9vbCBvcHRpb25zIGZvciB0aGUgdmFyaW91cyB0ZXh0dXJlIHRhcmdldHMKKwkgIFRoaXMgd2FzIGNob3NlbiBvdmVyIHJlbHlpbmcgc29sZWx5IG9uIHRoZSBjYXBzIGFzIGdsdXBsb2FkIG5lZWRzIHRvIHByb3Bvc2UgYW4KKwkgIGFsbG9jYXRpb24gYW5kIHNldCB0aGUgdGV4dHVyZSB0YXJnZXQgYmFzZWQgb24gdGhlIG91dHB1dCBjYXBzLiAgU2V0dGluZyB0aGUKKwkgIGNhcHMgaW4gdGhlIGNvbmZpZyBpcyBjdXJyZW50bHkgcG9pbnRsZXNzIGFzIHRoZXkgYXJlIG92ZXJ3cml0dGVuIGluIGEgbG90IG9mCisJICBlbGVtZW50J3MgZGVjaWRlX2FsbG9jYXRpb24gZnVuY3Rpb25zLgorCSAgVGhpcyBwcm92aWRlcyBhIG1lY2hhbmlzbSBmb3IgdGhlIGJ1ZmZlciBwb29sIHRvIGJlIGNvbmZpZ3VyZWQgZm9yIGEgY2VydGFpbgorCSAgdGV4dHVyZSB0YXJnZXQgd2hlbiBub25lIGhhcyBiZWVuIGNvbmZpZ3VyZWQuCisKKzIwMTUtMTAtMjkgMTM6MDQ6MzEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuaDoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5oOgorCSogc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm06CisJKiBzeXMvYXBwbGVtZWRpYS92dGRlYy5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGFkZCBzdXBwb3J0IGZvciBjb252ZXJ0aW5nIHRleHR1cmUgdGFyZ2V0cworCSAgU29sdmVkIHdpdGggYSBzaW1wbGUgc2hhZGVyIHRlbXBsYXRpbmcgbWVjaGFuaXNtIGFuZCBzdHJpbmcgcmVwbGFjZW1lbnRzCisJICBvZiB0aGUgbmVjZXNzYXJ5IHNhbXBsZXIgdHlwZXMvdGV4dHVyZSBhY2Nlc3NlcyBhbmQgdGV4dHVyZSBjb29yZGluYXRlCisJICBtYW5nbGluZyBmb3IgcmVjdGFuZ3VsYXIgYW5kIGV4dGVybmFsLW9lcyB0ZXh0dXJlcy4KKworMjAxNS0xMC0yOSAwMDo0NDoyNiArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvY2FvcGVuZ2xsYXllcnNpbmsubToKKwkqIGV4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYzoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2dsL2dzdGdsb3ZlcmxheS5jOgorCSogZXh0L2dsL2dzdGdsc3RlcmVvbWl4LmM6CisJKiBleHQvZ2wvZ3N0Z2x0ZXN0c3JjLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIHN5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tOgorCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbG1lbW9yeS5jOgorCSAgZ2xtZW1vcnk6IGFkZCBzdXBwb3J0IGZvciByZWN0YW5nbGUgdGV4dHVyZXMKKwkgIEFkZCB0aGUgdmFyaW91cyB0b2tlbnMvc3RyaW5ncyBmb3IgdGhlIGRpZmZlcm5ldCB0ZXh0dXJlIHR5cGVzICgyRCwgcmVjdCwgb2VzKQorCSAgQ2hhbmdlcyB0aGUgR0xtZW1vcnkgYXBpIHRvIGluY2x1ZGUgdGhlIEdzdEdMVGV4dHVyZVRhcmdldCBpbiBhbGwgcmVsZXZhbnQKKwkgIGZ1bmN0aW9ucy4KKwkgIFVwZGF0ZSB0aGUgcmVsZXZhbnQgY2Fwcy90ZW1wbGF0ZXMgZm9yIDJEIG9ubHkgdGV4dHVyZXMuCisKKzIwMTUtMTAtMzAgMDE6NDU6MTMgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0Lmg6CisJICBnbGNvbG9yY29udmVydDogb3JkZXIgdGhlIGNhcHMgdGVtcGxhdGUgc28gdGhhdCBSR0JBIGlzIGZpcnN0CisJICBnbGNvbG9yY29udmVydCAhIGdsY29sb3Jjb252ZXJ0IHdvdWxkIHNvbWV0aW1lcyBuZWdvdGlhdGVkIFJHQgorCSAgKHRoZSBmaXJzdCBsaXN0IGVudHJ5KSBvdGhlcndpc2UuCisKKzIwMTUtMTAtMzAgMDE6MTY6MDIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oOgorCSAgZ2xidWZmZXJwb29sOiBtb3ZlIHR5cGVkZWYncyBpbnRvIHRoZSBmb3J3YXJkIGRlY2xlcmF0aW9uIGZpbGUKKwkgIE90aGVyd2lzZSwgZm9yIGV4YW1wbGUsIGNsYW5nIHdpbGwgd2FybiBhYm91dCB0eXBlZGVmIHJlZGVmaW5pdGlvbnMKKwkgIGJlaW5nIGEgQzExIGZlYXR1cmUuCisKKzIwMTUtMTAtMTYgMTg6MzY6MjAgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlX2h0dHBfc3JjLmM6CisJICB0ZXN0czogZml4ZWQgZmFrZSBzb3VwIGh0dHAgc3JjIHBsdWdpbgorCSAgVGhlIHNvdXAgaHR0cCBzcmMgY2hhbmdlZCB0aGUgd2F5IGl0IGludGVycHJldHMgdGhlIHNlZWsgc2VnbWVudCBzdG9wIHZhbHVlLgorCSAgUHJldmlvdXNseSBpdCB3YXMgaW5jbHVzaXZlLCBub3cgaXQgaXMgbm90IChzZWUgY29tbWl0CisJICAyMWM2ZGE2NzY0YzBjZDAxNWU5ZjNjNWVlY2JhMzZlMjk3MTg3ZGViLAorCSAgYnVnIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMTYpCisJICBVcGRhdGVkIGZha2Ugc291cCBodHRwIHNyYyB0byBhbHNvIGNvbnNpZGVyIHNlZ21lbnQgc3RvcCBub3QgaW5jbHVzaXZlLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjMyMgorCisyMDE1LTEwLTA5IDE0OjEwOjUyICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiB0ZXN0czogYWRkZWQgdW5pdCB0ZXN0IGZvciBhZGFwdGl2ZWRlbXV4CisJICBDcmVhdGVkIGEgdW5pdCB0ZXN0IGZvciBkYXNoZGVtdXguIEl0IHJlbGllcyBvbiBhIGZha2UgU09VUCBIVFRQIHNyYyBwbHVnaW4KKwkgIHRoYXQgd2lsbCBmZWVkIGRhdGEgdG8gZGFzaGRlbXV4LiBUaGUgdGVzdCBjb250cm9scyB0aGUgZGF0YSB0byBiZQorCSAgZ2VuZXJhdGVkIGFuZCBjaGVja3MgdGhlIGNvcnJlY3QgZGF0YSB3YXMgcmVjZWl2ZWQgZm9yIGVhY2ggZXhwZWN0ZWQKKwkgIHN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYzMjIKKworMjAxNS0xMC0wOSAyMToyMzoyMCArMDEwMCAgQWxleCBBc2hsZXkgPGJ1Z3ppbGxhQGFzaGxleS1mYW1pbHkubmV0PgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlX2h0dHBfc3JjLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9mYWtlX2h0dHBfc3JjLmg6CisJICB0ZXN0czogYWRkZWQgZmFrZSBodHRwIHNyYyBwbHVnaW4KKwkgIEFkZGVkIGEgZmFrZSBodHRwIHNyYyBwbHVnaW4gY2FwYWJsZSBvZiBnZW5lcmF0aW5nIGRhdGEgYnVmZmVycyBmb3IgYQorCSAgcmVxdWVzdCBvZiBhIGh0dHAgdXJsLiBDYW4gYmUgdXNlZCBpbiB0ZXN0cyB0byBzaW11bGF0ZSBodHRwIGFjY2Vzc2VzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjMyMgorCisyMDE1LTA3LTA3IDE1OjM4OjA4ICswMTAwICBBbGV4IEFzaGxleSA8YnVnemlsbGFAYXNobGV5LWZhbWlseS5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdGRhc2hkZW11eC5jOgorCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4Lmg6CisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5oOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogcHJvdmlkZSBhIGRlZmF1bHQgc3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkKKwkgIElmIE1QREBzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSBpcyBub3QgcHJlc2VudCBpbiB0aGUgbWFuaWZlc3QsCisJICBkYXNoZGVtdXggc2VsZWN0cyB0aGUgZnJhZ21lbnQgY2xvc2VzdCB0byB0aGUgbW9zdCByZWNlbnRseSBnZW5lcmF0ZWQKKwkgIGZyYWdtZW50LiBUaGlzIGNhdXNlcyBhIHBsYXliYWNrIGlzc3VlIGJlY2F1c2UgdGhpcyBjaG9pY2UgZG9lcyBub3QgYWxsb3cKKwkgIHRoZSBEQVNIIGNsaWVudCB0byBidWlsZCB1cCBhbnkgYnVmZmVyIG9mIGRvd25sb2FkZWQgZnJhZ21lbnRzIHdpdGhvdXQKKwkgIHBhdXNpbmcgcGxheWJhY2suIFRoaXMgaXMgYmVjYXVzZSBieSBkZWZpbml0aW9uIG5ldyBmcmFnbWVudHMgYXBwZWFyIG9uCisJICB0aGUgc2VydmVyIGluIHJlYWwtdGltZSAoZS5nLiBpZiBzZWdtZW50IGR1cmF0aW9uIGlzIDQgc2Vjb25kcywgYSBuZXcKKwkgIGZyYWdtZW50IHdpbGwgYXBwZWFyIG9uIHRoZSBzZXJ2ZXIgZXZlcnkgNCBzZWNvbmRzKS4gSWYgdGhlIHN0YXJ0aW5nCisJICBwbGF5YmFjayBwb3NpdGlvbiB3YXMgbipzZWdtZW50RHVyYXRpb24gc2Vjb25kcyBiZWhpbmQgIm5vdyIsIHRoZSBEQVNICisJICBjbGllbnQgY291bGQgZG93bmxvYWQgdXAgdG8gJ24nIGZyYWdtZW50cyBmYXN0ZXIgdGhhbiByZWFsdGltZSBiZWZvcmUgaXQKKwkgIHJlYWNoZWQgdGhlIHBvaW50IHdoZXJlIGl0IG5lZWRlZCB0byB3YWl0IGZvciBmcmFnbWVudHMgdG8gYXBwZWFyIG9uIHRoZQorCSAgc2VydmVyLgorCSAgVGhlIE1QREBzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSBhdHRyaWJ1dGUgYWxsb3dzIGEgY29udGVudCBwdWJsaXNoZXIKKwkgIHRvIHByb3ZpZGUgYSBzdWdnZXN0ZWQgc3RhcnRpbmcgcG9zaXRpb24gdGhhdCBpcyBiZWhpbmQgdGhlIGN1cnJlbnQKKwkgICJsaXZlIiBwb3NpdGlvbi4KKwkgIElmIHRoZSBNUERAc3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkgYXR0cmlidXRlIGlzIG5vdCBwcmVzZW50LCBwcm92aWRlCisJICBhIHN1aXRhYmxlIGRlZmF1bHQgdmFsdWUgYXMgYSBwcm9wZXJ0eSBvZiB0aGUgZGFzaGRlbXV4IGVsZW1lbnQuIFRvCisJICBhbGxvdyB0aGUgZGVmYXVsdCBwcmVzZW50YXRpb24gZGVsYXkgdG8gYmUgc3BlY2lmaWVkIGVpdGhlciB1c2luZworCSAgZnJhZ21lbnRzIG9yIHNlY29uZHMsIHRoZSBwcm9wZXJ0eSBpcyBhIHN0cmluZyB0aGF0IGNvbnRhaW5zIGEgbnVtYmVyCisJICBhbmQgYSB1bml0IChlLmcuICIxMCBzZWNvbmRzIiwgIjQgZnJhZ21lbnRzIiwgIjI1MDBtcyIpLgogCiAyMDE1LTEwLTI5IDE1OjAyOjM4ICswMjAwICBTcmVlcmVuaiBCYWxhY2hhbmRyYW4gPHNyZWVyZW5qLmJhbGFjaGFuZHJhbkBpbnRlbC5jb20+CiAKQEAgLTUwMCw2ICs4NDg5LDE5NiBAQAogCSAgRGlmZmVyZW50aWF0ZSB0aGUgdnA4L3ZwOSBiaXRzdHJlYW0gYmFzZWQgb24gZm91cmNjLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzI1MQogCisyMDE1LTA5LTA5IDE0OjA5OjQzICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJICBkYXNoZGVtdXg6IGltcHJvdmUgZGV0ZWN0aW9uIG9mIHN0cmVhbSBsYW5ndWFnZQorCSAgSW1wcm92ZWQgdGhlIGRldGVjdGlvbiBvZiBzdHJlYW0ncyBsYW5ndWFnZSBpZiB0aGUgQWRhcHRhdGlvblNldAorCSAgY29udGFpbnMgbW9yZSB0aGFuIDEgQ29udGVudENvbXBvbmVudAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjM2NworCisyMDE1LTEwLTI5IDEyOjA0OjMxICswMDAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jOgorCSAgZGFzaF9tcGQ6IHJlc3RyaWN0IHNlZ21lbnQgdGVtcGxhdGUgZm9ybWF0IHN0cmluZ3MgdG8gJTBbMC05XSpkIGFzIHBlciBzcGVjCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUxNzM1CisKKzIwMTUtMDktMDkgMTI6MzY6MTAgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHNlZ21lbnQgdGVtcGxhdGUgcGFyc2luZzogYWRkZWQgc3VwcG9ydCBmb3IgJWQKKwkgIEFkZGVkIHN1cHBvcnQgZm9yICVkIGluIHRlbXBsYXRlIGlkZW50aWZpZXIuCisJICBBZGRlZCB0ZXN0Y2FzZXMgZm9yICVkLCAlM2QsICUwLTRkIGlkZW50aWZpZXIgZm9ybWF0cy4KKworMjAxNS0xMC0yOSAxMTo1NDozNCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogY29ycmVjdGVkIHBhcnNpbmcgb2Ygc2VnbWVudCB0ZW1wbGF0ZXMKKwkgIENvcnJlY3RlZCB0aGUgcGFyc2luZyBvZiBhIHNlZ21lbnQgdGVtcGxhdGUgc3RyaW5nLgorCSAgQWRkZWQgdW5pdCB0ZXN0cyB0byB0ZXN0IHRoZSBzZWdtZW50IHRlbXBsYXRlIHBhcnNpbmcuCisJICBBbGwgcmVwb3J0ZWQgcHJvYmxlbXMgYXJlIG5vdyBjb3JyZWN0bHkgaGFuZGxlZC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE3MzUKKworMjAxNS0xMC0yOSAxMToxNzo0OCArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGRhaHNkZW11eDogdGFzayBpcyBzaWduYWxlZCB0byBzdG9wIHdpdGhvdXQgc3RvcCBjb25kaXRpb24gYmVpbmcgc2V0CisJICBUaGUgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlIGZ1bmN0aW9uIGlzIHRyeWluZyB0byBzdG9wIHRoZSBzdHJlYW0ncworCSAgZG93bmxvYWQgdGFzay4gRm9yIHRoaXMsIGl0IHNpZ25hbHMgdGhlIHRhc2suIEJ1dCBpdCBmYWlscyB0byBhbHNvIHNldCB0aGUKKwkgIHN0cmVhbS0+ZG93bmxvYWRfZmluaXNoZWQgPSBUUlVFLCBzbyB0aGUgdGFzayB3aWxsIGdvIGJhY2sgdG8gc2xlZXAgYW5kCisJICBvbmx5IGV4aXQgd2hlbiB0aGUgZG93bmxvYWQgaXMgZmluaXNoZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MTIxCisKKzIwMTUtMTAtMjggMTc6MDI6NTEgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IGZpeGVkIGNyYXNoIHdoZW4gc2VnbWVudCB0aW1lbGluZSBsaXN0IGlzIGdyZWF0ZXIgdGhhbiBzZWdtZW50IHVybCBsaXN0CisJICBXaGVuIGJ1aWxkaW5nIHRoZSBtZWRpYSBzZWdtZW50IGxpc3QgdXNpbmcgYSBTZWdtZW50TGlzdCBub2RlLCB0aGUKKwkgIGdzdF9tcGRfY2xpZW50X3NldHVwX3JlcHJlc2VudGF0aW9uIGZ1bmN0aW9uIHdpbGwgaXRlcmF0ZSB0aHJvdWdoIHRoZQorCSAgbGlzdCBvZiBTIG5vZGVzIGFuZCB3aWxsIGV4cGVjdCB0byBmaW5kIGEgbWF0Y2hpbmcgU2VnbWVudFVybCBub2RlLiBJZgorCSAgb25lIGRvZXMgbm90IGV4aXN0LCB0aGUgY29kZSBtYWRlIGFuIGlsbGVnYWwgbWVtb3J5IGFjY2Vzcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI0OTYKKworMjAxNS0wOS0xMSAxMDo1OToxNSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHVuaXQgdGVzdCBmb3IgbWlzc2luZyBwcm9maWxlcworCisyMDE1LTA5LTExIDEwOjU3OjI2ICswMTAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGRvIG5vdCBkZXJlZmVyZW5jZSBwcm9maWxlcyBpcyBhYnNlbnQKKwkgIFRoZXNlIGFyZSB1c2VkIHRvIGFwcGx5IHJlc3RyaWN0aW9ucyBvbiB3aGF0IHRoZSBNUEQgZmlsZSBtYXkKKwkgIHVzZSwgc28gbm8gcHJvZmlsZSBtZWFucyBubyByZXN0cmljdGlvbnMuCisJICBCZXNpZGVzLCBub3RoaW5nIGFjdHVhbGx5IHVzZXMgdGhlIHByb2ZpbGVzICh5ZXQpIGFueXdheS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTA4NjkKKworMjAxNS0wOS0xNiAxNjo0NjoyOSArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaDoKKwkgIGFkYXB0aXZlZGVtdXg6IGZpeGVkIG11bHRpdGhyZWFkIHN1cHBvcnQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUxNjkKKworMjAxNS0xMC0yOCAxNjozMTozOSArMDAwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2hkZW11eDogcGFyc2VyIHJlamVjdHMgbmVnYXRpdmUgdmFsdWVzIGZvciBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyMzI2CisKKzIwMTUtMTAtMjggMTY6MjQ6MDEgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IGNvcnJlY3RlZCBwYXJzaW5nIG9mIG5lZ2F0aXZlIHZhbHVlcyBpbnRvIHVuc2lnbmVkIGRhdGEKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI0MjkKKworMjAxNS0wOS0xNyAyMDoxODo1MiArMDIwMCAgVsOtY3RvciBNYW51ZWwgSsOhcXVleiBMZWFsIDx2amFxdWV6QGlnYWxpYS5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NHBhcnNlci5jOgorCSAgY29kZWNwYXJzZXI6IGgyNjQ6IGluaXRpYWxpemUgcGFyc2luZyBzdHJ1Y3R1cmVzCisJICBJbml0aWFsaXplIHRvIDAgdGhlc2UgcGFyc2Ugc3RydWN0dXJlcyBiZWZvcmUgZmlsbGluZyB0aGVtOiBHc3RIMjY0U0VJTWVzc2FnZSwKKwkgIEdzdEgyNjROYWxVbml0LCBHc3RIMjY0UFBTLCBHc3RIMjY0U1BTIGFuZCBHc3RIMjY0U2xpY2VIZHIuCisJICBXaGVuIGNhbGxpbmcgdGhlIGZ1bmN0aW9ucyB3aGljaCBmaWxsIHRob3NlIHN0cnVjdHVyZXMsIHRoZXkgbWF5IGZhaWwsIGxlYXZpbmcKKwkgIHVuaXRpYWxpemVkIHRob3NlIHN0cnVjdHVyZXMuIFRoaXMgc2l0dWF0aW9uIG1heSBsZWFkIHRvIGZ1dHVyZSBwcm9ibGVtcywgc3VjaAorCSAgYXMgYSBzZWdtZW50YXRpb24gZmF1bHQgd2hlbiBmcmVlaW5nLCBmb3IgZXhhbXBsZS4KKwkgIFRoaXMgcGF0Y2ggaW5pdGlhbGl6ZXMgdG8gemVybyB0aGVzZSBzdHJ1Y3R1cmVzLCBiZWZvcmUgZmlsbGluZyB0aGVtLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTE2MQorCisyMDE1LTA5LTE4IDEwOjA5OjI2ICswMjAwICBWw61jdG9yIE1hbnVlbCBKw6FxdWV6IExlYWwgPHZqYXF1ZXpAaWdhbGlhLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmM6CisJICBjb2RlY3BhcnNlcjogaDI2NTogaW5pdGlhbGl6ZSBwYXJzaW5nIHN0cnVjdHVyZXMKKwkgIEluaXRpYWxpemUgdG8gMCB0aGVzZSBwYXJzZSBzdHJ1Y3R1cmVzIGJlZm9yZSBmaWxsaW5nIHRoZW06IEdzdEgyNjVTRUlNZXNzYWdlLAorCSAgR3N0SDI2NU5hbFVuaXQsIEdzdEgyNjVWUFMsIEdzdEgyNjVQUFMsIEdzdEgyNjVTUFMgYW5kIEdzdEgyNjVTbGljZUhkci4KKwkgIFdoZW4gY2FsbGluZyB0aGUgZnVuY3Rpb25zIHdoaWNoIGZpbGwgdGhvc2Ugc3RydWN0dXJlcywgdGhleSBtYXkgZmFpbCwgbGVhdmluZworCSAgdW5pdGlhbGl6ZWQgdGhvc2Ugc3RydWN0dXJlcy4gVGhpcyBzaXR1YXRpb24gbWF5IGxlYWQgdG8gZnV0dXJlIHByb2JsZW1zLCBzdWNoCisJICBhcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGVuIGZyZWVpbmcsIGZvciBleGFtcGxlLgorCSAgVGhpcyBwYXRjaCBpbml0aWFsaXplcyB0byB6ZXJvIHRoZXNlIHN0cnVjdHVyZXMsIGJlZm9yZSBmaWxsaW5nIHRoZW0uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MTYxCisKKzIwMTUtMTAtMjYgMTk6NTg6MDQgLTA0MDAgIE9saXZpZXIgQ3LDqnRlIDxvbGl2aWVyLmNyZXRlQGNvbGxhYm9yYS5jb20+CisKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuYzoKKwkgIGxpdmVhZGRlcjogTWFrZSBsYXRlbmN5IHByb3BlcnR5IGJlIGEgdWludCBpbiBtaWxsaXNlY3MKKwkgIFRoaXMgcmVzdG9yZXMgcm91Z2hseSB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgdGhlIG9sZCBsaXZlYWRkZXIgZWxlbWVudC4KKwkgIEV4Y2VwdCB0aGF0IHRoZSBsYXRlbmN5IG5vdyBhbHNvIGluY2x1ZGVzIHRoZSBvdXRwdXQtYnVmZmVyLWR1cmF0aW9uLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzA1MAorCisyMDE1LTA5LTA4IDE0OjAwOjU0ICswMTAwICBWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4KKworCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6CisJICBtcGRwYXJzZXI6IGZvcmJpZCBuZWdhdGl2ZSB2YWx1ZXMgZm9yIGR1cmF0aW9uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNDkyCisKKzIwMTUtMTAtMjggMTU6Mzk6MDcgKzAwMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHBhcnNlciByZWplY3RzIFhNTHMgd2l0aCBuZWdhdGl2ZSBwZXJpb2QgZHVyYXRpb24KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIzMjkKKworMjAxNS0xMC0yOCAxNTozNDoyOSArMDAwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogY2hlY2sgc2VnbWVudCBsaXN0cyBoYXZlIGVpdGhlciBkdXJhdGlvbiBvciB0aW1lbGluZQorCSAgQW5kIGFkZCBlcnJvciBjaGVja2luZyBhbG9uZyB0aGUgd2F5LgorCSAgQWRkIGR1cmF0aW9uIHdoZXJlIGFwcHJvcHJpYXRlIHNvIHVuaXQgdGVzdHMgc3RpbGwgcGFzcy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE2NTAKKworMjAxNS0wOS0yOSAxNjoxNzowMyArMDEwMCAgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIG1wZHBhcnNlcjogdmFsaWRhdGUgcmVwcmVzZW50YXRpb24gc2V0IGlkZW50aWZpZXIKKwkgIEl0IG11c3QgaGF2ZSBubyB3aGl0ZXNwYWNlLCBhbmQgbXVzdCBjb21wbHkgd2l0aCBSRkMgMTczOCB3aGVuCisJICB1c2VkIHRvIGJ1aWxkIGEgVVJMLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MDg1MgorCisyMDE1LTEwLTI4IDE0OjQxOjU0ICswMDAwICBKdWxpZW4gSXNvcmNlIDxqLmlzb3JjZUBzYW1zdW5nLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jOgorCSAgZ2xzbHN0YWdlOiBpbml0aWFsaXplIG91dHB1dCBwYXJhbXMgdG8gMCBiZWZvcmUgY2FsbGluZyBnbCBmdW5jdGlvbnMKKwkgIFRoZSBjbGllbnQgc2lkZSBBUEkgb2YgdGhlIENocm9taXVtJ3MgR1BVIFByb2Nlc3MgaGFzIGFzc2VydHMKKwkgIGluIGRlYnVnIG1vZGUgdGhhdCBjaGVjayB0aGF0IG91dHB1dCBwYXJhbXMgYXJlIGluaXRpYWxpemVkIHRvIDAuCisKKzIwMTUtMTAtMjcgMTY6MzI6NDggKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IFJlbW92ZSBzb21lIGRlYWQgY29kZSB0aGF0IGNvdWxkIG5ldmVyIGJlIGNhbGxlZAorCSAgQ292ZXJpdHkgQ0lEcyAjMTMyODgxOCwgIzEzMjg4MTksICMxMzI4ODIwLgorCisyMDE1LTEwLTI3IDAwOjM2OjQxICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9NYWtlZmlsZS5hbToKKwkqIGV4dC9nbC9nc3RvcGVuZ2wuYzoKKwkgIG9wZW5nbDogYnVpbGQvcHJvdmlkZSBnbHN0ZXJlb21peC9zcGxpdCBvbiBnbGVzIG9ubHkgc3lzdGVtcworCisyMDE1LTEwLTI2IDE2OjUxOjA2ICswMTAwICBHZW9yZ2UgS2lhZ2lhZGFraXMgPGdlb3JnZS5raWFnaWFkYWtpc0Bjb2xsYWJvcmEuY29tPgorCisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dlb21ldHJpY21hdGguYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ2VvbWV0cmljbWF0aC5oOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RidWxnZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RjaXJjbGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0Z2VvbWV0cmljdHJhbnNmb3JtLmM6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGthbGVpZG9zY29wZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuYzoKKwkqIGdzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmg6CisJKiBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHNxdWFyZS5jOgorCSogZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzdHJldGNoLmM6CisJICBnZW9tZXRyaWN0cmFuc2Zvcm06IHJlbmFtZSBnZW1ldHJpYyBtYXRoIGZ1bmN0aW9ucyB0byBoYXZlIHRoZWlyIHN5bWJvbHMgbmFtZXNwYWNlZAorCSAgT3RoZXJ3aXNlIHRob3NlIHN5bWJvbHMgY2FuIGNvbmZsaWN0IHdpdGggZXh0ZXJuYWwgbGlicmFyaWVzIHdoZW4KKwkgIGxpbmtpbmcgZXZlcnl0aGluZyBzdGF0aWNhbGx5IGZvciBtb2JpbGUgdGFyZ2V0cy4KKwkgIFVzZSB0aGUgZ3N0X2dtXyBwcmVmaXgsIHNob3J0IGZvciBnc3QgZ2VvbWV0cmljIG1hdGguCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2ODgyCisKIDIwMTUtMTAtMjYgMTU6MzA6MDggKzAxMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CiAKIAkqIGV4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmM6CkBAIC01MTYsNiArODY5NSwyOCBAQAogCSAgSXQncyBwcm9iYWJseSBiZXR0ZXIgdG8gYXZvaWQgY2hhc2luZyBoaWRkZW4gcmVmY291bnRzLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU2NwogCisyMDE1LTEwLTI2IDE4OjI2OjE4ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jOgorCSAgZ2xjb2xvcmNvbnZlcnQ6IGFsbG93IG91dHB1dHRpbmcgbXVsdGlwbGUgdGV4dHVyZXMgZm9yIGdsZXMzIGNvbnRleHRzCisJICB0aGUgVVNJTkdfR0xFUzIgaW5jbHVkZXMgYWxsIEdMRVMzIGNvbnRleHRzIGFzIHdlbGwgd2hpY2ggZG9lcyBzdXBwb3J0CisJICBkcmF3aW5nIHRvIG11bHRpcGxlIGJ1ZmZlcnMuICBJbnN0ZWFkIG1ha2Ugb3IgZGVjaXNpb24gc29sZWx5IGJhc2VkIG9uCisJICB3aGV0aGVyIGdsRHJhd0J1ZmZlcnMgaXMgYXZhaWxhYmxlIG9yIG5vdC4KKworMjAxNS0xMC0yNiAxNzozNjoyMSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0b3BlbmdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jOgorCSAgZ2x2aWV3Y29udmVydDogZXhwb3NlIHRoZSBlbGVtZW50IG9uIGdsZXMyIHBsYXRmb3JtcworCSAgV2UgY2FuIGRvIGV2ZXJ5dGhpbmcgd2l0aCBnbGVzMyBob3dldmVyIGdsZXMyIHJlc3RyaWN0cyB1cyBub3QgYWxsb3dpbmcKKwkgIHNlcGFyYXRlZCBvciBmcmFtZS1ieS1mcmFtZSBtdWx0aXZpZXcgbW9kZXMgZHVlIHRvIG11bHRpcGxlIGRyYXcgYnVmZmVycy4KKworMjAxNS0xMC0yNSAwMToxOTozMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jOgorCSAgdGVzdHM6IGhsc2RlbXV4X20zdTogYWRkIHRlc3QgZm9yIG1hc3RlciBwbGF5bGlzdCB3aXRoIG1pc3NpbmcgdmFyaWFudCBsaXN0IHVyaQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg2MQorCiAyMDE1LTEwLTIwIDA5OjEzOjA0ICswMTAwICBBbmRyw6kgRHJhc3ppayA8Z2l0QGFuZHJlZC5uZXQ+CiAKIAkqIGV4dC9obHMvbTN1OC5jOgpAQCAtNTMyLDQ2ICs4NzMzLDMzMSBAQAogCSAgYXMgbmVlZGVkLgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg2MQogCisyMDE1LTA5LTA0IDExOjI5OjA4ICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL2dzdGhsc2RlbXV4LmM6CisJICBobHNkZW11eDogY2hhbmdlIGRpc3Bvc2UgZnVuY3Rpb24gdG8gZmluYWxpemUKKworMjAxNS0wOC0zMCAyMTozNTowMiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHJlbW92ZSBoZWxwZXIgZnVuY3Rpb24gb25seSB1c2VkIG9uY2UKKworMjAxNS0wOC0zMCAxNzo0MToyMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RobHNkZW11eC5jOgorCSAgaGxzZGVtdXg6IHJlbW92ZSBkZXByZWNhdGVkICdmcmFnbWVudHMtY2FjaGUnIHByb3BlcnR5CisJICBJdCdzIGJlZW4gbm9uLWZ1bmN0aW9uYWwgZm9yIHR3byBjeWNsZXMgbm93LCBsZXQncworCSAgZ2V0IHJpZCBvZiBpdC4KKworMjAxNS0wOS0wMiAxNjo0MDoxNyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9tM3U4LmM6CisJICBobHNkZW11eDogbTN1ODogbW92ZSBmaWxlIGxvb2t1cCBieSBzZXF1ZW5jZSBkaXJlY3RseSBpbnRvIGNvZGUKKwkgIE5pY2VyIHRvIHJlYWQsIHR3byBsaW5lcyBvZiBjb2RlIGxlc3MsIGFuZCBhbHNvIHRoZSBjYWxsYmFjaworCSAgZnVuY3Rpb24gc2hvdWxkJ3ZlIGJlZW4gYSBHQ29tcGFyZUZ1bmMgdGhhdCByZXR1cm5zIGEgZ2ludAorCSAgYW5kIG5vdCBhIGJvb2xlYW4gKGl0IGRpZCB3b3JrIGNvcnJlY3RseSwgd2FzIGp1c3QgY29uZnVzaW5nKS4KKworMjAxNS0wOS0wMSAxMjo0ODozOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9tM3U4LmM6CisJKiBleHQvaGxzL20zdTguaDoKKwkgIGhsc2RlbXV4OiBtM3U4OiBjbGVhbi11cDogcmVtb3ZlIHVudXNlZCBhcmd1bWVudCBpbiBmdW5jdGlvbiBjYWxsCisKKzIwMTUtMDgtMzAgMTc6MjI6MTkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5oOgorCSAgaGxzZGVtdXg6IG0zdTg6IGNsZWFuLXVwOiByZWluZGVudCBoZWFkZXIgZm9yIGJldHRlciByZWFkYWJpbGl0eQorCSAgQW5kIHJlbW92ZSBkdXBsaWNhdGUgZGVmaW5lLgorCisyMDE1LTEwLTIzIDE4OjU4OjQxICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214Zm11eC5jOgorCSAgbXhmbXV4OiBSZW1vdmUgZW1wdHkgc2V0L2dldF9wcm9wZXJ0eSgpCisJICBXZSBjYW4gYWRkIHRoZW0gYWdhaW4gaWYgd2UgZXZlciBhZGQgcHJvcGVydGllcy4KKworMjAxNS0xMC0yMyAxODozODozMyArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9NYWtlZmlsZS5hbToKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJKiBnc3QvbXhmL214Zm11eC5oOgorCSAgbXhmbXV4OiBQb3J0IHRvIEdzdEFnZ3JlZ2F0b3IKKworMjAxNS0xMC0yMiAxOToyMDoyNCArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogU2V0IEdDIGVzc2VuY2UgZWxlbWVudCBVTCB2ZXJzaW9uIHRvIDB4MDEKKwkgIGZmbXBlZyBvdGhlcndpc2UgcmVqZWN0cyBpdCBhbmQgdGhlIHNwZWMgaXMgbm90IDEwMCUgY2xlYXIgYWJvdXQgdGhhdC4KKwogMjAxNS0xMC0yMCAxNzowOToyMiArMDIwMCAgU2FudGlhZ28gQ2Fyb3QtTmVtZXNpbyA8c2FuY2FuZUBnbWFpbC5jb20+CiAKIAkqIGV4dC9zcnRwL2dzdHNydHAuYzoKIAkgIHNydHA6IEZpeCBjcml0aWNhbCB3YXJuaW5nIHRyeWluZyB0byByZXRyaWV2ZSBTU1JDIGZyb20gYSBub24gZmIgbWVzc2FnZQogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg3NgogCi0yMDE1LTEwLTE2IDAwOjIzOjU2ICswMjAwICBNaWd1ZWwgUGFyw61zIETDrWF6IDxtcGFyaXNkaWF6QGdtYWlsLmNvbT4KKzIwMTUtMTAtMjIgMTk6MjQ6MzQgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKLQkqIGV4dC9zcnRwL2dzdHNydHBkZWMuYzoKLQkgIHNydHBkZWM6IHNraXAgcGFkZGluZyB3aGVuIG1hcHBpbmcgUlRQIHBhY2tldHMKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY2NTMKKwkqIGdzdC9teGYvTWFrZWZpbGUuYW06CisJICBteGY6IFJlb3JkZXIgQ0ZMQUdTIGFuZCBMSUJTCiAKLTIwMTUtMTAtMTQgMTA6MzE6MjMgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisyMDE1LTEwLTIzIDE1OjQyOjI0ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgogCi0JKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKLQkgIG1wZHBhcnNlcjogU2V0IGRlZmF1bHQgbGFzdF9ieXRlX3BvcyB0byAtMQotCSAgVGhlIHZhbHVlIGlzIG9wdGlvbmFsIGluIHRoZSByYW5nZSwgYW5kIGlmIGl0IGlzIGFic2VudCBpdCBtZWFucyB3ZSBzaG91bGQKLQkgIGRvd25sb2FkIHVudGlsIHRoZSBlbmQgb2Ygc3RyZWFtLiBOb3QgdW50aWwgcG9zaXRpb24gMC4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDgzMTYKKwkqIGdzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuaDoKKwkgIGFnZ3JlZ2F0b3I6IEFkZCBjcmVhdGVfbmV3X3BhZCgpIHZmdW5jIHRvIGFsbG93IHN1YmNsYXNzZXMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgYmVoYXZpb3VyCisJICBOb3QgYWxsIGFnZ3JlZ2F0b3Igc3ViY2xhc3NlcyB3aWxsIGhhdmUgYSBzaW5nbGUgcGFkIHRlbXBsYXRlIGNhbGxlZCBzaW5rXyV1CisJICBhbmQgbWlnaHQgZG8gc29tZXRoaW5nIHNwZWNpYWwgZGVwZW5kaW5nIG9uIHdoYXQgdGhlIGFwcGxpY2F0aW9uIHJlcXVlc3RzLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NzAxOAogCi0yMDE1LTEwLTE0IDE5OjMyOjA3ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorMjAxNS0xMC0yMSAxOTowMDo0MSArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogU2V0IEtBRyBzaXplIHRvIDEKKwkgIFdlJ3JlIG5vdCBhbGlnbmluZyBvdXIgb3V0cHV0IGluIGFueSB3YXksIGFuZCAwIGlzIGludmFsaWQuCisKKzIwMTUtMTAtMjEgMTg6NTg6MDYgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGxldCB0aGUgaGVhZGVyIHBhcnRpdGlvbidzIHByZXZfcGFydGl0aW9uIHBvaW50IGZvcndhcmQgdG8gdGhlIGZvb3RlcgorCisyMDE1LTEwLTIxIDE4OjMyOjA5ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZnR5cGVzLmM6CisJICBteGZ0eXBlczogRml4IGdlbmVyYXRpb24gb2Ygb3BlcmF0aW9uYWwgcGF0dGVybiBVTAorCisyMDE1LTEwLTIxIDE4OjMxOjQzICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9teGYvbXhmZGVtdXgtc3RydWN0dXJlLmM6CisJICBteGZkZW11eC1zdHJ1Y3R1cmU6IFN5bmMgZmFrZXNpbmsgc3RhdGUgd2l0aCB0aGUgYmluIHRvIG1ha2UgdGhlIGFwcGxpY2F0aW9uIHdvcmsgYXQgYWxsCisKKzIwMTUtMTAtMjEgMTg6MjA6MTYgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXBlZy5jOgorCSAgbXhmbXBlZzogaDI2NCBpcyBhbHdheXMgYnl0ZS1zdHJlYW0gaW5zaWRlIE1YRgorCisyMDE1LTEwLTIxIDE4OjA2OjExICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9teGZtdXguYzoKKwkqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9teGYuYzoKKwkgIG14ZjogQWRkIHVuaXQgdGVzdHMgZm9yIEgyNjQvUENNCisKKzIwMTUtMTAtMjEgMTc6NDc6MDAgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGxlYWsgU0VFSyBldmVudHMgd2hlbiBkcm9wcGluZyB0aGVtCisKKzIwMTUtMTAtMjEgMTc6MjE6MDkgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmdmMzLmM6CisJICBteGZ2YzM6IFRoZSB3cmFwcGluZyBpcyB0aGUgMTV0aCBieXRlIG9mIHRoZSBlc3NlbmNlIGNvbnRhaW5lciBVTCwgbm90IHRoZSAxNnRoCisJICBJbiBvdGhlciBtYXBwaW5ncyBpdCBpcyB0aGUgMTZ0aCB0aG91Z2guCisKKzIwMTUtMTAtMjEgMTc6MTE6MDMgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmZGVtdXguYzoKKwkgIG14ZmRlbXV4OiBJZiBzZWVraW5nIHRvIHRoZSByZW1haW5pbmcgcGFydHMgb2YgdGhlIGZpbGUgZmFpbHMgb24gRU9TLCBjb25zaWRlciB0aGUgc3RyZWFtIGRvbmUKKwkgIFdpdGhvdXQgdGhpcyB3ZSB3b3VsZCBydW4gdGhpcyB3aGlsZSBsb29wIGZvcmV2ZXIsIGFsd2F5cyBzZWVraW5nIGFnYWluIGZvcgorCSAgdGhlIHNhbWUgc3RyZWFtLgorCisyMDE1LTEwLTIxIDE1OjA3OjIzICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9teGZtdXguYzoKKwkqIHRlc3RzL2NoZWNrL3BpcGVsaW5lcy9teGYuYzoKKwkgIG14ZjogUHJvcGVybHkgZW5hYmxlIHVuaXQgdGVzdHMgYWdhaW4KKworMjAxNS0xMC0yMSAwMToyMjoxMSArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGYuYzoKKwkgIG14ZjogUmUtZW5hYmxlIG14Zm11eCBlbGVtZW50CisKKzIwMTUtMTAtMjEgMDE6MjE6MzcgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmanBlZzIwMDAuYzoKKwkgIG14ZmpwZWcyMDAwOiBGaXggY2FwcworCSAgVGhlcmUgaXMgbm8gZmllbGRzIGZpZWxkIGFueW1vcmUuCisKKzIwMTUtMTAtMjEgMDE6MTc6MDQgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9teGYvbXhmbXV4LmM6CisJICBteGZtdXg6IERvbid0IGZhaWwgU0VHTUVOVCBldmVudHMKKworMjAxNS0xMC0yMSAwMTowMjo0NiArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L214Zi9teGZtdXguYzoKKwkgIG14Zm11eDogUHVzaCBzdHJlYW0tc3RhcnQgYW5kIGNhcHMgZXZlbnQgYmVmb3JlIHNlZ21lbnQgZXZlbnQKKwkgIEFuZCBkb24ndCBwdXNoIHRoZSBjYXBzIGV2ZW50IGR1cmluZyBpbnN0YW5jZSBpbml0aWFsaXphdGlvbiBhbHJlYWR5LgorCisyMDE1LTEwLTIxIDAwOjQ1OjE5ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvbXhmL214ZmFlcy1id2YuYzoKKwkgIG14ZmFlcy1id2Y6IEZvcm1hdCBpcyB1bnNpZ25lZCBpZiBpdCdzIDEgYnl0ZSBwZXIgY2hhbm5lbAorCSAgLi4uIG5vdCAxIGJ5dGUgcGVyIGJsb2NrLgorCisyMDE1LTEwLTIxIDE2OjUxOjEwICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwOgorCSAgb3BlbmN2OiBoYW5kZGV0ZWN0OiBubyBuZWVkIHRvIGdldCBhIHdyaXRhYmxlIGJ1ZmZlcgorCSAgTm8gbmVlZCB0byBnZXQgYSB3cml0YWJsZSBidWZmZXIgaW5zaWRlIGN2X3RyYW5zX2Z1bmMgb2Ygb3BlbmN2IHZpZGVvCisJICBmaWx0ZXIuIEdzdEJhc2VUcmFuc2Zvcm0gdGFrZXMgY2FyZSBvZiB0aGlzLgorCisyMDE1LTEwLTIxIDE0OjM1OjExICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBjb21tb246CisJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKKwkgIEZyb20gYjk5ODAwYSB0byBiMzE5OTA5CisKKzIwMTUtMTAtMjAgMTc6Mjk6NDIgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkgIFVzZSBuZXcgR1NUX0VOQUJMRV9FWFRSQV9DSEVDS1MgI2RlZmluZQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Njg3MAorCisyMDE1LTEwLTIxIDE0OjI2OjAxICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBSRUFETUU6CisJKiBjb21tb246CisJICBBdXRvbWF0aWMgdXBkYXRlIG9mIGNvbW1vbiBzdWJtb2R1bGUKKwkgIEZyb20gOWFlZDFkNyB0byBiOTk4MDBhCisKKzIwMTUtMTAtMjEgMDU6MzQ6MTggKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJICBnbHNoYWRlcmVsZW1lbnQ6IGZyZWUgdGhlIHZlcnRleCBhbmQgZnJhZ21lbnQgc3RyaW5ncyBvbiBmaW5hbGl6ZQorCSAgRml4ZXMgYSBtZW1vcnkgbGVhayB3aGVuIHVzaW5nIHRoZSB2ZXJ0ZXgvZnJhZ21lbnQgcHJvcGVydGllcy4KKworMjAxNS0xMC0yMSAwNTozMzoxMyArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogCiAJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6Ci0JICBhbWN2aWRlb2RlYzogUHJvcGVybHkgZm9yd2FyZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGdzdF92aWRlb19kZWNvZGVyX25lZ290aWF0ZSgpCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NTc4CisJICBhbmRyb2lkbWVkaWE6IGZpeCBidWlsZCBlcnJvcnMKKwkgIHByaW50ZiAlbGxkIGluc3RlYWQgb2YgR19HSU5UNjRfRk9STUFULgorCSAgRG91YmxlIHJldCB2YXJpYWJsZSBkZWNsYXJhdGlvbi4KIAotMjAxNS0xMC0xNCAxOToyNDoyMiArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTAtMjEgMDU6MDA6MTEgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJICBnbHNoYWRlcmVsZW1lbnQ6IHJlbW92ZSB1bm5lZWRlZCByZWZlcmVuY2UgdG8gPGdzdC9nbC9nc3RnbHNoYWRlcnZhcmlhYmxlcy5oPgorCisyMDE1LTEwLTIxIDA0OjQ0OjUwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmM6CisJICBnbDogZml4IHVzYWdlIG9mIHN0cmluZy5oIGFuZCBzdGRpby5oIGZ1bmN0aW9ucyB3aXRob3V0IGluY2x1ZGluZyB0aGUgaGVhZGVycworCSAgZS5nOgorCSAgZ3N0Z2xjb250ZXh0X2VnbC5jOjYxMzo3OiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ3N0cmNtcCcKKwkgIFstV2Vycm9yPWltcGxpY2l0LWZ1bmN0aW9uLWRlY2xhcmF0aW9uXQorCSAgaWYgKHN0cmNtcCAoR19NT0RVTEVfU1VGRklYLCAic28iKSA9PSAwKQorCisyMDE1LTEwLTE2IDA3OjAzOjA2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSAgZ2xpbWFnZXNpbms6IGNyZWF0ZSBhIGNvbnRleHQgaW4gTlVMTF9SRUFEWQorCSAgU28gdGhhdCBpdCdzIHBvc3NpYmxlIGZvciBkZWNvZGVycyBldCBhbC4gdG8gcmVxdWVzdCB0aGUgT3BlbkdMIGNvbnRleHQKKwkgIGluIHRoZWlyIFJFQURZX1BBVVNFRCB0cmFuc2l0aW9uIHdpdGggZGVjb2RlYmluL3BsYXliaW4uCisKKzIwMTUtMTAtMTYgMDA6MzQ6MjIgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oOgorCSAgYW1jdmlkZGVjOiB1c2UgZ3N0Y29udGV4dCB0byByZXRyZWl2ZSB0aGUgT3BlbkdMIGNvbnRleHQKKworMjAxNS0wNC0yMCAxMzo0Njo1OCArMDIwMCAgTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AY29sbGFib3JhLmNvbT4KIAogCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmg6CiAJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6Ci0JICBhbWN2aWRlb2RlYzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIENPTE9SX1FDT01fRm9ybWF0WVZVNDIwU2VtaVBsYW5hcjMybU11bHRpVmlldyBmb3IgZGVjb2RpbmcKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1NzgKKwkgIGFuZHJvaWRtZWRpYTogT25seSBhbGxvdyBHTCBvdXRwdXQgaWYgdGhlIGRlY29kZXIgaGFzIHVua25vd24gY29sb3IgZm9ybWF0cworCSAgSWYgR1NUX0FNQ19JR05PUkVfVU5LTk9XTl9DT0xPUl9GT1JNQVRTIGlzIHNldCB0byB5ZXMsIG5vbi1HTCBvdXRwdXQKKwkgIGlzIHN0aWxsIGFsbG93ZWQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMjA0CiAKLTIwMTUtMTAtMTQgMTg6MzU6MDAgKzAyMDAgIHBsYW1vdCA8cGllcnJlLmxhbW90QG9wZW53aWRlLmZyPgorMjAxNC0wNi0wNSAxMDozMzo1NiArMDIwMCAgTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AY29sbGFib3JhLmNvbT4KIAotCSogc3lzL2RzaG93dmlkZW9zaW5rL2RzaG93dmlkZW9zaW5rLmNwcDoKLQkgIGRzaG93dmlkZW9zaW5rOiBGaXggNjRiaXQgY29tcGF0aWJpbGl0eSBpc3N1ZQotCSAgU2V0V2luZG93TG9uZyB3b3JrcyBvbmx5IGZvciAzMiBiaXQgc3lzdGVtcywgdGh1cyB3aW5kb3dzIGV2ZW50cyAobW92ZS9yZXNpemUpCi0JICB3aGVyZSBub3QgaW50ZXJwcmV0ZWQgb24gNjQgYml0IHN5c3RlbXMKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY2MTcKKwkqIHN5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuYW06CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jMmR0ZXh0dXJlcmVuZGVyZXIuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jMmR0ZXh0dXJlcmVuZGVyZXIuaDoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jYXVkaW9kZWMuYzoKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZS5jOgorCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNlLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZW5jLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmg6CisJKiBzeXMvYW5kcm9pZG1lZGlhL29yZy9mcmVlZGVza3RvcC9nc3RyZWFtZXIvYW5kcm9pZG1lZGlhL0dzdEFtY09uRnJhbWVBdmFpbGFibGVMaXN0ZW5lci5qYXZhOgorCSAgYW5kcm9pZG1lZGlhOiBBZGQgc3VwcG9ydCBmb3IgR0wgb3V0cHV0IGluIGFtY3ZpZGVvZGVjCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMxMjA0CisKKzIwMTUtMDQtMzAgMTI6MzM6NTggKzAyMDAgIE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGNvbGxhYm9yYS5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFuZHJvaWRtZWRpYTogRG8gbm90IGZsdXNoIGNvZGVjIGlmIGl0IGlzIG5vdCBzdGFydGVkCisKKzIwMTUtMDQtMTMgMTM6MTA6MTAgKzAyMDAgIE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGdtYWlsLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5jOgorCSAgYW5kcm9pZG1lZGlhOiBBbGxvdyBvYmplY3QgdG8gYmUgTlVMTCBpbiBnc3RfYW1jX2puaV8qdW5yZWYgZnVuY3Rpb25zCisKKzIwMTUtMDMtMTMgMTY6MTM6MDggKzAxMDAgIEVkd2FyZCBIZXJ2ZXkgPGJpbGJvZWRAYmlsYm9lZC5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZW5jLmM6CisJICBhbmRyb2lkbWVkaWE6IEZpeCBkZWJ1ZyBzdGF0ZW1lbnQgKCVkIGZvciBhIGdzaXplIGFyZ3VtZW50KQorCisyMDE1LTA0LTAyIDE2OjI4OjE0ICswMjAwICBNYXR0aGlldSBCb3Vyb24gPG1hdHRoaWV1LmJvdXJvbkBnbWFpbC5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYzoKKwkgIGFuZHJvaWRtZWRpYTogSW1wcm92ZSBjb2xvciBmb3JtYXQgZGVidWcgbWVzc2FnZXMKKworMjAxNS0wMy0zMSAxNjoyNDo0MCArMDIwMCAgTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AZ21haWwuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jOgorCSAgYW5kcm9pZG1lZGlhOiBJbXByb3ZlIGRlYnVnIG1lc3NhZ2VzCisKKzIwMTUtMDMtMzEgMTc6NDg6NTkgKzAyMDAgIE1hdHRoaWV1IEJvdXJvbiA8bWF0dGhpZXUuYm91cm9uQGdtYWlsLmNvbT4KKworCSogc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYzoKKwkgIGFuZHJvaWRtZWRpYTogRG8gbm90IHdhcm4gd2UgZG8gbm90IHN1cHBvcnQgQ09MT1JfRm9ybWF0U3VyZmFjZQorCisyMDE1LTEwLTIxIDAzOjU5OjMzICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaDoKKwkgIGdsOiByZW1vdmUgdW5uZWVkZWQgc2hhZGVyIHZhcmlhYmxlIHBhcnNpbmcgY29kZQorCisyMDE1LTEwLTIxIDAzOjIzOjMwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmg6CisJICBnbHNoYWRlcmVsZW1lbnQ6IGltcGxlbWVudCBzZXR0aW5nIGFyYml0cmFyeSB1bmlmb3JtcworCSAgQ3VycmVudGx5IGZsb2F0IGFuZCBpbnQgYXJlIHN1cHBvcnRlZCBieSBkZWZhdWx0LiB2ZWMyLCB2ZWMzLCB2ZWM0CisJICBhbmQgbWF0NCBhcmUgc3VwcG9ydGVkIGlmIGdyYXBoZW5lIGlzIHVzZWQuICBPZiBjb3Vyc2UgaWYgb25lIHdhbnRzCisJICB0byBzZXQgY3VzdG9tIHVuaWZvcm1zIHRoZXkgY2FuIGFsc28gYmUgc2V0IHVzaW5nIHRoZSBjcmVhdGUtc2hhZGVyCisJICBzaWduYWwuCisKKzIwMTUtMTAtMjAgMTI6MjQ6MTEgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHA6CisJICBvcGVuY3Y6IGhhbmRkZXRlY3Q6IGZyZWUgYmVzdF9yIHdpdGggZGVsZXRlCisJICBiZXN0X3IgaXMgYSBjdjo6UmVjdCwgc28gaXQgc2hvdWxkIGJlIGZyZWVkIHdpdGggZGVsZXRlIGFuZCBub3Qgd2l0aAorCSAgZ19mcmVlKCkKKworMjAxNS0xMC0yMCAxMjowODo1OSArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5jcHA6CisJICBvcGVuY3Y6IG1vdGlvbmNlbGxzOiByZW1vdmUgdW5uZWNlc3NhcnkgY2hlY2sKKwkgIFdlIGtub3cgdGhhdCB0aGUgZ2NoYXIgYXJyYXlzIGNvbnRhaW4gYXQgbGVhc3Qgb25lIHN0cmluZy4gRnVydGhlcm1vcmUsCisJICBnX3N0cmZyZWV2KCkgY2hlY2tzIGlmIHRoZSBhcnJheSBpcyBOVUxMIGFuZCBzaW1wbHkgcmV0dXJucyBpZiBpdCBpcy4KKwkgIEhlbmNlLCB0aGVyZSBpcyBubyBuZWVkIHRvIGNoZWNrIGlmIHRoZSBhcnJheSBpcyBlbXB0eSBiZWZvcmUgdXNpbmcKKwkgIGdfc3RyZnJlZXYoKS4KKwkgIENJRCAxMzI3NDEyLTEzMjc0MTUKIAogMjAxNS0wNy0wOCAxNzoxNzoxMiArMDIwMCAgRWR3YXJkIEhlcnZleSA8ZWR3YXJkQGNlbnRyaWN1bGFyLmNvbT4KIApAQCAtNTg0LDYgKzkwNzAsNTQgQEAKIAkgIHdhcyBwcmV2aW91c2x5IG91dHB1dHRlZC4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTIxMzIKIAorMjAxNS0xMC0xNCAxODozNTowMCArMDIwMCAgcGxhbW90IDxwaWVycmUubGFtb3RAb3BlbndpZGUuZnI+CisKKwkqIHN5cy9kc2hvd3ZpZGVvc2luay9kc2hvd3ZpZGVvc2luay5jcHA6CisJICBkc2hvd3ZpZGVvc2luazogRml4IDY0Yml0IGNvbXBhdGliaWxpdHkgaXNzdWUKKwkgIFNldFdpbmRvd0xvbmcgd29ya3Mgb25seSBmb3IgMzIgYml0IHN5c3RlbXMsIHRodXMgd2luZG93cyBldmVudHMgKG1vdmUvcmVzaXplKQorCSAgd2hlcmUgbm90IGludGVycHJldGVkIG9uIDY0IGJpdCBzeXN0ZW1zCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NjE3CisKKzIwMTUtMTAtMTkgMTU6MTU6MzAgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2d0ay9ndGtnc3RnbHdpZGdldC5jOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9nc3RnbHdpbmRvd19kaXNwbWFueF9lZ2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9nc3RnbHdpbmRvd193YXlsYW5kX2VnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsY29udGV4dF93Z2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsd2luZG93X3dpbjMyX2VnbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbGNvbnRleHRfZ2x4Lmg6CisJKiBnc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5oOgorCSAgZ2w6IGJlIGNvbnNpc3RlbnQgaW4gZ29iamVjdCBib2lsZXJwYXRlCisJICBHU1RfR0xfSVNfKiB2cyBHU1RfSVNfR0xfKgorCSAgZ2l0IGdyZXAgLWwgJ0dTVF9HTF9JU18nIHwgeGFyZ3Mgc2VkIC1pICdzL0dTVF9HTF9JU18vR1NUX0lTX0dMXy9nJworCisyMDE1LTEwLTE5IDE1OjAyOjEwICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIC5naXRpZ25vcmU6CisJICBhZGQgZ2xsaXZlc2hhZGVyIHByb2dyYW0gdG8gLmdpdGlnbm9yZQorCiAyMDE1LTEwLTE3IDEyOjQ4OjExIC0wNzAwICBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0IDxyZXluYWxkb0Bvc2cuc2Ftc3VuZy5jb20+CiAKIAkqIGdzdC9wbm0vZ3N0cG5tZGVjLmM6CkBAIC02MTEsNiArOTE0NSwyMyBAQAogCSAgZm9yIHRoZSBuZXh0IGZyYW1lLCBhdm9pZGluZyBmYWlsdXJlcyBsaWtlOgogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjU2MwogCisyMDE1LTEwLTE3IDE1OjI2OjQ2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5jOgorCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmg6CisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvZ2xsaXZlc2hhZGVyLmM6CisJICBnbHNoYWRlcmVsZW1lbnQ6IGltcGxlbWVudCBvbi1kZW1hbmQgY3JlYXRlLXNoYWRlciBzaWduYWxsaW5nCisJICBPbmUgbWF5IG5vdCBoYXZlIGFuIEdzdEdMQ29udGV4dCBhdmFpbGFibGUgb3IgY3VycmVudCBpbiB0aGUgdGhyZWFkIHdoZXJlIG9uZQorCSAgd291bGQgbmVlZCB0byB1cGRhdGUgdGhlIHNoYWRlci4gIFN1cHBvcnQgdGhpcyBieSBzaWduYWxsaW5nIGNyZWF0ZS1zaGFkZXIKKwkgIHdoZW5ldmVyIHRoZSBvbmUtc2hvdCAndXBkYXRlLXNoYWRlcicgaXMgc2V0IHRvIFRSVUUuCisKKzIwMTUtMTAtMTcgMDI6NDI6NDcgKzExMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2Nhb3BlbmdsbGF5ZXJzaW5rLm06CisJICBnbC9jYWxheWVyOiBkb24ndCBsZWFrIGEgZ2wgc2hhZGVyIG9iamVjdAorCSAgV2Ugd2lsbCBhbHdheXMgb3ZlcndyaXRlIHRoZSBjYV9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyIHdpdGhvdXQgZnJlZWluZyB0aGUKKwkgIG9iamVjdC4KKwogMjAxNS0xMC0xNyAwMjo0MDo1MCArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogCiAJKiBleHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmM6CkBAIC02MTksMTIgKzkxNzAsMTY0IEBACiAJICBjYWxsYmFjay4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU5NjkKIAorMjAxNS0xMC0xNyAwMTowODoyOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9leGFtcGxlcy9ndGsvZ2xsaXZlc2hhZGVyLmM6CisJICBnbC9leGFtcGxlczogYWRkIGEgbGl2ZSBzaGFkZXIgZGVtbyB1c2luZyB0aGUgbmV3IEdzdEdMU0xTdGFnZQorCSAgSW1wbGVtZW50ZWQgd2l0aCB2aWRlb3Rlc3RzcmMgISBnbHNoYWRlciAhIGdsdXBsb2FkICEgZ3RrZ2xzaW5rCisJICBFcnJvcnMgb24gYW4gaW52YWxpZCBzaGFkZXIgY29tcGlsYXRpb24gYXJlIGlnbm9yZWQgaG93ZXZlciBhbnkgZXJyb3IKKwkgIHByb3ZpZGVkIGJ5IHRoZSBnbHNsIGNvbXBpbGVyIGlzIHByaW50ZWQgdG8gc3Rkb3V0LgorCisyMDE1LTEwLTE2IDAwOjIzOjU2ICswMjAwICBNaWd1ZWwgUGFyw61zIETDrWF6IDxtcGFyaXNkaWF6QGdtYWlsLmNvbT4KKworCSogZXh0L3NydHAvZ3N0c3J0cGRlYy5jOgorCSAgc3J0cGRlYzogc2tpcCBwYWRkaW5nIHdoZW4gbWFwcGluZyBSVFAgcGFja2V0cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjY1MworCisyMDE1LTEwLTE0IDE5OjMyOjA3ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogUHJvcGVybHkgZm9yd2FyZCB0aGUgcmV0dXJuIHZhbHVlIG9mIGdzdF92aWRlb19kZWNvZGVyX25lZ290aWF0ZSgpCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NTc4CisKKzIwMTUtMTAtMTQgMTk6MjQ6MjIgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIHN5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmM6CisJKiBzeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmM6CisJICBhbWN2aWRlb2RlYzogSW1wbGVtZW50IHN1cHBvcnQgZm9yIENPTE9SX1FDT01fRm9ybWF0WVZVNDIwU2VtaVBsYW5hcjMybU11bHRpVmlldyBmb3IgZGVjb2RpbmcKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1NzgKKworMjAxNS0xMC0xNiAwMjo1NzoxOSArMTEwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJICBnbHNsc3RhZ2U6IGFkZCBicmFja2V0cyBhcm91bmQgcG9pbnRlciBkZXJlZmVyZW5jZSByZWZlcmVuY2luZyBhbiBhcnJheQorCSAgV2hpbGUgdGVjaG5pY2FsbHksIGkgaXMgYWx3YXlzIDAgYW5kICp2ZXJ0ZXhfc291cmNlc1tpKytdIGlzIGVxdWl2YWxhbnQKKwkgIHRvICgqdmVydGV4X3NvdXJjZXMpW2krK10uICBCZSBmdXR1cmUtcHJvb2YgaW4gdGhlIGNhc2Ugb2YgY29kZQorCSAgbW92ZXMvY2hhbmdlcy9ldGMuCisJICBDSUQgMTMyNzQwNgorCisyMDE1LTEwLTE1IDIzOjQ3OjExICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tOgorCSAgZ2wvY2FvcGVuZ2xsYXllcnNpbms6IHBvcnQgdG8gbmV3IEdzdEdMU2hhZGVyIEFQSQorCSAgZml4ZXMgYnVpbGQgZXJyb3I6CisJICAidW5kZWZpbmVkIHN5bWJvbHMgZm9yIGFyY2hpdGVjdHVyZToKKwkgIGdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrIgorCisyMDE1LTEwLTE1IDIyOjQyOjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb250ZXh0LmM6CisJICBnbC90ZXN0czogcG9ydCBnbGNvbnRleHQgdGVzdCB0byBvcGVuZ2wKKwkgIE5vdyB1c2VzIHZhbydzIGFuZCB2Ym8ncyB3aGVuIHBvc3NpYmxlIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIGdzdGdsIGxpYnJhcnkuCisKKzIwMTUtMDktMDQgMTY6MTY6NTEgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuaDoKKwkgIGdsc2hhZGVyOiBwb3J0IGVsZW1lbnQgdG8gR3N0R0xTTFN0YWdlCisJICAtIFByb3ZpZGUgYSBzaGFkZXIgcHJvcGVydHkgdG8gc2V0IHRoZSBmdWxsIHNoYWRlciBwaXBlbGluZQorCSAgLSBQcm92aWRlIHZlcnRleCBhbmQgZnJhZ21lbnQgcHJvcGVydGllcyBmb3IganVzdCBwcm92aWRpbmcgc2ltcGxlCisJICBzaGFkZXIgc291cmNlcy4KKworMjAxNS0wOS0wNCAxNjowMjozMiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmM6CisJKiBleHQvZ2wvZ3N0Z2xjb2xvcnNjYWxlLmM6CisJKiBleHQvZ2wvZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuYzoKKwkqIGV4dC9nbC9nc3RnbGVmZmVjdHMuYzoKKwkqIGV4dC9nbC9nc3RnbGltYWdlc2luay5jOgorCSogZXh0L2d0ay9ndGtnc3RnbHdpZGdldC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jOgorCSogdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbnRleHQuYzoKKwkqIHRlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYzoKKwkgIGdsc2hhZGVyOiBwb3J0IHRvIHVzaW5nIEdzdEdMU0xTdGFnZSBvYmplY3RzIGZvciBzdHJpbmcgbWFuYWdlbWVudAorCSAgQSBHc3RHTFNoYWRlciBpcyBub3cgc2ltcGx5IGEgY29sbGVjdGlvbiBvZiBzdGFnZXMgdGhhdCBhcmUKKwkgIGNvbXBpbGVkIGFuZCBsaW5rZWQgdG9nZXRoZXIgaW50byBhIHByb2dyYW0uICBUaGUgdW5pZm9ybS9hdHRyaWJ1dGUKKwkgIGludGVyZmFjZSBoYXMgcmVtYWluZWQgdGhlIHNhbWUuCisKKzIwMTUtMDktMDQgMTQ6MzY6NDcgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dsLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmg6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmg6CisJICBnbHNsOiBhZGQgYSBzaGFkZXIgc3RhZ2Ugb2JqZWN0IEdzdEdMU0xTdGFnZQorCSAgUmVwcmVzZW50cyBhIHN0YWdlICh2ZXJ0ZXgsIGdlb21ldHJ5LCBmcmFnbWVudCwgZXRjKSBpbiB0aGUgc2hhZGVyCisJICBwaXBlbGluZS4KKworMjAxNS0wOS0wNCAwMDowOTowOSArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaDoKKwkgIGdsL3NoYWRlci92YXJpYWJsZXM6IGluY2x1ZGUgZ2VuZXJpYyBnbC5oIGhlYWRlcgorCSAgT3RoZXJ3aXNlIHdlIG1heSBtaXNzIHNvbWUgZm9yd2FyZCBkZWNsYXJhdGlvbnMKKwkgIEZpeGVzIGJ1aWxkIGVycm9yOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIEdzdEdMU0xTdGFnZQorCisyMDE1LTA4LTIwIDE1OjExOjA2ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbToKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xfcHJpdmF0ZS5oOgorCSogdGVzdHMvY2hlY2svTWFrZWZpbGUuYW06CisJKiB0ZXN0cy9jaGVjay9saWJzLy5naXRpZ25vcmU6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsc2wuYzoKKwkgIGdsOiBhZGQgc29tZSBHTFNMIHV0aWxpdHkgZnVuY3Rpb25zCisJICBTcGVjaWZpY2FsbHkgcGFyc2luZy9zZXR0aW5nIEdMU0wgdmVyc2lvbnMgYW5kIHRoZSBzaGFkZXIgcmVsYXRlZAorCSAgZnVuY3Rpb24gdGFibGUuCisKIDIwMTUtMTAtMTQgMjI6NTE6MjkgKzAyMDAgIFBhdWwgQXJ6ZWxpZXIgPHBhdWwuYXJ6ZWxpZXJAZnJlZS5mcj4KIAogCSogZXh0L2R0bHMvZ3N0ZHRsc2NlcnRpZmljYXRlLmM6CiAJICBkdGxzOiBGaXggbmFtZSBjb25mbGljdCB3aXRoIG9wZW5zc2wgb24gd2luMzIKIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTY1OTIKIAorMjAxNS0wOS0wNCAxODo0MDoxOCAtMDMwMCAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvc3NAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvaGxzL20zdTguYzoKKwkgIGhsczogaWYgbWVkaWEgc2VxdWVuY2UgaXMgbm90IHNwZWNpZmllZCwgdXNlIDAKKwkgIEFsbG93cyBwbGF5bGlzdHMgdGhhdCBhcmUgbWlzc2luZyB0aGUgbWVkaWFzZXF1ZW5jZSBpbmZvcm1hdGlvbiB0bworCSAgYmUgY29ycmVjdGx5IHBhcnNlZC4gSWYgdGhlIHBsYXlsaXN0IHdhcyB1cGRhdGVkIHdpdGhvdXQgcmVzZXRpbmcKKwkgIHRoZSBtZWRpYXNlcXVlbmNlIGl0IHdvdWxkIGNvbnN0YW50bHkgaW5jcmVhc2Ugb3ZlciBzdWJzZXF1ZW50IHVwZGF0ZXMsCisJICBsZWFkaW5nIHRvIGlzc3VlcyBkdXJpbmcgcGxheWJhY2suCisKKzIwMTUtMDgtMzAgMTQ6NTY6NTcgKzAyMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CisKKwkqIGV4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmM6CisJICB3YXlsYW5kc2luazogZml4IGZhbGxiYWNrIGJ1ZmZlciBhbGxvY2F0aW9uCisJICBDb3B5LXBhc3RlIG1pc3Rha2U7IHRoZSB3bF9idWZmZXIgd2FzIGF0dGFjaGVkIG9uIHRoZSB3cm9uZyBidWZmZXIuLi4KKworMjAxNS0wOC0zMCAxNDo1NToxMSArMDIwMCAgR2VvcmdlIEtpYWdpYWRha2lzIDxnZW9yZ2Uua2lhZ2lhZGFraXNAY29sbGFib3JhLmNvbT4KKworCSogZXh0L3dheWxhbmQvZ3N0d2F5bGFuZHNpbmsuYzoKKwkqIGV4dC93YXlsYW5kL3dsZGlzcGxheS5jOgorCSogZXh0L3dheWxhbmQvd2xkaXNwbGF5Lmg6CisJICB3YXlsYW5kc2luazogcmVuYW1lIEdzdFdsRGlzcGxheTo6Zm9ybWF0cyBhcnJheSB0byBzaG1fZm9ybWF0cworCSAgVGhlc2UgZm9ybWF0cyBhcmUgc3BlY2lmaWMgdG8gdGhlIHdsX3NobSBpbnRlcmZhY2UuIFdlIGFyZSBnb2luZworCSAgdG8gYWRkIGRtYWJ1ZiBmb3JtYXRzIGxhdGVyIGFzIHdlbGwuCisKKzIwMTUtMDgtMjkgMjI6Mjk6MTcgKzAyMDAgIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CisKKwkqIGV4dC93YXlsYW5kL01ha2VmaWxlLmFtOgorCSogZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuYzoKKwkqIGV4dC93YXlsYW5kL3dsc2htYWxsb2NhdG9yLmg6CisJICB3YXlsYW5kc2luazogcmVwbGFjZSB0aGUgY3VzdG9tIEdzdFdsU2htTWVtb3J5IHdpdGggR3N0RmRNZW1vcnkKKworMjAxNS0xMC0xNCAxOTo1MzozNCArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogcG8vUE9URklMRVMuaW46CisJICBwbzogVXBkYXRlIFBPVEZJTEVTLmluIGZvciBPcGVuQ1YgQysrIGZpbGUgcmVuYW1lCisKKzIwMTUtMTAtMTQgMTc6NDE6MDUgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvbTN1OC5jOgorCSAgaGxzOiBBbGxvdyBkZWJ1Z2dpbmcgb2YgdGhlIHBsYXlsaXN0CisJICBIZWxwcyBkZWJ1Z2dpbmcgaXNzdWVzCisKIDIwMTUtMTAtMTQgMTc6Mzg6MzkgKzAyMDAgIEVkd2FyZCBIZXJ2ZXkgPGVkd2FyZEBjZW50cmljdWxhci5jb20+CiAKIAkqIGV4dC9obHMvZ3N0aGxzZGVtdXguYzoKQEAgLTY0MCw2ICs5MzQzLDE4OSBAQAogCSAgKiBlaXRoZXIgdGhlIGZpcnN0IHNlcXVlbmNlIG51bWJlciBvZiB0aGUgcGxheWxpc3QgKGZhbGxiYWNrKQogCSAgKiBvciAzIGZyYWdtZW50cyBmcm9tIHRoZSBsYXN0IG9uZSAoc3RhbmRhcmQgYmVoYXZpb3VyKQogCisyMDE1LTEwLTE0IDE1OjMwOjA1ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jOgorCSogZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jcHA6CisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmM6CisJKiBleHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jOgorCSogZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmNwcDoKKwkgIG9wZW5jdjogc3dpdGNoIHJlbWFpbmluZyB0byBDKysKKwkgIFN3aXRjaCByZW1haW5pbmcgQyBmaWxlcyB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlQ1YgZWxlbWVudHMsCisJICBhbmQgc3VwcG9ydCBvZiB0aGUgbmV3IDIuNC4xMSBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CisKKzIwMTUtMTAtMTQgMTA6MzE6MjMgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSAgbXBkcGFyc2VyOiBTZXQgZGVmYXVsdCBsYXN0X2J5dGVfcG9zIHRvIC0xCisJICBUaGUgdmFsdWUgaXMgb3B0aW9uYWwgaW4gdGhlIHJhbmdlLCBhbmQgaWYgaXQgaXMgYWJzZW50IGl0IG1lYW5zIHdlIHNob3VsZAorCSAgZG93bmxvYWQgdW50aWwgdGhlIGVuZCBvZiBzdHJlYW0uIE5vdCB1bnRpbCBwb3NpdGlvbiAwLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0ODMxNgorCisyMDE1LTEwLTE0IDEwOjM0OjU4ICswMzAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6CisJICBhZGFwdGl2ZWRlbXV4OiBIVFRQIHJhbmdlcyBhcmUgaW5jbHVzaXZlLCBHU3RyZWFtZXIgc2VnbWVudC5zdG9wIGlzIGV4Y2x1c2l2ZQorCSAgVHJhbnNsYXRlIHRoZSB2YWx1ZXMgYWNjb3JkaW5nbHkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzQ4MzE2CisKKzIwMTUtMTAtMTQgMTQ6MzQ6MzIgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmM6CisJKiBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcDoKKwkqIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuaDoKKwkqIGV4dC9vcGVuY3YvbW90aW9uY2VsbHNfd3JhcHBlci5jcHA6CisJKiBleHQvb3BlbmN2L21vdGlvbmNlbGxzX3dyYXBwZXIuaDoKKwkgIG9wZW5jdjogbW90aW9uY2VsbHM6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3Rtb3Rpb25jZWxscyB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlbkNWIGVsZW1lbnRzLAorCSAgYW5kIHN1cHBvcnQgb2YgdGhlIG5ldyAyLjQuMTEgQVBJLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTE0IDIyOjM1OjI2ICsxMTAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIE1ha2VmaWxlLmFtOgorCSAgYnVpbGQ6IGFkZCBsaXZlYWRkZXIgZGlyZWN0b3J5IHRvIHRoZSBjcnVmdCBsaXN0CisJICBTbyB0aGF0IHdlIGNhbiByZW1vdmUgaXQgYW5kIGF2b2lkIGR1cGxpY2F0ZSBHc3RMaXZlQWRkZXIgR1R5cGUgcmVnaXN0cmF0aW9ucy4KKworMjAxNS0xMC0xMyAxMjo0MDowNCArMDIwMCAgR3VpbGxhdW1lIERlc21vdHRlcyA8Z3VpbGxhdW1lLmRlc21vdHRlc0Bjb2xsYWJvcmEuY28udWs+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJICBnbDogZml4IGxlYWsgaW4gZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIoKQorCSAgVGhlIHN0cmluZyBhbGxvY2F0ZWQgYnkgZ192YXNwcmludGYoKSB3YXMgbGVha2VkLgorCSAgUmVwcm9kdWNlZCB1c2luZyB0aGUKKwkgIHZhbGlkYXRlLmZpbGUuY29tcG9zaXRvci5zaW1wbGUucGxheV8xNXMuc3luY2hyb25pemVkIHZhbGlkYXRlIHNjZW5hcmlvLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjQ5MgorCisyMDE1LTEwLTEyIDExOjA3OjMyICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuYXJnczoKKwkqIGRvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHk6CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaW50ZXJmYWNlczoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hY2N1cmlwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWRlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21lbmMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFpZmYueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzZm11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNzcmVuZGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb21peGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdXRvY29udmVydC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYmF5ZXIueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJ6Mi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2FtZXJhYmluLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jaHJvbWFwcmludC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29sb3JlZmZlY3RzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jdXJsLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXRhdXJpc3JjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZWJ1Z3V0aWxzYmFkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdHNkZWMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2Yi54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZic3Vib3ZlcmxheS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZkc3B1LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mZXN0aXZhbC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmllbGRhbmFseXNpcy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmxpdGUueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyYWdtZW50ZWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyZWkwci54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2F1ZGllZmZlY3RzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZHAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ21lZGVjLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc20ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdHNpcmVuLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pZDN0YWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tbXMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGcxMjMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wbGV4LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1uZW9uLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5hbC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmN2LnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wY2FwcGFyc2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBubS54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmF3cGFyc2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlbW92ZXNpbGVuY2UueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlc2luZHZkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZmJzcmMueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0bXAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNjaHJvLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZHAueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNlZ21lbnRjbGlwLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zaG0ueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc291bmR0b3VjaC54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BlZWQueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9wYXJzZXJzYmFkLnhtbDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FhY2VuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hbXJ3YmVuYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2F5bGFuZHNpbmsueG1sOgorCSogZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXk0bWRlYy54bWw6CisJKiBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4temJhci54bWw6CisJICBkb2NzOiB1cGRhdGUgdG8gZ2l0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2NDI0CisKKzIwMTUtMTAtMTIgMDk6MzY6MjkgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuYzoKKwkgIGxpdmVhZGRlcjogbGF0ZW5jeSBwcm9wZXJ0eSBpcyBhbiB1aW50NjQgaW4gYXVkaW9taXhlcgorCisyMDE1LTEwLTExIDIzOjQ0OjI1ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jOgorCSogZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jcHA6CisJICB0ZXh0b3ZlcmxheTogU3dpdGNoIHRvIEMrKworCSAgU3dpdGNoIGdzdHRleHRvdmVybGF5IHRvIEMrKyBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBPcGVuQ1YgZWxlbWVudHMsCisJICBhbmQgc3VwcG9ydCBvZiB0aGUgbmV3IDIuNC4xMSBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CisKKzIwMTUtMTAtMTEgMjE6NTQ6MzAgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmM6CisJKiBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmNwcDoKKwkgIG9wZW5jdjogcHlyYW1pZHNlZ21lbnQ6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3RweXJhbWlkc2VnbWVudCB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlbkNWIGVsZW1lbnRzLAorCSAgYW5kIHN1cHBvcnQgb2YgdGhlIG5ldyAyLjQuMTEgQVBJLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTA1IDAwOjU1OjM2ICswMTAwICBPbGl2aWVyIENyw6p0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY29tPgorCisJKiBjb25maWd1cmUuYWM6CisJKiBkb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW06CisJKiBkb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sOgorCSogZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dDoKKwkqIGRvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saXZlYWRkZXIueG1sOgorCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9taXhlci5jOgorCSogZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5hbToKKwkqIGdzdC9saXZlYWRkZXIvbGl2ZWFkZGVyLmM6CisJKiBnc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5oOgorCSAgbGl2ZWFkZGVyOiBSZW1vdmUgcGx1Z2luLCByZXBsYWNlIGJ5IGNvbXBhdCBzdWJjbGFzcyBvZiBhdWRpb21peGVyCisJICBOZXcgc3ViY2xhc3Mgd2l0aCBhIHNpbWlsYXIgYmVoYXZpb3VyIGFzIHRoZSBvbGQgbGl2ZWFkZGVyLCBidXQKKwkgIGEgc2xpZ2h0bHkgZGlmZmVyZW50IEFQSSBhcyB0aGUgbGF0ZW5jeSBpcyBpbiBuYW5vc2Vjb25kcywgbm90CisJICBtaWxsaXNlY29uZHMuIEFsc28sIHRoZSBuZXcgbGl2ZWFkZGVyIGhhcyBhIGVmZmVjdGl2ZSBsYXRlbmN5IHRoYXQKKwkgIGlzIGxhdGVuY3kgKyBvdXRwdXQtYnVmZmVyLWR1cmF0aW9uLiBJbiBwcmFjdGljZSwganVzdCBzZXR0aW5nIGEgbm9uLXplcm8KKwkgIGxhdGVuY3kgd2l0aCB0aGUgbmV3IGF1ZGlvbWl4ZXIgZ2l2ZXMgeW91IHRoZSByaWdodCBiZWhhdmlvciBpbiA5OSUgb2YgdGhlCisJICBjYXNlcy4KKwogMjAxNS0xMC0xMSAxMDowMDo0MyArMDEwMCAgSnVsaWVuIElzb3JjZSA8ai5pc29yY2VAc2Ftc3VuZy5jb20+CiAKIAkqIGNvbmZpZ3VyZS5hYzoKQEAgLTY0OCwxOCArOTUzNCw2MSBAQAogCSAgRm91bmQgd2l0aCBnc3QtaW5zcGVjdC0xLjAgLWIgaW4gZ3N0LXVuaW5zdGFsbGVkIGVudi4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYzODMKIAotMjAxNS0xMC0wNSAxMToyMTowNyArMDkwMCAgVmluZWV0aCBUTSA8dmluZWV0aC50bUBzYW1zdW5nLmNvbT4KKzIwMTUtMTAtMTAgMTc6NTI6MjMgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CiAKLQkqIGdzdC9pZDN0YWcvaWQzdGFnLmM6Ci0JICBpZDN0YWc6IGZpeCBzYW1wbGUgbWVtb3J5IGxlYWsKLQkgIFdoZW4gZ2V0dGluZyBzYW1wbGUgZnJvbSB0YWdsaXN0LCB0aGUgbWVtb3J5IGlzIG5vdCBiZWluZyBmcmVlZCByZXN1bHRpbmcgaW4gbWVtb3J5IGxlYWsuCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MDcwCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RjdnNvYmVsLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2c29iZWwuY3BwOgorCSAgY3Zzb2JlbDogU3dpdGNoIHRvIEMrKworCSAgU3dpdGNoIGdzdGN2bHNvYmVsIHRvIEMrKyBmb3IgY29uc2lzdGVuY3kgd2l0aCBvdGhlciBPcGVuQ1YgZWxlbWVudHMsIGFuZAorCSAgc3VwcG9ydCBvZiB0aGUgbmV3IDIuNC4xMSBBUEkuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CiAKLTIwMTUtMTAtMDYgMjE6MjM6MTEgKzA1MzAgIE5pcmJoZWVrIENoYXVoYW4gPG5pcmJoZWVrQGNlbnRyaWN1bGFyLmNvbT4KKzIwMTUtMTAtMTAgMTc6MDA6NTUgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CiAKLQkqIGV4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYzoKLQkgIGdsdmlkZW9taXhlcjogUHJveHkgdGhlIGlnbm9yZS1lb3MgdmlkZW9hZ2dyZWdhdG9yIHByb3BlcnR5IGFzIHdlbGwKLQkgIElkZW50aWNhbCB0byBob3cgdGhlIHotb3JkZXIgcHJvcGVydHkgaXMgcHJveGllZAorCSogZXh0L29wZW5jdi9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jcHA6CisJICBjdmxhcGxhY2U6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3RjdmxhcGxhY2UgdG8gQysrIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIE9wZW5DViBlbGVtZW50cywgYW5kCisJICBzdXBwb3J0IG9mIHRoZSBuZXcgMi40LjExIEFQSS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0xMCAxNjo1NzozNiArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuYzoKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwOgorCSAgY3ZlcXVhbGl6ZWhpc3Q6IFN3aXRjaCB0byBDKysKKwkgIFN3aXRjaCBnc3RjdmVxdWFsaXplaGlzdCB0byBDKysgZm9yIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgT3BlbkNWIGVsZW1lbnRzLAorCSAgYW5kIHN1cHBvcnQgb2YgdGhlIG5ldyAyLjQuMTEgQVBJLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTEwIDE0OjEwOjMyICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuY3BwOgorCSogZXh0L29wZW5jdi9nc3RjdmVyb2RlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZXJvZGUuY3BwOgorCSAgY3Zlcm9kZTogU3dpdGNoIHRvIEMrKworCSAgU3dpdGNoIGdzdGN2ZXJvZGUgdG8gQysrIGZvciBjb25zaXN0ZW5jeSB3aXRoIG90aGVyIE9wZW5DViBlbGVtZW50cywgYW5kCisJICBzdXBwb3J0IG9mIHRoZSBuZXcgMi40LjExIEFQSS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wOCAxNDo0NjoxMCAtMDcwMCAgUmV5bmFsZG8gSC4gVmVyZGVqbyBQaW5vY2hldCA8cmV5bmFsZG9Ab3NnLnNhbXN1bmcuY29tPgorCisJKiBzeXMvZHZiL3BhcnNlY2hhbm5lbHMuYzoKKwkgIGR2Yjogc2ltcGxpZnkgWkFQIGZpbGUgZm9ybWF0IHBhcnNlcgorCSAgU2ltcGxpZnkgc3RhdGUgaGFuZGluZywgZHJvcCB1bm5lZWRlZCBsb2NhbCB2YXJzLCBldGMuCisKKzIwMTUtMTAtMDcgMTQ6MjI6NDYgKzAxMDAgIEZsb3JpbiBBcG9zdG9sIDxmbG9yaW4uYXBvc3RvbEBvcmVnYW4ubmV0PgorCisJKiBleHQvZGFzaC9nc3RtcGRwYXJzZXIuYzoKKwkgIGRhc2hkZW11eDogZml4ZWQgaGFzX25leHRfcGVyaW9kCisJICBnc3RfbXBkX2NsaWVudF9oYXNfbmV4dF9wZXJpb2Qgbm93IGNhbGxzIGdzdF9tcGRfY2xpZW50X3NldHVwX21lZGlhX3ByZXNlbnRhdGlvbgorCSAgdG8gcmVmcmVzaCB0aGUgcGVyaW9kIGluZm9ybWF0aW9uLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjE4NgogCiAyMDE1LTEwLTA3IDA4OjQ4OjE1ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgogCkBAIC02NzAsMTMgKzk1OTksMTggQEAKIAkgIGZvcm1hdHRlciBpcyBiZWluZyB1c2VkIGluIGxvZ3MuIENoYW5naW5nIGFsbCB0aG9zZSB0byBpbnQ2NAogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjA2NQogCi0yMDE1LTEwLTA3IDE0OjIyOjQ2ICswMTAwICBGbG9yaW4gQXBvc3RvbCA8ZmxvcmluLmFwb3N0b2xAb3JlZ2FuLm5ldD4KKzIwMTUtMTAtMDYgMjE6MjM6MTEgKzA1MzAgIE5pcmJoZWVrIENoYXVoYW4gPG5pcmJoZWVrQGNlbnRyaWN1bGFyLmNvbT4KIAotCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmM6Ci0JICBkYXNoZGVtdXg6IGZpeGVkIGhhc19uZXh0X3BlcmlvZAotCSAgZ3N0X21wZF9jbGllbnRfaGFzX25leHRfcGVyaW9kIG5vdyBjYWxscyBnc3RfbXBkX2NsaWVudF9zZXR1cF9tZWRpYV9wcmVzZW50YXRpb24KLQkgIHRvIHJlZnJlc2ggdGhlIHBlcmlvZCBpbmZvcm1hdGlvbi4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTYxODYKKwkqIGV4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYzoKKwkgIGdsdmlkZW9taXhlcjogUHJveHkgdGhlIGlnbm9yZS1lb3MgdmlkZW9hZ2dyZWdhdG9yIHByb3BlcnR5IGFzIHdlbGwKKwkgIElkZW50aWNhbCB0byBob3cgdGhlIHotb3JkZXIgcHJvcGVydHkgaXMgcHJveGllZAorCisyMDE1LTEwLTA1IDExOjIxOjA3ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiBnc3QvaWQzdGFnL2lkM3RhZy5jOgorCSAgaWQzdGFnOiBmaXggc2FtcGxlIG1lbW9yeSBsZWFrCisJICBXaGVuIGdldHRpbmcgc2FtcGxlIGZyb20gdGFnbGlzdCwgdGhlIG1lbW9yeSBpcyBub3QgYmVpbmcgZnJlZWQgcmVzdWx0aW5nIGluIG1lbW9yeSBsZWFrLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NjA3MAogCiAyMDE1LTEwLTAxIDExOjE4OjUyICswMjAwICBIYXZhcmQgR3JhZmYgPGhhdmFyZC5ncmFmZkBnbWFpbC5jb20+CiAKQEAgLTY4NCwxMSArOTYxOCwxOTEgQEAKIAkgIHJ0bXBzcmM6IHBsdWcgbWVtb3J5LWxlYWtzCiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU2MDAxCiAKKzIwMTUtMTAtMDIgMjI6NTc6MjcgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5jOgorCSogZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmg6CisJKiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYzoKKwkqIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5oOgorCSAgcmVzaW5kdmQ6IFBvcnQgdG8gbmV3IEdMaWIgbXV0ZXgvY29uZCBBUEkKKworMjAxNS0xMC0wMiAyMjoyNDoxOSArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogY29uZmlndXJlLmFjOgorCSogZXh0L2hscy9tM3U4LmM6CisJKiBleHQvbGliZGUyNjUvbGliZGUyNjUtZGVjLmM6CisJKiBnc3QtbGlicy9nc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oOgorCSogZ3N0L3ZpZGVvbWVhc3VyZS9nc3R2aWRlb21lYXN1cmVfc3NpbS5jOgorCSAgVXBkYXRlIEdMaWIgZGVwZW5kZW5jeSB0byAyLjQwLjAKKworMjAxNS0xMC0wMiAxOTowMjoyNiArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlLmNwcDoKKwkgIGN2ZGlsYXRlOiBDaGFuZ2UgZ3N0Y3ZkaWxhdGUgdG8gQysrCisJICBDaGFuZ2UgdGhlIGdzdGN2ZGlsYXRlLmMgZmlsZSBleHRlbnNpb24gdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZSBmb3IKKwkgIGNvbnNpc3RlbmN5IHdpdGggb3RoZXIgZWxlbWVudHMgb2Ygb3BlbmN2IGFuZCBiZWNhdXNlIE9wZW5jdiBub3Qgc3VwcG9ydCBDCisJICBsYW5ndWFnZSBpbiBuZXcgQVBJIDIuNC4xMS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wMiAxODo1MDo0NSArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuYzoKKwkqIGV4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5jcHA6CisJICBza2luZGV0ZWN0OiBDaGFuZ2UgZ3N0c2tpbmRldGVjdCB0byBDKysKKwkgIENoYW5nZSB0aGUgZmlsZSBleHRlbnNpb24gdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZSBmb3IgY29uc2lzdGVuY3kKKwkgIHdpdGggb3RoZXIgZWxlbWVudHMgb2Ygb3BlbmN2IGFuZCBiZWNhdXNlIE9wZW5jdiBub3Qgc3VwcG9ydCBDIGxhbmd1YWdlIGluCisJICBuZXcgQVBJIDIuNC4xMS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0wOC0zMSAxNzo0MzoyNiArMDIwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuaDoKKwkgIG9wZW5jdnV0aWxzOiBhZGQgZXh0ZXJuIEMsIGZvciB0aGUgb3BlbmN2IGVsZW1lbnRzIHdvcmsuCisJICBBZGRpbmcgR19CRUdJTl9ERUNMUyBhbmQgR19FTkRfREVDTFMgdG8gZ3N0b3BlbmN2dXRpbHMuaAorCSAgdG8gYWxsb3cgQy1zdHlsZSBsaW5raW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDE0OAorCisyMDE1LTEwLTAyIDE4OjQwOjQzICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdHJldGluZXguY3BwOgorCSAgcmV0aW5leDogdXNlIE9wZW5DViBuYW1lc3BhY2UKKwkgIEFzIHBhcnQgb2YgdGhlIHN3aXRjaCB0byBDKyssIHVzZSB0aGUgbmV3IE9wZW5DViBmdW5jdGlvbnMuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MTQ4CisKKzIwMTUtMTAtMDIgMTg6MTA6MzIgKzAxMDAgIFZhbmVzc2EgQ2hpcGlycsOhcyBOYXZhbMOzbiA8dmNoaXBpcnJhczZAZ21haWwuY29tPgorCisJKiBleHQvb3BlbmN2L01ha2VmaWxlLmFtOgorCSogZXh0L29wZW5jdi9nc3RjdnNtb290aC5jOgorCSogZXh0L29wZW5jdi9nc3RjdnNtb290aC5jcHA6CisJICBjdnNtb290aDogcG9ydCB0byBDKysKKwkgIENoYW5nZSB0aGUgZmlsZSBleHRlbnNpb24gdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZSBmb3IgY29uc2lzdGVuY3kKKwkgIHdpdGggb3RoZXIgZWxlbWVudHMgb2Ygb3BlbmN2IGFuZCBiZWNhdXNlIE9wZW5jdiBub3Qgc3VwcG9ydCBDIGxhbmd1YWdlIGluCisJICBuZXcgQVBJIDIuNC4xMS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wMiAxNzo0ODo0NyArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvTWFrZWZpbGUuYW06CisJKiBleHQvb3BlbmN2L2dzdHJldGluZXguYzoKKwkqIGV4dC9vcGVuY3YvZ3N0cmV0aW5leC5jcHA6CisJICByZXRpbmV4OiBDaGFuZ2UgcmV0aW5leCB0byBDKysKKwkgIENoYW5nZSB0aGUgZ3N0cmV0aW5leC5jIGZpbGUgdG8gY3BwIGFuZCBhZGQgaXQgaW50byBNYWtlZmlsZS4KKwkgIEl0IGlzIG5lY2Vzc2FyeSB0byBtaWdyYXRlIHRoZSByZXRpbmV4IGVsZW1lbnQgdG8gQysrLAorCSAgYmVjYXVzZSBuZXcgT3BlbmN2IEFQSSBsZWF2ZXMgb2Jzb2xldGUgZnVuY3Rpb25zIGxpa2UgY3ZTbW9vdGguCisJICBUaGlzIGVsZW1lbnQgdXNlcyB0aGlzIGZ1bmN0aW9uLgorCSAgWW91IGNhbiBzZWUgaW4gdGhpcyBsaW5rOgorCSAgaHR0cDovL2RvY3Mub3BlbmN2Lm9yZy9tb2R1bGVzL2ltZ3Byb2MvZG9jL2ZpbHRlcmluZy5odG1sPworCSAgaGlnaGxpZ2h0PWN2c21vb3RoI3ZvaWQgY3ZTbW9vdGgoY29uc3QgQ3ZBcnIqIHNyYywgQ3ZBcnIqIGRzdCwKKwkgIGludCBzbW9vdGh0eXBlLCBpbnQgc2l6ZTEsIGludCBzaXplMiwgZG91YmxlIHNpZ21hMSwgZG91YmxlIHNpZ21hMikKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQxNDgKKworMjAxNS0xMC0wMiAxNzoxODozMyArMDEwMCAgVmFuZXNzYSBDaGlwaXJyw6FzIE5hdmFsw7NuIDx2Y2hpcGlycmFzNkBnbWFpbC5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaDoKKwkgIGhhbmRkZXRlY3Q6IHJlbW92ZSBhbm90aGVyIHVudXNlZCB2YXJpYWJsZQorCSAgTWVtb3J5IGlzIHJlc2VydmVkIGZvciB0aGlzIHZhcmlhYmxlIGFuZCB0aGVuIHJlbGVhc2VkIHdpdGhvdXQgbWFraW5nIGFueQorCSAgdXNlIG9mIGl0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MjUyOAorCisyMDE1LTEwLTAyIDE3OjAyOjQyICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwOgorCSogZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0Lmg6CisJICBoYW5kZGV0ZWN0OiBDdlBvaW50IHZhbHVlcyBjaGFuZ2VkIGZyb20gdWludCB0byBpbnQKKwkgIFRoZSB4IGFuZCB5IHZhbHVlcyBvZiBDdlBvaW50IGNoYW5nZWQgZnJvbSB1bnNpZ25lZCB0byBzaWduZWQgaW50ZWdlcnMKKwkgIGluIE9wZW5DViAyLjQuMTEuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNTI4CisKKzIwMTUtMTAtMDIgMTY6MjI6MzYgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHA6CisJKiBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaDoKKwkgIGhhbmRkZXRlY3Q6IG5lZWQgdG8gbWlncmF0ZSB0byBDKysKKwkgIFRoZSBjYXNjYWRlIGNsYXNzaWZpZXIgY2hhbmdlcyBpdHMgc3RydWN0dXJlIG9uIG5ldyB2ZXJzaW9uIG9mIE9wZW5DViAyLjQuMTEuCisJICBJdCBpcyBuZWVkIHRvIG1pZ3JhdGUgdG8gQysrIHRvIHV0aWxpemUgdGhlIG5ldyBsb2FkIG1ldGhvZCBvZiBPcGVuQ1Ygd2hpY2gKKwkgIGFsbG93cyB0byBsb2FkIHRoZSBvbGQgYW5kIG5ldyBjbGFzc2lmaWVycy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI1MjgKKworMjAxNS0xMC0wMiAxNjowMToyOSArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9NYWtlZmlsZS5hbToKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jOgorCSogZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmNwcDoKKwkgIGhhbmRkZXRlY3Q6IENoYW5nZSBnc3RoYW5kZGV0ZWN0IHRvIEMrKworCSAgQ2hhbmdlIHRoZSBnc3RoYW5kZGV0ZWN0LmMgZmlsZSB0byBjcHAgYW5kIGFkZCBpdCBpbnRvIE1ha2VmaWxlLgorCSAgSXQgaXMgbmVjZXNzYXJ5IHRvIG1pZ3JhdGUgdGhlIGhhbmRkZXRlY3QgcGx1Z2luIHRvIEMrKywKKwkgIGluIG9yZGVyIHRvIGxvYWQgbmV3IGFuZCBvbGQgY2xhc3NpZmllcnMsIHRvIG1ha2UgaGFuZGRldGVjdCB3b3JrCisJICB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIE9wZW5jdi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTI1MjgKKwogMjAxNS0xMC0wMiAxNzowNToxMSArMDIwMCAgUG9sb2Nob25fc3RyZWV0IDxwb2xvY2hvbnN0cmVldEBnbXguZnI+CiAKIAkqIGV4dC9kdGxzL2dzdGR0bHNkZWMuYzoKIAkgIGR0bHM6IGZpeCBwcmludGYgZm9ybWF0IG9uIHdpbjMyCiAKKzIwMTUtMDgtMjAgMTY6MDM6MjkgKzA5MDAgIFZpbmVldGggVE0gPHZpbmVldGgudG1Ac2Ftc3VuZy5jb20+CisKKwkqIGdzdC9pbnRlci9nc3RpbnRlcnRlc3QuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvZ3N0LWNhbWVyYWJpbjItdGVzdC5jOgorCSogdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL3BhcnNlLWpwZWcuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvZnh0ZXN0LmM6CisJKiB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L3BpeGJ1ZmRyb3AuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL29wZW5jdi9nc3RmYWNlZGV0ZWN0X3Rlc3QuYzoKKwkqIHRlc3RzL2V4YW1wbGVzL3BsYXlvdXQuYzoKKwkqIHRvb2xzL2dzdC1hcHAtbWFrZXI6CisJICBnc3RyZWFtZXI6IGJhZDogRml4IG1lbW9yeSBsZWFrcyB3aGVuIGNvbnRleHQgcGFyc2UgZmFpbHMKKwkgIFdoZW4gZ19vcHRpb25fY29udGV4dF9wYXJzZSBmYWlscywgY29udGV4dCBhbmQgZXJyb3IgdmFyaWFibGVzIGFyZSBub3QgZ2V0dGluZyBmcmVlJ2QKKwkgIHdoaWNoIHJlc3VsdHMgaW4gbWVtb3J5IGxlYWtzLiBGcmVlJ2luZyB0aGUgc2FtZS4KKwkgIEFuZCByZXBsYWNpbmcgZ19lcnJvcl9mcmVlIHdpdGggZ19jbGVhcl9lcnJvciwgd2hpY2ggY2hlY2tzIGlmIHRoZSBlcnJvciBiZWluZyBwYXNzZWQKKwkgIGlzIG5vdCBOVUxMIGFuZCBzZXRzIHRoZSB2YXJpYWJsZSB0byBOVUxMIG9uIGZyZWUnaW5nLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1Mzg1NAorCisyMDE1LTA2LTI1IDE5OjE3OjM2ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYzoKKwkgIGFzc3JlbmRlcjogb3B0aW1pemUgYmxlbmRpbmcKKwkgIFNraXAgZW1wdHkgc291cmNlIHBpeGVscyB3aGVuIGJsZW5kaW5nIGFuIGltYWdlLiBUaGVyZSBjYW4gYmUgaHVuZHJlZHMKKwkgIG9mIGltYWdlcyB0byBibGVuZCBhdCBlYWNoIGZyYW1lLCBzbyB0aGlzIGJyaW5ncyBhIG5pY2UgcGVyZm9ybWFuY2UKKwkgIGJvb3N0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1MzgyMQorCisyMDE1LTA4LTE5IDE3OjE4OjMxICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYzoKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmg6CisJICBhc3NyZW5kZXI6IFVzZSB0aGUgd2luZG93IHNpemUgZnJvbSBkb3duc3RyZWFtCisJICBUaGlzIGFsbG93cyByZW5kZXJpbmcgdGhlIG92ZXJsYXkgYXQgYSByZXNvbHV0aW9uIG1hdGNoaW5nIHRoZSB2aWRlbworCSAgcmVzb2x1dGlvbi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4MjQKKworMjAxNC0wOS0wNCAxODoxNjowMCArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5oOgorCSAgYXNzcmVuZGVyOiBJbXByb3ZlIG5lZ290aWF0aW9uCisJICBUaGlzIGlzIG1vc3RseSBhIGNvcHkvcGFzdGUgb2YgdGhlIG5lZ290aWF0aW9uIGZ1bmN0aW9uIGluCisJICBiYXNldGV4dG92ZXJsYXksIHdoaWNoIHdhcyBpbXByb3ZlZCByZWNlbnRseSB0byBoYW5kbGUgbWFueSBtb3JlIGNhc2VzLgorCSAgVGhpcyB3aWxsIGFsbG93IHVzIHRvIG5lZ290aWF0ZSBhIHdpbmRvdyBzaXplIHdpdGggZG93bnN0cmVhbS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4MjQKKworMjAxNS0wOC0xOSAxMzo0NDozNSArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6CisJICBhc3NyZW5kZXI6IHJlbmRlciB0aGUgc3VidGl0bGVzIHdpdGggdGhlIHByb3BlciBhc3BlY3QKKwkgIFRoaXMgYnVtcHMgdGhlIGxpYmFzcyB2ZXJzaW9uIHJlcXVpcmVtZW50IHRvIDAuMTAuMi4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4MjQKKworMjAxNS0wOS0wNyAxNjoyMDo0MiArMDEwMCAgRmxvcmluIEFwb3N0b2wgPGZsb3Jpbi5hcG9zdG9sQG9yZWdhbi5uZXQ+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmM6CisJICBkYXNoZGVtdXg6IHRlc3Q6IGFkZGVkIHVuaXQgdGVzdCBmb3IgcHJlc2VudGF0aW9uIHRpbWUgb2Zmc2V0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUyNDA5CisKIDIwMTUtMDktMzAgMTA6Mjc6MDYgLTA3MDAgIEFsZWl4IENvbmNoaWxsbyBGbGFxdcOpIDxhbGVpeEBvYmxvbmcuY29tPgogCiAJKiBjb25maWd1cmUuYWM6CkBAIC03MDcsMTMgKzk4MjEsMzggQEAKIAkgIGRhc2hkZW11eDogQ29ycmVjdGx5IGFzc2lnbiBlYXJsaWVzdCBwdHMgaW5zdGVhZCBvZiBvdmVycmlkaW5nIGl0IHdpdGggZmlyc3Qgb2Zmc2V0CiAJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1ODI0CiAKLTIwMTUtMDktMzAgMTk6MDE6MjEgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisyMDE1LTA5LTE1IDAzOjE0OjM3ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CiAKLQkqIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvYWdncmVnYXRvci5jOgotCSAgYXVkaW9hZ2dyZWdhdG9yOiBTZWxlY3QgdGhlIGluaXRpYWwgb2Zmc2V0IGJhc2VkIG9uIHRoZSBzdGFydCBzZWdtZW50IHBvc2l0aW9uCi0JICBpbnN0ZWFkIG9mIGFsd2F5cyB1c2luZyAwLiBPdGhlcndpc2Ugd2UgbWlnaHQgb3V0cHV0IGEgbG90IG9mIHNpbGVuY2UgaW4gdGhlCi0JICBiZWdpbm5pbmcgaW5zdGVhZCBvZiBvdXRwdXR0aW5nIGZyb20gdGhlIHJlbGV2YW50IHBvc2l0aW9uLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTYyMworCSogY29uZmlndXJlLmFjOgorCSogZXh0L3F0L2dzdHBsdWdpbi5jYzoKKwkqIGV4dC9xdC9nc3Rxc2d0ZXh0dXJlLmg6CisJKiBleHQvcXQvZ3N0cXRzaW5rLmNjOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGV4dC9xdC9xdGl0ZW0uaDoKKwkgIHF0OiBhZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcgb24gb3N4L2lvcworCSAgSW5jbHVkaW5nOgorCSAgLSBOZWNlc3NhcnkgY29uZmlndXJlIGNoZWNrcworCSAgLSBOZWNlc3NhcnkgY29tcGlsZSB0aW1lIHBsYXRmb3JtIGNoZWNrcworCSAgLSBOZWNlc3NhcnkgcnVudGltZSBxdCBpT1MvT1NYIHBsYXRmb3JtIGRldGVjdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTEwMAorCisyMDE1LTA5LTI4IDExOjI5OjI5ICswMTAwICBKb2huIFNsYWRlIDxqb2huQGp0ZXMubmV0PgorCisJKiBleHQvcnRtcC9nc3RydG1wc3JjLmM6CisJICBydG1wc3JjOiBGaXggaW5kZW50YXRpb24gd2l0aCBnc3QtaW5kZW50CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzMyCisKKzIwMTUtMTAtMDIgMTE6MzE6NTAgKzAzMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtOgorCSAgYXVkaW92aXN1YWxpemVyczogRml4IG5vZGlzdF9IRUFERVJTCisKKzIwMTUtMTAtMDIgMTQ6NTY6NDEgKzEwMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbToKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYzoKKwkgIFJlbW92ZSBiYXNlYXVkaW92aXN1YWxpemVyIHRlc3QuCisJICBUaGUgYmFzZSBjbGFzcyBoYXMgbW92ZWQgaW50byBnc3QtcGx1Z2lucy1iYXNlCiAKIDIwMTUtMDktMzAgMTk6MDU6MzUgKzAyMDAgIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAKQEAgLTcyOCw2ICs5ODY3LDYzMiBAQAogCSAgYmVmb3JlIGFueXdheSBiZWNhdXNlIG9mIGEgbWlzdGFrZS4KIAkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU2MjMKIAorMjAxNS0wOS0zMCAxOTowMToyMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJICBhdWRpb2FnZ3JlZ2F0b3I6IFNlbGVjdCB0aGUgaW5pdGlhbCBvZmZzZXQgYmFzZWQgb24gdGhlIHN0YXJ0IHNlZ21lbnQgcG9zaXRpb24KKwkgIGluc3RlYWQgb2YgYWx3YXlzIHVzaW5nIDAuIE90aGVyd2lzZSB3ZSBtaWdodCBvdXRwdXQgYSBsb3Qgb2Ygc2lsZW5jZSBpbiB0aGUKKwkgIGJlZ2lubmluZyBpbnN0ZWFkIG9mIG91dHB1dHRpbmcgZnJvbSB0aGUgcmVsZXZhbnQgcG9zaXRpb24uCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NjIzCisKKzIwMTUtMTAtMDEgMTU6MzU6MzcgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGRvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbToKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmM6CisJKiBnc3QvYXVkaW92aXN1YWxpemVycy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaDoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuaDoKKwkqIGdzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5oOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5oOgorCSogZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmg6CisJICBhdWRpb3Zpc3VhbGl6ZXJzOiBtZXJnZSBhdWRpb3Zpc3VhbGl6ZXIgYmFzZSBjbGFzc2VzCisJICBUaGVzZSBwbHVnaW5zIG5vdyB1c2UgdGhlIGF1ZGlvdmlzdWFsaXplciBiYXNlIGNsYXNzIGluIHBidXRpbHMKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NDI4NzUKKworMjAxNS0xMC0wMiAwMTowMTo0MiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06CisJKiBnc3QtbGlicy9nc3QvZ2wvZ2wuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkZWJ1Zy5oOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmg6CisJICBnbDogbW92ZSBkZWJ1Z2dpbmcgcmVsYXRlZCBmdW5jdGlvbnMgdG8gdGhlaXIgb3duIGZpbGUKKworMjAxNS0xMC0wMSAyMzoyMDoxOSArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ2wvZ3N0Z2xjb2xvcnNjYWxlLmM6CisJICBnbGNvbG9yc2NhbGU6IHVzZSBnbGJhc2VmaWx0ZXIgdmZ1bmNzCisJICBVc2VzIGxlc3MgY29kZSBcby8KKwkgIEZpeGVzIGxlZ2FjeSBvcGVuZ2wgcmVuZGVyaW5nIFxvLworCisyMDE1LTA5LTE2IDEyOjUwOjQ2ICswMjAwICBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgorCisJKiBleHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmM6CisJICBtc3NkZW11eDogYWN0aXZhdGUgc3RyZWFtcyBiZWZvcmUgY29uZmlndXJpbmcgYml0cmF0ZQorCSAgRG9pbmcgdGhlIGNvbnRyYXJ5IGhhcyBubyBlZmZlY3QgYW5kIHRoZSBjb25zZXF1ZW5jZSBpcyB0aGF0IHBsYXliYWNrCisJICB3aWxsIHN0YXJ0IHdpdGggdGhlIGxvd2VzdCBiaXRyYXRlIGV2ZW4gaWYgd2UgY2FuIGFscmVhZHkgaGFuZGxlCisJICBoaWdoZXIgYml0cmF0ZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTUxMDgKKworMjAxNS0wNi0wOCAxNTozMzoyMiArMDIwMCAgUGhpbGlwcGUgTm9ybWFuZCA8cGhpbG5AaWdhbGlhLmNvbT4KKworCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5oOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jOgorCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oOgorCSAgbXNzZGVtdXg6IFBsYXlSZWFkeSBXUk0gcGFyc2luZyBzdXBwb3J0CisJICBJZiB0aGUgbWFuaWZlc3QgaGFzIGEgUHJvdGVjdGlvbkhlYWRlciBub2RlIHRoZW4gcGFyc2UgaXQgYW5kIGVtaXQKKwkgIHByb3RlY3Rpb24gZXZlbnRzIGFjY29yZGluZyB0byB0aGUgc3BlY2lmaWVkIHByb3RlY3Rpb24gU3lzdGVtSUQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUzNjEzCisKKzIwMTUtMDktMDMgMTU6MTE6MDAgKzAyMDAgIFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+CisKKwkqIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYzoKKwkgIG1zc2RlbXV4OiBhbHdheXMgdXNlIHRpbWVzY2FsZSBmb3IgZ3N0IHRpbWVzdGFtcCBjYWxjdWxhdGlvbgorCSAgTm90IGRvaW5nIHRoaXMgY2FuIGxlYWQgdGhlIGRlbXV4ZXIgdG8gYXR0ZW1wdCBkb3dubG9hZGluZyBmcmFnbWVudHMKKwkgIGZvciBhbiBpbnZhbGlkIHN0YXJ0IHRpbWUuIFRoZSBzZXJ2ZXIgd291bGQgdGhlbiBzZW5kIGEgSFRUUAorCSAgUHJlY29uZGl0aW9uIGZhaWxlZCBlcnJvciwgdGhlIGRlbXV4ZXIgd291bGQgdHJ5IHNvbWUgbW9yZSB0aW1lcyB0bworCSAgZG93bmxvYWQgdGhlIGludmFsaWQgZnJhZ21lbnQgYW5kIGV2ZW50dWFsbHkgZXJyb3Igb3V0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDUyMworCisyMDE1LTA5LTMwIDA4OjM2OjE1ICswMjAwICBBbnRvaW5lIEphY291dG90IDxhamFjb3V0b3RAZ25vbWUub3JnPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06CisJICBnbDogUGFzcyBHTF9DRkxBR1MgdG8gZy1pci1zY2FubmVyCisJICBUaGlzIHVuYnJlYWtzIGJ1aWxkaW5nIHdoZW4gc29tZSBoZWFkZXJzIGFyZSB1bmRlciBhIG5vbi1zdGFuZGFyZCBwYXRoLgorCSAgZS5nLiAvdXNyL1gxMVI2L2luY2x1ZGUgYXMgb24gT3BlbkJTRC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU4NTAKKworMjAxNS0wOS0zMCAwMDo0NDoxNiAtMDcwMCAgQWxlaXggQ29uY2hpbGxvIEZsYXF1w6kgPGFsZWl4QG9ibG9uZy5jb20+CisKKwkqIHN5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtOgorCSAgYXBwbGVtZWRpYTogZGlzdCBtaXNzaW5nIGhlYWRlciBmaWxlcworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTg1MgorCisyMDE1LTA5LTMwIDEzOjEzOjE5ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgorCisJKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hdWRpb2ludGVybGVhdmUuYzoKKwkgIGF1ZGlvaW50ZXJsZWF2ZTogdHlwZWNhc3QgYml0LW1hc2sgdG8gZ3VpbnQ2NCB0byBmaXggc2VnbWVudGF0aW9uIGZhdWx0CisJICBXaGlsZSBjcmVhdGluZyBjYXBzIGluIGF1ZGlvaW50ZXJsZWF2ZSB0ZXN0cywgYml0bWFzayBpcyBiZWluZyBzZXQgYXMgMHg5CisJICBUaGlzIGlzIHJlc3VsdGluZyBpbiBzZWdtZW50YXRpb24gZmF1bHQuIEZpeCB0aGUgc2FtZSBieSB0eXBlY2FzdGluZyB0byBndWludDY0CisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1ODQwCisKKzIwMTUtMDktMzAgMTU6MTc6MzggKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jOgorCSAgZ2xjb250ZXh0OiBmaXh1cCBzdHJzdHIgbGVuZ3RocyBzbyB3ZSBkb24ndCBvdmVycnVuCisKKzIwMTUtMDktMzAgMTM6MzE6NTAgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dDoKKwkqIGV4dC9nbC9nc3RnbHVwbG9hZGVsZW1lbnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5jOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmg6CisJKiB0ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmM6CisJICBnbHVwbG9hZDogcmVtb3ZlIHVzZWxlc3MgcmVsZWFzZV9idWZmZXIKKwkgIEl0J3MgYSBsZWZ0b3ZlciBmcm9tIHdoZW4gd2Ugd2VyZW4ndCBvdXRwdXR0aW5nIEdzdEJ1ZmZlcidzIGFuZAorCSAgcmV0dXJuaW5nIHJhdyB0ZXh0dXJlIGlkJ3MuCisKKzIwMTUtMDktMzAgMDE6NTM6NTMgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkgIGdsdXRpbHM6IHVzZSBnc3RfZWxlbWVudF9zZXRfY29udGV4dCBmb3Igc2V0dGluZyBkaXNwbGF5L290aGVyX2NvbnRleHQKKwkgIDEuIFNvIHdlIGdldCB0cmFja2luZyBpbnNpZGUgR3N0RWxlbWVudCBwcm9wZXJseSB3aGVuIGUuZy4gYWRkaW5nIHRvIGEgYmluCisJICAyLiBSZW1vdmVzIHJlZHVuZGFudCBjb2RlLiAgTm93IG9ubHkgb25lIHBsYWNlIHdoZXJlCisJICBHc3RDb250ZXh0LT5Hc3RHTERpc3BsYXkvR3N0R0xDb250ZXh0IHRyYW5zZm9ybWF0aW9uIG9jY3VycworCSAgMy4gRml4ZXMgYSBtZW1vcnkgbGVhayBpbiB0aGUgcHJvY2VzcworCSAgNC4gTWFrZSB0aGUgcmV0cmlldmFsIG9mIGRlYnVnIGNhdGVnb3JpZXMgdGhyZWFkIHNhZmUKKworMjAxNS0wOS0yOSAyMjo1Nzo1MiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ3RrL2d0a2dzdGdsd2lkZ2V0LmM6CisJICBndGs6IGFkZCBzb21lIEdMIGRlYnVnIHN0YXRlbWVudHMgdG8gc2hvdyB1cCBpbiBHTCB0cmFjZXMKKworMjAxNS0wOC0zMCAxNzoxMTozMSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkqIGV4dC9obHMvZ3N0bTN1OHBsYXlsaXN0Lmg6CisJICBobHM6IG0zdThwbGF5bGlzdDogbW9yZSBjbGVhbi11cHMKKwkgIFJlbW92ZSB1bnVzZWQgZnVuY3Rpb25zOyBtb3ZlIEdzdE0zVTggc3RydWN0IGludG8gLmMgZmlsZSwKKwkgIGFuZCBpbmRlbnQgdGhlIGhlYWRlciBzbyBpdCdzIG5pY2UgdG8gcmVhZC4KKworMjAxNS0wOC0zMCAxNzowMToxMyArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkgIGhsczogbTN1OHBsYXlsaXN0OiBmaXggc2lsbHkgcXVldWUgaXRlcmF0aW9uIGNvZGUKKworMjAxNS0wOC0zMCAxNjo0MDowMiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkgIGhsczogbTN1OHBsYXlsaXN0OiBtb3JlIG1pbm9yIHBsYXlsaXN0X3JlbmRlcigpIGNsZWFuLXVwcworCSAgTW92ZSB0aGUgVEFHIGRlZmluZXMgZGlyZWN0bHkgaW50byB0aGUgY29kZSwgbm90IHN1cmUgd2hhdAorCSAgdGhlaXIgcHVycG9zZXMgaXMsIHRoZXNlIGFyZSBwcmludGYgZm9ybWF0IHN0cmluZ3Mgc28gaGF2aW5nCisJICB0aGVtIGRpcmVjdGx5IGFzIGxpdGVyYWxzIGluIHRoZSBjb2RlIHdoZXJlIHRoZXkncmUgdXNlZAorCSAgbWFrZXMgdGhlIGNvZGUgZWFzaWVyIHRvIGZvbGxvdy4KKworMjAxNS0wOC0zMCAxNjozNDoyNiArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYzoKKwkgIGhsczogbTN1OHBsYXlsaXN0OiBtb3ZlIGVudHJ5IHJlbmRlcmluZyBpbnRvIHJlbmRlcl9wbGF5bGlzdCgpCisJICBNYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gZm9sbG93IGFuZCBhdm9pZHMgdW5uZWNlc3NhcnkgdGVtcG9yYXJ5CisJICBzdHJpbmdzLCBzaW5jZSB3ZSBjYW4ganVzdCBhcHBlbmQgdG8gdGhlIHBsYXlsaXN0IEdTdHJpbmcgZGlyZWN0bHkuCisKKzIwMTUtMDgtMzAgMTY6MjQ6NDEgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9obHMvZ3N0bTN1OHBsYXlsaXN0LmM6CisJKiBleHQvaGxzL2dzdG0zdThwbGF5bGlzdC5oOgorCSAgaGxzOiBtM3U4cGxheWxpc3Q6IHNpbXBsaWZ5IGdzdF9tM3U4X3BsYXlsaXN0X3JlbmRlcigpCisJICBSZW1vdmUgcGxheWxpc3Rfc3RyIEdTdHJpbmcgdmFyaWFibGUgZnJvbSBHc3RNM1U4UGxheWxpc3Qgc3RydWN0LAorCSAgc2luY2UgaXQncyBvbmx5IHVzZWQgdGVtcG9yYXJpbHkgaW4gcGxheWxpc3RfcmVuZGVyKCkuIE1pZ2h0IGp1c3QKKwkgIGFzIHdlbGwga2VlcCBpdCBsb2NhbCB0aGVuLgorCisyMDE1LTA4LTMwIDE1OjU1OjUxICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvaGxzL01ha2VmaWxlLmFtOgorCSogZXh0L2hscy9nc3RmcmFnbWVudGVkLmg6CisJKiBleHQvaGxzL2dzdGhsc3NpbmsuYzoKKwkqIGV4dC9obHMvZ3N0bTN1OHBsYXlsaXN0Lmg6CisJICBobHM6IHJlbW92ZSB1bnVzZWQgbWFjcm8gYW5kIGRpcmVjdCBnaW8gdXNhZ2UKKworMjAxNS0wOS0zMCAwMDozNjoxNCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L21wZWd0c211eC9tcGVndHNtdXguYzoKKwkgIG1wZWd0c211eDogZml4IGRvd25zdHJlYW0ga2V5IHVuaXQgZXZlbnRzIGhhbmRsaW5nIHdpdGggaGxzc2luaworCSAgVGhlIGJ1ZmZlciB0aW1lc3RhbXBzIGluIHRoZSBjb2xsZWN0IGZ1bmN0aW9uIHdpbGwgYWxyZWFkeSBiZQorCSAgcnVubmluZyB0aW1lLCBkb24ndCB0cnkgdG8gY29udmVydCB0aGVtIGFnYWluIHRvIHJ1bm5pbmcgdGltZSwKKwkgIHRoaXMgd291bGQgeWllbGQgQ0xPQ0tfVElNRV9OT05FIG5vdyB0aGF0IHRoZSBzZWdtZW50IGlzIHNoaWZ0ZWQKKwkgIHRvIGFjY291bnQgZm9yIG5lZ2F0aXZlIGR0cy4KKwkgIFRoaXMgZml4ZXMgeDI2NGVuYyAhIG1wZWd0c211eCAhIGhsc3NpbmssIHdoaWNoIHdhcyBicm9rZW4KKwkgIGJlY2F1c2UgbXBlZ3RzbXV4IHdvdWxkIHNlbmQgYSBkb3duc3RyZWFtIGtleSB1bml0IGV2ZW50IHdpdGgKKwkgIHJ1bm5pbmcgdGltZSBOT05FIGFuZCB0aGVuIGhsc3Npbmsgd291bGQgaW1tZWRpYXRlbHkgc2VuZAorCSAgYW5vdGhlciBvbmUgdXBzdHJlYW0gYW5kIGl0IHdvdWxkIGp1c3QgYmUgYSBmbG9vZCBvZiBmb3JjZQorCSAga2V5ZnJhbWUgZXZlbnRzIGluIGJvdGggZGlyZWN0aW9ucyBhZnRlciB0aGUgZmlyc3Qgb25lLiBUaGlzCisJICB3b3VsZCB0aGVuIGJyZWFrIGhsc3NpbmsgYmVjYXVzZSBpdCB1c2VzIG11bHRpZmlsZXNpbmsgaW4KKwkgIG5leHQtZmlsZT1rZXktdW5pdC1ldmVudCBtb2RlLCBhbmQgc3RhcnRpbmcgYSBuZXcgZmlsZSBhZnRlcgorCSAgZXZlcnkgZmV3IGtCIGRvZXMgbm90IHdvcmsgd2VsbCBmb3IgSExTLgorCisyMDE1LTA4LTIwIDE3OjM1OjA0ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzYmdAb3NnLnNhbXN1bmcuY29tPgorCisJKiBleHQvb3BlbmN2L2dzdGN2ZXJvZGUuYzoKKwkgIG9wZW5jdjogZXJvZGU6IHJlbW92ZSBub24taXAgdHJhbnNmb3JtIGZ1bmMKKwkgIFRyYW5zZm9ybSBpcyBzZXQgdG8gYmUgZG9uZSBpbiBwbGFjZSBpbiBnc3RjdmRpbGF0ZWVyb2RlLmMsIHNvIHRoZSBpbi1wbGFjZQorCSAgdHJhbnNmb3JtIGZ1bmN0aW9uIGlzIGFsd2F5cyB1c2VkIGFuZCB0aGUgb3RoZXIgaXMgcmVkdW5kYW50LiBSZW1vdmluZyBpdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4ODUKKworMjAxNS0wOC0yMCAxNzoyMzo0MCArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc0BkZWJldGhlbmNvdXJ0LmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jOgorCSAgb3BlbmN2OiBkaWxhdGU6IHJlbW92ZSBub24taXAgdHJhbnNmb3JtIGZ1bmMKKwkgIFRyYW5zZm9ybSBpcyBzZXQgdG8gYmUgZG9uZSBpbiBwbGFjZSBpbiBnc3RjdmRpbGF0ZWVyb2RlLmMsIHNvIHRoZSBpbi1wbGFjZQorCSAgdHJhbnNmb3JtIGZ1bmN0aW9uIGlzIGFsd2F5cyB1c2VkIGFuZCB0aGUgb3RoZXIgaXMgcmVkdW5kYW50LiBSZW1vdmluZyBpdC4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM4ODUKKworMjAxNS0wOS0yOSAyMDowMDowMiArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc2JnQG9zZy5zYW1zdW5nLmNvbT4KKworCSogZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmM6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jOgorCSogZXh0L29wZW5jdi9nc3RjdnNtb290aC5jOgorCSogZXh0L29wZW5jdi9nc3RjdnNvYmVsLmM6CisJKiBleHQvb3BlbmN2L2dzdHJldGluZXguYzoKKwkqIGV4dC9vcGVuY3YvZ3N0cmV0aW5leC5oOgorCSogZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmM6CisJICBvcGVuY3Y6IHVzZSBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UoKQorCSAgVXNpbmcgdGhlIGdzdF9iYXNlX3RyYW5zZm9ybSBmdW5jdGlvbiBkaXJlY3RseSB3b24ndCB3b3JrLiBOZWVkIHRvIHVzZQorCSAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlKCkuCisKKzIwMTUtMDktMjkgMTc6MDA6MjIgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jOgorCSAgaGFuZGRldGVjdDogY2hlY2sgZm9yIGhhYXIgY2FzY2FkZSBmaWxlcyBwYXRoCisJICBXaGVuIHJ1bm5pbmcgR1N0cmVhbWVyIGZyb20gdW5pbnN0YWxsZWQgc291cmNlcywgdGhlIGxvY2F0aW9uIG9mIHRoZSBoYWFyCisJICBjYXNjYWRlIGZpbGVzIHdpbGwgYmUgbG9jYWwuIENoZWNrIGlmIHJ1bm5pbmcgaW4gdW5pbnN0YWxsZWQgYW5kIHNldCB0aGUKKwkgIGZpbGUgcGF0aHMgYWNjb3JkaW5nbHkuCisKKzIwMTUtMDktMjYgMTc6MDI6MDkgKzA4MDAgIEpvaG4gQ2hhbmcgPHI5NzkyMjE1M0BnbWFpbC5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoKKwkgIGFkYXB0aXZlZGVtdXg6IHJlbW92ZSB1bnVzZWQgdmFyaWFibGUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU2NTYKKworMjAxNS0wOS0yOSAxMzozMToxOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jOgorCSAgdmlkZW9hZ2dyZWdhdG9yOiBmaXggY29tcGlsYXRpb24gd2l0aCBvbGRlciBnbGliIHZlcnNpb24KKwkgIFJlbW92ZSB3ZWlyZCB1c2Ugb2YgcHJpdmF0ZSBndHlwZSBkZWZpbmVzIGFuZCBmaXggY29tcGlsYXRpb24KKwkgIHdpdGggb2xkZXIgZ2xpYiB2ZXJzaW9ucyBzdWNoIGFzIDIuMzYuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU0CisKKzIwMTUtMDktMjkgMTM6NTI6NDcgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNiZ0Bvc2cuc2Ftc3VuZy5jb20+CisKKwkqIGV4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmM6CisJKiBleHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5oOgorCSAgb3BlbmN2OiBjdmxhcGxhY2U6IGFkZCBzY2FsZSBhbmQgc2hpZnQgcHJvcGVydGllcworCSAgQWRkIHNjYWxlIGFuZCBzaGlmdCBwcm9wZXJ0aWVzIHNvIHRoZXNlIGNhbiBiZSB1c2VkIHRvIHR3ZWFrIHRoZSB2YWx1ZXMKKwkgIHVzZWQgaW4gY3ZDb252ZXJ0U2NhbGUoKSBpbnN0ZWFkIG9mIHVzaW5nIG9ubHkgZGVmYXVsdHMuCisKKzIwMTUtMDgtMjggMTY6MjQ6MjQgKzAxMDAgIEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNAZGViZXRoZW5jb3VydC5jb20+CisKKwkqIGV4dC9xdC9nc3RxdHNpbmsuY2M6CisJICBxdHNpbms6IGV4cGxpY2l0ZWx5IGZhbGx0aHJvdWdoIHN3aXRjaCBzdGF0ZW1lbnQKKwkgIEluIGNhc2UgcmV0IGlzIEZhbHNlLCBmYWxsdGhyb3VnaCB0byBkZWZhdWx0IGNhc2UuCisJICBDSUQgIzEzMjA3MDUKKworMjAxNS0wOC0yOCAxNjoxMzoxNiArMDEwMCAgTHVpcyBkZSBCZXRoZW5jb3VydCA8bHVpc0BkZWJldGhlbmNvdXJ0LmNvbT4KKworCSogZ3N0L3ZpZGVvcGFyc2Vycy9nc3R2YzFwYXJzZS5jOgorCSAgdmMxcGFyc2U6IGFkZCBicmVhayB0byBzd2l0Y2ggY2FzZQorCSAgRXZlbiB0aG91Z2ggYWxsIGNhc2VzIGluc2lkZSBWQzFfU1RSRUFNX0ZPUk1BVF9BU0YgYXJlIGdvdG8gb3IKKwkgIGdfYXNzZXJ0X25vdF9yZWFjaGVkKCksIGFkZCBhIGJyZWFrIGF0IHRoZSBlbmQgdG8gYXBwZWFzZSBDb3Zlcml0eS4KKwkgIENJRCAjMTMyMDcwNgorCisyMDE1LTA5LTI4IDIwOjU2OjU2ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYzoKKwkgIGFzc3JlbmRlcjogZml4IGxlYWsgb2YgdGFnIHNhbXBsZXMgaW4gdGhlIHRhZyBsaXN0CisJICBNb3ZlIGhhbmRsaW5nIG9mIGEgR3N0U2FtcGxlIGluIGEgc2VwYXJhdGUgZnVuY3Rpb24sIGFuZCB1bnJlZiB0aGUKKwkgIHNhbXBsZSBhZnRlciBjYWxsaW5nIGl0LiBsaWJhc3MgY29waWVzIHRoZSBmb250IGRhdGEgc28gd2UgZG9uJ3QgbmVlZCB0bworCSAga2VlcCBpdCBhcm91bmQuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU5CisKKzIwMTUtMDktMjggMjA6MzA6MTcgKzAyMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgorCisJKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jOgorCSAgYXNzcmVuZGVyOiBmaXggZ2FwIGV2ZW50IGxlYWsgYW5kIGludmFsaWQgcmV0dXJuIHZhbHVlCisJICBXZSBkb24ndCB3YW50IHRoZSBnYXAgZXZlbnQgdG8gYmUgZm9yd2FyZGVkCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU5CisKKzIwMTUtMDktMjkgMTY6MTc6MjIgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jOgorCSAgbnZlbmM6IGNhbGwgdGhlIHBhcmVudCBjbGFzcyBvbiBHc3RFbGVtZW50OjpzZXRfY29udGV4dAorCisyMDE1LTA5LTE3IDE2OjU5OjE2ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLm06CisJICBnbC9lYWdsOiB1c2UgdGhlIGRlZmF1bHQgR0wgY29udGV4dCBkZWJ1ZyBjYXRlZ29yeQorCisyMDE1LTA3LTMwIDE2OjQyOjM4ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIHN5cy9NYWtlZmlsZS5hbToKKwkqIHN5cy9udmVuYy9NYWtlZmlsZS5hbToKKwkqIHN5cy9udmVuYy9SRUFETUU6CisJKiBzeXMvbnZlbmMvVE9ETzoKKwkqIHN5cy9udmVuYy9nc3RudmJhc2VlbmMuYzoKKwkqIHN5cy9udmVuYy9nc3RudmJhc2VlbmMuaDoKKwkqIHN5cy9udmVuYy9nc3RudmVuYy5jOgorCSogc3lzL252ZW5jL2dzdG52ZW5jLmg6CisJKiBzeXMvbnZlbmMvZ3N0bnZoMjY0ZW5jLmM6CisJKiBzeXMvbnZlbmMvZ3N0bnZoMjY0ZW5jLmg6CisJICBBZGQgTnZpZGlhIGJhc2VkIGhhcmR3YXJlIGVuY29kZXIgZWxlbWVudAorCSAgQ3VycmVudGx5IG9ubHkgaDI2NCBpcyBzdXBwb3J0ZWQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTM0MDUKKworMjAxNS0wOS0yOSAwMDoyNTowMCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmM6CisJICBndGs6IGZpeCBhc3NlcnRpb24gd2hlbiB0aGUgZWxlbWVudCBoYXMgbm8gcGVlcgorCSAgV2hlbiBwcm94eWluZyBrZXlib2FyZC9uYXZpZ2F0aW9uL21vdXNlIGV2ZW50cywgb25seSB1bnJlZiBhIHN1Y2Nlc3NmdWxseQorCSAgcmV0cmVpdmVkIHBlZXIgcGFkLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTczOAorCisyMDE1LTA5LTI4IDE1OjMwOjMwICswMjAwICBTdGVmYW4gU2F1ZXIgPGVuc29uaWNAdXNlcnMuc2YubmV0PgorCisJKiBjb25maWd1cmUuYWM6CisJKiBnc3QvbWlkaS9NYWtlZmlsZS5hbToKKwkqIGdzdC9taWRpL2Fsc2FtaWRpc3JjLmM6CisJKiBnc3QvbWlkaS9hbHNhbWlkaXNyYy5oOgorCSogZ3N0L21pZGkvbWlkaS5jOgorCSAgUmV2ZXJ0ICJtaWRpOiBhZGQgYW4gQUxTQSBNSURJIHNlcXVlbmNlciBzb3VyY2UiCisJICBUaGlzIHJldmVydHMgY29tbWl0IGNkN2Y0ZTUyNDcxOGEyZjc1NDY3ODUyMjM1ZTRlMTNkNjRkMmFjODIuCisKKzIwMTUtMDktMjggMjI6MzE6MDkgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYzoKKwkgIGdsOiBzZXQgdGhlIGNvbnRleHQgb24gdGhlIGVsZW1lbnQgb24gYSBjb250ZXh0IHF1ZXJ5CisJICBPdGhlcndpc2UgaXQncyBwb3NzaWJsZSB0byBsb3NlIHRoZSBjb250ZXh0IGluZm9ybWF0aW9uIGlmIHRoZQorCSAgY29udGV4dCBpcyBvbmx5IHByb3BhZ2F0ZWQgdGhyb3VnaCBxdWVyaWVzLgorCisyMDE1LTA5LTI4IDIyOjIwOjI5ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tOgorCSogZXh0L2dsL2dzdGdsYmFzZW1peGVyLmM6CisJKiBleHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYzoKKwkqIGV4dC9nbC9nc3RnbHN0ZXJlb3NwbGl0LmM6CisJKiBleHQvZ2wvZ3N0Z2x0ZXN0c3JjLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJICBnbDogY2hhaW4gdXAgdG8gdGhlIHBhcmVudCBjbGFzcyBmb3IgR3N0RWxlbWVudDo6c2V0X2NvbnRleHQKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MDU1NzkKKworMjAxNS0wOC0wNyAxNToyODo1NCArMDIwMCAgQW50b25pbyBPc3BpdGUgPGFvMkBhbzIuaXQ+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGdzdC9taWRpL01ha2VmaWxlLmFtOgorCSogZ3N0L21pZGkvYWxzYW1pZGlzcmMuYzoKKwkqIGdzdC9taWRpL2Fsc2FtaWRpc3JjLmg6CisJKiBnc3QvbWlkaS9taWRpLmM6CisJICBtaWRpOiBhZGQgYW4gQUxTQSBNSURJIHNlcXVlbmNlciBzb3VyY2UKKwkgIFRoZSBhbHNhbWlkaXNyYyBlbGVtZW50IGFsbG93cyB0byBnZXQgaW5wdXQgZXZlbnQgZnJvbSBBTFNBIE1JREkKKwkgIHNlcXVlbmNlciBkZXZpY2VzLCBhbmQgcG9zc2libHkgY29udmVydCB0aGVtIHRvIHNvdW5kIHVzaW5nIHNvbWUKKwkgIGRvd25zdHJlYW0gZWxlbWVudCBsaWtlIGZsdWlkZGVjLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczODY4NworCisyMDE1LTA4LTI4IDE2OjM1OjM5ICswMTAwICBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzQGRlYmV0aGVuY291cnQuY29tPgorCisJKiBleHQvcXQvcXRpdGVtLmNjOgorCSAgcW1sOiByZW1vdmUgb3ZlcndyaXR0ZW4gdmFsdWUKKwkgIFZhbHVlIGluIHRleCBpcyBvdmVyd3JpdHRlbiBiZWZvcmUgYmVpbmcgdXNlZC4gUmVtb3ZpbmcgaXQuCisJICBDSUQgMTMyMDcxNQorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDI1MworCisyMDE1LTA5LTAyIDIzOjQ1OjA3ICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGNvbmZpZ3VyZS5hYzoKKwkqIGV4dC9xdC9NYWtlZmlsZS5hbToKKwkqIGV4dC9xdC9nc3Rxc2d0ZXh0dXJlLmg6CisJKiBleHQvcXQvZ3N0cXRnbC5oOgorCSogZXh0L3F0L3F0aXRlbS5jYzoKKwkqIGV4dC9xdC9xdGl0ZW0uaDoKKwkgIHF0OiBhZGQgc3VwcG9ydCBmb3IgYnVpbGRpbmcvcnVubmluZyBvbiBhbmRyb2lkCisJICBJbmNsdWRpbmc6CisJICAtIE5lY2Vzc2FyeSBjb25maWd1cmUgY2hlY2tzCisJICAtIE5lY2Vzc2FyeSBjb21waWxlIHRpbWUgcGxhdGZvcm0gY2hlY2tzCisJICAtIE5lY2Vzc2FyeSBydW50aW1lIHF0IGFuZHJvaWQgcGxhdGZvcm0gZGV0ZWN0aW9uCisJICAtIEVzY2FwaW5nIEdMc3luYyBkZWZpbml0aW9uIHdpdGggUXQncyBHTEVTMiBpbXBsZW1lbnRhdGlvbgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDQ2NgorCisyMDE1LTA5LTAyIDIzOjQwOjMxICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9xdC9NYWtlZmlsZS5hbToKKwkgIHF0OiBkb24ndCB1c2UgQ1BQRkxBR1MgZm9yIHRvb2xzIHRoYXQgY2Fubm90IHVzZSB0aGVtCisJICBGb3IgZXhhbXBsZSBtb2Mgd2lsbCBiYWlsIG91dCB3aGVuIGdpdmVuIGFyZ3VtZW50cyBpdCBkb2VzIG5vdAorCSAga25vdyBhYm91dC4gIFRoZSBtb2Mgc3BlY2lmaWMgTU9DX0NQUEZMQUdTIGNhbiBzdGlsbCBiZSB1c2VkCisJICB0byBwYXNzIGZsYWdzIHRvIG1vYy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQ0NjYKKworMjAxNS0wOS0wMiAyMzozOTo1NCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBleHQvcXQvTWFrZWZpbGUuYW06CisJICBxdDogcmVuYW1lIGxpYnJhcnkgdG8gaW5jbHVkZSBnc3QgcHJlZml4CisJICBsaWJxdHNpbmsgLT4gbGliZ3N0cXRzaW5rCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0NDY2CisKKzIwMTUtMDgtMzEgMTk6MjE6NTQgKzEwMDAgIE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKworCSogZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jOgorCSAgZ2w6IHNwcmlua2xlIHNvbWUgZGVidWcgbWFya2VycyB0byBlYXNlIGRlYnVnZ2luZworCisyMDE1LTA4LTMxIDE5OjE4OjIzICsxMDAwICBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5oOgorCSAgZ2wvdXRpbHM6IGFkZCBhIGZ1bmN0aW9uIHRvIGluc2VydCBhIGRlYnVnIG1hcmtlcgorCSAgVGhlc2UgbWFya2VycyBhcmUgdmlzaWJsZSBpbiB0b29scyB0aGF0IHJlY29yZCB0aGUgR0wgZnVuY3Rpb24gY2FsbHMKKwkgIHN1Y2ggYXMgYXBpdHJhY2UsIGV0IGFsLgorCSAgTWFrZXMgaXQgZWFzaWVyIHRvIG1hdGNoIHVwIEdMIGRyYXcgY29tbWFuZHMgd2l0aCBzcGVjaWZpYyBlbGVtZW50cy4KKworMjAxNS0wOC0zMSAxOToxNzoyMSArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2RlYnVnLmg6CisJICBnbDogYWRkIHNvbWUgZGVidWdnaW5nIHByb3RvdHlwZXMKKworMjAxNS0wOS0yNiAxOToxOTo1MCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorCisJKiBkb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtc2VjdGlvbnMudHh0OgorCSogZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvZ3N0Z2x3aW5kb3dfYW5kcm9pZF9lZ2wuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbHdpbmRvd19jb2NvYS5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5tOgorCSogZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsd2luZG93LmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuaDoKKwkqIGdzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmM6CisJKiBnc3QtbGlicy9nc3QvZ2wvd2luMzIvZ3N0Z2x3aW5kb3dfd2luMzIuYzoKKwkqIGdzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmM6CisJICBnbHdpbmRvdzogcmVtb3ZlIHVudXNlZCBkcmF3X3VubG9ja2VkIGZ1bmN0aW9uCisJICBUaGUgZnVuY3Rpb25hbGl0eSBpcyBwcm92aWRlZCBieSBkcmF3IGFueXdheSBhbmQgaXMgbGVmdG92ZXIgZnJvbQorCSAgWDExJ3Mgc3BlY2lmaWMgdGhyZWFkaW5nIHJlcXVpcmVtZW50cyB0aGF0IG5vIGxvbmdlciBhcHBseS4KKworMjAxNS0wOS0yNyAxMzowNzoxOSArMTAwMCAgSmFuIFNjaG1pZHQgPGphbkBjZW50cmljdWxhci5jb20+CisKKwkqIGV4dC9yZXNpbmR2ZC9nc3RtcGVnZGVtdXguYzoKKwkgIHJlc2luZHZkOiBTZW5kIGdhcCB1cGRhdGVzIHRvIHRoZSBzZWdtZW50IHN0b3AgZHVyaW5nIHN0aWxscworCSAgSWdub3JlIHRoZSBub3JtYWwgZ2FwIHRocmVzaG9sZCBmb3IgbGFnZ3kgc3RyZWFtcyBhbmQKKwkgIGltbWVkaWF0ZWx5IGNhdGNoIGFsbCBzdHJlYW1zIHVwIHRvIHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQKKwkgIHdoZW4gcHJvY2Vzc2luZyBnYXAgdXBkYXRlcyBmb3IgYSBzZWdtZW50IGR1cmluZyBhCisJICBzdGlsbCBmcmFtZSBzZXF1ZW5jZS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU2ODAKKworMjAxNS0wOS0yNyAwMDoyNDoyNCArMTAwMCAgSmFuIFNjaG1pZHQgPGphbkBjZW50cmljdWxhci5jb20+CisKKwkqIGdzdC9kdmRzcHUvTWFrZWZpbGUuYW06CisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS1yZW5kZXIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtY29tbW9uLmg6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS1wZ3MuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXBncy5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtdm9ic3ViLXJlbmRlci5jOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtdm9ic3ViLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWIuaDoKKwkgIFJldmVydCAiZHZkc3B1OiByZW5kZXIgdG8gQVlVViBvdmVybGF5IgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCA1MDE2YTczMTkwNTk1NTA1ZGMzOGI1NGY4ZjlhMDhjNGYxODBmM2E2LgorCisyMDE1LTA5LTI3IDAwOjI0OjIzICsxMDAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LWNvbW1vbi5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWItcmVuZGVyLmM6CisJICBSZXZlcnQgImR2ZHNwdTogcmVuZGVyIHRvIEFSR0Igb3ZlcmxheSBpbnN0ZWFkIG9mIEFZVVYiCisJICBUaGlzIHJldmVydHMgY29tbWl0IGRkM2U5ZGViMmFhNjk1YTM5MWI1OGYyNGQ4NmEzYzAwYmJjMTI1OGEuCisKKzIwMTUtMDktMjcgMDA6MjQ6MTcgKzEwMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi5oOgorCSAgUmV2ZXJ0ICJkdmRzcHU6IGhhbmRsZSBmcmFtZSBzaXplIGV2ZW50IGZyb20gdXBzdHJlYW0iCisJICBUaGlzIHJldmVydHMgY29tbWl0IDQ2YWFhYTZjMzA5YjhhOGY2ZTIxODE0MmZkNTk0NGY1ZDI0ZjA5NWMuCisKKzIwMTUtMDktMjcgMDA6MjQ6MTcgKzEwMDAgIEphbiBTY2htaWR0IDxqYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS5jOgorCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuaDoKKwkgIFJldmVydCAiZHZkc3B1OiBjYWNoZSBvdmVybGF5IGNvbXBvc2l0aW9uIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCBhYWJiOGExYTY4MzcyZjc1MGM2M2I5YjY1ODZlMThlODI5NzQ1Nzc0LgorCisyMDE1LTA5LTI3IDAwOjI0OjE1ICsxMDAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1Lmg6CisJICBSZXZlcnQgImR2ZHNwdTogaW1wcm92ZSBuZWdvdGlhdGlvbiBvZiBvdmVybGF5IGNvbXBvc2l0aW9uIgorCSAgVGhpcyByZXZlcnRzIGNvbW1pdCAxODk5ZTJhMDk5OTMyYTdhNzM0ZTc3ODRjMjBiNjI0NTE3MjM3ZTE4LgorCisyMDE1LTA5LTE4IDE5OjA3OjQ3ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJICBkdmRzcHU6IGZpeCBwZ3MgcGFsZXR0ZSBjb2xvcnMKKwkgIFUgYW5kIFYgd2VyZSBpbnZlcnRlZAorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTIzOQorCisyMDE0LTA4LTI3IDE2OjQ3OjIyICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1Lmg6CisJICBkdmRzcHU6IGltcHJvdmUgbmVnb3RpYXRpb24gb2Ygb3ZlcmxheSBjb21wb3NpdGlvbgorCSAgU3VwcG9ydCBuZWdvdGlhdGluZyBHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiBkb3duc3RyZWFtCisJICB3aGlsZSBub3QgcHJvdmlkaW5nIGl0IHVwc3RyZWFtLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDEzLTA5LTAyIDE3OjQ4OjUwICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1Lmg6CisJICBkdmRzcHU6IGNhY2hlIG92ZXJsYXkgY29tcG9zaXRpb24KKwkgIFRoaXMgYXZvaWRzIHJlbmRlcmluZyB0aGUgb3ZlcmxheSBidWZmZXIgZm9yIGVhY2ggdmlkZW8gZnJhbWUuCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNzUwCisKKzIwMTMtMDgtMzAgMjI6MDg6MDEgKzAyMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgorCisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi5oOgorCSAgZHZkc3B1OiBoYW5kbGUgZnJhbWUgc2l6ZSBldmVudCBmcm9tIHVwc3RyZWFtCisJICBBbiBJRFggZmlsZSBvciBjb2RlY19kYXRhIG5vcm1hbGx5IGNvbnRhaW5zIHRoZSBvcmlnaW5hbCBmcmFtZSBzaXplIG9mCisJICB0aGUgdmlkZW8uIEFsbG93IHVwc3RyZWFtIHRvIHByb3ZpZGUgdGhpcyBpbmZvcm1hdGlvbiBieSBzZW5kaW5nIGEKKwkgIGN1c3RvbSBldmVudCwgd2hpY2ggd2lsbCBhbGxvdyBzY2FsaW5nIHRoZSBvdmVybGF5IGNvcnJlY3RseS4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM3NTAKKworMjAxMy0xMi0wNSAyMTo1OToxOCArMDEwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJICBkdmRzcHU6IGFsbG93IHN1ZmZpeCBpbiBkdmQgZXZlbnQgbmFtZSB0byBhbGxvdyBtdWx0aXBsZSBzdGlja3kgZHZkIGV2ZW50cworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDE1LTA0LTA3IDE0OjM4OjA4ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LWNvbW1vbi5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS12b2JzdWItcmVuZGVyLmM6CisJICBkdmRzcHU6IHJlbmRlciB0byBBUkdCIG92ZXJsYXkgaW5zdGVhZCBvZiBBWVVWCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYzNzUwCisKKzIwMTMtMDEtMjMgMTc6NTk6MDEgKzAxMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgorCisJKiBnc3QvZHZkc3B1L01ha2VmaWxlLmFtOgorCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUtcmVuZGVyLmM6CisJKiBnc3QvZHZkc3B1L2dzdGR2ZHNwdS5jOgorCSogZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuaDoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LWNvbW1vbi5oOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJKiBnc3QvZHZkc3B1L2dzdHNwdS1wZ3MuaDoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi1yZW5kZXIuYzoKKwkqIGdzdC9kdmRzcHUvZ3N0c3B1LXZvYnN1Yi5jOgorCSogZ3N0L2R2ZHNwdS9nc3RzcHUtdm9ic3ViLmg6CisJICBkdmRzcHU6IHJlbmRlciB0byBBWVVWIG92ZXJsYXkKKwkgIEluc3RlYWQgb2Ygb25seSBzdXBwb3J0aW5nIHdyaXRpbmcgU1BVIGRhdGEgZGlyZWN0bHkgdG8gWVVWIGZyYW1lcywKKwkgIHJlbmRlciB0aGUgU1BVIGRhdGEgdG8gYW4gaW50ZXJtZWRpYXRlIEFZVVYgb3ZlcmxheSBidWZmZXIuIFRoZSBvdmVybGF5CisJICBkYXRhIGlzIHRoZW4gYXR0YWNoZWQgdG8gdGhlIHZpZGVvIGZyYW1lIGlmIGRvd25zdHJlYW0gc3VwcG9ydHMgb3ZlcmxheQorCSAgY29tcG9zaXRpb24sIG90aGVyd2lzZSB0aGUgQVlVViBvdmVybGF5IGlzIGJsZW5kZWQgdG8gdGhlIHZpZGVvIGZyYW1lLgorCSAgRm9yIHRoZSBQR1MgZm9ybWF0LCB0aGUgb3ZlcmxheSBidWZmZXIgc2l6ZSBpcyBzZXQgdG8gdGhlIHNpemUgb2YgdGhlCisJICBDb21wb3NpdGlvbiBXaW5kb3csIGFuZCBpdHMgcG9zaXRpb24gaW4gdGhlIG92ZXJsYXkgY29tcG9zaXRpb24gaXMgc2V0CisJICB0byB0aGUgd2luZG93IHBvc2l0aW9uLiBUaGUgb2JqZWN0cyB0byByZW5kZXIgYXJlIG5vdyBjcm9wcGVkIHdoZW4gdGhlCisJICBjcm9wcGluZyBmbGFnIGlzIHNldC4KKwkgIEZvciB0aGUgVm9ic3ViIGZvcm1hdCwgdGhlIG92ZXJsYXkgYnVmZmVyIHNpemUgaXMgc2V0IHRvIHRoZSBzaXplIG9mIHRoZQorCSAgRGlzcGxheSBBcmVhLgorCSAgT25jZSByZW5kZXJlZCwgdGhlIG92ZXJsYXkgY29tcG9zaXRpb24gcmVjdGFuZ2xlIGlzIG5vdyBtb3ZlZCBhbmQgc2NhbGVkCisJICB0byBmaXQgdGhlIHZpZGVvIG91dHB1dCBzaXplLCB0byBhdm9pZCBjbGlwcGluZy4KKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02NjM3NTAKKworMjAxMy0wOS0wMiAxNzowNzo0OSArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+CisKKwkqIGdzdC9kdmRzcHUvZ3N0ZHZkc3B1LmM6CisJICBkdmRzcHU6IHBhc3MgZHZkc3B1IGFyZ3VtZW50IHRvIHNldF9jYXBzIGZ1bmN0aW9ucworCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDE1LTA5LTE4IDE5OjE1OjQ1ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KKworCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6CisJICBkdmRzcHU6IHNraXAgdW5uZWVkZWQgcmVhZGluZyBvZiBSTEUgZGF0YQorCSAgVGhlIFJMRSBkYXRhIHdhcyBiZWluZyByZWFkIGZvciBkdW1waW5nIHRoZSBTUFUgaW1hZ2UgZXZlbiB3aGVuIHRoZQorCSAgRFVNUF9GVUxMX0lNQUdFIG1hY3JvIHdhcyBub3Qgc2V0LgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTY2Mzc1MAorCisyMDE1LTA4LTI5IDE5OjE2OjM4ICswNTMwICBOaXJiaGVlayBDaGF1aGFuIDxuaXJiaGVla0BjZW50cmljdWxhci5jb20+CisKKwkqIHRlc3RzL2NoZWNrL2VsZW1lbnRzL2NvbXBvc2l0b3IuYzoKKwkgIGNoZWNrOiBBZGQgdGVzdCBmb3IgdmlkZW9hZ2dyZWdhdG9yIHNpbmtwYWRzIGJlaW5nIHNvcnRlZCBieSB6b3JkZXIKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQyODUKKworMjAxNS0wOS0yNiAxMDoyMTo0MSArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmM6CisJICBhdWRpb21peGVyOiBmaXggZGVhZGxvY2sgd2hlbiBHX0RJU0FCTEVfQVNTRVJUIGlzIG5vdCBkZWZpbmVkCisJICBUaGlzIG1ha2VzIHRoZSBhdWRpb21peGVyIHVuaXQgdGVzdCB0aW1lIG91dCBpbiBtYXN0ZXIuCisJICBCcm9rZSB3aXRoIDU4N2U3YzQKKworMjAxNS0wOS0yNiAxMDo0OTozMSArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYzoKKwkgIGRhc2g6IEZpeCB1bml0IHRlc3QgYWZ0ZXIgaW50ZXJuYWwgQVBJIGNoYW5nZQorCisyMDE1LTA4LTI1IDE3OjM5OjMwICswOTAwICBKaW1teSBPaG4gPHlvbmdqaW4ub2huQGxnZS5jb20+CisKKwkqIGV4dC9zbmRmaWxlL2dzdHNmZGVjLmM6CisJICBzZmRlYzogRml4IHR5cG8gaW4gZ290byB2YXJpYWJsZSBuYW1lCisJICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU0MDU3CisKKzIwMTUtMDgtMTggMTQ6MTY6MTEgKzAxMDAgIENocmlzIEJhc3MgPGZsb29ibGVmbGFtQGdtYWlsLmNvbT4KKworCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CisJKiBleHQvZGFzaC9nc3RkYXNoZGVtdXguaDoKKwkqIGV4dC9kYXNoL2dzdG1wZHBhcnNlci5jOgorCSogZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmg6CisJICBkYXNoZGVtdXg6IGNyZWF0ZSBzcmMgcGFkcyBmb3Igc3VidGl0bGUgc3RyZWFtcy4KKwkgIENyZWF0ZSBzcmMgcGFkcyBmb3IgUmVwcmVzZW50YXRpb25zIHRoYXQgY29udGFpbiB0aW1lZC10ZXh0IHN1YnRpdGxlcywKKwkgIGJvdGggd2hlbiB0aGUgc3VidGl0bGVzIGFyZSBlbmNhcHN1bGF0ZWQgaW4gSVNPIEJNRkYgKGkuZS4sIHRoZQorCSAgUmVwcmVzZW50YXRpb24gaGFzIG1pbWVUeXBlICJhcHBsaWNhdGlvbi9tcDQiKSBhbmQgd2hlbiB0aGV5IGFyZQorCSAgdW5lbmNhcHN1bGF0ZWQgKGkuZS4sIHRoZSBSZXByZXNlbnRhdGlvbiBoYXMgbWltZVR5cGUKKwkgICJhcHBsaWNhdGlvbi90dG1sK3htbCIpLgorCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc0Nzc3NAorCisyMDE1LTA5LTI2IDAwOjE3OjU1ICswMjAwICBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorCisJKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYzoKKwkgIGF1ZGlvYWdncmVnYXRvcjogU3RvcCB1c2luZyBkZXByZWNhdGVkIGdzdF9zZWdtZW50X3RvX3Bvc2l0aW9uKCkKKworMjAxNS0wOC0zMSAxNjoxMjo0MCArMDMwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKworCSogZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jOgorCSAgYWdncmVnYXRvcjogRG9uJ3QgZm9yd2FyZCBRT1MgZXZlbnRzIHRvIHNpbmtwYWRzIHRoYXQgaGFkIG5vIGJ1ZmZlciB5ZXQKKwkgIE90aGVyd2lzZSB0aGV5IHdpbGwgcmVjZWl2ZSBhIFFPUyBldmVudCB0aGF0IGhhcyBlYXJsaWVzdF90aW1lPTAgKGJlY2F1c2Ugd2UKKwkgIGNhbid0IGhhdmUgbmVnYXRpdmUgdGltZXN0YW1wcyksIGFuZCBjb25zaWRlciB0aGVpciBidWZmZXIgYXMgdG9vIGxhdGUKKwkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTQzNTYKKwogMjAxNS0wOS0yMiAxNjoxNzozOCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAogCSogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmM6CkBAIC03OTgsMTI0ICsxMDU2MywxMCBAQAogCSAgbXBkcGFyc2VyOiBJZiBubyBJbml0aWFsaXphdGlvbiBpcyBwcmVzZW50IGluIHRoZSBTZWdtZW50QmFzZSwgYXNzdW1lIGl0IGlzIGJlZm9yZSB0aGUgaW5kZXhSYW5nZQogCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTEzMgogCi0yMDE1LTA5LTE2IDEyOjUwOjQ2ICswMjAwICBQaGlsaXBwZSBOb3JtYW5kIDxwaGlsbkBpZ2FsaWEuY29tPgorMjAxNS0wOS0yNSAyMzo1MToyMCArMDIwMCAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KIAotCSogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOgotCSAgbXNzZGVtdXg6IGFjdGl2YXRlIHN0cmVhbXMgYmVmb3JlIGNvbmZpZ3VyaW5nIGJpdHJhdGUKLQkgIERvaW5nIHRoZSBjb250cmFyeSBoYXMgbm8gZWZmZWN0IGFuZCB0aGUgY29uc2VxdWVuY2UgaXMgdGhhdCBwbGF5YmFjawotCSAgd2lsbCBzdGFydCB3aXRoIHRoZSBsb3dlc3QgYml0cmF0ZSBldmVuIGlmIHdlIGNhbiBhbHJlYWR5IGhhbmRsZQotCSAgaGlnaGVyIGJpdHJhdGUuCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1MTA4Ci0KLTIwMTUtMDktMDMgMTU6MTE6MDAgKzAyMDAgIFBoaWxpcHBlIE5vcm1hbmQgPHBoaWxuQGlnYWxpYS5jb20+Ci0KLQkqIGV4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYzoKLQkgIG1zc2RlbXV4OiBhbHdheXMgdXNlIHRpbWVzY2FsZSBmb3IgZ3N0IHRpbWVzdGFtcCBjYWxjdWxhdGlvbgotCSAgTm90IGRvaW5nIHRoaXMgY2FuIGxlYWQgdGhlIGRlbXV4ZXIgdG8gYXR0ZW1wdCBkb3dubG9hZGluZyBmcmFnbWVudHMKLQkgIGZvciBhbiBpbnZhbGlkIHN0YXJ0IHRpbWUuIFRoZSBzZXJ2ZXIgd291bGQgdGhlbiBzZW5kIGEgSFRUUAotCSAgUHJlY29uZGl0aW9uIGZhaWxlZCBlcnJvciwgdGhlIGRlbXV4ZXIgd291bGQgdHJ5IHNvbWUgbW9yZSB0aW1lcyB0bwotCSAgZG93bmxvYWQgdGhlIGludmFsaWQgZnJhZ21lbnQgYW5kIGV2ZW50dWFsbHkgZXJyb3Igb3V0LgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NDUyMwotCi0yMDE1LTA5LTMwIDA4OjM2OjE1ICswMjAwICBBbnRvaW5lIEphY291dG90IDxhamFjb3V0b3RAZ25vbWUub3JnPgotCi0JKiBnc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW06Ci0JICBnbDogUGFzcyBHTF9DRkxBR1MgdG8gZy1pci1zY2FubmVyCi0JICBUaGlzIHVuYnJlYWtzIGJ1aWxkaW5nIHdoZW4gc29tZSBoZWFkZXJzIGFyZSB1bmRlciBhIG5vbi1zdGFuZGFyZCBwYXRoLgotCSAgZS5nLiAvdXNyL1gxMVI2L2luY2x1ZGUgYXMgb24gT3BlbkJTRC4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU4NTAKLQotMjAxNS0wOS0zMCAwMDo0NDoxNiAtMDcwMCAgQWxlaXggQ29uY2hpbGxvIEZsYXF1w6kgPGFsZWl4QG9ibG9uZy5jb20+Ci0KLQkqIHN5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmFtOgotCSAgYXBwbGVtZWRpYTogZGlzdCBtaXNzaW5nIGhlYWRlciBmaWxlcwotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTg1MgotCi0yMDE1LTA5LTMwIDEzOjEzOjE5ICswOTAwICBWaW5lZXRoIFRNIDx2aW5lZXRoLnRtQHNhbXN1bmcuY29tPgotCi0JKiB0ZXN0cy9jaGVjay9lbGVtZW50cy9hdWRpb2ludGVybGVhdmUuYzoKLQkgIGF1ZGlvaW50ZXJsZWF2ZTogdHlwZWNhc3QgYml0LW1hc2sgdG8gZ3VpbnQ2NCB0byBmaXggc2VnbWVudGF0aW9uIGZhdWx0Ci0JICBXaGlsZSBjcmVhdGluZyBjYXBzIGluIGF1ZGlvaW50ZXJsZWF2ZSB0ZXN0cywgYml0bWFzayBpcyBiZWluZyBzZXQgYXMgMHg5Ci0JICBUaGlzIGlzIHJlc3VsdGluZyBpbiBzZWdtZW50YXRpb24gZmF1bHQuIEZpeCB0aGUgc2FtZSBieSB0eXBlY2FzdGluZyB0byBndWludDY0Ci0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1ODQwCi0KLTIwMTUtMDktMzAgMDA6MzY6MTQgKzAxMDAgIFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbUBjZW50cmljdWxhci5jb20+Ci0KLQkqIGdzdC9tcGVndHNtdXgvbXBlZ3RzbXV4LmM6Ci0JICBtcGVndHNtdXg6IGZpeCBkb3duc3RyZWFtIGtleSB1bml0IGV2ZW50cyBoYW5kbGluZyB3aXRoIGhsc3NpbmsKLQkgIFRoZSBidWZmZXIgdGltZXN0YW1wcyBpbiB0aGUgY29sbGVjdCBmdW5jdGlvbiB3aWxsIGFscmVhZHkgYmUKLQkgIHJ1bm5pbmcgdGltZSwgZG9uJ3QgdHJ5IHRvIGNvbnZlcnQgdGhlbSBhZ2FpbiB0byBydW5uaW5nIHRpbWUsCi0JICB0aGlzIHdvdWxkIHlpZWxkIENMT0NLX1RJTUVfTk9ORSBub3cgdGhhdCB0aGUgc2VnbWVudCBpcyBzaGlmdGVkCi0JICB0byBhY2NvdW50IGZvciBuZWdhdGl2ZSBkdHMuCi0JICBUaGlzIGZpeGVzIHgyNjRlbmMgISBtcGVndHNtdXggISBobHNzaW5rLCB3aGljaCB3YXMgYnJva2VuCi0JICBiZWNhdXNlIG1wZWd0c211eCB3b3VsZCBzZW5kIGEgZG93bnN0cmVhbSBrZXkgdW5pdCBldmVudCB3aXRoCi0JICBydW5uaW5nIHRpbWUgTk9ORSBhbmQgdGhlbiBobHNzaW5rIHdvdWxkIGltbWVkaWF0ZWx5IHNlbmQKLQkgIGFub3RoZXIgb25lIHVwc3RyZWFtIGFuZCBpdCB3b3VsZCBqdXN0IGJlIGEgZmxvb2Qgb2YgZm9yY2UKLQkgIGtleWZyYW1lIGV2ZW50cyBpbiBib3RoIGRpcmVjdGlvbnMgYWZ0ZXIgdGhlIGZpcnN0IG9uZS4gVGhpcwotCSAgd291bGQgdGhlbiBicmVhayBobHNzaW5rIGJlY2F1c2UgaXQgdXNlcyBtdWx0aWZpbGVzaW5rIGluCi0JICBuZXh0LWZpbGU9a2V5LXVuaXQtZXZlbnQgbW9kZSwgYW5kIHN0YXJ0aW5nIGEgbmV3IGZpbGUgYWZ0ZXIKLQkgIGV2ZXJ5IGZldyBrQiBkb2VzIG5vdCB3b3JrIHdlbGwgZm9yIEhMUy4KLQotMjAxNS0wOS0yOSAxMzozMToxOCArMDEwMCAgVGltLVBoaWxpcHAgTcO8bGxlciA8dGltQGNlbnRyaWN1bGFyLmNvbT4KLQotCSogZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jOgotCSAgdmlkZW9hZ2dyZWdhdG9yOiBmaXggY29tcGlsYXRpb24gd2l0aCBvbGRlciBnbGliIHZlcnNpb24KLQkgIFJlbW92ZSB3ZWlyZCB1c2Ugb2YgcHJpdmF0ZSBndHlwZSBkZWZpbmVzIGFuZCBmaXggY29tcGlsYXRpb24KLQkgIHdpdGggb2xkZXIgZ2xpYiB2ZXJzaW9ucyBzdWNoIGFzIDIuMzYuCi0JICBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzU1NzU0Ci0KLTIwMTUtMDktMjggMjA6NTY6NTYgKzAyMDAgIEFybmF1ZCBWcmFjIDxhdnJhY0BmcmVlYm94LmZyPgotCi0JKiBleHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jOgotCSAgYXNzcmVuZGVyOiBmaXggbGVhayBvZiB0YWcgc2FtcGxlcyBpbiB0aGUgdGFnIGxpc3QKLQkgIE1vdmUgaGFuZGxpbmcgb2YgYSBHc3RTYW1wbGUgaW4gYSBzZXBhcmF0ZSBmdW5jdGlvbiwgYW5kIHVucmVmIHRoZQotCSAgc2FtcGxlIGFmdGVyIGNhbGxpbmcgaXQuIGxpYmFzcyBjb3BpZXMgdGhlIGZvbnQgZGF0YSBzbyB3ZSBkb24ndCBuZWVkIHRvCi0JICBrZWVwIGl0IGFyb3VuZC4KLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU3NTkKLQotMjAxNS0wOS0yOCAyMDozMDoxNyArMDIwMCAgQXJuYXVkIFZyYWMgPGF2cmFjQGZyZWVib3guZnI+Ci0KLQkqIGV4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmM6Ci0JICBhc3NyZW5kZXI6IGZpeCBnYXAgZXZlbnQgbGVhayBhbmQgaW52YWxpZCByZXR1cm4gdmFsdWUKLQkgIFdlIGRvbid0IHdhbnQgdGhlIGdhcCBldmVudCB0byBiZSBmb3J3YXJkZWQKLQkgIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03NTU3NTkKLQotMjAxNS0wOS0xNyAxNjo1OToxNiArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotCi0JKiBnc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5tOgotCSAgZ2wvZWFnbDogdXNlIHRoZSBkZWZhdWx0IEdMIGNvbnRleHQgZGVidWcgY2F0ZWdvcnkKLQotMjAxNS0wOS0yOSAwMDoyNTowMCArMTAwMCAgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotCi0JKiBleHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmM6Ci0JICBndGs6IGZpeCBhc3NlcnRpb24gd2hlbiB0aGUgZWxlbWVudCBoYXMgbm8gcGVlcgotCSAgV2hlbiBwcm94eWluZyBrZXlib2FyZC9uYXZpZ2F0aW9uL21vdXNlIGV2ZW50cywgb25seSB1bnJlZiBhIHN1Y2Nlc3NmdWxseQotCSAgcmV0cmVpdmVkIHBlZXIgcGFkLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTczOAotCi0yMDE1LTA5LTI3IDEzOjA3OjE5ICsxMDAwICBKYW4gU2NobWlkdCA8amFuQGNlbnRyaWN1bGFyLmNvbT4KLQotCSogZXh0L3Jlc2luZHZkL2dzdG1wZWdkZW11eC5jOgotCSAgcmVzaW5kdmQ6IFNlbmQgZ2FwIHVwZGF0ZXMgdG8gdGhlIHNlZ21lbnQgc3RvcCBkdXJpbmcgc3RpbGxzCi0JICBJZ25vcmUgdGhlIG5vcm1hbCBnYXAgdGhyZXNob2xkIGZvciBsYWdneSBzdHJlYW1zIGFuZAotCSAgaW1tZWRpYXRlbHkgY2F0Y2ggYWxsIHN0cmVhbXMgdXAgdG8gdGhlIGVuZCBvZiB0aGUgc2VnbWVudAotCSAgd2hlbiBwcm9jZXNzaW5nIGdhcCB1cGRhdGVzIGZvciBhIHNlZ21lbnQgZHVyaW5nIGEKLQkgIHN0aWxsIGZyYW1lIHNlcXVlbmNlLgotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTY4MAotCi0yMDE1LTA5LTE4IDE5OjA3OjQ3ICswMjAwICBBcm5hdWQgVnJhYyA8YXZyYWNAZnJlZWJveC5mcj4KLQotCSogZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmM6Ci0JICBkdmRzcHU6IGZpeCBwZ3MgcGFsZXR0ZSBjb2xvcnMKLQkgIFUgYW5kIFYgd2VyZSBpbnZlcnRlZAotCSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTc1NTIzOQotCi0yMDE1LTA5LTI2IDEwOjIxOjQxICswMTAwICBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPgotCi0JKiBnc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYzoKLQkgIGF1ZGlvbWl4ZXI6IGZpeCBkZWFkbG9jayB3aGVuIEdfRElTQUJMRV9BU1NFUlQgaXMgbm90IGRlZmluZWQKLQkgIFRoaXMgbWFrZXMgdGhlIGF1ZGlvbWl4ZXIgdW5pdCB0ZXN0IHRpbWUgb3V0IGluIG1hc3Rlci4KLQkgIEJyb2tlIHdpdGggNTg3ZTdjNAorCSogY29uZmlndXJlLmFjOgorCSAgQmFjayB0byBkZXZlbG9wbWVudAogCiA9PT0gcmVsZWFzZSAxLjYuMCA9PT0KIApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQppbmRleCBlOTNlYzFmLi42ZmEyMjVhIDEwMDY0NAotLS0gYS9NYWtlZmlsZS5hbQorKysgYi9NYWtlZmlsZS5hbQpAQCAtNTMsOCArNTMsMTEgQEAKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlIFwKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlLWxpYnRvb2wgXAogCSQodG9wX2J1aWxkZGlyKS9leHQvYWxzYXNwZGlmLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKKwkkKHRvcF9idWlsZGRpcikvZXh0L2hscy8ubGlicy9saWJnc3RmcmFnbWVudGVkKiBcCiAJJCh0b3BfYnVpbGRkaXIpL2V4dC9pdm9yYmlzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZXh0L2phY2svLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3Qvb3B1cy8ubGlicy9saWJnc3RvcHVzLntzbyxkbGwsRExMLGR5bGlifSBcCisJJCh0b3BfYnVpbGRkaXIpL2V4dC9tcGcxMjMvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYWFjcGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYW1ycGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYXVkaW9wYXJzZXJzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKQEAgLTYyLDYgKzY1LDcgQEAKIAkkKHRvcF9idWlsZGRpcikvZ3N0L2ltYWdlZnJlZXplLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L21wZWc0dmlkZW9wYXJzZS8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC9xdG11eC8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC9ydHAvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvcnRwbXV4Ly5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L3J0cHZwOC8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC9zY2FsZXRlbXBvLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKQEAgLTk2LDEwICsxMDAsMTIgQEAKIAkkKHRvcF9zcmNkaXIpL2dzdC9obHMgXAogCSQodG9wX3NyY2RpcikvZ3N0L2ltYWdlZnJlZXplIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9pbnZ0ZWxlY2luZSBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvbGl2ZWFkZGVyIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9tcGVnNHZpZGVvcGFyc2UgXAogCSQodG9wX3NyY2RpcikvZ3N0L3F0bXV4IFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9ydHBtdXggXAogCSQodG9wX3NyY2RpcikvZ3N0L3J0cHZwOCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvcnRwIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zY2FsZXRlbXBvIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zZWxlY3RvciBcCiAJJCh0b3Bfc3JjZGlyKS9nc3Qvc2hhcGV3aXBlIFwKQEAgLTExOCw2ICsxMjQsNyBAQAogCSQodG9wX3NyY2RpcikvZXh0L2l2b3JiaXMgXAogCSQodG9wX3NyY2RpcikvZXh0L2phY2sgXAogCSQodG9wX3NyY2RpcikvZXh0L21ldGFkYXRhIFwKKwkkKHRvcF9zcmNkaXIpL2V4dC9tcGcxMjMgXAogCSQodG9wX3NyY2RpcikvZXh0L3N3ZmRlYyBcCiAJJCh0b3Bfc3JjZGlyKS9leHQvdGFya2luIFwKIAkkKHRvcF9zcmNkaXIpL2V4dC90aGVvcmEgXApkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgppbmRleCAxOWIwYjVhLi4zYzIyMzE2IDEwMDY0NAotLS0gYS9NYWtlZmlsZS5pbgorKysgYi9NYWtlZmlsZS5pbgpAQCAtMTI1LDE2ICsxMjUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSBcCkBAIC0yMDgsNyArMjA3LDcgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9yZWxlYXNlLm1hayBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vd2luMzIubWFrIEFCT1VULU5MUyBBVVRIT1JTIENPUFlJTkcgXAogCUNPUFlJTkcuTElCIENoYW5nZUxvZyBJTlNUQUxMIE5FV1MgUkVBRE1FIGNvbXBpbGUgY29uZmlnLmd1ZXNzIFwKLQljb25maWcucnBhdGggY29uZmlnLnN1YiBkZXBjb21wIGluc3RhbGwtc2ggbHRtYWluLnNoIG1pc3NpbmcKKwljb25maWcucnBhdGggY29uZmlnLnN1YiBpbnN0YWxsLXNoIGx0bWFpbi5zaCBtaXNzaW5nCiBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQogZGlzdGRpciA9ICQoUEFDS0FHRSktJChWRVJTSU9OKQogdG9wX2Rpc3RkaXIgPSAkKGRpc3RkaXIpCkBAIC0yODYsNiArMjg1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjMsNiArMzI0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzEsNyArMzM0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzUwLDggKzM1Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjgsMTYgKzM3MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDMsNiArNDA3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI4LDYgKzQzNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyOSw2ICs1MzcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQyLDggKzU1MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1OSw2ICs1NjYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE2LDE2ICs2MjUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzcsNiArNjg4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Nyw2ICs2OTksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTYsNiArNzA5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMyw3ICs3NDgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTgwOCw4ICs4MjIsMTEgQEAKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlIFwKIAkkKHRvcF9idWlsZGRpcikvY29tbW9uL3NoYXZlLWxpYnRvb2wgXAogCSQodG9wX2J1aWxkZGlyKS9leHQvYWxzYXNwZGlmLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKKwkkKHRvcF9idWlsZGRpcikvZXh0L2hscy8ubGlicy9saWJnc3RmcmFnbWVudGVkKiBcCiAJJCh0b3BfYnVpbGRkaXIpL2V4dC9pdm9yYmlzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZXh0L2phY2svLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3Qvb3B1cy8ubGlicy9saWJnc3RvcHVzLntzbyxkbGwsRExMLGR5bGlifSBcCisJJCh0b3BfYnVpbGRkaXIpL2V4dC9tcGcxMjMvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYWFjcGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYW1ycGFyc2UvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvYXVkaW9wYXJzZXJzLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKQEAgLTgxNyw2ICs4MzQsNyBAQAogCSQodG9wX2J1aWxkZGlyKS9nc3QvaW1hZ2VmcmVlemUvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvbXBlZzR2aWRlb3BhcnNlLy5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L3F0bXV4Ly5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0L3J0cC8ubGlicy8qLntzbyxkbGwsRExMLGR5bGlifSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC9ydHBtdXgvLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QvcnRwdnA4Ly5saWJzLyoue3NvLGRsbCxETEwsZHlsaWJ9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0L3NjYWxldGVtcG8vLmxpYnMvKi57c28sZGxsLERMTCxkeWxpYn0gXApAQCAtODUxLDEwICs4NjksMTIgQEAKIAkkKHRvcF9zcmNkaXIpL2dzdC9obHMgXAogCSQodG9wX3NyY2RpcikvZ3N0L2ltYWdlZnJlZXplIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9pbnZ0ZWxlY2luZSBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvbGl2ZWFkZGVyIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9tcGVnNHZpZGVvcGFyc2UgXAogCSQodG9wX3NyY2RpcikvZ3N0L3F0bXV4IFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9ydHBtdXggXAogCSQodG9wX3NyY2RpcikvZ3N0L3J0cHZwOCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QvcnRwIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zY2FsZXRlbXBvIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9zZWxlY3RvciBcCiAJJCh0b3Bfc3JjZGlyKS9nc3Qvc2hhcGV3aXBlIFwKQEAgLTg3Myw2ICs4OTMsNyBAQAogCSQodG9wX3NyY2RpcikvZXh0L2l2b3JiaXMgXAogCSQodG9wX3NyY2RpcikvZXh0L2phY2sgXAogCSQodG9wX3NyY2RpcikvZXh0L21ldGFkYXRhIFwKKwkkKHRvcF9zcmNkaXIpL2V4dC9tcGcxMjMgXAogCSQodG9wX3NyY2RpcikvZXh0L3N3ZmRlYyBcCiAJJCh0b3Bfc3JjZGlyKS9leHQvdGFya2luIFwKIAkkKHRvcF9zcmNkaXIpL2V4dC90aGVvcmEgXApAQCAtMTQwMiw3ICsxNDIzLDEwIEBACiAJICBpZiB0ZXN0ICJ4JCRsaWJzbyIgIT0gIngiOyB0aGVuIFwKIAkgICAgZWNobyBDaGVja2luZyBzeW1ib2xzIGluICQkbGlic287IFwKIAkgICAgaWYgISAoJCh0b3Bfc3JjZGlyKS9jb21tb24vY2hlY2stZXhwb3J0cyAkJGxpYmRlZiAkJGxpYnNvKSA7IHRoZW4gXAotCSAgICAgIGZhaWw9MTsgXAorCSAgICAgIGVjaG8gIiQkbGliZGVmIjsgXAorCSAgICAgIGlmIHRlc3QgIiQkbGliYmFzZSIgIT0gImxpYmdzdGdsIjsgdGhlbiBcCisJICAgICAgICBmYWlsPTE7IFwKKwkgICAgICBmaTsgXAogCSAgICBmaTsgXAogCSAgZmk7IFwKIAlkb25lIDsgXApAQCAtMTQ0Niw2ICsxNDcwLDkgQEAKIAlAaWYgWyAtZCAuLi93d3cvZGF0YS9zcmMgXTsgdGhlbiBcCiAJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6IC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKIAkgIG12IC12ICQoUEFDS0FHRSktJChWRVJTSU9OKS50YXIueHouc2hhMjU2c3VtIC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKKwllbGlmIFsgLWQgLi4vLi4vd3d3L2RhdGEvc3JjIF07IHRoZW4gXAorCSAgbXYgLXYgJChQQUNLQUdFKS0kKFZFUlNJT04pLnRhci54eiAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCisJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6LnNoYTI1NnN1bSAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCiAJZmkKIAlAZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKIApkaWZmIC0tZ2l0IGEvTkVXUyBiL05FV1MKaW5kZXggYWE3YzQ4ZS4uZGVjMTIyYiAxMDA2NDQKLS0tIGEvTkVXUworKysgYi9ORVdTCkBAIC0xLDQ0ICsxLDIgQEAKLVRoaXMgaXMgR1N0cmVhbWVyIDEuNi4zCi0KLVRoZSBHU3RyZWFtZXIgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgdGhpcmQgYnVnZml4IHJlbGVhc2UgaW4gdGhlIHN0YWJsZQotMS42IHJlbGVhc2Ugc2VyaWVzIG9mIHlvdXIgZmF2b3VyaXRlIGNyb3NzLXBsYXRmb3JtIG11bHRpbWVkaWEgZnJhbWV3b3JrIQotCi1UaGlzIHJlbGVhc2Ugb25seSBjb250YWlucyBidWdmaXhlcyBhbmQgaXQgaXMgc2FmZSB0byB1cGRhdGUgZnJvbSAxLjYueC4gRm9yIGEKLWZ1bGwgbGlzdCBvZiBidWdmaXhlcyBzZWUgQnVnemlsbGE6Ci0gIGh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP2J1Z19zdGF0dXM9UkVTT0xWRUQmYnVnX3N0YXR1cz1WRVJJRklFRCZsaW1pdD0wJmxpc3RfaWQ9OTE1NjImb3JkZXI9YnVnX2lkJnByb2R1Y3Q9R1N0cmVhbWVyJnJlc29sdXRpb249RklYRUQmdGFyZ2V0X21pbGVzdG9uZT0xLjYuMwotCi1TZWUgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvMS42LyBmb3IgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoaXMgZG9jdW1lbnQuCi0KLU1ham9yIGJ1Z2ZpeGVzCi0KLS0gRml4IHJlZ3Jlc3Npb24gaW4gR0wgbGlicmFyeSB0aGF0IG1hZGUgZ2xpbWFnZXNpbmsgdW5zYWJsZSBvbiBBbmRyb2lkCi0tIEludGVnZXIgYXJpdGhtZXRpYyBvdmVyZmxvdyBpbiBxdWV1ZTIgZWxlbWVudCB0aGF0IGNvdWxkIGJyZWFrIGJ1ZmZlcmluZyBvcgotICBjYXVzZSBjcmFzaGVzIGR1ZSB0byBOVUxMIHBvaW50ZXIgZGVyZWZlcmVuY2UKLS0gRml4IGNyYXNoIGluIEFBQy9BRFRTIHR5cGVmaW5kZXIgY2F1c2VkIGJ5IHJlYWRpbmcgbW9yZSBtZW1vcnkgdGhhbiBpcwotICBhdmFpbGFibGUKLS0gU3RvcCBpZ25vcmluZyBlbmNvZGVyIGVycm9ycyBpbiB0aGUgVlA4L1ZQOSBlbmNvZGVycwotLSBEZXByZWNhdGUgR3N0VmlkZW9FbmNvZGVyIEdTVF9WSURFT19FTkNPREVSX0ZMT1dfRFJPUFBFRC4gSXQncyByZWR1ZGFudCBhbmQKLSAgd2FzIG5ldmVyIGFjdHVhbGx5IGltcGxlbWVudGVkCi0tIEVuc3VyZSB0byBzdG9yZSB0aGUgY29ycmVjdCB2aWRlbyBpbmZvIGluIEdzdFZpZGVvQnVmZmVyUG9vbAotLSBGaXggY2FwcyBpbiBydHNwc3JjIHdoZW4gZG9pbmcgU1JUUCBvdmVyIGludGVybGVhdmVkIFRDUAotLSBGaXggY3Jhc2ggaW4gcGNhcCBwYXJzZXIgb24gMC1zaXplZCBwYWNrZXRzCi0tIENsZWFyIEVPUyBmbGFnIGluIGFwcHNyYyB0byBhbGxvdyByZXVzZSBhZnRlciBFT1MgYW5kIGZsdXNoaW5nCi0tIElnbm9yZSBmbHVzaGluZyBzdHJlYW1zIGluIHN0cmVhbXN5bmNocm9uaXplciBkdXJpbmcgc3RyZWFtIHN3aXRjaGVzIHRvIGZpeAotICBwcm9ibGVtcyBjYXVzZWQgYnkgdGhpcyBpbiBnc3QtZWRpdGluZy1zZXJ2aWNlcwotLSBJZ25vcmUgdGFncyBhbmQgb3RoZXIgbWV0YWRhdGEgaW4gV0FWIGZpbGVzIGFmdGVyIHRoZSAiZGF0YSIgY2h1bmsgaW4gUFVTSAotICBtb2RlIHRvIHByZXZlbnQgdGhlbSBmcm9tIGJlaW5nIGludGVycHJldGVkIGFzIGF1ZGlvCi0tIENvcnJlY3RseSB1c2UgY29sb3JpbWV0cnkgaW4gdjRsMiBvbmx5IGZvciBZVVYgY29sb3IgZm9ybWF0cwotLSBTZXQgcmVzZXJ2ZWQgYml0cyBpbiBNUEVHIFRTIG11eGVyIHRvIDFzCi0tIEZpeCBjYWxjdWxhdGlvbiBvZiBTQkMgZnJhbWUgbGVuZ3RocwotLSBGaXggb3V0cHV0IG9mIHRoZSBSVFAgSlBFRzIwMDAgZGVwYXlsb2FkZXIgdG8gaGF2ZSBvbmUgZnJhbWUgcGVyIGJ1ZmZlcgotICBhbmQgY3Jhc2ggaW4gdGhlIE9wZW5KUEVHIGRlY29kZXIgb24gaW5jb21wbGV0ZSBmcmFtZXMKLS0gVXBkYXRlIGZmbXBlZyBzbmFwc2hvdCBpbiBnc3QtbGliYXYgdG8gMi44LjUKLS0gTWVtb3J5IGxlYWsgZml4ZXMgaW4gc2NhbGV0ZW1wbywgdGhlIHJhdyB2aWRlbyBSVFAgZGVwYXlsb2FkZXIsCi0gIGFuZCBpbiBwbGF5c2luayByZWxhdGVkIHRvIGF1ZGlvL3ZpZGVvIGZpbHRlcnMKLS0gRml4ZXMgZm9yIGVycm9yIGhhbmRsaW5nIGluIHRoZSBPU1ggYXVkaW8gcGx1Z2luCi0tIFZhcmlvdXMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGFubm90YXRpb24gZml4ZXMgYW5kIGFkZGl0aW9ucwotLSBDb21waWxlciB3YXJuaW5nIGZpeGVzIGZvciBsYXRlc3QgY2xhbmcgY29tcGlsZXIKLS0gYW5kIG1hbnksIG1hbnkgbW9yZToKLSAgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvYnVnbGlzdC5jZ2k/YnVnX3N0YXR1cz1SRVNPTFZFRCZidWdfc3RhdHVzPVZFUklGSUVEJmxpbWl0PTAmbGlzdF9pZD05MTU2MiZvcmRlcj1idWdfaWQmcHJvZHVjdD1HU3RyZWFtZXImcmVzb2x1dGlvbj1GSVhFRCZ0YXJnZXRfbWlsZXN0b25lPTEuNi4zCi0KK1RoaXMgaXMgR1N0cmVhbWVyIDEuNy45MQogCmRpZmYgLS1naXQgYS9SRUFETUUgYi9SRUFETUUKaW5kZXggZjE3NWIxYi4uZmE1M2Y5NSAxMDA2NDQKLS0tIGEvUkVBRE1FCisrKyBiL1JFQURNRQpAQCAtMSw0ICsxLDQgQEAKLUdTdHJlYW1lciAxLjUueCBkZXZlbG9wbWVudCBzZXJpZXMKK0dTdHJlYW1lciAxLjcueCBkZXZlbG9wbWVudCBzZXJpZXMKIAogV0hBVCBJVCBJUwogLS0tLS0tLS0tLQpkaWZmIC0tZ2l0IGEvUkVMRUFTRSBiL1JFTEVBU0UKaW5kZXggZDM2NmU3OS4uMTdjYzE5MyAxMDA2NDQKLS0tIGEvUkVMRUFTRQorKysgYi9SRUxFQVNFCkBAIC0xLDE5ICsxLDE0IEBACiAKLVJlbGVhc2Ugbm90ZXMgZm9yIEdTdHJlYW1lciBCYWQgUGx1Z2luc8KgMS42LjMKK1JlbGVhc2Ugbm90ZXMgZm9yIEdTdHJlYW1lciBCYWQgUGx1Z2luc8KgMS43LjkxCiAKLVRoZSBHU3RyZWFtZXIgdGVhbSBpcyBwcm91ZCB0byBhbm5vdW5jZSB0aGUgdGhpcmQgYnVnZml4IHJlbGVhc2UgaW4gdGhlIHN0YWJsZQotMS42IHJlbGVhc2Ugc2VyaWVzIG9mIHlvdXIgZmF2b3VyaXRlIGNyb3NzLXBsYXRmb3JtIG11bHRpbWVkaWEgZnJhbWV3b3JrIQorVGhlIEdTdHJlYW1lciB0ZWFtIGlzIHBsZWFzZWQgdG8gYW5ub3VuY2UgdGhlIHNlY29uZCByZWxlYXNlIGNhbmRpZGF0ZSBvZiB0aGUgc3RhYmxlCisxLjggcmVsZWFzZSBzZXJpZXMuIFRoZSAxLjggcmVsZWFzZSBzZXJpZXMgaXMgYWRkaW5nIG5ldyBmZWF0dXJlcyBvbiB0b3Agb2YKK3RoZSAxLjAsIDEuMiwgMS40IGFuZCAxLjYgc2VyaWVzIGFuZCBpcyBwYXJ0IG9mIHRoZSBBUEkgYW5kIEFCSS1zdGFibGUgMS54IHJlbGVhc2UKK3NlcmllcyBvZiB0aGUgR1N0cmVhbWVyIG11bHRpbWVkaWEgZnJhbWV3b3JrLgogCiAKLQotVGhpcyByZWxlYXNlIG9ubHkgY29udGFpbnMgYnVnZml4ZXMgYW5kIGl0IGlzIHNhZmUgdG8gdXBkYXRlIGZyb20gMS42LnguIEZvciBhCi1mdWxsIGxpc3Qgb2YgYnVnZml4ZXMgc2VlIEJ1Z3ppbGxhLgotCi0KLQotU2VlIGh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLzEuNi8KLWZvciB0aGUgZnVsbCByZWxlYXNlIG5vdGVzLgotCitCaW5hcmllcyBmb3IgQW5kcm9pZCwgaU9TLCBNYWMgT1MgWCBhbmQgV2luZG93cyB3aWxsIGJlIHByb3ZpZGVkIHNlcGFyYXRlbHkKK2R1cmluZyB0aGUgc3RhYmxlIDEuOCByZWxlYXNlIHNlcmllcy4KIAogCiAiVGhhdCBhbiBhY2N1c2F0aW9uPyIKQEAgLTY0LDIzICs1OSwzMiBAQAogCiBCdWdzIGZpeGVkIGluIHRoaXMgcmVsZWFzZQogICAgICAKLSAgICAgICogNzU2NTczIDogcGNhcHBhcnNlOiBDcmFzaCBpbiBwcmVzZW5jZSBvZiBlbXB0eSBwYWNrZXQKLSAgICAgICogNzU4Mjg2IDogcXRpdGVtOiBHc3RRU0dUZXh0dXJlIGxlYWtzIGluIHVwZGF0ZVBhaW50Tm9kZQotICAgICAgKiA3NjAxMjcgOiBtcGVndHNtdXg6IFJlc2VydmUgYml0cyBub3Qgc2V0IHRvIHRvIDEncwotICAgICAgKiA3NjA1NTEgOiBzaG1zaW5rOiBEZWFkbG9jayBpbiBtZW1vcnkgZnJlZQotICAgICAgKiA3NjA4ODMgOiBnbDogQmxhY2sgc2NyZWVuIG9uIEFuZHJvaWQgYWZ0ZXIgdXBkYXRlIGZyb20gMS42LjEgdG8gMS42LjIKKyAgICAgICogNzQzMjU5IDogdHNkZW11eDogIGJvZ3VzIHRpbWVzdGFtcCB3aGVuIFBUUyA8IFBDUgorICAgICAgKiA3NTYyODIgOiBbUExVR0lOLU1PVkVdIE1vdmUgb3B1cyB0byAtYmFzZQorICAgICAgKiA3NjA1NjYgOiBBbGwgdGhlIGdsZWZmZWN0cyBoYXZlIHRoZSBzYW1lIG5hbWUgYW5kIGRlc2NyaXB0aW9uCisgICAgICAqIDc2Mjk5OSA6IE1lbW9yeSBsZWFrIGluIHFtbGdsc2luaworICAgICAgKiA3NjMwNDUgOiBnbG1lbW9yeWFsbG9jYXRvcjogQnVmZmVyIHNpemUgbWlzcy1tYXRjaCB3aGVuIG1hcHBpbmcgR0xNZW1vcnkgd2l0aG91dCBQQk8KKyAgICAgICogNzYzMDc5IDogaGxzL01ha2VmaWxlLmFtIG1pc3NpbmcgT1BFTlNTTF9DRkxBR1MKKyAgICAgICogNzYzMDk4IDogYWhjc3JjOiByZW1vdmUgdW51c2VkIGZpbGUKKyAgICAgICogNzYzMTY4IDogZ2xkaXNwbGF5OiBfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZF91bmxvY2tlZCBsb29rcyBzdXNwaWNpb3VzCisgICAgICAqIDc2MzIyMCA6IG1wZWd2aWRlb3BhcnNlOiBTdXBwb3J0IG5vbi1oaWVyYXJjaGljYWwgcHJvZmlsZS9sZXZlbCBhZ2FpbiBbUkVHUkVTU0lPTl0KKyAgICAgICogNzYzMzU2IDogZ2xpbWFnZXNpbms6IEZpeCB3aW5kb3cgbWVtb3J5IGxlYWsKKyAgICAgICogNzYzMzY1IDogZ2xmaWx0ZXJhcHAgbm90IGNvcnJlY3RseSBkcmF3aW5nIHRoZSBkZWZhdWx0IHNjZW5lCisgICAgICAqIDc2MzQwMSA6IFplcm8tY29weSB2aWRlbyBwbGF5YmFjayBkb2Vzbid0IHdvcmsgb24gQW5kcm9pZCA0LnggKFFBIDEuNy45MCkKKyAgICAgICogNzYzNDk0IDogaDI2NXBhcnNlOiBTZWdmYXVsdCB3aGlsZSB0cmFuZm9ybWluZyBoZXZjIHBhY2tldGl6ZWQgIHN0cmVhbSB0byBuYWwgYWxpZ25lZCBieXRlc3RyZWFtCisgICAgICAqIDc2MzUwMyA6IHRzZGVtdXggY2FuIGNyYXNoIG9uIHNodXRkb3duCiAKID09PT0gRG93bmxvYWQgPT09PQogCiBZb3UgY2FuIGZpbmQgc291cmNlIHJlbGVhc2VzIG9mIGdzdC1wbHVnaW5zLWJhZCBpbiB0aGUgZG93bmxvYWQKLWRpcmVjdG9yeTogaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC8KK2RpcmVjdG9yeTogaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvCiAKIFRoZSBnaXQgcmVwb3NpdG9yeSBhbmQgZGV0YWlscyBob3cgdG8gY2xvbmUgaXQgY2FuIGJlIGZvdW5kIGF0CiBodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLWJhZC8KIAogPT09PSBIb21lcGFnZSA9PT09CiAKLVRoZSBwcm9qZWN0J3Mgd2Vic2l0ZSBpcyBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8KK1RoZSBwcm9qZWN0J3Mgd2Vic2l0ZSBpcyBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvCiAKID09PT0gU3VwcG9ydCBhbmQgQnVncyA9PT09CiAKQEAgLTEwNSwxMCArMTA5LDIxIEBACiAgICAgICAgIAogQ29udHJpYnV0b3JzIHRvIHRoaXMgcmVsZWFzZQogICAgIAotICAgICAgKiBCb2IgSG9sY29tYgotICAgICAgKiBNYXR0IENyYW5lCisgICAgICAqIEFsZXNzYW5kcm8gRGVjaW5hCisgICAgICAqIEF1csOpbGllbiBaYW5lbGxpCisgICAgICAqIEVkd2FyZCBIZXJ2ZXkKKyAgICAgICogSmFuIFNjaG1pZHQKKyAgICAgICogSm9lIEdvcnNlCisgICAgICAqIEp1c3RpbiBLaW0KKyAgICAgICogTWFyayBOYXV3ZWxhZXJ0cworICAgICAgKiBNYXJ0aW4gS2VsbHkKKyAgICAgICogTWF0dGhldyBXYXRlcnMKKyAgICAgICogTmljb2xhcyBEdWZyZXNuZQorICAgICAgKiBSZXluYWxkbyBILiBWZXJkZWpvIFBpbm9jaGV0CiAgICAgICAqIFNlYmFzdGlhbiBEcsO2Z2UKICAgICAgICogU2VyZ2V5IEJvcm92a292Ci0gICAgICAqIFRpbSBTaGVyaWRhbgorICAgICAgKiBTcmVlcmVuaiBCYWxhY2hhbmRyYW4KICAgICAgICogVGltLVBoaWxpcHAgTcO8bGxlcgorICAgICAgKiBWaW5lZXRoIFRNCisgICAgICAqIFZpdmlhIE5pa29sYWlkb3UKIMKgClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKaW5kZXggMjE0NDgxMS4uMjE2MmVmOCAxMDA2NDQKLS0tIGEvYWNsb2NhbC5tNAorKysgYi9hY2xvY2FsLm00CkBAIC0xNDc5LDcgKzE0NzksNiBAQAogbTRfaW5jbHVkZShbY29tbW9uL200L29yYy5tNF0pCiBtNF9pbmNsdWRlKFtjb21tb24vbTQvcGtnLm00XSkKIG00X2luY2x1ZGUoW200L2dldHRleHQubTRdKQotbTRfaW5jbHVkZShbbTQvZ3NldHRpbmdzLm00XSkKIG00X2luY2x1ZGUoW200L2dzdC1maW9ucmVhZC5tNF0pCiBtNF9pbmNsdWRlKFttNC9nc3Qtc2RsLm00XSkKIG00X2luY2x1ZGUoW200L2ljb252Lm00XSkKZGlmZiAtLWdpdCBhL2F1dG9nZW4uc2ggYi9hdXRvZ2VuLnNoCmluZGV4IDc5MTI2NTQuLmVlMmNlOTIgMTAwNzU1Ci0tLSBhL2F1dG9nZW4uc2gKKysrIGIvYXV0b2dlbi5zaApAQCAtMzcsNyArMzcsMTEgQEAKIGlmIHRlc3QgISBcKCAteCAuZ2l0L2hvb2tzL3ByZS1jb21taXQgLWEgLUwgLmdpdC9ob29rcy9wcmUtY29tbWl0IFwpOwogdGhlbgogICAgIHJtIC1mIC5naXQvaG9va3MvcHJlLWNvbW1pdAotICAgIGxuIC1zIC4uLy4uL2NvbW1vbi9ob29rcy9wcmUtY29tbWl0Lmhvb2sgLmdpdC9ob29rcy9wcmUtY29tbWl0CisgICAgaWYgISBsbiAtcyAuLi8uLi9jb21tb24vaG9va3MvcHJlLWNvbW1pdC5ob29rIC5naXQvaG9va3MvcHJlLWNvbW1pdCAyPiAvZGV2L251bGwKKyAgICB0aGVuCisgICAgICAgIGVjaG8gIkZhaWxlZCB0byBjcmVhdGUgY29tbWl0IGhvb2sgc3ltbGluaywgY29weWluZyBpbnN0ZWFkIC4uLiIKKyAgICAgICAgY3AgY29tbW9uL2hvb2tzL3ByZS1jb21taXQuaG9vayAuZ2l0L2hvb2tzL3ByZS1jb21taXQKKyAgICBmaQogZmkKIAogIyBHTlUgZ2V0dGV4dCBhdXRvbWFrZSBzdXBwb3J0IGRvZXNuJ3QgZ2V0IGFsb25nIHdpdGggZ2l0LgpAQCAtNTAsNiArNTQsOCBAQAogCiBpZiB0ZXN0ICJ4JHBhY2thZ2UiID0gInhnc3RyZWFtZXIiOyB0aGVuCiAgIENPTkZJR1VSRV9ERUZfT1BUPSIkQ09ORklHVVJFX0RFRl9PUFQgLS1lbmFibGUtZG9jYm9vayAtLWVuYWJsZS1mYWlsaW5nLXRlc3RzIC0tZW5hYmxlLXBvaXNvbmluZyIKK2VsaWYgdGVzdCAieCRwYWNrYWdlIiA9ICJ4Z3N0LXBsdWdpbnMtYmFkIjsgdGhlbgorICBDT05GSUdVUkVfREVGX09QVD0iJENPTkZJR1VSRV9ERUZfT1BUIC0td2l0aC1wbGF5ZXItdGVzdHMiCiBmaQogCiBhdXRvZ2VuX29wdGlvbnMgJEAKZGlmZiAtLWdpdCBhL2NvbW1vbi9NYWtlZmlsZS5pbiBiL2NvbW1vbi9NYWtlZmlsZS5pbgppbmRleCBkNzFiM2JhLi5hNGExZjk5IDEwMDY0NAotLS0gYS9jb21tb24vTWFrZWZpbGUuaW4KKysrIGIvY29tbW9uL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ4LDYgKzI0Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg1LDYgKzI4Niw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkzLDcgKzI5Niw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMiw4ICszMTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzMwLDE2ICszMzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY1LDYgKzM2OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5MCw2ICszOTYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTEsNiArNDk5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwNCw4ICs1MTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjEsNiArNTI4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3OCwxNiArNTg3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM5LDYgKzY1MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDksNiArNjYxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU4LDYgKzY3MSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTUsNyArNzEwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9jb21tb24vY2hlY2subWFrIGIvY29tbW9uL2NoZWNrLm1hawppbmRleCA4YTkwYjVkLi42NjQ5N2ZmIDEwMDY0NAotLS0gYS9jb21tb24vY2hlY2subWFrCisrKyBiL2NvbW1vbi9jaGVjay5tYWsKQEAgLTEyLDM2ICsxMiwzMiBAQAogZW5kaWYKIAogTE9PUFMgPz0gMTAKK0FNX1RFU1RTX0VOVklST05NRU5UID0gQ0tfREVGQVVMVF9USU1FT1VUPTIwCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGJ5IHJ1bm5pbmcgbWFrZSB0ZXN0LmNoZWNrCiAjIGlmIHRoZSB0ZXN0IGZhaWxzLCBydW4gaXQgYWdhaW4gYXQgYXQgbGVhc3QgZGVidWcgbGV2ZWwgMgogJS5jaGVjazogJQogCUAkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqIHx8CQkJCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAogCUdTVF9ERUJVRz0kJEdTVF9ERUJVRywqOjIJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqCiAKICMganVzdCBsaWtlICdjaGVjaycsIGJ1dCBkb24ndCBydW4gaXQgYWdhaW4gaWYgaXQgZmFpbHMgKHVzZWZ1bCBmb3IgZGVidWdnaW5nKQogJS5jaGVjay1ub3JlcGVhdDogJQogCUAkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGluIGEgbG9vcAogJS50b3J0dXJlOiAlCiAJQGZvciBpIGluIGBzZXEgMSAkKExPT1BTKWA7IGRvCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqOyBkb25lCiAKICMgcnVuIGFueSBnaXZlbiB0ZXN0IGluIGFuIGluZmluaXRlIGxvb3AKICUuZm9yZXZlcjogJQogCUB3aGlsZSB0cnVlOyBkbwkJCQkJCVwKIAkkKEFNX1RFU1RTX0VOVklST05NRU5UKQkJCQkJXAotCUNLX0RFRkFVTFRfVElNRU9VVD0yMAkJCQkJXAogCSQqIHx8IGJyZWFrOyBkb25lCiAKICMgdmFsZ3JpbmQgYW55IGdpdmVuIHRlc3QgYnkgcnVubmluZyBtYWtlIHRlc3QudmFsZ3JpbmQKQEAgLTU3LDcgKzUzLDcgQEAKIAktLXNob3ctcG9zc2libHktbG9zdD1ubyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAktLWxlYWstcmVzb2x1dGlvbj1oaWdoIC0tbnVtLWNhbGxlcnM9MjAJCQlcCiAJLi8kKiAyPiYxIHwgdGVlICQkdmFsZ3JpbmRfbG9nIDsJCQlcCi0JaWYgZ3JlcCAiPT0iICQkdmFsZ3JpbmRfbG9nID4gL2Rldi9udWxsIDI+JjE7IHRoZW4JXAorCWlmIGdyZXAgIl49PSIgJCR2YWxncmluZF9sb2cgPiAvZGV2L251bGwgMj4mMTsgdGhlbglcCiAJICAgIHJtICQkdmFsZ3JpbmRfbG9nOwkJCQkJXAogCSAgICBleGl0IDE7CQkJCQkJXAogCWZpIDsJCQkJCQkJXApkaWZmIC0tZ2l0IGEvY29tbW9uL2dzdC5zdXBwIGIvY29tbW9uL2dzdC5zdXBwCmluZGV4IDgxZjk4YTkuLjI3NDBlOWEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9nc3Quc3VwcAorKysgYi9jb21tb24vZ3N0LnN1cHAKQEAgLTM5NzYsNyArMzk3Niw2IEBACiB7CiAgICBjbG9zdXJlcyBhcmVuJ3QgdmFsZ3JpbmQgZnJpZW5kbHkgKGJnbyM3Mzk4NTApCiAgICBNZW1jaGVjazpMZWFrCi0gICBtYXRjaC1sZWFrLWtpbmRzOiBwb3NzaWJsZQogICAgZnVuOmNhbGxvYwogICAgLi4uCiAgICBmdW46Z19jY2xvc3VyZV9uZXcKQEAgLTM5ODUsNyArMzk4NCw2IEBACiB7CiAgICBjbG9zdXJlcyBhcmVuJ3QgdmFsZ3JpbmQgZnJpZW5kbHkgKGJnbyM3Mzk4NTApCiAgICBNZW1jaGVjazpMZWFrCi0gICBtYXRjaC1sZWFrLWtpbmRzOiBwb3NzaWJsZQogICAgZnVuOm1hbGxvYwogICAgLi4uCiAgICBmdW46Z19jbG9zdXJlX2FkZF9pbnZhbGlkYXRlX25vdGlmaWVyCkBAIC0zOTk0LDcgKzM5OTIsNiBAQAogewogICAgY2xvc3VyZXMgYXJlbid0IHZhbGdyaW5kIGZyaWVuZGx5IChiZ28jNzM5ODUwKQogICAgTWVtY2hlY2s6TGVhawotICAgbWF0Y2gtbGVhay1raW5kczogcG9zc2libGUKICAgIGZ1bjpjYWxsb2MKICAgIC4uLgogICAgZnVuOmdfY2xvc3VyZV9uZXdfc2ltcGxlCkBAIC00MDIwLDMgKzQwMTcsMTIgQEAKICAgIE1lbWNoZWNrOkFkZHI4CiAgICBmdW46ZG9fbG9va3VwX3gKIH0KKworeworICAgPHF1YXJrIHRhYmxlcyBhcmUgbGVha2VkIG9uIHB1cnBvc2Ugd2hlbiB0aGV5IGFyZSBleHBhbmRlZCwgb2JzZXJ2ZWQgd2l0aCBnbGliIDIuNDYgYW5kIGdzdC1ydHNwLXNlcnZlciB0ZXN0cz4KKyAgIE1lbWNoZWNrOkxlYWsKKyAgIGZ1bjptYWxsb2MKKyAgIC4uLgorICAgZnVuOmdfcXVhcmtfaW5pdAorICAgZnVuOmdsaWJfaW5pdF9jdG9yCit9CmRpZmYgLS1naXQgYS9jb21tb24vZ3RrLWRvYy1wbHVnaW5zLm1hayBiL2NvbW1vbi9ndGstZG9jLXBsdWdpbnMubWFrCmluZGV4IDk5N2E2NzIuLmZlMDk3N2MgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9ndGstZG9jLXBsdWdpbnMubWFrCisrKyBiL2NvbW1vbi9ndGstZG9jLXBsdWdpbnMubWFrCkBAIC0xNzQsNyArMTc0LDcgQEAKIHNnbWwtYnVpbGQuc3RhbXA6IHNjYW4tYnVpbGQuc3RhbXAgJChDRklMRV9HTE9CKSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9wbHVnaW5zLnhzbCAkKGV4cGFuZF9jb250ZW50X2ZpbGVzKQogCUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIFhNTCcKIAlALW1rZGlyIC1wIHhtbAotCUBmb3IgYSBpbiAkKHNyY2RpcikvJChJTlNQRUNUX0RJUikvKi54bWw7IGRvIFwKKwlAZm9yIGEgaW4gJChpbnNwZWN0X2ZpbGVzKTsgZG8gXAogCSAgICB4c2x0cHJvYyAtLXN0cmluZ3BhcmFtIG1vZHVsZSAkKE1PRFVMRSkgXAogCQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9wbHVnaW5zLnhzbCAkJGEgPiB4bWwvYGJhc2VuYW1lICQkYWA7IGRvbmUKIAlAZm9yIGYgaW4gJChFWEFNUExFX0NGSUxFUyk7IGRvIFwKZGlmZiAtLWdpdCBhL2NvbW1vbi9ndGstZG9jLm1hayBiL2NvbW1vbi9ndGstZG9jLm1hawppbmRleCBmOGVkZjQwLi4yYWFiM2E5IDEwMDY0NAotLS0gYS9jb21tb24vZ3RrLWRvYy5tYWsKKysrIGIvY29tbW9uL2d0ay1kb2MubWFrCkBAIC05NywxNyArOTcsMTggQEAKIAkgICAgICAgICAgICBzY2Fub2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKIAkgICAgICAgIGZpOyBcCiAJICAgIGZpOyBcCi0JICAgIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPWBjZCAkKHRvcF9idWlsZGRpcikgJiYgcHdkYAkJXAotCSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJCVwKKwkgICAgR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9YGNkICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgCVwKKwkgICAgR1NUX1BMVUdJTl9QQVRIXzFfMD0JCQkJCVwKIAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKIAkgICAgJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpCQkJCQlcCiAJICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVOKSIJXAogCSAgICBDRkxBR1M9IiQoR1RLRE9DX0NGTEFHUykgJChDRkxBR1MpIgkJCQlcCiAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKIAkgICAgZ3RrZG9jLXNjYW5nb2JqIC0tdHlwZS1pbml0LWZ1bmM9ImdzdF9pbml0KE5VTEwsTlVMTCkiCVwKLQkgICAgICAgICQkc2Nhbm9ial9vcHRpb25zIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgOwkJCQlcCisJICAgICAgICAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIDsJCVwKIAllbHNlCQkJCQkJCQlcCiAJICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbwkJCQlcCisJICAgICAgICQoTUtESVJfUCkgJChkaXJuYW1lICQkaSkgOwkJCQlcCiAJICAgICAgIHRlc3QgLWYgJCRpIHx8IHRvdWNoICQkaSA7CQkJCVwKIAkgICAgZG9uZQkJCQkJCQlcCiAJZmkKZGlmZiAtLWdpdCBhL2NvbW1vbi9tNC9NYWtlZmlsZS5pbiBiL2NvbW1vbi9tNC9NYWtlZmlsZS5pbgppbmRleCA0NDFkNmZjLi5kNGVjMjhjIDEwMDY0NAotLS0gYS9jb21tb24vbTQvTWFrZWZpbGUuaW4KKysrIGIvY29tbW9uL200L01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTg4LDYgKzE4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjI1LDYgKzIyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjMzLDcgKzIzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTI1Miw4ICsyNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMjcwLDE2ICsyNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzA1LDYgKzMwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTMzMCw2ICszMzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00MzEsNiArNDM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ0NCw4ICs0NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC00NjEsNiArNDY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTUxOCwxNiArNTI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNTc5LDYgKzU5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC01ODksNiArNjAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNTk4LDYgKzYxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02MzUsNyArNjUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9jb21tb24vbTQvZ3N0LWFyZ3MubTQgYi9jb21tb24vbTQvZ3N0LWFyZ3MubTQKaW5kZXggYjQ3OGM4Mi4uMDYyODEyMyAxMDA2NDQKLS0tIGEvY29tbW9uL200L2dzdC1hcmdzLm00CisrKyBiL2NvbW1vbi9tNC9nc3QtYXJncy5tNApAQCAtMzU4LDMgKzM1OCwyOSBAQAogICAgICAgZmkKICAgICBdKQogXSkKKworZG5sIEVuYWJsZSBleHRyYSBjaGVja3MgYnkgZGVmYXVsdCBvbmx5IGZvciBkZXZlbG9wbWVudCB2ZXJzaW9ucworQUNfREVGVU4oW0FHX0dTVF9BUkdfRU5BQkxFX0VYVFJBX0NIRUNLU10sCitbCisgIEFDX0FSR19FTkFCTEUoZXh0cmEtY2hlY2ssCisgICAgQUNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWV4dHJhLWNoZWNrc10sCisgICAgICAgICAgICAgICAgICAgW0VuYWJsZSBleHRyYSBydW50aW1lIGNoZWNrc10pLAorICAgIFsKKyAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgICAgeWVzKSBFWFRSQV9DSEVDS1M9eWVzIDs7CisgICAgICAgIG5vKSAgRVhUUkFfQ0hFQ0tTPW5vIDs7CisgICAgICAgICopICAgQUNfTVNHX0VSUk9SKGJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWV4dHJhLWNoZWNrcykgOzsKKyAgICAgIGVzYWMKKyAgICBdLAorICAgIFsKKyAgICAgIGlmIHRlc3QgInhgZXhwciAkUEFDS0FHRV9WRVJTSU9OX01JTk9SICUgMmAiID0gIngxIiAtYSAieGBleHByICRQQUNLQUdFX1ZFUlNJT05fTUlDUk8gJzwnIDkwYCIgPSAieDEiOyB0aGVuCisgICAgICAgIEVYVFJBX0NIRUNLUz15ZXMKKyAgICAgIGVsc2UKKyAgICAgICAgRVhUUkFfQ0hFQ0tTPW5vCisgICAgICBmaQorICAgIF0pCisKKyAgICBpZiB0ZXN0ICJ4JEVYVFJBX0NIRUNLUyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgQUNfREVGSU5FKEdTVF9FTkFCTEVfRVhUUkFfQ0hFQ0tTLCAxLCBbRGVmaW5lIGlmIGV4dHJhIHJ1bnRpbWUgY2hlY2tzIHNob3VsZCBiZSBlbmFibGVkXSkKKyAgICBmaQorXSkKZGlmZiAtLWdpdCBhL2NvbW1vbi9tNC9nc3QtZXJyb3IubTQgYi9jb21tb24vbTQvZ3N0LWVycm9yLm00CmluZGV4IGQ2NDg3Y2MuLjAwNjc1ODggMTAwNjQ0Ci0tLSBhL2NvbW1vbi9tNC9nc3QtZXJyb3IubTQKKysrIGIvY29tbW9uL200L2dzdC1lcnJvci5tNApAQCAtNTIsMzEgKzUyLDYgQEAKICAgaWYgdGVzdCAieCQxIiAhPSAieG5vIgogICB0aGVuCiAgICAgQVNfQ09NUElMRVJfRkxBRygtV2Vycm9yLCBFUlJPUl9DRkxBR1M9IiRFUlJPUl9DRkxBR1MgLVdlcnJvciIpCi0KLSAgICBkbmwgaWYgLVdlcnJvciBpc24ndCBzdXBvcnRlZCwgdHJ5IC1lcnJ3YXJuPSVhbGwgKFN1biBGb3J0ZSBjYXNlKQotICAgIGlmIHRlc3QgIngkRVJST1JfQ0ZMQUdTIiA9ICJ4IgotICAgIHRoZW4KLSAgICAgIEFTX0NPTVBJTEVSX0ZMQUcoWy1lcnJ3YXJuPSVhbGxdLCBbCi0gICAgICAgICAgRVJST1JfQ0ZMQUdTPSItZXJyd2Fybj0lYWxsIgotICAgICAgICAgIGRubCB0cnkgLWVycndhcm49JWFsbCxubyVFX0VNUFRZX0RFQ0xBUkFUSU9OLAotICAgICAgICAgIGRubCBubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCxubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCwKLSAgICAgICAgICBkbmwgbm8lRV9NQUNST19SRURFRklORUQgKFN1biBGb3J0ZSBjYXNlKQotICAgICAgICAgIGRubCBGb3IgRm9ydGUgd2UgbmVlZCBkaXNhYmxlICJlbXB0eSBkZWNsYXJhdGlvbiIgd2FybmluZyBwcm9kdWNlZCBieSB1bi1uZWVkZWQgc2VtaWNvbG9uCi0gICAgICAgICAgZG5sICJzdGF0ZW1lbnQgbm90IHJlYWNoZWQiIGRpc2FibGVkIGJlY2F1c2UgdGhlcmUgaXMgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCkgaW4gc29tZSBwbGFjZXMKLSAgICAgICAgICBkbmwgIm1hY3JvIHJlZGVmaW5lZCIgYmVjYXVzZSBvZiBnc3QvZ2V0dGV4dC5oCi0gICAgICAgICAgZG5sIEZJWE1FOiBpcyBpdCByZWFsbHkgc3VwcG9zZWQgdG8gYmUgJ0FSR1VFTUVOVCcgYW5kIG5vdCAnQVJHVU1FTlQnPwotICAgICAgICAgIGZvciBmIGluICdubyVFX0VNUFRZX0RFQ0xBUkFUSU9OJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfU1RBVEVNRU5UX05PVF9SRUFDSEVEJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfQVJHVUVNRU5UX01JU01BVENIJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfTUFDUk9fUkVERUZJTkVEJyBcCi0gICAgICAgICAgICAgICAgICAgJ25vJUVfTE9PUF9OT1RfRU5URVJFRF9BVF9UT1AnCi0gICAgICAgICAgZG8KLSAgICAgICAgICAgIEFTX0NPTVBJTEVSX0ZMQUcoWy1lcnJ3YXJuPSVhbGwsJGZdLCBbCi0gICAgICAgICAgICAgIEVSUk9SX0NGTEFHUz0iJEVSUk9SX0NGTEFHUywkZiIKLSAgICAgICAgICAgIF0pCi0gICAgICAgICAgZG9uZQotICAgICAgXSkKLSAgICBmaQogICBmaQogCiAgIGlmIHRlc3QgIngkMiIgIT0gIngiCkBAIC0xNDIsMjggKzExNyw2IEBACiAJICBBU19DWFhfQ09NUElMRVJfRkxBRyhbLWZuby1zdHJpY3QtYWxpYXNpbmddLAogCSAgICBFUlJPUl9DWFhGTEFHUz0iJEVSUk9SX0NYWEZMQUdTIC1mbm8tc3RyaWN0LWFsaWFzaW5nIikKIAkgIF0pCi0gICAgZWxzZQotICAgICAgZG5sIGlmIC1XZXJyb3IgaXNuJ3Qgc3Vwb3J0ZWQsIHRyeSAtZXJyd2Fybj0lYWxsCi0gICAgICBBU19DWFhfQ09NUElMRVJfRkxBRyhbLWVycndhcm49JWFsbF0sIEVSUk9SX0NYWEZMQUdTPSIkRVJST1JfQ1hYRkxBR1MgLWVycndhcm49JWFsbCIpCi0gICAgICBpZiB0ZXN0ICJ4JEVSUk9SX0NYWEZMQUdTIiAhPSAieCI7IHRoZW4KLSAgICAgICAgZG5sIHRyeSAtZXJyd2Fybj0lYWxsLG5vJUVfRU1QVFlfREVDTEFSQVRJT04sCi0gICAgICAgIGRubCBubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCxubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCwKLSAgICAgICAgZG5sIG5vJUVfTUFDUk9fUkVERUZJTkVEIChTdW4gRm9ydGUgY2FzZSkKLSAgICAgICAgZG5sIEZvciBGb3J0ZSB3ZSBuZWVkIGRpc2FibGUgImVtcHR5IGRlY2xhcmF0aW9uIiB3YXJuaW5nIHByb2R1Y2VkIGJ5IHVuLW5lZWRlZCBzZW1pY29sb24KLSAgICAgICAgZG5sICJzdGF0ZW1lbnQgbm90IHJlYWNoZWQiIGRpc2FibGVkIGJlY2F1c2UgdGhlcmUgaXMgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCkgaW4gc29tZSBwbGFjZXMKLSAgICAgICAgZG5sICJtYWNybyByZWRlZmluZWQiIGJlY2F1c2Ugb2YgZ3N0L2dldHRleHQuaAotICAgICAgICBkbmwgRklYTUU6IGlzIGl0IHJlYWxseSBzdXBwb3NlZCB0byBiZSAnQVJHVUVNRU5UJyBhbmQgbm90ICdBUkdVTUVOVCc/Ci0gICAgICAgIGRubCBGSVhNRTogZG8gYW55IG9mIHRoZXNlIHdvcmsgd2l0aCB0aGUgYysrIGNvbXBpbGVyPyBpZiBub3QsIHdoeQotICAgICAgICBkbmwgZG8gd2UgY2hlY2sgYXQgYWxsPwotICAgICAgICBmb3IgZiBpbiAnbm8lRV9FTVBUWV9ERUNMQVJBVElPTicgXAotICAgICAgICAgICAgICAgICAnbm8lRV9TVEFURU1FTlRfTk9UX1JFQUNIRUQnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfQVJHVUVNRU5UX01JU01BVENIJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX01BQ1JPX1JFREVGSU5FRCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9MT09QX05PVF9FTlRFUkVEX0FUX1RPUCcKLSAgICAgICAgZG8KLSAgICAgICAgICBBU19DWFhfQ09NUElMRVJfRkxBRyhbLWVycndhcm49JWFsbCwkZl0sIFtFUlJPUl9DWFhGTEFHUz0iJEVSUk9SX0NYWEZMQUdTLCRmIl0pCi0gICAgICAgIGRvbmUKLSAgICAgIGZpCiAgICAgZmkKICAgZmkKIApAQCAtMjI3LDI4ICsxODAsNiBAQAogCSAgQVNfT0JKQ19DT01QSUxFUl9GTEFHKFstZm5vLXN0cmljdC1hbGlhc2luZ10sCiAJICAgIEVSUk9SX09CSkNGTEFHUz0iJEVSUk9SX09CSkNGTEFHUyAtZm5vLXN0cmljdC1hbGlhc2luZyIpCiAJICBdKQotICAgIGVsc2UKLSAgICAgIGRubCBpZiAtV2Vycm9yIGlzbid0IHN1cG9ydGVkLCB0cnkgLWVycndhcm49JWFsbAotICAgICAgQVNfT0JKQ19DT01QSUxFUl9GTEFHKFstZXJyd2Fybj0lYWxsXSwgRVJST1JfT0JKQ0ZMQUdTPSIkRVJST1JfT0JKQ0ZMQUdTIC1lcnJ3YXJuPSVhbGwiKQotICAgICAgaWYgdGVzdCAieCRFUlJPUl9PQkpDRkxBR1MiICE9ICJ4IjsgdGhlbgotICAgICAgICBkbmwgdHJ5IC1lcnJ3YXJuPSVhbGwsbm8lRV9FTVBUWV9ERUNMQVJBVElPTiwKLSAgICAgICAgZG5sIG5vJUVfU1RBVEVNRU5UX05PVF9SRUFDSEVELG5vJUVfQVJHVUVNRU5UX01JU01BVENILAotICAgICAgICBkbmwgbm8lRV9NQUNST19SRURFRklORUQgKFN1biBGb3J0ZSBjYXNlKQotICAgICAgICBkbmwgRm9yIEZvcnRlIHdlIG5lZWQgZGlzYWJsZSAiZW1wdHkgZGVjbGFyYXRpb24iIHdhcm5pbmcgcHJvZHVjZWQgYnkgdW4tbmVlZGVkIHNlbWljb2xvbgotICAgICAgICBkbmwgInN0YXRlbWVudCBub3QgcmVhY2hlZCIgZGlzYWJsZWQgYmVjYXVzZSB0aGVyZSBpcyBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKSBpbiBzb21lIHBsYWNlcwotICAgICAgICBkbmwgIm1hY3JvIHJlZGVmaW5lZCIgYmVjYXVzZSBvZiBnc3QvZ2V0dGV4dC5oCi0gICAgICAgIGRubCBGSVhNRTogaXMgaXQgcmVhbGx5IHN1cHBvc2VkIHRvIGJlICdBUkdVRU1FTlQnIGFuZCBub3QgJ0FSR1VNRU5UJz8KLSAgICAgICAgZG5sIEZJWE1FOiBkbyBhbnkgb2YgdGhlc2Ugd29yayB3aXRoIHRoZSBjKysgY29tcGlsZXI/IGlmIG5vdCwgd2h5Ci0gICAgICAgIGRubCBkbyB3ZSBjaGVjayBhdCBhbGw/Ci0gICAgICAgIGZvciBmIGluICdubyVFX0VNUFRZX0RFQ0xBUkFUSU9OJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9BUkdVRU1FTlRfTUlTTUFUQ0gnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfTUFDUk9fUkVERUZJTkVEJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX0xPT1BfTk9UX0VOVEVSRURfQVRfVE9QJwotICAgICAgICBkbwotICAgICAgICAgIEFTX09CSkNfQ09NUElMRVJfRkxBRyhbLWVycndhcm49JWFsbCwkZl0sIFtFUlJPUl9PQkpDRkxBR1M9IiRFUlJPUl9PQkpDRkxBR1MsJGYiXSkKLSAgICAgICAgZG9uZQotICAgICAgZmkKICAgICBmaQogICBmaQogCmRpZmYgLS1naXQgYS9jb21tb24vbTQvZ3N0LWdsaWIyLm00IGIvY29tbW9uL200L2dzdC1nbGliMi5tNAppbmRleCA1YjljZDhiLi41YjcyNTA3IDEwMDY0NAotLS0gYS9jb21tb24vbTQvZ3N0LWdsaWIyLm00CisrKyBiL2NvbW1vbi9tNC9nc3QtZ2xpYjIubTQKQEAgLTUxLDE4ICs1MSw5IEBACiAgIGZpCiAKICAgQUNfQVJHX0VOQUJMRShnbGliLWFzc2VydHMsCi0gICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWdsaWItYXNzZXJ0c1s9QDw6QG5vL2F1dG8veWVzQDo+QF1dLAorICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbGliLWFzc2VydHNbPUA8OkBuby95ZXNAOj5AXV0sCiAgICAgICBbRW5hYmxlIEdMaWIgYXNzZXJ0aW9uXSksW2VuYWJsZV9nbGliX2Fzc2VydGlvbnM9JGVuYWJsZXZhbF0sCi0gICAgW2VuYWJsZV9nbGliX2Fzc2VydGlvbnM9YXV0b10pCi0KLSAgaWYgdGVzdCAieCRlbmFibGVfZ2xpYl9hc3NlcnRpb25zIiA9ICJ4YXV0byI7IHRoZW4KLSAgICBkbmwgRW5hYmxlIGFzc2VydGlvbnMgb25seSBmb3IgZGV2ZWxvcG1lbnQgdmVyc2lvbnMKLSAgICBpZiB0ZXN0ICJ4YGV4cHIgJFBBQ0tBR0VfVkVSU0lPTl9NSU5PUiAlIDJgIiA9ICJ4MSIgLWEgInhgZXhwciAkUEFDS0FHRV9WRVJTSU9OX01JQ1JPICc8JyA5MGAiID0gIngxIjsgdGhlbgotICAgICAgZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXMKLSAgICBlbHNlCi0gICAgICBlbmFibGVfZ2xpYl9hc3NlcnRpb25zPW5vCi0gICAgZmkKLSAgZmkKKyAgICBbZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXNdKQogCiAgIGlmIHRlc3QgIngkZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucyIgPSAieG5vIjsgdGhlbgogICAgIEdMSUJfRVhUUkFfQ0ZMQUdTPSIkR0xJQl9FWFRSQV9DRkxBR1MgLURHX0RJU0FCTEVfQVNTRVJUIgpkaWZmIC0tZ2l0IGEvY29tbW9uL200L2dzdC1wYWNrYWdlLXJlbGVhc2UtZGF0ZXRpbWUubTQgYi9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNAppbmRleCBiYzg4NWUzLi40Y2Y0NGU2IDEwMDY0NAotLS0gYS9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNAorKysgYi9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNApAQCAtMjcsMTQgKzI3LDE2IEBACiBBQ19ERUZVTihbQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUVdLAogWwogICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoKQotICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoW3llc10uLi4pCisgIGRubCBBR19HU1RfU0VUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRShbbm9dLi4uKQogICBpZiB0ZXN0ICJ4JDEiID0gInhubyIgLW8gIngkMSIgPSAieCI7IHRoZW4KICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPWBkYXRlIC11ICIrJVktJW0tJWRUJUg6JU1aImAKICAgZWxpZiB0ZXN0ICJ4JDEiID0gInh5ZXMiOyB0aGVuCi0gICAgZG5sIEFHX0dTVF9TRVRfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FKFtub10sIFsiWVlZWS1NTS1ERCJdKQotICAgIGRubCBBR19HU1RfU0VUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRShbbm9dLCBbRE9BUC1GSUxFXSwgW1JFTEVBU0UtVkVSU0lPTl0pCi0gICAgaWYgKCBlY2hvICQxIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KLSAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9JDEKKyAgICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoW3llc10sIFtZWVlZLU1NLUREXSkKKyAgICBkbmwgQUdfR1NUX1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUUoW3llc10sIFtET0FQLUZJTEVdLCBbUkVMRUFTRS1WRVJTSU9OXSkKK2NoYW5nZXF1b3RlKDw8LCA+PilkbmwKKyAgICBpZiAoIGVjaG8gJDIgfCBncmVwICdeMjBbMS05XVswLTldLVswLTFdWzAtOV0tWzAtM11bMC05XScgPi9kZXYvbnVsbCApIDsgdGhlbgorY2hhbmdlcXVvdGUoWywgXSlkbmwKKyAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9JDIKICAgICBlbHNlCiAgICAgICBkbmwgd2UgYXNzdW1lIHRoZSAuZG9hcCBmaWxlIGNvbnRhaW5zIHRoZSBkYXRlIGFzIFlZWVktTU0tREQKICAgICAgIFlZWVlfTU1fREQ9YHNoICIke3NyY2Rpcn0vY29tbW9uL2V4dHJhY3QtcmVsZWFzZS1kYXRlLWZyb20tZG9hcC1maWxlIiAkMyAkMmA7CkBAIC00Nyw3ICs0OSw5IEBACiAgICAgICBmaQogICAgIGZpCiAgIGRubCBBR19HU1RfU0VUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRShbWVlZWS1NTS1ERF0pCitjaGFuZ2VxdW90ZSg8PCwgPj4pZG5sCiAgIGVsaWYgKCBlY2hvICQxIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KK2NoYW5nZXF1b3RlKFssIF0pZG5sCiAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT0kMQogICBlbHNlCiAgICAgQUNfTVNHX1dBUk4oW1NFVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU6IGludmFsaWQgZmlyc3QgYXJndW1lbnRdKQpkaWZmIC0tZ2l0IGEvY29tbW9uL3JlbGVhc2UubWFrIGIvY29tbW9uL3JlbGVhc2UubWFrCmluZGV4IDcxNTY1N2IuLmM4NGMyZjEgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9yZWxlYXNlLm1haworKysgYi9jb21tb24vcmVsZWFzZS5tYWsKQEAgLTE0LDYgKzE0LDkgQEAKIAlAaWYgWyAtZCAuLi93d3cvZGF0YS9zcmMgXTsgdGhlbiBcCiAJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6IC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKIAkgIG12IC12ICQoUEFDS0FHRSktJChWRVJTSU9OKS50YXIueHouc2hhMjU2c3VtIC4uL3d3dy9kYXRhL3NyYy8kKFBBQ0tBR0UpLyA7IFwKKwllbGlmIFsgLWQgLi4vLi4vd3d3L2RhdGEvc3JjIF07IHRoZW4gXAorCSAgbXYgLXYgJChQQUNLQUdFKS0kKFZFUlNJT04pLnRhci54eiAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCisJICBtdiAtdiAkKFBBQ0tBR0UpLSQoVkVSU0lPTikudGFyLnh6LnNoYTI1NnN1bSAuLi8uLi93d3cvZGF0YS9zcmMvJChQQUNLQUdFKS8gOyBcCiAJZmkKIAlAZWNobyAiPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PSIKIApkaWZmIC0tZ2l0IGEvY29tbW9uL3dpbjMyLm1hayBiL2NvbW1vbi93aW4zMi5tYWsKaW5kZXggMzBlMzQ3ZS4uODdjZDM0NiAxMDA2NDQKLS0tIGEvY29tbW9uL3dpbjMyLm1haworKysgYi9jb21tb24vd2luMzIubWFrCkBAIC00NCw3ICs0NCwxMCBAQAogCSAgaWYgdGVzdCAieCQkbGlic28iICE9ICJ4IjsgdGhlbiBcCiAJICAgIGVjaG8gQ2hlY2tpbmcgc3ltYm9scyBpbiAkJGxpYnNvOyBcCiAJICAgIGlmICEgKCQodG9wX3NyY2RpcikvY29tbW9uL2NoZWNrLWV4cG9ydHMgJCRsaWJkZWYgJCRsaWJzbykgOyB0aGVuIFwKLQkgICAgICBmYWlsPTE7IFwKKwkgICAgICBlY2hvICIkJGxpYmRlZiI7IFwKKwkgICAgICBpZiB0ZXN0ICIkJGxpYmJhc2UiICE9ICJsaWJnc3RnbCI7IHRoZW4gXAorCSAgICAgICAgZmFpbD0xOyBcCisJICAgICAgZmk7IFwKIAkgICAgZmk7IFwKIAkgIGZpOyBcCiAJZG9uZSA7IFwKZGlmZiAtLWdpdCBhL2NvbmZpZy5oLmluIGIvY29uZmlnLmguaW4KaW5kZXggZTZmODRjYi4uM2U1YjNmNyAxMDA2NDQKLS0tIGEvY29uZmlnLmguaW4KKysrIGIvY29uZmlnLmguaW4KQEAgLTI4LDEyICsyOCw2IEBACiAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCiAjdW5kZWYgRU5BQkxFX05MUwogCi0vKiBUaGUgeCBpbiAyLnggKi8KLSN1bmRlZiBGQUFEMl9NSU5PUl9WRVJTSU9OCi0KLS8qIERlZmluZSBpZiBBQUMgaXMgdXNpbmcgbmV3IGFwaSBwcmVmaXggKi8KLSN1bmRlZiBGQUFEX0lTX05FQUFDCi0KIC8qIGdldHRleHQgcGFja2FnZSBuYW1lICovCiAjdW5kZWYgR0VUVEVYVF9QQUNLQUdFCiAKQEAgLTUyLDEyICs0NiwxOCBAQAogLyogR1N0cmVhbWVyIEFQSSBWZXJzaW9uICovCiAjdW5kZWYgR1NUX0FQSV9WRVJTSU9OCiAKKy8qIERlZmluZSBpZiBleHRyYSBydW50aW1lIGNoZWNrcyBzaG91bGQgYmUgZW5hYmxlZCAqLworI3VuZGVmIEdTVF9FTkFCTEVfRVhUUkFfQ0hFQ0tTCisKIC8qIEV4dHJhIHBsYXRmb3JtIHNwZWNpZmljIHBsdWdpbiBzdWZmaXggKi8KICN1bmRlZiBHU1RfRVhUUkFfTU9EVUxFX1NVRkZJWAogCiAvKiBEZWZpbmVkIGlmIGdjb3YgaXMgZW5hYmxlZCB0byBmb3JjZSBhIHJlYnVpbGQgZHVlIHRvIGNvbmZpZy5oIGNoYW5naW5nICovCiAjdW5kZWYgR1NUX0dDT1ZfRU5BQkxFRAogCisvKiBETUFCVUYgYXZhaWxhYmxlIGZvciBnbCBwbHVnaW5zICovCisjdW5kZWYgR1NUX0dMX0hBVkVfRE1BQlVGCisKIC8qIEVHTCBtb2R1bGUgbmFtZSAqLwogI3VuZGVmIEdTVF9HTF9MSUJFR0xfTU9EVUxFX05BTUUKIApAQCAtMjM1LDcgKzIzNSw3IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIEFBQyBlbmNvZGVyIHBsdWctaW4gKHVzZWQgYnkgZmFhYykuICovCiAjdW5kZWYgSEFWRV9GQUFDCiAKLS8qIERlZmluZSB0byBlbmFibGUgQUFDIGRlY29kZXIgcGx1Zy1pbiAodXNlZCBieSBmYWFkKS4gKi8KKy8qIERlZmluZSB0byBlbmFibGUgRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbiAodXNlZCBieSBmYWFkKS4gKi8KICN1bmRlZiBIQVZFX0ZBQUQKIAogLyogRGVmaW5lIHRvIGVuYWJsZSBsaW51eCBmcmFtZWJ1ZmZlciAodXNlZCBieSBmYmRldnNpbmspLiAqLwpAQCAtMjcxLDYgKzI3MSw5IEBACiAvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgR0xlZ2xJbWFnZU9FUycuICovCiAjdW5kZWYgSEFWRV9HTEVHTElNQUdFT0VTCiAKKy8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBHTGludDY0Jy4gKi8KKyN1bmRlZiBIQVZFX0dMSU5UNjQKKwogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYEdMaW50cHRyJy4gKi8KICN1bmRlZiBIQVZFX0dMSU5UUFRSCiAKQEAgLTI5Miw5ICsyOTUsNiBAQAogLyogVXNlIGdyYXBoZW5lICovCiAjdW5kZWYgSEFWRV9HUkFQSEVORQogCi0vKiBEZWZpbmUgdG8gZW5hYmxlIEdTZXR0aW5ncyBwbHVnaW4gKHVzZWQgYnkgZ3NldHRpbmdzKS4gKi8KLSN1bmRlZiBIQVZFX0dTRVRUSU5HUwotCiAvKiBEZWZpbmUgdG8gZW5hYmxlIEdTTSBsaWJyYXJ5ICh1c2VkIGJ5IGdzbWVuYyBnc21kZWMpLiAqLwogI3VuZGVmIEhBVkVfR1NNCiAKQEAgLTM3Niw5ICszNzYsNiBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSBtcGVnMmVuYyAodXNlZCBieSBtcGVnMmVuYykuICovCiAjdW5kZWYgSEFWRV9NUEVHMkVOQwogCi0vKiBEZWZpbmUgdG8gZW5hYmxlIG1wZzEyMyBhdWRpbyBkZWNvZGVyICh1c2VkIGJ5IG1wZzEyMykuICovCi0jdW5kZWYgSEFWRV9NUEcxMjMKLQogLyogRGVmaW5lIHRvIGVuYWJsZSBtcGxleCAodXNlZCBieSBtcGxleCkuICovCiAjdW5kZWYgSEFWRV9NUExFWAogCkBAIC00MDYsNiArNDAzLDEyIEBACiAvKiBEZWZpbmUgaWYgbmV0dGxlIGlzIGF2YWlsYWJsZSAqLwogI3VuZGVmIEhBVkVfTkVUVExFCiAKKy8qIERlZmluZSB0byBlbmFibGUgTlZJRElBIEVuY29kZSBBUEkgKHVzZWQgYnkgbnZlbmMpLiAqLworI3VuZGVmIEhBVkVfTlZFTkMKKworLyogTlZFTkMgR1N0cmVhbWVyIE9wZW5HTCBzdXBwb3J0IGF2YWlsYWJsZSAqLworI3VuZGVmIEhBVkVfTlZFTkNfR1NUX0dMCisKIC8qIERlZmluZSB0byBlbmFibGUgb2ZhIHBsdWdpbnMgKHVzZWQgYnkgb2ZhKS4gKi8KICN1bmRlZiBIQVZFX09GQQogCkBAIC00OTgsNiArNTAxLDE1IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIFF0IGVsZW1lbnRzICh1c2VkIGJ5IHF0KS4gKi8KICN1bmRlZiBIQVZFX1FUCiAKKy8qIERlZmluZSBpZiBRdCBBbmRyb2lkIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLworI3VuZGVmIEhBVkVfUVRfQU5EUk9JRAorCisvKiBEZWZpbmUgaWYgUXQgaU9TIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLworI3VuZGVmIEhBVkVfUVRfSU9TCisKKy8qIERlZmluZSBpZiBRdCBNYWMgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkICovCisjdW5kZWYgSEFWRV9RVF9NQUMKKwogLyogRGVmaW5lIGlmIFF0IFdheWxhbmQgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkICovCiAjdW5kZWYgSEFWRV9RVF9XQVlMQU5ECiAKQEAgLTUxMyw5ICs1MjUsNiBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSByc3ZnIGRlY29kZXIgKHVzZWQgYnkgcnN2ZykuICovCiAjdW5kZWYgSEFWRV9SU1ZHCiAKLS8qIEhhdmUgUlNWRyAyLjM2LjIgb3IgbmV3ZXIgKi8KLSN1bmRlZiBIQVZFX1JTVkdfMl8zNl8yCi0KIC8qIERlZmluZSB0byBlbmFibGUgcnRtcCBsaWJyYXJ5ICh1c2VkIGJ5IHJ0bXApLiAqLwogI3VuZGVmIEhBVkVfUlRNUAogCkBAIC01OTcsNiArNjA2LDkgQEAKIC8qIERlZmluZSB0byBlbmFibGUgdGltaWRpdHkgbWlkaSBzb2Z0IHN5bnRoIHBsdWdpbiAodXNlZCBieSB0aW1pZGl0eSkuICovCiAjdW5kZWYgSEFWRV9USU1JRElUWQogCisvKiBEZWZpbmUgdG8gZW5hYmxlIHRpbnlhbHNhICh1c2VkIGJ5IHRpbnlhbHNhKS4gKi8KKyN1bmRlZiBIQVZFX1RJTllBTFNBCisKIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8dW5pc3RkLmg+IGhlYWRlciBmaWxlLiAqLwogI3VuZGVmIEhBVkVfVU5JU1REX0gKIApAQCAtNjI0LDYgKzYzNiw5IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIHZvLWFtcndiZW5jIGxpYnJhcnkgKHVzZWQgYnkgdm8tYW1yd2JlbmMpLiAqLwogI3VuZGVmIEhBVkVfVk9BTVJXQkVOQwogCisvKiBEZWZpbmUgdG8gZW5hYmxlIFZ1bGthbiBlbGVtZW50cyAodXNlZCBieSB2dWxrYW4pLiAqLworI3VuZGVmIEhBVkVfVlVMS0FOCisKIC8qIERlZmluZSB0byBlbmFibGUgV0FTQVBJIHBsdWctaW4gKHVzZWQgYnkgd2FzYXBpKS4gKi8KICN1bmRlZiBIQVZFX1dBU0FQSQogCkBAIC02ODcsOCArNzAyLDcgQEAKIC8qIGdldHRleHQgbG9jYWxlIGRpciAqLwogI3VuZGVmIExPQ0FMRURJUgogCi0vKiBEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLgotICAgKi8KKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSB3aGVyZSBsaWJ0b29sIHN0b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuICovCiAjdW5kZWYgTFRfT0JKRElSCiAKIC8qIERlZmluZSBpZiB0aGUgb2xkIE11c2VQYWNrIEFQSSBpcyB1c2VkICovCmRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKaW5kZXggNTk2OGYwNi4uOTYyNzAxNCAxMDA3NTUKLS0tIGEvY29uZmlndXJlCisrKyBiL2NvbmZpZ3VyZQpAQCAtMSw2ICsxLDYgQEAKICMhIC9iaW4vc2gKICMgR3Vlc3MgdmFsdWVzIGZvciBzeXN0ZW0tZGVwZW5kZW50IHZhcmlhYmxlcyBhbmQgY3JlYXRlIE1ha2VmaWxlcy4KLSMgR2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5IGZvciBHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNi4zLgorIyBHZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkgZm9yIEdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgMS43LjkxLgogIwogIyBSZXBvcnQgYnVncyB0byA8aHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R1N0cmVhbWVyPi4KICMKQEAgLTU5MSw4ICs1OTEsOCBAQAogIyBJZGVudGl0eSBvZiB0aGlzIHBhY2thZ2UuCiBQQUNLQUdFX05BTUU9J0dTdHJlYW1lciBCYWQgUGx1Zy1pbnMnCiBQQUNLQUdFX1RBUk5BTUU9J2dzdC1wbHVnaW5zLWJhZCcKLVBBQ0tBR0VfVkVSU0lPTj0nMS42LjMnCi1QQUNLQUdFX1NUUklORz0nR1N0cmVhbWVyIEJhZCBQbHVnLWlucyAxLjYuMycKK1BBQ0tBR0VfVkVSU0lPTj0nMS43LjkxJworUEFDS0FHRV9TVFJJTkc9J0dTdHJlYW1lciBCYWQgUGx1Zy1pbnMgMS43LjkxJwogUEFDS0FHRV9CVUdSRVBPUlQ9J2h0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdTdHJlYW1lcicKIFBBQ0tBR0VfVVJMPScnCiAKQEAgLTY1OCwyNCArNjU4LDE2IEBACiBYMjY1X0NGTEFHUwogVVNFX0hMU19GQUxTRQogVVNFX0hMU19UUlVFCi1MSUJHQ1JZUFRfTElCUwotTElCR0NSWVBUX0NGTEFHUwogT1BFTlNTTF9MSUJTCiBPUEVOU1NMX0NGTEFHUworTElCR0NSWVBUX0xJQlMKK0xJQkdDUllQVF9DRkxBR1MKIExJQkdDUllQVF9DT05GSUcKIE5FVFRMRV9MSUJTCiBORVRUTEVfQ0ZMQUdTCiBVU0VfU05ESU9fRkFMU0UKIFVTRV9TTkRJT19UUlVFCiBTTkRJT19MSUJTCi1VU0VfR1NFVFRJTkdTX0ZBTFNFCi1VU0VfR1NFVFRJTkdTX1RSVUUKLUdTRVRUSU5HU19SVUxFUwotR0xJQl9DT01QSUxFX1NDSEVNQVMKLWdzZXR0aW5nc3NjaGVtYWRpcgotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFCi1HU0VUVElOR1NfTElCUwotR1NFVFRJTkdTX0NGTEFHUwogVVNFX1NQQU5EU1BfRkFMU0UKIFVTRV9TUEFORFNQX1RSVUUKIFNQQU5EU1BfTElCUwpAQCAtNzQ3LDggKzczOSwxNyBAQAogVVNFX0xJQlZJU1VBTF9UUlVFCiBMSUJWSVNVQUxfTElCUwogTElCVklTVUFMX0NGTEFHUworVVNFX1ZVTEtBTl9GQUxTRQorVVNFX1ZVTEtBTl9UUlVFCitWVUxLQU5fTElCUwogVVNFX1FUX0ZBTFNFCiBVU0VfUVRfVFJVRQorUVRfTUFDX0xJQlMKK1FUX01BQ19DRkxBR1MKK0dOVVNUTF9MSUJTCitHTlVTVExfQ0ZMQUdTCitRVF9BTkRST0lEX0xJQlMKK1FUX0FORFJPSURfQ0ZMQUdTCiBRVF9XQVlMQU5EX0xJQlMKIFFUX1dBWUxBTkRfQ0ZMQUdTCiBRVF9YMTFfTElCUwpAQCAtNzcyLDggKzc3Myw2IEBACiBVU0VfR0xfVFJVRQogVVNFX1JTVkdfRkFMU0UKIFVTRV9SU1ZHX1RSVUUKLVJTVkdfMl8zNl8yX0xJQlMKLVJTVkdfMl8zNl8yX0NGTEFHUwogUlNWR19MSUJTCiBSU1ZHX0NGTEFHUwogVVNFX1BWUl9GQUxTRQpAQCAtODMxLDEwICs4MzAsNiBAQAogTVBMRVhfTERGTEFHUwogTVBMRVhfTElCUwogTVBMRVhfQ0ZMQUdTCi1VU0VfTVBHMTIzX0ZBTFNFCi1VU0VfTVBHMTIzX1RSVUUKLU1QRzEyM19MSUJTCi1NUEcxMjNfQ0ZMQUdTCiBVU0VfTVBFRzJFTkNfRkFMU0UKIFVTRV9NUEVHMkVOQ19UUlVFCiBNUEVHMkVOQ19MSUJTCkBAIC05MDEsNyArODk2LDYgQEAKIFVTRV9GQkRFVl9UUlVFCiBVU0VfRkFBRF9GQUxTRQogVVNFX0ZBQURfVFJVRQotRkFBRF9JU19ORUFBQwogRkFBRF9MSUJTCiBIQVZFX0ZBQUQKIFVTRV9GQUFDX0ZBTFNFCkBAIC05MjQsMTEgKzkxOCwxMSBAQAogVVNFX1dFQlBfVFJVRQogV0VCUF9MSUJTCiBXRUJQX0NGTEFHUwotd2F5bGFuZF9zY2FubmVyCiBVU0VfV0FZTEFORF9GQUxTRQogVVNFX1dBWUxBTkRfVFJVRQogV0FZTEFORF9MSUJTCiBXQVlMQU5EX0NGTEFHUword2F5bGFuZF9zY2FubmVyCiBVU0VfRElSRUNURkJfRkFMU0UKIFVTRV9ESVJFQ1RGQl9UUlVFCiBESVJFQ1RGQl9MSUJTCkBAIC05ODIsNiArOTc2LDIwIEBACiBVU0VfQVNTUkVOREVSX1RSVUUKIEFTU1JFTkRFUl9MSUJTCiBBU1NSRU5ERVJfQ0ZMQUdTCitVU0VfVElOWUFMU0FfRkFMU0UKK1VTRV9USU5ZQUxTQV9UUlVFCitVU0VfTlZFTkNfR1NUX0dMX0ZBTFNFCitVU0VfTlZFTkNfR1NUX0dMX1RSVUUKK1VTRV9OVkVOQ19GQUxTRQorVVNFX05WRU5DX1RSVUUKK05WRU5DT0RFX0xJQlMKK05WRU5DT0RFX0NGTEFHUworQ1VEQV9MSUJTCitDVURBX0NGTEFHUworR1NUX1BCVVRJTFNfTElCUworR1NUX1BCVVRJTFNfQ0ZMQUdTCitHU1RfVklERU9fTElCUworR1NUX1ZJREVPX0NGTEFHUwogTElCVURFVl9MSUJTCiBMSUJVREVWX0NGTEFHUwogVVNFX1VWQ0gyNjRfRkFMU0UKQEAgLTEwMzIsNiArMTA0MCwxMCBAQAogRElSRUNUU09VTkRfTElCUwogRElSRUNUWF9MREZMQUdTCiBESVJFQ1RYX0NGTEFHUworVVNFX1hDQl9GQUxTRQorVVNFX1hDQl9UUlVFCitYQ0JfTElCUworWENCX0NGTEFHUwogSEFWRV9KUEVHX0ZBTFNFCiBIQVZFX0pQRUdfVFJVRQogSEFWRV9KUEVHCkBAIC0xMDc4LDEyICsxMDkwLDE4IEBACiBVU0VfR0xFUzIKIFVTRV9PUEVOR0wKIEdMX09CSkNGTEFHUwotR0xfQ0ZMQUdTCi1HTF9MSUJTCitHU1RfQUxMT0NBVE9SU19MSUJTCitHU1RfQUxMT0NBVE9SU19DRkxBR1MKIFdBWUxBTkRfRUdMX0xJQlMKIFdBWUxBTkRfRUdMX0NGTEFHUwogSEFWRV9FR0wKK0VHTF9MSUJTCitFR0xfQ0ZMQUdTCiBIQVZFX0dMRVMyCitHTEVTMl9MSUJTCitHTEVTMl9DRkxBR1MKK0dMX0xJQlMKK0dMX0NGTEFHUwogSEFWRV9HTAogWF9MSUJTCiBYX0NGTEFHUwpAQCAtMTEyNyw4ICsxMTQ1LDYgQEAKIFVTRV9QTFVHSU5fU0RQX1RSVUUKIFVTRV9QTFVHSU5fU0RJX0ZBTFNFCiBVU0VfUExVR0lOX1NESV9UUlVFCi1VU0VfUExVR0lOX1JUUF9GQUxTRQotVVNFX1BMVUdJTl9SVFBfVFJVRQogVVNFX1BMVUdJTl9SRU1PVkVTSUxFTkNFX0ZBTFNFCiBVU0VfUExVR0lOX1JFTU9WRVNJTEVOQ0VfVFJVRQogVVNFX1BMVUdJTl9SQVdQQVJTRV9GQUxTRQpAQCAtMTE0Myw2ICsxMTU5LDggQEAKIFVTRV9QTFVHSU5fT05WSUZfVFJVRQogVVNFX1BMVUdJTl9OVVZERU1VWF9GQUxTRQogVVNFX1BMVUdJTl9OVVZERU1VWF9UUlVFCitVU0VfUExVR0lOX05FVFNJTV9GQUxTRQorVVNFX1BMVUdJTl9ORVRTSU1fVFJVRQogVVNFX1BMVUdJTl9NWEZfRkFMU0UKIFVTRV9QTFVHSU5fTVhGX1RSVUUKIFVTRV9QTFVHSU5fTVZFX0ZBTFNFCkBAIC0xMTU3LDggKzExNzUsNiBAQAogVVNFX1BMVUdJTl9NUEVHREVNVVhfVFJVRQogVVNFX1BMVUdJTl9NSURJX0ZBTFNFCiBVU0VfUExVR0lOX01JRElfVFJVRQotVVNFX1BMVUdJTl9MSVZFQURERVJfRkFMU0UKLVVTRV9QTFVHSU5fTElWRUFEREVSX1RSVUUKIFVTRV9QTFVHSU5fTElCUkZCX0ZBTFNFCiBVU0VfUExVR0lOX0xJQlJGQl9UUlVFCiBVU0VfUExVR0lOX0pQRUdGT1JNQVRfRkFMU0UKQEAgLTEyMjMsNiArMTIzOSw4IEBACiBVU0VfUExVR0lOX0FVRElPRlhCQURfVFJVRQogVVNFX1BMVUdJTl9BU0ZNVVhfRkFMU0UKIFVTRV9QTFVHSU5fQVNGTVVYX1RSVUUKK1VTRV9QTFVHSU5fVklERU9GUkFNRV9BVURJT0xFVkVMX0ZBTFNFCitVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9UUlVFCiBVU0VfUExVR0lOX0FJRkZfRkFMU0UKIFVTRV9QTFVHSU5fQUlGRl9UUlVFCiBVU0VfUExVR0lOX0FEUENNRU5DX0ZBTFNFCkBAIC0xMjQzLDYgKzEyNjEsOSBAQAogV0FSTklOR19DWFhGTEFHUwogRVJST1JfQ0ZMQUdTCiBXQVJOSU5HX0NGTEFHUworV0lUSF9HU1RfUExBWUVSX1RFU1RTX0ZBTFNFCitXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRQorV0dFVAogR1NUX1BMVUdJTl9CVUlMRF9TVEFUSUNfRkFMU0UKIEdTVF9QTFVHSU5fQlVJTERfU1RBVElDX1RSVUUKIEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTCkBAIC0xNDg5LDYgKzE1MTAsNyBAQAogVVNFX05MUwogQUNMT0NBTF9BTUZMQUdTCiBDUFAKK0xUX1NZU19MSUJSQVJZX1BBVEgKIE9UT09MNjQKIE9UT09MCiBMSVBPCkBAIC0xNjI5LDYgKzE2NTEsNyBAQAogZW5hYmxlX3NoYXJlZAogd2l0aF9waWMKIGVuYWJsZV9mYXN0X2luc3RhbGwKK3dpdGhfYWl4X3NvbmFtZQogZW5hYmxlX2RlcGVuZGVuY3lfdHJhY2tpbmcKIHdpdGhfZ251X2xkCiB3aXRoX3N5c3Jvb3QKQEAgLTE2NDIsNiArMTY2NSw3IEBACiB3aXRoX2xpYmljb252X3ByZWZpeAogd2l0aF9saWJpbnRsX3ByZWZpeAogZW5hYmxlX2ZhdGFsX3dhcm5pbmdzCitlbmFibGVfZXh0cmFfY2hlY2sKIGVuYWJsZV9kZWJ1ZwogZW5hYmxlX3Byb2ZpbGluZwogZW5hYmxlX3ZhbGdyaW5kCkBAIC0xNjYxLDggKzE2ODUsMTAgQEAKIGVuYWJsZV9nb2JqZWN0X2Nhc3RfY2hlY2tzCiBlbmFibGVfZ2xpYl9hc3NlcnRzCiB3aXRoX2d0aworZW5hYmxlX0JzeW1ib2xpYwogZW5hYmxlX29yYwogZW5hYmxlX3N0YXRpY19wbHVnaW5zCit3aXRoX3BsYXllcl90ZXN0cwogd2l0aF9kZWZhdWx0X2F1ZGlvc2luawogd2l0aF9kZWZhdWx0X2F1ZGlvc3JjCiB3aXRoX2RlZmF1bHRfdmlkZW9zaW5rCkBAIC0xNjcyLDYgKzE2OTgsNyBAQAogZW5hYmxlX2FkcGNtZGVjCiBlbmFibGVfYWRwY21lbmMKIGVuYWJsZV9haWZmCitlbmFibGVfdmlkZW9mcmFtZV9hdWRpb2xldmVsCiBlbmFibGVfYXNmbXV4CiBlbmFibGVfYXVkaW9meGJhZAogZW5hYmxlX2F1ZGlvbWl4ZXIKQEAgLTE3MDQsNyArMTczMSw2IEBACiBlbmFibGVfanAya2RlY2ltYXRvcgogZW5hYmxlX2pwZWdmb3JtYXQKIGVuYWJsZV9saWJyZmIKLWVuYWJsZV9saXZlYWRkZXIKIGVuYWJsZV9taWRpCiBlbmFibGVfbXBlZ2RlbXV4CiBlbmFibGVfbXBlZ3RzZGVtdXgKQEAgLTE3MTIsNiArMTczOCw3IEBACiBlbmFibGVfbXBlZ3BzbXV4CiBlbmFibGVfbXZlCiBlbmFibGVfbXhmCitlbmFibGVfbmV0c2ltCiBlbmFibGVfbnV2ZGVtdXgKIGVuYWJsZV9vbnZpZgogZW5hYmxlX3BhdGNoZGV0ZWN0CkBAIC0xNzE5LDcgKzE3NDYsNiBAQAogZW5hYmxlX3BubQogZW5hYmxlX3Jhd3BhcnNlCiBlbmFibGVfcmVtb3Zlc2lsZW5jZQotZW5hYmxlX3J0cAogZW5hYmxlX3NkaQogZW5hYmxlX3NkcAogZW5hYmxlX3NlZ21lbnRjbGlwCkBAIC0xNzYyLDYgKzE3ODgsOSBAQAogZW5hYmxlX3ZjZAogZW5hYmxlX29wZW5zbGVzCiBlbmFibGVfdXZjaDI2NAorZW5hYmxlX252ZW5jCit3aXRoX2N1ZGFfcHJlZml4CitlbmFibGVfdGlueWFsc2EKIGVuYWJsZV9hc3NyZW5kZXIKIGVuYWJsZV92b2FtcndiZW5jCiBlbmFibGVfdm9hYWNlbmMKQEAgLTE3OTUsNyArMTgyNCw2IEBACiBlbmFibGVfbW9kcGx1ZwogZW5hYmxlX21pbWljCiBlbmFibGVfbXBlZzJlbmMKLWVuYWJsZV9tcGcxMjMKIGVuYWJsZV9tcGxleAogZW5hYmxlX211c2VwYWNrCiBlbmFibGVfbmFzCkBAIC0xODE0LDYgKzE4NDIsNyBAQAogZW5hYmxlX2dsCiBlbmFibGVfZ3RrMwogZW5hYmxlX3F0CitlbmFibGVfdnVsa2FuCiBlbmFibGVfbGlidmlzdWFsCiBlbmFibGVfdGltaWRpdHkKIGVuYWJsZV90ZWxldGV4dGRlYwpAQCAtMTgzNyw5ICsxODY2LDggQEAKIGVuYWJsZV96YmFyCiBlbmFibGVfcnRtcAogZW5hYmxlX3NwYW5kc3AKLWVuYWJsZV9nc2V0dGluZ3MKLWVuYWJsZV9zY2hlbWFzX2NvbXBpbGUKIGVuYWJsZV9zbmRpbword2l0aF9obHNfY3J5cHRvCiBlbmFibGVfaGxzCiB3aXRoX2xpYmdjcnlwdF9wcmVmaXgKIGVuYWJsZV94MjY1CkBAIC0xODUyLDYgKzE4ODAsNyBAQAogTERGTEFHUwogTElCUwogQ1BQRkxBR1MKK0xUX1NZU19MSUJSQVJZX1BBVEgKIENQUAogUEtHX0NPTkZJRwogVkFMR1JJTkRfQ0ZMQUdTCkBAIC0xOTE1LDEwICsxOTQ0LDIwIEBACiBPUkNfTElCUwogWF9DRkxBR1MKIFhfTElCUworR0xfQ0ZMQUdTCitHTF9MSUJTCitHTEVTMl9DRkxBR1MKK0dMRVMyX0xJQlMKK0VHTF9DRkxBR1MKK0VHTF9MSUJTCiBXQVlMQU5EX0VHTF9DRkxBR1MKIFdBWUxBTkRfRUdMX0xJQlMKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUworR1NUX0FMTE9DQVRPUlNfTElCUwogTElCUE5HX0NGTEFHUwogTElCUE5HX0xJQlMKK1hDQl9DRkxBR1MKK1hDQl9MSUJTCiBCTFVFWjVfQ0ZMQUdTCiBCTFVFWjVfTElCUwogR0lPX1VOSVhfQ0ZMQUdTCkBAIC0xOTI3LDYgKzE5NjYsMTQgQEAKIEdfVURFVl9MSUJTCiBMSUJVU0JfQ0ZMQUdTCiBMSUJVU0JfTElCUworR1NUX1ZJREVPX0NGTEFHUworR1NUX1ZJREVPX0xJQlMKK0dTVF9QQlVUSUxTX0NGTEFHUworR1NUX1BCVVRJTFNfTElCUworQ1VEQV9DRkxBR1MKK0NVREFfTElCUworTlZFTkNPREVfQ0ZMQUdTCitOVkVOQ09ERV9MSUJTCiBBU1NSRU5ERVJfQ0ZMQUdTCiBBU1NSRU5ERVJfTElCUwogVk9BTVJXQkVOQ19DRkxBR1MKQEAgLTE5ODMsOCArMjAzMCw2IEBACiBNSlBFR19MSUJTCiBNUEVHMkVOQ19DRkxBR1MKIE1QRUcyRU5DX0xJQlMKLU1QRzEyM19DRkxBR1MKLU1QRzEyM19MSUJTCiBNUExFWF9DRkxBR1MKIE1QTEVYX0xJQlMKIE5FT05fQ0ZMQUdTCkBAIC0yMDA5LDggKzIwNTQsNiBAQAogUFZSX0xJQlMKIFJTVkdfQ0ZMQUdTCiBSU1ZHX0xJQlMKLVJTVkdfMl8zNl8yX0NGTEFHUwotUlNWR18yXzM2XzJfTElCUwogR1RLM19HTF9DRkxBR1MKIEdUSzNfR0xfTElCUwogR1RLM19YMTFfQ0ZMQUdTCkBAIC0yMDIzLDYgKzIwNjYsMTIgQEAKIFFUX1gxMV9MSUJTCiBRVF9XQVlMQU5EX0NGTEFHUwogUVRfV0FZTEFORF9MSUJTCitRVF9BTkRST0lEX0NGTEFHUworUVRfQU5EUk9JRF9MSUJTCitHTlVTVExfQ0ZMQUdTCitHTlVTVExfTElCUworUVRfTUFDX0NGTEFHUworUVRfTUFDX0xJQlMKIExJQlZJU1VBTF9DRkxBR1MKIExJQlZJU1VBTF9MSUJTCiBUSU1JRElUWV9DRkxBR1MKQEAgLTIwNDUsOCArMjA5NCw2IEBACiBSVE1QX0xJQlMKIFNQQU5EU1BfQ0ZMQUdTCiBTUEFORFNQX0xJQlMKLUdTRVRUSU5HU19DRkxBR1MKLUdTRVRUSU5HU19MSUJTCiBORVRUTEVfQ0ZMQUdTCiBORVRUTEVfTElCUwogT1BFTlNTTF9DRkxBR1MKQEAgLTI2MDMsNyArMjY1MCw3IEBACiAgICMgT21pdCBzb21lIGludGVybmFsIG9yIG9ic29sZXRlIG9wdGlvbnMgdG8gbWFrZSB0aGUgbGlzdCBsZXNzIGltcG9zaW5nLgogICAjIFRoaXMgbWVzc2FnZSBpcyB0b28gbG9uZyB0byBiZSBhIHN0cmluZyBpbiB0aGUgQS9VWCAzLjEgc2guCiAgIGNhdCA8PF9BQ0VPRgotXGBjb25maWd1cmUnIGNvbmZpZ3VyZXMgR1N0cmVhbWVyIEJhZCBQbHVnLWlucyAxLjYuMyB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCitcYGNvbmZpZ3VyZScgY29uZmlndXJlcyBHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNy45MSB0byBhZGFwdCB0byBtYW55IGtpbmRzIG9mIHN5c3RlbXMuCiAKIFVzYWdlOiAkMCBbT1BUSU9OXS4uLiBbVkFSPVZBTFVFXS4uLgogCkBAIC0yNjc1LDcgKzI3MjIsNyBAQAogCiBpZiB0ZXN0IC1uICIkYWNfaW5pdF9oZWxwIjsgdGhlbgogICBjYXNlICRhY19pbml0X2hlbHAgaW4KLSAgICAgc2hvcnQgfCByZWN1cnNpdmUgKSBlY2hvICJDb25maWd1cmF0aW9uIG9mIEdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgMS42LjM6Ijs7CisgICAgIHNob3J0IHwgcmVjdXJzaXZlICkgZWNobyAiQ29uZmlndXJhdGlvbiBvZiBHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNy45MToiOzsKICAgIGVzYWMKICAgY2F0IDw8XF9BQ0VPRgogCkBAIC0yNzAxLDYgKzI3NDgsNyBAQAogICAtLWRpc2FibGUtcnBhdGggICAgICAgICBkbyBub3QgaGFyZGNvZGUgcnVudGltZSBsaWJyYXJ5IHBhdGhzCiAgIC0tZGlzYWJsZS1mYXRhbC13YXJuaW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICBEb24ndCB0dXJuIGNvbXBpbGVyIHdhcm5pbmdzIGludG8gZmF0YWwgZXJyb3JzCisgIC0tZW5hYmxlLWV4dHJhLWNoZWNrcyAgIEVuYWJsZSBleHRyYSBydW50aW1lIGNoZWNrcwogICAtLWRpc2FibGUtZGVidWcgICAgICAgICBkaXNhYmxlIGFkZGl0aW9uIG9mIC1nIGRlYnVnZ2luZyBpbmZvCiAgIC0tZW5hYmxlLXByb2ZpbGluZyAgICAgIGFkZHMgLXBnIHRvIGNvbXBpbGVyIGNvbW1hbmRsaW5lLCBmb3IgcHJvZmlsaW5nCiAgIC0tZGlzYWJsZS12YWxncmluZCAgICAgIGRpc2FibGUgcnVuLXRpbWUgdmFsZ3JpbmQgZGV0ZWN0aW9uCkBAIC0yNzE2LDE0ICsyNzY0LDE3IEBACiAgIC0tZW5hYmxlLWd0ay1kb2MtcGRmICAgIGJ1aWxkIGRvY3VtZW50YXRpb24gaW4gcGRmIGZvcm1hdCBbW2RlZmF1bHQ9bm9dXQogICAtLWVuYWJsZS1nb2JqZWN0LWNhc3QtY2hlY2tzPVtuby9hdXRvL3llc10KICAgICAgICAgICAgICAgICAgICAgICAgICAgRW5hYmxlIEdPYmplY3QgY2FzdCBjaGVja3MKLSAgLS1lbmFibGUtZ2xpYi1hc3NlcnRzPVtuby9hdXRvL3llc10KKyAgLS1lbmFibGUtZ2xpYi1hc3NlcnRzPVtuby95ZXNdCiAgICAgICAgICAgICAgICAgICAgICAgICAgIEVuYWJsZSBHTGliIGFzc2VydGlvbgorICAtLWRpc2FibGUtQnN5bWJvbGljICAgICBhdm9pZCBsaW5raW5nIHdpdGggLUJzeW1ib2xpYwogICAtLWVuYWJsZS1vcmMgICAgICAgICAgICB1c2UgT3JjIGlmIGluc3RhbGxlZAogICAtLWVuYWJsZS1zdGF0aWMtcGx1Z2lucyBidWlsZCBzdGF0aWMgcGx1Z2lucyBbZGVmYXVsdD1ub10KICAgLS1kaXNhYmxlLWFjY3VyaXAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgYWNjdXJpcCBwbHVnaW4KICAgLS1kaXNhYmxlLWFkcGNtZGVjICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgYWRwY21kZWMgcGx1Z2luCiAgIC0tZGlzYWJsZS1hZHBjbWVuYyAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIGFkcGNtZW5jIHBsdWdpbgogICAtLWRpc2FibGUtYWlmZiAgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBhaWZmIHBsdWdpbgorICAtLWRpc2FibGUtdmlkZW9mcmFtZV9hdWRpb2xldmVsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCBwbHVnaW4KICAgLS1kaXNhYmxlLWFzZm11eCAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgYXNmbXV4IHBsdWdpbgogICAtLWRpc2FibGUtYXVkaW9meGJhZCAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBhdWRpb2Z4YmFkIHBsdWdpbgogICAtLWRpc2FibGUtYXVkaW9taXhlciAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBhdWRpb21peGVyIHBsdWdpbgpAQCAtMjc1OCw3ICsyODA5LDYgQEAKICAgLS1kaXNhYmxlLWpwMmtkZWNpbWF0b3IgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MganAya2RlY2ltYXRvciBwbHVnaW4KICAgLS1kaXNhYmxlLWpwZWdmb3JtYXQgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MganBlZ2Zvcm1hdCBwbHVnaW4KICAgLS1kaXNhYmxlLWxpYnJmYiAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgbGlicmZiIHBsdWdpbgotICAtLWRpc2FibGUtbGl2ZWFkZGVyICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBsaXZlYWRkZXIgcGx1Z2luCiAgIC0tZGlzYWJsZS1taWRpICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG1pZGkgcGx1Z2luCiAgIC0tZGlzYWJsZS1tcGVnZGVtdXggICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG1wZWdkZW11eCBwbHVnaW4KICAgLS1kaXNhYmxlLW1wZWd0c2RlbXV4ICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgbXBlZ3RzZGVtdXggcGx1Z2luCkBAIC0yNzY2LDYgKzI4MTYsNyBAQAogICAtLWRpc2FibGUtbXBlZ3BzbXV4ICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBtcGVncHNtdXggcGx1Z2luCiAgIC0tZGlzYWJsZS1tdmUgICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG12ZSBwbHVnaW4KICAgLS1kaXNhYmxlLW14ZiAgICAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgbXhmIHBsdWdpbgorICAtLWRpc2FibGUtbmV0c2ltICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBuZXRzaW0gcGx1Z2luCiAgIC0tZGlzYWJsZS1udXZkZW11eCAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIG51dmRlbXV4IHBsdWdpbgogICAtLWRpc2FibGUtb252aWYgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBvbnZpZiBwbHVnaW4KICAgLS1kaXNhYmxlLXBhdGNoZGV0ZWN0ICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3MgcGF0Y2hkZXRlY3QgcGx1Z2luCkBAIC0yNzczLDcgKzI4MjQsNiBAQAogICAtLWRpc2FibGUtcG5tICAgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBwbm0gcGx1Z2luCiAgIC0tZGlzYWJsZS1yYXdwYXJzZSAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIHJhd3BhcnNlIHBsdWdpbgogICAtLWRpc2FibGUtcmVtb3Zlc2lsZW5jZSBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyByZW1vdmVzaWxlbmNlIHBsdWdpbgotICAtLWRpc2FibGUtcnRwICAgICAgICAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBydHAgcGx1Z2luCiAgIC0tZGlzYWJsZS1zZGkgICAgICAgICAgIGRpc2FibGUgZGVwZW5kZW5jeS1sZXNzIHNkaSBwbHVnaW4KICAgLS1kaXNhYmxlLXNkcCAgICAgICAgICAgZGlzYWJsZSBkZXBlbmRlbmN5LWxlc3Mgc2RwIHBsdWdpbgogICAtLWRpc2FibGUtc2VnbWVudGNsaXAgICBkaXNhYmxlIGRlcGVuZGVuY3ktbGVzcyBzZWdtZW50Y2xpcCBwbHVnaW4KQEAgLTI4MTIsNiArMjg2Miw4IEBACiAgIC0tZGlzYWJsZS12Y2QgICAgICAgICAgICAgICAgZGlzYWJsZSBWaWRlbyBDRDogdmNkc3JjCiAgIC0tZGlzYWJsZS1vcGVuc2xlcyAgICAgICAgICAgZGlzYWJsZSBPcGVuU0wgRVM6IG9wZW5zbAogICAtLWRpc2FibGUtdXZjaDI2NCAgICAgICAgICAgIGRpc2FibGUgVVZDIEgyNjQ6IHV2Y2gyNjQKKyAgLS1kaXNhYmxlLW52ZW5jICAgICAgICAgICAgICBkaXNhYmxlIE5WSURJQSBFbmNvZGUgQVBJOiBudmVuYworICAtLWRpc2FibGUtdGlueWFsc2EgICAgICAgICAgIGRpc2FibGUgdGlueWFsc2E6IHRpbnlhbHNhCiAgIC0tZGlzYWJsZS1hc3NyZW5kZXIgICAgICAgICAgZGlzYWJsZSBBU1MvU1NBIHJlbmRlcmVyOiBhc3NyZW5kZXIKICAgLS1kaXNhYmxlLXZvYW1yd2JlbmMgICAgICAgICBkaXNhYmxlIHZvLWFtcndiZW5jIGxpYnJhcnk6IHZvLWFtcndiZW5jCiAgIC0tZGlzYWJsZS12b2FhY2VuYyAgICAgICAgICAgZGlzYWJsZSB2by1hYWNlbmMgbGlicmFyeTogdm8tYWFjZW5jCkBAIC0yODMwLDcgKzI4ODIsNyBAQAogICAtLWRpc2FibGUtZHRzICAgICAgICAgICAgICAgIGRpc2FibGUgZHRzIGxpYnJhcnk6IGR0c2RlYwogICAtLWRpc2FibGUtcmVzaW5kdmQgICAgICAgICAgIGRpc2FibGUgcmVzaW5kdmQgcGx1Z2luOiByZXNpbmR2ZAogICAtLWRpc2FibGUtZmFhYyAgICAgICAgICAgICAgIGRpc2FibGUgQUFDIGVuY29kZXIgcGx1Zy1pbjogZmFhYwotICAtLWRpc2FibGUtZmFhZCAgICAgICAgICAgICAgIGRpc2FibGUgQUFDIGRlY29kZXIgcGx1Zy1pbjogZmFhZAorICAtLWRpc2FibGUtZmFhZCAgICAgICAgICAgICAgIGRpc2FibGUgRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbjogZmFhZAogICAtLWRpc2FibGUtZmJkZXYgICAgICAgICAgICAgIGRpc2FibGUgbGludXggZnJhbWVidWZmZXI6IGZiZGV2c2luawogICAtLWRpc2FibGUtZmxpdGUgICAgICAgICAgICAgIGRpc2FibGUgRmxpdGUgcGx1Z2luOiBmbGl0ZQogICAtLWRpc2FibGUtZ3NtICAgICAgICAgICAgICAgIGRpc2FibGUgR1NNIGxpYnJhcnk6IGdzbWVuYyBnc21kZWMKQEAgLTI4NDYsNyArMjg5OCw2IEBACiAgIC0tZGlzYWJsZS1tb2RwbHVnICAgICAgICAgICAgZGlzYWJsZSBtb2RwbHVnOiBtb2RwbHVnCiAgIC0tZGlzYWJsZS1taW1pYyAgICAgICAgICAgICAgZGlzYWJsZSBsaWJtaW1pYyBsaWJyYXJ5OiBtaW1pYwogICAtLWRpc2FibGUtbXBlZzJlbmMgICAgICAgICAgIGRpc2FibGUgbXBlZzJlbmM6IG1wZWcyZW5jCi0gIC0tZGlzYWJsZS1tcGcxMjMgICAgICAgICAgICAgZGlzYWJsZSBtcGcxMjMgYXVkaW8gZGVjb2RlcjogbXBnMTIzCiAgIC0tZGlzYWJsZS1tcGxleCAgICAgICAgICAgICAgZGlzYWJsZSBtcGxleDogbXBsZXgKICAgLS1kaXNhYmxlLW11c2VwYWNrICAgICAgICAgICBkaXNhYmxlIG11c2VwYWNrZGVjOiBtdXNlcGFjawogICAtLWRpc2FibGUtbmFzICAgICAgICAgICAgICAgIGRpc2FibGUgbmFzIHBsdWctaW46IG5hc3NpbmsKQEAgLTI4NjQsNiArMjkxNSw3IEBACiAgIC0tZGlzYWJsZS1nbCAgICAgICAgICAgICAgICAgZGlzYWJsZSBnbCBlbGVtZW50czogZ2wKICAgLS1kaXNhYmxlLWd0azMgICAgICAgICAgICAgICBkaXNhYmxlIEd0aysgZWxlbWVudHM6IGd0awogICAtLWRpc2FibGUtcXQgICAgICAgICAgICAgICAgIGRpc2FibGUgUXQgZWxlbWVudHM6IHF0CisgIC0tZGlzYWJsZS12dWxrYW4gICAgICAgICAgICAgZGlzYWJsZSBWdWxrYW4gZWxlbWVudHM6IHZ1bGthbgogICAtLWRpc2FibGUtbGlidmlzdWFsICAgICAgICAgIGRpc2FibGUgbGlidmlzdWFsIHZpc3VhbGl6YXRpb24gbGlicmFyeTogbGlidmlzdWFsCiAgIC0tZGlzYWJsZS10aW1pZGl0eSAgICAgICAgICAgZGlzYWJsZSB0aW1pZGl0eSBtaWRpIHNvZnQgc3ludGggcGx1Z2luOiB0aW1pZGl0eQogICAtLWRpc2FibGUtdGVsZXRleHRkZWMgICAgICAgIGRpc2FibGUgVGVsZXRleHQgZGVjb2RlcjogdGVsZXRleHRkZWMKQEAgLTI4ODUsOSArMjkzNyw2IEBACiAgIC0tZGlzYWJsZS16YmFyICAgICAgICAgICAgICAgZGlzYWJsZSBaQmFyIGJhcmNvZGUgZGV0ZWN0b3I6IHpiYXIKICAgLS1kaXNhYmxlLXJ0bXAgICAgICAgICAgICAgICBkaXNhYmxlIHJ0bXAgbGlicmFyeTogcnRtcAogICAtLWRpc2FibGUtc3BhbmRzcCAgICAgICAgICAgIGRpc2FibGUgU3BhbmRzcDogc3BhbmRzcAotICAtLWRpc2FibGUtZ3NldHRpbmdzICAgICAgICAgIGRpc2FibGUgR1NldHRpbmdzIHBsdWdpbjogZ3NldHRpbmdzCi0gIC0tZGlzYWJsZS1zY2hlbWFzLWNvbXBpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgRGlzYWJsZSByZWdlbmVyYXRpb24gb2YgZ3NjaGVtYXMuY29tcGlsZWQgb24gaW5zdGFsbAogICAtLWRpc2FibGUtc25kaW8gICAgICAgICAgICAgIGRpc2FibGUgc25kaW8gYXVkaW86IHNuZGlvCiAgIC0tZGlzYWJsZS1obHMgICAgICAgICAgICAgICAgZGlzYWJsZSBodHRwIGxpdmUgc3RyZWFtaW5nIHBsdWdpbjogaGxzCiAgIC0tZGlzYWJsZS14MjY1ICAgICAgICAgICAgICAgZGlzYWJsZSB4MjY1IHBsdWctaW46IHgyNjUKQEAgLTI4OTcsOSArMjk0NiwxMiBAQAogICAtLXdpdGhvdXQtUEFDS0FHRSAgICAgICBkbyBub3QgdXNlIFBBQ0tBR0UgKHNhbWUgYXMgLS13aXRoLVBBQ0tBR0U9bm8pCiAgIC0td2l0aC1waWNbPVBLR1NdICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQogICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAtLXdpdGgtYWl4LXNvbmFtZT1haXh8c3ZyNHxib3RoCisgICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZCBsaWJyYXJ5IHZlcnNpb25pbmcgKGFrYSAiU09OQU1FIikgdmFyaWFudCB0bworICAgICAgICAgICAgICAgICAgICAgICAgICBwcm92aWRlIG9uIEFJWCwgW2RlZmF1bHQ9YWl4XS4KICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAtLXdpdGgtc3lzcm9vdFs9RElSXSAgICBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUiAob3IgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KICAgLS13aXRoLWF1dG9jb25mICAgICAgICAgdXNlIGEgZGlmZmVyZW50IGF1dG9jb25mIGZvciByZWdlbmVyYXRpb24gb2YKICAgICAgICAgICAgICAgICAgICAgICAgICAgTWFrZWZpbGVzCiAgIC0td2l0aC1hdXRvaGVhZGVyICAgICAgIHVzZSBhIGRpZmZlcmVudCBhdXRvaGVhZGVyIGZvciByZWdlbmVyYXRpb24gb2YKQEAgLTI5MjAsNiArMjk3Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbXBpbGUKICAgLS13aXRoLWh0bWwtZGlyPVBBVEggICAgcGF0aCB0byBpbnN0YWxsZWQgZG9jcwogICAtLXdpdGgtZ3RrPTMuMHwyLjAgICAgICB3aGljaCBndGsrIHZlcnNpb24gdG8gY29tcGlsZSBhZ2FpbnN0IChkZWZhdWx0OiAyLjApCisgIC0td2l0aC1wbGF5ZXItdGVzdHMgICAgIEVuYWJsZSBHc3RQbGF5ZXIgdGVzdHMgdGhhdCBuZWVkIG5ldHdvcmsgYWNjZXNzCisgICAgICAgICAgICAgICAgICAgICAgICAgIChkZWZhdWx0OiBubykKICAgLS13aXRoLWRlZmF1bHQtYXVkaW9zaW5rCiAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgZGVmYXVsdCBhdWRpbyBzaW5rCiAgIC0td2l0aC1kZWZhdWx0LWF1ZGlvc3JjIHNwZWNpZnkgZGVmYXVsdCBhdWRpbyBzb3VyY2UKQEAgLTI5MzQsMTEgKzI5ODgsMTYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeSBtb2R1bGUgbmFtZSBmb3IgR0xFUzIgKGRlZmF1bHQ6IGxpYkdMRVN2MikKICAgLS13aXRoLWVnbC1tb2R1bGUtbmFtZSAgbGlicmFyeSBtb2R1bGUgbmFtZSBmb3IgRUdMIChkZWZhdWx0OiBsaWJFR0wpCiAgIC0td2l0aC1qcGVnLW1teCwgcGF0aCB0byBNTVgnaWZpZWQgSlBFRyBsaWJyYXJ5CisgIC0td2l0aC1jdWRhLXByZWZpeCAgICAgIFVzZSB0aGUgcHJvdmlkZWQgcHJlZml4IGZvciBkZXRlY3RpbmcgdGhlIGN1ZGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbGF0aW9uCiAgIC0td2l0aC1wdnItZXh0ZXJuYWwtaGVhZGVycwogICAgICAgICAgICAgICAgICAgICAgICAgICBVc2Ugc3lzdGVtIGluc3RhbGxlZCBQVlIyRCBoZWFkZXJzCiAgIC0td2l0aC1zZGwtcHJlZml4PVBGWCAgIHByZWZpeCB3aGVyZSBTREwgaXMgaW5zdGFsbGVkIChvcHRpb25hbCkKICAgLS13aXRoLXNkbC1leGVjLXByZWZpeD1QRlgKICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhlYyBwcmVmaXggd2hlcmUgU0RMIGlzIGluc3RhbGxlZCAob3B0aW9uYWwpCisgIC0td2l0aC1obHMtY3J5cHRvPWF1dG98bmV0dGxlfGxpYmdjcnlwdHxvcGVuc3NsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdoaWNoIGNyeXB0b2dyYXBoaWMgbGlicmFyeSB2ZXJzaW9uIHRvIGNvbXBpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCBmb3IgaGxzIChkZWZhdWx0OiBhdXRvKQogICAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeD1QRlgKICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJlZml4IHdoZXJlIExJQkdDUllQVCBpcyBpbnN0YWxsZWQgKG9wdGlvbmFsKQogCkBAIC0yOTUwLDYgKzMwMDksOCBAQAogICBMSUJTICAgICAgICBsaWJyYXJpZXMgdG8gcGFzcyB0byB0aGUgbGlua2VyLCBlLmcuIC1sPGxpYnJhcnk+CiAgIENQUEZMQUdTICAgIChPYmplY3RpdmUpIEMvQysrIHByZXByb2Nlc3NvciBmbGFncywgZS5nLiAtSTxpbmNsdWRlIGRpcj4gaWYKICAgICAgICAgICAgICAgeW91IGhhdmUgaGVhZGVycyBpbiBhIG5vbnN0YW5kYXJkIGRpcmVjdG9yeSA8aW5jbHVkZSBkaXI+CisgIExUX1NZU19MSUJSQVJZX1BBVEgKKyAgICAgICAgICAgICAgVXNlci1kZWZpbmVkIHJ1bi10aW1lIGxpYnJhcnkgc2VhcmNoIHBhdGguCiAgIENQUCAgICAgICAgIEMgcHJlcHJvY2Vzc29yCiAgIFBLR19DT05GSUcgIHBhdGggdG8gcGtnLWNvbmZpZyB1dGlsaXR5CiAgIFZBTEdSSU5EX0NGTEFHUwpAQCAtMzA0NiwxMyArMzEwNywyNiBAQAogICBPUkNfTElCUyAgICBsaW5rZXIgZmxhZ3MgZm9yIE9SQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIFhfQ0ZMQUdTICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFgsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBYX0xJQlMgICAgICBsaW5rZXIgZmxhZ3MgZm9yIFgsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHTF9DRkxBR1MgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHTCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdMX0xJQlMgICAgIGxpbmtlciBmbGFncyBmb3IgR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHTEVTMl9DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgR0xFUzIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHTEVTMl9MSUJTICBsaW5rZXIgZmxhZ3MgZm9yIEdMRVMyLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgRUdMX0NGTEFHUyAgQyBjb21waWxlciBmbGFncyBmb3IgRUdMLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgRUdMX0xJQlMgICAgbGlua2VyIGZsYWdzIGZvciBFR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBXQVlMQU5EX0VHTF9DRkxBR1MKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgV0FZTEFORF9FR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBXQVlMQU5EX0VHTF9MSUJTCiAgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgV0FZTEFORF9FR0wsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHU1RfQUxMT0NBVE9SU19DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgR1NUX0FMTE9DQVRPUlMsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHU1RfQUxMT0NBVE9SU19MSUJTCisgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgR1NUX0FMTE9DQVRPUlMsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBMSUJQTkdfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIExJQlBORywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIExJQlBOR19MSUJTIGxpbmtlciBmbGFncyBmb3IgTElCUE5HLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgWENCX0NGTEFHUyAgQyBjb21waWxlciBmbGFncyBmb3IgWENCLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgWENCX0xJQlMgICAgbGlua2VyIGZsYWdzIGZvciBYQ0IsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBCTFVFWjVfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIEJMVUVaNSwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIEJMVUVaNV9MSUJTIGxpbmtlciBmbGFncyBmb3IgQkxVRVo1LCBvdmVycmlkaW5nIHBrZy1jb25maWcKQEAgLTMwNjYsNiArMzE0MCwyMCBAQAogICBMSUJVU0JfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIExJQlVTQiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIExJQlVTQl9MSUJTIGxpbmtlciBmbGFncyBmb3IgTElCVVNCLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgR1NUX1ZJREVPX0NGTEFHUworICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHU1RfVklERU8sIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBHU1RfVklERU9fTElCUworICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIEdTVF9WSURFTywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdTVF9QQlVUSUxTX0NGTEFHUworICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHU1RfUEJVVElMUywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdTVF9QQlVUSUxTX0xJQlMKKyAgICAgICAgICAgICAgbGlua2VyIGZsYWdzIGZvciBHU1RfUEJVVElMUywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIENVREFfQ0ZMQUdTIEMgY29tcGlsZXIgZmxhZ3MgZm9yIENVREEsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBDVURBX0xJQlMgICBsaW5rZXIgZmxhZ3MgZm9yIENVREEsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBOVkVOQ09ERV9DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTnZFbmNvZGVBUEkuaAorICBOVkVOQ09ERV9MSUJTCisgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgbnZpZGlhLWVuY29kZQogICBBU1NSRU5ERVJfQ0ZMQUdTCiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIEFTU1JFTkRFUiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIEFTU1JFTkRFUl9MSUJTCkBAIC0zMTU0LDkgKzMyNDIsNiBAQAogICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBNUEVHMkVOQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIE1QRUcyRU5DX0xJQlMKICAgICAgICAgICAgICAgbGlua2VyIGZsYWdzIGZvciBNUEVHMkVOQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCi0gIE1QRzEyM19DRkxBR1MKLSAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTVBHMTIzLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgTVBHMTIzX0xJQlMgbGlua2VyIGZsYWdzIGZvciBNUEcxMjMsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBNUExFWF9DRkxBR1MKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTVBMRVgsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBNUExFWF9MSUJTICBsaW5rZXIgZmxhZ3MgZm9yIE1QTEVYLCBvdmVycmlkaW5nIHBrZy1jb25maWcKQEAgLTMxOTIsMTAgKzMyNzcsNiBAQAogICBQVlJfTElCUyAgICBsaW5rZXIgZmxhZ3MgZm9yIFBWUiwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIFJTVkdfQ0ZMQUdTIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFJTVkcsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBSU1ZHX0xJQlMgICBsaW5rZXIgZmxhZ3MgZm9yIFJTVkcsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICBSU1ZHXzJfMzZfMl9DRkxBR1MKLSAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgUlNWR18yXzM2XzIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICBSU1ZHXzJfMzZfMl9MSUJTCi0gICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgUlNWR18yXzM2XzIsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBHVEszX0dMX0NGTEFHUwogICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHVEszX0dMLCBvdmVycmlkaW5nIHBrZy1jb25maWcKICAgR1RLM19HTF9MSUJTCkBAIC0zMjE3LDYgKzMyOTgsMTYgQEAKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgUVRfV0FZTEFORCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIFFUX1dBWUxBTkRfTElCUwogICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIFFUX1dBWUxBTkQsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBRVF9BTkRST0lEX0NGTEFHUworICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBRVF9BTkRST0lELCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgUVRfQU5EUk9JRF9MSUJTCisgICAgICAgICAgICAgIGxpbmtlciBmbGFncyBmb3IgUVRfQU5EUk9JRCwgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIEdOVVNUTF9DRkxBR1MKKyAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgR05VU1RMLCBvdmVycmlkaW5nIHBrZy1jb25maWcKKyAgR05VU1RMX0xJQlMgbGlua2VyIGZsYWdzIGZvciBHTlVTVEwsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZworICBRVF9NQUNfQ0ZMQUdTCisgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFFUX01BQywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCisgIFFUX01BQ19MSUJTIGxpbmtlciBmbGFncyBmb3IgUVRfTUFDLCBvdmVycmlkaW5nIHBrZy1jb25maWcKICAgTElCVklTVUFMX0NGTEFHUwogICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBMSUJWSVNVQUwsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBMSUJWSVNVQUxfTElCUwpAQCAtMzI1MywxMCArMzM0NCw2IEBACiAgICAgICAgICAgICAgIEMgY29tcGlsZXIgZmxhZ3MgZm9yIFNQQU5EU1AsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwogICBTUEFORFNQX0xJQlMKICAgICAgICAgICAgICAgbGlua2VyIGZsYWdzIGZvciBTUEFORFNQLCBvdmVycmlkaW5nIHBrZy1jb25maWcKLSAgR1NFVFRJTkdTX0NGTEFHUwotICAgICAgICAgICAgICBDIGNvbXBpbGVyIGZsYWdzIGZvciBHU0VUVElOR1MsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwotICBHU0VUVElOR1NfTElCUwotICAgICAgICAgICAgICBsaW5rZXIgZmxhZ3MgZm9yIEdTRVRUSU5HUywgb3ZlcnJpZGluZyBwa2ctY29uZmlnCiAgIE5FVFRMRV9DRkxBR1MKICAgICAgICAgICAgICAgQyBjb21waWxlciBmbGFncyBmb3IgTkVUVExFLCBvdmVycmlkaW5nIHBrZy1jb25maWcKICAgTkVUVExFX0xJQlMgbGlua2VyIGZsYWdzIGZvciBORVRUTEUsIG92ZXJyaWRpbmcgcGtnLWNvbmZpZwpAQCAtMzMzMyw3ICszNDIwLDcgQEAKIHRlc3QgLW4gIiRhY19pbml0X2hlbHAiICYmIGV4aXQgJGFjX3N0YXR1cwogaWYgJGFjX2luaXRfdmVyc2lvbjsgdGhlbgogICBjYXQgPDxcX0FDRU9GCi1HU3RyZWFtZXIgQmFkIFBsdWctaW5zIGNvbmZpZ3VyZSAxLjYuMworR1N0cmVhbWVyIEJhZCBQbHVnLWlucyBjb25maWd1cmUgMS43LjkxCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkKIAogQ29weXJpZ2h0IChDKSAyMDEyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgpAQCAtNDMwNiw3ICs0MzkzLDcgQEAKIFRoaXMgZmlsZSBjb250YWlucyBhbnkgbWVzc2FnZXMgcHJvZHVjZWQgYnkgY29tcGlsZXJzIHdoaWxlCiBydW5uaW5nIGNvbmZpZ3VyZSwgdG8gYWlkIGRlYnVnZ2luZyBpZiBjb25maWd1cmUgbWFrZXMgYSBtaXN0YWtlLgogCi1JdCB3YXMgY3JlYXRlZCBieSBHU3RyZWFtZXIgQmFkIFBsdWctaW5zICRhc19tZSAxLjYuMywgd2hpY2ggd2FzCitJdCB3YXMgY3JlYXRlZCBieSBHU3RyZWFtZXIgQmFkIFBsdWctaW5zICRhc19tZSAxLjcuOTEsIHdoaWNoIHdhcwogZ2VuZXJhdGVkIGJ5IEdOVSBBdXRvY29uZiAyLjY5LiAgSW52b2NhdGlvbiBjb21tYW5kIGxpbmUgd2FzCiAKICAgJCAkMCAkQApAQCAtNTI4OCw3ICs1Mzc1LDcgQEAKIAogIyBEZWZpbmUgdGhlIGlkZW50aXR5IG9mIHRoZSBwYWNrYWdlLgogIFBBQ0tBR0U9J2dzdC1wbHVnaW5zLWJhZCcKLSBWRVJTSU9OPScxLjYuMycKKyBWRVJTSU9OPScxLjcuOTEnCiAKIAogY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgpAQCAtNTQ5OSw5ICs1NTg2LDkgQEAKIAogCiAKLSAgUEFDS0FHRV9WRVJTSU9OX01BSk9SPSQoZWNobyAxLjYuMyB8IGN1dCAtZCcuJyAtZjEpCi0gIFBBQ0tBR0VfVkVSU0lPTl9NSU5PUj0kKGVjaG8gMS42LjMgfCBjdXQgLWQnLicgLWYyKQotICBQQUNLQUdFX1ZFUlNJT05fTUlDUk89JChlY2hvIDEuNi4zIHwgY3V0IC1kJy4nIC1mMykKKyAgUEFDS0FHRV9WRVJTSU9OX01BSk9SPSQoZWNobyAxLjcuOTEgfCBjdXQgLWQnLicgLWYxKQorICBQQUNLQUdFX1ZFUlNJT05fTUlOT1I9JChlY2hvIDEuNy45MSB8IGN1dCAtZCcuJyAtZjIpCisgIFBBQ0tBR0VfVkVSU0lPTl9NSUNSTz0kKGVjaG8gMS43LjkxIHwgY3V0IC1kJy4nIC1mMykKIAogCiAKQEAgLTU1MTIsNyArNTU5OSw3IEBACiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgbmFubyB2ZXJzaW9uIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIG5hbm8gdmVyc2lvbi4uLiAiID4mNjsgfQogCi0gIE5BTk89JChlY2hvIDEuNi4zIHwgY3V0IC1kJy4nIC1mNCkKKyAgTkFOTz0kKGVjaG8gMS43LjkxIHwgY3V0IC1kJy4nIC1mNCkKIAogICBpZiB0ZXN0IHgiJE5BTk8iID0geCB8fCB0ZXN0ICJ4JE5BTk8iID0gIngwIiA7IHRoZW4KICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogMCAocmVsZWFzZSkiID4mNQpAQCAtNTYzMiw4ICs1NzE5LDggQEAKIAogCiAKLW1hY3JvX3ZlcnNpb249JzIuNC4yJwotbWFjcm9fcmV2aXNpb249JzEuMzMzNycKK21hY3JvX3ZlcnNpb249JzIuNC42JworbWFjcm9fcmV2aXNpb249JzIuNC42JwogCiAKIApAQCAtNTY0Nyw3ICs1NzM0LDcgQEAKIAogCiAKLWx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorbHRtYWluPSRhY19hdXhfZGlyL2x0bWFpbi5zaAogCiAjIEJhY2tzbGFzaGlmeSBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluCiAjIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KQEAgLTU2OTYsNyArNTc4Myw3IEBACiAgICAgJEVDSE8gIiIKIH0KIAotY2FzZSAiJEVDSE8iIGluCitjYXNlICRFQ0hPIGluCiAgIHByaW50ZiopIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBwcmludGYiID4mNQogJGFzX2VjaG8gInByaW50ZiIgPiY2OyB9IDs7CiAgIHByaW50KikgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHByaW50IC1yIiA+JjUKQEAgLTcwNTgsMTkgKzcxNDUsMTkgQEAKIAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nbnUtbGQgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX2dudV9sZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfZ251X2xkOyB0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXMKKyAgd2l0aHZhbD0kd2l0aF9nbnVfbGQ7IHRlc3Qgbm8gPSAiJHdpdGh2YWwiIHx8IHdpdGhfZ251X2xkPXllcwogZWxzZQogICB3aXRoX2dudV9sZD1ubwogZmkKIAogYWNfcHJvZz1sZAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5ICRDQyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbGQgdXNlZCBieSAkQ0MuLi4gIiA+JjY7IH0KICAgY2FzZSAkaG9zdCBpbgogICAqLSotbWluZ3cqKQotICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4sIHdoaWNoIHVwc2V0cyBtaW5ndwogICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKICAgKikKICAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CkBAIC03MDg0LDcgKzcxNzEsNyBAQAogICAgICAgd2hpbGUgJEVDSE8gIiRhY19wcm9nIiB8ICRHUkVQICIkcmVfZGlyZWx0IiA+IC9kZXYvbnVsbCAyPiYxOyBkbwogCWFjX3Byb2c9YCRFQ0hPICRhY19wcm9nfCAkU0VEICJzJSRyZV9kaXJlbHQlLyUiYAogICAgICAgZG9uZQotICAgICAgdGVzdCAteiAiJExEIiAmJiBMRD0iJGFjX3Byb2ciCisgICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSRhY19wcm9nCiAgICAgICA7OwogICAiIikKICAgICAjIElmIGl0IGZhaWxzLCB0aGVuIHByZXRlbmQgd2UgYXJlbid0IHVzaW5nIEdDQy4KQEAgLTcwOTUsNyArNzE4Miw3IEBACiAgICAgd2l0aF9nbnVfbGQ9dW5rbm93bgogICAgIDs7CiAgIGVzYWMKLWVsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorZWxpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdOVSBsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgR05VIGxkLi4uICIgPiY2OyB9CiBlbHNlCkBAIC03MTA2LDMyICs3MTkzLDMyIEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KLSAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KLSAgICAgIGx0X2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICBsdF9jdl9wYXRoX0xEPSRhY19kaXIvJGFjX3Byb2cKICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKICAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCiAgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KICAgICAgIGNhc2UgYCIkbHRfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgogICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworCXRlc3Qgbm8gIT0gIiR3aXRoX2dudV9sZCIgJiYgYnJlYWsKIAk7OwogICAgICAgKikKLQl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCXRlc3QgeWVzICE9ICIkd2l0aF9nbnVfbGQiICYmIGJyZWFrCiAJOzsKICAgICAgIGVzYWMKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgorICBJRlM9JGx0X3NhdmVfaWZzCiBlbHNlCi0gIGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGx0X2N2X3BhdGhfTEQ9JExEICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogZmkKIGZpCiAKLUxEPSIkbHRfY3ZfcGF0aF9MRCIKK0xEPSRsdF9jdl9wYXRoX0xECiBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTEQiID4mNQogJGFzX2VjaG8gIiRMRCIgPiY2OyB9CkBAIC03MTc0LDMzICs3MjYxLDM4IEBACiBlbHNlCiAgIGlmIHRlc3QgLW4gIiROTSI7IHRoZW4KICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gIGx0X2N2X3BhdGhfTk09IiROTSIKKyAgbHRfY3ZfcGF0aF9OTT0kTk0KIGVsc2UKLSAgbHRfbm1fdG9fY2hlY2s9IiR7YWNfdG9vbF9wcmVmaXh9bm0iCisgIGx0X25tX3RvX2NoZWNrPSR7YWNfdG9vbF9wcmVmaXh9bm0KICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IiAmJiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgogICAgIGx0X25tX3RvX2NoZWNrPSIkbHRfbm1fdG9fY2hlY2sgbm0iCiAgIGZpCiAgIGZvciBsdF90bXBfbm0gaW4gJGx0X25tX3RvX2NoZWNrOyBkbwotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICAgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgICBmb3IgYWNfZGlyIGluICRQQVRIIC91c3IvY2NzL2Jpbi9lbGYgL3Vzci9jY3MvYmluIC91c3IvdWNiIC9iaW47IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgICB0bXBfbm09IiRhY19kaXIvJGx0X3RtcF9ubSIKLSAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IiA7IHRoZW4KKyAgICAgIHRtcF9ubT0kYWNfZGlyLyRsdF90bXBfbm0KKyAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IjsgdGhlbgogCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBubSBhY2NlcHRzIGEgQlNELWNvbXBhdCBmbGFnLgotCSMgQWRkaW5nIHRoZSBgc2VkIDFxJyBwcmV2ZW50cyBmYWxzZSBwb3NpdGl2ZXMgb24gSFAtVVgsIHdoaWNoIHNheXM6CisJIyBBZGRpbmcgdGhlICdzZWQgMXEnIHByZXZlbnRzIGZhbHNlIHBvc2l0aXZlcyBvbiBIUC1VWCwgd2hpY2ggc2F5czoKIAkjICAgbm06IHVua25vd24gb3B0aW9uICJCIiBpZ25vcmVkCiAJIyBUcnU2NCdzIG5tIGNvbXBsYWlucyB0aGF0IC9kZXYvbnVsbCBpcyBhbiBpbnZhbGlkIG9iamVjdCBmaWxlCi0JY2FzZSBgIiR0bXBfbm0iIC1CIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCi0JKi9kZXYvbnVsbCogfCAqJ0ludmFsaWQgZmlsZSBvciBvYmplY3QgdHlwZScqKQorCSMgTVNZUyBjb252ZXJ0cyAvZGV2L251bGwgdG8gTlVMLCBNaW5HVyBubSB0cmVhdHMgTlVMIGFzIGVtcHR5CisJY2FzZSAkYnVpbGRfb3MgaW4KKwltaW5ndyopIGx0X2JhZF9maWxlPWNvbmZ0ZXN0Lm5tL25vZmlsZSA7OworCSopIGx0X2JhZF9maWxlPS9kZXYvbnVsbCA7OworCWVzYWMKKwljYXNlIGAiJHRtcF9ubSIgLUIgJGx0X2JhZF9maWxlIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKwkqJGx0X2JhZF9maWxlKiB8IConSW52YWxpZCBmaWxlIG9yIG9iamVjdCB0eXBlJyopCiAJICBsdF9jdl9wYXRoX05NPSIkdG1wX25tIC1CIgotCSAgYnJlYWsKKwkgIGJyZWFrIDIKIAkgIDs7CiAJKikKIAkgIGNhc2UgYCIkdG1wX25tIiAtcCAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgogCSAgKi9kZXYvbnVsbCopCiAJICAgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLXAiCi0JICAgIGJyZWFrCisJICAgIGJyZWFrIDIKIAkgICAgOzsKIAkgICopCiAJICAgIGx0X2N2X3BhdGhfTk09JHtsdF9jdl9wYXRoX05NPSIkdG1wX25tIn0gIyBrZWVwIHRoZSBmaXJzdCBtYXRjaCwgYnV0CkBAIC03MjExLDE1ICs3MzAzLDE1IEBACiAJZXNhYwogICAgICAgZmkKICAgICBkb25lCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgSUZTPSRsdF9zYXZlX2lmcwogICBkb25lCiAgIDogJHtsdF9jdl9wYXRoX05NPW5vfQogZmkKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfTk0iID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wYXRoX05NIiA+JjY7IH0KLWlmIHRlc3QgIiRsdF9jdl9wYXRoX05NIiAhPSAibm8iOyB0aGVuCi0gIE5NPSIkbHRfY3ZfcGF0aF9OTSIKK2lmIHRlc3Qgbm8gIT0gIiRsdF9jdl9wYXRoX05NIjsgdGhlbgorICBOTT0kbHRfY3ZfcGF0aF9OTQogZWxzZQogICAjIERpZG4ndCBmaW5kIGFueSBCU0QgY29tcGF0aWJsZSBuYW1lIGxpc3RlciwgbG9vayBmb3IgZHVtcGJpbi4KICAgaWYgdGVzdCAtbiAiJERVTVBCSU4iOyB0aGVuIDoKQEAgLTczMjUsOSArNzQxNyw5IEBACiAgIGZpCiBmaQogCi0gICAgY2FzZSBgJERVTVBCSU4gLXN5bWJvbHMgL2Rldi9udWxsIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKyAgICBjYXNlIGAkRFVNUEJJTiAtc3ltYm9scyAtaGVhZGVycyAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgogICAgICpDT0ZGKikKLSAgICAgIERVTVBCSU49IiREVU1QQklOIC1zeW1ib2xzIgorICAgICAgRFVNUEJJTj0iJERVTVBCSU4gLXN5bWJvbHMgLWhlYWRlcnMiCiAgICAgICA7OwogICAgICopCiAgICAgICBEVU1QQklOPToKQEAgLTczMzUsOCArNzQyNyw4IEBACiAgICAgZXNhYwogICBmaQogCi0gIGlmIHRlc3QgIiREVU1QQklOIiAhPSAiOiI7IHRoZW4KLSAgICBOTT0iJERVTVBCSU4iCisgIGlmIHRlc3QgOiAhPSAiJERVTVBCSU4iOyB0aGVuCisgICAgTk09JERVTVBCSU4KICAgZmkKIGZpCiB0ZXN0IC16ICIkTk0iICYmIE5NPW5tCkBAIC03Mzg3LDcgKzc0NzksNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICAgIGk9MAotICB0ZXN0c3RyaW5nPSJBQkNEIgorICB0ZXN0c3RyaW5nPUFCQ0QKIAogICBjYXNlICRidWlsZF9vcyBpbgogICBtc2Rvc2RqZ3BwKikKQEAgLTc0MjcsNyArNzUxOSw3IEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAotICBuZXRic2QqIHwgZnJlZWJzZCogfCBvcGVuYnNkKiB8IGRhcndpbiogfCBkcmFnb25mbHkqKQorICBiaXRyaWcqIHwgZGFyd2luKiB8IGRyYWdvbmZseSogfCBmcmVlYnNkKiB8IG5ldGJzZCogfCBvcGVuYnNkKikKICAgICAjIFRoaXMgaGFzIGJlZW4gYXJvdW5kIHNpbmNlIDM4NkJTRCwgYXQgbGVhc3QuICBMaWtlbHkgZnVydGhlci4KICAgICBpZiB0ZXN0IC14IC9zYmluL3N5c2N0bDsgdGhlbgogICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAvc2Jpbi9zeXNjdGwgLW4ga2Vybi5hcmdtYXhgCkBAIC03NDc4LDIyICs3NTcwLDIyIEBACiAgICopCiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAoZ2V0Y29uZiBBUkdfTUFYKSAyPiAvZGV2L251bGxgCiAgICAgaWYgdGVzdCAtbiAiJGx0X2N2X3N5c19tYXhfY21kX2xlbiIgJiYgXAotCXRlc3QgdW5kZWZpbmVkICE9ICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgorICAgICAgIHRlc3QgdW5kZWZpbmVkICE9ICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgogICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gNGAKICAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwqIDNgCiAgICAgZWxzZQogICAgICAgIyBNYWtlIHRlc3RzdHJpbmcgYSBsaXR0bGUgYmlnZ2VyIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyB3aXRoIGl0LgogICAgICAgIyBhIDFLIHN0cmluZyBzaG91bGQgYmUgYSByZWFzb25hYmxlIHN0YXJ0LgotICAgICAgZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4IDsgZG8KKyAgICAgIGZvciBpIGluIDEgMiAzIDQgNSA2IDcgODsgZG8KICAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCiAgICAgICBkb25lCiAgICAgICBTSEVMTD0ke1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fQogICAgICAgIyBJZiB0ZXN0IGlzIG5vdCBhIHNoZWxsIGJ1aWx0LWluLCB3ZSdsbCBwcm9iYWJseSBlbmQgdXAgY29tcHV0aW5nIGEKICAgICAgICMgbWF4aW11bSBsZW5ndGggdGhhdCBpcyBvbmx5IGhhbGYgb2YgdGhlIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCwgYnV0CiAgICAgICAjIHdlIGNhbid0IHRlbGwuCi0gICAgICB3aGlsZSB7IHRlc3QgIlgiYGVudiBlY2hvICIkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorICAgICAgd2hpbGUgeyB0ZXN0IFhgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCiAJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgotCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAorCSAgICAgIHRlc3QgMTcgIT0gIiRpIiAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCiAgICAgICBkbwogICAgICAgICBpPWBleHByICRpICsgMWAKICAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCkBAIC03NTExLDcgKzc2MDMsNyBAQAogCiBmaQogCi1pZiB0ZXN0IC1uICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gOyB0aGVuCitpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3N5c19tYXhfY21kX2xlbiIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X3N5c19tYXhfY21kX2xlbiIgPiY2OyB9CiBlbHNlCkBAIC03NTI5LDMwICs3NjIxLDYgQEAKIDogJHtNVj0ibXYgLWYifQogOiAke1JNPSJybSAtZiJ9CiAKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OyB9Ci0jIFRyeSBzb21lIFhTSSBmZWF0dXJlcwoteHNpX3NoZWxsPW5vCi0oIF9sdF9kdW1teT0iYS9iL2MiCi0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0gICAgICA9IGMsYS9iLGIvYywgXAotICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAmJiB4c2lfc2hlbGw9eWVzCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHhzaV9zaGVsbCIgPiY1Ci0kYXNfZWNobyAiJHhzaV9zaGVsbCIgPiY2OyB9Ci0KLQoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBcIis9XCIiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgXCIrPVwiLi4uICIgPiY2OyB9Ci1sdF9zaGVsbF9hcHBlbmQ9bm8KLSggZm9vPWJhcjsgc2V0IGZvbyBiYXo7IGV2YWwgIiQxKz1cJDIiICYmIHRlc3QgIiRmb28iID0gYmFyYmF6ICkgXAotICAgID4vZGV2L251bGwgMj4mMSBcCi0gICYmIGx0X3NoZWxsX2FwcGVuZD15ZXMKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfc2hlbGxfYXBwZW5kIiA+JjUKLSRhc19lY2hvICIkbHRfc2hlbGxfYXBwZW5kIiA+JjY7IH0KLQotCiBpZiAoIChNQUlMPTYwOyB1bnNldCBNQUlMKSB8fCBleGl0KSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KICAgbHRfdW5zZXQ9dW5zZXQKIGVsc2UKQEAgLTc2NzUsMTMgKzc3NDMsMTMgQEAKIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKIGNhc2UgJGhvc3Rfb3MgaW4KICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzICE9ICIkR0NDIjsgdGhlbgogICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKICAgICBmaQogICAgIDs7CiAgIGRhcndpbiopCi0gICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHdsLXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICAgICBlbHNlCiAgICAgICByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCiAgICAgZmkKQEAgLTc4MDYsMTMgKzc4NzQsMTMgQEAKICMgTmVlZCB0byBzZXQgdGhlIHByZWNlZGluZyB2YXJpYWJsZSBvbiBhbGwgcGxhdGZvcm1zIHRoYXQgc3VwcG9ydAogIyBpbnRlcmxpYnJhcnkgZGVwZW5kZW5jaWVzLgogIyAnbm9uZScgLS0gZGVwZW5kZW5jaWVzIG5vdCBzdXBwb3J0ZWQuCi0jIGB1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KKyMgJ3Vua25vd24nIC0tIHNhbWUgYXMgbm9uZSwgYnV0IGRvY3VtZW50cyB0aGF0IHdlIHJlYWxseSBkb24ndCBrbm93LgogIyAncGFzc19hbGwnIC0tIGFsbCBkZXBlbmRlbmNpZXMgcGFzc2VkIHdpdGggbm8gY2hlY2tzLgogIyAndGVzdF9jb21waWxlJyAtLSBjaGVjayBieSBtYWtpbmcgdGVzdCBwcm9ncmFtLgogIyAnZmlsZV9tYWdpYyBbW3JlZ2V4XV0nIC0tIGNoZWNrIGJ5IGxvb2tpbmcgZm9yIGZpbGVzIGluIGxpYnJhcnkgcGF0aAotIyB3aGljaCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KLSMgSWYgeW91IGhhdmUgYGZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQotIyB3aGV0aGVyIGBwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KKyMgdGhhdCByZXNwb25kcyB0byB0aGUgJGZpbGVfbWFnaWNfY21kIHdpdGggYSBnaXZlbiBleHRlbmRlZCByZWdleC4KKyMgSWYgeW91IGhhdmUgJ2ZpbGUnIG9yIGVxdWl2YWxlbnQgb24geW91ciBzeXN0ZW0gYW5kIHlvdSdyZSBub3Qgc3VyZQorIyB3aGV0aGVyICdwYXNzX2FsbCcgd2lsbCAqYWx3YXlzKiB3b3JrLCB5b3UgcHJvYmFibHkgd2FudCB0aGlzIG9uZS4KIAogY2FzZSAkaG9zdF9vcyBpbgogYWl4WzQtOV0qKQpAQCAtNzgzOSw4ICs3OTA3LDcgQEAKICAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQogICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKICAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgIyBmdW5jX3dpbjMyX2xpYmlkIGFzc3VtZXMgQlNEIG5tLCBzbyBkaXNhbGxvdyBpdCBpZiB1c2luZyBNUyBkdW1wYmluLgotICBpZiAoIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIkJTRCBubSIgJiYgZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGlmICggZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgZWxzZQpAQCAtNzkzNiw4ICs4MDAzLDggQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAotb3BlbmJzZCopCi0gIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KK29wZW5ic2QqIHwgYml0cmlnKikKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfFwuc298X3BpY1wuYSkkJwogICBlbHNlCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKQEAgLTc5OTAsNiArODA1Nyw5IEBACiB0cGYqKQogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7Oworb3MyKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKIGVzYWMKIAogZmkKQEAgLTgxNDQsOCArODIxNCw4IEBACiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2g7CisgICMgZGVjaWRlIHdoaWNoIG9uZSB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCiAgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgogICAqLS1pZGVudGlmeS1zdHJpY3QqKQogICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgpAQCAtODE1Nyw3ICs4MjI3LDcgQEAKICAgOzsKICopCiAgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCiAgIDs7CiBlc2FjCiAKQEAgLTgzMTIsNyArODM4Miw3IEBACiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKyAgICAgIGlmIHRlc3QgMCAtZXEgIiRhY19zdGF0dXMiOyB0aGVuCiAJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KIAlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKIAl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQpAQCAtODMyMCw3ICs4MzkwLDcgQEAKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0JaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKwlpZiB0ZXN0IDAgLW5lICIkYWNfc3RhdHVzIjsgdGhlbgogICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAogICAgICAgICBmaQogICAgICAgZmkKQEAgLTgzMzMsNyArODQwMyw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KIAotaWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgoraWYgdGVzdCBubyA9ICIkbHRfY3ZfYXJfYXRfZmlsZSI7IHRoZW4KICAgYXJjaGl2ZXJfbGlzdF9zcGVjPQogZWxzZQogICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKQEAgLTg1NTAsNyArODYyMCw3IEBACiAKIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCiAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgb3BlbmJzZCopCisgIGJpdHJpZyogfCBvcGVuYnNkKikKICAgICBvbGRfcG9zdGluc3RhbGxfY21kcz0iJG9sZF9wb3N0aW5zdGFsbF9jbWRzflwkUkFOTElCIC10IFwkdG9vbF9vbGRsaWIiCiAgICAgOzsKICAgKikKQEAgLTg2NDAsNyArODcxMCw3IEBACiAgIHN5bWNvZGU9J1tBQkNER0lTVFddJwogICA7OwogaHB1eCopCi0gIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAgICAgc3ltY29kZT0nW0FCQ0RFR1JTVF0nCiAgIGZpCiAgIDs7CkBAIC04NjczLDE0ICs4NzQzLDQ0IEBACiAgIHN5bWNvZGU9J1tBQkNER0lSU1RXXScgOzsKIGVzYWMKIAoraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKyAgIyBHZXRzIGxpc3Qgb2YgZGF0YSBzeW1ib2xzIHRvIGltcG9ydC4KKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9faW1wb3J0PSJzZWQgLW4gLWUgJ3MvXkkgLiogXCguKlwpJC9cMS9wJyIKKyAgIyBBZGp1c3QgdGhlIGJlbG93IGdsb2JhbCBzeW1ib2wgdHJhbnNmb3JtcyB0byBmaXh1cCBpbXBvcnRlZCB2YXJpYWJsZXMuCisgIGx0X2NkZWNsX2hvb2s9IiAtZSAncy9eSSAuKiBcKC4qXCkkL2V4dGVybiBfX2RlY2xzcGVjKGRsbGltcG9ydCkgY2hhciBcMTsvcCciCisgIGx0X2NfbmFtZV9ob29rPSIgLWUgJ3MvXkkgLiogXCguKlwpJC8gIHtcIlwxXCIsICh2b2lkICopIDB9LC9wJyIKKyAgbHRfY19uYW1lX2xpYl9ob29rPSJcCisgIC1lICdzL15JIC4qIFwobGliLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSAwfSwvcCdcCisgIC1lICdzL15JIC4qIFwoLipcKSQvICB7XCJsaWJcMVwiLCAodm9pZCAqKSAwfSwvcCciCitlbHNlCisgICMgRGlzYWJsZSBob29rcyBieSBkZWZhdWx0LgorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQ9CisgIGx0X2NkZWNsX2hvb2s9CisgIGx0X2NfbmFtZV9ob29rPQorICBsdF9jX25hbWVfbGliX2hvb2s9CitmaQorCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBhIHByb3BlciBDIGRlY2xhcmF0aW9uLgogIyBTb21lIHN5c3RlbXMgKGVzcC4gb24gaWE2NCkgbGluayBkYXRhIGFuZCBjb2RlIHN5bWJvbHMgZGlmZmVyZW50bHksCiAjIHNvIHVzZSB0aGlzIGdlbmVyYWwgYXBwcm9hY2guCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiJcCiskbHRfY2RlY2xfaG9va1wKKyIgLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgogCiAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4iXAorJGx0X2NfbmFtZV9ob29rXAorIiAtZSAncy9eOiBcKC4qXCkgLiokLyAge1wiXDFcIiwgKHZvaWQgKikgMH0sL3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSBcJlwxfSwvcCciCisKKyMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIHdpdGggbGliIHByZWZpeCBhbmQKKyMgc3ltYm9sIGFkZHJlc3MuCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4iXAorJGx0X2NfbmFtZV9saWJfaG9va1wKKyIgLWUgJ3MvXjogXCguKlwpIC4qJC8gIHtcIlwxXCIsICh2b2lkICopIDB9LC9wJyJcCisiIC1lICdzL14kc3ltY29kZSRzeW1jb2RlKiAuKiBcKGxpYi4qXCkkLyAge1wiXDFcIiwgKHZvaWQgKikgXCZcMX0sL3AnIlwKKyIgLWUgJ3MvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJsaWJcMVwiLCAodm9pZCAqKSBcJlwxfSwvcCciCiAKICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgogb3B0X2NyPQpAQCAtODY5OCwyMSArODc5OCwyNCBAQAogCiAgICMgV3JpdGUgdGhlIHJhdyBhbmQgQyBpZGVudGlmaWVycy4KICAgaWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSAgICAjIEZha2UgaXQgZm9yIGR1bXBiaW4gYW5kIHNheSBUIGZvciBhbnkgbm9uLXN0YXRpYyBmdW5jdGlvbgotICAgICMgYW5kIEQgZm9yIGFueSBnbG9iYWwgdmFyaWFibGUuCisgICAgIyBGYWtlIGl0IGZvciBkdW1wYmluIGFuZCBzYXkgVCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24sCisgICAgIyBEIGZvciBhbnkgZ2xvYmFsIHZhcmlhYmxlIGFuZCBJIGZvciBhbnkgaW1wb3J0ZWQgdmFyaWFibGUuCiAgICAgIyBBbHNvIGZpbmQgQysrIGFuZCBfX2Zhc3RjYWxsIHN5bWJvbHMgZnJvbSBNU1ZDKyssCiAgICAgIyB3aGljaCBzdGFydCB3aXRoIEAgb3IgPy4KICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkQVdLICciXAogIiAgICAge2xhc3Rfc2VjdGlvbj1zZWN0aW9uOyBzZWN0aW9uPVwkIDN9OyJcCiAiICAgICAvXkNPRkYgU1lNQk9MIFRBQkxFL3tmb3IoaSBpbiBoaWRlKSBkZWxldGUgaGlkZVtpXX07IlwKICIgICAgIC9TZWN0aW9uIGxlbmd0aCAuKiNyZWxvY3MuKihwaWNrIGFueSkve2hpZGVbbGFzdF9zZWN0aW9uXT0xfTsiXAorIiAgICAgL14gKlN5bWJvbCBuYW1lICo6IC97c3BsaXQoXCQgMCxzbixcIjpcIik7IHNpPXN1YnN0cihzblsyXSwyKX07IlwKKyIgICAgIC9eICpUeXBlICo6IGNvZGUve3ByaW50IFwiVFwiLHNpLHN1YnN0cihzaSxsZW5ndGgocHJmeCkpfTsiXAorIiAgICAgL14gKlR5cGUgKjogZGF0YS97cHJpbnQgXCJJXCIsc2ksc3Vic3RyKHNpLGxlbmd0aChwcmZ4KSl9OyJcCiAiICAgICBcJCAwIX4vRXh0ZXJuYWwgKlx8L3tuZXh0fTsiXAogIiAgICAgLyAwKyBVTkRFRiAve25leHR9OyAvIFVOREVGIFwoW158XVwpKigpL3tuZXh0fTsiXAogIiAgICAge2lmKGhpZGVbc2VjdGlvbl0pIG5leHR9OyJcCi0iICAgICB7Zj0wfTsgXCQgMH4vXChcKS4qXHwve2Y9MX07IHtwcmludGYgZiA/IFwiVCBcIiA6IFwiRCBcIn07IlwKLSIgICAgIHtzcGxpdChcJCAwLCBhLCAvXHx8XHIvKTsgc3BsaXQoYVsyXSwgcyl9OyJcCi0iICAgICBzWzFdfi9eW0A/XS97cHJpbnQgc1sxXSwgc1sxXTsgbmV4dH07IlwKLSIgICAgIHNbMV1+cHJmeCB7c3BsaXQoc1sxXSx0LFwiQFwiKTsgcHJpbnQgdFsxXSwgc3Vic3RyKHRbMV0sbGVuZ3RoKHByZngpKX0iXAorIiAgICAge2Y9XCJEXCJ9OyBcJCAwfi9cKFwpLipcfC97Zj1cIlRcIn07IlwKKyIgICAgIHtzcGxpdChcJCAwLGEsL1x8fFxyLyk7IHNwbGl0KGFbMl0scyl9OyJcCisiICAgICBzWzFdfi9eW0A/XS97cHJpbnQgZixzWzFdLHNbMV07IG5leHR9OyJcCisiICAgICBzWzFdfnByZngge3NwbGl0KHNbMV0sdCxcIkBcIik7IHByaW50IGYsdFsxXSxzdWJzdHIodFsxXSxsZW5ndGgocHJmeCkpfSJcCiAiICAgICAnIHByZng9XiRhY19zeW1wcmZ4IgogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKQEAgLTg3NjAsMTEgKzg4NjMsMTEgQEAKIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CiAvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fQ1lHV0lOX18gfHwgZGVmaW5lZCBfV0lOMzJfV0NFCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNhbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKICAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KICMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0jZWxpZiBkZWZpbmVkKF9fb3NmX18pCisjZWxpZiBkZWZpbmVkIF9fb3NmX18KIC8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwogIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKICNlbHNlCkBAIC04NzkwLDcgKzg4OTMsNyBAQAogewogICB7ICJAUFJPR1JBTUAiLCAodm9pZCAqKSAwIH0sCiBfTFRfRU9GCi0JICAkU0VEICJzL14kc3ltY29kZSRzeW1jb2RlKiBcKC4qXCkgXCguKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC8iIDwgIiRubGlzdCIgfCAkR1JFUCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQKKwkgICRTRUQgInMvXiRzeW1jb2RlJHN5bWNvZGUqIC4qIFwoLipcKSQvICB7XCJcMVwiLCAodm9pZCAqKSBcJlwxfSwvIiA8ICIkbmxpc3QiIHwgJEdSRVAgLXYgbWFpbiA+PiBjb25mdGVzdC4kYWNfZXh0CiAJICBjYXQgPDxcX0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CiAgIHswLCAodm9pZCAqKSAwfQogfTsKQEAgLTg4MTAsMTMgKzg5MTMsMTMgQEAKIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAogCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKIAkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKwkgIExJQlM9Y29uZnRzdG0uJGFjX29iamV4dAogCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgogCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCRhY19leGVleHQ7IHRoZW4KIAkgICAgcGlwZV93b3Jrcz15ZXMKIAkgIGZpCiAJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwpAQCAtODgzNyw3ICs4OTQwLDcgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KiBjb25mdHN0KgogCiAgICMgRG8gbm90IHVzZSB0aGUgZ2xvYmFsX3N5bWJvbF9waXBlIHVubGVzcyBpdCB3b3Jrcy4KLSAgaWYgdGVzdCAiJHBpcGVfd29ya3MiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRwaXBlX3dvcmtzIjsgdGhlbgogICAgIGJyZWFrCiAgIGVsc2UKICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPQpAQCAtODg5MCw2ICs4OTkzLDE2IEBACiAKIAogCisKKworCisKKworCisKKworCisKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KIApAQCAtODkwMiw5ICs5MDE1LDkgQEAKIAogCiBsdF9zeXNyb290PQotY2FzZSAke3dpdGhfc3lzcm9vdH0gaW4gIygKK2Nhc2UgJHdpdGhfc3lzcm9vdCBpbiAjKAogIHllcykKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAogICAgZmkKICAgIDs7ICMoCkBAIC04OTE0LDggKzkwMjcsOCBAQAogIG5vfCcnKQogICAgOzsgIygKICAqKQotICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9zeXNyb290fSIgPiY1Ci0kYXNfZWNobyAiJHt3aXRoX3N5c3Jvb3R9IiA+JjY7IH0KKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9zeXNyb290IiA+JjUKKyRhc19lY2hvICIkd2l0aF9zeXNyb290IiA+JjY7IH0KICAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQogICAgOzsKIGVzYWMKQEAgLTg5MjcsMTggKzkwNDAsOTkgQEAKIAogCiAKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGEgd29ya2luZyBkZCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgYSB3b3JraW5nIGRkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfbHRfREQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBwcmludGYgMDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYgPmNvbmZ0ZXN0LmkKK2NhdCBjb25mdGVzdC5pIGNvbmZ0ZXN0LmkgPmNvbmZ0ZXN0Mi5pCis6ICR7bHRfREQ6PSRERH0KK2lmIHRlc3QgLXogIiRsdF9ERCI7IHRoZW4KKyAgYWNfcGF0aF9sdF9ERF9mb3VuZD1mYWxzZQorICAjIExvb3AgdGhyb3VnaCB0aGUgdXNlcidzIHBhdGggYW5kIHRlc3QgZm9yIGVhY2ggb2YgUFJPR05BTUUtTElTVAorICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCitmb3IgYXNfZGlyIGluICRQQVRICitkbworICBJRlM9JGFzX3NhdmVfSUZTCisgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgZm9yIGFjX3Byb2cgaW4gZGQ7IGRvCisgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICBhY19wYXRoX2x0X0REPSIkYXNfZGlyLyRhY19wcm9nJGFjX2V4ZWNfZXh0IgorICAgICAgYXNfZm5fZXhlY3V0YWJsZV9wICIkYWNfcGF0aF9sdF9ERCIgfHwgY29udGludWUKK2lmICIkYWNfcGF0aF9sdF9ERCIgYnM9MzIgY291bnQ9MSA8Y29uZnRlc3QyLmkgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbDsgdGhlbgorICBjbXAgLXMgY29uZnRlc3QuaSBjb25mdGVzdC5vdXQgXAorICAmJiBhY19jdl9wYXRoX2x0X0REPSIkYWNfcGF0aF9sdF9ERCIgYWNfcGF0aF9sdF9ERF9mb3VuZD06CitmaQorICAgICAgJGFjX3BhdGhfbHRfRERfZm91bmQgJiYgYnJlYWsgMworICAgIGRvbmUKKyAgZG9uZQorICBkb25lCitJRlM9JGFzX3NhdmVfSUZTCisgIGlmIHRlc3QgLXogIiRhY19jdl9wYXRoX2x0X0REIjsgdGhlbgorICAgIDoKKyAgZmkKK2Vsc2UKKyAgYWNfY3ZfcGF0aF9sdF9ERD0kbHRfREQKK2ZpCisKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QyLmkgY29uZnRlc3Qub3V0CitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9wYXRoX2x0X0REIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfcGF0aF9sdF9ERCIgPiY2OyB9CisKKworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gdHJ1bmNhdGUgYmluYXJ5IHBpcGVzIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byB0cnVuY2F0ZSBiaW5hcnkgcGlwZXMuLi4gIiA+JjY7IH0KK2lmICR7bHRfY3ZfdHJ1bmNhdGVfYmluKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgcHJpbnRmIDAxMjM0NTY3ODlhYmNkZWYwMTIzNDU2Nzg5YWJjZGVmID5jb25mdGVzdC5pCitjYXQgY29uZnRlc3QuaSBjb25mdGVzdC5pID5jb25mdGVzdDIuaQorbHRfY3ZfdHJ1bmNhdGVfYmluPQoraWYgIiRhY19jdl9wYXRoX2x0X0REIiBicz0zMiBjb3VudD0xIDxjb25mdGVzdDIuaSA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsOyB0aGVuCisgIGNtcCAtcyBjb25mdGVzdC5pIGNvbmZ0ZXN0Lm91dCBcCisgICYmIGx0X2N2X3RydW5jYXRlX2Jpbj0iJGFjX2N2X3BhdGhfbHRfREQgYnM9NDA5NiBjb3VudD0xIgorZmkKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QyLmkgY29uZnRlc3Qub3V0Cit0ZXN0IC16ICIkbHRfY3ZfdHJ1bmNhdGVfYmluIiAmJiBsdF9jdl90cnVuY2F0ZV9iaW49IiRTRUQgLWUgNHEiCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90cnVuY2F0ZV9iaW4iID4mNQorJGFzX2VjaG8gIiRsdF9jdl90cnVuY2F0ZV9iaW4iID4mNjsgfQorCisKKworCisKKworCisjIENhbGN1bGF0ZSBjY19iYXNlbmFtZS4gIFNraXAga25vd24gY29tcGlsZXIgd3JhcHBlcnMgYW5kIGNyb3NzLXByZWZpeC4KK2Z1bmNfY2NfYmFzZW5hbWUgKCkKK3sKKyAgICBmb3IgY2NfdGVtcCBpbiAkKiIiOyBkbworICAgICAgY2FzZSAkY2NfdGVtcCBpbgorICAgICAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7CisgICAgICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7CisgICAgICAgIFwtKikgOzsKKyAgICAgICAgKikgYnJlYWs7OworICAgICAgZXNhYworICAgIGRvbmUKKyAgICBmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKK30KKwogIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpYnRvb2wtbG9jayB3YXMgZ2l2ZW4uCiBpZiB0ZXN0ICIke2VuYWJsZV9saWJ0b29sX2xvY2src2V0fSIgPSBzZXQ7IHRoZW4gOgogICBlbmFibGV2YWw9JGVuYWJsZV9saWJ0b29sX2xvY2s7CiBmaQogCi10ZXN0ICJ4JGVuYWJsZV9saWJ0b29sX2xvY2siICE9IHhubyAmJiBlbmFibGVfbGlidG9vbF9sb2NrPXllcwordGVzdCBubyA9ICIkZW5hYmxlX2xpYnRvb2xfbG9jayIgfHwgZW5hYmxlX2xpYnRvb2xfbG9jaz15ZXMKIAogIyBTb21lIGZsYWdzIG5lZWQgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgY29tcGlsZXIgb3IgbGlua2VyIGZvciBnb29kCiAjIGxpYnRvb2wgc3VwcG9ydC4KIGNhc2UgJGhvc3QgaW4KIGlhNjQtKi1ocHV4KikKLSAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICAjIEZpbmQgb3V0IHdoYXQgQUJJIGlzIGJlaW5nIHByb2R1Y2VkIGJ5IGFjX2NvbXBpbGUsIGFuZCBzZXQgbW9kZQorICAjIG9wdGlvbnMgYWNjb3JkaW5nbHkuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQogICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQpAQCAtODk0NywyNCArOTE0MSwyNSBAQAogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgogICAgICAgKkVMRi0zMiopCi0JSFBVWF9JQTY0X01PREU9IjMyIgorCUhQVVhfSUE2NF9NT0RFPTMyCiAJOzsKICAgICAgICpFTEYtNjQqKQotCUhQVVhfSUE2NF9NT0RFPSI2NCIKKwlIUFVYX0lBNjRfTU9ERT02NAogCTs7CiAgICAgZXNhYwogICBmaQogICBybSAtcmYgY29uZnRlc3QqCiAgIDs7CiAqLSotaXJpeDYqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgogICBlY2hvICcjbGluZSAnJExJTkVOTycgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2dudV9sZCI7IHRoZW4KICAgICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KIAkqMzItYml0KikKIAkgIExEPSIke0xELWxkfSAtbWVsZjMyYnNtaXAiCkBAIC04OTkzLDkgKzkxODgsNTAgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICA7OwogCittaXBzNjQqLSpsaW51eCopCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgorICBlY2hvICcjbGluZSAnJExJTkVOTycgImNvbmZpZ3VyZSInID4gY29uZnRlc3QuJGFjX2V4dAorICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKKyAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgICAgZW11bD1lbGYKKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqMzItYml0KikKKwllbXVsPSIke2VtdWx9MzIiCisJOzsKKyAgICAgICo2NC1iaXQqKQorCWVtdWw9IiR7ZW11bH02NCIKKwk7OworICAgIGVzYWMKKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqTVNCKikKKwllbXVsPSIke2VtdWx9YnRzbWlwIgorCTs7CisgICAgICAqTFNCKikKKwllbXVsPSIke2VtdWx9bHRzbWlwIgorCTs7CisgICAgZXNhYworICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAgICpOMzIqKQorCWVtdWw9IiR7ZW11bH1uMzIiCisJOzsKKyAgICBlc2FjCisgICAgTEQ9IiR7TEQtbGR9IC1tICRlbXVsIgorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisKIHg4Nl82NC0qa2ZyZWVic2QqLWdudXx4ODZfNjQtKmxpbnV4Knxwb3dlcnBjKi0qbGludXgqfCBcCiBzMzkwKi0qbGludXgqfHMzOTAqLSp0cGYqfHNwYXJjKi0qbGludXgqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LiAgTm90ZSB0aGF0IHRoZSBsaXN0ZWQgY2FzZXMgb25seSBjb3ZlciB0aGUKKyAgIyBzaXR1YXRpb25zIHdoZXJlIGFkZGl0aW9uYWwgbGlua2VyIG9wdGlvbnMgYXJlIG5lZWRlZCAoc3VjaCBhcyB3aGVuCisgICMgZG9pbmcgMzItYml0IGNvbXBpbGF0aW9uIGZvciBhIGhvc3Qgd2hlcmUgbGQgZGVmYXVsdHMgdG8gNjQtYml0LCBvcgorICAjIHZpY2UgdmVyc2EpOyB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIG5vIGxpbmtlciBvcHRpb25zIGFyZSBuZWVkZWQgZG8KKyAgIyBub3QgYXBwZWFyIGluIHRoZSBsaXN0LgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKQEAgLTkwMTgsMTAgKzkyNTQsMTAgQEAKIAkJOzsKIAkgICAgZXNhYwogCSAgICA7OwotCSAgcG93ZXJwYzY0bGUtKikKKwkgIHBvd2VycGM2NGxlLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMmxwcGNsaW51eCIKIAkgICAgOzsKLQkgIHBvd2VycGM2NC0qKQorCSAgcG93ZXJwYzY0LSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMnBwY2xpbnV4IgogCSAgICA7OwogCSAgczM5MHgtKmxpbnV4KikKQEAgLTkwNDAsMTAgKzkyNzYsMTAgQEAKIAkgIHg4Nl82NC0qbGludXgqKQogCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKIAkgICAgOzsKLQkgIHBvd2VycGNsZS0qKQorCSAgcG93ZXJwY2xlLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NGxwcGMiCiAJICAgIDs7Ci0JICBwb3dlcnBjLSopCisJICBwb3dlcnBjLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NHBwYyIKIAkgICAgOzsKIAkgIHMzOTAqLSpsaW51eCp8czM5MCotKnRwZiopCkBAIC05MDYxLDcgKzkyOTcsNyBAQAogCiAqLSotc2NvMy4ydjUqKQogICAjIE9uIFNDTyBPcGVuU2VydmVyIDUsIHdlIG5lZWQgLWJlbGYgdG8gZ2V0IGZ1bGwtZmVhdHVyZWQgYmluYXJpZXMuCi0gIFNBVkVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICBTQVZFX0NGTEFHUz0kQ0ZMQUdTCiAgIENGTEFHUz0iJENGTEFHUyAtYmVsZiIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSBDIGNvbXBpbGVyIG5lZWRzIC1iZWxmIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIEMgY29tcGlsZXIgbmVlZHMgLWJlbGYuLi4gIiA+JjY7IH0KQEAgLTkxMDEsMTMgKzkzMzcsMTQgQEAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2NjX25lZWRzX2JlbGYiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9jY19uZWVkc19iZWxmIiA+JjY7IH0KLSAgaWYgdGVzdCB4IiRsdF9jdl9jY19uZWVkc19iZWxmIiAhPSB4InllcyI7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgIT0gIiRsdF9jdl9jY19uZWVkc19iZWxmIjsgdGhlbgogICAgICMgdGhpcyBpcyBwcm9iYWJseSBnY2MgMi44LjAsIGVnY3MgMS4wIG9yIG5ld2VyOyBubyBuZWVkIGZvciAtYmVsZgotICAgIENGTEFHUz0iJFNBVkVfQ0ZMQUdTIgorICAgIENGTEFHUz0kU0FWRV9DRkxBR1MKICAgZmkKICAgOzsKICotKnNvbGFyaXMqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKQEAgLTkxMTksNyArOTM1Niw3IEBACiAgICAgICBjYXNlICRsdF9jdl9wcm9nX2dudV9sZCBpbgogICAgICAgeWVzKikKICAgICAgICAgY2FzZSAkaG9zdCBpbgotICAgICAgICBpPzg2LSotc29sYXJpcyopCisgICAgICAgIGk/ODYtKi1zb2xhcmlzKnx4ODZfNjQtKi1zb2xhcmlzKikKICAgICAgICAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKICAgICAgICAgICA7OwogICAgICAgICBzcGFyYyotKi1zb2xhcmlzKikKQEAgLTkxMjgsNyArOTM2NSw3IEBACiAgICAgICAgIGVzYWMKICAgICAgICAgIyBHTlUgbGQgMi4yMSBpbnRyb2R1Y2VkIF9zb2wyIGVtdWxhdGlvbnMuICBVc2UgdGhlbSBpZiBhdmFpbGFibGUuCiAgICAgICAgIGlmICR7TEQtbGR9IC1WIHwgZ3JlcCBfc29sMiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSAgICAgICAgICBMRD0iJHtMRC1sZH1fc29sMiIKKyAgICAgICAgICBMRD0ke0xELWxkfV9zb2wyCiAgICAgICAgIGZpCiAgICAgICAgIDs7CiAgICAgICAqKQpAQCAtOTE0NCw3ICs5MzgxLDcgQEAKICAgOzsKIGVzYWMKIAotbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCituZWVkX2xvY2tzPSRlbmFibGVfbGlidG9vbF9sb2NrCiAKIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KQEAgLTkyNTUsNyArOTQ5Miw3IEBACiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotaWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIjsgdGhlbgogICBNQU5JRkVTVF9UT09MPToKIGZpCiAKQEAgLTk3NTgsNyArOTk5NSw3IEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9bm8KLSAgICAgIGlmIHRlc3QgLXogIiR7TFRfTVVMVElfTU9EVUxFfSI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLXogIiRMVF9NVUxUSV9NT0RVTEUiOyB0aGVuCiAJIyBCeSBkZWZhdWx0IHdlIHdpbGwgYWRkIHRoZSAtc2luZ2xlX21vZHVsZSBmbGFnLiBZb3UgY2FuIG92ZXJyaWRlCiAJIyBieSBlaXRoZXIgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTFRfTVVMVElfTU9EVUxFCiAJIyBub24tZW1wdHkgYXQgY29uZmlndXJlIHRpbWUsIG9yIGJ5IGFkZGluZyAtbXVsdGlfbW9kdWxlIHRvIHRoZQpAQCAtOTc3Niw3ICsxMDAxMyw3IEBACiAJICBjYXQgY29uZnRlc3QuZXJyID4mNQogCSMgT3RoZXJ3aXNlLCBpZiB0aGUgb3V0cHV0IHdhcyBjcmVhdGVkIHdpdGggYSAwIGV4aXQgY29kZSBmcm9tCiAJIyB0aGUgY29tcGlsZXIsIGl0IHdvcmtlZC4KLQllbGlmIHRlc3QgLWYgbGliY29uZnRlc3QuZHlsaWIgJiYgdGVzdCAkX2x0X3Jlc3VsdCAtZXEgMDsgdGhlbgorCWVsaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0IDAgPSAiJF9sdF9yZXN1bHQiOyB0aGVuCiAJICBsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kPXllcwogCWVsc2UKIAkgIGNhdCBjb25mdGVzdC5lcnIgPiY1CkBAIC05ODE1LDcgKzEwMDUyLDcgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotCUxERkxBR1M9IiRzYXZlX0xERkxBR1MiCisJTERGTEFHUz0kc2F2ZV9MREZMQUdTCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCIgPiY1CkBAIC05ODQ0LDcgKzEwMDgxLDcgQEAKICAgICAgIF9sdF9yZXN1bHQ9JD8KICAgICAgIGlmIHRlc3QgLXMgY29uZnRlc3QuZXJyICYmICRHUkVQIGZvcmNlX2xvYWQgY29uZnRlc3QuZXJyOyB0aGVuCiAJY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKyAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0IDAgPSAiJF9sdF9yZXN1bHQiICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMTsgdGhlbgogCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCiAgICAgICBlbHNlCiAJY2F0IGNvbmZ0ZXN0LmVyciA+JjUKQEAgLTk4NTcsMzIgKzEwMDk0LDMyIEBACiAkYXNfZWNobyAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID4mNjsgfQogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICByaGFwc29keSogfCBkYXJ3aW4xLlswMTJdKQotICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OworICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR3bC11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKICAgICBkYXJ3aW4xLiopCi0gICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLWZsYXRfbmFtZXNwYWNlICR3bC11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKICAgICBkYXJ3aW4qKSAjIGRhcndpbiA1Lnggb24KICAgICAgICMgaWYgcnVubmluZyBvbiAxMC41IG9yIGxhdGVyLCB0aGUgZGVwbG95bWVudCB0YXJnZXQgZGVmYXVsdHMKICAgICAgICMgdG8gdGhlIE9TIHZlcnNpb24sIGlmIG9uIHg4NiwgYW5kIDEwLjQsIHRoZSBkZXBsb3ltZW50CiAgICAgICAjIHRhcmdldCBkZWZhdWx0cyB0byAxMC40LiBEb24ndCB5b3UgbG92ZSBpdD8KICAgICAgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0sJGhvc3QgaW4KIAkxMC4wLCo4NiotZGFyd2luOCp8MTAuMCwqLWRhcndpbls5MV0qKQotCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OwotCTEwLlswMTJdKikKLQkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS1mbGF0X25hbWVzcGFjZSAke3dsfS11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPSckd2wtdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7CisJMTAuWzAxMl1bLC5dKikKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPSckd2wtZmxhdF9uYW1lc3BhY2UgJHdsLXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OwogCTEwLiopCi0JICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7CisJICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OwogICAgICAgZXNhYwogICAgIDs7CiAgIGVzYWMKLSAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgPSAieWVzIjsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIjsgdGhlbgogICAgICAgX2x0X2Rhcl9zaW5nbGVfbW9kPSckc2luZ2xlX21vZHVsZScKICAgICBmaQotICAgIGlmIHRlc3QgIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiID0gInllcyI7IHRoZW4KLSAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9JyAke3dsfS1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bScKKyAgICBpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0IjsgdGhlbgorICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nICR3bC1leHBvcnRlZF9zeW1ib2xzX2xpc3QsJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUtc3ltYm9scy5leHBzeW0nCiAgICAgZWxzZQotICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nfiROTUVESVQgLXMgJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bSAke2xpYn0nCisgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8kbGlibmFtZS1zeW1ib2xzLmV4cHN5bSAkbGliJwogICAgIGZpCi0gICAgaWYgdGVzdCAiJERTWU1VVElMIiAhPSAiOiIgJiYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gIm5vIjsgdGhlbgorICAgIGlmIHRlc3QgOiAhPSAiJERTWU1VVElMIiAmJiB0ZXN0IG5vID0gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIjsgdGhlbgogICAgICAgX2x0X2RzeW11dGlsPSd+JERTWU1VVElMICRsaWIgfHwgOicKICAgICBlbHNlCiAgICAgICBfbHRfZHN5bXV0aWw9CkBAIC05ODkwLDYgKzEwMTI3LDQxIEBACiAgICAgOzsKICAgZXNhYwogCisjIGZ1bmNfbXVuZ2VfcGF0aF9saXN0IFZBUklBQkxFIFBBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVkFSSUFCTEUgaXMgbmFtZSBvZiB2YXJpYWJsZSBjb250YWluaW5nIF9zcGFjZV8gc2VwYXJhdGVkIGxpc3Qgb2YKKyMgZGlyZWN0b3JpZXMgdG8gYmUgbXVuZ2VkIGJ5IHRoZSBjb250ZW50cyBvZiBQQVRILCB3aGljaCBpcyBzdHJpbmcKKyMgaGF2aW5nIGEgZm9ybWF0OgorIyAiRElSWzpESVJdOiIKKyMgICAgICAgc3RyaW5nICJESVJbIERJUl0iIHdpbGwgYmUgcHJlcGVuZGVkIHRvIFZBUklBQkxFCisjICI6RElSWzpESVJdIgorIyAgICAgICBzdHJpbmcgIkRJUlsgRElSXSIgd2lsbCBiZSBhcHBlbmRlZCB0byBWQVJJQUJMRQorIyAiRElSUFs6RElSUF06OltESVJBOl1ESVJBIgorIyAgICAgICBzdHJpbmcgIkRJUlBbIERJUlBdIiB3aWxsIGJlIHByZXBlbmRlZCB0byBWQVJJQUJMRSBhbmQgc3RyaW5nCisjICAgICAgICJESVJBWyBESVJBXSIgd2lsbCBiZSBhcHBlbmRlZCB0byBWQVJJQUJMRQorIyAiRElSWzpESVJdIgorIyAgICAgICBWQVJJQUJMRSB3aWxsIGJlIHJlcGxhY2VkIGJ5ICJESVJbIERJUl0iCitmdW5jX211bmdlX3BhdGhfbGlzdCAoKQoreworICAgIGNhc2UgeCQyIGluCisgICAgeCkKKyAgICAgICAgOzsKKyAgICAqOikKKyAgICAgICAgZXZhbCAkMT1cImAkRUNITyAkMiB8ICRTRUQgJ3MvOi8gL2cnYCBcJCQxXCIKKyAgICAgICAgOzsKKyAgICB4OiopCisgICAgICAgIGV2YWwgJDE9XCJcJCQxIGAkRUNITyAkMiB8ICRTRUQgJ3MvOi8gL2cnYFwiCisgICAgICAgIDs7CisgICAgKjo6KikKKyAgICAgICAgZXZhbCAkMT1cIlwkJDFcIGAkRUNITyAkMiB8ICRTRUQgLWUgJ3MvLio6Oi8vJyAtZSAncy86LyAvZydgXCIKKyAgICAgICAgZXZhbCAkMT1cImAkRUNITyAkMiB8ICRTRUQgLWUgJ3MvOjouKi8vJyAtZSAncy86LyAvZydgXCBcJCQxXCIKKyAgICAgICAgOzsKKyAgICAqKQorICAgICAgICBldmFsICQxPVwiYCRFQ0hPICQyIHwgJFNFRCAncy86LyAvZydgXCIKKyAgICAgICAgOzsKKyAgICBlc2FjCit9CisKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtMTAxNzEsMTAgKzEwNDQzLDEwIEBACiBkb25lCiAKIAotICBHU1RfQ1VSUkVOVD02MDMKKyAgR1NUX0NVUlJFTlQ9NzkxCiAgIEdTVF9SRVZJU0lPTj0wCi0gIEdTVF9BR0U9NjAzCi0gIEdTVF9MSUJWRVJTSU9OPTYwMzowOjYwMworICBHU1RfQUdFPTc5MQorICBHU1RfTElCVkVSU0lPTj03OTE6MDo3OTEKIAogCiAKQEAgLTEwNTAzLDE0ICsxMDc3NSwxNCBAQAogICAgICopCiAgICAgIGVuYWJsZV9zdGF0aWM9bm8KICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCi0JSUZTPSIkbHRfc2F2ZV9pZnMiCisJSUZTPSRsdF9zYXZlX2lmcwogCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCiAJICBlbmFibGVfc3RhdGljPXllcwogCWZpCiAgICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIDs7CiAgICAgZXNhYwogZWxzZQpAQCAtMTA1MzcsMTQgKzEwODA5LDE0IEBACiAgICAgKikKICAgICAgIGVuYWJsZV9zaGFyZWQ9bm8KICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgcGtnIGluICRlbmFibGV2YWw7IGRvCi0JSUZTPSIkbHRfc2F2ZV9pZnMiCisJSUZTPSRsdF9zYXZlX2lmcwogCWlmIHRlc3QgIlgkcGtnIiA9ICJYJHAiOyB0aGVuCiAJICBlbmFibGVfc2hhcmVkPXllcwogCWZpCiAgICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIDs7CiAgICAgZXNhYwogZWxzZQpAQCAtMTA1NjksMTQgKzEwODQxLDE0IEBACiAgICAgKikKICAgICAgIHBpY19tb2RlPWRlZmF1bHQKICAgICAgICMgTG9vayBhdCB0aGUgYXJndW1lbnQgd2UgZ290LiAgV2UgdXNlIGFsbCB0aGUgY29tbW9uIGxpc3Qgc2VwYXJhdG9ycy4KLSAgICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSIke0lGU30kUEFUSF9TRVBBUkFUT1IsIgorICAgICAgbHRfc2F2ZV9pZnM9JElGUzsgSUZTPSRJRlMkUEFUSF9TRVBBUkFUT1IsCiAgICAgICBmb3IgbHRfcGtnIGluICR3aXRodmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgorCUlGUz0kbHRfc2F2ZV9pZnMKIAlpZiB0ZXN0ICJYJGx0X3BrZyIgPSAiWCRsdF9wIjsgdGhlbgogCSAgcGljX21vZGU9eWVzCiAJZmkKICAgICAgIGRvbmUKLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgICAgOzsKICAgICBlc2FjCiBlbHNlCkBAIC0xMDU4NCw4ICsxMDg1Niw2IEBACiBmaQogCiAKLXRlc3QgLXogIiRwaWNfbW9kZSIgJiYgcGljX21vZGU9ZGVmYXVsdAotCiAKIAogCkBAIC0xMDYwMSwxNCArMTA4NzEsMTQgQEAKICAgICAqKQogICAgICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubwogICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgotICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBsdF9zYXZlX2lmcz0kSUZTOyBJRlM9JElGUyRQQVRIX1NFUEFSQVRPUiwKICAgICAgIGZvciBwa2cgaW4gJGVuYWJsZXZhbDsgZG8KLQlJRlM9IiRsdF9zYXZlX2lmcyIKKwlJRlM9JGx0X3NhdmVfaWZzCiAJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KIAkgIGVuYWJsZV9mYXN0X2luc3RhbGw9eWVzCiAJZmkKICAgICAgIGRvbmUKLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgICAgOzsKICAgICBlc2FjCiBlbHNlCkBAIC0xMDYyMiwxMSArMTA4OTIsNjMgQEAKIAogCiAKKyAgc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWM9CitjYXNlICRob3N0LCRlbmFibGVfc2hhcmVkIGluCitwb3dlciotKi1haXhbNS05XSoseWVzKQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoaWNoIHZhcmlhbnQgb2Ygc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyB0byBwcm92aWRlIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIHdoaWNoIHZhcmlhbnQgb2Ygc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyB0byBwcm92aWRlLi4uICIgPiY2OyB9CisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtYWl4LXNvbmFtZSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfYWl4X3NvbmFtZStzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfYWl4X3NvbmFtZTsgY2FzZSAkd2l0aHZhbCBpbgorICAgIGFpeHxzdnI0fGJvdGgpCisgICAgICA7OworICAgICopCisgICAgICBhc19mbl9lcnJvciAkPyAiVW5rbm93biBhcmd1bWVudCB0byAtLXdpdGgtYWl4LXNvbmFtZSIgIiRMSU5FTk8iIDUKKyAgICAgIDs7CisgICAgZXNhYworICAgIGx0X2N2X3dpdGhfYWl4X3NvbmFtZT0kd2l0aF9haXhfc29uYW1lCitlbHNlCisgIGlmICR7bHRfY3Zfd2l0aF9haXhfc29uYW1lKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgbHRfY3Zfd2l0aF9haXhfc29uYW1lPWFpeAorZmkKKworICAgIHdpdGhfYWl4X3NvbmFtZT0kbHRfY3Zfd2l0aF9haXhfc29uYW1lCitmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkd2l0aF9haXhfc29uYW1lIiA+JjUKKyRhc19lY2hvICIkd2l0aF9haXhfc29uYW1lIiA+JjY7IH0KKyAgaWYgdGVzdCBhaXggIT0gIiR3aXRoX2FpeF9zb25hbWUiOyB0aGVuCisgICAgIyBGb3IgdGhlIEFJWCB3YXkgb2YgbXVsdGlsaWIsIHdlIG5hbWUgdGhlIHNoYXJlZCBhcmNoaXZlIG1lbWJlcgorICAgICMgYmFzZWQgb24gdGhlIGJpdHdpZHRoIHVzZWQsIHRyYWRpdGlvbmFsbHkgJ3Noci5vJyBvciAnc2hyXzY0Lm8nLAorICAgICMgYW5kICdzaHIuaW1wJyBvciAnc2hyXzY0LmltcCcsIHJlc3BlY3RpdmVseSwgZm9yIHRoZSBJbXBvcnQgRmlsZS4KKyAgICAjIEV2ZW4gd2hlbiBHTlUgY29tcGlsZXJzIGlnbm9yZSBPQkpFQ1RfTU9ERSBidXQgbmVlZCAnLW1haXg2NCcgZmxhZywKKyAgICAjIHRoZSBBSVggdG9vbGNoYWluIHdvcmtzIGJldHRlciB3aXRoIE9CSkVDVF9NT0RFIHNldCAoZGVmYXVsdCAzMikuCisgICAgaWYgdGVzdCA2NCA9ICIke09CSkVDVF9NT0RFLTMyfSI7IHRoZW4KKyAgICAgIHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPXNocl82NAorICAgIGVsc2UKKyAgICAgIHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPXNocgorICAgIGZpCisgIGZpCisgIDs7CisqKQorICB3aXRoX2FpeF9zb25hbWU9YWl4CisgIDs7Citlc2FjCisKKworCisKKworCisKIAogCiAKICMgVGhpcyBjYW4gYmUgdXNlZCB0byByZWJ1aWxkIGxpYnRvb2wgd2hlbiBuZWVkZWQKLUxJQlRPT0xfREVQUz0iJGx0bWFpbiIKK0xJQlRPT0xfREVQUz0kbHRtYWluCiAKICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCiBMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKQEAgLTEwNjc1LDcgKzEwOTk3LDcgQEAKIAogCiAKLWlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iOyB0aGVuCiAgICBzZXRvcHQgTk9fR0xPQl9TVUJTVAogZmkKIApAQCAtMTA3MTQsNyArMTEwMzYsNyBAQAogICAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKICAgIyByZWFzb24sIGlmIHdlIHNldCB0aGUgQ09MTEVDVF9OQU1FUyBlbnZpcm9ubWVudCB2YXJpYWJsZSwgdGhlIHByb2JsZW1zCiAgICMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KLSAgaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCisgIGlmIHRlc3Qgc2V0ICE9ICIke0NPTExFQ1RfTkFNRVMrc2V0fSI7IHRoZW4KICAgICBDT0xMRUNUX05BTUVTPQogICAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCiAgIGZpCkBAIC0xMDcyNSwxNCArMTEwNDcsMTQgQEAKIG9maWxlPWxpYnRvb2wKIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAKLSMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgJy5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCiAjIHdoaWNoIG5lZWRzICcubGliJykuCiBsaWJleHQ9YQogCi13aXRoX2dudV9sZD0iJGx0X2N2X3Byb2dfZ251X2xkIgord2l0aF9nbnVfbGQ9JGx0X2N2X3Byb2dfZ251X2xkCiAKLW9sZF9DQz0iJENDIgotb2xkX0NGTEFHUz0iJENGTEFHUyIKK29sZF9DQz0kQ0MKK29sZF9DRkxBR1M9JENGTEFHUwogCiAjIFNldCBzYW5lIGRlZmF1bHRzIGZvciB2YXJpb3VzIHZhcmlhYmxlcwogdGVzdCAteiAiJENDIiAmJiBDQz1jYwpAQCAtMTA3NDEsMTUgKzExMDYzLDggQEAKIHRlc3QgLXogIiRMRCIgJiYgTEQ9bGQKIHRlc3QgLXogIiRhY19vYmpleHQiICYmIGFjX29iamV4dD1vCiAKLWZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbwotICBjYXNlICRjY190ZW1wIGluCi0gICAgY29tcGlsZSB8ICpbXFwvXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1xcL11jY2FjaGUgKSA7OwotICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7Ci0gICAgXC0qKSA7OwotICAgICopIGJyZWFrOzsKLSAgZXNhYwotZG9uZQotY2NfYmFzZW5hbWU9YCRFQ0hPICIkY2NfdGVtcCIgfCAkU0VEICJzJS4qLyUlOyBzJV4kaG9zdF9hbGlhcy0lJSJgCitmdW5jX2NjX2Jhc2VuYW1lICRjb21waWxlcgorY2NfYmFzZW5hbWU9JGZ1bmNfY2NfYmFzZW5hbWVfcmVzdWx0CiAKIAogIyBPbmx5IHBlcmZvcm0gdGhlIGNoZWNrIGZvciBmaWxlLCBpZiB0aGUgY2hlY2sgbWV0aG9kIHJlcXVpcmVzIGl0CkBAIC0xMDc2NCwyMiArMTEwNzksMjIgQEAKIGVsc2UKICAgY2FzZSAkTUFHSUNfQ01EIGluCiBbXFwvKl0gfCAgPzpbXFwvXSopCi0gIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9JE1BR0lDX0NNRCAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICAgOzsKICopCi0gIGx0X3NhdmVfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIgotICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgbHRfc2F2ZV9NQUdJQ19DTUQ9JE1BR0lDX0NNRAorICBsdF9zYXZlX2lmcz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiAgIGFjX2R1bW15PSIvdXNyL2JpbiRQQVRIX1NFUEFSQVRPUiRQQVRIIgogICBmb3IgYWNfZGlyIGluICRhY19kdW1teTsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSAgICBpZiB0ZXN0IC1mICRhY19kaXIvJHthY190b29sX3ByZWZpeH1maWxlOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci8ke2FjX3Rvb2xfcHJlZml4fWZpbGUiCisgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8ke2FjX3Rvb2xfcHJlZml4fWZpbGUiOyB0aGVuCisgICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0kYWNfZGlyLyIke2FjX3Rvb2xfcHJlZml4fWZpbGUiCiAgICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190ZXN0X2ZpbGUiOyB0aGVuCiAJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KIAkiZmlsZV9tYWdpYyAiKikKIAkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiZmlsZV9tYWdpYyBcKC4qXCkiYAotCSAgTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiCisJICBNQUdJQ19DTUQ9JGx0X2N2X3BhdGhfTUFHSUNfQ01ECiAJICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcJGZpbGVfbWFnaWNfdGVzdF9maWxlIDI+IC9kZXYvbnVsbCB8CiAJICAgICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJICAgIDoKQEAgLTEwODAyLDEzICsxMTExNywxMyBAQAogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgotICBNQUdJQ19DTUQ9IiRsdF9zYXZlX01BR0lDX0NNRCIKKyAgSUZTPSRsdF9zYXZlX2lmcworICBNQUdJQ19DTUQ9JGx0X3NhdmVfTUFHSUNfQ01ECiAgIDs7CiBlc2FjCiBmaQogCi1NQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK01BR0lDX0NNRD0kbHRfY3ZfcGF0aF9NQUdJQ19DTUQKIGlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFHSUNfQ01EIiA+JjUKICRhc19lY2hvICIkTUFHSUNfQ01EIiA+JjY7IH0KQEAgLTEwODMwLDIyICsxMTE0NSwyMiBAQAogZWxzZQogICBjYXNlICRNQUdJQ19DTUQgaW4KIFtcXC8qXSB8ICA/OltcXC9dKikKLSAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICBsdF9jdl9wYXRoX01BR0lDX0NNRD0kTUFHSUNfQ01EICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogICA7OwogKikKLSAgbHRfc2F2ZV9NQUdJQ19DTUQ9IiRNQUdJQ19DTUQiCi0gIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICBsdF9zYXZlX01BR0lDX0NNRD0kTUFHSUNfQ01ECisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgYWNfZHVtbXk9Ii91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgiCiAgIGZvciBhY19kaXIgaW4gJGFjX2R1bW15OyBkbwotICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotICAgIGlmIHRlc3QgLWYgJGFjX2Rpci9maWxlOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci9maWxlIgorICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvZmlsZSI7IHRoZW4KKyAgICAgIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSRhY19kaXIvImZpbGUiCiAgICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190ZXN0X2ZpbGUiOyB0aGVuCiAJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KIAkiZmlsZV9tYWdpYyAiKikKIAkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiZmlsZV9tYWdpYyBcKC4qXCkiYAotCSAgTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiCisJICBNQUdJQ19DTUQ9JGx0X2N2X3BhdGhfTUFHSUNfQ01ECiAJICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcJGZpbGVfbWFnaWNfdGVzdF9maWxlIDI+IC9kZXYvbnVsbCB8CiAJICAgICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJICAgIDoKQEAgLTEwODY4LDEzICsxMTE4MywxMyBAQAogICAgICAgYnJlYWsKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgotICBNQUdJQ19DTUQ9IiRsdF9zYXZlX01BR0lDX0NNRCIKKyAgSUZTPSRsdF9zYXZlX2lmcworICBNQUdJQ19DTUQ9JGx0X3NhdmVfTUFHSUNfQ01ECiAgIDs7CiBlc2FjCiBmaQogCi1NQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK01BR0lDX0NNRD0kbHRfY3ZfcGF0aF9NQUdJQ19DTUQKIGlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFHSUNfQ01EIiA+JjUKICRhc19lY2hvICIkTUFHSUNfQ01EIiA+JjY7IH0KQEAgLTEwODk1LDcgKzExMjEwLDcgQEAKIAogIyBVc2UgQyBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBpbiB0aGUgbGlidG9vbCBzY3JpcHQKIAotbHRfc2F2ZV9DQz0iJENDIgorbHRfc2F2ZV9DQz0kQ0MKIGFjX2V4dD1jCiBhY19jcHA9JyRDUFAgJENQUEZMQUdTJwogYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwpAQCAtMTA5NTcsNyArMTEyNzIsNyBAQAogCiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0KIAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgIG52Y2MqKQogICAgIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPScgLVhjb21waWxlciAtZm5vLWJ1aWx0aW4nIDs7CkBAIC0xMDk3Myw3ICsxMTI4OCw3IEBACiAgIGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zPW5vCiAgICBhY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHQKICAgIGVjaG8gIiRsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAotICAgbHRfY29tcGlsZXJfZmxhZz0iLWZuby1ydHRpIC1mbm8tZXhjZXB0aW9ucyIKKyAgIGx0X2NvbXBpbGVyX2ZsYWc9Ii1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiICAjIyBleGNsdWRlIGZyb20gc2NfdXNlbGVzc19xdW90ZXNfaW5fYXNzaWdubWVudAogICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKICAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCiAgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCkBAIC0xMTAwMyw3ICsxMTMxOCw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9ydHRpX2V4Y2VwdGlvbnMiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfcnR0aV9leGNlcHRpb25zIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3J0dGlfZXhjZXB0aW9ucyI7IHRoZW4KICAgICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0iJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIC1mbm8tcnR0aSAtZm5vLWV4Y2VwdGlvbnMiCiBlbHNlCiAgICAgOgpAQCAtMTEwMjEsMTcgKzExMzM2LDE4IEBACiBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KIAogCi0gIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLXN0YXRpYycKIAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeCopCiAgICAgICAjIEFsbCBBSVggY29kZSBpcyBQSUMuCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgogCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgIGZpCisgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZQSUMnCiAgICAgICA7OwogCiAgICAgYW1pZ2FvcyopCkBAIC0xMTA0Miw4ICsxMTM1OCw4IEBACiAgICAgICAgIDs7CiAgICAgICBtNjhrKQogICAgICAgICAgICAgIyBGSVhNRTogd2UgbmVlZCBhdCBsZWFzdCA2ODAyMCBjb2RlIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dAotICAgICAgICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCi0gICAgICAgICAgICAjIGxpa2UgYC1tNjgwNDAnLgorICAgICAgICAgICAgIyBhZGRpbmcgdGhlICctbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCisgICAgICAgICAgICAjIGxpa2UgJy1tNjgwNDAnLgogICAgICAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKICAgICAgICAgOzsKICAgICAgIGVzYWMKQEAgLTExMDU5LDYgKzExMzc1LDExIEBACiAgICAgICAjIEFsdGhvdWdoIHRoZSBjeWd3aW4gZ2NjIGlnbm9yZXMgLWZQSUMsIHN0aWxsIG5lZWQgdGhpcyBmb3Igb2xkLXN0eWxlCiAgICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwogICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1ERExMX0VYUE9SVCcKKyAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIG9zMiopCisJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9JyR3bC1zdGF0aWMnCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAKICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQpAQCAtMTExMjksNyArMTE0NTAsNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBhaXgqKQogICAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCiAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwogICAgICAgZWxzZQpAQCAtMTExMzcsMTAgKzExNDU4LDI5IEBACiAgICAgICBmaQogICAgICAgOzsKIAorICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCisgICAgICAjIENvbW1vbiBzeW1ib2xzIG5vdCBhbGxvd2VkIGluIE1IX0RZTElCIGZpbGVzCisgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLWZuby1jb21tb24nCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgbmFnZm9yKikKKyAgICAgICAgIyBOQUcgRm9ydHJhbiBjb21waWxlcgorICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCisgICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJworICAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCisgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworCiAgICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKICAgICAgICMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKICAgICAgICMgYnVpbHQgZm9yIGluY2x1c2lvbiBpbiBhIGRsbCAoYW5kIHNob3VsZCBleHBvcnQgc3ltYm9scyBmb3IgZXhhbXBsZSkuCiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLURETExfRVhQT1JUJworICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgb3MyKikKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nJHdsLXN0YXRpYycKKwk7OworICAgICAgZXNhYwogICAgICAgOzsKIAogICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQpAQCAtMTExNTYsNyArMTE0OTYsNyBAQAogCTs7CiAgICAgICBlc2FjCiAgICAgICAjIElzIHRoZXJlIGEgYmV0dGVyIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIHRoYXQgd29ya3Mgd2l0aCB0aGUgYnVuZGxlZCBDQz8KLSAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKyAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSckd2wtYSAke3dsfWFyY2hpdmUnCiAgICAgICA7OwogCiAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKQEAgLTExMTY3LDcgKzExNTA3LDcgQEAKIAogICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSB8IGdudSopCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCisgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0LCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAgICAgICBlY2MqKQogCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCiAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwpAQCAtMTExOTIsNiArMTE1MzIsMTIgQEAKIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCiAJOzsKKyAgICAgIHRjYyopCisJIyBGYWJyaWNlIEJlbGxhcmQgZXQgYWwncyBUaW55IEMgQ29tcGlsZXIKKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworCWx0X3Byb2dfY29tcGlsZXJfcGljPSctZlBJQycKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLXN0YXRpYycKKwk7OwogICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAogCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCkBAIC0xMTI4OSw3ICsxMTYzNSw3IEBACiAgICAgICA7OwogCiAgICAgc3lzdjQqTVAqKQotICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogCWx0X3Byb2dfY29tcGlsZXJfcGljPSctS2NvbmZvcm1fcGljJwogCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKICAgICAgIGZpCkBAIC0xMTMxOCw3ICsxMTY2NCw3IEBACiAgIGZpCiAKIGNhc2UgJGhvc3Rfb3MgaW4KLSAgIyBGb3IgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBzdXBwb3J0IFBJQywgLURQSUMgaXMgbWVhbmluZ2xlc3M6CisgICMgRm9yIHBsYXRmb3JtcyB0aGF0IGRvIG5vdCBzdXBwb3J0IFBJQywgLURQSUMgaXMgbWVhbmluZ2xlc3M6CiAgICpkamdwcCopCiAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9CiAgICAgOzsKQEAgLTExMzUwLDcgKzExNjk2LDcgQEAKICAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3M9bm8KICAgIGFjX291dGZpbGU9Y29uZnRlc3QuJGFjX29iamV4dAogICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gICBsdF9jb21waWxlcl9mbGFnPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCisgICBsdF9jb21waWxlcl9mbGFnPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiICAjIyBleGNsdWRlIGZyb20gc2NfdXNlbGVzc19xdW90ZXNfaW5fYXNzaWdubWVudAogICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKICAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCiAgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCkBAIC0xMTM4MCw3ICsxMTcyNiw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3MiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3JrcyI7IHRoZW4KICAgICBjYXNlICRsdF9wcm9nX2NvbXBpbGVyX3BpYyBpbgogICAgICAiIiB8ICIgIiopIDs7CiAgICAgICopIGx0X3Byb2dfY29tcGlsZXJfcGljPSIgJGx0X3Byb2dfY29tcGlsZXJfcGljIiA7OwpAQCAtMTE0MTIsNyArMTE3NTgsNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrcz1ubwotICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgIHNhdmVfTERGTEFHUz0kTERGTEFHUwogICAgTERGTEFHUz0iJExERkxBR1MgJGx0X3RtcF9zdGF0aWNfZmxhZyIKICAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCkBAIC0xMTQzMSwxMyArMTE3NzcsMTMgQEAKICAgICAgZmkKICAgIGZpCiAgICAkUk0gLXIgY29uZnRlc3QqCi0gICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3MiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3JrcyI7IHRoZW4KICAgICA6CiBlbHNlCiAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CkBAIC0xMTU1Nyw4ICsxMTkwMyw4IEBACiAKIAogCi1oYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCi1pZiB0ZXN0ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iID0gbm8gJiYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0aGVuCitoYXJkX2xpbmtzPW5vdHRlc3RlZAoraWYgdGVzdCBubyA9ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iICYmIHRlc3Qgbm8gIT0gIiRuZWVkX2xvY2tzIjsgdGhlbgogICAjIGRvIG5vdCBvdmVyd3JpdGUgdGhlIHZhbHVlIG9mIG5lZWRfbG9ja3MgcHJvdmlkZWQgYnkgdGhlIHVzZXIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgd2UgY2FuIGxvY2sgd2l0aCBoYXJkIGxpbmtzLi4uICIgPiY2OyB9CkBAIC0xMTU3MCw5ICsxMTkxNiw5IEBACiAgIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPi9kZXYvbnVsbCAmJiBoYXJkX2xpbmtzPW5vCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGFyZF9saW5rcyIgPiY1CiAkYXNfZWNobyAiJGhhcmRfbGlua3MiID4mNjsgfQotICBpZiB0ZXN0ICIkaGFyZF9saW5rcyIgPSBubzsgdGhlbgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogXGAkQ0MnIGRvZXMgbm90IHN1cHBvcnQgXGAtYyAtbycsIHNvIFxgbWFrZSAtaicgbWF5IGJlIHVuc2FmZSIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBcYCRDQycgZG9lcyBub3Qgc3VwcG9ydCBcYC1jIC1vJywgc28gXGBtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjI7fQorICBpZiB0ZXN0IG5vID0gIiRoYXJkX2xpbmtzIjsgdGhlbgorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogJyRDQycgZG9lcyBub3Qgc3VwcG9ydCAnLWMgLW8nLCBzbyAnbWFrZSAtaicgbWF5IGJlIHVuc2FmZSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAnJENDJyBkb2VzIG5vdCBzdXBwb3J0ICctYyAtbycsIHNvICdtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjI7fQogICAgIG5lZWRfbG9ja3M9d2FybgogICBmaQogZWxzZQpAQCAtMTE2MTUsOSArMTE5NjEsOSBAQAogICAjIGluY2x1ZGVkIGluIHRoZSBzeW1ib2wgbGlzdAogICBpbmNsdWRlX2V4cHN5bXM9CiAgICMgZXhjbHVkZV9leHBzeW1zIGNhbiBiZSBhbiBleHRlbmRlZCByZWdleHAgb2Ygc3ltYm9scyB0byBleGNsdWRlCi0gICMgaXQgd2lsbCBiZSB3cmFwcGVkIGJ5IGAgKCcgYW5kIGApJCcsIHNvIG9uZSBtdXN0IG5vdCBtYXRjaCBiZWdpbm5pbmcgb3IKLSAgIyBlbmQgb2YgbGluZS4gIEV4YW1wbGU6IGBhfGJjfC4qZC4qJyB3aWxsIGV4Y2x1ZGUgdGhlIHN5bWJvbHMgYGEnIGFuZCBgYmMnLAotICAjIGFzIHdlbGwgYXMgYW55IHN5bWJvbCB0aGF0IGNvbnRhaW5zIGBkJy4KKyAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgJyAoJyBhbmQgJykkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgorICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogJ2F8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyAnYScgYW5kICdiYycsCisgICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgJ2QnLgogICBleGNsdWRlX2V4cHN5bXM9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKICAgIyBBbHRob3VnaCBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaXMgYSB2YWxpZCBzeW1ib2wgQyBuYW1lLCBtb3N0IGEub3V0CiAgICMgcGxhdGZvcm1zIChhYil1c2UgaXQgaW4gUElDIGNvZGUsIGJ1dCB0aGVpciBsaW5rZXJzIGdldCBjb25mdXNlZCBpZgpAQCAtMTE2MzIsNyArMTE5NzgsNyBAQAogICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwogICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgIT0gIiRHQ0MiOyB0aGVuCiAgICAgICB3aXRoX2dudV9sZD1ubwogICAgIGZpCiAgICAgOzsKQEAgLTExNjQwLDcgKzExOTg2LDcgQEAKICAgICAjIHdlIGp1c3QgaG9wZS9hc3N1bWUgdGhpcyBpcyBnY2MgYW5kIG5vdCBjODkgKD0gTVNWQysrKQogICAgIHdpdGhfZ251X2xkPXllcwogICAgIDs7Ci0gIG9wZW5ic2QqKQorICBvcGVuYnNkKiB8IGJpdHJpZyopCiAgICAgd2l0aF9nbnVfbGQ9bm8KICAgICA7OwogICBsaW51eCogfCBrKmJzZCotZ251IHwgZ251KikKQEAgLTExNjUzLDcgKzExOTk5LDcgQEAKICAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCiAgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgogICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXgqKQogCSMgVGhlIEFJWCBwb3J0IG9mIEdOVSBsZCBoYXMgYWx3YXlzIGFzcGlyZWQgdG8gY29tcGF0aWJpbGl0eQpAQCAtMTE2NzUsMjQgKzEyMDIxLDI0IEBACiAgICAgZXNhYwogICBmaQogCi0gIGlmIHRlc3QgIiRsdF91c2VfZ251X2xkX2ludGVyZmFjZSIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJGx0X3VzZV9nbnVfbGRfaW50ZXJmYWNlIjsgdGhlbgogICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5Ci0gICAgd2xhcmM9JyR7d2x9JworICAgIHdsYXJjPSckd2wnCiAKICAgICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQogICAgICMgYXJlIHJlc2V0IGxhdGVyIGlmIHNoYXJlZCBsaWJyYXJpZXMgYXJlIG5vdCBzdXBwb3J0ZWQuIFB1dHRpbmcgdGhlbQogICAgICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KICAgICBydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSAotICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGggJHdsJGxpYmRpcicKKyAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR3bC0tZXhwb3J0LWR5bmFtaWMnCiAgICAgIyBhbmNpZW50IEdOVSBsZCBkaWRuJ3Qgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUgZXQuIGFsLgogICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICduby13aG9sZS1hcmNoaXZlJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisgICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0kd2xhcmMnLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICckd2xhcmMnLS1uby13aG9sZS1hcmNoaXZlJwogICAgIGVsc2UKICAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPQogICAgIGZpCiAgICAgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPW5vCi0gICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgY2FzZSBgJExEIC12IHwgJFNFRCAtZSAncy8oXilcKylcc1wrLy8nIDI+JjFgIGluCiAgICAgICAqR05VXCBnb2xkKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OwogICAgICAgKlwgWzAxXS4qIHwgKlwgMi5bMC05XS4qIHwgKlwgMi4xMC4qKSA7OyAjIGNhdGNoIHZlcnNpb25zIDwgMi4xMQogICAgICAgKlwgMi4xMS45My4wLjJcICopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsgIyBSSDcuMyAuLi4KQEAgLTExNzA1LDcgKzEyMDUxLDcgQEAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgYWl4WzMtOV0qKQogICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgIT0gIiRob3N0X2NwdSI7IHRoZW4KIAlsZF9zaGxpYnM9bm8KIAljYXQgPDxfTFRfRU9GIDE+JjIKIApAQCAtMTE3MjQsNyArMTIwNzAsNyBAQAogICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KICAgICAgIHBvd2VycGMpCiAgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0Ci0gICAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPScnCiAgICAgICAgIDs7CiAgICAgICBtNjhrKQpAQCAtMTE3NDAsNyArMTIwODYsNyBAQAogCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAJIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYwogCSMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQlhcmNoaXZlX2NtZHM9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICBlbHNlCiAJbGRfc2hsaWJzPW5vCiAgICAgICBmaQpAQCAtMTE3NTAsNyArMTIwOTYsNyBAQAogICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSckd2wtLWV4cG9ydC1hbGwtc3ltYm9scycKICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCiAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0xMTc1OCw2MSArMTIxMDQsODkgQEAKICAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwogCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0JIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotCSMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQllbHNlCi0JICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JZml+Ci0JJENDIC1zaGFyZWQgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHdsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSwgdXNlIGl0IGFzCisJIyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kIEVYUE9SVFMuLi4KKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiAgIHRlc3QgREVGID0gImAkU0VEIC1uICAgICAtZSAnXCcncy9eWwkgXSovLydcJycgICAgIC1lICdcJycvXlwoOy4qXCkqJC9kJ1wnJyAgICAgLWUgJ1wnJ3MvXlwoRVhQT1JUU1x8TElCUkFSWVwpXChbCSBdLipcKSokL0RFRi9wJ1wnJyAgICAgLWUgcSAgICAgJGV4cG9ydF9zeW1ib2xzYCIgOyB0aGVuCisgICAgICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICBlbHNlCisgICAgICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgZml+CisgICAgICAgICRDQyAtc2hhcmVkICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR3bC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCiAgICAgICA7OwogCiAgICAgaGFpa3UqKQotICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAgICAgIDs7CiAKKyAgICBvczIqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICBzaHJleHRfY21kcz0uZGxsCisgICAgICBhcmNoaXZlX2NtZHM9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJZW14ZXhwICRsaWJvYmpzIHwgJFNFRCAvIl9ETExfSW5pdFRlcm0iL2QgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRDQyAtWmRsbCAtWmNydGRsbCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREFUQSBNVUxUSVBMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwlwcmVmaXhfY21kcz0iJFNFRCJ+CisJaWYgdGVzdCBFWFBPUlRTID0gImAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiOyB0aGVuCisJICBwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIDFkIjsKKwlmaX4KKwlwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIFwicy9eXCguKlwpJC9fXDEvZ1wiIn4KKwljYXQgJGV4cG9ydF9zeW1ib2xzIHwgJHByZWZpeF9jbWRzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIG9sZF9hcmNoaXZlX0Zyb21fbmV3X2NtZHM9J2VteGltcCAtbyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9X2RsbC5hICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisgICAgICA7OworCiAgICAgaW50ZXJpeFszLTldKikKICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1ycGF0aCwkbGliZGlyJworICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSckd2wtRScKICAgICAgICMgSGFjazogT24gSW50ZXJpeCAzLngsIHdlIGNhbm5vdCBjb21waWxlIFBJQyBiZWNhdXNlIG9mIGEgYnJva2VuIGdjYy4KICAgICAgICMgSW5zdGVhZCwgc2hhcmVkIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0IGFuIGltYWdlIGJhc2UgKDB4MTAwMDAwMDAgYnkKICAgICAgICMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKICAgICAgICMgY29uc3VtaW5nIGFuZCBmcmFnbWVudGluZyBwcm9jZXNzLiAgVG8gYXZvaWQgdGhpcywgd2UgcGljayBhIHJhbmRvbSwKICAgICAgICMgMjU2IEtpQi1hbGlnbmVkIGltYWdlIGJhc2UgYmV0d2VlbiAweDUwMDAwMDAwIGFuZCAweDZGRkMwMDAwIGF0IGxpbmsKICAgICAgICMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgotICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nc2VkICJzfF58X3wiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAkd2wtLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKICAgICAgIDs7CiAKICAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKICAgICAgIHRtcF9kaWV0PW5vCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9vcyIgPSBsaW51eC1kaWV0bGliYzsgdGhlbgorICAgICAgaWYgdGVzdCBsaW51eC1kaWV0bGliYyA9ICIkaG9zdF9vcyI7IHRoZW4KIAljYXNlICRjY19iYXNlbmFtZSBpbgogCSAgZGlldFwgKikgdG1wX2RpZXQ9eWVzOzsJIyBsaW51eC1kaWV0bGliYyB3aXRoIHN0YXRpYyBsaW5raW5nICghZGlldC1keW4pCiAJZXNhYwogICAgICAgZmkKICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRFR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsIFwKLQkgJiYgdGVzdCAiJHRtcF9kaWV0IiA9IG5vCisJICYmIHRlc3Qgbm8gPSAiJHRtcF9kaWV0IgogICAgICAgdGhlbgogCXRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCXRtcF9zaGFyZWRmbGFnPSctc2hhcmVkJwogCWNhc2UgJGNjX2Jhc2VuYW1lLCRob3N0X2NwdSBpbgogICAgICAgICBwZ2NjKikJCQkJIyBQb3J0bGFuZCBHcm91cCBDIGNvbXBpbGVyCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIHRtcF9hZGRmbGFnPScgJHBpY19mbGFnJwogCSAgOzsKIAlwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQogCQkJCQkjIFBvcnRsYW5kIEdyb3VwIGY3NyBhbmQgZjkwIGNvbXBpbGVycwotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR3bC0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKIAllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKIAkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKQEAgLTExODIzLDQyICsxMjE5Nyw0NyBAQAogCWxmOTUqKQkJCQkjIExhaGV5IEZvcnRyYW4gOC4xCiAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0KIAkgIHRtcF9zaGFyZWRmbGFnPSctLXNoYXJlZCcgOzsKKyAgICAgICAgbmFnZm9yKikgICAgICAgICAgICAgICAgICAgICAgICAjIE5BR0ZPUiA1LjMKKyAgICAgICAgICB0bXBfc2hhcmVkZmxhZz0nLVdsLC1zaGFyZWQnIDs7CiAJeGxbY0NdKiB8IGJneGxbY0NdKiB8IG1waXhsW2NDXSopICMgSUJNIFhMIEMgOC4wIG9uIFBQQyAoZGVhbCB3aXRoIHhsZiBiZWxvdykKIAkgIHRtcF9zaGFyZWRmbGFnPSctcW1rc2hyb2JqJwogCSAgdG1wX2FkZGZsYWc9IDs7CiAJbnZjYyopCSMgQ3VkYSBDb21waWxlciBEcml2ZXIgMi4yCi0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGNvbXBpbGVyX25lZWRzX29iamVjdD15ZXMKIAkgIDs7CiAJZXNhYwogCWNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgogCSpTdW5cIEMqKQkJCSMgU3VuIEMgNS45Ci0JICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSckd2wtLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICBjb21waWxlcl9uZWVkc19vYmplY3Q9eWVzCiAJICB0bXBfc2hhcmVkZmxhZz0nLUcnIDs7CiAJKlN1blwgRiopCQkJIyBTdW4gRm9ydHJhbiA4LjMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAllc2FjCi0JYXJjaGl2ZV9jbWRzPSckQ0MgJyIkdG1wX3NoYXJlZGZsYWciIiR0bXBfYWRkZmxhZyInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAKLSAgICAgICAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorICAgICAgICBpZiB0ZXN0IHllcyA9ICIkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIjsgdGhlbgogICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXZlcnNpb24tc2NyaXB0ICR7d2x9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgICAgICAgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgICAgICAgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtdmVyc2lvbi1zY3JpcHQgJHdsJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCiAgICAgICAgIGZpCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgorCXRjYyopCisJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9Jy1yZHluYW1pYycKKwkgIDs7CiAJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0JICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGggJHdsJGxpYmRpcicKIAkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLQkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgIGlmIHRlc3QgeWVzID0gIiRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciOyB0aGVuCiAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAgICAgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorICAgICAgICAgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwogCSAgZmkKIAkgIDs7CiAJZXNhYwpAQCAtMTE4NzIsOCArMTIyNTEsOCBAQAogCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKIAl3bGFyYz0KICAgICAgIGVsc2UKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIDs7CiAKQEAgLTExODkxLDggKzEyMjcwLDggQEAKIAogX0xUX0VPRgogICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCkBAIC0xMTkwNCw3ICsxMjI4Myw3IEBACiAJbGRfc2hsaWJzPW5vCiAJY2F0IDw8X0xUX0VPRiAxPiYyCiAKLSoqKiBXYXJuaW5nOiBSZWxlYXNlcyBvZiB0aGUgR05VIGxpbmtlciBwcmlvciB0byAyLjE2LjkxLjAuMyBjYW4gbm90CisqKiogV2FybmluZzogUmVsZWFzZXMgb2YgdGhlIEdOVSBsaW5rZXIgcHJpb3IgdG8gMi4xNi45MS4wLjMgY2Fubm90CiAqKiogcmVsaWFibHkgY3JlYXRlIHNoYXJlZCBsaWJyYXJpZXMgb24gU0NPIHN5c3RlbXMuICBUaGVyZWZvcmUsIGxpYnRvb2wKICoqKiBpcyBkaXNhYmxpbmcgc2hhcmVkIGxpYnJhcmllcyBzdXBwb3J0LiAgV2UgdXJnZSB5b3UgdG8gdXBncmFkZSBHTlUKICoqKiBiaW51dGlscyB0byByZWxlYXNlIDIuMTYuOTEuMC4zIG9yIG5ld2VyLiAgQW5vdGhlciBvcHRpb24gaXMgdG8gbW9kaWZ5CkBAIC0xMTkxOSw5ICsxMjI5OCw5IEBACiAJICAjIERUX1JVTlBBVEggdGFnIGZyb20gZXhlY3V0YWJsZXMgYW5kIGxpYnJhcmllcy4gIEJ1dCBkb2luZyBzbwogCSAgIyByZXF1aXJlcyB0aGF0IHlvdSBjb21waWxlIGV2ZXJ5dGhpbmcgdHdpY2UsIHdoaWNoIGlzIGEgcGFpbi4KIAkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotCSAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsLXJwYXRoICR3bCRsaWJkaXInCisJICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgZWxzZQogCSAgICBsZF9zaGxpYnM9bm8KIAkgIGZpCkBAIC0xMTkzOCwxNSArMTIzMTcsMTUgQEAKIAogICAgICopCiAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlsZF9zaGxpYnM9bm8KICAgICAgIGZpCiAgICAgICA7OwogICAgIGVzYWMKIAotICAgIGlmIHRlc3QgIiRsZF9zaGxpYnMiID0gbm87IHRoZW4KKyAgICBpZiB0ZXN0IG5vID0gIiRsZF9zaGxpYnMiOyB0aGVuCiAgICAgICBydW5wYXRoX3Zhcj0KICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CiAgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9CkBAIC0xMTk2Miw3ICsxMjM0MSw3IEBACiAgICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQogICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgogICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgLXogIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiICYmIHRlc3QgLXogIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyI7IHRoZW4KIAkjIE5laXRoZXIgZGlyZWN0IGhhcmRjb2Rpbmcgbm9yIHN0YXRpYyBsaW5raW5nIGlzIHN1cHBvcnRlZCB3aXRoIGEKIAkjIGJyb2tlbiBjb2xsZWN0Mi4KIAloYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKQEAgLTExOTcwLDM0ICsxMjM0OSw1NyBAQAogICAgICAgOzsKIAogICAgIGFpeFs0LTldKikKLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKIAkjIGhhdmUgdG8gZG8gYW55dGhpbmcgc3BlY2lhbC4KIAlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAJZXhwX3N5bV9mbGFnPSctQmV4cG9ydCcKLQlub19lbnRyeV9mbGFnPSIiCisJbm9fZW50cnlfZmxhZz0KICAgICAgIGVsc2UKIAkjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLQkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0JIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsCi0JIyBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgorCSMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gR05VIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgdG8gQUlYIG5tLgorCSMgV2l0aG91dCB0aGUgIi1sIiBvcHRpb24sIG9yIHdpdGggdGhlICItQiIgb3B0aW9uLCBBSVggbm0gdHJlYXRzCisJIyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMKKwkjIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KKwkjIFdoaWxlIHRoZSAnd2Vhaycga2V5d29yZCBpcyBpZ25vcmVkIGluIHRoZSBFeHBvcnQgRmlsZSwgd2UgbmVlZAorCSMgaXQgaW4gdGhlIEltcG9ydCBGaWxlIGZvciB0aGUgJ2FpeC1zb25hbWUnIGZlYXR1cmUsIHNvIHdlIGhhdmUKKwkjIHRvIHJlcGxhY2UgdGhlICItQiIgb3B0aW9uIHdpdGggIi1QIiBmb3IgQUlYIG5tLgogCWlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLQkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKwkgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgaWYgKFwkIDIgPT0gIlciKSB7IHByaW50IFwkIDMgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAzIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZWxzZQotCSAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NIC1CQ3BnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpKSAmJiAoc3Vic3RyKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBleHBvcnRfc3ltYm9sc19jbWRzPSdgZnVuY19lY2hvX2FsbCAkTk0gfCAkU0VEIC1lICdcJydzL0JcKFteQl0qXCkkL1BcMS8nXCcnYCAtUENwZ2wgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpICYmIChzdWJzdHIoXCQgMSwxLDEpICE9ICIuIikpIHsgaWYgKChcJCAyID09ICJXIikgfHwgKFwkIDIgPT0gIlYiKSB8fCAoXCQgMiA9PSAiWiIpKSB7IHByaW50IFwkIDEgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAxIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZmkKIAlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAKIAkjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKIAkjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLQkjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorCSMgaGF2ZSBydW50aW1lIGxpbmtpbmcgZW5hYmxlZCwgYW5kIHVzZSBpdCBmb3IgZXhlY3V0YWJsZXMuCisJIyBGb3Igc2hhcmVkIGxpYnJhcmllcywgd2UgZW5hYmxlL2Rpc2FibGUgcnVudGltZSBsaW5raW5nCisJIyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGNyZWF0ZWQgLQorCSMgd2hlbiAid2l0aF9haXhfc29uYW1lLGFpeF91c2VfcnVudGltZWxpbmtpbmciIGlzOgorCSMgImFpeCxubyIgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8sICBmb3IgZXhlY3V0YWJsZXMKKwkjICJhaXgseWVzIiAgbGliLnNvICAgICAgICAgIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisJIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQorCSMgImJvdGgsbm8iICBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzCisJIyAgICAgICAgICAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworCSMgImJvdGgseWVzIiBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKwkjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vCisJIyAic3ZyNCwqIiAgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworCSMgICAgICAgICAgICBsaWIuYSAgICAgICAgICAgc3RhdGljIGFyY2hpdmUKIAljYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCiAJICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLQkgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCisJICBpZiAodGVzdCB4LWJydGwgPSAieCRsZF9mbGFnIiB8fCB0ZXN0IHgtV2wsLWJydGwgPSAieCRsZF9mbGFnIik7IHRoZW4KIAkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKIAkgICAgYnJlYWsKIAkgIGZpCiAJICBkb25lCisJICBpZiB0ZXN0IHN2cjQsbm8gPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgIyBXaXRoIGFpeC1zb25hbWU9c3ZyNCwgd2UgY3JlYXRlIHRoZSBsaWIuc28uViBzaGFyZWQgYXJjaGl2ZXMgb25seSwKKwkgICAgIyBzbyB3ZSBkb24ndCBoYXZlIGxpYi5hIHNoYXJlZCBsaWJzIHRvIGxpbmsgb3VyIGV4ZWN1dGFibGVzLgorCSAgICAjIFdlIGhhdmUgdG8gZm9yY2UgcnVudGltZSBsaW5raW5nIGluIHRoaXMgY2FzZS4KKwkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKwkgICAgTERGTEFHUz0iJExERkxBR1MgLVdsLC1icnRsIgorCSAgZmkKIAkgIDs7CiAJZXNhYwogCkBAIC0xMjAxNiwxMyArMTI0MTgsMjEgQEAKICAgICAgIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT15ZXMKICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCiAgICAgICBsaW5rX2FsbF9kZXBsaWJzPXllcwotICAgICAgZmlsZV9saXN0X3NwZWM9JyR7d2x9LWYsJworICAgICAgZmlsZV9saXN0X3NwZWM9JyR3bC1mLCcKKyAgICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICAgYWl4LCopIDs7ICMgdHJhZGl0aW9uYWwsIG5vIGltcG9ydCBmaWxlCisgICAgICBzdnI0LCogfCAqLHllcykgIyB1c2UgaW1wb3J0IGZpbGUKKwkjIFRoZSBJbXBvcnQgRmlsZSBkZWZpbmVzIHdoYXQgdG8gaGFyZGNvZGUuCisJaGFyZGNvZGVfZGlyZWN0PW5vCisJaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPW5vCisJOzsKKyAgICAgIGVzYWMKIAotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAJY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKIAkjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKIAkjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKLQkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGNvbGxlY3QybmFtZT1gJENDIC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCiAJICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJgogCSAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgJEdSRVAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCiAJICB0aGVuCkBAIC0xMjA0MSwzNiArMTI0NTEsNDIgQEAKIAkgIDs7CiAJZXNhYwogCXNoYXJlZF9mbGFnPSctc2hhcmVkJwotCWlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJaWYgdGVzdCB5ZXMgPSAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCisJICBzaGFyZWRfZmxhZz0iJHNoYXJlZF9mbGFnICInJHdsLUcnCiAJZmkKLQlsaW5rX2FsbF9kZXBsaWJzPW5vCisJIyBOZWVkIHRvIGVuc3VyZSBydW50aW1lIGxpbmtpbmcgaXMgZGlzYWJsZWQgZm9yIHRoZSB0cmFkaXRpb25hbAorCSMgc2hhcmVkIGxpYnJhcnksIG9yIHRoZSBsaW5rZXIgbWF5IGV2ZW50dWFsbHkgZmluZCBzaGFyZWQgbGlicmFyaWVzCisJIyAvd2l0aC8gSW1wb3J0IEZpbGUgLSB3ZSBkbyBub3Qgd2FudCB0byBtaXggdGhlbS4KKwlzaGFyZWRfZmxhZ19haXg9Jy1zaGFyZWQnCisJc2hhcmVkX2ZsYWdfc3ZyND0nLXNoYXJlZCAkd2wtRycKICAgICAgIGVsc2UKIAkjIG5vdCB1c2luZyBnY2MKLQlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCWlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJIyBWaXN1YWxBZ2UgQysrLCBWZXJzaW9uIDUuNSBmb3IgQUlYIDVMIGZvciBJQS02NCwgQmV0YSAzIFJlbGVhc2UKIAkjIGNob2tlcyBvbiAtV2wsLUcuIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBjb3JyZWN0OgogCSAgc2hhcmVkX2ZsYWc9Jy1HJwogCWVsc2UKLQkgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgICBzaGFyZWRfZmxhZz0nJHt3bH0tRycKKwkgIGlmIHRlc3QgeWVzID0gIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIjsgdGhlbgorCSAgICBzaGFyZWRfZmxhZz0nJHdsLUcnCiAJICBlbHNlCi0JICAgIHNoYXJlZF9mbGFnPScke3dsfS1iTTpTUkUnCisJICAgIHNoYXJlZF9mbGFnPSckd2wtYk06U1JFJwogCSAgZmkKKwkgIHNoYXJlZF9mbGFnX2FpeD0nJHdsLWJNOlNSRScKKwkgIHNoYXJlZF9mbGFnX3N2cjQ9JyR3bC1HJwogCWZpCiAgICAgICBmaQogCi0gICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR7d2x9LWJleHBhbGwnCisgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWM9JyR3bC1iZXhwYWxsJwogICAgICAgIyBJdCBzZWVtcyB0aGF0IC1iZXhwYWxsIGRvZXMgbm90IGV4cG9ydCBzeW1ib2xzIGJlZ2lubmluZyB3aXRoCiAgICAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8gZXhwb3J0LgogICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisgICAgICBpZiB0ZXN0IGFpeCx5ZXMgPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KIAkjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW50aW1lIGxvYWRpbmcgZmxhZ3MgKC1icnRsKSwKIAkjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCiAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLSAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorICAgICAgICBpZiB0ZXN0IHNldCA9ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iOyB0aGVuCiAgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogZWxzZQogICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CkBAIC0xMjEwNSw3ICsxMjUyMSw3IEBACiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAogICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKyAgICBsdF9jdl9haXhfbGlicGF0aF89L3Vzci9saWI6L2xpYgogICBmaQogCiBmaQpAQCAtMTIxMTMsMTcgKzEyNTI5LDE3IEBACiAgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KIGZpCiAKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsLWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR3bCckbm9fZW50cnlfZmxhZycgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0IC1uICIkYWxsb3dfdW5kZWZpbmVkX2ZsYWciOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR3bCRhbGxvd191bmRlZmluZWRfZmxhZyI7IGVsc2UgOjsgZmlgICR3bCckZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMnICckc2hhcmVkX2ZsYWcKICAgICAgIGVsc2UKLQlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCisJaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIteiBub2RlZnMiCi0JICBhcmNoaXZlX2V4cHN5bV9jbWRzPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyAke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgorCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR3bCRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR3bCRhbGxvd191bmRlZmluZWRfZmxhZyAnIlwkd2wkZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCiAJZWxzZQogCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisJIGlmIHRlc3Qgc2V0ID0gIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSI7IHRoZW4KICAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCiBlbHNlCiAgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTEyMTU4LDcgKzEyNTc0LDcgQEAKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0gICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorICAgIGx0X2N2X2FpeF9saWJwYXRoXz0vdXNyL2xpYjovbGliCiAgIGZpCiAKIGZpCkBAIC0xMjE2NiwyMSArMTI1ODIsMzMgQEAKICAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwogZmkKIAotCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCiAJICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JICBub191bmRlZmluZWRfZmxhZz0nICR7d2x9LWJlcm5vdG9rJwotCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1iZXJvaycKLQkgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgIG5vX3VuZGVmaW5lZF9mbGFnPScgJHdsLWJlcm5vdG9rJworCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAkd2wtYmVyb2snCisJICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCi0JICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICBlbHNlCiAJICAgICMgRXhwb3J0ZWQgc3ltYm9scyBjYW4gYmUgcHVsbGVkIGludG8gc2hhcmVkIG9iamVjdHMgZnJvbSBhcmNoaXZlcwogCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nJGNvbnZlbmllbmNlJwogCSAgZmkKIAkgIGFyY2hpdmVfY21kc19uZWVkX2xjPXllcwotCSAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkIGxpYnJhcmllcy4KLQkgIGFyY2hpdmVfZXhwc3ltX2NtZHM9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAke3dsfS1ibm9lbnRyeSAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tYkU6JGV4cG9ydF9zeW1ib2xzJHthbGxvd191bmRlZmluZWRfZmxhZ31+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kbGlibmFtZSRyZWxlYXNlLmEgJG91dHB1dF9vYmpkaXIvJHNvbmFtZScKKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRSTSAtciAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZH4kTUtESVIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQnCisJICAjIC1icnRsIGFmZmVjdHMgbXVsdGlwbGUgbGlua2VyIHNldHRpbmdzLCAtYmVyb2sgZG9lcyBub3QgYW5kIGlzIG92ZXJyaWRkZW4gbGF0ZXIKKwkgIGNvbXBpbGVyX2ZsYWdzX2ZpbHRlcmVkPSdgZnVuY19lY2hvX2FsbCAiJGNvbXBpbGVyX2ZsYWdzICIgfCAkU0VEIC1lICJzJS1icnRsXFwoWywgXVxcKSUtYmVyb2tcXDElZyJgJworCSAgaWYgdGVzdCBzdnI0ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorCSAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQgbGlicmFyaWVzLgorCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSIkYXJjaGl2ZV9leHBzeW1fY21kcyInfiRDQyAnJHNoYXJlZF9mbGFnX2FpeCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUnCisJICBmaQorCSAgaWYgdGVzdCBhaXggIT0gIiR3aXRoX2FpeF9zb25hbWUiOyB0aGVuCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9IiRhcmNoaXZlX2V4cHN5bV9jbWRzIid+JENDICckc2hhcmVkX2ZsYWdfc3ZyNCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8gJGxpYm9ianMgJGRlcGxpYnMgJHdsLWJub2VudHJ5ICckY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQnJHdsLWJFOiRleHBvcnRfc3ltYm9scyRhbGxvd191bmRlZmluZWRfZmxhZ34kU1RSSVAgLWUgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm9+KCBmdW5jX2VjaG9fYWxsICIjISAkc29uYW1lKCRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vKSI7IGlmIHRlc3Qgc2hyXzY0ID0gIiRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYyI7IHRoZW4gZnVuY19lY2hvX2FsbCAiIyA2NCI7IGVsc2UgZnVuY19lY2hvX2FsbCAiIyAzMiI7IGZpOyBjYXQgJGV4cG9ydF9zeW1ib2xzICkgPiAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMuaW1wfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMuaW1wJworCSAgZWxzZQorCSAgICAjIHVzZWQgYnkgLWRscHJlb3BlbiB0byBnZXQgdGhlIHN5bWJvbHMKKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0iJGFyY2hpdmVfZXhwc3ltX2NtZHMiJ34kTVYgICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUgJG91dHB1dF9vYmpkaXInCisJICBmaQorCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0iJGFyY2hpdmVfZXhwc3ltX2NtZHMiJ34kUk0gLXIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQnCiAJZmkKICAgICAgIGZpCiAgICAgICA7OwpAQCAtMTIxODksNyArMTI2MTcsNyBAQAogICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KICAgICAgIHBvd2VycGMpCiAgICAgICAgICAgICAjIHNlZSBjb21tZW50IGFib3V0IEFtaWdhT1M0IC5zbyBzdXBwb3J0Ci0gICAgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPScnCiAgICAgICAgIDs7CiAgICAgICBtNjhrKQpAQCAtMTIyMTksMTYgKzEyNjQ3LDE3IEBACiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KIAlsaWJleHQ9bGliCiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0Jc2hyZXh0X2NtZHM9Ii5kbGwiCisJc2hyZXh0X2NtZHM9LmRsbAogCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0JICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0JICBlbHNlCi0JICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0JICBmaX4KLQkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLQkgIGxpbmtuYW1lcz0nCisJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifmxpbmtuYW1lcz0nCisJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgICB0ZXN0IERFRiA9ICJgJFNFRCAtbiAgICAgLWUgJ1wnJ3MvXlsJIF0qLy8nXCcnICAgICAtZSAnXCcnL15cKDsuKlwpKiQvZCdcJycgICAgIC1lICdcJydzL15cKEVYUE9SVFNcfExJQlJBUllcKVwoWwkgXS4qXCkqJC9ERUYvcCdcJycgICAgIC1lIHEgICAgICRleHBvcnRfc3ltYm9sc2AiIDsgdGhlbgorICAgICAgICAgICAgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmIjsKKyAgICAgICAgICAgIGVjaG8gIiR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmRlZiIgPiAiJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHAiOworICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICRTRUQgLWUgJ1wnJ3MvXi8tbGluayAtRVhQT1JUOi8nXCcnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisgICAgICAgICAgZml+CisgICAgICAgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorICAgICAgICAgIGxpbmtuYW1lcz0nCiAJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgogCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwogCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCkBAIC0xMjIzNywxOCArMTI2NjYsMTggQEAKIAkjIERvbid0IHVzZSByYW5saWIKIAlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCiAJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLQkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLQkgICAgKi5leGV8Ki5FWEUpIDs7Ci0JICAgICopCi0JICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0JICAgICAgOzsKLQkgIGVzYWN+Ci0JICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLQkgIGZpJworICAgICAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisgICAgICAgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorICAgICAgICAgICAgKi5leGV8Ki5FWEUpIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICBsdF9vdXRwdXRmaWxlPSRsdF9vdXRwdXRmaWxlLmV4ZQorICAgICAgICAgICAgICBsdF90b29sX291dHB1dGZpbGU9JGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUKKyAgICAgICAgICAgICAgOzsKKyAgICAgICAgICBlc2FjfgorICAgICAgICAgIGlmIHRlc3QgOiAhPSAiJE1BTklGRVNUX1RPT0wiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorICAgICAgICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKyAgICAgICAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworICAgICAgICAgIGZpJwogCTs7CiAgICAgICAqKQogCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgpAQCAtMTIyNTcsNyArMTI2ODYsNyBAQAogCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCiAJbGliZXh0PWxpYgogCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotCXNocmV4dF9jbWRzPSIuZGxsIgorCXNocmV4dF9jbWRzPS5kbGwKIAkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCiAJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKIAkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgpAQCAtMTIyNzYsMjQgKzEyNzA1LDI0IEBACiAgIGhhcmRjb2RlX2RpcmVjdD1ubwogICBoYXJkY29kZV9hdXRvbWF0aWM9eWVzCiAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9dW5zdXBwb3J0ZWQKLSAgaWYgdGVzdCAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiID0gInllcyI7IHRoZW4KLSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIjsgdGhlbgorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSdgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UgJHdsLWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCiAKICAgZWxzZQogICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScnCiAgIGZpCiAgIGxpbmtfYWxsX2RlcGxpYnM9eWVzCi0gIGFsbG93X3VuZGVmaW5lZF9mbGFnPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCisgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSRfbHRfZGFyX2FsbG93X3VuZGVmaW5lZAogICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICBpZm9ydCopIF9sdF9kYXJfY2FuX3NoYXJlZD15ZXMgOzsKKyAgICAgaWZvcnQqfG5hZ2ZvciopIF9sdF9kYXJfY2FuX3NoYXJlZD15ZXMgOzsKICAgICAgKikgX2x0X2Rhcl9jYW5fc2hhcmVkPSRHQ0MgOzsKICAgZXNhYwotICBpZiB0ZXN0ICIkX2x0X2Rhcl9jYW5fc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRfbHRfZGFyX2Nhbl9zaGFyZWQiOyB0aGVuCiAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAotICAgIGFyY2hpdmVfY21kcz0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKLSAgICBtb2R1bGVfY21kcz0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgotICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJHtfbHRfZGFyX3NpbmdsZV9tb2R9JHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICBtb2R1bGVfZXhwc3ltX2NtZHM9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBhcmNoaXZlX2NtZHM9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2QkX2x0X2RzeW11dGlsIgorICAgIG1vZHVsZV9jbWRzPSJcJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MkX2x0X2RzeW11dGlsIgorICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9InNlZCAnc3xefF98JyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2QkX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCisgICAgbW9kdWxlX2V4cHN5bV9jbWRzPSJzZWQgLWUgJ3N8XnxffCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wkbGlibmFtZS1zeW1ib2xzLmV4cHN5bX5cJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MkX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCiAKICAgZWxzZQogICBsZF9zaGxpYnM9bm8KQEAgLTEyMzM1LDMzICsxMjc2NCwzMyBAQAogICAgICAgOzsKIAogICAgIGhwdXg5KikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICJ4JG91dHB1dF9vYmpkaXIvJHNvbmFtZSIgPSAieCRsaWIiIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKICAgICAgIGZpCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bCtiICR3bCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKIAogICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgogICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKyAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0IHllcyxubyA9ICIkR0NDLCR3aXRoX2dudV9sZCI7IHRoZW4KKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtiICR3bCRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBpZiB0ZXN0IG5vID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wrYiAkd2wkbGliZGlyJwogCWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgogCWhhcmRjb2RlX2RpcmVjdD15ZXMKIAloYXJkY29kZV9kaXJlY3RfYWJzb2x1dGU9eWVzCi0JZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS1FJworCWV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAJIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKIAkjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KIAloYXJkY29kZV9taW51c19MPXllcwpAQCAtMTIzNjksMjUgKzEyNzk4LDI1IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdDQywkd2l0aF9nbnVfbGQiOyB0aGVuCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR3bCtoICR3bCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtiICR3bCRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCi0JICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIGFyY2hpdmVfY21kcz0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCWlhNjQqKQotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJKikKIApAQCAtMTIzOTksNyArMTI4MjgsNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX19iPW5vCi0gICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCiAgICBMREZMQUdTPSIkTERGTEFHUyAtYiIKICAgIGVjaG8gIiRsdF9zaW1wbGVfbGlua190ZXN0X2NvZGUiID4gY29uZnRlc3QuJGFjX2V4dAogICAgaWYgKGV2YWwgJGFjX2xpbmsgMj5jb25mdGVzdC5lcnIpICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCkBAIC0xMjQxOCwxNCArMTI4NDcsMTQgQEAKICAgICAgZmkKICAgIGZpCiAgICAkUk0gLXIgY29uZnRlc3QqCi0gICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCiAKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA+JjY7IH0KIAotaWYgdGVzdCB4IiRsdF9jdl9wcm9nX2NvbXBpbGVyX19iIiA9IHh5ZXM7IHRoZW4KLSAgICBhcmNoaXZlX2NtZHM9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X3Byb2dfY29tcGlsZXJfX2IiOyB0aGVuCisgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLWIgJHdsK2ggJHdsJHNvbmFtZSAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiBlbHNlCiAgICAgYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogZmkKQEAgLTEyNDMzLDggKzEyODYyLDggQEAKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgaWYgdGVzdCBubyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsK2IgJHdsJGxpYmRpcicKIAloYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKIAogCWNhc2UgJGhvc3RfY3B1IGluCkBAIC0xMjQ0NSw3ICsxMjg3NCw3IEBACiAJKikKIAkgIGhhcmRjb2RlX2RpcmVjdD15ZXMKIAkgIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT15ZXMKLQkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAKIAkgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCiAJICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KQEAgLTEyNDU2LDggKzEyODg1LDggQEAKICAgICAgIDs7CiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CiAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAogCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCkBAIC0xMjQ2Nyw4ICsxMjg5Niw4IEBACiBpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLQkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisgIHNhdmVfTERGTEFHUz0kTERGTEFHUworCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHdsLWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bC9kZXYvbnVsbCIKIAkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CiAvKiBlbmQgY29uZmRlZnMuaC4gICovCiBpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CkBAIC0xMjQ4MCwyNCArMTI5MDksMzUgQEAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorICAgICAgICAgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKIGZpCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCWlmIHRlc3QgeWVzID0gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCI7IHRoZW4KKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAkd2wtZXhwb3J0c19maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCWZpCisJbGlua19hbGxfZGVwbGlicz1ubwogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZmkKICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjPSdubycKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CiAgICAgICBpbmhlcml0X3JwYXRoPXllcwogICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKICAgICAgIDs7CiAKKyAgICBsaW51eCopCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgdGNjKikKKwkjIEZhYnJpY2UgQmVsbGFyZCBldCBhbCdzIFRpbnkgQyBDb21waWxlcgorCWxkX3NobGlicz15ZXMKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwk7OworICAgICAgZXNhYworICAgICAgOzsKKwogICAgIG5ldGJzZCogfCBuZXRic2RlbGYqLWdudSkKICAgICAgIGlmIGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfXyA+L2Rldi9udWxsOyB0aGVuCiAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJyAgIyBhLm91dApAQCAtMTI1MTIsNyArMTI5NTIsNyBAQAogICAgIG5ld3NvczYpCiAgICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtRyAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CiAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAgICAgICA7OwpAQCAtMTI1MjAsMjcgKzEyOTYwLDE5IEBACiAgICAgKm50byogfCAqcW54KikKICAgICAgIDs7CiAKLSAgICBvcGVuYnNkKikKKyAgICBvcGVuYnNkKiB8IGJpdHJpZyopCiAgICAgICBpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgogCWhhcmRjb2RlX2RpcmVjdD15ZXMKIAloYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCiAJaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPXllcwotCWlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKwlpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCI7IHRoZW4KIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzJwotCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tRScKKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMnCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUUnCiAJZWxzZQotCSAgY2FzZSAkaG9zdF9vcyBpbgotCSAgIG9wZW5ic2RbMDFdLiogfCBvcGVuYnNkMi5bMC03XSB8IG9wZW5ic2QyLlswLTddLiopCi0JICAgICBhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0JICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0JICAgICA7OwotCSAgICopCi0JICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgICA7OwotCSAgZXNhYworCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGgsJGxpYmRpcicKIAlmaQogICAgICAgZWxzZQogCWxkX3NobGlicz1ubwpAQCAtMTI1NTEsMzMgKzEyOTgzLDUzIEBACiAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9taW51c19MPXllcwogICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgIGFyY2hpdmVfY21kcz0nJEVDSE8gIkxJQlJBUlkgJGxpYm5hbWUgSU5JVElOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBEQVRBID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvICIgU0lOR0xFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZW14ZXhwICRsaWJvYmpzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4kQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJwotICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgc2hyZXh0X2NtZHM9LmRsbAorICAgICAgYXJjaGl2ZV9jbWRzPSckRUNITyAiTElCUkFSWSAke3NvbmFtZSUkc2hhcmVkX2V4dH0gSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGV4cCAkbGlib2JqcyB8ICRTRUQgLyJfRExMX0luaXRUZXJtIi9kID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJcHJlZml4X2NtZHM9IiRTRUQifgorCWlmIHRlc3QgRVhQT1JUUyA9ICJgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIjsgdGhlbgorCSAgcHJlZml4X2NtZHM9IiRwcmVmaXhfY21kcyAtZSAxZCI7CisJZml+CisJcHJlZml4X2NtZHM9IiRwcmVmaXhfY21kcyAtZSBcInMvXlwoLipcKSQvX1wxL2dcIiJ+CisJY2F0ICRleHBvcnRfc3ltYm9scyB8ICRwcmVmaXhfY21kcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJENDIC1aZGxsIC1aY3J0ZGxsIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwllbXhpbXAgLW8gJGxpYiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBvbGRfYXJjaGl2ZV9Gcm9tX25ld19jbWRzPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfV9kbGwuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwogICAgICAgOzsKIAogICAgIG9zZjMqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlhbGxvd191bmRlZmluZWRfZmxhZz0nICR3bC1leHBlY3RfdW5yZXNvbHZlZCAkd2xcKicKKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGVsc2UKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAgICAgICBmaQogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9J25vJwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHdsLXJwYXRoICR3bCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKICAgICAgIDs7CiAKICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJworCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtbXN5bSAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSckd2wtcnBhdGggJHdsJGxpYmRpcicKICAgICAgIGVsc2UKIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lOyBwcmludGYgIiVzXFxuIiAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkkQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkd2wtaW5wdXQgJHdsJGxpYi5leHAgJGNvbXBpbGVyX2ZsYWdzICRsaWJvYmpzICRkZXBsaWJzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCiAKIAkjIEJvdGggYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5CiAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCkBAIC0xMjU4OCwyNCArMTMwNDAsMjQgQEAKIAogICAgIHNvbGFyaXMqKQogICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQl3bGFyYz0nJHt3bH0nCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCXdsYXJjPSckd2wnCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsLXogJHt3bH10ZXh0ICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR3bC16ICR7d2x9dGV4dCAkd2wtTSAkd2wkbGliLmV4cCAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKICAgICAgIGVsc2UKIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkqIkNvbXBpbGVycyA1LjAiKikKIAkgIHdsYXJjPScnCi0JICBhcmNoaXZlX2NtZHM9JyRMRCAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzPSckTEQgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAJICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkTEQgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAkTEQgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLU0gJGxpYi5leHAgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCSAgOzsKIAkqKQotCSAgd2xhcmM9JyR7d2x9JwotCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgd2xhcmM9JyR3bCcKKwkgIGFyY2hpdmVfY21kcz0nJENDIC1HJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAkQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtTSAkbGliLmV4cCAtaCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAkgIDs7CiAJZXNhYwogICAgICAgZmkKQEAgLTEyNjE1LDExICsxMzA2NywxMSBAQAogICAgICAgc29sYXJpczIuWzAtNV0gfCBzb2xhcmlzMi5bMC01XS4qKSA7OwogICAgICAgKikKIAkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAotCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCBgJHdsJywKKwkjIGJ1dCB1bmRlcnN0YW5kcyAnLXogbGlua2VyX2ZsYWcnLiAgR0NDIGRpc2NhcmRzIGl0IHdpdGhvdXQgJyR3bCcsCiAJIyBidXQgaXMgY2FyZWZ1bCBlbm91Z2ggbm90IHRvIHJlb3JkZXIuCiAJIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKLQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR7d2x9LXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR7d2x9LXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKKwlpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9JyR3bC16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAkd2wteiAke3dsfWRlZmF1bHRleHRyYWN0JwogCWVsc2UKIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwogCWZpCkBAIC0xMjYyOSwxMCArMTMwODEsMTAgQEAKICAgICAgIDs7CiAKICAgICBzdW5vczQqKQotICAgICAgaWYgdGVzdCAieCRob3N0X3ZlbmRvciIgPSB4c2VxdWVudDsgdGhlbgorICAgICAgaWYgdGVzdCBzZXF1ZW50ID0gIiRob3N0X3ZlbmRvciI7IHRoZW4KIAkjIFVzZSAkQ0MgdG8gbGluayB1bmRlciBzZXF1ZW50LCBiZWNhdXNlIGl0IHRocm93cyBpbiBzb21lIGV4dHJhIC5vCiAJIyBmaWxlcyB0aGF0IG1ha2UgLmluaXQgYW5kIC5maW5pIHNlY3Rpb25zIHdvcmsuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLUcgJHt3bH0taCAkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCWFyY2hpdmVfY21kcz0nJENDIC1HICR3bC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJYXJjaGl2ZV9jbWRzPSckTEQgLWFzc2VydCBwdXJlLXRleHQgLUJzdGF0aWMgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwogICAgICAgZmkKQEAgLTEyNjgxLDQzICsxMzEzMyw0MyBAQAogICAgICAgOzsKIAogICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCi0gICAgICBub191bmRlZmluZWRfZmxhZz0nJHt3bH0teix0ZXh0JworICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyR3bC16LHRleHQnCiAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sYz1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwogICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwogCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQotCWFyY2hpdmVfY21kcz0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCWFyY2hpdmVfY21kcz0nJENDIC1HICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZmkKICAgICAgIDs7CiAKICAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqKQotICAgICAgIyBOb3RlOiBXZSBjYW4gTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKKyAgICAgICMgTm90ZTogV2UgQ0FOTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKICAgICAgICMgbGluayB3aXRoIC1sYywgYW5kIHRoYXQgd291bGQgY2F1c2UgYW55IHN5bWJvbHMgdXNlZCBmcm9tIGxpYmMgdG8KICAgICAgICMgYWx3YXlzIGJlIHVucmVzb2x2ZWQsIHdoaWNoIG1lYW5zIGp1c3QgYWJvdXQgbm8gbGlicmFyeSB3b3VsZAogICAgICAgIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAogICAgICAgIyB0aG91Z2gsIHdoaWNoIGRvZXMgY2F0Y2ggc29tZSBiYWQgc3ltYm9scyBidXQgaXNuJ3QgYXMgaGVhdnktaGFuZGVkCiAgICAgICAjIGFzIC16IGRlZnMuCi0gICAgICBub191bmRlZmluZWRfZmxhZz0nJHt3bH0teix0ZXh0JwotICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyR7d2x9LXosbm9kZWZzJworICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyR3bC16LHRleHQnCisgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz0nJHdsLXosbm9kZWZzJwogICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGM9bm8KICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIsJGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR3bC1SLCRsaWJkaXInCiAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSc6JwogICAgICAgbGlua19hbGxfZGVwbGlicz15ZXMKLSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHt3bH0tQmV4cG9ydCcKKyAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYz0nJHdsLUJleHBvcnQnCiAgICAgICBydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCiAKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCi0JYXJjaGl2ZV9jbWRzPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJYXJjaGl2ZV9jbWRzPSckQ0MgLUcgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLUcgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgOzsKIApAQCAtMTI3MzIsMTAgKzEzMTg0LDEwIEBACiAgICAgICA7OwogICAgIGVzYWMKIAotICAgIGlmIHRlc3QgeCRob3N0X3ZlbmRvciA9IHhzbmk7IHRoZW4KKyAgICBpZiB0ZXN0IHNuaSA9ICIkaG9zdF92ZW5kb3IiOyB0aGVuCiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyogfCBzeXN2NSopCi0JZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPScke3dsfS1CbGFyZ2VkeW5zeW0nCisJZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjPSckd2wtQmxhcmdlZHluc3ltJwogCTs7CiAgICAgICBlc2FjCiAgICAgZmkKQEAgLTEyNzQzLDcgKzEzMTk1LDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnMiID4mNQogJGFzX2VjaG8gIiRsZF9zaGxpYnMiID4mNjsgfQotdGVzdCAiJGxkX3NobGlicyIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCit0ZXN0IG5vID0gIiRsZF9zaGxpYnMiICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KIAogd2l0aF9nbnVfbGQ9JHdpdGhfZ251X2xkCiAKQEAgLTEyNzY5LDcgKzEzMjIxLDcgQEAKICAgIyBBc3N1bWUgLWxjIHNob3VsZCBiZSBhZGRlZAogICBhcmNoaXZlX2NtZHNfbmVlZF9sYz15ZXMKIAotICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMseWVzID0gIiRHQ0MsJGVuYWJsZV9zaGFyZWQiOyB0aGVuCiAgICAgY2FzZSAkYXJjaGl2ZV9jbWRzIGluCiAgICAgKid+JyopCiAgICAgICAjIEZJWE1FOiB3ZSBtYXkgaGF2ZSB0byBkZWFsIHdpdGggbXVsdGktY29tbWFuZCBzZXF1ZW5jZXMuCkBAIC0xMjk4NCwxNCArMTM0MzYsMTQgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzLi4uICIgPiY2OyB9CiAKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICBjYXNlICRob3N0X29zIGluCi0gICAgZGFyd2luKikgbHRfYXdrX2FyZz0iL15saWJyYXJpZXM6LywvTFIvIiA7OwotICAgICopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8iIDs7CisgICAgZGFyd2luKikgbHRfYXdrX2FyZz0nL15saWJyYXJpZXM6LywvTFIvJyA7OworICAgICopIGx0X2F3a19hcmc9Jy9ebGlicmFyaWVzOi8nIDs7CiAgIGVzYWMKICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VkX3N0cmlwX2VxPSJzLD1cKFtBLVphLXpdOlwpLFwxLGciIDs7Ci0gICAgKikgbHRfc2VkX3N0cmlwX2VxPSJzLD0vLC8sZyIgOzsKKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0nc3w9XChbQS1aYS16XTpcKXxcMXxnJyA7OworICAgICopIGx0X3NlZF9zdHJpcF9lcT0nc3w9L3wvfGcnIDs7CiAgIGVzYWMKICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJENDIC1wcmludC1zZWFyY2gtZGlycyB8IGF3ayAkbHRfYXdrX2FyZyB8ICRTRUQgLWUgInMvXmxpYnJhcmllczovLyIgLWUgJGx0X3NlZF9zdHJpcF9lcWAKICAgY2FzZSAkbHRfc2VhcmNoX3BhdGhfc3BlYyBpbgpAQCAtMTMwMDcsMjggKzEzNDU5LDM1IEBACiAgICAgOzsKICAgZXNhYwogICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAotICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KKyAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuLi4KICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9Ci0gIGx0X211bHRpX29zX2Rpcj1gJENDICRDUFBGTEFHUyAkQ0ZMQUdTICRMREZMQUdTIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnkgMj4vZGV2L251bGxgCisgIGx0X211bHRpX29zX2Rpcj0vYCRDQyAkQ1BQRkxBR1MgJENGTEFHUyAkTERGTEFHUyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IDI+L2Rldi9udWxsYAorICAjIC4uLmJ1dCBpZiBzb21lIHBhdGggY29tcG9uZW50IGFscmVhZHkgZW5kcyB3aXRoIHRoZSBtdWx0aWxpYiBkaXIgd2UgYXNzdW1lCisgICMgdGhhdCBhbGwgaXMgZmluZSBhbmQgdHJ1c3QgLXByaW50LXNlYXJjaC1kaXJzIGFzIGlzIChHQ0MgNC4yPyBvciBuZXdlcikuCisgIGNhc2UgIiRsdF9tdWx0aV9vc19kaXI7ICRsdF9zZWFyY2hfcGF0aF9zcGVjICIgaW4KKyAgIi87ICIqIHwgIi8uOyAiKiB8ICIvLi87ICIqIHwgKiIkbHRfbXVsdGlfb3NfZGlyICIqIHwgKiIkbHRfbXVsdGlfb3NfZGlyLyAiKikKKyAgICBsdF9tdWx0aV9vc19kaXI9CisgICAgOzsKKyAgZXNhYwogICBmb3IgbHRfc3lzX3BhdGggaW4gJGx0X3NlYXJjaF9wYXRoX3NwZWM7IGRvCi0gICAgaWYgdGVzdCAtZCAiJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCi0gICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aC8kbHRfbXVsdGlfb3NfZGlyIgotICAgIGVsc2UKKyAgICBpZiB0ZXN0IC1kICIkbHRfc3lzX3BhdGgkbHRfbXVsdGlfb3NfZGlyIjsgdGhlbgorICAgICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgkbHRfbXVsdGlfb3NfZGlyIgorICAgIGVsaWYgdGVzdCAtbiAiJGx0X211bHRpX29zX2RpciI7IHRoZW4KICAgICAgIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCIgJiYgXAogCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgogICAgIGZpCiAgIGRvbmUKICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCBhd2sgJwotQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewotICBsdF9mb289IiI7Ci0gIGx0X2NvdW50PTA7CitCRUdJTiB7UlMgPSAiICI7IEZTID0gIi98XG4iO30geworICBsdF9mb28gPSAiIjsKKyAgbHRfY291bnQgPSAwOwogICBmb3IgKGx0X2kgPSBORjsgbHRfaSA+IDA7IGx0X2ktLSkgewogICAgIGlmICgkbHRfaSAhPSAiIiAmJiAkbHRfaSAhPSAiLiIpIHsKICAgICAgIGlmICgkbHRfaSA9PSAiLi4iKSB7CiAgICAgICAgIGx0X2NvdW50Kys7CiAgICAgICB9IGVsc2UgewogICAgICAgICBpZiAobHRfY291bnQgPT0gMCkgewotICAgICAgICAgIGx0X2Zvbz0iLyIgJGx0X2kgbHRfZm9vOworICAgICAgICAgIGx0X2ZvbyA9ICIvIiAkbHRfaSBsdF9mb287CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgbHRfY291bnQtLTsKICAgICAgICAgfQpAQCAtMTMwNDIsNyArMTM1MDEsNyBAQAogICAjIGZvciB0aGVzZSBob3N0cy4KICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIG1pbmd3KiB8IGNlZ2NjKikgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF9zZWFyY2hfcGF0aF9zcGVjIiB8XAotICAgICAgJFNFRCAncywvXChbQS1aYS16XTpcKSxcMSxnJ2AgOzsKKyAgICAgICRTRUQgJ3N8L1woW0EtWmEtel06XCl8XDF8ZydgIDs7CiAgIGVzYWMKICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJGx0X3NlYXJjaF9wYXRoX3NwZWMiIHwgJGx0X05MMlNQYAogZWxzZQpAQCAtMTMwNTEsNyArMTM1MTAsNyBAQAogbGlicmFyeV9uYW1lc19zcGVjPQogbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKIHNvbmFtZV9zcGVjPQotc2hyZXh0X2NtZHM9Ii5zbyIKK3NocmV4dF9jbWRzPS5zbwogcG9zdGluc3RhbGxfY21kcz0KIHBvc3R1bmluc3RhbGxfY21kcz0KIGZpbmlzaF9jbWRzPQpAQCAtMTMwNjgsMTQgKzEzNTI3LDE2IEBACiAjIGZsYWdzIHRvIGJlIGxlZnQgd2l0aG91dCBhcmd1bWVudHMKIG5lZWRfdmVyc2lvbj11bmtub3duCiAKKworCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCiAgICMgQUlYIDMgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gd2UgYXBwZW5kIGEgbWFqb3IgdmVyc2lvbiB0byB0aGUgbmFtZS4KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgOzsKIAogYWl4WzQtOV0qKQpAQCAtMTMwODMsNDEgKzEzNTQ0LDkxIEBACiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBlbHNlCiAgICAgIyBXaXRoIEdDQyB1cCB0byAyLjk1LngsIGNvbGxlY3QyIHdvdWxkIGNyZWF0ZSBhbiBpbXBvcnQgZmlsZQogICAgICMgZm9yIGRlcGVuZGVuY2UgbGlicmFyaWVzLiAgVGhlIGltcG9ydCBmaWxlIHdvdWxkIHN0YXJ0IHdpdGgKLSAgICAjIHRoZSBsaW5lIGAjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCi0gICAgIyBkZXBlbmQgb24gYC4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KKyAgICAjIHRoZSBsaW5lICcjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCisgICAgIyBkZXBlbmQgb24gJy4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KICAgICAjIGRldmVsb3BtZW50IHNuYXBzaG90cyBvZiBHQ0MgcHJpb3IgdG8gMy4wLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeDQgfCBhaXg0LlswMV0gfCBhaXg0LlswMV0uKikKICAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCiAJICAgZWNobyAnIHllcyAnCi0JICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KKwkgICBlY2hvICcjZW5kaWYnOyB9IHwgJENDIC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KIAk6CiAgICAgICBlbHNlCiAJY2FuX2J1aWxkX3NoYXJlZD1ubwogICAgICAgZmkKICAgICAgIDs7CiAgICAgZXNhYwotICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW4gbm90IGhhcmRjb2RlIGNvcnJlY3QKKyAgICAjIFVzaW5nIEltcG9ydCBGaWxlcyBhcyBhcmNoaXZlIG1lbWJlcnMsIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQKKyAgICAjIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgb2Ygc2hhcmVkIGxpYnJhcnkgYXJjaGl2ZXMgb24gQUlYLiBXaGlsZQorICAgICMgdGhpcyB3b3VsZCB3b3JrIGZvciBib3RoIHdpdGggYW5kIHdpdGhvdXQgcnVudGltZSBsaW5raW5nLCBpdCB3aWxsCisgICAgIyBwcmV2ZW50IHN0YXRpYyBsaW5raW5nIG9mIHN1Y2ggYXJjaGl2ZXMuIFNvIHdlIGRvIGZpbGVuYW1lLWJhc2VkCisgICAgIyBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIHdpdGggLnNvIGV4dGVuc2lvbiBvbmx5LCB3aGljaCBpcyB1c2VkCisgICAgIyB3aGVuIGJvdGggcnVudGltZSBsaW5raW5nIGFuZCBzaGFyZWQgbGlua2luZyBpcyBlbmFibGVkLgorICAgICMgVW5mb3J0dW5hdGVseSwgcnVudGltZSBsaW5raW5nIG1heSBpbXBhY3QgcGVyZm9ybWFuY2UsIHNvIHdlIGRvCisgICAgIyBub3Qgd2FudCB0aGlzIHRvIGJlIHRoZSBkZWZhdWx0IGV2ZW50dWFsbHkuIEFsc28sIHdlIHVzZSB0aGUKKyAgICAjIHZlcnNpb25lZCAuc28gbGlicyBmb3IgZXhlY3V0YWJsZXMgb25seSBpZiB0aGVyZSBpcyB0aGUgLWJydGwKKyAgICAjIGxpbmtlciBmbGFnIGluIExERkxBR1MgYXMgd2VsbCwgb3IgLS13aXRoLWFpeC1zb25hbWU9c3ZyNCBvbmx5LgorICAgICMgVG8gYWxsb3cgZm9yIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgc3VwcG9ydCwgd2UgbmVlZCB0byBjcmVhdGUKKyAgICAjIGxpYk5BTUUuc28uViBhcyBhbiBhcmNoaXZlIGZpbGUsIGNvbnRhaW5pbmc6CisgICAgIyAqKSBhbiBJbXBvcnQgRmlsZSwgcmVmZXJyaW5nIHRvIHRoZSB2ZXJzaW9uZWQgZmlsZW5hbWUgb2YgdGhlCisgICAgIyAgICBhcmNoaXZlIGFzIHdlbGwgYXMgdGhlIHNoYXJlZCBhcmNoaXZlIG1lbWJlciwgdGVsbGluZyB0aGUKKyAgICAjICAgIGJpdHdpZHRoICgzMiBvciA2NCkgb2YgdGhhdCBzaGFyZWQgb2JqZWN0LCBhbmQgcHJvdmlkaW5nIHRoZQorICAgICMgICAgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIG9mIHRoYXQgc2hhcmVkIG9iamVjdCwgZXZlbnR1YWxseQorICAgICMgICAgZGVjb3JhdGVkIHdpdGggdGhlICd3ZWFrJyBrZXl3b3JkCisgICAgIyAqKSB0aGUgc2hhcmVkIG9iamVjdCB3aXRoIHRoZSBGX0xPQURPTkxZIGZsYWcgc2V0LCB0byByZWFsbHkgYXZvaWQKKyAgICAjICAgIGl0IGJlaW5nIHNlZW4gYnkgdGhlIGxpbmtlci4KKyAgICAjIEF0IHJ1biB0aW1lIHdlIGJldHRlciB1c2UgdGhlIHJlYWwgZmlsZSByYXRoZXIgdGhhbiBhbm90aGVyIHN5bWxpbmssCisgICAgIyBidXQgZm9yIGxpbmsgdGltZSB3ZSBjcmVhdGUgdGhlIHN5bWxpbmsgbGliTkFNRS5zbyAtPiBsaWJOQU1FLnNvLlYKKworICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW5ub3QgaGFyZGNvZGUgY29ycmVjdAogICAgICMgc29uYW1lIGludG8gZXhlY3V0YWJsZS4gUHJvYmFibHkgd2UgY2FuIGFkZCB2ZXJzaW9uaW5nIHN1cHBvcnQgdG8KICAgICAjIGNvbGxlY3QyLCBzbyBhZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSB1c2VmdWwgaW4gZnV0dXJlLgotICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgIGFpeCx5ZXMpICMgdHJhZGl0aW9uYWwgbGlidG9vbAorICAgICAgZHluYW1pY19saW5rZXI9J0FJWCB1bnZlcnNpb25hYmxlIGxpYi5zbycKICAgICAgICMgSWYgdXNpbmcgcnVuIHRpbWUgbGlua2luZyAob24gQUlYIDQuMiBvciBsYXRlcikgdXNlIGxpYjxuYW1lPi5zbwogICAgICAgIyBpbnN0ZWFkIG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNlIGFyZSBub3QKICAgICAgICMgdHlwaWNhbCBBSVggc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIGVsc2UKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIDs7CisgICAgYWl4LG5vKSAjIHRyYWRpdGlvbmFsIEFJWCBvbmx5CisgICAgICBkeW5hbWljX2xpbmtlcj0nQUlYIGxpYi5hKGxpYi5zby5WKScKICAgICAgICMgV2UgcHJlc2VydmUgLmEgYXMgZXh0ZW5zaW9uIGZvciBzaGFyZWQgbGlicmFyaWVzIHRocm91Z2ggQUlYNC4yCiAgICAgICAjIGFuZCBsYXRlciB3aGVuIHdlIGFyZSBub3QgZG9pbmcgcnVuIHRpbWUgbGlua2luZy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uYSAkbGlibmFtZS5hJwotICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgICBmaQorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlLmEgJGxpYm5hbWUuYScKKyAgICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgICAgICA7OworICAgIHN2cjQsKikgIyBmdWxsIHN2cjQgb25seQorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubykiCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgICAgIyBXZSBkbyBub3Qgc3BlY2lmeSBhIHBhdGggaW4gSW1wb3J0IEZpbGVzLCBzbyBMSUJQQVRIIGZpcmVzLgorICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgICAgOzsKKyAgICAqLHllcykgIyBib3RoLCBwcmVmZXIgc3ZyNAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyksIGxpYi5hKGxpYi5zby5WKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICAjIHVucHJlZmVycmVkIHNoYXJlZGxpYiBsaWJOQU1FLmEgbmVlZHMgZXh0cmEgaGFuZGxpbmcKKyAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J3Rlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9IiRyZWFsbmFtZSJ+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRsaW5rbmFtZSJ+JGluc3RhbGxfc2hhcmVkX3Byb2cgIiRkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0IiAiJGRlc3RkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0In50ZXN0IC16ICIkdHN0cmlwbWUiIHx8IHRlc3QgLXogIiRzdHJpcGxpYiIgfHwgJHN0cmlwbGliICIkZGVzdGRpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LiRsaWJleHQiJworICAgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdmb3IgbiBpbiAkbGlicmFyeV9uYW1lcyAkb2xkX2xpYnJhcnk7IGRvIDo7IGRvbmV+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRuIn50ZXN0ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiA9ICIkbiIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuJGxpYmV4dCInCisgICAgICAjIFdlIGRvIG5vdCBzcGVjaWZ5IGEgcGF0aCBpbiBJbXBvcnQgRmlsZXMsIHNvIExJQlBBVEggZmlyZXMuCisgICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgICA7OworICAgICosbm8pICMgYm90aCwgcHJlZmVyIGFpeAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuYShsaWIuc28uViksIGxpYi5zby5WKCRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICAgICAgIyB1bnByZWZlcnJlZCBzaGFyZWRsaWIgbGliTkFNRS5zby5WIGFuZCBzeW1saW5rIGxpYk5BTUUuc28gbmVlZCBleHRyYSBoYW5kbGluZworICAgICAgcG9zdGluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgJGluc3RhbGxfc2hhcmVkX3Byb2cgJGRpci8kZGxuYW1lICRkZXN0ZGlyLyRkbG5hbWV+dGVzdCAteiAiJHRzdHJpcG1lIiB8fCB0ZXN0IC16ICIkc3RyaXBsaWIiIHx8ICRzdHJpcGxpYiAkZGVzdGRpci8kZGxuYW1lfnRlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9JHJlYWxuYW1lfmZ1bmNfc3RyaXBuYW1lICIiICIuYSIgIiRsaW5rbmFtZSJ+KGNkICIkZGVzdGRpciIgJiYgJExOX1MgLWYgJGRsbmFtZSAkZnVuY19zdHJpcG5hbWVfcmVzdWx0LnNvKScKKyAgICAgIHBvc3R1bmluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUifmZvciBuIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8gOjsgZG9uZX5mdW5jX3N0cmlwbmFtZSAiIiAiLmEiICIkbiJ+ZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuc28iJworICAgICAgOzsKKyAgICBlc2FjCiAgICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAgIGZpCiAgIDs7CkBAIC0xMzEyNywxOCArMTM2MzgsMTggQEAKICAgcG93ZXJwYykKICAgICAjIFNpbmNlIEp1bHkgMjAwNyBBbWlnYU9TNCBvZmZpY2lhbGx5IHN1cHBvcnRzIC5zbyBsaWJyYXJpZXMuCiAgICAgIyBXaGVuIGNvbXBpbGluZyB0aGUgZXhlY3V0YWJsZSwgYWRkIC11c2UtZHlubGQgLUxzb2JqczogdG8gdGhlIGNvbXBpbGVsaW5lLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICA7OwogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwogCiBiZW9zKikKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaGFyZWRfZXh0JwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgIDs7CkBAIC0xMzE0Niw4ICsxMzY1Nyw4IEBACiBic2RpWzQ1XSopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvWDExL2xpYiAvdXNyL2NvbnRyaWIvbGliIC9saWIgL3Vzci9sb2NhbC9saWIiCkBAIC0xMzE1OSw3ICsxMzY3MCw3IEBACiAKIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgdmVyc2lvbl90eXBlPXdpbmRvd3MKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHNocmV4dF9jbWRzPS5kbGwKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCkBAIC0xMzE2OCw4ICsxMzY3OSw4IEBACiAgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJGZpbGVgfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CiAgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CiAgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KICAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZX4KQEAgLTEzMTg1LDE3ICsxMzY5NiwxNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCi0gICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgL3Vzci9saWIvdzMyYXBpIgogICAgICAgOzsKICAgICBtaW5ndyogfCBjZWdjYyopCiAgICAgICAjIE1pbkdXIERMTHMgdXNlIHRyYWRpdGlvbmFsICdsaWInIHByZWZpeAotICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKICAgICAgIDs7CiAgICAgcHczMiopCiAgICAgICAjIHB3MzIgRExMcyB1c2UgJ3B3JyBwcmVmaXggcmF0aGVyIHRoYW4gJ2xpYicKLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICRyZWxlYXNlIHwgJFNFRCAtZSAncy9bLl0vLS9nJ2AkdmVyc3VmZml4JHNoYXJlZF9leHQnCiAgICAgICA7OwogICAgIGVzYWMKICAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwpAQCAtMTMyMDQsOCArMTM3MTUsOCBAQAogICAqLGNsKikKICAgICAjIE5hdGl2ZSBNU1ZDCiAgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5saWInCiAKICAgICBjYXNlICRidWlsZF9vcyBpbgogICAgIG1pbmd3KikKQEAgLTEzMjMyLDcgKzEzNzQzLDcgQEAKICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCiAgICAgICA7OwogICAgICopCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9JExJQgogICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCiAgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCiAgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCkBAIC0xMzI0NSw4ICsxMzc1Niw4IEBACiAgICAgZXNhYwogCiAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wkYmFzZV9maWxlJ1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KICAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KICAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgogICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwpAQCAtMTMyNTksNyArMTM3NzAsNyBAQAogCiAgICopCiAgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZWBlY2hvICRyZWxlYXNlIHwgJFNFRCAtZSAncy9bLl0vLS9nJ2AkdmVyc3VmZml4JHNoYXJlZF9leHQgJGxpYm5hbWUubGliJwogICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCiAgICAgOzsKICAgZXNhYwpAQCAtMTMyNzIsOCArMTM3ODMsOCBAQAogICB2ZXJzaW9uX3R5cGU9ZGFyd2luCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQgJHtsaWJuYW1lfSRzaGFyZWRfZXh0JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke21ham9yfSRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2UkbWFqb3Ikc2hhcmVkX2V4dCAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRtYWpvciRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgIHNobGlicGF0aF92YXI9RFlMRF9MSUJSQVJZX1BBVEgKICAgc2hyZXh0X2NtZHM9J2B0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIC5zbyB8fCBlY2hvIC5keWxpYmAnCkBAIC0xMzI4Niw4ICsxMzc5Nyw4IEBACiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMTMzMDUsMTIgKzEzODE2LDEzIEBACiAgIHZlcnNpb25fdHlwZT1mcmVlYnNkLSRvYmpmb3JtYXQKICAgY2FzZSAkdmVyc2lvbl90eXBlIGluCiAgICAgZnJlZWJzZC1lbGYqKQotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgICAgbmVlZF92ZXJzaW9uPW5vCiAgICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgICAgIDs7CiAgICAgZnJlZWJzZC0qKQotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgICAgICBuZWVkX3ZlcnNpb249eWVzCiAgICAgICA7OwogICBlc2FjCkBAIC0xMzM0MCwxMCArMTM4NTIsMTAgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwogICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICA7OwpAQCAtMTMzNjEsMTQgKzEzODczLDE1IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbyIKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMgIyBVbmxlc3MgK25vZW52dmFyIGlzIHNwZWNpZmllZC4KLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgIGlmIHRlc3QgIlgkSFBVWF9JQTY0X01PREUiID0gWDMyOyB0aGVuCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgICAgaWYgdGVzdCAzMiA9ICIkSFBVWF9JQTY0X01PREUiOyB0aGVuCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYi9ocHV4MzIgL3Vzci9sb2NhbC9saWIiCisgICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0vdXNyL2xpYi9ocHV4MzIKICAgICBlbHNlCiAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL2hwdXg2NCAvdXNyL2xvY2FsL2xpYi9ocHV4NjQiCisgICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0vdXNyL2xpYi9ocHV4NjQKICAgICBmaQotICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKICAgICA7OwogICBocHBhKjY0KikKICAgICBzaHJleHRfY21kcz0nLnNsJwpAQCAtMTMzNzYsOCArMTM4ODksOCBAQAogICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCiAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEggIyBIb3cgc2hvdWxkIHdlIGhhbmRsZSBTSExJQl9QQVRICiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyAjIFVubGVzcyArbm9lbnZ2YXIgaXMgc3BlY2lmaWVkLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYi9wYTIwXzY0IC91c3IvY2NzL2xpYi9wYTIwXzY0IgogICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMKICAgICA7OwpAQCAtMTMzODYsOCArMTM4OTksOCBAQAogICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCiAgICAgc2hsaWJwYXRoX3Zhcj1TSExJQl9QQVRICiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vICMgK3MgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFNITElCX1BBVEgKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIDs7CiAgIGVzYWMKICAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgpAQCAtMTM0MDAsOCArMTM5MTMsOCBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBkeW5hbWljX2xpbmtlcj0nSW50ZXJpeCAzLnggbGQuc28uMSAoUEUsIGxpa2UgRUxGKScKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0xMzQxMiw3ICsxMzkyNSw3IEBACiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBub25zdG9wdXgqKSB2ZXJzaW9uX3R5cGU9bm9uc3RvcHV4IDs7CiAgICAgKikKLQlpZiB0ZXN0ICIkbHRfY3ZfcHJvZ19nbnVfbGQiID0geWVzOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X3Byb2dfZ251X2xkIjsgdGhlbgogCQl2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAJZWxzZQogCQl2ZXJzaW9uX3R5cGU9aXJpeApAQCAtMTM0MjAsOCArMTM5MzMsOCBAQAogICBlc2FjCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBjYXNlICRob3N0X29zIGluCiAgIGlyaXg1KiB8IG5vbnN0b3B1eCopCiAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQpAQCAtMTM0NDAsOCArMTM5NTMsOCBAQAogICBlc2FjCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWSR7c2hsaWJzdWZmfV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSAvdXNyL2xvY2FsL2xpYiR7bGlic3VmZn0iCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0iCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIkbGlic3VmZiAvbGliJGxpYnN1ZmYgL3Vzci9sb2NhbC9saWIkbGlic3VmZiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJGxpYnN1ZmYgL2xpYiRsaWJzdWZmIgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CiAKQEAgLTEzNDUwLDEzICsxMzk2MywzMyBAQAogICBkeW5hbWljX2xpbmtlcj1ubwogICA7OwogCitsaW51eCphbmRyb2lkKikKKyAgdmVyc2lvbl90eXBlPW5vbmUgIyBBbmRyb2lkIGRvZXNuJ3Qgc3VwcG9ydCB2ZXJzaW9uZWQgbGlicmFyaWVzLgorICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAgbmVlZF92ZXJzaW9uPW5vCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JworICBmaW5pc2hfY21kcz0KKyAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworCisgICMgVGhpcyBpbXBsaWVzIG5vIGZhc3RfaW5zdGFsbCwgd2hpY2ggaXMgdW5hY2NlcHRhYmxlLgorICAjIFNvbWUgcmV3b3JrIHdpbGwgYmUgbmVlZGVkIHRvIGFsbG93IGZvciBmYXN0X2luc3RhbGwKKyAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KKyAgaGFyZGNvZGVfaW50b19saWJzPXllcworCisgIGR5bmFtaWNfbGlua2VyPSdBbmRyb2lkIGxpbmtlcicKKyAgIyBEb24ndCBlbWJlZCAtcnBhdGggZGlyZWN0b3JpZXMgc2luY2UgdGhlIGxpbmtlciBkb2Vzbid0IHN1cHBvcnQgdGhlbS4KKyAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICA7OworCiAjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCiBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUgfCBnbnUqKQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0xMzUwMCw3ICsxNDAzMywxMiBAQAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKKyAgIyBJZGVhbGx5LCB3ZSBjb3VsZCB1c2UgbGRjb25maWcgdG8gcmVwb3J0ICphbGwqIGRpcmVjdG9yZXMgd2hpY2ggYXJlCisgICMgc2VhcmNoZWQgZm9yIGxpYnJhcmllcywgaG93ZXZlciB0aGlzIGlzIHN0aWxsIG5vdCBwb3NzaWJsZS4gIEFzaWRlIGZyb20gbm90CisgICMgYmVpbmcgY2VydGFpbiAvc2Jpbi9sZGNvbmZpZyBpcyBhdmFpbGFibGUsIGNvbW1hbmQKKyAgIyAnbGRjb25maWcgLU4gLVggLXYgfCBncmVwIF4vJyBvbiA2NGJpdCBGZWRvcmEgZG9lcyBub3QgcmVwb3J0IC91c3IvbGliNjQsCisgICMgZXZlbiB0aG91Z2ggaXQgaXMgc2VhcmNoZWQgYXQgcnVuLXRpbWUuICBUcnkgdG8gZG8gdGhlIGJlc3QgZ3Vlc3MgYnkKKyAgIyBhcHBlbmRpbmcgbGQuc28uY29uZiBjb250ZW50cyAoYW5kIGluY2x1ZGVzKSB0byB0aGUgc2VhcmNoIHBhdGguCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCiAgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXCQyKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcJDA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCkBAIC0xMzUzMiwxMiArMTQwNzAsMTIgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCiAgICAgZHluYW1pY19saW5rZXI9J05ldEJTRCAoYS5vdXQpIGxkLnNvJwogICBlbHNlCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJwogICBmaQogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMTM1NDcsNyArMTQwODUsNyBAQAogCiBuZXdzb3M2KQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKQEAgLTEzNTU2LDU4ICsxNDA5NCw2OCBAQAogICB2ZXJzaW9uX3R5cGU9cW54CiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgZHluYW1pY19saW5rZXI9J2xkcW54LnNvJwogICA7OwogCi1vcGVuYnNkKikKK29wZW5ic2QqIHwgYml0cmlnKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9L3Vzci9saWIKICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBPcGVuQlNEICgzLjMgYXQgbGVhc3QpICpkbyogbmVlZCB2ZXJzaW9uZWQgbGlicy4KLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgIG9wZW5ic2QzLjMgfCBvcGVuYnNkMy4zLiopCW5lZWRfdmVyc2lvbj15ZXMgOzsKLSAgICAqKQkJCQluZWVkX3ZlcnNpb249bm8gIDs7Ci0gIGVzYWMKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCisgICAgbmVlZF92ZXJzaW9uPW5vCisgIGVsc2UKKyAgICBuZWVkX3ZlcnNpb249eWVzCisgIGZpCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgIG9wZW5ic2QyLls4OV0gfCBvcGVuYnNkMi5bODldLiopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0JOzsKLSAgICAgICopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotCTs7Ci0gICAgICBlc2FjCi0gIGVsc2UKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIGZpCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKIAogb3MyKikKICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHZlcnNpb25fdHlwZT13aW5kb3dzCisgIHNocmV4dF9jbWRzPS5kbGwKKyAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICAjIE9TLzIgY2FuIG9ubHkgbG9hZCBhIERMTCB3aXRoIGEgYmFzZSBuYW1lIG9mIDggY2hhcmFjdGVycyBvciBsZXNzLgorICBzb25hbWVfc3BlYz0nYHRlc3QgLW4gIiRvczJkbGxuYW1lIiAmJiBsaWJuYW1lPSIkb3MyZGxsbmFtZSI7CisgICAgdj0kKCRFQ0hPICRyZWxlYXNlJHZlcnN1ZmZpeCB8IHRyIC1kIC4tKTsKKyAgICBuPSQoJEVDSE8gJGxpYm5hbWUgfCBjdXQgLWIgLSQoKDggLSAkeyN2fSkpIHwgdHIgLiBfKTsKKyAgICAkRUNITyAkbiR2YCRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1fZGxsLiRsaWJleHQnCiAgIGR5bmFtaWNfbGlua2VyPSdPUy8yIGxkLmV4ZScKLSAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIHNobGlicGF0aF92YXI9QkVHSU5MSUJQQVRICisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYworICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CisgICAgY2htb2QgYSt4IFwkZGxkaXIvJGRsbmFtZX4KKyAgICBpZiB0ZXN0IC1uICdcJyckc3RyaXBtZSdcJycgJiYgdGVzdCAtbiAnXCcnJHN0cmlwbGliJ1wnJzsgdGhlbgorICAgICAgZXZhbCAnXCcnJHN0cmlwbGliIFwkZGxkaXIvJGRsbmFtZSdcJycgfHwgZXhpdCBcJD87CisgICAgZmknCisgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgJFJNIFwkZGxwYXRoJwogICA7OwogCiBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCiAgIHZlcnNpb25fdHlwZT1vc2YKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3Ivc2hsaWIgL3Vzci9jY3MvbGliIC91c3IvbGliL2NtcGxycy9jYyAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiAvdmFyL3NobGliIgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICA7OwogCiByZG9zKikKQEAgLTEzNjE4LDggKzE0MTY2LDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMTM2MjksMTEgKzE0MTc3LDExIEBACiAKIHN1bm9zNCopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3Vzci9ldGMiIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIGZpCiAgIG5lZWRfdmVyc2lvbj15ZXMKQEAgLTEzNjQxLDggKzE0MTg5LDggQEAKIAogc3lzdjQgfCBzeXN2NC4zKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X3ZlbmRvciBpbgogICAgIHNuaSkKQEAgLTEzNjYzLDI0ICsxNDIxMSwyNCBAQAogICA7OwogCiBzeXN2NCpNUCopCi0gIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKyAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hhcmVkX2V4dC4kdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGZpCiAgIDs7CiAKIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKKyAgdmVyc2lvbl90eXBlPXNjbwogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbG9jYWwvbGliIC91c3IvZ251L2xpYiAvdXNyL2Njcy9saWIgL3Vzci9saWIgL2xpYicKICAgZWxzZQogICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9jY3MvbGliIC91c3IvbGliJwpAQCAtMTM2OTgsNyArMTQyNDYsNyBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTEzNzA2LDggKzE0MjU0LDggQEAKIAogdXRzNCopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMTM3MTcsMjAgKzE0MjY1LDM1IEBACiBlc2FjCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGR5bmFtaWNfbGlua2VyIiA+JjUKICRhc19lY2hvICIkZHluYW1pY19saW5rZXIiID4mNjsgfQotdGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KK3Rlc3Qgbm8gPSAiJGR5bmFtaWNfbGlua2VyIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQQVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBDT01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKIGZpCiAKLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iID0gc2V0OyB0aGVuCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKK2lmIHRlc3Qgc2V0ID0gIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiBmaQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIgorCitpZiB0ZXN0IHNldCA9ICIke2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYwogZmkKIAorIyByZW1lbWJlciB1bmF1Z21lbnRlZCBzeXNfbGliX2Rsc2VhcmNoX3BhdGggY29udGVudCBmb3IgbGlidG9vbCBzY3JpcHQgZGVjbHMuLi4KK2NvbmZpZ3VyZV90aW1lX2Rsc2VhcmNoX3BhdGg9JHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjCisKKyMgLi4uIGJ1dCBpdCBuZWVkcyBMVF9TWVNfTElCUkFSWV9QQVRIIG11bmdpbmcgZm9yIG90aGVyIGNvbmZpZ3VyZS10aW1lIGNvZGUKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0IHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICIkTFRfU1lTX0xJQlJBUllfUEFUSCIKKworIyB0byBiZSB1c2VkIGFzIGRlZmF1bHQgTFRfU1lTX0xJQlJBUllfUEFUSCB2YWx1ZSBpbiBnZW5lcmF0ZWQgbGlidG9vbAorY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aD0kTFRfU1lTX0xJQlJBUllfUEFUSAorCisKKworCisKKwogCiAKIApAQCAtMTM4MjcsMTUgKzE0MzkwLDE1IEBACiBoYXJkY29kZV9hY3Rpb249CiBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIgfHwKICAgIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgfHwKLSAgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9ICJYeWVzIiA7IHRoZW4KKyAgIHRlc3QgeWVzID0gIiRoYXJkY29kZV9hdXRvbWF0aWMiOyB0aGVuCiAKICAgIyBXZSBjYW4gaGFyZGNvZGUgbm9uLWV4aXN0ZW50IGRpcmVjdG9yaWVzLgotICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiAhPSBubyAmJgorICBpZiB0ZXN0IG5vICE9ICIkaGFyZGNvZGVfZGlyZWN0IiAmJgogICAgICAjIElmIHRoZSBvbmx5IG1lY2hhbmlzbSB0byBhdm9pZCBoYXJkY29kaW5nIGlzIHNobGlicGF0aF92YXIsIHdlCiAgICAgICMgaGF2ZSB0byByZWxpbmssIG90aGVyd2lzZSB3ZSBtaWdodCBsaW5rIHdpdGggYW4gaW5zdGFsbGVkIGxpYnJhcnkKICAgICAgIyB3aGVuIHdlIHNob3VsZCBiZSBsaW5raW5nIHdpdGggYSB5ZXQtdG8tYmUtaW5zdGFsbGVkIG9uZQotICAgICAjIyB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCApIiAhPSBubyAmJgotICAgICB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0gbm87IHRoZW4KKyAgICAgIyMgdGVzdCBubyAhPSAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgKSIgJiYKKyAgICAgdGVzdCBubyAhPSAiJGhhcmRjb2RlX21pbnVzX0wiOyB0aGVuCiAgICAgIyBMaW5raW5nIGFsd2F5cyBoYXJkY29kZXMgdGhlIHRlbXBvcmFyeSBsaWJyYXJ5IGRpcmVjdG9yeS4KICAgICBoYXJkY29kZV9hY3Rpb249cmVsaW5rCiAgIGVsc2UKQEAgLTEzODUwLDEyICsxNDQxMywxMiBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXJkY29kZV9hY3Rpb24iID4mNQogJGFzX2VjaG8gIiRoYXJkY29kZV9hY3Rpb24iID4mNjsgfQogCi1pZiB0ZXN0ICIkaGFyZGNvZGVfYWN0aW9uIiA9IHJlbGluayB8fAotICAgdGVzdCAiJGluaGVyaXRfcnBhdGgiID0geWVzOyB0aGVuCitpZiB0ZXN0IHJlbGluayA9ICIkaGFyZGNvZGVfYWN0aW9uIiB8fAorICAgdGVzdCB5ZXMgPSAiJGluaGVyaXRfcnBhdGgiOyB0aGVuCiAgICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IHN1cHBvcnRlZAogICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCi1lbGlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzIHx8Ci0gICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IG5vOyB0aGVuCitlbGlmIHRlc3QgeWVzID0gIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiIHx8CisgICAgIHRlc3Qgbm8gPSAiJGVuYWJsZV9zaGFyZWQiOyB0aGVuCiAgICMgRmFzdCBpbnN0YWxsYXRpb24gaXMgbm90IG5lY2Vzc2FyeQogICBlbmFibGVfZmFzdF9pbnN0YWxsPW5lZWRsZXNzCiBmaQpAQCAtMTM4NjUsNyArMTQ0MjgsNyBAQAogCiAKIAotICBpZiB0ZXN0ICJ4JGVuYWJsZV9kbG9wZW4iICE9IHh5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgIT0gIiRlbmFibGVfZGxvcGVuIjsgdGhlbgogICBlbmFibGVfZGxvcGVuPXVua25vd24KICAgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24KICAgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duCkBAIC0xMzg3NSwyMyArMTQ0MzgsMjMgQEAKIAogICBjYXNlICRob3N0X29zIGluCiAgIGJlb3MqKQotICAgIGx0X2N2X2Rsb3Blbj0ibG9hZF9hZGRfb24iCisgICAgbHRfY3ZfZGxvcGVuPWxvYWRfYWRkX29uCiAgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAgICAgbHRfY3ZfZGxvcGVuX3NlbGY9eWVzCiAgICAgOzsKIAogICBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICBsdF9jdl9kbG9wZW49IkxvYWRMaWJyYXJ5IgorICAgIGx0X2N2X2Rsb3Blbj1Mb2FkTGlicmFyeQogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIDs7CiAKICAgY3lnd2luKikKLSAgICBsdF9jdl9kbG9wZW49ImRsb3BlbiIKKyAgICBsdF9jdl9kbG9wZW49ZGxvcGVuCiAgICAgbHRfY3ZfZGxvcGVuX2xpYnM9CiAgICAgOzsKIAogICBkYXJ3aW4qKQotICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAorICAgICMgaWYgbGliZGwgaXMgaW5zdGFsbGVkIHdlIG5lZWQgdG8gbGluayBhZ2FpbnN0IGl0CiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X2xpYl9kbF9kbG9wZW4rOn0gZmFsc2U7IHRoZW4gOgpAQCAtMTM5MjksMTAgKzE0NDkyLDEwIEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKLSAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIgorICBsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGwKIGVsc2UKIAotICAgIGx0X2N2X2Rsb3Blbj0iZHlsZCIKKyAgICBsdF9jdl9kbG9wZW49ZHlsZAogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIGx0X2N2X2Rsb3Blbl9zZWxmPXllcwogCkBAIC0xMzk0MCwxMCArMTQ1MDMsMTggQEAKIAogICAgIDs7CiAKKyAgdHBmKikKKyAgICAjIERvbid0IHRyeSB0byBydW4gYW55IGxpbmsgdGVzdHMgZm9yIFRQRi4gIFdlIGtub3cgaXQncyBpbXBvc3NpYmxlCisgICAgIyBiZWNhdXNlIFRQRiBpcyBhIGNyb3NzLWNvbXBpbGVyLCBhbmQgd2Uga25vdyBob3cgd2Ugb3BlbiBEU09zLgorICAgIGx0X2N2X2Rsb3Blbj1kbG9wZW4KKyAgICBsdF9jdl9kbG9wZW5fbGlicz0KKyAgICBsdF9jdl9kbG9wZW5fc2VsZj1ubworICAgIDs7CisKICAgKikKICAgICBhY19mbl9jX2NoZWNrX2Z1bmMgIiRMSU5FTk8iICJzaGxfbG9hZCIgImFjX2N2X2Z1bmNfc2hsX2xvYWQiCiBpZiB0ZXN0ICJ4JGFjX2N2X2Z1bmNfc2hsX2xvYWQiID0geHllczsgdGhlbiA6Ci0gIGx0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiCisgIGx0X2N2X2Rsb3Blbj1zaGxfbG9hZAogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzaGxfbG9hZCBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3Igc2hsX2xvYWQgaW4gLWxkbGQuLi4gIiA+JjY7IH0KQEAgLTEzOTgyLDExICsxNDU1MywxMSBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfZGxkX3NobF9sb2FkIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX2RsZF9zaGxfbG9hZCIgPiY2OyB9CiBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9kbGRfc2hsX2xvYWQiID0geHllczsgdGhlbiA6Ci0gIGx0X2N2X2Rsb3Blbj0ic2hsX2xvYWQiIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsZCIKKyAgbHRfY3ZfZGxvcGVuPXNobF9sb2FkIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGxkCiBlbHNlCiAgIGFjX2ZuX2NfY2hlY2tfZnVuYyAiJExJTkVOTyIgImRsb3BlbiIgImFjX2N2X2Z1bmNfZGxvcGVuIgogaWYgdGVzdCAieCRhY19jdl9mdW5jX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKLSAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iCisgIGx0X2N2X2Rsb3Blbj1kbG9wZW4KIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sZGwiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGRsb3BlbiBpbiAtbGRsLi4uICIgPiY2OyB9CkBAIC0xNDAyNSw3ICsxNDU5Niw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9kbF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfZGxfZGxvcGVuIiA+JjY7IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX2RsX2Rsb3BlbiIgPSB4eWVzOyB0aGVuIDoKLSAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iIGx0X2N2X2Rsb3Blbl9saWJzPSItbGRsIgorICBsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGwKIGVsc2UKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxvcGVuIGluIC1sc3ZsZC4uLiAiID4mNjsgfQpAQCAtMTQwNjQsNyArMTQ2MzUsNyBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNQogJGFzX2VjaG8gIiRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID4mNjsgfQogaWYgdGVzdCAieCRhY19jdl9saWJfc3ZsZF9kbG9wZW4iID0geHllczsgdGhlbiA6Ci0gIGx0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxzdmxkIgorICBsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sc3ZsZAogZWxzZQogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBkbGRfbGluayBpbiAtbGRsZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgZGxkX2xpbmsgaW4gLWxkbGQuLi4gIiA+JjY7IH0KQEAgLTE0MTAzLDcgKzE0Njc0LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2RsZF9kbGRfbGluayIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9kbGRfZGxkX2xpbmsiID4mNjsgfQogaWYgdGVzdCAieCRhY19jdl9saWJfZGxkX2RsZF9saW5rIiA9IHh5ZXM7IHRoZW4gOgotICBsdF9jdl9kbG9wZW49ImRsZF9saW5rIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiCisgIGx0X2N2X2Rsb3Blbj1kbGRfbGluayBsdF9jdl9kbG9wZW5fbGlicz0tbGRsZAogZmkKIAogCkBAIC0xNDEyNCwyMSArMTQ2OTUsMjEgQEAKICAgICA7OwogICBlc2FjCiAKLSAgaWYgdGVzdCAieCRsdF9jdl9kbG9wZW4iICE9IHhubzsgdGhlbgotICAgIGVuYWJsZV9kbG9wZW49eWVzCi0gIGVsc2UKKyAgaWYgdGVzdCBubyA9ICIkbHRfY3ZfZGxvcGVuIjsgdGhlbgogICAgIGVuYWJsZV9kbG9wZW49bm8KKyAgZWxzZQorICAgIGVuYWJsZV9kbG9wZW49eWVzCiAgIGZpCiAKICAgY2FzZSAkbHRfY3ZfZGxvcGVuIGluCiAgIGRsb3BlbikKLSAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gICAgdGVzdCAieCRhY19jdl9oZWFkZXJfZGxmY25faCIgPSB4eWVzICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURIQVZFX0RMRkNOX0giCisgICAgc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKyAgICB0ZXN0IHllcyA9ICIkYWNfY3ZfaGVhZGVyX2RsZmNuX2giICYmIENQUEZMQUdTPSIkQ1BQRkxBR1MgLURIQVZFX0RMRkNOX0giCiAKLSAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorICAgIHNhdmVfTERGTEFHUz0kTERGTEFHUwogICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKIAotICAgIHNhdmVfTElCUz0iJExJQlMiCisgICAgc2F2ZV9MSUJTPSRMSUJTCiAgICAgTElCUz0iJGx0X2N2X2Rsb3Blbl9saWJzICRMSUJTIgogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CkBAIC0xNDE0Niw3ICsxNDcxNyw3IEBACiBpZiAke2x0X2N2X2Rsb3Blbl9zZWxmKzp9IGZhbHNlOyB0aGVuIDoKICAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKIGVsc2UKLSAgCSAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4gOgorICAJICBpZiB0ZXN0IHllcyA9ICIkY3Jvc3NfY29tcGlsaW5nIjsgdGhlbiA6CiAgIGx0X2N2X2Rsb3Blbl9zZWxmPWNyb3NzCiBlbHNlCiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKQEAgLTE0MTkzLDkgKzE0NzY0LDkgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorLyogV2hlbiAtZnZpc2liaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKIGludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKICNlbmRpZgogCkBAIC0xNDIyNSw3ICsxNDc5Niw3IEBACiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiY29uZnRlc3QkYWNfZXhlZXh0IiAyPi9kZXYvbnVsbDsgdGhlbgogICAgICguL2NvbmZ0ZXN0OyBleGl0OyApID4mNSAyPi9kZXYvbnVsbAogICAgIGx0X3N0YXR1cz0kPwogICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KQEAgLTE0MjQ1LDE0ICsxNDgxNiwxNCBAQAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kbG9wZW5fc2VsZiIgPiY1CiAkYXNfZWNobyAiJGx0X2N2X2Rsb3Blbl9zZWxmIiA+JjY7IH0KIAotICAgIGlmIHRlc3QgIngkbHRfY3ZfZGxvcGVuX3NlbGYiID0geHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9kbG9wZW5fc2VsZiI7IHRoZW4KICAgICAgIHdsPSRsdF9wcm9nX2NvbXBpbGVyX3dsIGV2YWwgTERGTEFHUz1cIlwkTERGTEFHUyAkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNcIgogICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZiIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZi4uLiAiID4mNjsgfQogaWYgJHtsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMrOn0gZmFsc2U7IHRoZW4gOgogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQotICAJICBpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IHllczsgdGhlbiA6CisgIAkgIGlmIHRlc3QgeWVzID0gIiRjcm9zc19jb21waWxpbmciOyB0aGVuIDoKICAgbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljPWNyb3NzCiBlbHNlCiAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKQEAgLTE0Mjk5LDkgKzE0ODcwLDkgQEAKICMgIGVuZGlmCiAjZW5kaWYKIAotLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorLyogV2hlbiAtZnZpc2liaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKIGludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKICNlbmRpZgogCkBAIC0xNDMzMSw3ICsxNDkwMiw3IEBACiAgIChldmFsICRhY19saW5rKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyAiY29uZnRlc3QkYWNfZXhlZXh0IiAyPi9kZXYvbnVsbDsgdGhlbgogICAgICguL2NvbmZ0ZXN0OyBleGl0OyApID4mNSAyPi9kZXYvbnVsbAogICAgIGx0X3N0YXR1cz0kPwogICAgIGNhc2UgeCRsdF9zdGF0dXMgaW4KQEAgLTE0MzUyLDkgKzE0OTIzLDkgQEAKICRhc19lY2hvICIkbHRfY3ZfZGxvcGVuX3NlbGZfc3RhdGljIiA+JjY7IH0KICAgICBmaQogCi0gICAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgotICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0gICAgTElCUz0iJHNhdmVfTElCUyIKKyAgICBDUFBGTEFHUz0kc2F2ZV9DUFBGTEFHUworICAgIExERkxBR1M9JHNhdmVfTERGTEFHUworICAgIExJQlM9JHNhdmVfTElCUwogICAgIDs7CiAgIGVzYWMKIApAQCAtMTQzOTgsNyArMTQ5NjksNyBAQAogIyBGSVhNRSAtIGluc2VydCBzb21lIHJlYWwgdGVzdHMsIGhvc3Rfb3MgaXNuJ3QgcmVhbGx5IGdvb2QgZW5vdWdoCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgZGFyd2luKikKLSAgICBpZiB0ZXN0IC1uICIkU1RSSVAiIDsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KICAgICAgIHN0cmlwbGliPSIkU1RSSVAgLXgiCiAgICAgICBvbGRfc3RyaXBsaWI9IiRTVFJJUCAtUyIKICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQpAQCAtMTQ0MjYsNyArMTQ5OTcsNyBAQAogCiAKIAotICAjIFJlcG9ydCB3aGljaCBsaWJyYXJ5IHR5cGVzIHdpbGwgYWN0dWFsbHkgYmUgYnVpbHQKKyAgIyBSZXBvcnQgd2hhdCBsaWJyYXJ5IHR5cGVzIHdpbGwgYWN0dWFsbHkgYmUgYnVpbHQKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgbGlidG9vbCBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9CiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkY2FuX2J1aWxkX3NoYXJlZCIgPiY1CkBAIC0xNDQzNCwxMyArMTUwMDUsMTMgQEAKIAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLSAgdGVzdCAiJGNhbl9idWlsZF9zaGFyZWQiID0gIm5vIiAmJiBlbmFibGVfc2hhcmVkPW5vCisgIHRlc3Qgbm8gPSAiJGNhbl9idWlsZF9zaGFyZWQiICYmIGVuYWJsZV9zaGFyZWQ9bm8KIAogICAjIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKICAgIyBhcmUgYWxsIGJ1aWx0IGZyb20gUElDLgogICBjYXNlICRob3N0X29zIGluCiAgIGFpeDMqKQotICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgdGVzdCB5ZXMgPSAiJGVuYWJsZV9zaGFyZWQiICYmIGVuYWJsZV9zdGF0aWM9bm8KICAgICBpZiB0ZXN0IC1uICIkUkFOTElCIjsgdGhlbgogICAgICAgYXJjaGl2ZV9jbWRzPSIkYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkbGliIgogICAgICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJwpAQCAtMTQ0NDgsOCArMTUwMTksMTIgQEAKICAgICA7OwogCiAgIGFpeFs0LTldKikKLSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQgJiYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0gbm8gOyB0aGVuCi0gICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgZW5hYmxlX3N0YXRpYz1ubworICAgIGlmIHRlc3QgaWE2NCAhPSAiJGhvc3RfY3B1IjsgdGhlbgorICAgICAgY2FzZSAkZW5hYmxlX3NoYXJlZCwkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIGluCisgICAgICB5ZXMsYWl4LHllcykgOzsJCQkjIHNoYXJlZCBvYmplY3QgYXMgbGliLnNvIGZpbGUgb25seQorICAgICAgeWVzLHN2cjQsKikgOzsJCQkjIHNoYXJlZCBvYmplY3QgYXMgbGliLnNvIGFyY2hpdmUgbWVtYmVyIG9ubHkKKyAgICAgIHllcywqKSBlbmFibGVfc3RhdGljPW5vIDs7CSMgc2hhcmVkIG9iamVjdCBpbiBsaWIuYSBhcmNoaXZlIGFzIHdlbGwKKyAgICAgIGVzYWMKICAgICBmaQogICAgIDs7CiAgIGVzYWMKQEAgLTE0NDU5LDcgKzE1MDM0LDcgQEAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXMiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzLi4uICIgPiY2OyB9CiAgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgotICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKKyAgdGVzdCB5ZXMgPSAiJGVuYWJsZV9zaGFyZWQiIHx8IGVuYWJsZV9zdGF0aWM9eWVzCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZW5hYmxlX3N0YXRpYyIgPiY1CiAkYXNfZWNobyAiJGVuYWJsZV9zdGF0aWMiID4mNjsgfQogCkBAIC0xNDQ3Myw3ICsxNTA0OCw3IEBACiBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwogYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQogCi1DQz0iJGx0X3NhdmVfQ0MiCitDQz0kbHRfc2F2ZV9DQwogCiAKIApAQCAtMTQ0OTksOCArMTUwNzQsOCBAQAogCiAKIAotR1NUX1JFUT0xLjYuMwotR1NUUEJfUkVRPTEuNi4zCitHU1RfUkVRPTEuNy45MQorR1NUUEJfUkVRPTEuNy45MQogCiAKIApAQCAtMTY1NTIsNiArMTcxMjcsMzMgQEAKIAogCiAKKyAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWV4dHJhLWNoZWNrIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX2V4dHJhX2NoZWNrK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfZXh0cmFfY2hlY2s7CisgICAgICBjYXNlICIke2VuYWJsZXZhbH0iIGluCisgICAgICAgIHllcykgRVhUUkFfQ0hFQ0tTPXllcyA7OworICAgICAgICBubykgIEVYVFJBX0NIRUNLUz1ubyA7OworICAgICAgICAqKSAgIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1leHRyYS1jaGVja3MiICIkTElORU5PIiA1IDs7CisgICAgICBlc2FjCisKK2Vsc2UKKworICAgICAgaWYgdGVzdCAieGBleHByICRQQUNLQUdFX1ZFUlNJT05fTUlOT1IgJSAyYCIgPSAieDEiIC1hICJ4YGV4cHIgJFBBQ0tBR0VfVkVSU0lPTl9NSUNSTyAnPCcgOTBgIiA9ICJ4MSI7IHRoZW4KKyAgICAgICAgRVhUUkFfQ0hFQ0tTPXllcworICAgICAgZWxzZQorICAgICAgICBFWFRSQV9DSEVDS1M9bm8KKyAgICAgIGZpCisKK2ZpCisKKworICAgIGlmIHRlc3QgIngkRVhUUkFfQ0hFQ0tTIiA9ICJ4eWVzIjsgdGhlbgorCiskYXNfZWNobyAiI2RlZmluZSBHU1RfRU5BQkxFX0VYVFJBX0NIRUNLUyAxIiA+PmNvbmZkZWZzLmgKKworICAgIGZpCisKKwogCiAgICAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWRlYnVnIHdhcyBnaXZlbi4KIGlmIHRlc3QgIiR7ZW5hYmxlX2RlYnVnK3NldH0iID0gc2V0OyB0aGVuIDoKQEAgLTE5NDY4LDE1ICsyMDA3MCwxNSBAQAogCiBmdW5jX3N0cmlwbmFtZV9jbmYgKCkKIHsKLSAgY2FzZSAkezJ9IGluCi0gIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0gICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKyAgY2FzZSAkMiBpbgorICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJDMiIHwgJFNFRCAicyVeJDElJTsgcyVcXFxcJDJcJCUlImA7OworICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJDMiIHwgJFNFRCAicyVeJDElJTsgcyUkMlwkJSUiYDs7CiAgIGVzYWMKIH0gIyBmdW5jX3N0cmlwbmFtZV9jbmYKIAotICAgICAgaWYgdGVzdCAtbiAiJENYWCIgJiYgKCB0ZXN0ICJYJENYWCIgIT0gIlhubyIgJiYKLSAgICAoICh0ZXN0ICJYJENYWCIgPSAiWGcrKyIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKLSAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCBubyAhPSAiJENYWCIgJiYKKyAgICAoICh0ZXN0IGcrKyA9ICIkQ1hYIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAorICAgICh0ZXN0IGcrKyAhPSAiJENYWCIpKSk7IHRoZW4KICAgYWNfZXh0PWNwcAogYWNfY3BwPSckQ1hYQ1BQICRDUFBGTEFHUycKIGFjX2NvbXBpbGU9JyRDWFggLWMgJENYWEZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKQEAgLTE5NjU1LDcgKzIwMjU3LDcgQEAKICMgdGhlIENYWCBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKICMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKICMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgotaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiOyB0aGVuCiAgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCiAgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iaW50IHNvbWVfdmFyaWFibGUgPSAwOyIKIApAQCAtMTk3MTYsNDYgKzIwMzE4LDM5IEBACiAgIENGTEFHUz0kQ1hYRkxBR1MKICAgY29tcGlsZXI9JENDCiAgIGNvbXBpbGVyX0NYWD0kQ0MKLSAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCi0gIGNhc2UgJGNjX3RlbXAgaW4KLSAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7Ci0gICAgZGlzdGNjIHwgKltcXC9dZGlzdGNjIHwgcHVyaWZ5IHwgKltcXC9dcHVyaWZ5ICkgOzsKLSAgICBcLSopIDs7Ci0gICAgKikgYnJlYWs7OwotICBlc2FjCi1kb25lCi1jY19iYXNlbmFtZT1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKKyAgZnVuY19jY19iYXNlbmFtZSAkY29tcGlsZXIKK2NjX2Jhc2VuYW1lPSRmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdAogCiAKICAgaWYgdGVzdCAtbiAiJGNvbXBpbGVyIjsgdGhlbgogICAgICMgV2UgZG9uJ3Qgd2FudCAtZm5vLWV4Y2VwdGlvbiB3aGVuIGNvbXBpbGluZyBDKysgY29kZSwgc28gc2V0IHRoZQogICAgICMgbm9fYnVpbHRpbl9mbGFnIHNlcGFyYXRlbHkKLSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCiAgICAgICBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFg9JyAtZm5vLWJ1aWx0aW4nCiAgICAgZWxzZQogICAgICAgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPQogICAgIGZpCiAKLSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCiAgICAgICAjIFNldCB1cCBkZWZhdWx0IEdOVSBDKysgY29uZmlndXJhdGlvbgogCiAKIAogIyBDaGVjayB3aGV0aGVyIC0td2l0aC1nbnUtbGQgd2FzIGdpdmVuLgogaWYgdGVzdCAiJHt3aXRoX2dudV9sZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIHdpdGh2YWw9JHdpdGhfZ251X2xkOyB0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXMKKyAgd2l0aHZhbD0kd2l0aF9nbnVfbGQ7IHRlc3Qgbm8gPSAiJHdpdGh2YWwiIHx8IHdpdGhfZ251X2xkPXllcwogZWxzZQogICB3aXRoX2dudV9sZD1ubwogZmkKIAogYWNfcHJvZz1sZAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICMgQ2hlY2sgaWYgZ2NjIC1wcmludC1wcm9nLW5hbWU9bGQgZ2l2ZXMgYSBwYXRoLgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBsZCB1c2VkIGJ5ICRDQyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgbGQgdXNlZCBieSAkQ0MuLi4gIiA+JjY7IH0KICAgY2FzZSAkaG9zdCBpbgogICAqLSotbWluZ3cqKQotICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiB3aGljaCB1cHNldHMgbWluZ3cKKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4sIHdoaWNoIHVwc2V0cyBtaW5ndwogICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKICAgKikKICAgICBhY19wcm9nPWAoJENDIC1wcmludC1wcm9nLW5hbWU9bGQpIDI+JjVgIDs7CkBAIC0xOTc2OSw3ICsyMDM2NCw3IEBACiAgICAgICB3aGlsZSAkRUNITyAiJGFjX3Byb2ciIHwgJEdSRVAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCiAJYWNfcHJvZz1gJEVDSE8gJGFjX3Byb2d8ICRTRUQgInMlJHJlX2RpcmVsdCUvJSJgCiAgICAgICBkb25lCi0gICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJvZyIKKyAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9JGFjX3Byb2cKICAgICAgIDs7CiAgICIiKQogICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgpAQCAtMTk3ODAsNyArMjAzNzUsNyBAQAogICAgIHdpdGhfZ251X2xkPXVua25vd24KICAgICA7OwogICBlc2FjCi1lbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KK2VsaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlUgbGQiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVSBsZC4uLiAiID4mNjsgfQogZWxzZQpAQCAtMTk3OTEsMzIgKzIwMzg2LDMyIEBACiAgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CiBlbHNlCiAgIGlmIHRlc3QgLXogIiRMRCI7IHRoZW4KLSAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgZm9yIGFjX2RpciBpbiAkUEFUSDsgZG8KLSAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KICAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KLSAgICAgIGx0X2N2X3BhdGhfTEQ9IiRhY19kaXIvJGFjX3Byb2ciCisgICAgICBsdF9jdl9wYXRoX0xEPSRhY19kaXIvJGFjX3Byb2cKICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKICAgICAgICMgYnV0IGFwcGFyZW50bHkgc29tZSB2YXJpYW50cyBvZiBHTlUgbGQgb25seSBhY2NlcHQgLXYuCiAgICAgICAjIEJyZWFrIG9ubHkgaWYgaXQgd2FzIHRoZSBHTlUvbm9uLUdOVSBsZCB0aGF0IHdlIHByZWZlci4KICAgICAgIGNhc2UgYCIkbHRfY3ZfcGF0aF9MRCIgLXYgMj4mMSA8L2Rldi9udWxsYCBpbgogICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSBubyAmJiBicmVhaworCXRlc3Qgbm8gIT0gIiR3aXRoX2dudV9sZCIgJiYgYnJlYWsKIAk7OwogICAgICAgKikKLQl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworCXRlc3QgeWVzICE9ICIkd2l0aF9nbnVfbGQiICYmIGJyZWFrCiAJOzsKICAgICAgIGVzYWMKICAgICBmaQogICBkb25lCi0gIElGUz0iJGx0X3NhdmVfaWZzIgorICBJRlM9JGx0X3NhdmVfaWZzCiBlbHNlCi0gIGx0X2N2X3BhdGhfTEQ9IiRMRCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIGx0X2N2X3BhdGhfTEQ9JExEICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgogZmkKIGZpCiAKLUxEPSIkbHRfY3ZfcGF0aF9MRCIKK0xEPSRsdF9jdl9wYXRoX0xECiBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTEQiID4mNQogJGFzX2VjaG8gIiRMRCIgPiY2OyB9CkBAIC0xOTg1MiwyMiArMjA0NDcsMjIgQEAKIAogICAgICAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCiAgICAgICAjIGFyY2hpdmluZyBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhhdCBHTlUgbGQgaXMgYmVpbmcgdXNlZC4KLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJworICAgICAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1keW5hbWljJwogCiAgICAgICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICMgWFhYIEkgdGhpbmsgd2xhcmMgY2FuIGJlIGVsaW1pbmF0ZWQgaW4gbHRjZi1jeHgsIGJ1dCBJIG5lZWQgdG8KICAgICAgICAgIyAgICAgaW52ZXN0aWdhdGUgaXQgYSBsaXR0bGUgYml0IG1vcmUuIChNTSkKLSAgICAgICAgd2xhcmM9JyR7d2x9JworICAgICAgICB3bGFyYz0nJHdsJwogCiAgICAgICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KICAgICAgICAgaWYgZXZhbCAiYCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkYCAtLWhlbHAgMj4mMSIgfAogCSAgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworICAgICAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0kd2xhcmMnLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICckd2xhcmMnLS1uby13aG9sZS1hcmNoaXZlJwogICAgICAgICBlbHNlCiAgICAgICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPQogICAgICAgICBmaQpAQCAtMTk5MDQsMTggKzIwNDk5LDMwIEBACiAgICAgICAgIGxkX3NobGlic19DWFg9bm8KICAgICAgICAgOzsKICAgICAgIGFpeFs0LTldKikKLSAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KICAgICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0CiAgICAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCiAgICAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwogICAgICAgICAgIGV4cF9zeW1fZmxhZz0nLUJleHBvcnQnCi0gICAgICAgICAgbm9fZW50cnlfZmxhZz0iIgorICAgICAgICAgIG5vX2VudHJ5X2ZsYWc9CiAgICAgICAgIGVsc2UKICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAKICAgICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKICAgICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLSAgICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICAgICMgaGF2ZSBydW50aW1lIGxpbmtpbmcgZW5hYmxlZCwgYW5kIHVzZSBpdCBmb3IgZXhlY3V0YWJsZXMuCisgICAgICAgICAgIyBGb3Igc2hhcmVkIGxpYnJhcmllcywgd2UgZW5hYmxlL2Rpc2FibGUgcnVudGltZSBsaW5raW5nCisgICAgICAgICAgIyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGNyZWF0ZWQgLQorICAgICAgICAgICMgd2hlbiAid2l0aF9haXhfc29uYW1lLGFpeF91c2VfcnVudGltZWxpbmtpbmciIGlzOgorICAgICAgICAgICMgImFpeCxubyIgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8sICBmb3IgZXhlY3V0YWJsZXMKKyAgICAgICAgICAjICJhaXgseWVzIiAgbGliLnNvICAgICAgICAgIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisgICAgICAgICAgIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQorICAgICAgICAgICMgImJvdGgsbm8iICBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzCisgICAgICAgICAgIyAgICAgICAgICAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgImJvdGgseWVzIiBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKyAgICAgICAgICAjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vCisgICAgICAgICAgIyAic3ZyNCwqIiAgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgICAgICAgICAgICBsaWIuYSAgICAgICAgICAgc3RhdGljIGFyY2hpdmUKICAgICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCiAJICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbwogCSAgICAgIGNhc2UgJGxkX2ZsYWcgaW4KQEAgLTE5OTI1LDYgKzIwNTMyLDEzIEBACiAJICAgICAgICA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQorCSAgICBpZiB0ZXN0IHN2cjQsbm8gPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgICAjIFdpdGggYWl4LXNvbmFtZT1zdnI0LCB3ZSBjcmVhdGUgdGhlIGxpYi5zby5WIHNoYXJlZCBhcmNoaXZlcyBvbmx5LAorCSAgICAgICMgc28gd2UgZG9uJ3QgaGF2ZSBsaWIuYSBzaGFyZWQgbGlicyB0byBsaW5rIG91ciBleGVjdXRhYmxlcy4KKwkgICAgICAjIFdlIGhhdmUgdG8gZm9yY2UgcnVudGltZSBsaW5raW5nIGluIHRoaXMgY2FzZS4KKwkgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcworCSAgICAgIExERkxBR1M9IiRMREZMQUdTIC1XbCwtYnJ0bCIKKwkgICAgZmkKIAkgICAgOzsKICAgICAgICAgICBlc2FjCiAKQEAgLTE5OTQzLDEzICsyMDU1NywyMSBAQAogICAgICAgICBoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVfQ1hYPXllcwogICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD0nOicKICAgICAgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi0gICAgICAgIGZpbGVfbGlzdF9zcGVjX0NYWD0nJHt3bH0tZiwnCisgICAgICAgIGZpbGVfbGlzdF9zcGVjX0NYWD0nJHdsLWYsJworICAgICAgICBjYXNlICR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmcgaW4KKyAgICAgICAgYWl4LCopIDs7CSMgbm8gaW1wb3J0IGZpbGUKKyAgICAgICAgc3ZyNCwqIHwgKix5ZXMpICMgdXNlIGltcG9ydCBmaWxlCisgICAgICAgICAgIyBUaGUgSW1wb3J0IEZpbGUgZGVmaW5lcyB3aGF0IHRvIGhhcmRjb2RlLgorICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdF9DWFg9bm8KKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVfQ1hYPW5vCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYwogCi0gICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCiAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbiBhaXg0LlswMTJdfGFpeDQuWzAxMl0uKikKICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKICAgICAgICAgICAjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKLQkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGNvbGxlY3QybmFtZT1gJENDIC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCiAJICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJgogCSAgICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCAkR1JFUCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKIAkgIHRoZW4KQEAgLTE5OTY3LDM2ICsyMDU4OSw0NCBAQAogCSAgZmkKICAgICAgICAgICBlc2FjCiAgICAgICAgICAgc2hhcmVkX2ZsYWc9Jy1zaGFyZWQnCi0JICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgICAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR7d2x9LUcnCisJICBpZiB0ZXN0IHllcyA9ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgc2hhcmVkX2ZsYWc9JHNoYXJlZF9mbGFnJyAkd2wtRycKIAkgIGZpCisJICAjIE5lZWQgdG8gZW5zdXJlIHJ1bnRpbWUgbGlua2luZyBpcyBkaXNhYmxlZCBmb3IgdGhlIHRyYWRpdGlvbmFsCisJICAjIHNoYXJlZCBsaWJyYXJ5LCBvciB0aGUgbGlua2VyIG1heSBldmVudHVhbGx5IGZpbmQgc2hhcmVkIGxpYnJhcmllcworCSAgIyAvd2l0aC8gSW1wb3J0IEZpbGUgLSB3ZSBkbyBub3Qgd2FudCB0byBtaXggdGhlbS4KKwkgIHNoYXJlZF9mbGFnX2FpeD0nLXNoYXJlZCcKKwkgIHNoYXJlZF9mbGFnX3N2cjQ9Jy1zaGFyZWQgJHdsLUcnCiAgICAgICAgIGVsc2UKICAgICAgICAgICAjIG5vdCB1c2luZyBnY2MKLSAgICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJICAjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQogCSAgIyBjaG9rZXMgb24gLVdsLC1HLiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgY29ycmVjdDoKIAkgIHNoYXJlZF9mbGFnPSctRycKICAgICAgICAgICBlbHNlCi0JICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotCSAgICAgIHNoYXJlZF9mbGFnPScke3dsfS1HJworCSAgICBpZiB0ZXN0IHllcyA9ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgICBzaGFyZWRfZmxhZz0nJHdsLUcnCiAJICAgIGVsc2UKLQkgICAgICBzaGFyZWRfZmxhZz0nJHt3bH0tYk06U1JFJworCSAgICAgIHNoYXJlZF9mbGFnPSckd2wtYk06U1JFJwogCSAgICBmaQorCSAgICBzaGFyZWRfZmxhZ19haXg9JyR3bC1iTTpTUkUnCisJICAgIHNoYXJlZF9mbGFnX3N2cjQ9JyR3bC1HJwogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAKLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmV4cGFsbCcKKyAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHdsLWJleHBhbGwnCiAgICAgICAgICMgSXQgc2VlbXMgdGhhdCAtYmV4cGFsbCBkb2VzIG5vdCBleHBvcnQgc3ltYm9scyBiZWdpbm5pbmcgd2l0aAogICAgICAgICAjIHVuZGVyc2NvcmUgKF8pLCBzbyBpdCBpcyBiZXR0ZXIgdG8gZ2VuZXJhdGUgYSBsaXN0IG9mIHN5bWJvbHMgdG8KIAkjIGV4cG9ydC4KICAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD15ZXMKLSAgICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisJaWYgdGVzdCBhaXgseWVzID0gIiR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCiAgICAgICAgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVudGltZSBsb2FkaW5nIGZsYWdzICgtYnJ0bCksCiAgICAgICAgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotICAgICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm9rJworICAgICAgICAgICMgVGhlICItRyIgbGlua2VyIGZsYWcgYWxsb3dzIHVuZGVmaW5lZCBzeW1ib2xzLgorICAgICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm5vdG9rJwogICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQogICAgICAgICAgICMgZXhlY3V0YWJsZS4KLSAgICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisgICAgICAgICAgaWYgdGVzdCBzZXQgPSAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IjsgdGhlbgogICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKIGVsc2UKICAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTIwMDMxLDcgKzIwNjYxLDcgQEAKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAogICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCisgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0vdXNyL2xpYjovbGliCiAgIGZpCiAKIGZpCkBAIC0yMDAzOSwxOCArMjA2NjksMTggQEAKICAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKIGZpCiAKLSAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHdsLWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAKLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHdsJyRub19lbnRyeV9mbGFnJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgLW4gIiRhbGxvd191bmRlZmluZWRfZmxhZyI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHdsJGFsbG93X3VuZGVmaW5lZF9mbGFnIjsgZWxzZSA6OyBmaWAgJHdsJyRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scycgJyRzaGFyZWRfZmxhZwogICAgICAgICBlbHNlCi0gICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworICAgICAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCisJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtUiAkbGliZGlyOi91c3IvbGliOi9saWInCiAJICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0iLXogbm9kZWZzIgotCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwkd2wkbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyAkd2wkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJyJcJHdsJGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgogICAgICAgICAgIGVsc2UKIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLQkgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorCSAgICBpZiB0ZXN0IHNldCA9ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iOyB0aGVuCiAgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogZWxzZQogICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgpAQCAtMjAwODUsNyArMjA3MTUsNyBAQAogcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCiAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0gICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPS91c3IvbGliOi9saWIKICAgZmkKIAogZmkKQEAgLTIwMDkzLDIyICsyMDcyMywzNCBAQAogICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAogZmkKIAotCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAogCSAgICAjIC1iZXJvayB3aWxsIGxpbmsgd2l0aG91dCBlcnJvciwgYnV0IG1heSBwcm9kdWNlIGEgYnJva2VuIGxpYnJhcnkuCi0JICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR7d2x9LWJlcm5vdG9rJwotCSAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS1iZXJvaycKLQkgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAkd2wtYmVybm90b2snCisJICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nICR3bC1iZXJvaycKKwkgICAgaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogCSAgICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCi0JICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgIGVsc2UKIAkgICAgICAjIEV4cG9ydGVkIHN5bWJvbHMgY2FuIGJlIHB1bGxlZCBpbnRvIHNoYXJlZCBvYmplY3RzIGZyb20gYXJjaGl2ZXMKIAkgICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JyRjb252ZW5pZW5jZScKIAkgICAgZmkKIAkgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwotCSAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKLQkgICAgIyBsaWJyYXJpZXMuCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSJcJENDICRzaGFyZWRfZmxhZyInIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHt3bH0tYm5vZW50cnkgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWJFOiRleHBvcnRfc3ltYm9scyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9fiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRzb25hbWUnCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckUk0gLXIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmR+JE1LRElSICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kJworCSAgICAjIC1icnRsIGFmZmVjdHMgbXVsdGlwbGUgbGlua2VyIHNldHRpbmdzLCAtYmVyb2sgZG9lcyBub3QgYW5kIGlzIG92ZXJyaWRkZW4gbGF0ZXIKKwkgICAgY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQ9J2BmdW5jX2VjaG9fYWxsICIkY29tcGlsZXJfZmxhZ3MgIiB8ICRTRUQgLWUgInMlLWJydGxcXChbLCBdXFwpJS1iZXJva1xcMSVnImAnCisJICAgIGlmIHRlc3Qgc3ZyNCAhPSAiJHdpdGhfYWl4X3NvbmFtZSI7IHRoZW4KKwkgICAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKKwkgICAgICAjIGxpYnJhcmllcy4gTmVlZCAtYm5vcnRsIGxhdGUsIHdlIG1heSBoYXZlIC1icnRsIGluIExERkxBR1MuCisJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9IiRhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCInfiRDQyAnJHNoYXJlZF9mbGFnX2FpeCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUnCisJICAgIGZpCisJICAgIGlmIHRlc3QgYWl4ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSIkYXJjaGl2ZV9leHBzeW1fY21kc19DWFgiJ34kQ0MgJyRzaGFyZWRfZmxhZ19zdnI0JyAtbyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRTVFJJUCAtZSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMub34oIGZ1bmNfZWNob19hbGwgIiMhICRzb25hbWUoJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8pIjsgaWYgdGVzdCBzaHJfNjQgPSAiJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjIjsgdGhlbiBmdW5jX2VjaG9fYWxsICIjIDY0IjsgZWxzZSBmdW5jX2VjaG9fYWxsICIjIDMyIjsgZmk7IGNhdCAkZXhwb3J0X3N5bWJvbHMgKSA+ICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXB+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kc29uYW1lICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXAnCisJICAgIGVsc2UKKwkgICAgICAjIHVzZWQgYnkgLWRscHJlb3BlbiB0byBnZXQgdGhlIHN5bWJvbHMKKwkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0iJGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYIid+JE1WICAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc29uYW1lICRvdXRwdXRfb2JqZGlyJworCSAgICBmaQorCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0iJGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYIid+JFJNIC1yICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kJwogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAgICAgICAgIDs7CkBAIC0yMDExOCw3ICsyMDc2MCw3IEBACiAJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKIAkgICMgSm9zZXBoIEJlY2tlbmJhY2ggPGpyYjNAYmVzdC5jb20+IHNheXMgc29tZSByZWxlYXNlcyBvZiBnY2MKIAkgICMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbm9zdGFydCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAJZWxzZQogCSAgbGRfc2hsaWJzX0NYWD1ubwogCWZpCkBAIC0yMDE0Niw1NyArMjA3ODgsNTggQEAKIAkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCiAJICBsaWJleHQ9bGliCiAJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLQkgIHNocmV4dF9jbWRzPSIuZGxsIgorCSAgc2hyZXh0X2NtZHM9LmRsbAogCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0JICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLQkgICAgZWxzZQotCSAgICAgICRTRUQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotCSAgICBmaX4KLQkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotCSAgICBsaW5rbmFtZXM9JworCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn5saW5rbmFtZXM9JworCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmICAgdGVzdCBERUYgPSAiYCRTRUQgLW4gICAgIC1lICdcJydzL15bCSBdKi8vJ1wnJyAgICAgLWUgJ1wnJy9eXCg7LipcKSokL2QnXCcnICAgICAtZSAnXCcncy9eXChFWFBPUlRTXHxMSUJSQVJZXClcKFsJIF0uKlwpKiQvREVGL3AnXCcnICAgICAtZSBxICAgICAkZXhwb3J0X3N5bWJvbHNgIiA7IHRoZW4KKyAgICAgICAgICAgICAgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmIjsKKyAgICAgICAgICAgICAgZWNobyAiJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZGVmIiA+ICIkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cCI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICRTRUQgLWUgJ1wnJ3MvXi8tbGluayAtRVhQT1JUOi8nXCcnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisgICAgICAgICAgICBmaX4KKyAgICAgICAgICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKyAgICAgICAgICAgIGxpbmtuYW1lcz0nCiAJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCiAJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgQ1hYKT0ndHJ1ZScKIAkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwogCSAgIyBEb24ndCB1c2UgcmFubGliCiAJICBvbGRfcG9zdGluc3RhbGxfY21kc19DWFg9J2NobW9kIDY0NCAkb2xkbGliJwogCSAgcG9zdGxpbmtfY21kc19DWFg9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLQkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLQkgICAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotCSAgICAgICouZXhlfCouRVhFKSA7OwotCSAgICAgICopCi0JCWx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLQkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLQkJOzsKLQkgICAgZXNhY34KLQkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KLQkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLQkgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotCSAgICBmaScKKyAgICAgICAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisgICAgICAgICAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisgICAgICAgICAgICAgICouZXhlfCouRVhFKSA7OworICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIGx0X291dHB1dGZpbGU9JGx0X291dHB1dGZpbGUuZXhlCisgICAgICAgICAgICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSRsdF90b29sX291dHB1dGZpbGUuZXhlCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGVzYWN+CisgICAgICAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorICAgICAgICAgICAgaWYgdGVzdCA6ICE9ICIkTUFOSUZFU1RfVE9PTCIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisgICAgICAgICAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisgICAgICAgICAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworICAgICAgICAgICAgZmknCiAJICA7OwogCSopCiAJICAjIGcrKwogCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKLQkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1hbGwtc3ltYm9scycKIAkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAogCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwogCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCiAKIAkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0JICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgICAgZWxzZQotCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JICAgIGZpfgotCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkd2wtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSwgdXNlIGl0IGFzCisJICAgICMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZCBFWFBPUlRTLi4uCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiAgIHRlc3QgREVGID0gImAkU0VEIC1uICAgICAtZSAnXCcncy9eWwkgXSovLydcJycgICAgIC1lICdcJycvXlwoOy4qXCkqJC9kJ1wnJyAgICAgLWUgJ1wnJ3MvXlwoRVhQT1JUU1x8TElCUkFSWVwpXChbCSBdLipcKSokL0RFRi9wJ1wnJyAgICAgLWUgcSAgICAgJGV4cG9ydF9zeW1ib2xzYCIgOyB0aGVuCisgICAgICAgICAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgICBmaX4KKyAgICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkd2wtLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCiAJICBlbHNlCiAJICAgIGxkX3NobGlic19DWFg9bm8KIAkgIGZpCkBAIC0yMDIxMCwyNyArMjA4NTMsMjcgQEAKICAgaGFyZGNvZGVfZGlyZWN0X0NYWD1ubwogICBoYXJkY29kZV9hdXRvbWF0aWNfQ1hYPXllcwogICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD11bnN1cHBvcnRlZAotICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgotICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIjsgdGhlbgorICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR3bC1mb3JjZV9sb2FkLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgJwogCiAgIGVsc2UKICAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JycKICAgZmkKICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi0gIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0iJF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkIgorICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgIGlmb3J0KikgX2x0X2Rhcl9jYW5fc2hhcmVkPXllcyA7OworICAgICBpZm9ydCp8bmFnZm9yKikgX2x0X2Rhcl9jYW5fc2hhcmVkPXllcyA7OwogICAgICAqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9JEdDQyA7OwogICBlc2FjCi0gIGlmIHRlc3QgIiRfbHRfZGFyX2Nhbl9zaGFyZWQiID0gInllcyI7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJF9sdF9kYXJfY2FuX3NoYXJlZCI7IHRoZW4KICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCi0gICAgYXJjaGl2ZV9jbWRzX0NYWD0iXCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCR7X2x0X2RzeW11dGlsfSIKLSAgICBtb2R1bGVfY21kc19DWFg9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyR7X2x0X2RzeW11dGlsfSIKLSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAke19sdF9kYXJfc2luZ2xlX21vZH0ke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgotICAgIG1vZHVsZV9leHBzeW1fY21kc19DWFg9InNlZCAtZSAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKLSAgICAgICBpZiB0ZXN0ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCIgIT0gInllcyI7IHRoZW4KLSAgICAgIGFyY2hpdmVfY21kc19DWFg9IlwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJHtsaWJ9LW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCR7bGlifS1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcke19sdF9kc3ltdXRpbH0iCi0gICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ic2VkICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZGFyX2V4cG9ydF9zeW1zfSR7X2x0X2RzeW11dGlsfSIKKyAgICBhcmNoaXZlX2NtZHNfQ1hYPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJF9sdF9kc3ltdXRpbCIKKyAgICBtb2R1bGVfY21kc19DWFg9IlwkQ0MgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiAtYnVuZGxlIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyRfbHRfZHN5bXV0aWwiCisgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9InNlZCAnc3xefF98JyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2QkX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCisgICAgbW9kdWxlX2V4cHN5bV9jbWRzX0NYWD0ic2VkIC1lICdzfF58X3wnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJGxpYm5hbWUtc3ltYm9scy5leHBzeW1+XCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJF9sdF9kYXJfZXhwb3J0X3N5bXMkX2x0X2RzeW11dGlsIgorICAgICAgIGlmIHRlc3QgeWVzICE9ICIkbHRfY3ZfYXBwbGVfY2Nfc2luZ2xlX21vZCI7IHRoZW4KKyAgICAgIGFyY2hpdmVfY21kc19DWFg9IlwkQ0MgLXIgLWtlZXBfcHJpdmF0ZV9leHRlcm5zIC1ub3N0ZGxpYiAtbyBcJGxpYi1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGliLW1hc3Rlci5vIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyRfbHRfZHN5bXV0aWwiCisgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ic2VkICdzfF58X3wnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJGxpYm5hbWUtc3ltYm9scy5leHBzeW1+XCRDQyAtciAta2VlcF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vIFwkbGliLW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWItbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJF9sdF9kYXJfZXhwb3J0X3N5bXMkX2x0X2RzeW11dGlsIgogICAgIGZpCiAKICAgZWxzZQpAQCAtMjAyMzksNiArMjA4ODIsMzQgQEAKIAogCTs7CiAKKyAgICAgIG9zMiopCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKKwloYXJkY29kZV9taW51c19MX0NYWD15ZXMKKwlhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKwlzaHJleHRfY21kcz0uZGxsCisJYXJjaGl2ZV9jbWRzX0NYWD0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gIkRFU0NSSVBUSU9OIFwiJGxpYm5hbWVcIiIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gIkRBVEEgTVVMVElQTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgIGVteGV4cCAkbGlib2JqcyB8ICRTRUQgLyJfRExMX0luaXRUZXJtIi9kID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRDQyAtWmRsbCAtWmNydGRsbCAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICBlbXhpbXAgLW8gJGxpYiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisJYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICBwcmVmaXhfY21kcz0iJFNFRCJ+CisJICBpZiB0ZXN0IEVYUE9SVFMgPSAiYCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCI7IHRoZW4KKwkgICAgcHJlZml4X2NtZHM9IiRwcmVmaXhfY21kcyAtZSAxZCI7CisJICBmaX4KKwkgIHByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgXCJzL15cKC4qXCkkL19cMS9nXCIifgorCSAgY2F0ICRleHBvcnRfc3ltYm9scyB8ICRwcmVmaXhfY21kcyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworCW9sZF9hcmNoaXZlX0Zyb21fbmV3X2NtZHNfQ1hYPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfV9kbGwuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCisJOzsKKwogICAgICAgZGd1eCopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgZWMrKyopCkBAIC0yMDI3NCwxNCArMjA5NDUsMTQgQEAKICAgICAgICAgOzsKIAogICAgICAgaGFpa3UqKQotICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogICAgICAgICBsaW5rX2FsbF9kZXBsaWJzX0NYWD15ZXMKICAgICAgICAgOzsKIAogICAgICAgaHB1eDkqKQotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wrYiAkd2wkbGliZGlyJwogICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06Ci0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LUUnCisgICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR3bC1FJwogICAgICAgICBoYXJkY29kZV9kaXJlY3RfQ1hYPXllcwogICAgICAgICBoYXJkY29kZV9taW51c19MX0NYWD15ZXMgIyBOb3QgaW4gdGhlIHNlYXJjaCBQQVRILAogCQkJCSAgICAgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdApAQCAtMjAyOTMsNyArMjA5NjQsNyBAQAogICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubwogICAgICAgICAgICAgOzsKICAgICAgICAgICBhQ0MqKQotICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1iICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLWIgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogICAgICAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAgICAgICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KQEAgLTIwMzAyLDExICsyMDk3MywxMSBAQAogICAgICAgICAgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KICAgICAgICAgICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKICAgICAgICAgICAgICMgZGVwZW5kZW5jaWVzLgotICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCisgICAgICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCgkQ0MgLWIgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEpIHwgJEVHUkVQICJcLUwiYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogICAgICAgICAgICAgOzsKICAgICAgICAgICAqKQotICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KKyAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAieCRvdXRwdXRfb2JqZGlyLyRzb25hbWUiID0gIngkbGliIiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAogICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCkBAIC0yMDMxNiwxNSArMjA5ODcsMTUgQEAKICAgICAgICAgOzsKIAogICAgICAgaHB1eDEwKnxocHV4MTEqKQotICAgICAgICBpZiB0ZXN0ICR3aXRoX2dudV9sZCA9IG5vOyB0aGVuCi0JICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIGlmIHRlc3Qgbm8gPSAiJHdpdGhfZ251X2xkIjsgdGhlbgorCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bCtiICR3bCRsaWJkaXInCiAJICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06CiAKICAgICAgICAgICBjYXNlICRob3N0X2NwdSBpbgogICAgICAgICAgICAgaHBwYSo2NCp8aWE2NCopCiAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgICAqKQotCSAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LUUnCisJICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHdsLUUnCiAgICAgICAgICAgICAgIDs7CiAgICAgICAgICAgZXNhYwogICAgICAgICBmaQpAQCAtMjAzNTAsMTMgKzIxMDIxLDEzIEBACiAgICAgICAgICAgYUNDKikKIAkgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkgICAgICBocHBhKjY0KikKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgOzsKIAkgICAgICBpYTY0KikKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgIDs7CiAJICAgICAgKikKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgOzsKIAkgICAgZXNhYwogCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCkBAIC0yMDM2NywyMCArMjEwMzgsMjAgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRHUkVQICJcLUwiYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogICAgICAgICAgICopCi0JICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0JICAgICAgaWYgdGVzdCAkd2l0aF9nbnVfbGQgPSBubzsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgorCSAgICAgIGlmIHRlc3Qgbm8gPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkgICAgICAgICAgaHBwYSo2NCopCi0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICAgIGlhNjQqKQotCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICAqKQotCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgICAgIDs7CiAJICAgICAgICBlc2FjCiAJICAgICAgZmkKQEAgLTIwMzk1LDIyICsyMTA2NiwyMiBAQAogICAgICAgaW50ZXJpeFszLTldKikKIAloYXJkY29kZV9kaXJlY3RfQ1hYPW5vCiAJaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9bm8KLQloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLQlleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS1FJworCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtcnBhdGgsJGxpYmRpcicKKwlleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtRScKIAkjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCiAJIyBJbnN0ZWFkLCBzaGFyZWQgbGlicmFyaWVzIGFyZSBsb2FkZWQgYXQgYW4gaW1hZ2UgYmFzZSAoMHgxMDAwMDAwMCBieQogCSMgZGVmYXVsdCkgYW5kIHJlbG9jYXRlZCBpZiB0aGV5IGNvbmZsaWN0LCB3aGljaCBpcyBhIHNsb3cgdmVyeSBtZW1vcnkKIAkjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCiAJIyAyNTYgS2lCLWFsaWduZWQgaW1hZ2UgYmFzZSBiZXR3ZWVuIDB4NTAwMDAwMDAgYW5kIDB4NkZGQzAwMDAgYXQgbGluawogCSMgdGltZS4gIE1vdmluZyB1cCBmcm9tIDB4MTAwMDAwMDAgYWxzbyBhbGxvd3MgbW9yZSBzYnJrKDIpIHNwYWNlLgotCWFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCi0JYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J3NlZCAicyxeLF8sIiAkZXhwb3J0X3N5bWJvbHMgPiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCisJYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworCWFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdzZWQgInN8XnxffCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oLCRzb25hbWUgJHdsLS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogCTs7CiAgICAgICBpcml4NSogfCBpcml4NiopCiAgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgICAgICAgICAgQ0MqKQogCSAgICAjIFNHSSBDKysKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLWFsbCAtbXVsdGlnb3QgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLWFyIiwgd2hlcmUgIkNDIiBpcyB0aGUgSVJJWCBDKysgY29tcGlsZXIuICBUaGlzIGlzCkBAIC0yMDQxOSwxNyArMjEwOTAsMTcgQEAKIAkgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9JyRDQyAtYXIgLVdSLC11IC1vICRvbGRsaWIgJG9sZG9ianMnCiAJICAgIDs7CiAgICAgICAgICAgKikKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLQkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCisJICAgICAgaWYgdGVzdCBubyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkgICAgICBlbHNlCi0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgIC1vICRsaWInCiAJICAgICAgZmkKIAkgICAgZmkKIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCiAJICAgIDs7CiAgICAgICAgIGVzYWMKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06CiAgICAgICAgIGluaGVyaXRfcnBhdGhfQ1hYPXllcwogICAgICAgICA7OwpAQCAtMjA0NDIsOCArMjExMTMsOCBAQAogCSAgICAjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCiAJICAgICMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKIAkgICAgIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbXigpMC05QS1aYS16e31dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKLQkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW14oKTAtOUEtWmEtent9XVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR7dGVtcGV4dH1cLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9sczsgbXYgXCR0ZW1wbGliICRsaWInCisJICAgIGFyY2hpdmVfY21kc19DWFg9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW14oKTAtOUEtWmEtent9XVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR0ZW1wZXh0XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbXigpMC05QS1aYS16e31dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAkbGliIHwgJFNFRCAtZSAicy9cJHRlbXBleHRcLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYiAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHM7IG12IFwkdGVtcGxpYiAkbGliJwogCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgogCSAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KQEAgLTIwNDUyLDEwICsyMTEyMywxMCBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCi0JICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHdsLS1leHBvcnQtZHluYW1pYycKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLUJzdGF0aWMiLCB3aGVyZSAiQ0MiIGlzIHRoZSBLQUkgQysrIGNvbXBpbGVyLgpAQCAtMjA0NjksNTkgKzIxMTQwLDU5IEBACiAJICAgICMgZWFybGllciBkbyBub3QgYWRkIHRoZSBvYmplY3RzIHRoZW1zZWx2ZXMuCiAJICAgIGNhc2UgYCRDQyAtViAyPiYxYCBpbgogCSAgICAgICoiVmVyc2lvbiA3LiIqKQotCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JCWFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkJYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJCTs7CiAJICAgICAgKikgICMgVmVyc2lvbiA4LjAgb3IgbmV3ZXIKIAkgICAgICAgIHRtcF9pZHluPQogCSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkJICBpYTY0KikgdG1wX2lkeW49JyAtaV9keW5hbWljJzs7CiAJCWVzYWMKLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkJYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkJyIkdG1wX2lkeW4iJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJCWFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkJOzsKIAkgICAgZXNhYwogCSAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9bm8KLQkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPScke3dsfS0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCwkbGliZGlyJworCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1keW5hbWljJworCSAgICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9JyR3bC0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICAgIDs7CiAgICAgICAgICAgcGdDQyogfCBwZ2NwcCopCiAgICAgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIEMrKyBjb21waWxlcgogCSAgICBjYXNlIGAkQ0MgLVZgIGluCiAJICAgICpwZ0NDXCBbMS01XS4qIHwgKnBnY3BwXCBbMS01XS4qKQogCSAgICAgIHByZWxpbmtfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0JCXJtIC1yZiAkdHBsZGlyfgotCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0JCWNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCisgICAgICAgICAgICAgICBybSAtcmYgJHRwbGRpcn4KKyAgICAgICAgICAgICAgICRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KKyAgICAgICAgICAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCInCiAJICAgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0JCXJtIC1yZiAkdHBsZGlyfgotCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvbGRvYmpzJG9sZF9kZXBsaWJzfgotCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLQkJJFJBTkxJQiAkb2xkbGliJworICAgICAgICAgICAgICAgIHJtIC1yZiAkdHBsZGlyfgorICAgICAgICAgICAgICAgICRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CisgICAgICAgICAgICAgICAgJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CisgICAgICAgICAgICAgICAgJFJBTkxJQiAkb2xkbGliJwogCSAgICAgIGFyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0JCXJtIC1yZiAkdHBsZGlyfgotCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCisgICAgICAgICAgICAgICAgcm0gLXJmICR0cGxkaXJ+CisgICAgICAgICAgICAgICAgJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CisgICAgICAgICAgICAgICAgJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLQkJcm0gLXJmICR0cGxkaXJ+Ci0JCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgICAgICAgICAgIHJtIC1yZiAkdHBsZGlyfgorICAgICAgICAgICAgICAgICRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorICAgICAgICAgICAgICAgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCSAgICAgIDs7CiAJICAgICopICMgVmVyc2lvbiA2IGFuZCBhYm92ZSB1c2Ugd2VhayBzeW1ib2xzCi0JICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0JICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKIAkgICAgZXNhYwogCi0JICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS0tcnBhdGggJHt3bH0kbGliZGlyJwotCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtLXJwYXRoICR3bCRsaWJkaXInCisJICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR3bC0tZXhwb3J0LWR5bmFtaWMnCisJICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHdsLS13aG9sZS1hcmNoaXZlYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKICAgICAgICAgICAgIDs7CiAJICBjeHgqKQogCSAgICAjIENvbXBhcSBDKysKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgIC1vICRsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMnCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgIC1vICRsaWIgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzJwogCiAJICAgIHJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRICiAJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctcnBhdGggJGxpYmRpcicKQEAgLTIwNTM1LDE4ICsyMTIwNiwxOCBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiWCRsaXN0IiB8ICRYc2VkJwogCSAgICA7OwogCSAgeGwqIHwgbXBpeGwqIHwgYmd4bCopCiAJICAgICMgSUJNIFhMIDguMCBvbiBQUEMsIHdpdGggR05VIGxkCi0JICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0JICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1xbWtzaHJvYmogJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJworCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtLWV4cG9ydC1keW5hbWljJworCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXFta3Nocm9iaiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIGlmIHRlc3QgeWVzID0gIiRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciOyB0aGVuCiAJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JCWNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkJZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JCSRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS12ZXJzaW9uLXNjcmlwdCAke3dsfSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworICAgICAgICAgICAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgICAkQ0MgLXFta3Nocm9iaiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC12ZXJzaW9uLXNjcmlwdCAkd2wkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgICAgZmkKIAkgICAgOzsKIAkgICopCkBAIC0yMDU1NCwxMCArMjEyMjUsMTAgQEAKIAkgICAgKlN1blwgQyopCiAJICAgICAgIyBTdW4gQysrIDUuOQogCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nIC16ZGVmcycKLQkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0JICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzJworCSAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzJwogCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctUiRsaWJkaXInCi0JICAgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPScke3dsfS0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR7d2x9LS1uby13aG9sZS1hcmNoaXZlJworCSAgICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHdsLS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogCSAgICAgIGNvbXBpbGVyX25lZWRzX29iamVjdF9DWFg9eWVzCiAKIAkgICAgICAjIE5vdCBzdXJlIHdoZXRoZXIgc29tZXRoaW5nIGJhc2VkIG9uCkBAIC0yMDYxNSwyMiArMjEyODYsMTcgQEAKICAgICAgICAgbGRfc2hsaWJzX0NYWD15ZXMKIAk7OwogCi0gICAgICBvcGVuYnNkMiopCi0gICAgICAgICMgQysrIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGZhaXJseSBicm9rZW4KLQlsZF9zaGxpYnNfQ1hYPW5vCi0JOzsKLQotICAgICAgb3BlbmJzZCopCisgICAgICBvcGVuYnNkKiB8IGJpdHJpZyopCiAJaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KIAkgIGhhcmRjb2RlX2RpcmVjdF9DWFg9eWVzCiAJICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD1ubwogCSAgaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlX0NYWD15ZXMKIAkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJGxpYicKLQkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCi0JICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0JICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LUUnCi0JICAgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0iJHdsYXJjIictLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyIkd2xhcmMiJy0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8IGdyZXAgX19FTEZfX2AiOyB0aGVuCisJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtRScKKwkgICAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNfQ1hYPSR3bGFyYyctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJyR3bGFyYyctLW5vLXdob2xlLWFyY2hpdmUnCiAJICBmaQogCSAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9ZnVuY19lY2hvX2FsbAogCWVsc2UKQEAgLTIwNjQ2LDkgKzIxMzEyLDkgQEAKIAkgICAgIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQogCSAgICAjIGVuZHMgd2l0aCAiLnNvIiAob3IgIi5zbCIgZm9yIEhQLVVYKSwgc28gcmVuYW1lIHRoZSBsaWJyYXJ5CiAJICAgICMgdG8gaXRzIHByb3BlciBuYW1lICh3aXRoIHZlcnNpb24pIGFmdGVyIGxpbmtpbmcuCi0JICAgIGFyY2hpdmVfY21kc19DWFg9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW14oKTAtOUEtWmEtent9XVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gIiRsaWIiIHwgJFNFRCAtZSAicy9cJHt0ZW1wZXh0fVwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKKwkgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbXigpMC05QS1aYS16e31dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAiJGxpYiIgfCAkU0VEIC1lICJzL1wkdGVtcGV4dFwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliOyBtdiBcJHRlbXBsaWIgJGxpYicKIAotCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tcnBhdGgsJGxpYmRpcicKKwkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCwkbGliZGlyJwogCSAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWD06CiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCkBAIC0yMDY2NiwxNyArMjEzMzIsMTcgQEAKICAgICAgICAgICBjeHgqKQogCSAgICBjYXNlICRob3N0IGluCiAJICAgICAgb3NmMyopCi0JICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0JICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworCSAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogCQk7OwogCSAgICAgICopCiAJICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbXN5bSAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZX4KLQkgICAgICAgICAgZWNobyAiLWhpZGRlbiI+PiAkbGliLmV4cH4KLQkgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgJEVDSE8gIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGlifgotCSAgICAgICAgICAkUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICAgICBlY2hvICItaGlkZGVuIj4+ICRsaWIuZXhwfgorICAgICAgICAgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSAkd2wtaW5wdXQgJHdsJGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGlifgorICAgICAgICAgICAgICAgICAgJFJNICRsaWIuZXhwJwogCSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1ycGF0aCAkbGliZGlyJwogCQk7OwogCSAgICBlc2FjCkBAIC0yMDY5MSwyMSArMjEzNTcsMjEgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogCSAgKikKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwkgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdYWCwkd2l0aF9nbnVfbGQiOyB0aGVuCisJICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICAgIG9zZjMqKQotCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgICAqKQotCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtbXN5bSAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkJICA7OwogCSAgICAgIGVzYWMKIAotCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYPToKIAogCSAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKQEAgLTIwNzUxLDkgKzIxNDE3LDkgQEAKIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwogICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcwogCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCi0JICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAgICAgJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0tTSAke3dsfSRsaWIuZXhwIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAkd2wtTSAkd2wkbGliLmV4cCAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSctUiRsaWJkaXInCiAJICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPW5vCkBAIC0yMDc2MSw3ICsyMTQyNyw3IEBACiAJICAgICAgc29sYXJpczIuWzAtNV0gfCBzb2xhcmlzMi5bMC01XS4qKSA7OwogCSAgICAgICopCiAJCSMgVGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGNvbWJpbmUgYW5kIHJlb3JkZXIgbGlua2VyIG9wdGlvbnMsCi0JCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuCisJCSMgYnV0IHVuZGVyc3RhbmRzICcteiBsaW5rZXJfZmxhZycuCiAJICAgICAgICAjIFN1cHBvcnRlZCBzaW5jZSBTb2xhcmlzIDIuNiAobWF5YmUgMi41LjE/KQogCQl3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY19DWFg9Jy16IGFsbGV4dHJhY3QkY29udmVuaWVuY2UgLXogZGVmYXVsdGV4dHJhY3QnCiAJICAgICAgICA7OwpAQCAtMjA3NzgsMzAgKzIxNDQ0LDMwIEBACiAJICAgIDs7CiAgICAgICAgICAgZ2N4KikKIAkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliJwogCiAJICAgICMgVGhlIEMrKyBjb21waWxlciBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBhcmNoaXZlLgogCSAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nJENDICRMREZMQUdTIC1hcmNoaXZlIC1vICRvbGRsaWIgJG9sZG9ianMnCiAJICAgIDs7CiAgICAgICAgICAgKikKIAkgICAgIyBHTlUgQysrIGNvbXBpbGVyIHdpdGggU29sYXJpcyBsaW5rZXIKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCisJICAgIGlmIHRlc3QgeWVzLG5vID0gIiRHWFgsJHdpdGhfZ251X2xkIjsgdGhlbgorCSAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nICR3bC16ICR7d2x9ZGVmcycKIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWInCiAJICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICAgICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR3bC1NICR3bCRsaWIuZXhwICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgogCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGVsc2UKLQkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKKwkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgJy1HJyBOT1QgJy1zaGFyZWQnIG9uIHRoaXMKIAkgICAgICAgICMgcGxhdGZvcm0uCi0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLUcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JCSAgJENDIC1HIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICAgICAgICRDQyAtRyAtbm9zdGRsaWIgJHdsLU0gJHdsJGxpYi5leHAgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgpAQCAtMjA4MDksMTEgKzIxNDc1LDExIEBACiAJICAgICAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0nJENDIC1HICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGZpCiAKLQkgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tUiAkd2wkbGliZGlyJworCSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPSckd2wtUiAkd2wkbGliZGlyJwogCSAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KIAkJc29sYXJpczIuWzAtNV0gfCBzb2xhcmlzMi5bMC01XS4qKSA7OwogCQkqKQotCQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHt3bH0teiAke3dsfWFsbGV4dHJhY3QkY29udmVuaWVuY2UgJHt3bH0teiAke3dsfWRlZmF1bHRleHRyYWN0JworCQkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjX0NYWD0nJHdsLXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR3bC16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCiAJCSAgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCkBAIC0yMDgyMiw1MiArMjE0ODgsNTIgQEAKICAgICAgICAgOzsKIAogICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCi0gICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyR7d2x9LXosdGV4dCcKKyAgICAgIG5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nJHdsLXosdGV4dCcKICAgICAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD1ubwogICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFg9bm8KICAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKIAogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgQ0MqKQotCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1HICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogICAgICAgZXNhYwogICAgICAgOzsKIAogICAgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKLQkjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorCSMgTm90ZTogV2UgQ0FOTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKIAkjIGxpbmsgd2l0aCAtbGMsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGFueSBzeW1ib2xzIHVzZWQgZnJvbSBsaWJjIHRvCiAJIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCiAJIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAogCSMgdGhvdWdoLCB3aGljaCBkb2VzIGNhdGNoIHNvbWUgYmFkIHN5bWJvbHMgYnV0IGlzbid0IGFzIGhlYXZ5LWhhbmRlZAogCSMgYXMgLXogZGVmcy4KLQlub191bmRlZmluZWRfZmxhZ19DWFg9JyR7d2x9LXosdGV4dCcKLQlhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyR7d2x9LXosbm9kZWZzJworCW5vX3VuZGVmaW5lZF9mbGFnX0NYWD0nJHdsLXosdGV4dCcKKwlhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9JyR3bC16LG5vZGVmcycKIAlhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9bm8KIAloYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD1ubwotCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYPScke3dsfS1SLCRsaWJkaXInCisJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR3bC1SLCRsaWJkaXInCiAJaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcl9DWFg9JzonCiAJbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi0JZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tQmV4cG9ydCcKKwlleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPSckd2wtQmV4cG9ydCcKIAlydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIENDKikKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtRyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1UcHJlbGlua19vYmplY3RzICRvbGRvYmpzfgotCSAgICAgICciJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIgorICAgICAgICAgICAgICAnIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIKIAkgICAgcmVsb2FkX2NtZHNfQ1hYPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJHJlbG9hZF9vYmpzfgotCSAgICAgICciJHJlbG9hZF9jbWRzX0NYWCIKKyAgICAgICAgICAgICAgJyIkcmVsb2FkX2NtZHNfQ1hYIgogCSAgICA7OwogCSAgKikKLQkgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIDs7CiAJZXNhYwogICAgICAgOzsKQEAgLTIwODk5LDEwICsyMTU2NSwxMCBAQAogCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci0gICAgdGVzdCAiJGxkX3NobGlic19DWFgiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworICAgIHRlc3Qgbm8gPSAiJGxkX3NobGlic19DWFgiICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KIAotICAgIEdDQ19DWFg9IiRHWFgiCi0gICAgTERfQ1hYPSIkTEQiCisgICAgR0NDX0NYWD0kR1hYCisgICAgTERfQ1hYPSRMRAogCiAgICAgIyMgQ0FWRUFUIEVNUFRPUjoKICAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtMjA5NDYsMTMgKzIxNjEyLDEzIEBACiAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KIAogICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCi0gICAgY2FzZSAke3ByZXZ9JHtwfSBpbgorICAgIGNhc2UgJHByZXYkcCBpbgogCiAgICAgLUwqIHwgLVIqIHwgLWwqKQogICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCiAgICAgICAgIyBSZW1vdmUgdGhlIHNwYWNlLgotICAgICAgIGlmIHRlc3QgJHAgPSAiLUwiIHx8Ci0gICAgICAgICAgdGVzdCAkcCA9ICItUiI7IHRoZW4KKyAgICAgICBpZiB0ZXN0IHgtTCA9ICIkcCIgfHwKKyAgICAgICAgICB0ZXN0IHgtUiA9ICIkcCI7IHRoZW4KIAkgcHJldj0kcAogCSBjb250aW51ZQogICAgICAgIGZpCkBAIC0yMDk2OCwxNiArMjE2MzQsMTYgQEAKICAgICAgICBjYXNlICRwIGluCiAgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKICAgICAgICBlc2FjCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgY2FzZSAke3ByZXZ9IGluCisgICAgICAgaWYgdGVzdCBubyA9ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSI7IHRoZW4KKwkgY2FzZSAkcHJldiBpbgogCSAtTCB8IC1SKQogCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQogCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQogCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgogCSAgIGlmIHRlc3QgLXogIiRjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYIjsgdGhlbgotCSAgICAgY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWD0iJHtwcmV2fSR7cH0iCisJICAgICBjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYPSRwcmV2JHAKIAkgICBlbHNlCi0JICAgICBjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYPSIke2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aF9DWFh9ICR7cHJldn0ke3B9IgorCSAgICAgY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWD0iJHtjb21waWxlcl9saWJfc2VhcmNoX3BhdGhfQ1hYfSAkcHJldiRwIgogCSAgIGZpCiAJICAgOzsKIAkgIyBUaGUgIi1sIiBjYXNlIHdvdWxkIG5ldmVyIGNvbWUgYmVmb3JlIHRoZSBvYmplY3QgYmVpbmcKQEAgLTIwOTg1LDkgKzIxNjUxLDkgQEAKIAkgZXNhYwogICAgICAgIGVsc2UKIAkgaWYgdGVzdCAteiAiJHBvc3RkZXBzX0NYWCI7IHRoZW4KLQkgICBwb3N0ZGVwc19DWFg9IiR7cHJldn0ke3B9IgorCSAgIHBvc3RkZXBzX0NYWD0kcHJldiRwCiAJIGVsc2UKLQkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAke3ByZXZ9JHtwfSIKKwkgICBwb3N0ZGVwc19DWFg9IiR7cG9zdGRlcHNfQ1hYfSAkcHJldiRwIgogCSBmaQogICAgICAgIGZpCiAgICAgICAgcHJldj0KQEAgLTIxMDAyLDE1ICsyMTY2OCwxNSBAQAogCSBjb250aW51ZQogICAgICAgIGZpCiAKLSAgICAgICBpZiB0ZXN0ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSIgPSBubzsgdGhlbgorICAgICAgIGlmIHRlc3Qgbm8gPSAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiOyB0aGVuCiAJIGlmIHRlc3QgLXogIiRwcmVkZXBfb2JqZWN0c19DWFgiOyB0aGVuCi0JICAgcHJlZGVwX29iamVjdHNfQ1hYPSIkcCIKKwkgICBwcmVkZXBfb2JqZWN0c19DWFg9JHAKIAkgZWxzZQogCSAgIHByZWRlcF9vYmplY3RzX0NYWD0iJHByZWRlcF9vYmplY3RzX0NYWCAkcCIKIAkgZmkKICAgICAgICBlbHNlCiAJIGlmIHRlc3QgLXogIiRwb3N0ZGVwX29iamVjdHNfQ1hYIjsgdGhlbgotCSAgIHBvc3RkZXBfb2JqZWN0c19DWFg9IiRwIgorCSAgIHBvc3RkZXBfb2JqZWN0c19DWFg9JHAKIAkgZWxzZQogCSAgIHBvc3RkZXBfb2JqZWN0c19DWFg9IiRwb3N0ZGVwX29iamVjdHNfQ1hYICRwIgogCSBmaQpAQCAtMjEwNDAsNTEgKzIxNzA2LDYgQEAKICAgcG9zdGRlcF9vYmplY3RzX0NYWD0KICAgcG9zdGRlcHNfQ1hYPQogICA7OwotCi1saW51eCopCi0gIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgotICAqU3VuXCBDKikKLSAgICAjIFN1biBDKysgNS45Ci0KLSAgICAjIFRoZSBtb3JlIHN0YW5kYXJkcy1jb25mb3JtaW5nIHN0bHBvcnQ0IGxpYnJhcnkgaXMKLSAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi0gICAgIyAtbGlicmFyeT1zdGxwb3J0NCBkZXBlbmRzIG9uIGl0LgotICAgIGNhc2UgIiAkQ1hYICRDWFhGTEFHUyAiIGluCi0gICAgKiIgLWxpYnJhcnk9c3RscG9ydDQgIiopCi0gICAgICBzb2xhcmlzX3VzZV9zdGxwb3J0ND15ZXMKLSAgICAgIDs7Ci0gICAgZXNhYwotCi0gICAgaWYgdGVzdCAiJHNvbGFyaXNfdXNlX3N0bHBvcnQ0IiAhPSB5ZXM7IHRoZW4KLSAgICAgIHBvc3RkZXBzX0NYWD0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1zb2xhcmlzKikKLSAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgQ0MqIHwgc3VuQ0MqKQotICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLSAgICAjIC1saWJyYXJ5PXN0bHBvcnQ0IGRlcGVuZHMgb24gaXQuCi0gICAgY2FzZSAiICRDWFggJENYWEZMQUdTICIgaW4KLSAgICAqIiAtbGlicmFyeT1zdGxwb3J0NCAiKikKLSAgICAgIHNvbGFyaXNfdXNlX3N0bHBvcnQ0PXllcwotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICAjIEFkZGluZyB0aGlzIHJlcXVpcmVzIGEga25vd24tZ29vZCBzZXR1cCBvZiBzaGFyZWQgbGlicmFyaWVzIGZvcgotICAgICMgU3VuIGNvbXBpbGVyIHZlcnNpb25zIGJlZm9yZSA1LjYsIGVsc2UgUElDIG9iamVjdHMgZnJvbSBhbiBvbGQKLSAgICAjIGFyY2hpdmUgd2lsbCBiZSBsaW5rZWQgaW50byB0aGUgb3V0cHV0LCBsZWFkaW5nIHRvIHN1YnRsZSBidWdzLgotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBwb3N0ZGVwc19DWFg9Jy1saWJyYXJ5PUNzdGQgLWxpYnJhcnk9Q3J1bicKLSAgICBmaQotICAgIDs7Ci0gIGVzYWMKLSAgOzsKIGVzYWMKIAogCkBAIC0yMTA5Myw3ICsyMTcxNCw3IEBACiBlc2FjCiAgY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0KIGlmIHRlc3QgLW4gIiR7Y29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWH0iOyB0aGVuCi0gY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD1gZWNobyAiICR7Y29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWH0iIHwgJHtTRUR9IC1lICdzISAtTCEgIWcnIC1lICdzIV4gISEnYAorIGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc19DWFg9YGVjaG8gIiAke2NvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aF9DWFh9IiB8ICRTRUQgLWUgJ3MhIC1MISAhZycgLWUgJ3MhXiAhISdgCiBmaQogCiAKQEAgLTIxMTMyLDE3ICsyMTc1MywxOCBAQAogCiAKICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgotICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkR1hYIjsgdGhlbgogICAgIGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSctV2wsJwogICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nLXN0YXRpYycKIAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBhaXgqKQogICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJwogICAgICAgZmkKKyAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLWZQSUMnCiAgICAgICA7OwogCiAgICAgYW1pZ2FvcyopCkBAIC0yMTE1Myw4ICsyMTc3NSw4IEBACiAgICAgICAgIDs7CiAgICAgICBtNjhrKQogICAgICAgICAgICAgIyBGSVhNRTogd2UgbmVlZCBhdCBsZWFzdCA2ODAyMCBjb2RlIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXMsIGJ1dAotICAgICAgICAgICAgIyBhZGRpbmcgdGhlIGAtbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCi0gICAgICAgICAgICAjIGxpa2UgYC1tNjgwNDAnLgorICAgICAgICAgICAgIyBhZGRpbmcgdGhlICctbTY4MDIwJyBmbGFnIHRvIEdDQyBwcmV2ZW50cyBidWlsZGluZyBhbnl0aGluZyBiZXR0ZXIsCisgICAgICAgICAgICAjIGxpa2UgJy1tNjgwNDAnLgogICAgICAgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctbTY4MDIwIC1yZXNpZGVudDMyIC1tYWx3YXlzLXJlc3RvcmUtYTQnCiAgICAgICAgIDs7CiAgICAgICBlc2FjCkBAIC0yMTE2OSw2ICsyMTc5MSwxMSBAQAogICAgICAgIyBBbHRob3VnaCB0aGUgY3lnd2luIGdjYyBpZ25vcmVzIC1mUElDLCBzdGlsbCBuZWVkIHRoaXMgZm9yIG9sZC1zdHlsZQogICAgICAgIyAoLS1kaXNhYmxlLWF1dG8taW1wb3J0KSBsaWJyYXJpZXMKICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLURETExfRVhQT1JUJworICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgb3MyKikKKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9JyR3bC1zdGF0aWMnCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKICAgICAgICMgUElDIGlzIHRoZSBkZWZhdWx0IG9uIHRoaXMgcGxhdGZvcm0KQEAgLTIxMjE4LDcgKzIxODQ1LDcgQEAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXhbNC05XSopCiAJIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkgICMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCiAJICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJwogCWVsc2UKQEAgLTIxMjU4LDE0ICsyMTg4NSwxNCBAQAogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAJICBDQyopCiAJICAgIGx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSctV2wsJwotCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJwotCSAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KKwkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSckd2wtYSAke3dsfWFyY2hpdmUnCisJICAgIGlmIHRlc3QgaWE2NCAhPSAiJGhvc3RfY3B1IjsgdGhlbgogCSAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nK1onCiAJICAgIGZpCiAJICAgIDs7CiAJICBhQ0MqKQogCSAgICBsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nLVdsLCcKLQkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPScke3dsfS1hICR7d2x9YXJjaGl2ZScKKwkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSckd2wtYSAke3dsfWFyY2hpdmUnCiAJICAgIGNhc2UgJGhvc3RfY3B1IGluCiAJICAgIGhwcGEqNjQqfGlhNjQqKQogCSAgICAgICMgK1ogdGhlIGRlZmF1bHQKQEAgLTIxMzAyLDcgKzIxOTI5LDcgQEAKIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctZlBJQycKIAkgICAgOzsKIAkgIGVjcGMqICkKLQkgICAgIyBvbGQgSW50ZWwgQysrIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgorCSAgICAjIG9sZCBJbnRlbCBDKysgZm9yIHg4Nl82NCwgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogCSAgICBsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nLVdsLCcKIAkgICAgbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctS1BJQycKIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctc3RhdGljJwpAQCAtMjE0NDcsNyArMjIwNzQsNyBAQAogICBmaQogCiBjYXNlICRob3N0X29zIGluCi0gICMgRm9yIHBsYXRmb3JtcyB3aGljaCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgorICAjIEZvciBwbGF0Zm9ybXMgdGhhdCBkbyBub3Qgc3VwcG9ydCBQSUMsIC1EUElDIGlzIG1lYW5pbmdsZXNzOgogICAqZGpncHAqKQogICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KICAgICA7OwpAQCAtMjE0NzksNyArMjIxMDYsNyBAQAogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrc19DWFg9bm8KICAgIGFjX291dGZpbGU9Y29uZnRlc3QuJGFjX29iamV4dAogICAgZWNobyAiJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIgPiBjb25mdGVzdC4kYWNfZXh0Ci0gICBsdF9jb21waWxlcl9mbGFnPSIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIC1EUElDIgorICAgbHRfY29tcGlsZXJfZmxhZz0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIgICMjIGV4Y2x1ZGUgZnJvbSBzY191c2VsZXNzX3F1b3Rlc19pbl9hc3NpZ25tZW50CiAgICAjIEluc2VydCB0aGUgb3B0aW9uIGVpdGhlciAoMSkgYWZ0ZXIgdGhlIGxhc3QgKkZMQUdTIHZhcmlhYmxlLCBvcgogICAgIyAoMikgYmVmb3JlIGEgd29yZCBjb250YWluaW5nICJjb25mdGVzdC4iLCBvciAoMykgYXQgdGhlIGVuZC4KICAgICMgTm90ZSB0aGF0ICRhY19jb21waWxlIGl0c2VsZiBkb2VzIG5vdCBjb250YWluIGJhY2tzbGFzaGVzIGFuZCBiZWdpbnMKQEAgLTIxNTA5LDcgKzIyMTM2LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3NfQ1hYIiA+JjUKICRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfd29ya3NfQ1hYIiA+JjY7IH0KIAotaWYgdGVzdCB4IiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY193b3Jrc19DWFgiID0geHllczsgdGhlbgoraWYgdGVzdCB5ZXMgPSAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX3dvcmtzX0NYWCI7IHRoZW4KICAgICBjYXNlICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggaW4KICAgICAgIiIgfCAiICIqKSA7OwogICAgICAqKSBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiAkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA7OwpAQCAtMjE1MzUsNyArMjIxNjIsNyBAQAogICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgogZWxzZQogICBsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrc19DWFg9bm8KLSAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICBzYXZlX0xERkxBR1M9JExERkxBR1MKICAgIExERkxBR1M9IiRMREZMQUdTICRsdF90bXBfc3RhdGljX2ZsYWciCiAgICBlY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKICAgIGlmIChldmFsICRhY19saW5rIDI+Y29uZnRlc3QuZXJyKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dDsgdGhlbgpAQCAtMjE1NTQsMTMgKzIyMTgxLDEzIEBACiAgICAgIGZpCiAgICBmaQogICAgJFJNIC1yIGNvbmZ0ZXN0KgotICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKyAgIExERkxBR1M9JHNhdmVfTERGTEFHUwogCiBmaQogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrc19DWFgiID4mNQogJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3N0YXRpY193b3Jrc19DWFgiID4mNjsgfQogCi1pZiB0ZXN0IHgiJGx0X2N2X3Byb2dfY29tcGlsZXJfc3RhdGljX3dvcmtzX0NYWCIgPSB4eWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9zdGF0aWNfd29ya3NfQ1hYIjsgdGhlbgogICAgIDoKIGVsc2UKICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9CkBAIC0yMTY3NCw4ICsyMjMwMSw4IEBACiAKIAogCi1oYXJkX2xpbmtzPSJub3R0ZXN0ZWQiCi1pZiB0ZXN0ICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiA9IG5vICYmIHRlc3QgIiRuZWVkX2xvY2tzIiAhPSBubzsgdGhlbgoraGFyZF9saW5rcz1ub3R0ZXN0ZWQKK2lmIHRlc3Qgbm8gPSAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgJiYgdGVzdCBubyAhPSAiJG5lZWRfbG9ja3MiOyB0aGVuCiAgICMgZG8gbm90IG92ZXJ3cml0ZSB0aGUgdmFsdWUgb2YgbmVlZF9sb2NrcyBwcm92aWRlZCBieSB0aGUgdXNlcgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmIHdlIGNhbiBsb2NrIHdpdGggaGFyZCBsaW5rcyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBpZiB3ZSBjYW4gbG9jayB3aXRoIGhhcmQgbGlua3MuLi4gIiA+JjY7IH0KQEAgLTIxNjg3LDkgKzIyMzE0LDkgQEAKICAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+L2Rldi9udWxsICYmIGhhcmRfbGlua3M9bm8KICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXJkX2xpbmtzIiA+JjUKICRhc19lY2hvICIkaGFyZF9saW5rcyIgPiY2OyB9Ci0gIGlmIHRlc3QgIiRoYXJkX2xpbmtzIiA9IG5vOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBcYCRDQycgZG9lcyBub3Qgc3VwcG9ydCBcYC1jIC1vJywgc28gXGBtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFxgJENDJyBkb2VzIG5vdCBzdXBwb3J0IFxgLWMgLW8nLCBzbyBcYG1ha2UgLWonIG1heSBiZSB1bnNhZmUiID4mMjt9CisgIGlmIHRlc3Qgbm8gPSAiJGhhcmRfbGlua3MiOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAnJENDJyBkb2VzIG5vdCBzdXBwb3J0ICctYyAtbycsIHNvICdtYWtlIC1qJyBtYXkgYmUgdW5zYWZlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICckQ0MnIGRvZXMgbm90IHN1cHBvcnQgJy1jIC1vJywgc28gJ21ha2UgLWonIG1heSBiZSB1bnNhZmUiID4mMjt9CiAgICAgbmVlZF9sb2Nrcz13YXJuCiAgIGZpCiBlbHNlCkBAIC0yMTcwNiwxNyArMjIzMzMsMjEgQEAKICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXhbNC05XSopCiAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi0gICAgIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQotICAgICMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkCi0gICAgIyBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KKyAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEdOVSBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHRvIEFJWCBubS4KKyAgICAjIFdpdGhvdXQgdGhlICItbCIgb3B0aW9uLCBvciB3aXRoIHRoZSAiLUIiIG9wdGlvbiwgQUlYIG5tIHRyZWF0cworICAgICMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzCisgICAgIyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCisgICAgIyBXaGlsZSB0aGUgJ3dlYWsnIGtleXdvcmQgaXMgaWdub3JlZCBpbiB0aGUgRXhwb3J0IEZpbGUsIHdlIG5lZWQKKyAgICAjIGl0IGluIHRoZSBJbXBvcnQgRmlsZSBmb3IgdGhlICdhaXgtc29uYW1lJyBmZWF0dXJlLCBzbyB3ZSBoYXZlCisgICAgIyB0byByZXBsYWNlIHRoZSAiLUIiIG9wdGlvbiB3aXRoICItUCIgZm9yIEFJWCBubS4KICAgICBpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKHN1YnN0cihcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAtQnBnICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikpICYmIChzdWJzdHIoXCQgMywxLDEpICE9ICIuIikpIHsgaWYgKFwkIDIgPT0gIlciKSB7IHByaW50IFwkIDMgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAzIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAgICAgZWxzZQotICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKHN1YnN0cihcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworICAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2BmdW5jX2VjaG9fYWxsICROTSB8ICRTRUQgLWUgJ1wnJ3MvQlwoW15CXSpcKSQvUFwxLydcJydgIC1QQ3BnbCAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpIHx8IChcJCAyID09ICJWIikgfHwgKFwkIDIgPT0gIloiKSkgJiYgKHN1YnN0cihcJCAxLDEsMSkgIT0gIi4iKSkgeyBpZiAoKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpIHsgcHJpbnQgXCQgMSAiIHdlYWsiIH0gZWxzZSB7IHByaW50IFwkIDEgfSB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBmaQogICAgIDs7CiAgIHB3MzIqKQotICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSIkbHRkbGxfY21kcyIKKyAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0kbHRkbGxfY21kcwogICAgIDs7CiAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCiAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTIxNzM5LDcgKzIyMzcwLDcgQEAKIAogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsZF9zaGxpYnNfQ1hYIiA+JjUKICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9Ci10ZXN0ICIkbGRfc2hsaWJzX0NYWCIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCit0ZXN0IG5vID0gIiRsZF9zaGxpYnNfQ1hYIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIHdpdGhfZ251X2xkX0NYWD0kd2l0aF9nbnVfbGQKIApAQCAtMjE3NTYsNyArMjIzODcsNyBAQAogICAjIEFzc3VtZSAtbGMgc2hvdWxkIGJlIGFkZGVkCiAgIGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWD15ZXMKIAotICBpZiB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgJiYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMseWVzID0gIiRHQ0MsJGVuYWJsZV9zaGFyZWQiOyB0aGVuCiAgICAgY2FzZSAkYXJjaGl2ZV9jbWRzX0NYWCBpbgogICAgIConficqKQogICAgICAgIyBGSVhNRTogd2UgbWF5IGhhdmUgdG8gZGVhbCB3aXRoIG11bHRpLWNvbW1hbmQgc2VxdWVuY2VzLgpAQCAtMjE4ODQsNyArMjI1MTUsNyBAQAogbGlicmFyeV9uYW1lc19zcGVjPQogbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKIHNvbmFtZV9zcGVjPQotc2hyZXh0X2NtZHM9Ii5zbyIKK3NocmV4dF9jbWRzPS5zbwogcG9zdGluc3RhbGxfY21kcz0KIHBvc3R1bmluc3RhbGxfY21kcz0KIGZpbmlzaF9jbWRzPQpAQCAtMjE5MDEsMTQgKzIyNTMyLDE2IEBACiAjIGZsYWdzIHRvIGJlIGxlZnQgd2l0aG91dCBhcmd1bWVudHMKIG5lZWRfdmVyc2lvbj11bmtub3duCiAKKworCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCiAgICMgQUlYIDMgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gd2UgYXBwZW5kIGEgbWFqb3IgdmVyc2lvbiB0byB0aGUgbmFtZS4KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgOzsKIAogYWl4WzQtOV0qKQpAQCAtMjE5MTYsNDEgKzIyNTQ5LDkxIEBACiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBlbHNlCiAgICAgIyBXaXRoIEdDQyB1cCB0byAyLjk1LngsIGNvbGxlY3QyIHdvdWxkIGNyZWF0ZSBhbiBpbXBvcnQgZmlsZQogICAgICMgZm9yIGRlcGVuZGVuY2UgbGlicmFyaWVzLiAgVGhlIGltcG9ydCBmaWxlIHdvdWxkIHN0YXJ0IHdpdGgKLSAgICAjIHRoZSBsaW5lIGAjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCi0gICAgIyBkZXBlbmQgb24gYC4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KKyAgICAjIHRoZSBsaW5lICcjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCisgICAgIyBkZXBlbmQgb24gJy4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KICAgICAjIGRldmVsb3BtZW50IHNuYXBzaG90cyBvZiBHQ0MgcHJpb3IgdG8gMy4wLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeDQgfCBhaXg0LlswMV0gfCBhaXg0LlswMV0uKikKICAgICAgIGlmIHsgZWNobyAnI2lmIF9fR05VQ19fID4gMiB8fCAoX19HTlVDX18gPT0gMiAmJiBfX0dOVUNfTUlOT1JfXyA+PSA5NyknCiAJICAgZWNobyAnIHllcyAnCi0JICAgZWNobyAnI2VuZGlmJzsgfSB8ICR7Q0N9IC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KKwkgICBlY2hvICcjZW5kaWYnOyB9IHwgJENDIC1FIC0gfCAkR1JFUCB5ZXMgPiAvZGV2L251bGw7IHRoZW4KIAk6CiAgICAgICBlbHNlCiAJY2FuX2J1aWxkX3NoYXJlZD1ubwogICAgICAgZmkKICAgICAgIDs7CiAgICAgZXNhYwotICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW4gbm90IGhhcmRjb2RlIGNvcnJlY3QKKyAgICAjIFVzaW5nIEltcG9ydCBGaWxlcyBhcyBhcmNoaXZlIG1lbWJlcnMsIGl0IGlzIHBvc3NpYmxlIHRvIHN1cHBvcnQKKyAgICAjIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgb2Ygc2hhcmVkIGxpYnJhcnkgYXJjaGl2ZXMgb24gQUlYLiBXaGlsZQorICAgICMgdGhpcyB3b3VsZCB3b3JrIGZvciBib3RoIHdpdGggYW5kIHdpdGhvdXQgcnVudGltZSBsaW5raW5nLCBpdCB3aWxsCisgICAgIyBwcmV2ZW50IHN0YXRpYyBsaW5raW5nIG9mIHN1Y2ggYXJjaGl2ZXMuIFNvIHdlIGRvIGZpbGVuYW1lLWJhc2VkCisgICAgIyBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIHdpdGggLnNvIGV4dGVuc2lvbiBvbmx5LCB3aGljaCBpcyB1c2VkCisgICAgIyB3aGVuIGJvdGggcnVudGltZSBsaW5raW5nIGFuZCBzaGFyZWQgbGlua2luZyBpcyBlbmFibGVkLgorICAgICMgVW5mb3J0dW5hdGVseSwgcnVudGltZSBsaW5raW5nIG1heSBpbXBhY3QgcGVyZm9ybWFuY2UsIHNvIHdlIGRvCisgICAgIyBub3Qgd2FudCB0aGlzIHRvIGJlIHRoZSBkZWZhdWx0IGV2ZW50dWFsbHkuIEFsc28sIHdlIHVzZSB0aGUKKyAgICAjIHZlcnNpb25lZCAuc28gbGlicyBmb3IgZXhlY3V0YWJsZXMgb25seSBpZiB0aGVyZSBpcyB0aGUgLWJydGwKKyAgICAjIGxpbmtlciBmbGFnIGluIExERkxBR1MgYXMgd2VsbCwgb3IgLS13aXRoLWFpeC1zb25hbWU9c3ZyNCBvbmx5LgorICAgICMgVG8gYWxsb3cgZm9yIGZpbGVuYW1lLWJhc2VkIHZlcnNpb25pbmcgc3VwcG9ydCwgd2UgbmVlZCB0byBjcmVhdGUKKyAgICAjIGxpYk5BTUUuc28uViBhcyBhbiBhcmNoaXZlIGZpbGUsIGNvbnRhaW5pbmc6CisgICAgIyAqKSBhbiBJbXBvcnQgRmlsZSwgcmVmZXJyaW5nIHRvIHRoZSB2ZXJzaW9uZWQgZmlsZW5hbWUgb2YgdGhlCisgICAgIyAgICBhcmNoaXZlIGFzIHdlbGwgYXMgdGhlIHNoYXJlZCBhcmNoaXZlIG1lbWJlciwgdGVsbGluZyB0aGUKKyAgICAjICAgIGJpdHdpZHRoICgzMiBvciA2NCkgb2YgdGhhdCBzaGFyZWQgb2JqZWN0LCBhbmQgcHJvdmlkaW5nIHRoZQorICAgICMgICAgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzIG9mIHRoYXQgc2hhcmVkIG9iamVjdCwgZXZlbnR1YWxseQorICAgICMgICAgZGVjb3JhdGVkIHdpdGggdGhlICd3ZWFrJyBrZXl3b3JkCisgICAgIyAqKSB0aGUgc2hhcmVkIG9iamVjdCB3aXRoIHRoZSBGX0xPQURPTkxZIGZsYWcgc2V0LCB0byByZWFsbHkgYXZvaWQKKyAgICAjICAgIGl0IGJlaW5nIHNlZW4gYnkgdGhlIGxpbmtlci4KKyAgICAjIEF0IHJ1biB0aW1lIHdlIGJldHRlciB1c2UgdGhlIHJlYWwgZmlsZSByYXRoZXIgdGhhbiBhbm90aGVyIHN5bWxpbmssCisgICAgIyBidXQgZm9yIGxpbmsgdGltZSB3ZSBjcmVhdGUgdGhlIHN5bWxpbmsgbGliTkFNRS5zbyAtPiBsaWJOQU1FLnNvLlYKKworICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICMgQUlYIChvbiBQb3dlciopIGhhcyBubyB2ZXJzaW9uaW5nIHN1cHBvcnQsIHNvIGN1cnJlbnRseSB3ZSBjYW5ub3QgaGFyZGNvZGUgY29ycmVjdAogICAgICMgc29uYW1lIGludG8gZXhlY3V0YWJsZS4gUHJvYmFibHkgd2UgY2FuIGFkZCB2ZXJzaW9uaW5nIHN1cHBvcnQgdG8KICAgICAjIGNvbGxlY3QyLCBzbyBhZGRpdGlvbmFsIGxpbmtzIGNhbiBiZSB1c2VmdWwgaW4gZnV0dXJlLgotICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorICAgIGFpeCx5ZXMpICMgdHJhZGl0aW9uYWwgbGlidG9vbAorICAgICAgZHluYW1pY19saW5rZXI9J0FJWCB1bnZlcnNpb25hYmxlIGxpYi5zbycKICAgICAgICMgSWYgdXNpbmcgcnVuIHRpbWUgbGlua2luZyAob24gQUlYIDQuMiBvciBsYXRlcikgdXNlIGxpYjxuYW1lPi5zbwogICAgICAgIyBpbnN0ZWFkIG9mIGxpYjxuYW1lPi5hIHRvIGxldCBwZW9wbGUga25vdyB0aGF0IHRoZXNlIGFyZSBub3QKICAgICAgICMgdHlwaWNhbCBBSVggc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIGVsc2UKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIDs7CisgICAgYWl4LG5vKSAjIHRyYWRpdGlvbmFsIEFJWCBvbmx5CisgICAgICBkeW5hbWljX2xpbmtlcj0nQUlYIGxpYi5hKGxpYi5zby5WKScKICAgICAgICMgV2UgcHJlc2VydmUgLmEgYXMgZXh0ZW5zaW9uIGZvciBzaGFyZWQgbGlicmFyaWVzIHRocm91Z2ggQUlYNC4yCiAgICAgICAjIGFuZCBsYXRlciB3aGVuIHdlIGFyZSBub3QgZG9pbmcgcnVuIHRpbWUgbGlua2luZy4KLSAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0uYSAkbGlibmFtZS5hJwotICAgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgICBmaQorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlLmEgJGxpYm5hbWUuYScKKyAgICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgICAgICA7OworICAgIHN2cjQsKikgIyBmdWxsIHN2cjQgb25seQorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubykiCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgICAgIyBXZSBkbyBub3Qgc3BlY2lmeSBhIHBhdGggaW4gSW1wb3J0IEZpbGVzLCBzbyBMSUJQQVRIIGZpcmVzLgorICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgICAgOzsKKyAgICAqLHllcykgIyBib3RoLCBwcmVmZXIgc3ZyNAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVigkc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyksIGxpYi5hKGxpYi5zby5WKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICAjIHVucHJlZmVycmVkIHNoYXJlZGxpYiBsaWJOQU1FLmEgbmVlZHMgZXh0cmEgaGFuZGxpbmcKKyAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J3Rlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9IiRyZWFsbmFtZSJ+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRsaW5rbmFtZSJ+JGluc3RhbGxfc2hhcmVkX3Byb2cgIiRkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0IiAiJGRlc3RkaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0In50ZXN0IC16ICIkdHN0cmlwbWUiIHx8IHRlc3QgLXogIiRzdHJpcGxpYiIgfHwgJHN0cmlwbGliICIkZGVzdGRpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LiRsaWJleHQiJworICAgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdmb3IgbiBpbiAkbGlicmFyeV9uYW1lcyAkb2xkX2xpYnJhcnk7IGRvIDo7IGRvbmV+ZnVuY19zdHJpcG5hbWUgIiIgIi5zbyIgIiRuIn50ZXN0ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IiA9ICIkbiIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuJGxpYmV4dCInCisgICAgICAjIFdlIGRvIG5vdCBzcGVjaWZ5IGEgcGF0aCBpbiBJbXBvcnQgRmlsZXMsIHNvIExJQlBBVEggZmlyZXMuCisgICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgICAgICA7OworICAgICosbm8pICMgYm90aCwgcHJlZmVyIGFpeAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuYShsaWIuc28uViksIGxpYi5zby5WKCRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vKSIKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZS5hICRsaWJuYW1lLmEnCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICAgICAgIyB1bnByZWZlcnJlZCBzaGFyZWRsaWIgbGliTkFNRS5zby5WIGFuZCBzeW1saW5rIGxpYk5BTUUuc28gbmVlZCBleHRyYSBoYW5kbGluZworICAgICAgcG9zdGluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgJGluc3RhbGxfc2hhcmVkX3Byb2cgJGRpci8kZGxuYW1lICRkZXN0ZGlyLyRkbG5hbWV+dGVzdCAteiAiJHRzdHJpcG1lIiB8fCB0ZXN0IC16ICIkc3RyaXBsaWIiIHx8ICRzdHJpcGxpYiAkZGVzdGRpci8kZGxuYW1lfnRlc3QgLW4gIiRsaW5rbmFtZSIgfHwgbGlua25hbWU9JHJlYWxuYW1lfmZ1bmNfc3RyaXBuYW1lICIiICIuYSIgIiRsaW5rbmFtZSJ+KGNkICIkZGVzdGRpciIgJiYgJExOX1MgLWYgJGRsbmFtZSAkZnVuY19zdHJpcG5hbWVfcmVzdWx0LnNvKScKKyAgICAgIHBvc3R1bmluc3RhbGxfY21kcz0ndGVzdCAteiAiJGRsbmFtZSIgfHwgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRkbG5hbWUifmZvciBuIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8gOjsgZG9uZX5mdW5jX3N0cmlwbmFtZSAiIiAiLmEiICIkbiJ+ZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuc28iJworICAgICAgOzsKKyAgICBlc2FjCiAgICAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICiAgIGZpCiAgIDs7CkBAIC0yMTk2MCwxOCArMjI2NDMsMTggQEAKICAgcG93ZXJwYykKICAgICAjIFNpbmNlIEp1bHkgMjAwNyBBbWlnYU9TNCBvZmZpY2lhbGx5IHN1cHBvcnRzIC5zbyBsaWJyYXJpZXMuCiAgICAgIyBXaGVuIGNvbXBpbGluZyB0aGUgZXhlY3V0YWJsZSwgYWRkIC11c2UtZHlubGQgLUxzb2JqczogdG8gdGhlIGNvbXBpbGVsaW5lLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICA7OwogICBtNjhrKQogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuaXhsaWJyYXJ5ICRsaWJuYW1lLmEnCiAgICAgIyBDcmVhdGUgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSBlbnRyaWVzIGluIC9zeXMvbGlicy4KLSAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyB0ZXN0ICRSTSAvc3lzL2xpYnMvJHtsaWJuYW1lfV9peGxpYnJhcnkuYTsgJHNob3cgImNkIC9zeXMvbGlicyAmJiAkTE5fUyAkbGliICR7bGlibmFtZX1faXhsaWJyYXJ5LmEiOyBjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIHx8IGV4aXQgMTsgZG9uZScKKyAgICBmaW5pc2hfZXZhbD0nZm9yIGxpYiBpbiBgbHMgJGxpYmRpci8qLml4bGlicmFyeSAyPi9kZXYvbnVsbGA7IGRvIGxpYm5hbWU9YGZ1bmNfZWNob19hbGwgIiRsaWIiIHwgJFNFRCAnXCcncyVeLiovXChbXi9dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwogCiBiZW9zKikKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaGFyZWRfZXh0JwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgIDs7CkBAIC0yMTk3OSw4ICsyMjY2Miw4IEBACiBic2RpWzQ1XSopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvWDExL2xpYiAvdXNyL2NvbnRyaWIvbGliIC9saWIgL3Vzci9sb2NhbC9saWIiCkBAIC0yMTk5Miw3ICsyMjY3NSw3IEBACiAKIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKICAgdmVyc2lvbl90eXBlPXdpbmRvd3MKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHNocmV4dF9jbWRzPS5kbGwKICAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogCkBAIC0yMjAwMSw4ICsyMjY4NCw4IEBACiAgICAgIyBnY2MKICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwogICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJGZpbGVgfgorICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CiAgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CiAgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KICAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZX4KQEAgLTIyMDE4LDE2ICsyMjcwMSwxNiBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCi0gICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJGxpYm5hbWUgfCBzZWQgLWUgJ3MvXmxpYi9jeWcvJ2BgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogCiAgICAgICA7OwogICAgIG1pbmd3KiB8IGNlZ2NjKikKICAgICAgICMgTWluR1cgRExMcyB1c2UgdHJhZGl0aW9uYWwgJ2xpYicgcHJlZml4Ci0gICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWVgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogICAgICAgOzsKICAgICBwdzMyKikKICAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAkbGlibmFtZSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKICAgICAgIDs7CiAgICAgZXNhYwogICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCkBAIC0yMjAzNiw4ICsyMjcxOSw4IEBACiAgICosY2wqKQogICAgICMgTmF0aXZlIE1TVkMKICAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWVgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmxpYicKIAogICAgIGNhc2UgJGJ1aWxkX29zIGluCiAgICAgbWluZ3cqKQpAQCAtMjIwNjQsNyArMjI3NDcsNyBAQAogICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKICAgICAgIDs7CiAgICAgKikKLSAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kTElCCiAgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KICAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KICAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKQEAgLTIyMDc3LDggKzIyNzYwLDggQEAKICAgICBlc2FjCiAKICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0gICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCRmaWxlYH4KKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCRiYXNlX2ZpbGUnXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgogICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgogICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CiAgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCkBAIC0yMjA5MSw3ICsyMjc3NCw3IEBACiAKICAgKikKICAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1suXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCAkbGlibmFtZS5saWInCiAgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgICA7OwogICBlc2FjCkBAIC0yMjEwNCw4ICsyMjc4Nyw4IEBACiAgIHZlcnNpb25fdHlwZT1kYXJ3aW4KICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHttYWpvcn0kc2hhcmVkX2V4dCAke2xpYm5hbWV9JHNoYXJlZF9leHQnCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQnCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRtYWpvciRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJG1ham9yJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgc2hsaWJwYXRoX3Zhcj1EWUxEX0xJQlJBUllfUEFUSAogICBzaHJleHRfY21kcz0nYHRlc3QgLiRtb2R1bGUgPSAueWVzICYmIGVjaG8gLnNvIHx8IGVjaG8gLmR5bGliYCcKQEAgLTIyMTE3LDggKzIyODAwLDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICA7OwogCkBAIC0yMjEzNiwxMiArMjI4MTksMTMgQEAKICAgdmVyc2lvbl90eXBlPWZyZWVic2QtJG9iamZvcm1hdAogICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KICAgICBmcmVlYnNkLWVsZiopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgICBuZWVkX3ZlcnNpb249bm8KICAgICAgIG5lZWRfbGliX3ByZWZpeD1ubwogICAgICAgOzsKICAgICBmcmVlYnNkLSopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgICAgIG5lZWRfdmVyc2lvbj15ZXMKICAgICAgIDs7CiAgIGVzYWMKQEAgLTIyMTcxLDEwICsyMjg1NSwxMCBAQAogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCiAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBydW50aW1lX2xvYWRlciIKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR7bWFqb3J9ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAgIDs7CkBAIC0yMjE5MiwxNCArMjI4NzYsMTUgQEAKICAgICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgZGxkLnNvIgogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcyAjIFVubGVzcyArbm9lbnZ2YXIgaXMgc3BlY2lmaWVkLgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICAgaWYgdGVzdCAiWCRIUFVYX0lBNjRfTU9ERSIgPSBYMzI7IHRoZW4KKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgICBpZiB0ZXN0IDMyID0gIiRIUFVYX0lBNjRfTU9ERSI7IHRoZW4KICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliL2hwdXgzMiAvdXNyL2xvY2FsL2xpYiIKKyAgICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPS91c3IvbGliL2hwdXgzMgogICAgIGVsc2UKICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIvaHB1eDY0IC91c3IvbG9jYWwvbGliL2hwdXg2NCIKKyAgICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPS91c3IvbGliL2hwdXg2NAogICAgIGZpCi0gICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICAgIDs7CiAgIGhwcGEqNjQqKQogICAgIHNocmV4dF9jbWRzPScuc2wnCkBAIC0yMjIwNyw4ICsyMjg5Miw4IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSCAjIEhvdyBzaG91bGQgd2UgaGFuZGxlIFNITElCX1BBVEgKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL3BhMjBfNjQgL3Vzci9jY3MvbGliL3BhMjBfNjQiCiAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICAgIDs7CkBAIC0yMjIxNyw4ICsyMjkwMiw4IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKICAgICBzaGxpYnBhdGhfdmFyPVNITElCX1BBVEgKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8gIyArcyBpcyByZXF1aXJlZCB0byBlbmFibGUgU0hMSUJfUEFUSAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgOzsKICAgZXNhYwogICAjIEhQLVVYIHJ1bnMgKnJlYWxseSogc2xvd2x5IHVubGVzcyBzaGFyZWQgbGlicmFyaWVzIGFyZSBtb2RlIDU1NSwgLi4uCkBAIC0yMjIzMSw4ICsyMjkxNiw4IEBACiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIGR5bmFtaWNfbGlua2VyPSdJbnRlcml4IDMueCBsZC5zby4xIChQRSwgbGlrZSBFTEYpJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KQEAgLTIyMjQzLDcgKzIyOTI4LDcgQEAKICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKICAgICAqKQotCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfcHJvZ19nbnVfbGQiOyB0aGVuCiAJCXZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAllbHNlCiAJCXZlcnNpb25fdHlwZT1pcml4CkBAIC0yMjI1MSw4ICsyMjkzNiw4IEBACiAgIGVzYWMKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9CkBAIC0yMjI3MSw4ICsyMjk1Niw4IEBACiAgIGVzYWMKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZJHtzaGxpYnN1ZmZ9X1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIke2xpYnN1ZmZ9IC9saWIke2xpYnN1ZmZ9IC91c3IvbG9jYWwvbGliJHtsaWJzdWZmfSIKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJHtsaWJzdWZmfSAvbGliJHtsaWJzdWZmfSIKKyAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiRsaWJzdWZmIC9saWIkbGlic3VmZiAvdXNyL2xvY2FsL2xpYiRsaWJzdWZmIgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIkbGlic3VmZiAvbGliJGxpYnN1ZmYiCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgOzsKIApAQCAtMjIyODEsMTMgKzIyOTY2LDMzIEBACiAgIGR5bmFtaWNfbGlua2VyPW5vCiAgIDs7CiAKK2xpbnV4KmFuZHJvaWQqKQorICB2ZXJzaW9uX3R5cGU9bm9uZSAjIEFuZHJvaWQgZG9lc24ndCBzdXBwb3J0IHZlcnNpb25lZCBsaWJyYXJpZXMuCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQnCisgIGZpbmlzaF9jbWRzPQorICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisKKyAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCisgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbAorICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgorICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisKKyAgZHluYW1pY19saW5rZXI9J0FuZHJvaWQgbGlua2VyJworICAjIERvbid0IGVtYmVkIC1ycGF0aCBkaXJlY3RvcmllcyBzaW5jZSB0aGUgbGlua2VyIGRvZXNuJ3Qgc3VwcG9ydCB0aGVtLgorICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJworICA7OworCiAjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCiBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUgfCBnbnUqKQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0yMjMzMSw3ICsyMzAzNiwxMiBAQAogICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgogICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCiAKLSAgIyBBcHBlbmQgbGQuc28uY29uZiBjb250ZW50cyB0byB0aGUgc2VhcmNoIHBhdGgKKyAgIyBJZGVhbGx5LCB3ZSBjb3VsZCB1c2UgbGRjb25maWcgdG8gcmVwb3J0ICphbGwqIGRpcmVjdG9yZXMgd2hpY2ggYXJlCisgICMgc2VhcmNoZWQgZm9yIGxpYnJhcmllcywgaG93ZXZlciB0aGlzIGlzIHN0aWxsIG5vdCBwb3NzaWJsZS4gIEFzaWRlIGZyb20gbm90CisgICMgYmVpbmcgY2VydGFpbiAvc2Jpbi9sZGNvbmZpZyBpcyBhdmFpbGFibGUsIGNvbW1hbmQKKyAgIyAnbGRjb25maWcgLU4gLVggLXYgfCBncmVwIF4vJyBvbiA2NGJpdCBGZWRvcmEgZG9lcyBub3QgcmVwb3J0IC91c3IvbGliNjQsCisgICMgZXZlbiB0aG91Z2ggaXQgaXMgc2VhcmNoZWQgYXQgcnVuLXRpbWUuICBUcnkgdG8gZG8gdGhlIGJlc3QgZ3Vlc3MgYnkKKyAgIyBhcHBlbmRpbmcgbGQuc28uY29uZiBjb250ZW50cyAoYW5kIGluY2x1ZGVzKSB0byB0aGUgc2VhcmNoIHBhdGguCiAgIGlmIHRlc3QgLWYgL2V0Yy9sZC5zby5jb25mOyB0aGVuCiAgICAgbHRfbGRfZXh0cmE9YGF3ayAnL15pbmNsdWRlIC8geyBzeXN0ZW0oc3ByaW50ZigiY2QgL2V0YzsgY2F0ICVzIDI+L2Rldi9udWxsIiwgXCQyKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcJDA7IHNraXAgPSAwOyB9JyA8IC9ldGMvbGQuc28uY29uZiB8ICRTRUQgLWUgJ3MvIy4qLy87L15bCSBdKmh3Y2FwWwkgXS9kO3MvWzosCV0vIC9nO3MvPVtePV0qJC8vO3MvPVtePSBdKiAvIC9nO3MvIi8vZzsvXiQvZCcgfCB0ciAnXG4nICcgJ2AKICAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAkbHRfbGRfZXh0cmEiCkBAIC0yMjM2MywxMiArMjMwNzMsMTIgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCiAgICAgZHluYW1pY19saW5rZXI9J05ldEJTRCAoYS5vdXQpIGxkLnNvJwogICBlbHNlCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJwogICBmaQogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjIzNzgsNyArMjMwODgsNyBAQAogCiBuZXdzb3M2KQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKQEAgLTIyMzg3LDU4ICsyMzA5Nyw2OCBAQAogICB2ZXJzaW9uX3R5cGU9cW54CiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKICAgZHluYW1pY19saW5rZXI9J2xkcW54LnNvJwogICA7OwogCi1vcGVuYnNkKikKK29wZW5ic2QqIHwgYml0cmlnKikKICAgdmVyc2lvbl90eXBlPXN1bm9zCi0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9L3Vzci9saWIKICAgbmVlZF9saWJfcHJlZml4PW5vCi0gICMgU29tZSBvbGRlciB2ZXJzaW9ucyBvZiBPcGVuQlNEICgzLjMgYXQgbGVhc3QpICpkbyogbmVlZCB2ZXJzaW9uZWQgbGlicy4KLSAgY2FzZSAkaG9zdF9vcyBpbgotICAgIG9wZW5ic2QzLjMgfCBvcGVuYnNkMy4zLiopCW5lZWRfdmVyc2lvbj15ZXMgOzsKLSAgICAqKQkJCQluZWVkX3ZlcnNpb249bm8gIDs7Ci0gIGVzYWMKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCisgICAgbmVlZF92ZXJzaW9uPW5vCisgIGVsc2UKKyAgICBuZWVkX3ZlcnNpb249eWVzCisgIGZpCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW0gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKLSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiIHx8IHRlc3QgIiRob3N0X29zLSRob3N0X2NwdSIgPSAib3BlbmJzZDIuOC1wb3dlcnBjIjsgdGhlbgotICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgIG9wZW5ic2QyLls4OV0gfCBvcGVuYnNkMi5bODldLiopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0JOzsKLSAgICAgICopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotCTs7Ci0gICAgICBlc2FjCi0gIGVsc2UKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIGZpCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKIAogb3MyKikKICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHZlcnNpb25fdHlwZT13aW5kb3dzCisgIHNocmV4dF9jbWRzPS5kbGwKKyAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICAjIE9TLzIgY2FuIG9ubHkgbG9hZCBhIERMTCB3aXRoIGEgYmFzZSBuYW1lIG9mIDggY2hhcmFjdGVycyBvciBsZXNzLgorICBzb25hbWVfc3BlYz0nYHRlc3QgLW4gIiRvczJkbGxuYW1lIiAmJiBsaWJuYW1lPSIkb3MyZGxsbmFtZSI7CisgICAgdj0kKCRFQ0hPICRyZWxlYXNlJHZlcnN1ZmZpeCB8IHRyIC1kIC4tKTsKKyAgICBuPSQoJEVDSE8gJGxpYm5hbWUgfCBjdXQgLWIgLSQoKDggLSAkeyN2fSkpIHwgdHIgLiBfKTsKKyAgICAkRUNITyAkbiR2YCRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1fZGxsLiRsaWJleHQnCiAgIGR5bmFtaWNfbGlua2VyPSdPUy8yIGxkLmV4ZScKLSAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIHNobGlicGF0aF92YXI9QkVHSU5MSUJQQVRICisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYworICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CisgICAgY2htb2QgYSt4IFwkZGxkaXIvJGRsbmFtZX4KKyAgICBpZiB0ZXN0IC1uICdcJyckc3RyaXBtZSdcJycgJiYgdGVzdCAtbiAnXCcnJHN0cmlwbGliJ1wnJzsgdGhlbgorICAgICAgZXZhbCAnXCcnJHN0cmlwbGliIFwkZGxkaXIvJGRsbmFtZSdcJycgfHwgZXhpdCBcJD87CisgICAgZmknCisgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgJFJNIFwkZGxwYXRoJwogICA7OwogCiBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCiAgIHZlcnNpb25fdHlwZT1vc2YKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3Ivc2hsaWIgL3Vzci9jY3MvbGliIC91c3IvbGliL2NtcGxycy9jYyAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiAvdmFyL3NobGliIgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICA7OwogCiByZG9zKikKQEAgLTIyNDQ5LDggKzIzMTY5LDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMjI0NjAsMTEgKzIzMTgwLDExIEBACiAKIHN1bm9zNCopCiAgIHZlcnNpb25fdHlwZT1zdW5vcwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCR2ZXJzdWZmaXgnCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3Vzci9ldGMiIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIGZpCiAgIG5lZWRfdmVyc2lvbj15ZXMKQEAgLTIyNDcyLDggKzIzMTkyLDggQEAKIAogc3lzdjQgfCBzeXN2NC4zKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X3ZlbmRvciBpbgogICAgIHNuaSkKQEAgLTIyNDk0LDI0ICsyMzIxNCwyNCBAQAogICA7OwogCiBzeXN2NCpNUCopCi0gIGlmIHRlc3QgLWQgL3Vzci9uZWMgO3RoZW4KKyAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogICAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kdmVyc3VmZml4ICRsaWJuYW1lJHtzaGFyZWRfZXh0fS4kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hhcmVkX2V4dC4kdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHNoYXJlZF9leHQuJG1ham9yJwogICAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIGZpCiAgIDs7CiAKIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQotICB2ZXJzaW9uX3R5cGU9ZnJlZWJzZC1lbGYKKyAgdmVyc2lvbl90eXBlPXNjbwogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0ICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvbG9jYWwvbGliIC91c3IvZ251L2xpYiAvdXNyL2Njcy9saWIgL3Vzci9saWIgL2xpYicKICAgZWxzZQogICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nL3Vzci9jY3MvbGliIC91c3IvbGliJwpAQCAtMjI1MjksNyArMjMyNDksNyBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTIyNTM3LDggKzIzMjU3LDggQEAKIAogdXRzNCopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMjI1NDgsMjAgKzIzMjY4LDMyIEBACiBlc2FjCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGR5bmFtaWNfbGlua2VyIiA+JjUKICRhc19lY2hvICIkZHluYW1pY19saW5rZXIiID4mNjsgfQotdGVzdCAiJGR5bmFtaWNfbGlua2VyIiA9IG5vICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KK3Rlc3Qgbm8gPSAiJGR5bmFtaWNfbGlua2VyIiAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCiAKIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSJQQVRIICRzaGxpYnBhdGhfdmFyICRydW5wYXRoX3ZhciIKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIEdDQ19FWEVDX1BSRUZJWCBDT01QSUxFUl9QQVRIIExJQlJBUllfUEFUSCIKIGZpCiAKLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iID0gc2V0OyB0aGVuCi0gIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKK2lmIHRlc3Qgc2V0ID0gIiR7bHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfY3Zfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiBmaQotaWYgdGVzdCAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJGx0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjIgorCitpZiB0ZXN0IHNldCA9ICIke2x0X2N2X3N5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjK3NldH0iOyB0aGVuCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSRsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYwogZmkKIAorIyByZW1lbWJlciB1bmF1Z21lbnRlZCBzeXNfbGliX2Rsc2VhcmNoX3BhdGggY29udGVudCBmb3IgbGlidG9vbCBzY3JpcHQgZGVjbHMuLi4KK2NvbmZpZ3VyZV90aW1lX2Rsc2VhcmNoX3BhdGg9JHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjCisKKyMgLi4uIGJ1dCBpdCBuZWVkcyBMVF9TWVNfTElCUkFSWV9QQVRIIG11bmdpbmcgZm9yIG90aGVyIGNvbmZpZ3VyZS10aW1lIGNvZGUKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0IHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjICIkTFRfU1lTX0xJQlJBUllfUEFUSCIKKworIyB0byBiZSB1c2VkIGFzIGRlZmF1bHQgTFRfU1lTX0xJQlJBUllfUEFUSCB2YWx1ZSBpbiBnZW5lcmF0ZWQgbGlidG9vbAorY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aD0kTFRfU1lTX0xJQlJBUllfUEFUSAorCisKKwogCiAKIApAQCAtMjI2MDQsMTUgKzIzMzM2LDE1IEBACiBoYXJkY29kZV9hY3Rpb25fQ1hYPQogaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfQ1hYIiB8fAogICAgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyX0NYWCIgfHwKLSAgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgPSAiWHllcyIgOyB0aGVuCisgICB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCI7IHRoZW4KIAogICAjIFdlIGNhbiBoYXJkY29kZSBub24tZXhpc3RlbnQgZGlyZWN0b3JpZXMuCi0gIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfQ1hYIiAhPSBubyAmJgorICBpZiB0ZXN0IG5vICE9ICIkaGFyZGNvZGVfZGlyZWN0X0NYWCIgJiYKICAgICAgIyBJZiB0aGUgb25seSBtZWNoYW5pc20gdG8gYXZvaWQgaGFyZGNvZGluZyBpcyBzaGxpYnBhdGhfdmFyLCB3ZQogICAgICAjIGhhdmUgdG8gcmVsaW5rLCBvdGhlcndpc2Ugd2UgbWlnaHQgbGluayB3aXRoIGFuIGluc3RhbGxlZCBsaWJyYXJ5CiAgICAgICMgd2hlbiB3ZSBzaG91bGQgYmUgbGlua2luZyB3aXRoIGEgeWV0LXRvLWJlLWluc3RhbGxlZCBvbmUKLSAgICAgIyMgdGVzdCAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgQ1hYKSIgIT0gbm8gJiYKLSAgICAgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0xfQ1hYIiAhPSBubzsgdGhlbgorICAgICAjIyB0ZXN0IG5vICE9ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCBDWFgpIiAmJgorICAgICB0ZXN0IG5vICE9ICIkaGFyZGNvZGVfbWludXNfTF9DWFgiOyB0aGVuCiAgICAgIyBMaW5raW5nIGFsd2F5cyBoYXJkY29kZXMgdGhlIHRlbXBvcmFyeSBsaWJyYXJ5IGRpcmVjdG9yeS4KICAgICBoYXJkY29kZV9hY3Rpb25fQ1hYPXJlbGluawogICBlbHNlCkBAIC0yMjYyNywxMiArMjMzNTksMTIgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGFyZGNvZGVfYWN0aW9uX0NYWCIgPiY1CiAkYXNfZWNobyAiJGhhcmRjb2RlX2FjdGlvbl9DWFgiID4mNjsgfQogCi1pZiB0ZXN0ICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgPSByZWxpbmsgfHwKLSAgIHRlc3QgIiRpbmhlcml0X3JwYXRoX0NYWCIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgcmVsaW5rID0gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8fAorICAgdGVzdCB5ZXMgPSAiJGluaGVyaXRfcnBhdGhfQ1hYIjsgdGhlbgogICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBzdXBwb3J0ZWQKICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1ubwotZWxpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyB8fAotICAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSBubzsgdGhlbgorZWxpZiB0ZXN0IHllcyA9ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiB8fAorICAgICB0ZXN0IG5vID0gIiRlbmFibGVfc2hhcmVkIjsgdGhlbgogICAjIEZhc3QgaW5zdGFsbGF0aW9uIGlzIG5vdCBuZWNlc3NhcnkKICAgZW5hYmxlX2Zhc3RfaW5zdGFsbD1uZWVkbGVzcwogZmkKQEAgLTIyNjU1LDcgKzIzMzg3LDcgQEAKICAgbHRfY3ZfcGF0aF9MRD0kbHRfc2F2ZV9wYXRoX0xECiAgIGx0X2N2X3Byb2dfZ251X2xkY3h4PSRsdF9jdl9wcm9nX2dudV9sZAogICBsdF9jdl9wcm9nX2dudV9sZD0kbHRfc2F2ZV93aXRoX2dudV9sZAotZmkgIyB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllcworZmkgIyB0ZXN0IHllcyAhPSAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIgogCiBhY19leHQ9YwogYWNfY3BwPSckQ1BQICRDUFBGTEFHUycKQEAgLTIzOTMyLDcgKzI0NjY0LDcgQEAKIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX213X19td3ZhbGlkY2hlY2tsIiA+JjUKICRhc19lY2hvICIkYWNfY3ZfbGliX213X19td3ZhbGlkY2hlY2tsIiA+JjY7IH0KIGlmIHRlc3QgIngkYWNfY3ZfbGliX213X19td3ZhbGlkY2hlY2tsIiA9IHh5ZXM7IHRoZW4gOgotICBMSUJNPSItbG13IgorICBMSUJNPS1sbXcKIGZpCiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY29zIGluIC1sbSIgPiY1CkBAIC0yNDAxNCw3ICsyNDc0Niw3IEBACiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N2X2xpYl9tX2NvcyIgPiY1CiAkYXNfZWNobyAiJGFjX2N2X2xpYl9tX2NvcyIgPiY2OyB9CiBpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9tX2NvcyIgPSB4eWVzOyB0aGVuIDoKLSAgTElCTT0iLWxtIgorICBMSUJNPS1sbQogZmkKIAogICA7OwpAQCAtMjU0MjAsNyArMjYxNTIsNyBAQAogZmkKIAogCi1HTElCX1JFUT0yLjMyLjAKK0dMSUJfUkVRPTIuNDAuMAogCiAKIApAQCAtMjU1NjEsMTggKzI2MjkzLDEwIEBACiBpZiB0ZXN0ICIke2VuYWJsZV9nbGliX2Fzc2VydHMrc2V0fSIgPSBzZXQ7IHRoZW4gOgogICBlbmFibGV2YWw9JGVuYWJsZV9nbGliX2Fzc2VydHM7IGVuYWJsZV9nbGliX2Fzc2VydGlvbnM9JGVuYWJsZXZhbAogZWxzZQotICBlbmFibGVfZ2xpYl9hc3NlcnRpb25zPWF1dG8KKyAgZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXMKIGZpCiAKIAotICBpZiB0ZXN0ICJ4JGVuYWJsZV9nbGliX2Fzc2VydGlvbnMiID0gInhhdXRvIjsgdGhlbgotICAgICAgICBpZiB0ZXN0ICJ4YGV4cHIgJFBBQ0tBR0VfVkVSU0lPTl9NSU5PUiAlIDJgIiA9ICJ4MSIgLWEgInhgZXhwciAkUEFDS0FHRV9WRVJTSU9OX01JQ1JPICc8JyA5MGAiID0gIngxIjsgdGhlbgotICAgICAgZW5hYmxlX2dsaWJfYXNzZXJ0aW9ucz15ZXMKLSAgICBlbHNlCi0gICAgICBlbmFibGVfZ2xpYl9hc3NlcnRpb25zPW5vCi0gICAgZmkKLSAgZmkKLQogICBpZiB0ZXN0ICJ4JGVuYWJsZV9nbGliX2Fzc2VydGlvbnMiID0gInhubyI7IHRoZW4KICAgICBHTElCX0VYVFJBX0NGTEFHUz0iJEdMSUJfRVhUUkFfQ0ZMQUdTIC1ER19ESVNBQkxFX0FTU0VSVCIKICAgZmkKQEAgLTI2OTE3LDYgKzI3NjQxLDQxIEBACiBmaQogCiAKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1Cc3ltYm9saWMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHtlbmFibGVfQnN5bWJvbGljK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfQnN5bWJvbGljOworZWxzZQorICBTQVZFRF9MREZMQUdTPSIke0xERkxBR1N9IiBTQVZFRF9MSUJTPSIke0xJQlN9IgorICAgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgLUJzeW1ib2xpYy1mdW5jdGlvbnMgbGlua2VyIGZsYWciID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIC1Cc3ltYm9saWMtZnVuY3Rpb25zIGxpbmtlciBmbGFnLi4uICIgPiY2OyB9CisgICAgICAgICAgICAgICBMREZMQUdTPS1XbCwtQnN5bWJvbGljLWZ1bmN0aW9ucworICAgICAgICAgICAgICAgTElCUz0KKyAgICAgICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKworaW50CittYWluICgpCit7CityZXR1cm4gMAorICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICBlbmFibGVfQnN5bWJvbGljPXllcworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9Cc3ltYm9saWM9bm8KK2ZpCitybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorICAgICAgICAgICAgICAgTERGTEFHUz0iJHtTQVZFRF9MREZMQUdTfSIgTElCUz0iJHtTQVZFRF9MSUJTfSIKK2ZpCisKKwogCiBIQVZFX0dUSzM9Tk8KIGlmIHRlc3QgIngkQlVJTERfRVhBTVBMRVMiID0gInh5ZXMiOyB0aGVuCkBAIC0yODEwNiw4ICsyODg2NSw4IEBACiAgICAgICBpZiB0ZXN0ICJ4eWVzIiA9ICJ4bm8iIC1vICJ4eWVzIiA9ICJ4IjsgdGhlbgogICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9YGRhdGUgLXUgIislWS0lbS0lZFQlSDolTVoiYAogICBlbGlmIHRlc3QgInh5ZXMiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICBpZiAoIGVjaG8geWVzIHwgZ3JlcCAnXjIwMS05MC05LTAtMTAtOS0wLTMwLTknID4vZGV2L251bGwgKSA7IHRoZW4KLSAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9eWVzCisgICAgICAgICAgICBpZiAoIGVjaG8gICIke3NyY2Rpcn0vZ3N0LXBsdWdpbnMtYmFkLmRvYXAiICB8IGdyZXAgJ14yMFsxLTldWzAtOV0tWzAtMV1bMC05XS1bMC0zXVswLTldJyA+L2Rldi9udWxsICkgOyB0aGVuCisgICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPSAiJHtzcmNkaXJ9L2dzdC1wbHVnaW5zLWJhZC5kb2FwIgogICAgIGVsc2UKICAgICAgICAgICAgIFlZWVlfTU1fREQ9YHNoICIke3NyY2Rpcn0vY29tbW9uL2V4dHJhY3QtcmVsZWFzZS1kYXRlLWZyb20tZG9hcC1maWxlIiAgJFBBQ0tBR0VfVkVSU0lPTl9NQUpPUi4kUEFDS0FHRV9WRVJTSU9OX01JTk9SLiRQQUNLQUdFX1ZFUlNJT05fTUlDUk8gICAiJHtzcmNkaXJ9L2dzdC1wbHVnaW5zLWJhZC5kb2FwIiBgOwogICAgICAgaWYgdGVzdCAieCRZWVlZX01NX0REIiAhPSAieCI7IHRoZW4KQEAgLTI4MTE4LDcgKzI4ODc3LDcgQEAKICAgICAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT0iIgogICAgICAgZmkKICAgICBmaQotICAgIGVsaWYgKCBlY2hvIHllcyB8IGdyZXAgJ14yMDEtOTAtOS0wLTEwLTktMC0zMC05JyA+L2Rldi9udWxsICkgOyB0aGVuCisgICAgZWxpZiAoIGVjaG8geWVzIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPXllcwogICBlbHNlCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBTRVRfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IiA+JjUKQEAgLTI4MTQ1LDggKzI4OTA0LDggQEAKICAgICAgIGlmIHRlc3QgInhubyIgPSAieG5vIiAtbyAieG5vIiA9ICJ4IjsgdGhlbgogICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9YGRhdGUgLXUgIislWS0lbS0lZFQlSDolTVoiYAogICBlbGlmIHRlc3QgInhubyIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgICAgIGlmICggZWNobyBubyB8IGdyZXAgJ14yMDEtOTAtOS0wLTEwLTktMC0zMC05JyA+L2Rldi9udWxsICkgOyB0aGVuCi0gICAgICBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FPW5vCisgICAgICAgICAgICBpZiAoIGVjaG8gIHwgZ3JlcCAnXjIwWzEtOV1bMC05XS1bMC0xXVswLTldLVswLTNdWzAtOV0nID4vZGV2L251bGwgKSA7IHRoZW4KKyAgICAgIEdTVF9QQUNLQUdFX1JFTEVBU0VfREFURVRJTUU9CiAgICAgZWxzZQogICAgICAgICAgICAgWVlZWV9NTV9ERD1gc2ggIiR7c3JjZGlyfS9jb21tb24vZXh0cmFjdC1yZWxlYXNlLWRhdGUtZnJvbS1kb2FwLWZpbGUiICBgOwogICAgICAgaWYgdGVzdCAieCRZWVlZX01NX0REIiAhPSAieCI7IHRoZW4KQEAgLTI4MTU3LDcgKzI4OTE2LDcgQEAKICAgICAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT0iIgogICAgICAgZmkKICAgICBmaQotICAgIGVsaWYgKCBlY2hvIG5vIHwgZ3JlcCAnXjIwMS05MC05LTAtMTAtOS0wLTMwLTknID4vZGV2L251bGwgKSA7IHRoZW4KKyAgICBlbGlmICggZWNobyBubyB8IGdyZXAgJ14yMFsxLTldWzAtOV0tWzAtMV1bMC05XS1bMC0zXVswLTldJyA+L2Rldi9udWxsICkgOyB0aGVuCiAgICAgR1NUX1BBQ0tBR0VfUkVMRUFTRV9EQVRFVElNRT1ubwogICBlbHNlCiAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBTRVRfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FOiBpbnZhbGlkIGZpcnN0IGFyZ3VtZW50IiA+JjUKQEAgLTI4MjE4LDYgKzI4OTc3LDY5IEBACiBmaQogCiAKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1wbGF5ZXItdGVzdHMgd2FzIGdpdmVuLgoraWYgdGVzdCAiJHt3aXRoX3BsYXllcl90ZXN0cytzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfcGxheWVyX3Rlc3RzOworZmkKKworaWYgdGVzdCB4JHdpdGhfcGxheWVyX3Rlc3RzID0geHllczsgdGhlbgorICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIndnZXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHdnZXQ7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX1dHRVQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRXR0VUIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX1dHRVQ9IiRXR0VUIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9XR0VUPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIHRlc3QgLXogIiRhY19jdl9wYXRoX1dHRVQiICYmIGFjX2N2X3BhdGhfV0dFVD0ibm8iCisgIDs7Citlc2FjCitmaQorV0dFVD0kYWNfY3ZfcGF0aF9XR0VUCitpZiB0ZXN0IC1uICIkV0dFVCI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRXR0VUIiA+JjUKKyRhc19lY2hvICIkV0dFVCIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCisgIGlmIHRlc3QgeCRXR0VUID0geG5vOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB3Z2V0IHJlcXVpcmVkIGZvciBHc3RQbGF5ZXIgdGVzdHMgYnV0IG5vdCBmb3VuZCAtIGRpc2FibGluZyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB3Z2V0IHJlcXVpcmVkIGZvciBHc3RQbGF5ZXIgdGVzdHMgYnV0IG5vdCBmb3VuZCAtIGRpc2FibGluZyIgPiYyO30KKyAgICB3aXRoX3BsYXllcl90ZXN0cz1ubworICBmaQorZmkKKyBpZiB0ZXN0ICJ4JHdpdGhfcGxheWVyX3Rlc3RzIiA9ICJ4eWVzIjsgdGhlbgorICBXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRT0KKyAgV0lUSF9HU1RfUExBWUVSX1RFU1RTX0ZBTFNFPScjJworZWxzZQorICBXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRT0nIycKKyAgV0lUSF9HU1RfUExBWUVSX1RFU1RTX0ZBTFNFPQorZmkKKworCiAjIHNldCBieSBBR19HU1RfUEFSU0VfU1VCU1lTVEVNX0RJU0FCTEVTIGFib3ZlCiBOT19XQVJOSU5HUz0iIgogCkBAIC0yODQ2MSw5MyArMjkyODMsNiBAQAogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGZsYWdfb2siID4mNQogJGFzX2VjaG8gIiRmbGFnX29rIiA+JjY7IH0KIAotCi0gICAgICAgIGlmIHRlc3QgIngkRVJST1JfQ0ZMQUdTIiA9ICJ4IgotICAgIHRoZW4KLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRvIHNlZSBpZiBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHRvIHNlZSBpZiBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLi4uICIgPiY2OyB9Ci0KLSAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gIENGTEFHUz0iJENGTEFHUyAtZXJyd2Fybj0lYWxsIgotCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBmbGFnX29rPXllcwotZWxzZQotICBmbGFnX29rPW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgotCi0gIGlmIHRlc3QgIlgkZmxhZ19vayIgPSBYeWVzIDsgdGhlbgotCi0gICAgICAgICAgRVJST1JfQ0ZMQUdTPSItZXJyd2Fybj0lYWxsIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgZiBpbiAnbm8lRV9FTVBUWV9ERUNMQVJBVElPTicgXAotICAgICAgICAgICAgICAgICAgICdubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCcgXAotICAgICAgICAgICAgICAgICAgICdubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCcgXAotICAgICAgICAgICAgICAgICAgICdubyVFX01BQ1JPX1JFREVGSU5FRCcgXAotICAgICAgICAgICAgICAgICAgICdubyVFX0xPT1BfTk9UX0VOVEVSRURfQVRfVE9QJwotICAgICAgICAgIGRvCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB0byBzZWUgaWYgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCwkZiIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB0byBzZWUgaWYgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCwkZi4uLiAiID4mNjsgfQotCi0gIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotICBDRkxBR1M9IiRDRkxBR1MgLWVycndhcm49JWFsbCwkZiIKLQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgZmxhZ19vaz15ZXMKLWVsc2UKLSAgZmxhZ19vaz1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBDRkxBR1M9IiRzYXZlX0NGTEFHUyIKLQotICBpZiB0ZXN0ICJYJGZsYWdfb2siID0gWHllcyA7IHRoZW4KLQotICAgICAgICAgICAgICBFUlJPUl9DRkxBR1M9IiRFUlJPUl9DRkxBR1MsJGYiCi0KLSAgICB0cnVlCi0gIGVsc2UKLQotICAgIHRydWUKLSAgZmkKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRmbGFnX29rIiA+JjUKLSRhc19lY2hvICIkZmxhZ19vayIgPiY2OyB9Ci0KLSAgICAgICAgICBkb25lCi0KLSAgICB0cnVlCi0gIGVsc2UKLQotICAgIHRydWUKLSAgZmkKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRmbGFnX29rIiA+JjUKLSRhc19lY2hvICIkZmxhZ19vayIgPiY2OyB9Ci0KLSAgICBmaQogICBmaQogCiAgIGlmIHRlc3QgIngKQEAgLTI4OTAzLDEyMiArMjk2MzgsNiBAQAogCiAKIGZpCi0gICAgZWxzZQotCi0KLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRvIHNlZSBpZiBjKysgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyB0byBzZWUgaWYgYysrIGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1lcnJ3YXJuPSVhbGwuLi4gIiA+JjY7IH0KLQotICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgLWVycndhcm49JWFsbCIKLQotICBhY19leHQ9Y3BwCi1hY19jcHA9JyRDWFhDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENYWCAtYyAkQ1hYRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENYWCAtbyBjb25mdGVzdCRhY19leGVleHQgJENYWEZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY3h4X2NvbXBpbGVyX2dudQotCi0KLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9jeHhfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSAgZmxhZ19vaz15ZXMKLWVsc2UKLSAgZmxhZ19vaz1ubwotZmkKLXJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0KLSAgaWYgdGVzdCAiWCRmbGFnX29rIiA9IFh5ZXMgOyB0aGVuCi0gICAgRVJST1JfQ1hYRkxBR1M9IiRFUlJPUl9DWFhGTEFHUyAtZXJyd2Fybj0lYWxsIgotICAgIHRydWUKLSAgZWxzZQotCi0gICAgdHJ1ZQotICBmaQotCi0gIGFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZmxhZ19vayIgPiY1Ci0kYXNfZWNobyAiJGZsYWdfb2siID4mNjsgfQotCi0gICAgICBpZiB0ZXN0ICJ4JEVSUk9SX0NYWEZMQUdTIiAhPSAieCI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJ25vJUVfRU1QVFlfREVDTEFSQVRJT04nIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfU1RBVEVNRU5UX05PVF9SRUFDSEVEJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX0FSR1VFTUVOVF9NSVNNQVRDSCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9NQUNST19SRURFRklORUQnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfTE9PUF9OT1RfRU5URVJFRF9BVF9UT1AnCi0gICAgICAgIGRvCi0KLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdG8gc2VlIGlmIGMrKyBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLCRmIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHRvIHNlZSBpZiBjKysgY29tcGlsZXIgdW5kZXJzdGFuZHMgLWVycndhcm49JWFsbCwkZi4uLiAiID4mNjsgfQotCi0gIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtZXJyd2Fybj0lYWxsLCRmIgotCi0gIGFjX2V4dD1jcHAKLWFjX2NwcD0nJENYWENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ1hYIC1jICRDWFhGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ1hYIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ1hYRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJfZ251Ci0KLQotICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLWludAotbWFpbiAoKQotewotCi0gIDsKLSAgcmV0dXJuIDA7Ci19Ci1fQUNFT0YKLWlmIGFjX2ZuX2N4eF90cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBmbGFnX29rPXllcwotZWxzZQotICBmbGFnX29rPW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLQotICBpZiB0ZXN0ICJYJGZsYWdfb2siID0gWHllcyA7IHRoZW4KLSAgICBFUlJPUl9DWFhGTEFHUz0iJEVSUk9SX0NYWEZMQUdTLCRmIgotICAgIHRydWUKLSAgZWxzZQotCi0gICAgdHJ1ZQotICBmaQotCi0gIGFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZmxhZ19vayIgPiY1Ci0kYXNfZWNobyAiJGZsYWdfb2siID4mNjsgfQotCi0gICAgICAgIGRvbmUKLSAgICAgIGZpCiAgICAgZmkKICAgZmkKIApAQCAtMjkzMzcsMTIyICsyOTk1Niw2IEBACiAKIAogZmkKLSAgICBlbHNlCi0KLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgdG8gc2VlIGlmIE9iamVjdGl2ZSBDIGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1lcnJ3YXJuPSVhbGwiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgdG8gc2VlIGlmIE9iamVjdGl2ZSBDIGNvbXBpbGVyIHVuZGVyc3RhbmRzIC1lcnJ3YXJuPSVhbGwuLi4gIiA+JjY7IH0KLQotICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgLWVycndhcm49JWFsbCIKLQotICBhY19leHQ9bQotYWNfY3BwPSckT0JKQ1BQICRDUFBGTEFHUycKLWFjX2NvbXBpbGU9JyRPQkpDIC1jICRPQkpDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJE9CSkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRPQkpDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9vYmpjX2NvbXBpbGVyX2dudQotCi0KLSAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi1pbnQKLW1haW4gKCkKLXsKLQotICA7Ci0gIHJldHVybiAwOwotfQotX0FDRU9GCi1pZiBhY19mbl9vYmpjX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0gIGZsYWdfb2s9eWVzCi1lbHNlCi0gIGZsYWdfb2s9bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgotCi0gIGlmIHRlc3QgIlgkZmxhZ19vayIgPSBYeWVzIDsgdGhlbgotICAgIEVSUk9SX09CSkNGTEFHUz0iJEVSUk9SX09CSkNGTEFHUyAtZXJyd2Fybj0lYWxsIgotICAgIHRydWUKLSAgZWxzZQotCi0gICAgdHJ1ZQotICBmaQotCi0gIGFjX2V4dD1jCi1hY19jcHA9JyRDUFAgJENQUEZMQUdTJwotYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JwotYWNfbGluaz0nJENDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLQotCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZmxhZ19vayIgPiY1Ci0kYXNfZWNobyAiJGZsYWdfb2siID4mNjsgfQotCi0gICAgICBpZiB0ZXN0ICJ4JEVSUk9SX09CSkNGTEFHUyIgIT0gIngiOyB0aGVuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICdubyVFX0VNUFRZX0RFQ0xBUkFUSU9OJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX1NUQVRFTUVOVF9OT1RfUkVBQ0hFRCcgXAotICAgICAgICAgICAgICAgICAnbm8lRV9BUkdVRU1FTlRfTUlTTUFUQ0gnIFwKLSAgICAgICAgICAgICAgICAgJ25vJUVfTUFDUk9fUkVERUZJTkVEJyBcCi0gICAgICAgICAgICAgICAgICdubyVFX0xPT1BfTk9UX0VOVEVSRURfQVRfVE9QJwotICAgICAgICBkbwotCi0KLQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHRvIHNlZSBpZiBPYmplY3RpdmUgQyBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLCRmIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIHRvIHNlZSBpZiBPYmplY3RpdmUgQyBjb21waWxlciB1bmRlcnN0YW5kcyAtZXJyd2Fybj0lYWxsLCRmLi4uICIgPiY2OyB9Ci0KLSAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotICBDUFBGTEFHUz0iJENQUEZMQUdTIC1lcnJ3YXJuPSVhbGwsJGYiCi0KLSAgYWNfZXh0PW0KLWFjX2NwcD0nJE9CSkNQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckT0JKQyAtYyAkT0JKQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLWFjX2xpbms9JyRPQkpDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkT0JKQ0ZMQUdTICRDUFBGTEFHUyAkTERGTEFHUyBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWFjX2NvbXBpbGVyX2dudT0kYWNfY3Zfb2JqY19jb21waWxlcl9nbnUKLQotCi0gIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLS8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLQotaW50Ci1tYWluICgpCi17Ci0KLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fb2JqY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotICBmbGFnX29rPXllcwotZWxzZQotICBmbGFnX29rPW5vCi1maQotcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKLQotICBpZiB0ZXN0ICJYJGZsYWdfb2siID0gWHllcyA7IHRoZW4KLSAgICBFUlJPUl9PQkpDRkxBR1M9IiRFUlJPUl9PQkpDRkxBR1MsJGYiCi0gICAgdHJ1ZQotICBlbHNlCi0KLSAgICB0cnVlCi0gIGZpCi0KLSAgYWNfZXh0PWMKLWFjX2NwcD0nJENQUCAkQ1BQRkxBR1MnCi1hY19jb21waWxlPSckQ0MgLWMgJENGTEFHUyAkQ1BQRkxBR1MgY29uZnRlc3QuJGFjX2V4dCA+JjUnCi1hY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQotCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRmbGFnX29rIiA+JjUKLSRhc19lY2hvICIkZmxhZ19vayIgPiY2OyB9Ci0KLSAgICAgICAgZG9uZQotICAgICAgZmkKICAgICBmaQogICBmaQogCkBAIC0yOTcwMCwxMCArMzAyMDMsOSBAQAogIHZpZGVvbWVhc3VyZSBcCiAgbGluc3lzIFwKICBhcGV4c2luayBkYzEzOTQgXAotIGdzZXR0aW5ncyBcCiAgbXVzZXBhY2sgbmFzIHNkbCB0aW1pZGl0eSBcCi0gYWNtIHdpbmluZXQgXAotIHh2aWQgbHYyIHRlbGV0ZXh0ZGVjIHNuZGlvIGxpYnZpc3VhbCIKKyB3aW5pbmV0IFwKKyB4dmlkIGx2MiBzbmRpbyBsaWJ2aXN1YWwiCiAKIAogCkBAIC0yOTg3OSw2ICszMDM4MSw0OSBAQAogCiAKIAorICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgdmlkZW9mcmFtZV9hdWRpb2xldmVsIgorCisKKworICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdmlkZW9mcmFtZV9hdWRpb2xldmVsIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbDsKKyAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgICAgeWVzKSBnc3RfdXNlX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbD15ZXMgOzsKKyAgICAgICAgbm8pIGdzdF91c2VfdmlkZW9mcmFtZV9hdWRpb2xldmVsPW5vIDs7CisgICAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS12aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwiICIkTElORU5PIiA1IDs7CisgICAgICAgZXNhYworCitlbHNlCisgIGdzdF91c2VfdmlkZW9mcmFtZV9hdWRpb2xldmVsPXllcworZmkKKworICBpZiB0ZXN0IHgkZ3N0X3VzZV92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwgPSB4bm87IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGRpc2FibGluZyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2luIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiB2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwiID4mNjt9CisgICAgV0lUSE9VVF9QTFVHSU5TPSIkV0lUSE9VVF9QTFVHSU5TIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCIKKyAgZmkKKworCisgICAgaWYgWyAteiAiJFdJVEhfUExVR0lOUyIgXSB8fCBlY2hvICIgJFdJVEhfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgdmlkZW9mcmFtZV9hdWRpb2xldmVsICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD0iJEdTVF9QTFVHSU5TX1NFTEVDVEVEIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCIKKyAgZmkKKyAgICBpZiBlY2hvICIgJFdJVEhPVVRfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgdmlkZW9mcmFtZV9hdWRpb2xldmVsICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD1gZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgJFNFRCAtZSAncy8gdmlkZW9mcmFtZV9hdWRpb2xldmVsIC8gLydgCisgIGZpCisgICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19OT05QT1JURUQgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCAvIC8nYAorICBmaQorICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgZ3JlcCAtaSAiIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCAiID4gL2Rldi9udWxsOyB0aGVuCisgIFVTRV9QTFVHSU5fVklERU9GUkFNRV9BVURJT0xFVkVMX1RSVUU9CisgIFVTRV9QTFVHSU5fVklERU9GUkFNRV9BVURJT0xFVkVMX0ZBTFNFPScjJworZWxzZQorICBVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9UUlVFPScjJworICBVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9GQUxTRT0KK2ZpCisKKworCiAgIEdTVF9QTFVHSU5TX0FMTD0iJEdTVF9QTFVHSU5TX0FMTCBhc2ZtdXgiCiAKIApAQCAtMzEyNTUsNDkgKzMxODAwLDYgQEAKIAogCiAKLSAgR1NUX1BMVUdJTlNfQUxMPSIkR1NUX1BMVUdJTlNfQUxMIGxpdmVhZGRlciIKLQotCi0KLSAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWxpdmVhZGRlciB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9saXZlYWRkZXIrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9saXZlYWRkZXI7Ci0gICAgICBjYXNlICIke2VuYWJsZXZhbH0iIGluCi0gICAgICAgIHllcykgZ3N0X3VzZV9saXZlYWRkZXI9eWVzIDs7Ci0gICAgICAgIG5vKSBnc3RfdXNlX2xpdmVhZGRlcj1ubyA7OwotICAgICAgICAqKSBhc19mbl9lcnJvciAkPyAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtbGl2ZWFkZGVyIiAiJExJTkVOTyIgNSA7OwotICAgICAgIGVzYWMKLQotZWxzZQotICBnc3RfdXNlX2xpdmVhZGRlcj15ZXMKLWZpCi0KLSAgaWYgdGVzdCB4JGdzdF91c2VfbGl2ZWFkZGVyID0geG5vOyB0aGVuCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiBsaXZlYWRkZXIiID4mNQotJGFzX2VjaG8gIiRhc19tZTogZGlzYWJsaW5nIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW4gbGl2ZWFkZGVyIiA+JjY7fQotICAgIFdJVEhPVVRfUExVR0lOUz0iJFdJVEhPVVRfUExVR0lOUyBsaXZlYWRkZXIiCi0gIGZpCi0KLQotICAgIGlmIFsgLXogIiRXSVRIX1BMVUdJTlMiIF0gfHwgZWNobyAiICRXSVRIX1BMVUdJTlMgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIGxpdmVhZGRlciAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9IiRHU1RfUExVR0lOU19TRUxFQ1RFRCBsaXZlYWRkZXIiCi0gIGZpCi0gICAgaWYgZWNobyAiICRXSVRIT1VUX1BMVUdJTlMgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIGxpdmVhZGRlciAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIGxpdmVhZGRlciAvIC8nYAotICBmaQotICAgIGlmIGVjaG8gIiAkR1NUX1BMVUdJTlNfTk9OUE9SVEVEICIgfCB0ciAsICcgJyB8IGdyZXAgLWkgIiBsaXZlYWRkZXIgIiA+IC9kZXYvbnVsbDsgdGhlbgotICAgIEdTVF9QTFVHSU5TX1NFTEVDVEVEPWBlY2hvICIgJEdTVF9QTFVHSU5TX1NFTEVDVEVEICIgfCAkU0VEIC1lICdzLyBsaXZlYWRkZXIgLyAvJ2AKLSAgZmkKLSAgIGlmIGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8IGdyZXAgLWkgIiBsaXZlYWRkZXIgIiA+IC9kZXYvbnVsbDsgdGhlbgotICBVU0VfUExVR0lOX0xJVkVBRERFUl9UUlVFPQotICBVU0VfUExVR0lOX0xJVkVBRERFUl9GQUxTRT0nIycKLWVsc2UKLSAgVVNFX1BMVUdJTl9MSVZFQURERVJfVFJVRT0nIycKLSAgVVNFX1BMVUdJTl9MSVZFQURERVJfRkFMU0U9Ci1maQotCi0KLQogICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgbWlkaSIKIAogCkBAIC0zMTU5OSw2ICszMjEwMSw0OSBAQAogCiAKIAorICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgbmV0c2ltIgorCisKKworICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtbmV0c2ltIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX25ldHNpbStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX25ldHNpbTsKKyAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgICAgeWVzKSBnc3RfdXNlX25ldHNpbT15ZXMgOzsKKyAgICAgICAgbm8pIGdzdF91c2VfbmV0c2ltPW5vIDs7CisgICAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1uZXRzaW0iICIkTElORU5PIiA1IDs7CisgICAgICAgZXNhYworCitlbHNlCisgIGdzdF91c2VfbmV0c2ltPXllcworZmkKKworICBpZiB0ZXN0IHgkZ3N0X3VzZV9uZXRzaW0gPSB4bm87IHRoZW4KKyAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGRpc2FibGluZyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2luIG5ldHNpbSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiBuZXRzaW0iID4mNjt9CisgICAgV0lUSE9VVF9QTFVHSU5TPSIkV0lUSE9VVF9QTFVHSU5TIG5ldHNpbSIKKyAgZmkKKworCisgICAgaWYgWyAteiAiJFdJVEhfUExVR0lOUyIgXSB8fCBlY2hvICIgJFdJVEhfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgbmV0c2ltICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD0iJEdTVF9QTFVHSU5TX1NFTEVDVEVEIG5ldHNpbSIKKyAgZmkKKyAgICBpZiBlY2hvICIgJFdJVEhPVVRfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgbmV0c2ltICIgPiAvZGV2L251bGw7IHRoZW4KKyAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD1gZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgJFNFRCAtZSAncy8gbmV0c2ltIC8gLydgCisgIGZpCisgICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19OT05QT1JURUQgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIG5ldHNpbSAiID4gL2Rldi9udWxsOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIG5ldHNpbSAvIC8nYAorICBmaQorICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgZ3JlcCAtaSAiIG5ldHNpbSAiID4gL2Rldi9udWxsOyB0aGVuCisgIFVTRV9QTFVHSU5fTkVUU0lNX1RSVUU9CisgIFVTRV9QTFVHSU5fTkVUU0lNX0ZBTFNFPScjJworZWxzZQorICBVU0VfUExVR0lOX05FVFNJTV9UUlVFPScjJworICBVU0VfUExVR0lOX05FVFNJTV9GQUxTRT0KK2ZpCisKKworCiAgIEdTVF9QTFVHSU5TX0FMTD0iJEdTVF9QTFVHSU5TX0FMTCBudXZkZW11eCIKIAogCkBAIC0zMTkwMCw0OSArMzI0NDUsNiBAQAogCiAKIAotICBHU1RfUExVR0lOU19BTEw9IiRHU1RfUExVR0lOU19BTEwgcnRwIgotCi0KLQotICAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcnRwIHdhcyBnaXZlbi4KLWlmIHRlc3QgIiR7ZW5hYmxlX3J0cCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0gIGVuYWJsZXZhbD0kZW5hYmxlX3J0cDsKLSAgICAgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KLSAgICAgICAgeWVzKSBnc3RfdXNlX3J0cD15ZXMgOzsKLSAgICAgICAgbm8pIGdzdF91c2VfcnRwPW5vIDs7Ci0gICAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1ydHAiICIkTElORU5PIiA1IDs7Ci0gICAgICAgZXNhYwotCi1lbHNlCi0gIGdzdF91c2VfcnRwPXllcwotZmkKLQotICBpZiB0ZXN0IHgkZ3N0X3VzZV9ydHAgPSB4bm87IHRoZW4KLSAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGRpc2FibGluZyBkZXBlbmRlbmN5LWxlc3MgcGx1Z2luIHJ0cCIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiBkaXNhYmxpbmcgZGVwZW5kZW5jeS1sZXNzIHBsdWdpbiBydHAiID4mNjt9Ci0gICAgV0lUSE9VVF9QTFVHSU5TPSIkV0lUSE9VVF9QTFVHSU5TIHJ0cCIKLSAgZmkKLQotCi0gICAgaWYgWyAteiAiJFdJVEhfUExVR0lOUyIgXSB8fCBlY2hvICIgJFdJVEhfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgcnRwICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD0iJEdTVF9QTFVHSU5TX1NFTEVDVEVEIHJ0cCIKLSAgZmkKLSAgICBpZiBlY2hvICIgJFdJVEhPVVRfUExVR0lOUyAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgcnRwICIgPiAvZGV2L251bGw7IHRoZW4KLSAgICBHU1RfUExVR0lOU19TRUxFQ1RFRD1gZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgJFNFRCAtZSAncy8gcnRwIC8gLydgCi0gIGZpCi0gICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19OT05QT1JURUQgIiB8IHRyICwgJyAnIHwgZ3JlcCAtaSAiIHJ0cCAiID4gL2Rldi9udWxsOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfU0VMRUNURUQ9YGVjaG8gIiAkR1NUX1BMVUdJTlNfU0VMRUNURUQgIiB8ICRTRUQgLWUgJ3MvIHJ0cCAvIC8nYAotICBmaQotICAgaWYgZWNobyAiICRHU1RfUExVR0lOU19TRUxFQ1RFRCAiIHwgZ3JlcCAtaSAiIHJ0cCAiID4gL2Rldi9udWxsOyB0aGVuCi0gIFVTRV9QTFVHSU5fUlRQX1RSVUU9Ci0gIFVTRV9QTFVHSU5fUlRQX0ZBTFNFPScjJwotZWxzZQotICBVU0VfUExVR0lOX1JUUF9UUlVFPScjJwotICBVU0VfUExVR0lOX1JUUF9GQUxTRT0KLWZpCi0KLQotCiAgIEdTVF9QTFVHSU5TX0FMTD0iJEdTVF9QTFVHSU5TX0FMTCBzZGkiCiAKIApAQCAtMzMxMDcsNiArMzM2MDksMTAyIEBACiAgICopCiAgICAgaWYgdGVzdCAieCRORUVEX0dMIiAhPSAieG5vIjsgdGhlbgogCisgIHdoaWNoPSJnbCIKKyAgICByZXF1aXJlZD0ibm8iCisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR0wiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdMLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHTF9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HTF9DRkxBR1M9IiRHTF9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJcJHdoaWNoXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiR3aGljaCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTF9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICIkd2hpY2giIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHTF9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfR0xfTElCUz0iJEdMX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJcJHdoaWNoXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiR3aGljaCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBHTF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIiR3aGljaCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIEdMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkR0xfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworICAgICAgSEFWRV9HTD0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdMX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdMX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdMX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKyAgICAgIEhBVkVfR0w9Im5vIgorICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRHTF9QS0dfRVJST1JTIiAiJExJTkVOTyIgNQorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRHTF9QS0dfRVJST1JTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRHTF9QS0dfRVJST1JTIiA+JjY7fQorICAgICAgZmkKKworZWxzZQorCUdMX0NGTEFHUz0kcGtnX2N2X0dMX0NGTEFHUworCUdMX0xJQlM9JHBrZ19jdl9HTF9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisKKyAgICAgIEhBVkVfR0w9InllcyIKKworZmkKKworCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfR0wiICE9ICJ4eWVzIjsgdGhlbgorCiAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGdsVGV4SW1hZ2UyRCBpbiAtbEdMIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBnbFRleEltYWdlMkQgaW4gLWxHTC4uLiAiID4mNjsgfQogaWYgJHthY19jdl9saWJfR0xfZ2xUZXhJbWFnZTJEKzp9IGZhbHNlOyB0aGVuIDoKQEAgLTMzMTY5LDkgKzMzNzY3LDEwNiBAQAogCiAKIAorICAgICAgZmkKICAgICBmaQogICAgIGlmIHRlc3QgIngkTkVFRF9HTEVTMiIgIT0gInhubyI7IHRoZW4KIAorICB3aGljaD0iZ2xlc3YyIgorICAgIHJlcXVpcmVkPSJubyIKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTEVTMiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR0xFUzIuLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdMRVMyX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dMRVMyX0NGTEFHUz0iJEdMRVMyX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dMRVMyX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdMRVMyX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HTEVTMl9MSUJTPSIkR0xFUzJfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dMRVMyX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiJHdoaWNoIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIEdMRVMyX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR0xFUzJfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRHTEVTMl9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICBIQVZFX0dMRVMyPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkR0xFUzJfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR0xFUzJfUEtHX0VSUk9SUyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkR0xFUzJfUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCisKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgSEFWRV9HTEVTMj0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdMRVMyX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdMRVMyX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdMRVMyX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbHNlCisJR0xFUzJfQ0ZMQUdTPSRwa2dfY3ZfR0xFUzJfQ0ZMQUdTCisJR0xFUzJfTElCUz0kcGtnX2N2X0dMRVMyX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworICAgICAgSEFWRV9HTEVTMj0ieWVzIgorCitmaQorCisKKyAgICAgIGlmIHRlc3QgIngkSEFWRV9HTEVTMiIgIT0gInh5ZXMiOyB0aGVuCisKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZ2xUZXhJbWFnZTJEIGluIC1sR0xFU3YyIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBnbFRleEltYWdlMkQgaW4gLWxHTEVTdjIuLi4gIiA+JjY7IH0KIGlmICR7YWNfY3ZfbGliX0dMRVN2Ml9nbFRleEltYWdlMkQrOn0gZmFsc2U7IHRoZW4gOgpAQCAtMzMyMzQsOSArMzM5MjksMTA2IEBACiAKIAogCisgICAgICBmaQogICAgIGZpCiAgICAgaWYgdGVzdCAieCRORUVEX0VHTCIgIT0gInhubyI7IHRoZW4KIAorICB3aGljaD0iZWdsIgorICAgIHJlcXVpcmVkPSJubyIKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBFR0wiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEVHTC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkRUdMX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0VHTF9DRkxBR1M9IiRFR0xfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiXCR3aGljaFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkd2hpY2giKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfRUdMX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEVHTF9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfRUdMX0xJQlM9IiRFR0xfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0VHTF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBFR0xfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBlbHNlCisJICAgICAgICBFR0xfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRFR0xfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworICAgICAgSEFWRV9FR0w9Im5vIgorICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRFR0xfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkRUdMX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEVHTF9QS0dfRVJST1JTIiA+JjY7fQorICAgICAgZmkKKworZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCisgICAgICBIQVZFX0VHTD0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEVHTF9QS0dfRVJST1JTIiAiJExJTkVOTyIgNQorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRFR0xfUEtHX0VSUk9SUyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkRUdMX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbHNlCisJRUdMX0NGTEFHUz0kcGtnX2N2X0VHTF9DRkxBR1MKKwlFR0xfTElCUz0kcGtnX2N2X0VHTF9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisKKyAgICAgIEhBVkVfRUdMPSJ5ZXMiCisKK2ZpCisKKworICAgICAgaWYgdGVzdCAieCRIQVZFX0VHTCIgIT0gInh5ZXMiOyB0aGVuCisKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZWdsR2V0RXJyb3IgaW4gLWxFR0wiID4mNQogJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGVnbEdldEVycm9yIGluIC1sRUdMLi4uICIgPiY2OyB9CiBpZiAke2FjX2N2X2xpYl9FR0xfZWdsR2V0RXJyb3IrOn0gZmFsc2U7IHRoZW4gOgpAQCAtMzMyOTksNiArMzQwOTEsNyBAQAogCiAKIAorICAgICAgZmkKICAgICBmaQogCiAgICAgb2xkX0xJQlM9JExJQlMKQEAgLTMzNzQ1LDggKzM0NTM4LDEyMCBAQAogICBmaQogZmkKIAorSEFWRV9EUk1fRk9VUkNDX0hFQURFUj1ubworYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImxpYmRybS9kcm1fZm91cmNjLmgiICJhY19jdl9oZWFkZXJfbGliZHJtX2RybV9mb3VyY2NfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbGliZHJtX2RybV9mb3VyY2NfaCIgPSB4eWVzOyB0aGVuIDoKKyAgSEFWRV9EUk1fRk9VUkNDX0hFQURFUj15ZXMKK2ZpCisKKworCitIQVZFX0dTVF9BTExPQ0FUT1JTPW5vCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIEdTVF9BTExPQ0FUT1JTIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBHU1RfQUxMT0NBVE9SUy4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTPSIkR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImdzdHJlYW1lci1hbGxvY2F0b3JzLTEuMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HU1RfQUxMT0NBVE9SU19DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJnc3RyZWFtZXItYWxsb2NhdG9ycy0xLjAiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHU1RfQUxMT0NBVE9SU19MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfR1NUX0FMTE9DQVRPUlNfTElCUz0iJEdTVF9BTExPQ0FUT1JTX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJnc3RyZWFtZXItYWxsb2NhdG9ycy0xLjBcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9BTExPQ0FUT1JTX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIEdTVF9BTExPQ0FUT1JTX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR1NUX0FMTE9DQVRPUlNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJnc3RyZWFtZXItYWxsb2NhdG9ycy0xLjAiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRHU1RfQUxMT0NBVE9SU19QS0dfRVJST1JTIiA+JjUKKworCWFzX2ZuX2Vycm9yICQ/ICJQYWNrYWdlIHJlcXVpcmVtZW50cyAoZ3N0cmVhbWVyLWFsbG9jYXRvcnMtMS4wKSB3ZXJlIG5vdCBtZXQ6CisKKyRHU1RfQUxMT0NBVE9SU19QS0dfRVJST1JTCisKK0NvbnNpZGVyIGFkanVzdGluZyB0aGUgUEtHX0NPTkZJR19QQVRIIGVudmlyb25tZW50IHZhcmlhYmxlIGlmIHlvdQoraW5zdGFsbGVkIHNvZnR3YXJlIGluIGEgbm9uLXN0YW5kYXJkIHByZWZpeC4KKworQWx0ZXJuYXRpdmVseSwgeW91IG1heSBzZXQgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBHU1RfQUxMT0NBVE9SU19DRkxBR1MKK2FuZCBHU1RfQUxMT0NBVE9SU19MSUJTIHRvIGF2b2lkIHRoZSBuZWVkIHRvIGNhbGwgcGtnLWNvbmZpZy4KK1NlZSB0aGUgcGtnLWNvbmZpZyBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLgorIiAiJExJTkVOTyIgNQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCXsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBlcnJvcjogaW4gXGAkYWNfcHdkJzoiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXJyb3I6IGluIFxgJGFjX3B3ZCc6IiA+JjI7fQorYXNfZm5fZXJyb3IgJD8gIlRoZSBwa2ctY29uZmlnIHNjcmlwdCBjb3VsZCBub3QgYmUgZm91bmQgb3IgaXMgdG9vIG9sZC4gIE1ha2Ugc3VyZSBpdAoraXMgaW4geW91ciBQQVRIIG9yIHNldCB0aGUgUEtHX0NPTkZJRyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB0aGUgZnVsbAorcGF0aCB0byBwa2ctY29uZmlnLgorCitBbHRlcm5hdGl2ZWx5LCB5b3UgbWF5IHNldCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIEdTVF9BTExPQ0FUT1JTX0NGTEFHUworYW5kIEdTVF9BTExPQ0FUT1JTX0xJQlMgdG8gYXZvaWQgdGhlIG5lZWQgdG8gY2FsbCBwa2ctY29uZmlnLgorU2VlIHRoZSBwa2ctY29uZmlnIG1hbiBwYWdlIGZvciBtb3JlIGRldGFpbHMuCisKK1RvIGdldCBwa2ctY29uZmlnLCBzZWUgPGh0dHA6Ly9wa2ctY29uZmlnLmZyZWVkZXNrdG9wLm9yZy8+LgorU2VlIFxgY29uZmlnLmxvZycgZm9yIG1vcmUgZGV0YWlscyIgIiRMSU5FTk8iIDU7IH0KK2Vsc2UKKwlHU1RfQUxMT0NBVE9SU19DRkxBR1M9JHBrZ19jdl9HU1RfQUxMT0NBVE9SU19DRkxBR1MKKwlHU1RfQUxMT0NBVE9SU19MSUJTPSRwa2dfY3ZfR1NUX0FMTE9DQVRPUlNfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCUhBVkVfR1NUX0FMTE9DQVRPUlM9eWVzCitmaQorCitpZiB0ZXN0ICJ4JEhBVkVfRFJNX0ZPVVJDQ19IRUFERVIiID0gInh5ZXMiIC1hIFwKKyAgICAgICAgIngkSEFWRV9HU1RfQUxMT0NBVE9SUyIgPSAieHllcyIgLWEgXAorICAgICAgICAieCRIQVZFX0VHTCIgPSAieHllcyI7IHRoZW4KKworJGFzX2VjaG8gIiNkZWZpbmUgR1NUX0dMX0hBVkVfRE1BQlVGIDEgIiA+PmNvbmZkZWZzLmgKKworZmkKKwogaWYgdGVzdCAieCRIQVZFX0dMIiA9ICJ4eWVzIiAtYSAieCRIQVZFX0dMRVMyIiA9ICJ4eWVzIjsgdGhlbgogICBHTF9JTkNMVURFUz0iCisjaWZkZWYgX19HTlVDX18KKyMgIHByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjICBwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XcmVkdW5kYW50LWRlY2xzXCIKKyNlbmRpZgogI2lmbmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCiAjZGVmaW5lIEdMX0dMRVhUX1BST1RPVFlQRVMgMQogI2VuZGlmCkBAIC0zMzc3MCwyNSArMzQ2NzUsMTUgQEAKICMgICBpbmNsdWRlIDxHTC9nbGV4dC5oPgogIyAgZW5kaWYKICMgZW5kaWYKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsgcmV0dXJuIDA7IH0KICIKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgYm90aCBHTCBhbmQgR0xFUzIgaGVhZGVycyIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgYm90aCBHTCBhbmQgR0xFUzIgaGVhZGVycy4uLiAiID4mNjsgfQotICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0gIENQUEZMQUdTPSIkQ1BQRkxBR1MgJEVSUk9SX0NGTEFHUyIKKyAgc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisgIENGTEFHUz0iJENGTEFHUyAkR0xfQ0ZMQUdTICRHTEVTMl9DRkxBR1MgJFdBUk5JTkdfQ0ZMQUdTICRFUlJPUl9DRkxBR1MiCiAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICRHTF9JTkNMVURFUwotaW50Ci1tYWluICgpCi17Ci0KLSAgICAjaWYgIWRlZmluZWQoR0xfRkFMU0UpCi0gICAgI2Vycm9yIEZhaWxlZCB0byBpbmNsdWRlIEdMIGhlYWRlcnMKLSAgICAjZW5kaWYKLQotICA7Ci0gIHJldHVybiAwOwotfQogX0FDRU9GCiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKQEAgLTMzODEzLDcgKzM0NzA4LDcgQEAKIAogZmkKIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCisgIENGTEFHUz0iJHNhdmVfQ0ZMQUdTIgogZmkKIAogI2RubCBDaGVjayBmb3IgT3BlbkdMCkBAIC0zNDM1OSw2ICszNTI1NCw3IEBACiBHU1RfR0xfSEFWRV9HTElOVFBUUj0wCiBHU1RfR0xfSEFWRV9HTFNZTkM9MAogR1NUX0dMX0hBVkVfR0xVSU5UNjQ9MAorR1NUX0dMX0hBVkVfR0xJTlQ2ND0wCiAKIG9sZF9DRkxBR1M9JENGTEFHUwogQ0ZMQUdTPSIkR0xfQ0ZMQUdTICRDRkxBR1MiCkBAIC0zNDQ1Myw2ICszNTM0OSwyMSBAQAogICBHU1RfR0xfSEFWRV9HTFVJTlQ2ND0xCiBmaQogCithY19mbl9jX2NoZWNrX3R5cGUgIiRMSU5FTk8iICJHTGludDY0IiAiYWNfY3ZfdHlwZV9HTGludDY0IiAiJEdMX0lOQ0xVREVTCisiCitpZiB0ZXN0ICJ4JGFjX2N2X3R5cGVfR0xpbnQ2NCIgPSB4eWVzOyB0aGVuIDoKKworY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgorI2RlZmluZSBIQVZFX0dMSU5UNjQgMQorX0FDRU9GCisKKworZmkKKworaWYgdGVzdCAieCRhY19jdl90eXBlX0dMaW50NjQiID0gInh5ZXMiOyB0aGVuCisgIEdTVF9HTF9IQVZFX0dMSU5UNjQ9MQorZmkKKwogQ0ZMQUdTPSRvbGRfQ0ZMQUdTCiAKIEdMX0NPTkZJR19ERUZJTkVTPSIkR0xfQ09ORklHX0RFRklORVMKQEAgLTM0NDYyLDYgKzM1MzczLDcgQEAKICNkZWZpbmUgR1NUX0dMX0hBVkVfR0xJTlRQVFIgJEdTVF9HTF9IQVZFX0dMSU5UUFRSCiAjZGVmaW5lIEdTVF9HTF9IQVZFX0dMU1lOQyAkR1NUX0dMX0hBVkVfR0xTWU5DCiAjZGVmaW5lIEdTVF9HTF9IQVZFX0dMVUlOVDY0ICRHU1RfR0xfSEFWRV9HTFVJTlQ2NAorI2RlZmluZSBHU1RfR0xfSEFWRV9HTElOVDY0ICRHU1RfR0xfSEFWRV9HTElOVDY0CiAiCiAKIGFjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIKQEAgLTM0Njc2LDYgKzM1NTg4LDk1IEBACiBmaQogCiAKK1ZVTEtBTl9DT05GSUdfREVGSU5FUz0iIgorCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFhDQiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgWENCLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRYQ0JfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfWENCX0NGTEFHUz0iJFhDQl9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJ4Y2IgPj0gMS4xMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJ4Y2IgPj0gMS4xMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9YQ0JfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAieGNiID49IDEuMTAiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRYQ0JfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X1hDQl9MSUJTPSIkWENCX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJ4Y2IgPj0gMS4xMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJ4Y2IgPj0gMS4xMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9YQ0JfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJ4Y2IgPj0gMS4xMCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBYQ0JfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJ4Y2IgPj0gMS4xMCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIFhDQl9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgInhjYiA+PSAxLjEwImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkWENCX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgICAgICAgICAgICAgSEFWRV9YQ0I9bm8KK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKwlIQVZFX1hDQj1ubworZWxzZQorCVhDQl9DRkxBR1M9JHBrZ19jdl9YQ0JfQ0ZMQUdTCisJWENCX0xJQlM9JHBrZ19jdl9YQ0JfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCUhBVkVfWENCPXllcworZmkKKworIGlmIHRlc3QgIngkSEFWRV9YQ0IiID0gInh5ZXMiOyB0aGVuCisgIFVTRV9YQ0JfVFJVRT0KKyAgVVNFX1hDQl9GQUxTRT0nIycKK2Vsc2UKKyAgVVNFX1hDQl9UUlVFPScjJworICBVU0VfWENCX0ZBTFNFPQorZmkKKworaWYgdGVzdCAieCRIQVZFX1hDQiIgPSAieHllcyI7IHRoZW4KKyAgVlVMS0FOX0NPTkZJR19ERUZJTkVTPSIkVlVMS0FOX0NPTkZJR19ERUZJTkVTCisgICNkZWZpbmUgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IgMSIKK2ZpCisKK2FjX2NvbmZpZ19jb21tYW5kcz0iJGFjX2NvbmZpZ19jb21tYW5kcyBleHQvdnVsa2FuL3ZrY29uZmlnLmgiCisKIAogCiBlY2hvCkBAIC0zNjYwMSw2ICszNzYwMiwxMTUyIEBACiAKIAogCitlY2hvCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBjaGVja2luZyBmZWF0dXJlOiBOVklESUEgRW5jb2RlIEFQSSAqKioiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IE5WSURJQSBFbmNvZGUgQVBJICoqKiIgPiY2O30KK2lmIHRlc3QgInhudmVuYyIgIT0gIngiCit0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGZvciBwbHVnLWluczogbnZlbmMgKioqIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBmb3IgcGx1Zy1pbnM6IG52ZW5jICoqKiIgPiY2O30KK2ZpCitOT1VTRT0KK2lmIHRlc3QgIngkVVNFX05WRU5DIiA9ICJ4bm8iOyB0aGVuCisgIE5PVVNFPSJ5ZXMiCitmaQorIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW52ZW5jIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX252ZW5jK3NldH0iID0gc2V0OyB0aGVuIDoKKyAgZW5hYmxldmFsPSRlbmFibGVfbnZlbmM7ICBjYXNlICIke2VuYWJsZXZhbH0iIGluCisgICAgICB5ZXMpIFVTRV9OVkVOQz15ZXM7OworICAgICAgbm8pIFVTRV9OVkVOQz1ubzs7CisgICAgICAqKSBhc19mbl9lcnJvciAkPyAiYmFkIHZhbHVlICR7ZW5hYmxldmFsfSBmb3IgLS1lbmFibGUtbnZlbmMiICIkTElORU5PIiA1IDs7CisgICAgZXNhYworZWxzZQorICAgVVNFX05WRU5DPXllcworZmkKKworaWYgdGVzdCAieCROT1VTRSIgPSAieHllcyI7IHRoZW4KKyAgVVNFX05WRU5DPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAqKiogbnZlbmMgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBudmVuYyBwcmUtY29uZmlndXJlZCBub3QgdG8gYmUgYnVpbHQiID4mMjt9CitmaQorTk9VU0U9CisKK2lmIGVjaG8gIiAkR1NUX1BMVUdJTlNfTk9OUE9SVEVEICIgfCB0ciAsICcgJyB8IGdyZXAgLWkgIiBOVkVOQyAiID4gL2Rldi9udWxsOyB0aGVuCisgIFVTRV9OVkVOQz0ibm8iCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIG52ZW5jIG5vdCBwb3J0ZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogKioqIG52ZW5jIG5vdCBwb3J0ZWQiID4mMjt9CitmaQorCisKK2lmIHRlc3QgeCRVU0VfTlZFTkMgPSB4eWVzOyB0aGVuCisKKyAgZ3N0X2NoZWNrX3NhdmVfTElCUz0kTElCUworICBnc3RfY2hlY2tfc2F2ZV9MREZMQUdTPSRMREZMQUdTCisgIGdzdF9jaGVja19zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgIGdzdF9jaGVja19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworICBnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKKworICBIQVZFX05WRU5DPW5vCisKKworICB3aGljaD0iZ3N0cmVhbWVyLXZpZGVvLTEuMCIKKyAgICByZXF1aXJlZD0ibm8iCisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgR1NUX1ZJREVPIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBHU1RfVklERU8uLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdTVF9WSURFT19DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HU1RfVklERU9fQ0ZMQUdTPSIkR1NUX1ZJREVPX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9WSURFT19DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICIkd2hpY2giIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRHU1RfVklERU9fTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dTVF9WSURFT19MSUJTPSIkR1NUX1ZJREVPX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJcJHdoaWNoXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIiR3aGljaCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HU1RfVklERU9fTElCUz1gJFBLR19DT05GSUcgLS1saWJzICIkd2hpY2giIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgR1NUX1ZJREVPX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR1NUX1ZJREVPX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkR1NUX1ZJREVPX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKyAgICAgIEhBVkVfR1NUX1ZJREVPPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkR1NUX1ZJREVPX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdTVF9WSURFT19QS0dfRVJST1JTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRHU1RfVklERU9fUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCisKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgSEFWRV9HU1RfVklERU89Im5vIgorICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRHU1RfVklERU9fUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR1NUX1ZJREVPX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdTVF9WSURFT19QS0dfRVJST1JTIiA+JjY7fQorICAgICAgZmkKKworZWxzZQorCUdTVF9WSURFT19DRkxBR1M9JHBrZ19jdl9HU1RfVklERU9fQ0ZMQUdTCisJR1NUX1ZJREVPX0xJQlM9JHBrZ19jdl9HU1RfVklERU9fTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCisgICAgICBIQVZFX0dTVF9WSURFTz0ieWVzIgorCitmaQorCisKKworICB3aGljaD0iZ3N0cmVhbWVyLXBidXRpbHMtMS4wIgorICAgIHJlcXVpcmVkPSJubyIKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHU1RfUEJVVElMUyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgR1NUX1BCVVRJTFMuLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdTVF9QQlVUSUxTX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dTVF9QQlVUSUxTX0NGTEFHUz0iJEdTVF9QQlVUSUxTX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9QQlVUSUxTX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJEdTVF9QQlVUSUxTX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HU1RfUEJVVElMU19MSUJTPSIkR1NUX1BCVVRJTFNfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0dTVF9QQlVUSUxTX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiJHdoaWNoIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIEdTVF9QQlVUSUxTX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR1NUX1BCVVRJTFNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRHU1RfUEJVVElMU19QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICBIQVZFX0dTVF9QQlVUSUxTPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkR1NUX1BCVVRJTFNfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR1NUX1BCVVRJTFNfUEtHX0VSUk9SUyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAkR1NUX1BCVVRJTFNfUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCisKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgSEFWRV9HU1RfUEJVVElMUz0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdTVF9QQlVUSUxTX1BLR19FUlJPUlMiICIkTElORU5PIiA1CisgICAgICBlbHNlCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogJEdTVF9QQlVUSUxTX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJEdTVF9QQlVUSUxTX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQorCitlbHNlCisJR1NUX1BCVVRJTFNfQ0ZMQUdTPSRwa2dfY3ZfR1NUX1BCVVRJTFNfQ0ZMQUdTCisJR1NUX1BCVVRJTFNfTElCUz0kcGtnX2N2X0dTVF9QQlVUSUxTX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworICAgICAgSEFWRV9HU1RfUEJVVElMUz0ieWVzIgorCitmaQorCisKKworIyBDaGVjayB3aGV0aGVyIC0td2l0aC1jdWRhLXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfY3VkYV9wcmVmaXgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICB3aXRodmFsPSR3aXRoX2N1ZGFfcHJlZml4OyBpZiB0ZXN0ICJ4JHdpdGhfY3VkYV9wcmVmaXgiICE9ICJ4IjsgdGhlbiA6CisgIENVREFfUFJFRklYPSIkd2l0aF9jdWRhX3ByZWZpeCIKK2ZpCitlbHNlCisgIENVREFfUFJFRklYPSIiCitmaQorCisKKyAgSEFWRV9DVURBPSJ5ZXMiCisgIGlmIHRlc3QgIngkQ1VEQV9QUkVGSVgiICE9ICJ4IjsgdGhlbgorICAgICAgICBpZiB0ZXN0ICJ4JENVREFfQ0ZMQUdTIiA9ICJ4IiAtYSAieCRDVURBX0xJQlMiID0gIngiOyB0aGVuCisgICAgICAgICAgICBDVURBX0NGTEFHUz0iLUkkQ1VEQV9QUkVGSVgvaW5jbHVkZSIKKyAgICAgIENVREFfTElCUz0iLUwkQ1VEQV9QUkVGSVgvbGliIC1MJENVREFfUFJFRklYL2xpYjY0IC1MJENVREFfUFJFRklYL2xpYi9zdHVicyAtTCRDVURBX1BSRUZJWC9saWI2NC9zdHVicyAtbGN1ZGEgLWxjdWRhcnQiCisgICAgZmkKKyAgZWxzZQorCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDVURBIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDVURBLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfQ0ZMQUdTPSIkQ1VEQV9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTcuNSBjdWRhcnQtNy41XCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNy41IGN1ZGFydC03LjUiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJjdWRhLTcuNSBjdWRhcnQtNy41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9MSUJTPSIkQ1VEQV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS03LjUgY3VkYXJ0LTcuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuNSBjdWRhcnQtNy41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJjdWRhLTcuNSBjdWRhcnQtNy41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuNSBjdWRhcnQtNy41ImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNy41IGN1ZGFydC03LjUiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRDVURBX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ1VEQSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ1VEQS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0NGTEFHUz0iJENVREFfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS03LjAgY3VkYXJ0LTcuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiY3VkYS03LjAgY3VkYXJ0LTcuMCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfTElCUz0iJENVREFfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNy4wIGN1ZGFydC03LjBcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS03LjAgY3VkYXJ0LTcuMCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiY3VkYS03LjAgY3VkYXJ0LTcuMCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS03LjAgY3VkYXJ0LTcuMCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkQ1VEQV9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIENVREEiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIENVREEuLi4gIiA+JjY7IH0KKworaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9DRkxBR1M9IiRDVURBX0NGTEFHUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNi41IGN1ZGFydC02LjVcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgImN1ZGEtNi41IGN1ZGFydC02LjUiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0xJQlM9IiRDVURBX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTYuNSBjdWRhcnQtNi41XCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImN1ZGEtNi41IGN1ZGFydC02LjUiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiYAorICAgICAgICBlbHNlCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSJgCisgICAgICAgIGZpCisJIyBQdXQgdGhlIG5hc3R5IGVycm9yIG1lc3NhZ2UgaW4gY29uZmlnLmxvZyB3aGVyZSBpdCBiZWxvbmdzCisJZWNobyAiJENVREFfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKworICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjI7fQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mMjt9CitlbHNlCisJQ1VEQV9DRkxBR1M9JHBrZ19jdl9DVURBX0NGTEFHUworCUNVREFfTElCUz0kcGtnX2N2X0NVREFfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCToKK2ZpCitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ1VEQSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ1VEQS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0NGTEFHUz0iJENVREFfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS02LjUgY3VkYXJ0LTYuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfTElCUz0iJENVREFfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNi41IGN1ZGFydC02LjVcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41ImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkQ1VEQV9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mMjt9CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiYyO30KK2Vsc2UKKwlDVURBX0NGTEFHUz0kcGtnX2N2X0NVREFfQ0ZMQUdTCisJQ1VEQV9MSUJTPSRwa2dfY3ZfQ1VEQV9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJOgorZmkKK2Vsc2UKKwlDVURBX0NGTEFHUz0kcGtnX2N2X0NVREFfQ0ZMQUdTCisJQ1VEQV9MSUJTPSRwa2dfY3ZfQ1VEQV9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJOgorZmkKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDVURBIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDVURBLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfQ0ZMQUdTPSIkQ1VEQV9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTcuMCBjdWRhcnQtNy4wXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNy4wIGN1ZGFydC03LjAiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJjdWRhLTcuMCBjdWRhcnQtNy4wIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9MSUJTPSIkQ1VEQV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS03LjAgY3VkYXJ0LTcuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJjdWRhLTcuMCBjdWRhcnQtNy4wIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTcuMCBjdWRhcnQtNy4wImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNy4wIGN1ZGFydC03LjAiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRDVURBX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgQ1VEQSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgQ1VEQS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9DVURBX0NGTEFHUz0iJENVREFfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS02LjUgY3VkYXJ0LTYuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJENVREFfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfTElCUz0iJENVREFfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImN1ZGEtNi41IGN1ZGFydC02LjVcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9DVURBX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiY3VkYS02LjUgY3VkYXJ0LTYuNSIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBDVURBX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiY3VkYS02LjUgY3VkYXJ0LTYuNSJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41ImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkQ1VEQV9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorCisgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mMjt9CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiYyO30KK2Vsc2UKKwlDVURBX0NGTEFHUz0kcGtnX2N2X0NVREFfQ0ZMQUdTCisJQ1VEQV9MSUJTPSRwa2dfY3ZfQ1VEQV9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisJOgorZmkKK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBDVURBIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBDVURBLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRDVURBX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0NVREFfQ0ZMQUdTPSIkQ1VEQV9DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJjdWRhLTYuNSBjdWRhcnQtNi41XCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiKSAyPiY1CisgIGFjX3N0YXR1cz0kPworICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgorICBwa2dfY3ZfQ1VEQV9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJjdWRhLTYuNSBjdWRhcnQtNi41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkQ1VEQV9MSUJTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfQ1VEQV9MSUJTPSIkQ1VEQV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiY3VkYS02LjUgY3VkYXJ0LTYuNVwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41IikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X0NVREFfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJjdWRhLTYuNSBjdWRhcnQtNi41IiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCisKKworCitpZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCisKK2lmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKK2Vsc2UKKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCitmaQorICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KKwkgICAgICAgIENVREFfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJjdWRhLTYuNSBjdWRhcnQtNi41ImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgQ1VEQV9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImN1ZGEtNi41IGN1ZGFydC02LjUiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRDVURBX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEgaGVhZGVycy9saWJyYXJpZXMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiYyO30KK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBoZWFkZXJzL2xpYnJhcmllcyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzIiA+JjI7fQorZWxzZQorCUNVREFfQ0ZMQUdTPSRwa2dfY3ZfQ1VEQV9DRkxBR1MKKwlDVURBX0xJQlM9JHBrZ19jdl9DVURBX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKwk6CitmaQorZWxzZQorCUNVREFfQ0ZMQUdTPSRwa2dfY3ZfQ1VEQV9DRkxBR1MKKwlDVURBX0xJQlM9JHBrZ19jdl9DVURBX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKwk6CitmaQorZWxzZQorCUNVREFfQ0ZMQUdTPSRwa2dfY3ZfQ1VEQV9DRkxBR1MKKwlDVURBX0xJQlM9JHBrZ19jdl9DVURBX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKwk6CitmaQorICBmaQorCisgIEhBVkVfQ1VEQV9IPW5vCisgIEhBVkVfQ1VEQVJUX0g9bm8KKyAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBDUFBGTEFHUz0iJENVREFfQ0ZMQUdTICRzYXZlX0NQUEZMQUdTICIKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImN1ZGEuaCIgImFjX2N2X2hlYWRlcl9jdWRhX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX2N1ZGFfaCIgPSB4eWVzOyB0aGVuIDoKKyAgSEFWRV9DVURBX0g9eWVzCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYS5oIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGEuaCIgPiYyO30KK2ZpCisKKworICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiY3VkYV9ydW50aW1lX2FwaS5oIiAiYWNfY3ZfaGVhZGVyX2N1ZGFfcnVudGltZV9hcGlfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfY3VkYV9ydW50aW1lX2FwaV9oIiA9IHh5ZXM7IHRoZW4gOgorICBIQVZFX0NVREFSVF9IPXllcworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGFfcnVudGltZV9hcGkuaCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhX3J1bnRpbWVfYXBpLmgiID4mMjt9CitmaQorCisKKyAgQ1BQRkxBR1M9JHNhdmVfQ1BQRkxBR1MKKworICAgIHNhdmVfTElCUz0iJExJQlMiCisgIExJQlM9IiRDVURBX0xJQlMgJHNhdmVfTElCUyIKKyAgSEFWRV9DVURBUlRfTElCPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY3VkYUdldEVycm9yU3RyaW5nIGluIC1sY3VkYXJ0IiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBjdWRhR2V0RXJyb3JTdHJpbmcgaW4gLWxjdWRhcnQuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX2N1ZGFydF9jdWRhR2V0RXJyb3JTdHJpbmcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGN1ZGFydCAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgY3VkYUdldEVycm9yU3RyaW5nICgpOworaW50CittYWluICgpCit7CityZXR1cm4gY3VkYUdldEVycm9yU3RyaW5nICgpOworICA7CisgIHJldHVybiAwOworfQorX0FDRU9GCitpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgIGFjX2N2X2xpYl9jdWRhcnRfY3VkYUdldEVycm9yU3RyaW5nPXllcworZWxzZQorICBhY19jdl9saWJfY3VkYXJ0X2N1ZGFHZXRFcnJvclN0cmluZz1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfY3VkYXJ0X2N1ZGFHZXRFcnJvclN0cmluZyIgPiY1CiskYXNfZWNobyAiJGFjX2N2X2xpYl9jdWRhcnRfY3VkYUdldEVycm9yU3RyaW5nIiA+JjY7IH0KK2lmIHRlc3QgIngkYWNfY3ZfbGliX2N1ZGFydF9jdWRhR2V0RXJyb3JTdHJpbmciID0geHllczsgdGhlbiA6CisgIEhBVkVfQ1VEQVJUX0xJQj0ieWVzIgorZWxzZQorCisgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGFydCBsaWJyYXJ5IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGN1ZGFydCBsaWJyYXJ5IiA+JjI7fQorZmkKKworICBIQVZFX0NVREFfTElCPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgY3VJbml0IGluIC1sY3VkYSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgY3VJbml0IGluIC1sY3VkYS4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfY3VkYV9jdUluaXQrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCitMSUJTPSItbGN1ZGEgICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIGN1SW5pdCAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIGN1SW5pdCAoKTsKKyAgOworICByZXR1cm4gMDsKK30KK19BQ0VPRgoraWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorICBhY19jdl9saWJfY3VkYV9jdUluaXQ9eWVzCitlbHNlCisgIGFjX2N2X2xpYl9jdWRhX2N1SW5pdD1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfY3VkYV9jdUluaXQiID4mNQorJGFzX2VjaG8gIiRhY19jdl9saWJfY3VkYV9jdUluaXQiID4mNjsgfQoraWYgdGVzdCAieCRhY19jdl9saWJfY3VkYV9jdUluaXQiID0geHllczsgdGhlbiA6CisgIEhBVkVfQ1VEQV9MSUI9InllcyIKK2Vsc2UKKworICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBDb3VsZCBub3QgZmluZCBjdWRhIGxpYnJhcnkiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgY3VkYSBsaWJyYXJ5IiA+JjI7fQorZmkKKworICBMSUJTPSIkc2F2ZV9MSUJTIgorCisgICAgSEFWRV9OVkVOQ09ERUFQSV9IPW5vCisKKyAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBDUFBGTEFHUz0iJE5WRU5DT0RFX0NGTEFHUyAkc2F2ZV9DUFBGTEFHUyIKKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgIm52RW5jb2RlQVBJLmgiICJhY19jdl9oZWFkZXJfbnZFbmNvZGVBUElfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfbnZFbmNvZGVBUElfaCIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworI2luY2x1ZGUgPG52RW5jb2RlQVBJLmg+CisgICAgICAgICAgI2lmIE5WRU5DQVBJX01BSk9SX1ZFUlNJT04gPCA1CisgICAgICAgICAgI2Vycm9yICJOZWVkIG52RW5jb2RlQVBJLmggPj0gNS4wIgorICAgICAgICAgICNlbmRpZgorCitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2NwcCAiJExJTkVOTyI7IHRoZW4gOgorCisgICAgICAgICAgSEFWRV9OVkVOQ09ERUFQSV9IPXllcworCitlbHNlCisKKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IG52RW5jb2RlQVBJLmggbXVzdCBiZSA+PSA1LjAiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogbnZFbmNvZGVBUEkuaCBtdXN0IGJlID49IDUuMCIgPiYyO30KKworZmkKK3JtIC1mIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC5pIGNvbmZ0ZXN0LiRhY19leHQKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIG52RW5jb2RlQVBJLmgiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgbnZFbmNvZGVBUEkuaCIgPiYyO30KK2ZpCisKKworCisgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKworICAgIEhBVkVfTlZFTkNPREVfTElCPW5vCisKKyAgc2F2ZWRfTElCUz0iJExJQlMiCisgIExJQlM9IiROVkVOQ09ERV9MSUJTICRzYXZlZF9MSUJTIgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBOdkVuY29kZUFQSUNyZWF0ZUluc3RhbmNlIGluIC1sbnZpZGlhLWVuY29kZSIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSBpbiAtbG52aWRpYS1lbmNvZGUuLi4gIiA+JjY7IH0KK2lmICR7YWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSs6fSBmYWxzZTsgdGhlbiA6CisgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CitlbHNlCisgIGFjX2NoZWNrX2xpYl9zYXZlX0xJQlM9JExJQlMKK0xJQlM9Ii1sbnZpZGlhLWVuY29kZSAgJExJQlMiCitjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisvKiBlbmQgY29uZmRlZnMuaC4gICovCisKKy8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgorICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCisgICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLworI2lmZGVmIF9fY3BsdXNwbHVzCitleHRlcm4gIkMiCisjZW5kaWYKK2NoYXIgTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSAoKTsKK2ludAorbWFpbiAoKQoreworcmV0dXJuIE52RW5jb2RlQVBJQ3JlYXRlSW5zdGFuY2UgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfbnZpZGlhX2VuY29kZV9OdkVuY29kZUFQSUNyZWF0ZUluc3RhbmNlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX252aWRpYV9lbmNvZGVfTnZFbmNvZGVBUElDcmVhdGVJbnN0YW5jZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl9udmlkaWFfZW5jb2RlX052RW5jb2RlQVBJQ3JlYXRlSW5zdGFuY2UiID0geHllczsgdGhlbiA6CisgIEhBVkVfTlZFTkNPREVfTElCPSJ5ZXMiCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogQ291bGQgbm90IGZpbmQgbGlicmFyeSBudmlkaWEtZW5jb2RlIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGxpYnJhcnkgbnZpZGlhLWVuY29kZSIgPiYyO30KK2ZpCisKKyAgTlZFTkNPREVfTElCUz0iJE5WRU5DT0RFX0xJQlMgLWxudmlkaWEtZW5jb2RlIgorCisgIExJQlM9IiRzYXZlZF9MSUJTIgorCisgIFVTRV9OVkVOQ19HU1RfR0w9bm8KKyAgaWYgdGVzdCAieCRIQVZFX0NVREFfSCIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9DVURBUlRfSCIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9DVURBX0xJQiIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9DVURBUlRfTElCIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX05WRU5DT0RFQVBJX0giID0gInh5ZXMiIFwKKyAgICAgIC1hICJ4JEhBVkVfTlZFTkNPREVfTElCIiA9ICJ4eWVzIjsgdGhlbgorICAgIEhBVkVfTlZFTkM9InllcyIKKyAgICBpZiB0ZXN0IHgiJFVTRV9PUEVOR0wiID0geCJ5ZXMiOyB0aGVuCisgICAgICAgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MgJENVREFfQ0ZMQUdTIgorICAgICAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgImN1ZGFfZ2xfaW50ZXJvcC5oIiAiYWNfY3ZfaGVhZGVyX2N1ZGFfZ2xfaW50ZXJvcF9oIiAiJGFjX2luY2x1ZGVzX2RlZmF1bHQiCitpZiB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9jdWRhX2dsX2ludGVyb3BfaCIgPSB4eWVzOyB0aGVuIDoKKworICAgICAgICBVU0VfTlZFTkNfR1NUX0dMPSJ5ZXMiCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfTlZFTkNfR1NUX0dMIDEgIiA+PmNvbmZkZWZzLmgKKworCitmaQorCisKKyAgICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgICBmaQorICBlbHNlCisgICAgSEFWRV9OVkVOQz0ibm8iCisgIGZpCisKKworICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCisgIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKKyAgQ0ZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DRkxBR1MKKyAgQ1BQRkxBR1M9JGdzdF9jaGVja19zYXZlX0NQUEZMQUdTCisgIENYWEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUworCisgICAgaWYgdGVzdCB4JEhBVkVfTlZFTkMgPSB4bm87IHRoZW4KKyAgICBVU0VfTlZFTkM9bm8KKyAgZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogbnZlbmMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogbnZlbmMiID4mNjt9CisgIGZpCitmaQoraWYgdGVzdCB4JFVTRV9OVkVOQyA9IHh5ZXM7IHRoZW4KKyAgOgorICBpZiB0ZXN0ICJ4bnZlbmMiICE9ICJ4IjsgdGhlbgorICAgIEdTVF9QTFVHSU5TX1lFUz0iXHRudmVuY1xuJEdTVF9QTFVHSU5TX1lFUyIKKyAgZmkKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9OVkVOQyAvKiovIiA+PmNvbmZkZWZzLmgKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiBudmVuYyIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIG5vdCBiZSBidWlsdDogbnZlbmMiID4mNjt9CisgIGlmIHRlc3QgInhudmVuYyIgIT0gIngiOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfTk89Ilx0bnZlbmNcbiRHU1RfUExVR0lOU19OTyIKKyAgZmkKKyAgOgorZmkKKyBpZiB0ZXN0IHgkVVNFX05WRU5DID0geHllczsgdGhlbgorICBVU0VfTlZFTkNfVFJVRT0KKyAgVVNFX05WRU5DX0ZBTFNFPScjJworZWxzZQorICBVU0VfTlZFTkNfVFJVRT0nIycKKyAgVVNFX05WRU5DX0ZBTFNFPQorZmkKKworCisgaWYgdGVzdCAieCRVU0VfTlZFTkNfR1NUX0dMIiA9ICJ4eWVzIjsgdGhlbgorICBVU0VfTlZFTkNfR1NUX0dMX1RSVUU9CisgIFVTRV9OVkVOQ19HU1RfR0xfRkFMU0U9JyMnCitlbHNlCisgIFVTRV9OVkVOQ19HU1RfR0xfVFJVRT0nIycKKyAgVVNFX05WRU5DX0dTVF9HTF9GQUxTRT0KK2ZpCisKKworZWNobworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogdGlueWFsc2EgKioqIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiB0aW55YWxzYSAqKioiID4mNjt9CitpZiB0ZXN0ICJ4dGlueWFsc2EiICE9ICJ4IgordGhlbgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBmb3IgcGx1Zy1pbnM6IHRpbnlhbHNhICoqKiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAqKiogZm9yIHBsdWctaW5zOiB0aW55YWxzYSAqKioiID4mNjt9CitmaQorTk9VU0U9CitpZiB0ZXN0ICJ4JFVTRV9USU5ZQUxTQSIgPSAieG5vIjsgdGhlbgorICBOT1VTRT0ieWVzIgorZmkKKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS10aW55YWxzYSB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke2VuYWJsZV90aW55YWxzYStzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3RpbnlhbHNhOyAgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgorICAgICAgeWVzKSBVU0VfVElOWUFMU0E9eWVzOzsKKyAgICAgIG5vKSBVU0VfVElOWUFMU0E9bm87OworICAgICAgKikgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXRpbnlhbHNhIiAiJExJTkVOTyIgNSA7OworICAgIGVzYWMKK2Vsc2UKKyAgIFVTRV9USU5ZQUxTQT15ZXMKK2ZpCisKK2lmIHRlc3QgIngkTk9VU0UiID0gInh5ZXMiOyB0aGVuCisgIFVTRV9USU5ZQUxTQT0ibm8iCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIHRpbnlhbHNhIHByZS1jb25maWd1cmVkIG5vdCB0byBiZSBidWlsdCIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiAqKiogdGlueWFsc2EgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjI7fQorZmkKK05PVVNFPQorCitpZiBlY2hvICIgJEdTVF9QTFVHSU5TX05PTlBPUlRFRCAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgVElOWUFMU0EgIiA+IC9kZXYvbnVsbDsgdGhlbgorICBVU0VfVElOWUFMU0E9Im5vIgorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiB0aW55YWxzYSBub3QgcG9ydGVkIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiB0aW55YWxzYSBub3QgcG9ydGVkIiA+JjI7fQorZmkKKworCitpZiB0ZXN0IHgkVVNFX1RJTllBTFNBID0geHllczsgdGhlbgorCisgIGdzdF9jaGVja19zYXZlX0xJQlM9JExJQlMKKyAgZ3N0X2NoZWNrX3NhdmVfTERGTEFHUz0kTERGTEFHUworICBnc3RfY2hlY2tfc2F2ZV9DRkxBR1M9JENGTEFHUworICBnc3RfY2hlY2tfc2F2ZV9DUFBGTEFHUz0kQ1BQRkxBR1MKKyAgZ3N0X2NoZWNrX3NhdmVfQ1hYRkxBR1M9JENYWEZMQUdTCisKKyAgSEFWRV9USU5ZQUxTQT1ubworCisgIGFjX2ZuX2NfY2hlY2tfaGVhZGVyX21vbmdyZWwgIiRMSU5FTk8iICJ0aW55YWxzYS9hc291bmRsaWIuaCIgImFjX2N2X2hlYWRlcl90aW55YWxzYV9hc291bmRsaWJfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgoraWYgdGVzdCAieCRhY19jdl9oZWFkZXJfdGlueWFsc2FfYXNvdW5kbGliX2giID0geHllczsgdGhlbiA6CisgIEhBVkVfVElOWUFMU0E9InllcyIKK2Vsc2UKKyAgSEFWRV9USU5ZQUxTQT0ibm8iCitmaQorCisKKworCisgIExJQlM9JGdzdF9jaGVja19zYXZlX0xJQlMKKyAgTERGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfTERGTEFHUworICBDRkxBR1M9JGdzdF9jaGVja19zYXZlX0NGTEFHUworICBDUFBGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ1BQRkxBR1MKKyAgQ1hYRkxBR1M9JGdzdF9jaGVja19zYXZlX0NYWEZMQUdTCisKKyAgICBpZiB0ZXN0IHgkSEFWRV9USU5ZQUxTQSA9IHhubzsgdGhlbgorICAgIFVTRV9USU5ZQUxTQT1ubworICBlbHNlCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGJ1aWx0OiB0aW55YWxzYSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGJ1aWx0OiB0aW55YWxzYSIgPiY2O30KKyAgZmkKK2ZpCitpZiB0ZXN0IHgkVVNFX1RJTllBTFNBID0geHllczsgdGhlbgorICA6CisgIGlmIHRlc3QgInh0aW55YWxzYSIgIT0gIngiOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfWUVTPSJcdHRpbnlhbHNhXG4kR1NUX1BMVUdJTlNfWUVTIgorICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1RJTllBTFNBIC8qKi8iID4+Y29uZmRlZnMuaAorCitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IHRpbnlhbHNhIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiB0aW55YWxzYSIgPiY2O30KKyAgaWYgdGVzdCAieHRpbnlhbHNhIiAhPSAieCI7IHRoZW4KKyAgICBHU1RfUExVR0lOU19OTz0iXHR0aW55YWxzYVxuJEdTVF9QTFVHSU5TX05PIgorICBmaQorICA6CitmaQorIGlmIHRlc3QgeCRVU0VfVElOWUFMU0EgPSB4eWVzOyB0aGVuCisgIFVTRV9USU5ZQUxTQV9UUlVFPQorICBVU0VfVElOWUFMU0FfRkFMU0U9JyMnCitlbHNlCisgIFVTRV9USU5ZQUxTQV9UUlVFPScjJworICBVU0VfVElOWUFMU0FfRkFMU0U9CitmaQorCisKIAogCiBpZiB0ZXN0ICJ4JEJVSUxEX0VYVEVSTkFMIiA9ICJ4eWVzIjsgdGhlbgpAQCAtMzY2NjIsMTIgKzM4ODA5LDEyIEBACiAgICAgICAgIHBrZ19jdl9BU1NSRU5ERVJfQ0ZMQUdTPSIkQVNTUkVOREVSX0NGTEFHUyIKICAgICBlbHNlCiAgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImxpYmFzcyA+PSAwLjkuNFwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJsaWJhc3MgPj0gMC45LjQiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcImxpYmFzcyA+PSAwLjEwLjJcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGliYXNzID49IDAuMTAuMiIpIDI+JjUKICAgYWNfc3RhdHVzPSQ/CiAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQogICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9BU1NSRU5ERVJfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGliYXNzID49IDAuOS40IiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X0FTU1JFTkRFUl9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJsaWJhc3MgPj0gMC4xMC4yIiAyPi9kZXYvbnVsbGAKIGVsc2UKICAgcGtnX2ZhaWxlZD15ZXMKIGZpCkBAIC0zNjY4MCwxMiArMzg4MjcsMTIgQEAKICAgICAgICAgcGtnX2N2X0FTU1JFTkRFUl9MSUJTPSIkQVNTUkVOREVSX0xJQlMiCiAgICAgZWxzZQogICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJhc3MgPj0gMC45LjRcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGliYXNzID49IDAuOS40IikgMj4mNQorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJhc3MgPj0gMC4xMC4yXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYmFzcyA+PSAwLjEwLjIiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfQVNTUkVOREVSX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAibGliYXNzID49IDAuOS40IiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X0FTU1JFTkRFUl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgImxpYmFzcyA+PSAwLjEwLjIiIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTM2NzA0LDkgKzM4ODUxLDkgQEAKICAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCiBmaQogICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIEFTU1JFTkRFUl9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImxpYmFzcyA+PSAwLjkuNCJgCisJICAgICAgICBBU1NSRU5ERVJfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJhc3MgPj0gMC4xMC4yImAKICAgICAgICAgZWxzZQotCSAgICAgICAgQVNTUkVOREVSX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibGliYXNzID49IDAuOS40ImAKKwkgICAgICAgIEFTU1JFTkRFUl9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImxpYmFzcyA+PSAwLjEwLjIiYAogICAgICAgICBmaQogCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogCWVjaG8gIiRBU1NSRU5ERVJfUEtHX0VSUk9SUyIgPiY1CkBAIC0zODkwOSw2ICs0MTA1Niw0NiBAQAogCiAKIAorIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ3YXlsYW5kLXNjYW5uZXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IHdheWxhbmQtc2Nhbm5lcjsgYWNfd29yZD0kMgoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CitpZiAke2FjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgY2FzZSAkd2F5bGFuZF9zY2FubmVyIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcj0iJHdheWxhbmRfc2Nhbm5lciIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCisgIDs7CisgICopCisgIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKK2ZvciBhc19kaXIgaW4gJFBBVEgKK2RvCisgIElGUz0kYXNfc2F2ZV9JRlMKKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorICAgIGFjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQord2F5bGFuZF9zY2FubmVyPSRhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcgoraWYgdGVzdCAtbiAiJHdheWxhbmRfc2Nhbm5lciI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXlsYW5kX3NjYW5uZXIiID4mNQorJGFzX2VjaG8gIiR3YXlsYW5kX3NjYW5uZXIiID4mNjsgfQorZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KK2ZpCisKKwogZWNobwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogd2F5bGFuZCBzaW5rICoqKiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogd2F5bGFuZCBzaW5rICoqKiIgPiY2O30KQEAgLTM4OTY2LDEyICs0MTE1MywxMiBAQAogICAgICAgICBwa2dfY3ZfV0FZTEFORF9DRkxBR1M9IiRXQVlMQU5EX0NGTEFHUyIKICAgICBlbHNlCiAgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lclwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJ3YXlsYW5kLWNsaWVudCA+PSAxLjQuMCB3YXlsYW5kLXNjYW5uZXIiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIndheWxhbmQtY2xpZW50ID49IDEuNC4wXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIikgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1dBWUxBTkRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAgd2F5bGFuZC1zY2FubmVyIiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X1dBWUxBTkRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTM4OTg0LDEyICs0MTE3MSwxMiBAQAogICAgICAgICBwa2dfY3ZfV0FZTEFORF9MSUJTPSIkV0FZTEFORF9MSUJTIgogICAgIGVsc2UKICAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwid2F5bGFuZC1jbGllbnQgPj0gMS40LjAgd2F5bGFuZC1zY2FubmVyXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciIpIDI+JjUKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwid2F5bGFuZC1jbGllbnQgPj0gMS40LjBcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfV0FZTEFORF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciIgMj4vZGV2L251bGxgCisgIHBrZ19jdl9XQVlMQU5EX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTM5MDA4LDkgKzQxMTk1LDkgQEAKICAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCiBmaQogICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIFdBWUxBTkRfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJ3YXlsYW5kLWNsaWVudCA+PSAxLjQuMCB3YXlsYW5kLXNjYW5uZXIiYAorCSAgICAgICAgV0FZTEFORF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wImAKICAgICAgICAgZWxzZQotCSAgICAgICAgV0FZTEFORF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIndheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciJgCisJICAgICAgICBXQVlMQU5EX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAid2F5bGFuZC1jbGllbnQgPj0gMS40LjAiYAogICAgICAgICBmaQogCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogCWVjaG8gIiRXQVlMQU5EX1BLR19FUlJPUlMiID4mNQpAQCAtMzkwMjgsNyArNDEyMTUsMTQgQEAKICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiAkYXNfZWNobyAieWVzIiA+JjY7IH0KIAotICAgIEhBVkVfV0FZTEFORD0ieWVzIgorICAgIGlmIHRlc3QgIngkd2F5bGFuZF9zY2FubmVyIiAhPSAieCI7IHRoZW4KKyAgICAgIEhBVkVfV0FZTEFORD0ieWVzIgorICAgIGVsc2UKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luIiA+JjUKKyRhc19lY2hvICJ3YXlsYW5kLXNjYW5uZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQgdGhlIHdheWxhbmQgcGx1Z2luIiA+JjY7IH0KKyAgICAgIEhBVkVfV0FZTEFORD0ibm8iCisgICAgZmkKKwogZmkKIAogCkBAIC0zOTA3MSw0NyArNDEyNjUsNiBAQAogCiAKIAotIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJ3YXlsYW5kLXNjYW5uZXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15IHdheWxhbmQtc2Nhbm5lcjsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyKzp9IGZhbHNlOyB0aGVuIDoKLSAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLWVsc2UKLSAgY2FzZSAkd2F5bGFuZF9zY2FubmVyIGluCi0gIFtcXC9dKiB8ID86W1xcL10qKQotICBhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcj0iJHdheWxhbmRfc2Nhbm5lciIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0gIDs7Ci0gICopCi0gIGFzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLWZvciBhc19kaXIgaW4gJFBBVEgKLWRvCi0gIElGUz0kYXNfc2F2ZV9JRlMKLSAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotICAgIGFjX2N2X3BhdGhfd2F5bGFuZF9zY2FubmVyPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgotICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgIGJyZWFrIDIKLSAgZmkKLWRvbmUKLSAgZG9uZQotSUZTPSRhc19zYXZlX0lGUwotCi0gIDs7Ci1lc2FjCi1maQotd2F5bGFuZF9zY2FubmVyPSRhY19jdl9wYXRoX3dheWxhbmRfc2Nhbm5lcgotaWYgdGVzdCAtbiAiJHdheWxhbmRfc2Nhbm5lciI7IHRoZW4KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR3YXlsYW5kX3NjYW5uZXIiID4mNQotJGFzX2VjaG8gIiR3YXlsYW5kX3NjYW5uZXIiID4mNjsgfQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLWZpCi0KLQotCiBlY2hvCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBjaGVja2luZyBmZWF0dXJlOiBXZWJQICoqKiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogV2ViUCAqKioiID4mNjt9CkBAIC0zOTk4Myw4ICs0MjEzNiw4IEBACiAKIAogZWNobwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogQUFDIGRlY29kZXIgcGx1Zy1pbiAqKioiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IEFBQyBkZWNvZGVyIHBsdWctaW4gKioqIiA+JjY7fQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbiAqKioiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IEZBQUQyIEFBQyBkZWNvZGVyIHBsdWctaW4gKioqIiA+JjY7fQogaWYgdGVzdCAieGZhYWQiICE9ICJ4IgogdGhlbgogICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBmb3IgcGx1Zy1pbnM6IGZhYWQgKioqIiA+JjUKQEAgLTQwMDI5LDcyICs0MjE4Miw2IEBACiAKICAgSEFWRV9GQUFEPW5vCiAKLSAgSEFWRV9GQUFEPSJ5ZXMiCi0gIGZhYWRfaGRyPSIiCi0KLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgZmFhY0RlY09wZW4gaW4gLWxmYWFkIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBmYWFjRGVjT3BlbiBpbiAtbGZhYWQuLi4gIiA+JjY7IH0KLWlmICR7YWNfY3ZfbGliX2ZhYWRfZmFhY0RlY09wZW4rOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBhY19jaGVja19saWJfc2F2ZV9MSUJTPSRMSUJTCi1MSUJTPSItbGZhYWQgJExJQk0gJExJQlMiCi1jYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0vKiBlbmQgY29uZmRlZnMuaC4gICovCi0KLS8qIE92ZXJyaWRlIGFueSBHQ0MgaW50ZXJuYWwgcHJvdG90eXBlIHRvIGF2b2lkIGFuIGVycm9yLgotICAgVXNlIGNoYXIgYmVjYXVzZSBpbnQgbWlnaHQgbWF0Y2ggdGhlIHJldHVybiB0eXBlIG9mIGEgR0NDCi0gICBidWlsdGluIGFuZCB0aGVuIGl0cyBhcmd1bWVudCBwcm90b3R5cGUgd291bGQgc3RpbGwgYXBwbHkuICAqLwotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiCi0jZW5kaWYKLWNoYXIgZmFhY0RlY09wZW4gKCk7Ci1pbnQKLW1haW4gKCkKLXsKLXJldHVybiBmYWFjRGVjT3BlbiAoKTsKLSAgOwotICByZXR1cm4gMDsKLX0KLV9BQ0VPRgotaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotICBhY19jdl9saWJfZmFhZF9mYWFjRGVjT3Blbj15ZXMKLWVsc2UKLSAgYWNfY3ZfbGliX2ZhYWRfZmFhY0RlY09wZW49bm8KLWZpCi1ybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotTElCUz0kYWNfY2hlY2tfbGliX3NhdmVfTElCUwotZmkKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3ZfbGliX2ZhYWRfZmFhY0RlY09wZW4iID4mNQotJGFzX2VjaG8gIiRhY19jdl9saWJfZmFhZF9mYWFjRGVjT3BlbiIgPiY2OyB9Ci1pZiB0ZXN0ICJ4JGFjX2N2X2xpYl9mYWFkX2ZhYWNEZWNPcGVuIiA9IHh5ZXM7IHRoZW4gOgotICBIQVZFX0ZBQUQ9eWVzCi1lbHNlCi0gIEhBVkVfRkFBRD1ubwotZmkKLQotICBpZiB0ZXN0ICJ4JEhBVkVfRkFBRCIgPSAieHllcyI7IHRoZW4KLSAgICBhY19mbl9jX2NoZWNrX2hlYWRlcl9tb25ncmVsICIkTElORU5PIiAiZmFhZC5oIiAiYWNfY3ZfaGVhZGVyX2ZhYWRfaCIgIiRhY19pbmNsdWRlc19kZWZhdWx0IgotaWYgdGVzdCAieCRhY19jdl9oZWFkZXJfZmFhZF9oIiA9IHh5ZXM7IHRoZW4gOgotICA6Ci1lbHNlCi0gIEhBVkVfRkFBRD1ubwotZmkKLQotCi0gICAgaWYgdGVzdCAieCRIQVZFX0ZBQUQiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICBGQUFEX0xJQlM9Ii1sZmFhZCAkTElCTSIKLSAgICBlbHNlCi0gICAgICBIQVZFX0ZBQUQ9Im5vIgotICAgIGZpCi0gIGVsc2UKLSAgICBIQVZFX0ZBQUQ9Im5vIgotICBmaQotCi0KLQotICBpZiB0ZXN0ICRIQVZFX0ZBQUQgPSAibm8iOyB0aGVuCiAKICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgTmVBQUNEZWNPcGVuIGluIC1sZmFhZCIgPiY1CiAkYXNfZWNob19uICJjaGVja2luZyBmb3IgTmVBQUNEZWNPcGVuIGluIC1sZmFhZC4uLiAiID4mNjsgfQpAQCAtNDAxNDgsMzEgKzQyMjM1LDcgQEAKIAogCiAgICAgaWYgdGVzdCAieCRIQVZFX0ZBQUQiID0gInh5ZXMiOyB0aGVuCi0gICAgICAgICAgICAgRkFBRF9MSUJTPSItbGZhYWQgJExJQk0iCiAKLSRhc19lY2hvICIjZGVmaW5lIEZBQURfSVNfTkVBQUMgMSIgPj5jb25mZGVmcy5oCi0KLSAgICAgICAgZmFhZF9oZHI9Im5lYWFjZGVjLmgiCi0KLSAgICBlbHNlCi0KLSAgICAgICAgSEFWRV9GQUFEPSJubyIKLQotICAgIGZpCi0gIGVsc2UKLQotICAgICAgICBIQVZFX0ZBQUQ9Im5vIgotCi0gIGZpCi0KLQotCi0gIGVsc2UKLSAgICBmYWFkX2hkcj0iZmFhZC5oIgotICBmaQotICBpZiB0ZXN0ICRIQVZFX0ZBQUQgPSAieWVzIjsgdGhlbgotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgQ2hlY2tpbmcgZm9yIEZBQUQgPj0gMi4wIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIENoZWNraW5nIGZvciBGQUFEID49IDIuMC4uLiAiID4mNjsgfQogICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KICNpbmNsdWRlIDxmYWFkLmg+CkBAIC00MDE4MCwxMyArNDIyNDMsMTEgQEAKIG1haW4gKCkKIHsKIAotICAgICAgICAjaWYgIWRlZmluZWQoRkFBRDJfVkVSU0lPTikgfHwgIWRlZmluZWQoRkFBRF9GTVRfRE9VQkxFKQotICAgICAgICAjZXJyb3IgTm90IGZhYWQyCi0gICAgICAgICNlbHNlCi0gICAgICAgIC8qIFJlbGVhc2UgY2FuZGlkYXRlIG9mIDIuMCBpcyBub3QgZ29vZCBlbm91Z2ggZm9yIHVzLiBUaGlzIGZpZWxkCi0gICAgICAgICAqIHdhcyBhZGRlZCBvbmx5IGluIDIuMCBmaW5hbCBhbmQgZG9lcyBub3QgZXhpc3QgaW4gMi4wLVJDMyAqLwotICAgICAgICBmYWFjRGVjQ29uZmlndXJhdGlvbiBjb25mOyBjb25mLmRvbnRVcFNhbXBsZUltcGxpY2l0U0JSID0gMTsKLSAgICAgICAgI2VuZGlmCisgICAgICAjaWYgIWRlZmluZWQoRkFBRDJfVkVSU0lPTikgfHwgIWRlZmluZWQoRkFBRF9GTVRfRE9VQkxFKQorICAgICAgI2Vycm9yIE5vdCBmYWFkMgorICAgICAgI2VsaWYgIWRlZmluZWQoTEFUTSkKKyAgICAgICNlcnJvciBOb3QgZmFhZDIgPj0gMi43CisgICAgICAjZW5kaWYKIAogICA7CiAgIHJldHVybiAwOwpAQCAtNDAxOTUsNTIgKzQyMjU2LDMzIEBACiBpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CiAKICAgICAgIEhBVkVfRkFBRD0ieWVzIgotCi0gICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIENoZWNraW5nIEZBQUQyIHZlcnNpb24gaW4gJGZhYWRfaGRyIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIENoZWNraW5nIEZBQUQyIHZlcnNpb24gaW4gJGZhYWRfaGRyLi4uICIgPiY2OyB9Ci0gICAgICBmb3IgbWlub3IgaW4gMTAgOSA4IDcgNiA1IDA7IGRvCi0gICAgICAgIGlmIHRlc3QgeCRmYWFkMl9taW5vcl92ZXJzaW9uID0gIngiOyB0aGVuCi0gICAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotLyogZW5kIGNvbmZkZWZzLmguICAqLwotCi0gICAgICAgICAgICAgICNpbmNsdWRlIDwkZmFhZF9oZHI+Ci0gICAgICAgICAgICAgIEZBQUQyX1ZFUlNJT04KLQotX0FDRU9GCi1pZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0gICRFR1JFUCAiXCIyXC4kbWlub3JcIiQiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0KLSAgICAgICAgICAgICAgZmFhZDJfbWlub3JfdmVyc2lvbj0kbWlub3IKLQotZmkKLXJtIC1mIGNvbmZ0ZXN0KgotCi0gICAgICAgIGZpCi0gICAgICBkb25lCi0gICAgICBpZiB0ZXN0IHgkZmFhZDJfbWlub3JfdmVyc2lvbiA9ICJ4IjsgdGhlbgotICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8gaWRlYSIgPiY1Ci0kYXNfZWNobyAibm8gaWRlYSIgPiY2OyB9Ci0gICAgICBlbHNlCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAyLiRmYWFkMl9taW5vcl92ZXJzaW9uIiA+JjUKLSRhc19lY2hvICIyLiRmYWFkMl9taW5vcl92ZXJzaW9uIiA+JjY7IH0KLQotY2F0ID4+Y29uZmRlZnMuaCA8PF9BQ0VPRgotI2RlZmluZSBGQUFEMl9NSU5PUl9WRVJTSU9OICRmYWFkMl9taW5vcl92ZXJzaW9uCi1fQUNFT0YKLQotICAgICAgZmkKKyAgICAgIEZBQURfTElCUz0iLWxmYWFkIgogCiBlbHNlCiAKKyAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogRm91bmQgbGliZmFhZCwgYnV0IHZlcnNpb24gbm90IHJlY2VudCBlbm91Z2guIE5lZWQgZmFhZDIgPj0gMi43IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IEZvdW5kIGxpYmZhYWQsIGJ1dCB2ZXJzaW9uIG5vdCByZWNlbnQgZW5vdWdoLiBOZWVkIGZhYWQyID49IDIuNyIgPiYyO30KICAgICAgIEhBVkVfRkFBRD0ibm8iCiAKIGZpCiBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKworICAgIGVsc2UKKworICAgICAgSEFWRV9GQUFEPSJubyIKKworICAgIGZpCisgIGVsc2UKKworICAgICAgSEFWRV9GQUFEPSJubyIKKwogICBmaQogCiAKIAogCisKKwogICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCiAgIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKICAgQ0ZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DRkxBR1MKQEAgLTQzMTIxLDE2NyArNDUxNjMsNiBAQAogCiAKIGVjaG8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IG1wZzEyMyBhdWRpbyBkZWNvZGVyICoqKiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogbXBnMTIzIGF1ZGlvIGRlY29kZXIgKioqIiA+JjY7fQotaWYgdGVzdCAieG1wZzEyMyIgIT0gIngiCi10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGZvciBwbHVnLWluczogbXBnMTIzICoqKiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogZm9yIHBsdWctaW5zOiBtcGcxMjMgKioqIiA+JjY7fQotZmkKLU5PVVNFPQotaWYgdGVzdCAieCRVU0VfTVBHMTIzIiA9ICJ4bm8iOyB0aGVuCi0gIE5PVVNFPSJ5ZXMiCi1maQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLW1wZzEyMyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9tcGcxMjMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9tcGcxMjM7ICBjYXNlICIke2VuYWJsZXZhbH0iIGluCi0gICAgICB5ZXMpIFVTRV9NUEcxMjM9eWVzOzsKLSAgICAgIG5vKSBVU0VfTVBHMTIzPW5vOzsKLSAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1tcGcxMjMiICIkTElORU5PIiA1IDs7Ci0gICAgZXNhYwotZWxzZQotICAgVVNFX01QRzEyMz15ZXMKLWZpCi0KLWlmIHRlc3QgIngkTk9VU0UiID0gInh5ZXMiOyB0aGVuCi0gIFVTRV9NUEcxMjM9Im5vIgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiBtcGcxMjMgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBtcGcxMjMgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjI7fQotZmkKLU5PVVNFPQotCi1pZiBlY2hvICIgJEdTVF9QTFVHSU5TX05PTlBPUlRFRCAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgTVBHMTIzICIgPiAvZGV2L251bGw7IHRoZW4KLSAgVVNFX01QRzEyMz0ibm8iCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIG1wZzEyMyBub3QgcG9ydGVkIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBtcGcxMjMgbm90IHBvcnRlZCIgPiYyO30KLWZpCi0KLQotaWYgdGVzdCB4JFVTRV9NUEcxMjMgPSB4eWVzOyB0aGVuCi0KLSAgZ3N0X2NoZWNrX3NhdmVfTElCUz0kTElCUwotICBnc3RfY2hlY2tfc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotICBnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKLQotICBIQVZFX01QRzEyMz1ubwotCi0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIE1QRzEyMyIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBmb3IgTVBHMTIzLi4uICIgPiY2OyB9Ci0KLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRNUEcxMjNfQ0ZMQUdTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfTVBHMTIzX0NGTEFHUz0iJE1QRzEyM19DRkxBR1MiCi0gICAgZWxzZQotICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJtcGcxMjMgPj0gMS4xM1wiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJsaWJtcGcxMjMgPj0gMS4xMyIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9NUEcxMjNfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGlibXBnMTIzID49IDEuMTMiIDI+L2Rldi9udWxsYAotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSAgICBmaQotZWxzZQotCXBrZ19mYWlsZWQ9dW50cmllZAotZmkKLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRNUEcxMjNfTElCUyI7IHRoZW4KLSAgICAgICAgcGtnX2N2X01QRzEyM19MSUJTPSIkTVBHMTIzX0xJQlMiCi0gICAgZWxzZQotICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJtcGcxMjMgPj0gMS4xM1wiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJsaWJtcGcxMjMgPj0gMS4xMyIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9NUEcxMjNfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJsaWJtcGcxMjMgPj0gMS4xMyIgMj4vZGV2L251bGxgCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotICAgIGZpCi1lbHNlCi0JcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotCi0KLQotaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotCi1pZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgotICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi1lbHNlCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubwotZmkKLSAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCi0JICAgICAgICBNUEcxMjNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJtcGcxMjMgPj0gMS4xMyJgCi0gICAgICAgIGVsc2UKLQkgICAgICAgIE1QRzEyM19QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgImxpYm1wZzEyMyA+PSAxLjEzImAKLSAgICAgICAgZmkKLQkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKLQllY2hvICIkTVBHMTIzX1BLR19FUlJPUlMiID4mNQotCi0JeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci0gICAgICAgICAgICAgICAgSEFWRV9NUEcxMjM9Im5vIgotZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotCUhBVkVfTVBHMTIzPSJubyIKLWVsc2UKLQlNUEcxMjNfQ0ZMQUdTPSRwa2dfY3ZfTVBHMTIzX0NGTEFHUwotCU1QRzEyM19MSUJTPSRwa2dfY3ZfTVBHMTIzX0xJQlMKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQlIQVZFX01QRzEyMz0ieWVzIgotZmkKLQotCi0KLQotICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCi0gIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKLSAgQ0ZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DRkxBR1MKLSAgQ1BQRkxBR1M9JGdzdF9jaGVja19zYXZlX0NQUEZMQUdTCi0gIENYWEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUwotCi0gICAgaWYgdGVzdCB4JEhBVkVfTVBHMTIzID0geG5vOyB0aGVuCi0gICAgVVNFX01QRzEyMz1ubwotICBlbHNlCi0gICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIGJlIGJ1aWx0OiBtcGcxMjMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogbXBnMTIzIiA+JjY7fQotICBmaQotZmkKLWlmIHRlc3QgeCRVU0VfTVBHMTIzID0geHllczsgdGhlbgotICA6Ci0gIGlmIHRlc3QgInhtcGcxMjMiICE9ICJ4IjsgdGhlbgotICAgIEdTVF9QTFVHSU5TX1lFUz0iXHRtcGcxMjNcbiRHU1RfUExVR0lOU19ZRVMiCi0gIGZpCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfTVBHMTIzIC8qKi8iID4+Y29uZmRlZnMuaAotCi1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IG1wZzEyMyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogVGhlc2UgcGx1Z2lucyB3aWxsIG5vdCBiZSBidWlsdDogbXBnMTIzIiA+JjY7fQotICBpZiB0ZXN0ICJ4bXBnMTIzIiAhPSAieCI7IHRoZW4KLSAgICBHU1RfUExVR0lOU19OTz0iXHRtcGcxMjNcbiRHU1RfUExVR0lOU19OTyIKLSAgZmkKLSAgOgotZmkKLSBpZiB0ZXN0IHgkVVNFX01QRzEyMyA9IHh5ZXM7IHRoZW4KLSAgVVNFX01QRzEyM19UUlVFPQotICBVU0VfTVBHMTIzX0ZBTFNFPScjJwotZWxzZQotICBVU0VfTVBHMTIzX1RSVUU9JyMnCi0gIFVTRV9NUEcxMjNfRkFMU0U9Ci1maQotCi0KLQotZWNobwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogbXBsZXggKioqIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiBtcGxleCAqKioiID4mNjt9CiBpZiB0ZXN0ICJ4bXBsZXgiICE9ICJ4IgpAQCAtNDYxNjAsNiArNDgwNDEsMTAgQEAKICAgSEFWRV9SU1ZHPW5vCiAKIAorICB3aGljaD0ibGlicnN2Zy0yLjAgPj0gMi4zNi4yIgorICAgIHJlcXVpcmVkPSJubyIKKworCiBwa2dfZmFpbGVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBSU1ZHIiA+JjUKICRhc19lY2hvX24gImNoZWNraW5nIGZvciBSU1ZHLi4uICIgPiY2OyB9CkBAIC00NjE2OSwxMiArNDgwNTQsMTIgQEAKICAgICAgICAgcGtnX2N2X1JTVkdfQ0ZMQUdTPSIkUlNWR19DRkxBR1MiCiAgICAgZWxzZQogICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnJzdmctMi4wID49IDIuMzYgY2Fpcm8iKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1JTVkdfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibGlicnN2Zy0yLjAgPj0gMi4zNiBjYWlybyIgMj4vZGV2L251bGxgCisgIHBrZ19jdl9SU1ZHX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCiBlbHNlCiAgIHBrZ19mYWlsZWQ9eWVzCiBmaQpAQCAtNDYxODcsMTIgKzQ4MDcyLDEyIEBACiAgICAgICAgIHBrZ19jdl9SU1ZHX0xJQlM9IiRSU1ZHX0xJQlMiCiAgICAgZWxzZQogICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnJzdmctMi4wID49IDIuMzYgY2Fpcm8iKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQogICBhY19zdGF0dXM9JD8KICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CiAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1JTVkdfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvIiAyPi9kZXYvbnVsbGAKKyAgcGtnX2N2X1JTVkdfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICIkd2hpY2giIDI+L2Rldi9udWxsYAogZWxzZQogICBwa2dfZmFpbGVkPXllcwogZmkKQEAgLTQ2MjExLDkgKzQ4MDk2LDkgQEAKICAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCiBmaQogICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIFJTVkdfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJyc3ZnLTIuMCA+PSAyLjM2IGNhaXJvImAKKwkgICAgICAgIFJTVkdfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAogICAgICAgICBlbHNlCi0JICAgICAgICBSU1ZHX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibGlicnN2Zy0yLjAgPj0gMi4zNiBjYWlybyJgCisJICAgICAgICBSU1ZHX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiJHdoaWNoImAKICAgICAgICAgZmkKIAkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKIAllY2hvICIkUlNWR19QS0dfRVJST1JTIiA+JjUKQEAgLTQ2MjIxLDExICs0ODEwNiwyMyBAQAogCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogCi0gICAgSEFWRV9SU1ZHPSJubyIKKyAgICAgIEhBVkVfUlNWRz0ibm8iCisgICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBhc19mbl9lcnJvciAkPyAiJFJTVkdfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKKyAgICAgIGVsc2UKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkUlNWR19QS0dfRVJST1JTIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICRSU1ZHX1BLR19FUlJPUlMiID4mNjt9CisgICAgICBmaQogCiBlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCiAKLSAgICBIQVZFX1JTVkc9Im5vIgorICAgICAgSEFWRV9SU1ZHPSJubyIKKyAgICAgIGlmIHRlc3QgIngkcmVxdWlyZWQiID0gInh5ZXMiOyB0aGVuCisgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICIkUlNWR19QS0dfRVJST1JTIiAiJExJTkVOTyIgNQorICAgICAgZWxzZQorICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRSU1ZHX1BLR19FUlJPUlMiID4mNQorJGFzX2VjaG8gIiRhc19tZTogJFJTVkdfUEtHX0VSUk9SUyIgPiY2O30KKyAgICAgIGZpCiAKIGVsc2UKIAlSU1ZHX0NGTEFHUz0kcGtnX2N2X1JTVkdfQ0ZMQUdTCkBAIC00NjIzMyw4MyArNDgxMzAsNyBAQAogICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKICRhc19lY2hvICJ5ZXMiID4mNjsgfQogCi0gICAgSEFWRV9SU1ZHPSJ5ZXMiCi0KLXBrZ19mYWlsZWQ9bm8KLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFJTVkdfMl8zNl8yIiA+JjUKLSRhc19lY2hvX24gImNoZWNraW5nIGZvciBSU1ZHXzJfMzZfMi4uLiAiID4mNjsgfQotCi1pZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSAgICBpZiB0ZXN0IC1uICIkUlNWR18yXzM2XzJfQ0ZMQUdTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfUlNWR18yXzM2XzJfQ0ZMQUdTPSIkUlNWR18yXzM2XzJfQ0ZMQUdTIgotICAgIGVsc2UKLSAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibGlicnN2Zy0yLjAgPj0gMi4zNi4yXCIiOyB9ID4mNQotICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImxpYnJzdmctMi4wID49IDIuMzYuMiIpIDI+JjUKLSAgYWNfc3RhdHVzPSQ/Ci0gICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCi0gIHBrZ19jdl9SU1ZHXzJfMzZfMl9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJsaWJyc3ZnLTIuMCA+PSAyLjM2LjIiIDI+L2Rldi9udWxsYAotZWxzZQotICBwa2dfZmFpbGVkPXllcwotZmkKLSAgICBmaQotZWxzZQotCXBrZ19mYWlsZWQ9dW50cmllZAotZmkKLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICAgIGlmIHRlc3QgLW4gIiRSU1ZHXzJfMzZfMl9MSUJTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfUlNWR18yXzM2XzJfTElCUz0iJFJTVkdfMl8zNl8yX0xJQlMiCi0gICAgZWxzZQotICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAotICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJsaWJyc3ZnLTIuMCA+PSAyLjM2LjJcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAibGlicnN2Zy0yLjAgPj0gMi4zNi4yIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X1JTVkdfMl8zNl8yX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAibGlicnN2Zy0yLjAgPj0gMi4zNi4yIiAyPi9kZXYvbnVsbGAKLWVsc2UKLSAgcGtnX2ZhaWxlZD15ZXMKLWZpCi0gICAgZmkKLWVsc2UKLQlwa2dfZmFpbGVkPXVudHJpZWQKLWZpCi0KLQotCi1pZiB0ZXN0ICRwa2dfZmFpbGVkID0geWVzOyB0aGVuCi0KLWlmICRQS0dfQ09ORklHIC0tYXRsZWFzdC1wa2djb25maWctdmVyc2lvbiAwLjIwOyB0aGVuCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD15ZXMKLWVsc2UKLSAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPW5vCi1maQotICAgICAgICBpZiB0ZXN0ICRfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQgPSB5ZXM7IHRoZW4KLQkgICAgICAgIFJTVkdfMl8zNl8yX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibGlicnN2Zy0yLjAgPj0gMi4zNi4yImAKLSAgICAgICAgZWxzZQotCSAgICAgICAgUlNWR18yXzM2XzJfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJsaWJyc3ZnLTIuMCA+PSAyLjM2LjIiYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRSU1ZHXzJfMzZfMl9QS0dfRVJST1JTIiA+JjUKLQotCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotICAgICAgICAgICAgICAgIEhBVkVfUlNWR18yXzM2XzI9Im5vIgotZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotCUhBVkVfUlNWR18yXzM2XzI9Im5vIgotZWxzZQotCVJTVkdfMl8zNl8yX0NGTEFHUz0kcGtnX2N2X1JTVkdfMl8zNl8yX0NGTEFHUwotCVJTVkdfMl8zNl8yX0xJQlM9JHBrZ19jdl9SU1ZHXzJfMzZfMl9MSUJTCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0JSEFWRV9SU1ZHXzJfMzZfMj0ieWVzIgotZmkKLSAgICBpZiB0ZXN0ICJ4JEhBVkVfUlNWR18yXzM2XzIiID0gInh5ZXMiOyB0aGVuCi0KLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfUlNWR18yXzM2XzIgMSIgPj5jb25mZGVmcy5oCi0KLSAgICBmaQorICAgICAgSEFWRV9SU1ZHPSJ5ZXMiCiAKIGZpCiAKQEAgLTQ2OTIzLDEyICs0ODc0NCwxMiBAQAogICAgICAgICBwa2dfY3ZfUVRfQ0ZMQUdTPSIkUVRfQ0ZMQUdTIgogICAgIGVsc2UKICAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjBcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRbWwgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfUVRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiIDI+L2Rldi9udWxsYAorICBwa2dfY3ZfUVRfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UW1sIFF0NVF1aWNrID49IDUuNC4wIiAyPi9kZXYvbnVsbGAKIGVsc2UKICAgcGtnX2ZhaWxlZD15ZXMKIGZpCkBAIC00Njk0MSwxMiArNDg3NjIsMTIgQEAKICAgICAgICAgcGtnX2N2X1FUX0xJQlM9IiRRVF9MSUJTIgogICAgIGVsc2UKICAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjBcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRbWwgUXQ1UXVpY2sgPj0gNS40LjAiKSAyPiY1CiAgIGFjX3N0YXR1cz0kPwogICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfUVRfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJRdDVDb3JlIFF0NUd1aSBRdDVRdWljayA+PSA1LjQuMCIgMj4vZGV2L251bGxgCisgIHBrZ19jdl9RVF9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMCIgMj4vZGV2L251bGxgCiBlbHNlCiAgIHBrZ19mYWlsZWQ9eWVzCiBmaQpAQCAtNDY5NjUsOSArNDg3ODYsOSBAQAogICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KIGZpCiAgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgotCSAgICAgICAgUVRfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRdWljayA+PSA1LjQuMCJgCisJICAgICAgICBRVF9QS0dfRVJST1JTPWAkUEtHX0NPTkZJRyAtLXNob3J0LWVycm9ycyAtLWVycm9ycy10by1zdGRvdXQgLS1wcmludC1lcnJvcnMgIlF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMCJgCiAgICAgICAgIGVsc2UKLQkgICAgICAgIFFUX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAiYAorCSAgICAgICAgUVRfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVDb3JlIFF0NUd1aSBRdDVRbWwgUXQ1UXVpY2sgPj0gNS40LjAiYAogICAgICAgICBmaQogCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwogCWVjaG8gIiRRVF9QS0dfRVJST1JTIiA+JjUKQEAgLTQ3Mjk4LDYgKzQ5MTE5LDI2NCBAQAogCiBmaQogICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19BTkRST0lEIiA9ICJ4MSIgLWEgIngkR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMIiA9ICJ4MSI7IHRoZW4KKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgUVRfQU5EUk9JRCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgUVRfQU5EUk9JRC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkUVRfQU5EUk9JRF9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9RVF9BTkRST0lEX0NGTEFHUz0iJFFUX0FORFJPSURfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiUXQ1QW5kcm9pZEV4dHJhc1wiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJRdDVBbmRyb2lkRXh0cmFzIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X1FUX0FORFJPSURfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiUXQ1QW5kcm9pZEV4dHJhcyIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJFFUX0FORFJPSURfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X1FUX0FORFJPSURfTElCUz0iJFFUX0FORFJPSURfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlF0NUFuZHJvaWRFeHRyYXNcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1QW5kcm9pZEV4dHJhcyIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9RVF9BTkRST0lEX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAiUXQ1QW5kcm9pZEV4dHJhcyIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBRVF9BTkRST0lEX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiUXQ1QW5kcm9pZEV4dHJhcyJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIFFUX0FORFJPSURfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVBbmRyb2lkRXh0cmFzImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkUVRfQU5EUk9JRF9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICAgICAgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogQ291bGQgbm90IGZpbmQgUXQgQW5kcm9pZCBpbnRlZ3JhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBRdCBBbmRyb2lkIGludGVncmF0aW9uIiA+JjY7fQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogQ291bGQgbm90IGZpbmQgUXQgQW5kcm9pZCBpbnRlZ3JhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBRdCBBbmRyb2lkIGludGVncmF0aW9uIiA+JjY7fQorZWxzZQorCVFUX0FORFJPSURfQ0ZMQUdTPSRwa2dfY3ZfUVRfQU5EUk9JRF9DRkxBR1MKKwlRVF9BTkRST0lEX0xJQlM9JHBrZ19jdl9RVF9BTkRST0lEX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworICAgICAgICAgICAgIyBjKysgb24gYW5kcm9pZCByZXF1aXJlcyBhIHN0YW5kYXJkIGxpYnJhcnkgYW5kIHRoZXJlIGFyZSBtdWx0aXBsZQorICAgICAgICAgICAgIyBjaG9pY2VzLiAgY2VyYmVybyBwcm92aWRlcyBhIHBrZy1jb25maWcgZmlsZSB0aGUgZGVzY3JpYmVzIGEgY2hvaWNlCisgICAgICAgICAgICAjIHNvIHRyeSB0byB1c2UgdGhhdC4gIE91dHNpZGUgY2VyYmVybyBvbmUgaGFzIHRvIHBhc3MgdGhlc2UgZmxhZ3MKKyAgICAgICAgICAgICMgbWFudWFsbHkgZm9yIHRoZSBsaWJyYXJ5IG9uZSBpcyB1c2luZworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHTlVTVEwiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdOVVNUTC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkR05VU1RMX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X0dOVVNUTF9DRkxBR1M9IiRHTlVTVExfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ251c3RsXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImdudXN0bCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTlVTVExfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAiZ251c3RsIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkR05VU1RMX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9HTlVTVExfTElCUz0iJEdOVVNUTF9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiZ251c3RsXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgImdudXN0bCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9HTlVTVExfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJnbnVzdGwiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgR05VU1RMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiZ251c3RsImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgR05VU1RMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAiZ251c3RsImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkR05VU1RMX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisKKyAgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBDb3VsZCBub3QgZmluZCBTdGFuZGFyZCBDKysgbGlicmFyeSIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBTdGFuZGFyZCBDKysgbGlicmFyeSIgPiY2O30KK2VsaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHVudHJpZWQ7IHRoZW4KKworICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IENvdWxkIG5vdCBmaW5kIFN0YW5kYXJkIEMrKyBsaWJyYXJ5IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IENvdWxkIG5vdCBmaW5kIFN0YW5kYXJkIEMrKyBsaWJyYXJ5IiA+JjY7fQorZWxzZQorCUdOVVNUTF9DRkxBR1M9JHBrZ19jdl9HTlVTVExfQ0ZMQUdTCisJR05VU1RMX0xJQlM9JHBrZ19jdl9HTlVTVExfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCisgICAgICAgICAgICAgIFFUX0NGTEFHUz0iJFFUX0NGTEFHUyAkR05VU1RMX0NGTEFHUyIKKyAgICAgICAgICAgICAgUVRfTElCUz0iJFFUX0xJQlMgJEdOVVNUTF9MSUJTIgorCitmaQorCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUVRfQU5EUk9JRCAvKiovIiA+PmNvbmZkZWZzLmgKKworICAgICAgICAgICAgUVRfQ0ZMQUdTPSIkUVRfQ0ZMQUdTICRRVF9BTkRST0lEX0NGTEFHUyIKKyAgICAgICAgICAgIFFUX0xJQlM9IiRRVF9MSUJTICRRVF9BTkRST0lEX0xJQlMiCisgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgorCitmaQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19DT0NPQSIgPSAieDEiIC1hICJ4JEdTVF9HTF9IQVZFX1BMQVRGT1JNX0NHTCIgPSAieDEiOyB0aGVuCisKK3BrZ19mYWlsZWQ9bm8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIFFUX01BQyIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgUVRfTUFDLi4uICIgPiY2OyB9CisKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRRVF9NQUNfQ0ZMQUdTIjsgdGhlbgorICAgICAgICBwa2dfY3ZfUVRfTUFDX0NGTEFHUz0iJFFUX01BQ19DRkxBR1MiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJRdDVNYWNFeHRyYXNcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1TWFjRXh0cmFzIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X1FUX01BQ19DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzICJRdDVNYWNFeHRyYXMiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKK2lmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRRVF9NQUNfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X1FUX01BQ19MSUJTPSIkUVRfTUFDX0xJQlMiCisgICAgZWxzZQorICAgICAgICBpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyIgJiYgXAorICAgIHsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgXCJRdDVNYWNFeHRyYXNcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiUXQ1TWFjRXh0cmFzIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X1FUX01BQ19MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIlF0NU1hY0V4dHJhcyIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBRVF9NQUNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVNYWNFeHRyYXMiYAorICAgICAgICBlbHNlCisJICAgICAgICBRVF9NQUNfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJRdDVNYWNFeHRyYXMiYAorICAgICAgICBmaQorCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncworCWVjaG8gIiRRVF9NQUNfUEtHX0VSUk9SUyIgPiY1CisKKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyAgICAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IENvdWxkIG5vdCBmaW5kIFF0IE1hYyBpbnRlZ3JhdGlvbiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBDb3VsZCBub3QgZmluZCBRdCBNYWMgaW50ZWdyYXRpb24iID4mNjt9CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBDb3VsZCBub3QgZmluZCBRdCBNYWMgaW50ZWdyYXRpb24iID4mNQorJGFzX2VjaG8gIiRhc19tZTogQ291bGQgbm90IGZpbmQgUXQgTWFjIGludGVncmF0aW9uIiA+JjY7fQorZWxzZQorCVFUX01BQ19DRkxBR1M9JHBrZ19jdl9RVF9NQUNfQ0ZMQUdTCisJUVRfTUFDX0xJQlM9JHBrZ19jdl9RVF9NQUNfTElCUworICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogeWVzIiA+JjUKKyRhc19lY2hvICJ5ZXMiID4mNjsgfQorCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUVRfTUFDIC8qKi8iID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgICBRVF9MSUJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9bGliZGlyIFF0NUNvcmVgCisgICAgICAgICAgICBRVF9DRkxBR1M9IiRRVF9DRkxBR1MgJFFUX01BQ19DRkxBR1MgLUYkUVRfTElCRElSIC1mcmFtZXdvcmsgUXRDb3JlIC1mcmFtZXdvcmsgUXRHdWkgLWZyYW1ld29yayBRdFF1aWNrIC1mcmFtZXdvcmsgUXRRbWwgLWZyYW1ld29yayBRdE1hY0V4dHJhcyIKKyAgICAgICAgICAgIFFUX0xJQlM9IiRRVF9MSUJTICRRVF9NQUNfTElCUyIKKyAgICAgICAgICAgIEhBVkVfUVRfV0lORE9XSU5HPSJ5ZXMiCisKK2ZpCisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgIngkR1NUX0dMX0hBVkVfV0lORE9XX0VBR0wiID0gIngxIiAtYSAieCRHU1RfR0xfSEFWRV9QTEFURk9STV9FQUdMIiA9ICJ4MSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0ICJ4JEhBVkVfSU9TIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICAgICAgIyBpT1MgZG9lc24ndCBoYXZlIGl0cyBvd24gZXh0cmFzIHBhY2thZ2Ugc28gaWYgd2UgaGF2ZSB0aGUgY29yZQorICAgICAgICAgICAgIyBtb2R1bGVzIHdlIGFyZSBnb29kIHRvIGdvCisKKyRhc19lY2hvICIjZGVmaW5lIEhBVkVfUVRfSU9TIC8qKi8iID4+Y29uZmRlZnMuaAorCisgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCiAgICAgICAgIGlmIHRlc3QgIngkSEFWRV9RVF9XSU5ET1dJTkciID0gInhubyI7IHRoZW4KICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IENvdWxkIG5vdCBmaW5kIGFueSBRdCBXaW5kb3dpbmcgaW50ZWdyYXRpb24iID4mNQogJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogQ291bGQgbm90IGZpbmQgYW55IFF0IFdpbmRvd2luZyBpbnRlZ3JhdGlvbiIgPiYyO30KQEAgLTQ3MzUwLDYgKzQ5NDI5LDE0OCBAQAogCiAKIGVjaG8KK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IFZ1bGthbiBlbGVtZW50cyAqKioiID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IFZ1bGthbiBlbGVtZW50cyAqKioiID4mNjt9CitpZiB0ZXN0ICJ4dnVsa2FuIiAhPSAieCIKK3RoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogZm9yIHBsdWctaW5zOiB2dWxrYW4gKioqIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBmb3IgcGx1Zy1pbnM6IHZ1bGthbiAqKioiID4mNjt9CitmaQorTk9VU0U9CitpZiB0ZXN0ICJ4JFVTRV9WVUxLQU4iID0gInhubyI7IHRoZW4KKyAgTk9VU0U9InllcyIKK2ZpCisjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtdnVsa2FuIHdhcyBnaXZlbi4KK2lmIHRlc3QgIiR7ZW5hYmxlX3Z1bGthbitzZXR9IiA9IHNldDsgdGhlbiA6CisgIGVuYWJsZXZhbD0kZW5hYmxlX3Z1bGthbjsgIGNhc2UgIiR7ZW5hYmxldmFsfSIgaW4KKyAgICAgIHllcykgVVNFX1ZVTEtBTj15ZXM7OworICAgICAgbm8pIFVTRV9WVUxLQU49bm87OworICAgICAgKikgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXZ1bGthbiIgIiRMSU5FTk8iIDUgOzsKKyAgICBlc2FjCitlbHNlCisgICBVU0VfVlVMS0FOPXllcworZmkKKworaWYgdGVzdCAieCROT1VTRSIgPSAieHllcyI7IHRoZW4KKyAgVVNFX1ZVTEtBTj0ibm8iCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIHZ1bGthbiBwcmUtY29uZmlndXJlZCBub3QgdG8gYmUgYnVpbHQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogKioqIHZ1bGthbiBwcmUtY29uZmlndXJlZCBub3QgdG8gYmUgYnVpbHQiID4mMjt9CitmaQorTk9VU0U9CisKK2lmIGVjaG8gIiAkR1NUX1BMVUdJTlNfTk9OUE9SVEVEICIgfCB0ciAsICcgJyB8IGdyZXAgLWkgIiBWVUxLQU4gIiA+IC9kZXYvbnVsbDsgdGhlbgorICBVU0VfVlVMS0FOPSJubyIKKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiAqKiogdnVsa2FuIG5vdCBwb3J0ZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogKioqIHZ1bGthbiBub3QgcG9ydGVkIiA+JjI7fQorZmkKKworCitpZiB0ZXN0IHgkVVNFX1ZVTEtBTiA9IHh5ZXM7IHRoZW4KKworICBnc3RfY2hlY2tfc2F2ZV9MSUJTPSRMSUJTCisgIGdzdF9jaGVja19zYXZlX0xERkxBR1M9JExERkxBR1MKKyAgZ3N0X2NoZWNrX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgZ3N0X2NoZWNrX3NhdmVfQ1BQRkxBR1M9JENQUEZMQUdTCisgIGdzdF9jaGVja19zYXZlX0NYWEZMQUdTPSRDWFhGTEFHUworCisgIEhBVkVfVlVMS0FOPW5vCisKKyAgSEFWRV9WVUxLQU49bm8KKyAgYWNfZm5fY19jaGVja19oZWFkZXJfbW9uZ3JlbCAiJExJTkVOTyIgInZ1bGthbi92dWxrYW4uaCIgImFjX2N2X2hlYWRlcl92dWxrYW5fdnVsa2FuX2giICIkYWNfaW5jbHVkZXNfZGVmYXVsdCIKK2lmIHRlc3QgIngkYWNfY3ZfaGVhZGVyX3Z1bGthbl92dWxrYW5faCIgPSB4eWVzOyB0aGVuIDoKKworICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHZrQ3JlYXRlRGV2aWNlIGluIC1sdnVsa2FuIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciB2a0NyZWF0ZURldmljZSBpbiAtbHZ1bGthbi4uLiAiID4mNjsgfQoraWYgJHthY19jdl9saWJfdnVsa2FuX3ZrQ3JlYXRlRGV2aWNlKzp9IGZhbHNlOyB0aGVuIDoKKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKK2Vsc2UKKyAgYWNfY2hlY2tfbGliX3NhdmVfTElCUz0kTElCUworTElCUz0iLWx2dWxrYW4gICRMSUJTIgorY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorLyogZW5kIGNvbmZkZWZzLmguICAqLworCisvKiBPdmVycmlkZSBhbnkgR0NDIGludGVybmFsIHByb3RvdHlwZSB0byBhdm9pZCBhbiBlcnJvci4KKyAgIFVzZSBjaGFyIGJlY2F1c2UgaW50IG1pZ2h0IG1hdGNoIHRoZSByZXR1cm4gdHlwZSBvZiBhIEdDQworICAgYnVpbHRpbiBhbmQgdGhlbiBpdHMgYXJndW1lbnQgcHJvdG90eXBlIHdvdWxkIHN0aWxsIGFwcGx5LiAgKi8KKyNpZmRlZiBfX2NwbHVzcGx1cworZXh0ZXJuICJDIgorI2VuZGlmCitjaGFyIHZrQ3JlYXRlRGV2aWNlICgpOworaW50CittYWluICgpCit7CityZXR1cm4gdmtDcmVhdGVEZXZpY2UgKCk7CisgIDsKKyAgcmV0dXJuIDA7Cit9CitfQUNFT0YKK2lmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAgYWNfY3ZfbGliX3Z1bGthbl92a0NyZWF0ZURldmljZT15ZXMKK2Vsc2UKKyAgYWNfY3ZfbGliX3Z1bGthbl92a0NyZWF0ZURldmljZT1ubworZmkKK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CitMSUJTPSRhY19jaGVja19saWJfc2F2ZV9MSUJTCitmaQoreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdl9saWJfdnVsa2FuX3ZrQ3JlYXRlRGV2aWNlIiA+JjUKKyRhc19lY2hvICIkYWNfY3ZfbGliX3Z1bGthbl92a0NyZWF0ZURldmljZSIgPiY2OyB9CitpZiB0ZXN0ICJ4JGFjX2N2X2xpYl92dWxrYW5fdmtDcmVhdGVEZXZpY2UiID0geHllczsgdGhlbiA6CisKKyAgICAgIFZVTEtBTl9MSUJTPSItbHZ1bGthbiIKKworICAgICAgICAgICAgaWYgdGVzdCAieCRIQVZFX1hDQiIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgSEFWRV9WVUxLQU49eWVzCisgICAgICBmaQorCitmaQorCisKK2ZpCisKKworCisKKyAgTElCUz0kZ3N0X2NoZWNrX3NhdmVfTElCUworICBMREZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9MREZMQUdTCisgIENGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ0ZMQUdTCisgIENQUEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DUFBGTEFHUworICBDWFhGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ1hYRkxBR1MKKworICAgIGlmIHRlc3QgeCRIQVZFX1ZVTEtBTiA9IHhubzsgdGhlbgorICAgIFVTRV9WVUxLQU49bm8KKyAgZWxzZQorICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogdnVsa2FuIiA+JjUKKyRhc19lY2hvICIkYXNfbWU6ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgYmUgYnVpbHQ6IHZ1bGthbiIgPiY2O30KKyAgZmkKK2ZpCitpZiB0ZXN0IHgkVVNFX1ZVTEtBTiA9IHh5ZXM7IHRoZW4KKyAgOgorICBpZiB0ZXN0ICJ4dnVsa2FuIiAhPSAieCI7IHRoZW4KKyAgICBHU1RfUExVR0lOU19ZRVM9Ilx0dnVsa2FuXG4kR1NUX1BMVUdJTlNfWUVTIgorICBmaQorCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX1ZVTEtBTiAvKiovIiA+PmNvbmZkZWZzLmgKKworZWxzZQorICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiB2dWxrYW4iID4mNQorJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IHZ1bGthbiIgPiY2O30KKyAgaWYgdGVzdCAieHZ1bGthbiIgIT0gIngiOyB0aGVuCisgICAgR1NUX1BMVUdJTlNfTk89Ilx0dnVsa2FuXG4kR1NUX1BMVUdJTlNfTk8iCisgIGZpCisgIDoKK2ZpCisgaWYgdGVzdCB4JFVTRV9WVUxLQU4gPSB4eWVzOyB0aGVuCisgIFVTRV9WVUxLQU5fVFJVRT0KKyAgVVNFX1ZVTEtBTl9GQUxTRT0nIycKK2Vsc2UKKyAgVVNFX1ZVTEtBTl9UUlVFPScjJworICBVU0VfVlVMS0FOX0ZBTFNFPQorZmkKKworCisKK2VjaG8KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IGxpYnZpc3VhbCB2aXN1YWxpemF0aW9uIGxpYnJhcnkgKioqIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiBsaWJ2aXN1YWwgdmlzdWFsaXphdGlvbiBsaWJyYXJ5ICoqKiIgPiY2O30KIGlmIHRlc3QgInhsaWJ2aXN1YWwiICE9ICJ4IgpAQCAtNTMyNzAsNDE5ICs1NTQ5MSw2IEBACiAKIAogZWNobwoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogR1NldHRpbmdzIHBsdWdpbiAqKioiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIGNoZWNraW5nIGZlYXR1cmU6IEdTZXR0aW5ncyBwbHVnaW4gKioqIiA+JjY7fQotaWYgdGVzdCAieGdzZXR0aW5ncyIgIT0gIngiCi10aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGZvciBwbHVnLWluczogZ3NldHRpbmdzICoqKiIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAqKiogZm9yIHBsdWctaW5zOiBnc2V0dGluZ3MgKioqIiA+JjY7fQotZmkKLU5PVVNFPQotaWYgdGVzdCAieCRVU0VfR1NFVFRJTkdTIiA9ICJ4bm8iOyB0aGVuCi0gIE5PVVNFPSJ5ZXMiCi1maQotIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdzZXR0aW5ncyB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9nc2V0dGluZ3Mrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9nc2V0dGluZ3M7ICBjYXNlICIke2VuYWJsZXZhbH0iIGluCi0gICAgICB5ZXMpIFVTRV9HU0VUVElOR1M9eWVzOzsKLSAgICAgIG5vKSBVU0VfR1NFVFRJTkdTPW5vOzsKLSAgICAgICopIGFzX2ZuX2Vycm9yICQ/ICJiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1nc2V0dGluZ3MiICIkTElORU5PIiA1IDs7Ci0gICAgZXNhYwotZWxzZQotICAgVVNFX0dTRVRUSU5HUz15ZXMKLWZpCi0KLWlmIHRlc3QgIngkTk9VU0UiID0gInh5ZXMiOyB0aGVuCi0gIFVTRV9HU0VUVElOR1M9Im5vIgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6ICoqKiBnc2V0dGluZ3MgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBnc2V0dGluZ3MgcHJlLWNvbmZpZ3VyZWQgbm90IHRvIGJlIGJ1aWx0IiA+JjI7fQotZmkKLU5PVVNFPQotCi1pZiBlY2hvICIgJEdTVF9QTFVHSU5TX05PTlBPUlRFRCAiIHwgdHIgLCAnICcgfCBncmVwIC1pICIgR1NFVFRJTkdTICIgPiAvZGV2L251bGw7IHRoZW4KLSAgVVNFX0dTRVRUSU5HUz0ibm8iCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogKioqIGdzZXR0aW5ncyBub3QgcG9ydGVkIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6ICoqKiBnc2V0dGluZ3Mgbm90IHBvcnRlZCIgPiYyO30KLWZpCi0KLQotaWYgdGVzdCB4JFVTRV9HU0VUVElOR1MgPSB4eWVzOyB0aGVuCi0KLSAgZ3N0X2NoZWNrX3NhdmVfTElCUz0kTElCUwotICBnc3RfY2hlY2tfc2F2ZV9MREZMQUdTPSRMREZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gIGdzdF9jaGVja19zYXZlX0NQUEZMQUdTPSRDUFBGTEFHUwotICBnc3RfY2hlY2tfc2F2ZV9DWFhGTEFHUz0kQ1hYRkxBR1MKLQotICBIQVZFX0dTRVRUSU5HUz1ubwotCi0KLSAgd2hpY2g9Imdpby0yLjAgPj0gMi4yNS4wIgotICAgIHJlcXVpcmVkPSJubyIKLQotCi1wa2dfZmFpbGVkPW5vCi17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBHU0VUVElOR1MiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIEdTRVRUSU5HUy4uLiAiID4mNjsgfQotCi1pZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLSAgICBpZiB0ZXN0IC1uICIkR1NFVFRJTkdTX0NGTEFHUyI7IHRoZW4KLSAgICAgICAgcGtnX2N2X0dTRVRUSU5HU19DRkxBR1M9IiRHU0VUVElOR1NfQ0ZMQUdTIgotICAgIGVsc2UKLSAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKLSAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwiXCR3aGljaFwiIjsgfSA+JjUKLSAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICIkd2hpY2giKSAyPiY1Ci0gIGFjX3N0YXR1cz0kPwotICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfTsgdGhlbgotICBwa2dfY3ZfR1NFVFRJTkdTX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgIiR3aGljaCIgMj4vZGV2L251bGxgCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotICAgIGZpCi1lbHNlCi0JcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotaWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgaWYgdGVzdCAtbiAiJEdTRVRUSU5HU19MSUJTIjsgdGhlbgotICAgICAgICBwa2dfY3ZfR1NFVFRJTkdTX0xJQlM9IiRHU0VUVElOR1NfTElCUyIKLSAgICBlbHNlCi0gICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCi0gICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIlwkd2hpY2hcIiI7IH0gPiY1Ci0gICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAiJHdoaWNoIikgMj4mNQotICBhY19zdGF0dXM9JD8KLSAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0gIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KLSAgcGtnX2N2X0dTRVRUSU5HU19MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgIiR3aGljaCIgMj4vZGV2L251bGxgCi1lbHNlCi0gIHBrZ19mYWlsZWQ9eWVzCi1maQotICAgIGZpCi1lbHNlCi0JcGtnX2ZhaWxlZD11bnRyaWVkCi1maQotCi0KLQotaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgotCi1pZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgotICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCi1lbHNlCi0gICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubwotZmkKLSAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCi0JICAgICAgICBHU0VUVElOR1NfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1zaG9ydC1lcnJvcnMgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAotICAgICAgICBlbHNlCi0JICAgICAgICBHU0VUVElOR1NfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICIkd2hpY2giYAotICAgICAgICBmaQotCSMgUHV0IHRoZSBuYXN0eSBlcnJvciBtZXNzYWdlIGluIGNvbmZpZy5sb2cgd2hlcmUgaXQgYmVsb25ncwotCWVjaG8gIiRHU0VUVElOR1NfUEtHX0VSUk9SUyIgPiY1Ci0KLQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotJGFzX2VjaG8gIm5vIiA+JjY7IH0KLQotICAgICAgSEFWRV9HU0VUVElOR1M9Im5vIgotICAgICAgaWYgdGVzdCAieCRyZXF1aXJlZCIgPSAieHllcyI7IHRoZW4KLSAgICAgICAgYXNfZm5fZXJyb3IgJD8gIiRHU0VUVElOR1NfUEtHX0VSUk9SUyIgIiRMSU5FTk8iIDUKLSAgICAgIGVsc2UKLSAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAkR1NFVFRJTkdTX1BLR19FUlJPUlMiID4mNQotJGFzX2VjaG8gIiRhc19tZTogJEdTRVRUSU5HU19QS0dfRVJST1JTIiA+JjY7fQotICAgICAgZmkKLQotZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgotCi0gICAgICBIQVZFX0dTRVRUSU5HUz0ibm8iCi0gICAgICBpZiB0ZXN0ICJ4JHJlcXVpcmVkIiA9ICJ4eWVzIjsgdGhlbgotICAgICAgICBhc19mbl9lcnJvciAkPyAiJEdTRVRUSU5HU19QS0dfRVJST1JTIiAiJExJTkVOTyIgNQotICAgICAgZWxzZQotICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICRHU0VUVElOR1NfUEtHX0VSUk9SUyIgPiY1Ci0kYXNfZWNobyAiJGFzX21lOiAkR1NFVFRJTkdTX1BLR19FUlJPUlMiID4mNjt9Ci0gICAgICBmaQotCi1lbHNlCi0JR1NFVFRJTkdTX0NGTEFHUz0kcGtnX2N2X0dTRVRUSU5HU19DRkxBR1MKLQlHU0VUVElOR1NfTElCUz0kcGtnX2N2X0dTRVRUSU5HU19MSUJTCi0gICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQotJGFzX2VjaG8gInllcyIgPiY2OyB9Ci0KLSAgICAgIEhBVkVfR1NFVFRJTkdTPSJ5ZXMiCi0KLWZpCi0KLQotICBpZiB0ZXN0ICJ4JEhBVkVfR1NFVFRJTkdTIiA9ICJ4eWVzIjsgdGhlbgotCi0KLSAgIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXNjaGVtYXMtY29tcGlsZSB3YXMgZ2l2ZW4uCi1pZiB0ZXN0ICIke2VuYWJsZV9zY2hlbWFzX2NvbXBpbGUrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICBlbmFibGV2YWw9JGVuYWJsZV9zY2hlbWFzX2NvbXBpbGU7IGNhc2UgJHtlbmFibGV2YWx9IGluCi0gICAgICAgICAgICAgICAgICB5ZXMpIEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRT0iIiAgOzsKLSAgICAgICAgICAgICAgICAgIG5vKSAgR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFPSIxIiA7OwotICAgICAgICAgICAgICAgICAgKikgYXNfZm5fZXJyb3IgJD8gImJhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLXNjaGVtYXMtY29tcGlsZSIgIiRMSU5FTk8iIDUgOzsKLSAgICAgICAgICAgICAgICAgZXNhYwotZmkKLQotCi0KLQotaWYgdGVzdCAieCRhY19jdl9lbnZfUEtHX0NPTkZJR19zZXQiICE9ICJ4c2V0IjsgdGhlbgotCWlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXBrZy1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9cGtnLWNvbmZpZzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfUEtHX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJFBLR19DT05GSUcgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfUEtHX0NPTkZJRz0iJFBLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgOzsKLWVzYWMKLWZpCi1QS0dfQ09ORklHPSRhY19jdl9wYXRoX1BLR19DT05GSUcKLWlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJFBLR19DT05GSUciID4mNQotJGFzX2VjaG8gIiRQS0dfQ09ORklHIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0KLWZpCi1pZiB0ZXN0IC16ICIkYWNfY3ZfcGF0aF9QS0dfQ09ORklHIjsgdGhlbgotICBhY19wdF9QS0dfQ09ORklHPSRQS0dfQ09ORklHCi0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAicGtnLWNvbmZpZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi1zZXQgZHVtbXkgcGtnLWNvbmZpZzsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRys6fSBmYWxzZTsgdGhlbiA6Ci0gICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci1lbHNlCi0gIGNhc2UgJGFjX3B0X1BLR19DT05GSUcgaW4KLSAgW1xcL10qIHwgPzpbXFwvXSopCi0gIGFjX2N2X3BhdGhfYWNfcHRfUEtHX0NPTkZJRz0iJGFjX3B0X1BLR19DT05GSUciICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotICA7OwotICAqKQotICBhc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi1mb3IgYXNfZGlyIGluICRQQVRICi1kbwotICBJRlM9JGFzX3NhdmVfSUZTCi0gIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSAgICBhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUc9IiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCi0gICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgYnJlYWsgMgotICBmaQotZG9uZQotICBkb25lCi1JRlM9JGFzX3NhdmVfSUZTCi0KLSAgOzsKLWVzYWMKLWZpCi1hY19wdF9QS0dfQ09ORklHPSRhY19jdl9wYXRoX2FjX3B0X1BLR19DT05GSUcKLWlmIHRlc3QgLW4gIiRhY19wdF9QS0dfQ09ORklHIjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX3B0X1BLR19DT05GSUciID4mNQotJGFzX2VjaG8gIiRhY19wdF9QS0dfQ09ORklHIiA+JjY7IH0KLWVsc2UKLSAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSRhc19lY2hvICJubyIgPiY2OyB9Ci1maQotCi0gIGlmIHRlc3QgIngkYWNfcHRfUEtHX0NPTkZJRyIgPSB4OyB0aGVuCi0gICAgUEtHX0NPTkZJRz0iIgotICBlbHNlCi0gICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoteWVzOikKLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLWFjX3Rvb2xfd2FybmVkPXllcyA7OwotZXNhYwotICAgIFBLR19DT05GSUc9JGFjX3B0X1BLR19DT05GSUcKLSAgZmkKLWVsc2UKLSAgUEtHX0NPTkZJRz0iJGFjX2N2X3BhdGhfUEtHX0NPTkZJRyIKLWZpCi0KLWZpCi1pZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KLQlfcGtnX21pbl92ZXJzaW9uPTAuMTYKLQl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHBrZy1jb25maWcgaXMgYXQgbGVhc3QgdmVyc2lvbiAkX3BrZ19taW5fdmVyc2lvbiIgPiY1Ci0kYXNfZWNob19uICJjaGVja2luZyBwa2ctY29uZmlnIGlzIGF0IGxlYXN0IHZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb24uLi4gIiA+JjY7IH0KLQlpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gJF9wa2dfbWluX3ZlcnNpb247IHRoZW4KLQkJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1Ci0kYXNfZWNobyAieWVzIiA+JjY7IH0KLQllbHNlCi0JCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotCQlQS0dfQ09ORklHPSIiCi0JZmkKLQotZmkKLSAgZ3NldHRpbmdzc2NoZW1hZGlyPSR7ZGF0YWRpcn0vZ2xpYi0yLjAvc2NoZW1hcwotCi0gIGlmIHRlc3QgeCRjcm9zc19jb21waWxpbmcgIT0geHllczsgdGhlbgotICAgIEdMSUJfQ09NUElMRV9TQ0hFTUFTPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlIGdsaWJfY29tcGlsZV9zY2hlbWFzIGdpby0yLjBgCi0gIGVsc2UKLSAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImdsaWItY29tcGlsZS1zY2hlbWFzIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLXNldCBkdW1teSBnbGliLWNvbXBpbGUtc2NoZW1hczsgYWNfd29yZD0kMgoteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci1pZiAke2FjX2N2X3BhdGhfR0xJQl9DT01QSUxFX1NDSEVNQVMrOn0gZmFsc2U7IHRoZW4gOgotICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotZWxzZQotICBjYXNlICRHTElCX0NPTVBJTEVfU0NIRU1BUyBpbgotICBbXFwvXSogfCA/OltcXC9dKikKLSAgYWNfY3ZfcGF0aF9HTElCX0NPTVBJTEVfU0NIRU1BUz0iJEdMSUJfQ09NUElMRV9TQ0hFTUFTIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KLSAgOzsKLSAgKikKLSAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotZm9yIGFzX2RpciBpbiAkUEFUSAotZG8KLSAgSUZTPSRhc19zYXZlX0lGUwotICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0gICAgYWNfY3ZfcGF0aF9HTElCX0NPTVBJTEVfU0NIRU1BUz0iJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIKLSAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICBicmVhayAyCi0gIGZpCi1kb25lCi0gIGRvbmUKLUlGUz0kYXNfc2F2ZV9JRlMKLQotICA7OwotZXNhYwotZmkKLUdMSUJfQ09NUElMRV9TQ0hFTUFTPSRhY19jdl9wYXRoX0dMSUJfQ09NUElMRV9TQ0hFTUFTCi1pZiB0ZXN0IC1uICIkR0xJQl9DT01QSUxFX1NDSEVNQVMiOyB0aGVuCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkR0xJQl9DT01QSUxFX1NDSEVNQVMiID4mNQotJGFzX2VjaG8gIiRHTElCX0NPTVBJTEVfU0NIRU1BUyIgPiY2OyB9Ci1lbHNlCi0gIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0kYXNfZWNobyAibm8iID4mNjsgfQotZmkKLQotCi0gIGZpCi0KLSAgaWYgdGVzdCAieCRHTElCX0NPTVBJTEVfU0NIRU1BUyIgPSAieCI7IHRoZW4KLSAgICBhc19mbl9lcnJvciAkPyAiZ2xpYi1jb21waWxlLXNjaGVtYXMgbm90IGZvdW5kLiIgIiRMSU5FTk8iIDUKLSAgZWxzZQotICAgIDoKLSAgZmkKLQotICBHU0VUVElOR1NfUlVMRVM9JwotLlBIT05ZIDogdW5pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzIGluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXMgY2xlYW4tZ3NldHRpbmdzLXNjaGVtYXMKLQotbW9zdGx5Y2xlYW4tYW06IGNsZWFuLWdzZXR0aW5ncy1zY2hlbWFzCi0KLWdzZXR0aW5nc19fZW51bV9maWxlID0gJChhZGRzdWZmaXggLmVudW1zLnhtbCwkKGdzZXR0aW5nc19FTlVNX05BTUVTUEFDRSkpCi0KLSUuZ3NjaGVtYS52YWxpZDogJS5nc2NoZW1hLnhtbCAkKGdzZXR0aW5nc19fZW51bV9maWxlKQotCSQoQU1fVl9HRU4pIGlmIHRlc3QgLWYgIiQ8IjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7ICQoR0xJQl9DT01QSUxFX1NDSEVNQVMpIC0tc3RyaWN0IC0tZHJ5LXJ1biAkKGFkZHByZWZpeCAtLXNjaGVtYS1maWxlPSwkKGdzZXR0aW5nc19fZW51bV9maWxlKSkgLS1zY2hlbWEtZmlsZT0kJHtkfSQ8ICYmIHRvdWNoICRACi0KLWFsbC1hbTogJChnc2V0dGluZ3NfU0NIRU1BUzoueG1sPS52YWxpZCkKLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXMKLQotLlNFQ09OREFSWTogJChnc2V0dGluZ3NfU0NIRU1BUykKLQotaW5zdGFsbC1nc2V0dGluZ3Mtc2NoZW1hczogJChnc2V0dGluZ3NfU0NIRU1BUykgJChnc2V0dGluZ3NfX2VudW1fZmlsZSkKLQlAJChOT1JNQUxfSU5TVEFMTCkKLQlpZiB0ZXN0IC1uICIkXiI7IHRoZW4gXAotCQl0ZXN0IC16ICIkKGdzZXR0aW5nc3NjaGVtYWRpcikiIHx8ICQoTUtESVJfUCkgIiQoREVTVERJUikkKGdzZXR0aW5nc3NjaGVtYWRpcikiOyBcCi0JCSQoSU5TVEFMTF9EQVRBKSAkXiAiJChERVNURElSKSQoZ3NldHRpbmdzc2NoZW1hZGlyKSI7IFwKLQkJdGVzdCAtbiAiJChHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUpJChERVNURElSKSIgfHwgJChHTElCX0NPTVBJTEVfU0NIRU1BUykgJChnc2V0dGluZ3NzY2hlbWFkaXIpOyBcCi0JZmkKLQotdW5pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzOgotCUAkKE5PUk1BTF9VTklOU1RBTEwpCi0JQGxpc3Q9J1wnJyQoZ3NldHRpbmdzX1NDSEVNQVMpICQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpJ1wnJzsgdGVzdCAtbiAiJChnc2V0dGluZ3NzY2hlbWFkaXIpIiB8fCBsaXN0PTsgXAotCWZpbGVzPWBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRwOyBkb25lIHwgc2VkIC1lICdcJydzfF4uKi98fCdcJydgOyBcCi0JdGVzdCAtbiAiJCRmaWxlcyIgfHwgZXhpdCAwOyBcCi0JZWNobyAiICggY2QgJ1wnJyQoREVTVERJUikkKGdzZXR0aW5nc3NjaGVtYWRpciknXCcnICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAotCWNkICIkKERFU1RESVIpJChnc2V0dGluZ3NzY2hlbWFkaXIpIiAmJiBybSAtZiAkJGZpbGVzCi0JdGVzdCAtbiAiJChHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUpJChERVNURElSKSIgfHwgJChHTElCX0NPTVBJTEVfU0NIRU1BUykgJChnc2V0dGluZ3NzY2hlbWFkaXIpCi0KLWNsZWFuLWdzZXR0aW5ncy1zY2hlbWFzOgotCXJtIC1mICQoZ3NldHRpbmdzX1NDSEVNQVM6LnhtbD0udmFsaWQpICQoZ3NldHRpbmdzX19lbnVtX2ZpbGUpCi0KLWlmZGVmIGdzZXR0aW5nc19FTlVNX05BTUVTUEFDRQotJChnc2V0dGluZ3NfX2VudW1fZmlsZSk6ICQoZ3NldHRpbmdzX0VOVU1fRklMRVMpCi0JJChBTV9WX0dFTikgZ2xpYi1ta2VudW1zIC0tY29tbWVudHMgJ1wnJzwhLS0gQGNvbW1lbnRAIC0tPidcJycgLS1maGVhZCAiPHNjaGVtYWxpc3Q+IiAtLXZoZWFkICIgIDxAdHlwZUAgaWQ9J1wnJyQoZ3NldHRpbmdzX0VOVU1fTkFNRVNQQUNFKS5ARW51bU5hbWVAJ1wnJz4iIC0tdnByb2QgIiAgICA8dmFsdWUgbmljaz0nXCcnQHZhbHVlbmlja0AnXCcnIHZhbHVlPSdcJydAdmFsdWVudW1AJ1wnJy8+IiAtLXZ0YWlsICIgIDwvQHR5cGVAPiIgLS1mdGFpbCAiPC9zY2hlbWFsaXN0PiIgJF4gPiAkQC50bXAgJiYgbXYgJEAudG1wICRACi1lbmRpZgotJwotCi0KLQotCi0KLQotICBmaQotCi0KLSAgTElCUz0kZ3N0X2NoZWNrX3NhdmVfTElCUwotICBMREZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9MREZMQUdTCi0gIENGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ0ZMQUdTCi0gIENQUEZMQUdTPSRnc3RfY2hlY2tfc2F2ZV9DUFBGTEFHUwotICBDWFhGTEFHUz0kZ3N0X2NoZWNrX3NhdmVfQ1hYRkxBR1MKLQotICAgIGlmIHRlc3QgeCRIQVZFX0dTRVRUSU5HUyA9IHhubzsgdGhlbgotICAgIFVTRV9HU0VUVElOR1M9bm8KLSAgZWxzZQotICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBiZSBidWlsdDogZ3NldHRpbmdzIiA+JjUKLSRhc19lY2hvICIkYXNfbWU6ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgYmUgYnVpbHQ6IGdzZXR0aW5ncyIgPiY2O30KLSAgZmkKLWZpCi1pZiB0ZXN0IHgkVVNFX0dTRVRUSU5HUyA9IHh5ZXM7IHRoZW4KLSAgOgotICBpZiB0ZXN0ICJ4Z3NldHRpbmdzIiAhPSAieCI7IHRoZW4KLSAgICBHU1RfUExVR0lOU19ZRVM9Ilx0Z3NldHRpbmdzXG4kR1NUX1BMVUdJTlNfWUVTIgotICBmaQotCi0kYXNfZWNobyAiI2RlZmluZSBIQVZFX0dTRVRUSU5HUyAvKiovIiA+PmNvbmZkZWZzLmgKLQotZWxzZQotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306ICoqKiBUaGVzZSBwbHVnaW5zIHdpbGwgbm90IGJlIGJ1aWx0OiBnc2V0dGluZ3MiID4mNQotJGFzX2VjaG8gIiRhc19tZTogKioqIFRoZXNlIHBsdWdpbnMgd2lsbCBub3QgYmUgYnVpbHQ6IGdzZXR0aW5ncyIgPiY2O30KLSAgaWYgdGVzdCAieGdzZXR0aW5ncyIgIT0gIngiOyB0aGVuCi0gICAgR1NUX1BMVUdJTlNfTk89Ilx0Z3NldHRpbmdzXG4kR1NUX1BMVUdJTlNfTk8iCi0gIGZpCi0gIDoKLWZpCi0gaWYgdGVzdCB4JFVTRV9HU0VUVElOR1MgPSB4eWVzOyB0aGVuCi0gIFVTRV9HU0VUVElOR1NfVFJVRT0KLSAgVVNFX0dTRVRUSU5HU19GQUxTRT0nIycKLWVsc2UKLSAgVVNFX0dTRVRUSU5HU19UUlVFPScjJwotICBVU0VfR1NFVFRJTkdTX0ZBTFNFPQotZmkKLQotCi0KLWVjaG8KIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogKioqIGNoZWNraW5nIGZlYXR1cmU6IHNuZGlvIGF1ZGlvICoqKiIgPiY1CiAkYXNfZWNobyAiJGFzX21lOiAqKiogY2hlY2tpbmcgZmVhdHVyZTogc25kaW8gYXVkaW8gKioqIiA+JjY7fQogaWYgdGVzdCAieHNuZGlvIiAhPSAieCIKQEAgLTUzODI2LDYgKzU1NjM0LDI2IEBACiAKIAogCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtaGxzLWNyeXB0byB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfaGxzX2NyeXB0bytzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfaGxzX2NyeXB0bzsKKyAgICBjYXNlICR3aXRoX2hsc19jcnlwdG8gaW4gIygKKyAgbmV0dGxlKSA6CisgICAgIDs7ICMoCisgIGxpYmdjcnlwdCkgOgorICAgICA7OyAjKAorICBvcGVuc3NsKSA6CisgICAgIDs7ICMoCisgICopIDoKKyAgICB3aXRoX2hsc19jcnlwdG89YXV0bworICAgICA7OworZXNhYworCisKK2ZpCisKKwogZWNobwogeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiAqKiogY2hlY2tpbmcgZmVhdHVyZTogaHR0cCBsaXZlIHN0cmVhbWluZyBwbHVnaW4gKioqIiA+JjUKICRhc19lY2hvICIkYXNfbWU6ICoqKiBjaGVja2luZyBmZWF0dXJlOiBodHRwIGxpdmUgc3RyZWFtaW5nIHBsdWdpbiAqKioiID4mNjt9CkBAIC01Mzg3Myw2ICs1NTcwMSwzODkgQEAKIAogICBIQVZFX0hMUz1ubwogCisgIGNhc2UgJHdpdGhfaGxzX2NyeXB0byBpbiAjKAorICBuZXR0bGUpIDoKKworCitwa2dfZmFpbGVkPW5vCit7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBORVRUTEUiID4mNQorJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIE5FVFRMRS4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkTkVUVExFX0NGTEFHUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X05FVFRMRV9DRkxBR1M9IiRORVRUTEVfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibmV0dGxlXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIm5ldHRsZSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9ORVRUTEVfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAibmV0dGxlIiAyPi9kZXYvbnVsbGAKK2Vsc2UKKyAgcGtnX2ZhaWxlZD15ZXMKK2ZpCisgICAgZmkKK2Vsc2UKKwlwa2dfZmFpbGVkPXVudHJpZWQKK2ZpCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkTkVUVExFX0xJQlMiOyB0aGVuCisgICAgICAgIHBrZ19jdl9ORVRUTEVfTElCUz0iJE5FVFRMRV9MSUJTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwibmV0dGxlXCIiOyB9ID4mNQorICAoJFBLR19DT05GSUcgLS1leGlzdHMgLS1wcmludC1lcnJvcnMgIm5ldHRsZSIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9ORVRUTEVfTElCUz1gJFBLR19DT05GSUcgLS1saWJzICJuZXR0bGUiIDI+L2Rldi9udWxsYAorZWxzZQorICBwa2dfZmFpbGVkPXllcworZmkKKyAgICBmaQorZWxzZQorCXBrZ19mYWlsZWQ9dW50cmllZAorZmkKKworCisKK2lmIHRlc3QgJHBrZ19mYWlsZWQgPSB5ZXM7IHRoZW4KKworaWYgJFBLR19DT05GSUcgLS1hdGxlYXN0LXBrZ2NvbmZpZy12ZXJzaW9uIDAuMjA7IHRoZW4KKyAgICAgICAgX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkPXllcworZWxzZQorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9bm8KK2ZpCisgICAgICAgIGlmIHRlc3QgJF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZCA9IHllczsgdGhlbgorCSAgICAgICAgTkVUVExFX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibmV0dGxlImAKKyAgICAgICAgZWxzZQorCSAgICAgICAgTkVUVExFX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAibmV0dGxlImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkTkVUVExFX1BLR19FUlJPUlMiID4mNQorCisJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgICAgICAgICAgICAgICAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBmaW5kIG5ldHRsZSBsaWJyYXJ5IiAiJExJTkVOTyIgNQorZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgorCWFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBuZXR0bGUgbGlicmFyeSIgIiRMSU5FTk8iIDUKK2Vsc2UKKwlORVRUTEVfQ0ZMQUdTPSRwa2dfY3ZfTkVUVExFX0NGTEFHUworCU5FVFRMRV9MSUJTPSRwa2dfY3ZfTkVUVExFX0xJQlMKKyAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyIgPiY1CiskYXNfZWNobyAieWVzIiA+JjY7IH0KKworCiskYXNfZWNobyAiI2RlZmluZSBIQVZFX05FVFRMRSAxIiA+PmNvbmZkZWZzLmgKKworICAgICAgICBIQVZFX0hMUz0ieWVzIgorCitmaQorICAgICA7OyAjKAorICBsaWJnY3J5cHQpIDoKKworCisKKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeCB3YXMgZ2l2ZW4uCitpZiB0ZXN0ICIke3dpdGhfbGliZ2NyeXB0X3ByZWZpeCtzZXR9IiA9IHNldDsgdGhlbiA6CisgIHdpdGh2YWw9JHdpdGhfbGliZ2NyeXB0X3ByZWZpeDsgbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXg9IiR3aXRodmFsIgorZWxzZQorICBsaWJnY3J5cHRfY29uZmlnX3ByZWZpeD0iIgorZmkKKworICBpZiB0ZXN0IHgkbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXggIT0geCA7IHRoZW4KKyAgICAgaWYgdGVzdCB4JHtMSUJHQ1JZUFRfQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KKyAgICAgICAgTElCR0NSWVBUX0NPTkZJRz0kbGliZ2NyeXB0X2NvbmZpZ19wcmVmaXgvYmluL2xpYmdjcnlwdC1jb25maWcKKyAgICAgZmkKKyAgZmkKKworICBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1saWJnY3J5cHQtY29uZmlnIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWxpYmdjcnlwdC1jb25maWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX0xJQkdDUllQVF9DT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRMSUJHQ1JZUFRfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX0xJQkdDUllQVF9DT05GSUc9IiRMSUJHQ1JZUFRfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9MSUJHQ1JZUFRfQ09ORklHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorTElCR0NSWVBUX0NPTkZJRz0kYWNfY3ZfcGF0aF9MSUJHQ1JZUFRfQ09ORklHCitpZiB0ZXN0IC1uICIkTElCR0NSWVBUX0NPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRMSUJHQ1JZUFRfQ09ORklHIiA+JjUKKyRhc19lY2hvICIkTElCR0NSWVBUX0NPTkZJRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworCitmaQoraWYgdGVzdCAteiAiJGFjX2N2X3BhdGhfTElCR0NSWVBUX0NPTkZJRyI7IHRoZW4KKyAgYWNfcHRfTElCR0NSWVBUX0NPTkZJRz0kTElCR0NSWVBUX0NPTkZJRworICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImxpYmdjcnlwdC1jb25maWciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorc2V0IGR1bW15IGxpYmdjcnlwdC1jb25maWc7IGFjX3dvcmQ9JDIKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQoraWYgJHthY19jdl9wYXRoX2FjX3B0X0xJQkdDUllQVF9DT05GSUcrOn0gZmFsc2U7IHRoZW4gOgorICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorZWxzZQorICBjYXNlICRhY19wdF9MSUJHQ1JZUFRfQ09ORklHIGluCisgIFtcXC9dKiB8ID86W1xcL10qKQorICBhY19jdl9wYXRoX2FjX3B0X0xJQkdDUllQVF9DT05GSUc9IiRhY19wdF9MSUJHQ1JZUFRfQ09ORklHIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgOzsKKyAgKikKKyAgYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorZm9yIGFzX2RpciBpbiAkUEFUSAorZG8KKyAgSUZTPSRhc19zYXZlX0lGUworICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgYWNfY3ZfcGF0aF9hY19wdF9MSUJHQ1JZUFRfQ09ORklHPSIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgorICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgIGJyZWFrIDIKKyAgZmkKK2RvbmUKKyAgZG9uZQorSUZTPSRhc19zYXZlX0lGUworCisgIDs7Citlc2FjCitmaQorYWNfcHRfTElCR0NSWVBUX0NPTkZJRz0kYWNfY3ZfcGF0aF9hY19wdF9MSUJHQ1JZUFRfQ09ORklHCitpZiB0ZXN0IC1uICIkYWNfcHRfTElCR0NSWVBUX0NPTkZJRyI7IHRoZW4KKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19wdF9MSUJHQ1JZUFRfQ09ORklHIiA+JjUKKyRhc19lY2hvICIkYWNfcHRfTElCR0NSWVBUX0NPTkZJRyIgPiY2OyB9CitlbHNlCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorZmkKKworICBpZiB0ZXN0ICJ4JGFjX3B0X0xJQkdDUllQVF9DT05GSUciID0geDsgdGhlbgorICAgIExJQkdDUllQVF9DT05GSUc9Im5vIgorICBlbHNlCisgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgoreWVzOikKK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KK2FjX3Rvb2xfd2FybmVkPXllcyA7OworZXNhYworICAgIExJQkdDUllQVF9DT05GSUc9JGFjX3B0X0xJQkdDUllQVF9DT05GSUcKKyAgZmkKK2Vsc2UKKyAgTElCR0NSWVBUX0NPTkZJRz0iJGFjX2N2X3BhdGhfTElCR0NSWVBUX0NPTkZJRyIKK2ZpCisKKyAgdG1wPTEuMi4wCisgIGlmIGVjaG8gIiR0bXAiIHwgZ3JlcCAnOicgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbCA7IHRoZW4KKyAgICAgcmVxX2xpYmdjcnlwdF9hcGk9YGVjaG8gIiR0bXAiICAgICB8IHNlZCAncy9cKC4qXCk6XCguKlwpL1wxLydgCisgICAgIG1pbl9saWJnY3J5cHRfdmVyc2lvbj1gZWNobyAiJHRtcCIgfCBzZWQgJ3MvXCguKlwpOlwoLipcKS9cMi8nYAorICBlbHNlCisgICAgIHJlcV9saWJnY3J5cHRfYXBpPTAKKyAgICAgbWluX2xpYmdjcnlwdF92ZXJzaW9uPSIkdG1wIgorICBmaQorCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIExJQkdDUllQVCAtIHZlcnNpb24gPj0gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgTElCR0NSWVBUIC0gdmVyc2lvbiA+PSAkbWluX2xpYmdjcnlwdF92ZXJzaW9uLi4uICIgPiY2OyB9CisgIG9rPW5vCisgIGlmIHRlc3QgIiRMSUJHQ1JZUFRfQ09ORklHIiAhPSAibm8iIDsgdGhlbgorICAgIHJlcV9tYWpvcj1gZWNobyAkbWluX2xpYmdjcnlwdF92ZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgc2VkICdzL1woWzAtOV0qXClcLlwoWzAtOV0qXClcLlwoWzAtOV0qXCkvXDEvJ2AKKyAgICByZXFfbWlub3I9YGVjaG8gJG1pbl9saWJnY3J5cHRfdmVyc2lvbiB8IFwKKyAgICAgICAgICAgICAgIHNlZCAncy9cKFswLTldKlwpXC5cKFswLTldKlwpXC5cKFswLTldKlwpL1wyLydgCisgICAgcmVxX21pY3JvPWBlY2hvICRtaW5fbGliZ2NyeXB0X3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICBzZWQgJ3MvXChbMC05XSpcKVwuXChbMC05XSpcKVwuXChbMC05XSpcKS9cMy8nYAorICAgIGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbj1gJExJQkdDUllQVF9DT05GSUcgLS12ZXJzaW9uYAorICAgIG1ham9yPWBlY2hvICRsaWJnY3J5cHRfY29uZmlnX3ZlcnNpb24gfCBcCisgICAgICAgICAgICAgICBzZWQgJ3MvXChbMC05XSpcKVwuXChbMC05XSpcKVwuXChbMC05XSpcKS4qL1wxLydgCisgICAgbWlub3I9YGVjaG8gJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbiB8IFwKKyAgICAgICAgICAgICAgIHNlZCAncy9cKFswLTldKlwpXC5cKFswLTldKlwpXC5cKFswLTldKlwpLiovXDIvJ2AKKyAgICBtaWNybz1gZWNobyAkbGliZ2NyeXB0X2NvbmZpZ192ZXJzaW9uIHwgXAorICAgICAgICAgICAgICAgc2VkICdzL1woWzAtOV0qXClcLlwoWzAtOV0qXClcLlwoWzAtOV0qXCkuKi9cMy8nYAorICAgIGlmIHRlc3QgIiRtYWpvciIgLWd0ICIkcmVxX21ham9yIjsgdGhlbgorICAgICAgICBvaz15ZXMKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgIiRtYWpvciIgLWVxICIkcmVxX21ham9yIjsgdGhlbgorICAgICAgICAgICAgaWYgdGVzdCAiJG1pbm9yIiAtZ3QgIiRyZXFfbWlub3IiOyB0aGVuCisgICAgICAgICAgICAgICBvaz15ZXMKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaW5vciIgLWVxICIkcmVxX21pbm9yIjsgdGhlbgorICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRtaWNybyIgLWdlICIkcmVxX21pY3JvIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgb2s9eWVzCisgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgIGZpCisgIGZpCisgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IHllcyAoJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbikiID4mNQorJGFzX2VjaG8gInllcyAoJGxpYmdjcnlwdF9jb25maWdfdmVyc2lvbikiID4mNjsgfQorICBlbHNlCisgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyRhc19lY2hvICJubyIgPiY2OyB9CisgIGZpCisgIGlmIHRlc3QgJG9rID0geWVzOyB0aGVuCisgICAgICMgSWYgd2UgaGF2ZSBhIHJlY2VudCBsaWJnY3J5cHQsIHdlIHNob3VsZCBhbHNvIGNoZWNrIHRoYXQgdGhlCisgICAgICMgQVBJIGlzIGNvbXBhdGlibGUKKyAgICAgaWYgdGVzdCAiJHJlcV9saWJnY3J5cHRfYXBpIiAtZ3QgMCA7IHRoZW4KKyAgICAgICAgdG1wPWAkTElCR0NSWVBUX0NPTkZJRyAtLWFwaS12ZXJzaW9uIDI+L2Rldi9udWxsIHx8IGVjaG8gMGAKKyAgICAgICAgaWYgdGVzdCAiJHRtcCIgLWd0IDAgOyB0aGVuCisgICAgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgTElCR0NSWVBUIEFQSSB2ZXJzaW9uIiA+JjUKKyRhc19lY2hvX24gImNoZWNraW5nIExJQkdDUllQVCBBUEkgdmVyc2lvbi4uLiAiID4mNjsgfQorICAgICAgICAgICBpZiB0ZXN0ICIkcmVxX2xpYmdjcnlwdF9hcGkiIC1lcSAiJHRtcCIgOyB0aGVuCisgICAgICAgICAgICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG9rYXkiID4mNQorJGFzX2VjaG8gIm9rYXkiID4mNjsgfQorICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgb2s9bm8KKyAgICAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogZG9lcyBub3QgbWF0Y2guIHdhbnQ9JHJlcV9saWJnY3J5cHRfYXBpIGdvdD0kdG1wIiA+JjUKKyRhc19lY2hvICJkb2VzIG5vdCBtYXRjaC4gd2FudD0kcmVxX2xpYmdjcnlwdF9hcGkgZ290PSR0bXAiID4mNjsgfQorICAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICBmaQorICBmaQorICBpZiB0ZXN0ICRvayA9IHllczsgdGhlbgorICAgIExJQkdDUllQVF9DRkxBR1M9YCRMSUJHQ1JZUFRfQ09ORklHIC0tY2ZsYWdzYAorICAgIExJQkdDUllQVF9MSUJTPWAkTElCR0NSWVBUX0NPTkZJRyAtLWxpYnNgCisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9MSUJHQ1JZUFQgMSIgPj5jb25mZGVmcy5oCisKKyAgICAgICAgSEFWRV9ITFM9InllcyIKKworICAgIGxpYmdjcnlwdF9jb25maWdfaG9zdD1gJExJQkdDUllQVF9DT05GSUcgLS1ob3N0IDI+L2Rldi9udWxsIHx8IGVjaG8gbm9uZWAKKyAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geG5vbmUgOyB0aGVuCisgICAgICBpZiB0ZXN0IHgiJGxpYmdjcnlwdF9jb25maWdfaG9zdCIgIT0geCIkaG9zdCIgOyB0aGVuCisgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzoKKyoqKgorKioqIFRoZSBjb25maWcgc2NyaXB0ICRMSUJHQ1JZUFRfQ09ORklHIHdhcworKioqIGJ1aWx0IGZvciAkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IGFuZCB0aHVzIG1heSBub3QgbWF0Y2ggdGhlCisqKiogdXNlZCBob3N0ICRob3N0LgorKioqIFlvdSBtYXkgd2FudCB0byB1c2UgdGhlIGNvbmZpZ3VyZSBvcHRpb24gLS13aXRoLWxpYmdjcnlwdC1wcmVmaXgKKyoqKiB0byBzcGVjaWZ5IGEgbWF0Y2hpbmcgY29uZmlnIHNjcmlwdC4KKyoqKiIgPiY1CiskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOgorKioqCisqKiogVGhlIGNvbmZpZyBzY3JpcHQgJExJQkdDUllQVF9DT05GSUcgd2FzCisqKiogYnVpbHQgZm9yICRsaWJnY3J5cHRfY29uZmlnX2hvc3QgYW5kIHRodXMgbWF5IG5vdCBtYXRjaCB0aGUKKyoqKiB1c2VkIGhvc3QgJGhvc3QuCisqKiogWW91IG1heSB3YW50IHRvIHVzZSB0aGUgY29uZmlndXJlIG9wdGlvbiAtLXdpdGgtbGliZ2NyeXB0LXByZWZpeAorKioqIHRvIHNwZWNpZnkgYSBtYXRjaGluZyBjb25maWcgc2NyaXB0LgorKioqIiA+JjI7fQorICAgICAgZmkKKyAgICBmaQorICBlbHNlCisgICAgTElCR0NSWVBUX0NGTEFHUz0iIgorICAgIExJQkdDUllQVF9MSUJTPSIiCisgICAgYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBmaW5kIGxpYmdjcnlwdCBsaWJyYXJ5IiAiJExJTkVOTyIgNQorICBmaQorCisKKworICAgICA7OyAjKAorICBvcGVuc3NsKSA6CisKKworcGtnX2ZhaWxlZD1ubworeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgT1BFTlNTTCIgPiY1CiskYXNfZWNob19uICJjaGVja2luZyBmb3IgT1BFTlNTTC4uLiAiID4mNjsgfQorCitpZiB0ZXN0IC1uICIkUEtHX0NPTkZJRyI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkT1BFTlNTTF9DRkxBR1MiOyB0aGVuCisgICAgICAgIHBrZ19jdl9PUEVOU1NMX0NGTEFHUz0iJE9QRU5TU0xfQ0ZMQUdTIgorICAgIGVsc2UKKyAgICAgICAgaWYgdGVzdCAtbiAiJFBLR19DT05GSUciICYmIFwKKyAgICB7IHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzIFwib3BlbnNzbFwiIjsgfSA+JjUKKyAgKCRQS0dfQ09ORklHIC0tZXhpc3RzIC0tcHJpbnQtZXJyb3JzICJvcGVuc3NsIikgMj4mNQorICBhY19zdGF0dXM9JD8KKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH07IHRoZW4KKyAgcGtnX2N2X09QRU5TU0xfQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyAib3BlbnNzbCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQoraWYgdGVzdCAtbiAiJFBLR19DT05GSUciOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJE9QRU5TU0xfTElCUyI7IHRoZW4KKyAgICAgICAgcGtnX2N2X09QRU5TU0xfTElCUz0iJE9QRU5TU0xfTElCUyIKKyAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgLW4gIiRQS0dfQ09ORklHIiAmJiBcCisgICAgeyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyBcIm9wZW5zc2xcIiI7IH0gPiY1CisgICgkUEtHX0NPTkZJRyAtLWV4aXN0cyAtLXByaW50LWVycm9ycyAib3BlbnNzbCIpIDI+JjUKKyAgYWNfc3RhdHVzPSQ/CisgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9OyB0aGVuCisgIHBrZ19jdl9PUEVOU1NMX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyAib3BlbnNzbCIgMj4vZGV2L251bGxgCitlbHNlCisgIHBrZ19mYWlsZWQ9eWVzCitmaQorICAgIGZpCitlbHNlCisJcGtnX2ZhaWxlZD11bnRyaWVkCitmaQorCisKKworaWYgdGVzdCAkcGtnX2ZhaWxlZCA9IHllczsgdGhlbgorCitpZiAkUEtHX0NPTkZJRyAtLWF0bGVhc3QtcGtnY29uZmlnLXZlcnNpb24gMC4yMDsgdGhlbgorICAgICAgICBfcGtnX3Nob3J0X2Vycm9yc19zdXBwb3J0ZWQ9eWVzCitlbHNlCisgICAgICAgIF9wa2dfc2hvcnRfZXJyb3JzX3N1cHBvcnRlZD1ubworZmkKKyAgICAgICAgaWYgdGVzdCAkX3BrZ19zaG9ydF9lcnJvcnNfc3VwcG9ydGVkID0geWVzOyB0aGVuCisJICAgICAgICBPUEVOU1NMX1BLR19FUlJPUlM9YCRQS0dfQ09ORklHIC0tc2hvcnQtZXJyb3JzIC0tZXJyb3JzLXRvLXN0ZG91dCAtLXByaW50LWVycm9ycyAib3BlbnNzbCJgCisgICAgICAgIGVsc2UKKwkgICAgICAgIE9QRU5TU0xfUEtHX0VSUk9SUz1gJFBLR19DT05GSUcgLS1lcnJvcnMtdG8tc3Rkb3V0IC0tcHJpbnQtZXJyb3JzICJvcGVuc3NsImAKKyAgICAgICAgZmkKKwkjIFB1dCB0aGUgbmFzdHkgZXJyb3IgbWVzc2FnZSBpbiBjb25maWcubG9nIHdoZXJlIGl0IGJlbG9uZ3MKKwllY2hvICIkT1BFTlNTTF9QS0dfRVJST1JTIiA+JjUKKworCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiskYXNfZWNobyAibm8iID4mNjsgfQorICAgICAgICAgICAgICAgIGFzX2ZuX2Vycm9yICQ/ICJDb3VsZCBub3QgZmluZCBvcGVuc3NsIGxpYnJhcnkiICIkTElORU5PIiA1CitlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCisJYXNfZm5fZXJyb3IgJD8gIkNvdWxkIG5vdCBmaW5kIG9wZW5zc2wgbGlicmFyeSIgIiRMSU5FTk8iIDUKK2Vsc2UKKwlPUEVOU1NMX0NGTEFHUz0kcGtnX2N2X09QRU5TU0xfQ0ZMQUdTCisJT1BFTlNTTF9MSUJTPSRwa2dfY3ZfT1BFTlNTTF9MSUJTCisgICAgICAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiB5ZXMiID4mNQorJGFzX2VjaG8gInllcyIgPiY2OyB9CisKKworJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PUEVOU1NMIDEiID4+Y29uZmRlZnMuaAorCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisKK2ZpCisgICAgIDs7ICMoCisgICopIDoKKwogCiBwa2dfZmFpbGVkPW5vCiB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBORVRUTEUiID4mNQpAQCAtNTQxMjMsNyArNTYzMzQsNyBAQAogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX0xJQkdDUllQVCAxIiA+PmNvbmZkZWZzLmgKIAotICAgICAgSEFWRV9ITFM9InllcyIKKyAgICAgICAgICBIQVZFX0hMUz0ieWVzIgogCiAgICAgbGliZ2NyeXB0X2NvbmZpZ19ob3N0PWAkTElCR0NSWVBUX0NPTkZJRyAtLWhvc3QgMj4vZGV2L251bGwgfHwgZWNobyBub25lYAogICAgIGlmIHRlc3QgeCIkbGliZ2NyeXB0X2NvbmZpZ19ob3N0IiAhPSB4bm9uZSA7IHRoZW4KQEAgLTU0MjEyLDExICs1NjQyMywxMSBAQAogCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CiAkYXNfZWNobyAibm8iID4mNjsgfQogCi0gICAgICAgIEhBVkVfSExTPSJubyIKKyAgICAgICAgICAgIEhBVkVfSExTPSJubyIKIAogZWxpZiB0ZXN0ICRwa2dfZmFpbGVkID0gdW50cmllZDsgdGhlbgogCi0gICAgICAgIEhBVkVfSExTPSJubyIKKyAgICAgICAgICAgIEhBVkVfSExTPSJubyIKIAogZWxzZQogCU9QRU5TU0xfQ0ZMQUdTPSRwa2dfY3ZfT1BFTlNTTF9DRkxBR1MKQEAgLTU0MjI3LDcgKzU2NDM4LDcgQEAKIAogJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9PUEVOU1NMIDEiID4+Y29uZmRlZnMuaAogCi0gICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICAgICAgICBIQVZFX0hMUz0ieWVzIgogCiBmaQogCkBAIC01NDQyNiw3ICs1NjYzNyw3IEBACiAKICRhc19lY2hvICIjZGVmaW5lIEhBVkVfTElCR0NSWVBUIDEiID4+Y29uZmRlZnMuaAogCi0gICAgICBIQVZFX0hMUz0ieWVzIgorICAgICAgICAgIEhBVkVfSExTPSJ5ZXMiCiAKICAgICBsaWJnY3J5cHRfY29uZmlnX2hvc3Q9YCRMSUJHQ1JZUFRfQ09ORklHIC0taG9zdCAyPi9kZXYvbnVsbCB8fCBlY2hvIG5vbmVgCiAgICAgaWYgdGVzdCB4IiRsaWJnY3J5cHRfY29uZmlnX2hvc3QiICE9IHhub25lIDsgdGhlbgpAQCAtNTQ1MTUsMTEgKzU2NzI2LDExIEBACiAJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKICRhc19lY2hvICJubyIgPiY2OyB9CiAKLSAgICAgICAgSEFWRV9ITFM9Im5vIgorICAgICAgICAgICAgSEFWRV9ITFM9Im5vIgogCiBlbGlmIHRlc3QgJHBrZ19mYWlsZWQgPSB1bnRyaWVkOyB0aGVuCiAKLSAgICAgICAgSEFWRV9ITFM9Im5vIgorICAgICAgICAgICAgSEFWRV9ITFM9Im5vIgogCiBlbHNlCiAJT1BFTlNTTF9DRkxBR1M9JHBrZ19jdl9PUEVOU1NMX0NGTEFHUwpAQCAtNTQ1MzAsNyArNTY3NDEsNyBAQAogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX09QRU5TU0wgMSIgPj5jb25mZGVmcy5oCiAKLSAgICAgICAgSEFWRV9ITFM9InllcyIKKyAgICAgICAgICAgIEhBVkVfSExTPSJ5ZXMiCiAKIGZpCiAKQEAgLTU0NTQ4LDEwICs1Njc1OSwxMyBAQAogCiAkYXNfZWNobyAiI2RlZmluZSBIQVZFX05FVFRMRSAxIiA+PmNvbmZkZWZzLmgKIAotICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCiAKIGZpCiAKKyAgIDs7Citlc2FjCisKIAogICBMSUJTPSRnc3RfY2hlY2tfc2F2ZV9MSUJTCiAgIExERkxBR1M9JGdzdF9jaGVja19zYXZlX0xERkxBR1MKQEAgLTU1MDkxLDE0ICs1NzMwNSw2IEBACiBmaQogCiAgaWYgZmFsc2U7IHRoZW4KLSAgVVNFX01QRzEyM19UUlVFPQotICBVU0VfTVBHMTIzX0ZBTFNFPScjJwotZWxzZQotICBVU0VfTVBHMTIzX1RSVUU9JyMnCi0gIFVTRV9NUEcxMjNfRkFMU0U9Ci1maQotCi0gaWYgZmFsc2U7IHRoZW4KICAgVVNFX01QTEVYX1RSVUU9CiAgIFVTRV9NUExFWF9GQUxTRT0nIycKIGVsc2UKQEAgLTU1MjkxLDE0ICs1NzQ5Nyw2IEBACiBmaQogCiAgaWYgZmFsc2U7IHRoZW4KLSAgVVNFX0dTRVRUSU5HU19UUlVFPQotICBVU0VfR1NFVFRJTkdTX0ZBTFNFPScjJwotZWxzZQotICBVU0VfR1NFVFRJTkdTX1RSVUU9JyMnCi0gIFVTRV9HU0VUVElOR1NfRkFMU0U9Ci1maQotCi0gaWYgZmFsc2U7IHRoZW4KICAgVVNFX1hWSURfVFJVRT0KICAgVVNFX1hWSURfRkFMU0U9JyMnCiBlbHNlCkBAIC01NTQ3Myw2ICs1NzY3MSw5IEBACiAKIAogR1NUX0FMTF9MREZMQUdTPSItbm8tdW5kZWZpbmVkIgoraWYgdGVzdCAieCR7ZW5hYmxlX0JzeW1ib2xpY30iID0gInh5ZXMiOyB0aGVuCisgIEdTVF9BTExfTERGTEFHUz0iJEdTVF9BTExfTERGTEFHUyAtV2wsLUJzeW1ib2xpYy1mdW5jdGlvbnMiCitmaQogCiAKIEdTVF9MSUJfTERGTEFHUz0iLWV4cG9ydC1zeW1ib2xzLXJlZ2V4IF5fP1woZ3N0X1x8R3N0XHxHU1RfXCkuKiIKQEAgLTU1NDg1LDcgKzU3Njg2LDcgQEAKICRNS0RJUl9QIHRlc3RzL2NoZWNrL29yYwogCiAKLWFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBjb21tb24vTWFrZWZpbGUgY29tbW9uL200L01ha2VmaWxlIGdzdC1wbHVnaW5zLWJhZC5zcGVjIGdzdC9NYWtlZmlsZSBnc3QvYWNjdXJpcC9NYWtlZmlsZSBnc3QvYWRwY21kZWMvTWFrZWZpbGUgZ3N0L2FkcGNtZW5jL01ha2VmaWxlIGdzdC9haWZmL01ha2VmaWxlIGdzdC9hc2ZtdXgvTWFrZWZpbGUgZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUgZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUgZ3N0L2F1ZGlvdmlzdWFsaXplcnMvTWFrZWZpbGUgZ3N0L2F1dG9jb252ZXJ0L01ha2VmaWxlIGdzdC9iYXllci9NYWtlZmlsZSBnc3QvY2FtZXJhYmluMi9NYWtlZmlsZSBnc3QvY2R4YXBhcnNlL01ha2VmaWxlIGdzdC9jb2xvcmVmZmVjdHMvTWFrZWZpbGUgZ3N0L2RhdGF1cmlzcmMvTWFrZWZpbGUgZ3N0L2RjY3AvTWFrZWZpbGUgZ3N0L2RlYnVndXRpbHMvTWFrZWZpbGUgZ3N0L2R2YnN1Ym92ZXJsYXkvTWFrZWZpbGUgZ3N0L2R2ZHNwdS9NYWtlZmlsZSBnc3QvZmFjZW92ZXJsYXkvTWFrZWZpbGUgZ3N0L2Zlc3RpdmFsL01ha2VmaWxlIGdzdC9maWVsZGFuYWx5c2lzL01ha2VmaWxlIGdzdC9mcmVldmVyYi9NYWtlZmlsZSBnc3QvZnJlaTByL01ha2VmaWxlIGdzdC9nYXVkaWVmZmVjdHMvTWFrZWZpbGUgZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9NYWtlZmlsZSBnc3QvZ2RwL01ha2VmaWxlIGdzdC9oZHZwYXJzZS9NYWtlZmlsZSBnc3QvaWQzdGFnL01ha2VmaWxlIGdzdC9pbnRlci9NYWtlZmlsZSBnc3QvaW50ZXJsYWNlL01ha2VmaWxlIGdzdC9pdmZwYXJzZS9NYWtlZmlsZSBnc3QvaXZ0Yy9NYWtlZmlsZSBnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZSBnc3QvanBlZ2Zvcm1hdC9NYWtlZmlsZSBnc3QvbGlicmZiL01ha2VmaWxlIGdzdC9saXZlYWRkZXIvTWFrZWZpbGUgZ3N0L21pZGkvTWFrZWZpbGUgZ3N0L21wZWdkZW11eC9NYWtlZmlsZSBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUgZ3N0L21wZWd0c211eC9NYWtlZmlsZSBnc3QvbXBlZ3RzbXV4L3RzbXV4L01ha2VmaWxlIGdzdC9tcGVncHNtdXgvTWFrZWZpbGUgZ3N0L212ZS9NYWtlZmlsZSBnc3QvbXhmL01ha2VmaWxlIGdzdC9udXZkZW11eC9NYWtlZmlsZSBnc3Qvb252aWYvTWFrZWZpbGUgZ3N0L3BhdGNoZGV0ZWN0L01ha2VmaWxlIGdzdC9wY2FwcGFyc2UvTWFrZWZpbGUgZ3N0L3BubS9NYWtlZmlsZSBnc3QvcmF3cGFyc2UvTWFrZWZpbGUgZ3N0L3JlbW92ZXNpbGVuY2UvTWFrZWZpbGUgZ3N0L3J0cC9NYWtlZmlsZSBnc3Qvc2RpL01ha2VmaWxlIGdzdC9zZHAvTWFrZWZpbGUgZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlIGdzdC9zaXJlbi9NYWtlZmlsZSBnc3Qvc21vb3RoL01ha2VmaWxlIGdzdC9zcGVlZC9NYWtlZmlsZSBnc3Qvc3ViZW5jL01ha2VmaWxlIGdzdC9zdGVyZW8vTWFrZWZpbGUgZ3N0L3R0YS9NYWtlZmlsZSBnc3QvdmlkZW9maWx0ZXJzL01ha2VmaWxlIGdzdC92aWRlb21lYXN1cmUvTWFrZWZpbGUgZ3N0L3ZpZGVvcGFyc2Vycy9NYWtlZmlsZSBnc3QvdmlkZW9zaWduYWwvTWFrZWZpbGUgZ3N0L3ZtbmMvTWFrZWZpbGUgZ3N0L3k0bS9NYWtlZmlsZSBnc3QveWFkaWYvTWFrZWZpbGUgZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUgZ3N0LWxpYnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L01ha2VmaWxlIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlIGdzdC1saWJzL2dzdC9iYXNlY2FtZXJhYmluc3JjL01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvY29jb2EvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2luMzIvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL3gxMS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlIGdzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZSBnc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZSBnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUgc3lzL01ha2VmaWxlIHN5cy9kc2hvd2RlY3dyYXBwZXIvTWFrZWZpbGUgc3lzL2FjbWVuYy9NYWtlZmlsZSBzeXMvYWNtbXAzZGVjL01ha2VmaWxlIHN5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEtbm9ucHVibGljL01ha2VmaWxlIHN5cy9hdmMvTWFrZWZpbGUgc3lzL2JsdWV6L01ha2VmaWxlIHN5cy9kM2R2aWRlb3NpbmsvTWFrZWZpbGUgc3lzL2RlY2tsaW5rL01ha2VmaWxlIHN5cy9kaXJlY3Rzb3VuZC9NYWtlZmlsZSBzeXMvZHNob3dzcmN3cmFwcGVyL01ha2VmaWxlIHN5cy9kc2hvd3ZpZGVvc2luay9NYWtlZmlsZSBzeXMvZHZiL01ha2VmaWxlIHN5cy9mYmRldi9NYWtlZmlsZSBzeXMvbGluc3lzL01ha2VmaWxlIHN5cy9vcGVuc2xlcy9NYWtlZmlsZSBzeXMvc2htL01ha2VmaWxlIHN5cy91dmNoMjY0L01ha2VmaWxlIHN5cy92Y2QvTWFrZWZpbGUgc3lzL3ZkcGF1L01ha2VmaWxlIHN5cy9wdnIyZC9NYWtlZmlsZSBzeXMvd2FzYXBpL01ha2VmaWxlIHN5cy93aW5pbmV0L01ha2VmaWxlIHN5cy93aW5rcy9NYWtlZmlsZSBzeXMvd2luc2NyZWVuY2FwL01ha2VmaWxlIHRlc3RzL01ha2VmaWxlIHRlc3RzL2NoZWNrL01ha2VmaWxlIHRlc3RzL2ZpbGVzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2F2c2FtcGxlc2luay9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9jYW1lcmFiaW4yL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2NvZGVjcGFyc2Vycy9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9kaXJlY3RmYi9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9jb2NvYS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZXl1di9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2RvdWJsZWN1YmUvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9yZWNvcmRncmFwaGljL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvZ3RrdmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay8zZHZpZGVvL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJub3ZpZGVvb3ZlcmxheS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvZmlsdGVydmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL3N3aXRjaHZpZGVvb3ZlcmxheS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9xdC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9zZGwvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL21wZWd0cy9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvb3BlbmN2L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL3V2Y2gyNjQvTWFrZWZpbGUgdGVzdHMvaWNsZXMvTWFrZWZpbGUgZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUgZXh0L3ZvYWFjZW5jL01ha2VmaWxlIGV4dC9hc3NyZW5kZXIvTWFrZWZpbGUgZXh0L2FwZXhzaW5rL01ha2VmaWxlIGV4dC9iczJiL01ha2VmaWxlIGV4dC9iejIvTWFrZWZpbGUgZXh0L2Nocm9tYXByaW50L01ha2VmaWxlIGV4dC9jdXJsL01ha2VmaWxlIGV4dC9kYXNoL01ha2VmaWxlIGV4dC9kYzEzOTQvTWFrZWZpbGUgZXh0L2RpcmVjdGZiL01ha2VmaWxlIGV4dC93YXlsYW5kL01ha2VmaWxlIGV4dC9kYWFsYS9NYWtlZmlsZSBleHQvZHRzL01ha2VmaWxlIGV4dC9nbC9NYWtlZmlsZSBleHQvZ3RrL01ha2VmaWxlIGV4dC9mYWFjL01ha2VmaWxlIGV4dC9mYWFkL01ha2VmaWxlIGV4dC9mbGl0ZS9NYWtlZmlsZSBleHQvZmx1aWRzeW50aC9NYWtlZmlsZSBleHQvZ3NtL01ha2VmaWxlIGV4dC9obHMvTWFrZWZpbGUgZXh0L2thdGUvTWFrZWZpbGUgZXh0L2xhZHNwYS9NYWtlZmlsZSBleHQvbHYyL01ha2VmaWxlIGV4dC9saWJkZTI2NS9NYWtlZmlsZSBleHQvbGlibW1zL01ha2VmaWxlIGV4dC9saWJ2aXN1YWwvTWFrZWZpbGUgZXh0L01ha2VmaWxlIGV4dC9tb2RwbHVnL01ha2VmaWxlIGV4dC9tcGVnMmVuYy9NYWtlZmlsZSBleHQvbXBnMTIzL01ha2VmaWxlIGV4dC9taW1pYy9NYWtlZmlsZSBleHQvbXBsZXgvTWFrZWZpbGUgZXh0L211c2VwYWNrL01ha2VmaWxlIGV4dC9uYXMvTWFrZWZpbGUgZXh0L25lb24vTWFrZWZpbGUgZXh0L29mYS9NYWtlZmlsZSBleHQvb3BlbmFsL01ha2VmaWxlIGV4dC9vcGVuY3YvTWFrZWZpbGUgZXh0L29wZW5leHIvTWFrZWZpbGUgZXh0L29wZW5oMjY0L01ha2VmaWxlIGV4dC9vcGVuanBlZy9NYWtlZmlsZSBleHQvb3Blbm5pMi9NYWtlZmlsZSBleHQvb3B1cy9NYWtlZmlsZSBleHQvcXQvTWFrZWZpbGUgZXh0L3JzdmcvTWFrZWZpbGUgZXh0L3Jlc2luZHZkL01ha2VmaWxlIGV4dC9ydG1wL01ha2VmaWxlIGV4dC9zYmMvTWFrZWZpbGUgZXh0L3NjaHJvZWRpbmdlci9NYWtlZmlsZSBleHQvc2RsL01ha2VmaWxlIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUgZXh0L3NuZGZpbGUvTWFrZWZpbGUgZXh0L3NvdW5kdG91Y2gvTWFrZWZpbGUgZXh0L3NwYW5kc3AvTWFrZWZpbGUgZXh0L3NuZGlvL01ha2VmaWxlIGV4dC9zcnRwL01ha2VmaWxlIGV4dC90ZWxldGV4dGRlYy9NYWtlZmlsZSBleHQvZ21lL01ha2VmaWxlIGV4dC9nc2V0dGluZ3MvTWFrZWZpbGUgZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwgZXh0L3NwYy9NYWtlZmlsZSBleHQvdGltaWRpdHkvTWFrZWZpbGUgZXh0L3dlYnAvTWFrZWZpbGUgZXh0L3gyNjUvTWFrZWZpbGUgZXh0L3h2aWQvTWFrZWZpbGUgZXh0L3piYXIvTWFrZWZpbGUgZXh0L2R0bHMvTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gZG9jcy9NYWtlZmlsZSBkb2NzL3BsdWdpbnMvTWFrZWZpbGUgZG9jcy9saWJzL01ha2VmaWxlIGRvY3MvdmVyc2lvbi5lbnRpdGllcyBwa2djb25maWcvTWFrZWZpbGUgcGtnY29uZmlnL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMgcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQucGMgcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYyB0b29scy9NYWtlZmlsZSBtNC9NYWtlZmlsZSIKK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBNYWtlZmlsZSBjb21tb24vTWFrZWZpbGUgY29tbW9uL200L01ha2VmaWxlIGdzdC1wbHVnaW5zLWJhZC5zcGVjIGdzdC9NYWtlZmlsZSBnc3QvYWNjdXJpcC9NYWtlZmlsZSBnc3QvYWRwY21kZWMvTWFrZWZpbGUgZ3N0L2FkcGNtZW5jL01ha2VmaWxlIGdzdC9haWZmL01ha2VmaWxlIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUgZ3N0L2FzZm11eC9NYWtlZmlsZSBnc3QvYXVkaW9meGJhZC9NYWtlZmlsZSBnc3QvYXVkaW9taXhlci9NYWtlZmlsZSBnc3QvYXVkaW92aXN1YWxpemVycy9NYWtlZmlsZSBnc3QvYXV0b2NvbnZlcnQvTWFrZWZpbGUgZ3N0L2JheWVyL01ha2VmaWxlIGdzdC9jYW1lcmFiaW4yL01ha2VmaWxlIGdzdC9jZHhhcGFyc2UvTWFrZWZpbGUgZ3N0L2NvbG9yZWZmZWN0cy9NYWtlZmlsZSBnc3QvZGF0YXVyaXNyYy9NYWtlZmlsZSBnc3QvZGNjcC9NYWtlZmlsZSBnc3QvZGVidWd1dGlscy9NYWtlZmlsZSBnc3QvZHZic3Vib3ZlcmxheS9NYWtlZmlsZSBnc3QvZHZkc3B1L01ha2VmaWxlIGdzdC9mYWNlb3ZlcmxheS9NYWtlZmlsZSBnc3QvZmVzdGl2YWwvTWFrZWZpbGUgZ3N0L2ZpZWxkYW5hbHlzaXMvTWFrZWZpbGUgZ3N0L2ZyZWV2ZXJiL01ha2VmaWxlIGdzdC9mcmVpMHIvTWFrZWZpbGUgZ3N0L2dhdWRpZWZmZWN0cy9NYWtlZmlsZSBnc3QvZ2VvbWV0cmljdHJhbnNmb3JtL01ha2VmaWxlIGdzdC9nZHAvTWFrZWZpbGUgZ3N0L2hkdnBhcnNlL01ha2VmaWxlIGdzdC9pZDN0YWcvTWFrZWZpbGUgZ3N0L2ludGVyL01ha2VmaWxlIGdzdC9pbnRlcmxhY2UvTWFrZWZpbGUgZ3N0L2l2ZnBhcnNlL01ha2VmaWxlIGdzdC9pdnRjL01ha2VmaWxlIGdzdC9qcDJrZGVjaW1hdG9yL01ha2VmaWxlIGdzdC9qcGVnZm9ybWF0L01ha2VmaWxlIGdzdC9saWJyZmIvTWFrZWZpbGUgZ3N0L21pZGkvTWFrZWZpbGUgZ3N0L21wZWdkZW11eC9NYWtlZmlsZSBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUgZ3N0L21wZWd0c211eC9NYWtlZmlsZSBnc3QvbXBlZ3RzbXV4L3RzbXV4L01ha2VmaWxlIGdzdC9tcGVncHNtdXgvTWFrZWZpbGUgZ3N0L212ZS9NYWtlZmlsZSBnc3QvbXhmL01ha2VmaWxlIGdzdC9uZXRzaW0vTWFrZWZpbGUgZ3N0L251dmRlbXV4L01ha2VmaWxlIGdzdC9vbnZpZi9NYWtlZmlsZSBnc3QvcGF0Y2hkZXRlY3QvTWFrZWZpbGUgZ3N0L3BjYXBwYXJzZS9NYWtlZmlsZSBnc3QvcG5tL01ha2VmaWxlIGdzdC9yYXdwYXJzZS9NYWtlZmlsZSBnc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZSBnc3Qvc2RpL01ha2VmaWxlIGdzdC9zZHAvTWFrZWZpbGUgZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlIGdzdC9zaXJlbi9NYWtlZmlsZSBnc3Qvc21vb3RoL01ha2VmaWxlIGdzdC9zcGVlZC9NYWtlZmlsZSBnc3Qvc3ViZW5jL01ha2VmaWxlIGdzdC9zdGVyZW8vTWFrZWZpbGUgZ3N0L3R0YS9NYWtlZmlsZSBnc3QvdmlkZW9maWx0ZXJzL01ha2VmaWxlIGdzdC92aWRlb21lYXN1cmUvTWFrZWZpbGUgZ3N0L3ZpZGVvcGFyc2Vycy9NYWtlZmlsZSBnc3QvdmlkZW9zaWduYWwvTWFrZWZpbGUgZ3N0L3ZtbmMvTWFrZWZpbGUgZ3N0L3k0bS9NYWtlZmlsZSBnc3QveWFkaWYvTWFrZWZpbGUgZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUgZ3N0LWxpYnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L01ha2VmaWxlIGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlIGdzdC1saWJzL2dzdC9iYXNlY2FtZXJhYmluc3JjL01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvY29jb2EvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L01ha2VmaWxlIGdzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvZ2wvd2luMzIvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L2dsL3gxMS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlIGdzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlIGdzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUgZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZSBnc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZSBnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSBnc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZSBnc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZSBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUgc3lzL01ha2VmaWxlIHN5cy9kc2hvd2RlY3dyYXBwZXIvTWFrZWZpbGUgc3lzL2FjbWVuYy9NYWtlZmlsZSBzeXMvYWNtbXAzZGVjL01ha2VmaWxlIHN5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUgc3lzL2FwcGxlbWVkaWEtbm9ucHVibGljL01ha2VmaWxlIHN5cy9hdmMvTWFrZWZpbGUgc3lzL2JsdWV6L01ha2VmaWxlIHN5cy9kM2R2aWRlb3NpbmsvTWFrZWZpbGUgc3lzL2RlY2tsaW5rL01ha2VmaWxlIHN5cy9kaXJlY3Rzb3VuZC9NYWtlZmlsZSBzeXMvZHNob3dzcmN3cmFwcGVyL01ha2VmaWxlIHN5cy9kc2hvd3ZpZGVvc2luay9NYWtlZmlsZSBzeXMvZHZiL01ha2VmaWxlIHN5cy9mYmRldi9NYWtlZmlsZSBzeXMvbGluc3lzL01ha2VmaWxlIHN5cy9udmVuYy9NYWtlZmlsZSBzeXMvb3BlbnNsZXMvTWFrZWZpbGUgc3lzL3NobS9NYWtlZmlsZSBzeXMvdGlueWFsc2EvTWFrZWZpbGUgc3lzL3V2Y2gyNjQvTWFrZWZpbGUgc3lzL3ZjZC9NYWtlZmlsZSBzeXMvdmRwYXUvTWFrZWZpbGUgc3lzL3B2cjJkL01ha2VmaWxlIHN5cy93YXNhcGkvTWFrZWZpbGUgc3lzL3dpbmluZXQvTWFrZWZpbGUgc3lzL3dpbmtzL01ha2VmaWxlIHN5cy93aW5zY3JlZW5jYXAvTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvY2hlY2svTWFrZWZpbGUgdGVzdHMvZmlsZXMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvYXZzYW1wbGVzaW5rL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2RpcmVjdGZiL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2NvY29hL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvZG91YmxlY3ViZS9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL3JlY29yZGdyYXBoaWMvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9ndGt2aWRlb292ZXJsYXkvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrLzNkdmlkZW8vTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcm5vdmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJ2aWRlb292ZXJsYXkvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9nbC9ndGsvc3dpdGNodmlkZW9vdmVybGF5L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL3F0L01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL2dsL3NkbC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvbXBlZ3RzL01ha2VmaWxlIHRlc3RzL2V4YW1wbGVzL214Zi9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy9vcGVuY3YvTWFrZWZpbGUgdGVzdHMvZXhhbXBsZXMvdXZjaDI2NC9NYWtlZmlsZSB0ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9NYWtlZmlsZSB0ZXN0cy9pY2xlcy9NYWtlZmlsZSBleHQvdm9hbXJ3YmVuYy9NYWtlZmlsZSBleHQvdm9hYWNlbmMvTWFrZWZpbGUgZXh0L2Fzc3JlbmRlci9NYWtlZmlsZSBleHQvYXBleHNpbmsvTWFrZWZpbGUgZXh0L2JzMmIvTWFrZWZpbGUgZXh0L2J6Mi9NYWtlZmlsZSBleHQvY2hyb21hcHJpbnQvTWFrZWZpbGUgZXh0L2N1cmwvTWFrZWZpbGUgZXh0L2Rhc2gvTWFrZWZpbGUgZXh0L2RjMTM5NC9NYWtlZmlsZSBleHQvZGlyZWN0ZmIvTWFrZWZpbGUgZXh0L3dheWxhbmQvTWFrZWZpbGUgZXh0L2RhYWxhL01ha2VmaWxlIGV4dC9kdHMvTWFrZWZpbGUgZXh0L2dsL01ha2VmaWxlIGV4dC9ndGsvTWFrZWZpbGUgZXh0L2ZhYWMvTWFrZWZpbGUgZXh0L2ZhYWQvTWFrZWZpbGUgZXh0L2ZsaXRlL01ha2VmaWxlIGV4dC9mbHVpZHN5bnRoL01ha2VmaWxlIGV4dC9nc20vTWFrZWZpbGUgZXh0L2hscy9NYWtlZmlsZSBleHQva2F0ZS9NYWtlZmlsZSBleHQvbGFkc3BhL01ha2VmaWxlIGV4dC9sdjIvTWFrZWZpbGUgZXh0L2xpYmRlMjY1L01ha2VmaWxlIGV4dC9saWJtbXMvTWFrZWZpbGUgZXh0L2xpYnZpc3VhbC9NYWtlZmlsZSBleHQvTWFrZWZpbGUgZXh0L21vZHBsdWcvTWFrZWZpbGUgZXh0L21wZWcyZW5jL01ha2VmaWxlIGV4dC9taW1pYy9NYWtlZmlsZSBleHQvbXBsZXgvTWFrZWZpbGUgZXh0L211c2VwYWNrL01ha2VmaWxlIGV4dC9uYXMvTWFrZWZpbGUgZXh0L25lb24vTWFrZWZpbGUgZXh0L29mYS9NYWtlZmlsZSBleHQvb3BlbmFsL01ha2VmaWxlIGV4dC9vcGVuY3YvTWFrZWZpbGUgZXh0L29wZW5leHIvTWFrZWZpbGUgZXh0L29wZW5oMjY0L01ha2VmaWxlIGV4dC9vcGVuanBlZy9NYWtlZmlsZSBleHQvb3Blbm5pMi9NYWtlZmlsZSBleHQvb3B1cy9NYWtlZmlsZSBleHQvcXQvTWFrZWZpbGUgZXh0L3JzdmcvTWFrZWZpbGUgZXh0L3Jlc2luZHZkL01ha2VmaWxlIGV4dC9ydG1wL01ha2VmaWxlIGV4dC9zYmMvTWFrZWZpbGUgZXh0L3NjaHJvZWRpbmdlci9NYWtlZmlsZSBleHQvc2RsL01ha2VmaWxlIGV4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUgZXh0L3NuZGZpbGUvTWFrZWZpbGUgZXh0L3NvdW5kdG91Y2gvTWFrZWZpbGUgZXh0L3NwYW5kc3AvTWFrZWZpbGUgZXh0L3NuZGlvL01ha2VmaWxlIGV4dC9zcnRwL01ha2VmaWxlIGV4dC90ZWxldGV4dGRlYy9NYWtlZmlsZSBleHQvZ21lL01ha2VmaWxlIGV4dC9zcGMvTWFrZWZpbGUgZXh0L3RpbWlkaXR5L01ha2VmaWxlIGV4dC92dWxrYW4vTWFrZWZpbGUgZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUgZXh0L3dlYnAvTWFrZWZpbGUgZXh0L3gyNjUvTWFrZWZpbGUgZXh0L3h2aWQvTWFrZWZpbGUgZXh0L3piYXIvTWFrZWZpbGUgZXh0L2R0bHMvTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gZG9jcy9NYWtlZmlsZSBkb2NzL3BsdWdpbnMvTWFrZWZpbGUgZG9jcy9saWJzL01ha2VmaWxlIGRvY3MvdmVyc2lvbi5lbnRpdGllcyBwa2djb25maWcvTWFrZWZpbGUgcGtnY29uZmlnL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMgcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy5wYyBwa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQucGMgcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby5wYyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYyB0b29scy9NYWtlZmlsZSBtNC9NYWtlZmlsZSIKIAogCiBzZWQgXApAQCAtNTU4NTIsNiArNTgwNTMsMTAgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiR1NUX1BMVUdJTl9CVUlMRF9TVEFUSUNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCitpZiB0ZXN0IC16ICIke1dJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFfSIgJiYgdGVzdCAteiAiJHtXSVRIX0dTVF9QTEFZRVJfVEVTVFNfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJXSVRIX0dTVF9QTEFZRVJfVEVTVFNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCiBpZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fQUNDVVJJUF9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfUExVR0lOX0FDQ1VSSVBfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX0FDQ1VSSVBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU1ODY4LDYgKzU4MDczLDEwIEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9QTFVHSU5fQUlGRlwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKK2lmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9WSURFT0ZSQU1FX0FVRElPTEVWRUxfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9WSURFT0ZSQU1FX0FVRElPTEVWRUxfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX1ZJREVPRlJBTUVfQVVESU9MRVZFTFwiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKIGlmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9BU0ZNVVhfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX1BMVUdJTl9BU0ZNVVhfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX0FTRk1VWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTU5OTYsMTAgKzU4MjA1LDYgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9MSUJSRkJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCi1pZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTElWRUFEREVSX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTElWRUFEREVSX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9MSVZFQURERVJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KLVVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKLWZpCiBpZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTUlESV9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfUExVR0lOX01JRElfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX01JRElcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU2MDI4LDYgKzU4MjMzLDEwIEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9QTFVHSU5fTVhGXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQoraWYgdGVzdCAteiAiJHtVU0VfUExVR0lOX05FVFNJTV9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfUExVR0lOX05FVFNJTV9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9QTFVHSU5fTkVUU0lNXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQogaWYgdGVzdCAteiAiJHtVU0VfUExVR0lOX05VVkRFTVVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fTlVWREVNVVhfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX05VVkRFTVVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01NjA1NiwxMCArNTgyNjUsNiBAQAogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfUExVR0lOX1JFTU9WRVNJTEVOQ0VcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCi1pZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fUlRQX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fUlRQX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9SVFBcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KLVVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKLWZpCiBpZiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fU0RJX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9QTFVHSU5fU0RJX0ZBTFNFfSI7IHRoZW4KICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1BMVUdJTl9TRElcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU2MjE2LDYgKzU4NDIxLDEwIEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIkhBVkVfSlBFR1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKK2lmIHRlc3QgLXogIiR7VVNFX1hDQl9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfWENCX0ZBTFNFfSI7IHRoZW4KKyAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1hDQlwiIHdhcyBuZXZlciBkZWZpbmVkLgorVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQorZmkKIGlmIHRlc3QgLXogIiR7VVNFX0RJUkVDVFNPVU5EX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9ESVJFQ1RTT1VORF9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9ESVJFQ1RTT1VORFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTYyNjgsNiArNTg0NzcsMTggQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1VWQ0gyNjRcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKIGZpCitpZiB0ZXN0IC16ICIke1VTRV9OVkVOQ19UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfTlZFTkNfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfTlZFTkNcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCitpZiB0ZXN0IC16ICIke1VTRV9OVkVOQ19HU1RfR0xfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX05WRU5DX0dTVF9HTF9GQUxTRX0iOyB0aGVuCisgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9OVkVOQ19HU1RfR0xcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCitpZiB0ZXN0IC16ICIke1VTRV9USU5ZQUxTQV9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfVElOWUFMU0FfRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfVElOWUFMU0FcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KK1VzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKK2ZpCiBpZiB0ZXN0IC16ICIke1VTRV9BU1NSRU5ERVJfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX0FTU1JFTkRFUl9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9BU1NSRU5ERVJcIiB3YXMgbmV2ZXIgZGVmaW5lZC4KIFVzdWFsbHkgdGhpcyBtZWFucyB0aGUgbWFjcm8gd2FzIG9ubHkgaW52b2tlZCBjb25kaXRpb25hbGx5LiIgIiRMSU5FTk8iIDUKQEAgLTU2NDI0LDEwICs1ODY0NSw2IEBACiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9NUEVHMkVOQ1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKLWlmIHRlc3QgLXogIiR7VVNFX01QRzEyM19UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfTVBHMTIzX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX01QRzEyM1wiIHdhcyBuZXZlciBkZWZpbmVkLgotVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQotZmkKIGlmIHRlc3QgLXogIiR7VVNFX01QTEVYX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9NUExFWF9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9NUExFWFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTY1MDQsNiArNTg3MjEsMTAgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX1FUXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQoraWYgdGVzdCAteiAiJHtVU0VfVlVMS0FOX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9WVUxLQU5fRkFMU0V9IjsgdGhlbgorICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfVlVMS0FOXCIgd2FzIG5ldmVyIGRlZmluZWQuCitVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CitmaQogaWYgdGVzdCAteiAiJHtVU0VfTElCVklTVUFMX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9MSUJWSVNVQUxfRkFMU0V9IjsgdGhlbgogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfTElCVklTVUFMXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01NjU4NCwxMCArNTg4MDUsNiBAQAogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfU1BBTkRTUFwiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQogZmkKLWlmIHRlc3QgLXogIiR7VVNFX0dTRVRUSU5HU19UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfR1NFVFRJTkdTX0ZBTFNFfSI7IHRoZW4KLSAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX0dTRVRUSU5HU1wiIHdhcyBuZXZlciBkZWZpbmVkLgotVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQotZmkKIGlmIHRlc3QgLXogIiR7VVNFX1NORElPX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9TTkRJT19GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9TTkRJT1wiIHdhcyBuZXZlciBkZWZpbmVkLgogVXN1YWxseSB0aGlzIG1lYW5zIHRoZSBtYWNybyB3YXMgb25seSBpbnZva2VkIGNvbmRpdGlvbmFsbHkuIiAiJExJTkVOTyIgNQpAQCAtNTY3NTYsMTAgKzU4OTczLDYgQEAKICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX01QRUcyRU5DXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQotaWYgdGVzdCAteiAiJHtVU0VfTVBHMTIzX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9NUEcxMjNfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfTVBHMTIzXCIgd2FzIG5ldmVyIGRlZmluZWQuCi1Vc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1Ci1maQogaWYgdGVzdCAteiAiJHtVU0VfTVBMRVhfVFJVRX0iICYmIHRlc3QgLXogIiR7VVNFX01QTEVYX0ZBTFNFfSI7IHRoZW4KICAgYXNfZm5fZXJyb3IgJD8gImNvbmRpdGlvbmFsIFwiVVNFX01QTEVYXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01Njg1NiwxMCArNTkwNjksNiBAQAogICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfR01FXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CiBmaQotaWYgdGVzdCAteiAiJHtVU0VfR1NFVFRJTkdTX1RSVUV9IiAmJiB0ZXN0IC16ICIke1VTRV9HU0VUVElOR1NfRkFMU0V9IjsgdGhlbgotICBhc19mbl9lcnJvciAkPyAiY29uZGl0aW9uYWwgXCJVU0VfR1NFVFRJTkdTXCIgd2FzIG5ldmVyIGRlZmluZWQuCi1Vc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1Ci1maQogaWYgdGVzdCAteiAiJHtVU0VfWFZJRF9UUlVFfSIgJiYgdGVzdCAteiAiJHtVU0VfWFZJRF9GQUxTRX0iOyB0aGVuCiAgIGFzX2ZuX2Vycm9yICQ/ICJjb25kaXRpb25hbCBcIlVTRV9YVklEXCIgd2FzIG5ldmVyIGRlZmluZWQuCiBVc3VhbGx5IHRoaXMgbWVhbnMgdGhlIG1hY3JvIHdhcyBvbmx5IGludm9rZWQgY29uZGl0aW9uYWxseS4iICIkTElORU5PIiA1CkBAIC01NzMyNSw3ICs1OTUzNCw3IEBACiAjIHJlcG9ydCBhY3R1YWwgaW5wdXQgdmFsdWVzIG9mIENPTkZJR19GSUxFUyBldGMuIGluc3RlYWQgb2YgdGhlaXIKICMgdmFsdWVzIGFmdGVyIG9wdGlvbnMgaGFuZGxpbmcuCiBhY19sb2c9IgotVGhpcyBmaWxlIHdhcyBleHRlbmRlZCBieSBHU3RyZWFtZXIgQmFkIFBsdWctaW5zICRhc19tZSAxLjYuMywgd2hpY2ggd2FzCitUaGlzIGZpbGUgd2FzIGV4dGVuZGVkIGJ5IEdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgJGFzX21lIDEuNy45MSwgd2hpY2ggd2FzCiBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjkuICBJbnZvY2F0aW9uIGNvbW1hbmQgbGluZSB3YXMKIAogICBDT05GSUdfRklMRVMgICAgPSAkQ09ORklHX0ZJTEVTCkBAIC01NzM5MSw3ICs1OTYwMCw3IEBACiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PF9BQ0VPRiB8fCBhY193cml0ZV9mYWlsPTEKIGFjX2NzX2NvbmZpZz0iYCRhc19lY2hvICIkYWNfY29uZmlndXJlX2FyZ3MiIHwgc2VkICdzL14gLy87IHMvW1xcIiJcYFwkXS9cXFxcJi9nJ2AiCiBhY19jc192ZXJzaW9uPSJcXAotR1N0cmVhbWVyIEJhZCBQbHVnLWlucyBjb25maWcuc3RhdHVzIDEuNi4zCitHU3RyZWFtZXIgQmFkIFBsdWctaW5zIGNvbmZpZy5zdGF0dXMgMS43LjkxCiBjb25maWd1cmVkIGJ5ICQwLCBnZW5lcmF0ZWQgYnkgR05VIEF1dG9jb25mIDIuNjksCiAgIHdpdGggb3B0aW9ucyBcXCJcJGFjX2NzX2NvbmZpZ1xcIgogCkBAIC01NzUyOSw2ICs1OTczOCw3IEBACiBlbmFibGVfc2hhcmVkPSdgJEVDSE8gIiRlbmFibGVfc2hhcmVkIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIHBpY19tb2RlPSdgJEVDSE8gIiRwaWNfbW9kZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBlbmFibGVfZmFzdF9pbnN0YWxsPSdgJEVDSE8gIiRlbmFibGVfZmFzdF9pbnN0YWxsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK3NoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPSdgJEVDSE8gIiRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBTSEVMTD0nYCRFQ0hPICIkU0hFTEwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogRUNITz0nYCRFQ0hPICIkRUNITyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBQQVRIX1NFUEFSQVRPUj0nYCRFQ0hPICIkUEFUSF9TRVBBUkFUT1IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTc1NzYsMTAgKzU5Nzg2LDEzIEBACiBHQ0M9J2AkRUNITyAiJEdDQyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQ9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2ltcG9ydCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl9ubV9pbnRlcmZhY2U9J2AkRUNITyAiJGx0X2N2X25tX2ludGVyZmFjZSIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitsdF9jdl90cnVuY2F0ZV9iaW49J2AkRUNITyAiJGx0X2N2X3RydW5jYXRlX2JpbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwpAQCAtNTc2NDQsNyArNTk4NTcsOCBAQAogZmluaXNoX2V2YWw9J2AkRUNITyAiJGZpbmlzaF9ldmFsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIGhhcmRjb2RlX2ludG9fbGlicz0nYCRFQ0hPICIkaGFyZGNvZGVfaW50b19saWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0nYCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLXN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSdgJEVDSE8gIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitjb25maWd1cmVfdGltZV9kbHNlYXJjaF9wYXRoPSdgJEVDSE8gIiRjb25maWd1cmVfdGltZV9kbHNlYXJjaF9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK2NvbmZpZ3VyZV90aW1lX2x0X3N5c19saWJyYXJ5X3BhdGg9J2AkRUNITyAiJGNvbmZpZ3VyZV90aW1lX2x0X3N5c19saWJyYXJ5X3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogaGFyZGNvZGVfYWN0aW9uPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb24iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwogZW5hYmxlX2Rsb3Blbj0nYCRFQ0hPICIkZW5hYmxlX2Rsb3BlbiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCiBlbmFibGVfZGxvcGVuX3NlbGY9J2AkRUNITyAiJGVuYWJsZV9kbG9wZW5fc2VsZiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCkBAIC01Nzc1MCw5ICs1OTk2NCwxMiBAQAogY29tcGlsZXIgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCiBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAogbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCitsdF9jdl9ubV9pbnRlcmZhY2UgXAogbm1fZmlsZV9saXN0X3NwZWMgXAorbHRfY3ZfdHJ1bmNhdGVfYmluIFwKIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKIGx0X3Byb2dfY29tcGlsZXJfd2wgXApAQCAtNTc4MTgsNyArNjAwMzUsNyBAQAogY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoX0NYWDsgZG8KICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiICMjIGV4Y2x1ZGUgZnJvbSBzY19wcm9oaWJpdF9uZXN0ZWRfcXVvdGVzCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU3ODQ1LDcgKzYwMDYyLDggQEAKIHBvc3R1bmluc3RhbGxfY21kcyBcCiBmaW5pc2hfY21kcyBcCiBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgXAotc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMgXAorY29uZmlndXJlX3RpbWVfZGxzZWFyY2hfcGF0aCBcCitjb25maWd1cmVfdGltZV9sdF9zeXNfbGlicmFyeV9wYXRoIFwKIHJlbG9hZF9jbWRzX0NYWCBcCiBvbGRfYXJjaGl2ZV9jbWRzX0NYWCBcCiBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzX0NYWCBcCkBAIC01Nzg1OSw3ICs2MDA3Nyw3IEBACiBwb3N0bGlua19jbWRzX0NYWDsgZG8KICAgICBjYXNlIFxgZXZhbCBcXFxcXCRFQ0hPIFxcXFwiIlxcXFxcJFwkdmFyIlxcXFwiXGAgaW4KICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiICMjIGV4Y2x1ZGUgZnJvbSBzY19wcm9oaWJpdF9uZXN0ZWRfcXVvdGVzCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU3ODY4LDE5ICs2MDA4NiwxNiBAQAogZG9uZQogCiBhY19hdXhfZGlyPSckYWNfYXV4X2RpcicKLXhzaV9zaGVsbD0nJHhzaV9zaGVsbCcKLWx0X3NoZWxsX2FwcGVuZD0nJGx0X3NoZWxsX2FwcGVuZCcKIAotIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHRoYXQgYWxsb3cgb3VyCiAjIGNvbW1hbmRzIHRocm91Z2ggd2l0aG91dCByZW1vdmFsIG9mIFwgZXNjYXBlcyBJTklULgotaWYgdGVzdCAtbiAiXCR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCitpZiB0ZXN0IC1uICJcJHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgogICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKIGZpCiAKIAogICAgIFBBQ0tBR0U9JyRQQUNLQUdFJwogICAgIFZFUlNJT049JyRWRVJTSU9OJwotICAgIFRJTUVTVEFNUD0nJFRJTUVTVEFNUCcKICAgICBSTT0nJFJNJwogICAgIG9maWxlPSckb2ZpbGUnCiAKQEAgLTU3OTE3LDYgKzYwMTMyLDkgQEAKIGdsX2NvbmZpZ19kZWZpbmVzPSckR0xfQ09ORklHX0RFRklORVMnCiAKIAordnVsa2FuX2NvbmZpZ19kZWZpbmVzPSckVlVMS0FOX0NPTkZJR19ERUZJTkVTJworCisKIF9BQ0VPRgogCiBjYXQgPj4kQ09ORklHX1NUQVRVUyA8PFxfQUNFT0YgfHwgYWNfd3JpdGVfZmFpbD0xCkBAIC01NzkzMSw2ICs2MDE0OSw3IEBACiAgICAgInBvLWRpcmVjdG9yaWVzIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIHBvLWRpcmVjdG9yaWVzIiA7OwogICAgICIkYWNfc3RkaW50X2giKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgJGFjX3N0ZGludF9oIiA7OwogICAgICJnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIpIENPTkZJR19DT01NQU5EUz0iJENPTkZJR19DT01NQU5EUyBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIgOzsKKyAgICAiZXh0L3Z1bGthbi92a2NvbmZpZy5oIikgQ09ORklHX0NPTU1BTkRTPSIkQ09ORklHX0NPTU1BTkRTIGV4dC92dWxrYW4vdmtjb25maWcuaCIgOzsKICAgICAiTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgTWFrZWZpbGUiIDs7CiAgICAgImNvbW1vbi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBjb21tb24vTWFrZWZpbGUiIDs7CiAgICAgImNvbW1vbi9tNC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBjb21tb24vbTQvTWFrZWZpbGUiIDs7CkBAIC01Nzk0MCw2ICs2MDE1OSw3IEBACiAgICAgImdzdC9hZHBjbWRlYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvYWRwY21kZWMvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9hZHBjbWVuYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvYWRwY21lbmMvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9haWZmL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9haWZmL01ha2VmaWxlIiA7OworICAgICJnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9hc2ZtdXgvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2FzZm11eC9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9hdWRpb21peGVyL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9hdWRpb21peGVyL01ha2VmaWxlIiA7OwpAQCAtNTc5NzEsNyArNjAxOTEsNiBAQAogICAgICJnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9saWJyZmIvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L2xpYnJmYi9NYWtlZmlsZSIgOzsKLSAgICAiZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlIiA7OwogICAgICJnc3QvbWlkaS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbWlkaS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L21wZWdkZW11eC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbXBlZ2RlbXV4L01ha2VmaWxlIiA7OwogICAgICJnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlIiA7OwpAQCAtNTc5ODAsNiArNjAxOTksNyBAQAogICAgICJnc3QvbXBlZ3BzbXV4L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9tcGVncHNtdXgvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9tdmUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L212ZS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L214Zi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbXhmL01ha2VmaWxlIiA7OworICAgICJnc3QvbmV0c2ltL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9uZXRzaW0vTWFrZWZpbGUiIDs7CiAgICAgImdzdC9udXZkZW11eC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvbnV2ZGVtdXgvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9vbnZpZi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3Qvb252aWYvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9wYXRjaGRldGVjdC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QvcGF0Y2hkZXRlY3QvTWFrZWZpbGUiIDs7CkBAIC01Nzk4Nyw3ICs2MDIwNyw2IEBACiAgICAgImdzdC9wbm0vTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L3BubS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L3Jhd3BhcnNlL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9yYXdwYXJzZS9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L3JlbW92ZXNpbGVuY2UvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L3JlbW92ZXNpbGVuY2UvTWFrZWZpbGUiIDs7Ci0gICAgImdzdC9ydHAvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0L3J0cC9NYWtlZmlsZSIgOzsKICAgICAiZ3N0L3NkaS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3Qvc2RpL01ha2VmaWxlIiA7OwogICAgICJnc3Qvc2RwL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC9zZHAvTWFrZWZpbGUiIDs7CiAgICAgImdzdC9zZWdtZW50Y2xpcC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3Qvc2VnbWVudGNsaXAvTWFrZWZpbGUiIDs7CkBAIC01ODAyNiw3ICs2MDI0NSw5IEBACiAgICAgImdzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL01ha2VmaWxlIiA7OwogICAgICJnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBnc3QtbGlicy9nc3Qvd2F5bGFuZC9NYWtlZmlsZSIgOzsKICAgICAiZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUiIDs7CisgICAgImdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZSIgOzsKICAgICAiZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZSIgOzsKKyAgICAiZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZSIgOzsKICAgICAic3lzL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9NYWtlZmlsZSIgOzsKICAgICAic3lzL2RzaG93ZGVjd3JhcHBlci9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvZHNob3dkZWN3cmFwcGVyL01ha2VmaWxlIiA7OwogICAgICJzeXMvYWNtZW5jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9hY21lbmMvTWFrZWZpbGUiIDs7CkBAIC01ODA0NCw4ICs2MDI2NSwxMCBAQAogICAgICJzeXMvZHZiL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9kdmIvTWFrZWZpbGUiIDs7CiAgICAgInN5cy9mYmRldi9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvZmJkZXYvTWFrZWZpbGUiIDs7CiAgICAgInN5cy9saW5zeXMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgc3lzL2xpbnN5cy9NYWtlZmlsZSIgOzsKKyAgICAic3lzL252ZW5jL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9udmVuYy9NYWtlZmlsZSIgOzsKICAgICAic3lzL29wZW5zbGVzL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHN5cy9vcGVuc2xlcy9NYWtlZmlsZSIgOzsKICAgICAic3lzL3NobS9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvc2htL01ha2VmaWxlIiA7OworICAgICJzeXMvdGlueWFsc2EvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgc3lzL3RpbnlhbHNhL01ha2VmaWxlIiA7OwogICAgICJzeXMvdXZjaDI2NC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvdXZjaDI2NC9NYWtlZmlsZSIgOzsKICAgICAic3lzL3ZjZC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBzeXMvdmNkL01ha2VmaWxlIiA7OwogICAgICJzeXMvdmRwYXUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgc3lzL3ZkcGF1L01ha2VmaWxlIiA7OwpAQCAtNTgwODQsNiArNjAzMDcsNyBAQAogICAgICJ0ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHMvZXhhbXBsZXMvbXhmL01ha2VmaWxlIiA7OwogICAgICJ0ZXN0cy9leGFtcGxlcy9vcGVuY3YvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdGVzdHMvZXhhbXBsZXMvb3BlbmN2L01ha2VmaWxlIiA7OwogICAgICJ0ZXN0cy9leGFtcGxlcy91dmNoMjY0L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHRlc3RzL2V4YW1wbGVzL3V2Y2gyNjQvTWFrZWZpbGUiIDs7CisgICAgInRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHRlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlIiA7OwogICAgICJ0ZXN0cy9pY2xlcy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyB0ZXN0cy9pY2xlcy9NYWtlZmlsZSIgOzsKICAgICAiZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC92b2FhY2VuYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvdm9hYWNlbmMvTWFrZWZpbGUiIDs7CkBAIC01ODExNiw3ICs2MDM0MCw2IEBACiAgICAgImV4dC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9tb2RwbHVnL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC9tb2RwbHVnL01ha2VmaWxlIiA7OwogICAgICJleHQvbXBlZzJlbmMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L21wZWcyZW5jL01ha2VmaWxlIiA7OwotICAgICJleHQvbXBnMTIzL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC9tcGcxMjMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9taW1pYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvbWltaWMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9tcGxleC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvbXBsZXgvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9tdXNlcGFjay9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvbXVzZXBhY2svTWFrZWZpbGUiIDs7CkBAIC01ODE0NSwxMCArNjAzNjgsMTAgQEAKICAgICAiZXh0L3NydHAvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3NydHAvTWFrZWZpbGUiIDs7CiAgICAgImV4dC90ZWxldGV4dGRlYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvdGVsZXRleHRkZWMvTWFrZWZpbGUiIDs7CiAgICAgImV4dC9nbWUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L2dtZS9NYWtlZmlsZSIgOzsKLSAgICAiZXh0L2dzZXR0aW5ncy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvZ3NldHRpbmdzL01ha2VmaWxlIiA7OwotICAgICJleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbCIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbCIgOzsKICAgICAiZXh0L3NwYy9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvc3BjL01ha2VmaWxlIiA7OwogICAgICJleHQvdGltaWRpdHkvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3RpbWlkaXR5L01ha2VmaWxlIiA7OworICAgICJleHQvdnVsa2FuL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC92dWxrYW4vTWFrZWZpbGUiIDs7CisgICAgImV4dC92dWxrYW4veGNiL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC92dWxrYW4veGNiL01ha2VmaWxlIiA7OwogICAgICJleHQvd2VicC9NYWtlZmlsZSIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBleHQvd2VicC9NYWtlZmlsZSIgOzsKICAgICAiZXh0L3gyNjUvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgZXh0L3gyNjUvTWFrZWZpbGUiIDs7CiAgICAgImV4dC94dmlkL01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIGV4dC94dmlkL01ha2VmaWxlIiA7OwpAQCAtNTgxNzAsMTIgKzYwMzkzLDE2IEBACiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wtdW5pbnN0YWxsZWQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYyIgOzsKICAgICAicGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHBrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjIiA7OworICAgICJwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYyIgOzsKKyAgICAicGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMiIDs7CiAgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS5wYyIgOzsKICAgICAicGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjIiA7OwogICAgICJwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYyIgOzsKICAgICAicGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMiIDs7CisgICAgInBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIHBrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjIiA7OworICAgICJwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYyIgOzsKICAgICAidG9vbHMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgdG9vbHMvTWFrZWZpbGUiIDs7CiAgICAgIm00L01ha2VmaWxlIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG00L01ha2VmaWxlIiA7OwogCkBAIC01ODg2OCw1NSArNjEwOTUsNTMgQEAKICA7OwogICAgICJsaWJ0b29sIjpDKQogCi0gICAgIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorICAgICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB0aGF0IGFsbG93IG91cgogICAgICMgY29tbWFuZHMgdGhyb3VnaCB3aXRob3V0IHJlbW92YWwgb2YgXCBlc2NhcGVzLgotICAgIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCisgICAgaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgogICAgICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKICAgICBmaQogCi0gICAgY2ZnZmlsZT0iJHtvZmlsZX1UIgorICAgIGNmZ2ZpbGU9JHtvZmlsZX1UCiAgICAgdHJhcCAiJFJNIFwiJGNmZ2ZpbGVcIjsgZXhpdCAxIiAxIDIgMTUKICAgICAkUk0gIiRjZmdmaWxlIgogCiAgICAgY2F0IDw8X0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCiAjISAkU0hFTEwKLQotIyBgJEVDSE8gIiRvZmlsZSIgfCBzZWQgJ3MlXi4qLyUlJ2AgLSBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KLSMgR2VuZXJhdGVkIGF1dG9tYXRpY2FsbHkgYnkgJGFzX21lICgkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisjIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRhc19tZSAoJFBBQ0tBR0UpICRWRVJTSU9OCiAjIExpYnRvb2wgd2FzIGNvbmZpZ3VyZWQgb24gaG9zdCBgKGhvc3RuYW1lIHx8IHVuYW1lIC1uKSAyPi9kZXYvbnVsbCB8IHNlZCAxcWA6CiAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKworIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KKyMgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorCisjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgVGhpcyBpcyBmcmVlIHNvZnR3YXJlOyBzZWUgdGhlIHNvdXJjZSBmb3IgY29weWluZyBjb25kaXRpb25zLiAgVGhlcmUgaXMgTk8KKyMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCisKKyMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgogIwotIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQotIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgotIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSBvciBsaWJyYXJ5IHRoYXQgaXMgYnVpbHQKKyMgdXNpbmcgR05VIExpYnRvb2wsIHlvdSBtYXkgaW5jbHVkZSB0aGlzIGZpbGUgdW5kZXIgdGhlICBzYW1lCisjIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KICMKLSMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLSMKLSMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0jIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKLSMgaWYgeW91IGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIG9yIGxpYnJhcnkgdGhhdAotIyBpcyBidWlsdCB1c2luZyBHTlUgTGlidG9vbCwgeW91IG1heSBpbmNsdWRlIHRoaXMgZmlsZSB1bmRlciB0aGUKLSMgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0jCi0jIEdOVSBMaWJ0b29sIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIEdOVSBMaWJ0b29sIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCBHTlUgTGlidG9vbDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIGEgY29weQotIyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCwgb3IKLSMgb2J0YWluZWQgYnkgd3JpdGluZyB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiAKIAogIyBUaGUgbmFtZXMgb2YgdGhlIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzdXBwb3J0ZWQgYnkgdGhpcyBzY3JpcHQuCi1hdmFpbGFibGVfdGFncz0iQ1hYICIKK2F2YWlsYWJsZV90YWdzPSdDWFggJworCisjIENvbmZpZ3VyZWQgZGVmYXVsdHMgZm9yIHN5c19saWJfZGxzZWFyY2hfcGF0aCBtdW5naW5nLgorOiBcJHtMVF9TWVNfTElCUkFSWV9QQVRIPSIkY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aCJ9CiAKICMgIyMjIEJFR0lOIExJQlRPT0wgQ09ORklHCiAKQEAgLTU4OTQ1LDYgKzYxMTcwLDkgQEAKICMgV2hldGhlciBvciBub3QgdG8gb3B0aW1pemUgZm9yIGZhc3QgaW5zdGFsbGF0aW9uLgogZmFzdF9pbnN0YWxsPSRlbmFibGVfZmFzdF9pbnN0YWxsCiAKKyMgU2hhcmVkIGFyY2hpdmUgbWVtYmVyIGJhc2VuYW1lLGZvciBmaWxlbmFtZSBiYXNlZCBzaGFyZWQgbGlicmFyeSB2ZXJzaW9uaW5nIG9uIEFJWC4KK3NoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPSRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYworCiAjIFNoZWxsIHRvIHVzZSB3aGVuIGludm9raW5nIHNoZWxsIHNjcmlwdHMuCiBTSEVMTD0kbHRfU0hFTEwKIApAQCAtNTkwNTYsMTggKzYxMjg0LDI3IEBACiAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgcHJvcGVyIEMgZGVjbGFyYXRpb24uCiBnbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbAogCisjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGludG8gYSBsaXN0IG9mIHN5bWJvbHMgdG8gbWFudWFsbHkgcmVsb2NhdGUuCitnbG9iYWxfc3ltYm9sX3RvX2ltcG9ydD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9faW1wb3J0CisKICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyLgogZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKIAogIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAogCisjIFRoZSBuYW1lIGxpc3RlciBpbnRlcmZhY2UuCitubV9pbnRlcmZhY2U9JGx0X2x0X2N2X25tX2ludGVyZmFjZQorCiAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KIG5tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwogCi0jIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIHdoZXJlIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KIGx0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKIAorIyBDb21tYW5kIHRvIHRydW5jYXRlIGEgYmluYXJ5IHBpcGUuCitsdF90cnVuY2F0ZV9iaW49JGx0X2x0X2N2X3RydW5jYXRlX2JpbgorCiAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KIG9iamRpcj0kb2JqZGlyCiAKQEAgLTU5MTU4LDggKzYxMzk1LDExIEBACiAjIENvbXBpbGUtdGltZSBzeXN0ZW0gc2VhcmNoIHBhdGggZm9yIGxpYnJhcmllcy4KIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0kbHRfc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiAKLSMgUnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMuCi1zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kbHRfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMKKyMgRGV0ZWN0ZWQgcnVuLXRpbWUgc3lzdGVtIHNlYXJjaCBwYXRoIGZvciBsaWJyYXJpZXMuCitzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kbHRfY29uZmlndXJlX3RpbWVfZGxzZWFyY2hfcGF0aAorCisjIEV4cGxpY2l0IExUX1NZU19MSUJSQVJZX1BBVEggc2V0IGR1cmluZyAuL2NvbmZpZ3VyZSB0aW1lLgorY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aD0kbHRfY29uZmlndXJlX3RpbWVfbHRfc3lzX2xpYnJhcnlfcGF0aAogCiAjIFdoZXRoZXIgZGxvcGVuIGlzIHN1cHBvcnRlZC4KIGRsb3Blbl9zdXBwb3J0PSRlbmFibGVfZGxvcGVuCkBAIC01OTI1MiwxMyArNjE0OTIsMTMgQEAKICMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IKIAotIyBTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUVcJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCRzaGFyZWRfZXh0IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcwogIyBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeS4KIGhhcmRjb2RlX2RpcmVjdD0kaGFyZGNvZGVfZGlyZWN0CiAKLSMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzCisjIFNldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRVwkc2hhcmVkX2V4dCBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKICMgRElSIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnkgYW5kIHRoZSByZXN1bHRpbmcgbGlicmFyeSBkZXBlbmRlbmN5IGlzCi0jICJhYnNvbHV0ZSIsaS5lIGltcG9zc2libGUgdG8gY2hhbmdlIGJ5IHNldHRpbmcgXCR7c2hsaWJwYXRoX3Zhcn0gaWYgdGhlCisjICJhYnNvbHV0ZSIsaS5lIGltcG9zc2libGUgdG8gY2hhbmdlIGJ5IHNldHRpbmcgXCRzaGxpYnBhdGhfdmFyIGlmIHRoZQogIyBsaWJyYXJ5IGlzIHJlbG9jYXRlZC4KIGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZT0kaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlCiAKQEAgLTU5MzI0LDEzICs2MTU2NCw3MiBAQAogCiBfTFRfRU9GCiAKKyAgICBjYXQgPDwnX0xUX0VPRicgPj4gIiRjZmdmaWxlIgorCisjICMjIyBCRUdJTiBGVU5DVElPTlMgU0hBUkVEIFdJVEggQ09ORklHVVJFCisKKyMgZnVuY19tdW5nZV9wYXRoX2xpc3QgVkFSSUFCTEUgUEFUSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBWQVJJQUJMRSBpcyBuYW1lIG9mIHZhcmlhYmxlIGNvbnRhaW5pbmcgX3NwYWNlXyBzZXBhcmF0ZWQgbGlzdCBvZgorIyBkaXJlY3RvcmllcyB0byBiZSBtdW5nZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFBBVEgsIHdoaWNoIGlzIHN0cmluZworIyBoYXZpbmcgYSBmb3JtYXQ6CisjICJESVJbOkRJUl06IgorIyAgICAgICBzdHJpbmcgIkRJUlsgRElSXSIgd2lsbCBiZSBwcmVwZW5kZWQgdG8gVkFSSUFCTEUKKyMgIjpESVJbOkRJUl0iCisjICAgICAgIHN0cmluZyAiRElSWyBESVJdIiB3aWxsIGJlIGFwcGVuZGVkIHRvIFZBUklBQkxFCisjICJESVJQWzpESVJQXTo6W0RJUkE6XURJUkEiCisjICAgICAgIHN0cmluZyAiRElSUFsgRElSUF0iIHdpbGwgYmUgcHJlcGVuZGVkIHRvIFZBUklBQkxFIGFuZCBzdHJpbmcKKyMgICAgICAgIkRJUkFbIERJUkFdIiB3aWxsIGJlIGFwcGVuZGVkIHRvIFZBUklBQkxFCisjICJESVJbOkRJUl0iCisjICAgICAgIFZBUklBQkxFIHdpbGwgYmUgcmVwbGFjZWQgYnkgIkRJUlsgRElSXSIKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0ICgpCit7CisgICAgY2FzZSB4JDIgaW4KKyAgICB4KQorICAgICAgICA7OworICAgICo6KQorICAgICAgICBldmFsICQxPVwiYCRFQ0hPICQyIHwgJFNFRCAncy86LyAvZydgIFwkJDFcIgorICAgICAgICA7OworICAgIHg6KikKKyAgICAgICAgZXZhbCAkMT1cIlwkJDEgYCRFQ0hPICQyIHwgJFNFRCAncy86LyAvZydgXCIKKyAgICAgICAgOzsKKyAgICAqOjoqKQorICAgICAgICBldmFsICQxPVwiXCQkMVwgYCRFQ0hPICQyIHwgJFNFRCAtZSAncy8uKjo6Ly8nIC1lICdzLzovIC9nJ2BcIgorICAgICAgICBldmFsICQxPVwiYCRFQ0hPICQyIHwgJFNFRCAtZSAncy86Oi4qLy8nIC1lICdzLzovIC9nJ2BcIFwkJDFcIgorICAgICAgICA7OworICAgICopCisgICAgICAgIGV2YWwgJDE9XCJgJEVDSE8gJDIgfCAkU0VEICdzLzovIC9nJ2BcIgorICAgICAgICA7OworICAgIGVzYWMKK30KKworCisjIENhbGN1bGF0ZSBjY19iYXNlbmFtZS4gIFNraXAga25vd24gY29tcGlsZXIgd3JhcHBlcnMgYW5kIGNyb3NzLXByZWZpeC4KK2Z1bmNfY2NfYmFzZW5hbWUgKCkKK3sKKyAgICBmb3IgY2NfdGVtcCBpbiAkKiIiOyBkbworICAgICAgY2FzZSAkY2NfdGVtcCBpbgorICAgICAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7CisgICAgICAgIGRpc3RjYyB8ICpbXFwvXWRpc3RjYyB8IHB1cmlmeSB8ICpbXFwvXXB1cmlmeSApIDs7CisgICAgICAgIFwtKikgOzsKKyAgICAgICAgKikgYnJlYWs7OworICAgICAgZXNhYworICAgIGRvbmUKKyAgICBmdW5jX2NjX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiRjY190ZW1wIiB8ICRTRUQgInMlLiovJSU7IHMlXiRob3N0X2FsaWFzLSUlImAKK30KKworCisjICMjIyBFTkQgRlVOQ1RJT05TIFNIQVJFRCBXSVRIIENPTkZJR1VSRQorCitfTFRfRU9GCisKICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXgzKikKICAgICBjYXQgPDxcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCiAjIEFJWCBzb21ldGltZXMgaGFzIHByb2JsZW1zIHdpdGggdGhlIEdDQyBjb2xsZWN0MiBwcm9ncmFtLiAgRm9yIHNvbWUKICMgcmVhc29uLCBpZiB3ZSBzZXQgdGhlIENPTExFQ1RfTkFNRVMgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBwcm9ibGVtcwogIyB2YW5pc2ggaW4gYSBwdWZmIG9mIHNtb2tlLgotaWYgdGVzdCAiWCR7Q09MTEVDVF9OQU1FUytzZXR9IiAhPSBYc2V0OyB0aGVuCitpZiB0ZXN0IHNldCAhPSAiJHtDT0xMRUNUX05BTUVTK3NldH0iOyB0aGVuCiAgIENPTExFQ1RfTkFNRVM9CiAgIGV4cG9ydCBDT0xMRUNUX05BTUVTCiBmaQpAQCAtNTkzMzksNyArNjE2MzgsNyBAQAogICBlc2FjCiAKIAotbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCitsdG1haW49JGFjX2F1eF9kaXIvbHRtYWluLnNoCiAKIAogICAjIFdlIHVzZSBzZWQgaW5zdGVhZCBvZiBjYXQgYmVjYXVzZSBiYXNoIG9uIERKR1BQIGdldHMgY29uZnVzZWQgaWYKQEAgLTU5MzQ5LDE2NSArNjE2NDgsNiBAQAogICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCiAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCiAKLSAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotZnVuY19kaXJuYW1lICgpXAote1wKLVwgICAgY2FzZSAkezF9IGluXAotXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi1cICAgIGVzYWNcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi1mdW5jX2Jhc2VuYW1lICgpXAote1wKLVwgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLX0gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAote1wKLVwgICAgY2FzZSAkezF9IGluXAotXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi1cICAgIGVzYWNcCi1cICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi0KLSAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi1mdW5jX3N0cmlwbmFtZSAoKVwKLXtcCi1cICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi1cICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi1cICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLVwgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLWZ1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi17XAotXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi1cICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi0KLSAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi1mdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLXtcCi1cICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotZnVuY19sbzJvICgpXAote1wKLVwgICAgY2FzZSAkezF9IGluXAotXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLVwgICAgZXNhY1wKLX0gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLWZ1bmNfeGZvcm0gKClcCi17XAotICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi0KLSAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotZnVuY19hcml0aCAoKVwKLXtcCi0gICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotZnVuY19sZW4gKClcCi17XAotICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLX0gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0gICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi10ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotCi1maQotCi1pZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0gIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotZnVuY19hcHBlbmQgKClcCi17XAotICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLQotCi0gIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi1mdW5jX2FwcGVuZF9xdW90ZWQgKClcCi17XAotXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLVwgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi19ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0KLQotICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0gIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLWVsc2UKLSAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0gIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci1maQotCi1pZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLWZpCi0KLQogICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAogICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCiAgIGNobW9kICt4ICIkb2ZpbGUiCkBAIC01OTU5NCwxMyArNjE3MzQsMTMgQEAKICMgV2hldGhlciB3ZSBuZWVkIGEgc2luZ2xlICItcnBhdGgiIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JGx0X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYCiAKLSMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzCisjIFNldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRVwkc2hhcmVkX2V4dCBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKICMgRElSIGludG8gdGhlIHJlc3VsdGluZyBiaW5hcnkuCiBoYXJkY29kZV9kaXJlY3Q9JGhhcmRjb2RlX2RpcmVjdF9DWFgKIAotIyBTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUVcJHtzaGFyZWRfZXh0fSBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKKyMgU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIERJUi9saWJOQU1FXCRzaGFyZWRfZXh0IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcwogIyBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeSBhbmQgdGhlIHJlc3VsdGluZyBsaWJyYXJ5IGRlcGVuZGVuY3kgaXMKLSMgImFic29sdXRlIixpLmUgaW1wb3NzaWJsZSB0byBjaGFuZ2UgYnkgc2V0dGluZyBcJHtzaGxpYnBhdGhfdmFyfSBpZiB0aGUKKyMgImFic29sdXRlIixpLmUgaW1wb3NzaWJsZSB0byBjaGFuZ2UgYnkgc2V0dGluZyBcJHNobGlicGF0aF92YXIgaWYgdGhlCiAjIGxpYnJhcnkgaXMgcmVsb2NhdGVkLgogaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlPSRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGVfQ1hYCiAKQEAgLTYwMjgwLDYgKzYyNDIwLDQzIEBACiAJICBtdiAkb3V0ZmlsZSBnc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb25maWcuaAogCWZpCiAgOzsKKyAgICAiZXh0L3Z1bGthbi92a2NvbmZpZy5oIjpDKQorCW91dGZpbGU9dmtjb25maWcuaC10bXAKKwljYXQgPiAkb3V0ZmlsZSA8PFxfX19fX19fRU9GCisvKiB2a2NvbmZpZy5oCisgKgorICogVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlLiAgUGxlYXNlIG1vZGlmeSBgY29uZmlndXJlLmFjJworICovCisKKyNpZm5kZWYgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKyNkZWZpbmUgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCitfX19fX19fRU9GCisKKwljYXQgPj4kb3V0ZmlsZSA8PF9fX19fX19FT0YKKyR2dWxrYW5fY29uZmlnX2RlZmluZXMKK19fX19fX19FT0YKKworCWNhdCA+PiRvdXRmaWxlIDw8X19fX19fX0VPRgorCitHX0VORF9ERUNMUworCisjZW5kaWYgIC8qIF9fR1NUX1ZVTEtBTl9DT05GSUdfSF9fICovCitfX19fX19fRU9GCisKKworCWlmIGNtcCAtcyAkb3V0ZmlsZSBleHQvdnVsa2FuL3ZrY29uZmlnLmg7IHRoZW4KKyAgICAgICAgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGV4dC92dWxrYW4vdmtjb25maWcuaCBpcyB1bmNoYW5nZWQiID4mNQorJGFzX2VjaG8gIiRhc19tZTogZXh0L3Z1bGthbi92a2NvbmZpZy5oIGlzIHVuY2hhbmdlZCIgPiY2O30KKwkgIHJtIC1mICRvdXRmaWxlCisJZWxzZQorCSAgbXYgJG91dGZpbGUgZXh0L3Z1bGthbi92a2NvbmZpZy5oCisJZmkKKyA7OwogCiAgIGVzYWMKIGRvbmUgIyBmb3IgYWNfdGFnCmRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKaW5kZXggNWQ3ZTJiMi4uZDE5OTU0YSAxMDA2NDQKLS0tIGEvY29uZmlndXJlLmFjCisrKyBiL2NvbmZpZ3VyZS5hYwpAQCAtMyw3ICszLDcgQEAKIGRubCBpbml0aWFsaXplIGF1dG9jb25mCiBkbmwgd2hlbiBnb2luZyB0by9mcm9tIHJlbGVhc2UgcGxlYXNlIHNldCB0aGUgbmFubyAoZm91cnRoIG51bWJlcikgcmlnaHQgIQogZG5sIHJlbGVhc2VzIG9ubHkgZG8gV2FsbCwgZ2l0IGFuZCBwcmVyZWxlYXNlIGRvZXMgV2Vycm9yIHRvbwotQUNfSU5JVChbR1N0cmVhbWVyIEJhZCBQbHVnLWluc10sWzEuNi4zXSxbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R1N0cmVhbWVyXSxbZ3N0LXBsdWdpbnMtYmFkXSkKK0FDX0lOSVQoW0dTdHJlYW1lciBCYWQgUGx1Zy1pbnNdLFsxLjcuOTFdLFtodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1HU3RyZWFtZXJdLFtnc3QtcGx1Z2lucy1iYWRdKQogCiBBR19HU1RfSU5JVAogCkBAIC01MSwxMSArNTEsMTEgQEAKIGRubCAtIGludGVyZmFjZXMgYWRkZWQgLT4gaW5jcmVtZW50IEFHRQogZG5sIC0gaW50ZXJmYWNlcyByZW1vdmVkIC0+IEFHRSA9IDAKIGRubCBzZXRzIEdTVF9MVF9MREZMQUdTCi1BU19MSUJUT09MKEdTVCwgNjAzLCAwLCA2MDMpCitBU19MSUJUT09MKEdTVCwgNzkxLCAwLCA3OTEpCiAKIGRubCAqKiogcmVxdWlyZWQgdmVyc2lvbnMgb2YgR1N0cmVhbWVyIHN0dWZmICoqKgotR1NUX1JFUT0xLjYuMwotR1NUUEJfUkVRPTEuNi4zCitHU1RfUkVRPTEuNy45MQorR1NUUEJfUkVRPTEuNy45MQogCiBkbmwgKioqIGF1dG90b29scyBzdHVmZiAqKioqCiAKQEAgLTc0LDYgKzc0LDcgQEAKIGRubCAqKiogY2hlY2sgZm9yIGFyZ3VtZW50cyB0byBjb25maWd1cmUgKioqCiAKIEFHX0dTVF9BUkdfRElTQUJMRV9GQVRBTF9XQVJOSU5HUworQUdfR1NUX0FSR19FTkFCTEVfRVhUUkFfQ0hFQ0tTCiAKIEFHX0dTVF9BUkdfREVCVUcKIEFHX0dTVF9BUkdfUFJPRklMSU5HCkBAIC0xOTAsNyArMTkxLDcgQEAKIEFDX0NIRUNLX0ZVTkMoZ2V0aG9zdGJ5bmFtZSwsW0FDX0NIRUNLX0xJQihuc2wsZ2V0aG9zdGJ5bmFtZSldKQogCiBkbmwgR0xpYiBpcyByZXF1aXJlZAotR0xJQl9SRVE9Mi4zMi4wCitHTElCX1JFUT0yLjQwLjAKIEFHX0dTVF9HTElCX0NIRUNLKFskR0xJQl9SRVFdKQogCiBkbmwgY2hlY2tzIGZvciBnc3RyZWFtZXIKQEAgLTI0MSw2ICsyNDIsMjIgQEAKIGZpCiBBTV9DT05ESVRJT05BTChIQVZFX0dUSywgdGVzdCAieCRIQVZFX0dUSyIgPSAieHllcyIpCiAKK2RubCBDaGVjayBmb3IgLUJzeW1ib2xpYy1mdW5jdGlvbnMgbGlua2VyIGZsYWcgdXNlZCB0byBhdm9pZAorZG5sIGludHJhLWxpYnJhcnkgUExUIGp1bXBzLCBpZiBhdmFpbGFibGUuCitBQ19BUkdfRU5BQkxFKEJzeW1ib2xpYywKKyAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWRpc2FibGUtQnN5bWJvbGljXSxbYXZvaWQgbGlua2luZyB3aXRoIC1Cc3ltYm9saWNdKV0sLAorICAgICAgICAgICAgICBbU0FWRURfTERGTEFHUz0iJHtMREZMQUdTfSIgU0FWRURfTElCUz0iJHtMSUJTfSIKKyAgICAgICAgICAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIC1Cc3ltYm9saWMtZnVuY3Rpb25zIGxpbmtlciBmbGFnXSkKKyAgICAgICAgICAgICAgIExERkxBR1M9LVdsLC1Cc3ltYm9saWMtZnVuY3Rpb25zCisgICAgICAgICAgICAgICBMSUJTPQorICAgICAgICAgICAgICAgQUNfVFJZX0xJTksoW10sIFtyZXR1cm4gMF0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICBBQ19NU0dfUkVTVUxUKHllcykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9Cc3ltYm9saWM9eWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTVNHX1JFU1VMVChubykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGVuYWJsZV9Cc3ltYm9saWM9bm8pCisgICAgICAgICAgICAgICBMREZMQUdTPSIke1NBVkVEX0xERkxBR1N9IiBMSUJTPSIke1NBVkVEX0xJQlN9Il0pCisKK2RubCAqKiogc2V0IHZhcmlhYmxlcyBiYXNlZCBvbiBjb25maWd1cmUgYXJndW1lbnRzICoqKgogCiBkbmwgR1RLIGlzIG9wdGlvbmFsIGFuZCB1c2VkIGluIGV4YW1wbGVzCiBIQVZFX0dUSzM9Tk8KQEAgLTM3OSw2ICszOTYsMTcgQEAKIEFDX1NVQlNUKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogQU1fQ09ORElUSU9OQUwoR1NUX1BMVUdJTl9CVUlMRF9TVEFUSUMsIHRlc3QgIngkZW5hYmxlX3N0YXRpY19wbHVnaW5zIiA9ICJ4eWVzIikKIAorQUNfQVJHX1dJVEgoW3BsYXllci10ZXN0c10sCisgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGxheWVyLXRlc3RzXSxbRW5hYmxlIEdzdFBsYXllciB0ZXN0cyB0aGF0IG5lZWQgbmV0d29yayBhY2Nlc3MgKGRlZmF1bHQ6IG5vKV0pKQoraWYgdGVzdCB4JHdpdGhfcGxheWVyX3Rlc3RzID0geHllczsgdGhlbgorICBBQ19QQVRIX1BST0coW1dHRVRdLCBbd2dldF0sIG5vKQorICBpZiB0ZXN0IHgkV0dFVCA9IHhubzsgdGhlbgorICAgIEFDX01TR19XQVJOKFt3Z2V0IHJlcXVpcmVkIGZvciBHc3RQbGF5ZXIgdGVzdHMgYnV0IG5vdCBmb3VuZCAtIGRpc2FibGluZ10pCisgICAgd2l0aF9wbGF5ZXJfdGVzdHM9bm8KKyAgZmkKK2ZpCitBTV9DT05ESVRJT05BTChXSVRIX0dTVF9QTEFZRVJfVEVTVFMsIHRlc3QgIngkd2l0aF9wbGF5ZXJfdGVzdHMiID0gInh5ZXMiKQorCiAjIHNldCBieSBBR19HU1RfUEFSU0VfU1VCU1lTVEVNX0RJU0FCTEVTIGFib3ZlCiBkbmwgbWFrZSBzdXJlIGl0IGRvZXNuJ3QgY29tcGxhaW4gYWJvdXQgdW51c2VkIHZhcmlhYmxlcyBpZiBkZWJ1Z2dpbmcgaXMgZGlzYWJsZWQKIE5PX1dBUk5JTkdTPSIiCkBAIC00MjMsMTAgKzQ1MSw5IEBACiAgdmlkZW9tZWFzdXJlIFwKICBsaW5zeXMgXAogIGFwZXhzaW5rIGRjMTM5NCBcCi0gZ3NldHRpbmdzIFwKICBtdXNlcGFjayBuYXMgc2RsIHRpbWlkaXR5IFwKLSBhY20gd2luaW5ldCBcCi0geHZpZCBsdjIgdGVsZXRleHRkZWMgc25kaW8gbGlidmlzdWFsIgorIHdpbmluZXQgXAorIHh2aWQgbHYyIHNuZGlvIGxpYnZpc3VhbCIKIEFDX1NVQlNUKEdTVF9QTFVHSU5TX05PTlBPUlRFRCkKIAogZG5sIHRoZXNlIGFyZSBhbGwgdGhlIGdzdCBwbHVnLWlucywgY29tcGlsYWJsZSB3aXRob3V0IGFkZGl0aW9uYWwgbGlicwpAQCAtNDM0LDYgKzQ2MSw3IEBACiBBR19HU1RfQ0hFQ0tfUExVR0lOKGFkcGNtZGVjKQogQUdfR1NUX0NIRUNLX1BMVUdJTihhZHBjbWVuYykKIEFHX0dTVF9DSEVDS19QTFVHSU4oYWlmZikKK0FHX0dTVF9DSEVDS19QTFVHSU4odmlkZW9mcmFtZV9hdWRpb2xldmVsKQogQUdfR1NUX0NIRUNLX1BMVUdJTihhc2ZtdXgpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKGF1ZGlvZnhiYWQpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKGF1ZGlvbWl4ZXIpCkBAIC00NjYsNyArNDk0LDYgQEAKIEFHX0dTVF9DSEVDS19QTFVHSU4oanAya2RlY2ltYXRvcikKIEFHX0dTVF9DSEVDS19QTFVHSU4oanBlZ2Zvcm1hdCkKIEFHX0dTVF9DSEVDS19QTFVHSU4obGlicmZiKQotQUdfR1NUX0NIRUNLX1BMVUdJTihsaXZlYWRkZXIpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKG1pZGkpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKG1wZWdkZW11eCkKIEFHX0dTVF9DSEVDS19QTFVHSU4obXBlZ3RzZGVtdXgpCkBAIC00NzQsNiArNTAxLDcgQEAKIEFHX0dTVF9DSEVDS19QTFVHSU4obXBlZ3BzbXV4KQogQUdfR1NUX0NIRUNLX1BMVUdJTihtdmUpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKG14ZikKK0FHX0dTVF9DSEVDS19QTFVHSU4obmV0c2ltKQogQUdfR1NUX0NIRUNLX1BMVUdJTihudXZkZW11eCkKIEFHX0dTVF9DSEVDS19QTFVHSU4ob252aWYpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKHBhdGNoZGV0ZWN0KQpAQCAtNDgxLDcgKzUwOSw2IEBACiBBR19HU1RfQ0hFQ0tfUExVR0lOKHBubSkKIEFHX0dTVF9DSEVDS19QTFVHSU4ocmF3cGFyc2UpCiBBR19HU1RfQ0hFQ0tfUExVR0lOKHJlbW92ZXNpbGVuY2UpCi1BR19HU1RfQ0hFQ0tfUExVR0lOKHJ0cCkKIEFHX0dTVF9DSEVDS19QTFVHSU4oc2RpKQogQUdfR1NUX0NIRUNLX1BMVUdJTihzZHApCiBBR19HU1RfQ0hFQ0tfUExVR0lOKHNlZ21lbnRjbGlwKQpAQCAtNjcwLDEzICs2OTcsMjIgQEAKICAgOzsKICAgKikKICAgICBpZiB0ZXN0ICJ4JE5FRURfR0wiICE9ICJ4bm8iOyB0aGVuCi0gICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMLCBHTCwgZ2xUZXhJbWFnZTJELCwgR0wvZ2wuaCkKKyAgICAgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhHTCwgZ2wpCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfR0wiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMLCBHTCwgZ2xUZXhJbWFnZTJELCwgR0wvZ2wuaCkKKyAgICAgIGZpCiAgICAgZmkKICAgICBpZiB0ZXN0ICJ4JE5FRURfR0xFUzIiICE9ICJ4bm8iOyB0aGVuCi0gICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMRVMyLCBHTEVTdjIsIGdsVGV4SW1hZ2UyRCwsIEdMRVMyL2dsMi5oKQorICAgICAgQUdfR1NUX1BLR19DSEVDS19NT0RVTEVTKEdMRVMyLCBnbGVzdjIpCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfR0xFUzIiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEdMRVMyLCBHTEVTdjIsIGdsVGV4SW1hZ2UyRCwsIEdMRVMyL2dsMi5oKQorICAgICAgZmkKICAgICBmaQogICAgIGlmIHRlc3QgIngkTkVFRF9FR0wiICE9ICJ4bm8iOyB0aGVuCi0gICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEVHTCwgRUdMLCBlZ2xHZXRFcnJvciwsIEVHTC9lZ2wuaCkKKyAgICAgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhFR0wsIGVnbCkKKyAgICAgIGlmIHRlc3QgIngkSEFWRV9FR0wiICE9ICJ4eWVzIjsgdGhlbgorICAgICAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEVHTCwgRUdMLCBlZ2xHZXRFcnJvciwsIEVHTC9lZ2wuaCkKKyAgICAgIGZpCiAgICAgZmkKIAogICAgIG9sZF9MSUJTPSRMSUJTCkBAIC04MDMsOSArODM5LDI4IEBACiAgIGZpCiBmaQogCitkbmwgY2hlY2sgZm9yIERNQUJVRiBzdXBwb3J0CitIQVZFX0RSTV9GT1VSQ0NfSEVBREVSPW5vCitBQ19DSEVDS19IRUFERVIobGliZHJtL2RybV9mb3VyY2MuaCwKKyAgSEFWRV9EUk1fRk9VUkNDX0hFQURFUj15ZXMsICkKKworSEFWRV9HU1RfQUxMT0NBVE9SUz1ubworUEtHX0NIRUNLX01PRFVMRVMoR1NUX0FMTE9DQVRPUlMsIGdzdHJlYW1lci1hbGxvY2F0b3JzLTEuMCwKKyAgSEFWRV9HU1RfQUxMT0NBVE9SUz15ZXMsICkKKworaWYgdGVzdCAieCRIQVZFX0RSTV9GT1VSQ0NfSEVBREVSIiA9ICJ4eWVzIiAtYSBcCisgICAgICAgICJ4JEhBVkVfR1NUX0FMTE9DQVRPUlMiID0gInh5ZXMiIC1hIFwKKyAgICAgICAgIngkSEFWRV9FR0wiID0gInh5ZXMiOyB0aGVuCisgICAgICAgICAgQUNfREVGSU5FKEdTVF9HTF9IQVZFX0RNQUJVRiwgWzFdICwgW0RNQUJVRiBhdmFpbGFibGUgZm9yIGdsIHBsdWdpbnNdKQorZmkKKwogZG5sIGNoZWNrIGlmIHdlIGNhbiBpbmNsdWRlIGJvdGggR0wgYW5kIEdMRVMyIGF0IHRoZSBzYW1lIHRpbWUKIGlmIHRlc3QgIngkSEFWRV9HTCIgPSAieHllcyIgLWEgIngkSEFWRV9HTEVTMiIgPSAieHllcyI7IHRoZW4KICAgR0xfSU5DTFVERVM9IgorI2lmZGVmIF9fR05VQ19fCisjICBwcmFnbWEgR0NDIGRpYWdub3N0aWMgcHVzaAorIyAgcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3JlZHVuZGFudC1kZWNsc1wiCisjZW5kaWYKICNpZm5kZWYgR0xfR0xFWFRfUFJPVE9UWVBFUwogI2RlZmluZSBHTF9HTEVYVF9QUk9UT1RZUEVTIDEKICNlbmRpZgpAQCAtODI5LDExICs4ODQsMTIgQEAKICMgICBpbmNsdWRlIDxHTC9nbGV4dC5oPgogIyAgZW5kaWYKICMgZW5kaWYKK2ludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsgcmV0dXJuIDA7IH0KICIKICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGl0IGlzIHBvc3NpYmxlIHRvIGluY2x1ZGUgYm90aCBHTCBhbmQgR0xFUzIgaGVhZGVyc10pCi0gIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkRVJST1JfQ0ZMQUdTIgotICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbJEdMX0lOQ0xVREVTXV0sIFtbCisgIHNhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorICBDRkxBR1M9IiRDRkxBR1MgJEdMX0NGTEFHUyAkR0xFUzJfQ0ZMQUdTICRXQVJOSU5HX0NGTEFHUyAkRVJST1JfQ0ZMQUdTIgorICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1skR0xfSU5DTFVERVNdXSwgW1sKICAgICAjaWYgIWRlZmluZWQoR0xfRkFMU0UpCiAgICAgI2Vycm9yIEZhaWxlZCB0byBpbmNsdWRlIEdMIGhlYWRlcnMKICAgICAjZW5kaWYKQEAgLTg1MSw3ICs5MDcsNyBAQAogICAgICAgSEFWRV9HTEVTMj1ubwogICAgIGZpCiAgIF0pCi0gIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgQ0ZMQUdTPSIkc2F2ZV9DRkxBR1MiCiBmaQogCiAjZG5sIENoZWNrIGZvciBPcGVuR0wKQEAgLTEyODMsNiArMTMzOSw3IEBACiBHU1RfR0xfSEFWRV9HTElOVFBUUj0wCiBHU1RfR0xfSEFWRV9HTFNZTkM9MAogR1NUX0dMX0hBVkVfR0xVSU5UNjQ9MAorR1NUX0dMX0hBVkVfR0xJTlQ2ND0wCiAKIG9sZF9DRkxBR1M9JENGTEFHUwogQ0ZMQUdTPSIkR0xfQ0ZMQUdTICRDRkxBR1MiCkBAIC0xMzE3LDYgKzEzNzQsMTEgQEAKICAgR1NUX0dMX0hBVkVfR0xVSU5UNjQ9MQogZmkKIAorQUNfQ0hFQ0tfVFlQRVMoR0xpbnQ2NCwgW10sIFtdLCBbWyRHTF9JTkNMVURFU11dKQoraWYgdGVzdCAieCRhY19jdl90eXBlX0dMaW50NjQiID0gInh5ZXMiOyB0aGVuCisgIEdTVF9HTF9IQVZFX0dMSU5UNjQ9MQorZmkKKwogQ0ZMQUdTPSRvbGRfQ0ZMQUdTCiAKIEdMX0NPTkZJR19ERUZJTkVTPSIkR0xfQ09ORklHX0RFRklORVMKQEAgLTEzMjYsNiArMTM4OCw3IEBACiAjZGVmaW5lIEdTVF9HTF9IQVZFX0dMSU5UUFRSICRHU1RfR0xfSEFWRV9HTElOVFBUUgogI2RlZmluZSBHU1RfR0xfSEFWRV9HTFNZTkMgJEdTVF9HTF9IQVZFX0dMU1lOQwogI2RlZmluZSBHU1RfR0xfSEFWRV9HTFVJTlQ2NCAkR1NUX0dMX0hBVkVfR0xVSU5UNjQKKyNkZWZpbmUgR1NUX0dMX0hBVkVfR0xJTlQ2NCAkR1NUX0dMX0hBVkVfR0xJTlQ2NAogIgogCiBBQ19DT05GSUdfQ09NTUFORFMoW2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbmZpZy5oXSwgWwpAQCAtMTQwMSw2ICsxNDY0LDU1IEBACiBBQ19TVUJTVChIQVZFX0pQRUcpCiBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkSEFWRV9KUEVHIiA9ICJ4eWVzIikKIAorZG5sIFZ1bGthbgorVlVMS0FOX0NPTkZJR19ERUZJTkVTPSIiCisKK1BLR19DSEVDS19NT0RVTEVTKFhDQiwgeGNiID49IDEuMTAsIEhBVkVfWENCPXllcywgSEFWRV9YQ0I9bm8pCisKK0FNX0NPTkRJVElPTkFMKFVTRV9YQ0IsIHRlc3QgIngkSEFWRV9YQ0IiID0gInh5ZXMiKQoraWYgdGVzdCAieCRIQVZFX1hDQiIgPSAieHllcyI7IHRoZW4KKyAgVlVMS0FOX0NPTkZJR19ERUZJTkVTPSIkVlVMS0FOX0NPTkZJR19ERUZJTkVTCisgICNkZWZpbmUgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YQ0IgMSIKK2ZpCisKK0FDX0NPTkZJR19DT01NQU5EUyhbZXh0L3Z1bGthbi92a2NvbmZpZy5oXSwgWworCW91dGZpbGU9dmtjb25maWcuaC10bXAKKwljYXQgPiAkb3V0ZmlsZSA8PFxfX19fX19fRU9GCisvKiB2a2NvbmZpZy5oCisgKgorICogVGhpcyBpcyBhIGdlbmVyYXRlZCBmaWxlLiAgUGxlYXNlIG1vZGlmeSBgY29uZmlndXJlLmFjJworICovCisKKyNpZm5kZWYgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKyNkZWZpbmUgX19HU1RfVlVMS0FOX0NPTkZJR19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCitfX19fX19fRU9GCisKKwljYXQgPj4kb3V0ZmlsZSA8PF9fX19fX19FT0YKKyR2dWxrYW5fY29uZmlnX2RlZmluZXMKK19fX19fX19FT0YKKworCWNhdCA+PiRvdXRmaWxlIDw8X19fX19fX0VPRgorCitHX0VORF9ERUNMUworCisjZW5kaWYgIC8qIF9fR1NUX1ZVTEtBTl9DT05GSUdfSF9fICovCitfX19fX19fRU9GCisKKworCWlmIGNtcCAtcyAkb3V0ZmlsZSBleHQvdnVsa2FuL3ZrY29uZmlnLmg7IHRoZW4KKyAgICAgICAgICBBQ19NU0dfTk9USUNFKFtleHQvdnVsa2FuL3ZrY29uZmlnLmggaXMgdW5jaGFuZ2VkXSkKKwkgIHJtIC1mICRvdXRmaWxlCisJZWxzZQorCSAgbXYgJG91dGZpbGUgZXh0L3Z1bGthbi92a2NvbmZpZy5oCisJZmkKK10sWwordnVsa2FuX2NvbmZpZ19kZWZpbmVzPSckVlVMS0FOX0NPTkZJR19ERUZJTkVTJworXSkKIAogZG5sICoqKiBzeXMgcGx1Zy1pbnMgKioqCiAKQEAgLTE3MjcsNiArMTgzOSwxMTQgQEAKIEFDX1NVQlNUKExJQlVTQl9DRkxBR1MpCiBBQ19TVUJTVChMSUJVU0JfTElCUykKIAorZG5sICoqKiBOVkVOQyAqKioKK3RyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX05WRU5DLCB0cnVlKQorQUdfR1NUX0NIRUNLX0ZFQVRVUkUoTlZFTkMsIFtOVklESUEgRW5jb2RlIEFQSV0sIG52ZW5jLCBbCisgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhHU1RfVklERU8sIGdzdHJlYW1lci12aWRlby0xLjApCisgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhHU1RfUEJVVElMUywgZ3N0cmVhbWVyLXBidXRpbHMtMS4wKQorICBBQ19BUkdfV0lUSChbY3VkYS1wcmVmaXhdLAorICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtY3VkYS1wcmVmaXhdLAorICAgICAgICAgIFtVc2UgdGhlIHByb3ZpZGVkIHByZWZpeCBmb3IgZGV0ZWN0aW5nIHRoZSBjdWRhIGluc3RhbGxhdGlvbl0pLAorICAgICAgICAgIFtBU19JRihbdGVzdCAieCR3aXRoX2N1ZGFfcHJlZml4IiAhPSAieCJdLAorICAgICAgICAgICAgICAgICBbQ1VEQV9QUkVGSVg9IiR3aXRoX2N1ZGFfcHJlZml4Il0pXSwKKyAgICAgICAgICBbQ1VEQV9QUkVGSVg9IiJdKQorCisgIEhBVkVfQ1VEQT0ieWVzIgorICBpZiB0ZXN0ICJ4JENVREFfUFJFRklYIiAhPSAieCI7IHRoZW4KKyAgICBkbmwgb25seSBvdmVycmlkZSBpZiBub3QgYWxyZWFkeSBzZXQKKyAgICBpZiB0ZXN0ICJ4JENVREFfQ0ZMQUdTIiA9ICJ4IiAtYSAieCRDVURBX0xJQlMiID0gIngiOyB0aGVuCisgICAgICBkbmwgdGhpcyBpcyBhbiBlZHVjYXRlZCBndWVzcywgdXNlciBjYW4gYWx3YXlzIG92ZXJyaWRlIHRoZXNlCisgICAgICBDVURBX0NGTEFHUz0iLUkkQ1VEQV9QUkVGSVgvaW5jbHVkZSIKKyAgICAgIENVREFfTElCUz0iLUwkQ1VEQV9QUkVGSVgvbGliIC1MJENVREFfUFJFRklYL2xpYjY0IC1MJENVREFfUFJFRklYL2xpYi9zdHVicyAtTCRDVURBX1BSRUZJWC9saWI2NC9zdHVicyAtbGN1ZGEgLWxjdWRhcnQiCisgICAgZmkKKyAgZWxzZQorICAgIFBLR19DSEVDS19NT0RVTEVTKFtDVURBXSwgW2N1ZGEtNy41IGN1ZGFydC03LjVdLCwgWworICAgICAgUEtHX0NIRUNLX01PRFVMRVMoW0NVREFdLCBbY3VkYS03LjAgY3VkYXJ0LTcuMF0sLCBbCisgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKFtDVURBXSwgW2N1ZGEtNi41IGN1ZGFydC02LjVdLCwgWworICAgICAgICAgIEFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdWRhIGhlYWRlcnMvbGlicmFyaWVzXSldKV0pXSkKKyAgZmkKKworICBIQVZFX0NVREFfSD1ubworICBIQVZFX0NVREFSVF9IPW5vCisgIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyAgQ1BQRkxBR1M9IiRDVURBX0NGTEFHUyAkc2F2ZV9DUFBGTEFHUyAiCisgIEFDX0NIRUNLX0hFQURFUihbY3VkYS5oXSwgW0hBVkVfQ1VEQV9IPXllc10sCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgY3VkYS5oXSkpCisgIEFDX0NIRUNLX0hFQURFUihbY3VkYV9ydW50aW1lX2FwaS5oXSwgW0hBVkVfQ1VEQVJUX0g9eWVzXSwKKyAgICAgIEFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBjdWRhX3J1bnRpbWVfYXBpLmhdKSkKKyAgQ1BQRkxBR1M9JHNhdmVfQ1BQRkxBR1MKKworICBkbmwgbGliY3VkYSBhbmQgbGliY3VkYXJ0IGxpYnJhcmllcworICBzYXZlX0xJQlM9IiRMSUJTIgorICBMSUJTPSIkQ1VEQV9MSUJTICRzYXZlX0xJQlMiCisgIEhBVkVfQ1VEQVJUX0xJQj0ibm8iCisgIEFDX0NIRUNLX0xJQihjdWRhcnQsY3VkYUdldEVycm9yU3RyaW5nLFtIQVZFX0NVREFSVF9MSUI9InllcyJdLCBbCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgY3VkYXJ0IGxpYnJhcnldKV0pCisgIEhBVkVfQ1VEQV9MSUI9Im5vIgorICBBQ19DSEVDS19MSUIoY3VkYSxjdUluaXQsW0hBVkVfQ1VEQV9MSUI9InllcyJdLCBbCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgY3VkYSBsaWJyYXJ5XSldKQorICBMSUJTPSIkc2F2ZV9MSUJTIgorCisgIGRubCBudkVuY29kZUFQSS5oIGhlYWRlcgorICBIQVZFX05WRU5DT0RFQVBJX0g9bm8KKyAgQUNfQVJHX1ZBUihOVkVOQ09ERV9DRkxBR1MsIFtDIGNvbXBpbGVyIGZsYWdzIGZvciBOdkVuY29kZUFQSS5oXSkKKyAgc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBDUFBGTEFHUz0iJE5WRU5DT0RFX0NGTEFHUyAkc2F2ZV9DUFBGTEFHUyIKKyAgQUNfQ0hFQ0tfSEVBREVSKFtudkVuY29kZUFQSS5oXSwgWworICAgICAgQUNfUFJFUFJPQ19JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPG52RW5jb2RlQVBJLmg+CisgICAgICAgICAgI2lmIE5WRU5DQVBJX01BSk9SX1ZFUlNJT04gPCA1CisgICAgICAgICAgI2Vycm9yICJOZWVkIG52RW5jb2RlQVBJLmggPj0gNS4wIgorICAgICAgICAgICNlbmRpZgorICAgICAgICAgIF1dKV0sIFsKKyAgICAgICAgICBIQVZFX05WRU5DT0RFQVBJX0g9eWVzCisgICAgICAgICAgXSwgWworICAgICAgICAgIEFDX01TR19XQVJOKFtudkVuY29kZUFQSS5oIG11c3QgYmUgPj0gNS4wXSkKKyAgICAgICAgICBdKQorICAgICAgXSwKKyAgICAgIEFDX01TR19XQVJOKFtDb3VsZCBub3QgZmluZCBudkVuY29kZUFQSS5oXSkpCisgIEFDX1NVQlNUKE5WRU5DT0RFX0NGTEFHUykKKyAgQ1BQRkxBR1M9IiRzYXZlX0NQUEZMQUdTIgorCisgIGRubCBsaWJudm5pZGlhLWVuY29kZSBsaWJyYXJ5CisgIEhBVkVfTlZFTkNPREVfTElCPW5vCisgIEFDX0FSR19WQVIoTlZFTkNPREVfTElCUywgW2xpbmtlciBmbGFncyBmb3IgbnZpZGlhLWVuY29kZV0pCisgIHNhdmVkX0xJQlM9IiRMSUJTIgorICBMSUJTPSIkTlZFTkNPREVfTElCUyAkc2F2ZWRfTElCUyIKKyAgQUNfQ0hFQ0tfTElCKG52aWRpYS1lbmNvZGUsIE52RW5jb2RlQVBJQ3JlYXRlSW5zdGFuY2UsIFtIQVZFX05WRU5DT0RFX0xJQj0ieWVzIl0sCisgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgbGlicmFyeSBudmlkaWEtZW5jb2RlXSkpCisgIE5WRU5DT0RFX0xJQlM9IiROVkVOQ09ERV9MSUJTIC1sbnZpZGlhLWVuY29kZSIKKyAgQUNfU1VCU1QoTlZFTkNPREVfTElCUykKKyAgTElCUz0iJHNhdmVkX0xJQlMiCisKKyAgVVNFX05WRU5DX0dTVF9HTD1ubworICBpZiB0ZXN0ICJ4JEhBVkVfQ1VEQV9IIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX0NVREFSVF9IIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX0NVREFfTElCIiA9ICJ4eWVzIiBcCisgICAgICAtYSAieCRIQVZFX0NVREFSVF9MSUIiID0gInh5ZXMiIFwKKyAgICAgIC1hICJ4JEhBVkVfTlZFTkNPREVBUElfSCIgPSAieHllcyIgXAorICAgICAgLWEgIngkSEFWRV9OVkVOQ09ERV9MSUIiID0gInh5ZXMiOyB0aGVuCisgICAgSEFWRV9OVkVOQz0ieWVzIgorICAgIGlmIHRlc3QgeCIkVVNFX09QRU5HTCIgPSB4InllcyI7IHRoZW4KKyAgICAgIGRubCBjdWRhLWdsIGludGVyb3AgaGVhZGVyCisgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCisgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MgJENVREFfQ0ZMQUdTIgorICAgICAgQUNfQ0hFQ0tfSEVBREVSKFtjdWRhX2dsX2ludGVyb3AuaF0sIFsKKyAgICAgICAgVVNFX05WRU5DX0dTVF9HTD0ieWVzIgorICAgICAgICBBQ19ERUZJTkUoSEFWRV9OVkVOQ19HU1RfR0wsIFsxXSAsIFtOVkVOQyBHU3RyZWFtZXIgT3BlbkdMIHN1cHBvcnQgYXZhaWxhYmxlXSkKKyAgICAgICAgXSkKKyAgICAgIENQUEZMQUdTPSIkc2F2ZV9DUFBGTEFHUyIKKyAgICBmaQorICBlbHNlCisgICAgSEFWRV9OVkVOQz0ibm8iCisgIGZpCitdKQorQU1fQ09ORElUSU9OQUwoVVNFX05WRU5DX0dTVF9HTCwgdGVzdCAieCRVU0VfTlZFTkNfR1NUX0dMIiA9ICJ4eWVzIikKKworZG5sIGNoZWNrIGZvciB0aW55YWxzYQordHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfVElOWUFMU0EsIHRydWUpCitBR19HU1RfQ0hFQ0tfRkVBVFVSRShUSU5ZQUxTQSwgW3RpbnlhbHNhXSwgdGlueWFsc2EsIFsKKyAgQUNfQ0hFQ0tfSEVBREVSKHRpbnlhbHNhL2Fzb3VuZGxpYi5oLCBIQVZFX1RJTllBTFNBPSJ5ZXMiLCBIQVZFX1RJTllBTFNBPSJubyIpCitdKQogCiBkbmwgKioqIGV4dCBwbHVnLWlucyAqKioKIGRubCBrZWVwIHRoaXMgbGlzdCBzb3J0ZWQgYWxwaGFiZXRpY2FsbHkgIQpAQCAtMTczNiw3ICsxOTU2LDcgQEAKIGRubCAqKiogYXNzcmVuZGVyICoqKgogdHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfQVNTUkVOREVSLCB0cnVlKQogQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQVNTUkVOREVSLCBbQVNTL1NTQSByZW5kZXJlcl0sIGFzc3JlbmRlciwgWwotICBQS0dfQ0hFQ0tfTU9EVUxFUyhBU1NSRU5ERVIsIGxpYmFzcyA+PSAwLjkuNCwgWworICBQS0dfQ0hFQ0tfTU9EVUxFUyhBU1NSRU5ERVIsIGxpYmFzcyA+PSAwLjEwLjIsIFsKICAgICBIQVZFX0FTU1JFTkRFUj0ieWVzIiBdLCBbCiAgICAgSEFWRV9BU1NSRU5ERVI9Im5vIgogICBdKQpAQCAtMTkzMCwxNCArMjE1MCwyMCBAQAogCiBkbmwgKioqKiBXYXlsYW5kICoqKioKIHRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX1dBWUxBTkQsIHRydWUpCitBQ19QQVRIX1BST0coW3dheWxhbmRfc2Nhbm5lcl0sIFt3YXlsYW5kLXNjYW5uZXJdKQogQUdfR1NUX0NIRUNLX0ZFQVRVUkUoV0FZTEFORCwgW3dheWxhbmQgc2lua10sIHdheWxhbmQgLCBbCi0gIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wIHdheWxhbmQtc2Nhbm5lciwgWwotICAgIEhBVkVfV0FZTEFORD0ieWVzIiBdLCBbIEhBVkVfV0FZTEFORD0ibm8iCisgIFBLR19DSEVDS19NT0RVTEVTKFdBWUxBTkQsIHdheWxhbmQtY2xpZW50ID49IDEuNC4wLCBbCisgICAgaWYgdGVzdCAieCR3YXlsYW5kX3NjYW5uZXIiICE9ICJ4IjsgdGhlbgorICAgICAgSEFWRV9XQVlMQU5EPSJ5ZXMiCisgICAgZWxzZQorICAgICAgQUNfTVNHX1JFU1VMVChbd2F5bGFuZC1zY2FubmVyIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIHRoZSB3YXlsYW5kIHBsdWdpbl0pCisgICAgICBIQVZFX1dBWUxBTkQ9Im5vIgorICAgIGZpCisgICAgXSwKKyAgICBbIEhBVkVfV0FZTEFORD0ibm8iCiAgIF0pCiBdKQogCi1BQ19QQVRIX1BST0coW3dheWxhbmRfc2Nhbm5lcl0sIFt3YXlsYW5kLXNjYW5uZXJdKQotCiBkbmwgKioqKiBXZWJQICoqKioKIHRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX1dFQlAsIHRydWUpCiBBR19HU1RfQ0hFQ0tfRkVBVFVSRShXRUJQLCBbV2ViUF0sIHdlYnAgLCBbCkBAIC0xOTkzLDYwICsyMjE5LDI3IEBACiAgIEFDX1NVQlNUKEZBQUNfTElCUykKIF0pCiAKLWRubCAqKioqIEZyZWUgQUFDIERlY29kZXIgKEZBQUQpICoqKioKK2RubCAqKioqIEZyZWUgQUFDIERlY29kZXIgKEZBQUQyKSAqKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9GQUFELCB0cnVlKQotQUdfR1NUX0NIRUNLX0ZFQVRVUkUoRkFBRCwgW0FBQyBkZWNvZGVyIHBsdWctaW5dLCBmYWFkLCBbCi0gIEhBVkVfRkFBRD0ieWVzIgotICBmYWFkX2hkcj0iIgotICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEZBQUQsIGZhYWQsIGZhYWNEZWNPcGVuLCAkTElCTSwgZmFhZC5oLAotICAgIEZBQURfTElCUz0iLWxmYWFkICRMSUJNIiwgSEFWRV9GQUFEPSJubyIpCi0gIGlmIHRlc3QgJEhBVkVfRkFBRCA9ICJubyI7IHRoZW4KLSAgICBBR19HU1RfQ0hFQ0tfTElCSEVBREVSKEZBQUQsIGZhYWQsIE5lQUFDRGVjT3BlbiwgJExJQk0sIG5lYWFjZGVjLmgsCi0gICAgICBbIEZBQURfTElCUz0iLWxmYWFkICRMSUJNIgotICAgICAgICBBQ19ERUZJTkUoRkFBRF9JU19ORUFBQywgMSwgW0RlZmluZSBpZiBBQUMgaXMgdXNpbmcgbmV3IGFwaSBwcmVmaXhdKQotICAgICAgICBmYWFkX2hkcj0ibmVhYWNkZWMuaCIKLSAgICAgIF0sIFsKLSAgICAgICAgSEFWRV9GQUFEPSJubyIKLSAgICAgIF0sKQotICBlbHNlCi0gICAgZmFhZF9oZHI9ImZhYWQuaCIKLSAgZmkKLSAgaWYgdGVzdCAkSEFWRV9GQUFEID0gInllcyI7IHRoZW4KLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW0NoZWNraW5nIGZvciBGQUFEID49IDIuMF0pCitBR19HU1RfQ0hFQ0tfRkVBVFVSRShGQUFELCBbRkFBRDIgQUFDIGRlY29kZXIgcGx1Zy1pbl0sIGZhYWQsIFsKKyAgQUdfR1NUX0NIRUNLX0xJQkhFQURFUihGQUFELCBmYWFkLCBOZUFBQ0RlY09wZW4sICRMSUJNLCBuZWFhY2RlYy5oLCBbCiAgICAgQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxmYWFkLmg+XV0sIFtbCi0gICAgICAgICNpZiAhZGVmaW5lZChGQUFEMl9WRVJTSU9OKSB8fCAhZGVmaW5lZChGQUFEX0ZNVF9ET1VCTEUpCi0gICAgICAgICNlcnJvciBOb3QgZmFhZDIKLSAgICAgICAgI2Vsc2UKLSAgICAgICAgLyogUmVsZWFzZSBjYW5kaWRhdGUgb2YgMi4wIGlzIG5vdCBnb29kIGVub3VnaCBmb3IgdXMuIFRoaXMgZmllbGQKLSAgICAgICAgICogd2FzIGFkZGVkIG9ubHkgaW4gMi4wIGZpbmFsIGFuZCBkb2VzIG5vdCBleGlzdCBpbiAyLjAtUkMzICovCi0gICAgICAgIGZhYWNEZWNDb25maWd1cmF0aW9uIGNvbmY7IGNvbmYuZG9udFVwU2FtcGxlSW1wbGljaXRTQlIgPSAxOwotICAgICAgICAjZW5kaWYKKyAgICAgICNpZiAhZGVmaW5lZChGQUFEMl9WRVJTSU9OKSB8fCAhZGVmaW5lZChGQUFEX0ZNVF9ET1VCTEUpCisgICAgICAjZXJyb3IgTm90IGZhYWQyCisgICAgICAjZWxpZiAhZGVmaW5lZChMQVRNKQorICAgICAgI2Vycm9yIE5vdCBmYWFkMiA+PSAyLjcKKyAgICAgICNlbmRpZgogICAgIF1dKV0sWwogICAgICAgSEFWRV9GQUFEPSJ5ZXMiCi0KLSAgICAgIEFDX01TR19DSEVDS0lORyhbQ2hlY2tpbmcgRkFBRDIgdmVyc2lvbiBpbiAkZmFhZF9oZHJdKQotICAgICAgZm9yIG1pbm9yIGluIDEwIDkgOCA3IDYgNSAwOyBkbwotICAgICAgICBpZiB0ZXN0IHgkZmFhZDJfbWlub3JfdmVyc2lvbiA9ICJ4IjsgdGhlbgotICAgICAgICAgIEFDX0VHUkVQX0NQUChbXCIyXC4kbWlub3JcIiRdLCBbCi0gICAgICAgICAgICAgICNpbmNsdWRlIDwkZmFhZF9oZHI+Ci0gICAgICAgICAgICAgIEZBQUQyX1ZFUlNJT04KLSAgICAgICAgICAgIF0sIFsKLSAgICAgICAgICAgICAgZmFhZDJfbWlub3JfdmVyc2lvbj0kbWlub3IKLSAgICAgICAgICAgIF0pCi0gICAgICAgIGZpCi0gICAgICBkb25lCi0gICAgICBpZiB0ZXN0IHgkZmFhZDJfbWlub3JfdmVyc2lvbiA9ICJ4IjsgdGhlbgotICAgICAgICBBQ19NU0dfUkVTVUxUKFtubyBpZGVhXSkKLSAgICAgIGVsc2UKLSAgICAgICAgQUNfTVNHX1JFU1VMVChbMi4kZmFhZDJfbWlub3JfdmVyc2lvbl0pCi0gICAgICAgIEFDX0RFRklORV9VTlFVT1RFRChbRkFBRDJfTUlOT1JfVkVSU0lPTl0sIFskZmFhZDJfbWlub3JfdmVyc2lvbl0sIFtUaGUgeCBpbiAyLnhdKQotICAgICAgZmkKLSAgICBdLFsKKyAgICAgIEZBQURfTElCUz0iLWxmYWFkIgorICAgIF0sIFsKKyAgICAgIEFDX01TR19XQVJOKFtGb3VuZCBsaWJmYWFkLCBidXQgdmVyc2lvbiBub3QgcmVjZW50IGVub3VnaC4gTmVlZCBmYWFkMiA+PSAyLjddKQogICAgICAgSEFWRV9GQUFEPSJubyIKICAgICBdKQotICBmaQorICBdLCBbCisgICAgICBIQVZFX0ZBQUQ9Im5vIgorICBdKQogICBBQ19TVUJTVChGQUFEX0xJQlMpCi0gIEFDX1NVQlNUKEZBQURfSVNfTkVBQUMpCiBdKQogCiBkbmwgKioqIGZiZGV2ICoqKgpAQCAtMjMxNywxNCArMjUxMCw2IEBACiAgIGZpCiBdKQogCi1kbmwgKioqIG1wZzEyMyAqKioKLXRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX01QRzEyMywgdHJ1ZSkKLUFHX0dTVF9DSEVDS19GRUFUVVJFKE1QRzEyMywgW21wZzEyMyBhdWRpbyBkZWNvZGVyXSwgbXBnMTIzLCBbCi0gIFBLR19DSEVDS19NT0RVTEVTKE1QRzEyMywgbGlibXBnMTIzID49IDEuMTMsIEhBVkVfTVBHMTIzPSJ5ZXMiLCBIQVZFX01QRzEyMz0ibm8iKQotICBBQ19TVUJTVChNUEcxMjNfQ0ZMQUdTKQotICBBQ19TVUJTVChNUEcxMjNfTElCUykKLV0pCi0KIGRubCAqKiogbXBsZXggKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9NUExFWCwgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKE1QTEVYLCBbbXBsZXhdLCBtcGxleCwgWwpAQCAtMjU5MCwxNyArMjc3NSw3IEBACiBkbmwgKioqIHJzdmcgKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9SU1ZHLCB0cnVlKQogQUdfR1NUX0NIRUNLX0ZFQVRVUkUoUlNWRywgW3JzdmcgZGVjb2Rlcl0sIHJzdmcsIFsKLSAgUEtHX0NIRUNLX01PRFVMRVMoUlNWRywgbGlicnN2Zy0yLjAgPj0gMi4zNiBjYWlybywgWwotICAgIEhBVkVfUlNWRz0ieWVzIgotICAgIFBLR19DSEVDS19NT0RVTEVTKFJTVkdfMl8zNl8yLCBsaWJyc3ZnLTIuMCA+PSAyLjM2LjIsIEhBVkVfUlNWR18yXzM2XzI9InllcyIsIEhBVkVfUlNWR18yXzM2XzI9Im5vIikKLSAgICBpZiB0ZXN0ICJ4JEhBVkVfUlNWR18yXzM2XzIiID0gInh5ZXMiOyB0aGVuCi0gICAgICBBQ19ERUZJTkUoSEFWRV9SU1ZHXzJfMzZfMiwgWzFdLCBbSGF2ZSBSU1ZHIDIuMzYuMiBvciBuZXdlcl0pCi0gICAgZmkKLSAgXSwgWwotICAgIEhBVkVfUlNWRz0ibm8iCi0gIF0pCi0gIEFDX1NVQlNUKFJTVkdfQ0ZMQUdTKQotICBBQ19TVUJTVChSU1ZHX0xJQlMpCisgIEFHX0dTVF9QS0dfQ0hFQ0tfTU9EVUxFUyhSU1ZHLCBsaWJyc3ZnLTIuMCA+PSAyLjM2LjIpCiBdKQogCiBkbmwgKioqIGdsICoqKgpAQCAtMjY1Miw3ICsyODI3LDcgQEAKIGRubCAqKiogUXQgKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9RVCwgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKFFULCBbUXQgZWxlbWVudHNdLCBxdCwgWwotICBQS0dfQ0hFQ0tfTU9EVUxFUyhRVCwgUXQ1Q29yZSBRdDVHdWkgUXQ1UXVpY2sgPj0gNS40LjAsIFsKKyAgUEtHX0NIRUNLX01PRFVMRVMoUVQsIFF0NUNvcmUgUXQ1R3VpIFF0NVFtbCBRdDVRdWljayA+PSA1LjQuMCwgWwogICAgICAgUVRfUEFUSD1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1leGVjX3ByZWZpeCBRdDVDb3JlYAogICAgICAgUVRfSE9TVF9QQVRIPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWhvc3RfYmlucyBRdDVDb3JlYAogICAgICAgQUNfUEFUSF9QUk9HUyhNT0MsIFttb2MtcXQ1IG1vY10sIG1vYywgWyIke1FUX0hPU1RfUEFUSH0iICIke1FUX1BBVEh9L2JpbiJdKQpAQCAtMjY4MSw2ICsyODU2LDQ0IEBACiAgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgogICAgICAgICAgIF0sIFtBQ19NU0dfTk9USUNFKFtDb3VsZCBub3QgZmluZCBRdCBXYXlsYW5kIGludGVncmF0aW9uXSldKQogICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19BTkRST0lEIiA9ICJ4MSIgLWEgIngkR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMIiA9ICJ4MSI7IHRoZW4KKyAgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhRVF9BTkRST0lELCBRdDVBbmRyb2lkRXh0cmFzLCBbCisgICAgICAgICAgICAjIGMrKyBvbiBhbmRyb2lkIHJlcXVpcmVzIGEgc3RhbmRhcmQgbGlicmFyeSBhbmQgdGhlcmUgYXJlIG11bHRpcGxlCisgICAgICAgICAgICAjIGNob2ljZXMuICBjZXJiZXJvIHByb3ZpZGVzIGEgcGtnLWNvbmZpZyBmaWxlIHRoZSBkZXNjcmliZXMgYSBjaG9pY2UKKyAgICAgICAgICAgICMgc28gdHJ5IHRvIHVzZSB0aGF0LiAgT3V0c2lkZSBjZXJiZXJvIG9uZSBoYXMgdG8gcGFzcyB0aGVzZSBmbGFncworICAgICAgICAgICAgIyBtYW51YWxseSBmb3IgdGhlIGxpYnJhcnkgb25lIGlzIHVzaW5nCisgICAgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhHTlVTVEwsIGdudXN0bCwgWworICAgICAgICAgICAgICBRVF9DRkxBR1M9IiRRVF9DRkxBR1MgJEdOVVNUTF9DRkxBR1MiCisgICAgICAgICAgICAgIFFUX0xJQlM9IiRRVF9MSUJTICRHTlVTVExfTElCUyIKKyAgICAgICAgICAgICAgXSwgWworICAgICAgICAgICAgICBBQ19NU0dfTk9USUNFKFtDb3VsZCBub3QgZmluZCBTdGFuZGFyZCBDKysgbGlicmFyeV0pXSkKKworICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX1FUX0FORFJPSURdLCBbXSwKKyAgICAgICAgICAgICAgICBbRGVmaW5lIGlmIFF0IEFuZHJvaWQgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkXSkKKyAgICAgICAgICAgIFFUX0NGTEFHUz0iJFFUX0NGTEFHUyAkUVRfQU5EUk9JRF9DRkxBR1MiCisgICAgICAgICAgICBRVF9MSUJTPSIkUVRfTElCUyAkUVRfQU5EUk9JRF9MSUJTIgorICAgICAgICAgICAgSEFWRV9RVF9XSU5ET1dJTkc9InllcyIKKyAgICAgICAgICBdLCBbQUNfTVNHX05PVElDRShbQ291bGQgbm90IGZpbmQgUXQgQW5kcm9pZCBpbnRlZ3JhdGlvbl0pXSkKKyAgICAgICAgZmkKKyAgICAgICAgaWYgdGVzdCAieCRHU1RfR0xfSEFWRV9XSU5ET1dfQ09DT0EiID0gIngxIiAtYSAieCRHU1RfR0xfSEFWRV9QTEFURk9STV9DR0wiID0gIngxIjsgdGhlbgorICAgICAgICAgIFBLR19DSEVDS19NT0RVTEVTKFFUX01BQywgUXQ1TWFjRXh0cmFzLCBbCisgICAgICAgICAgICBBQ19ERUZJTkUoW0hBVkVfUVRfTUFDXSwgW10sCisgICAgICAgICAgICAgICAgW0RlZmluZSBpZiBRdCBNYWMgaW50ZWdyYXRpb24gaXMgaW5zdGFsbGVkXSkKKyAgICAgICAgICAgIFFUX0xJQkRJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1saWJkaXIgUXQ1Q29yZWAKKyAgICAgICAgICAgIFFUX0NGTEFHUz0iJFFUX0NGTEFHUyAkUVRfTUFDX0NGTEFHUyAtRiRRVF9MSUJESVIgLWZyYW1ld29yayBRdENvcmUgLWZyYW1ld29yayBRdEd1aSAtZnJhbWV3b3JrIFF0UXVpY2sgLWZyYW1ld29yayBRdFFtbCAtZnJhbWV3b3JrIFF0TWFjRXh0cmFzIgorICAgICAgICAgICAgUVRfTElCUz0iJFFUX0xJQlMgJFFUX01BQ19MSUJTIgorICAgICAgICAgICAgSEFWRV9RVF9XSU5ET1dJTkc9InllcyIKKyAgICAgICAgICBdLCBbQUNfTVNHX05PVElDRShbQ291bGQgbm90IGZpbmQgUXQgTWFjIGludGVncmF0aW9uXSldKQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICJ4JEdTVF9HTF9IQVZFX1dJTkRPV19FQUdMIiA9ICJ4MSIgLWEgIngkR1NUX0dMX0hBVkVfUExBVEZPUk1fRUFHTCIgPSAieDEiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAieCRIQVZFX0lPUyIgPSAieHllcyI7IHRoZW4KKyAgICAgICAgICAgICMgaU9TIGRvZXNuJ3QgaGF2ZSBpdHMgb3duIGV4dHJhcyBwYWNrYWdlIHNvIGlmIHdlIGhhdmUgdGhlIGNvcmUKKyAgICAgICAgICAgICMgbW9kdWxlcyB3ZSBhcmUgZ29vZCB0byBnbworICAgICAgICAgICAgQUNfREVGSU5FKFtIQVZFX1FUX0lPU10sIFtdLAorICAgICAgICAgICAgICAgIFtEZWZpbmUgaWYgUXQgaU9TIGludGVncmF0aW9uIGlzIGluc3RhbGxlZF0pCisgICAgICAgICAgICBIQVZFX1FUX1dJTkRPV0lORz0ieWVzIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCiAgICAgICAgIGlmIHRlc3QgIngkSEFWRV9RVF9XSU5ET1dJTkciID0gInhubyI7IHRoZW4KICAgICAgICAgICBBQ19NU0dfV0FSTihbQ291bGQgbm90IGZpbmQgYW55IFF0IFdpbmRvd2luZyBpbnRlZ3JhdGlvbl0pCiAgICAgICAgICAgSEFWRV9RVD0ibm8iCkBAIC0yNjkzLDYgKzI5MDYsMjIgQEAKICAgXSkKIF0pCiAKK2RubCAqKiogVnVsa2FuICoqKgordHJhbnNsaXQoZG5tLCBtLCBsKSBBTV9DT05ESVRJT05BTChVU0VfVlVMS0FOLCB0cnVlKQorQUdfR1NUX0NIRUNLX0ZFQVRVUkUoVlVMS0FOLCBbVnVsa2FuIGVsZW1lbnRzXSwgdnVsa2FuLCBbCisgIEhBVkVfVlVMS0FOPW5vCisgIEFDX0NIRUNLX0hFQURFUih2dWxrYW4vdnVsa2FuLmgsIFsKKyAgICBBQ19DSEVDS19MSUIodnVsa2FuLCB2a0NyZWF0ZURldmljZSwgWworICAgICAgVlVMS0FOX0xJQlM9Ii1sdnVsa2FuIgorICAgICAgQUNfU1VCU1QoVlVMS0FOX0xJQlMpCisgICAgICBkbmwgVE9ETyBjaGVjayBwbGF0Zm9ybSBzdXBwb3J0ICh4MTEsIHdpbjMyLCB3YXlsYW5kLCBhbmRyb2lkLCBldGMpCisgICAgICBpZiB0ZXN0ICJ4JEhBVkVfWENCIiA9ICJ4eWVzIjsgdGhlbgorICAgICAgICBIQVZFX1ZVTEtBTj15ZXMKKyAgICAgIGZpCisgICAgXSwgW10pCisgIF0sIFtdKQorXSkKKwogZG5sICoqKiBsaWJ2aXN1YWwgKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9MSUJWSVNVQUwsIHRydWUpCiBBR19HU1RfQ0hFQ0tfRkVBVFVSRShMSUJWSVNVQUwsIFtsaWJ2aXN1YWwgdmlzdWFsaXphdGlvbiBsaWJyYXJ5XSwgbGlidmlzdWFsLCBbCkBAIC0zMDE0LDE1ICszMjQzLDYgQEAKIEFDX1NVQlNUKFNQQU5EU1BfQ0ZMQUdTKQogQUNfU1VCU1QoU1BBTkRTUF9MSUJTKQogCi1kbmwgKioqIEdTZXR0aW5ncyAqKioKLXRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX0dTRVRUSU5HUywgdHJ1ZSkKLUFHX0dTVF9DSEVDS19GRUFUVVJFKEdTRVRUSU5HUywgW0dTZXR0aW5ncyBwbHVnaW5dLCBnc2V0dGluZ3MsIFsKLSAgQUdfR1NUX1BLR19DSEVDS19NT0RVTEVTKEdTRVRUSU5HUywgZ2lvLTIuMCA+PSAyLjI1LjApCi0gIGlmIHRlc3QgIngkSEFWRV9HU0VUVElOR1MiID0gInh5ZXMiOyB0aGVuCi0gICAgR0xJQl9HU0VUVElOR1MKLSAgZmkKLV0pCi0KIGRubCAqKiogc25kaW8gKioqCiB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9TTkRJTywgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKFNORElPLCBbc25kaW8gYXVkaW9dLCBzbmRpbywgWwpAQCAtMzAzNiwyOCArMzI1Niw2MiBAQAogICBmaQogXSkKIAorZG5sICoqKiBobHMtY3J5cHRvICoqKgorQUNfQVJHX1dJVEgoW2hscy1jcnlwdG9dLAorICBBU19IRUxQX1NUUklORyhbLS13aXRoLWhscy1jcnlwdG89YXV0b3xuZXR0bGV8bGliZ2NyeXB0fG9wZW5zc2xdLCBbCisgICAgd2hpY2ggY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IHZlcnNpb24gdG8gY29tcGlsZSBhZ2FpbnN0IGZvciBobHMgKGRlZmF1bHQ6IGF1dG8pCisgIF0pLCBbCisgICAgQVNfQ0FTRShbJHdpdGhfaGxzX2NyeXB0b10sCisgICAgICBbbmV0dGxlXSxbXSwKKyAgICAgIFtsaWJnY3J5cHRdLFtdLAorICAgICAgW29wZW5zc2xdLFtdLAorICAgICAgW3dpdGhfaGxzX2NyeXB0bz1hdXRvXQorICAgICkKKyAgXQorKQorCiBkbmwgKioqIGhscyAqKioKIHRyYW5zbGl0KGRubSwgbSwgbCkgQU1fQ09ORElUSU9OQUwoVVNFX0hMUywgdHJ1ZSkKIEFHX0dTVF9DSEVDS19GRUFUVVJFKEhMUywgW2h0dHAgbGl2ZSBzdHJlYW1pbmcgcGx1Z2luXSwgaGxzLCBbCi0gIFBLR19DSEVDS19NT0RVTEVTKE5FVFRMRSwgbmV0dGxlLAotICBbCi0gICAgQUNfREVGSU5FKEhBVkVfTkVUVExFLCAxLCBbRGVmaW5lIGlmIG5ldHRsZSBpcyBhdmFpbGFibGVdKQotICAgIEhBVkVfSExTPSJ5ZXMiCi0gIF0sIFsKLSAgICBBTV9QQVRIX0xJQkdDUllQVChbMS4yLjBdLAotICAgIFsKLSAgICAgIEFDX0RFRklORShIQVZFX0xJQkdDUllQVCwgMSwgW0RlZmluZSBpZiBsaWJnY3J5cHQgaXMgYXZhaWxhYmxlXSkKLSAgICAgIEhBVkVfSExTPSJ5ZXMiCi0gICAgXSwgWwotICAgICAgUEtHX0NIRUNLX01PRFVMRVMoT1BFTlNTTCwgb3BlbnNzbCwKLSAgICAgIFsKKyAgQVNfQ0FTRShbJHdpdGhfaGxzX2NyeXB0b10sCisgICAgW25ldHRsZV0sIFsKKyAgICAgIFBLR19DSEVDS19NT0RVTEVTKE5FVFRMRSwgbmV0dGxlLCBbCisgICAgICAgIEFDX0RFRklORShIQVZFX05FVFRMRSwgMSwgW0RlZmluZSBpZiBuZXR0bGUgaXMgYXZhaWxhYmxlXSkKKyAgICAgICAgSEFWRV9ITFM9InllcyIKKyAgICAgIF0sW0FDX01TR19FUlJPUihbQ291bGQgbm90IGZpbmQgbmV0dGxlIGxpYnJhcnldKV0pCisgICAgXSwKKyAgICBbbGliZ2NyeXB0XSwgWworICAgICAgQU1fUEFUSF9MSUJHQ1JZUFQoWzEuMi4wXSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9MSUJHQ1JZUFQsIDEsIFtEZWZpbmUgaWYgbGliZ2NyeXB0IGlzIGF2YWlsYWJsZV0pCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICBdLFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIGxpYmdjcnlwdCBsaWJyYXJ5XSldKQorICAgIF0sCisgICAgW29wZW5zc2xdLCBbCisgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhPUEVOU1NMLCBvcGVuc3NsLCBbCiAgICAgICAgIEFDX0RFRklORShIQVZFX09QRU5TU0wsIDEsIFtEZWZpbmUgaWYgb3BlbnNzbCBpcyBhdmFpbGFibGVdKQogICAgICAgICBIQVZFX0hMUz0ieWVzIgotICAgICAgXSwgWwotICAgICAgICBIQVZFX0hMUz0ibm8iCisgICAgICBdLFtBQ19NU0dfRVJST1IoW0NvdWxkIG5vdCBmaW5kIG9wZW5zc2wgbGlicmFyeV0pXSkKKyAgICBdLAorICAgIFsKKyAgICAgIGRubCBUcnkgdG8gZmluZCBhIHZhbGlkIGNyeXB0byBsaWJyYXJ5CisgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhORVRUTEUsIG5ldHRsZSwgWworICAgICAgICBBQ19ERUZJTkUoSEFWRV9ORVRUTEUsIDEsIFtEZWZpbmUgaWYgbmV0dGxlIGlzIGF2YWlsYWJsZV0pCisgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICBdLFsKKyAgICAgICAgQU1fUEFUSF9MSUJHQ1JZUFQoWzEuMi4wXSwgWworICAgICAgICAgIEFDX0RFRklORShIQVZFX0xJQkdDUllQVCwgMSwgW0RlZmluZSBpZiBsaWJnY3J5cHQgaXMgYXZhaWxhYmxlXSkKKyAgICAgICAgICBIQVZFX0hMUz0ieWVzIgorICAgICAgICBdLFsKKyAgICAgICAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhPUEVOU1NMLCBvcGVuc3NsLCBbCisgICAgICAgICAgICBBQ19ERUZJTkUoSEFWRV9PUEVOU1NMLCAxLCBbRGVmaW5lIGlmIG9wZW5zc2wgaXMgYXZhaWxhYmxlXSkKKyAgICAgICAgICAgIEhBVkVfSExTPSJ5ZXMiCisgICAgICAgICAgXSxbCisgICAgICAgICAgICBIQVZFX0hMUz0ibm8iCisgICAgICAgICAgXSkKKyAgICAgICAgXSkKICAgICAgIF0pCi0gICAgXSkKLSAgXSkKKyAgICBdCisgICkKIF0pCiAKIGRubCAqKiogeDI2NSAoSC4yNjUvSEVWQyBlbmNvZGVyKSAqKioKQEAgLTMxMTAsNyArMzM2NCw2IEBACiBBTV9DT05ESVRJT05BTChVU0VfTU9EUExVRywgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfTUlNSUMsIGZhbHNlKQogQU1fQ09ORElUSU9OQUwoVVNFX01QRUcyRU5DLCBmYWxzZSkKLUFNX0NPTkRJVElPTkFMKFVTRV9NUEcxMjMsIGZhbHNlKQogQU1fQ09ORElUSU9OQUwoVVNFX01QTEVYLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9NVVNFUEFDSywgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfTkFTLCBmYWxzZSkKQEAgLTMxMzUsNyArMzM4OCw2IEBACiBBTV9DT05ESVRJT05BTChVU0VfU1BDLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9TUlRQLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9HTUUsIGZhbHNlKQotQU1fQ09ORElUSU9OQUwoVVNFX0dTRVRUSU5HUywgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfWFZJRCwgZmFsc2UpCiBBTV9DT05ESVRJT05BTChVU0VfRFZCLCBmYWxzZSkKIEFNX0NPTkRJVElPTkFMKFVTRV9XSU5JTkVULCBmYWxzZSkKQEAgLTMyMTEsNiArMzQ2Myw5IEBACiBkbmwgTERGTEFHUyByZWFsbHkgc2hvdWxkIG9ubHkgY29udGFpbiBmbGFncywgbm90IGxpYnMgLSB0aGV5IGdldCBhZGRlZCBiZWZvcmUKIGRubCB3aGF0ZXZlcnRhcmdldF9MSUJTIGFuZCAtTCBmbGFncyBoZXJlIGFmZmVjdCB0aGUgcmVzdCBvZiB0aGUgbGlua2luZwogR1NUX0FMTF9MREZMQUdTPSItbm8tdW5kZWZpbmVkIgoraWYgdGVzdCAieCR7ZW5hYmxlX0JzeW1ib2xpY30iID0gInh5ZXMiOyB0aGVuCisgIEdTVF9BTExfTERGTEFHUz0iJEdTVF9BTExfTERGTEFHUyAtV2wsLUJzeW1ib2xpYy1mdW5jdGlvbnMiCitmaQogQUNfU1VCU1QoR1NUX0FMTF9MREZMQUdTKQogCiBkbmwgR1NUX0xJQl9MREZMQUdTCkBAIC0zMjQxLDYgKzM0OTYsNyBAQAogZ3N0L2FkcGNtZGVjL01ha2VmaWxlCiBnc3QvYWRwY21lbmMvTWFrZWZpbGUKIGdzdC9haWZmL01ha2VmaWxlCitnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlCiBnc3QvYXNmbXV4L01ha2VmaWxlCiBnc3QvYXVkaW9meGJhZC9NYWtlZmlsZQogZ3N0L2F1ZGlvbWl4ZXIvTWFrZWZpbGUKQEAgLTMyNzIsNyArMzUyOCw2IEBACiBnc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZQogZ3N0L2pwZWdmb3JtYXQvTWFrZWZpbGUKIGdzdC9saWJyZmIvTWFrZWZpbGUKLWdzdC9saXZlYWRkZXIvTWFrZWZpbGUKIGdzdC9taWRpL01ha2VmaWxlCiBnc3QvbXBlZ2RlbXV4L01ha2VmaWxlCiBnc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUKQEAgLTMyODEsNiArMzUzNiw3IEBACiBnc3QvbXBlZ3BzbXV4L01ha2VmaWxlCiBnc3QvbXZlL01ha2VmaWxlCiBnc3QvbXhmL01ha2VmaWxlCitnc3QvbmV0c2ltL01ha2VmaWxlCiBnc3QvbnV2ZGVtdXgvTWFrZWZpbGUKIGdzdC9vbnZpZi9NYWtlZmlsZQogZ3N0L3BhdGNoZGV0ZWN0L01ha2VmaWxlCkBAIC0zMjg4LDcgKzM1NDQsNiBAQAogZ3N0L3BubS9NYWtlZmlsZQogZ3N0L3Jhd3BhcnNlL01ha2VmaWxlCiBnc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZQotZ3N0L3J0cC9NYWtlZmlsZQogZ3N0L3NkaS9NYWtlZmlsZQogZ3N0L3NkcC9NYWtlZmlsZQogZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlCkBAIC0zMzI3LDcgKzM1ODIsOSBAQAogZ3N0LWxpYnMvZ3N0L3VyaWRvd25sb2FkZXIvTWFrZWZpbGUKIGdzdC1saWJzL2dzdC93YXlsYW5kL01ha2VmaWxlCiBnc3QtbGlicy9nc3QvYmFzZS9NYWtlZmlsZQorZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZQogZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlCitnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUKIHN5cy9NYWtlZmlsZQogc3lzL2RzaG93ZGVjd3JhcHBlci9NYWtlZmlsZQogc3lzL2FjbWVuYy9NYWtlZmlsZQpAQCAtMzM0NSw4ICszNjAyLDEwIEBACiBzeXMvZHZiL01ha2VmaWxlCiBzeXMvZmJkZXYvTWFrZWZpbGUKIHN5cy9saW5zeXMvTWFrZWZpbGUKK3N5cy9udmVuYy9NYWtlZmlsZQogc3lzL29wZW5zbGVzL01ha2VmaWxlCiBzeXMvc2htL01ha2VmaWxlCitzeXMvdGlueWFsc2EvTWFrZWZpbGUKIHN5cy91dmNoMjY0L01ha2VmaWxlCiBzeXMvdmNkL01ha2VmaWxlCiBzeXMvdmRwYXUvTWFrZWZpbGUKQEAgLTMzODUsNiArMzY0NCw3IEBACiB0ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUKIHRlc3RzL2V4YW1wbGVzL29wZW5jdi9NYWtlZmlsZQogdGVzdHMvZXhhbXBsZXMvdXZjaDI2NC9NYWtlZmlsZQordGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUKIHRlc3RzL2ljbGVzL01ha2VmaWxlCiBleHQvdm9hbXJ3YmVuYy9NYWtlZmlsZQogZXh0L3ZvYWFjZW5jL01ha2VmaWxlCkBAIC0zNDE3LDcgKzM2NzcsNiBAQAogZXh0L01ha2VmaWxlCiBleHQvbW9kcGx1Zy9NYWtlZmlsZQogZXh0L21wZWcyZW5jL01ha2VmaWxlCi1leHQvbXBnMTIzL01ha2VmaWxlCiBleHQvbWltaWMvTWFrZWZpbGUKIGV4dC9tcGxleC9NYWtlZmlsZQogZXh0L211c2VwYWNrL01ha2VmaWxlCkBAIC0zNDQ2LDEwICszNzA1LDEwIEBACiBleHQvc3J0cC9NYWtlZmlsZQogZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlCiBleHQvZ21lL01ha2VmaWxlCi1leHQvZ3NldHRpbmdzL01ha2VmaWxlCi1leHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAogZXh0L3NwYy9NYWtlZmlsZQogZXh0L3RpbWlkaXR5L01ha2VmaWxlCitleHQvdnVsa2FuL01ha2VmaWxlCitleHQvdnVsa2FuL3hjYi9NYWtlZmlsZQogZXh0L3dlYnAvTWFrZWZpbGUKIGV4dC94MjY1L01ha2VmaWxlCiBleHQveHZpZC9NYWtlZmlsZQpAQCAtMzQ3MSwxMiArMzczMCwxNiBAQAogcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYwogcGtnY29uZmlnL2dzdHJlYW1lci1tcGVndHMucGMKIHBrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjCitwa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYworcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMKIHBrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC5wYwogcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjCiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLnBjCiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjCiBwa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYwogcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMKK3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjCitwa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYwogdG9vbHMvTWFrZWZpbGUKIG00L01ha2VmaWxlCiApCmRpZmYgLS1naXQgYS9kZWJpYW4vYnVpbGQtZGVwcyBiL2RlYmlhbi9idWlsZC1kZXBzCmluZGV4IDY4ZjY0YzQuLjZkOTFkNWQgMTAwNjQ0Ci0tLSBhL2RlYmlhbi9idWlsZC1kZXBzCisrKyBiL2RlYmlhbi9idWlsZC1kZXBzCkBAIC0xNSwxMSArMTUsMTEgQEAKIEBHU1RfRVhUUkFfQlVJTERfREVQRU5EU0AKIEBHU1RfTElCX0RFVl9ERVBACiBnc3RyZWFtZXJAR1NUX0FCSUAtZG9jCi1nc3RyZWFtZXJAR1NUX0FCSUAtcGx1Z2lucy1iYXNlICg+PSAxLjYuMykKK2dzdHJlYW1lckBHU1RfQUJJQC1wbHVnaW5zLWJhc2UgKD49IDEuNy45MSkKIGdzdHJlYW1lckBHU1RfQUJJQC1wbHVnaW5zLWJhc2UtZG9jCiBndGstZG9jLXRvb2xzICg+PSAxLjEyKQogbGFkc3BhLXNkawotbGliYXNzLWRldiAoPj0gMC45LjQpCitsaWJhc3MtZGV2ICg+PSAwLjEwLjQpCiBsaWJiczJiLWRldgogbGliYnoyLWRldgogbGliY2Fpcm8yLWRldgpAQCAtMjgsMzEgKzI4LDMwIEBACiBsaWJkY2EtZGV2CiBsaWJkZTI2NS1kZXYKIGxpYmRpcmVjdGZiLWRldiAoPj0gMC45LjI1KQorbGliZHJtLWRldgogbGliZHZkbmF2LWRldiAoPj0gNC4xLjIpIFshaHVyZC1hbnldCiBsaWJlZ2wxLW1lc2EtZGV2CiBsaWJleGVtcGktZGV2CiBsaWJleGlmLWRldiAoPj0gMC42LjE2KQotbGliZmFhZC1kZXYKK2xpYmZhYWQtZGV2ICg+PSAyLjcpCiBsaWJmbHVpZHN5bnRoLWRldiAoPj0gMS4wKQogbGliZ2lyZXBvc2l0b3J5MS4wLWRldiAoPj0gMC45LjEyLTR+KQogbGliZ2wxLW1lc2EtZGV2CiBsaWJnbGVzMi1tZXNhLWRldgotbGliZ2xpYjIuMC1kZXYgKD49IDIuMzIpCitsaWJnbGliMi4wLWRldiAoPj0gMi40MCkKIGxpYmdsdTEtbWVzYS1kZXYKIGxpYmdtZS1kZXYKIGxpYmdudXRsczI4LWRldiAoPj0gMi4xMS4zKQogbGliZ3NtMS1kZXYKLWxpYmdzdHJlYW1lci1wbHVnaW5zLWJhc2VAR1NUX0FCSUAtZGV2ICg+PSAxLjYuMykKK2xpYmdzdHJlYW1lci1wbHVnaW5zLWJhc2VAR1NUX0FCSUAtZGV2ICg+PSAxLjcuOTEpCiBsaWJndGstMy1kZXYgKD49IDMuMTUuMCkKIGxpYmlwdGNkYXRhMC1kZXYgKD49IDEuMC4yKQotbGliamFzcGVyLWRldgogbGlia2F0ZS1kZXYgKD49IDAuMS43KQogbGlibWltaWMtZGV2ICg+PSAxLjApCiBsaWJtanBlZ3Rvb2xzLWRldgogbGlibW1zLWRldiAoPj0gMC40KQogbGlibW9kcGx1Zy1kZXYKIGxpYm1wY2RlYy1kZXYKLWxpYm1wZzEyMy1kZXYgKD49IDEuMTMpCiBsaWJvZmEwLWRldiAoPj0gMC45LjMpCiBsaWJvcGVuYWwtZGV2ICg+PSAxOjEuMTQpCiBsaWJvcGVuY3YtZGV2ICg+PSAyLjMuMCkKQEAgLTYxLDcgKzYwLDcgQEAKIGxpYm9wdXMtZGV2ICg+PSAwLjkuNCkKIGxpYm9yYy0wLjQtZGV2ICg+PSAxOjAuNC4xNykKIGxpYnBuZy1kZXYKLWxpYnJzdmcyLWRldiAoPj0gMi4zNikKK2xpYnJzdmcyLWRldiAoPj0gMi4zNi4yKQogbGlicnRtcC1kZXYKIGxpYnNjaHJvZWRpbmdlci1kZXYgKD49IDEuMC43KQogbGlic25kZmlsZTEtZGV2ICg+PSAxLjAuMTYpCmRpZmYgLS1naXQgYS9kZWJpYW4vYnVpbGQtZGVwcy5pbiBiL2RlYmlhbi9idWlsZC1kZXBzLmluCmluZGV4IGI2ODQ3ZmUuLmMzZTZhMjEgMTAwNjQ0Ci0tLSBhL2RlYmlhbi9idWlsZC1kZXBzLmluCisrKyBiL2RlYmlhbi9idWlsZC1kZXBzLmluCkBAIC0xLDYgKzEsNiBAQAogQEdTVF9MSUJfREVWX0RFUEAKIEBHU1RfRVhUUkFfQlVJTERfREVQRU5EU0AKLWxpYmdzdHJlYW1lci1wbHVnaW5zLWJhc2VAR1NUX0FCSUAtZGV2ICg+PSAxLjYuMykKK2xpYmdzdHJlYW1lci1wbHVnaW5zLWJhc2VAR1NUX0FCSUAtZGV2ICg+PSAxLjcuOTEpCiBhdXRvdG9vbHMtZGV2CiBkaC1hdXRvcmVjb25mCiBhdXRvbWFrZSAoPj0gMS4xNCkKQEAgLTEyLDcgKzEyLDcgQEAKIGRwa2ctZGV2ICg+PSAxLjE1LjEpCiBwa2ctY29uZmlnICg+PSAwLjExLjApCiBndGstZG9jLXRvb2xzICg+PSAxLjEyKQotbGliZ2xpYjIuMC1kZXYgKD49IDIuMzIpCitsaWJnbGliMi4wLWRldiAoPj0gMi40MCkKIGxpYm9yYy0wLjQtZGV2ICg+PSAxOjAuNC4xNykKIGxpYmJ6Mi1kZXYKIGxpYmRjYS1kZXYKQEAgLTIzLDI1ICsyMywyNCBAQAogbGliZ3RrLTMtZGV2ICg+PSAzLjE1LjApCiBsYWRzcGEtc2RrCiBsaWJzbmRmaWxlMS1kZXYgKD49IDEuMC4xNikKLWxpYmZhYWQtZGV2CitsaWJmYWFkLWRldiAoPj0gMi43KQogbGliZGlyZWN0ZmItZGV2ICg+PSAwLjkuMjUpCiBsaWJleGlmLWRldiAoPj0gMC42LjE2KQogbGliZXhlbXBpLWRldgogbGliaXB0Y2RhdGEwLWRldiAoPj0gMS4wLjIpCiBsaWJ3aWxkbWlkaS1kZXYgKD49IDAuMi4zKQotZ3N0cmVhbWVyQEdTVF9BQklALXBsdWdpbnMtYmFzZSAoPj0gMS42LjMpCitnc3RyZWFtZXJAR1NUX0FCSUAtcGx1Z2lucy1iYXNlICg+PSAxLjcuOTEpCiBsaWJvZmEwLWRldiAoPj0gMC45LjMpCiBsaWJkdmRuYXYtZGV2ICg+PSA0LjEuMikgWyFodXJkLWFueV0KIGxpYnNzbC1kZXYKLWxpYmphc3Blci1kZXYKIGxpYngxMS1kZXYKLWxpYmFzcy1kZXYgKD49IDAuOS40KQorbGliYXNzLWRldiAoPj0gMC4xMC40KQogbGlibW9kcGx1Zy1kZXYKIGxpYmthdGUtZGV2ICg+PSAwLjEuNykKIGxpYnNjaHJvZWRpbmdlci1kZXYgKD49IDEuMC43KQogbGlibWltaWMtZGV2ICg+PSAxLjApCiBsaWJnbWUtZGV2Ci1saWJyc3ZnMi1kZXYgKD49IDIuMzYpCitsaWJyc3ZnMi1kZXYgKD49IDIuMzYuMikKIGxpYmNhaXJvMi1kZXYKIGxpYnBuZy1kZXYKIGZsaXRlLWRldgpAQCAtNTgsNyArNTcsNiBAQAogbGlienZiaS1kZXYKIGxpYnNwYW5kc3AtZGV2CiBsaWJvcHVzLWRldiAoPj0gMC45LjQpCi1saWJtcGcxMjMtZGV2ICg+PSAxLjEzKQogbGliZ2wxLW1lc2EtZGV2CiBsaWJlZ2wxLW1lc2EtZGV2CiBsaWJnbGVzMi1tZXNhLWRldgpAQCAtODIsMyArODAsNCBAQAogZ2lyMS4yLWZyZWVkZXNrdG9wCiBnaXIxLjItZ3N0cmVhbWVyLTEuMAogZ2lyMS4yLWdzdC1wbHVnaW5zLWJhc2UtMS4wCitsaWJkcm0tZGV2CmRpZmYgLS1naXQgYS9kZWJpYW4vY2hhbmdlbG9nIGIvZGViaWFuL2NoYW5nZWxvZwppbmRleCBjNTNhMzg4Li5jYThiZGZiIDEwMDY0NAotLS0gYS9kZWJpYW4vY2hhbmdlbG9nCisrKyBiL2RlYmlhbi9jaGFuZ2Vsb2cKQEAgLTEsOCArMSw1OCBAQAotZ3N0LXBsdWdpbnMtYmFkMS4wICgxLjYuMy0xKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KK2dzdC1wbHVnaW5zLWJhZDEuMCAoMS43LjkxLTEpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1tZWRpdW0KIAotICAqIE5ldyB1cHN0cmVhbSBidWdmaXggcmVsZWFzZS4KKyAgKiBkZWJpYW4vYnVpbGQtZGVwcy5pbjoKKyAgICArIFJlbW92ZSBsaWJqYXNwZXItZGV2LiBJdCdzIHVudXNlZCBhbmQgc3VwcG9zZWQgdG8gYmUgcmVtb3ZlZCBzb29uLgorICAgICAgKENsb3NlczogIzgxODIxMykuCisgICogTmV3IHVwc3RyZWFtIHJlbGVhc2UgY2FuZGlkYXRlOgorICAgICsgZGViaWFuL2J1aWxkLWRlcHMuaW4sCisgICAgICBkZWJpYW4vcnVsZXM6CisgICAgICAtIEJ1aWxkLWRlcGVuZCBvbiBHU3RyZWFtZXIgPj0gMS43LjkxLgogCi0gLS0gU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AZGViaWFuLm9yZz4gIFdlZCwgMjAgSmFuIDIwMTYgMTQ6NTQ6MjcgKzAyMDAKKyAtLSBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BkZWJpYW4ub3JnPiAgV2VkLCAwMiBNYXIgMjAxNiAxNjo0NTowOSArMDIwMAorCitnc3QtcGx1Z2lucy1iYWQxLjAgKDEuNy45MC0xKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bWVkaXVtCisKKyAgWyBJYWluIExhbmUgXQorICAqIGRlYmlhbi93YXRjaDogRml4IHRvIHdvcmsgd2l0aCB1cHN0cmVhbSBsb2NhdGlvbnMKKworICBbIFNlYmFzdGlhbiBEcsO2Z2UgXQorICAqIE5ldyB1cHN0cmVhbSByZWxlYXNlIGNhbmRpZGF0ZToKKyAgICArIGRlYmlhbi9idWlsZC1kZXBzLmluLAorICAgICAgZGViaWFuL3J1bGVzOgorICAgICAgLSBCdWlsZC1kZXBlbmQgb24gR1N0cmVhbWVyID49IDEuNy45MC4KKyAgICArIGRlYmlhbi9nc3RyZWFtZXItcGx1Z2lucy1iYWQuaW5zdGFsbDoKKyAgICAgIC0gU2hpcCBuZXcgb3B1c3BhcnNlIHBsdWdpbiwgcmVuYW1lZCBmcm9tIG9wdXMgYW5kIG9ubHkgY29udGFpbnMKKyAgICAgICAgdGhlIHBhcnNlciBub3cuCisKKyAtLSBTZWJhc3RpYW4gRHLDtmdlIDxzbG9tb0BkZWJpYW4ub3JnPiAgVHVlLCAwMSBNYXIgMjAxNiAxNzoyNTowMCArMDIwMAorCitnc3QtcGx1Z2lucy1iYWQxLjAgKDEuNy4yLTEpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1tZWRpdW0KKworICAqIE5ldyB1cHN0cmVhbSB1bnN0YWJsZSByZWxlYXNlOgorICAgICsgZGViaWFuL2J1aWxkLWRlcHMuaW4sCisgICAgICBkZWJpYW4vcnVsZXM6CisgICAgICAtIEJ1aWxkLWRlcGVuZCBvbiBHU3RyZWFtZXIgPj0gMS43LjIuCisgICAgICAtIFVwZGF0ZSBmYWFkIGRlcGVuZGVuY3kgdG8gPj0gMi43IGFuZCByc3ZnIHRvID49IDIuMzYuMi4KKyAgICArIGRlYmlhbi9nc3RyZWFtZXItcGx1Z2lucy1iYWQuaW5zdGFsbDoKKyAgICAgIC0gRHJvcCBtcGcxMjMgKG1vdmVkIHRvIC11Z2x5KSBhbmQgcnRwYmFkIChtb3ZlZCB0byAtZ29vZCkgcGx1Z2lucy4KKyAgICAgIC0gQWRkIG5ldyBuZXRzaW0gcGx1Z2luLgorICAgICsgZGViaWFuL2xpYmdzdHJlYW1lci1wbHVnaW5zLWJhZCouaW5zdGFsbDoKKyAgICAgIC0gQWRkIG5ldyBiYWRhdWRpbyBsaWJyYXJ5LgorCisgLS0gU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AZGViaWFuLm9yZz4gIEZyaSwgMTkgRmViIDIwMTYgMTE6Mjk6NTQgKzAyMDAKKworZ3N0LXBsdWdpbnMtYmFkMS4wICgxLjcuMS0xKSBleHBlcmltZW50YWw7IHVyZ2VuY3k9bWVkaXVtCisKKyAgKiBOZXcgdXBzdHJlYW0gdW5zdGFibGUgcmVsZWFzZToKKyAgICArIGRlYmlhbi9idWlsZC1kZXBzLmluLAorICAgICAgZGViaWFuL3J1bGVzOgorICAgICAgLSBCdWlsZC1kZXBlbmQgb24gR0xpYiA+PSAyLjQwIGFuZCBHU3RyZWFtZXIgPj0gMS43LjEuCisgICAgICAtIEJ1aWxkLWRlcGVuZCBvbiBsaWJhc3MgPj0gMC4xMC4yLgorICAgICAgLSBCdWlsZC1kZXBlbmQgb24gbGliZHJtLWRldi4KKyAgICArIGRlYmlhbi9nc3RyZWFtZXItcGx1Z2lucy1iYXNlLmluc3RhbGw6CisgICAgICAtIERyb3AgbGl2ZWFkZGVyIHBsdWdpbiBhbmQgYWRkIG5ldyB2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwgcGx1Z2luLgorCisgLS0gU2ViYXN0aWFuIERyw7ZnZSA8c2xvbW9AZGViaWFuLm9yZz4gIFRodSwgMjQgRGVjIDIwMTUgMTQ6MjM6NTUgKzAxMDAKIAogZ3N0LXBsdWdpbnMtYmFkMS4wICgxLjYuMi0xKSB1bnN0YWJsZTsgdXJnZW5jeT1tZWRpdW0KIApkaWZmIC0tZ2l0IGEvZGViaWFuL2NvbnRyb2wgYi9kZWJpYW4vY29udHJvbAppbmRleCA3NGJmY2FhLi5kNDgyM2RjIDEwMDY0NAotLS0gYS9kZWJpYW4vY29udHJvbAorKysgYi9kZWJpYW4vY29udHJvbApAQCAtMjYsMTMgKzI2LDEzIEBACiAgICAgICAgICAgICAgICBsaWJibHVldG9vdGgtZGV2ICg+PSA1KSBbbGludXgtYW55XSwKICAgICAgICAgICAgICAgIGxpYnNiYy1kZXYgKD49IDEuMSkgW2xpbnV4LWFueV0sCiAgICAgICAgICAgICAgICBsaWJ3YXlsYW5kLWRldiAoPj0gMS4wKSBbbGludXgtYW55XSwKLSAgICAgICAgICAgICAgIGxpYmdzdHJlYW1lcjEuMC1kZXYgKD49IDEuNi4zKSwKKyAgICAgICAgICAgICAgIGxpYmdzdHJlYW1lcjEuMC1kZXYgKD49IDEuNy45MSksCiAgICAgICAgICAgICAgICBnc3RyZWFtZXIxLjAtZG9jLAotICAgICAgICAgICAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSAoPj0gMS42LjMpLAorICAgICAgICAgICAgICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSAoPj0gMS43LjkxKSwKICAgICAgICAgICAgICAgIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UtZG9jLAogICAgICAgICAgICAgICAgZ3RrLWRvYy10b29scyAoPj0gMS4xMiksCiAgICAgICAgICAgICAgICBsYWRzcGEtc2RrLAotICAgICAgICAgICAgICAgbGliYXNzLWRldiAoPj0gMC45LjQpLAorICAgICAgICAgICAgICAgbGliYXNzLWRldiAoPj0gMC4xMC40KSwKICAgICAgICAgICAgICAgIGxpYmJzMmItZGV2LAogICAgICAgICAgICAgICAgbGliYnoyLWRldiwKICAgICAgICAgICAgICAgIGxpYmNhaXJvMi1kZXYsCkBAIC00MSwzMSArNDEsMzAgQEAKICAgICAgICAgICAgICAgIGxpYmRjYS1kZXYsCiAgICAgICAgICAgICAgICBsaWJkZTI2NS1kZXYsCiAgICAgICAgICAgICAgICBsaWJkaXJlY3RmYi1kZXYgKD49IDAuOS4yNSksCisgICAgICAgICAgICAgICBsaWJkcm0tZGV2LAogICAgICAgICAgICAgICAgbGliZHZkbmF2LWRldiAoPj0gNC4xLjIpIFshaHVyZC1hbnldLAogICAgICAgICAgICAgICAgbGliZWdsMS1tZXNhLWRldiwKICAgICAgICAgICAgICAgIGxpYmV4ZW1waS1kZXYsCiAgICAgICAgICAgICAgICBsaWJleGlmLWRldiAoPj0gMC42LjE2KSwKLSAgICAgICAgICAgICAgIGxpYmZhYWQtZGV2LAorICAgICAgICAgICAgICAgbGliZmFhZC1kZXYgKD49IDIuNyksCiAgICAgICAgICAgICAgICBsaWJmbHVpZHN5bnRoLWRldiAoPj0gMS4wKSwKICAgICAgICAgICAgICAgIGxpYmdpcmVwb3NpdG9yeTEuMC1kZXYgKD49IDAuOS4xMi00fiksCiAgICAgICAgICAgICAgICBsaWJnbDEtbWVzYS1kZXYsCiAgICAgICAgICAgICAgICBsaWJnbGVzMi1tZXNhLWRldiwKLSAgICAgICAgICAgICAgIGxpYmdsaWIyLjAtZGV2ICg+PSAyLjMyKSwKKyAgICAgICAgICAgICAgIGxpYmdsaWIyLjAtZGV2ICg+PSAyLjQwKSwKICAgICAgICAgICAgICAgIGxpYmdsdTEtbWVzYS1kZXYsCiAgICAgICAgICAgICAgICBsaWJnbWUtZGV2LAogICAgICAgICAgICAgICAgbGliZ251dGxzMjgtZGV2ICg+PSAyLjExLjMpLAogICAgICAgICAgICAgICAgbGliZ3NtMS1kZXYsCi0gICAgICAgICAgICAgICBsaWJnc3RyZWFtZXItcGx1Z2lucy1iYXNlMS4wLWRldiAoPj0gMS42LjMpLAorICAgICAgICAgICAgICAgbGliZ3N0cmVhbWVyLXBsdWdpbnMtYmFzZTEuMC1kZXYgKD49IDEuNy45MSksCiAgICAgICAgICAgICAgICBsaWJndGstMy1kZXYgKD49IDMuMTUuMCksCiAgICAgICAgICAgICAgICBsaWJpcHRjZGF0YTAtZGV2ICg+PSAxLjAuMiksCi0gICAgICAgICAgICAgICBsaWJqYXNwZXItZGV2LAogICAgICAgICAgICAgICAgbGlia2F0ZS1kZXYgKD49IDAuMS43KSwKICAgICAgICAgICAgICAgIGxpYm1pbWljLWRldiAoPj0gMS4wKSwKICAgICAgICAgICAgICAgIGxpYm1qcGVndG9vbHMtZGV2LAogICAgICAgICAgICAgICAgbGlibW1zLWRldiAoPj0gMC40KSwKICAgICAgICAgICAgICAgIGxpYm1vZHBsdWctZGV2LAogICAgICAgICAgICAgICAgbGlibXBjZGVjLWRldiwKLSAgICAgICAgICAgICAgIGxpYm1wZzEyMy1kZXYgKD49IDEuMTMpLAogICAgICAgICAgICAgICAgbGlib2ZhMC1kZXYgKD49IDAuOS4zKSwKICAgICAgICAgICAgICAgIGxpYm9wZW5hbC1kZXYgKD49IDE6MS4xNCksCiAgICAgICAgICAgICAgICBsaWJvcGVuY3YtZGV2ICg+PSAyLjMuMCksCkBAIC03NCw3ICs3Myw3IEBACiAgICAgICAgICAgICAgICBsaWJvcHVzLWRldiAoPj0gMC45LjQpLAogICAgICAgICAgICAgICAgbGlib3JjLTAuNC1kZXYgKD49IDE6MC40LjE3KSwKICAgICAgICAgICAgICAgIGxpYnBuZy1kZXYsCi0gICAgICAgICAgICAgICBsaWJyc3ZnMi1kZXYgKD49IDIuMzYpLAorICAgICAgICAgICAgICAgbGlicnN2ZzItZGV2ICg+PSAyLjM2LjIpLAogICAgICAgICAgICAgICAgbGlicnRtcC1kZXYsCiAgICAgICAgICAgICAgICBsaWJzY2hyb2VkaW5nZXItZGV2ICg+PSAxLjAuNyksCiAgICAgICAgICAgICAgICBsaWJzbmRmaWxlMS1kZXYgKD49IDEuMC4xNiksCmRpZmYgLS1naXQgYS9kZWJpYW4vZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmluc3RhbGwgYi9kZWJpYW4vZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmluc3RhbGwKaW5kZXggZTg0ZGYwNC4uYjliOWUxMSAxMDA2NDQKLS0tIGEvZGViaWFuL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5pbnN0YWxsCisrKyBiL2RlYmlhbi9nc3RyZWFtZXItcGx1Z2lucy1iYWQuaW5zdGFsbApAQCAtMjcsNyArMjcsNiBAQAogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RmYWFkLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdGZlc3RpdmFsLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdGZpZWxkYW5hbHlzaXMuc28KLWRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0ZnJhZ21lbnRlZC5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RmcmVldmVyYi5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RmcmVpMHIuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0ZmxpdGUuc28KQEAgLTM4LDYgKzM3LDcgQEAKIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0Z21lLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdGdzbS5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RndGtzaW5rLnNvCitkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdGhscy5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RpZDN0YWcuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0aW50ZXIuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0aW50ZXJsYWNlLnNvCkBAIC00OCw3ICs0OCw2IEBACiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdGpwMmtkZWNpbWF0b3Iuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0bGFkc3BhLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdGxpYmRlMjY1LnNvCi1kZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdGxpdmVhZGRlci5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RtaWRpLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG1pbWljLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG1tcy5zbwpAQCAtNTgsMTYgKzU3LDE2IEBACiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG1wZWd0c2RlbXV4LnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG1wZWdwc211eC5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RtcGVndHNtdXguc28KLWRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0bXBnMTIzLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG1wbGV4LnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG14Zi5zbworZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RuZXRzaW0uc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0b2ZhLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG9wZW5hbC5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RvcGVuY3Yuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0b3BlbmdsLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdG9wZW5leHIuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0b3BlbmpwZWcuc28KLWRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0b3B1cy5zbworZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RvcHVzcGFyc2Uuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0cGNhcHBhcnNlLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdHBubS5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RyYXdwYXJzZS5zbwpAQCAtNzYsNyArNzUsNiBAQAogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3Ryc3ZnLnNvCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdHJ0bXAuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0cnRwb252aWYuc28KLWRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0cnRwYmFkLnNvCiBAc2JjQAogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RzY2hyby5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RzZHBlbGVtLnNvCkBAIC05Myw2ICs5MSw3IEBACiBkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdHN0ZXJlby5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3RzdWJlbmMuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0dmlkZW9maWx0ZXJzYmFkLnNvCitkZWJpYW4vdG1wL3Vzci9saWIvKi9nc3RyZWFtZXItQEdTVF9BQklAL2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbC5zbwogZGViaWFuL3RtcC91c3IvbGliLyovZ3N0cmVhbWVyLUBHU1RfQUJJQC9saWJnc3R2aWRlb3BhcnNlcnNiYWQuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0dmlkZW9zaWduYWwuc28KIGRlYmlhbi90bXAvdXNyL2xpYi8qL2dzdHJlYW1lci1AR1NUX0FCSUAvbGliZ3N0dm1uYy5zbwpkaWZmIC0tZ2l0IGEvZGViaWFuL2xpYmdzdHJlYW1lci1wbHVnaW5zLWJhZC5pbnN0YWxsIGIvZGViaWFuL2xpYmdzdHJlYW1lci1wbHVnaW5zLWJhZC5pbnN0YWxsCmluZGV4IDg4NDQ5NjcuLmI3Mzc1YWIgMTAwNjQ0Ci0tLSBhL2RlYmlhbi9saWJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaW5zdGFsbAorKysgYi9kZWJpYW4vbGliZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmluc3RhbGwKQEAgLTEsNSArMSw2IEBACiBkZWJpYW4vdG1wL3Vzci9saWIvKi9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQUJJQC5zby4qCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9saWJnc3RwaG90b2dyYXBoeS1AR1NUX0FCSUAuc28uKgorZGViaWFuL3RtcC91c3IvbGliLyovbGliZ3N0YmFkYXVkaW8tQEdTVF9BQklALnNvLioKIGRlYmlhbi90bXAvdXNyL2xpYi8qL2xpYmdzdGJhZGJhc2UtQEdTVF9BQklALnNvLioKIGRlYmlhbi90bXAvdXNyL2xpYi8qL2xpYmdzdGJhZHZpZGVvLUBHU1RfQUJJQC5zby4qCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9saWJnc3RiYXNlY2FtZXJhYmluc3JjLUBHU1RfQUJJQC5zby4qCkBAIC03LDUgKzgsNiBAQAogZGViaWFuL3RtcC91c3IvbGliLyovbGliZ3N0aW5zZXJ0YmluLUBHU1RfQUJJQC5zby4qCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9saWJnc3Rjb2RlY3BhcnNlcnMtQEdTVF9BQklALnNvLioKIGRlYmlhbi90bXAvdXNyL2xpYi8qL2xpYmdzdG1wZWd0cy1AR1NUX0FCSUAuc28uKgorZGViaWFuL3RtcC91c3IvbGliLyovbGliZ3N0cGxheWVyLUBHU1RfQUJJQC5zby4qCiBkZWJpYW4vdG1wL3Vzci9saWIvKi9saWJnc3R1cmlkb3dubG9hZGVyLUBHU1RfQUJJQC5zby4qCiBAd2F5bGFuZEAKZGlmZiAtLWdpdCBhL2RlYmlhbi9ydWxlcyBiL2RlYmlhbi9ydWxlcwppbmRleCBhNmQ1YTk5Li5iYmJhZTljIDEwMDc1NQotLS0gYS9kZWJpYW4vcnVsZXMKKysrIGIvZGViaWFuL3J1bGVzCkBAIC00NSw3ICs0NSw3IEBACiBnc3RfbGliPWxpYmdzdHJlYW1lciQoZ3N0X2FiaSktMAogZ3N0X2xpYl9kZXY9bGliZ3N0cmVhbWVyJChnc3RfYWJpKS1kZXYKICMgd2hhdCBnc3RyZWFtZXIgdmVyc2lvbiBpcyBuZWVkZWQKLWdzdF9saWJfZGV2X2RlcD0kKGdzdF9saWJfZGV2KSAoPj0gMS42LjMpCitnc3RfbGliX2Rldl9kZXA9JChnc3RfbGliX2RldikgKD49IDEuNy45MSkKIAogZ3N0X3BrZ25hbWU9Z3N0cmVhbWVyJChnc3RfYWJpKQogZ3N0X2RlYl9hYmk9JChnc3RfYWJpKS0wCmRpZmYgLS1naXQgYS9kZWJpYW4vd2F0Y2ggYi9kZWJpYW4vd2F0Y2gKaW5kZXggMTI2MzdiNy4uMWI3YjhmZiAxMDA2NDQKLS0tIGEvZGViaWFuL3dhdGNoCisrKyBiL2RlYmlhbi93YXRjaApAQCAtMSwyICsxLDIgQEAKIHZlcnNpb249MwotaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtKDBcLjExXC4uKilcLnRhclwuZ3oKK2h0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSgxXC5bXGRcLl0rKVwudGFyXC54egpkaWZmIC0tZ2l0IGEvZG9jcy9NYWtlZmlsZS5pbiBiL2RvY3MvTWFrZWZpbGUuaW4KaW5kZXggYWQ2YjBmNy4uNWE4MGY1ZSAxMDA2NDQKLS0tIGEvZG9jcy9NYWtlZmlsZS5pbgorKysgYi9kb2NzL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ3LDYgKzI0Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg0LDYgKzI4NSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkyLDcgKzI5NSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMSw4ICszMTMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI5LDE2ICszMzIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY0LDYgKzM2OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4OSw2ICszOTUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTAsNiArNDk4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMyw4ICs1MTIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjAsNiArNTI3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NywxNiArNTg2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM4LDYgKzY0OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDgsNiArNjYwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU3LDYgKzY3MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTQsNyArNzA5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvTWFrZWZpbGUuYW0gYi9kb2NzL2xpYnMvTWFrZWZpbGUuYW0KaW5kZXggZjM2MGRiOS4uNzkxOWQ2NiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL01ha2VmaWxlLmFtCisrKyBiL2RvY3MvbGlicy9NYWtlZmlsZS5hbQpAQCAtMzYsNyArMzYsMTMgQEAKIENGSUxFX0dMT0I9JCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvKi8qLmMKIAogIyBIZWFkZXIgZmlsZXMgdG8gaWdub3JlIHdoZW4gc2Nhbm5pbmcuCi1JR05PUkVfSEZJTEVTID0gJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0cy1wcml2YXRlLmgKK0lHTk9SRV9IRklMRVMgPSBcCisJJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvbXBlZ3RzL2dzdG1wZWd0cy1wcml2YXRlLmggXAorCSQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLXByaXZhdGUuaCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLXByaXZhdGUuaCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0X3ByaXZhdGUuaCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbF9wcml2YXRlLmgKIAogIyBJbWFnZXMgdG8gY29weSBpbnRvIEhUTUwgZGlyZWN0b3J5LgogSFRNTF9JTUFHRVMgPQpAQCAtNTUsNiArNjEsNyBAQAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL2xpYmdzdGluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvbGliZ3N0bXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9saWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAogICAkKEdTVF9CQVNFX0xJQlMpCiAKICMgSWYgeW91IG5lZWQgdG8gb3ZlcnJpZGUgc29tZSBvZiB0aGUgZGVjbGFyYXRpb25zLCBwbGFjZSB0aGVtIGluIHRoaXMgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL01ha2VmaWxlLmluIGIvZG9jcy9saWJzL01ha2VmaWxlLmluCmluZGV4IGQzNTIxMTUuLjc2NWIzMTAgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9NYWtlZmlsZS5pbgorKysgYi9kb2NzL2xpYnMvTWFrZWZpbGUuaW4KQEAgLTEzMywxNiArMTMzLDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yMDksNiArMjA4LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yNDYsNiArMjQ3LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yNTQsNyArMjU3LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMjczLDggKzI3NSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0yOTEsMTYgKzI5NCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zMjYsNiArMzMwLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzUxLDYgKzM1Nyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ1Miw2ICs0NjAsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNDY1LDggKzQ3NCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTQ4Miw2ICs0ODksOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTM5LDE2ICs1NDgsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MDAsNiArNjExLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTYxMCw2ICs2MjIsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02MTksNiArNjMyLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY1Niw3ICs2NzEsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTczNyw3ICs3NTEsMTQgQEAKIENGSUxFX0dMT0IgPSAkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC8qLyouYwogCiAjIEhlYWRlciBmaWxlcyB0byBpZ25vcmUgd2hlbiBzY2FubmluZy4KLUlHTk9SRV9IRklMRVMgPSAkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzLXByaXZhdGUuaAorSUdOT1JFX0hGSUxFUyA9IFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzLXByaXZhdGUuaCBcCisJJCh0b3Bfc3JjZGlyKS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci1wcml2YXRlLmggXAorCSQodG9wX3NyY2RpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHRfcHJpdmF0ZS5oIFwKKwkkKHRvcF9zcmNkaXIpL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsX3ByaXZhdGUuaAorCiAKICMgSW1hZ2VzIHRvIGNvcHkgaW50byBIVE1MIGRpcmVjdG9yeS4KIEhUTUxfSU1BR0VTID0gCkBAIC03NTYsNiArNzc3LDcgQEAKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9saWJnc3RpbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAubGEgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvbXBlZ3RzL2xpYmdzdG1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9wbGF5ZXIvbGliZ3N0cGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAgJChHU1RfQkFTRV9MSUJTKQogCiAKQEAgLTEwOTUsMTcgKzExMTcsMTggQEAKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgICAgICAgICBzY2Fub2JqX29wdGlvbnM9Ii0tdmVyYm9zZSI7IFwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgICAgIGZpOyBcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIGZpOyBcCi1ARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIEdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPWBjZCAkKHRvcF9idWlsZGRpcikgJiYgcHdkYAkJXAotQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICBHU1RfUExVR0lOX1BBVEhfMV8wPQkJCQkJCVwKK0BFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9YGNkICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgCVwKK0BFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgR1NUX1BMVUdJTl9QQVRIXzFfMD0JCQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgR1NUX1JFR0lTVFJZXzFfMD1kb2MtcmVnaXN0cnkueG1sCQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpCQkJCQlcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVOKSIJXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICBDRkxBR1M9IiQoR1RLRE9DX0NGTEFHUykgJChDRkxBR1MpIgkJCQlcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIExERkxBR1M9IiQoR1RLRE9DX0xJQlMpICQoTERGTEFHUykiCQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgZ3RrZG9jLXNjYW5nb2JqIC0tdHlwZS1pbml0LWZ1bmM9ImdzdF9pbml0KE5VTEwsTlVMTCkiCVwKLUBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgICAgICQkc2Nhbm9ial9vcHRpb25zIC0tbW9kdWxlPSQoRE9DX01PRFVMRSkgOwkJCQlcCitARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgICAgICAkJHNjYW5vYmpfb3B0aW9ucyAtLW1vZHVsZT0kKERPQ19NT0RVTEUpIDsJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAllbHNlCQkJCQkJCQlcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgIGZvciBpIGluICQoU0NBTk9CSl9GSUxFUykgOyBkbwkJCQlcCitARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgICAgICQoTUtESVJfUCkgJChkaXJuYW1lICQkaSkgOwkJCQlcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJICAgICAgIHRlc3QgLWYgJCRpIHx8IHRvdWNoICQkaSA7CQkJCVwKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAkgICAgZG9uZQkJCQkJCQlcCiBARU5BQkxFX0dUS19ET0NfVFJVRUAJZmkKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1kb2NzLnNnbWwgYi9kb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZG9jcy5zZ21sCmluZGV4IDc2NjUxYjcuLjg4ZmQxMWQgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1kb2NzLnNnbWwKKysrIGIvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLWRvY3Muc2dtbApAQCAtNzMsNiArNzMsOSBAQAogICAgIDxjaGFwdGVyIGlkPSJnbCI+CiAgICAgICA8dGl0bGU+T3BlbkdMIEhlbHBlciBMaWJyYXJ5PC90aXRsZT4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGFwaS54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGJhc2VtZW1vcnkueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xiYXNlZmlsdGVyLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsYnVmZmVyLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsYnVmZmVycG9vbC54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGNvbG9yY29udmVydC54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGNvbnRleHQueG1sIi8+CkBAIC04MiwxNyArODUsMTYgQEAKICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGNvbnRleHRnbHgueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xjb250ZXh0d2dsLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsZGlzcGxheS54bWwiLz4KLSAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGRvd25sb2FkLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGVnbGltYWdlbWVtb3J5LnhtbCIvPgotICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsYmFzZWZpbHRlci54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGZpbHRlci54bWwiLz4KICAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbGZyYW1lYnVmZmVyLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsbWVtb3J5LnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsbWVtb3J5cGJvLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsc2hhZGVyLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsc2wueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xzbHN0YWdlLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsc3luY21ldGEueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x1cGxvYWQueG1sIi8+Ci0gICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x1cGxvYWRtZXRhLnhtbCIvPgotICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsdXRpbHMueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x3aW5kb3cueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x3aW5kb3dhbmRyb2lkLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsd2luZG93Y29jb2EueG1sIi8+CkBAIC0xMDAsNiArMTAyLDE4IEBACiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x3aW5kb3d3YXlsYW5kLnhtbCIvPgogICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsd2luZG93d2luMzIueG1sIi8+CiAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2x3aW5kb3d4MTEueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0Z2xkZWJ1Zy54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RnbHV0aWxzLnhtbCIvPgorICAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2dzdGdsZm9ybWF0LnhtbCIvPgorICAgIDwvY2hhcHRlcj4KKworICAgIDxjaGFwdGVyIGlkPSJwbGF5ZXIiPgorICAgICAgPHRpdGxlPlBsYXllciBMaWJyYXJ5PC90aXRsZT4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RwbGF5ZXIueG1sIi8+CisgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZ3N0cGxheWVyLW1lZGlhaW5mby54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci54bWwiLz4KKyAgICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi54bWwiLz4KICAgICA8L2NoYXB0ZXI+CiAKICAgICA8Y2hhcHRlcj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1zZWN0aW9ucy50eHQgYi9kb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtc2VjdGlvbnMudHh0CmluZGV4IDNiN2NjMDUuLjkyMmRhMGYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy1zZWN0aW9ucy50eHQKKysrIGIvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLXNlY3Rpb25zLnR4dApAQCAtNzY4LDcgKzc2OCw2IEBACiBHc3RHTFBsYXRmb3JtCiBnc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5nCiBnc3RfZ2xfcGxhdGZvcm1fZnJvbV9zdHJpbmcKLWdzdF9nbF9jaGVja19leHRlbnNpb24KIEdTVF9HTF9BUElfR0xFUzFfTkFNRQogR1NUX0dMX0FQSV9HTEVTMl9OQU1FCiBHU1RfR0xfQVBJX09QRU5HTDNfTkFNRQpAQCAtNzg0LDExICs3ODMsMzkgQEAKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5nc3RnbGJ1ZmZlcjwvRklMRT4KKzxUSVRMRT5Hc3RHTEJ1ZmZlcjwvVElUTEU+CitHc3RHTEJ1ZmZlcgorZ3N0X2dsX2J1ZmZlcl9pbml0X29uY2UKK2dzdF9pc19nbF9idWZmZXIKK2dzdF9nbF9idWZmZXJfYWxsb2MKK0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcworR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQlVGRkVSCitnc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ldworR3N0R0xCdWZmZXJBbGxvY2F0b3IKK0dzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MKK0dTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUUKK0dTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUgorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHU1RfR0xfQlVGRkVSX0NBU1QKK0dTVF9HTF9CVUZGRVJfQUxMT0NBVE9SCitHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9DQVNUCitHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9DTEFTUworR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfR0VUX0NMQVNTCitnc3RfZ2xfYnVmZmVyX2FsbG9jYXRvcl9nZXRfdHlwZQorR1NUX0lTX0dMX0JVRkZFUl9BTExPQ0FUT1IKK0dTVF9JU19HTF9CVUZGRVJfQUxMT0NBVE9SX0NMQVNTCitHU1RfVFlQRV9HTF9CVUZGRVJfQUxMT0NBVE9SCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+Z3N0Z2xidWZmZXJwb29sPC9GSUxFPgogPFRJVExFPkdzdEdMQnVmZmVyUG9vbDwvVElUTEU+CiBHc3RHTEJ1ZmZlclBvb2wKIEdzdEdMQnVmZmVyUG9vbENsYXNzCiBnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3Citnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtcworZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXMKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogZ3N0X2dsX2J1ZmZlcl9wb29sX3JlcGxhY2VfbGFzdF9idWZmZXIKIEdzdEdMQnVmZmVyUG9vbFByaXZhdGUKQEAgLTgwOSw2ICs4MzYsOCBAQAogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3CiBnc3RfZ2xfY29sb3JfY29udmVydF9zZXRfY2FwcwogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfdHJhbnNmb3JtX2NhcHMKK2dzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9jYXBzCitnc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbgogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfcGVyZm9ybQogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHc3RHTENvbG9yQ29udmVydFByaXZhdGUKQEAgLTgzNiw2ICs4NjUsNyBAQAogZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGUKIGdzdF9nbF9jb250ZXh0X2RlZmF1bHRfZ2V0X3Byb2NfYWRkcmVzcwogZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzcworZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtCiBnc3RfZ2xfY29udGV4dF9nZXRfd2luZG93CiBnc3RfZ2xfY29udGV4dF9zZXRfd2luZG93CiBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkCkBAIC04NDcsNiArODc3LDggQEAKIGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2FwaQogZ3N0X2dsX2NvbnRleHRfZ2V0X3RocmVhZAogZ3N0X2dsX2NvbnRleHRfY2FuX3NoYXJlCitnc3RfZ2xfY29udGV4dF9pc19zaGFyZWQKK2dzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aAogZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZQogZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbgogZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX3ZlcnNpb24KQEAgLTg1NCwxMSArODg2LDExIEBACiBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHU1RfR0xfQ09OVEVYVAotR1NUX0dMX0lTX0NPTlRFWFQKK0dTVF9JU19HTF9DT05URVhUCiBHU1RfR0xfVFlQRV9DT05URVhUCiBHU1RfR0xfQ09OVEVYVF9DTEFTUwogR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTCi1HU1RfR0xfSVNfQ09OVEVYVF9DTEFTUworR1NUX0lTX0dMX0NPTlRFWFRfQ0xBU1MKIEdTVF9HTF9DT05URVhUX0NBU1QKIEdzdEdMQ29udGV4dFByaXZhdGUKIGdzdF9nbF9jb250ZXh0X2dldF90eXBlCkBAIC04NzMsMTEgKzkwNSwxMSBAQAogZ3N0X2dsX2NvbnRleHRfY29jb2FfZ2V0X3BpeGVsX2Zvcm1hdAogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHU1RfR0xfQ09OVEVYVF9DT0NPQQotR1NUX0dMX0lTX0NPTlRFWFRfQ09DT0EKK0dTVF9JU19HTF9DT05URVhUX0NPQ09BCiBHU1RfR0xfVFlQRV9DT05URVhUX0NPQ09BCiBHU1RfR0xfQ09OVEVYVF9DT0NPQV9DTEFTUwogR1NUX0dMX0NPTlRFWFRfQ09DT0FfR0VUX0NMQVNTCi1HU1RfR0xfSVNfQ09OVEVYVF9DT0NPQV9DTEFTUworR1NUX0lTX0dMX0NPTlRFWFRfQ09DT0FfQ0xBU1MKIEdTVF9HTF9DT05URVhUX0NPQ09BX0NBU1QKIEdzdEdMQ29udGV4dENvY29hUHJpdmF0ZQogZ3N0X2dsX2NvbnRleHRfY29jb2FfZ2V0X3R5cGUKQEAgLTg5NCwxMSArOTI2LDExIEBACiBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X3Byb2NfYWRkcmVzcwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHU1RfR0xfQ09OVEVYVF9FR0wKLUdTVF9HTF9JU19DT05URVhUX0VHTAorR1NUX0lTX0dMX0NPTlRFWFRfRUdMCiBHU1RfR0xfVFlQRV9DT05URVhUX0VHTAogR1NUX0dMX0NPTlRFWFRfRUdMX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9FR0xfR0VUX0NMQVNTCi1HU1RfR0xfSVNfQ09OVEVYVF9FR0xfQ0xBU1MKK0dTVF9JU19HTF9DT05URVhUX0VHTF9DTEFTUwogR1NUX0dMX0NPTlRFWFRfRUdMX0NBU1QKIEdzdEdMQ29udGV4dEVHTFByaXZhdGUKIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfdHlwZQpAQCAtOTEzLDExICs5NDUsMTEgQEAKIGdzdF9nbF9jb250ZXh0X2dseF9nZXRfcHJvY19hZGRyZXNzCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdTVF9HTF9DT05URVhUX0dMWAotR1NUX0dMX0lTX0NPTlRFWFRfR0xYCitHU1RfSVNfR0xfQ09OVEVYVF9HTFgKIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYCiBHU1RfR0xfQ09OVEVYVF9HTFhfQ0xBU1MKIEdTVF9HTF9DT05URVhUX0dMWF9HRVRfQ0xBU1MKLUdTVF9HTF9JU19DT05URVhUX0dMWF9DTEFTUworR1NUX0lTX0dMX0NPTlRFWFRfR0xYX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9HTFhfQ0FTVAogR3N0R0xDb250ZXh0R0xYUHJpdmF0ZQogZ3N0X2dsX2NvbnRleHRfZ2x4X2dldF90eXBlCkBAIC05MzIsMTEgKzk2NCwxMSBAQAogZ3N0X2dsX2NvbnRleHRfd2dsX2dldF9wcm9jX2FkZHJlc3MKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogR1NUX0dMX0NPTlRFWFRfV0dMCi1HU1RfR0xfSVNfQ09OVEVYVF9XR0wKK0dTVF9JU19HTF9DT05URVhUX1dHTAogR1NUX0dMX1RZUEVfQ09OVEVYVF9XR0wKIEdTVF9HTF9DT05URVhUX1dHTF9DTEFTUwogR1NUX0dMX0NPTlRFWFRfV0dMX0dFVF9DTEFTUwotR1NUX0dMX0lTX0NPTlRFWFRfV0dMX0NMQVNTCitHU1RfSVNfR0xfQ09OVEVYVF9XR0xfQ0xBU1MKIEdTVF9HTF9DT05URVhUX1dHTF9DQVNUCiBHc3RHTENvbnRleHRXR0xQcml2YXRlCiBnc3RfZ2xfY29udGV4dF93Z2xfZ2V0X3R5cGUKQEAgLTk1MCwxMSArOTgyLDExIEBACiBnc3RfZ2xfY29udGV4dF9lYWdsX2dldF9jdXJyZW50X2NvbnRleHQKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgogR1NUX0dMX0NPTlRFWFRfRUFHTAotR1NUX0dMX0lTX0NPTlRFWFRfRUFHTAorR1NUX0lTX0dMX0NPTlRFWFRfRUFHTAogR1NUX0dMX1RZUEVfQ09OVEVYVF9FQUdMCiBHU1RfR0xfQ09OVEVYVF9FQUdMX0NMQVNTCiBHU1RfR0xfQ09OVEVYVF9FQUdMX0dFVF9DTEFTUwotR1NUX0dMX0lTX0NPTlRFWFRfRUFHTF9DTEFTUworR1NUX0lTX0dMX0NPTlRFWFRfRUFHTF9DTEFTUwogR1NUX0dMX0NPTlRFWFRfRUFHTF9DQVNUCiBHc3RHTENvbnRleHRFYWdsUHJpdmF0ZQogCkBAIC05NjMsNiArOTk1LDcgQEAKIGdzdF9nbF9jb250ZXh0X2VhZ2xfcHJlcGFyZV9kcmF3CiBnc3RfZ2xfY29udGV4dF9lYWdsX2ZpbmlzaF9kcmF3CiBnc3RfZ2xfY29udGV4dF9lYWdsX3Jlc2l6ZQorZ3N0X2dsX2NvbnRleHRfZWFnbF91cGRhdGVfbGF5ZXIKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+CkBAIC05NzgsNiArMTAxMSw3IEBACiBnc3RfZ2xfZGlzcGxheV9hZGRfY29udGV4dAogZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZAogZ3N0X2dsX2Rpc3BsYXlfZ2V0X2hhbmRsZQorZ3N0X2dsX2Rpc3BsYXlfY3JlYXRlX2NvbnRleHQKIGdzdF9jb250ZXh0X2dldF9nbF9kaXNwbGF5CiBnc3RfY29udGV4dF9zZXRfZ2xfZGlzcGxheQogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CkBAIC05OTIsMjMgKzEwMjYsMjIgQEAKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Ci08RklMRT5nc3RnbGRvd25sb2FkPC9GSUxFPgotPFRJVExFPkdzdEdMRG93bmxvYWQ8L1RJVExFPgotR3N0R0xEb3dubG9hZAotZ3N0X2dsX2Rvd25sb2FkX25ldwotZ3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXQKLWdzdF9nbF9kb3dubG9hZF90cmFuc2Zvcm1fY2FwcwotZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9ET1dOTE9BRAotR1NUX0dMX0RPV05MT0FEX0NBU1QKLUdTVF9HTF9ET1dOTE9BRF9DTEFTUwotR1NUX0dMX0RPV05MT0FEX0dFVF9DTEFTUwotZ3N0X2dsX2Rvd25sb2FkX2dldF90eXBlCi1HU1RfSVNfR0xfRE9XTkxPQUQKLUdTVF9JU19HTF9ET1dOTE9BRF9DTEFTUwotR1NUX1RZUEVfR0xfRE9XTkxPQUQKLUdzdEdMRG93bmxvYWRQcml2YXRlCis8RklMRT5nc3RnbGRlYnVnPC9GSUxFPgorR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZQorPFRJVExFPk9wZW5HTCBEZWJ1Z2dpbmc8L1RJVExFPgorR3N0R0xBc3luY0RlYnVnCitnc3RfZ2xfYXN5bmNfZGVidWdfbmV3Citnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZQorZ3N0X2dsX2FzeW5jX2RlYnVnX2luaXQKK2dzdF9nbF9hc3luY19kZWJ1Z191bnNldAorZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZQorZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXcKK2dzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZworZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2cKK2dzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdAorR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0dfdmFsaXN0CitHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRworZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+CkBAIC0xMDIyLDcgKzEwNTUsNyBAQAogR1NUX1RZUEVfR0xfQkFTRV9GSUxURVIKIGdzdF9nbF9iYXNlX2ZpbHRlcl9nZXRfdHlwZQogR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTCi1HU1RfSVNfR0xfRklMVEVSX0NMQVNTCitHU1RfSVNfR0xfQkFTRV9GSUxURVJfQ0xBU1MKIEdTVF9HTF9CQVNFX0ZJTFRFUl9HRVRfQ0xBU1MKIEdzdEdMQmFzZUZpbHRlclByaXZhdGUKIDwvU0VDVElPTj4KQEAgLTEwNDcsNiArMTA4MCwyOSBAQAogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPmdzdGdsZm9ybWF0PC9GSUxFPgorPFRJVExFPk9wZW5HTCBGb3JtYXRzPC9USVRMRT4KK0dzdEdMVGV4dHVyZVRhcmdldAorR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUgorR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIKK0dTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSCitHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJECitHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRQorR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMKK2dzdF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzCitnc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXMKK2dzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUKK2dzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQKK2dzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZQorZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nCitnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nCitnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsCitnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fYnVmZmVyX3Bvb2xfb3B0aW9uCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KKzwvU0VDVElPTj4KKworPFNFQ1RJT04+CiA8RklMRT5nc3RnbGZyYW1lYnVmZmVyPC9GSUxFPgogPFRJVExFPkdzdEdMRnJhbWVidWZmZXI8L1RJVExFPgogR3N0R0xGcmFtZWJ1ZmZlcgpAQCAtMTA1Niw2ICsxMTEyLDcgQEAKIGdzdF9nbF9mcmFtZWJ1ZmZlcl9kZWxldGUKIGdzdF9nbF9mcmFtZWJ1ZmZlcl91c2VfdjIKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgorR3N0R0xGcmFtZWJ1ZmZlclByaXZhdGUKIEdTVF9HTF9GUkFNRUJVRkZFUgogR1NUX0dMX0ZSQU1FQlVGRkVSX0NBU1QKIEdTVF9JU19HTF9GUkFNRUJVRkZFUgpAQCAtMTA2NywzMCArMTEyNCwxMTkgQEAKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+Cis8RklMRT5nc3RnbGJhc2VtZW1vcnk8L0ZJTEU+CitHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IKK0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzCitHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUUKK0dTVF9NQVBfR0wKK0dzdEdMQmFzZU1lbW9yeUVycm9yCitHU1RfR0xfQkFTRV9NRU1PUllfRVJST1IKK0dzdEdMQmFzZU1lbW9yeVRyYW5zZmVyCitHc3RHTEFsbG9jYXRpb25QYXJhbXMKK0dzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jCitHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYworR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0MKK0dTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNCitHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUKK0dTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVIKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0Citnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weQorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEKKzxUSVRMRT5Hc3RHTEJhc2VNZW1vcnk8L1RJVExFPgorR3N0R0xCYXNlTWVtb3J5Citnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlCitnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdAorZ3N0X2lzX2dsX2Jhc2VfbWVtb3J5CitHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uCitHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbgorR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24KK0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24KK0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbgorR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uCitnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MKK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhCitnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5Cis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK0dTVF9UWVBFX0dMX0FMTE9DQVRJT05fUEFSQU1TCitnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZ2V0X3R5cGUKK2dzdF9nbF9iYXNlX21lbW9yeV9lcnJvcl9xdWFyaworR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QKK0dTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IKK0dTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0FTVAorR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUworR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1MKK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUKK0dTVF9JU19HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IKK0dTVF9JU19HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MKK0dTVF9UWVBFX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUgorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KIDxGSUxFPmdzdGdsbWVtb3J5PC9GSUxFPgotR3N0R0xBbGxvY2F0b3IKLUdzdEdMQWxsb2NhdG9yQ2xhc3MKLUdTVF9HTF9NRU1PUllfQUxMT0NBVE9SCiA8VElUTEU+R3N0R0xNZW1vcnk8L1RJVExFPgorR1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUgorR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMKK0dTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxsCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3Citnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YQorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmUKK0dzdEdMTWVtb3J5QWxsb2NhdG9yCitHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzCitnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdAorZ3N0X2dsX21lbW9yeV9pbml0X29uY2UKIEdzdEdMTWVtb3J5CiBnc3RfZ2xfbWVtb3J5X2luaXQKLWdzdF9nbF9tZW1vcnlfYWxsb2MKLWdzdF9nbF9tZW1vcnlfd3JhcHBlZAotZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUKLWdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUKLWdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyCi1nc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWQKLWdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQKIGdzdF9pc19nbF9tZW1vcnkKK0dTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUKK2dzdF9nbF9tZW1vcnlfY29weV9pbnRvCitnc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2UKK2dzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHMKK2dzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UKK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0Citnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkCitnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3RhcmdldAorZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90eXBlCitnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3dpZHRoCitnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcgogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1HU1RfR0xfQUxMT0NBVE9SCi1HU1RfR0xfQUxMT0NBVE9SX0NBU1QKLUdTVF9HTF9BTExPQ0FUT1JfQ0xBU1MKLUdTVF9HTF9BTExPQ0FUT1JfR0VUX0NMQVNTCi1nc3RfZ2xfYWxsb2NhdG9yX2dldF90eXBlCi1HU1RfSVNfR0xfQUxMT0NBVE9SCi1HU1RfSVNfR0xfQUxMT0NBVE9SX0NMQVNTCi1HU1RfVFlQRV9HTF9BTExPQ0FUT1IKK0dTVF9HTF9NRU1PUllfQ0FTVAorR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IKK0dTVF9HTF9NRU1PUllfQUxMT0NBVE9SX0NBU1QKK0dTVF9HTF9NRU1PUllfQUxMT0NBVE9SX0NMQVNTCitHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1MKK2dzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlCitHU1RfSVNfR0xfTUVNT1JZX0FMTE9DQVRPUgorR1NUX0lTX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MKK0dTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5nc3RnbG1lbW9yeXBibzwvRklMRT4KK0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yCitHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzCitHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRQorPFRJVExFPkdzdEdMTWVtb3J5UEJPPC9USVRMRT4KK0dzdEdMTWVtb3J5UEJPCitnc3RfaXNfZ2xfbWVtb3J5X3BibworZ3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmUKK2dzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVyCitnc3RfZ2xfbWVtb3J5X3Bib19pbml0X29uY2UKK2dzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlcgorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHU1RfR0xfTUVNT1JZX1BCT19DQVNUCitHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IKK0dTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9DQVNUCitHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfQ0xBU1MKK0dTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9HRVRfQ0xBU1MKK2dzdF9nbF9tZW1vcnlfcGJvX2FsbG9jYXRvcl9nZXRfdHlwZQorR1NUX0lTX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SCitHU1RfSVNfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfQ0xBU1MKK0dTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SCiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgpAQCAtMTExMCwzMSArMTI1NiwyMyBAQAogCiA8U0VDVElPTj4KIDxGSUxFPmdzdGdsc2hhZGVyPC9GSUxFPgotZ3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFyawotR1NUX0dMX1NIQURFUl9FUlJPUgotR3N0R0xTaGFkZXJFcnJvcgotR3N0R0xTaGFkZXJTb3VyY2VUeXBlCi1nc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYwotZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX3NldAotZ3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZQogPFRJVExFPkdzdEdMU2hhZGVyPC9USVRMRT4KIEdzdEdMU2hhZGVyCiBnc3RfZ2xfc2hhZGVyX25ldwotZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZQotZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlCi1nc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlCi1nc3RfZ2xfc2hhZGVyX2dldF9mcmFnbWVudF9zb3VyY2UKLWdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlCi1nc3RfZ2xfc2hhZGVyX3NldF9hY3RpdmUKLWdzdF9nbF9zaGFkZXJfaXNfY29tcGlsZWQKLWdzdF9nbF9zaGFkZXJfY29tcGlsZQotZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FuZF9jaGVjawotZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X2ZfYW5kX2NoZWNrCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjawotZ3N0X2dsX3NoYWRlcl9yZWxlYXNlCitnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0Citnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzCitnc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlcwogZ3N0X2dsX3NoYWRlcl91c2UKK2dzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlCitnc3RfZ2xfc2hhZGVyX3JlbGVhc2UKK2dzdF9nbF9zaGFkZXJfcmVsZWFzZV91bmxvY2tlZAorZ3N0X2dsX3NoYWRlcl9hdHRhY2gKK2dzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkCitnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlCitnc3RfZ2xfc2hhZGVyX2RldGFjaAorZ3N0X2dsX3NoYWRlcl9kZXRhY2hfdW5sb2NrZWQKK2dzdF9nbF9zaGFkZXJfaXNfbGlua2VkCitnc3RfZ2xfc2hhZGVyX2xpbmsKIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkKIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYKIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2CkBAIC0xMTY1LDI0ICsxMzAzLDczIEBACiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdzdEdMU2hhZGVyUHJpdmF0ZQogR1NUX0dMX1NIQURFUgotR1NUX0dMX0lTX1NIQURFUgorR1NUX0lTX0dMX1NIQURFUgogR1NUX0dMX1RZUEVfU0hBREVSCiBnc3RfZ2xfc2hhZGVyX2dldF90eXBlCiBHU1RfR0xfU0hBREVSX0NMQVNTCi1HU1RfR0xfSVNfU0hBREVSX0NMQVNTCitHU1RfSVNfR0xfU0hBREVSX0NMQVNTCiBHU1RfR0xfU0hBREVSX0dFVF9DTEFTUwogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KKzxGSUxFPmdzdGdsc2w8L0ZJTEU+Cis8VElUTEU+R3N0R0xTTDwvVElUTEU+CitHU1RfR0xTTF9FUlJPUgorZ3N0X2dsc2xfZXJyb3JfcXVhcmsKK0dzdEdMU0xFcnJvcgorR3N0R0xTTFByb2ZpbGUKK0dzdEdMU0xWZXJzaW9uCitnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nCitnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZworZ3N0X2dsc2xfdmVyc2lvbl9mcm9tX3N0cmluZworZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcKK2dzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZworZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZworZ3N0X2dsc2xfc3RyaW5nX2dldF92ZXJzaW9uX3Byb2ZpbGUKK2dzdF9nbF9jb250ZXh0X3N1cHBvcnRzX2dsc2xfcHJvZmlsZV92ZXJzaW9uCitnc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb24KKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5nc3RnbHNsc3RhZ2U8L0ZJTEU+Cis8VElUTEU+R3N0R0xTTFN0YWdlPC9USVRMRT4KK0dzdEdMU0xTdGFnZQorR3N0R0xTTFN0YWdlQ2xhc3MKK2dzdF9nbHNsX3N0YWdlX25ldworZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfZnJhZ21lbnQKK2dzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleAorZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nCitnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmdzCitnc3RfZ2xzbF9zdGFnZV9zZXRfc3RyaW5ncworZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZQorZ3N0X2dsc2xfc3RhZ2VfZ2V0X2hhbmRsZQorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3Byb2ZpbGUKK2dzdF9nbHNsX3N0YWdlX2dldF9zaGFkZXJfdHlwZQorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3ZlcnNpb24KKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorR3N0R0xTTFN0YWdlUHJpdmF0ZQorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3R5cGUKK0dTVF9UWVBFX0dMU0xfU1RBR0UKK0dTVF9JU19HTFNMX1NUQUdFCitHU1RfSVNfR0xTTF9TVEFHRV9DTEFTUworR1NUX0dMU0xfU1RBR0UKK0dTVF9HTFNMX1NUQUdFX0NMQVNTCitHU1RfR0xTTF9TVEFHRV9HRVRfQ0xBU1MKKzwvU0VDVElPTj4KKworPC9TRUNUSU9OPgorPFNFQ1RJT04+CiA8RklMRT5nc3RnbHN5bmNtZXRhPC9GSUxFPgogPFRJVExFPkdzdEdMU3luY01ldGE8L1RJVExFPgogR3N0R0xTeW5jTWV0YQogZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhCitnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbAogZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhCiBnc3RfZ2xfc3luY19tZXRhX2FwaV9nZXRfdHlwZQogZ3N0X2dsX3N5bmNfbWV0YV9nZXRfaW5mbwogZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludAogZ3N0X2dsX3N5bmNfbWV0YV93YWl0Citnc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1CiBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1NZTkNfTUVUQQogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHU1RfR0xfU1lOQ19NRVRBX0FQSV9UWVBFCkBAIC0xMTk5LDcgKzEzODYsNyBAQAogZ3N0X2dsX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb24KIGdzdF9nbF91cGxvYWRfdHJhbnNmb3JtX2NhcHMKIGdzdF9nbF91cGxvYWRfcGVyZm9ybV93aXRoX2J1ZmZlcgotZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcgorZ3N0X2dsX3VwbG9hZF9nZXRfaW5wdXRfdGVtcGxhdGVfY2FwcwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CiBHU1RfR0xfVVBMT0FECiBHU1RfR0xfVVBMT0FEX0NBU1QKQEAgLTEyMTMsMjggKzE0MDAsOCBAQAogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KLTxGSUxFPmdzdGdsdXBsb2FkbWV0YTwvRklMRT4KLTxUSVRMRT5Hc3RHTFVwbG9hZE1ldGE8L1RJVExFPgotR3N0R0xVcGxvYWRNZXRhCi1nc3RfZ2xfdXBsb2FkX21ldGFfbmV3Ci1nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdAotZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF9mb3JtYXQKLWdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVyCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9VUExPQURfTUVUQQotR1NUX0dMX1VQTE9BRF9NRVRBX0NBU1QKLUdTVF9HTF9VUExPQURfTUVUQV9DTEFTUwotR1NUX0dMX1VQTE9BRF9NRVRBX0dFVF9DTEFTUwotZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF90eXBlCi1HU1RfSVNfR0xfVVBMT0FEX01FVEEKLUdTVF9JU19HTF9VUExPQURfTUVUQV9DTEFTUwotR1NUX1RZUEVfR0xfVVBMT0FEX01FVEEKLUdzdEdMVXBsb2FkTWV0YVByaXZhdGUKLTwvU0VDVElPTj4KLQotPFNFQ1RJT04+CiA8RklMRT5nc3RnbHV0aWxzPC9GSUxFPgotPFRJVExFPlV0aWxpdGllczwvVElUTEU+Cis8VElUTEU+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9USVRMRT4KIEdMQ0IKIEdMQ0JfVjIKIENSQ0IKQEAgLTEyNTcsNyArMTQyNCwzOCBAQAogZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlcwogZ3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGEKIGdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplCitnc3RfZ2xfZ2V0X3BsYW5lX3N0YXJ0CiBnc3RfZ2xfcnVuX3F1ZXJ5Citnc3RfZ2xfdmFsdWVfZ2V0X3RleHR1cmVfdGFyZ2V0X21hc2sKK2dzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXQKK2dzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+Z3N0Z2x2aWV3Y29udmVydDwvRklMRT4KKzxUSVRMRT5Hc3RHTFZpZXdDb252ZXJ0PC9USVRMRT4KK0dzdEdMU3RlcmVvRG93bm1peAorR3N0R0xWaWV3Q29udmVydAorR3N0R0xWaWV3Q29udmVydENsYXNzCitnc3RfZ2xfdmlld19jb252ZXJ0X25ldworZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfY2FwcworZ3N0X2dsX3ZpZXdfY29udmVydF90cmFuc2Zvcm1fY2FwcworZ3N0X2dsX3ZpZXdfY29udmVydF9maXhhdGVfY2FwcworZ3N0X2dsX3ZpZXdfY29udmVydF9zdWJtaXRfaW5wdXRfYnVmZmVyCitnc3RfZ2xfdmlld19jb252ZXJ0X2dldF9vdXRwdXQKK2dzdF9nbF92aWV3X2NvbnZlcnRfcGVyZm9ybQorZ3N0X2dsX3ZpZXdfY29udmVydF9yZXNldAorZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfY29udGV4dAorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Citnc3RfZ2xfc3RlcmVvX2Rvd25taXhfbW9kZV9nZXRfdHlwZQorR1NUX0lTX0dMX1ZJRVdfQ09OVkVSVAorR1NUX0lTX0dMX1ZJRVdfQ09OVkVSVF9DTEFTUworR1NUX0dMX1RZUEVfVklFV19DT05WRVJUCitHU1RfR0xfVklFV19DT05WRVJUCitHU1RfR0xfVklFV19DT05WRVJUX0NMQVNTCitHU1RfR0xfVklFV19DT05WRVJUX0dFVF9DTEFTUworZ3N0X2dsX3ZpZXdfY29udmVydF9nZXRfdHlwZQorR3N0R0xWaWV3Q29udmVydFByaXZhdGUKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+CkBAIC0xMjc0LDcgKzE0NzIsNiBAQAogR3N0R0xXaW5kb3dDbGFzcwogZ3N0X2dsX3dpbmRvd19uZXcKIGdzdF9nbF93aW5kb3dfZHJhdwotZ3N0X2dsX3dpbmRvd19kcmF3X3VubG9ja2VkCiBnc3RfZ2xfd2luZG93X2lzX3J1bm5pbmcKIGdzdF9nbF93aW5kb3dfcXVpdAogZ3N0X2dsX3dpbmRvd19ydW4KQEAgLTEyOTIsOCArMTQ4OSw4IEBACiBnc3RfZ2xfd2luZG93X2dldF9zdXJmYWNlX2RpbWVuc2lvbnMKIGdzdF9nbF93aW5kb3dfaGFuZGxlX2V2ZW50cwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1HU1RfR0xfSVNfV0lORE9XCi1HU1RfR0xfSVNfV0lORE9XX0NMQVNTCitHU1RfSVNfR0xfV0lORE9XCitHU1RfSVNfR0xfV0lORE9XX0NMQVNTCiBHU1RfR0xfVFlQRV9XSU5ET1cKIEdTVF9HTF9XSU5ET1cKIEdTVF9HTF9XSU5ET1dfQ0xBU1MKQEAgLTEzMTQsOCArMTUxMSw4IEBACiBHc3RHTFdpbmRvd0FuZHJvaWRFR0xDbGFzcwogZ3N0X2dsX3dpbmRvd19hbmRyb2lkX2VnbF9uZXcKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR1NUX0dMX0lTX1dJTkRPV19BTkRST0lEX0VHTAotR1NUX0dMX0lTX1dJTkRPV19BTkRST0lEX0VHTF9DTEFTUworR1NUX0lTX0dMX1dJTkRPV19BTkRST0lEX0VHTAorR1NUX0lTX0dMX1dJTkRPV19BTkRST0lEX0VHTF9DTEFTUwogR1NUX0dMX1RZUEVfV0lORE9XX0FORFJPSURfRUdMCiBHU1RfR0xfV0lORE9XX0FORFJPSURfRUdMCiBHU1RfR0xfV0lORE9XX0FORFJPSURfRUdMX0NMQVNTCkBAIC0xMzMxLDggKzE1MjgsOCBAQAogZ3N0X2dsX3dpbmRvd19jb2NvYV9uZXcKIGdzdF9nbF93aW5kb3dfY29jb2FfY3JlYXRlX3dpbmRvdwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1HU1RfR0xfSVNfV0lORE9XX0NPQ09BCi1HU1RfR0xfSVNfV0lORE9XX0NPQ09BX0NMQVNTCitHU1RfSVNfR0xfV0lORE9XX0NPQ09BCitHU1RfSVNfR0xfV0lORE9XX0NPQ09BX0NMQVNTCiBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EKIEdTVF9HTF9XSU5ET1dfQ09DT0EKIEdTVF9HTF9XSU5ET1dfQ09DT0FfQ0xBU1MKQEAgLTEzNDgsOCArMTU0NSw4IEBACiBHc3RHTFdpbmRvd0Rpc3BtYW54RUdMQ2xhc3MKIGdzdF9nbF93aW5kb3dfZGlzcG1hbnhfZWdsX25ldwogPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1HU1RfR0xfSVNfV0lORE9XX0RJU1BNQU5YX0VHTAotR1NUX0dMX0lTX1dJTkRPV19ESVNQTUFOWF9FR0xfQ0xBU1MKK0dTVF9JU19HTF9XSU5ET1dfRElTUE1BTlhfRUdMCitHU1RfSVNfR0xfV0lORE9XX0RJU1BNQU5YX0VHTF9DTEFTUwogR1NUX0dMX1RZUEVfV0lORE9XX0RJU1BNQU5YX0VHTAogR1NUX0dMX1dJTkRPV19ESVNQTUFOWF9FR0wKIEdTVF9HTF9XSU5ET1dfRElTUE1BTlhfRUdMX0NMQVNTCkBAIC0xMzY0LDggKzE1NjEsOCBAQAogR3N0R0xXaW5kb3dXYXlsYW5kRUdMQ2xhc3MKIGdzdF9nbF93aW5kb3dfd2F5bGFuZF9lZ2xfbmV3CiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9JU19XSU5ET1dfV0FZTEFORF9FR0wKLUdTVF9HTF9JU19XSU5ET1dfV0FZTEFORF9FR0xfQ0xBU1MKK0dTVF9JU19HTF9XSU5ET1dfV0FZTEFORF9FR0wKK0dTVF9JU19HTF9XSU5ET1dfV0FZTEFORF9FR0xfQ0xBU1MKIEdTVF9HTF9UWVBFX1dJTkRPV19XQVlMQU5EX0VHTAogR1NUX0dMX1dJTkRPV19XQVlMQU5EX0VHTAogR1NUX0dMX1dJTkRPV19XQVlMQU5EX0VHTF9DTEFTUwpAQCAtMTM4Miw4ICsxNTc5LDggQEAKIGdzdF9nbF93aW5kb3dfd2luMzJfbmV3CiBnc3RfZ2xfd2luZG93X3dpbjMyX2NyZWF0ZV93aW5kb3cKIDxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR1NUX0dMX0lTX1dJTkRPV19XSU4zMgotR1NUX0dMX0lTX1dJTkRPV19XSU4zMl9DTEFTUworR1NUX0lTX0dMX1dJTkRPV19XSU4zMgorR1NUX0lTX0dMX1dJTkRPV19XSU4zMl9DTEFTUwogR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyCiBHU1RfR0xfV0lORE9XX1dJTjMyCiBHU1RfR0xfV0lORE9XX1dJTjMyX0NMQVNTCkBAIC0xNDAyLDggKzE1OTksOCBAQAogZ3N0X2dsX3dpbmRvd194MTFfdHJhcF94X2Vycm9ycwogZ3N0X2dsX3dpbmRvd194MTFfdW50cmFwX3hfZXJyb3JzCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdTVF9HTF9JU19XSU5ET1dfWDExCi1HU1RfR0xfSVNfV0lORE9XX1gxMV9DTEFTUworR1NUX0lTX0dMX1dJTkRPV19YMTEKK0dTVF9JU19HTF9XSU5ET1dfWDExX0NMQVNTCiBHU1RfR0xfVFlQRV9XSU5ET1dfWDExCiBHU1RfR0xfV0lORE9XX1gxMQogR1NUX0dMX1dJTkRPV19YMTFfQ0xBU1MKQEAgLTE0ODEsMyArMTY3OCwyNDkgQEAKIEdTVF9WSURFT19BR0dSRUdBVE9SX1BBRF9HRVRfQ0xBU1MKIGdzdF92aWRlb2FnZ3JlZ2F0b3JfcGFkX2dldF90eXBlCiA8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgorPEZJTEU+Z3N0cGxheWVyPC9GSUxFPgorR3N0UGxheWVyCisKK2dzdF9wbGF5ZXJfbmV3CisKK2dzdF9wbGF5ZXJfcGxheQorZ3N0X3BsYXllcl9wYXVzZQorZ3N0X3BsYXllcl9zdG9wCisKK2dzdF9wbGF5ZXJfc2VlaworCitnc3RfcGxheWVyX3NldF91cmkKK2dzdF9wbGF5ZXJfZ2V0X3VyaQorCitnc3RfcGxheWVyX2dldF9kdXJhdGlvbgorZ3N0X3BsYXllcl9nZXRfcG9zaXRpb24KKworZ3N0X3BsYXllcl9zZXRfdm9sdW1lCitnc3RfcGxheWVyX3NldF9tdXRlCitnc3RfcGxheWVyX2dldF92b2x1bWUKK2dzdF9wbGF5ZXJfZ2V0X211dGUKKworZ3N0X3BsYXllcl9nZXRfcGlwZWxpbmUKKworZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsCitnc3RfcGxheWVyX2dldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwKKworR3N0UGxheWVyU3RhdGUKK2dzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWUKKworR1NUX1BMQVlFUl9FUlJPUgorR3N0UGxheWVyRXJyb3IKK2dzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWUKKworZ3N0X3BsYXllcl9nZXRfbWVkaWFfaW5mbworZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtcworZ3N0X3BsYXllcl9nZXRfdmlkZW9fc3RyZWFtcworZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtcworCitnc3RfcGxheWVyX3NldF9hdWRpb190cmFjaworZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2sKK2dzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrCisKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2sKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2sKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2sKKworZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZAorZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZAorZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZAorCitnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmkKK2dzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3VyaQorCitnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uCitnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uX2VuYWJsZWQKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlzdWFsaXphdGlvbgorCitHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlCitnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfbmFtZQorCitnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlCitnc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlCitnc3RfcGxheWVyX2dldF9jb2xvcl9iYWxhbmNlCisKK2dzdF9wbGF5ZXJfZ2V0X3JhdGUKK2dzdF9wbGF5ZXJfc2V0X3JhdGUKKworR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcgorR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZQorCitHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyCitHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorR1NUX0lTX1BMQVlFUgorR1NUX0lTX1BMQVlFUl9DTEFTUworR1NUX1BMQVlFUgorR1NUX1BMQVlFUl9DQVNUCitHU1RfUExBWUVSX0NMQVNTCitHU1RfUExBWUVSX0dFVF9DTEFTUworR1NUX1RZUEVfUExBWUVSCitHc3RQbGF5ZXJDbGFzcworZ3N0X3BsYXllcl9nZXRfdHlwZQorCitnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZ2V0X3R5cGUKKworR1NUX1RZUEVfUExBWUVSX0VSUk9SCitnc3RfcGxheWVyX2Vycm9yX3F1YXJrCitnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlCisKK0dTVF9UWVBFX1BMQVlFUl9TVEFURQorZ3N0X3BsYXllcl9zdGF0ZV9nZXRfdHlwZQorCitHU1RfVFlQRV9QTEFZRVJfQ09MT1JfQkFMQU5DRV9UWVBFCitnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfdHlwZQorCitHU1RfVFlQRV9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVIKK0dTVF9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVIKK0dTVF9JU19QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVIKK0dTVF9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVJfR0VUX0lOVEVSRkFDRQorZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9nZXRfdHlwZQorCitHU1RfVFlQRV9QTEFZRVJfVklERU9fUkVOREVSRVIKK0dTVF9JU19QTEFZRVJfVklERU9fUkVOREVSRVIKK0dTVF9QTEFZRVJfVklERU9fUkVOREVSRVIKK0dTVF9QTEFZRVJfVklERU9fUkVOREVSRVJfR0VUX0lOVEVSRkFDRQorZ3N0X3BsYXllcl92aWRlb19yZW5kZXJlcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyPC9GSUxFPgorZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXcKKworPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSCitHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0NBU1QKK0dTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfQ0xBU1MKK0dTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfR0VUX0NMQVNTCitHU1RfSVNfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSCitHU1RfSVNfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0NMQVNTCitHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIKKworZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9GSUxFPgorR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcgorCitnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3Citnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGUKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZQorCitnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlCisKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZQorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlCisKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSCitHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfQ0FTVAorR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX0NMQVNTCitHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfR0VUX0NMQVNTCitHU1RfSVNfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIKK0dTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9DTEFTUworR1NUX1RZUEVfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIKKworZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF90eXBlCisKKzwvU0VDVElPTj4KKworPFNFQ1RJT04+Cis8RklMRT5nc3RwbGF5ZXItdmlzdWFsaXphdGlvbjwvRklMRT4KK0dzdFBsYXllclZpc3VhbGl6YXRpb24KK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0Citnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWUKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9jb3B5Citnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZQorCis8U1VCU0VDVElPTiBTdGFuZGFyZD4KK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9nZXRfdHlwZQorPC9TRUNUSU9OPgorCis8U0VDVElPTj4KKzxGSUxFPmdzdHBsYXllci1tZWRpYWluZm88L0ZJTEU+CitHc3RQbGF5ZXJNZWRpYUluZm8KKworR3N0UGxheWVyU3RyZWFtSW5mbworR3N0UGxheWVyQXVkaW9JbmZvCitHc3RQbGF5ZXJWaWRlb0luZm8KK0dzdFBsYXllclN1YnRpdGxlSW5mbworCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyaQorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9kdXJhdGlvbgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZQorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0Citnc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGUKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfaW1hZ2Vfc2FtcGxlCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3MKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3QKKworZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXgKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHMKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3MKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZQorCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2JpdHJhdGUKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHMKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2UKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbWF4X2JpdHJhdGUKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGUKKworZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9iaXRyYXRlCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodAorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aAorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGUKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGUKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvCisKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2UKKzxTVUJTRUNUSU9OIFN0YW5kYXJkPgorR1NUX1BMQVlFUl9NRURJQV9JTkZPCitHU1RfSVNfUExBWUVSX01FRElBX0lORk8KK0dTVF9QTEFZRVJfTUVESUFfSU5GT19DTEFTUworR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPX0NMQVNTCitHU1RfVFlQRV9QTEFZRVJfTUVESUFfSU5GTworR3N0UGxheWVyTWVkaWFJbmZvQ2xhc3MKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdHlwZQorCitHU1RfUExBWUVSX1NUUkVBTV9JTkZPCitHU1RfSVNfUExBWUVSX1NUUkVBTV9JTkZPCitHU1RfUExBWUVSX1NUUkVBTV9JTkZPX0NMQVNTCitHU1RfSVNfUExBWUVSX1NUUkVBTV9JTkZPX0NMQVNTCitHU1RfVFlQRV9QTEFZRVJfU1RSRUFNX0lORk8KK0dzdFBsYXllclN0cmVhbUluZm9DbGFzcworZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdHlwZQorCitHU1RfUExBWUVSX0FVRElPX0lORk8KK0dTVF9JU19QTEFZRVJfQVVESU9fSU5GTworR1NUX1BMQVlFUl9BVURJT19JTkZPX0NMQVNTCitHU1RfSVNfUExBWUVSX0FVRElPX0lORk9fQ0xBU1MKK0dTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPCitHc3RQbGF5ZXJBdWRpb0luZm9DbGFzcworZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF90eXBlCisKK0dTVF9QTEFZRVJfVklERU9fSU5GTworR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPCitHU1RfUExBWUVSX1ZJREVPX0lORk9fQ0xBU1MKK0dTVF9JU19QTEFZRVJfVklERU9fSU5GT19DTEFTUworR1NUX1RZUEVfUExBWUVSX1ZJREVPX0lORk8KK0dzdFBsYXllclZpZGVvSW5mb0NsYXNzCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3R5cGUKKworR1NUX0lTX1BMQVlFUl9TVUJUSVRMRV9JTkZPCitHU1RfUExBWUVSX1NVQlRJVExFX0lORk8KK0dTVF9QTEFZRVJfU1VCVElUTEVfSU5GT19DTEFTUworR1NUX0lTX1BMQVlFUl9TVUJUSVRMRV9JTkZPX0NMQVNTCitHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTworR3N0UGxheWVyU3VidGl0bGVJbmZvQ2xhc3MKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfdHlwZQorPC9TRUNUSU9OPgorCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMudHlwZXMgYi9kb2NzL2xpYnMvZ3N0LXBsdWdpbnMtYmFkLWxpYnMudHlwZXMKaW5kZXggMmJmODgzZS4uZjdmNzYxZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2dzdC1wbHVnaW5zLWJhZC1saWJzLnR5cGVzCisrKyBiL2RvY3MvbGlicy9nc3QtcGx1Z2lucy1iYWQtbGlicy50eXBlcwpAQCAtNSw2ICs1LDcgQEAKICNpbmNsdWRlIDxnc3QvaW5zZXJ0YmluL2dzdGluc2VydGJpbi5oPgogI2luY2x1ZGUgPGdzdC9tcGVndHMvbXBlZ3RzLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9wbGF5ZXIuaD4KIAogZ3N0X21wZWd0c19zZWN0aW9uX2dldF90eXBlCiBnc3RfbXBlZ3RzX3NlY3Rpb25fdHlwZV9nZXRfdHlwZQpAQCAtMjYsMTcgKzI3LDM0IEBACiBnc3RfaW5zZXJ0X2Jpbl9nZXRfdHlwZQogCiAKLWdzdF9nbF9hbGxvY2F0b3JfZ2V0X3R5cGUKK2dzdF9nbF9idWZmZXJfYWxsb2NhdG9yX2dldF90eXBlCitnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZQorZ3N0X2dsX21lbW9yeV9wYm9fYWxsb2NhdG9yX2dldF90eXBlCiBnc3RfZ2xfYmFzZV9maWx0ZXJfZ2V0X3R5cGUKIGdzdF9nbF9idWZmZXJfcG9vbF9nZXRfdHlwZQogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZ2V0X3R5cGUKIGdzdF9nbF9jb250ZXh0X2dldF90eXBlCiBnc3RfZ2xfZGlzcGxheV9nZXRfdHlwZQotZ3N0X2dsX2Rvd25sb2FkX2dldF90eXBlCiBnc3RfZ2xfZmlsdGVyX2dldF90eXBlCiBnc3RfZ2xfZnJhbWVidWZmZXJfZ2V0X3R5cGUKIGdzdF9nbF9zaGFkZXJfZ2V0X3R5cGUKK2dzdF9nbHNsX3N0YWdlX2dldF90eXBlCiBnc3RfZ2xfdXBsb2FkX2dldF90eXBlCi1nc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X3R5cGUKK2dzdF9nbF92aWV3X2NvbnZlcnRfZ2V0X3R5cGUKIGdzdF9nbF93aW5kb3dfZ2V0X3R5cGUKIAorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF90eXBlCitnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfdHlwZQorZ3N0X3BsYXllcl9lcnJvcl9nZXRfdHlwZQorZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9nZXRfdHlwZQorZ3N0X3BsYXllcl9nZXRfdHlwZQorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90eXBlCitnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlCitnc3RfcGxheWVyX3N0YXRlX2dldF90eXBlCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90eXBlCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X3R5cGUKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfdHlwZQorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF90eXBlCitnc3RfcGxheWVyX3ZpZGVvX3JlbmRlcmVyX2dldF90eXBlCitnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZ2V0X3R5cGUKKwpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xCYXNlRmlsdGVyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbAppbmRleCA4Y2M0MzBiLi5lYTZmZjYxIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xCYXNlRmlsdGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIiB0aXRsZT0iR3N0RUdMSW1hZ2VNZW1vcnkiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJHc3RHTEZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xGaWx0ZXIiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjEsMjEgKzIxLDIxIEBACiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTEZpbHRlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+CiA8dGQgdmFsaWduPSJ0b3AiPgogPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIudG9wX29mX3BhZ2UiPjwvYT5Hc3RHTEJhc2VGaWx0ZXI8L3NwYW4+PC9oMj4KLTxwPkdzdEdMQmFzZUZpbHRlcjwvcD4KKzxwPkdzdEdMQmFzZUZpbHRlciDigJQgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCYXNlVHJhbnNmb3JtPC9zcGFuPjwvYT4gc3ViY2xhc3MgZm9yIHRyYW5zZm9ybWluIE9wZW5HTCByZXNvdXJjZXM8L3A+CiA8L3RkPgogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xCYXNlRmlsdGVyLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUxLDcgKzUxLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xCYXNlRmlsdGVyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04MSw2ICs4MSwxMCBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xCYXNlRmlsdGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlRmlsdGVyPC9zcGFuPjwvYT4gaGFuZGxlcyB0aGUgbml0dHkgZ3JpdHR5IGRldGFpbHMgb2YgcmV0cmlldmluZyBhbiBPcGVuR0wKK2NvbnRleHQuICBJdCBhbHNvIHByb3ZpZGVkIHNvbWUgd3JhcHBlcnMgYXJvdW5kIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QmFzZVRyYW5zZm9ybTwvc3Bhbj48L2E+J3MKKzxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RhcnQoKTwvY29kZT4sIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+c3RvcCgpPC9jb2RlPiBhbmQgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5zZXRfY2FwcygpPC9jb2RlPiB2aXJ0dWFsIG1ldGhvZHMgdGhhdCBlbnN1cmUgYW4gT3BlbkdMIGNvbnRleHQKK2lzIGF2YWlsYWJsZSBhbmQgY3VycmVudCBpbiB0aGUgY2FsbGluZyB0aHJlYWQuPC9wPgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXIuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KQEAgLTkxLDExICs5NSw5IEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXItc3RydWN0Ij48L2E+PGgzPkdzdEdMQmFzZUZpbHRlcjwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQmFzZUZpbHRlciBHc3RHTEJhc2VGaWx0ZXI7PC9wcmU+Ci08cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCYXNlRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VGaWx0ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VGaWx0ZXI8L3NwYW4+PC9hPiBpcyBhIGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyB0aGUgbG9naWMgb2YgZ2V0dGluZyB0aGUKLUdMIGNvbnRleHQgZnJvbSB0aGUgcGlwZWxpbmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS40LjguMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTQsMTMgKzExNiwxMiBAQAogCiAgIGdib29sZWFuICgqZ2xfc3RhcnQpICAgICAgICAgIChHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlcik7CiAgIHZvaWQgICAgICgqZ2xfc3RvcCkgICAgICAgICAgIChHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlcik7Ci0KLSAgZ3BvaW50ZXIgX3BhZGRpbmdbR1NUX1BBRERJTkddOworICBnYm9vbGVhbiAoKmdsX3NldF9jYXBzKSAgICAgICAoR3N0R0xCYXNlRmlsdGVyICpmaWx0ZXIsIEdzdENhcHMgKiBpbmNhcHMsIEdzdENhcHMgKiBvdXRjYXBzKTsKIH0gR3N0R0xCYXNlRmlsdGVyQ2xhc3M7CiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE0LjguMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuNC44LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTI5LDEzICsxMzAsMTMgQEAKIDx0Ym9keT4KIDx0cj4KIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXItbGlicy9odG1sL0dzdEJhc2VUcmFuc2Zvcm0uaHRtbCNHc3RCYXNlVHJhbnNmb3JtQ2xhc3MiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCYXNlVHJhbnNmb3JtQ2xhc3M8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlRmlsdGVyQ2xhc3MucGFyZW50LWNsYXNzIj48L2E+cGFyZW50X2NsYXNzPC9jb2RlPjwvZW0+OzwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnBhcmVudCBjbGFzczwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIiB0aXRsZT0iZW51bSBHc3RHTEFQSSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQVBJPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlckNsYXNzLnN1cHBvcnRlZC1nbC1hcGkiPjwvYT5zdXBwb3J0ZWRfZ2xfYXBpPC9jb2RlPjwvZW0+OzwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBsb2dpY2FsLU9SIG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIiB0aXRsZT0iZW51bSBHc3RHTEFQSSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQVBJPC9zcGFuPjwvYT4ncyBzdXBwb3J0ZWQgYnkgdGhpcyBlbGVtZW50PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlRmlsdGVyQ2xhc3MuZ2wtc3RhcnQiPjwvYT5nbF9zdGFydDwvY29kZT48L2VtPsKgKCk8L3A+PC90ZD4KQEAgLTE0OCw5ICsxNDksMTAgQEAKIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VGaWx0ZXJDbGFzcy4tcGFkZGluZyI+PC9hPl9wYWRkaW5nPC9jb2RlPjwvZW0+W0dTVF9QQURESU5HXTs8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQmFzZUZpbHRlckNsYXNzLmdsLXNldC1jYXBzIj48L2E+Z2xfc2V0X2NhcHM8L2NvZGU+PC9lbT7CoCgpPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkIHdoZW4gY2FwcyBhcmUgc2V0IG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5maWx0ZXI8L2NvZGU+PC9lbT4KKy48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtMTY2LDYgKzE2OCwxMCBAQAogPHA+RmxhZ3M6IFJlYWQ8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xCYXNlRmlsdGVyLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QmFzZVRyYW5zZm9ybTwvc3Bhbj48L2E+PC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL0dzdEdMQnVmZmVyUG9vbC5odG1sIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xCdWZmZXJQb29sLmh0bWwKaW5kZXggODRhOTZmMy4uOTVhMzc2NSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvR3N0R0xCdWZmZXJQb29sLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xCdWZmZXJQb29sLmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMQnVmZmVyUG9vbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCIgdGl0bGU9IkdzdEdMQVBJIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CkBAIC0yMCw3ICsyMCw3IEBACiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CkBAIC0yOCw0MiArMjgsNjAgQEAKIDxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgogPHRkIHZhbGlnbj0idG9wIj4KIDxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iR3N0R0xCdWZmZXJQb29sLnRvcF9vZl9wYWdlIj48L2E+R3N0R0xCdWZmZXJQb29sPC9zcGFuPjwvaDI+Ci08cD5Hc3RHTEJ1ZmZlclBvb2wg4oCUIGJ1ZmZlciBwb29sIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiBvYmplY3RzPC9wPgorPHA+R3N0R0xCdWZmZXJQb29sIOKAlCBidWZmZXIgcG9vbCBmb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gb2JqZWN0czwvcD4KIDwvdGQ+CiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJ1ZmZlclBvb2wuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KIDwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgorPHRib2R5PgorPHRyPgogPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlclBvb2wuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RCdWZmZXJQb29sPC9zcGFuPjwvYT7CoCoKIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1nbC1idWZmZXItcG9vbC1uZXciIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3wqAoKSI+Z3N0X2dsX2J1ZmZlcl9wb29sX25ldzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+Ci08L3RyPjwvdGJvZHk+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtYnVmZmVyLXBvb2wtY29uZmlnLWdldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyIgdGl0bGU9ImdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zwqAoKSI+Z3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtYnVmZmVyLXBvb2wtY29uZmlnLXNldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyIgdGl0bGU9ImdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zwqAoKSI+Z3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJ1ZmZlclBvb2wub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+CiA8dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbC1zdHJ1Y3QiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPkdzdEdMQnVmZmVyUG9vbDwvYT48L3RkPgogPC90cj4KIDx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbENsYXNzIiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyUG9vbENsYXNzIj5Hc3RHTEJ1ZmZlclBvb2xDbGFzczwvYT48L3RkPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2xDbGFzcyIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbENsYXNzIj5Hc3RHTEJ1ZmZlclBvb2xDbGFzczwvYT48L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtNzksNyArOTcsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJ1ZmZlclBvb2wuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgotPHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiBpcyBhbiBvYmplY3QgdGhhdCBhbGxvY2F0ZXMgYnVmZmVycyB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgorPHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiBpcyBhbiBvYmplY3QgdGhhdCBhbGxvY2F0ZXMgYnVmZmVycyB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgogPHA+QSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiBpcyBjcmVhdGVkIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1nbC1idWZmZXItcG9vbC1uZXciIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3KCk8L2NvZGU+PC9hPjwvcD4KIDxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbDwvc3Bhbj48L2E+IGltcGxlbWVudHMgdGhlIFZpZGVvTWV0YSBidWZmZXIgcG9vbCBvcHRpb24gCiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtR3N0VmlkZW9Qb29sLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1WSURFTy1NRVRBOkNBUFMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX01FVEE8L3NwYW4+PC9hPjwvcD4KQEAgLTkxLDggKzEwOSw4IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyUG9vbC5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX2J1ZmZlcl9wb29sX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjMuNy4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS42LjcuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA2LDMxICsxMjQsOTEgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjMuNy4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gYSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXJQb29sLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXJQb29sPC9zcGFuPjwvYT4gdGhhdCBhbGxvY2F0ZXMgYnVmZmVycyB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgorPGEgbmFtZT0iaWQtMS4yLjkuNi43LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlclBvb2wuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiB0aGF0IGFsbG9jYXRlcyBidWZmZXJzIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWJ1ZmZlci1wb29sLWNvbmZpZy1nZXQtZ2wtYWxsb2NhdGlvbi1wYXJhbXMiPjwvYT48aDM+Z3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFN0cnVjdHVyZS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0U3RydWN0dXJlPC9zcGFuPjwvYT4gKmNvbmZpZzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS42LjcuMy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29uZmlnPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBidWZmZXIgcG9vbCBjb25maWc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS42LjcuMy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBjdXJyZW50bHkgc2V0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1idWZmZXItcG9vbC1jb25maWctc2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIj48L2E+PGgzPmdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFN0cnVjdHVyZS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0U3RydWN0dXJlPC9zcGFuPjwvYT4gKmNvbmZpZzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZXRzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wYXJhbXM8L2NvZGU+PC9lbT4KKyBvbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uZmlnPC9jb2RlPjwvZW0+Cis8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS42LjcuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb25maWc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIGJ1ZmZlciBwb29sIGNvbmZpZzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+LiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEJ1ZmZlclBvb2wub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbC1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdEdMQnVmZmVyUG9vbDwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEdMQnVmZmVyUG9vbDs8L3ByZT4KKzxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbC1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xCdWZmZXJQb29sPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xCdWZmZXJQb29sIEdzdEdMQnVmZmVyUG9vbDs8L3ByZT4KIDxwPk9wYXF1ZSBHc3RHTEJ1ZmZlclBvb2wgc3RydWN0PC9wPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RHTEJ1ZmZlclBvb2xDbGFzcyI+PC9hPjxoMz5zdHJ1Y3QgR3N0R0xCdWZmZXJQb29sQ2xhc3M8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RHTEJ1ZmZlclBvb2xDbGFzcyB7Cis8YSBuYW1lPSJHc3RHTEJ1ZmZlclBvb2xDbGFzcyI+PC9hPjxoMz5Hc3RHTEJ1ZmZlclBvb2xDbGFzczwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgewogICBHc3RCdWZmZXJQb29sQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKK30gR3N0R0xCdWZmZXJQb29sQ2xhc3M7CiA8L3ByZT4KLTxwPlRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sQ2xhc3MiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xCdWZmZXJQb29sQ2xhc3MiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlclBvb2xDbGFzczwvc3Bhbj48L2E+IHN0cnVjdHVyZSBjb250YWlucyBvbmx5IHByaXZhdGUgZGF0YTwvcD4KKzxwPlRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sQ2xhc3MiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2xDbGFzcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbENsYXNzPC9zcGFuPjwvYT4gc3RydWN0dXJlIGNvbnRhaW5zIG9ubHkgcHJpdmF0ZSBkYXRhPC9wPgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQnVmZmVyUG9vbC5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Ci08cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXJQb29sLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXJQb29sPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgorPHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyUG9vbC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyUG9vbDwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xDb2xvckNvbnZlcnQuaHRtbCBiL2RvY3MvbGlicy9odG1sL0dzdEdMQ29sb3JDb252ZXJ0Lmh0bWwKaW5kZXggOWZkNmFkMC4uOTA4MjYyYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvR3N0R0xDb2xvckNvbnZlcnQuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTENvbG9yQ29udmVydC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xDb2xvckNvbnZlcnQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQ29sb3JDb252ZXJ0LmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC02Niw2ICs2NiwyMiBAQAogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2Fwczwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LWZpeGF0ZS1jYXBzIiB0aXRsZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHPCoCgpIj5nc3RfZ2xfY29sb3JfY29udmVydF9maXhhdGVfY2FwczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LWRlY2lkZS1hbGxvY2F0aW9uIiB0aXRsZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVjaWRlX2FsbG9jYXRpb27CoCgpIj5nc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+wqAqCiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KQEAgLTc3LDcgKzkzLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xDb2xvckNvbnZlcnQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTExNSw4ICsxMzEsNiBAQAogPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29sb3JDb252ZXJ0PC9zcGFuPjwvYT4gaXMgYW4gb2JqZWN0IHRoYXQgY29udmVydHMgYmV0d2VlbiBjb2xvciBzcGFjZXMgYW5kL29yCiBmb3JtYXRzIHVzaW5nIE9wZW5HTCBTaGFkZXJzLjwvcD4KIDxwPkEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29sb3JDb252ZXJ0PC9zcGFuPjwvYT4gY2FuIGJlIGNyZWF0ZWQgd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1uZXciIHRpdGxlPSJnc3RfZ2xfY29sb3JfY29udmVydF9uZXfCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9jb2xvcl9jb252ZXJ0X25ldygpPC9jb2RlPjwvYT4uPC9wPgotPHA+Rm9yIGhhbmRsaW5nIHN0cmlkZSBzY2FsaW5nIGluIHRoZSBzaGFkZXIsIHNlZQotPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfY29sb3JfY29udmVydF9zZXRfdGV4dHVyZV9zY2FsaW5nKCk8L2NvZGU+LjwvcD4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xDb2xvckNvbnZlcnQuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KQEAgLTEyNSw4ICsxMzksOCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sIiB0aXRsZT0iR3N0R0xDb2xvckNvbnZlcnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xDb2xvckNvbnZlcnQ8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNC43LjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjcuNy4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDAsNyArMTU0LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjQuNy4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS43LjcuMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sIiB0aXRsZT0iR3N0R0xDb2xvckNvbnZlcnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbG9yQ29udmVydDwvc3Bhbj48L2E+IG9iamVjdDwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xNTQsOCArMTY4LDggQEAKIDxwPkluaXRpYWxpemVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb252ZXJ0PC9jb2RlPjwvZW0+CiAgd2l0aCB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGNvbnZlcnNpb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNC43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjcuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xOTIsNiArMjA2LDIzIEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1jb2xvci1jb252ZXJ0LWZpeGF0ZS1jYXBzIj48L2E+PGgzPmdzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9jYXBzwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udmVydDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0UGFkLmh0bWwjR3N0UGFkRGlyZWN0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGFkRGlyZWN0aW9uPC9zcGFuPjwvYT4gZGlyZWN0aW9uPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RDYXBzPC9zcGFuPjwvYT4gKmNhcHM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENhcHM8L3NwYW4+PC9hPiAqb3RoZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtY29sb3ItY29udmVydC1kZWNpZGUtYWxsb2NhdGlvbiI+PC9hPjxoMz5nc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29sb3JDb252ZXJ0PC9zcGFuPjwvYT4gKmNvbnZlcnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RRdWVyeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UXVlcnk8L3NwYW4+PC9hPiAqcXVlcnk8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJnc3QtZ2wtY29sb3ItY29udmVydC1wZXJmb3JtIj48L2E+PGgzPmdzdF9nbF9jb2xvcl9jb252ZXJ0X3BlcmZvcm3CoCgpPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfcGVyZm9ybSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbG9yQ29udmVydC5odG1sIiB0aXRsZT0iR3N0R0xDb2xvckNvbnZlcnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbG9yQ29udmVydDwvc3Bhbj48L2E+ICpjb252ZXJ0PC9jb2RlPjwvZW0+LApAQCAtMjAwLDggKzIzMSw4IEBACiAgdXNpbmcgdGhlIGZvcm1hdHMgc3BlY2lmaWVkIGJ5IHRoZQogPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT5zIHBhc3NlZCB0byA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1zZXQtY2FwcyIgdGl0bGU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfY29sb3JfY29udmVydF9zZXRfY2FwcygpPC9jb2RlPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS40LjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuNy43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIyMiw3ICsyNTMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNC43LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjcuNy43LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gYSBjb252ZXJ0ZWQgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiU8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMjU4LDcgKzI4OSw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQ29sb3JDb252ZXJ0LnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KLTxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPjwvcD4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xDb250ZXh0Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTENvbnRleHQuaHRtbAppbmRleCA0NjM3N2QyLi5iY2E2OWQxIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTENvbnRleHQuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTENvbnRleHQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMQ29udGV4dDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMQ29udGV4dC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMTE4LDYgKzExOCwxNCBAQAogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXByb2MtYWRkcmVzcy13aXRoLXBsYXRmb3JtIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+wqAqCiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KQEAgLTIwOSw2ICsyMTcsMjIgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1pcy1zaGFyZWQiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9pc19zaGFyZWTCoCgpIj5nc3RfZ2xfY29udGV4dF9pc19zaGFyZWQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtc2hhcmVkLXdpdGgiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGjCoCgpIj5nc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGg8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZmVhdHVyZSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmXCoCgpIj5nc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CkBAIC0yNDksNyArMjczLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xDb250ZXh0Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0zMDMsOCArMzI3LDggQEAKICBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRhdGE8L2NvZGU+PC9lbT4KIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzMzLDggKzM1Nyw4IEBACiA8cD5DcmVhdGUgYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gd2l0aCB0aGUgc3BlY2lmaWVkIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kaXNwbGF5PC9jb2RlPjwvZW0+CiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM0OCw3ICszNzIsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy41LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KQEAgLTM2Myw4ICszODcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTEFQSSIgdGl0bGU9ImVudW0gR3N0R0xBUEkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFQSTwvc3Bhbj48L2E+IGF2YWlsYWJsZV9hcGlzPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPldyYXBzIGFuIGV4aXN0aW5nIE9wZW5HTCBjb250ZXh0IGludG8gYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM5Nyw3ICs0MjEsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy42LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiB3cmFwcGluZyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aGFuZGxlPC9jb2RlPjwvZW0+CiA8L3A+CiA8L2Rpdj4KQEAgLTQxOSw4ICs0NDMsOCBAQAogb2YgdGhlIGVycm9yIGFuZCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IHdpbGwgYmUgcmV0dXJuZWQuPC9wPgogPHA+U2hvdWxkIG9ubHkgYmUgY2FsbGVkIG9uY2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjcuNyI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy43LjciPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NDYsNyArNDcwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy43LjgiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuNy44Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHdoZXRoZXIgdGhlIGNvbnRleHQgY291bGQgc3VjY2Vzc2Z1bGx5IGJlIGNyZWF0ZWQ8L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KQEAgLTQ2MCw4ICs0ODQsOCBAQAogPHA+U2hvdWxkIG9ubHkgYmUgY2FsbGVkIGFmdGVyIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1jcmVhdGUiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9jcmVhdGXCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9jb250ZXh0X2NyZWF0ZSgpPC9jb2RlPjwvYT4gaGFzIGJlZW4gc3VjY2Vzc2Z1bGx5CiBjYWxsZWQgZm9yIHRoaXMgY29udGV4dC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuOC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjguNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ4Nyw4ICs1MTEsOCBAQAogPHA+SW4gT3BlbkdMIHRlcm1zLCBjYWxscyBlZ2xNYWtlQ3VycmVudCBvciBzaW1pbGFyIHdpdGggdGhpcyBjb250ZXh0IGFuZCB0aGUKIGN1cnJlbnRseSBzZXQgd2luZG93LiAgU2VlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtd2luZG93IiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfc2V0X3dpbmRvd8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2NvbnRleHRfc2V0X3dpbmRvdygpPC9jb2RlPjwvYT4gZm9yIGRldGFpbHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjkuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy45LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01MDksNyArNTMzLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy45LjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuOS43Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFdoZXRoZXIgdGhlIGFjdGl2YXRpb24gc3VjY2VlZGVkPC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjQ8L3A+CkBAIC01MzQsOCArNTU4LDggQEAKIDxwPlBsYXRmb3JtIHNwZWNmaWMgZnVuY3Rpb25zIChuYW1lcyBzdGFydGluZyAnZWdsJywgJ2dsWCcsICd3Z2wnLCBldGMpIGNhbiBhbHNvCiBiZSByZXRyaWV2ZWQgdXNpbmcgdGhpcyBtZXRob2QuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjExLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTEuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU1NiwxOSArNTgwLDI4IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTEuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xMS43Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IGEgZnVuY3Rpb24gcG9pbnRlciBvciBOVUxMPC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjQ8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3Mtd2l0aC1wbGF0Zm9ybSI+PC9hPjxoMz5nc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzX3dpdGhfcGxhdGZvcm3CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPgorZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTFBsYXRmb3JtIiB0aXRsZT0iZW51bSBHc3RHTFBsYXRmb3JtIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xQbGF0Zm9ybTwvc3Bhbj48L2E+IGNvbnRleHRfdHlwZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIiB0aXRsZT0iZW51bSBHc3RHTEFQSSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQVBJPC9zcGFuPjwvYT4gZ2xfYXBpPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LWdldC13aW5kb3ciPjwvYT48aDM+Z3N0X2dsX2NvbnRleHRfZ2V0X3dpbmRvd8KgKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPsKgKgogZ3N0X2dsX2NvbnRleHRfZ2V0X3dpbmRvdyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4xMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjEzLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01ODIsNyArNjE1LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4xMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjEzLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gdGhlIGN1cnJlbnRseSBzZXQgd2luZG93PC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjQ8L3A+CkBAIC02MDAsOCArNjMzLDggQEAKICBpcyBub3QKIGFscmVhZHkgcnVubmluZy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjIyLDcgKzY1NSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMTMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4xNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFdoZXRoZXIgdGhlIHdpbmRvdyB3YXMgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQ8L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KQEAgLTY0MCw4ICs2NzMsOCBAQAogPC9wPgogPHA+TVQtc2FmZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4xNC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjE1LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NzUsOCArNzA4LDggQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT7CoCoKIGdzdF9nbF9jb250ZXh0X2dldF9kaXNwbGF5ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE1LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY5MCw3ICs3MjMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE1LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gYXNzb2NpYXRlZCB3aXRoIHRoaXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIDwvcD4KIDwvZGl2PgpAQCAtNzA1LDggKzczOCw4IEBACiA8cD5UaGUgY3VycmVudGx5IGF2YWlsYWJsZSBBUEkgbWF5IGJlIGxpbWl0ZWQgYnkgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+IGluIHVzZSBhbmQvb3IKIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiBjaG9zZW4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE2LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTcuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTcyMCw3ICs3NTMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE2LjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTcuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgYXZhaWxhYmxlIE9wZW5HTCBhcGk8L3A+CiA8L2Rpdj4KIDxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KQEAgLTczMyw4ICs3NjYsOCBAQAogPHA+R2V0cyB0aGUgYmFja2luZyBPcGVuR0wgY29udGV4dCB1c2VkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE3LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc0OCw3ICs3ODEsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE3LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBUaGUgcGxhdGZvcm0gc3BlY2lmaWMgYmFja2luZyBPcGVuR0wgY29udGV4dDwvcD4KIDwvZGl2PgogPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgpAQCAtNzYxLDggKzc5NCw4IEBACiA8cD5HZXRzIHRoZSBPcGVuR0wgcGxhdGZvcm0gdGhhdCB1c2VkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc3Niw3ICs4MDksNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE4LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMTkuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBUaGUgcGxhdGZvcm0gc3BlY2lmaWMgYmFja2luZyBPcGVuR0wgY29udGV4dDwvcD4KIDwvZGl2PgogPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS40PC9wPgpAQCAtNzg1LDEwICs4MTgsMTAgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LWdldC1jdXJyZW50LWdsLWNvbnRleHQiPjwvYT48aDM+Z3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfY29udGV4dMKgKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludHB0ciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludHB0cjwvc3Bhbj48L2E+Ci1nc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9jb250ZXh0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xQbGF0Zm9ybSIgdGl0bGU9ImVudW0gR3N0R0xQbGF0Zm9ybSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMUGxhdGZvcm08L3NwYW4+PC9hPiBwbGF0Zm9ybTwvY29kZT48L2VtPik7PC9wcmU+Citnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9jb250ZXh0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xQbGF0Zm9ybSIgdGl0bGU9ImVudW0gR3N0R0xQbGF0Zm9ybSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMUGxhdGZvcm08L3NwYW4+PC9hPiBjb250ZXh0X3R5cGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE5LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjAuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgwMiw3ICs4MzUsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjE5LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjAuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBUaGUgT3BlbkdMIGNvbnRleHQgaGFuZGxlIGN1cnJlbnQgaW4gdGhlIGNhbGxpbmcgdGhyZWFkIG9yIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+PC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjY8L3A+CkBAIC04MTksOCArODUyLDggQEAKICBhcmVuJ3QgbW9kaWZpZWQgYW5kIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktTk9ORTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX0FQSV9OT05FPC9jb2RlPjwvYT4gaXMKIHJldHVybmVkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4yMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjIxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC04NDYsNyArODc5LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4yMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjIxLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gVGhlIHZlcnNpb24gc3VwcG9ydGVkIGJ5IHRoZSBPcGVuR0wgY29udGV4dCBjdXJyZW50IGluIHRoZSBjYWxsaW5nCiB0aHJlYWQgb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1OT05FOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfQVBJX05PTkU8L2NvZGU+PC9hPjwvcD4KIDwvZGl2PgpAQCAtODU4LDggKzg5MSw4IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1UaHJlYWRzLmh0bWwjR1RocmVhZCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HVGhyZWFkPC9zcGFuPjwvYT7CoCoKIGdzdF9nbF9jb250ZXh0X2dldF90aHJlYWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjEuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODczLDcgKzkwNiw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjEuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IFRoZSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVRocmVhZHMuaHRtbCNHVGhyZWFkIj48c3BhbiBjbGFzcz0idHlwZSI+R1RocmVhZDwvc3Bhbj48L2E+LCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29udGV4dDwvY29kZT48L2VtPgogaXMgY3VycmVudCBpbiBvciBOVUxMLiA8L3A+CiA8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KQEAgLTg4OCw4ICs5MjEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKm90aGVyX2NvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+Tm90ZTogVGhpcyB3aWxsIGFsd2F5cyBmYWlsIGZvciB0d28gd3JhcHBlZCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPidzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjIyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkxMCw3ICs5NDMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjIyLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB3aGV0aGVyIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CiBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm90aGVyX2NvbnRleHQ8L2NvZGU+PC9lbT4KIGFyZSBhYmxlIHRvIHNoYXJlIE9wZW5HTApAQCAtOTIwLDYgKzk1Myw2NSBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtY29udGV4dC1pcy1zaGFyZWQiPjwvYT48aDM+Z3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBXaGV0aGVyIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiBoYXMgYmVlbiBzaGFyZWQgd2l0aCBhbm90aGVyIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LXNldC1zaGFyZWQtd2l0aCI+PC9hPjxoMz5nc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGjCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGggKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpzaGFyZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5XaWxsIGludGVybmFsbHkgc2V0IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CisgYXMgc2hhcmVkIHdpdGggPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYXJlPC9jb2RlPjwvZW0+Cis8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgd3JhcHBlZCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFyZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmFub3RoZXIgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iZ3N0LWdsLWNvbnRleHQtY2hlY2stZmVhdHVyZSI+PC9hPjxoMz5nc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlwqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKQEAgLTkyNyw4ICsxMDE5LDggQEAKIDxwPlNvbWUgZmVhdHVyZXMgcmVxdWlyZSB0aGF0IHRoZSBjb250ZXh0IGJlIGNyZWF0ZWQgYmVmb3JlIGl0IGlzIHBvc3NpYmxlIHRvCiBkZXRlcm1pbmUgdGhlaXIgZXhpc3RlbmNlIGFuZCBzbyB3aWxsIGZhaWwgaWYgdGhhdCBpcyBub3QgdGhlIGNhc2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjIzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk0OSw3ICsxMDQxLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjUuNy4yMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuOC43LjI2LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gV2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZmVhdHVyZTwvY29kZT48L2VtPgogaXMgc3VwcG9ydGVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CiA8L3A+CkBAIC05NjUsOCArMTA1Nyw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gbWFqPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IG1pbjwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTk3LDcgKzEwODksNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjI0LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB3aGV0aGVyIE9wZW5HTCBjb250ZXh0IGltcGxlbWVudHMgdGhlIHJlcXVpcmVkIGFwaSBhbmQgc3BlY2lmaWVkCiB2ZXJzaW9uLjwvcD4KIDwvZGl2PgpAQCAtMTAxNiw4ICsxMTA4LDggQEAKIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjI1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwNTUsOCArMTE0Nyw4IEBACiBjb250ZXh0IGluIHRoZSBjdXJyZW50IHRocmVhZC4gIFR5cGljYWxseSB1c2VkIHdpdGggd3JhcHBlZCBjb250ZXh0cyB0bwogYWxsb3cgd3JhcHBlZCBjb250ZXh0cyB0byBiZSB1c2VkIGFzIHJlZ3VsYXIgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4ncy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS41LjcuMjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguNy4yOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA3OCw3ICsxMTcwLDcgQEAKIGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnZvaWQ8L3NwYW4+PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNlZSBhbHNvIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1hY3RpdmF0ZSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2FjdGl2YXRlwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfY29udGV4dF9hY3RpdmF0ZSgpPC9jb2RlPjwvYT4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS43LjI3LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS44LjcuMzAuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gYWN0aXZlIGluIHRoZSBjdXJyZW50IHRocmVhZCBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPjwvcD4KIDwvZGl2PgogPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS42PC9wPgpAQCAtMTA4OSw4ICsxMTgxLDggQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEdMQ29udGV4dEVycm9yIj48L2E+PGgzPmVudW0gR3N0R0xDb250ZXh0RXJyb3I8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuNS44LjIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjguOC4yLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xEaXNwbGF5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTERpc3BsYXkuaHRtbAppbmRleCAzY2M5MmYyLi42ZDRiYzM5IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTERpc3BsYXkuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTERpc3BsYXkuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xEaXNwbGF5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRXR0wuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dFdHTCI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIiB0aXRsZT0iR3N0RUdMSW1hZ2VNZW1vcnkiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KIDwvaGVhZD4KQEAgLTIyLDcgKzIyLDcgQEAKIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRXR0wuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KIDxhIG5hbWU9IkdzdEdMRGlzcGxheSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTERpc3BsYXkuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEwMiw2ICsxMDIsMTQgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCNnc3QtZ2wtZGlzcGxheS1jcmVhdGUtY29udGV4dCIgdGl0bGU9ImdzdF9nbF9kaXNwbGF5X2NyZWF0ZV9jb250ZXh0wqAoKSI+Z3N0X2dsX2Rpc3BsYXlfY3JlYXRlX2NvbnRleHQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWNvbnRleHQtZ2V0LWdsLWRpc3BsYXkiIHRpdGxlPSJnc3RfY29udGV4dF9nZXRfZ2xfZGlzcGxhecKgKCkiPmdzdF9jb250ZXh0X2dldF9nbF9kaXNwbGF5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CkBAIC0xMTgsNyArMTI2LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xEaXNwbGF5LnNpZ25hbHMiPjwvYT48aDI+U2lnbmFsczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ic2lnbmFsc19yZXR1cm4iPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzaWduYWxzX25hbWUiPgpAQCAtMTM0LDcgKzE0Miw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMRGlzcGxheS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTkzLDcgKzIwMSw3IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+wqAqCiBnc3RfZ2xfZGlzcGxheV9uZXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC4yLjQiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjIuNCI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPi4gPC9wPgogPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+CiA8L2Rpdj4KQEAgLTIwNSw4ICsyMTMsOCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCNHc3RHTERpc3BsYXlUeXBlIiB0aXRsZT0iZW51bSBHc3RHTERpc3BsYXlUeXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMRGlzcGxheVR5cGU8L3NwYW4+PC9hPgogZ3N0X2dsX2Rpc3BsYXlfZ2V0X2hhbmRsZV90eXBlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gKmRpc3BsYXk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC4zLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIyMCw3ICsyMjgsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTEuOC4zLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sI0dzdEdMRGlzcGxheVR5cGUiIHRpdGxlPSJlbnVtIEdzdEdMRGlzcGxheVR5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXlUeXBlPC9zcGFuPjwvYT4gb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRpc3BsYXk8L2NvZGU+PC9lbT4KIDwvcD4KIDwvZGl2PgpAQCAtMjMxLDE1ICsyMzksMTUgQEAKIDxhIG5hbWU9ImdzdC1nbC1kaXNwbGF5LWZpbHRlci1nbC1hcGkiPjwvYT48aDM+Z3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwacKgKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIGdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPiAqZGlzcGxheTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTEFQSSIgdGl0bGU9ImVudW0gR3N0R0xBUEkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFQSTwvc3Bhbj48L2E+IGFwaTwvY29kZT48L2VtPik7PC9wcmU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiIHRpdGxlPSJlbnVtIEdzdEdMQVBJIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBUEk8L3NwYW4+PC9hPiBnbF9hcGk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+bGltaXQgdGhlIHVzZSBvZiBPcGVuR0wgdG8gdGhlIHJlcXVlc3RlZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Z2xfYXBpPC9jb2RlPjwvZW0+CiAuICBUaGlzIGlzIGludGVuZGVkIHRvIGFsbG93CiBhcHBsaWNhdGlvbiBhbmQgZWxlbWVudHMgdG8gcmVxdWVzdCBhIHNwZWNpZmljIHNldCBvZiBPcGVuR0wgQVBJJ3MgYmFzZWQgb24KIHdoYXQgdGhleSBzdXBwb3J0LiAgU2VlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZ2wtYXBpIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwacKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSgpPC9jb2RlPjwvYT4gZm9yIHRoZSByZXRyZWl2aW5nIHRoZQogQVBJIHN1cHBvcnRlZCBieSBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNjcsOCArMjc1LDggQEAKIGdzdF9nbF9kaXNwbGF5X2dldF9nbF9hcGkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEaXNwbGF5Lmh0bWwiIHRpdGxlPSJHc3RHTERpc3BsYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERpc3BsYXk8L3NwYW4+PC9hPiAqZGlzcGxheTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5zZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWZpbHRlci1nbC1hcGkiIHRpdGxlPSJnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpKCk8L2NvZGU+PC9hPiBmb3Igd2hhdCB0aGUgcmV0dXJuZWQgdmFsdWUgcmVwcmVzZW50czwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yODIsNyArMjkwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC41LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIiB0aXRsZT0iZW51bSBHc3RHTEFQSSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQVBJPC9zcGFuPjwvYT4gY29uZmlndXJlZCBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRpc3BsYXk8L2NvZGU+PC9lbT4KIDwvcD4KIDwvZGl2PgpAQCAtMjk0LDggKzMwMiw4IEBACiBnc3RfZ2xfZGlzcGxheV9hZGRfY29udGV4dCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+ICpkaXNwbGF5PC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS44LjYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzE2LDcgKzMyNCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS44LjYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHdoZXRoZXIgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIHdhcyBzdWNjZXNzZnVsbHkgYWRkZWQuIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gbWF5IGJlIHJldHVybmVkCiBpZiB0aGVyZSBhbHJlYWR5IGV4aXN0cyBhbm90aGVyIGNvbnRleHQgZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CkBAIC0zMzMsOCArMzQxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+ICpkaXNwbGF5PC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1UaHJlYWRzLmh0bWwjR1RocmVhZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdUaHJlYWQ8L3NwYW4+PC9hPiAqdGhyZWFkPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC43LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNTUsNyArMzYzLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguNy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC43LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IGN1cnJlbnQgb24gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRocmVhZDwvY29kZT48L2VtPgogb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT48L3A+CiA8cD5NdXN0IGJlIGNhbGxlZCB3aXRoIHRoZSBvYmplY3QgbG9jayBoZWxkLiA8L3A+CkBAIC0zNzEsMTMgKzM3OSw2MCBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtZGlzcGxheS1jcmVhdGUtY29udGV4dCI+PC9hPjxoMz5nc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+ICpkaXNwbGF5PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqb3RoZXJfY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKipwX2NvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT4gKiplcnJvcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5JdCByZXF1aXJlcyB0aGUgZGlzcGxheSdzIG9iamVjdCBsb2NrIHRvIGJlIGhlbGQuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmRpc3BsYXk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRGlzcGxheTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm90aGVyX2NvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5vdGhlciA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiB0byBzaGFyZSByZXNvdXJjZXMgd2l0aC48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cF9jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+cmVzdWx0aW5nIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVycm9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+cmVzdWx0aW5nIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgYSBuZXcgY29udGV4dCBjb3VsZCBiZSBjcmVhdGVkLjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS42PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJnc3QtY29udGV4dC1nZXQtZ2wtZGlzcGxheSI+PC9hPjxoMz5nc3RfY29udGV4dF9nZXRfZ2xfZGlzcGxhecKgKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiBnc3RfY29udGV4dF9nZXRfZ2xfZGlzcGxheSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENvbnRleHQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gKipkaXNwbGF5PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjguOS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOC4xMC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzk4LDcgKzQ1Myw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS44LjkuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjguMTAuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBXaGV0aGVyIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kaXNwbGF5PC9jb2RlPjwvZW0+CiB3YXMgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KIDwvcD4KQEAgLTQxNSw4ICs0NzAsOCBAQAogIG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+CiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS44LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC44LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NTAsOCArNTA1LDggQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEdMRGlzcGxheVR5cGUiPjwvYT48aDM+ZW51bSBHc3RHTERpc3BsYXlUeXBlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjkuMy4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTQuOS4zLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDYwLDQzICs1MTUsNTkgQEAKIDx0Ym9keT4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1OT05FOkNBUFMiPjwvYT5HU1RfR0xfRElTUExBWV9UWVBFX05PTkU8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5ubyBkaXNwbGF5IHR5cGU8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1YMTE6Q0FQUyI+PC9hPkdTVF9HTF9ESVNQTEFZX1RZUEVfWDExPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+WDExIGRpc3BsYXk8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1XQVlMQU5EOkNBUFMiPjwvYT5HU1RfR0xfRElTUExBWV9UWVBFX1dBWUxBTkQ8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5XYXlsYW5kIGRpc3BsYXk8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1DT0NPQTpDQVBTIj48L2E+R1NUX0dMX0RJU1BMQVlfVFlQRV9DT0NPQTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPkNvY29hIGRpc3BsYXk8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1XSU4zMjpDQVBTIj48L2E+R1NUX0dMX0RJU1BMQVlfVFlQRV9XSU4zMjwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPldpbjMyIGRpc3BsYXk8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1ESVNQTUFOWDpDQVBTIj48L2E+R1NUX0dMX0RJU1BMQVlfVFlQRV9ESVNQTUFOWDwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPkRpc3BtYW54IGRpc3BsYXk8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1FR0w6Q0FQUyI+PC9hPkdTVF9HTF9ESVNQTEFZX1RZUEVfRUdMPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+RUdMIGRpc3BsYXk8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLURJU1BMQVktVFlQRS1BTlk6Q0FQUyI+PC9hPkdTVF9HTF9ESVNQTEFZX1RZUEVfQU5ZPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+YW55IGRpc3BsYXkgdHlwZTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CkBAIC01MjMsOCArNTk0LDggQEAKIEl0IGNhbiBiZSBjYWxsZWQgaW4gYW55IHRocmVhZCBhbmQgaXQgaXMgZW1pdHRlZCB3aXRoCiBkaXNwbGF5J3Mgb2JqZWN0IGxvY2sgaGVsZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMS4xMC4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNC4xMC4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01NTAsNyArNjIxLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjExLjEwLjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjE0LjEwLjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgbmV3IGNvbnRleHQuPC9wPgogPC9kaXY+CiA8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtUlVOLUxBU1Q6Q0FQUyI+UnVuIExhc3Q8L2E+PC9wPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xEb3dubG9hZC5odG1sIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xEb3dubG9hZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGRmM2MxLi4wMDAwMDAwCi0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMRG93bmxvYWQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIzOCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+R3N0R0xEb3dubG9hZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RFR0xJbWFnZU1lbW9yeSI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgotPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNHc3RHTERvd25sb2FkLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNHc3RHTERvd25sb2FkLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Ci08L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJHc3RHTERvd25sb2FkIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgotPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iR3N0R0xEb3dubG9hZC50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9oMj4KLTxwPkdzdEdMRG93bmxvYWQg4oCUIGFuIG9iamVjdCB0aGF0IGRvd25sb2FkcyBHTCB0ZXh0dXJlczwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTERvd25sb2FkLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KLTxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+wqAqCi08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLW5ldyIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF9uZXfCoCgpIj5nc3RfZ2xfZG93bmxvYWRfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1zZXQtZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXTCoCgpIj5nc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDYXBzPC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtdHJhbnNmb3JtLWNhcHMiIHRpdGxlPSJnc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHPCoCgpIj5nc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1wZXJmb3JtLXdpdGgtZGF0YSIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YcKgKCkiPmdzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMRG93bmxvYWQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLXN0cnVjdCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPkdzdEdMRG93bmxvYWQ8L2E+PC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMRG93bmxvYWQub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTERvd25sb2FkCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xEb3dubG9hZC5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiBpcyBhbiBvYmplY3QgdGhhdCBkb3dubG9hZHMgR0wgdGV4dHVyZXMgaW50byBzeXN0ZW0gbWVtb3J5LjwvcD4KLTxwPkEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERvd25sb2FkPC9zcGFuPjwvYT4gY2FuIGJlIGNyZWF0ZWQgd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1uZXciIHRpdGxlPSJnc3RfZ2xfZG93bmxvYWRfbmV3wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfZG93bmxvYWRfbmV3KCk8L2NvZGU+PC9hPjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xEb3dubG9hZC5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLWRvd25sb2FkLW5ldyI+PC9hPjxoMz5nc3RfZ2xfZG93bmxvYWRfbmV3wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfZG93bmxvYWRfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTIuNy4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTIuNy4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERvd25sb2FkPC9zcGFuPjwvYT4gb2JqZWN0PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1kb3dubG9hZC1zZXQtZm9ybWF0Ij48L2E+PGgzPmdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiAqZG93bmxvYWQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICpvdXRfaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5Jbml0aWFsaXplcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZG93bmxvYWQ8L2NvZGU+PC9lbT4KLSB3aXRoIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgZG93bmxvYWQuPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTIuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZG93bmxvYWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm91dF9pbmZvPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtZG93bmxvYWQtdHJhbnNmb3JtLWNhcHMiPjwvYT48aDM+Z3N0X2dsX2Rvd25sb2FkX3RyYW5zZm9ybV9jYXBzwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKgotZ3N0X2dsX2Rvd25sb2FkX3RyYW5zZm9ybV9jYXBzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnZlcnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RQYWQuaHRtbCNHc3RQYWREaXJlY3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQYWREaXJlY3Rpb248L3NwYW4+PC9hPiBkaXJlY3Rpb248L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RDYXBzPC9zcGFuPjwvYT4gKmNhcHM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RDYXBzPC9zcGFuPjwvYT4gKmZpbHRlcjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1kb3dubG9hZC1wZXJmb3JtLXdpdGgtZGF0YSI+PC9hPjxoMz5nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGHCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERvd25sb2FkPC9zcGFuPjwvYT4gKmRvd25sb2FkPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gdGV4dHVyZV9pZDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IHRleHR1cmVfdGFyZ2V0PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBkYXRhW0dTVF9WSURFT19NQVhfUExBTkVTXTwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5Eb3dubG9hZHMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleHR1cmVfaWQ8L2NvZGU+PC9lbT4KLSBpbnRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kYXRhPC9jb2RlPjwvZW0+Ci0uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kYXRhPC9jb2RlPjwvZW0+Ci0gc2l6ZSBhbmQgZm9ybWF0IGlzIHNwZWNpZmllZCBieQotdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvRm9ybWF0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9Gb3JtYXQ8L3NwYW4+PC9hPiBwYXNzZWQgdG8gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtc2V0LWZvcm1hdCIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdCgpPC9jb2RlPjwvYT48L3A+Ci08cD5UaGlzIG1ldGhvZCBjYW4gb25seSBiZSB1c2VkIGZvciBkb3dubG9hZCBhIHNpbmdsZSB2aWV3LjwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjEyLjcuNS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmRvd25sb2FkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXh0dXJlX2lkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHRleHR1cmUgaWQgdG8gZG93bmxvYWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4dHVyZV90YXJnZXQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgR0wgdGV4dHVyZSB0YXJnZXQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGF0YTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB3aGVyZSB0aGUgZG93bmxvYWRlZCBkYXRhIHNob3VsZCBnby4gPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iUGFyYW1ldGVyIGZvciByZXR1cm5pbmcgcmVzdWx0cy4gRGVmYXVsdCBpcyB0cmFuc2ZlciBmdWxsLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPm91dDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xMi43LjUuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiB3aGV0aGVyIHRoZSBkb3dubG9hZCB3YXMgc3VjY2Vzc2Z1bDwvcD4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMRG93bmxvYWQub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMRG93bmxvYWQtc3RydWN0Ij48L2E+PGgzPkdzdEdMRG93bmxvYWQ8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTERvd25sb2FkIEdzdEdMRG93bmxvYWQ7PC9wcmU+Ci08cD5PcGFxdWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTERvd25sb2FkPC9zcGFuPjwvYT4gb2JqZWN0PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMRG93bmxvYWQuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgotPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVXBsb2FkPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImZvb3RlciI+Ci08aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTEZpbHRlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xGaWx0ZXIuaHRtbAppbmRleCAyOWYzMDE4Li5hMWEyMGExIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTEZpbHRlci5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL0dzdEdMRmlsdGVyLmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMRmlsdGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZUZpbHRlciI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RFR0xJbWFnZU1lbW9yeSI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMRnJhbWVidWZmZXIiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTIwLDcgKzIwLDcgQEAKIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iR3N0R0xCYXNlRmlsdGVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMRmlsdGVyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC03Nyw3ICs3Nyw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMRmlsdGVyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMjIsOCArMTIyLDggQEAKICBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmhlaWdodDwvY29kZT48L2VtPgogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE1LjcuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTYuNy4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNjMsNyArMTYzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gcmVzaXplPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gaW5wdXQ8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiB0YXJnZXQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQjpDQVBTIiB0aXRsZT0iR0xDQsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTENCPC9zcGFuPjwvYT4gZnVuYzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiIHRpdGxlPSJHTENCwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdMQ0I8L3NwYW4+PC9hPiBmdW5jPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBkYXRhPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlRyYW5zZm9ybXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmlucHV0PC9jb2RlPjwvZW0+CiAgaW50byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+b3V0cHV0PC9jb2RlPjwvZW0+CkBAIC0xNzQsOCArMTc0LDggQEAKICBpcyB0aGUgaW5wdXQgdGV4dHVyZSBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZmlsdGVyPC9jb2RlPjwvZW0+CiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTUuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNi43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIzMCw3ICsyMzAsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiByZXNpemU8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiBpbnB1dDwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IHRhcmdldDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+VHJhbnNmb3JtcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5wdXQ8L2NvZGU+PC9lbT4KICBpbnRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5vdXRwdXQ8L2NvZGU+PC9lbT4KICB1c2luZyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CkBAIC0yNDEsOCArMjQxLDggQEAKIC48L3A+CiA8cD5TZWUgYWxzbzogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwjZ3N0LWdsLWZpbHRlci1yZW5kZXItdG8tdGFyZ2V0IiB0aXRsZT0iZ3N0X2dsX2ZpbHRlcl9yZW5kZXJfdG9fdGFyZ2V0wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXQoKTwvY29kZT48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTUuNy40LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNi43LjQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI4OSw4ICsyODksOCBAQAogPHA+UGVyZm9ybSBhdXRvbWF0aWMgdXBsb2FkIGlmIG5lZWRlZCwgY2FsbCBmaWx0ZXJfdGV4dHVyZSB2ZnVuYyBhbmQgdGhlbiBhbgogYXV0b21hdGljIGRvd25sb2FkIGlmIG5lZWRlZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNS43LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE2LjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzE2LDcgKzMxNiw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNS43LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjE2LjcuNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHdoZXRoZXIgdGhlIHRyYW5zZm9ybWF0aW9uIHN1Y2NlZWRlZDwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0zMjcsMTEgKzMyNywxMSBAQAogPGEgbmFtZT0iR3N0R0xGaWx0ZXItc3RydWN0Ij48L2E+PGgzPkdzdEdMRmlsdGVyPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xGaWx0ZXIgR3N0R0xGaWx0ZXI7PC9wcmU+CiA8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMRmlsdGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xGaWx0ZXI8L3NwYW4+PC9hPiBpcyBhIGJhc2UgY2xhc3MgdGhhdCBwcm92aWRlcyB0aGUgbG9naWMgb2YgZ2V0dGluZyB0aGUgR0wgY29udGV4dAotZnJvbSBkb3duc3RyZWFtIGFuZCBhdXRvbWF0aWMgdXBsb2FkL2Rvd25sb2FkIGZvciBub24tPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4KK2Zyb20gZG93bnN0cmVhbSBhbmQgYXV0b21hdGljIHVwbG9hZC9kb3dubG9hZCBmb3Igbm9uLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+CiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+cy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNS44LjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE2LjguMi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNjEsOCArMzYxLDggQEAKIH0gR3N0R0xGaWx0ZXJDbGFzczsKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTUuOC4zLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xNi44LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvR3N0R0xGcmFtZWJ1ZmZlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xGcmFtZWJ1ZmZlci5odG1sCmluZGV4IDYwN2M4YzQuLmYyNWYxZDAgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMRnJhbWVidWZmZXIuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTEZyYW1lYnVmZmVyLmh0bWwKQEAgLTMsMTEgKzMsMTEgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMRnJhbWVidWZmZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEZpbHRlciI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjEsNyArMjEsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iR3N0R0xGcmFtZWJ1ZmZlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTEZyYW1lYnVmZmVyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC03Nyw3ICs3Nyw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMRnJhbWVidWZmZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEzOCw3ICsxMzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IGZibzwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiBkZXB0aF9idWZmZXI8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gdGV4dHVyZV9mYm88L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIgdGl0bGU9IkdMQ0JfVjLCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R0xDQl9WMjwvc3Bhbj48L2E+IGNiPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiIHRpdGxlPSJHTENCX1YywqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdMQ0JfVjI8L3NwYW4+PC9hPiBjYjwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHN0dWZmPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTFNoYWRlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xTaGFkZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzk3YTcxCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xTaGFkZXIuaHRtbApAQCAtMCwwICsxLDEyMzcgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5Hc3RHTFNoYWRlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI0dzdEdMU2hhZGVyLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNHc3RHTFNoYWRlci5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNHc3RHTFNoYWRlci5wcm9wZXJ0aWVzIiBjbGFzcz0ic2hvcnRjdXQiPlByb3BlcnRpZXM8L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9IkdzdEdMU2hhZGVyIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iR3N0R0xTaGFkZXIudG9wX29mX3BhZ2UiPjwvYT5Hc3RHTFNoYWRlcjwvc3Bhbj48L2gyPgorPHA+R3N0R0xTaGFkZXIg4oCUIG9iamVjdCByZXByZXNlbnRpbmcgYW4gT3BlbkdMIHNoYWRlciBwcm9ncmFtPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9IkdzdEdMU2hhZGVyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldyIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3wqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctZGVmYXVsdCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHTCoCgpIj5nc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LWxpbmstd2l0aC1zdGFnZXMiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzwqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldy13aXRoLXN0YWdlcyIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3X3dpdGhfc3RhZ2VzwqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl91c2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3VzZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+aW50PC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfcmVsZWFzZcKgKCkiPmdzdF9nbF9zaGFkZXJfcmVsZWFzZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlLXVubG9ja2VkIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkwqAoKSI+Z3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2giIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2F0dGFjaMKgKCkiPmdzdF9nbF9zaGFkZXJfYXR0YWNoPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2gtdW5sb2NrZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZMKgKCkiPmdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWF0dGFjaC1zdGFnZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2XCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWRldGFjaCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZGV0YWNowqAoKSI+Z3N0X2dsX3NoYWRlcl9kZXRhY2g8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZGV0YWNoLXVubG9ja2VkIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9kZXRhY2hfdW5sb2NrZWTCoCgpIj5nc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItaXMtbGlua2VkIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9pc19saW5rZWTCoCgpIj5nc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbGluayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbGlua8KgKCkiPmdzdF9nbF9zaGFkZXJfbGluazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWnCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2k8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3g0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiPmdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpIj5nc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1saW5rZWQiIHRpdGxlPSJUaGUg4oCcbGlua2Vk4oCdIHByb3BlcnR5Ij5saW5rZWQ8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQ8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KKzxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLXN0cnVjdCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT48L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KKzxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CisgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTFNoYWRlcgorPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9IkdzdEdMU2hhZGVyLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItbmV3Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfbmV3wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfc2hhZGVyX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPk5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQ8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4yLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBuZXcgZW1wdHkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLW5ldy1kZWZhdWx0Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+ICoqZXJyb3I8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5lcnJvcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiB0aGF0IGlzIGZpbGxlZCBvbiBmYWlsdXJlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIGRlZmF1bHQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4gb24gZmFpbHVyZS4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1uZXctbGluay13aXRoLXN0YWdlcyI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAqKmVycm9yPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPi4uLjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5FYWNoIHN0YWdlIHdpbGwgYXR0ZW1wdCB0byBiZSBjb21waWxlZCBhbmQgYXR0YWNoZWQgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorLiAgVGhlbgordGhlIHNoYWRlciB3aWxsIGJlIGxpbmtlZC4gT24gZXJyb3IsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+IHdpbGwgYmUgcmV0dXJuZWQgYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5lcnJvcjwvY29kZT48L2VtPgorIHdpbGwKK2NvbnRhaW4gdGhlIGRldGFpbHMgb2YgdGhlIGVycm9yLjwvcD4KKzxwPk5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQ8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZXJyb3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Li4uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBOVUxMIHRlcm1pbmF0ZWQgbGlzdCBvZiA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4nczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC40LjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBuZXcgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgord2l0aCB0aGUgc3BlY2lmaWVkIHN0YWdlcy4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1uZXctd2l0aC1zdGFnZXMiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9zaGFkZXJfbmV3X3dpdGhfc3RhZ2VzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT4gKiplcnJvcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Li4uPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkVhY2ggc3RhZ2Ugd2lsbCBhdHRlbXB0IHRvIGJlIGNvbXBpbGVkIGFuZCBhdHRhY2hlZCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisuICBPbiBlcnJvciwKKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+IHdpbGwgYmUgcmV0dXJuZWQgYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5lcnJvcjwvY29kZT48L2VtPgorIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyBvZiB0aGUgZXJyb3IuPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguNS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5lcnJvcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD4uLi48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPidzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjUuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+Cit3aXRoIHRoZSBzcGVjaWZpZWQgc3RhZ2VzLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXVzZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3VzZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfdXNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5NYXJrJ3MgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorIGFzIGJlaW5nIHVzZWQgZm9yIHRoZSBuZXh0IEdMIGRyYXcgY29tbWFuZC48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisgbXVzdCBoYXZlIGJlZW4gbGlua2VkLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguNi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1nZXQtcHJvZ3JhbS1oYW5kbGUiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmludDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjcuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNoYWRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgR0wgcHJvZ3JhbSBoYW5kbGUgZm9yIHRoaXMgc2hhZGVyPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItcmVsZWFzZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3JlbGVhc2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3JlbGVhc2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlJlbGVhc2VzIHRoZSBzaGFkZXIgYW5kIHN0YWdlcy48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC44LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXJlbGVhc2UtdW5sb2NrZWQiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5SZWxlYXNlcyB0aGUgc2hhZGVyIGFuZCBzdGFnZXMuPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguOS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1hdHRhY2giPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9hdHRhY2jCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX3NoYWRlcl9hdHRhY2ggKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4gKnN0YWdlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkF0dGFjaGVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdGFnZTwvY29kZT48L2VtPgorIHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKy4gIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdGFnZTwvY29kZT48L2VtPgorIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjb21waWxlZAord2l0aCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbHNsX3N0YWdlX2NvbXBpbGUoKTwvY29kZT4uPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTAuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdGFnZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+IHRvIGF0dGFjaDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xMC43Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+Citjb3VsZCBiZSBhdHRhY2hlZCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1hdHRhY2gtdW5sb2NrZWQiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4gKnN0YWdlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkF0dGFjaGVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdGFnZTwvY29kZT48L2VtPgorIHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKy4gIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdGFnZTwvY29kZT48L2VtPgorIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBjb21waWxlZAord2l0aCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbHNsX3N0YWdlX2NvbXBpbGUoKTwvY29kZT4uPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTEuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdGFnZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+IHRvIGF0dGFjaDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xMS43Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+Citjb3VsZCBiZSBhdHRhY2hlZCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1jb21waWxlLWF0dGFjaC1zdGFnZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPiAqc3RhZ2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAqKmVycm9yPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNvbXBpbGVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdGFnZTwvY29kZT48L2VtPgorIGFuZCBhdHRhY2hlcyBpdCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisuPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTIuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdGFnZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+IHRvIGF0dGFjaDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5lcnJvcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xMi43Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+Citjb3VsZCBiZSBjb21waWxlZCBhbmQgYXR0YWNoZWQgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItZGV0YWNoIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfZGV0YWNowqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9kZXRhY2ggKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT4gKnN0YWdlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkRldGFjaGVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdGFnZTwvY29kZT48L2VtPgorIGZyb20gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNoYWRlcjwvY29kZT48L2VtPgorLiAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGF0dGFjaGVkCit0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+Cisgd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYXR0YWNowqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfc2hhZGVyX2F0dGFjaCgpPC9jb2RlPjwvYT4gb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2gtdW5sb2NrZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZMKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQoKTwvY29kZT48L2E+LjwvcD4KKzxwPk5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQ8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjEzLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNoYWRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3RhZ2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPiB0byBhdHRhY2g8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1kZXRhY2gtdW5sb2NrZWQiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9kZXRhY2hfdW5sb2NrZWTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPiAqc3RhZ2U8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RGV0YWNoZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnN0YWdlPC9jb2RlPjwvZW0+CisgZnJvbSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CisuICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RhZ2U8L2NvZGU+PC9lbT4KKyBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXR0YWNoZWQKK3RvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKyB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYXR0YWNoIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9hdHRhY2jCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9zaGFkZXJfYXR0YWNoKCk8L2NvZGU+PC9hPiBvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaC11bmxvY2tlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCgpPC9jb2RlPjwvYT4uPC9wPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTQuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2hhZGVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdGFnZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+IHRvIGF0dGFjaDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWlzLWxpbmtlZCI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Tm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjIwLjguMTUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNoYWRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjE1LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+CitoYXMgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItbGluayI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2xpbmvCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX3NoYWRlcl9saW5rICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT4gKiplcnJvcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5MaW5rcyB0aGUgY3VycmVudCBsaXN0IG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMU3RhZ2U8L3NwYW4+PC9hPidzIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zaGFkZXI8L2NvZGU+PC9lbT4KKy48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjAuOC4xNi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaGFkZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVycm9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMC44LjE2LjciPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2hhZGVyPC9jb2RlPjwvZW0+Citjb3VsZCBiZSBsaW5rZWQgdG9nZXRoZXIuPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xacKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2MDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2bCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2nCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYxPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaXYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYzPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYxPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYzPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yZnYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMngzZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4NGZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4MmZ2wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnYKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDJmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnbCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBpbmRleDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXItc3RydWN0Ij48L2E+PGgzPkdzdEdMU2hhZGVyPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xTaGFkZXIgR3N0R0xTaGFkZXI7PC9wcmU+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0R0xTaGFkZXIucHJvcGVydHktZGV0YWlscyI+PC9hPjxoMj5Qcm9wZXJ0eSBEZXRhaWxzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMU2hhZGVyLS1saW5rZWQiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxsaW5rZWTigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGxpbmtlZOKAnSAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Cis8cD5TaGFkZXIgbGluayBzdGF0dXMuPC9wPgorPHA+RmxhZ3M6IFJlYWQ8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiBGQUxTRTwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJHc3RHTFNoYWRlci5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFN0YWdlPC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZm9vdGVyIj4KKzxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL0dzdEdMVXBsb2FkLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTFVwbG9hZC5odG1sCmluZGV4IDQ3MDBhNTguLjNiMTU4ODMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMVXBsb2FkLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xVcGxvYWQuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xVcGxvYWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCIgdGl0bGU9IkdzdEdMU3luY01ldGEiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkTWV0YSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjEsNyArMjEsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iR3N0R0xVcGxvYWQiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xVcGxvYWQuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTkwLDEwICs5MCwxMCBAQAogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDYXBzLmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2Fwczwvc3Bhbj48L2E+wqAqCiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtcmVsZWFzZS1idWZmZXIiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVywqAoKSI+Z3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtZ2V0LWlucHV0LXRlbXBsYXRlLWNhcHMiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzwqAoKSI+Z3N0X2dsX3VwbG9hZF9nZXRfaW5wdXRfdGVtcGxhdGVfY2FwczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPC90Ym9keT4KQEAgLTEwMSw3ICsxMDEsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTFVwbG9hZC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTMyLDggKzEzMiw4IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+wqAqCiBnc3RfZ2xfdXBsb2FkX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIwLjcuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjQuNy4yLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDcsNyArMTQ3LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIwLjcuMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMjQuNy4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVXBsb2FkPC9zcGFuPjwvYT4gb2JqZWN0PC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTE1OSw4ICsxNTksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENhcHM8L3NwYW4+PC9hPiAqKmluX2NhcHM8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0Q2Fwczwvc3Bhbj48L2E+ICoqb3V0X2NhcHM8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy4zLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE4Niw3ICsxODYsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy4zLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBUaGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0Q2Fwczwvc3Bhbj48L2E+IHNldCBieSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXNldC1jYXBzIiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9zZXRfY2Fwc8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX3VwbG9hZF9zZXRfY2FwcygpPC9jb2RlPjwvYT4uIDwvcD4KIDxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgogPC9kaXY+CkBAIC0yMDEsOCArMjAxLDggQEAKIDxwPkluaXRpYWxpemVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT51cGxvYWQ8L2NvZGU+PC9lbT4KICB3aXRoIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgdXBsb2FkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIwLjcuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjQuNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMjgsNyArMjI4LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIwLjcuNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMjQuNy40LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gd2hldGhlciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5fY2FwczwvY29kZT48L2VtPgogYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5vdXRfY2FwczwvY29kZT48L2VtPgogY291bGQgYmUgc2V0IG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT51cGxvYWQ8L2NvZGU+PC9lbT4KQEAgLTI0NCw4ICsyNDQsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RRdWVyeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UXVlcnk8L3NwYW4+PC9hPiAqcXVlcnk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+QWRkcyB0aGUgcmVxdWlyZWQgYWxsb2NhdGlvbiBwYXJhbWV0ZXJzIHRvIHN1cHBvcnQgdXBsb2FkaW5nLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIwLjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjQuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yODYsMTUgKzI4NiwxNCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xVcGxvYWRSZXR1cm48L3NwYW4+CiBnc3RfZ2xfdXBsb2FkX3BlcmZvcm1fd2l0aF9idWZmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPiAqdXBsb2FkPC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiAqYnVmZmVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiAqKm91dGJ1ZjwvY29kZT48L2VtPik7PC9wcmU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+ICoqb3V0YnVmX3B0cjwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5VcGxvYWRzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5idWZmZXI8L2NvZGU+PC9lbT4KLSB0byB0aGUgdGV4dHVyZSBnaXZlbiBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Ci0uICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Ci0gaXMgdmFsaWQKLXVudGlsIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtcmVsZWFzZS1idWZmZXIiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVywqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyKCk8L2NvZGU+PC9hPiBpcyBjYWxsZWQuPC9wPgorIHVzaW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBzcGVjaWZpZWQgYnkKKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtc2V0LWNhcHMiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX3NldF9jYXBzwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfdXBsb2FkX3NldF9jYXBzKCk8L2NvZGU+PC9hPiBjcmVhdGluZyBhIG5ldyA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+IGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5vdXRidWZfcHRyPC9jb2RlPjwvZW0+CisuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjAuNy43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNC43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMwOCw0NCArMzA3LDI3IEBACiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YnVmZmVyPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+aW5wdXQgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPjwvcD48L3RkPgogPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5vdXRidWZfcHRyPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHJlc3VsdGluZyBidWZmZXIuIDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnJlc3VsdGluZyA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMC43LjcuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjI0LjcuNy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHdoZXRoZXIgdGhlIHVwbG9hZCB3YXMgc3VjY2Vzc2Z1bDwvcD4KIDwvZGl2PgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtdXBsb2FkLXJlbGVhc2UtYnVmZmVyIj48L2E+PGgzPmdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXLCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVXBsb2FkPC9zcGFuPjwvYT4gKnVwbG9hZDwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5SZWxlYXNlcyBhbnkgYnVmZmVycyBjdXJyZW50bHkgcmVmZXJlbmNlZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dXBsb2FkPC9jb2RlPjwvZW0+Ci08L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMC43LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXBsb2FkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KKzxhIG5hbWU9ImdzdC1nbC11cGxvYWQtZ2V0LWlucHV0LXRlbXBsYXRlLWNhcHMiPjwvYT48aDM+Z3N0X2dsX3VwbG9hZF9nZXRfaW5wdXRfdGVtcGxhdGVfY2Fwc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDYXBzPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF91cGxvYWRfZ2V0X2lucHV0X3RlbXBsYXRlX2NhcHMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KQEAgLTM1OCw3ICszNDAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJHc3RHTFVwbG9hZC5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Ci08cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMRG93bmxvYWQ8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8cD48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEb3dubG9hZDwvc3Bhbj4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCBiL2RvY3MvbGlicy9odG1sL0dzdEdMVXBsb2FkTWV0YS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNDEyYjEwLi4wMDAwMDAwCi0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMVXBsb2FkTWV0YS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQxICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5Hc3RHTFVwbG9hZE1ldGE6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD4KLTxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Ci08dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KLTxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjR3N0R0xVcGxvYWRNZXRhLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNHc3RHTFVwbG9hZE1ldGEub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KLTwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9IkdzdEdMVXBsb2FkTWV0YSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9IkdzdEdMVXBsb2FkTWV0YS50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMVXBsb2FkTWV0YTwvc3Bhbj48L2gyPgotPHA+R3N0R0xVcGxvYWRNZXRhIOKAlCBhbiBvYmplY3QgdGhhdCBwcm92aWRlcyA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW9tZXRhLmh0bWwjR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhPC9zcGFuPjwvYT48L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xVcGxvYWRNZXRhLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KLTxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVXBsb2FkTWV0YTwvc3Bhbj48L2E+wqAqCi08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtbmV3IiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX25ld8KgKCkiPmdzdF9nbF91cGxvYWRfbWV0YV9uZXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtc2V0LWZvcm1hdCIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0wqAoKSI+Z3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1nZXQtZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF9mb3JtYXTCoCgpIj5nc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtYWRkLXRvLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVywqAoKSI+Z3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTFVwbG9hZE1ldGEub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sI0dzdEdMVXBsb2FkTWV0YS1zdHJ1Y3QiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT48L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xVcGxvYWRNZXRhLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0R0xVcGxvYWRNZXRhCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xVcGxvYWRNZXRhLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkTWV0YSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVXBsb2FkTWV0YTwvc3Bhbj48L2E+IGlzIGFuIG9iamVjdCB0aGF0IHVwbG9hZHMgZGF0YSBmcm9tIHN5c3RlbSBtZW1vcnkgaW50byBHTCB0ZXh0dXJlcy48L3A+Ci08cD5BIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFVwbG9hZDwvc3Bhbj48L2E+IGNhbiBiZSBjcmVhdGVkIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1uZXciIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX25ld8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX3VwbG9hZF9uZXcoKTwvY29kZT48L2E+PC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJHc3RHTFVwbG9hZE1ldGEuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC11cGxvYWQtbWV0YS1uZXciPjwvYT48aDM+Z3N0X2dsX3VwbG9hZF9tZXRhX25ld8KgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkTWV0YSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFVwbG9hZE1ldGE8L3NwYW4+PC9hPsKgKgotZ3N0X2dsX3VwbG9hZF9tZXRhX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIxLjcuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIxLjcuMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IGEgbmV3IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkTWV0YSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVXBsb2FkTWV0YTwvc3Bhbj48L2E+IG9iamVjdDwvcD4KLTwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtdXBsb2FkLW1ldGEtc2V0LWZvcm1hdCI+PC9hPjxoMz5nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT4gKnVwbG9hZDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+SW5pdGlhbGl6ZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnVwbG9hZDwvY29kZT48L2VtPgotIHdpdGggdGhlIGluZm9ybWF0aW9uIHJlcXVpcmVkIGZvciB1cGxvYWQuPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjEuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXBsb2FkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+aW5wdXQgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXVwbG9hZC1tZXRhLWdldC1mb3JtYXQiPjwvYT48aDM+Z3N0X2dsX3VwbG9hZF9tZXRhX2dldF9mb3JtYXTCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT7CoCoKLWdzdF9nbF91cGxvYWRfbWV0YV9nZXRfZm9ybWF0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT4gKnVwbG9hZDwvY29kZT48L2VtPik7PC9wcmU+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMS43LjQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXBsb2FkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIxLjcuNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IFRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiBzZXQgYnkKLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtc2V0LWZvcm1hdCIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0wqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdCgpPC9jb2RlPjwvYT4uIDwvcD4KLTxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC11cGxvYWQtbWV0YS1hZGQtdG8tYnVmZmVyIj48L2E+PGgzPmdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVywqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT4gKnVwbG9hZDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiAqYnVmZmVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPkFkZHMgYSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW9tZXRhLmh0bWwjR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhPC9zcGFuPjwvYT4gb24gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmJ1ZmZlcjwvY29kZT48L2VtPgotIHVzaW5nIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT51cGxvYWQ8L2NvZGU+PC9lbT4KLTwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIxLjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnVwbG9hZDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YnVmZmVyPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXIuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlcjwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMS43LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiB3aGV0aGVyIGl0IHdhcyBzdWNjZXNzZnVsPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iR3N0R0xVcGxvYWRNZXRhLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RHTFVwbG9hZE1ldGEtc3RydWN0Ij48L2E+PGgzPkdzdEdMVXBsb2FkTWV0YTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVXBsb2FkTWV0YSBHc3RHTFVwbG9hZE1ldGE7PC9wcmU+Ci08cD5PcGFxdWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWRNZXRhPC9zcGFuPjwvYT4gb2JqZWN0PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9IkdzdEdMVXBsb2FkTWV0YS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Ci08cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xVcGxvYWQ8L3NwYW4+PC9hPiwgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL0dzdEdMV2luZG93Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9Hc3RHTFdpbmRvdy5odG1sCmluZGV4IDU2NTIxMWUuLjI0ZWI0YjIgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL0dzdEdMV2luZG93Lmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvR3N0R0xXaW5kb3cuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xXaW5kb3c6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd0FuZHJvaWQiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTIxLDcgKzIxLDcgQEAKIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iR3N0R0xXaW5kb3cuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTk5LDE0ICs5OSw2IEBACiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1kcmF3LXVubG9ja2VkIiB0aXRsZT0iZ3N0X2dsX3dpbmRvd19kcmF3X3VubG9ja2VkwqAoKSI+Z3N0X2dsX3dpbmRvd19kcmF3X3VubG9ja2VkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgpAQCAtMjM4LDcgKzIzMCw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMV2luZG93LnNpZ25hbHMiPjwvYT48aDI+U2lnbmFsczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ic2lnbmFsc19yZXR1cm4iPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzaWduYWxzX25hbWUiPgpAQCAtMjYwLDcgKzI1Miw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9IkdzdEdMV2luZG93Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0zMzksOCArMzMxLDggQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMV2luZG93PC9zcGFuPjwvYT7CoCoKIGdzdF9nbF93aW5kb3dfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xEaXNwbGF5PC9zcGFuPjwvYT4gKmRpc3BsYXk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC44LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM1NCw3ICszNDYsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC44LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjguNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiB1c2luZyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGlzcGxheTwvY29kZT48L2VtPgogJ3MgY29ubmVjdGlvbi4gPC9wPgogPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+CkBAIC0zNjgsMzEgKzM2MCw4IEBACiBnc3RfZ2xfd2luZG93X2RyYXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiAqd2luZG93PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlJlZHJhdyB0aGUgd2luZG93IGNvbnRlbnRzLiAgSW1wbGVtZW50YXRpb25zIHNob3VsZCBpbnZva2UgdGhlIGRyYXcgY2FsbGJhY2suPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndpbmRvdzwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMV2luZG93PC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjQ8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC13aW5kb3ctZHJhdy11bmxvY2tlZCI+PC9hPjxoMz5nc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWTCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiAqd2luZG93PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPlJlZHJhdyB0aGUgd2luZG93IGNvbnRlbnRzLiAgSW1wbGVtZW50YXRpb25zIHNob3VsZCBpbnZva2UgdGhlIGRyYXcgY2FsbGJhY2suPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MTQsOCArMzgzLDggQEAKIGdzdF9nbF93aW5kb3dfaXNfcnVubmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+V2hldGhlciB0aGUgcnVubG9vcCBpcyBydW5uaW5nPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDM3LDggKzQwNiw4IEBACiBnc3RfZ2xfd2luZG93X3F1aXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiAqd2luZG93PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlF1aXQgdGhlIHJ1bmxvb3AncyBleGVjdXRpb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDYwLDggKzQyOSw4IEBACiBnc3RfZ2xfd2luZG93X3J1biAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFdpbmRvdzwvc3Bhbj48L2E+ICp3aW5kb3c8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U3RhcnQgdGhlIGV4ZWN1dGlvbiBvZiB0aGUgcnVubG9vcC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjEyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00ODIsOCArNDUxLDggQEAKIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT7CoCoKIGdzdF9nbF93aW5kb3dfZ2V0X2NvbnRleHQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiAqd2luZG93PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMTQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMTMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ5Nyw3ICs0NjYsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xMy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiBhc3NvY2lhdGVkIHdpdGggdGhpcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d2luZG93PC9jb2RlPjwvZW0+CiAuIDwvcD4KIDxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgpAQCAtNTEwLDggKzQ3OSw4IEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50cHRyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50cHRyPC9zcGFuPjwvYT4KIGdzdF9nbF93aW5kb3dfZ2V0X2Rpc3BsYXkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiAqd2luZG93PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMTUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMTQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTUyNSw3ICs0OTQsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xNS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSB3aW5kb3dpbmcgc3lzdGVtIGRpc3BsYXkgaGFuZGxlIGZvciB0aGlzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53aW5kb3c8L2NvZGU+PC9lbT4KIDwvcD4KIDwvZGl2PgpAQCAtNTQzLDggKzUxMiw4IEBACiAgaXMgZ3VhcmVudGVlZCB0bwogaGF2ZSBleGVjdXRlZCB3aGVuIHRoaXMgZnVuY3Rpb24gcmV0dXJucy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjE1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01ODUsOCArNTU0LDggQEAKICBvbiB0aGUgd2luZG93IHRocmVhZC4gIFRoZSBjYWxsYmFjayBtYXkgbm90CiBoYXZlIGJlZW4gZXhlY3V0ZWQgd2hlbiB0aGlzIGZ1bmN0aW9uIHJldHVybnMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjMwLDggKzU5OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gZGVzdHJveV9ub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0cyB0aGUgY2FsbGJhY2sgY2FsbGVkIHdoZW4gdGhlIHdpbmRvdyBpcyBhYm91dCB0byBjbG9zZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjE4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjE3LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NzUsOCArNjQ0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IGRlc3Ryb3lfbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldHMgdGhlIGRyYXcgY2FsbGJhY2sgY2FsbGVkIGV2ZXJ5dGltZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWRyYXciIHRpdGxlPSJnc3RfZ2xfd2luZG93X2RyYXfCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF93aW5kb3dfZHJhdygpPC9jb2RlPjwvYT4gaXMgY2FsbGVkPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4xOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4xOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzIwLDggKzY4OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IGRlc3Ryb3lfbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldHMgdGhlIHJlc2l6ZSBjYWxsYmFjayBjYWxsZWQgZXZlcnl0aW1lIGEgcmVzaXplIG9mIHRoZSB3aW5kb3cgb2NjdXJzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMjAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMTkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc2NSw4ICs3MzQsOCBAQAogIHNob3VsZCByZW5kZXIgaW50by4gIFNvbWUgaW1wbGVtZW50YXRpb25zCiByZXF1aXJlIHRoaXMgdG8gYmUgY2FsbGVkIHdpdGggYSB2YWxpZCBoYW5kbGUgYmVmb3JlIGRyYXdpbmcgY2FuIGNvbW1lbmNlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMjEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMjAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc5NCw4ICs3NjMsOCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludHB0ciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludHB0cjwvc3Bhbj48L2E+CiBnc3RfZ2xfd2luZG93X2dldF93aW5kb3dfaGFuZGxlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMV2luZG93PC9zcGFuPjwvYT4gKndpbmRvdzwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy44LjIyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS44LjIxLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC04MDksNyArNzc4LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMjEuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiB0aGUgd2luZG93IGhhbmRsZSB3ZSBhcmUgY3VycmVudGx5IHJlbmRlcmluZyBpbnRvPC9wPgogPC9kaXY+CiA8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjQ8L3A+CkBAIC04MjQsOCArNzkzLDggQEAKIDxwPlNldCB0aGUgcHJlZmVycmVkIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIHdpbmRvdy4gIEltcGxlbWVudGF0aW9ucyBhcmUgZnJlZQogdG8gaWdub3JlIHRoaXMgaW5mb3JtYXRpb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4yMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4yMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODU5LDggKzgyOCw4IEBACiBnc3RfZ2xfd2luZG93X3Nob3cgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xXaW5kb3c8L3NwYW4+PC9hPiAqd2luZG93PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlByZXNlbnQgdGhlIHdpbmRvdyB0byB0aGUgc2NyZWVuLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjguMjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjguMjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg4Myw4ICs4NTIsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiAqd2lkdGg8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+ICpoZWlnaHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4yNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4yNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTI1LDggKzg5NCw4IEBACiBmcm9tIHRoZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d2luZG93PC9jb2RlPjwvZW0+CiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOC4yNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjkuMjUuOC4yNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTUzLDggKzkyMiw4IEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHc3RHTFdpbmRvd0Vycm9yIj48L2E+PGgzPmVudW0gR3N0R0xXaW5kb3dFcnJvcjwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy45LjIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjkuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk5Niw3ICs5NjUsNiBAQAogICBndWludHB0ciAoKmdldF9kaXNwbGF5KSAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKnNldF93aW5kb3dfaGFuZGxlKSAgKEdzdEdMV2luZG93ICp3aW5kb3csIGd1aW50cHRyIGlkKTsKICAgZ3VpbnRwdHIgKCpnZXRfd2luZG93X2hhbmRsZSkgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKLSAgdm9pZCAgICAgKCpkcmF3X3VubG9ja2VkKSAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKICAgdm9pZCAgICAgKCpkcmF3KSAgICAgICAgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKICAgdm9pZCAgICAgKCpydW4pICAgICAgICAgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKICAgdm9pZCAgICAgKCpxdWl0KSAgICAgICAgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKQEAgLTEwMTMsOCArOTgxLDggQEAKIH0gR3N0R0xXaW5kb3dDbGFzczsKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjMuOS40LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS45LjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA0MywxMSArMTAxMSw2IEBACiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xXaW5kb3dDbGFzcy5kcmF3LXVubG9ja2VkIj48L2E+ZHJhd191bmxvY2tlZDwvY29kZT48L2VtPsKgKCk8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+cmVkcmF3IHRoZSB3aW5kb3cgd2l0aCB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvbnM8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTFdpbmRvd0NsYXNzLmRyYXciPjwvYT5kcmF3PC9jb2RlPjwvZW0+wqAoKTwvcD48L3RkPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5yZWRyYXcgdGhlIHdpbmRvdyB3aXRoIHRoZSBzcGVjaWZpZWQgZGltZW5zaW9uczwvcD48L3RkPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CkBAIC0xMTI4LDggKzEwOTEsOCBAQAogICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgICAgdXNlcl9kYXRhKTwvcHJlPgogPHA+V2lsbCBiZSBlbWl0dGVkIHdoZW4gYSBrZXkgZXZlbnQgaXMgcmVjZWl2ZWQgYnkgdGhlIEdzdEdMd2luZG93LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjIzLjEwLjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjI1LjEwLjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExNzQsOCArMTEzNyw4IEBACiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgICB1c2VyX2RhdGEpPC9wcmU+CiA8cD5XaWxsIGJlIGVtaXR0ZWQgd2hlbiBhIG1vdXNlIGV2ZW50IGlzIHJlY2VpdmVkIGJ5IHRoZSBHc3RHTHdpbmRvdy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMy4xMC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yNS4xMC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lmh0bWwKaW5kZXggZjQ5ZmIyNy4uOWQ4ZWNiZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvYW5ub3RhdGlvbi1nbG9zc2FyeS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2Fubm90YXRpb24tZ2xvc3NhcnkuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkFubm90YXRpb24gR2xvc3Nhcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iYXBpLWluZGV4LWRlcHJlY2F0ZWQuaHRtbCIgdGl0bGU9IkluZGV4IG9mIGRlcHJlY2F0ZWQgQVBJIj4KQEAgLTM4LDYgKzM4LDggQEAKIDxhIG5hbWU9Imdsc0EiPjwvYT48aDMgY2xhc3M9InRpdGxlIj5BPC9oMz4KIDxkdD48c3BhbiBjbGFzcz0iZ2xvc3N0ZXJtIj48YSBuYW1lPSJhbm5vdGF0aW9uLWdsb3NzdGVybS1hbGxvdy1ub25lIj48L2E+YWxsb3ctbm9uZTwvc3Bhbj48L2R0PgogPGRkIGNsYXNzPSJnbG9zc2RlZiI+PHA+TlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy48L3A+PC9kZD4KKzxkdD48c3BhbiBjbGFzcz0iZ2xvc3N0ZXJtIj48YSBuYW1lPSJhbm5vdGF0aW9uLWdsb3NzdGVybS1hcnJheSI+PC9hPmFycmF5PC9zcGFuPjwvZHQ+Cis8ZGQgY2xhc3M9Imdsb3NzZGVmIj48cD5QYXJhbWV0ZXIgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGl0ZW1zLjwvcD48L2RkPgogPGEgbmFtZT0iZ2xzQyI+PC9hPjxoMyBjbGFzcz0idGl0bGUiPkM8L2gzPgogPGR0PjxzcGFuIGNsYXNzPSJnbG9zc3Rlcm0iPjxhIG5hbWU9ImFubm90YXRpb24tZ2xvc3N0ZXJtLWNsb3N1cmUiPjwvYT5jbG9zdXJlPC9zcGFuPjwvZHQ+CiA8ZGQgY2xhc3M9Imdsb3NzZGVmIj48cD5UaGlzIHBhcmFtZXRlciBpcyBhICd1c2VyX2RhdGEnLCBmb3IgY2FsbGJhY2tzOyBtYW55IGJpbmRpbmdzIGNhbiBwYXNzIE5VTEwgaGVyZS48L3A+PC9kZD4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2FwaS1pbmRleC1kZXByZWNhdGVkLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9hcGktaW5kZXgtZGVwcmVjYXRlZC5odG1sCmluZGV4IDFiYjM1OWEuLmY0Y2Q4NjYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2FwaS1pbmRleC1kZXByZWNhdGVkLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvYXBpLWluZGV4LWRlcHJlY2F0ZWQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkluZGV4IG9mIGRlcHJlY2F0ZWQgQVBJOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImFwaS1pbmRleC1mdWxsLmh0bWwiIHRpdGxlPSJJbmRleCI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9hcGktaW5kZXgtZnVsbC5odG1sIGIvZG9jcy9saWJzL2h0bWwvYXBpLWluZGV4LWZ1bGwuaHRtbAppbmRleCBlN2MxM2I0Li5hYWY5ZjAxIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9hcGktaW5kZXgtZnVsbC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2FwaS1pbmRleC1mdWxsLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5JbmRleDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3RyZWFtZXItbGlicy1oaWVyYXJjaHkuaHRtbCIgdGl0bGU9IlBhcnTCoElJLsKgT2JqZWN0IEhpZXJhcmNoeSI+CkBAIC0xNTEsNiArMTUxLDEwIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1idWZmZXItYWRkLWdsLXN5bmMtbWV0YS1mdWxsIiB0aXRsZT0iZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhX2Z1bGzCoCgpIj5nc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFN5bmNNZXRhIj5Hc3RHTFN5bmNNZXRhPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdG1wZWd2aWRlb21ldGEuaHRtbCNnc3QtYnVmZmVyLWFkZC1tcGVnLXZpZGVvLW1ldGEiIHRpdGxlPSJnc3RfYnVmZmVyX2FkZF9tcGVnX3ZpZGVvX21ldGHCoCgpIj5nc3RfYnVmZmVyX2FkZF9tcGVnX3ZpZGVvX21ldGE8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0bXBlZ3ZpZGVvbWV0YS5odG1sIiB0aXRsZT0iZ3N0bXBlZ3ZpZGVvbWV0YSI+Z3N0bXBlZ3ZpZGVvbWV0YTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KQEAgLTE2Myw5ICsxNjcsMjkgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtYnVmZmVyLXBvb2wtY29uZmlnLWdldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyIgdGl0bGU9ImdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zwqAoKSI+Z3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPkdzdEdMQnVmZmVyUG9vbDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtYnVmZmVyLXBvb2wtY29uZmlnLXNldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyIgdGl0bGU9ImdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zwqAoKSI+Z3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPkdzdEdMQnVmZmVyUG9vbDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1TWU5DLU1FVEE6Q0FQUyIgdGl0bGU9IkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfU1lOQ19NRVRBIj5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1NZTkNfTUVUQTwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFN5bmNNZXRhIj5Hc3RHTFN5bmNNZXRhPC9hPgogPC9kdD4KIDxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIiB0aXRsZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRCI+R1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRDwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyIgdGl0bGU9IkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTIj5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1SRUNUQU5HTEU6Q0FQUyIgdGl0bGU9IkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFIj5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgogPGEgbmFtZT0iaWR4QyI+PC9hPjxoMyBjbGFzcz0idGl0bGUiPkM8L2gzPgogPGR0PgogR3N0Q2FtZXJhQmluTW9kZSwgZW51bSBpbiBnc3RjYW1lcmFiaW4tZW51bQpAQCAtMTk2LDcgKzIyMCwxMSBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0NEQ0I6Q0FQUyIgdGl0bGU9IkNEQ0LCoCgpIj5DRENCPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUdMLUJVRkZFUjpDQVBTIiB0aXRsZT0iR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfQlVGRkVSIj5HU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9CVUZGRVI8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj5Hc3RHTEJ1ZmZlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNDRENCOkNBUFMiIHRpdGxlPSJDRENCwqAoKSI+Q0RDQjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC0yNzEsMTEgKzI5OSwxNSBAQAogPGRkPjwvZGQ+CiA8YSBuYW1lPSJpZHhHIj48L2E+PGgzIGNsYXNzPSJ0aXRsZSI+RzwvaDM+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTEFsbG9jYXRvciI+R3N0R0xBbGxvY2F0b3I8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+Z3N0Z2xtZW1vcnk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMQWxsb2NhdG9yQ2xhc3MiPkdzdEdMQWxsb2NhdG9yQ2xhc3M8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+Z3N0Z2xtZW1vcnk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuY8KgKCkiPkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jwqAoKSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmM8L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtMjgzLDYgKzMxNSwxNCBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj5Hc3RHTEFzeW5jRGVidWc8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1Z0xvZ0dldE1lc3NhZ2UiIHRpdGxlPSJHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlwqAoKSI+R3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZTwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBkZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLXN0cnVjdCIgdGl0bGU9IkdzdEdMQmFzZUZpbHRlciI+R3N0R0xCYXNlRmlsdGVyPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZUZpbHRlciI+R3N0R0xCYXNlRmlsdGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtMjk1LDE5ICszMzUsNzkgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbENsYXNzIiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyUG9vbENsYXNzIj5Hc3RHTEJ1ZmZlclBvb2xDbGFzczwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPkdzdEdMQnVmZmVyUG9vbDwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3Itc3RydWN0IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQjpDQVBTIiB0aXRsZT0iR0xDQsKgKCkiPkdMQ0I8L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uwqAoKSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQi1WMjpDQVBTIiB0aXRsZT0iR0xDQl9WMsKgKCkiPkdMQ0JfVjI8L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbsKgKCkiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbsKgKCkiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb27CoCgpIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb248L2E+LCB1c2VyX2Z1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb27CoCgpIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb27CoCgpIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlFcnJvciIgdGl0bGU9ImVudW0gR3N0R0xCYXNlTWVtb3J5RXJyb3IiPkdzdEdMQmFzZU1lbW9yeUVycm9yPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciIgdGl0bGU9ImVudW0gR3N0R0xCYXNlTWVtb3J5VHJhbnNmZXIiPkdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyI+R3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0b3Itc3RydWN0IiB0aXRsZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3IiPkdzdEdMQnVmZmVyQWxsb2NhdG9yPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MiPkdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3M8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLXN0cnVjdCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbENsYXNzIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sQ2xhc3MiPkdzdEdMQnVmZmVyUG9vbENsYXNzPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+R3N0R0xCdWZmZXJQb29sPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0I6Q0FQUyIgdGl0bGU9IkdMQ0LCoCgpIj5HTENCPC9hPiwgdXNlcl9mdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiIHRpdGxlPSJHTENCX1YywqAoKSI+R0xDQl9WMjwvYT4sIHVzZXJfZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC0zNTksNyArNDU5LDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHc3RHTERpc3BsYXlQcm9qZWN0aW9uIiB0aXRsZT0iZW51bSBHc3RHTERpc3BsYXlQcm9qZWN0aW9uIj5Hc3RHTERpc3BsYXlQcm9qZWN0aW9uPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHc3RHTERpc3BsYXlQcm9qZWN0aW9uIiB0aXRsZT0iZW51bSBHc3RHTERpc3BsYXlQcm9qZWN0aW9uIj5Hc3RHTERpc3BsYXlQcm9qZWN0aW9uPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTM2NywxMCArNDY3LDYgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjR3N0R0xEb3dubG9hZC1zdHJ1Y3QiIHRpdGxlPSJHc3RHTERvd25sb2FkIj5Hc3RHTERvd25sb2FkPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj5Hc3RHTERvd25sb2FkPC9hPgotPC9kdD4KLTxkZD48L2RkPgotPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwjR3N0R0xGaWx0ZXItc3RydWN0IiB0aXRsZT0iR3N0R0xGaWx0ZXIiPkdzdEdMRmlsdGVyPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xGaWx0ZXIiPkdzdEdMRmlsdGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtMzg3LDcgKzQ4MywyNyBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCIgdGl0bGU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIj5Hc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk8iIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+R3N0R0xNZW1vcnlQQk88L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+R3N0R0xNZW1vcnlQQk88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciI+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3I8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+Z3N0Z2xtZW1vcnlwYm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyI+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzczwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5nc3RnbG1lbW9yeXBibzwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTM5NSwzMSArNTExLDExNSBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItc3RydWN0IiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItc3RydWN0IiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWFjdGl2ZSIgdGl0bGU9IlRoZSDigJxhY3RpdmXigJ0gcHJvcGVydHkiPkdzdEdMU2hhZGVyOmFjdGl2ZTwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1saW5rZWQiIHRpdGxlPSJUaGUg4oCcbGlua2Vk4oCdIHByb3BlcnR5Ij5Hc3RHTFNoYWRlcjpsaW5rZWQ8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tY29tcGlsZWQiIHRpdGxlPSJUaGUg4oCcY29tcGlsZWTigJ0gcHJvcGVydHkiPkdzdEdMU2hhZGVyOmNvbXBpbGVkPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMRXJyb3IiIHRpdGxlPSJlbnVtIEdzdEdMU0xFcnJvciI+R3N0R0xTTEVycm9yPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1mcmFnbWVudC1zcmMiIHRpdGxlPSJUaGUg4oCcZnJhZ21lbnQtc3Jj4oCdIHByb3BlcnR5Ij5Hc3RHTFNoYWRlcjpmcmFnbWVudC1zcmM8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xQcm9maWxlIiB0aXRsZT0iZW51bSBHc3RHTFNMUHJvZmlsZSI+R3N0R0xTTFByb2ZpbGU8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLXZlcnRleC1zcmMiIHRpdGxlPSJUaGUg4oCcdmVydGV4LXNyY+KAnSBwcm9wZXJ0eSI+R3N0R0xTaGFkZXI6dmVydGV4LXNyYzwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KK0dzdEdMU0xTdGFnZSwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyRXJyb3IiIHRpdGxlPSJlbnVtIEdzdEdMU2hhZGVyRXJyb3IiPkdzdEdMU2hhZGVyRXJyb3I8L2E+LCBlbnVtIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPmdzdGdsc2hhZGVyPC9hPgorR3N0R0xTTFN0YWdlQ2xhc3MsIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj5Hc3RHTFNMU3RhZ2U8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlclNvdXJjZVR5cGUiIHRpdGxlPSJlbnVtIEdzdEdMU2hhZGVyU291cmNlVHlwZSI+R3N0R0xTaGFkZXJTb3VyY2VUeXBlPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5nc3RnbHNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj5Hc3RHTFNMVmVyc2lvbjwvYT4sIGVudW0gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLUVSUk9SOkNBUFMiIHRpdGxlPSJHU1RfR0xTTF9FUlJPUiI+R1NUX0dMU0xfRVJST1I8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtZXJyb3ItcXVhcmsiIHRpdGxlPSJnc3RfZ2xzbF9lcnJvcl9xdWFya8KgKCkiPmdzdF9nbHNsX2Vycm9yX3F1YXJrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXByb2ZpbGUtZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nwqAoKSI+Z3N0X2dsc2xfcHJvZmlsZV9mcm9tX3N0cmluZzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1wcm9maWxlLXRvLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nwqAoKSI+Z3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX2NvbXBpbGUsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX2dldF9oYW5kbGUsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX2dldF9wcm9maWxlLCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj5Hc3RHTFNMU3RhZ2U8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xzbF9zdGFnZV9nZXRfc2hhZGVyX3R5cGUsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX2dldF92ZXJzaW9uLCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj5Hc3RHTFNMU3RhZ2U8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xzbF9zdGFnZV9uZXcsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X2ZyYWdtZW50LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iLmh0bWwjR3N0R0xTTFN0YWdlIj5Hc3RHTFNMU3RhZ2U8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF92ZXJ0ZXgsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZywgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5ncywgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+R3N0R0xTTFN0YWdlPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsc2xfc3RhZ2Vfc2V0X3N0cmluZ3MsIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtc3RyaW5nLWdldC12ZXJzaW9uLXByb2ZpbGUiIHRpdGxlPSJnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZcKgKCkiPmdzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nwqAoKSI+Z3N0X2dsc2xfdmVyc2lvbl9mcm9tX3N0cmluZzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLXRvLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmfCoCgpIj5nc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tdG8tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmfCoCgpIj5nc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwiIHRpdGxlPSJHc3RHTFNMIj5Hc3RHTFNMPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorR3N0R0xTdGVyZW9Eb3dubWl4LCBlbnVtIGluIEdzdEdMVmlld0NvbnZlcnQKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTQyNywxMSArNjI3LDQzIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZC5odG1sI0dzdEdMVXBsb2FkLXN0cnVjdCIgdGl0bGU9IkdzdEdMVXBsb2FkIj5Hc3RHTFVwbG9hZDwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj5Hc3RHTFVwbG9hZDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNHc3RHTFVwbG9hZE1ldGEtc3RydWN0IiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj5Hc3RHTFVwbG9hZE1ldGE8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj5Hc3RHTFVwbG9hZE1ldGE8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFZpZXdDb252ZXJ0LCBzdHJ1Y3QgaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorR3N0R0xWaWV3Q29udmVydDpkb3dubWl4LW1vZGUsIG9iamVjdCBwcm9wZXJ0eSBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFZpZXdDb252ZXJ0OmlucHV0LWZsYWdzLW92ZXJyaWRlLCBvYmplY3QgcHJvcGVydHkgaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorR3N0R0xWaWV3Q29udmVydDppbnB1dC1tb2RlLW92ZXJyaWRlLCBvYmplY3QgcHJvcGVydHkgaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorR3N0R0xWaWV3Q29udmVydDpvdXRwdXQtZmxhZ3Mtb3ZlcnJpZGUsIG9iamVjdCBwcm9wZXJ0eSBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CitHc3RHTFZpZXdDb252ZXJ0Om91dHB1dC1tb2RlLW92ZXJyaWRlLCBvYmplY3QgcHJvcGVydHkgaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorR3N0R0xWaWV3Q29udmVydENsYXNzLCBzdHJ1Y3QgaW4gR3N0R0xWaWV3Q29udmVydAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtNTExLDYgKzc0Myw1MCBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUFMTE9DOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19BTExPQyI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0M8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUJVRkZFUjpDQVBTIiB0aXRsZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQlVGRkVSIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVI8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj5Hc3RHTEJ1ZmZlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1VU0VSOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19VU0VSIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19VU0VSPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5nc3RnbGJhc2VtZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1WSURFTzpDQVBTIiB0aXRsZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVklERU8iPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1HUFUtSEFORExFOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUiPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRTwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtU1lTTUVNOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU08L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weSIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5wqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weS1kYXRhIiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YcKgKCkiPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGE8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZSIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlwqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIiB0aXRsZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YcKgKCkiPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGE8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtaW5pdCIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0wqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI2dzdC1nbC1hcGktZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xfYXBpX2Zyb21fc3RyaW5nwqAoKSI+Z3N0X2dsX2FwaV9mcm9tX3N0cmluZzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sIiB0aXRsZT0iR3N0R0xBUEkiPkdzdEdMQVBJPC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtNTM1LDE1ICs4MTEsMTA3IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HOkNBUFMiIHRpdGxlPSJHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRygpIj5HU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRzwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj5PcGVuR0wgRGVidWdnaW5nPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHU1QtR0wtQVNZTkMtQ0FULUxFVkVMLUxPRy12YWxpc3QiIHRpdGxlPSJHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QoKSI+R1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0dfdmFsaXN0PC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWXCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfZnJlZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj5PcGVuR0wgRGVidWdnaW5nPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZXplIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZcKgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWluaXQiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfaW5pdMKgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19pbml0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1uZXciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfbmV3wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX25ldzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj5PcGVuR0wgRGVidWdnaW5nPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctb3V0cHV0LWxvZy1tc2ciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2fCoCgpIj5nc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2c8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ8KgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnLXZhbGlzdCIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdMKgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj5PcGVuR0wgRGVidWdnaW5nPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctdGhhdyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z190aGF3wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3RoYXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+T3BlbkdMIERlYnVnZ2luZzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXVuc2V0IiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jIiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jwqAoKSI+Z3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij5Hc3RHTEJhc2VNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiIHRpdGxlPSJHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUUiPkdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRTwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYy1kYXRhIiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jX2RhdGHCoCgpIj5nc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+R3N0R0xCYXNlTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUjpDQVBTIiB0aXRsZT0iR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SIj5HU1RfR0xfQkFTRV9NRU1PUllfRVJST1I8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPmdzdGdsYmFzZW1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdCIgdGl0bGU9ImdzdF9nbF9iYXNlX21lbW9yeV9pbml0wqAoKSI+Z3N0X2dsX2Jhc2VfbWVtb3J5X2luaXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdC1vbmNlIiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXRfb25jZcKgKCkiPmdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktbWVtY3B5IiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNwecKgKCkiPmdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItYWxsb2MiIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX2FsbG9jwqAoKSI+Z3N0X2dsX2J1ZmZlcl9hbGxvYzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1hbGxvY2F0aW9uLXBhcmFtcy1uZXciIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ld8KgKCkiPmdzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtR0wtQlVGRkVSLUFMTE9DQVRPUi1OQU1FOkNBUFMiIHRpdGxlPSJHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FIj5HU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlciI+R3N0R0xCdWZmZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtZ2wtYnVmZmVyLWluaXQtb25jZSIgdGl0bGU9ImdzdF9nbF9idWZmZXJfaW5pdF9vbmNlwqAoKSI+Z3N0X2dsX2J1ZmZlcl9pbml0X29uY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyIj5Hc3RHTEJ1ZmZlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtZ2wtYnVmZmVyLXBvb2wtbmV3IiB0aXRsZT0iZ3N0X2dsX2J1ZmZlcl9wb29sX25ld8KgKCkiPmdzdF9nbF9idWZmZXJfcG9vbF9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPkdzdEdMQnVmZmVyUG9vbDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIiB0aXRsZT0iZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlc8KgKCkiPmdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIiB0aXRsZT0iZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlc8KgKCkiPmdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI2dzdC1nbC1jaGVjay1leHRlbnNpb24iIHRpdGxlPSJnc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uwqAoKSI+Z3N0X2dsX2NoZWNrX2V4dGVuc2lvbjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sIiB0aXRsZT0iR3N0R0xBUEkiPkdzdEdMQVBJPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZGVjaWRlLWFsbG9jYXRpb24iIHRpdGxlPSJnc3RfZ2xfY29sb3JfY29udmVydF9kZWNpZGVfYWxsb2NhdGlvbsKgKCkiPmdzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+R3N0R0xDb2xvckNvbnZlcnQ8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1maXhhdGUtY2FwcyIgdGl0bGU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9jYXBzwqAoKSI+Z3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIgdGl0bGU9IkdzdEdMQ29sb3JDb252ZXJ0Ij5Hc3RHTENvbG9yQ29udmVydDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTU4Myw3ICs5NTEsNyBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1c8KgKCkiPmdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1czwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1c8KgKCkiPmdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1czwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtNTkxLDcgKzk1OSw3IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC02MTUsMTUgKzk4MywxNSBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1mYm8iIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfZmJvwqAoKSI+Z3N0X2dsX2NvbnRleHRfZGVsX2ZibzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1mYm8iIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfZmJvwqAoKSI+Z3N0X2dsX2NvbnRleHRfZGVsX2ZibzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3RleHR1cmXCoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9IlV0aWxpdGllcyI+VXRpbGl0aWVzPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3RleHR1cmXCoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtNjYzLDE1ICsxMDMxLDE1IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLWZibyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl9mYm/CoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fZmJvPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLWZibyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl9mYm/CoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fZmJvPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZcKgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl90ZXh0dXJlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZcKgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl90ZXh0dXJlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC02OTEsNyArMTA1OSw3IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9ywqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9ywqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC03MTUsNiArMTA4MywxMCBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3Mtd2l0aC1wbGF0Zm9ybSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dldF9wcm9jX2FkZHJlc3Nfd2l0aF9wbGF0Zm9ybcKgKCkiPmdzdF9nbF9jb250ZXh0X2dldF9wcm9jX2FkZHJlc3Nfd2l0aF9wbGF0Zm9ybTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+R3N0R0xDb250ZXh0PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC10aHJlYWQiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZXRfdGhyZWFkwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2V0X3RocmVhZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+R3N0R0xDb250ZXh0PC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtNzM1LDYgKzExMDcsMTAgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1pcy1zaGFyZWQiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9pc19zaGFyZWTCoCgpIj5nc3RfZ2xfY29udGV4dF9pc19zaGFyZWQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPkdzdEdMQ29udGV4dDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1uZXciIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9uZXfCoCgpIj5nc3RfZ2xfY29udGV4dF9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPkdzdEdMQ29udGV4dDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KQEAgLTc0Myw3ICsxMTE5LDExIEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LWVycm9yIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9ywqAoKSI+Z3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LWVycm9yIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9ywqAoKSI+Z3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LXNoYXJlZC13aXRoIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfc2V0X3NoYXJlZF93aXRowqAoKSI+Z3N0X2dsX2NvbnRleHRfc2V0X3NoYXJlZF93aXRoPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij5Hc3RHTENvbnRleHQ8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC03NTEsMTEgKzExMzEsMTUgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsLWNvbnRleHQtc3VwcG9ydHMtZ2xzbC1wcm9maWxlLXZlcnNpb24iIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9zdXBwb3J0c19nbHNsX3Byb2ZpbGVfdmVyc2lvbsKgKCkiPmdzdF9nbF9jb250ZXh0X3N1cHBvcnRzX2dsc2xfcHJvZmlsZV92ZXJzaW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIgdGl0bGU9IkdzdEdMU0wiPkdzdEdMU0w8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtdGhyZWFkLWFkZCIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGTCoCgpIj5nc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij5Hc3RHTENvbnRleHQ8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtdXNlLWZiby12MiIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjLCoCgpIj5nc3RfZ2xfY29udGV4dF91c2VfZmJvX3YyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtdXNlLWZiby12MiIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjLCoCgpIj5nc3RfZ2xfY29udGV4dF91c2VfZmJvX3YyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC03NzksNiArMTE2MywxMCBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWNyZWF0ZS1jb250ZXh0IiB0aXRsZT0iZ3N0X2dsX2Rpc3BsYXlfY3JlYXRlX2NvbnRleHTCoCgpIj5nc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+R3N0R0xEaXNwbGF5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWZpbHRlci1nbC1hcGkiIHRpdGxlPSJnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpwqAoKSI+Z3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+R3N0R0xEaXNwbGF5PC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtODAzLDIzICsxMTkxLDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLW5ldyIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF9uZXfCoCgpIj5nc3RfZ2xfZG93bmxvYWRfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPkdzdEdMRG93bmxvYWQ8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1wZXJmb3JtLXdpdGgtZGF0YSIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YcKgKCkiPmdzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj5Hc3RHTERvd25sb2FkPC9hPgotPC9kdD4KLTxkZD48L2RkPgotPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtc2V0LWZvcm1hdCIgdGl0bGU9ImdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0wqAoKSI+Z3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIiB0aXRsZT0iR3N0R0xEb3dubG9hZCI+R3N0R0xEb3dubG9hZDwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXRyYW5zZm9ybS1jYXBzIiB0aXRsZT0iZ3N0X2dsX2Rvd25sb2FkX3RyYW5zZm9ybV9jYXBzwqAoKSI+Z3N0X2dsX2Rvd25sb2FkX3RyYW5zZm9ybV9jYXBzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPkdzdEdMRG93bmxvYWQ8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWVuc3VyZS1lbGVtZW50LWRhdGEiIHRpdGxlPSJnc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YcKgKCkiPmdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWVuc3VyZS1lbGVtZW50LWRhdGEiIHRpdGxlPSJnc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YcKgKCkiPmdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC04MzksNiArMTIxMSwxNCBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLWZvcm1hdC1mcm9tLWdsLXRleHR1cmUtdHlwZSIgdGl0bGU9ImdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGXCoCgpIj5nc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtZm9ybWF0LXR5cGUtbi1ieXRlcyIgdGl0bGU9ImdzdF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzwqAoKSI+Z3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwjZ3N0LWdsLWZyYW1lYnVmZmVyLWRlbGV0ZSIgdGl0bGU9ImdzdF9nbF9mcmFtZWJ1ZmZlcl9kZWxldGXCoCgpIj5nc3RfZ2xfZnJhbWVidWZmZXJfZGVsZXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCIgdGl0bGU9IkdzdEdMRnJhbWVidWZmZXIiPkdzdEdMRnJhbWVidWZmZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC04NTUsNTEgKzEyMzUsMTA3IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdlbmVyYXRlLXRleHR1cmUtZnVsbCIgdGl0bGU9ImdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGzCoCgpIj5nc3RfZ2xfZ2VuZXJhdGVfdGV4dHVyZV9mdWxsPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdlbmVyYXRlLXRleHR1cmUtZnVsbCIgdGl0bGU9ImdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGzCoCgpIj5nc3RfZ2xfZ2VuZXJhdGVfdGV4dHVyZV9mdWxsPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiIHRpdGxlPSJnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZcKgKCkiPmdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiIHRpdGxlPSJnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZcKgKCkiPmdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1jb250ZXh0LXF1ZXJ5IiB0aXRsZT0iZ3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5wqAoKSI+Z3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1zdGFydCIgdGl0bGU9ImdzdF9nbF9nZXRfcGxhbmVfc3RhcnTCoCgpIj5nc3RfZ2xfZ2V0X3BsYW5lX3N0YXJ0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1zZXQtY29udGV4dCIgdGl0bGU9ImdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHTCoCgpIj5nc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iVXRpbGl0aWVzIj5VdGlsaXRpZXM8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1jb250ZXh0LXF1ZXJ5IiB0aXRsZT0iZ3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5wqAoKSI+Z3N0X2dsX2hhbmRsZV9jb250ZXh0X3F1ZXJ5PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWFsbG9jIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9hbGxvY8KgKCkiPmdzdF9nbF9tZW1vcnlfYWxsb2M8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0IiB0aXRsZT0iZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dMKgKCkiPmdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktQUxMT0NBVE9SOkNBUFMiIHRpdGxlPSJHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiI+R1NUX0dMX01FTU9SWV9BTExPQ0FUT1I8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5nc3RnbG1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWluc2VydC1kZWJ1Zy1tYXJrZXIiIHRpdGxlPSJnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlcsKgKCkiPmdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIgdGl0bGU9Ik9wZW5HTCBkZWJ1Z2dpbmciPk9wZW5HTCBEZWJ1Z2dpbmc8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWNvcHktaW50by10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZcKgKCkiPmdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2NhdG9yLWdldC1kZWZhdWx0IiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHTCoCgpIj5nc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0IiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9pbml0wqAoKSI+Z3N0X2dsX21lbW9yeV9pbml0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiIHRpdGxlPSJHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FIj5HU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVywqAoKSI+Z3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS1pbnRvIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9jb3B5X2ludG/CoCgpIj5nc3RfZ2xfbWVtb3J5X2NvcHlfaW50bzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC13cmFwcGVkIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkwqAoKSI+Z3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWNvcHktdGV4aW1hZ2UiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2XCoCgpIj5nc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfd3JhcHBlZMKgKCkiPmdzdF9nbF9tZW1vcnlfd3JhcHBlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1oZWlnaHQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2hlaWdodMKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXdyYXBwZWQtdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlwqAoKSI+Z3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtaWQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkwqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9pZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS10YXJnZXQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3RhcmdldMKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXR5cGUiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGXCoCgpIj5nc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtd2lkdGgiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3dpZHRowqAoKSI+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0IiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9pbml0wqAoKSI+Z3N0X2dsX21lbW9yeV9pbml0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQtb25jZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfaW5pdF9vbmNlwqAoKSI+Z3N0X2dsX21lbW9yeV9pbml0X29uY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dTVC1HTC1NRU1PUlktUEJPLUFMTE9DQVRPUi1OQU1FOkNBUFMiIHRpdGxlPSJHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRSI+R1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUU8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5nc3RnbG1lbW9yeXBibzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWNvcHktaW50by10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmXCoCgpIj5nc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPkdzdEdMTWVtb3J5UEJPPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tZG93bmxvYWQtdHJhbnNmZXIiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3Bib19kb3dubG9hZF90cmFuc2ZlcsKgKCkiPmdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+R3N0R0xNZW1vcnlQQk88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1pbml0LW9uY2UiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3Bib19pbml0X29uY2XCoCgpIj5nc3RfZ2xfbWVtb3J5X3Bib19pbml0X29uY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5Hc3RHTE1lbW9yeVBCTzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLXVwbG9hZC10cmFuc2ZlciIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlcsKgKCkiPmdzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlcjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPkdzdEdMTWVtb3J5UEJPPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1yZWFkLXBpeGVscyIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHPCoCgpIj5nc3RfZ2xfbWVtb3J5X3JlYWRfcGl4ZWxzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVywqAoKSI+Z3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXI8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktdGV4c3ViaW1hZ2UiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlwqAoKSI+Z3N0X2dsX21lbW9yeV90ZXhzdWJpbWFnZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1WSURFTy1GT1JNQVRTLVNUUjpDQVBTIiB0aXRsZT0iR1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUiI+R1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtOTExLDE5OSArMTM0NywxNzkgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtcnVuLXF1ZXJ5IiB0aXRsZT0iZ3N0X2dsX3J1bl9xdWVyecKgKCkiPmdzdF9nbF9ydW5fcXVlcnk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJVdGlsaXRpZXMiPlV0aWxpdGllczwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtcnVuLXF1ZXJ5IiB0aXRsZT0iZ3N0X2dsX3J1bl9xdWVyecKgKCkiPmdzdF9nbF9ydW5fcXVlcnk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiIHRpdGxlPSJPcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXMiPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZXMtcGFyc2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlwqAoKSI+Z3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPmdzdGdsc2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2giIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2F0dGFjaMKgKCkiPmdzdF9nbF9zaGFkZXJfYXR0YWNoPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVydmFyaWFibGUtZGVzYyIgdGl0bGU9InN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyI+Z3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2M8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Z3N0Z2xzaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaC11bmxvY2tlZCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkwqAoKSI+Z3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZS1zZXQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0wqAoKSI+Z3N0X2dsX3NoYWRlcnZhcmlhYmxlX3NldDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPmdzdGdsc2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpIj5nc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiPmdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hdHRhY2gtc3RhZ2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWRldGFjaCIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZGV0YWNowqAoKSI+Z3N0X2dsX3NoYWRlcl9kZXRhY2g8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hbGwtd2l0aC1hdHRyaWJzLWFuZC1jaGVjayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVja8KgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVjazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1kZXRhY2gtdW5sb2NrZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZMKgKCkiPmdzdF9nbF9zaGFkZXJfZGV0YWNoX3VubG9ja2VkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYW5kLWNoZWNrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FuZF9jaGVja8KgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbmRfY2hlY2s8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiPmdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC1mLWFuZC1jaGVjayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2vCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X2ZfYW5kX2NoZWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdmYtYW5kLWNoZWNrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92Zl9hbmRfY2hlY2vCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1saW5rZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZMKgKCkiPmdzdF9nbF9zaGFkZXJfaXNfbGlua2VkPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LXYtYW5kLWNoZWNrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVja8KgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2s8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbGluayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbGlua8KgKCkiPmdzdF9nbF9zaGFkZXJfbGluazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR1NULUdMLVNIQURFUi1FUlJPUjpDQVBTIiB0aXRsZT0iR1NUX0dMX1NIQURFUl9FUlJPUiI+R1NUX0dMX1NIQURFUl9FUlJPUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPmdzdGdsc2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXciIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX25ld8KgKCkiPmdzdF9nbF9zaGFkZXJfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWVycm9yLXF1YXJrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFya8KgKCkiPmdzdF9nbF9zaGFkZXJfZXJyb3JfcXVhcms8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5nc3RnbHNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LWRlZmF1bHQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0wqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldy1saW5rLXdpdGgtc3RhZ2VzIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlc8KgKCkiPmdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWZyYWdtZW50LXNvdXJjZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctd2l0aC1zdGFnZXMiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlc8KgKCkiPmdzdF9nbF9zaGFkZXJfbmV3X3dpdGhfc3RhZ2VzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfcmVsZWFzZcKgKCkiPmdzdF9nbF9zaGFkZXJfcmVsZWFzZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtdmVydGV4LXNvdXJjZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X3ZlcnRleF9zb3VyY2XCoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UtdW5sb2NrZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWTCoCgpIj5nc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItaXMtY29tcGlsZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkwqAoKSI+Z3N0X2dsX3NoYWRlcl9pc19jb21waWxlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldyIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfbmV3wqAoKSI+Z3N0X2dsX3NoYWRlcl9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlwqAoKSI+Z3N0X2dsX3NoYWRlcl9yZWxlYXNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LWFjdGl2ZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X2FjdGl2ZcKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X2FjdGl2ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC1mcmFnbWVudC1zb3VyY2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xacKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Y8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2l2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Y8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Z2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80acKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2l2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80acKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGl2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4MmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3g0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4MmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl91c2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3VzZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3g0ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnY8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgotPC9kdD4KLTxkZD48L2RkPgotPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4M2Z2PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+R3N0R0xTaGFkZXI8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC12ZXJ0ZXgtc291cmNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj5Hc3RHTFNoYWRlcjwvYT4KLTwvZHQ+Ci08ZGQ+PC9kZD4KLTxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl91c2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3VzZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXNpemVkLWdsLWZvcm1hdC1mcm9tLWdsLWZvcm1hdC10eXBlIiB0aXRsZT0iZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlwqAoKSI+Z3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+CkBAIC0xMTIzLDcgKzE1MzksNDcgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0wqAoKSI+Z3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXdhaXQtY3B1IiB0aXRsZT0iZ3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdcKgKCkiPmdzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xTeW5jTWV0YSI+R3N0R0xTeW5jTWV0YTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC0yRC1TVFI6Q0FQUyIgdGl0bGU9IkdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFI8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVMtU1RSOkNBUFMiIHRpdGxlPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUiI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFI8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLWdsIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2zCoCgpIj5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nwqAoKSI+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFLVNUUjpDQVBTIiB0aXRsZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tYnVmZmVyLXBvb2wtb3B0aW9uIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbsKgKCkiPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1nbCIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbMKgKCkiPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLXN0cmluZyIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmfCoCgpIj5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+T3BlbkdMIEZvcm1hdHM8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdMKgKCkiPmdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj5PcGVuR0wgRm9ybWF0czwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtbi1ieXRlcyIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlc8KgKCkiPmdzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIiB0aXRsZT0iT3BlbkdMIEZvcm1hdHMiPk9wZW5HTCBGb3JtYXRzPC9hPgogPC9kdD4KIDxkZD48L2RkPgogPGR0PgpAQCAtMTEzMSwxOSArMTU4Nyw3IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLWFkZC10by1idWZmZXIiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX21ldGFfYWRkX3RvX2J1ZmZlcsKgKCkiPmdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj5Hc3RHTFVwbG9hZE1ldGE8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLWdldC1mb3JtYXQiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdMKgKCkiPmdzdF9nbF91cGxvYWRfbWV0YV9nZXRfZm9ybWF0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj5Hc3RHTFVwbG9hZE1ldGE8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLW5ldyIgdGl0bGU9ImdzdF9nbF91cGxvYWRfbWV0YV9uZXfCoCgpIj5nc3RfZ2xfdXBsb2FkX21ldGFfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj5Hc3RHTFVwbG9hZE1ldGE8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLXNldC1mb3JtYXQiIHRpdGxlPSJnc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdMKgKCkiPmdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj5Hc3RHTFVwbG9hZE1ldGE8L2E+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLWdldC1pbnB1dC10ZW1wbGF0ZS1jYXBzIiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9nZXRfaW5wdXRfdGVtcGxhdGVfY2Fwc8KgKCkiPmdzdF9nbF91cGxvYWRfZ2V0X2lucHV0X3RlbXBsYXRlX2NhcHM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj5Hc3RHTFVwbG9hZDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KQEAgLTExNTksMTAgKzE2MDMsNiBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1yZWxlYXNlLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXLCoCgpIj5nc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZCI+R3N0R0xVcGxvYWQ8L2E+Ci08L2R0PgotPGRkPjwvZGQ+Ci08ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXNldC1jYXBzIiB0aXRsZT0iZ3N0X2dsX3VwbG9hZF9zZXRfY2Fwc8KgKCkiPmdzdF9nbF91cGxvYWRfc2V0X2NhcHM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj5Hc3RHTFVwbG9hZDwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KQEAgLTExNzEsNiArMTYxMSw4MiBAQAogPC9kdD4KIDxkZD48L2RkPgogPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1nZXQtdGV4dHVyZS10YXJnZXQtbWFzayIgdGl0bGU9ImdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFza8KgKCkiPmdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFzazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQiIHRpdGxlPSJnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0wqAoKSI+Z3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQtZnJvbS1tYXNrIiB0aXRsZT0iZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2vCoCgpIj5nc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0X2Zyb21fbWFzazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2wtdmVyc2lvbi10by1nbHNsLXZlcnNpb24iIHRpdGxlPSJnc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb27CoCgpIj5nc3RfZ2xfdmVyc2lvbl90b19nbHNsX3ZlcnNpb248L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIiB0aXRsZT0iR3N0R0xTTCI+R3N0R0xTTDwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhwqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGHCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtaW5pdC1mdWxsIiB0aXRsZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbMKgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGw8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXciIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3wqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPkdzdEdMTWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLWRhdGEiIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YcKgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlwqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbF92aWV3X2NvbnZlcnRfZml4YXRlX2NhcHMsIGZ1bmN0aW9uIGluIEdzdEdMVmlld0NvbnZlcnQKKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbF92aWV3X2NvbnZlcnRfZ2V0X291dHB1dCwgZnVuY3Rpb24gaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9uZXcsIGZ1bmN0aW9uIGluIEdzdEdMVmlld0NvbnZlcnQKKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KK2dzdF9nbF92aWV3X2NvbnZlcnRfcGVyZm9ybSwgZnVuY3Rpb24gaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9yZXNldCwgZnVuY3Rpb24gaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfY2FwcywgZnVuY3Rpb24gaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfY29udGV4dCwgZnVuY3Rpb24gaW4gR3N0R0xWaWV3Q29udmVydAorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorZ3N0X2dsX3ZpZXdfY29udmVydF9zdWJtaXRfaW5wdXRfYnVmZmVyLCBmdW5jdGlvbiBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Citnc3RfZ2xfdmlld19jb252ZXJ0X3RyYW5zZm9ybV9jYXBzLCBmdW5jdGlvbiBpbiBHc3RHTFZpZXdDb252ZXJ0Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+CiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwjZ3N0LWdsLXdpbmRvdy1hbmRyb2lkLWVnbC1uZXciIHRpdGxlPSJnc3RfZ2xfd2luZG93X2FuZHJvaWRfZWdsX25ld8KgKCkiPmdzdF9nbF93aW5kb3dfYW5kcm9pZF9lZ2xfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93QW5kcm9pZC5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3dBbmRyb2lkIj5Hc3RHTFdpbmRvd0FuZHJvaWQ8L2E+CiA8L2R0PgogPGRkPjwvZGQ+CkBAIC0xMTk1LDEwICsxNzExLDYgQEAKIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxkdD4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctZHJhdy11bmxvY2tlZCIgdGl0bGU9ImdzdF9nbF93aW5kb3dfZHJhd191bmxvY2tlZMKgKCkiPmdzdF9nbF93aW5kb3dfZHJhd191bmxvY2tlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPkdzdEdMV2luZG93PC9hPgotPC9kdD4KLTxkZD48L2RkPgotPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwjR1NULUdMLVdJTkRPVy1FUlJPUjpDQVBTIiB0aXRsZT0iR1NUX0dMX1dJTkRPV19FUlJPUiI+R1NUX0dMX1dJTkRPV19FUlJPUjwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3ciPkdzdEdMV2luZG93PC9hPgogPC9kdD4KIDxkZD48L2RkPgpAQCAtMTU0MSw3ICsyMDUzLDE5IEBACiA8L2R0PgogPGRkPjwvZGQ+CiA8ZHQ+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtaXMtZ2wtbWVtb3J5IiB0aXRsZT0iZ3N0X2lzX2dsX21lbW9yecKgKCkiPmdzdF9pc19nbF9tZW1vcnk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5Ij5Hc3RHTE1lbW9yeTwvYT4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtaXMtZ2wtYmFzZS1tZW1vcnkiIHRpdGxlPSJnc3RfaXNfZ2xfYmFzZV9tZW1vcnnCoCgpIj5nc3RfaXNfZ2xfYmFzZV9tZW1vcnk8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1pcy1nbC1idWZmZXIiIHRpdGxlPSJnc3RfaXNfZ2xfYnVmZmVywqAoKSI+Z3N0X2lzX2dsX2J1ZmZlcjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXIiPkdzdEdMQnVmZmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLW1lbW9yeSIgdGl0bGU9ImdzdF9pc19nbF9tZW1vcnnCoCgpIj5nc3RfaXNfZ2xfbWVtb3J5PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtaXMtZ2wtbWVtb3J5LXBibyIgdGl0bGU9ImdzdF9pc19nbF9tZW1vcnlfcGJvwqAoKSI+Z3N0X2lzX2dsX21lbW9yeV9wYm88L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5Hc3RHTE1lbW9yeVBCTzwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KIDxhIG5hbWU9ImlkeEoiPjwvYT48aDMgY2xhc3M9InRpdGxlIj5KPC9oMz4KQEAgLTE2NTUsNiArMjE3OSwxMCBAQAogPGRkPjwvZGQ+CiA8YSBuYW1lPSJpZHhNIj48L2E+PGgzIGNsYXNzPSJ0aXRsZSI+TTwvaDM+CiA8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULU1BUC1HTDpDQVBTIiB0aXRsZT0iR1NUX01BUF9HTCI+R1NUX01BUF9HTDwvYT4sIG1hY3JvIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+Z3N0Z2xiYXNlbWVtb3J5PC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLXZjMXBhcnNlci5odG1sI01BWC1IUkQtTlVNLUxFQUtZLUJVQ0tFVFM6Q0FQUyIgdGl0bGU9Ik1BWF9IUkRfTlVNX0xFQUtZX0JVQ0tFVFMiPk1BWF9IUkRfTlVNX0xFQUtZX0JVQ0tFVFM8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLmh0bWwiIHRpdGxlPSJ2YzFwYXJzZXIiPnZjMXBhcnNlcjwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KQEAgLTI3NzEsNiArMzI5OSw0ODYgQEAKIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dTVC1QSE9UT0dSQVBIWS1TSEFLRS1SSVNLOkNBUFMiIHRpdGxlPSJHU1RfUEhPVE9HUkFQSFlfU0hBS0VfUklTSyI+R1NUX1BIT1RPR1JBUEhZX1NIQUtFX1JJU0s8L2E+LCBtYWNybyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCIgdGl0bGU9IkdzdFBob3RvZ3JhcGh5Ij5Hc3RQaG90b2dyYXBoeTwvYT4KIDwvZHQ+CiA8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyIj5Hc3RQbGF5ZXI8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWJ1ZmZlcmluZyIgdGl0bGU9IlRoZSDigJxidWZmZXJpbmfigJ0gc2lnbmFsIj5Hc3RQbGF5ZXI6OmJ1ZmZlcmluZzwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWR1cmF0aW9uLWNoYW5nZWQiIHRpdGxlPSJUaGUg4oCcZHVyYXRpb24tY2hhbmdlZOKAnSBzaWduYWwiPkdzdFBsYXllcjo6ZHVyYXRpb24tY2hhbmdlZDwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWVuZC1vZi1zdHJlYW0iIHRpdGxlPSJUaGUg4oCcZW5kLW9mLXN0cmVhbeKAnSBzaWduYWwiPkdzdFBsYXllcjo6ZW5kLW9mLXN0cmVhbTwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWVycm9yIiB0aXRsZT0iVGhlIOKAnGVycm9y4oCdIHNpZ25hbCI+R3N0UGxheWVyOjplcnJvcjwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLW1lZGlhLWluZm8tdXBkYXRlZCIgdGl0bGU9IlRoZSDigJxtZWRpYS1pbmZvLXVwZGF0ZWTigJ0gc2lnbmFsIj5Hc3RQbGF5ZXI6Om1lZGlhLWluZm8tdXBkYXRlZDwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLW11dGUtY2hhbmdlZCIgdGl0bGU9IlRoZSDigJxtdXRlLWNoYW5nZWTigJ0gc2lnbmFsIj5Hc3RQbGF5ZXI6Om11dGUtY2hhbmdlZDwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXBvc2l0aW9uLXVwZGF0ZWQiIHRpdGxlPSJUaGUg4oCccG9zaXRpb24tdXBkYXRlZOKAnSBzaWduYWwiPkdzdFBsYXllcjo6cG9zaXRpb24tdXBkYXRlZDwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXNlZWstZG9uZSIgdGl0bGU9IlRoZSDigJxzZWVrLWRvbmXigJ0gc2lnbmFsIj5Hc3RQbGF5ZXI6OnNlZWstZG9uZTwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXN0YXRlLWNoYW5nZWQiIHRpdGxlPSJUaGUg4oCcc3RhdGUtY2hhbmdlZOKAnSBzaWduYWwiPkdzdFBsYXllcjo6c3RhdGUtY2hhbmdlZDwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCIgdGl0bGU9IlRoZSDigJx2aWRlby1kaW1lbnNpb25zLWNoYW5nZWTigJ0gc2lnbmFsIj5Hc3RQbGF5ZXI6OnZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZDwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZvbHVtZS1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnHZvbHVtZS1jaGFuZ2Vk4oCdIHNpZ25hbCI+R3N0UGxheWVyOjp2b2x1bWUtY2hhbmdlZDwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXdhcm5pbmciIHRpdGxlPSJUaGUg4oCcd2FybmluZ+KAnSBzaWduYWwiPkdzdFBsYXllcjo6d2FybmluZzwvYT4sIG9iamVjdCBzaWduYWwgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LWF1ZGlvLXRyYWNrIiB0aXRsZT0iVGhlIOKAnGN1cnJlbnQtYXVkaW8tdHJhY2vigJ0gcHJvcGVydHkiPkdzdFBsYXllcjpjdXJyZW50LWF1ZGlvLXRyYWNrPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC1zdWJ0aXRsZS10cmFjayIgdGl0bGU9IlRoZSDigJxjdXJyZW50LXN1YnRpdGxlLXRyYWNr4oCdIHByb3BlcnR5Ij5Hc3RQbGF5ZXI6Y3VycmVudC1zdWJ0aXRsZS10cmFjazwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtdmlkZW8tdHJhY2siIHRpdGxlPSJUaGUg4oCcY3VycmVudC12aWRlby10cmFja+KAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOmN1cnJlbnQtdmlkZW8tdHJhY2s8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1kdXJhdGlvbiIgdGl0bGU9IlRoZSDigJxkdXJhdGlvbuKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOmR1cmF0aW9uPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tbWVkaWEtaW5mbyIgdGl0bGU9IlRoZSDigJxtZWRpYS1pbmZv4oCdIHByb3BlcnR5Ij5Hc3RQbGF5ZXI6bWVkaWEtaW5mbzwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLW11dGUiIHRpdGxlPSJUaGUg4oCcbXV0ZeKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOm11dGU8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1waXBlbGluZSIgdGl0bGU9IlRoZSDigJxwaXBlbGluZeKAnSBwcm9wZXJ0eSI+R3N0UGxheWVyOnBpcGVsaW5lPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcG9zaXRpb24iIHRpdGxlPSJUaGUg4oCccG9zaXRpb27igJ0gcHJvcGVydHkiPkdzdFBsYXllcjpwb3NpdGlvbjwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIgdGl0bGU9IlRoZSDigJxwb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWzigJ0gcHJvcGVydHkiPkdzdFBsYXllcjpwb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWw8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1yYXRlIiB0aXRsZT0iVGhlIOKAnHJhdGXigJ0gcHJvcGVydHkiPkdzdFBsYXllcjpyYXRlPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tc2lnbmFsLWRpc3BhdGNoZXIiIHRpdGxlPSJUaGUg4oCcc2lnbmFsLWRpc3BhdGNoZXLigJ0gcHJvcGVydHkiPkdzdFBsYXllcjpzaWduYWwtZGlzcGF0Y2hlcjwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXN1YnVyaSIgdGl0bGU9IlRoZSDigJxzdWJ1cmnigJ0gcHJvcGVydHkiPkdzdFBsYXllcjpzdWJ1cmk8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS11cmkiIHRpdGxlPSJUaGUg4oCcdXJp4oCdIHByb3BlcnR5Ij5Hc3RQbGF5ZXI6dXJpPC9hPiwgb2JqZWN0IHByb3BlcnR5IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdmlkZW8tcmVuZGVyZXIiIHRpdGxlPSJUaGUg4oCcdmlkZW8tcmVuZGVyZXLigJ0gcHJvcGVydHkiPkdzdFBsYXllcjp2aWRlby1yZW5kZXJlcjwvYT4sIG9iamVjdCBwcm9wZXJ0eSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXZvbHVtZSIgdGl0bGU9IlRoZSDigJx2b2x1bWXigJ0gcHJvcGVydHkiPkdzdFBsYXllcjp2b2x1bWU8L2E+LCBvYmplY3QgcHJvcGVydHkgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mby1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJBdWRpb0luZm8iPkdzdFBsYXllckF1ZGlvSW5mbzwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj5Hc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJFcnJvciIgdGl0bGU9ImVudW0gR3N0UGxheWVyRXJyb3IiPkdzdFBsYXllckVycm9yPC9hPiwgZW51bSBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllck1lZGlhSW5mbyI+R3N0UGxheWVyTWVkaWFJbmZvPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXItc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciI+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIiB0aXRsZT0ic3RydWN0IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UiPkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2U8L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU3RhdGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllclN0YXRlIj5Hc3RQbGF5ZXJTdGF0ZTwvYT4sIGVudW0gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyU3RyZWFtSW5mbyI+R3N0UGxheWVyU3RyZWFtSW5mbzwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllclN1YnRpdGxlSW5mbyI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8tc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyVmlkZW9JbmZvIj5Hc3RQbGF5ZXJWaWRlb0luZm88L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlci1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9hPiwgc3RydWN0IGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UiIHRpdGxlPSJzdHJ1Y3QgR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSI+R3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZTwvYT4sIHN0cnVjdCBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24tc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdFBsYXllclZpc3VhbGl6YXRpb24iPkdzdFBsYXllclZpc3VhbGl6YXRpb248L2E+LCBzdHJ1Y3QgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbiI+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb248L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtYml0cmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZcKgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWNoYW5uZWxzIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVsc8KgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1sYW5ndWFnZSIgdGl0bGU9ImdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2XCoCgpIj5nc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2xhbmd1YWdlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbWF4LWJpdHJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlwqAoKSI+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LXNhbXBsZS1yYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZcKgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWNvbG9yLWJhbGFuY2UtdHlwZS1nZXQtbmFtZSIgdGl0bGU9ImdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lwqAoKSI+Z3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUVSUk9SOkNBUFMiIHRpdGxlPSJHU1RfUExBWUVSX0VSUk9SIj5HU1RfUExBWUVSX0VSUk9SPC9hPiwgbWFjcm8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1lcnJvci1nZXQtbmFtZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWXCoCgpIj5nc3RfcGxheWVyX2Vycm9yX2dldF9uYW1lPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtYXVkaW8tc3RyZWFtcyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXPCoCgpIj5nc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY29sb3ItYmFsYW5jZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2XCoCgpIj5nc3RfcGxheWVyX2dldF9jb2xvcl9iYWxhbmNlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1hdWRpby10cmFjayIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2vCoCgpIj5nc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1zdWJ0aXRsZS10cmFjayIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2vCoCgpIj5nc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC12aWRlby10cmFjayIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2vCoCgpIj5nc3RfcGxheWVyX2dldF9jdXJyZW50X3ZpZGVvX3RyYWNrPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC12aXN1YWxpemF0aW9uIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uwqAoKSI+Z3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtZHVyYXRpb24iIHRpdGxlPSJnc3RfcGxheWVyX2dldF9kdXJhdGlvbsKgKCkiPmdzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbWVkaWEtaW5mbyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm/CoCgpIj5nc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbXV0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X211dGXCoCgpIj5nc3RfcGxheWVyX2dldF9tdXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcGlwZWxpbmUiIHRpdGxlPSJnc3RfcGxheWVyX2dldF9waXBlbGluZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24iIHRpdGxlPSJnc3RfcGxheWVyX2dldF9wb3NpdGlvbsKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFswqAoKSI+Z3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3JhdGXCoCgpIj5nc3RfcGxheWVyX2dldF9yYXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtc3RyZWFtcyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXPCoCgpIj5nc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpwqAoKSI+Z3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfdXJpwqAoKSI+Z3N0X3BsYXllcl9nZXRfdXJpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtdmlkZW8tc3RyZWFtcyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXPCoCgpIj5nc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtdm9sdW1lIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfdm9sdW1lwqAoKSI+Z3N0X3BsYXllcl9nZXRfdm9sdW1lPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj5nc3RwbGF5ZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCNnc3QtcGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLW5ldyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3wqAoKSI+Z3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXc8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyIj5nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWhhcy1jb2xvci1iYWxhbmNlIiB0aXRsZT0iZ3N0X3BsYXllcl9oYXNfY29sb3JfYmFsYW5jZcKgKCkiPmdzdF9wbGF5ZXJfaGFzX2NvbG9yX2JhbGFuY2U8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPmdzdHBsYXllcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1jb250YWluZXItZm9ybWF0IiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0wqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtZHVyYXRpb24iIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uwqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9kdXJhdGlvbjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWltYWdlLXNhbXBsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfaW1hZ2Vfc2FtcGxlwqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1zdHJlYW0tbGlzdCIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3TCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3N0cmVhbV9saXN0PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGFncyIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFnc8KgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFnczwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRpdGxlIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZcKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGl0bGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC11cmkiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyacKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdXJpPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1pcy1zZWVrYWJsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZcKgKCkiPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItbmV3IiB0aXRsZT0iZ3N0X3BsYXllcl9uZXfCoCgpIj5nc3RfcGxheWVyX25ldzwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItcGF1c2UiIHRpdGxlPSJnc3RfcGxheWVyX3BhdXNlwqAoKSI+Z3N0X3BsYXllcl9wYXVzZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItcGxheSIgdGl0bGU9ImdzdF9wbGF5ZXJfcGxhecKgKCkiPmdzdF9wbGF5ZXJfcGxheTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2VlayIgdGl0bGU9ImdzdF9wbGF5ZXJfc2Vla8KgKCkiPmdzdF9wbGF5ZXJfc2VlazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2vCoCgpIj5nc3RfcGxheWVyX3NldF9hdWRpb190cmFjazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrLWVuYWJsZWQiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkwqAoKSI+Z3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LWNvbG9yLWJhbGFuY2UiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlwqAoKSI+Z3N0X3BsYXllcl9zZXRfY29sb3JfYmFsYW5jZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LW11dGUiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9tdXRlwqAoKSI+Z3N0X3BsYXllcl9zZXRfbXV0ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbMKgKCkiPmdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9yYXRlwqAoKSI+Z3N0X3BsYXllcl9zZXRfcmF0ZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2vCoCgpIj5nc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFjazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXRyYWNrLWVuYWJsZWQiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkwqAoKSI+Z3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXVyaSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyacKgKCkiPmdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyaTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXVyaSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3VyacKgKCkiPmdzdF9wbGF5ZXJfc2V0X3VyaTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpZGVvLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2vCoCgpIj5nc3RfcGxheWVyX3NldF92aWRlb190cmFjazwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpZGVvLXRyYWNrLWVuYWJsZWQiIHRpdGxlPSJnc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkwqAoKSI+Z3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24iIHRpdGxlPSJnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uwqAoKSI+Z3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbjwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24tZW5hYmxlZCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZMKgKCkiPmdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZvbHVtZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3ZvbHVtZcKgKCkiPmdzdF9wbGF5ZXJfc2V0X3ZvbHVtZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc3RhdGUtZ2V0LW5hbWUiIHRpdGxlPSJnc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lwqAoKSI+Z3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc3RvcCIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RvcMKgKCkiPmdzdF9wbGF5ZXJfc3RvcDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllciI+Z3N0cGxheWVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1jYXBzIiB0aXRsZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2Fwc8KgKCkiPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHM8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY29kZWMiIHRpdGxlPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlY8KgKCkiPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWluZGV4IiB0aXRsZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXjCoCgpIj5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1zdHJlYW0tdHlwZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlwqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtdGFncyIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3PCoCgpIj5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3VidGl0bGUtaW5mby1nZXQtbGFuZ3VhZ2UiIHRpdGxlPSJnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlwqAoKSI+Z3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF9sYW5ndWFnZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWJpdHJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1mcmFtZXJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2ZyYW1lcmF0ZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtaGVpZ2h0IiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9oZWlnaHTCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LW1heC1iaXRyYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9tYXhfYml0cmF0ZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLW1lZGlhaW5mbyI+Z3N0cGxheWVyLW1lZGlhaW5mbzwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1waXhlbC1hc3BlY3QtcmF0aW8iIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpb8KgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIgdGl0bGU9ImdzdHBsYXllci1tZWRpYWluZm8iPmdzdHBsYXllci1tZWRpYWluZm88L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtd2lkdGgiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRowqAoKSI+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aDwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWV4cG9zZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2XCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciI+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZ2V0LXJlbmRlci1yZWN0YW5nbGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIj5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1nZXQtd2luZG93LWhhbmRsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfd2luZG93X2hhbmRsZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfd2luZG93X2hhbmRsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIiPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLW5ldyIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXfCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3PC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciI+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXI8L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXJlbmRlci1yZWN0YW5nbGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGU8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIj5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtd2luZG93LWhhbmRsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIiPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9ucy1mcmVlIiB0aXRsZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlwqAoKSI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbiI+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb248L2E+Cis8L2R0PgorPGRkPjwvZGQ+Cis8ZHQ+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWdldCIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0wqAoKSI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQ8L2E+LCBmdW5jdGlvbiBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aXN1YWxpemF0aW9uIj5nc3RwbGF5ZXItdmlzdWFsaXphdGlvbjwvYT4KKzwvZHQ+Cis8ZGQ+PC9kZD4KKzxkdD4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbi1jb3B5IiB0aXRsZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHnCoCgpIj5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weTwvYT4sIGZ1bmN0aW9uIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sIiB0aXRsZT0iZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24iPmdzdHBsYXllci12aXN1YWxpemF0aW9uPC9hPgorPC9kdD4KKzxkZD48L2RkPgorPGR0PgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWZyZWUiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZcKgKCkiPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlPC9hPiwgZnVuY3Rpb24gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbiI+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb248L2E+Cis8L2R0PgorPGRkPjwvZGQ+CiA8YSBuYW1lPSJpZHhUIj48L2E+PGgzIGNsYXNzPSJ0aXRsZSI+VDwvaDM+CiA8ZHQ+CiBHU1RfVFlQRV9DQU1FUkFCSU5fTU9ERSwgbWFjcm8gaW4gZ3N0Y2FtZXJhYmluLWVudW0KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2Jhc2UuaHRtbCBiL2RvY3MvbGlicy9odG1sL2Jhc2UuaHRtbAppbmRleCA0ZTRmNzY4Li5lZTgyNmMwIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9iYXNlLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvYmFzZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R1N0cmVhbWVyIEJhc2UgY2xhc3NlcyBmcm9tIGdzdC1wbHVnaW5zLWJhZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLmh0bWwiIHRpdGxlPSJHc3RJbnNlcnRiaW4iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvY2gwNy5odG1sIGIvZG9jcy9saWJzL2h0bWwvY2gwOC5odG1sCnNpbWlsYXJpdHkgaW5kZXggODElCnJlbmFtZSBmcm9tIGRvY3MvbGlicy9odG1sL2NoMDcuaHRtbApyZW5hbWUgdG8gZG9jcy9saWJzL2h0bWwvY2gwOC5odG1sCmluZGV4IGI2MTcwYTAuLjVmMTQ1ZWUgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2NoMDcuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9jaDA4Lmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkludGVyZmFjZXM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiIHRpdGxlPSJQYXJ0wqBJLsKgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIExpYnJhcmllcyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd1gxMSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbiI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwiIHRpdGxlPSJHc3RQaG90b2dyYXBoeSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMTYsMTIgKzE2LDEyIEBACiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0iY2hhcHRlciI+CiA8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIj4KLTxhIG5hbWU9ImlkLTEuMi4xMCI+PC9hPkludGVyZmFjZXM8L2gyPjwvZGl2PjwvZGl2PjwvZGl2PgorPGEgbmFtZT0iaWQtMS4yLjExIj48L2E+SW50ZXJmYWNlczwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+CiA8ZGl2IGNsYXNzPSJ0b2MiPjxkbCBjbGFzcz0idG9jIj48ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCI+R3N0UGhvdG9ncmFwaHk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIEludGVyZmFjZSBmb3IgZGlnaXRhbCBpbWFnZSBjYXB0dXJlIGVsZW1lbnRzPC9zcGFuPgogPC9kdD48L2RsPjwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvY29kZWNwYXJzZXJzLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9jb2RlY3BhcnNlcnMuaHRtbAppbmRleCBhNzc2ZGVhLi4xMjU5MDc4IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9jb2RlY3BhcnNlcnMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9jb2RlY3BhcnNlcnMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkJpdHN0cmVhbSBwYXJzaW5nIExpYnJhcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiIHRpdGxlPSJQYXJ0wqBJLsKgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIExpYnJhcmllcyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImNvbXBpbGluZy5odG1sIiB0aXRsZT0iQ29tcGlsaW5nIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2NvbXBpbGluZy5odG1sIGIvZG9jcy9saWJzL2h0bWwvY29tcGlsaW5nLmh0bWwKaW5kZXggYmUzNjEwZi4uYzljYTMzYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvY29tcGlsaW5nLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvY29tcGlsaW5nLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Db21waWxpbmc6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLmh0bWwiIHRpdGxlPSJQYXJ0wqBJLsKgR1N0cmVhbWVyIEJhZCBQbHVnaW5zIExpYnJhcmllcyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ2wuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dsLmh0bWwKaW5kZXggMDM5NjE2YS4uZmM3NGVkYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ2wuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nbC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+T3BlbkdMIEhlbHBlciBMaWJyYXJ5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RWaWRlb0FnZ3JlZ2F0b3JQYWQuaHRtbCIgdGl0bGU9IkdzdFZpZGVvQWdncmVnYXRvclBhZCI+CkBAIC0yNyw2ICsyNywxNSBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiPkdzdEdMQVBJPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCI+R3N0R0xCYXNlTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIj5Hc3RHTEJhc2VGaWx0ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCYXNlVHJhbnNmb3JtPC9zcGFuPiBzdWJjbGFzcyBmb3IgdHJhbnNmb3JtaW4gT3BlbkdMIHJlc291cmNlczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCI+R3N0R0xCdWZmZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgYnVmZmVyczwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiPkdzdEdMQnVmZmVyUG9vbDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgYnVmZmVyIHBvb2wgZm9yIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj4gb2JqZWN0czwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC01NCwyNSArNjMsMjggQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCI+R3N0R0xEaXNwbGF5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCB3aW5kb3cgc3lzdGVtIGRpc3BsYXkgY29ubmVjdGlvbiBhYnN0cmFjdGlvbjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIj5Hc3RHTERvd25sb2FkPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBhbiBvYmplY3QgdGhhdCBkb3dubG9hZHMgR0wgdGV4dHVyZXM8L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiPkdzdEVHTEltYWdlTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+R3N0R0xCYXNlRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEZpbHRlci5odG1sIj5Hc3RHTEZpbHRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIj5Hc3RHTEZyYW1lYnVmZmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIj5Hc3RHTE1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIj5Hc3RHTE1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCI+R3N0R0xTaGFkZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCI+R3N0R0xNZW1vcnlQQk88L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiPkdzdEdMU2hhZGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBvYmplY3QgcmVwcmVzZW50aW5nIGFuIE9wZW5HTCBzaGFkZXIgcHJvZ3JhbTwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIj5Hc3RHTFNMPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBoZWxwZXJzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9Ii5odG1sIj5Hc3RHTFNMU3RhZ2U8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG9iamVjdCBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBzaGFkZXIgc3RhZ2VzPC9zcGFuPgogPC9kdD4KIDxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiPkdzdEdMU3luY01ldGE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CkBAIC04MSwxMiArOTMsNiBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiPkdzdEdMVXBsb2FkPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBhbiBvYmplY3QgdGhhdCB1cGxvYWRzIHRvIEdMIHRleHR1cmVzPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCI+R3N0R0xVcGxvYWRNZXRhPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBhbiBvYmplY3QgdGhhdCBwcm92aWRlcyA8c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhPC9zcGFuPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwiPlV0aWxpdGllczwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCI+R3N0R0xXaW5kb3c8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIHdpbmRvdy9zdXJmYWNlIGFic3RyYWN0aW9uPC9zcGFuPgogPC9kdD4KIDxkdD4KQEAgLTEwNyw2ICsxMTMsMTUgQEAKIDxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sIj5Hc3RHTFdpbmRvd1gxMTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIj5PcGVuR0wgZGVidWdnaW5nPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBoZWxwZXIgcm91dGluZXMgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgZGVidWdnaW5nPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCI+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIj5PcGVuR0wgRm9ybWF0czwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KKzwvZHQ+CiA8L2RsPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLmRldmhlbHAyIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLmRldmhlbHAyCmluZGV4IDhjYjBjOGIuLmI5MmQxYmYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC5kZXZoZWxwMgorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAuZGV2aGVscDIKQEAgLTM0LDYgKzM0LDkgQEAKICAgICAgIDwvc3ViPgogICAgICAgPHN1YiBuYW1lPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiIGxpbms9ImdsLmh0bWwiPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQVBJIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xCYXNlTWVtb3J5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQmFzZUZpbHRlciIgbGluaz0iR3N0R0xCYXNlRmlsdGVyLmh0bWwiLz4KKyAgICAgICAgPHN1YiBuYW1lPSJHc3RHTEJ1ZmZlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQnVmZmVyUG9vbCIgbGluaz0iR3N0R0xCdWZmZXJQb29sLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTENvbG9yQ29udmVydCIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQ29udGV4dCIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwiLz4KQEAgLTQzLDE3ICs0NiwxNiBAQAogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMQ29udGV4dEdMWCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0R0xYLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTENvbnRleHRXR0wiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xEaXNwbGF5IiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCIvPgotICAgICAgICA8c3ViIG5hbWU9IkdzdEdMRG93bmxvYWQiIGxpbms9IkdzdEdMRG93bmxvYWQuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEVHTEltYWdlTWVtb3J5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIi8+Ci0gICAgICAgIDxzdWIgbmFtZT0iR3N0R0xCYXNlRmlsdGVyIiBsaW5rPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCIvPgogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMRmlsdGVyIiBsaW5rPSJHc3RHTEZpbHRlci5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xGcmFtZWJ1ZmZlciIgbGluaz0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIi8+Ci0gICAgICAgIDxzdWIgbmFtZT0iR3N0R0xNZW1vcnkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiLz4KLSAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFNoYWRlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9IkdzdEdMTWVtb3J5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xNZW1vcnlQQk8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwiLz4KKyAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFNoYWRlciIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9IkdzdEdMU0wiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9IkdzdEdMU0xTdGFnZSIgbGluaz0iLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFN5bmNNZXRhIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFVwbG9hZCIgbGluaz0iR3N0R0xVcGxvYWQuaHRtbCIvPgotICAgICAgICA8c3ViIG5hbWU9IkdzdEdMVXBsb2FkTWV0YSIgbGluaz0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiLz4KLSAgICAgICAgPHN1YiBuYW1lPSJVdGlsaXRpZXMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xXaW5kb3ciIGxpbms9IkdzdEdMV2luZG93Lmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFdpbmRvd0FuZHJvaWQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93QW5kcm9pZC5odG1sIi8+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0R0xXaW5kb3dDb2NvYSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dDb2NvYS5odG1sIi8+CkBAIC02MSw4ICs2MywxOCBAQAogICAgICAgICA8c3ViIG5hbWU9IkdzdEdMV2luZG93V2F5bGFuZCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXYXlsYW5kLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFdpbmRvd1dpbjMyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dpbjMyLmh0bWwiLz4KICAgICAgICAgPHN1YiBuYW1lPSJHc3RHTFdpbmRvd1gxMSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9Ik9wZW5HTCBkZWJ1Z2dpbmciIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwiLz4KKyAgICAgICAgPHN1YiBuYW1lPSJPcGVuR0wgRm9ybWF0cyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIvPgogICAgICAgPC9zdWI+Ci0gICAgICA8c3ViIG5hbWU9IkludGVyZmFjZXMiIGxpbms9ImNoMDcuaHRtbCI+CisgICAgICA8c3ViIG5hbWU9IlBsYXllciBMaWJyYXJ5IiBsaW5rPSJwbGF5ZXIuaHRtbCI+CisgICAgICAgIDxzdWIgbmFtZT0iZ3N0cGxheWVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9ImdzdHBsYXllci1tZWRpYWluZm8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCIvPgorICAgICAgICA8c3ViIG5hbWU9ImdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sIi8+CisgICAgICAgIDxzdWIgbmFtZT0iZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiLz4KKyAgICAgICAgPHN1YiBuYW1lPSJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCIvPgorICAgICAgPC9zdWI+CisgICAgICA8c3ViIG5hbWU9IkludGVyZmFjZXMiIGxpbms9ImNoMDguaHRtbCI+CiAgICAgICAgIDxzdWIgbmFtZT0iR3N0UGhvdG9ncmFwaHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwiLz4KICAgICAgIDwvc3ViPgogICAgIDwvc3ViPgpAQCAtNDMzLDE5ICs0NDUsNjggQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FwaV9mcm9tX3N0cmluZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLWFwaS1mcm9tLXN0cmluZyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtcGxhdGZvcm0tdG8tc3RyaW5nIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9wbGF0Zm9ybV9mcm9tX3N0cmluZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLXBsYXRmb3JtLWZyb20tc3RyaW5nIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jaGVja19leHRlbnNpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI2dzdC1nbC1jaGVjay1leHRlbnNpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMQVBJIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMQVBJIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTFBsYXRmb3JtIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMUGxhdGZvcm0iLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0FQSV9HTEVTMV9OQU1FIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktR0xFUzEtTkFNRTpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BUElfR0xFUzJfTkFNRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtQVBJLUdMRVMyLU5BTUU6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQVBJX09QRU5HTDNfTkFNRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtQVBJLU9QRU5HTDMtTkFNRTpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BUElfT1BFTkdMX05BTUUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1PUEVOR0wtTkFNRTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9NQVBfR0wiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1NQVAtR0w6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQkFTRV9NRU1PUllfRVJST1IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19BTExPQyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQUxMT0M6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1TWVNNRU06Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtR1BVLUhBTkRMRTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1VTRVIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVVTRVI6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1pbml0IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHkiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQtb25jZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1pbml0IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9pc19nbF9iYXNlX21lbW9yecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1pcy1nbC1iYXNlLW1lbW9yeSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24iIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24iIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2PCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktYWxsb2MiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jX2RhdGHCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktYWxsb2MtZGF0YSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LW1lbWNweSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3Itc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktQUxMT0NBVE9SLU5BTUU6Q0FQUyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xCYXNlTWVtb3J5RXJyb3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUVycm9yIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5VHJhbnNmZXIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCYXNlTWVtb3J5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMQmFzZUZpbHRlciIgbGluaz0iR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCYXNlRmlsdGVyQ2xhc3MiIGxpbms9IkdzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlckNsYXNzIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjb250ZXh04oCdIHByb3BlcnR5IiBsaW5rPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXItLWNvbnRleHQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2J1ZmZlcl9pbml0X29uY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItaW5pdC1vbmNlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9pc19nbF9idWZmZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1pcy1nbC1idWZmZXIiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2J1ZmZlcl9hbGxvY8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1hbGxvYyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQlVGRkVSOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19uZXfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItYWxsb2NhdGlvbi1wYXJhbXMtbmV3IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEJ1ZmZlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlciIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMQnVmZmVyQWxsb2NhdG9yIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR1NULUdMLUJVRkZFUi1BTExPQ0FUT1ItTkFNRTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtQ0FQUy1GRUFUVVJFLU1FTU9SWS1HTC1CVUZGRVI6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYnVmZmVyX3Bvb2xfbmV3wqAoKSIgbGluaz0iR3N0R0xCdWZmZXJQb29sLmh0bWwjZ3N0LWdsLWJ1ZmZlci1wb29sLW5ldyIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEdMQnVmZmVyUG9vbCIgbGluaz0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEdMQnVmZmVyUG9vbENsYXNzIiBsaW5rPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2xDbGFzcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtc8KgKCkiIGxpbms9IkdzdEdMQnVmZmVyUG9vbC5odG1sI2dzdC1idWZmZXItcG9vbC1jb25maWctZ2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zwqAoKSIgbGluaz0iR3N0R0xCdWZmZXJQb29sLmh0bWwjZ3N0LWJ1ZmZlci1wb29sLWNvbmZpZy1zZXQtZ2wtYWxsb2NhdGlvbi1wYXJhbXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMQnVmZmVyUG9vbCIgbGluaz0iR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCdWZmZXJQb29sQ2xhc3MiIGxpbms9IkdzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbENsYXNzIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X25ld8KgKCkiIGxpbms9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtbmV3Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzwqAoKSIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1zZXQtY2FwcyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29sb3JfY29udmVydF90cmFuc2Zvcm1fY2Fwc8KgKCkiIGxpbms9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtdHJhbnNmb3JtLWNhcHMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZml4YXRlX2NhcHPCoCgpIiBsaW5rPSJHc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LWZpeGF0ZS1jYXBzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uwqAoKSIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1kZWNpZGUtYWxsb2NhdGlvbiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29sb3JfY29udmVydF9wZXJmb3JtwqAoKSIgbGluaz0iR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1wZXJmb3JtIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMiIGxpbms9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjR1NULUdMLUNPTE9SLUNPTlZFUlQtRk9STUFUUzpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9DT0xPUl9DT05WRVJUX1ZJREVPX0NBUFMiIGxpbms9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjR1NULUdMLUNPTE9SLUNPTlZFUlQtVklERU8tQ0FQUyIvPgpAQCAtNDYxLDYgKzUyMiw3IEBACiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2FjdGl2YXRlwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtYWN0aXZhdGUiIHNpbmNlPSIxLjQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZGVmYXVsdF9nZXRfcHJvY19hZGRyZXNzwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVmYXVsdC1nZXQtcHJvYy1hZGRyZXNzIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dldF9wcm9jX2FkZHJlc3PCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtcHJvYy1hZGRyZXNzIiBzaW5jZT0iMS40Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dldF9wcm9jX2FkZHJlc3Nfd2l0aF9wbGF0Zm9ybcKgKCkiIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3Mtd2l0aC1wbGF0Zm9ybSIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZXRfd2luZG93wqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXdpbmRvdyIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9zZXRfd2luZG93wqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LXdpbmRvdyIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtdGhyZWFkLWFkZCIgc2luY2U9IjEuNCIvPgpAQCAtNDcyLDYgKzUzNCw4IEBACiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2FwacKgKCkiIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1jdXJyZW50LWdsLWFwaSIgc2luY2U9IjEuNiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZXRfdGhyZWFkwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXRocmVhZCIgc2luY2U9IjEuNiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9jYW5fc2hhcmXCoCgpIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1jYW4tc2hhcmUiIHNpbmNlPSIxLjYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtaXMtc2hhcmVkIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aMKgKCkiIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1zaGFyZWQtd2l0aCIgc2luY2U9IjEuOCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZmVhdHVyZSIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uwqAoKSIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZ2wtdmVyc2lvbiIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZXRfZ2xfdmVyc2lvbsKgKCkiIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1nbC12ZXJzaW9uIiBzaW5jZT0iMS40Ii8+CkBAIC01MDUsMTcgKzU2OSwxMyBAQAogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZGlzcGxheV9hZGRfY29udGV4dMKgKCkiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWFkZC1jb250ZXh0IiBzaW5jZT0iMS42Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWTCoCgpIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNnc3QtZ2wtZGlzcGxheS1nZXQtZ2wtY29udGV4dC1mb3ItdGhyZWFkIiBzaW5jZT0iMS42Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kaXNwbGF5X2dldF9oYW5kbGXCoCgpIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNnc3QtZ2wtZGlzcGxheS1nZXQtaGFuZGxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kaXNwbGF5X2NyZWF0ZV9jb250ZXh0wqAoKSIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktY3JlYXRlLWNvbnRleHQiIHNpbmNlPSIxLjYiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2NvbnRleHRfZ2V0X2dsX2Rpc3BsYXnCoCgpIiBsaW5rPSJHc3RHTERpc3BsYXkuaHRtbCNnc3QtY29udGV4dC1nZXQtZ2wtZGlzcGxheSIgc2luY2U9IjEuNCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfY29udGV4dF9zZXRfZ2xfZGlzcGxhecKgKCkiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sI2dzdC1jb250ZXh0LXNldC1nbC1kaXNwbGF5IiBzaW5jZT0iMS40Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9ESVNQTEFZX0NPTlRFWFRfVFlQRSIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjR1NULUdMLURJU1BMQVktQ09OVEVYVC1UWVBFOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMRGlzcGxheVR5cGUiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sI0dzdEdMRGlzcGxheVR5cGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMRGlzcGxheSIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjR3N0R0xEaXNwbGF5LXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnGNyZWF0ZS1jb250ZXh04oCdIHNpZ25hbCIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjR3N0R0xEaXNwbGF5LWNyZWF0ZS1jb250ZXh0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kb3dubG9hZF9uZXfCoCgpIiBsaW5rPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLW5ldyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdMKgKCkiIGxpbms9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtc2V0LWZvcm1hdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHPCoCgpIiBsaW5rPSJHc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXRyYW5zZm9ybS1jYXBzIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YcKgKCkiIGxpbms9IkdzdEdMRG93bmxvYWQuaHRtbCNnc3QtZ2wtZG93bmxvYWQtcGVyZm9ybS13aXRoLWRhdGEiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMRG93bmxvYWQiIGxpbms9IkdzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZWdsX2ltYWdlX21lbW9yeV9pbml0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNnc3QtZWdsLWltYWdlLW1lbW9yeS1pbml0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9lZ2xfaW1hZ2VfbWVtb3J5X2dldF9kaXNwbGF5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNnc3QtZWdsLWltYWdlLW1lbW9yeS1nZXQtZGlzcGxheSIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZWdsX2ltYWdlX21lbW9yeV9nZXRfaW1hZ2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI2dzdC1lZ2wtaW1hZ2UtbWVtb3J5LWdldC1pbWFnZSIvPgpAQCAtNTI1LDkgKzU4NSw2IEBACiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9pc19lZ2xfaW1hZ2VfbWVtb3J5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNnc3QtaXMtZWdsLWltYWdlLW1lbW9yeSIvPgogICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfRUdMX0lNQUdFX01FTU9SWV9UWVBFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI0dTVC1FR0wtSU1BR0UtTUVNT1JZLVRZUEU6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9FR0xfSU1BR0UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwjR1NULUNBUFMtRkVBVFVSRS1NRU1PUlktRUdMLUlNQUdFOkNBUFMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMQmFzZUZpbHRlciIgbGluaz0iR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xCYXNlRmlsdGVyQ2xhc3MiIGxpbms9IkdzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlckNsYXNzIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjb250ZXh04oCdIHByb3BlcnR5IiBsaW5rPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXItLWNvbnRleHQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2ZpbHRlcl9kcmF3X3RleHR1cmXCoCgpIiBsaW5rPSJHc3RHTEZpbHRlci5odG1sI2dzdC1nbC1maWx0ZXItZHJhdy10ZXh0dXJlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldMKgKCkiIGxpbms9IkdzdEdMRmlsdGVyLmh0bWwjZ3N0LWdsLWZpbHRlci1yZW5kZXItdG8tdGFyZ2V0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9maWx0ZXJfcmVuZGVyX3RvX3RhcmdldF93aXRoX3NoYWRlcsKgKCkiIGxpbms9IkdzdEdMRmlsdGVyLmh0bWwjZ3N0LWdsLWZpbHRlci1yZW5kZXItdG8tdGFyZ2V0LXdpdGgtc2hhZGVyIi8+CkBAIC01NDAsODAgKzU5NywxMDggQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2ZyYW1lYnVmZmVyX3VzZV92MsKgKCkiIGxpbms9IkdzdEdMRnJhbWVidWZmZXIuaHRtbCNnc3QtZ2wtZnJhbWVidWZmZXItdXNlLXYyIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xGcmFtZWJ1ZmZlciIgbGluaz0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sI0dzdEdMRnJhbWVidWZmZXItc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xGcmFtZWJ1ZmZlckNsYXNzIiBsaW5rPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwjR3N0R0xGcmFtZWJ1ZmZlckNsYXNzIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfaW5pdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfYWxsb2PCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2MiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV93cmFwcGVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXdyYXBwZWQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZC10ZXh0dXJlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS1pbnRvLXRleHR1cmUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC13cmFwcGVkIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2lzX2dsX21lbW9yecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLW1lbW9yeSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xBbGxvY2F0b3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3Itc3RydWN0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTEFsbG9jYXRvckNsYXNzIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yQ2xhc3MiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1BTExPQ0FUT1I6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xNZW1vcnkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFya8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1lcnJvci1xdWFyayIvPgotICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfU0hBREVSX0VSUk9SIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRVJST1I6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVydmFyaWFibGUtc2V0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJ2YXJpYWJsZXNfcGFyc2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZXMtcGFyc2UiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9uZXfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXZlcnRleC1zb3VyY2UiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC1mcmFnbWVudC1zb3VyY2UiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9nZXRfdmVydGV4X3NvdXJjZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtdmVydGV4LXNvdXJjZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2dldF9mcmFnbWVudF9zb3VyY2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWZyYWdtZW50LXNvdXJjZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtcHJvZ3JhbS1oYW5kbGUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfYWN0aXZlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC1hY3RpdmUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9pc19jb21waWxlZMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1jb21waWxlZCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYW5kLWNoZWNrIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVja8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWFsbC13aXRoLWF0dHJpYnMtYW5kLWNoZWNrIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtZi1hbmQtY2hlY2siLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVja8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12LWFuZC1jaGVjayIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVja8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12Zi1hbmQtY2hlY2siLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl91c2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWl2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmkiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2bCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2Z2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2nCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGl2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnbCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4M2Z2Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYmluZC1hdHRyaWJ1dGUtbG9jYXRpb24iLz4KLSAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMU2hhZGVyRXJyb3IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXJFcnJvciIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xTaGFkZXJTb3VyY2VUeXBlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyU291cmNlVHlwZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZS1kZXNjIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTFNoYWRlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci1zdHJ1Y3QiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGFjdGl2ZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tYWN0aXZlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjb21waWxlZOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tY29tcGlsZWQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGZyYWdtZW50LXNyY+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tZnJhZ21lbnQtc3JjIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx2ZXJ0ZXgtc3Jj4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS12ZXJ0ZXgtc3JjIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVZJREVPOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGzCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1pbml0LWZ1bGwiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLWRhdGEiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXctd3JhcHBlZC10ZXh0dXJlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWFsbG9jYXRvci1nZXQtZGVmYXVsdCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X2luaXRfb25jZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0LW9uY2UiIHNpbmNlPSIxLjQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9pbml0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2lzX2dsX21lbW9yecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLW1lbW9yeSIgc2luY2U9IjEuNCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8iIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9jb3B5X3RleGltYWdlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWNvcHktdGV4aW1hZ2UiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVsc8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1yZWFkLXBpeGVscyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXRleHN1YmltYWdlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWhlaWdodCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWlkIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXRhcmdldCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdHlwZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3dpZHRowqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXdpZHRoIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktVklERU8tRk9STUFUUy1TVFI6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTE1lbW9yeUFsbG9jYXRvciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xNZW1vcnkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2lzX2dsX21lbW9yeV9wYm/CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1pcy1nbC1tZW1vcnktcGJvIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9tZW1vcnlfcGJvX2NvcHlfaW50b190ZXh0dXJlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1jb3B5LWludG8tdGV4dHVyZSIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfbWVtb3J5X3Bib19kb3dubG9hZF90cmFuc2ZlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tZG93bmxvYWQtdHJhbnNmZXIiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9wYm9faW5pdF9vbmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1pbml0LW9uY2UiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby11cGxvYWQtdHJhbnNmZXIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dTVC1HTC1NRU1PUlktUEJPLUFMTE9DQVRPUi1OQU1FOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMTWVtb3J5UEJPIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfbmV3wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldy1kZWZhdWx0IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXPCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LWxpbmstd2l0aC1zdGFnZXMiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXPCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LXdpdGgtc3RhZ2VzIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfdXNlwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXVzZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZcKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtcHJvZ3JhbS1oYW5kbGUiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXJlbGVhc2UtdW5sb2NrZWQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9hdHRhY2jCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYXR0YWNoIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWF0dGFjaC11bmxvY2tlZCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlwqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYXR0YWNoLXN0YWdlIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfZGV0YWNowqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWRldGFjaCIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZMKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1kZXRhY2gtdW5sb2NrZWQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9pc19saW5rZWTCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItaXMtbGlua2VkIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfbGlua8KgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1saW5rIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWnCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWl2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmnCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2bCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2Z2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2nCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2kiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGnCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGl2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2wqAoKSIgbGluaz0iR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnbCoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4M2Z2Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbsKgKCkiIGxpbms9IkdzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYmluZC1hdHRyaWJ1dGUtbG9jYXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMU2hhZGVyIiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcbGlua2Vk4oCdIHByb3BlcnR5IiBsaW5rPSJHc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1saW5rZWQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMU0xfRVJST1IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1FUlJPUjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbHNsX2Vycm9yX3F1YXJrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLWVycm9yLXF1YXJrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtcHJvZmlsZS1mcm9tLXN0cmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1wcm9maWxlLXRvLXN0cmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tZnJvbS1zdHJpbmciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi10by1zdHJpbmciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX2Zyb21fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS1mcm9tLXN0cmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS10by1zdHJpbmciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsc2xfc3RyaW5nX2dldF92ZXJzaW9uX3Byb2ZpbGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtc3RyaW5nLWdldC12ZXJzaW9uLXByb2ZpbGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsLWNvbnRleHQtc3VwcG9ydHMtZ2xzbC1wcm9maWxlLXZlcnNpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbC12ZXJzaW9uLXRvLWdsc2wtdmVyc2lvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xTTEVycm9yIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTEVycm9yIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTFNMUHJvZmlsZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xQcm9maWxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RHTFNMVmVyc2lvbiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xWZXJzaW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtYnVmZmVyLWFkZC1nbC1zeW5jLW1ldGEiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhX2Z1bGzCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWJ1ZmZlci1hZGQtZ2wtc3luYy1tZXRhLWZ1bGwiLz4KICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtYnVmZmVyLWdldC1nbC1zeW5jLW1ldGEiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3N5bmNfbWV0YV9hcGlfZ2V0X3R5cGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWdsLXN5bmMtbWV0YS1hcGktZ2V0LXR5cGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3N5bmNfbWV0YV9nZXRfaW5mb8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLWdldC1pbmZvIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zeW5jX21ldGFfc2V0X3N5bmNfcG9pbnTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWdsLXN5bmMtbWV0YS1zZXQtc3luYy1wb2ludCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfc3luY19tZXRhX3dhaXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWdsLXN5bmMtbWV0YS13YWl0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWdsLXN5bmMtbWV0YS13YWl0LWNwdSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEdMU3luY01ldGEiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHc3RHTFN5bmNNZXRhIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfU1lOQ19NRVRBIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1TWU5DLU1FVEE6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX25ld8KgKCkiIGxpbms9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1uZXciLz4KQEAgLTYyMiwzNSArNzA3LDggQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb27CoCgpIiBsaW5rPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtcHJvcG9zZS1hbGxvY2F0aW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF91cGxvYWRfdHJhbnNmb3JtX2NhcHPCoCgpIiBsaW5rPSJHc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtdHJhbnNmb3JtLWNhcHMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3VwbG9hZF9wZXJmb3JtX3dpdGhfYnVmZmVywqAoKSIgbGluaz0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXBlcmZvcm0td2l0aC1idWZmZXIiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcsKgKCkiIGxpbms9IkdzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1yZWxlYXNlLWJ1ZmZlciIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzwqAoKSIgbGluaz0iR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLWdldC1pbnB1dC10ZW1wbGF0ZS1jYXBzIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RHTFVwbG9hZCIgbGluaz0iR3N0R0xVcGxvYWQuaHRtbCNHc3RHTFVwbG9hZC1zdHJ1Y3QiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX25ld8KgKCkiIGxpbms9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1uZXciLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3VwbG9hZF9tZXRhX3NldF9mb3JtYXTCoCgpIiBsaW5rPSJHc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtc2V0LWZvcm1hdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdMKgKCkiIGxpbms9IkdzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1nZXQtZm9ybWF0Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVywqAoKSIgbGluaz0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLWFkZC10by1idWZmZXIiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdEdMVXBsb2FkTWV0YSIgbGluaz0iR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHTENCwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQjpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdMQ0JfVjLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iQ0RDQsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0NEQ0I6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1zZXQtY29udGV4dCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dlbl9mYm/CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tZmJvIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2RlbF9mYm/CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtZmJvIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC11c2UtZmJvLXYyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tc2hhZGVyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXLCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtc2hhZGVyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1c8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3LCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9ywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNsZWFyLXNoYWRlciIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZ2VuZXJhdGVfdGV4dHVyZV9mdWxswqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdlbmVyYXRlLXRleHR1cmUtZnVsbCIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNhcHMtcmVwbGFjZS1hbGwtY2Fwcy1mZWF0dXJlcyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1lbnN1cmUtZWxlbWVudC1kYXRhIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3J1bl9xdWVyecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1ydW4tcXVlcnkiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMRGlzcGxheVByb2plY3Rpb24iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dzdEdMRGlzcGxheVByb2plY3Rpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3dpbmRvd19lcnJvcl9xdWFya8KgKCkiIGxpbms9IkdzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1lcnJvci1xdWFyayIvPgogICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfV0lORE9XX0VSUk9SIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI0dTVC1HTC1XSU5ET1ctRVJST1I6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHc3RHTFdpbmRvd1Jlc2l6ZUNCwqAoKSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNHc3RHTFdpbmRvd1Jlc2l6ZUNCIi8+CkBAIC02NTksNyArNzE3LDYgQEAKICAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX1dJTkRPV19DQigpIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI0dTVC1HTC1XSU5ET1ctQ0I6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X25ld8KgKCkiIGxpbms9IkdzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1uZXciIHNpbmNlPSIxLjQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3dpbmRvd19kcmF3wqAoKSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWRyYXciIHNpbmNlPSIxLjQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3dpbmRvd19kcmF3X3VubG9ja2VkwqAoKSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWRyYXctdW5sb2NrZWQiIHNpbmNlPSIxLjQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3dpbmRvd19pc19ydW5uaW5nwqAoKSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LWlzLXJ1bm5pbmciIHNpbmNlPSIxLjQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3dpbmRvd19xdWl0wqAoKSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LXF1aXQiIHNpbmNlPSIxLjQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3dpbmRvd19ydW7CoCgpIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctcnVuIiBzaW5jZT0iMS40Ii8+CkBAIC03MDQsNiArNzYxLDE4MyBAQAogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfd2luZG93X3gxMV91bnRyYXBfeF9lcnJvcnPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sI2dzdC1nbC13aW5kb3cteDExLXVudHJhcC14LWVycm9ycyIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEdMV2luZG93WDExIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sI0dzdEdMV2luZG93WDExIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xXaW5kb3dYMTFDbGFzcyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCNHc3RHTFdpbmRvd1gxMUNsYXNzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdzdEdMQXN5bmNEZWJ1Z0xvZ0dldE1lc3NhZ2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfbmV3wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1uZXciIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWZyZWUiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX2luaXTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWluaXQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy11bnNldCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlemUiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXRoYXciIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1vdXRwdXQtbG9nLW1zZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZyIgc2luY2U9IjEuOCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3TCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ctdmFsaXN0IiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0ctdmFsaXN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHU1QtR0wtQVNZTkMtQ0FULUxFVkVMLUxPRzpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1pbnNlcnQtZGVidWctbWFya2VyIiBzaW5jZT0iMS44Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9IkdMQ0LCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iR0xDQl9WMsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJDRENCwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjQ0RDQjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi10ZXh0dXJlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXRleHR1cmUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX2Zib8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1mYm8iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZGVsX2Zib8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1mYm8iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfdXNlX2Zib192MsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXVzZS1mYm8tdjIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1zaGFkZXIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jb250ZXh0X3NldF9lcnJvcsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1lcnJvciIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3LCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVywqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGzCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXPCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWVuc3VyZS1lbGVtZW50LWRhdGEiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZ2V0X3BsYW5lX3N0YXJ0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1zdGFydCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfcnVuX3F1ZXJ5wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXJ1bi1xdWVyeSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdmFsdWVfZ2V0X3RleHR1cmVfdGFyZ2V0X21hc2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtdmFsdWUtZ2V0LXRleHR1cmUtdGFyZ2V0LW1hc2siLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtdmFsdWUtc2V0LXRleHR1cmUtdGFyZ2V0LWZyb20tbWFzayIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0R0xEaXNwbGF5UHJvamVjdGlvbiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjR3N0R0xEaXNwbGF5UHJvamVjdGlvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlc8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLWZvcm1hdC10eXBlLW4tYnl0ZXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLW4tYnl0ZXMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLWZvcm1hdC1mcm9tLWdsLXRleHR1cmUtdHlwZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXNpemVkLWdsLWZvcm1hdC1mcm9tLWdsLWZvcm1hdC10eXBlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tc3RyaW5nIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1zdHJpbmciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dswqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tZ2wiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2zCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLWdsIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1idWZmZXItcG9vbC1vcHRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHNpbmNlPSIxLjgiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQtU1RSOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRS1TVFI6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9Im1hY3JvIiBuYW1lPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTLVNUUjpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfMkQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJtYWNybyIgbmFtZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX25ld8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItbmV3Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfcGxhecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItcGxheSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3BhdXNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wYXVzZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3N0b3DCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXN0b3AiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zZWVrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZWVrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3VyacKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXVyaSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF91cmnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC11cmkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9nZXRfZHVyYXRpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1kdXJhdGlvbiIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9wb3NpdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXBvc2l0aW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3ZvbHVtZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZvbHVtZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9tdXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtbXV0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF92b2x1bWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12b2x1bWUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9nZXRfbXV0ZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LW11dGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9nZXRfcGlwZWxpbmXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1waXBlbGluZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWzCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFswqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXN0YXRlLWdldC1uYW1lIi8+CisgICAgPGtleXdvcmQgdHlwZT0ibWFjcm8iIG5hbWU9IkdTVF9QTEFZRVJfRVJST1IiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItRVJST1I6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2Vycm9yX2dldF9uYW1lwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1lcnJvci1nZXQtbmFtZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbWVkaWEtaW5mbyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtYXVkaW8tc3RyZWFtcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtdmlkZW8tc3RyZWFtcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtc3RyZWFtcyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9hdWRpb190cmFja8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2siLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2vCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjayIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1hdWRpby10cmFjayIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9jdXJyZW50X3ZpZGVvX3RyYWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC12aWRlby10cmFjayIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1zdWJ0aXRsZS10cmFjayIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2stZW5hYmxlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2stZW5hYmxlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2stZW5hYmxlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmnCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS11cmkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtdXJpIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aXN1YWxpemF0aW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24tZW5hYmxlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9jdXJyZW50X3Zpc3VhbGl6YXRpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpc3VhbGl6YXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWNvbG9yLWJhbGFuY2UtdHlwZS1nZXQtbmFtZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1oYXMtY29sb3ItYmFsYW5jZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtY29sb3ItYmFsYW5jZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9jb2xvcl9iYWxhbmNlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY29sb3ItYmFsYW5jZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dldF9yYXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcmF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3NldF9yYXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtcmF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0UGxheWVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RQbGF5ZXJTdGF0ZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU3RhdGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJlbnVtIiBuYW1lPSJlbnVtIEdzdFBsYXllckVycm9yIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJFcnJvciIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlci1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGN1cnJlbnQtYXVkaW8tdHJhY2vigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC1hdWRpby10cmFjayIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY3VycmVudC1zdWJ0aXRsZS10cmFja+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjdXJyZW50LXZpZGVvLXRyYWNr4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtdmlkZW8tdHJhY2siLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGR1cmF0aW9u4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWR1cmF0aW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxtZWRpYS1pbmZv4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLW1lZGlhLWluZm8iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnG11dGXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tbXV0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCccGlwZWxpbmXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcGlwZWxpbmUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHBvc2l0aW9u4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXBvc2l0aW9uIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWzigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcG9zaXRpb24tdXBkYXRlLWludGVydmFsIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxyYXRl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXJhdGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHNpZ25hbC1kaXNwYXRjaGVy4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXNpZ25hbC1kaXNwYXRjaGVyIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxzdWJ1cmnigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tc3VidXJpIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx1cmnigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdXJpIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx2aWRlby1yZW5kZXJlcuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS12aWRlby1yZW5kZXJlciIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcdm9sdW1l4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXZvbHVtZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnGJ1ZmZlcmluZ+KAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1idWZmZXJpbmciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzaWduYWwiIG5hbWU9IlRoZSDigJxkdXJhdGlvbi1jaGFuZ2Vk4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWR1cmF0aW9uLWNoYW5nZWQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzaWduYWwiIG5hbWU9IlRoZSDigJxlbmQtb2Ytc3RyZWFt4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWVuZC1vZi1zdHJlYW0iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzaWduYWwiIG5hbWU9IlRoZSDigJxlcnJvcuKAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1lcnJvciIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnG1lZGlhLWluZm8tdXBkYXRlZOKAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1tZWRpYS1pbmZvLXVwZGF0ZWQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzaWduYWwiIG5hbWU9IlRoZSDigJxtdXRlLWNoYW5nZWTigJ0gc2lnbmFsIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItbXV0ZS1jaGFuZ2VkIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCccG9zaXRpb24tdXBkYXRlZOKAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1wb3NpdGlvbi11cGRhdGVkIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic2lnbmFsIiBuYW1lPSJUaGUg4oCcc2Vlay1kb25l4oCdIHNpZ25hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXNlZWstZG9uZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnHN0YXRlLWNoYW5nZWTigJ0gc2lnbmFsIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RhdGUtY2hhbmdlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnHZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZOKAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci12aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzaWduYWwiIG5hbWU9IlRoZSDigJx2b2x1bWUtY2hhbmdlZOKAnSBzaWduYWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci12b2x1bWUtY2hhbmdlZCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InNpZ25hbCIgbmFtZT0iVGhlIOKAnHdhcm5pbmfigJ0gc2lnbmFsIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItd2FybmluZyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyacKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXVyaSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtZHVyYXRpb24iLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRpdGxlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfY29udGFpbmVyX2Zvcm1hdMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWNvbnRhaW5lci1mb3JtYXQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2lzX3NlZWthYmxlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1pcy1zZWVrYWJsZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LWltYWdlLXNhbXBsZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3PCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC10YWdzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3TCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1zdHJlYW0tbGlzdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1pbmRleCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWNhcHMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFnc8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC10YWdzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWNvZGVjIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXN0cmVhbS10eXBlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWJpdHJhdGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVsc8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWNoYW5uZWxzIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2XCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1sYW5ndWFnZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbWF4LWJpdHJhdGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LXNhbXBsZS1yYXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfYml0cmF0ZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWJpdHJhdGUiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9oZWlnaHTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1oZWlnaHQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LXdpZHRoIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtZnJhbWVyYXRlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1tYXgtYml0cmF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpb8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LXBpeGVsLWFzcGVjdC1yYXRpbyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3VidGl0bGUtaW5mby1nZXQtbGFuZ3VhZ2UiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdFBsYXllck1lZGlhSW5mbyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mby1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9IkdzdFBsYXllclN0cmVhbUluZm8iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0UGxheWVyQXVkaW9JbmZvIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0UGxheWVyVmlkZW9JbmZvIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0iR3N0UGxheWVyU3VidGl0bGVJbmZvIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ld8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwjZ3N0LXBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci1uZXciLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX25ld8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLW5ldyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1nZXQtd2luZG93LWhhbmRsZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3dpbmRvd19oYW5kbGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtd2luZG93LWhhbmRsZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZXhwb3NlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC1yZW5kZXItcmVjdGFuZ2xlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC1yZW5kZXItcmVjdGFuZ2xlIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0wqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWdldCIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZnJlZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29wecKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWNvcHkiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbi1mcmVlIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0UGxheWVyVmlzdWFsaXphdGlvbiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJHc3RQaG90b2dyYXBoeUNhcHR1cmVQcmVwYXJlZMKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlDYXB0dXJlUHJlcGFyZWQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X2dldF9ldl9jb21wZW5zYXRpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtZXYtY29tcGVuc2F0aW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfaXNvX3NwZWVkwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktZ2V0LWlzby1zcGVlZCIvPgpAQCAtNzE1LDcgKzk0OSw3IEBACiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfZmxhc2hfbW9kZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LWdldC1mbGFzaC1tb2RlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfZmxpY2tlcl9tb2RlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktZ2V0LWZsaWNrZXItbW9kZSIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfZ2V0X2ZvY3VzX21vZGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtZm9jdXMtbW9kZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfZ2V0X25vaXNlX3JlZHVjdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LWdldC1ub2lzZS1yZWR1Y3Rpb24iIHNpbmNlPSIwLjEwLjIxIi8+CisgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfbm9pc2VfcmVkdWN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktZ2V0LW5vaXNlLXJlZHVjdGlvbiIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfZ2V0X3pvb23CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtem9vbSIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfc2V0X2V2X2NvbXBlbnNhdGlvbsKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXNldC1ldi1jb21wZW5zYXRpb24iLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X3NldF9pc29fc3BlZWTCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1zZXQtaXNvLXNwZWVkIi8+CkBAIC03MjcsNyArOTYxLDcgQEAKICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X3NldF9mbGFzaF9tb2RlwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktc2V0LWZsYXNoLW1vZGUiLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X3NldF9mbGlja2VyX21vZGXCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1zZXQtZmxpY2tlci1tb2RlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9zZXRfZm9jdXNfbW9kZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXNldC1mb2N1cy1tb2RlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9zZXRfbm9pc2VfcmVkdWN0aW9uwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktc2V0LW5vaXNlLXJlZHVjdGlvbiIgc2luY2U9IjAuMTAuMjEiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X3NldF9ub2lzZV9yZWR1Y3Rpb27CoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1zZXQtbm9pc2UtcmVkdWN0aW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9zZXRfem9vbcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXNldC16b29tIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZnVuY3Rpb24iIG5hbWU9ImdzdF9waG90b2dyYXBoeV9nZXRfY2FwYWJpbGl0aWVzwqAoKSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNnc3QtcGhvdG9ncmFwaHktZ2V0LWNhcGFiaWxpdGllcyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfcHJlcGFyZV9mb3JfY2FwdHVyZcKgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXByZXBhcmUtZm9yLWNhcHR1cmUiLz4KQEAgLTczNSw3ICs5NjksNyBAQAogICAgIDxrZXl3b3JkIHR5cGU9ImZ1bmN0aW9uIiBuYW1lPSJnc3RfcGhvdG9ncmFwaHlfc2V0X2NvbmZpZ8KgKCkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjZ3N0LXBob3RvZ3JhcGh5LXNldC1jb25maWciLz4KICAgICA8a2V5d29yZCB0eXBlPSJmdW5jdGlvbiIgbmFtZT0iZ3N0X3Bob3RvZ3JhcGh5X2dldF9jb25maWfCoCgpIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1waG90b2dyYXBoeS1nZXQtY29uZmlnIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJHc3RQaG90b2dyYXBoeSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeSIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeU5vaXNlUmVkdWN0aW9uIiBzaW5jZT0iMC4xMC4yMSIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImVudW0iIG5hbWU9ImVudW0gR3N0UGhvdG9ncmFwaHlOb2lzZVJlZHVjdGlvbiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeU5vaXNlUmVkdWN0aW9uIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iZW51bSIgbmFtZT0iZW51bSBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSIvPgpAQCAtMTQ0OSw2ICsxNjgzLDExIEBACiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9QTEFURk9STV9DR0wiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLVBMQVRGT1JNLUNHTDpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9QTEFURk9STV9FQUdMIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1QTEFURk9STS1FQUdMOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1BMQVRGT1JNX0FOWSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtUExBVEZPUk0tQU5ZOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX0ZBSUxFRCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLUZBSUxFRDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUl9PTERfTElCUyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLU9MRC1MSUJTOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItUkVTT1VSQ0UtVU5BVkFJTEFCTEU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLVRSQU5TRkVSLU5FRUQtRE9XTkxPQUQ6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1UUkFOU0ZFUi1ORUVELVVQTE9BRDpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9DT05URVhUX0VSUk9SX0ZBSUxFRCIgbGluaz0iR3N0R0xDb250ZXh0Lmh0bWwjR1NULUdMLUNPTlRFWFQtRVJST1ItRkFJTEVEOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0NPTlRFWFRfRVJST1JfV1JPTkdfQ09ORklHIiBsaW5rPSJHc3RHTENvbnRleHQuaHRtbCNHU1QtR0wtQ09OVEVYVC1FUlJPUi1XUk9ORy1DT05GSUc6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfQ09OVEVYVF9FUlJPUl9XUk9OR19BUEkiIGxpbms9IkdzdEdMQ29udGV4dC5odG1sI0dTVC1HTC1DT05URVhULUVSUk9SLVdST05HLUFQSTpDQVBTIi8+CkBAIC0xNDYzLDE2ICsxNzAyLDUwIEBACiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9ESVNQTEFZX1RZUEVfRElTUE1BTlgiIGxpbms9IkdzdEdMRGlzcGxheS5odG1sI0dTVC1HTC1ESVNQTEFZLVRZUEUtRElTUE1BTlg6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfRElTUExBWV9UWVBFX0VHTCIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjR1NULUdMLURJU1BMQVktVFlQRS1FR0w6Q0FQUyIvPgogICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfRElTUExBWV9UWVBFX0FOWSIgbGluaz0iR3N0R0xEaXNwbGF5Lmh0bWwjR1NULUdMLURJU1BMQVktVFlQRS1BTlk6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfU0hBREVSX0VSUk9SX0NPTVBJTEUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR1NULUdMLVNIQURFUi1FUlJPUi1DT01QSUxFOkNBUFMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1NIQURFUl9FUlJPUl9MSU5LIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRVJST1ItTElOSzpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9TSEFERVJfRVJST1JfUFJPR1JBTSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUVSUk9SLVBST0dSQU06Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfU0hBREVSX0ZSQUdNRU5UX1NPVVJDRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUZSQUdNRU5ULVNPVVJDRTpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9TSEFERVJfVkVSVEVYX1NPVVJDRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLVZFUlRFWC1TT1VSQ0U6Q0FQUyIvPgotICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfRElTUExBWV9QUk9KRUNUSU9OX09SVEhPMkQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tT1JUSE8yRDpDQVBTIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9ESVNQTEFZX1BST0pFQ1RJT05fUEVSU1BFQ1RJVkUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tUEVSU1BFQ1RJVkU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9FUlJPUl9DT01QSUxFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtRVJST1ItQ09NUElMRTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX0VSUk9SX0xJTksiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1FUlJPUi1MSU5LOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfRVJST1JfUFJPR1JBTSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLUVSUk9SLVBST0dSQU06Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9QUk9GSUxFX05PTkUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1QUk9GSUxFLU5PTkU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9QUk9GSUxFX0VTIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1FUzpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1BST0ZJTEVfQ09SRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVBST0ZJTEUtQ09SRTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVBST0ZJTEUtQ09NUEFUSUJJTElUWTpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1BST0ZJTEVfQU5ZIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1BTlk6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OX05PTkUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLU5PTkU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzEwMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTAwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl8xMTAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTExMDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fMTIwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xMjA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzEzMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTMwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl8xNDAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTE0MDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fMTUwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xNTA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzMwMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMzAwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl8zMTAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTMxMDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fMzIwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0zMjA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzMzMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMzMwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl80MDAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQwMDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fNDEwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00MTA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzQyMCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDIwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl80MzAiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQzMDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTFNMX1ZFUlNJT05fNDQwIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00NDA6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xTTF9WRVJTSU9OXzQ1MCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDUwOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMU0xfVkVSU0lPTl9BTlkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLUFOWTpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9HTF9XSU5ET1dfRVJST1JfRkFJTEVEIiBsaW5rPSJHc3RHTFdpbmRvdy5odG1sI0dTVC1HTC1XSU5ET1ctRVJST1ItRkFJTEVEOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1dJTkRPV19FUlJPUl9PTERfTElCUyIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNHU1QtR0wtV0lORE9XLUVSUk9SLU9MRC1MSUJTOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1dJTkRPV19FUlJPUl9SRVNPVVJDRV9VTkFWQUlMQUJMRSIgbGluaz0iR3N0R0xXaW5kb3cuaHRtbCNHU1QtR0wtV0lORE9XLUVSUk9SLVJFU09VUkNFLVVOQVZBSUxBQkxFOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX0RJU1BMQVlfUFJPSkVDVElPTl9PUlRITzJEIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHU1QtR0wtRElTUExBWS1QUk9KRUNUSU9OLU9SVEhPMkQ6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfRElTUExBWV9QUk9KRUNUSU9OX1BFUlNQRUNUSVZFIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHU1QtR0wtRElTUExBWS1QUk9KRUNUSU9OLVBFUlNQRUNUSVZFOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULU5PTkU6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLVNUQVRFLVNUT1BQRUQ6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1TVEFURS1CVUZGRVJJTkc6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfUExBWUVSX1NUQVRFX1BBVVNFRCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1TVEFURS1QQVVTRUQ6Q0FQUyIvPgorICAgIDxrZXl3b3JkIHR5cGU9ImNvbnN0YW50IiBuYW1lPSJHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkciIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItU1RBVEUtUExBWUlORzpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QTEFZRVJfRVJST1JfRkFJTEVEIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUVSUk9SLUZBSUxFRDpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9CUklHSFRORVNTIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtQlJJR0hUTkVTUzpDQVBTIi8+CisgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9DT05UUkFTVCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLUNPTlRSQVNUOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX1NBVFVSQVRJT04iIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1TQVRVUkFUSU9OOkNBUFMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLUhVRTpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QSE9UT0dSQVBIWV9OT0lTRV9SRURVQ1RJT05fQkFZRVIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR1NULVBIT1RPR1JBUEhZLU5PSVNFLVJFRFVDVElPTi1CQVlFUjpDQVBTIi8+CiAgICAgPGtleXdvcmQgdHlwZT0iY29uc3RhbnQiIG5hbWU9IkdTVF9QSE9UT0dSQVBIWV9OT0lTRV9SRURVQ1RJT05fWUNDIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dTVC1QSE9UT0dSQVBIWS1OT0lTRS1SRURVQ1RJT04tWUNDOkNBUFMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJjb25zdGFudCIgbmFtZT0iR1NUX1BIT1RPR1JBUEhZX05PSVNFX1JFRFVDVElPTl9URU1QT1JBTCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHU1QtUEhPVE9HUkFQSFktTk9JU0UtUkVEVUNUSU9OLVRFTVBPUkFMOkNBUFMiLz4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUFUU0MtdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKaW5kZXggY2I2Yjk2OS4uN2JiMTMxZSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5BVFNDIHZhcmlhbnRzIG9mIE1QRUctVFMgZGVzY3JpcHRvcnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbCIgdGl0bGU9IkRWQiB2YXJpYW50cyBvZiBNUEVHLVRTIHNlY3Rpb25zIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUFUU0MtdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNjUsNyArNjUsNyBAQAogPHA+Q29uc3VsdCB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS44LjcuMi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUFUU0MtdmFyaWFudHMtb2YtTVBFRy1UUy1zZWN0aW9ucy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKaW5kZXggZTg3OTExOC4uMWJiODMxYiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5BVFNDIHZhcmlhbnRzIG9mIE1QRUctVFMgc2VjdGlvbnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwiIHRpdGxlPSJCYXNlIE1QRUctVFMgZGVzY3JpcHRvcnMiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0xMDEsNyArMTAxLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xNzIsNyArMTcyLDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuNy4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMDAsNyArMjAwLDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMjgsNyArMjI4LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjcuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjYzLDcgKzI2Myw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi43LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI5MSw3ICsyOTEsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuNy43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTksNyArMzE5LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjcuOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzU0LDcgKzM1NCw3IEBACiA8cD5zZWUgYWxzbzogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1NlY3Rpb25UYWJsZUlEIiB0aXRsZT0iZW51bSBHc3RNcGVndHNTZWN0aW9uVGFibGVJRCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c1NlY3Rpb25UYWJsZUlEPC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjguMi42Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ3OCw3ICs0NzgsNyBAQAogLCBjYW4gYmUgdXNlZCBib3RoIGZvciBUVkNUIGFuZCBDVkNUIHRhYmxlczwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC4zLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU4NCw3ICs1ODQsNyBAQAogICBDYWJsZSBWaXJ0dWFsIENoYW5uZWwgVGFibGUgKEE2NSk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjguNC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC02MjAsNyArNjIwLDcgQEAKIDxhIG5hbWU9IkdzdE1wZWd0c0F0c2NNR1RUYWJsZVR5cGUiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNBdHNjTUdUVGFibGVUeXBlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC41LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjY2LDcgKzY2Niw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjguNi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC03MTUsNyArNzE1LDcgQEAKIDxwPk1hc3RlciBHdWlkZSBUYWJsZSAoQTY1KTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC43LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc1Niw3ICs3NTYsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjguOC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC03OTMsNyArNzkzLDcgQEAKIDxwPkFuIEFUU0MgRUlUIEV2ZW50PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi44LjkuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODQ3LDcgKzg0Nyw3IEBACiA8cD5FdmVudCBJbmZvcm1hdGlvbiBUYWJsZSAoQVRTQyk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS42LjguMTAuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODg3LDcgKzg4Nyw3IEBACiA8cD5FeHRlbmRlZCBUZXh0IFRhYmxlIChBVFNDKTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjYuOC4xMS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05MzYsNyArOTM2LDcgQEAKIDxwPlN5c3RlbSBUaW1lIFRhYmxlIChBNjUpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNi44LjEyLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKaW5kZXggM2YzZTY0ZS4uNjUxMWQ0OCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5CYXNlIE1QRUctVFMgZGVzY3JpcHRvcnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwiIHRpdGxlPSJCYXNlIE1QRUctVFMgc2VjdGlvbnMiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLWRlc2NyaXB0b3JzLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0xMTYsNyArMTE2LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0TXBlZ3RzRGVzY3JpcHRvciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTg2LDcgKzE4Niw3IEBACiBhcnJheSBvZiBkZXNjcmlwdG9ycywgaXRlcmF0ZSB0aGUgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1BcnJheXMuaHRtbCNHQXJyYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HQXJyYXk8L3NwYW4+PC9hPiBtYW51YWxseS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS41LjkuMi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjI3LDcgKzIyNyw3IEBACiAgd2lsbCBub3QgYmUgY29waWVkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuOS4zLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNjgsNyArMjY4LDcgQEAKIDwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuOS40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTEsNyArMzExLDcgQEAKIDxwPlJldHVybjogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0Rlc2NyaXB0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNEZXNjcmlwdG9yPC9zcGFuPjwvYT4sIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+IG9uIGZhaWx1cmU8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS41LjkuNS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzUxLDcgKzM1MSw3IEBACiBJU08gNjM5LTEgbGFuZ3VhZ2UgY29kZSBmcm9tIHRoZSByZXR1cm5lZCBJU08gNjM5LTIgb25lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuOS42LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zOTEsNyArMzkxLDcgQEAKIElTTyA2MzktMSBsYW5ndWFnZSBjb2RlIGZyb20gdGhlIHJldHVybmVkIElTTyA2MzktMiBvbmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS45LjcuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQzNCw3ICs0MzQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0Rlc2NyaXB0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNEZXNjcmlwdG9yPC9zcGFuPjwvYT4gKmRlc2NyaXB0b3I8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS45LjguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ3MSw3ICs0NzEsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuOS4xMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTExLDcgKzUxMSw3IEBACiA8cD5NcGVnLVRTIGRlc2NyaXB0b3IgKElTTy9JRUMgMTM4MTgtMSkuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNS4xMC4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU1NSw3ICs1NTUsNyBAQAogPHA+Q29uc3VsdCB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS41LjEwLjMuNiI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04NDQsNyArODQ0LDcgQEAKIG5vdCB5ZXQgaWRlbnRpZmllZCBmcm9tIGtub3duIHNwZWNpZmljYXRpb25zLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuMTAuNC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg4MCw3ICs4ODAsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzSXNvNjM5QXVkaW9UeXBlIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzSXNvNjM5QXVkaW9UeXBlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjUuMTAuNi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKaW5kZXggYzc3NDBjNC4uNGVlNDkwNyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5CYXNlIE1QRUctVFMgc2VjdGlvbnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtTXBlZy10cy1oZWxwZXItbGlicmFyeS5odG1sIiB0aXRsZT0iTXBlZy10cyBoZWxwZXIgbGlicmFyeSI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTE5MCw3ICsxOTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RNcGVndHNTZWN0aW9uIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0yNjQsNyArMjY0LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjk5LDcgKzI5OSw3IEBACiA8cD5SZXR1cm5zIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzU2VjdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c1NlY3Rpb248L3NwYW4+PC9hPiBjb250YWluZWQgaW4gYSBtZXNzYWdlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuOS40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMzAsNyArMzMwLDcgQEAKICA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM2NCw3ICszNjQsNyBAQAogIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEV2ZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFdmVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM5NCw3ICszOTQsNyBAQAogaW1tZWRpYXRlbHkuIE90aGVyd2lzZSwgdGhlIGRhdGEgZmllbGQgaXMgYWxsb2NhdGVkIGFuZCBwb3B1bGF0ZWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQzOCw3ICs0MzgsNyBAQAogdG8gdGhlIGJlZ2lubmluZyBvZiB0aGUgc2VjdGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuOC43Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDk2LDcgKzQ5Niw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjExLjciPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01NTEsNyArNTUxLDcgQEAKICBhcnJheSBvZiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYWQtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1BhdFByb2dyYW0iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNQYXRQcm9ncmFtczwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjE0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01ODYsNyArNTg2LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjkuMTUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTY0MCw3ICs2NDAsNyBAQAogPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjE4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NzQsNyArNjc0LDcgQEAKIDxwPlJldHVybnMgdGhlIGFycmF5IG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCNHc3RNcGVndHNEZXNjcmlwdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzRGVzY3JpcHRvcjwvc3Bhbj48L2E+IGNvbnRhaW5lZCBpbiB0aGUgc2VjdGlvbjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjQuOS4xOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzA0LDcgKzcwNCw3IEBACiBBY2Nlc3MgVGFibGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC45LjIwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03NTAsNyArNzUwLDcgQEAKIDxwPk1wZWctVFMgU2VjdGlvbiBJbmZvcm1hdGlvbiAoU0kpIChJU08vSUVDIDEzODE4LTEpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC4xMC4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgxNiw3ICs4MTYsNyBAQAogPHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c1NlY3Rpb25TQ1RFVGFibGVJRDwvc3Bhbj48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjEwLjMuNiI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05MDgsNyArOTA4LDcgQEAKIDxwPlR5cGVzIG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzU2VjdGlvbjwvc3Bhbj48L2E+IHRoYXQgdGhlIGxpYnJhcnkgaGFuZGxlcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjEwLjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDQ5LDcgKzEwNDksNyBAQAogPHA+QSBwcm9ncmFtIGVudHJ5IGZyb20gYSBQcm9ncmFtIEFzc29jaWF0aW9uIFRhYmxlIChJVFUgSC4yMjIuMCwgSVNPL0lFQyAxMzgxOC0xKS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjEwLjUuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA4Niw3ICsxMDg2LDcgQEAKIGNvbnRhaW5lciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzU2VjdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c1NlY3Rpb248L3NwYW4+PC9hPi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS40LjEwLjYuNiI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTEzMCw3ICsxMTMwLDcgQEAKIDxwPkFuIGluZGl2aWR1YWwgc3RyZWFtIGRlZmluaXRpb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC4xMC43LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExNjcsNyArMTE2Nyw3IEBACiA8cD5Db3JyZXNwb25kcyB0byB0YWJsZSAyLTM0IG9mIElUVSBILjIyMi4wIHwgSVNPL0lFQyAxMzgxOC0xPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNC4xMC44LjYiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwKaW5kZXggZWRlY2E0Yi4uMTIwMDliNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+RFZCIHZhcmlhbnRzIG9mIE1QRUctVFMgZGVzY3JpcHRvcnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwiIHRpdGxlPSJBVFNDIHZhcmlhbnRzIG9mIE1QRUctVFMgZGVzY3JpcHRvcnMiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTM3MCw3ICszNzAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNTU0LDcgKzU1NCw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU5Nyw3ICs1OTcsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NDAsNyArNjQwLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjc2LDcgKzY3Niw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTcxMiw3ICs3MTIsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC44LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03NDgsNyArNzQ4LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzkxLDcgKzc5MSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC04MjksNyArODI5LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg3NSw3ICs4NzUsNyBAQAogOjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTEyLDcgKzkxMiw3IEBACiB3aWxsIGJlIGFsbG9jYXRlZCwgYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBjYWxsZXIuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjE0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC05NDQsNyArOTQ0LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMTUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk5Miw3ICs5OTIsNyBAQAogYW5kIHRyYW5zZmVycmVkIHRvIHRoZSBjYWxsZXIuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDM5LDcgKzEwMzksNyBAQAogLiBUaGUgbGFuZ3VhZ2UgaXMgaW4gSVNPNjM5IGZvcm1hdC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMTcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwOTQsNyArMTA5NCw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExMjksNyArMTEyOSw3IEBACiBJU08gNjM5LTEgbGFuZ3VhZ2UgY29kZSBmcm9tIHRoZSByZXR1cm5lZCBJU08gNjM5LTIgb25lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4xOS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTE4Miw3ICsxMTgyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCNHc3RNcGVndHNEZXNjcmlwdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzRGVzY3JpcHRvcjwvc3Bhbj48L2E+ICpkZXNjcmlwdG9yPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4yMC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTIxMiw3ICsxMjEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDE2Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQxNjwvc3Bhbj48L2E+IGFuY2lsbGFyeTwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMjEuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEyNTgsNyArMTI1OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCNHc3RNcGVndHNEVkJMaW5rYWdlRGVzY3JpcHRvciIgdGl0bGU9InN0cnVjdCBHc3RNcGVndHNEVkJMaW5rYWdlRGVzY3JpcHRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1wZWd0c0RWQkxpbmthZ2VEZXNjcmlwdG9yPC9zcGFuPjwvYT4gKmRlc2M8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjIzLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMjg0LDcgKzEyODQsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwjR3N0TXBlZ3RzRFZCTGlua2FnZURlc2NyaXB0b3IiIHRpdGxlPSJzdHJ1Y3QgR3N0TXBlZ3RzRFZCTGlua2FnZURlc2NyaXB0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNEVkJMaW5rYWdlRGVzY3JpcHRvcjwvc3Bhbj48L2E+ICpkZXNjPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4yNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTMxMCw3ICsxMzEwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0RWQkxpbmthZ2VEZXNjcmlwdG9yIiB0aXRsZT0ic3RydWN0IEdzdE1wZWd0c0RWQkxpbmthZ2VEZXNjcmlwdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzRFZCTGlua2FnZURlc2NyaXB0b3I8L3NwYW4+PC9hPiAqZGVzYzwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMjUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEzNDAsNyArMTM0MCw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjI2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMzc4LDcgKzEzNzgsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4yNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTQyNiw3ICsxNDI2LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE0NzUsNyArMTQ3NSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjMwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNTExLDcgKzE1MTEsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4zMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTU1Myw3ICsxNTUzLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMzIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE1OTksNyArMTU5OSw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjMzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNjM1LDcgKzE2MzUsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4zNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTY3MSw3ICsxNjcxLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMzUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE3MDksNyArMTcwOSw3IEBACiA6PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjM2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNzQ1LDcgKzE3NDUsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC4zNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTc4MSw3ICsxNzgxLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguMzguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE4MTAsNyArMTgxMCw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjM5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xODQ3LDcgKzE4NDcsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOC40MC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTg4NCw3ICsxODg0LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjguNDEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE5MjIsNyArMTkyMiw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS44LjQyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xOTY0LDcgKzE5NjQsNyBAQAogPHA+Q29uc3VsdCB0aGUgcmVsZXZhbnQgc3BlY2lmaWNhdGlvbnMgZm9yIG1vcmUgZGV0YWlscy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMi42Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIzMDQsNyArMjMwNCw3IEBACiA8cD5Db25zdWx0IHRoZSByZWxldmFudCBzcGVjaWZpY2F0aW9ucyBmb3IgbW9yZSBkZXRhaWxzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4zLjYiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjQ1NSw3ICsyNDU1LDcgQEAKIDxwPkV4dGVuZGVkIEV2ZW50IERlc2NyaXB0b3IgKEVOIDMwMCA0Njggdi4xLjEzLjEpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjcuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjUxMSw3ICsyNTExLDcgQEAKIDxwPlNhdGVsbGl0ZSBEZWxpdmVyeSBTeXN0ZW0gRGVzY3JpcHRvciAoRU4gMzAwIDQ2OCB2LjEuMTMuMSk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuOC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNTczLDcgKzI1NzMsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzRFZCQ29kZVJhdGUiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNEVkJDb2RlUmF0ZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuOS4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI2NTQsNyArMjY1NCw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNNb2R1bGF0aW9uVHlwZSI+PC9hPjxoMz5lbnVtIEdzdE1wZWd0c01vZHVsYXRpb25UeXBlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4xMC4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI3NDUsNyArMjc0NSw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNTYXRlbGxpdGVQb2xhcml6YXRpb25UeXBlIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzU2F0ZWxsaXRlUG9sYXJpemF0aW9uVHlwZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMTEuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNzgxLDcgKzI3ODEsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzU2F0ZWxsaXRlUm9sbG9mZiI+PC9hPjxoMz5lbnVtIEdzdE1wZWd0c1NhdGVsbGl0ZVJvbGxvZmY8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjEyLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjgzMiw3ICsyODMyLDcgQEAKIDxwPkNhYmxlIERlbGl2ZXJ5IFN5c3RlbSBEZXNjcmlwdG9yIChFTiAzMDAgNDY4IHYuMS4xMy4xKTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4xMy41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yODczLDcgKzI4NzMsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzQ2FibGVPdXRlckZFQ1NjaGVtZSI+PC9hPjxoMz5lbnVtIEdzdE1wZWd0c0NhYmxlT3V0ZXJGRUNTY2hlbWU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjE0LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjkyMCw3ICsyOTIwLDcgQEAKIDxwPlRlcnJlc3RyaWFsIERlbGl2ZXJ5IFN5c3RlbSBEZXNjcmlwdG9yIChFTiAzMDAgNDY4IHYuMS4xMy4xKTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4xNS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yOTk2LDcgKzI5OTYsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzVGVycmVzdHJpYWxUcmFuc21pc3Npb25Nb2RlIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzVGVycmVzdHJpYWxUcmFuc21pc3Npb25Nb2RlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4xNi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMwNTcsNyArMzA1Nyw3IEBACiA8YSBuYW1lPSJHc3RNcGVndHNUZXJyZXN0cmlhbEd1YXJkSW50ZXJ2YWwiPjwvYT48aDM+ZW51bSBHc3RNcGVndHNUZXJyZXN0cmlhbEd1YXJkSW50ZXJ2YWw8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjE3LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzEyOCw3ICszMTI4LDcgQEAKIDxhIG5hbWU9IkdzdE1wZWd0c1RlcnJlc3RyaWFsSGllcmFyY2h5Ij48L2E+PGgzPmVudW0gR3N0TXBlZ3RzVGVycmVzdHJpYWxIaWVyYXJjaHk8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjE4LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzE3NCw3ICszMTc0LDcgQEAKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjE5LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMyMDYsNyArMzIwNiw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4yMC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMjUxLDcgKzMyNTEsNyBAQAogPHA+ZGVzY3JpYmUgRFZCLVQyIHRyYW5zbWlzc2lvbnMgYWNjb3JkaW5nIHRvIEVOIDMwMiA3NTU8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMjEuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzMxNCw3ICszMzE0LDcgQEAKIDxwPkFzIHNwZWNpZmllZCBpbiBUYWJsZSA4NyBvZiBFVFNJIEVOIDMwMCA0NjggdjEuMTMuMTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4yMi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM0NzIsNyArMzQ3Miw3IEBACiA8cD5BcyBzcGVjaWZpZWQgaW4gVGFibGUgMTAwIG9mIEVUU0kgRU4gMzAwIDQ2OCB2MS4xMy4xPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjIzLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzUxNCw3ICszNTE0LDcgQEAKIDxwPkxpbmthZ2UgVHlwZSAoRU4gMzAwIDQ2OCB2LjEuMTMuMSk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNjA1LDcgKzM2MDUsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzRFZCTGlua2FnZUhhbmRPdmVyVHlwZSI+PC9hPjxoMz5lbnVtIEdzdE1wZWd0c0RWQkxpbmthZ2VIYW5kT3ZlclR5cGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjI1LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzY5NCw3ICszNjk0LDcgQEAKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjI5LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM3NDksNyArMzc0OSw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4zMC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNzk2LDcgKzM3OTYsNyBAQAogPGEgbmFtZT0iR3N0TXBlZ3RzRFZCU2NyYW1ibGluZ01vZGVUeXBlIj48L2E+PGgzPmVudW0gR3N0TXBlZ3RzRFZCU2NyYW1ibGluZ01vZGVUeXBlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4zMS4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM4NzEsNyArMzg3MSw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4zMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0zOTAzLDcgKzM5MDMsNyBAQAogPHA+YSBtdWx0aWxpbmd1YWwgbmV0d29yayBuYW1lIGVudHJ5PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuOS45LjM0LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM5MzUsNyArMzkzNSw3IEBACiA8cD5hIG11bHRpbGluZ3VhbCBib3VxdWV0IG5hbWUgZW50cnk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMzUuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzk2OCw3ICszOTY4LDcgQEAKIDxwPmEgbXVsdGlsaW5ndWFsIHNlcnZpY2UgbmFtZSBlbnRyeTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjkuOS4zNi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC00MDA0LDcgKzQwMDQsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS45LjkuMzcuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwKaW5kZXggNjBjZmE3ZC4uYWRkNTdhNSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1zZWN0aW9ucy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+RFZCIHZhcmlhbnRzIG9mIE1QRUctVFMgc2VjdGlvbnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0ibXBlZ3RzLmh0bWwiIHRpdGxlPSJNcGVnIFRTIGhlbHBlciBsaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQVRTQy12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwiIHRpdGxlPSJBVFNDIHZhcmlhbnRzIG9mIE1QRUctVFMgc2VjdGlvbnMiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtc2VjdGlvbnMuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEzNiw3ICsxMzYsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1EVkItdmFyaWFudHMtb2YtTVBFRy1UUy1zZWN0aW9ucy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMjEzLDcgKzIxMyw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy44LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI2Niw3ICsyNjYsNyBAQAogIGlzIG1hbmFnZWQgYnkgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TXBlZ3RzU2VjdGlvbjwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy44LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI5NCw3ICsyOTQsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOC42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMjIsNyArMzIyLDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjguNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzc1LDcgKzM3NSw3IEBACiAgaXMgbWFuYWdlZCBieSB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1zZWN0aW9ucy5odG1sI0dzdE1wZWd0c1NlY3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNTZWN0aW9uPC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjguMTAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQwMyw3ICs0MDMsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOC4xMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDMwLDcgKzQzMCw3IEBACiA8cD5SZXR1cm5zIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3REYXRlVGltZS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RGF0ZVRpbWU8L3NwYW4+PC9hPiBvZiB0aGUgVERUPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy44LjEyLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NTgsNyArNDU4LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjguMTMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ4Nyw3ICs0ODcsNyBAQAogPHA+c2VlIGFsc286IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uVGFibGVJRCIgdGl0bGU9ImVudW0gR3N0TXBlZ3RzU2VjdGlvblRhYmxlSUQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNcGVndHNTZWN0aW9uVGFibGVJRDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy45LjIuNiI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC03MDMsNyArNzAzLDcgQEAKIDxwPk5ldHdvcmsgSW5mb3JtYXRpb24gVGFibGUgKElTTy9JRUMgMTM4MTgtMSAvIEVOIDMwMCA0NjgpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy45LjMuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzQ2LDcgKzc0Niw3IEBACiA8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOS40LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc4NCw3ICs3ODQsNyBAQAogPHA+RFZCIEJvdXF1ZXQgQXNzb2NpYXRpb24gVGFibGUgKEVOIDMwMCA0NjgpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuNy45LjUuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODMwLDcgKzgzMCw3IEBACiA8cD5TZXJ2aWNlIERlc2NyaXB0aW9uIFRhYmxlIChFTiAzMDAgNDY4KTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOS43LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg3Nyw3ICs4NzcsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjkuOC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05MzYsNyArOTM2LDcgQEAKIDxwPkV2ZW50IEluZm9ybWF0aW9uIFRhYmxlIChFTiAzMDAgNDY4KTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOS45LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwMDEsNyArMTAwMSw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjkuMTAuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA0OSw3ICsxMDQ5LDcgQEAKIDxwPkNvcnJlc3BvbmRzIHRvIHRhYmxlIDYgb2YgRVRTSSBFTiAzMDAgNDY4ICh2MS4xMy4wKTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi41LjcuOS4xMS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExMDIsNyArMTEwMiw3IEBACiA8cD5UaW1lIE9mZnNldCBUYWJsZSAoRU4gMzAwIDQ2OCk8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNS43LjkuMTIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5odG1sCmluZGV4IDgyMDQwMzMuLmMyN2IzOWMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3IuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RBZ2dyZWdhdG9yOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImJhc2UuaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYXNlIGNsYXNzZXMgZnJvbSBnc3QtcGx1Z2lucy1iYWQiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJiYXNlLmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFzZSBjbGFzc2VzIGZyb20gZ3N0LXBsdWdpbnMtYmFkIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3IuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTc3LDcgKzc3LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTQ1LDcgKzE0NSw3IEBACiBzZW50IGJlZm9yZSBwdXNoaW5nIHRoZSBidWZmZXIuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMi42LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE3NSw3ICsxNzUsNyBAQAogPHA+U2V0cyB0aGUgY2FwcyB0byBiZSB1c2VkIG9uIHRoZSBzcmMgcGFkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjIuNi4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMDksNyArMjA5LDcgQEAKIHNpbmsgcGFkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjIuNi40LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNDgsNyArMjQ4LDcgQEAKIDxwPlR5cGljYWxseSBvbmx5IGNhbGxlZCBieSBzdWJjbGFzc2VzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjIuNi41LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yODMsNyArMjgzLDcgQEAKIDxwPkFnZ3JlZ2F0b3IgYmFzZSBjbGFzcyBvYmplY3Qgc3RydWN0dXJlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjIuNy4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM1Miw2ICszNTIsMTEgQEAKICAgZ2Jvb2xlYW4gICAgICAgICAgKCpzdGFydCkgICAgICAgICAgKEdzdEFnZ3JlZ2F0b3IgICAgKiAgYWdncmVnYXRvcik7CiAKICAgR3N0Q2xvY2tUaW1lICAgICAgKCpnZXRfbmV4dF90aW1lKSAgKEdzdEFnZ3JlZ2F0b3IgICAgKiAgYWdncmVnYXRvcik7CisKKyAgR3N0QWdncmVnYXRvclBhZCAqICgqY3JlYXRlX25ld19wYWQpIChHc3RBZ2dyZWdhdG9yICAqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqIHJlcV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdzdENhcHMgICogY2Fwcyk7CiB9OwogPC9wcmU+CiA8cD5UaGUgYWdncmVnYXRvciBiYXNlIGNsYXNzIHdpbGwgaGFuZGxlIGluIGEgdGhyZWFkLXNhZmUgd2F5IGFsbCBtYW5uZXJzIG9mCkBAIC0zNjQsNyArMzY5LDcgQEAKIF9maW5pc2hfYnVmZmVyIGZyb20gaW5zaWRlIHRoYXQgZnVuY3Rpb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMi43LjMuNyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDcwLDYgKzQ3NSwxMSBAQAogb24gYWxsIHNpbmsgcGFkcyBiZWZvcmUgYWdncmVnYXRpbmcuPC9wPjwvdGQ+CiA8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0QWdncmVnYXRvckNsYXNzLmNyZWF0ZS1uZXctcGFkIj48L2E+Y3JlYXRlX25ld19wYWQ8L2NvZGU+PC9lbT7CoCgpPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvclBhZC5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvclBhZC5odG1sCmluZGV4IDExZGNiMzMuLjU5ZmU4NGEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3JQYWQuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yUGFkLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RBZ2dyZWdhdG9yUGFkOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImJhc2UuaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYXNlIGNsYXNzZXMgZnJvbSBnc3QtcGx1Z2lucy1iYWQiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RBZ2dyZWdhdG9yLmh0bWwiIHRpdGxlPSJHc3RBZ2dyZWdhdG9yIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3JQYWQuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTc2LDcgKzc2LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvclBhZC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTA2LDcgKzEwNiw3IEBACiAuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjcuMy42LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEzNCw3ICsxMzQsNyBAQAogZ3N0X2FnZ3JlZ2F0b3JfcGFkX2dldF9idWZmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvclBhZC5odG1sI0dzdEFnZ3JlZ2F0b3JQYWQiIHRpdGxlPSJzdHJ1Y3QgR3N0QWdncmVnYXRvclBhZCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFnZ3JlZ2F0b3JQYWQ8L3NwYW4+PC9hPiAqcGFkPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjMuNi4zLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNjUsNyArMTY1LDcgQEAKIC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNy4zLjYuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjEyLDcgKzIxMiw3IEBACiA8cD5UaGUgaW1wbGVtZW50YXRpb24gdGhlIEdzdFBhZCB0byB1c2Ugd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5odG1sI0dzdEFnZ3JlZ2F0b3IiIHRpdGxlPSJzdHJ1Y3QgR3N0QWdncmVnYXRvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFnZ3JlZ2F0b3I8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi43LjMuNy4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI1OSw3ICsyNTksNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNy4zLjcuMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbAppbmRleCAyNGY4ZjAzLi40NDE2M2ZjIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwKQEAgLTMsMTEgKzMsMTEgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEVHTEltYWdlTWVtb3J5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiIHRpdGxlPSJHc3RHTERvd25sb2FkIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xCYXNlRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VGaWx0ZXIiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCIgdGl0bGU9IkdzdEdMRGlzcGxheSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiIHRpdGxlPSJHc3RHTEZpbHRlciI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMTksOCArMTksOCBAQAogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTERvd25sb2FkLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMRmlsdGVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEwMCw3ICsxMDAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwKaW5kZXggNDAzNWVjNS4uMjA5YWQ3YiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTEFQSTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KIDwvaGVhZD4KQEAgLTIwLDcgKzIwLDcgQEAKIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTcxLDIwICs3MSwxMiBAQAogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLXBsYXRmb3JtLWZyb20tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsX3BsYXRmb3JtX2Zyb21fc3RyaW5nwqAoKSI+Z3N0X2dsX3BsYXRmb3JtX2Zyb21fc3RyaW5nPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLWNoZWNrLWV4dGVuc2lvbiIgdGl0bGU9ImdzdF9nbF9jaGVja19leHRlbnNpb27CoCgpIj5nc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEyOCw3ICsxMjAsNyBAQAogZ3N0X2dsX2FwaV90b19zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTEFQSSIgdGl0bGU9ImVudW0gR3N0R0xBUEkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFQSTwvc3Bhbj48L2E+IGFwaTwvY29kZT48L2VtPik7PC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOS4yLjYuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTU0LDcgKzE0Niw3IEBACiBnc3RfZ2xfYXBpX2Zyb21fc3RyaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqYXBpX3M8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjkuMi42LjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE3NywxNyArMTY5LDE3IEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJnc3QtZ2wtcGxhdGZvcm0tdG8tc3RyaW5nIj48L2E+PGgzPmdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmfCoCgpPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgotZ3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dzdEdMUGxhdGZvcm0iIHRpdGxlPSJlbnVtIEdzdEdMUGxhdGZvcm0iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFBsYXRmb3JtPC9zcGFuPjwvYT4gYXBpPC9jb2RlPjwvZW0+KTs8L3ByZT4KK2dzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTFBsYXRmb3JtIiB0aXRsZT0iZW51bSBHc3RHTFBsYXRmb3JtIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xQbGF0Zm9ybTwvc3Bhbj48L2E+IHBsYXRmb3JtPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi45LjIuNi40LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CiA8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgogPC9jb2xncm91cD4KIDx0Ym9keT48dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hcGk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXRmb3JtPC9wPjwvdGQ+CiA8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHc3RHTFBsYXRmb3JtIiB0aXRsZT0iZW51bSBHc3RHTFBsYXRmb3JtIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xQbGF0Zm9ybTwvc3Bhbj48L2E+IHRvIHN0cmluZ2lmeTwvcD48L3RkPgogPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+PC90Ym9keT4KQEAgLTE5NSw3ICsxODcsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOS4yLjYuNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IEEgc3BhY2Ugc2VwZXJhdGVkIHN0cmluZyBvZiB0aGUgT3BlbkdMIHBsYXRmb3JtcyBlbmFibGVkIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5hcGk8L2NvZGU+PC9lbT4KKzxwPiBBIHNwYWNlIHNlcGVyYXRlZCBzdHJpbmcgb2YgdGhlIE9wZW5HTCBwbGF0Zm9ybXMgZW5hYmxlZCBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGxhdGZvcm08L2NvZGU+PC9lbT4KIDwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0yMDYsNyArMTk4LDcgQEAKIGdzdF9nbF9wbGF0Zm9ybV9mcm9tX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnBsYXRmb3JtX3M8L2NvZGU+PC9lbT4pOzwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjkuMi42LjUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIyNSwxMyArMjE3LDYgQEAKIDwvcD4KIDwvZGl2PgogPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtY2hlY2stZXh0ZW5zaW9uIj48L2E+PGgzPmdzdF9nbF9jaGVja19leHRlbnNpb27CoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxzcGFuIGNsYXNzPSJ0eXBlIj5jaGFyPC9zcGFuPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+CkBAIC0yMzksNyArMjI0LDcgQEAKIDxhIG5hbWU9IkdzdEdMQVBJIj48L2E+PGgzPmVudW0gR3N0R0xBUEk8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjkuMi43LjIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNDgsMzMgKzIzMyw0NiBAQAogPHRib2R5PgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtQVBJLU5PTkU6Q0FQUyI+PC9hPkdTVF9HTF9BUElfTk9ORTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPm5vIEFQSTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtQVBJLU9QRU5HTDpDQVBTIj48L2E+R1NUX0dMX0FQSV9PUEVOR0w8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5EZXNrdG9wIE9wZW5HTCB1cCB0byBhbmQgaW5jbHVkaW5nIDMuMS4gIFRoZQorICAgICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHkgcHJvZmlsZSB3aGVuIHRoZSBPcGVuR0wgdmVyc2lvbiBpcyAmZ3Q7PSAzLjI8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUFQSS1PUEVOR0wzOkNBUFMiPjwvYT5HU1RfR0xfQVBJX09QRU5HTDM8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5EZXNrdG9wIE9wZW5HTCAmZ3Q7PSAzLjIgY29yZSBwcm9maWxlPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1BUEktR0xFUzE6Q0FQUyI+PC9hPkdTVF9HTF9BUElfR0xFUzE8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5PcGVuR0wgRVMgMS54PC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1BUEktR0xFUzI6Q0FQUyI+PC9hPkdTVF9HTF9BUElfR0xFUzI8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5PcGVuR0wgRVMgMi54IGFuZCAzLng8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUFQSS1BTlk6Q0FQUyI+PC9hPkdTVF9HTF9BUElfQU5ZPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+QW55IE9wZW5HTCBBUEk8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtMjg1LDcgKzI4Myw3IEBACiA8YSBuYW1lPSJHc3RHTFBsYXRmb3JtIj48L2E+PGgzPmVudW0gR3N0R0xQbGF0Zm9ybTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOS4yLjcuMy4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI5NCwzOCArMjkyLDUzIEBACiA8dGJvZHk+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1QTEFURk9STS1OT05FOkNBUFMiPjwvYT5HU1RfR0xfUExBVEZPUk1fTk9ORTwvcD48L3RkPgotPHRkPsKgPC90ZD4KLTx0ZD7CoDwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPm5vIHBsYXRmb3JtPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1QTEFURk9STS1FR0w6Q0FQUyI+PC9hPkdTVF9HTF9QTEFURk9STV9FR0w8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgRUdMIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IHdpdGggdGhlIFgxMSwgd2F5bGFuZAorICAgICAgICAgICAgICAgICAgICAgYW5kIGFuZHJvaWQgd2luZG93IHN5c3RlbXMgYXMgd2VsbCBhcyBvbiBlbWJlZGRlZCBMaW51eDwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtUExBVEZPUk0tR0xYOkNBUFMiPjwvYT5HU1RfR0xfUExBVEZPUk1fR0xYPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIEdMWCBwbGF0Zm9ybSB1c2VkIHByaW1hcmlseSB3aXRoIHRoZSBYMTEgd2luZG93IHN5c3RlbTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgogPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtUExBVEZPUk0tV0dMOkNBUFMiPjwvYT5HU1RfR0xfUExBVEZPUk1fV0dMPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIFdHTCBwbGF0Zm9ybSB1c2VkIHByaW1hcmlseSBvbiBXaW5kb3dzPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1QTEFURk9STS1DR0w6Q0FQUyI+PC9hPkdTVF9HTF9QTEFURk9STV9DR0w8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgQ0dMIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IG9uIE9TIFg8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVBMQVRGT1JNLUVBR0w6Q0FQUyI+PC9hPkdTVF9HTF9QTEFURk9STV9FQUdMPC9wPjwvdGQ+Ci08dGQ+wqA8L3RkPgotPHRkPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIEVBR0wgcGxhdGZvcm0gdXNlZCBwcmltYXJpbHkgb24gaU9TPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1QTEFURk9STS1BTlk6Q0FQUyI+PC9hPkdTVF9HTF9QTEFURk9STV9BTlk8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5hbnkgT3BlbkdMIHBsYXRmb3JtPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KQEAgLTMzNiwyNCArMzQ5LDI4IEBACiA8YSBuYW1lPSJHU1QtR0wtQVBJLUdMRVMxLU5BTUU6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQVBJX0dMRVMxX05BTUU8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX0FQSV9HTEVTMV9OQU1FICJnbGVzMSIKIDwvcHJlPgorPHA+VGhlIG5hbWUgZm9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktR0xFUzE6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9BUElfR0xFUzE8L2NvZGU+PC9hPiB1c2VkIGluIHZhcmlvdXMgcGxhY2VzPC9wPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHU1QtR0wtQVBJLUdMRVMyLU5BTUU6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQVBJX0dMRVMyX05BTUU8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX0FQSV9HTEVTMl9OQU1FICJnbGVzMiIKIDwvcHJlPgorPHA+VGhlIG5hbWUgZm9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktR0xFUzI6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9BUElfR0xFUzI8L2NvZGU+PC9hPiB1c2VkIGluIHZhcmlvdXMgcGxhY2VzPC9wPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHU1QtR0wtQVBJLU9QRU5HTDMtTkFNRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9BUElfT1BFTkdMM19OQU1FPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BUElfT1BFTkdMM19OQU1FICJvcGVuZ2wzIgogPC9wcmU+Cis8cD5UaGUgbmFtZSBmb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR1NULUdMLUFQSS1PUEVOR0wzOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfQVBJX09QRU5HTDM8L2NvZGU+PC9hPiB1c2VkIGluIHZhcmlvdXMgcGxhY2VzPC9wPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHU1QtR0wtQVBJLU9QRU5HTC1OQU1FOkNBUFMiPjwvYT48aDM+R1NUX0dMX0FQSV9PUEVOR0xfTkFNRTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQVBJX09QRU5HTF9OQU1FICJvcGVuZ2wiCiA8L3ByZT4KKzxwPlRoZSBuYW1lIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtQVBJLU9QRU5HTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX0FQSV9PUEVOR0w8L2NvZGU+PC9hPiB1c2VkIGluIHZhcmlvdXMgcGxhY2VzPC9wPgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjFlYzY1NwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwKQEAgLTAsMCArMSwzNjIgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5Hc3RHTEJ1ZmZlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCIgdGl0bGU9IkdzdEdMQmFzZUZpbHRlciI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIiB0aXRsZT0iR3N0R0xCdWZmZXJQb29sIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIudG9wX29mX3BhZ2UiPjwvYT5Hc3RHTEJ1ZmZlcjwvc3Bhbj48L2gyPgorPHA+R3N0R0xCdWZmZXIg4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgYnVmZmVyczwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItaW5pdC1vbmNlIiB0aXRsZT0iZ3N0X2dsX2J1ZmZlcl9pbml0X29uY2XCoCgpIj5nc3RfZ2xfYnVmZmVyX2luaXRfb25jZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1pcy1nbC1idWZmZXIiIHRpdGxlPSJnc3RfaXNfZ2xfYnVmZmVywqAoKSI+Z3N0X2lzX2dsX2J1ZmZlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIiB0aXRsZT0iR3N0R0xCdWZmZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCdWZmZXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtZ2wtYnVmZmVyLWFsbG9jIiB0aXRsZT0iZ3N0X2dsX2J1ZmZlcl9hbGxvY8KgKCkiPmdzdF9nbF9idWZmZXJfYWxsb2M8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1CVUZGRVI6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0JVRkZFUiI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQlVGRkVSPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LWdsLWJ1ZmZlci1hbGxvY2F0aW9uLXBhcmFtcy1uZXciIHRpdGxlPSJnc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ld8KgKCkiPmdzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGEgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3IiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgorPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlciIgdGl0bGU9IkdzdEdMQnVmZmVyIj5Hc3RHTEJ1ZmZlcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyI+R3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yLXN0cnVjdCIgdGl0bGU9IkdzdEdMQnVmZmVyQWxsb2NhdG9yIj5Hc3RHTEJ1ZmZlckFsbG9jYXRvcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyI+R3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtR0wtQlVGRkVSLUFMTE9DQVRPUi1OQU1FOkNBUFMiIHRpdGxlPSJHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FIj5HU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUdMLUJVRkZFUjpDQVBTIiB0aXRsZT0iR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfQlVGRkVSIj5HU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9CVUZGRVI8L2E+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KKzxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CisgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+R3N0QWxsb2NhdG9yPC9hPgorICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcjwvYT4KKyAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0R0xCdWZmZXJBbGxvY2F0b3IKKzwvcHJlPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5Hc3RHTEJ1ZmZlciBpcyBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4gc3ViY2xhc3MgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHRoZSBtYXBwaW5nIG9mCitHTCBidWZmZXJzLiAgPC9wPgorPHA+RGF0YSBpcyB1cGxvYWRlZCBvciBkb3dubG9hZGVkIGZyb20gdGhlIEdQVSBhcyBpcyBuZWNlc3NhcnkuPC9wPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWJ1ZmZlci1pbml0LW9uY2UiPjwvYT48aDM+Z3N0X2dsX2J1ZmZlcl9pbml0X29uY2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYnVmZmVyX2luaXRfb25jZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Jbml0aWFsaXplcyB0aGUgR0wgQnVmZmVyIGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KK211bHRpcGxlIHRpbWVzLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIiB0aXRsZT0iR3N0R0xCdWZmZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlcjwvc3Bhbj48L2E+IG9wZXJhdGlvbi48L3A+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1pcy1nbC1idWZmZXIiPjwvYT48aDM+Z3N0X2lzX2dsX2J1ZmZlcsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfaXNfZ2xfYnVmZmVyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjUuOC4zLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS41LjguMy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHdoZXRoZXIgdGhlIG1lbW9yeSBhdCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bWVtPC9jb2RlPjwvZW0+CitpcyBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIiB0aXRsZT0iR3N0R0xCdWZmZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlcjwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1idWZmZXItYWxsb2MiPjwvYT48aDM+Z3N0X2dsX2J1ZmZlcl9hbGxvY8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyIiB0aXRsZT0iR3N0R0xCdWZmZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCdWZmZXI8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX2J1ZmZlcl9hbGxvYyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gZ2xfdGFyZ2V0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gZ2xfdXNhZ2U8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzaXplPC9zcGFuPjwvYT4gbWF4c2l6ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUJVRkZFUjpDQVBTIj48L2E+PGgzPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0JVRkZFUjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVIgKDEgJmx0OyZsdDsgNCkKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYnVmZmVyLWFsbG9jYXRpb24tcGFyYW1zLW5ldyI+PC9hPjxoMz5nc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ld8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzaXplPC9zcGFuPjwvYT4gYWxsb2Nfc2l6ZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqYWxsb2NfcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGdsX3RhcmdldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBnbF91c2FnZTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS41LjguNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY19zaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHNpemUgaW4gYnl0ZXMgdG8gYWxsb2NhdGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NfcGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+CisuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX3RhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBPcGVuR0wgdGFyZ2V0IHRvIGFsbG9jYXRlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX3VzYWdlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIE9wZW5HTCB1c2FnZSBoaW50IHRvIGFsbG9jYXRlIHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjUuOC42LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IGZvciBhbGxvY2F0aW5nIE9wZW5HTCBidWZmZXIKK29iamVjdHM8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCdWZmZXIiPjwvYT48aDM+R3N0R0xCdWZmZXI8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IHsKKyAgR3N0R0xCYXNlTWVtb3J5ICAgICAgIG1lbTsKKworICBndWludCAgICAgICAgICAgICAgICAgaWQ7CisgIGd1aW50ICAgICAgICAgICAgICAgICB0YXJnZXQ7ICAgICAgICAgLyogWFhYOiBwdXQgdGhpcyBpbiB0aGUgYWxsb2NhdG9yPyAqLworICBndWludCAgICAgICAgICAgICAgICAgdXNhZ2VfaGludHM7ICAgICAvKiBYWFg6IHB1dCB0aGlzIGluIHRoZSBhbGxvY2F0b3I/ICovCit9IEdzdEdMQnVmZmVyOworPC9wcmU+Cis8cD5SZXByZXNlbnRzIGluZm9ybWF0aW9uIGFib3V0IGEgR0wgYnVmZmVyPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuNS45LjIuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCdWZmZXIubWVtIj48L2E+bWVtPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgcGFyZW50IG9iamVjdDwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQnVmZmVyLmlkIj48L2E+aWQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBidWZmZXIgaWQgZm9yIHRoaXMgbWVtb3J5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCdWZmZXIudGFyZ2V0Ij48L2E+dGFyZ2V0PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgT3BlbkdMIHRhcmdldCBvZiB0aGlzIHRleHR1cmUgZm9yIGJpbmRpbmcgcHVycG9zZXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJ1ZmZlci51c2FnZS1oaW50cyI+PC9hPnVzYWdlX2hpbnRzPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgT3BlbkdMIHVzYWdlIGhpbnRzIHRoaXMgYnVmZmVyIHdhcyBjcmVhdGVkIHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyI+PC9hPjxoMz5zdHJ1Y3QgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zIHsKKyAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICAgICBwYXJlbnQ7CisKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICBnbF90YXJnZXQ7CisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgZ2xfdXNhZ2U7Cit9OworPC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS41LjkuMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zLnBhcmVudCI+PC9hPnBhcmVudDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+cGFyZW50IG9iamVjdDwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcy5nbC10YXJnZXQiPjwvYT5nbF90YXJnZXQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBPcGVuR0wgdGFyZ2V0IHRvIGJpbmQgdGhlIGJ1ZmZlciB0bzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcy5nbC11c2FnZSI+PC9hPmdsX3VzYWdlPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgT3BlbkdMIHVzYWdlIGhpbnQgdG8gY3JlYXRlIHRoZSBidWZmZXIgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3Itc3RydWN0Ij48L2E+PGgzPkdzdEdMQnVmZmVyQWxsb2NhdG9yPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xCdWZmZXJBbGxvY2F0b3IgR3N0R0xCdWZmZXJBbGxvY2F0b3I7PC9wcmU+Cis8cD5PcGFxdWUgPHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdG9yPC9zcGFuPiBzdHJ1Y3Q8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MiPjwvYT48aDM+R3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzczwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgeworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Cit9IEdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3M7Cis8L3ByZT4KKzxwPlRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3M8L3NwYW4+PC9hPiBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YTwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUJVRkZFUi1BTExPQ0FUT1ItTkFNRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUU8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRSAgICJHTEJ1ZmZlciIKKzwvcHJlPgorPHA+VGhlIG5hbWUgb2YgdGhlIEdMIGJ1ZmZlciBhbGxvY2F0b3I8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUdMLUJVRkZFUjpDQVBTIj48L2E+PGgzPkdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9CVUZGRVIgIm1lbW9yeTpHTEJ1ZmZlciIKKzwvcHJlPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZm9vdGVyIj4KKzxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dENvY29hLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRDb2NvYS5odG1sCmluZGV4IDQ5ZmM4ZmUuLjBmOTNlZTEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dENvY29hLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0Q29jb2EuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMQ29udGV4dENvY29hOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRDb2NvYS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNjgsNyArNjgsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRDb2NvYS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RUdMLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFR0wuaHRtbAppbmRleCA1NzM2ZThlLi45ODlkNGU0IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFR0wuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFR0wuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMQ29udGV4dEVHTDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0Q29jb2EuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dENvY29hIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVHTC5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNjgsNyArNjgsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFR0wub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTExOCw2ICsxMTgsOCBAQAogCiAgIEdzdEdMQVBJIGdsX2FwaTsKIAorICBjb25zdCBnY2hhciAqZWdsX2V4dHM7CisKICAgRUdMSW1hZ2VLSFIgKCplZ2xDcmVhdGVJbWFnZSkgKEVHTERpc3BsYXkgZHB5LCBFR0xDb250ZXh0IGN0eCwgRUdMZW51bSB0YXJnZXQsCiAgICAgICBFR0xDbGllbnRCdWZmZXIgYnVmZmVyLCBjb25zdCBFR0xpbnQgKmF0dHJpYl9saXN0KTsKICAgRUdMQm9vbGVhbiAoKmVnbERlc3Ryb3lJbWFnZSkgKEVHTERpc3BsYXkgZHB5LCBFR0xJbWFnZUtIUiBpbWFnZSk7CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFYWdsLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRFYWdsLmh0bWwKaW5kZXggMTM3ZGRlZC4uMDRmYzNjYyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RWFnbC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVhZ2wuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMQ29udGV4dEVhZ2w6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVHTC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0RUdMIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dEVhZ2wuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RWFnbC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0R0xYLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFguaHRtbAppbmRleCA4MDc1NjFhLi40MjdiNDdmIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFguaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMQ29udGV4dEdMWDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0RWFnbC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0RWFnbCI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFguZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTY4LDcgKzY4LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0R0xYLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRXR0wuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5odG1sCmluZGV4IDBhZjIzNzMuLjZhMzI1MDMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQ29udGV4dFdHTC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0R0xDb250ZXh0V0dMOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRHTFguaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dEdMWCI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTENvbnRleHRXR0wuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTY4LDcgKzY4LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xDb250ZXh0V0dMLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43N2JiODRjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbApAQCAtMCwwICsxLDEyODkgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5Hc3RHTE1lbW9yeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEZyYW1lYnVmZmVyIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJnbC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Ij48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkudG9wX29mX3BhZ2UiPjwvYT5Hc3RHTE1lbW9yeTwvc3Bhbj48L2gyPgorPHA+R3N0R0xNZW1vcnkg4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXM8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgorPC90cj48L3RhYmxlPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctVklERU86Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTzwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhwqAoKSI+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGHCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWluaXQtZnVsbCIgdGl0bGU9ImdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGzCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxsPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3IiB0aXRsZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld8KgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXctd3JhcHBlZC1kYXRhIiB0aXRsZT0iZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGHCoCgpIj5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZcKgKCkiPmdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWFsbG9jYXRvci1nZXQtZGVmYXVsdCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0wqAoKSI+Z3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktaW5pdC1vbmNlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9pbml0X29uY2XCoCgpIj5nc3RfZ2xfbWVtb3J5X2luaXRfb25jZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0IiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9pbml0wqAoKSI+Z3N0X2dsX21lbW9yeV9pbml0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLW1lbW9yeSIgdGl0bGU9ImdzdF9pc19nbF9tZW1vcnnCoCgpIj5nc3RfaXNfZ2xfbWVtb3J5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8iIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b8KgKCkiPmdzdF9nbF9tZW1vcnlfY29weV9pbnRvPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LXRleGltYWdlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9jb3B5X3RleGltYWdlwqAoKSI+Z3N0X2dsX21lbW9yeV9jb3B5X3RleGltYWdlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1yZWFkLXBpeGVscyIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHPCoCgpIj5nc3RfZ2xfbWVtb3J5X3JlYWRfcGl4ZWxzPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXRleHN1YmltYWdlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV90ZXhzdWJpbWFnZcKgKCkiPmdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1oZWlnaHQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2hlaWdodMKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1pZCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWTCoCgpIj5nc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS10YXJnZXQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3RhcmdldMKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdHlwZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdHlwZcKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdHlwZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXdpZHRoIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV93aWR0aMKgKCkiPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGg8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVywqAoKSI+Z3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8YSBuYW1lPSJHc3RHTE1lbW9yeUFsbG9jYXRvciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktVklERU8tRk9STUFUUy1TVFI6Q0FQUyIgdGl0bGU9IkdTVF9HTF9NRU1PUllfVklERU9fRk9STUFUU19TVFIiPkdTVF9HTF9NRU1PUllfVklERU9fRk9STUFUU19TVFI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTE1lbW9yeUFsbG9jYXRvciI+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MiPkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIiB0aXRsZT0iR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSI+R1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRTwvYT48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj5Hc3RBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9hPgorICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTE1lbW9yeUFsbG9jYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IiPkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yPC9hPgorPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPkdzdEdMTWVtb3J5IGlzIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+IHN1YmNsYXNzIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGUgbWFwcGluZyBvZgorT3BlbkdMIHRleHR1cmVzLiAgPC9wPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gaXMgY3JlYXRlZCBvciB3cmFwcGVkIHRocm91Z2ggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYyIgdGl0bGU9ImdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jKCk8L2NvZGU+PC9hPgord2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4uPC9wPgorPHA+RGF0YSBpcyB1cGxvYWRlZCBvciBkb3dubG9hZGVkIGZyb20gdGhlIEdQVSBhcyBpcyBuZWNlc3NhcnkuPC9wPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctVklERU86Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTzwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTyAoMSAmbHQ7Jmx0OyAzKQorPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiPjwvYT48aDM+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqc3JjX3ZpZDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqZGVzdF92aWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q29weSBhbmQgc2V0IGFueSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgcmVzb3VyY2VzIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kZXN0X3ZpZDwvY29kZT48L2VtPgorLiAgSW50ZW5kZWQKK2ZvciBzdWJjbGFzcyB1c2FnZSBvbmx5IHRvIGNoYWluIHVwIGF0IHRoZSBlbmQgb2YgYSBzdWJjbGFzcyBjb3B5IGZ1bmN0aW9uLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zcmNfdmlkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+c291cmNlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBjb3B5IGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGVzdF92aWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5kZXN0aW5hdGlvbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gY29weSBpbnRvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlLWRhdGEiPjwvYT48aDM+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlVuc2V0IGFuZCBmcmVlIGFueSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgcmVzb3VyY2VzLiAgSW50ZW5kZWQgZm9yIHN1YmNsYXNzCit1c2FnZSBvbmx5IHRvIGNoYWluIHVwIGF0IHRoZSBlbmQgb2YgYSBzdWJjbGFzcyBmcmVlIGZ1bmN0aW9uLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1pbml0LWZ1bGwiPjwvYT48aDM+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzaXplPC9zcGFuPjwvYT4gc3RydWN0X3NpemU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGFsbG9jX2ZsYWdzPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmPCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmM8L3NwYW4+PC9hPiBjb3B5PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmPCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmM8L3NwYW4+PC9hPiBmcmVlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICphbGxvY19wYXJhbXM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqdl9pbmZvPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBwbGFuZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiAqdmFsaWduPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHdyYXBwZWRfZGF0YTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gZ2xfaGFuZGxlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB1c2VyX2RhdGE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IG5vdGlmeTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5JbnRlbmRlZCBmb3Igc3ViY2xhc3MgdXNhZ2U8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdHJ1Y3Rfc2l6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBzaXplIG9mIHRoZSBzdHJ1Y3QgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcmFtczwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jX2ZsYWdzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+c29tZSBhbGxvY2F0aW9uIGZsYWdzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvcHk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIGNvcHkgZnVuY3Rpb248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZnJlZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgZnJlZSBmdW5jdGlvbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY19wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dl9pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxhbmU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgdmlkZW8gcGxhbmUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorcmVwcmVzZW50czwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWxpZ248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYW55IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiBhcHBsaWVkIHRvIHN5bWVtIG1hcHBpbmdzIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d3JhcHBlZF9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSBvcHRpb25hbCBkYXRhIHBvaW50ZXIgdG8gd3JhcC4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfaGFuZGxlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIG9wdGlvbmFsIE9wZW5HTCBoYW5kbGUgdG8gd3JhcCBvciAwPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnVzZXJfZGF0YTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB1c2VyIGRhdGEgdG8gY2FsbCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bm90aWZ5PC9jb2RlPjwvZW0+Cit3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5ub3RpZnk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+LiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC41LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gaW5pdGlhbGl6ZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcmFtczwvY29kZT48L2VtPgord2l0aCB0aGUgcGFyYW1ldGVycyBzcGVjaWZpZWQ8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldyI+PC9hPjxoMz5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKmFsbG9jX3BhcmFtczwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqdl9pbmZvPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+ICp2YWxpZ248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC42LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jX3BhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52X2luZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGFuZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB2aWRlbyBwbGFuZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+CityZXByZXNlbnRzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbGlnbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhbnkgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+IGFwcGxpZWQgdG8gc3ltZW0gbWFwcGluZ3Mgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50YXJnZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gZm9yIGFsbG9jYXRpbmcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4nczwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtZGF0YSI+PC9hPjxoMz5nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKmFsbG9jX3BhcmFtczwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICp2X2luZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHBsYW5lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+ICp2YWxpZ248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gd3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB1c2VyX2RhdGE8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IG5vdGlmeTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjcuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NfcGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+CisuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZfaW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPndyYXBwZWRfZGF0YTwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYW5lPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHZpZGVvIHBsYW5lIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53cmFwcGVkX2RhdGE8L2NvZGU+PC9lbT4KK3JlcHJlc2VudHM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsaWduPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGFueSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gYXBwbGllZCB0byBzeW1lbSBtYXBwaW5ncyBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+CisuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d3JhcHBlZF9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGRhdGEgcG9pbnRlciB0byB3cmFwPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnVzZXJfZGF0YTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB1c2VyIGRhdGEgdG8gY2FsbCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bm90aWZ5PC9jb2RlPjwvZW0+Cit3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5ub3RpZnk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+LiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC43LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IGZvciB3cmFwcGluZyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLXRleHR1cmUiPjwvYT48aDM+Z3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICphbGxvY19wYXJhbXM8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqdl9pbmZvPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBwbGFuZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiAqdmFsaWduPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHRleF9pZDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gdXNlcl9kYXRhPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPiBub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC44LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jX3BhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52X2luZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGFuZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB2aWRlbyBwbGFuZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+CityZXByZXNlbnRzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbGlnbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhbnkgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+IGFwcGxpZWQgdG8gc3ltZW0gbWFwcGluZ3Mgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50YXJnZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF9pZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBHTCB0ZXh0dXJlIHRvIHdyYXA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHVzZXIgZGF0YSB0byBjYWxsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KK3dpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjguNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gZm9yIHdyYXBwaW5nIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWFsbG9jYXRvci1nZXQtZGVmYXVsdCI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC45LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguOS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBkZWZhdWx0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPiBzdXBwb3J0ZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnRleHQ8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWluaXQtb25jZSI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X2luaXRfb25jZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9tZW1vcnlfaW5pdF9vbmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnZvaWQ8L3NwYW4+PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkluaXRpYWxpemVzIHRoZSBHTCBCYXNlIFRleHR1cmUgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgR3N0R0xNZW1vcnkgb3BlcmF0aW9uLjwvcD4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1pbml0Ij48L2E+PGgzPmdzdF9nbF9tZW1vcnlfaW5pdMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9tZW1vcnlfaW5pdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRvcjwvc3Bhbj48L2E+ICphbGxvY2F0b3I8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+ICpwYXJlbnQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gdGFyZ2V0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHBsYW5lPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+ICp2YWxpZ248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHVzZXJfZGF0YTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkluaXRpYWxpemVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5tZW08L2NvZGU+PC9lbT4KKyB3aXRoIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXJzLiAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmluZm88L2NvZGU+PC9lbT4KKyBpcyBhc3N1bWVkIHRvIGhhdmUKK2FscmVhZHkgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGggPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjZ3N0LXZpZGVvLWluZm8tYWxpZ24iPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3ZpZGVvX2luZm9fYWxpZ24oKTwvY29kZT48L2E+LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiB0byBpbml0aWFsaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jYXRvcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRvcjwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemUgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJlbnQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIHBhcmVudCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemUgd2l0aC4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiB0byBpbml0aWFsaXplIHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gZm9yIHRoaXMgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+R3N0QWxsb2NhdGlvblBhcmFtczwvY29kZT48L2VtPgordG8gaW5pdGlhbGl6ZSB3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+IGZvciB0aGlzIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYW5lPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHBsYW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAwKSBmb3IgdGhpcyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWxpZ248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gb3B0aW9uYWwgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+IHBhcmFtZXRlcnMuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnVzZXJfZGF0YTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB1c2VyIGRhdGEgdG8gY2FsbCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bm90aWZ5PC9jb2RlPjwvZW0+Cit3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtaXMtZ2wtbWVtb3J5Ij48L2E+PGgzPmdzdF9pc19nbF9tZW1vcnnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2lzX2dsX21lbW9yeSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4gKm1lbTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjEyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjEyLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciB0aGUgbWVtb3J5IGF0IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5tZW08L2NvZGU+PC9lbT4KK2lzIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuNDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8iPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9jb3B5X2ludG/CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHRleF9pZDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+IHRleF90eXBlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB3aWR0aDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gaGVpZ2h0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNvcGllcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Z2xfbWVtPC9jb2RlPjwvZW0+CisgaW50byB0aGUgdGV4dHVyZSBzcGVjZmlmaWVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KKy4gIFRoZSBmb3JtYXQgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorCitpcyBzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF90eXBlPC9jb2RlPjwvZW0+CissIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53aWR0aDwvY29kZT48L2VtPgorIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aGVpZ2h0PC9jb2RlPjwvZW0+CisuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF9pZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPk9wZW5HTCB0ZXh0dXJlIGlkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF90eXBlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndpZHRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+d2lkdGggb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmhlaWdodDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmhlaWdodCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBXaGV0aGVyIHRoZSBjb3B5IHN1Y2VlZGVkPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktY29weS10ZXhpbWFnZSI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX21lbW9yeV9jb3B5X3RleGltYWdlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKnNyYzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdGV4X2lkPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiBvdXRfdGFyZ2V0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gb3V0X3RleF90eXBlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gd2lkdGg8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBoZWlnaHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LXJlYWQtcGl4ZWxzIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVscyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiByZWFkX3BvaW50ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UmVhZHMgdGhlIHRleHR1cmUgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gaW50byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cmVhZF9wb2ludGVyPC9jb2RlPjwvZW0+CisgaWYgbm8gYnVmZmVyIGlzIGJvdW5kCit0byA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R0xfUElYRUxfUEFDS19CVUZGRVI8L2NvZGU+LiAgT3RoZXJ3aXNlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5yZWFkX3BvaW50ZXI8L2NvZGU+PC9lbT4KKyBpcyB0aGUgYnl0ZSBvZmZzZXQgaW50bwordGhlIGN1cnJlbnRseSBib3VuZCA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R0xfUElYRUxfUEFDS19CVUZGRVI8L2NvZGU+IGJ1ZmZlciB0byBzdG9yZSB0aGUgcmVzdWx0IG9mCitnbFJlYWRQaXhlbHMuICBTZWUgdGhlIE9wZW5HTCBzcGVjaWZpY2F0aW9uIGZvciBnbFJlYWRQaXhlbHMgZm9yIG1vcmUKK2RldGFpbHMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnJlYWRfcG9pbnRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkYXRhIHBvaW50ZXIgdG8gcGFzcyB0byBnbFJlYWRQaXhlbHM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZXJlYWQgb3BlcmF0aW9uIHN1Y2NlZWRlZDwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LXRleHN1YmltYWdlIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKmdsX21lbTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHJlYWRfcG9pbnRlcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1yZWFkLXBpeGVscyIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHPCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHMoKTwvY29kZT48L2E+IGZvciB3aGF0IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5yZWFkX3BvaW50ZXI8L2NvZGU+PC9lbT4KKyBzaWduaWZpZXMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnJlYWRfcG9pbnRlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkYXRhIHBvaW50ZXIgdG8gcGFzcyB0byBnbFRleFN1YkltYWdlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtaGVpZ2h0Ij48L2E+PGgzPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Citnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2hlaWdodCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfbWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMTcuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgdGV4dHVyZSBoZWlnaHQgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmdsX21lbTwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtaWQiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9pZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Citnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKmdsX21lbTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjE4LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xOC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBPcGVuR0wgdGV4dHVyZSBoYW5kbGUgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmdsX21lbTwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktZ2V0LXRleHR1cmUtdGFyZ2V0Ij48L2E+PGgzPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4KK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT4gKmdsX21lbTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjE5LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4xOS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5nbF9tZW08L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXR5cGUiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90eXBlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+Citnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3R5cGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMjAuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX21lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjIwLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+IG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5nbF9tZW08L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXdpZHRoIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGjCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGggKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMjEuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmdsX21lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOC44LjIxLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIHRleHR1cmUgd2lkdGggb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmdsX21lbTwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVywqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvc3Bhbj48L2E+ICphbGxvY2F0b3I8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT4gKmJ1ZmZlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTguOC4yMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hbGxvY2F0b3I8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9jb2RlPjwvZW0+Cit0byBhbGxvY2F0ZSBmcm9tPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmJ1ZmZlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiB0byBzZXR1cDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJhbXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IHRvIGFsbG9jYXRlIHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjguMjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSBidWZmZXIgd2FzIGNvcnJlY3RseSBzZXR1cDwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtTUVNT1JZLVZJREVPLUZPUk1BVFMtU1RSOkNBUFMiPjwvYT48aDM+R1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSAgICAgICAgICAgICBHU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIj48L2E+PGgzPnN0cnVjdCBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIHsKKyAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICBwYXJlbnQ7CisKKyAgR3N0VmlkZW9JbmZvICAgICAgICAgICp2X2luZm87CisgIGd1aW50ICAgICAgICAgICAgICAgICAgcGxhbmU7CisgIEdzdFZpZGVvQWxpZ25tZW50ICAgICAqdmFsaWduOworICBHc3RHTFRleHR1cmVUYXJnZXQgICAgIHRhcmdldDsKK307Cis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xNZW1vcnlBbGxvY2F0b3Itc3RydWN0Ij48L2E+PGgzPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlBbGxvY2F0b3IgR3N0R0xNZW1vcnlBbGxvY2F0b3I7PC9wcmU+Cis8cD5PcGFxdWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvc3Bhbj48L2E+IHN0cnVjdDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyI+PC9hPjxoMz5Hc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICAgICAgICAgICAgIHBhcmVudF9jbGFzczsKKworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiAgICAgICBtYXA7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiAgICAgIGNvcHk7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24gICAgIHVubWFwOworfSBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzOworPC9wcmU+Cis8cD5UaGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3MiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzPC9zcGFuPjwvYT4gb25seSBjb250YWlucyBwcml2YXRlIGRhdGE8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMTWVtb3J5Ij48L2E+PGgzPkdzdEdMTWVtb3J5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CisgIEdzdEdMQmFzZU1lbW9yeSAgICAgICAgICAgbWVtOworCisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgdGV4X2lkOworICBHc3RHTFRleHR1cmVUYXJnZXQgICAgICAgIHRleF90YXJnZXQ7CisgIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSAgICAgdGV4X3R5cGU7CisgIEdzdFZpZGVvSW5mbyAgICAgICAgICAgICAgaW5mbzsKKyAgR3N0VmlkZW9BbGlnbm1lbnQgICAgICAgICB2YWxpZ247CisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgcGxhbmU7CisgIGdmbG9hdCAgICAgICAgICAgICAgICAgICAgdGV4X3NjYWxpbmdbMl07Cit9IEdzdEdMTWVtb3J5OworPC9wcmU+Cis8cD5SZXByZXNlbnRzIGluZm9ybWF0aW9uIGFib3V0IGEgR0wgdGV4dHVyZTwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE4LjkuNi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS5tZW0iPjwvYT5tZW08L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBwYXJlbnQgb2JqZWN0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkudGV4LWlkIj48L2E+dGV4X2lkPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgR0wgdGV4dHVyZSBpZCBmb3IgdGhpcyBtZW1vcnk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS50ZXgtdGFyZ2V0Ij48L2E+dGV4X3RhcmdldDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIEdMIHRleHR1cmUgdGFyZ2V0IGZvciB0aGlzIG1lbW9yeTwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS50ZXgtdHlwZSI+PC9hPnRleF90eXBlPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgdGV4dHVyZSB0eXBlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LmluZm8iPjwvYT5pbmZvPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgdGV4dHVyZSdzIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS52YWxpZ24iPjwvYT52YWxpZ248L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmRhdGEgYWxpZ25tZW50IGZvciBzeXN0ZW0gbWVtb3J5IG1hcHBpbmc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS5wbGFuZSI+PC9hPnBsYW5lPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5kYXRhIHBsYW5lIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5pbmZvPC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnRleC1zY2FsaW5nIj48L2E+dGV4X3NjYWxpbmc8L2NvZGU+PC9lbT5bMl07PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPkdMIHNoYWRlciBzY2FsaW5nIHBhcmFtZXRlcnMgZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT52YWxpZ248L2NvZGU+PC9lbT4KK2FuZC9vciB3aWR0aC9oZWlnaHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1NRU1PUlktQUxMT0NBVE9SLU5BTUU6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUgICAiR0xNZW1vcnkiCis8L3ByZT4KKzxwPlRoZSBuYW1lIG9mIHRoZSBHTCBtZW1vcnkgYWxsb2NhdG9yPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4sIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yPC9zcGFuPjwvYT4sIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEJ1ZmZlclBvb2wuaHRtbCIgdGl0bGU9IkdzdEdMQnVmZmVyUG9vbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQnVmZmVyUG9vbDwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFmZGVkYQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbApAQCAtMCwwICsxLDQxOSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPkdzdEdMU0w6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iLmh0bWwiIHRpdGxlPSJHc3RHTFNMU3RhZ2UiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMU0w8L3NwYW4+PC9oMj4KKzxwPkdzdEdMU0wg4oCUIGhlbHBlcnMgZm9yIGRlYWxpbmcgd2l0aCBPcGVuR0wgc2hhZGVyczwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtRVJST1I6Q0FQUyIgdGl0bGU9IkdTVF9HTFNMX0VSUk9SIj5HU1RfR0xTTF9FUlJPUjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVF1YXJrcy5odG1sI0dRdWFyayI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HUXVhcms8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLWVycm9yLXF1YXJrIiB0aXRsZT0iZ3N0X2dsc2xfZXJyb3JfcXVhcmvCoCgpIj5nc3RfZ2xzbF9lcnJvcl9xdWFyazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU0xQcm9maWxlPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1wcm9maWxlLWZyb20tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsc2xfcHJvZmlsZV9mcm9tX3N0cmluZ8KgKCkiPmdzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1wcm9maWxlLXRvLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nwqAoKSI+Z3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xWZXJzaW9uIiB0aXRsZT0iZW51bSBHc3RHTFNMVmVyc2lvbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNMVmVyc2lvbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1mcm9tLXN0cmluZyIgdGl0bGU9ImdzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi10by1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZ8KgKCkiPmdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtZnJvbS1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmfCoCgpIj5nc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmc8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS10by1zdHJpbmciIHRpdGxlPSJnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nwqAoKSI+Z3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtc3RyaW5nLWdldC12ZXJzaW9uLXByb2ZpbGUiIHRpdGxlPSJnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZcKgKCkiPmdzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2wtY29udGV4dC1zdXBwb3J0cy1nbHNsLXByb2ZpbGUtdmVyc2lvbiIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3N1cHBvcnRzX2dsc2xfcHJvZmlsZV92ZXJzaW9uwqAoKSI+Z3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xWZXJzaW9uIiB0aXRsZT0iZW51bSBHc3RHTFNMVmVyc2lvbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNMVmVyc2lvbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsLXZlcnNpb24tdG8tZ2xzbC12ZXJzaW9uIiB0aXRsZT0iZ3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uwqAoKSI+Z3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgorPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTEVycm9yIiB0aXRsZT0iZW51bSBHc3RHTFNMRXJyb3IiPkdzdEdMU0xFcnJvcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj5Hc3RHTFNMUHJvZmlsZTwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj5Hc3RHTFNMVmVyc2lvbjwvYT48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMU0wtRVJST1I6Q0FQUyI+PC9hPjxoMz5HU1RfR0xTTF9FUlJPUjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xTTF9FUlJPUiAoZ3N0X2dsc2xfZXJyb3JfcXVhcmsgKCkpCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsc2wtZXJyb3ItcXVhcmsiPjwvYT48aDM+Z3N0X2dsc2xfZXJyb3JfcXVhcmvCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVF1YXJrcy5odG1sI0dRdWFyayI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HUXVhcms8L3NwYW4+PC9hPgorZ3N0X2dsc2xfZXJyb3JfcXVhcmsgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2xzbC1wcm9maWxlLWZyb20tc3RyaW5nIj48L2E+PGgzPmdzdF9nbHNsX3Byb2ZpbGVfZnJvbV9zdHJpbmfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xQcm9maWxlIiB0aXRsZT0iZW51bSBHc3RHTFNMUHJvZmlsZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNMUHJvZmlsZTwvc3Bhbj48L2E+Citnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqc3RyaW5nPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsc2wtcHJvZmlsZS10by1zdHJpbmciPjwvYT48aDM+Z3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xQcm9maWxlIiB0aXRsZT0iZW51bSBHc3RHTFNMUHJvZmlsZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xQcm9maWxlPC9zcGFuPjwvYT4gcHJvZmlsZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbHNsLXZlcnNpb24tZnJvbS1zdHJpbmciPjwvYT48aDM+Z3N0X2dsc2xfdmVyc2lvbl9mcm9tX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU0xWZXJzaW9uPC9zcGFuPjwvYT4KK2dzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzdHJpbmc8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2xzbC12ZXJzaW9uLXRvLXN0cmluZyI+PC9hPjxoMz5nc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFZlcnNpb248L3NwYW4+PC9hPiB2ZXJzaW9uPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLWZyb20tc3RyaW5nIj48L2E+PGgzPmdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzdHJpbmc8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xWZXJzaW9uIiB0aXRsZT0iZW51bSBHc3RHTFNMVmVyc2lvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xWZXJzaW9uPC9zcGFuPjwvYT4gKnZlcnNpb248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xQcm9maWxlIiB0aXRsZT0iZW51bSBHc3RHTFNMUHJvZmlsZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xQcm9maWxlPC9zcGFuPjwvYT4gKnByb2ZpbGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtdG8tc3RyaW5nIj48L2E+PGgzPmdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFZlcnNpb248L3NwYW4+PC9hPiB2ZXJzaW9uPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFByb2ZpbGU8L3NwYW4+PC9hPiBwcm9maWxlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsc2wtc3RyaW5nLWdldC12ZXJzaW9uLXByb2ZpbGUiPjwvYT48aDM+Z3N0X2dsc2xfc3RyaW5nX2dldF92ZXJzaW9uX3Byb2ZpbGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsc2xfc3RyaW5nX2dldF92ZXJzaW9uX3Byb2ZpbGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xWZXJzaW9uIiB0aXRsZT0iZW51bSBHc3RHTFNMVmVyc2lvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xWZXJzaW9uPC9zcGFuPjwvYT4gKnZlcnNpb248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFByb2ZpbGUiIHRpdGxlPSJlbnVtIEdzdEdMU0xQcm9maWxlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFByb2ZpbGU8L3NwYW4+PC9hPiAqcHJvZmlsZTwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1jb250ZXh0LXN1cHBvcnRzLWdsc2wtcHJvZmlsZS12ZXJzaW9uIj48L2E+PGgzPmdzdF9nbF9jb250ZXh0X3N1cHBvcnRzX2dsc2xfcHJvZmlsZV92ZXJzaW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9jb250ZXh0X3N1cHBvcnRzX2dsc2xfcHJvZmlsZV92ZXJzaW9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR3N0R0xTTFZlcnNpb24iIHRpdGxlPSJlbnVtIEdzdEdMU0xWZXJzaW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTTFZlcnNpb248L3NwYW4+PC9hPiB2ZXJzaW9uPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMUHJvZmlsZSIgdGl0bGU9ImVudW0gR3N0R0xTTFByb2ZpbGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNMUHJvZmlsZTwvc3Bhbj48L2E+IHByb2ZpbGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdmVyc2lvbi10by1nbHNsLXZlcnNpb24iPjwvYT48aDM+Z3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiIgdGl0bGU9ImVudW0gR3N0R0xTTFZlcnNpb24iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xTTFZlcnNpb248L3NwYW4+PC9hPgorZ3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiIHRpdGxlPSJlbnVtIEdzdEdMQVBJIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBUEk8L3NwYW4+PC9hPiBnbF9hcGk8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBtYWo8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBtaW48L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMU0xFcnJvciI+PC9hPjxoMz5lbnVtIEdzdEdMU0xFcnJvcjwvaDM+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMS43LjIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1FUlJPUi1DT01QSUxFOkNBUFMiPjwvYT5HU1RfR0xTTF9FUlJPUl9DT01QSUxFPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLUVSUk9SLUxJTks6Q0FQUyI+PC9hPkdTVF9HTFNMX0VSUk9SX0xJTks8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtRVJST1ItUFJPR1JBTTpDQVBTIj48L2E+R1NUX0dMU0xfRVJST1JfUFJPR1JBTTwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xTTFByb2ZpbGUiPjwvYT48aDM+ZW51bSBHc3RHTFNMUHJvZmlsZTwvaDM+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMS43LjMuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1QUk9GSUxFLU5PTkU6Q0FQUyI+PC9hPkdTVF9HTFNMX1BST0ZJTEVfTk9ORTwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1QUk9GSUxFLUVTOkNBUFMiPjwvYT5HU1RfR0xTTF9QUk9GSUxFX0VTPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVBST0ZJTEUtQ09SRTpDQVBTIj48L2E+R1NUX0dMU0xfUFJPRklMRV9DT1JFPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVBST0ZJTEUtQ09NUEFUSUJJTElUWTpDQVBTIj48L2E+R1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVBST0ZJTEUtQU5ZOkNBUFMiPjwvYT5HU1RfR0xTTF9QUk9GSUxFX0FOWTwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xTTFZlcnNpb24iPjwvYT48aDM+ZW51bSBHc3RHTFNMVmVyc2lvbjwvaDM+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4yMS43LjQuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLU5PTkU6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fTk9ORTwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTEwMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl8xMDA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi0xMTA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fMTEwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tMTIwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzEyMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTEzMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl8xMzA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi0xNDA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fMTQwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tMTUwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzE1MDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTMwMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl8zMDA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi0zMTA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fMzEwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tMzIwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzMyMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTMzMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl8zMzA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi00MDA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fNDAwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tNDEwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzQxMDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTQyMDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl80MjA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi00MzA6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fNDMwPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTFNMLVZFUlNJT04tNDQwOkNBUFMiPjwvYT5HU1RfR0xTTF9WRVJTSU9OXzQ0MDwvcD48L3RkPgorPHRkPsKgPC90ZD4KKzx0ZD7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0xTTC1WRVJTSU9OLTQ1MDpDQVBTIj48L2E+R1NUX0dMU0xfVkVSU0lPTl80NTA8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMU0wtVkVSU0lPTi1BTlk6Q0FQUyI+PC9hPkdTVF9HTFNMX1ZFUlNJT05fQU5ZPC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9Ii5odG1sI0dzdEdMU0xTdGFnZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU0xTdGFnZTwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xTaGFkZXIuaHRtbCIgdGl0bGU9IkdzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sCmluZGV4IGViZTRjN2MuLjZkNTg2YzEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMU3luY01ldGE6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Cis8bGluayByZWw9InByZXYiIGhyZWY9Ii5odG1sIiB0aXRsZT0iR3N0R0xTTFN0YWdlIj4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CkBAIC0xOSw3ICsxOSw3IEBACiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkdzdEdMVXBsb2FkLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtMzMsNyArMzMsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNDgsNiArNDgsMTQgQEAKIDwvdGQ+CiA8L3RyPgogPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjR3N0R0xTeW5jTWV0YSIgdGl0bGU9InN0cnVjdCBHc3RHTFN5bmNNZXRhIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU3luY01ldGE8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1idWZmZXItYWRkLWdsLXN5bmMtbWV0YS1mdWxsIiB0aXRsZT0iZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhX2Z1bGzCoCgpIj5nc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgogPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtYnVmZmVyLWdldC1nbC1zeW5jLW1ldGEiIHRpdGxlPSJnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEoKSI+Z3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KQEAgLTg0LDEyICs5MiwyMCBAQAogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXdhaXQiIHRpdGxlPSJnc3RfZ2xfc3luY19tZXRhX3dhaXTCoCgpIj5nc3RfZ2xfc3luY19tZXRhX3dhaXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWdsLXN5bmMtbWV0YS13YWl0LWNwdSIgdGl0bGU9ImdzdF9nbF9zeW5jX21ldGFfd2FpdF9jcHXCoCgpIj5nc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTE5LDYgKzEzNSwxNCBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtYnVmZmVyLWFkZC1nbC1zeW5jLW1ldGEtZnVsbCI+PC9hPjxoMz5nc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjR3N0R0xTeW5jTWV0YSIgdGl0bGU9InN0cnVjdCBHc3RHTFN5bmNNZXRhIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMU3luY01ldGE8L3NwYW4+PC9hPsKgKgorZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhX2Z1bGwgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiAqYnVmZmVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IGRhdGE8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJnc3QtYnVmZmVyLWdldC1nbC1zeW5jLW1ldGEiPjwvYT48aDM+Z3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhKCk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhKGIpICgoR3N0R0xTeW5jTWV0YSopZ3N0X2J1ZmZlcl9nZXRfbWV0YSgoYiksR1NUX0dMX1NZTkNfTUVUQV9BUElfVFlQRSkpCiA8L3ByZT4KQEAgLTE0OSwxMiArMTczLDM0IEBACiBnc3RfZ2xfc3luY19tZXRhX3dhaXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI0dzdEdMU3luY01ldGEiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xTeW5jTWV0YSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU3luY01ldGE8L3NwYW4+PC9hPiAqc3luYzwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KIDwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXN5bmMtbWV0YS13YWl0LWNwdSI+PC9hPjxoMz5nc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjR3N0R0xTeW5jTWV0YSIgdGl0bGU9InN0cnVjdCBHc3RHTFN5bmNNZXRhIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTeW5jTWV0YTwvc3Bhbj48L2E+ICpzeW5jPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHc3RHTFN5bmNNZXRhIj48L2E+PGgzPnN0cnVjdCBHc3RHTFN5bmNNZXRhPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0R0xTeW5jTWV0YSB7CisgIEdzdE1ldGEgcGFyZW50OworCisgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKKworICBncG9pbnRlciAgICAgIGRhdGE7CisKKyAgdm9pZCAoKnNldF9zeW5jKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqc2V0X3N5bmNfZ2wpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCp3YWl0KSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqd2FpdF9nbCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKndhaXRfY3B1KSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqd2FpdF9jcHVfZ2wpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCpjb3B5KSAoR3N0R0xTeW5jTWV0YSAqIHNyYywgR3N0QnVmZmVyICogc2J1ZmZlciwgR3N0R0xTeW5jTWV0YSAqIGRlc3QsIEdzdEJ1ZmZlciAqIGRidWZmZXIpOworICB2b2lkICgqZnJlZSkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKmZyZWVfZ2wpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CiB9OwogPC9wcmU+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93QW5kcm9pZC5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwKaW5kZXggMGE4NTkyYi4uMjNlNGE5MSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTFdpbmRvd0FuZHJvaWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0FuZHJvaWQuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dBbmRyb2lkLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0NvY29hLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0NvY29hLmh0bWwKaW5kZXggYjFlMmU4My4uMWI5NGE2MSAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dDb2NvYS5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93Q29jb2EuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMV2luZG93Q29jb2E6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93QW5kcm9pZC5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3dBbmRyb2lkIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93Q29jb2EuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dDb2NvYS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dEaXNwbWFueC5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dEaXNwbWFueC5odG1sCmluZGV4IDEyNDA2MTcuLjU3ZTAzOTggMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93RGlzcG1hbnguaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0Rpc3BtYW54Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTFdpbmRvd0Rpc3BtYW54OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd0NvY29hLmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvd0NvY29hIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93RGlzcG1hbnguZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dEaXNwbWFueC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXYXlsYW5kLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dheWxhbmQuaHRtbAppbmRleCA3YjA5MzVjLi4zZThhNTQ5IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dheWxhbmQuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dheWxhbmQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMV2luZG93V2F5bGFuZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dEaXNwbWFueC5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3dEaXNwbWFueCI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dheWxhbmQuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXYXlsYW5kLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dpbjMyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1dpbjMyLmh0bWwKaW5kZXggZWNhYTAyOS4uYmM1YTcxMCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXaW4zMi5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2luMzIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEdMV2luZG93V2luMzI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2F5bGFuZC5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3dXYXlsYW5kIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93V2luMzIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXaW4zMi5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwKaW5kZXggY2MxMmY4MC4uMTRhZmJiNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RHTFdpbmRvd1gxMTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXaW4zMi5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3dXaW4zMiI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImNoMDcuaHRtbCIgdGl0bGU9IkludGVyZmFjZXMiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiIHRpdGxlPSJPcGVuR0wgZGVidWdnaW5nIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CiA8L2hlYWQ+CkBAIC0yMCw3ICsyMCw3IEBACiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dXaW4zMi5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iY2gwNy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtNzYsNyArNzYsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTIzLDcgKzEyMyw3IEBACiBnc3RfZ2xfd2luZG93X3gxMV91bnRyYXBfeF9lcnJvcnMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+UmVtb3ZlcyB0aGUgWCBlcnJvciB0cmFwIGFuZCByZXR1cm5zIHRoZSBjdXJyZW50IHN0YXR1cy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yOS42LjUuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi45LjMxLjYuNS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IHRoZSB0cmFwcGVkIGVycm9yIGNvZGUsIG9yIDAgZm9yIHN1Y2Nlc3M8L3A+CiA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbAppbmRleCA2YzBmYjljLi4wODU5YmU2IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPkdzdEluc2VydGJpbjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJ0b29scy5odG1sIiB0aXRsZT0iVXNlZnVsIGVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0idG9vbHMuaHRtbCIgdGl0bGU9IlVzZWZ1bCBlbGVtZW50cyI+CkBAIC0zNiw3ICszNiw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTEwMyw3ICsxMDMsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uc2lnbmFscyI+PC9hPjxoMj5TaWduYWxzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJzaWduYWxzX3JldHVybiI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InNpZ25hbHNfbmFtZSI+CkBAIC0xNDAsNyArMTQwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0SW5zZXJ0QmluIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0yMDAsNyArMjAwLDcgQEAKIG9wZXJhdGlvbiBpcyByZXF1ZXN0ZWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMC4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMzksNyArMjM5LDcgQEAKIDxwPkNyZWF0ZXMgYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI0dzdEluc2VydEJpbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEluc2VydEJpbjwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0yNzEsNyArMjcxLDcgQEAKIDxwPlNhbWUgYXMgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNHc3RJbnNlcnRCaW4tYXBwZW5kIiB0aXRsZT0iVGhlIOKAnGFwcGVuZOKAnSBzaWduYWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj7igJxhcHBlbmTigJ08L3NwYW4+PC9hPiBzaWduYWwuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMC40LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTIsNyArMzEyLDcgQEAKIDxwPlNhbWUgYXMgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNHc3RJbnNlcnRCaW4tcHJlcGVuZCIgdGl0bGU9IlRoZSDigJxwcmVwZW5k4oCdIHNpZ25hbCI+PHNwYW4gY2xhc3M9InR5cGUiPuKAnHByZXBlbmTigJ08L3NwYW4+PC9hPiBzaWduYWwuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMC41LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zNTUsNyArMzU1LDcgQEAKIDxwPlNhbWUgYXMgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNHc3RJbnNlcnRCaW4taW5zZXJ0LWFmdGVyIiB0aXRsZT0iVGhlIOKAnGluc2VydC1hZnRlcuKAnSBzaWduYWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj7igJxpbnNlcnQtYWZ0ZXLigJ08L3NwYW4+PC9hPiBzaWduYWwuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMC42LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MDQsNyArNDA0LDcgQEAKIDxwPlNhbWUgYXMgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNHc3RJbnNlcnRCaW4taW5zZXJ0LWJlZm9yZSIgdGl0bGU9IlRoZSDigJxpbnNlcnQtYmVmb3Jl4oCdIHNpZ25hbCI+PHNwYW4gY2xhc3M9InR5cGUiPuKAnGluc2VydC1iZWZvcmXigJ08L3NwYW4+PC9hPiBzaWduYWwuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMC43LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NTAsNyArNDUwLDcgQEAKIDxwPlNhbWUgYXMgdGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNHc3RJbnNlcnRCaW4tcmVtb3ZlIiB0aXRsZT0iVGhlIOKAnHJlbW92ZeKAnSBzaWduYWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj7igJxyZW1vdmXigJ08L3NwYW4+PC9hPiBzaWduYWwuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMC44LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01MTEsNyArNTExLDcgQEAKIDxwPlNhbWUgYXMgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI2dzdC1pbnNlcnQtYmluLWFwcGVuZCIgdGl0bGU9ImdzdF9pbnNlcnRfYmluX2FwcGVuZMKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2luc2VydF9iaW5fYXBwZW5kKCk8L2NvZGU+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi42LjIuMTIuMi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTY2LDcgKzU2Niw3IEBACiA8cD5TYW1lIGFzIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNnc3QtaW5zZXJ0LWJpbi1pbnNlcnQtYWZ0ZXIiIHRpdGxlPSJnc3RfaW5zZXJ0X2Jpbl9pbnNlcnRfYWZ0ZXLCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9pbnNlcnRfYmluX2luc2VydF9hZnRlcigpPC9jb2RlPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEyLjMuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTYyNiw3ICs2MjYsNyBAQAogPHA+U2FtZSBhcyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0SW5zZXJ0YmluLmh0bWwjZ3N0LWluc2VydC1iaW4taW5zZXJ0LWJlZm9yZSIgdGl0bGU9ImdzdF9pbnNlcnRfYmluX2luc2VydF9iZWZvcmXCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9pbnNlcnRfYmluX2luc2VydF9iZWZvcmUoKTwvY29kZT48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjYuMi4xMi40LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02ODQsNyArNjg0LDcgQEAKIDxwPlNhbWUgYXMgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI2dzdC1pbnNlcnQtYmluLXByZXBlbmQiIHRpdGxlPSJnc3RfaW5zZXJ0X2Jpbl9wcmVwZW5kwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfaW5zZXJ0X2Jpbl9wcmVwZW5kKCk8L2NvZGU+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi42LjIuMTIuNS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzM1LDcgKzczNSw3IEBACiA8cD5TYW1lIGFzIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RJbnNlcnRiaW4uaHRtbCNnc3QtaW5zZXJ0LWJpbi1yZW1vdmUiIHRpdGxlPSJnc3RfaW5zZXJ0X2Jpbl9yZW1vdmXCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9pbnNlcnRfYmluX3JlbW92ZSgpPC9jb2RlPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNi4yLjEyLjYuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sCmluZGV4IDNjYjJiZTQuLmYxMzgyNzMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0UGhvdG9ncmFwaHk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwNy5odG1sIiB0aXRsZT0iSW50ZXJmYWNlcyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImNoMDcuaHRtbCIgdGl0bGU9IkludGVyZmFjZXMiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwOC5odG1sIiB0aXRsZT0iSW50ZXJmYWNlcyI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImNoMDguaHRtbCIgdGl0bGU9IkludGVyZmFjZXMiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3RyZWFtZXItbGlicy1oaWVyYXJjaHkuaHRtbCIgdGl0bGU9IlBhcnTCoElJLsKgT2JqZWN0IEhpZXJhcmNoeSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMTgsOCArMTgsOCBAQAogICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwNy5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJjaDA3Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDA4Lmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImNoMDguaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdHJlYW1lci1saWJzLWhpZXJhcmNoeS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTMwMSw3ICszMDEsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNDQzLDggKzQ0Myw4IEBACiAgZm9ybWF0LCBzbyB0aGlzIGNhbGxiYWNrIGFsbG93cyB0aGUgYXBwbGljYXRpb24KIHRvIGUuZy4gcmVjb25maWd1cmUgY2Fwc2ZpbHRlcnMgaW4gcGlwZWxpbmUgaWYgYW55LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NzQsOCArNDc0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICpldl9jb21wPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPkdldCB0aGUgZXYgY29tcGVuc2F0aW9uIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ5Niw3ICs0OTYsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4zLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBnZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTUwOCw4ICs1MDgsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+ICppc29fc3BlZWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBJU08gdmFsdWUgKGxpZ2h0IHNlbnNpdml0eSkgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTMwLDcgKzUzMCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtNTQyLDggKzU0Miw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiAqYXBlcnR1cmU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBhcGVydHVyZSB2YWx1ZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy41LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01NjQsNyArNTY0LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuNS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy41LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC01NzYsOCArNTc2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQzMiI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50MzI8L3NwYW4+PC9hPiAqZXhwb3N1cmU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBmaXhlZCBleHBvc3VyZSB0aW1lIChpbiB1cykgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTk4LDcgKzU5OCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuNi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtNjExLDggKzYxMSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUiIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZTwvc3Bhbj48L2E+ICp3Yl9tb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPkdldCB0aGUgd2hpdGUgYmFsYW5jZSBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTYzMyw3ICs2MzMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy43LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjcuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBnZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTY0NSw4ICs2NDUsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUiIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZTwvc3Bhbj48L2E+ICp0b25lX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBjb2xvciB0b25lIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuOC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjY3LDcgKzY2Nyw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtNjc5LDggKzY3OSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeVNjZW5lTW9kZTwvc3Bhbj48L2E+ICpzY2VuZV9tb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPkdldCB0aGUgc2NlbmUgbW9kZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03MDEsNyArNzAxLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy45LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC03MTMsOCArNzEzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlPC9zcGFuPjwvYT4gKmZsYXNoX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IHRoZSBmbGFzaCBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzM1LDcgKzczNSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjEwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjEwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgZ2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC03NDcsOCArNzQ3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGU8L3NwYW4+PC9hPiAqbW9kZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgdGhlIGZsaWNrZXIgbW9kZSB2YWx1ZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc2OSw3ICs3NjksNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xMS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xMS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtNzgxLDggKzc4MSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeUZvY3VzTW9kZTwvc3Bhbj48L2E+ICptb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPkdldCB0aGUgZm9jdXMgbW9kZSB2YWx1ZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgwMyw3ICs4MDMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xMi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtODE1LDggKzgxNSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24iIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeU5vaXNlUmVkdWN0aW9uPC9zcGFuPjwvYT4gKm5vaXNlX3JlZHVjdGlvbjwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5HZXQgdGhlIG5vaXNlIHJlZHVjdGlvbiBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODM3LDEwICs4MzcsOSBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KLTxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDAuMTAuMjE8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KQEAgLTg1MCw4ICs4NDksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp6b29tPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPkdldCB0aGUgem9vbSB2YWx1ZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg3Miw3ICs4NzEsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xNC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtODg0LDggKzg4Myw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiBldl9jb21wPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldCB0aGUgZXYgY29tcGVuc2F0aW9uIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTA2LDcgKzkwNSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjE1LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjE1LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgc2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC05MTgsOCArOTE3LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBpc29fc3BlZWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSBJU08gdmFsdWUgKGxpZ2h0IHNlbnNpdml0eSkgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjE2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC05NDAsNyArOTM5LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTk1Miw4ICs5NTEsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gYXBlcnR1cmU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSBhcGVydHVyZSB2YWx1ZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk3NCw3ICs5NzMsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xNy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xNy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtOTg2LDggKzk4NSw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBleHBvc3VyZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgdGhlIGZpeGVkIGV4cG9zdXJlIHRpbWUgKGluIHVzKSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwMDgsNyArMTAwNyw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjE4LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjE4LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgc2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xMDIxLDggKzEwMjAsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGU8L3NwYW4+PC9hPiB3Yl9tb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldCB0aGUgd2hpdGUgYmFsYW5jZSBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4xOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4xOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA0Myw3ICsxMDQyLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMTkuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMTkuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTEwNTUsOCArMTA1NCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlPC9zcGFuPjwvYT4gdG9uZV9tb2RlPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldCB0aGUgY29sb3IgdG9uZSBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA3Nyw3ICsxMDc2LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTEwODksOCArMTA4OCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeVNjZW5lTW9kZTwvc3Bhbj48L2E+IHNjZW5lX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSBzY2VuZSBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTExMSw3ICsxMTEwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjEuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjEuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTExMjMsOCArMTEyMiw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeUZsYXNoTW9kZTwvc3Bhbj48L2E+IGZsYXNoX21vZGU8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IHRoZSBmbGFzaCBtb2RlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+PC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTE0NSw3ICsxMTQ0LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTExNTcsOCArMTE1Niw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUiIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlPC9zcGFuPjwvYT4gbW9kZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgdGhlIGZsaWNrZXIgbW9kZSB2YWx1ZSBmb3IgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjIzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjIzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMTc5LDcgKzExNzgsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yMy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiBvdGhlcndpc2U8L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTE5MSw4ICsxMTkwLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlPC9zcGFuPjwvYT4gbW9kZTwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5TZXQgdGhlIGZvY3VzIG1vZGUgdmFsdWUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTIxMyw3ICsxMjEyLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+CiA8L2Rpdj4KQEAgLTEyMjUsOCArMTIyNCw4IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24iIHRpdGxlPSJlbnVtIEdzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeU5vaXNlUmVkdWN0aW9uPC9zcGFuPjwvYT4gbm9pc2VfcmVkdWN0aW9uPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPlNldCB0aGUgbm9pc2UgcmVkdWN0aW9uIG1vZGUgZm9yIHRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjI1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjI1LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMjQ3LDEwICsxMjQ2LDkgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiBzZXR0aW5nIHRoZSB2YWx1ZSBzdWNjZWVkZWQsIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4gb3RoZXJ3aXNlPC9wPgogPC9kaXY+Ci08cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAwLjEwLjIxPC9wPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CkBAIC0xMjYxLDggKzEyNTksOCBAQAogPHA+U2V0IHRoZSB6b29tIHZhbHVlIGZvciB0aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+LgogRS5nLiAxLjAgdG8gZ2V0IG9yaWdpbmFsIGltYWdlIGFuZCAzLjAgZm9yIDN4IHpvb20gYW5kIHNvIG9uLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEyODMsNyArMTI4MSw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjI2LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjI2LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgc2V0dGluZyB0aGUgdmFsdWUgc3VjY2VlZGVkLCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+IG90aGVyd2lzZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xMjk1LDggKzEyOTMsOCBAQAogPHA+R2V0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dzdFBob3RvZ3JhcGh5Q2FwcyIgdGl0bGU9ImVudW0gR3N0UGhvdG9ncmFwaHlDYXBzIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHlDYXBzPC9zcGFuPjwvYT4gYml0bWFzayB2YWx1ZSB0aGF0IGluZGljYXRlcyB3aGF0IHBob3RvZ3JhcGh5CiBpbnRlcmZhY2UgZmVhdHVyZXMgdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPiBzdXBwb3J0czwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEzMTAsNyArMTMwOCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjI3LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjI3LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+CiA8cD4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHlDYXBzIiB0aXRsZT0iZW51bSBHc3RQaG90b2dyYXBoeUNhcHMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQaG90b2dyYXBoeUNhcHM8L3NwYW4+PC9hPiB2YWx1ZTwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xMzI3LDggKzEzMjUsOCBAQAogIGNhbGxiYWNrIGlzIGNhbGxlZCBhZnRlciBwcmVwYXJhdGlvbnMgYXJlCiBkb25lLiBJbWFnZSBjYXB0dXJlIHdpbGwgYmVnaW4gYWZ0ZXIgY2FsbGJhY2sgcmV0dXJucy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi43LjI4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi43LjI4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMzYwLDcgKzEzNTgsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgogPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHByZXBhcmF0aW9ucyB3ZXJlIHN0YXJ0ZWQgKGNhcHMgd2VyZSBPSyksIG90aGVyd2lzZSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+LjwvcD4KIDwvZGl2PgogPC9kaXY+CkBAIC0xMzczLDggKzEzNzEsOCBAQAogPHA+U3RhcnQgb3Igc3RvcCBhdXRvZm9jdXNpbmcuIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI0dTVC1QSE9UT0dSQVBIWS1BVVRPRk9DVVMtRE9ORTpDQVBTIiB0aXRsZT0iR1NUX1BIT1RPR1JBUEhZX0FVVE9GT0NVU19ET05FIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX1BIT1RPR1JBUEhZX0FVVE9GT0NVU19ET05FPC9jb2RlPjwvYT4KIG1lc3NhZ2UgaXMgcG9zdGVkIHRvIGJ1cyB3aGVuIGF1dG9mb2N1c2luZyBoYXMgZmluaXNoZWQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4yOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4yOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTQwMyw4ICsxNDAxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5U2V0dGluZ3M8L3NwYW4+ICpjb25maWc8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+U2V0IGFsbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGF0IG9uY2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4zMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4zMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTQyNSw3ICsxNDIzLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMzAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMzAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBUUlVFIGlmIGNvbmZpZ3VyYXRpb24gd2FzIHNldCBzdWNjZXNzZnVsbHksIG90aGVyd2lzZSBGQUxTRS48L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTQzNyw4ICsxNDM1LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5U2V0dGluZ3M8L3NwYW4+ICpjb25maWc8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+R2V0IGFsbCBjb25maWd1cmF0aW9uIHNldHRpbmdzIGF0IG9uY2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuNy4zMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuNy4zMS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTQ1OSw3ICsxNDU3LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjcuMzEuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjcuMzEuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KIDxwPiBUUlVFIGlmIGNvbmZpZ3VyYXRpb24gd2FzIGdvdCBzdWNjZXNzZnVsbHksIG90aGVyd2lzZSBGQUxTRS48L3A+CiA8L2Rpdj4KIDwvZGl2PgpAQCAtMTQ3Niw4ICsxNDc0LDggQEAKIDxhIG5hbWU9IkdzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24iPjwvYT48aDM+ZW51bSBHc3RQaG90b2dyYXBoeU5vaXNlUmVkdWN0aW9uPC9oMz4KIDxwPk5vaXNlIFJlZHVjdGlvbiBmZWF0dXJlcyBvZiBhIHBob3RvZ3JhcGh5IGNhcHR1cmUgb3IgZmlsdGVyIGVsZW1lbnQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuOC4zLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNTI5LDE1ICsxNTI3LDE0IEBACiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgotPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMC4xMC4yMTwvcD4KIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIj48L2E+PGgzPmVudW0gR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlPC9oMz4KIDxwPk1vZGVzIGZvciB3aGl0ZSBiYWxhbmNlIGNvbnRyb2wuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuOC40LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjQuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNjE3LDggKzE2MTQsOCBAQAogPGEgbmFtZT0iR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlIj48L2E+PGgzPmVudW0gR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlPC9oMz4KIDxwPk1vZGVzIGZvciBzcGVjaWFsIGNvbG9yIGVmZmVjdHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuOC41LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjUuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNzQ3LDggKzE3NDQsOCBAQAogPHA+RWFjaCBtb2RlIGNvbnRhaW5zIHByZXNldCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHc3RQaG90b2dyYXBoeSIgdGl0bGU9IkdzdFBob3RvZ3JhcGh5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGhvdG9ncmFwaHk8L3NwYW4+PC9hPiBvcHRpb25zIGluIG9yZGVyIHRvIHByb2R1Y2UKIGdvb2QgY2FwdHVyaW5nIHJlc3VsdCBpbiBjZXJ0YWluIHNjZW5lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC4yLjguNi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuOC42LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTg5Niw4ICsxODkzLDggQEAKIDxhIG5hbWU9IkdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIj48L2E+PGgzPmVudW0gR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGU8L2gzPgogPHA+TW9kZXMgZm9yIGZsYXNoIGNvbnRyb2wuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuOC43LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjcuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xOTUwLDggKzE5NDcsOCBAQAogPGEgbmFtZT0iR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSI+PC9hPjxoMz5lbnVtIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGU8L2gzPgogPHA+UmVkdWNlIGZsaWNrZXIgaW4gdmlkZW8gY2F1c2VkIGJ5IGxpZ2h0IHNvdXJjZSBmbHVjdHVhdGlvbi48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjguNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4xMS4yLjguOC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE5OTUsOCArMTk5Miw4IEBACiA8YSBuYW1lPSJHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSI+PC9hPjxoMz5lbnVtIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlPC9oMz4KIDxwPkNob29zZSBtb2RlIGZvciBmb2N1c2luZyBhbGdvcml0aG0uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuOC45LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjkuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMDgwLDggKzIwNzcsOCBAQAogPHA+U3RhdHVzIG9mIHRoZSBmb2N1c2luZyBvcGVyYXRpb24sIHVzZWQgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR1NULVBIT1RPR1JBUEhZLUFVVE9GT0NVUy1ET05FOkNBUFMiIHRpdGxlPSJHU1RfUEhPVE9HUkFQSFlfQVVUT0ZPQ1VTX0RPTkUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HU1RfUEhPVE9HUkFQSFlfQVVUT0ZPQ1VTX0RPTkU8L3NwYW4+PC9hPgogbWVzc2FnZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjEwLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjEwLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjEyNiw4ICsyMTIzLDggQEAKIDxwPkJpdG1hc2sgdGhhdCBpbmRpY2F0ZXMgd2hpY2ggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR3N0UGhvdG9ncmFwaHkiIHRpdGxlPSJHc3RQaG90b2dyYXBoeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBob3RvZ3JhcGh5PC9zcGFuPjwvYT4gaW50ZXJmYWNlIGZlYXR1cmVzIGFuIGluc3RhbmNlCiBzdXBwb3J0cy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuMi44LjExLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuMTEuMi44LjExLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjIyNCw4ICsyMjIxLDggQEAKIDxwPlJpc2sgbGV2ZWwgb2YgY2FwdHVyZWQgaW1hZ2UgYmVjb21pbmcgInNoYWtlbiIgZHVlIHRvIGNhbWVyYSBtb3ZlbWVudCBhbmQKIHRvbyBsb25nIGV4cG9zdXJlIHRpbWUuIFVzZWQgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwjR1NULVBIT1RPR1JBUEhZLVNIQUtFLVJJU0s6Q0FQUyIgdGl0bGU9IkdTVF9QSE9UT0dSQVBIWV9TSEFLRV9SSVNLIj48c3BhbiBjbGFzcz0idHlwZSI+R1NUX1BIT1RPR1JBUEhZX1NIQUtFX1JJU0s8L3NwYW4+PC9hPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZXNzYWdlLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZXNzYWdlPC9zcGFuPjwvYT4uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjEwLjIuOC4xMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iaWQtMS4yLjExLjIuOC4xMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yLmh0bWwKaW5kZXggYzhlZDVmNy4uNjkxOGRhZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0VmlkZW9BZ2dyZWdhdG9yLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5Hc3RWaWRlb0FnZ3JlZ2F0b3I6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0idmlkZW8uaHRtbCIgdGl0bGU9IlZpZGVvIGhlbHBlcnMgYW5kIGJhc2VjbGFzc2VzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0idmlkZW8uaHRtbCIgdGl0bGU9IlZpZGVvIGhlbHBlcnMgYW5kIGJhc2VjbGFzc2VzIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzcsNyArNzcsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOC4yLjYuMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDQsNiArMTA0LDkgQEAKIDxhIG5hbWU9IkdzdFZpZGVvQWdncmVnYXRvckNsYXNzIj48L2E+PGgzPnN0cnVjdCBHc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzczwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFZpZGVvQWdncmVnYXRvckNsYXNzIHsKICAgR3N0Q2FwcyAqICAgICAgICAgICgqdXBkYXRlX2NhcHMpICAgICAgICAgICAgICAgKEdzdFZpZGVvQWdncmVnYXRvciAqICB2aWRlb2FnZ3JlZ2F0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICAgICAgICAgICAgKiAgY2FwcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgICAgICAgICAgICAqICBmaWx0ZXJfY2Fwcyk7CisgIEdzdENhcHMgKiAgICAgICAgICAoKmZpeGF0ZV9jYXBzKSAgICAgICAgICAgICAgIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiAgdmlkZW9hZ2dyZWdhdG9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAgICAgICAgICAgICogIGNhcHMpOwogICBHc3RGbG93UmV0dXJuICAgICAgKCphZ2dyZWdhdGVfZnJhbWVzKSAgICAgICAgICAoR3N0VmlkZW9BZ2dyZWdhdG9yICogIHZpZGVvYWdncmVnYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAgICAgICAgICAqICBvdXRidWZmZXIpOwpAQCAtMTE2LDE0ICsxMTksMTIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAgICAgICAqICBiZXN0X2luZm8sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgICAgKiAgYXRfbGVhc3Rfb25lX2FscGhhKTsKIAotICBnYm9vbGVhbiAgICAgICAgICAgcHJlc2VydmVfdXBkYXRlX2NhcHNfcmVzdWx0OwotCiAgIEdzdENhcHMgICAgICAgICAgICpzaW5rX25vbl9hbHBoYV9jYXBzOwogfTsKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjguMi42LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTM4LDYgKzEzOSwxNiBAQAogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgogPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdFZpZGVvQWdncmVnYXRvckNsYXNzLmZpeGF0ZS1jYXBzIj48L2E+Zml4YXRlX2NhcHM8L2NvZGU+PC9lbT7CoCgpPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPkZpeGF0ZSBhbmQgcmV0dXJuIHRoZSBzcmMgcGFkIGNhcHMgcHJvdmlkZWQuICBUaGUgZnVuY3Rpb24gdGFrZXMKK293bmVyc2hpcCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y2FwczwvY29kZT48L2VtPgorYW5kIHJldHVybnMgYSBmaXhhdGVkIHZlcnNpb24gb2YKKzxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jYXBzPC9jb2RlPjwvZW0+CisuIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jYXBzPC9jb2RlPjwvZW0+CitpcyBub3QgZ3VhcmFudGVlZCB0byBiZSB3cml0YWJsZS48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzcy5hZ2dyZWdhdGUtZnJhbWVzIj48L2E+YWdncmVnYXRlX2ZyYW1lczwvY29kZT48L2VtPsKgKCk8L3A+PC90ZD4KIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+TGV0cyBzdWJjbGFzc2VzIGFnZ3JlZ2F0ZSBmcmFtZXMgdGhhdCBhcmUgcmVhZHkuIFN1YmNsYXNzZXMKIHNob3VsZCBpdGVyYXRlIHRoZSBHc3RFbGVtZW50LnNpbmtwYWRzIGFuZCB1c2UgdGhlIGFscmVhZHkKQEAgLTE2OSwxMyArMTgwLDYgQEAKIDx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgogPC90cj4KIDx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzcy5wcmVzZXJ2ZS11cGRhdGUtY2Fwcy1yZXN1bHQiPjwvYT5wcmVzZXJ2ZV91cGRhdGVfY2Fwc19yZXN1bHQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPlN1Yi1jbGFzc2VzIHNob3VsZCBzZXQgdGhpcyB0byB0cnVlIGlmIHRoZSByZXR1cm4gcmVzdWx0Ci1vZiB0aGUgPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj51cGRhdGVfY2FwcygpPC9jb2RlPiBtZXRob2Qgc2hvdWxkIG5vdCBiZSBmdXJ0aGVyIG1vZGlmaWVkCi1ieSBHc3RWaWRlb0FnZ3JlZ2F0b3IgYnkgcmVtb3ZpbmcgZmllbGRzLjwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdFZpZGVvQWdncmVnYXRvckNsYXNzLnNpbmstbm9uLWFscGhhLWNhcHMiPjwvYT5zaW5rX25vbl9hbHBoYV9jYXBzPC9jb2RlPjwvZW0+OzwvcD48L3RkPgogPHRkPsKgPC90ZD4KIDx0ZD7CoDwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RWaWRlb0FnZ3JlZ2F0b3JQYWQuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvclBhZC5odG1sCmluZGV4IGZhYmNhZWMuLjVhNGIzZWYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvclBhZC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvclBhZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R3N0VmlkZW9BZ2dyZWdhdG9yUGFkOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9InZpZGVvLmh0bWwiIHRpdGxlPSJWaWRlbyBoZWxwZXJzIGFuZCBiYXNlY2xhc3NlcyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvci5odG1sIiB0aXRsZT0iR3N0VmlkZW9BZ2dyZWdhdG9yIj4KQEAgLTMzLDcgKzMzLDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFZpZGVvQWdncmVnYXRvclBhZC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODQsNyArODQsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuOC4zLjYuMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1JU0RCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUlTREItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sCmluZGV4IDJlMGJmYWUuLjZjZjRjNmEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUlTREItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUlTREItdmFyaWFudHMtb2YtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+SVNEQiB2YXJpYW50cyBvZiBNUEVHLVRTIGRlc2NyaXB0b3JzOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9Im1wZWd0cy5odG1sIiB0aXRsZT0iTXBlZyBUUyBoZWxwZXIgbGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLWRlc2NyaXB0b3JzLmh0bWwiIHRpdGxlPSJEVkIgdmFyaWFudHMgb2YgTVBFRy1UUyBkZXNjcmlwdG9ycyI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1JU0RCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTY1LDcgKzY1LDcgQEAKIDxwPkNvbnN1bHQgdGhlIHJlbGV2YW50IHNwZWNpZmljYXRpb25zIGZvciBtb3JlIGRldGFpbHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjUuMTAuNy4yLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtTXBlZy10cy1oZWxwZXItbGlicmFyeS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtTXBlZy10cy1oZWxwZXItbGlicmFyeS5odG1sCmluZGV4IGY5NmI4YjkuLmI1NGEyZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU1wZWctdHMtaGVscGVyLWxpYnJhcnkuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1NcGVnLXRzLWhlbHBlci1saWJyYXJ5Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5NcGVnLXRzIGhlbHBlciBsaWJyYXJ5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9Im1wZWd0cy5odG1sIiB0aXRsZT0iTXBlZyBUUyBoZWxwZXIgbGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9Im1wZWd0cy5odG1sIiB0aXRsZT0iTXBlZyBUUyBoZWxwZXIgbGlicmFyeSI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1NcGVnLXRzLWhlbHBlci1saWJyYXJ5LmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmQ4NDFjCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbApAQCAtMCwwICsxLDU0OSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPk9wZW5HTCBGb3JtYXRzOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIiB0aXRsZT0iT3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0icGxheWVyLmh0bWwiIHRpdGxlPSJQbGF5ZXIgTGlicmFyeSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgorPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KKzx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgorPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0icGxheWVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy50b3Bfb2ZfcGFnZSI+PC9hPk9wZW5HTCBGb3JtYXRzPC9zcGFuPjwvaDI+Cis8cD5PcGVuR0wgRm9ybWF0czwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtZm9ybWF0LXR5cGUtbi1ieXRlcyIgdGl0bGU9ImdzdF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzwqAoKSI+Z3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLW4tYnl0ZXMiIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXPCoCgpIj5nc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtZm9ybWF0LWZyb20tZ2wtdGV4dHVyZS10eXBlIiB0aXRsZT0iZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZcKgKCkiPmdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXTCoCgpIj5nc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXNpemVkLWdsLWZvcm1hdC1mcm9tLWdsLWZvcm1hdC10eXBlIiB0aXRsZT0iZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlwqAoKSI+Z3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tc3RyaW5nIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nwqAoKSI+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1zdHJpbmciIHRpdGxlPSJnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nwqAoKSI+Z3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX3N0cmluZzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC10by1nbCIgdGl0bGU9ImdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbMKgKCkiPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLWdsIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2zCoCgpIj5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tYnVmZmVyLXBvb2wtb3B0aW9uIiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbsKgKCkiPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgorPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij5Hc3RHTFRleHR1cmVUYXJnZXQ8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULTJELVNUUjpDQVBTIiB0aXRsZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUiI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFLVNUUjpDQVBTIiB0aXRsZT0iR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVMtU1RSOkNBUFMiIHRpdGxlPSJHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUiI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIiB0aXRsZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRCI+R1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRDwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtQlVGRkVSLVBPT0wtT1BUSU9OLUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRTpDQVBTIiB0aXRsZT0iR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUiPkdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTOkNBUFMiIHRpdGxlPSJHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUyI+R1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM8L2E+PC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWZvcm1hdC10eXBlLW4tYnl0ZXMiPjwvYT48aDM+Z3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3VpbnQ8L3NwYW4+PC9hPgorZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGZvcm1hdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiB0eXBlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5mb3JtYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgT3BlbkdMIGZvcm1hdCwgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdMX1JHQkE8L2NvZGU+LCA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R0xfTFVNSU5BTkNFPC9jb2RlPiwgZXRjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnR5cGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgT3BlbkdMIHR5cGUsIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HTF9VTlNJR05FRF9CWVRFPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdMX0ZMT0FUPC9jb2RlPiwgZXRjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoZSBzcGVjaWZpZWQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZvcm1hdDwvY29kZT48L2VtPgorLCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dHlwZTwvY29kZT48L2VtPgorY29tYmluYXRpb24gdGFrZXMKK3BlciBwaXhlbDwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10eXBlLW4tYnl0ZXMiPjwvYT48aDM+Z3N0X2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KK2dzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlcyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+IHRleF9mb3JtYXQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi4zLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXhfZm9ybWF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuMy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBudW1iZXIgb2YgYnl0ZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9mb3JtYXQ8L2NvZGU+PC9lbT4KK3VzZWQgcGVyIHBpeGVsPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1mb3JtYXQtZnJvbS1nbC10ZXh0dXJlLXR5cGUiPjwvYT48aDM+Z3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Citnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gdGV4X2Zvcm1hdDwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleF9mb3JtYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi40LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIE9wZW5HTCBmb3JtYXQgc3BlY2lmaWVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfZm9ybWF0PC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCI+PC9hPjxoMz5nc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+Citnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9Gb3JtYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0Zvcm1hdDwvc3Bhbj48L2E+IHZfZm9ybWF0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi41LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZfZm9ybWF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0Zvcm1hdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvRm9ybWF0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxhbmU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgcGxhbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDApPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjUuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gZm9yIHRoZSBzcGVjaWZpZWQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZvcm1hdDwvY29kZT48L2VtPgorYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wbGFuZTwvY29kZT48L2VtPgordGhhdCBjYW4gYmUgYWxsb2NhdGVkIHVzaW5nIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXNpemVkLWdsLWZvcm1hdC1mcm9tLWdsLWZvcm1hdC10eXBlIj48L2E+PGgzPmdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Citnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBmb3JtYXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHR5cGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi42LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZvcm1hdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmFuIE9wZW5HTCBmb3JtYXQsIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HTF9SR0JBPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdMX0xVTUlOQU5DRTwvY29kZT4sIGV0YzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50eXBlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YW4gT3BlbkdMIHR5cGUsIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HTF9VTlNJR05FRF9CWVRFPC9jb2RlPiwgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdMX0ZMT0FUPC9jb2RlPiwgZXRjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgc2l6ZWQgaW50ZXJuYWwgZm9ybWF0IHNwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Zm9ybWF0PC9jb2RlPjwvZW0+CithbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnR5cGU8L2NvZGU+PC9lbT4KK3RoYXQgY2FuCitiZSB1c2VkIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LWZyb20tc3RyaW5nIj48L2E+PGgzPmdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+Citnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzdHI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tc3RyaW5nIj48L2E+PGgzPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX3N0cmluZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gdGFyZ2V0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuOC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3RyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBzdHJpbmcgZXF1aXZhbGFudCB0byBvbmUgb2YgdGhlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8qX1NUUiB2YWx1ZXM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjguNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiByZXByZXNlbnRlZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RyPC9jb2RlPjwvZW0+CitvcgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULU5PTkU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FPC9jb2RlPjwvYT48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLWdsIj48L2E+PGgzPmdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ndWludDwvc3Bhbj48L2E+Citnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRhcmdldDwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC42LjkuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuOS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBPcGVuR0wgdmFsdWUgZm9yIGJpbmRpbmcgdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50YXJnZXQ8L2NvZGU+PC9lbT4KK3dpdGggPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nbEJpbmRUZXh0dXJlKCk8L2NvZGU+IGFuZAorc2ltaWxhciBmdW5jdGlvbnMgb3IgMDwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtZnJvbS1nbCI+PC9hPjxoMz5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+Citnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdGFyZ2V0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuMTAuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmFuIE9wZW5HTCB0ZXh0dXJlIGJpbmRpbmcgdGFyZ2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzQuNi4xMC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+IHRoYXQncyBlcXVpYXZhbGFudCB0byA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGFyZ2V0PC9jb2RlPjwvZW0+CitvcgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULU5PTkU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FPC9jb2RlPjwvYT48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLWJ1ZmZlci1wb29sLW9wdGlvbiI+PC9hPjxoMz5nc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fYnVmZmVyX3Bvb2xfb3B0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gdGFyZ2V0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuMTEuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjM0LjYuMTEuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5Hc3RCdWZmZXJQb29sT3B0aW9uPC9jb2RlPjwvZW0+CitzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRhcmdldDwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMVGV4dHVyZVRhcmdldCI+PC9hPjxoMz5lbnVtIEdzdEdMVGV4dHVyZVRhcmdldDwvaDM+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zNC43LjIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtTk9ORTpDQVBTIj48L2E+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+bm8gdGV4dHVyZSB0YXJnZXQ8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiPjwvYT5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+MkQgdGV4dHVyZSB0YXJnZXQ8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRTpDQVBTIj48L2E+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5yZWN0YW5nbGUgdGV4dHVyZSB0YXJnZXQ8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUzpDQVBTIj48L2E+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5leHRlcm5hbCBvZXMgdGV4dHVyZSB0YXJnZXQ8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1URVhUVVJFLVRBUkdFVC0yRC1TVFI6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIgIjJEIgorPC9wcmU+Cis8cD5TdHJpbmcgdXNlZCBmb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ8L2NvZGU+PC9hPiBpbiB0aGluZ3MgbGlrZSBjYXBzIHZhbHVlczwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRS1TVFI6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUiAicmVjdGFuZ2xlIgorPC9wcmU+Cis8cD5TdHJpbmcgdXNlZCBmb3IgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTwvY29kZT48L2E+IGluIHRoaW5ncyBsaWtlIGNhcHMgdmFsdWVzPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTLVNUUjpDQVBTIj48L2E+PGgzPkdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSICJleHRlcm5hbC1vZXMiCis8L3ByZT4KKzxwPlN0cmluZyB1c2VkIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTPC9jb2RlPjwvYT4gaW4gdGhpbmdzIGxpa2UgY2FwcyB2YWx1ZXM8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtMkQ6Q0FQUyI+PC9hPjxoMz5HU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfMkQgIkdzdEJ1ZmZlclBvb2xPcHRpb25HTFRleHR1cmVUYXJnZXQyRCIKKzwvcHJlPgorPHA+U3RyaW5nIHVzZWQgZm9yIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+R1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEPC9jb2RlPjwvYT4gYXMgYSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXJQb29sLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXJQb29sPC9zcGFuPjwvYT4gcG9vbCBvcHRpb248L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiPjwvYT48aDM+R1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUgIkdzdEJ1ZmZlclBvb2xPcHRpb25HTFRleHR1cmVUYXJnZXRSZWN0YW5nbGUiCis8L3ByZT4KKzxwPlN0cmluZyB1c2VkIGZvciA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFPC9jb2RlPjwvYT4gYXMgYSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RCdWZmZXJQb29sLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXJQb29sPC9zcGFuPjwvYT4gcG9vbCBvcHRpb248L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTOkNBUFMiPjwvYT48aDM+R1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMgIkdzdEJ1ZmZlclBvb2xPcHRpb25HTFRleHR1cmVUYXJnZXRFeHRlcm5hbE9FUyIKKzwvcHJlPgorPHA+U3RyaW5nIHVzZWQgZm9yIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVNURVJOQUxfT0VTPC9jb2RlPiBhcyBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlclBvb2wuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEJ1ZmZlclBvb2w8L3NwYW4+PC9hPiBwb29sIG9wdGlvbjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sCnNpbWlsYXJpdHkgaW5kZXggNjAlCnJlbmFtZSBmcm9tIGRvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sCnJlbmFtZSB0byBkb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbAppbmRleCA1NGM3MjYwLi5jZDY0ZWY0IDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbApAQCAtMiwxMiArMiwxMiBAQAogPGh0bWw+CiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5VdGlsaXRpZXM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8dGl0bGU+T3BlbkdMIE1pc2NlbGxhbmVvdXMgVXRpbGl0aWVzOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIiB0aXRsZT0iR3N0R0xVcGxvYWRNZXRhIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sIiB0aXRsZT0iT3BlbkdMIGRlYnVnZ2luZyI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiIHRpdGxlPSJPcGVuR0wgRm9ybWF0cyI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMTUsMjUgKzE1LDI1IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+CisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTFdpbmRvdy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcyI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KIDx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy50b3Bfb2ZfcGFnZSI+PC9hPlV0aWxpdGllczwvc3Bhbj48L2gyPgotPHA+VXRpbGl0aWVzPC9wPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMudG9wX29mX3BhZ2UiPjwvYT5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L3NwYW4+PC9oMj4KKzxwPk9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllczwvcD4KIDwvdGQ+CiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KIDxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KQEAgLTQ0LDcgKzQ0LDcgQEAKIDxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dMQ0I6Q0FQUyIgdGl0bGU9IkdMQ0LCoCgpIj4qR0xDQjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiIHRpdGxlPSJHTENCwqAoKSI+KkdMQ0I8L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTUyLDcgKzUyLDcgQEAKIDxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIgdGl0bGU9IkdMQ0JfVjLCoCgpIj4qR0xDQl9WMjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiIHRpdGxlPSJHTENCX1YywqAoKSI+KkdMQ0JfVjI8L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTYwLDcgKzYwLDcgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNDRENCOkNBUFMiIHRpdGxlPSJDRENCwqAoKSI+KkNEQ0I8L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjQ0RDQjpDQVBTIiB0aXRsZT0iQ0RDQsKgKCkiPipDRENCPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC02OCw3ICs2OCw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1zZXQtY29udGV4dCIgdGl0bGU9ImdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHTCoCgpIj5nc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtc2V0LWNvbnRleHQiIHRpdGxlPSJnc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0wqAoKSI+Z3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtNzYsNyArNzYsNyBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1oYW5kbGUtY29udGV4dC1xdWVyeSIgdGl0bGU9ImdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyecKgKCkiPmdzdF9nbF9oYW5kbGVfY29udGV4dF9xdWVyeTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiIHRpdGxlPSJnc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnnCoCgpIj5nc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTg0LDcgKzg0LDcgQEAKIDxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmXCoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fdGV4dHVyZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl90ZXh0dXJlwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTkyLDcgKzkyLDcgQEAKIDxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3RleHR1cmXCoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtdGV4dHVyZSIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlwqAoKSI+Z3N0X2dsX2NvbnRleHRfZGVsX3RleHR1cmU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTEwMCw3ICsxMDAsNyBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1mYm8iIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZW5fZmJvwqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2VuX2ZibzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tZmJvIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZ2VuX2Zib8KgKCkiPmdzdF9nbF9jb250ZXh0X2dlbl9mYm88L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTEwOCw3ICsxMDgsNyBAQAogPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLWZibyIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF9mYm/CoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfZmJvPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC1mYm8iIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9kZWxfZmJvwqAoKSI+Z3N0X2dsX2NvbnRleHRfZGVsX2ZibzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTE2LDcgKzExNiw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtdXNlLWZiby12MiIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjLCoCgpIj5nc3RfZ2xfY29udGV4dF91c2VfZmJvX3YyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXVzZS1mYm8tdjIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF91c2VfZmJvX3YywqAoKSI+Z3N0X2dsX2NvbnRleHRfdXNlX2Zib192MjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTI0LDcgKzEyNCw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2VuLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdlbi1zaGFkZXIiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfZ2VuX3NoYWRlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTMyLDcgKzEzMiw3IEBACiA8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlcsKgKCkiPmdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVsLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXLCoCgpIj5nc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0xNDAsNyArMTQwLDcgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1mcmFtZWJ1ZmZlci1zdGF0dXMiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXPCoCgpIj5nc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2hlY2stZnJhbWVidWZmZXItc3RhdHVzIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzwqAoKSI+Z3N0X2dsX2NvbnRleHRfY2hlY2tfZnJhbWVidWZmZXJfc3RhdHVzPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0xNDgsNyArMTQ4LDcgQEAKIDxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LXNldC1lcnJvciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X3NldF9lcnJvcsKgKCkiPmdzdF9nbF9jb250ZXh0X3NldF9lcnJvcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3LCoCgpIj5nc3RfZ2xfY29udGV4dF9zZXRfZXJyb3I8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTE1Niw3ICsxNTYsNyBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1lcnJvciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2dldF9lcnJvcsKgKCkiPmdzdF9nbF9jb250ZXh0X2dldF9lcnJvcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtZXJyb3IiIHRpdGxlPSJnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3LCoCgpIj5nc3RfZ2xfY29udGV4dF9nZXRfZXJyb3I8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTE2NCw3ICsxNjQsNyBAQAogPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogPC90ZD4KIDx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtY2xlYXItc2hhZGVyIiB0aXRsZT0iZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVywqAoKSI+Z3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNsZWFyLXNoYWRlciIgdGl0bGU9ImdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlcsKgKCkiPmdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMTcyLDcgKzE3Miw3IEBACiA8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIiB0aXRsZT0iZ3N0X2dsX2dlbmVyYXRlX3RleHR1cmVfZnVsbMKgKCkiPmdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGw8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdlbmVyYXRlLXRleHR1cmUtZnVsbCIgdGl0bGU9ImdzdF9nbF9nZW5lcmF0ZV90ZXh0dXJlX2Z1bGzCoCgpIj5nc3RfZ2xfZ2VuZXJhdGVfdGV4dHVyZV9mdWxsPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8dHI+CkBAIC0xODAsNyArMTgwLDcgQEAKIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDYXBzPC9zcGFuPjwvYT7CoCoKIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jYXBzLXJlcGxhY2UtYWxsLWNhcHMtZmVhdHVyZXMiIHRpdGxlPSJnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzwqAoKSI+Z3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIiB0aXRsZT0iZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlc8KgKCkiPmdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTE4OCw3ICsxODgsNyBAQAogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIDwvdGQ+CiA8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1lbnN1cmUtZWxlbWVudC1kYXRhIiB0aXRsZT0iZ3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGHCoCgpIj5nc3RfZ2xfZW5zdXJlX2VsZW1lbnRfZGF0YTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZW5zdXJlLWVsZW1lbnQtZGF0YSIgdGl0bGU9ImdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhwqAoKSI+Z3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGE8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+CiA8L3RkPgogPC90cj4KIDx0cj4KQEAgLTE5Niw3ICsxOTYsMTUgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nc2l6ZTwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtZ2V0LXBsYW5lLWRhdGEtc2l6ZSIgdGl0bGU9ImdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplwqAoKSI+Z3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiIHRpdGxlPSJnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZcKgKCkiPmdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdzaXplPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1nZXQtcGxhbmUtc3RhcnQiIHRpdGxlPSJnc3RfZ2xfZ2V0X3BsYW5lX3N0YXJ0wqAoKSI+Z3N0X2dsX2dldF9wbGFuZV9zdGFydDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KIDwvdGQ+CiA8L3RyPgogPHRyPgpAQCAtMjA0LDMwICsyMTIsNTQgQEAKIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+CiA8L3RkPgogPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtcnVuLXF1ZXJ5IiB0aXRsZT0iZ3N0X2dsX3J1bl9xdWVyecKgKCkiPmdzdF9nbF9ydW5fcXVlcnk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXJ1bi1xdWVyeSIgdGl0bGU9ImdzdF9nbF9ydW5fcXVlcnnCoCgpIj5nc3RfZ2xfcnVuX3F1ZXJ5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1nZXQtdGV4dHVyZS10YXJnZXQtbWFzayIgdGl0bGU9ImdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFza8KgKCkiPmdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFzazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtdmFsdWUtc2V0LXRleHR1cmUtdGFyZ2V0IiB0aXRsZT0iZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldMKgKCkiPmdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldC1mcm9tLW1hc2siIHRpdGxlPSJnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0X2Zyb21fbWFza8KgKCkiPmdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgogPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KIDx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHc3RHTERpc3BsYXlQcm9qZWN0aW9uIiB0aXRsZT0iZW51bSBHc3RHTERpc3BsYXlQcm9qZWN0aW9uIj5Hc3RHTERpc3BsYXlQcm9qZWN0aW9uPC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHc3RHTERpc3BsYXlQcm9qZWN0aW9uIiB0aXRsZT0iZW51bSBHc3RHTERpc3BsYXlQcm9qZWN0aW9uIj5Hc3RHTERpc3BsYXlQcm9qZWN0aW9uPC9hPjwvdGQ+CiA8L3RyPjwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdMQ0I6Q0FQUyI+PC9hPjxoMz5HTENCwqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgpAQCAtMjM3LDggKzI2OSw4IEBACiAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBzdHVmZjwvY29kZT48L2VtPik7PC9wcmU+CiA8cD5jYWxsYmFjayBkZWZpbml0aW9uIGZvciBvcGVyYXRpbmcgb24gdGV4dHVyZXM8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMi42LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjc2LDggKzMwOCw4IEBACiA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj4qR0xDQl9WMjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gc3R1ZmY8L2NvZGU+PC9lbT4pOzwvcHJlPgogPHA+Y2FsbGJhY2sgZGVmaW5pdGlvbiBmb3Igb3BlcmF0aW5nIHRocm91Z2ggYSBGcmFtZWJ1ZmZlciBvYmplY3Q8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMi42LjMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzAxLDggKzMzMyw4IEBACiAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBkYXRhPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDxwPmNsaWVudCBkcmF3IGNhbGxiYWNrPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMjIuNi40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMy42LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM5Niw3ICs0MjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTHVpbnQ8L3NwYW4+IGZibzwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0x1aW50PC9zcGFuPiBkZXB0aF9idWZmZXI8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMdWludDwvc3Bhbj4gdGV4dHVyZV9mYm88L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dMQ0ItVjI6Q0FQUyIgdGl0bGU9IkdMQ0JfVjLCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R0xDQl9WMjwvc3Bhbj48L2E+IGNiPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCLVYyOkNBUFMiIHRpdGxlPSJHTENCX1YywqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdMQ0JfVjI8L3NwYW4+PC9hPiBjYjwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHN0dWZmPC9jb2RlPjwvZW0+KTs8L3ByZT4KIDwvZGl2PgogPGhyPgpAQCAtNDA2LDE0ICs0MzgsMTQgQEAKIGdzdF9nbF9jb250ZXh0X2dlbl9zaGFkZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzaGFkZXJfdmVydGV4X3NvdXJjZTwvY29kZT48L2VtPiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzaGFkZXJfZnJhZ21lbnRfc291cmNlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKipzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJnc3QtZ2wtY29udGV4dC1kZWwtc2hhZGVyIj48L2E+PGgzPmdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXLCoCgpPC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+CiBnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CkBAIC00NDEsNiArNDczLDIzIEBACiA8YSBuYW1lPSJnc3QtZ2wtY29udGV4dC1jbGVhci1zaGFkZXIiPjwvYT48aDM+Z3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVywqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgogZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+Q2xlYXIncyB0aGUgY3VycmVudGx5IHNldCBzaGFkZXIgZnJvbSB0aGUgR0wgc3RhdGUgbWFjaGluZS48L3A+Cis8cD5Ob3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMTcuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CkBAIC00NzksMjAgKzUyOCwxMjggQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWdldC1wbGFuZS1zdGFydCI+PC9hPjxoMz5nc3RfZ2xfZ2V0X3BsYW5lX3N0YXJ0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdzaXplPC9zcGFuPjwvYT4KK2dzdF9nbF9nZXRfcGxhbmVfc3RhcnQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHBsYW5lPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgogPGEgbmFtZT0iZ3N0LWdsLXJ1bi1xdWVyeSI+PC9hPjxoMz5nc3RfZ2xfcnVuX3F1ZXJ5wqAoKTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KIGdzdF9nbF9ydW5fcXVlcnkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT4gKmVsZW1lbnQ8L2NvZGU+PC9lbT4sCiAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0UXVlcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFF1ZXJ5PC9zcGFuPjwvYT4gKnF1ZXJ5PC9jb2RlPjwvZW0+LAogICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFBhZC5odG1sI0dzdFBhZERpcmVjdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBhZERpcmVjdGlvbjwvc3Bhbj48L2E+IGRpcmVjdGlvbjwvY29kZT48L2VtPik7PC9wcmU+CiA8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC12YWx1ZS1nZXQtdGV4dHVyZS10YXJnZXQtbWFzayI+PC9hPjxoMz5nc3RfZ2xfdmFsdWVfZ2V0X3RleHR1cmVfdGFyZ2V0X21hc2vCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPgorZ3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1HZW5lcmljLXZhbHVlcy5odG1sI0dWYWx1ZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdWYWx1ZTwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQtZnJvbS1tYXNrIiB0aXRsZT0iZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2vCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrKCk8L2NvZGU+PC9hPiBmb3Igd2hhdCBlbnRhaWxzIGEgbWFzazwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbHVlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YW4gaW5pdGlhbGl6ZWQgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1HZW5lcmljLXZhbHVlcy5odG1sI0dWYWx1ZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdWYWx1ZTwvc3Bhbj48L2E+IG9mIHR5cGUgR19UWVBFX1NUUklORzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMjQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbWFzayBvZiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+J3MgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZhbHVlPC9jb2RlPjwvZW0+Cis8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldCI+PC9hPjxoMz5nc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUdlbmVyaWMtdmFsdWVzLmh0bWwjR1ZhbHVlIj48c3BhbiBjbGFzcz0idHlwZSI+R1ZhbHVlPC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT4gdGFyZ2V0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMjUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsdWU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hbiBpbml0aWFsaXplZCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUdlbmVyaWMtdmFsdWVzLmh0bWwjR1ZhbHVlIj48c3BhbiBjbGFzcz0idHlwZSI+R1ZhbHVlPC9zcGFuPjwvYT4gb2YgdHlwZSBHX1RZUEVfU1RSSU5HPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRhcmdldDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPidzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMy42LjI1LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciB0aGUgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRhcmdldDwvY29kZT48L2VtPgorY291bGQgYmUgc2V0IG9uIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT52YWx1ZTwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQtZnJvbS1tYXNrIj48L2E+PGgzPmdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUdlbmVyaWMtdmFsdWVzLmh0bWwjR1ZhbHVlIj48c3BhbiBjbGFzcz0idHlwZSI+R1ZhbHVlPC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXRfbWFzazwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5BIG1hc2sgaXMgYSBiaXR3aXNlIE9SIG9mICgxICZsdDsmbHQ7IHRhcmdldCkgd2hlcmUgdGFyZ2V0IGlzIGEgdmFsaWQKKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dzdEdMVGV4dHVyZVRhcmdldCIgdGl0bGU9ImVudW0gR3N0R0xUZXh0dXJlVGFyZ2V0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xUZXh0dXJlVGFyZ2V0PC9zcGFuPjwvYT48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMy42LjI2LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbHVlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YW4gdW5pbml0aWFsaXplZCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LUdlbmVyaWMtdmFsdWVzLmh0bWwjR1ZhbHVlIj48c3BhbiBjbGFzcz0idHlwZSI+R1ZhbHVlPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGFyZ2V0X21hc2s8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIGJpdHdpc2UgbWFzayBvZiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiIHRpdGxlPSJlbnVtIEdzdEdMVGV4dHVyZVRhcmdldCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMVGV4dHVyZVRhcmdldDwvc3Bhbj48L2E+J3M8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjYuMjYuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGFyZ2V0X21hc2s8L2NvZGU+PC9lbT4KK2NvdWxkIGJlIHNldCBvbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmFsdWU8L2NvZGU+PC9lbT4KKzwvcD4KKzwvZGl2PgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+CiA8YSBuYW1lPSJHc3RHTERpc3BsYXlQcm9qZWN0aW9uIj48L2E+PGgzPmVudW0gR3N0R0xEaXNwbGF5UHJvamVjdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4yMi43LjIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMzLjcuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzM3ZjE0Ci0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sCkBAIC0wLDAgKzEsNjQ4IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+T3BlbkdMIGRlYnVnZ2luZzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5odG1sIiB0aXRsZT0iR3N0R0xXaW5kb3dYMTEiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBNaXNjZWxsYW5lb3VzIFV0aWxpdGllcyI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgorPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KKzx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgorPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmciPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLnRvcF9vZl9wYWdlIj48L2E+T3BlbkdMIGRlYnVnZ2luZzwvc3Bhbj48L2gyPgorPHA+T3BlbkdMIGRlYnVnZ2luZyDigJQgaGVscGVyIHJvdXRpbmVzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIGRlYnVnZ2luZzwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZSIgdGl0bGU9IkdzdEdMQXN5bmNEZWJ1Z0xvZ0dldE1lc3NhZ2XCoCgpIj4qR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZTwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1uZXciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfbmV3wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX25ldzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZSIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19mcmVlwqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWluaXQiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfaW5pdMKgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19pbml0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy11bnNldCIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z191bnNldMKgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z191bnNldDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZXplIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZcKgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXRoYXciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfdGhhd8KgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z190aGF3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1vdXRwdXQtbG9nLW1zZyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZ8KgKCkiPmdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnwqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2c8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXN0b3JlLWxvZy1tc2ctdmFsaXN0IiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0wqAoKSI+Z3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HLXZhbGlzdCIgdGl0bGU9IkdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HX3ZhbGlzdCgpIj5HU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3Q8L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HOkNBUFMiIHRpdGxlPSJHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRygpIj5HU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRzwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWluc2VydC1kZWJ1Zy1tYXJrZXIiIHRpdGxlPSJnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlcsKgKCkiPmdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgorPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+R3N0R0xBc3luY0RlYnVnPC9hPjwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZSI+PC9hPjxoMz5Hc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPipHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB1c2VyX2RhdGE8L2NvZGU+PC9lbT4pOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYXN5bmMtZGVidWctbmV3Ij48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z19uZXfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9hc3luY19kZWJ1Z19uZXcgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnJlZSB3aXRoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWZyZWUiIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWUoKTwvY29kZT48L2E+PC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYXN5bmMtZGVidWctZnJlZSI+PC9hPjxoMz5nc3RfZ2xfYXN5bmNfZGVidWdfZnJlZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hc3luY19kZWJ1Z19mcmVlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gKmFkPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkZyZWVzIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5hZDwvY29kZT48L2VtPgorPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy1pbml0Ij48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z19pbml0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FzeW5jX2RlYnVnX2luaXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiAqYWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+SW5pdGlhbGl6ZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+YWQ8L2NvZGU+PC9lbT4KKy4gIEludGVuZGVkIGZvciB1c2Ugd2l0aCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPidzIHRoYXQgYXJlIGVtYmVkZGVkCitpbiBvdGhlciBzdHJ1Y3RzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYXN5bmMtZGVidWctdW5zZXQiPjwvYT48aDM+Z3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gKmFkPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlVuc2V0IGFueSBkeW5hbWljYWxseSBhbGxvY2F0ZWQgZGF0YS4gIEludGVuZGVkIGZvciB1c2Ugd2l0aAorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4ncyB0aGF0IGFyZSBlbWJlZGRlZCBpbiBvdGhlciBzdHJ1Y3RzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYXN5bmMtZGVidWctZnJlZXplIj48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gKmFkPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPmZyZWV6ZSB0aGUgZGVidWcgb3V0cHV0LiAgV2hpbGUgZnJvemVuLCBhbnkgY2FsbCB0bworPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctb3V0cHV0LWxvZy1tc2ciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2fCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZygpPC9jb2RlPjwvYT4gd2lsbCBub3Qgb3V0cHV0IGFueSBtZXNzYWdlcyBidXQKK3N1YnNlcXVlbnQgY2FsbHMgdG8gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZyIgdGl0bGU9ImdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZygpPC9jb2RlPjwvYT4gd2lsbCBvdmVyd3JpdGUgcHJldmlvdXMKK21lc3NhZ2VzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYXN5bmMtZGVidWctdGhhdyI+PC9hPjxoMz5nc3RfZ2xfYXN5bmNfZGVidWdfdGhhd8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hc3luY19kZWJ1Z190aGF3ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gKmFkPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPnVuZnJlZXplIHRoZSBkZWJ1ZyBvdXRwdXQuICBTZWUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZXplIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSgpPC9jb2RlPjwvYT4gZm9yIHdoYXQgZnJlZXppbmcgbWVhbnM8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFzeW5jLWRlYnVnLW91dHB1dC1sb2ctbXNnIj48L2E+PGgzPmdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+ICphZDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5PdXRwdXRzIGEgcHJldmlvdXNseSBzdG9yZWQgZGVidWcgbWVzc2FnZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+IHRvIHN0b3JlIHRoZSBtZXNzYWdlIGluPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZyI+PC9hPjxoMz5nc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gKmFkPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9nc3RyZWFtZXItR3N0SW5mby5odG1sI0dzdERlYnVnQ2F0ZWdvcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3REZWJ1Z0NhdGVnb3J5PC9zcGFuPjwvYT4gKmNhdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNHc3REZWJ1Z0xldmVsIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RGVidWdMZXZlbDwvc3Bhbj48L2E+IGxldmVsPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpmaWxlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpmdW5jdGlvbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gbGluZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HT2JqZWN0PC9zcGFuPjwvYT4gKm9iamVjdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqZm9ybWF0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT4uLi48L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+U3RvcmVzIGEgZGVidWcgbWVzc2FnZSBmb3IgbGF0ZXIgb3V0cHV0IGJ5IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW91dHB1dC1sb2ctbXNnIiB0aXRsZT0iZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2coKTwvY29kZT48L2E+PC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMzIuNi4xMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5hZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dzdEdMQXN5bmNEZWJ1ZyIgdGl0bGU9InN0cnVjdCBHc3RHTEFzeW5jRGVidWciPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFzeW5jRGVidWc8L3NwYW4+PC9hPiB0byBzdG9yZSB0aGUgbWVzc2FnZSBpbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNHc3REZWJ1Z0NhdGVnb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0RGVidWdDYXRlZ29yeTwvc3Bhbj48L2E+IHRvIG91dHB1dCB0aGUgbWVzc2FnZSBpbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5sZXZlbDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1nb29kL2h0bWwvZ3N0LXBsdWdpbnMtZ29vZC1wbHVnaW5zLWxldmVsLmh0bWwjR3N0TGV2ZWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RMZXZlbDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZpbGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgZmlsZSB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZnVuY3Rpb248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgZnVuY3Rpb24gd2hlcmUgdGhlIGRlYnVnIG1lc3NhZ2Ugb3JpZ2luYXRlcyBmcm9tPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmxpbmU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgbGluZSBpbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZmlsZTwvY29kZT48L2VtPgord2hlcmUgdGhlIGRlYnVnIG1lc3NhZ2Ugb3JpZ2luYXRlcyBmcm9tPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm9iamVjdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij48c3BhbiBjbGFzcz0idHlwZSI+R09iamVjdDwvc3Bhbj48L2E+IHRvIGFzc29jaWF0ZSB3aXRoIHRoZSBkZWJ1ZyBtZXNzYWdlLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5mb3JtYXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIHByaW50ZiBzdHlsZSBmb3JtYXQgc3RyaW5nPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPi4uLjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBsaXN0IG9mIGFyZ3VtZW50cyBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZvcm1hdDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnLXZhbGlzdCI+PC9hPjxoMz5nc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3TCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZ192YWxpc3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+ICphZDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RJbmZvLmh0bWwjR3N0RGVidWdDYXRlZ29yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdERlYnVnQ2F0ZWdvcnk8L3NwYW4+PC9hPiAqY2F0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvZ3N0cmVhbWVyLUdzdEluZm8uaHRtbCNHc3REZWJ1Z0xldmVsIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RGVidWdMZXZlbDwvc3Bhbj48L2E+IGxldmVsPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqZmlsZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmZ1bmN0aW9uPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gbGluZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij48c3BhbiBjbGFzcz0idHlwZSI+R09iamVjdDwvc3Bhbj48L2E+ICpvYmplY3Q8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpmb3JtYXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dmFfbGlzdDwvc3Bhbj4gdmFyYXJnczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TdG9yZXMgYSBkZWJ1ZyBtZXNzYWdlIGZvciBsYXRlciBvdXRwdXQgYnkgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctb3V0cHV0LWxvZy1tc2ciIHRpdGxlPSJnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2fCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZygpPC9jb2RlPjwvYT48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIiB0aXRsZT0ic3RydWN0IEdzdEdMQXN5bmNEZWJ1ZyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQXN5bmNEZWJ1Zzwvc3Bhbj48L2E+IHRvIHN0b3JlIHRoZSBtZXNzYWdlIGluPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNhdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9nc3RyZWFtZXItR3N0SW5mby5odG1sI0dzdERlYnVnQ2F0ZWdvcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3REZWJ1Z0NhdGVnb3J5PC9zcGFuPjwvYT4gdG8gb3V0cHV0IHRoZSBtZXNzYWdlIGluPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmxldmVsPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWdvb2QvaHRtbC9nc3QtcGx1Z2lucy1nb29kLXBsdWdpbnMtbGV2ZWwuaHRtbCNHc3RMZXZlbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdExldmVsPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZmlsZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBmaWxlIHdoZXJlIHRoZSBkZWJ1ZyBtZXNzYWdlIG9yaWdpbmF0ZXMgZnJvbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5mdW5jdGlvbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bGluZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBsaW5lIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5maWxlPC9jb2RlPjwvZW0+Cit3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+b2JqZWN0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IGEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HT2JqZWN0PC9zcGFuPjwvYT4gdG8gYXNzb2NpYXRlIHdpdGggdGhlIGRlYnVnIG1lc3NhZ2UuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZvcm1hdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgcHJpbnRmIHN0eWxlIGZvcm1hdCBzdHJpbmc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFyYXJnczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBsaXN0IG9mIGFyZ3VtZW50cyBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZvcm1hdDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HLXZhbGlzdCI+PC9hPjxoMz5HU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSAgICAgICAgICAgICBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QoYWQsY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsdmFyYXJncyk8L3ByZT4KKzxwPlN0b3JlcyBhIGRlYnVnIG1lc3NhZ2UgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmFkPC9jb2RlPjwvZW0+CisgZm9yIGxhdGVyIG91dHB1dDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gdG8gc3RvcmUgdGhlIG1lc3NhZ2UgaW48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y2F0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RJbmZvLmh0bWwjR3N0RGVidWdDYXRlZ29yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdERlYnVnQ2F0ZWdvcnk8L3NwYW4+PC9hPiB0byBvdXRwdXQgdGhlIG1lc3NhZ2UgaW48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bGV2ZWw8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtZ29vZC9odG1sL2dzdC1wbHVnaW5zLWdvb2QtcGx1Z2lucy1sZXZlbC5odG1sI0dzdExldmVsIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TGV2ZWw8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5vYmplY3Q8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdPYmplY3Q8L3NwYW4+PC9hPiB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGVidWcgbWVzc2FnZS4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Zm9ybWF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBwcmludGYgc3R5bGUgZm9ybWF0IHN0cmluZzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YXJhcmdzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGxpc3Qgb2YgYXJndW1lbnRzIGZvciA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Zm9ybWF0PC9jb2RlPjwvZW0+Cis8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0c6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRygpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lICAgICAgICAgICAgIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKGFkLGNhdCxsZXZlbCxvYmplY3QsZm9ybWF0LC4uLik8L3ByZT4KKzxwPlN0b3JlcyBhIGRlYnVnIG1lc3NhZ2UgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmFkPC9jb2RlPjwvZW0+CisgZm9yIGxhdGVyIG91dHB1dDwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMyLjYuMTMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gdG8gc3RvcmUgdGhlIG1lc3NhZ2UgaW48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y2F0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RJbmZvLmh0bWwjR3N0RGVidWdDYXRlZ29yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdERlYnVnQ2F0ZWdvcnk8L3NwYW4+PC9hPiB0byBvdXRwdXQgdGhlIG1lc3NhZ2UgaW48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bGV2ZWw8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtZ29vZC9odG1sL2dzdC1wbHVnaW5zLWdvb2QtcGx1Z2lucy1sZXZlbC5odG1sI0dzdExldmVsIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TGV2ZWw8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5vYmplY3Q8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdPYmplY3Q8L3NwYW4+PC9hPiB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGVidWcgbWVzc2FnZS4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Zm9ybWF0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBwcmludGYgc3R5bGUgZm9ybWF0IHN0cmluZzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD4uLi48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5mb3JtYXQ8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtaW5zZXJ0LWRlYnVnLW1hcmtlciI+PC9hPjxoMz5nc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlcsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmZvcm1hdDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Li4uPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkluc2VydHMgYSBtYXJrZXIgaW50byBhIEdMIGRlYnVnIHN0cmVhbS4gIFJlcXVpcmVzIHRoZSAnZ2xkZWJ1Z21hcmtlcicKK2RlYnVnIGNhdGVnb3J5IHRvIGJlIGF0IGxlYXN0IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL2dzdHJlYW1lci1Hc3RJbmZvLmh0bWwjR1NULUxFVkVMLUZJWE1FOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5HU1RfTEVWRUxfRklYTUU8L2NvZGU+PC9hPi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zMi42LjE0LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZvcm1hdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgcHJpbnRmLXN0eWxlIGZvcm1hdCBzdHJpbmc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Li4uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YXJndW1lbnRzIGZvcm0gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmZvcm1hdDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xBc3luY0RlYnVnIj48L2E+PGgzPnN0cnVjdCBHc3RHTEFzeW5jRGVidWc8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RHTEFzeW5jRGVidWcgeworfTsKKzwvcHJlPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWciIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBc3luY0RlYnVnIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBc3luY0RlYnVnPC9zcGFuPjwvYT4gYW4gb3BhcXVlIHN0cnVjdHVyZSBhbmQgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUKK3Byb3ZpZGVkIEFQSS48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODI2ZWFhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwKQEAgLTAsMCArMSwxMjkxIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+R3N0R0xCYXNlTWVtb3J5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiIHRpdGxlPSJHc3RHTEFQSSI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9IkdzdEdMQmFzZUZpbHRlci5odG1sIiB0aXRsZT0iR3N0R0xCYXNlRmlsdGVyIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkudG9wX29mX3BhZ2UiPjwvYT5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9oMj4KKzxwPkdzdEdMQmFzZU1lbW9yeSDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCBidWZmZXJzPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULU1BUC1HTDpDQVBTIiB0aXRsZT0iR1NUX01BUF9HTCI+R1NUX01BUF9HTDwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGVmaW5lX2tleXdvcmQiPiNkZWZpbmU8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SOkNBUFMiIHRpdGxlPSJHU1RfR0xfQkFTRV9NRU1PUllfRVJST1IiPkdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jwqAoKSI+KkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuY8KgKCkiPipHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYzwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1BTExPQzpDQVBTIiB0aXRsZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0MiPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1XUkFQLVNZU01FTTpDQVBTIiB0aXRsZT0iR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU0iPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1XUkFQLUdQVS1IQU5ETEU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSI+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1VU0VSOkNBUFMiIHRpdGxlPSJHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19VU0VSIj5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19VU0VSPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtaW5pdCIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0wqAoKSI+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHkiIHRpdGxlPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29wecKgKCkiPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUiIHRpdGxlPSJnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZcKgKCkiPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGHCoCgpIj5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSIgdGl0bGU9ImdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGHCoCgpIj5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQtb25jZSIgdGl0bGU9ImdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2XCoCgpIj5nc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdMKgKCkiPmdzdF9nbF9iYXNlX21lbW9yeV9pbml0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1pcy1nbC1iYXNlLW1lbW9yeSIgdGl0bGU9ImdzdF9pc19nbF9iYXNlX21lbW9yecKgKCkiPmdzdF9pc19nbF9iYXNlX21lbW9yeTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uwqAoKSI+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb248L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbsKgKCkiPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5ncG9pbnRlcjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uwqAoKSI+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb27CoCgpIj4qR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbjwvYT48c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbsKgKCkiPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb248L2E+PHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb27CoCgpIj4qR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uPC9hPjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWFsbG9jIiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jwqAoKSI+Z3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYy1kYXRhIiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jX2RhdGHCoCgpIj5nc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktbWVtY3B5IiB0aXRsZT0iZ3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNwecKgKCkiPmdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KKzxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIiB0aXRsZT0iR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FIj5HU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUU8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPmVudW08L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5RXJyb3IiIHRpdGxlPSJlbnVtIEdzdEdMQmFzZU1lbW9yeUVycm9yIj5Hc3RHTEJhc2VNZW1vcnlFcnJvcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciIgdGl0bGU9ImVudW0gR3N0R0xCYXNlTWVtb3J5VHJhbnNmZXIiPkdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPkdzdEdMQmFzZU1lbW9yeTwvYT48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KKzxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CisgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+R3N0QWxsb2NhdG9yPC9hPgorICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcgorICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvciI+R3N0R0xCdWZmZXJBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5QWxsb2NhdG9yIj5Hc3RHTE1lbW9yeUFsbG9jYXRvcjwvYT4KKzwvcHJlPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+R3N0R0xCYXNlTWVtb3J5IGlzIGEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiBzdWJjbGFzcyBwcm92aWRpbmcgdGhlIGJhc2lzIG9mIHN1cHBvcnQKK2ZvciB0aGUgbWFwcGluZyBvZiBHTCBidWZmZXJzLjwvcD4KKzxwPkRhdGEgaXMgdXBsb2FkZWQgb3IgZG93bmxvYWRlZCBmcm9tIHRoZSBHUFUgYXMgaXMgbmVjZXNzYXJ5LjwvcD4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5LmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtTUFQLUdMOkNBUFMiPjwvYT48aDM+R1NUX01BUF9HTDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfTUFQX0dMIChHU1RfTUFQX0ZMQUdfTEFTVCAmbHQ7Jmx0OyAxKQorPC9wcmU+Cis8cD5GbGFnIGluZGljYXRpbmcgdGhhdCB3ZSBzaG91bGQgbWFwIHRoZSBHTCBvYmplY3QgaW5zdGVhZCBvZiB0byBzeXN0ZW0gbWVtb3J5LjwvcD4KKzxwPkNvbWJpbmluZyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULU1BUC1HTDpDQVBTIiB0aXRsZT0iR1NUX01BUF9HTCI+PHNwYW4gY2xhc3M9InR5cGUiPkdTVF9NQVBfR0w8L3NwYW4+PC9hPiB3aXRoIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI0dTVC1NQVAtV1JJVEU6Q0FQUyI+PHNwYW4gY2xhc3M9InR5cGUiPkdTVF9NQVBfV1JJVEU8L3NwYW4+PC9hPiBoYXMgdGhlIHNhbWUgc2VtYW50aWNzIGFzIHRob3VnaAoreW91IGFyZSB3cml0aW5nIHRvIE9wZW5HTC4gQ29udmVyc2VseSwgY29tYmluaW5nIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtTUFQLUdMOkNBUFMiIHRpdGxlPSJHU1RfTUFQX0dMIj48c3BhbiBjbGFzcz0idHlwZSI+R1NUX01BUF9HTDwvc3Bhbj48L2E+IHdpdGgKKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI0dTVC1NQVAtUkVBRDpDQVBTIj48c3BhbiBjbGFzcz0idHlwZSI+R1NUX01BUF9SRUFEPC9zcGFuPjwvYT4gaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aG91Z2ggeW91IGFyZSByZWFkaW5nIGZyb20gT3BlbkdMLjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SOkNBUFMiPjwvYT48aDM+R1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUiAoZ3N0X2dsX2Jhc2VfbWVtb3J5X2Vycm9yX3F1YXJrICgpKQorPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIj48L2E+PGgzPkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+KkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqc3JjPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpkZXN0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNvcGllcyB0aGUgcGFyYW1ldGVycyBmcm9tIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zcmM8L2NvZGU+PC9lbT4KKyBpbnRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5kZXN0PC9jb2RlPjwvZW0+CisuICBUaGUgc3ViY2xhc3MgbXVzdCBjb21wb3NlIGNvcHkKK2Z1bmN0aW9ucyBmcm9tIHRoZSBzdXBlcmNsYXNzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNyYzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBzb3VyY2UgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBjb3B5IGZyb208L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGVzdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBzb3VyY2UgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiB0byBjb3B5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIj48L2E+PGgzPkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+KkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBwYXJhbXM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnJlZSBhbnkgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGRhdGEuICBUaGUgc3ViY2xhc3MgbXVzdCBjYWxsIHRoZSBzdXBlcmNsYXNzJworZnJlZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1BTExPQzpDQVBTIj48L2E+PGgzPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DICgxICZsdDsmbHQ7IDApCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1TWVNNRU06Q0FQUyI+PC9hPjxoMz5HU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSAoMSAmbHQ7Jmx0OyAxKQorPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtR1BVLUhBTkRMRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUgKDEgJmx0OyZsdDsgMikKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1VU0VSOkNBUFMiPjwvYT48aDM+R1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfVVNFUjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19VU0VSICgxICZsdDsmbHQ7IDE2KQorPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1pbml0Ij48L2E+PGgzPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NpemUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nc2l6ZTwvc3Bhbj48L2E+IHN0cnVjdF9zaXplPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGFsbG9jX2ZsYWdzPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuY8KgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYzwvc3Bhbj48L2E+IGNvcHk8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jPC9zcGFuPjwvYT4gZnJlZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzaXplPC9zcGFuPjwvYT4gYWxsb2Nfc2l6ZTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqYWxsb2NfcGFyYW1zPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHdyYXBwZWRfZGF0YTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBnbF9oYW5kbGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gdXNlcl9kYXRhPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+IG5vdGlmeTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD48ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bm90aWZ5PC9jb2RlPjwvZW0+Cisgd2lsbCBiZSBjYWxsZWQgb25jZSBmb3IgZWFjaCBhbGxvY2F0ZWQgbWVtb3J5IHVzaW5nIHRoZXNlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wYXJhbXM8L2NvZGU+PC9lbT4KKword2hlbiBmcmVlaW5nIHRoZSBtZW1vcnkuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3RydWN0X3NpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgc3RydWN0IHNpemUgb2YgdGhlIGltcGxlbWVudGF0aW9uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jX2ZsYWdzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+c29tZSBhbGxvYyBmbGFnczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb3B5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSBjb3B5IGZ1bmN0aW9uPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmZyZWU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIGZyZWUgZnVuY3Rpb248L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+LiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2Nfc2l6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYWxsb2NhdGUuPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jX3BhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gYXBwbHkuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndyYXBwZWRfZGF0YTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIHN5c21lbSBkYXRhIHBvaW50ZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGlvbiB3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dWzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5nbF9oYW5kbGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSBHTCBoYW5kbGUgdG8gaW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGlvbiB3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHVzZXIgZGF0YSB0byBjYWxsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KK3dpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTAuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSBwYXJhbWF0ZXJzIGNvdWxkIGJlIGluaXRpYWxpemVkPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5Ij48L2E+PGgzPmdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT7CoCoKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqc3JjPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xMS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3JjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gaW5pdGlhbGl6ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xMS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgY29weSBvZiB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnNyYzwvY29kZT48L2VtPgorb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4gb24KK2ZhaWx1cmU8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUiPjwvYT48aDM+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GcmVlcyB0aGUgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiBhbmQgYWxsIGFzc29jaWF0ZWQgZGF0YS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlLWRhdGEiPjwvYT48aDM+Z3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnJlZXMgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBkYXRhIGluIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wYXJhbXM8L2NvZGU+PC9lbT4KKy4gIERpcmVjdCBzdWJjbGFzc2VzCitzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGluIHRoZWlyIG93biBvdmVycmlkZW4gZnJlZSBmdW5jdGlvbi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmFtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBzb3VyY2UgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHktZGF0YSI+PC9hPjxoMz5nc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnNyYzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpkZXN0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNvcGllcyB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGRhdGEgZnJvbSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3JjPC9jb2RlPjwvZW0+CisgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRlc3Q8L2NvZGU+PC9lbT4KKy4gIERpcmVjdCBzdWJjbGFzc2VzCitzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGluIHRoZWlyIG93biBvdmVycmlkZW4gY29weSBmdW5jdGlvbi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3JjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHNvdXJjZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiB0aXRsZT0ic3RydWN0IEdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmRlc3Q8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgZGVzdGluYXRpb24gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtcyIgdGl0bGU9InN0cnVjdCBHc3RHTEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdC1vbmNlIj48L2E+PGgzPmdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnZvaWQ8L3NwYW4+PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkluaXRpYWxpemVzIHRoZSBHTCBCYXNlIE1lbW9yeSBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCittdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBHc3RHTEJhc2VNZW1vcnkgb3BlcmF0aW9uLjwvcD4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQiPjwvYT48aDM+Z3N0X2dsX2Jhc2VfbWVtb3J5X2luaXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRvcjwvc3Bhbj48L2E+ICphbGxvY2F0b3I8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWVtb3J5PC9zcGFuPjwvYT4gKnBhcmVudDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NpemU8L3NwYW4+PC9hPiBzaXplPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHVzZXJfZGF0YTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPiBub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+SW5pdGlhbGl6ZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm1lbTwvY29kZT48L2VtPgorIHdpdGggdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnM8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTYuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiB0byBpbml0aWFsaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFsbG9jYXRvcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRvcjwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemUgd2l0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJlbnQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIHBhcmVudCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+IHRvIGluaXRpYWxpemUgd2l0aC4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiB0byBpbml0aWFsaXplIHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+R3N0QWxsb2NhdGlvblBhcmFtczwvY29kZT48L2VtPgordG8gaW5pdGlhbGl6ZSB3aXRoLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIG51bWJlciBvZiBieXRlcyB0byBiZSBhbGxvY2F0ZWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHVzZXIgZGF0YSB0byBjYWxsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KK3dpdGguIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBhIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1pcy1nbC1iYXNlLW1lbW9yeSI+PC9hPjxoMz5nc3RfaXNfZ2xfYmFzZV9tZW1vcnnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2lzX2dsX2Jhc2VfbWVtb3J5ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4xNy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjE3LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciB0aGUgbWVtb3J5IGF0IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5tZW08L2NvZGU+PC9lbT4KK2lzIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+PC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24iPjwvYT48aDM+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT7CoCoKKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9zcGFuPjwvYT4gKmFsbG9jYXRvcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Ob3RlOiBub3QgY2FsbGVkIHdpdGggYSBHTCBjb250ZXh0IGN1cnJlbnQ8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NhdG9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gYWxsb2NhdGUgdGhlIG1lbW9yeSB3aXRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTguNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ld2x5IGFsbG9jYXRlZCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gZnJvbSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+YWxsb2NhdG9yPC9jb2RlPjwvZW0+CithbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcmFtczwvY29kZT48L2VtPgorPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uIj48L2E+PGgzPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+ICoqZXJyb3I8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QXMgdGhpcyB2aXJ0dWFsIG1ldGhvZCBpcyBjYWxsZWQgd2l0aCBhbiBPcGVuR0wgY29udGV4dCBjdXJyZW50LCB1c2UgdGhpcworZnVuY3Rpb24gdG8gYWxsb2NhdGUgYW5kIE9wZW5HTCByZXNvdXJjZXMgbmVlZGVkIGZvciB5b3VyIGFwcGxpY2F0aW9uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjE5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm1lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVycm9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUVycm9yLVJlcG9ydGluZy5odG1sI0dFcnJvciI+PHNwYW4gY2xhc3M9InR5cGUiPkdFcnJvcjwvc3Bhbj48L2E+IHRvIHVzZSBvbiBmYWlsdXJlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMTkuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSBjcmVhdGlvbiBzdWNjZWVkZWQ8L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24iPjwvYT48aDM+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPgorPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPig8L3NwYW4+KkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gKm1lbTwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI0dzdE1hcEluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNYXBJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NpemUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nc2l6ZTwvc3Bhbj48L2E+IG1heHNpemU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QWxzbyBzZWUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwjZ3N0LW1lbW9yeS1tYXAiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X21lbW9yeV9tYXAoKTwvY29kZT48L2E+OzwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yMC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCNHc3RNYXBJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWFwSW5mbzwvc3Bhbj48L2E+IHRvIG1hcCB3aXRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm1heHNpemU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgc2l6ZSB0byBtYXA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBtYXBwZWQgcG9pbnRlcjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uIj48L2E+PGgzPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj4qR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbjxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4pPC9zcGFuPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+ICptZW08L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCNHc3RNYXBJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0TWFwSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkFsc28gc2VlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI2dzdC1tZW1vcnktdW5tYXAiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X21lbW9yeV91bm1hcCgpPC9jb2RlPjwvYT47PC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy44LjIxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm1lbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI0dzdE1hcEluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNYXBJbmZvPC9zcGFuPjwvYT4gdG8gbWFwIHdpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uIj48L2E+PGgzPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT7CoCoKKzxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oPC9zcGFuPipHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb248c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KTwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzc2l6ZTwvc3Bhbj48L2E+IG9mZnNldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc3NpemUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nc3NpemU8L3NwYW4+PC9hPiBzaXplPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkFsc28gc2VlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sI2dzdC1tZW1vcnktY29weSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfbWVtb3J5X2NvcHkoKTwvY29kZT48L2E+OzwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5tZW08L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5vZmZzZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgb2Zmc2V0IHRvIGNvcHkgZnJvbTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIG51bWJlciBvZiBieXRlcyB0byBjb3B5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbmV3bHkgY29waWVkIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+IG9yIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjTlVMTDpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+TlVMTDwvY29kZT48L2E+PC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiI+PC9hPjxoMz5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KDwvc3Bhbj4qR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPik8L3NwYW4+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gKm1lbTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5EZXN0cm95IGFueSByZXNvdXJjZXMgYWxsb2NhdGVkIHRocm91Z2hvdXQgdGhlIGxpZmV0aW1lIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5tZW08L2NvZGU+PC9lbT4KKzwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOC4yMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYyI+PC9hPjxoMz5nc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2PCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMQmFzZU1lbW9yeTwvc3Bhbj48L2E+wqAqCitnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9zcGFuPjwvYT4gKmFsbG9jYXRvcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gKnBhcmFtczwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMjQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+YWxsb2NhdG9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9zcGFuPjwvYT4gdG8gYWxsb2NhdGUgdGhlIG1lbW9yeSB3aXRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMjQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gZnJvbSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+YWxsb2NhdG9yPC9jb2RlPjwvZW0+Cit3aXRoIHRoZSByZXF1ZXN0ZWQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcmFtczwvY29kZT48L2VtPgorLjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtZ2wtYmFzZS1tZW1vcnktYWxsb2MtZGF0YSI+PC9hPjxoMz5nc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Citnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnkiIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnk8L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLWJhc2UtbWVtb3J5LW1lbWNweSI+PC9hPjxoMz5nc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gKnNyYzwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT4gKmRlc3Q8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzc2l6ZTwvc3Bhbj48L2E+IG9mZnNldDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3NzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NzaXplPC9zcGFuPjwvYT4gc2l6ZTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMjYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3JjPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHNvdXJjZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGVzdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkZXN0aW5hdGlvbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5IiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+b2Zmc2V0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIG9mZnNldCB0byBzdGFydCBhdDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIG51bWJlciBvZiBieXRlcyB0byBjb3B5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjguMjYuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB3aGV0aGVyIHRoZSBjb3B5IHN1Y2VlZGVkLjwvcD4KKzwvZGl2PgorPHAgY2xhc3M9InNpbmNlIj5TaW5jZTogMS44PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCI+PC9hPjxoMz5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yOzwvcHJlPgorPHA+T3BhcXVlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I8L3NwYW4+PC9hPiBzdHJ1Y3Q8L3A+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzIj48L2E+PGgzPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CisgIEdzdEFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKKworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uICAgICAgICAgYWxsb2M7CisKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24gICAgICAgIGNyZWF0ZTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24gICAgICAgICAgIG1hcDsKKyNpZiAwCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckZsdXNoRnVuY3Rpb24gICAgICAgICBmbHVzaDsgICAgICAgIC8qIG1ha2UgQ1BVIHdyaXRlcyB2aXNpYmxlIHRvIHRoZSBHUFUgKi8KKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9ySW52YWxpZGF0ZUZ1bmN0aW9uICAgIGludmFsaWRhdGU7ICAgLyogbWFrZSBHUFUgd3JpdGVzIHZpc2libGUgdG8gdGhlIENQVSAqLworI2VuZGlmCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24gICAgICAgICB1bm1hcDsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uICAgICAgICAgIGNvcHk7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbiAgICAgICBkZXN0cm95OworfSBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzczsKKzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy45LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sI0dzdEFsbG9jYXRvckNsYXNzIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdG9yQ2xhc3M8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MucGFyZW50LWNsYXNzIj48L2E+cGFyZW50X2NsYXNzPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgcGFyZW50IGNsYXNzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb248L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MuYWxsb2MiPjwvYT5hbGxvYzwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYWQtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uczwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb248L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MuY3JlYXRlIj48L2E+Y3JlYXRlPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcy5tYXAiPjwvYT5tYXA8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uIiB0aXRsZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb248L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JGbHVzaEZ1bmN0aW9uPC9zcGFuPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MuZmx1c2giPjwvYT5mbHVzaDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZD7CoDwvdGQ+Cis8dGQ+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9ySW52YWxpZGF0ZUZ1bmN0aW9uPC9zcGFuPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MuaW52YWxpZGF0ZSI+PC9hPmludmFsaWRhdGU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQ+wqA8L3RkPgorPHRkPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb248L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MudW5tYXAiPjwvYT51bm1hcDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbjwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb248L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MuY29weSI+PC9hPmNvcHk8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiIgdGl0bGU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbsKgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb248L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzLmRlc3Ryb3kiPjwvYT5kZXN0cm95PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24iIHRpdGxlPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb27CoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdTVC1HTC1CQVNFLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUUgICAiR0xCYXNlTWVtb3J5IgorPC9wcmU+Cis8cD5UaGUgbmFtZSBvZiB0aGUgR0wgYnVmZmVyIGFsbG9jYXRvcjwvcD4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5RXJyb3IiPjwvYT48aDM+ZW51bSBHc3RHTEJhc2VNZW1vcnlFcnJvcjwvaDM+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjkuNS4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUi1GQUlMRUQ6Q0FQUyI+PC9hPkdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUl9GQUlMRUQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+Z2VuZXJpYyBmYWxpdXJlPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUi1PTEQtTElCUzpDQVBTIj48L2E+R1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX09MRF9MSUJTPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPnRoZSBpbXBsZW1lbnRhdGlvbiBpcyB0b28gb2xkIGFuZCBkb2Vzbid0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbXBsZW1lbnQgZW5vdWdoIGZlYXR1cmVzPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUi1SRVNPVVJDRS1VTkFWQUlMQUJMRTpDQVBTIj48L2E+R1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmEgcmVzb3VyY2UgY291bGQgbm90IGJlIGZvdW5kPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciI+PC9hPjxoMz5lbnVtIEdzdEdMQmFzZU1lbW9yeVRyYW5zZmVyPC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjMuOS42LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUJBU0UtTUVNT1JZLVRSQU5TRkVSLU5FRUQtRE9XTkxPQUQ6Q0FQUyI+PC9hPkdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPnRoZSB0ZXh0dXJlIG5lZWRzIGRvd25sb2FkaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIHRoZSBkYXRhIHBvaW50ZXI8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLUJBU0UtTUVNT1JZLVRSQU5TRkVSLU5FRUQtVVBMT0FEOkNBUFMiPjwvYT5HU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIGRhdGEgcG9pbnRlciBuZWVkcyB1cGxvYWRpbmcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIHRleHR1cmU8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcyI+PC9hPjxoMz5zdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHsKKyAgZ3NpemUgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdF9zaXplOworICBHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyAgICAgY29weTsKKyAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMgICAgIGZyZWU7CisKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsbG9jX2ZsYWdzOworICBnc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2Nfc2l6ZTsKKyAgR3N0QWxsb2NhdGlvblBhcmFtcyAgICAgICAgICAgICAgKmFsbG9jX3BhcmFtczsKKyAgR3N0R0xDb250ZXh0ICAgICAgICAgICAgICAgICAgICAgKmNvbnRleHQ7CisgIEdEZXN0cm95Tm90aWZ5ICAgICAgICAgICAgICAgICAgICBub3RpZnk7CisgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyX2RhdGE7CisKKyAgLyogR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU0gb25seSAqLworICBncG9pbnRlciAgICAgICAgICAgICAgICAgICAgICAgICAgd3JhcHBlZF9kYXRhOworICAvKiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUgb25seSAqLworICBndWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xfaGFuZGxlOworfTsKKzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMy45LjcuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnc2l6ZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdzaXplPC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy5zdHJ1Y3Qtc2l6ZSI+PC9hPnN0cnVjdF9zaXplPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgc2l6ZSBvZiB0aGUgc3RydWN0IChpbmNsdWRpbmcgYW5kIHN1YmNsYXNzIGRhdGEpPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmPCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmM8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zLmNvcHkiPjwvYT5jb3B5PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyIgdGl0bGU9IkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jwqAoKSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMiIHRpdGxlPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuY8KgKCkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYzwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMuZnJlZSI+PC9hPmZyZWU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIiB0aXRsZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmPCoCgpIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmM8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy5hbGxvYy1mbGFncyI+PC9hPmFsbG9jX2ZsYWdzPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hbGxvY2F0aW9uIGZsYWdzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dzaXplIj48c3BhbiBjbGFzcz0idHlwZSI+Z3NpemU8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zLmFsbG9jLXNpemUiPjwvYT5hbGxvY19zaXplPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgYWxsb2NhdGlvbiBzaXplPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPsKgKjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQWxsb2NhdGlvblBhcmFtcy5hbGxvYy1wYXJhbXMiPjwvYT5hbGxvY19wYXJhbXM8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT7CoCo8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMuY29udGV4dCI+PC9hPmNvbnRleHQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURhdGFzZXRzLmh0bWwjR0Rlc3Ryb3lOb3RpZnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRGVzdHJveU5vdGlmeTwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMubm90aWZ5Ij48L2E+bm90aWZ5PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMudXNlci1kYXRhIj48L2E+dXNlcl9kYXRhPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5hcmd1bWVudCB0byBjYWxsIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KK3dpdGg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMud3JhcHBlZC1kYXRhIj48L2E+d3JhcHBlZF9kYXRhPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgd3JhcHBlZCBkYXRhIHBvaW50ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTEFsbG9jYXRpb25QYXJhbXMuZ2wtaGFuZGxlIj48L2E+Z2xfaGFuZGxlPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgd3JhcHBlZCBPcGVuR0wgaGFuZGxlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RHTEJhc2VNZW1vcnkiPjwvYT48aDM+R3N0R0xCYXNlTWVtb3J5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CisgIEdzdE1lbW9yeSAgICAgICAgICAgICBtZW07CisKKyAgR3N0R0xDb250ZXh0ICAgICAgICAgKmNvbnRleHQ7Cit9IEdzdEdMQmFzZU1lbW9yeTsKKzwvcHJlPgorPHA+UmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBhIEdMIG1lbW9yeSBvYmplY3Q8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4zLjkuOC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xCYXNlTWVtb3J5Lm1lbSI+PC9hPm1lbTwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHBhcmVudCBvYmplY3Q8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPsKgKjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMQmFzZU1lbW9yeS5jb250ZXh0Ij48L2E+Y29udGV4dDwvY29kZT48L2VtPjs8L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+IHRvIHVzZSBmb3IgR0wgb3BlcmF0aW9uczwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiwgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RBbGxvY2F0b3I8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhNjA4NTUuLjAwMDAwMDAKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcxNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+R3N0R0xNZW1vcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJnbC5odG1sIiB0aXRsZT0iT3BlbkdMIEhlbHBlciBMaWJyYXJ5Ij4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xGcmFtZWJ1ZmZlciI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwiIHRpdGxlPSJHc3RHTFNoYWRlciI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgotPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KLTwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iZ2wuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LnRvcF9vZl9wYWdlIj48L2E+R3N0R0xNZW1vcnk8L3NwYW4+PC9oMj4KLTxwPkdzdEdMTWVtb3J5IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzPC9wPgotPC90ZD4KLTx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KLTwvdHI+PC90YWJsZT48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KLTxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWluaXQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2luaXTCoCgpIj5nc3RfZ2xfbWVtb3J5X2luaXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPsKgKgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWFsbG9jIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9hbGxvY8KgKCkiPmdzdF9nbF9tZW1vcnlfYWxsb2M8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEdMTWVtb3J5PC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS13cmFwcGVkIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV93cmFwcGVkwqAoKSI+Z3N0X2dsX21lbW9yeV93cmFwcGVkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+wqAqCi08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZC10ZXh0dXJlIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmXCoCgpIj5nc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS1pbnRvLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0dXJlwqAoKSI+Z3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXLCoCgpIj5nc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtd3JhcHBlZCIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZMKgKCkiPmdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0IiB0aXRsZT0iZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdMKgKCkiPmdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtaXMtZ2wtbWVtb3J5IiB0aXRsZT0iZ3N0X2lzX2dsX21lbW9yecKgKCkiPmdzdF9pc19nbF9tZW1vcnk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08YSBuYW1lPSJHc3RHTEFsbG9jYXRvciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KLTxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3Itc3RydWN0IiB0aXRsZT0iR3N0R0xBbGxvY2F0b3IiPkdzdEdMQWxsb2NhdG9yPC9hPjwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yQ2xhc3MiIHRpdGxlPSJHc3RHTEFsbG9jYXRvckNsYXNzIj5Hc3RHTEFsbG9jYXRvckNsYXNzPC9hPjwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktQUxMT0NBVE9SOkNBUFMiIHRpdGxlPSJHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiI+R1NUX0dMX01FTU9SWV9BTExPQ0FUT1I8L2E+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+R3N0R0xNZW1vcnk8L2E+PC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+R3N0QWxsb2NhdG9yPC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvcgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTEFsbG9jYXRvcgotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxwPkdzdEdMTWVtb3J5IGlzIGEgPHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZUJ1ZmZlcjwvc3Bhbj4gc3ViY2xhc3MgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHRoZSBtYXBwaW5nIG9mCi1HTCB0ZXh0dXJlcy4gIDwvcD4KLTxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+IGlzIGNyZWF0ZWQgdGhyb3VnaCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWFsbG9jIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9hbGxvY8KgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X2dsX21lbW9yeV9hbGxvYygpPC9jb2RlPjwvYT4gb3Igc3lzdGVtIG1lbW9yeSBjYW4KLWJlIHdyYXBwZWQgdGhyb3VnaCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXdyYXBwZWQiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3dyYXBwZWTCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9tZW1vcnlfd3JhcHBlZCgpPC9jb2RlPjwvYT4uPC9wPgotPHA+RGF0YSBpcyB1cGxvYWRlZCBvciBkb3dubG9hZGVkIGZyb20gdGhlIEdQVSBhcyBpcyBuZWNlc3NhcnkuPC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1pbml0Ij48L2E+PGgzPmdzdF9nbF9tZW1vcnlfaW5pdMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9tZW1vcnlfaW5pdCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5Jbml0aWFsaXplcyB0aGUgR0wgTWVtb3J5IGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KLW11bHRpcGxlIHRpbWVzLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIEdzdEdMTWVtb3J5IG9wZXJhdGlvbi48L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1tZW1vcnktYWxsb2MiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9hbGxvY8KgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE1lbW9yeS5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfbWVtb3J5X2FsbG9jICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPiAqcGFyYW1zPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+ICp2YWxpZ248L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+QWxsb2NhdGVkIGEgbmV3IDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHbE1lbW9yeTwvc3Bhbj4uPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Y29udGV4dDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGFyYW1zPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT4gb2YgdGhlIG1lbW9yeTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGFuZTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBwbGFuZSB0aGlzIG1lbW9yeSB3aWxsIHJlcHJlc2VudDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWxpZ248L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+IGFwcGxpZWQgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmluZm88L2NvZGU+PC9lbT4KLTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC4zLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gYSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+IG9iamVjdCB3aXRoIGEgR0wgdGV4dHVyZSBzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZpbmZvPC9jb2RlPjwvZW0+Ci1mcm9tIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb250ZXh0PC9jb2RlPjwvZW0+Ci08L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS13cmFwcGVkIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfd3JhcHBlZMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPsKgKgotZ3N0X2dsX21lbW9yeV93cmFwcGVkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gcGxhbmU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gZGF0YTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gdXNlcl9kYXRhPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1EYXRhc2V0cy5odG1sI0dEZXN0cm95Tm90aWZ5Ij48c3BhbiBjbGFzcz0idHlwZSI+R0Rlc3Ryb3lOb3RpZnk8L3NwYW4+PC9hPiBub3RpZnk8L2NvZGU+PC9lbT4pOzwvcHJlPgotPHA+V3JhcHBlZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGF0YTwvY29kZT48L2VtPgotIGludG8gYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPi4gVGhpcyB2ZXJzaW9uIHdpbGwgYWNjb3VudCBmb3IgcGFkZGluZwotYWRkZWQgdG8gdGhlIGFsbG9jYXRpb24gYW5kIGV4cHJlc3NlZCB0aHJvdWdoIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT52YWxpZ248L2NvZGU+PC9lbT4KLS48L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+IG9mIHRoZSBtZW1vcnkgYW5kIGRhdGE8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxhbmU8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgcGxhbmUgdGhpcyBtZW1vcnkgd2lsbCByZXByZXNlbnQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmFsaWduPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiBhcHBsaWVkIHRvIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5pbmZvPC9jb2RlPjwvZW0+Ci08L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+ZGF0YTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkYXRhIHRvIHdyYXA8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXNlcl9kYXRhPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+ZGF0YSBjYWxsZWQgd2l0aCBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPm5vdGlmeTwvY29kZT48L2VtPgotPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmZ1bmN0aW9uIGNhbGxlZCB3aXRoIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT51c2VyX2RhdGE8L2NvZGU+PC9lbT4KLXdoZW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRhdGE8L2NvZGU+PC9lbT4KLW5lZWRzIHRvIGJlIGZyZWVkPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+IG9iamVjdCB3aXRoIGEgR0wgdGV4dHVyZSBzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZfaW5mbzwvY29kZT48L2VtPgotZnJvbSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29udGV4dDwvY29kZT48L2VtPgotYW5kIGNvbnRlbnRzIHNwZWNpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+ZGF0YTwvY29kZT48L2VtPgotPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1tZW1vcnktd3JhcHBlZC10ZXh0dXJlIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiIHRpdGxlPSJHc3RHTE1lbW9yeSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHRleHR1cmVfaWQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gdGV4dHVyZV90YXJnZXQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHBsYW5lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiB1c2VyX2RhdGE8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPldyYXBzIGEgdGV4dHVyZSBoYW5kbGUgaW50byBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+LjwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnRleHR1cmVfaWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgR0wgdGV4dHVyZSBoYW5kbGU8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4dHVyZV90YXJnZXQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgR0wgdGV4dHVyZSB0YXJnZXQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiBvZiB0aGUgbWVtb3J5PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYW5lPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+VGhlIHBsYW5lIHRoaXMgbWVtb3J5IHdpbGwgcmVwcmVzZW50PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnVzZXJfZGF0YTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnVzZXIgZGF0YTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5ub3RpZnk8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5EZXN0cm95IGNhbGxiYWNrIGZvciB0aGUgdXNlciBkYXRhPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjUuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KLTxwPiBhIG5ld2x5IGFsbG9jYXRlZCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LWNvcHktaW50by10ZXh0dXJlIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmXCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICpnbF9tZW08L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiB0ZXhfaWQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4gdGV4X3R5cGU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gd2lkdGg8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gaGVpZ2h0PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHN0cmlkZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHJlc3BlY2lmeTwvY29kZT48L2VtPik7PC9wcmU+Ci08cD5Db3BpZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmdsX21lbTwvY29kZT48L2VtPgotIGludG8gdGhlIHRleHR1cmUgc3BlY2ZpZmllZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Ci0uICBUaGUgZm9ybWF0IG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KLQotaXMgc3BlY2lmaWVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfdHlwZTwvY29kZT48L2VtPgotLCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+d2lkdGg8L2NvZGU+PC9lbT4KLSBhbmQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmhlaWdodDwvY29kZT48L2VtPgotLjwvcD4KLTxwPklmIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5yZXNwZWNpZnk8L2NvZGU+PC9lbT4KLSBpcyA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiwgdGhlbiB0aGUgY29weSBpcyBwZXJmb3JtZWQgaW4gdGVybXMgb2YgdGhlIHRleHR1cmUKLWRhdGEuICBUaGlzIGlzIHVzZWZ1bCBmb3Igc3BsaXR0aW5nIFJHQkEgdGV4dHVyZXMgaW50byBSRyBvciBSIHRleHR1cmVzIG9yCi12aWNlIHZlcnNhLiBUaGUgcmVxdWlyZW1lbnQgZm9yIHRoaXMgdG8gc3VjY2VlZCBpcyB0aGF0IHRoZSBiYWNraW5nIHRleHR1cmUKLWRhdGEgbXVzdCBiZSB0aGUgc2FtZSBzaXplLCBpLmUuIHNheSBhIFJHQkE4IHRleHR1cmUgaXMgY29udmVydGVkIGludG8gYSBSRzgKLXRleHR1cmUsIHRoZW4gdGhlIFJHIHRleHR1cmUgbXVzdCBoYXZlIHR3aWNlIGFzIG1hbnkgcGl4ZWxzIGF2YWlsYWJsZSBmb3IKLW91dHB1dCBhcyB0aGUgUkdCQSB0ZXh0dXJlLjwvcD4KLTxwPk90aGVyd2lzZSwgaWYgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnJlc3BlY2lmeTwvY29kZT48L2VtPgotIGlzIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT4sIHRoZW4gdGhlIGNvcHkgaXMgcGVyZm9ybWVkIHBlciB0ZXhlbAotdXNpbmcgZ2xDb3B5VGV4SW1hZ2UuICBTZWUgdGhlIE9wZW5HTCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZQotbWFwcGluZ3MgYmV0d2VlbiB0ZXh0dXJlIGZvcm1hdHMuPC9wPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC42LjciPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfbWVtPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTE1lbW9yeSIgdGl0bGU9IkdzdEdMTWVtb3J5Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXhfaWQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5PcGVuR0wgdGV4dHVyZSBpZDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXhfdHlwZTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+d2lkdGg8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD53aWR0aCBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4X2lkPC9jb2RlPjwvZW0+Ci08L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aGVpZ2h0PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+aGVpZ2h0IG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KLTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdHJpZGU8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5zdHJpZGUgb2YgdGhlIGJhY2tpbmcgdGV4dHVyZSBkYXRhPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnJlc3BlY2lmeTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPndoZXRoZXIgdG8gY29weSB0aGUgZGF0YSBvciBjb3B5IHBlciB0ZXhlbDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC42LjgiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gV2hldGhlciB0aGUgY29weSBzdWNlZWRlZDwvcD4KLTwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCNHc3RBbGxvY2F0aW9uUGFyYW1zIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+ICpwYXJhbXM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT4gKnZhbGlnbjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QnVmZmVyLmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RCdWZmZXI8L3NwYW4+PC9hPiAqYnVmZmVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPkFkZHMgdGhlIHJlcXVpcmVkIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+cyB3aXRoIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gdG8KLTxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5idWZmZXI8L2NvZGU+PC9lbT4KLSBiYXNlZCBvbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5mbzwvY29kZT48L2VtPgotLiBUaGlzIHZlcnNpb24gaGFuZGxlcyBwYWRkaW5nIHRocm91Z2ggPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZhbGlnbjwvY29kZT48L2VtPgotLjwvcD4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgotPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmNvbnRleHQ8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBhcmFtczwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwjR3N0QWxsb2NhdGlvblBhcmFtcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRpb25QYXJhbXM8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWxpZ248L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9BbGlnbm1lbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0FsaWdubWVudDwvc3Bhbj48L2E+IGFwcGxpZWQgdG8gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmluZm88L2NvZGU+PC9lbT4KLTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5idWZmZXI8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEJ1ZmZlci5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0QnVmZmVyPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguNy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IHdoZXRoZXIgdGhlIG1lbW9yeSdzIHdlcmUgc3VjZXNzZnVsbHkgYWRkZWQuPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1tZW1vcnktc2V0dXAtd3JhcHBlZCI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWTCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgotZ3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xDb250ZXh0PC9zcGFuPjwvYT4gKmNvbnRleHQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvQWxpZ25tZW50Ij48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9BbGlnbm1lbnQ8L3NwYW4+PC9hPiAqdmFsaWduPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiBkYXRhW0dTVF9WSURFT19NQVhfUExBTkVTXTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+ICp0ZXh0dXJlc1tHU1RfVklERU9fTUFYX1BMQU5FU108L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+IHVzZXJfZGF0YTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRGF0YXNldHMuaHRtbCNHRGVzdHJveU5vdGlmeSI+PHNwYW4gY2xhc3M9InR5cGUiPkdEZXN0cm95Tm90aWZ5PC9zcGFuPjwvYT4gbm90aWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxwPldyYXBzIHBlciBwbGFuZSBkYXRhIHBvaW50ZXIgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmRhdGE8L2NvZGU+PC9lbT4KLSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluCi08ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dGV4dHVyZXM8L2NvZGU+PC9lbT4KLSBiYXNlZCBvbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5mbzwvY29kZT48L2VtPgotIGFuZCBwYWRkaW5nIGZyb20gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZhbGlnbjwvY29kZT48L2VtPgotLiBOb3RlIHRoYXQgdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5ub3RpZnk8L2NvZGU+PC9lbT4KLQotd2lsbCBiZSBjYWxsZWQgYXMgbWFueSB0aW1lIGFzIHRoZXJlIGlzIHBsYW5lcy48L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy44LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5jb250ZXh0PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWxpZ248L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlby5odG1sI0dzdFZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmRhdGE8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIGxpc3Qgb2YgcGVyIHBsYW5lIGRhdGEgcG9pbnRlcnM8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dGV4dHVyZXM8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gYSBsaXN0IG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+LiA8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+W3RyYW5zZmVyIG91dF08L3NwYW4+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD51c2VyX2RhdGE8L3A+PC90ZD4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD51c2VyIGRhdGEgZm9yIHRoZSBkZXN0cm95IGZ1bmN0aW9uPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5vdGlmeTwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPkEgZnVuY3Rpb24gY2FsbGVkIGVhY2ggdGltZSBhIG1lbW9yeSBpcyBmcmVlZDwvcD48L3RkPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC44LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Ci08cD4gd2hldGhlciB0aGUgbWVtb3J5J3Mgd2VyZSBzdWNlc3NmdWxseSBjcmVhdGVkLjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtdGV4dHVyZS10eXBlLWZyb20tZm9ybWF0Ij48L2E+PGgzPmdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXTCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj4KLWdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xDb250ZXh0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbnRleHQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTENvbnRleHQ8L3NwYW4+PC9hPiAqY29udGV4dDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0Zvcm1hdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvRm9ybWF0PC9zcGFuPjwvYT4gdl9mb3JtYXQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBwbGFuZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1pcy1nbC1tZW1vcnkiPjwvYT48aDM+Z3N0X2lzX2dsX21lbW9yecKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfaXNfZ2xfbWVtb3J5ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTxkaXYgY2xhc3M9InJlZnNlY3QzIj4KLTxhIG5hbWU9ImlkLTEuMi45LjE3LjguMTAuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KLTxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTcuOC4xMC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgotPHA+IHdoZXRoZXIgdGhlIG1lbW9yeSBhdCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bWVtPC9jb2RlPjwvZW0+Ci1pcyBhIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMTWVtb3J5IiB0aXRsZT0iR3N0R0xNZW1vcnkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeTwvc3Bhbj48L2E+PC9wPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMQWxsb2NhdG9yLXN0cnVjdCI+PC9hPjxoMz5Hc3RHTEFsbG9jYXRvcjwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQWxsb2NhdG9yIEdzdEdMQWxsb2NhdG9yOzwvcHJlPgotPHA+T3BhcXVlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xBbGxvY2F0b3I8L3NwYW4+PC9hPiBzdHJ1Y3Q8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMQWxsb2NhdG9yQ2xhc3MiPjwvYT48aDM+R3N0R0xBbGxvY2F0b3JDbGFzczwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IEdzdEdMQWxsb2NhdG9yQ2xhc3M7Ci08L3ByZT4KLTxwPlRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRvckNsYXNzIiB0aXRsZT0iR3N0R0xBbGxvY2F0b3JDbGFzcyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQWxsb2NhdG9yQ2xhc3M8L3NwYW4+PC9hPiBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YTwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR1NULUdMLU1FTU9SWS1BTExPQ0FUT1I6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfTUVNT1JZX0FMTE9DQVRPUjwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiAgICJHTE1lbW9yeSIKLTwvcHJlPgotPHA+VGhlIG5hbWUgb2YgdGhlIEdMIG1lbW9yeSBhbGxvY2F0b3I8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMTWVtb3J5Ij48L2E+PGgzPkdzdEdMTWVtb3J5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7Ci0gIEdzdEdMQmFzZUJ1ZmZlciAgICAgICBtZW07Ci0KLSAgZ3VpbnQgICAgICAgICAgICAgICAgIHRleF9pZDsKLSAgZ3VpbnQgICAgICAgICAgICAgICAgIHRleF90YXJnZXQ7Ci0gIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfdHlwZTsKLSAgR3N0VmlkZW9JbmZvICAgICAgICAgIGluZm87Ci0gIEdzdFZpZGVvQWxpZ25tZW50ICAgICB2YWxpZ247Ci0gIGd1aW50ICAgICAgICAgICAgICAgICBwbGFuZTsKLSAgZ2Zsb2F0ICAgICAgICAgICAgICAgIHRleF9zY2FsaW5nWzJdOwotfSBHc3RHTE1lbW9yeTsKLTwvcHJlPgotPHA+UmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBhIEdMIHRleHR1cmU8L3A+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xNy45LjUuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQmFzZUJ1ZmZlcjwvc3Bhbj7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5Lm1lbSI+PC9hPm1lbTwvY29kZT48L2VtPjs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIHBhcmVudCBvYmplY3Q8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+wqA8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RHTE1lbW9yeS50ZXgtaWQiPjwvYT50ZXhfaWQ8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBHTCB0ZXh0dXJlIGlkIGZvciB0aGlzIG1lbW9yeTwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnRleC10YXJnZXQiPjwvYT50ZXhfdGFyZ2V0PC9jb2RlPjwvZW0+OzwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD50aGUgR0wgdGV4dHVyZSB0YXJnZXQgZm9yIHRoaXMgbWVtb3J5PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvR0xUZXh0dXJlVHlwZTwvc3Bhbj7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnRleC10eXBlIj48L2E+dGV4X3R5cGU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB0ZXh0dXJlIHR5cGU8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0luZm88L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkuaW5mbyI+PC9hPmluZm88L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB0ZXh0dXJlJ3MgPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvLmh0bWwjR3N0VmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9uYW1lIj48cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW8uaHRtbCNHc3RWaWRlb0FsaWdubWVudCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFZpZGVvQWxpZ25tZW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnZhbGlnbiI+PC9hPnZhbGlnbjwvY29kZT48L2VtPjs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+ZGF0YSBhbGlnbm1lbnQgZm9yIHN5c3RlbSBtZW1vcnkgbWFwcGluZzwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT7CoDxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdEdMTWVtb3J5LnBsYW5lIj48L2E+cGxhbmU8L2NvZGU+PC9lbT47PC9wPjwvdGQ+Ci08dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfZGVzY3JpcHRpb24iPjxwPmRhdGEgcGxhbmUgaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmluZm88L2NvZGU+PC9lbT4KLTwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0R0xNZW1vcnkudGV4LXNjYWxpbmciPjwvYT50ZXhfc2NhbGluZzwvY29kZT48L2VtPlsyXTs8L3A+PC90ZD4KLTx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9kZXNjcmlwdGlvbiI+PHA+R0wgc2hhZGVyIHNjYWxpbmcgcGFyYW1ldGVycyBmb3IgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnZhbGlnbjwvY29kZT48L2VtPgotYW5kL29yIHdpZHRoL2hlaWdodDwvcD48L3RkPgotPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Ci08cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+LCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRvcjwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlclBvb2w8L3NwYW4+PC9hPjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmNiYTRkNQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwKQEAgLTAsMCArMSwzMjUgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5Hc3RHTE1lbW9yeVBCTzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9ImdsLmh0bWwiIHRpdGxlPSJPcGVuR0wgSGVscGVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIiB0aXRsZT0iR3N0R0xNZW1vcnkiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8udG9wX29mX3BhZ2UiPjwvYT5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2gyPgorPHA+R3N0R0xNZW1vcnlQQk8g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXM8L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgorPC90cj48L3RhYmxlPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWlzLWdsLW1lbW9yeS1wYm8iIHRpdGxlPSJnc3RfaXNfZ2xfbWVtb3J5X3Bib8KgKCkiPmdzdF9pc19nbF9tZW1vcnlfcGJvPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tY29weS1pbnRvLXRleHR1cmUiIHRpdGxlPSJnc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZcKgKCkiPmdzdF9nbF9tZW1vcnlfcGJvX2NvcHlfaW50b190ZXh0dXJlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1kb3dubG9hZC10cmFuc2ZlciIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVywqAoKSI+Z3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXI8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWluaXQtb25jZSIgdGl0bGU9ImdzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZcKgKCkiPmdzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWdsLW1lbW9yeS1wYm8tdXBsb2FkLXRyYW5zZmVyIiB0aXRsZT0iZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVywqAoKSI+Z3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGEgbmFtZT0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgorPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvci1zdHJ1Y3QiIHRpdGxlPSJHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciI+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3I8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MiPkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR1NULUdMLU1FTU9SWS1QQk8tQUxMT0NBVE9SLU5BTUU6Q0FQUyIgdGl0bGU9IkdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FIj5HU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRTwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj5Hc3RHTE1lbW9yeVBCTzwvYT48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEFsbG9jYXRvci5odG1sIj5Hc3RBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciI+R3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yPC9hPgorICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvciI+R3N0R0xNZW1vcnlBbGxvY2F0b3I8L2E+CisgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RHTE1lbW9yeVBCT0FsbG9jYXRvcgorPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2E+IGlzIGNyZWF0ZWQgb3Igd3JhcHBlZCB0aHJvdWdoIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktYWxsb2MiIHRpdGxlPSJnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2PCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYygpPC9jb2RlPjwvYT4KK3dpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiIHRpdGxlPSJzdHJ1Y3QgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczwvc3Bhbj48L2E+LjwvcD4KKzxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPIiB0aXRsZT0iR3N0R0xNZW1vcnlQQk8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTE1lbW9yeVBCTzwvc3Bhbj48L2E+IGlzIGNyZWF0ZWQgdGhyb3VnaCA8Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9nbF9tZW1vcnlfcGJvX2FsbG9jKCk8L2NvZGU+IG9yIHN5c3RlbSBtZW1vcnkgY2FuCitiZSB3cmFwcGVkIHRocm91Z2ggPGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfZ2xfbWVtb3J5X3Bib193cmFwcGVkKCk8L2NvZGU+LjwvcD4KKzxwPkRhdGEgaXMgdXBsb2FkZWQgb3IgZG93bmxvYWRlZCBmcm9tIHRoZSBHUFUgYXMgaXMgbmVjZXNzYXJ5LjwvcD4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1pcy1nbC1tZW1vcnktcGJvIj48L2E+PGgzPmdzdF9pc19nbF9tZW1vcnlfcGJvwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9pc19nbF9tZW1vcnlfcGJvICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0TWVtb3J5Lmh0bWwiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RNZW1vcnk8L3NwYW4+PC9hPiAqbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE5LjguMi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+bWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjkuMTkuOC4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gd2hldGhlciB0aGUgbWVtb3J5IGF0IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5tZW08L2NvZGU+PC9lbT4KK2lzIGEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk8iIHRpdGxlPSJHc3RHTE1lbW9yeVBCTyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMTWVtb3J5UEJPPC9zcGFuPjwvYT48L3A+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1wYm8tY29weS1pbnRvLXRleHR1cmUiPjwvYT48aDM+Z3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnlQQk88L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IHRleF9pZDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPiB0YXJnZXQ8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVR5cGU8L3NwYW4+IHRleF90eXBlPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB3aWR0aDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gaGVpZ2h0PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBzdHJpZGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gcmVzcGVjaWZ5PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNvcGllcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Z2xfbWVtPC9jb2RlPjwvZW0+CisgaW50byB0aGUgdGV4dHVyZSBzcGVjZmlmaWVkIGJ5IDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KKy4gIFRoZSBmb3JtYXQgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorCitpcyBzcGVjaWZpZWQgYnkgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF90eXBlPC9jb2RlPjwvZW0+CissIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53aWR0aDwvY29kZT48L2VtPgorIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aGVpZ2h0PC9jb2RlPjwvZW0+CisuPC9wPgorPHA+SWYgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnJlc3BlY2lmeTwvY29kZT48L2VtPgorIGlzIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+LCB0aGVuIHRoZSBjb3B5IGlzIHBlcmZvcm1lZCBpbiB0ZXJtcyBvZiB0aGUgdGV4dHVyZQorZGF0YS4gIFRoaXMgaXMgdXNlZnVsIGZvciBzcGxpdHRpbmcgUkdCQSB0ZXh0dXJlcyBpbnRvIFJHIG9yIFIgdGV4dHVyZXMgb3IKK3ZpY2UgdmVyc2EuIFRoZSByZXF1aXJlbWVudCBmb3IgdGhpcyB0byBzdWNjZWVkIGlzIHRoYXQgdGhlIGJhY2tpbmcgdGV4dHVyZQorZGF0YSBtdXN0IGJlIHRoZSBzYW1lIHNpemUsIGkuZS4gc2F5IGEgUkdCQTggdGV4dHVyZSBpcyBjb252ZXJ0ZWQgaW50byBhIFJHOAordGV4dHVyZSwgdGhlbiB0aGUgUkcgdGV4dHVyZSBtdXN0IGhhdmUgdHdpY2UgYXMgbWFueSBwaXhlbHMgYXZhaWxhYmxlIGZvcgorb3V0cHV0IGFzIHRoZSBSR0JBIHRleHR1cmUuPC9wPgorPHA+T3RoZXJ3aXNlLCBpZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cmVzcGVjaWZ5PC9jb2RlPjwvZW0+CisgaXMgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPiwgdGhlbiB0aGUgY29weSBpcyBwZXJmb3JtZWQgcGVyIHRleGVsCit1c2luZyBnbENvcHlUZXhJbWFnZS4gIFNlZSB0aGUgT3BlbkdMIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlCittYXBwaW5ncyBiZXR3ZWVuIHRleHR1cmUgZm9ybWF0cy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOS44LjMuNyI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfbWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnlQQk88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXhfaWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgZGVzdGluYXRpb24gdGV4dHVyZSBpZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50YXJnZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgZGVzdGluYXRpb24gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR3N0R0xUZXh0dXJlVGFyZ2V0IiB0aXRsZT0iZW51bSBHc3RHTFRleHR1cmVUYXJnZXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFRleHR1cmVUYXJnZXQ8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD50ZXhfdHlwZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSBkZXN0aW5hdGlvbiA8c3BhbiBjbGFzcz0idHlwZSI+R3N0VmlkZW9HTFRleHR1cmVUeXBlPC9zcGFuPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD53aWR0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPndpZHRoIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50ZXhfaWQ8L2NvZGU+PC9lbT4KKzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5oZWlnaHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5oZWlnaHQgb2YgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnRleF9pZDwvY29kZT48L2VtPgorPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnN0cmlkZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnN0cmlkZSBvZiB0aGUgYmFja2luZyB0ZXh0dXJlIGRhdGE8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cmVzcGVjaWZ5PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+d2hldGhlciB0byBjb3B5IHRoZSBkYXRhIG9yIGNvcHkgcGVyIHRleGVsPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuOS4xOS44LjMuOCI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBXaGV0aGVyIHRoZSBjb3B5IHN1Y2VlZGVkPC9wPgorPC9kaXY+Cis8cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAxLjg8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktcGJvLWRvd25sb2FkLXRyYW5zZmVyIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVywqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnlQQk88L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlRyYW5zZmVyIHRoZSB0ZXh0dXJlIGRhdGEgZnJvbSB0aGUgUEJPIGludG8gdGhlIHRleHR1cmUgaWYgbmVjZXNzYXJ5LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi45LjE5LjguNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+Z2xfbWVtPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnlQQk88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxwIGNsYXNzPSJzaW5jZSI+U2luY2U6IDEuODwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LWdsLW1lbW9yeS1wYm8taW5pdC1vbmNlIj48L2E+PGgzPmdzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9nbF9tZW1vcnlfcGJvX2luaXRfb25jZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1nbC1tZW1vcnktcGJvLXVwbG9hZC10cmFuc2ZlciI+PC9hPjxoMz5nc3RfZ2xfbWVtb3J5X3Bib191cGxvYWRfdHJhbnNmZXLCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfZ2xfbWVtb3J5X3Bib191cGxvYWRfdHJhbnNmZXIgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCTyIgdGl0bGU9IkdzdEdMTWVtb3J5UEJPIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnlQQk88L3NwYW4+PC9hPiAqZ2xfbWVtPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3Itc3RydWN0Ij48L2E+PGgzPkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IgR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3I7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MiPjwvYT48aDM+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzczwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgeworICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKK30gR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzczsKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtR0wtTUVNT1JZLVBCTy1BTExPQ0FUT1ItTkFNRTpDQVBTIj48L2E+PGgzPkdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FICAgIkdMTWVtb3J5UEJPIgorPC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdEdMTWVtb3J5UEJPIj48L2E+PGgzPkdzdEdMTWVtb3J5UEJPPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCB7CisgIEdzdEdMTWVtb3J5ICAgICAgbWVtOworfSBHc3RHTE1lbW9yeVBCTzsKKzwvcHJlPgorPHA+UHJpdmF0ZSBpbnN0YW5jZTwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RNZW1vcnkuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE1lbW9yeTwvc3Bhbj48L2E+LCA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RBbGxvY2F0b3IuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEFsbG9jYXRvcjwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xCdWZmZXJQb29sLmh0bWwiIHRpdGxlPSJHc3RHTEJ1ZmZlclBvb2wiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTEJ1ZmZlclBvb2w8L3NwYW4+PC9hPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MjgzZWYuLjAwMDAwMDAKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwMDUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHRpdGxlPkdzdEdMU2hhZGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iZ2wuaHRtbCIgdGl0bGU9Ik9wZW5HTCBIZWxwZXIgTGlicmFyeSI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiIHRpdGxlPSJHc3RHTE1lbW9yeSI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCIgdGl0bGU9IkdzdEdMU3luY01ldGEiPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD4KLTxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Ci08dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KLTxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+Ci08L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdsLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgotPC90cj48L3RhYmxlPgotPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci50b3Bfb2ZfcGFnZSI+PC9hPkdzdEdMU2hhZGVyPC9zcGFuPjwvaDI+Ci08cD5Hc3RHTFNoYWRlcjwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Ci08Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItUXVhcmtzLmh0bWwjR1F1YXJrIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdRdWFyazwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZXJyb3ItcXVhcmsiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrwqAoKSI+Z3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFyazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJkZWZpbmVfa2V5d29yZCI+I2RlZmluZTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRVJST1I6Q0FQUyIgdGl0bGU9IkdTVF9HTF9TSEFERVJfRVJST1IiPkdTVF9HTF9TSEFERVJfRVJST1I8L2E+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5pbnQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXJ2YXJpYWJsZS1zZXQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0wqAoKSI+Z3N0X2dsX3NoYWRlcnZhcmlhYmxlX3NldDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+aW50PC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVydmFyaWFibGVzLXBhcnNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZcKgKCkiPmdzdF9nbF9zaGFkZXJ2YXJpYWJsZXNfcGFyc2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+wqAqCi08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9uZXfCoCgpIj5nc3RfZ2xfc2hhZGVyX25ldzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdmVydGV4LXNvdXJjZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC1mcmFnbWVudC1zb3VyY2UiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2XCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1nZXQtdmVydGV4LXNvdXJjZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X3ZlcnRleF9zb3VyY2XCoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCi08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWZyYWdtZW50LXNvdXJjZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZcKgKCkiPmdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+aW50PC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlwqAoKSI+Z3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LWFjdGl2ZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X2FjdGl2ZcKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X2FjdGl2ZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItaXMtY29tcGlsZWQiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkwqAoKSI+Z3N0X2dsX3NoYWRlcl9pc19jb21waWxlZDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZcKgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hbmQtY2hlY2siIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX2FuZF9jaGVjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hbGwtd2l0aC1hdHRyaWJzLWFuZC1jaGVjayIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVja8KgKCkiPmdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtZi1hbmQtY2hlY2siIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X2ZfYW5kX2NoZWNrwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF9mX2FuZF9jaGVjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdi1hbmQtY2hlY2siIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrwqAoKSI+Z3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdmYtYW5kLWNoZWNrIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92Zl9hbmRfY2hlY2vCoCgpIj5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9yZWxlYXNlwqAoKSI+Z3N0X2dsX3NoYWRlcl9yZWxlYXNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXVzZSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfdXNlwqAoKSI+Z3N0X2dsX3NoYWRlcl91c2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWl2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmkiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2Y8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2nCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2l2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmwqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRmdsKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80acKgKCkiPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGl2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMngzZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4NGZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM2Z2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4MmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4NGZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3g0ZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgotPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgotPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgotPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDJmdiIgdGl0bGU9ImdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2wqAoKSI+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnY8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4M2Z2IiB0aXRsZT0iZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnbCoCgpIj5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgotPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Ci08YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpIj5nc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Ci08L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Ci08c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KLTxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYmluZC1hdHRyaWJ1dGUtbG9jYXRpb24iIHRpdGxlPSJnc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKSI+Z3N0X2dsX3NoYWRlcl9iaW5kX2F0dHJpYnV0ZV9sb2NhdGlvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KLTxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KLTxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tYWN0aXZlIiB0aXRsZT0iVGhlIOKAnGFjdGl2ZeKAnSBwcm9wZXJ0eSI+YWN0aXZlPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1jb21waWxlZCIgdGl0bGU9IlRoZSDigJxjb21waWxlZOKAnSBwcm9wZXJ0eSI+Y29tcGlsZWQ8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQ8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Ci08YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWZyYWdtZW50LXNyYyIgdGl0bGU9IlRoZSDigJxmcmFnbWVudC1zcmPigJ0gcHJvcGVydHkiPmZyYWdtZW50LXNyYzwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgotPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS12ZXJ0ZXgtc3JjIiB0aXRsZT0iVGhlIOKAnHZlcnRleC1zcmPigJ0gcHJvcGVydHkiPnZlcnRleC1zcmM8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxhIG5hbWU9IkdzdEdMU2hhZGVyIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyRXJyb3IiIHRpdGxlPSJlbnVtIEdzdEdMU2hhZGVyRXJyb3IiPkdzdEdMU2hhZGVyRXJyb3I8L2E+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPmVudW08L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlclNvdXJjZVR5cGUiIHRpdGxlPSJlbnVtIEdzdEdMU2hhZGVyU291cmNlVHlwZSI+R3N0R0xTaGFkZXJTb3VyY2VUeXBlPC9hPjwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVydmFyaWFibGUtZGVzYyIgdGl0bGU9InN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyI+Z3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2M8L2E+PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItc3RydWN0IiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPjwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0R0xTaGFkZXIKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWVycm9yLXF1YXJrIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfZXJyb3JfcXVhcmvCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVF1YXJrcy5odG1sI0dRdWFyayI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HUXVhcms8L3NwYW4+PC9hPgotZ3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFyayAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj52b2lkPC9zcGFuPjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdTVC1HTC1TSEFERVItRVJST1I6Q0FQUyI+PC9hPjxoMz5HU1RfR0xfU0hBREVSX0VSUk9SPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4jZGVmaW5lIEdTVF9HTF9TSEFERVJfRVJST1IgKGdzdF9nbF9zaGFkZXJfZXJyb3JfcXVhcmsgKCkpCi08L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLXNldCI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5pbnQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPnN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYzwvc3Bhbj4gKnJldDwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXJ2YXJpYWJsZXMtcGFyc2UiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZcKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+aW50PC9zcGFuPgotZ3N0X2dsX3NoYWRlcnZhcmlhYmxlc19wYXJzZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5jaGFyPC9zcGFuPiAqdmFyaWFibGVzPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5pbnQ8L3NwYW4+ICgqX3NldHZhcmlhYmxlKSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqIHYpPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1uZXciPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9uZXfCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfc2hhZGVyX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTENvbnRleHQuaHRtbCIgdGl0bGU9IkdzdEdMQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMQ29udGV4dDwvc3Bhbj48L2E+ICpjb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdmVydGV4LXNvdXJjZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnNyYzwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LWZyYWdtZW50LXNvdXJjZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2XCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKnNyYzwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItZ2V0LXZlcnRleC1zb3VyY2UiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9nZXRfdmVydGV4X3NvdXJjZcKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCi1nc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWdldC1mcmFnbWVudC1zb3VyY2UiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9nZXRfZnJhZ21lbnRfc291cmNlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKLWdzdF9nbF9zaGFkZXJfZ2V0X2ZyYWdtZW50X3NvdXJjZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1nZXQtcHJvZ3JhbS1oYW5kbGUiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9nZXRfcHJvZ3JhbV9oYW5kbGXCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmludDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfZ2V0X3Byb2dyYW1faGFuZGxlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC1hY3RpdmUiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfYWN0aXZlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfYWN0aXZlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IGFjdGl2ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItaXMtY29tcGlsZWQiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9pc19jb21waWxlZMKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfc2hhZGVyX2lzX2NvbXBpbGVkICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9jb21waWxlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAqKmVycm9yPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1jb21waWxlLWFuZC1jaGVjayI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbmRfY2hlY2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpzb3VyY2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXJTb3VyY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RHTFNoYWRlclNvdXJjZVR5cGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlclNvdXJjZVR5cGU8L3NwYW4+PC9hPiB0eXBlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1jb21waWxlLWFsbC13aXRoLWF0dHJpYnMtYW5kLWNoZWNrIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVja8KgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYWxsX3dpdGhfYXR0cmlic19hbmRfY2hlY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqdl9zcmM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpmX3NyYzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IG5fYXR0cmliczwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmF0dHJpYl9uYW1lc1tdPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMaW50PC9zcGFuPiBhdHRyaWJfbG9jc1tdPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC1mLWFuZC1jaGVjayI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X2ZfYW5kX2NoZWNrwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfZl9hbmRfY2hlY2sKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqdl9zcmM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBuX2F0dHJpYnM8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICphdHRyaWJfbmFtZXNbXTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTGludDwvc3Bhbj4gYXR0cmliX2xvY3NbXTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdi1hbmQtY2hlY2siPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVja8KgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKmZfc3JjPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMaW50PC9zcGFuPiAqcG9zX2xvYzwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTGludDwvc3Bhbj4gKnRleF9sb2M8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LXZmLWFuZC1jaGVjayI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVja8KgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Ci1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjawotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R0xpbnQ8L3NwYW4+ICpwb3NfbG9jPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdMaW50PC9zcGFuPiAqdGV4X2xvYzwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItcmVsZWFzZSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3JlbGVhc2XCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3JlbGVhc2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItdXNlIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfdXNlwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl91c2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWkiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xacKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYxPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJpdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMml2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2YiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2YgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYyPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjA8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gdjI8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNpdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2l2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gdjE8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+IHYyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiB2MzwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZnYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGkiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80acKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYwPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYxPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHYzPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aXbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMmZ2ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4M2Z2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4NGZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJ4NGZ2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfMng0ZnYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM2Z2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3gyZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfM3gyZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdsKgKCk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KLWdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzN4NGZ2Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiI+PC9hPjxoMz5nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnYgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiBjb3VudDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT4gdHJhbnNwb3NlPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dmbG9hdCI+PHNwYW4gY2xhc3M9InR5cGUiPmdmbG9hdDwvc3Bhbj48L2E+ICp2YWx1ZTwvY29kZT48L2VtPik7PC9wcmU+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2Ij48L2E+PGgzPmdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzR4MmZ2wqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgotZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgyZnYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xTaGFkZXI8L3NwYW4+PC9hPiAqc2hhZGVyPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqbmFtZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGNvdW50PC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB0cmFuc3Bvc2U8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Zsb2F0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2Zsb2F0PC9zcGFuPjwvYT4gKnZhbHVlPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNHgzZnbCoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gY291bnQ8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IHRyYW5zcG9zZTwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZmxvYXQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZmxvYXQ8L3NwYW4+PC9hPiAqdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iPjwvYT48aDM+Z3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uwqAoKTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Ci1nc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEdMU2hhZGVyPC9zcGFuPjwvYT4gKnNoYWRlcjwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4pOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIj48L2E+PGgzPmdzdF9nbF9zaGFkZXJfYmluZF9hdHRyaWJ1dGVfbG9jYXRpb27CoCgpPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Ci1nc3RfZ2xfc2hhZGVyX2JpbmRfYXR0cmlidXRlX2xvY2F0aW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RHTFNoYWRlcjwvc3Bhbj48L2E+ICpzaGFkZXI8L2NvZGU+PC9lbT4sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBpbmRleDwvY29kZT48L2VtPiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICpuYW1lPC9jb2RlPjwvZW0+KTs8L3ByZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xTaGFkZXJFcnJvciI+PC9hPjxoMz5lbnVtIEdzdEdMU2hhZGVyRXJyb3I8L2gzPgotPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjkuMTguMTAuMi4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+Ci08Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgotPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfYW5ub3RhdGlvbnMiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVNIQURFUi1FUlJPUi1DT01QSUxFOkNBUFMiPjwvYT5HU1RfR0xfU0hBREVSX0VSUk9SX0NPTVBJTEU8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVNIQURFUi1FUlJPUi1MSU5LOkNBUFMiPjwvYT5HU1RfR0xfU0hBREVSX0VSUk9SX0xJTks8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVNIQURFUi1FUlJPUi1QUk9HUkFNOkNBUFMiPjwvYT5HU1RfR0xfU0hBREVSX0VSUk9SX1BST0dSQU08L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMU2hhZGVyU291cmNlVHlwZSI+PC9hPjxoMz5lbnVtIEdzdEdMU2hhZGVyU291cmNlVHlwZTwvaDM+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Ci08YSBuYW1lPSJpZC0xLjIuOS4xOC4xMC4zLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KLTxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtR0wtU0hBREVSLUZSQUdNRU5ULVNPVVJDRTpDQVBTIj48L2E+R1NUX0dMX1NIQURFUl9GUkFHTUVOVF9TT1VSQ0U8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULUdMLVNIQURFUi1WRVJURVgtU09VUkNFOkNBUFMiPjwvYT5HU1RfR0xfU0hBREVSX1ZFUlRFWF9TT1VSQ0U8L3A+PC90ZD4KLTx0ZD7CoDwvdGQ+Ci08dGQ+wqA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImdzdC1nbC1zaGFkZXJ2YXJpYWJsZS1kZXNjIj48L2E+PGgzPnN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYzwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjOzwvcHJlPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RHTFNoYWRlci1zdHJ1Y3QiPjwvYT48aDM+R3N0R0xTaGFkZXI8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RHTFNoYWRlciBHc3RHTFNoYWRlcjs8L3ByZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5wcm9wZXJ0eS1kZXRhaWxzIj48L2E+PGgyPlByb3BlcnR5IERldGFpbHM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xTaGFkZXItLWFjdGl2ZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGFjdGl2ZeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcYWN0aXZl4oCdICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3ByZT4KLTxwPkVuYWJsZS9EaXNhYmxlIHRoZSBzaGFkZXIuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IE5VTEw8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMU2hhZGVyLS1jb21waWxlZCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGNvbXBpbGVk4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxjb21waWxlZOKAnSAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgotPHA+U2hhZGVyIGNvbXBpbGUgYW5kIGxpbmsgc3RhdHVzLjwvcD4KLTxwPkZsYWdzOiBSZWFkPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogRkFMU0U8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEdMU2hhZGVyLS1mcmFnbWVudC1zcmMiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxmcmFnbWVudC1zcmPigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGZyYWdtZW50LXNyY+KAnSAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC9wcmU+Ci08cD5HTFNMIEZyYWdtZW50IFNoYWRlciBzb3VyY2UgY29kZS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogTlVMTDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0R0xTaGFkZXItLXZlcnRleC1zcmMiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJx2ZXJ0ZXgtc3Jj4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJx2ZXJ0ZXgtc3Jj4oCdICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjwvcHJlPgotPHA+R0xTTCBWZXJ0ZXggU2hhZGVyIHNvdXJjZSBjb2RlLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBOVUxMPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdG1wZWd2aWRlb21ldGEuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdG1wZWd2aWRlb21ldGEuaHRtbAppbmRleCA0YzFlZGZkLi4wYzZiYzkwIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RtcGVndmlkZW9tZXRhLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0bXBlZ3ZpZGVvbWV0YS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Z3N0bXBlZ3ZpZGVvbWV0YTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjb2RlY3BhcnNlcnMuaHRtbCIgdGl0bGU9IkJpdHN0cmVhbSBwYXJzaW5nIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy12YzFwYXJzZXIuaHRtbCIgdGl0bGU9InZjMXBhcnNlciI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RtcGVndmlkZW9tZXRhLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC03Myw3ICs3Myw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdG1wZWd2aWRlb21ldGEub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEyMSw3ICsxMjEsNyBAQAogPHA+UHJvdmlkZWQgc3RydWN0dXJlcyBtdXN0IGVpdGhlciBiZSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiBvciBHU2xpY2UtYWxsb2NhdGVkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjguNy40LjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNzksNyArMTc5LDcgQEAKIElmIGVsZW1lbnRzIHdpc2ggdG8gdXNlIHRob3NlIGZvciBsb25nZXIsIHRoZXkgYXJlIHJlcXVpcmVkIHRvIG1ha2UgYSBjb3B5LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjguOC4yLjciPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhODBjOTAKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sCkBAIC0wLDAgKzEsOTMgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KKzxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KKzxsaW5rIHJlbD0idXAiIGhyZWY9InBsYXllci5odG1sIiB0aXRsZT0iUGxheWVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0icGxheWVyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci50b3Bfb2ZfcGFnZSI+PC9hPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyPC9zcGFuPjwvaDI+Cis8cD5nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlciDigJQgUGxheWVyIEdMaWIgTWFpbkNvbnRleHQgZGlzcGF0Y2hlcjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sI2dzdC1wbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXItbmV3IiB0aXRsZT0iZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXfCoCgpIj5nc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLW5ldyI+PC9hPjxoMz5nc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ld8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItVGhlLU1haW4tRXZlbnQtTG9vcC5odG1sI0dNYWluQ29udGV4dCI+PHNwYW4gY2xhc3M9InR5cGUiPkdNYWluQ29udGV4dDwvc3Bhbj48L2E+ICphcHBsaWNhdGlvbl9jb250ZXh0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNyZWF0ZXMgYSBuZXcgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciB0aGF0IHVzZXMgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmFwcGxpY2F0aW9uX2NvbnRleHQ8L2NvZGU+PC9lbT4KKywKK29yIHRoZSB0aHJlYWQgZGVmYXVsdCBvbmUgaWYgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4gaXMgdXNlZC4gU2VlIDxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3BsYXllcl9uZXdfZnVsbCgpPC9jb2RlPi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNC41LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmFwcGxpY2F0aW9uX2NvbnRleHQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gR01haW5Db250ZXh0IHRvIHVzZSBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPi4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNC41LjIuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbmV3IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIzNzAxNDkKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwKQEAgLTAsMCArMSw5NjEgQEAKKzwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgorPGh0bWw+Cis8aGVhZD4KKzxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KKzx0aXRsZT5nc3RwbGF5ZXItbWVkaWFpbmZvOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0icGxheWVyLmh0bWwiIHRpdGxlPSJQbGF5ZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIiB0aXRsZT0iZ3N0cGxheWVyIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCIgdGl0bGU9ImdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0icGxheWVyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby50b3Bfb2ZfcGFnZSI+PC9hPmdzdHBsYXllci1tZWRpYWluZm88L3NwYW4+PC9oMj4KKzxwPmdzdHBsYXllci1tZWRpYWluZm8g4oCUIFBsYXllciBNZWRpYSBJbmZvcm1hdGlvbjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF91cmnCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyaTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENsb2NrLmh0bWwjR3N0Q2xvY2tUaW1lIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENsb2NrVGltZTwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1kdXJhdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb27CoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC10aXRsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGl0bGXCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1jb250YWluZXItZm9ybWF0IiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0wqAoKSI+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8taXMtc2Vla2FibGUiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGXCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RTYW1wbGUuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RTYW1wbGU8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtaW1hZ2Utc2FtcGxlIiB0aXRsZT0iZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGXCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFRhZ0xpc3QuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RUYWdMaXN0PC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRhZ3MiIHRpdGxlPSJnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3PCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3M8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HTGlzdDwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1zdHJlYW0tbGlzdCIgdGl0bGU9ImdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3TCoCgpIj5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3N0cmVhbV9saXN0PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtaW5kZXgiIHRpdGxlPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleMKgKCkiPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2Fwcy5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENhcHM8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWNhcHMiIHRpdGxlPSJnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzwqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwczwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdFRhZ0xpc3QuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RUYWdMaXN0PC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC10YWdzIiB0aXRsZT0iZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFnc8KgKCkiPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3M8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1jb2RlYyIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjwqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1zdHJlYW0tdHlwZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlwqAoKSI+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWJpdHJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2JpdHJhdGXCoCgpIj5nc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2JpdHJhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWNoYW5uZWxzIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVsc8KgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHM8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWxhbmd1YWdlIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZcKgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2U8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LW1heC1iaXRyYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZcKgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbWF4X2JpdHJhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LXNhbXBsZS1yYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZcKgKCkiPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWJpdHJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWhlaWdodCIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfaGVpZ2h0wqAoKSI+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9oZWlnaHQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LXdpZHRoIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aMKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfd2lkdGg8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1mcmFtZXJhdGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2ZyYW1lcmF0ZcKgKCkiPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1tYXgtYml0cmF0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X21heF9iaXRyYXRlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtcGl4ZWwtYXNwZWN0LXJhdGlvIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9waXhlbF9hc3BlY3RfcmF0aW/CoCgpIj5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpbzwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3VidGl0bGUtaW5mby1nZXQtbGFuZ3VhZ2UiIHRpdGxlPSJnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlwqAoKSI+Z3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF9sYW5ndWFnZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxhIG5hbWU9IkdzdFBsYXllck1lZGlhSW5mbyI+PC9hPjxhIG5hbWU9IkdzdFBsYXllclN0cmVhbUluZm8iPjwvYT48YSBuYW1lPSJHc3RQbGF5ZXJBdWRpb0luZm8iPjwvYT48YSBuYW1lPSJHc3RQbGF5ZXJWaWRlb0luZm8iPjwvYT48YSBuYW1lPSJHc3RQbGF5ZXJTdWJ0aXRsZUluZm8iPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllck1lZGlhSW5mbyI+R3N0UGxheWVyTWVkaWFJbmZvPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mby1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJTdHJlYW1JbmZvIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllckF1ZGlvSW5mbyI+R3N0UGxheWVyQXVkaW9JbmZvPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllclZpZGVvSW5mbyI+R3N0UGxheWVyVmlkZW9JbmZvPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvLXN0cnVjdCIgdGl0bGU9IkdzdFBsYXllclN1YnRpdGxlSW5mbyI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9hPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KKzxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IEdzdFBsYXllck1lZGlhSW5mbworICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFBsYXllclN0cmVhbUluZm8KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyQXVkaW9JbmZvCisgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IEdzdFBsYXllclN1YnRpdGxlSW5mbworICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RQbGF5ZXJWaWRlb0luZm8KKzwvcHJlPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC11cmkiPjwvYT48aDM+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF91cmnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF91cmkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIFVSSSBhc3NvY2lhdGVkIHdpdGggPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1kdXJhdGlvbiI+PC9hPjxoMz5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2xvY2suaHRtbCNHc3RDbG9ja1RpbWUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2xvY2tUaW1lPC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfZHVyYXRpb24gKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjMuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4zLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gZHVyYXRpb24gb2YgdGhlIG1lZGlhLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRpdGxlIj48L2E+PGgzPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGl0bGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgbWVkaWEgdGl0bGUuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtY29udGFpbmVyLWZvcm1hdCI+PC9hPjxoMz5nc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9jb250YWluZXJfZm9ybWF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi41LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGNvbnRhaW5lciBmb3JtYXQuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1pcy1zZWVrYWJsZSI+PC9hPjxoMz5nc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2lzX3NlZWthYmxlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi42LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHRoZSBtZWRpYSBpcyBzZWVrYWJsZS48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1pbWFnZS1zYW1wbGUiPjwvYT48aDM+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RTYW1wbGUuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RTYW1wbGU8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnVuY3Rpb24gdG8gZ2V0IHRoZSBpbWFnZSAob3IgcHJldmlldy1pbWFnZSkgc3RvcmVkIGluIHRhZ2xpc3QuCitBcHBsaWNhdGlvbiBjYW4gdXNlIGdzdF9zYW1wbGVfKl8oKSBBUEkncyB0byBnZXQgY2FwcywgYnVmZmVyIGV0Yy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuNy42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IEdzdFNhbXBsZSBvciBOVUxMLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRhZ3MiPjwvYT48aDM+Z3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90YWdzwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0VGFnTGlzdC5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFRhZ0xpc3Q8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90YWdzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi44LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuOC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSB0YWdzIGNvbnRhaW5lZCBpbiBtZWRpYSBpbmZvLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXN0cmVhbS1saXN0Ij48L2E+PGgzPmdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3TCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HTGlzdDwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3N0cmVhbV9saXN0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi45LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuOS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IEEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTGlzdDwvc3Bhbj48L2E+IG9mCittYXRjaGluZyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9IkdlbmVyaWNzIGFuZCBkZWZpbmluZyBlbGVtZW50cyBvZiBjb250YWluZXJzIGFuZCBhcnJheXMuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+ZWxlbWVudC10eXBlPC9zcGFuPjwvYWNyb255bT4gR3N0UGxheWVyU3RyZWFtSW5mb108L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWluZGV4Ij48L2E+PGgzPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4wqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Citnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5GdW5jdGlvbiB0byBnZXQgc3RyZWFtIGluZGV4IGZyb20gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+IGluc3RhbmNlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBzdHJlYW0gaW5kZXggb2YgdGhpcyBzdHJlYW0uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWNhcHMiPjwvYT48aDM+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2Fwc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDYXBzPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTEuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjExLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENhcHMuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdENhcHM8L3NwYW4+PC9hPiBvZiB0aGUgc3RyZWFtLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC10YWdzIj48L2E+PGgzPmdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3PCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RUYWdMaXN0Lmh0bWwiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0VGFnTGlzdDwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjEyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xMi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSB0YWdzIGNvbnRhaW5lZCBpbiB0aGlzIHN0cmVhbS4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY29kZWMiPjwvYT48aDM+Z3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QSBzdHJpbmcgZGVzY3JpYmluZyBjb2RlYyB1c2VkIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTMuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBjb2RlYyBzdHJpbmcgb3IgTlVMTCBvbiB1bmtub3duLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC1zdHJlYW0tdHlwZSI+PC9hPjxoMz5nc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkZ1bmN0aW9uIHRvIHJldHVybiBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGUgc3RyZWFtIHR5cGUKK29mIHRoZSBnaXZlbiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aW5mbzwvY29kZT48L2VtPgorIChleDogImF1ZGlvIiwgInZpZGVvIiwgInN1YnRpdGxlIik8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xNC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIGh1bWFuIHJlYWRhYmxlIG5hbWU8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1iaXRyYXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfYml0cmF0ZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9iaXRyYXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE1LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGF1ZGlvIGJpdHJhdGUgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1jaGFubmVscyI+PC9hPjxoMz5nc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2NoYW5uZWxzwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Citnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2NoYW5uZWxzICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE2LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIG51bWJlciBvZiBhdWRpbyBjaGFubmVscyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWxhbmd1YWdlIj48L2E+PGgzPmdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTcuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xNy41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBsYW5ndWFnZSBvZiB0aGUgc3RyZWFtLCBvciBOVUxMIGlmIHVua25vd24uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbWF4LWJpdHJhdGUiPjwvYT48aDM+Z3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdpbnQ8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMTguNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xOC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBhdWRpbyBtYXhpbXVtIGJpdHJhdGUgaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1zYW1wbGUtcmF0ZSI+PC9hPjxoMz5nc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3NhbXBsZV9yYXRlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Citnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X3NhbXBsZV9yYXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4xOS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjE5LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGF1ZGlvIHNhbXBsZSByYXRlIGluIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT4uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtYml0cmF0ZSI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2JpdHJhdGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfYml0cmF0ZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMjAuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yMC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBjdXJyZW50IGJpdHJhdGUgb2YgdmlkZW8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1oZWlnaHQiPjwvYT48aDM+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9oZWlnaHTCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfaGVpZ2h0ICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yMS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjIxLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGhlaWdodCBvZiB2aWRlbyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LXdpZHRoIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfd2lkdGjCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5naW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfd2lkdGggKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjIyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgd2lkdGggb2YgdmlkZW8gaW4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1mcmFtZXJhdGUiPjwvYT48aDM+Z3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2ZyYW1lcmF0ZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICpmcHNfbjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKmZwc19kPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1tYXgtYml0cmF0ZSI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X21heF9iaXRyYXRlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2ludDwvc3Bhbj48L2E+Citnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X21heF9iaXRyYXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjI0LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIG1heGltdW0gYml0cmF0ZSBvZiB2aWRlbyBpbiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LXBpeGVsLWFzcGVjdC1yYXRpbyI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpb8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiAqcGFyX248L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+ICpwYXJfZDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5SZXR1cm5zIHRoZSBwaXhlbCBhc3BlY3QgcmF0aW8gaW4gPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBhcl9uPC9jb2RlPjwvZW0+CisgYW5kIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5wYXJfZDwvY29kZT48L2VtPgorPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjMuMTIuMjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJfbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBudW1lcmF0b3IuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IlBhcmFtZXRlciBmb3IgcmV0dXJuaW5nIHJlc3VsdHMuIERlZmF1bHQgaXMgdHJhbnNmZXIgZnVsbC4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5vdXQ8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wYXJfZDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBkZW5vbWluYXRvci4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iUGFyYW1ldGVyIGZvciByZXR1cm5pbmcgcmVzdWx0cy4gRGVmYXVsdCBpcyB0cmFuc2ZlciBmdWxsLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPm91dDwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc3VidGl0bGUtaW5mby1nZXQtbGFuZ3VhZ2UiPjwvYT48aDM+Z3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF9sYW5ndWFnZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdWJ0aXRsZUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMy4xMi4yNi40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdWJ0aXRsZUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4zLjEyLjI2LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIGxhbmd1YWdlIG9mIHRoZSBzdHJlYW0sIG9yIE5VTEwgaWYgdW5rbm93bi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJNZWRpYUluZm8tc3RydWN0Ij48L2E+PGgzPkdzdFBsYXllck1lZGlhSW5mbzwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllck1lZGlhSW5mbyBHc3RQbGF5ZXJNZWRpYUluZm87PC9wcmU+Cis8cD5TdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgbWVkaWEgaW5mb3JtYXRpb24gb2YgYSBVUkkuPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJTdHJlYW1JbmZvLXN0cnVjdCI+PC9hPjxoMz5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyU3RyZWFtSW5mbyBHc3RQbGF5ZXJTdHJlYW1JbmZvOzwvcHJlPgorPHA+QmFzZSBzdHJ1Y3R1cmUgZm9yIGluZm9ybWF0aW9uIGNvbmNlcmluZyBhIG1lZGlhIHN0cmVhbS4gRGVwZW5kaW5nIG9uCit0aGUgc3RyZWFtIHR5cGUsIG9uZSBjYW4gZmluZCBtb3JlIG1lZGlhLXNwZWNpZmljIGluZm9ybWF0aW9uIGluCis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+LCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+LjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyQXVkaW9JbmZvLXN0cnVjdCI+PC9hPjxoMz5Hc3RQbGF5ZXJBdWRpb0luZm88L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJBdWRpb0luZm8gR3N0UGxheWVyQXVkaW9JbmZvOzwvcHJlPgorPHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RyZWFtSW5mbzwvc3Bhbj48L2E+IHNwZWNpZmljIHRvIGF1ZGlvIHN0cmVhbXMuPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJWaWRlb0luZm8tc3RydWN0Ij48L2E+PGgzPkdzdFBsYXllclZpZGVvSW5mbzwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+dHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclZpZGVvSW5mbyBHc3RQbGF5ZXJWaWRlb0luZm87PC9wcmU+Cis8cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN0cmVhbUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTdHJlYW1JbmZvPC9zcGFuPjwvYT4gc3BlY2lmaWMgdG8gdmlkZW8gc3RyZWFtcy48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllclN1YnRpdGxlSW5mby1zdHJ1Y3QiPjwvYT48aDM+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyU3VidGl0bGVJbmZvIEdzdFBsYXllclN1YnRpdGxlSW5mbzs8L3ByZT4KKzxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0cmVhbUluZm88L3NwYW4+PC9hPiBzcGVjaWZpYyB0byBzdWJ0aXRsZSBzdHJlYW1zLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNzhjNDAwCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbApAQCAtMCwwICsxLDMyNSBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0icGxheWVyLmh0bWwiIHRpdGxlPSJQbGF5ZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlciI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbiI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Cis8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgorPC9oZWFkPgorPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgorPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KKzx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgorPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9InBsYXllci5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KKzx0ZCB2YWxpZ249InRvcCI+Cis8aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLnRvcF9vZl9wYWdlIj48L2E+Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXI8L3NwYW4+PC9oMj4KKzxwPmdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyIOKAlCBQbGF5ZXIgVmlkZW8gT3ZlcmxheSBWaWRlbyBSZW5kZXJlcjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgorPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLW5ldyIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXfCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdwb2ludGVyPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC13aW5kb3ctaGFuZGxlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXdpbmRvdy1oYW5kbGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3dpbmRvd19oYW5kbGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3dpbmRvd19oYW5kbGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1leHBvc2UiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2V4cG9zZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC1yZW5kZXItcmVjdGFuZ2xlIiB0aXRsZT0iZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF9yZW5kZXJfcmVjdGFuZ2xlwqAoKSI+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF9yZW5kZXJfcmVjdGFuZ2xlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXJlbmRlci1yZWN0YW5nbGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGXCoCgpIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItbmV3Ij48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9uZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gd2luZG93X2hhbmRsZTwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjIuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndpbmRvd19oYW5kbGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gV2luZG93IGhhbmRsZSB0byB1c2Ugb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4uIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjUuNS4yLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1nZXQtd2luZG93LWhhbmRsZSI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3dpbmRvd19oYW5kbGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcjwvc3Bhbj4gKnNlbGY8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjUuNS4zLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zZWxmPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBUaGUgY3VycmVudGx5IHNldCwgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93CitoYW5kbGUuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtd2luZG93LWhhbmRsZSI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3dpbmRvd19oYW5kbGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3dpbmRvd19oYW5kbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyPC9zcGFuPiAqc2VsZjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gd2luZG93X2hhbmRsZTwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZXRzIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYyB3aW5kb3cgaGFuZGxlIGludG8gd2hpY2ggdGhlIHZpZGVvCitzaG91bGQgYmUgcmVuZGVyZWQ8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2VsZjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9SZW5kZXJlcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndpbmRvd19oYW5kbGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5oYW5kbGUgcmVmZXJlbmNpbmcgdG8gdGhlIHBsYXRmb3JtIHNwZWNpZmljIHdpbmRvdzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZXhwb3NlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcjwvc3Bhbj4gKnNlbGY8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+VGVsbCBhbiBvdmVybGF5IHRoYXQgaXQgaGFzIGJlZW4gZXhwb3NlZC4gVGhpcyB3aWxsIHJlZHJhdyB0aGUgY3VycmVudCBmcmFtZQoraW4gdGhlIGRyYXdhYmxlIGV2ZW4gaWYgdGhlIHBpcGVsaW5lIGlzIFBBVVNFRC48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNlbGY8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyPC9zcGFuPiBpbnN0YW5jZS48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1nZXQtcmVuZGVyLXJlY3RhbmdsZSI+PC9hPjxoMz5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyPC9zcGFuPiAqc2VsZjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICp4PC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gKnk8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAqd2lkdGg8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiAqaGVpZ2h0PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlJldHVybiB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgcmVuZGVyIHJlY3RhbmdsZS4gU2VlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtcmVuZGVyLXJlY3RhbmdsZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlKCk8L2NvZGU+PC9hPgorZm9yIGRldGFpbHMuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjUuNS42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnNlbGY8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyPC9zcGFuPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD54PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSBob3Jpem9udGFsIG9mZnNldCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IlBhcmFtZXRlciBmb3IgcmV0dXJuaW5nIHJlc3VsdHMuIERlZmF1bHQgaXMgdHJhbnNmZXIgZnVsbC4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5vdXQ8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD4gdGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IlBhcmFtZXRlciBmb3IgcmV0dXJuaW5nIHJlc3VsdHMuIERlZmF1bHQgaXMgdHJhbnNmZXIgZnVsbC4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5vdXQ8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPndpZHRoPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IHRoZSB3aWR0aCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cuIDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IlBhcmFtZXRlciBmb3IgcmV0dXJuaW5nIHJlc3VsdHMuIERlZmF1bHQgaXMgdHJhbnNmZXIgZnVsbC4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5vdXQ8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9Ik5VTEwgaXMgT0ssIGJvdGggZm9yIHBhc3NpbmcgYW5kIGZvciByZXR1cm5pbmcuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+YWxsb3ctbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XTwvc3Bhbj48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmhlaWdodDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiB0aGUgaGVpZ2h0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdy4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iUGFyYW1ldGVyIGZvciByZXR1cm5pbmcgcmVzdWx0cy4gRGVmYXVsdCBpcyB0cmFuc2ZlciBmdWxsLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPm91dDwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC1yZW5kZXItcmVjdGFuZ2xlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXI8L3NwYW4+ICpzZWxmPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4geDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHk8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPiB3aWR0aDwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IGhlaWdodDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5Db25maWd1cmUgYSBzdWJyZWdpb24gYXMgYSB2aWRlbyB0YXJnZXQgd2l0aGluIHRoZSB3aW5kb3cgc2V0IGJ5Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXdpbmRvdy1oYW5kbGUiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3dpbmRvd19oYW5kbGXCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZSgpPC9jb2RlPjwvYT4uIElmIHRoaXMgaXMgbm90Cit1c2VkIG9yIG5vdCBzdXBwb3J0ZWQgdGhlIHZpZGVvIHdpbGwgZmlsbCB0aGUgYXJlYSBvZiB0aGUgd2luZG93IHNldCBhcyB0aGUKK292ZXJsYXkgdG8gMTAwJS4gQnkgc3BlY2lmeWluZyB0aGUgcmVjdGFuZ2xlLCB0aGUgdmlkZW8gY2FuIGJlIG92ZXJsYXllZCB0bworYSBzcGVjaWZpYyByZWdpb24gb2YgdGhhdCB3aW5kb3cgb25seS4gQWZ0ZXIgc2V0dGluZyB0aGUgbmV3IHJlY3RhbmdsZSBvbmUKK3Nob3VsZCBjYWxsIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1leHBvc2UiIHRpdGxlPSJnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlwqAoKSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZXhwb3NlKCk8L2NvZGU+PC9hPiB0byBmb3JjZSBhCityZWRyYXcuIFRvIHVuc2V0IHRoZSByZWdpb24gcGFzcyAtMSBmb3IgdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT53aWR0aDwvY29kZT48L2VtPgorIGFuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+aGVpZ2h0PC9jb2RlPjwvZW0+CisgcGFyYW1ldGVycy48L3A+Cis8cD5UaGlzIG1ldGhvZCBpcyBuZWVkZWQgZm9yIG5vbiBmdWxsc2NyZWVuIHZpZGVvIG92ZXJsYXkgaW4gVUkgdG9vbGtpdHMgdGhhdAorZG8gbm90IHN1cHBvcnQgc3Vid2luZG93cy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNS41LjcuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c2VsZjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXI8L3NwYW4+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPng8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnk8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgdmVydGljYWwgb2Zmc2V0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD53aWR0aDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnRoZSB3aWR0aCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3c8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aGVpZ2h0PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+dGhlIGhlaWdodCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3c8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9ImZvb3RlciI+Cis8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KKzwvYm9keT4KKzwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjgzOWVlCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbApAQCAtMCwwICsxLDIyNiBAQAorPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Cis8aHRtbD4KKzxoZWFkPgorPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgorPHRpdGxlPmdzdHBsYXllci12aXN1YWxpemF0aW9uOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0icGxheWVyLmh0bWwiIHRpdGxlPSJQbGF5ZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImNoMDguaHRtbCIgdGl0bGU9IkludGVyZmFjZXMiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KKzxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Cis8L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9InBsYXllci5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iY2gwOC5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzwvdHI+PC90YWJsZT4KKzxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24udG9wX29mX3BhZ2UiPjwvYT5nc3RwbGF5ZXItdmlzdWFsaXphdGlvbjwvc3Bhbj48L2gyPgorPHA+Z3N0cGxheWVyLXZpc3VhbGl6YXRpb24g4oCUIFBsYXllciBWaXN1YWxpemF0aW9uPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KKzwvdHI+PC90YWJsZT48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+Cis8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+wqAqKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWdldCIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0wqAoKSI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQ8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZnJlZSIgdGl0bGU9ImdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZcKgKCkiPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbi1jb3B5IiB0aXRsZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHnCoCgpIj5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fY29weTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWZyZWUiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZcKgKCkiPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGEgbmFtZT0iR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbi1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvYT48L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KKzxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtQm94ZWQtVHlwZXMuaHRtbCI+R0JveGVkPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFBsYXllclZpc3VhbGl6YXRpb24KKzwvcHJlPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWdldCI+PC9hPjxoMz5nc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+wqAqKgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48c3BhbiBjbGFzcz0idHlwZSI+dm9pZDwvc3Bhbj48L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjYuOC4yLjQiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiB0ZXJtaW5hdGVkIGFycmF5IGNvbnRhaW5pbmcgYWxsIGF2YWlsYWJsZQordmlzdWFsaXphdGlvbnMuIFVzZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWZyZWUiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWXCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZSgpPC9jb2RlPjwvYT4gYWZ0ZXIKK3VzYWdlLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dWzxhY3JvbnltIHRpdGxlPSJQYXJhbWV0ZXIgcG9pbnRzIHRvIGFuIGFycmF5IG9mIGl0ZW1zLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFycmF5PC9zcGFuPjwvYWNyb255bT4gemVyby10ZXJtaW5hdGVkPTFdWzxhY3JvbnltIHRpdGxlPSJHZW5lcmljcyBhbmQgZGVmaW5pbmcgZWxlbWVudHMgb2YgY29udGFpbmVycyBhbmQgYXJyYXlzLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmVsZW1lbnQtdHlwZTwvc3Bhbj48L2Fjcm9ueW0+IEdzdFBsYXllclZpc3VhbGl6YXRpb25dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWZyZWUiPjwvYT48aDM+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpc3VhbGl6YXRpb248L3NwYW4+PC9hPiAqKnZpc3M8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnJlZXMgYSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiB0ZXJtaW5hdGVkIGFycmF5IG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT4uPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjYuOC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52aXNzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPiB0ZXJtaW5hdGVkIGFycmF5IG9mIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT4gdG8gZnJlZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWNvcHkiPjwvYT48aDM+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclZpc3VhbGl6YXRpb248L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+ICp2aXM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+TWFrZXMgYSBjb3B5IG9mIHRoZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+LiBUaGUgcmVzdWx0IG11c3QgYmUKK2ZyZWVkIHVzaW5nIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbi1mcmVlIiB0aXRsZT0iZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWXCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlKCk8L2NvZGU+PC9hPi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNi44LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZpczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaXN1YWxpemF0aW9uPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNi44LjQuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhbiBhbGxvY2F0ZWQgY29weSBvZiA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmlzPC9jb2RlPjwvZW0+CisuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItdmlzdWFsaXphdGlvbi1mcmVlIj48L2E+PGgzPmdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+ICp2aXM8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RnJlZXMgYSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlzdWFsaXphdGlvbjwvc3Bhbj48L2E+LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC42LjguNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dmlzPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpc3VhbGl6YXRpb248L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyVmlzdWFsaXphdGlvbi1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdFBsYXllclZpc3VhbGl6YXRpb248L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIHsKKyAgZ2NoYXIgKm5hbWU7CisgIGdjaGFyICpkZXNjcmlwdGlvbjsKK307Cis8L3ByZT4KKzxwPkEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpc3VhbGl6YXRpb248L3NwYW4+PC9hPiBkZXNjcmlwdG9yLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC42LjkuMi41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfbmFtZSI+PHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKjxlbSBjbGFzcz0ic3RydWN0ZmllbGQiPjxjb2RlPjxhIG5hbWU9IkdzdFBsYXllclZpc3VhbGl6YXRpb24tc3RydWN0Lm5hbWUiPjwvYT5uYW1lPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5uYW1lIG9mIHRoZSB2aXN1YWxpemF0aW9uLjwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8ZW0gY2xhc3M9InN0cnVjdGZpZWxkIj48Y29kZT48YSBuYW1lPSJHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLXN0cnVjdC5kZXNjcmlwdGlvbiI+PC9hPmRlc2NyaXB0aW9uPC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5kZXNjcmlwdGlvbiBvZiB0aGUgdmlzdWFsaXphdGlvbi48L3A+PC90ZD4KKzx0ZCBjbGFzcz0ic3RydWN0X21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDExNmExCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwKQEAgLTAsMCArMSwyMjUyIEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+Z3N0cGxheWVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0icGxheWVyLmh0bWwiIHRpdGxlPSJQbGF5ZXIgTGlicmFyeSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9InBsYXllci5odG1sIiB0aXRsZT0iUGxheWVyIExpYnJhcnkiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXItbWVkaWFpbmZvIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcmVyZXF1aXNpdGVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5wcmVyZXF1aXNpdGVzIiBjbGFzcz0ic2hvcnRjdXQiPlByZXJlcXVpc2l0ZXM8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaW1wbGVtZW50YXRpb25zIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5pbXBsZW1lbnRhdGlvbnMiIGNsYXNzPSJzaG9ydGN1dCI+S25vd24gSW1wbGVtZW50YXRpb25zPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9zaWduYWxzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5zaWduYWxzIiBjbGFzcz0ic2hvcnRjdXQiPlNpZ25hbHM8L2E+PC9zcGFuPgorPC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJwbGF5ZXIuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0icGxheWVyLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0icmVmZW50cnkiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KKzxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgorPHRkIHZhbGlnbj0idG9wIj4KKzxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnRvcF9vZl9wYWdlIj48L2E+Z3N0cGxheWVyPC9zcGFuPjwvaDI+Cis8cD5nc3RwbGF5ZXIg4oCUIFBsYXllcjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuZnVuY3Rpb25zIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJmdW5jdGlvbnNfcmV0dXJuIj4KKzxjb2wgY2xhc3M9ImZ1bmN0aW9uc19uYW1lIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1uZXciIHRpdGxlPSJnc3RfcGxheWVyX25ld8KgKCkiPmdzdF9wbGF5ZXJfbmV3PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wbGF5IiB0aXRsZT0iZ3N0X3BsYXllcl9wbGF5wqAoKSI+Z3N0X3BsYXllcl9wbGF5PC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wYXVzZSIgdGl0bGU9ImdzdF9wbGF5ZXJfcGF1c2XCoCgpIj5nc3RfcGxheWVyX3BhdXNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zdG9wIiB0aXRsZT0iZ3N0X3BsYXllcl9zdG9wwqAoKSI+Z3N0X3BsYXllcl9zdG9wPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZWVrIiB0aXRsZT0iZ3N0X3BsYXllcl9zZWVrwqAoKSI+Z3N0X3BsYXllcl9zZWVrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdXJpIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdXJpwqAoKSI+Z3N0X3BsYXllcl9zZXRfdXJpPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXVyaSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3VyacKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3VyaTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENsb2NrLmh0bWwjR3N0Q2xvY2tUaW1lIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENsb2NrVGltZTwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1kdXJhdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uwqAoKSI+Z3N0X3BsYXllcl9nZXRfZHVyYXRpb248L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RDbG9jay5odG1sI0dzdENsb2NrVGltZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RDbG9ja1RpbWU8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24iIHRpdGxlPSJnc3RfcGxheWVyX2dldF9wb3NpdGlvbsKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdm9sdW1lIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdm9sdW1lwqAoKSI+Z3N0X3BsYXllcl9zZXRfdm9sdW1lPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtbXV0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X211dGXCoCgpIj5nc3RfcGxheWVyX3NldF9tdXRlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2RvdWJsZTwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12b2x1bWUiIHRpdGxlPSJnc3RfcGxheWVyX2dldF92b2x1bWXCoCgpIj5nc3RfcGxheWVyX2dldF92b2x1bWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbXV0ZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X211dGXCoCgpIj5nc3RfcGxheWVyX2dldF9tdXRlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcGlwZWxpbmUiIHRpdGxlPSJnc3RfcGxheWVyX2dldF9waXBlbGluZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFswqAoKSI+Z3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbMKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbDwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zdGF0ZS1nZXQtbmFtZSIgdGl0bGU9ImdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWXCoCgpIj5nc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRlZmluZV9rZXl3b3JkIj4jZGVmaW5lPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItRVJST1I6Q0FQUyIgdGl0bGU9IkdTVF9QTEFZRVJfRVJST1IiPkdTVF9QTEFZRVJfRVJST1I8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWVycm9yLWdldC1uYW1lIiB0aXRsZT0iZ3N0X3BsYXllcl9lcnJvcl9nZXRfbmFtZcKgKCkiPmdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbWVkaWEtaW5mbyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm/CoCgpIj5nc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R0xpc3Q8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtYXVkaW8tc3RyZWFtcyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXPCoCgpIj5nc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R0xpc3Q8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtdmlkZW8tc3RyZWFtcyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXPCoCgpIj5nc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R0xpc3Q8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtc3RyZWFtcyIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXPCoCgpIj5nc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2vCoCgpIj5nc3RfcGxheWVyX3NldF9hdWRpb190cmFjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nYm9vbGVhbjwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aWRlby10cmFjayIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrwqAoKSI+Z3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2s8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2siIHRpdGxlPSJnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja8KgKCkiPmdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtYXVkaW8tdHJhY2siIHRpdGxlPSJnc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrwqAoKSI+Z3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjazwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpZGVvLXRyYWNrIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFja8KgKCkiPmdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2s8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RQbGF5ZXJTdWJ0aXRsZUluZm88L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1zdWJ0aXRsZS10cmFjayIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2vCoCgpIj5nc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2stZW5hYmxlZCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrX2VuYWJsZWTCoCgpIj5nc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2stZW5hYmxlZCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrX2VuYWJsZWTCoCgpIj5nc3RfcGxheWVyX3NldF92aWRlb190cmFja19lbmFibGVkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2stZW5hYmxlZCIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWTCoCgpIj5nc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXVyaSIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyacKgKCkiPmdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyaTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS11cmkiIHRpdGxlPSJnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmnCoCgpIj5nc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmk8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb27CoCgpIj5nc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbi1lbmFibGVkIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkwqAoKSI+Z3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbl9lbmFibGVkPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlzdWFsaXphdGlvbiIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlzdWFsaXphdGlvbsKgKCkiPmdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlzdWFsaXphdGlvbjwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2NoYXI8L3NwYW4+PC9hPsKgKgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1jb2xvci1iYWxhbmNlLXR5cGUtZ2V0LW5hbWUiIHRpdGxlPSJnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfbmFtZcKgKCkiPmdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItaGFzLWNvbG9yLWJhbGFuY2UiIHRpdGxlPSJnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlwqAoKSI+Z3N0X3BsYXllcl9oYXNfY29sb3JfYmFsYW5jZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KKzwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LWNvbG9yLWJhbGFuY2UiIHRpdGxlPSJnc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlwqAoKSI+Z3N0X3BsYXllcl9zZXRfY29sb3JfYmFsYW5jZTwvYT7CoDxzcGFuIGNsYXNzPSJjX3B1bmN0dWF0aW9uIj4oKTwvc3Bhbj4KKzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJmdW5jdGlvbl90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdkb3VibGU8L3NwYW4+PC9hPgorPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY29sb3ItYmFsYW5jZSIgdGl0bGU9ImdzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2XCoCgpIj5nc3RfcGxheWVyX2dldF9jb2xvcl9iYWxhbmNlPC9hPsKgPHNwYW4gY2xhc3M9ImNfcHVuY3R1YXRpb24iPigpPC9zcGFuPgorPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX3R5cGUiPgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2RvdWJsZTwvc3Bhbj48L2E+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1yYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9nZXRfcmF0ZcKgKCkiPmdzdF9wbGF5ZXJfZ2V0X3JhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fdHlwZSI+Cis8c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cis8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1yYXRlIiB0aXRsZT0iZ3N0X3BsYXllcl9zZXRfcmF0ZcKgKCkiPmdzdF9wbGF5ZXJfc2V0X3JhdGU8L2E+wqA8c3BhbiBjbGFzcz0iY19wdW5jdHVhdGlvbiI+KCk8L3NwYW4+Cis8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LWF1ZGlvLXRyYWNrIiB0aXRsZT0iVGhlIOKAnGN1cnJlbnQtYXVkaW8tdHJhY2vigJ0gcHJvcGVydHkiPmN1cnJlbnQtYXVkaW8tdHJhY2s8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQ8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC1zdWJ0aXRsZS10cmFjayIgdGl0bGU9IlRoZSDigJxjdXJyZW50LXN1YnRpdGxlLXRyYWNr4oCdIHByb3BlcnR5Ij5jdXJyZW50LXN1YnRpdGxlLXRyYWNrPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPsKgKjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtdmlkZW8tdHJhY2siIHRpdGxlPSJUaGUg4oCcY3VycmVudC12aWRlby10cmFja+KAnSBwcm9wZXJ0eSI+Y3VycmVudC12aWRlby10cmFjazwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQ2NCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50NjQ8L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWR1cmF0aW9uIiB0aXRsZT0iVGhlIOKAnGR1cmF0aW9u4oCdIHByb3BlcnR5Ij5kdXJhdGlvbjwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1tZWRpYS1pbmZvIiB0aXRsZT0iVGhlIOKAnG1lZGlhLWluZm/igJ0gcHJvcGVydHkiPm1lZGlhLWluZm88L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQ8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLW11dGUiIHRpdGxlPSJUaGUg4oCcbXV0ZeKAnSBwcm9wZXJ0eSI+bXV0ZTwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgorPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0RWxlbWVudDwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcGlwZWxpbmUiIHRpdGxlPSJUaGUg4oCccGlwZWxpbmXigJ0gcHJvcGVydHkiPnBpcGVsaW5lPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDY0Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ2NDwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcG9zaXRpb24iIHRpdGxlPSJUaGUg4oCccG9zaXRpb27igJ0gcHJvcGVydHkiPnBvc2l0aW9uPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiIHRpdGxlPSJUaGUg4oCccG9zaXRpb24tdXBkYXRlLWludGVydmFs4oCdIHByb3BlcnR5Ij5wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWw8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXJhdGUiIHRpdGxlPSJUaGUg4oCccmF0ZeKAnSBwcm9wZXJ0eSI+cmF0ZTwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPgorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1zaWduYWwtZGlzcGF0Y2hlciIgdGl0bGU9IlRoZSDigJxzaWduYWwtZGlzcGF0Y2hlcuKAnSBwcm9wZXJ0eSI+c2lnbmFsLWRpc3BhdGNoZXI8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPldyaXRlIC8gQ29uc3RydWN0IE9ubHk8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tc3VidXJpIiB0aXRsZT0iVGhlIOKAnHN1YnVyaeKAnSBwcm9wZXJ0eSI+c3VidXJpPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdXJpIiB0aXRsZT0iVGhlIOKAnHVyaeKAnSBwcm9wZXJ0eSI+dXJpPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L3NwYW4+PC9hPsKgKjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXZpZGVvLXJlbmRlcmVyIiB0aXRsZT0iVGhlIOKAnHZpZGVvLXJlbmRlcmVy4oCdIHByb3BlcnR5Ij52aWRlby1yZW5kZXJlcjwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+V3JpdGUgLyBDb25zdHJ1Y3QgT25seTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXZvbHVtZSIgdGl0bGU9IlRoZSDigJx2b2x1bWXigJ0gcHJvcGVydHkiPnZvbHVtZTwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnNpZ25hbHMiPjwvYT48aDI+U2lnbmFsczwvaDI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InNpZ25hbHNfcmV0dXJuIj4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic2lnbmFsc19uYW1lIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0ic2lnbmFsc19mbGFncyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWJ1ZmZlcmluZyIgdGl0bGU9IlRoZSDigJxidWZmZXJpbmfigJ0gc2lnbmFsIj5idWZmZXJpbmc8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1kdXJhdGlvbi1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnGR1cmF0aW9uLWNoYW5nZWTigJ0gc2lnbmFsIj5kdXJhdGlvbi1jaGFuZ2VkPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZW5kLW9mLXN0cmVhbSIgdGl0bGU9IlRoZSDigJxlbmQtb2Ytc3RyZWFt4oCdIHNpZ25hbCI+ZW5kLW9mLXN0cmVhbTwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLWVycm9yIiB0aXRsZT0iVGhlIOKAnGVycm9y4oCdIHNpZ25hbCI+ZXJyb3I8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1tZWRpYS1pbmZvLXVwZGF0ZWQiIHRpdGxlPSJUaGUg4oCcbWVkaWEtaW5mby11cGRhdGVk4oCdIHNpZ25hbCI+bWVkaWEtaW5mby11cGRhdGVkPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItbXV0ZS1jaGFuZ2VkIiB0aXRsZT0iVGhlIOKAnG11dGUtY2hhbmdlZOKAnSBzaWduYWwiPm11dGUtY2hhbmdlZDwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXBvc2l0aW9uLXVwZGF0ZWQiIHRpdGxlPSJUaGUg4oCccG9zaXRpb24tdXBkYXRlZOKAnSBzaWduYWwiPnBvc2l0aW9uLXVwZGF0ZWQ8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1zZWVrLWRvbmUiIHRpdGxlPSJUaGUg4oCcc2Vlay1kb25l4oCdIHNpZ25hbCI+c2Vlay1kb25lPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RhdGUtY2hhbmdlZCIgdGl0bGU9IlRoZSDigJxzdGF0ZS1jaGFuZ2Vk4oCdIHNpZ25hbCI+c3RhdGUtY2hhbmdlZDwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzaWduYWxfdHlwZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCIgdGl0bGU9IlRoZSDigJx2aWRlby1kaW1lbnNpb25zLWNoYW5nZWTigJ0gc2lnbmFsIj52aWRlby1kaW1lbnNpb25zLWNoYW5nZWQ8L2E+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX2ZsYWdzIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0ic2lnbmFsX3R5cGUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci12b2x1bWUtY2hhbmdlZCIgdGl0bGU9IlRoZSDigJx2b2x1bWUtY2hhbmdlZOKAnSBzaWduYWwiPnZvbHVtZS1jaGFuZ2VkPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InNpZ25hbF9mbGFncyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InNpZ25hbF90eXBlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+PC90ZD4KKzx0ZCBjbGFzcz0ic2lnbmFsX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItd2FybmluZyIgdGl0bGU9IlRoZSDigJx3YXJuaW5n4oCdIHNpZ25hbCI+d2FybmluZzwvYT48L3RkPgorPHRkIGNsYXNzPSJzaWduYWxfZmxhZ3MiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxhIG5hbWU9IkdzdFBsYXllciI+PC9hPjxhIG5hbWU9IkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPjwvYT48YSBuYW1lPSJHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj7CoDwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyIj5Hc3RQbGF5ZXI8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPmVudW08L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU3RhdGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllclN0YXRlIj5Hc3RQbGF5ZXJTdGF0ZTwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+ZW51bTwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJFcnJvciIgdGl0bGU9ImVudW0gR3N0UGxheWVyRXJyb3IiPkdzdFBsYXllckVycm9yPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5lbnVtPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPkdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU8L2E+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPsKgPC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXItc3RydWN0IiB0aXRsZT0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciI+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UiIHRpdGxlPSJzdHJ1Y3QgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSI+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZTwvYT48L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+wqA8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlci1zdHJ1Y3QiIHRpdGxlPSJHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9hPjwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSIgdGl0bGU9InN0cnVjdCBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlPC9hPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1FbnVtZXJhdGlvbi1hbmQtRmxhZy1UeXBlcy5odG1sIj5HRW51bTwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlCisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyRXJyb3IKKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RQbGF5ZXJTdGF0ZQorICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL0dUeXBlTW9kdWxlLmh0bWwiPkdJbnRlcmZhY2U8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFBsYXllclZpZGVvUmVuZGVyZXIKKyAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgorICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0UGxheWVyCis8L3ByZT4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByZXJlcXVpc2l0ZXMiPjwvYT48aDI+UHJlcmVxdWlzaXRlczwvaDI+Cis8cD4KK0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgcmVxdWlyZXMKKyA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4uPC9wPgorPHA+CitHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIHJlcXVpcmVzCisgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+LjwvcD4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmltcGxlbWVudGF0aW9ucyI+PC9hPjxoMj5Lbm93biBJbXBsZW1lbnRhdGlvbnM8L2gyPgorPHA+CitHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIGlzIGltcGxlbWVudGVkIGJ5CisgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlci48L3A+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1uZXciPjwvYT48aDM+Z3N0X3BsYXllcl9uZXfCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX25ldyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9SZW5kZXJlcjwvc3Bhbj48L2E+ICp2aWRlb19yZW5kZXJlcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyPC9zcGFuPjwvYT4gKnNpZ25hbF9kaXNwYXRjaGVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNyZWF0ZXMgYSBuZXcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlIHRoYXQgdXNlcyA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c2lnbmFsX2Rpc3BhdGNoZXI8L2NvZGU+PC9lbT4KKyB0byBkaXNwYXRjaAorc2lnbmFscyB0byBzb21lIGV2ZW50IGxvb3Agc3lzdGVtLCBvciBlbWl0cyBzaWduYWxzIGRpcmVjdGx5IGlmIE5VTEwgaXMKK3Bhc3NlZC4gU2VlIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sI2dzdC1wbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXItbmV3IiB0aXRsZT0iZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXfCoCgpIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3KCk8L2NvZGU+PC9hPi48L3A+Cis8cD5WaWRlbyBpcyBnb2luZyB0byBiZSByZW5kZXJlZCBieSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+dmlkZW9fcmVuZGVyZXI8L2NvZGU+PC9lbT4KKywgb3IgaWYgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNOVUxMOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5OVUxMPC9jb2RlPjwvYT4gaXMgcHJvdmlkZWQKK25vIHNwZWNpYWwgdmlkZW8gc2V0IHVwIHdpbGwgYmUgZG9uZSBhbmQgc29tZSBkZWZhdWx0IGhhbmRsaW5nIHdpbGwgYmUKK3BlcmZvcm1lZC48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZpZGVvX3JlbmRlcmVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+IEdzdFBsYXllclZpZGVvUmVuZGVyZXIgdG8gdXNlLiA8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dWzxhY3JvbnltIHRpdGxlPSJOVUxMIGlzIE9LLCBib3RoIGZvciBwYXNzaW5nIGFuZCBmb3IgcmV0dXJuaW5nLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmFsbG93LW5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zaWduYWxfZGlzcGF0Y2hlcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPiBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIHRvIHVzZS4gPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgZnVsbDwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iTlVMTCBpcyBPSywgYm90aCBmb3IgcGFzc2luZyBhbmQgZm9yIHJldHVybmluZy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5hbGxvdy1ub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIuNyI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIG5ldyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1wbGF5Ij48L2E+PGgzPmdzdF9wbGF5ZXJfcGxhecKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfcGxheSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlJlcXVlc3QgdG8gcGxheSB0aGUgbG9hZGVkIHN0cmVhbS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItcGF1c2UiPjwvYT48aDM+Z3N0X3BsYXllcl9wYXVzZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfcGF1c2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5QYXVzZXMgdGhlIGN1cnJlbnQgc3RyZWFtLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zdG9wIj48L2E+PGgzPmdzdF9wbGF5ZXJfc3RvcMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc3RvcCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlN0b3BzIHBsYXlpbmcgdGhlIGN1cnJlbnQgc3RyZWFtIGFuZCByZXNldHMgdG8gdGhlIGZpcnN0IHBvc2l0aW9uCitpbiB0aGUgc3RyZWFtLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZWVrIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2Vla8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2VlayAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2xvY2suaHRtbCNHc3RDbG9ja1RpbWUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RDbG9ja1RpbWU8L3NwYW4+PC9hPiBwb3NpdGlvbjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZWVrcyB0aGUgY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtIHRvIHRoZSBhYnNvbHV0ZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cG9zaXRpb248L2NvZGU+PC9lbT4KKyB0aW1lCitpbiBuYW5vc2Vjb25kcy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wb3NpdGlvbjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnBvc2l0aW9uIHRvIHNlZWsgaW4gbmFub3NlY29uZHM8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtdXJpIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X3VyacKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X3VyaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0idHlwZSI+Z2NoYXI8L3NwYW4+PC9hPiAqdXJpPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlNldHMgdGhlIG5leHQgVVJJIHRvIHBsYXkuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dXJpPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+bmV4dCBVUkkgdG8gcGxheS48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtdXJpIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X3VyacKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dldF91cmkgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5HZXRzIHRoZSBVUkkgb2YgdGhlIGN1cnJlbnRseS1wbGF5aW5nIHN0cmVhbS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC44LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC44LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBzdHJpbmcgY29udGFpbmluZyB0aGUgVVJJIG9mIHRoZQorY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtLiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLU1lbW9yeS1BbGxvY2F0aW9uLmh0bWwjZy1mcmVlIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdfZnJlZSgpPC9jb2RlPjwvYT4gYWZ0ZXIgdXNhZ2UuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LWR1cmF0aW9uIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0Q2xvY2suaHRtbCNHc3RDbG9ja1RpbWUiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R3N0Q2xvY2tUaW1lPC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UmV0cmlldmVzIHRoZSBkdXJhdGlvbiBvZiB0aGUgbWVkaWEgc3RyZWFtIHRoYXQgc2VsZiByZXByZXNlbnRzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjkuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiB0aGUgZHVyYXRpb24gb2YgdGhlIGN1cnJlbnRseS1wbGF5aW5nIG1lZGlhIHN0cmVhbSwgaW4KK25hbm9zZWNvbmRzLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1wb3NpdGlvbiI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9wb3NpdGlvbsKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENsb2NrLmh0bWwjR3N0Q2xvY2tUaW1lIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdENsb2NrVGltZTwvc3Bhbj48L2E+Citnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjEwLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xMC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IHRoZSBhYnNvbHV0ZSBwb3NpdGlvbiB0aW1lLCBpbiBuYW5vc2Vjb25kcywgb2YgdGhlCitjdXJyZW50bHktcGxheWluZyBzdHJlYW0uPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LXZvbHVtZSI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF92b2x1bWXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3NldF92b2x1bWUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+IHZhbDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZXRzIHRoZSB2b2x1bWUgbGV2ZWwgb2YgdGhlIHN0cmVhbSBhcyBhIHBlcmNlbnRhZ2UgYmV0d2VlbiAwIGFuZCAxLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD52YWw8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD50aGUgbmV3IHZvbHVtZSBsZXZlbCwgYXMgYSBwZXJjZW50YWdlIGJldHdlZW4gMCBhbmQgMTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC1tdXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X211dGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3NldF9tdXRlICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiB2YWw8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgdGhlIGN1cnJlbnRseS1wbGF5aW5nIHN0cmVhbSBzaG91bGQgYmUgbXV0ZWQuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbDwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPk11dGUgc3RhdGUgdGhlIHNob3VsZCBiZSBzZXQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtdm9sdW1lIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X3ZvbHVtZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdkb3VibGU8L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9nZXRfdm9sdW1lICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UmV0dXJucyB0aGUgY3VycmVudCB2b2x1bWUgbGV2ZWwsIGFzIGEgcGVyY2VudGFnZSBiZXR3ZWVuIDAgYW5kIDEuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjEzLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gdGhlIHZvbHVtZSBhcyBwZXJjZW50YWdlIGJldHdlZW4gMCBhbmQgMS48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtbXV0ZSI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9tdXRlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfZ2V0X211dGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xNC40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBpZiB0aGUgY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtIGlzIG11dGVkLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1waXBlbGluZSI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9waXBlbGluZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5Hc3RFbGVtZW50PC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTUuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjE1LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gVGhlIGludGVybmFsIHBsYXliaW4gaW5zdGFuY2UuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWzCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Citnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPiBpbnRlcnZhbDwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5TZXQgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzIGJldHdlZW4gdHdvIHBvc2l0aW9uLXVwZGF0ZWQgc2lnbmFscy4KK1Bhc3MgMCB0byBzdG9wIHVwZGF0aW5nIHRoZSBwb3NpdGlvbi48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW50ZXJ2YWw8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5pbnRlcnZhbCBpbiBtczwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFswqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmd1aW50PC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMTcuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjE3LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gY3VycmVudCBwb3NpdGlvbiB1cGRhdGUgaW50ZXJ2YWwgaW4gbWlsbGlzZWNvbmRzPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc3RhdGUtZ2V0LW5hbWUiPjwvYT48aDM+Z3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZcKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nY2hhcjwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclN0YXRlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJTdGF0ZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0YXRlPC9zcGFuPjwvYT4gc3RhdGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+R2V0cyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGdpdmVuIHN0YXRlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjE4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdGF0ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclN0YXRlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJTdGF0ZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN0YXRlPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4xOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGEgc3RyaW5nIHdpdGggdGhlIG5hbWUgb2YgdGhlIHN0YXRlLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHU1QtUExBWUVSLUVSUk9SOkNBUFMiPjwvYT48aDM+R1NUX1BMQVlFUl9FUlJPUjwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSAgICAgIEdTVF9QTEFZRVJfRVJST1IgICAgICAgICAgICAgICAgICAgICAgICAgKGdzdF9wbGF5ZXJfZXJyb3JfcXVhcmsgKCkpCis8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1lcnJvci1nZXQtbmFtZSI+PC9hPjxoMz5nc3RfcGxheWVyX2Vycm9yX2dldF9uYW1lwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyRXJyb3IiIHRpdGxlPSJlbnVtIEdzdFBsYXllckVycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyRXJyb3I8L3NwYW4+PC9hPiBlcnJvcjwvY29kZT48L2VtPik7PC9wcmU+Cis8cD5HZXRzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gZXJyb3IuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVycm9yPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyRXJyb3IiIHRpdGxlPSJlbnVtIEdzdFBsYXllckVycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyRXJyb3I8L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gYSBzdHJpbmcgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LW1lZGlhLWluZm8iPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfbWVkaWFfaW5mb8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QSBGdW5jdGlvbiB0byBnZXQgdGhlIGN1cnJlbnQgbWVkaWEgaW5mbyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+IGluc3RhbmNlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIxLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yMS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IG1lZGlhIGluZm8gaW5zdGFuY2UuPC9wPgorPHA+VGhlIGNhbGxlciBzaG91bGQgZnJlZSBpdCB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNnLW9iamVjdC11bnJlZiI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nX29iamVjdF91bnJlZigpPC9jb2RlPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LWF1ZGlvLXN0cmVhbXMiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtc8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRG91Ymx5LUxpbmtlZC1MaXN0cy5odG1sI0dMaXN0Ij48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdMaXN0PC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXMgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+ICppbmZvPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIyLjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5pbmZvPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+YSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjIuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBBIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRG91Ymx5LUxpbmtlZC1MaXN0cy5odG1sI0dMaXN0Ij48c3BhbiBjbGFzcz0idHlwZSI+R0xpc3Q8L3NwYW4+PC9hPiBvZgorbWF0Y2hpbmcgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJBdWRpb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJBdWRpb0luZm88L3NwYW4+PC9hPi4gPC9wPgorPHA+PHNwYW4gY2xhc3M9ImFubm90YXRpb24iPls8YWNyb255bSB0aXRsZT0iRG9uJ3QgZnJlZSBkYXRhIGFmdGVyIHRoZSBjb2RlIGlzIGRvbmUuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+dHJhbnNmZXIgbm9uZTwvc3Bhbj48L2Fjcm9ueW0+XVs8YWNyb255bSB0aXRsZT0iR2VuZXJpY3MgYW5kIGRlZmluaW5nIGVsZW1lbnRzIG9mIGNvbnRhaW5lcnMgYW5kIGFycmF5cy4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj5lbGVtZW50LXR5cGU8L3NwYW4+PC9hY3JvbnltPiBHc3RQbGF5ZXJBdWRpb0luZm9dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC12aWRlby1zdHJlYW1zIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXPCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5HTGlzdDwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+Y29uc3QgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPiAqaW5mbzwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yMy40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+aW5mbzwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPmEgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJNZWRpYUluZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJNZWRpYUluZm88L3NwYW4+PC9hPjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjIzLjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gQSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLURvdWJseS1MaW5rZWQtTGlzdHMuaHRtbCNHTGlzdCI+PHNwYW4gY2xhc3M9InR5cGUiPkdMaXN0PC9zcGFuPjwvYT4gb2YKK21hdGNoaW5nIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyVmlkZW9JbmZvPC9zcGFuPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl1bPGFjcm9ueW0gdGl0bGU9IkdlbmVyaWNzIGFuZCBkZWZpbmluZyBlbGVtZW50cyBvZiBjb250YWluZXJzIGFuZCBhcnJheXMuIj48c3BhbiBjbGFzcz0iYWNyb255bSI+ZWxlbWVudC10eXBlPC9zcGFuPjwvYWNyb255bT4gR3N0UGxheWVyVmlkZW9JbmZvXTwvc3Bhbj48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtc3RyZWFtcyI+PC9hPjxoMz5nc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+R0xpc3Q8L3NwYW4+PC9hPsKgKgorZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtcyAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmluZm88L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMjQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmluZm88L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT48L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yNC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IEEgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1Eb3VibHktTGlua2VkLUxpc3RzLmh0bWwjR0xpc3QiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HTGlzdDwvc3Bhbj48L2E+IG9mCittYXRjaGluZyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+LiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dWzxhY3JvbnltIHRpdGxlPSJHZW5lcmljcyBhbmQgZGVmaW5pbmcgZWxlbWVudHMgb2YgY29udGFpbmVycyBhbmQgYXJyYXlzLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPmVsZW1lbnQtdHlwZTwvc3Bhbj48L2Fjcm9ueW0+IEdzdFBsYXllclN1YnRpdGxlSW5mb108L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdib29sZWFuPC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+IHN0cmVhbV9pbmRleDwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yNS40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+c3RyZWFtX2luZGV4PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+c3RyZWFtIGluZGV4PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yNS41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IG9yIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjRkFMU0U6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPkZBTFNFPC9jb2RlPjwvYT48L3A+Cis8cD5TZXRzIHRoZSBhdWRpbyB0cmFjayA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RyZWFtX2lkZXg8L2NvZGU+PC9lbT4KKy48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2siPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2vCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gc3RyZWFtX2luZGV4PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI2LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdHJlYW1faW5kZXg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5zdHJlYW0gaW5kZXg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI2LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPjwvcD4KKzxwPlNldHMgdGhlIHZpZGVvIHRyYWNrIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5zdHJlYW1faW5kZXg8L2NvZGU+PC9lbT4KKy48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2siPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2vCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2sgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gc3RyZWFtX2luZGV4PC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI3LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5zdHJlYW1faW5kZXg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5zdHJlYW0gaW5kZXg8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI3LjUiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gb3IgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPjwvcD4KKzxwPlNldHMgdGhlIHN1YnRpdGxlIHN0cmFjayA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+c3RyZWFtX2luZGV4PC9jb2RlPjwvZW0+CisuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtYXVkaW8tdHJhY2siPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFja8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dldF9jdXJyZW50X2F1ZGlvX3RyYWNrICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QSBGdW5jdGlvbiB0byBnZXQgY3VycmVudCBhdWRpbyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckF1ZGlvSW5mbzwvc3Bhbj48L2E+IGluc3RhbmNlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI4LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yOC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGN1cnJlbnQgYXVkaW8gdHJhY2suPC9wPgorPHA+VGhlIGNhbGxlciBzaG91bGQgZnJlZSBpdCB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNnLW9iamVjdC11bnJlZiI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nX29iamVjdF91bnJlZigpPC9jb2RlPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtdmlkZW8tdHJhY2siPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFja8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyVmlkZW9JbmZvIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dldF9jdXJyZW50X3ZpZGVvX3RyYWNrICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QSBGdW5jdGlvbiB0byBnZXQgY3VycmVudCB2aWRlbyA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclZpZGVvSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvSW5mbzwvc3Bhbj48L2E+IGluc3RhbmNlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjI5LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4yOS42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGN1cnJlbnQgdmlkZW8gdHJhY2suPC9wPgorPHA+VGhlIGNhbGxlciBzaG91bGQgZnJlZSBpdCB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNnLW9iamVjdC11bnJlZiI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nX29iamVjdF91bnJlZigpPC9jb2RlPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItZ2V0LWN1cnJlbnQtc3VidGl0bGUtdHJhY2siPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFja8KgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+wqAqCitnc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+QSBGdW5jdGlvbiB0byBnZXQgY3VycmVudCBzdWJ0aXRsZSA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+IGluc3RhbmNlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjMwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zMC42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IGN1cnJlbnQgc3VidGl0bGUgdHJhY2suPC9wPgorPHA+VGhlIGNhbGxlciBzaG91bGQgZnJlZSBpdCB3aXRoIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNnLW9iamVjdC11bnJlZiI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nX29iamVjdF91bnJlZigpPC9jb2RlPjwvYT4uIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkRvbid0IGZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIG5vbmU8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrLWVuYWJsZWQiPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrX2VuYWJsZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IGVuYWJsZWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RW5hYmxlIG9yIGRpc2FibGUgdGhlIGN1cnJlbnQgYXVkaW8gdHJhY2suPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzEuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVuYWJsZWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5UUlVFIG9yIEZBTFNFPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LXZpZGVvLXRyYWNrLWVuYWJsZWQiPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrX2VuYWJsZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IGVuYWJsZWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RW5hYmxlIG9yIGRpc2FibGUgdGhlIGN1cnJlbnQgdmlkZW8gdHJhY2suPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVuYWJsZWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5UUlVFIG9yIEZBTFNFPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXRyYWNrLWVuYWJsZWQiPjwvYT48aDM+Z3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWQgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+IGVuYWJsZWQ8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+RW5hYmxlIG9yIGRpc2FibGUgdGhlIGN1cnJlbnQgc3VidGl0bGUgdHJhY2suPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzMuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPmVuYWJsZWQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5UUlVFIG9yIEZBTFNFPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItc2V0LXN1YnRpdGxlLXVyaSI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmnCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpICg8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpwbGF5ZXI8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT5jb25zdCA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+ICp1cmk8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzQuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnVyaTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnN1YnRpdGxlIFVSSTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzQuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPiBvciA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI0ZBTFNFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5GQUxTRTwvY29kZT48L2E+PC9wPgorPHA+U2V0cyB0aGUgZXh0ZXJuYWwgc3VidGl0bGUgVVJJLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS11cmkiPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3VyaSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPmN1cnJlbnQgc3VidGl0bGUgVVJJPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjM1LjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gVVJJIG9mIHRoZSBjdXJyZW50IGV4dGVybmFsIHN1YnRpdGxlLgorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1NZW1vcnktQWxsb2NhdGlvbi5odG1sI2ctZnJlZSI+PGNvZGUgY2xhc3M9ImZ1bmN0aW9uIj5nX2ZyZWUoKTwvY29kZT48L2E+IGFmdGVyIHVzYWdlLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJGcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBmdWxsPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLXNldC12aXN1YWxpemF0aW9uIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb27CoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPmNvbnN0IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT4gKm5hbWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzYuNCI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPm5hbWU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD52aXN1YWxpemF0aW9uIGVsZW1lbnQgb2J0YWluZWQgZnJvbQorPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9ucy1nZXQiIHRpdGxlPSJnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldMKgKCkiPjxjb2RlIGNsYXNzPSJmdW5jdGlvbiI+Z3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQoKTwvY29kZT48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zNi41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+IGlmIHRoZSB2aXN1YWxpemF0aW9ucyB3YXMgc2V0IGNvcnJlY3RseS4gT3RoZXJ3aXNlLAorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtdmlzdWFsaXphdGlvbi1lbmFibGVkIj48L2E+PGgzPmdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZMKgKCk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK2dzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZCAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPiBlbmFibGVkPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aXN1YWxpemF0aW9uLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjM3LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5lbmFibGVkPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+VFJVRSBvciBGQUxTRTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpc3VhbGl6YXRpb24iPjwvYT48aDM+Z3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlzdWFsaXphdGlvbiAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjM4LjQiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgorPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InBhcmFtZXRlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT48dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPjwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC4zOC41Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IE5hbWUgb2YgdGhlIGN1cnJlbnRseSBlbmFibGVkIHZpc3VhbGl6YXRpb24uCis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLU1lbW9yeS1BbGxvY2F0aW9uLmh0bWwjZy1mcmVlIj48Y29kZSBjbGFzcz0iZnVuY3Rpb24iPmdfZnJlZSgpPC9jb2RlPjwvYT4gYWZ0ZXIgdXNhZ2UuIDwvcD4KKzxwPjxzcGFuIGNsYXNzPSJhbm5vdGF0aW9uIj5bPGFjcm9ueW0gdGl0bGU9IkZyZWUgZGF0YSBhZnRlciB0aGUgY29kZSBpcyBkb25lLiI+PHNwYW4gY2xhc3M9ImFjcm9ueW0iPnRyYW5zZmVyIGZ1bGw8L3NwYW4+PC9hY3JvbnltPl08L3NwYW4+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImdzdC1wbGF5ZXItY29sb3ItYmFsYW5jZS10eXBlLWdldC1uYW1lIj48L2E+PGgzPmdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Y29uc3QgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2djaGFyIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPmdjaGFyPC9zcGFuPjwvYT7CoCoKK2dzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSIgdGl0bGU9ImVudW0gR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU8L3NwYW4+PC9hPiB0eXBlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkdldHMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiBjb2xvciBiYWxhbmNlIHR5cGUuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnR5cGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD5hIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuMzkuNiI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBhIHN0cmluZyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjb2xvcgorYmFsYW5jZSB0eXBlLiA8L3A+Cis8cD48c3BhbiBjbGFzcz0iYW5ub3RhdGlvbiI+WzxhY3JvbnltIHRpdGxlPSJEb24ndCBmcmVlIGRhdGEgYWZ0ZXIgdGhlIGNvZGUgaXMgZG9uZS4iPjxzcGFuIGNsYXNzPSJhY3JvbnltIj50cmFuc2ZlciBub25lPC9zcGFuPjwvYWNyb255bT5dPC9zcGFuPjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWhhcy1jb2xvci1iYWxhbmNlIj48L2E+PGgzPmdzdF9wbGF5ZXJfaGFzX2NvbG9yX2JhbGFuY2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPgorZ3N0X3BsYXllcl9oYXNfY29sb3JfYmFsYW5jZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPkNoZWNrcyB3aGV0aGVyIHRoZSA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+cGxheWVyPC9jb2RlPjwvZW0+CisgaGFzIGNvbG9yIGJhbGFuY2Ugc3VwcG9ydCBhdmFpbGFibGUuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuNDAuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icGFyYW1ldGVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnBsYXllcjwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiBpbnN0YW5jZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE0LjQwLjYiPjwvYT48aDQ+UmV0dXJuczwvaDQ+Cis8cD4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNUUlVFOkNBUFMiPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj5UUlVFPC9jb2RlPjwvYT4gaWYgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnBsYXllcjwvY29kZT48L2VtPgoraGFzIGNvbG9yIGJhbGFuY2Ugc3VwcG9ydC4gT3RoZXJ3aXNlLAorPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1TdGFuZGFyZC1NYWNyb3MuaHRtbCNGQUxTRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+RkFMU0U8L2NvZGU+PC9hPi48L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtY29sb3ItYmFsYW5jZSI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZXRfY29sb3JfYmFsYW5jZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvc3Bhbj48L2E+IHR5cGU8L2NvZGU+PC9lbT4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT4gdmFsdWU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+U2V0cyB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5kaWNhdGVkIGNoYW5uZWwgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnR5cGU8L2NvZGU+PC9lbT4KKyB0byB0aGUgcGFzc2VkCit2YWx1ZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC40MS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dHlwZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX25hbWUiPjxwPnZhbHVlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+VGhlIG5ldyB2YWx1ZSBmb3IgdGhlIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50eXBlPC9jb2RlPjwvZW0+CissIHJhbmdlZCBbMCwxXTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1jb2xvci1iYWxhbmNlIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2XCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nZG91YmxlPC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2UgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSIgdGl0bGU9ImVudW0gR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU8L3NwYW4+PC9hPiB0eXBlPC9jb2RlPjwvZW0+KTs8L3ByZT4KKzxwPlJldHJpZXZlIHRoZSBjdXJyZW50IHZhbHVlIG9mIHRoZSBpbmRpY2F0ZWQgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnR5cGU8L2NvZGU+PC9lbT4KKy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC40Mi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+dHlwZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZTwvc3Bhbj48L2E+PC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC40Mi42Ij48L2E+PGg0PlJldHVybnM8L2g0PgorPHA+IFRoZSBjdXJyZW50IHZhbHVlIG9mIDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT50eXBlPC9jb2RlPjwvZW0+CissIGJldHdlZW4gWzAsMV0uIEluIGNhc2Ugb2YKK2Vycm9yIC0xIGlzIHJldHVybmVkLjwvcD4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJnc3QtcGxheWVyLWdldC1yYXRlIj48L2E+PGgzPmdzdF9wbGF5ZXJfZ2V0X3JhdGXCoCgpPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj5nZG91YmxlPC9zcGFuPjwvYT4KK2dzdF9wbGF5ZXJfZ2V0X3JhdGUgKDxlbSBjbGFzcz0icGFyYW1ldGVyIj48Y29kZT48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKnBsYXllcjwvY29kZT48L2VtPik7PC9wcmU+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC40My40Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+PHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cGxheWVyPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9kZXNjcmlwdGlvbiI+PHA+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+IGluc3RhbmNlPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj48L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTQuNDMuNSI+PC9hPjxoND5SZXR1cm5zPC9oND4KKzxwPiBjdXJyZW50IHBsYXliYWNrIHJhdGU8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iZ3N0LXBsYXllci1zZXQtcmF0ZSI+PC9hPjxoMz5nc3RfcGxheWVyX3NldF9yYXRlwqAoKTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgorZ3N0X3BsYXllcl9zZXRfcmF0ZSAoPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqcGxheWVyPC9jb2RlPjwvZW0+LAorICAgICAgICAgICAgICAgICAgICAgPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+IHJhdGU8L2NvZGU+PC9lbT4pOzwvcHJlPgorPHA+UGxheWJhY2sgYXQgc3BlY2lmaWVkIHJhdGU8L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNC40NC41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KKzxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9InBhcmFtZXRlcl9uYW1lIj48cD5wbGF5ZXI8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Rlc2NyaXB0aW9uIj48cD48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gaW5zdGFuY2U8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfbmFtZSI+PHA+cmF0ZTwvcD48L3RkPgorPHRkIGNsYXNzPSJwYXJhbWV0ZXJfZGVzY3JpcHRpb24iPjxwPnBsYXliYWNrIHJhdGU8L3A+PC90ZD4KKzx0ZCBjbGFzcz0icGFyYW1ldGVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1zdHJ1Y3QiPjwvYT48aDM+R3N0UGxheWVyPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyIEdzdFBsYXllcjs8L3ByZT4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyU3RhdGUiPjwvYT48aDM+ZW51bSBHc3RQbGF5ZXJTdGF0ZTwvaDM+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+Cis8YSBuYW1lPSJpZC0xLjIuMTAuMi4xNS4zLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGNvbGdyb3VwPgorPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+Cis8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgorPGNvbCB3aWR0aD0iMjAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfYW5ub3RhdGlvbnMiPgorPC9jb2xncm91cD4KKzx0Ym9keT4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULVBMQVlFUi1TVEFURS1TVE9QUEVEOkNBUFMiPjwvYT5HU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQ8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIHBsYXllciBpcyBzdG9wcGVkLjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtUExBWUVSLVNUQVRFLUJVRkZFUklORzpDQVBTIj48L2E+R1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIHBsYXllciBpcyBidWZmZXJpbmcuPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1QTEFZRVItU1RBVEUtUEFVU0VEOkNBUFMiPjwvYT5HU1RfUExBWUVSX1NUQVRFX1BBVVNFRDwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD50aGUgcGxheWVyIGlzIHBhdXNlZC48L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULVBMQVlFUi1TVEFURS1QTEFZSU5HOkNBUFMiPjwvYT5HU1RfUExBWUVSX1NUQVRFX1BMQVlJTkc8L3A+PC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfZGVzY3JpcHRpb24iPgorPHA+dGhlIHBsYXllciBpcyBjdXJyZW50bHkgcGxheWluZyBhCitzdHJlYW0uPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJFcnJvciI+PC9hPjxoMz5lbnVtIEdzdFBsYXllckVycm9yPC9oMz4KKzxkaXYgY2xhc3M9InJlZnNlY3QzIj4KKzxhIG5hbWU9ImlkLTEuMi4xMC4yLjE1LjQuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8Y29sZ3JvdXA+Cis8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KKzxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+Cis8Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19hbm5vdGF0aW9ucyI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULVBMQVlFUi1FUlJPUi1GQUlMRUQ6Q0FQUyI+PC9hPkdTVF9QTEFZRVJfRVJST1JfRkFJTEVEPC9wPjwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Rlc2NyaXB0aW9uIj4KKzxwPmdlbmVyaWMgZXJyb3IuPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSI+PC9hPjxoMz5lbnVtIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU8L2gzPgorPGRpdiBjbGFzcz0icmVmc2VjdDMiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjIuMTUuNS4zIj48L2E+PGg0Pk1lbWJlcnM8L2g0PgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgorPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX2Fubm90YXRpb25zIj4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1CUklHSFRORVNTOkNBUFMiPjwvYT5HU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQlJJR0hUTkVTUzwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5icmlnaHRuZXNzIG9yIGJsYWNrIGxldmVsLjwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9uYW1lIj48cD48YSBuYW1lPSJHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtQ09OVFJBU1Q6Q0FQUyI+PC9hPkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9DT05UUkFTVDwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5jb250cmFzdCBvciBsdW1hIGdhaW4uPC9wPgorPC90ZD4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9ImVudW1fbWVtYmVyX25hbWUiPjxwPjxhIG5hbWU9IkdTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1TQVRVUkFUSU9OOkNBUFMiPjwvYT5HU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfU0FUVVJBVElPTjwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5jb2xvciBzYXR1cmF0aW9uIG9yIGNocm9tYQorZ2Fpbi48L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0iZW51bV9tZW1iZXJfbmFtZSI+PHA+PGEgbmFtZT0iR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLUhVRTpDQVBTIj48L2E+R1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRTwvcD48L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9kZXNjcmlwdGlvbiI+Cis8cD5odWUgb3IgY29sb3IgYmFsYW5jZS48L3A+Cis8L3RkPgorPHRkIGNsYXNzPSJlbnVtX21lbWJlcl9hbm5vdGF0aW9ucyI+wqA8L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXItc3RydWN0Ij48L2E+PGgzPkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXI8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnR5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXI7PC9wcmU+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UiPjwvYT48aDM+c3RydWN0IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2U8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIHsKKyAgR1R5cGVJbnRlcmZhY2UgcGFyZW50X2lmYWNlOworCisgIHZvaWQgKCpkaXNwYXRjaCkgKEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgKiBzZWxmLAorICAgICAgICAgICAgICAgICAgICBHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJGdW5jIGVtaXR0ZXIsCisgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGEsCisgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3kpOworfTsKKzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyLXN0cnVjdCI+PC9hPjxoMz5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj50eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyVmlkZW9SZW5kZXJlciBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyOzwvcHJlPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIj48L2E+PGgzPnN0cnVjdCBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSB7CisgIEdUeXBlSW50ZXJmYWNlIHBhcmVudF9pZmFjZTsKKworICBHc3RFbGVtZW50ICogKCpjcmVhdGVfdmlkZW9fc2luaykgKEdzdFBsYXllclZpZGVvUmVuZGVyZXIgKiBzZWxmLCBHc3RQbGF5ZXIgKiBwbGF5ZXIpOworfTsKKzwvcHJlPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5wcm9wZXJ0eS1kZXRhaWxzIj48L2E+PGgyPlByb3BlcnR5IERldGFpbHM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1jdXJyZW50LWF1ZGlvLXRyYWNrIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcY3VycmVudC1hdWRpby10cmFja+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcY3VycmVudC1hdWRpby10cmFja+KAnSAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyQXVkaW9JbmZvPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPkN1cnJlbnQgYXVkaW8gdHJhY2sgaW5mb3JtYXRpb24uPC9wPgorPHA+RmxhZ3M6IFJlYWQ8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tY3VycmVudC1zdWJ0aXRsZS10cmFjayI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGN1cnJlbnQtc3VidGl0bGUtdHJhY2vigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGN1cnJlbnQtc3VidGl0bGUtdHJhY2vigJ0gICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclN1YnRpdGxlSW5mbzwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5DdXJyZW50IGF1ZGlvIHN1YnRpdGxlIGluZm9ybWF0aW9uLjwvcD4KKzxwPkZsYWdzOiBSZWFkPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLWN1cnJlbnQtdmlkZW8tdHJhY2siPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxjdXJyZW50LXZpZGVvLXRyYWNr4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxjdXJyZW50LXZpZGVvLXRyYWNr4oCdICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXJWaWRlb0luZm88L3NwYW4+PC9hPsKgKjwvcHJlPgorPHA+Q3VycmVudCB2aWRlbyB0cmFjayBpbmZvcm1hdGlvbi48L3A+Cis8cD5GbGFnczogUmVhZDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1kdXJhdGlvbiI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGR1cmF0aW9u4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxkdXJhdGlvbuKAnSAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50NjQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDY0PC9zcGFuPjwvYT48L3ByZT4KKzxwPkR1cmF0aW9uLjwvcD4KKzxwPkZsYWdzOiBSZWFkPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogMTg0NDY3NDQwNzM3MDk1NTE2MTU8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tbWVkaWEtaW5mbyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnG1lZGlhLWluZm/igJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnG1lZGlhLWluZm/igJ0gICAgICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllck1lZGlhSW5mbzwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5DdXJyZW50IG1lZGlhIGluZm9ybWF0aW9uLjwvcD4KKzxwPkZsYWdzOiBSZWFkPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLW11dGUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxtdXRl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxtdXRl4oCdICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgorPHA+TXV0ZS48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogRkFMU0U8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tcGlwZWxpbmUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxwaXBlbGluZeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCccGlwZWxpbmXigJ0gICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdEVsZW1lbnQ8L3NwYW4+PC9hPsKgKjwvcHJlPgorPHA+R1N0cmVhbWVyIHBpcGVsaW5lIHRoYXQgaXMgdXNlZC48L3A+Cis8cD5GbGFnczogUmVhZDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1wb3NpdGlvbiI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHBvc2l0aW9u4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxwb3NpdGlvbuKAnSAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50NjQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDY0PC9zcGFuPjwvYT48L3ByZT4KKzxwPkN1cnJlbnQgUG9zaXRpb24uPC9wPgorPHA+RmxhZ3M6IFJlYWQ8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiAxODQ0Njc0NDA3MzcwOTU1MTYxNTwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLS1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxwb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWzigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbOKAnSA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+PC9wcmU+Cis8cD5JbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0d28gcG9zaXRpb24tdXBkYXRlZCBzaWduYWxzLlBhc3MgMCB0byBzdG9wIHVwZGF0aW5nIHRoZSBwb3NpdGlvbi48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+QWxsb3dlZCB2YWx1ZXM6ICZsdDs9IDEwMDAwPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogMTAwPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLXJhdGUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxyYXRl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxyYXRl4oCdICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT48L3ByZT4KKzxwPlBsYXliYWNrIHJhdGUuPC9wPgorPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KKzxwPkFsbG93ZWQgdmFsdWVzOiBbLTY0LDY0XTwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IDE8L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci0tc2lnbmFsLWRpc3BhdGNoZXIiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxzaWduYWwtZGlzcGF0Y2hlcuKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcc2lnbmFsLWRpc3BhdGNoZXLigJ0gICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcjwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5EaXNwYXRjaGVyIGZvciB0aGUgc2lnbmFscyB0byBlLmcuIGV2ZW50IGxvb3BzLjwvcD4KKzxwPkZsYWdzOiBXcml0ZSAvIENvbnN0cnVjdCBPbmx5PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLXN1YnVyaSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHN1YnVyaeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcc3VidXJp4oCdICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPkN1cnJlbnQgU3VidGl0bGUgVVJJLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiBOVUxMPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLXVyaSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHVyaeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcdXJp4oCdICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPkN1cnJlbnQgVVJJLjwvcD4KKzxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiBOVUxMPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLXZpZGVvLXJlbmRlcmVyIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcdmlkZW8tcmVuZGVyZXLigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHZpZGVvLXJlbmRlcmVy4oCdICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyVmlkZW9SZW5kZXJlciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllclZpZGVvUmVuZGVyZXI8L3NwYW4+PC9hPsKgKjwvcHJlPgorPHA+VmlkZW8gcmVuZGVyZXIgdG8gdXNlIGZvciByZW5kZXJpbmcgdmlkZW9zLjwvcD4KKzxwPkZsYWdzOiBXcml0ZSAvIENvbnN0cnVjdCBPbmx5PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItLXZvbHVtZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHZvbHVtZeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcdm9sdW1l4oCdICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+PC9wcmU+Cis8cD5Wb2x1bWUuPC9wPgorPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KKzxwPkFsbG93ZWQgdmFsdWVzOiBbMCwxMF08L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiAxPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5zaWduYWwtZGV0YWlscyI+PC9hPjxoMj5TaWduYWwgRGV0YWlsczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItYnVmZmVyaW5nIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcYnVmZmVyaW5n4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqZ3N0cGxheWVyLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gICAgICAgYXJnMSwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItZHVyYXRpb24tY2hhbmdlZCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGR1cmF0aW9uLWNoYW5nZWTigJ08L2NvZGU+IHNpZ25hbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgordXNlcl9mdW5jdGlvbiAoPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQ2NCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50NjQ8L3NwYW4+PC9hPiAgICBhcmcxLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1lbmQtb2Ytc3RyZWFtIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcZW5kLW9mLXN0cmVhbeKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItZXJyb3IiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxlcnJvcuKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItRXJyb3ItUmVwb3J0aW5nLmh0bWwjR0Vycm9yIj48c3BhbiBjbGFzcz0idHlwZSI+R0Vycm9yPC9zcGFuPjwvYT4gICAgKmFyZzEsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgdXNlcl9kYXRhKTwvcHJlPgorPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLW1lZGlhLWluZm8tdXBkYXRlZCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnG1lZGlhLWluZm8tdXBkYXRlZOKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gICAgICAgICAgKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyTWVkaWFJbmZvPC9zcGFuPjwvYT4gKmFyZzEsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgICAgICAgICAgdXNlcl9kYXRhKTwvcHJlPgorPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLW11dGUtY2hhbmdlZCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnG11dGUtY2hhbmdlZOKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gKmdzdHBsYXllciwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItcG9zaXRpb24tdXBkYXRlZCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHBvc2l0aW9uLXVwZGF0ZWTigJ08L2NvZGU+IHNpZ25hbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgordXNlcl9mdW5jdGlvbiAoPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQ2NCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50NjQ8L3NwYW4+PC9hPiAgICBhcmcxLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1zZWVrLWRvbmUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxzZWVrLWRvbmXigJ08L2NvZGU+IHNpZ25hbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgordXNlcl9mdW5jdGlvbiAoPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQ2NCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50NjQ8L3NwYW4+PC9hPiAgICBhcmcxLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgIHVzZXJfZGF0YSk8L3ByZT4KKzxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1OTy1IT09LUzpDQVBTIj5ObyBIb29rczwvYT48L3A+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9IkdzdFBsYXllci1zdGF0ZS1jaGFuZ2VkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcc3RhdGUtY2hhbmdlZOKAnTwvY29kZT4gc2lnbmFsPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj48c3BhbiBjbGFzcz0icmV0dXJudmFsdWUiPnZvaWQ8L3NwYW4+Cit1c2VyX2Z1bmN0aW9uICg8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyPC9zcGFuPjwvYT4gICAgICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU3RhdGUiIHRpdGxlPSJlbnVtIEdzdFBsYXllclN0YXRlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0UGxheWVyU3RhdGU8L3NwYW4+PC9hPiBhcmcxLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dwb2ludGVyIj48c3BhbiBjbGFzcz0idHlwZSI+Z3BvaW50ZXI8L3NwYW4+PC9hPiAgICAgICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RQbGF5ZXItdmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcdmlkZW8tZGltZW5zaW9ucy1jaGFuZ2Vk4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqZ3N0cGxheWVyLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT4gICAgICAgYXJnMSwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+ICAgICAgIGFyZzIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgdXNlcl9kYXRhKTwvcHJlPgorPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLXZvbHVtZS1jaGFuZ2VkIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcdm9sdW1lLWNoYW5nZWTigJ08L2NvZGU+IHNpZ25hbDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+PHNwYW4gY2xhc3M9InJldHVybnZhbHVlIj52b2lkPC9zcGFuPgordXNlcl9mdW5jdGlvbiAoPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdFBsYXllcjwvc3Bhbj48L2E+ICpnc3RwbGF5ZXIsCisgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgdXNlcl9kYXRhKTwvcHJlPgorPHA+RmxhZ3M6IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtU2lnbmFscy5odG1sI0ctU0lHTkFMLU5PLUhPT0tTOkNBUFMiPk5vIEhvb2tzPC9hPjwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0UGxheWVyLXdhcm5pbmciPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJx3YXJuaW5n4oCdPC9jb2RlPiBzaWduYWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxzcGFuIGNsYXNzPSJyZXR1cm52YWx1ZSI+dm9pZDwvc3Bhbj4KK3VzZXJfZnVuY3Rpb24gKDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RQbGF5ZXI8L3NwYW4+PC9hPiAqZ3N0cGxheWVyLAorICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1FcnJvci1SZXBvcnRpbmcuaHRtbCNHRXJyb3IiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HRXJyb3I8L3NwYW4+PC9hPiAgICAqYXJnMSwKKyAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNncG9pbnRlciI+PHNwYW4gY2xhc3M9InR5cGUiPmdwb2ludGVyPC9zcGFuPjwvYT4gICB1c2VyX2RhdGEpPC9wcmU+Cis8cD5GbGFnczogPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1TaWduYWxzLmh0bWwjRy1TSUdOQUwtTk8tSE9PS1M6Q0FQUyI+Tm8gSG9va3M8L2E+PC9wPgorPC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPGRpdiBjbGFzcz0iZm9vdGVyIj4KKzxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgorPC9ib2R5PgorPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWgyNjRwYXJzZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWgyNjRwYXJzZXIuaHRtbAppbmRleCAwNjZiNDQzLi5hNTAxNjkwIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1oMjY0cGFyc2VyLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtaDI2NHBhcnNlci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+aDI2NHBhcnNlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjb2RlY3BhcnNlcnMuaHRtbCIgdGl0bGU9IkJpdHN0cmVhbSBwYXJzaW5nIExpYnJhcnkiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJjb2RlY3BhcnNlcnMuaHRtbCIgdGl0bGU9IkJpdHN0cmVhbSBwYXJzaW5nIExpYnJhcnkiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtaDI2NHBhcnNlci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMjExLDcgKzIxMSw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWgyNjRwYXJzZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTQwMCw3ICs0MDAsNyBAQAogPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ1Nyw3ICs0NTcsNyBAQAogLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy44LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01MTYsNyArNTE2LDcgQEAKICBpcyB1cCB0byBkYXRlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy45LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01NTUsNyArNTU1LDcgQEAKICBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjEwLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02MDgsNyArNjA4LDcgQEAKICBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjExLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC02NTksNyArNjU5LDcgQEAKIHRvIHBhcnNpbmcgYSBuZXcgUFBTIE5BTCB1bml0LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4xMi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzAxLDcgKzcwMSw3IEBACiAgYXJyYXkuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy43LjEzLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC03NTIsNyArNzUyLDcgQEAKICBhbmQgc2V0cyBpdCB0byA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI05VTEw6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPk5VTEw8L2NvZGU+PC9hPjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4xNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzc4LDcgKzc3OCw3IEBACiAgc3RydWN0dXJlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4xNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtODI0LDcgKzgyNCw3IEBACiB0byBwYXJzaW5nIGEgbmV3IFBQUyBOQUwgdW5pdC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMTcuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg2Myw3ICs4NjMsNyBAQAogIGludGVybmFsIHJlc291cmNlcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMTguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg5NSw3ICs4OTUsNyBAQAogIGFyZ3VtZW50cy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMTkuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkzNCw3ICs5MzQsNyBAQAogIGFyZ3VtZW50cy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMjAuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk3Myw3ICs5NzMsNyBAQAogIGFyZ3VtZW50cy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC4zLjcuMjEuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwMTIsNyArMTAxMiw3IEBACiAgYXJndW1lbnRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4yMi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA1NSw3ICsxMDU1LDcgQEAKICB0byAxLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuNy4yMy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTExMyw3ICsxMTEzLDcgQEAKIDxwPkluZGljYXRlcyB0aGUgdHlwZSBvZiBIMjY0IE5hbCBVbml0czwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuOC40LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTI3MCw3ICsxMjcwLDcgQEAKIDxwPlRoZSByZXN1bHQgb2YgcGFyc2luZyBIMjY0IGRhdGEuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjUuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMzI5LDcgKzEzMjksNyBAQAogPHA+VGhlIHR5cGUgb2YgU0VJIG1lc3NhZ2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjYuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMzgzLDcgKzEzODMsNyBAQAogPHA+U0VJIHBpY19zdHJ1Y3QgdHlwZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuOC43LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTQ2NSw3ICsxNDY1LDcgQEAKIDxwPlR5cGUgb2YgUGljdHVyZSBzbGljZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuOC44LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTU2MCw3ICsxNTYwLDcgQEAKIDxwPlN0cnVjdHVyZSBkZWZpbmluZyB0aGUgTmFsIHVuaXQgaGVhZGVyczwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuOC4xMC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNzEwLDcgKzE3MTAsNyBAQAogPHA+SDI2NCBTZXF1ZW5jZSBQYXJhbWV0ZXIgU2V0IChTUFMpPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuMy44LjExLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTIwNDcsNyArMjA0Nyw3IEBACiA8cD5EZWZpbmVzIHRoZSBIUkQgcGFyYW1ldGVyczwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuOC4xMy41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0yMTc4LDcgKzIxNzgsNyBAQAogPHA+VGhlIHN0cnVjdHVyZSByZXByZXNlbnRpbmcgdGhlIFZVSSBwYXJhbWV0ZXJzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjMuOC4xNC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1qcGVncGFyc2VyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1qcGVncGFyc2VyLmh0bWwKaW5kZXggYjhhYTI0ZS4uMzRkMmY1YyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtanBlZ3BhcnNlci5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLWpwZWdwYXJzZXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmpwZWdwYXJzZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY29kZWNwYXJzZXJzLmh0bWwiIHRpdGxlPSJCaXRzdHJlYW0gcGFyc2luZyBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtaDI2NHBhcnNlci5odG1sIiB0aXRsZT0iaDI2NHBhcnNlciI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1qcGVncGFyc2VyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0xMDgsNyArMTA4LDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtanBlZ3BhcnNlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMjIzLDcgKzIyMyw3IEBACiBkYXRhIGF2YWlsYWJsZSB3aGVuIHBhcnNpbmcgdGhlIHNlZ21lbnQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC43LjIuNiI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI3Myw3ICsyNzMsNyBAQAogYXZhaWxhYmxlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuNy4zLjYiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMTIsNyArMzEyLDcgQEAKIGF2YWlsYWJsZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjcuNC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzU3LDcgKzM1Nyw3IEBACiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLVN0YW5kYXJkLU1hY3Jvcy5odG1sI1RSVUU6Q0FQUyI+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPlRSVUU8L2NvZGU+PC9hPjs8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjcuNS43Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDAzLDcgKzQwMyw3IEBACiB0YWJsZSB3aWxsIGFsc28gYmUgc2V0IHRvIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItU3RhbmRhcmQtTWFjcm9zLmh0bWwjVFJVRTpDQVBTIj48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+VFJVRTwvY29kZT48L2E+LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuNy42LjciPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NDAsNyArNDQwLDcgQEAKIGF2YWlsYWJsZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjcuNy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDgzLDcgKzQ4Myw3IEBACiBzcGVjaWZpZWQgYnkgdGhlIEpQRUcgc3RhbmRhcmQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC43LjkuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU2Niw3ICs1NjYsNyBAQAogPHA+SlBFRyBlbnRyb3B5IGNvZGluZyBtb2RlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuOC4xMS40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU5OCw3ICs1OTgsNyBAQAogPHA+SlBFRyBlbmNvZGluZyBwcm9jZXNzZXMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjEyLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjUxLDcgKzY1MSw3IEBACiA8cD5BIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRoZSB0eXBlIG9mIGEgc2VnbWVudCwgaXRzIG9mZnNldCBhbmQgaXRzIHNpemUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjEzLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTcwMiw3ICs3MDIsNyBAQAogPHA+RnJhbWUgaGVhZGVyLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjQuOC4xNC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC03NTIsNyArNzUyLDcgQEAKIDxwPkNvbXBvbmVudC1zcGVjaWZpY2F0aW9uIHBhcmFtZXRlcnMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjE1LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc5NSw3ICs3OTUsNyBAQAogPHA+U2NhbiBoZWFkZXIuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjE2LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgyOSw3ICs4MjksNyBAQAogPHA+Q29tcG9uZW50LXNwZWNpZmljYXRpb24gcGFyYW1ldGVycy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMTcuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODY4LDcgKzg2OCw3IEBACiBkZWNvZGUgYW4gaW1hZ2UuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjE4LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkwMiw3ICs5MDIsNyBAQAogPHA+SHVmZm1hbiB0YWJsZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC40LjguMTkuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTQyLDcgKzk0Miw3IEBACiA8cD5RdWFudGl6YXRpb24gdGFibGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNC44LjIwLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWc0cGFyc2VyLmh0bWwgYi9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1tcGVnNHBhcnNlci5odG1sCmluZGV4IDA0Yzc2ZTguLjZkMDhkZDYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWc0cGFyc2VyLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZzRwYXJzZXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1wZWc0cGFyc2VyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNvZGVjcGFyc2Vycy5odG1sIiB0aXRsZT0iQml0c3RyZWFtIHBhcnNpbmcgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWd2aWRlb3BhcnNlci5odG1sIiB0aXRsZT0ibXBlZ3ZpZGVvcGFyc2VyIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWc0cGFyc2VyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0xMDEsNyArMTAxLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZzRwYXJzZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTIxNyw3ICsyMTcsNyBAQAogZm91bmQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi43LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTI3OSw3ICsyNzksNyBAQAogc3RydWN0dXJlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuNy4zLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zMzMsNyArMzMzLDcgQEAKICBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi43LjQuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTM3OCw3ICszNzgsNyBAQAogIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjcuNS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDI4LDcgKzQyOCw3IEBACiAgc3RydWN0dXJlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuNy42LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00NzksNyArNDc5LDcgQEAKICBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi43LjcuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTUyNyw3ICs1MjcsNyBAQAogIHN0cnVjdHVyZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuNy44LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01ODAsNyArNTgwLDcgQEAKIGRlZmluZWQgaW46IFRhYmxlIDYtMyDigJQgU3RhcnQgY29kZSB2YWx1ZXM8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTcxOCw3ICs3MTgsNyBAQAogZGVmaW5lZCBpbjogVGFibGUgNi01IC0tIE1lYW5pbmcgb2YgdmlzdWFsIG9iamVjdCB0eXBlPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi44LjMuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC03NjEsNyArNzYxLDcgQEAKIGRlZmluZWQgaW46IFRhYmxlIDYtMTIgLS0gTWVhbmluZyBvZiBwaXhlbCBhc3BlY3QgcmF0aW88L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguNC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgyMCw3ICs4MjAsNyBAQAogPHA+UmVzdWx0IHR5cGUgb2YgYW55IHBhcnNpbmcgZnVuY3Rpb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNi44LjUuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04NzEsNyArODcxLDcgQEAKIFRhYmxlIDYtMjAgLS0gTWVhbmluZyBvZiB2b3BfY29kaW5nX3R5cGU8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguNi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkxNyw3ICs5MTcsNyBAQAogZGVmaW5lZCBpbjogVGFibGUgNi0xMyAtLSBNZWFuaW5nIG9mIGNocm9tYV9mb3JtYXQ8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguNy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTkzOCw3ICs5MzgsNyBAQAogVGFibGUgNi0xNiDigJQgVmlkZW8gT2JqZWN0IExheWVyIHNoYXBlIHR5cGU8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguOC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTk3Nyw3ICs5NzcsNyBAQAogVGFibGUgVjIgLSAyIC0tIE1lYW5pbmcgb2Ygc3ByaXRlX2VuYWJsZSBjb2Rld29yZHM8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC42LjguOS40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEwMTIsNyArMTAxMiw3IEBACiBUYWJsZSBHLjEg4oCUIEZMQyB0YWJsZSBmb3IgcHJvZmlsZV9hbmRfbGV2ZWxfaW5kaWNhdGlvbjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC4xMC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExMzIsNyArMTEzMiw3IEBACiBUYWJsZSBHLjEg4oCUIEZMQyB0YWJsZSBmb3IgcHJvZmlsZV9hbmRfbGV2ZWxfaW5kaWNhdGlvbjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC4xMS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTE0NjIsNyArMTQ2Miw3IEBACiA8cD5BIHN0cnVjdHVyZSB0aGF0IGNvbnRhaW5zIHRoZSB0eXBlIG9mIGEgcGFja2V0LCBpdHMgb2Zmc2V0IGFuZCBpdHMgc2l6ZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC4yMC41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNTE1LDcgKzE1MTUsNyBAQAogNi4yLjUuMiBWaWRlbyBQbGFuZSB3aXRoIFNob3J0IEhlYWRlcjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjYuOC4yMS41Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0ic3RydWN0X21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19kZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtbGlicy1tcGVndmlkZW9wYXJzZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWd2aWRlb3BhcnNlci5odG1sCmluZGV4IDE3NDg2ZTAuLmEyMzIzZDEgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWd2aWRlb3BhcnNlci5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLW1wZWd2aWRlb3BhcnNlci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBlZ3ZpZGVvcGFyc2VyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNvZGVjcGFyc2Vycy5odG1sIiB0aXRsZT0iQml0c3RyZWFtIHBhcnNpbmcgTGlicmFyeSI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWpwZWdwYXJzZXIuaHRtbCIgdGl0bGU9ImpwZWdwYXJzZXIiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZ3ZpZGVvcGFyc2VyLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC0xMzMsNyArMTMzLDcgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZ3ZpZGVvcGFyc2VyLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0yMTksNyArMjE5LDcgQEAKIHRoZSBkYXRhIHRvIGZpbmQgdGhlIG5leHQgcGFja2V0IGlmIG5lZWRlZC48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjcuMi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMjczLDcgKzI3Myw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjcuMy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzI3LDcgKzMyNyw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjcuNC42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzgyLDcgKzM4Miw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjcuNS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDM2LDcgKzQzNiw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjcuNi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDkwLDcgKzQ5MCw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjcuNy42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNTU3LDcgKzU1Nyw3IEBACiA8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjcuOS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjIwLDcgKzYyMCw3IEBACiAgYXJndW1lbnRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy4xMS42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjU5LDcgKzY1OSw3IEBACiAgYXJndW1lbnRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuNy4xMi42Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjg5LDcgKzY4OSw3IEBACiA8cD5JbmRpY2F0ZXMgdGhlIHR5cGUgb2YgTVBFRyBwYWNrZXQ8L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguMi40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTc3MSw3ICs3NzEsNyBAQAogUGljdHVyZSBtYXkgb2NjdXIgdG9nZXRoZXIgb3Igc2VwYXJhdGVseS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguMy40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTgyMyw3ICs4MjMsNyBAQAogPHA+TXBlZy0yIExldmVscy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguNC40Ij48L2E+PGg0Pk1lbWJlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0iZW51bV9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0iZW51bV9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTg2OCw3ICs4NjgsNyBAQAogPHA+TXBlZy0yIFByb2ZpbGVzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuOC41LjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTI3LDcgKzkyNyw3IEBACiA8cD5QaWN0dXJlIHR5cGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS44LjYuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05NzIsNyArOTcyLDcgQEAKIDxwPlBpY3R1cmUgc3RydWN0dXJlIHR5cGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS44LjcuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xMDI4LDcgKzEwMjgsNyBAQAogPHA+VGhlIE1wZWcyIFZpZGVvIFNlcXVlbmNlIEhlYWRlciBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS44LjguNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTEyNywxMiArMTEyNywxNSBAQAogICBndWludDggdmJ2X2J1ZmZlcl9zaXplX2V4dGVuc2lvbjsKICAgZ3VpbnQ4IGxvd19kZWxheTsKICAgZ3VpbnQ4IGZwc19uX2V4dCwgZnBzX2RfZXh0OworCisgIC8qIEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gKi8KKyAgZ3VpbnQ4IHByb2ZpbGVfbGV2ZWxfZXNjYXBlX2JpdDsKIH07CiA8L3ByZT4KIDxwPlRoZSBNcGVnMiBWaWRlbyBTZXF1ZW5jZSBFeHRlbnNpb24gc3RydWN0dXJlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjUuOC45LjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTExOTUsNiArMTE5OCwxNCBAQAogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5GcmFtZXJhdGUgZGVub21pbmF0b3IgY29kZTwvcD48L3RkPgogPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Fubm90YXRpb25zIj7CoDwvdGQ+CiA8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX25hbWUiPjxwPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludDgiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDg8L3NwYW4+PC9hPsKgPGVtIGNsYXNzPSJzdHJ1Y3RmaWVsZCI+PGNvZGU+PGEgbmFtZT0iR3N0TXBlZ1ZpZGVvU2VxdWVuY2VFeHQucHJvZmlsZS1sZXZlbC1lc2NhcGUtYml0Ij48L2E+cHJvZmlsZV9sZXZlbF9lc2NhcGVfYml0PC9jb2RlPjwvZW0+OzwvcD48L3RkPgorPHRkIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyX2Rlc2NyaXB0aW9uIj48cD5Fc2NhcGUgYml0LiBJZiBzZXQsIHRoZSBtZWFuaW5nIG9mIHRoZQorPGVtIGNsYXNzPSJwYXJhbWV0ZXIiPjxjb2RlPnByb2ZpbGU8L2NvZGU+PC9lbT4KK2FuZCA8ZW0gY2xhc3M9InBhcmFtZXRlciI+PGNvZGU+bGV2ZWw8L2NvZGU+PC9lbT4KK2ZpZWxkcyBpcyBkaWZmZXJlbnQuPC9wPjwvdGQ+Cis8dGQgY2xhc3M9InN0cnVjdF9tZW1iZXJfYW5ub3RhdGlvbnMiPsKgPC90ZD4KKzwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgpAQCAtMTIxNCw3ICsxMjI1LDcgQEAKIDxwPlRoZSBNcGVnMiBWaWRlbyBQaWN0dXJlIEhlYWRlciBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS44LjEwLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTEyNjcsNyArMTI3OCw3IEBACiA8cD5UaGUgTXBlZyBWaWRlbyBHcm91cCBvZiBQaWN0dXJlIHN0cnVjdHVyZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC41LjguMTEuNSI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTM0MSw3ICsxMzUyLDcgQEAKIDxwPlRoZSBNcGVnMiBWaWRlbyBQaWN0dXJlIEV4dGVuc2lvbiBzdHJ1Y3R1cmUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNS44LjEyLjUiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLXZjMXBhcnNlci5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLmh0bWwKaW5kZXggOGU1OWIyZi4uYmZjYTA3MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtdmMxcGFyc2VyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT52YzFwYXJzZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY29kZWNwYXJzZXJzLmh0bWwiIHRpdGxlPSJCaXRzdHJlYW0gcGFyc2luZyBMaWJyYXJ5Ij4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtbXBlZzRwYXJzZXIuaHRtbCIgdGl0bGU9Im1wZWc0cGFyc2VyIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLXZjMXBhcnNlci5mdW5jdGlvbnMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9ImZ1bmN0aW9uc19yZXR1cm4iPgogPGNvbCBjbGFzcz0iZnVuY3Rpb25zX25hbWUiPgpAQCAtMTQxLDcgKzE0MSw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1saWJzLXZjMXBhcnNlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMjczLDcgKzI3Myw3IEBACiAgZmllbGRzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy43LjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTMxNiw3ICszMTYsNyBAQAogIGZpZWxkcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjcuMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtMzU5LDcgKzM1OSw3IEBACiAgZmllbGRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuNy40LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC00MDMsNyArNDAzLDcgQEAKICBmaWVsZHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy43LjUuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTQ0Nyw3ICs0NDcsNyBAQAogIGZpZWxkcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjcuNi41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNDkxLDcgKzQ5MSw3IEBACiAgZmllbGRzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuNy43LjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC01MzUsNyArNTM1LDcgQEAKICBmaWVsZHMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy43LjguNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InBhcmFtZXRlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJwYXJhbWV0ZXJzX2Rlc2NyaXB0aW9uIj4KQEAgLTU4NSw3ICs1ODUsNyBAQAogIGZpZWxkcy48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjcuOS41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNjY0LDcgKzY2NCw3IEBACiBpZiBpbiBhZHZhbmNlZCBtb2RlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuNy4xMy41Ij48L2E+PGg0PlBhcmFtZXRlcnM8L2g0PgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icGFyYW1ldGVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InBhcmFtZXRlcnNfZGVzY3JpcHRpb24iPgpAQCAtNzA5LDcgKzcwOSw3IEBACiA8YSBuYW1lPSJHc3RWQzFTdGFydENvZGUiPjwvYT48aDM+ZW51bSBHc3RWQzFTdGFydENvZGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjQuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC03ODAsNyArNzgwLDcgQEAKIDxhIG5hbWU9IkdzdFZDMVByb2ZpbGUiPjwvYT48aDM+ZW51bSBHc3RWQzFQcm9maWxlPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuOC41LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtODE2LDcgKzgxNiw3IEBACiA8YSBuYW1lPSJHc3RWQzFQYXJzZXJSZXN1bHQiPjwvYT48aDM+ZW51bSBHc3RWQzFQYXJzZXJSZXN1bHQ8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjYuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04NTcsNyArODU3LDcgQEAKIDxhIG5hbWU9IkdzdFZDMVBpY3R1cmVUeXBlIj48L2E+PGgzPmVudW0gR3N0VkMxUGljdHVyZVR5cGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjcuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC04OTgsNyArODk4LDcgQEAKIDxhIG5hbWU9IkdzdFZDMUxldmVsIj48L2E+PGgzPmVudW0gR3N0VkMxTGV2ZWw8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjguMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC05NTksNyArOTU5LDcgQEAKIDxhIG5hbWU9IkdzdFZDMVF1YW50aXplclNwZWMiPjwvYT48aDM+ZW51bSBHc3RWQzFRdWFudGl6ZXJTcGVjPC9oMz4KIDxkaXYgY2xhc3M9InJlZnNlY3QzIj4KIDxhIG5hbWU9ImlkLTEuMi40LjcuOC45LjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtOTk1LDcgKzk5NSw3IEBACiA8YSBuYW1lPSJHc3RWQzFEUVByb2ZpbGUiPjwvYT48aDM+ZW51bSBHc3RWQzFEUVByb2ZpbGU8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjEwLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTAzMSw3ICsxMDMxLDcgQEAKIDxhIG5hbWU9IkdzdFZDMUNvbmRvdmVyIj48L2E+PGgzPmVudW0gR3N0VkMxQ29uZG92ZXI8L2gzPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjExLjMiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJlbnVtX21lbWJlcnNfbmFtZSI+CiA8Y29sIGNsYXNzPSJlbnVtX21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTA2Miw3ICsxMDYyLDcgQEAKIDxhIG5hbWU9IkdzdFZDMU12TW9kZSI+PC9hPjxoMz5lbnVtIEdzdFZDMU12TW9kZTwvaDM+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguMTIuMyI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9ImVudW1fbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9ImVudW1fbWVtYmVyc19kZXNjcmlwdGlvbiI+CkBAIC0xNDAxLDcgKzE0MDEsNyBAQAogPC9wcmU+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MyI+CiA8YSBuYW1lPSJpZC0xLjIuNC43LjguMjIuNCI+PC9hPjxoND5NZW1iZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InN0cnVjdF9tZW1iZXJzX25hbWUiPgogPGNvbCBjbGFzcz0ic3RydWN0X21lbWJlcnNfZGVzY3JpcHRpb24iPgpAQCAtMTY5NCw3ICsxNjk0LDcgQEAKIDwvcHJlPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgogPGEgbmFtZT0iaWQtMS4yLjQuNy44LjIzLjQiPjwvYT48aDQ+TWVtYmVyczwvaDQ+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzdHJ1Y3RfbWVtYmVyc19uYW1lIj4KIDxjb2wgY2xhc3M9InN0cnVjdF9tZW1iZXJzX2Rlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvbGlicy9odG1sL2dzdHJlYW1lci1saWJzLWhpZXJhcmNoeS5odG1sIGIvZG9jcy9saWJzL2h0bWwvZ3N0cmVhbWVyLWxpYnMtaGllcmFyY2h5Lmh0bWwKaW5kZXggMmRlOTdkNC4uYzg5ODY3MyAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvZ3N0cmVhbWVyLWxpYnMtaGllcmFyY2h5Lmh0bWwKKysrIGIvZG9jcy9saWJzL2h0bWwvZ3N0cmVhbWVyLWxpYnMtaGllcmFyY2h5Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5QYXJ0wqBJSS7CoE9iamVjdCBIaWVyYXJjaHk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCIgdGl0bGU9IkdzdFBob3RvZ3JhcGh5Ij4KQEAgLTI3LDggKzI3LDEwIEBACiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QWxsb2NhdG9yLmh0bWwiPkdzdEFsbG9jYXRvcjwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvcgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yIj5Hc3RHTEFsbG9jYXRvcjwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IiPkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcjwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvciI+R3N0R0xCdWZmZXJBbGxvY2F0b3I8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPkdzdEdMTWVtb3J5QWxsb2NhdG9yPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciI+R3N0R0xNZW1vcnlQQk9BbGxvY2F0b3I8L2E+CiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0QmluLmh0bWwiPkdzdEJpbjwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEluc2VydGJpbi5odG1sI0dzdEluc2VydEJpbiI+R3N0SW5zZXJ0QmluPC9hPgpAQCAtNDAsMTUgKzQyLDI2IEBACiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29sb3JDb252ZXJ0Lmh0bWwiIHRpdGxlPSJHc3RHTENvbG9yQ29udmVydCI+R3N0R0xDb2xvckNvbnZlcnQ8L2E+CiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMQ29udGV4dC5odG1sIiB0aXRsZT0iR3N0R0xDb250ZXh0Ij5Hc3RHTENvbnRleHQ8L2E+CiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRGlzcGxheS5odG1sIiB0aXRsZT0iR3N0R0xEaXNwbGF5Ij5Hc3RHTERpc3BsYXk8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMRG93bmxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMRG93bmxvYWQiPkdzdEdMRG93bmxvYWQ8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTFNoYWRlci5odG1sIiB0aXRsZT0iR3N0R0xTaGFkZXIiPkdzdEdMU2hhZGVyPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSIuaHRtbCNHc3RHTFNMU3RhZ2UiPkdzdEdMU0xTdGFnZTwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCIgdGl0bGU9IkdzdEdMVXBsb2FkIj5Hc3RHTFVwbG9hZDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xVcGxvYWRNZXRhLmh0bWwiIHRpdGxlPSJHc3RHTFVwbG9hZE1ldGEiPkdzdEdMVXBsb2FkTWV0YTwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xXaW5kb3cuaHRtbCIgdGl0bGU9IkdzdEdMV2luZG93Ij5Hc3RHTFdpbmRvdzwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIiB0aXRsZT0iR3N0R0xGcmFtZWJ1ZmZlciI+R3N0R0xGcmFtZWJ1ZmZlcjwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiBHc3RHTFZpZXdDb252ZXJ0CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9IkdzdEdMV2luZG93Lmh0bWwiIHRpdGxlPSJHc3RHTFdpbmRvdyI+R3N0R0xXaW5kb3c8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllciI+R3N0UGxheWVyPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJHc3RHTEZyYW1lYnVmZmVyLmh0bWwiIHRpdGxlPSJHc3RHTEZyYW1lYnVmZmVyIj5Hc3RHTEZyYW1lYnVmZmVyPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+R3N0UGxheWVyU3RyZWFtSW5mbzwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSCPC9zcGFuPiAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj5Hc3RQbGF5ZXJBdWRpb0luZm88L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUgjwvc3Bhbj4gICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+R3N0UGxheWVyU3VidGl0bGVJbmZvPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilII8L3NwYW4+ICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPkdzdFBsYXllclZpZGVvSW5mbzwvYT4KKyAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllck1lZGlhSW5mbyI+R3N0UGxheWVyTWVkaWFJbmZvPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIKKyAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9HVHlwZU1vZHVsZS5odG1sIj5HSW50ZXJmYWNlPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIj5Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj5Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyPC9hPgogICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtQm94ZWQtVHlwZXMuaHRtbCI+R0JveGVkPC9hPgogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTZWN0aW9uIj5Hc3RNcGVndHNTZWN0aW9uPC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCNHc3RNcGVndHNEZXNjcmlwdG9yIj5Hc3RNcGVndHNEZXNjcmlwdG9yPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCNHc3RNcGVndHNEZXNjcmlwdG9yIj5Hc3RNcGVndHNEZXNjcmlwdG9yPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24iPkdzdFBsYXllclZpc3VhbGl6YXRpb248L2E+CiAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1FbnVtZXJhdGlvbi1hbmQtRmxhZy1UeXBlcy5odG1sIj5HRW51bTwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzU2VjdGlvblR5cGUiIHRpdGxlPSJlbnVtIEdzdE1wZWd0c1NlY3Rpb25UeXBlIj5Hc3RNcGVndHNTZWN0aW9uVHlwZTwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtQmFzZS1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzU2VjdGlvblRhYmxlSUQiIHRpdGxlPSJlbnVtIEdzdE1wZWd0c1NlY3Rpb25UYWJsZUlEIj5Hc3RNcGVndHNTZWN0aW9uVGFibGVJRDwvYT4KQEAgLTYxLDcgKzc0LDExIEBACiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUJhc2UtTVBFRy1UUy1kZXNjcmlwdG9ycy5odG1sI0dzdE1wZWd0c0lzbzYzOUF1ZGlvVHlwZSIgdGl0bGU9ImVudW0gR3N0TXBlZ3RzSXNvNjM5QXVkaW9UeXBlIj5Hc3RNcGVndHNJc282MzlBdWRpb1R5cGU8L2E+CiAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKUnOKUgOKUgDwvc3Bhbj4gPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLURWQi12YXJpYW50cy1vZi1NUEVHLVRTLXNlY3Rpb25zLmh0bWwjR3N0TXBlZ3RzUnVubmluZ1N0YXR1cyIgdGl0bGU9ImVudW0gR3N0TXBlZ3RzUnVubmluZ1N0YXR1cyI+R3N0TXBlZ3RzUnVubmluZ1N0YXR1czwvYT4KICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pSc4pSA4pSAPC9zcGFuPiA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtRFZCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCNHc3RNcGVndHNEVkJTZXJ2aWNlVHlwZSIgdGl0bGU9ImVudW0gR3N0TXBlZ3RzRFZCU2VydmljZVR5cGUiPkdzdE1wZWd0c0RWQlNlcnZpY2VUeXBlPC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTdHJlYW1UeXBlIiB0aXRsZT0iZW51bSBHc3RNcGVndHNTdHJlYW1UeXBlIj5Hc3RNcGVndHNTdHJlYW1UeXBlPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1CYXNlLU1QRUctVFMtc2VjdGlvbnMuaHRtbCNHc3RNcGVndHNTdHJlYW1UeXBlIiB0aXRsZT0iZW51bSBHc3RNcGVndHNTdHJlYW1UeXBlIj5Hc3RNcGVndHNTdHJlYW1UeXBlPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiB0aXRsZT0iZW51bSBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIj5Hc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJFcnJvciIgdGl0bGU9ImVudW0gR3N0UGxheWVyRXJyb3IiPkdzdFBsYXllckVycm9yPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilJzilIDilIA8L3NwYW4+IDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTdGF0ZSIgdGl0bGU9ImVudW0gR3N0UGxheWVyU3RhdGUiPkdzdFBsYXllclN0YXRlPC9hPgorICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEdMU3RlcmVvRG93bm1peAogPC9wcmU+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9nc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCBiL2RvY3MvbGlicy9odG1sL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sCmluZGV4IDQ2Nzk1ZmEuLmMyZmZiMmMgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL2dzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+UGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KQEAgLTExMSw2ICsxMTEsMTUgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sIj5Hc3RHTEFQSTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiPkdzdEdMQmFzZU1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCBidWZmZXJzPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+R3N0R0xCYXNlRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCA8c3BhbiBjbGFzcz0idHlwZSI+R3N0QmFzZVRyYW5zZm9ybTwvc3Bhbj4gc3ViY2xhc3MgZm9yIHRyYW5zZm9ybWluIE9wZW5HTCByZXNvdXJjZXM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiPkdzdEdMQnVmZmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGJ1ZmZlciBwb29sIGZvciA8c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+IG9iamVjdHM8L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTM4LDI1ICsxNDcsMjggQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCI+R3N0R0xEaXNwbGF5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCB3aW5kb3cgc3lzdGVtIGRpc3BsYXkgY29ubmVjdGlvbiBhYnN0cmFjdGlvbjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIj5Hc3RHTERvd25sb2FkPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBhbiBvYmplY3QgdGhhdCBkb3dubG9hZHMgR0wgdGV4dHVyZXM8L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiPkdzdEVHTEltYWdlTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+R3N0R0xCYXNlRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEZpbHRlci5odG1sIj5Hc3RHTEZpbHRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIj5Hc3RHTEZyYW1lYnVmZmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIj5Hc3RHTE1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIj5Hc3RHTE1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCI+R3N0R0xTaGFkZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCI+R3N0R0xNZW1vcnlQQk88L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiPkdzdEdMU2hhZGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBvYmplY3QgcmVwcmVzZW50aW5nIGFuIE9wZW5HTCBzaGFkZXIgcHJvZ3JhbTwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIj5Hc3RHTFNMPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBoZWxwZXJzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9Ii5odG1sIj5Hc3RHTFNMU3RhZ2U8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG9iamVjdCBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBzaGFkZXIgc3RhZ2VzPC9zcGFuPgogPC9kdD4KIDxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiPkdzdEdMU3luY01ldGE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CkBAIC0xNjUsMTIgKzE3Nyw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCI+R3N0R0xVcGxvYWQ8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IHVwbG9hZHMgdG8gR0wgdGV4dHVyZXM8L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIj5Hc3RHTFVwbG9hZE1ldGE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGE8L3NwYW4+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCI+VXRpbGl0aWVzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTFdpbmRvdy5odG1sIj5Hc3RHTFdpbmRvdzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgd2luZG93L3N1cmZhY2UgYWJzdHJhY3Rpb248L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTkxLDggKzE5NywzNSBAQAogPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwiPkdzdEdMV2luZG93WDExPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiPk9wZW5HTCBkZWJ1Z2dpbmc8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGhlbHBlciByb3V0aW5lcyBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBkZWJ1Z2dpbmc8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiPk9wZW5HTCBGb3JtYXRzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgorPC9kdD4KIDwvZGw+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iY2gwNy5odG1sIj5JbnRlcmZhY2VzPC9hPjwvc3Bhbj48L2R0PgorPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSJwbGF5ZXIuaHRtbCI+UGxheWVyIExpYnJhcnk8L2E+PC9zcGFuPjwvZHQ+Cis8ZGQ+PGRsPgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIj5nc3RwbGF5ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllcjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgTWVkaWEgSW5mb3JtYXRpb248L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwiPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgR0xpYiBNYWluQ29udGV4dCBkaXNwYXRjaGVyPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIj5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgUGxheWVyIFZpZGVvIE92ZXJsYXkgVmlkZW8gUmVuZGVyZXI8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiPmdzdHBsYXllci12aXN1YWxpemF0aW9uPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgVmlzdWFsaXphdGlvbjwvc3Bhbj4KKzwvZHQ+Cis8L2RsPjwvZGQ+Cis8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9ImNoMDguaHRtbCI+SW50ZXJmYWNlczwvYT48L3NwYW4+PC9kdD4KIDxkZD48ZGw+PGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwiPkdzdFBob3RvZ3JhcGh5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBJbnRlcmZhY2UgZm9yIGRpZ2l0YWwgaW1hZ2UgY2FwdHVyZSBlbGVtZW50czwvc3Bhbj4KIDwvZHQ+PC9kbD48L2RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvaW5kZXguaHRtbCBiL2RvY3MvbGlicy9odG1sL2luZGV4Lmh0bWwKaW5kZXggYjQ2YWNiNS4uNDI2OTBjNCAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvaW5kZXguaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9pbmRleC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KQEAgLTE1LDcgKzE1LDcgQEAKIDxkaXY+CiA8ZGl2Pjx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCI+PHRyPjx0aCB2YWxpZ249Im1pZGRsZSI+PHAgY2xhc3M9InRpdGxlIj5HU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvcD48L3RoPjwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXY+PHAgY2xhc3M9InJlbGVhc2VpbmZvIj4KLSAgICAgIGZvciBHU3RyZWFtZXIgQmFkIExpYnJhcnkgMS4wICgxLjYuMykKKyAgICAgIGZvciBHU3RyZWFtZXIgQmFkIExpYnJhcnkgMS4wICgxLjcuOTEpCiAgICAgICA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC1saWJzL2h0bWwvIiB0YXJnZXQ9Il90b3AiPmh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC1saWJzL2h0bWwvPC9hPi4KICAgICA8L3A+PC9kaXY+CiA8L2Rpdj4KQEAgLTExMCw2ICsxMTAsMTUgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sIj5Hc3RHTEFQSTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiPkdzdEdMQmFzZU1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCBidWZmZXJzPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+R3N0R0xCYXNlRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCA8c3BhbiBjbGFzcz0idHlwZSI+R3N0QmFzZVRyYW5zZm9ybTwvc3Bhbj4gc3ViY2xhc3MgZm9yIHRyYW5zZm9ybWluIE9wZW5HTCByZXNvdXJjZXM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwiPkdzdEdMQnVmZmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMQnVmZmVyUG9vbC5odG1sIj5Hc3RHTEJ1ZmZlclBvb2w8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGJ1ZmZlciBwb29sIGZvciA8c3BhbiBjbGFzcz0idHlwZSI+R3N0R0xNZW1vcnk8L3NwYW4+IG9iamVjdHM8L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTM3LDI1ICsxNDYsMjggQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTERpc3BsYXkuaHRtbCI+R3N0R0xEaXNwbGF5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCB3aW5kb3cgc3lzdGVtIGRpc3BsYXkgY29ubmVjdGlvbiBhYnN0cmFjdGlvbjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xEb3dubG9hZC5odG1sIj5Hc3RHTERvd25sb2FkPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBhbiBvYmplY3QgdGhhdCBkb3dubG9hZHMgR0wgdGV4dHVyZXM8L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwiPkdzdEVHTEltYWdlTWVtb3J5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEJhc2VGaWx0ZXIuaHRtbCI+R3N0R0xCYXNlRmlsdGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTEZpbHRlci5odG1sIj5Hc3RHTEZpbHRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xGcmFtZWJ1ZmZlci5odG1sIj5Hc3RHTEZyYW1lYnVmZmVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIj5Hc3RHTE1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sIj5Hc3RHTE1lbW9yeTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgbWVtb3J5IHN1YmNsYXNzIGZvciBHTCB0ZXh0dXJlczwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCI+R3N0R0xTaGFkZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCI+R3N0R0xNZW1vcnlQQk88L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgdGV4dHVyZXM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMU2hhZGVyLmh0bWwiPkdzdEdMU2hhZGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBvYmplY3QgcmVwcmVzZW50aW5nIGFuIE9wZW5HTCBzaGFkZXIgcHJvZ3JhbTwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sIj5Hc3RHTFNMPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBoZWxwZXJzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlcnM8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9Ii5odG1sIj5Hc3RHTFNMU3RhZ2U8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIG9iamVjdCBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBzaGFkZXIgc3RhZ2VzPC9zcGFuPgogPC9kdD4KIDxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwiPkdzdEdMU3luY01ldGE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CkBAIC0xNjQsMTIgKzE3Niw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iR3N0R0xVcGxvYWQuaHRtbCI+R3N0R0xVcGxvYWQ8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IHVwbG9hZHMgdG8gR0wgdGV4dHVyZXM8L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9IkdzdEdMVXBsb2FkTWV0YS5odG1sIj5Hc3RHTFVwbG9hZE1ldGE8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGFuIG9iamVjdCB0aGF0IHByb3ZpZGVzIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGE8L3NwYW4+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCI+VXRpbGl0aWVzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJHc3RHTFdpbmRvdy5odG1sIj5Hc3RHTFdpbmRvdzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgd2luZG93L3N1cmZhY2UgYWJzdHJhY3Rpb248L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTkwLDggKzE5NiwzNSBAQAogPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMV2luZG93WDExLmh0bWwiPkdzdEdMV2luZG93WDExPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiPk9wZW5HTCBkZWJ1Z2dpbmc8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIGhlbHBlciByb3V0aW5lcyBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBkZWJ1Z2dpbmc8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sIj5PcGVuR0wgTWlzY2VsbGFuZW91cyBVdGlsaXRpZXM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiPk9wZW5HTCBGb3JtYXRzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgorPC9kdD4KIDwvZGw+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0iY2hhcHRlciI+PGEgaHJlZj0iY2gwNy5odG1sIj5JbnRlcmZhY2VzPC9hPjwvc3Bhbj48L2R0PgorPGR0PjxzcGFuIGNsYXNzPSJjaGFwdGVyIj48YSBocmVmPSJwbGF5ZXIuaHRtbCI+UGxheWVyIExpYnJhcnk8L2E+PC9zcGFuPjwvZHQ+Cis8ZGQ+PGRsPgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIj5nc3RwbGF5ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllcjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgTWVkaWEgSW5mb3JtYXRpb248L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwiPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgR0xpYiBNYWluQ29udGV4dCBkaXNwYXRjaGVyPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIj5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgUGxheWVyIFZpZGVvIE92ZXJsYXkgVmlkZW8gUmVuZGVyZXI8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiPmdzdHBsYXllci12aXN1YWxpemF0aW9uPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgVmlzdWFsaXphdGlvbjwvc3Bhbj4KKzwvZHQ+Cis8L2RsPjwvZGQ+Cis8ZHQ+PHNwYW4gY2xhc3M9ImNoYXB0ZXIiPjxhIGhyZWY9ImNoMDguaHRtbCI+SW50ZXJmYWNlczwvYT48L3NwYW4+PC9kdD4KIDxkZD48ZGw+PGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5Lmh0bWwiPkdzdFBob3RvZ3JhcGh5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBJbnRlcmZhY2UgZm9yIGRpZ2l0YWwgaW1hZ2UgY2FwdHVyZSBlbGVtZW50czwvc3Bhbj4KIDwvZHQ+PC9kbD48L2RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvaW5kZXguc2dtbCBiL2RvY3MvbGlicy9odG1sL2luZGV4LnNnbWwKaW5kZXggNmNiMzg3NC4uOGY5MGU0MiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvaW5kZXguc2dtbAorKysgYi9kb2NzL2xpYnMvaHRtbC9pbmRleC5zZ21sCkBAIC0xMTc1LDcgKzExNzUsNiBAQAogPEFOQ0hPUiBpZD0iZ3N0LWdsLWFwaS1mcm9tLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLWFwaS1mcm9tLXN0cmluZyI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtcGxhdGZvcm0tdG8tc3RyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNnc3QtZ2wtcGxhdGZvcm0tdG8tc3RyaW5nIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1wbGF0Zm9ybS1mcm9tLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LWdsLXBsYXRmb3JtLWZyb20tc3RyaW5nIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jaGVjay1leHRlbnNpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI2dzdC1nbC1jaGVjay1leHRlbnNpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkub3RoZXJfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RHTEFQSSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQVBJLmh0bWwjR3N0R0xBUEkiPgogPEFOQ0hPUiBpZD0iR1NULUdMLUFQSS1OT05FOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktTk9ORTpDQVBTIj4KQEAgLTExOTYsNiArMTE5NSw4NCBAQAogPEFOQ0hPUiBpZD0iR1NULUdMLUFQSS1HTEVTMi1OQU1FOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktR0xFUzItTkFNRTpDQVBTIj4KIDxBTkNIT1IgaWQ9IkdTVC1HTC1BUEktT1BFTkdMMy1OQU1FOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEFQSS5odG1sI0dTVC1HTC1BUEktT1BFTkdMMy1OQU1FOkNBUFMiPgogPEFOQ0hPUiBpZD0iR1NULUdMLUFQSS1PUEVOR0wtTkFNRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xBUEkuaHRtbCNHU1QtR0wtQVBJLU9QRU5HTC1OQU1FOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5LmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5mdW5jdGlvbnMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR1NULU1BUC1HTDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULU1BUC1HTDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SOkNBUFMiPgorPEFOQ0hPUiBpZD0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyI+Cis8QU5DSE9SIGlkPSJHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUFMTE9DOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1BTExPQzpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtU1lTTUVNOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1XUkFQLVNZU01FTTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLVdSQVAtR1BVLUhBTkRMRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctV1JBUC1HUFUtSEFORExFOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctVVNFUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctVVNFUjpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1pbml0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWluaXQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWFsbG9jYXRpb24tcGFyYW1zLWNvcHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1mcmVlLWRhdGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtZnJlZS1kYXRhIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYWxsb2NhdGlvbi1wYXJhbXMtY29weS1kYXRhIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1iYXNlLW1lbW9yeS1pbml0LW9uY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktaW5pdC1vbmNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1iYXNlLW1lbW9yeS1pbml0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWdsLWJhc2UtbWVtb3J5LWluaXQiPgorPEFOQ0hPUiBpZD0iZ3N0LWlzLWdsLWJhc2UtbWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLWJhc2UtbWVtb3J5Ij4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24iPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24iPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYmFzZS1tZW1vcnktYWxsb2MtZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI2dzdC1nbC1iYXNlLW1lbW9yeS1hbGxvYy1kYXRhIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1iYXNlLW1lbW9yeS1tZW1jcHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtZ2wtYmFzZS1tZW1vcnktbWVtY3B5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQkFTRS1NRU1PUlktQUxMT0NBVE9SLU5BTUU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dTVC1HTC1CQVNFLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZU1lbW9yeUVycm9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xCYXNlTWVtb3J5RXJyb3IiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLUZBSUxFRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLUZBSUxFRDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1CQVNFLU1FTU9SWS1FUlJPUi1PTEQtTElCUzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLU9MRC1MSUJTOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUJBU0UtTUVNT1JZLUVSUk9SLVJFU09VUkNFLVVOQVZBSUxBQkxFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktRVJST1ItUkVTT1VSQ0UtVU5BVkFJTEFCTEU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeVRyYW5zZmVyIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1CQVNFLU1FTU9SWS1UUkFOU0ZFUi1ORUVELURPV05MT0FEOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNHU1QtR0wtQkFTRS1NRU1PUlktVFJBTlNGRVItTkVFRC1ET1dOTE9BRDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1CQVNFLU1FTU9SWS1UUkFOU0ZFUi1ORUVELVVQTE9BRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR1NULUdMLUJBU0UtTUVNT1JZLVRSQU5TRkVSLU5FRUQtVVBMT0FEOkNBUFMiPgorPEFOQ0hPUiBpZD0iR3N0R0xBbGxvY2F0aW9uUGFyYW1zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xiYXNlbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZU1lbW9yeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsYmFzZW1lbW9yeS5odG1sI0dzdEdMQmFzZU1lbW9yeSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbGJhc2VtZW1vcnkuc2VlLWFsc28iPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIucHJvcGVydGllcyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIub3RoZXIiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIub2JqZWN0LWhpZXJhcmNoeSI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyQ2xhc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXJDbGFzcyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5wcm9wZXJ0eS1kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci0tY29udGV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci0tY29udGV4dCI+Cis8QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIuc2VlLWFsc28iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuZnVuY3Rpb25zIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyQWxsb2NhdG9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIub2JqZWN0LWhpZXJhcmNoeSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1idWZmZXItaW5pdC1vbmNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtZ2wtYnVmZmVyLWluaXQtb25jZSI+Cis8QU5DSE9SIGlkPSJnc3QtaXMtZ2wtYnVmZmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtaXMtZ2wtYnVmZmVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1idWZmZXItYWxsb2MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI2dzdC1nbC1idWZmZXItYWxsb2MiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUFMTE9DQVRJT04tUEFSQU1TLUFMTE9DLUZMQUctQlVGRkVSOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dTVC1HTC1BTExPQ0FUSU9OLVBBUkFNUy1BTExPQy1GTEFHLUJVRkZFUjpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1idWZmZXItYWxsb2NhdGlvbi1wYXJhbXMtbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtZ2wtYnVmZmVyLWFsbG9jYXRpb24tcGFyYW1zLW5ldyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlciI+Cis8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyI+Cis8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlckFsbG9jYXRvci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5odG1sI0dzdEdMQnVmZmVyQWxsb2NhdG9yLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1CVUZGRVItQUxMT0NBVE9SLU5BTUU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjR1NULUdMLUJVRkZFUi1BTExPQ0FUT1ItTkFNRTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUdMLUJVRkZFUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuaHRtbCNHU1QtQ0FQUy1GRUFUVVJFLU1FTU9SWS1HTC1CVUZGRVI6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTEJ1ZmZlci5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMQnVmZmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xCdWZmZXIuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXJQb29sIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCdWZmZXJQb29sLmh0bWwiPgogPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXJQb29sLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbC5mdW5jdGlvbnMiPgogPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXJQb29sLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLm90aGVyIj4KQEAgLTEyMDMsNiArMTI4MCw4IEBACiA8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlclBvb2wuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wuZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iR3N0R0xCdWZmZXJQb29sLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sLmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1idWZmZXItcG9vbC1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtZ2wtYnVmZmVyLXBvb2wtbmV3Ij4KKzxBTkNIT1IgaWQ9ImdzdC1idWZmZXItcG9vbC1jb25maWctZ2V0LWdsLWFsbG9jYXRpb24tcGFyYW1zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCdWZmZXJQb29sLmh0bWwjZ3N0LWJ1ZmZlci1wb29sLWNvbmZpZy1nZXQtZ2wtYWxsb2NhdGlvbi1wYXJhbXMiPgorPEFOQ0hPUiBpZD0iZ3N0LWJ1ZmZlci1wb29sLWNvbmZpZy1zZXQtZ2wtYWxsb2NhdGlvbi1wYXJhbXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNnc3QtYnVmZmVyLXBvb2wtY29uZmlnLXNldC1nbC1hbGxvY2F0aW9uLXBhcmFtcyI+CiA8QU5DSE9SIGlkPSJHc3RHTEJ1ZmZlclBvb2wub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQnVmZmVyUG9vbC5odG1sI0dzdEdMQnVmZmVyUG9vbC5vdGhlcl9kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyUG9vbC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJ1ZmZlclBvb2wuaHRtbCNHc3RHTEJ1ZmZlclBvb2wtc3RydWN0Ij4KIDxBTkNIT1IgaWQ9IkdzdEdMQnVmZmVyUG9vbENsYXNzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCdWZmZXJQb29sLmh0bWwjR3N0R0xCdWZmZXJQb29sQ2xhc3MiPgpAQCAtMTIxNiw2ICsxMjk1LDggQEAKIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb2xvci1jb252ZXJ0LW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtbmV3Ij4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb2xvci1jb252ZXJ0LXNldC1jYXBzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1zZXQtY2FwcyI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtY29sb3ItY29udmVydC10cmFuc2Zvcm0tY2FwcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29sb3JDb252ZXJ0Lmh0bWwjZ3N0LWdsLWNvbG9yLWNvbnZlcnQtdHJhbnNmb3JtLWNhcHMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbG9yLWNvbnZlcnQtZml4YXRlLWNhcHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbG9yQ29udmVydC5odG1sI2dzdC1nbC1jb2xvci1jb252ZXJ0LWZpeGF0ZS1jYXBzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb2xvci1jb252ZXJ0LWRlY2lkZS1hbGxvY2F0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1kZWNpZGUtYWxsb2NhdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtY29sb3ItY29udmVydC1wZXJmb3JtIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNnc3QtZ2wtY29sb3ItY29udmVydC1wZXJmb3JtIj4KIDxBTkNIT1IgaWQ9IkdzdEdMQ29sb3JDb252ZXJ0Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbG9yQ29udmVydC5odG1sI0dzdEdMQ29sb3JDb252ZXJ0Lm90aGVyX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iR1NULUdMLUNPTE9SLUNPTlZFUlQtRk9STUFUUzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb2xvckNvbnZlcnQuaHRtbCNHU1QtR0wtQ09MT1ItQ09OVkVSVC1GT1JNQVRTOkNBUFMiPgpAQCAtMTIzOSw2ICsxMzIwLDcgQEAKIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWFjdGl2YXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtYWN0aXZhdGUiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZGVmYXVsdC1nZXQtcHJvYy1hZGRyZXNzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZGVmYXVsdC1nZXQtcHJvYy1hZGRyZXNzIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtcHJvYy1hZGRyZXNzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3Mtd2l0aC1wbGF0Zm9ybSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWdldC1wcm9jLWFkZHJlc3Mtd2l0aC1wbGF0Zm9ybSI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1nZXQtd2luZG93IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LXdpbmRvdyI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1zZXQtd2luZG93IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LXdpbmRvdyI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC10aHJlYWQtYWRkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtdGhyZWFkLWFkZCI+CkBAIC0xMjUwLDYgKzEzMzIsOCBAQAogPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2V0LWN1cnJlbnQtZ2wtYXBpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWN1cnJlbnQtZ2wtYXBpIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdldC10aHJlYWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1nZXQtdGhyZWFkIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWNhbi1zaGFyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQ29udGV4dC5odG1sI2dzdC1nbC1jb250ZXh0LWNhbi1zaGFyZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1pcy1zaGFyZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1pcy1zaGFyZWQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtc2V0LXNoYXJlZC13aXRoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtc2V0LXNoYXJlZC13aXRoIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWNoZWNrLWZlYXR1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1mZWF0dXJlIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWNoZWNrLWdsLXZlcnNpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTENvbnRleHQuaHRtbCNnc3QtZ2wtY29udGV4dC1jaGVjay1nbC12ZXJzaW9uIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdldC1nbC12ZXJzaW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xDb250ZXh0Lmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWdsLXZlcnNpb24iPgpAQCAtMTMyOCw2ICsxNDEyLDcgQEAKIDxBTkNIT1IgaWQ9ImdzdC1nbC1kaXNwbGF5LWFkZC1jb250ZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWdsLWRpc3BsYXktYWRkLWNvbnRleHQiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWRpc3BsYXktZ2V0LWdsLWNvbnRleHQtZm9yLXRocmVhZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWdldC1nbC1jb250ZXh0LWZvci10aHJlYWQiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLWRpc3BsYXktZ2V0LWhhbmRsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRGlzcGxheS5odG1sI2dzdC1nbC1kaXNwbGF5LWdldC1oYW5kbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWRpc3BsYXktY3JlYXRlLWNvbnRleHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERpc3BsYXkuaHRtbCNnc3QtZ2wtZGlzcGxheS1jcmVhdGUtY29udGV4dCI+CiA8QU5DSE9SIGlkPSJnc3QtY29udGV4dC1nZXQtZ2wtZGlzcGxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRGlzcGxheS5odG1sI2dzdC1jb250ZXh0LWdldC1nbC1kaXNwbGF5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1jb250ZXh0LXNldC1nbC1kaXNwbGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEaXNwbGF5Lmh0bWwjZ3N0LWNvbnRleHQtc2V0LWdsLWRpc3BsYXkiPgogPEFOQ0hPUiBpZD0iR3N0R0xEaXNwbGF5Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERpc3BsYXkuaHRtbCNHc3RHTERpc3BsYXkub3RoZXJfZGV0YWlscyI+CkBAIC0xMzQ1LDE5ICsxNDMwLDYgQEAKIDxBTkNIT1IgaWQ9IkdzdEdMRGlzcGxheS5zaWduYWwtZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRGlzcGxheS5odG1sI0dzdEdMRGlzcGxheS5zaWduYWwtZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RHTERpc3BsYXktY3JlYXRlLWNvbnRleHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERpc3BsYXkuaHRtbCNHc3RHTERpc3BsYXktY3JlYXRlLWNvbnRleHQiPgogPEFOQ0hPUiBpZD0iR3N0R0xEaXNwbGF5LnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEaXNwbGF5Lmh0bWwjR3N0R0xEaXNwbGF5LnNlZS1hbHNvIj4KLTxBTkNIT1IgaWQ9IkdzdEdMRG93bmxvYWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwiPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwjR3N0R0xEb3dubG9hZC5mdW5jdGlvbnMiPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLm90aGVyIj4KLTxBTkNIT1IgaWQ9IkdzdEdMRG93bmxvYWQub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9IkdzdEdMRG93bmxvYWQuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwjR3N0R0xEb3dubG9hZC5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtZG93bmxvYWQtbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC1uZXciPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWRvd25sb2FkLXNldC1mb3JtYXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXNldC1mb3JtYXQiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWRvd25sb2FkLXRyYW5zZm9ybS1jYXBzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xEb3dubG9hZC5odG1sI2dzdC1nbC1kb3dubG9hZC10cmFuc2Zvcm0tY2FwcyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtZG93bmxvYWQtcGVyZm9ybS13aXRoLWRhdGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwjZ3N0LWdsLWRvd25sb2FkLXBlcmZvcm0td2l0aC1kYXRhIj4KLTxBTkNIT1IgaWQ9IkdzdEdMRG93bmxvYWQub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTERvd25sb2FkLmh0bWwjR3N0R0xEb3dubG9hZC1zdHJ1Y3QiPgotPEFOQ0hPUiBpZD0iR3N0R0xEb3dubG9hZC5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRG93bmxvYWQuaHRtbCNHc3RHTERvd25sb2FkLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5LmZ1bmN0aW9ucyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkub3RoZXIiPgpAQCAtMTM3MywxNyArMTQ0NSw2IEBACiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RFR0xJbWFnZU1lbW9yeS5vdGhlcl9kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdTVC1FR0wtSU1BR0UtTUVNT1JZLVRZUEU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEVHTEltYWdlTWVtb3J5Lmh0bWwjR1NULUVHTC1JTUFHRS1NRU1PUlktVFlQRTpDQVBTIj4KIDxBTkNIT1IgaWQ9IkdTVC1DQVBTLUZFQVRVUkUtTUVNT1JZLUVHTC1JTUFHRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0RUdMSW1hZ2VNZW1vcnkuaHRtbCNHU1QtQ0FQUy1GRUFUVVJFLU1FTU9SWS1FR0wtSU1BR0U6Q0FQUyI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5wcm9wZXJ0aWVzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5vdGhlciI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlci5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXIuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEJhc2VGaWx0ZXIuaHRtbCNHc3RHTEJhc2VGaWx0ZXIub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXItc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJHc3RHTEJhc2VGaWx0ZXJDbGFzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMQmFzZUZpbHRlci5odG1sI0dzdEdMQmFzZUZpbHRlckNsYXNzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQmFzZUZpbHRlci5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLnByb3BlcnR5LWRldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0R0xCYXNlRmlsdGVyLS1jb250ZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xCYXNlRmlsdGVyLmh0bWwjR3N0R0xCYXNlRmlsdGVyLS1jb250ZXh0Ij4KIDxBTkNIT1IgaWQ9IkdzdEdMRmlsdGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xGaWx0ZXIuaHRtbCI+CiA8QU5DSE9SIGlkPSJHc3RHTEZpbHRlci5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEZpbHRlci5odG1sI0dzdEdMRmlsdGVyLmZ1bmN0aW9ucyI+CiA8QU5DSE9SIGlkPSJHc3RHTEZpbHRlci5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRmlsdGVyLmh0bWwjR3N0R0xGaWx0ZXIub3RoZXIiPgpAQCAtMTQxMCwxMDkgKzE0NzEsMTgwIEBACiA8QU5DSE9SIGlkPSJHc3RHTEZyYW1lYnVmZmVyLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTEZyYW1lYnVmZmVyLmh0bWwjR3N0R0xGcmFtZWJ1ZmZlci5vdGhlcl9kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEdMRnJhbWVidWZmZXItc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xGcmFtZWJ1ZmZlci5odG1sI0dzdEdMRnJhbWVidWZmZXItc3RydWN0Ij4KIDxBTkNIT1IgaWQ9IkdzdEdMRnJhbWVidWZmZXJDbGFzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMRnJhbWVidWZmZXIuaHRtbCNHc3RHTEZyYW1lYnVmZmVyQ2xhc3MiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuZnVuY3Rpb25zIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQWxsb2NhdG9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNHc3RHTEFsbG9jYXRvciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkub2JqZWN0LWhpZXJhcmNoeSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuZGVzY3JpcHRpb24iPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LmZ1bmN0aW9uc19kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktaW5pdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktYWxsb2MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktYWxsb2MiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS13cmFwcGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LXdyYXBwZWQiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS13cmFwcGVkLXRleHR1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktd3JhcHBlZC10ZXh0dXJlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktY29weS1pbnRvLXRleHR1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS1pbnRvLXRleHR1cmUiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1zZXR1cC1idWZmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktc2V0dXAtYnVmZmVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktc2V0dXAtd3JhcHBlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC13cmFwcGVkIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1nbC10ZXh0dXJlLXR5cGUtZnJvbS1mb3JtYXQiPgotPEFOQ0hPUiBpZD0iZ3N0LWlzLWdsLW1lbW9yeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjZ3N0LWlzLWdsLW1lbW9yeSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMQWxsb2NhdG9yLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xBbGxvY2F0b3Itc3RydWN0Ij4KLTxBTkNIT1IgaWQ9IkdzdEdMQWxsb2NhdG9yQ2xhc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI0dzdEdMQWxsb2NhdG9yQ2xhc3MiPgotPEFOQ0hPUiBpZD0iR1NULUdMLU1FTU9SWS1BTExPQ0FUT1I6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR1NULUdMLU1FTU9SWS1BTExPQ0FUT1I6Q0FQUyI+Ci08QU5DSE9SIGlkPSJHc3RHTE1lbW9yeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnkuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5LnNlZS1hbHNvIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmZ1bmN0aW9ucyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5wcm9wZXJ0aWVzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIub2JqZWN0LWhpZXJhcmNoeSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuZGVzY3JpcHRpb24iPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmZ1bmN0aW9uc19kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItZXJyb3ItcXVhcmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZXJyb3ItcXVhcmsiPgotPEFOQ0hPUiBpZD0iR1NULUdMLVNIQURFUi1FUlJPUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUVSUk9SOkNBUFMiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLXNldCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLXNldCI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVydmFyaWFibGVzLXBhcnNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVydmFyaWFibGVzLXBhcnNlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLW5ldyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC12ZXJ0ZXgtc291cmNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC12ZXJ0ZXgtc291cmNlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LWZyYWdtZW50LXNvdXJjZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtZnJhZ21lbnQtc291cmNlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItZ2V0LXZlcnRleC1zb3VyY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LXZlcnRleC1zb3VyY2UiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1nZXQtZnJhZ21lbnQtc291cmNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1mcmFnbWVudC1zb3VyY2UiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1nZXQtcHJvZ3JhbS1oYW5kbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LXByb2dyYW0taGFuZGxlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LWFjdGl2ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtYWN0aXZlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItaXMtY29tcGlsZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItaXMtY29tcGlsZWQiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1jb21waWxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1jb21waWxlLWFuZC1jaGVjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1jb21waWxlLWFuZC1jaGVjayI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtYWxsLXdpdGgtYXR0cmlicy1hbmQtY2hlY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hbGwtd2l0aC1hdHRyaWJzLWFuZC1jaGVjayI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LWYtYW5kLWNoZWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWNvbXBpbGUtd2l0aC1kZWZhdWx0LWYtYW5kLWNoZWNrIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdi1hbmQtY2hlY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdi1hbmQtY2hlY2siPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1jb21waWxlLXdpdGgtZGVmYXVsdC12Zi1hbmQtY2hlY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS13aXRoLWRlZmF1bHQtdmYtYW5kLWNoZWNrIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItcmVsZWFzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1yZWxlYXNlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItdXNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXVzZSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWl2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMmZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMml2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2Z2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tM2l2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tNGl2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDNmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMngzZnYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMng0ZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4NGZ2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM2Z2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4MmZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDJmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDRmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3g0ZnYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00ZnYiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgyZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4M2Z2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZ2V0LWF0dHJpYnV0ZS1sb2NhdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWJpbmQtYXR0cmlidXRlLWxvY2F0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXJFcnJvciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXJFcnJvciI+Ci08QU5DSE9SIGlkPSJHU1QtR0wtU0hBREVSLUVSUk9SLUNPTVBJTEU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR1NULUdMLVNIQURFUi1FUlJPUi1DT01QSUxFOkNBUFMiPgotPEFOQ0hPUiBpZD0iR1NULUdMLVNIQURFUi1FUlJPUi1MSU5LOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dTVC1HTC1TSEFERVItRVJST1ItTElOSzpDQVBTIj4KLTxBTkNIT1IgaWQ9IkdTVC1HTC1TSEFERVItRVJST1ItUFJPR1JBTTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUVSUk9SLVBST0dSQU06Q0FQUyI+Ci08QU5DSE9SIGlkPSJHc3RHTFNoYWRlclNvdXJjZVR5cGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyU291cmNlVHlwZSI+Ci08QU5DSE9SIGlkPSJHU1QtR0wtU0hBREVSLUZSQUdNRU5ULVNPVVJDRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLUZSQUdNRU5ULVNPVVJDRTpDQVBTIj4KLTxBTkNIT1IgaWQ9IkdTVC1HTC1TSEFERVItVkVSVEVYLVNPVVJDRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHU1QtR0wtU0hBREVSLVZFUlRFWC1TT1VSQ0U6Q0FQUyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVydmFyaWFibGUtZGVzYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlcnZhcmlhYmxlLWRlc2MiPgotPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXItc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci1zdHJ1Y3QiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIucHJvcGVydHktZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RHTFNoYWRlci0tYWN0aXZlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xzaGFkZXIuaHRtbCNHc3RHTFNoYWRlci0tYWN0aXZlIj4KLTxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLS1jb21waWxlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsc2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWNvbXBpbGVkIj4KLTxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLS1mcmFnbWVudC1zcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS1mcmFnbWVudC1zcmMiPgotPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXItLXZlcnRleC1zcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbHNoYWRlci5odG1sI0dzdEdMU2hhZGVyLS12ZXJ0ZXgtc3JjIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJHc3RHTE1lbW9yeUFsbG9jYXRvciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3IiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lm90aGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lm9iamVjdC1oaWVyYXJjaHkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1WSURFTzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtQUxMT0NBVElPTi1QQVJBTVMtQUxMT0MtRkxBRy1WSURFTzpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1jb3B5LWRhdGEiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLWZyZWUtZGF0YSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtaW5pdC1mdWxsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtaW5pdC1mdWxsIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXciPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZpZGVvLWFsbG9jYXRpb24tcGFyYW1zLW5ldy13cmFwcGVkLWRhdGEiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXctd3JhcHBlZC1kYXRhIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC12aWRlby1hbGxvY2F0aW9uLXBhcmFtcy1uZXctd3JhcHBlZC10ZXh0dXJlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtdmlkZW8tYWxsb2NhdGlvbi1wYXJhbXMtbmV3LXdyYXBwZWQtdGV4dHVyZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWFsbG9jYXRvci1nZXQtZGVmYXVsdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1hbGxvY2F0b3ItZ2V0LWRlZmF1bHQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1pbml0LW9uY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktaW5pdC1vbmNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktaW5pdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1pbml0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1pcy1nbC1tZW1vcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1pcy1nbC1tZW1vcnkiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1jb3B5LWludG8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktY29weS1pbnRvIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktY29weS10ZXhpbWFnZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1jb3B5LXRleGltYWdlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktcmVhZC1waXhlbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1nbC1tZW1vcnktcmVhZC1waXhlbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS10ZXhzdWJpbWFnZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS10ZXhzdWJpbWFnZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLWhlaWdodCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1oZWlnaHQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1pZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS1pZCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXRhcmdldCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS10YXJnZXQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS10eXBlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNnc3QtZ2wtbWVtb3J5LWdldC10ZXh0dXJlLXR5cGUiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS13aWR0aCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1nZXQtdGV4dHVyZS13aWR0aCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXNldHVwLWJ1ZmZlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LWdsLW1lbW9yeS1zZXR1cC1idWZmZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtTUVNT1JZLVZJREVPLUZPUk1BVFMtU1RSOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI0dTVC1HTC1NRU1PUlktVklERU8tRk9STUFUUy1TVFI6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMiPgorPEFOQ0hPUiBpZD0iR3N0R0xNZW1vcnlBbGxvY2F0b3Itc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHc3RHTE1lbW9yeUFsbG9jYXRvci1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyI+Cis8QU5DSE9SIGlkPSJHc3RHTE1lbW9yeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5Lmh0bWwjR3N0R0xNZW1vcnkiPgorPEFOQ0hPUiBpZD0iR1NULUdMLU1FTU9SWS1BTExPQ0FUT1ItTkFNRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuaHRtbCNHU1QtR0wtTUVNT1JZLUFMTE9DQVRPUi1OQU1FOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xNZW1vcnkuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTE1lbW9yeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMTWVtb3J5LnNlZS1hbHNvIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8ub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm90aGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLm9iamVjdC1oaWVyYXJjaHkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtaXMtZ2wtbWVtb3J5LXBibyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjZ3N0LWlzLWdsLW1lbW9yeS1wYm8iPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLW1lbW9yeS1wYm8tY29weS1pbnRvLXRleHR1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWNvcHktaW50by10ZXh0dXJlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1tZW1vcnktcGJvLWRvd25sb2FkLXRyYW5zZmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtZ2wtbWVtb3J5LXBiby1kb3dubG9hZC10cmFuc2ZlciI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXBiby1pbml0LW9uY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLWluaXQtb25jZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtbWVtb3J5LXBiby11cGxvYWQtdHJhbnNmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1nbC1tZW1vcnktcGJvLXVwbG9hZC10cmFuc2ZlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3Itc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI0dzdEdMTWVtb3J5UEJPQWxsb2NhdG9yQ2xhc3MiPgorPEFOQ0hPUiBpZD0iR1NULUdMLU1FTU9SWS1QQk8tQUxMT0NBVE9SLU5BTUU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR1NULUdMLU1FTU9SWS1QQk8tQUxMT0NBVE9SLU5BTUU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RHTE1lbW9yeVBCTyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLmh0bWwjR3N0R0xNZW1vcnlQQk8iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0Z2xtZW1vcnlwYm8uc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RnbG1lbW9yeXBiby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdGdsbWVtb3J5cGJvLnNlZS1hbHNvIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCI+Cis8QU5DSE9SIGlkPSJHc3RHTFNoYWRlci5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJHc3RHTFNoYWRlci5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci5wcm9wZXJ0aWVzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci5vdGhlciI+Cis8QU5DSE9SIGlkPSJHc3RHTFNoYWRlci5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RHTFNoYWRlci5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIuZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItbmV3LWRlZmF1bHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItbmV3LWRlZmF1bHQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1uZXctbGluay13aXRoLXN0YWdlcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctbGluay13aXRoLXN0YWdlcyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLW5ldy13aXRoLXN0YWdlcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1uZXctd2l0aC1zdGFnZXMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci11c2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItdXNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItZ2V0LXByb2dyYW0taGFuZGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1wcm9ncmFtLWhhbmRsZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXJlbGVhc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXJlbGVhc2UtdW5sb2NrZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItcmVsZWFzZS11bmxvY2tlZCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWF0dGFjaCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1hdHRhY2giPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1hdHRhY2gtdW5sb2NrZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItYXR0YWNoLXVubG9ja2VkIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItY29tcGlsZS1hdHRhY2gtc3RhZ2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItY29tcGlsZS1hdHRhY2gtc3RhZ2UiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1kZXRhY2giIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItZGV0YWNoIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItZGV0YWNoLXVubG9ja2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWRldGFjaC11bmxvY2tlZCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLWlzLWxpbmtlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1pcy1saW5rZWQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1saW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWxpbmsiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tMWZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTFpdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0xaXYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTJpdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0yaXYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTNpdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS0zaXYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00ZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLTRpdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS00aXYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMmZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtMngzZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4M2Z2Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTJ4NGZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0yeDRmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTNmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC0zeDJmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3gyZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtM3g0ZnYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI2dzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTN4NGZ2Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTRmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNGZ2Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1zaGFkZXItc2V0LXVuaWZvcm0tbWF0cml4LTR4MmZ2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDJmdiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2hhZGVyLXNldC11bmlmb3JtLW1hdHJpeC00eDNmdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1zZXQtdW5pZm9ybS1tYXRyaXgtNHgzZnYiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1nZXQtYXR0cmlidXRlLWxvY2F0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNnc3QtZ2wtc2hhZGVyLWdldC1hdHRyaWJ1dGUtbG9jYXRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjZ3N0LWdsLXNoYWRlci1iaW5kLWF0dHJpYnV0ZS1sb2NhdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RHTFNoYWRlci5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xTaGFkZXIuaHRtbCNHc3RHTFNoYWRlci5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdEdMU2hhZGVyLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFNoYWRlci5odG1sI0dzdEdMU2hhZGVyLnByb3BlcnR5LWRldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xTaGFkZXItLWxpbmtlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXItLWxpbmtlZCI+Cis8QU5DSE9SIGlkPSJHc3RHTFNoYWRlci5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMU2hhZGVyLmh0bWwjR3N0R0xTaGFkZXIuc2VlLWFsc28iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1FUlJPUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLUVSUk9SOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsc2wtZXJyb3ItcXVhcmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtZXJyb3ItcXVhcmsiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsc2wtcHJvZmlsZS1mcm9tLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1wcm9maWxlLWZyb20tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbHNsLXByb2ZpbGUtdG8tc3RyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI2dzdC1nbHNsLXByb2ZpbGUtdG8tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbHNsLXZlcnNpb24tZnJvbS1zdHJpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1mcm9tLXN0cmluZyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2xzbC12ZXJzaW9uLXRvLXN0cmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC12ZXJzaW9uLXRvLXN0cmluZyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2xzbC12ZXJzaW9uLXByb2ZpbGUtZnJvbS1zdHJpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLWZyb20tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbHNsLXZlcnNpb24tcHJvZmlsZS10by1zdHJpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsc2wtdmVyc2lvbi1wcm9maWxlLXRvLXN0cmluZyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2xzbC1zdHJpbmctZ2V0LXZlcnNpb24tcHJvZmlsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2xzbC1zdHJpbmctZ2V0LXZlcnNpb24tcHJvZmlsZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1zdXBwb3J0cy1nbHNsLXByb2ZpbGUtdmVyc2lvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtZ2wtY29udGV4dC1zdXBwb3J0cy1nbHNsLXByb2ZpbGUtdmVyc2lvbiI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdmVyc2lvbi10by1nbHNsLXZlcnNpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LWdsLXZlcnNpb24tdG8tZ2xzbC12ZXJzaW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xTTEVycm9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dzdEdMU0xFcnJvciI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1FUlJPUi1DT01QSUxFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtRVJST1ItQ09NUElMRTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLUVSUk9SLUxJTks6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1FUlJPUi1MSU5LOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtRVJST1ItUFJPR1JBTTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLUVSUk9SLVBST0dSQU06Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RHTFNMUHJvZmlsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMUHJvZmlsZSI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1QUk9GSUxFLU5PTkU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1QUk9GSUxFLU5PTkU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1QUk9GSUxFLUVTOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1FUzpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVBST0ZJTEUtQ09SRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVBST0ZJTEUtQ09SRTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVBST0ZJTEUtQ09NUEFUSUJJTElUWTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVBST0ZJTEUtQ09NUEFUSUJJTElUWTpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVBST0ZJTEUtQU5ZOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtUFJPRklMRS1BTlk6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHc3RHTFNMVmVyc2lvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHc3RHTFNMVmVyc2lvbiI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLU5PTkU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLU5PTkU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTEwMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTAwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi0xMTA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTExMDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tMTIwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xMjA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTEzMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMTMwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi0xNDA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTE0MDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tMTUwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0xNTA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTMwMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMzAwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi0zMTA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTMxMDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tMzIwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi0zMjA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTMzMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tMzMwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi00MDA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQwMDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tNDEwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00MTA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTQyMDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDIwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi00MzA6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLTQzMDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTFNMLVZFUlNJT04tNDQwOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjR1NULUdMU0wtVkVSU0lPTi00NDA6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0xTTC1WRVJTSU9OLTQ1MDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5odG1sI0dTVC1HTFNMLVZFUlNJT04tNDUwOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMU0wtVkVSU0lPTi1BTlk6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuaHRtbCNHU1QtR0xTTC1WRVJTSU9OLUFOWTpDQVBTIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU0wuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFNMLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTTC5zZWUtYWxzbyI+Cis8QU5DSE9SIGlkPSIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC8uaHRtbCI+Cis8QU5DSE9SIGlkPSJHc3RHTFNMU3RhZ2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC8uaHRtbCNHc3RHTFNMU3RhZ2UiPgorPEFOQ0hPUiBpZD0iLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvLmh0bWwjLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9Ii5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLy5odG1sIy5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLy5odG1sIy5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9Ii5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wLy5odG1sIy5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuZnVuY3Rpb25zIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5vdGhlciI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1idWZmZXItYWRkLWdsLXN5bmMtbWV0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtYnVmZmVyLWFkZC1nbC1zeW5jLW1ldGEiPgorPEFOQ0hPUiBpZD0iZ3N0LWJ1ZmZlci1hZGQtZ2wtc3luYy1tZXRhLWZ1bGwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjZ3N0LWJ1ZmZlci1hZGQtZ2wtc3luYy1tZXRhLWZ1bGwiPgogPEFOQ0hPUiBpZD0iZ3N0LWJ1ZmZlci1nZXQtZ2wtc3luYy1tZXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1idWZmZXItZ2V0LWdsLXN5bmMtbWV0YSI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtc3luYy1tZXRhLWFwaS1nZXQtdHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLWFwaS1nZXQtdHlwZSI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtc3luYy1tZXRhLWdldC1pbmZvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xTeW5jTWV0YS5odG1sI2dzdC1nbC1zeW5jLW1ldGEtZ2V0LWluZm8iPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXN5bmMtbWV0YS1zZXQtc3luYy1wb2ludCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXNldC1zeW5jLXBvaW50Ij4KIDxBTkNIT1IgaWQ9ImdzdC1nbC1zeW5jLW1ldGEtd2FpdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXdhaXQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXN5bmMtbWV0YS13YWl0LWNwdSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtZ2wtc3luYy1tZXRhLXdhaXQtY3B1Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLm90aGVyX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0R0xTeW5jTWV0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEdMU3luY01ldGEuaHRtbCNHc3RHTFN5bmNNZXRhIj4KIDxBTkNIT1IgaWQ9IkdTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtU1lOQy1NRVRBOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFN5bmNNZXRhLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1TWU5DLU1FVEE6Q0FQUyI+CkBAIC0xNTI4LDUzICsxNjYwLDEwIEBACiA8QU5DSE9SIGlkPSJnc3QtZ2wtdXBsb2FkLXByb3Bvc2UtYWxsb2NhdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC1wcm9wb3NlLWFsbG9jYXRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXVwbG9hZC10cmFuc2Zvcm0tY2FwcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkLmh0bWwjZ3N0LWdsLXVwbG9hZC10cmFuc2Zvcm0tY2FwcyI+CiA8QU5DSE9SIGlkPSJnc3QtZ2wtdXBsb2FkLXBlcmZvcm0td2l0aC1idWZmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtcGVyZm9ybS13aXRoLWJ1ZmZlciI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtdXBsb2FkLXJlbGVhc2UtYnVmZmVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWQuaHRtbCNnc3QtZ2wtdXBsb2FkLXJlbGVhc2UtYnVmZmVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC11cGxvYWQtZ2V0LWlucHV0LXRlbXBsYXRlLWNhcHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZC5odG1sI2dzdC1nbC11cGxvYWQtZ2V0LWlucHV0LXRlbXBsYXRlLWNhcHMiPgogPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWQub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkLmh0bWwjR3N0R0xVcGxvYWQub3RoZXJfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RHTFVwbG9hZC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZC5odG1sI0dzdEdMVXBsb2FkLXN0cnVjdCI+CiA8QU5DSE9SIGlkPSJHc3RHTFVwbG9hZC5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkLmh0bWwjR3N0R0xVcGxvYWQuc2VlLWFsc28iPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwiPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkTWV0YS5odG1sI0dzdEdMVXBsb2FkTWV0YS5mdW5jdGlvbnMiPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLm90aGVyIj4KLTxBTkNIT1IgaWQ9IkdzdEdMVXBsb2FkTWV0YS5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iR3N0R0xVcGxvYWRNZXRhLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjR3N0R0xVcGxvYWRNZXRhLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9IkdzdEdMVXBsb2FkTWV0YS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkTWV0YS5odG1sI0dzdEdMVXBsb2FkTWV0YS5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtdXBsb2FkLW1ldGEtbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLW5ldyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtdXBsb2FkLW1ldGEtc2V0LWZvcm1hdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkTWV0YS5odG1sI2dzdC1nbC11cGxvYWQtbWV0YS1zZXQtZm9ybWF0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC11cGxvYWQtbWV0YS1nZXQtZm9ybWF0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xVcGxvYWRNZXRhLmh0bWwjZ3N0LWdsLXVwbG9hZC1tZXRhLWdldC1mb3JtYXQiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXVwbG9hZC1tZXRhLWFkZC10by1idWZmZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCNnc3QtZ2wtdXBsb2FkLW1ldGEtYWRkLXRvLWJ1ZmZlciI+Ci08QU5DSE9SIGlkPSJHc3RHTFVwbG9hZE1ldGEub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkTWV0YS5odG1sI0dzdEdMVXBsb2FkTWV0YS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdEdMVXBsb2FkTWV0YS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFVwbG9hZE1ldGEuaHRtbCNHc3RHTFVwbG9hZE1ldGEtc3RydWN0Ij4KLTxBTkNIT1IgaWQ9IkdzdEdMVXBsb2FkTWV0YS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMVXBsb2FkTWV0YS5odG1sI0dzdEdMVXBsb2FkTWV0YS5zZWUtYWxzbyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmZ1bmN0aW9ucyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHTENCOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiPgotPEFOQ0hPUiBpZD0iR0xDQi1WMjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR0xDQi1WMjpDQVBTIj4KLTxBTkNIT1IgaWQ9IkNEQ0I6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0NEQ0I6Q0FQUyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1zZXQtY29udGV4dCI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2VuLXRleHR1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1kZWwtdGV4dHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdlbi1mYm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tZmJvIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWRlbC1mYm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtZmJvIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LXVzZS1mYm8tdjIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC11c2UtZmJvLXYyIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdlbi1zaGFkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tc2hhZGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtc2hhZGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWNsZWFyLXNoYWRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNsZWFyLXNoYWRlciI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdlbmVyYXRlLXRleHR1cmUtZnVsbCI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNhcHMtcmVwbGFjZS1hbGwtY2Fwcy1mZWF0dXJlcyI+Ci08QU5DSE9SIGlkPSJnc3QtZ2wtZW5zdXJlLWVsZW1lbnQtZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1lbnN1cmUtZWxlbWVudC1kYXRhIj4KLTxBTkNIT1IgaWQ9ImdzdC1nbC1nZXQtcGxhbmUtZGF0YS1zaXplIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiPgotPEFOQ0hPUiBpZD0iZ3N0LWdsLXJ1bi1xdWVyeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1ydW4tcXVlcnkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1VdGlsaXRpZXMub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RHTERpc3BsYXlQcm9qZWN0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtVXRpbGl0aWVzLmh0bWwjR3N0R0xEaXNwbGF5UHJvamVjdGlvbiI+Ci08QU5DSE9SIGlkPSJHU1QtR0wtRElTUExBWS1QUk9KRUNUSU9OLU9SVEhPMkQ6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tT1JUSE8yRDpDQVBTIj4KLTxBTkNIT1IgaWQ9IkdTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tUEVSU1BFQ1RJVkU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tUEVSU1BFQ1RJVkU6Q0FQUyI+CiA8QU5DSE9SIGlkPSJHc3RHTFdpbmRvdyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMV2luZG93Lmh0bWwiPgogPEFOQ0hPUiBpZD0iR3N0R0xXaW5kb3cuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNHc3RHTFdpbmRvdy5mdW5jdGlvbnMiPgogPEFOQ0hPUiBpZD0iR3N0R0xXaW5kb3cuc2lnbmFscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMV2luZG93Lmh0bWwjR3N0R0xXaW5kb3cuc2lnbmFscyI+CkBAIC0xNTkwLDcgKzE2NzksNiBAQAogPEFOQ0hPUiBpZD0iR1NULUdMLVdJTkRPVy1DQjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNHU1QtR0wtV0lORE9XLUNCOkNBUFMiPgogPEFOQ0hPUiBpZD0iZ3N0LWdsLXdpbmRvdy1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9Hc3RHTFdpbmRvdy5odG1sI2dzdC1nbC13aW5kb3ctbmV3Ij4KIDxBTkNIT1IgaWQ9ImdzdC1nbC13aW5kb3ctZHJhdyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1kcmF3Ij4KLTxBTkNIT1IgaWQ9ImdzdC1nbC13aW5kb3ctZHJhdy11bmxvY2tlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1kcmF3LXVubG9ja2VkIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC13aW5kb3ctaXMtcnVubmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1pcy1ydW5uaW5nIj4KIDxBTkNIT1IgaWQ9ImdzdC1nbC13aW5kb3ctcXVpdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL0dzdEdMV2luZG93Lmh0bWwjZ3N0LWdsLXdpbmRvdy1xdWl0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1nbC13aW5kb3ctcnVuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvR3N0R0xXaW5kb3cuaHRtbCNnc3QtZ2wtd2luZG93LXJ1biI+CkBAIC0xNjc3LDYgKzE3NjUsMjYzIEBACiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RHTFdpbmRvd1gxMS5vdGhlcl9kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdEdMV2luZG93WDExIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCNHc3RHTFdpbmRvd1gxMSI+CiA8QU5DSE9SIGlkPSJHc3RHTFdpbmRvd1gxMUNsYXNzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0R0xXaW5kb3dYMTEuaHRtbCNHc3RHTFdpbmRvd1gxMUNsYXNzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5mdW5jdGlvbnMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLm90aGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNHc3RHTEFzeW5jRGVidWdMb2dHZXRNZXNzYWdlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy1uZXciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW5ldyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYXN5bmMtZGVidWctZnJlZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctZnJlZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYXN5bmMtZGVidWctaW5pdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctaW5pdCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYXN5bmMtZGVidWctdW5zZXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLXVuc2V0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy1mcmVlemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLWZyZWV6ZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYXN5bmMtZGVidWctdGhhdyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctdGhhdyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtYXN5bmMtZGVidWctb3V0cHV0LWxvZy1tc2ciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWFzeW5jLWRlYnVnLW91dHB1dC1sb2ctbXNnIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1hc3luYy1kZWJ1Zy1zdG9yZS1sb2ctbXNnLXZhbGlzdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuaHRtbCNnc3QtZ2wtYXN5bmMtZGVidWctc3RvcmUtbG9nLW1zZy12YWxpc3QiPgorPEFOQ0hPUiBpZD0iR1NULUdMLUFTWU5DLUNBVC1MRVZFTC1MT0ctdmFsaXN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HLXZhbGlzdCI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtQVNZTkMtQ0FULUxFVkVMLUxPRzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI0dTVC1HTC1BU1lOQy1DQVQtTEVWRUwtTE9HOkNBUFMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWluc2VydC1kZWJ1Zy1tYXJrZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LWdsLWluc2VydC1kZWJ1Zy1tYXJrZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTEFzeW5jRGVidWciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjR3N0R0xBc3luY0RlYnVnIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1kZWJ1Z2dpbmcuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtZGVidWdnaW5nLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLWRlYnVnZ2luZy5zZWUtYWxzbyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHTENCOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNHTENCOkNBUFMiPgorPEFOQ0hPUiBpZD0iR0xDQi1WMjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjR0xDQi1WMjpDQVBTIj4KKzxBTkNIT1IgaWQ9IkNEQ0I6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0NEQ0I6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtaGFuZGxlLXNldC1jb250ZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWhhbmRsZS1zZXQtY29udGV4dCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtaGFuZGxlLWNvbnRleHQtcXVlcnkiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2VuLXRleHR1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tdGV4dHVyZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1kZWwtdGV4dHVyZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWRlbC10ZXh0dXJlIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdlbi1mYm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tZmJvIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWRlbC1mYm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtZmJvIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LXVzZS1mYm8tdjIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC11c2UtZmJvLXYyIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWdlbi1zaGFkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1nZW4tc2hhZGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWRlbC1zaGFkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1kZWwtc2hhZGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNoZWNrLWZyYW1lYnVmZmVyLXN0YXR1cyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtY29udGV4dC1zZXQtZXJyb3IiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNvbnRleHQtZ2V0LWVycm9yIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1jb250ZXh0LWNsZWFyLXNoYWRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1jb250ZXh0LWNsZWFyLXNoYWRlciI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtZ2VuZXJhdGUtdGV4dHVyZS1mdWxsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdlbmVyYXRlLXRleHR1cmUtZnVsbCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtY2Fwcy1yZXBsYWNlLWFsbC1jYXBzLWZlYXR1cmVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWNhcHMtcmVwbGFjZS1hbGwtY2Fwcy1mZWF0dXJlcyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtZW5zdXJlLWVsZW1lbnQtZGF0YSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1lbnN1cmUtZWxlbWVudC1kYXRhIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1nZXQtcGxhbmUtZGF0YS1zaXplIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLWdldC1wbGFuZS1kYXRhLXNpemUiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWdldC1wbGFuZS1zdGFydCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1nZXQtcGxhbmUtc3RhcnQiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXJ1bi1xdWVyeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI2dzdC1nbC1ydW4tcXVlcnkiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXZhbHVlLWdldC10ZXh0dXJlLXRhcmdldC1tYXNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLWdldC10ZXh0dXJlLXRhcmdldC1tYXNrIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtZ2wtdmFsdWUtc2V0LXRleHR1cmUtdGFyZ2V0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1nbC12YWx1ZS1zZXQtdGV4dHVyZS10YXJnZXQtZnJvbS1tYXNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjZ3N0LWdsLXZhbHVlLXNldC10ZXh0dXJlLXRhcmdldC1mcm9tLW1hc2siPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtTWlzY2VsbGFuZW91cy1VdGlsaXRpZXMub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RHTERpc3BsYXlQcm9qZWN0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLU1pc2NlbGxhbmVvdXMtVXRpbGl0aWVzLmh0bWwjR3N0R0xEaXNwbGF5UHJvamVjdGlvbiI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtRElTUExBWS1QUk9KRUNUSU9OLU9SVEhPMkQ6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tT1JUSE8yRDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tUEVSU1BFQ1RJVkU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1NaXNjZWxsYW5lb3VzLVV0aWxpdGllcy5odG1sI0dTVC1HTC1ESVNQTEFZLVBST0pFQ1RJT04tUEVSU1BFQ1RJVkU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5mdW5jdGlvbnMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLm90aGVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLWZvcm1hdC10eXBlLW4tYnl0ZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC1mb3JtYXQtdHlwZS1uLWJ5dGVzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC10ZXh0dXJlLXR5cGUtbi1ieXRlcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdHlwZS1uLWJ5dGVzIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC1mb3JtYXQtZnJvbS1nbC10ZXh0dXJlLXR5cGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC1mb3JtYXQtZnJvbS1nbC10ZXh0dXJlLXR5cGUiPgorPEFOQ0hPUiBpZD0iZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdHlwZS1mcm9tLWZvcm1hdCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtc2l6ZWQtZ2wtZm9ybWF0LWZyb20tZ2wtZm9ybWF0LXR5cGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC1zaXplZC1nbC1mb3JtYXQtZnJvbS1nbC1mb3JtYXQtdHlwZSI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtZnJvbS1zdHJpbmciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLXN0cmluZyI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tc3RyaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tc3RyaW5nIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC10ZXh0dXJlLXRhcmdldC10by1nbCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjZ3N0LWdsLXRleHR1cmUtdGFyZ2V0LXRvLWdsIj4KKzxBTkNIT1IgaWQ9ImdzdC1nbC10ZXh0dXJlLXRhcmdldC1mcm9tLWdsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtZnJvbS1nbCI+Cis8QU5DSE9SIGlkPSJnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tYnVmZmVyLXBvb2wtb3B0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNnc3QtZ2wtdGV4dHVyZS10YXJnZXQtdG8tYnVmZmVyLXBvb2wtb3B0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0R0xUZXh0dXJlVGFyZ2V0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHc3RHTFRleHR1cmVUYXJnZXQiPgorPEFOQ0hPUiBpZD0iR1NULUdMLVRFWFRVUkUtVEFSR0VULU5PTkU6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULU5PTkU6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQ6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULTJEOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLVRFWFRVUkUtVEFSR0VULUVYVEVSTkFMLU9FUzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLVRFWFRVUkUtVEFSR0VULTJELVNUUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtMkQtU1RSOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRS1TVFI6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUdMLVRFWFRVUkUtVEFSR0VULVJFQ1RBTkdMRS1TVFI6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTLVNUUjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCNHU1QtR0wtVEVYVFVSRS1UQVJHRVQtRVhURVJOQUwtT0VTLVNUUjpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtMkQ6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC0yRDpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sI0dTVC1CVUZGRVItUE9PTC1PUFRJT04tR0wtVEVYVFVSRS1UQVJHRVQtUkVDVEFOR0xFOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLU9wZW5HTC1Gb3JtYXRzLmh0bWwjR1NULUJVRkZFUi1QT09MLU9QVElPTi1HTC1URVhUVVJFLVRBUkdFVC1FWFRFUk5BTC1PRVM6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5wcm9wZXJ0aWVzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5zaWduYWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnNpZ25hbHMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclZpZGVvUmVuZGVyZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vdGhlciI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vYmplY3QtaGllcmFyY2h5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5wcmVyZXF1aXNpdGVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByZXJlcXVpc2l0ZXMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmltcGxlbWVudGF0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5pbXBsZW1lbnRhdGlvbnMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItbmV3Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItcGxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItcGxheSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXBhdXNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1wYXVzZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXN0b3AiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXN0b3AiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zZWVrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZWVrIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXVyaSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXVyaSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC11cmkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC11cmkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1nZXQtZHVyYXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1kdXJhdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1wb3NpdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LXBvc2l0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXZvbHVtZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZvbHVtZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1tdXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtbXV0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC12b2x1bWUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC12b2x1bWUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1nZXQtbXV0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItZ2V0LW11dGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1nZXQtcGlwZWxpbmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1waXBlbGluZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1wb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1nZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcG9zaXRpb24tdXBkYXRlLWludGVydmFsIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc3RhdGUtZ2V0LW5hbWUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXN0YXRlLWdldC1uYW1lIj4KKzxBTkNIT1IgaWQ9IkdTVC1QTEFZRVItRVJST1I6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItRVJST1I6Q0FQUyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWVycm9yLWdldC1uYW1lIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1lcnJvci1nZXQtbmFtZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1tZWRpYS1pbmZvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtbWVkaWEtaW5mbyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1hdWRpby1zdHJlYW1zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtYXVkaW8tc3RyZWFtcyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC12aWRlby1zdHJlYW1zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtdmlkZW8tc3RyZWFtcyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1zdWJ0aXRsZS1zdHJlYW1zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtc3RyZWFtcyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1hdWRpby10cmFjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LWF1ZGlvLXRyYWNrIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXZpZGVvLXRyYWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2siPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjayI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1jdXJyZW50LWF1ZGlvLXRyYWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1hdWRpby10cmFjayI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpZGVvLXRyYWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC12aWRlby10cmFjayI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1jdXJyZW50LXN1YnRpdGxlLXRyYWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY3VycmVudC1zdWJ0aXRsZS10cmFjayI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1hdWRpby10cmFjay1lbmFibGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtYXVkaW8tdHJhY2stZW5hYmxlZCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC12aWRlby10cmFjay1lbmFibGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtdmlkZW8tdHJhY2stZW5hYmxlZCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS10cmFjay1lbmFibGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtc3VidGl0bGUtdHJhY2stZW5hYmxlZCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS11cmkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC1zdWJ0aXRsZS11cmkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtdXJpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtc3VidGl0bGUtdXJpIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLXNldC12aXN1YWxpemF0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24tZW5hYmxlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbGF5ZXItc2V0LXZpc3VhbGl6YXRpb24tZW5hYmxlZCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpc3VhbGl6YXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWdldC1jdXJyZW50LXZpc3VhbGl6YXRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1jb2xvci1iYWxhbmNlLXR5cGUtZ2V0LW5hbWUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGxheWVyLWNvbG9yLWJhbGFuY2UtdHlwZS1nZXQtbmFtZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWhhcy1jb2xvci1iYWxhbmNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1oYXMtY29sb3ItYmFsYW5jZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1jb2xvci1iYWxhbmNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtY29sb3ItYmFsYW5jZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1jb2xvci1iYWxhbmNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtY29sb3ItYmFsYW5jZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWdldC1yYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1nZXQtcmF0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXNldC1yYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsYXllci1zZXQtcmF0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclN0YXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU3RhdGUiPgorPEFOQ0hPUiBpZD0iR1NULVBMQVlFUi1TVEFURS1TVE9QUEVEOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLVNUQVRFLVNUT1BQRUQ6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLVNUQVRFLUJVRkZFUklORzpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1TVEFURS1CVUZGRVJJTkc6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLVNUQVRFLVBBVVNFRDpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1TVEFURS1QQVVTRUQ6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLVNUQVRFLVBMQVlJTkc6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItU1RBVEUtUExBWUlORzpDQVBTIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllckVycm9yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyRXJyb3IiPgorPEFOQ0hPUiBpZD0iR1NULVBMQVlFUi1FUlJPUi1GQUlMRUQ6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItRVJST1ItRkFJTEVEOkNBUFMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUiPgorPEFOQ0hPUiBpZD0iR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLUJSSUdIVE5FU1M6Q0FQUyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dTVC1QTEFZRVItQ09MT1ItQkFMQU5DRS1CUklHSFRORVNTOkNBUFMiPgorPEFOQ0hPUiBpZD0iR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLUNPTlRSQVNUOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtQ09OVFJBU1Q6Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtU0FUVVJBVElPTjpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR1NULVBMQVlFUi1DT0xPUi1CQUxBTkNFLVNBVFVSQVRJT046Q0FQUyI+Cis8QU5DSE9SIGlkPSJHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtSFVFOkNBUFMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHU1QtUExBWUVSLUNPTE9SLUJBTEFOQ0UtSFVFOkNBUFMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlci1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllclZpZGVvUmVuZGVyZXItc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLnByb3BlcnR5LWRldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS1jdXJyZW50LWF1ZGlvLXRyYWNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1jdXJyZW50LWF1ZGlvLXRyYWNrIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tY3VycmVudC1zdWJ0aXRsZS10cmFjayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tY3VycmVudC1zdWJ0aXRsZS10cmFjayI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLWN1cnJlbnQtdmlkZW8tdHJhY2siIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLWN1cnJlbnQtdmlkZW8tdHJhY2siPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS1kdXJhdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tZHVyYXRpb24iPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS1tZWRpYS1pbmZvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1tZWRpYS1pbmZvIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tbXV0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tbXV0ZSI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLXBpcGVsaW5lIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1waXBlbGluZSI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLXBvc2l0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1wb3NpdGlvbiI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLXBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcG9zaXRpb24tdXBkYXRlLWludGVydmFsIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tcmF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tcmF0ZSI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLXNpZ25hbC1kaXNwYXRjaGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS1zaWduYWwtZGlzcGF0Y2hlciI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItLXN1YnVyaSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tc3VidXJpIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci0tdXJpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLS11cmkiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS12aWRlby1yZW5kZXJlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci0tdmlkZW8tcmVuZGVyZXIiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLS12b2x1bWUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItLXZvbHVtZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuc2lnbmFsLWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuc2lnbmFsLWRldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLWJ1ZmZlcmluZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1idWZmZXJpbmciPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLWR1cmF0aW9uLWNoYW5nZWQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItZHVyYXRpb24tY2hhbmdlZCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItZW5kLW9mLXN0cmVhbSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1lbmQtb2Ytc3RyZWFtIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1lcnJvciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1lcnJvciI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItbWVkaWEtaW5mby11cGRhdGVkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLW1lZGlhLWluZm8tdXBkYXRlZCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItbXV0ZS1jaGFuZ2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLW11dGUtY2hhbmdlZCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXItcG9zaXRpb24tdXBkYXRlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci1wb3NpdGlvbi11cGRhdGVkIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1zZWVrLWRvbmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXIuaHRtbCNHc3RQbGF5ZXItc2Vlay1kb25lIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci1zdGF0ZS1jaGFuZ2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXN0YXRlLWNoYW5nZWQiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLXZpZGVvLWRpbWVuc2lvbnMtY2hhbmdlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sI0dzdFBsYXllci12aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyLXZvbHVtZS1jaGFuZ2VkIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXZvbHVtZS1jaGFuZ2VkIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllci13YXJuaW5nIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwjR3N0UGxheWVyLXdhcm5pbmciPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmZ1bmN0aW9ucyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmZ1bmN0aW9ucyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJNZWRpYUluZm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclN0cmVhbUluZm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3RyZWFtSW5mbyI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJBdWRpb0luZm8iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyQXVkaW9JbmZvIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclZpZGVvSW5mbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8iPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyU3VidGl0bGVJbmZvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllclN1YnRpdGxlSW5mbyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8ub2JqZWN0LWhpZXJhcmNoeSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdXJpIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdXJpIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtZHVyYXRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1kdXJhdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRpdGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGl0bGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1jb250YWluZXItZm9ybWF0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtY29udGFpbmVyLWZvcm1hdCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLW1lZGlhLWluZm8taXMtc2Vla2FibGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1tZWRpYS1pbmZvLWlzLXNlZWthYmxlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtaW1hZ2Utc2FtcGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtaW1hZ2Utc2FtcGxlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItbWVkaWEtaW5mby1nZXQtdGFncyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXRhZ3MiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1tZWRpYS1pbmZvLWdldC1zdHJlYW0tbGlzdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLW1lZGlhLWluZm8tZ2V0LXN0cmVhbS1saXN0Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWluZGV4IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWluZGV4Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LWNhcHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY2FwcyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXN0cmVhbS1pbmZvLWdldC10YWdzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItc3RyZWFtLWluZm8tZ2V0LXRhZ3MiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY29kZWMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtY29kZWMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtc3RyZWFtLXR5cGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdHJlYW0taW5mby1nZXQtc3RyZWFtLXR5cGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1iaXRyYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtYml0cmF0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWNoYW5uZWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtY2hhbm5lbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1sYW5ndWFnZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LWxhbmd1YWdlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtbWF4LWJpdHJhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1hdWRpby1pbmZvLWdldC1tYXgtYml0cmF0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWF1ZGlvLWluZm8tZ2V0LXNhbXBsZS1yYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItYXVkaW8taW5mby1nZXQtc2FtcGxlLXJhdGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1iaXRyYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtYml0cmF0ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWhlaWdodCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LWhlaWdodCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LXdpZHRoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtd2lkdGgiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1mcmFtZXJhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1mcmFtZXJhdGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1pbmZvLWdldC1tYXgtYml0cmF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNnc3QtcGxheWVyLXZpZGVvLWluZm8tZ2V0LW1heC1iaXRyYXRlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtcGl4ZWwtYXNwZWN0LXJhdGlvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI2dzdC1wbGF5ZXItdmlkZW8taW5mby1nZXQtcGl4ZWwtYXNwZWN0LXJhdGlvIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItc3VidGl0bGUtaW5mby1nZXQtbGFuZ3VhZ2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsYXllci1zdWJ0aXRsZS1pbmZvLWdldC1sYW5ndWFnZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5vdGhlcl9kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllck1lZGlhSW5mby1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyTWVkaWFJbmZvLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJTdHJlYW1JbmZvLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJTdHJlYW1JbmZvLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RQbGF5ZXJBdWRpb0luZm8tc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sI0dzdFBsYXllckF1ZGlvSW5mby1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyVmlkZW9JbmZvLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1tZWRpYWluZm8uaHRtbCNHc3RQbGF5ZXJWaWRlb0luZm8tc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdFBsYXllclN1YnRpdGxlSW5mby1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItbWVkaWFpbmZvLmh0bWwjR3N0UGxheWVyU3VidGl0bGVJbmZvLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5mdW5jdGlvbnMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItZ21haW5jb250ZXh0c2lnbmFsZGlzcGF0Y2hlci5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLW5ldyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwjZ3N0LXBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci1uZXciPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5mdW5jdGlvbnMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmRlc2NyaXB0aW9uIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5mdW5jdGlvbnNfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItbmV3IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItbmV3Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1nZXQtd2luZG93LWhhbmRsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC13aW5kb3ctaGFuZGxlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1zZXQtd2luZG93LWhhbmRsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC13aW5kb3ctaGFuZGxlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1leHBvc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sI2dzdC1wbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci1leHBvc2UiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLWdldC1yZW5kZXItcmVjdGFuZ2xlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItZ2V0LXJlbmRlci1yZWN0YW5nbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLXNldC1yZW5kZXItcmVjdGFuZ2xlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIuaHRtbCNnc3QtcGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXItc2V0LXJlbmRlci1yZWN0YW5nbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aWRlb292ZXJsYXl2aWRlb3JlbmRlcmVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uZnVuY3Rpb25zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5mdW5jdGlvbnMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyVmlzdWFsaXphdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjR3N0UGxheWVyVmlzdWFsaXphdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ub2JqZWN0LWhpZXJhcmNoeSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uZGVzY3JpcHRpb24iPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmZ1bmN0aW9uc19kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZ2V0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaHRtbCNnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWdldCI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpc3VhbGl6YXRpb25zLWZyZWUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbnMtZnJlZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGxheWVyLXZpc3VhbGl6YXRpb24tY29weSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwjZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWNvcHkiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsYXllci12aXN1YWxpemF0aW9uLWZyZWUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbGF5ZXItdmlzdWFsaXphdGlvbi1mcmVlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLm90aGVyX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iR3N0UGxheWVyVmlzdWFsaXphdGlvbi1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5odG1sI0dzdFBsYXllclZpc3VhbGl6YXRpb24tc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5zdGFiaWxpdHktbGV2ZWwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5LnN0YWJpbGl0eS1sZXZlbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5mdW5jdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9nc3QtcGx1Z2lucy1iYWQtbGlicy1Hc3RQaG90b2dyYXBoeS5odG1sI2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdFBob3RvZ3JhcGh5LmZ1bmN0aW9ucyI+CkBAIC0xODMyLDYgKzIxNzcsNyBAQAogPEFOQ0hPUiBpZD0iR1NULVBIT1RPR1JBUEhZLVBST1AtRk9DVVMtTU9ERTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHU1QtUEhPVE9HUkFQSFktUFJPUC1GT0NVUy1NT0RFOkNBUFMiPgogPEFOQ0hPUiBpZD0iR1NULVBIT1RPR1JBUEhZLVBST1AtWk9PTTpDQVBTIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0UGhvdG9ncmFwaHkuaHRtbCNHU1QtUEhPVE9HUkFQSFktUFJPUC1aT09NOkNBUFMiPgogPEFOQ0hPUiBpZD0iYW5ub3RhdGlvbi1nbG9zc3Rlcm0tYWxsb3ctbm9uZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtMS4wL2Fubm90YXRpb24tZ2xvc3NhcnkuaHRtbCNhbm5vdGF0aW9uLWdsb3NzdGVybS1hbGxvdy1ub25lIj4KKzxBTkNIT1IgaWQ9ImFubm90YXRpb24tZ2xvc3N0ZXJtLWFycmF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvYW5ub3RhdGlvbi1nbG9zc2FyeS5odG1sI2Fubm90YXRpb24tZ2xvc3N0ZXJtLWFycmF5Ij4KIDxBTkNIT1IgaWQ9ImFubm90YXRpb24tZ2xvc3N0ZXJtLWNsb3N1cmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLTEuMC9hbm5vdGF0aW9uLWdsb3NzYXJ5Lmh0bWwjYW5ub3RhdGlvbi1nbG9zc3Rlcm0tY2xvc3VyZSI+CiA8QU5DSE9SIGlkPSJhbm5vdGF0aW9uLWdsb3NzdGVybS1kZXN0cm95IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvYW5ub3RhdGlvbi1nbG9zc2FyeS5odG1sI2Fubm90YXRpb24tZ2xvc3N0ZXJtLWRlc3Ryb3kiPgogPEFOQ0hPUiBpZD0iYW5ub3RhdGlvbi1nbG9zc3Rlcm0tZWxlbWVudC10eXBlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy0xLjAvYW5ub3RhdGlvbi1nbG9zc2FyeS5odG1sI2Fubm90YXRpb24tZ2xvc3N0ZXJtLWVsZW1lbnQtdHlwZSI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9tcGVndHMuaHRtbCBiL2RvY3MvbGlicy9odG1sL21wZWd0cy5odG1sCmluZGV4IDI3ZGNlMWIuLmE3NmExOTYgMTAwNjQ0Ci0tLSBhL2RvY3MvbGlicy9odG1sL21wZWd0cy5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL21wZWd0cy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+TXBlZyBUUyBoZWxwZXIgbGlicmFyeTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0bXBlZ3ZpZGVvbWV0YS5odG1sIiB0aXRsZT0iZ3N0bXBlZ3ZpZGVvbWV0YSI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC9wbGF5ZXIuaHRtbCBiL2RvY3MvbGlicy9odG1sL3BsYXllci5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkOWQxMjIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL2xpYnMvaHRtbC9wbGF5ZXIuaHRtbApAQCAtMCwwICsxLDQ2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+UGxheWVyIExpYnJhcnk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+Cis8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+Cis8bGluayByZWw9InVwIiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtT3BlbkdMLUZvcm1hdHMuaHRtbCIgdGl0bGU9Ik9wZW5HTCBGb3JtYXRzIj4KKzxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiIHRpdGxlPSJnc3RwbGF5ZXIiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgorPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KKzwvaGVhZD4KKzxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KKzx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Cis8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1PcGVuR0wtRm9ybWF0cy5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPC90cj48L3RhYmxlPgorPGRpdiBjbGFzcz0iY2hhcHRlciI+Cis8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDIgY2xhc3M9InRpdGxlIj4KKzxhIG5hbWU9InBsYXllciI+PC9hPlBsYXllciBMaWJyYXJ5PC9oMj48L2Rpdj48L2Rpdj48L2Rpdj4KKzxkaXYgY2xhc3M9InRvYyI+PGRsIGNsYXNzPSJ0b2MiPgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci5odG1sIj5nc3RwbGF5ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIFBsYXllcjwvc3Bhbj4KKzwvZHQ+Cis8ZHQ+Cis8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtZ3N0cGxheWVyLW1lZGlhaW5mby5odG1sIj5nc3RwbGF5ZXItbWVkaWFpbmZvPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgTWVkaWEgSW5mb3JtYXRpb248L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyLmh0bWwiPmdzdHBsYXllci1nbWFpbmNvbnRleHRzaWduYWxkaXNwYXRjaGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgR0xpYiBNYWluQ29udGV4dCBkaXNwYXRjaGVyPC9zcGFuPgorPC9kdD4KKzxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlci5odG1sIj5nc3RwbGF5ZXItdmlkZW9vdmVybGF5dmlkZW9yZW5kZXJlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgUGxheWVyIFZpZGVvIE92ZXJsYXkgVmlkZW8gUmVuZGVyZXI8L3NwYW4+Cis8L2R0PgorPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1saWJzLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmh0bWwiPmdzdHBsYXllci12aXN1YWxpemF0aW9uPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBQbGF5ZXIgVmlzdWFsaXphdGlvbjwvc3Bhbj4KKzwvZHQ+Cis8L2RsPjwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9saWJzL2h0bWwvdG9vbHMuaHRtbCBiL2RvY3MvbGlicy9odG1sL3Rvb2xzLmh0bWwKaW5kZXggN2U1YTNkMC4uZWI5N2E5ZiAxMDA2NDQKLS0tIGEvZG9jcy9saWJzL2h0bWwvdG9vbHMuaHRtbAorKysgYi9kb2NzL2xpYnMvaHRtbC90b29scy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+VXNlZnVsIGVsZW1lbnRzOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgTGlicmFyeSBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImdzdHJlYW1lci1wbHVnaW5zLWJhZC5odG1sIiB0aXRsZT0iUGFydMKgSS7CoEdTdHJlYW1lciBCYWQgUGx1Z2lucyBMaWJyYXJpZXMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtbGlicy1JU0RCLXZhcmlhbnRzLW9mLU1QRUctVFMtZGVzY3JpcHRvcnMuaHRtbCIgdGl0bGU9IklTREIgdmFyaWFudHMgb2YgTVBFRy1UUyBkZXNjcmlwdG9ycyI+CmRpZmYgLS1naXQgYS9kb2NzL2xpYnMvaHRtbC92aWRlby5odG1sIGIvZG9jcy9saWJzL2h0bWwvdmlkZW8uaHRtbAppbmRleCBkMTBkNzA5Li45Nzg1ZGViIDEwMDY0NAotLS0gYS9kb2NzL2xpYnMvaHRtbC92aWRlby5odG1sCisrKyBiL2RvY3MvbGlicy9odG1sL3ZpZGVvLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5WaWRlbyBoZWxwZXJzIGFuZCBiYXNlY2xhc3NlczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIExpYnJhcnkgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJnc3RyZWFtZXItcGx1Z2lucy1iYWQuaHRtbCIgdGl0bGU9IlBhcnTCoEkuwqBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgTGlicmFyaWVzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvclBhZC5odG1sIiB0aXRsZT0iR3N0QWdncmVnYXRvclBhZCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW0gYi9kb2NzL3BsdWdpbnMvTWFrZWZpbGUuYW0KaW5kZXggYzQzMWY3OC4uNzYwN2I1NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL01ha2VmaWxlLmFtCisrKyBiL2RvY3MvcGx1Z2lucy9NYWtlZmlsZS5hbQpAQCAtMTEyLDcgKzExMiw2IEBACiAJJCh0b3Bfc3JjZGlyKS9nc3QvYWlmZi9haWZmcGFyc2UuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvYWlmZi9haWZmbXV4LmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG9jb252ZXJ0LmggXAotCSQodG9wX3NyY2RpcikvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BhY2VzY29wZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuaCBcCkBAIC0xNTEsNyArMTUwLDYgQEAKIAkkKHRvcF9zcmNkaXIpL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0d2F0ZXJyaXBwbGUuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvaXZmcGFyc2UvZ3N0aXZmcGFyc2UuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvanBlZ2Zvcm1hdC9nc3RqcGVncGFyc2UuaCBcCi0JJCh0b3Bfc3JjZGlyKS9nc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9teGYvbXhmZGVtdXguaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvbXhmL214Zm11eC5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9udXZkZW11eC9nc3RudXZkZW11eC5oIFwKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9NYWtlZmlsZS5pbiBiL2RvY3MvcGx1Z2lucy9NYWtlZmlsZS5pbgppbmRleCAxMTc0YTk3Li5lZDFlMzZlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvTWFrZWZpbGUuaW4KKysrIGIvZG9jcy9wbHVnaW5zL01ha2VmaWxlLmluCkBAIC0xMzEsMTYgKzEzMSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjY3LDYgKzI2Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA0LDYgKzMwNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzEyLDcgKzMxNSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzMSw4ICszMzMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzQ5LDE2ICszNTIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg0LDYgKzM4OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQwOSw2ICs0MTUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTAsNiArNTE4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyMyw4ICs1MzIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDAsNiArNTQ3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU5NywxNiArNjA2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjU4LDYgKzY2OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NjgsNiArNjgwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjc3LDYgKzY5MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTQsNyArNzI5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC04NzIsNyArODg2LDYgQEAKIAkkKHRvcF9zcmNkaXIpL2dzdC9haWZmL2FpZmZwYXJzZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9haWZmL2FpZmZtdXguaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b2NvbnZlcnQuaCBcCi0JJCh0b3Bfc3JjZGlyKS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaCBcCiAJJCh0b3Bfc3JjZGlyKS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BlY3RyYXNjb3BlLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5oIFwKQEAgLTkxMSw3ICs5MjQsNiBAQAogCSQodG9wX3NyY2RpcikvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R3YXRlcnJpcHBsZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9pdmZwYXJzZS9nc3RpdmZwYXJzZS5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9qcGVnZm9ybWF0L2dzdGpwZWdwYXJzZS5oIFwKLQkkKHRvcF9zcmNkaXIpL2dzdC9saXZlYWRkZXIvbGl2ZWFkZGVyLmggXAogCSQodG9wX3NyY2RpcikvZ3N0L214Zi9teGZkZW11eC5oIFwKIAkkKHRvcF9zcmNkaXIpL2dzdC9teGYvbXhmbXV4LmggXAogCSQodG9wX3NyY2RpcikvZ3N0L251dmRlbXV4L2dzdG51dmRlbXV4LmggXApAQCAtMTQ4NCw3ICsxNDk2LDcgQEAKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQHNnbWwtYnVpbGQuc3RhbXA6IHNjYW4tYnVpbGQuc3RhbXAgJChDRklMRV9HTE9CKSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9wbHVnaW5zLnhzbCAkKGV4cGFuZF9jb250ZW50X2ZpbGVzKQogQEVOQUJMRV9HVEtfRE9DX1RSVUVACUBlY2hvICcgIERPQyAgIEJ1aWxkaW5nIFhNTCcKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAlALW1rZGlyIC1wIHhtbAotQEVOQUJMRV9HVEtfRE9DX1RSVUVACUBmb3IgYSBpbiAkKHNyY2RpcikvJChJTlNQRUNUX0RJUikvKi54bWw7IGRvIFwKK0BFTkFCTEVfR1RLX0RPQ19UUlVFQAlAZm9yIGEgaW4gJChpbnNwZWN0X2ZpbGVzKTsgZG8gXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACSAgICB4c2x0cHJvYyAtLXN0cmluZ3BhcmFtIG1vZHVsZSAkKE1PRFVMRSkgXAogQEVOQUJMRV9HVEtfRE9DX1RSVUVACQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9wbHVnaW5zLnhzbCAkJGEgPiB4bWwvYGJhc2VuYW1lICQkYWA7IGRvbmUKIEBFTkFCTEVfR1RLX0RPQ19UUlVFQAlAZm9yIGYgaW4gJChFWEFNUExFX0NGSUxFUyk7IGRvIFwKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2NzLnNnbWwgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9jcy5zZ21sCmluZGV4IDUxMjc4ZTkuLjcxMGNlZDUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2NzLnNnbWwKKysrIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvY3Muc2dtbApAQCAtMjEsNiArMjEsNyBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LWFpZmZwYXJzZS54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtYWlmZm11eC54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtYXNzcmVuZGVyLnhtbCIgLz4KKyAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1hdWRpb2ludGVybGVhdmUueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LWF1ZGlvbWl4ZXIueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LWF1dG9jb252ZXJ0LnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1iczJiLnhtbCIgLz4KQEAgLTY4LDE2ICs2OSwxMCBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LW1wZWdwc211eC54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtbXBlZ3RzbXV4LnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1tcGxleC54bWwiIC8+Ci0gICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtbXBnMTIzYXVkaW9kZWMueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LW5lb25odHRwc3JjLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1vZmEueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LW9wZW5hbHNyYy54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtb3BlbmFsc2luay54bWwiIC8+Ci0gICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtb3B1c2RlYy54bWwiIC8+Ci0gICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtb3B1c2VuYy54bWwiIC8+Ci0gICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtb3B1c3BhcnNlLnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1ydHBvcHVzcGF5LnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvZWxlbWVudC1ydHBvcHVzZGVwYXkueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LXBjYXBwYXJzZS54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2VsZW1lbnQtcGluY2gueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9lbGVtZW50LXB5cmFtaWRzZWdtZW50LnhtbCIgLz4KQEAgLTEzMiw3ICsxMjcsNiBAQAogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLWdzbS54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1qcGVnZm9ybWF0LnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLWxpdmVhZGRlci54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1taW1pYy54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1tbXMueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tbW9kcGx1Zy54bWwiIC8+CkBAIC0xNDQsNyArMTM4LDYgQEAKICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLW9mYS54bWwiIC8+CiAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL3BsdWdpbi1vcGVuYWwueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tb3BlbmN2LnhtbCIgLz4KLSAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLW9wdXMueG1sIiAvPgogICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC9wbHVnaW4tcGNhcHBhcnNlLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLXJhd3BhcnNlLnhtbCIgLz4KICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvcGx1Z2luLXJmYnNyYy54bWwiIC8+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2VjdGlvbnMudHh0IGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNlY3Rpb25zLnR4dAppbmRleCA1ZTg2OWM4Li4yYzEzNjViIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2VjdGlvbnMudHh0CisrKyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZWN0aW9ucy50eHQKQEAgLTU2LDYgKzU2LDIwIEBACiA8L1NFQ1RJT04+CiAKIDxTRUNUSU9OPgorPEZJTEU+ZWxlbWVudC1hdWRpb2ludGVybGVhdmU8L0ZJTEU+Cis8VElUTEU+YXVkaW9pbnRlcmxlYXZlPC9USVRMRT4KK0dzdEF1ZGlvSW50ZXJsZWF2ZQorPFNVQlNFQ1RJT04gU3RhbmRhcmQ+CitHc3RBdWRpb0ludGVybGVhdmVDbGFzcworR1NUX0FVRElPX0lOVEVSTEVBVkUKK0dTVF9BVURJT19JTlRFUkxFQVZFX0NMQVNTCitHU1RfSVNfQVVESU9fSU5URVJMRUFWRQorR1NUX0lTX0FVRElPX0lOVEVSTEVBVkVfQ0xBU1MKK0dTVF9UWVBFX0FVRElPX0lOVEVSTEVBVkUKK2dzdF9hdWRpb19pbnRlcmxlYXZlX2dldF90eXBlCis8L1NFQ1RJT04+CisKKzxTRUNUSU9OPgogPEZJTEU+ZWxlbWVudC1hdWRpb21peGVyPC9GSUxFPgogPFRJVExFPmF1ZGlvbWl4ZXI8L1RJVExFPgogR3N0QXVkaW9NaXhlcgpAQCAtNzIwLDE1ICs3MzQsNyBAQAogR3N0TGl2ZUFkZGVyCiA8U1VCU0VDVElPTiBTdGFuZGFyZD4KIEdzdExpdmVBZGRlckNsYXNzCi1HU1RfSVNfTElWRV9BRERFUgotR1NUX0lTX0xJVkVfQURERVJfQ0xBU1MKLUdTVF9JU19NWEZfREVNVVhfUEFECi1HU1RfTElWRV9BRERFUgotR1NUX0xJVkVfQURERVJfQ0xBU1MKLUdTVF9MSVZFX0FEREVSX0dFVF9DTEFTUwogR1NUX1RZUEVfTElWRV9BRERFUgotR3N0TGl2ZUFkZGVyRm9ybWF0Ci1Hc3RMaXZlQWRkZXJGdW5jdGlvbgogZ3N0X2xpdmVfYWRkZXJfZ2V0X3R5cGUKIDwvU0VDVElPTj4KIApAQCAtOTgzLDIwICs5ODksNiBAQAogPC9TRUNUSU9OPgogCiA8U0VDVElPTj4KLTxGSUxFPmVsZW1lbnQtbXBnMTIzYXVkaW9kZWM8L0ZJTEU+Ci08VElUTEU+bXBnMTIzYXVkaW9kZWM8L1RJVExFPgotR3N0TXBnMTIzQXVkaW9EZWMKLTxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR3N0TXBnMTIzQXVkaW9EZWNDbGFzcwotR1NUX01QRzEyM19BVURJT19ERUMKLUdTVF9NUEcxMjNfQVVESU9fREVDX0NMQVNTCi1HU1RfSVNfTVBHMTIzX0FVRElPX0RFQwotR1NUX0lTX01QRzEyM19BVURJT19ERUNfQ0xBU1MKLUdTVF9UWVBFX01QRzEyM19BVURJT19ERUMKLWdzdF9tcGcxMjNfYXVkaW9fZGVjX2dldF90eXBlCi08L1NFQ1RJT04+Ci0KLTxTRUNUSU9OPgogPEZJTEU+ZWxlbWVudC1teGZkZW11eDwvRklMRT4KIDxUSVRMRT5teGZkZW11eDwvVElUTEU+CiBHc3RNWEZEZW11eApAQCAtMTAwOCw2ICsxMDAwLDcgQEAKIEdTVF9NWEZfREVNVVhfQ0xBU1MKIEdTVF9UWVBFX01YRl9ERU1VWAogZ3N0X214Zl9kZW11eF9nZXRfdHlwZQorR1NUX0lTX01YRl9ERU1VWF9QQUQKIDwvU0VDVElPTj4KIAogPFNFQ1RJT04+CkBAIC0xMTA5LDcxICsxMTAyLDYgQEAKIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X3BsdWdpbl9pbml0CiA8L1NFQ1RJT04+CiAKLTxGSUxFPmVsZW1lbnQtb3B1c2RlYzwvRklMRT4KLTxUSVRMRT5vcHVzZGVjPC9USVRMRT4KLUdzdE9wdXNEZWMKLTxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR3N0T3B1c0RlY0NsYXNzCi1nc3Rfb3B1c19kZWNfZ2V0X3R5cGUKLUdTVF9UWVBFX09QVVNfREVDCi1HU1RfT1BVU19ERUMKLUdTVF9PUFVTX0RFQ19DTEFTUwotR1NUX0lTX09QVVNfREVDCi1HU1RfSVNfT1BVU19ERUNfQ0xBU1MKLTwvU0VDVElPTj4KLQotPEZJTEU+ZWxlbWVudC1vcHVzZW5jPC9GSUxFPgotPFRJVExFPm9wdXNlbmM8L1RJVExFPgotR3N0T3B1c0VuYwotPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1Hc3RPcHVzRW5jQ2xhc3MKLWdzdF9vcHVzX2VuY19nZXRfdHlwZQotR1NUX1RZUEVfT1BVU19FTkMKLUdTVF9PUFVTX0VOQwotR1NUX09QVVNfRU5DX0NMQVNTCi1HU1RfSVNfT1BVU19FTkMKLUdTVF9JU19PUFVTX0VOQ19DTEFTUwotPC9TRUNUSU9OPgotCi08RklMRT5lbGVtZW50LW9wdXNwYXJzZTwvRklMRT4KLTxUSVRMRT5vcHVzcGFyc2U8L1RJVExFPgotR3N0T3B1c1BhcnNlCi08U1VCU0VDVElPTiBTdGFuZGFyZD4KLUdzdE9wdXNQYXJzZUNsYXNzCi1nc3Rfb3B1c19wYXJzZV9nZXRfdHlwZQotR1NUX1RZUEVfT1BVU19QQVJTRQotR1NUX09QVVNfUEFSU0UKLUdTVF9PUFVTX1BBUlNFX0NMQVNTCi1HU1RfSVNfT1BVU19QQVJTRQotR1NUX0lTX09QVVNfUEFSU0VfQ0xBU1MKLTwvU0VDVElPTj4KLQotPEZJTEU+ZWxlbWVudC1ydHBvcHVzZGVwYXk8L0ZJTEU+Ci08VElUTEU+cnRwb3B1c2RlcGF5PC9USVRMRT4KLUdzdFJUUE9wdXNEZXBheQotPFNVQlNFQ1RJT04gU3RhbmRhcmQ+Ci1Hc3RSVFBPcHVzRGVwYXlDbGFzcwotZ3N0X3J0cF9vcHVzX2RlcGF5X2dldF90eXBlCi1HU1RfVFlQRV9SVFBfT1BVU19ERVBBWQotR1NUX1JUUF9PUFVTX0RFUEFZCi1HU1RfUlRQX09QVVNfREVQQVlfQ0xBU1MKLUdTVF9JU19SVFBfT1BVU19ERVBBWQotR1NUX0lTX1JUUF9PUFVTX0RFUEFZX0NMQVNTCi08L1NFQ1RJT04+Ci0KLTxGSUxFPmVsZW1lbnQtcnRwb3B1c3BheTwvRklMRT4KLTxUSVRMRT5ydHBvcHVzcGF5PC9USVRMRT4KLUdzdFJ0cE9QVVNQYXkKLTxTVUJTRUNUSU9OIFN0YW5kYXJkPgotR3N0UnRwT1BVU1BheUNsYXNzCi1nc3RfcnRwX29wdXNfcGF5X2dldF90eXBlCi1HU1RfVFlQRV9SVFBfT1BVU19QQVkKLUdTVF9SVFBfT1BVU19QQVkKLUdTVF9SVFBfT1BVU19QQVlfQ0xBU1MKLUdTVF9JU19SVFBfT1BVU19QQVkKLUdTVF9JU19SVFBfT1BVU19QQVlfQ0xBU1MKLTwvU0VDVElPTj4KLQogPFNFQ1RJT04+CiA8RklMRT5lbGVtZW50LXBjYXBwYXJzZTwvRklMRT4KIDxUSVRMRT5wY2FwcGFyc2U8L1RJVExFPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmFyZ3MgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuYXJncwppbmRleCA4MDJhNTZmLi4wYmRiZmJkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuYXJncworKysgYi9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuYXJncwpAQCAtMTg3NDksNiArMTg3NDksMzYgQEAKIDwvQVJHPgogCiA8QVJHPgorPE5BTUU+R3N0VmlkZW9QYXJzZTo6ZnJhbWVzaXplPC9OQU1FPgorPFRZUEU+Z3VpbnQ8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5GcmFtZXNpemU8L05JQ0s+Cis8QkxVUkI+U2l6ZSBvZiBhbiBpbWFnZSBpbiByYXcgc3RyZWFtICgwOiBkZWZhdWx0KS48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VmlkZW9QYXJzZTo6b2Zmc2V0czwvTkFNRT4KKzxUWVBFPmdjaGFyKjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPk9mZnNldHM8L05JQ0s+Cis8QkxVUkI+T2Zmc2V0IG9mIGVhY2ggcGxhbmVzIGluIGJ5dGVzIHVzaW5nIHN0cmluZyBmb3JtYXQ6ICdvMCxvMSxvMixvMycuPC9CTFVSQj4KKzxERUZBVUxUPk5VTEw8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFZpZGVvUGFyc2U6OnN0cmlkZXM8L05BTUU+Cis8VFlQRT5nY2hhcio8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TdHJpZGVzPC9OSUNLPgorPEJMVVJCPlN0cmlkZSBvZiBlYWNoIHBsYW5lcyBpbiBieXRlcyB1c2luZyBzdHJpbmcgZm9ybWF0OiAnczAsczEsczIsczMnLjwvQkxVUkI+Cis8REVGQVVMVD5OVUxMPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+CiA8TkFNRT5Hc3RNZXRhZGF0YVBhcnNlOjpleGlmPC9OQU1FPgogPFRZUEU+Z2Jvb2xlYW48L1RZUEU+CiA8UkFOR0U+PC9SQU5HRT4KQEAgLTIzOTUyLDEwICsyMzk4MiwxMCBAQAogPE5BTUU+R3N0TGl2ZUFkZGVyOjpsYXRlbmN5PC9OQU1FPgogPFRZUEU+Z3VpbnQ8L1RZUEU+CiA8UkFOR0U+PC9SQU5HRT4KLTxGTEFHUz5ydzwvRkxBR1M+Ci08TklDSz5CdWZmZXJpbmcgbGF0ZW5jeTwvTklDSz4KLTxCTFVSQj5BbW91bnQgb2YgZGF0YSB0byBidWZmZXIgKGluIG1pbGxpc2Vjb25kcykuPC9CTFVSQj4KLTxERUZBVUxUPjYwPC9ERUZBVUxUPgorPEZMQUdTPnJ3eDwvRkxBR1M+Cis8TklDSz5CdWZmZXIgbGF0ZW5jeTwvTklDSz4KKzxCTFVSQj5BZGRpdGlvbmFsIGxhdGVuY3kgaW4gbGl2ZSBtb2RlIHRvIGFsbG93IHVwc3RyZWFtIHRvIHRha2UgbG9uZ2VyIHRvIHByb2R1Y2UgYnVmZmVycyBmb3IgdGhlIGN1cnJlbnQgcG9zaXRpb24gKGluIG1pbGxpc2Vjb25kcykuPC9CTFVSQj4KKzxERUZBVUxUPjMwPC9ERUZBVUxUPgogPC9BUkc+CiAKIDxBUkc+CkBAIC00NjM4OSwxNiArNDY0MTksNiBAQAogPC9BUkc+CiAKIDxBUkc+Ci08TkFNRT5Hc3RHU2V0dGluZ3NBdWRpb1Npbms6OnByb2ZpbGU8L05BTUU+Ci08VFlQRT5Hc3RHU2V0dGluZ3NBdWRpb1NpbmtQcm9maWxlPC9UWVBFPgotPFJBTkdFPjwvUkFOR0U+Ci08RkxBR1M+cnc8L0ZMQUdTPgotPE5JQ0s+UHJvZmlsZTwvTklDSz4KLTxCTFVSQj5Qcm9maWxlLjwvQkxVUkI+Ci08REVGQVVMVD5Tb3VuZCBFdmVudHM8L0RFRkFVTFQ+Ci08L0FSRz4KLQotPEFSRz4KIDxOQU1FPkdzdHNvbGFyaXplOjpzaWxlbnQ8L05BTUU+CiA8VFlQRT5nYm9vbGVhbjwvVFlQRT4KIDxSQU5HRT48L1JBTkdFPgpAQCAtNDcwNzksNiArNDcwOTksMTYgQEAKIDwvQVJHPgogCiA8QVJHPgorPE5BTUU+R3N0Q3ZTb2JlbDo6bWFzazwvTkFNRT4KKzxUWVBFPmdib29sZWFuPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+TWFzazwvTklDSz4KKzxCTFVSQj5TZXRzIHdoZXRoZXIgdGhlIGRldGVjdGVkIGRlcml2YXRpdmUgZWRnZXMgc2hvdWxkIGJlIHVzZWQgYXMgYSBtYXNrIG9uIHRoZSBvcmlnaW5hbCBpbnB1dCBvciBub3QuPC9CTFVSQj4KKzxERUZBVUxUPlRSVUU8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KIDxOQU1FPkdzdEN2U21vb3RoOjpwYXJhbTE8L05BTUU+CiA8VFlQRT5naW50PC9UWVBFPgogPFJBTkdFPj49IDE8L1JBTkdFPgpAQCAtNDcxMzQsNyArNDcxNjQsNyBAQAogPFJBTkdFPj49IDA8L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPmNvbG9yIChnYXVzc2lhbiBzdGFuZGFyZCBkZXZpYXRpb24gb3IgY29sb3Igc2lnbWE8L05JQ0s+Ci08QkxVUkI+SWYgdHlwZSBpcyBnYXVzc2lhbiwgdGhpcyBtZWFucyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uLklmIHR5cGUgaXMgYmlsYXRlcmFsLCB0aGlzIG1lYW5zIHRoZSBjb2xvci1zaWdtYS4gSWYgemVybywgRGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQuQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbS9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoLjwvQkxVUkI+Cis8QkxVUkI+SWYgdHlwZSBpcyBnYXVzc2lhbiwgdGhpcyBtZWFucyB0aGUgc3RhbmRhcmQgZGV2aWF0aW9uLklmIHR5cGUgaXMgYmlsYXRlcmFsLCB0aGlzIG1lYW5zIHRoZSBjb2xvci1zaWdtYS4gSWYgemVybywgRGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQuPC9CTFVSQj4KIDxERUZBVUxUPjA8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNDcxNDMsOSArNDcxNzMsOSBAQAogPFRZUEU+Z2ludDwvVFlQRT4KIDxSQU5HRT4+PSAwPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+Ci08TklDSz5oZWlnaHQgKGFwZXJ0dXJlIGhlaWdodCk8L05JQ0s+Ci08QkxVUkI+VGhlIGFwZXJ0dXJlIGhlaWdodCwgaWYgemVybywgdGhlIHdpZHRoIGlzIHVzZWQuKE11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCBvciB6ZXJvLCB1bnVzZXQgaW4gbWVkaWFuIGFuZCBiaWxhdGVyYWwgdHlwZXMpLiBDaGVjayBjdlNtb290aCBPcGVuQ1YgZG9jczogaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGguPC9CTFVSQj4KLTxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8TklDSz5oZWlnaHQgKGtlcm5lbCBoZWlnaHQpPC9OSUNLPgorPEJMVVJCPlRoZSBnYXVzc2lhbiBrZXJuZWwgaGVpZ2h0IChtdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLjwvQkxVUkI+Cis8REVGQVVMVD4zPC9ERUZBVUxUPgogPC9BUkc+CiAKIDxBUkc+CkBAIC00NzE1NCw3ICs0NzE4NCw3IEBACiA8UkFOR0U+Pj0gMDwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+c3BhdGlhbCAoc3BhdGlhbCBzaWdtYSwgYmlsYXRlcmFsIG9ubHkpPC9OSUNLPgotPEJMVVJCPk9ubHkgdXNlZCBpbiBiaWxhdGVyYWwgdHlwZSwgbWVhbnMgdGhlIHNwYXRpYWwtc2lnbWEuQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbS9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoLjwvQkxVUkI+Cis8QkxVUkI+T25seSB1c2VkIGluIGJpbGF0ZXJhbCB0eXBlLCBtZWFucyB0aGUgc3BhdGlhbC1zaWdtYS48L0JMVVJCPgogPERFRkFVTFQ+MDwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC00NzE2Myw4ICs0NzE5Myw4IEBACiA8VFlQRT5naW50PC9UWVBFPgogPFJBTkdFPj49IDE8L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KLTxOSUNLPndpZHRoIChhcGVydHVyZSB3aWR0aCk8L05JQ0s+Ci08QkxVUkI+VGhlIGFwZXJ0dXJlIHdpZHRoIChNdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLkNoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aC48L0JMVVJCPgorPE5JQ0s+d2lkdGggKGtlcm5lbCB3aWR0aCk8L05JQ0s+Cis8QkxVUkI+VGhlIGdhdXNzaWFuIGtlcm5lbCB3aWR0aCAobXVzdCBiZSBwb3NpdGl2ZSBhbmQgb2RkKS5JZiB0eXBlIGlzIG1lZGlhbiwgdGhpcyBtZWFucyB0aGUgYXBlcnR1cmUgbGluZWFyIHNpemUuQ2hlY2sgT3BlbkNWIGRvY3M6IGh0dHA6Ly9kb2NzLm9wZW5jdi5vcmcvMi40L21vZHVsZXMvaW1ncHJvYy9kb2MvZmlsdGVyaW5nLmh0bS48L0JMVVJCPgogPERFRkFVTFQ+MzwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC00NzE3OSw2ICs0NzIwOSwzNiBAQAogPC9BUkc+CiAKIDxBUkc+Cis8TkFNRT5Hc3RDdkxhcGxhY2U6OnNjYWxlPC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT4+PSAwPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5zY2FsZSBmYWN0b3I8L05JQ0s+Cis8QkxVUkI+U2NhbGUgZmFjdG9yLjwvQkxVUkI+Cis8REVGQVVMVD4xPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RDdkxhcGxhY2U6OnNoaWZ0PC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT4+PSAwPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TaGlmdDwvTklDSz4KKzxCTFVSQj5WYWx1ZSBhZGRlZCB0byB0aGUgc2NhbGVkIHNvdXJjZSBhcnJheSBlbGVtZW50cy48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0Q3ZMYXBsYWNlOjptYXNrPC9OQU1FPgorPFRZUEU+Z2Jvb2xlYW48L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5NYXNrPC9OSUNLPgorPEJMVVJCPlNldHMgd2hldGhlciB0aGUgZGV0ZWN0ZWQgZWRnZXMgc2hvdWxkIGJlIHVzZWQgYXMgYSBtYXNrIG9uIHRoZSBvcmlnaW5hbCBpbnB1dCBvciBub3QuPC9CTFVSQj4KKzxERUZBVUxUPlRSVUU8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KIDxOQU1FPkdzdFJvdGF0ZTo6YW5nbGU8L05BTUU+CiA8VFlQRT5nZG91YmxlPC9UWVBFPgogPFJBTkdFPjwvUkFOR0U+CkBAIC01ODQ4NCw3ICs1ODU0NCw3IEBACiA8UkFOR0U+PC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5Vc2UgaW4tYmFuZCBGRUM8L05JQ0s+Ci08QkxVUkI+VXNlIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUuPC9CTFVSQj4KKzxCTFVSQj5Vc2UgZm9yd2FyZCBlcnJvciBjb3JyZWN0aW9uIGlmIGF2YWlsYWJsZSAobmVlZHMgUExDIGVuYWJsZWQpLjwvQkxVUkI+CiA8REVGQVVMVD5GQUxTRTwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODY1NCw3ICs1ODcxNCw3IEBACiA8UkFOR0U+PC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5DYWxjdWxhdGUgTW90aW9uPC9OSUNLPgotPEJMVVJCPklmIG5lZWRzIGNhbGN1bGF0ZSBtb3Rpb24gb24gZnJhbWUgeW91IG5lZWQgdGhpcyBwcm9wZXJ0eSBzZXR0aW5nIHRydWUgb3RoZXJ3aXNlIGZhbHNlLjwvQkxVUkI+Cis8QkxVUkI+VG9nZ2xlcyBtb3Rpb24gY2FsY3VsYXRpb24uIElmIEZBTFNFLCB0aGlzIGZpbHRlciBkb2VzIG5vdGhpbmcuPC9CTFVSQj4KIDxERUZBVUxUPlRSVUU8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg2NjQsNyArNTg3MjQsNyBAQAogPFJBTkdFPjwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+Q29sb3Igb2YgTW90aW9uIENlbGxzPC9OSUNLPgotPEJMVVJCPlRoZSBjb2xvciBvZiBtb3Rpb24gY2VsbHMgc2VwYXJhdGVkIHdpdGggIiwiLjwvQkxVUkI+Cis8QkxVUkI+Q29sb3IgZm9yIG1vdGlvbiBjZWxscyBpbiBSLEcsQiBmb3JtYXQuIE1heCBwZXIgY2hhbm5lbCBpcyAyNTUuPC9CTFVSQj4KIDxERUZBVUxUPiIyNTUsMjU1LDAiPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4Njk0LDcgKzU4NzU0LDcgQEAKIDxSQU5HRT48L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPkRpc3BsYXk8L05JQ0s+Ci08QkxVUkI+TW90aW9uIENlbGxzIHZpc2libGUgb3Igbm90IG9uIEN1cnJlbnQgRnJhbWUuPC9CTFVSQj4KKzxCTFVSQj5Ub2dnbGUgZGlzcGxheSBvZiBtb3Rpb24gY2VsbHMgb24gY3VycmVudCBmcmFtZS48L0JMVVJCPgogPERFRkFVTFQ+RkFMU0U8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3MDMsOCArNTg3NjMsOCBAQAogPFRZUEU+Z2ludDwvVFlQRT4KIDxSQU5HRT5bMSw2MF08L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KLTxOSUNLPkdhcCBpcyB0aW1lIGluIHNlY29uZCwgZWxhcHNlZCB0aW1lIGZyb20gbGFzdCBtb3Rpb24gdGltZXN0YW1wLiA8L05JQ0s+Ci08QkxVUkI+SWYgZWxhcHNlZCB0aW1lIG1pbnVzIGZvcm0gbGFzdCBtb3Rpb24gdGltZXN0YW1wIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBnYXAgdGhlbiB3ZSBwb3N0IG1vdGlvbiBmaW5pc2hlZCBidXMgbWVzc2FnZS4gLjwvQkxVUkI+Cis8TklDSz5Nb3Rpb24tZmluaXNoZWQgVGhyZXNob2xkPC9OSUNLPgorPEJMVVJCPkludGVydmFsIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggbW90aW9uIGlzIGNvbnNpZGVyZWQgZmluaXNoZWQgYW5kIGEgbW90aW9uIGZpbmlzaGVkIGJ1cyBtZXNzYWdlIGlzIHBvc3RlZC48L0JMVVJCPgogPERFRkFVTFQ+NTwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODcxNCw3ICs1ODc3NCw3IEBACiA8UkFOR0U+WzgsMzJdPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5OdW1iZXIgb2YgSG9yaXpvbnRhbCBHcmlkczwvTklDSz4KLTxCTFVSQj5Zb3UgY2FuIGdpdmUgbnVtYmVyIG9mIGhvcml6b250YWwgZ3JpZCBjZWxscy48L0JMVVJCPgorPEJMVVJCPk51bWJlciBvZiBob3Jpem9udGFsIGdyaWQgY2VsbHMuPC9CTFVSQj4KIDxERUZBVUxUPjEwPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4NzI0LDcgKzU4Nzg0LDcgQEAKIDxSQU5HRT5bOCwzMl08L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPk51bWJlciBvZiBWZXJ0aWNhbCBHcmlkczwvTklDSz4KLTxCTFVSQj5Zb3UgY2FuIGdpdmUgbnVtYmVyIG9mIHZlcnRpY2FsIGdyaWQgY2VsbHMuPC9CTFVSQj4KKzxCTFVSQj5OdW1iZXIgb2YgdmVydGljYWwgZ3JpZCBjZWxscy48L0JMVVJCPgogPERFRkFVTFQ+MTA8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3MzMsOCArNTg3OTMsOCBAQAogPFRZUEU+Z2ludDwvVFlQRT4KIDxSQU5HRT5bMSw2MF08L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KLTxOSUNLPk1JTklNVU4gTU9USU9OIEZSQU1FUzwvTklDSz4KLTxCTFVSQj5EZWZpbmUgdGhlIG1pbmltdW0gbnVtYmVyIG9mIG1vdGlvbiBmcmFtZXMgdGhhdCB0cmlnZ2VyIGEgbW90aW9uIGV2ZW50LjwvQkxVUkI+Cis8TklDSz5NaW5pbXVtIE1vdGlvbiBGcmFtZXM8L05JQ0s+Cis8QkxVUkI+TWluaW11bSBudW1iZXIgb2YgbW90aW9uIGZyYW1lcyB0cmlnZ2VyaW5nIGEgbW90aW9uIGV2ZW50LjwvQkxVUkI+CiA8REVGQVVMVD4xPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4NzQ0LDcgKzU4ODA0LDcgQEAKIDxSQU5HRT48L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPk1vdGlvbiBDZWxscyBPZiBJbnRlcmVzdChNT0NJKTwvTklDSz4KLTxCTFVSQj5UaGUgbGluZSBhbmQgY29sdW1uIGlkeCBzZXBhcmF0ZWQgd2l0aCAiOiIsIGRlc2NyaWJlIGEgY2VsbC4gQ2VsbHMgc2VwYXJhdGVkIHdpdGggIiwiLjwvQkxVUkI+Cis8QkxVUkI+RGVzY3JpYmUgYSBjZWxsIHdpdGggaXRzIGxpbmUgYW5kIGNvbHVtbiBpZHggc2VwYXJhdGVkIHdpdGggIjoiLiBQYXNzIG11bHRpcGxlIGNlbGxzIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuPC9CTFVSQj4KIDxERUZBVUxUPk5VTEw8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3NTQsNyArNTg4MTQsNyBAQAogPFJBTkdFPltHX01BWFVMT05HLDVdPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5Nb3Rpb24gQ2VsbCBUaGlja25lc3M8L05JQ0s+Ci08QkxVUkI+TW90aW9uIENlbGwgQm9yZGVyIFRoaWNrbmVzcywgaWYgaXQncyAtMSB0aGVuIG1vdGlvbiBjZWxsIHdpbGwgYmUgZmlsbC48L0JMVVJCPgorPEJMVVJCPk1vdGlvbiBDZWxsIEJvcmRlciBUaGlja25lc3MuIFNldCB0byAtMSB0byBmaWxsIG1vdGlvbiBjZWxsLjwvQkxVUkI+CiA8REVGQVVMVD4xPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4NzY0LDcgKzU4ODI0LDcgQEAKIDxSQU5HRT48L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPk1vdGlvbiBNYXNrIHdpdGggQ2VsbHMgUG9zaXRpb248L05JQ0s+Ci08QkxVUkI+VGhlIGxpbmUgYW5kIGNvbHVtbiBpZHggc2VwYXJhdGVkIHdpdGggIjoiIHdoYXQgY2VsbHMgd2FudCB3ZSBtYXNrLW91dCwgZGVzY3JpYmUgYSBjZWxsLiBDZWxscyBzZXBhcmF0ZWQgd2l0aCAiLCIuPC9CTFVSQj4KKzxCTFVSQj5EZXNjcmliZSBhIGNlbGwgd2l0aCBpdHMgbGluZSBhbmQgY29sdW1uIGlkeCBzZXBhcmF0ZWQgd2l0aCAiOiIuIFBhc3MgbXVsdGlwbGUgY2VsbHMgYXMgYSBjb21tYS1zZXBhcmF0ZWQgbGlzdC48L0JMVVJCPgogPERFRkFVTFQ+TlVMTDwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODc3NCw3ICs1ODgzNCw3IEBACiA8UkFOR0U+PC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5Nb3Rpb24gTWFzayB3aXRoIENvb3JkaW5hdGVzPC9OSUNLPgotPEJMVVJCPlRoZSB1cHBlciBsZWZ0IHgsIHkgYW5kIGxvd2VyIHJpZ2h0IHgsIHkgY29vcmRpbmF0ZXMgc2VwYXJhdGVkIHdpdGggIjoiLCBkZXNjcmliZSBhIHJlZ2lvbi4gUmVnaW9ucyBzZXBhcmF0ZWQgd2l0aCAiLCIuPC9CTFVSQj4KKzxCTFVSQj5EZXNjcmliZSBhIHJlZ2lvbiB3aXRoIGl0cyB1cHBlciBsZWZ0IGFuZCBsb3dlciByaWdodCB4LCB5IGNvb3JkaW5hdGVzIHNlcGFyYXRlZCB3aXRoICI6Ii4gUGFzcyBtdWx0aXBsZSByZWdpb25zIGFzIGEgY29tbWEtc2VwYXJhdGVkIGxpc3QuPC9CTFVSQj4KIDxERUZBVUxUPk5VTEw8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTg3ODQsNyArNTg4NDQsNyBAQAogPFJBTkdFPjwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+UG9zdCBBbGwgTW90aW9uPC9OSUNLPgotPEJMVVJCPkVsZW1lbnQgcG9zdCBidXMgbXNnIGZvciBldmVyeSBtb3Rpb24gZnJhbWUgb3IganVzdCBtb3Rpb24gc3RhcnQgYW5kIG1vdGlvbiBzdG9wLjwvQkxVUkI+Cis8QkxVUkI+UG9zdCBidXMgbWVzc2FnZXMgZm9yIGV2ZXJ5IG1vdGlvbiBmcmFtZSBvciBqdXN0IG1vdGlvbiBzdGFydCBhbmQgbW90aW9uIHN0b3AuPC9CTFVSQj4KIDxERUZBVUxUPkZBTFNFPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4NzkzLDggKzU4ODUzLDggQEAKIDxUWVBFPmdpbnQ8L1RZUEU+CiA8UkFOR0U+WzAsMTgwXTwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgotPE5JQ0s+UE9TVE5PTU9USU9OPC9OSUNLPgotPEJMVVJCPklmIG5vbiAwIHBvc3QgYSBub19tb3Rpb24gZXZlbnQgaXMgcG9zdGVkIG9uIHRoZSBidXMgaWYgbm8gbW90aW9uIGlzIGRldGVjdGVkIGZvciBOIHNlY29uZHMuPC9CTFVSQj4KKzxOSUNLPk5vLW1vdGlvbiBUaHJlc2hvbGQ8L05JQ0s+Cis8QkxVUkI+SWYgbm9uIDAsIHBvc3QgYSBub19tb3Rpb24gZXZlbnQgb24gdGhlIGJ1cyBpZiBubyBtb3Rpb24gaXMgZGV0ZWN0ZWQgZm9yIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcy48L0JMVVJCPgogPERFRkFVTFQ+MDwvREVGQVVMVD4KIDwvQVJHPgogCkBAIC01ODgwNCw3ICs1ODg2NCw3IEBACiA8UkFOR0U+WzAsMV08L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPk1vdGlvbiBTZW5zaXRpdml0eTwvTklDSz4KLTxCTFVSQj5Zb3UgY2FuIHR1bm5pbmcgdGhlIGVsZW1lbnQgbW90aW9uIHNlbnNpdGl2aXR5LjwvQkxVUkI+Cis8QkxVUkI+TW90aW9uIGRldGVjdGlvbiBzZW5zaXRpdml0eS48L0JMVVJCPgogPERFRkFVTFQ+MC41PC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4ODE0LDcgKzU4ODc0LDcgQEAKIDxSQU5HRT5bMCwxXTwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+TG93ZXIgYm91bmQgb2YgbW90aW9uIGNlbGxzIG51bWJlcjwvTklDSz4KLTxCTFVSQj5UaHJlc2hvbGQgdmFsdWUgZm9yIG1vdGlvbiwgd2hlbiBtb3Rpb24gY2VsbHMgbnVtYmVyIGdyZWF0ZXIgc3VtIGNlbGxzICogdGhyZXNob2xkLCB3ZSBzaG93IG1vdGlvbi48L0JMVVJCPgorPEJMVVJCPlRocmVzaG9sZCB2YWx1ZSBmb3IgbW90aW9uLiBGaWx0ZXIgZGV0ZWN0cyBtb3Rpb24gd2hlbiBhdCBsZWFzdCB0aGlzIGZyYWN0aW9uIG9mIHRoZSBjZWxscyBoYXZlIG1vdmVkLjwvQkxVUkI+CiA8REVGQVVMVD4wLjAxPC9ERUZBVUxUPgogPC9BUkc+CiAKQEAgLTU4ODI0LDcgKzU4ODg0LDcgQEAKIDxSQU5HRT48L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPlVzZSBhbHBoYTwvTklDSz4KLTxCTFVSQj5Vc2Ugb3Igbm90IGFscGhhIGJsZW5kaW5nIG9uIGZyYW1lcyB3aXRoIG1vdGlvbiBjZWxscy48L0JMVVJCPgorPEJMVVJCPlRvZ2dsZSB1c2FnZSBvZiBhbHBoYSBibGVuZGluZyBvbiBmcmFtZXMgd2l0aCBtb3Rpb24gY2VsbHMuPC9CTFVSQj4KIDxERUZBVUxUPlRSVUU8L0RFRkFVTFQ+CiA8L0FSRz4KIApAQCAtNTk5MzksNiArNTk5OTksMTYgQEAKIDwvQVJHPgogCiA8QVJHPgorPE5BTUU+R3N0RGFzaERlbXV4OjpwcmVzZW50YXRpb24tZGVsYXk8L05BTUU+Cis8VFlQRT5nY2hhcio8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5QcmVzZW50YXRpb24gZGVsYXk8L05JQ0s+Cis8QkxVUkI+RGVmYXVsdCBwcmVzZW50YXRpb24gZGVsYXkgKGluIHNlY29uZHMsIG1pbGxpc2Vjb25kcyBvciBmcmFnbWVudHMpIChlLmcuIDEycywgMjUwMG1zLCAzZikuPC9CTFVSQj4KKzxERUZBVUxUPk5VTEw8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KIDxOQU1FPkdzdFNraW5EZXRlY3Q6Om1ldGhvZDwvTkFNRT4KIDxUWVBFPkdzdFNraW5kZXRlY3RNZXRob2Q8L1RZUEU+CiA8UkFOR0U+PC9SQU5HRT4KQEAgLTU5OTgwLDggKzYwMDUwLDggQEAKIAogPEFSRz4KIDxOQU1FPkdzdEhhbmRkZXRlY3Q6OlJPSS1IRUlHSFQ8L05BTUU+Ci08VFlQRT5ndWludDwvVFlQRT4KLTxSQU5HRT48L1JBTkdFPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT4+PSAwPC9SQU5HRT4KIDxGTEFHUz5ydzwvRkxBR1M+CiA8TklDSz5ST0lfSEVJR0hUPC9OSUNLPgogPEJMVVJCPkhFSUdIVCBvZiBsZWZ0LXRvcCBwb2ludGVyIGluIHJlZ2lvbiBvZiBpbnRlcmVzdCAKQEAgLTU5OTkxLDggKzYwMDYxLDggQEAKIAogPEFSRz4KIDxOQU1FPkdzdEhhbmRkZXRlY3Q6OlJPSS1XSURUSDwvTkFNRT4KLTxUWVBFPmd1aW50PC9UWVBFPgotPFJBTkdFPjwvUkFOR0U+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPj49IDA8L1JBTkdFPgogPEZMQUdTPnJ3PC9GTEFHUz4KIDxOSUNLPlJPSV9XSURUSDwvTklDSz4KIDxCTFVSQj5XSURUSCBvZiBsZWZ0LXRvcCBwb2ludGVyIGluIHJlZ2lvbiBvZiBpbnRlcmVzdCAKQEAgLTYwMDAyLDggKzYwMDcyLDggQEAKIAogPEFSRz4KIDxOQU1FPkdzdEhhbmRkZXRlY3Q6OlJPSS1YPC9OQU1FPgotPFRZUEU+Z3VpbnQ8L1RZUEU+Ci08UkFOR0U+PC9SQU5HRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+Pj0gMDwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+Uk9JX1g8L05JQ0s+CiA8QkxVUkI+WCBvZiBsZWZ0LXRvcCBwb2ludGVyIGluIHJlZ2lvbiBvZiBpbnRlcmVzdCAKQEAgLTYwMDEzLDggKzYwMDgzLDggQEAKIAogPEFSRz4KIDxOQU1FPkdzdEhhbmRkZXRlY3Q6OlJPSS1ZPC9OQU1FPgotPFRZUEU+Z3VpbnQ8L1RZUEU+Ci08UkFOR0U+PC9SQU5HRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+Pj0gMDwvUkFOR0U+CiA8RkxBR1M+cnc8L0ZMQUdTPgogPE5JQ0s+Uk9JX1k8L05JQ0s+CiA8QkxVUkI+WSBvZiBsZWZ0LXRvcCBwb2ludGVyIGluIHJlZ2lvbiBvZiBpbnRlcmVzdCAKQEAgLTY3MDYzLDYgKzY3MTMzLDU2IEBACiA8L0FSRz4KIAogPEFSRz4KKzxOQU1FPkdzdEdMRmlsdGVyU2hhZGVyOjpmcmFnbWVudDwvTkFNRT4KKzxUWVBFPmdjaGFyKjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkZyYWdtZW50IFNvdXJjZTwvTklDSz4KKzxCTFVSQj5HTFNMIGZyYWdtZW50IHNvdXJjZS48L0JMVVJCPgorPERFRkFVTFQ+TlVMTDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xGaWx0ZXJTaGFkZXI6OnNoYWRlcjwvTkFNRT4KKzxUWVBFPkdzdEdMU2hhZGVyKjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNoYWRlciBvYmplY3Q8L05JQ0s+Cis8QkxVUkI+R3N0R0xTaGFkZXIgdG8gdXNlLjwvQkxVUkI+Cis8REVGQVVMVD48L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdMRmlsdGVyU2hhZGVyOjp1bmlmb3JtczwvTkFNRT4KKzxUWVBFPkdzdFN0cnVjdHVyZSo8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5HTFNMIFVuaWZvcm1zPC9OSUNLPgorPEJMVVJCPkdMU0wgVW5pZm9ybXMuPC9CTFVSQj4KKzxERUZBVUxUPjwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xGaWx0ZXJTaGFkZXI6OnVwZGF0ZS1zaGFkZXI8L05BTUU+Cis8VFlQRT5nYm9vbGVhbjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnc8L0ZMQUdTPgorPE5JQ0s+VXBkYXRlIFNoYWRlcjwvTklDSz4KKzxCTFVSQj5FbWl0IHRoZSAnY3JlYXRlLXNoYWRlcicgc2lnbmFsIGZvciB0aGUgbmV4dCBmcmFtZS48L0JMVVJCPgorPERFRkFVTFQ+RkFMU0U8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdMRmlsdGVyU2hhZGVyOjp2ZXJ0ZXg8L05BTUU+Cis8VFlQRT5nY2hhcio8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5WZXJ0ZXggU291cmNlPC9OSUNLPgorPEJMVVJCPkdMU0wgdmVydGV4IHNvdXJjZS48L0JMVVJCPgorPERFRkFVTFQ+TlVMTDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgogPE5BTUU+R3N0R0xPdmVybGF5OjphbmdsZS1wbmc8L05BTUU+CiA8VFlQRT5naW50PC9UWVBFPgogPFJBTkdFPlstOTAsOTBdPC9SQU5HRT4KQEAgLTY4MDMxLDYgKzY4MTUxLDQ2IEBACiA8L0FSRz4KIAogPEFSRz4KKzxOQU1FPkdzdEdMU2lua0Jpbjo6YnJpZ2h0bmVzczwvTkFNRT4KKzxUWVBFPmdkb3VibGU8L1RZUEU+Cis8UkFOR0U+Wy0xLDFdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5CcmlnaHRuZXNzPC9OSUNLPgorPEJMVVJCPmJyaWdodG5lc3MuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdMU2lua0Jpbjo6Y29udHJhc3Q8L05BTUU+Cis8VFlQRT5nZG91YmxlPC9UWVBFPgorPFJBTkdFPlswLDJdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5Db250cmFzdDwvTklDSz4KKzxCTFVSQj5jb250cmFzdC48L0JMVVJCPgorPERFRkFVTFQ+MTwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xTaW5rQmluOjpodWU8L05BTUU+Cis8VFlQRT5nZG91YmxlPC9UWVBFPgorPFJBTkdFPlstMSwxXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+SHVlPC9OSUNLPgorPEJMVVJCPmh1ZS48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0R0xTaW5rQmluOjpzYXR1cmF0aW9uPC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT5bMCwyXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+U2F0dXJhdGlvbjwvTklDSz4KKzxCTFVSQj5zYXR1cmF0aW9uLjwvQkxVUkI+Cis8REVGQVVMVD4xPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+CiA8TkFNRT5Hc3RHTE1peGVyQmluOjpsYXRlbmN5PC9OQU1FPgogPFRZUEU+Z2ludDY0PC9UWVBFPgogPFJBTkdFPj49IDA8L1JBTkdFPgpAQCAtNjg5NDAsMyArNjkxMDAsMjYzIEBACiA8REVGQVVMVD4xMjg8L0RFRkFVTFQ+CiA8L0FSRz4KIAorPEFSRz4KKzxOQU1FPkdzdFRlbGV0ZXh0RGVjOjpmb250LWRlc2NyaXB0aW9uPC9OQU1FPgorPFRZUEU+Z2NoYXIqPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+UGFuZ28gZm9udCBkZXNjcmlwdGlvbjwvTklDSz4KKzxCTFVSQj5Gb250IGRlc2NyaXB0aW9uIHVzZWQgZm9yIHRoZSBwYW5nbyBvdXRwdXQuPC9CTFVSQj4KKzxERUZBVUxUPiJ2ZXJkYW5hIDEyIjwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VGVsZXRleHREZWM6OnBhZ2U8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPlsxMDAsOTk5XTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+UGFnZSBudW1iZXI8L05JQ0s+Cis8QkxVUkI+TnVtYmVyIG9mIHBhZ2UgdGhhdCBzaG91bGQgZGlzcGxheWVkLjwvQkxVUkI+Cis8REVGQVVMVD4xMDA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRlbGV0ZXh0RGVjOjpzdWJwYWdlPC9OQU1FPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT5bR19NQVhVTE9ORywxNTNdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TdWItcGFnZSBudW1iZXI8L05JQ0s+Cis8QkxVUkI+TnVtYmVyIG9mIHN1Yi1wYWdlIHRoYXQgc2hvdWxkIGRpc3BsYXllZCAoLTEgZm9yIGFsbCkuPC9CTFVSQj4KKzxERUZBVUxUPi0xPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUZWxldGV4dERlYzo6c3VidGl0bGVzLW1vZGU8L05BTUU+Cis8VFlQRT5nYm9vbGVhbjwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkVuYWJsZSBzdWJ0aXRsZXMgbW9kZTwvTklDSz4KKzxCTFVSQj5FbmFibGVzIHN1YnRpdGxlcyBtb2RlIGZvciB0ZXh0IG91dHB1dCBzdHJpcHBpbmcgdGhlIGJsYW5rIGxpbmVzIGFuZCB0aGUgdGVsZXRleHQgc3RhdGUgbGluZXMuPC9CTFVSQj4KKzxERUZBVUxUPkZBTFNFPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUZWxldGV4dERlYzo6c3VidGl0bGVzLXRlbXBsYXRlPC9OQU1FPgorPFRZUEU+Z2NoYXIqPC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+U3VidGl0bGVzIG91dHB1dCB0ZW1wbGF0ZTwvTklDSz4KKzxCTFVSQj5PdXRwdXQgdGVtcGxhdGUgdXNlZCB0byBwcmludCBlYWNoIG9uZSBvZiB0aGUgc3VidGl0bGVzIGxpbmVzLjwvQkxVUkI+Cis8REVGQVVMVD4iJXNcXG4iPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3ROZXRTaW06OmRlbGF5LXByb2JhYmlsaXR5PC9OQU1FPgorPFRZUEU+Z2Zsb2F0PC9UWVBFPgorPFJBTkdFPlswLDFdPC9SQU5HRT4KKzxGTEFHUz5yd3g8L0ZMQUdTPgorPE5JQ0s+RGVsYXkgUHJvYmFiaWxpdHk8L05JQ0s+Cis8QkxVUkI+VGhlIFByb2JhYmlsaXR5IGEgYnVmZmVyIGlzIGRlbGF5ZWQuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdE5ldFNpbTo6ZHJvcC1wYWNrZXRzPC9OQU1FPgorPFRZUEU+Z3VpbnQ8L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5yd3g8L0ZMQUdTPgorPE5JQ0s+RHJvcCBQYWNrZXRzPC9OSUNLPgorPEJMVVJCPkRyb3AgdGhlIG5leHQgbiBwYWNrZXRzLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3ROZXRTaW06OmRyb3AtcHJvYmFiaWxpdHk8L05BTUU+Cis8VFlQRT5nZmxvYXQ8L1RZUEU+Cis8UkFOR0U+WzAsMV08L1JBTkdFPgorPEZMQUdTPnJ3eDwvRkxBR1M+Cis8TklDSz5Ecm9wIFByb2JhYmlsaXR5PC9OSUNLPgorPEJMVVJCPlRoZSBQcm9iYWJpbGl0eSBhIGJ1ZmZlciBpcyBkcm9wcGVkLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3ROZXRTaW06OmR1cGxpY2F0ZS1wcm9iYWJpbGl0eTwvTkFNRT4KKzxUWVBFPmdmbG9hdDwvVFlQRT4KKzxSQU5HRT5bMCwxXTwvUkFOR0U+Cis8RkxBR1M+cnd4PC9GTEFHUz4KKzxOSUNLPkR1cGxpY2F0ZSBQcm9iYWJpbGl0eTwvTklDSz4KKzxCTFVSQj5UaGUgUHJvYmFiaWxpdHkgYSBidWZmZXIgaXMgZHVwbGljYXRlZC48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0TmV0U2ltOjptYXgtZGVsYXk8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnd4PC9GTEFHUz4KKzxOSUNLPk1heGltdW0gZGVsYXkgKG1zKTwvTklDSz4KKzxCTFVSQj5UaGUgbWF4aW11bSBkZWxheSBpbiBtcyB0byBhcHBseSB0byBidWZmZXJzLjwvQkxVUkI+Cis8REVGQVVMVD40MDA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdE5ldFNpbTo6bWluLWRlbGF5PC9OQU1FPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT48L1JBTkdFPgorPEZMQUdTPnJ3eDwvRkxBR1M+Cis8TklDSz5NaW5pbXVtIGRlbGF5IChtcyk8L05JQ0s+Cis8QkxVUkI+VGhlIG1pbmltdW0gZGVsYXkgaW4gbXMgdG8gYXBwbHkgdG8gYnVmZmVycy48L0JMVVJCPgorPERFRkFVTFQ+MjAwPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RHRFBEZXBheTo6dHMtb2Zmc2V0PC9OQU1FPgorPFRZUEU+Z2ludDY0PC9UWVBFPgorPFJBTkdFPjwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+VGltZXN0YW1wIE9mZnNldDwvTklDSz4KKzxCTFVSQj5UaW1lc3RhbXAgT2Zmc2V0LjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RHTENvbG9yQmFsYW5jZTo6YnJpZ2h0bmVzczwvTkFNRT4KKzxUWVBFPmdkb3VibGU8L1RZUEU+Cis8UkFOR0U+Wy0xLDFdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5CcmlnaHRuZXNzPC9OSUNLPgorPEJMVVJCPmJyaWdodG5lc3MuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdMQ29sb3JCYWxhbmNlOjpjb250cmFzdDwvTkFNRT4KKzxUWVBFPmdkb3VibGU8L1RZUEU+Cis8UkFOR0U+WzAsMl08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkNvbnRyYXN0PC9OSUNLPgorPEJMVVJCPmNvbnRyYXN0LjwvQkxVUkI+Cis8REVGQVVMVD4xPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RHTENvbG9yQmFsYW5jZTo6aHVlPC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT5bLTEsMV08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPkh1ZTwvTklDSz4KKzxCTFVSQj5odWUuPC9CTFVSQj4KKzxERUZBVUxUPjA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdEdMQ29sb3JCYWxhbmNlOjpzYXR1cmF0aW9uPC9OQU1FPgorPFRZUEU+Z2RvdWJsZTwvVFlQRT4KKzxSQU5HRT5bMCwyXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+U2F0dXJhdGlvbjwvTklDSz4KKzxCTFVSQj5zYXR1cmF0aW9uLjwvQkxVUkI+Cis8REVGQVVMVD4xPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6OmZyZXE8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPlswLDIwMDAwXTwvUkFOR0U+Cis8RkxBR1M+cnc8L0ZMQUdTPgorPE5JQ0s+RnJlcXVlbmN5PC9OSUNLPgorPEJMVVJCPkZyZXF1ZW5jeSBvZiB0ZXN0IHNpZ25hbC48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VG9uZUdlbmVyYXRlU3JjOjpmcmVxMjwvTkFNRT4KKzxUWVBFPmdpbnQ8L1RZUEU+Cis8UkFOR0U+WzAsMjAwMDBdPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TZWNvbmQgRnJlcXVlbmN5PC9OSUNLPgorPEJMVVJCPkZyZXF1ZW5jeSBvZiBzZWNvbmQgdGVsZXBob255IHRvbmUgY29tcG9uZW50LjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6Om9mZi10aW1lPC9OQU1FPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT4+PSAwPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TaWduYWwgT0ZGIHRpbWUgZmlyc3QgcGVyaW9kIDwvTklDSz4KKzxCTFVSQj5UaW1lIG9mIHRoZSBmaXJzdCBwZXJpb2QgIHdoZW4gdGhlIHRvbmUgc2lnbmFsIGlzIG9mZi48L0JMVVJCPgorPERFRkFVTFQ+MTAwMDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VG9uZUdlbmVyYXRlU3JjOjpvZmYtdGltZTI8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPj49IDA8L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNpZ25hbCBPRkYgdGltZSBmaXJzdCBwZXJpb2QgPC9OSUNLPgorPEJMVVJCPlRpbWUgb2YgdGhlIHNlY29uZCBwZXJpb2QgIHdoZW4gdGhlIHRvbmUgc2lnbmFsIGlzIG9mZi48L0JMVVJCPgorPERFRkFVTFQ+MTAwMDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VG9uZUdlbmVyYXRlU3JjOjpvbi10aW1lPC9OQU1FPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT4+PSAxPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TaWduYWwgT04gdGltZSBmaXJzdCBwZXJpb2Q8L05JQ0s+Cis8QkxVUkI+VGltZSBvZiB0aGUgZmlyc3QgcGVyaW9kICB3aGVuIHRoZSB0b25lIHNpZ25hbCBpcyBwcmVzZW50LjwvQkxVUkI+Cis8REVGQVVMVD4xMDAwPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6Om9uLXRpbWUyPC9OQU1FPgorPFRZUEU+Z2ludDwvVFlQRT4KKzxSQU5HRT4+PSAxPC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5TaWduYWwgT04gdGltZSBzZWNvbmQgcGVyaW9kPC9OSUNLPgorPEJMVVJCPlRpbWUgb2YgdGhlIHNlY29uZCBwZXJpb2QgIHdoZW4gdGhlIHRvbmUgc2lnbmFsIGlzIHByZXNlbnQuPC9CTFVSQj4KKzxERUZBVUxUPjEwMDA8L0RFRkFVTFQ+Cis8L0FSRz4KKworPEFSRz4KKzxOQU1FPkdzdFRvbmVHZW5lcmF0ZVNyYzo6cmVwZWF0PC9OQU1FPgorPFRZUEU+Z2Jvb2xlYW48L1RZUEU+Cis8UkFOR0U+PC9SQU5HRT4KKzxGTEFHUz5ydzwvRkxBR1M+Cis8TklDSz5SZXBlYXQgdGhlIHNwZWNpZmllZCB0b25lIHBlcmlvZCA8L05JQ0s+Cis8QkxVUkI+V2hldGhlciB0byByZXBlYXQgc3BlY2lmaWVkIHRvbmUgaW5kZWZpbml0bHkuPC9CTFVSQj4KKzxERUZBVUxUPkZBTFNFPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6OnNhbXBsZXNwZXJidWZmZXI8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPj49IDE8L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlNhbXBsZXMgcGVyIGJ1ZmZlcjwvTklDSz4KKzxCTFVSQj5OdW1iZXIgb2Ygc2FtcGxlcyBpbiBlYWNoIG91dGdvaW5nIGJ1ZmZlci48L0JMVVJCPgorPERFRkFVTFQ+MTAyNDwvREVGQVVMVD4KKzwvQVJHPgorCis8QVJHPgorPE5BTUU+R3N0VG9uZUdlbmVyYXRlU3JjOjp2b2x1bWU8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPlstNTAsMF08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlZvbHVtZTwvTklDSz4KKzxCTFVSQj5Wb2x1bWUgb2YgZmlyc3Qgc2lnbmFsLjwvQkxVUkI+Cis8REVGQVVMVD4wPC9ERUZBVUxUPgorPC9BUkc+CisKKzxBUkc+Cis8TkFNRT5Hc3RUb25lR2VuZXJhdGVTcmM6OnZvbHVtZTI8L05BTUU+Cis8VFlQRT5naW50PC9UWVBFPgorPFJBTkdFPlstNTAsMF08L1JBTkdFPgorPEZMQUdTPnJ3PC9GTEFHUz4KKzxOSUNLPlZvbHVtZTI8L05JQ0s+Cis8QkxVUkI+Vm9sdW1lIG9mIHNlY29uZCB0b25lIHNpZ25hbC48L0JMVVJCPgorPERFRkFVTFQ+MDwvREVGQVVMVD4KKzwvQVJHPgorCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaGllcmFyY2h5IGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmhpZXJhcmNoeQppbmRleCBiMDlmYjVkLi4yMmFmNDdhIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuaGllcmFyY2h5CisrKyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5oaWVyYXJjaHkKQEAgLTMsNyArMyw4IEBACiAgICAgR3N0T2JqZWN0CiAgICAgICBHc3RBbGxvY2F0b3IKICAgICAgICAgR3N0QWxsb2NhdG9yU3lzbWVtCi0gICAgICAgIEdzdFdsU2htQWxsb2NhdG9yCisgICAgICAgIEdzdEZkQWxsb2NhdG9yCisgICAgICAgICAgR3N0V2xTaG1BbGxvY2F0b3IKICAgICAgIEdzdEF1ZGlvUmluZ0J1ZmZlcgogICAgICAgICBHc3RBdWRpb1NpbmtSaW5nQnVmZmVyCiAgICAgICAgIEdzdEF1ZGlvU3JjUmluZ0J1ZmZlcgpAQCAtMTgsNiArMTksOCBAQAogICAgICAgICAgIEdzdEF1ZGlvQWdncmVnYXRvcgogICAgICAgICAgICAgR3N0QXVkaW9JbnRlcmxlYXZlCiAgICAgICAgICAgICBHc3RBdWRpb01peGVyCisgICAgICAgICAgICAgIEdzdExpdmVBZGRlcgorICAgICAgICAgIEdzdE1YRk11eAogICAgICAgICAgIEdzdFZpZGVvQWdncmVnYXRvcgogICAgICAgICAgICAgR3N0Q29tcG9zaXRvcgogICAgICAgICAgICAgR3N0R0xCYXNlTWl4ZXIKQEAgLTM0LDE5ICszNywxNiBAQAogICAgICAgICAgIEdzdER0c0RlYwogICAgICAgICAgIEdzdEZhYWQKICAgICAgICAgICBHc3RHU01EZWMKLSAgICAgICAgICBHc3RNcGcxMjNBdWRpb0RlYwotICAgICAgICAgIEdzdE9wdXNEZWMKICAgICAgICAgICBHc3RTYmNEZWMKICAgICAgICAgICBHc3RTaXJlbkRlYwogICAgICAgICBHc3RBdWRpb0VuY29kZXIKICAgICAgICAgICBBRFBDTUVuYwogICAgICAgICAgIEdzdEdTTUVuYwotICAgICAgICAgIEdzdE9wdXNFbmMKICAgICAgICAgICBHc3RTYmNFbmMKICAgICAgICAgICBHc3RTaXJlbkVuYwogICAgICAgICAgIEdzdFZvQWFjRW5jCiAgICAgICAgICAgR3N0Vm9BbXJXYkVuYwotICAgICAgICBHc3RBdWRpb1Zpc3VhbGl6ZXItQmFkR3N0QXVkaW9WaXN1YWxpemVycworICAgICAgICBHc3RBdWRpb1Zpc3VhbGl6ZXIKICAgICAgICAgICBHc3RTcGFjZVNjb3BlCiAgICAgICAgICAgR3N0U3BlY3RyYVNjb3BlCiAgICAgICAgICAgR3N0U3luYWVTY29wZQpAQCAtMTE1LDYgKzExNSw3IEBACiAgICAgICAgICAgICBHc3RSVE1QU3JjCiAgICAgICAgICAgICBHc3RSZmJTcmMKICAgICAgICAgICAgIEdzdFNobVNyYworICAgICAgICAgICAgR3N0VG9uZUdlbmVyYXRlU3JjCiAgICAgICAgICAgICBHc3RWQ0RTcmMKICAgICAgICAgR3N0QmFzZVRyYW5zZm9ybQogICAgICAgICAgIEdzdEF1ZGlvRmlsdGVyCkBAIC0xNDEsNiArMTQyLDcgQEAKICAgICAgICAgICAgIEdzdEdMQ29sb3JDb252ZXJ0RWxlbWVudAogICAgICAgICAgICAgR3N0R0xEb3dubG9hZEVsZW1lbnQKICAgICAgICAgICAgIEdzdEdMRmlsdGVyCisgICAgICAgICAgICAgIEdzdEdMQ29sb3JCYWxhbmNlCiAgICAgICAgICAgICAgIEdzdEdMQ29sb3JzY2FsZQogICAgICAgICAgICAgICBHc3RHTERlaW50ZXJsYWNlCiAgICAgICAgICAgICAgIEdzdEdMRGlmZmVyZW5jZU1hdHRlCkBAIC0yMDMsMjMgKzIwNSw4IEBACiAgICAgICAgICAgICAgIEdzdFBlcnNwZWN0aXZlCiAgICAgICAgICAgICAgIEdzdFJvdGF0ZQogICAgICAgICAgICAgICBHc3RTcXVhcmUKLSAgICAgICAgICAgIEdzdEdyYWJjdXQKLSAgICAgICAgICAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyCi0gICAgICAgICAgICAgIEdzdEN2RGlsYXRlRXJvZGUKLSAgICAgICAgICAgICAgICBHc3RDdkRpbGF0ZQotICAgICAgICAgICAgICAgIEdzdEN2RXJvZGUKLSAgICAgICAgICAgICAgR3N0Q3ZFcXVhbGl6ZUhpc3QKLSAgICAgICAgICAgICAgR3N0Q3ZMYXBsYWNlCi0gICAgICAgICAgICAgIEdzdEN2U21vb3RoCi0gICAgICAgICAgICAgIEdzdEN2U29iZWwKLSAgICAgICAgICAgICAgR3N0RmFjZUJsdXIKLSAgICAgICAgICAgICAgR3N0RmFjZURldGVjdAotICAgICAgICAgICAgICBHc3RIYW5kZGV0ZWN0Ci0gICAgICAgICAgICAgIEdzdFNraW5EZXRlY3QKLSAgICAgICAgICAgIEdzdFJldGluZXgKICAgICAgICAgICAgIEdzdFJzdmdPdmVybGF5CiAgICAgICAgICAgICBHc3RTY2VuZUNoYW5nZQotICAgICAgICAgICAgR3N0U2VnbWVudGF0aW9uCiAgICAgICAgICAgICBHc3RTaW1wbGVWaWRlb01hcmsKICAgICAgICAgICAgIEdzdFNpbXBsZVZpZGVvTWFya0RldGVjdAogICAgICAgICAgICAgR3N0U21vb3RoCkBAIC0yNjQsMTEgKzI1MSw5IEBACiAgICAgICAgIEdzdENvbXBhcmUKICAgICAgICAgR3N0RFZCU3ViT3ZlcmxheQogICAgICAgICBHc3REVkRTcHUKLSAgICAgICAgR3N0RGlzcGFyaXR5CiAgICAgICAgIEdzdER0bHNEZWMKICAgICAgICAgR3N0RHRsc0VuYwogICAgICAgICBHc3REdGxzU3J0cERlbXV4Ci0gICAgICAgIEdzdEVkZ2VEZXRlY3QKICAgICAgICAgR3N0RXJyb3JJZ25vcmUKICAgICAgICAgR3N0RmVzdGl2YWwKICAgICAgICAgR3N0RmllbGRBbmFseXNpcwpAQCAtMjg0LDMyICsyNjksMjUgQEAKICAgICAgICAgR3N0S2F0ZUVuYwogICAgICAgICBHc3RLYXRlUGFyc2UKICAgICAgICAgICBHc3RLYXRlVGFnCi0gICAgICAgIEdzdExpdmVBZGRlcgogICAgICAgICBHc3RNWEZEZW11eAogICAgICAgICBHc3RNaWRpUGFyc2UKICAgICAgICAgR3N0TWltRGVjCiAgICAgICAgIEdzdE1pbUVuYwogICAgICAgICBHc3RNb2RQbHVnCi0gICAgICAgIEdzdE1vdGlvbmNlbGxzCiAgICAgICAgIEdzdE1wZWcyZW5jCiAgICAgICAgIEdzdE1wZWdQU0RlbXV4CiAgICAgICAgIEdzdE1wbGV4Ci0gICAgICAgIEdzdE9wZW5jdlRleHRPdmVybGF5CisgICAgICAgIEdzdE5ldFNpbQogICAgICAgICBHc3RQY2FwUGFyc2UKICAgICAgICAgR3N0UGl0Y2gKLSAgICAgICAgR3N0UHlyYW1pZFNlZ21lbnQKLSAgICAgICAgR3N0UlRQQmFzZURlcGF5bG9hZAotICAgICAgICAgIEdzdFJUUE9wdXNEZXBheQotICAgICAgICAgIEdzdFJ0cEgyNjVEZXBheQogICAgICAgICBHc3RSVFBCYXNlUGF5bG9hZAogICAgICAgICAgIEdzdFJ0cEFzZlBheQotICAgICAgICAgIEdzdFJ0cEgyNjVQYXkKLSAgICAgICAgICBHc3RSdHBPUFVTUGF5CiAgICAgICAgIEdzdFJhd1BhcnNlCiAgICAgICAgICAgR3N0QXVkaW9QYXJzZQogICAgICAgICAgIEdzdFZpZGVvUGFyc2UKICAgICAgICAgR3N0UnRwT252aWZQYXJzZQogICAgICAgICBHc3RSdHBPbnZpZlRpbWVzdGFtcAorICAgICAgICBHc3RTRkRlYwogICAgICAgICBHc3RTZWdtZW50Q2xpcAogICAgICAgICAgIEdzdEF1ZGlvU2VnbWVudENsaXAKICAgICAgICAgICBHc3RWaWRlb1NlZ21lbnRDbGlwCkBAIC0zMjAsNyArMjk4LDcgQEAKICAgICAgICAgR3N0U3J0cEVuYwogICAgICAgICBHc3RUYWdNdXgKICAgICAgICAgICBHc3RJZDNNdXgKLSAgICAgICAgR3N0VGVtcGxhdGVNYXRjaAorICAgICAgICBHc3RUZWxldGV4dERlYwogICAgICAgICBHc3RVdmNIMjY0TWpwZ0RlbXV4CiAgICAgICAgIEdzdFZpZGVvRGVjb2RlcgogICAgICAgICAgIEdzdExpYmRlMjY1RGVjCkBAIC0zMzcsNiArMzE1LDcgQEAKICAgICAgICAgICBHc3RTY2hyb0VuYwogICAgICAgICAgIEdzdFdlYnBFbmMKICAgICAgICAgICBHc3RYMjY1RW5jCisgICAgICAgIEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsCiAgICAgICAgIEdzdFdlYnZ0dEVuYwogICAgICAgICBHc3RXaWxkbWlkaQogICAgICAgICBHc3RZNG1EZWMKQEAgLTM0NiwyMSArMzI1LDI1IEBACiAgICAgICAgICAgTXBlZ1RTUGFyc2UyCiAgICAgICAgIE1wZWdUc011eAogICAgICAgR3N0R0xDb250ZXh0CisgICAgICBHc3RHTFNoYWRlcgogICAgICAgR3N0UGFkCiAgICAgICAgIEdzdEFnZ3JlZ2F0b3JQYWQKICAgICAgICAgICBHc3RBdWRpb0FnZ3JlZ2F0b3JQYWQKICAgICAgICAgICAgIEdzdEF1ZGlvSW50ZXJsZWF2ZVBhZAogICAgICAgICAgICAgR3N0QXVkaW9NaXhlclBhZAorICAgICAgICAgIEdzdE1YRk11eFBhZAogICAgICAgICAgIEdzdFZpZGVvQWdncmVnYXRvclBhZAogICAgICAgICAgICAgR3N0Q29tcG9zaXRvclBhZAogICAgICAgICAgICAgR3N0R0xCYXNlTWl4ZXJQYWQKICAgICAgICAgICAgICAgR3N0R0xNaXhlclBhZAorICAgICAgICAgICAgICAgIEdzdEdMU3RlcmVvTWl4UGFkCiAgICAgICAgICAgICAgICAgR3N0R0xWaWRlb01peGVyUGFkCiAgICAgICBHc3RQYWRUZW1wbGF0ZQogICAgICAgR3N0UGx1Z2luCiAgICAgICBHc3RQbHVnaW5GZWF0dXJlCiAgICAgICAgIEdzdERldmljZVByb3ZpZGVyRmFjdG9yeQogICAgICAgICBHc3RFbGVtZW50RmFjdG9yeQorICAgICAgICBHc3RUcmFjZXJGYWN0b3J5CiAgICAgICAgIEdzdFR5cGVGaW5kRmFjdG9yeQogICAgICAgR3N0UmVnaXN0cnkKICAgICAgIEdzdFRhc2sKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5pbnRlcmZhY2VzIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmludGVyZmFjZXMKaW5kZXggYjY3MzM4Yy4uYzlkODAzZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmludGVyZmFjZXMKKysrIGIvZG9jcy9wbHVnaW5zL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLmludGVyZmFjZXMKQEAgLTMzLDI1ICszMywyMiBAQAogR3N0RmFjZU92ZXJsYXkgR3N0Q2hpbGRQcm94eQogR3N0RnJlZXZlcmIgR3N0UHJlc2V0CiBHc3RHTEJhc2VNaXhlciBHc3RDaGlsZFByb3h5CitHc3RHTENvbG9yQmFsYW5jZSBHc3RDb2xvckJhbGFuY2UKIEdzdEdMRmlsdGVyQmluIEdzdENoaWxkUHJveHkKIEdzdEdMSW1hZ2VTaW5rIEdzdFZpZGVvT3ZlcmxheQogR3N0R0xJbWFnZVNpbmsgR3N0VmlkZW9PdmVybGF5IEdzdE5hdmlnYXRpb24KIEdzdEdMSW1hZ2VTaW5rQmluIEdzdENoaWxkUHJveHkgR3N0VmlkZW9PdmVybGF5IEdzdE5hdmlnYXRpb24KK0dzdEdMSW1hZ2VTaW5rQmluIEdzdENoaWxkUHJveHkgR3N0VmlkZW9PdmVybGF5IEdzdE5hdmlnYXRpb24gR3N0Q29sb3JCYWxhbmNlCiBHc3RHTE1peGVyIEdzdENoaWxkUHJveHkKIEdzdEdMTWl4ZXJCaW4gR3N0Q2hpbGRQcm94eQogR3N0R0xNb3NhaWMgR3N0Q2hpbGRQcm94eQogR3N0R0xTaW5rQmluIEdzdENoaWxkUHJveHkgR3N0VmlkZW9PdmVybGF5IEdzdE5hdmlnYXRpb24KK0dzdEdMU2lua0JpbiBHc3RDaGlsZFByb3h5IEdzdFZpZGVvT3ZlcmxheSBHc3ROYXZpZ2F0aW9uIEdzdENvbG9yQmFsYW5jZQogR3N0R0xTcmNCaW4gR3N0Q2hpbGRQcm94eQogR3N0R0xTdGVyZW9NaXggR3N0Q2hpbGRQcm94eQogR3N0R0xWaWRlb01peGVyIEdzdENoaWxkUHJveHkKIEdzdEdMVmlkZW9NaXhlckJpbiBHc3RDaGlsZFByb3h5CiBHc3RHU01FbmMgR3N0UHJlc2V0Ci1Hc3RHU2V0dGluZ3NBdWRpb1NpbmsgR3N0Q2hpbGRQcm94eQotR3N0R1NldHRpbmdzQXVkaW9TcmMgR3N0Q2hpbGRQcm94eQotR3N0R1NldHRpbmdzU3dpdGNoU2luayBHc3RDaGlsZFByb3h5Ci1Hc3RHU2V0dGluZ3NTd2l0Y2hTcmMgR3N0Q2hpbGRQcm94eQotR3N0R1NldHRpbmdzVmlkZW9TaW5rIEdzdENoaWxkUHJveHkKLUdzdEdTZXR0aW5nc1ZpZGVvU3JjIEdzdENoaWxkUHJveHkKIEdzdEd0a0Jhc2VTaW5rIEdzdE5hdmlnYXRpb24KIEdzdEd0a0dMU2luayBHc3ROYXZpZ2F0aW9uCiBHc3RHdGtTaW5rIEdzdE5hdmlnYXRpb24KQEAgLTYzLDYgKzYwLDcgQEAKIEdzdEppZk11eCBHc3RUYWdTZXR0ZXIgR3N0VGFnWG1wV3JpdGVyCiBHc3RLYXRlRW5jIEdzdFRhZ1NldHRlcgogR3N0S2F0ZVRhZyBHc3RUYWdTZXR0ZXIKK0dzdExpdmVBZGRlciBHc3RDaGlsZFByb3h5CiBHc3RNTVMgR3N0VVJJSGFuZGxlcgogR3N0TXBlZzJlbmMgR3N0UHJlc2V0CiBHc3RNc3NEZW11eCBHc3RDaGlsZFByb3h5CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMuc2lnbmFscyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5zaWduYWxzCmluZGV4IDEwNDBhN2QuLjdmZWNlZTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5zaWduYWxzCisrKyBiL2RvY3MvcGx1Z2lucy9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy5zaWduYWxzCkBAIC03NTAsMyArNzUwLDEwIEBACiBHc3REdGxzRGVjICpnc3RkdGxzZGVjCiA8L1NJR05BTD4KIAorPFNJR05BTD4KKzxOQU1FPkdzdEdMRmlsdGVyU2hhZGVyOjpjcmVhdGUtc2hhZGVyPC9OQU1FPgorPFJFVFVSTlM+R3N0R0xTaGFkZXIqPC9SRVRVUk5TPgorPEZMQUdTPmw8L0ZMQUdTPgorR3N0R0xGaWx0ZXJTaGFkZXIgKmdzdGdsZmlsdGVyc2hhZGVyCis8L1NJR05BTD4KKwpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvY2gwMS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvY2gwMS5odG1sCmluZGV4IDQ1ZTAzYmQuLjkxNmZmYWIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2NoMDEuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9jaDAxLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5nc3QtcGx1Z2lucy1iYWQgRWxlbWVudHM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KQEAgLTM2LDYgKzM2LDkgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCI+YXNzcmVuZGVyPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KKzxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCI+YXVkaW9pbnRlcmxlYXZlPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgorPC9kdD4KKzxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwiPmF1ZGlvbWl4ZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTc0LDkgKzE3Nyw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCI+bXBsZXg8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwiPm1wZzEyM2F1ZGlvZGVjPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sIj5uZW9uaHR0cHNyYzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xODksMjEgKzE4OSw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sIj5vcGVuYWxzaW5rPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwiPm9wdXNkZWM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCI+b3B1c2VuYzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwiPm9wdXNwYXJzZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIj5ydHBvcHVzcGF5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCI+cnRwb3B1c2RlcGF5PC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCI+cGNhcHBhcnNlPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2NoMDIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2NoMDIuaHRtbAppbmRleCAyNDY3ODczLi43YjU2OTU0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9jaDAyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvY2gwMi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Z3N0LXBsdWdpbnMtYmFkIFBsdWdpbnM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F2ZXNjb3BlLmh0bWwiIHRpdGxlPSJ3YXZlc2NvcGUiPgpAQCAtOTMsOSArOTMsNiBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwiPmpwZWdmb3JtYXQ8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIEpQRUcgaW50ZXJjaGFuZ2UgZm9ybWF0IHBsdWdpbjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sIj5saXZlYWRkZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIEFkZHMgbXVsdGlwbGUgbGl2ZSBkaXNjb250aW51b3VzIHN0cmVhbXM8L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIj5taW1pYzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgTWltaWMgY29kZWM8L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMTI5LDkgKzEyNiw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sIj5vcGVuY3Y8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIEdTdHJlYW1lciBPcGVuQ1YgUGx1Z2luczwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCI+b3B1czwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgT1BVUyBwbHVnaW4gbGlicmFyeTwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sIj5wY2FwcGFyc2U8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj4g4oCUIEVsZW1lbnQgcGFyc2luZyByYXcgcGNhcCBzdHJlYW1zPC9zcGFuPgogPC9kdD4KIDxkdD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC5kZXZoZWxwMiBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC5kZXZoZWxwMgppbmRleCBhMjM1YzE1Li43NDNiN2U1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAuZGV2aGVscDIKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wLmRldmhlbHAyCkBAIC02LDYgKzYsNyBAQAogICAgICAgPHN1YiBuYW1lPSJhaWZmcGFyc2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZwYXJzZS5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9ImFpZmZtdXgiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZtdXguaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJhc3NyZW5kZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sIi8+CisgICAgICA8c3ViIG5hbWU9ImF1ZGlvaW50ZXJsZWF2ZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0iYXVkaW9taXhlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9ImF1dG9jb252ZXJ0IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdXRvY29udmVydC5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9ImJzMmIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJzMmIuaHRtbCIvPgpAQCAtNTIsMTYgKzUzLDEwIEBACiAgICAgICA8c3ViIG5hbWU9Im1wZWdwc211eCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3BzbXV4Lmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ibXBlZ3RzbXV4IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVndHNtdXguaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJtcGxleCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCIvPgotICAgICAgPHN1YiBuYW1lPSJtcGcxMjNhdWRpb2RlYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJuZW9uaHR0cHNyYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJvZmEiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9mYS5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9Im9wZW5hbHNyYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ib3BlbmFsc2luayIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sIi8+Ci0gICAgICA8c3ViIG5hbWU9Im9wdXNkZWMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCIvPgotICAgICAgPHN1YiBuYW1lPSJvcHVzZW5jIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwiLz4KLSAgICAgIDxzdWIgbmFtZT0ib3B1c3BhcnNlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCIvPgotICAgICAgPHN1YiBuYW1lPSJydHBvcHVzcGF5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwiLz4KLSAgICAgIDxzdWIgbmFtZT0icnRwb3B1c2RlcGF5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJwY2FwcGFyc2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9InBpbmNoIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9InB5cmFtaWRzZWdtZW50IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5odG1sIi8+CkBAIC0xMTQsNyArMTA5LDYgQEAKICAgICAgIDxzdWIgbmFtZT0iZ2VvbWV0cmljdHJhbnNmb3JtIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0iZ3NtIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ3NtLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ianBlZ2Zvcm1hdCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCIvPgotICAgICAgPHN1YiBuYW1lPSJsaXZlYWRkZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCIvPgogICAgICAgPHN1YiBuYW1lPSJtaW1pYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ibW1zIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW1zLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0ibW9kcGx1ZyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1vZHBsdWcuaHRtbCIvPgpAQCAtMTI2LDcgKzEyMCw2IEBACiAgICAgICA8c3ViIG5hbWU9Im9mYSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9mYS5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9Im9wZW5hbCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5hbC5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9Im9wZW5jdiIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sIi8+Ci0gICAgICA8c3ViIG5hbWU9Im9wdXMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0icGNhcHBhcnNlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiLz4KICAgICAgIDxzdWIgbmFtZT0icmF3cGFyc2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yYXdwYXJzZS5odG1sIi8+CiAgICAgICA8c3ViIG5hbWU9InJmYnNyYyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJmYnNyYy5odG1sIi8+CkBAIC0xNTAsNiArMTQzLDkgQEAKICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGVtYmVkZGVkZm9udHPigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sI0dzdEFzc1JlbmRlci0tZW1iZWRkZWRmb250cyIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZW5hYmxl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCNHc3RBc3NSZW5kZXItLWVuYWJsZSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcd2FpdC10ZXh04oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCNHc3RBc3NSZW5kZXItLXdhaXQtdGV4dCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEF1ZGlvSW50ZXJsZWF2ZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY2hhbm5lbC1wb3NpdGlvbnPigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNoYW5uZWwtcG9zaXRpb25zLWZyb20taW5wdXTigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEF1ZGlvTWl4ZXIiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCNHc3RBdWRpb01peGVyLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYWxpZ25tZW50LXRocmVzaG9sZOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sI0dzdEF1ZGlvTWl4ZXItLWFsaWdubWVudC10aHJlc2hvbGQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNhcHPigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCNHc3RBdWRpb01peGVyLS1jYXBzIi8+CkBAIC0xNzUsMTIgKzE3MSwxNSBAQAogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdENvbG9yRWZmZWN0cyIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwjR3N0Q29sb3JFZmZlY3RzLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCccHJlc2V04oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMuaHRtbCNHc3RDb2xvckVmZmVjdHMtLXByZXNldCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYmFja2dyb3VuZOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5odG1sI0dzdENvbXBvc2l0b3ItLWJhY2tncm91bmQiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdkRpbGF0ZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNHc3RDdkRpbGF0ZS1zdHJ1Y3QiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdkVyb2RlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjR3N0Q3ZFcm9kZS1zdHJ1Y3QiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdkVxdWFsaXplSGlzdCIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNHc3RDdkVxdWFsaXplSGlzdC1zdHJ1Y3QiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdkxhcGxhY2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS1zdHJ1Y3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdkRpbGF0ZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNHc3RDdkRpbGF0ZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2RXJvZGUiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNHc3RDdkVyb2RlIi8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0Q3ZFcXVhbGl6ZUhpc3QiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjR3N0Q3ZFcXVhbGl6ZUhpc3QiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RDdkxhcGxhY2UiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYXBlcnR1cmUtc2l6ZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1hcGVydHVyZS1zaXplIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0Q3ZTbW9vdGgiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxzY2FsZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1zY2FsZSIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcc2hpZnTigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tc2hpZnQiLz4KKyAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnG1hc2vigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tbWFzayIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2U21vb3RoIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwYXJhbTHigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtLXBhcmFtMSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCccGFyYW0y4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoLS1wYXJhbTIiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHBhcmFtM+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC0tcGFyYW0zIi8+CkBAIC0xOTAsMTAgKzE4OSwxMSBAQAogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcaGVpZ2h04oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoLS1oZWlnaHQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHNwYXRpYWzigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtLXNwYXRpYWwiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHdpZHRo4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoLS13aWR0aCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2U29iZWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdEN2U29iZWwiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxhcGVydHVyZS1zaXpl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbC0tYXBlcnR1cmUtc2l6ZSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCceC1vcmRlcuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtLXgtb3JkZXIiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHktb3JkZXLigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLS15LW9yZGVyIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxtYXNr4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbC0tbWFzayIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdERhdGFVUklTcmMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbCNHc3REYXRhVVJJU3JjLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcdXJp4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmh0bWwjR3N0RGF0YVVSSVNyYy0tdXJpIi8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0RGlmZnVzZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sI0dzdERpZmZ1c2Utc3RydWN0Ii8+CkBAIC0zMDQsOCArMzA0LDYgQEAKICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGFuZ2xl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuaHRtbCNHc3RLYWxlaWRvc2NvcGUtLWFuZ2xlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxhbmdsZTLigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sI0dzdEthbGVpZG9zY29wZS0tYW5nbGUyIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxzaWRlc+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwjR3N0S2FsZWlkb3Njb3BlLS1zaWRlcyIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdExpdmVBZGRlciIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjR3N0TGl2ZUFkZGVyLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcbGF0ZW5jeeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjR3N0TGl2ZUFkZGVyLS1sYXRlbmN5Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0TWFyYmxlIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCNHc3RNYXJibGUtc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxhbW91bnTigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI0dzdE1hcmJsZS0tYW1vdW50Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx0dXJidWxlbmNl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCNHc3RNYXJibGUtLXR1cmJ1bGVuY2UiLz4KQEAgLTM3OSw3ICszNzcsNiBAQAogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcc2VjdG9yLXNpemXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwjR3N0TXBsZXgtLXNlY3Rvci1zaXplIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxzeXN0ZW0taGVhZGVyc+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCNHc3RNcGxleC0tc3lzdGVtLWhlYWRlcnMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHZicuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCNHc3RNcGxleC0tdmJyIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0TXBnMTIzQXVkaW9EZWMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwjR3N0TXBnMTIzQXVkaW9EZWMtc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0TmVvbmh0dHBTcmMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwjR3N0TmVvbmh0dHBTcmMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGxvY2F0aW9u4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sI0dzdE5lb25odHRwU3JjLS1sb2NhdGlvbiIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCccHJveHnigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwjR3N0TmVvbmh0dHBTcmMtLXByb3h5Ii8+CkBAIC00MDAsMjYgKzM5Nyw2IEBACiAgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0T3BlbmFsU3JjIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzcmMuaHRtbCNHc3RPcGVuYWxTcmMtc3RydWN0Ii8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxkZXZpY2XigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5odG1sI0dzdE9wZW5hbFNyYy0tZGV2aWNlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxkZXZpY2UtbmFtZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLmh0bWwjR3N0T3BlbmFsU3JjLS1kZXZpY2UtbmFtZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdE9wdXNEZWMiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYXBwbHktZ2FpbuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI0dzdE9wdXNEZWMtLWFwcGx5LWdhaW4iLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHVzZS1pbmJhbmQtZmVj4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjR3N0T3B1c0RlYy0tdXNlLWluYmFuZC1mZWMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RPcHVzRW5jIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy1zdHJ1Y3QiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGF1ZGlv4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYXVkaW8iLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGJhbmR3aWR0aOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJhbmR3aWR0aCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYml0cmF0ZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJpdHJhdGUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNicuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWNiciIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY29tcGxleGl0eeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWNvbXBsZXhpdHkiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNvbnN0cmFpbmVkLXZicuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWNvbnN0cmFpbmVkLXZiciIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZHR44oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tZHR4Ii8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxmcmFtZS1zaXpl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tZnJhbWUtc2l6ZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcaW5iYW5kLWZlY+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWluYmFuZC1mZWMiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnG1heC1wYXlsb2FkLXNpemXigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1tYXgtcGF5bG9hZC1zaXplIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwYWNrZXQtbG9zcy1wZXJjZW50YWdl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tcGFja2V0LWxvc3MtcGVyY2VudGFnZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcYXVkaW8tdHlwZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWF1ZGlvLXR5cGUiLz4KLSAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGJpdHJhdGUtdHlwZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJpdHJhdGUtdHlwZSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdE9wdXNQYXJzZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3B1c1BhcnNlLXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFJ0cE9QVVNQYXkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RSdHBPUFVTUGF5LXN0cnVjdCIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFJUUE9wdXNEZXBheSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjR3N0UlRQT3B1c0RlcGF5LXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFBjYXBQYXJzZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwjR3N0UGNhcFBhcnNlLXN0cnVjdCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZHN0LWlw4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCNHc3RQY2FwUGFyc2UtLWRzdC1pcCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZHN0LXBvcnTigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sI0dzdFBjYXBQYXJzZS0tZHN0LXBvcnQiLz4KQEAgLTQ4MiwxMSArNDU5LDExIEBACiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx6b29t4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCNHc3RTcXVhcmUtLXpvb20iLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RTdHJldGNoIiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjR3N0U3RyZXRjaC1zdHJ1Y3QiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGludGVuc2l0eeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5odG1sI0dzdFN0cmV0Y2gtLWludGVuc2l0eSIvPgotICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFRlbXBsYXRlTWF0Y2giIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoLXN0cnVjdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InN0cnVjdCIgbmFtZT0ic3RydWN0IEdzdFRlbXBsYXRlTWF0Y2giIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxkaXNwbGF54oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjR3N0VGVtcGxhdGVNYXRjaC0tZGlzcGxheSIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcbWV0aG9k4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjR3N0VGVtcGxhdGVNYXRjaC0tbWV0aG9kIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJx0ZW1wbGF0ZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI0dzdFRlbXBsYXRlTWF0Y2gtLXRlbXBsYXRlIi8+Ci0gICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0T3BlbmN2VGV4dE92ZXJsYXkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXktc3RydWN0Ii8+CisgICAgPGtleXdvcmQgdHlwZT0ic3RydWN0IiBuYW1lPSJzdHJ1Y3QgR3N0T3BlbmN2VGV4dE92ZXJsYXkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXkiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGNvbG9yQuKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheS0tY29sb3JCIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxjb2xvckfigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXktLWNvbG9yRyIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcY29sb3JS4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5LS1jb2xvclIiLz4KQEAgLTUxNCw2ICs0OTEsOSBAQAogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcd2lkdGjigJ0gcHJvcGVydHkiIGxpbms9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS13aWR0aCIvPgogICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcaW50ZXJsYWNlZOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLWludGVybGFjZWQiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnHRvcC1maWVsZC1maXJzdOKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLXRvcC1maWVsZC1maXJzdCIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcZnJhbWVzaXpl4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tZnJhbWVzaXplIi8+CisgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxvZmZzZXRz4oCdIHByb3BlcnR5IiBsaW5rPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tb2Zmc2V0cyIvPgorICAgIDxrZXl3b3JkIHR5cGU9InByb3BlcnR5IiBuYW1lPSJUaGUg4oCcc3RyaWRlc+KAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLXN0cmlkZXMiLz4KICAgICA8a2V5d29yZCB0eXBlPSJzdHJ1Y3QiIG5hbWU9InN0cnVjdCBHc3RXYXRlclJpcHBsZSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCNHc3RXYXRlclJpcHBsZS1zdHJ1Y3QiLz4KICAgICA8a2V5d29yZCB0eXBlPSJwcm9wZXJ0eSIgbmFtZT0iVGhlIOKAnGFtcGxpdHVkZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCNHc3RXYXRlclJpcHBsZS0tYW1wbGl0dWRlIi8+CiAgICAgPGtleXdvcmQgdHlwZT0icHJvcGVydHkiIG5hbWU9IlRoZSDigJxwaGFzZeKAnSBwcm9wZXJ0eSIgbGluaz0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCNHc3RXYXRlclJpcHBsZS0tcGhhc2UiLz4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFjY3VyaXAuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFjY3VyaXAuaHRtbAppbmRleCAwNTNmYmFhLi5kMjM3MTcxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hY2N1cmlwLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWNjdXJpcC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YWNjdXJpcDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWNjdXJpcC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01Nyw3ICs1Nyw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEFjY3VyaXAiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hY2N1cmlwLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmbXV4Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmbXV4Lmh0bWwKaW5kZXggYjkxNTg2ZS4uN2Y0NGE4NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZm11eC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZtdXguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmFpZmZtdXg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZnBhcnNlLmh0bWwiIHRpdGxlPSJhaWZmcGFyc2UiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGEgbmFtZT0iR3N0QWlmZk11eCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZtdXgub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFpZmZwYXJzZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZnBhcnNlLmh0bWwKaW5kZXggMjU4MTkzYi4uNzVmNzRmMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZnBhcnNlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZnBhcnNlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5haWZmcGFyc2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWNjdXJpcC5odG1sIiB0aXRsZT0iYWNjdXJpcCI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3RBaWZmUGFyc2UiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1haWZmcGFyc2Uub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTY4LDcgKzY4LDcgQEAKIDxwPgogPC9wPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgotZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPXNpbmUuYWlmZiAhIGFpZmZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCitnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPXNpbmUuYWlmZiAhIGFpZmZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCiA8L3ByZT4KIDxwPgogUmVhZCBhIGFpZmYgZmlsZSBhbmQgb3V0cHV0IHRvIHRoZSBzb3VuZGNhcmQgdXNpbmcgdGhlIEFMU0EgZWxlbWVudC4gVGhlCkBAIC03Nyw3ICs3Nyw3IEBACiA8cD4KIDwvcD4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4KLWdzdC1sYXVuY2ggc291cGhodHBzcmMgbG9jYXRpb249aHR0cDovL3d3dy5leGFtcGxlLm9yZy9zaW5lLmFpZmYgISBxdWV1ZSAhIGFpZmZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCitnc3QtbGF1bmNoLTEuMCBzb3VwaHR0cHNyYyBsb2NhdGlvbj1odHRwOi8vd3d3LmV4YW1wbGUub3JnL3NpbmUuYWlmZiAhIHF1ZXVlICEgYWlmZnBhcnNlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKIDwvcHJlPgogPHA+CiBTdHJlYW0gZGF0YSBmcm9tIGEgbmV0d29yayB1cmwuCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sCmluZGV4IGQ1NGIxMzAuLmExMTc3NDMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sCkBAIC0zLDExICszLDExIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5hc3NyZW5kZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZm11eC5odG1sIiB0aXRsZT0iYWlmZm11eCI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCIgdGl0bGU9ImF1ZGlvbWl4ZXIiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCIgdGl0bGU9ImF1ZGlvaW50ZXJsZWF2ZSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjIsNyArMjIsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYWlmZm11eC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlciI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RBc3NSZW5kZXIiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTU4ZTYwZgotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sCkBAIC0wLDAgKzEsMjA2IEBACis8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KKzxodG1sPgorPGhlYWQ+Cis8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Cis8dGl0bGU+YXVkaW9pbnRlcmxlYXZlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgorPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgorPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwiIHRpdGxlPSJhc3NyZW5kZXIiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwiIHRpdGxlPSJhdWRpb21peGVyIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KKzxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Cis8L2hlYWQ+Cis8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cis8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgorPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Cis8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9pbnRlcmZhY2VzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5pbXBsZW1lbnRlZC1pbnRlcmZhY2VzIiBjbGFzcz0ic2hvcnRjdXQiPkltcGxlbWVudGVkIEludGVyZmFjZXM8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj4KKzwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8L3RyPjwvdGFibGU+Cis8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgorPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cis8dGQgdmFsaWduPSJ0b3AiPgorPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUudG9wX29mX3BhZ2UiPjwvYT5hdWRpb2ludGVybGVhdmU8L3NwYW4+PC9oMj4KKzxwPmF1ZGlvaW50ZXJsZWF2ZTwvcD4KKzwvdGQ+Cis8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Cis8L3RyPjwvdGFibGU+PC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KKzxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KKzxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVmFsdWUtYXJyYXlzLmh0bWwjR1ZhbHVlQXJyYXkiPjxzcGFuIGNsYXNzPSJ0eXBlIj5HVmFsdWVBcnJheTwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMiIHRpdGxlPSJUaGUg4oCcY2hhbm5lbC1wb3NpdGlvbnPigJ0gcHJvcGVydHkiPmNoYW5uZWwtcG9zaXRpb25zPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNHc3RBdWRpb0ludGVybGVhdmUtLWNoYW5uZWwtcG9zaXRpb25zLWZyb20taW5wdXQiIHRpdGxlPSJUaGUg4oCcY2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dOKAnSBwcm9wZXJ0eSI+Y2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dDwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgorPC90YWJsZT48L2Rpdj4KKzwvZGl2PgorPGEgbmFtZT0iR3N0QXVkaW9JbnRlcmxlYXZlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxjb2xncm91cD4KKzxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Cis8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Cis8L2NvbGdyb3VwPgorPHRib2R5Pjx0cj4KKzx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZS1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0QXVkaW9JbnRlcmxlYXZlIj5Hc3RBdWRpb0ludGVybGVhdmU8L2E+PC90ZD4KKzwvdHI+PC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgorPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+CisgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYWQtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhZC1saWJzLUdzdEFnZ3JlZ2F0b3IuaHRtbCNHc3RBZ2dyZWdhdG9yIj5Hc3RBZ2dyZWdhdG9yPC9hPgorICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb0FnZ3JlZ2F0b3IKKyAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEF1ZGlvSW50ZXJsZWF2ZQorPC9wcmU+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5pbXBsZW1lbnRlZC1pbnRlcmZhY2VzIj48L2E+PGgyPkltcGxlbWVudGVkIEludGVyZmFjZXM8L2gyPgorPHA+CitHc3RBdWRpb0ludGVybGVhdmUgaW1wbGVtZW50cworIDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdENoaWxkUHJveHkuaHRtbCI+R3N0Q2hpbGRQcm94eTwvYT4uPC9wPgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgorPGgyPlN5bm9wc2lzPC9oMj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi42LjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KKzxjb2xncm91cD4KKzxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKzxjb2w+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wbHVnaW48L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+CisgICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1ZGlvbWl4ZXIuaHRtbCNwbHVnaW4tYXVkaW9taXhlciI+YXVkaW9taXhlcjwvYT4KKyAgICAgICAgICA8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+YXV0aG9yPC9zcGFuPjwvcD48L3RkPgorPHRkPk9saXZpZXIgQ3JldGUgJmx0O29saXZpZXIuY3JldGVAY29sbGFib3JhLmNvbSZndDs8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+Y2xhc3M8L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+R2VuZXJpYy9BdWRpbzwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzxocj4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi42LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgorPGNvbGdyb3VwPgorPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgorPGNvbD4KKzwvY29sZ3JvdXA+Cis8dGJvZHk+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+c2lua18ldTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+c2luazwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KKzx0ZD5yZXF1ZXN0PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+YXVkaW8veC1yYXcsIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludCkxLCBmb3JtYXQ9KHN0cmluZyl7IFM4LCBVOCwgUzE2TEUsIFMxNkJFLCBVMTZMRSwgVTE2QkUsIFMyNF8zMkxFLCBTMjRfMzJCRSwgVTI0XzMyTEUsIFUyNF8zMkJFLCBTMzJMRSwgUzMyQkUsIFUzMkxFLCBVMzJCRSwgUzI0TEUsIFMyNEJFLCBVMjRMRSwgVTI0QkUsIFMyMExFLCBTMjBCRSwgVTIwTEUsIFUyMEJFLCBTMThMRSwgUzE4QkUsIFUxOExFLCBVMThCRSwgRjMyTEUsIEYzMkJFLCBGNjRMRSwgRjY0QkUgfSwgbGF5b3V0PShzdHJpbmcpeyBub24taW50ZXJsZWF2ZWQsIGludGVybGVhdmVkIH08L3RkPgorPC90cj4KKzwvdGJvZHk+Cis8L3RhYmxlPjwvZGl2PgorPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KKzxjb2xncm91cD4KKzxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KKzxjb2w+Cis8L2NvbGdyb3VwPgorPHRib2R5PgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgorPHRkPnNyYzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+c291cmNlPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgorPHRkPmFsd2F5czwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgorPHRkPmF1ZGlvL3gtcmF3LCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZvcm1hdD0oc3RyaW5nKXsgUzgsIFU4LCBTMTZMRSwgUzE2QkUsIFUxNkxFLCBVMTZCRSwgUzI0XzMyTEUsIFMyNF8zMkJFLCBVMjRfMzJMRSwgVTI0XzMyQkUsIFMzMkxFLCBTMzJCRSwgVTMyTEUsIFUzMkJFLCBTMjRMRSwgUzI0QkUsIFUyNExFLCBVMjRCRSwgUzIwTEUsIFMyMEJFLCBVMjBMRSwgVTIwQkUsIFMxOExFLCBTMThCRSwgVTE4TEUsIFUxOEJFLCBGMzJMRSwgRjMyQkUsIEY2NExFLCBGNjRCRSB9LCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZDwvdGQ+Cis8L3RyPgorPC90Ym9keT4KKzwvdGFibGU+PC9kaXY+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KKzxwPjwvcD4KKzwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RBdWRpb0ludGVybGVhdmUtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RBdWRpb0ludGVybGVhdmU8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RBdWRpb0ludGVybGVhdmU7PC9wcmU+Cis8cD5UaGUgR3N0QXVkaW9JbnRlcmxlYXZlIG9iamVjdCBzdHJ1Y3R1cmUuPC9wPgorPC9kaXY+Cis8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5wcm9wZXJ0eS1kZXRhaWxzIj48L2E+PGgyPlByb3BlcnR5IERldGFpbHM8L2gyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0QXVkaW9JbnRlcmxlYXZlLS1jaGFubmVsLXBvc2l0aW9ucyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGNoYW5uZWwtcG9zaXRpb25z4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxjaGFubmVsLXBvc2l0aW9uc+KAnSAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1WYWx1ZS1hcnJheXMuaHRtbCNHVmFsdWVBcnJheSI+PHNwYW4gY2xhc3M9InR5cGUiPkdWYWx1ZUFycmF5PC9zcGFuPjwvYT7CoCo8L3ByZT4KKzxwPkNoYW5uZWwgcG9zaXRpb25zIHVzZWQgb24gdGhlIG91dHB1dC48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RBdWRpb0ludGVybGVhdmUtLWNoYW5uZWwtcG9zaXRpb25zLWZyb20taW5wdXQiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxjaGFubmVsLXBvc2l0aW9ucy1mcm9tLWlucHV04oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxjaGFubmVsLXBvc2l0aW9ucy1mcm9tLWlucHV04oCdIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KKzxwPlRha2UgY2hhbm5lbCBwb3NpdGlvbnMgZnJvbSB0aGUgaW5wdXQuPC9wPgorPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IFRSVUU8L3A+Cis8L2Rpdj4KKzwvZGl2PgorPC9kaXY+Cis8ZGl2IGNsYXNzPSJmb290ZXIiPgorPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Cis8L2JvZHk+Cis8L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sCmluZGV4IDcyZjU4MGYuLjk3NWI1NGMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmF1ZGlvbWl4ZXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwiIHRpdGxlPSJhc3NyZW5kZXIiPgorPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCIgdGl0bGU9ImF1ZGlvaW50ZXJsZWF2ZSI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lmh0bWwiIHRpdGxlPSJhdXRvY29udmVydCI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgpAQCAtMjIsNyArMjIsNyBAQAogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdXRvY29udmVydC5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNzQsNyArNzQsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RBdWRpb01peGVyIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtOTQsNiArOTQsNyBAQAogICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLWxpYnMtR3N0QWdncmVnYXRvci5odG1sI0dzdEFnZ3JlZ2F0b3IiPkdzdEFnZ3JlZ2F0b3I8L2E+CiAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEF1ZGlvQWdncmVnYXRvcgogICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9NaXhlcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdExpdmVBZGRlcgogPC9wcmU+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KQEAgLTExOCwxMyArMTE5LDEzIEBACiA8L2xpPgogPC91bD48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42LjguNiI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43LjguNiI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIGF1ZGlvdGVzdHNyYyBmcmVxPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MTAwPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9taXhlciBuYW1lPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+bWl4IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGFsc2FzaW5rIGF1ZGlvdGVzdHNyYyBmcmVxPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+NTAwPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gbWl4PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi48L3NwYW4+PC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IGF1ZGlvdGVzdHNyYyBmcmVxPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MTAwPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9taXhlciBuYW1lPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+bWl4IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGFsc2FzaW5rIGF1ZGlvdGVzdHNyYyBmcmVxPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+NTAwPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gbWl4PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi48L3NwYW4+PC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTEzNCw3ICsxMzUsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42LjguNy4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcuOC43LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTYwLDcgKzE2MSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42LjguNy4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNy44LjcuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdXRvY29udmVydC5odG1sCmluZGV4IDJjN2JmZDYuLjFiZmY2NGQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXV0b2NvbnZlcnQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmF1dG9jb252ZXJ0OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCIgdGl0bGU9ImF1ZGlvbWl4ZXIiPgpAQCAtMzYsNyArMzYsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXV0b2NvbnZlcnQucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTgsNyArNTgsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RBdXRvQ29udmVydCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC05OCw3ICs5OCw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcuOC40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuOC44LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMjQsNyArMTI0LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcuOC40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44LjguNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnMyYi5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnMyYi5odG1sCmluZGV4IDk2NDMxNzAuLjM4ODIwZGIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJzMmIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1iczJiLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5iczJiOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1dG9jb252ZXJ0Lmh0bWwiIHRpdGxlPSJhdXRvY29udmVydCI+CkBAIC0zMyw3ICszMyw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1iczJiLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC00OSw3ICs0OSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjguNC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuOS40LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC03NSw3ICs3NSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44LjQuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuOS40LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5odG1sCmluZGV4IDA2NDQzMzguLjA3MGIyODUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmJ1bGdlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJzMmIuaHRtbCIgdGl0bGU9ImJzMmIiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RCdWxnZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03NiwxMCArNzYsMjYgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+QnVnbGUgaXMgYSBnZW9tZXRyaWMgaW1hZ2UgdHJhbnNmb3JtIGVsZW1lbnQuIEl0IGFkZHMgYSBwcm90dWJlcmFuY2UgaW4gdGhlCitjZW50ZXIgcG9pbnQuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjEwLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYnVsZ2UgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjkuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTA1LDcgKzEyMSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi45LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTAuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzksNiArMTk1LDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiAzPC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLmh0bWwKaW5kZXggZjNmNWQ2Mi4uY2RmNDBiOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmJ1cm46IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UuaHRtbCIgdGl0bGU9ImJ1bGdlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4ucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTcsNyArNTcsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RCdXJuIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODMsMTMgKzgzLDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPkJ1cm4gYWRqdXN0cyB0aGUgY29sb3JzIG9mIGEgdmlkZW8gc3RyZWFtIGluIHJlYWx0aW1lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTEuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGJ1cm4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYnVybiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTk5LDcgKzk5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTAuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTEuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTI1LDcgKzEyNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjExLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2FtZXJhYmluLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jYW1lcmFiaW4uaHRtbAppbmRleCA1NzdkYmYzLi5jZDE0ODViIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jYW1lcmFiaW4uaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jYW1lcmFiaW4uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmNhbWVyYWJpbjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLmh0bWwiIHRpdGxlPSJidXJuIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTEuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTIuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTEuMy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xMi4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2hyb21pdW0uaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNocm9taXVtLmh0bWwKaW5kZXggNDAxMmJkNS4uZTJiZTAyOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2hyb21pdW0uaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaHJvbWl1bS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y2hyb21pdW06IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2FtZXJhYmluLmh0bWwiIHRpdGxlPSJjYW1lcmFiaW4iPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2hyb21pdW0ucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNzUsMTMgKzc1LDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaHJvbWl1bS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8cD5DaHJvbWl1bSBicmVha3MgdGhlIGNvbG9ycyBvZiBhIHZpZGVvIHN0cmVhbSBpbiByZWFsdGltZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTIuNi4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjEzLjYuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBjaHJvbWl1bSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBjaHJvbWl1bSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTkxLDcgKzkxLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTIuNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTMuNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE3LDcgKzExNyw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMi42LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjEzLjYuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuaHRtbAppbmRleCA1ZWIxMjQ5Li43ZTBlOTg2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmNpcmNsZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaHJvbWl1bS5odG1sIiB0aXRsZT0iY2hyb21pdW0iPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTYyLDcgKzYyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0Q2lyY2xlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04OCwxMCArODgsMjYgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPkNpcmNsZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgd2FycHMgdGhlIHBpY3R1cmUgaW50byBhbgorYXJjIHNoYXBlZCBmb3JtLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi4xNC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGNpcmNsZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTMuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTQuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE3LDcgKzEzMyw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xMy43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE0LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjA3LDYgKzIyMywxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogMy4xNDE1OTwvcD4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwKaW5kZXggOTU4MDhjNC4uZTBmZWYxMCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jb2xvcmVmZmVjdHM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY2lyY2xlLmh0bWwiIHRpdGxlPSJjaXJjbGUiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0Q29sb3JFZmZlY3RzIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29sb3JlZmZlY3RzLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03NiwxNCArNzYsMTQgQEAKIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8cD5NYXAgY29sb3JzIG9mIHRoZSB2aWRlbyBpbnB1dCB0byBhIGxvb2t1cCB0YWJsZTwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xNC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTUuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xCiAyPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGNvbG9yZWZmZWN0cyBwcmVzZXQ8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5oZWF0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gY29sb3JlZmZlY3RzIHByZXNldDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPmhlYXQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4KICAgICBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KQEAgLTk0LDcgKzk0LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTQuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTUuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTIwLDcgKzEyMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xNC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE1LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5odG1sCmluZGV4IDlhOTgyZTMuLjY2OTIyZjEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbXBvc2l0b3IuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb21wb3NpdG9yLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jb21wb3NpdG9yOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5odG1sIiB0aXRsZT0iY29sb3JlZmZlY3RzIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbXBvc2l0b3IucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtMTAwLDcgKzEwMCw3IEBACiA8L2xpPgogPC91bD48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xNS43LjYiPjwvYT48aDM+U2FtcGxlIHBpcGVsaW5lczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTYuNy42Ij48L2E+PGgzPlNhbXBsZSBwaXBlbGluZXM8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgpAQCAtMTk5LDcgKzE5OSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE1LjcuNy4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE2LjcuNy4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTIyNSw3ICsyMjUsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTUuNy43LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xNi43LjcuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sCmluZGV4IDJjZTU5YmYuLmNkYjEwYjggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmN2ZGlsYXRlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbXBvc2l0b3IuaHRtbCIgdGl0bGU9ImNvbXBvc2l0b3IiPgpAQCAtMTUsOCArMTUsNyBAQAogPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgogPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+CiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgpAQCAtMzIsMzggKzMxLDI1IEBACiA8L3RkPgogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgotPGEgbmFtZT0iR3N0Q3ZEaWxhdGUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgogPC9jb2xncm91cD4KIDx0Ym9keT48dHI+CiA8dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI0dzdEN2RGlsYXRlLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RDdkRpbGF0ZSI+R3N0Q3ZEaWxhdGU8L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjR3N0Q3ZEaWxhdGUiIHRpdGxlPSJzdHJ1Y3QgR3N0Q3ZEaWxhdGUiPkdzdEN2RGlsYXRlPC9hPjwvdGQ+CiA8L3RyPjwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXItbGlicy9odG1sL0dzdEJhc2VUcmFuc2Zvcm0uaHRtbCI+R3N0QmFzZVRyYW5zZm9ybTwvYT4KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdHZpZGVvZmlsdGVyLmh0bWwjR3N0VmlkZW9GaWx0ZXIiPkdzdFZpZGVvRmlsdGVyPC9hPgotICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0T3BlbmN2VmlkZW9GaWx0ZXIKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RDdkRpbGF0ZUVyb2RlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEN2RGlsYXRlCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xNi42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xNy40LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC04OSw3ICs3NSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xNi42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE3LjQuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjQ0LDggKzIzMCwxMSBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEN2RGlsYXRlLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0Q3ZEaWxhdGU8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RDdkRpbGF0ZTs8L3ByZT4KKzxhIG5hbWU9IkdzdEN2RGlsYXRlIj48L2E+PGgzPnN0cnVjdCBHc3RDdkRpbGF0ZTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2RGlsYXRlIHsKKyAgR3N0Q3ZEaWxhdGVFcm9kZSBlbGVtZW50OworfTsKKzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwKaW5kZXggZDQyNTkzNS4uYmMxNmMyNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y3ZlcXVhbGl6ZWhpc3Q6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sIiB0aXRsZT0iY3Zlcm9kZSI+CkBAIC0xNSw4ICsxNSw3IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgorICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CkBAIC0zMiwzNyArMzEsMjUgQEAKIDwvdGQ+CiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+Ci08YSBuYW1lPSJHc3RDdkVxdWFsaXplSGlzdCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KIDx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjR3N0Q3ZFcXVhbGl6ZUhpc3Qtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdEN2RXF1YWxpemVIaXN0Ij5Hc3RDdkVxdWFsaXplSGlzdDwvYT48L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNHc3RDdkVxdWFsaXplSGlzdCIgdGl0bGU9InN0cnVjdCBHc3RDdkVxdWFsaXplSGlzdCI+R3N0Q3ZFcXVhbGl6ZUhpc3Q8L2E+PC90ZD4KIDwvdHI+PC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sIj5Hc3RCYXNlVHJhbnNmb3JtPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW9maWx0ZXIuaHRtbCNHc3RWaWRlb0ZpbHRlciI+R3N0VmlkZW9GaWx0ZXI8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcGVuY3ZWaWRlb0ZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEN2RXF1YWxpemVIaXN0Ci08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xOC42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4xOS40LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC04OCw3ICs3NSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4xOC42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE5LjQuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTQ3LDggKzEzNCwxMSBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEN2RXF1YWxpemVIaXN0LXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0Q3ZFcXVhbGl6ZUhpc3Q8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RDdkVxdWFsaXplSGlzdDs8L3ByZT4KKzxhIG5hbWU9IkdzdEN2RXF1YWxpemVIaXN0Ij48L2E+PGgzPnN0cnVjdCBHc3RDdkVxdWFsaXplSGlzdDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2RXF1YWxpemVIaXN0IHsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXIgZWxlbWVudDsKK307Cis8L3ByZT4KIDwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbAppbmRleCA1ZTFjMjkzLi4xYzE2NWIzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y3Zlcm9kZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sIiB0aXRsZT0iY3ZkaWxhdGUiPgpAQCAtMTUsOCArMTUsNyBAQAogPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgogPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+CisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+CiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgpAQCAtMzIsMzggKzMxLDI1IEBACiA8L3RkPgogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgotPGEgbmFtZT0iR3N0Q3ZFcm9kZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI0dzdEN2RXJvZGUtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdEN2RXJvZGUiPkdzdEN2RXJvZGU8L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNHc3RDdkVyb2RlIiB0aXRsZT0ic3RydWN0IEdzdEN2RXJvZGUiPkdzdEN2RXJvZGU8L2E+PC90ZD4KIDwvdHI+PC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyLWxpYnMvaHRtbC9Hc3RCYXNlVHJhbnNmb3JtLmh0bWwiPkdzdEJhc2VUcmFuc2Zvcm08L2E+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3R2aWRlb2ZpbHRlci5odG1sI0dzdFZpZGVvRmlsdGVyIj5Hc3RWaWRlb0ZpbHRlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdE9wZW5jdlZpZGVvRmlsdGVyCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0Q3ZEaWxhdGVFcm9kZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RDdkVyb2RlCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE3LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjE4LjQuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg5LDcgKzc1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE3LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMTguNC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0yNDQsOCArMjMwLDExIEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RDdkVyb2RlLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0Q3ZFcm9kZTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2RXJvZGU7PC9wcmU+Cis8YSBuYW1lPSJHc3RDdkVyb2RlIj48L2E+PGgzPnN0cnVjdCBHc3RDdkVyb2RlPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZFcm9kZSB7CisgIEdzdEN2RGlsYXRlRXJvZGUgZWxlbWVudDsKK307Cis8L3ByZT4KIDwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwKaW5kZXggMTg2MWQwNy4uMDBmOTMwMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jdmxhcGxhY2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCIgdGl0bGU9ImN2ZXF1YWxpemVoaXN0Ij4KQEAgLTE1LDggKzE1LDcgQEAKIDx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+CiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KIDxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2Uub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCiAgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+CiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KQEAgLTM1LDUwICszNCw1NSBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KIDxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+CiA8L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KKzx0Ym9keT4KKzx0cj4KIDx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT48L3RkPgogPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1hcGVydHVyZS1zaXplIiB0aXRsZT0iVGhlIOKAnGFwZXJ0dXJlLXNpemXigJ0gcHJvcGVydHkiPmFwZXJ0dXJlLXNpemU8L2E+PC90ZD4KIDx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPjwvdGJvZHk+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UtLXNjYWxlIiB0aXRsZT0iVGhlIOKAnHNjYWxl4oCdIHByb3BlcnR5Ij5zY2FsZTwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tc2hpZnQiIHRpdGxlPSJUaGUg4oCcc2hpZnTigJ0gcHJvcGVydHkiPnNoaWZ0PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UtLW1hc2siIHRpdGxlPSJUaGUg4oCcbWFza+KAnSBwcm9wZXJ0eSI+bWFzazwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+Cis8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgotPGEgbmFtZT0iR3N0Q3ZMYXBsYWNlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KIDx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0Q3ZMYXBsYWNlIj5Hc3RDdkxhcGxhY2U8L2E+PC90ZD4KKzx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZSIgdGl0bGU9InN0cnVjdCBHc3RDdkxhcGxhY2UiPkdzdEN2TGFwbGFjZTwvYT48L3RkPgogPC90cj48L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sIj5Hc3RCYXNlVHJhbnNmb3JtPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW9maWx0ZXIuaHRtbCNHc3RWaWRlb0ZpbHRlciI+R3N0VmlkZW9GaWx0ZXI8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcGVuY3ZWaWRlb0ZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEN2TGFwbGFjZQotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjE5LjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjIwLjUuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwNCw3ICsxMDgsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMTkuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yMC41LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEyNSw3ICsxMjksNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpR1JBWTgsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvdGQ+Cis8dGQ+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KQEAgLTE0OSw3ICsxNTMsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpR1JBWTE2X0xFLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L3RkPgorPHRkPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0IsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CkBAIC0xNjMsOCArMTY3LDIxIEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2Uub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEN2TGFwbGFjZS1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdEN2TGFwbGFjZTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2TGFwbGFjZTs8L3ByZT4KKzxhIG5hbWU9IkdzdEN2TGFwbGFjZSI+PC9hPjxoMz5zdHJ1Y3QgR3N0Q3ZMYXBsYWNlPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZMYXBsYWNlIHsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXIgZWxlbWVudDsKKworICBnaW50IGFwZXJ0dXJlX3NpemU7CisgIGdkb3VibGUgc2NhbGU7CisgIGdkb3VibGUgc2hpZnQ7CisgIGdib29sZWFuIG1hc2s7CisKKyAgSXBsSW1hZ2UgKmludGVybWVkaWFyeV9pbWc7CisgIElwbEltYWdlICpjdkdyYXk7CisgIElwbEltYWdlICpMYXBsYWNlOworICBJcGxJbWFnZSAqQ0xhcGxhY2U7Cit9OworPC9wcmU+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgpAQCAtMTc3LDYgKzE5NCwzMiBAQAogPHA+QWxsb3dlZCB2YWx1ZXM6IFsxLDddPC9wPgogPHA+RGVmYXVsdCB2YWx1ZTogMzwvcD4KIDwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0Q3ZMYXBsYWNlLS1zY2FsZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHNjYWxl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxzY2FsZeKAnSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT48L3ByZT4KKzxwPlNjYWxlIGZhY3Rvci48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+QWxsb3dlZCB2YWx1ZXM6ICZndDs9IDA8L3A+Cis8cD5EZWZhdWx0IHZhbHVlOiAxPC9wPgorPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RDdkxhcGxhY2UtLXNoaWZ0Ij48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcc2hpZnTigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHNoaWZ04oCdICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2RvdWJsZSI+PHNwYW4gY2xhc3M9InR5cGUiPmdkb3VibGU8L3NwYW4+PC9hPjwvcHJlPgorPHA+VmFsdWUgYWRkZWQgdG8gdGhlIHNjYWxlZCBzb3VyY2UgYXJyYXkgZWxlbWVudHMuPC9wPgorPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KKzxwPkFsbG93ZWQgdmFsdWVzOiAmZ3Q7PSAwPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogMDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0Q3ZMYXBsYWNlLS1tYXNrIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcbWFza+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcbWFza+KAnSAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KKzxwPlNldHMgd2hldGhlciB0aGUgZGV0ZWN0ZWQgZWRnZXMgc2hvdWxkIGJlIHVzZWQgYXMgYSBtYXNrIG9uIHRoZSBvcmlnaW5hbCBpbnB1dCBvciBub3QuPC9wPgorPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IFRSVUU8L3A+Cis8L2Rpdj4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwKaW5kZXggODgzYWJhYS4uNTkyMjM4YyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y3ZzbW9vdGg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwiIHRpdGxlPSJjdmxhcGxhY2UiPgpAQCAtMTUsOCArMTUsNyBAQAogPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgogPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5wcm9wZXJ0aWVzIiBjbGFzcz0ic2hvcnRjdXQiPlByb3BlcnRpZXM8L2E+PC9zcGFuPgogPC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CkBAIC0zNSw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC05MCwzNyArODksMjUgQEAKIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+Ci08YSBuYW1lPSJHc3RDdlNtb290aCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KIDx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdEN2U21vb3RoIj5Hc3RDdlNtb290aDwvYT48L3RkPgorPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aCIgdGl0bGU9InN0cnVjdCBHc3RDdlNtb290aCI+R3N0Q3ZTbW9vdGg8L2E+PC90ZD4KIDwvdHI+PC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sIj5Hc3RCYXNlVHJhbnNmb3JtPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW9maWx0ZXIuaHRtbCNHc3RWaWRlb0ZpbHRlciI+R3N0VmlkZW9GaWx0ZXI8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcGVuY3ZWaWRlb0ZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEN2U21vb3RoCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yMC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yMS41LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNDYsNyArMTMzLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjIwLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjEuNS4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0yMjEsOCArMjA4LDE4IEBACiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0Q3ZTbW9vdGgtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RDdlNtb290aDwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdEN2U21vb3RoOzwvcHJlPgorPGEgbmFtZT0iR3N0Q3ZTbW9vdGgiPjwvYT48aDM+c3RydWN0IEdzdEN2U21vb3RoPC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZTbW9vdGggeworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OworCisgIGdpbnQgdHlwZTsKKworICBnaW50IHdpZHRoOworICBnaW50IGhlaWdodDsKKyAgZ2RvdWJsZSBjb2xvcnNpZ21hOworICBnZG91YmxlIHNwYXRpYWxzaWdtYTsKK307Cis8L3ByZT4KIDwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CkBAIC0yNzQsNyArMjcxLDcgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEN2U21vb3RoLS1jb2xvciI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGNvbG9y4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxjb2xvcuKAnSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dkb3VibGUiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nZG91YmxlPC9zcGFuPjwvYT48L3ByZT4KLTxwPklmIHR5cGUgaXMgZ2F1c3NpYW4sIHRoaXMgbWVhbnMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi5JZiB0eXBlIGlzIGJpbGF0ZXJhbCwgdGhpcyBtZWFucyB0aGUgY29sb3Itc2lnbWEuIElmIHplcm8sIERlZmF1bHQgdmFsdWVzIGFyZSB1c2VkLkNoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aC48L3A+Cis8cD5JZiB0eXBlIGlzIGdhdXNzaWFuLCB0aGlzIG1lYW5zIHRoZSBzdGFuZGFyZCBkZXZpYXRpb24uSWYgdHlwZSBpcyBiaWxhdGVyYWwsIHRoaXMgbWVhbnMgdGhlIGNvbG9yLXNpZ21hLiBJZiB6ZXJvLCBEZWZhdWx0IHZhbHVlcyBhcmUgdXNlZC48L3A+CiA8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgogPHA+QWxsb3dlZCB2YWx1ZXM6ICZndDs9IDA8L3A+CiA8cD5EZWZhdWx0IHZhbHVlOiAwPC9wPgpAQCAtMjgzLDE2ICsyODAsMTYgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEN2U21vb3RoLS1oZWlnaHQiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxoZWlnaHTigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KIDxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGhlaWdodOKAnSAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvcHJlPgotPHA+VGhlIGFwZXJ0dXJlIGhlaWdodCwgaWYgemVybywgdGhlIHdpZHRoIGlzIHVzZWQuKE11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCBvciB6ZXJvLCB1bnVzZXQgaW4gbWVkaWFuIGFuZCBiaWxhdGVyYWwgdHlwZXMpLiBDaGVjayBjdlNtb290aCBPcGVuQ1YgZG9jczogaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGguPC9wPgorPHA+VGhlIGdhdXNzaWFuIGtlcm5lbCBoZWlnaHQgKG11c3QgYmUgcG9zaXRpdmUgYW5kIG9kZCkuPC9wPgogPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KIDxwPkFsbG93ZWQgdmFsdWVzOiAmZ3Q7PSAwPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogMDwvcD4KKzxwPkRlZmF1bHQgdmFsdWU6IDM8L3A+CiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEN2U21vb3RoLS1zcGF0aWFsIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcc3BhdGlhbOKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcc3BhdGlhbOKAnSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnZG91YmxlIj48c3BhbiBjbGFzcz0idHlwZSI+Z2RvdWJsZTwvc3Bhbj48L2E+PC9wcmU+Ci08cD5Pbmx5IHVzZWQgaW4gYmlsYXRlcmFsIHR5cGUsIG1lYW5zIHRoZSBzcGF0aWFsLXNpZ21hLkNoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20vZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aC48L3A+Cis8cD5Pbmx5IHVzZWQgaW4gYmlsYXRlcmFsIHR5cGUsIG1lYW5zIHRoZSBzcGF0aWFsLXNpZ21hLjwvcD4KIDxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+CiA8cD5BbGxvd2VkIHZhbHVlczogJmd0Oz0gMDwvcD4KIDxwPkRlZmF1bHQgdmFsdWU6IDA8L3A+CkBAIC0zMDEsNyArMjk4LDcgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KIDxhIG5hbWU9IkdzdEN2U21vb3RoLS13aWR0aCI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHdpZHRo4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+CiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJx3aWR0aOKAnSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT48L3ByZT4KLTxwPlRoZSBhcGVydHVyZSB3aWR0aCAoTXVzdCBiZSBwb3NpdGl2ZSBhbmQgb2RkKS5DaGVjayBjdlNtb290aCBPcGVuQ1YgZG9jczogaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGguPC9wPgorPHA+VGhlIGdhdXNzaWFuIGtlcm5lbCB3aWR0aCAobXVzdCBiZSBwb3NpdGl2ZSBhbmQgb2RkKS5JZiB0eXBlIGlzIG1lZGlhbiwgdGhpcyBtZWFucyB0aGUgYXBlcnR1cmUgbGluZWFyIHNpemUuQ2hlY2sgT3BlbkNWIGRvY3M6IGh0dHA6Ly9kb2NzLm9wZW5jdi5vcmcvMi40L21vZHVsZXMvaW1ncHJvYy9kb2MvZmlsdGVyaW5nLmh0bS48L3A+CiA8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgogPHA+QWxsb3dlZCB2YWx1ZXM6ICZndDs9IDE8L3A+CiA8cD5EZWZhdWx0IHZhbHVlOiAzPC9wPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sCmluZGV4IDJhNGZiMzguLjhlNjhmNmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5jdnNvYmVsOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwiIHRpdGxlPSJjdnNtb290aCI+CkBAIC0xNSw4ICsxNSw3IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAogICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgpAQCAtMzUsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01Nyw0MCArNTYsMzMgQEAKIDx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLS15LW9yZGVyIiB0aXRsZT0iVGhlIOKAnHktb3JkZXLigJ0gcHJvcGVydHkiPnktb3JkZXI8L2E+PC90ZD4KIDx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+CiA8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLS1tYXNrIiB0aXRsZT0iVGhlIOKAnG1hc2vigJ0gcHJvcGVydHkiPm1hc2s8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KLTxhIG5hbWU9IkdzdEN2U29iZWwiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KIDx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RDdlNvYmVsIj5Hc3RDdlNvYmVsPC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbCIgdGl0bGU9InN0cnVjdCBHc3RDdlNvYmVsIj5Hc3RDdlNvYmVsPC9hPjwvdGQ+CiA8L3RyPjwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVRyYW5zZm9ybS5odG1sIj5Hc3RCYXNlVHJhbnNmb3JtPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0dmlkZW9maWx0ZXIuaHRtbCNHc3RWaWRlb0ZpbHRlciI+R3N0VmlkZW9GaWx0ZXI8L2E+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcGVuY3ZWaWRlb0ZpbHRlcgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEN2U29iZWwKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjEuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjIuNS4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE2LDcgKzEwOCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yMS43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjIyLjUuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTM3LDcgKzEyOSw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylHUkFZOCwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC90ZD4KKzx0ZD52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L3RkPgogPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgpAQCAtMTYxLDcgKzE1Myw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylHUkFZMTZfTEUsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvdGQ+Cis8dGQ+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KQEAgLTE3NSw4ICsxNjcsMjAgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdEN2U29iZWwtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RDdlNvYmVsPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0Q3ZTb2JlbDs8L3ByZT4KKzxhIG5hbWU9IkdzdEN2U29iZWwiPjwvYT48aDM+c3RydWN0IEdzdEN2U29iZWw8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RDdlNvYmVsIHsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXIgZWxlbWVudDsKKworICBnaW50IHhfb3JkZXI7CisgIGdpbnQgeV9vcmRlcjsKKyAgZ2ludCBhcGVydHVyZV9zaXplOworICBnYm9vbGVhbiBtYXNrOworCisgIElwbEltYWdlICpjdkNTb2JlbDsKKyAgSXBsSW1hZ2UgKmN2R3JheTsKKyAgSXBsSW1hZ2UgKmN2U29iZWw7Cit9OworPC9wcmU+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgpAQCAtMjA3LDYgKzIxMSwxNCBAQAogPHA+QWxsb3dlZCB2YWx1ZXM6ICZndDs9IEdfTUFYVUxPTkc8L3A+CiA8cD5EZWZhdWx0IHZhbHVlOiAwPC9wPgogPC9kaXY+Cis8aHI+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJHc3RDdlNvYmVsLS1tYXNrIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcbWFza+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcbWFza+KAnSAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KKzxwPlNldHMgd2hldGhlciB0aGUgZGV0ZWN0ZWQgZGVyaXZhdGl2ZSBlZGdlcyBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdC48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogVFJVRTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmh0bWwKaW5kZXggZmQ1ZDI3OC4uNDQ1YzgwNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmRhdGF1cmlzcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sIiB0aXRsZT0iY3Zzb2JlbCI+CkBAIC0zNiw3ICszNiw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUyLDcgKzUyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0RGF0YVVSSVNyYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTgzLDEzICs4MywxMyBAQAogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYy5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8cD5kYXRhdXJpc3JjIGhhbmRsZXMgZGF0YTogVVJJcywgc2VlIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3Rvb2xzLmlldGYub3JnL2h0bWwvcmZjMjM5NyIgdGFyZ2V0PSJfdG9wIj5SRkMgMjM5NzwvYT4gZm9yIG1vcmUgaW5mb3JtYXRpb24uPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjIyLjguMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yMy44LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjAuMTA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgZGF0YXVyaXNyYyB1cmk8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ic3RyaW5nIj4mcXVvdDtkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBZkVsRVFWUTRqZTJNd1FuQUlBeEZnemlBNEVuY3pJc080TUVST28vZ3paV2M0eGRUYmUxUjZMR1JSNzRoZVlTN2lLRWx6ZmNNaVJudDRoZjhnazhFYXlCNmx1ZWZ1ZS9IemxKZkNBNTBYc05qWVJ4cHJabWVuWE5JS1NHRXNDK1FVcUsxaGhnajUyMUJ6aG5XV2lpbFVHdmRGNVJTNEwySE1RWkNDSnk4c0hNbTJUWWRKQUFBQUFCSlJVNUVya0pnZ2c9PSZxdW90Ozwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHBuZ2RlYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmcmVlemUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IGRhdGF1cmlzcmMgdXJpPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9InN0cmluZyI+JnF1b3Q7ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFCQUFBQUFRQ0FZQUFBQWY4LzloQUFBQWZFbEVRVlE0amUyTXdRbkFJQXhGZ3ppQTRFbmN6SXNPNE1FUk9vL2d6WldjNHhkVGJlMVI2TEdSUjc0aGVZUzdpS0VsemZjTWlSbnQ0aGY4Z2s4RWF5QjZsdWVmdWUvSHpsSmZDQTUwWHNOallSeHByWm1lblhOSUtTR0VzQytRVXFLMWhoZ2o1MjFCemhuV1dpaWxVR3ZkRjVSUzRMMkhNUVpDQ0p5OHNITW0yVFlkSkFBQUFBQkpSVTVFcmtKZ2dnPT0mcXVvdDs8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBwbmdkZWMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gaW1hZ2VmcmVlemUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC05OSw3ICs5OSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjIyLjguNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjIzLjguNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEyNSw3ICsxMjUsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjIuOC40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yMy44LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UuaHRtbAppbmRleCA1Yjc1Mzg0Li44ZmY0ZTJkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZGlmZnVzZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmh0bWwiIHRpdGxlPSJkYXRhdXJpc3JjIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3REaWZmdXNlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzUsMTAgKzc1LDI2IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+RGlmZnVzZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgZGlmZnVzZXMgdGhlIGltYWdlIGJ5Cittb3ZpbmcgaXRzIHBpeGVscyBpbiByYW5kb20gZGlyZWN0aW9ucy48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuMjQuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBkaWZmdXNlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yMy43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDQsNyArMTIwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjIzLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjQuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzgsNiArMTk0LDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiA0PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2Uuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpbGF0ZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwKaW5kZXggNDMwMjFhYS4uMWYzYjNjNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5kaWxhdGU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sIiB0aXRsZT0iZGlmZnVzZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTcsNyArNTcsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3REaWxhdGUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWxhdGUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTgzLDEzICs4MywxMyBAQAogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPkRpbGF0ZSBhZGp1c3RzIHRoZSBjb2xvcnMgb2YgYSB2aWRlbyBzdHJlYW0gaW4gcmVhbHRpbWUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI0LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZGlsYXRlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGRpbGF0ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTk5LDcgKzk5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjQuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjUuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTI1LDcgKzEyNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yNC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI1LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9kZ2UuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvZGdlLmh0bWwKaW5kZXggMWExYTRjNS4uYjc3YmY0MSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9kZ2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kb2RnZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZG9kZ2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwiIHRpdGxlPSJkaWxhdGUiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9kZ2UucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3REb2RnZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvZGdlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03NiwxMyArNzYsMTMgQEAKIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRvZGdlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPkRvZGdlIHNhdHVyYXRlcyB0aGUgY29sb3JzIG9mIGEgdmlkZW8gc3RyZWFtIGluIHJlYWx0aW1lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yNS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjYuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGRvZGdlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGRvZGdlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtOTIsNyArOTIsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yNS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yNi43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTgsNyArMTE4LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI1LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjYuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdG1mZGV0ZWN0Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdG1mZGV0ZWN0Lmh0bWwKaW5kZXggNTRmNDk1Ny4uZjNlYzJlMCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRtZmRldGVjdC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0bWZkZXRlY3QuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmR0bWZkZXRlY3Q6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZG9kZ2UuaHRtbCIgdGl0bGU9ImRvZGdlIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdER0bWZEZXRlY3QiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdG1mZGV0ZWN0Lm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC02MCw3ICs2MCw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI2LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI3LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg2LDcgKzg2LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI2LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjcuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdHNkZWMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0c2RlYy5odG1sCmluZGV4IDdkYzM5MTIuLmU1ZmY0YzEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0c2RlYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0c2RlYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZHRzZGVjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR0bWZkZXRlY3QuaHRtbCIgdGl0bGU9ImR0bWZkZXRlY3QiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRzZGVjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0RHRzRGVjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRzZGVjLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03Niw3ICs3Niw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI3LjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI4LjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwMiw3ICsxMDIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjcuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4yOC43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2YnNyYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZic3JjLmh0bWwKaW5kZXggMGJkZGZkZC4uZWZiOGYwMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZic3JjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZic3JjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5kdmJzcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHRzZGVjLmh0bWwiIHRpdGxlPSJkdHNkZWMiPgpAQCAtMzYsNyArMzYsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZic3JjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTMxMCw3ICszMTAsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmJzcmMuc2lnbmFscyI+PC9hPjxoMj5TaWduYWxzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJzaWduYWxzX3JldHVybiI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InNpZ25hbHNfbmFtZSI+CkBAIC0zNDIsNyArMzQyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0RHZiU3JjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZic3JjLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0zNjksNyArMzY5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjguOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMjkuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMzk2LDcgKzM5Niw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4yOC44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjI5LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZkc3B1Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmRzcHUuaHRtbAppbmRleCBkYWY1NmJhLi40MmJhYmU0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmRzcHUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmRzcHUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmR2ZHNwdTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmJzcmMuaHRtbCIgdGl0bGU9ImR2YnNyYyI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3REVkRTcHUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kdmRzcHUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTU4LDEzICs1OCwxMyBAQAogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZHZkc3B1LmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxwPkRWRCBzdWIgcGljdHVyZSBvdmVybGF5IGVsZW1lbnQuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI5LjYuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zMC42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkZJWE1FPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPjo8L3NwYW4+IGdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Li4uPC9zcGFuPjwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+RklYTUU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ojwvc3Bhbj4gZ3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Li4uPC9zcGFuPjwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC03NCw3ICs3NCw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjI5LjYuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjMwLjYuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwMCw3ICsxMDAsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMjkuNi40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zMC42LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWVkZ2VkZXRlY3QuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWVkZ2VkZXRlY3QuaHRtbAppbmRleCAxMTJkNDZhLi4xYzYyOWE5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1lZGdlZGV0ZWN0Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZWRnZWRldGVjdC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZWRnZWRldGVjdDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1leGNsdXNpb24uaHRtbCIgdGl0bGU9ImV4Y2x1c2lvbiI+CkBAIC0zNiw3ICszNiw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjMxLjMuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjMyLjMuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTYyLDcgKzYyLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjMxLjMuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzIuMy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1leGNsdXNpb24uaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5odG1sCmluZGV4IDliMjI4YmIuLmU2ZGU3MTIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZXhjbHVzaW9uOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWR2ZHNwdS5odG1sIiB0aXRsZT0iZHZkc3B1Ij4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01Nyw3ICs1Nyw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEV4Y2x1c2lvbiI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWV4Y2x1c2lvbi5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODMsMTMgKzgzLDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1leGNsdXNpb24uZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPHA+RXhjbHVzaW9uIHNhdHVyYXRlcyB0aGUgY29sb3JzIG9mIGEgdmlkZW8gc3RyZWFtIGluIHJlYWx0aW1lLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zMC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzEuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGV4Y2x1c2lvbiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBleGNsdXNpb24gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC05OSw3ICs5OSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjMwLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjMxLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEyNSw3ICsxMjUsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzAuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zMS43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWMuaHRtbAppbmRleCA0ZjQzMDI5Li5kNzNkZTY4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFhYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZmFhYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1lZGdlZGV0ZWN0Lmh0bWwiIHRpdGxlPSJlZGdlZGV0ZWN0Ij4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtODcsNyArODcsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFjLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMDksNyArMTA5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzIuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzMuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTM1LDcgKzEzNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zMi42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjMzLjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTU2LDcgKzE1NiwyNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAsIDY0MDAwLCA4ODIwMCwgOTYwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDYgXTwvdGQ+Cis8dGQ+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpMTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTIsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwMDM8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgorPHRkPiBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAsIDY0MDAwLCA4ODIwMCwgOTYwMDAgfSwgY2hhbm5lbHM9KGludCkzLCBjaGFubmVsLW1hc2s9KGJpdG1hc2spMHgwMDAwMDAwMDAwMDAwMDA3PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD4gYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwLCA2NDAwMCwgODgyMDAsIDk2MDAwIH0sIGNoYW5uZWxzPShpbnQpNCwgY2hhbm5lbC1tYXNrPShiaXRtYXNrKTB4MDAwMDAwMDAwMDAwMDEwNzwvdGQ+Cis8L3RyPgorPHRyPgorPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj48L3NwYW4+PC9wPjwvdGQ+Cis8dGQ+IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTUsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwMzc8L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgorPHRkPiBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAsIDY0MDAwLCA4ODIwMCwgOTYwMDAgfSwgY2hhbm5lbHM9KGludCk2LCBjaGFubmVsLW1hc2s9KGJpdG1hc2spMHgwMDAwMDAwMDAwMDAwMDNmPC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhYWQuaHRtbAppbmRleCA0MDNjZWU3Li5lNTc4MjhlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFkLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFhZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZmFhZDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFjLmh0bWwiIHRpdGxlPSJmYWFjIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdEZhYWQiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFkLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC02MCw3ICs2MCw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjMzLjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM0LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg2LDcgKzg2LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjMzLjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzQuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWNlYmx1ci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFjZWJsdXIuaHRtbAppbmRleCA5ZmQ5YTM4Li5iNDVlODc0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWNlYmx1ci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhY2VibHVyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5mYWNlYmx1cjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWFkLmh0bWwiIHRpdGxlPSJmYWFkIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzQuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzUuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzQuMy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zNS4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhY2VkZXRlY3QuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZhY2VkZXRlY3QuaHRtbAppbmRleCBmOTcyNjgxLi40NDc3NzM1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWNlZGV0ZWN0Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFjZWRldGVjdC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZmFjZWRldGVjdDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mYWNlYmx1ci5odG1sIiB0aXRsZT0iZmFjZWJsdXIiPgpAQCAtMzYsNyArMzYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zNS4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zNi4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zNS4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM2LjMuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmVzdGl2YWwuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZlc3RpdmFsLmh0bWwKaW5kZXggNGNlMDg1Ny4uOWM2MWM0NiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmVzdGl2YWwuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mZXN0aXZhbC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZmVzdGl2YWw6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmFjZWRldGVjdC5odG1sIiB0aXRsZT0iZmFjZWRldGVjdCI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3RGZXN0aXZhbCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZlc3RpdmFsLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC02MSwxMyArNjEsMTMgQEAKIGluIHNlcnZlciBtb2RlLCBzdGFydGVkIGFzIDwvcD4KIDxwcmUgY2xhc3M9InNjcmVlbiI+ZmVzdGl2YWwgLS1zZXJ2ZXI8L3ByZT4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zNi42LjUiPjwvYT48aDM+RXhhbXBsZSBwaXBlbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzcuNi41Ij48L2E+PGgzPkV4YW1wbGUgcGlwZWxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5lY2hvIDxzcGFuIGNsYXNzPSJzdHJpbmciPidIZWxsbyBHLVN0cmVhbWVyISc8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij58PC9zcGFuPiBnc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggZmRzcmMgZmQ8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmVzdGl2YWwgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHdhdnBhcnNlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGFsc2FzaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5lY2hvIDxzcGFuIGNsYXNzPSJzdHJpbmciPidIZWxsbyBHLVN0cmVhbWVyISc8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij58PC9zcGFuPiBnc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IGZkc3JjIGZkPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZlc3RpdmFsIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB3YXZwYXJzZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhbHNhc2luazwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC03Nyw3ICs3Nyw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM2LjYuNi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM3LjYuNi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEwMyw3ICsxMDMsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzYuNi42LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi4zNy42LjYuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbAppbmRleCA0MTAxNWZmLi45N2Y2N2Q0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZmlzaGV5ZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mZXN0aXZhbC5odG1sIiB0aXRsZT0iZmVzdGl2YWwiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGEgbmFtZT0iR3N0RmlzaGV5ZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTU5LDEwICs1OSwyNiBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPkZpc2hleWUgaXMgYSBnZW9tZXRyaWMgaW1hZ2UgdHJhbnNmb3JtIGVsZW1lbnQuIEl0IHNpbXVsYXRlcyBhIGZpc2hleWUgbGVucworYnkgem9vbWluZyBvbiB0aGUgY2VudGVyIG9mIHRoZSBpbWFnZSBhbmQgY29tcHJlc3NpbmcgdGhlIGVkZ2VzLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi4zOC42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZpc2hleWUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM3LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM4LjYuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg4LDcgKzEwNCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zNy42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM4LjYuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTUxLDYgKzE2NywxMCBAQAogPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RGaXNoZXllOzwvcHJlPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5odG1sCmluZGV4IDFiYjczOWQuLmFjYjFiY2YgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmZwc2Rpc3BsYXlzaW5rOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbCIgdGl0bGU9ImZpc2hleWUiPgpAQCAtMzcsNyArMzcsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtMTA2LDcgKzEwNiw3IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLnNpZ25hbHMiPjwvYT48aDI+U2lnbmFsczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ic2lnbmFsc19yZXR1cm4iPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzaWduYWxzX25hbWUiPgpAQCAtMTIxLDcgKzEyMSw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEZQU0Rpc3BsYXlTaW5rIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTE1Miw3ICsxNTIsNyBAQAogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPHA+Q2FuIGRpc3BsYXkgdGhlIGN1cnJlbnQgYW5kIGF2ZXJhZ2UgZnJhbWVyYXRlIGFzIGEgdGVzdG92ZXJsYXkgb3Igb24gc3Rkb3V0LjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zOC45LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZXM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM5LjkuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lczwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CkBAIC0xNjEsMTAgKzE2MSwxMCBAQAogMgogMwogNDwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZnBzZGlzcGxheXNpbmsKLWdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZwc2Rpc3BsYXlzaW5rIHRleHQ8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5vdmVybGF5PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9ImtleXdvcmQiPmZhbHNlPC9zcGFuPgotZ3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIGZpbGVzcmMgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj52aWRlbzxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uPC9zcGFuPmF2aSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZGVjb2RlYmluIG5hbWU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5kIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBxdWV1ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZnBzZGlzcGxheXNpbmsgZDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uICE8L3NwYW4+IHF1ZXVlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmYWtlc2luayBzeW5jPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9ImtleXdvcmQiPnRydWU8L3NwYW4+Ci1nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggcGxheWJpbiB1cmk8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5maWxlPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPjo8L3NwYW4+PHNwYW4gY2xhc3M9Imd0a2RvYyBzbGMiPi8vL3BhdGgvdG8vdmlkZW8uYXZpIHZpZGVvLXNpbms9JnF1b3Q7ZnBzZGlzcGxheXNpbmsmcXVvdDsgYXVkaW8tc2luaz1mYWtlc2luazwvc3Bhbj48L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBmcHNkaXNwbGF5c2luaworZ3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZwc2Rpc3BsYXlzaW5rIHRleHQ8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5vdmVybGF5PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+PHNwYW4gY2xhc3M9ImtleXdvcmQiPmZhbHNlPC9zcGFuPgorZ3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBmaWxlc3JjIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+dmlkZW88c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ljwvc3Bhbj5hdmkgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGRlY29kZWJpbiBuYW1lPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+ZCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gcXVldWUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZwc2Rpc3BsYXlzaW5rIGQ8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LiAhPC9zcGFuPiBxdWV1ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmFrZXNpbmsgc3luYzxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPjxzcGFuIGNsYXNzPSJrZXl3b3JkIj50cnVlPC9zcGFuPgorZ3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBwbGF5YmluIHVyaTxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPmZpbGU8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ojwvc3Bhbj48c3BhbiBjbGFzcz0iZ3RrZG9jIHNsYyI+Ly8vcGF0aC90by92aWRlby5hdmkgdmlkZW8tc2luaz0mcXVvdDtmcHNkaXNwbGF5c2luayZxdW90OyBhdWRpby1zaW5rPWZha2VzaW5rPC9zcGFuPjwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC0xNzQsNyArMTc0LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzguOS40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuMzkuOS40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMjAwLDcgKzIwMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi4zOC45LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjM5LjkuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMzQzLDggKzM0Myw4IEBACiAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3BvaW50ZXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ncG9pbnRlcjwvc3Bhbj48L2E+ICAgICAgICAgICB1c2VyX2RhdGEpPC9wcmU+CiA8cD5TaWduYWxzIHRoZSBhcHBsaWNhdGlvbiBhYm91dCB0aGUgbWVhc3VyZWQgZnBzPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDMiPgotPGEgbmFtZT0iaWQtMS4yLjM4LjEzLjIuNSI+PC9hPjxoND5QYXJhbWV0ZXJzPC9oND4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxhIG5hbWU9ImlkLTEuMi4zOS4xMy4yLjUiPjwvYT48aDQ+UGFyYW1ldGVyczwvaDQ+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwYXJhbWV0ZXJzX25hbWUiPgogPGNvbCBjbGFzcz0icGFyYW1ldGVyc19kZXNjcmlwdGlvbiI+CkBAIC0zODAsNyArMzgwLDYgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxwPkZsYWdzOiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVNpZ25hbHMuaHRtbCNHLVNJR05BTC1SVU4tTEFTVDpDQVBTIj5SdW4gTGFzdDwvYT48L3A+Ci08cCBjbGFzcz0ic2luY2UiPlNpbmNlOiAwLjEwLjIwPC9wPgogPC9kaXY+CiA8L2Rpdj4KIDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZ2F1c3NpYW5ibHVyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1nYXVzc2lhbmJsdXIuaHRtbAppbmRleCBkYjU4MTRjLi4wZjQ2ZDk1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1nYXVzc2lhbmJsdXIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1nYXVzc2lhbmJsdXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmdhdXNzaWFuYmx1cjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5odG1sIiB0aXRsZT0iZnBzZGlzcGxheXNpbmsiPgpAQCAtMzUsMTMgKzM1LDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1nYXVzc2lhbmJsdXIuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgogPHA+R2F1c3NpYW5ibHVyIGJsdXJzIHRoZSB2aWRlbyBzdHJlYW0gaW4gcmVhbHRpbWUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjM5LjMuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40MC4zLjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZ2F1c3NpYW5ibHVyIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGdhdXNzaWFuYmx1ciA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTUxLDcgKzUxLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzkuMy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDAuMy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNzcsNyArNzcsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuMzkuMy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40MC4zLjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWpwZWdwYXJzZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtanBlZ3BhcnNlLmh0bWwKaW5kZXggN2VlZmU4ZS4uMTRhZTIzZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtanBlZ3BhcnNlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtanBlZ3BhcnNlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5qcGVncGFyc2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZ2F1c3NpYW5ibHVyLmh0bWwiIHRpdGxlPSJnYXVzc2lhbmJsdXIiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtanBlZ3BhcnNlLmZ1bmN0aW9ucyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0iZnVuY3Rpb25zX3JldHVybiI+CiA8Y29sIGNsYXNzPSJmdW5jdGlvbnNfbmFtZSI+CkBAIC03Nyw3ICs3Nyw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEpwZWdQYXJzZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWpwZWdwYXJzZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTE1LDEzICsxMTUsMTMgQEAKIGltYWdlIGhlYWRlciBzZWFyY2hpbmcgZm9yIGltYWdlIHByb3BlcnRpZXMgc3VjaCBhcyB3aWR0aCBhbmQgaGVpZ2h0CiBhbW9uZyBvdGhlcnMuIEpwZWdwYXJzZSBjYW4gYWxzbyBleHRyYWN0IG1ldGFkYXRhIChlLmcuIHhtcCkuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQwLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40MS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHNvdXBodHRwc3JjIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj0uLi4gITwvc3Bhbj4ganBlZ3BhcnNlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBtYXRyb3NrYW11eCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gZmlsZXNpbmsgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PS4uLjwvc3Bhbj48L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diBzb3VwaHR0cHNyYyBsb2NhdGlvbjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49Li4uICE8L3NwYW4+IGpwZWdwYXJzZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gbWF0cm9za2FtdXggPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZpbGVzaW5rIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj0uLi48L3NwYW4+PC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTEzMyw3ICsxMzMsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40MC43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40MS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNTksNyArMTU5LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQwLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDEuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sCmluZGV4IDJmMzgxMmUuLjI3YmFiM2QgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+a2FsZWlkb3Njb3BlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWpwZWdwYXJzZS5odG1sIiB0aXRsZT0ianBlZ3BhcnNlIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdEthbGVpZG9zY29wZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODgsMTAgKzg4LDI2IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5UaGUga2FsZWlkc2NvcGUgZWxlbWVudCBhcHBsaWVzICdrYWxlaWRvc2NvcGUnIGdlb21ldHJpYyB0cmFuc2Zvcm0gdG8gdGhlCitpbWFnZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuNDIuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBrYWxlaWRvc2NvcGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQxLjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQyLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTExNyw3ICsxMzMsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDEuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40Mi43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTIwNyw2ICsyMjMsMTAgQEAKIDxwPkRlZmF1bHQgdmFsdWU6IDM8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sCmluZGV4IGZmYmEzYzIuLmRlMTM0OWIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bGl2ZWFkZGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sIiB0aXRsZT0ia2FsZWlkb3Njb3BlIj4KQEAgLTE1LDkgKzE1LDcgQEAKIDx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+CiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KIDxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+CisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+CkBAIC0zNCw1MiArMzIsMTEgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+Ci08Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InByb3BlcnRpZXNfZmxhZ3MiPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjR3N0TGl2ZUFkZGVyLS1sYXRlbmN5IiB0aXRsZT0iVGhlIOKAnGxhdGVuY3nigJ0gcHJvcGVydHkiPmxhdGVuY3k8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08YSBuYW1lPSJHc3RMaXZlQWRkZXIiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNHc3RMaXZlQWRkZXItc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdExpdmVBZGRlciI+R3N0TGl2ZUFkZGVyPC9hPjwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0TGl2ZUFkZGVyCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxwPlRoZSBsaXZlIGFkZGVyIGFsbG93cyB0byBtaXggc2V2ZXJhbCBzdHJlYW1zIGludG8gb25lIGJ5IGFkZGluZyB0aGUgZGF0YS4KLU1peGVkIGRhdGEgaXMgY2xhbXBlZCB0byB0aGUgbWluL21heCB2YWx1ZXMgb2YgdGhlIGRhdGEgZm9ybWF0LjwvcD4KLTxwPlVubGlrZSB0aGUgYWRkZXIsIHRoZSBsaXZlYWRkZXIgbWl4ZXMgdGhlIHN0cmVhbXMgYWNjb3JkaW5nIHRoZSB0aGVpcgotdGltZXN0YW1wcyBhbmQgd2FpdHMgZm9yIHNvbWUgbWlsbGktc2Vjb25kcyBiZWZvcmUgdHJ5aW5nIGRvaW5nIHRoZSBtaXhpbmcuPC9wPgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40Mi43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40My4zLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC04OSwxMiArNDYsMTIgQEAKIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cGx1Z2luPC9zcGFuPjwvcD48L3RkPgogPHRkPgotICAgICAgICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCNwbHVnaW4tbGl2ZWFkZGVyIj5saXZlYWRkZXI8L2E+CisgICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1ZGlvbWl4ZXIuaHRtbCNwbHVnaW4tYXVkaW9taXhlciI+YXVkaW9taXhlcjwvYT4KICAgICAgICAgICA8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+YXV0aG9yPC9zcGFuPjwvcD48L3RkPgotPHRkPk9saXZpZXIgQ3JldGUgJmx0O29saXZpZXIuY3JldGVAY29sbGFib3JhLmNvLnVrJmd0OzwvdGQ+Cis8dGQ+U2ViYXN0aWFuIERyw7ZnZSAmbHQ7c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbSZndDs8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+Y2xhc3M8L3NwYW4+PC9wPjwvdGQ+CkBAIC0xMDUsNyArNjIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDIuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40My4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEyNiw3ICs4Myw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFM4LCBVOCwgUzE2TEUsIFUxNkxFLCBTMzJMRSwgVTMyTEUsIEYzMkxFLCBGNjRMRSB9LCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF08L3RkPgorPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFMzMkxFLCBVMzJMRSwgUzE2TEUsIFUxNkxFLCBTOCwgVTgsIEYzMkxFLCBGNjRMRSB9LCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGxheW91dD0oc3RyaW5nKXsgaW50ZXJsZWF2ZWQsIG5vbi1pbnRlcmxlYXZlZCB9PC90ZD4KIDwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KQEAgLTE1MCw3ICsxMDcsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTOCwgVTgsIFMxNkxFLCBVMTZMRSwgUzMyTEUsIFUzMkxFLCBGMzJMRSwgRjY0TEUgfSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdPC90ZD4KKzx0ZD5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBTMzJMRSwgVTMyTEUsIFMxNkxFLCBVMTZMRSwgUzgsIFU4LCBGMzJMRSwgRjY0TEUgfSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBsYXlvdXQ9KHN0cmluZyl7IGludGVybGVhdmVkLCBub24taW50ZXJsZWF2ZWQgfTwvdGQ+CiA8L3RyPgogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CkBAIC0xNjMsMjUgKzEyMCw2IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0TGl2ZUFkZGVyLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0TGl2ZUFkZGVyPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0TGl2ZUFkZGVyOzwvcHJlPgotPHA+VGhlIGFkZGVyIG9iamVjdCBzdHJ1Y3R1cmUuPC9wPgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5wcm9wZXJ0eS1kZXRhaWxzIj48L2E+PGgyPlByb3BlcnR5IERldGFpbHM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0TGl2ZUFkZGVyLS1sYXRlbmN5Ij48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcbGF0ZW5jeeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcbGF0ZW5jeeKAnSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNndWludCI+PHNwYW4gY2xhc3M9InR5cGUiPmd1aW50PC9zcGFuPjwvYT48L3ByZT4KLTxwPkFtb3VudCBvZiBkYXRhIHRvIGJ1ZmZlciAoaW4gbWlsbGlzZWNvbmRzKS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogNjA8L3A+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KLTxwPmFkZGVyPC9wPgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sCmluZGV4IDYzZGM1ZjYuLjZjZjNjMGYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bWFyYmxlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sIiB0aXRsZT0ibGl2ZWFkZGVyIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02Nyw3ICs2Nyw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdE1hcmJsZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtOTIsMTAgKzkyLDI2IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5NYXJibGUgaXMgYSBnZW9tZXRyaWMgaW1hZ2UgdHJhbnNmb3JtIGVsZW1lbnQuIEl0IGFwcGxpZXMgYSBtYXJibGluZyBlZmZlY3QKK3RvIHRoZSBpbWFnZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuNDQuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBtYXJibGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQzLjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ0LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEyMSw3ICsxMzcsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDMuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40NC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTIyMiw2ICsyMzgsMTAgQEAKIDxwPkRlZmF1bHQgdmFsdWU6IDQ8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1kZWMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWRlYy5odG1sCmluZGV4IGU4ZjNhYTAuLjczZjBjNzIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWRlYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWRlYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bWltZGVjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWVuYy5odG1sIiB0aXRsZT0ibWltZW5jIj4KQEAgLTM0LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxhIG5hbWU9IkdzdE1pbURlYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pbWRlYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNTksNyArNTksNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40NS42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40Ni42LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC04NSw3ICs4NSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40NS42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ2LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZW5jLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMuaHRtbAppbmRleCA2NDk2NjJmLi44Y2Y1MDAzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1pbWVuYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCIgdGl0bGU9Im1hcmJsZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RNaW1FbmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc1LDcgKzc1LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDQuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDUuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTAxLDcgKzEwMSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40NC43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ1LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWlycm9yLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IuaHRtbAppbmRleCBlMjkwYmMwLi5lNGI2OGMyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1pcnJvcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1kZWMuaHRtbCIgdGl0bGU9Im1pbWRlYyI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RNaXJyb3IiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3Iub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc1LDEwICs3NSwyNiBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+TWlycm9yIGlzIGEgZ2VvbWV0cmljIHRyYW5zZm9ybSBlbGVtZW50LiBJdCBzcGxpdHMgdGhlIGltYWdlIGludG8gdHdvIGhhbHZlcworYW5kIHJlZmxlY3RzIG9uZSBvdmVyIGVhY2ggb3RoZXIuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjQ3LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gbWlycm9yIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40Ni43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40Ny43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDQsNyArMTIwLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ2LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDcuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzcsNiArMTkzLDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiBTcGxpdCBob3Jpem9udGFsbHkgYW5kIHJlZmxlY3QgbGVmdCBpbnRvIHJpZ2h0PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1Zy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1Zy5odG1sCmluZGV4IDU4MjlhYzEuLmViZjY4ZjggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tb2RwbHVnOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5odG1sIiB0aXRsZT0ibWlycm9yIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtMTA4LDcgKzEwOCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdE1vZFBsdWciPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMzMsNyArMTMzLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDcuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNDguNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTU5LDcgKzE1OSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi40Ny43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ4LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZzJlbmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWcyZW5jLmh0bWwKaW5kZXggNmUzMzZkOC4uZGRhZWNlNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZzJlbmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVnMmVuYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBlZzJlbmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1Zy5odG1sIiB0aXRsZT0ibW9kcGx1ZyI+CkBAIC0zNiw3ICszNiw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVnMmVuYy5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC0yMTgsNyArMjE4LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0TXBlZzJlbmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVnMmVuYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMjQ5LDcgKzI0OSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ4LjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjQ5LjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTI3Niw3ICsyNzYsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNDguOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi40OS44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWdwc211eC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3BzbXV4Lmh0bWwKaW5kZXggZjI3ZjhlYS4uZTFhNWNjYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3BzbXV4Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3BzbXV4Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tcGVncHNtdXg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZzJlbmMuaHRtbCIgdGl0bGU9Im1wZWcyZW5jIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWdwc211eC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02Miw3ICs2Miw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ5LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjUwLjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTg4LDcgKzg4LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjQ5LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTAuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGVndHNtdXguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWd0c211eC5odG1sCmluZGV4IDNiYWY2MWEuLjNkN2QwYzMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWd0c211eC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWd0c211eC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBlZ3RzbXV4OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWdwc211eC5odG1sIiB0aXRsZT0ibXBlZ3BzbXV4Ij4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWd0c211eC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC05MCw3ICs5MCw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjUwLjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjUxLjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTExNiw3ICsxMTYsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTAuNi4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi41MS42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE0OSw2ICsxNDksMTAgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD4gdmlkZW8veC1oMjY1LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIGFsaWdubWVudD0oc3RyaW5nKXsgYXUsIG5hbCB9PC90ZD4KKzwvdHI+Cis8dHI+Cis8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjwvc3Bhbj48L3A+PC90ZD4KIDx0ZD4gYXVkaW8vbXBlZywgcGFyc2VkPShib29sZWFuKXRydWUsIG1wZWd2ZXJzaW9uPShpbnQpeyAxLCAyIH08L3RkPgogPC90cj4KIDx0cj4KQEAgLTE3Myw2ICsxNzcsMTAgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjwvc3Bhbj48L3A+PC90ZD4KKzx0ZD4gYXVkaW8veC1vcHVzLCBjaGFubmVscz0oaW50KVsgMSwgOCBdLCBjaGFubmVsLW1hcHBpbmctZmFtaWx5PShpbnQpeyAwLCAxIH08L3RkPgorPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgogPHRkPiBzdWJwaWN0dXJlL3gtZHZiPC90ZD4KIDwvdHI+CiA8dHI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I3YjI4MS4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5tcGcxMjNhdWRpb2RlYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwiIHRpdGxlPSJtcGxleCI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwiIHRpdGxlPSJuZW9uaHR0cHNyYyI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgotPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj4KLTwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYyI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLnRvcF9vZl9wYWdlIj48L2E+bXBnMTIzYXVkaW9kZWM8L3NwYW4+PC9oMj4KLTxwPm1wZzEyM2F1ZGlvZGVjPC9wPgotPC90ZD4KLTx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KLTwvdHI+PC90YWJsZT48L2Rpdj4KLTxhIG5hbWU9IkdzdE1wZzEyM0F1ZGlvRGVjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgotPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQgY2xhc3M9ImRhdGF0eXBlX2tleXdvcmQiPnN0cnVjdDwvdGQ+Ci08dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sI0dzdE1wZzEyM0F1ZGlvRGVjLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RNcGcxMjNBdWRpb0RlYyI+R3N0TXBnMTIzQXVkaW9EZWM8L2E+PC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3RhdWRpb2RlY29kZXIuaHRtbCNHc3RBdWRpb0RlY29kZXIiPkdzdEF1ZGlvRGVjb2RlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0TXBnMTIzQXVkaW9EZWMKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+Ci08aDI+U3lub3BzaXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjUyLjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wbHVnaW48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Ci0gICAgICAgICAgICBtcGcxMjMKLSAgICAgICAgICA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+YXV0aG9yPC9zcGFuPjwvcD48L3RkPgotPHRkPkNhcmxvcyBSYWZhZWwgR2lhbmkgJmx0O2R2QHBzZXVkb3Rlcm1pbmFsLm9yZyZndDs8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+Y2xhc3M8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Q29kZWMvRGVjb2Rlci9BdWRpbzwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi41Mi42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgotPHRkPnNpbms8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGlyZWN0aW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPnNpbms8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YWx3YXlzPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxLCBsYXllcj0oaW50KVsgMSwgMyBdLCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDIgXSwgcGFyc2VkPShib29sZWFuKXRydWU8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgotPHRkPnNyYzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c291cmNlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFMxNkxFLCBVMTZMRSwgUzMyTEUsIFUzMkxFLCBTMjRMRSwgVTI0TEUsIEYzMkxFIH0sIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgMiBdLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZDwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPHA+PC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0TXBnMTIzQXVkaW9EZWMtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RNcGcxMjNBdWRpb0RlYzwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdE1wZzEyM0F1ZGlvRGVjOzwvcHJlPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sCmluZGV4IGE5YWQxNzEuLjYwNDNjZjkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBsZXg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBlZ3RzbXV4Lmh0bWwiIHRpdGxlPSJtcGVndHNtdXgiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIiB0aXRsZT0ibXBnMTIzYXVkaW9kZWMiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sIiB0aXRsZT0ibmVvbmh0dHBzcmMiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KIDwvaGVhZD4KQEAgLTIyLDcgKzIyLDcgQEAKIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZWd0c211eC5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4Ij48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wbGV4LnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTgyLDcgKzgyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0TXBsZXgiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTA3LDcgKzEwNyw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjUxLjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjUyLjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEzNSw3ICsxMzUsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTEuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi41Mi43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sCmluZGV4IGUwYjcyNWMuLjhkZDQwYjEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbApAQCAtMywxMCArMywxMCBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bmVvbmh0dHBzcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCIgdGl0bGU9Im1wZzEyM2F1ZGlvZGVjIj4KKzxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCIgdGl0bGU9Im1wbGV4Ij4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb2ZhLmh0bWwiIHRpdGxlPSJvZmEiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTIxLDcgKzIxLDcgQEAKIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9mYS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTEyMyw3ICsxMjMsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb2ZhLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vZmEuaHRtbAppbmRleCBmYWE0YTMyLi42Zjc3ZWI1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vZmEuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vZmEuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm9mYTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5odG1sIiB0aXRsZT0ibmVvbmh0dHBzcmMiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb2ZhLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUxLDcgKzUxLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0T0ZBIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb2ZhLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmh0bWwKaW5kZXggMTFlNzUzZC4uYTYxZGQ0MSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+b3BlbmFsc2luazogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzcmMuaHRtbCIgdGl0bGU9Im9wZW5hbHNyYyI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCIgdGl0bGU9Im9wdXNkZWMiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCIgdGl0bGU9InBjYXBwYXJzZSI+CiA8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+CiA8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgogPC9oZWFkPgpAQCAtMjAsNyArMjAsNyBAQAogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc3JjLmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luayI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzcmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5odG1sCmluZGV4IDQxZjQ2MjYuLmRhOWEyZjkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+b3BlbmFsc3JjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9mYS5odG1sIiB0aXRsZT0ib2ZhIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01OSw3ICs1OSw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdE9wZW5hbFNyYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNyYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwKaW5kZXggYzQxMmJjZC4uYzBiNmE2NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+b3BlbmN2dGV4dG92ZXJsYXk6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sIiB0aXRsZT0idGVtcGxhdGVtYXRjaCI+CkBAIC0xNSw4ICsxNSw3IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LmRlc2NyaXB0aW9uIiBjbGFzcz0ic2hvcnRjdXQiPkRlc2NyaXB0aW9uPC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X2hpZXJhcmNoeSI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfcHJvcGVydGllcyI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKKyAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAogICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LnByb3BlcnRpZXMiIGNsYXNzPSJzaG9ydGN1dCI+UHJvcGVydGllczwvYT48L3NwYW4+CiA8L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KQEAgLTM1LDcgKzM0LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTkxLDM0ICs5MCwyNSBAQAogPC90Ym9keT4KIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KLTxhIG5hbWU9IkdzdE9wZW5hbFNyYyI+PC9hPjxhIG5hbWU9IkdzdE9wZW5jdlRleHRPdmVybGF5Ij48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iR3N0T3BlbmFsU3JjIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KIDwvY29sZ3JvdXA+CiA8dGJvZHk+PHRyPgogPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheS1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0T3BlbmN2VGV4dE92ZXJsYXkiPkdzdE9wZW5jdlRleHRPdmVybGF5PC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5IiB0aXRsZT0ic3RydWN0IEdzdE9wZW5jdlRleHRPdmVybGF5Ij5Hc3RPcGVuY3ZUZXh0T3ZlcmxheTwvYT48L3RkPgogPC90cj48L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0T3BlbmN2VGV4dE92ZXJsYXkKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjgwLjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjc1LjYuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE0NCw3ICsxMzQsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODAuOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43NS42LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTIwMyw4ICsxOTMsMjEgQEAKIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheS1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdE9wZW5jdlRleHRPdmVybGF5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0T3BlbmN2VGV4dE92ZXJsYXk7PC9wcmU+Cis8YSBuYW1lPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+PC9hPjxoMz5zdHJ1Y3QgR3N0T3BlbmN2VGV4dE92ZXJsYXk8L2gzPgorPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RPcGVuY3ZUZXh0T3ZlcmxheSB7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyIGVsZW1lbnQ7CisKKyAgQ3ZGb250IGZvbnQ7CisKKyAgZ2ludCB4cG9zOworICBnaW50IHlwb3M7CisgIGdpbnQgdGhpY2tuZXNzOworICBnaW50IGNvbG9yUixjb2xvckcsY29sb3JCOworICBnZG91YmxlIGhlaWdodDsKKyAgZ2RvdWJsZSB3aWR0aDsKKyAgZ2NoYXIgKnRleHRidWY7Cit9OworPC9wcmU+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjE0MjdjLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5NyArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+b3B1c2RlYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCIgdGl0bGU9Im9wZW5hbHNpbmsiPgotPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwiIHRpdGxlPSJvcHVzZW5jIj4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Ci08YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5wcm9wZXJ0aWVzIiBjbGFzcz0ic2hvcnRjdXQiPlByb3BlcnRpZXM8L2E+PC9zcGFuPgotPC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjIj48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgotPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy50b3Bfb2ZfcGFnZSI+PC9hPm9wdXNkZWM8L3NwYW4+PC9oMj4KLTxwPm9wdXNkZWM8L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Ci08Y29sZ3JvdXA+Ci08Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+Ci08Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+Ci08Y29sIHdpZHRoPSIyMDBweCIgY2xhc3M9InByb3BlcnRpZXNfZmxhZ3MiPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjR3N0T3B1c0RlYy0tYXBwbHktZ2FpbiIgdGl0bGU9IlRoZSDigJxhcHBseS1nYWlu4oCdIHByb3BlcnR5Ij5hcHBseS1nYWluPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjR3N0T3B1c0RlYy0tdXNlLWluYmFuZC1mZWMiIHRpdGxlPSJUaGUg4oCcdXNlLWluYmFuZC1mZWPigJ0gcHJvcGVydHkiPnVzZS1pbmJhbmQtZmVjPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08YSBuYW1lPSJHc3RPcGVuYWxTcmMiPjwvYT48YSBuYW1lPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+PC9hPjxhIG5hbWU9IkdzdE9wdXNEZWMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KLTxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI0dzdE9wdXNEZWMtc3RydWN0IiB0aXRsZT0ic3RydWN0IEdzdE9wdXNEZWMiPkdzdE9wdXNEZWM8L2E+PC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMub2JqZWN0LWhpZXJhcmNoeSI+PC9hPjxoMj5PYmplY3QgSGllcmFyY2h5PC9oMj4KLTxwcmUgY2xhc3M9InNjcmVlbiI+ICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHT2JqZWN0Ij5HT2JqZWN0PC9hPgotICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+Ci0gICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFzZS1saWJzL2h0bWwvZ3N0LXBsdWdpbnMtYmFzZS1saWJzLWdzdGF1ZGlvZGVjb2Rlci5odG1sI0dzdEF1ZGlvRGVjb2RlciI+R3N0QXVkaW9EZWNvZGVyPC9hPgotICAgICAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RPcHVzRGVjCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+Ci08aDI+U3lub3BzaXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjU3LjkuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wbHVnaW48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Ci0gICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCNwbHVnaW4tb3B1cyI+b3B1czwvYT4KLSAgICAgICAgICA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+YXV0aG9yPC9zcGFuPjwvcD48L3RkPgotPHRkPlZpbmNlbnQgUGVucXVlcmMnaCAmbHQ7dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrJmd0OzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5jbGFzczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5Db2RlYy9EZWNvZGVyL0F1ZGlvPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjU3LjkuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby94LW9wdXM8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgotPHRkPnNyYzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c291cmNlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDQ4MDAwLCAyNDAwMCwgMTYwMDAsIDEyMDAwLCA4MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCA4IF08L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5mdW5jdGlvbnNfZGV0YWlscyI+PC9hPjxoMj5GdW5jdGlvbnM8L2gyPgotPHA+PC9wPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRGVjLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0T3B1c0RlYzwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdE9wdXNEZWM7PC9wcmU+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5wcm9wZXJ0eS1kZXRhaWxzIj48L2E+PGgyPlByb3BlcnR5IERldGFpbHM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0RlYy0tYXBwbHktZ2FpbiI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGFwcGx5LWdhaW7igJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGFwcGx5LWdhaW7igJ0gICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Ci08cD5BcHBseSBnYWluIGlmIGFueSBpcyBzcGVjaWZpZWQgaW4gdGhlIGhlYWRlci48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogVFJVRTwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0RlYy0tdXNlLWluYmFuZC1mZWMiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJx1c2UtaW5iYW5kLWZlY+KAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcdXNlLWluYmFuZC1mZWPigJ0gICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KLTxwPlVzZSBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24gaWYgYXZhaWxhYmxlLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBGQUxTRTwvcD4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImZvb3RlciI+Ci08aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4MDRkMWMuLjAwMDAwMDAKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzQ4ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5vcHVzZW5jOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sIiB0aXRsZT0ib3B1c2RlYyI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIiB0aXRsZT0ib3B1c3BhcnNlIj4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Ci08YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5wcm9wZXJ0aWVzIiBjbGFzcz0ic2hvcnRjdXQiPlByb3BlcnRpZXM8L2E+PC9zcGFuPgotPC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLnRvcF9vZl9wYWdlIj48L2E+b3B1c2VuYzwvc3Bhbj48L2gyPgotPHA+b3B1c2VuYzwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KLTxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KLTxjb2wgd2lkdGg9IjIwMHB4IiBjbGFzcz0icHJvcGVydGllc19mbGFncyI+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1hdWRpbyIgdGl0bGU9IlRoZSDigJxhdWRpb+KAnSBwcm9wZXJ0eSI+YXVkaW88L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0T3B1c0VuY0JhbmR3aWR0aDwvc3Bhbj48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWJhbmR3aWR0aCIgdGl0bGU9IlRoZSDigJxiYW5kd2lkdGjigJ0gcHJvcGVydHkiPmJhbmR3aWR0aDwvYT48L3RkPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQgY2xhc3M9InByb3BlcnR5X3R5cGUiPjxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnaW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z2ludDwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1iaXRyYXRlIiB0aXRsZT0iVGhlIOKAnGJpdHJhdGXigJ0gcHJvcGVydHkiPmJpdHJhdGU8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1jYnIiIHRpdGxlPSJUaGUg4oCcY2Jy4oCdIHByb3BlcnR5Ij5jYnI8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tY29tcGxleGl0eSIgdGl0bGU9IlRoZSDigJxjb21wbGV4aXR54oCdIHByb3BlcnR5Ij5jb21wbGV4aXR5PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tY29uc3RyYWluZWQtdmJyIiB0aXRsZT0iVGhlIOKAnGNvbnN0cmFpbmVkLXZicuKAnSBwcm9wZXJ0eSI+Y29uc3RyYWluZWQtdmJyPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tZHR4IiB0aXRsZT0iVGhlIOKAnGR0eOKAnSBwcm9wZXJ0eSI+ZHR4PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE9wdXNFbmNGcmFtZVNpemU8L3NwYW4+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1mcmFtZS1zaXplIiB0aXRsZT0iVGhlIOKAnGZyYW1lLXNpemXigJ0gcHJvcGVydHkiPmZyYW1lLXNpemU8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1pbmJhbmQtZmVjIiB0aXRsZT0iVGhlIOKAnGluYmFuZC1mZWPigJ0gcHJvcGVydHkiPmluYmFuZC1mZWM8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ3VpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5ndWludDwvc3Bhbj48L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1tYXgtcGF5bG9hZC1zaXplIiB0aXRsZT0iVGhlIOKAnG1heC1wYXlsb2FkLXNpemXigJ0gcHJvcGVydHkiPm1heC1wYXlsb2FkLXNpemU8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tcGFja2V0LWxvc3MtcGVyY2VudGFnZSIgdGl0bGU9IlRoZSDigJxwYWNrZXQtbG9zcy1wZXJjZW50YWdl4oCdIHByb3BlcnR5Ij5wYWNrZXQtbG9zcy1wZXJjZW50YWdlPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTx0cj4KLTx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PHNwYW4gY2xhc3M9InR5cGUiPkdzdE9wdXNFbmNBdWRpb1R5cGU8L3NwYW4+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1hdWRpby10eXBlIiB0aXRsZT0iVGhlIOKAnGF1ZGlvLXR5cGXigJ0gcHJvcGVydHkiPmF1ZGlvLXR5cGU8L2E+PC90ZD4KLTx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj48c3BhbiBjbGFzcz0idHlwZSI+R3N0T3B1c0VuY0JpdHJhdGVUeXBlPC9zcGFuPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tYml0cmF0ZS10eXBlIiB0aXRsZT0iVGhlIOKAnGJpdHJhdGUtdHlwZeKAnSBwcm9wZXJ0eSI+Yml0cmF0ZS10eXBlPC9hPjwvdGQ+Ci08dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08YSBuYW1lPSJHc3RPcGVuYWxTcmMiPjwvYT48YSBuYW1lPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+PC9hPjxhIG5hbWU9IkdzdE9wdXNEZWMiPjwvYT48YSBuYW1lPSJHc3RPcHVzRW5jIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RPcHVzRW5jIj5Hc3RPcHVzRW5jPC9hPjwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3RhdWRpb2VuY29kZXIuaHRtbCNHc3RBdWRpb0VuY29kZXIiPkdzdEF1ZGlvRW5jb2RlcjwvYT4KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0T3B1c0VuYwotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgotPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgotPGgyPlN5bm9wc2lzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi41OC4xMC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBsdWdpbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4KLSAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sI3BsdWdpbi1vcHVzIj5vcHVzPC9hPgotICAgICAgICAgIDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5hdXRob3I8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+VmluY2VudCBQZW5xdWVyYydoICZsdDt2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWsmZ3Q7PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmNsYXNzPC9zcGFuPjwvcD48L3RkPgotPHRkPkNvZGVjL0VuY29kZXIvQXVkaW88L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTguMTAuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpNDgwMDAsIGNoYW5uZWxzPShpbnQpWyAxLCAyIF08L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PC9zcGFuPjwvcD48L3RkPgotPHRkPiBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2TEUsIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkLCByYXRlPShpbnQpeyA4MDAwLCAxMjAwMCwgMTYwMDAsIDI0MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCAyIF08L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgotPHRkPnNyYzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c291cmNlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtb3B1czwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08cD48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMub3RoZXJfZGV0YWlscyI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RPcHVzRW5jPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0T3B1c0VuYzs8L3ByZT4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLnByb3BlcnR5LWRldGFpbHMiPjwvYT48aDI+UHJvcGVydHkgRGV0YWlsczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRW5jLS1hdWRpbyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGF1ZGlv4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxhdWRpb+KAnSAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgotPHA+QXVkaW8gb3Igdm9pY2UgKERFUFJFQ0FURUQ6IHVzZSBhdWRpby10eXBlKS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogVFJVRTwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tYmFuZHdpZHRoIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcYmFuZHdpZHRo4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxiYW5kd2lkdGjigJ0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InR5cGUiPkdzdE9wdXNFbmNCYW5kd2lkdGg8L3NwYW4+PC9wcmU+Ci08cD5BdWRpbyBCYW5kIFdpZHRoLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBGdWxsIGJhbmQ8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWJpdHJhdGUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxiaXRyYXRl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxiaXRyYXRl4oCdICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT48L3ByZT4KLTxwPlNwZWNpZnkgYW4gZW5jb2RpbmcgYml0LXJhdGUgKGluIGJwcykuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkFsbG93ZWQgdmFsdWVzOiBbNDAwMCw2NTAwMDBdPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogNjQwMDA8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWNiciI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGNicuKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcY2Jy4oCdICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnYm9vbGVhbiI+PHNwYW4gY2xhc3M9InR5cGUiPmdib29sZWFuPC9zcGFuPjwvYT48L3ByZT4KLTxwPkNvbnN0YW50IGJpdCByYXRlIChERVBSRUNBVEVEOiB1c2UgYml0cmF0ZS10eXBlKS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogVFJVRTwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tY29tcGxleGl0eSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGNvbXBsZXhpdHnigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGNvbXBsZXhpdHnigJ0gICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2ludCI+PHNwYW4gY2xhc3M9InR5cGUiPmdpbnQ8L3NwYW4+PC9hPjwvcHJlPgotPHA+Q29tcGxleGl0eS48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+QWxsb3dlZCB2YWx1ZXM6IFswLDEwXTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IDEwPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRW5jLS1jb25zdHJhaW5lZC12YnIiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxjb25zdHJhaW5lZC12YnLigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGNvbnN0cmFpbmVkLXZicuKAnSAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Ci08cD5Db25zdHJhaW5lZCBWQlIgKERFUFJFQ0FURUQ6IHVzZSBiaXRyYXRlLXR5cGUpLjwvcD4KLTxwPkZsYWdzOiBSZWFkIC8gV3JpdGU8L3A+Ci08cD5EZWZhdWx0IHZhbHVlOiBUUlVFPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRW5jLS1kdHgiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxkdHjigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGR0eOKAnSAgICAgICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2Jvb2xlYW4iPjxzcGFuIGNsYXNzPSJ0eXBlIj5nYm9vbGVhbjwvc3Bhbj48L2E+PC9wcmU+Ci08cD5EVFguPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IEZBTFNFPC9wPgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RPcHVzRW5jLS1mcmFtZS1zaXplIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcZnJhbWUtc2l6ZeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcZnJhbWUtc2l6ZeKAnSAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RPcHVzRW5jRnJhbWVTaXplPC9zcGFuPjwvcHJlPgotPHA+VGhlIGR1cmF0aW9uIG9mIGFuIGF1ZGlvIGZyYW1lLCBpbiBtcy48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogMjA8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWluYmFuZC1mZWMiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxpbmJhbmQtZmVj4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxpbmJhbmQtZmVj4oCdICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dib29sZWFuIj48c3BhbiBjbGFzcz0idHlwZSI+Z2Jvb2xlYW48L3NwYW4+PC9hPjwvcHJlPgotPHA+RW5hYmxlIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbi48L3A+Ci08cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogRkFMU0U8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLW1heC1wYXlsb2FkLXNpemUiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxtYXgtcGF5bG9hZC1zaXpl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxtYXgtcGF5bG9hZC1zaXpl4oCdICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPjwvcHJlPgotPHA+TWF4aW11bSBwYXlsb2FkIHNpemUgaW4gYnl0ZXMuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkFsbG93ZWQgdmFsdWVzOiBbMiw0MDAwXTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IDQwMDA8L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLXBhY2tldC1sb3NzLXBlcmNlbnRhZ2UiPjwvYT48aDM+VGhlIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj7igJxwYWNrZXQtbG9zcy1wZXJjZW50YWdl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Ci08cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxwYWNrZXQtbG9zcy1wZXJjZW50YWdl4oCdICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2dpbnQiPjxzcGFuIGNsYXNzPSJ0eXBlIj5naW50PC9zcGFuPjwvYT48L3ByZT4KLTxwPlBhY2tldCBsb3NzIHBlcmNlbnRhZ2UuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkFsbG93ZWQgdmFsdWVzOiBbMCwxMDBdPC9wPgotPHA+RGVmYXVsdCB2YWx1ZTogMDwvcD4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c0VuYy0tYXVkaW8tdHlwZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGF1ZGlvLXR5cGXigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnGF1ZGlvLXR5cGXigJ0gICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0idHlwZSI+R3N0T3B1c0VuY0F1ZGlvVHlwZTwvc3Bhbj48L3ByZT4KLTxwPldoYXQgdHlwZSBvZiBhdWRpbyB0byBvcHRpbWl6ZSBmb3IuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IEdlbmVyaWMgYXVkaW88L3A+Ci08L2Rpdj4KLTxocj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9IkdzdE9wdXNFbmMtLWJpdHJhdGUtdHlwZSI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnGJpdHJhdGUtdHlwZeKAnTwvY29kZT4gcHJvcGVydHk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiAg4oCcYml0cmF0ZS10eXBl4oCdICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJ0eXBlIj5Hc3RPcHVzRW5jQml0cmF0ZVR5cGU8L3NwYW4+PC9wcmU+Ci08cD5CaXRyYXRlIHR5cGUuPC9wPgotPHA+RmxhZ3M6IFJlYWQgLyBXcml0ZTwvcD4KLTxwPkRlZmF1bHQgdmFsdWU6IENCUjwvcD4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImZvb3RlciI+Ci08aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTg5MmJmLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTU2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iPgotPGh0bWw+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KLTx0aXRsZT5vcHVzcGFyc2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwiIHRpdGxlPSJvcHVzZW5jIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIiB0aXRsZT0icnRwb3B1c3BheSI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPgotPGEgaHJlZj0iIyIgY2xhc3M9InNob3J0Y3V0Ij5Ub3A8L2E+PHNwYW4gaWQ9Im5hdl9kZXNjcmlwdGlvbiI+wqDCoDxzcGFuIGNsYXNzPSJkaW0iPnw8L3NwYW4+wqAKLSAgICAgICAgICAgICAgICAgIDxhIGhyZWY9IiNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgotPC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Ci08L3RyPjwvdGFibGU+Ci08ZGl2IGNsYXNzPSJyZWZlbnRyeSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UudG9wX29mX3BhZ2UiPjwvYT5vcHVzcGFyc2U8L3NwYW4+PC9oMj4KLTxwPm9wdXNwYXJzZTwvcD4KLTwvdGQ+Ci08dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+Ci08L3RyPjwvdGFibGU+PC9kaXY+Ci08YSBuYW1lPSJHc3RPcGVuYWxTcmMiPjwvYT48YSBuYW1lPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+PC9hPjxhIG5hbWU9IkdzdE9wdXNEZWMiPjwvYT48YSBuYW1lPSJHc3RPcHVzRW5jIj48L2E+PGEgbmFtZT0iR3N0T3B1c1BhcnNlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgotPGNvbGdyb3VwPgotPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KLTxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+PHRyPgotPHRkIGNsYXNzPSJkYXRhdHlwZV9rZXl3b3JkIj5zdHJ1Y3Q8L3RkPgotPHRkIGNsYXNzPSJmdW5jdGlvbl9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3B1c1BhcnNlLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RPcHVzUGFyc2UiPkdzdE9wdXNQYXJzZTwvYT48L3RkPgotPC90cj48L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci1saWJzL2h0bWwvR3N0QmFzZVBhcnNlLmh0bWwiPkdzdEJhc2VQYXJzZTwvYT4KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0T3B1c1BhcnNlCi08L3ByZT4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KLTxoMj5TeW5vcHNpczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTkuMTAuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wbHVnaW48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+Ci0gICAgICAgICAgICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCNwbHVnaW4tb3B1cyI+b3B1czwvYT4KLSAgICAgICAgICA8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+YXV0aG9yPC9zcGFuPjwvcD48L3RkPgotPHRkPlZpbmNlbnQgUGVucXVlcmMnaCAmbHQ7dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrJmd0OzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5jbGFzczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5Db2RlYy9QYXJzZXIvQXVkaW88L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNTkuMTAuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby94LW9wdXM8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgotPHRkPnNyYzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c291cmNlPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnByZXNlbmNlPC9zcGFuPjwvcD48L3RkPgotPHRkPmFsd2F5czwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kZXRhaWxzPC9zcGFuPjwvcD48L3RkPgotPHRkPmF1ZGlvL3gtb3B1cywgZnJhbWVkPShib29sZWFuKXRydWU8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmZ1bmN0aW9uc19kZXRhaWxzIj48L2E+PGgyPkZ1bmN0aW9uczwvaDI+Ci08cD48L3A+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0T3B1c1BhcnNlLXN0cnVjdCI+PC9hPjxoMz5zdHJ1Y3QgR3N0T3B1c1BhcnNlPC9oMz4KLTxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5zdHJ1Y3QgR3N0T3B1c1BhcnNlOzwvcHJlPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwKaW5kZXggOTAxMzU2MC4uYTNjNmNlOSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwKQEAgLTMsMTAgKzMsMTAgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnBjYXBwYXJzZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCIgdGl0bGU9InJ0cG9wdXNkZXBheSI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCIgdGl0bGU9Im9wZW5hbHNpbmsiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5odG1sIiB0aXRsZT0icGluY2giPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTIxLDcgKzIxLDcgQEAKIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMS5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KKzx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTgwLDcgKzgwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0UGNhcFBhcnNlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC0xMDcsMTQgKzEwNywxNCBAQAogPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sI0dzdFBjYXBQYXJzZS0tc3JjLXBvcnQiIHRpdGxlPSJUaGUg4oCcc3JjLXBvcnTigJ0gcHJvcGVydHkiPjxzcGFuIGNsYXNzPSJ0eXBlIj7igJxzcmMtcG9ydOKAnTwvc3Bhbj48L2E+IGFuZCA8YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwjR3N0UGNhcFBhcnNlLS1kc3QtcG9ydCIgdGl0bGU9IlRoZSDigJxkc3QtcG9ydOKAnSBwcm9wZXJ0eSI+PHNwYW4gY2xhc3M9InR5cGUiPuKAnGRzdC1wb3J04oCdPC9zcGFuPjwvYT4gdG8gcmVzdHJpY3Qgd2hpY2ggcGFja2V0cwogc2hvdWxkIGJlIGluY2x1ZGVkLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42Mi43LjMiPjwvYT48aDM+RXhhbXBsZSBwaXBlbGluZXM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjU3LjcuMyI+PC9hPjxoMz5FeGFtcGxlIHBpcGVsaW5lczwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjEKIDI8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjAuMTA8L3NwYW4+IGZpbGVzcmMgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj5oMjY0Y3Jhc2hlcjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4uPC9zcGFuPnBjYXAgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHBjYXBwYXJzZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gcnRwaDI2NGRlcGF5CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBmaWxlc3JjIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+aDI2NGNyYXNoZXI8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ljwvc3Bhbj5wY2FwIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBwY2FwcGFyc2UgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHJ0cGgyNjRkZXBheQogPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZmZGVjX2gyNjQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGZha2VzaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KQEAgLTEyNiw3ICsxMjYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42Mi43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi41Ny43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNTIsNyArMTUyLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYyLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTcuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guaHRtbAppbmRleCAxNjYzZGI0Li43MjU1ZDkyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5waW5jaDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCIgdGl0bGU9InBjYXBwYXJzZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFBpbmNoIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2gub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc2LDEwICs3NiwyNSBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5QaW5jaCBhcHBsaWVzIGEgJ3BpbmNoJyBnZW9tZXRyaWMgdHJhbnNmb3JtIHRvIHRoZSBpbWFnZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuNTguNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBwaW5jaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjMuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNTguNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTA1LDcgKzEyMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42My43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjU4LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTc5LDYgKzE5NCwxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogMC41PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYWlmZi5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWFpZmYuaHRtbAppbmRleCBmMjMxMzRhLi5iZGI4YjExIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYWlmZi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1haWZmLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5haWZmOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXNzcmVuZGVyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXNzcmVuZGVyLmh0bWwKaW5kZXggOWZjNmVmYi4uMTk0OGMyNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWFzc3JlbmRlci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hc3NyZW5kZXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmFzc3JlbmRlcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdXRvY29udmVydC5odG1sIiB0aXRsZT0iYXV0b2NvbnZlcnQiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW9taXhlci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1ZGlvbWl4ZXIuaHRtbAppbmRleCBiOGRmZTY0Li43MjZjYzk2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW9taXhlci5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdWRpb21peGVyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5hdWRpb21peGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWFpZmYuaHRtbCIgdGl0bGU9ImFpZmYiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02OCwxMyArNjgsMTcgQEAKIDwvY29sZ3JvdXA+CiA8dGJvZHk+CiA8dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmF1ZGlvaW50ZXJsZWF2ZTwvc3Bhbj48L3A+PC90ZD4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIiB0aXRsZT0iYXVkaW9pbnRlcmxlYXZlIj5hdWRpb2ludGVybGVhdmU8L2E+PC9zcGFuPjwvcD48L3RkPgogPHRkPk1peGVzIG11bHRpcGxlIGF1ZGlvIHN0cmVhbXM8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCIgdGl0bGU9ImF1ZGlvbWl4ZXIiPmF1ZGlvbWl4ZXI8L2E+PC9zcGFuPjwvcD48L3RkPgogPHRkPk1peGVzIG11bHRpcGxlIGF1ZGlvIHN0cmVhbXM8L3RkPgogPC90cj4KKzx0cj4KKzx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sIiB0aXRsZT0ibGl2ZWFkZGVyIj5saXZlYWRkZXI8L2E+PC9zcGFuPjwvcD48L3RkPgorPHRkPk1peGVzIG11bHRpcGxlIGF1ZGlvIHN0cmVhbXM8L3RkPgorPC90cj4KIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW92aXN1YWxpemVycy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1ZGlvdmlzdWFsaXplcnMuaHRtbAppbmRleCBmYTI4NTBlLi41MDc2YTI2IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW92aXN1YWxpemVycy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5hdWRpb3Zpc3VhbGl6ZXJzOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWF1ZGlvbWl4ZXIuaHRtbCIgdGl0bGU9ImF1ZGlvbWl4ZXIiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXV0b2NvbnZlcnQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdXRvY29udmVydC5odG1sCmluZGV4IDRhNjNiMDUuLjZkMjQ4ZjYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdXRvY29udmVydC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hdXRvY29udmVydC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YXV0b2NvbnZlcnQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYXVkaW92aXN1YWxpemVycy5odG1sIiB0aXRsZT0iYXVkaW92aXN1YWxpemVycyI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iYXllci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJheWVyLmh0bWwKaW5kZXggNWE4ZTZmMy4uYjljNWEyOSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJheWVyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJheWVyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5iYXllcjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1hc3NyZW5kZXIuaHRtbCIgdGl0bGU9ImFzc3JlbmRlciI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iczJiLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYnMyYi5odG1sCmluZGV4IDNmYjZhYjIuLmQ4NWQ2ODAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iczJiLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJzMmIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmJzMmI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYmF5ZXIuaHRtbCIgdGl0bGU9ImJheWVyIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iejIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iejIuaHRtbAppbmRleCAzNTJhNzBhLi45MTYyZTU5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tYnoyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJ6Mi5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+YnoyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWJzMmIuaHRtbCIgdGl0bGU9ImJzMmIiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY2FtZXJhYmluLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY2FtZXJhYmluLmh0bWwKaW5kZXggNDljNmRjOS4uYWNiYjBlZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWNhbWVyYWJpbi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jYW1lcmFiaW4uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmNhbWVyYWJpbjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1iejIuaHRtbCIgdGl0bGU9ImJ6MiI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jb2xvcmVmZmVjdHMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jb2xvcmVmZmVjdHMuaHRtbAppbmRleCA1ZGUwNzY2Li5mMTMzYmU5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY29sb3JlZmZlY3RzLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWNvbG9yZWZmZWN0cy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y29sb3JlZmZlY3RzOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWNhbWVyYWJpbi5odG1sIiB0aXRsZT0iY2FtZXJhYmluIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWN1cmwuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jdXJsLmh0bWwKaW5kZXggMDUyNzU1Ny4uNTFjZjk5NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWN1cmwuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY3VybC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+Y3VybDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1jb2xvcmVmZmVjdHMuaHRtbCIgdGl0bGU9ImNvbG9yZWZmZWN0cyI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kYXRhdXJpc3JjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZGF0YXVyaXNyYy5odG1sCmluZGV4IDBhMTgzMDUuLmFjNDA1MDUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kYXRhdXJpc3JjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWRhdGF1cmlzcmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmRhdGF1cmlzcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tY3VybC5odG1sIiB0aXRsZT0iY3VybCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kZWJ1Z3V0aWxzYmFkLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZGVidWd1dGlsc2JhZC5odG1sCmluZGV4IDVmMGYxNTAuLjZiYzg1OWQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kZWJ1Z3V0aWxzYmFkLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWRlYnVndXRpbHNiYWQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmRlYnVndXRpbHNiYWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZGF0YXVyaXNyYy5odG1sIiB0aXRsZT0iZGF0YXVyaXNyYyI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdHNkZWMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdHNkZWMuaHRtbAppbmRleCAyOWI1OGVlLi5hMDAyNWFlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHRzZGVjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR0c2RlYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZHRzZGVjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWRlYnVndXRpbHNiYWQuaHRtbCIgdGl0bGU9ImRlYnVndXRpbHNiYWQiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHZiLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHZiLmh0bWwKaW5kZXggNjJmNjgwYS4uMjc0NWIwMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR2Yi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdmIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmR2YjogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdHNkZWMuaHRtbCIgdGl0bGU9ImR0c2RlYyI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdmRzcHUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdmRzcHUuaHRtbAppbmRleCAwNzU5OTkwLi41NmQxNmU3IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZHZkc3B1Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR2ZHNwdS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZHZkc3B1OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWR2Yi5odG1sIiB0aXRsZT0iZHZiIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZhYWMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mYWFjLmh0bWwKaW5kZXggZGU5YmYzMS4uYjVmNWE4MyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZhYWMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmFhYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+ZmFhYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1kdmRzcHUuaHRtbCIgdGl0bGU9ImR2ZHNwdSI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNS4wLjE8L3RkPgorPHRkPjEuNy4wLjE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mYWFkLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmFhZC5odG1sCmluZGV4IDgyMmUzMGYuLjE5MzBmODggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mYWFkLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZhYWQuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmZhYWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmFhYy5odG1sIiB0aXRsZT0iZmFhYyI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mZXN0aXZhbC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZlc3RpdmFsLmh0bWwKaW5kZXggMjIzZjg0NC4uNTU2MDM2YSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZlc3RpdmFsLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWZlc3RpdmFsLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5mZXN0aXZhbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1mYWFkLmh0bWwiIHRpdGxlPSJmYWFkIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdhdWRpZWZmZWN0cy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdhdWRpZWZmZWN0cy5odG1sCmluZGV4IGFjZDVjZjQuLjZkZjdjNzYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nYXVkaWVmZmVjdHMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2F1ZGllZmZlY3RzLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5nYXVkaWVmZmVjdHM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZmVzdGl2YWwuaHRtbCIgdGl0bGU9ImZlc3RpdmFsIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdlb21ldHJpY3RyYW5zZm9ybS5odG1sCmluZGV4IGI4NjAzNGEuLjQ0ZGY4ZWQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0uaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5nZW9tZXRyaWN0cmFuc2Zvcm06IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ2F1ZGllZmZlY3RzLmh0bWwiIHRpdGxlPSJnYXVkaWVmZmVjdHMiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ3NtLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ3NtLmh0bWwKaW5kZXggMWJlNDliOC4uNTc3NjMyMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWdzbS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nc20uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPmdzbTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0uaHRtbCIgdGl0bGU9Imdlb21ldHJpY3RyYW5zZm9ybSI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sCmluZGV4IDc4N2E2ZmQuLmJmZmJiYmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+anBlZ2Zvcm1hdDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nc20uaHRtbCIgdGl0bGU9ImdzbSI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCIgdGl0bGU9ImxpdmVhZGRlciI+Cis8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIiB0aXRsZT0ibWltaWMiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KIDwvaGVhZD4KQEAgLTE3LDcgKzE3LDcgQEAKIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1nc20uaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+Cis8dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbWltaWMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdCI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTQxMWQzNi4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbGl2ZWFkZGVyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+bGl2ZWFkZGVyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sIiB0aXRsZT0ianBlZ2Zvcm1hdCI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIiB0aXRsZT0ibWltaWMiPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD4KLTxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Ci08dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDIuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KLTwvdHI+PC90YWJsZT4KLTxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj5saXZlYWRkZXI8L3NwYW4+PC9oMj4KLTxwPmxpdmVhZGRlciDigJQgPGEgbmFtZT0icGx1Z2luLWxpdmVhZGRlciI+PC9hPkFkZHMgbXVsdGlwbGUgbGl2ZSBkaXNjb250aW51b3VzIHN0cmVhbXM8L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjI1LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZmlsZW5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+bGliZ3N0bGl2ZWFkZGVyLnNvPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5MR1BMPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBhY2thZ2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5vcmlnaW48L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+VW5rbm93biBwYWNrYWdlIG9yaWdpbjwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yNS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT48dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCIgdGl0bGU9ImxpdmVhZGRlciI+bGl2ZWFkZGVyPC9hPjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5NaXhlcyBsaXZlL2Rpc2NvbnRpbnVvdXMgYXVkaW8gc3RyZWFtczwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImZvb3RlciI+Ci08aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbWltaWMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sCmluZGV4IGY4MGU5Y2IuLjg4NDk1NTMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sCkBAIC0zLDEwICszLDEwIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5taW1pYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCIgdGl0bGU9ImxpdmVhZGRlciI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwiIHRpdGxlPSJqcGVnZm9ybWF0Ij4KIDxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1tcy5odG1sIiB0aXRsZT0ibW1zIj4KIDxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KIDxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CkBAIC0xNiw3ICsxNiw3IEBACiA8dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDIuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWxpdmVhZGRlci5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tbXMuaHRtbCI+PGltZyBzcmM9InJpZ2h0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iTmV4dCI+PC9hPjwvdGQ+CiA8L3RyPjwvdGFibGU+CiA8ZGl2IGNsYXNzPSJyZWZlbnRyeSI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMjYuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI1LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yNi40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4yNS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW1zLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW1zLmh0bWwKaW5kZXggZmRiN2VjNC4uNmFlMGMzNyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1tcy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tbXMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1tczogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIiB0aXRsZT0ibWltaWMiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjI3LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4yNi4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMjcuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMjYuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1vZHBsdWcuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tb2RwbHVnLmh0bWwKaW5kZXggMDA4OWU2Ny4uZGNjZDAyZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1vZHBsdWcuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW9kcGx1Zy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bW9kcGx1ZzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tbXMuaHRtbCIgdGl0bGU9Im1tcyI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMjguMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI3LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yOC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4yNy40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZzJlbmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVnMmVuYy5odG1sCmluZGV4IDgxNmNiYjYuLmY4NWQ2MmIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVnMmVuYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVnMmVuYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+bXBlZzJlbmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW9kcGx1Zy5odG1sIiB0aXRsZT0ibW9kcGx1ZyI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMjkuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjI4LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4yOS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4yOC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3BzbXV4Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3BzbXV4Lmh0bWwKaW5kZXggMTQ3YmU5Yy4uNmEyZmVlYSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWdwc211eC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVncHNtdXguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1wZWdwc211eDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVnMmVuYy5odG1sIiB0aXRsZT0ibXBlZzJlbmMiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjMwLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4yOS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzAuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMjkuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWd0c211eC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWd0c211eC5odG1sCmluZGV4IDgzMDliYzMuLjk0YjMzMDcgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1tcGVndHNtdXguaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3RzbXV4Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5tcGVndHNtdXg6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBlZ3BzbXV4Lmh0bWwiIHRpdGxlPSJtcGVncHNtdXgiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjMxLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zMC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzEuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzAuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wbGV4Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBsZXguaHRtbAppbmRleCBkNGJkNzIxLi5hOWIwYjg0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBsZXguaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBsZXguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm1wbGV4OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1wZWd0c211eC5odG1sIiB0aXRsZT0ibXBlZ3RzbXV4Ij4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zMi4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzEuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjMyLjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjMxLjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1uZW9uLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbmVvbi5odG1sCmluZGV4IGFlYzU4YjguLmI2ODY1ZDIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1uZW9uLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW5lb24uaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm5lb246IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbXBsZXguaHRtbCIgdGl0bGU9Im1wbGV4Ij4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zMy4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzIuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjI8L3RkPgorPHRkPjEuNy4xPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzMuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzIuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9mYS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9mYS5odG1sCmluZGV4IDdjODMwMWIuLmYyNDJkYzIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vZmEuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb2ZhLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5vZmE6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbmVvbi5odG1sIiB0aXRsZT0ibmVvbiI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzQuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjMzLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zNC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zMy40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmFsLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmFsLmh0bWwKaW5kZXggMjkyOTU5Ni4uMDUwYzNhNiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5hbC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuYWwuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPm9wZW5hbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vZmEuaHRtbCIgdGl0bGU9Im9mYSI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzUuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM0LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zNS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zNC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwKaW5kZXggMTFkNTdiOC4uNjIzZjZmOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbApAQCAtMywxMSArMywxMSBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+b3BlbmN2OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5hbC5odG1sIiB0aXRsZT0ib3BlbmFsIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCIgdGl0bGU9Im9wdXMiPgorPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiIHRpdGxlPSJwY2FwcGFyc2UiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KIDwvaGVhZD4KQEAgLTE3LDcgKzE3LDcgQEAKIDx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAyLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KIDx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuYWwuaHRtbCI+PGltZyBzcmM9ImxlZnQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJQcmV2Ij48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sIj48aW1nIHNyYz0icmlnaHQucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJOZXh0Ij48L2E+PC90ZD4KIDwvdHI+PC90YWJsZT4KIDxkaXYgY2xhc3M9InJlZmVudHJ5Ij4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM2LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zNS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjI8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zNi40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zNS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNlYWIzYS4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTcgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiI+Ci08aHRtbD4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgotPHRpdGxlPm9wdXM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Ci08bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+Ci08bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbCIgdGl0bGU9Im9wZW5jdiI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbCIgdGl0bGU9InBjYXBwYXJzZSI+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkdUSy1Eb2MgVjEuMjQgKFhNTCBtb2RlKSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9InN0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgotPC9oZWFkPgotPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgotPHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iNSI+PHRyIHZhbGlnbj0ibWlkZGxlIj4KLTx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMi5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwiPjxpbWcgc3JjPSJsZWZ0LnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iUHJldiI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgotPC90cj48L3RhYmxlPgotPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMiPjwvYT48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmbmFtZWRpdiI+PHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Ci08dGQgdmFsaWduPSJ0b3AiPgotPGgyPjxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj5vcHVzPC9zcGFuPjwvaDI+Ci08cD5vcHVzIOKAlCA8YSBuYW1lPSJwbHVnaW4tb3B1cyI+PC9hPk9QVVMgcGx1Z2luIGxpYnJhcnk8L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM3LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZmlsZW5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+bGliZ3N0b3B1cy5zbzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+TEdQTDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wYWNrYWdlPC9zcGFuPjwvcD48L3RkPgotPHRkPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+b3JpZ2luPC9zcGFuPjwvcD48L3RkPgotPHRkPlVua25vd24gcGFja2FnZSBvcmlnaW48L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzcuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwiIHRpdGxlPSJvcHVzZGVjIj5vcHVzZGVjPC9hPjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5kZWNvZGUgb3B1cyBzdHJlYW1zIHRvIGF1ZGlvPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwiIHRpdGxlPSJvcHVzZW5jIj5vcHVzZW5jPC9hPjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5FbmNvZGVzIGF1ZGlvIGluIE9wdXMgZm9ybWF0PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCIgdGl0bGU9Im9wdXNwYXJzZSI+b3B1c3BhcnNlPC9hPjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5wYXJzZXMgb3B1cyBhdWRpbyBzdHJlYW1zPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCIgdGl0bGU9InJ0cG9wdXNkZXBheSI+cnRwb3B1c2RlcGF5PC9hPjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5FeHRyYWN0cyBPcHVzIGF1ZGlvIGZyb20gUlRQIHBhY2tldHM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCIgdGl0bGU9InJ0cG9wdXNwYXkiPnJ0cG9wdXNwYXk8L2E+PC9zcGFuPjwvcD48L3RkPgotPHRkPlB1dHMgT3B1cyBhdWRpbyBpbiBSVFAgcGFja2V0czwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1wY2FwcGFyc2UuaHRtbAppbmRleCBiYzYxNGUxLi5kZWU0ZWVjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sCkBAIC0zLDEwICszLDEwIEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5wY2FwcGFyc2U6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgotPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sIiB0aXRsZT0ib3B1cyI+Cis8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbCIgdGl0bGU9Im9wZW5jdiI+CiA8bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yYXdwYXJzZS5odG1sIiB0aXRsZT0icmF3cGFyc2UiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgogPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KQEAgLTE2LDcgKzE2LDcgQEAKIDx0ZCB3aWR0aD0iMTAwJSIgYWxpZ249ImxlZnQiIGNsYXNzPSJzaG9ydGN1dHMiPjwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0idSIgaHJlZj0iY2gwMi5odG1sIj48aW1nIHNyYz0idXAucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJVcCI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJwIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgorPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgogPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJhd3BhcnNlLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgogPC90cj48L3RhYmxlPgogPGRpdiBjbGFzcz0icmVmZW50cnkiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM4LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zNi4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuMzguNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzYuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJhd3BhcnNlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UuaHRtbAppbmRleCBkNGFkNDExLi5jZmUxYmZkIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnJhd3BhcnNlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sIiB0aXRsZT0icGNhcHBhcnNlIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy4zOS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzcuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjM5LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM3LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yZmJzcmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1yZmJzcmMuaHRtbAppbmRleCA2ZTcxYzUwLi4zZWVjYmI4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmZic3JjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJmYnNyYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+cmZic3JjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJhd3BhcnNlLmh0bWwiIHRpdGxlPSJyYXdwYXJzZSI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDAuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM4LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40MC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy4zOC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcnRtcC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJ0bXAuaHRtbAppbmRleCAzZWI4ZTJmLi5lNDQ3NjZiIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcnRtcC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1ydG1wLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5ydG1wOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJmYnNyYy5odG1sIiB0aXRsZT0icmZic3JjIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40MS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuMzkuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQxLjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjM5LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zZHAuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zZHAuaHRtbAppbmRleCAwMDM2YWFjLi4xM2I0NTU3IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc2RwLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNkcC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c2RwOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDIuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBQbHVnaW5zIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXJ0bXAuaHRtbCIgdGl0bGU9InJ0bXAiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQyLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40MC4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDIuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDAuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNobS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNobS5odG1sCmluZGV4IDdhZGY1NzkuLmViM2VmNzMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zaG0uaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc2htLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zaG06IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc2RwLmh0bWwiIHRpdGxlPSJzZHAiPgpAQCAtMjksNyArMjksNyBAQAogPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQzLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40MS4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNDIsNyArNDIsNyBAQAogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+dmVyc2lvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4xLjYuMzwvdGQ+Cis8dGQ+MS43LjkxPC90ZD4KIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnJ1bi10aW1lIGxpY2Vuc2U8L3NwYW4+PC9wPjwvdGQ+CkBAIC02MCw3ICs2MCw3IEBACiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDMuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDEuNCI+PC9hPjxoMj5FbGVtZW50czwvaDI+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNvdW5kdG91Y2guaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zb3VuZHRvdWNoLmh0bWwKaW5kZXggZjk3ZWU0Zi4uNDljYjM2MiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXNvdW5kdG91Y2guaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc291bmR0b3VjaC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c291bmR0b3VjaDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAyLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgUGx1Z2lucyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zaG0uaHRtbCIgdGl0bGU9InNobSI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDQuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQyLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40NC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40Mi40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc3BlZWQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zcGVlZC5odG1sCmluZGV4IDU3MDgyYmMuLjNhZjVhZGEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zcGVlZC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1zcGVlZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c3BlZWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc291bmR0b3VjaC5odG1sIiB0aXRsZT0ic291bmR0b3VjaCI+CkBAIC0yOSw3ICsyOSw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDUuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQzLjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00Miw3ICs0Miw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTYwLDcgKzYwLDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40NS40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40My40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tdm9hYWNlbmMuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FhY2VuYy5odG1sCmluZGV4IDliNmJjNjguLmU5NDg0ZWEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FhY2VuYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FhY2VuYy5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+dm9hYWNlbmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tc3BlZWQuaHRtbCIgdGl0bGU9InNwZWVkIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40Ni4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDQuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQ2LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQ0LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FtcndiZW5jLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tdm9hbXJ3YmVuYy5odG1sCmluZGV4IDIzZjI2NzEuLjhjNzlhOGIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi12b2FtcndiZW5jLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXZvYW1yd2JlbmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnZvYW1yd2JlbmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tdm9hYWNlbmMuaHRtbCIgdGl0bGU9InZvYWFjZW5jIj4KQEAgLTI5LDcgKzI5LDcgQEAKIDx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40Ny4zIj48L2E+PGgyPlBsdWdpbiBJbmZvcm1hdGlvbjwvaDI+Cis8YSBuYW1lPSJpZC0xLjMuNDUuMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTQyLDcgKzQyLDcgQEAKIDwvdHI+CiA8dHI+CiA8dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnZlcnNpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+MS42LjM8L3RkPgorPHRkPjEuNy45MTwvdGQ+CiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5ydW4tdGltZSBsaWNlbnNlPC9zcGFuPjwvcD48L3RkPgpAQCAtNjAsNyArNjAsNyBAQAogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iaWQtMS4zLjQ3LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQ1LjQiPjwvYT48aDI+RWxlbWVudHM8L2gyPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi16YmFyLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4temJhci5odG1sCmluZGV4IDhjZDkzZmQuLmVjMjBhMDAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi16YmFyLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXpiYXIuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnpiYXI6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMi5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIFBsdWdpbnMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tdm9hbXJ3YmVuYy5odG1sIiB0aXRsZT0idm9hbXJ3YmVuYyI+CkBAIC0yOCw3ICsyOCw3IEBACiA8dGQgY2xhc3M9ImdhbGxlcnlfaW1hZ2UiIHZhbGlnbj0idG9wIiBhbGlnbj0icmlnaHQiPjwvdGQ+CiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJpZC0xLjMuNDguMyI+PC9hPjxoMj5QbHVnaW4gSW5mb3JtYXRpb248L2gyPgorPGEgbmFtZT0iaWQtMS4zLjQ2LjMiPjwvYT48aDI+UGx1Z2luIEluZm9ybWF0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC00MSw3ICs0MSw3IEBACiA8L3RyPgogPHRyPgogPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj52ZXJzaW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPjEuNi4zPC90ZD4KKzx0ZD4xLjcuOTE8L3RkPgogPC90cj4KIDx0cj4KIDx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cnVuLXRpbWUgbGljZW5zZTwvc3Bhbj48L3A+PC90ZD4KQEAgLTU5LDcgKzU5LDcgQEAKIDwvdGFibGU+PC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImlkLTEuMy40OC40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KKzxhIG5hbWU9ImlkLTEuMy40Ni40Ij48L2E+PGgyPkVsZW1lbnRzPC9oMj4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcHlyYW1pZHNlZ21lbnQuaHRtbAppbmRleCA5OTM2NzkyLi40MTc2ZjJlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50Lmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5weXJhbWlkc2VnbWVudDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5odG1sIiB0aXRsZT0icGluY2giPgpAQCAtMzYsNyArMzYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42NC40LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi41OS40LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC02Miw3ICs2Miw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42NC40LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjU5LjQuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcmZic3JjLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1yZmJzcmMuaHRtbAppbmRleCAxZjcyYzM0Li4xMzFjN2U3IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1yZmJzcmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1yZmJzcmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnJmYnNyYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5odG1sIiB0aXRsZT0icHlyYW1pZHNlZ21lbnQiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcmZic3JjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTExMCw3ICsxMTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RSZmJTcmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1yZmJzcmMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTEzNyw3ICsxMzcsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42NS43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42MC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNjMsNyArMTYzLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY1LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjAuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc2luay5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNpbmsuaHRtbAppbmRleCA3NWQxN2YzLi5jOTJjNmNlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc2luay5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzaW5rLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5ydG1wc2luazogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1yZmJzcmMuaHRtbCIgdGl0bGU9InJmYnNyYyI+CkBAIC0zNiw3ICszNiw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc2luay5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01Miw3ICs1Miw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFJUTVBTaW5rIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNpbmsub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTg0LDcgKzg0LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjYuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjEuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTEwLDcgKzExMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42Ni44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjYxLjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNyYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRtcHNyYy5odG1sCmluZGV4IDRhM2U3NjAuLjEzMmQxMWIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzcmMuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc3JjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5ydG1wc3JjOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzaW5rLmh0bWwiIHRpdGxlPSJydG1wc2luayI+CkBAIC0zNiw3ICszNiw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc3JjLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUyLDcgKzUyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0UlRNUFNyYyI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0bXBzcmMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTg1LDcgKzg1LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjcuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjIuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTExLDcgKzExMSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42Ny44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjYyLjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU3NmExZS4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+cnRwb3B1c2RlcGF5OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgotPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgotPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KLTxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIiB0aXRsZT0icnRwb3B1c3BheSI+Ci08bGluayByZWw9Im5leHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIiB0aXRsZT0icGNhcHBhcnNlIj4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iR1RLLURvYyBWMS4yNCAoWE1MIG1vZGUpIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0ic3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+Ci08L2hlYWQ+Ci08Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Ci08dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgotPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+Ci08YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm9iamVjdC1oaWVyYXJjaHkiIGNsYXNzPSJzaG9ydGN1dCI+T2JqZWN0IEhpZXJhcmNoeTwvYT48L3NwYW4+Ci08L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImhvbWUucG5nIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCIgYWx0PSJIb21lIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InUiIGhyZWY9ImNoMDEuaHRtbCI+PGltZyBzcmM9InVwLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iVXAiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0icCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGNhcHBhcnNlLmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgotPC90cj48L3RhYmxlPgotPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Ij48L2E+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48L2Rpdj4KLTxkaXYgY2xhc3M9InJlZm5hbWVkaXYiPjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgotPHRkIHZhbGlnbj0idG9wIj4KLTxoMj48c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5LnRvcF9vZl9wYWdlIj48L2E+cnRwb3B1c2RlcGF5PC9zcGFuPjwvaDI+Ci08cD5ydHBvcHVzZGVwYXk8L3A+Ci08L3RkPgotPHRkIGNsYXNzPSJnYWxsZXJ5X2ltYWdlIiB2YWxpZ249InRvcCIgYWxpZ249InJpZ2h0Ij48L3RkPgotPC90cj48L3RhYmxlPjwvZGl2PgotPGEgbmFtZT0iR3N0T3BlbmFsU3JjIj48L2E+PGEgbmFtZT0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiPjwvYT48YSBuYW1lPSJHc3RPcHVzRGVjIj48L2E+PGEgbmFtZT0iR3N0T3B1c0VuYyI+PC9hPjxhIG5hbWU9IkdzdE9wdXNQYXJzZSI+PC9hPjxhIG5hbWU9IkdzdFJUUE9wdXNEZXBheSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI0dzdFJUUE9wdXNEZXBheS1zdHJ1Y3QiIHRpdGxlPSJzdHJ1Y3QgR3N0UlRQT3B1c0RlcGF5Ij5Hc3RSVFBPcHVzRGVwYXk8L2E+PC90ZD4KLTwvdHI+PC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5vYmplY3QtaGllcmFyY2h5Ij48L2E+PGgyPk9iamVjdCBIaWVyYXJjaHk8L2gyPgotPHByZSBjbGFzcz0ic2NyZWVuIj4gICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dPYmplY3QiPkdPYmplY3Q8L2E+Ci0gICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dvYmplY3QvdW5zdGFibGUvZ29iamVjdC1UaGUtQmFzZS1PYmplY3QtVHlwZS5odG1sI0dJbml0aWFsbHlVbm93bmVkIj5HSW5pdGlhbGx5VW5vd25lZDwvYT4KLSAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0T2JqZWN0Lmh0bWwiPkdzdE9iamVjdDwvYT4KLSAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdEVsZW1lbnQuaHRtbCI+R3N0RWxlbWVudDwvYT4KLSAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMvaHRtbC9nc3QtcGx1Z2lucy1iYXNlLWxpYnMtZ3N0cnRwYmFzZWRlcGF5bG9hZC5odG1sI0dzdFJUUEJhc2VEZXBheWxvYWQiPkdzdFJUUEJhc2VEZXBheWxvYWQ8L2E+Ci0gICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFJUUE9wdXNEZXBheQotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+Ci08aDI+U3lub3BzaXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYxLjExLjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cGx1Z2luPC9zcGFuPjwvcD48L3RkPgotPHRkPgotICAgICAgICAgICAgPGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcHVzLmh0bWwjcGx1Z2luLW9wdXMiPm9wdXM8L2E+Ci0gICAgICAgICAgPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmF1dGhvcjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5EYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgJmx0O2Rhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWsmZ3Q7PC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmNsYXNzPC9zcGFuPjwvcD48L3RkPgotPHRkPkNvZGVjL0RlcGF5bG9hZGVyL05ldHdvcmsvUlRQPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPGhyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjYxLjExLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgotPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KLTxjb2xncm91cD4KLTxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KLTxjb2w+Ci08L2NvbGdyb3VwPgotPHRib2R5PgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5uYW1lPC9zcGFuPjwvcD48L3RkPgotPHRkPnNpbms8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGlyZWN0aW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPnNpbms8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YWx3YXlzPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXBwbGljYXRpb24veC1ydHAsIG1lZGlhPShzdHJpbmcpYXVkaW8sIHBheWxvYWQ9KGludClbIDk2LCAxMjcgXSwgY2xvY2stcmF0ZT0oaW50KTQ4MDAwLCBlbmNvZGluZy1uYW1lPShzdHJpbmcpeyBPUFVTLCBYLUdTVC1PUFVTLURSQUZULVNQSVRUS0EtMDAgfTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c3JjPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRpcmVjdGlvbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zb3VyY2U8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+cHJlc2VuY2U8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YWx3YXlzPC90ZD4KLTwvdHI+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPmRldGFpbHM8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+YXVkaW8veC1vcHVzLCBtdWx0aXN0cmVhbT0oYm9vbGVhbilmYWxzZTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+PC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxwPjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm90aGVyX2RldGFpbHMiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJHc3RSVFBPcHVzRGVwYXktc3RydWN0Ij48L2E+PGgzPnN0cnVjdCBHc3RSVFBPcHVzRGVwYXk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RSVFBPcHVzRGVwYXk7PC9wcmU+Ci08L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJmb290ZXIiPgotPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhODY2YTNlLi4wMDAwMDAwCi0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIj4KLTxodG1sPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+Ci08dGl0bGU+cnRwb3B1c3BheTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KLTxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KLTxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+Ci08bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIiB0aXRsZT0ib3B1c3BhcnNlIj4KLTxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwiIHRpdGxlPSJydHBvcHVzZGVwYXkiPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJzdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KLTwvaGVhZD4KLTxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KLTx0YWJsZSBjbGFzcz0ibmF2aWdhdGlvbiIgaWQ9InRvcCIgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gaGVhZGVyIiBjZWxscGFkZGluZz0iMiIgY2VsbHNwYWNpbmc9IjUiPjx0ciB2YWxpZ249Im1pZGRsZSI+Ci08dGQgd2lkdGg9IjEwMCUiIGFsaWduPSJsZWZ0IiBjbGFzcz0ic2hvcnRjdXRzIj4KLTxhIGhyZWY9IiMiIGNsYXNzPSJzaG9ydGN1dCI+VG9wPC9hPjxzcGFuIGlkPSJuYXZfZGVzY3JpcHRpb24iPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9oaWVyYXJjaHkiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCi0gICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vYmplY3QtaGllcmFyY2h5IiBjbGFzcz0ic2hvcnRjdXQiPk9iamVjdCBIaWVyYXJjaHk8L2E+PC9zcGFuPgotPC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJob21lLnBuZyIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiIGFsdD0iSG9tZSI+PC9hPjwvdGQ+Ci08dGQ+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJjaDAxLmh0bWwiPjxpbWcgc3JjPSJ1cC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlVwIj48L2E+PC90ZD4KLTx0ZD48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sIj48aW1nIHNyYz0ibGVmdC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IlByZXYiPjwvYT48L3RkPgotPHRkPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwiPjxpbWcgc3JjPSJyaWdodC5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9Ik5leHQiPjwvYT48L3RkPgotPC90cj48L3RhYmxlPgotPGRpdiBjbGFzcz0icmVmZW50cnkiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheSI+PC9hPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZuYW1lZGl2Ij48dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KLTx0ZCB2YWxpZ249InRvcCI+Ci08aDI+PHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkudG9wX29mX3BhZ2UiPjwvYT5ydHBvcHVzcGF5PC9zcGFuPjwvaDI+Ci08cD5ydHBvcHVzcGF5PC9wPgotPC90ZD4KLTx0ZCBjbGFzcz0iZ2FsbGVyeV9pbWFnZSIgdmFsaWduPSJ0b3AiIGFsaWduPSJyaWdodCI+PC90ZD4KLTwvdHI+PC90YWJsZT48L2Rpdj4KLTxhIG5hbWU9IkdzdE9wZW5hbFNyYyI+PC9hPjxhIG5hbWU9IkdzdE9wZW5jdlRleHRPdmVybGF5Ij48L2E+PGEgbmFtZT0iR3N0T3B1c0RlYyI+PC9hPjxhIG5hbWU9IkdzdE9wdXNFbmMiPjwvYT48YSBuYW1lPSJHc3RPcHVzUGFyc2UiPjwvYT48YSBuYW1lPSJHc3RSVFBPcHVzRGVwYXkiPjwvYT48YSBuYW1lPSJHc3RSdHBPUFVTUGF5Ij48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KLTxjb2xncm91cD4KLTxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+Ci08Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08L2NvbGdyb3VwPgotPHRib2R5Pjx0cj4KLTx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RSdHBPUFVTUGF5LXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RSdHBPUFVTUGF5Ij5Hc3RSdHBPUFVTUGF5PC9hPjwvdGQ+Ci08L3RyPjwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhc2UtbGlicy9odG1sL2dzdC1wbHVnaW5zLWJhc2UtbGlicy1nc3RydHBiYXNlcGF5bG9hZC5odG1sI0dzdFJUUEJhc2VQYXlsb2FkIj5Hc3RSVFBCYXNlUGF5bG9hZDwvYT4KLSAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0UnRwT1BVU1BheQotPC9wcmU+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgotPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgotPGgyPlN5bm9wc2lzPC9oMj4KLTxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42MC4xMi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPnBsdWdpbjwvc3Bhbj48L3A+PC90ZD4KLTx0ZD4KLSAgICAgICAgICAgIDxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sI3BsdWdpbi1vcHVzIj5vcHVzPC9hPgotICAgICAgICAgIDwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5hdXRob3I8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+RGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhICZsdDtkYW5pbG8uY2VzYXJAY29sbGFib3JhLmNvLnVrJmd0OzwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5jbGFzczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5Db2RlYy9QYXlsb2FkZXIvTmV0d29yay9SVFA8L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPjwvZGl2PgotPC9kaXY+Ci08aHI+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjAuMTIuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Ci08ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgotPGNvbGdyb3VwPgotPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgotPGNvbD4KLTwvY29sZ3JvdXA+Ci08dGJvZHk+Ci08dHI+Ci08dGQ+PHA+PHNwYW4gY2xhc3M9InRlcm0iPm5hbWU8L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5kaXJlY3Rpb248L3NwYW4+PC9wPjwvdGQ+Ci08dGQ+c2luazwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hdWRpby94LW9wdXMsIG11bHRpc3RyZWFtPShib29sZWFuKWZhbHNlPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+Ci08Y29sZ3JvdXA+Ci08Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+Ci08Y29sPgotPC9jb2xncm91cD4KLTx0Ym9keT4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+bmFtZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5zcmM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGlyZWN0aW9uPC9zcGFuPjwvcD48L3RkPgotPHRkPnNvdXJjZTwvdGQ+Ci08L3RyPgotPHRyPgotPHRkPjxwPjxzcGFuIGNsYXNzPSJ0ZXJtIj5wcmVzZW5jZTwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hbHdheXM8L3RkPgotPC90cj4KLTx0cj4KLTx0ZD48cD48c3BhbiBjbGFzcz0idGVybSI+ZGV0YWlsczwvc3Bhbj48L3A+PC90ZD4KLTx0ZD5hcHBsaWNhdGlvbi94LXJ0cCwgbWVkaWE9KHN0cmluZylhdWRpbywgcGF5bG9hZD0oaW50KVsgOTYsIDEyNyBdLCBjbG9jay1yYXRlPShpbnQpNDgwMDAsIGVuY29kaW5nLXBhcmFtcz0oc3RyaW5nKTIsIGVuY29kaW5nLW5hbWU9KHN0cmluZyl7IE9QVVMsIFgtR1NULU9QVVMtRFJBRlQtU1BJVFRLQS0wMCB9PC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT48L2Rpdj4KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InJlZnNlY3QxIj4KLTxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuZnVuY3Rpb25zX2RldGFpbHMiPjwvYT48aDI+RnVuY3Rpb25zPC9oMj4KLTxwPjwvcD4KLTwvZGl2PgotPGRpdiBjbGFzcz0icmVmc2VjdDEiPgotPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0UnRwT1BVU1BheS1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdFJ0cE9QVVNQYXk8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RSdHBPUFVTUGF5OzwvcHJlPgotPC9kaXY+Ci08L2Rpdj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZm9vdGVyIj4KLTxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNkcGRlbXV4Lmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZHBkZW11eC5odG1sCmluZGV4IGY2MzEwMDYuLjhmZjQ1NjAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNkcGRlbXV4Lmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2RwZGVtdXguaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnNkcGRlbXV4OiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNyYy5odG1sIiB0aXRsZT0ic2htc3JjIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNkcGRlbXV4LnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTY4LDcgKzY4LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0U0RQRGVtdXgiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zZHBkZW11eC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTA4LDEzICsxMDgsMTMgQEAKIDxwPnNkcGRlbXV4IGFjdHMgbGlrZSBhIGxpdmUgZWxlbWVudCBhbmQgd2lsbCB0aGVyZWZvcmUgb25seSBnZW5lcmF0ZSBkYXRhIGluIHRoZSAKIFBMQVlJTkcgc3RhdGUuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcwLjguNSI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42NS44LjUiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCBnbm9tZXZmc3NyYyBsb2NhdGlvbjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPmh0dHA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ojwvc3Bhbj48c3BhbiBjbGFzcz0iZ3RrZG9jIHNsYyI+Ly9zb21lLnNlcnZlci9zZXNzaW9uLnNkcCAhIHNkcGRlbXV4ICEgZmFrZXNpbms8L3NwYW4+PC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IHNvdXBodHRwc3JjIGxvY2F0aW9uPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPj08L3NwYW4+aHR0cDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij46PC9zcGFuPjxzcGFuIGNsYXNzPSJndGtkb2Mgc2xjIj4vL3NvbWUuc2VydmVyL3Nlc3Npb24uc2RwICEgc2RwZGVtdXggISBmYWtlc2luazwvc3Bhbj48L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtMTI1LDcgKzEyNSw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcwLjguNi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY1LjguNi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE1MSw3ICsxNTEsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzAuOC42LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42NS44LjYuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNpbmsuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNpbmsuaHRtbAppbmRleCBmNTVmNzEyLi45ZmI3MDcyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zaW5rLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc2luay5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c2htc2luazogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydG1wc3JjLmh0bWwiIHRpdGxlPSJydG1wc3JjIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNpbmsucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNzQsNyArNzQsNyBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zaW5rLnNpZ25hbHMiPjwvYT48aDI+U2lnbmFsczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ic2lnbmFsc19yZXR1cm4iPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJzaWduYWxzX25hbWUiPgpAQCAtOTYsNyArOTYsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RTaG1TaW5rIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc2luay5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtMTIyLDcgKzEyMiw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjY4LjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjYzLjguMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTE0OCw3ICsxNDgsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjguOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42My44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNobXNyYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc3JjLmh0bWwKaW5kZXggNzJlODhlZi4uZTJmYjJkMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc3JjLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc3JjLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zaG1zcmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2htc2luay5odG1sIiB0aXRsZT0ic2htc2luayI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zcmMucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjQsNyArNjQsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RTaG1TcmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zaG1zcmMub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTkxLDcgKzkxLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNjkuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjQuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE3LDcgKzExNyw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi42OS43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY0LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc29sYXJpemUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNvbGFyaXplLmh0bWwKaW5kZXggMzZiNTdiNi4uNjc4MDA5NiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc29sYXJpemUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zb2xhcml6ZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c29sYXJpemU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc2RwZGVtdXguaHRtbCIgdGl0bGU9InNkcGRlbXV4Ij4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNvbGFyaXplLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTY3LDcgKzY3LDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0U29sYXJpemUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zb2xhcml6ZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtOTMsMTMgKzkzLDEzIEBACiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zb2xhcml6ZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+CiA8cD5Tb2xhcml6ZSBkb2VzIGEgc21hcnQgaW52ZXJzZSBpbiBhIHZpZGVvIHN0cmVhbSBpbiByZWFsdGltZS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzEuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY2LjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzb2xhcml6ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzb2xhcml6ZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTEwOSw3ICsxMDksNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43MS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42Ni43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMzUsNyArMTM1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcxLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjYuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGFjZXNjb3BlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGFjZXNjb3BlLmh0bWwKaW5kZXggMGU1ZDdlYy4uZTRkNmIzOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BhY2VzY29wZS5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwYWNlc2NvcGUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnNwYWNlc2NvcGU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc29sYXJpemUuaHRtbCIgdGl0bGU9InNvbGFyaXplIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwYWNlc2NvcGUucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNTAsNyArNTAsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RTcGFjZVNjb3BlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BhY2VzY29wZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNjcsNyArNjcsNyBAQAogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CiAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9WaXN1YWxpemVyLUJhZEdzdEF1ZGlvVmlzdWFsaXplcnMKKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb1Zpc3VhbGl6ZXIKICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0U3BhY2VTY29wZQogPC9wcmU+CiA8L2Rpdj4KQEAgLTc2LDEzICs3NiwxMyBAQAogPHA+U3BhY2VzY29wZSBpcyBhIHNpbXBsZSBhdWRpbyB2aXN1YWxpc2F0aW9uIGVsZW1lbnQuIEl0IG1hcHMgdGhlIGxlZnQgYW5kCiByaWdodCBjaGFubmVsIHRvIHggYW5kIHkgY29vcmRpbmF0ZXMuPC9wPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcyLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42Ny43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+CiA8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgogICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KICAgICA8dGJvZHk+CiAgICAgICA8dHI+CiAgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgotICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaCBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3BhY2VzY29wZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4geGltYWdlc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3BhY2VzY29wZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4geGltYWdlc2luazwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC05Miw3ICs5Miw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjcyLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY3LjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTExOCw3ICsxMTgsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzIuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42Ny43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwZWN0cmFzY29wZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlY3RyYXNjb3BlLmh0bWwKaW5kZXggNjhjMTY4NC4uYjEzYWIxMCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlY3RyYXNjb3BlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlY3RyYXNjb3BlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zcGVjdHJhc2NvcGU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BhY2VzY29wZS5odG1sIiB0aXRsZT0ic3BhY2VzY29wZSI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3RTcGVjdHJhU2NvcGUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVjdHJhc2NvcGUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTUxLDcgKzUxLDcgQEAKICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgogICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgogICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdEF1ZGlvVmlzdWFsaXplci1CYWRHc3RBdWRpb1Zpc3VhbGl6ZXJzCisgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9WaXN1YWxpemVyCiAgICAgICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFNwZWN0cmFTY29wZQogPC9wcmU+CiA8L2Rpdj4KQEAgLTYwLDEzICs2MCwxMyBAQAogPHA+U3BlY3RyYXNjb3BlIGlzIGEgc2ltcGxlIHNwZWN0cnVtIHZpc3VhbGlzYXRpb24gZWxlbWVudC4gSXQgcmVuZGVycyB0aGUKIGZyZXF1ZW5jeSBzcGVjdHJ1bSBhcyBhIHNlcmllcyBvZiBiYXJzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43My42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjguNi4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggYXVkaW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHNwZWN0cmFzY29wZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4geGltYWdlc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3BlY3RyYXNjb3BlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB4aW1hZ2VzaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTc2LDcgKzc2LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzMuNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjguNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTAyLDcgKzEwMiw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43My42LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjY4LjYuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlZWQuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwZWVkLmh0bWwKaW5kZXggNGE1ZWEzNS4uZTYxODQ4MCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlZWQuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVlZC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c3BlZWQ6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3luYWVzY29wZS5odG1sIiB0aXRsZT0ic3luYWVzY29wZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVlZC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFNwZWVkIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlZWQub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTc4LDEzICs3OCwxMyBAQAogZWxlbWVudCAoYnV0IHJlbGllcyBvbiB0aGUgZGVjb2Rlci9kZW11eGVyIHRvIGhhbmRsZSB0aGlzIGNvcnJlY3RseSwgYWxzbwogcmVxdWlyZXMgYSBmYWlybHkgdXAtdG8tZGF0ZSBnc3QtcGx1Z2lucy1iYXNlLCBhcyBvZiBGZWJydWFyeSAyMDA3KS48L3A+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzUuNy40Ij48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcwLjcuNCI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KIDxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CiAgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgogICAgIDx0Ym9keT4KICAgICAgIDx0cj4KICAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+Ci0gICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoIGZpbGVzcmMgbG9jYXRpb248c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj50ZXN0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi48L3NwYW4+b2dnIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBkZWNvZGViaW4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3BlZWQgc3BlZWQ8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+PTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjU8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvcmVzYW1wbGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG9hdWRpb3Npbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gZmlsZXNyYyBsb2NhdGlvbjxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPnRlc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+Ljwvc3Bhbj5vZ2cgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGRlY29kZWJpbiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzcGVlZCBzcGVlZDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuNTwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXVkaW9yZXNhbXBsZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b2F1ZGlvc2luazwvcHJlPjwvdGQ+CiAgICAgICA8L3RyPgogICAgIDwvdGJvZHk+CiAgIDwvdGFibGU+CkBAIC05NCw3ICs5NCw3IEBACiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc1LjcuNS4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcwLjcuNS4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTEyMCw3ICsxMjAsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzUuNy41LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43MC43LjUuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmh0bWwKaW5kZXggMmRlOGEyNy4uMmNmZGQ0OCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT5zcGhlcmU6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BlZWQuaHRtbCIgdGl0bGU9InNwZWVkIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFNwaGVyZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzYsMTAgKzc2LDI1IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5UaGUgc3BoZXJlIGVsZW1lbnQgYXBwbGllcyBhICdzcGhlcmUnIGdlb21ldHJpYyB0cmFuc2Zvcm0gdG8gdGhlIGltYWdlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi43MS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHNwaGVyZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzYuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzEuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTA1LDcgKzEyMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43Ni43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcxLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTc4LDYgKzE5MywxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogMS41PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbAppbmRleCBhNzUyYmU4Li4xOTMwMWQxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnNxdWFyZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuaHRtbCIgdGl0bGU9InNwaGVyZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RTcXVhcmUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTg3LDEwICs4NywyNSBAQAogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+VGhlIHNxdWFyZSBlbGVtZW50IGRpc3RvcnRzIHRoZSBjZW50ZXIgcGFydCBvZiB0aGUgaW1hZ2UgaW50byBhIHNxdWFyZS48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuNzIuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBzcXVhcmUgem9vbTxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij49PC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEwMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHZpZGVvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gYXV0b3ZpZGVvc2luazwvcHJlPjwvdGQ+CisgICAgICA8L3RyPgorICAgIDwvdGJvZHk+CisgIDwvdGFibGU+Cis8L2Rpdj4KKworPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzeW5vcHNpc2RpdiI+CiA8aDI+U3lub3BzaXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc3LjcuMi4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgorPGEgbmFtZT0iaWQtMS4yLjcyLjcuNC4xIj48L2E+PGgzPkVsZW1lbnQgSW5mb3JtYXRpb248L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTExNiw3ICsxMzEsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzcuNy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43Mi43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KQEAgLTIwOCw2ICsyMjMsMTAgQEAKIDxwPkRlZmF1bHQgdmFsdWU6IDI8L3A+CiA8L2Rpdj4KIDwvZGl2PgorPGRpdiBjbGFzcz0icmVmc2VjdDEiPgorPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlLnNlZS1hbHNvIj48L2E+PGgyPlNlZSBBbHNvPC9oMj4KKzxwPmdlb21ldHJpY3RyYW5zZm9ybTwvcD4KKzwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJmb290ZXIiPgogPGhyPkdlbmVyYXRlZCBieSBHVEstRG9jIFYxLjI0PC9kaXY+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwKaW5kZXggYTMxYjcyYi4uYmEwZGIyOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnN0cmV0Y2g6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlLmh0bWwiIHRpdGxlPSJzcXVhcmUiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFN0cmV0Y2giPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC03NiwxMCArNzYsMjUgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5kZXNjcmlwdGlvbiI+PC9hPjxoMj5EZXNjcmlwdGlvbjwvaDI+Cis8cD5UaGUgc3RyZXRjaCBlbGVtZW50IHN0cmV0Y2hlcyB0aGUgaW1hZ2UgaW4gYSBjaXJjbGUgYXJvdW5kIHRoZSBjZW50ZXIgcG9pbnQuPC9wPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iaWQtMS4yLjczLjcuMyI+PC9hPjxoMz5FeGFtcGxlIGxhdW5jaCBsaW5lPC9oMz4KKzxkaXYgY2xhc3M9ImluZm9ybWFsZXhhbXBsZSI+CisgIDx0YWJsZSBjbGFzcz0ibGlzdGluZ19mcmFtZSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMCIgY2VsbHNwYWNpbmc9IjAiPgorICAgIDx0Ym9keT4KKyAgICAgIDx0cj4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2xpbmVzIiBhbGlnbj0icmlnaHQiPjxwcmU+MTwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj52IHZpZGVvdGVzdHNyYyA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gc3RyZXRjaCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzguNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzMuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTA1LDcgKzEyMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43OC43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjczLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTc5LDYgKzE5NCwxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogMC41PC9wPgogPC9kaXY+CiA8L2Rpdj4KKzxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN5bmFlc2NvcGUuaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN5bmFlc2NvcGUuaHRtbAppbmRleCA2MjVkOTQ1Li43ZWJmYTVjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zeW5hZXNjb3BlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3luYWVzY29wZS5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+c3luYWVzY29wZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGVjdHJhc2NvcGUuaHRtbCIgdGl0bGU9InNwZWN0cmFzY29wZSI+CkBAIC0zNCw3ICszNCw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8YSBuYW1lPSJHc3RTeW5hZVNjb3BlIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3luYWVzY29wZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNTEsNyArNTEsNyBAQAogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CiAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9WaXN1YWxpemVyLUJhZEdzdEF1ZGlvVmlzdWFsaXplcnMKKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb1Zpc3VhbGl6ZXIKICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0U3luYWVTY29wZQogPC9wcmU+CiA8L2Rpdj4KQEAgLTYwLDEzICs2MCwxMyBAQAogPHA+U3luYWVzY29wZSBpcyBhbiBhdWRpbyB2aXN1YWxpc2F0aW9uIGVsZW1lbnQuIEl0IGFuYWx5emVzIGZyZXF1ZW5jaWVzIGFuZAogb3V0LW9mIHBoYXNlIHByb3BlcnRpZXMgb2YgYXVkaW8gYW5kIGRyYXdzIHRoaXMgYXMgY2xvdWRzIG9mIHN0YXJzLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43NC42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjkuNi4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggYXVkaW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHN5bmFlc2NvcGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHhpbWFnZXNpbms8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gYXVkaW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHN5bmFlc2NvcGUgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHhpbWFnZXNpbms8L3ByZT48L3RkPgogICAgICAgPC90cj4KICAgICA8L3Rib2R5PgogICA8L3RhYmxlPgpAQCAtNzYsNyArNzYsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43NC42LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi42OS42LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDIsNyArMTAyLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjc0LjYuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNjkuNi40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwKaW5kZXggM2IyY2U4Ni4uYWI5MjI1MSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnRlbXBsYXRlbWF0Y2g6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5odG1sIiB0aXRsZT0ic3RyZXRjaCI+CkBAIC0xNSw4ICsxNSw3IEBACiA8dGFibGUgY2xhc3M9Im5hdmlnYXRpb24iIGlkPSJ0b3AiIHdpZHRoPSIxMDAlIiBzdW1tYXJ5PSJOYXZpZ2F0aW9uIGhlYWRlciIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSI1Ij48dHIgdmFsaWduPSJtaWRkbGUiPgogPHRkIHdpZHRoPSIxMDAlIiBhbGlnbj0ibGVmdCIgY2xhc3M9InNob3J0Y3V0cyI+CiA8YSBocmVmPSIjIiBjbGFzcz0ic2hvcnRjdXQiPlRvcDwvYT48c3BhbiBpZD0ibmF2X2Rlc2NyaXB0aW9uIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guZGVzY3JpcHRpb24iIGNsYXNzPSJzaG9ydGN1dCI+RGVzY3JpcHRpb248L2E+PC9zcGFuPjxzcGFuIGlkPSJuYXZfaGllcmFyY2h5Ij7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAotICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub2JqZWN0LWhpZXJhcmNoeSIgY2xhc3M9InNob3J0Y3V0Ij5PYmplY3QgSGllcmFyY2h5PC9hPjwvc3Bhbj48c3BhbiBpZD0ibmF2X3Byb3BlcnRpZXMiPsKgwqA8c3BhbiBjbGFzcz0iZGltIj58PC9zcGFuPsKgCisgICAgICAgICAgICAgICAgICA8YSBocmVmPSIjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5kZXNjcmlwdGlvbiIgY2xhc3M9InNob3J0Y3V0Ij5EZXNjcmlwdGlvbjwvYT48L3NwYW4+PHNwYW4gaWQ9Im5hdl9wcm9wZXJ0aWVzIj7CoMKgPHNwYW4gY2xhc3M9ImRpbSI+fDwvc3Bhbj7CoAogICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gucHJvcGVydGllcyIgY2xhc3M9InNob3J0Y3V0Ij5Qcm9wZXJ0aWVzPC9hPjwvc3Bhbj4KIDwvdGQ+CiA8dGQ+PGEgYWNjZXNza2V5PSJoIiBocmVmPSJpbmRleC5odG1sIj48aW1nIHNyYz0iaG9tZS5wbmciIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIiBhbHQ9IkhvbWUiPjwvYT48L3RkPgpAQCAtMzUsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC02MSwzNCArNjAsMjUgQEAKIDwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+Ci08YSBuYW1lPSJHc3RTeW5hZVNjb3BlIj48L2E+PGEgbmFtZT0iR3N0VGVtcGxhdGVNYXRjaCI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KKzxhIG5hbWU9IkdzdFN5bmFlU2NvcGUiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CiA8L2NvbGdyb3VwPgogPHRib2R5Pjx0cj4KIDx0ZCBjbGFzcz0iZGF0YXR5cGVfa2V5d29yZCI+c3RydWN0PC90ZD4KLTx0ZCBjbGFzcz0iZnVuY3Rpb25fbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoLXN0cnVjdCIgdGl0bGU9InN0cnVjdCBHc3RUZW1wbGF0ZU1hdGNoIj5Hc3RUZW1wbGF0ZU1hdGNoPC9hPjwvdGQ+Cis8dGQgY2xhc3M9ImZ1bmN0aW9uX25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjR3N0VGVtcGxhdGVNYXRjaCIgdGl0bGU9InN0cnVjdCBHc3RUZW1wbGF0ZU1hdGNoIj5Hc3RUZW1wbGF0ZU1hdGNoPC9hPjwvdGQ+CiA8L3RyPjwvdGJvZHk+CiA8L3RhYmxlPjwvZGl2PgogPC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Ci08YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLm9iamVjdC1oaWVyYXJjaHkiPjwvYT48aDI+T2JqZWN0IEhpZXJhcmNoeTwvaDI+Ci08cHJlIGNsYXNzPSJzY3JlZW4iPiAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR09iamVjdCI+R09iamVjdDwvYT4KLSAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ29iamVjdC91bnN0YWJsZS9nb2JqZWN0LVRoZS1CYXNlLU9iamVjdC1UeXBlLmh0bWwjR0luaXRpYWxseVVub3duZWQiPkdJbml0aWFsbHlVbm93bmVkPC9hPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RPYmplY3QuaHRtbCI+R3N0T2JqZWN0PC9hPgotICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gPGEgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0cmVhbWVyL2h0bWwvR3N0RWxlbWVudC5odG1sIj5Hc3RFbGVtZW50PC9hPgotICAgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IEdzdFRlbXBsYXRlTWF0Y2gKLTwvcHJlPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuNzkuOC4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzQuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE0LDcgKzEwNCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi43OS44LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjc0LjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTczLDggKzE2MywxOCBAQAogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5vdGhlcl9kZXRhaWxzIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iR3N0VGVtcGxhdGVNYXRjaC1zdHJ1Y3QiPjwvYT48aDM+c3RydWN0IEdzdFRlbXBsYXRlTWF0Y2g8L2gzPgotPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBHc3RUZW1wbGF0ZU1hdGNoOzwvcHJlPgorPGEgbmFtZT0iR3N0VGVtcGxhdGVNYXRjaCI+PC9hPjxoMz5zdHJ1Y3QgR3N0VGVtcGxhdGVNYXRjaDwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFRlbXBsYXRlTWF0Y2ggeworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OworCisgIGdpbnQgbWV0aG9kOworICBnYm9vbGVhbiBkaXNwbGF5OworCisgIGdjaGFyICp0ZW1wbDsKKworICBJcGxJbWFnZSAqY3ZHcmF5LCAqY3ZUZW1wbGF0ZUltYWdlLCAqY3ZEaXN0SW1hZ2U7Cit9OworPC9wcmU+CiA8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHVubmVsLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbAppbmRleCBlYmRmOWZjLi5lMjA0MmM5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnR1bm5lbDogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sIiB0aXRsZT0ib3BlbmN2dGV4dG92ZXJsYXkiPgpAQCAtMzQsNyArMzQsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGEgbmFtZT0iR3N0VHVubmVsIj48L2E+PGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHVubmVsLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC02MCwxMCArNjAsMjYgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHVubmVsLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPlR1bm5lbCBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgYXBwbGllcyBhIGxpZ2h0IHR1bm5lbAorZWZmZWN0LjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi43Ni42LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHR1bm5lbCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODEuNi4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzYuNi40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtODksNyArMTA1LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjgxLjYuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzYuNi40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNTIsNiArMTY4LDEwIEBACiA8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+c3RydWN0IEdzdFR1bm5lbDs8L3ByZT4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuc2VlLWFsc28iPjwvYT48aDI+U2VlIEFsc288L2gyPgorPHA+Z2VvbWV0cmljdHJhbnNmb3JtPC9wPgorPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CiA8aHI+R2VuZXJhdGVkIGJ5IEdUSy1Eb2MgVjEuMjQ8L2Rpdj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sCmluZGV4IDY4YmRjYzcuLmVhMWJhOGUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnR3aXJsOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR1bm5lbC5odG1sIiB0aXRsZT0idHVubmVsIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUwLDcgKzUwLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0VHdpcmwiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNzYsMTAgKzc2LDI1IEBACiA8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmRlc2NyaXB0aW9uIj48L2E+PGgyPkRlc2NyaXB0aW9uPC9oMj4KKzxwPlRoZSB0d2lybCBlbGVtZW50IHR3aXN0cyB0aGUgaW1hZ2UgZnJvbSB0aGUgY2VudGVyIG91dC48L3A+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Cis8YSBuYW1lPSJpZC0xLjIuNzcuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgorPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KKyAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CisgICAgPHRib2R5PgorICAgICAgPHRyPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KKyAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2g8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj48c3BhbiBjbGFzcz0ibnVtYmVyIj4xLjA8L3NwYW4+IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPnYgdmlkZW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB0d2lybCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gdmlkZW9jb252ZXJ0IDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdXRvdmlkZW9zaW5rPC9wcmU+PC90ZD4KKyAgICAgIDwvdHI+CisgICAgPC90Ym9keT4KKyAgPC90YWJsZT4KKzwvZGl2PgorCis8L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODIuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzcuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTA1LDcgKzEyMCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44Mi43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjc3LjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTc4LDYgKzE5MywxMCBAQAogPHA+RGVmYXVsdCB2YWx1ZTogMy4xNDE1OTwvcD4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sCmluZGV4IGQwMjE5ODcuLmExMWFjMTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT52aWRlb3BhcnNlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwiIHRpdGxlPSJ0d2lybCI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTExMiwxMiArMTEyLDI5IEBACiA8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tdG9wLWZpZWxkLWZpcnN0IiB0aXRsZT0iVGhlIOKAnHRvcC1maWVsZC1maXJzdOKAnSBwcm9wZXJ0eSI+dG9wLWZpZWxkLWZpcnN0PC9hPjwvdGQ+CiA8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgogPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+PGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X25hbWUiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0tZnJhbWVzaXplIiB0aXRsZT0iVGhlIOKAnGZyYW1lc2l6ZeKAnSBwcm9wZXJ0eSI+ZnJhbWVzaXplPC9hPjwvdGQ+Cis8dGQgY2xhc3M9InByb3BlcnR5X2ZsYWdzIj5SZWFkIC8gV3JpdGU8L3RkPgorPC90cj4KKzx0cj4KKzx0ZCBjbGFzcz0icHJvcGVydHlfdHlwZSI+Cis8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfbmFtZSI+PGEgY2xhc3M9ImxpbmsiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS1vZmZzZXRzIiB0aXRsZT0iVGhlIOKAnG9mZnNldHPigJ0gcHJvcGVydHkiPm9mZnNldHM8L2E+PC90ZD4KKzx0ZCBjbGFzcz0icHJvcGVydHlfZmxhZ3MiPlJlYWQgLyBXcml0ZTwvdGQ+Cis8L3RyPgorPHRyPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV90eXBlIj4KKzxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nbGliL3Vuc3RhYmxlL2dsaWItQmFzaWMtVHlwZXMuaHRtbCNnY2hhciI+PHNwYW4gY2xhc3M9InR5cGUiPmdjaGFyPC9zcGFuPjwvYT7CoCo8L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9uYW1lIj48YSBjbGFzcz0ibGluayIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLXN0cmlkZXMiIHRpdGxlPSJUaGUg4oCcc3RyaWRlc+KAnSBwcm9wZXJ0eSI+c3RyaWRlczwvYT48L3RkPgorPHRkIGNsYXNzPSJwcm9wZXJ0eV9mbGFncyI+UmVhZCAvIFdyaXRlPC90ZD4KKzwvdHI+CiA8L3Rib2R5PgogPC90YWJsZT48L2Rpdj4KIDwvZGl2PgogPGEgbmFtZT0iR3N0VmlkZW9QYXJzZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2Uub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTE0NCw3ICsxNjEsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44My43LjMuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43OC43LjMuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xNzAsNyArMTg3LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjgzLjcuMy4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzguNy4zLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0zNTIsNiArMzY5LDMwIEBACiA8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgogPHA+RGVmYXVsdCB2YWx1ZTogVFJVRTwvcD4KIDwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0VmlkZW9QYXJzZS0tZnJhbWVzaXplIj48L2E+PGgzPlRoZSA8Y29kZSBjbGFzcz0ibGl0ZXJhbCI+4oCcZnJhbWVzaXpl4oCdPC9jb2RlPiBwcm9wZXJ0eTwvaDM+Cis8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+ICDigJxmcmFtZXNpemXigJ0gICAgICAgICAgICAgICAgPGEgaHJlZj0iaHR0cHM6Ly9kZXZlbG9wZXIuZ25vbWUub3JnL2dsaWIvdW5zdGFibGUvZ2xpYi1CYXNpYy1UeXBlcy5odG1sI2d1aW50Ij48c3BhbiBjbGFzcz0idHlwZSI+Z3VpbnQ8L3NwYW4+PC9hPjwvcHJlPgorPHA+U2l6ZSBvZiBhbiBpbWFnZSBpbiByYXcgc3RyZWFtICgwOiBkZWZhdWx0KS48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogMDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0VmlkZW9QYXJzZS0tb2Zmc2V0cyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnG9mZnNldHPigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnG9mZnNldHPigJ0gICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5PZmZzZXQgb2YgZWFjaCBwbGFuZXMgaW4gYnl0ZXMgdXNpbmcgc3RyaW5nIGZvcm1hdDogJ28wLG8xLG8yLG8zJy48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogTlVMTDwvcD4KKzwvZGl2PgorPGhyPgorPGRpdiBjbGFzcz0icmVmc2VjdDIiPgorPGEgbmFtZT0iR3N0VmlkZW9QYXJzZS0tc3RyaWRlcyI+PC9hPjxoMz5UaGUgPGNvZGUgY2xhc3M9ImxpdGVyYWwiPuKAnHN0cmlkZXPigJ08L2NvZGU+IHByb3BlcnR5PC9oMz4KKzxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj4gIOKAnHN0cmlkZXPigJ0gICAgICAgICAgICAgICAgICA8YSBocmVmPSJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ2xpYi91bnN0YWJsZS9nbGliLUJhc2ljLVR5cGVzLmh0bWwjZ2NoYXIiPjxzcGFuIGNsYXNzPSJ0eXBlIj5nY2hhcjwvc3Bhbj48L2E+wqAqPC9wcmU+Cis8cD5TdHJpZGUgb2YgZWFjaCBwbGFuZXMgaW4gYnl0ZXMgdXNpbmcgc3RyaW5nIGZvcm1hdDogJ3MwLHMxLHMyLHMzJy48L3A+Cis8cD5GbGFnczogUmVhZCAvIFdyaXRlPC9wPgorPHA+RGVmYXVsdCB2YWx1ZTogTlVMTDwvcD4KKzwvZGl2PgogPC9kaXY+CiA8L2Rpdj4KIDxkaXYgY2xhc3M9ImZvb3RlciI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FhY2VuYy5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdm9hYWNlbmMuaHRtbAppbmRleCAzMjU2NTRkLi4zZDRmYTNjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FhY2VuYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYWFjZW5jLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT52b2FhY2VuYzogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLmh0bWwiIHRpdGxlPSJ6YmFyIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYWFjZW5jLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTUxLDcgKzUxLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0Vm9BYWNFbmMiPjwvYT48ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FhY2VuYy5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtODMsNyArODMsNyBAQAogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44Ni44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44MS44LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMDksNyArMTA5LDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjg2LjguMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuODEuOC4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FtcndiZW5jLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FtcndiZW5jLmh0bWwKaW5kZXggZjE4ZDJkNC4uODFmMDU3NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdm9hbXJ3YmVuYy5odG1sCisrKyBiL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZvYW1yd2JlbmMuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPnZvYW1yd2JlbmM6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJ1cCIgaHJlZj0iY2gwMS5odG1sIiB0aXRsZT0iZ3N0LXBsdWdpbnMtYmFkIEVsZW1lbnRzIj4KIDxsaW5rIHJlbD0icHJldiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdm9hYWNlbmMuaHRtbCIgdGl0bGU9InZvYWFjZW5jIj4KQEAgLTM2LDcgKzM2LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODcuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuODIuMy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8aHI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODcuMy4yLjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi44Mi4zLjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgogPGRpdiBjbGFzcz0idmFyaWFibGVsaXN0Ij48dGFibGUgYm9yZGVyPSIwIiBjbGFzcz0idmFyaWFibGVsaXN0Ij4KIDxjb2xncm91cD4KIDxjb2wgYWxpZ249ImxlZnQiIHZhbGlnbj0idG9wIj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sCmluZGV4IDFjNTU0MzAuLjYwNWQ5NTAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwKKysrIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPndhdGVycmlwcGxlOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCIgdGl0bGU9InZpZGVvcGFyc2UiPgpAQCAtMzUsNyArMzUsNyBAQAogPC90cj48L3RhYmxlPjwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUucHJvcGVydGllcyI+PC9hPjxoMj5Qcm9wZXJ0aWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX3R5cGUiPgogPGNvbCB3aWR0aD0iMzAwcHgiIGNsYXNzPSJwcm9wZXJ0aWVzX25hbWUiPgpAQCAtNjIsNyArNjIsNyBAQAogPC9kaXY+CiA8YSBuYW1lPSJHc3RXYXRlclJpcHBsZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLm90aGVyIj48L2E+PGgyPlR5cGVzIGFuZCBWYWx1ZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgorPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGNsYXNzPSJpbmZvcm1hbHRhYmxlIiB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0ibmFtZSI+CiA8Y29sIGNsYXNzPSJkZXNjcmlwdGlvbiI+CkBAIC04OCwxMCArODgsMjUgQEAKIDwvZGl2PgogPGRpdiBjbGFzcz0icmVmc2VjdDEiPgogPGEgbmFtZT0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuZGVzY3JpcHRpb24iPjwvYT48aDI+RGVzY3JpcHRpb248L2gyPgorPHA+VGhlIHdhdGVycmlwcGxlIGVsZW1lbnQgY3JlYXRlcyBhIHdhdGVyIHJpcHBsZSBlZmZlY3Qgb24gdGhlIGltYWdlLjwvcD4KKzxkaXYgY2xhc3M9InJlZnNlY3QyIj4KKzxhIG5hbWU9ImlkLTEuMi43OS43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbGV4YW1wbGUiPgorICA8dGFibGUgY2xhc3M9Imxpc3RpbmdfZnJhbWUiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjAiIGNlbGxzcGFjaW5nPSIwIj4KKyAgICA8dGJvZHk+CisgICAgICA8dHI+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19saW5lcyIgYWxpZ249InJpZ2h0Ij48cHJlPjE8L3ByZT48L3RkPgorICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfY29kZSI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmdzdDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPmxhdW5jaDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4tPC9zcGFuPjxzcGFuIGNsYXNzPSJudW1iZXIiPjEuMDwvc3Bhbj4gPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+diB2aWRlb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHdhdGVycmlwcGxlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB2aWRlb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1dG92aWRlb3Npbms8L3ByZT48L3RkPgorICAgICAgPC90cj4KKyAgICA8L3Rib2R5PgorICA8L3RhYmxlPgorPC9kaXY+CisKKzwvZGl2PgogPGRpdiBjbGFzcz0icmVmc3lub3BzaXNkaXYiPgogPGgyPlN5bm9wc2lzPC9oMj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44NC43LjIuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KKzxhIG5hbWU9ImlkLTEuMi43OS43LjQuMSI+PC9hPjxoMz5FbGVtZW50IEluZm9ybWF0aW9uPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0xMTcsNyArMTMyLDcgQEAKIDwvZGl2PgogPGhyPgogPGRpdiBjbGFzcz0icmVmc2VjdDIiPgotPGEgbmFtZT0iaWQtMS4yLjg0LjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuNzkuNy40LjIiPjwvYT48aDM+RWxlbWVudCBQYWRzPC9oMz4KIDxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PHRhYmxlIGJvcmRlcj0iMCIgY2xhc3M9InZhcmlhYmxlbGlzdCI+CiA8Y29sZ3JvdXA+CiA8Y29sIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+CkBAIC0yMDYsNiArMjIxLDEwIEBACiA8cD5EZWZhdWx0IHZhbHVlOiAxNjwvcD4KIDwvZGl2PgogPC9kaXY+Cis8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+Cis8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5zZWUtYWxzbyI+PC9hPjxoMj5TZWUgQWxzbzwvaDI+Cis8cD5nZW9tZXRyaWN0cmFuc2Zvcm08L3A+Cis8L2Rpdj4KIDwvZGl2PgogPGRpdiBjbGFzcz0iZm9vdGVyIj4KIDxocj5HZW5lcmF0ZWQgYnkgR1RLLURvYyBWMS4yNDwvZGl2PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F2ZXNjb3BlLmh0bWwgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXZlc2NvcGUuaHRtbAppbmRleCAyZDg4ZTZjLi4wODRiYzQyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXZlc2NvcGUuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXZlc2NvcGUuaHRtbApAQCAtMyw3ICszLDcgQEAKIDxoZWFkPgogPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9VVRGLTgiPgogPHRpdGxlPndhdmVzY29wZTogR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw8L3RpdGxlPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OC4xIj4KKzxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzkuMSI+CiA8bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbCI+CiA8bGluayByZWw9InVwIiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12b2FtcndiZW5jLmh0bWwiIHRpdGxlPSJ2b2FtcndiZW5jIj4KQEAgLTM1LDcgKzM1LDcgQEAKIDwvdHI+PC90YWJsZT48L2Rpdj4KIDxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdmVzY29wZS5wcm9wZXJ0aWVzIj48L2E+PGgyPlByb3BlcnRpZXM8L2gyPgotPGRpdiBjbGFzcz0iaW5mb3JtYWx0YWJsZSI+PHRhYmxlIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9InByb3BlcnRpZXNfdHlwZSI+CiA8Y29sIHdpZHRoPSIzMDBweCIgY2xhc3M9InByb3BlcnRpZXNfbmFtZSI+CkBAIC01MCw3ICs1MCw3IEBACiA8L2Rpdj4KIDxhIG5hbWU9IkdzdFdhdmVTY29wZSI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdmVzY29wZS5vdGhlciI+PC9hPjxoMj5UeXBlcyBhbmQgVmFsdWVzPC9oMj4KLTxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSB3aWR0aD0iMTAwJSIgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+CiA8Y29sZ3JvdXA+CiA8Y29sIHdpZHRoPSIxNTBweCIgY2xhc3M9Im5hbWUiPgogPGNvbCBjbGFzcz0iZGVzY3JpcHRpb24iPgpAQCAtNjcsNyArNjcsNyBAQAogICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHBzOi8vZGV2ZWxvcGVyLmdub21lLm9yZy9nb2JqZWN0L3Vuc3RhYmxlL2dvYmplY3QtVGhlLUJhc2UtT2JqZWN0LVR5cGUuaHRtbCNHSW5pdGlhbGx5VW5vd25lZCI+R0luaXRpYWxseVVub3duZWQ8L2E+CiAgICAgICAgIDxzcGFuIGNsYXNzPSJsaW5lYXJ0Ij7ilbDilIDilIA8L3NwYW4+IDxhIGhyZWY9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdHJlYW1lci9odG1sL0dzdE9iamVjdC5odG1sIj5Hc3RPYmplY3Q8L2E+CiAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiA8YSBocmVmPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL2RvYy9nc3RyZWFtZXIvaGVhZC9nc3RyZWFtZXIvaHRtbC9Hc3RFbGVtZW50Lmh0bWwiPkdzdEVsZW1lbnQ8L2E+Ci0gICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0QXVkaW9WaXN1YWxpemVyLUJhZEdzdEF1ZGlvVmlzdWFsaXplcnMKKyAgICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0ibGluZWFydCI+4pWw4pSA4pSAPC9zcGFuPiBHc3RBdWRpb1Zpc3VhbGl6ZXIKICAgICAgICAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImxpbmVhcnQiPuKVsOKUgOKUgDwvc3Bhbj4gR3N0V2F2ZVNjb3BlCiA8L3ByZT4KIDwvZGl2PgpAQCAtNzYsMTMgKzc2LDEzIEBACiA8cD5XYXZlc2NvcGUgaXMgYSBzaW1wbGUgYXVkaW8gdmlzdWFsaXNhdGlvbiBlbGVtZW50LiBJdCByZW5kZXJzIHRoZSB3YXZlZm9ybXMKIGxpa2Ugb24gYW4gb3NjaWxsb3Njb3BlLjwvcD4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44OC43LjMiPjwvYT48aDM+RXhhbXBsZSBsYXVuY2ggbGluZTwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuODMuNy4zIj48L2E+PGgzPkV4YW1wbGUgbGF1bmNoIGxpbmU8L2gzPgogPGRpdiBjbGFzcz0iaW5mb3JtYWxleGFtcGxlIj4KICAgPHRhYmxlIGNsYXNzPSJsaXN0aW5nX2ZyYW1lIiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIwIiBjZWxsc3BhY2luZz0iMCI+CiAgICAgPHRib2R5PgogICAgICAgPHRyPgogICAgICAgICA8dGQgY2xhc3M9Imxpc3RpbmdfbGluZXMiIGFsaWduPSJyaWdodCI+PHByZT4xPC9wcmU+PC90ZD4KLSAgICAgICAgPHRkIGNsYXNzPSJsaXN0aW5nX2NvZGUiPjxwcmUgY2xhc3M9InByb2dyYW1saXN0aW5nIj5nc3Q8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+LTwvc3Bhbj5sYXVuY2ggYXVkaW90ZXN0c3JjIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiBhdWRpb2NvbnZlcnQgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IHdhdmVzY29wZSA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4geGltYWdlc2luazwvcHJlPjwvdGQ+CisgICAgICAgIDx0ZCBjbGFzcz0ibGlzdGluZ19jb2RlIj48cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Z3N0PHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+bGF1bmNoPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPi08L3NwYW4+PHNwYW4gY2xhc3M9Im51bWJlciI+MS4wPC9zcGFuPiBhdWRpb3Rlc3RzcmMgPHNwYW4gY2xhc3M9Imd0a2RvYyBvcHQiPiE8L3NwYW4+IGF1ZGlvY29udmVydCA8c3BhbiBjbGFzcz0iZ3RrZG9jIG9wdCI+ITwvc3Bhbj4gd2F2ZXNjb3BlIDxzcGFuIGNsYXNzPSJndGtkb2Mgb3B0Ij4hPC9zcGFuPiB4aW1hZ2VzaW5rPC9wcmU+PC90ZD4KICAgICAgIDwvdHI+CiAgICAgPC90Ym9keT4KICAgPC90YWJsZT4KQEAgLTkyLDcgKzkyLDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODguNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuODMuNy40LjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE4LDcgKzExOCw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44OC43LjQuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjgzLjcuNC4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5odG1sIGIvZG9jcy9wbHVnaW5zL2h0bWwvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5odG1sCmluZGV4IDdlOTViYWYuLjQ0NTJmYzggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9odG1sL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIuaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLmh0bWwKQEAgLTMsNyArMyw3IEBACiA8aGVhZD4KIDxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC9odG1sOyBjaGFyc2V0PVVURi04Ij4KIDx0aXRsZT56YmFyOiBHU3RyZWFtZXIgQmFkIFBsdWdpbnMgMS4wIFBsdWdpbnMgUmVmZXJlbmNlIE1hbnVhbDwvdGl0bGU+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc4LjEiPgorPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43OS4xIj4KIDxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsIj4KIDxsaW5rIHJlbD0idXAiIGhyZWY9ImNoMDEuaHRtbCIgdGl0bGU9ImdzdC1wbHVnaW5zLWJhZCBFbGVtZW50cyI+CiA8bGluayByZWw9InByZXYiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwiIHRpdGxlPSJ3YXRlcnJpcHBsZSI+CkBAIC0zNSw3ICszNSw3IEBACiA8L3RyPjwvdGFibGU+PC9kaXY+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MSI+CiA8YSBuYW1lPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLnByb3BlcnRpZXMiPjwvYT48aDI+UHJvcGVydGllczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgYm9yZGVyPSIwIj4KKzxkaXYgY2xhc3M9ImluZm9ybWFsdGFibGUiPjx0YWJsZSBjbGFzcz0iaW5mb3JtYWx0YWJsZSIgYm9yZGVyPSIwIj4KIDxjb2xncm91cD4KIDxjb2wgd2lkdGg9IjE1MHB4IiBjbGFzcz0icHJvcGVydGllc190eXBlIj4KIDxjb2wgd2lkdGg9IjMwMHB4IiBjbGFzcz0icHJvcGVydGllc19uYW1lIj4KQEAgLTYyLDcgKzYyLDcgQEAKIDwvZGl2PgogPGEgbmFtZT0iR3N0WkJhciI+PC9hPjxkaXYgY2xhc3M9InJlZnNlY3QxIj4KIDxhIG5hbWU9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIub3RoZXIiPjwvYT48aDI+VHlwZXMgYW5kIFZhbHVlczwvaDI+Ci08ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCI+Cis8ZGl2IGNsYXNzPSJpbmZvcm1hbHRhYmxlIj48dGFibGUgY2xhc3M9ImluZm9ybWFsdGFibGUiIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiPgogPGNvbGdyb3VwPgogPGNvbCB3aWR0aD0iMTUwcHgiIGNsYXNzPSJuYW1lIj4KIDxjb2wgY2xhc3M9ImRlc2NyaXB0aW9uIj4KQEAgLTg5LDcgKzg5LDcgQEAKIDxkaXYgY2xhc3M9InJlZnN5bm9wc2lzZGl2Ij4KIDxoMj5TeW5vcHNpczwvaDI+CiA8ZGl2IGNsYXNzPSJyZWZzZWN0MiI+Ci08YSBuYW1lPSJpZC0xLjIuODUuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+Cis8YSBuYW1lPSJpZC0xLjIuODAuNy4yLjEiPjwvYT48aDM+RWxlbWVudCBJbmZvcm1hdGlvbjwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpAQCAtMTE1LDcgKzExNSw3IEBACiA8L2Rpdj4KIDxocj4KIDxkaXYgY2xhc3M9InJlZnNlY3QyIj4KLTxhIG5hbWU9ImlkLTEuMi44NS43LjIuMiI+PC9hPjxoMz5FbGVtZW50IFBhZHM8L2gzPgorPGEgbmFtZT0iaWQtMS4yLjgwLjcuMi4yIj48L2E+PGgzPkVsZW1lbnQgUGFkczwvaDM+CiA8ZGl2IGNsYXNzPSJ2YXJpYWJsZWxpc3QiPjx0YWJsZSBib3JkZXI9IjAiIGNsYXNzPSJ2YXJpYWJsZWxpc3QiPgogPGNvbGdyb3VwPgogPGNvbCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvaW5kZXguaHRtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2luZGV4Lmh0bWwKaW5kZXggZmE3MjI5Ny4uZGFkNmEyZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvaW5kZXguaHRtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9pbmRleC5odG1sCkBAIC0zLDcgKzMsNyBAQAogPGhlYWQ+CiA8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1VVEYtOCI+CiA8dGl0bGU+R1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWw6IEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC90aXRsZT4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzguMSI+Cis8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc5LjEiPgogPGxpbmsgcmVsPSJob21lIiBocmVmPSJpbmRleC5odG1sIiB0aXRsZT0iR1N0cmVhbWVyIEJhZCBQbHVnaW5zIDEuMCBQbHVnaW5zIFJlZmVyZW5jZSBNYW51YWwiPgogPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJjaDAxLmh0bWwiIHRpdGxlPSJnc3QtcGx1Z2lucy1iYWQgRWxlbWVudHMiPgogPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJHVEstRG9jIFYxLjI0IChYTUwgbW9kZSkiPgpAQCAtMTUsNyArMTUsNyBAQAogPGRpdj4KIDxkaXY+PHRhYmxlIGNsYXNzPSJuYXZpZ2F0aW9uIiBpZD0idG9wIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjIiIGNlbGxzcGFjaW5nPSIwIj48dHI+PHRoIHZhbGlnbj0ibWlkZGxlIj48cCBjbGFzcz0idGl0bGUiPkdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgUGx1Z2lucyBSZWZlcmVuY2UgTWFudWFsPC9wPjwvdGg+PC90cj48L3RhYmxlPjwvZGl2PgogPGRpdj48cCBjbGFzcz0icmVsZWFzZWluZm8iPgotICAgICAgZm9yIEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgKDEuNi4zKQorICAgICAgZm9yIEdTdHJlYW1lciBCYWQgUGx1Z2lucyAxLjAgKDEuNy45MSkKICAgICAgIFRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGlzIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIG9uLWxpbmUgYXQKICAgICAgIDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9kb2MvZ3N0cmVhbWVyL2hlYWQvZ3N0LXBsdWdpbnMtYmFkL2h0bWwvIiB0YXJnZXQ9Il90b3AiPmh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL2RhdGEvZG9jL2dzdHJlYW1lci9oZWFkL2dzdC1wbHVnaW5zLWJhZC9odG1sLzwvYT4uCiAgICAgPC9wPjwvZGl2PgpAQCAtMzgsNiArMzgsOSBAQAogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWFzc3JlbmRlci5odG1sIj5hc3NyZW5kZXI8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgorPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sIj5hdWRpb2ludGVybGVhdmU8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Cis8L2R0PgorPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCI+YXVkaW9taXhlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0xNzYsOSArMTc5LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sIj5tcGxleDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCI+bXBnMTIzYXVkaW9kZWM8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLmh0bWwiPm5lb25odHRwc3JjPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgogPC9kdD4KIDxkdD4KQEAgLTE5MSwyMSArMTkxLDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmh0bWwiPm9wZW5hbHNpbms8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCI+b3B1c2RlYzwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPjwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+Ci08c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sIj5vcHVzZW5jPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCI+b3B1c3BhcnNlPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+PC9zcGFuPgotPC9kdD4KLTxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwiPnJ0cG9wdXNwYXk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgotPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sIj5ydHBvcHVzZGVwYXk8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+Ci08L2R0PgotPGR0PgogPHNwYW4gY2xhc3M9InJlZmVudHJ5dGl0bGUiPjxhIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sIj5wY2FwcGFyc2U8L2E+PC9zcGFuPjxzcGFuIGNsYXNzPSJyZWZwdXJwb3NlIj48L3NwYW4+CiA8L2R0PgogPGR0PgpAQCAtMzU5LDkgKzM0NCw2IEBACiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLWpwZWdmb3JtYXQuaHRtbCI+anBlZ2Zvcm1hdDwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgSlBFRyBpbnRlcmNoYW5nZSBmb3JtYXQgcGx1Z2luPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbGl2ZWFkZGVyLmh0bWwiPmxpdmVhZGRlcjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgQWRkcyBtdWx0aXBsZSBsaXZlIGRpc2NvbnRpbnVvdXMgc3RyZWFtczwvc3Bhbj4KLTwvZHQ+Ci08ZHQ+CiA8c3BhbiBjbGFzcz0icmVmZW50cnl0aXRsZSI+PGEgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1pbWljLmh0bWwiPm1pbWljPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBNaW1pYyBjb2RlYzwvc3Bhbj4KIDwvZHQ+CiA8ZHQ+CkBAIC0zOTUsOSArMzc3LDYgQEAKIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3BlbmN2Lmh0bWwiPm9wZW5jdjwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgR1N0cmVhbWVyIE9wZW5DViBQbHVnaW5zPC9zcGFuPgogPC9kdD4KIDxkdD4KLTxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sIj5vcHVzPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0icmVmcHVycG9zZSI+IOKAlCBPUFVTIHBsdWdpbiBsaWJyYXJ5PC9zcGFuPgotPC9kdD4KLTxkdD4KIDxzcGFuIGNsYXNzPSJyZWZlbnRyeXRpdGxlIj48YSBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwiPnBjYXBwYXJzZTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InJlZnB1cnBvc2UiPiDigJQgRWxlbWVudCBwYXJzaW5nIHJhdyBwY2FwIHN0cmVhbXM8L3NwYW4+CiA8L2R0PgogPGR0PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2h0bWwvaW5kZXguc2dtbCBiL2RvY3MvcGx1Z2lucy9odG1sL2luZGV4LnNnbWwKaW5kZXggZTk5NDU4Ny4uMDEwMmNmMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2h0bWwvaW5kZXguc2dtbAorKysgYi9kb2NzL3BsdWdpbnMvaHRtbC9pbmRleC5zZ21sCkBAIC00MCw2ICs0MCwxOSBAQAogPEFOQ0hPUiBpZD0iR3N0QXNzUmVuZGVyLS1lbWJlZGRlZGZvbnRzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwjR3N0QXNzUmVuZGVyLS1lbWJlZGRlZGZvbnRzIj4KIDxBTkNIT1IgaWQ9IkdzdEFzc1JlbmRlci0tZW5hYmxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXNzcmVuZGVyLmh0bWwjR3N0QXNzUmVuZGVyLS1lbmFibGUiPgogPEFOQ0hPUiBpZD0iR3N0QXNzUmVuZGVyLS13YWl0LXRleHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hc3NyZW5kZXIuaHRtbCNHc3RBc3NSZW5kZXItLXdhaXQtdGV4dCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5wcm9wZXJ0aWVzIj4KKzxBTkNIT1IgaWQ9IkdzdEF1ZGlvSW50ZXJsZWF2ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub3RoZXIiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub2JqZWN0LWhpZXJhcmNoeSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaW1wbGVtZW50ZWQtaW50ZXJmYWNlcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5pbXBsZW1lbnRlZC1pbnRlcmZhY2VzIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5kZXNjcmlwdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuZnVuY3Rpb25zX2RldGFpbHMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUub3RoZXJfZGV0YWlscyI+Cis8QU5DSE9SIGlkPSJHc3RBdWRpb0ludGVybGVhdmUtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9pbnRlcmxlYXZlLmh0bWwjR3N0QXVkaW9JbnRlcmxlYXZlLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5wcm9wZXJ0eS1kZXRhaWxzIj4KKzxBTkNIT1IgaWQ9IkdzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb2ludGVybGVhdmUuaHRtbCNHc3RBdWRpb0ludGVybGVhdmUtLWNoYW5uZWwtcG9zaXRpb25zIj4KKzxBTkNIT1IgaWQ9IkdzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvaW50ZXJsZWF2ZS5odG1sI0dzdEF1ZGlvSW50ZXJsZWF2ZS0tY2hhbm5lbC1wb3NpdGlvbnMtZnJvbS1pbnB1dCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYXVkaW9taXhlci5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1hdWRpb21peGVyLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0QXVkaW9NaXhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWF1ZGlvbWl4ZXIuaHRtbCNHc3RBdWRpb01peGVyIj4KQEAgLTg2LDYgKzk5LDcgQEAKIDxBTkNIT1IgaWQ9IkdzdEJ1bGdlLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLmh0bWwjR3N0QnVsZ2Utc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0QnVsZ2UtLXpvb20iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5odG1sI0dzdEJ1bGdlLS16b29tIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1bGdlLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVsZ2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idWxnZS5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtYnVybi5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4ucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4uaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1idXJuLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0QnVybiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWJ1cm4uaHRtbCNHc3RCdXJuIj4KQEAgLTEyNiw2ICsxNDAsNyBAQAogPEFOQ0hPUiBpZD0iR3N0Q2lyY2xlLS1hbmdsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5odG1sI0dzdENpcmNsZS0tYW5nbGUiPgogPEFOQ0hPUiBpZD0iR3N0Q2lyY2xlLS1oZWlnaHQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jaXJjbGUuaHRtbCNHc3RDaXJjbGUtLWhlaWdodCI+CiA8QU5DSE9SIGlkPSJHc3RDaXJjbGUtLXNwcmVhZC1hbmdsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5odG1sI0dzdENpcmNsZS0tc3ByZWFkLWFuZ2xlIj4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNpcmNsZS5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jb2xvcmVmZmVjdHMucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdENvbG9yRWZmZWN0cyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbG9yZWZmZWN0cy5odG1sI0dzdENvbG9yRWZmZWN0cyI+CkBAIC0xNDgsNDkgKzE2Myw0MiBAQAogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWNvbXBvc2l0b3IucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RDb21wb3NpdG9yLS1iYWNrZ3JvdW5kIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY29tcG9zaXRvci5odG1sI0dzdENvbXBvc2l0b3ItLWJhY2tncm91bmQiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sIj4KLTxBTkNIT1IgaWQ9IkdzdEN2RGlsYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNHc3RDdkRpbGF0ZSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUub2JqZWN0LWhpZXJhcmNoeSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZGlsYXRlLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZEaWxhdGUtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZkaWxhdGUuaHRtbCNHc3RDdkRpbGF0ZS1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0Q3ZEaWxhdGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmRpbGF0ZS5odG1sI0dzdEN2RGlsYXRlIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZFcm9kZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNHc3RDdkVyb2RlIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVyb2RlLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RDdkVyb2RlLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXJvZGUuaHRtbCNHc3RDdkVyb2RlLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RDdkVyb2RlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zlcm9kZS5odG1sI0dzdEN2RXJvZGUiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sIj4KLTxBTkNIT1IgaWQ9IkdzdEN2RXF1YWxpemVIaXN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNHc3RDdkVxdWFsaXplSGlzdCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3Qub2JqZWN0LWhpZXJhcmNoeSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0LmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2ZXF1YWxpemVoaXN0Lm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZFcXVhbGl6ZUhpc3Qtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZlcXVhbGl6ZWhpc3QuaHRtbCNHc3RDdkVxdWFsaXplSGlzdC1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0Q3ZFcXVhbGl6ZUhpc3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmVxdWFsaXplaGlzdC5odG1sI0dzdEN2RXF1YWxpemVIaXN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZMYXBsYWNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2Uub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2Uub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RDdkxhcGxhY2Utc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RDdkxhcGxhY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RDdkxhcGxhY2UtLWFwZXJ0dXJlLXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdmxhcGxhY2UuaHRtbCNHc3RDdkxhcGxhY2UtLWFwZXJ0dXJlLXNpemUiPgorPEFOQ0hPUiBpZD0iR3N0Q3ZMYXBsYWNlLS1zY2FsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tc2NhbGUiPgorPEFOQ0hPUiBpZD0iR3N0Q3ZMYXBsYWNlLS1zaGlmdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2bGFwbGFjZS5odG1sI0dzdEN2TGFwbGFjZS0tc2hpZnQiPgorPEFOQ0hPUiBpZD0iR3N0Q3ZMYXBsYWNlLS1tYXNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZsYXBsYWNlLmh0bWwjR3N0Q3ZMYXBsYWNlLS1tYXNrIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5wcm9wZXJ0aWVzIj4KLTxBTkNIT1IgaWQ9IkdzdEN2U21vb3RoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGgub2JqZWN0LWhpZXJhcmNoeSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZTbW9vdGgtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0Q3ZTbW9vdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0Q3ZTbW9vdGgtLXBhcmFtMSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c21vb3RoLmh0bWwjR3N0Q3ZTbW9vdGgtLXBhcmFtMSI+CiA8QU5DSE9SIGlkPSJHc3RDdlNtb290aC0tcGFyYW0yIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3ZzbW9vdGguaHRtbCNHc3RDdlNtb290aC0tcGFyYW0yIj4KQEAgLTIwMywxNyArMjExLDE2IEBACiA8QU5DSE9SIGlkPSJHc3RDdlNtb290aC0td2lkdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNtb290aC5odG1sI0dzdEN2U21vb3RoLS13aWR0aCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0Q3ZTb2JlbCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RDdlNvYmVsLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJHc3RDdlNvYmVsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RDdlNvYmVsLS1hcGVydHVyZS1zaXplIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtLWFwZXJ0dXJlLXNpemUiPgogPEFOQ0hPUiBpZD0iR3N0Q3ZTb2JlbC0teC1vcmRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWN2c29iZWwuaHRtbCNHc3RDdlNvYmVsLS14LW9yZGVyIj4KIDxBTkNIT1IgaWQ9IkdzdEN2U29iZWwtLXktb3JkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1jdnNvYmVsLmh0bWwjR3N0Q3ZTb2JlbC0teS1vcmRlciI+Cis8QU5DSE9SIGlkPSJHc3RDdlNvYmVsLS1tYXNrIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtY3Zzb2JlbC5odG1sI0dzdEN2U29iZWwtLW1hc2siPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRhdGF1cmlzcmMuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGF0YXVyaXNyYy5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdERhdGFVUklTcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kYXRhdXJpc3JjLmh0bWwjR3N0RGF0YVVSSVNyYyI+CkBAIC0yMzcsNiArMjQ0LDcgQEAKIDxBTkNIT1IgaWQ9IkdzdERpZmZ1c2Utc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5odG1sI0dzdERpZmZ1c2Utc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0RGlmZnVzZS0tc2NhbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLmh0bWwjR3N0RGlmZnVzZS0tc2NhbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlmZnVzZS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpZmZ1c2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1kaWZmdXNlLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpbGF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpbGF0ZS5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWRpbGF0ZS5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0RGlsYXRlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZGlsYXRlLmh0bWwjR3N0RGlsYXRlIj4KQEAgLTQyMCw2ICs0MjgsNyBAQAogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLm90aGVyX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0RmlzaGV5ZS1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLmh0bWwjR3N0RmlzaGV5ZS1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZmlzaGV5ZS5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZpc2hleWUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1maXNoZXllLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtZnBzZGlzcGxheXNpbmsuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLnNpZ25hbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1mcHNkaXNwbGF5c2luay5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWZwc2Rpc3BsYXlzaW5rLnNpZ25hbHMiPgpAQCAtNDc4LDE4ICs0ODcsMTEgQEAKIDxBTkNIT1IgaWQ9IkdzdEthbGVpZG9zY29wZS0tYW5nbGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1rYWxlaWRvc2NvcGUuaHRtbCNHc3RLYWxlaWRvc2NvcGUtLWFuZ2xlIj4KIDxBTkNIT1IgaWQ9IkdzdEthbGVpZG9zY29wZS0tYW5nbGUyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwjR3N0S2FsZWlkb3Njb3BlLS1hbmdsZTIiPgogPEFOQ0hPUiBpZD0iR3N0S2FsZWlkb3Njb3BlLS1zaWRlcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWthbGVpZG9zY29wZS5odG1sI0dzdEthbGVpZG9zY29wZS0tc2lkZXMiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLnNlZS1hbHNvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMta2FsZWlkb3Njb3BlLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0TGl2ZUFkZGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjR3N0TGl2ZUFkZGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5vYmplY3QtaGllcmFyY2h5Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5kZXNjcmlwdGlvbiI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RMaXZlQWRkZXItc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbGl2ZWFkZGVyLmh0bWwjR3N0TGl2ZUFkZGVyLXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5wcm9wZXJ0eS1kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdExpdmVBZGRlci0tbGF0ZW5jeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLWxpdmVhZGRlci5odG1sI0dzdExpdmVBZGRlci0tbGF0ZW5jeSI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1saXZlYWRkZXIuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RNYXJibGUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCNHc3RNYXJibGUiPgpAQCAtNTA0LDYgKzUwNiw3IEBACiA8QU5DSE9SIGlkPSJHc3RNYXJibGUtLXR1cmJ1bGVuY2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCNHc3RNYXJibGUtLXR1cmJ1bGVuY2UiPgogPEFOQ0hPUiBpZD0iR3N0TWFyYmxlLS14LXNjYWxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWFyYmxlLmh0bWwjR3N0TWFyYmxlLS14LXNjYWxlIj4KIDxBTkNIT1IgaWQ9IkdzdE1hcmJsZS0teS1zY2FsZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1hcmJsZS5odG1sI0dzdE1hcmJsZS0teS1zY2FsZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tYXJibGUuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZW5jIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZW5jLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWltZW5jLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RNaW1FbmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taW1lbmMuaHRtbCNHc3RNaW1FbmMiPgpAQCAtNTM0LDYgKzUzNyw3IEBACiA8QU5DSE9SIGlkPSJHc3RNaXJyb3Itc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbWlycm9yLmh0bWwjR3N0TWlycm9yLXN0cnVjdCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5wcm9wZXJ0eS1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdE1pcnJvci0tbW9kZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1pcnJvci5odG1sI0dzdE1pcnJvci0tbW9kZSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3Iuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3IuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1taXJyb3Iuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1ZyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1vZHBsdWcuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbW9kcGx1Zy5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdE1vZFBsdWciIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tb2RwbHVnLmh0bWwjR3N0TW9kUGx1ZyI+CkBAIC02NDEsMTQgKzY0NSw2IEBACiA8QU5DSE9SIGlkPSJHc3RNcGxleC0tc2VjdG9yLXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sI0dzdE1wbGV4LS1zZWN0b3Itc2l6ZSI+CiA8QU5DSE9SIGlkPSJHc3RNcGxleC0tc3lzdGVtLWhlYWRlcnMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGxleC5odG1sI0dzdE1wbGV4LS1zeXN0ZW0taGVhZGVycyI+CiA8QU5DSE9SIGlkPSJHc3RNcGxleC0tdmJyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBsZXguaHRtbCNHc3RNcGxleC0tdmJyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCI+Ci08QU5DSE9SIGlkPSJHc3RNcGcxMjNBdWRpb0RlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwjR3N0TXBnMTIzQXVkaW9EZWMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLm9iamVjdC1oaWVyYXJjaHkiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmRlc2NyaXB0aW9uIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5mdW5jdGlvbnNfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbXBnMTIzYXVkaW9kZWMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1tcGcxMjNhdWRpb2RlYy5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdE1wZzEyM0F1ZGlvRGVjLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW1wZzEyM2F1ZGlvZGVjLmh0bWwjR3N0TXBnMTIzQXVkaW9EZWMtc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW5lb25odHRwc3JjLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtbmVvbmh0dHBzcmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1uZW9uaHR0cHNyYy5vdGhlciI+CkBAIC02OTksODUgKzY5NSw2IEBACiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmFsc2luay5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5hbHNpbmsuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuYWxzaW5rLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5wcm9wZXJ0aWVzIj4KLTxBTkNIT1IgaWQ9IkdzdE9wZW5hbFNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcGVuYWxTcmMiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXkiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0RlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRGVjLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjLXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2RlYy5wcm9wZXJ0eS1kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNEZWMtLWFwcGx5LWdhaW4iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZGVjLmh0bWwjR3N0T3B1c0RlYy0tYXBwbHktZ2FpbiI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRGVjLS11c2UtaW5iYW5kLWZlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNkZWMuaHRtbCNHc3RPcHVzRGVjLS11c2UtaW5iYW5kLWZlYyI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLnByb3BlcnRpZXMiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmFsU3JjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wZW5hbFNyYyI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNEZWMiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5wcm9wZXJ0eS1kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLWF1ZGlvIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWF1ZGlvIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLWJhbmR3aWR0aCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1iYW5kd2lkdGgiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tYml0cmF0ZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1iaXRyYXRlIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLWNiciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1jYnIiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tY29tcGxleGl0eSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1jb21wbGV4aXR5Ij4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLWNvbnN0cmFpbmVkLXZiciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1jb25zdHJhaW5lZC12YnIiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tZHR4IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWR0eCI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLS1mcmFtZS1zaXplIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLWZyYW1lLXNpemUiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0taW5iYW5kLWZlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1pbmJhbmQtZmVjIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLW1heC1wYXlsb2FkLXNpemUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzZW5jLmh0bWwjR3N0T3B1c0VuYy0tbWF4LXBheWxvYWQtc2l6ZSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jLS1wYWNrZXQtbG9zcy1wZXJjZW50YWdlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c2VuYy5odG1sI0dzdE9wdXNFbmMtLXBhY2tldC1sb3NzLXBlcmNlbnRhZ2UiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYy0tYXVkaW8tdHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1hdWRpby10eXBlIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMtLWJpdHJhdGUtdHlwZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNlbmMuaHRtbCNHc3RPcHVzRW5jLS1iaXRyYXRlLXR5cGUiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmFsU3JjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3BlbmFsU3JjIj4KLTxBTkNIT1IgaWQ9IkdzdE9wZW5jdlRleHRPdmVybGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXkiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0RlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sI0dzdE9wdXNEZWMiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0VuYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sI0dzdE9wdXNFbmMiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c1BhcnNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3B1c1BhcnNlIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2Uub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wdXNwYXJzZS5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2UuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcHVzcGFyc2Uub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzUGFyc2Utc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3B1c3BhcnNlLmh0bWwjR3N0T3B1c1BhcnNlLXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sIj4KLTxBTkNIT1IgaWQ9IkdzdE9wZW5hbFNyYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RPcGVuYWxTcmMiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXkiPgotPEFOQ0hPUiBpZD0iR3N0T3B1c0RlYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RPcHVzRGVjIj4KLTxBTkNIT1IgaWQ9IkdzdE9wdXNFbmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjR3N0T3B1c0VuYyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzUGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjR3N0T3B1c1BhcnNlIj4KLTxBTkNIT1IgaWQ9IkdzdFJUUE9wdXNEZXBheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RSVFBPcHVzRGVwYXkiPgotPEFOQ0hPUiBpZD0iR3N0UnRwT1BVU1BheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RSdHBPUFVTUGF5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzcGF5LmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c3BheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RSdHBPUFVTUGF5LXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNwYXkuaHRtbCNHc3RSdHBPUFVTUGF5LXN0cnVjdCI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuYWxTcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RPcGVuYWxTcmMiPgotPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRGVjIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjR3N0T3B1c0RlYyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzRW5jIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjR3N0T3B1c0VuYyI+Ci08QU5DSE9SIGlkPSJHc3RPcHVzUGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNHc3RPcHVzUGFyc2UiPgotPEFOQ0hPUiBpZD0iR3N0UlRQT3B1c0RlcGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjR3N0UlRQT3B1c0RlcGF5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5vdGhlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5vdGhlciI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkub2JqZWN0LWhpZXJhcmNoeSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5vYmplY3QtaGllcmFyY2h5Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXJ0cG9wdXNkZXBheS5kZXNjcmlwdGlvbiI+Ci08QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuZnVuY3Rpb25zX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1ydHBvcHVzZGVwYXkub3RoZXJfZGV0YWlscyI+Ci08QU5DSE9SIGlkPSJHc3RSVFBPcHVzRGVwYXktc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcnRwb3B1c2RlcGF5Lmh0bWwjR3N0UlRQT3B1c0RlcGF5LXN0cnVjdCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wY2FwcGFyc2UucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdFBjYXBQYXJzZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBjYXBwYXJzZS5odG1sI0dzdFBjYXBQYXJzZSI+CkBAIC04MDUsNiArNzIyLDcgQEAKIDxBTkNIT1IgaWQ9IkdzdFBpbmNoLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwjR3N0UGluY2gtc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0UGluY2gtLWludGVuc2l0eSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwjR3N0UGluY2gtLWludGVuc2l0eSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1waW5jaC5zZWUtYWxzbyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBpbmNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGluY2guc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcHlyYW1pZHNlZ21lbnQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5odG1sIj4KIDxBTkNIT1IgaWQ9IkdzdFBpbmNoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcHlyYW1pZHNlZ21lbnQuaHRtbCNHc3RQaW5jaCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1weXJhbWlkc2VnbWVudC5kZXNjcmlwdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXB5cmFtaWRzZWdtZW50Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcHlyYW1pZHNlZ21lbnQuZGVzY3JpcHRpb24iPgpAQCAtOTY5LDYgKzg4Nyw3IEBACiA8QU5DSE9SIGlkPSJHc3RTcGhlcmUtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3BoZXJlLmh0bWwjR3N0U3BoZXJlLXN0cnVjdCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5wcm9wZXJ0eS1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdFNwaGVyZS0tcmVmcmFjdGlvbiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNwaGVyZS5odG1sI0dzdFNwaGVyZS0tcmVmcmFjdGlvbiI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcGhlcmUuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3F1YXJlLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RTcXVhcmUiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCNHc3RTcXVhcmUiPgpAQCAtOTgyLDYgKzkwMSw3IEBACiA8QU5DSE9SIGlkPSJHc3RTcXVhcmUtLWhlaWdodCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sI0dzdFNxdWFyZS0taGVpZ2h0Ij4KIDxBTkNIT1IgaWQ9IkdzdFNxdWFyZS0td2lkdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCNHc3RTcXVhcmUtLXdpZHRoIj4KIDxBTkNIT1IgaWQ9IkdzdFNxdWFyZS0tem9vbSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXNxdWFyZS5odG1sI0dzdFNxdWFyZS0tem9vbSI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zcXVhcmUuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdFN0cmV0Y2giIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjR3N0U3RyZXRjaCI+CkBAIC05OTMsMTYgKzkxMywxNSBAQAogPEFOQ0hPUiBpZD0iR3N0U3RyZXRjaC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjR3N0U3RyZXRjaC1zdHJ1Y3QiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2gucHJvcGVydHktZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RTdHJldGNoLS1pbnRlbnNpdHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjR3N0U3RyZXRjaC0taW50ZW5zaXR5Ij4KKzxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXN0cmV0Y2guc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1zdHJldGNoLmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtc3RyZXRjaC5zZWUtYWxzbyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0U3luYWVTY29wZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RTeW5hZVNjb3BlIj4KLTxBTkNIT1IgaWQ9IkdzdFRlbXBsYXRlTWF0Y2giIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjR3N0VGVtcGxhdGVNYXRjaCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLm90aGVyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub3RoZXIiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5vYmplY3QtaGllcmFyY2h5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub2JqZWN0LWhpZXJhcmNoeSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmRlc2NyaXB0aW9uIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guZGVzY3JpcHRpb24iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdGVtcGxhdGVtYXRjaC5mdW5jdGlvbnNfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmZ1bmN0aW9uc19kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gub3RoZXJfZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLm90aGVyX2RldGFpbHMiPgotPEFOQ0hPUiBpZD0iR3N0VGVtcGxhdGVNYXRjaC1zdHJ1Y3QiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLmh0bWwjR3N0VGVtcGxhdGVNYXRjaC1zdHJ1Y3QiPgorPEFOQ0hPUiBpZD0iR3N0VGVtcGxhdGVNYXRjaCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2gucHJvcGVydHktZGV0YWlscyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10ZW1wbGF0ZW1hdGNoLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0VGVtcGxhdGVNYXRjaC0tZGlzcGxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoLS1kaXNwbGF5Ij4KIDxBTkNIT1IgaWQ9IkdzdFRlbXBsYXRlTWF0Y2gtLW1ldGhvZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXRlbXBsYXRlbWF0Y2guaHRtbCNHc3RUZW1wbGF0ZU1hdGNoLS1tZXRob2QiPgpAQCAtMTAxMCwxMyArOTI5LDExIEBACiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkucHJvcGVydGllcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RPcGVuYWxTcmMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI0dzdE9wZW5hbFNyYyI+Ci08QU5DSE9SIGlkPSJHc3RPcGVuY3ZUZXh0T3ZlcmxheSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXkiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkub3RoZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lm90aGVyIj4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lm9iamVjdC1oaWVyYXJjaHkiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lm9iamVjdC1oaWVyYXJjaHkiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuZGVzY3JpcHRpb24iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LmRlc2NyaXB0aW9uIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5LmZ1bmN0aW9uc19kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5mdW5jdGlvbnNfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5vdGhlcl9kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5vdGhlcl9kZXRhaWxzIj4KLTxBTkNIT1IgaWQ9IkdzdE9wZW5jdlRleHRPdmVybGF5LXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXktc3RydWN0Ij4KKzxBTkNIT1IgaWQ9IkdzdE9wZW5jdlRleHRPdmVybGF5IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNHc3RPcGVuY3ZUZXh0T3ZlcmxheSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5wcm9wZXJ0eS1kZXRhaWxzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtb3BlbmN2dGV4dG92ZXJsYXkuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5wcm9wZXJ0eS1kZXRhaWxzIj4KIDxBTkNIT1IgaWQ9IkdzdE9wZW5jdlRleHRPdmVybGF5LS1jb2xvckIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1vcGVuY3Z0ZXh0b3ZlcmxheS5odG1sI0dzdE9wZW5jdlRleHRPdmVybGF5LS1jb2xvckIiPgogPEFOQ0hPUiBpZD0iR3N0T3BlbmN2VGV4dE92ZXJsYXktLWNvbG9yRyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLW9wZW5jdnRleHRvdmVybGF5Lmh0bWwjR3N0T3BlbmN2VGV4dE92ZXJsYXktLWNvbG9yRyI+CkBAIC0xMDM1LDYgKzk1Miw3IEBACiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuZnVuY3Rpb25zX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuZnVuY3Rpb25zX2RldGFpbHMiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHVubmVsLm90aGVyX2RldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwub3RoZXJfZGV0YWlscyI+CiA8QU5DSE9SIGlkPSJHc3RUdW5uZWwtc3RydWN0IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHVubmVsLmh0bWwjR3N0VHVubmVsLXN0cnVjdCI+Cis8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10dW5uZWwuc2VlLWFsc28iPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLnByb3BlcnRpZXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLnByb3BlcnRpZXMiPgogPEFOQ0hPUiBpZD0iR3N0VHdpcmwiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sI0dzdFR3aXJsIj4KQEAgLTEwNDYsNiArOTY0LDcgQEAKIDxBTkNIT1IgaWQ9IkdzdFR3aXJsLXN0cnVjdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLmh0bWwjR3N0VHdpcmwtc3RydWN0Ij4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLnByb3BlcnR5LWRldGFpbHMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLnByb3BlcnR5LWRldGFpbHMiPgogPEFOQ0hPUiBpZD0iR3N0VHdpcmwtLWFuZ2xlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuaHRtbCNHc3RUd2lybC0tYW5nbGUiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdHdpcmwuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy10d2lybC5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXR3aXJsLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RWaWRlb1BhcnNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UiPgpAQCAtMTA3MCw2ICs5ODksOSBAQAogPEFOQ0hPUiBpZD0iR3N0VmlkZW9QYXJzZS0td2lkdGgiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy12aWRlb3BhcnNlLmh0bWwjR3N0VmlkZW9QYXJzZS0td2lkdGgiPgogPEFOQ0hPUiBpZD0iR3N0VmlkZW9QYXJzZS0taW50ZXJsYWNlZCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS1pbnRlcmxhY2VkIj4KIDxBTkNIT1IgaWQ9IkdzdFZpZGVvUGFyc2UtLXRvcC1maWVsZC1maXJzdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS10b3AtZmllbGQtZmlyc3QiPgorPEFOQ0hPUiBpZD0iR3N0VmlkZW9QYXJzZS0tZnJhbWVzaXplIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLWZyYW1lc2l6ZSI+Cis8QU5DSE9SIGlkPSJHc3RWaWRlb1BhcnNlLS1vZmZzZXRzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtdmlkZW9wYXJzZS5odG1sI0dzdFZpZGVvUGFyc2UtLW9mZnNldHMiPgorPEFOQ0hPUiBpZD0iR3N0VmlkZW9QYXJzZS0tc3RyaWRlcyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXZpZGVvcGFyc2UuaHRtbCNHc3RWaWRlb1BhcnNlLS1zdHJpZGVzIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCNnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5wcm9wZXJ0aWVzIj4KIDxBTkNIT1IgaWQ9IkdzdFdhdGVyUmlwcGxlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuaHRtbCNHc3RXYXRlclJpcHBsZSI+CkBAIC0xMDgzLDYgKzEwMDUsNyBAQAogPEFOQ0hPUiBpZD0iR3N0V2F0ZXJSaXBwbGUtLWFtcGxpdHVkZSIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwjR3N0V2F0ZXJSaXBwbGUtLWFtcGxpdHVkZSI+CiA8QU5DSE9SIGlkPSJHc3RXYXRlclJpcHBsZS0tcGhhc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sI0dzdFdhdGVyUmlwcGxlLS1waGFzZSI+CiA8QU5DSE9SIGlkPSJHc3RXYXRlclJpcHBsZS0td2F2ZWxlbmd0aCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLmh0bWwjR3N0V2F0ZXJSaXBwbGUtLXdhdmVsZW5ndGgiPgorPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtd2F0ZXJyaXBwbGUuc2VlLWFsc28iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy13YXRlcnJpcHBsZS5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXdhdGVycmlwcGxlLnNlZS1hbHNvIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy16YmFyLmh0bWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5wcm9wZXJ0aWVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5odG1sI2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXpiYXIucHJvcGVydGllcyI+CiA8QU5DSE9SIGlkPSJHc3RaQmFyIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtemJhci5odG1sI0dzdFpCYXIiPgpAQCAtMTE3MCw4ICsxMDkzLDYgQEAKIDxBTkNIT1IgaWQ9InBsdWdpbi1nc20iIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tZ3NtLmh0bWwjcGx1Z2luLWdzbSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdCIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1qcGVnZm9ybWF0Lmh0bWwiPgogPEFOQ0hPUiBpZD0icGx1Z2luLWpwZWdmb3JtYXQiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tanBlZ2Zvcm1hdC5odG1sI3BsdWdpbi1qcGVnZm9ybWF0Ij4KLTxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbGl2ZWFkZGVyLmh0bWwiPgotPEFOQ0hPUiBpZD0icGx1Z2luLWxpdmVhZGRlciIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1saXZlYWRkZXIuaHRtbCNwbHVnaW4tbGl2ZWFkZGVyIj4KIDxBTkNIT1IgaWQ9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sIj4KIDxBTkNIT1IgaWQ9InBsdWdpbi1taW1pYyIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1taW1pYy5odG1sI3BsdWdpbi1taW1pYyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tbW1zIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW1tcy5odG1sIj4KQEAgLTExOTQsOCArMTExNSw2IEBACiA8QU5DSE9SIGlkPSJwbHVnaW4tb3BlbmFsIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5hbC5odG1sI3BsdWdpbi1vcGVuYWwiPgogPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdiIgaHJlZj0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtMS4wL2dzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLXBsdWdpbi1vcGVuY3YuaHRtbCI+CiA8QU5DSE9SIGlkPSJwbHVnaW4tb3BlbmN2IiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wZW5jdi5odG1sI3BsdWdpbi1vcGVuY3YiPgotPEFOQ0hPUiBpZD0iZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tb3B1cy5odG1sIj4KLTxBTkNIT1IgaWQ9InBsdWdpbi1vcHVzIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLW9wdXMuaHRtbCNwbHVnaW4tb3B1cyI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlIiBocmVmPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy0xLjAvZ3N0LXBsdWdpbnMtYmFkLXBsdWdpbnMtcGx1Z2luLXBjYXBwYXJzZS5odG1sIj4KIDxBTkNIT1IgaWQ9InBsdWdpbi1wY2FwcGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcGNhcHBhcnNlLmh0bWwjcGx1Z2luLXBjYXBwYXJzZSI+CiA8QU5DSE9SIGlkPSJnc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UiIGhyZWY9ImdzdC1wbHVnaW5zLWJhZC1wbHVnaW5zLTEuMC9nc3QtcGx1Z2lucy1iYWQtcGx1Z2lucy1wbHVnaW4tcmF3cGFyc2UuaHRtbCI+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWNjdXJpcC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWNjdXJpcC54bWwKaW5kZXggOWY1NTdiNi4uNGQxYzdlNSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFjY3VyaXAueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hY2N1cmlwLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkNvbXB1dGVzIGFuIEFjY3VyYXRlUmlwIENSQzwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYWNjdXJpcC8ubGlicy9saWJnc3RhY2N1cmlwLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGFjY3VyaXAuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZGVjLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWRlYy54bWwKaW5kZXggNTEzODIyYy4uYTM2NzEzYyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZGVjLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21kZWMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+QURQQ00gZGVjb2RlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYWRwY21kZWMvLmxpYnMvbGliZ3N0YWRwY21kZWMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YWRwY21kZWMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZW5jLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hZHBjbWVuYy54bWwKaW5kZXggMTBhOWJhOC4uYjM4NGE4ZSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFkcGNtZW5jLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWRwY21lbmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+QURQQ00gZW5jb2RlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYWRwY21lbmMvLmxpYnMvbGliZ3N0YWRwY21lbmMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YWRwY21lbmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFpZmYueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFpZmYueG1sCmluZGV4IDQzZDlmYWIuLjJkZjI3ODggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1haWZmLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYWlmZi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5DcmVhdGUgYW5kIHBhcnNlIEF1ZGlvIEludGVyY2hhbmdlIEZpbGUgRm9ybWF0IChBSUZGKSBmaWxlczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYWlmZi8ubGlicy9saWJnc3RhaWZmLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGFpZmYuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFuZHJvaWRjYW1lcmEueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFuZHJvaWRjYW1lcmEueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM5NDE3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYW5kcm9pZGNhbWVyYS54bWwKQEAgLTAsMCArMSwyOCBAQAorPHBsdWdpbj4KKyAgPG5hbWU+YW5kcm9pZGNhbWVyYTwvbmFtZT4KKyAgPGRlc2NyaXB0aW9uPkNhcHR1cmUgZnJvbSBBbmRyb2lkIGNhbWVyYXM8L2Rlc2NyaXB0aW9uPgorICA8ZmlsZW5hbWU+Li4vLi4vc3lzL2FuZHJvaWRjYW1lcmEvLmxpYnMvbGliZ3N0YW5kcm9pZGNhbWVyYS5zbzwvZmlsZW5hbWU+CisgIDxiYXNlbmFtZT5saWJnc3RhbmRyb2lkY2FtZXJhLnNvPC9iYXNlbmFtZT4KKyAgPHZlcnNpb24+MC4xMC4yMi4xPC92ZXJzaW9uPgorICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgorICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgorICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIGdpdDwvcGFja2FnZT4KKyAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+CisgIDxlbGVtZW50cz4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPmFoY3NyYzwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5BbmRyb2lkIENhbWVyYSBTb3VyY2U8L2xvbmduYW1lPgorICAgICAgPGNsYXNzPlNvdXJjZS9WaWRlbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+UmVhZHMgZnJhbWVzIGZyb20gYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEgY2xhc3MgaW50byBidWZmZXJzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+WW91bmVzcyBBbGFvdWkgJmx0O3lvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdy15dXYsIGZvcm1hdD0oZm91cmNjKSB7IFlWMTIgLCBZVVkyICwgTlYyMSAsIE5WMTYgfSwgd2lkdGg9KGludCkgWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KSBbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbikgWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdy1yZ2IsIGJwcD0oaW50KTE2LCBkZXB0aD0oaW50KTE2LCByZWRfbWFzaz0oaW50KTYzNDg4LCBncmVlbl9tYXNrPShpbnQpMjAxNiwgYmx1ZV9tYXNrPShpbnQpMzEsIHdpZHRoPShpbnQpIFsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludCkgWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pIFsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSA8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgIDwvZWxlbWVudHM+Cis8L3BsdWdpbj4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc2ZtdXgueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzZm11eC54bWwKaW5kZXggYTUxOGU0NS4uZTdmZmI4NiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzZm11eC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWFzZm11eC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5BU0YgTXV4ZXIgUGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9hc2ZtdXgvLmxpYnMvbGliZ3N0YXNmbXV4LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGFzZm11eC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXNzcmVuZGVyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc3NyZW5kZXIueG1sCmluZGV4IDYzMzYxNWIuLjgzNmY1MGYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc3NyZW5kZXIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hc3NyZW5kZXIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+QVNTL1NTQSBzdWJ0aXRsZSByZW5kZXJlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvYXNzcmVuZGVyLy5saWJzL2xpYmdzdGFzc3JlbmRlci5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3Rhc3NyZW5kZXIuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvZnhiYWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvZnhiYWQueG1sCmluZGV4IDgyZjZlMjQuLjNmMTM0ODQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb2Z4YmFkLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9meGJhZC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5BdWRpbyBmaWx0ZXJzIGZyb20gZ3N0LXBsdWdpbnMtYmFkPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9hdWRpb2Z4YmFkLy5saWJzL2xpYmdzdGF1ZGlvZnhiYWQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YXVkaW9meGJhZC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnM8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9taXhlci54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW9taXhlci54bWwKaW5kZXggYTQ1ZGJiYy4uMmM3NDQyOSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvbWl4ZXIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb21peGVyLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1peGVzIG11bHRpcGxlIGF1ZGlvIHN0cmVhbXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2F1ZGlvbWl4ZXIvLmxpYnMvbGliZ3N0YXVkaW9taXhlci5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RhdWRpb21peGVyLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KQEAgLTUxLDUgKzUxLDI2IEBACiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CisgICAgPGVsZW1lbnQ+CisgICAgICA8bmFtZT5saXZlYWRkZXI8L25hbWU+CisgICAgICA8bG9uZ25hbWU+QXVkaW9NaXhlcjwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+R2VuZXJpYy9BdWRpbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+TWl4ZXMgbXVsdGlwbGUgYXVkaW8gc3RyZWFtczwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPlNlYmFzdGlhbiBEcsO2Z2UgJmx0O3NlYmFzdGlhbkBjZW50cmljdWxhci5jb20mZ3Q7PC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzMyTEUsIFUzMkxFLCBTMTZMRSwgVTE2TEUsIFM4LCBVOCwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgbGF5b3V0PShzdHJpbmcpeyBpbnRlcmxlYXZlZCwgbm9uLWludGVybGVhdmVkIH08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzMyTEUsIFUzMkxFLCBTMTZMRSwgVTE2TEUsIFM4LCBVOCwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgbGF5b3V0PShzdHJpbmcpeyBpbnRlcmxlYXZlZCwgbm9uLWludGVybGVhdmVkIH08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CiAgIDwvZWxlbWVudHM+CiA8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW92aXN1YWxpemVycy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXVkaW92aXN1YWxpemVycy54bWwKaW5kZXggODJhMDQwYy4uNmExODc5ZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1ZGlvdmlzdWFsaXplcnMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdWRpb3Zpc3VhbGl6ZXJzLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkNyZWF0ZXMgdmlkZW8gdmlzdWFsaXphdGlvbnMgb2YgYXVkaW8gaW5wdXQ8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2F1ZGlvdmlzdWFsaXplcnMvLmxpYnMvbGliZ3N0YXVkaW92aXN1YWxpemVycy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdXRvY29udmVydC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYXV0b2NvbnZlcnQueG1sCmluZGV4IGQwMTQ3NmQuLmFmZjI2MzMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1hdXRvY29udmVydC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWF1dG9jb252ZXJ0LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlNlbGVjdHMgY29udmVydG9yIGVsZW1lbnQgYmFzZWQgb24gY2FwczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvYXV0b2NvbnZlcnQvLmxpYnMvbGliZ3N0YXV0b2NvbnZlcnQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0YXV0b2NvbnZlcnQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJheWVyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iYXllci54bWwKaW5kZXggMmQ4ZGJmZi4uZmE0OWUzMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJheWVyLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYmF5ZXIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+RWxlbWVudHMgdG8gY29udmVydCBCYXllciBpbWFnZXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2JheWVyLy5saWJzL2xpYmdzdGJheWVyLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGJheWVyLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ibHVlei54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYmx1ZXoueG1sCmluZGV4IDYyZGZlMDEuLmQ4YTE3MDkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ibHVlei54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWJsdWV6LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkJsdWV6LWJhc2VkIGJsdWV0b290aCBzdXBwb3J0PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL3N5cy9ibHVlei8ubGlicy9saWJnc3RibHVlei5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RibHVlei5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tYnoyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sCmluZGV4IDAzNDdhMzQuLmMwNzFiZjggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1iejIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q29tcHJlc3Mgb3IgZGVjb21wcmVzcyBzdHJlYW1zPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9iejIvLmxpYnMvbGliZ3N0YnoyLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGJ6Mi5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2FtZXJhYmluLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jYW1lcmFiaW4ueG1sCmluZGV4IGI5ZDVlYjguLjllOWJiNGEgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jYW1lcmFiaW4ueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jYW1lcmFiaW4ueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+VGFrZSBpbWFnZSBzbmFwc2hvdHMgYW5kIHJlY29yZCBtb3ZpZXMgZnJvbSBjYW1lcmE8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2NhbWVyYWJpbjIvLmxpYnMvbGliZ3N0Y2FtZXJhYmluMi5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RjYW1lcmFiaW4yLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jaHJvbWFwcmludC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY2hyb21hcHJpbnQueG1sCmluZGV4IDYyNDllY2MuLmUyMzJlZmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jaHJvbWFwcmludC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNocm9tYXByaW50LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkNhbGN1bGF0ZSBDaHJvbWFwcmludCBmaW5nZXJwcmludCBmcm9tIGF1ZGlvIGZpbGVzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9jaHJvbWFwcmludC8ubGlicy9saWJnc3RjaHJvbWFwcmludC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RjaHJvbWFwcmludC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29sb3JlZmZlY3RzLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb2xvcmVmZmVjdHMueG1sCmluZGV4IDIwYjVhZjQuLjYzMWJlYjcgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb2xvcmVmZmVjdHMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb2xvcmVmZmVjdHMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q29sb3IgTG9vay11cCBUYWJsZSBmaWx0ZXJzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9jb2xvcmVmZmVjdHMvLmxpYnMvbGliZ3N0Y29sb3JlZmZlY3RzLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGNvbG9yZWZmZWN0cy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29tcG9zaXRvci54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY29tcG9zaXRvci54bWwKaW5kZXggMDY0OGVkYy4uYjZjNDc0NiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWNvbXBvc2l0b3IueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jb21wb3NpdG9yLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkNvbXBvc2l0b3I8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2NvbXBvc2l0b3IvLmxpYnMvbGliZ3N0Y29tcG9zaXRvci5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3Rjb21wb3NpdG9yLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jdXJsLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1jdXJsLnhtbAppbmRleCA4ZmQ3MDcyLi4zMTIyNzAyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tY3VybC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWN1cmwueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+bGliY3VybC1iYXNlZCBlbGVtZW50czwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvY3VybC8ubGlicy9saWJnc3RjdXJsLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGN1cmwuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRhc2hkZW11eC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGFzaGRlbXV4LnhtbAppbmRleCAzYjM5MzQwLi5mZTkyMTE0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGFzaGRlbXV4LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGFzaGRlbXV4LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkRBU0ggZGVtdXhlciBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2Rhc2gvLmxpYnMvbGliZ3N0ZGFzaGRlbXV4LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGRhc2hkZW11eC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnM8L3BhY2thZ2U+CkBAIC0zMSw2ICszMSwxMiBAQAogICAgICAgICAgIDxkZXRhaWxzPkFOWTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zdWJ0aXRsZV8lMDJ1PC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPnNvbWV0aW1lczwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+QU5ZPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnZpZGVvXyUwMnU8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+c29tZXRpbWVzPC9wcmVzZW5jZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXRhdXJpc3JjLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kYXRhdXJpc3JjLnhtbAppbmRleCAzMGYwZmY5Li41YjMyMzNlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGF0YXVyaXNyYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRhdGF1cmlzcmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+ZGF0YTogVVJJIHNvdXJjZTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvZGF0YXVyaXNyYy8ubGlicy9saWJnc3RkYXRhdXJpc3JjLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGRhdGF1cmlzcmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlYnVndXRpbHNiYWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlYnVndXRpbHNiYWQueG1sCmluZGV4IDAwYjM1ZWQuLjU1NDYyNDggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZWJ1Z3V0aWxzYmFkLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVidWd1dGlsc2JhZC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5Db2xsZWN0aW9uIG9mIGVsZW1lbnRzIHRoYXQgbWF5IG9yIG1heSBub3QgYmUgdXNlZnVsIGZvciBkZWJ1Z2dpbmc8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2RlYnVndXRpbHMvLmxpYnMvbGliZ3N0ZGVidWd1dGlsc2JhZC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RkZWJ1Z3V0aWxzYmFkLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZWNrbGluay54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGVja2xpbmsueG1sCmluZGV4IDNmZmJiMmUuLjY5YmVmYTYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZWNrbGluay54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWRlY2tsaW5rLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkJsYWNrbWFnaWMgRGVja2xpbmsgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL3N5cy9kZWNrbGluay8ubGlicy9saWJnc3RkZWNrbGluay5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RkZWNrbGluay5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnM8L3BhY2thZ2U+CkBAIC01MCw3ICs1MCw3IEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk1NzYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI8L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEwLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTU3NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk0ODYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEyLzExLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDYwMSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpNzIwLCBoZWlnaHQ9KGludCk1NzYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTIvMTEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKWludGVybGVhdmVkLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTkyMCwgaGVpZ2h0PShpbnQpMTA4MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMjA0OCwgaGVpZ2h0PShpbnQpMTU1NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCBmb3JtYXQ9KHN0cmluZylBUkdCPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNjUsNyArNjUsNyBAQAogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0MDAwLzEwMDEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpaW50ZXJsZWF2ZWQsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTIvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNDg2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwMDAwLzEwMDEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTAvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTcyMCwgaGVpZ2h0PShpbnQpNTc2LCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMTIvMTEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ2MDEsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjUvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjUvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNTAvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTE5MjAsIGhlaWdodD0oaW50KTEwODAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgZnJhbWVyYXRlPShmcmFjdGlvbik1MC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwMDAwLzEwMDEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTIwNDgsIGhlaWdodD0oaW50KTE1NTYsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjUvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0LzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVVZVlksIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgZnJhbWVyYXRlPShmcmFjdGlvbik1MC8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylVWVZZLCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAwMDAvMTAwMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTU3NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTU3NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTQ4NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMC8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTU3NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NjAxLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCk3MjAsIGhlaWdodD0oaW50KTU3NiwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxMi8xMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylpbnRlcmxlYXZlZCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik1MC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik1MC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxOTIwLCBoZWlnaHQ9KGludCkxMDgwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTUwLzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQ3MDksIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNTAvMSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkxMjgwLCBoZWlnaHQ9KGludCk3MjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwMDAwLzEwMDEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTEyODAsIGhlaWdodD0oaW50KTcyMCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAvMSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDcwOSwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMTI4MCwgaGVpZ2h0PShpbnQpNzIwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNC8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0NzA5LCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkyMDQ4LCBoZWlnaHQ9KGludCkxNTU2LCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQwMDAvMTAwMSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMjQvMSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI0LzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbikzMDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAwMDAvMTAwMSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMzAvMSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTUwLzEsIGZvcm1hdD0oc3RyaW5nKVVZVlksIGNvbG9yaW1ldHJ5PShzdHJpbmcpYnQyMDIwLCBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik1MC8xLCBmb3JtYXQ9KHN0cmluZylBUkdCOyB2aWRlby94LXJhdywgd2lkdGg9KGludCkzODQwLCBoZWlnaHQ9KGludCkyMTYwLCBwaXhlbC1hc3BlY3QtcmF0aW89KGZyYWN0aW9uKTEvMSwgaW50ZXJsYWNlLW1vZGU9KHN0cmluZylwcm9ncmVzc2l2ZSwgZnJhbWVyYXRlPShmcmFjdGlvbik2MDAwMC8xMDAxLCBmb3JtYXQ9KHN0cmluZylVWVZZLCBjb2xvcmltZXRyeT0oc3RyaW5nKWJ0MjAyMCwgY2hyb21hLXNpdGU9KHN0cmluZyltcGVnMjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAwMDAvMTAwMSwgZm9ybWF0PShzdHJpbmcpQVJHQjsgdmlkZW8veC1yYXcsIHdpZHRoPShpbnQpMzg0MCwgaGVpZ2h0PShpbnQpMjE2MCwgcGl4ZWwtYXNwZWN0LXJhdGlvPShmcmFjdGlvbikxLzEsIGludGVybGFjZS1tb2RlPShzdHJpbmcpcHJvZ3Jlc3NpdmUsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pNjAvMSwgZm9ybWF0PShzdHJpbmcpVVlWWSwgY29sb3JpbWV0cnk9KHN0cmluZylidDIwMjAsIGNocm9tYS1zaXRlPShzdHJpbmcpbXBlZzI7IHZpZGVvL3gtcmF3LCB3aWR0aD0oaW50KTM4NDAsIGhlaWdodD0oaW50KTIxNjAsIHBpeGVsLWFzcGVjdC1yYXRpbz0oZnJhY3Rpb24pMS8xLCBpbnRlcmxhY2UtbW9kZT0oc3RyaW5nKXByb2dyZXNzaXZlLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTYwLzEsIGZvcm1hdD0oc3RyaW5nKUFSR0I8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZGZidmlkZW9zaW5rLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZmJ2aWRlb3NpbmsueG1sCmluZGV4IDFiYjg0MmYuLjRhZjU4Y2IgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZmJ2aWRlb3NpbmsueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kZmJ2aWRlb3NpbmsueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+RGlyZWN0RkIgdmlkZW8gb3V0cHV0IHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvZGlyZWN0ZmIvLmxpYnMvbGliZ3N0ZGZidmlkZW9zaW5rLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGRmYnZpZGVvc2luay5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRscy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHRscy54bWwKaW5kZXggNTBhOTE2Zi4uM2YxNzIyMiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0bHMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdGxzLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkRUTFMgZGVjb2RlciBhbmQgZW5jb2RlciBwbHVnaW5zPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9kdGxzLy5saWJzL2xpYmdzdGR0bHMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZHRscy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkJTRDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdHNkZWMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0c2RlYy54bWwKaW5kZXggMGY0MzgwNS4uZmZhZDBhNSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0c2RlYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR0c2RlYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5EZWNvZGVzIERUUyBhdWRpbyBzdHJlYW1zPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9kdHMvLmxpYnMvbGliZ3N0ZHRzZGVjLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGR0c2RlYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2Yi54bWwKaW5kZXggZTJmYmQ2Ni4uZTNlYjRjOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2Yi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2Yi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5EVkIgZWxlbWVudHM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vc3lzL2R2Yi8ubGlicy9saWJnc3RkdmIuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZHZiLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmJzdWJvdmVybGF5LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmJzdWJvdmVybGF5LnhtbAppbmRleCA4MjJiMzk5Li5lNWQxN2M1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZic3Vib3ZlcmxheS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWR2YnN1Ym92ZXJsYXkueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+RFZCIHN1YnRpdGxlIHJlbmRlcmVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9kdmJzdWJvdmVybGF5Ly5saWJzL2xpYmdzdGR2YnN1Ym92ZXJsYXkuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZHZic3Vib3ZlcmxheS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZHZkc3B1LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmRzcHUueG1sCmluZGV4IGFlZjBhODYuLjg5YThmODAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmRzcHUueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1kdmRzcHUueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+RFZEIFN1Yi1waWN0dXJlIE92ZXJsYXkgZWxlbWVudDwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvZHZkc3B1Ly5saWJzL2xpYmdzdGR2ZHNwdS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RkdmRzcHUuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWMueG1sCmluZGV4IDFiOTEwODguLjFhOGEyMWMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFjLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5GcmVlIEFBQyBFbmNvZGVyIChGQUFDKTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvZmFhYy8ubGlicy9saWJnc3RmYWFjLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZhYWMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjUuMC4xPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuMC4xPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIGdpdDwvcGFja2FnZT4KQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgNiBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTE7IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTIsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwMDM7IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTMsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwMDc7IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTQsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAxMDc7IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTUsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwMzc7IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCl7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCwgNjQwMDAsIDg4MjAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KTYsIGNoYW5uZWwtbWFzaz0oYml0bWFzaykweDAwMDAwMDAwMDAwMDAwM2Y8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZhYWQueG1sCmluZGV4IDA5OWNjY2MuLjcwNTFkYTYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYWFkLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmFhZC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5GcmVlIEFBQyBEZWNvZGVyIChGQUFEKTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvZmFhZC8ubGlicy9saWJnc3RmYWFkLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZhYWQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5HUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmJkZXZzaW5rLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYmRldnNpbmsueG1sCmluZGV4IDI5MjUyNTIuLmQzYjk5YjkgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYmRldnNpbmsueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mYmRldnNpbmsueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+TGludXggZnJhbWVidWZmZXIgdmlkZW8gc2luazwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9zeXMvZmJkZXYvLmxpYnMvbGliZ3N0ZmJkZXZzaW5rLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZiZGV2c2luay5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZlc3RpdmFsLnhtbAppbmRleCBjZWE0NDk3Li4xNzdlYjRjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmVzdGl2YWwueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mZXN0aXZhbC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5TeW50aGVzaXplcyBwbGFpbiB0ZXh0IGludG8gYXVkaW88L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2Zlc3RpdmFsLy5saWJzL2xpYmdzdGZlc3RpdmFsLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZlc3RpdmFsLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1maWVsZGFuYWx5c2lzLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1maWVsZGFuYWx5c2lzLnhtbAppbmRleCAyMzJlNTc4Li4xZDI5NzBhIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmllbGRhbmFseXNpcy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZpZWxkYW5hbHlzaXMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+VmlkZW8gZmllbGQgYW5hbHlzaXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2ZpZWxkYW5hbHlzaXMvLmxpYnMvbGliZ3N0ZmllbGRhbmFseXNpcy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RmaWVsZGFuYWx5c2lzLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mbGl0ZS54bWwKaW5kZXggMmMxZDg2MC4uZmYyNjYwZSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsaXRlLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmxpdGUueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+RmxpdGUgc3BlZWNoIHN5bnRoZXNpemVyIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvZmxpdGUvLmxpYnMvbGliZ3N0ZmxpdGUuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0ZmxpdGUuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsdWlkc3ludGhtaWRpLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mbHVpZHN5bnRobWlkaS54bWwKaW5kZXggMzU1NTBiOS4uMTAyZjU4MiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZsdWlkc3ludGhtaWRpLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZmx1aWRzeW50aG1pZGkueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Rmx1aWRzeW50aCBNSURJIFBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvZmx1aWRzeW50aC8ubGlicy9saWJnc3RmbHVpZHN5bnRobWlkaS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RmbHVpZHN5bnRobWlkaS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJlZXZlcmIueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyZWV2ZXJiLnhtbAppbmRleCBhMDNiODY3Li4yZjY3NjRjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJlZXZlcmIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVldmVyYi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5SZXZlcmJlcmF0aW9uL3Jvb20gZWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9mcmVldmVyYi8ubGlicy9saWJnc3RmcmVldmVyYi5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RmcmVldmVyYi5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJlaTByLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sCmluZGV4IGY5ODBjMzcuLjg4Y2QwMGYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1mcmVpMHIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+ZnJlaTByIHBsdWdpbiBsaWJyYXJ5PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9mcmVpMHIvLmxpYnMvbGliZ3N0ZnJlaTByLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGZyZWkwci5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2F1ZGllZmZlY3RzLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nYXVkaWVmZmVjdHMueG1sCmluZGV4IDc0OThkMWEuLmMwZDllZWYgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nYXVkaWVmZmVjdHMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nYXVkaWVmZmVjdHMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+R2F1ZGkgdmlkZW8gZWZmZWN0cy48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2dhdWRpZWZmZWN0cy8ubGlicy9saWJnc3RnYXVkaWVmZmVjdHMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0Z2F1ZGllZmZlY3RzLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdkcC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbAppbmRleCA4OWJhYjM1Li4xYTZiZThhIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2RwLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlBheWxvYWQvZGVwYXlsb2FkIEdEUCBwYWNrZXRzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9nZHAvLmxpYnMvbGliZ3N0Z2RwLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGdkcC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ2VvbWV0cmljdHJhbnNmb3JtLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sCmluZGV4IDcwZTQyZjUuLjRiYTdmNDAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nZW9tZXRyaWN0cmFuc2Zvcm0ueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+VmFyaW91cyBnZW9tZXRyaWMgaW1hZ2UgdHJhbnNmb3JtIGVsZW1lbnRzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vLmxpYnMvbGliZ3N0Z2VvbWV0cmljdHJhbnNmb3JtLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGdlb21ldHJpY3RyYW5zZm9ybS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ21lZGVjLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nbWVkZWMueG1sCmluZGV4IGM3NTNjNWEuLmU4ZTVjY2YgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nbWVkZWMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nbWVkZWMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+R01FIEF1ZGlvIERlY29kZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2dtZS8ubGlicy9saWJnc3RnbWUuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0Z21lLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc20ueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzbS54bWwKaW5kZXggZWNhODQzNS4uODcyNDQ2MSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzbS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzbS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5HU00gZW5jb2Rlci9kZWNvZGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9nc20vLmxpYnMvbGliZ3N0Z3NtLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGdzbS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3N0Z3RrLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RndGsueG1sCmluZGV4IDJlYTI0ZDMuLmVhNWY0YWIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RndGsueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RndGsueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+R3RrKyBzaW5rPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9ndGsvLmxpYnMvbGliZ3N0Z3Rrc2luay5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RndGtzaW5rLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZ3N0c2lyZW4ueG1sCmluZGV4IDRkMmIyOWQuLmU3NTMxNTUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1nc3RzaXJlbi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWdzdHNpcmVuLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlNpcmVuIGVuY29kZXIvZGVjb2Rlci9wYXlsb2FkZXIvZGVwYXlsb2FkZXIgcGx1Z2luczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3Qvc2lyZW4vLmxpYnMvbGliZ3N0c2lyZW4uc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c2lyZW4uc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyYWdtZW50ZWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWhscy54bWwKc2ltaWxhcml0eSBpbmRleCA4MyUKcmVuYW1lIGZyb20gZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWZyYWdtZW50ZWQueG1sCnJlbmFtZSB0byBkb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taGxzLnhtbAppbmRleCBiOTczZWQ0Li41YmQ4OTQ3IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tZnJhZ21lbnRlZC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWhscy54bWwKQEAgLTEsMTMgKzEsMTMgQEAKIDxwbHVnaW4+Ci0gIDxuYW1lPmZyYWdtZW50ZWQ8L25hbWU+Ci0gIDxkZXNjcmlwdGlvbj5GcmFnbWVudGVkIHN0cmVhbWluZyBwbHVnaW5zPC9kZXNjcmlwdGlvbj4KLSAgPGZpbGVuYW1lPi4uLy4uL2V4dC9obHMvLmxpYnMvbGliZ3N0ZnJhZ21lbnRlZC5zbzwvZmlsZW5hbWU+Ci0gIDxiYXNlbmFtZT5saWJnc3RmcmFnbWVudGVkLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDxuYW1lPmhsczwvbmFtZT4KKyAgPGRlc2NyaXB0aW9uPkhUVFAgTGl2ZSBTdHJlYW1pbmcgKEhMUyk8L2Rlc2NyaXB0aW9uPgorICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2hscy8ubGlicy9saWJnc3RobHMuc288L2ZpbGVuYW1lPgorICA8YmFzZW5hbWU+bGliZ3N0aGxzLnNvPC9iYXNlbmFtZT4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zPC9wYWNrYWdlPgotICA8b3JpZ2luPmh0dHA6Ly93d3cuZ3N0cmVhbWVyLm9yZy88L29yaWdpbj4KKyAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+CiAgIDxlbGVtZW50cz4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmhsc2RlbXV4PC9uYW1lPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWlkM3RhZy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbAppbmRleCBkMjNiMmY1Li43YTQyZGQyIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taWQzdGFnLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPklEMyB2MSBhbmQgdjIgbXV4aW5nIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvaWQzdGFnLy5saWJzL2xpYmdzdGlkM3RhZy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RpZDN0YWcuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlci54bWwKaW5kZXggYjA2MDY1NC4uNDhiNmNjZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWludGVyLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+cGx1Z2luIGZvciBpbnRlci1waXBlbGluZSBjb21tdW5pY2F0aW9uPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9pbnRlci8ubGlicy9saWJnc3RpbnRlci5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RpbnRlci5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnM8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taW50ZXJsYWNlLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sCmluZGV4IDc5MDUxMjAuLjNhYWFkOTIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pbnRlcmxhY2UueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q3JlYXRlIGFuIGludGVybGFjZWQgdmlkZW8gc3RyZWFtPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9pbnRlcmxhY2UvLmxpYnMvbGliZ3N0aW50ZXJsYWNlLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGludGVybGFjZS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taXZmcGFyc2UueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWl2ZnBhcnNlLnhtbAppbmRleCBkZDU3YmUyLi42MTZjNTU1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taXZmcGFyc2UueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pdmZwYXJzZS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5JVkYgcGFyc2VyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9pdmZwYXJzZS8ubGlicy9saWJnc3RpdmZwYXJzZS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RpdmZwYXJzZS5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taXZ0Yy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4taXZ0Yy54bWwKaW5kZXggNjY2MDllMC4uYzQ2MzcyMCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWl2dGMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1pdnRjLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkludmVyc2UgVGVsZWNpbmU8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2l2dGMvLmxpYnMvbGliZ3N0aXZ0Yy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RpdnRjLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWluczwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcDJrZGVjaW1hdG9yLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcDJrZGVjaW1hdG9yLnhtbAppbmRleCBkMDQ2ZWI0Li5iOTBjMWVlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tanAya2RlY2ltYXRvci54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwMmtkZWNpbWF0b3IueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+SlBFRzIwMDAgZGVjaW1hdG9yPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9qcDJrZGVjaW1hdG9yLy5saWJzL2xpYmdzdGpwMmtkZWNpbWF0b3Iuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0anAya2RlY2ltYXRvci5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tanBlZ2Zvcm1hdC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tanBlZ2Zvcm1hdC54bWwKaW5kZXggNDBjNGY5Yy4uNzcxMTQwMCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWpwZWdmb3JtYXQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1qcGVnZm9ybWF0LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkpQRUcgaW50ZXJjaGFuZ2UgZm9ybWF0IHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvanBlZ2Zvcm1hdC8ubGlicy9saWJnc3RqcGVnZm9ybWF0LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGpwZWdmb3JtYXQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWthdGUueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWthdGUueG1sCmluZGV4IDllZDQzNjMuLjQxMzIxMTIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1rYXRlLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4ta2F0ZS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5LYXRlIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQva2F0ZS8ubGlicy9saWJnc3RrYXRlLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdGthdGUuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWxhZHNwYS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGFkc3BhLnhtbAppbmRleCA1ZGM2N2YxLi4zNzFiNzg4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGFkc3BhLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGFkc3BhLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkxBRFNQQSBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L2xhZHNwYS8ubGlicy9saWJnc3RsYWRzcGEuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bGFkc3BhLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saWJkZTI2NS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGliZGUyNjUueG1sCmluZGV4IDEzMjEwZTYuLjViYTNiMjMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1saWJkZTI2NS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWxpYmRlMjY1LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkhFVkMvSC4yNjUgZGVjb2RlciB1c2luZyBsaWJkZTI2NTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvbGliZGUyNjUvLmxpYnMvbGliZ3N0bGliZGUyNjUuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bGliZGUyNjUuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLWxpdmVhZGRlci54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGl2ZWFkZGVyLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmViODNmMS4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbGl2ZWFkZGVyLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTxwbHVnaW4+Ci0gIDxuYW1lPmxpdmVhZGRlcjwvbmFtZT4KLSAgPGRlc2NyaXB0aW9uPkFkZHMgbXVsdGlwbGUgbGl2ZSBkaXNjb250aW51b3VzIHN0cmVhbXM8L2Rlc2NyaXB0aW9uPgotICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L2xpdmVhZGRlci8ubGlicy9saWJnc3RsaXZlYWRkZXIuc288L2ZpbGVuYW1lPgotICA8YmFzZW5hbWU+bGliZ3N0bGl2ZWFkZGVyLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+Ci0gIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+Ci0gIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+Ci0gIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+Ci0gIDxvcmlnaW4+VW5rbm93biBwYWNrYWdlIG9yaWdpbjwvb3JpZ2luPgotICA8ZWxlbWVudHM+Ci0gICAgPGVsZW1lbnQ+Ci0gICAgICA8bmFtZT5saXZlYWRkZXI8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+TGl2ZSBBZGRlciBlbGVtZW50PC9sb25nbmFtZT4KLSAgICAgIDxjbGFzcz5HZW5lcmljL0F1ZGlvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5NaXhlcyBsaXZlL2Rpc2NvbnRpbnVvdXMgYXVkaW8gc3RyZWFtczwvZGVzY3JpcHRpb24+Ci0gICAgICA8YXV0aG9yPk9saXZpZXIgQ3JldGUgJmx0O29saXZpZXIuY3JldGVAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgotICAgICAgPHBhZHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNpbmtfJXU8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPnJlcXVlc3Q8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFM4LCBVOCwgUzE2TEUsIFUxNkxFLCBTMzJMRSwgVTMyTEUsIEYzMkxFLCBGNjRMRSB9LCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF08L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzgsIFU4LCBTMTZMRSwgVTE2TEUsIFMzMkxFLCBVMzJMRSwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgPC9wYWRzPgotICAgIDwvZWxlbWVudD4KLSAgPC9lbGVtZW50cz4KLTwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1taWRpLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1taWRpLnhtbAppbmRleCA3MThiZTQwLi40YzQwNzRlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbWlkaS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pZGkueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+UGFyc2UgTUlESSBmaWxlczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvbWlkaS8ubGlicy9saWJnc3RtaWRpLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1pZGkuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1taW1pYy54bWwKaW5kZXggMzBkMWViMS4uYjBiMDlmZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1pbWljLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbWltaWMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+TWltaWMgY29kZWM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L21pbWljLy5saWJzL2xpYmdzdG1pbWljLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1pbWljLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tbXMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1tcy54bWwKaW5kZXggNTRjMDgxYy4uZjUwZmVjZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1tcy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1tcy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5NaWNyb3NvZnQgTXVsdGkgTWVkaWEgU2VydmVyIHN0cmVhbWluZyBwcm90b2NvbCBzdXBwb3J0PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9saWJtbXMvLmxpYnMvbGliZ3N0bW1zLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1tcy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW9kcGx1Zy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbW9kcGx1Zy54bWwKaW5kZXggMzMyMGQ3MC4uNTczNmIxNCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1vZHBsdWcueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tb2RwbHVnLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPi5NT0QgYXVkaW8gZGVjb2Rpbmc8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L21vZHBsdWcvLmxpYnMvbGliZ3N0bW9kcGx1Zy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3Rtb2RwbHVnLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVnMmVuYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZzJlbmMueG1sCmluZGV4IDk1ZWVlODQuLmVmM2RhNjUgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVnMmVuYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWcyZW5jLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkhpZ2gtcXVhbGl0eSBNUEVHLTEvMiB2aWRlbyBlbmNvZGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9tcGVnMmVuYy8ubGlicy9saWJnc3RtcGVnMmVuYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RtcGVnMmVuYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3BzZGVtdXgueG1sCmluZGV4IDJkZGExZDMuLmFjMTVmN2YgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNkZW11eC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc2RlbXV4LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1QRUctUFMgZGVtdXhlcjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvbXBlZ2RlbXV4Ly5saWJzL2xpYmdzdG1wZWdwc2RlbXV4LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1wZWdwc2RlbXV4LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+dW5rbm93bjwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVncHNtdXgueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc211eC54bWwKaW5kZXggZDM2ZGIyNi4uNjcxZmNiZiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc211eC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWdwc211eC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5NUEVHLVBTIG11eGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9tcGVncHNtdXgvLmxpYnMvbGliZ3N0bXBlZ3BzbXV4LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1wZWdwc211eC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzZGVtdXgueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWd0c2RlbXV4LnhtbAppbmRleCBiZTQ4Nzg5Li5iYjUwNzRmIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzZGVtdXgueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGVndHNkZW11eC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5NUEVHIFRTIGRlbXV4ZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L21wZWd0c2RlbXV4Ly5saWJzL2xpYmdzdG1wZWd0c2RlbXV4LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG1wZWd0c2RlbXV4LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KQEAgLTI3LDcgKzI3LDcgQEAKICAgICAgICAgICA8bmFtZT5hdWRpb18lMDR4PC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPnNvbWV0aW1lczwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxOyBhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTIsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylhZHRzOyBhdWRpby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KTQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylsb2FzOyBhdWRpby94LWxwY20sIHdpZHRoPShpbnQpeyAxNiwgMjAsIDI0IH0sIHJhdGU9KGludCl7IDQ4MDAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgOCBdLCBkeW5hbWljX3JhbmdlPShpbnQpWyAwLCAyNTUgXSwgZW1waGFzaXM9KGJvb2xlYW4peyBmYWxzZSwgdHJ1ZSB9LCBtdXRlPShib29sZWFuKXsgZmFsc2UsIHRydWUgfTsgYXVkaW8veC1hYzM7IGF1ZGlvL3gtZWFjMzsgYXVkaW8veC1kdHM7IGF1ZGlvL3gtcHJpdmF0ZS10cy1scGNtPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMTsgYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkyLCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYWR0czsgYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpbG9hczsgYXVkaW8veC1scGNtLCB3aWR0aD0oaW50KXsgMTYsIDIwLCAyNCB9LCByYXRlPShpbnQpeyA0ODAwMCwgOTYwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDggXSwgZHluYW1pY19yYW5nZT0oaW50KVsgMCwgMjU1IF0sIGVtcGhhc2lzPShib29sZWFuKXsgZmFsc2UsIHRydWUgfSwgbXV0ZT0oYm9vbGVhbil7IGZhbHNlLCB0cnVlIH07IGF1ZGlvL3gtYWMzOyBhdWRpby94LWVhYzM7IGF1ZGlvL3gtZHRzOyBhdWRpby94LW9wdXM7IGF1ZGlvL3gtcHJpdmF0ZS10cy1scGNtPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnByaXZhdGVfJTA0eDwvbmFtZT4KQEAgLTM5LDEzICszOSwxMyBAQAogICAgICAgICAgIDxuYW1lPnN1YnBpY3R1cmVfJTA0eDwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5zb21ldGltZXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnN1YnBpY3R1cmUveC1wZ3M7IHN1YnBpY3R1cmUveC1kdmQ8L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+c3VicGljdHVyZS94LXBnczsgc3VicGljdHVyZS94LWR2ZDsgc3VicGljdHVyZS94LWR2YjwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT52aWRlb18lMDR4PC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPnNvbWV0aW1lczwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCl7IDEsIDIsIDQgfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNlOyB2aWRlby94LWgyNjQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwgYWxpZ25tZW50PShzdHJpbmcpbmFsOyB2aWRlby94LWRpcmFjOyB2aWRlby94LWNhdnM7IHZpZGVvL3gtd212LCB3bXZ2ZXJzaW9uPShpbnQpMywgZm9ybWF0PShzdHJpbmcpV1ZDMTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby9tcGVnLCBtcGVndmVyc2lvbj0oaW50KXsgMSwgMiwgNCB9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFsc2U7IHZpZGVvL3gtaDI2NCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCBhbGlnbm1lbnQ9KHN0cmluZyluYWw7IHZpZGVvL3gtaDI2NSwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCBhbGlnbm1lbnQ9KHN0cmluZyluYWw7IHZpZGVvL3gtZGlyYWM7IHZpZGVvL3gtY2F2czsgdmlkZW8veC13bXYsIHdtdnZlcnNpb249KGludCkzLCBmb3JtYXQ9KHN0cmluZylXVkMxPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZWd0c211eC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbAppbmRleCBhNGI1NTNiLi5lM2ZkMTE5IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBlZ3RzbXV4LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk1QRUctVFMgbXV4ZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L21wZWd0c211eC8ubGlicy9saWJnc3RtcGVndHNtdXguc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bXBlZ3RzbXV4LnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rXyVkPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby9tcGVnLCBwYXJzZWQ9KGJvb2xlYW4pdHJ1ZSwgbXBlZ3ZlcnNpb249KGludCl7IDEsIDIsIDQgfSwgc3lzdGVtc3RyZWFtPShib29sZWFuKWZhbHNlOyB2aWRlby94LWRpcmFjOyB2aWRlby94LWgyNjQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwgYWxpZ25tZW50PShzdHJpbmcpeyBhdSwgbmFsIH07IGF1ZGlvL21wZWcsIHBhcnNlZD0oYm9vbGVhbil0cnVlLCBtcGVndmVyc2lvbj0oaW50KXsgMSwgMiB9OyBhdWRpby9tcGVnLCBmcmFtZWQ9KGJvb2xlYW4pdHJ1ZSwgbXBlZ3ZlcnNpb249KGludCk0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYWR0czsgYXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCk0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpcmF3OyBhdWRpby94LWxwY20sIHdpZHRoPShpbnQpeyAxNiwgMjAsIDI0IH0sIHJhdGU9KGludCl7IDQ4MDAwLCA5NjAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgOCBdLCBkeW5hbWljX3JhbmdlPShpbnQpWyAwLCAyNTUgXSwgZW1waGFzaXM9KGJvb2xlYW4peyBmYWxzZSwgdHJ1ZSB9LCBtdXRlPShib29sZWFuKXsgZmFsc2UsIHRydWUgfTsgYXVkaW8veC1hYzMsIGZyYW1lZD0oYm9vbGVhbil0cnVlOyBhdWRpby94LWR0cywgZnJhbWVkPShib29sZWFuKXRydWU7IHN1YnBpY3R1cmUveC1kdmI7IGFwcGxpY2F0aW9uL3gtdGVsZXRleHQ7IG1ldGEveC1rbHYsIHBhcnNlZD0oYm9vbGVhbil0cnVlPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL21wZWcsIHBhcnNlZD0oYm9vbGVhbil0cnVlLCBtcGVndmVyc2lvbj0oaW50KXsgMSwgMiwgNCB9LCBzeXN0ZW1zdHJlYW09KGJvb2xlYW4pZmFsc2U7IHZpZGVvL3gtZGlyYWM7IHZpZGVvL3gtaDI2NCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCBhbGlnbm1lbnQ9KHN0cmluZyl7IGF1LCBuYWwgfTsgdmlkZW8veC1oMjY1LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIGFsaWdubWVudD0oc3RyaW5nKXsgYXUsIG5hbCB9OyBhdWRpby9tcGVnLCBwYXJzZWQ9KGJvb2xlYW4pdHJ1ZSwgbXBlZ3ZlcnNpb249KGludCl7IDEsIDIgfTsgYXVkaW8vbXBlZywgZnJhbWVkPShib29sZWFuKXRydWUsIG1wZWd2ZXJzaW9uPShpbnQpNCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWFkdHM7IGF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpNCwgc3RyZWFtLWZvcm1hdD0oc3RyaW5nKXJhdzsgYXVkaW8veC1scGNtLCB3aWR0aD0oaW50KXsgMTYsIDIwLCAyNCB9LCByYXRlPShpbnQpeyA0ODAwMCwgOTYwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDggXSwgZHluYW1pY19yYW5nZT0oaW50KVsgMCwgMjU1IF0sIGVtcGhhc2lzPShib29sZWFuKXsgZmFsc2UsIHRydWUgfSwgbXV0ZT0oYm9vbGVhbil7IGZhbHNlLCB0cnVlIH07IGF1ZGlvL3gtYWMzLCBmcmFtZWQ9KGJvb2xlYW4pdHJ1ZTsgYXVkaW8veC1kdHMsIGZyYW1lZD0oYm9vbGVhbil0cnVlOyBhdWRpby94LW9wdXMsIGNoYW5uZWxzPShpbnQpWyAxLCA4IF0sIGNoYW5uZWwtbWFwcGluZy1mYW1pbHk9KGludCl7IDAsIDEgfTsgc3VicGljdHVyZS94LWR2YjsgYXBwbGljYXRpb24veC10ZWxldGV4dDsgbWV0YS94LWtsdiwgcGFyc2VkPShib29sZWFuKXRydWU8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wZzEyMy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBnMTIzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDgwNWM2MS4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBnMTIzLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLTxwbHVnaW4+Ci0gIDxuYW1lPm1wZzEyMzwvbmFtZT4KLSAgPGRlc2NyaXB0aW9uPm1wMyBkZWNvZGluZyBiYXNlZCBvbiB0aGUgbXBnMTIzIGxpYnJhcnk8L2Rlc2NyaXB0aW9uPgotICA8ZmlsZW5hbWU+Li4vLi4vZXh0L21wZzEyMy8ubGlicy9saWJnc3RtcGcxMjMuc288L2ZpbGVuYW1lPgotICA8YmFzZW5hbWU+bGliZ3N0bXBnMTIzLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+Ci0gIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+Ci0gIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+Ci0gIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+Ci0gIDxvcmlnaW4+VW5rbm93biBwYWNrYWdlIG9yaWdpbjwvb3JpZ2luPgotICA8ZWxlbWVudHM+Ci0gICAgPGVsZW1lbnQ+Ci0gICAgICA8bmFtZT5tcGcxMjNhdWRpb2RlYzwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5tcGcxMjMgbXAzIGRlY29kZXI8L2xvbmduYW1lPgotICAgICAgPGNsYXNzPkNvZGVjL0RlY29kZXIvQXVkaW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkRlY29kZXMgbXAzIHN0cmVhbXMgdXNpbmcgdGhlIG1wZzEyMyBsaWJyYXJ5PC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+Q2FybG9zIFJhZmFlbCBHaWFuaSAmbHQ7ZHZAcHNldWRvdGVybWluYWwub3JnJmd0OzwvYXV0aG9yPgotICAgICAgPHBhZHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxLCBsYXllcj0oaW50KVsgMSwgMyBdLCByYXRlPShpbnQpeyA4MDAwLCAxMTAyNSwgMTIwMDAsIDE2MDAwLCAyMjA1MCwgMjQwMDAsIDMyMDAwLCA0NDEwMCwgNDgwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDIgXSwgcGFyc2VkPShib29sZWFuKXRydWU8L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzE2TEUsIFUxNkxFLCBTMzJMRSwgVTMyTEUsIFMyNExFLCBVMjRMRSwgRjMyTEUgfSwgcmF0ZT0oaW50KXsgODAwMCwgMTEwMjUsIDEyMDAwLCAxNjAwMCwgMjIwNTAsIDI0MDAwLCAzMjAwMCwgNDQxMDAsIDQ4MDAwIH0sIGNoYW5uZWxzPShpbnQpWyAxLCAyIF0sIGxheW91dD0oc3RyaW5nKWludGVybGVhdmVkPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICA8L3BhZHM+Ci0gICAgPC9lbGVtZW50PgotICA8L2VsZW1lbnRzPgotPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wbGV4LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1tcGxleC54bWwKaW5kZXggMDIyZWRmMS4uOWVjN2I2NCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW1wbGV4LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbXBsZXgueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+SGlnaC1xdWFsaXR5IE1QRUcvRFZEL1NWQ0QvVkNEIHZpZGVvL2F1ZGlvIG11bHRpcGxleGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9tcGxleC8ubGlicy9saWJnc3RtcGxleC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RtcGxleC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1teGYueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW14Zi54bWwKaW5kZXggYzc4MDhjNS4uMDk0ZGUxZCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW14Zi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW14Zi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5NWEYgcGx1Z2luIGxpYnJhcnk8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L214Zi8ubGlicy9saWJnc3RteGYuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bXhmLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KQEAgLTMwLDUgKzMwLDY4IEBACiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CisgICAgPGVsZW1lbnQ+CisgICAgICA8bmFtZT5teGZtdXg8L25hbWU+CisgICAgICA8bG9uZ25hbWU+TVhGIG11eGVyPC9sb25nbmFtZT4KKyAgICAgIDxjbGFzcz5Db2RlYy9NdXhlcjwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+TXV4ZXMgdmlkZW8vYXVkaW8gc3RyZWFtcyBpbnRvIGEgTVhGIHN0cmVhbTwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPlNlYmFzdGlhbiBEcsO2Z2UgJmx0O3NlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrJmd0OzwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPmFsYXdfYXVkaW9fc2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1hbGF3LCByYXRlPShpbnQpWyA4MDAwLCAxOTIwMDAgXSwgY2hhbm5lbHM9KGludClbIDEsIDIgXTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5id2ZfYXVkaW9fc2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMzMkxFLCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF07IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMzJCRSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdOyBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzI0TEUsIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMyNEJFLCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF07IGF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdOyBhdWRpby94LXJhdywgZm9ybWF0PShzdHJpbmcpUzE2QkUsIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVU4LCByYXRlPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGNoYW5uZWxzPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+ZHZfZGlmX3ZpZGVvX3NpbmtfJXU8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPnJlcXVlc3Q8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtZHYsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgc3lzdGVtc3RyZWFtPShib29sZWFuKXRydWU8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+anBlZzIwMDBfdmlkZW9fc2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+aW1hZ2UveC1qcGMsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgY29sb3JzcGFjZT0oc3RyaW5nKXsgc1JHQiwgc1lVViB9PC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPm1wZWdfYXVkaW9fc2lua18ldTwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8vbXBlZywgbXBlZ3ZlcnNpb249KGludCkxLCBsYXllcj0oaW50KVsgMSwgMyBdLCByYXRlPShpbnQpWyA4MDAwLCA0ODAwMCBdLCBjaGFubmVscz0oaW50KVsgMSwgMiBdLCBwYXJzZWQ9KGJvb2xlYW4pdHJ1ZTsgYXVkaW8veC1hYzMsIHJhdGU9KGludClbIDQwMDAsIDk2MDAwIF0sIGNoYW5uZWxzPShpbnQpWyAxLCA2IF07IGF1ZGlvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpMiwgcmF0ZT0oaW50KVsgODAwMCwgOTYwMDAgXSwgY2hhbm5lbHM9KGludClbIDEsIDggXTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5tcGVnX3ZpZGVvX3NpbmtfJXU8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPnJlcXVlc3Q8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL21wZWcsIG1wZWd2ZXJzaW9uPShpbnQpeyAxLCAyLCA0IH0sIHN5c3RlbXN0cmVhbT0oYm9vbGVhbilmYWxzZSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LWgyNjQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnVwX3ZpZGVvX3NpbmtfJXU8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPnJlcXVlc3Q8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0IsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUJHUiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCeCwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeFJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpQkdSeCwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeEJHUiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpQVJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpQUJHUiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpQkdSQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpQVlVViwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpdjMwOCwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpVVlWWSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpWVVZMiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnZjM192aWRlb19zaW5rXyV1PC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LWRueGhkLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXBwbGljYXRpb24vbXhmPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICA8L3BhZHM+CisgICAgPC9lbGVtZW50PgogICA8L2VsZW1lbnRzPgogPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW5lb24ueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW5lb24ueG1sCmluZGV4IGRlMmNlNmIuLmM1M2ZjZDQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1uZW9uLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbmVvbi54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5saWIgbmVvbiBodHRwIGNsaWVudCBzcmM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L25lb24vLmxpYnMvbGliZ3N0bmVvbmh0dHBzcmMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0bmVvbmh0dHBzcmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMjwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbmV0c2ltLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1uZXRzaW0ueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVmYjVhZGIKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tbmV0c2ltLnhtbApAQCAtMCwwICsxLDM0IEBACis8cGx1Z2luPgorICA8bmFtZT5uZXRzaW08L25hbWU+CisgIDxkZXNjcmlwdGlvbj5OZXR3b3JrIFNpbXVsYXRvcjwvZGVzY3JpcHRpb24+CisgIDxmaWxlbmFtZT4uLi8uLi9nc3QvbmV0c2ltLy5saWJzL2xpYmdzdG5ldHNpbS5zbzwvZmlsZW5hbWU+CisgIDxiYXNlbmFtZT5saWJnc3RuZXRzaW0uc288L2Jhc2VuYW1lPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CisgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CisgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CisgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CisgIDxvcmlnaW4+VW5rbm93biBwYWNrYWdlIG9yaWdpbjwvb3JpZ2luPgorICA8ZWxlbWVudHM+CisgICAgPGVsZW1lbnQ+CisgICAgICA8bmFtZT5uZXRzaW08L25hbWU+CisgICAgICA8bG9uZ25hbWU+TmV0d29yayBTaW11bGF0b3I8L2xvbmduYW1lPgorICAgICAgPGNsYXNzPkZpbHRlci9OZXR3b3JrPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5BbiBlbGVtZW50IHRoYXQgc2ltdWxhdGVzIG5ldHdvcmsgaml0dGVyLCBwYWNrZXQgbG9zcyBhbmQgcGFja2V0IGR1cGxpY2F0aW9uPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+UGhpbGlwcGUgS2FsYWYgJmx0O3BoaWxpcHBlLmthbGFmQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPkFOWTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5BTlk8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgIDwvZWxlbWVudHM+Cis8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb2ZhLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sCmluZGV4IDU2YjY5NzcuLjZhNjczZTIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vZmEueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Q2FsY3VsYXRlIE11c2ljSVAgZmluZ2VycHJpbnQgZnJvbSBhdWRpbyBmaWxlczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvb2ZhLy5saWJzL2xpYmdzdG9mYS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RvZmEuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5HUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmFsLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuYWwueG1sCmluZGV4IGZmMDEzZDAuLmEyZDczNmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuYWwueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuYWwueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+T3BlbkFMIHBsdWdpbiBsaWJyYXJ5PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9vcGVuYWwvLmxpYnMvbGliZ3N0b3BlbmFsLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG9wZW5hbC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmN2LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuY3YueG1sCmluZGV4IDdjOTgyY2QuLjliZjQ0ZTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuY3YueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuY3YueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIE9wZW5DViBQbHVnaW5zPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9vcGVuY3YvLmxpYnMvbGliZ3N0b3BlbmN2LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG9wZW5jdi5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuMjwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KQEAgLTgzLDEzICs4MywxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUdSQVk4LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylHUkFZMTZfTEUsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC0xMjUsMTMgKzEyNSwxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUdSQVk4LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylHUkFZMTZfTEUsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpUkdCLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmV4ci54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmV4ci54bWwKaW5kZXggMzM1MGRkZi4uODQ0NmZkZSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5leHIueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuZXhyLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk9wZW5FWFIgaW1hZ2UgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9vcGVuZXhyLy5saWJzL2xpYmdzdG9wZW5leHIuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0b3BlbmV4ci5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmdsLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuZ2wueG1sCmluZGV4IDUxZTc1NDQuLjAwYzhhNmMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuZ2wueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuZ2wueG1sCkBAIC0zLDEzICszLDM0IEBACiAgIDxkZXNjcmlwdGlvbj5PcGVuR0wgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9nbC8ubGlicy9saWJnc3RvcGVuZ2wuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0b3BlbmdsLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KICAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+CiAgIDxlbGVtZW50cz4KICAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPmdsY29sb3JiYWxhbmNlPC9uYW1lPgorICAgICAgPGxvbmduYW1lPlZpZGVvIGJhbGFuY2U8L2xvbmduYW1lPgorICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgorICAgICAgPGRlc2NyaXB0aW9uPkFkanVzdHMgYnJpZ2h0bmVzcywgY29udHJhc3QsIGh1ZSwgc2F0dXJhdGlvbiBvbiBhIHZpZGVvIHN0cmVhbTwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPk1hdHRoZXcgV2F0ZXJzICZsdDttYXR0aGV3QGNlbnRyaWN1bGFyLmNvbSZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGNvbG9yY29udmVydDwvbmFtZT4KICAgICAgIDxsb25nbmFtZT5PcGVuR0wgY29sb3IgY29udmVydGVyPC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvQ29udmVydGVyL1ZpZGVvPC9jbGFzcz4KQEAgLTIwLDEzICs0MSwxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0IsIFJHQngsIFJHQkEsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQiwgUkdCeCwgUkdCQSwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBSR0IsIFJHQngsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKXsgMkQsIHJlY3RhbmdsZSwgZXh0ZXJuYWwtb2VzIH07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgUkdCLCBSR0J4LCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZyl7IDJELCByZWN0YW5nbGUsIGV4dGVybmFsLW9lcyB9PC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCLCBSR0J4LCBSR0JBLCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0IsIFJHQngsIFJHQkEsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgUkdCLCBSR0J4LCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZyl7IDJELCByZWN0YW5nbGUsIGV4dGVybmFsLW9lcyB9OyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIFJHQiwgUkdCeCwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpeyAyRCwgcmVjdGFuZ2xlLCBleHRlcm5hbC1vZXMgfTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTM1LDE5ICs1NiwyMCBAQAogICAgICAgPGxvbmduYW1lPk9wZW5HTCBjb2xvciBzY2FsZTwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+CiAgICAgICA8ZGVzY3JpcHRpb24+Q29sb3JzcGFjZSBjb252ZXJ0ZXIgYW5kIHZpZGVvIHNjYWxlcjwvZGVzY3JpcHRpb24+Ci0gICAgICA8YXV0aG9yPkp1bGllbiBJc29yY2UgJmx0O2p1bGllbi5pc29yY2VAZ21haWwuY29tJmd0OzwvYXV0aG9yPgorICAgICAgPGF1dGhvcj5KdWxpZW4gSXNvcmNlICZsdDtqdWxpZW4uaXNvcmNlQGdtYWlsLmNvbSZndDsKK01hdHRoZXcgV2F0ZXJzICZsdDttYXR0aGV3QGNlbnRyaWN1bGFyLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTYyLDEzICs4NCwxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtODMsMTMgKzEwNSwxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtMTA0LDcgKzEyNiw3IEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSk7IHZpZGVvL3gtcmF3PC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KQEAgLTEyNSw0MTIgKzE0Nyw0MTIgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19ibHVyPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+Qmx1ciB3aXRoIDl4OSBzZXBhcmFibGUgY29udm9sdXRpb24gRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIEJsdXIgd2l0aCA5eDkgc2VwYXJhYmxlIGNvbnZvbHV0aW9uIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX2J1bGdlPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+QnVsZ2UgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIEJ1bGdlIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX2Zpc2hleWU8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5GaXNoRXllIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBGaXNoRXllIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX2dsb3c8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5HbG93IExpZ2h0aW5nIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBHbG93IExpZ2h0aW5nIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX2hlYXQ8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5IZWF0IFNpZ25hdHVyZSBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gSGVhdCBTaWduYXR1cmUgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfaWRlbnRpdHk8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5EbyBub3RoaW5nIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBEbyBub3RoaW5nIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX2xhcGxhY2lhbjwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPkxhcGxhY2lhbiBDb252b2x1dGlvbiBEZW1vIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBMYXBsYWNpYW4gQ29udm9sdXRpb24gRGVtbyBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19sdW1heHBybzwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPkx1bWEgQ3Jvc3MgUHJvY2Vzc2luZyBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gTHVtYSBDcm9zcyBQcm9jZXNzaW5nIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX21pcnJvcjwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPk1pcnJvciBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gTWlycm9yIEVmZmVjdDwvZGVzY3JpcHRpb24+CiAgICAgICA8YXV0aG9yPkZpbGlwcG8gQXJnaW9sYXMgJmx0O2ZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgogICAgIDxlbGVtZW50PgogICAgICAgPG5hbWU+Z2xlZmZlY3RzX3NlcGlhPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+U2VwaWEgVG9uaW5nIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBTZXBpYSBUb25pbmcgRWZmZWN0PC9kZXNjcmlwdGlvbj4KICAgICAgIDxhdXRob3I+RmlsaXBwbyBBcmdpb2xhcyAmbHQ7ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20mZ3Q7PC9hdXRob3I+CiAgICAgICA8cGFkcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CiAgICAgPGVsZW1lbnQ+CiAgICAgICA8bmFtZT5nbGVmZmVjdHNfc2luPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+QWxsIEdyZXkgYnV0IFJlZCBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gQWxsIEdyZXkgYnV0IFJlZCBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19zb2JlbDwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPlNvYmVsIGVkZ2UgZGV0ZWN0aW9uIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBTb2JlbCBlZGdlIGRldGVjdGlvbiBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19zcXVhcmU8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5TcXVhcmUgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIFNxdWFyZSBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19zcXVlZXplPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+U3F1ZWV6ZSBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gU3F1ZWV6ZSBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c19zdHJldGNoPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+U3RyZXRjaCBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gU3RyZXRjaCBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c190dW5uZWw8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+R3N0cmVhbWVyIE9wZW5HTCBFZmZlY3RzPC9sb25nbmFtZT4KKyAgICAgIDxsb25nbmFtZT5MaWdodCBUdW5uZWwgRWZmZWN0PC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0L1ZpZGVvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHM8L2Rlc2NyaXB0aW9uPgorICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0cyAtIExpZ2h0IFR1bm5lbCBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c190d2lybDwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5Hc3RyZWFtZXIgT3BlbkdMIEVmZmVjdHM8L2xvbmduYW1lPgorICAgICAgPGxvbmduYW1lPlR3aXJsIEVmZmVjdDwvbG9uZ25hbWU+CiAgICAgICA8Y2xhc3M+RmlsdGVyL0VmZmVjdC9WaWRlbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxkZXNjcmlwdGlvbj5HTCBTaGFkaW5nIExhbmd1YWdlIGVmZmVjdHMgLSBUd2lybCBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c194cHJvPC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+Q3Jvc3MgUHJvY2Vzc2luZyBFZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gQ3Jvc3MgUHJvY2Vzc2luZyBFZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KICAgICA8ZWxlbWVudD4KICAgICAgIDxuYW1lPmdsZWZmZWN0c194cmF5PC9uYW1lPgotICAgICAgPGxvbmduYW1lPkdzdHJlYW1lciBPcGVuR0wgRWZmZWN0czwvbG9uZ25hbWU+CisgICAgICA8bG9uZ25hbWU+R2xvd2luZyBuZWdhdGl2ZSBlZmZlY3Q8L2xvbmduYW1lPgogICAgICAgPGNsYXNzPkZpbHRlci9FZmZlY3QvVmlkZW88L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkdMIFNoYWRpbmcgTGFuZ3VhZ2UgZWZmZWN0czwvZGVzY3JpcHRpb24+CisgICAgICA8ZGVzY3JpcHRpb24+R0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gR2xvd2luZyBuZWdhdGl2ZSBlZmZlY3Q8L2Rlc2NyaXB0aW9uPgogICAgICAgPGF1dGhvcj5GaWxpcHBvIEFyZ2lvbGFzICZsdDtmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KICAgICAgIDxwYWRzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTU0NSwxMyArNTY3LDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC01NjYsNyArNTg4LDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6U3lzdGVtTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KQEAgLTU4NywxMyArNjA5LDEzIEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC02MDgsMTMgKzYzMCwxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNjI5LDcgKzY1MSw3IEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTY0NCw3ICs2NjYsNyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKXsgMkQsIGV4dGVybmFsLW9lcyB9OyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpeyAyRCwgZXh0ZXJuYWwtb2VzIH08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CkBAIC02NTksNyArNjgxLDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rXyV1PC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5yZXF1ZXN0PC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CkBAIC03MDEsMTMgKzcyMywxMyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNzE1LDIwICs3MzcsMjAgQEAKICAgICAgIDxuYW1lPmdsc2hhZGVyPC9uYW1lPgogICAgICAgPGxvbmduYW1lPk9wZW5HTCBmcmFnbWVudCBzaGFkZXIgZmlsdGVyPC9sb25nbmFtZT4KICAgICAgIDxjbGFzcz5GaWx0ZXIvRWZmZWN0PC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5Mb2FkIEdMU0wgZnJhZ21lbnQgc2hhZGVyIGZyb20gZmlsZTwvZGVzY3JpcHRpb24+Ci0gICAgICA8YXV0aG9yPiZsdDtsdWMuZGVzY2hlbmF1eEBmcmVlc3VyZi5jaCZndDs8L2F1dGhvcj4KKyAgICAgIDxkZXNjcmlwdGlvbj5QZXJmb3JtIG9wZXJhdGlvbnMgd2l0aCBhIEdMU0wgc2hhZGVyPC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+Jmx0O21hdHRoZXdAY2VudHJpY3VsYXIuY29tJmd0OzwvYXV0aG9yPgogICAgICAgPHBhZHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICA8L3BhZHM+CiAgICAgPC9lbGVtZW50PgpAQCAtNzQzLDcgKzc2NSw3IEBACiAgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OlN5c3RlbU1lbW9yeSwgbWV0YTpHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTc3MywxMyArNzk1LDEzIEBACiAgICAgICAgICAgPG5hbWU+c2lua18ldTwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCLCBSR0J4LCBSR0JBLCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ7IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBSR0IsIFJHQngsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgogICAgICAgICA8L2NhcHM+CiAgICAgICAgIDxjYXBzPgogICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQiwgUkdCeCwgUkdCQSwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCB4QkdSLCBBUkdCLCBBQkdSLCBZNDQ0LCBJNDIwLCBZVjEyLCBZNDJCLCBZNDFCLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBBWVVWLCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdLCB0ZXh0dXJlLXRhcmdldD0oc3RyaW5nKTJEOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgUkdCLCBSR0J4LCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTc5NSw3ICs4MTcsNyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpeyBSR0IsIFJHQngsIFJHQkEsIEJHUiwgQkdSeCwgQkdSQSwgeFJHQiwgeEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgWTQxQiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgQVlVViwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFLCBSR0IxNiwgQkdSMTYgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWVtb3J5OkVHTEltYWdlKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZXRhOkdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgUkdCLCBSR0J4LCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsIHhCR1IsIEFSR0IsIEFCR1IsIFk0NDQsIEk0MjAsIFlWMTIsIFk0MkIsIFk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSwgUkdCMTYsIEJHUjE2IH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgICA8Y2Fwcz4KICAgICAgICAgICA8bmFtZT5sZWZ0PC9uYW1lPgpAQCAtODIyLDcgKzg0NCw3IEBACiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KQEAgLTgzNyw3ICs4NTksNyBAQAogICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CiAgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6U3lzdGVtTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgpAQCAtODU4LDcgKzg4MCw3IEBACiAgICAgICAgICAgPG5hbWU+c2lua18ldTwvbmFtZT4KICAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KICAgICAgICAgICA8cHJlc2VuY2U+cmVxdWVzdDwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6U3lzdGVtTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5LCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpeyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCBBWVVWLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZVVkyLCBVWVZZLCBZNDFCLCBZNDJCLCBZNDQ0LCBHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6RUdMSW1hZ2UsIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpTeXN0ZW1NZW1vcnksIG1ldGE6R3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb24pLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1ldGE6R3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhLCBtZXRhOkdzdFZpZGVvT3ZlcmxheUNvbXBvc2l0aW9uKSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdOyB2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZyl7IFJHQkEsIEJHUkEsIFJHQngsIEJHUngsIEFSR0IsIEFCR1IsIHhSR0IsIHhCR1IsIFJHQiwgQkdSLCBSR0IxNiwgQkdSMTYsIEFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsIEdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9LCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF07IHZpZGVvL3gtcmF3KG1lbW9yeTpFR0xJbWFnZSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgR1JBWTgsIEdSQVkxNl9MRSwgR1JBWTE2X0JFIH0sIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdmlkZW8veC1yYXcobWV0YTpHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF08L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgpAQCAtOTAxLDEzICs5MjMsMTMgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgICAgPGNhcHM+CiAgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CiAgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgZm9ybWF0PShzdHJpbmcpUkdCQSwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXSwgdGV4dHVyZS10YXJnZXQ9KHN0cmluZykyRDwvZGV0YWlscz4KICAgICAgICAgPC9jYXBzPgogICAgICAgPC9wYWRzPgogICAgIDwvZWxlbWVudD4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuaDI2NC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmgyNjQueG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMGJiNWUKLS0tIC9kZXYvbnVsbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmgyNjQueG1sCkBAIC0wLDAgKzEsNTUgQEAKKzxwbHVnaW4+CisgIDxuYW1lPm9wZW5oMjY0PC9uYW1lPgorICA8ZGVzY3JpcHRpb24+T3BlbkgyNjQgZW5jb2Rlci9kZWNvZGVyIHBsdWdpbjwvZGVzY3JpcHRpb24+CisgIDxmaWxlbmFtZT4uLi8uLi9leHQvb3BlbmgyNjQvLmxpYnMvbGliZ3N0b3BlbmgyNjQuc288L2ZpbGVuYW1lPgorICA8YmFzZW5hbWU+bGliZ3N0b3BlbmgyNjQuc288L2Jhc2VuYW1lPgorICA8dmVyc2lvbj4xLjUuMC4xPC92ZXJzaW9uPgorICA8bGljZW5zZT5CU0Q8L2xpY2Vuc2U+CisgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CisgIDxwYWNrYWdlPk9wZW5XZWJSVEMgR1N0cmVhbWVyIHBsdWdpbnM8L3BhY2thZ2U+CisgIDxvcmlnaW4+aHR0cDovL3d3dy5lcmljc3Nvbi5jb208L29yaWdpbj4KKyAgPGVsZW1lbnRzPgorICAgIDxlbGVtZW50PgorICAgICAgPG5hbWU+b3BlbmgyNjRkZWM8L25hbWU+CisgICAgICA8bG9uZ25hbWU+T3BlbkgyNjQgdmlkZW8gZGVjb2RlcjwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+RGVjb2Rlci9WaWRlbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+T3BlbkgyNjQgdmlkZW8gZGVjb2RlcjwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPkVyaWNzc29uIEFCLCBodHRwOi8vd3d3LmVyaWNzc29uLmNvbTwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1oMjY0LCBzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIGFsaWdubWVudD0oc3RyaW5nKWF1LCBwcm9maWxlPShzdHJpbmcpeyBjb25zdHJhaW5lZC1iYXNlbGluZSwgYmFzZWxpbmUgfTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdywgZm9ybWF0PShzdHJpbmcpSTQyMCwgd2lkdGg9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgaGVpZ2h0PShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGZyYW1lcmF0ZT0oZnJhY3Rpb24pWyAwLzEsIDIxNDc0ODM2NDcvMSBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICA8L3BhZHM+CisgICAgPC9lbGVtZW50PgorICAgIDxlbGVtZW50PgorICAgICAgPG5hbWU+b3BlbmgyNjRlbmM8L25hbWU+CisgICAgICA8bG9uZ25hbWU+T3BlbkgyNjQgdmlkZW8gZW5jb2RlcjwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+RW5jb2Rlci9WaWRlbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+T3BlbkgyNjQgdmlkZW8gZW5jb2RlcjwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPkVyaWNzc29uIEFCLCBodHRwOi8vd3d3LmVyaWNzc29uLmNvbTwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNpbms8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUk0MjAsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LWgyNjQsIHN0cmVhbS1mb3JtYXQ9KHN0cmluZylhdmMsIGFsaWdubWVudD0oc3RyaW5nKWF1LCBwcm9maWxlPShzdHJpbmcpYmFzZWxpbmU8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgIDwvZWxlbWVudHM+Cis8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmpwZWcueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wZW5qcGVnLnhtbAppbmRleCA4ZTE4NDcyLi45NjUyMWI1IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3BlbmpwZWcueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcGVuanBlZy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5PcGVuSlBFRy1iYXNlZCBKUEVHMjAwMCBpbWFnZSBkZWNvZGVyL2VuY29kZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L29wZW5qcGVnLy5saWJzL2xpYmdzdG9wZW5qcGVnLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdG9wZW5qcGVnLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjFmMTk3Ny4uMDAwMDAwMAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tb3B1cy54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMTggKzAsMCBAQAotPHBsdWdpbj4KLSAgPG5hbWU+b3B1czwvbmFtZT4KLSAgPGRlc2NyaXB0aW9uPk9QVVMgcGx1Z2luIGxpYnJhcnk8L2Rlc2NyaXB0aW9uPgotICA8ZmlsZW5hbWU+Li4vLi4vZXh0L29wdXMvLmxpYnMvbGliZ3N0b3B1cy5zbzwvZmlsZW5hbWU+Ci0gIDxiYXNlbmFtZT5saWJnc3RvcHVzLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+Ci0gIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+Ci0gIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+Ci0gIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+Ci0gIDxvcmlnaW4+VW5rbm93biBwYWNrYWdlIG9yaWdpbjwvb3JpZ2luPgotICA8ZWxlbWVudHM+Ci0gICAgPGVsZW1lbnQ+Ci0gICAgICA8bmFtZT5vcHVzZGVjPC9uYW1lPgotICAgICAgPGxvbmduYW1lPk9wdXMgYXVkaW8gZGVjb2RlcjwvbG9uZ25hbWU+Ci0gICAgICA8Y2xhc3M+Q29kZWMvRGVjb2Rlci9BdWRpbzwvY2xhc3M+Ci0gICAgICA8ZGVzY3JpcHRpb24+ZGVjb2RlIG9wdXMgc3RyZWFtcyB0byBhdWRpbzwvZGVzY3JpcHRpb24+Ci0gICAgICA8YXV0aG9yPlZpbmNlbnQgUGVucXVlcmMmYXBvcztoICZsdDt2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWsmZ3Q7PC9hdXRob3I+Ci0gICAgICA8cGFkcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KLSAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LW9wdXM8L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgNDgwMDAsIDI0MDAwLCAxNjAwMCwgMTIwMDAsIDgwMDAgfSwgY2hhbm5lbHM9KGludClbIDEsIDggXTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgPC9wYWRzPgotICAgIDwvZWxlbWVudD4KLSAgICA8ZWxlbWVudD4KLSAgICAgIDxuYW1lPm9wdXNlbmM8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+T3B1cyBhdWRpbyBlbmNvZGVyPC9sb25nbmFtZT4KLSAgICAgIDxjbGFzcz5Db2RlYy9FbmNvZGVyL0F1ZGlvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5FbmNvZGVzIGF1ZGlvIGluIE9wdXMgZm9ybWF0PC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+VmluY2VudCBQZW5xdWVyYyZhcG9zO2ggJmx0O3ZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KLSAgICAgIDxwYWRzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgotICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCk0ODAwMCwgY2hhbm5lbHM9KGludClbIDEsIDIgXTsgYXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVMxNkxFLCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KXsgODAwMCwgMTIwMDAsIDE2MDAwLCAyNDAwMCB9LCBjaGFubmVscz0oaW50KVsgMSwgMiBdPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICAgIDxjYXBzPgotICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KLSAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgotICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtb3B1czwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgPC9wYWRzPgotICAgIDwvZWxlbWVudD4KLSAgICA8ZWxlbWVudD4KLSAgICAgIDxuYW1lPm9wdXNwYXJzZTwvbmFtZT4KLSAgICAgIDxsb25nbmFtZT5PcHVzIGF1ZGlvIHBhcnNlcjwvbG9uZ25hbWU+Ci0gICAgICA8Y2xhc3M+Q29kZWMvUGFyc2VyL0F1ZGlvPC9jbGFzcz4KLSAgICAgIDxkZXNjcmlwdGlvbj5wYXJzZXMgb3B1cyBhdWRpbyBzdHJlYW1zPC9kZXNjcmlwdGlvbj4KLSAgICAgIDxhdXRob3I+VmluY2VudCBQZW5xdWVyYyZhcG9zO2ggJmx0O3ZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KLSAgICAgIDxwYWRzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgotICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtb3B1czwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zcmM8L25hbWU+Ci0gICAgICAgICAgPGRpcmVjdGlvbj5zb3VyY2U8L2RpcmVjdGlvbj4KLSAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KLSAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LW9wdXMsIGZyYW1lZD0oYm9vbGVhbil0cnVlPC9kZXRhaWxzPgotICAgICAgICA8L2NhcHM+Ci0gICAgICA8L3BhZHM+Ci0gICAgPC9lbGVtZW50PgotICAgIDxlbGVtZW50PgotICAgICAgPG5hbWU+cnRwb3B1c2RlcGF5PC9uYW1lPgotICAgICAgPGxvbmduYW1lPlJUUCBPcHVzIHBhY2tldCBkZXBheWxvYWRlcjwvbG9uZ25hbWU+Ci0gICAgICA8Y2xhc3M+Q29kZWMvRGVwYXlsb2FkZXIvTmV0d29yay9SVFA8L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPkV4dHJhY3RzIE9wdXMgYXVkaW8gZnJvbSBSVFAgcGFja2V0czwvZGVzY3JpcHRpb24+Ci0gICAgICA8YXV0aG9yPkRhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSAmbHQ7ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KLSAgICAgIDxwYWRzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgotICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmFwcGxpY2F0aW9uL3gtcnRwLCBtZWRpYT0oc3RyaW5nKWF1ZGlvLCBwYXlsb2FkPShpbnQpWyA5NiwgMTI3IF0sIGNsb2NrLXJhdGU9KGludCk0ODAwMCwgZW5jb2RpbmctbmFtZT0oc3RyaW5nKXsgT1BVUywgWC1HU1QtT1BVUy1EUkFGVC1TUElUVEtBLTAwIH08L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1vcHVzLCBtdWx0aXN0cmVhbT0oYm9vbGVhbilmYWxzZTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgPC9wYWRzPgotICAgIDwvZWxlbWVudD4KLSAgICA8ZWxlbWVudD4KLSAgICAgIDxuYW1lPnJ0cG9wdXNwYXk8L25hbWU+Ci0gICAgICA8bG9uZ25hbWU+UlRQIE9wdXMgcGF5bG9hZGVyPC9sb25nbmFtZT4KLSAgICAgIDxjbGFzcz5Db2RlYy9QYXlsb2FkZXIvTmV0d29yay9SVFA8L2NsYXNzPgotICAgICAgPGRlc2NyaXB0aW9uPlB1dHMgT3B1cyBhdWRpbyBpbiBSVFAgcGFja2V0czwvZGVzY3JpcHRpb24+Ci0gICAgICA8YXV0aG9yPkRhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSAmbHQ7ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51ayZndDs8L2F1dGhvcj4KLSAgICAgIDxwYWRzPgotICAgICAgICA8Y2Fwcz4KLSAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgotICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtb3B1cywgbXVsdGlzdHJlYW09KGJvb2xlYW4pZmFsc2U8L2RldGFpbHM+Ci0gICAgICAgIDwvY2Fwcz4KLSAgICAgICAgPGNhcHM+Ci0gICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgotICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+Ci0gICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+Ci0gICAgICAgICAgPGRldGFpbHM+YXBwbGljYXRpb24veC1ydHAsIG1lZGlhPShzdHJpbmcpYXVkaW8sIHBheWxvYWQ9KGludClbIDk2LCAxMjcgXSwgY2xvY2stcmF0ZT0oaW50KTQ4MDAwLCBlbmNvZGluZy1wYXJhbXM9KHN0cmluZykyLCBlbmNvZGluZy1uYW1lPShzdHJpbmcpeyBPUFVTLCBYLUdTVC1PUFVTLURSQUZULVNQSVRUS0EtMDAgfTwvZGV0YWlscz4KLSAgICAgICAgPC9jYXBzPgotICAgICAgPC9wYWRzPgotICAgIDwvZWxlbWVudD4KLSAgPC9lbGVtZW50cz4KLTwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzcGFyc2UueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLW9wdXNwYXJzZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTUxZjMwMQotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1vcHVzcGFyc2UueG1sCkBAIC0wLDAgKzEsMzQgQEAKKzxwbHVnaW4+CisgIDxuYW1lPm9wdXNwYXJzZTwvbmFtZT4KKyAgPGRlc2NyaXB0aW9uPk9QVVMgcGFyc2UgcGx1Z2luPC9kZXNjcmlwdGlvbj4KKyAgPGZpbGVuYW1lPi4uLy4uL2V4dC9vcHVzLy5saWJzL2xpYmdzdG9wdXNwYXJzZS5zbzwvZmlsZW5hbWU+CisgIDxiYXNlbmFtZT5saWJnc3RvcHVzcGFyc2Uuc288L2Jhc2VuYW1lPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CisgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CisgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CisgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CisgIDxvcmlnaW4+VW5rbm93biBwYWNrYWdlIG9yaWdpbjwvb3JpZ2luPgorICA8ZWxlbWVudHM+CisgICAgPGVsZW1lbnQ+CisgICAgICA8bmFtZT5vcHVzcGFyc2U8L25hbWU+CisgICAgICA8bG9uZ25hbWU+T3B1cyBhdWRpbyBwYXJzZXI8L2xvbmduYW1lPgorICAgICAgPGNsYXNzPkNvZGVjL1BhcnNlci9BdWRpbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+cGFyc2VzIG9wdXMgYXVkaW8gc3RyZWFtczwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPlZpbmNlbnQgUGVucXVlcmMmYXBvcztoICZsdDt2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWsmZ3Q7PC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LW9wdXM8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1vcHVzLCBmcmFtZWQ9KGJvb2xlYW4pdHJ1ZTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgPC9wYWRzPgorICAgIDwvZWxlbWVudD4KKyAgPC9lbGVtZW50cz4KKzwvcGx1Z2luPgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wY2FwcGFyc2UueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWwKaW5kZXggMzFiNTcwNC4uYmUxMzNmMyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXBjYXBwYXJzZS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5FbGVtZW50IHBhcnNpbmcgcmF3IHBjYXAgc3RyZWFtczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvcGNhcHBhcnNlLy5saWJzL2xpYmdzdHBjYXBwYXJzZS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RwY2FwcGFyc2Uuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXI8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcG5tLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wbm0ueG1sCmluZGV4IGNhNWEyNzMuLjNlNGNmZjQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wbm0ueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1wbm0ueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+UE5NIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvcG5tLy5saWJzL2xpYmdzdHBubS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3Rwbm0uc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXF0LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1xdC54bWwKaW5kZXggMzU4NjZjNS4uZTdlMTYwOCAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXF0LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcXQueG1sCkBAIC0xLDkgKzEsOSBAQAogPHBsdWdpbj4KICAgPG5hbWU+cXQ8L25hbWU+CiAgIDxkZXNjcmlwdGlvbj5RdCBzaW5rPC9kZXNjcmlwdGlvbj4KLSAgPGZpbGVuYW1lPi4uLy4uL2V4dC9xdC8ubGlicy9saWJxdHNpbmsuc288L2ZpbGVuYW1lPgotICA8YmFzZW5hbWU+bGlicXRzaW5rLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDxmaWxlbmFtZT4uLi8uLi9leHQvcXQvLmxpYnMvbGliZ3N0cXRzaW5rLnNvPC9maWxlbmFtZT4KKyAgPGJhc2VuYW1lPmxpYmdzdHF0c2luay5zbzwvYmFzZW5hbWU+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KQEAgLTIwLDcgKzIwLDcgQEAKICAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgogICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgogICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgotICAgICAgICAgIDxkZXRhaWxzPnZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTwvZGV0YWlscz4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpLCBmb3JtYXQ9KHN0cmluZylSR0JBLCB3aWR0aD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBoZWlnaHQ9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgZnJhbWVyYXRlPShmcmFjdGlvbilbIDAvMSwgMjE0NzQ4MzY0Ny8xIF0sIHRleHR1cmUtdGFyZ2V0PShzdHJpbmcpMkQ8L2RldGFpbHM+CiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmF3cGFyc2UueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJhd3BhcnNlLnhtbAppbmRleCAwZDFiZGE4Li44NDIwNDIzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmF3cGFyc2UueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yYXdwYXJzZS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5QYXJzZXMgYnl0ZSBzdHJlYW1zIGludG8gcmF3IGZyYW1lczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvcmF3cGFyc2UvLmxpYnMvbGliZ3N0cmF3cGFyc2Uuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0cmF3cGFyc2Uuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlbW92ZXNpbGVuY2UueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlbW92ZXNpbGVuY2UueG1sCmluZGV4IDllODgyOGUuLjMyZjI2ZDMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZW1vdmVzaWxlbmNlLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVtb3Zlc2lsZW5jZS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5SZW1vdmVzIHNpbGVuY2UgZnJvbSBhbiBhdWRpbyBzdHJlYW08L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3JlbW92ZXNpbGVuY2UvLmxpYnMvbGliZ3N0cmVtb3Zlc2lsZW5jZS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RyZW1vdmVzaWxlbmNlLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZXNpbmR2ZC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcmVzaW5kdmQueG1sCmluZGV4IDU3YTk4OTUuLmFlNGFhYmQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZXNpbmR2ZC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJlc2luZHZkLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlJlc2luIERWRCBwbGF5YmFjayBlbGVtZW50czwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvcmVzaW5kdmQvLmxpYnMvbGliZ3N0cmVzaW5kdmQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0cmVzaW5kdmQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5HUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lcjwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yZmJzcmMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWwKaW5kZXggYjUzMTQ4NC4uYzEyMTU2NSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJmYnNyYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5Db25uZWN0cyB0byBhIFZOQyBzZXJ2ZXIgYW5kIGRlY29kZXMgUkZCIHN0cmVhbTwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvbGlicmZiLy5saWJzL2xpYmdzdHJmYnNyYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RyZmJzcmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJzdmcueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJzdmcueG1sCmluZGV4IDczZmRiMjguLmJlMzBlY2UgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1yc3ZnLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnN2Zy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5SU1ZHIHBsdWdpbiBsaWJyYXJ5PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9yc3ZnLy5saWJzL2xpYmdzdHJzdmcuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0cnN2Zy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRtcC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRtcC54bWwKaW5kZXggZGU1MDk3ZS4uNDQ2OTc3YiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0bXAueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydG1wLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlJUTVAgc291cmNlIGFuZCBzaW5rPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9ydG1wLy5saWJzL2xpYmdzdHJ0bXAuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0cnRtcC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRwYmFkLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydHBiYWQueG1sCmluZGV4IGFhZGM1NTYuLmI0YTFiN2YgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydHBiYWQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydHBiYWQueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+UmVhbC10aW1lIHByb3RvY29sIHBsdWdpbnM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3J0cC8ubGlicy9saWJnc3RydHBiYWQuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0cnRwYmFkLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNi4wPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0cG9udmlmLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1ydHBvbnZpZi54bWwKaW5kZXggNGYwOTc2Yy4uNzRmZTc2MiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXJ0cG9udmlmLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tcnRwb252aWYueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+T05WSUYgU3RyZWFtaW5nIGZlYXR1cmVzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9vbnZpZi8ubGlicy9saWJnc3RydHBvbnZpZi5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RydHBvbnZpZi5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPnVua25vd248L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2JjLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zYmMueG1sCmluZGV4IDYzMWUwY2QuLmM1NWNlYzggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zYmMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zYmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+U0JDIGJsdWV0b290aCBhdWRpbyBzdXBwb3J0PC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9zYmMvLmxpYnMvbGliZ3N0c2JjLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHNiYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2Nocm8ueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNjaHJvLnhtbAppbmRleCAxZTE0ZTRkLi45ODNiNzRlIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2Nocm8ueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zY2hyby54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5TY2hyb2VkaW5nZXIgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9zY2hyb2VkaW5nZXIvLmxpYnMvbGliZ3N0c2Nocm8uc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c2Nocm8uc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNkcC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2RwLnhtbAppbmRleCBiYWZlNjFkLi4xYzI3NjE0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2RwLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2RwLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPmNvbmZpZ3VyZSBzdHJlYW1pbmcgc2Vzc2lvbnMgdXNpbmcgU0RQPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC9zZHAvLmxpYnMvbGliZ3N0c2RwZWxlbS5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzZHBlbGVtLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZWdtZW50Y2xpcC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2VnbWVudGNsaXAueG1sCmluZGV4IGRjYjJiNWEuLjJkY2U4ZjMgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zZWdtZW50Y2xpcC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNlZ21lbnRjbGlwLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlNlZ21lbnQgY2xpcCBlbGVtZW50czwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3Qvc2VnbWVudGNsaXAvLmxpYnMvbGliZ3N0c2VnbWVudGNsaXAuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c2VnbWVudGNsaXAuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNobS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2htLnhtbAppbmRleCAwMGE1ZWM5Li5iYzI3YjkxIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2htLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc2htLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPnNoYXJlZCBtZW1vcnkgc2luayBzb3VyY2U8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vc3lzL3NobS8ubGlicy9saWJnc3RzaG0uc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c2htLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zbW9vdGgueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWwKaW5kZXggYmI5YzBhOS4uZmE5MDQ5YyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5BcHBseSBhIHNtb290aCBmaWx0ZXIgdG8gYW4gaW1hZ2U8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3Ntb290aC8ubGlicy9saWJnc3RzbW9vdGguc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c21vb3RoLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zbW9vdGhzdHJlYW1pbmcueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aHN0cmVhbWluZy54bWwKaW5kZXggZTFkOTgwMy4uMjg0OGYyYiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aHN0cmVhbWluZy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNtb290aHN0cmVhbWluZy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5NaWNyb3NvZnQmYXBvcztzIFNtb290aCBTdHJlYW1pbmcgZm9ybWF0IHN1cHBvcnQgPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC9zbW9vdGhzdHJlYW1pbmcvLmxpYnMvbGliZ3N0c21vb3Roc3RyZWFtaW5nLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHNtb290aHN0cmVhbWluZy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc25kZmlsZS54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc25kZmlsZS54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2MxYWRhYwotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zbmRmaWxlLnhtbApAQCAtMCwwICsxLDM0IEBACis8cGx1Z2luPgorICA8bmFtZT5zbmRmaWxlPC9uYW1lPgorICA8ZGVzY3JpcHRpb24+dXNlIGxpYnNuZGZpbGUgdG8gcmVhZCBhbmQgd3JpdGUgdmFyaW91cyBhdWRpbyBmb3JtYXRzPC9kZXNjcmlwdGlvbj4KKyAgPGZpbGVuYW1lPi4uLy4uL2V4dC9zbmRmaWxlLy5saWJzL2xpYmdzdHNuZGZpbGUuc288L2ZpbGVuYW1lPgorICA8YmFzZW5hbWU+bGliZ3N0c25kZmlsZS5zbzwvYmFzZW5hbWU+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KKyAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KKyAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KKyAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KKyAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+CisgIDxlbGVtZW50cz4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPnNmZGVjPC9uYW1lPgorICAgICAgPGxvbmduYW1lPlNuZGZpbGUgZGVjb2RlcjwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+RGVjb2Rlci9BdWRpbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+UmVhZCBhdWRpbyBzdHJlYW1zIHVzaW5nIGxpYnNuZGZpbGU8L2Rlc2NyaXB0aW9uPgorICAgICAgPGF1dGhvcj5TdGVmYW4gU2F1ZXIgJmx0O2Vuc29uaWNAdXNlci5zZi5uZXQmZ3Q7PC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c2luazwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz5hdWRpby94LWlyY2FtOyBhdWRpby94LW5pc3Q7IGF1ZGlvL3gtcGFyaXM7IGF1ZGlvL3gtcmY2NDsgYXVkaW8veC1zZHM7IGF1ZGlvL3gtc3Z4OyBhdWRpby94LXZvYzsgYXVkaW8veC13NjQ7IGF1ZGlvL3gteGk8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgRjMyTEUsIFMzMkxFLCBTMTZMRSB9LCBsYXlvdXQ9KHN0cmluZylpbnRlcmxlYXZlZCwgcmF0ZT0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBjaGFubmVscz0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdPC9kZXRhaWxzPgorICAgICAgICA8L2NhcHM+CisgICAgICA8L3BhZHM+CisgICAgPC9lbGVtZW50PgorICA8L2VsZW1lbnRzPgorPC9wbHVnaW4+ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNvdW5kdG91Y2gueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNvdW5kdG91Y2gueG1sCmluZGV4IGNkOTgzNTUuLjY4N2UyYzAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zb3VuZHRvdWNoLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc291bmR0b3VjaC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5BdWRpbyBQaXRjaCBDb250cm9sbGVyICZhbXA7IEJQTSBEZXRlY3Rpb248L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3NvdW5kdG91Y2gvLmxpYnMvbGliZ3N0c291bmR0b3VjaC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3Rzb3VuZHRvdWNoLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGFuZHNwLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGFuZHNwLnhtbAppbmRleCA4MDIxNGUyLi4zZmNkMWYzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BhbmRzcC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNwYW5kc3AueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+bGlic3BhbmRzcCBwbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3NwYW5kc3AvLmxpYnMvbGliZ3N0c3BhbmRzcC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzcGFuZHNwLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KQEAgLTUxLDUgKzUxLDIwIEBACiAgICAgICAgIDwvY2Fwcz4KICAgICAgIDwvcGFkcz4KICAgICA8L2VsZW1lbnQ+CisgICAgPGVsZW1lbnQ+CisgICAgICA8bmFtZT50b25lZ2VuZXJhdGVzcmM8L25hbWU+CisgICAgICA8bG9uZ25hbWU+VGVsZXBob255IFRvbmUgIEdlbmVyYXRvciBzb3VyY2U8L2xvbmduYW1lPgorICAgICAgPGNsYXNzPlNvdXJjZS9BdWRpbzwvY2xhc3M+CisgICAgICA8ZGVzY3JpcHRpb24+Q3JlYXRlcyB0ZWxlcGhvbnkgc2lnbmFscyBvZiBnaXZlbiBmcmVxdWVuY3ksIHZvbHVtZSwgY2FkZW5jZTwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPklza3JhdGVsICZsdDt3d3cuaXNrcmF0ZWwuY29tJmd0OzwvYXV0aG9yPgorICAgICAgPHBhZHM+CisgICAgICAgIDxjYXBzPgorICAgICAgICAgIDxuYW1lPnNyYzwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNvdXJjZTwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPmF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCk4MDAwLCBjaGFubmVscz0oaW50KTE8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CiAgIDwvZWxlbWVudHM+CiA8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BlZWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNwZWVkLnhtbAppbmRleCBiOWY4MzVjLi5kYTgzYzUwIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3BlZWQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcGVlZC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5TZXQgc3BlZWQvcGl0Y2ggb24gYXVkaW8vcmF3IHN0cmVhbXMgKHJlc2FtcGxlcik8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3NwZWVkLy5saWJzL2xpYmdzdHNwZWVkLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHNwZWVkLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcnRwLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zcnRwLnhtbAppbmRleCA0Nzg1OTdhLi4xMzQzNjg3IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3J0cC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXNydHAueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIFNSVFA8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3NydHAvLmxpYnMvbGliZ3N0c3J0cC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzcnRwLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN0ZXJlby54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3RlcmVvLnhtbAppbmRleCBjNmZhY2ViLi5hYTQ1NmJhIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3RlcmVvLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tc3RlcmVvLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPk11Y2sgd2l0aCB0aGUgc3RlcmVvIHNpZ25hbCwgZW5oYW5jZSBpdCZhcG9zO3MgJmFwb3M7c3RlcmVvLW5lc3MmYXBvczs8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3N0ZXJlby8ubGlicy9saWJnc3RzdGVyZW8uc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0c3RlcmVvLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi1zdWJlbmMueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWwKaW5kZXggOGUwMWQzNy4uZTY5ZTk1YiAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXN1YmVuYy54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5zdWJ0aXRsZSBlbmNvZGVyczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3Qvc3ViZW5jLy5saWJzL2xpYmdzdHN1YmVuYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3RzdWJlbmMuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXRlbGV0ZXh0LnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi10ZWxldGV4dC54bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI2MWE0ZAotLS0gL2Rldi9udWxsCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi10ZWxldGV4dC54bWwKQEAgLTAsMCArMSwzNCBAQAorPHBsdWdpbj4KKyAgPG5hbWU+dGVsZXRleHQ8L25hbWU+CisgIDxkZXNjcmlwdGlvbj5UZWxldGV4dCBwbHVnaW48L2Rlc2NyaXB0aW9uPgorICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3RlbGV0ZXh0ZGVjLy5saWJzL2xpYmdzdHRlbGV0ZXh0ZGVjLnNvPC9maWxlbmFtZT4KKyAgPGJhc2VuYW1lPmxpYmdzdHRlbGV0ZXh0ZGVjLnNvPC9iYXNlbmFtZT4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgorICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgorICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgorICA8cGFja2FnZT5HU3RyZWFtZXI8L3BhY2thZ2U+CisgIDxvcmlnaW4+aHR0cDovL2dzdHJlYW1lci5uZXQvPC9vcmlnaW4+CisgIDxlbGVtZW50cz4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPnRlbGV0ZXh0ZGVjPC9uYW1lPgorICAgICAgPGxvbmduYW1lPlRlbGV0ZXh0IGRlY29kZXI8L2xvbmduYW1lPgorICAgICAgPGNsYXNzPkRlY29kZXI8L2NsYXNzPgorICAgICAgPGRlc2NyaXB0aW9uPkRlY29kZSBhIHJhdyBWQkkgc3RyZWFtIGNvbnRhaW5pbmcgdGVsZXRleHQgaW5mb3JtYXRpb24gdG8gUkdCQSBhbmQgdGV4dDwvZGVzY3JpcHRpb24+CisgICAgICA8YXV0aG9yPlNlYmFzdGlhbiBQw7Zsc3RlcmwgJmx0O3NlYnBAay1kLXcub3JnJmd0OywgQW5kb25pIE1vcmFsZXMgQWxhc3RydWV5ICZsdDt5bGF0dXlhQGdtYWlsLmNvbSZndDs8L2F1dGhvcj4KKyAgICAgIDxwYWRzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5zaW5rPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c2luazwvZGlyZWN0aW9uPgorICAgICAgICAgIDxwcmVzZW5jZT5hbHdheXM8L3ByZXNlbmNlPgorICAgICAgICAgIDxkZXRhaWxzPmFwcGxpY2F0aW9uL3gtdGVsZXRleHQ8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+c3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQkEsIHdpZHRoPShpbnQpWyAxLCAyMTQ3NDgzNjQ3IF0sIGhlaWdodD0oaW50KVsgMSwgMjE0NzQ4MzY0NyBdLCBmcmFtZXJhdGU9KGZyYWN0aW9uKVsgMC8xLCAyMTQ3NDgzNjQ3LzEgXTsgdGV4dC94LXJhdywgZm9ybWF0PShzdHJpbmcpeyB1dGYtOCwgcGFuZ28tbWFya3VwIH08L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgIDwvZWxlbWVudHM+Cis8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdXZjaDI2NC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdXZjaDI2NC54bWwKaW5kZXggMjgwZTQ5OC4uZjFjMDEwYyAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXV2Y2gyNjQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi11dmNoMjY0LnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPlVWQyBjb21wbGlhbnQgSDI2NCBlbmNvZGluZyBjYW1lcmFzIHBsdWdpbjwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9zeXMvdXZjaDI2NC8ubGlicy9saWJnc3R1dmNoMjY0LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHV2Y2gyNjQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZjZHNyYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmNkc3JjLnhtbAppbmRleCAwMjIyNDM2Li44ODA3MGIzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmNkc3JjLnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmNkc3JjLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkFzeW5jaHJvbm91cyByZWFkIGZyb20gVkNEIGRpc2s8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vc3lzL3ZjZC8ubGlicy9saWJnc3R2Y2RzcmMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0dmNkc3JjLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb2ZpbHRlcnNiYWQueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvZmlsdGVyc2JhZC54bWwKaW5kZXggODAxOTZmMy4uM2QzNGQwMSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvZmlsdGVyc2JhZC54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvZmlsdGVyc2JhZC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5WaWRlbyBmaWx0ZXJzIGluIGdzdC1wbHVnaW5zLWJhZDwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9nc3QvdmlkZW9maWx0ZXJzLy5saWJzL2xpYmdzdHZpZGVvZmlsdGVyc2JhZC5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R2aWRlb2ZpbHRlcnNiYWQuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5MR1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvZnJhbWVfYXVkaW9sZXZlbC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9mcmFtZV9hdWRpb2xldmVsLnhtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNTk2MGMyCi0tLSAvZGV2L251bGwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvZnJhbWVfYXVkaW9sZXZlbC54bWwKQEAgLTAsMCArMSw0NiBAQAorPHBsdWdpbj4KKyAgPG5hbWU+dmlkZW9mcmFtZV9hdWRpb2xldmVsPC9uYW1lPgorICA8ZGVzY3JpcHRpb24+VmlkZW8gZnJhbWUtc3luY2hyb25pemVkIGF1ZGlvIGxldmVsPC9kZXNjcmlwdGlvbj4KKyAgPGZpbGVuYW1lPi4uLy4uL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvLmxpYnMvbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsLnNvPC9maWxlbmFtZT4KKyAgPGJhc2VuYW1lPmxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbC5zbzwvYmFzZW5hbWU+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KKyAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KKyAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KKyAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KKyAgPG9yaWdpbj5Vbmtub3duIHBhY2thZ2Ugb3JpZ2luPC9vcmlnaW4+CisgIDxlbGVtZW50cz4KKyAgICA8ZWxlbWVudD4KKyAgICAgIDxuYW1lPnZpZGVvZnJhbWUtYXVkaW9sZXZlbDwvbmFtZT4KKyAgICAgIDxsb25nbmFtZT5WaWRlby1mcmFtZSBhdWRpbyBsZXZlbDwvbG9uZ25hbWU+CisgICAgICA8Y2xhc3M+RmlsdGVyL0FuYWx5emVyL0F1ZGlvPC9jbGFzcz4KKyAgICAgIDxkZXNjcmlwdGlvbj5TeW5jaHJvbml6ZWQgYXVkaW8vdmlkZW8gUk1TIExldmVsIG1lc3NlbmdlciBmb3IgYXVkaW8vcmF3PC9kZXNjcmlwdGlvbj4KKyAgICAgIDxhdXRob3I+Vml2aWEgTmlrb2xhaWRvdSAmbHQ7dml2aWFAdG9vbHNvbmFpci5jb20mZ3Q7PC9hdXRob3I+CisgICAgICA8cGFkcz4KKyAgICAgICAgPGNhcHM+CisgICAgICAgICAgPG5hbWU+YXNpbms8L25hbWU+CisgICAgICAgICAgPGRpcmVjdGlvbj5zaW5rPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzgsIFMxNkxFLCBTMzJMRSwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT52c2luazwvbmFtZT4KKyAgICAgICAgICA8ZGlyZWN0aW9uPnNpbms8L2RpcmVjdGlvbj4KKyAgICAgICAgICA8cHJlc2VuY2U+YWx3YXlzPC9wcmVzZW5jZT4KKyAgICAgICAgICA8ZGV0YWlscz52aWRlby94LXJhdzwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT5hc3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+YXVkaW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKXsgUzgsIFMxNkxFLCBTMzJMRSwgRjMyTEUsIEY2NExFIH0sIHJhdGU9KGludClbIDEsIDIxNDc0ODM2NDcgXSwgY2hhbm5lbHM9KGludClbIDEsIDIxNDc0ODM2NDcgXTwvZGV0YWlscz4KKyAgICAgICAgPC9jYXBzPgorICAgICAgICA8Y2Fwcz4KKyAgICAgICAgICA8bmFtZT52c3JjPC9uYW1lPgorICAgICAgICAgIDxkaXJlY3Rpb24+c291cmNlPC9kaXJlY3Rpb24+CisgICAgICAgICAgPHByZXNlbmNlPmFsd2F5czwvcHJlc2VuY2U+CisgICAgICAgICAgPGRldGFpbHM+dmlkZW8veC1yYXc8L2RldGFpbHM+CisgICAgICAgIDwvY2Fwcz4KKyAgICAgIDwvcGFkcz4KKyAgICA8L2VsZW1lbnQ+CisgIDwvZWxlbWVudHM+Cis8L3BsdWdpbj4KXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9wYXJzZXJzYmFkLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sCmluZGV4IDgxNzczNWEuLmE2Njg4YzQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3BhcnNlcnNiYWQueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+dmlkZW9wYXJzZXJzPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC92aWRlb3BhcnNlcnMvLmxpYnMvbGliZ3N0dmlkZW9wYXJzZXJzYmFkLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHZpZGVvcGFyc2Vyc2JhZC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9zaWduYWwueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZpZGVvc2lnbmFsLnhtbAppbmRleCBjNTk4ZGRhLi42OTY3NjgzIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdmlkZW9zaWduYWwueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12aWRlb3NpZ25hbC54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5WYXJpb3VzIHZpZGVvIHNpZ25hbCBhbmFseXNlcnM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3ZpZGVvc2lnbmFsLy5saWJzL2xpYmdzdHZpZGVvc2lnbmFsLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHZpZGVvc2lnbmFsLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12bW5jLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12bW5jLnhtbAppbmRleCAxNGJiZmQzLi41Y2FjNjg0IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm1uYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZtbmMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+Vm1XYXJlIFZpZGVvIENvZGVjIHBsdWdpbnM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3ZtbmMvLmxpYnMvbGliZ3N0dm1uYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R2bW5jLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FhY2VuYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hYWNlbmMueG1sCmluZGV4IGE3N2EwYzEuLjAyZDRkOTggMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FhY2VuYy54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYWFjZW5jLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkFBQyBhdWRpbyBlbmNvZGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC92b2FhY2VuYy8ubGlicy9saWJnc3R2b2FhY2VuYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R2b2FhY2VuYy5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hbXJ3YmVuYy54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4tdm9hbXJ3YmVuYy54bWwKaW5kZXggZTgzMTI0NC4uMzc3YmUwNSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXZvYW1yd2JlbmMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi12b2FtcndiZW5jLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPkFkYXB0aXZlIE11bHRpLVJhdGUgV2lkZS1CYW5kIEVuY29kZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3ZvYW1yd2JlbmMvLmxpYnMvbGliZ3N0dm9hbXJ3YmVuYy5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R2b2FtcndiZW5jLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+dW5rbm93bjwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13YXlsYW5kc2luay54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2F5bGFuZHNpbmsueG1sCmluZGV4IGYxYzgwZGQuLjNiMzE5MjQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13YXlsYW5kc2luay54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXdheWxhbmRzaW5rLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPldheWxhbmQgVmlkZW8gU2luazwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQvd2F5bGFuZC8ubGlicy9saWJnc3R3YXlsYW5kc2luay5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R3YXlsYW5kc2luay5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2VicC54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2VicC54bWwKaW5kZXggNmNiOGFiMy4uZGYxZjhlYSAxMDA2NDQKLS0tIGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXdlYnAueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13ZWJwLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPldlYlAgcGx1Z2luPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2V4dC93ZWJwLy5saWJzL2xpYmdzdHdlYnAuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0d2VicC5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkxHUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2lsZG1pZGkueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXdpbGRtaWRpLnhtbAppbmRleCA3NmExZTg3Li5kZmQ3YTY4IDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4td2lsZG1pZGkueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi13aWxkbWlkaS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj5XaWxkbWlkaSBQbHVnaW48L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3RpbWlkaXR5Ly5saWJzL2xpYmdzdHdpbGRtaWRpLnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHdpbGRtaWRpLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+R1BMPC9saWNlbnNlPgogICA8c291cmNlPmdzdC1wbHVnaW5zLWJhZDwvc291cmNlPgogICA8cGFja2FnZT5HU3RyZWFtZXIgQmFkIFBsdWctaW5zIHNvdXJjZSByZWxlYXNlPC9wYWNrYWdlPgpkaWZmIC0tZ2l0IGEvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXgyNjUueG1sIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXgyNjUueG1sCmluZGV4IGMwZmUzNmUuLmRkY2JlOTIgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi14MjY1LnhtbAorKysgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teDI2NS54bWwKQEAgLTMsNyArMyw3IEBACiAgIDxkZXNjcmlwdGlvbj54MjY1LWJhc2VkIEgyNjUgcGx1Z2luczwvZGVzY3JpcHRpb24+CiAgIDxmaWxlbmFtZT4uLi8uLi9leHQveDI2NS8ubGlicy9saWJnc3R4MjY1LnNvPC9maWxlbmFtZT4KICAgPGJhc2VuYW1lPmxpYmdzdHgyNjUuc288L2Jhc2VuYW1lPgotICA8dmVyc2lvbj4xLjYuMzwvdmVyc2lvbj4KKyAgPHZlcnNpb24+MS43LjkxPC92ZXJzaW9uPgogICA8bGljZW5zZT5HUEw8L2xpY2Vuc2U+CiAgIDxzb3VyY2U+Z3N0LXBsdWdpbnMtYmFkPC9zb3VyY2U+CiAgIDxwYWNrYWdlPkdTdHJlYW1lciBCYWQgUGx1Zy1pbnMgc291cmNlIHJlbGVhc2U8L3BhY2thZ2U+CmRpZmYgLS1naXQgYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teTRtZGVjLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi15NG1kZWMueG1sCmluZGV4IDU3Mjg1NDYuLjJiMmM5NzAgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi15NG1kZWMueG1sCisrKyBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi15NG1kZWMueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+RGVtdXhlcy9kZWNvZGVzIFlVVjRNUEVHIHN0cmVhbXM8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZ3N0L3k0bS8ubGlicy9saWJnc3R5NG1kZWMuc288L2ZpbGVuYW1lPgogICA8YmFzZW5hbWU+bGliZ3N0eTRtZGVjLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWluczwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi15YWRpZi54bWwgYi9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4teWFkaWYueG1sCmluZGV4IDAwYzQ5M2YuLmI5NmQyYTQgMTAwNjQ0Ci0tLSBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi15YWRpZi54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXlhZGlmLnhtbApAQCAtMyw3ICszLDcgQEAKICAgPGRlc2NyaXB0aW9uPllBRElGIGRlaW50ZXJsYWNpbmcgZmlsdGVyPC9kZXNjcmlwdGlvbj4KICAgPGZpbGVuYW1lPi4uLy4uL2dzdC95YWRpZi8ubGlicy9saWJnc3R5YWRpZi5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R5YWRpZi5zbzwvYmFzZW5hbWU+Ci0gIDx2ZXJzaW9uPjEuNi4zPC92ZXJzaW9uPgorICA8dmVyc2lvbj4xLjcuOTE8L3ZlcnNpb24+CiAgIDxsaWNlbnNlPkdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWluczwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi16YmFyLnhtbCBiL2RvY3MvcGx1Z2lucy9pbnNwZWN0L3BsdWdpbi16YmFyLnhtbAppbmRleCAwYTVlZTU5Li5lNjkyZjZjIDEwMDY0NAotLS0gYS9kb2NzL3BsdWdpbnMvaW5zcGVjdC9wbHVnaW4temJhci54bWwKKysrIGIvZG9jcy9wbHVnaW5zL2luc3BlY3QvcGx1Z2luLXpiYXIueG1sCkBAIC0zLDcgKzMsNyBAQAogICA8ZGVzY3JpcHRpb24+emJhciBiYXJjb2RlIHNjYW5uZXI8L2Rlc2NyaXB0aW9uPgogICA8ZmlsZW5hbWU+Li4vLi4vZXh0L3piYXIvLmxpYnMvbGliZ3N0emJhci5zbzwvZmlsZW5hbWU+CiAgIDxiYXNlbmFtZT5saWJnc3R6YmFyLnNvPC9iYXNlbmFtZT4KLSAgPHZlcnNpb24+MS42LjM8L3ZlcnNpb24+CisgIDx2ZXJzaW9uPjEuNy45MTwvdmVyc2lvbj4KICAgPGxpY2Vuc2U+TEdQTDwvbGljZW5zZT4KICAgPHNvdXJjZT5nc3QtcGx1Z2lucy1iYWQ8L3NvdXJjZT4KICAgPHBhY2thZ2U+R1N0cmVhbWVyIEJhZCBQbHVnLWlucyBzb3VyY2UgcmVsZWFzZTwvcGFja2FnZT4KZGlmZiAtLWdpdCBhL2V4dC9NYWtlZmlsZS5hbSBiL2V4dC9NYWtlZmlsZS5hbQppbmRleCAzM2RkYmE3Li5mOTdlZjQ0IDEwMDY0NAotLS0gYS9leHQvTWFrZWZpbGUuYW0KKysrIGIvZXh0L01ha2VmaWxlLmFtCkBAIC0xNiwxMiArMTYsNiBAQAogQVBFWFNJTktfRElSID0KIGVuZGlmCiAKLSMgaWYgVVNFX0FVRElPRklMRQotIyBBVURJT0ZJTEVfRElSPWF1ZGlvZmlsZQotIyBlbHNlCi1BVURJT0ZJTEVfRElSPQotIyBlbmRpZgotCiBpZiBVU0VfQlMyQgogQlMyQl9ESVI9YnMyYgogZWxzZQpAQCAtMTY2LDEyICsxNjAsNiBAQAogTElCREUyNjVfRElSID0KIGVuZGlmCiAKLSMgaWYgVVNFX0xJQkZBTUUKLSMgTElCRkFNRV9ESVI9bGliZmFtZQotIyBlbHNlCi1MSUJGQU1FX0RJUj0KLSMgZW5kaWYKLQogaWYgVVNFX0xJQk1NUwogTElCTU1TX0RJUj1saWJtbXMKIGVsc2UKQEAgLTE5NiwxMiArMTg0LDYgQEAKIE1QRUcyRU5DX0RJUj0KIGVuZGlmCiAKLWlmIFVTRV9NUEcxMjMKLU1QRzEyM19ESVI9bXBnMTIzCi1lbHNlCi1NUEcxMjNfRElSPQotZW5kaWYKLQogaWYgVVNFX01JTUlDCiBNSU1JQ19ESVI9bWltaWMKIGVsc2UKQEAgLTM4MiwxMiArMzY0LDYgQEAKIFRFTEVURVhUREVDX0RJUj0KIGVuZGlmCiAKLWlmIFVTRV9HU0VUVElOR1MKLUdTRVRUSU5HU19ESVI9Z3NldHRpbmdzCi1lbHNlCi1HU0VUVElOR1NfRElSPQotZW5kaWYKLQogaWYgVVNFX1hWSUQKIFhWSURfRElSPXh2aWQKIGVsc2UKQEAgLTQzMCw2ICs0MDYsMTIgQEAKIERUTFNfRElSPQogZW5kaWYKIAoraWYgVVNFX1ZVTEtBTgorVlVMS0FOX0RJUj12dWxrYW4KK2Vsc2UKK1ZVTEtBTl9ESVI9CitlbmRpZgorCiBTVUJESVJTPVwKIAkkKFZPQUFDRU5DX0RJUikgXAogCSQoQVNTUkVOREVSX0RJUikgXApAQCAtNDU0LDE5ICs0MzYsMTYgQEAKIAkkKEZBQURfRElSKSBcCiAJJChGTElURV9ESVIpIFwKIAkkKEZMVUlEU1lOVEhfRElSKSBcCi0JJChHU0VUVElOR1NfRElSKSBcCiAJJChHU01fRElSKSBcCiAJJChHNzI5X0RJUikgXAogCSQoS0FURV9ESVIpIFwKIAkkKExBRFNQQV9ESVIpIFwKIAkkKExWMl9ESVIpIFwKIAkkKExJQkRFMjY1X0RJUikgXAotCSQoTElCRkFNRV9ESVIpIFwKIAkkKExJQk1NU19ESVIpIFwKIAkkKExJQlZJU1VBTF9ESVIpIFwKIAkkKE1PRFBMVUdfRElSKSBcCiAJJChNUEVHMkVOQ19ESVIpIFwKLQkkKE1QRzEyM19ESVIpIFwKIAkkKE1JTUlDX0RJUikgXAogCSQoTVBMRVhfRElSKSBcCiAJJChNVVNFUEFDS19ESVIpIFwKQEAgLTUwMSw3ICs0ODAsOCBAQAogCSQoSExTX0RJUikgXAogCSQoV0VCUF9ESVIpIFwKIAkkKFgyNjVfRElSKSBcCi0JJChEVExTX0RJUikKKwkkKERUTFNfRElSKSBcCisJJChWVUxLQU5fRElSKQogCiBESVNUX1NVQkRJUlMgPSBcCiAJYXNzcmVuZGVyIFwKQEAgLTUxOCw3ICs0OTgsNiBAQAogCWZhYWQgXAogCWZsaXRlIFwKIAlmbHVpZHN5bnRoIFwKLQlnc2V0dGluZ3MgXAogCWdzbSBcCiAJaGxzIFwKIAlsYWRzcGEgXApAQCAtNTM1LDcgKzUxNCw2IEBACiAJbW9kcGx1ZyBcCiAJbWltaWMgXAogCW1wZWcyZW5jIFwKLQltcGcxMjMgXAogCW1wbGV4IFwKIAltdXNlcGFjayBcCiAJbmFzIFwKQEAgLTU3MCw2ICs1NDgsNyBAQAogCXJ0bXAgXAogCXdlYnAgXAogCXgyNjUgXAotCWR0bHMKKwlkdGxzIFwKKwl2dWxrYW4KIAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9wYXJhbGxlbC1zdWJkaXJzLm1hawpkaWZmIC0tZ2l0IGEvZXh0L01ha2VmaWxlLmluIGIvZXh0L01ha2VmaWxlLmluCmluZGV4IDRmNWVhZTkuLjgyYjZkNmQgMTAwNjQ0Ci0tLSBhL2V4dC9NYWtlZmlsZS5pbgorKysgYi9leHQvTWFrZWZpbGUuaW4KQEAgLTExOSwxNiArMTE5LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNTMsNiArMjUyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yOTAsNiArMjkxLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTgsNyArMzAxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzE3LDggKzMxOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMzUsMTYgKzMzOCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNzAsNiArMzc0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzk1LDYgKzQwMSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5Niw2ICs1MDQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTA5LDggKzUxOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyNiw2ICs1MzMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTgzLDE2ICs1OTIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NDQsNiArNjU1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY1NCw2ICs2NjYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NjMsNiArNjc2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcwMCw3ICs3MTUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc0NiwxMyArNzYwLDcgQEAKIEBVU0VfVk9BTVJXQkVOQ19UUlVFQFZPQU1SV0JFTkNfRElSID0gdm9hbXJ3YmVuYwogQFVTRV9BUEVYU0lOS19GQUxTRUBBUEVYU0lOS19ESVIgPSAKIEBVU0VfQVBFWFNJTktfVFJVRUBBUEVYU0lOS19ESVIgPSBhcGV4c2luawotCi0jIGlmIFVTRV9BVURJT0ZJTEUKLSMgQVVESU9GSUxFX0RJUj1hdWRpb2ZpbGUKLSMgZWxzZQotQVVESU9GSUxFX0RJUiA9IAogQFVTRV9CUzJCX0ZBTFNFQEJTMkJfRElSID0gCi0jIGVuZGlmCiBAVVNFX0JTMkJfVFJVRUBCUzJCX0RJUiA9IGJzMmIKIEBVU0VfQloyX0ZBTFNFQEJaMl9ESVIgPSAKIEBVU0VfQloyX1RSVUVAQloyX0RJUiA9IGJ6MgpAQCAtODA0LDEzICs4MTIsNyBAQAogQFVTRV9MVjJfVFJVRUBMVjJfRElSID0gbHYyCiBAVVNFX0xJQkRFMjY1X0ZBTFNFQExJQkRFMjY1X0RJUiA9IAogQFVTRV9MSUJERTI2NV9UUlVFQExJQkRFMjY1X0RJUiA9IGxpYmRlMjY1Ci0KLSMgaWYgVVNFX0xJQkZBTUUKLSMgTElCRkFNRV9ESVI9bGliZmFtZQotIyBlbHNlCi1MSUJGQU1FX0RJUiA9IAogQFVTRV9MSUJNTVNfRkFMU0VATElCTU1TX0RJUiA9IAotIyBlbmRpZgogQFVTRV9MSUJNTVNfVFJVRUBMSUJNTVNfRElSID0gbGlibW1zCiBAVVNFX0xJQlZJU1VBTF9GQUxTRUBMSUJWSVNVQUxfRElSID0gCiBAVVNFX0xJQlZJU1VBTF9UUlVFQExJQlZJU1VBTF9ESVIgPSBsaWJ2aXN1YWwKQEAgLTgxOCw4ICs4MjAsNiBAQAogQFVTRV9NT0RQTFVHX1RSVUVATU9EUExVR19ESVIgPSBtb2RwbHVnCiBAVVNFX01QRUcyRU5DX0ZBTFNFQE1QRUcyRU5DX0RJUiA9IAogQFVTRV9NUEVHMkVOQ19UUlVFQE1QRUcyRU5DX0RJUiA9IG1wZWcyZW5jCi1AVVNFX01QRzEyM19GQUxTRUBNUEcxMjNfRElSID0gCi1AVVNFX01QRzEyM19UUlVFQE1QRzEyM19ESVIgPSBtcGcxMjMKIEBVU0VfTUlNSUNfRkFMU0VATUlNSUNfRElSID0gCiBAVVNFX01JTUlDX1RSVUVATUlNSUNfRElSID0gbWltaWMKIEBVU0VfTVBMRVhfRkFMU0VATVBMRVhfRElSID0gCkBAIC04ODIsOCArODgyLDYgQEAKIEBVU0VfR01FX1RSVUVAR01FX0RJUiA9IGdtZQogQFVTRV9URUxFVEVYVERFQ19GQUxTRUBURUxFVEVYVERFQ19ESVIgPSAKIEBVU0VfVEVMRVRFWFRERUNfVFJVRUBURUxFVEVYVERFQ19ESVIgPSB0ZWxldGV4dGRlYwotQFVTRV9HU0VUVElOR1NfRkFMU0VAR1NFVFRJTkdTX0RJUiA9IAotQFVTRV9HU0VUVElOR1NfVFJVRUBHU0VUVElOR1NfRElSID0gZ3NldHRpbmdzCiBAVVNFX1hWSURfRkFMU0VAWFZJRF9ESVIgPSAKIEBVU0VfWFZJRF9UUlVFQFhWSURfRElSID0geHZpZAogQFVTRV9aQkFSX0ZBTFNFQFpCQVJfRElSID0gCkBAIC04OTgsNiArODk2LDggQEAKIEBVU0VfWDI2NV9UUlVFQFgyNjVfRElSID0geDI2NQogQFVTRV9EVExTX0ZBTFNFQERUTFNfRElSID0gCiBAVVNFX0RUTFNfVFJVRUBEVExTX0RJUiA9IGR0bHMKK0BVU0VfVlVMS0FOX0ZBTFNFQFZVTEtBTl9ESVIgPSAKK0BVU0VfVlVMS0FOX1RSVUVAVlVMS0FOX0RJUiA9IHZ1bGthbgogU1VCRElSUyA9IFwKIAkkKFZPQUFDRU5DX0RJUikgXAogCSQoQVNTUkVOREVSX0RJUikgXApAQCAtOTIyLDE5ICs5MjIsMTYgQEAKIAkkKEZBQURfRElSKSBcCiAJJChGTElURV9ESVIpIFwKIAkkKEZMVUlEU1lOVEhfRElSKSBcCi0JJChHU0VUVElOR1NfRElSKSBcCiAJJChHU01fRElSKSBcCiAJJChHNzI5X0RJUikgXAogCSQoS0FURV9ESVIpIFwKIAkkKExBRFNQQV9ESVIpIFwKIAkkKExWMl9ESVIpIFwKIAkkKExJQkRFMjY1X0RJUikgXAotCSQoTElCRkFNRV9ESVIpIFwKIAkkKExJQk1NU19ESVIpIFwKIAkkKExJQlZJU1VBTF9ESVIpIFwKIAkkKE1PRFBMVUdfRElSKSBcCiAJJChNUEVHMkVOQ19ESVIpIFwKLQkkKE1QRzEyM19ESVIpIFwKIAkkKE1JTUlDX0RJUikgXAogCSQoTVBMRVhfRElSKSBcCiAJJChNVVNFUEFDS19ESVIpIFwKQEAgLTk2OSw3ICs5NjYsOCBAQAogCSQoSExTX0RJUikgXAogCSQoV0VCUF9ESVIpIFwKIAkkKFgyNjVfRElSKSBcCi0JJChEVExTX0RJUikKKwkkKERUTFNfRElSKSBcCisJJChWVUxLQU5fRElSKQogCiBESVNUX1NVQkRJUlMgPSBcCiAJYXNzcmVuZGVyIFwKQEAgLTk4Niw3ICs5ODQsNiBAQAogCWZhYWQgXAogCWZsaXRlIFwKIAlmbHVpZHN5bnRoIFwKLQlnc2V0dGluZ3MgXAogCWdzbSBcCiAJaGxzIFwKIAlsYWRzcGEgXApAQCAtMTAwMyw3ICsxMDAwLDYgQEAKIAltb2RwbHVnIFwKIAltaW1pYyBcCiAJbXBlZzJlbmMgXAotCW1wZzEyMyBcCiAJbXBsZXggXAogCW11c2VwYWNrIFwKIAluYXMgXApAQCAtMTAzOCw3ICsxMDM0LDggQEAKIAlydG1wIFwKIAl3ZWJwIFwKIAl4MjY1IFwKLQlkdGxzCisJZHRscyBcCisJdnVsa2FuCiAKIGFsbDogYWxsLXJlY3Vyc2l2ZQogCmRpZmYgLS1naXQgYS9leHQvYXBleHNpbmsvTWFrZWZpbGUuaW4gYi9leHQvYXBleHNpbmsvTWFrZWZpbGUuaW4KaW5kZXggZjY3M2E0MS4uYzczODg4YiAxMDA2NDQKLS0tIGEvZXh0L2FwZXhzaW5rL01ha2VmaWxlLmluCisrKyBiL2V4dC9hcGV4c2luay9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzcsNiArMjc2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTQsNiArMzE1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjIsNyArMzI1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQxLDggKzM0Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTksMTYgKzM2MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTQsNiArMzk4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE5LDYgKzQyNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMCw2ICs1MjgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMzLDggKzU0Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MCw2ICs1NTcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA3LDE2ICs2MTYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjgsNiArNjc5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OCw2ICs2OTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODcsNiArNzAwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNCw3ICs3MzksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9hc3NyZW5kZXIvTWFrZWZpbGUuaW4gYi9leHQvYXNzcmVuZGVyL01ha2VmaWxlLmluCmluZGV4IDY4MTYwMjUuLmJlMjNlYzIgMTAwNjQ0Ci0tLSBhL2V4dC9hc3NyZW5kZXIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2Fzc3JlbmRlci9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmMgYi9leHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5jCmluZGV4IGRlNzZhZjAuLjkxM2JlYjUgMTAwNjQ0Ci0tLSBhL2V4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmMKKysrIGIvZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj0vcGF0aC90by9ta3YgISBtYXRyb3NrYWRlbXV4IG5hbWU9ZCAhIHF1ZXVlICEgbXAzcGFyc2UgISBtYWQgISBhdWRpb2NvbnZlcnQgISBhdXRvYXVkaW9zaW5rICBkLiAhIHF1ZXVlICEgZmZkZWNfaDI2NCAhIHZpZGVvY29udmVydCAhIHIuICAgZC4gISBxdWV1ZSAhICJhcHBsaWNhdGlvbi94LWFzcyIgISBhc3NyZW5kZXIgbmFtZT1yICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj0vcGF0aC90by9ta3YgISBtYXRyb3NrYWRlbXV4IG5hbWU9ZCAhIHF1ZXVlICEgbXBlZ2F1ZGlvcGFyc2UgISBtYWQgISBhdWRpb2NvbnZlcnQgISBhdXRvYXVkaW9zaW5rICBkLiAhIHF1ZXVlICEgaDI2NHBhcnNlICEgYXZkZWNfaDI2NCAhIHZpZGVvY29udmVydCAhIHIuICAgZC4gISBxdWV1ZSAhICJhcHBsaWNhdGlvbi94LWFzcyIgISBhc3NyZW5kZXIgbmFtZT1yICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhpcyBwaXBlbGluZSBkZW11eGVzIGEgTWF0cm9za2EgZmlsZSB3aXRoIGguMjY0IHZpZGVvLCBNUDMgYXVkaW8gYW5kIGVtYmVkZGVkIEFTUyBzdWJ0aXRsZXMgYW5kIHJlbmRlcnMgdGhlIHN1YnRpdGxlcyBvbiB0b3Agb2YgdGhlIHZpZGVvLgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtMTg0LDcgKzE4NCw2IEBACiAgICAgICAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7CiB9CiAKLSNpZiBkZWZpbmVkKExJQkFTU19WRVJTSU9OKSAmJiBMSUJBU1NfVkVSU0lPTiA+PSAweDAwOTA3MDAwCiBzdGF0aWMgdm9pZAogX2xpYmFzc19tZXNzYWdlX2NiIChnaW50IGxldmVsLCBjb25zdCBnY2hhciAqIGZtdCwgdmFfbGlzdCBhcmdzLAogICAgIGdwb2ludGVyIHJlbmRlcikKQEAgLTIwNCw3ICsyMDMsNiBAQAogCiAgIGdfZnJlZSAobWVzc2FnZSk7CiB9Ci0jZW5kaWYKIAogc3RhdGljIHZvaWQKIGdzdF9hc3NfcmVuZGVyX2luaXQgKEdzdEFzc1JlbmRlciAqIHJlbmRlcikKQEAgLTI1Niw5ICsyNTQsNyBAQAogCiAgIGdfbXV0ZXhfaW5pdCAoJnJlbmRlci0+YXNzX211dGV4KTsKICAgcmVuZGVyLT5hc3NfbGlicmFyeSA9IGFzc19saWJyYXJ5X2luaXQgKCk7Ci0jaWYgZGVmaW5lZChMSUJBU1NfVkVSU0lPTikgJiYgTElCQVNTX1ZFUlNJT04gPj0gMHgwMDkwNzAwMAogICBhc3Nfc2V0X21lc3NhZ2VfY2IgKHJlbmRlci0+YXNzX2xpYnJhcnksIF9saWJhc3NfbWVzc2FnZV9jYiwgcmVuZGVyKTsKLSNlbmRpZgogICBhc3Nfc2V0X2V4dHJhY3RfZm9udHMgKHJlbmRlci0+YXNzX2xpYnJhcnksIDEpOwogCiAgIHJlbmRlci0+YXNzX3JlbmRlcmVyID0gYXNzX3JlbmRlcmVyX2luaXQgKHJlbmRlci0+YXNzX2xpYnJhcnkpOwpAQCAtMjk4LDYgKzI5NCwxNSBAQAogfQogCiBzdGF0aWMgdm9pZAorZ3N0X2Fzc19yZW5kZXJfcmVzZXRfY29tcG9zaXRpb24gKEdzdEFzc1JlbmRlciAqIHJlbmRlcikKK3sKKyAgaWYgKHJlbmRlci0+Y29tcG9zaXRpb24pIHsKKyAgICBnc3RfdmlkZW9fb3ZlcmxheV9jb21wb3NpdGlvbl91bnJlZiAocmVuZGVyLT5jb21wb3NpdGlvbik7CisgICAgcmVuZGVyLT5jb21wb3NpdGlvbiA9IE5VTEw7CisgIH0KK30KKworc3RhdGljIHZvaWQKIGdzdF9hc3NfcmVuZGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQogewpAQCAtMzkxLDEyICszOTYsOSBAQAogICAgICAgaWYgKHJlbmRlci0+YXNzX3RyYWNrKQogICAgICAgICBhc3NfZnJlZV90cmFjayAocmVuZGVyLT5hc3NfdHJhY2spOwogICAgICAgcmVuZGVyLT5hc3NfdHJhY2sgPSBOVUxMOwotICAgICAgaWYgKHJlbmRlci0+Y29tcG9zaXRpb24pIHsKLSAgICAgICAgZ3N0X3ZpZGVvX292ZXJsYXlfY29tcG9zaXRpb25fdW5yZWYgKHJlbmRlci0+Y29tcG9zaXRpb24pOwotICAgICAgICByZW5kZXItPmNvbXBvc2l0aW9uID0gTlVMTDsKLSAgICAgIH0KICAgICAgIHJlbmRlci0+dHJhY2tfaW5pdF9vayA9IEZBTFNFOwogICAgICAgcmVuZGVyLT5yZW5kZXJlcl9pbml0X29rID0gRkFMU0U7CisgICAgICBnc3RfYXNzX3JlbmRlcl9yZXNldF9jb21wb3NpdGlvbiAocmVuZGVyKTsKICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmcmVuZGVyLT5hc3NfbXV0ZXgpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKQEAgLTY4NCwzNCArNjg2LDQwIEBACiAgICAgZHN0X3ggPSBhc3NfaW1hZ2UtPmRzdF94ICsgeF9vZmY7CiAgICAgZHN0X3kgPSBhc3NfaW1hZ2UtPmRzdF95ICsgeV9vZmY7CiAKLSAgICBpZiAoZHN0X3kgPj0gaGVpZ2h0IHx8IGRzdF94ID49IHdpZHRoKQorICAgIHcgPSBNSU4gKGFzc19pbWFnZS0+dywgd2lkdGggLSBkc3RfeCk7CisgICAgaCA9IE1JTiAoYXNzX2ltYWdlLT5oLCBoZWlnaHQgLSBkc3RfeSk7CisgICAgaWYgKHcgPD0gMCB8fCBoIDw9IDApCiAgICAgICBnb3RvIG5leHQ7CiAKICAgICBhbHBoYSA9IDI1NSAtIChhc3NfaW1hZ2UtPmNvbG9yICYgMHhmZik7CisgICAgaWYgKCFhbHBoYSkKKyAgICAgIGdvdG8gbmV4dDsKKwogICAgIHIgPSAoKGFzc19pbWFnZS0+Y29sb3IpID4+IDI0KSAmIDB4ZmY7CiAgICAgZyA9ICgoYXNzX2ltYWdlLT5jb2xvcikgPj4gMTYpICYgMHhmZjsKICAgICBiID0gKChhc3NfaW1hZ2UtPmNvbG9yKSA+PiA4KSAmIDB4ZmY7CisKICAgICBzcmMgPSBhc3NfaW1hZ2UtPmJpdG1hcDsKICAgICBkc3QgPSBkYXRhICsgZHN0X3kgKiBzdHJpZGUgKyBkc3RfeCAqIDQ7CiAKLSAgICB3ID0gTUlOIChhc3NfaW1hZ2UtPncsIHdpZHRoIC0gZHN0X3gpOwotICAgIGggPSBNSU4gKGFzc19pbWFnZS0+aCwgaGVpZ2h0IC0gZHN0X3kpOwogICAgIHNyY19za2lwID0gYXNzX2ltYWdlLT5zdHJpZGUgLSB3OwogICAgIGRzdF9za2lwID0gc3RyaWRlIC0gdyAqIDQ7CiAKICAgICBmb3IgKHkgPSAwOyB5IDwgaDsgeSsrKSB7CiAgICAgICBmb3IgKHggPSAwOyB4IDwgdzsgeCsrKSB7Ci0gICAgICAgIGsgPSBzcmNbMF0gKiBhbHBoYSAvIDI1NTsKLSAgICAgICAgaWYgKGRzdFszXSA9PSAwKSB7Ci0gICAgICAgICAgZHN0WzNdID0gazsKLSAgICAgICAgICBkc3RbMl0gPSAoayAqIHIpIC8gMjU1OwotICAgICAgICAgIGRzdFsxXSA9IChrICogZykgLyAyNTU7Ci0gICAgICAgICAgZHN0WzBdID0gKGsgKiBiKSAvIDI1NTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBkc3RbM10gPSBrICsgKDI1NSAtIGspICogZHN0WzNdIC8gMjU1OwotICAgICAgICAgIGRzdFsyXSA9IChrICogciArICgyNTUgLSBrKSAqIGRzdFsyXSkgLyAyNTU7Ci0gICAgICAgICAgZHN0WzFdID0gKGsgKiBnICsgKDI1NSAtIGspICogZHN0WzFdKSAvIDI1NTsKLSAgICAgICAgICBkc3RbMF0gPSAoayAqIGIgKyAoMjU1IC0gaykgKiBkc3RbMF0pIC8gMjU1OworICAgICAgICBpZiAoc3JjWzBdKSB7CisgICAgICAgICAgayA9IHNyY1swXSAqIGFscGhhIC8gMjU1OworICAgICAgICAgIGlmIChkc3RbM10gPT0gMCkgeworICAgICAgICAgICAgZHN0WzNdID0gazsKKyAgICAgICAgICAgIGRzdFsyXSA9IChrICogcikgLyAyNTU7CisgICAgICAgICAgICBkc3RbMV0gPSAoayAqIGcpIC8gMjU1OworICAgICAgICAgICAgZHN0WzBdID0gKGsgKiBiKSAvIDI1NTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgZHN0WzNdID0gayArICgyNTUgLSBrKSAqIGRzdFszXSAvIDI1NTsKKyAgICAgICAgICAgIGRzdFsyXSA9IChrICogciArICgyNTUgLSBrKSAqIGRzdFsyXSkgLyAyNTU7CisgICAgICAgICAgICBkc3RbMV0gPSAoayAqIGcgKyAoMjU1IC0gaykgKiBkc3RbMV0pIC8gMjU1OworICAgICAgICAgICAgZHN0WzBdID0gKGsgKiBiICsgKDI1NSAtIGspICogZHN0WzBdKSAvIDI1NTsKKyAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgc3JjKys7CiAgICAgICAgIGRzdCArPSA0OwpAQCAtNzQwLDEzNyArNzQ4LDIyOCBAQAogICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgdm9pZAorZ3N0X2Fzc19yZW5kZXJfdXBkYXRlX3JlbmRlcl9zaXplIChHc3RBc3NSZW5kZXIgKiByZW5kZXIpCit7CisgIGdkb3VibGUgdmlkZW9fYXNwZWN0ID0gKGdkb3VibGUpIHJlbmRlci0+aW5mby53aWR0aCAvCisgICAgICAoZ2RvdWJsZSkgcmVuZGVyLT5pbmZvLmhlaWdodDsKKyAgZ2RvdWJsZSB3aW5kb3dfYXNwZWN0ID0gKGdkb3VibGUpIHJlbmRlci0+d2luZG93X3dpZHRoIC8KKyAgICAgIChnZG91YmxlKSByZW5kZXItPndpbmRvd19oZWlnaHQ7CisKKyAgLyogcmVuZGVyIGF0IHRoZSB3aW5kb3cgc2l6ZSwgd2l0aCB0aGUgdmlkZW8gYXNwZWN0IHJhdGlvICovCisgIGlmICh2aWRlb19hc3BlY3QgPj0gd2luZG93X2FzcGVjdCkgeworICAgIHJlbmRlci0+YXNzX2ZyYW1lX3dpZHRoID0gcmVuZGVyLT53aW5kb3dfd2lkdGg7CisgICAgcmVuZGVyLT5hc3NfZnJhbWVfaGVpZ2h0ID0gcmVuZGVyLT53aW5kb3dfd2lkdGggLyB2aWRlb19hc3BlY3Q7CisgIH0gZWxzZSB7CisgICAgcmVuZGVyLT5hc3NfZnJhbWVfd2lkdGggPSByZW5kZXItPndpbmRvd19oZWlnaHQgKiB2aWRlb19hc3BlY3Q7CisgICAgcmVuZGVyLT5hc3NfZnJhbWVfaGVpZ2h0ID0gcmVuZGVyLT53aW5kb3dfaGVpZ2h0OworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2Fzc19yZW5kZXJfbmVnb3RpYXRlIChHc3RBc3NSZW5kZXIgKiByZW5kZXIsIEdzdENhcHMgKiBjYXBzKQoreworICBnYm9vbGVhbiB1cHN0cmVhbV9oYXNfbWV0YSA9IEZBTFNFOworICBnYm9vbGVhbiBjYXBzX2hhc19tZXRhID0gRkFMU0U7CisgIGdib29sZWFuIGFsbG9jX2hhc19tZXRhID0gRkFMU0U7CisgIGdib29sZWFuIGF0dGFjaCA9IEZBTFNFOworICBnYm9vbGVhbiByZXQgPSBUUlVFOworICBndWludCB3aWR0aCwgaGVpZ2h0OworICBHc3RDYXBzRmVhdHVyZXMgKmY7CisgIEdzdENhcHMgKm92ZXJsYXlfY2FwczsKKyAgR3N0UXVlcnkgKnF1ZXJ5OworICBndWludCBhbGxvY19pbmRleDsKKworICBHU1RfREVCVUdfT0JKRUNUIChyZW5kZXIsICJwZXJmb3JtaW5nIG5lZ290aWF0aW9uIik7CisKKyAgLyogQ2xlYXIgY2FjaGVkIGNvbXBvc2l0aW9uICovCisgIGdzdF9hc3NfcmVuZGVyX3Jlc2V0X2NvbXBvc2l0aW9uIChyZW5kZXIpOworCisgIC8qIENsZWFyIGFueSBwZW5kaW5nIHJlY29uZmlndXJlIGZsYWcgKi8KKyAgZ3N0X3BhZF9jaGVja19yZWNvbmZpZ3VyZSAocmVuZGVyLT5zcmNwYWQpOworCisgIGlmICghY2FwcykKKyAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChyZW5kZXItPnZpZGVvX3NpbmtwYWQpOworICBlbHNlCisgICAgZ3N0X2NhcHNfcmVmIChjYXBzKTsKKworICBpZiAoIWNhcHMgfHwgZ3N0X2NhcHNfaXNfZW1wdHkgKGNhcHMpKQorICAgIGdvdG8gbm9fZm9ybWF0OworCisgIC8qIENoZWNrIGlmIHVwc3RyZWFtIGNhcHMgaGF2ZSBtZXRhICovCisgIGlmICgoZiA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCkpKSB7CisgICAgdXBzdHJlYW1faGFzX21ldGEgPSBnc3RfY2Fwc19mZWF0dXJlc19jb250YWlucyAoZiwKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OKTsKKyAgfQorCisgIC8qIEluaXRpYWxpemUgZGltZW5zaW9ucyAqLworICB3aWR0aCA9IHJlbmRlci0+aW5mby53aWR0aDsKKyAgaGVpZ2h0ID0gcmVuZGVyLT5pbmZvLmhlaWdodDsKKworICBpZiAodXBzdHJlYW1faGFzX21ldGEpIHsKKyAgICBvdmVybGF5X2NhcHMgPSBnc3RfY2Fwc19yZWYgKGNhcHMpOworICB9IGVsc2UgeworICAgIEdzdENhcHMgKnBlZXJjYXBzOworCisgICAgLyogQmFzZVRyYW5zZm9ybSByZXF1aXJlcyBjYXBzIGZvciB0aGUgYWxsb2NhdGlvbiBxdWVyeSB0byB3b3JrICovCisgICAgb3ZlcmxheV9jYXBzID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7CisgICAgZiA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAob3ZlcmxheV9jYXBzLCAwKTsKKyAgICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGYsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTik7CisKKyAgICAvKiBUaGVuIGNoZWNrIGlmIGRvd25zdHJlYW0gYWNjZXB0IG92ZXJsYXkgY29tcG9zaXRpb24gaW4gY2FwcyAqLworICAgIC8qIEZJWE1FOiBXZSBzaG91bGQgcHJvYmFibHkgY2hlY2sgaWYgZG93bnN0cmVhbSAqcHJlZmVycyogdGhlCisgICAgICogb3ZlcmxheSBtZXRhLCBhbmQgb25seSBlbmZvcmNlIHVzYWdlIG9mIGl0IGlmIHdlIGNhbid0IGhhbmRsZQorICAgICAqIHRoZSBmb3JtYXQgb3Vyc2VsdmVzIGFuZCB0aHVzIHdvdWxkIGhhdmUgdG8gZHJvcCB0aGUgb3ZlcmxheXMuCisgICAgICogT3RoZXJ3aXNlIHdlIHNob3VsZCBwcmVmZXIgd2hhdCBkb3duc3RyZWFtIHdhbnRzIGhlcmUuCisgICAgICovCisgICAgcGVlcmNhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAocmVuZGVyLT5zcmNwYWQsIE5VTEwpOworICAgIGNhcHNfaGFzX21ldGEgPSBnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChwZWVyY2Fwcywgb3ZlcmxheV9jYXBzKTsKKyAgICBnc3RfY2Fwc191bnJlZiAocGVlcmNhcHMpOworCisgICAgR1NUX0RFQlVHICgiY2FwcyBoYXZlIG92ZXJsYXkgbWV0YSAlZCIsIGNhcHNfaGFzX21ldGEpOworICB9CisKKyAgaWYgKHVwc3RyZWFtX2hhc19tZXRhIHx8IGNhcHNfaGFzX21ldGEpIHsKKyAgICAvKiBTZW5kIGNhcHMgaW1tZWRpYXRseSwgaXQncyBuZWVkZWQgYnkgR3N0QmFzZVRyYW5zZm9ybSB0byBnZXQgYSByZXBseQorICAgICAqIGZyb20gYWxsb2NhdGlvbiBxdWVyeSAqLworICAgIHJldCA9IGdzdF9wYWRfc2V0X2NhcHMgKHJlbmRlci0+c3JjcGFkLCBvdmVybGF5X2NhcHMpOworCisgICAgLyogRmlyc3QgY2hlY2sgaWYgdGhlIGFsbG9jYXRpb24gbWV0YSBoYXMgY29tcG9zaXRvbiAqLworICAgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19hbGxvY2F0aW9uIChvdmVybGF5X2NhcHMsIEZBTFNFKTsKKworICAgIGlmICghZ3N0X3BhZF9wZWVyX3F1ZXJ5IChyZW5kZXItPnNyY3BhZCwgcXVlcnkpKSB7CisgICAgICAvKiBubyBwcm9ibGVtLCB3ZSB1c2UgdGhlIHF1ZXJ5IGRlZmF1bHRzICovCisgICAgICBHU1RfREVCVUdfT0JKRUNUIChyZW5kZXIsICJBTExPQ0FUSU9OIHF1ZXJ5IGZhaWxlZCIpOworCisgICAgICAvKiBJbiBjYXNlIHdlIHdlcmUgZmx1c2hpbmcsIG1hcmsgcmVjb25maWd1cmUgYW5kIGZhaWwgdGhpcyBtZXRob2QsCisgICAgICAgKiB3aWxsIG1ha2UgaXQgcmV0cnkgKi8KKyAgICAgIGlmIChyZW5kZXItPnZpZGVvX2ZsdXNoaW5nKQorICAgICAgICByZXQgPSBGQUxTRTsKKyAgICB9CisKKyAgICBhbGxvY19oYXNfbWV0YSA9IGdzdF9xdWVyeV9maW5kX2FsbG9jYXRpb25fbWV0YSAocXVlcnksCisgICAgICAgIEdTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OX01FVEFfQVBJX1RZUEUsICZhbGxvY19pbmRleCk7CisKKyAgICBHU1RfREVCVUcgKCJzaW5rIGFsbG9jIGhhcyBvdmVybGF5IG1ldGEgJWQiLCBhbGxvY19oYXNfbWV0YSk7CisKKyAgICBpZiAoYWxsb2NfaGFzX21ldGEpIHsKKyAgICAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqcGFyYW1zOworCisgICAgICBnc3RfcXVlcnlfcGFyc2VfbnRoX2FsbG9jYXRpb25fbWV0YSAocXVlcnksIGFsbG9jX2luZGV4LCAmcGFyYW1zKTsKKyAgICAgIGlmIChwYXJhbXMpIHsKKyAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0IChwYXJhbXMsICJ3aWR0aCIsIEdfVFlQRV9VSU5ULCAmd2lkdGgsCisgICAgICAgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9VSU5ULCAmaGVpZ2h0LCBOVUxMKSkgeworICAgICAgICAgIEdTVF9ERUJVRyAoInJlY2VpdmVkIHdpbmRvdyBzaXplOiAlZHglZCIsIHdpZHRoLCBoZWlnaHQpOworICAgICAgICAgIGdfYXNzZXJ0ICh3aWR0aCAhPSAwICYmIGhlaWdodCAhPSAwKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKworICAgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworICB9CisKKyAgLyogVXBkYXRlIHJlbmRlciBzaXplIGlmIG5lZWRlZCAqLworICByZW5kZXItPndpbmRvd193aWR0aCA9IHdpZHRoOworICByZW5kZXItPndpbmRvd19oZWlnaHQgPSBoZWlnaHQ7CisgIGdzdF9hc3NfcmVuZGVyX3VwZGF0ZV9yZW5kZXJfc2l6ZSAocmVuZGVyKTsKKworICAvKiBGb3IgYmFja3dhcmQgY29tcGF0YmlsaXR5LCB3ZSB3aWxsIHByZWZlciBibGl0aW5nIGlmIGRvd25zdHJlYW0KKyAgICogYWxsb2NhdGlvbiBkb2VzIG5vdCBzdXBwb3J0IHRoZSBtZXRhLiBJbiBvdGhlciBjYXNlIHdlIHdpbGwgcHJlZmVyCisgICAqIGF0dGFjaGluZywgYW5kIHdpbGwgZmFpbCB0aGUgbmVnb3RpYXRpb24gaW4gdGhlIHVubGlrZWx5IGNhc2Ugd2UgYXJlCisgICAqIGZvcmNlIHRvIGJsaXQsIGJ1dCBmb3JtYXQgaXNuJ3Qgc3VwcG9ydGVkLiAqLworCisgIGlmICh1cHN0cmVhbV9oYXNfbWV0YSkgeworICAgIGF0dGFjaCA9IFRSVUU7CisgIH0gZWxzZSBpZiAoY2Fwc19oYXNfbWV0YSkgeworICAgIGlmIChhbGxvY19oYXNfbWV0YSkgeworICAgICAgYXR0YWNoID0gVFJVRTsKKyAgICB9IGVsc2UgeworICAgICAgLyogRG9uJ3QgYXR0YWNoIHVubGVzcyB3ZSBjYW5ub3QgaGFuZGxlIHRoZSBmb3JtYXQgKi8KKyAgICAgIGF0dGFjaCA9ICFnc3RfYXNzX3JlbmRlcl9jYW5faGFuZGxlX2NhcHMgKGNhcHMpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICByZXQgPSBnc3RfYXNzX3JlbmRlcl9jYW5faGFuZGxlX2NhcHMgKGNhcHMpOworICB9CisKKyAgLyogSWYgd2UgYXR0YWNoLCB0aGVuIHBpY2sgdGhlIG92ZXJsYXkgY2FwcyAqLworICBpZiAoYXR0YWNoKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAiVXNpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgb3ZlcmxheV9jYXBzKTsKKyAgICAvKiBDYXBzIHdoZXJlIGFscmVhZHkgc2VudCAqLworICB9IGVsc2UgaWYgKHJldCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgIlVzaW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworICAgIHJldCA9IGdzdF9wYWRfc2V0X2NhcHMgKHJlbmRlci0+c3JjcGFkLCBjYXBzKTsKKyAgfQorCisgIHJlbmRlci0+YXR0YWNoX2NvbXBvX3RvX2J1ZmZlciA9IGF0dGFjaDsKKworICBpZiAoIXJldCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgIm5lZ290aWF0aW9uIGZhaWxlZCwgc2NoZWR1bGUgcmVjb25maWd1cmUiKTsKKyAgICBnc3RfcGFkX21hcmtfcmVjb25maWd1cmUgKHJlbmRlci0+c3JjcGFkKTsKKyAgfSBlbHNlIHsKKyAgICBnX211dGV4X2xvY2sgKCZyZW5kZXItPmFzc19tdXRleCk7CisgICAgYXNzX3NldF9mcmFtZV9zaXplIChyZW5kZXItPmFzc19yZW5kZXJlciwKKyAgICAgICAgcmVuZGVyLT5hc3NfZnJhbWVfd2lkdGgsIHJlbmRlci0+YXNzX2ZyYW1lX2hlaWdodCk7CisgICAgYXNzX3NldF9zdG9yYWdlX3NpemUgKHJlbmRlci0+YXNzX3JlbmRlcmVyLAorICAgICAgICByZW5kZXItPmluZm8ud2lkdGgsIHJlbmRlci0+aW5mby5oZWlnaHQpOworICAgIGFzc19zZXRfcGl4ZWxfYXNwZWN0IChyZW5kZXItPmFzc19yZW5kZXJlciwKKyAgICAgICAgKGdkb3VibGUpIHJlbmRlci0+aW5mby5wYXJfbiAvIChnZG91YmxlKSByZW5kZXItPmluZm8ucGFyX2QpOworICAgIGFzc19zZXRfZm9udF9zY2FsZSAocmVuZGVyLT5hc3NfcmVuZGVyZXIsIDEuMCk7CisgICAgYXNzX3NldF9oaW50aW5nIChyZW5kZXItPmFzc19yZW5kZXJlciwgQVNTX0hJTlRJTkdfTElHSFQpOworCisgICAgYXNzX3NldF9mb250cyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsICJBcmlhbCIsICJzYW5zLXNlcmlmIiwgMSwgTlVMTCwgMSk7CisgICAgYXNzX3NldF9mb250cyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsIE5VTEwsICJTYW5zIiwgMSwgTlVMTCwgMSk7CisgICAgYXNzX3NldF9tYXJnaW5zIChyZW5kZXItPmFzc19yZW5kZXJlciwgMCwgMCwgMCwgMCk7CisgICAgYXNzX3NldF91c2VfbWFyZ2lucyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsIDApOworICAgIGdfbXV0ZXhfdW5sb2NrICgmcmVuZGVyLT5hc3NfbXV0ZXgpOworCisgICAgcmVuZGVyLT5yZW5kZXJlcl9pbml0X29rID0gVFJVRTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgImFzcyByZW5kZXJlciBzZXR1cCBjb21wbGV0ZSIpOworICB9CisKKyAgZ3N0X2NhcHNfdW5yZWYgKG92ZXJsYXlfY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKworICByZXR1cm4gcmV0OworCitub19mb3JtYXQ6CisgIHsKKyAgICBpZiAoY2FwcykKKyAgICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfYXNzX3JlbmRlcl9zZXRjYXBzX3ZpZGVvIChHc3RQYWQgKiBwYWQsIEdzdEFzc1JlbmRlciAqIHJlbmRlciwKICAgICBHc3RDYXBzICogY2FwcykKIHsKLSAgR3N0UXVlcnkgKnF1ZXJ5OwotICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKLSAgZ2ludCBwYXJfbiA9IDEsIHBhcl9kID0gMTsKLSAgZ2RvdWJsZSBkYXI7CiAgIEdzdFZpZGVvSW5mbyBpbmZvOwotICBnYm9vbGVhbiBhdHRhY2ggPSBGQUxTRTsKLSAgZ2Jvb2xlYW4gY2Fwc19oYXNfbWV0YSA9IFRSVUU7Ci0gIEdzdENhcHNGZWF0dXJlcyAqZjsKLSAgR3N0Q2FwcyAqb3JpZ2luYWxfY2FwcyA9IGNhcHM7CisgIGdib29sZWFuIHJldDsKIAogICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpKQogICAgIGdvdG8gaW52YWxpZF9jYXBzOwogCiAgIHJlbmRlci0+aW5mbyA9IGluZm87Ci0gIGdzdF9jYXBzX3JlZiAoY2Fwcyk7CiAKLSAgLyogVHJ5IHRvIHVzZSB0aGUgb3ZlcmxheSBtZXRhIGlmIHBvc3NpYmxlICovCi0gIGYgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGNhcHMsIDApOworICByZXQgPSBnc3RfYXNzX3JlbmRlcl9uZWdvdGlhdGUgKHJlbmRlciwgY2Fwcyk7CiAKLSAgLyogaWYgdGhlIGNhcHMgZG9lc24ndCBoYXZlIHRoZSBvdmVybGF5IG1ldGEsIHdlIHF1ZXJ5IGlmIGRvd25zdHJlYW0KLSAgICogYWNjZXB0cyBpdCBiZWZvcmUgdHJ5aW5nIHRoZSB2ZXJzaW9uIHdpdGhvdXQgdGhlIG1ldGEKLSAgICogSWYgdXBzdHJlYW0gYWxyZWFkeSBpcyB1c2luZyB0aGUgbWV0YSB0aGVuIHdlIGNhbiBvbmx5IHVzZSBpdCAqLwotICBpZiAoIWYKLSAgICAgIHx8ICFnc3RfY2Fwc19mZWF0dXJlc19jb250YWlucyAoZiwKLSAgICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04pKSB7Ci0gICAgR3N0Q2FwcyAqb3ZlcmxheV9jYXBzOworICBHU1RfQVNTX1JFTkRFUl9MT0NLIChyZW5kZXIpOwogCi0gICAgLyogSW4gdGhpcyBjYXNlIHdlIGFkZGVkIHRoZSBtZXRhLCBidXQgd2UgY2FuIHdvcmsgd2l0aG91dCBpdAotICAgICAqIHNvIHByZXNlcnZlIHRoZSBvcmlnaW5hbCBjYXBzIHNvIHdlIGNhbiB1c2UgaXQgYXMgYSBmYWxsYmFjayAqLwotICAgIG92ZXJsYXlfY2FwcyA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOwotCi0gICAgZiA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAob3ZlcmxheV9jYXBzLCAwKTsKLSAgICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGYsCi0gICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTik7Ci0KLSAgICByZXQgPSBnc3RfcGFkX3BlZXJfcXVlcnlfYWNjZXB0X2NhcHMgKHJlbmRlci0+c3JjcGFkLCBvdmVybGF5X2NhcHMpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgIkRvd25zdHJlYW0gYWNjZXB0cyB0aGUgb3ZlcmxheSBtZXRhOiAlZCIsIHJldCk7Ci0gICAgaWYgKHJldCkgewotICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICAgICAgY2FwcyA9IG92ZXJsYXlfY2FwczsKLQotICAgIH0gZWxzZSB7Ci0gICAgICAvKiBmYWxsYmFjayB0byB0aGUgb3JpZ2luYWwgKi8KLSAgICAgIGdzdF9jYXBzX3VucmVmIChvdmVybGF5X2NhcHMpOwotICAgICAgY2Fwc19oYXNfbWV0YSA9IEZBTFNFOwotICAgIH0KLQorICBpZiAoIXJlbmRlci0+YXR0YWNoX2NvbXBvX3RvX2J1ZmZlciAmJiAhZ3N0X2Fzc19yZW5kZXJfY2FuX2hhbmRsZV9jYXBzIChjYXBzKSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgInVuc3VwcG9ydGVkIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworICAgIHJldCA9IEZBTFNFOwogICB9Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgIlVzaW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotICByZXQgPSBnc3RfcGFkX3NldF9jYXBzIChyZW5kZXItPnNyY3BhZCwgY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICBpZiAoIXJldCkKLSAgICBnb3RvIG91dDsKLQotICByZW5kZXItPndpZHRoID0gaW5mby53aWR0aDsKLSAgcmVuZGVyLT5oZWlnaHQgPSBpbmZvLmhlaWdodDsKLQotICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfYWxsb2NhdGlvbiAoY2FwcywgRkFMU0UpOwotICBpZiAoY2Fwc19oYXNfbWV0YSAmJiBnc3RfcGFkX3BlZXJfcXVlcnkgKHJlbmRlci0+c3JjcGFkLCBxdWVyeSkpIHsKLSAgICBpZiAoZ3N0X3F1ZXJ5X2ZpbmRfYWxsb2NhdGlvbl9tZXRhIChxdWVyeSwKLSAgICAgICAgICAgIEdTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OX01FVEFfQVBJX1RZUEUsIE5VTEwpKQotICAgICAgYXR0YWNoID0gVFJVRTsKLSAgfQotICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKLQotICByZW5kZXItPmF0dGFjaF9jb21wb190b19idWZmZXIgPSBhdHRhY2g7Ci0KLSAgaWYgKCFhdHRhY2gpIHsKLSAgICBpZiAoY2Fwc19oYXNfbWV0YSkgewotICAgICAgLyogU29tZSBlbGVtZW50cyAoZmFrZXNpbmspIGNsYWltIHRvIGFjY2VwdCB0aGUgbWV0YSBvbiBjYXBzIGJ1dCB3b24ndAotICAgICAgICAgcHV0IGl0IGluIHRoZSBhbGxvY2F0aW9uIHF1ZXJ5IHJlc3VsdCwgdGhpcyBsZWFkcyBiZWxvdwotICAgICAgICAgY2hlY2sgdG8gZmFpbC4gUHJldmVudCB0aGlzIGJ5IHJlbW92aW5nIHRoZSBtZXRhIGZyb20gY2FwcyAqLwotICAgICAgY2FwcyA9IG9yaWdpbmFsX2NhcHM7Ci0gICAgICByZXQgPSBnc3RfcGFkX3NldF9jYXBzIChyZW5kZXItPnNyY3BhZCwgY2Fwcyk7Ci0gICAgICBpZiAoIXJldCkKLSAgICAgICAgZ290byBvdXQ7Ci0gICAgfQotICAgIGlmICghZ3N0X2Fzc19yZW5kZXJfY2FuX2hhbmRsZV9jYXBzIChjYXBzKSkKLSAgICAgIGdvdG8gdW5zdXBwb3J0ZWRfY2FwczsKLSAgfQotCi0gIGdfbXV0ZXhfbG9jayAoJnJlbmRlci0+YXNzX211dGV4KTsKLSAgYXNzX3NldF9mcmFtZV9zaXplIChyZW5kZXItPmFzc19yZW5kZXJlciwgcmVuZGVyLT53aWR0aCwgcmVuZGVyLT5oZWlnaHQpOwotCi0gIGRhciA9ICgoKGdkb3VibGUpIHBhcl9uKSAqICgoZ2RvdWJsZSkgcmVuZGVyLT53aWR0aCkpCi0gICAgICAvICgoKGdkb3VibGUpIHBhcl9kKSAqICgoZ2RvdWJsZSkgcmVuZGVyLT5oZWlnaHQpKTsKLSNpZiAhZGVmaW5lZChMSUJBU1NfVkVSU0lPTikgfHwgTElCQVNTX1ZFUlNJT04gPCAweDAwOTA3MDAwCi0gIGFzc19zZXRfYXNwZWN0X3JhdGlvIChyZW5kZXItPmFzc19yZW5kZXJlciwgZGFyKTsKLSNlbHNlCi0gIGFzc19zZXRfYXNwZWN0X3JhdGlvIChyZW5kZXItPmFzc19yZW5kZXJlciwKLSAgICAgIGRhciwgKChnZG91YmxlKSByZW5kZXItPndpZHRoKSAvICgoZ2RvdWJsZSkgcmVuZGVyLT5oZWlnaHQpKTsKLSNlbmRpZgotICBhc3Nfc2V0X2ZvbnRfc2NhbGUgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCAxLjApOwotICBhc3Nfc2V0X2hpbnRpbmcgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCBBU1NfSElOVElOR19MSUdIVCk7Ci0KLSNpZiAhZGVmaW5lZChMSUJBU1NfVkVSU0lPTikgfHwgTElCQVNTX1ZFUlNJT04gPCAweDAwOTA3MDAwCi0gIGFzc19zZXRfZm9udHMgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCAiQXJpYWwiLCAic2Fucy1zZXJpZiIpOwotICBhc3Nfc2V0X2ZvbnRzIChyZW5kZXItPmFzc19yZW5kZXJlciwgTlVMTCwgIlNhbnMiKTsKLSNlbHNlCi0gIGFzc19zZXRfZm9udHMgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCAiQXJpYWwiLCAic2Fucy1zZXJpZiIsIDEsIE5VTEwsIDEpOwotICBhc3Nfc2V0X2ZvbnRzIChyZW5kZXItPmFzc19yZW5kZXJlciwgTlVMTCwgIlNhbnMiLCAxLCBOVUxMLCAxKTsKLSNlbmRpZgotICBhc3Nfc2V0X21hcmdpbnMgKHJlbmRlci0+YXNzX3JlbmRlcmVyLCAwLCAwLCAwLCAwKTsKLSAgYXNzX3NldF91c2VfbWFyZ2lucyAocmVuZGVyLT5hc3NfcmVuZGVyZXIsIDApOwotICBnX211dGV4X3VubG9jayAoJnJlbmRlci0+YXNzX211dGV4KTsKLQotICByZW5kZXItPnJlbmRlcmVyX2luaXRfb2sgPSBUUlVFOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHJlbmRlciwgImFzcyByZW5kZXJlciBzZXR1cCBjb21wbGV0ZSIpOwotCi1vdXQ6CisgIEdTVF9BU1NfUkVOREVSX1VOTE9DSyAocmVuZGVyKTsKIAogICByZXR1cm4gcmV0OwogCiAgIC8qIEVSUk9SUyAqLwogaW52YWxpZF9jYXBzOgogICB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAocmVuZGVyLCAiQ2FuJ3QgcGFyc2UgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotICAgIHJldCA9IEZBTFNFOwotICAgIGdvdG8gb3V0OwotICB9Ci11bnN1cHBvcnRlZF9jYXBzOgotICB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAocmVuZGVyLCAiVW5zdXBwb3J0ZWQgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwotICAgIHJldCA9IEZBTFNFOwotICAgIGdvdG8gb3V0OworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHJlbmRlciwgImNvdWxkIG5vdCBwYXJzZSBjYXBzIik7CisgICAgcmV0dXJuIEZBTFNFOwogICB9CiB9CiAKQEAgLTk2Myw2ICsxMDYyLDcgQEAKICAgZ2ludCBtYXhfeCwgbWF4X3k7CiAgIGdpbnQgd2lkdGgsIGhlaWdodDsKICAgZ2ludCBzdHJpZGU7CisgIGdkb3VibGUgaHNjYWxlLCB2c2NhbGU7CiAgIGdwb2ludGVyIGRhdGE7CiAKICAgbWluX3ggPSBHX01BWElOVDsKQEAgLTk4Miw4ICsxMDgyLDggQEAKICAgICAgIG1heF95ID0gaW1hZ2UtPmRzdF95ICsgaW1hZ2UtPmg7CiAgIH0KIAotICB3aWR0aCA9IE1JTiAobWF4X3ggLSBtaW5feCwgcmVuZGVyLT53aWR0aCk7Ci0gIGhlaWdodCA9IE1JTiAobWF4X3kgLSBtaW5feSwgcmVuZGVyLT5oZWlnaHQpOworICB3aWR0aCA9IE1JTiAobWF4X3ggLSBtaW5feCwgcmVuZGVyLT5hc3NfZnJhbWVfd2lkdGgpOworICBoZWlnaHQgPSBNSU4gKG1heF95IC0gbWluX3ksIHJlbmRlci0+YXNzX2ZyYW1lX2hlaWdodCk7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAocmVuZGVyLCAicmVuZGVyIG92ZXJsYXkgcmVjdGFuZ2xlICVkeCVkJStkJStkIiwKICAgICAgIHdpZHRoLCBoZWlnaHQsIG1pbl94LCBtaW5feSk7CkBAIC0xMDA3LDggKzExMDcsMTIgQEAKICAgICAgIC1taW5feCwgLW1pbl95KTsKICAgZ3N0X3ZpZGVvX21ldGFfdW5tYXAgKHZtZXRhLCAwLCAmbWFwKTsKIAotICByZWN0YW5nbGUgPSBnc3RfdmlkZW9fb3ZlcmxheV9yZWN0YW5nbGVfbmV3X3JhdyAoYnVmZmVyLCBtaW5feCwgbWluX3ksCi0gICAgICB3aWR0aCwgaGVpZ2h0LCBHU1RfVklERU9fT1ZFUkxBWV9GT1JNQVRfRkxBR19QUkVNVUxUSVBMSUVEX0FMUEhBKTsKKyAgaHNjYWxlID0gKGdkb3VibGUpIHJlbmRlci0+aW5mby53aWR0aCAvIChnZG91YmxlKSByZW5kZXItPmFzc19mcmFtZV93aWR0aDsKKyAgdnNjYWxlID0gKGdkb3VibGUpIHJlbmRlci0+aW5mby5oZWlnaHQgLyAoZ2RvdWJsZSkgcmVuZGVyLT5hc3NfZnJhbWVfaGVpZ2h0OworCisgIHJlY3RhbmdsZSA9IGdzdF92aWRlb19vdmVybGF5X3JlY3RhbmdsZV9uZXdfcmF3IChidWZmZXIsCisgICAgICBoc2NhbGUgKiBtaW5feCwgdnNjYWxlICogbWluX3ksIGhzY2FsZSAqIHdpZHRoLCB2c2NhbGUgKiBoZWlnaHQsCisgICAgICBHU1RfVklERU9fT1ZFUkxBWV9GT1JNQVRfRkxBR19QUkVNVUxUSVBMSUVEX0FMUEhBKTsKIAogICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwogCkBAIC0xMDU3LDYgKzExNjEsOSBAQAogICBndWludDY0IHN0YXJ0LCBzdG9wLCBjbGlwX3N0YXJ0ID0gMCwgY2xpcF9zdG9wID0gMDsKICAgQVNTX0ltYWdlICphc3NfaW1hZ2U7CiAKKyAgaWYgKGdzdF9wYWRfY2hlY2tfcmVjb25maWd1cmUgKHJlbmRlci0+c3JjcGFkKSkKKyAgICBnc3RfYXNzX3JlbmRlcl9uZWdvdGlhdGUgKHJlbmRlciwgTlVMTCk7CisKICAgaWYgKCFHU1RfQlVGRkVSX1RJTUVTVEFNUF9JU19WQUxJRCAoYnVmZmVyKSkKICAgICBnb3RvIG1pc3NpbmdfdGltZXN0YW1wOwogCkBAIC0xMTg5LDggKzEyOTYsNyBAQAogCiAgICAgICBpZiAoKCFhc3NfaW1hZ2UgfHwgY2hhbmdlZCkgJiYgcmVuZGVyLT5jb21wb3NpdGlvbikgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChyZW5kZXIsICJyZWxlYXNlIG92ZXJsYXkgKGNoYW5nZWQgJWQpIiwgY2hhbmdlZCk7Ci0gICAgICAgIGdzdF92aWRlb19vdmVybGF5X2NvbXBvc2l0aW9uX3VucmVmIChyZW5kZXItPmNvbXBvc2l0aW9uKTsKLSAgICAgICAgcmVuZGVyLT5jb21wb3NpdGlvbiA9IE5VTEw7CisgICAgICAgIGdzdF9hc3NfcmVuZGVyX3Jlc2V0X2NvbXBvc2l0aW9uIChyZW5kZXIpOwogICAgICAgfQogCiAgICAgICBpZiAoYXNzX2ltYWdlICE9IE5VTEwpIHsKZGlmZiAtLWdpdCBhL2V4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmggYi9leHQvYXNzcmVuZGVyL2dzdGFzc3JlbmRlci5oCmluZGV4IDRhY2Q5ZTYuLjQyZjc0YTAgMTAwNjQ0Ci0tLSBhL2V4dC9hc3NyZW5kZXIvZ3N0YXNzcmVuZGVyLmgKKysrIGIvZXh0L2Fzc3JlbmRlci9nc3Rhc3NyZW5kZXIuaApAQCAtNzYsMTMgKzc2LDE0IEBACiAgIEFTU19MaWJyYXJ5ICphc3NfbGlicmFyeTsKICAgQVNTX1JlbmRlcmVyICphc3NfcmVuZGVyZXI7CiAgIEFTU19UcmFjayAqYXNzX3RyYWNrOworICBnaW50IGFzc19mcmFtZV93aWR0aCwgYXNzX2ZyYW1lX2hlaWdodDsKIAogICBnYm9vbGVhbiByZW5kZXJlcl9pbml0X29rLCB0cmFja19pbml0X29rOwogICBnYm9vbGVhbiBuZWVkX3Byb2Nlc3M7CiAKICAgLyogb3ZlcmxheSBzdHVmZiAqLwogICBHc3RWaWRlb092ZXJsYXlDb21wb3NpdGlvbiAqY29tcG9zaXRpb247Ci0gIGdpbnQgd2lkdGgsIGhlaWdodDsKKyAgZ3VpbnQgd2luZG93X3dpZHRoLCB3aW5kb3dfaGVpZ2h0OwogICBnYm9vbGVhbiBhdHRhY2hfY29tcG9fdG9fYnVmZmVyOwogfTsKIApkaWZmIC0tZ2l0IGEvZXh0L2JzMmIvTWFrZWZpbGUuaW4gYi9leHQvYnMyYi9NYWtlZmlsZS5pbgppbmRleCAwNDMzZjA5Li5mZjk5OTI4IDEwMDY0NAotLS0gYS9leHQvYnMyYi9NYWtlZmlsZS5pbgorKysgYi9leHQvYnMyYi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9iejIvTWFrZWZpbGUuaW4gYi9leHQvYnoyL01ha2VmaWxlLmluCmluZGV4IDc5YjNjMGQuLjQ1Njc3NDggMTAwNjQ0Ci0tLSBhL2V4dC9iejIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2J6Mi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9jaHJvbWFwcmludC9NYWtlZmlsZS5pbiBiL2V4dC9jaHJvbWFwcmludC9NYWtlZmlsZS5pbgppbmRleCAzN2I2NWExLi5jYjdkMjcyIDEwMDY0NAotLS0gYS9leHQvY2hyb21hcHJpbnQvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2Nocm9tYXByaW50L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2Nocm9tYXByaW50L2dzdGNocm9tYXByaW50LmMgYi9leHQvY2hyb21hcHJpbnQvZ3N0Y2hyb21hcHJpbnQuYwppbmRleCA3YzA1MjIxLi5iNzIxN2E2IDEwMDY0NAotLS0gYS9leHQvY2hyb21hcHJpbnQvZ3N0Y2hyb21hcHJpbnQuYworKysgYi9leHQvY2hyb21hcHJpbnQvZ3N0Y2hyb21hcHJpbnQuYwpAQCAtMzIsNyArMzIsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLW0gdXJpZGVjb2RlYmluIHVyaT1maWxlOi8vL3BhdGgvdG8vc29uZy5vZ2cgISBhdWRpb2NvbnZlcnQgISBjaHJvbWFwcmludCAhIGZha2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtbSB1cmlkZWNvZGViaW4gdXJpPWZpbGU6Ly8vcGF0aC90by9zb25nLm9nZyAhIGF1ZGlvY29udmVydCAhIGNocm9tYXByaW50ICEgZmFrZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9leHQvY3VybC9NYWtlZmlsZS5pbiBiL2V4dC9jdXJsL01ha2VmaWxlLmluCmluZGV4IDIxY2EzOTkuLjcxZTJmNTYgMTAwNjQ0Ci0tLSBhL2V4dC9jdXJsL01ha2VmaWxlLmluCisrKyBiL2V4dC9jdXJsL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4OCw2ICsyODcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyNSw2ICszMjYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzMyw3ICszMzYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTIsOCArMzU0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3MCwxNiArMzczLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwNSw2ICs0MDksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzAsNiArNDM2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTMxLDYgKzUzOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDQsOCArNTUzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTYxLDYgKzU2OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTgsMTYgKzYyNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3OSw2ICs2OTAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjg5LDYgKzcwMSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5OCw2ICs3MTEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzM1LDcgKzc1MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2N1cmwvZ3N0Y3VybGJhc2VzaW5rLmMgYi9leHQvY3VybC9nc3RjdXJsYmFzZXNpbmsuYwppbmRleCBiNDdmMjQ2Li43MjVmMWFjIDEwMDY0NAotLS0gYS9leHQvY3VybC9nc3RjdXJsYmFzZXNpbmsuYworKysgYi9leHQvY3VybC9nc3RjdXJsYmFzZXNpbmsuYwpAQCAtMjgsNyArMjgsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmUgKHVwbG9hZCBhIEpQRUcgZmlsZSB0byBhbiBIVFRQIHNlcnZlcik8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsc2luayAgXAorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsc2luayAgXAogICogICAgIGZpbGUtbmFtZT1pbWFnZS5qcGcgIFwKICAqICAgICBsb2NhdGlvbj1odHRwOi8vMTkyLjE2OC4wLjE6ODA4MC9jZ2ktYmluL3BhdHVwbG9hZC5jZ2kvICBcCiAgKiAgICAgdXNlcj10ZXN0IHBhc3N3ZD10ZXN0ICBcCkBAIC0zNDksMTIgKzM0OSwxNyBAQAogCiAgIHNpbmsgPSBHU1RfQ1VSTF9CQVNFX1NJTksgKGJzaW5rKTsKIAotICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOwotCiAgIGdzdF9idWZmZXJfbWFwIChidWYsICZtYXAsIEdTVF9NQVBfUkVBRCk7CiAgIGRhdGEgPSBtYXAuZGF0YTsKICAgc2l6ZSA9IG1hcC5zaXplOwogCisgIGlmIChzaXplID09IDApIHsKKyAgICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOworICAgIHJldHVybiBHU1RfRkxPV19PSzsKKyAgfQorCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7CisKICAgLyogY2hlY2sgaWYgdGhlIHRyYW5zZmVyIHRocmVhZCBoYXMgZW5jb3VudGVyZWQgcHJvYmxlbXMgd2hpbGUgdGhlCiAgICAqIHBpcGVsaW5lIHRocmVhZCB3YXMgd29ya2luZyBlbHNld2hlcmUgKi8KICAgaWYgKHNpbmstPmZsb3dfcmV0ICE9IEdTVF9GTE9XX09LKSB7CmRpZmYgLS1naXQgYS9leHQvY3VybC9nc3RjdXJsZmlsZXNpbmsuYyBiL2V4dC9jdXJsL2dzdGN1cmxmaWxlc2luay5jCmluZGV4IGQyODY1NDAuLmI0YWExNzQgMTAwNjQ0Ci0tLSBhL2V4dC9jdXJsL2dzdGN1cmxmaWxlc2luay5jCisrKyBiL2V4dC9jdXJsL2dzdGN1cmxmaWxlc2luay5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZSAodXBsb2FkIGEgSlBFRyBmaWxlIHRvIC9ob21lL3Rlc3QvaW1hZ2VzCiAgKiBkaXJlY3RvcnkpPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249aW1hZ2UuanBnICEganBlZ3BhcnNlICEgY3VybGZpbGVzaW5rICBcCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLmpwZyAhIGpwZWdwYXJzZSAhIGN1cmxmaWxlc2luayAgXAogICogICAgIGZpbGUtbmFtZT1pbWFnZS5qcGcgIFwKICAqICAgICBsb2NhdGlvbj1maWxlOi8vL2hvbWUvdGVzdC9pbWFnZXMvCiAgKiBdfApkaWZmIC0tZ2l0IGEvZXh0L2N1cmwvZ3N0Y3VybGZ0cHNpbmsuYyBiL2V4dC9jdXJsL2dzdGN1cmxmdHBzaW5rLmMKaW5kZXggOTk1ZmUzOC4uOTJiNWM0ZSAxMDA2NDQKLS0tIGEvZXh0L2N1cmwvZ3N0Y3VybGZ0cHNpbmsuYworKysgYi9leHQvY3VybC9nc3RjdXJsZnRwc2luay5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZSAodXBsb2FkIGEgSlBFRyBmaWxlIHRvIC9ob21lL3Rlc3QvaW1hZ2VzCiAgKiBkaXJlY3RvcnkpPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249aW1hZ2UuanBnICEganBlZ3BhcnNlICEgY3VybGZ0cHNpbmsgIFwKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249aW1hZ2UuanBnICEganBlZ3BhcnNlICEgY3VybGZ0cHNpbmsgIFwKICAqICAgICBmaWxlLW5hbWU9aW1hZ2UuanBnICBcCiAgKiAgICAgbG9jYXRpb249ZnRwOi8vMTkyLjE2OC4wLjEvaW1hZ2VzLwogICogXXwKQEAgLTIzMCw3ICsyMzAsOCBAQAogICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KIAotICAgIHJlcyA9IGN1cmxfZWFzeV9zZXRvcHQgKGJhc2VzaW5rLT5jdXJsLCBDVVJMT1BUX1BPU1RRVU9URSwgc2luay0+aGVhZGVybGlzdCk7CisgICAgcmVzID0KKyAgICAgICAgY3VybF9lYXN5X3NldG9wdCAoYmFzZXNpbmstPmN1cmwsIENVUkxPUFRfUE9TVFFVT1RFLCBzaW5rLT5oZWFkZXJsaXN0KTsKICAgICBpZiAocmVzICE9IENVUkxFX09LKSB7CiAgICAgICBiYXNlc2luay0+ZXJyb3IgPSBnX3N0cmR1cF9wcmludGYgKCJmYWlsZWQgdG8gc2V0IHBvc3QgcXVvdGU6ICVzIiwKICAgICAgICAgICBjdXJsX2Vhc3lfc3RyZXJyb3IgKHJlcykpOwpkaWZmIC0tZ2l0IGEvZXh0L2N1cmwvZ3N0Y3VybGh0dHBzaW5rLmMgYi9leHQvY3VybC9nc3RjdXJsaHR0cHNpbmsuYwppbmRleCAzNjYwZjViLi5hNTBhMDU3IDEwMDY0NAotLS0gYS9leHQvY3VybC9nc3RjdXJsaHR0cHNpbmsuYworKysgYi9leHQvY3VybC9nc3RjdXJsaHR0cHNpbmsuYwpAQCAtMjgsNyArMjgsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmUgKHVwbG9hZCBhIEpQRUcgZmlsZSB0byBhbiBIVFRQIHNlcnZlcik8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsaHR0cHNpbmsgIFwKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249aW1hZ2UuanBnICEganBlZ3BhcnNlICEgY3VybGh0dHBzaW5rICBcCiAgKiAgICAgZmlsZS1uYW1lPWltYWdlLmpwZyAgXAogICogICAgIGxvY2F0aW9uPWh0dHA6Ly8xOTIuMTY4LjAuMTo4MDgwL2NnaS1iaW4vcGF0dXBsb2FkLmNnaS8gIFwKICAqICAgICB1c2VyPXRlc3QgcGFzc3dkPXRlc3QgIFwKZGlmZiAtLWdpdCBhL2V4dC9jdXJsL2dzdGN1cmxzZnRwc2luay5jIGIvZXh0L2N1cmwvZ3N0Y3VybHNmdHBzaW5rLmMKaW5kZXggNWI1NDRmMC4uOTM5ZWJkOCAxMDA2NDQKLS0tIGEvZXh0L2N1cmwvZ3N0Y3VybHNmdHBzaW5rLmMKKysrIGIvZXh0L2N1cmwvZ3N0Y3VybHNmdHBzaW5rLmMKQEAgLTI4LDcgKzI4LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lICh1cGxvYWQgYSBmaWxlIHRvIC9ob21lL2pvaG4vc2Z0cF90ZXN0cy8pPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249L2hvbWUvamRvZS9zb21lLmZpbGUgISBjdXJsc2Z0cHNpbmsgIFwKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249L2hvbWUvamRvZS9zb21lLmZpbGUgISBjdXJsc2Z0cHNpbmsgIFwKICAqICAgICBmaWxlLW5hbWU9c29tZS5maWxlLmJhY2t1cCAgXAogICogICAgIHVzZXI9am9obiBsb2NhdGlvbj1zZnRwOi8vMTkyLjE2OC4wLjEvfi9zZnRwX3Rlc3RzLyAgXAogICogICAgIHNzaC1hdXRoLXR5cGU9MSBzc2gta2V5LXBhc3NwaHJhc2U9YmxhYmxhICBcCmRpZmYgLS1naXQgYS9leHQvY3VybC9nc3RjdXJsc210cHNpbmsuYyBiL2V4dC9jdXJsL2dzdGN1cmxzbXRwc2luay5jCmluZGV4IDdkZTFkZGYuLjQwYWIwMTYgMTAwNjQ0Ci0tLSBhL2V4dC9jdXJsL2dzdGN1cmxzbXRwc2luay5jCisrKyBiL2V4dC9jdXJsL2dzdGN1cmxzbXRwc2luay5jCkBAIC0yOCw3ICsyOCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZSAodXBsb2FkIGEgSlBFRyBmaWxlIHRvIGFuIFNNVFAgc2VydmVyKTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLmpwZyAhIGpwZWdwYXJzZSAhIGN1cmxzbXRwc2luayAgXAorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5qcGcgISBqcGVncGFyc2UgISBjdXJsc210cHNpbmsgIFwKICAqICAgICBmaWxlLW5hbWU9aW1hZ2UuanBnICBcCiAgKiAgICAgbG9jYXRpb249c210cDovL3NtdHAuZ21haWwuY29tOjUwNyBcCiAgKiAgICAgdXNlcj10ZXN0IHBhc3N3ZD10ZXN0ICBcCmRpZmYgLS1naXQgYS9leHQvZGFhbGEvTWFrZWZpbGUuaW4gYi9leHQvZGFhbGEvTWFrZWZpbGUuaW4KaW5kZXggYzM3YzRhZC4uZTkyZmM0ZCAxMDA2NDQKLS0tIGEvZXh0L2RhYWxhL01ha2VmaWxlLmluCisrKyBiL2V4dC9kYWFsYS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9kYWFsYS9nc3RkYWFsYWRlYy5jIGIvZXh0L2RhYWxhL2dzdGRhYWxhZGVjLmMKaW5kZXggMGNmNGY2My4uZDQwNTM3ZCAxMDA2NDQKLS0tIGEvZXh0L2RhYWxhL2dzdGRhYWxhZGVjLmMKKysrIGIvZXh0L2RhYWxhL2dzdGRhYWxhZGVjLmMKQEAgLTMzLDcgKzMzLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249dmlkZW90ZXN0c3JjLm9nZyAhIG9nZ2RlbXV4ICEgZGFhbGFkZWMgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj12aWRlb3Rlc3RzcmMub2dnICEgb2dnZGVtdXggISBkYWFsYWRlYyAhIHh2aW1hZ2VzaW5rCiAgKiBdfCBUaGlzIGV4YW1wbGUgcGlwZWxpbmUgd2lsbCBkZWNvZGUgYW4gb2dnIHN0cmVhbSBhbmQgZGVjb2RlcyB0aGUgZGFhbGEgdmlkZW8uIFJlZmVyIHRvCiAgKiB0aGUgZGFhbGFlbmMgZXhhbXBsZSB0byBjcmVhdGUgdGhlIG9nZyBmaWxlLgogICogPC9yZWZzZWN0Mj4KQEAgLTUwLDggKzUwLDggQEAKICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9wb29sLmg+CiAKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGRhYWxhZGVjX2RlYnVnCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOwotR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTiAoR1NUX0NBVF9QRVJGT1JNQU5DRSk7CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChkYWFsYWRlY19kZWJ1Zyk7CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChDQVRfUEVSRk9STUFOQ0UpOwogCiAvKiBUaGlzIHdhcyByZW1vdmVkIGZyb20gdGhlIGJhc2UgY2xhc3MsIHRoaXMgaXMgdXNlZCBhcyBhCiAgICB0ZW1wb3JhcnkgcmV0dXJuIHRvIHNpZ25hbCB0aGUgbmVlZCB0byBjYWxsIF9kcm9wX2ZyYW1lLApAQCAtMTIyLDYgKzEyMiw3IEBACiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZGFhbGFfZGVjX2RlY2lkZV9hbGxvY2F0aW9uKTsKIAogICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZGFhbGFkZWNfZGVidWcsICJkYWFsYWRlYyIsIDAsICJEYWFsYSBkZWNvZGVyIik7CisgIEdTVF9ERUJVR19DQVRFR0lSWV9HRVQgKENBVF9QRVJGT1JNQU5DRSwgIkdTVF9QRVJGT1JNQU5DRSIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDQ5LDcgKzQ1MCw3IEBACiAgIH0KIAogICAvKiBpZiBvbmx5IGxpYmRhYWxhIHdvdWxkIGFsbG93IHVzIHRvIGdpdmUgaXQgYSBkZXN0aW5hdGlvbiBmcmFtZSAqLwotICBHU1RfQ0FUX1RSQUNFX09CSkVDVCAoR1NUX0NBVF9QRVJGT1JNQU5DRSwgZGVjLAorICBHU1RfQ0FUX1RSQUNFX09CSkVDVCAoQ0FUX1BFUkZPUk1BTkNFLCBkZWMsCiAgICAgICAiZG9pbmcgdW5hdm9pZGFibGUgdmlkZW8gZnJhbWUgY29weSIpOwogCiAgIGlmIChHX1VOTElLRUxZICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJnZmcmFtZSwgJmRlYy0+b3V0cHV0X3N0YXRlLT5pbmZvLApkaWZmIC0tZ2l0IGEvZXh0L2RhYWxhL2dzdGRhYWxhZW5jLmMgYi9leHQvZGFhbGEvZ3N0ZGFhbGFlbmMuYwppbmRleCA3N2FiMGIyLi43MDVjN2U2IDEwMDY0NAotLS0gYS9leHQvZGFhbGEvZ3N0ZGFhbGFlbmMuYworKysgYi9leHQvZGFhbGEvZ3N0ZGFhbGFlbmMuYwpAQCAtMzMsNyArMzMsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEwMDAgISBkYWFsYWVuYyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5vZ2cKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xMDAwICEgZGFhbGFlbmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj12aWRlb3Rlc3RzcmMub2dnCiAgKiBdfCBUaGlzIGV4YW1wbGUgcGlwZWxpbmUgd2lsbCBlbmNvZGUgYSB0ZXN0IHZpZGVvIHNvdXJjZSB0byBkYWFsYSBtdXhlZCBpbiBhbgogICogb2dnIGNvbnRhaW5lci4gUmVmZXIgdG8gdGhlIGRhYWxhZGVjIGRvY3VtZW50YXRpb24gdG8gZGVjb2RlIHRoZSBjcmVhdGUKICAqIHN0cmVhbS4KZGlmZiAtLWdpdCBhL2V4dC9kYXNoL01ha2VmaWxlLmluIGIvZXh0L2Rhc2gvTWFrZWZpbGUuaW4KaW5kZXggOTM0YWFhNi4uZWY2NWFiMCAxMDA2NDQKLS0tIGEvZXh0L2Rhc2gvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2Rhc2gvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc5LDYgKzI3OCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE2LDYgKzMxNyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI0LDcgKzMyNyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Myw4ICszNDUsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYxLDE2ICszNjQsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk2LDYgKzQwMCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMSw2ICs0MjcsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjIsNiArNTMwLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNSw4ICs1NDQsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTIsNiArNTU5LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOSwxNiArNjE4LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcwLDYgKzY4MSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODAsNiArNjkyLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg5LDYgKzcwMiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjYsNyArNzQxLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZGFzaC9nc3RkYXNoZGVtdXguYyBiL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5jCmluZGV4IDIwZDY3NjQuLjRjMWY5OTkgMTAwNjQ0Ci0tLSBhL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5jCisrKyBiL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5jCkBAIC0xNDYsNiArMTQ2LDcgQEAKIAogI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CiAjaW5jbHVkZSA8aW50dHlwZXMuaD4KICNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0dHlwZWZpbmRoZWxwZXIuaD4KQEAgLTE2Nyw2ICsxNjgsMTIgQEAKICAgICBHU1RfUEFEX1NPTUVUSU1FUywKICAgICBHU1RfU1RBVElDX0NBUFNfQU5ZKTsKIAorc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9kYXNoX2RlbXV4X3N1YnRpdGxlc3JjX3RlbXBsYXRlID0KK0dTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3VidGl0bGVfJTAydSIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9TT01FVElNRVMsCisgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKQEAgLTE4Miw2ICsxODksNyBAQAogICBQUk9QX01BWF9CVUZGRVJJTkdfVElNRSwKICAgUFJPUF9CQU5EV0lEVEhfVVNBR0UsCiAgIFBST1BfTUFYX0JJVFJBVEUsCisgIFBST1BfUFJFU0VOVEFUSU9OX0RFTEFZLAogICBQUk9QX0xBU1QKIH07CiAKQEAgLTE4OSw2ICsxOTcsNyBAQAogI2RlZmluZSBERUZBVUxUX01BWF9CVUZGRVJJTkdfVElNRSAgICAgICAzMCAgICAgLyogaW4gc2Vjb25kcyAqLwogI2RlZmluZSBERUZBVUxUX0JBTkRXSURUSF9VU0FHRSAgICAgICAgIDAuOCAgICAgLyogMCB0byAxICAgICAqLwogI2RlZmluZSBERUZBVUxUX01BWF9CSVRSQVRFICAgICAgICAyNDAwMDAwMCAgICAgLyogaW4gYml0L3MgICovCisjZGVmaW5lIERFRkFVTFRfUFJFU0VOVEFUSU9OX0RFTEFZICAgICBOVUxMICAgICAvKiB6ZXJvICovCiAKIC8qIENsb2NrIGRyaWZ0IGNvbXBlbnNhdGlvbiBmb3IgbGl2ZSBzdHJlYW1zICovCiAjZGVmaW5lIFNMT1dfQ0xPQ0tfVVBEQVRFX0lOVEVSVkFMICAoMTAwMDAwMCAqIDMwICogNjApIC8qIDMwIG1pbnV0ZXMgKi8KQEAgLTIwMSwxMSArMjEwLDkgQEAKICAgR011dGV4IGNsb2NrX2xvY2s7ICAgICAgICAgICAgLyogdXNlZCB0byBwcm90ZWN0IGFjY2VzcyB0byBzdHJ1Y3QgKi8KICAgZ3VpbnQgc2VsZWN0ZWRfdXJsOwogICBnaW50NjQgbmV4dF91cGRhdGU7Ci0gIEdDb25kIGNsb2NrX2NvbmQ7ICAgICAgICAgICAgIC8qIHVzZWQgZm9yIHdhaXRpbmcgdW50aWwgZ290X2Nsb2NrPT1UUlVFICovCiAgIC8qIEBjbG9ja19jb21wZW5zYXRpb246IGFtb3VudCAoaW4gdXNlY3MpIHRvIGFkZCB0byBjbGllbnQncyBpZGVhIG9mCiAgICAgIG5vdyB0byBtYXAgaXQgdG8gdGhlIHNlcnZlcidzIGlkZWEgb2Ygbm93ICovCiAgIEdUaW1lU3BhbiBjbG9ja19jb21wZW5zYXRpb247Ci0gIGdib29sZWFuIGdvdF9jbG9jazsgICAgICAgICAgIC8qIGluZGljYXRlcyB0aW1lIHNvdXJjZSBoYXMgcmV0dXJuZWQgYSB2YWxpZCBjbG9jayBhdCBsZWFzdCBvbmNlICovCiAgIEdzdENsb2NrICpudHBfY2xvY2s7CiB9OwogCkBAIC0yMjYsMTkgKzIzMywyMCBAQAogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV91cGRhdGVfZnJhZ21lbnRfaW5mbyAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfZGFzaF9kZW11eF9zdHJlYW1fc2VlayAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCi0gICAgc3RyZWFtLCBHc3RDbG9ja1RpbWUgdHMpOwotc3RhdGljIGdib29sZWFuCi1nc3RfZGFzaF9kZW11eF9zdHJlYW1faGFzX25leHRfZnJhZ21lbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOworICAgIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwgR3N0U2Vla0ZsYWdzIGZsYWdzLCBHc3RDbG9ja1RpbWUgdHMsCisgICAgR3N0Q2xvY2tUaW1lICogZmluYWxfdHMpOworc3RhdGljIGdib29sZWFuIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9oYXNfbmV4dF9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbQorICAgICogc3RyZWFtKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfZGFzaF9kZW11eF9zdHJlYW1fYWR2YW5jZV9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7CiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9hZHZhbmNlX3N1YmZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZGFzaF9kZW11eF9zdHJlYW1fc2VsZWN0X2JpdHJhdGUgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKgogICAgIHN0cmVhbSwgZ3VpbnQ2NCBiaXRyYXRlKTsKLXN0YXRpYyBnaW50NjQKLWdzdF9kYXNoX2RlbXV4X2dldF9tYW5pZmVzdF91cGRhdGVfaW50ZXJ2YWwgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X2Rhc2hfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgR3N0QnVmZmVyICogYnVmKTsKK3N0YXRpYyBnaW50NjQgZ3N0X2Rhc2hfZGVtdXhfZ2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoR3N0QWRhcHRpdmVEZW11eCAqCisgICAgZGVtdXgpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2Rhc2hfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RhdGEgKEdzdEFkYXB0aXZlRGVtdXggKgorICAgIGRlbXV4LCBHc3RCdWZmZXIgKiBidWYpOwogc3RhdGljIGdpbnQ2NAogZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX2dldF9mcmFnbWVudF93YWl0aW5nX3RpbWUgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKgogICAgIHN0cmVhbSk7CkBAIC0yOTMsNiArMzAxLDcgQEAKIAogICBnc3RfZGFzaF9kZW11eF9jbG9ja19kcmlmdF9mcmVlIChkZW11eC0+Y2xvY2tfZHJpZnQpOwogICBkZW11eC0+Y2xvY2tfZHJpZnQgPSBOVUxMOworICBnX2ZyZWUgKGRlbXV4LT5kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSk7CiAgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kaXNwb3NlIChvYmopOwogfQogCkBAIC0zMDEsMTggKzMxMCwzMyBAQAogICAgIGdpbnQ2NCAqIHN0b3ApCiB7CiAgIEdzdERhc2hEZW11eCAqc2VsZiA9IEdTVF9EQVNIX0RFTVVYIChkZW11eCk7Ci0gIEdEYXRlVGltZSAqbm93ID0gZ3N0X2Rhc2hfZGVtdXhfZ2V0X3NlcnZlcl9ub3dfdXRjIChzZWxmKTsKLSAgR0RhdGVUaW1lICptc3RhcnQgPQotICAgICAgZ3N0X2RhdGVfdGltZV90b19nX2RhdGVfdGltZSAoc2VsZi0+Y2xpZW50LT4KLSAgICAgIG1wZF9ub2RlLT5hdmFpbGFiaWxpdHlTdGFydFRpbWUpOworICBHRGF0ZVRpbWUgKm5vdzsKKyAgR0RhdGVUaW1lICptc3RhcnQ7CiAgIEdUaW1lU3BhbiBzdHJlYW1fbm93OwogCisgIGlmIChzZWxmLT5jbGllbnQtPm1wZF9ub2RlLT5hdmFpbGFiaWxpdHlTdGFydFRpbWUgPT0gTlVMTCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgbm93ID0gZ3N0X2Rhc2hfZGVtdXhfZ2V0X3NlcnZlcl9ub3dfdXRjIChzZWxmKTsKKyAgbXN0YXJ0ID0KKyAgICAgIGdzdF9kYXRlX3RpbWVfdG9fZ19kYXRlX3RpbWUgKHNlbGYtPmNsaWVudC0+CisgICAgICBtcGRfbm9kZS0+YXZhaWxhYmlsaXR5U3RhcnRUaW1lKTsKICAgc3RyZWFtX25vdyA9IGdfZGF0ZV90aW1lX2RpZmZlcmVuY2UgKG5vdywgbXN0YXJ0KTsKICAgZ19kYXRlX3RpbWVfdW5yZWYgKG5vdyk7CiAgIGdfZGF0ZV90aW1lX3VucmVmIChtc3RhcnQpOwotICAqc3RvcCA9IHN0cmVhbV9ub3cgKiBHU1RfVVNFQ09ORDsKIAotICAqc3RhcnQgPSAqc3RvcCAtIChzZWxmLT5jbGllbnQtPm1wZF9ub2RlLT50aW1lU2hpZnRCdWZmZXJEZXB0aCAqIEdTVF9NU0VDT05EKTsKKyAgaWYgKHN0cmVhbV9ub3cgPD0gMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgKnN0b3AgPSBzdHJlYW1fbm93ICogR1NUX1VTRUNPTkQ7CisgIGlmIChzZWxmLT5jbGllbnQtPm1wZF9ub2RlLT50aW1lU2hpZnRCdWZmZXJEZXB0aCA9PSBHU1RfTVBEX0RVUkFUSU9OX05PTkUpIHsKKyAgICAqc3RhcnQgPSAwOworICB9IGVsc2UgeworICAgICpzdGFydCA9CisgICAgICAgICpzdG9wIC0gKHNlbGYtPmNsaWVudC0+bXBkX25vZGUtPnRpbWVTaGlmdEJ1ZmZlckRlcHRoICogR1NUX01TRUNPTkQpOworICAgIGlmICgqc3RhcnQgPCAwKQorICAgICAgKnN0YXJ0ID0gMDsKKyAgfQogICByZXR1cm4gVFJVRTsKIH0KIApAQCAtMzY0LDcgKzM4OCw3IEBACiAgICAgICAgICAgIlBlcmNlbnRhZ2Ugb2YgdGhlIGF2YWlsYWJsZSBiYW5kd2lkdGggdG8gdXNlIHdoZW4gIgogICAgICAgICAgICJzZWxlY3RpbmcgcmVwcmVzZW50YXRpb25zIChkZXByZWNhdGVkKSIsCiAgICAgICAgICAgMCwgMSwgREVGQVVMVF9CQU5EV0lEVEhfVVNBR0UsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwgR19QQVJBTV9ERVBSRUNBVEVEKSk7CiAjZW5kaWYKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX01BWF9CSVRSQVRFLApAQCAtMzczLDEwICszOTcsMTggQEAKICAgICAgICAgICAxMDAwLCBHX01BWFVJTlQsIERFRkFVTFRfTUFYX0JJVFJBVEUsCiAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9QUkVTRU5UQVRJT05fREVMQVksCisgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgicHJlc2VudGF0aW9uLWRlbGF5IiwgIlByZXNlbnRhdGlvbiBkZWxheSIsCisgICAgICAgICAgIkRlZmF1bHQgcHJlc2VudGF0aW9uIGRlbGF5IChpbiBzZWNvbmRzLCBtaWxsaXNlY29uZHMgb3IgZnJhZ21lbnRzKSAoZS5nLiAxMnMsIDI1MDBtcywgM2YpIiwKKyAgICAgICAgICBERUZBVUxUX1BSRVNFTlRBVElPTl9ERUxBWSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKwogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X2Rhc2hfZGVtdXhfYXVkaW9zcmNfdGVtcGxhdGUpKTsKICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9kYXNoX2RlbXV4X3ZpZGVvc3JjX3RlbXBsYXRlKSk7CisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfZGFzaF9kZW11eF9zdWJ0aXRsZXNyY190ZW1wbGF0ZSkpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzaW5rdGVtcGxhdGUpKTsKQEAgLTQzMyw2ICs0NjUsNyBAQAogICAvKiBQcm9wZXJ0aWVzICovCiAgIGRlbXV4LT5tYXhfYnVmZmVyaW5nX3RpbWUgPSBERUZBVUxUX01BWF9CVUZGRVJJTkdfVElNRSAqIEdTVF9TRUNPTkQ7CiAgIGRlbXV4LT5tYXhfYml0cmF0ZSA9IERFRkFVTFRfTUFYX0JJVFJBVEU7CisgIGRlbXV4LT5kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSA9IERFRkFVTFRfUFJFU0VOVEFUSU9OX0RFTEFZOwogCiAgIGdfbXV0ZXhfaW5pdCAoJmRlbXV4LT5jbGllbnRfbG9jayk7CiAKQEAgLTQ1Nyw2ICs0OTAsMTAgQEAKICAgICBjYXNlIFBST1BfTUFYX0JJVFJBVEU6CiAgICAgICBkZW11eC0+bWF4X2JpdHJhdGUgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUFJFU0VOVEFUSU9OX0RFTEFZOgorICAgICAgZ19mcmVlIChkZW11eC0+ZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpOworICAgICAgZGVtdXgtPmRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5ID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwpAQCAtNDgwLDYgKzUxNywxMiBAQAogICAgIGNhc2UgUFJPUF9NQVhfQklUUkFURToKICAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBkZW11eC0+bWF4X2JpdHJhdGUpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BSRVNFTlRBVElPTl9ERUxBWToKKyAgICAgIGlmIChkZW11eC0+ZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgPT0gTlVMTCkKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAodmFsdWUsICIiKTsKKyAgICAgIGVsc2UKKyAgICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgZGVtdXgtPmRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5KTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC01MzUsMTEgKzU3OCwxMSBAQAogICAgIGFjdGl2ZV9zdHJlYW0gPSBnc3RfbXBkcGFyc2VyX2dldF9hY3RpdmVfc3RyZWFtX2J5X2luZGV4IChkZW11eC0+Y2xpZW50LCBpKTsKICAgICBpZiAoYWN0aXZlX3N0cmVhbSA9PSBOVUxMKQogICAgICAgY29udGludWU7Ci0gICAgLyogVE9ETzogc3VwcG9ydCAnYXBwbGljYXRpb24nIG1pbWVUeXBlICovCi0gICAgaWYgKGFjdGl2ZV9zdHJlYW0tPm1pbWVUeXBlID09IEdTVF9TVFJFQU1fQVBQTElDQVRJT04pCi0gICAgICBjb250aW51ZTsKIAogICAgIHNyY3BhZCA9IGdzdF9kYXNoX2RlbXV4X2NyZWF0ZV9wYWQgKGRlbXV4LCBhY3RpdmVfc3RyZWFtKTsKKyAgICBpZiAoc3JjcGFkID09IE5VTEwpCisgICAgICBjb250aW51ZTsKKwogICAgIGNhcHMgPSBnc3RfZGFzaF9kZW11eF9nZXRfaW5wdXRfY2FwcyAoZGVtdXgsIGFjdGl2ZV9zdHJlYW0pOwogICAgIEdTVF9MT0dfT0JKRUNUIChkZW11eCwgIkNyZWF0aW5nIHN0cmVhbSAlZCAlIiBHU1RfUFRSX0ZPUk1BVCwgaSwgY2Fwcyk7CiAKQEAgLTU0OCw5ICs1OTEsMTYgQEAKICAgICAgIGxhbmcgPSBhZHBfc2V0LT5sYW5nOwogCiAgICAgICAvKiBGYWxsYmFjayB0byB0aGUgbGFuZ3VhZ2UgaW4gQ29udGVudENvbXBvbmVudCBub2RlICovCi0gICAgICBpZiAobGFuZyA9PSBOVUxMICYmIGdfbGlzdF9sZW5ndGggKGFkcF9zZXQtPkNvbnRlbnRDb21wb25lbnRzKSA9PSAxKSB7Ci0gICAgICAgIEdzdENvbnRlbnRDb21wb25lbnROb2RlICpjY19ub2RlID0gYWRwX3NldC0+Q29udGVudENvbXBvbmVudHMtPmRhdGE7Ci0gICAgICAgIGxhbmcgPSBjY19ub2RlLT5sYW5nOworICAgICAgaWYgKGxhbmcgPT0gTlVMTCkgeworICAgICAgICBHTGlzdCAqaXQ7CisKKyAgICAgICAgZm9yIChpdCA9IGFkcF9zZXQtPkNvbnRlbnRDb21wb25lbnRzOyBpdDsgaXQgPSBpdC0+bmV4dCkgeworICAgICAgICAgIEdzdENvbnRlbnRDb21wb25lbnROb2RlICpjY19ub2RlID0gaXQtPmRhdGE7CisgICAgICAgICAgaWYgKGNjX25vZGUtPmxhbmcpIHsKKyAgICAgICAgICAgIGxhbmcgPSBjY19ub2RlLT5sYW5nOworICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgfQorICAgICAgICB9CiAgICAgICB9CiAgICAgfQogCkBAIC01NzUsOSArNjI1LDkgQEAKICAgICAgICAgYWN0aXZlX3N0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlICYmCiAgICAgICAgIGFjdGl2ZV9zdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+Q29udGVudFByb3RlY3Rpb24pIHsKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiQWRkaW5nIENvbnRlbnRQcm90ZWN0aW9uIGV2ZW50cyB0byBzb3VyY2UgcGFkIik7Ci0gICAgICBnX2xpc3RfZm9yZWFjaCAoYWN0aXZlX3N0cmVhbS0+Y3VyX2FkYXB0X3NldC0+Ci0gICAgICAgICAgUmVwcmVzZW50YXRpb25CYXNlLT5Db250ZW50UHJvdGVjdGlvbiwKLSAgICAgICAgICBnc3RfZGFzaF9kZW11eF9zZW5kX2NvbnRlbnRfcHJvdGVjdGlvbl9ldmVudCwgc3RyZWFtKTsKKyAgICAgIGdfbGlzdF9mb3JlYWNoIChhY3RpdmVfc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPgorICAgICAgICAgIENvbnRlbnRQcm90ZWN0aW9uLCBnc3RfZGFzaF9kZW11eF9zZW5kX2NvbnRlbnRfcHJvdGVjdGlvbl9ldmVudCwKKyAgICAgICAgICBzdHJlYW0pOwogICAgIH0KIAogICAgIGdzdF9pc29mZl9zaWR4X3BhcnNlcl9pbml0ICgmc3RyZWFtLT5zaWR4X3BhcnNlcik7CkBAIC02NTAsNiArNzAwLDExIEBACiAgIHBlcmlvZF9pZHggPSAwOwogICBpZiAoZ3N0X21wZF9jbGllbnRfaXNfbGl2ZSAoZGFzaGRlbXV4LT5jbGllbnQpKSB7CiAgICAgR0RhdGVUaW1lICpnX25vdzsKKyAgICBpZiAoZGFzaGRlbXV4LT5jbGllbnQtPm1wZF9ub2RlLT5hdmFpbGFiaWxpdHlTdGFydFRpbWUgPT0gTlVMTCkgeworICAgICAgcmV0ID0gRkFMU0U7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChkZW11eCwgIk1QRCBkb2VzIG5vdCBoYXZlIGF2YWlsYWJpbGl0eVN0YXJ0VGltZSIpOworICAgICAgZ290byBkb25lOworICAgIH0KICAgICBpZiAoZGFzaGRlbXV4LT5jbG9ja19kcmlmdCA9PSBOVUxMKSB7CiAgICAgICBnY2hhciAqKnVybHM7CiAgICAgICB1cmxzID0KQEAgLTY2OSw2ICs3MjQsMTMgQEAKICAgICAgICAgICBkYXNoZGVtdXgtPmNsaWVudC0+bXBkX25vZGUtPnN1Z2dlc3RlZFByZXNlbnRhdGlvbkRlbGF5ICogLTEwMDApOwogICAgICAgZ3N0X2RhdGVfdGltZV91bnJlZiAobm93KTsKICAgICAgIG5vdyA9IHRhcmdldDsKKyAgICB9IGVsc2UgaWYgKGRhc2hkZW11eC0+ZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpIHsKKyAgICAgIGdpbnQ2NCBkZnAgPQorICAgICAgICAgIGdzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IChkYXNoZGVtdXgtPmNsaWVudCwKKyAgICAgICAgICBkYXNoZGVtdXgtPmRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5KTsKKyAgICAgIEdzdERhdGVUaW1lICp0YXJnZXQgPSBnc3RfbXBkX2NsaWVudF9hZGRfdGltZV9kaWZmZXJlbmNlIChub3csIGRmcCk7CisgICAgICBnc3RfZGF0ZV90aW1lX3VucmVmIChub3cpOworICAgICAgbm93ID0gdGFyZ2V0OwogICAgIH0KICAgICBwZXJpb2RfaWR4ID0KICAgICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X3BlcmlvZF9pbmRleF9hdF90aW1lIChkYXNoZGVtdXgtPmNsaWVudCwgbm93KTsKQEAgLTc3MSwxMyArODMzLDIyIEBACiAgICAgICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgidmlkZW9fJTAydSIsIGRlbXV4LT5uX3ZpZGVvX3N0cmVhbXMrKyk7CiAgICAgICB0bXBsID0gZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X2Rhc2hfZGVtdXhfdmlkZW9zcmNfdGVtcGxhdGUpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RSRUFNX0FQUExJQ0FUSU9OOgorICAgICAgaWYgKGdzdF9tcGRfY2xpZW50X2FjdGl2ZV9zdHJlYW1fY29udGFpbnNfc3VidGl0bGVzIChzdHJlYW0pKSB7CisgICAgICAgIG5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJzdWJ0aXRsZV8lMDJ1IiwgZGVtdXgtPm5fc3VidGl0bGVfc3RyZWFtcysrKTsKKyAgICAgICAgdG1wbCA9CisgICAgICAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfZGFzaF9kZW11eF9zdWJ0aXRsZXNyY190ZW1wbGF0ZSk7CisgICAgICB9IGVsc2UgeworICAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgIH0KKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKICAgICAgIHJldHVybiBOVUxMOwogICB9CiAKICAgLyogQ3JlYXRlIGFuZCBhY3RpdmF0ZSBuZXcgcGFkcyAqLwotICBwYWQgPSBnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSAobmFtZSwgdG1wbCk7CisgIHBhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKHRtcGwsIG5hbWUpOwogICBnX2ZyZWUgKG5hbWUpOwogICBnc3Rfb2JqZWN0X3VucmVmICh0bXBsKTsKIApAQCAtODE0LDcgKzg4NSw4IEBACiAgICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQogewogICBndWludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7Ci0gIGNvbnN0IGdjaGFyICptaW1lVHlwZSA9IE5VTEw7CisgIGdpbnQgZnBzX251bSA9IDAsIGZwc19kZW4gPSAxOworICBnYm9vbGVhbiBoYXZlX2ZwcyA9IEZBTFNFOwogICBHc3RDYXBzICpjYXBzID0gTlVMTDsKIAogICBpZiAoc3RyZWFtID09IE5VTEwpCkBAIC04MjQsMTcgKzg5NiwyMyBAQAogICBpZiAoIWdzdF9tcGRfY2xpZW50X2dldF9iaXRzdHJlYW1fc3dpdGNoaW5nX2ZsYWcgKHN0cmVhbSkpIHsKICAgICB3aWR0aCA9IGdzdF9tcGRfY2xpZW50X2dldF92aWRlb19zdHJlYW1fd2lkdGggKHN0cmVhbSk7CiAgICAgaGVpZ2h0ID0gZ3N0X21wZF9jbGllbnRfZ2V0X3ZpZGVvX3N0cmVhbV9oZWlnaHQgKHN0cmVhbSk7CisgICAgaGF2ZV9mcHMgPQorICAgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfdmlkZW9fc3RyZWFtX2ZyYW1lcmF0ZSAoc3RyZWFtLCAmZnBzX251bSwgJmZwc19kZW4pOwogICB9Ci0gIG1pbWVUeXBlID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9taW1lVHlwZSAoc3RyZWFtKTsKLSAgaWYgKG1pbWVUeXBlID09IE5VTEwpCisgIGNhcHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX2NhcHMgKHN0cmVhbSk7CisgIGlmIChjYXBzID09IE5VTEwpCiAgICAgcmV0dXJuIE5VTEw7CiAKLSAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChtaW1lVHlwZSk7CiAgIGlmICh3aWR0aCA+IDAgJiYgaGVpZ2h0ID4gMCkgewogICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJ3aWR0aCIsIEdfVFlQRV9JTlQsIHdpZHRoLCAiaGVpZ2h0IiwKICAgICAgICAgR19UWVBFX0lOVCwgaGVpZ2h0LCBOVUxMKTsKICAgfQogCisgIGlmIChoYXZlX2ZwcykgeworICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTiwgZnBzX251bSwKKyAgICAgICAgZnBzX2RlbiwgTlVMTCk7CisgIH0KKwogICByZXR1cm4gY2FwczsKIH0KIApAQCAtODQzLDcgKzkyMSw2IEBACiAgICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQogewogICBndWludCByYXRlID0gMCwgY2hhbm5lbHMgPSAwOwotICBjb25zdCBnY2hhciAqbWltZVR5cGU7CiAgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwogCiAgIGlmIChzdHJlYW0gPT0gTlVMTCkKQEAgLTg1NCwxMSArOTMxLDEwIEBACiAgICAgY2hhbm5lbHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfYXVkaW9fc3RyZWFtX251bV9jaGFubmVscyAoc3RyZWFtKTsKICAgICByYXRlID0gZ3N0X21wZF9jbGllbnRfZ2V0X2F1ZGlvX3N0cmVhbV9yYXRlIChzdHJlYW0pOwogICB9Ci0gIG1pbWVUeXBlID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9taW1lVHlwZSAoc3RyZWFtKTsKLSAgaWYgKG1pbWVUeXBlID09IE5VTEwpCisgIGNhcHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX2NhcHMgKHN0cmVhbSk7CisgIGlmIChjYXBzID09IE5VTEwpCiAgICAgcmV0dXJuIE5VTEw7CiAKLSAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChtaW1lVHlwZSk7CiAgIGlmIChyYXRlID4gMCkgewogICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJyYXRlIiwgR19UWVBFX0lOVCwgcmF0ZSwgTlVMTCk7CiAgIH0KQEAgLTg3MywxOCArOTQ5LDE1IEBACiBnc3RfZGFzaF9kZW11eF9nZXRfYXBwbGljYXRpb25faW5wdXRfY2FwcyAoR3N0RGFzaERlbXV4ICogZGVtdXgsCiAgICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQogewotICBjb25zdCBnY2hhciAqbWltZVR5cGU7CiAgIEdzdENhcHMgKmNhcHMgPSBOVUxMOwogCiAgIGlmIChzdHJlYW0gPT0gTlVMTCkKICAgICByZXR1cm4gTlVMTDsKIAotICBtaW1lVHlwZSA9IGdzdF9tcGRfY2xpZW50X2dldF9zdHJlYW1fbWltZVR5cGUgKHN0cmVhbSk7Ci0gIGlmIChtaW1lVHlwZSA9PSBOVUxMKQorICBjYXBzID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9jYXBzIChzdHJlYW0pOworICBpZiAoY2FwcyA9PSBOVUxMKQogICAgIHJldHVybiBOVUxMOwogCi0gIGNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAobWltZVR5cGUpOwotCiAgIHJldHVybiBjYXBzOwogfQogCkBAIC05OTQsNDIgKzEwNjcsOTQgQEAKICAgcmV0dXJuIEdTVF9GTE9XX0VPUzsKIH0KIAorc3RhdGljIGdpbnQKK2dzdF9kYXNoX2RlbXV4X2luZGV4X2VudHJ5X3NlYXJjaCAoR3N0U2lkeEJveEVudHJ5ICogZW50cnksIEdzdENsb2NrVGltZSAqIHRzLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0Q2xvY2tUaW1lIGVudHJ5X3RzID0gZW50cnktPnB0cyArIGVudHJ5LT5kdXJhdGlvbjsKKyAgaWYgKGVudHJ5X3RzIDwgKnRzKQorICAgIHJldHVybiAtMTsKKyAgZWxzZSBpZiAoZW50cnktPnB0cyA+ICp0cykKKyAgICByZXR1cm4gMTsKKyAgZWxzZQorICAgIHJldHVybiAwOworfQorCiBzdGF0aWMgdm9pZAogZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX3NpZHhfc2VlayAoR3N0RGFzaERlbXV4U3RyZWFtICogZGFzaHN0cmVhbSwKLSAgICBHc3RDbG9ja1RpbWUgdHMpCisgICAgZ2Jvb2xlYW4gZm9yd2FyZCwgR3N0U2Vla0ZsYWdzIGZsYWdzLCBHc3RDbG9ja1RpbWUgdHMsCisgICAgR3N0Q2xvY2tUaW1lICogZmluYWxfdHMpCiB7CiAgIEdzdFNpZHhCb3ggKnNpZHggPSBTSURYIChkYXNoc3RyZWFtKTsKLSAgZ2ludCBpOworICBHc3RTaWR4Qm94RW50cnkgKmVudHJ5OworICBnaW50IGlkeCA9IHNpZHgtPmVudHJpZXNfY291bnQ7CiAKLSAgLyogVE9ETyBvcHRpbWl6ZSB0byBhIGJpbmFyeSBzZWFyY2ggKi8KLSAgZm9yIChpID0gMDsgaSA8IHNpZHgtPmVudHJpZXNfY291bnQ7IGkrKykgewotICAgIGlmIChzaWR4LT5lbnRyaWVzW2ldLnB0cyArIHNpZHgtPmVudHJpZXNbaV0uZHVyYXRpb24gPj0gdHMpCi0gICAgICBicmVhazsKLSAgfQotICBzaWR4LT5lbnRyeV9pbmRleCA9IGk7Ci0gIGRhc2hzdHJlYW0tPnNpZHhfaW5kZXggPSBpOwotICBpZiAoaSA8IHNpZHgtPmVudHJpZXNfY291bnQpCi0gICAgZGFzaHN0cmVhbS0+c2lkeF9jdXJyZW50X3JlbWFpbmluZyA9IHNpZHgtPmVudHJpZXNbaV0uc2l6ZTsKLSAgZWxzZQorICAvKiBjaGVjayB3aGV0aGVyIHRzIGlzIGFscmVhZHkgcGFzdCB0aGUgbGFzdCBlbGVtZW50IG9yIG5vdCAqLworICBpZiAoc2lkeC0+ZW50cmllc1tpZHggLSAxXS5wdHMgKyBzaWR4LT5lbnRyaWVzW2lkeCAtIDFdLmR1cmF0aW9uIDwgdHMpIHsKICAgICBkYXNoc3RyZWFtLT5zaWR4X2N1cnJlbnRfcmVtYWluaW5nID0gMDsKKyAgfSBlbHNlIHsKKyAgICBHc3RTZWFyY2hNb2RlIG1vZGUgPSBHU1RfU0VBUkNIX01PREVfQkVGT1JFOworCisgICAgaWYgKChmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUKSA9PSBHU1RfU0VFS19GTEFHX1NOQVBfTkVBUkVTVCkgeworICAgICAgbW9kZSA9IEdTVF9TRUFSQ0hfTU9ERV9CRUZPUkU7CisgICAgfSBlbHNlIGlmICgoZm9yd2FyZCAmJiAoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIpKSB8fAorICAgICAgICAoIWZvcndhcmQgJiYgKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSkpKSB7CisgICAgICBtb2RlID0gR1NUX1NFQVJDSF9NT0RFX0FGVEVSOworICAgIH0gZWxzZSB7CisgICAgICBtb2RlID0gR1NUX1NFQVJDSF9NT0RFX0JFRk9SRTsKKyAgICB9CisKKyAgICBlbnRyeSA9CisgICAgICAgIGdzdF91dGlsX2FycmF5X2JpbmFyeV9zZWFyY2ggKHNpZHgtPmVudHJpZXMsIHNpZHgtPmVudHJpZXNfY291bnQsCisgICAgICAgIHNpemVvZiAoR3N0U2lkeEJveEVudHJ5KSwKKyAgICAgICAgKEdDb21wYXJlRGF0YUZ1bmMpIGdzdF9kYXNoX2RlbXV4X2luZGV4X2VudHJ5X3NlYXJjaCwgbW9kZSwgJnRzLCBOVUxMKTsKKworICAgIGlkeCA9IGVudHJ5IC0gc2lkeC0+ZW50cmllczsKKworICAgIC8qIEZJWE1FIGluIHJldmVyc2UgbW9kZSwgaWYgd2UgYXJlIGV4YWN0bHkgYXQgYSBmcmFnbWVudCBzdGFydCBpdCBtYWtlcyBtb3JlCisgICAgICogc2Vuc2UgdG8gc3RhcnQgZnJvbSB0aGUgZW5kIG9mIHRoZSBwcmV2aW91cyBmcmFnbWVudCAqLworICAgIC8qIEZJWE1FIHdlIHNob3VsZCBoYXZlIGEgR1NUX1NFQVJDSF9NT0RFX05FQVJFU1QgKi8KKyAgICBpZiAoKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1QpID09IEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUICYmCisgICAgICAgIGlkeCArIDEgPCBzaWR4LT5lbnRyaWVzX2NvdW50KSB7CisgICAgICBpZiAoQUJTIChzaWR4LT5lbnRyaWVzW2lkeCArIDFdLnB0cyAtIHRzKSA8CisgICAgICAgICAgQUJTIChzaWR4LT5lbnRyaWVzW2lkeF0ucHRzIC0gdHMpKQorICAgICAgICBpZHggKz0gMTsKKyAgICB9CisKKyAgICBkYXNoc3RyZWFtLT5zaWR4X2N1cnJlbnRfcmVtYWluaW5nID0gc2lkeC0+ZW50cmllc1tpZHhdLnNpemU7CisgIH0KKworICBzaWR4LT5lbnRyeV9pbmRleCA9IGlkeDsKKyAgZGFzaHN0cmVhbS0+c2lkeF9pbmRleCA9IGlkeDsKKworICBpZiAoZmluYWxfdHMpIHsKKyAgICBpZiAoaWR4ID09IHNpZHgtPmVudHJpZXNfY291bnQpCisgICAgICAqZmluYWxfdHMgPSBzaWR4LT5lbnRyaWVzW2lkeF0ucHRzICsgc2lkeC0+ZW50cmllc1tpZHhdLmR1cmF0aW9uOworICAgIGVsc2UKKyAgICAgICpmaW5hbF90cyA9IHNpZHgtPmVudHJpZXNbaWR4XS5wdHM7CisgIH0KIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9kYXNoX2RlbXV4X3N0cmVhbV9zZWVrIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBHc3RDbG9ja1RpbWUgdHMpCitnc3RfZGFzaF9kZW11eF9zdHJlYW1fc2VlayAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwKKyAgICBHc3RTZWVrRmxhZ3MgZmxhZ3MsIEdzdENsb2NrVGltZSB0cywgR3N0Q2xvY2tUaW1lICogZmluYWxfdHMpCiB7CiAgIEdzdERhc2hEZW11eFN0cmVhbSAqZGFzaHN0cmVhbSA9IChHc3REYXNoRGVtdXhTdHJlYW0gKikgc3RyZWFtOwogICBHc3REYXNoRGVtdXggKmRhc2hkZW11eCA9IEdTVF9EQVNIX0RFTVVYX0NBU1QgKHN0cmVhbS0+ZGVtdXgpOwogCiAgIGlmIChnc3RfbXBkX2NsaWVudF9oYXNfaXNvZmZfb25kZW1hbmRfcHJvZmlsZSAoZGFzaGRlbXV4LT5jbGllbnQpKSB7CiAgICAgaWYgKGRhc2hzdHJlYW0tPnNpZHhfcGFyc2VyLnN0YXR1cyA9PSBHU1RfSVNPRkZfU0lEWF9QQVJTRVJfRklOSVNIRUQpIHsKLSAgICAgIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9zaWR4X3NlZWsgKGRhc2hzdHJlYW0sIHRzKTsKKyAgICAgIGdzdF9kYXNoX2RlbXV4X3N0cmVhbV9zaWR4X3NlZWsgKGRhc2hzdHJlYW0sIGZvcndhcmQsIGZsYWdzLCB0cywKKyAgICAgICAgICBmaW5hbF90cyk7CiAgICAgfSBlbHNlIHsKICAgICAgIC8qIG5vIGluZGV4IHlldCwgc2VlayB3aGVuIHdlIGhhdmUgaXQgKi8KKyAgICAgIC8qIEZJWE1FIC0gdGhlIGZpbmFsX3RzIHdvbid0IGJlIGNvcnJlY3QgaGVyZSAqLwogICAgICAgZGFzaHN0cmVhbS0+cGVuZGluZ19zZWVrX3RzID0gdHM7CiAgICAgfQogICB9CiAKLSAgZ3N0X21wZF9jbGllbnRfc3RyZWFtX3NlZWsgKGRhc2hkZW11eC0+Y2xpZW50LCBkYXNoc3RyZWFtLT5hY3RpdmVfc3RyZWFtLCB0cyk7CisgIGdzdF9tcGRfY2xpZW50X3N0cmVhbV9zZWVrIChkYXNoZGVtdXgtPmNsaWVudCwgZGFzaHN0cmVhbS0+YWN0aXZlX3N0cmVhbSwKKyAgICAgIGZvcndhcmQsIGZsYWdzLCB0cywgZmluYWxfdHMpOwogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKQEAgLTExODMsNiArMTMwOCwxMCBAQAogICByZXR1cm4gcmV0OwogfQogCisjZGVmaW5lIFNFRUtfVVBEQVRFU19QTEFZX1BPU0lUSU9OKHIsIHN0YXJ0X3R5cGUsIHN0b3BfdHlwZSkgXAorICAoKHIgPj0gMCAmJiBzdGFydF90eXBlICE9IEdTVF9TRUVLX1RZUEVfTk9ORSkgfHwgXAorICAgKHIgPCAwICYmIHN0b3BfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpKQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9kYXNoX2RlbXV4X3NlZWsgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgR3N0RXZlbnQgKiBzZWVrKQogewpAQCAtMTIwMiwxMSArMTMzMSwxNiBAQAogICBnc3RfZXZlbnRfcGFyc2Vfc2VlayAoc2VlaywgJnJhdGUsICZmb3JtYXQsICZmbGFncywgJnN0YXJ0X3R5cGUsICZzdGFydCwKICAgICAgICZzdG9wX3R5cGUsICZzdG9wKTsKIAotICAvKiBUT0RPIGNoZWNrIGlmIHN0YXJ0LXR5cGUvc3RvcC10eXBlIGlzIFNFVCAqLwotICBpZiAoZGVtdXgtPnNlZ21lbnQucmF0ZSA+IDAuMCkKLSAgICB0YXJnZXRfcG9zID0gKEdzdENsb2NrVGltZSkgZGVtdXgtPnNlZ21lbnQuc3RhcnQ7Ci0gIGVsc2UKLSAgICB0YXJnZXRfcG9zID0gKEdzdENsb2NrVGltZSkgZGVtdXgtPnNlZ21lbnQuc3RvcDsKKyAgaWYgKCFTRUVLX1VQREFURVNfUExBWV9QT1NJVElPTiAocmF0ZSwgc3RhcnRfdHlwZSwgc3RvcF90eXBlKSkgeworICAgIC8qIG5vdGhpbmcgdG8gZG8gaWYgd2UgZG9uJ3QgaGF2ZSB0byB1cGRhdGUgdGhlIGN1cnJlbnQgcG9zaXRpb24gKi8KKyAgICByZXR1cm4gVFJVRTsKKyAgfQorCisgIGlmIChkZW11eC0+c2VnbWVudC5yYXRlID4gMC4wKSB7CisgICAgdGFyZ2V0X3BvcyA9IChHc3RDbG9ja1RpbWUpIHN0YXJ0OworICB9IGVsc2UgeworICAgIHRhcmdldF9wb3MgPSAoR3N0Q2xvY2tUaW1lKSBzdG9wOworICB9CiAKICAgLyogc2VsZWN0IHRoZSByZXF1ZXN0ZWQgUGVyaW9kIGluIHRoZSBNZWRpYSBQcmVzZW50YXRpb24gKi8KICAgaWYgKCFnc3RfbXBkX2NsaWVudF9zZXR1cF9tZWRpYV9wcmVzZW50YXRpb24gKGRhc2hkZW11eC0+Y2xpZW50LCB0YXJnZXRfcG9zLApAQCAtMTI1NSw3ICsxMzg5LDcgQEAKICAgICAgIGdzdF9pc29mZl9zaWR4X3BhcnNlcl9jbGVhciAoJmRhc2hzdHJlYW0tPnNpZHhfcGFyc2VyKTsKICAgICAgIGdzdF9pc29mZl9zaWR4X3BhcnNlcl9pbml0ICgmZGFzaHN0cmVhbS0+c2lkeF9wYXJzZXIpOwogICAgIH0KLSAgICBnc3RfZGFzaF9kZW11eF9zdHJlYW1fc2VlayAoaXRlci0+ZGF0YSwgdGFyZ2V0X3Bvcyk7CisgICAgZ3N0X2Rhc2hfZGVtdXhfc3RyZWFtX3NlZWsgKGl0ZXItPmRhdGEsIHJhdGUgPj0gMCwgMCwgdGFyZ2V0X3BvcywgTlVMTCk7CiAgIH0KICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0xMzA4LDE3ICsxNDQyLDIzIEBACiAgICAgaWYgKHBlcmlvZF9pZCkgewogICAgICAgaWYgKCFnc3RfbXBkX2NsaWVudF9zZXRfcGVyaW9kX2lkIChuZXdfY2xpZW50LCBwZXJpb2RfaWQpKSB7CiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiRXJyb3Igc2V0dGluZyB1cCB0aGUgdXBkYXRlZCBtYW5pZmVzdCBmaWxlIik7CisgICAgICAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG5ld19jbGllbnQpOworICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXBpbmZvKTsKICAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0VPUzsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgaWYgKCFnc3RfbXBkX2NsaWVudF9zZXRfcGVyaW9kX2luZGV4IChuZXdfY2xpZW50LCBwZXJpb2RfaWR4KSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkVycm9yIHNldHRpbmcgdXAgdGhlIHVwZGF0ZWQgbWFuaWZlc3QgZmlsZSIpOworICAgICAgICBnc3RfbXBkX2NsaWVudF9mcmVlIChuZXdfY2xpZW50KTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwaW5mbyk7CiAgICAgICAgIHJldHVybiBHU1RfRkxPV19FT1M7CiAgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCFnc3RfZGFzaF9kZW11eF9zZXR1cF9tcGRwYXJzZXJfc3RyZWFtcyAoZGFzaGRlbXV4LCBuZXdfY2xpZW50KSkgewogICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZGVtdXgsICJGYWlsZWQgdG8gc2V0dXAgc3RyZWFtcyBvbiBtYW5pZmVzdCAiICJ1cGRhdGUiKTsKKyAgICAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG5ld19jbGllbnQpOworICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwaW5mbyk7CiAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgICAgfQogCkBAIC0xMzM0LDYgKzE0NzQsOCBAQAogICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKICAgICAgICAgICAgICJTdHJlYW0gb2YgaW5kZXggJWQgaXMgbWlzc2luZyBmcm9tIG1hbmlmZXN0IHVwZGF0ZSIsCiAgICAgICAgICAgICBkZW11eF9zdHJlYW0tPmluZGV4KTsKKyAgICAgICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobmV3X2NsaWVudCk7CisgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJm1hcGluZm8pOwogICAgICAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOwogICAgICAgfQogCkBAIC0xMzUzLDcgKzE0OTUsOCBAQAogICAgICAgICAgICAgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTICh0cyksCiAgICAgICAgICAgICBHU1RfVElNRV9BUkdTICh0cyArICgxMCAqIEdTVF9VU0VDT05EKSkpOwogICAgICAgICB0cyArPSAxMCAqIEdTVF9VU0VDT05EOwotICAgICAgICBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAobmV3X2NsaWVudCwgbmV3X3N0cmVhbSwgdHMpOworICAgICAgICBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAobmV3X2NsaWVudCwgbmV3X3N0cmVhbSwKKyAgICAgICAgICAgIGRlbXV4LT5zZWdtZW50LnJhdGUgPj0gMCwgMCwgdHMsIE5VTEwpOwogICAgICAgfQogCiAgICAgICBkZW11eF9zdHJlYW0tPmFjdGl2ZV9zdHJlYW0gPSBuZXdfc3RyZWFtOwpAQCAtMTM3MSw2ICsxNTE0LDcgQEAKICAgICAgKiBzb3VyY2UgZWxlbWVudCBhbmQgd2UgaGF2ZSByZWNlaXZlZCB0aGUgNDA0IEhUTUwgcmVzcG9uc2UgaW5zdGVhZCBvZgogICAgICAqIHRoZSBtYW5pZmVzdCAqLwogICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJFcnJvciBwYXJzaW5nIHRoZSBtYW5pZmVzdC4iKTsKKyAgICBnc3RfbXBkX2NsaWVudF9mcmVlIChuZXdfY2xpZW50KTsKICAgICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXBpbmZvKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KQEAgLTEzODYsMjUgKzE1MzAsMjcgQEAKIHsKICAgR3N0RGFzaERlbXV4ICpkYXNoZGVtdXggPSBHU1RfREFTSF9ERU1VWF9DQVNUIChzdHJlYW0tPmRlbXV4KTsKICAgR3N0RGFzaERlbXV4U3RyZWFtICpkYXNoc3RyZWFtID0gKEdzdERhc2hEZW11eFN0cmVhbSAqKSBzdHJlYW07Ci0gIEdzdERhdGVUaW1lICpzZWdfZW5kX3RpbWU7CisgIEdzdERhdGVUaW1lICpzZWdtZW50QXZhaWxhYmlsaXR5OwogICBHc3RBY3RpdmVTdHJlYW0gKmFjdGl2ZV9zdHJlYW0gPSBkYXNoc3RyZWFtLT5hY3RpdmVfc3RyZWFtOwogCi0gIHNlZ19lbmRfdGltZSA9Ci0gICAgICBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9lbmRfdGltZSAoZGFzaGRlbXV4LT5jbGllbnQsCi0gICAgICBhY3RpdmVfc3RyZWFtKTsKKyAgc2VnbWVudEF2YWlsYWJpbGl0eSA9CisgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lCisgICAgICAoZGFzaGRlbXV4LT5jbGllbnQsIGFjdGl2ZV9zdHJlYW0pOwogCi0gIGlmIChzZWdfZW5kX3RpbWUpIHsKKyAgaWYgKHNlZ21lbnRBdmFpbGFiaWxpdHkpIHsKICAgICBnaW50NjQgZGlmZjsKICAgICBHc3REYXRlVGltZSAqY3VyX3RpbWU7CiAKICAgICBjdXJfdGltZSA9IGdzdF9kYXRlX3RpbWVfbmV3X25vd191dGMgKCk7Ci0gICAgZGlmZiA9IGdzdF9tcGRfY2xpZW50X2NhbGN1bGF0ZV90aW1lX2RpZmZlcmVuY2UgKGN1cl90aW1lLCBzZWdfZW5kX3RpbWUpOwotICAgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKHNlZ19lbmRfdGltZSk7CisgICAgZGlmZiA9IGdzdF9tcGRfY2xpZW50X2NhbGN1bGF0ZV90aW1lX2RpZmZlcmVuY2UgKGN1cl90aW1lLAorICAgICAgICBzZWdtZW50QXZhaWxhYmlsaXR5KTsKKyAgICBnc3RfZGF0ZV90aW1lX3VucmVmIChzZWdtZW50QXZhaWxhYmlsaXR5KTsKICAgICBnc3RfZGF0ZV90aW1lX3VucmVmIChjdXJfdGltZSk7CiAgICAgLyogc3VidHJhY3QgdGhlIHNlcnZlcidzIGNsb2NrIGRyaWZ0LCBzbyB0aGF0IGlmIHRoZSBzZXJ2ZXIncwogICAgICAgIHRpbWUgaXMgYmVoaW5kIG91ciBpZGVhIG9mIFVUQywgd2UgbmVlZCB0byBzbGVlcCBmb3IgbG9uZ2VyCiAgICAgICAgYmVmb3JlIHJlcXVlc3RpbmcgYSBmcmFnbWVudCAqLwotICAgIHJldHVybiBkaWZmIC0gZ3N0X2Rhc2hfZGVtdXhfZ2V0X2Nsb2NrX2NvbXBlbnNhdGlvbiAoZGFzaGRlbXV4KTsKKyAgICByZXR1cm4gZGlmZiAtCisgICAgICAgIGdzdF9kYXNoX2RlbXV4X2dldF9jbG9ja19jb21wZW5zYXRpb24gKGRhc2hkZW11eCkgKiBHU1RfVVNFQ09ORDsKICAgfQogICByZXR1cm4gMDsKIH0KQEAgLTE1MTIsOCArMTY1OCwxMCBAQAogICAgICAgICAvKiB3aGVuIGZpbmlzaGVkLCBwcmVwYXJlIGZvciByZWFsIGRhdGEgc3RyZWFtaW5nICovCiAgICAgICAgIGlmIChkYXNoX3N0cmVhbS0+c2lkeF9wYXJzZXIuc3RhdHVzID09IEdTVF9JU09GRl9TSURYX1BBUlNFUl9GSU5JU0hFRCkgewogICAgICAgICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZGFzaF9zdHJlYW0tPnBlbmRpbmdfc2Vla190cykpIHsKKyAgICAgICAgICAgIC8qIEZJWE1FLCBwcmVzZXJ2ZSBzZWVrIGZsYWdzICovCiAgICAgICAgICAgICBnc3RfZGFzaF9kZW11eF9zdHJlYW1fc2lkeF9zZWVrIChkYXNoX3N0cmVhbSwKLSAgICAgICAgICAgICAgICBkYXNoX3N0cmVhbS0+cGVuZGluZ19zZWVrX3RzKTsKKyAgICAgICAgICAgICAgICBkZW11eC0+c2VnbWVudC5yYXRlID49IDAsIDAsIGRhc2hfc3RyZWFtLT5wZW5kaW5nX3NlZWtfdHMsCisgICAgICAgICAgICAgICAgTlVMTCk7CiAgICAgICAgICAgICBkYXNoX3N0cmVhbS0+cGVuZGluZ19zZWVrX3RzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgU0lEWCAoZGFzaF9zdHJlYW0pLT5lbnRyeV9pbmRleCA9IGRhc2hfc3RyZWFtLT5zaWR4X2luZGV4OwpAQCAtMTU4NCw3ICsxNzMyLDYgQEAKIAogICBjbG9ja19kcmlmdCA9IGdfc2xpY2VfbmV3MCAoR3N0RGFzaERlbXV4Q2xvY2tEcmlmdCk7CiAgIGdfbXV0ZXhfaW5pdCAoJmNsb2NrX2RyaWZ0LT5jbG9ja19sb2NrKTsKLSAgZ19jb25kX2luaXQgKCZjbG9ja19kcmlmdC0+Y2xvY2tfY29uZCk7CiAgIGNsb2NrX2RyaWZ0LT5uZXh0X3VwZGF0ZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpOwogICByZXR1cm4gY2xvY2tfZHJpZnQ7CiB9CkBAIC0xNTk2LDcgKzE3NDMsNiBAQAogICAgIGdfbXV0ZXhfbG9jayAoJmNsb2NrX2RyaWZ0LT5jbG9ja19sb2NrKTsKICAgICBpZiAoY2xvY2tfZHJpZnQtPm50cF9jbG9jaykKICAgICAgIGdfb2JqZWN0X3VucmVmIChjbG9ja19kcmlmdC0+bnRwX2Nsb2NrKTsKLSAgICBnX2NvbmRfY2xlYXIgKCZjbG9ja19kcmlmdC0+Y2xvY2tfY29uZCk7CiAgICAgZ19tdXRleF91bmxvY2sgKCZjbG9ja19kcmlmdC0+Y2xvY2tfbG9jayk7CiAgICAgZ19tdXRleF9jbGVhciAoJmNsb2NrX2RyaWZ0LT5jbG9ja19sb2NrKTsKICAgICBnX3NsaWNlX2ZyZWUgKEdzdERhc2hEZW11eENsb2NrRHJpZnQsIGNsb2NrX2RyaWZ0KTsKQEAgLTE2NzgsMTYgKzE4MjQsMTYgQEAKICAgcmV0dXJuIGdzdF9kYXRlX3RpbWVfbmV3X2Zyb21fZ19kYXRlX3RpbWUgKGR0Mik7CiB9CiAKLXN0cnVjdCBSZmM4MjJUaW1lWm9uZQorc3RydWN0IFJmYzUzMjJUaW1lWm9uZQogewogICBjb25zdCBnY2hhciAqbmFtZTsKICAgZ2Zsb2F0IHR6b2Zmc2V0OwogfTsKIAogLyoKLSBQYXJzZSBhbiBSRkM4MjIgKHNlY3Rpb24gNSkgZGF0ZS10aW1lIGZyb20gdGhlIERhdGU6IGZpZWxkIGluIHRoZQorIFBhcnNlIGFuIFJGQzUzMjIgKHNlY3Rpb24gMy4zKSBkYXRlLXRpbWUgZnJvbSB0aGUgRGF0ZTogZmllbGQgaW4gdGhlCiAgSFRUUCByZXNwb25zZS4gCi0gU2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM4MjIjc2VjdGlvbi01CisgU2VlIGh0dHBzOi8vdG9vbHMuaWV0Zi5vcmcvaHRtbC9yZmM1MzIyI3NlY3Rpb24tMy4zCiAqLwogc3RhdGljIEdzdERhdGVUaW1lICoKIGdzdF9kYXNoX2RlbXV4X3BhcnNlX2h0dHBfaGVhZCAoR3N0RGFzaERlbXV4Q2xvY2tEcmlmdCAqIGNsb2NrX2RyaWZ0LApAQCAtMTY5Nyw3ICsxODQzLDcgQEAKICAgICAiTWF5IiwgIkp1biIsICJKdWwiLCAiQXVnIiwKICAgICAiU2VwIiwgIk9jdCIsICJOb3YiLCAiRGVjIiwgTlVMTAogICB9OwotICBzdGF0aWMgY29uc3Qgc3RydWN0IFJmYzgyMlRpbWVab25lIHRpbWV6b25lc1tdID0geworICBzdGF0aWMgY29uc3Qgc3RydWN0IFJmYzUzMjJUaW1lWm9uZSB0aW1lem9uZXNbXSA9IHsKICAgICB7IloiLCAwfSwKICAgICB7IlVUIiwgMH0sCiAgICAgeyJHTVQiLCAwfSwKQEAgLTE3NTQsOSArMTkwMCw2IEBACiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgIH0KLSAgICB3aGlsZSAoKnogPT0gJyAnKSB7Ci0gICAgICArK3o7Ci0gICAgfQogICAgIGZvciAoaW50IGkgPSAwOyB0aW1lem9uZXNbaV0ubmFtZSAmJiAhcGFyc2VkX3R6OyArK2kpIHsKICAgICAgIGlmIChnX2FzY2lpX3N0cm5jYXNlY21wICh0aW1lem9uZXNbaV0ubmFtZSwgeiwKICAgICAgICAgICAgICAgc3RybGVuICh0aW1lem9uZXNbaV0ubmFtZSkpID09IDApIHsKQEAgLTE3ODUsNiArMTkyOCw5IEBACiAgICAgICAgIH0KICAgICAgIH0KICAgICB9CisgICAgLyogQWNjZXB0IHllYXIgaW4gYm90aCAyIGRpZ2l0IG9yIDQgZGlnaXQgZm9ybWF0ICovCisgICAgaWYgKHllYXIgPCAxMDApCisgICAgICB5ZWFyICs9IDIwMDA7CiAgIH0KICAgaWYgKG1vbnRoID4gMCAmJiBwYXJzZWRfdHopIHsKICAgICB2YWx1ZSA9IGdzdF9kYXRlX3RpbWVfbmV3ICh0em9mZnNldCwKQEAgLTE4NDYsMTUgKzE5OTIsMTcgQEAKIGdzdF9kYXNoX2RlbXV4X3BhcnNlX2h0dHBfeHNkYXRlIChHc3REYXNoRGVtdXhDbG9ja0RyaWZ0ICogY2xvY2tfZHJpZnQsCiAgICAgR3N0QnVmZmVyICogYnVmZmVyKQogewotICBHc3REYXRlVGltZSAqdmFsdWU7CisgIEdzdERhdGVUaW1lICp2YWx1ZSA9IE5VTEw7CiAgIEdzdE1hcEluZm8gbWFwaW5mbzsKIAogICAvKiB0aGUgc3RyaW5nIGZyb20gdGhlIHNlcnZlciBtaWdodCBub3QgYmUgemVybyB0ZXJtaW5hdGVkICovCi0gIGdzdF9idWZmZXJfcmVzaXplIChidWZmZXIsIDAsIGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcikgKyAxKTsKLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJm1hcGluZm8sIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfV1JJVEUpOwotICBtYXBpbmZvLmRhdGFbbWFwaW5mby5zaXplIC0gMV0gPSAnXDAnOwotICB2YWx1ZSA9IGdzdF9kYXRlX3RpbWVfbmV3X2Zyb21faXNvODYwMV9zdHJpbmcgKChjb25zdCBnY2hhciAqKSBtYXBpbmZvLmRhdGEpOwotICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXBpbmZvKTsKKyAgaWYgKGdzdF9idWZmZXJfbWFwIChidWZmZXIsICZtYXBpbmZvLCBHU1RfTUFQX1JFQUQpKSB7CisgICAgZ2NoYXIgKnN0cjsKKyAgICBzdHIgPSBnX3N0cm5kdXAgKChjb25zdCBnY2hhciAqKSBtYXBpbmZvLmRhdGEsIG1hcGluZm8uc2l6ZSk7CisgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwaW5mbyk7CisgICAgdmFsdWUgPSBnc3RfZGF0ZV90aW1lX25ld19mcm9tX2lzbzg2MDFfc3RyaW5nIChzdHIpOworICAgIGdfZnJlZSAoc3RyKTsKKyAgfQogICByZXR1cm4gdmFsdWU7CiB9CiAKQEAgLTE5NTYsOCArMjEwNCw2IEBACiAgICAgICBnX211dGV4X2xvY2sgKCZjbG9ja19kcmlmdC0+Y2xvY2tfbG9jayk7CiAgICAgICBjbG9ja19kcmlmdC0+Y2xvY2tfY29tcGVuc2F0aW9uID0KICAgICAgICAgICBnX2RhdGVfdGltZV9kaWZmZXJlbmNlIChzZXJ2ZXJfbm93LCBjbGllbnRfbm93KTsKLSAgICAgIGNsb2NrX2RyaWZ0LT5nb3RfY2xvY2sgPSBUUlVFOwotICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoJmNsb2NrX2RyaWZ0LT5jbG9ja19jb25kKTsKICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmY2xvY2tfZHJpZnQtPmNsb2NrX2xvY2spOwogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCiAgICAgICAgICAgIkRpZmZlcmVuY2UgYmV0d2VlbiBjbGllbnQgYW5kIHNlcnZlciBjbG9ja3MgaXMgJWxmcyIsCmRpZmYgLS1naXQgYS9leHQvZGFzaC9nc3RkYXNoZGVtdXguaCBiL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5oCmluZGV4IGNhMmFmMzEuLjVlZDk2MjAgMTAwNjQ0Ci0tLSBhL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5oCisrKyBiL2V4dC9kYXNoL2dzdGRhc2hkZW11eC5oCkBAIC05Niw5ICs5NiwxMSBAQAogICAvKiBQcm9wZXJ0aWVzICovCiAgIEdzdENsb2NrVGltZSBtYXhfYnVmZmVyaW5nX3RpbWU7ICAgICAgLyogTWF4aW11bSBidWZmZXJpbmcgdGltZSBhY2N1bXVsYXRlZCBkdXJpbmcgcGxheWJhY2sgKi8KICAgZ3VpbnQ2NCBtYXhfYml0cmF0ZTsgICAgICAgICAgLyogbWF4IG9mIGJpdHJhdGUgc3VwcG9ydGVkIGJ5IHRhcmdldCBkZWNvZGVyICAgICAgICAgKi8KKyAgZ2NoYXIqIGRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5OyAvKiBwcmVzZW50YXRpb24gdGltZSBkZWxheSBpZiBNUERAc3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkgaXMgbm90IHByZXNlbnQgKi8KIAogICBnaW50IG5fYXVkaW9fc3RyZWFtczsKICAgZ2ludCBuX3ZpZGVvX3N0cmVhbXM7CisgIGdpbnQgbl9zdWJ0aXRsZV9zdHJlYW1zOwogfTsKIAogc3RydWN0IF9Hc3REYXNoRGVtdXhDbGFzcwpkaWZmIC0tZ2l0IGEvZXh0L2Rhc2gvZ3N0bXBkcGFyc2VyLmMgYi9leHQvZGFzaC9nc3RtcGRwYXJzZXIuYwppbmRleCA4MGRjMGRmLi43NzhhYjJlIDEwMDY0NAotLS0gYS9leHQvZGFzaC9nc3RtcGRwYXJzZXIuYworKysgYi9leHQvZGFzaC9nc3RtcGRwYXJzZXIuYwpAQCAtMzMsNiArMzMsOSBAQAogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2Rhc2hfZGVtdXhfZGVidWcKIAogLyogUHJvcGVydHkgcGFyc2luZyAqLworc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3ZhbGlkYXRlZF9zdHJpbmcgKHhtbE5vZGUgKiBhX25vZGUsCisgICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBnY2hhciAqKiBwcm9wZXJ0eV92YWx1ZSwKKyAgICBnYm9vbGVhbiAoKnZhbGlkYXRvcikgKGNvbnN0IGNoYXIgKikpOwogc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3N0cmluZyAoeG1sTm9kZSAqIGFfbm9kZSwKICAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdjaGFyICoqIHByb3BlcnR5X3ZhbHVlKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXBkcGFyc2VyX2dldF94bWxfbnNfcHJvcF9zdHJpbmcgKHhtbE5vZGUgKiBhX25vZGUsCkBAIC02OSw3ICs3Miw4IEBACiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZGF0ZVRpbWUgKHhtbE5vZGUgKiBhX25vZGUsCiAgICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBHc3REYXRlVGltZSAqKiBwcm9wZXJ0eV92YWx1ZSk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKHhtbE5vZGUgKiBhX25vZGUsCi0gICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBnaW50NjQgZGVmYXVsdF92YWx1ZSwgZ2ludDY0ICogcHJvcGVydHlfdmFsdWUpOworICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgZ3VpbnQ2NCBkZWZhdWx0X3ZhbHVlLAorICAgIGd1aW50NjQgKiBwcm9wZXJ0eV92YWx1ZSk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZHBhcnNlcl9nZXRfeG1sX25vZGVfY29udGVudCAoeG1sTm9kZSAqIGFfbm9kZSwKICAgICBnY2hhciAqKiBjb250ZW50KTsKIHN0YXRpYyBnY2hhciAqZ3N0X21wZHBhcnNlcl9nZXRfeG1sX25vZGVfbmFtZXNwYWNlICh4bWxOb2RlICogYV9ub2RlLApAQCAtOTUsMzMgKzk5LDM2IEBACiBzdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX3Nfbm9kZSAoR1F1ZXVlICogcXVldWUsIHhtbE5vZGUgKiBhX25vZGUpOwogc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RpbWVsaW5lX25vZGUgKEdzdFNlZ21lbnRUaW1lbGluZU5vZGUgKioKICAgICBwb2ludGVyLCB4bWxOb2RlICogYV9ub2RlKTsKLXN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2VfbXVsdF9zZWdfYmFzZV90eXBlX2V4dCAoR3N0TXVsdFNlZ21lbnRCYXNlVHlwZQotICAgICoqIHBvaW50ZXIsIHhtbE5vZGUgKiBhX25vZGUsIEdzdE11bHRTZWdtZW50QmFzZVR5cGUgKiBwYXJlbnQpOwotc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X2xpc3Rfbm9kZSAoR3N0U2VnbWVudExpc3ROb2RlICoqCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9tcGRwYXJzZXJfcGFyc2VfbXVsdF9zZWdfYmFzZV90eXBlX2V4dCAoR3N0TXVsdFNlZ21lbnRCYXNlVHlwZSAqKiBwb2ludGVyLAorICAgIHhtbE5vZGUgKiBhX25vZGUsIEdzdE11bHRTZWdtZW50QmFzZVR5cGUgKiBwYXJlbnQpOworc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUgKEdzdFNlZ21lbnRMaXN0Tm9kZSAqKgogICAgIHBvaW50ZXIsIHhtbE5vZGUgKiBhX25vZGUsIEdzdFNlZ21lbnRMaXN0Tm9kZSAqIHBhcmVudCk7CiBzdGF0aWMgdm9pZAogZ3N0X21wZHBhcnNlcl9wYXJzZV9yZXByZXNlbnRhdGlvbl9iYXNlX3R5cGUgKEdzdFJlcHJlc2VudGF0aW9uQmFzZVR5cGUgKioKICAgICBwb2ludGVyLCB4bWxOb2RlICogYV9ub2RlKTsKLXN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2VfcmVwcmVzZW50YXRpb25fbm9kZSAoR0xpc3QgKiogbGlzdCwKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbXBkcGFyc2VyX3BhcnNlX3JlcHJlc2VudGF0aW9uX25vZGUgKEdMaXN0ICoqIGxpc3QsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSwgR3N0QWRhcHRhdGlvblNldE5vZGUgKiBwYXJlbnQpOwotc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9hZGFwdGF0aW9uX3NldF9ub2RlIChHTGlzdCAqKiBsaXN0LAorc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfcGFyc2VfYWRhcHRhdGlvbl9zZXRfbm9kZSAoR0xpc3QgKiogbGlzdCwKICAgICB4bWxOb2RlICogYV9ub2RlLCBHc3RQZXJpb2ROb2RlICogcGFyZW50KTsKIHN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc3Vic2V0X25vZGUgKEdMaXN0ICoqIGxpc3QsIHhtbE5vZGUgKiBhX25vZGUpOwotc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdtZW50X3RlbXBsYXRlX25vZGUgKEdzdFNlZ21lbnRUZW1wbGF0ZU5vZGUgKioKLSAgICBwb2ludGVyLCB4bWxOb2RlICogYV9ub2RlLCBHc3RTZWdtZW50VGVtcGxhdGVOb2RlICogcGFyZW50KTsKLXN0YXRpYyB2b2lkIGdzdF9tcGRwYXJzZXJfcGFyc2VfcGVyaW9kX25vZGUgKEdMaXN0ICoqIGxpc3QsIHhtbE5vZGUgKiBhX25vZGUpOworc3RhdGljIGdib29sZWFuCitnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfdGVtcGxhdGVfbm9kZSAoR3N0U2VnbWVudFRlbXBsYXRlTm9kZSAqKiBwb2ludGVyLAorICAgIHhtbE5vZGUgKiBhX25vZGUsIEdzdFNlZ21lbnRUZW1wbGF0ZU5vZGUgKiBwYXJlbnQpOworc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfcGFyc2VfcGVyaW9kX25vZGUgKEdMaXN0ICoqIGxpc3QsCisgICAgeG1sTm9kZSAqIGFfbm9kZSk7CiBzdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX3Byb2dyYW1faW5mb19ub2RlIChHTGlzdCAqKiBsaXN0LAogICAgIHhtbE5vZGUgKiBhX25vZGUpOwogc3RhdGljIHZvaWQgZ3N0X21wZHBhcnNlcl9wYXJzZV9tZXRyaWNzX3JhbmdlX25vZGUgKEdMaXN0ICoqIGxpc3QsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSk7CiBzdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX21ldHJpY3Nfbm9kZSAoR0xpc3QgKiogbGlzdCwgeG1sTm9kZSAqIGFfbm9kZSk7Ci1zdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX3Jvb3Rfbm9kZSAoR3N0TVBETm9kZSAqKiBwb2ludGVyLAorc3RhdGljIGdib29sZWFuIGdzdF9tcGRwYXJzZXJfcGFyc2Vfcm9vdF9ub2RlIChHc3RNUEROb2RlICoqIHBvaW50ZXIsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSk7CiBzdGF0aWMgdm9pZCBnc3RfbXBkcGFyc2VyX3BhcnNlX3V0Y3RpbWluZ19ub2RlIChHTGlzdCAqKiBsaXN0LAogICAgIHhtbE5vZGUgKiBhX25vZGUpOwogCiAvKiBIZWxwZXIgZnVuY3Rpb25zICovCi1zdGF0aWMgZ2ludCBjb252ZXJ0X3RvX21pbGxpc2VjcyAoZ2ludCBkZWNpbWFscywgZ2ludCBwb3MpOworc3RhdGljIGd1aW50IGNvbnZlcnRfdG9fbWlsbGlzZWNzIChndWludCBkZWNpbWFscywgZ2ludCBwb3MpOwogc3RhdGljIGludCBzdHJuY21wX2V4dCAoY29uc3QgY2hhciAqczEsIGNvbnN0IGNoYXIgKnMyKTsKIHN0YXRpYyBHc3RTdHJlYW1QZXJpb2QgKmdzdF9tcGRwYXJzZXJfZ2V0X3N0cmVhbV9wZXJpb2QgKEdzdE1wZENsaWVudCAqIGNsaWVudCk7CiBzdGF0aWMgR3N0U05vZGUgKmdzdF9tcGRwYXJzZXJfY2xvbmVfc19ub2RlIChHc3RTTm9kZSAqIHBvaW50ZXIpOwpAQCAtMTQwLDExICsxNDcsMTIgQEAKIHN0YXRpYyBnY2hhciAqZ3N0X21wZHBhcnNlcl9idWlsZF9VUkxfZnJvbV90ZW1wbGF0ZSAoY29uc3QgZ2NoYXIgKiB1cmxfdGVtcGxhdGUsCiAgICAgY29uc3QgZ2NoYXIgKiBpZCwgZ3VpbnQgbnVtYmVyLCBndWludCBiYW5kd2lkdGgsIGd1aW50NjQgdGltZSk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfYWRkX21lZGlhX3NlZ21lbnQgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwKLSAgICBHc3RTZWdtZW50VVJMTm9kZSAqIHVybF9ub2RlLCBndWludCBudW1iZXIsIGdpbnQgcmVwZWF0LCBnaW50NjQgc2NhbGVfc3RhcnQsCi0gICAgZ2ludDY0IHNjYWxlX2R1cmF0aW9uLCBHc3RDbG9ja1RpbWUgc3RhcnQsIEdzdENsb2NrVGltZSBkdXJhdGlvbik7CisgICAgR3N0U2VnbWVudFVSTE5vZGUgKiB1cmxfbm9kZSwgZ3VpbnQgbnVtYmVyLCBnaW50IHJlcGVhdCwKKyAgICBndWludDY0IHNjYWxlX3N0YXJ0LCBndWludDY0IHNjYWxlX2R1cmF0aW9uLCBHc3RDbG9ja1RpbWUgc3RhcnQsCisgICAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uKTsKIHN0YXRpYyBjb25zdCBnY2hhciAqZ3N0X21wZHBhcnNlcl9taW1ldHlwZV90b19jYXBzIChjb25zdCBnY2hhciAqIG1pbWVUeXBlKTsKIHN0YXRpYyBHc3RDbG9ja1RpbWUgZ3N0X21wZF9jbGllbnRfZ2V0X3NlZ21lbnRfZHVyYXRpb24gKEdzdE1wZENsaWVudCAqIGNsaWVudCwKLSAgICBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIGdpbnQ2NCAqIHNjYWxlX2R1cmF0aW9uKTsKKyAgICBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIGd1aW50NjQgKiBzY2FsZV9kdXJhdGlvbik7CiBzdGF0aWMgR3N0RGF0ZVRpbWUgKmdzdF9tcGRfY2xpZW50X2dldF9hdmFpbGFiaWxpdHlfc3RhcnRfdGltZSAoR3N0TXBkQ2xpZW50ICoKICAgICBjbGllbnQpOwogCkBAIC0yNTMsMTQgKzI2MSwyMCBAQAogCiAvKiBmdW5jdGlvbnMgdG8gcGFyc2Ugbm9kZSBuYW1lc3BhY2VzLCBjb250ZW50IGFuZCBwcm9wZXJ0aWVzICovCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3N0cmluZyAoeG1sTm9kZSAqIGFfbm9kZSwKLSAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdjaGFyICoqIHByb3BlcnR5X3ZhbHVlKQorZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfdmFsaWRhdGVkX3N0cmluZyAoeG1sTm9kZSAqIGFfbm9kZSwKKyAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdjaGFyICoqIHByb3BlcnR5X3ZhbHVlLAorICAgIGdib29sZWFuICgqdmFsaWRhdGUpIChjb25zdCBjaGFyICopKQogewogICB4bWxDaGFyICpwcm9wX3N0cmluZzsKICAgZ2Jvb2xlYW4gZXhpc3RzID0gRkFMU0U7CiAKICAgcHJvcF9zdHJpbmcgPSB4bWxHZXRQcm9wIChhX25vZGUsIChjb25zdCB4bWxDaGFyICopIHByb3BlcnR5X25hbWUpOwogICBpZiAocHJvcF9zdHJpbmcpIHsKKyAgICBpZiAodmFsaWRhdGUgJiYgISgqdmFsaWRhdGUpICgoY29uc3QgY2hhciAqKSBwcm9wX3N0cmluZykpIHsKKyAgICAgIEdTVF9XQVJOSU5HICgiVmFsaWRhdGlvbiBmYWlsdXJlOiAlcyIsIHByb3Bfc3RyaW5nKTsKKyAgICAgIHhtbEZyZWUgKHByb3Bfc3RyaW5nKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CiAgICAgKnByb3BlcnR5X3ZhbHVlID0gKGdjaGFyICopIHByb3Bfc3RyaW5nOwogICAgIGV4aXN0cyA9IFRSVUU7CiAgICAgR1NUX0xPRyAoIiAtICVzOiAlcyIsIHByb3BlcnR5X25hbWUsIHByb3Bfc3RyaW5nKTsKQEAgLTI4OSw2ICszMDMsMjggQEAKIH0KIAogc3RhdGljIGdib29sZWFuCitnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9zdHJpbmcgKHhtbE5vZGUgKiBhX25vZGUsCisgICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBnY2hhciAqKiBwcm9wZXJ0eV92YWx1ZSkKK3sKKyAgcmV0dXJuIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3ZhbGlkYXRlZF9zdHJpbmcgKGFfbm9kZSwgcHJvcGVydHlfbmFtZSwKKyAgICAgIHByb3BlcnR5X3ZhbHVlLCBOVUxMKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX25vX3doaXRlc3BhY2UgKGNvbnN0IGNoYXIgKnMpCit7CisgIHJldHVybiAhc3RycGJyayAocywgIlxyXG5cdCAiKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9zdHJpbmdfbm9fd2hpdGVzcGFjZSAoeG1sTm9kZSAqIGFfbm9kZSwKKyAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIGdjaGFyICoqIHByb3BlcnR5X3ZhbHVlKQoreworICByZXR1cm4gZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfdmFsaWRhdGVkX3N0cmluZyAoYV9ub2RlLCBwcm9wZXJ0eV9uYW1lLAorICAgICAgcHJvcGVydHlfdmFsdWUsIGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfbm9fd2hpdGVzcGFjZSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nX3ZlY3Rvcl90eXBlICh4bWxOb2RlICogYV9ub2RlLAogICAgIGNvbnN0IGdjaGFyICogcHJvcGVydHlfbmFtZSwgZ2NoYXIgKioqIHByb3BlcnR5X3ZhbHVlKQogewpAQCAtMzUxLDEzICszODcsMTYgQEAKICAgKnByb3BlcnR5X3ZhbHVlID0gZGVmYXVsdF92YWw7CiAgIHByb3Bfc3RyaW5nID0geG1sR2V0UHJvcCAoYV9ub2RlLCAoY29uc3QgeG1sQ2hhciAqKSBwcm9wZXJ0eV9uYW1lKTsKICAgaWYgKHByb3Bfc3RyaW5nKSB7Ci0gICAgaWYgKHNzY2FuZiAoKGdjaGFyICopIHByb3Bfc3RyaW5nLCAiJXUiLCBwcm9wZXJ0eV92YWx1ZSkgPT0gMSkgeworICAgIGlmIChzc2NhbmYgKChnY2hhciAqKSBwcm9wX3N0cmluZywgIiV1IiwgcHJvcGVydHlfdmFsdWUpID09IDEgJiYKKyAgICAgICAgc3Ryc3RyICgoZ2NoYXIgKikgcHJvcF9zdHJpbmcsICItIikgPT0gTlVMTCkgewogICAgICAgZXhpc3RzID0gVFJVRTsKICAgICAgIEdTVF9MT0cgKCIgLSAlczogJXUiLCBwcm9wZXJ0eV9uYW1lLCAqcHJvcGVydHlfdmFsdWUpOwogICAgIH0gZWxzZSB7CiAgICAgICBHU1RfV0FSTklORwogICAgICAgICAgICgiZmFpbGVkIHRvIHBhcnNlIHVuc2lnbmVkIGludGVnZXIgcHJvcGVydHkgJXMgZnJvbSB4bWwgc3RyaW5nICVzIiwKICAgICAgICAgICBwcm9wZXJ0eV9uYW1lLCBwcm9wX3N0cmluZyk7CisgICAgICAvKiBzc2NhbmYgbWlnaHQgaGF2ZSB3cml0dGVuIHRvICpwcm9wZXJ0eV92YWx1ZS4gUmVzdG9yZSB0byBkZWZhdWx0ICovCisgICAgICAqcHJvcGVydHlfdmFsdWUgPSBkZWZhdWx0X3ZhbDsKICAgICB9CiAgICAgeG1sRnJlZSAocHJvcF9zdHJpbmcpOwogICB9CkBAIC0zNzYsMTMgKzQxNSwxNiBAQAogICBwcm9wX3N0cmluZyA9IHhtbEdldFByb3AgKGFfbm9kZSwgKGNvbnN0IHhtbENoYXIgKikgcHJvcGVydHlfbmFtZSk7CiAgIGlmIChwcm9wX3N0cmluZykgewogICAgIGlmIChzc2NhbmYgKChnY2hhciAqKSBwcm9wX3N0cmluZywgIiUiIEdfR1VJTlQ2NF9GT1JNQVQsCi0gICAgICAgICAgICBwcm9wZXJ0eV92YWx1ZSkgPT0gMSkgeworICAgICAgICAgICAgcHJvcGVydHlfdmFsdWUpID09IDEgJiYKKyAgICAgICAgc3Ryc3RyICgoZ2NoYXIgKikgcHJvcF9zdHJpbmcsICItIikgPT0gTlVMTCkgewogICAgICAgZXhpc3RzID0gVFJVRTsKICAgICAgIEdTVF9MT0cgKCIgLSAlczogJSIgR19HVUlOVDY0X0ZPUk1BVCwgcHJvcGVydHlfbmFtZSwgKnByb3BlcnR5X3ZhbHVlKTsKICAgICB9IGVsc2UgewogICAgICAgR1NUX1dBUk5JTkcKICAgICAgICAgICAoImZhaWxlZCB0byBwYXJzZSB1bnNpZ25lZCBpbnRlZ2VyIHByb3BlcnR5ICVzIGZyb20geG1sIHN0cmluZyAlcyIsCiAgICAgICAgICAgcHJvcGVydHlfbmFtZSwgcHJvcF9zdHJpbmcpOworICAgICAgLyogc3NjYW5mIG1pZ2h0IGhhdmUgd3JpdHRlbiB0byAqcHJvcGVydHlfdmFsdWUuIFJlc3RvcmUgdG8gZGVmYXVsdCAqLworICAgICAgKnByb3BlcnR5X3ZhbHVlID0gZGVmYXVsdF92YWw7CiAgICAgfQogICAgIHhtbEZyZWUgKHByb3Bfc3RyaW5nKTsKICAgfQpAQCAtNDA5LDEyICs0NTEsMjEgQEAKICAgICAgICAgZXhpc3RzID0gVFJVRTsKICAgICAgICAgR1NUX0xPRyAoIiAtICVzOiIsIHByb3BlcnR5X25hbWUpOwogICAgICAgICBmb3IgKGkgPSAwOyBpIDwgKnZhbHVlX3NpemU7IGkrKykgewotICAgICAgICAgIGlmIChzc2NhbmYgKChnY2hhciAqKSBzdHJfdmVjdG9yW2ldLCAiJXUiLCAmcHJvcF91aW50X3ZlY3RvcltpXSkgPT0gMSkgeworICAgICAgICAgIGlmIChzc2NhbmYgKChnY2hhciAqKSBzdHJfdmVjdG9yW2ldLCAiJXUiLCAmcHJvcF91aW50X3ZlY3RvcltpXSkgPT0gMQorICAgICAgICAgICAgICAmJiBzdHJzdHIgKHN0cl92ZWN0b3JbaV0sICItIikgPT0gTlVMTCkgewogICAgICAgICAgICAgR1NUX0xPRyAoIiAgICAldSIsIHByb3BfdWludF92ZWN0b3JbaV0pOwogICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBHU1RfV0FSTklORwogICAgICAgICAgICAgICAgICgiZmFpbGVkIHRvIHBhcnNlIHVpbnQgdmVjdG9yIHR5cGUgcHJvcGVydHkgJXMgZnJvbSB4bWwgc3RyaW5nICVzIiwKICAgICAgICAgICAgICAgICBwcm9wZXJ0eV9uYW1lLCBzdHJfdmVjdG9yW2ldKTsKKyAgICAgICAgICAgIC8qIHRoZXJlIGlzIG5vIHNwZWNpYWwgdmFsdWUgdG8gcHV0IGluIHByb3BfdWludF92ZWN0b3JbaV0gdG8KKyAgICAgICAgICAgICAqIHNpZ25hbCBpdCBpcyBpbnZhbGlkLCBzbyB3ZSBqdXN0IGNsZWFuIGV2ZXJ5dGhpbmcgYW5kIHJldHVybgorICAgICAgICAgICAgICogRkFMU0UKKyAgICAgICAgICAgICAqLworICAgICAgICAgICAgZ19mcmVlIChwcm9wX3VpbnRfdmVjdG9yKTsKKyAgICAgICAgICAgIHByb3BfdWludF92ZWN0b3IgPSBOVUxMOworICAgICAgICAgICAgZXhpc3RzID0gRkFMU0U7CisgICAgICAgICAgICBicmVhazsKICAgICAgICAgICB9CiAgICAgICAgIH0KICAgICAgICAgKnByb3BlcnR5X3ZhbHVlID0gcHJvcF91aW50X3ZlY3RvcjsKQEAgLTU2MiwxMyArNjEzLDI1IEBACiAgICAgfQogICAgIC8qIHJlYWQgZmlyc3RfYnl0ZV9wb3MgKi8KICAgICBpZiAocG9zICE9IDApIHsKLSAgICAgIGlmIChzc2NhbmYgKHN0ciwgIiUiIEdfR1VJTlQ2NF9GT1JNQVQsICZmaXJzdF9ieXRlX3BvcykgIT0gMSkgeworICAgICAgLyogcmVwbGFjZSBzdHJbcG9zXSB3aXRoICdcMCcgdG8gYWxsb3cgc3NjYW5mIHRvIG5vdCBiZSBjb25mdXNlZCBieQorICAgICAgICogdGhlIG1pbnVzIHNpZ24gKGVnICIgLTEiIChvYnNlcnZlIHRoZSBzcGFjZSBiZWZvcmUgLSkgd291bGQgb3RoZXJ3aXNlCisgICAgICAgKiBiZSBpbnRlcnByZXRlZCBhcyByYW5nZSAtMSB0byAxKQorICAgICAgICovCisgICAgICBzdHJbcG9zXSA9IDA7CisgICAgICBpZiAoc3NjYW5mIChzdHIsICIlIiBHX0dVSU5UNjRfRk9STUFULCAmZmlyc3RfYnl0ZV9wb3MpICE9IDEgfHwKKyAgICAgICAgICBzdHJzdHIgKHN0ciwgIi0iKSAhPSBOVUxMKSB7CisgICAgICAgIC8qIHNzY2FuZiBmYWlsZWQgb3IgaXQgZm91bmQgYSBuZWdhdGl2ZSBudW1iZXIgKi8KKyAgICAgICAgLyogcmVzdG9yZSB0aGUgJy0nIHNpZ24gKi8KKyAgICAgICAgc3RyW3Bvc10gPSAnLSc7CiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICB9CisgICAgICAvKiByZXN0b3JlIHRoZSAnLScgc2lnbiAqLworICAgICAgc3RyW3Bvc10gPSAnLSc7CiAgICAgfQogICAgIC8qIHJlYWQgbGFzdF9ieXRlX3BvcyAqLwogICAgIGlmIChwb3MgPCAobGVuIC0gMSkpIHsKLSAgICAgIGlmIChzc2NhbmYgKHN0ciArIHBvcyArIDEsICIlIiBHX0dVSU5UNjRfRk9STUFULCAmbGFzdF9ieXRlX3BvcykgIT0gMSkgeworICAgICAgaWYgKHNzY2FuZiAoc3RyICsgcG9zICsgMSwgIiUiIEdfR1VJTlQ2NF9GT1JNQVQsICZsYXN0X2J5dGVfcG9zKSAhPSAxIHx8CisgICAgICAgICAgc3Ryc3RyIChzdHIgKyBwb3MgKyAxLCAiLSIpICE9IE5VTEwpIHsKICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0KICAgICB9CkBAIC02MTMsNiArNjc2LDEwIEBACiAgICAgICBHU1RfVFJBQ0UgKCJwb3MgJWQgPj0gbGVuICVkIiwgcG9zLCBsZW4pOwogICAgICAgZ290byBlcnJvcjsKICAgICB9CisgICAgLyogc2VhcmNoIGZvciBuZWdhdGl2ZSBzaWduICovCisgICAgaWYgKHN0cnN0ciAoc3RyLCAiLSIpICE9IE5VTEwpIHsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogICAgIC8qIHJlYWQgbnVtICovCiAgICAgaWYgKHBvcyAhPSAwKSB7CiAgICAgICBpZiAoc3NjYW5mIChzdHIsICIldSIsICZudW0pICE9IDEpIHsKQEAgLTY1OSw2ICs3MjYsMTEgQEAKICAgICBzdHIgPSAoZ2NoYXIgKikgcHJvcF9zdHJpbmc7CiAgICAgR1NUX1RSQUNFICgiZnJhbWVyYXRlOiAlcywgbGVuICVkIiwgc3RyLCBsZW4pOwogCisgICAgLyogc2VhcmNoIGZvciBuZWdhdGl2ZSBzaWduICovCisgICAgaWYgKHN0cnN0ciAoc3RyLCAiLSIpICE9IE5VTEwpIHsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCiAgICAgLyogcmVhZCAiLyIgaWYgYXZhaWxhYmxlICovCiAgICAgcG9zID0gc3RyY3NwbiAoc3RyLCAiLyIpOwogICAgIC8qIHJlYWQgbnVtICovCkBAIC03MTcsNyArNzg5LDcgQEAKICAgICAgIHZhbCA9IDA7CiAgICAgfSBlbHNlIHsKICAgICAgIGZsYWcgPSBUUlVFOwotICAgICAgaWYgKHNzY2FuZiAoc3RyLCAiJXUiLCAmdmFsKSAhPSAxKQorICAgICAgaWYgKHNzY2FuZiAoc3RyLCAiJXUiLCAmdmFsKSAhPSAxIHx8IHN0cnN0ciAoc3RyLCAiLSIpICE9IE5VTEwpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCkBAIC03NjQsNyArODM2LDggQEAKICAgeG1sQ2hhciAqcHJvcF9zdHJpbmc7CiAgIGdjaGFyICpzdHI7CiAgIGdpbnQgcmV0LCBwb3M7Ci0gIGdpbnQgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQ7CisgIGdpbnQgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlOworICBnZG91YmxlIHNlY29uZDsKICAgZ2Jvb2xlYW4gZXhpc3RzID0gRkFMU0U7CiAKICAgcHJvcF9zdHJpbmcgPSB4bWxHZXRQcm9wIChhX25vZGUsIChjb25zdCB4bWxDaGFyICopIHByb3BlcnR5X25hbWUpOwpAQCAtNzczLDQ2ICs4NDYsNDYgQEAKICAgICBHU1RfVFJBQ0UgKCJkYXRlVGltZTogJXMsIGxlbiAlZCIsIHN0ciwgeG1sU3RybGVuIChwcm9wX3N0cmluZykpOwogICAgIC8qIHBhcnNlIHllYXIgKi8KICAgICByZXQgPSBzc2NhbmYgKHN0ciwgIiVkIiwgJnllYXIpOwotICAgIGlmIChyZXQgIT0gMSkKKyAgICBpZiAocmV0ICE9IDEgfHwgeWVhciA8PSAwKQogICAgICAgZ290byBlcnJvcjsKICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICItIik7CiAgICAgc3RyICs9IChwb3MgKyAxKTsKICAgICBHU1RfVFJBQ0UgKCIgLSB5ZWFyICVkIiwgeWVhcik7CiAgICAgLyogcGFyc2UgbW9udGggKi8KICAgICByZXQgPSBzc2NhbmYgKHN0ciwgIiVkIiwgJm1vbnRoKTsKLSAgICBpZiAocmV0ICE9IDEpCisgICAgaWYgKHJldCAhPSAxIHx8IG1vbnRoIDw9IDApCiAgICAgICBnb3RvIGVycm9yOwogICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIi0iKTsKICAgICBzdHIgKz0gKHBvcyArIDEpOwogICAgIEdTVF9UUkFDRSAoIiAtIG1vbnRoICVkIiwgbW9udGgpOwogICAgIC8qIHBhcnNlIGRheSAqLwogICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmZGF5KTsKLSAgICBpZiAocmV0ICE9IDEpCisgICAgaWYgKHJldCAhPSAxIHx8IGRheSA8PSAwKQogICAgICAgZ290byBlcnJvcjsKICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICJUIik7CiAgICAgc3RyICs9IChwb3MgKyAxKTsKICAgICBHU1RfVFJBQ0UgKCIgLSBkYXkgJWQiLCBkYXkpOwogICAgIC8qIHBhcnNlIGhvdXIgKi8KICAgICByZXQgPSBzc2NhbmYgKHN0ciwgIiVkIiwgJmhvdXIpOwotICAgIGlmIChyZXQgIT0gMSkKKyAgICBpZiAocmV0ICE9IDEgfHwgaG91ciA8IDApCiAgICAgICBnb3RvIGVycm9yOwogICAgIHBvcyA9IHN0cmNzcG4gKHN0ciwgIjoiKTsKICAgICBzdHIgKz0gKHBvcyArIDEpOwogICAgIEdTVF9UUkFDRSAoIiAtIGhvdXIgJWQiLCBob3VyKTsKICAgICAvKiBwYXJzZSBtaW51dGUgKi8KICAgICByZXQgPSBzc2NhbmYgKHN0ciwgIiVkIiwgJm1pbnV0ZSk7Ci0gICAgaWYgKHJldCAhPSAxKQorICAgIGlmIChyZXQgIT0gMSB8fCBtaW51dGUgPCAwKQogICAgICAgZ290byBlcnJvcjsKICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICI6Iik7CiAgICAgc3RyICs9IChwb3MgKyAxKTsKICAgICBHU1RfVFJBQ0UgKCIgLSBtaW51dGUgJWQiLCBtaW51dGUpOwogICAgIC8qIHBhcnNlIHNlY29uZCAqLwotICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmc2Vjb25kKTsKLSAgICBpZiAocmV0ICE9IDEpCisgICAgcmV0ID0gc3NjYW5mIChzdHIsICIlbGYiLCAmc2Vjb25kKTsKKyAgICBpZiAocmV0ICE9IDEgfHwgc2Vjb25kIDwgMCkKICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgR1NUX1RSQUNFICgiIC0gc2Vjb25kICVkIiwgc2Vjb25kKTsKKyAgICBHU1RfVFJBQ0UgKCIgLSBzZWNvbmQgJWxmIiwgc2Vjb25kKTsKIAotICAgIEdTVF9MT0cgKCIgLSAlczogJTRkLyUwMmQvJTAyZCAlMDJkOiUwMmQ6JTAyZCIsIHByb3BlcnR5X25hbWUsCisgICAgR1NUX0xPRyAoIiAtICVzOiAlNGQvJTAyZC8lMDJkICUwMmQ6JTAyZDolMDkuNmxmIiwgcHJvcGVydHlfbmFtZSwKICAgICAgICAgeWVhciwgbW9udGgsIGRheSwgaG91ciwgbWludXRlLCBzZWNvbmQpOwogCiAgICAgZXhpc3RzID0gVFJVRTsKQEAgLTg0OSwxMCArOTIyLDExIEBACiAqLwogCiAvKiB0aGlzIGZ1bmN0aW9uIGNvbXB1dGVzIGRlY2ltYWxzICogMTAgXiAoMyAtIHBvcykgKi8KLXN0YXRpYyBnaW50Ci1jb252ZXJ0X3RvX21pbGxpc2VjcyAoZ2ludCBkZWNpbWFscywgZ2ludCBwb3MpCitzdGF0aWMgZ3VpbnQKK2NvbnZlcnRfdG9fbWlsbGlzZWNzIChndWludCBkZWNpbWFscywgZ2ludCBwb3MpCiB7Ci0gIGdpbnQgbnVtID0gMSwgZGVuID0gMSwgaSA9IDMgLSBwb3M7CisgIGd1aW50IG51bSA9IDEsIGRlbiA9IDE7CisgIGdpbnQgaSA9IDMgLSBwb3M7CiAKICAgd2hpbGUgKGkgPCAwKSB7CiAgICAgZGVuICo9IDEwOwpAQCAtODY3LDE0MSArOTQxLDIzOSBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KK2FjY3VtdWxhdGUgKGd1aW50NjQgKiB2LCBndWludDY0IG11bCwgZ3VpbnQ2NCBhZGQpCit7CisgIGd1aW50NjQgdG1wOworCisgIGlmICgqdiA+IEdfTUFYVUlOVDY0IC8gbXVsKQorICAgIHJldHVybiBGQUxTRTsKKyAgdG1wID0gKnYgKiBtdWw7CisgIGlmICh0bXAgPiBHX01BWFVJTlQ2NCAtIGFkZCkKKyAgICByZXR1cm4gRkFMU0U7CisgICp2ID0gdG1wICsgYWRkOworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uIChjb25zdCBjaGFyICpzdHIsIGd1aW50NjQgKiB2YWx1ZSkKK3sKKyAgZ2ludCByZXQsIGxlbiwgcG9zLCBwb3NUOworICBnaW50IHllYXJzID0gLTEsIG1vbnRocyA9IC0xLCBkYXlzID0gLTEsIGhvdXJzID0gLTEsIG1pbnV0ZXMgPSAtMSwgc2Vjb25kcyA9CisgICAgICAtMSwgZGVjaW1hbHMgPSAtMSwgcmVhZDsKKyAgZ2Jvb2xlYW4gaGF2ZV9tcyA9IEZBTFNFOworICBndWludDY0IHRtcF92YWx1ZTsKKworICBsZW4gPSBzdHJsZW4gKHN0cik7CisgIEdTVF9UUkFDRSAoImR1cmF0aW9uOiAlcywgbGVuICVkIiwgc3RyLCBsZW4pOworICBpZiAoc3Ryc3BuIChzdHIsICJQVDAxMjM0NTY3ODkuLCBcdEhNRFNZIikgPCBsZW4pIHsKKyAgICBHU1RfV0FSTklORyAoIkludmFsaWQgY2hhcmFjdGVyIGZvdW5kOiAnJXMnIiwgc3RyKTsKKyAgICBnb3RvIGVycm9yOworICB9CisgIC8qIHNraXAgbGVhZGluZy90cmFpbGluZyB3aGl0ZXNwYWNlICovCisgIHdoaWxlIChzdHJjaHIgKCIgXHQiLCBzdHJbMF0pKSB7CisgICAgc3RyKys7CisgICAgbGVuLS07CisgIH0KKyAgd2hpbGUgKGxlbiA+IDAgJiYgc3RyY2hyICgiIFx0Iiwgc3RyW2xlbiAtIDFdKSkKKyAgICAtLWxlbjsKKworICAvKiByZWFkICJQIiBmb3IgcGVyaW9kICovCisgIGlmIChzdHJbMF0gIT0gJ1AnKSB7CisgICAgR1NUX1dBUk5JTkcgKCJQIG5vdCBmb3VuZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBzdHJpbmchIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorICBzdHIrKzsKKyAgbGVuLS07CisKKyAgLyogcmVhZCAiVCIgZm9yIHRpbWUgKGlmIHByZXNlbnQpICovCisgIHBvc1QgPSBzdHJjc3BuIChzdHIsICJUIik7CisgIGxlbiAtPSBwb3NUOworICBpZiAocG9zVCA+IDApIHsKKyAgICAvKiB0aGVyZSBpcyBzb21lIHJvb20gYmV0d2VlbiBQIGFuZCBULCBzbyB0aGVyZSBtdXN0IGJlIGEgcGVyaW9kIHNlY3Rpb24gKi8KKyAgICAvKiByZWFkIHllYXJzLCBtb250aHMsIGRheXMgKi8KKyAgICBkbyB7CisgICAgICBHU1RfVFJBQ0UgKCJwYXJzaW5nIHN1YnN0cmluZyAlcyIsIHN0cik7CisgICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICJZTUQiKTsKKyAgICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJXUiLCAmcmVhZCk7CisgICAgICBpZiAocmV0ICE9IDEpIHsKKyAgICAgICAgR1NUX1dBUk5JTkcgKCJjYW4gbm90IHJlYWQgaW50ZWdlciB2YWx1ZSBmcm9tIHN0cmluZyAlcyEiLCBzdHIpOworICAgICAgICBnb3RvIGVycm9yOworICAgICAgfQorICAgICAgc3dpdGNoIChzdHJbcG9zXSkgeworICAgICAgICBjYXNlICdZJzoKKyAgICAgICAgICBpZiAoeWVhcnMgIT0gLTEgfHwgbW9udGhzICE9IC0xIHx8IGRheXMgIT0gLTEpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgieWVhciwgbW9udGggb3IgZGF5IHdhcyBhbHJlYWR5IHNldCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgeWVhcnMgPSByZWFkOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICdNJzoKKyAgICAgICAgICBpZiAobW9udGhzICE9IC0xIHx8IGRheXMgIT0gLTEpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgibW9udGggb3IgZGF5IHdhcyBhbHJlYWR5IHNldCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgbW9udGhzID0gcmVhZDsKKyAgICAgICAgICBpZiAobW9udGhzID49IDEyKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORyAoIk1vbnRoIG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ0QnOgorICAgICAgICAgIGlmIChkYXlzICE9IC0xKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORyAoImRheSB3YXMgYWxyZWFkeSBzZXQiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgfQorICAgICAgICAgIGRheXMgPSByZWFkOworICAgICAgICAgIGlmIChkYXlzID49IDMxKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORyAoIkRheSBvdXQgb2YgcmFuZ2UiKTsKKyAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIEdTVF9XQVJOSU5HICgidW5leHBlY3RlZCBjaGFyICVjISIsIHN0cltwb3NdKTsKKyAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgR1NUX1RSQUNFICgicmVhZCBudW1iZXIgJXUgdHlwZSAlYyIsIHJlYWQsIHN0cltwb3NdKTsKKyAgICAgIHN0ciArPSAocG9zICsgMSk7CisgICAgICBwb3NUIC09IChwb3MgKyAxKTsKKyAgICB9IHdoaWxlIChwb3NUID4gMCk7CisgIH0KKworICBpZiAoeWVhcnMgPT0gLTEpCisgICAgeWVhcnMgPSAwOworICBpZiAobW9udGhzID09IC0xKQorICAgIG1vbnRocyA9IDA7CisgIGlmIChkYXlzID09IC0xKQorICAgIGRheXMgPSAwOworCisgIEdTVF9UUkFDRSAoIlk6TTpEPSVkOiVkOiVkIiwgeWVhcnMsIG1vbnRocywgZGF5cyk7CisKKyAgLyogcmVhZCAiVCIgZm9yIHRpbWUgKGlmIHByZXNlbnQpICovCisgIC8qIGhlcmUgVCBpcyBhdCBwb3MgPT0gMCAqLworICBzdHIrKzsKKyAgbGVuLS07CisgIHBvcyA9IDA7CisgIGlmIChwb3MgPCBsZW4pIHsKKyAgICAvKiBUIGZvdW5kLCB0aGVyZSBpcyBhIHRpbWUgc2VjdGlvbiAqLworICAgIC8qIHJlYWQgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGh1bmRyZWR0aHMgb2Ygc2Vjb25kICovCisgICAgZG8geworICAgICAgR1NUX1RSQUNFICgicGFyc2luZyBzdWJzdHJpbmcgJXMiLCBzdHIpOworICAgICAgcG9zID0gc3RyY3NwbiAoc3RyLCAiSE1TLC4iKTsKKyAgICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJXUiLCAmcmVhZCk7CisgICAgICBpZiAocmV0ICE9IDEpIHsKKyAgICAgICAgR1NUX1dBUk5JTkcgKCJjYW4gbm90IHJlYWQgaW50ZWdlciB2YWx1ZSBmcm9tIHN0cmluZyAlcyEiLCBzdHIpOworICAgICAgICBnb3RvIGVycm9yOworICAgICAgfQorICAgICAgc3dpdGNoIChzdHJbcG9zXSkgeworICAgICAgICBjYXNlICdIJzoKKyAgICAgICAgICBpZiAoaG91cnMgIT0gLTEgfHwgbWludXRlcyAhPSAtMSB8fCBzZWNvbmRzICE9IC0xKSB7CisgICAgICAgICAgICBHU1RfV0FSTklORyAoImhvdXIsIG1pbnV0ZSBvciBzZWNvbmQgd2FzIGFscmVhZHkgc2V0Iik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICBob3VycyA9IHJlYWQ7CisgICAgICAgICAgaWYgKGhvdXJzID49IDI0KSB7CisgICAgICAgICAgICBHU1RfV0FSTklORyAoIkhvdXIgb3V0IG9mIHJhbmdlIik7CisgICAgICAgICAgICBnb3RvIGVycm9yOworICAgICAgICAgIH0KKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSAnTSc6CisgICAgICAgICAgaWYgKG1pbnV0ZXMgIT0gLTEgfHwgc2Vjb25kcyAhPSAtMSkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJtaW51dGUgb3Igc2Vjb25kIHdhcyBhbHJlYWR5IHNldCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgbWludXRlcyA9IHJlYWQ7CisgICAgICAgICAgaWYgKG1pbnV0ZXMgPj0gNjApIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiTWludXRlIG91dCBvZiByYW5nZSIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgJ1MnOgorICAgICAgICAgIGlmIChoYXZlX21zKSB7CisgICAgICAgICAgICAvKiB3ZSBoYXZlIHJlYWQgdGhlIGRlY2ltYWwgcGFydCBvZiB0aGUgc2Vjb25kcyAqLworICAgICAgICAgICAgZGVjaW1hbHMgPSBjb252ZXJ0X3RvX21pbGxpc2VjcyAocmVhZCwgcG9zKTsKKyAgICAgICAgICAgIEdTVF9UUkFDRSAoImRlY2ltYWwgbnVtYmVyICV1ICglZCBkaWdpdHMpIC0+ICVkIG1zIiwgcmVhZCwgcG9zLAorICAgICAgICAgICAgICAgIGRlY2ltYWxzKTsKKyAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgaWYgKHNlY29uZHMgIT0gLTEpIHsKKyAgICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJzZWNvbmQgd2FzIGFscmVhZHkgc2V0Iik7CisgICAgICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgICB9CisgICAgICAgICAgICAvKiBubyBkZWNpbWFscyAqLworICAgICAgICAgICAgc2Vjb25kcyA9IHJlYWQ7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgY2FzZSAnLCc6CisgICAgICAgICAgLyogd2UgaGF2ZSByZWFkIHRoZSBpbnRlZ2VyIHBhcnQgb2YgYSBkZWNpbWFsIG51bWJlciBpbiBzZWNvbmRzICovCisgICAgICAgICAgaWYgKHNlY29uZHMgIT0gLTEpIHsKKyAgICAgICAgICAgIEdTVF9XQVJOSU5HICgic2Vjb25kIHdhcyBhbHJlYWR5IHNldCIpOworICAgICAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgICAgc2Vjb25kcyA9IHJlYWQ7CisgICAgICAgICAgaGF2ZV9tcyA9IFRSVUU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgR1NUX1dBUk5JTkcgKCJ1bmV4cGVjdGVkIGNoYXIgJWMhIiwgc3RyW3Bvc10pOworICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBHU1RfVFJBQ0UgKCJyZWFkIG51bWJlciAldSB0eXBlICVjIiwgcmVhZCwgc3RyW3Bvc10pOworICAgICAgc3RyICs9IHBvcyArIDE7CisgICAgICBsZW4gLT0gKHBvcyArIDEpOworICAgIH0gd2hpbGUgKGxlbiA+IDApOworICB9CisKKyAgaWYgKGhvdXJzID09IC0xKQorICAgIGhvdXJzID0gMDsKKyAgaWYgKG1pbnV0ZXMgPT0gLTEpCisgICAgbWludXRlcyA9IDA7CisgIGlmIChzZWNvbmRzID09IC0xKQorICAgIHNlY29uZHMgPSAwOworICBpZiAoZGVjaW1hbHMgPT0gLTEpCisgICAgZGVjaW1hbHMgPSAwOworICBHU1RfVFJBQ0UgKCJIOk06Uy5NUz0lZDolZDolZC4lMDNkIiwgaG91cnMsIG1pbnV0ZXMsIHNlY29uZHMsIGRlY2ltYWxzKTsKKworICB0bXBfdmFsdWUgPSAwOworICBpZiAoIWFjY3VtdWxhdGUgKCZ0bXBfdmFsdWUsIDEsIHllYXJzKQorICAgICAgfHwgIWFjY3VtdWxhdGUgKCZ0bXBfdmFsdWUsIDM2NSwgbW9udGhzICogMzApCisgICAgICB8fCAhYWNjdW11bGF0ZSAoJnRtcF92YWx1ZSwgMSwgZGF5cykKKyAgICAgIHx8ICFhY2N1bXVsYXRlICgmdG1wX3ZhbHVlLCAyNCwgaG91cnMpCisgICAgICB8fCAhYWNjdW11bGF0ZSAoJnRtcF92YWx1ZSwgNjAsIG1pbnV0ZXMpCisgICAgICB8fCAhYWNjdW11bGF0ZSAoJnRtcF92YWx1ZSwgNjAsIHNlY29uZHMpCisgICAgICB8fCAhYWNjdW11bGF0ZSAoJnRtcF92YWx1ZSwgMTAwMCwgZGVjaW1hbHMpKQorICAgIGdvdG8gZXJyb3I7CisKKyAgLyogZW5zdXJlIGl0IGNhbiBiZSBjb252ZXJ0ZWQgZnJvbSBtaWxsaXNlY29uZHMgdG8gbmFub3NlY29uZHMgKi8KKyAgaWYgKHRtcF92YWx1ZSA+IEdfTUFYVUlOVDY0IC8gMTAwMDAwMCkKKyAgICBnb3RvIGVycm9yOworCisgICp2YWx1ZSA9IHRtcF92YWx1ZTsKKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKHhtbE5vZGUgKiBhX25vZGUsCi0gICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBnaW50NjQgZGVmYXVsdF92YWx1ZSwgZ2ludDY0ICogcHJvcGVydHlfdmFsdWUpCisgICAgY29uc3QgZ2NoYXIgKiBwcm9wZXJ0eV9uYW1lLCBndWludDY0IGRlZmF1bHRfdmFsdWUsCisgICAgZ3VpbnQ2NCAqIHByb3BlcnR5X3ZhbHVlKQogewogICB4bWxDaGFyICpwcm9wX3N0cmluZzsKICAgZ2NoYXIgKnN0cjsKLSAgZ2ludCByZXQsIHJlYWQsIGxlbiwgcG9zLCBwb3NUOwotICBnaW50IHllYXJzID0gMCwgbW9udGhzID0gMCwgZGF5cyA9IDAsIGhvdXJzID0gMCwgbWludXRlcyA9IDAsIHNlY29uZHMgPQotICAgICAgMCwgZGVjaW1hbHMgPSAwOwotICBnaW50IHNpZ24gPSAxOwotICBnYm9vbGVhbiBoYXZlX21zID0gRkFMU0U7CiAgIGdib29sZWFuIGV4aXN0cyA9IEZBTFNFOwogCiAgICpwcm9wZXJ0eV92YWx1ZSA9IGRlZmF1bHRfdmFsdWU7CiAgIHByb3Bfc3RyaW5nID0geG1sR2V0UHJvcCAoYV9ub2RlLCAoY29uc3QgeG1sQ2hhciAqKSBwcm9wZXJ0eV9uYW1lKTsKICAgaWYgKHByb3Bfc3RyaW5nKSB7Ci0gICAgbGVuID0geG1sU3RybGVuIChwcm9wX3N0cmluZyk7CiAgICAgc3RyID0gKGdjaGFyICopIHByb3Bfc3RyaW5nOwotICAgIEdTVF9UUkFDRSAoImR1cmF0aW9uOiAlcywgbGVuICVkIiwgc3RyLCBsZW4pOwotICAgIC8qIHJlYWQgIi0iIGZvciBzaWduLCBpZiBwcmVzZW50ICovCi0gICAgcG9zID0gc3RyY3NwbiAoc3RyLCAiLSIpOwotICAgIGlmIChwb3MgPCBsZW4pIHsgICAgICAgICAgICAvKiBmb3VuZCAiLSIgKi8KLSAgICAgIGlmIChwb3MgIT0gMCkgewotICAgICAgICBHU1RfV0FSTklORyAoInNpZ24gXCItXCIgbm9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyIpOwotICAgICAgICBnb3RvIGVycm9yOwotICAgICAgfQotICAgICAgR1NUX1RSQUNFICgiZm91bmQgLSBzaWduIGF0IHRoZSBiZWdpbm5pbmciKTsKLSAgICAgIHNpZ24gPSAtMTsKLSAgICAgIHN0cisrOwotICAgICAgbGVuLS07Ci0gICAgfQotICAgIC8qIHJlYWQgIlAiIGZvciBwZXJpb2QgKi8KLSAgICBwb3MgPSBzdHJjc3BuIChzdHIsICJQIik7Ci0gICAgaWYgKHBvcyAhPSAwKSB7Ci0gICAgICBHU1RfV0FSTklORyAoIlAgbm90IGZvdW5kIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmluZyEiKTsKKyAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKHN0ciwgcHJvcGVydHlfdmFsdWUpKQogICAgICAgZ290byBlcnJvcjsKLSAgICB9Ci0gICAgc3RyKys7Ci0gICAgbGVuLS07Ci0gICAgLyogcmVhZCAiVCIgZm9yIHRpbWUgKGlmIHByZXNlbnQpICovCi0gICAgcG9zVCA9IHN0cmNzcG4gKHN0ciwgIlQiKTsKLSAgICBsZW4gLT0gcG9zVDsKLSAgICBpZiAocG9zVCA+IDApIHsKLSAgICAgIC8qIHRoZXJlIGlzIHNvbWUgcm9vbSBiZXR3ZWVuIFAgYW5kIFQsIHNvIHRoZXJlIG11c3QgYmUgYSBwZXJpb2Qgc2VjdGlvbiAqLwotICAgICAgLyogcmVhZCB5ZWFycywgbW9udGhzLCBkYXlzICovCi0gICAgICBkbyB7Ci0gICAgICAgIEdTVF9UUkFDRSAoInBhcnNpbmcgc3Vic3RyaW5nICVzIiwgc3RyKTsKLSAgICAgICAgcG9zID0gc3RyY3NwbiAoc3RyLCAiWU1EIik7Ci0gICAgICAgIHJldCA9IHNzY2FuZiAoc3RyLCAiJWQiLCAmcmVhZCk7Ci0gICAgICAgIGlmIChyZXQgIT0gMSkgewotICAgICAgICAgIEdTVF9XQVJOSU5HICgiY2FuIG5vdCByZWFkIGludGVnZXIgdmFsdWUgZnJvbSBzdHJpbmcgJXMhIiwgc3RyKTsKLSAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICB9Ci0gICAgICAgIHN3aXRjaCAoc3RyW3Bvc10pIHsKLSAgICAgICAgICBjYXNlICdZJzoKLSAgICAgICAgICAgIHllYXJzID0gcmVhZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgJ00nOgotICAgICAgICAgICAgbW9udGhzID0gcmVhZDsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIGNhc2UgJ0QnOgotICAgICAgICAgICAgZGF5cyA9IHJlYWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJ1bmV4cGVjdGVkIGNoYXIgJWMhIiwgc3RyW3Bvc10pOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIEdTVF9UUkFDRSAoInJlYWQgbnVtYmVyICVkIHR5cGUgJWMiLCByZWFkLCBzdHJbcG9zXSk7Ci0gICAgICAgIHN0ciArPSAocG9zICsgMSk7Ci0gICAgICAgIHBvc1QgLT0gKHBvcyArIDEpOwotICAgICAgfSB3aGlsZSAocG9zVCA+IDApOwotCi0gICAgICBHU1RfVFJBQ0UgKCJZOk06RD0lZDolZDolZCIsIHllYXJzLCBtb250aHMsIGRheXMpOwotICAgIH0KLSAgICAvKiByZWFkICJUIiBmb3IgdGltZSAoaWYgcHJlc2VudCkgKi8KLSAgICAvKiBoZXJlIFQgaXMgYXQgcG9zID09IDAgKi8KLSAgICBzdHIrKzsKLSAgICBsZW4tLTsKLSAgICBwb3MgPSAwOwotICAgIGlmIChwb3MgPCBsZW4pIHsKLSAgICAgIC8qIFQgZm91bmQsIHRoZXJlIGlzIGEgdGltZSBzZWN0aW9uICovCi0gICAgICAvKiByZWFkIGhvdXJzLCBtaW51dGVzLCBzZWNvbmRzLCBjZW50cyBvZiBzZWNvbmQgKi8KLSAgICAgIGRvIHsKLSAgICAgICAgR1NUX1RSQUNFICgicGFyc2luZyBzdWJzdHJpbmcgJXMiLCBzdHIpOwotICAgICAgICBwb3MgPSBzdHJjc3BuIChzdHIsICJITVMsLiIpOwotICAgICAgICByZXQgPSBzc2NhbmYgKHN0ciwgIiVkIiwgJnJlYWQpOwotICAgICAgICBpZiAocmV0ICE9IDEpIHsKLSAgICAgICAgICBHU1RfV0FSTklORyAoImNhbiBub3QgcmVhZCBpbnRlZ2VyIHZhbHVlIGZyb20gc3RyaW5nICVzISIsIHN0cik7Ci0gICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgfQotICAgICAgICBzd2l0Y2ggKHN0cltwb3NdKSB7Ci0gICAgICAgICAgY2FzZSAnSCc6Ci0gICAgICAgICAgICBob3VycyA9IHJlYWQ7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBjYXNlICdNJzoKLSAgICAgICAgICAgIG1pbnV0ZXMgPSByZWFkOwotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAnUyc6Ci0gICAgICAgICAgICBpZiAoaGF2ZV9tcykgewotICAgICAgICAgICAgICAvKiB3ZSBoYXZlIHJlYWQgdGhlIGRlY2ltYWwgcGFydCBvZiB0aGUgc2Vjb25kcyAqLwotICAgICAgICAgICAgICBkZWNpbWFscyA9IGNvbnZlcnRfdG9fbWlsbGlzZWNzIChyZWFkLCBwb3MpOwotICAgICAgICAgICAgICBHU1RfVFJBQ0UgKCJkZWNpbWFsIG51bWJlciAlZCAoJWQgZGlnaXRzKSAtPiAlZCBtcyIsIHJlYWQsIHBvcywKLSAgICAgICAgICAgICAgICAgIGRlY2ltYWxzKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIC8qIG5vIGRlY2ltYWxzICovCi0gICAgICAgICAgICAgIHNlY29uZHMgPSByZWFkOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgYnJlYWs7Ci0gICAgICAgICAgY2FzZSAnLic6Ci0gICAgICAgICAgY2FzZSAnLCc6Ci0gICAgICAgICAgICAvKiB3ZSBoYXZlIHJlYWQgdGhlIGludGVnZXIgcGFydCBvZiBhIGRlY2ltYWwgbnVtYmVyIGluIHNlY29uZHMgKi8KLSAgICAgICAgICAgIHNlY29uZHMgPSByZWFkOwotICAgICAgICAgICAgaGF2ZV9tcyA9IFRSVUU7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICBkZWZhdWx0OgotICAgICAgICAgICAgR1NUX1dBUk5JTkcgKCJ1bmV4cGVjdGVkIGNoYXIgJWMhIiwgc3RyW3Bvc10pOwotICAgICAgICAgICAgZ290byBlcnJvcjsKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIEdTVF9UUkFDRSAoInJlYWQgbnVtYmVyICVkIHR5cGUgJWMiLCByZWFkLCBzdHJbcG9zXSk7Ci0gICAgICAgIHN0ciArPSBwb3MgKyAxOwotICAgICAgICBsZW4gLT0gKHBvcyArIDEpOwotICAgICAgfSB3aGlsZSAobGVuID4gMCk7Ci0KLSAgICAgIEdTVF9UUkFDRSAoIkg6TTpTLk1TPSVkOiVkOiVkLiUwM2QiLCBob3VycywgbWludXRlcywgc2Vjb25kcywgZGVjaW1hbHMpOwotICAgIH0KLQorICAgIEdTVF9MT0cgKCIgLSAlczogJSIgR19HVUlOVDY0X0ZPUk1BVCwgcHJvcGVydHlfbmFtZSwgKnByb3BlcnR5X3ZhbHVlKTsKICAgICB4bWxGcmVlIChwcm9wX3N0cmluZyk7CiAgICAgZXhpc3RzID0gVFJVRTsKLSAgICAqcHJvcGVydHlfdmFsdWUgPQotICAgICAgICBzaWduICogKCgoKCgoZ2ludDY0KSB5ZWFycyAqIDM2NSArIG1vbnRocyAqIDMwICsgZGF5cykgKiAyNCArCi0gICAgICAgICAgICAgICAgICAgIGhvdXJzKSAqIDYwICsgbWludXRlcykgKiA2MCArIHNlY29uZHMpICogMTAwMCArIGRlY2ltYWxzKTsKLSAgICBHU1RfTE9HICgiIC0gJXM6ICUiIEdfR0lOVDY0X0ZPUk1BVCwgcHJvcGVydHlfbmFtZSwgKnByb3BlcnR5X3ZhbHVlKTsKICAgfQotCiAgIHJldHVybiBleGlzdHM7CiAKIGVycm9yOgpAQCAtMTM5NiwxNiArMTU2OCwxNyBAQAogICB9CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tcGRwYXJzZXJfcGFyc2VfbXVsdF9zZWdfYmFzZV90eXBlX2V4dCAoR3N0TXVsdFNlZ21lbnRCYXNlVHlwZSAqKiBwb2ludGVyLAogICAgIHhtbE5vZGUgKiBhX25vZGUsIEdzdE11bHRTZWdtZW50QmFzZVR5cGUgKiBwYXJlbnQpCiB7CiAgIHhtbE5vZGUgKmN1cl9ub2RlOwogICBHc3RNdWx0U2VnbWVudEJhc2VUeXBlICptdWx0X3NlZ19iYXNlX3R5cGU7CiAgIGd1aW50IGludHZhbDsKKyAgZ2Jvb2xlYW4gaGFzX3RpbWVsaW5lID0gRkFMU0UsIGhhc19kdXJhdGlvbiA9IEZBTFNFOwogCiAgIGdzdF9tcGRwYXJzZXJfZnJlZV9tdWx0X3NlZ19iYXNlX3R5cGVfZXh0ICgqcG9pbnRlcik7Ci0gICpwb2ludGVyID0gbXVsdF9zZWdfYmFzZV90eXBlID0gZ19zbGljZV9uZXcwIChHc3RNdWx0U2VnbWVudEJhc2VUeXBlKTsKKyAgbXVsdF9zZWdfYmFzZV90eXBlID0gZ19zbGljZV9uZXcwIChHc3RNdWx0U2VnbWVudEJhc2VUeXBlKTsKIAogICBtdWx0X3NlZ19iYXNlX3R5cGUtPmR1cmF0aW9uID0gMDsKICAgbXVsdF9zZWdfYmFzZV90eXBlLT5zdGFydE51bWJlciA9IDE7CkBAIC0xNDI0LDYgKzE1OTcsNyBAQAogICBpZiAoZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfdW5zaWduZWRfaW50ZWdlciAoYV9ub2RlLCAiZHVyYXRpb24iLCAwLAogICAgICAgICAgICZpbnR2YWwpKSB7CiAgICAgbXVsdF9zZWdfYmFzZV90eXBlLT5kdXJhdGlvbiA9IGludHZhbDsKKyAgICBoYXNfZHVyYXRpb24gPSBUUlVFOwogICB9CiAKICAgaWYgKGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3Vuc2lnbmVkX2ludGVnZXIgKGFfbm9kZSwgInN0YXJ0TnVtYmVyIiwgMSwKQEAgLTE0NDIsNiArMTYxNiw3IEBACiAgICAgICAgIC8qIHBhcnNlIGZyZWVzIHRoZSBzZWdtZW50dGltZWxpbmUgaWYgYW55ICovCiAgICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90aW1lbGluZV9ub2RlCiAgICAgICAgICAgICAoJm11bHRfc2VnX2Jhc2VfdHlwZS0+U2VnbWVudFRpbWVsaW5lLCBjdXJfbm9kZSk7CisgICAgICAgIGhhc190aW1lbGluZSA9IFRSVUU7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsCiAgICAgICAgICAgICAgICh4bWxDaGFyICopICJCaXRzdHJlYW1Td2l0Y2hpbmciKSA9PSAwKSB7CiAgICAgICAgIC8qIHBhcnNlIGZyZWVzIHRoZSBvbGQgdXJsIGJlZm9yZSBzZXR0aW5nIHRoZSBuZXcgb25lICovCkBAIC0xNDUwLDE4ICsxNjI1LDMxIEBACiAgICAgICB9CiAgICAgfQogICB9CisKKyAgaWYgKCFoYXNfZHVyYXRpb24gJiYgIWhhc190aW1lbGluZSkgeworICAgIEdTVF9FUlJPUiAoInNlZ21lbnQgaGFzIG5laXRoZXIgZHVyYXRpb24gbm9yIHRpbWVsaW5lIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgICpwb2ludGVyID0gbXVsdF9zZWdfYmFzZV90eXBlOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9tcGRwYXJzZXJfZnJlZV9tdWx0X3NlZ19iYXNlX3R5cGVfZXh0IChtdWx0X3NlZ19iYXNlX3R5cGUpOworICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUgKEdzdFNlZ21lbnRMaXN0Tm9kZSAqKiBwb2ludGVyLAogICAgIHhtbE5vZGUgKiBhX25vZGUsIEdzdFNlZ21lbnRMaXN0Tm9kZSAqIHBhcmVudCkKIHsKICAgeG1sTm9kZSAqY3VyX25vZGU7CiAgIEdzdFNlZ21lbnRMaXN0Tm9kZSAqbmV3X3NlZ21lbnRfbGlzdDsKICAgZ2NoYXIgKmFjdHVhdGU7CisgIGdib29sZWFuIHNlZ21lbnRfdXJsc19pbmhlcml0ZWRfZnJvbV9wYXJlbnQgPSBGQUxTRTsKIAogICBnc3RfbXBkcGFyc2VyX2ZyZWVfc2VnbWVudF9saXN0X25vZGUgKCpwb2ludGVyKTsKLSAgKnBvaW50ZXIgPSBuZXdfc2VnbWVudF9saXN0ID0gZ19zbGljZV9uZXcwIChHc3RTZWdtZW50TGlzdE5vZGUpOworICBuZXdfc2VnbWVudF9saXN0ID0gZ19zbGljZV9uZXcwIChHc3RTZWdtZW50TGlzdE5vZGUpOwogCiAgIC8qIEluaGVyaXQgYXR0cmlidXRlIHZhbHVlcyBmcm9tIHBhcmVudCAqLwogICBpZiAocGFyZW50KSB7CkBAIC0xNDczLDYgKzE2NjEsNyBAQAogICAgICAgbmV3X3NlZ21lbnRfbGlzdC0+U2VnbWVudFVSTCA9CiAgICAgICAgICAgZ19saXN0X2FwcGVuZCAobmV3X3NlZ21lbnRfbGlzdC0+U2VnbWVudFVSTCwKICAgICAgICAgICBnc3RfbXBkcGFyc2VyX2Nsb25lX3NlZ21lbnRfdXJsIChzZWdfdXJsKSk7CisgICAgICBzZWdtZW50X3VybHNfaW5oZXJpdGVkX2Zyb21fcGFyZW50ID0gVFJVRTsKICAgICB9CiAgIH0KIApAQCAtMTQ4NywxOSArMTY3Niw0NCBAQAogICB9CiAKICAgR1NUX0xPRyAoImV4dGVuc2lvbiBvZiBTZWdtZW50TGlzdCBub2RlOiIpOwotICBnc3RfbXBkcGFyc2VyX3BhcnNlX211bHRfc2VnX2Jhc2VfdHlwZV9leHQKKyAgaWYgKCFnc3RfbXBkcGFyc2VyX3BhcnNlX211bHRfc2VnX2Jhc2VfdHlwZV9leHQKICAgICAgICgmbmV3X3NlZ21lbnRfbGlzdC0+TXVsdFNlZ0Jhc2VUeXBlLCBhX25vZGUsCi0gICAgICAocGFyZW50ID8gcGFyZW50LT5NdWx0U2VnQmFzZVR5cGUgOiBOVUxMKSk7CisgICAgICAgICAgKHBhcmVudCA/IHBhcmVudC0+TXVsdFNlZ0Jhc2VUeXBlIDogTlVMTCkpKQorICAgIGdvdG8gZXJyb3I7CiAKICAgLyogZXhwbG9yZSBjaGlsZHJlbiBub2RlcyAqLwogICBmb3IgKGN1cl9ub2RlID0gYV9ub2RlLT5jaGlsZHJlbjsgY3VyX25vZGU7IGN1cl9ub2RlID0gY3VyX25vZGUtPm5leHQpIHsKICAgICBpZiAoY3VyX25vZGUtPnR5cGUgPT0gWE1MX0VMRU1FTlRfTk9ERSkgewogICAgICAgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJTZWdtZW50VVJMIikgPT0gMCkgeworICAgICAgICBpZiAoc2VnbWVudF91cmxzX2luaGVyaXRlZF9mcm9tX3BhcmVudCkgeworICAgICAgICAgIC8qCisgICAgICAgICAgICogU2VnbWVudEJhc2UsIFNlZ21lbnRUZW1wbGF0ZSBhbmQgU2VnbWVudExpc3Qgc2hhbGwgaW5oZXJpdAorICAgICAgICAgICAqIGF0dHJpYnV0ZXMgYW5kIGVsZW1lbnRzIGZyb20gdGhlIHNhbWUgZWxlbWVudCBvbiBhIGhpZ2hlciBsZXZlbC4KKyAgICAgICAgICAgKiBJZiB0aGUgc2FtZSBhdHRyaWJ1dGUgb3IgZWxlbWVudCBpcyBwcmVzZW50IG9uIGJvdGggbGV2ZWxzLAorICAgICAgICAgICAqIHRoZSBvbmUgb24gdGhlIGxvd2VyIGxldmVsIHNoYWxsIHRha2UgcHJlY2VkZW5jZSBvdmVyIHRoZSBvbmUKKyAgICAgICAgICAgKiBvbiB0aGUgaGlnaGVyIGxldmVsLgorICAgICAgICAgICAqLworCisgICAgICAgICAgLyogQ2xlYXIgdGhlIGxpc3Qgb2YgaW5oZXJpdGVkIHNlZ21lbnQgVVJMcyAqLworICAgICAgICAgIGdfbGlzdF9mcmVlX2Z1bGwgKG5ld19zZWdtZW50X2xpc3QtPlNlZ21lbnRVUkwsCisgICAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgZ3N0X21wZHBhcnNlcl9mcmVlX3NlZ21lbnRfdXJsX25vZGUpOworICAgICAgICAgIG5ld19zZWdtZW50X2xpc3QtPlNlZ21lbnRVUkwgPSBOVUxMOworCisgICAgICAgICAgLyogbWFyayB0aGUgZmFjdCB0aGF0IHdlIGNsZWFyZWQgdGhlIGxpc3QsIHNvIHRoYXQgaXQgaXMgbm90IHRyaWVkIGFnYWluICovCisgICAgICAgICAgc2VnbWVudF91cmxzX2luaGVyaXRlZF9mcm9tX3BhcmVudCA9IEZBTFNFOworICAgICAgICB9CiAgICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF91cmxfbm9kZSAoJm5ld19zZWdtZW50X2xpc3QtPlNlZ21lbnRVUkwsCiAgICAgICAgICAgICBjdXJfbm9kZSk7CiAgICAgICB9CiAgICAgfQogICB9CisKKyAgKnBvaW50ZXIgPSBuZXdfc2VnbWVudF9saXN0OworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9tcGRwYXJzZXJfZnJlZV9zZWdtZW50X2xpc3Rfbm9kZSAobmV3X3NlZ21lbnRfbGlzdCk7CisgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE1MjIsNiArMTczNiwxMCBAQAogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9yYXRpbyAoYV9ub2RlLCAic2FyIiwgJnJlcHJlc2VudGF0aW9uX2Jhc2UtPnNhcik7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2ZyYW1lcmF0ZSAoYV9ub2RlLCAiZnJhbWVSYXRlIiwKICAgICAgICZyZXByZXNlbnRhdGlvbl9iYXNlLT5mcmFtZVJhdGUpOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9mcmFtZXJhdGUgKGFfbm9kZSwgIm1pbkZyYW1lUmF0ZSIsCisgICAgICAmcmVwcmVzZW50YXRpb25fYmFzZS0+bWluRnJhbWVSYXRlKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZnJhbWVyYXRlIChhX25vZGUsICJtYXhGcmFtZVJhdGUiLAorICAgICAgJnJlcHJlc2VudGF0aW9uX2Jhc2UtPm1heEZyYW1lUmF0ZSk7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3N0cmluZyAoYV9ub2RlLCAiYXVkaW9TYW1wbGluZ1JhdGUiLAogICAgICAgJnJlcHJlc2VudGF0aW9uX2Jhc2UtPmF1ZGlvU2FtcGxpbmdSYXRlKTsKICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nIChhX25vZGUsICJtaW1lVHlwZSIsCkBAIC0xNTYwLDcgKzE3NzgsNyBAQAogICB9CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tcGRwYXJzZXJfcGFyc2VfcmVwcmVzZW50YXRpb25fbm9kZSAoR0xpc3QgKiogbGlzdCwgeG1sTm9kZSAqIGFfbm9kZSwKICAgICBHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqIHBhcmVudCkKIHsKQEAgLTE1NjgsMTAgKzE3ODYsMTAgQEAKICAgR3N0UmVwcmVzZW50YXRpb25Ob2RlICpuZXdfcmVwcmVzZW50YXRpb247CiAKICAgbmV3X3JlcHJlc2VudGF0aW9uID0gZ19zbGljZV9uZXcwIChHc3RSZXByZXNlbnRhdGlvbk5vZGUpOwotICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBuZXdfcmVwcmVzZW50YXRpb24pOwogCiAgIEdTVF9MT0cgKCJhdHRyaWJ1dGVzIG9mIFJlcHJlc2VudGF0aW9uIG5vZGU6Iik7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3N0cmluZyAoYV9ub2RlLCAiaWQiLCAmbmV3X3JlcHJlc2VudGF0aW9uLT5pZCk7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3N0cmluZ19ub193aGl0ZXNwYWNlIChhX25vZGUsICJpZCIsCisgICAgICAmbmV3X3JlcHJlc2VudGF0aW9uLT5pZCk7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX3Vuc2lnbmVkX2ludGVnZXIgKGFfbm9kZSwgImJhbmR3aWR0aCIsIDAsCiAgICAgICAmbmV3X3JlcHJlc2VudGF0aW9uLT5iYW5kd2lkdGgpOwogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF91bnNpZ25lZF9pbnRlZ2VyIChhX25vZGUsICJxdWFsaXR5UmFua2luZyIsIDAsCkBAIC0xNTkyLDEyICsxODEwLDE0IEBACiAgICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnX2Jhc2VfdHlwZV9leHQgKCZuZXdfcmVwcmVzZW50YXRpb24tPlNlZ21lbnRCYXNlLAogICAgICAgICAgICAgY3VyX25vZGUsIHBhcmVudC0+U2VnbWVudEJhc2UpOwogICAgICAgfSBlbHNlIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLCAoeG1sQ2hhciAqKSAiU2VnbWVudFRlbXBsYXRlIikgPT0gMCkgewotICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfdGVtcGxhdGVfbm9kZQorICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlCiAgICAgICAgICAgICAoJm5ld19yZXByZXNlbnRhdGlvbi0+U2VnbWVudFRlbXBsYXRlLCBjdXJfbm9kZSwKLSAgICAgICAgICAgIHBhcmVudC0+U2VnbWVudFRlbXBsYXRlKTsKKyAgICAgICAgICAgICAgICBwYXJlbnQtPlNlZ21lbnRUZW1wbGF0ZSkpCisgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIlNlZ21lbnRMaXN0IikgPT0gMCkgewotICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlICgmbmV3X3JlcHJlc2VudGF0aW9uLT5TZWdtZW50TGlzdCwKLSAgICAgICAgICAgIGN1cl9ub2RlLCBwYXJlbnQtPlNlZ21lbnRMaXN0KTsKKyAgICAgICAgaWYgKCFnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlCisgICAgICAgICAgICAoJm5ld19yZXByZXNlbnRhdGlvbi0+U2VnbWVudExpc3QsIGN1cl9ub2RlLCBwYXJlbnQtPlNlZ21lbnRMaXN0KSkKKyAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfSBlbHNlIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLCAoeG1sQ2hhciAqKSAiQmFzZVVSTCIpID09IDApIHsKICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9iYXNlVVJMX25vZGUgKCZuZXdfcmVwcmVzZW50YXRpb24tPkJhc2VVUkxzLAogICAgICAgICAgICAgY3VyX25vZGUpOwpAQCAtMTYwOCw5ICsxODI4LDE4IEBACiAgICAgICB9CiAgICAgfQogICB9CisKKyAgLyogc29tZSBzYW5pdHkgY2hlY2tpbmcgKi8KKworICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBuZXdfcmVwcmVzZW50YXRpb24pOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9tcGRwYXJzZXJfZnJlZV9yZXByZXNlbnRhdGlvbl9ub2RlIChuZXdfcmVwcmVzZW50YXRpb24pOworICByZXR1cm4gRkFMU0U7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tcGRwYXJzZXJfcGFyc2VfYWRhcHRhdGlvbl9zZXRfbm9kZSAoR0xpc3QgKiogbGlzdCwgeG1sTm9kZSAqIGFfbm9kZSwKICAgICBHc3RQZXJpb2ROb2RlICogcGFyZW50KQogewpAQCAtMTYxOSw3ICsxODQ4LDYgQEAKICAgZ2NoYXIgKmFjdHVhdGU7CiAKICAgbmV3X2FkYXBfc2V0ID0gZ19zbGljZV9uZXcwIChHc3RBZGFwdGF0aW9uU2V0Tm9kZSk7Ci0gICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIG5ld19hZGFwX3NldCk7CiAKICAgR1NUX0xPRyAoImF0dHJpYnV0ZXMgb2YgQWRhcHRhdGlvblNldCBub2RlOiIpOwogCkBAIC0xNjUzLDE0ICsxODgxLDE5IEBACiAgICAgICAmbmV3X2FkYXBfc2V0LT5taW5IZWlnaHQpOwogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF91bnNpZ25lZF9pbnRlZ2VyIChhX25vZGUsICJtYXhIZWlnaHQiLCAwLAogICAgICAgJm5ld19hZGFwX3NldC0+bWF4SGVpZ2h0KTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZnJhbWVyYXRlIChhX25vZGUsICJtaW5GcmFtZVJhdGUiLAotICAgICAgJm5ld19hZGFwX3NldC0+bWluRnJhbWVSYXRlKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZnJhbWVyYXRlIChhX25vZGUsICJtYXhGcmFtZVJhdGUiLAotICAgICAgJm5ld19hZGFwX3NldC0+bWF4RnJhbWVSYXRlKTsKICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfY29uZF91aW50IChhX25vZGUsICJzZWdtZW50QWxpZ25tZW50IiwKICAgICAgICZuZXdfYWRhcF9zZXQtPnNlZ21lbnRBbGlnbm1lbnQpOwogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9ib29sZWFuIChhX25vZGUsICJiaXRzdHJlYW1Td2l0Y2hpbmciLAotICAgICAgRkFMU0UsICZuZXdfYWRhcF9zZXQtPmJpdHN0cmVhbVN3aXRjaGluZyk7CisgICAgICBwYXJlbnQtPmJpdHN0cmVhbVN3aXRjaGluZywgJm5ld19hZGFwX3NldC0+Yml0c3RyZWFtU3dpdGNoaW5nKTsKKyAgaWYgKHBhcmVudC0+Yml0c3RyZWFtU3dpdGNoaW5nICYmICFuZXdfYWRhcF9zZXQtPmJpdHN0cmVhbVN3aXRjaGluZykgeworICAgIC8qIGFjY29yZGluZyB0byB0aGUgc3RhbmRhcmQsIGlmIHRoZSBQZXJpb2QncyBiaXRzdHJlYW1Td2l0Y2hpbmcgYXR0cmlidXRlCisgICAgICogaXMgdHJ1ZSwgdGhlIEFkYXB0YXRpb25TZXQgc2hvdWxkIG5vdCBoYXZlIHRoZSBiaXRzdHJlYW1Td2l0Y2hpbmcKKyAgICAgKiBhdHRyaWJ1dGUgc2V0IHRvIGZhbHNlLgorICAgICAqIFdlIHNob3VsZCByZXR1cm4gYSBwYXJzaW5nIGVycm9yLCBidXQgd2UgYXJlIGdlbmVyb3VzIGFuZCBpZ25vcmUgdGhlCisgICAgICogc3RhbmRhcmQgdmlvbGF0aW9uLgorICAgICAqLworICAgIG5ld19hZGFwX3NldC0+Yml0c3RyZWFtU3dpdGNoaW5nID0gcGFyZW50LT5iaXRzdHJlYW1Td2l0Y2hpbmc7CisgIH0KICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfY29uZF91aW50IChhX25vZGUsICJzdWJzZWdtZW50QWxpZ25tZW50IiwKICAgICAgICZuZXdfYWRhcF9zZXQtPnN1YnNlZ21lbnRBbGlnbm1lbnQpOwogICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9TQVBfdHlwZSAoYV9ub2RlLCAic3Vic2VnbWVudFN0YXJ0c1dpdGhTQVAiLApAQCAtMTY5MSwxNSArMTkyNCwxNyBAQAogICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ19iYXNlX3R5cGVfZXh0ICgmbmV3X2FkYXBfc2V0LT5TZWdtZW50QmFzZSwKICAgICAgICAgICAgIGN1cl9ub2RlLCBwYXJlbnQtPlNlZ21lbnRCYXNlKTsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIlNlZ21lbnRMaXN0IikgPT0gMCkgewotICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlICgmbmV3X2FkYXBfc2V0LT5TZWdtZW50TGlzdCwKLSAgICAgICAgICAgIGN1cl9ub2RlLCBwYXJlbnQtPlNlZ21lbnRMaXN0KTsKKyAgICAgICAgaWYgKCFnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlICgmbmV3X2FkYXBfc2V0LT5TZWdtZW50TGlzdCwKKyAgICAgICAgICAgICAgICBjdXJfbm9kZSwgcGFyZW50LT5TZWdtZW50TGlzdCkpCisgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwKICAgICAgICAgICAgICAgKHhtbENoYXIgKikgIkNvbnRlbnRDb21wb25lbnQiKSA9PSAwKSB7CiAgICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2VfY29udGVudF9jb21wb25lbnRfbm9kZQogICAgICAgICAgICAgKCZuZXdfYWRhcF9zZXQtPkNvbnRlbnRDb21wb25lbnRzLCBjdXJfbm9kZSk7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJTZWdtZW50VGVtcGxhdGUiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlCi0gICAgICAgICAgICAoJm5ld19hZGFwX3NldC0+U2VnbWVudFRlbXBsYXRlLCBjdXJfbm9kZSwgcGFyZW50LT5TZWdtZW50VGVtcGxhdGUpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlCisgICAgICAgICAgICAoJm5ld19hZGFwX3NldC0+U2VnbWVudFRlbXBsYXRlLCBjdXJfbm9kZSwgcGFyZW50LT5TZWdtZW50VGVtcGxhdGUpKQorICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICB9CiAgICAgfQogICB9CkBAIC0xNzExLDExICsxOTQ2LDE5IEBACiAgIGZvciAoY3VyX25vZGUgPSBhX25vZGUtPmNoaWxkcmVuOyBjdXJfbm9kZTsgY3VyX25vZGUgPSBjdXJfbm9kZS0+bmV4dCkgewogICAgIGlmIChjdXJfbm9kZS0+dHlwZSA9PSBYTUxfRUxFTUVOVF9OT0RFKSB7CiAgICAgICBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwgKHhtbENoYXIgKikgIlJlcHJlc2VudGF0aW9uIikgPT0gMCkgewotICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3JlcHJlc2VudGF0aW9uX25vZGUgKCZuZXdfYWRhcF9zZXQtPlJlcHJlc2VudGF0aW9ucywKLSAgICAgICAgICAgIGN1cl9ub2RlLCBuZXdfYWRhcF9zZXQpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2VfcmVwcmVzZW50YXRpb25fbm9kZQorICAgICAgICAgICAgKCZuZXdfYWRhcF9zZXQtPlJlcHJlc2VudGF0aW9ucywgY3VyX25vZGUsIG5ld19hZGFwX3NldCkpCisgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0KICAgICB9CiAgIH0KKworICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBuZXdfYWRhcF9zZXQpOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9tcGRwYXJzZXJfZnJlZV9hZGFwdGF0aW9uX3NldF9ub2RlIChuZXdfYWRhcF9zZXQpOworICByZXR1cm4gRkFMU0U7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNzMxLDcgKzE5NzQsNyBAQAogICAgICAgJm5ld19zdWJzZXQtPmNvbnRhaW5zLCAmbmV3X3N1YnNldC0+c2l6ZSk7CiB9CiAKLXN0YXRpYyB2b2lkCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlIChHc3RTZWdtZW50VGVtcGxhdGVOb2RlICoqIHBvaW50ZXIsCiAgICAgeG1sTm9kZSAqIGFfbm9kZSwgR3N0U2VnbWVudFRlbXBsYXRlTm9kZSAqIHBhcmVudCkKIHsKQEAgLTE3MzksMTIgKzE5ODIsMTMgQEAKICAgZ2NoYXIgKnN0cnZhbDsKIAogICBnc3RfbXBkcGFyc2VyX2ZyZWVfc2VnbWVudF90ZW1wbGF0ZV9ub2RlICgqcG9pbnRlcik7Ci0gICpwb2ludGVyID0gbmV3X3NlZ21lbnRfdGVtcGxhdGUgPSBnX3NsaWNlX25ldzAgKEdzdFNlZ21lbnRUZW1wbGF0ZU5vZGUpOworICBuZXdfc2VnbWVudF90ZW1wbGF0ZSA9IGdfc2xpY2VfbmV3MCAoR3N0U2VnbWVudFRlbXBsYXRlTm9kZSk7CiAKICAgR1NUX0xPRyAoImV4dGVuc2lvbiBvZiBTZWdtZW50VGVtcGxhdGUgbm9kZToiKTsKLSAgZ3N0X21wZHBhcnNlcl9wYXJzZV9tdWx0X3NlZ19iYXNlX3R5cGVfZXh0CisgIGlmICghZ3N0X21wZHBhcnNlcl9wYXJzZV9tdWx0X3NlZ19iYXNlX3R5cGVfZXh0CiAgICAgICAoJm5ld19zZWdtZW50X3RlbXBsYXRlLT5NdWx0U2VnQmFzZVR5cGUsIGFfbm9kZSwKLSAgICAgIChwYXJlbnQgPyBwYXJlbnQtPk11bHRTZWdCYXNlVHlwZSA6IE5VTEwpKTsKKyAgICAgICAgICAocGFyZW50ID8gcGFyZW50LT5NdWx0U2VnQmFzZVR5cGUgOiBOVUxMKSkpCisgICAgZ290byBlcnJvcjsKIAogICAvKiBJbmhlcml0IGF0dHJpYnV0ZSB2YWx1ZXMgZnJvbSBwYXJlbnQgd2hlbiB0aGUgdmFsdWUgaXNuJ3QgZm91bmQgKi8KICAgR1NUX0xPRyAoImF0dHJpYnV0ZXMgb2YgU2VnbWVudFRlbXBsYXRlIG5vZGU6Iik7CkBAIC0xNzczLDkgKzIwMTcsMTYgQEAKICAgICBuZXdfc2VnbWVudF90ZW1wbGF0ZS0+Yml0c3RyZWFtU3dpdGNoaW5nID0KICAgICAgICAgeG1sTWVtU3RyZHVwIChwYXJlbnQtPmJpdHN0cmVhbVN3aXRjaGluZyk7CiAgIH0KKworICAqcG9pbnRlciA9IG5ld19zZWdtZW50X3RlbXBsYXRlOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9tcGRwYXJzZXJfZnJlZV9zZWdtZW50X3RlbXBsYXRlX25vZGUgKG5ld19zZWdtZW50X3RlbXBsYXRlKTsKKyAgcmV0dXJuIEZBTFNFOwogfQogCi1zdGF0aWMgdm9pZAorc3RhdGljIGdib29sZWFuCiBnc3RfbXBkcGFyc2VyX3BhcnNlX3BlcmlvZF9ub2RlIChHTGlzdCAqKiBsaXN0LCB4bWxOb2RlICogYV9ub2RlKQogewogICB4bWxOb2RlICpjdXJfbm9kZTsKQEAgLTE3ODMsNyArMjAzNCw2IEBACiAgIGdjaGFyICphY3R1YXRlOwogCiAgIG5ld19wZXJpb2QgPSBnX3NsaWNlX25ldzAgKEdzdFBlcmlvZE5vZGUpOwotICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBuZXdfcGVyaW9kKTsKIAogICBHU1RfTE9HICgiYXR0cmlidXRlcyBvZiBQZXJpb2Qgbm9kZToiKTsKIApAQCAtMTc5OCwxMSArMjA0OCwxMiBAQAogICB9CiAKICAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3Bfc3RyaW5nIChhX25vZGUsICJpZCIsICZuZXdfcGVyaW9kLT5pZCk7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJzdGFydCIsIC0xLCAmbmV3X3BlcmlvZC0+c3RhcnQpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAiZHVyYXRpb24iLCAtMSwKLSAgICAgICZuZXdfcGVyaW9kLT5kdXJhdGlvbik7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2Jvb2xlYW4gKGFfbm9kZSwgImJpdHN0cmVhbVN3aXRjaGluZyIsCi0gICAgICBGQUxTRSwgJm5ld19wZXJpb2QtPmJpdHN0cmVhbVN3aXRjaGluZyk7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJzdGFydCIsIEdTVF9NUERfRFVSQVRJT05fTk9ORSwKKyAgICAgICZuZXdfcGVyaW9kLT5zdGFydCk7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJkdXJhdGlvbiIsCisgICAgICBHU1RfTVBEX0RVUkFUSU9OX05PTkUsICZuZXdfcGVyaW9kLT5kdXJhdGlvbik7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2Jvb2xlYW4gKGFfbm9kZSwgImJpdHN0cmVhbVN3aXRjaGluZyIsIEZBTFNFLAorICAgICAgJm5ld19wZXJpb2QtPmJpdHN0cmVhbVN3aXRjaGluZyk7CiAKICAgLyogZXhwbG9yZSBjaGlsZHJlbiBub2RlcyAqLwogICBmb3IgKGN1cl9ub2RlID0gYV9ub2RlLT5jaGlsZHJlbjsgY3VyX25vZGU7IGN1cl9ub2RlID0gY3VyX25vZGUtPm5leHQpIHsKQEAgLTE4MTEsMTEgKzIwNjIsMTMgQEAKICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9zZWdfYmFzZV90eXBlX2V4dCAoJm5ld19wZXJpb2QtPlNlZ21lbnRCYXNlLAogICAgICAgICAgICAgY3VyX25vZGUsIE5VTEwpOwogICAgICAgfSBlbHNlIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLCAoeG1sQ2hhciAqKSAiU2VnbWVudExpc3QiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF9saXN0X25vZGUgKCZuZXdfcGVyaW9kLT5TZWdtZW50TGlzdCwKLSAgICAgICAgICAgIGN1cl9ub2RlLCBOVUxMKTsKKyAgICAgICAgaWYgKCFnc3RfbXBkcGFyc2VyX3BhcnNlX3NlZ21lbnRfbGlzdF9ub2RlICgmbmV3X3BlcmlvZC0+U2VnbWVudExpc3QsCisgICAgICAgICAgICAgICAgY3VyX25vZGUsIE5VTEwpKQorICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJTZWdtZW50VGVtcGxhdGUiKSA9PSAwKSB7Ci0gICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlICgmbmV3X3BlcmlvZC0+U2VnbWVudFRlbXBsYXRlLAotICAgICAgICAgICAgY3VyX25vZGUsIE5VTEwpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2Vfc2VnbWVudF90ZW1wbGF0ZV9ub2RlCisgICAgICAgICAgICAoJm5ld19wZXJpb2QtPlNlZ21lbnRUZW1wbGF0ZSwgY3VyX25vZGUsIE5VTEwpKQorICAgICAgICAgIGdvdG8gZXJyb3I7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJTdWJzZXQiKSA9PSAwKSB7CiAgICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2Vfc3Vic2V0X25vZGUgKCZuZXdfcGVyaW9kLT5TdWJzZXRzLCBjdXJfbm9kZSk7CiAgICAgICB9IGVsc2UgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJCYXNlVVJMIikgPT0gMCkgewpAQCAtMTgzMSwxMSArMjA4NCwxOSBAQAogICBmb3IgKGN1cl9ub2RlID0gYV9ub2RlLT5jaGlsZHJlbjsgY3VyX25vZGU7IGN1cl9ub2RlID0gY3VyX25vZGUtPm5leHQpIHsKICAgICBpZiAoY3VyX25vZGUtPnR5cGUgPT0gWE1MX0VMRU1FTlRfTk9ERSkgewogICAgICAgaWYgKHhtbFN0cmNtcCAoY3VyX25vZGUtPm5hbWUsICh4bWxDaGFyICopICJBZGFwdGF0aW9uU2V0IikgPT0gMCkgewotICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX2FkYXB0YXRpb25fc2V0X25vZGUgKCZuZXdfcGVyaW9kLT5BZGFwdGF0aW9uU2V0cywKLSAgICAgICAgICAgIGN1cl9ub2RlLCBuZXdfcGVyaW9kKTsKKyAgICAgICAgaWYgKCFnc3RfbXBkcGFyc2VyX3BhcnNlX2FkYXB0YXRpb25fc2V0X25vZGUKKyAgICAgICAgICAgICgmbmV3X3BlcmlvZC0+QWRhcHRhdGlvblNldHMsIGN1cl9ub2RlLCBuZXdfcGVyaW9kKSkKKyAgICAgICAgICBnb3RvIGVycm9yOwogICAgICAgfQogICAgIH0KICAgfQorCisgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIG5ld19wZXJpb2QpOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9tcGRwYXJzZXJfZnJlZV9wZXJpb2Rfbm9kZSAobmV3X3BlcmlvZCk7CisgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE4NzcsMTAgKzIxMzgsMTAgQEAKICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgbmV3X21ldHJpY3NfcmFuZ2UpOwogCiAgIEdTVF9MT0cgKCJhdHRyaWJ1dGVzIG9mIE1ldHJpY3MgUmFuZ2Ugbm9kZToiKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgInN0YXJ0dGltZSIsIC0xLAotICAgICAgJm5ld19tZXRyaWNzX3JhbmdlLT5zdGFydHRpbWUpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAiZHVyYXRpb24iLCAtMSwKLSAgICAgICZuZXdfbWV0cmljc19yYW5nZS0+ZHVyYXRpb24pOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAic3RhcnR0aW1lIiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19tZXRyaWNzX3JhbmdlLT5zdGFydHRpbWUpOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAiZHVyYXRpb24iLAorICAgICAgR1NUX01QRF9EVVJBVElPTl9OT05FLCAmbmV3X21ldHJpY3NfcmFuZ2UtPmR1cmF0aW9uKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE5NDYsMjAgKzIyMDcsMjYgQEAKICAgICB9CiAgICAgbmV3X3RpbWluZy0+dXJscyA9IGdfc3Ryc3BsaXQgKHZhbHVlLCAiICIsIG1heF90b2tlbnMpOwogICAgIHhtbEZyZWUgKHZhbHVlKTsKKyAgfQorCisgIC8qIGFwcGVuZCB0byBsaXN0IG9ubHkgaWYgYm90aCBtZXRob2QgYW5kIHVybHMgd2VyZSBzZXQgKi8KKyAgaWYgKG5ld190aW1pbmctPm1ldGhvZCAhPSAwICYmIG5ld190aW1pbmctPnVybHMgIT0gTlVMTCAmJgorICAgICAgZ19zdHJ2X2xlbmd0aCAobmV3X3RpbWluZy0+dXJscykgIT0gMCkgewogICAgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIG5ld190aW1pbmcpOwogICB9IGVsc2UgewogICAgIGdzdF9tcGRwYXJzZXJfZnJlZV91dGN0aW1pbmdfbm9kZSAobmV3X3RpbWluZyk7CiAgIH0KIH0KIAotc3RhdGljIHZvaWQKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X21wZHBhcnNlcl9wYXJzZV9yb290X25vZGUgKEdzdE1QRE5vZGUgKiogcG9pbnRlciwgeG1sTm9kZSAqIGFfbm9kZSkKIHsKICAgeG1sTm9kZSAqY3VyX25vZGU7CiAgIEdzdE1QRE5vZGUgKm5ld19tcGQ7CiAKICAgZ3N0X21wZHBhcnNlcl9mcmVlX21wZF9ub2RlICgqcG9pbnRlcik7Ci0gICpwb2ludGVyID0gbmV3X21wZCA9IGdfc2xpY2VfbmV3MCAoR3N0TVBETm9kZSk7CisgICpwb2ludGVyID0gTlVMTDsKKyAgbmV3X21wZCA9IGdfc2xpY2VfbmV3MCAoR3N0TVBETm9kZSk7CiAKICAgR1NUX0xPRyAoIm5hbWVzcGFjZXMgb2Ygcm9vdCBNUEQgbm9kZToiKTsKICAgbmV3X21wZC0+ZGVmYXVsdF9uYW1lc3BhY2UgPQpAQCAtMTk3NywyNiArMjI0NCwyNyBAQAogICAgICAgJm5ld19tcGQtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSk7CiAgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2RhdGVUaW1lIChhX25vZGUsICJhdmFpbGFiaWxpdHlFbmRUaW1lIiwKICAgICAgICZuZXdfbXBkLT5hdmFpbGFiaWxpdHlFbmRUaW1lKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgIm1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24iLCAtMSwKLSAgICAgICZuZXdfbXBkLT5tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgIm1pbmltdW1VcGRhdGVQZXJpb2QiLCAtMSwKLSAgICAgICZuZXdfbXBkLT5taW5pbXVtVXBkYXRlUGVyaW9kKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgIm1pbkJ1ZmZlclRpbWUiLCAtMSwKLSAgICAgICZuZXdfbXBkLT5taW5CdWZmZXJUaW1lKTsKLSAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgInRpbWVTaGlmdEJ1ZmZlckRlcHRoIiwgLTEsCi0gICAgICAmbmV3X21wZC0+dGltZVNoaWZ0QnVmZmVyRGVwdGgpOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAic3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXkiLCAtMSwKLSAgICAgICZuZXdfbXBkLT5zdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheSk7Ci0gIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJtYXhTZWdtZW50RHVyYXRpb24iLCAtMSwKLSAgICAgICZuZXdfbXBkLT5tYXhTZWdtZW50RHVyYXRpb24pOwotICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWF4U3Vic2VnbWVudER1cmF0aW9uIiwgLTEsCi0gICAgICAmbmV3X21wZC0+bWF4U3Vic2VnbWVudER1cmF0aW9uKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgIm1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24iLAorICAgICAgR1NUX01QRF9EVVJBVElPTl9OT05FLCAmbmV3X21wZC0+bWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbik7CisgIGdzdF9tcGRwYXJzZXJfZ2V0X3htbF9wcm9wX2R1cmF0aW9uIChhX25vZGUsICJtaW5pbXVtVXBkYXRlUGVyaW9kIiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19tcGQtPm1pbmltdW1VcGRhdGVQZXJpb2QpOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWluQnVmZmVyVGltZSIsCisgICAgICBHU1RfTVBEX0RVUkFUSU9OX05PTkUsICZuZXdfbXBkLT5taW5CdWZmZXJUaW1lKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgInRpbWVTaGlmdEJ1ZmZlckRlcHRoIiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19tcGQtPnRpbWVTaGlmdEJ1ZmZlckRlcHRoKTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgInN1Z2dlc3RlZFByZXNlbnRhdGlvbkRlbGF5IiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19tcGQtPnN1Z2dlc3RlZFByZXNlbnRhdGlvbkRlbGF5KTsKKyAgZ3N0X21wZHBhcnNlcl9nZXRfeG1sX3Byb3BfZHVyYXRpb24gKGFfbm9kZSwgIm1heFNlZ21lbnREdXJhdGlvbiIsCisgICAgICBHU1RfTVBEX0RVUkFUSU9OX05PTkUsICZuZXdfbXBkLT5tYXhTZWdtZW50RHVyYXRpb24pOworICBnc3RfbXBkcGFyc2VyX2dldF94bWxfcHJvcF9kdXJhdGlvbiAoYV9ub2RlLCAibWF4U3Vic2VnbWVudER1cmF0aW9uIiwKKyAgICAgIEdTVF9NUERfRFVSQVRJT05fTk9ORSwgJm5ld19tcGQtPm1heFN1YnNlZ21lbnREdXJhdGlvbik7CiAKICAgLyogZXhwbG9yZSBjaGlsZHJlbiBQZXJpb2Qgbm9kZXMgKi8KICAgZm9yIChjdXJfbm9kZSA9IGFfbm9kZS0+Y2hpbGRyZW47IGN1cl9ub2RlOyBjdXJfbm9kZSA9IGN1cl9ub2RlLT5uZXh0KSB7CiAgICAgaWYgKGN1cl9ub2RlLT50eXBlID09IFhNTF9FTEVNRU5UX05PREUpIHsKICAgICAgIGlmICh4bWxTdHJjbXAgKGN1cl9ub2RlLT5uYW1lLCAoeG1sQ2hhciAqKSAiUGVyaW9kIikgPT0gMCkgewotICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3BlcmlvZF9ub2RlICgmbmV3X21wZC0+UGVyaW9kcywgY3VyX25vZGUpOworICAgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfcGFyc2VfcGVyaW9kX25vZGUgKCZuZXdfbXBkLT5QZXJpb2RzLCBjdXJfbm9kZSkpCisgICAgICAgICAgZ290byBlcnJvcjsKICAgICAgIH0gZWxzZSBpZiAoeG1sU3RyY21wIChjdXJfbm9kZS0+bmFtZSwKICAgICAgICAgICAgICAgKHhtbENoYXIgKikgIlByb2dyYW1JbmZvcm1hdGlvbiIpID09IDApIHsKICAgICAgICAgZ3N0X21wZHBhcnNlcl9wYXJzZV9wcm9ncmFtX2luZm9fbm9kZSAoJm5ld19tcGQtPlByb2dyYW1JbmZvLCBjdXJfbm9kZSk7CkBAIC0yMDExLDYgKzIyNzksMTQgQEAKICAgICAgIH0KICAgICB9CiAgIH0KKworICBnc3RfbXBkcGFyc2VyX2ZyZWVfbXBkX25vZGUgKCpwb2ludGVyKTsKKyAgKnBvaW50ZXIgPSBuZXdfbXBkOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIGdzdF9tcGRwYXJzZXJfZnJlZV9tcGRfbm9kZSAobmV3X21wZCk7CisgIHJldHVybiBGQUxTRTsKIH0KIAogLyogY29tcGFyaXNvbiBmdW5jdGlvbnMgKi8KQEAgLTI0NzIsNiArMjc0OCw4IEBACiAgICAgICB4bWxGcmVlIChyZXByZXNlbnRhdGlvbl9iYXNlLT5wcm9maWxlcyk7CiAgICAgZ19zbGljZV9mcmVlIChHc3RSYXRpbywgcmVwcmVzZW50YXRpb25fYmFzZS0+c2FyKTsKICAgICBnX3NsaWNlX2ZyZWUgKEdzdEZyYW1lUmF0ZSwgcmVwcmVzZW50YXRpb25fYmFzZS0+ZnJhbWVSYXRlKTsKKyAgICBnX3NsaWNlX2ZyZWUgKEdzdEZyYW1lUmF0ZSwgcmVwcmVzZW50YXRpb25fYmFzZS0+bWluRnJhbWVSYXRlKTsKKyAgICBnX3NsaWNlX2ZyZWUgKEdzdEZyYW1lUmF0ZSwgcmVwcmVzZW50YXRpb25fYmFzZS0+bWF4RnJhbWVSYXRlKTsKICAgICBpZiAocmVwcmVzZW50YXRpb25fYmFzZS0+YXVkaW9TYW1wbGluZ1JhdGUpCiAgICAgICB4bWxGcmVlIChyZXByZXNlbnRhdGlvbl9iYXNlLT5hdWRpb1NhbXBsaW5nUmF0ZSk7CiAgICAgaWYgKHJlcHJlc2VudGF0aW9uX2Jhc2UtPm1pbWVUeXBlKQpAQCAtMjUwMiw4ICsyNzgwLDYgQEAKICAgICBpZiAoYWRhcHRhdGlvbl9zZXRfbm9kZS0+Y29udGVudFR5cGUpCiAgICAgICB4bWxGcmVlIChhZGFwdGF0aW9uX3NldF9ub2RlLT5jb250ZW50VHlwZSk7CiAgICAgZ19zbGljZV9mcmVlIChHc3RSYXRpbywgYWRhcHRhdGlvbl9zZXRfbm9kZS0+cGFyKTsKLSAgICBnX3NsaWNlX2ZyZWUgKEdzdEZyYW1lUmF0ZSwgYWRhcHRhdGlvbl9zZXRfbm9kZS0+bWluRnJhbWVSYXRlKTsKLSAgICBnX3NsaWNlX2ZyZWUgKEdzdEZyYW1lUmF0ZSwgYWRhcHRhdGlvbl9zZXRfbm9kZS0+bWF4RnJhbWVSYXRlKTsKICAgICBnX3NsaWNlX2ZyZWUgKEdzdENvbmRpdGlvbmFsVWludFR5cGUsCiAgICAgICAgIGFkYXB0YXRpb25fc2V0X25vZGUtPnNlZ21lbnRBbGlnbm1lbnQpOwogICAgIGdfc2xpY2VfZnJlZSAoR3N0Q29uZGl0aW9uYWxVaW50VHlwZSwKQEAgLTI3OTYsMjggKzMwNzIsMjYgQEAKIHN0YXRpYyBnYm9vbGVhbgogdmFsaWRhdGVfZm9ybWF0IChjb25zdCBnY2hhciAqIGZvcm1hdCkKIHsKLSAgZ2NoYXIgKnA7CisgIGNvbnN0IGdjaGFyICpwID0gZm9ybWF0OwogCi0gIC8qIENoZWNrIGlmIHRoZXJlIGlzIGEgJSBhdCBhbGwgKi8KLSAgcCA9IHN0cmNociAoZm9ybWF0LCAnJScpOwotICBpZiAoIXApCi0gICAgcmV0dXJuIFRSVUU7CisgIC8qIENoZWNrIGlmIGl0IHN0YXJ0cyB3aXRoICUgKi8KKyAgaWYgKCFwIHx8IHBbMF0gIT0gJyUnKQorICAgIHJldHVybiBGQUxTRTsKICAgcCsrOwogCi0gIC8qIEZvbGxvd2luZyB0aGUgJSBtdXN0IGJlIGEgMCwgb3IgYW55IG9mIGQsIHggb3IgdS4KLSAgICogeCBhbmQgdSBhcmUgbm90IHBhcnQgb2YgdGhlIHNwZWMsIGJ1dCBkb24ndCBodXJ0IHVzCisgIC8qIHRoZSBzcGVjIG1hbmRhdGVzIGEgZm9ybWF0IGxpa2UgJTBbd2lkdGhdZCAqLworICAvKiBGb2xsb3dpbmcgdGhlICUsIHdlIG11c3QgaGF2ZSBhIDAgKi8KKyAgaWYgKHBbMF0gIT0gJzAnKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBGb2xsb3dpbmcgdGhlICUgbXVzdCBiZSBhIG51bWJlciBzdGFydGluZyB3aXRoIDAKICAgICovCi0gIGlmIChwWzBdID09ICcwJykgeworICB3aGlsZSAoZ19hc2NpaV9pc2RpZ2l0ICgqcCkpCiAgICAgcCsrOwogCi0gICAgd2hpbGUgKGdfYXNjaWlfaXNkaWdpdCAoKnApKQotICAgICAgcCsrOwotICB9Ci0KLSAgLyogQWZ0ZXIgYW55IDAgYW5kIGFscGhhbnVtZXJpYyB2YWx1ZXMsIHRoZXJlIG11c3QgYmUKLSAgICogYW4gZCwgeCBvciB1LgorICAvKiBBZnRlciBhbnkgMCBhbmQgYWxwaGFudW1lcmljIHZhbHVlcywgdGhlcmUgbXVzdCBiZSBhIGQuCiAgICAqLwotICBpZiAocFswXSAhPSAnZCcgJiYgcFswXSAhPSAneCcgJiYgcFswXSAhPSAndScpCisgIGlmIChwWzBdICE9ICdkJykKICAgICByZXR1cm4gRkFMU0U7CiAgIHArKzsKIApAQCAtMjgzNCwxNiArMzEwOCwxMyBAQAogc3RhdGljIGdjaGFyICoKIHByb21vdGVfZm9ybWF0X3RvX3VpbnQ2NCAoY29uc3QgZ2NoYXIgKiBmb3JtYXQpCiB7Ci0gIGdjaGFyICpwOworICBjb25zdCBnY2hhciAqcCA9IGZvcm1hdDsKICAgZ2NoYXIgKnByb21vdGVkX2Zvcm1hdDsKIAogICAvKiBNdXN0IGJlIGNhbGxlZCB3aXRoIGEgdmFsaWRhdGVkIGZvcm1hdCEgKi8KICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHZhbGlkYXRlX2Zvcm1hdCAoZm9ybWF0KSwgTlVMTCk7CiAKLSAgLyogQ2hlY2sgaWYgdGhlcmUgaXMgYSAlIGF0IGFsbCAqLwotICBwID0gc3RyY2hyIChmb3JtYXQsICclJyk7Ci0gIGlmICghcCkKLSAgICByZXR1cm4gZ19zdHJkdXAgKGZvcm1hdCk7CisgIC8qIGl0IHN0YXJ0cyB3aXRoICUgKi8KICAgcCsrOwogCiAgIC8qIEZvbGxvd2luZyB0aGUgJSBtdXN0IGJlIGEgMCwgb3IgYW55IG9mIGQsIHggb3IgdS4KQEAgLTI4NTYsMTAgKzMxMjcsMTAgQEAKICAgICAgIHArKzsKICAgfQogCi0gIC8qIEFmdGVyIGFueSAwIGFuZCBhbHBoYW51bWVyaWMgdmFsdWVzLCB0aGVyZSBtdXN0IGJlCi0gICAqIGFuIGQsIHggb3IgdS4gT3RoZXJ3aXNlIHZhbGlkYXRpb24gd291bGQgaGF2ZSBmYWlsZWQKKyAgLyogQWZ0ZXIgYW55IDAgYW5kIGFscGhhbnVtZXJpYyB2YWx1ZXMsIHRoZXJlIG11c3QgYmUgYSBkLgorICAgKiBPdGhlcndpc2UgdmFsaWRhdGlvbiB3b3VsZCBoYXZlIGZhaWxlZAogICAgKi8KLSAgZ19hc3NlcnQgKHBbMF0gPT0gJ2QnIHx8IHBbMF0gPT0gJ3gnIHx8IHBbMF0gPT0gJ3UnKTsKKyAgZ19hc3NlcnQgKHBbMF0gPT0gJ2QnKTsKIAogICBwcm9tb3RlZF9mb3JtYXQgPQogICAgICAgZ19zdHJkdXBfcHJpbnRmICgiJS4qcyIgR19HSU5UNjRfTU9ESUZJRVIgIiVzIiwgKGdpbnQpIChwIC0gZm9ybWF0KSwKQEAgLTI4NjgsNiArMzEzOSwyNiBAQAogICByZXR1cm4gcHJvbW90ZWRfZm9ybWF0OwogfQogCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKGNvbnN0IGNoYXIgKnMpCit7CisgIHdoaWxlICgqcykgeworICAgIGlmICghc3RyY2hyCisgICAgICAgICgiOzpAJj1hQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaMDEyMzQ1Njc4OSQtXy4rISonKCksJS8iLAorICAgICAgICAgICAgKnMpKQorICAgICAgcmV0dXJuIEZBTFNFOworICAgIGlmICgqcyA9PSAnJScpIHsKKyAgICAgIC8qIGdfYXNjaWlfaXNkaWdpdCByZXR1cm5zIEZBTFNFIGZvciBOVUwsIGFuZCB8fCBpcyBhIHNob3J0IGNpcmN1aXRpbmcKKyAgICAgICAgIG9wZXJhdG9yLCBzbyB0aGlzIGlzIHNhZmUgZm9yIHN0cmluZ3MgZW5kaW5nIGJlZm9yZSB0d28gaGV4IGRpZ2l0cyAqLworICAgICAgaWYgKCFnX2FzY2lpX2lzeGRpZ2l0IChzWzFdKSB8fCAhZ19hc2NpaV9pc3hkaWdpdCAoc1syXSkpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIHMgKz0gMjsKKyAgICB9CisgICAgcysrOworICB9CisgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgZ2NoYXIgKgogZ3N0X21wZHBhcnNlcl9idWlsZF9VUkxfZnJvbV90ZW1wbGF0ZSAoY29uc3QgZ2NoYXIgKiB1cmxfdGVtcGxhdGUsCiAgICAgY29uc3QgZ2NoYXIgKiBpZCwgZ3VpbnQgbnVtYmVyLCBndWludCBiYW5kd2lkdGgsIGd1aW50NjQgdGltZSkKQEAgLTI4NzYsNyArMzE2Nyw2IEBACiAgIGdjaGFyICoqdG9rZW5zLCAqdG9rZW4sICpyZXQ7CiAgIGNvbnN0IGdjaGFyICpmb3JtYXQ7CiAgIGdpbnQgaSwgbnVtX3Rva2VuczsKLSAgZ2Jvb2xlYW4gbGFzdF90b2tlbl9wYXIgPSBUUlVFOyAgICAgICAvKiBsYXN0IHRva2VuIHdhcyBhIHBhcmFtZXRlciAqLwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh1cmxfdGVtcGxhdGUgIT0gTlVMTCwgTlVMTCk7CiAgIHRva2VucyA9IGdfc3Ryc3BsaXRfc2V0ICh1cmxfdGVtcGxhdGUsICIkIiwgLTEpOwpAQCAtMjg4NiwxNCArMzE3NiwzNiBAQAogICB9CiAgIG51bV90b2tlbnMgPSBnX3N0cnZfbGVuZ3RoICh0b2tlbnMpOwogCisgIC8qCisgICAqIGVhY2ggaWRlbnRpZmllciBpcyBndWFyZGVkIGJ5IDIgJCwgd2hpY2ggbWVhbnMgdGhhdCB3ZSBtdXN0IGhhdmUgYW4gb2RkIG51bWJlciBvZiB0b2tlbnMKKyAgICogQW4gZXZlbiBudW1iZXIgb2YgdG9rZW5zIG1lYW5zIHRoZSBzdHJpbmcgaXMgbm90IHZhbGlkLgorICAgKi8KKyAgaWYgKChudW1fdG9rZW5zICYgMSkgPT0gMCkgeworICAgIEdTVF9FUlJPUiAoIkludmFsaWQgbnVtYmVyIG9mIHRva2VucyAoJWQpLiB1cmxfdGVtcGxhdGUgaXMgJyVzJyIsCisgICAgICAgIG51bV90b2tlbnMsIHVybF90ZW1wbGF0ZSk7CisgICAgZ19zdHJmcmVldiAodG9rZW5zKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCiAgIGZvciAoaSA9IDA7IGkgPCBudW1fdG9rZW5zOyBpKyspIHsKICAgICB0b2tlbiA9IHRva2Vuc1tpXTsKICAgICBmb3JtYXQgPSBkZWZhdWx0X2Zvcm1hdDsKIAorICAgIC8qIHRoZSB0b2tlbnMgdG8gcmVwbGFjZSBtdXN0IGJlIHByb3ZpZGVkIGJldHdlZW4gJCBjaGFyYWN0ZXJzLCBlZyAkdG9rZW4kCisgICAgICogRm9yIGEgc3RyaW5nIGxpa2UgdG9rZW4wJHRva2VuMSR0b2tlbjIkdG9rZW4zJHRva2VuNCwgb25seSB0aGUgb2RkIG51bWJlcgorICAgICAqIHRva2VucyAoMSwzLC4uLikgbXVzdCBiZSBwYXJzZWQuCisgICAgICoKKyAgICAgKiBTa2lwIGV2ZW4gdG9rZW5zCisgICAgICovCisgICAgaWYgKChpICYgMSkgPT0gMCkKKyAgICAgIGNvbnRpbnVlOworCiAgICAgaWYgKCFnX3N0cmNtcDAgKHRva2VuLCAiUmVwcmVzZW50YXRpb25JRCIpKSB7CisgICAgICBpZiAoIWdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKGlkKSkKKyAgICAgICAgZ290byBpbnZhbGlkX3JlcHJlc2VudGF0aW9uX2lkOworCiAgICAgICB0b2tlbnNbaV0gPSBnX3N0cmR1cF9wcmludGYgKCIlcyIsIGlkKTsKICAgICAgIGdfZnJlZSAodG9rZW4pOwotICAgICAgbGFzdF90b2tlbl9wYXIgPSBUUlVFOwogICAgIH0gZWxzZSBpZiAoIXN0cm5jbXAgKHRva2VuLCAiTnVtYmVyIiwgNikpIHsKICAgICAgIGlmIChzdHJsZW4gKHRva2VuKSA+IDYpIHsKICAgICAgICAgZm9ybWF0ID0gdG9rZW4gKyA2OyAgICAgLyogZm9ybWF0IHRhZyAqLwpAQCAtMjkwMyw3ICszMjE1LDYgQEAKIAogICAgICAgdG9rZW5zW2ldID0gZ19zdHJkdXBfcHJpbnRmIChmb3JtYXQsIG51bWJlcik7CiAgICAgICBnX2ZyZWUgKHRva2VuKTsKLSAgICAgIGxhc3RfdG9rZW5fcGFyID0gVFJVRTsKICAgICB9IGVsc2UgaWYgKCFzdHJuY21wICh0b2tlbiwgIkJhbmR3aWR0aCIsIDkpKSB7CiAgICAgICBpZiAoc3RybGVuICh0b2tlbikgPiA5KSB7CiAgICAgICAgIGZvcm1hdCA9IHRva2VuICsgOTsgICAgIC8qIGZvcm1hdCB0YWcgKi8KQEAgLTI5MTMsNyArMzIyNCw2IEBACiAKICAgICAgIHRva2Vuc1tpXSA9IGdfc3RyZHVwX3ByaW50ZiAoZm9ybWF0LCBiYW5kd2lkdGgpOwogICAgICAgZ19mcmVlICh0b2tlbik7Ci0gICAgICBsYXN0X3Rva2VuX3BhciA9IFRSVUU7CiAgICAgfSBlbHNlIGlmICghc3RybmNtcCAodG9rZW4sICJUaW1lIiwgNCkpIHsKICAgICAgIGdjaGFyICpwcm9tb3RlZF9mb3JtYXQ7CiAKQEAgLTI5MjcsMTcgKzMyMzcsMTYgQEAKICAgICAgIHRva2Vuc1tpXSA9IGdfc3RyZHVwX3ByaW50ZiAocHJvbW90ZWRfZm9ybWF0LCB0aW1lKTsKICAgICAgIGdfZnJlZSAocHJvbW90ZWRfZm9ybWF0KTsKICAgICAgIGdfZnJlZSAodG9rZW4pOwotICAgICAgbGFzdF90b2tlbl9wYXIgPSBUUlVFOwogICAgIH0gZWxzZSBpZiAoIWdfc3RyY21wMCAodG9rZW4sICIiKSkgewotICAgICAgaWYgKCFsYXN0X3Rva2VuX3BhcikgewotICAgICAgICB0b2tlbnNbaV0gPSBnX3N0cmR1cF9wcmludGYgKCIlcyIsICIkIik7Ci0gICAgICAgIGdfZnJlZSAodG9rZW4pOwotICAgICAgICBsYXN0X3Rva2VuX3BhciA9IFRSVUU7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBsYXN0X3Rva2VuX3BhciA9IEZBTFNFOwotICAgICAgfQorICAgICAgdG9rZW5zW2ldID0gZ19zdHJkdXBfcHJpbnRmICgiJXMiLCAiJCIpOworICAgICAgZ19mcmVlICh0b2tlbik7CiAgICAgfSBlbHNlIHsKLSAgICAgIGxhc3RfdG9rZW5fcGFyID0gRkFMU0U7CisgICAgICAvKiB1bmV4cGVjdGVkIGlkZW50aWZpZXIgZm91bmQgYmV0d2VlbiAkIHNpZ25zCisgICAgICAgKgorICAgICAgICogIklmIHRoZSBVUkwgY29udGFpbnMgdW5lc2NhcGVkICQgc3ltYm9scyB3aGljaCBkbyBub3QgZW5jbG9zZSBhIHZhbGlkCisgICAgICAgKiBpZGVudGlmaWVyIHRoZW4gdGhlIHJlc3VsdCBvZiBVUkwgZm9ybWF0aW9uIGlzIHVuZGVmaW5lZCIKKyAgICAgICAqLworICAgICAgZ290byBpbnZhbGlkX2Zvcm1hdDsKICAgICB9CiAgIH0KIApAQCAtMjk1NSw2ICszMjY0LDE2IEBACiAKICAgICByZXR1cm4gTlVMTDsKICAgfQoraW52YWxpZF9yZXByZXNlbnRhdGlvbl9pZDoKKyAgeworICAgIEdTVF9FUlJPUgorICAgICAgICAoIlJlcHJlc2VudGF0aW9uIElEIHN0cmluZyAnJXMnIGhhcyBjaGFyYWN0ZXJzIGludmFsaWQgaW4gYW4gUkZDIDE3MzggVVJMIiwKKyAgICAgICAgaWQpOworCisgICAgZ19zdHJmcmVldiAodG9rZW5zKTsKKworICAgIHJldHVybiBOVUxMOworICB9CiB9CiAKIGd1aW50CkBAIC0zMDUzLDggKzMzNzIsNyBAQAogICAgIGdzdF91cmlfdW5yZWYgKGJhc2UpOwogCiAgICAgaWYgKHJldCAmJiBxdWVyeSkgewotICAgICAgaWYgKCpxdWVyeSkKLSAgICAgICAgZ19mcmVlICgqcXVlcnkpOworICAgICAgZ19mcmVlICgqcXVlcnkpOwogICAgICAgKnF1ZXJ5ID0gZ3N0X3VyaV9nZXRfcXVlcnlfc3RyaW5nIChyZXQpOwogICAgICAgaWYgKCpxdWVyeSkgewogICAgICAgICByZXQgPSBnc3RfdXJpX21ha2Vfd3JpdGFibGUgKHJldCk7CkBAIC0zMTIwLDcgKzM0MzgsNyBAQAogCiBzdGF0aWMgR3N0Q2xvY2tUaW1lCiBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudF9kdXJhdGlvbiAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAotICAgIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgZ2ludDY0ICogc2NhbGVfZHVyKQorICAgIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgZ3VpbnQ2NCAqIHNjYWxlX2R1cikKIHsKICAgR3N0U3RyZWFtUGVyaW9kICpzdHJlYW1fcGVyaW9kOwogICBHc3RNdWx0U2VnbWVudEJhc2VUeXBlICpiYXNlID0gTlVMTDsKQEAgLTMyMTYsNyArMzUzNCwxMSBAQAogc3RhdGljIHZvaWQKIGdzdF9tcGRfY2xpZW50X2NoZWNrX3Byb2ZpbGVzIChHc3RNcGRDbGllbnQgKiBjbGllbnQpCiB7Ci0gIEdTVF9ERUJVRyAoIlByb2ZpbGVzOiAlcyIsIGNsaWVudC0+bXBkX25vZGUtPnByb2ZpbGVzKTsKKyAgR1NUX0RFQlVHICgiUHJvZmlsZXM6ICVzIiwKKyAgICAgIGNsaWVudC0+bXBkX25vZGUtPnByb2ZpbGVzID8gY2xpZW50LT5tcGRfbm9kZS0+cHJvZmlsZXMgOiAiPG5vbmU+Iik7CisKKyAgaWYgKCFjbGllbnQtPm1wZF9ub2RlLT5wcm9maWxlcykKKyAgICByZXR1cm47CiAKICAgaWYgKGdfc3Ryc3RyX2xlbiAoY2xpZW50LT5tcGRfbm9kZS0+cHJvZmlsZXMsIC0xLAogICAgICAgICAgICJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTEiKSkgewpAQCAtMzM5MSw2ICszNzEzLDggQEAKIGdib29sZWFuCiBnc3RfbXBkX3BhcnNlIChHc3RNcGRDbGllbnQgKiBjbGllbnQsIGNvbnN0IGdjaGFyICogZGF0YSwgZ2ludCBzaXplKQogeworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKwogICBpZiAoZGF0YSkgewogICAgIHhtbERvY1B0ciBkb2M7CiAgICAgeG1sTm9kZSAqcm9vdF9lbGVtZW50ID0gTlVMTDsKQEAgLTM0MDksNyArMzczMyw3IEBACiAgICAgZG9jID0geG1sUmVhZE1lbW9yeSAoZGF0YSwgc2l6ZSwgIm5vbmFtZS54bWwiLCBOVUxMLCBYTUxfUEFSU0VfTk9ORVQpOwogICAgIGlmIChkb2MgPT0gTlVMTCkgewogICAgICAgR1NUX0VSUk9SICgiZmFpbGVkIHRvIHBhcnNlIHRoZSBNUEQgZmlsZSIpOwotICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgcmV0ID0gRkFMU0U7CiAgICAgfSBlbHNlIHsKICAgICAgIC8qIGdldCB0aGUgcm9vdCBlbGVtZW50IG5vZGUgKi8KICAgICAgIHJvb3RfZWxlbWVudCA9IHhtbERvY0dldFJvb3RFbGVtZW50IChkb2MpOwpAQCAtMzQxOCwyMyArMzc0MiwyNCBAQAogICAgICAgICAgIHx8IHhtbFN0cmNtcCAocm9vdF9lbGVtZW50LT5uYW1lLCAoeG1sQ2hhciAqKSAiTVBEIikgIT0gMCkgewogICAgICAgICBHU1RfRVJST1IKICAgICAgICAgICAgICgiY2FuIG5vdCBmaW5kIHRoZSByb290IGVsZW1lbnQgTVBELCBmYWlsZWQgdG8gcGFyc2UgdGhlIE1QRCBmaWxlIik7CisgICAgICAgIHJldCA9IEZBTFNFOyAgICAgICAgICAgIC8qIHVzZWQgdG8gcmV0dXJuIFRSVUUgYmVmb3JlLCBidXQgdGhpcyBzZWVtcyB3cm9uZyAqLwogICAgICAgfSBlbHNlIHsKICAgICAgICAgLyogbm93IHdlIGNhbiBwYXJzZSB0aGUgTVBEIHJvb3Qgbm9kZSBhbmQgYWxsIGNoaWxkcmVuIG5vZGVzLCByZWN1cnNpdmVseSAqLwotICAgICAgICBnc3RfbXBkcGFyc2VyX3BhcnNlX3Jvb3Rfbm9kZSAoJmNsaWVudC0+bXBkX25vZGUsIHJvb3RfZWxlbWVudCk7CisgICAgICAgIHJldCA9IGdzdF9tcGRwYXJzZXJfcGFyc2Vfcm9vdF9ub2RlICgmY2xpZW50LT5tcGRfbm9kZSwgcm9vdF9lbGVtZW50KTsKICAgICAgIH0KICAgICAgIC8qIGZyZWUgdGhlIGRvY3VtZW50ICovCiAgICAgICB4bWxGcmVlRG9jIChkb2MpOwogICAgIH0KIAotICAgIGdzdF9tcGRfY2xpZW50X2NoZWNrX3Byb2ZpbGVzIChjbGllbnQpOworICAgIGlmIChyZXQpIHsKKyAgICAgIGdzdF9tcGRfY2xpZW50X2NoZWNrX3Byb2ZpbGVzIChjbGllbnQpOwogCi0gICAgaWYgKCFnc3RfbXBkX2NsaWVudF9mZXRjaF9vbl9sb2FkX2V4dGVybmFsX3Jlc291cmNlcyAoY2xpZW50KSkKLSAgICAgIHJldHVybiBGQUxTRTsKLQotICAgIHJldHVybiBUUlVFOworICAgICAgaWYgKCFnc3RfbXBkX2NsaWVudF9mZXRjaF9vbl9sb2FkX2V4dGVybmFsX3Jlc291cmNlcyAoY2xpZW50KSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KICAgfQogCi0gIHJldHVybiBGQUxTRTsKKyAgcmV0dXJuIHJldDsKIH0KIAogY29uc3QgZ2NoYXIgKgpAQCAtMzQ3Miw4OSArMzc5Nyw5IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X21wZHBhcnNlcl9maW5kX3NlZ21lbnRfYnlfaW5kZXggKEdzdE1wZENsaWVudCAqIGNsaWVudCwKLSAgICBHUHRyQXJyYXkgKiBzZWdtZW50cywgZ2ludCBpbmRleCwgR3N0TWVkaWFTZWdtZW50ICogcmVzdWx0KQotewotICBnaW50IGk7Ci0gIGZvciAoaSA9IDA7IGkgPCBzZWdtZW50cy0+bGVuOyBpKyspIHsKLSAgICBHc3RNZWRpYVNlZ21lbnQgKnM7Ci0gICAgZ2ludCByZXBlYXQ7Ci0KLSAgICBzID0gZ19wdHJfYXJyYXlfaW5kZXggKHNlZ21lbnRzLCBpKTsKLSAgICBpZiAocy0+cmVwZWF0ID49IDApIHsKLSAgICAgIHJlcGVhdCA9IHMtPnJlcGVhdDsKLSAgICB9IGVsc2UgewotICAgICAgR3N0Q2xvY2tUaW1lIHN0YXJ0ID0gcy0+c3RhcnQ7Ci0gICAgICBHc3RDbG9ja1RpbWUgZW5kID0KLSAgICAgICAgICBnc3RfbXBkcGFyc2VyX2dldF9zZWdtZW50X2VuZF90aW1lIChjbGllbnQsIHNlZ21lbnRzLCBzLCBpKTsKLSAgICAgIHJlcGVhdCA9IChndWludCkgKGVuZCAtIHN0YXJ0KSAvIHMtPmR1cmF0aW9uOwotICAgIH0KLSAgICBpZiAocy0+bnVtYmVyICsgcmVwZWF0ID49IGluZGV4KSB7Ci0gICAgICAvKiBpdCBpcyBpbiB0aGlzIHNlZ21lbnQgKi8KLSAgICAgIHJlc3VsdC0+U2VnbWVudFVSTCA9IHMtPlNlZ21lbnRVUkw7Ci0gICAgICByZXN1bHQtPm51bWJlciA9IGluZGV4OwotICAgICAgcmVzdWx0LT5zY2FsZV9zdGFydCA9Ci0gICAgICAgICAgcy0+c2NhbGVfc3RhcnQgKyAoaW5kZXggLSBzLT5udW1iZXIpICogcy0+c2NhbGVfZHVyYXRpb247Ci0gICAgICByZXN1bHQtPnNjYWxlX2R1cmF0aW9uID0gcy0+c2NhbGVfZHVyYXRpb247Ci0gICAgICByZXN1bHQtPnN0YXJ0ID0gcy0+c3RhcnQgKyAoaW5kZXggLSBzLT5udW1iZXIpICogcy0+ZHVyYXRpb247Ci0gICAgICByZXN1bHQtPmR1cmF0aW9uID0gcy0+ZHVyYXRpb247Ci0gICAgICByZXR1cm4gVFJVRTsKLSAgICB9Ci0gIH0KLQotICByZXR1cm4gRkFMU0U7Ci19Ci0KLWdib29sZWFuCi1nc3RfbXBkcGFyc2VyX2dldF9jaHVua19ieV9pbmRleCAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBndWludCBpbmRleFN0cmVhbSwKLSAgICBndWludCBpbmRleENodW5rLCBHc3RNZWRpYVNlZ21lbnQgKiBzZWdtZW50KQotewotICBHc3RBY3RpdmVTdHJlYW0gKnN0cmVhbTsKLQotICAvKiBzZWxlY3Qgc3RyZWFtICovCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbGllbnQgIT0gTlVMTCwgRkFMU0UpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2xpZW50LT5hY3RpdmVfc3RyZWFtcyAhPSBOVUxMLCBGQUxTRSk7Ci0gIHN0cmVhbSA9IGdfbGlzdF9udGhfZGF0YSAoY2xpZW50LT5hY3RpdmVfc3RyZWFtcywgaW5kZXhTdHJlYW0pOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3RyZWFtICE9IE5VTEwsIEZBTFNFKTsKLQotICBpbmRleENodW5rICs9IDE7Ci0KLSAgaWYgKHN0cmVhbS0+c2VnbWVudHMpIHsKLSAgICByZXR1cm4gZ3N0X21wZHBhcnNlcl9maW5kX3NlZ21lbnRfYnlfaW5kZXggKGNsaWVudCwgc3RyZWFtLT5zZWdtZW50cywKLSAgICAgICAgaW5kZXhDaHVuaywgc2VnbWVudCk7Ci0gIH0gZWxzZSB7Ci0gICAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uOwotICAgIEdzdFN0cmVhbVBlcmlvZCAqc3RyZWFtX3BlcmlvZDsKLSAgICBnaW50NjQgc2NhbGVfZHVyOwotCi0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZS0+TXVsdFNlZ0Jhc2VUeXBlLT4KLSAgICAgICAgU2VnbWVudFRpbWVsaW5lID09IE5VTEwsIEZBTFNFKTsKLSAgICAvKiBzZWdtZW50IHRlbXBsYXRlIGdlbmVyYXRvciAqLwotICAgIGR1cmF0aW9uID0gZ3N0X21wZF9jbGllbnRfZ2V0X3NlZ21lbnRfZHVyYXRpb24gKGNsaWVudCwgc3RyZWFtLCAmc2NhbGVfZHVyKTsKLSAgICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChkdXJhdGlvbikpCi0gICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICBzdHJlYW1fcGVyaW9kID0gZ3N0X21wZHBhcnNlcl9nZXRfc3RyZWFtX3BlcmlvZCAoY2xpZW50KTsKLQotICAgIHNlZ21lbnQtPm51bWJlciA9IGluZGV4Q2h1bmsKLSAgICAgICAgKyBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUtPk11bHRTZWdCYXNlVHlwZS0+c3RhcnROdW1iZXI7Ci0gICAgc2VnbWVudC0+c2NhbGVfc3RhcnQgPSBpbmRleENodW5rICogc2NhbGVfZHVyOwotICAgIHNlZ21lbnQtPnNjYWxlX2R1cmF0aW9uID0gc2NhbGVfZHVyOwotICAgIHNlZ21lbnQtPnN0YXJ0ID0gZHVyYXRpb24gKiBpbmRleENodW5rOwotICAgIHNlZ21lbnQtPmR1cmF0aW9uID0gZHVyYXRpb247Ci0gICAgc2VnbWVudC0+U2VnbWVudFVSTCA9IE5VTEw7Ci0KLSAgICBpZiAoc2VnbWVudC0+c3RhcnQgPj0gc3RyZWFtX3BlcmlvZC0+ZHVyYXRpb24pIHsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgogZ3N0X21wZF9jbGllbnRfYWRkX21lZGlhX3NlZ21lbnQgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwKICAgICBHc3RTZWdtZW50VVJMTm9kZSAqIHVybF9ub2RlLCBndWludCBudW1iZXIsIGdpbnQgcmVwZWF0LAotICAgIGdpbnQ2NCBzY2FsZV9zdGFydCwgZ2ludDY0IHNjYWxlX2R1cmF0aW9uLAorICAgIGd1aW50NjQgc2NhbGVfc3RhcnQsIGd1aW50NjQgc2NhbGVfZHVyYXRpb24sCiAgICAgR3N0Q2xvY2tUaW1lIHN0YXJ0LCBHc3RDbG9ja1RpbWUgZHVyYXRpb24pCiB7CiAgIEdzdE1lZGlhU2VnbWVudCAqbWVkaWFfc2VnbWVudDsKQEAgLTM1ODAsNiArMzgyNSwzNCBAQAogICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIHZvaWQKK2dzdF9tcGRfY2xpZW50X3N0cmVhbV91cGRhdGVfcHJlc2VudGF0aW9uX3RpbWVfb2Zmc2V0IChHc3RNcGRDbGllbnQgKiBjbGllbnQsCisgICAgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQoreworICBHc3RTZWdtZW50QmFzZVR5cGUgKnNlZ2Jhc2UgPSBOVUxMOworCisgIC8qIEZpbmQgdGhlIHVzZWQgc2VnYmFzZSAqLworICBpZiAoc3RyZWFtLT5jdXJfc2VnbWVudF9saXN0KSB7CisgICAgc2VnYmFzZSA9IHN0cmVhbS0+Y3VyX3NlZ21lbnRfbGlzdC0+TXVsdFNlZ0Jhc2VUeXBlLT5TZWdCYXNlVHlwZTsKKyAgfSBlbHNlIGlmIChzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUpIHsKKyAgICBzZWdiYXNlID0gc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5NdWx0U2VnQmFzZVR5cGUtPlNlZ0Jhc2VUeXBlOworICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX3NlZ21lbnRfYmFzZSkgeworICAgIHNlZ2Jhc2UgPSBzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2U7CisgIH0KKworICBpZiAoc2VnYmFzZSkgeworICAgIC8qIEF2b2lkIG92ZXJmbG93cyAqLworICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uVGltZU9mZnNldCA9CisgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoc2VnYmFzZS0+cHJlc2VudGF0aW9uVGltZU9mZnNldCwgR1NUX1NFQ09ORCwKKyAgICAgICAgc2VnYmFzZS0+dGltZXNjYWxlKTsKKyAgfSBlbHNlIHsKKyAgICBzdHJlYW0tPnByZXNlbnRhdGlvblRpbWVPZmZzZXQgPSAwOworICB9CisKKyAgR1NUX0xPRyAoIlNldHRpbmcgc3RyZWFtJ3MgcHJlc2VudGF0aW9uIHRpbWUgb2Zmc2V0IHRvICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+cHJlc2VudGF0aW9uVGltZU9mZnNldCkpOworfQorCiBnYm9vbGVhbgogZ3N0X21wZF9jbGllbnRfc2V0dXBfcmVwcmVzZW50YXRpb24gKEdzdE1wZENsaWVudCAqIGNsaWVudCwKICAgICBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIEdzdFJlcHJlc2VudGF0aW9uTm9kZSAqIHJlcHJlc2VudGF0aW9uKQpAQCAtMzY4MSw2ICszOTU0LDEyIEBACiAgICAgICAgICAgICBzdGFydF90aW1lID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlIChTLT50LCBHU1RfU0VDT05ELCB0aW1lc2NhbGUpOwogICAgICAgICAgIH0KIAorICAgICAgICAgIGlmICghU2VnbWVudFVSTCkgeworICAgICAgICAgICAgR1NUX1dBUk5JTkcKKyAgICAgICAgICAgICAgICAoIlNlZ21lbnRUaW1lbGluZSBkb2VzIG5vdCBoYXZlIGEgbWF0Y2hpbmcgU2VnbWVudFVSTCwgYWJvcnRpbmcuLi4iKTsKKyAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICB9CisKICAgICAgICAgICBpZiAoIWdzdF9tcGRfY2xpZW50X2FkZF9tZWRpYV9zZWdtZW50IChzdHJlYW0sIFNlZ21lbnRVUkwtPmRhdGEsIGksCiAgICAgICAgICAgICAgICAgICBTLT5yLCBzdGFydCwgUy0+ZCwgc3RhcnRfdGltZSwgZHVyYXRpb24pKSB7CiAgICAgICAgICAgICByZXR1cm4gRkFMU0U7CkBAIC0zNjkxLDcgKzM5NzAsNyBAQAogICAgICAgICAgIFNlZ21lbnRVUkwgPSBnX2xpc3RfbmV4dCAoU2VnbWVudFVSTCk7CiAgICAgICAgIH0KICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdpbnQ2NCBzY2FsZV9kdXI7CisgICAgICAgIGd1aW50NjQgc2NhbGVfZHVyOwogCiAgICAgICAgIGR1cmF0aW9uID0KICAgICAgICAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9zZWdtZW50X2R1cmF0aW9uIChjbGllbnQsIHN0cmVhbSwgJnNjYWxlX2R1cik7CkBAIC0zNzM5LDEzICs0MDE4LDYgQEAKICAgICAgIEdTVF9MT0cgKCJCdWlsZGluZyBtZWRpYSBzZWdtZW50IGxpc3QgdXNpbmcgdGhpcyB0ZW1wbGF0ZTogJXMiLAogICAgICAgICAgIHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZS0+bWVkaWEpOwogCi0gICAgICAvKiBBdm9pZCBvdmVyZmxvd3MgKi8KLSAgICAgIHN0cmVhbS0+cHJlc2VudGF0aW9uVGltZU9mZnNldCA9Ci0gICAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChtdWx0X3NlZy0+U2VnQmFzZVR5cGUtPnByZXNlbnRhdGlvblRpbWVPZmZzZXQsCi0gICAgICAgICAgR1NUX1NFQ09ORCwgbXVsdF9zZWctPlNlZ0Jhc2VUeXBlLT50aW1lc2NhbGUpOwotICAgICAgR1NUX0xPRyAoIlNldHRpbmcgc3RyZWFtJ3MgcHJlc2VudGF0aW9uIHRpbWUgb2Zmc2V0IHRvICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICBHU1RfVElNRV9BUkdTIChzdHJlYW0tPnByZXNlbnRhdGlvblRpbWVPZmZzZXQpKTsKLQogICAgICAgaWYgKG11bHRfc2VnLT5TZWdtZW50VGltZWxpbmUpIHsKICAgICAgICAgR3N0U2VnbWVudFRpbWVsaW5lTm9kZSAqdGltZWxpbmU7CiAgICAgICAgIEdzdFNOb2RlICpTOwpAQCAtMzgwMSw2ICs0MDczLDggQEAKICAgc3RyZWFtLT5iYXNlVVJMID0KICAgICAgIGdzdF9tcGRwYXJzZXJfcGFyc2VfYmFzZVVSTCAoY2xpZW50LCBzdHJlYW0sICZzdHJlYW0tPnF1ZXJ5VVJMKTsKIAorICBnc3RfbXBkX2NsaWVudF9zdHJlYW1fdXBkYXRlX3ByZXNlbnRhdGlvbl90aW1lX29mZnNldCAoY2xpZW50LCBzdHJlYW0pOworCiAgIHJldHVybiBUUlVFOwogfQogCkBAIC0zOTQzLDYgKzQyMTcsMTMgQEAKICAgaWR4ID0gMDsKICAgc3RhcnQgPSAwOwogICBkdXJhdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisKKyAgaWYgKGNsaWVudC0+bXBkX25vZGUtPm1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24gPD0gMCAmJgorICAgICAgY2xpZW50LT5tcGRfbm9kZS0+bWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbiAhPSAtMSkgeworICAgIC8qIEludmFsaWQgTVBEIGZpbGU6IE1QRCBkdXJhdGlvbiBpcyBuZWdhdGl2ZSBvciB6ZXJvICovCisgICAgZ290byBzeW50YXhfZXJyb3I7CisgIH0KKwogICBmb3IgKGxpc3QgPSBjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzOyBsaXN0OyAvKiBleHBsaWNpdGx5IGFkdmFuY2VkIGJlbG93ICovICkgewogICAgIEdzdFBlcmlvZE5vZGUgKnBlcmlvZF9ub2RlID0gbGlzdC0+ZGF0YTsKICAgICBHc3RQZXJpb2ROb2RlICpuZXh0X3BlcmlvZF9ub2RlID0gTlVMTDsKQEAgLTQwNjQsNiArNDM0NSwxMCBAQAogICAgICAgICB9CiAgICAgICAgIGR1cmF0aW9uID0gbmV4dF9wZXJpb2Rfbm9kZS0+c3RhcnQgKiBHU1RfTVNFQ09ORCAtIHN0YXJ0OwogICAgICAgfSBlbHNlIGlmIChwZXJpb2Rfbm9kZS0+ZHVyYXRpb24gIT0gLTEpIHsKKyAgICAgICAgaWYgKHBlcmlvZF9ub2RlLT5kdXJhdGlvbiA8PSAwKSB7CisgICAgICAgICAgLyogSW52YWxpZCBNUEQgZmlsZTogZHVyYXRpb24gd291bGQgYmUgbmVnYXRpdmUgb3IgemVybyAqLworICAgICAgICAgIGdvdG8gc3ludGF4X2Vycm9yOworICAgICAgICB9CiAgICAgICAgIGR1cmF0aW9uID0gcGVyaW9kX25vZGUtPmR1cmF0aW9uICogR1NUX01TRUNPTkQ7CiAgICAgICB9IGVsc2UgaWYgKGNsaWVudC0+bXBkX25vZGUtPnR5cGUgPT0gR1NUX01QRF9GSUxFX1RZUEVfRFlOQU1JQykgewogICAgICAgICAvKiBtaWdodCBiZSBhIGxpdmUgZmlsZSwgaWdub3JlIHVuc3BlY2lmaWVkIGR1cmF0aW9uICovCkBAIC00MzY3LDcgKzQ2NTIsOCBAQAogCiBnYm9vbGVhbgogZ3N0X21wZF9jbGllbnRfc3RyZWFtX3NlZWsgKEdzdE1wZENsaWVudCAqIGNsaWVudCwgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLAotICAgIEdzdENsb2NrVGltZSB0cykKKyAgICBnYm9vbGVhbiBmb3J3YXJkLCBHc3RTZWVrRmxhZ3MgZmxhZ3MsIEdzdENsb2NrVGltZSB0cywKKyAgICBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cykKIHsKICAgZ2ludCBpbmRleCA9IDA7CiAgIGdpbnQgcmVwZWF0X2luZGV4ID0gMDsKQEAgLTQzODQsMTggKzQ2NzAsNDggQEAKICAgICAgICAgICBzdHJlYW0tPnNlZ21lbnRzLT5sZW4pOwogICAgICAgaW5fc2VnbWVudCA9IEZBTFNFOwogICAgICAgaWYgKHNlZ21lbnQtPnN0YXJ0IDw9IHRzKSB7CisgICAgICAgIEdzdENsb2NrVGltZSBlbmRfdGltZTsKKwogICAgICAgICBpZiAoc2VnbWVudC0+cmVwZWF0ID49IDApIHsKLSAgICAgICAgICBpbl9zZWdtZW50ID0KLSAgICAgICAgICAgICAgdHMgPCBzZWdtZW50LT5zdGFydCArIChzZWdtZW50LT5yZXBlYXQgKyAxKSAqIHNlZ21lbnQtPmR1cmF0aW9uOworICAgICAgICAgIGVuZF90aW1lID0gc2VnbWVudC0+c3RhcnQgKyAoc2VnbWVudC0+cmVwZWF0ICsgMSkgKiBzZWdtZW50LT5kdXJhdGlvbjsKICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBHc3RDbG9ja1RpbWUgZW5kID0KKyAgICAgICAgICBlbmRfdGltZSA9CiAgICAgICAgICAgICAgIGdzdF9tcGRwYXJzZXJfZ2V0X3NlZ21lbnRfZW5kX3RpbWUgKGNsaWVudCwgc3RyZWFtLT5zZWdtZW50cywKICAgICAgICAgICAgICAgc2VnbWVudCwgaW5kZXgpOwotICAgICAgICAgIGluX3NlZ21lbnQgPSB0cyA8IGVuZDsKICAgICAgICAgfQorCisgICAgICAgIC8qIGF2b2lkIGRvd25sb2FkaW5nIGFub3RoZXIgZnJhZ21lbnQganVzdCBmb3IgMW5zIGluIHJldmVyc2UgbW9kZSAqLworICAgICAgICBpZiAoZm9yd2FyZCkKKyAgICAgICAgICBpbl9zZWdtZW50ID0gdHMgPCBlbmRfdGltZTsKKyAgICAgICAgZWxzZQorICAgICAgICAgIGluX3NlZ21lbnQgPSB0cyA8PSBlbmRfdGltZTsKKwogICAgICAgICBpZiAoaW5fc2VnbWVudCkgewogICAgICAgICAgIHNlbGVjdGVkQ2h1bmsgPSBzZWdtZW50OwogICAgICAgICAgIHJlcGVhdF9pbmRleCA9ICh0cyAtIHNlZ21lbnQtPnN0YXJ0KSAvIHNlZ21lbnQtPmR1cmF0aW9uOworCisgICAgICAgICAgLyogQXQgdGhlIGVuZCBvZiBhIHNlZ21lbnQgaW4gcmV2ZXJzZSBtb2RlLCBzdGFydCBmcm9tIHRoZSBwcmV2aW91cyBmcmFnbWVudCAqLworICAgICAgICAgIGlmICghZm9yd2FyZCAmJiByZXBlYXRfaW5kZXggPiAwCisgICAgICAgICAgICAgICYmICgodHMgLSBzZWdtZW50LT5zdGFydCkgJSBzZWdtZW50LT5kdXJhdGlvbiA9PSAwKSkKKyAgICAgICAgICAgIHJlcGVhdF9pbmRleC0tOworCisgICAgICAgICAgaWYgKChmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUKSA9PQorICAgICAgICAgICAgICBHU1RfU0VFS19GTEFHX1NOQVBfTkVBUkVTVCkgeworICAgICAgICAgICAgLyogRklYTUUgaW1wbGVtZW50IHRoaXMgKi8KKyAgICAgICAgICB9IGVsc2UgaWYgKChmb3J3YXJkICYmIGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSKSB8fAorICAgICAgICAgICAgICAoIWZvcndhcmQgJiYgZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFKSkgeworCisgICAgICAgICAgICBpZiAocmVwZWF0X2luZGV4ICsgMSA8IHNlZ21lbnQtPnJlcGVhdCkgeworICAgICAgICAgICAgICByZXBlYXRfaW5kZXgrKzsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIHJlcGVhdF9pbmRleCA9IDA7CisgICAgICAgICAgICAgIGlmIChpbmRleCArIDEgPj0gc3RyZWFtLT5zZWdtZW50cy0+bGVuKSB7CisgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaHVuayA9IE5VTEw7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgc2VsZWN0ZWRDaHVuayA9IGdfcHRyX2FycmF5X2luZGV4IChzdHJlYW0tPnNlZ21lbnRzLCArK2luZGV4KTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgIH0KICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQpAQCAtNDQwNyw2ICs0NzIzLDkgQEAKICAgICAgIEdTVF9ERUJVRyAoIlNlZWsgdG8gYWZ0ZXIgbGFzdCBzZWdtZW50Iik7CiAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQorCisgICAgaWYgKGZpbmFsX3RzKQorICAgICAgKmZpbmFsX3RzID0gc2VsZWN0ZWRDaHVuay0+c3RhcnQgKyBzZWxlY3RlZENodW5rLT5kdXJhdGlvbiAqIHJlcGVhdF9pbmRleDsKICAgfSBlbHNlIHsKICAgICBHc3RDbG9ja1RpbWUgZHVyYXRpb24gPQogICAgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudF9kdXJhdGlvbiAoY2xpZW50LCBzdHJlYW0sIE5VTEwpOwpAQCAtNDQyNSwxMiArNDc0NCwyMiBAQAogICAgICAgdHMgPSAwOwogCiAgICAgaW5kZXggPSB0cyAvIGR1cmF0aW9uOworCisgICAgaWYgKChmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUKSA9PSBHU1RfU0VFS19GTEFHX1NOQVBfTkVBUkVTVCkgeworICAgICAgLyogRklYTUUgaW1wbGVtZW50IHRoaXMgKi8KKyAgICB9IGVsc2UgaWYgKChmb3J3YXJkICYmIGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSKSB8fAorICAgICAgICAoIWZvcndhcmQgJiYgZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFKSkgeworICAgICAgaW5kZXgrKzsKKyAgICB9CisKICAgICBpZiAoc2VnbWVudHNfY291bnQgPiAwICYmIGluZGV4ID49IHNlZ21lbnRzX2NvdW50KSB7CiAgICAgICBzdHJlYW0tPnNlZ21lbnRfaW5kZXggPSBzZWdtZW50c19jb3VudDsKICAgICAgIHN0cmVhbS0+c2VnbWVudF9yZXBlYXRfaW5kZXggPSAwOwogICAgICAgR1NUX0RFQlVHICgiU2VlayB0byBhZnRlciBsYXN0IHNlZ21lbnQiKTsKICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CisgICAgaWYgKGZpbmFsX3RzKQorICAgICAgKmZpbmFsX3RzID0gaW5kZXggKiBkdXJhdGlvbjsKICAgfQogCiAgIHN0cmVhbS0+c2VnbWVudF9yZXBlYXRfaW5kZXggPSByZXBlYXRfaW5kZXg7CkBAIC00NTA0LDIwICs0ODMzLDI1IEBACiAgIHN0cmVhbSA9IGdfbGlzdF9udGhfZGF0YSAoY2xpZW50LT5hY3RpdmVfc3RyZWFtcywgc3RyZWFtX2lkeCk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJlYW0gIT0gTlVMTCwgMCk7CiAKLSAgc2VnbWVudF9pZHggPSBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudHNfY291bnRzIChjbGllbnQsIHN0cmVhbSkgLSAxOwotICBjdXJyZW50Q2h1bmsgPSBnX3B0cl9hcnJheV9pbmRleCAoc3RyZWFtLT5zZWdtZW50cywgc2VnbWVudF9pZHgpOwotCi0gIGlmIChjdXJyZW50Q2h1bmstPnJlcGVhdCA+PSAwKSB7Ci0gICAgKnRzID0KLSAgICAgICAgY3VycmVudENodW5rLT5zdGFydCArIChjdXJyZW50Q2h1bmstPmR1cmF0aW9uICogKDEgKwotICAgICAgICAgICAgY3VycmVudENodW5rLT5yZXBlYXQpKTsKLSAgfSBlbHNlIHsKLSAgICAvKiA1LjMuOS42LjE6IG5lZ2F0aXZlIHJlcGVhdCBtZWFucyByZXBlYXQgdGlsbCB0aGUgZW5kIG9mIHRoZQotICAgICAqIHBlcmlvZCwgb3IgdGhlIG5leHQgdXBkYXRlIG9mIHRoZSBNUEQgKHdoaWNoIEkgdGhpbmsgaXMKLSAgICAgKiBpbXBsaWNpdCwgYXMgdGhpcyB3aWxsIGFsbCBnZXQgZGVsZXRlZC9yZWNyZWF0ZWQpLCBvciB0aGUKLSAgICAgKiBzdGFydCBvZiB0aGUgbmV4dCBzZWdtZW50LCBpZiBhbnkuICovCisgIGlmICghc3RyZWFtLT5zZWdtZW50cykgewogICAgIHN0cmVhbV9wZXJpb2QgPSBnc3RfbXBkcGFyc2VyX2dldF9zdHJlYW1fcGVyaW9kIChjbGllbnQpOwogICAgICp0cyA9IHN0cmVhbV9wZXJpb2QtPnN0YXJ0ICsgc3RyZWFtX3BlcmlvZC0+ZHVyYXRpb247CisgIH0gZWxzZSB7CisgICAgc2VnbWVudF9pZHggPSBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudHNfY291bnRzIChjbGllbnQsIHN0cmVhbSkgLSAxOworICAgIGN1cnJlbnRDaHVuayA9IGdfcHRyX2FycmF5X2luZGV4IChzdHJlYW0tPnNlZ21lbnRzLCBzZWdtZW50X2lkeCk7CisKKyAgICBpZiAoY3VycmVudENodW5rLT5yZXBlYXQgPj0gMCkgeworICAgICAgKnRzID0KKyAgICAgICAgICBjdXJyZW50Q2h1bmstPnN0YXJ0ICsgKGN1cnJlbnRDaHVuay0+ZHVyYXRpb24gKiAoMSArCisgICAgICAgICAgICAgIGN1cnJlbnRDaHVuay0+cmVwZWF0KSk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8qIDUuMy45LjYuMTogbmVnYXRpdmUgcmVwZWF0IG1lYW5zIHJlcGVhdCB0aWxsIHRoZSBlbmQgb2YgdGhlCisgICAgICAgKiBwZXJpb2QsIG9yIHRoZSBuZXh0IHVwZGF0ZSBvZiB0aGUgTVBEICh3aGljaCBJIHRoaW5rIGlzCisgICAgICAgKiBpbXBsaWNpdCwgYXMgdGhpcyB3aWxsIGFsbCBnZXQgZGVsZXRlZC9yZWNyZWF0ZWQpLCBvciB0aGUKKyAgICAgICAqIHN0YXJ0IG9mIHRoZSBuZXh0IHNlZ21lbnQsIGlmIGFueS4gKi8KKyAgICAgIHN0cmVhbV9wZXJpb2QgPSBnc3RfbXBkcGFyc2VyX2dldF9zdHJlYW1fcGVyaW9kIChjbGllbnQpOworICAgICAgKnRzID0gc3RyZWFtX3BlcmlvZC0+c3RhcnQgKyBzdHJlYW1fcGVyaW9kLT5kdXJhdGlvbjsKKyAgICB9CiAgIH0KIAogICByZXR1cm4gVFJVRTsKQEAgLTQ5NjEsMjIgKzUyOTUsMTIgQEAKICAgICAgICpyYW5nZV9zdGFydCA9IDA7CiAgICAgICAqcmFuZ2VfZW5kID0gc3RyZWFtLT5jdXJfc2VnbWVudF9iYXNlLT5pbmRleFJhbmdlLT5maXJzdF9ieXRlX3BvcyAtIDE7CiAgICAgfQotICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZSkgewotICAgIGNvbnN0IGdjaGFyICppbml0aWFsaXphdGlvbiA9IE5VTEw7Ci0gICAgaWYgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZS0+aW5pdGlhbGl6YXRpb24pIHsKLSAgICAgIGluaXRpYWxpemF0aW9uID0gc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5pbml0aWFsaXphdGlvbjsKLSAgICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+U2VnbWVudFRlbXBsYXRlCi0gICAgICAgICYmIHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+U2VnbWVudFRlbXBsYXRlLT5pbml0aWFsaXphdGlvbikgewotICAgICAgaW5pdGlhbGl6YXRpb24gPSBzdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlNlZ21lbnRUZW1wbGF0ZS0+aW5pdGlhbGl6YXRpb247Ci0gICAgfSBlbHNlIGlmIChzdHJlYW1fcGVyaW9kLT5wZXJpb2QtPlNlZ21lbnRUZW1wbGF0ZQotICAgICAgICAmJiBzdHJlYW1fcGVyaW9kLT5wZXJpb2QtPlNlZ21lbnRUZW1wbGF0ZS0+aW5pdGlhbGl6YXRpb24pIHsKLSAgICAgIGluaXRpYWxpemF0aW9uID0gc3RyZWFtX3BlcmlvZC0+cGVyaW9kLT5TZWdtZW50VGVtcGxhdGUtPmluaXRpYWxpemF0aW9uOwotICAgIH0KLSAgICBpZiAoaW5pdGlhbGl6YXRpb24pIHsKLSAgICAgICp1cmkgPSBnc3RfbXBkcGFyc2VyX2J1aWxkX1VSTF9mcm9tX3RlbXBsYXRlIChpbml0aWFsaXphdGlvbiwKLSAgICAgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+aWQsIDAsCi0gICAgICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPmJhbmR3aWR0aCwgMCk7Ci0gICAgfQorICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZQorICAgICAgJiYgc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5pbml0aWFsaXphdGlvbikgeworICAgICp1cmkgPQorICAgICAgICBnc3RfbXBkcGFyc2VyX2J1aWxkX1VSTF9mcm9tX3RlbXBsYXRlIChzdHJlYW0tPgorICAgICAgICBjdXJfc2VnX3RlbXBsYXRlLT5pbml0aWFsaXphdGlvbiwgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPmlkLCAwLAorICAgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+YmFuZHdpZHRoLCAwKTsKICAgfQogCiAgIHJldHVybiAqdXJpID09IE5VTEwgPyBGQUxTRSA6IFRSVUU7CkBAIC01MDA0LDI0ICs1MzI4LDE0IEBACiAgIGlmIChzdHJlYW0tPmN1cl9zZWdtZW50X2Jhc2UgJiYgc3RyZWFtLT5jdXJfc2VnbWVudF9iYXNlLT5pbmRleFJhbmdlKSB7CiAgICAgKnVyaSA9CiAgICAgICAgIGdfc3RyZHVwIChnc3RfbXBkcGFyc2VyX2dldF9pbml0aWFsaXphdGlvblVSTCAoc3RyZWFtLAotICAgICAgICAgICAgc3RyZWFtLT5jdXJfc2VnbWVudF9iYXNlLT5Jbml0aWFsaXphdGlvbikpOworICAgICAgICAgICAgc3RyZWFtLT5jdXJfc2VnbWVudF9iYXNlLT5SZXByZXNlbnRhdGlvbkluZGV4KSk7CiAgICAgKnJhbmdlX3N0YXJ0ID0gc3RyZWFtLT5jdXJfc2VnbWVudF9iYXNlLT5pbmRleFJhbmdlLT5maXJzdF9ieXRlX3BvczsKICAgICAqcmFuZ2VfZW5kID0gc3RyZWFtLT5jdXJfc2VnbWVudF9iYXNlLT5pbmRleFJhbmdlLT5sYXN0X2J5dGVfcG9zOwotICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZSkgewotICAgIGNvbnN0IGdjaGFyICppbml0aWFsaXphdGlvbiA9IE5VTEw7Ci0gICAgaWYgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZS0+aW5kZXgpIHsKLSAgICAgIGluaXRpYWxpemF0aW9uID0gc3RyZWFtLT5jdXJfc2VnX3RlbXBsYXRlLT5pbmRleDsKLSAgICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+U2VnbWVudFRlbXBsYXRlCi0gICAgICAgICYmIHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+U2VnbWVudFRlbXBsYXRlLT5pbmRleCkgewotICAgICAgaW5pdGlhbGl6YXRpb24gPSBzdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlNlZ21lbnRUZW1wbGF0ZS0+aW5kZXg7Ci0gICAgfSBlbHNlIGlmIChzdHJlYW1fcGVyaW9kLT5wZXJpb2QtPlNlZ21lbnRUZW1wbGF0ZQotICAgICAgICAmJiBzdHJlYW1fcGVyaW9kLT5wZXJpb2QtPlNlZ21lbnRUZW1wbGF0ZS0+aW5kZXgpIHsKLSAgICAgIGluaXRpYWxpemF0aW9uID0gc3RyZWFtX3BlcmlvZC0+cGVyaW9kLT5TZWdtZW50VGVtcGxhdGUtPmluZGV4OwotICAgIH0KLSAgICBpZiAoaW5pdGlhbGl6YXRpb24pCi0gICAgICAqdXJpID0gZ3N0X21wZHBhcnNlcl9idWlsZF9VUkxfZnJvbV90ZW1wbGF0ZSAoaW5pdGlhbGl6YXRpb24sCi0gICAgICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPmlkLCAwLAotICAgICAgICAgIHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5iYW5kd2lkdGgsIDApOworICB9IGVsc2UgaWYgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZSAmJiBzdHJlYW0tPmN1cl9zZWdfdGVtcGxhdGUtPmluZGV4KSB7CisgICAgKnVyaSA9CisgICAgICAgIGdzdF9tcGRwYXJzZXJfYnVpbGRfVVJMX2Zyb21fdGVtcGxhdGUgKHN0cmVhbS0+Y3VyX3NlZ190ZW1wbGF0ZS0+aW5kZXgsCisgICAgICAgIHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5pZCwgMCwKKyAgICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPmJhbmR3aWR0aCwgMCk7CiAgIH0KIAogICByZXR1cm4gKnVyaSA9PSBOVUxMID8gRkFMU0UgOiBUUlVFOwpAQCAtNTI2NCw2ICs1NTc4LDI3IEBACiAgIHJldHVybiBnX2xpc3RfbnRoX2RhdGEgKGNsaWVudC0+YWN0aXZlX3N0cmVhbXMsIHN0cmVhbV9pZHgpOwogfQogCitnYm9vbGVhbgorZ3N0X21wZF9jbGllbnRfYWN0aXZlX3N0cmVhbV9jb250YWluc19zdWJ0aXRsZXMgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSkKK3sKKyAgY29uc3QgZ2NoYXIgKm1pbWVUeXBlOworICBjb25zdCBnY2hhciAqYWRhcHRfc2V0X2NvZGVjczsKKyAgY29uc3QgZ2NoYXIgKnJlcF9jb2RlY3M7CisKKyAgbWltZVR5cGUgPSBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+UmVwcmVzZW50YXRpb25CYXNlLT5taW1lVHlwZTsKKyAgaWYgKCFtaW1lVHlwZSkKKyAgICBtaW1lVHlwZSA9IHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlLT5taW1lVHlwZTsKKworICBpZiAoZ19zdHJjbXAwIChtaW1lVHlwZSwgImFwcGxpY2F0aW9uL3R0bWwreG1sIikgPT0gMCkKKyAgICByZXR1cm4gVFJVRTsKKworICBhZGFwdF9zZXRfY29kZWNzID0gc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPmNvZGVjczsKKyAgcmVwX2NvZGVjcyA9IHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5SZXByZXNlbnRhdGlvbkJhc2UtPmNvZGVjczsKKworICByZXR1cm4gKGFkYXB0X3NldF9jb2RlY3MgJiYgZ19zdHJfaGFzX3ByZWZpeCAoYWRhcHRfc2V0X2NvZGVjcywgInN0cHAiKSkKKyAgICAgIHx8IChyZXBfY29kZWNzICYmIGdfc3RyX2hhc19wcmVmaXggKHJlcF9jb2RlY3MsICJzdHBwIikpOworfQorCiBzdGF0aWMgY29uc3QgZ2NoYXIgKgogZ3N0X21wZHBhcnNlcl9taW1ldHlwZV90b19jYXBzIChjb25zdCBnY2hhciAqIG1pbWVUeXBlKQogewpAQCAtNTI3OSwxMCArNTYxNCwxMSBAQAogICAgIHJldHVybiBtaW1lVHlwZTsKIH0KIAotY29uc3QgZ2NoYXIgKgotZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9taW1lVHlwZSAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKQorR3N0Q2FwcyAqCitnc3RfbXBkX2NsaWVudF9nZXRfc3RyZWFtX2NhcHMgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSkKIHsKLSAgY29uc3QgZ2NoYXIgKm1pbWVUeXBlOworICBjb25zdCBnY2hhciAqbWltZVR5cGUsICpjYXBzX3N0cmluZzsKKyAgR3N0Q2FwcyAqcmV0ID0gTlVMTDsKIAogICBpZiAoc3RyZWFtID09IE5VTEwgfHwgc3RyZWFtLT5jdXJfYWRhcHRfc2V0ID09IE5VTEwKICAgICAgIHx8IHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uID09IE5VTEwpCkBAIC01MjkzLDcgKzU2MjksMTYgQEAKICAgICBtaW1lVHlwZSA9IHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlLT5taW1lVHlwZTsKICAgfQogCi0gIHJldHVybiBnc3RfbXBkcGFyc2VyX21pbWV0eXBlX3RvX2NhcHMgKG1pbWVUeXBlKTsKKyAgY2Fwc19zdHJpbmcgPSBnc3RfbXBkcGFyc2VyX21pbWV0eXBlX3RvX2NhcHMgKG1pbWVUeXBlKTsKKworICBpZiAoKGdfc3RyY21wMCAoY2Fwc19zdHJpbmcsICJhcHBsaWNhdGlvbi9tcDQiKSA9PSAwKQorICAgICAgJiYgZ3N0X21wZF9jbGllbnRfYWN0aXZlX3N0cmVhbV9jb250YWluc19zdWJ0aXRsZXMgKHN0cmVhbSkpCisgICAgY2Fwc19zdHJpbmcgPSAidmlkZW8vcXVpY2t0aW1lIjsKKworICBpZiAoY2Fwc19zdHJpbmcpCisgICAgcmV0ID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKGNhcHNfc3RyaW5nKTsKKworICByZXR1cm4gcmV0OwogfQogCiBnYm9vbGVhbgpAQCAtNTMzOSw2ICs1Njg0LDQ2IEBACiAgIHJldHVybiBoZWlnaHQ7CiB9CiAKK2dib29sZWFuCitnc3RfbXBkX2NsaWVudF9nZXRfdmlkZW9fc3RyZWFtX2ZyYW1lcmF0ZSAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLAorICAgIGdpbnQgKiBmcHNfbnVtLCBnaW50ICogZnBzX2RlbikKK3sKKyAgaWYgKHN0cmVhbSA9PSBOVUxMKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoc3RyZWFtLT5jdXJfYWRhcHRfc2V0ICYmCisgICAgICBzdHJlYW0tPmN1cl9hZGFwdF9zZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+ZnJhbWVSYXRlICE9IE5VTEwpIHsKKyAgICAqZnBzX251bSA9IHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlLT5mcmFtZVJhdGUtPm51bTsKKyAgICAqZnBzX2RlbiA9IHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlLT5mcmFtZVJhdGUtPmRlbjsKKyAgICByZXR1cm4gVFJVRTsKKyAgfQorCisgIGlmIChzdHJlYW0tPmN1cl9hZGFwdF9zZXQgJiYKKyAgICAgIHN0cmVhbS0+Y3VyX2FkYXB0X3NldC0+UmVwcmVzZW50YXRpb25CYXNlLT5tYXhGcmFtZVJhdGUgIT0gTlVMTCkgeworICAgICpmcHNfbnVtID0gc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1heEZyYW1lUmF0ZS0+bnVtOworICAgICpmcHNfZGVuID0gc3RyZWFtLT5jdXJfYWRhcHRfc2V0LT5SZXByZXNlbnRhdGlvbkJhc2UtPm1heEZyYW1lUmF0ZS0+ZGVuOworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgaWYgKHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uICYmCisgICAgICBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+UmVwcmVzZW50YXRpb25CYXNlLT5mcmFtZVJhdGUgIT0gTlVMTCkgeworICAgICpmcHNfbnVtID0gc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPlJlcHJlc2VudGF0aW9uQmFzZS0+ZnJhbWVSYXRlLT5udW07CisgICAgKmZwc19kZW4gPSBzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbi0+UmVwcmVzZW50YXRpb25CYXNlLT5mcmFtZVJhdGUtPmRlbjsKKyAgICByZXR1cm4gVFJVRTsKKyAgfQorCisgIGlmIChzdHJlYW0tPmN1cl9yZXByZXNlbnRhdGlvbiAmJgorICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPlJlcHJlc2VudGF0aW9uQmFzZS0+bWF4RnJhbWVSYXRlICE9IE5VTEwpIHsKKyAgICAqZnBzX251bSA9CisgICAgICAgIHN0cmVhbS0+Y3VyX3JlcHJlc2VudGF0aW9uLT5SZXByZXNlbnRhdGlvbkJhc2UtPm1heEZyYW1lUmF0ZS0+bnVtOworICAgICpmcHNfZGVuID0KKyAgICAgICAgc3RyZWFtLT5jdXJfcmVwcmVzZW50YXRpb24tPlJlcHJlc2VudGF0aW9uQmFzZS0+bWF4RnJhbWVSYXRlLT5kZW47CisgICAgcmV0dXJuIFRSVUU7CisgIH0KKworICByZXR1cm4gRkFMU0U7Cit9CisKIGd1aW50CiBnc3RfbXBkX2NsaWVudF9nZXRfYXVkaW9fc3RyZWFtX3JhdGUgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSkKIHsKQEAgLTU0MDksMTQgKzU3OTQsMTQgQEAKIAogCiBHc3REYXRlVGltZSAqCi1nc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9lbmRfdGltZSAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAorZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfc2VnbWVudF9hdmFpbGFiaWxpdHlfc3RhcnRfdGltZSAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAogICAgIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSkKIHsKICAgR3N0RGF0ZVRpbWUgKmF2YWlsYWJpbGl0eV9zdGFydF90aW1lLCAqcnY7CiAgIGdpbnQgc2VnX2lkeDsKLSAgR3N0Q2xvY2tUaW1lIHNlZ19kdXJhdGlvbjsKLSAgZ2ludDY0IG9mZnNldDsKICAgR3N0U3RyZWFtUGVyaW9kICpzdHJlYW1fcGVyaW9kOworICBHc3RNZWRpYVNlZ21lbnQgKnNlZ21lbnQ7CisgIEdzdENsb2NrVGltZSBzZWdtZW50RW5kVGltZTsKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2xpZW50ICE9IE5VTEwsIE5VTEwpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3RyZWFtICE9IE5VTEwsIE5VTEwpOwpAQCAtNTQyNCwxNyArNTgwOSw0MCBAQAogICBzdHJlYW1fcGVyaW9kID0gZ3N0X21wZHBhcnNlcl9nZXRfc3RyZWFtX3BlcmlvZCAoY2xpZW50KTsKIAogICBzZWdfaWR4ID0gc3RyZWFtLT5zZWdtZW50X2luZGV4OwotICBzZWdfZHVyYXRpb24gPSBnc3RfbXBkX2NsaWVudF9nZXRfc2VnbWVudF9kdXJhdGlvbiAoY2xpZW50LCBzdHJlYW0sIE5VTEwpOwotICBpZiAoc2VnX2R1cmF0aW9uID09IDApCi0gICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKHN0cmVhbS0+c2VnbWVudHMpIHsKKyAgICBzZWdtZW50ID0gZ19wdHJfYXJyYXlfaW5kZXggKHN0cmVhbS0+c2VnbWVudHMsIHNlZ19pZHgpOworCisgICAgaWYgKHNlZ21lbnQtPnJlcGVhdCA+PSAwKSB7CisgICAgICBzZWdtZW50RW5kVGltZSA9IHNlZ21lbnQtPnN0YXJ0ICsgKHN0cmVhbS0+c2VnbWVudF9yZXBlYXRfaW5kZXggKyAxKSAqCisgICAgICAgICAgc2VnbWVudC0+ZHVyYXRpb247CisgICAgfSBlbHNlIGlmIChzZWdfaWR4IDwgc3RyZWFtLT5zZWdtZW50cy0+bGVuIC0gMSkgeworICAgICAgY29uc3QgR3N0TWVkaWFTZWdtZW50ICpuZXh0X3NlZ21lbnQgPQorICAgICAgICAgIGdfcHRyX2FycmF5X2luZGV4IChzdHJlYW0tPnNlZ21lbnRzLCBzZWdfaWR4ICsgMSk7CisgICAgICBzZWdtZW50RW5kVGltZSA9IG5leHRfc2VnbWVudC0+c3RhcnQ7CisgICAgfSBlbHNlIHsKKyAgICAgIGNvbnN0IEdzdFN0cmVhbVBlcmlvZCAqc3RyZWFtX3BlcmlvZDsKKyAgICAgIHN0cmVhbV9wZXJpb2QgPSBnc3RfbXBkcGFyc2VyX2dldF9zdHJlYW1fcGVyaW9kIChjbGllbnQpOworICAgICAgc2VnbWVudEVuZFRpbWUgPSBzdHJlYW1fcGVyaW9kLT5zdGFydCArIHN0cmVhbV9wZXJpb2QtPmR1cmF0aW9uOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBHc3RDbG9ja1RpbWUgc2VnX2R1cmF0aW9uOworICAgIHNlZ19kdXJhdGlvbiA9IGdzdF9tcGRfY2xpZW50X2dldF9zZWdtZW50X2R1cmF0aW9uIChjbGllbnQsIHN0cmVhbSwgTlVMTCk7CisgICAgaWYgKHNlZ19kdXJhdGlvbiA9PSAwKQorICAgICAgcmV0dXJuIE5VTEw7CisgICAgc2VnbWVudEVuZFRpbWUgPSAoMSArIHNlZ19pZHgpICogc2VnX2R1cmF0aW9uOworICB9CisKICAgYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUgPSBnc3RfbXBkX2NsaWVudF9nZXRfYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUgKGNsaWVudCk7Ci0gIGlmIChhdmFpbGFiaWxpdHlfc3RhcnRfdGltZSA9PSBOVUxMKQotICAgIHJldHVybiAoR3N0RGF0ZVRpbWUgKikgTlVMTDsKKyAgaWYgKGF2YWlsYWJpbGl0eV9zdGFydF90aW1lID09IE5VTEwpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGNsaWVudCwgIkZhaWxlZCB0byBnZXQgYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQogCiAgIGlmIChzdHJlYW1fcGVyaW9kICYmIHN0cmVhbV9wZXJpb2QtPnBlcmlvZCkgewogICAgIEdzdERhdGVUaW1lICp0ID0KICAgICAgICAgZ3N0X21wZF9jbGllbnRfYWRkX3RpbWVfZGlmZmVyZW5jZSAoYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUsCi0gICAgICAgIHN0cmVhbV9wZXJpb2QtPnN0YXJ0IC8gMTAwMCk7CisgICAgICAgIHN0cmVhbV9wZXJpb2QtPnN0YXJ0IC8gR1NUX1VTRUNPTkQpOwogICAgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKGF2YWlsYWJpbGl0eV9zdGFydF90aW1lKTsKICAgICBhdmFpbGFiaWxpdHlfc3RhcnRfdGltZSA9IHQ7CiAKQEAgLTU0NDQsODcgKzU4NTIsMzEgQEAKICAgICB9CiAgIH0KIAotICBvZmZzZXQgPSAoMSArIHNlZ19pZHgpICogc2VnX2R1cmF0aW9uOwogICBydiA9IGdzdF9tcGRfY2xpZW50X2FkZF90aW1lX2RpZmZlcmVuY2UgKGF2YWlsYWJpbGl0eV9zdGFydF90aW1lLAotICAgICAgb2Zmc2V0IC8gR1NUX1VTRUNPTkQpOworICAgICAgc2VnbWVudEVuZFRpbWUgLyBHU1RfVVNFQ09ORCk7CiAgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKGF2YWlsYWJpbGl0eV9zdGFydF90aW1lKTsKKyAgaWYgKHJ2ID09IE5VTEwpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGNsaWVudCwgIkZhaWxlZCB0byBvZmZzZXQgYXZhaWxhYmlsaXR5X3N0YXJ0X3RpbWUiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCiAgIHJldHVybiBydjsKIH0KIAotZ2ludAotZ3N0X21wZF9jbGllbnRfY2hlY2tfdGltZV9wb3NpdGlvbiAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAotICAgIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIHRzLCBnaW50NjQgKiBkaWZmKQotewotICBHRGF0ZVRpbWUgKm5vdyA9IGdfZGF0ZV90aW1lX25ld19ub3dfdXRjICgpOwotICBHRGF0ZVRpbWUgKnN0YXJ0ID0KLSAgICAgIGdzdF9kYXRlX3RpbWVfdG9fZ19kYXRlX3RpbWUgKGNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSk7Ci0gIEdUaW1lU3BhbiBzdHJlYW1fbm93OwotICBHVGltZVNwYW4gdHNfbWljcm9zZWNvbmRzOwotICBHc3RDbG9ja1RpbWUgZHVyYXRpb247Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9tcGRfY2xpZW50X2lzX2xpdmUgKGNsaWVudCksIDApOwotCi0gIGR1cmF0aW9uID0gZ3N0X21wZF9jbGllbnRfZ2V0X3NlZ21lbnRfZHVyYXRpb24gKGNsaWVudCwgc3RyZWFtLCBOVUxMKTsKLSAgc3RyZWFtX25vdyA9IGdfZGF0ZV90aW1lX2RpZmZlcmVuY2UgKG5vdywgc3RhcnQpOwotICBnX2RhdGVfdGltZV91bnJlZiAobm93KTsKLSAgZ19kYXRlX3RpbWVfdW5yZWYgKHN0YXJ0KTsKLQotICAvKiBzdW0gZHVyYXRpb24gdG8gY2hlY2sgaWYgdGhlIHNlZ21lbnQgaXMgZnVsbHkgcmVhZHkgKi8KLSAgdHNfbWljcm9zZWNvbmRzID0gKHRzICsgZHVyYXRpb24pIC8gR1NUX1VTRUNPTkQ7Ci0KLSAgLyoKLSAgICogVGhpcyBmdW5jdGlvbnMgY2hlY2tzIGlmIGEgZ2l2ZW4gdHMgaXMgaW4gdGhlICdhdmFpbGFibGUgcmFuZ2UnIG9mCi0gICAqIGEgREFTSCBwcmVzZW50YXRpb24uIFRoaXMgb25seSBtYWtlcyBzZW5zZSBmb3IgbGl2ZSBzdHJlYW1zLCB3aGljaAotICAgKiBhcmUgY29udGludW91c2x5IGFkZGluZyBuZXcgc2VnbWVudHMgYW5kIHJlbW92aW5nIG9sZCBvbmVzLgotICAgKgotICAgKiBOb3RlOiBCb3RoIHRoZSBjbGllbnQgYW5kIHRoZSBzZXJ2ZXIgc2hvdWxkIHVzZSBVVEMgYXMgYSB0aW1lIHJlZmVyZW5jZS4KLSAgICoKLSAgICogQHRzIGlzIHRoZSB0aW1lIHNpbmNlIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHN0cmVhbSBhbmQgd2UgbmVlZCB0byBmaW5kIG91dAotICAgKiBpZiBpdCBpcyBjdXJyZW50bHkgYXZhaWxhYmxlLiBUaGUgc2VydmVyIHNob3VsZCBiZSBob3N0aW5nIHNlZ21lbnRzCi0gICAqCi0gICAqICogLS0tLS0tLS0tLS0tLS0tLSAuLi4gLS0tICogLS0tLS0tLS0tLS0gKiAtLS0tIC4uLgotICAgKiB8Ci0gICAqIHwgcGFzdCh1bmF2YWlsYWJsZSkgfCAgICAgIHwgYXZhaWxhYmxlICAgfCBmdXR1cmUodW5hdmFpbGFibGUgeWV0KQotICAgKiB8Ci0gICAqICogLS0tLS0tLS0tLS0tLS0tLSAuLi4gLS0tICogLS0tLS0tLS0tLS0gKiAtLS0tIC4uLgotICAgKiB8ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIHwKLSAgICogYXZhaWxhYmlsaXRTdGFydFRpbWUgICAgICAgfCAgICAgICAgICAgICBVVEMgbm93Ci0gICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVUQyBub3cgLSB0aW1lU2hpZnRCdWZmZXJEZXB0aAotICAgKgotICAgKiBUaGlzIGZ1bmN0aW9uIHNob3VsZCByZXR1cm4gMCBpZiBAdHMgaXMgaW4gdGhlICdhdmFpbGFibGUnIGFyZWEsIDEgZm9yCi0gICAqICdmdXR1cmUnIGFuZCAnLTEnIGZvciBwYXN0IGFuZCB0aGUgY29ycmVzcG9uZGluZyBkaXN0YW5jZSB0byB0aGUKLSAgICogJ2F2YWlsYWJsZScgYXJlYSBpcyBzZXQgdG8gQGRpZmYKLSAgICoKLSAgICogVE9ETyB1bnRlc3RlZCB3aXRoIGxpdmUgcHJlc2VudGF0aW9ucyB3aXRoIG11bHRpcGxlIHBlcmlvZHMgYXMgbm8KLSAgICogZXhhbXBsZXMgZm9yIGl0IGNvdWxkIGJlIGZvdW5kL2dlbmVyYXRlZAotICAgKi8KLQotICBpZiAodHNfbWljcm9zZWNvbmRzID4gc3RyZWFtX25vdykgewotICAgICpkaWZmID0gdHNfbWljcm9zZWNvbmRzIC0gc3RyZWFtX25vdzsKLSAgICByZXR1cm4gMTsKLSAgfQotICBpZiAoY2xpZW50LT5tcGRfbm9kZS0+dGltZVNoaWZ0QnVmZmVyRGVwdGggIT0gLTEKLSAgICAgICYmIHRzX21pY3Jvc2Vjb25kcyA8Ci0gICAgICBzdHJlYW1fbm93IC0gY2xpZW50LT5tcGRfbm9kZS0+dGltZVNoaWZ0QnVmZmVyRGVwdGgpIHsKLSAgICAqZGlmZiA9IHRzX21pY3Jvc2Vjb25kcyAtIHN0cmVhbV9ub3c7Ci0gICAgcmV0dXJuIC0xOwotICB9Ci0KLSAgKmRpZmYgPSAwOwotICByZXR1cm4gMDsKLX0KLQogZ2Jvb2xlYW4KIGdzdF9tcGRfY2xpZW50X3NlZWtfdG9fdGltZSAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHRGF0ZVRpbWUgKiB0aW1lKQogewotICBHRGF0ZVRpbWUgKnN0YXJ0ID0KLSAgICAgIGdzdF9kYXRlX3RpbWVfdG9fZ19kYXRlX3RpbWUgKGNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSk7CisgIEdEYXRlVGltZSAqc3RhcnQ7CiAgIEdUaW1lU3BhbiB0c19taWNyb3NlY29uZHM7CiAgIEdzdENsb2NrVGltZSB0czsKICAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKICAgR0xpc3QgKnN0cmVhbTsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X21wZF9jbGllbnRfaXNfbGl2ZSAoY2xpZW50KSwgMCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfbXBkX2NsaWVudF9pc19saXZlIChjbGllbnQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbGllbnQtPm1wZF9ub2RlLT5hdmFpbGFiaWxpdHlTdGFydFRpbWUgIT0gTlVMTCwgRkFMU0UpOworCisgIHN0YXJ0ID0KKyAgICAgIGdzdF9kYXRlX3RpbWVfdG9fZ19kYXRlX3RpbWUgKGNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSk7CiAKICAgdHNfbWljcm9zZWNvbmRzID0gZ19kYXRlX3RpbWVfZGlmZmVyZW5jZSAodGltZSwgc3RhcnQpOwogICBnX2RhdGVfdGltZV91bnJlZiAoc3RhcnQpOwpAQCAtNTUzNSw3ICs1ODg3LDkgQEAKIAogICB0cyA9IHRzX21pY3Jvc2Vjb25kcyAqIEdTVF9VU0VDT05EOwogICBmb3IgKHN0cmVhbSA9IGNsaWVudC0+YWN0aXZlX3N0cmVhbXM7IHN0cmVhbTsgc3RyZWFtID0gZ19saXN0X25leHQgKHN0cmVhbSkpIHsKLSAgICByZXQgPSByZXQgJiBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAoY2xpZW50LCBzdHJlYW0tPmRhdGEsIHRzKTsKKyAgICByZXQgPQorICAgICAgICByZXQgJiBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAoY2xpZW50LCBzdHJlYW0tPmRhdGEsIFRSVUUsIDAsIHRzLAorICAgICAgICBOVUxMKTsKICAgfQogICByZXR1cm4gcmV0OwogfQpAQCAtNTU1MiwzICs1OTA2LDQzIEBACiB7CiAgIHJldHVybiBjbGllbnQtPnByb2ZpbGVfaXNvZmZfb25kZW1hbmQ7CiB9CisKKy8qKgorICogZ3N0X21wZF9jbGllbnRfcGFyc2VfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXk6CisgKiBAY2xpZW50OiAjR3N0TXBkQ2xpZW50IHRoYXQgaGFzIGEgcGFyc2VkIG1hbmlmZXN0CisgKiBAZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXk6IEEgc3RyaW5nIHRoYXQgc3BlY2lmaWVzIGEgdGltZSBwZXJpb2QKKyAqIGluIGZyYWdtZW50cyAoZS5nLiAiNSBmIiksIHNlY29uZHMgKCIxMiBzIikgb3IgbWlsbGlzZWNvbmRzCisgKiAoIjEyMDAwIG1zIikKKyAqIFJldHVybnM6IHRoZSBwYXJzZWQgc3RyaW5nIGluIG1pbGxpc2Vjb25kcworICoKKyAqIFNpbmNlOiAxLjYKKyAqLworZ2ludDY0Citnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAoR3N0TXBkQ2xpZW50ICogY2xpZW50LAorICAgIGNvbnN0IGdjaGFyICogZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpCit7CisgIGdpbnQ2NCB2YWx1ZTsKKyAgY2hhciAqZW5kcHRyID0gTlVMTDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2xpZW50ICE9IE5VTEwsIDApOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgIT0gTlVMTCwgMCk7CisgIHZhbHVlID0gc3RydG9sIChkZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSwgJmVuZHB0ciwgMTApOworICBpZiAoZW5kcHRyID09IGRlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IHx8IHZhbHVlID09IDApIHsKKyAgICByZXR1cm4gMDsKKyAgfQorICB3aGlsZSAoKmVuZHB0ciA9PSAnICcpCisgICAgZW5kcHRyKys7CisgIGlmICgqZW5kcHRyID09ICdzJyB8fCAqZW5kcHRyID09ICdTJykgeworICAgIHZhbHVlICo9IDEwMDA7ICAgICAgICAgICAgICAvKiBjb252ZXJ0IHRvIG1zICovCisgIH0gZWxzZSBpZiAoKmVuZHB0ciA9PSAnZicgfHwgKmVuZHB0ciA9PSAnRicpIHsKKyAgICBnaW50NjQgc2VnbWVudF9kdXJhdGlvbjsKKyAgICBnX2Fzc2VydCAoY2xpZW50LT5tcGRfbm9kZSAhPSBOVUxMKTsKKyAgICBzZWdtZW50X2R1cmF0aW9uID0gY2xpZW50LT5tcGRfbm9kZS0+bWF4U2VnbWVudER1cmF0aW9uOworICAgIHZhbHVlICo9IHNlZ21lbnRfZHVyYXRpb247CisgIH0gZWxzZSBpZiAoKmVuZHB0ciAhPSAnbScgJiYgKmVuZHB0ciAhPSAnTScpIHsKKyAgICBHU1RfRVJST1IgKCJVbmFibGUgdG8gcGFyc2UgZGVmYXVsdCBwcmVzZW50YXRpb24gZGVsYXk6ICVzIiwKKyAgICAgICAgZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpOworICAgIHZhbHVlID0gMDsKKyAgfQorICByZXR1cm4gdmFsdWU7Cit9CmRpZmYgLS1naXQgYS9leHQvZGFzaC9nc3RtcGRwYXJzZXIuaCBiL2V4dC9kYXNoL2dzdG1wZHBhcnNlci5oCmluZGV4IDM2NTY5YjUuLjFiMzAzYWEgMTAwNjQ0Ci0tLSBhL2V4dC9kYXNoL2dzdG1wZHBhcnNlci5oCisrKyBiL2V4dC9kYXNoL2dzdG1wZHBhcnNlci5oCkBAIC02Nyw2ICs2Nyw4IEBACiAjZGVmaW5lIEdTVF9NUERfQ0xJRU5UX0xPQ0soYykgZ19tdXRleF9sb2NrICgmYy0+bG9jayk7CiAjZGVmaW5lIEdTVF9NUERfQ0xJRU5UX1VOTE9DSyhjKSBnX211dGV4X3VubG9jayAoJmMtPmxvY2spOwogCisjZGVmaW5lIEdTVF9NUERfRFVSQVRJT05fTk9ORSAoKGd1aW50NjQpLTEpCisKIHR5cGVkZWYgZW51bQogewogICBHU1RfU1RSRUFNX1VOS05PV04sCkBAIC0yMTksNiArMjIxLDggQEAKICAgZ3VpbnQgd2lkdGg7CiAgIGd1aW50IGhlaWdodDsKICAgR3N0UmF0aW8gKnNhcjsKKyAgR3N0RnJhbWVSYXRlICptaW5GcmFtZVJhdGU7CisgIEdzdEZyYW1lUmF0ZSAqbWF4RnJhbWVSYXRlOwogICBHc3RGcmFtZVJhdGUgKmZyYW1lUmF0ZTsKICAgZ2NoYXIgKmF1ZGlvU2FtcGxpbmdSYXRlOwogICBnY2hhciAqbWltZVR5cGU7CkBAIC0zMDQsOCArMzA4LDYgQEAKICAgZ3VpbnQgbWF4V2lkdGg7CiAgIGd1aW50IG1pbkhlaWdodDsKICAgZ3VpbnQgbWF4SGVpZ2h0OwotICBHc3RGcmFtZVJhdGUgKm1pbkZyYW1lUmF0ZTsKLSAgR3N0RnJhbWVSYXRlICptYXhGcmFtZVJhdGU7CiAgIEdzdENvbmRpdGlvbmFsVWludFR5cGUgKnNlZ21lbnRBbGlnbm1lbnQ7CiAgIEdzdENvbmRpdGlvbmFsVWludFR5cGUgKnN1YnNlZ21lbnRBbGlnbm1lbnQ7CiAgIEdzdFNBUFR5cGUgc3Vic2VnbWVudFN0YXJ0c1dpdGhTQVA7CkBAIC0zNDYsOCArMzQ4LDggQEAKIHN0cnVjdCBfR3N0UGVyaW9kTm9kZQogewogICBnY2hhciAqaWQ7Ci0gIGdpbnQ2NCBzdGFydDsgICAgICAgICAgICAgICAgICAgICAgLyogW21zXSAqLwotICBnaW50NjQgZHVyYXRpb247ICAgICAgICAgICAgICAgICAgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCBzdGFydDsgICAgICAgICAgICAgICAgICAgICAvKiBbbXNdICovCisgIGd1aW50NjQgZHVyYXRpb247ICAgICAgICAgICAgICAgICAgLyogW21zXSAqLwogICBnYm9vbGVhbiBiaXRzdHJlYW1Td2l0Y2hpbmc7CiAgIC8qIFNlZ21lbnRCYXNlIG5vZGUgKi8KICAgR3N0U2VnbWVudEJhc2VUeXBlICpTZWdtZW50QmFzZTsKQEAgLTM3OCw4ICszODAsOCBAQAogCiBzdHJ1Y3QgX0dzdE1ldHJpY3NSYW5nZU5vZGUKIHsKLSAgZ2ludDY0IHN0YXJ0dGltZTsgICAgICAgICAgICAgICAgICAvKiBbbXNdICovCi0gIGdpbnQ2NCBkdXJhdGlvbjsgICAgICAgICAgICAgICAgICAgLyogW21zXSAqLworICBndWludDY0IHN0YXJ0dGltZTsgICAgICAgICAgICAgICAgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCBkdXJhdGlvbjsgICAgICAgICAgICAgICAgICAvKiBbbXNdICovCiB9OwogCiBzdHJ1Y3QgX0dzdE1ldHJpY3NOb2RlCkBAIC00MDgsMTMgKzQxMCwxMyBAQAogICBHc3RNUERGaWxlVHlwZSB0eXBlOwogICBHc3REYXRlVGltZSAqYXZhaWxhYmlsaXR5U3RhcnRUaW1lOwogICBHc3REYXRlVGltZSAqYXZhaWxhYmlsaXR5RW5kVGltZTsKLSAgZ2ludDY0IG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb247ICAvKiBbbXNdICovCi0gIGdpbnQ2NCBtaW5pbXVtVXBkYXRlUGVyaW9kOyAgICAgICAgLyogW21zXSAqLwotICBnaW50NjQgbWluQnVmZmVyVGltZTsgICAgICAgICAgICAgIC8qIFttc10gKi8KLSAgZ2ludDY0IHRpbWVTaGlmdEJ1ZmZlckRlcHRoOyAgICAgICAvKiBbbXNdICovCi0gIGdpbnQ2NCBzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheTsgLyogW21zXSAqLwotICBnaW50NjQgbWF4U2VnbWVudER1cmF0aW9uOyAgICAgICAgIC8qIFttc10gKi8KLSAgZ2ludDY0IG1heFN1YnNlZ21lbnREdXJhdGlvbjsgICAgICAvKiBbbXNdICovCisgIGd1aW50NjQgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbjsgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCBtaW5pbXVtVXBkYXRlUGVyaW9kOyAgICAgICAgLyogW21zXSAqLworICBndWludDY0IG1pbkJ1ZmZlclRpbWU7ICAgICAgICAgICAgICAvKiBbbXNdICovCisgIGd1aW50NjQgdGltZVNoaWZ0QnVmZmVyRGVwdGg7ICAgICAgIC8qIFttc10gKi8KKyAgZ3VpbnQ2NCBzdWdnZXN0ZWRQcmVzZW50YXRpb25EZWxheTsgLyogW21zXSAqLworICBndWludDY0IG1heFNlZ21lbnREdXJhdGlvbjsgICAgICAgICAvKiBbbXNdICovCisgIGd1aW50NjQgbWF4U3Vic2VnbWVudER1cmF0aW9uOyAgICAgIC8qIFttc10gKi8KICAgLyogbGlzdCBvZiBCYXNlVVJMIG5vZGVzICovCiAgIEdMaXN0ICpCYXNlVVJMczsKICAgLyogbGlzdCBvZiBMb2NhdGlvbiBub2RlcyAqLwpAQCAtNDUyLDggKzQ1NCw4IEBACiAgIEdzdFNlZ21lbnRVUkxOb2RlICpTZWdtZW50VVJMOyAgICAgICAgICAgICAgLyogdGhpcyBpcyBOVUxMIHdoZW4gdXNpbmcgYSBTZWdtZW50VGVtcGxhdGUgKi8KICAgZ3VpbnQgbnVtYmVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBzZWdtZW50IG51bWJlciAqLwogICBnaW50IHJlcGVhdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIG51bWJlciBvZiBleHRyYSByZXBldGl0aW9ucyAoMCA9IHBsYXllZCBvbmx5IG9uY2UpICovCi0gIGdpbnQ2NCBzY2FsZV9zdGFydDsgICAgICAgICAgICAgICAgICAgICAgICAgLyogc3RhcnQgdGltZSBpbiB0aW1lc2NhbGUgdW5pdHMgKi8KLSAgZ2ludDY0IHNjYWxlX2R1cmF0aW9uOyAgICAgICAgICAgICAgICAgICAgICAvKiBkdXJhdGlvbiBpbiB0aW1lc2NhbGUgdW5pdHMgKi8KKyAgZ3VpbnQ2NCBzY2FsZV9zdGFydDsgICAgICAgICAgICAgICAgICAgICAgICAvKiBzdGFydCB0aW1lIGluIHRpbWVzY2FsZSB1bml0cyAqLworICBndWludDY0IHNjYWxlX2R1cmF0aW9uOyAgICAgICAgICAgICAgICAgICAgIC8qIGR1cmF0aW9uIGluIHRpbWVzY2FsZSB1bml0cyAqLwogICBHc3RDbG9ja1RpbWUgc3RhcnQ7ICAgICAgICAgICAgICAgICAgICAgICAgIC8qIHNlZ21lbnQgc3RhcnQgdGltZSAqLwogICBHc3RDbG9ja1RpbWUgZHVyYXRpb247ICAgICAgICAgICAgICAgICAgICAgIC8qIHNlZ21lbnQgZHVyYXRpb24gKi8KIH07CkBAIC01NDIsOSArNTQ0LDggQEAKIGdib29sZWFuIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X2hlYWRlciAoR3N0TXBkQ2xpZW50ICpjbGllbnQsIGdjaGFyICoqdXJpLCBndWludCBzdHJlYW1faWR4LCBnaW50NjQgKiByYW5nZV9zdGFydCwgZ2ludDY0ICogcmFuZ2VfZW5kKTsKIGdib29sZWFuIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X2hlYWRlcl9pbmRleCAoR3N0TXBkQ2xpZW50ICpjbGllbnQsIGdjaGFyICoqdXJpLCBndWludCBzdHJlYW1faWR4LCBnaW50NjQgKiByYW5nZV9zdGFydCwgZ2ludDY0ICogcmFuZ2VfZW5kKTsKIGdib29sZWFuIGdzdF9tcGRfY2xpZW50X2lzX2xpdmUgKEdzdE1wZENsaWVudCAqIGNsaWVudCk7Ci1nYm9vbGVhbiBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSB0cyk7CitnYm9vbGVhbiBnc3RfbXBkX2NsaWVudF9zdHJlYW1fc2VlayAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIGdib29sZWFuIGZvcndhcmQsIEdzdFNlZWtGbGFncyBmbGFncywgR3N0Q2xvY2tUaW1lIHRzLCBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cyk7CiBnYm9vbGVhbiBnc3RfbXBkX2NsaWVudF9zZWVrX3RvX3RpbWUgKEdzdE1wZENsaWVudCAqIGNsaWVudCwgR0RhdGVUaW1lICogdGltZSk7Ci1naW50IGdzdF9tcGRfY2xpZW50X2NoZWNrX3RpbWVfcG9zaXRpb24gKEdzdE1wZENsaWVudCAqIGNsaWVudCwgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLCBHc3RDbG9ja1RpbWUgdHMsIGdpbnQ2NCAqIGRpZmYpOwogR3N0Q2xvY2tUaW1lIGdzdF9tcGRfcGFyc2VyX2dldF9zdHJlYW1fcHJlc2VudGF0aW9uX29mZnNldCAoR3N0TXBkQ2xpZW50ICpjbGllbnQsIGd1aW50IHN0cmVhbV9pZHgpOwogZ2NoYXIqKiBnc3RfbXBkX2NsaWVudF9nZXRfdXRjX3RpbWluZ19zb3VyY2VzIChHc3RNcGRDbGllbnQgKmNsaWVudCwgZ3VpbnQgbWV0aG9kcywgR3N0TVBEVVRDVGltaW5nVHlwZSAqc2VsZWN0ZWRfbWV0aG9kKTsKIEdzdENsb2NrVGltZSBnc3RfbXBkX3BhcnNlcl9nZXRfcGVyaW9kX3N0YXJ0X3RpbWUgKEdzdE1wZENsaWVudCAqY2xpZW50KTsKQEAgLTU2NCwxMSArNTY1LDExIEBACiAKIC8qIFVSTCBtYW5hZ2VtZW50ICovCiBjb25zdCBnY2hhciAqZ3N0X21wZHBhcnNlcl9nZXRfYmFzZVVSTCAoR3N0TXBkQ2xpZW50ICpjbGllbnQsIGd1aW50IGluZGV4U3RyZWFtKTsKLWdib29sZWFuIGdzdF9tcGRwYXJzZXJfZ2V0X2NodW5rX2J5X2luZGV4IChHc3RNcGRDbGllbnQgKmNsaWVudCwgZ3VpbnQgaW5kZXhTdHJlYW0sIGd1aW50IGluZGV4Q2h1bmssIEdzdE1lZGlhU2VnbWVudCAqIHNlZ21lbnQpOwogCiAvKiBBY3RpdmUgc3RyZWFtICovCiBndWludCBnc3RfbXBkcGFyc2VyX2dldF9uYl9hY3RpdmVfc3RyZWFtIChHc3RNcGRDbGllbnQgKmNsaWVudCk7CiBHc3RBY3RpdmVTdHJlYW0gKmdzdF9tcGRwYXJzZXJfZ2V0X2FjdGl2ZV9zdHJlYW1fYnlfaW5kZXggKEdzdE1wZENsaWVudCAqY2xpZW50LCBndWludCBzdHJlYW1faWR4KTsKK2dib29sZWFuIGdzdF9tcGRfY2xpZW50X2FjdGl2ZV9zdHJlYW1fY29udGFpbnNfc3VidGl0bGVzIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pOwogCiAvKiBBZGFwdGF0aW9uU2V0ICovCiBndWludCBnc3RfbXBkcGFyc2VyX2dldF9uYl9hZGFwdGF0aW9uU2V0IChHc3RNcGRDbGllbnQgKmNsaWVudCk7CkBAIC01NzgsMTMgKzU3OSwxNCBAQAogZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfaGFzX25leHRfc2VnbWVudCAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0sIGdib29sZWFuIGZvcndhcmQpOwogR3N0Rmxvd1JldHVybiBnc3RfbXBkX2NsaWVudF9hZHZhbmNlX3NlZ21lbnQgKEdzdE1wZENsaWVudCAqIGNsaWVudCwgR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkKTsKIHZvaWQgZ3N0X21wZF9jbGllbnRfc2Vla190b19maXJzdF9zZWdtZW50IChHc3RNcGRDbGllbnQgKiBjbGllbnQpOwotR3N0RGF0ZVRpbWUgKmdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X2VuZF90aW1lIChHc3RNcGRDbGllbnQgKiBjbGllbnQsIEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CitHc3REYXRlVGltZSAqZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfc2VnbWVudF9hdmFpbGFiaWxpdHlfc3RhcnRfdGltZSAoR3N0TXBkQ2xpZW50ICogY2xpZW50LCBHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pOwogCi0vKiBHZXQgYXVkaW8vdmlkZW8gc3RyZWFtIHBhcmFtZXRlcnMgKG1pbWVUeXBlLCB3aWR0aCwgaGVpZ2h0LCByYXRlLCBudW1iZXIgb2YgY2hhbm5lbHMpICovCi1jb25zdCBnY2hhciAqZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9taW1lVHlwZSAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKTsKKy8qIEdldCBhdWRpby92aWRlbyBzdHJlYW0gcGFyYW1ldGVycyAoY2Fwcywgd2lkdGgsIGhlaWdodCwgcmF0ZSwgbnVtYmVyIG9mIGNoYW5uZWxzKSAqLworR3N0Q2FwcyAqIGdzdF9tcGRfY2xpZW50X2dldF9zdHJlYW1fY2FwcyAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtKTsKIGdib29sZWFuIGdzdF9tcGRfY2xpZW50X2dldF9iaXRzdHJlYW1fc3dpdGNoaW5nX2ZsYWcgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CiBndWludCBnc3RfbXBkX2NsaWVudF9nZXRfdmlkZW9fc3RyZWFtX3dpZHRoIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pOwogZ3VpbnQgZ3N0X21wZF9jbGllbnRfZ2V0X3ZpZGVvX3N0cmVhbV9oZWlnaHQgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CitnYm9vbGVhbiBnc3RfbXBkX2NsaWVudF9nZXRfdmlkZW9fc3RyZWFtX2ZyYW1lcmF0ZSAoR3N0QWN0aXZlU3RyZWFtICogc3RyZWFtLCBnaW50ICogZnBzX251bSwgZ2ludCAqIGZwc19kZW4pOwogZ3VpbnQgZ3N0X21wZF9jbGllbnRfZ2V0X2F1ZGlvX3N0cmVhbV9yYXRlIChHc3RBY3RpdmVTdHJlYW0gKiBzdHJlYW0pOwogZ3VpbnQgZ3N0X21wZF9jbGllbnRfZ2V0X2F1ZGlvX3N0cmVhbV9udW1fY2hhbm5lbHMgKEdzdEFjdGl2ZVN0cmVhbSAqIHN0cmVhbSk7CiAKQEAgLTU5Myw2ICs1OTUsNyBAQAogCiBnaW50NjQgZ3N0X21wZF9jbGllbnRfY2FsY3VsYXRlX3RpbWVfZGlmZmVyZW5jZSAoY29uc3QgR3N0RGF0ZVRpbWUgKiB0MSwgY29uc3QgR3N0RGF0ZVRpbWUgKiB0Mik7CiBHc3REYXRlVGltZSAqZ3N0X21wZF9jbGllbnRfYWRkX3RpbWVfZGlmZmVyZW5jZSAoR3N0RGF0ZVRpbWUgKiB0MSwgZ2ludDY0IHVzZWNzKTsKK2dpbnQ2NCBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheShHc3RNcGRDbGllbnQgKiBjbGllbnQsIGNvbnN0IGdjaGFyICogZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpOwogCiAvKiBwcm9maWxlcyAqLwogZ2Jvb2xlYW4gZ3N0X21wZF9jbGllbnRfaGFzX2lzb2ZmX29uZGVtYW5kX3Byb2ZpbGUgKEdzdE1wZENsaWVudCAqY2xpZW50KTsKZGlmZiAtLWdpdCBhL2V4dC9kYzEzOTQvTWFrZWZpbGUuaW4gYi9leHQvZGMxMzk0L01ha2VmaWxlLmluCmluZGV4IDJmZjlmOTguLjdhMjE3M2IgMTAwNjQ0Ci0tLSBhL2V4dC9kYzEzOTQvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2RjMTM5NC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9kaXJlY3RmYi9NYWtlZmlsZS5pbiBiL2V4dC9kaXJlY3RmYi9NYWtlZmlsZS5pbgppbmRleCAwNDYyMzQ4Li43YWEyZTNiIDEwMDY0NAotLS0gYS9leHQvZGlyZWN0ZmIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2RpcmVjdGZiL01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4NCw2ICsyODMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyMSw2ICszMjIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyOSw3ICszMzIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDgsOCArMzUwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NiwxNiArMzY5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwMSw2ICs0MDUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjYsNiArNDMyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI3LDYgKzUzNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDAsOCArNTQ5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU3LDYgKzU2NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTQsMTYgKzYyMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3NSw2ICs2ODYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjg1LDYgKzY5Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5NCw2ICs3MDcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzMxLDcgKzc0Niw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2RpcmVjdGZiL2RmYnZpZGVvc2luay5jIGIvZXh0L2RpcmVjdGZiL2RmYnZpZGVvc2luay5jCmluZGV4IDIyZGQzZDcuLmRiOGVmMTcgMTAwNjQ0Ci0tLSBhL2V4dC9kaXJlY3RmYi9kZmJ2aWRlb3NpbmsuYworKysgYi9leHQvZGlyZWN0ZmIvZGZidmlkZW9zaW5rLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqICAgPHBhcmE+CiAgKiAgIFN0YW5kYWxvbmU6IHRoaXMgbW9kZSB3aWxsIHRha2UgY29tcGxldGUgY29udHJvbCBvZiB0aGUgbW9uaXRvciBmb3JjaW5nCiAgKiAgIDx1bGluayB1cmw9Imh0dHA6Ly93d3cuZGlyZWN0ZmIub3JnLyI+RGlyZWN0RkI8L3VsaW5rPiB0byBmdWxsc2NyZWVuIGxheW91dC4KLSAqICAgVGhpcyBpcyBjb252ZW5pZW50IHRvIHRlc3QgdXNpbmcgdGhlICBnc3QtbGF1bmNoIGNvbW1hbmQgbGluZSB0b29sIG9yCisgKiAgIFRoaXMgaXMgY29udmVuaWVudCB0byB0ZXN0IHVzaW5nIHRoZSAgZ3N0LWxhdW5jaC0xLjAgY29tbWFuZCBsaW5lIHRvb2wgb3IKICAqICAgb3RoZXIgc2ltcGxlIGFwcGxpY2F0aW9ucy4gSXQgaXMgcG9zc2libGUgdG8gaW50ZXJydXB0IHBsYXliYWNrIHdoaWxlCiAgKiAgIGJlaW5nIGluIHRoaXMgbW9kZSBieSBwcmVzc2luZyB0aGUgRXNjYXBlIGtleS4KICAqICAgPC9wYXJhPgpAQCAtNzcsNyArNzcsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIGRmYnZpZGVvc2luayBodWU9MjAwMDAgc2F0dXJhdGlvbj00MDAwMCBicmlnaHRuZXNzPTI1MDAwCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBkZmJ2aWRlb3NpbmsgaHVlPTIwMDAwIHNhdHVyYXRpb249NDAwMDAgYnJpZ2h0bmVzcz0yNTAwMAogICogXXwgdGVzdCB0aGUgY29sb3JiYWxhbmNlIGludGVyZmFjZSBpbXBsZW1lbnRhdGlvbiBpbiBkZmJ2aWRlb3NpbmsKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2V4dC9kdGxzL01ha2VmaWxlLmluIGIvZXh0L2R0bHMvTWFrZWZpbGUuaW4KaW5kZXggZjg2MGFjNy4uMjRhMGVmNiAxMDA2NDQKLS0tIGEvZXh0L2R0bHMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2R0bHMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjgxLDYgKzI4MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE4LDYgKzMxOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI2LDcgKzMyOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0NSw4ICszNDcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYzLDE2ICszNjYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk4LDYgKzQwMiw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMyw2ICs0MjksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjQsNiArNTMyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNyw4ICs1NDYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTQsNiArNTYxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMSwxNiArNjIwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcyLDYgKzY4Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODIsNiArNjk0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkxLDYgKzcwNCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjgsNyArNzQzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZHRscy9nc3RkdGxzZGVjLmMgYi9leHQvZHRscy9nc3RkdGxzZGVjLmMKaW5kZXggZWVjYzQ1OC4uZjA1YjRmMSAxMDA2NDQKLS0tIGEvZXh0L2R0bHMvZ3N0ZHRsc2RlYy5jCisrKyBiL2V4dC9kdGxzL2dzdGR0bHNkZWMuYwpAQCAtNTY5LDcgKzU2OSw4IEBACiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICB9CiAKLSAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInJlY2VpdmVkIGJ1ZmZlciBmcm9tICVzIHdpdGggbGVuZ3RoICUiIEdfR1NJWkVfRk9STUFULAorICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLAorICAgICAgInJlY2VpdmVkIGJ1ZmZlciBmcm9tICVzIHdpdGggbGVuZ3RoICUiIEdfR1NJWkVfRk9STUFULAogICAgICAgc2VsZi0+Y29ubmVjdGlvbl9pZCwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSk7CiAKICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChidWZmZXIpOwpkaWZmIC0tZ2l0IGEvZXh0L2R0cy9NYWtlZmlsZS5pbiBiL2V4dC9kdHMvTWFrZWZpbGUuaW4KaW5kZXggNDJhZDM2NS4uNjhlNzg5YyAxMDA2NDQKLS0tIGEvZXh0L2R0cy9NYWtlZmlsZS5pbgorKysgYi9leHQvZHRzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2R0cy9nc3RkdHNkZWMuYyBiL2V4dC9kdHMvZ3N0ZHRzZGVjLmMKaW5kZXggYzFmMTJjNS4uNzY3YjZiZiAxMDA2NDQKLS0tIGEvZXh0L2R0cy9nc3RkdHNkZWMuYworKysgYi9leHQvZHRzL2dzdGR0c2RlYy5jCkBAIC0yNiwxMCArMjYsMTAgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGR2ZHJlYWRzcmMgdGl0bGU9MSAhIG1wZWdwc2RlbXV4ICEgZHRzZGVjICEgYXVkaW9yZXNhbXBsZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBkdmRyZWFkc3JjIHRpdGxlPTEgISBtcGVncHNkZW11eCAhIGR0c2RlYyAhIGF1ZGlvcmVzYW1wbGUgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luawogICogXXwgUGxheSBhIERUUyBhdWRpbyB0cmFjayBmcm9tIGEgZHZkLgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1hYmMuZHRzICEgZHRzZGVjICEgYXVkaW9yZXNhbXBsZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWFiYy5kdHMgISBkdHNkZWMgISBhdWRpb3Jlc2FtcGxlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKICAqIF18IERlY29kZSBhIHN0YW5kYWxvbmUgZmlsZSBhbmQgcGxheSBpdC4KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2V4dC9mYWFjL01ha2VmaWxlLmluIGIvZXh0L2ZhYWMvTWFrZWZpbGUuaW4KaW5kZXggNzQ4ZWM2Mi4uN2UzZDcwYiAxMDA2NDQKLS0tIGEvZXh0L2ZhYWMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2ZhYWMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZmFhYy9nc3RmYWFjLmMgYi9leHQvZmFhYy9nc3RmYWFjLmMKaW5kZXggYTRhN2MzNi4uNjgwNGNiZiAxMDA2NDQKLS0tIGEvZXh0L2ZhYWMvZ3N0ZmFhYy5jCisrKyBiL2V4dC9mYWFjL2dzdGZhYWMuYwpAQCAtMjcsNyArMjcsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjIHdhdmU9c2luZSBudW0tYnVmZmVycz0xMDAgISBhdWRpb2NvbnZlcnQgISBmYWFjICEgbWF0cm9za2FtdXggISBmaWxlc2luayBsb2NhdGlvbj1zaW5lLm1rdgorICogZ3N0LWxhdW5jaC0xLjAgYXVkaW90ZXN0c3JjIHdhdmU9c2luZSBudW0tYnVmZmVycz0xMDAgISBhdWRpb2NvbnZlcnQgISBmYWFjICEgbWF0cm9za2FtdXggISBmaWxlc2luayBsb2NhdGlvbj1zaW5lLm1rdgogICogXXwgRW5jb2RlIGEgc2luZSBiZWVwIGFzIGFhYyBhbmQgd3JpdGUgdG8gbWF0cm9za2EgY29udGFpbmVyLgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtMTg5LDYgKzE4OSw4IEBACiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9mYWFjX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2ZhYWNfZ2V0X3Byb3BlcnR5OwogCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChmYWFjX2RlYnVnLCAiZmFhYyIsIDAsICJBQUMgZW5jb2RpbmciKTsKKwogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjX3RlbXBsYXRlKSk7CiAKQEAgLTIzNiw4ICsyMzgsNiBAQAogICAgICAgICAgICJCbG9jayB0eXBlIGVuY29yY2luZyIsCiAgICAgICAgICAgR1NUX1RZUEVfRkFBQ19TSE9SVENUTCwgRkFBQ19ERUZBVUxUX1NIT1JUQ1RMLAogICAgICAgICAgIEdfUEFSQU1fQ09OU1RSVUNUIHwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0KLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGZhYWNfZGVidWcsICJmYWFjIiwgMCwgIkFBQyBlbmNvZGluZyIpOwogfQogCiBzdGF0aWMgdm9pZApkaWZmIC0tZ2l0IGEvZXh0L2ZhYWQvTWFrZWZpbGUuYW0gYi9leHQvZmFhZC9NYWtlZmlsZS5hbQppbmRleCAyYWVmMTgzLi41NmFkMzBmIDEwMDY0NAotLS0gYS9leHQvZmFhZC9NYWtlZmlsZS5hbQorKysgYi9leHQvZmFhZC9NYWtlZmlsZS5hbQpAQCAtMSwxMSArMSwxMSBAQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0ZmFhZC5sYQogCiBsaWJnc3RmYWFkX2xhX1NPVVJDRVMgPSBnc3RmYWFkLmMKLWxpYmdzdGZhYWRfbGFfQ0ZMQUdTID0gLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCitsaWJnc3RmYWFkX2xhX0NGTEFHUyA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChGQUFEX0NGTEFHUykKIGxpYmdzdGZhYWRfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChGQUFEX0xJQlMpCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKEZBQURfTElCUykgJChMSUJNKQogbGliZ3N0ZmFhZF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RmYWFkX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKZGlmZiAtLWdpdCBhL2V4dC9mYWFkL01ha2VmaWxlLmluIGIvZXh0L2ZhYWQvTWFrZWZpbGUuaW4KaW5kZXggNzhiNzhlZS4uYjQ5ZDg2MiAxMDA2NDQKLS0tIGEvZXh0L2ZhYWQvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2ZhYWQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY2LDcgKzE2NSw3IEBACiBhbV9fREVQRU5ERU5DSUVTXzEgPQogbGliZ3N0ZmFhZF9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKQorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGFtX2xpYmdzdGZhYWRfbGFfT0JKRUNUUyA9IGxpYmdzdGZhYWRfbGEtZ3N0ZmFhZC5sbwogbGliZ3N0ZmFhZF9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RmYWFkX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc2NCwxMiArNzc4LDEyIEBACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0ZmFhZC5sYQogbGliZ3N0ZmFhZF9sYV9TT1VSQ0VTID0gZ3N0ZmFhZC5jCi1saWJnc3RmYWFkX2xhX0NGTEFHUyA9IC1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAorbGliZ3N0ZmFhZF9sYV9DRkxBR1MgPSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoRkFBRF9DRkxBR1MpCiAKIGxpYmdzdGZhYWRfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChGQUFEX0xJQlMpCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKEZBQURfTElCUykgJChMSUJNKQogCiBsaWJnc3RmYWFkX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdGZhYWRfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKZGlmZiAtLWdpdCBhL2V4dC9mYWFkL2dzdGZhYWQuYyBiL2V4dC9mYWFkL2dzdGZhYWQuYwppbmRleCA2NWEzZjg5Li5iNzJiNDJkIDEwMDY0NAotLS0gYS9leHQvZmFhZC9nc3RmYWFkLmMKKysrIGIvZXh0L2ZhYWQvZ3N0ZmFhZC5jCkBAIC0yNywxMCArMjcsMTAgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWV4YW1wbGUubXA0ICEgcXRkZW11eCAhIGZhYWQgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1leGFtcGxlLm1wNCAhIHF0ZGVtdXggISBmYWFkICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsKICAqIF18IFBsYXkgYWFjIGZyb20gbXA0IGZpbGUuCiAgKiB8WwotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWV4YW1wbGUuYWR0cyAhIGZhYWQgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYXV0b2F1ZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1leGFtcGxlLmFkdHMgISBmYWFkICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsKICAqIF18IFBsYXkgc3RhbmRhbG9uZSBhYWMgYml0c3RyZWFtLgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNDIsNDkgKzQyLDggQEAKICNpbmNsdWRlIDxzdHJpbmcuaD4KICNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KIAotLyogVGhlc2UgYXJlIHRoZSBjb3JyZWN0IHR5cGVzIGZvciB0aGVzZSBmdW5jdGlvbnMsIGFzIGRlZmluZWQgaW4gdGhlIHNvdXJjZSwKLSAqIHdpdGggdHlwZXMgY2hhbmdlZCB0byBtYXRjaCBnbGliIHR5cGVzLCBzaW5jZSB0aG9zZSBhcmUgZGVmaW5lZCBmb3IgdXMuCi0gKiBIb3dldmVyLCB1cHN0cmVhbSBGQUFEIGlzIGRpc3RyaWJ1dGVkIHdpdGggYSBicm9rZW4gaGVhZGVyIGZpbGUgdGhhdCBkZWZpbmVkCi0gKiB0aGVzZSB3cm9uZ2x5IChpbiBhIHdheSB3aGljaCB3YXMgYnJva2VuIG9uIDY0IGJpdCBzeXN0ZW1zKS4KLSAqCi0gKiBVcHN0cmVhbSBDVlMgc3RpbGwgaGFzIHRoZSBidWcsIGJ1dCBoYXMgYWxzbyByZW5hbWVkIGFsbCB0aGUgcHVibGljIHN5bWJvbHMKLSAqIGZvciBCZXR0ZXIgQ29ycG9yYXRlIEJyYW5kaW5nIChvciB3aGF0ZXZlciksIHNvIHdlIG5lZWQgdG8gdGFrZSB0aGF0Ci0gKiAoRkFBRF9JU19ORUFBQykgaW50byBhY2NvdW50IGFzIHdlbGwuCi0gKgotICogV2UgbXVzdCBjYWxsIHRoZW0gdXNpbmcgdGhlc2UgZGVmaW5pdGlvbnMuIE1vc3QgZGlzdHJpYnV0aW9ucyBub3cgaGF2ZSB0aGUKLSAqIGNvcnJlY3RlZCBoZWFkZXIgZmlsZSAodGhleSBkaXN0cmlidXRlIGEgcGF0Y2ggYWxvbmcgd2l0aCB0aGUgc291cmNlKSwgCi0gKiBidXQgbm90IGFsbCwgaGVuY2UgdGhpcyBUcnVseSBFdmlsIEhhY2suCi0gKgotICogTm90ZTogVGhlIHByb3RvdHlwZXMgZG9uJ3QgbmVlZCB0byBiZSBkZWZpbmVkIGNvbmRpdGlvbmFseSwgYXMgdGhlIGNwcCB3aWxsCi0gKiBkbyB0aGF0IGZvciB1cy4KLSAqLwotI2lmIEZBQUQyX01JTk9SX1ZFUlNJT04gPCA3Ci0jaWZkZWYgRkFBRF9JU19ORUFBQwotI2RlZmluZSBOZUFBQ0RlY0luaXQgTmVBQUNEZWNJbml0X25vX2RlZmluaXRpb24KLSNkZWZpbmUgTmVBQUNEZWNJbml0MiBOZUFBQ0RlY0luaXQyX25vX2RlZmluaXRpb24KLSNlbHNlCi0jZGVmaW5lIGZhYWNEZWNJbml0IGZhYWNEZWNJbml0X25vX2RlZmluaXRpb24KLSNkZWZpbmUgZmFhY0RlY0luaXQyIGZhYWNEZWNJbml0Ml9ub19kZWZpbml0aW9uCi0jZW5kaWYKLSNlbmRpZiAvKiBGQUFEMl9NSU5PUl9WRVJTSU9OIDwgNyAqLwotCiAjaW5jbHVkZSAiZ3N0ZmFhZC5oIgogCi0jaWYgRkFBRDJfTUlOT1JfVkVSU0lPTiA8IDcKLSNpZmRlZiBGQUFEX0lTX05FQUFDCi0jdW5kZWYgTmVBQUNEZWNJbml0Ci0jdW5kZWYgTmVBQUNEZWNJbml0MgotI2Vsc2UKLSN1bmRlZiBmYWFjRGVjSW5pdAotI3VuZGVmIGZhYWNEZWNJbml0MgotI2VuZGlmCi0KLWV4dGVybiBsb25nIGZhYWNEZWNJbml0IChmYWFjRGVjSGFuZGxlLCBndWludDggKiwgZ3VpbnQzMiwgZ3VpbnQzMiAqLCBndWludDggKik7Ci1leHRlcm4gZ2ludDggZmFhY0RlY0luaXQyIChmYWFjRGVjSGFuZGxlLCBndWludDggKiwgZ3VpbnQzMiwKLSAgICBndWludDMyICosIGd1aW50OCAqKTsKLQotI2VuZGlmIC8qIEZBQUQyX01JTk9SX1ZFUlNJT04gPCA3ICovCi0KIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGZhYWRfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZmFhZF9kZWJ1ZwogCkBAIC0yNzcsMTEgKzIzNiw3IEBACiAgIGZhYWQtPnBhY2tldGlzZWQgPSBGQUxTRTsKIAogICBpZiAoKHZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0ciwgImNvZGVjX2RhdGEiKSkpIHsKLSNpZiBGQUFEMl9NSU5PUl9WRVJTSU9OID49IDcKICAgICB1bnNpZ25lZCBsb25nIHNhbXBsZXJhdGU7Ci0jZWxzZQotICAgIGd1aW50MzIgc2FtcGxlcmF0ZTsKLSNlbmRpZgogICAgIGd1aW50OCBjaGFubmVsczsKIAogICAgIC8qIFdlIGhhdmUgY29kZWMgZGF0YSwgbWVhbnMgcGFja2V0aXNlZCBzdHJlYW0gKi8KQEAgLTY5MSwxMSArNjQ2LDcgQEAKIGluaXQ6CiAgIC8qIGluaXQgaWYgbm90IGFscmVhZHkgZG9uZSBkdXJpbmcgY2Fwc25lZ28gKi8KICAgaWYgKCFmYWFkLT5pbml0KSB7Ci0jaWYgRkFBRDJfTUlOT1JfVkVSU0lPTiA+PSA3CiAgICAgdW5zaWduZWQgbG9uZyByYXRlOwotI2Vsc2UKLSAgICBndWludDMyIHJhdGU7Ci0jZW5kaWYKICAgICBndWludDggY2g7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChmYWFkLCAiaW5pdGlhbGlzaW5nIC4uLiIpOwpkaWZmIC0tZ2l0IGEvZXh0L2ZhYWQvZ3N0ZmFhZC5oIGIvZXh0L2ZhYWQvZ3N0ZmFhZC5oCmluZGV4IDFlMzQ3OTcuLjAzYmQ2YWIgMTAwNjQ0Ci0tLSBhL2V4dC9mYWFkL2dzdGZhYWQuaAorKysgYi9leHQvZmFhZC9nc3RmYWFkLmgKQEAgLTIzLDExICsyMyw3IEBACiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2RlY29kZXIuaD4KIAotI2lmZGVmIEZBQURfSVNfTkVBQUMKICNpbmNsdWRlIDxuZWFhY2RlYy5oPgotI2Vsc2UKLSNpbmNsdWRlIDxmYWFkLmg+Ci0jZW5kaWYKIAogR19CRUdJTl9ERUNMUwogCmRpZmYgLS1naXQgYS9leHQvZmxpdGUvTWFrZWZpbGUuaW4gYi9leHQvZmxpdGUvTWFrZWZpbGUuaW4KaW5kZXggNDY1N2Q2MC4uNDE0NWM4ZCAxMDA2NDQKLS0tIGEvZXh0L2ZsaXRlL01ha2VmaWxlLmluCisrKyBiL2V4dC9mbGl0ZS9NYWtlZmlsZS5pbgpAQCAtMTE1LDE2ICsxMTUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI3Myw2ICsyNzIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMCw2ICszMTEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOCw3ICszMjEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzcsOCArMzM5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NSwxNiArMzU4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MCw2ICszOTQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTUsNiArNDIxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE2LDYgKzUyNCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MjksOCArNTM4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ2LDYgKzU1Myw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDMsMTYgKzYxMiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NCw2ICs2NzUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc0LDYgKzY4Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Myw2ICs2OTYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIwLDcgKzczNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2ZsdWlkc3ludGgvTWFrZWZpbGUuaW4gYi9leHQvZmx1aWRzeW50aC9NYWtlZmlsZS5pbgppbmRleCAwZjhiNGZkLi5mNzA3MDcwIDEwMDY0NAotLS0gYS9leHQvZmx1aWRzeW50aC9NYWtlZmlsZS5pbgorKysgYi9leHQvZmx1aWRzeW50aC9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODIsNiArMjgxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTksNiArMzIwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjcsNyArMzMwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ2LDggKzM0OCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjQsMTYgKzM2NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTksNiArNDAzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI0LDYgKzQzMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNSw2ICs1MzMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM4LDggKzU0Nyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NSw2ICs1NjIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEyLDE2ICs2MjEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzMsNiArNjg0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Myw2ICs2OTUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTIsNiArNzA1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOSw3ICs3NDQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9nbC9NYWtlZmlsZS5hbSBiL2V4dC9nbC9NYWtlZmlsZS5hbQppbmRleCAxYTYzNGVmLi41ZDU1ZjU0IDEwMDY0NAotLS0gYS9leHQvZ2wvTWFrZWZpbGUuYW0KKysrIGIvZXh0L2dsL01ha2VmaWxlLmFtCkBAIC0xMyw2ICsxMyw3IEBACiAJZ3N0Z2xpbWFnZXNpbmsuYyBcCiAJZ3N0Z2xmaWx0ZXJjdWJlLmMgXAogCWdzdGdsZWZmZWN0cy5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5jIFwKIAllZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYyBcCiAJZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmMgXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3RtaXJyb3IuYyBcCkBAIC0zMiwxMCArMzMsMTQgQEAKIAllZmZlY3RzL2dzdGdsZWZmZWN0c29iZWwuYyBcCiAJZWZmZWN0cy9nc3RnbGVmZmVjdGxhcGxhY2lhbi5jIFwKIAlnc3RnbGNvbG9yc2NhbGUuYyBcCisJZ3N0Z2xjb2xvcmJhbGFuY2UuYyBcCiAJZ3N0Z2xtaXhlci5jIFwKIAlnc3RnbHZpZGVvbWl4ZXIuYyBcCiAJZ3N0Z2xmaWx0ZXJzaGFkZXIuYyBcCi0JZ3N0Z2xmaWx0ZXJhcHAuYworCWdzdGdsZmlsdGVyYXBwLmMgXAorCWdzdGdsdmlld2NvbnZlcnQuYyBcCisJZ3N0Z2xzdGVyZW9zcGxpdC5jIFwKKwlnc3RnbHN0ZXJlb21peC5jCiAKIG5vaW5zdF9IRUFERVJTID0gXAogCWdzdGdsYmFzZW1peGVyLmggXApAQCAtNTEsMTkgKzU2LDIwIEBACiAJZ3N0Z2xlZmZlY3RzLmggXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5oIFwKIAlnc3RnbGNvbG9yc2NhbGUuaCBcCisJZ3N0Z2xjb2xvcmJhbGFuY2UuaCBcCiAJZ3N0Z2xtaXhlci5oIFwKIAlnc3RnbHZpZGVvbWl4ZXIuaCBcCiAJZ3N0Z2xmaWx0ZXJzaGFkZXIuaCBcCi0JZ3N0Z2xmaWx0ZXJhcHAuaAorCWdzdGdsZmlsdGVyYXBwLmggXAorCWdzdGdsc3RlcmVvc3BsaXQuaCBcCisJZ3N0Z2xzdGVyZW9taXguaCBcCisJZ3N0Z2x2aWV3Y29udmVydC5oCiAKICMgZnVsbCBvcGVuZ2wgcmVxdWlyZWQKIGlmIFVTRV9PUEVOR0wKIGxpYmdzdG9wZW5nbF9sYV9TT1VSQ0VTICs9IFwKIAlnc3RnbGZpbHRlcmdsYXNzLmMgXAogCWdzdGdsZGVpbnRlcmxhY2UuYyBcCi0JZ3N0Z2x2aWV3Y29udmVydC5jIFwKLQlnc3RnbHN0ZXJlb3NwbGl0LmMgXAotCWdzdGdsc3RlcmVvbWl4LmMgXAogCWdsdGVzdHNyYy5jIFwKIAlnc3RnbHRlc3RzcmMuYyBcCiAJZ3N0Z2xtb3NhaWMuYwpAQCAtNzEsOSArNzcsNiBAQAogbm9pbnN0X0hFQURFUlMgKz0gXAogCWdzdGdsZmlsdGVyZ2xhc3MuaCBcCiAJZ3N0Z2xkZWludGVybGFjZS5oIFwKLQlnc3RnbHN0ZXJlb3NwbGl0LmggXAotCWdzdGdsc3RlcmVvbWl4LmggXAotCWdzdGdsdmlld2NvbnZlcnQuaCBcCiAJZ2x0ZXN0c3JjLmggXAogCWdzdGdsdGVzdHNyYy5oIFwKIAlnc3RnbG1vc2FpYy5oIFwKQEAgLTkyLDcgKzk1LDExIEBACiBpZiBIQVZFX0dSQVBIRU5FCiBsaWJnc3RvcGVuZ2xfbGFfU09VUkNFUyArPSBcCiAJZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jIFwKLQlnc3RnbHRyYW5zZm9ybWF0aW9uLmgKKwlnc3RnbHZpZGVvZmxpcC5jCisKK25vaW5zdF9IRUFERVJTICs9IFwKKwlnc3RnbHRyYW5zZm9ybWF0aW9uLmggXAorCWdzdGdsdmlkZW9mbGlwLmgKIGVuZGlmCiAKIGlmIEhBVkVfSlBFRwpkaWZmIC0tZ2l0IGEvZXh0L2dsL01ha2VmaWxlLmluIGIvZXh0L2dsL01ha2VmaWxlLmluCmluZGV4IGJmMGMzMGMuLjljMzVlOGYgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9NYWtlZmlsZS5pbgorKysgYi9leHQvZ2wvTWFrZWZpbGUuaW4KQEAgLTk1LDkgKzk1LDYgQEAKIEBVU0VfT1BFTkdMX1RSVUVAYW1fX2FwcGVuZF8xID0gXAogQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xmaWx0ZXJnbGFzcy5jIFwKIEBVU0VfT1BFTkdMX1RSVUVACWdzdGdsZGVpbnRlcmxhY2UuYyBcCi1AVVNFX09QRU5HTF9UUlVFQAlnc3RnbHZpZXdjb252ZXJ0LmMgXAotQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xzdGVyZW9zcGxpdC5jIFwKLUBVU0VfT1BFTkdMX1RSVUVACWdzdGdsc3RlcmVvbWl4LmMgXAogQFVTRV9PUEVOR0xfVFJVRUAJZ2x0ZXN0c3JjLmMgXAogQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2x0ZXN0c3JjLmMgXAogQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xtb3NhaWMuYwpAQCAtMTA1LDkgKzEwMiw2IEBACiBAVVNFX09QRU5HTF9UUlVFQGFtX19hcHBlbmRfMiA9IFwKIEBVU0VfT1BFTkdMX1RSVUVACWdzdGdsZmlsdGVyZ2xhc3MuaCBcCiBAVVNFX09QRU5HTF9UUlVFQAlnc3RnbGRlaW50ZXJsYWNlLmggXAotQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2xzdGVyZW9zcGxpdC5oIFwKLUBVU0VfT1BFTkdMX1RSVUVACWdzdGdsc3RlcmVvbWl4LmggXAotQFVTRV9PUEVOR0xfVFJVRUAJZ3N0Z2x2aWV3Y29udmVydC5oIFwKIEBVU0VfT1BFTkdMX1RSVUVACWdsdGVzdHNyYy5oIFwKIEBVU0VfT1BFTkdMX1RSVUVACWdzdGdsdGVzdHNyYy5oIFwKIEBVU0VfT1BFTkdMX1RSVUVACWdzdGdsbW9zYWljLmggXApAQCAtMTIyLDE4ICsxMTYsMjIgQEAKIAogQEhBVkVfR1JBUEhFTkVfVFJVRUBhbV9fYXBwZW5kXzUgPSBcCiBASEFWRV9HUkFQSEVORV9UUlVFQAlnc3RnbHRyYW5zZm9ybWF0aW9uLmMgXAotQEhBVkVfR1JBUEhFTkVfVFJVRUAJZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5oCitASEFWRV9HUkFQSEVORV9UUlVFQAlnc3RnbHZpZGVvZmxpcC5jCiAKLUBIQVZFX0pQRUdfVFJVRUBASEFWRV9QTkdfVFJVRUBhbV9fYXBwZW5kXzYgPSBcCi1ASEFWRV9KUEVHX1RSVUVAQEhBVkVfUE5HX1RSVUVACWdzdGdsb3ZlcmxheS5jCitASEFWRV9HUkFQSEVORV9UUlVFQGFtX19hcHBlbmRfNiA9IFwKK0BIQVZFX0dSQVBIRU5FX1RSVUVACWdzdGdsdHJhbnNmb3JtYXRpb24uaCBcCitASEFWRV9HUkFQSEVORV9UUlVFQAlnc3RnbHZpZGVvZmxpcC5oCiAKIEBIQVZFX0pQRUdfVFJVRUBASEFWRV9QTkdfVFJVRUBhbV9fYXBwZW5kXzcgPSBcCitASEFWRV9KUEVHX1RSVUVAQEhBVkVfUE5HX1RSVUVACWdzdGdsb3ZlcmxheS5jCisKK0BIQVZFX0pQRUdfVFJVRUBASEFWRV9QTkdfVFJVRUBhbV9fYXBwZW5kXzggPSBcCiBASEFWRV9KUEVHX1RSVUVAQEhBVkVfUE5HX1RSVUVACWdzdGdsb3ZlcmxheS5oCiAKLUBIQVZFX1dJTkRPV19DT0NPQV9UUlVFQGFtX19hcHBlbmRfOCA9IFwKK0BIQVZFX1dJTkRPV19DT0NPQV9UUlVFQGFtX19hcHBlbmRfOSA9IFwKIEBIQVZFX1dJTkRPV19DT0NPQV9UUlVFQAljYW9wZW5nbGxheWVyc2luay5tCiAKLUBIQVZFX1dJTkRPV19DT0NPQV9UUlVFQGFtX19hcHBlbmRfOSA9IFwKK0BIQVZFX1dJTkRPV19DT0NPQV9UUlVFQGFtX19hcHBlbmRfMTAgPSBcCiBASEFWRV9XSU5ET1dfQ09DT0FfVFJVRUAJY2FvcGVuZ2xsYXllcnNpbmsuaAogCiBzdWJkaXIgPSBleHQvZ2wKQEAgLTE2MiwxNiArMTYwLDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fbm9pbnN0X0hFQURFUlNfRElTVCkgXApAQCAtMjIxLDMzICsyMTgsMzMgQEAKIAlnc3RnbHVwbG9hZGVsZW1lbnQuYyBnc3RnbGRvd25sb2FkZWxlbWVudC5jIFwKIAlnc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYyBnc3RnbGZpbHRlcmJpbi5jIGdzdGdsbWl4ZXJiaW4uYyBcCiAJZ3N0Z2xzaW5rYmluLmMgZ3N0Z2xzcmNiaW4uYyBnc3RnbGltYWdlc2luay5jIFwKLQlnc3RnbGZpbHRlcmN1YmUuYyBnc3RnbGVmZmVjdHMuYyBlZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmMgZWZmZWN0cy9nc3RnbGVmZmVjdG1pcnJvci5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0c3F1ZWV6ZS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzdHJldGNoLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RmaXNoZXllLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHR3aXJsLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RidWxnZS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3R0dW5uZWwuYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdHNxdWFyZS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RsdW1hdG9jdXJ2ZS5jIFwKKwlnc3RnbGZpbHRlcmN1YmUuYyBnc3RnbGVmZmVjdHMuYyBlZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYyBlZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdG1pcnJvci5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzcXVlZXplLmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3RzdHJldGNoLmMgZWZmZWN0cy9nc3RnbGVmZmVjdGZpc2hleWUuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHR3aXJsLmMgZWZmZWN0cy9nc3RnbGVmZmVjdGJ1bGdlLmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3R0dW5uZWwuYyBlZmZlY3RzL2dzdGdsZWZmZWN0c3F1YXJlLmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3RsdW1hdG9jdXJ2ZS5jIFwKIAllZmZlY3RzL2dzdGdsZWZmZWN0cmdidG9jdXJ2ZS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzaW4uYyBcCiAJZWZmZWN0cy9nc3RnbGVmZmVjdHhyYXkuYyBlZmZlY3RzL2dzdGdsZWZmZWN0Z2xvdy5jIFwKIAllZmZlY3RzL2dzdGdsZWZmZWN0Ymx1ci5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3Rzb2JlbC5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0bGFwbGFjaWFuLmMgZ3N0Z2xjb2xvcnNjYWxlLmMgZ3N0Z2xtaXhlci5jIFwKLQlnc3RnbHZpZGVvbWl4ZXIuYyBnc3RnbGZpbHRlcnNoYWRlci5jIGdzdGdsZmlsdGVyYXBwLmMgXAotCWdzdGdsZmlsdGVyZ2xhc3MuYyBnc3RnbGRlaW50ZXJsYWNlLmMgZ3N0Z2x2aWV3Y29udmVydC5jIFwKLQlnc3RnbHN0ZXJlb3NwbGl0LmMgZ3N0Z2xzdGVyZW9taXguYyBnbHRlc3RzcmMuYyBnc3RnbHRlc3RzcmMuYyBcCi0JZ3N0Z2xtb3NhaWMuYyBnc3RnbGRpZmZlcmVuY2VtYXR0ZS5jIGdzdGdsdHJhbnNmb3JtYXRpb24uYyBcCi0JZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5oIGdzdGdsb3ZlcmxheS5jIGNhb3BlbmdsbGF5ZXJzaW5rLm0KKwllZmZlY3RzL2dzdGdsZWZmZWN0bGFwbGFjaWFuLmMgZ3N0Z2xjb2xvcnNjYWxlLmMgXAorCWdzdGdsY29sb3JiYWxhbmNlLmMgZ3N0Z2xtaXhlci5jIGdzdGdsdmlkZW9taXhlci5jIFwKKwlnc3RnbGZpbHRlcnNoYWRlci5jIGdzdGdsZmlsdGVyYXBwLmMgZ3N0Z2x2aWV3Y29udmVydC5jIFwKKwlnc3RnbHN0ZXJlb3NwbGl0LmMgZ3N0Z2xzdGVyZW9taXguYyBnc3RnbGZpbHRlcmdsYXNzLmMgXAorCWdzdGdsZGVpbnRlcmxhY2UuYyBnbHRlc3RzcmMuYyBnc3RnbHRlc3RzcmMuYyBnc3RnbG1vc2FpYy5jIFwKKwlnc3RnbGRpZmZlcmVuY2VtYXR0ZS5jIGdzdGdsdHJhbnNmb3JtYXRpb24uYyBnc3RnbHZpZGVvZmxpcC5jIFwKKwlnc3RnbG92ZXJsYXkuYyBjYW9wZW5nbGxheWVyc2luay5tCiBhbV9fZGlyc3RhbXAgPSAkKGFtX19sZWFkaW5nX2RvdClkaXJzdGFtcAogQFVTRV9PUEVOR0xfVFJVRUBhbV9fb2JqZWN0c18xID0gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG8gXAogQFVTRV9PUEVOR0xfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UubG8gXAotQFVTRV9PUEVOR0xfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlld2NvbnZlcnQubG8gXAotQFVTRV9PUEVOR0xfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsc3RlcmVvc3BsaXQubG8gXAotQFVTRV9PUEVOR0xfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsc3RlcmVvbWl4LmxvIFwKIEBVU0VfT1BFTkdMX1RSVUVACWxpYmdzdG9wZW5nbF9sYS1nbHRlc3RzcmMubG8gXAogQFVTRV9PUEVOR0xfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsdGVzdHNyYy5sbyBcCiBAVVNFX09QRU5HTF9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xtb3NhaWMubG8KIEBIQVZFX1BOR19UUlVFQEBVU0VfT1BFTkdMX1RSVUVAYW1fX29iamVjdHNfMiA9IGxpYmdzdG9wZW5nbF9sYS1nc3RnbGRpZmZlcmVuY2VtYXR0ZS5sbwogQEhBVkVfR1JBUEhFTkVfVFJVRUBhbV9fb2JqZWN0c18zID0gIFwKLUBIQVZFX0dSQVBIRU5FX1RSVUVACWxpYmdzdG9wZW5nbF9sYS1nc3RnbHRyYW5zZm9ybWF0aW9uLmxvCitASEFWRV9HUkFQSEVORV9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5sbyBcCitASEFWRV9HUkFQSEVORV9UUlVFQAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAubG8KIEBIQVZFX0pQRUdfVFJVRUBASEFWRV9QTkdfVFJVRUBhbV9fb2JqZWN0c180ID0gbGliZ3N0b3BlbmdsX2xhLWdzdGdsb3ZlcmxheS5sbwogQEhBVkVfV0lORE9XX0NPQ09BX1RSVUVAYW1fX29iamVjdHNfNSA9ICBcCiBASEFWRV9XSU5ET1dfQ09DT0FfVFJVRUAJbGliZ3N0b3BlbmdsX2xhLWNhb3BlbmdsbGF5ZXJzaW5rLmxvCkBAIC0yNjIsNiArMjU5LDcgQEAKIAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xpbWFnZXNpbmsubG8gXAogCWxpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmN1YmUubG8gXAogCWxpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHMubG8gXAorCWVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5sbyBcCiAJZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzc291cmNlcy5sbyBcCiAJZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RpZGVudGl0eS5sbyBcCiAJZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RtaXJyb3IubG8gXApAQCAtMjgxLDEwICsyNzksMTQgQEAKIAllZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNvYmVsLmxvIFwKIAllZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdGxhcGxhY2lhbi5sbyBcCiAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JzY2FsZS5sbyBcCisJbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLmxvIFwKIAlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xtaXhlci5sbyBcCiAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlkZW9taXhlci5sbyBcCiAJbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyc2hhZGVyLmxvIFwKLQlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJhcHAubG8gJChhbV9fb2JqZWN0c18xKSBcCisJbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyYXBwLmxvIFwKKwlsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWV3Y29udmVydC5sbyBcCisJbGliZ3N0b3BlbmdsX2xhLWdzdGdsc3RlcmVvc3BsaXQubG8gXAorCWxpYmdzdG9wZW5nbF9sYS1nc3RnbHN0ZXJlb21peC5sbyAkKGFtX19vYmplY3RzXzEpIFwKIAkkKGFtX19vYmplY3RzXzIpICQoYW1fX29iamVjdHNfMykgJChhbV9fb2JqZWN0c180KSBcCiAJJChhbV9fb2JqZWN0c181KQogbGliZ3N0b3BlbmdsX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdG9wZW5nbF9sYV9PQkpFQ1RTKQpAQCAtMzU5LDEyICszNjEsMTMgQEAKIAlnc3RnbGRvd25sb2FkZWxlbWVudC5oIGdzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5oIFwKIAlnc3RnbGZpbHRlcmJpbi5oIGdzdGdsbWl4ZXJiaW4uaCBnc3RnbHNpbmtiaW4uaCBnc3RnbHNyY2Jpbi5oIFwKIAlnc3RnbGltYWdlc2luay5oIGdzdGdsZmlsdGVyY3ViZS5oIGdzdGdsZWZmZWN0cy5oIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuaCBnc3RnbGNvbG9yc2NhbGUuaCBnc3RnbG1peGVyLmggXAotCWdzdGdsdmlkZW9taXhlci5oIGdzdGdsZmlsdGVyc2hhZGVyLmggZ3N0Z2xmaWx0ZXJhcHAuaCBcCi0JZ3N0Z2xmaWx0ZXJnbGFzcy5oIGdzdGdsZGVpbnRlcmxhY2UuaCBnc3RnbHN0ZXJlb3NwbGl0LmggXAotCWdzdGdsc3RlcmVvbWl4LmggZ3N0Z2x2aWV3Y29udmVydC5oIGdsdGVzdHNyYy5oIGdzdGdsdGVzdHNyYy5oIFwKLQlnc3RnbG1vc2FpYy5oIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmggXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RsdW1hdG9jdXJ2ZS5oIGdzdGdsZGlmZmVyZW5jZW1hdHRlLmggXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5oIGdzdGdsY29sb3JzY2FsZS5oIFwKKwlnc3RnbGNvbG9yYmFsYW5jZS5oIGdzdGdsbWl4ZXIuaCBnc3RnbHZpZGVvbWl4ZXIuaCBcCisJZ3N0Z2xmaWx0ZXJzaGFkZXIuaCBnc3RnbGZpbHRlcmFwcC5oIGdzdGdsc3RlcmVvc3BsaXQuaCBcCisJZ3N0Z2xzdGVyZW9taXguaCBnc3RnbHZpZXdjb252ZXJ0LmggZ3N0Z2xmaWx0ZXJnbGFzcy5oIFwKKwlnc3RnbGRlaW50ZXJsYWNlLmggZ2x0ZXN0c3JjLmggZ3N0Z2x0ZXN0c3JjLmggZ3N0Z2xtb3NhaWMuaCBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaCBlZmZlY3RzL2dzdGdsZWZmZWN0bHVtYXRvY3VydmUuaCBcCisJZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuaCBnc3RnbHRyYW5zZm9ybWF0aW9uLmggZ3N0Z2x2aWRlb2ZsaXAuaCBcCiAJZ3N0Z2xvdmVybGF5LmggY2FvcGVuZ2xsYXllcnNpbmsuaAogSEVBREVSUyA9ICQobm9pbnN0X0hFQURFUlMpCiBhbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQpAQCAtNDIzLDYgKzQyNiw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtNDYwLDYgKzQ2NSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtNDY4LDcgKzQ3NSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTQ4Nyw4ICs0OTMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtNTA1LDE2ICs1MTIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNTQwLDYgKzU0OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTU2NSw2ICs1NzUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC02NjYsNiArNjc4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTY3OSw4ICs2OTIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC02OTYsNiArNzA3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTc1MywxNiArNzY2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtODE0LDYgKzgyOSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC04MjQsNiArODQwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtODMzLDYgKzg1MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC04NzAsNyArODg5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC05MTUsMjcgKzkzMywzMiBAQAogCWdzdGdsdXBsb2FkZWxlbWVudC5jIGdzdGdsZG93bmxvYWRlbGVtZW50LmMgXAogCWdzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5jIGdzdGdsZmlsdGVyYmluLmMgZ3N0Z2xtaXhlcmJpbi5jIFwKIAlnc3RnbHNpbmtiaW4uYyBnc3RnbHNyY2Jpbi5jIGdzdGdsaW1hZ2VzaW5rLmMgXAotCWdzdGdsZmlsdGVyY3ViZS5jIGdzdGdsZWZmZWN0cy5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYyBlZmZlY3RzL2dzdGdsZWZmZWN0bWlycm9yLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RzcXVlZXplLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHN0cmV0Y2guYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdGZpc2hleWUuYyBlZmZlY3RzL2dzdGdsZWZmZWN0dHdpcmwuYyBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdGJ1bGdlLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHR1bm5lbC5jIFwKLQllZmZlY3RzL2dzdGdsZWZmZWN0c3F1YXJlLmMgZWZmZWN0cy9nc3RnbGVmZmVjdGx1bWF0b2N1cnZlLmMgXAorCWdzdGdsZmlsdGVyY3ViZS5jIGdzdGdsZWZmZWN0cy5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMgXAorCWVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RpZGVudGl0eS5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0bWlycm9yLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNxdWVlemUuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHN0cmV0Y2guYyBlZmZlY3RzL2dzdGdsZWZmZWN0ZmlzaGV5ZS5jIFwKKwllZmZlY3RzL2dzdGdsZWZmZWN0dHdpcmwuYyBlZmZlY3RzL2dzdGdsZWZmZWN0YnVsZ2UuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdHR1bm5lbC5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RzcXVhcmUuYyBcCisJZWZmZWN0cy9nc3RnbGVmZmVjdGx1bWF0b2N1cnZlLmMgXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3RyZ2J0b2N1cnZlLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNpbi5jIFwKIAllZmZlY3RzL2dzdGdsZWZmZWN0eHJheS5jIGVmZmVjdHMvZ3N0Z2xlZmZlY3RnbG93LmMgXAogCWVmZmVjdHMvZ3N0Z2xlZmZlY3RibHVyLmMgZWZmZWN0cy9nc3RnbGVmZmVjdHNvYmVsLmMgXAotCWVmZmVjdHMvZ3N0Z2xlZmZlY3RsYXBsYWNpYW4uYyBnc3RnbGNvbG9yc2NhbGUuYyBnc3RnbG1peGVyLmMgXAotCWdzdGdsdmlkZW9taXhlci5jIGdzdGdsZmlsdGVyc2hhZGVyLmMgZ3N0Z2xmaWx0ZXJhcHAuYyBcCi0JJChhbV9fYXBwZW5kXzEpICQoYW1fX2FwcGVuZF8zKSAkKGFtX19hcHBlbmRfNSkgXAotCSQoYW1fX2FwcGVuZF82KSAkKGFtX19hcHBlbmRfOCkKKwllZmZlY3RzL2dzdGdsZWZmZWN0bGFwbGFjaWFuLmMgZ3N0Z2xjb2xvcnNjYWxlLmMgXAorCWdzdGdsY29sb3JiYWxhbmNlLmMgZ3N0Z2xtaXhlci5jIGdzdGdsdmlkZW9taXhlci5jIFwKKwlnc3RnbGZpbHRlcnNoYWRlci5jIGdzdGdsZmlsdGVyYXBwLmMgZ3N0Z2x2aWV3Y29udmVydC5jIFwKKwlnc3RnbHN0ZXJlb3NwbGl0LmMgZ3N0Z2xzdGVyZW9taXguYyAkKGFtX19hcHBlbmRfMSkgXAorCSQoYW1fX2FwcGVuZF8zKSAkKGFtX19hcHBlbmRfNSkgJChhbV9fYXBwZW5kXzcpIFwKKwkkKGFtX19hcHBlbmRfOSkKIG5vaW5zdF9IRUFERVJTID0gZ3N0Z2xiYXNlbWl4ZXIuaCBnc3RnbHVwbG9hZGVsZW1lbnQuaCBcCiAJZ3N0Z2xkb3dubG9hZGVsZW1lbnQuaCBnc3RnbGNvbG9yY29udmVydGVsZW1lbnQuaCBcCiAJZ3N0Z2xmaWx0ZXJiaW4uaCBnc3RnbG1peGVyYmluLmggZ3N0Z2xzaW5rYmluLmggZ3N0Z2xzcmNiaW4uaCBcCiAJZ3N0Z2xpbWFnZXNpbmsuaCBnc3RnbGZpbHRlcmN1YmUuaCBnc3RnbGVmZmVjdHMuaCBcCi0JZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmggZ3N0Z2xjb2xvcnNjYWxlLmggZ3N0Z2xtaXhlci5oIFwKLQlnc3RnbHZpZGVvbWl4ZXIuaCBnc3RnbGZpbHRlcnNoYWRlci5oIGdzdGdsZmlsdGVyYXBwLmggXAotCSQoYW1fX2FwcGVuZF8yKSAkKGFtX19hcHBlbmRfNCkgJChhbV9fYXBwZW5kXzcpIFwKLQkkKGFtX19hcHBlbmRfOSkKKwllZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuaCBnc3RnbGNvbG9yc2NhbGUuaCBcCisJZ3N0Z2xjb2xvcmJhbGFuY2UuaCBnc3RnbG1peGVyLmggZ3N0Z2x2aWRlb21peGVyLmggXAorCWdzdGdsZmlsdGVyc2hhZGVyLmggZ3N0Z2xmaWx0ZXJhcHAuaCBnc3RnbHN0ZXJlb3NwbGl0LmggXAorCWdzdGdsc3RlcmVvbWl4LmggZ3N0Z2x2aWV3Y29udmVydC5oICQoYW1fX2FwcGVuZF8yKSBcCisJJChhbV9fYXBwZW5kXzQpICQoYW1fX2FwcGVuZF82KSAkKGFtX19hcHBlbmRfOCkgXAorCSQoYW1fX2FwcGVuZF8xMCkKIGxpYmdzdG9wZW5nbF9sYV9PQkpDRkxBR1MgPSBcCiAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCkBAIC0xMDQ2LDYgKzEwNjksOCBAQAogZWZmZWN0cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApOgogCUAkKE1LRElSX1ApIGVmZmVjdHMvJChERVBESVIpCiAJQDogPiBlZmZlY3RzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5sbzogIFwKKwllZmZlY3RzLyQoYW1fX2RpcnN0YW1wKSBlZmZlY3RzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIGVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c3NvdXJjZXMubG86ICBcCiAJZWZmZWN0cy8kKGFtX19kaXJzdGFtcCkgZWZmZWN0cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiBlZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdGlkZW50aXR5LmxvOiAgXApAQCAtMTA5Nyw2ICsxMTIyLDcgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtY2FvcGVuZ2xsYXllcnNpbmsuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ2x0ZXN0c3JjLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsYmFzZW1peGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGNvbG9yc2NhbGUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5QbG9AYW1fX3F1b3RlQApAQCAtMTEyMCw2ICsxMTQ2LDcgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x0ZXN0c3JjLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsdHJhbnNmb3JtYXRpb24uUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x1cGxvYWRlbGVtZW50LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlkZW9mbGlwLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlkZW9taXhlci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZXdjb252ZXJ0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdG9wZW5nbC5QbG9AYW1fX3F1b3RlQApAQCAtMTEzMiw2ICsxMTU5LDcgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RsdW1hdG9jdXJ2ZS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdG1pcnJvci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHJnYnRvY3VydmUuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWZmZWN0cy8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2luLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWZmZWN0cy8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c29iZWwuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzcXVhcmUuUGxvQGFtX19xdW90ZUAKQEAgLTEyNTAsNiArMTI3OCwxMyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0cy5sbyBgdGVzdCAtZiAnZ3N0Z2xlZmZlY3RzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZWZmZWN0cy5jCiAKK2VmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5sbzogZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5sbyAtTUQgLU1QIC1NRiBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLlRwbyAtYyAtbyBlZmZlY3RzL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNjdXJ2ZXMubG8gYHRlc3QgLWYgJ2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWZmZWN0cy8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5UcG8gZWZmZWN0cy8kKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5jJyBvYmplY3Q9J2VmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c2N1cnZlcy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3RzY3VydmVzLmxvIGB0ZXN0IC1mICdlZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlZmZlY3RzL2dzdGdsZWZmZWN0c2N1cnZlcy5jCisKIGVmZmVjdHMvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZWZmZWN0c3NvdXJjZXMubG86IGVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzc291cmNlcy5sbyAtTUQgLU1QIC1NRiBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzc291cmNlcy5UcG8gLWMgLW8gZWZmZWN0cy9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzc291cmNlcy5sbyBgdGVzdCAtZiAnZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVmZmVjdHMvJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGVmZmVjdHNzb3VyY2VzLlRwbyBlZmZlY3RzLyQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xlZmZlY3Rzc291cmNlcy5QbG8KQEAgLTEzODMsNiArMTQxOCwxMyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JzY2FsZS5sbyBgdGVzdCAtZiAnZ3N0Z2xjb2xvcnNjYWxlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsY29sb3JzY2FsZS5jCiAKK2xpYmdzdG9wZW5nbF9sYS1nc3RnbGNvbG9yYmFsYW5jZS5sbzogZ3N0Z2xjb2xvcmJhbGFuY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGNvbG9yYmFsYW5jZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLlRwbyAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xjb2xvcmJhbGFuY2UubG8gYHRlc3QgLWYgJ2dzdGdsY29sb3JiYWxhbmNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsY29sb3JiYWxhbmNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGNvbG9yYmFsYW5jZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGNvbG9yYmFsYW5jZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbGNvbG9yYmFsYW5jZS5jJyBvYmplY3Q9J2xpYmdzdG9wZW5nbF9sYS1nc3RnbGNvbG9yYmFsYW5jZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsY29sb3JiYWxhbmNlLmxvIGB0ZXN0IC1mICdnc3RnbGNvbG9yYmFsYW5jZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGNvbG9yYmFsYW5jZS5jCisKIGxpYmdzdG9wZW5nbF9sYS1nc3RnbG1peGVyLmxvOiBnc3RnbG1peGVyLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xtaXhlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsbWl4ZXIuVHBvIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbG1peGVyLmxvIGB0ZXN0IC1mICdnc3RnbG1peGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsbWl4ZXIuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsbWl4ZXIuVHBvICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xtaXhlci5QbG8KQEAgLTE0MTEsMjAgKzE0NTMsNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyYXBwLmxvIGB0ZXN0IC1mICdnc3RnbGZpbHRlcmFwcC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGZpbHRlcmFwcC5jCiAKLWxpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLmxvOiBnc3RnbGZpbHRlcmdsYXNzLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MuVHBvIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLmxvIGB0ZXN0IC1mICdnc3RnbGZpbHRlcmdsYXNzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZmlsdGVyZ2xhc3MuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MuVHBvICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbGZpbHRlcmdsYXNzLmMnIG9iamVjdD0nbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLmxvIGB0ZXN0IC1mICdnc3RnbGZpbHRlcmdsYXNzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZmlsdGVyZ2xhc3MuYwotCi1saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5sbzogZ3N0Z2xkZWludGVybGFjZS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLlRwbyAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5sbyBgdGVzdCAtZiAnZ3N0Z2xkZWludGVybGFjZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGRlaW50ZXJsYWNlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xkZWludGVybGFjZS5jJyBvYmplY3Q9J2xpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5sbyBgdGVzdCAtZiAnZ3N0Z2xkZWludGVybGFjZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGRlaW50ZXJsYWNlLmMKLQogbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlld2NvbnZlcnQubG86IGdzdGdsdmlld2NvbnZlcnQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZXdjb252ZXJ0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWV3Y29udmVydC5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlld2NvbnZlcnQubG8gYHRlc3QgLWYgJ2dzdGdsdmlld2NvbnZlcnQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2x2aWV3Y29udmVydC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWV3Y29udmVydC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZXdjb252ZXJ0LlBsbwpAQCAtMTQ0Niw2ICsxNDc0LDIwIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmdsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5nbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xzdGVyZW9taXgubG8gYHRlc3QgLWYgJ2dzdGdsc3RlcmVvbWl4LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc3RlcmVvbWl4LmMKIAorbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG86IGdzdGdsZmlsdGVyZ2xhc3MuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG8gYHRlc3QgLWYgJ2dzdGdsZmlsdGVyZ2xhc3MuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xmaWx0ZXJnbGFzcy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbGZpbHRlcmdsYXNzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsZmlsdGVyZ2xhc3MuYycgb2JqZWN0PSdsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xmaWx0ZXJnbGFzcy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsZmlsdGVyZ2xhc3MubG8gYHRlc3QgLWYgJ2dzdGdsZmlsdGVyZ2xhc3MuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xmaWx0ZXJnbGFzcy5jCisKK2xpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvOiBnc3RnbGRlaW50ZXJsYWNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UuVHBvIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvIGB0ZXN0IC1mICdnc3RnbGRlaW50ZXJsYWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZGVpbnRlcmxhY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UuVHBvICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2xkZWludGVybGFjZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbGRlaW50ZXJsYWNlLmMnIG9iamVjdD0nbGliZ3N0b3BlbmdsX2xhLWdzdGdsZGVpbnRlcmxhY2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbGRlaW50ZXJsYWNlLmxvIGB0ZXN0IC1mICdnc3RnbGRlaW50ZXJsYWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZGVpbnRlcmxhY2UuYworCiBsaWJnc3RvcGVuZ2xfbGEtZ2x0ZXN0c3JjLmxvOiBnbHRlc3RzcmMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nbHRlc3RzcmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nbHRlc3RzcmMuVHBvIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nbHRlc3RzcmMubG8gYHRlc3QgLWYgJ2dsdGVzdHNyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BnbHRlc3RzcmMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdsdGVzdHNyYy5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nbHRlc3RzcmMuUGxvCkBAIC0xNDgxLDYgKzE1MjMsMTMgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbHRyYW5zZm9ybWF0aW9uLmxvIGB0ZXN0IC1mICdnc3RnbHRyYW5zZm9ybWF0aW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsdHJhbnNmb3JtYXRpb24uYwogCitsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAubG86IGdzdGdsdmlkZW9mbGlwLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5UcG8gLWMgLW8gbGliZ3N0b3BlbmdsX2xhLWdzdGdsdmlkZW9mbGlwLmxvIGB0ZXN0IC1mICdnc3RnbHZpZGVvZmxpcC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHZpZGVvZmxpcC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAuVHBvICQoREVQRElSKS9saWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2x2aWRlb2ZsaXAuYycgb2JqZWN0PSdsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2x2aWRlb2ZsaXAubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuZ2xfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmdsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbHZpZGVvZmxpcC5sbyBgdGVzdCAtZiAnZ3N0Z2x2aWRlb2ZsaXAuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2x2aWRlb2ZsaXAuYworCiBsaWJnc3RvcGVuZ2xfbGEtZ3N0Z2xvdmVybGF5LmxvOiBnc3RnbG92ZXJsYXkuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5nbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuZ2xfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5nbF9sYS1nc3RnbG92ZXJsYXkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbG92ZXJsYXkuVHBvIC1jIC1vIGxpYmdzdG9wZW5nbF9sYS1nc3RnbG92ZXJsYXkubG8gYHRlc3QgLWYgJ2dzdGdsb3ZlcmxheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbG92ZXJsYXkuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmdsX2xhLWdzdGdsb3ZlcmxheS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5nbF9sYS1nc3RnbG92ZXJsYXkuUGxvCmRpZmYgLS1naXQgYS9leHQvZ2wvY2FvcGVuZ2xsYXllcnNpbmsubSBiL2V4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tCmluZGV4IDIyOTU0ZmYuLjQyYjhmOTAgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tCisrKyBiL2V4dC9nbC9jYW9wZW5nbGxheWVyc2luay5tCkBAIC0xNjcsOSArMTY3LDEyIEBACiAgICAgR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKLSAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwKLSAgICAgICAgICAgICJSR0JBIikpCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIKKyAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwiCisgICAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIpCiAgICAgKTsKIAogZW51bQpAQCAtNDc2LDYgKzQ3OSw4IEBACiAKICAgaWYgKGNhX3NpbmstPmRpc3BsYXkpCiAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoY2Ffc2luay0+ZGlzcGxheSwgU1VQUE9SVEVEX0dMX0FQSVMpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7CiB9CiAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgpAQCAtODg3LDEzICs4OTIsMjAgQEAKIGdzdF9jYV9vcGVuZ2xfbGF5ZXJfc2lua190aHJlYWRfaW5pdF9yZWRpc3BsYXkgKEdzdENBT3BlbkdMTGF5ZXJTaW5rICogY2Ffc2luaykKIHsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjYV9zaW5rLT5jb250ZXh0LT5nbF92dGFibGU7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCi0gIGNhX3NpbmstPnJlZGlzcGxheV9zaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY2Ffc2luay0+Y29udGV4dCk7Ci0KLSAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjawotICAgICAgKGNhX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsICZjYV9zaW5rLT5hdHRyX3Bvc2l0aW9uLAotICAgICAgICAgICZjYV9zaW5rLT5hdHRyX3RleHR1cmUpKQorICBpZiAoIShjYV9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAoY2Ffc2luay0+Y29udGV4dCwgJmVycm9yKSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChjYV9zaW5rLCAiRmFpbGVkIHRvIGxpbmsgc2hhZGVyOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKICAgICBnc3RfY2Ffb3BlbmdsX2xheWVyX3NpbmtfY2xlYW51cF9nbHRocmVhZCAoY2Ffc2luayk7CisgICAgcmV0dXJuOworICB9CisKKyAgY2Ffc2luay0+YXR0cl9wb3NpdGlvbiA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGNhX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsCisgICAgICAiYV9wb3NpdGlvbiIpOworICBjYV9zaW5rLT5hdHRyX3RleHR1cmUgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChjYV9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyLAorICAgICAgImFfdGV4Y29vcmQiKTsKIAogICBpZiAoZ2wtPkdlblZlcnRleEFycmF5cykgewogICAgIGdsLT5HZW5WZXJ0ZXhBcnJheXMgKDEsICZjYV9zaW5rLT52YW8pOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RpZGVudGl0eS5jIGIvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RpZGVudGl0eS5jCmluZGV4IDk3NDBjYzcuLjU2ODdkNjQgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0aWRlbnRpdHkuYworKysgYi9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdGlkZW50aXR5LmMKQEAgLTQyLDE3ICs0MiwyMCBAQAogCiAgIHNoYWRlciA9IGdfaGFzaF90YWJsZV9sb29rdXAgKGVmZmVjdHMtPnNoYWRlcnN0YWJsZSwgImlkZW50aXR5MCIpOwogICBpZiAoIXNoYWRlcikgewotICAgIHNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb250ZXh0KTsKLSAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChlZmZlY3RzLT5zaGFkZXJzdGFibGUsIChnY2hhciAqKSAiaWRlbnRpdHkwIiwgc2hhZGVyKTsKKyAgICBHRXJyb3IgKmVycm9yID0gTlVMTDsKIAotICAgIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92Zl9hbmRfY2hlY2sgKHNoYWRlciwKLSAgICAgICAgICAgICZmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MsICZmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYykpIHsKLSAgICAgIC8qIGdzdCBnbCBjb250ZXh0IGVycm9yIGlzIGFscmVhZHkgc2V0ICovCisgICAgaWYgKCEoc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAoY29udGV4dCwgJmVycm9yKSkpIHsKICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChlZmZlY3RzLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAotICAgICAgICAgICgiRmFpbGVkIHRvIGluaXRpYWxpemUgaWRlbnRpdHkgc2hhZGVyLCAlcyIsCi0gICAgICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSksIChOVUxMKSk7CisgICAgICAgICAgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBpZGVudGl0eSBzaGFkZXI6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpLCAoTlVMTCkpOwogICAgICAgcmV0dXJuOwogICAgIH0KKworICAgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV9wb3NpdGlvbiIpOworICAgIGZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jID0KKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3RleGNvb3JkIik7CisKKyAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChlZmZlY3RzLT5zaGFkZXJzdGFibGUsIChnY2hhciAqKSAiaWRlbnRpdHkwIiwgc2hhZGVyKTsKICAgfQogICBnc3RfZ2xfc2hhZGVyX3VzZSAoc2hhZGVyKTsKIApkaWZmIC0tZ2l0IGEvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMgYi9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTYzNjFiCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmMKQEAgLTAsMCArMSwyMTAgQEAKKy8qIAorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggRmlsaXBwbyBBcmdpb2xhcyA8ZmlsaXBwby5hcmdpb2xhc0BnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0Z2xlZmZlY3RzY3VydmVzLmgiCisKKy8qIENVUlZFIGZvciB0aGUgaGVhdCBzaWduYXR1cmUgZWZmZWN0ICovCitjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSB4cHJvX2N1cnZlID0geworICAyNTYsIDEsIDMsCisgICJcMFwwXDM3XDBcMFwzN1wwXDFcNDBcMFwyIVwwXDJcIlwwXDNcIlwxXDQlXDFcNCVcMVw1JVwxXDUnXDFcNydcMVw3KFwxXDciCisgICAgICAiKFwxXDEwKlwxXDExK1wxXDExLFwxXDEyLFwxXDEzL1wxXDE0L1wxXDE0IiAiMVwyXDE1IiAiMVwyXDE1IiAiMVwyXDE2IgorICAgICAgIjRcMlwxNyIgIiIgIjRcM1wxNyIgIjVcM1wyMiIgIjdcM1wyMiIgIjdcM1wyMyIgIjhcM1wyNCIKKyAgICAgICI5XDNcMjU7XDNcMjY7XDNcMjc8XDNcMjc9XDRcMzEiCisgICAgICAiPVw0XDMzP1w0XDM0QFw1XDM0Qlw1XDM1Q1w1XDM2RFw1XDQwRFw1XDQwR1w1IUdcNlwiSFw2JEhcNyZKXDcmS1w3Kk1cNypNIgorICAgICAgIlwxMCtOXDEwLVBcMTEtUFwxMS9SXDExIiAiM1JcMTEiICIzVFwxMiIgIjRVXDEyIiAiNVVcMTMiICI3V1wxNCIgIjhZXDE0IgorICAgICAgIjlZXDE0IgorICAgICAgIjxZXDE2PVtcMTZAXlwxNkBeXDE3Q15cMTdEYFwyMEZgXDIwSmJcMjJKYlwyMktjXDIzTWVcMjROZlwyNVFnXDI2UmdcMjdUaSIKKyAgICAgICJcMjdXalwzMFhsXDMxWWxcMzNcXG1cMzRecFwzNWBwXDQwYnBcNDBmcSFmciRndCRsdCVsdSdtdihweCpxeS10eS91ei94fDAiCisgICAgICAieX0zfH00fX41XDE3N1wyMDE4XDIwM1wyMDE5XDIwM1wyMDE7XDIwNFwyMDI9XDIwN1wyMDM/XDIxMFwyMDRAXDIxNFwyMDRDIgorICAgICAgIlwyMTRcMjA2RFwyMTZcMjA3R1wyMTdcMjEwSFwyMjNcMjExS1wyMjNcMjExTVwyMjVcMjEyUFwyMjZcMjE0UVwyMzFcMjE1VCIKKyAgICAgICJcMjMyXDIxNVVcMjM0XDIxNlhcMjM1XDIxN1lcMjQwXDIyMFxcXDI0MVwyMjBeXDI0M1wyMjFgXDI0NFwyMjNiXDI0NlwyMjQiCisgICAgICAiZVwyNTBcMjI0ZlwyNTJcMjI1aVwyNTNcMjI2bFwyNTVcMjI3bVwyNTZcMjMxcFwyNjFcMjMxcVwyNjJcMjMydFwyNjRcMjMzIgorICAgICAgInZcMjY1XDIzNHhcMjY3XDIzNHpcMjcwXDIzNXxcMjcxXDIzNn5cMjc0XDI0MFwyMDFcMjc1XDI0MFwyMDJcMjc3XDI0MVwyMDQiCisgICAgICAiXDMwMFwyNDJcMjA3XDMwMlwyNDNcMjEwXDMwM1wyNDNcMjEyXDMwNVwyNDRcMjE0XDMwNlwyNDVcMjE2XDMwN1wyNDZcMjIwIgorICAgICAgIlwzMTFcMjUwXDIyMVwzMTNcMjUwXDIyNFwzMTVcMjUxXDIyNlwzMTZcMjUyXDIyN1wzMTdcMjUzXDIzMlwzMjFcMjUzXDIzNCIKKyAgICAgICJcMzIyXDI1NFwyMzVcMzIzXDI1NVwyNDBcMzI1XDI1NlwyNDJcMzI2XDI1NlwyNDJcMzMwXDI1NlwyNDVcMzMxXDI2MVwyNTAiCisgICAgICAiXDMzMVwyNjJcMjUxXDMzMlwyNjJcMjUzXDMzNFwyNjNcMjU1XDMzNVwyNjRcMjU2XDMzNlwyNjVcMjYxXDM0MFwyNjZcMjYzIgorICAgICAgIlwzNDFcMjY2XDI2NFwzNDJcMjY3XDI2NlwzNDNcMjcwXDI3MFwzNDRcMjcxXDI3MVwzNDRcMjcxXDI3MVwzNDZcMjczXDI3NiIKKyAgICAgICJcMzQ3XDI3NFwyNzdcMzUwXDI3NVwyNzdcMzUxXDI3NVwzMDJcMzUyXDI3NlwzMDRcMzUzXDI3N1wzMDZcMzUzXDMwMFwzMDciCisgICAgICAiXDM1NVwzMDBcMzExXDM1NlwzMDFcMzE0XDM1NlwzMDJcMzE1XDM1N1wzMDNcMzE3XDM2MFwzMDRcMzIwXDM2MFwzMDRcMzIyIgorICAgICAgIlwzNjFcMzA1XDMyM1wzNjJcMzA2XDMyNVwzNjJcMzA3XDMyN1wzNjNcMzA3XDMzMFwzNjNcMzEwXDMzMFwzNjRcMzExXDMzMyIKKyAgICAgICJcMzY0XDMxM1wzMzRcMzY1XDMxM1wzMzZcMzY1XDMxNFwzNDBcMzY1XDMxNFwzNDJcMzY2XDMxNlwzNDJcMzY2XDMxNlwzNDYiCisgICAgICAiXDM2N1wzMTdcMzQ3XDM2N1wzMjBcMzUxXDM2N1wzMjBcMzUzXDM3MFwzMjJcMzU0XDM3MFwzMjJcMzU2XDM3MFwzMjNcMzU2IgorICAgICAgIlwzNzBcMzI0XDM2MFwzNzFcMzI1XDM2MFwzNzFcMzI1XDM2M1wzNzFcMzI2XDM2M1wzNzFcMzI3XDM2M1wzNzJcMzMwXDM2NSIKKyAgICAgICJcMzcyXDMzMFwzNjZcMzcyXDMzMVwzNjZcMzcyXDMzMVwzNzBcMzcyXDMzMlwzNzFcMzczXDMzMlwzNzFcMzczXDMzM1wzNzIiCisgICAgICAiXDM3M1wzMzRcMzczXDM3M1wzMzVcMzczXDM3M1wzMzZcMzc0XDM3M1wzMzZcMzc0XDM3NFwzMzdcMzc0XDM3NFwzNDBcMzc1IgorICAgICAgIlwzNzRcMzQxXDM3NVwzNzRcMzQxXDM3NlwzNzRcMzQyXDM3NlwzNzRcMzQzXDM3NlwzNzRcMzQ0XDM3NlwzNzRcMzQ0XDM3NyIKKyAgICAgICJcMzc0XDM0NVwzNzdcMzc0XDM0NlwzNzdcMzc1XDM0NlwzNzdcMzc1XDM0NlwzNzdcMzc1XDM0N1wzNzdcMzc1XDM1MFwzNzciCisgICAgICAiXDM3NVwzNTFcMzc3XDM3NVwzNTJcMzc3XDM3NVwzNTJcMzc3XDM3NVwzNTJcMzc3XDM3NVwzNTNcMzc3XDM3NVwzNTNcMzc3IgorICAgICAgIlwzNzZcMzU0XDM3N1wzNzZcMzU0XDM3N1wzNzZcMzU2XDM3N1wzNzZcMzU2XDM3N1wzNzZcMzU2XDM3N1wzNzZcMzU3XDM3NyIKKyAgICAgICJcMzc2XDM2MFwzNzdcMzc2XDM2MFwzNzdcMzc2XDM2MFwzNzdcMzc2XDM2MFwzNzdcMzc2XDM2MlwzNzdcMzc2XDM2MlwzNzciCisgICAgICAiXDM3NlwzNjNcMzc3XDM3NlwzNjNcMzc3XDM3NlwzNjNcMzc3XDM3NlwzNjNcMzc3XDM3NlwzNjRcMzc3XDM3NlwzNjRcMzc3IgorICAgICAgIlwzNzZcMzY1XDM3N1wzNzdcMzY1XDM3N1wzNzdcMzY2XDM3N1wzNzdcMzY2XDM3N1wzNzdcMzY2XDM3N1wzNzdcMzY3XDM3NyIKKyAgICAgICJcMzc3XDM2N1wzNzdcMzc3XDM2N1wzNzdcMzc3XDM3MCIsCit9OworCitjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSBsdW1hX3hwcm9fY3VydmUgPSB7CisgIDI1NiwgMSwgMywKKyAgIlwwXDBcMVwwXDFcMVwwXDFcMlwwXDFcMlwwXDFcMlwwXDFcMlwwXDFcM1wwXDJcM1wwXDJcNFwwXDJcNFwwXDJcNVwwXDJcNiIKKyAgICAgICJcMFwzXDZcMFwzXDZcMFwzXDdcMFwzXDEwXDBcNFwxMFwwXDRcMTFcMFw0XDEyXDBcNFwxMlwxXDRcMTNcMVw1XDE0XDFcNVwxNSIKKyAgICAgICJcMVw1XDE1XDFcNVwxNlwxXDVcMTdcMVw2XDE3XDFcNlwyMFwxXDdcMjFcMVw3XDIzXDJcMTBcMjNcMlwxMFwyNFwyXDEwXDI0IgorICAgICAgIlwyXDExXDI2XDJcMTFcMjdcMlwxMVwzMFwzXDExXDMxXDNcMTJcMzFcM1wxM1wzMlwzXDEzXDMzXDRcMTNcMzRcNFwxNFwzNSIKKyAgICAgICJcNFwxNFwzNlw0XDE1XDM3XDVcMTVcNDBcNVwxNVwiXDZcMTYjXDZcMTcjXDZcMjAkXDdcMjAlXDdcMjAlXDEwXDIxJlwxMFwyMiIKKyAgICAgICInXDEwXDIyKVwxMVwyNCpcMTFcMjQqXDEyXDI0K1wxMlwyNi5cMTNcMjYuXDE0XDI3LlwxNFwzMC9cMTVcMzEiCisgICAgICAiMVwxNVwzMSIgIiIgIjJcMTZcMzIiICIzXDE2XDMzIiAiM1wyMFwzMyIgIjVcMjBcMzUiICI2XDIwXDM2IiAiN1wyMlwzNyIKKyAgICAgICI3XDIzXCI5XDIzIzlcMjQkIiAiOlwyNSQ8XDI3JjxcMjcnPVwzMSc/XDMxKT9cMzIqQFwzNStCXDM1LUNcMzYuQ1wzNyIKKyAgICAgICIxRVwiMkYjM0gkNUgmNkknN0kpN0siCisgICAgICAiKzpNLTxOLTxOMUBOMUJRMkJRNkNRNkVVN0hVPElVPUlWQE5YQE5YQlFaQ1NbRlVbSFVdSVZfTVpfTltfUV1gU19iVWBkWGJlIgorICAgICAgIlpiZV1nZ11pZ2BqaWBqamRsamVubGdwbGpxbnB3cHB3cHF4cXN6cXd8c3h9dXxcMjAxdX1cMjAzd1wxNzdcMjA0eFwxNzdcMjA2IgorICAgICAgInhcMjA0XDIxMHhcMjA0XDIxMnpcMjEyXDIxM3xcMjEyXDIxN31cMjE3XDIyMX1cMjIxXDIyMn1cMjIyXDIyNFwxNzdcMjI2XDIyNCIKKyAgICAgICJcMjAxXDIyNlwyMjZcMjAzXDIzMFwyMzNcMjAzXDIzNVwyMzVcMjA0XDIzNlwyMzVcMjA0XDIzNlwyMzZcMjEwXDI0NFwyNDIiCisgICAgICAiXDIxMFwyNDRcMjQyXDIxMFwyNDVcMjQ0XDIxMlwyNTFcMjQ1XDIxM1wyNTJcMjUxXDIxM1wyNTRcMjUyXDIxNVwyNTdcMjU0IgorICAgICAgIlwyMTVcMjYxXDI1NlwyMTdcMjYxXDI1N1wyMjFcMjY2XDI2MVwyMjFcMjY3XDI2MVwyMjJcMjczXDI2NFwyMjRcMjczXDI2NyIKKyAgICAgICJcMjI0XDI3NFwyNjdcMjI0XDI3NlwyNzNcMjMwXDMwMVwyNzNcMjMwXDMwMlwyNzRcMjMxXDMwNFwyNzZcMjMxXDMwN1wzMDIiCisgICAgICAiXDIzM1wzMTJcMzAyXDIzNVwzMTJcMzA0XDIzNVwzMTRcMzA2XDIzNlwzMTZcMzA3XDI0MFwzMjBcMzExXDI0MFwzMjFcMzE0IgorICAgICAgIlwyNDJcMzI0XDMxNVwyNDJcMzI1XDMxNlwyNDRcMzI3XDMyMFwyNDVcMzMyXDMyMVwyNDVcMzMzXDMyMVwyNDVcMzM0XDMyMyIKKyAgICAgICJcMjUxXDMzNVwzMjVcMjUxXDMzNVwzMzBcMjUyXDM0MVwzMzJcMjU0XDM0MVwzMzJcMjU2XDM0NFwzMzRcMjU2XDM0NlwzMzQiCisgICAgICAiXDI1NlwzNDdcMzM3XDI1N1wzNDdcMzQwXDI2MVwzNTBcMzQwXDI2M1wzNTFcMzQyXDI2M1wzNTJcMzQ0XDI2NFwzNTRcMzQ1IgorICAgICAgIlwyNjZcMzU1XDM0NlwyNjZcMzU2XDM0N1wyNjdcMzU3XDM1MFwyNzFcMzYwXDM1MVwyNzNcMzYxXDM1MlwyNzNcMzYyXDM1MiIKKyAgICAgICJcMjc0XDM2MlwzNTVcMjc2XDM2NFwzNTZcMjc3XDM2NFwzNTdcMjc3XDM2NVwzNjBcMjc3XDM2NVwzNjBcMzAyXDM2NlwzNjEiCisgICAgICAiXDMwMlwzNjdcMzYxXDMwNFwzNzBcMzYzXDMwNFwzNzBcMzYzXDMwN1wzNzBcMzY0XDMwN1wzNzFcMzY0XDMxMVwzNzFcMzY2IgorICAgICAgIlwzMTJcMzcyXDM2N1wzMTJcMzcyXDM2N1wzMTRcMzcyXDM2N1wzMTZcMzczXDM3MFwzMTZcMzczXDM3MFwzMjBcMzczXDM3MSIKKyAgICAgICJcMzIwXDM3NFwzNzFcMzIxXDM3NFwzNzJcMzIzXDM3NFwzNzJcMzI0XDM3NVwzNzJcMzI1XDM3NVwzNzJcMzI1XDM3NVwzNzMiCisgICAgICAiXDMyN1wzNzVcMzczXDMzMFwzNzVcMzc0XDMzMlwzNzVcMzc0XDMzM1wzNzVcMzc1XDMzNFwzNzZcMzc1XDMzNFwzNzZcMzc1IgorICAgICAgIlwzMzVcMzc2XDM3NVwzMzdcMzc2XDM3NVwzMzdcMzc2XDM3NVwzNDBcMzc2XDM3NlwzNDJcMzc2XDM3NlwzNDRcMzc2XDM3NiIKKyAgICAgICJcMzQ0XDM3NlwzNzZcMzQ1XDM3NlwzNzZcMzQ2XDM3NlwzNzZcMzQ3XDM3NlwzNzZcMzUwXDM3N1wzNzZcMzUxXDM3N1wzNzciCisgICAgICAiXDM1M1wzNzdcMzc3XDM1NFwzNzdcMzc3XDM1NlwzNzdcMzc3XDM1N1wzNzdcMzc3XDM2MVwzNzdcMzc3XDM2MVwzNzdcMzc3IgorICAgICAgIlwzNjFcMzc3XDM3N1wzNjRcMzc3XDM3N1wzNjVcMzc3XDM3N1wzNjZcMzc3XDM3N1wzNjdcMzc3XDM3N1wzNjdcMzc3XDM3NyIKKyAgICAgICJcMzcxXDM3N1wzNzdcMzcxXDM3N1wzNzdcMzcyXDM3N1wzNzdcMzczXDM3N1wzNzdcMzczXDM3N1wzNzdcMzc0XDM3N1wzNzciCisgICAgICAiXDM3NVwzNzdcMzc3XDM3NVwzNzdcMzc3XDM3NVwzNzdcMzc3XDM3NiIsCit9OworCisvKiBDVVJWRSBmb3IgdGhlIGhlYXQgc2lnbmF0dXJlIGVmZmVjdCAqLworY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgaGVhdF9jdXJ2ZSA9IHsKKyAgMjU2LCAxLCAzLAorICAiXDBcMFwwXDBcMFwwXDBcMVwwXDBcMVwwXDBcMVwxXDBcMlwxXDBcMlwxXDFcMlwxXDFcMlwyXDFcMlwyXDFcM1wyXDFcM1wzIgorICAgICAgIlwxXDNcM1wxXDRcM1wxXDRcNFwxXDVcNFwxXDVcNVwyXDVcNlwyXDZcNlwyXDZcN1wyXDZcN1wyXDdcN1wyXDdcMTFcMlwxMCIKKyAgICAgICJcMTFcMlwxMFwxMlwzXDExXDEzXDNcMTFcMTNcM1wxMVwxNFwzXDEyXDE1XDNcMTJcMTdcM1wxM1wxN1wzXDE0XDIwXDNcMTQiCisgICAgICAiXDIyXDRcMTVcMjNcNFwxNlwyNFw0XDE2XDI2XDRcMTZcMjdcNFwxN1wzMVw0XDIwXDM0XDRcMjFcMzRcNVwyMVw0MFw1XDIyIgorICAgICAgIlw0MFw1XDIyJFw1XDIzJFw1XDI1Jlw2XDI1KFw2XDI2LVw2XDI2LVw2XDI3IiAiMFw2XDMxIiAiMlw3XDMxIgorICAgICAgIjVcN1wzMjtcN1wzNCIKKyAgICAgICI7XDdcMzQ/XDEwXDM1Q1wxMFwzNkdcMTBcMzdMXDEwXDQwVlwxMSFWXDExXCJbXDExJGFcMTEmbFwxMiZsXDEyJ3JcMTIoflwxMyIKKyAgICAgICIqflwxMyxcMjA0XDE0LFwyMTNcMTQuXDIyMVwxNC9cMjI3XDE0IiAiMVwyMzZcMTUiICIyXDI0NFwxNSIgIjRcMjUyXDE1IgorICAgICAgIjVcMjYwIiAiXDE2IiAiN1wyNjdcMTYiCisgICAgICAiOFwyNzVcMTc6XDMwMlwxNztcMzEwXDE3PVwzMjNcMjA/XDMyM1wyMUBcMzMwXDIxRFwzMzVcMjFEIgorICAgICAgIlwzNDJcMjJFXDM0NlwyMklcMzUzXDIzSVwzNTZcMjNLXDM2MlwyNE1cMzY1XDI0TlwzNzBcMjVQXDM3MlwyNlJcMzc0XDI2VCIKKyAgICAgICJcMzc2XDI2VlwzNzdcMjdYXDM3N1wyN1pcMzc3XDMwXFxcMzc2XDMxYFwzNzZcMzFgXDM3NVwzMmJcMzczXDMyZFwzNzFcMzMiCisgICAgICAiZlwzNjZcMzRqXDM2M1wzNGpcMzYwXDM1bFwzNTRcMzZuXDM1MFwzNnJcMzQ0XDM3clwzMzdcNDB0XDMzM1w0MHdcMzI2IXlcMzIxIgorICAgICAgIlwifFwzMTQjflwzMDckXDIwMVwzMDEkXDIwNFwyNjclXDIwN1wyNjcmXDIxMlwyNjEnXDIxNFwyNTQoXDIxN1wyNDcoXDIyMiIKKyAgICAgICJcMjQxKVwyMjZcMjM0KlwyMzFcMjI3K1wyMzRcMjIyLFwyMzdcMjE2LVwyNDJcMjExLlwyNDVcMjA1L1wyNTFcMjAxMFwyNTQiCisgICAgICAifTFcMjU3ejJcMjYydzNcMjY2dDRcMjcxcDVcMjc0bTZcMjc3ajdcMzAyZjhcMzA1YzlcMzEwYDpcMzE0XFw7XDMxN1k8XDMyMSIKKyAgICAgICJWPlwzMjRTP1wzMjdQQFwzMzJMQVwzMzVJQlwzMzdGQ1wzNDJDRVwzNDRARlwzNDc9R1wzNTE7SVwzNTM4SVwzNTU4TVwzNTciCisgICAgICAiM1BcMzYxMFNcMzYzLlZcMzY1K1lcMzY2KVxcXDM3MCdgXDM3MSVkXDM3MiNnXDM3M1wibFwzNzRcNDBwXDM3NFwzN3RcMzc0IgorICAgICAgIlwzNXRcMzc1XDM0fVwzNzZcMzNcMjAyXDM3NlwzMlwyMDJcMzc1XDMxXDIxM1wzNzVcMzBcMjIwXDM3NVwyN1wyMjVcMzc1XDI3IgorICAgICAgIlwyMzJcMzczXDI2XDIzN1wzNzJcMjVcMjQ0XDM3MVwyNFwyNTFcMzcwXDIzXDI1NlwzNjdcMjNcMjYyXDM2N1wyMlwyNjdcMzY0IgorICAgICAgIlwyMVwyNzRcMzYyXDIwXDMwMFwzNjFcMjBcMzA1XDM1N1wxN1wzMTFcMzU1XDE2XDMxMVwzNTNcMTZcMzIyXDM1MVwxNVwzMjYiCisgICAgICAiXDM0NlwxNVwzMzJcMzQ2XDE0XDMzNlwzNDRcMTRcMzQxXDMzN1wxM1wzNDFcMzM1XDEzXDM1MFwzMzJcMTJcMzUzXDMzMFwxMSIKKyAgICAgICJcMzU2XDMzMFwxMVwzNjBcMzIyXDEwXDM2MlwzMjBcMTBcMzY0XDMyMFwxMFwzNjRcMzEyXDdcMzY2XDMwN1w3XDM2NlwzMDQiCisgICAgICAiXDdcMzY3XDMwMlw2XDM2N1wyNzdcNlwzNzBcMjc0XDVcMzY3XDI3MVw1XDM2N1wyNzFcNVwzNjdcMjYzXDRcMzY1XDI2MFw0IgorICAgICAgIlwzNjRcMjU1XDRcMzYzXDI1M1wzXDM2MlwyNTBcM1wzNjFcMjQ1XDNcMzYwXDI0MlwzXDM1N1wyNDBcM1wzNTdcMjM1XDJcMzU1IgorICAgICAgIlwyMzJcMlwzNTVcMjI3XDJcMzU0XDIyNVwyXDM1M1wyMjFcMVwzNTNcMjE2XDFcMzUzXDIxNlwxXDM1M1wyMTNcMVwzNTNcMjA0IgorICAgICAgIlwxXDM1M1wyMDFcMVwzNTR9XDFcMzU0eVwwXDM1NHZcMFwzNTVyXDBcMzU1blwwXDM1NWpcMFwzNTZmXDBcMzU2YlwwXDM1NyIKKyAgICAgICJfXDBcMzU3W1wwXDM1N1dcMFwzNTdTXDBcMzYwT1wwXDM2ME9cMFwzNjFLXDBcMzYxQ1wwXDM2MkBcMFwzNjM8XDBcMzYzOFwwIgorICAgICAgIlwzNjQ4XDBcMzY0MVwwXDM2NS5cMFwzNjYrXDBcMzY2J1wwXDM2NydcMFwzNzAhXDBcMzcwXDM2XDBcMzcwXDMzXDBcMzcxXDMwIgorICAgICAgIlwwXDM3MVwyNlwwXDM3M1wyNlwwXDM3M1wyM1wwXDM3NFwxNVwwXDM3NFwxM1wwXDM3NVwxMFwwXDM3NVw1XDBcMzc2XDNcMCIsCit9OworCitjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSBzZXBpYV9jdXJ2ZSA9IHsKKyAgMjU2LCAxLCAzLAorICAiXDBcMFwwXDBcMFwwXDBcMFwwXDBcMVwwXDFcMVwwXDFcMVwwXDFcMVwxXDJcMVwxXDJcMlwxXDNcMlwxXDNcMlwxXDNcMlwxIgorICAgICAgIlw0XDNcMlw0XDNcMlw0XDNcMlw2XDRcMlw2XDRcMlw2XDRcMlw3XDVcMlw3XDVcM1wxMVw2XDNcMTFcNlwzXDEyXDdcM1wxMyIKKyAgICAgICJcMTBcM1wxNVwxMFw0XDE2XDExXDRcMTdcMTFcNFwyMVwxMlw0XDIyXDEzXDRcMjJcMTNcNVwyM1wxNFw1XDI0XDE1XDVcMjYiCisgICAgICAiXDE2XDZcMzFcMjBcNlwzMVwyMVw2XDMyXDIyXDdcMzRcMjJcN1wzNVwyM1w3XDQwXDI0XDEwXDQwXDI2XDEwIVwyNlwxMSNcMzAiCisgICAgICAiXDExJlwzMVwxMiZcMzJcMTInXDM0XDEzKVwzNFwxMypcMzdcMTMsXDM3XDEzLVw0MFwxNC5cIlwxNSIgIjBcIlwxNSIKKyAgICAgICIyI1wxNyIgIiIgIjMmXDE3IiAiNCZcMTciICI1J1wyMCIgIjgoXDIxIgorICAgICAgIjkpXDIxOipcMjM8LFwyMz0tXDIzQS5cMjRBMFwyNUIwXDI1QzJcMjZEMyIKKyAgICAgICJcMzBINFwzMEg3XDMxSzdcMzJLOFwzMkw5XDMzTTpcMzRQPFwzNFE9XDM1Uz5cMzdUP1wzN1VBXDQwVkIhWEMhWkQjXFxGI14iCisgICAgICAiRyNeSiRgSiZiSydiTSdlTShmTylnUClpUSprUyxtVC1tVS1uVi5vWC9yWTBzWjJ1XTJ2XTN3XjN4YDR6YTV7Yzd8Yzh+ZThcMTc3IgorICAgICAgImY5XDIwMGk6XDIwM2k8XDIwNGo8XDIwNms9XDIwN20+XDIxMG4/XDIxMW8/XDIxM3FBXDIxNHJDXDIxNXNDXDIxN3VEXDIyMCIKKyAgICAgICJ2RFwyMjF3RlwyMjN4R1wyMjR6SFwyMjV7SlwyMjd8S1wyMzB+S1wyMzFcMTc3TFwyMzJcMjAwTVwyMzRcMjAyT1wyMzVcMjAzIgorICAgICAgIlBcMjM2XDIwNFFcMjQwXDIwNlFcMjQxXDIwN1NcMjQyXDIxMFRcMjQzXDIxMVVcMjQ1XDIxM1ZcMjQ2XDIxNFhcMjQ3XDIxNSIKKyAgICAgICJZXDI1MFwyMTdZXDI1MlwyMjBaXDI1M1wyMjFcXFwyNTRcMjIzXVwyNTRcMjI0XlwyNTVcMjI1YFwyNTdcMjI3YVwyNjBcMjMwIgorICAgICAgImJcMjYxXDIzMWNcMjYyXDIzMmVcMjY0XDIzNGVcMjY1XDIzNWZcMjY2XDIzNmdcMjY3XDI0MGlcMjY3XDI0MWlcMjcyXDI0MiIKKyAgICAgICJrXDI3M1wyNDNtXDI3NFwyNDVuXDI3NFwyNDZvXDI3NlwyNDdxXDI3N1wyNTByXDMwMFwyNTJzXDMwMVwyNTN1XDMwMlwyNTQiCisgICAgICAidlwzMDRcMjU1d1wzMDVcMjU3eFwzMDZcMjU3elwzMDZcMjYxe1wzMDdcMjYyfFwzMTBcMjY0flwzMTBcMjY1XDE3N1wzMTNcMjY2IgorICAgICAgIlwyMDBcMzE0XDI2N1wyMDJcMzE1XDI2N1wyMDNcMzE2XDI3MlwyMDRcMzE3XDI3M1wyMDZcMzE3XDI3NFwyMDdcMzIwXDI3NiIKKyAgICAgICJcMjEwXDMyMlwyNzdcMjExXDMyM1wyNzdcMjEzXDMyNFwzMDFcMjE0XDMyNVwzMDJcMjE1XDMyNlwzMDRcMjE3XDMyNlwzMDUiCisgICAgICAiXDIyMFwzMjdcMzA2XDIyMVwzMjdcMzA3XDIyM1wzMzFcMzEwXDIyNFwzMzNcMzExXDIyNVwzMzRcMzExXDIyN1wzMzRcMzEzIgorICAgICAgIlwyMjdcMzM1XDMxNVwyMzFcMzM1XDMxNlwyMzFcMzM3XDMxN1wyMzRcMzQwXDMyMFwyMzVcMzQxXDMyMFwyMzVcMzQxXDMyMyIKKyAgICAgICJcMjQwXDM0MlwzMjRcMjQxXDM0M1wzMjRcMjQyXDM0M1wzMjZcMjQzXDM0NVwzMjdcMjQ1XDM0NVwzMzBcMjQ1XDM0NlwzMzEiCisgICAgICAiXDI1MFwzNDZcMzMzXDI1MlwzNDdcMzM0XDI1M1wzNTFcMzM1XDI1NFwzNTFcMzM1XDI1NVwzNTFcMzM3XDI1N1wzNTJcMzQwIgorICAgICAgIlwyNjBcMzUzXDM0MVwyNjBcMzU0XDM0MlwyNjJcMzU1XDM0M1wyNjRcMzU1XDM0NFwyNjVcMzU1XDM0NVwyNjZcMzU2XDM0NiIKKyAgICAgICJcMjY2XDM1NlwzNDdcMjcyXDM1N1wzNTBcMjczXDM2MFwzNTFcMjc0XDM2MFwzNTFcMjc2XDM2MVwzNTJcMjc3XDM2MVwzNTMiCisgICAgICAiXDMwMFwzNjJcMzUzXDMwMVwzNjJcMzU0XDMwMlwzNjJcMzU1XDMwNFwzNjJcMzU2XDMwNVwzNjRcMzU3XDMwNVwzNjRcMzU3IgorICAgICAgIlwzMTBcMzY0XDM2MFwzMTFcMzY1XDM2MVwzMTNcMzY1XDM2MVwzMTRcMzY2XDM2MlwzMTVcMzY2XDM2MlwzMTZcMzY2XDM2MyIKKyAgICAgICJcMzE2XDM2N1wzNjRcMzIwXDM2N1wzNjRcMzIwXDM2N1wzNjVcMzI0XDM2N1wzNjVcMzI0XDM3MFwzNjZcMzI2XDM3MFwzNjYiCisgICAgICAiXDMyN1wzNzFcMzY2XDMzMFwzNzFcMzY3XDMzMVwzNzFcMzY3XDMzM1wzNzFcMzcwXDMzM1wzNzJcMzcwXDMzNlwzNzJcMzcwIgorICAgICAgIlwzMzZcMzcyXDM3MVwzNDBcMzczXDM3MVwzNDFcMzczXDM3MlwzNDJcMzczXDM3MlwzNDNcMzc0XDM3MlwzNDRcMzc0XDM3MyIKKyAgICAgICJcMzQ0XDM3NFwzNzNcMzQ3XDM3NFwzNzRcMzUwXDM3NVwzNzRcMzUxXDM3NVwzNzRcMzUxXDM3NVwzNzRcMzUyXDM3NVwzNzUiCisgICAgICAiXDM1MlwzNzZcMzc1XDM1M1wzNzZcMzc2XDM1NVwzNzZcMzc2XDM1NlwzNzZcMzc2XDM1N1wzNzdcMzc3XDM1NyIsCit9OworCitjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSB4cmF5X2N1cnZlID0geworICAyNTYsIDEsIDMsCisgICJcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzdcMzc2XDM3NlwzNzZcMzc1XDM3NVwzNzZcMzc0XDM3NVwzNzVcMzczXDM3NFwzNzUiCisgICAgICAiXDM3MlwzNzRcMzc0XDM3MVwzNzRcMzc0XDM3MFwzNzNcMzczXDM2NlwzNzNcMzcyXDM2NlwzNzJcMzcyXDM2NVwzNzJcMzcxIgorICAgICAgIlwzNjNcMzcxXDM3MVwzNjNcMzcxXDM3MFwzNjJcMzcwXDM3MFwzNjBcMzcwXDM2N1wzNjBcMzY3XDM2NlwzNTdcMzY3XDM2NSIKKyAgICAgICJcMzU2XDM2NlwzNjVcMzU1XDM2NlwzNjRcMzUzXDM2NVwzNjNcMzUzXDM2NVwzNjNcMzUyXDM2NFwzNjJcMzUxXDM2M1wzNjIiCisgICAgICAiXDM0N1wzNjNcMzYxXDM0NlwzNjJcMzYxXDM0NVwzNjJcMzYxXDM0NFwzNjJcMzYwXDM0M1wzNjFcMzU3XDM0M1wzNjFcMzU2IgorICAgICAgIlwzNDJcMzYwXDM1NlwzNDFcMzYwXDM1NlwzNDBcMzU3XDM1NVwzMzZcMzU2XDM1NFwzMzZcMzU2XDM1NFwzMzVcMzU1XDM1MyIKKyAgICAgICJcMzM0XDM1NVwzNTNcMzMzXDM1NVwzNTJcMzMxXDM1NFwzNTFcMzMxXDM1M1wzNTFcMzMwXDM1M1wzNTBcMzI3XDM1M1wzNTAiCisgICAgICAiXDMyNVwzNTJcMzQ3XDMyNVwzNTFcMzQ3XDMyNFwzNTBcMzQ2XDMyM1wzNTBcMzQ1XDMyMlwzNDdcMzQ0XDMyMVwzNDdcMzQ0IgorICAgICAgIlwzMjBcMzQ3XDM0NFwzMTdcMzQ2XDM0M1wzMTZcMzQ2XDM0MlwzMTVcMzQ1XDM0MVwzMTRcMzQ0XDM0MVwzMTNcMzQ0XDM0MCIKKyAgICAgICJcMzEyXDM0NFwzNDBcMzExXDM0M1wzMzdcMzEwXDM0MlwzMzdcMzA3XDM0MlwzMzVcMzA2XDM0MVwzMzVcMzA1XDM0MVwzMzUiCisgICAgICAiXDMwM1wzNDBcMzM0XDMwM1wzMzdcMzMzXDMwMlwzMzdcMzMzXDMwMVwzMzdcMzMyXDMwMFwzMzZcMzMxXDI3NlwzMzVcMzMxIgorICAgICAgIlwyNzZcMzM0XDMzMFwyNzRcMzM0XDMzMFwyNzRcMzM0XDMyN1wyNzNcMzMzXDMyN1wyNzJcMzMzXDMyNlwyNzFcMzMyXDMyNSIKKyAgICAgICJcMjcwXDMzMlwzMjVcMjY3XDMzMVwzMjRcMjY2XDMzMFwzMjNcMjY1XDMzMFwzMjNcMjY0XDMyN1wzMjJcMjYzXDMyN1wzMjEiCisgICAgICAiXDI2MlwzMjZcMzIwXDI2MVwzMjVcMzIwXDI1N1wzMjVcMzE3XDI1N1wzMjRcMzE3XDI1NlwzMjRcMzE2XDI1NFwzMjNcMzE1IgorICAgICAgIlwyNTRcMzIyXDMxNVwyNTNcMzIyXDMxNFwyNTJcMzIxXDMxM1wyNTFcMzIxXDMxM1wyNTBcMzIwXDMxMlwyNDZcMzE3XDMxMSIKKyAgICAgICJcMjQ1XDMxN1wzMTFcMjQ1XDMxNlwzMTBcMjQ0XDMxNlwzMDdcMjQzXDMxNVwzMDdcMjQyXDMxNFwzMDZcMjQxXDMxNFwzMDUiCisgICAgICAiXDI0MFwzMTJcMzA1XDIzN1wzMTJcMzA0XDIzNlwzMTJcMzAzXDIzNVwzMTFcMzAzXDIzNFwzMTFcMzAyXDIzM1wzMDdcMzAxIgorICAgICAgIlwyMzJcMzA3XDMwMFwyMzFcMzA3XDMwMFwyMzBcMzA2XDI3N1wyMjdcMzA1XDI3NlwyMjZcMzA1XDI3NlwyMjVcMzA0XDI3NSIKKyAgICAgICJcMjI0XDMwM1wyNzRcMjIzXDMwM1wyNzNcMjIyXDMwMlwyNzNcMjIxXDMwMVwyNzJcMjIwXDMwMVwyNzFcMjE3XDMwMFwyNzAiCisgICAgICAiXDIxNlwyNzdcMjcwXDIxNVwyNzdcMjY3XDIxNFwyNzZcMjY2XDIxM1wyNzVcMjY1XDIxMlwyNzVcMjY1XDIxMVwyNzRcMjY0IgorICAgICAgIlwyMTBcMjczXDI2M1wyMDdcMjczXDI2MlwyMDZcMjcyXDI2MlwyMDVcMjcxXDI2MVwyMDRcMjcwXDI2MFwyMDNcMjcwXDI1NyIKKyAgICAgICJcMjAyXDI2N1wyNTdcMjAxXDI2NlwyNTZcMjAwXDI2NlwyNTVcMTc3XDI2NVwyNTR+XDI2NFwyNTN9XDI2M1wyNTN8XDI2M1wyNTIiCisgICAgICAie1wyNjJcMjUxelwyNjFcMjUweVwyNjBcMjQ3eFwyNjBcMjQ3d1wyNTdcMjQ2dlwyNTZcMjQ1dVwyNTVcMjQ0dFwyNTVcMjQzIgorICAgICAgInNcMjU0XDI0M3JcMjUzXDI0MnFcMjUyXDI0MXBcMjUyXDI0MG9cMjUxXDIzN25cMjUwXDIzNm1cMjQ3XDIzNWxcMjQ2XDIzNSIKKyAgICAgICJsXDI0NlwyMzVqXDI0NVwyMzNpXDI0NFwyMzJoXDI0M1wyMzFnXDI0MlwyMzBmXDI0MlwyMjdlXDI0MVwyMjZkXDI0MFwyMjYiCisgICAgICAiY1wyMzdcMjI1YlwyMzZcMjI0YVwyMzVcMjIzYFwyMzRcMjIyX1wyMzRcMjIxX1wyMzNcMjIwXVwyMzJcMjE3XFxcMjMxXDIxNiIKKyAgICAgICJcXFwyMzBcMjE1WlwyMjdcMjE0WVwyMjZcMjE0WFwyMjZcMjEzV1wyMjVcMjEyVlwyMjRcMjExVVwyMjNcMjEwVFwyMjJcMjA3IgorICAgICAgIlNcMjIxXDIwNlJcMjIxXDIwNVFcMjE3XDIwNFBcMjE2XDIwM09cMjE1XDIwMk5cMjE1XDIwMU1cMjE0XDIwME1cMjEzXDE3NyIKKyAgICAgICJLXDIxMn5KXDIxMX1JXDIxMXxIXDIxMHxHXDIwNnpHXDIwNXpFXDIwNHhEXDIwM3ZDXDIwM3ZCXDIwMXRBXDIwMHNAXDIwMHEiCisgICAgICAiQH5wPn1vPnxvPHtsPHlrO3hpOXdoOHdnOHRlNnNkNXFkNHBhM25fMm1dMWtcXDBqXFwwaFkuZlctZFUsY1QrYVIqX1ApX08oIgorICAgICAgIl1NJ1lLJ1hJJVZJJFRGJFJEXCJPQiFNQFw0MEs/XDM3ST1cMzdHPVwzNUU5XDM0QzlcMzRBNVwzMz41XDMxPDJcMzE8MFwyNyIKKyAgICAgICI6LlwyNyIgIjUsXDI2IiAiMypcMjQiCisgICAgICAiMSpcMjMuJlwyMi4mXDIyKlwiXDIxJ1w0MFwxNyVcMzZcMTZcIlwzNFwxNVwiXDMyXDE0IgorICAgICAgIlwzNlwzMlwxM1wzM1wyNlwxM1wzMVwyNFwxMVwyNlwyMlwxMVwyNFwyMFw3XDI0XDE2XDZcMjFcMTZcNVwxNFwxNFw0XDEyXDEwIgorICAgICAgIlwzXDdcNlwzXDVcNFwxXDJcMiIsCit9OwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3RzY3VydmVzLmggYi9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaAppbmRleCBlMGU5OGE1Li45YjU2NmE1IDEwMDY0NAotLS0gYS9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaAorKysgYi9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNjdXJ2ZXMuaApAQCAtMjEsNiArMjEsNyBAQAogI2lmbmRlZiBfX0dTVF9HTF9FRkZFQ1RTX1RFWFRVUkVTX0hfXwogI2RlZmluZSBfX0dTVF9HTF9FRkZFQ1RTX1RFWFRVUkVTX0hfXwogCisjaW5jbHVkZSA8Z2xpYi5oPgogCiBzdHJ1Y3QgX0dzdEdMRWZmZWN0c0N1cnZlIHsKICAgZ3VpbnQgCSB3aWR0aDsKQEAgLTMyLDE4MSArMzMsMTUgQEAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTEVmZmVjdHNDdXJ2ZSBHc3RHTEVmZmVjdHNDdXJ2ZTsKIAogLyogQ1VSVkUgZm9yIHRoZSBoZWF0IHNpZ25hdHVyZSBlZmZlY3QgKi8KLXN0YXRpYyBjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSB4cHJvX2N1cnZlID0gewotICAyNTYsIDEsIDMsCi0gICJcMFwwXDM3XDBcMFwzN1wwXDFcNDBcMFwyIVwwXDJcIlwwXDNcIlwxXDQlXDFcNCVcMVw1JVwxXDUnXDFcNydcMVw3KFwxXDciCi0gICIoXDFcMTAqXDFcMTErXDFcMTEsXDFcMTIsXDFcMTMvXDFcMTQvXDFcMTQiIjFcMlwxNSIiMVwyXDE1IiIxXDJcMTYiIjRcMlwxNyIKLSAgIiIiNFwzXDE3IiI1XDNcMjIiIjdcM1wyMiIiN1wzXDIzIiI4XDNcMjQiIjlcM1wyNTtcM1wyNjtcM1wyNzxcM1wyNz1cNFwzMSIKLSAgIj1cNFwzMz9cNFwzNEBcNVwzNEJcNVwzNUNcNVwzNkRcNVw0MERcNVw0MEdcNSFHXDZcIkhcNiRIXDcmSlw3JktcNypNXDcqTSIKLSAgIlwxMCtOXDEwLVBcMTEtUFwxMS9SXDExIiIzUlwxMSIiM1RcMTIiIjRVXDEyIiI1VVwxMyIiN1dcMTQiIjhZXDE0IiI5WVwxNCIKLSAgIjxZXDE2PVtcMTZAXlwxNkBeXDE3Q15cMTdEYFwyMEZgXDIwSmJcMjJKYlwyMktjXDIzTWVcMjROZlwyNVFnXDI2UmdcMjdUaSIKLSAgIlwyN1dqXDMwWGxcMzFZbFwzM1xcbVwzNF5wXDM1YHBcNDBicFw0MGZxIWZyJGd0JGx0JWx1J212KHB4KnF5LXR5L3V6L3h8MCIKLSAgInl9M3x9NH1+NVwxNzdcMjAxOFwyMDNcMjAxOVwyMDNcMjAxO1wyMDRcMjAyPVwyMDdcMjAzP1wyMTBcMjA0QFwyMTRcMjA0QyIKLSAgIlwyMTRcMjA2RFwyMTZcMjA3R1wyMTdcMjEwSFwyMjNcMjExS1wyMjNcMjExTVwyMjVcMjEyUFwyMjZcMjE0UVwyMzFcMjE1VCIKLSAgIlwyMzJcMjE1VVwyMzRcMjE2WFwyMzVcMjE3WVwyNDBcMjIwXFxcMjQxXDIyMF5cMjQzXDIyMWBcMjQ0XDIyM2JcMjQ2XDIyNCIKLSAgImVcMjUwXDIyNGZcMjUyXDIyNWlcMjUzXDIyNmxcMjU1XDIyN21cMjU2XDIzMXBcMjYxXDIzMXFcMjYyXDIzMnRcMjY0XDIzMyIKLSAgInZcMjY1XDIzNHhcMjY3XDIzNHpcMjcwXDIzNXxcMjcxXDIzNn5cMjc0XDI0MFwyMDFcMjc1XDI0MFwyMDJcMjc3XDI0MVwyMDQiCi0gICJcMzAwXDI0MlwyMDdcMzAyXDI0M1wyMTBcMzAzXDI0M1wyMTJcMzA1XDI0NFwyMTRcMzA2XDI0NVwyMTZcMzA3XDI0NlwyMjAiCi0gICJcMzExXDI1MFwyMjFcMzEzXDI1MFwyMjRcMzE1XDI1MVwyMjZcMzE2XDI1MlwyMjdcMzE3XDI1M1wyMzJcMzIxXDI1M1wyMzQiCi0gICJcMzIyXDI1NFwyMzVcMzIzXDI1NVwyNDBcMzI1XDI1NlwyNDJcMzI2XDI1NlwyNDJcMzMwXDI1NlwyNDVcMzMxXDI2MVwyNTAiCi0gICJcMzMxXDI2MlwyNTFcMzMyXDI2MlwyNTNcMzM0XDI2M1wyNTVcMzM1XDI2NFwyNTZcMzM2XDI2NVwyNjFcMzQwXDI2NlwyNjMiCi0gICJcMzQxXDI2NlwyNjRcMzQyXDI2N1wyNjZcMzQzXDI3MFwyNzBcMzQ0XDI3MVwyNzFcMzQ0XDI3MVwyNzFcMzQ2XDI3M1wyNzYiCi0gICJcMzQ3XDI3NFwyNzdcMzUwXDI3NVwyNzdcMzUxXDI3NVwzMDJcMzUyXDI3NlwzMDRcMzUzXDI3N1wzMDZcMzUzXDMwMFwzMDciCi0gICJcMzU1XDMwMFwzMTFcMzU2XDMwMVwzMTRcMzU2XDMwMlwzMTVcMzU3XDMwM1wzMTdcMzYwXDMwNFwzMjBcMzYwXDMwNFwzMjIiCi0gICJcMzYxXDMwNVwzMjNcMzYyXDMwNlwzMjVcMzYyXDMwN1wzMjdcMzYzXDMwN1wzMzBcMzYzXDMxMFwzMzBcMzY0XDMxMVwzMzMiCi0gICJcMzY0XDMxM1wzMzRcMzY1XDMxM1wzMzZcMzY1XDMxNFwzNDBcMzY1XDMxNFwzNDJcMzY2XDMxNlwzNDJcMzY2XDMxNlwzNDYiCi0gICJcMzY3XDMxN1wzNDdcMzY3XDMyMFwzNTFcMzY3XDMyMFwzNTNcMzcwXDMyMlwzNTRcMzcwXDMyMlwzNTZcMzcwXDMyM1wzNTYiCi0gICJcMzcwXDMyNFwzNjBcMzcxXDMyNVwzNjBcMzcxXDMyNVwzNjNcMzcxXDMyNlwzNjNcMzcxXDMyN1wzNjNcMzcyXDMzMFwzNjUiCi0gICJcMzcyXDMzMFwzNjZcMzcyXDMzMVwzNjZcMzcyXDMzMVwzNzBcMzcyXDMzMlwzNzFcMzczXDMzMlwzNzFcMzczXDMzM1wzNzIiCi0gICJcMzczXDMzNFwzNzNcMzczXDMzNVwzNzNcMzczXDMzNlwzNzRcMzczXDMzNlwzNzRcMzc0XDMzN1wzNzRcMzc0XDM0MFwzNzUiCi0gICJcMzc0XDM0MVwzNzVcMzc0XDM0MVwzNzZcMzc0XDM0MlwzNzZcMzc0XDM0M1wzNzZcMzc0XDM0NFwzNzZcMzc0XDM0NFwzNzciCi0gICJcMzc0XDM0NVwzNzdcMzc0XDM0NlwzNzdcMzc1XDM0NlwzNzdcMzc1XDM0NlwzNzdcMzc1XDM0N1wzNzdcMzc1XDM1MFwzNzciCi0gICJcMzc1XDM1MVwzNzdcMzc1XDM1MlwzNzdcMzc1XDM1MlwzNzdcMzc1XDM1MlwzNzdcMzc1XDM1M1wzNzdcMzc1XDM1M1wzNzciCi0gICJcMzc2XDM1NFwzNzdcMzc2XDM1NFwzNzdcMzc2XDM1NlwzNzdcMzc2XDM1NlwzNzdcMzc2XDM1NlwzNzdcMzc2XDM1N1wzNzciCi0gICJcMzc2XDM2MFwzNzdcMzc2XDM2MFwzNzdcMzc2XDM2MFwzNzdcMzc2XDM2MFwzNzdcMzc2XDM2MlwzNzdcMzc2XDM2MlwzNzciCi0gICJcMzc2XDM2M1wzNzdcMzc2XDM2M1wzNzdcMzc2XDM2M1wzNzdcMzc2XDM2M1wzNzdcMzc2XDM2NFwzNzdcMzc2XDM2NFwzNzciCi0gICJcMzc2XDM2NVwzNzdcMzc3XDM2NVwzNzdcMzc3XDM2NlwzNzdcMzc3XDM2NlwzNzdcMzc3XDM2NlwzNzdcMzc3XDM2N1wzNzciCi0gICJcMzc3XDM2N1wzNzdcMzc3XDM2N1wzNzdcMzc3XDM3MCIsCi19OworZXh0ZXJuIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHhwcm9fY3VydmU7CiAKLXN0YXRpYyBjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSBsdW1hX3hwcm9fY3VydmUgPSB7Ci0gIDI1NiwgMSwgMywKLSAgIlwwXDBcMVwwXDFcMVwwXDFcMlwwXDFcMlwwXDFcMlwwXDFcMlwwXDFcM1wwXDJcM1wwXDJcNFwwXDJcNFwwXDJcNVwwXDJcNiIKLSAgIlwwXDNcNlwwXDNcNlwwXDNcN1wwXDNcMTBcMFw0XDEwXDBcNFwxMVwwXDRcMTJcMFw0XDEyXDFcNFwxM1wxXDVcMTRcMVw1XDE1IgotICAiXDFcNVwxNVwxXDVcMTZcMVw1XDE3XDFcNlwxN1wxXDZcMjBcMVw3XDIxXDFcN1wyM1wyXDEwXDIzXDJcMTBcMjRcMlwxMFwyNCIKLSAgIlwyXDExXDI2XDJcMTFcMjdcMlwxMVwzMFwzXDExXDMxXDNcMTJcMzFcM1wxM1wzMlwzXDEzXDMzXDRcMTNcMzRcNFwxNFwzNSIKLSAgIlw0XDE0XDM2XDRcMTVcMzdcNVwxNVw0MFw1XDE1XCJcNlwxNiNcNlwxNyNcNlwyMCRcN1wyMCVcN1wyMCVcMTBcMjEmXDEwXDIyIgotICAiJ1wxMFwyMilcMTFcMjQqXDExXDI0KlwxMlwyNCtcMTJcMjYuXDEzXDI2LlwxNFwyNy5cMTRcMzAvXDE1XDMxIiIxXDE1XDMxIgotICAiIiIyXDE2XDMyIiIzXDE2XDMzIiIzXDIwXDMzIiI1XDIwXDM1IiI2XDIwXDM2IiI3XDIyXDM3IiI3XDIzXCI5XDIzIzlcMjQkIgotICAiOlwyNSQ8XDI3JjxcMjcnPVwzMSc/XDMxKT9cMzIqQFwzNStCXDM1LUNcMzYuQ1wzNyIiMUVcIjJGIzNIJDVIJjZJJzdJKTdLIgotICAiKzpNLTxOLTxOMUBOMUJRMkJRNkNRNkVVN0hVPElVPUlWQE5YQE5YQlFaQ1NbRlVbSFVdSVZfTVpfTltfUV1gU19iVWBkWGJlIgotICAiWmJlXWdnXWlnYGppYGpqZGxqZW5sZ3BsanFucHdwcHdwcXhxc3pxd3xzeH11fFwyMDF1fVwyMDN3XDE3N1wyMDR4XDE3N1wyMDYiCi0gICJ4XDIwNFwyMTB4XDIwNFwyMTJ6XDIxMlwyMTN8XDIxMlwyMTd9XDIxN1wyMjF9XDIyMVwyMjJ9XDIyMlwyMjRcMTc3XDIyNlwyMjQiCi0gICJcMjAxXDIyNlwyMjZcMjAzXDIzMFwyMzNcMjAzXDIzNVwyMzVcMjA0XDIzNlwyMzVcMjA0XDIzNlwyMzZcMjEwXDI0NFwyNDIiCi0gICJcMjEwXDI0NFwyNDJcMjEwXDI0NVwyNDRcMjEyXDI1MVwyNDVcMjEzXDI1MlwyNTFcMjEzXDI1NFwyNTJcMjE1XDI1N1wyNTQiCi0gICJcMjE1XDI2MVwyNTZcMjE3XDI2MVwyNTdcMjIxXDI2NlwyNjFcMjIxXDI2N1wyNjFcMjIyXDI3M1wyNjRcMjI0XDI3M1wyNjciCi0gICJcMjI0XDI3NFwyNjdcMjI0XDI3NlwyNzNcMjMwXDMwMVwyNzNcMjMwXDMwMlwyNzRcMjMxXDMwNFwyNzZcMjMxXDMwN1wzMDIiCi0gICJcMjMzXDMxMlwzMDJcMjM1XDMxMlwzMDRcMjM1XDMxNFwzMDZcMjM2XDMxNlwzMDdcMjQwXDMyMFwzMTFcMjQwXDMyMVwzMTQiCi0gICJcMjQyXDMyNFwzMTVcMjQyXDMyNVwzMTZcMjQ0XDMyN1wzMjBcMjQ1XDMzMlwzMjFcMjQ1XDMzM1wzMjFcMjQ1XDMzNFwzMjMiCi0gICJcMjUxXDMzNVwzMjVcMjUxXDMzNVwzMzBcMjUyXDM0MVwzMzJcMjU0XDM0MVwzMzJcMjU2XDM0NFwzMzRcMjU2XDM0NlwzMzQiCi0gICJcMjU2XDM0N1wzMzdcMjU3XDM0N1wzNDBcMjYxXDM1MFwzNDBcMjYzXDM1MVwzNDJcMjYzXDM1MlwzNDRcMjY0XDM1NFwzNDUiCi0gICJcMjY2XDM1NVwzNDZcMjY2XDM1NlwzNDdcMjY3XDM1N1wzNTBcMjcxXDM2MFwzNTFcMjczXDM2MVwzNTJcMjczXDM2MlwzNTIiCi0gICJcMjc0XDM2MlwzNTVcMjc2XDM2NFwzNTZcMjc3XDM2NFwzNTdcMjc3XDM2NVwzNjBcMjc3XDM2NVwzNjBcMzAyXDM2NlwzNjEiCi0gICJcMzAyXDM2N1wzNjFcMzA0XDM3MFwzNjNcMzA0XDM3MFwzNjNcMzA3XDM3MFwzNjRcMzA3XDM3MVwzNjRcMzExXDM3MVwzNjYiCi0gICJcMzEyXDM3MlwzNjdcMzEyXDM3MlwzNjdcMzE0XDM3MlwzNjdcMzE2XDM3M1wzNzBcMzE2XDM3M1wzNzBcMzIwXDM3M1wzNzEiCi0gICJcMzIwXDM3NFwzNzFcMzIxXDM3NFwzNzJcMzIzXDM3NFwzNzJcMzI0XDM3NVwzNzJcMzI1XDM3NVwzNzJcMzI1XDM3NVwzNzMiCi0gICJcMzI3XDM3NVwzNzNcMzMwXDM3NVwzNzRcMzMyXDM3NVwzNzRcMzMzXDM3NVwzNzVcMzM0XDM3NlwzNzVcMzM0XDM3NlwzNzUiCi0gICJcMzM1XDM3NlwzNzVcMzM3XDM3NlwzNzVcMzM3XDM3NlwzNzVcMzQwXDM3NlwzNzZcMzQyXDM3NlwzNzZcMzQ0XDM3NlwzNzYiCi0gICJcMzQ0XDM3NlwzNzZcMzQ1XDM3NlwzNzZcMzQ2XDM3NlwzNzZcMzQ3XDM3NlwzNzZcMzUwXDM3N1wzNzZcMzUxXDM3N1wzNzciCi0gICJcMzUzXDM3N1wzNzdcMzU0XDM3N1wzNzdcMzU2XDM3N1wzNzdcMzU3XDM3N1wzNzdcMzYxXDM3N1wzNzdcMzYxXDM3N1wzNzciCi0gICJcMzYxXDM3N1wzNzdcMzY0XDM3N1wzNzdcMzY1XDM3N1wzNzdcMzY2XDM3N1wzNzdcMzY3XDM3N1wzNzdcMzY3XDM3N1wzNzciCi0gICJcMzcxXDM3N1wzNzdcMzcxXDM3N1wzNzdcMzcyXDM3N1wzNzdcMzczXDM3N1wzNzdcMzczXDM3N1wzNzdcMzc0XDM3N1wzNzciCi0gICJcMzc1XDM3N1wzNzdcMzc1XDM3N1wzNzdcMzc1XDM3N1wzNzdcMzc2IiwKLX07CitleHRlcm4gY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgbHVtYV94cHJvX2N1cnZlOwogCiAvKiBDVVJWRSBmb3IgdGhlIGhlYXQgc2lnbmF0dXJlIGVmZmVjdCAqLwotc3RhdGljIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIGhlYXRfY3VydmUgPSB7Ci0gIDI1NiwgMSwgMywKLSAgIlwwXDBcMFwwXDBcMFwwXDFcMFwwXDFcMFwwXDFcMVwwXDJcMVwwXDJcMVwxXDJcMVwxXDJcMlwxXDJcMlwxXDNcMlwxXDNcMyIKLSAgIlwxXDNcM1wxXDRcM1wxXDRcNFwxXDVcNFwxXDVcNVwyXDVcNlwyXDZcNlwyXDZcN1wyXDZcN1wyXDdcN1wyXDdcMTFcMlwxMCIKLSAgIlwxMVwyXDEwXDEyXDNcMTFcMTNcM1wxMVwxM1wzXDExXDE0XDNcMTJcMTVcM1wxMlwxN1wzXDEzXDE3XDNcMTRcMjBcM1wxNCIKLSAgIlwyMlw0XDE1XDIzXDRcMTZcMjRcNFwxNlwyNlw0XDE2XDI3XDRcMTdcMzFcNFwyMFwzNFw0XDIxXDM0XDVcMjFcNDBcNVwyMiIKLSAgIlw0MFw1XDIyJFw1XDIzJFw1XDI1Jlw2XDI1KFw2XDI2LVw2XDI2LVw2XDI3IiIwXDZcMzEiIjJcN1wzMSIiNVw3XDMyO1w3XDM0IgotICAiO1w3XDM0P1wxMFwzNUNcMTBcMzZHXDEwXDM3TFwxMFw0MFZcMTEhVlwxMVwiW1wxMSRhXDExJmxcMTImbFwxMidyXDEyKH5cMTMiCi0gICIqflwxMyxcMjA0XDE0LFwyMTNcMTQuXDIyMVwxNC9cMjI3XDE0IiIxXDIzNlwxNSIiMlwyNDRcMTUiIjRcMjUyXDE1IiI1XDI2MCIKLSAgIlwxNiIiN1wyNjdcMTYiIjhcMjc1XDE3OlwzMDJcMTc7XDMxMFwxNz1cMzIzXDIwP1wzMjNcMjFAXDMzMFwyMURcMzM1XDIxRCIKLSAgIlwzNDJcMjJFXDM0NlwyMklcMzUzXDIzSVwzNTZcMjNLXDM2MlwyNE1cMzY1XDI0TlwzNzBcMjVQXDM3MlwyNlJcMzc0XDI2VCIKLSAgIlwzNzZcMjZWXDM3N1wyN1hcMzc3XDI3WlwzNzdcMzBcXFwzNzZcMzFgXDM3NlwzMWBcMzc1XDMyYlwzNzNcMzJkXDM3MVwzMyIKLSAgImZcMzY2XDM0alwzNjNcMzRqXDM2MFwzNWxcMzU0XDM2blwzNTBcMzZyXDM0NFwzN3JcMzM3XDQwdFwzMzNcNDB3XDMyNiF5XDMyMSIKLSAgIlwifFwzMTQjflwzMDckXDIwMVwzMDEkXDIwNFwyNjclXDIwN1wyNjcmXDIxMlwyNjEnXDIxNFwyNTQoXDIxN1wyNDcoXDIyMiIKLSAgIlwyNDEpXDIyNlwyMzQqXDIzMVwyMjcrXDIzNFwyMjIsXDIzN1wyMTYtXDI0MlwyMTEuXDI0NVwyMDUvXDI1MVwyMDEwXDI1NCIKLSAgIn0xXDI1N3oyXDI2MnczXDI2NnQ0XDI3MXA1XDI3NG02XDI3N2o3XDMwMmY4XDMwNWM5XDMxMGA6XDMxNFxcO1wzMTdZPFwzMjEiCi0gICJWPlwzMjRTP1wzMjdQQFwzMzJMQVwzMzVJQlwzMzdGQ1wzNDJDRVwzNDRARlwzNDc9R1wzNTE7SVwzNTM4SVwzNTU4TVwzNTciCi0gICIzUFwzNjEwU1wzNjMuVlwzNjUrWVwzNjYpXFxcMzcwJ2BcMzcxJWRcMzcyI2dcMzczXCJsXDM3NFw0MHBcMzc0XDM3dFwzNzQiCi0gICJcMzV0XDM3NVwzNH1cMzc2XDMzXDIwMlwzNzZcMzJcMjAyXDM3NVwzMVwyMTNcMzc1XDMwXDIyMFwzNzVcMjdcMjI1XDM3NVwyNyIKLSAgIlwyMzJcMzczXDI2XDIzN1wzNzJcMjVcMjQ0XDM3MVwyNFwyNTFcMzcwXDIzXDI1NlwzNjdcMjNcMjYyXDM2N1wyMlwyNjdcMzY0IgotICAiXDIxXDI3NFwzNjJcMjBcMzAwXDM2MVwyMFwzMDVcMzU3XDE3XDMxMVwzNTVcMTZcMzExXDM1M1wxNlwzMjJcMzUxXDE1XDMyNiIKLSAgIlwzNDZcMTVcMzMyXDM0NlwxNFwzMzZcMzQ0XDE0XDM0MVwzMzdcMTNcMzQxXDMzNVwxM1wzNTBcMzMyXDEyXDM1M1wzMzBcMTEiCi0gICJcMzU2XDMzMFwxMVwzNjBcMzIyXDEwXDM2MlwzMjBcMTBcMzY0XDMyMFwxMFwzNjRcMzEyXDdcMzY2XDMwN1w3XDM2NlwzMDQiCi0gICJcN1wzNjdcMzAyXDZcMzY3XDI3N1w2XDM3MFwyNzRcNVwzNjdcMjcxXDVcMzY3XDI3MVw1XDM2N1wyNjNcNFwzNjVcMjYwXDQiCi0gICJcMzY0XDI1NVw0XDM2M1wyNTNcM1wzNjJcMjUwXDNcMzYxXDI0NVwzXDM2MFwyNDJcM1wzNTdcMjQwXDNcMzU3XDIzNVwyXDM1NSIKLSAgIlwyMzJcMlwzNTVcMjI3XDJcMzU0XDIyNVwyXDM1M1wyMjFcMVwzNTNcMjE2XDFcMzUzXDIxNlwxXDM1M1wyMTNcMVwzNTNcMjA0IgotICAiXDFcMzUzXDIwMVwxXDM1NH1cMVwzNTR5XDBcMzU0dlwwXDM1NXJcMFwzNTVuXDBcMzU1alwwXDM1NmZcMFwzNTZiXDBcMzU3IgotICAiX1wwXDM1N1tcMFwzNTdXXDBcMzU3U1wwXDM2ME9cMFwzNjBPXDBcMzYxS1wwXDM2MUNcMFwzNjJAXDBcMzYzPFwwXDM2MzhcMCIKLSAgIlwzNjQ4XDBcMzY0MVwwXDM2NS5cMFwzNjYrXDBcMzY2J1wwXDM2NydcMFwzNzAhXDBcMzcwXDM2XDBcMzcwXDMzXDBcMzcxXDMwIgotICAiXDBcMzcxXDI2XDBcMzczXDI2XDBcMzczXDIzXDBcMzc0XDE1XDBcMzc0XDEzXDBcMzc1XDEwXDBcMzc1XDVcMFwzNzZcM1wwIiwKLX07CitleHRlcm4gY29uc3QgR3N0R0xFZmZlY3RzQ3VydmUgaGVhdF9jdXJ2ZTsKIAotc3RhdGljIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHNlcGlhX2N1cnZlID0gewotICAyNTYsIDEsIDMsCi0gICJcMFwwXDBcMFwwXDBcMFwwXDBcMFwxXDBcMVwxXDBcMVwxXDBcMVwxXDFcMlwxXDFcMlwyXDFcM1wyXDFcM1wyXDFcM1wyXDEiCi0gICJcNFwzXDJcNFwzXDJcNFwzXDJcNlw0XDJcNlw0XDJcNlw0XDJcN1w1XDJcN1w1XDNcMTFcNlwzXDExXDZcM1wxMlw3XDNcMTMiCi0gICJcMTBcM1wxNVwxMFw0XDE2XDExXDRcMTdcMTFcNFwyMVwxMlw0XDIyXDEzXDRcMjJcMTNcNVwyM1wxNFw1XDI0XDE1XDVcMjYiCi0gICJcMTZcNlwzMVwyMFw2XDMxXDIxXDZcMzJcMjJcN1wzNFwyMlw3XDM1XDIzXDdcNDBcMjRcMTBcNDBcMjZcMTAhXDI2XDExI1wzMCIKLSAgIlwxMSZcMzFcMTImXDMyXDEyJ1wzNFwxMylcMzRcMTMqXDM3XDEzLFwzN1wxMy1cNDBcMTQuXCJcMTUiIjBcIlwxNSIiMiNcMTciCi0gICIiIjMmXDE3IiI0JlwxNyIiNSdcMjAiIjgoXDIxIiI5KVwyMToqXDIzPCxcMjM9LVwyM0EuXDI0QTBcMjVCMFwyNUMyXDI2RDMiCi0gICJcMzBINFwzMEg3XDMxSzdcMzJLOFwzMkw5XDMzTTpcMzRQPFwzNFE9XDM1Uz5cMzdUP1wzN1VBXDQwVkIhWEMhWkQjXFxGI14iCi0gICJHI15KJGBKJmJLJ2JNJ2VNKGZPKWdQKWlRKmtTLG1ULW1VLW5WLm9YL3JZMHNaMnVdMnZdM3deM3hgNHphNXtjN3xjOH5lOFwxNzciCi0gICJmOVwyMDBpOlwyMDNpPFwyMDRqPFwyMDZrPVwyMDdtPlwyMTBuP1wyMTFvP1wyMTNxQVwyMTRyQ1wyMTVzQ1wyMTd1RFwyMjAiCi0gICJ2RFwyMjF3RlwyMjN4R1wyMjR6SFwyMjV7SlwyMjd8S1wyMzB+S1wyMzFcMTc3TFwyMzJcMjAwTVwyMzRcMjAyT1wyMzVcMjAzIgotICAiUFwyMzZcMjA0UVwyNDBcMjA2UVwyNDFcMjA3U1wyNDJcMjEwVFwyNDNcMjExVVwyNDVcMjEzVlwyNDZcMjE0WFwyNDdcMjE1IgotICAiWVwyNTBcMjE3WVwyNTJcMjIwWlwyNTNcMjIxXFxcMjU0XDIyM11cMjU0XDIyNF5cMjU1XDIyNWBcMjU3XDIyN2FcMjYwXDIzMCIKLSAgImJcMjYxXDIzMWNcMjYyXDIzMmVcMjY0XDIzNGVcMjY1XDIzNWZcMjY2XDIzNmdcMjY3XDI0MGlcMjY3XDI0MWlcMjcyXDI0MiIKLSAgImtcMjczXDI0M21cMjc0XDI0NW5cMjc0XDI0Nm9cMjc2XDI0N3FcMjc3XDI1MHJcMzAwXDI1MnNcMzAxXDI1M3VcMzAyXDI1NCIKLSAgInZcMzA0XDI1NXdcMzA1XDI1N3hcMzA2XDI1N3pcMzA2XDI2MXtcMzA3XDI2MnxcMzEwXDI2NH5cMzEwXDI2NVwxNzdcMzEzXDI2NiIKLSAgIlwyMDBcMzE0XDI2N1wyMDJcMzE1XDI2N1wyMDNcMzE2XDI3MlwyMDRcMzE3XDI3M1wyMDZcMzE3XDI3NFwyMDdcMzIwXDI3NiIKLSAgIlwyMTBcMzIyXDI3N1wyMTFcMzIzXDI3N1wyMTNcMzI0XDMwMVwyMTRcMzI1XDMwMlwyMTVcMzI2XDMwNFwyMTdcMzI2XDMwNSIKLSAgIlwyMjBcMzI3XDMwNlwyMjFcMzI3XDMwN1wyMjNcMzMxXDMxMFwyMjRcMzMzXDMxMVwyMjVcMzM0XDMxMVwyMjdcMzM0XDMxMyIKLSAgIlwyMjdcMzM1XDMxNVwyMzFcMzM1XDMxNlwyMzFcMzM3XDMxN1wyMzRcMzQwXDMyMFwyMzVcMzQxXDMyMFwyMzVcMzQxXDMyMyIKLSAgIlwyNDBcMzQyXDMyNFwyNDFcMzQzXDMyNFwyNDJcMzQzXDMyNlwyNDNcMzQ1XDMyN1wyNDVcMzQ1XDMzMFwyNDVcMzQ2XDMzMSIKLSAgIlwyNTBcMzQ2XDMzM1wyNTJcMzQ3XDMzNFwyNTNcMzUxXDMzNVwyNTRcMzUxXDMzNVwyNTVcMzUxXDMzN1wyNTdcMzUyXDM0MCIKLSAgIlwyNjBcMzUzXDM0MVwyNjBcMzU0XDM0MlwyNjJcMzU1XDM0M1wyNjRcMzU1XDM0NFwyNjVcMzU1XDM0NVwyNjZcMzU2XDM0NiIKLSAgIlwyNjZcMzU2XDM0N1wyNzJcMzU3XDM1MFwyNzNcMzYwXDM1MVwyNzRcMzYwXDM1MVwyNzZcMzYxXDM1MlwyNzdcMzYxXDM1MyIKLSAgIlwzMDBcMzYyXDM1M1wzMDFcMzYyXDM1NFwzMDJcMzYyXDM1NVwzMDRcMzYyXDM1NlwzMDVcMzY0XDM1N1wzMDVcMzY0XDM1NyIKLSAgIlwzMTBcMzY0XDM2MFwzMTFcMzY1XDM2MVwzMTNcMzY1XDM2MVwzMTRcMzY2XDM2MlwzMTVcMzY2XDM2MlwzMTZcMzY2XDM2MyIKLSAgIlwzMTZcMzY3XDM2NFwzMjBcMzY3XDM2NFwzMjBcMzY3XDM2NVwzMjRcMzY3XDM2NVwzMjRcMzcwXDM2NlwzMjZcMzcwXDM2NiIKLSAgIlwzMjdcMzcxXDM2NlwzMzBcMzcxXDM2N1wzMzFcMzcxXDM2N1wzMzNcMzcxXDM3MFwzMzNcMzcyXDM3MFwzMzZcMzcyXDM3MCIKLSAgIlwzMzZcMzcyXDM3MVwzNDBcMzczXDM3MVwzNDFcMzczXDM3MlwzNDJcMzczXDM3MlwzNDNcMzc0XDM3MlwzNDRcMzc0XDM3MyIKLSAgIlwzNDRcMzc0XDM3M1wzNDdcMzc0XDM3NFwzNTBcMzc1XDM3NFwzNTFcMzc1XDM3NFwzNTFcMzc1XDM3NFwzNTJcMzc1XDM3NSIKLSAgIlwzNTJcMzc2XDM3NVwzNTNcMzc2XDM3NlwzNTVcMzc2XDM3NlwzNTZcMzc2XDM3NlwzNTdcMzc3XDM3N1wzNTciLAotfTsKK2V4dGVybiBjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSBzZXBpYV9jdXJ2ZTsKIAotc3RhdGljIGNvbnN0IEdzdEdMRWZmZWN0c0N1cnZlIHhyYXlfY3VydmUgPSB7Ci0gIDI1NiwgMSwgMywKLSAgIlwzNzdcMzc3XDM3N1wzNzdcMzc3XDM3N1wzNzZcMzc2XDM3NlwzNzVcMzc1XDM3NlwzNzRcMzc1XDM3NVwzNzNcMzc0XDM3NSIKLSAgIlwzNzJcMzc0XDM3NFwzNzFcMzc0XDM3NFwzNzBcMzczXDM3M1wzNjZcMzczXDM3MlwzNjZcMzcyXDM3MlwzNjVcMzcyXDM3MSIKLSAgIlwzNjNcMzcxXDM3MVwzNjNcMzcxXDM3MFwzNjJcMzcwXDM3MFwzNjBcMzcwXDM2N1wzNjBcMzY3XDM2NlwzNTdcMzY3XDM2NSIKLSAgIlwzNTZcMzY2XDM2NVwzNTVcMzY2XDM2NFwzNTNcMzY1XDM2M1wzNTNcMzY1XDM2M1wzNTJcMzY0XDM2MlwzNTFcMzYzXDM2MiIKLSAgIlwzNDdcMzYzXDM2MVwzNDZcMzYyXDM2MVwzNDVcMzYyXDM2MVwzNDRcMzYyXDM2MFwzNDNcMzYxXDM1N1wzNDNcMzYxXDM1NiIKLSAgIlwzNDJcMzYwXDM1NlwzNDFcMzYwXDM1NlwzNDBcMzU3XDM1NVwzMzZcMzU2XDM1NFwzMzZcMzU2XDM1NFwzMzVcMzU1XDM1MyIKLSAgIlwzMzRcMzU1XDM1M1wzMzNcMzU1XDM1MlwzMzFcMzU0XDM1MVwzMzFcMzUzXDM1MVwzMzBcMzUzXDM1MFwzMjdcMzUzXDM1MCIKLSAgIlwzMjVcMzUyXDM0N1wzMjVcMzUxXDM0N1wzMjRcMzUwXDM0NlwzMjNcMzUwXDM0NVwzMjJcMzQ3XDM0NFwzMjFcMzQ3XDM0NCIKLSAgIlwzMjBcMzQ3XDM0NFwzMTdcMzQ2XDM0M1wzMTZcMzQ2XDM0MlwzMTVcMzQ1XDM0MVwzMTRcMzQ0XDM0MVwzMTNcMzQ0XDM0MCIKLSAgIlwzMTJcMzQ0XDM0MFwzMTFcMzQzXDMzN1wzMTBcMzQyXDMzN1wzMDdcMzQyXDMzNVwzMDZcMzQxXDMzNVwzMDVcMzQxXDMzNSIKLSAgIlwzMDNcMzQwXDMzNFwzMDNcMzM3XDMzM1wzMDJcMzM3XDMzM1wzMDFcMzM3XDMzMlwzMDBcMzM2XDMzMVwyNzZcMzM1XDMzMSIKLSAgIlwyNzZcMzM0XDMzMFwyNzRcMzM0XDMzMFwyNzRcMzM0XDMyN1wyNzNcMzMzXDMyN1wyNzJcMzMzXDMyNlwyNzFcMzMyXDMyNSIKLSAgIlwyNzBcMzMyXDMyNVwyNjdcMzMxXDMyNFwyNjZcMzMwXDMyM1wyNjVcMzMwXDMyM1wyNjRcMzI3XDMyMlwyNjNcMzI3XDMyMSIKLSAgIlwyNjJcMzI2XDMyMFwyNjFcMzI1XDMyMFwyNTdcMzI1XDMxN1wyNTdcMzI0XDMxN1wyNTZcMzI0XDMxNlwyNTRcMzIzXDMxNSIKLSAgIlwyNTRcMzIyXDMxNVwyNTNcMzIyXDMxNFwyNTJcMzIxXDMxM1wyNTFcMzIxXDMxM1wyNTBcMzIwXDMxMlwyNDZcMzE3XDMxMSIKLSAgIlwyNDVcMzE3XDMxMVwyNDVcMzE2XDMxMFwyNDRcMzE2XDMwN1wyNDNcMzE1XDMwN1wyNDJcMzE0XDMwNlwyNDFcMzE0XDMwNSIKLSAgIlwyNDBcMzEyXDMwNVwyMzdcMzEyXDMwNFwyMzZcMzEyXDMwM1wyMzVcMzExXDMwM1wyMzRcMzExXDMwMlwyMzNcMzA3XDMwMSIKLSAgIlwyMzJcMzA3XDMwMFwyMzFcMzA3XDMwMFwyMzBcMzA2XDI3N1wyMjdcMzA1XDI3NlwyMjZcMzA1XDI3NlwyMjVcMzA0XDI3NSIKLSAgIlwyMjRcMzAzXDI3NFwyMjNcMzAzXDI3M1wyMjJcMzAyXDI3M1wyMjFcMzAxXDI3MlwyMjBcMzAxXDI3MVwyMTdcMzAwXDI3MCIKLSAgIlwyMTZcMjc3XDI3MFwyMTVcMjc3XDI2N1wyMTRcMjc2XDI2NlwyMTNcMjc1XDI2NVwyMTJcMjc1XDI2NVwyMTFcMjc0XDI2NCIKLSAgIlwyMTBcMjczXDI2M1wyMDdcMjczXDI2MlwyMDZcMjcyXDI2MlwyMDVcMjcxXDI2MVwyMDRcMjcwXDI2MFwyMDNcMjcwXDI1NyIKLSAgIlwyMDJcMjY3XDI1N1wyMDFcMjY2XDI1NlwyMDBcMjY2XDI1NVwxNzdcMjY1XDI1NH5cMjY0XDI1M31cMjYzXDI1M3xcMjYzXDI1MiIKLSAgIntcMjYyXDI1MXpcMjYxXDI1MHlcMjYwXDI0N3hcMjYwXDI0N3dcMjU3XDI0NnZcMjU2XDI0NXVcMjU1XDI0NHRcMjU1XDI0MyIKLSAgInNcMjU0XDI0M3JcMjUzXDI0MnFcMjUyXDI0MXBcMjUyXDI0MG9cMjUxXDIzN25cMjUwXDIzNm1cMjQ3XDIzNWxcMjQ2XDIzNSIKLSAgImxcMjQ2XDIzNWpcMjQ1XDIzM2lcMjQ0XDIzMmhcMjQzXDIzMWdcMjQyXDIzMGZcMjQyXDIyN2VcMjQxXDIyNmRcMjQwXDIyNiIKLSAgImNcMjM3XDIyNWJcMjM2XDIyNGFcMjM1XDIyM2BcMjM0XDIyMl9cMjM0XDIyMV9cMjMzXDIyMF1cMjMyXDIxN1xcXDIzMVwyMTYiCi0gICJcXFwyMzBcMjE1WlwyMjdcMjE0WVwyMjZcMjE0WFwyMjZcMjEzV1wyMjVcMjEyVlwyMjRcMjExVVwyMjNcMjEwVFwyMjJcMjA3IgotICAiU1wyMjFcMjA2UlwyMjFcMjA1UVwyMTdcMjA0UFwyMTZcMjAzT1wyMTVcMjAyTlwyMTVcMjAxTVwyMTRcMjAwTVwyMTNcMTc3IgotICAiS1wyMTJ+SlwyMTF9SVwyMTF8SFwyMTB8R1wyMDZ6R1wyMDV6RVwyMDR4RFwyMDN2Q1wyMDN2QlwyMDF0QVwyMDBzQFwyMDBxIgotICAiQH5wPn1vPnxvPHtsPHlrO3hpOXdoOHdnOHRlNnNkNXFkNHBhM25fMm1dMWtcXDBqXFwwaFkuZlctZFUsY1QrYVIqX1ApX08oIgotICAiXU0nWUsnWEklVkkkVEYkUkRcIk9CIU1AXDQwSz9cMzdJPVwzN0c9XDM1RTlcMzRDOVwzNEE1XDMzPjVcMzE8MlwzMTwwXDI3IgotICAiOi5cMjciIjUsXDI2IiIzKlwyNCIiMSpcMjMuJlwyMi4mXDIyKlwiXDIxJ1w0MFwxNyVcMzZcMTZcIlwzNFwxNVwiXDMyXDE0IgotICAiXDM2XDMyXDEzXDMzXDI2XDEzXDMxXDI0XDExXDI2XDIyXDExXDI0XDIwXDdcMjRcMTZcNlwyMVwxNlw1XDE0XDE0XDRcMTJcMTAiCi0gICJcM1w3XDZcM1w1XDRcMVwyXDIiLAotfTsKK2V4dGVybiBjb25zdCBHc3RHTEVmZmVjdHNDdXJ2ZSB4cmF5X2N1cnZlOwogCiAjZW5kaWYKZGlmZiAtLWdpdCBhL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYyBiL2V4dC9nbC9lZmZlY3RzL2dzdGdsZWZmZWN0c3NvdXJjZXMuYwppbmRleCAzZGE4NTZjLi42YmRjMTU1IDEwMDY0NAotLS0gYS9leHQvZ2wvZWZmZWN0cy9nc3RnbGVmZmVjdHNzb3VyY2VzLmMKKysrIGIvZXh0L2dsL2VmZmVjdHMvZ3N0Z2xlZmZlY3Rzc291cmNlcy5jCkBAIC0xNTIsNyArMTUyLDcgQEAKICAgIiAgdmVjMiBub3JtY29vcmQ7IgogICAiICBub3JtY29vcmQgPSB0ZXh0dXJlY29vcmQgLSAwLjU7IgogICAiICBmbG9hdCByID0gbGVuZ3RoIChub3JtY29vcmQpOyIKLSAgIiAgbm9ybWNvb3JkICo9IHIgKiBzcXJ0KDIpOyIKKyAgIiAgbm9ybWNvb3JkICo9IHIgKiAxLjQxNDIxOyIgLyogc3FydCAoMikgKi8KICAgIiAgdGV4dHVyZWNvb3JkID0gbm9ybWNvb3JkICsgMC41OyIKICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEICh0ZXgsIHRleHR1cmVjb29yZCk7IgogICAifSI7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xiYXNlbWl4ZXIuYyBiL2V4dC9nbC9nc3RnbGJhc2VtaXhlci5jCmluZGV4IDNiYWQ3NjkuLmQyMDc4ODMgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGJhc2VtaXhlci5jCisrKyBiL2V4dC9nbC9nc3RnbGJhc2VtaXhlci5jCkBAIC0zMjAsNiArMzIwLDggQEAKIAogICBpZiAobWl4LT5kaXNwbGF5KQogICAgIGdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkgKG1peC0+ZGlzcGxheSwgbWl4X2NsYXNzLT5zdXBwb3J0ZWRfZ2xfYXBpKTsKKworICBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2V0X2NvbnRleHQgKGVsZW1lbnQsIGNvbnRleHQpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTQ4NywxMSArNDg5LDMxIEBACiAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKG1peC0+ZGlzcGxheSk7CiAgIH0KIAorICB7CisgICAgR3N0R0xBUEkgY3VycmVudF9nbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChtaXgtPmNvbnRleHQpOworICAgIGlmICgoY3VycmVudF9nbF9hcGkgJiBtaXhfY2xhc3MtPnN1cHBvcnRlZF9nbF9hcGkpID09IDApCisgICAgICBnb3RvIHVuc3VwcG9ydGVkX2dsX2FwaTsKKyAgfQorCiAgIGlmIChtaXhfY2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uKQogICAgIHJldCA9IG1peF9jbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24gKG1peCwgcXVlcnkpOwogCiAgIHJldHVybiByZXQ7CiAKK3Vuc3VwcG9ydGVkX2dsX2FwaToKKyAgeworICAgIEdzdEdMQVBJIGdsX2FwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKG1peC0+Y29udGV4dCk7CisgICAgZ2NoYXIgKmdsX2FwaV9zdHIgPSBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoZ2xfYXBpKTsKKyAgICBnY2hhciAqc3VwcG9ydGVkX2dsX2FwaV9zdHIgPQorICAgICAgICBnc3RfZ2xfYXBpX3RvX3N0cmluZyAobWl4X2NsYXNzLT5zdXBwb3J0ZWRfZ2xfYXBpKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAobWl4LCBSRVNPVVJDRSwgQlVTWSwKKyAgICAgICAgKCJHTCBBUEkncyBub3QgY29tcGF0aWJsZSBjb250ZXh0OiAlcyBzdXBwb3J0ZWQ6ICVzIiwgZ2xfYXBpX3N0ciwKKyAgICAgICAgICAgIHN1cHBvcnRlZF9nbF9hcGlfc3RyKSwgKE5VTEwpKTsKKworICAgIGdfZnJlZSAoc3VwcG9ydGVkX2dsX2FwaV9zdHIpOworICAgIGdfZnJlZSAoZ2xfYXBpX3N0cik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiBjb250ZXh0X2Vycm9yOgogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKG1peCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGNvbG9yYmFsYW5jZS5jIGIvZXh0L2dsL2dzdGdsY29sb3JiYWxhbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjdkY2IwMAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9nbC9nc3RnbGNvbG9yYmFsYW5jZS5jCkBAIC0wLDAgKzEsNTU3IEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgPDIwMTY+IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworLyoKKyAqIFRoaXMgZmlsZSB3YXMgbW9kaWZpZWQgZnJvbSB2aWRlb2JhbGFuY2UgYW5kIGNvbnZlcnRlZCB0byBPcGVuR0wKKyAqLworCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1nbGNvbG9yYmFsYW5jZQorICoKKyAqIEFkanVzdHMgYnJpZ2h0bmVzcywgY29udHJhc3QsIGh1ZSwgc2F0dXJhdGlvbiBvbiBhIHZpZGVvIHN0cmVhbS4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbGNvbG9yYmFsYW5jZSBzYXR1cmF0aW9uPTAuMCAhIGdsY29sb3Jjb252ZXJ0ICEgZ2xkb3dubG9hZCAhIHhpbWFnZXNpbmsKKyAqIF18IFRoaXMgcGlwZWxpbmUgY29udmVydHMgdGhlIGltYWdlIHRvIGJsYWNrIGFuZCB3aGl0ZSBieSBzZXR0aW5nIHRoZQorICogc2F0dXJhdGlvbiB0byAwLjAuCisgKiA8L3JlZnNlY3QyPgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9tYXRoLWNvbXBhdC5oPgorCisjaW5jbHVkZSAiZ3N0Z2xjb2xvcmJhbGFuY2UuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdzdC92aWRlby9jb2xvcmJhbGFuY2UuaD4KKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ2xjb2xvcmJhbGFuY2VfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ2xjb2xvcmJhbGFuY2VfZGVidWcKKworLyogR3N0R0xDb2xvckJhbGFuY2UgcHJvcGVydGllcyAqLworI2RlZmluZSBERUZBVUxUX1BST1BfQ09OVFJBU1QgICAgICAgMS4wCisjZGVmaW5lIERFRkFVTFRfUFJPUF9CUklHSFRORVNTCSAgICAwLjAKKyNkZWZpbmUgREVGQVVMVF9QUk9QX0hVRSAgICAgICAgICAgIDAuMAorI2RlZmluZSBERUZBVUxUX1BST1BfU0FUVVJBVElPTgkgICAgMS4wCisKKy8qICpJTkRFTlQtT0ZGKiAqLworc3RhdGljIGNvbnN0IGdjaGFyICpjb2xvcl9iYWxhbmNlX2ZyYWcgPQorICAiI2lmZGVmIEdMX0VTXG4iCisgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgIiNlbmRpZlxuIgorICAidW5pZm9ybSBmbG9hdCBicmlnaHRuZXNzO1xuIgorICAidW5pZm9ybSBmbG9hdCBjb250cmFzdDtcbiIKKyAgInVuaWZvcm0gZmxvYXQgc2F0dXJhdGlvbjtcbiIKKyAgInVuaWZvcm0gZmxvYXQgaHVlO1xuIgorICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCisgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCisgICIjZGVmaW5lIGZyb21feXV2X2J0NjAxX29mZnNldCB2ZWMzKC0wLjA2MjUsIC0wLjUsIC0wLjUpXG4iCisgICIjZGVmaW5lIGZyb21feXV2X2J0NjAxX3Jjb2VmZiB2ZWMzKDEuMTY0LCAwLjAwMCwgMS41OTYpXG4iCisgICIjZGVmaW5lIGZyb21feXV2X2J0NjAxX2djb2VmZiB2ZWMzKDEuMTY0LC0wLjM5MSwtMC44MTMpXG4iCisgICIjZGVmaW5lIGZyb21feXV2X2J0NjAxX2Jjb2VmZiB2ZWMzKDEuMTY0LCAyLjAxOCwgMC4wMDApXG4iCisgICIjZGVmaW5lIGZyb21fcmdiX2J0NjAxX29mZnNldCB2ZWMzKDAuMDYyNSwgMC41LCAwLjUpXG4iCisgICIjZGVmaW5lIGZyb21fcmdiX2J0NjAxX3ljb2VmZiB2ZWMzKDAuMjU2ODE2LCAwLjUwNDE1NCwgMC4wOTc5MTM3KVxuIgorICAiI2RlZmluZSBmcm9tX3JnYl9idDYwMV91Y29lZmYgdmVjMygtMC4xNDgyNDYsIC0wLjI5MTAyLCAwLjQzOTI2NilcbiIKKyAgIiNkZWZpbmUgZnJvbV9yZ2JfYnQ2MDFfdmNvZWZmIHZlYzMoMC40MzkyNzEsIC0wLjM2NzgzMywgLTAuMDcxNDM4KVxuIgorICAiI2RlZmluZSBQSSAzLjE0MTU5MjY1XG4iCisgICJcbiIKKyAgInZlYzMgeXV2X3RvX3JnYiAodmVjMyB2YWwpIHtcbiIKKyAgIiAgdmVjMyByZ2I7XG4iCisgICIgIHZhbCArPSBmcm9tX3l1dl9idDYwMV9vZmZzZXQ7XG4iCisgICIgIHJnYi5yID0gZG90KHZhbCwgZnJvbV95dXZfYnQ2MDFfcmNvZWZmKTtcbiIKKyAgIiAgcmdiLmcgPSBkb3QodmFsLCBmcm9tX3l1dl9idDYwMV9nY29lZmYpO1xuIgorICAiICByZ2IuYiA9IGRvdCh2YWwsIGZyb21feXV2X2J0NjAxX2Jjb2VmZik7XG4iCisgICIgIHJldHVybiByZ2I7XG4iCisgICJ9XG4iCisgICJ2ZWMzIHJnYl90b195dXYgKHZlYzMgdmFsKSB7XG4iCisgICIgIHZlYzMgeXV2O1xuIgorICAiICB5dXYuciA9IGRvdCh2YWwucmdiLCBmcm9tX3JnYl9idDYwMV95Y29lZmYpO1xuIgorICAiICB5dXYuZyA9IGRvdCh2YWwucmdiLCBmcm9tX3JnYl9idDYwMV91Y29lZmYpO1xuIgorICAiICB5dXYuYiA9IGRvdCh2YWwucmdiLCBmcm9tX3JnYl9idDYwMV92Y29lZmYpO1xuIgorICAiICB5dXYgKz0gZnJvbV9yZ2JfYnQ2MDFfb2Zmc2V0O1xuIgorICAiICByZXR1cm4geXV2O1xuIgorICAifVxuIgorICAvKiAyMjQgPSAyNTYgLSAoMjU2IC0gMjQwKSAtIDE2Ki8KKyAgImZsb2F0IGx1bWFfdG9fbmFycm93IChmbG9hdCBsdW1hKSB7XG4iCisgICIgIHJldHVybiAobHVtYSArIDE2LjAgLyAyNTYuMCkgKiAyMTkuMCAvIDI1Ni4wOyIKKyAgIn1cbiIKKyAgImZsb2F0IGx1bWFfdG9fZnVsbCAoZmxvYXQgbHVtYSkge1xuIgorICAiICByZXR1cm4gKGx1bWEgKiAyNTYuMCAvIDIxOS4wKSAtIDE2LjAgLyAyNTYuMDsiCisgICJ9XG4iCisgICJ2b2lkIG1haW4gKCkge1xuIgorICAiICB2ZWMzIHl1djtcbiIKKyAgLyogb3BlcmF0aW9ucyB0cmFuc2xhdGVkIGZyb20gdmlkZW9iYWxhbmNlYW5kIHRlc3RlZCB3aXRoIGdsdmlkZW9taXhlcgorICAgKiB3aXRoIG9uZSBwYWQncyBwYXJlbWV0ZXJzIGJsZW5kLWVxdWF0aW9uLXJnYj17c3VidHJhY3QscmV2ZXJzZS1zdWJ0cmFjdH0sCisgICAqIGJsZW5kLWZ1bmN0aW9uLXNyYy1yZ2I9c3JjLWNvbG9yIGFuZCBibGVuZC1mdW5jdGlvbi1kc3QtcmdiPWRzdC1jb2xvciAqLworICAiICBmbG9hdCBodWVfY29zID0gY29zIChQSSAqIGh1ZSk7XG4iCisgICIgIGZsb2F0IGh1ZV9zaW4gPSBzaW4gKFBJICogaHVlKTtcbiIKKyAgIiAgdmVjNCByZ2JhID0gdGV4dHVyZTJEICh0ZXgsIHZfdGV4Y29vcmQpO1xuIgorICAiICB5dXYgPSByZ2JfdG9feXV2IChyZ2JhLnJnYik7XG4iCisgICIgIHl1di54ID0gY2xhbXAgKGx1bWFfdG9fbmFycm93IChsdW1hX3RvX2Z1bGwoeXV2LngpICogY29udHJhc3QpICsgYnJpZ2h0bmVzcywgMC4wLCAxLjApO1xuIgorICAiICB2ZWMyIHV2ID0geXV2Lnl6O1xuIgorICAiICB5dXYueSA9IGNsYW1wICgwLjUgKyAoKCh1di54IC0gMC41KSAqIGh1ZV9jb3MgKyAodXYueSAtIDAuNSkgKiBodWVfc2luKSAqIHNhdHVyYXRpb24pLCAwLjAsIDEuMCk7XG4iCisgICIgIHl1di56ID0gY2xhbXAgKDAuNSArICgoKDAuNSAtIHV2LngpICogaHVlX3NpbiArICh1di55IC0gMC41KSAqIGh1ZV9jb3MpICogc2F0dXJhdGlvbiksIDAuMCwgMS4wKTtcbiIKKyAgIiAgcmdiYS5yZ2IgPSB5dXZfdG9fcmdiICh5dXYpO1xuIgorICAiICBnbF9GcmFnQ29sb3IgPSByZ2JhO1xuIgorICAifVxuIjsKKy8qICpJTkRFTlQtT04qICovCisKK2VudW0KK3sKKyAgUFJPUF8wLAorICBQUk9QX0NPTlRSQVNULAorICBQUk9QX0JSSUdIVE5FU1MsCisgIFBST1BfSFVFLAorICBQUk9QX1NBVFVSQVRJT04KK307CisKK3N0YXRpYyB2b2lkIGdzdF9nbF9jb2xvcl9iYWxhbmNlX2NvbG9yYmFsYW5jZV9pbml0IChHc3RDb2xvckJhbGFuY2VJbnRlcmZhY2UgKgorICAgIGlmYWNlKTsKKworc3RhdGljIHZvaWQgZ3N0X2dsX2NvbG9yX2JhbGFuY2Vfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworCisjZGVmaW5lIGdzdF9nbF9jb2xvcl9iYWxhbmNlX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RHTENvbG9yQmFsYW5jZSwgZ3N0X2dsX2NvbG9yX2JhbGFuY2UsCisgICAgR1NUX1RZUEVfR0xfRklMVEVSLAorICAgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NUX1RZUEVfQ09MT1JfQkFMQU5DRSwKKyAgICAgICAgZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX2luaXQpKTsKKworc3RhdGljIGdib29sZWFuCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9pc19wYXNzdGhyb3VnaCAoR3N0R0xDb2xvckJhbGFuY2UgKiBnbGNvbG9yYmFsYW5jZSkKK3sKKyAgcmV0dXJuIGdsY29sb3JiYWxhbmNlLT5jb250cmFzdCA9PSAxLjAgJiYKKyAgICAgIGdsY29sb3JiYWxhbmNlLT5icmlnaHRuZXNzID09IDAuMCAmJgorICAgICAgZ2xjb2xvcmJhbGFuY2UtPmh1ZSA9PSAwLjAgJiYgZ2xjb2xvcmJhbGFuY2UtPnNhdHVyYXRpb24gPT0gMS4wOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfdXBkYXRlX3Byb3BlcnRpZXMgKEdzdEdMQ29sb3JCYWxhbmNlICogZ2xjb2xvcmJhbGFuY2UpCit7CisgIGdib29sZWFuIHBhc3N0aHJvdWdoOworICBHc3RCYXNlVHJhbnNmb3JtICpiYXNlID0gR1NUX0JBU0VfVFJBTlNGT1JNIChnbGNvbG9yYmFsYW5jZSk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChnbGNvbG9yYmFsYW5jZSk7CisgIHBhc3N0aHJvdWdoID0gZ3N0X2dsX2NvbG9yX2JhbGFuY2VfaXNfcGFzc3Rocm91Z2ggKGdsY29sb3JiYWxhbmNlKTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGdsY29sb3JiYWxhbmNlKTsKKworICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X3Bhc3N0aHJvdWdoIChiYXNlLCBwYXNzdGhyb3VnaCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2NyZWF0ZV9zaGFkZXIgKEdzdEdMQ29sb3JCYWxhbmNlICogYmFsYW5jZSkKK3sKKyAgR3N0R0xCYXNlRmlsdGVyICpiYXNlX2ZpbHRlciA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoYmFsYW5jZSk7CisgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChiYWxhbmNlKTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgaWYgKGJhbGFuY2UtPnNoYWRlcikKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChiYWxhbmNlLT5zaGFkZXIpOworCisgIGlmICghKGJhbGFuY2UtPnNoYWRlciA9CisgICAgICAgICAgZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlcyAoYmFzZV9maWx0ZXItPmNvbnRleHQsICZlcnJvciwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChiYXNlX2ZpbHRlci0+Y29udGV4dCksCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoYmFzZV9maWx0ZXItPmNvbnRleHQsCisgICAgICAgICAgICAgICAgICBHTF9GUkFHTUVOVF9TSEFERVIsIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgICAgICAgICAgICAgIEdTVF9HTFNMX1BST0ZJTEVfRVMgfCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksCisgICAgICAgICAgICAgICAgICBjb2xvcl9iYWxhbmNlX2ZyYWcpLCBOVUxMKSkpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoYmFsYW5jZSwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCisgICAgICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgY29sb3JiYWxhbmNlIHNoYWRlciIpLCAoIiVzIiwKKyAgICAgICAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiVW5rbm93biBlcnJvciIpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChiYWxhbmNlLT5zaGFkZXIsICJhX3Bvc2l0aW9uIik7CisgIGZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoYmFsYW5jZS0+c2hhZGVyLCAiYV90ZXhjb29yZCIpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2dsX3N0YXJ0IChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcikKK3sKKyAgR3N0R0xDb2xvckJhbGFuY2UgKmJhbGFuY2UgPSBHU1RfR0xfQ09MT1JfQkFMQU5DRSAoYmFzZV9maWx0ZXIpOworCisgIGlmICghX2NyZWF0ZV9zaGFkZXIgKGJhbGFuY2UpKQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5nbF9zdGFydCAoYmFzZV9maWx0ZXIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2xfc3RvcCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZV9maWx0ZXIpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICpiYWxhbmNlID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKGJhc2VfZmlsdGVyKTsKKworICBpZiAoYmFsYW5jZS0+c2hhZGVyKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGJhbGFuY2UtPnNoYWRlcik7CisgIGJhbGFuY2UtPnNoYWRlciA9IE5VTEw7CisKKyAgR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5nbF9zdG9wIChiYXNlX2ZpbHRlcik7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9iZWZvcmVfdHJhbnNmb3JtIChHc3RCYXNlVHJhbnNmb3JtICogYmFzZSwgR3N0QnVmZmVyICogYnVmKQoreworICBHc3RHTENvbG9yQmFsYW5jZSAqYmFsYW5jZSA9IEdTVF9HTF9DT0xPUl9CQUxBTkNFIChiYXNlKTsKKyAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwgc3RyZWFtX3RpbWU7CisKKyAgdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7CisgIHN0cmVhbV90aW1lID0KKyAgICAgIGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lICgmYmFzZS0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLCB0aW1lc3RhbXApOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKGJhbGFuY2UsICJzeW5jIHRvICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgIEdTVF9USU1FX0FSR1MgKHRpbWVzdGFtcCkpOworCisgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoc3RyZWFtX3RpbWUpKQorICAgIGdzdF9vYmplY3Rfc3luY192YWx1ZXMgKEdTVF9PQkpFQ1QgKGJhbGFuY2UpLCBzdHJlYW1fdGltZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsIGd1aW50IHRleF9pZCwKKyAgICBncG9pbnRlciBkYXRhKQoreworICBHc3RHTENvbG9yQmFsYW5jZSAqYmFsYW5jZSA9IEdTVF9HTF9DT0xPUl9CQUxBTkNFIChkYXRhKTsKKyAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9GSUxURVIgKGRhdGEpOworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZGF0YSktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAoIWJhbGFuY2UtPnNoYWRlcikKKyAgICBfY3JlYXRlX3NoYWRlciAoYmFsYW5jZSk7CisKKyAgZ3N0X2dsX3NoYWRlcl91c2UgKGJhbGFuY2UtPnNoYWRlcik7CisgIEdTVF9PQkpFQ1RfTE9DSyAoYmFsYW5jZSk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGJhbGFuY2UtPnNoYWRlciwgImJyaWdodG5lc3MiLAorICAgICAgYmFsYW5jZS0+YnJpZ2h0bmVzcyk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGJhbGFuY2UtPnNoYWRlciwgImNvbnRyYXN0IiwgYmFsYW5jZS0+Y29udHJhc3QpOworICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChiYWxhbmNlLT5zaGFkZXIsICJzYXR1cmF0aW9uIiwKKyAgICAgIGJhbGFuY2UtPnNhdHVyYXRpb24pOworICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChiYWxhbmNlLT5zaGFkZXIsICJodWUiLCBiYWxhbmNlLT5odWUpOworICBHU1RfT0JKRUNUX1VOTE9DSyAoYmFsYW5jZSk7CisKKyAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXhfaWQpOworCisgIGdzdF9nbF9maWx0ZXJfZHJhd190ZXh0dXJlIChmaWx0ZXIsIHRleF9pZCwgd2lkdGgsIGhlaWdodCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZmlsdGVyX3RleHR1cmUgKEdzdEdMRmlsdGVyICogZmlsdGVyLCBndWludCBpbl90ZXgsCisgICAgZ3VpbnQgb3V0X3RleCkKK3sKKyAgZ3N0X2dsX2ZpbHRlcl9yZW5kZXJfdG9fdGFyZ2V0IChmaWx0ZXIsIFRSVUUsIGluX3RleCwgb3V0X3RleCwKKyAgICAgIChHTENCKSBnc3RfZ2xfY29sb3JfYmFsYW5jZV9jYWxsYmFjaywgZmlsdGVyKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RHTENvbG9yQmFsYW5jZSAqYmFsYW5jZSA9IEdTVF9HTF9DT0xPUl9CQUxBTkNFIChvYmplY3QpOworICBHTGlzdCAqY2hhbm5lbHMgPSBOVUxMOworCisgIGNoYW5uZWxzID0gYmFsYW5jZS0+Y2hhbm5lbHM7CisgIHdoaWxlIChjaGFubmVscykgeworICAgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKmNoYW5uZWwgPSBjaGFubmVscy0+ZGF0YTsKKworICAgIGdfb2JqZWN0X3VucmVmIChjaGFubmVsKTsKKyAgICBjaGFubmVscy0+ZGF0YSA9IE5VTEw7CisgICAgY2hhbm5lbHMgPSBnX2xpc3RfbmV4dCAoY2hhbm5lbHMpOworICB9CisKKyAgaWYgKGJhbGFuY2UtPmNoYW5uZWxzKQorICAgIGdfbGlzdF9mcmVlIChiYWxhbmNlLT5jaGFubmVscyk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY2xhc3NfaW5pdCAoR3N0R0xDb2xvckJhbGFuY2VDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOworICBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKnRyYW5zX2NsYXNzID0gKEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqKSBrbGFzczsKKyAgR3N0R0xCYXNlRmlsdGVyQ2xhc3MgKmJhc2VfZmlsdGVyX2NsYXNzID0gKEdzdEdMQmFzZUZpbHRlckNsYXNzICopIGtsYXNzOworICBHc3RHTEZpbHRlckNsYXNzICpmaWx0ZXJfY2xhc3MgPSAoR3N0R0xGaWx0ZXJDbGFzcyAqKSBrbGFzczsKKworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ2xjb2xvcmJhbGFuY2VfZGVidWcsICJnbGNvbG9yYmFsYW5jZSIsIDAsCisgICAgICAiZ2xjb2xvcmJhbGFuY2UiKTsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9nbF9jb2xvcl9iYWxhbmNlX2ZpbmFsaXplOworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ2xfY29sb3JfYmFsYW5jZV9zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9nbF9jb2xvcl9iYWxhbmNlX2dldF9wcm9wZXJ0eTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTlRSQVNULAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImNvbnRyYXN0IiwgIkNvbnRyYXN0IiwgImNvbnRyYXN0IiwKKyAgICAgICAgICAwLjAsIDIuMCwgREVGQVVMVF9QUk9QX0NPTlRSQVNULAorICAgICAgICAgIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9CUklHSFRORVNTLAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImJyaWdodG5lc3MiLCAiQnJpZ2h0bmVzcyIsICJicmlnaHRuZXNzIiwgLTEuMCwgMS4wLAorICAgICAgICAgIERFRkFVTFRfUFJPUF9CUklHSFRORVNTLAorICAgICAgICAgIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9IVUUsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiaHVlIiwgIkh1ZSIsICJodWUiLCAtMS4wLCAxLjAsIERFRkFVTFRfUFJPUF9IVUUsCisgICAgICAgICAgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NBVFVSQVRJT04sCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgic2F0dXJhdGlvbiIsICJTYXR1cmF0aW9uIiwgInNhdHVyYXRpb24iLCAwLjAsIDIuMCwKKyAgICAgICAgICBERUZBVUxUX1BST1BfU0FUVVJBVElPTiwKKyAgICAgICAgICBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywgIlZpZGVvIGJhbGFuY2UiLAorICAgICAgIkZpbHRlci9FZmZlY3QvVmlkZW8iLAorICAgICAgIkFkanVzdHMgYnJpZ2h0bmVzcywgY29udHJhc3QsIGh1ZSwgc2F0dXJhdGlvbiBvbiBhIHZpZGVvIHN0cmVhbSIsCisgICAgICAiTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPiIpOworCisgIHRyYW5zX2NsYXNzLT5iZWZvcmVfdHJhbnNmb3JtID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JfYmFsYW5jZV9iZWZvcmVfdHJhbnNmb3JtKTsKKyAgdHJhbnNfY2xhc3MtPnRyYW5zZm9ybV9pcF9vbl9wYXNzdGhyb3VnaCA9IEZBTFNFOworCisgIGJhc2VfZmlsdGVyX2NsYXNzLT5nbF9zdGFydCA9CisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX2NvbG9yX2JhbGFuY2VfZ2xfc3RhcnQpOworICBiYXNlX2ZpbHRlcl9jbGFzcy0+Z2xfc3RvcCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JfYmFsYW5jZV9nbF9zdG9wKTsKKworICBmaWx0ZXJfY2xhc3MtPmZpbHRlcl90ZXh0dXJlID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JfYmFsYW5jZV9maWx0ZXJfdGV4dHVyZSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9pbml0IChHc3RHTENvbG9yQmFsYW5jZSAqIGdsY29sb3JiYWxhbmNlKQoreworICBjb25zdCBnY2hhciAqY2hhbm5lbHNbNF0gPSB7ICJIVUUiLCAiU0FUVVJBVElPTiIsCisgICAgIkJSSUdIVE5FU1MiLCAiQ09OVFJBU1QiCisgIH07CisgIGdpbnQgaTsKKworICAvKiBJbml0aWFsaXplIHByb3BlcnRpZXdzICovCisgIGdsY29sb3JiYWxhbmNlLT5jb250cmFzdCA9IERFRkFVTFRfUFJPUF9DT05UUkFTVDsKKyAgZ2xjb2xvcmJhbGFuY2UtPmJyaWdodG5lc3MgPSBERUZBVUxUX1BST1BfQlJJR0hUTkVTUzsKKyAgZ2xjb2xvcmJhbGFuY2UtPmh1ZSA9IERFRkFVTFRfUFJPUF9IVUU7CisgIGdsY29sb3JiYWxhbmNlLT5zYXR1cmF0aW9uID0gREVGQVVMVF9QUk9QX1NBVFVSQVRJT047CisKKyAgZ3N0X2dsX2NvbG9yX2JhbGFuY2VfdXBkYXRlX3Byb3BlcnRpZXMgKGdsY29sb3JiYWxhbmNlKTsKKworICAvKiBHZW5lcmF0ZSB0aGUgY2hhbm5lbHMgbGlzdCAqLworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChjaGFubmVscyk7IGkrKykgeworICAgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKmNoYW5uZWw7CisKKyAgICBjaGFubmVsID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9DT0xPUl9CQUxBTkNFX0NIQU5ORUwsIE5VTEwpOworICAgIGNoYW5uZWwtPmxhYmVsID0gZ19zdHJkdXAgKGNoYW5uZWxzW2ldKTsKKyAgICBjaGFubmVsLT5taW5fdmFsdWUgPSAtMTAwMDsKKyAgICBjaGFubmVsLT5tYXhfdmFsdWUgPSAxMDAwOworCisgICAgZ2xjb2xvcmJhbGFuY2UtPmNoYW5uZWxzID0KKyAgICAgICAgZ19saXN0X2FwcGVuZCAoZ2xjb2xvcmJhbGFuY2UtPmNoYW5uZWxzLCBjaGFubmVsKTsKKyAgfQorfQorCitzdGF0aWMgY29uc3QgR0xpc3QgKgorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX2xpc3RfY2hhbm5lbHMgKEdzdENvbG9yQmFsYW5jZSAqIGJhbGFuY2UpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICpnbGNvbG9yYmFsYW5jZSA9IEdTVF9HTF9DT0xPUl9CQUxBTkNFIChiYWxhbmNlKTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ2xjb2xvcmJhbGFuY2UgIT0gTlVMTCwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09MT1JfQkFMQU5DRSAoZ2xjb2xvcmJhbGFuY2UpLCBOVUxMKTsKKworICByZXR1cm4gZ2xjb2xvcmJhbGFuY2UtPmNoYW5uZWxzOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX3NldF92YWx1ZSAoR3N0Q29sb3JCYWxhbmNlICogYmFsYW5jZSwKKyAgICBHc3RDb2xvckJhbGFuY2VDaGFubmVsICogY2hhbm5lbCwgZ2ludCB2YWx1ZSkKK3sKKyAgR3N0R0xDb2xvckJhbGFuY2UgKnZiID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKGJhbGFuY2UpOworICBnZG91YmxlIG5ld192YWw7CisgIGdib29sZWFuIGNoYW5nZWQgPSBGQUxTRTsKKworICBnX3JldHVybl9pZl9mYWlsICh2YiAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX0NPTE9SX0JBTEFOQ0UgKHZiKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGNoYW5uZWwtPmxhYmVsICE9IE5VTEwpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAodmIpOworICBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsICJIVUUiKSkgeworICAgIG5ld192YWwgPSAodmFsdWUgKyAxMDAwLjApICogMi4wIC8gMjAwMC4wIC0gMS4wOworICAgIGNoYW5nZWQgPSBuZXdfdmFsICE9IHZiLT5odWU7CisgICAgdmItPmh1ZSA9IG5ld192YWw7CisgIH0gZWxzZSBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsICJTQVRVUkFUSU9OIikpIHsKKyAgICBuZXdfdmFsID0gKHZhbHVlICsgMTAwMC4wKSAqIDIuMCAvIDIwMDAuMDsKKyAgICBjaGFuZ2VkID0gbmV3X3ZhbCAhPSB2Yi0+c2F0dXJhdGlvbjsKKyAgICB2Yi0+c2F0dXJhdGlvbiA9IG5ld192YWw7CisgIH0gZWxzZSBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsICJCUklHSFRORVNTIikpIHsKKyAgICBuZXdfdmFsID0gKHZhbHVlICsgMTAwMC4wKSAqIDIuMCAvIDIwMDAuMCAtIDEuMDsKKyAgICBjaGFuZ2VkID0gbmV3X3ZhbCAhPSB2Yi0+YnJpZ2h0bmVzczsKKyAgICB2Yi0+YnJpZ2h0bmVzcyA9IG5ld192YWw7CisgIH0gZWxzZSBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsICJDT05UUkFTVCIpKSB7CisgICAgbmV3X3ZhbCA9ICh2YWx1ZSArIDEwMDAuMCkgKiAyLjAgLyAyMDAwLjA7CisgICAgY2hhbmdlZCA9IG5ld192YWwgIT0gdmItPmNvbnRyYXN0OworICAgIHZiLT5jb250cmFzdCA9IG5ld192YWw7CisgIH0KKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHZiKTsKKworICBpZiAoY2hhbmdlZCkKKyAgICBnc3RfZ2xfY29sb3JfYmFsYW5jZV91cGRhdGVfcHJvcGVydGllcyAodmIpOworCisgIGlmIChjaGFuZ2VkKSB7CisgICAgZ3N0X2NvbG9yX2JhbGFuY2VfdmFsdWVfY2hhbmdlZCAoYmFsYW5jZSwgY2hhbm5lbCwKKyAgICAgICAgZ3N0X2NvbG9yX2JhbGFuY2VfZ2V0X3ZhbHVlIChiYWxhbmNlLCBjaGFubmVsKSk7CisgIH0KK30KKworc3RhdGljIGdpbnQKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2NvbG9yYmFsYW5jZV9nZXRfdmFsdWUgKEdzdENvbG9yQmFsYW5jZSAqIGJhbGFuY2UsCisgICAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqIGNoYW5uZWwpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICp2YiA9IEdTVF9HTF9DT0xPUl9CQUxBTkNFIChiYWxhbmNlKTsKKyAgZ2ludCB2YWx1ZSA9IDA7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHZiICE9IE5VTEwsIDApOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTE9SX0JBTEFOQ0UgKHZiKSwgMCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjaGFubmVsLT5sYWJlbCAhPSBOVUxMLCAwKTsKKworICBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsICJIVUUiKSkgeworICAgIHZhbHVlID0gKHZiLT5odWUgKyAxKSAqIDIwMDAuMCAvIDIuMCAtIDEwMDAuMDsKKyAgfSBlbHNlIGlmICghZ19hc2NpaV9zdHJjYXNlY21wIChjaGFubmVsLT5sYWJlbCwgIlNBVFVSQVRJT04iKSkgeworICAgIHZhbHVlID0gdmItPnNhdHVyYXRpb24gKiAyMDAwLjAgLyAyLjAgLSAxMDAwLjA7CisgIH0gZWxzZSBpZiAoIWdfYXNjaWlfc3RyY2FzZWNtcCAoY2hhbm5lbC0+bGFiZWwsICJCUklHSFRORVNTIikpIHsKKyAgICB2YWx1ZSA9ICh2Yi0+YnJpZ2h0bmVzcyArIDEpICogMjAwMC4wIC8gMi4wIC0gMTAwMC4wOworICB9IGVsc2UgaWYgKCFnX2FzY2lpX3N0cmNhc2VjbXAgKGNoYW5uZWwtPmxhYmVsLCAiQ09OVFJBU1QiKSkgeworICAgIHZhbHVlID0gdmItPmNvbnRyYXN0ICogMjAwMC4wIC8gMi4wIC0gMTAwMC4wOworICB9CisKKyAgcmV0dXJuIHZhbHVlOworfQorCitzdGF0aWMgR3N0Q29sb3JCYWxhbmNlVHlwZQorZ3N0X2dsX2NvbG9yX2JhbGFuY2VfY29sb3JiYWxhbmNlX2dldF9iYWxhbmNlX3R5cGUgKEdzdENvbG9yQmFsYW5jZSAqIGJhbGFuY2UpCit7CisgIHJldHVybiBHU1RfQ09MT1JfQkFMQU5DRV9IQVJEV0FSRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2NvbG9yYmFsYW5jZV9pbml0IChHc3RDb2xvckJhbGFuY2VJbnRlcmZhY2UgKiBpZmFjZSkKK3sKKyAgaWZhY2UtPmxpc3RfY2hhbm5lbHMgPSBnc3RfZ2xfY29sb3JfYmFsYW5jZV9jb2xvcmJhbGFuY2VfbGlzdF9jaGFubmVsczsKKyAgaWZhY2UtPnNldF92YWx1ZSA9IGdzdF9nbF9jb2xvcl9iYWxhbmNlX2NvbG9yYmFsYW5jZV9zZXRfdmFsdWU7CisgIGlmYWNlLT5nZXRfdmFsdWUgPSBnc3RfZ2xfY29sb3JfYmFsYW5jZV9jb2xvcmJhbGFuY2VfZ2V0X3ZhbHVlOworICBpZmFjZS0+Z2V0X2JhbGFuY2VfdHlwZSA9IGdzdF9nbF9jb2xvcl9iYWxhbmNlX2NvbG9yYmFsYW5jZV9nZXRfYmFsYW5jZV90eXBlOworfQorCitzdGF0aWMgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqCitnc3RfZ2xfY29sb3JfYmFsYW5jZV9maW5kX2NoYW5uZWwgKEdzdEdMQ29sb3JCYWxhbmNlICogYmFsYW5jZSwKKyAgICBjb25zdCBnY2hhciAqIGxhYmVsKQoreworICBHTGlzdCAqbDsKKworICBmb3IgKGwgPSBiYWxhbmNlLT5jaGFubmVsczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RDb2xvckJhbGFuY2VDaGFubmVsICpjaGFubmVsID0gbC0+ZGF0YTsKKworICAgIGlmIChnX2FzY2lpX3N0cmNhc2VjbXAgKGNoYW5uZWwtPmxhYmVsLCBsYWJlbCkgPT0gMCkKKyAgICAgIHJldHVybiBjaGFubmVsOworICB9CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbG9yX2JhbGFuY2Vfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdEdMQ29sb3JCYWxhbmNlICpiYWxhbmNlID0gR1NUX0dMX0NPTE9SX0JBTEFOQ0UgKG9iamVjdCk7CisgIGdkb3VibGUgZDsKKyAgY29uc3QgZ2NoYXIgKmxhYmVsID0gTlVMTDsKKworICBHU1RfT0JKRUNUX0xPQ0sgKGJhbGFuY2UpOworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfQ09OVFJBU1Q6CisgICAgICBkID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChiYWxhbmNlLCAiQ2hhbmdpbmcgY29udHJhc3QgZnJvbSAlbGYgdG8gJWxmIiwKKyAgICAgICAgICBiYWxhbmNlLT5jb250cmFzdCwgZCk7CisgICAgICBpZiAoZCAhPSBiYWxhbmNlLT5jb250cmFzdCkKKyAgICAgICAgbGFiZWwgPSAiQ09OVFJBU1QiOworICAgICAgYmFsYW5jZS0+Y29udHJhc3QgPSBkOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0JSSUdIVE5FU1M6CisgICAgICBkID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChiYWxhbmNlLCAiQ2hhbmdpbmcgYnJpZ2h0bmVzcyBmcm9tICVsZiB0byAlbGYiLAorICAgICAgICAgIGJhbGFuY2UtPmJyaWdodG5lc3MsIGQpOworICAgICAgaWYgKGQgIT0gYmFsYW5jZS0+YnJpZ2h0bmVzcykKKyAgICAgICAgbGFiZWwgPSAiQlJJR0hUTkVTUyI7CisgICAgICBiYWxhbmNlLT5icmlnaHRuZXNzID0gZDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IVUU6CisgICAgICBkID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChiYWxhbmNlLCAiQ2hhbmdpbmcgaHVlIGZyb20gJWxmIHRvICVsZiIsIGJhbGFuY2UtPmh1ZSwKKyAgICAgICAgICBkKTsKKyAgICAgIGlmIChkICE9IGJhbGFuY2UtPmh1ZSkKKyAgICAgICAgbGFiZWwgPSAiSFVFIjsKKyAgICAgIGJhbGFuY2UtPmh1ZSA9IGQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0FUVVJBVElPTjoKKyAgICAgIGQgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhbGFuY2UsICJDaGFuZ2luZyBzYXR1cmF0aW9uIGZyb20gJWxmIHRvICVsZiIsCisgICAgICAgICAgYmFsYW5jZS0+c2F0dXJhdGlvbiwgZCk7CisgICAgICBpZiAoZCAhPSBiYWxhbmNlLT5zYXR1cmF0aW9uKQorICAgICAgICBsYWJlbCA9ICJTQVRVUkFUSU9OIjsKKyAgICAgIGJhbGFuY2UtPnNhdHVyYXRpb24gPSBkOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChiYWxhbmNlKTsKKyAgZ3N0X2dsX2NvbG9yX2JhbGFuY2VfdXBkYXRlX3Byb3BlcnRpZXMgKGJhbGFuY2UpOworCisgIGlmIChsYWJlbCkgeworICAgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKmNoYW5uZWwgPQorICAgICAgICBnc3RfZ2xfY29sb3JfYmFsYW5jZV9maW5kX2NoYW5uZWwgKGJhbGFuY2UsIGxhYmVsKTsKKyAgICBnc3RfY29sb3JfYmFsYW5jZV92YWx1ZV9jaGFuZ2VkIChHU1RfQ09MT1JfQkFMQU5DRSAoYmFsYW5jZSksIGNoYW5uZWwsCisgICAgICAgIGdzdF9jb2xvcl9iYWxhbmNlX2dldF92YWx1ZSAoR1NUX0NPTE9SX0JBTEFOQ0UgKGJhbGFuY2UpLCBjaGFubmVsKSk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcl9iYWxhbmNlX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RHTENvbG9yQmFsYW5jZSAqYmFsYW5jZSA9IEdTVF9HTF9DT0xPUl9CQUxBTkNFIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9DT05UUkFTVDoKKyAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSAodmFsdWUsIGJhbGFuY2UtPmNvbnRyYXN0KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9CUklHSFRORVNTOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgYmFsYW5jZS0+YnJpZ2h0bmVzcyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfSFVFOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgYmFsYW5jZS0+aHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TQVRVUkFUSU9OOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgYmFsYW5jZS0+c2F0dXJhdGlvbik7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuaCBiL2V4dC9nbC9nc3RnbGNvbG9yYmFsYW5jZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMGJjZDcKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvZ2wvZ3N0Z2xjb2xvcmJhbGFuY2UuaApAQCAtMCwwICsxLDczIEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgPDE5OTk+IEVyaWsgV2FsdGhpbnNlbiA8b21lZ2FAY3NlLm9naS5lZHU+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworCisjaWZuZGVmIF9fR1NUX0dMX0NPTE9SX0JBTEFOQ0VfSF9fCisjZGVmaW5lIF9fR1NUX0dMX0NPTE9SX0JBTEFOQ0VfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9HTF9DT0xPUl9CQUxBTkNFIFwKKyAgKGdzdF9nbF9jb2xvcl9iYWxhbmNlX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9HTF9DT0xPUl9CQUxBTkNFKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfR0xfQ09MT1JfQkFMQU5DRSxHc3RHTENvbG9yQmFsYW5jZSkpCisjZGVmaW5lIEdTVF9HTF9DT0xPUl9CQUxBTkNFX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX0dMX0NPTE9SX0JBTEFOQ0UsR3N0R0xDb2xvckJhbGFuY2VDbGFzcykpCisjZGVmaW5lIEdTVF9JU19HTF9DT0xPUl9CQUxBTkNFKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfR0xfQ09MT1JfQkFMQU5DRSkpCisjZGVmaW5lIEdTVF9JU19HTF9DT0xPUl9CQUxBTkNFX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX0dMX0NPTE9SX0JBTEFOQ0UpKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb2xvckJhbGFuY2UgR3N0R0xDb2xvckJhbGFuY2U7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb2xvckJhbGFuY2VDbGFzcyBHc3RHTENvbG9yQmFsYW5jZUNsYXNzOworCisvKioKKyAqIEdzdEdMQ29sb3JCYWxhbmNlOgorICoKKyAqIE9wYXF1ZSBkYXRhIHN0cnVjdHVyZS4KKyAqLworc3RydWN0IF9Hc3RHTENvbG9yQmFsYW5jZSB7CisgIEdzdEdMRmlsdGVyIHZpZGVvZmlsdGVyOworCisgIC8qIDwgcHJpdmF0ZSA+ICovCisgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisKKyAgLyogY2hhbm5lbHMgZm9yIGludGVyZmFjZSAqLworICBHTGlzdCAqY2hhbm5lbHM7CisKKyAgLyogcHJvcGVydGllcyAqLworICBnZG91YmxlIGNvbnRyYXN0OworICBnZG91YmxlIGJyaWdodG5lc3M7CisgIGdkb3VibGUgaHVlOworICBnZG91YmxlIHNhdHVyYXRpb247Cit9OworCitzdHJ1Y3QgX0dzdEdMQ29sb3JCYWxhbmNlQ2xhc3MgeworICBHc3RHTEZpbHRlckNsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dUeXBlIGdzdF9nbF9jb2xvcl9iYWxhbmNlX2dldF90eXBlKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfR0xfQ09MT1JfQkFMQU5DRV9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYyBiL2V4dC9nbC9nc3RnbGNvbG9yY29udmVydGVsZW1lbnQuYwppbmRleCBlNGZmNmNhLi5iZDRmYmViIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnRlbGVtZW50LmMKKysrIGIvZXh0L2dsL2dzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5jCkBAIC01OCwxNSArNTgsMTMgQEAKIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9HTF9DT0xPUl9DT05WRVJUX1ZJREVPX0NBUFMgIjsiCi0gICAgICAgIEdTVF9HTF9DT0xPUl9DT05WRVJUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT05fQ0FQUykpOworICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fQ0FQUykpOwogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZWxlbWVudF9zaW5rX3BhZF90ZW1wbGF0ZSA9CiBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9HTF9DT0xPUl9DT05WRVJUX1ZJREVPX0NBUFMgIjsiCi0gICAgICAgIEdTVF9HTF9DT0xPUl9DT05WRVJUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT05fQ0FQUykpOworICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0dMX0NPTE9SX0NPTlZFUlRfVklERU9fQ0FQUykpOwogCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9jb2xvcl9jb252ZXJ0X2VsZW1lbnRfc3RvcCAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0KQpAQCAtMTkzLDYgKzE5MSw5IEBACiAgICAgICAgICAgY29udmVydC0+b3V0X2NhcHMpKQogICAgIHJldHVybiBGQUxTRTsKIAorICBpZiAoIWdzdF9nbF9jb2xvcl9jb252ZXJ0X2RlY2lkZV9hbGxvY2F0aW9uIChjb252ZXJ0LT5jb252ZXJ0LCBxdWVyeSkpCisgICAgcmV0dXJuIEZBTFNFOworCiAgIHJldHVybiBUUlVFOwogfQogCkBAIC0yNDAsMTggKzI0MSw3IEBACiBnc3RfZ2xfY29sb3JfY29udmVydF9lbGVtZW50X2ZpeGF0ZV9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICoKICAgICBidCwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBvdGhlcmNhcHMpCiB7Ci0gIEdzdENhcHMgKnJldDsKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gR1NUX0dMX0JBU0VfRklMVEVSIChidCktPmNvbnRleHQ7CiAKLSAgcmV0ID0KLSAgICAgIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUwotICAgICAgKGdzdF9nbF9jb2xvcl9jb252ZXJ0X2VsZW1lbnRfcGFyZW50X2NsYXNzKS0+Zml4YXRlX2NhcHMgKGJ0LCBkaXJlY3Rpb24sCi0gICAgICBjYXBzLCBvdGhlcmNhcHMpOwotCi0gIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7Ci0gICAgaWYgKGdzdF9jYXBzX2lzX3N1YnNldCAoY2FwcywgcmV0KSkgewotICAgICAgZ3N0X2NhcHNfcmVwbGFjZSAoJnJldCwgY2Fwcyk7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIHJldDsKKyAgcmV0dXJuIGdzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9jYXBzIChjb250ZXh0LCBkaXJlY3Rpb24sIGNhcHMsIG90aGVyY2Fwcyk7CiB9CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xjb2xvcnNjYWxlLmMgYi9leHQvZ2wvZ3N0Z2xjb2xvcnNjYWxlLmMKaW5kZXggYTc5ZTUyNC4uYzdkZjBhOCAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsY29sb3JzY2FsZS5jCisrKyBiL2V4dC9nbC9nc3RnbGNvbG9yc2NhbGUuYwpAQCAtNzAsMjQgKzcwLDI1IEBACiBzdGF0aWMgdm9pZCBnc3RfZ2xfY29sb3JzY2FsZV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKLXN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfY29sb3JzY2FsZV9nZW5fZ2xfcmVzb3VyY2VzIChHc3RHTEZpbHRlciAqIGZpbHRlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2NvbG9yc2NhbGVfZGVsX2dsX3Jlc291cmNlcyAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfY29sb3JzY2FsZV9nbF9zdGFydCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZV9maWx0ZXIpOworc3RhdGljIHZvaWQgZ3N0X2dsX2NvbG9yc2NhbGVfZ2xfc3RvcCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZV9maWx0ZXIpOwogCiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2NvbG9yc2NhbGVfZmlsdGVyX3RleHR1cmUgKEdzdEdMRmlsdGVyICogZmlsdGVyLAogICAgIGd1aW50IGluX3RleCwgZ3VpbnQgb3V0X3RleCk7Ci1zdGF0aWMgdm9pZCBnc3RfZ2xfY29sb3JzY2FsZV9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsCi0gICAgZ3VpbnQgdGV4dHVyZSwgZ3BvaW50ZXIgc3R1ZmYpOwogCiBzdGF0aWMgdm9pZAogZ3N0X2dsX2NvbG9yc2NhbGVfY2xhc3NfaW5pdCAoR3N0R0xDb2xvcnNjYWxlQ2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwogICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3M7CisgIEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqYmFzZXRyYW5zZm9ybV9jbGFzczsKKyAgR3N0R0xCYXNlRmlsdGVyQ2xhc3MgKmJhc2VfZmlsdGVyX2NsYXNzOwogICBHc3RHTEZpbHRlckNsYXNzICpmaWx0ZXJfY2xhc3M7Ci0gIEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqYmFzZXRyYW5zZm9ybV9jbGFzcyA9IEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAoa2xhc3MpOwogCiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwogICBlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgYmFzZXRyYW5zZm9ybV9jbGFzcyA9IEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAoa2xhc3MpOworICBiYXNlX2ZpbHRlcl9jbGFzcyA9IEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpOwogICBmaWx0ZXJfY2xhc3MgPSBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyk7CiAKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2NvbG9yc2NhbGVfc2V0X3Byb3BlcnR5OwpAQCAtOTUsMjQgKzk2LDIyIEBACiAKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChlbGVtZW50X2NsYXNzLCAiT3BlbkdMIGNvbG9yIHNjYWxlIiwKICAgICAgICJGaWx0ZXIvRWZmZWN0L1ZpZGVvIiwgIkNvbG9yc3BhY2UgY29udmVydGVyIGFuZCB2aWRlbyBzY2FsZXIiLAotICAgICAgIkp1bGllbiBJc29yY2UgPGp1bGllbi5pc29yY2VAZ21haWwuY29tPiIpOworICAgICAgIkp1bGllbiBJc29yY2UgPGp1bGllbi5pc29yY2VAZ21haWwuY29tPlxuIgorICAgICAgIk1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4iKTsKIAotICBmaWx0ZXJfY2xhc3MtPmluaXRfZmJvID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JzY2FsZV9nZW5fZ2xfcmVzb3VyY2VzKTsKKyAgYmFzZXRyYW5zZm9ybV9jbGFzcy0+cGFzc3Rocm91Z2hfb25fc2FtZV9jYXBzID0gVFJVRTsKKworICBiYXNlX2ZpbHRlcl9jbGFzcy0+Z2xfc3RhcnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX2NvbG9yc2NhbGVfZ2xfc3RhcnQpOworICBiYXNlX2ZpbHRlcl9jbGFzcy0+Z2xfc3RvcCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JzY2FsZV9nbF9zdG9wKTsKKyAgYmFzZV9maWx0ZXJfY2xhc3MtPnN1cHBvcnRlZF9nbF9hcGkgPQorICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMgfCBHU1RfR0xfQVBJX0dMRVMyOwogCiAgIGZpbHRlcl9jbGFzcy0+ZmlsdGVyX3RleHR1cmUgPSBnc3RfZ2xfY29sb3JzY2FsZV9maWx0ZXJfdGV4dHVyZTsKLQotICBiYXNldHJhbnNmb3JtX2NsYXNzLT5zdG9wID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfY29sb3JzY2FsZV9kZWxfZ2xfcmVzb3VyY2VzKTsKLSAgYmFzZXRyYW5zZm9ybV9jbGFzcy0+cGFzc3Rocm91Z2hfb25fc2FtZV9jYXBzID0gVFJVRTsKLSAgR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChrbGFzcyktPnN1cHBvcnRlZF9nbF9hcGkgPQotICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMgfCBHU1RfR0xfQVBJX0dMRVMyOwogfQogCiBzdGF0aWMgdm9pZAogZ3N0X2dsX2NvbG9yc2NhbGVfaW5pdCAoR3N0R0xDb2xvcnNjYWxlICogY29sb3JzY2FsZSkKIHsKLSAgY29sb3JzY2FsZS0+c2hhZGVyID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTEzNyw5MyArMTM2LDUzIEBACiAgIH0KIH0KIAotc3RhdGljIHZvaWQKLV9jb21waWxlX2lkZW50aXR5X3NoYWRlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xDb2xvcnNjYWxlICogY29sb3JzY2FsZSkKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2NvbG9yc2NhbGVfZ2xfc3RhcnQgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2VfZmlsdGVyKQogewotICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoY29sb3JzY2FsZSk7CisgIEdzdEdMQ29sb3JzY2FsZSAqY29sb3JzY2FsZSA9IEdTVF9HTF9DT0xPUlNDQUxFIChiYXNlX2ZpbHRlcik7CisgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChiYXNlX2ZpbHRlcik7CisgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCi0gIGNvbG9yc2NhbGUtPnNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb250ZXh0KTsKKyAgaWYgKCEoc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAoYmFzZV9maWx0ZXItPmNvbnRleHQsICZlcnJvcikpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoY29sb3JzY2FsZSwgIkZhaWxlZCB0byBpbml0aWFsaXplIHNoYWRlcjogJXMiLAorICAgICAgICBlcnJvci0+bWVzc2FnZSk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KIAotICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdmZfYW5kX2NoZWNrIChjb2xvcnNjYWxlLT5zaGFkZXIsCi0gICAgICAgICAgJmZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYywgJmZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jKSkgewotICAgIGdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlciAoY29udGV4dCk7CisgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3RleGNvb3JkIik7CisKKyAgY29sb3JzY2FsZS0+c2hhZGVyID0gc2hhZGVyOworCisgIHJldHVybiBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmdsX3N0YXJ0IChiYXNlX2ZpbHRlcik7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfY29sb3JzY2FsZV9nbF9zdG9wIChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcikKK3sKKyAgR3N0R0xDb2xvcnNjYWxlICpjb2xvcnNjYWxlID0gR1NUX0dMX0NPTE9SU0NBTEUgKGJhc2VfZmlsdGVyKTsKKworICBpZiAoY29sb3JzY2FsZS0+c2hhZGVyKSB7CiAgICAgZ3N0X29iamVjdF91bnJlZiAoY29sb3JzY2FsZS0+c2hhZGVyKTsKICAgICBjb2xvcnNjYWxlLT5zaGFkZXIgPSBOVUxMOwogICB9Ci19CiAKLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX2NvbG9yc2NhbGVfZ2VuX2dsX3Jlc291cmNlcyAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpCi17Ci0gIEdzdEdMQ29sb3JzY2FsZSAqY29sb3JzY2FsZSA9IEdTVF9HTF9DT0xPUlNDQUxFIChmaWx0ZXIpOwotCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQpICYKLSAgICAgIChHU1RfR0xfQVBJX0dMRVMyIHwgR1NUX0dMX0FQSV9PUEVOR0wzKSkgewotICAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCwKLSAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9jb21waWxlX2lkZW50aXR5X3NoYWRlciwgY29sb3JzY2FsZSk7Ci0KLSAgICBpZiAoIWNvbG9yc2NhbGUtPnNoYWRlcikgewotICAgICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQsCi0gICAgICAgICAgIkZhaWxlZCB0byBpbml0aWFsaXplIGlkZW50aXR5IHNoYWRlciIpOwotICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGNvbG9yc2NhbGUsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLAotICAgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkpLCAoTlVMTCkpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9jb2xvcnNjYWxlX2RlbF9nbF9yZXNvdXJjZXMgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucykKLXsKLSAgR3N0R0xDb2xvcnNjYWxlICpjb2xvcnNjYWxlID0gR1NUX0dMX0NPTE9SU0NBTEUgKHRyYW5zKTsKLQotICBpZiAoY29sb3JzY2FsZS0+c2hhZGVyKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlciAoR1NUX0dMX0JBU0VfRklMVEVSICh0cmFucyktPmNvbnRleHQsCi0gICAgICAgIGNvbG9yc2NhbGUtPnNoYWRlcik7Ci0gICAgY29sb3JzY2FsZS0+c2hhZGVyID0gTlVMTDsKLSAgfQotCi0gIHJldHVybiBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKHBhcmVudF9jbGFzcyktPnN0b3AgKHRyYW5zKTsKKyAgcmV0dXJuIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+Z2xfc3RvcCAoYmFzZV9maWx0ZXIpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9jb2xvcnNjYWxlX2ZpbHRlcl90ZXh0dXJlIChHc3RHTEZpbHRlciAqIGZpbHRlciwgZ3VpbnQgaW5fdGV4LAogICAgIGd1aW50IG91dF90ZXgpCiB7Ci0gIEdzdEdMQ29sb3JzY2FsZSAqY29sb3JzY2FsZTsKKyAgR3N0R0xDb2xvcnNjYWxlICpjb2xvcnNjYWxlID0gR1NUX0dMX0NPTE9SU0NBTEUgKGZpbHRlcik7CiAKLSAgY29sb3JzY2FsZSA9IEdTVF9HTF9DT0xPUlNDQUxFIChmaWx0ZXIpOwotCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQpICYKLSAgICAgIChHU1RfR0xfQVBJX0dMRVMyIHwgR1NUX0dMX0FQSV9PUEVOR0wzKSkKKyAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCkpCiAgICAgZ3N0X2dsX2ZpbHRlcl9yZW5kZXJfdG9fdGFyZ2V0X3dpdGhfc2hhZGVyIChmaWx0ZXIsIFRSVUUsIGluX3RleCwgb3V0X3RleCwKICAgICAgICAgY29sb3JzY2FsZS0+c2hhZGVyKTsKIAotICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0KSAmCi0gICAgICBHU1RfR0xfQVBJX09QRU5HTCkKLSAgICBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXQgKGZpbHRlciwgVFJVRSwgaW5fdGV4LCBvdXRfdGV4LAotICAgICAgICBnc3RfZ2xfY29sb3JzY2FsZV9jYWxsYmFjaywgY29sb3JzY2FsZSk7Ci0KICAgcmV0dXJuIFRSVUU7CiB9Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfY29sb3JzY2FsZV9jYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsIGd1aW50IHRleHR1cmUsCi0gICAgZ3BvaW50ZXIgc3R1ZmYpCi17Ci0gIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChzdHVmZik7Ci0KLSNpZiBHU1RfR0xfSEFWRV9PUEVOR0wKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dCkgJgotICAgICAgR1NUX0dMX0FQSV9PUEVOR0wpIHsKLSAgICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dC0+Z2xfdnRhYmxlOwotCi0gICAgZ2wtPk1hdHJpeE1vZGUgKEdMX1BST0pFQ1RJT04pOwotICAgIGdsLT5Mb2FkSWRlbnRpdHkgKCk7Ci0gIH0KLSNlbmRpZgotCi0gIGdzdF9nbF9maWx0ZXJfZHJhd190ZXh0dXJlIChmaWx0ZXIsIHRleHR1cmUsIHdpZHRoLCBoZWlnaHQpOwotfQpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsZGVpbnRlcmxhY2UuYyBiL2V4dC9nbC9nc3RnbGRlaW50ZXJsYWNlLmMKaW5kZXggMmQ0ODc0OS4uYmQwZWZmMCAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsZGVpbnRlcmxhY2UuYworKysgYi9leHQvZ2wvZ3N0Z2xkZWludGVybGFjZS5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbGRlaW50ZXJsYWNlICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGdsdXBsb2FkICEgZ2xkZWludGVybGFjZSAhIGdsaW1hZ2VzaW5rCiAgKiBdfAogICogRkJPIChGcmFtZSBCdWZmZXIgT2JqZWN0KSBhbmQgR0xTTCAoT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UpIGFyZSByZXF1aXJlZC4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuYyBiL2V4dC9nbC9nc3RnbGRpZmZlcmVuY2VtYXR0ZS5jCmluZGV4IGIyYjVmYTUuLjYzMDRjNmQgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGRpZmZlcmVuY2VtYXR0ZS5jCisrKyBiL2V4dC9nbC9nc3RnbGRpZmZlcmVuY2VtYXR0ZS5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbGRpZmZlcmVuY2VtYXRlIGxvY2F0aW9uPWJhY2tncm91bmRpbWFnZWZpbGUgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbGRpZmZlcmVuY2VtYXRlIGxvY2F0aW9uPWJhY2tncm91bmRpbWFnZWZpbGUgISBnbGltYWdlc2luawogICogXXwKICAqIEZCTyAoRnJhbWUgQnVmZmVyIE9iamVjdCkgYW5kIEdMU0wgKE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlKSBhcmUgcmVxdWlyZWQuCiAgKiA8L3JlZnNlY3QyPgpAQCAtNzgsNyArNzgsOSBAQAogZ3N0X2dsX2RpZmZlcmVuY2VtYXR0ZV9pbml0X2dsX3Jlc291cmNlcyAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpCiB7CiAgIEdzdEdMRGlmZmVyZW5jZU1hdHRlICpkaWZmZXJlbmNlbWF0dGUgPSBHU1RfR0xfRElGRkVSRU5DRU1BVFRFIChmaWx0ZXIpOwotICBHc3RHTEZ1bmNzICpnbCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dC0+Z2xfdnRhYmxlOworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQ7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKICAgZ2ludCBpOwogCiAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspIHsKQEAgLTk2LDQ1ICs5OCw1NyBAQAogICAgICAgICBnc3RfZ2xfc2hhZGVyX25ldyAoR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0KTsKICAgfQogCi0gIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjayAoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXIKLSAgICAgICAgICBbMF0sIGRpZmZlcmVuY2VfZnJhZ21lbnRfc291cmNlLCAmZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jLAotICAgICAgICAgICZmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYykpIHsKLSAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZGlmZmVyZW5jZW1hdHRlKS0+Y29udGV4dCwKLSAgICAgICAgIkZhaWxlZCB0byBpbml0aWFsaXplIGRpZmZlcmVuY2Ugc2hhZGVyIik7CisgIGlmICghKGRpZmZlcmVuY2VtYXR0ZS0+c2hhZGVyWzBdID0KKyAgICAgICAgICBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChjb250ZXh0LCAmZXJyb3IsCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoY29udGV4dCksCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoY29udGV4dCwgR0xfRlJBR01FTlRfU0hBREVSLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX0VTLAorICAgICAgICAgICAgICAgICAgZGlmZmVyZW5jZV9mcmFnbWVudF9zb3VyY2UpLCBOVUxMKSkpIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZGlmZmVyZW5jZW1hdHRlLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwKICAgICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSksIChOVUxMKSk7CiAgICAgcmV0dXJuOwogICB9CiAKLSAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrIChkaWZmZXJlbmNlbWF0dGUtPnNoYWRlcgotICAgICAgICAgIFsxXSwgaGNvbnY3X2ZyYWdtZW50X3NvdXJjZV9nbGVzMiwgJmZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYywKLSAgICAgICAgICAmZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MpKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChHU1RfR0xfQkFTRV9GSUxURVIgKGRpZmZlcmVuY2VtYXR0ZSktPmNvbnRleHQsCi0gICAgICAgICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBoY29udjcgc2hhZGVyIik7CisgIGlmICghKGRpZmZlcmVuY2VtYXR0ZS0+c2hhZGVyWzFdID0KKyAgICAgICAgICBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChjb250ZXh0LCAmZXJyb3IsCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoY29udGV4dCksCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoY29udGV4dCwgR0xfRlJBR01FTlRfU0hBREVSLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX0VTLAorICAgICAgICAgICAgICAgICAgaGNvbnY3X2ZyYWdtZW50X3NvdXJjZV9nbGVzMiksIE5VTEwpKSkgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChkaWZmZXJlbmNlbWF0dGUsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLAogICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yICgpKSwgKE5VTEwpKTsKICAgICByZXR1cm47CiAgIH0KIAotICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV93aXRoX2RlZmF1bHRfdl9hbmRfY2hlY2sgKGRpZmZlcmVuY2VtYXR0ZS0+c2hhZGVyCi0gICAgICAgICAgWzJdLCB2Y29udjdfZnJhZ21lbnRfc291cmNlX2dsZXMyLCAmZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jLAotICAgICAgICAgICZmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYykpIHsKLSAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKEdTVF9HTF9CQVNFX0ZJTFRFUiAoZGlmZmVyZW5jZW1hdHRlKS0+Y29udGV4dCwKLSAgICAgICAgIkZhaWxlZCB0byBpbml0aWFsaXplIHZjb252NyBzaGFkZXIiKTsKKyAgaWYgKCEoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXJbMl0gPQorICAgICAgICAgIGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgKGNvbnRleHQsICZlcnJvciwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4IChjb250ZXh0KSwKKyAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICAgICAgICAgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfRVMsCisgICAgICAgICAgICAgICAgICB2Y29udjdfZnJhZ21lbnRfc291cmNlX2dsZXMyKSwgTlVMTCkpKSB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRpZmZlcmVuY2VtYXR0ZSwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCiAgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkpLCAoTlVMTCkpOwogICAgIHJldHVybjsKICAgfQogCi0gIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjayAoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXIKLSAgICAgICAgICBbM10sIHRleHR1cmVfaW50ZXJwX2ZyYWdtZW50X3NvdXJjZSwgJmZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYywKLSAgICAgICAgICAmZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MpKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChHU1RfR0xfQkFTRV9GSUxURVIgKGRpZmZlcmVuY2VtYXR0ZSktPmNvbnRleHQsCi0gICAgICAgICJGYWlsZWQgdG8gaW5pdGlhbGl6ZSBpbnRlcnAgc2hhZGVyIik7CisgIGlmICghKGRpZmZlcmVuY2VtYXR0ZS0+c2hhZGVyWzNdID0KKyAgICAgICAgICBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChjb250ZXh0LCAmZXJyb3IsCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoY29udGV4dCksCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoY29udGV4dCwgR0xfRlJBR01FTlRfU0hBREVSLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX0VTLAorICAgICAgICAgICAgICAgICAgdGV4dHVyZV9pbnRlcnBfZnJhZ21lbnRfc291cmNlKSwgTlVMTCkpKSB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRpZmZlcmVuY2VtYXR0ZSwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCiAgICAgICAgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkpLCAoTlVMTCkpOwogICAgIHJldHVybjsKICAgfQorCisgIC8qIEZJWE1FOiB0aGlzIHNob3VsZCByZWFsbHkgYmUgcGVyIHNoYWRlciAqLworICBmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChkaWZmZXJlbmNlbWF0dGUtPnNoYWRlclszXSwKKyAgICAgICJhX3Bvc2l0aW9uIik7CisgIGZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoZGlmZmVyZW5jZW1hdHRlLT5zaGFkZXJbM10sCisgICAgICAiYV90ZXhjb29yZCIpOwogfQogCiAvKiBmcmVlIHJlc291cmNlcyB0aGF0IG5lZWQgYSBnbCBjb250ZXh0ICovCkBAIC0yMjIsOCArMjM2LDcgQEAKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKICAgICBjYXNlIFBST1BfTE9DQVRJT046Ci0gICAgICBpZiAoZGlmZmVyZW5jZW1hdHRlLT5sb2NhdGlvbiAhPSBOVUxMKQotICAgICAgICBnX2ZyZWUgKGRpZmZlcmVuY2VtYXR0ZS0+bG9jYXRpb24pOworICAgICAgZ19mcmVlIChkaWZmZXJlbmNlbWF0dGUtPmxvY2F0aW9uKTsKICAgICAgIGRpZmZlcmVuY2VtYXR0ZS0+YmdfaGFzX2NoYW5nZWQgPSBUUlVFOwogICAgICAgZGlmZmVyZW5jZW1hdHRlLT5sb2NhdGlvbiA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xkb3dubG9hZGVsZW1lbnQuYyBiL2V4dC9nbC9nc3RnbGRvd25sb2FkZWxlbWVudC5jCmluZGV4IDk0YTZlN2EuLmZmOTMxZmEgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGRvd25sb2FkZWxlbWVudC5jCisrKyBiL2V4dC9nbC9nc3RnbGRvd25sb2FkZWxlbWVudC5jCkBAIC01MywxMCArNTMsMTAgQEAKICAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdzsgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSIpKTsKIAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9nbF9kb3dubG9hZF9lbGVtZW50X3NpbmtfcGFkX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCisgICAgR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSIpKTsKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdyhtZW1vcnk6R0xNZW1vcnkpOyB2aWRlby94LXJhdyIpKTsKIAogc3RhdGljIHZvaWQKIGdzdF9nbF9kb3dubG9hZF9lbGVtZW50X2NsYXNzX2luaXQgKEdzdEdMRG93bmxvYWRFbGVtZW50Q2xhc3MgKiBrbGFzcykKQEAgLTE3Niw3ICsxNzYsOCBAQAogICAgIGlmIChnc3RfaXNfZ2xfbWVtb3J5IChtZW0pKSB7CiAgICAgICBpZiAoIWZlYXR1cmVzIHx8IGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywKICAgICAgICAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfU1lTVEVNX01FTU9SWSkpIHsKLSAgICAgICAgZ3N0X2dsX21lbW9yeV9kb3dubG9hZF90cmFuc2ZlciAoKEdzdEdMTWVtb3J5ICopIG1lbSk7CisgICAgICAgIGlmIChnc3RfaXNfZ2xfbWVtb3J5X3BibyAobWVtKSkKKyAgICAgICAgICBnc3RfZ2xfbWVtb3J5X3Bib19kb3dubG9hZF90cmFuc2ZlciAoKEdzdEdMTWVtb3J5UEJPICopIG1lbSk7CiAgICAgICB9CiAgICAgfQogICB9CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xlZmZlY3RzLmMgYi9leHQvZ2wvZ3N0Z2xlZmZlY3RzLmMKaW5kZXggNmNmNWFmYy4uMTUxOGE2NCAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsZWZmZWN0cy5jCisrKyBiL2V4dC9nbC9nc3RnbGVmZmVjdHMuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyAhIGdsdXBsb2FkICEgZ2xlZmZlY3RzIGVmZmVjdD01ICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGdsdXBsb2FkICEgZ2xlZmZlY3RzIGVmZmVjdD01ICEgZ2xpbWFnZXNpbmsKICAqIF18CiAgKiBGQk8gKEZyYW1lIEJ1ZmZlciBPYmplY3QpIGFuZCBHTFNMIChPcGVuR0wgU2hhZGluZyBMYW5ndWFnZSkgYXJlIHJlcXVpcmVkLgogICogPC9yZWZzZWN0Mj4KQEAgLTM1MCw2ICszNTAsNyBAQAogICAgIGNvbnN0IEdzdEdMRWZmZWN0c0ZpbHRlckRlc2NyaXB0b3IgKiBmaWx0ZXJfZGVzY3JpcHRvcikKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKIAogICBrbGFzcy0+ZmlsdGVyX2Rlc2NyaXB0b3IgPSBmaWx0ZXJfZGVzY3JpcHRvcjsKIApAQCAtMzY2LDYgKzM2NywxNSBAQAogICAgICAgICAgICAgR1NUX1RZUEVfR0xfRUZGRUNUU19FRkZFQ1QsCiAgICAgICAgICAgICBHU1RfR0xfRUZGRUNUX0lERU5USVRZLAogICAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIH0gZWxzZSB7CisgICAgZ2NoYXIgKmRlc2NyaXB0aW9uID0gZ19zdHJkdXBfcHJpbnRmICgiR0wgU2hhZGluZyBMYW5ndWFnZSBlZmZlY3RzIC0gJXMiLAorICAgICAgICBmaWx0ZXJfZGVzY3JpcHRvci0+ZmlsdGVyX2xvbmduYW1lKTsKKworICAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywKKyAgICAgICAgZmlsdGVyX2Rlc2NyaXB0b3ItPmZpbHRlcl9sb25nbmFtZSwgIkZpbHRlci9FZmZlY3QvVmlkZW8iLAorICAgICAgICBkZXNjcmlwdGlvbiwgIkZpbGlwcG8gQXJnaW9sYXMgPGZpbGlwcG8uYXJnaW9sYXNAZ21haWwuY29tPiIpOworCisgICAgZ19mcmVlIChkZXNjcmlwdGlvbik7CiAgIH0KIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLApAQCAtNTQ1LDIxICs1NTUsMjMgQEAKICAgc2hhZGVyID0gZ19oYXNoX3RhYmxlX2xvb2t1cCAoZWZmZWN0cy0+c2hhZGVyc3RhYmxlLCBzaGFkZXJfbmFtZSk7CiAKICAgaWYgKCFzaGFkZXIpIHsKLSAgICBzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY29udGV4dCk7Ci0gICAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrIChzaGFkZXIsCi0gICAgICAgICAgICBzaGFkZXJfc291cmNlX2dsZXMyLCAmZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jLAotICAgICAgICAgICAgJmZpbHRlci0+ZHJhd19hdHRyX3RleHR1cmVfbG9jKSkgewotICAgICAgLyogZ3N0IGdsIGNvbnRleHQgZXJyb3IgaXMgYWxyZWFkeSBzZXQgKi8KLSAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChlZmZlY3RzLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAotICAgICAgICAgICgiRmFpbGVkIHRvIGluaXRpYWxpemUgJXMgc2hhZGVyLCAlcyIsCi0gICAgICAgICAgICAgIHNoYWRlcl9uYW1lLCBnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkpLCAoTlVMTCkpOwotICAgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKLSAgICAgIHNoYWRlciA9IE5VTEw7Ci0gICAgfQotICB9CisgICAgR0Vycm9yICplcnJvciA9IE5VTEw7CiAKLSAgaWYgKCFzaGFkZXIpCi0gICAgcmV0dXJuIE5VTEw7CisgICAgaWYgKCEoc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlcyAoY29udGV4dCwgJmVycm9yLAorICAgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoY29udGV4dCksCisgICAgICAgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICAgICAgICAgICAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyB8IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwKKyAgICAgICAgICAgICAgICAgICAgc2hhZGVyX3NvdXJjZV9nbGVzMiksIE5VTEwpKSkgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGVmZmVjdHMsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgKCJGYWlsZWQgdG8gaW5pdGlhbGl6ZSAlcyBzaGFkZXIiLCBzaGFkZXJfbmFtZSksIChOVUxMKSk7CisgICAgfQorCisgICAgZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID0KKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3Bvc2l0aW9uIik7CisgICAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfdGV4Y29vcmQiKTsKKyAgfQogCiAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKGVmZmVjdHMtPnNoYWRlcnN0YWJsZSwgKGdjaGFyICopIHNoYWRlcl9uYW1lLCBzaGFkZXIpOwogCkBAIC02MDMsNiArNjE1LDcgQEAKICAgICBmb3IgKGkgPSAwOyBpIDwgbl9maWx0ZXJzOyArK2ksICsrZWZmZWN0KSB7CiAgICAgICBkZXNjcmlwdG9yc1tpXS5lZmZlY3QgPSBlZmZlY3QtPnZhbHVlOwogICAgICAgZGVzY3JpcHRvcnNbaV0uZmlsdGVyX25hbWUgPSBlZmZlY3QtPnZhbHVlX25pY2s7CisgICAgICBkZXNjcmlwdG9yc1tpXS5maWx0ZXJfbG9uZ25hbWUgPSBlZmZlY3QtPnZhbHVlX25hbWU7CiAgICAgfQogCiAgICAgZm9yIChkZWZpbmVkID0gZ3N0X2dsX2VmZmVjdHNfZmlsdGVyc19zdXBwb3J0ZWRfcHJvcGVydGllcyAoKTsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGVmZmVjdHMuaCBiL2V4dC9nbC9nc3RnbGVmZmVjdHMuaAppbmRleCA4MmMzM2E5Li5kZGQyMjkyIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xlZmZlY3RzLmgKKysrIGIvZXh0L2dsL2dzdGdsZWZmZWN0cy5oCkBAIC00Niw2ICs0Niw3IEBACiAgIGdpbnQgZWZmZWN0OwogICBndWludCBzdXBwb3J0ZWRfcHJvcGVydGllczsKICAgY29uc3QgZ2NoYXIgKmZpbHRlcl9uYW1lOworICBjb25zdCBnY2hhciAqZmlsdGVyX2xvbmduYW1lOwogfSBHc3RHTEVmZmVjdHNGaWx0ZXJEZXNjcmlwdG9yOwogCiB0eXBlZGVmIHZvaWQgKCogR3N0R0xFZmZlY3RQcm9jZXNzRnVuYykgKEdzdEdMRWZmZWN0cyAqZWZmZWN0cyk7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xmaWx0ZXJhcHAuYyBiL2V4dC9nbC9nc3RnbGZpbHRlcmFwcC5jCmluZGV4IGUzNDdlMjguLjcxNWY2ZjMgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGZpbHRlcmFwcC5jCisrKyBiL2V4dC9nbC9nc3RnbGZpbHRlcmFwcC5jCkBAIC01Nyw2ICs1Nyw3IEBACiAjZGVmaW5lIERFQlVHX0lOSVQgXAogICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2dsX2ZpbHRlcl9hcHBfZGVidWcsICJnbGZpbHRlcmFwcCIsIDAsICJnbGZpbHRlcmFwcCBlbGVtZW50Iik7CiAKKyNkZWZpbmUgZ3N0X2dsX2ZpbHRlcl9hcHBfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwogR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdEdMRmlsdGVyQXBwLCBnc3RfZ2xfZmlsdGVyX2FwcCwKICAgICBHU1RfVFlQRV9HTF9GSUxURVIsIERFQlVHX0lOSVQpOwogCkBAIC02OSw5ICs3MCw5IEBACiAgICAgR3N0Q2FwcyAqIGluY2FwcywgR3N0Q2FwcyAqIG91dGNhcHMpOwogc3RhdGljIGdib29sZWFuIGdzdF9nbF9maWx0ZXJfYXBwX2ZpbHRlcl90ZXh0dXJlIChHc3RHTEZpbHRlciAqIGZpbHRlciwKICAgICBndWludCBpbl90ZXgsIGd1aW50IG91dF90ZXgpOwotc3RhdGljIHZvaWQgZ3N0X2dsX2ZpbHRlcl9hcHBfY2FsbGJhY2sgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LCBndWludCB0ZXh0dXJlLAotICAgIGdwb2ludGVyIHN0dWZmKTsKIAorc3RhdGljIGdib29sZWFuIGdzdF9nbF9maWx0ZXJfYXBwX2dsX3N0YXJ0IChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcik7CitzdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyX2FwcF9nbF9zdG9wIChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcik7CiAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfZmlsdGVyX2FwcF9jbGFzc19pbml0IChHc3RHTEZpbHRlckFwcENsYXNzICoga2xhc3MpCkBAIC04NSw2ICs4Niw5IEBACiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9nbF9maWx0ZXJfYXBwX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2ZpbHRlcl9hcHBfZ2V0X3Byb3BlcnR5OwogCisgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5nbF9zdGFydCA9IGdzdF9nbF9maWx0ZXJfYXBwX2dsX3N0YXJ0OworICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+Z2xfc3RvcCA9IGdzdF9nbF9maWx0ZXJfYXBwX2dsX3N0b3A7CisKICAgR1NUX0dMX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5zZXRfY2FwcyA9IGdzdF9nbF9maWx0ZXJfYXBwX3NldF9jYXBzOwogICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmZpbHRlcl90ZXh0dXJlID0KICAgICAgIGdzdF9nbF9maWx0ZXJfYXBwX2ZpbHRlcl90ZXh0dXJlOwpAQCAtMTQ0LDYgKzE0OCwzNCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF9maWx0ZXJfYXBwX2dsX3N0YXJ0IChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlX2ZpbHRlcikKK3sKKyAgR3N0R0xGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9GSUxURVIgKGJhc2VfZmlsdGVyKTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgaWYgKCEoZmlsdGVyLT5kZWZhdWx0X3NoYWRlciA9CisgICAgICAgICAgZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAoYmFzZV9maWx0ZXItPmNvbnRleHQsICZlcnJvcikpKSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZpbHRlciwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCisgICAgICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSB0aGUgZGVmYXVsdCBzaGFkZXIiKSwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+Z2xfc3RhcnQgKGJhc2VfZmlsdGVyKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9maWx0ZXJfYXBwX2dsX3N0b3AgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2VfZmlsdGVyKQoreworICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoYmFzZV9maWx0ZXIpOworCisgIGlmIChmaWx0ZXItPmRlZmF1bHRfc2hhZGVyKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIpOworICBmaWx0ZXItPmRlZmF1bHRfc2hhZGVyID0gTlVMTDsKKworICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmdsX3N0b3AgKGJhc2VfZmlsdGVyKTsKK30KKworc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfZmlsdGVyX2FwcF9zZXRfY2FwcyAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsIEdzdENhcHMgKiBpbmNhcHMsCiAgICAgR3N0Q2FwcyAqIG91dGNhcHMpCiB7CkBAIC0yMDIsMjkgKzIzNCw5IEBACiAgICAgICBmaWx0ZXItPmZibywgZmlsdGVyLT5kZXB0aGJ1ZmZlciwgb3V0X3RleCwgX2dsY2IyLCAmY2IpOwogCiAgIGlmIChhcHBfZmlsdGVyLT5kZWZhdWx0X2RyYXcpIHsKLSAgICBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXQgKGZpbHRlciwgVFJVRSwgaW5fdGV4LCBvdXRfdGV4LAotICAgICAgICBnc3RfZ2xfZmlsdGVyX2FwcF9jYWxsYmFjaywgZmlsdGVyKTsKKyAgICBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXRfd2l0aF9zaGFkZXIgKGZpbHRlciwgVFJVRSwgaW5fdGV4LCBvdXRfdGV4LAorICAgICAgICBmaWx0ZXItPmRlZmF1bHRfc2hhZGVyKTsKICAgfQogCiAgIHJldHVybiBUUlVFOwogfQotCi0vL29wZW5nbCBzY2VuZSwgcGFyYW1zOiBpbnB1dCB0ZXh0dXJlIChub3QgdGhlIG91dHB1dCBmaWx0ZXItPnRleHR1cmUpCi1zdGF0aWMgdm9pZAotZ3N0X2dsX2ZpbHRlcl9hcHBfY2FsbGJhY2sgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LCBndWludCB0ZXh0dXJlLAotICAgIGdwb2ludGVyIHN0dWZmKQotewotICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoc3R1ZmYpOwotCi0jaWYgR1NUX0dMX0hBVkVfT1BFTkdMCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQpICYKLSAgICAgIEdTVF9HTF9BUElfT1BFTkdMKSB7Ci0gICAgR3N0R0xGdW5jcyAqZ2wgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQtPmdsX3Z0YWJsZTsKLQotICAgIGdsLT5NYXRyaXhNb2RlIChHTF9QUk9KRUNUSU9OKTsKLSAgICBnbC0+TG9hZElkZW50aXR5ICgpOwotICB9Ci0jZW5kaWYKLQotICBnc3RfZ2xfZmlsdGVyX2RyYXdfdGV4dHVyZSAoZmlsdGVyLCB0ZXh0dXJlLCB3aWR0aCwgaGVpZ2h0KTsKLX0KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbGZpbHRlcnNoYWRlci5jIGIvZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmMKaW5kZXggZTIwMWY3NC4uMjExNzM4OCAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmMKKysrIGIvZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmMKQEAgLTIyLDE0ICsyMiwxNCBAQAogLyoqCiAgKiBTRUNUSU9OOmVsZW1lbnQtZ2xzaGFkZXIKICAqCi0gKiBGaWx0ZXIgbG9hZGluZyBPcGVuR0wgZnJhZ21lbnQgc2hhZGVyIGZyb20gZmlsZQorICogT3BlbkdMIGZyYWdtZW50IHNoYWRlciBmaWx0ZXIKICAqCiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbHNoYWRlciBsb2NhdGlvbj1teXNoYWRlci5mcyAhIGdsaW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBnbHVwbG9hZCAhIGdsc2hhZGVyIGZyYWdtZW50PSJcImBjYXQgbXlzaGFkZXIuZnJhZ2BcIiIgISBnbGltYWdlc2luawogICogXXwKLSAqIEZCTyAoRnJhbWUgQnVmZmVyIE9iamVjdCkgYW5kIEdMU0wgKE9wZW5HTCBTaGFkaW5nIExhbmd1YWdlKSBhcmUgcmVxdWlyZWQuCisgKiBGQk8gKEZyYW1lIEJ1ZmZlciBPYmplY3QpIGFuZCBHTFNMIChPcGVuR0wgU2hhZGluZyBMYW5ndWFnZSkgYXJlIHJlcXVpcmVkLiBBICN2ZXJzaW9uIGhlYWRlciBpcyByZXF1aXJlZAogICogPC9yZWZzZWN0Mj4KICAqLwogI2lmZGVmIEhBVkVfQ09ORklHX0gKQEAgLTM3LDMwICszNywzMSBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmg+CiAKICNpbmNsdWRlICJnc3RnbGZpbHRlcnNoYWRlci5oIgotCi0vKiBob3Jpem9udGFsIGZpbHRlciAqLwotc3RhdGljIGdjaGFyICpoZmlsdGVyX2ZyYWdtZW50X3NvdXJjZTsKLXN0YXRpYyBnY2hhciAqaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMl07CisjaWYgSEFWRV9HUkFQSEVORQorI2luY2x1ZGUgPGdyYXBoZW5lLWdvYmplY3QuaD4KKyNlbmRpZgogCiBlbnVtCiB7CiAgIFBST1BfMCwKLSAgUFJPUF9MT0NBVElPTiwKLSAgUFJPUF9QUkVTRVQsCi0gIFBST1BfVkFSSUFCTEVTCisgIFBST1BfU0hBREVSLAorICBQUk9QX1ZFUlRFWCwKKyAgUFJPUF9GUkFHTUVOVCwKKyAgUFJPUF9VTklGT1JNUywKKyAgUFJPUF9VUERBVEVfU0hBREVSLAorICBQUk9QX0xBU1QsCiB9OwogCi1zdGF0aWMgY29uc3QgZ2NoYXIgdGV4dF92ZXJ0ZXhfc2hhZGVyW10gPQotICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uOyAgIFxuIgotICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleGNvb3JkOyAgIFxuIgotICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDsgICAgIFxuIgotICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgotICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICIgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IFxuIgotICAgICIgICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDsgIFxuIiAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7CitlbnVtCit7CisgIFNJR05BTF8wLAorICBTSUdOQUxfQ1JFQVRFX1NIQURFUiwKKyAgU0lHTkFMX0xBU1QsCit9OworCitzdGF0aWMgZ3VpbnQgZ3N0X2dsX3NoYWRlcl9zaWduYWxzW1NJR05BTF9MQVNUXSA9IHsgMCB9OwogCiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfZmlsdGVyc2hhZGVyX2RlYnVnCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOwpAQCAtNzEsMTcgKzcyLDEzIEBACiBHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0R0xGaWx0ZXJTaGFkZXIsIGdzdF9nbF9maWx0ZXJzaGFkZXIsCiAgICAgR1NUX1RZUEVfR0xfRklMVEVSLCBERUJVR19JTklUKTsKIAorc3RhdGljIHZvaWQgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CiBzdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyc2hhZGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIHN0YXRpYyB2b2lkIGdzdF9nbF9maWx0ZXJzaGFkZXJfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotc3RhdGljIGdib29sZWFuIGdzdF9nbF9maWx0ZXJfZmlsdGVyc2hhZGVyX3Jlc2V0IChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMpOwotCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9sb2FkX3NoYWRlciAoR3N0R0xGaWx0ZXJTaGFkZXIgKgotICAgIGZpbHRlcl9zaGFkZXIsIGNoYXIgKmZpbGVuYW1lLCBjaGFyICoqc3RvcmFnZSk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9sb2FkX3ZhcmlhYmxlcyAoR3N0R0xGaWx0ZXJTaGFkZXIgKgotICAgIGZpbHRlcl9zaGFkZXIsIGNoYXIgKmZpbGVuYW1lLCBjaGFyICoqc3RvcmFnZSk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9pbml0X3NoYWRlciAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpOworc3RhdGljIGdib29sZWFuIGdzdF9nbF9maWx0ZXJzaGFkZXJfZ2xfc3RhcnQgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2UpOworc3RhdGljIHZvaWQgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9nbF9zdG9wIChHc3RHTEJhc2VGaWx0ZXIgKiBiYXNlKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2ZpbHRlciAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsCiAgICAgR3N0QnVmZmVyICogaW5idWYsIEdzdEJ1ZmZlciAqIG91dGJ1Zik7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9maWx0ZXJfdGV4dHVyZSAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsCkBAIC04OSwzMiArODYsNiBAQAogc3RhdGljIHZvaWQgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9oY2FsbGJhY2sgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0LAogICAgIGd1aW50IHRleHR1cmUsIGdwb2ludGVyIHN0dWZmKTsKIAotCi1zdGF0aWMgdm9pZAotZ3N0X2dsX2ZpbHRlcnNoYWRlcl9pbml0X3Jlc291cmNlcyAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpCi17Ci0gIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZmlsdGVyKS0+Y29udGV4dDsKLSAgZ3VpbnQgaW50ZXJuYWxfZm9ybWF0OwotCi0gIGludGVybmFsX2Zvcm1hdCA9Ci0gICAgICBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKGNvbnRleHQsIEdMX1JHQkEsCi0gICAgICBHTF9VTlNJR05FRF9CWVRFKTsKLSAgZ2xUZXhJbWFnZTJEIChHTF9URVhUVVJFXzJELCAwLCBpbnRlcm5hbF9mb3JtYXQsCi0gICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmZpbHRlci0+b3V0X2luZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZmlsdGVyLT5vdXRfaW5mbyksIDAsIEdMX1JHQkEsIEdMX1VOU0lHTkVEX0JZVEUsCi0gICAgICBOVUxMKTsKLSAgZ2xUZXhQYXJhbWV0ZXJpIChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gIGdsVGV4UGFyYW1ldGVyaSAoR0xfVEVYVFVSRV8yRCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOwotICBnbFRleFBhcmFtZXRlcmkgKEdMX1RFWFRVUkVfMkQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKLSAgZ2xUZXhQYXJhbWV0ZXJpIChHTF9URVhUVVJFXzJELCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfZmlsdGVyc2hhZGVyX3Jlc2V0X3Jlc291cmNlcyAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpCi17Ci0gIC8vR3N0R0xGaWx0ZXJTaGFkZXIgKmZpbHRlcnNoYWRlciA9IEdTVF9HTF9GSUxURVJTSEFERVIgKGZpbHRlcik7Ci19Ci0KIHN0YXRpYyB2b2lkCiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2NsYXNzX2luaXQgKEdzdEdMRmlsdGVyU2hhZGVyQ2xhc3MgKiBrbGFzcykKIHsKQEAgLTEyNCwzOSArOTUsNjAgQEAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAgIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwogCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9maW5hbGl6ZTsKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9nbF9maWx0ZXJzaGFkZXJfZ2V0X3Byb3BlcnR5OwogCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTE9DQVRJT04sCi0gICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgibG9jYXRpb24iLCAiRmlsZSBMb2NhdGlvbiIsCi0gICAgICAgICAgIkxvY2F0aW9uIG9mIHRoZSBHTFNMIGZpbGUgdG8gbG9hZCIsIE5VTEwsCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0hBREVSLAorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoInNoYWRlciIsICJTaGFkZXIgb2JqZWN0IiwKKyAgICAgICAgICAiR3N0R0xTaGFkZXIgdG8gdXNlIiwgR1NUX0dMX1RZUEVfU0hBREVSLAogICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwogCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfUFJFU0VULAotICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInByZXNldCIsICJQcmVzZXQgRmlsZSBMb2NhdGlvbiIsCi0gICAgICAgICAgIkxvY2F0aW9uIG9mIHRoZSBzaGFkZXIgdW5pZm9ybSB2YXJpYWJsZXMgcHJlc2V0IGZpbGUiLCBOVUxMLAorICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1ZFUlRFWCwKKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJ2ZXJ0ZXgiLCAiVmVydGV4IFNvdXJjZSIsCisgICAgICAgICAgIkdMU0wgdmVydGV4IHNvdXJjZSIsIE5VTEwsCiAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9WQVJJQUJMRVMsCi0gICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgidmFycyIsICJVbmlmb3JtIHZhcmlhYmxlcyIsCi0gICAgICAgICAgIlNldCB0aGUgc2hhZGVyIHVuaWZvcm0gdmFyaWFibGVzIiwgTlVMTCwKLSAgICAgICAgICBHX1BBUkFNX1dSSVRBQkxFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GUkFHTUVOVCwKKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJmcmFnbWVudCIsICJGcmFnbWVudCBTb3VyY2UiLAorICAgICAgICAgICJHTFNMIGZyYWdtZW50IHNvdXJjZSIsIE5VTEwsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIC8qIEZJWE1FOiBhZGQgb3RoZXIgc3RhZ2VzICovCisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9VTklGT1JNUywKKyAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCAoInVuaWZvcm1zIiwgIkdMU0wgVW5pZm9ybXMiLAorICAgICAgICAgICJHTFNMIFVuaWZvcm1zIiwgR1NUX1RZUEVfU1RSVUNUVVJFLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVVBEQVRFX1NIQURFUiwKKyAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgidXBkYXRlLXNoYWRlciIsICJVcGRhdGUgU2hhZGVyIiwKKyAgICAgICAgICAiRW1pdCB0aGUgXCdjcmVhdGUtc2hhZGVyXCcgc2lnbmFsIGZvciB0aGUgbmV4dCBmcmFtZSIsCisgICAgICAgICAgRkFMU0UsIEdfUEFSQU1fV1JJVEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgLyoKKyAgICogR3N0R0xGaWx0ZXJTaGFkZXI6OmNyZWF0ZS1zaGFkZXI6CisgICAqIEBvYmplY3Q6IHRoZSAjR3N0R0xGaWx0ZXJTaGFkZXIKKyAgICoKKyAgICogQXNrJ3MgdGhlIGFwcGxpY2F0aW9uIGZvciBhIHNoYWRlciB0byByZW5kZXIgd2l0aCBhcyBhIHJlc3VsdCBvZgorICAgKiBpbml0aXRpYWxpemF0aW9uIG9yIHNldHRpbmcgdGhlICd1cGRhdGUtc2hhZGVyJyBwcm9wZXJ0eS4KKyAgICoKKyAgICogUmV0dXJuczogYSBuZXcgI0dzdEdMU2hhZGVyIGZvciB1c2UgaW4gdGhlIHJlbmRlcmluZyBwaXBlbGluZQorICAgKi8KKyAgZ3N0X2dsX3NoYWRlcl9zaWduYWxzW1NJR05BTF9DUkVBVEVfU0hBREVSXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJjcmVhdGUtc2hhZGVyIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNULCAwLCBOVUxMLCBOVUxMLCBnX2NjbG9zdXJlX21hcnNoYWxfZ2VuZXJpYywKKyAgICAgIEdTVF9HTF9UWVBFX1NIQURFUiwgMCk7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgIk9wZW5HTCBmcmFnbWVudCBzaGFkZXIgZmlsdGVyIiwgIkZpbHRlci9FZmZlY3QiLAotICAgICAgIkxvYWQgR0xTTCBmcmFnbWVudCBzaGFkZXIgZnJvbSBmaWxlIiwgIjxsdWMuZGVzY2hlbmF1eEBmcmVlc3VyZi5jaD4iKTsKLQotICBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKGtsYXNzKS0+c3RvcCA9IGdzdF9nbF9maWx0ZXJfZmlsdGVyc2hhZGVyX3Jlc2V0OworICAgICAgIlBlcmZvcm0gb3BlcmF0aW9ucyB3aXRoIGEgR0xTTCBzaGFkZXIiLCAiPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPiIpOwogCiAgIEdTVF9HTF9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+ZmlsdGVyID0gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9maWx0ZXI7CiAgIEdTVF9HTF9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+ZmlsdGVyX3RleHR1cmUgPQogICAgICAgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9maWx0ZXJfdGV4dHVyZTsKLSAgR1NUX0dMX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5kaXNwbGF5X2luaXRfY2IgPQotICAgICAgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9pbml0X3Jlc291cmNlczsKLSAgR1NUX0dMX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5kaXNwbGF5X3Jlc2V0X2NiID0KLSAgICAgIGdzdF9nbF9maWx0ZXJzaGFkZXJfcmVzZXRfcmVzb3VyY2VzOwotICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmluaXRfZmJvID0gZ3N0X2dsX2ZpbHRlcnNoYWRlcl9pbml0X3NoYWRlcjsKIAorICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+Z2xfc3RhcnQgPSBnc3RfZ2xfZmlsdGVyc2hhZGVyX2dsX3N0YXJ0OworICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+Z2xfc3RvcCA9IGdzdF9nbF9maWx0ZXJzaGFkZXJfZ2xfc3RvcDsKICAgR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChrbGFzcyktPnN1cHBvcnRlZF9nbF9hcGkgPQogICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX0dMRVMyIHwgR1NUX0dMX0FQSV9PUEVOR0wzOwogfQpAQCAtMTY0LDIxICsxNTYsMjUgQEAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2luaXQgKEdzdEdMRmlsdGVyU2hhZGVyICogZmlsdGVyc2hhZGVyKQogewotICBmaWx0ZXJzaGFkZXItPnNoYWRlcjAgPSBOVUxMOworICBmaWx0ZXJzaGFkZXItPm5ld19zb3VyY2UgPSBUUlVFOwogfQogCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9maWx0ZXJfZmlsdGVyc2hhZGVyX3Jlc2V0IChHc3RCYXNlVHJhbnNmb3JtICogdHJhbnMpCitzdGF0aWMgdm9pZAorZ3N0X2dsX2ZpbHRlcnNoYWRlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKIHsKLSAgR3N0R0xGaWx0ZXJTaGFkZXIgKmZpbHRlcnNoYWRlciA9IEdTVF9HTF9GSUxURVJTSEFERVIgKHRyYW5zKTsKKyAgR3N0R0xGaWx0ZXJTaGFkZXIgKmZpbHRlcnNoYWRlciA9IEdTVF9HTF9GSUxURVJTSEFERVIgKG9iamVjdCk7CiAKLSAgLy9ibG9ja2luZyBjYWxsLCB3YWl0IHRoZSBvcGVuZ2wgdGhyZWFkIGhhcyBkZXN0cm95ZWQgdGhlIHNoYWRlcgotICBpZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwKQotICAgIGdzdF9nbF9jb250ZXh0X2RlbF9zaGFkZXIgKEdTVF9HTF9CQVNFX0ZJTFRFUiAodHJhbnMpLT5jb250ZXh0LAotICAgICAgICBmaWx0ZXJzaGFkZXItPnNoYWRlcjApOwotICBmaWx0ZXJzaGFkZXItPnNoYWRlcjAgPSBOVUxMOworICBnX2ZyZWUgKGZpbHRlcnNoYWRlci0+dmVydGV4KTsKKyAgZmlsdGVyc2hhZGVyLT52ZXJ0ZXggPSBOVUxMOwogCi0gIHJldHVybiBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKHBhcmVudF9jbGFzcyktPnN0b3AgKHRyYW5zKTsKKyAgZ19mcmVlIChmaWx0ZXJzaGFkZXItPmZyYWdtZW50KTsKKyAgZmlsdGVyc2hhZGVyLT5mcmFnbWVudCA9IE5VTEw7CisKKyAgaWYgKGZpbHRlcnNoYWRlci0+dW5pZm9ybXMpCisgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChmaWx0ZXJzaGFkZXItPnVuaWZvcm1zKTsKKyAgZmlsdGVyc2hhZGVyLT51bmlmb3JtcyA9IE5VTEw7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9nbF9maWx0ZXJzaGFkZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xODgsNTkgKzE4NCw0MCBAQAogICBHc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAob2JqZWN0KTsKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKLQotICAgIGNhc2UgUFJPUF9MT0NBVElPTjoKLQotICAgICAgaWYgKGZpbHRlcnNoYWRlci0+ZmlsZW5hbWUpIHsKLSAgICAgICAgZ19mcmVlIChmaWx0ZXJzaGFkZXItPmZpbGVuYW1lKTsKLSAgICAgIH0KLSAgICAgIGlmIChmaWx0ZXJzaGFkZXItPmNvbXBpbGVkKSB7Ci0gICAgICAgIGlmIChmaWx0ZXJzaGFkZXItPnNoYWRlcjApCi0gICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZGVsX3NoYWRlciAoR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXJzaGFkZXIpLT5jb250ZXh0LAotICAgICAgICAgICAgICBmaWx0ZXJzaGFkZXItPnNoYWRlcjApOwotICAgICAgICBmaWx0ZXJzaGFkZXItPnNoYWRlcjAgPSAwOwotICAgICAgfQotICAgICAgZmlsdGVyc2hhZGVyLT5maWxlbmFtZSA9IGdfc3RyZHVwIChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7Ci0gICAgICBmaWx0ZXJzaGFkZXItPmNvbXBpbGVkID0gMDsKLSAgICAgIGZpbHRlcnNoYWRlci0+dGV4U2V0ID0gMDsKLQorICAgIGNhc2UgUFJPUF9TSEFERVI6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBnc3Rfb2JqZWN0X3JlcGxhY2UgKChHc3RPYmplY3QgKiopICYgZmlsdGVyc2hhZGVyLT5zaGFkZXIsCisgICAgICAgICAgZ192YWx1ZV9kdXBfb2JqZWN0ICh2YWx1ZSkpOworICAgICAgZmlsdGVyc2hhZGVyLT5uZXdfc291cmNlID0gRkFMU0U7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKICAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBQUk9QX1BSRVNFVDoKLQotICAgICAgaWYgKGZpbHRlcnNoYWRlci0+cHJlc2V0ZmlsZSkgewotICAgICAgICBnX2ZyZWUgKGZpbHRlcnNoYWRlci0+cHJlc2V0ZmlsZSk7Ci0gICAgICB9Ci0KLSAgICAgIGZpbHRlcnNoYWRlci0+cHJlc2V0ZmlsZSA9IGdfc3RyZHVwIChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7Ci0KLSAgICAgIGlmIChoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1swXSkgewotICAgICAgICBnX2ZyZWUgKGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzBdKTsKLSAgICAgICAgaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMF0gPSAwOwotICAgICAgfQotCi0gICAgICBpZiAoIWZpbHRlcnNoYWRlci0+cHJlc2V0ZmlsZVswXSkgewotICAgICAgICBnX2ZyZWUgKGZpbHRlcnNoYWRlci0+cHJlc2V0ZmlsZSk7Ci0gICAgICAgIGZpbHRlcnNoYWRlci0+cHJlc2V0ZmlsZSA9IDA7Ci0gICAgICB9Ci0KKyAgICBjYXNlIFBST1BfVkVSVEVYOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgZ19mcmVlIChmaWx0ZXJzaGFkZXItPnZlcnRleCk7CisgICAgICBmaWx0ZXJzaGFkZXItPnZlcnRleCA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOworICAgICAgZmlsdGVyc2hhZGVyLT5uZXdfc291cmNlID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOwogICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFBST1BfVkFSSUFCTEVTOgotCi0gICAgICBpZiAoaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMV0pIHsKLSAgICAgICAgZ19mcmVlIChoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXSk7Ci0gICAgICB9Ci0KLSAgICAgIGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzFdID0gZ19zdHJkdXAgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLQotICAgICAgaWYgKCFoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXVswXSkgewotICAgICAgICBnX2ZyZWUgKGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzFdKTsKLSAgICAgICAgaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMV0gPSAwOwotICAgICAgfQotCisgICAgY2FzZSBQUk9QX0ZSQUdNRU5UOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgZ19mcmVlIChmaWx0ZXJzaGFkZXItPmZyYWdtZW50KTsKKyAgICAgIGZpbHRlcnNoYWRlci0+ZnJhZ21lbnQgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKKyAgICAgIGZpbHRlcnNoYWRlci0+bmV3X3NvdXJjZSA9IFRSVUU7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKICAgICAgIGJyZWFrOwotCisgICAgY2FzZSBQUk9QX1VOSUZPUk1TOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgaWYgKGZpbHRlcnNoYWRlci0+dW5pZm9ybXMpCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZSAoZmlsdGVyc2hhZGVyLT51bmlmb3Jtcyk7CisgICAgICBmaWx0ZXJzaGFkZXItPnVuaWZvcm1zID0gZ192YWx1ZV9kdXBfYm94ZWQgKHZhbHVlKTsKKyAgICAgIGZpbHRlcnNoYWRlci0+bmV3X3VuaWZvcm1zID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1VQREFURV9TSEFERVI6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBmaWx0ZXJzaGFkZXItPnVwZGF0ZV9zaGFkZXIgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC0yNTQsMTAxICsyMzEsNDggQEAKICAgR3N0R0xGaWx0ZXJTaGFkZXIgKmZpbHRlcnNoYWRlciA9IEdTVF9HTF9GSUxURVJTSEFERVIgKG9iamVjdCk7CiAKICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX0xPQ0FUSU9OOgotICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgZmlsdGVyc2hhZGVyLT5maWxlbmFtZSk7CisgICAgY2FzZSBQUk9QX1NIQURFUjoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGdfdmFsdWVfc2V0X29iamVjdCAodmFsdWUsIGZpbHRlcnNoYWRlci0+c2hhZGVyKTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOwogICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIFBST1BfUFJFU0VUOgotICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlKTsKKyAgICBjYXNlIFBST1BfVkVSVEVYOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgZmlsdGVyc2hhZGVyLT52ZXJ0ZXgpOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CiAgICAgICBicmVhazsKLQorICAgIGNhc2UgUFJPUF9GUkFHTUVOVDoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGZpbHRlcnNoYWRlci0+ZnJhZ21lbnQpOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVU5JRk9STVM6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBnX3ZhbHVlX3NldF9ib3hlZCAodmFsdWUsIGZpbHRlcnNoYWRlci0+dW5pZm9ybXMpOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwogICB9CiB9CiAKLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX2ZpbHRlcnNoYWRlcl9sb2FkX3NoYWRlciAoR3N0R0xGaWx0ZXJTaGFkZXIgKiBmaWx0ZXJfc2hhZGVyLAotICAgIGNoYXIgKmZpbGVuYW1lLCBjaGFyICoqc3RvcmFnZSkKLXsKLSAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gIGdzaXplIGxlbmd0aDsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3RvcmFnZSAhPSBOVUxMLCBGQUxTRSk7Ci0KLSAgaWYgKCFmaWxlbmFtZSkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmaWx0ZXJfc2hhZGVyLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAotICAgICAgICAoIkEgc2hhZGVyIGZpbGUgaXMgcmVxdWlyZWQiKSwgKE5VTEwpKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMgKGZpbGVuYW1lLCBzdG9yYWdlLCAmbGVuZ3RoLCAmZXJyb3IpKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKGZpbHRlcl9zaGFkZXIsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLAotICAgICAgICAgICAgZXJyb3ItPm1lc3NhZ2UpLCAoTlVMTCkpOwotICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOwotCi0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dsX2ZpbHRlcnNoYWRlcl9sb2FkX3ZhcmlhYmxlcyAoR3N0R0xGaWx0ZXJTaGFkZXIgKiBmaWx0ZXJfc2hhZGVyLAotICAgIGNoYXIgKmZpbGVuYW1lLCBjaGFyICoqc3RvcmFnZSkKLXsKLSAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0gIGdzaXplIGxlbmd0aDsKLQotICBpZiAoc3RvcmFnZVswXSkgewotICAgIGdfZnJlZSAoc3RvcmFnZVswXSk7Ci0gICAgc3RvcmFnZVswXSA9IDA7Ci0gIH0KLQotICBpZiAoIWZpbGVuYW1lKQotICAgIHJldHVybiBUUlVFOwotCi0gIGlmICghZ19maWxlX2dldF9jb250ZW50cyAoZmlsZW5hbWUsIHN0b3JhZ2UsICZsZW5ndGgsICZlcnJvcikpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyX3NoYWRlciwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCi0gICAgICAgICAgICBlcnJvci0+bWVzc2FnZSksIChOVUxMKSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0KLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQogc3RhdGljIHZvaWQKLWdzdF9nbF9maWx0ZXJzaGFkZXJfdmFyaWFibGVzX3BhcnNlIChHc3RHTFNoYWRlciAqIHNoYWRlciwgZ2NoYXIgKiB2YXJpYWJsZXMpCitnc3RfZ2xfZmlsdGVyc2hhZGVyX2dsX3N0b3AgKEdzdEdMQmFzZUZpbHRlciAqIGJhc2UpCiB7Ci0gIGdzdF9nbF9zaGFkZXJ2YXJpYWJsZXNfcGFyc2UgKHNoYWRlciwgdmFyaWFibGVzLCAwKTsKKyAgR3N0R0xGaWx0ZXJTaGFkZXIgKmZpbHRlcnNoYWRlciA9IEdTVF9HTF9GSUxURVJTSEFERVIgKGJhc2UpOworCisgIGlmIChmaWx0ZXJzaGFkZXItPnNoYWRlcikKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChmaWx0ZXJzaGFkZXItPnNoYWRlcik7CisgIGZpbHRlcnNoYWRlci0+c2hhZGVyID0gTlVMTDsKKworICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmdsX3N0b3AgKGJhc2UpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9maWx0ZXJzaGFkZXJfaW5pdF9zaGFkZXIgKEdzdEdMRmlsdGVyICogZmlsdGVyKQorZ3N0X2dsX2ZpbHRlcnNoYWRlcl9nbF9zdGFydCAoR3N0R0xCYXNlRmlsdGVyICogYmFzZSkKIHsKLQotICBHc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAoZmlsdGVyKTsKLQotICBpZiAoIWdzdF9nbF9maWx0ZXJzaGFkZXJfbG9hZF9zaGFkZXIgKGZpbHRlcnNoYWRlciwgZmlsdGVyc2hhZGVyLT5maWxlbmFtZSwKLSAgICAgICAgICAmaGZpbHRlcl9mcmFnbWVudF9zb3VyY2UpKQotICAgIHJldHVybiBGQUxTRTsKLQotICAvL2Jsb2NraW5nIGNhbGwsIHdhaXQgdGhlIG9wZW5nbCB0aHJlYWQgaGFzIGNvbXBpbGVkIHRoZSBzaGFkZXIKLSAgaWYgKCFnc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyIChHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQsCi0gICAgICAgICAgdGV4dF92ZXJ0ZXhfc2hhZGVyLCBoZmlsdGVyX2ZyYWdtZW50X3NvdXJjZSwgJmZpbHRlcnNoYWRlci0+c2hhZGVyMCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0KLSAgaWYgKCFnc3RfZ2xfZmlsdGVyc2hhZGVyX2xvYWRfdmFyaWFibGVzIChmaWx0ZXJzaGFkZXIsCi0gICAgICAgICAgZmlsdGVyc2hhZGVyLT5wcmVzZXRmaWxlLCAmaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMF0pKQotICAgIHJldHVybiBGQUxTRTsKLQotICBmaWx0ZXJzaGFkZXItPmNvbXBpbGVkID0gMTsKLQotICByZXR1cm4gVFJVRTsKKyAgcmV0dXJuIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+Z2xfc3RhcnQgKGJhc2UpOwogfQogCiBzdGF0aWMgaW5saW5lIGdib29sZWFuCkBAIC0zOTcsOSArMzIxLDE3OCBAQAogICBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXQgKGZpbHRlciwgVFJVRSwgaW5fdGV4LCBvdXRfdGV4LAogICAgICAgZ3N0X2dsX2ZpbHRlcnNoYWRlcl9oY2FsbGJhY2ssIGZpbHRlcnNoYWRlcik7CiAKKyAgaWYgKCFmaWx0ZXJzaGFkZXItPnNoYWRlcikKKyAgICByZXR1cm4gRkFMU0U7CisKICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbgorX3NldF91bmlmb3JtIChHUXVhcmsgZmllbGRfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEdMU2hhZGVyICpzaGFkZXIgPSB1c2VyX2RhdGE7CisgIGNvbnN0IGdjaGFyICpmaWVsZF9uYW1lID0gZ19xdWFya190b19zdHJpbmcgKGZpZWxkX2lkKTsKKworICBpZiAoR19UWVBFX0NIRUNLX1ZBTFVFX1RZUEUgKCh2YWx1ZSksIEdfVFlQRV9JTlQpKSB7CisgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoc2hhZGVyLCBmaWVsZF9uYW1lLCBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKSk7CisgIH0gZWxzZSBpZiAoR19UWVBFX0NIRUNLX1ZBTFVFX1RZUEUgKCh2YWx1ZSksIEdfVFlQRV9GTE9BVCkpIHsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChzaGFkZXIsIGZpZWxkX25hbWUsCisgICAgICAgIGdfdmFsdWVfZ2V0X2Zsb2F0ICh2YWx1ZSkpOworI2lmIEhBVkVfR1JBUEhFTkUKKyAgfSBlbHNlIGlmIChHX1RZUEVfQ0hFQ0tfVkFMVUVfVFlQRSAoKHZhbHVlKSwgR1JBUEhFTkVfVFlQRV9WRUMyKSkgeworICAgIGdyYXBoZW5lX3ZlYzJfdCAqdmVjMiA9IGdfdmFsdWVfZ2V0X2JveGVkICh2YWx1ZSk7CisgICAgZmxvYXQgeCA9IGdyYXBoZW5lX3ZlYzJfZ2V0X3ggKHZlYzIpOworICAgIGZsb2F0IHkgPSBncmFwaGVuZV92ZWMyX2dldF95ICh2ZWMyKTsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmIChzaGFkZXIsIGZpZWxkX25hbWUsIHgsIHkpOworICB9IGVsc2UgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICgodmFsdWUpLCBHUkFQSEVORV9UWVBFX1ZFQzMpKSB7CisgICAgZ3JhcGhlbmVfdmVjM190ICp2ZWMzID0gZ192YWx1ZV9nZXRfYm94ZWQgKHZhbHVlKTsKKyAgICBmbG9hdCB4ID0gZ3JhcGhlbmVfdmVjM19nZXRfeCAodmVjMyk7CisgICAgZmxvYXQgeSA9IGdyYXBoZW5lX3ZlYzNfZ2V0X3kgKHZlYzMpOworICAgIGZsb2F0IHogPSBncmFwaGVuZV92ZWMzX2dldF96ICh2ZWMzKTsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmIChzaGFkZXIsIGZpZWxkX25hbWUsIHgsIHksIHopOworICB9IGVsc2UgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICgodmFsdWUpLCBHUkFQSEVORV9UWVBFX1ZFQzQpKSB7CisgICAgZ3JhcGhlbmVfdmVjNF90ICp2ZWM0ID0gZ192YWx1ZV9nZXRfYm94ZWQgKHZhbHVlKTsKKyAgICBmbG9hdCB4ID0gZ3JhcGhlbmVfdmVjNF9nZXRfeCAodmVjNCk7CisgICAgZmxvYXQgeSA9IGdyYXBoZW5lX3ZlYzRfZ2V0X3kgKHZlYzQpOworICAgIGZsb2F0IHogPSBncmFwaGVuZV92ZWM0X2dldF96ICh2ZWM0KTsKKyAgICBmbG9hdCB3ID0gZ3JhcGhlbmVfdmVjNF9nZXRfdyAodmVjNCk7CisgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80ZiAoc2hhZGVyLCBmaWVsZF9uYW1lLCB4LCB5LCB6LCB3KTsKKyAgfSBlbHNlIGlmIChHX1RZUEVfQ0hFQ0tfVkFMVUVfVFlQRSAoKHZhbHVlKSwgR1JBUEhFTkVfVFlQRV9NQVRSSVgpKSB7CisgICAgZ3JhcGhlbmVfbWF0cml4X3QgKm1hdHJpeCA9IGdfdmFsdWVfZ2V0X2JveGVkICh2YWx1ZSk7CisgICAgZmxvYXQgbWF0cml4X2ZbMTZdOworICAgIGdyYXBoZW5lX21hdHJpeF90b19mbG9hdCAobWF0cml4LCBtYXRyaXhfZik7CisgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2IChzaGFkZXIsIGZpZWxkX25hbWUsIDEsIEZBTFNFLAorICAgICAgICBtYXRyaXhfZik7CisjZW5kaWYKKyAgfSBlbHNlIHsKKyAgICAvKiBGSVhNRTogQWRkIHN1cHBvcnQgZm9yIHVuc2lnbmVkIGludHMsIG5vbiA0eDQgbWF0cmljZXMsIGV0YyAqLworICAgIEdTVF9GSVhNRSAoIkRvbid0IGtub3cgaG93IHRvIHNldCB0aGUgXCclc1wnIHBhcmFtYXRlci4gIFVua25vd24gdHlwZSIsCisgICAgICAgIGZpZWxkX25hbWUpOworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitfdXBkYXRlX3VuaWZvcm1zIChHc3RHTEZpbHRlclNoYWRlciAqIGZpbHRlcnNoYWRlcikKK3sKKyAgaWYgKGZpbHRlcnNoYWRlci0+bmV3X3VuaWZvcm1zICYmIGZpbHRlcnNoYWRlci0+dW5pZm9ybXMpIHsKKyAgICBnc3RfZ2xfc2hhZGVyX3VzZSAoZmlsdGVyc2hhZGVyLT5zaGFkZXIpOworCisgICAgZ3N0X3N0cnVjdHVyZV9mb3JlYWNoIChmaWx0ZXJzaGFkZXItPnVuaWZvcm1zLAorICAgICAgICAoR3N0U3RydWN0dXJlRm9yZWFjaEZ1bmMpIF9zZXRfdW5pZm9ybSwgZmlsdGVyc2hhZGVyLT5zaGFkZXIpOworICAgIGZpbHRlcnNoYWRlci0+bmV3X3VuaWZvcm1zID0gRkFMU0U7CisgIH0KK30KKworc3RhdGljIEdzdEdMU2hhZGVyICoKK19tYXliZV9yZWNvbXBpbGVfc2hhZGVyIChHc3RHTEZpbHRlclNoYWRlciAqIGZpbHRlcnNoYWRlcikKK3sKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXJzaGFkZXIpLT5jb250ZXh0OworICBHc3RHTFNoYWRlciAqc2hhZGVyOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBHU1RfT0JKRUNUX0xPQ0sgKGZpbHRlcnNoYWRlcik7CisKKyAgaWYgKCFmaWx0ZXJzaGFkZXItPnNoYWRlciB8fCBmaWx0ZXJzaGFkZXItPnVwZGF0ZV9zaGFkZXIpIHsKKyAgICBmaWx0ZXJzaGFkZXItPnVwZGF0ZV9zaGFkZXIgPSBGQUxTRTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyc2hhZGVyKTsKKyAgICBnX3NpZ25hbF9lbWl0IChmaWx0ZXJzaGFkZXIsIGdzdF9nbF9zaGFkZXJfc2lnbmFsc1tTSUdOQUxfQ1JFQVRFX1NIQURFUl0sIDAsCisgICAgICAgICZzaGFkZXIpOworICAgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyc2hhZGVyKTsKKworICAgIGlmIChzaGFkZXIpIHsKKyAgICAgIGlmIChmaWx0ZXJzaGFkZXItPnNoYWRlcikKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIpOworICAgICAgZmlsdGVyc2hhZGVyLT5uZXdfc291cmNlID0gRkFMU0U7CisgICAgICBmaWx0ZXJzaGFkZXItPnNoYWRlciA9IGdzdF9vYmplY3RfcmVmIChzaGFkZXIpOworICAgICAgZmlsdGVyc2hhZGVyLT5uZXdfdW5pZm9ybXMgPSBUUlVFOworICAgICAgX3VwZGF0ZV91bmlmb3JtcyAoZmlsdGVyc2hhZGVyKTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgICAgcmV0dXJuIHNoYWRlcjsKKyAgICB9CisgIH0KKworICBpZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIpIHsKKyAgICBzaGFkZXIgPSBnc3Rfb2JqZWN0X3JlZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIpOworICAgIF91cGRhdGVfdW5pZm9ybXMgKGZpbHRlcnNoYWRlcik7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgcmV0dXJuIHNoYWRlcjsKKyAgfQorCisgIGlmIChmaWx0ZXJzaGFkZXItPm5ld19zb3VyY2UpIHsKKyAgICBHc3RHTFNMU3RhZ2UgKnN0YWdlOworCisgICAgc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbnRleHQpOworCisgICAgaWYgKGZpbHRlcnNoYWRlci0+dmVydGV4KSB7CisgICAgICBpZiAoIShzdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoY29udGV4dCwgR0xfVkVSVEVYX1NIQURFUiwKKyAgICAgICAgICAgICAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwgR1NUX0dMU0xfUFJPRklMRV9OT05FLAorICAgICAgICAgICAgICAgICAgZmlsdGVyc2hhZGVyLT52ZXJ0ZXgpKSkgeworICAgICAgICBnX3NldF9lcnJvciAoJmVycm9yLCBHU1RfR0xTTF9FUlJPUiwgR1NUX0dMU0xfRVJST1JfQ09NUElMRSwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHNoYWRlciB2ZXJ0ZXggc3RhZ2UiKTsKKyAgICAgICAgZ290byBwcmludF9lcnJvcjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgc3RhZ2UgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF92ZXJ0ZXggKGNvbnRleHQpOworICAgIH0KKworICAgIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZSAoc2hhZGVyLCBzdGFnZSwgJmVycm9yKSkgeworICAgICAgZ3N0X29iamVjdF91bnJlZiAoc3RhZ2UpOworICAgICAgZ290byBwcmludF9lcnJvcjsKKyAgICB9CisKKyAgICBpZiAoZmlsdGVyc2hhZGVyLT5mcmFnbWVudCkgeworICAgICAgaWYgKCEoc3RhZ2UgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGNvbnRleHQsIEdMX0ZSQUdNRU5UX1NIQURFUiwKKyAgICAgICAgICAgICAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwgR1NUX0dMU0xfUFJPRklMRV9OT05FLAorICAgICAgICAgICAgICAgICAgZmlsdGVyc2hhZGVyLT5mcmFnbWVudCkpKSB7CisgICAgICAgIGdfc2V0X2Vycm9yICgmZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9DT01QSUxFLAorICAgICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIGZyYWdtZW50IHN0YWdlIik7CisgICAgICAgIGdvdG8gcHJpbnRfZXJyb3I7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIHN0YWdlID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfZnJhZ21lbnQgKGNvbnRleHQpOworICAgIH0KKworICAgIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZSAoc2hhZGVyLCBzdGFnZSwgJmVycm9yKSkgeworICAgICAgZ3N0X29iamVjdF91bnJlZiAoc3RhZ2UpOworICAgICAgZ290byBwcmludF9lcnJvcjsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9nbF9zaGFkZXJfbGluayAoc2hhZGVyLCAmZXJyb3IpKSB7CisgICAgICBnb3RvIHByaW50X2Vycm9yOworICAgIH0KKyAgICBpZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIpCisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChmaWx0ZXJzaGFkZXItPnNoYWRlcik7CisgICAgZmlsdGVyc2hhZGVyLT5zaGFkZXIgPSBnc3Rfb2JqZWN0X3JlZiAoc2hhZGVyKTsKKyAgICBmaWx0ZXJzaGFkZXItPm5ld19zb3VyY2UgPSBGQUxTRTsKKyAgICBmaWx0ZXJzaGFkZXItPm5ld191bmlmb3JtcyA9IFRSVUU7CisgICAgX3VwZGF0ZV91bmlmb3JtcyAoZmlsdGVyc2hhZGVyKTsKKworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOworICAgIHJldHVybiBzaGFkZXI7CisgIH0gZWxzZSBpZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIpIHsKKyAgICBfdXBkYXRlX3VuaWZvcm1zIChmaWx0ZXJzaGFkZXIpOworICAgIHNoYWRlciA9IGdzdF9vYmplY3RfcmVmIChmaWx0ZXJzaGFkZXItPnNoYWRlcik7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcnNoYWRlcik7CisgICAgcmV0dXJuIHNoYWRlcjsKKyAgfQorCisgIHJldHVybiBOVUxMOworCitwcmludF9lcnJvcjoKKyAgaWYgKHNoYWRlcikgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgICAgc2hhZGVyID0gTlVMTDsKKyAgfQorCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXJzaGFkZXIpOworICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyc2hhZGVyLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSwgKE5VTEwpKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfZmlsdGVyc2hhZGVyX2hjYWxsYmFjayAoZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsIGd1aW50IHRleHR1cmUsCiAgICAgZ3BvaW50ZXIgc3R1ZmYpCkBAIC00MDcsMzkgKzUwMCwzMiBAQAogICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoc3R1ZmYpOwogICBHc3RHTEZpbHRlclNoYWRlciAqZmlsdGVyc2hhZGVyID0gR1NUX0dMX0ZJTFRFUlNIQURFUiAoZmlsdGVyKTsKICAgR3N0R0xGdW5jcyAqZ2wgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgR3N0R0xTaGFkZXIgKnNoYWRlcjsKIAotICBnc3RfZ2xfc2hhZGVyX3VzZSAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwKTsKKyAgaWYgKCEoc2hhZGVyID0gX21heWJlX3JlY29tcGlsZV9zaGFkZXIgKGZpbHRlcnNoYWRlcikpKQorICAgIHJldHVybjsKKworICBnbC0+Q2xlYXJDb2xvciAoMC4wLCAwLjAsIDAuMCwgMS4wKTsKKyAgZ2wtPkNsZWFyIChHTF9DT0xPUl9CVUZGRVJfQklUKTsKKworICBnc3RfZ2xfc2hhZGVyX3VzZSAoc2hhZGVyKTsKKworICAvKiBGSVhNRTogcHJvcGVydGlzZSB0aGVzZSAqLworICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsICJ0ZXgiLCAwKTsKKyAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoc2hhZGVyLCAid2lkdGgiLCB3aWR0aCk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKHNoYWRlciwgImhlaWdodCIsIGhlaWdodCk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKHNoYWRlciwgInRpbWUiLCBmaWx0ZXJzaGFkZXItPnRpbWUpOworCisgIC8qIEZJWE1FOiBwcm9wZXJ0aXNlIHRoZXNlICovCisgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3RleGNvb3JkIik7CiAKICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXh0dXJlKTsKIAotICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChmaWx0ZXJzaGFkZXItPnNoYWRlcjAsICJ0ZXgiLCAwKTsKLSAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwLCAid2lkdGgiLCB3aWR0aCk7Ci0gIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyMCwgImhlaWdodCIsIGhlaWdodCk7Ci0gIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGZpbHRlcnNoYWRlci0+c2hhZGVyMCwgInRpbWUiLAotICAgICAgZmlsdGVyc2hhZGVyLT50aW1lKTsKLQotICBmaWx0ZXItPmRyYXdfYXR0cl9wb3NpdGlvbl9sb2MgPQotICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChmaWx0ZXJzaGFkZXItPnNoYWRlcjAsCi0gICAgICAiYV9wb3NpdGlvbiIpOwotICBmaWx0ZXItPmRyYXdfYXR0cl90ZXh0dXJlX2xvYyA9Ci0gICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGZpbHRlcnNoYWRlci0+c2hhZGVyMCwKLSAgICAgICJhX3RleGNvb3JkIik7Ci0KLSAgaWYgKGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzBdKSB7Ci0gICAgZ3N0X2dsX2ZpbHRlcnNoYWRlcl92YXJpYWJsZXNfcGFyc2UgKGZpbHRlcnNoYWRlci0+c2hhZGVyMCwKLSAgICAgICAgaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMF0pOwotICAgIGdfZnJlZSAoaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMF0pOwotICAgIGhmaWx0ZXJfZnJhZ21lbnRfdmFyaWFibGVzWzBdID0gMDsKLSAgfQotICBpZiAoaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMV0pIHsKLSAgICBnc3RfZ2xfZmlsdGVyc2hhZGVyX3ZhcmlhYmxlc19wYXJzZSAoZmlsdGVyc2hhZGVyLT5zaGFkZXIwLAotICAgICAgICBoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXSk7Ci0gICAgZ19mcmVlIChoZmlsdGVyX2ZyYWdtZW50X3ZhcmlhYmxlc1sxXSk7Ci0gICAgaGZpbHRlcl9mcmFnbWVudF92YXJpYWJsZXNbMV0gPSAwOwotICB9Ci0KLSAgZ2wtPkNsZWFyIChHTF9DT0xPUl9CVUZGRVJfQklUKTsKLQogICBnc3RfZ2xfZmlsdGVyX2RyYXdfdGV4dHVyZSAoZmlsdGVyLCB0ZXh0dXJlLCB3aWR0aCwgaGVpZ2h0KTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOwogfQpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsZmlsdGVyc2hhZGVyLmggYi9leHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuaAppbmRleCA2MTUzODJhLi5hZGYxNDEwIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuaAorKysgYi9leHQvZ2wvZ3N0Z2xmaWx0ZXJzaGFkZXIuaApAQCAtMzcsMTEgKzM3LDE2IEBACiBzdHJ1Y3QgX0dzdEdMRmlsdGVyU2hhZGVyCiB7CiAgIEdzdEdMRmlsdGVyIGZpbHRlcjsKLSAgR3N0R0xTaGFkZXIgKnNoYWRlcjA7Ci0gIGludCBjb21waWxlZDsKLSAgZ2NoYXIgKmZpbGVuYW1lOwotICBnY2hhciAqcHJlc2V0ZmlsZTsKLSAgaW50IHRleFNldDsKKworICAvKiBwcm9wZXJ0aWVzICovCisgIEdzdEdMU2hhZGVyICpzaGFkZXI7CisgIGdjaGFyICp2ZXJ0ZXg7CisgIGdjaGFyICpmcmFnbWVudDsKKyAgZ2Jvb2xlYW4gdXBkYXRlX3NoYWRlcjsgLyogdXBkYXRlIHRoZSBzaGFkZXIgb24gdGhlIG5leHQgZHJhdyAqLworICBHc3RTdHJ1Y3R1cmUgKnVuaWZvcm1zOworCisgIGdib29sZWFuIG5ld19zb3VyY2U7CisgIGdib29sZWFuIG5ld191bmlmb3JtczsKICAgZ2RvdWJsZSB0aW1lOwogCiAgIGdpbnQgYXR0cl9wb3NpdGlvbl9sb2M7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuYyBiL2V4dC9nbC9nc3RnbGltYWdlc2luay5jCmluZGV4IDQ5ZTU5YjguLjNiNWUzYjUgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbGltYWdlc2luay5jCisrKyBiL2V4dC9nbC9nc3RnbGltYWdlc2luay5jCkBAIC04OSw2ICs4OSw3IEBACiAKICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW9vdmVybGF5Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL25hdmlnYXRpb24uaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9hZmZpbmV0cmFuc2Zvcm1hdGlvbm1ldGEuaD4KIAogI2luY2x1ZGUgImdzdGdsaW1hZ2VzaW5rLmgiCiAjaW5jbHVkZSAiZ3N0Z2xzaW5rYmluLmgiCkBAIC0zMjEsMTcgKzMyMiwyNiBAQAogc3RhdGljIGdib29sZWFuIHVwZGF0ZV9vdXRwdXRfZm9ybWF0IChHc3RHTEltYWdlU2luayAqIGdsaW1hZ2Vfc2luayk7CiAKICNkZWZpbmUgR1NUX0dMX1NJTktfQ0FQUyBcCi0gICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksICJSR0JBIikKLQotI2RlZmluZSBHU1RfR0xfU0lOS19PVkVSTEFZX0NBUFMgXAotICAgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIsIiBcCi0gICAgICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04sICJSR0JBIikKKyAgICAidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIgICAgICAgICAgICAgIFwKKyAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSB7IDJELCBleHRlcm5hbC1vZXMgfSAiICAgICAgICAgICAgICAgICAgIFwKKyAgICAiIDsgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiwiICAgICAgICAgICAgICAgIFwKKyAgICBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04gIiksICIgICAgICAgICAgIFwKKyAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSB7IDJELCBleHRlcm5hbC1vZXMgfSAiCiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfZ2xpbWFnZV9zaW5rX3RlbXBsYXRlID0KLSAgICBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfR0xfU0lOS19DQVBTICI7IiBHU1RfR0xfU0lOS19PVkVSTEFZX0NBUFMpKTsKKyAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9HTF9TSU5LX0NBUFMpKTsKIAogZW51bQogewpAQCAtMzk5LDggKzQwOSw4IEBACiAgICAgKiBzdHJ1Y3R1cmUpCiB7CiAgIEdzdEdMSW1hZ2VTaW5rICpzaW5rID0gR1NUX0dMSU1BR0VfU0lOSyAobmF2aWdhdGlvbik7CisgIGdib29sZWFuIGhhbmRsZWQgPSBGQUxTRTsKICAgR3N0RXZlbnQgKmV2ZW50ID0gTlVMTDsKLSAgR3N0UGFkICpwYWQgPSBOVUxMOwogICBHc3RHTFdpbmRvdyAqd2luZG93OwogICBndWludCB3aWR0aCwgaGVpZ2h0OwogICBnZG91YmxlIHgsIHk7CkBAIC00MTEsMTUgKzQyMSwxMiBAQAogICB9CiAKICAgd2luZG93ID0gZ3N0X2dsX2NvbnRleHRfZ2V0X3dpbmRvdyAoc2luay0+Y29udGV4dCk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKIAogICB3aWR0aCA9IEdTVF9WSURFT19TSU5LX1dJRFRIIChzaW5rKTsKICAgaGVpZ2h0ID0gR1NUX1ZJREVPX1NJTktfSEVJR0hUIChzaW5rKTsKICAgZ3N0X2dsX3dpbmRvd19nZXRfc3VyZmFjZV9kaW1lbnNpb25zICh3aW5kb3csICZ3aWR0aCwgJmhlaWdodCk7CiAKLSAgZXZlbnQgPSBnc3RfZXZlbnRfbmV3X25hdmlnYXRpb24gKHN0cnVjdHVyZSk7Ci0KLSAgcGFkID0gZ3N0X3BhZF9nZXRfcGVlciAoR1NUX1ZJREVPX1NJTktfUEFEIChzaW5rKSk7CiAgIC8qIENvbnZlcnRpbmcgcG9pbnRlciBjb29yZGluYXRlcyB0byB0aGUgbm9uIHNjYWxlZCBnZW9tZXRyeSAqLwogICBpZiAod2lkdGggIT0gMCAmJiBnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUgKHN0cnVjdHVyZSwgInBvaW50ZXJfeCIsICZ4KQogICAgICAgJiYgaGVpZ2h0ICE9IDAgJiYgZ3N0X3N0cnVjdHVyZV9nZXRfZG91YmxlIChzdHJ1Y3R1cmUsICJwb2ludGVyX3kiLCAmeSkpIHsKQEAgLTQzMSwxMCArNDM4LDE3IEBACiAgICAgICAgIHN0cmVhbV94LCAicG9pbnRlcl95IiwgR19UWVBFX0RPVUJMRSwgc3RyZWFtX3ksIE5VTEwpOwogICB9CiAKLSAgaWYgKEdTVF9JU19QQUQgKHBhZCkgJiYgR1NUX0lTX0VWRU5UIChldmVudCkpCi0gICAgZ3N0X3BhZF9zZW5kX2V2ZW50IChwYWQsIGV2ZW50KTsKKyAgZXZlbnQgPSBnc3RfZXZlbnRfbmV3X25hdmlnYXRpb24gKHN0cnVjdHVyZSk7CisgIGlmIChldmVudCkgeworICAgIGdzdF9ldmVudF9yZWYgKGV2ZW50KTsKKyAgICBoYW5kbGVkID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfVklERU9fU0lOS19QQUQgKHNpbmspLCBldmVudCk7CiAKLSAgZ3N0X29iamVjdF91bnJlZiAocGFkKTsKKyAgICBpZiAoIWhhbmRsZWQpCisgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKChHc3RFbGVtZW50ICopIHNpbmssCisgICAgICAgICAgZ3N0X25hdmlnYXRpb25fbWVzc2FnZV9uZXdfZXZlbnQgKChHc3RPYmplY3QgKikgc2luaywgZXZlbnQpKTsKKworICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOworICB9CiAgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvdyk7CiB9CiAKQEAgLTcwNyw4ICs3MjEsNyBAQAogZ3N0X2dsaW1hZ2Vfc2lua19rZXlfZXZlbnRfY2IgKEdzdEdMV2luZG93ICogd2luZG93LCBjaGFyICpldmVudF9uYW1lLCBjaGFyCiAgICAgKmtleV9zdHJpbmcsIEdzdEdMSW1hZ2VTaW5rICogZ2xfc2luaykKIHsKLSAgR1NUX0RFQlVHX09CSkVDVCAoZ2xfc2luaywgImdsaW1hZ2VzaW5rIGV2ZW50ICVzIGtleSAlcyBwcmVzc2VkIiwgZXZlbnRfbmFtZSwKLSAgICAgIGtleV9zdHJpbmcpOworICBHU1RfREVCVUdfT0JKRUNUIChnbF9zaW5rLCAiZXZlbnQgJXMga2V5ICVzIHByZXNzZWQiLCBldmVudF9uYW1lLCBrZXlfc3RyaW5nKTsKICAgZ3N0X25hdmlnYXRpb25fc2VuZF9rZXlfZXZlbnQgKEdTVF9OQVZJR0FUSU9OIChnbF9zaW5rKSwKICAgICAgIGV2ZW50X25hbWUsIGtleV9zdHJpbmcpOwogfQpAQCAtNzE3LDggKzczMCw3IEBACiBnc3RfZ2xpbWFnZV9zaW5rX21vdXNlX2V2ZW50X2NiIChHc3RHTFdpbmRvdyAqIHdpbmRvdywgY2hhciAqZXZlbnRfbmFtZSwKICAgICBpbnQgYnV0dG9uLCBkb3VibGUgcG9zeCwgZG91YmxlIHBvc3ksIEdzdEdMSW1hZ2VTaW5rICogZ2xfc2luaykKIHsKLSAgR1NUX0RFQlVHX09CSkVDVCAoZ2xfc2luaywgImdsaW1hZ2VzaW5rIGV2ZW50ICVzIGF0ICVnLCAlZyIsIGV2ZW50X25hbWUsIHBvc3gsCi0gICAgICBwb3N5KTsKKyAgR1NUX0RFQlVHX09CSkVDVCAoZ2xfc2luaywgImV2ZW50ICVzIGF0ICVnLCAlZyIsIGV2ZW50X25hbWUsIHBvc3gsIHBvc3kpOwogICBnc3RfbmF2aWdhdGlvbl9zZW5kX21vdXNlX2V2ZW50IChHU1RfTkFWSUdBVElPTiAoZ2xfc2luayksCiAgICAgICBldmVudF9uYW1lLCBidXR0b24sIHBvc3gsIHBvc3kpOwogfQpAQCAtODg0LDYgKzg5Niw3IEBACiAgICAgICBidWZbMF0gPSBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMF07CiAgICAgICBidWZbMV0gPSBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMV07CiAgICAgICBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMF0gPSBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMV0gPSBOVUxMOworICAgICAgZ2xpbWFnZV9zaW5rLT5zdG9yZWRfc3luY19tZXRhID0gZ2xpbWFnZV9zaW5rLT5uZXh0X3N5bmNfbWV0YSA9IE5VTEw7CiAgICAgICBHU1RfR0xJTUFHRV9TSU5LX1VOTE9DSyAoZ2xpbWFnZV9zaW5rKTsKIAogICAgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlIChidWYsIE5VTEwpOwpAQCAtOTE2LDYgKzkyOSw4IEBACiAKICAgaWYgKGdsX3NpbmstPmRpc3BsYXkpCiAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoZ2xfc2luay0+ZGlzcGxheSwgU1VQUE9SVEVEX0dMX0FQSVMpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7CiB9CiAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgpAQCAtOTM3LDE0ICs5NTIsMTEgQEAKICAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKIAogICAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoZ2xpbWFnZV9zaW5rLT5kaXNwbGF5LCBTVVBQT1JURURfR0xfQVBJUyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgorCiAgICAgICBpZiAoIV9lbnN1cmVfZ2xfc2V0dXAgKGdsaW1hZ2Vfc2luaykpCiAgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0KLSAgICAgIGdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yID0KLSAgICAgICAgICBnc3RfZ2xfb3ZlcmxheV9jb21wb3NpdG9yX25ldyAoZ2xpbWFnZV9zaW5rLT5jb250ZXh0KTsKLQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKICAgICAgIGdfYXRvbWljX2ludF9zZXQgKCZnbGltYWdlX3NpbmstPnRvX3F1aXQsIDApOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgpAQCAtOTcyLDYgKzk4NCw3IEBACiAgICAgICBidWZbMF0gPSBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMF07CiAgICAgICBidWZbMV0gPSBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMV07CiAgICAgICBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMF0gPSBnbGltYWdlX3NpbmstPnN0b3JlZF9idWZmZXJbMV0gPSBOVUxMOworICAgICAgZ2xpbWFnZV9zaW5rLT5zdG9yZWRfc3luY19tZXRhID0gZ2xpbWFnZV9zaW5rLT5uZXh0X3N5bmNfbWV0YSA9IE5VTEw7CiAKICAgICAgIGlmIChnbGltYWdlX3NpbmstPnN0b3JlZF9zeW5jKQogICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChnbGltYWdlX3NpbmstPnN0b3JlZF9zeW5jKTsKQEAgLTk5OSw2ICsxMDEyLDE3IEBACiAgICAgICAgIGdzdF9jYXBzX3VucmVmIChnbGltYWdlX3NpbmstPm91dF9jYXBzKTsKICAgICAgICAgZ2xpbWFnZV9zaW5rLT5vdXRfY2FwcyA9IE5VTEw7CiAgICAgICB9CisgICAgICBpZiAoZ2xpbWFnZV9zaW5rLT5pbl9jYXBzKSB7CisgICAgICAgIGdzdF9jYXBzX3VucmVmIChnbGltYWdlX3NpbmstPmluX2NhcHMpOworICAgICAgICBnbGltYWdlX3NpbmstPmluX2NhcHMgPSBOVUxMOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgorICAgICAgaWYgKGdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yKSB7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yKTsKKyAgICAgICAgZ2xpbWFnZV9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IgPSBOVUxMOworICAgICAgfQogCiAgICAgICBpZiAoZ2xpbWFnZV9zaW5rLT5jb250ZXh0KSB7CiAgICAgICAgIEdzdEdMV2luZG93ICp3aW5kb3cgPSBnc3RfZ2xfY29udGV4dF9nZXRfd2luZG93IChnbGltYWdlX3NpbmstPmNvbnRleHQpOwpAQCAtMTAxNywxNiArMTA0MSwxMSBAQAogICAgICAgICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCAod2luZG93LCBnbGltYWdlX3NpbmstPm1vdXNlX3NpZ19pZCk7CiAgICAgICAgIGdsaW1hZ2Vfc2luay0+bW91c2Vfc2lnX2lkID0gMDsKIAotICAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChnbGltYWdlX3NpbmstPm92ZXJsYXlfY29tcG9zaXRvcik7Ci0gICAgICAgIGdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yID0gTlVMTDsKLQogICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh3aW5kb3cpOwogICAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChnbGltYWdlX3NpbmstPmNvbnRleHQpOwogICAgICAgICBnbGltYWdlX3NpbmstPmNvbnRleHQgPSBOVUxMOwogICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgorCiAgICAgICBpZiAoZ2xpbWFnZV9zaW5rLT5vdGhlcl9jb250ZXh0KSB7CiAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGdsaW1hZ2Vfc2luay0+b3RoZXJfY29udGV4dCk7CiAgICAgICAgIGdsaW1hZ2Vfc2luay0+b3RoZXJfY29udGV4dCA9IE5VTEw7CkBAIC0xMTY0LDkgKzExODMsMTQgQEAKICAgZ2Jvb2xlYW4gaW5wdXRfaXNfbW9ubyA9IEZBTFNFOwogICBHc3RWaWRlb011bHRpdmlld01vZGUgbXZfbW9kZTsKICAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IE5VTEw7CisgIEdzdEdMVGV4dHVyZVRhcmdldCBwcmV2aW91c190YXJnZXQ7CisgIEdzdFN0cnVjdHVyZSAqczsKKyAgY29uc3QgZ2NoYXIgKnRhcmdldF9zdHI7CisgIEdzdENhcHMgKm91dF9jYXBzOwogICBnYm9vbGVhbiByZXQ7CiAKICAgKm91dF9pbmZvID0gZ2xpbWFnZV9zaW5rLT5pbl9pbmZvOworICBwcmV2aW91c190YXJnZXQgPSBnbGltYWdlX3NpbmstPnRleHR1cmVfdGFyZ2V0OwogCiAgIG12X21vZGUgPSBHU1RfVklERU9fSU5GT19NVUxUSVZJRVdfTU9ERSAoJmdsaW1hZ2Vfc2luay0+aW5faW5mbyk7CiAKQEAgLTEyMDUsMTUgKzEyMjksNTEgQEAKICAgICBnbGltYWdlX3NpbmstPm91dF9pbmZvLmhlaWdodCA9IE1BWCAoMSwgZ2xpbWFnZV9zaW5rLT5kaXNwbGF5X3JlY3QuaCk7CiAgICAgR1NUX0xPR19PQkpFQ1QgKGdsaW1hZ2Vfc2luaywgIlNldCAzRCBvdXRwdXQgc2NhbGUgdG8gJWQsJWQiLAogICAgICAgICBnbGltYWdlX3NpbmstPmRpc3BsYXlfcmVjdC53LCBnbGltYWdlX3NpbmstPmRpc3BsYXlfcmVjdC5oKTsKKyAgfQorCisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChnbGltYWdlX3NpbmstPmluX2NhcHMsIDApOworICB0YXJnZXRfc3RyID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAidGV4dHVyZS10YXJnZXQiKTsKKworICBpZiAoIXRhcmdldF9zdHIpCisgICAgdGFyZ2V0X3N0ciA9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFI7CisKKyAgZ2xpbWFnZV9zaW5rLT50ZXh0dXJlX3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAodGFyZ2V0X3N0cik7CisgIGlmICghZ2xpbWFnZV9zaW5rLT50ZXh0dXJlX3RhcmdldCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgb3V0X2NhcHMgPSBnc3RfdmlkZW9faW5mb190b19jYXBzIChvdXRfaW5mbyk7CisgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAob3V0X2NhcHMsIDAsCisgICAgICBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKSk7CisgIGdzdF9jYXBzX3NldF9zaW1wbGUgKG91dF9jYXBzLCAidGV4dHVyZS10YXJnZXQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgdGFyZ2V0X3N0ciwgTlVMTCk7CisKKyAgaWYgKGdsaW1hZ2Vfc2luay0+Y29udmVydF92aWV3cykgeworICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKG91dF9jYXBzLCAidGV4dHVyZS10YXJnZXQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSLCBOVUxMKTsKKworICAgIGdsaW1hZ2Vfc2luay0+dGV4dHVyZV90YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CiAKICAgICBHU1RfR0xJTUFHRV9TSU5LX1VOTE9DSyAoZ2xpbWFnZV9zaW5rKTsKLSAgICBnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9mb3JtYXQgKGdsaW1hZ2Vfc2luay0+Y29udmVydF92aWV3cywKLSAgICAgICAgJmdsaW1hZ2Vfc2luay0+aW5faW5mbywgJmdsaW1hZ2Vfc2luay0+b3V0X2luZm8pOworICAgIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2NhcHMgKGdsaW1hZ2Vfc2luay0+Y29udmVydF92aWV3cywKKyAgICAgICAgZ2xpbWFnZV9zaW5rLT5pbl9jYXBzLCBvdXRfY2Fwcyk7CiAgICAgZ19vYmplY3Rfc2V0IChnbGltYWdlX3NpbmstPmNvbnZlcnRfdmlld3MsICJkb3dubWl4LW1vZGUiLAogICAgICAgICBnbGltYWdlX3NpbmstPm12aWV3X2Rvd25taXhfbW9kZSwgTlVMTCk7CiAgICAgR1NUX0dMSU1BR0VfU0lOS19MT0NLIChnbGltYWdlX3NpbmspOwogICB9CiAKKyAgaWYgKGdsaW1hZ2Vfc2luay0+b3V0X2NhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKGdsaW1hZ2Vfc2luay0+b3V0X2NhcHMpOworICBnbGltYWdlX3NpbmstPm91dF9jYXBzID0gb3V0X2NhcHM7CisKKyAgaWYgKHByZXZpb3VzX3RhcmdldCAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORSAmJgorICAgICAgZ2xpbWFnZV9zaW5rLT50ZXh0dXJlX3RhcmdldCAhPSBwcmV2aW91c190YXJnZXQpIHsKKyAgICAvKiByZWdlbmVyYXRlIHRoZSBzaGFkZXIgZm9yIHRoZSBjaGFuZ2VkIHRhcmdldCAqLworICAgIEdzdEdMV2luZG93ICp3aW5kb3cgPSBnc3RfZ2xfY29udGV4dF9nZXRfd2luZG93IChnbGltYWdlX3NpbmstPmNvbnRleHQpOworICAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlICh3aW5kb3csCisgICAgICAgIEdTVF9HTF9XSU5ET1dfQ0IgKGdzdF9nbGltYWdlX3NpbmtfY2xlYW51cF9nbHRocmVhZCksIGdsaW1hZ2Vfc2luayk7CisgICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93KTsKKyAgfQorCiAgIGdsaW1hZ2Vfc2luay0+b3V0cHV0X21vZGVfY2hhbmdlZCA9IEZBTFNFOwogCiAgIGlmIChnbGltYWdlX3NpbmstPmNvbnRleHQpCkBAIC0xMjIzLDEwICsxMjgzLDYgQEAKICAgICBnc3Rfb2JqZWN0X3VucmVmICh3aW5kb3cpOwogICB9CiAKLSAgaWYgKGdsaW1hZ2Vfc2luay0+b3V0X2NhcHMpCi0gICAgZ3N0X2NhcHNfdW5yZWYgKGdsaW1hZ2Vfc2luay0+b3V0X2NhcHMpOwotICBnbGltYWdlX3NpbmstPm91dF9jYXBzID0gZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcyAob3V0X2luZm8pOwotCiAgIHJldHVybiByZXQ7CiB9CiAKQEAgLTEyNDksNiArMTMwNSw5IEBACiAgICAgcmV0dXJuIEZBTFNFOwogCiAgIEdTVF9HTElNQUdFX1NJTktfTE9DSyAoZ2xpbWFnZV9zaW5rKTsKKyAgaWYgKGdsaW1hZ2Vfc2luay0+aW5fY2FwcykKKyAgICBnc3RfY2Fwc191bnJlZiAoZ2xpbWFnZV9zaW5rLT5pbl9jYXBzKTsKKyAgZ2xpbWFnZV9zaW5rLT5pbl9jYXBzID0gZ3N0X2NhcHNfcmVmIChjYXBzKTsKICAgZ2xpbWFnZV9zaW5rLT5pbl9pbmZvID0gdmluZm87CiAgIG9rID0gdXBkYXRlX291dHB1dF9mb3JtYXQgKGdsaW1hZ2Vfc2luayk7CiAKQEAgLTEyNjQsNyArMTMyMyw3IEBACiB7CiAgIEdzdEJ1ZmZlciAqaW5fYnVmZmVyLCAqbmV4dF9idWZmZXIsICpvbGRfYnVmZmVyOwogICBHc3RCdWZmZXIgKmluX2J1ZmZlcjIgPSBOVUxMLCAqbmV4dF9idWZmZXIyID0gTlVMTCwgKm9sZF9idWZmZXIyOwotICBHc3RCdWZmZXIgKm5leHRfc3luYywgKm9sZF9zeW5jOworICBHc3RCdWZmZXIgKm5leHRfc3luYyA9IE5VTEwsICpvbGRfc3luYzsKICAgR3N0R0xTeW5jTWV0YSAqc3luY19tZXRhOwogICBHc3RWaWRlb0ZyYW1lIGdsX2ZyYW1lOwogICBHc3RHTFZpZXdDb252ZXJ0ICpjb252ZXJ0X3ZpZXdzID0gTlVMTDsKQEAgLTEzMTUsNiArMTM3NCw3IEBACiAgICAgICAgIGdvdG8gZmFpbDsKICAgICB9CiAgICAgZ3N0X29iamVjdF91bnJlZiAoY29udmVydF92aWV3cyk7CisgICAgY29udmVydF92aWV3cyA9IE5VTEw7CiAKICAgICBpZiAobmV4dF9idWZmZXIgPT0gTlVMTCkgewogICAgICAgLyogTm90IHJlYWR5IHRvIHBhaW50IGEgYnVmZmVyIHlldCAqLwpAQCAtMTMyNiwyMCArMTM4NiwzMyBAQAogICAgIGluZm8gPSAmZ2xpbWFnZV9zaW5rLT5pbl9pbmZvOwogICB9CiAKKyAgaWYgKCFnbGltYWdlX3NpbmstPm92ZXJsYXlfY29tcG9zaXRvcikgeworICAgIGlmICghKGdsaW1hZ2Vfc2luay0+b3ZlcmxheV9jb21wb3NpdG9yID0KKyAgICAgICAgICAgIGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfbmV3IChnbGltYWdlX3NpbmstPmNvbnRleHQpKSkgeworICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAobmV4dF9idWZmZXIpOworICAgICAgZ290byBmYWlsOworICAgIH0KKyAgfQorCiAgIGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfdXBsb2FkX292ZXJsYXlzIChnbGltYWdlX3NpbmstPm92ZXJsYXlfY29tcG9zaXRvciwKICAgICAgIG5leHRfYnVmZmVyKTsKIAorICBzeW5jX21ldGEgPSBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEgKG5leHRfYnVmZmVyKTsKKworICBpZiAoIXN5bmNfbWV0YSkgeworICAgIG5leHRfc3luYyA9IGdzdF9idWZmZXJfbmV3ICgpOworICAgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YSAoZ2xpbWFnZV9zaW5rLT5jb250ZXh0LCBuZXh0X3N5bmMpOworICAgIGdzdF9nbF9zeW5jX21ldGFfc2V0X3N5bmNfcG9pbnQgKHN5bmNfbWV0YSwgZ2xpbWFnZV9zaW5rLT5jb250ZXh0KTsKKyAgfQorCiAgIC8qIGluX2J1ZmZlciBpbnZhbGlkIG5vdyAqLwogICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZnbF9mcmFtZSwgaW5mbywgbmV4dF9idWZmZXIsCiAgICAgICAgICAgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpIHsKICAgICBnc3RfYnVmZmVyX3VucmVmIChuZXh0X2J1ZmZlcik7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIG1hcCB2aWRlbyBmcmFtZS4iKTsKICAgICBnb3RvIGZhaWw7CiAgIH0KIAotICBuZXh0X3N5bmMgPSBnc3RfYnVmZmVyX25ldyAoKTsKLSAgc3luY19tZXRhID0gZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhIChnbGltYWdlX3NpbmstPmNvbnRleHQsIG5leHRfc3luYyk7Ci0gIGdzdF9nbF9zeW5jX21ldGFfc2V0X3N5bmNfcG9pbnQgKHN5bmNfbWV0YSwgZ2xpbWFnZV9zaW5rLT5jb250ZXh0KTsKLQogICBHU1RfR0xJTUFHRV9TSU5LX0xPQ0sgKGdsaW1hZ2Vfc2luayk7CiAgIGdsaW1hZ2Vfc2luay0+bmV4dF90ZXggPSAqKGd1aW50ICopIGdsX2ZyYW1lLmRhdGFbMF07CiAKQEAgLTEzNTAsNiArMTQyMyw3IEBACiAKICAgb2xkX3N5bmMgPSBnbGltYWdlX3NpbmstPm5leHRfc3luYzsKICAgZ2xpbWFnZV9zaW5rLT5uZXh0X3N5bmMgPSBuZXh0X3N5bmM7CisgIGdsaW1hZ2Vfc2luay0+bmV4dF9zeW5jX21ldGEgPSBzeW5jX21ldGE7CiAKICAgLyogTmVlZCB0byBkcm9wIHRoZSBsb2NrIGFnYWluLCB0byBhdm9pZCBhIGRlYWRsb2NrIGlmIHdlJ3JlCiAgICAqIGRyb3BwaW5nIHRoZSBsYXN0IHJlZiBvbiB0aGlzIGJ1ZmZlciBhbmQgaXQgZ29lcyBiYWNrIHRvIG91cgpAQCAtMTM2OSw2ICsxNDQzLDggQEAKICAgcmV0dXJuIFRSVUU7CiAKIGZhaWw6CisgIGlmIChjb252ZXJ0X3ZpZXdzKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnZlcnRfdmlld3MpOwogICBHU1RfR0xJTUFHRV9TSU5LX0xPQ0sgKGdsaW1hZ2Vfc2luayk7CiAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTEzNzcsNiArMTQ1Myw3IEBACiBnc3RfZ2xpbWFnZV9zaW5rX3ByZXBhcmUgKEdzdEJhc2VTaW5rICogYnNpbmssIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKICAgR3N0R0xJbWFnZVNpbmsgKmdsaW1hZ2Vfc2luazsKKyAgR3N0R0xTeW5jTWV0YSAqc3luY19tZXRhOwogICBHc3RCdWZmZXIgKip0YXJnZXQ7CiAgIEdzdEJ1ZmZlciAqb2xkX2lucHV0OwogCkBAIC0xMzkyLDcgKzE0NjksMjAgQEAKICAgaWYgKCFfZW5zdXJlX2dsX3NldHVwIChnbGltYWdlX3NpbmspKQogICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKIAorICBzeW5jX21ldGEgPSBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEgKGJ1Zik7CisgIGlmIChzeW5jX21ldGEpCisgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChzeW5jX21ldGEsIGdsaW1hZ2Vfc2luay0+Y29udGV4dCk7CisKICAgR1NUX0dMSU1BR0VfU0lOS19MT0NLIChnbGltYWdlX3NpbmspOworICBpZiAoZ2xpbWFnZV9zaW5rLT53aW5kb3dfcmVzaXplZCkgeworICAgIGdsaW1hZ2Vfc2luay0+d2luZG93X3Jlc2l6ZWQgPSBGQUxTRTsKKyAgICBHU1RfR0xJTUFHRV9TSU5LX1VOTE9DSyAoZ2xpbWFnZV9zaW5rKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChnbGltYWdlX3NpbmssICJTZW5kaW5nIHJlY29uZmlndXJlIGV2ZW50IG9uIHNpbmtwYWQuIik7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQkFTRV9TSU5LIChnbGltYWdlX3NpbmspLT5zaW5rcGFkLAorICAgICAgICBnc3RfZXZlbnRfbmV3X3JlY29uZmlndXJlICgpKTsKKyAgICBHU1RfR0xJTUFHRV9TSU5LX0xPQ0sgKGdsaW1hZ2Vfc2luayk7CisgIH0KKwogICB0YXJnZXQgPSAmZ2xpbWFnZV9zaW5rLT5pbnB1dF9idWZmZXI7CiAgIGlmIChHU1RfVklERU9fSU5GT19NVUxUSVZJRVdfTU9ERSAoJmdsaW1hZ2Vfc2luay0+aW5faW5mbykgPT0KICAgICAgIEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9GUkFNRV9CWV9GUkFNRSAmJgpAQCAtMTY4MiwxMyArMTc3Miw0NyBAQAogZ3N0X2dsaW1hZ2Vfc2lua190aHJlYWRfaW5pdF9yZWRpc3BsYXkgKEdzdEdMSW1hZ2VTaW5rICogZ2xfc2luaykKIHsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBnbF9zaW5rLT5jb250ZXh0LT5nbF92dGFibGU7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICBHc3RHTFNMU3RhZ2UgKmZyYWdfc3RhZ2UsICp2ZXJ0X3N0YWdlOwogCi0gIGdsX3NpbmstPnJlZGlzcGxheV9zaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAoZ2xfc2luay0+Y29udGV4dCk7Ci0KLSAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjawotICAgICAgKGdsX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsICZnbF9zaW5rLT5hdHRyX3Bvc2l0aW9uLAotICAgICAgICAgICZnbF9zaW5rLT5hdHRyX3RleHR1cmUpKQorICBpZiAoZ2xfc2luay0+dGV4dHVyZV90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykgeworICAgIHZlcnRfc3RhZ2UgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGdsX3NpbmstPmNvbnRleHQsCisgICAgICAgIEdMX1ZFUlRFWF9TSEFERVIsIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyB8IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwKKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9zdHJpbmdfdmVydGV4X21hdDRfdGV4dHVyZV90cmFuc2Zvcm0pOworICAgIGZyYWdfc3RhZ2UgPSBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmcgKGdsX3NpbmstPmNvbnRleHQsCisgICAgICAgIEdMX0ZSQUdNRU5UX1NIQURFUiwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLAorICAgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTIHwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLAorICAgICAgICBnc3RfZ2xfc2hhZGVyX3N0cmluZ19mcmFnbWVudF9leHRlcm5hbF9vZXNfZGVmYXVsdCk7CisgIH0gZWxzZSB7CisgICAgdmVydF9zdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoZ2xfc2luay0+Y29udGV4dCk7CisgICAgZnJhZ19zdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X2ZyYWdtZW50IChnbF9zaW5rLT5jb250ZXh0KTsKKyAgfQorICBpZiAoIXZlcnRfc3RhZ2UgfHwgIWZyYWdfc3RhZ2UpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChnbF9zaW5rLCAiRmFpbGVkIHRvIHJldHJlaXZlIGZyYWdtZW50IHNoYWRlciBmb3IgIgorICAgICAgICAidGV4dHVyZSB0YXJnZXQiKTsKKyAgICBpZiAodmVydF9zdGFnZSkKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZlcnRfc3RhZ2UpOworICAgIGlmIChmcmFnX3N0YWdlKQorICAgICAgZ3N0X29iamVjdF91bnJlZiAoZnJhZ19zdGFnZSk7CiAgICAgZ3N0X2dsaW1hZ2Vfc2lua19jbGVhbnVwX2dsdGhyZWFkIChnbF9zaW5rKTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoIShnbF9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyID0KKyAgICAgICAgICBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChnbF9zaW5rLT5jb250ZXh0LCAmZXJyb3IsCisgICAgICAgICAgICAgIHZlcnRfc3RhZ2UsIGZyYWdfc3RhZ2UsIE5VTEwpKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGdsX3NpbmssICJGYWlsZWQgdG8gbGluayBzaGFkZXI6ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdzdF9nbGltYWdlX3NpbmtfY2xlYW51cF9nbHRocmVhZCAoZ2xfc2luayk7CisgICAgcmV0dXJuOworICB9CisKKyAgZ2xfc2luay0+YXR0cl9wb3NpdGlvbiA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGdsX3NpbmstPnJlZGlzcGxheV9zaGFkZXIsCisgICAgICAiYV9wb3NpdGlvbiIpOworICBnbF9zaW5rLT5hdHRyX3RleHR1cmUgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChnbF9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyLAorICAgICAgImFfdGV4Y29vcmQiKTsKIAogICBpZiAoZ2wtPkdlblZlcnRleEFycmF5cykgewogICAgIGdsLT5HZW5WZXJ0ZXhBcnJheXMgKDEsICZnbF9zaW5rLT52YW8pOwpAQCAtMTc0Myw3ICsxODY3LDggQEAKICAgICBnbF9zaW5rLT52Ym9faW5kaWNlcyA9IDA7CiAgIH0KIAotICBnc3RfZ2xfb3ZlcmxheV9jb21wb3NpdG9yX2ZyZWVfb3ZlcmxheXMgKGdsX3NpbmstPm92ZXJsYXlfY29tcG9zaXRvcik7CisgIGlmIChnbF9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IpCisgICAgZ3N0X2dsX292ZXJsYXlfY29tcG9zaXRvcl9mcmVlX292ZXJsYXlzIChnbF9zaW5rLT5vdmVybGF5X2NvbXBvc2l0b3IpOwogfQogCiAvKiBDYWxsZWQgd2l0aCBvYmplY3QgbG9jayBoZWxkICovCkBAIC0xNzU1LDcgKzE4ODAsNiBAQAogICAgKi8KICAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7CiAgIGdib29sZWFuIGRvX3Jlc2hhcGU7Ci0gIGdib29sZWFuIHJlY29uZmlndXJlOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGdsX3NpbmssICJHTCBXaW5kb3cgcmVzaXplZCB0byAldXgldSIsIHdpZHRoLCBoZWlnaHQpOwogCkBAIC0xNzY5LDcgKzE4OTMsNyBAQAogICBoZWlnaHQgPSBNQVggKDEsIGhlaWdodCk7CiAKICAgLyogQ2hlY2sgaWYgd2Ugd291bGQgc3VnZ2VzdCBhIGRpZmZlcmVudCB3aWR0aC9oZWlnaHQgbm93ICovCi0gIHJlY29uZmlndXJlID0gKChnbF9zaW5rLT53aW5kb3dfd2lkdGggIT0gd2lkdGgpCisgIGdsX3NpbmstPndpbmRvd19yZXNpemVkID0gKChnbF9zaW5rLT53aW5kb3dfd2lkdGggIT0gd2lkdGgpCiAgICAgICB8fCAoZ2xfc2luay0+d2luZG93X2hlaWdodCAhPSBoZWlnaHQpKQogICAgICAgJiYgKGdsX3NpbmstPndpbmRvd193aWR0aCAhPSAwKQogICAgICAgJiYgKGdsX3NpbmstPndpbmRvd19oZWlnaHQgIT0gMCk7CkBAIC0xNzc3LDExICsxOTAxLDggQEAKICAgZ2xfc2luay0+d2luZG93X3dpZHRoID0gd2lkdGg7CiAgIGdsX3NpbmstPndpbmRvd19oZWlnaHQgPSBoZWlnaHQ7CiAKLSAgaWYgKHJlY29uZmlndXJlKSB7Ci0gICAgR1NUX0RFQlVHICgiU2VuZGluZyByZWNvbmZpZ3VyZSBldmVudCBvbiBzaW5rcGFkLiIpOwotICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX0JBU0VfU0lOSyAoZ2xfc2luayktPnNpbmtwYWQsCi0gICAgICAgIGdzdF9ldmVudF9uZXdfcmVjb25maWd1cmUgKCkpOwotICB9CisgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChnbF9zaW5rLT5jb250ZXh0LCAiJXMgd2luZG93IHJlc2l6ZSB0byAlaXglaSIsCisgICAgICBHU1RfT0JKRUNUX05BTUUgKGdsX3NpbmspLCB3aWR0aCwgaGVpZ2h0KTsKIAogICAvKiBkZWZhdWx0IHJlc2hhcGUgKi8KICAgaWYgKCFkb19yZXNoYXBlKSB7CkBAIC0xODIxLDYgKzE5NDIsMTMgQEAKICAgR1NUX0dMSU1BR0VfU0lOS19VTkxPQ0sgKGdsX3NpbmspOwogfQogCitzdGF0aWMgY29uc3QgZ2Zsb2F0IGlkZW50aXR5X21hdHJpeFtdID0geworICAxLjBmLCAwLjBmLCAwLjAsIDAuMGYsCisgIDAuMGYsIDEuMGYsIDAuMCwgMC4wZiwKKyAgMC4wZiwgMC4wZiwgMS4wLCAwLjBmLAorICAwLjBmLCAwLjBmLCAwLjAsIDEuMGYsCit9OworCiBzdGF0aWMgdm9pZAogZ3N0X2dsaW1hZ2Vfc2lua19vbl9kcmF3IChHc3RHTEltYWdlU2luayAqIGdsX3NpbmspCiB7CkBAIC0xODMzLDggKzE5NjEsOCBAQAogICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IE5VTEw7CiAgIEdzdEdMV2luZG93ICp3aW5kb3cgPSBOVUxMOwogICBnYm9vbGVhbiBkb19yZWRpc3BsYXkgPSBGQUxTRTsKLSAgR3N0R0xTeW5jTWV0YSAqc3luY19tZXRhID0gTlVMTDsKICAgR3N0U2FtcGxlICpzYW1wbGUgPSBOVUxMOworICBndWludCBnbF90YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGdsX3NpbmstPnRleHR1cmVfdGFyZ2V0KTsKIAogICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xJTUFHRV9TSU5LIChnbF9zaW5rKSk7CiAKQEAgLTE4NTIsMTkgKzE5ODAsMTcgQEAKICAgd2luZG93LT5pc19kcmF3aW5nID0gVFJVRTsKIAogICAvKiBvcGVuZ2wgc2NlbmUgKi8KKyAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKGdsX3NpbmstPmNvbnRleHQsICIlcyBlbGVtZW50IGRyYXdpbmcgdGV4dHVyZSAldSIsCisgICAgICBHU1RfT0JKRUNUX05BTUUgKGdsX3NpbmspLCBnbF9zaW5rLT5yZWRpc3BsYXlfdGV4dHVyZSk7CiAgIEdTVF9UUkFDRSAoInJlZHJhd2luZyB0ZXh0dXJlOiV1IiwgZ2xfc2luay0+cmVkaXNwbGF5X3RleHR1cmUpOwogCi0gIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSAoZ2xfc2luay0+c3RvcmVkX3N5bmMpOwotICBpZiAoc3luY19tZXRhKQotICAgIGdzdF9nbF9zeW5jX21ldGFfd2FpdCAoc3luY19tZXRhLCBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudCAoKSk7CisgIGlmIChnbF9zaW5rLT5zdG9yZWRfc3luY19tZXRhKQorICAgIGdzdF9nbF9zeW5jX21ldGFfd2FpdCAoZ2xfc2luay0+c3RvcmVkX3N5bmNfbWV0YSwKKyAgICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnQgKCkpOwogCiAgIC8qIG1ha2Ugc3VyZSB0aGF0IHRoZSBlbnZpcm9ubmVtZW50IGlzIGNsZWFuICovCiAgIGdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlciAoZ2xfc2luay0+Y29udGV4dCk7Ci0gIGdsLT5CaW5kVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCwgMCk7Ci0jaWYgR1NUX0dMX0hBVkVfT1BFTkdMCi0gIGlmIChVU0lOR19PUEVOR0wgKGdsX3NpbmstPmNvbnRleHQpKQotICAgIGdsLT5EaXNhYmxlIChHTF9URVhUVVJFXzJEKTsKLSNlbmRpZgorICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgMCk7CiAKICAgc2FtcGxlID0gZ3N0X3NhbXBsZV9uZXcgKGdsX3NpbmstPnN0b3JlZF9idWZmZXJbMF0sCiAgICAgICBnbF9zaW5rLT5vdXRfY2FwcywgJkdTVF9CQVNFX1NJTksgKGdsX3NpbmspLT5zZWdtZW50LCBOVUxMKTsKQEAgLTE5MDEsMTEgKzIwMjcsMjUgQEAKICAgICAgIF9iaW5kX2J1ZmZlciAoZ2xfc2luayk7CiAKICAgICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTApOwotICAgIGdsLT5CaW5kVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCwgZ2xfc2luay0+cmVkaXNwbGF5X3RleHR1cmUpOworICAgIGdsLT5CaW5kVGV4dHVyZSAoZ2xfdGFyZ2V0LCBnbF9zaW5rLT5yZWRpc3BsYXlfdGV4dHVyZSk7CiAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoZ2xfc2luay0+cmVkaXNwbGF5X3NoYWRlciwgInRleCIsIDApOworICAgIGlmIChnbF9zaW5rLT50ZXh0dXJlX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgICBHc3RWaWRlb0FmZmluZVRyYW5zZm9ybWF0aW9uTWV0YSAqYWZfbWV0YTsKKworICAgICAgYWZfbWV0YSA9CisgICAgICAgICAgZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fYWZmaW5lX3RyYW5zZm9ybWF0aW9uX21ldGEKKyAgICAgICAgICAoZ2xfc2luay0+c3RvcmVkX2J1ZmZlclswXSk7CisgICAgICBpZiAoYWZfbWV0YSkKKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2IChnbF9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyLAorICAgICAgICAgICAgInVfdHJhbnNmb3JtYXRpb24iLCAxLCBGQUxTRSwgYWZfbWV0YS0+bWF0cml4KTsKKyAgICAgIGVsc2UKKyAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV9tYXRyaXhfNGZ2IChnbF9zaW5rLT5yZWRpc3BsYXlfc2hhZGVyLAorICAgICAgICAgICAgInVfdHJhbnNmb3JtYXRpb24iLCAxLCBGQUxTRSwgaWRlbnRpdHlfbWF0cml4KTsKKyAgICB9CiAKICAgICBnbC0+RHJhd0VsZW1lbnRzIChHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCAwKTsKIAorICAgIGdsLT5CaW5kVGV4dHVyZSAoZ2xfdGFyZ2V0LCAwKTsKICAgICBnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXIgKGdsX3NpbmstPmNvbnRleHQpOwogCiAgICAgaWYgKGdsLT5HZW5WZXJ0ZXhBcnJheXMpCkBAIC0xOTgxLDYgKzIxMjEsMTUgQEAKIAogICAgIC8qIFJlY3JlYXRlIHRoZSBvdXRwdXQgdGV4dHVyZSBpZiBuZWVkZWQgKi8KICAgICBHU1RfR0xJTUFHRV9TSU5LX0xPQ0sgKGdsX3NpbmspOworICAgIGlmIChnbF9zaW5rLT53aW5kb3dfcmVzaXplZCkgeworICAgICAgZ2xfc2luay0+d2luZG93X3Jlc2l6ZWQgPSBGQUxTRTsKKyAgICAgIEdTVF9HTElNQUdFX1NJTktfVU5MT0NLIChnbF9zaW5rKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGdsX3NpbmssICJTZW5kaW5nIHJlY29uZmlndXJlIGV2ZW50IG9uIHNpbmtwYWQuIik7CisgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9CQVNFX1NJTksgKGdsX3NpbmspLT5zaW5rcGFkLAorICAgICAgICAgIGdzdF9ldmVudF9uZXdfcmVjb25maWd1cmUgKCkpOworICAgICAgR1NUX0dMSU1BR0VfU0lOS19MT0NLIChnbF9zaW5rKTsKKyAgICB9CisKICAgICBpZiAoZ2xfc2luay0+b3V0cHV0X21vZGVfY2hhbmdlZCAmJiBnbF9zaW5rLT5pbnB1dF9idWZmZXIgIT0gTlVMTCkgewogICAgICAgR1NUX0RFQlVHICgiUmVjcmVhdGluZyBvdXRwdXQgYWZ0ZXIgbW9kZS9zaXplIGNoYW5nZSIpOwogICAgICAgdXBkYXRlX291dHB1dF9mb3JtYXQgKGdsX3NpbmspOwpAQCAtMTk5MCw2ICsyMTM5LDcgQEAKICAgICBpZiAoZ2xfc2luay0+bmV4dF9idWZmZXIgPT0gTlVMTCkgewogICAgICAgLyogTm90aGluZyB0byBkaXNwbGF5IHlldCAqLwogICAgICAgR1NUX0dMSU1BR0VfU0lOS19VTkxPQ0sgKGdsX3NpbmspOworICAgICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93KTsKICAgICAgIHJldHVybiBUUlVFOwogICAgIH0KIApAQCAtMjAwNCw3ICsyMTU0LDExIEBACiAgICAgICBnbF9zaW5rLT5zdG9yZWRfYnVmZmVyWzFdID0gTlVMTDsKIAogICAgIG9sZF9zeW5jID0gZ2xfc2luay0+c3RvcmVkX3N5bmM7Ci0gICAgZ2xfc2luay0+c3RvcmVkX3N5bmMgPSBnc3RfYnVmZmVyX3JlZiAoZ2xfc2luay0+bmV4dF9zeW5jKTsKKyAgICBpZiAoZ2xfc2luay0+bmV4dF9zeW5jKQorICAgICAgZ2xfc2luay0+c3RvcmVkX3N5bmMgPSBnc3RfYnVmZmVyX3JlZiAoZ2xfc2luay0+bmV4dF9zeW5jKTsKKyAgICBlbHNlCisgICAgICBnbF9zaW5rLT5zdG9yZWRfc3luYyA9IE5VTEw7CisgICAgZ2xfc2luay0+c3RvcmVkX3N5bmNfbWV0YSA9IGdsX3NpbmstPm5leHRfc3luY19tZXRhOwogICAgIEdTVF9HTElNQUdFX1NJTktfVU5MT0NLIChnbF9zaW5rKTsKIAogICAgIGdzdF9idWZmZXJfcmVwbGFjZSAob2xkX3N0b3JlZF9idWZmZXIsIE5VTEwpOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsaW1hZ2VzaW5rLmggYi9leHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuaAppbmRleCBmN2IzYmZiLi42ZTliOThlIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuaAorKysgYi9leHQvZ2wvZ3N0Z2xpbWFnZXNpbmsuaApAQCAtNjQsMTAgKzY0LDEyIEBACiAKICAgICAvKiBJbnB1dCBpbmZvIGJlZm9yZSAzZCBzdGVyZW8gb3V0cHV0IGNvbnZlcnNpb24sIGlmIGFueSAqLwogICAgIEdzdFZpZGVvSW5mbyBpbl9pbmZvOworICAgIEdzdENhcHMgKmluX2NhcHM7CiAKICAgICAvKiBmb3JtYXQvY2FwcyB3ZSBhY3R1YWxseSBoYW5kIG9mZiB0byB0aGUgYXBwICovCiAgICAgR3N0VmlkZW9JbmZvIG91dF9pbmZvOwogICAgIEdzdENhcHMgKm91dF9jYXBzOworICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0ZXh0dXJlX3RhcmdldDsKIAogICAgIEdzdEdMRGlzcGxheSAqZGlzcGxheTsKICAgICBHc3RHTENvbnRleHQgKmNvbnRleHQ7CkBAIC04Nyw2ICs4OSw3IEBACiAgICAgR3N0QnVmZmVyICpuZXh0X2J1ZmZlcjsKICAgICBHc3RCdWZmZXIgKm5leHRfYnVmZmVyMjsgLyogZnJhbWUtYnktZnJhbWUgMm5kIHZpZXcgKi8KICAgICBHc3RCdWZmZXIgKm5leHRfc3luYzsKKyAgICBHc3RHTFN5bmNNZXRhICpuZXh0X3N5bmNfbWV0YTsKIAogICAgIHZvbGF0aWxlIGdpbnQgdG9fcXVpdDsKICAgICBnYm9vbGVhbiBrZWVwX2FzcGVjdF9yYXRpbzsKQEAgLTk2LDkgKzk5LDExIEBACiAgICAgR011dGV4IGRyYXdpbmdfbG9jazsKICAgICBHc3RCdWZmZXIgKnN0b3JlZF9idWZmZXJbMl07CiAgICAgR3N0QnVmZmVyICpzdG9yZWRfc3luYzsKKyAgICBHc3RHTFN5bmNNZXRhICpzdG9yZWRfc3luY19tZXRhOwogICAgIEdMdWludCByZWRpc3BsYXlfdGV4dHVyZTsKIAotICAgIGdib29sZWFuIGNhcHNfY2hhbmdlOworICAgIC8qIHByb3RlY3RlZCB3aXRoIGRyYXdpbmdfbG9jayAqLworICAgIGdib29sZWFuIHdpbmRvd19yZXNpemVkOwogICAgIGd1aW50IHdpbmRvd193aWR0aDsKICAgICBndWludCB3aW5kb3dfaGVpZ2h0OwogCmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xtaXhlci5jIGIvZXh0L2dsL2dzdGdsbWl4ZXIuYwppbmRleCA0MDFlNGVkLi41Y2ExMzE2IDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xtaXhlci5jCisrKyBiL2V4dC9nbC9nc3RnbG1peGVyLmMKQEAgLTIyMSw5ICsyMjEsMTcgQEAKIAogLyogY29waWVzIHRoZSBnaXZlbiBjYXBzICovCiBzdGF0aWMgR3N0Q2FwcyAqCi1fdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzKQorX3VwZGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIGZpbHRlcikKIHsKLSAgcmV0dXJuIGdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXMgKGNhcHMsCisgIEdzdENhcHMgKnRtcDsKKworICBpZiAoZmlsdGVyKSB7CisgICAgdG1wID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChjYXBzLCBmaWx0ZXIpOworICB9IGVsc2UgeworICAgIHRtcCA9IGNhcHM7CisgIH0KKworICByZXR1cm4gZ3N0X2dsX2NhcHNfcmVwbGFjZV9hbGxfY2Fwc19mZWF0dXJlcyAodG1wLAogICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKIH0KIApAQCAtNDA4LDcgKzQxNiw2IEBACiBnc3RfZ2xfbWl4ZXJfaW5pdCAoR3N0R0xNaXhlciAqIG1peCkKIHsKICAgbWl4LT5wcml2ID0gR1NUX0dMX01JWEVSX0dFVF9QUklWQVRFIChtaXgpOwotICBtaXgtPmFycmF5X2J1ZmZlcnMgPSAwOwogICBtaXgtPmZibyA9IDA7CiAgIG1peC0+ZGVwdGhidWZmZXIgPSAwOwogCkBAIC01OTEsMTYgKzU5OCw0NyBAQAogICB9CiB9CiAKK3N0YXRpYyBnYm9vbGVhbgorX3VwbG9hZF9mcmFtZXMgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2csIEdzdEFnZ3JlZ2F0b3JQYWQgKiBhZ2dfcGFkLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICp2YWdncGFkID0gR1NUX1ZJREVPX0FHR1JFR0FUT1JfUEFEIChhZ2dfcGFkKTsKKyAgR3N0R0xNaXhlclBhZCAqcGFkID0gR1NUX0dMX01JWEVSX1BBRCAoYWdnX3BhZCk7CisgIEdzdEdMTWl4ZXIgKm1peCA9IEdTVF9HTF9NSVhFUiAoYWdnKTsKKworICBpZiAodmFnZ3BhZC0+YnVmZmVyICE9IE5VTEwpIHsKKyAgICBHc3RWaWRlb0luZm8gZ2xfaW5mbzsKKyAgICBHc3RWaWRlb0ZyYW1lIGdsX2ZyYW1lOworICAgIEdzdEdMU3luY01ldGEgKnN5bmNfbWV0YTsKKworICAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZnbF9pbmZvLAorICAgICAgICBHU1RfVklERU9fRk9STUFUX1JHQkEsCisgICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmdmFnZ3BhZC0+aW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnZhZ2dwYWQtPmluZm8pKTsKKworICAgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSAodmFnZ3BhZC0+YnVmZmVyKTsKKyAgICBpZiAoc3luY19tZXRhKQorICAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChzeW5jX21ldGEsIEdTVF9HTF9CQVNFX01JWEVSIChtaXgpLT5jb250ZXh0KTsKKworICAgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJmdsX2ZyYW1lLCAmZ2xfaW5mbywgdmFnZ3BhZC0+YnVmZmVyLAorICAgICAgICAgICAgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGFnZ19wYWQsICJGYWlsZWQgdG8gbWFwIGlucHV0IGZyYW1lIik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgcGFkLT5jdXJyZW50X3RleHR1cmUgPSAqKGd1aW50ICopIGdsX2ZyYW1lLmRhdGFbMF07CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmZ2xfZnJhbWUpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKIGdib29sZWFuCiBnc3RfZ2xfbWl4ZXJfcHJvY2Vzc190ZXh0dXJlcyAoR3N0R0xNaXhlciAqIG1peCwgR3N0QnVmZmVyICogb3V0YnVmKQogewotICBndWludCBpOwotICBHTGlzdCAqd2FsazsKICAgZ3VpbnQgb3V0X3RleDsKICAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKLSAgZ3VpbnQgYXJyYXlfaW5kZXggPSAwOwogICBHc3RWaWRlb0ZyYW1lIG91dF9mcmFtZTsKLSAgR3N0RWxlbWVudCAqZWxlbWVudCA9IEdTVF9FTEVNRU5UIChtaXgpOwogICBHc3RWaWRlb0FnZ3JlZ2F0b3IgKnZhZ2cgPSBHU1RfVklERU9fQUdHUkVHQVRPUiAobWl4KTsKICAgR3N0R0xNaXhlckNsYXNzICptaXhfY2xhc3MgPSBHU1RfR0xfTUlYRVJfR0VUX0NMQVNTIChtaXgpOwogICBHc3RHTE1peGVyUHJpdmF0ZSAqcHJpdiA9IG1peC0+cHJpdjsKQEAgLTYxNCw0NyArNjUyLDkgQEAKIAogICBvdXRfdGV4ID0gKihndWludCAqKSBvdXRfZnJhbWUuZGF0YVswXTsKIAotICBHU1RfT0JKRUNUX0xPQ0sgKG1peCk7Ci0gIHdhbGsgPSBlbGVtZW50LT5zaW5rcGFkczsKLQotICBpID0gbWl4LT5mcmFtZXMtPmxlbjsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKG1peC0+ZnJhbWVzLCBlbGVtZW50LT5udW1zaW5rcGFkcyk7Ci0gIGZvciAoOyBpIDwgZWxlbWVudC0+bnVtc2lua3BhZHM7IGkrKykKLSAgICBtaXgtPmZyYW1lcy0+cGRhdGFbaV0gPSBnX3NsaWNlX25ldzAgKEdzdEdMTWl4ZXJGcmFtZURhdGEpOwotICB3aGlsZSAod2FsaykgewotICAgIEdzdEdMTWl4ZXJQYWQgKnBhZCA9IEdTVF9HTF9NSVhFUl9QQUQgKHdhbGstPmRhdGEpOwotICAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqdmFnZ3BhZCA9IHdhbGstPmRhdGE7Ci0gICAgR3N0R0xNaXhlckZyYW1lRGF0YSAqZnJhbWU7Ci0KLSAgICBmcmFtZSA9IGdfcHRyX2FycmF5X2luZGV4IChtaXgtPmZyYW1lcywgYXJyYXlfaW5kZXgpOwotICAgIGZyYW1lLT5wYWQgPSBwYWQ7Ci0gICAgZnJhbWUtPnRleHR1cmUgPSAwOwotCi0gICAgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKTsKLQotICAgIGlmICh2YWdncGFkLT5idWZmZXIgIT0gTlVMTCkgewotICAgICAgR3N0VmlkZW9JbmZvIGdsX2luZm87Ci0gICAgICBHc3RWaWRlb0ZyYW1lIGdsX2ZyYW1lOwotICAgICAgR3N0R0xTeW5jTWV0YSAqc3luY19tZXRhOwotCi0gICAgICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmZ2xfaW5mbywKLSAgICAgICAgICBHU1RfVklERU9fRk9STUFUX1JHQkEsCi0gICAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZ2YWdncGFkLT5pbmZvKSwKLSAgICAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZ2YWdncGFkLT5pbmZvKSk7Ci0KLSAgICAgIHN5bmNfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YSAodmFnZ3BhZC0+YnVmZmVyKTsKLSAgICAgIGlmIChzeW5jX21ldGEpCi0gICAgICAgIGdzdF9nbF9zeW5jX21ldGFfd2FpdCAoc3luY19tZXRhLCBHU1RfR0xfQkFTRV9NSVhFUiAobWl4KS0+Y29udGV4dCk7Ci0KLSAgICAgIGlmIChnc3RfdmlkZW9fZnJhbWVfbWFwICgmZ2xfZnJhbWUsICZnbF9pbmZvLCB2YWdncGFkLT5idWZmZXIsCi0gICAgICAgICAgICAgIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSB7Ci0gICAgICAgIGZyYW1lLT50ZXh0dXJlID0gKihndWludCAqKSBnbF9mcmFtZS5kYXRhWzBdOwotICAgICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZnbF9mcmFtZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgKythcnJheV9pbmRleDsKLSAgfQorICBpZiAoIWdzdF9hZ2dyZWdhdG9yX2l0ZXJhdGVfc2lua3BhZHMgKEdTVF9BR0dSRUdBVE9SIChtaXgpLAorICAgICAgICAgIChHc3RBZ2dyZWdhdG9yUGFkRm9yZWFjaEZ1bmMpIF91cGxvYWRfZnJhbWVzLCBOVUxMKSkKKyAgICByZXR1cm4gRkFMU0U7CiAKICAgZ19tdXRleF9sb2NrICgmcHJpdi0+Z2xfcmVzb3VyY2VfbG9jayk7CiAgIGlmICghcHJpdi0+Z2xfcmVzb3VyY2VfcmVhZHkpCkBAIC02NjgsMTMgKzY2OCwxMSBAQAogICAgIGdvdG8gb3V0OwogICB9CiAKLSAgbWl4X2NsYXNzLT5wcm9jZXNzX3RleHR1cmVzIChtaXgsIG1peC0+ZnJhbWVzLCBvdXRfdGV4KTsKKyAgbWl4X2NsYXNzLT5wcm9jZXNzX3RleHR1cmVzIChtaXgsIG91dF90ZXgpOwogCiAgIGdfbXV0ZXhfdW5sb2NrICgmcHJpdi0+Z2xfcmVzb3VyY2VfbG9jayk7CiAKIG91dDoKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKG1peCk7Ci0KICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmb3V0X2ZyYW1lKTsKIAogICByZXR1cm4gcmVzOwpAQCAtNjgzLDMxICs2ODEsOSBAQAogc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfbWl4ZXJfcHJvY2Vzc19idWZmZXJzIChHc3RHTE1peGVyICogbWl4LCBHc3RCdWZmZXIgKiBvdXRidWYpCiB7Ci0gIEdMaXN0ICp3YWxrOwotICBndWludCBpLCBhcnJheV9pbmRleCA9IDA7Ci0gIEdzdEVsZW1lbnQgKmVsZW1lbnQgPSBHU1RfRUxFTUVOVCAobWl4KTsKICAgR3N0R0xNaXhlckNsYXNzICptaXhfY2xhc3MgPSBHU1RfR0xfTUlYRVJfR0VUX0NMQVNTIChtaXgpOwogCi0gIEdTVF9PQkpFQ1RfTE9DSyAobWl4KTsKLSAgd2FsayA9IEdTVF9FTEVNRU5UIChtaXgpLT5zaW5rcGFkczsKLSAgaSA9IG1peC0+ZnJhbWVzLT5sZW47Ci0gIGdfcHRyX2FycmF5X3NldF9zaXplIChtaXgtPmZyYW1lcywgZWxlbWVudC0+bnVtc2lua3BhZHMpOwotICBmb3IgKDsgaSA8IGVsZW1lbnQtPm51bXNpbmtwYWRzOyBpKyspCi0gICAgbWl4LT5mcmFtZXMtPnBkYXRhW2ldID0gZ19zbGljZV9uZXcwIChHc3RHTE1peGVyRnJhbWVEYXRhKTsKLSAgd2hpbGUgKHdhbGspIHsgICAgICAgICAgICAgICAgLyogV2Ugd2FsayB3aXRoIHRoaXMgbGlzdCBiZWNhdXNlIGl0J3Mgb3JkZXJlZCAqLwotICAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqdmFnZ3BhZCA9IHdhbGstPmRhdGE7Ci0KLSAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwotCi0gICAgaWYgKHZhZ2dwYWQtPmJ1ZmZlciAhPSBOVUxMKSB7Ci0gICAgICAvKiBwdXQgYnVmZmVyIGludG8gYXJyYXkgKi8KLSAgICAgIG1peC0+YXJyYXlfYnVmZmVycy0+cGRhdGFbYXJyYXlfaW5kZXhdID0gdmFnZ3BhZC0+YnVmZmVyOwotICAgIH0KLSAgICArK2FycmF5X2luZGV4OwotICB9Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChtaXgpOwotCi0gIHJldHVybiBtaXhfY2xhc3MtPnByb2Nlc3NfYnVmZmVycyAobWl4LCBtaXgtPmFycmF5X2J1ZmZlcnMsIG91dGJ1Zik7CisgIHJldHVybiBtaXhfY2xhc3MtPnByb2Nlc3NfYnVmZmVycyAobWl4LCBvdXRidWYpOwogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgpAQCAtNzUzLDMyICs3MjksOSBAQAogICB9CiB9CiAKLXN0YXRpYyB2b2lkCi1fZnJlZV9nbG1peGVyX2ZyYW1lX2RhdGEgKEdzdEdMTWl4ZXJGcmFtZURhdGEgKiBmcmFtZSkKLXsKLSAgZ19zbGljZV9mcmVlMSAoc2l6ZW9mIChHc3RHTE1peGVyRnJhbWVEYXRhKSwgZnJhbWUpOwotfQotCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9taXhlcl9zdGFydCAoR3N0QWdncmVnYXRvciAqIGFnZykKIHsKLSAgZ3VpbnQgaTsKLSAgR3N0R0xNaXhlciAqbWl4ID0gR1NUX0dMX01JWEVSIChhZ2cpOwotICBHc3RFbGVtZW50ICplbGVtZW50ID0gR1NUX0VMRU1FTlQgKGFnZyk7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChtaXgpOwotICBtaXgtPmFycmF5X2J1ZmZlcnMgPSBnX3B0cl9hcnJheV9uZXdfZnVsbCAoZWxlbWVudC0+bnVtc2lua3BhZHMsIE5VTEwpOwotICBtaXgtPmZyYW1lcyA9IGdfcHRyX2FycmF5X25ld19mdWxsIChlbGVtZW50LT5udW1zaW5rcGFkcywKLSAgICAgIChHRGVzdHJveU5vdGlmeSkgX2ZyZWVfZ2xtaXhlcl9mcmFtZV9kYXRhKTsKLQotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAobWl4LT5hcnJheV9idWZmZXJzLCBlbGVtZW50LT5udW1zaW5rcGFkcyk7Ci0gIGdfcHRyX2FycmF5X3NldF9zaXplIChtaXgtPmZyYW1lcywgZWxlbWVudC0+bnVtc2lua3BhZHMpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBlbGVtZW50LT5udW1zaW5rcGFkczsgaSsrKQotICAgIG1peC0+ZnJhbWVzLT5wZGF0YVtpXSA9IGdfc2xpY2VfbmV3MCAoR3N0R0xNaXhlckZyYW1lRGF0YSk7Ci0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKG1peCk7Ci0KICAgcmV0dXJuIEdTVF9BR0dSRUdBVE9SX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zdGFydCAoYWdnKTsKIH0KIApAQCAtNzg5LDEzICs3NDIsNiBAQAogICBHc3RHTE1peGVyQ2xhc3MgKm1peGVyX2NsYXNzID0gR1NUX0dMX01JWEVSX0dFVF9DTEFTUyAobWl4KTsKICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gR1NUX0dMX0JBU0VfTUlYRVIgKG1peCktPmNvbnRleHQ7CiAKLSAgR1NUX09CSkVDVF9MT0NLIChhZ2cpOwotICBnX3B0cl9hcnJheV9mcmVlIChtaXgtPmZyYW1lcywgVFJVRSk7Ci0gIG1peC0+ZnJhbWVzID0gTlVMTDsKLSAgZ19wdHJfYXJyYXlfZnJlZSAobWl4LT5hcnJheV9idWZmZXJzLCBUUlVFKTsKLSAgbWl4LT5hcnJheV9idWZmZXJzID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFnZyk7Ci0KICAgaWYgKG1peGVyX2NsYXNzLT5yZXNldCkKICAgICBtaXhlcl9jbGFzcy0+cmVzZXQgKG1peCk7CiAgIGlmIChtaXgtPmZibykgewpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsbWl4ZXIuaCBiL2V4dC9nbC9nc3RnbG1peGVyLmgKaW5kZXggMDFlZWQzNC4uODE5NzZhNyAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsbWl4ZXIuaAorKysgYi9leHQvZ2wvZ3N0Z2xtaXhlci5oCkBAIC0zMSw3ICszMSw2IEBACiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xNaXhlciBHc3RHTE1peGVyOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMTWl4ZXJDbGFzcyBHc3RHTE1peGVyQ2xhc3M7CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xNaXhlclByaXZhdGUgR3N0R0xNaXhlclByaXZhdGU7Ci10eXBlZGVmIHN0cnVjdCBfR3N0R0xNaXhlckZyYW1lRGF0YSBHc3RHTE1peGVyRnJhbWVEYXRhOwogCiAjZGVmaW5lIEdTVF9UWVBFX0dMX01JWEVSX1BBRCAoZ3N0X2dsX21peGVyX3BhZF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfTUlYRVJfUEFEKG9iaikgXApAQCAtNTIsNiArNTEsOCBAQAogc3RydWN0IF9Hc3RHTE1peGVyUGFkCiB7CiAgIEdzdEdMQmFzZU1peGVyUGFkIHBhcmVudDsKKworICBndWludCBjdXJyZW50X3RleHR1cmU7CiB9OwogCiBzdHJ1Y3QgX0dzdEdMTWl4ZXJQYWRDbGFzcwpAQCAtNzYsMTggKzc3LDEzIEBACiB0eXBlZGVmIGdib29sZWFuICgqR3N0R0xNaXhlclNldENhcHMpIChHc3RHTE1peGVyKiBtaXhlciwKICAgR3N0Q2Fwcyogb3V0Y2Fwcyk7CiB0eXBlZGVmIHZvaWQgKCpHc3RHTE1peGVyUmVzZXQpIChHc3RHTE1peGVyICptaXhlcik7Ci10eXBlZGVmIGdib29sZWFuICgqR3N0R0xNaXhlclByb2Nlc3NGdW5jKSAoR3N0R0xNaXhlciAqbWl4LAotICBHUHRyQXJyYXkgKmJ1ZmZlcnMsIEdzdEJ1ZmZlciAqb3V0YnVmKTsKLXR5cGVkZWYgZ2Jvb2xlYW4gKCpHc3RHTE1peGVyUHJvY2Vzc1RleHR1cmVzKSAoR3N0R0xNaXhlciAqbWl4LAotICBHUHRyQXJyYXkgKmZyYW1lcywgZ3VpbnQgb3V0X3RleCk7Cit0eXBlZGVmIGdib29sZWFuICgqR3N0R0xNaXhlclByb2Nlc3NGdW5jKSAoR3N0R0xNaXhlciAqbWl4LCBHc3RCdWZmZXIgKm91dGJ1Zik7Cit0eXBlZGVmIGdib29sZWFuICgqR3N0R0xNaXhlclByb2Nlc3NUZXh0dXJlcykgKEdzdEdMTWl4ZXIgKm1peCwgZ3VpbnQgb3V0X3RleCk7CiAKIHN0cnVjdCBfR3N0R0xNaXhlcgogewogICBHc3RHTEJhc2VNaXhlciB2YWdncmVnYXRvcjsKIAotICBHUHRyQXJyYXkgKmFycmF5X2J1ZmZlcnM7Ci0gIEdQdHJBcnJheSAqZnJhbWVzOwotCiAgIEdMdWludCBmYm87CiAgIEdMdWludCBkZXB0aGJ1ZmZlcjsKIApAQCAtMTA2LDEyICsxMDIsNiBAQAogICBHc3RHTE1peGVyUHJvY2Vzc1RleHR1cmVzIHByb2Nlc3NfdGV4dHVyZXM7CiB9OwogCi1zdHJ1Y3QgX0dzdEdMTWl4ZXJGcmFtZURhdGEKLXsKLSAgR3N0R0xNaXhlclBhZCAqcGFkOwotICBndWludCB0ZXh0dXJlOwotfTsKLQogR1R5cGUgZ3N0X2dsX21peGVyX2dldF90eXBlKHZvaWQpOwogCiBnYm9vbGVhbiBnc3RfZ2xfbWl4ZXJfcHJvY2Vzc190ZXh0dXJlcyAoR3N0R0xNaXhlciAqIG1peCwgR3N0QnVmZmVyICogb3V0YnVmKTsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbG1peGVyYmluLmMgYi9leHQvZ2wvZ3N0Z2xtaXhlcmJpbi5jCmluZGV4IGM2NDg4YjUuLjZmODNmODIgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbG1peGVyYmluLmMKKysrIGIvZXh0L2dsL2dzdGdsbWl4ZXJiaW4uYwpAQCAtNDU4LDcgKzQ1OCw3IEBACiAgICAgc3RydWN0IGlucHV0X2NoYWluICpjaGFpbiA9IGwtPmRhdGE7CiAgICAgaWYgKEdTVF9QQUQgKGNoYWluLT5naG9zdF9wYWQpID09IHBhZCkgewogICAgICAgc2VsZi0+cHJpdi0+aW5wdXRfY2hhaW5zID0KLSAgICAgICAgICBnX2xpc3RfcmVtb3ZlX2xpbmsgKHNlbGYtPnByaXYtPmlucHV0X2NoYWlucywgbCk7CisgICAgICAgICAgZ19saXN0X2RlbGV0ZV9saW5rIChzZWxmLT5wcml2LT5pbnB1dF9jaGFpbnMsIGwpOwogICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGVsZW1lbnQpOwogCiAgICAgICBfZnJlZV9pbnB1dF9jaGFpbiAoY2hhaW4pOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsbW9zYWljLmMgYi9leHQvZ2wvZ3N0Z2xtb3NhaWMuYwppbmRleCAwYTk4MzQxLi4zNzdmNzE4IDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xtb3NhaWMuYworKysgYi9leHQvZ2wvZ3N0Z2xtb3NhaWMuYwpAQCAtNzAsNyArNzAsNyBAQAogICAgIEdzdENhcHMgKiBvdXRjYXBzKTsKIAogc3RhdGljIGdib29sZWFuIGdzdF9nbF9tb3NhaWNfcHJvY2Vzc190ZXh0dXJlcyAoR3N0R0xNaXhlciAqIG1peGVyLAotICAgIEdQdHJBcnJheSAqIGZyYW1lcywgZ3VpbnQgb3V0X3RleCk7CisgICAgZ3VpbnQgb3V0X3RleCk7CiBzdGF0aWMgdm9pZCBnc3RfZ2xfbW9zYWljX2NhbGxiYWNrIChncG9pbnRlciBzdHVmZik7CiAKIC8vdmVydGV4IHNvdXJjZQpAQCAtMTQyLDcgKzE0Miw2IEBACiBnc3RfZ2xfbW9zYWljX2luaXQgKEdzdEdMTW9zYWljICogbW9zYWljKQogewogICBtb3NhaWMtPnNoYWRlciA9IE5VTEw7Ci0gIG1vc2FpYy0+aW5wdXRfZnJhbWVzID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE3Niw4ICsxNzUsNiBAQAogewogICBHc3RHTE1vc2FpYyAqbW9zYWljID0gR1NUX0dMX01PU0FJQyAobWl4ZXIpOwogCi0gIG1vc2FpYy0+aW5wdXRfZnJhbWVzID0gTlVMTDsKLQogICAvL2Jsb2NraW5nIGNhbGwsIHdhaXQgdGhlIG9wZW5nbCB0aHJlYWQgaGFzIGRlc3Ryb3llZCB0aGUgc2hhZGVyCiAgIGlmIChtb3NhaWMtPnNoYWRlcikKICAgICBnc3RfZ2xfY29udGV4dF9kZWxfc2hhZGVyIChHU1RfR0xfQkFTRV9NSVhFUiAobWl4ZXIpLT5jb250ZXh0LApAQCAtMTk2LDEzICsxOTMsMTAgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfbW9zYWljX3Byb2Nlc3NfdGV4dHVyZXMgKEdzdEdMTWl4ZXIgKiBtaXgsIEdQdHJBcnJheSAqIGZyYW1lcywKLSAgICBndWludCBvdXRfdGV4KQorZ3N0X2dsX21vc2FpY19wcm9jZXNzX3RleHR1cmVzIChHc3RHTE1peGVyICogbWl4LCBndWludCBvdXRfdGV4KQogewogICBHc3RHTE1vc2FpYyAqbW9zYWljID0gR1NUX0dMX01PU0FJQyAobWl4KTsKIAotICBtb3NhaWMtPmlucHV0X2ZyYW1lcyA9IGZyYW1lczsKLQogICAvL2Jsb2NraW5nIGNhbGwsIHVzZSBhIEZCTwogICBnc3RfZ2xfY29udGV4dF91c2VfZmJvX3YyIChHU1RfR0xfQkFTRV9NSVhFUiAobWl4KS0+Y29udGV4dCwKICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmR1NUX1ZJREVPX0FHR1JFR0FUT1IgKG1peCktPmluZm8pLApAQCAtMjE5LDYgKzIxMyw3IEBACiAgIEdzdEdMTW9zYWljICptb3NhaWMgPSBHU1RfR0xfTU9TQUlDIChzdHVmZik7CiAgIEdzdEdMTWl4ZXIgKm1peGVyID0gR1NUX0dMX01JWEVSIChtb3NhaWMpOwogICBHc3RHTEZ1bmNzICpnbCA9IEdTVF9HTF9CQVNFX01JWEVSIChtaXhlciktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgR0xpc3QgKndhbGs7CiAKICAgc3RhdGljIEdMZmxvYXQgeHJvdCA9IDA7CiAgIHN0YXRpYyBHTGZsb2F0IHlyb3QgPSAwOwpAQCAtMjU1LDggKzI1MCwxMCBAQAogICBhdHRyX3RleHR1cmVfbG9jID0KICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAobW9zYWljLT5zaGFkZXIsICJhX3RleENvb3JkIik7CiAKLSAgd2hpbGUgKGNvdW50IDwgbW9zYWljLT5pbnB1dF9mcmFtZXMtPmxlbiAmJiBjb3VudCA8IDYpIHsKLSAgICBHc3RHTE1peGVyRnJhbWVEYXRhICpmcmFtZTsKKyAgR1NUX09CSkVDVF9MT0NLIChtb3NhaWMpOworICB3YWxrID0gR1NUX0VMRU1FTlQgKG1vc2FpYyktPnNpbmtwYWRzOworICB3aGlsZSAod2FsaykgeworICAgIEdzdEdMTWl4ZXJQYWQgKnBhZCA9IHdhbGstPmRhdGE7CiAgICAgLyogKklOREVOVC1PRkYqICovCiAgICAgZ2Zsb2F0IHZfdmVydGljZXNbXSA9IHsKICAgICAgIC8qIGZyb250IGZhY2UgKi8KQEAgLTI5NCwyMSArMjkxLDE1IEBACiAgICAgZ3VpbnQgaW5fdGV4OwogICAgIGd1aW50IHdpZHRoLCBoZWlnaHQ7CiAKLSAgICBmcmFtZSA9IGdfcHRyX2FycmF5X2luZGV4IChtb3NhaWMtPmlucHV0X2ZyYW1lcywgY291bnQpOwotICAgIGlmICghZnJhbWUpIHsKLSAgICAgIEdTVF9ERUJVRyAoInNraXBwaW5nIHRleHR1cmUsIG51bGwgZnJhbWUiKTsKLSAgICAgIGNvdW50Kys7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgaW5fdGV4ID0gZnJhbWUtPnRleHR1cmU7Ci0gICAgd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJkdTVF9WSURFT19BR0dSRUdBVE9SX1BBRCAoZnJhbWUtPnBhZCktPmluZm8pOwotICAgIGhlaWdodCA9Ci0gICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJkdTVF9WSURFT19BR0dSRUdBVE9SX1BBRCAoZnJhbWUtPnBhZCktPmluZm8pOworICAgIGluX3RleCA9IHBhZC0+Y3VycmVudF90ZXh0dXJlOworICAgIHdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZHU1RfVklERU9fQUdHUkVHQVRPUl9QQUQgKHBhZCktPmluZm8pOworICAgIGhlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJkdTVF9WSURFT19BR0dSRUdBVE9SX1BBRCAocGFkKS0+aW5mbyk7CiAKICAgICBpZiAoIWluX3RleCB8fCB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKSB7Ci0gICAgICBHU1RfREVCVUcgKCJza2lwcGluZyB0ZXh0dXJlOiV1IGZyYW1lOiVwIHdpZHRoOiV1IGhlaWdodCAldSIsCi0gICAgICAgICAgaW5fdGV4LCBmcmFtZSwgd2lkdGgsIGhlaWdodCk7CisgICAgICBHU1RfREVCVUcgKCJza2lwcGluZyB0ZXh0dXJlOiV1IHBhZDolcCB3aWR0aDoldSBoZWlnaHQgJXUiLAorICAgICAgICAgIGluX3RleCwgcGFkLCB3aWR0aCwgaGVpZ2h0KTsKICAgICAgIGNvdW50Kys7CisgICAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwogICAgICAgY29udGludWU7CiAgICAgfQogCkBAIC0zMzUsNyArMzI2LDEwIEBACiAgICAgZ2wtPkRyYXdFbGVtZW50cyAoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9TSE9SVCwgaW5kaWNlcyk7CiAKICAgICArK2NvdW50OworCisgICAgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKTsKICAgfQorICBHU1RfT0JKRUNUX1VOTE9DSyAobW9zYWljKTsKIAogICBnbC0+RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IChhdHRyX3Bvc2l0aW9uX2xvYyk7CiAgIGdsLT5EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgKGF0dHJfdGV4dHVyZV9sb2MpOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsbW9zYWljLmggYi9leHQvZ2wvZ3N0Z2xtb3NhaWMuaAppbmRleCA0OWM5OWU3Li5lMGIzNDBjIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xtb3NhaWMuaAorKysgYi9leHQvZ2wvZ3N0Z2xtb3NhaWMuaApAQCAtNDAsNyArNDAsNiBAQAogICAgIEdzdEdMTWl4ZXIgbWl4ZXI7CiAKICAgICBHc3RHTFNoYWRlciAqc2hhZGVyOwotICAgIEdQdHJBcnJheSAqaW5wdXRfZnJhbWVzOwogfTsKIAogc3RydWN0IF9Hc3RHTE1vc2FpY0NsYXNzCmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xvdmVybGF5LmMgYi9leHQvZ2wvZ3N0Z2xvdmVybGF5LmMKaW5kZXggY2EwN2Y4Yi4uZmE2YzZjMSAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsb3ZlcmxheS5jCisrKyBiL2V4dC9nbC9nc3RnbG92ZXJsYXkuYwpAQCAtMjc3LDggKzI3Nyw3IEBACiAKICAgc3dpdGNoIChwcm9wX2lkKSB7CiAgICAgY2FzZSBQUk9QX0xPQ0FUSU9OOgotICAgICAgaWYgKG92ZXJsYXktPmxvY2F0aW9uICE9IE5VTEwpCi0gICAgICAgIGdfZnJlZSAob3ZlcmxheS0+bG9jYXRpb24pOworICAgICAgZ19mcmVlIChvdmVybGF5LT5sb2NhdGlvbik7CiAgICAgICBvdmVybGF5LT5sb2NhdGlvbl9oYXNfY2hhbmdlZCA9IFRSVUU7CiAgICAgICBvdmVybGF5LT5sb2NhdGlvbiA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogICAgICAgYnJlYWs7CkBAIC02NjksNiArNjY4LDggQEAKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX292ZXJsYXlfbG9hZF9qcGVnIChHc3RHTE92ZXJsYXkgKiBvdmVybGF5LCBGSUxFICogZnApCiB7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqbWVtX2FsbG9jYXRvcjsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKICAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKICAgR3N0VmlkZW9BbGlnbm1lbnQgdl9hbGlnbjsKICAgR3N0TWFwSW5mbyBtYXBfaW5mbzsKQEAgLTY5Niw5ICs2OTcsMTcgQEAKICAgdl9hbGlnbi5zdHJpZGVfYWxpZ25bMF0gPSAzMiAtIDE7CiAgIGdzdF92aWRlb19pbmZvX2FsaWduICgmdl9pbmZvLCAmdl9hbGlnbik7CiAKKyAgbWVtX2FsbG9jYXRvciA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdAorICAgICAgKEdTVF9HTF9CQVNFX0ZJTFRFUiAob3ZlcmxheSktPmNvbnRleHQpKTsKKyAgcGFyYW1zID0KKyAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKEdTVF9HTF9CQVNFX0ZJTFRFUiAob3ZlcmxheSktPmNvbnRleHQsCisgICAgICBOVUxMLCAmdl9pbmZvLCAwLCAmdl9hbGlnbiwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKTsKICAgb3ZlcmxheS0+aW1hZ2VfbWVtb3J5ID0gKEdzdEdMTWVtb3J5ICopCi0gICAgICBnc3RfZ2xfbWVtb3J5X2FsbG9jIChHU1RfR0xfQkFTRV9GSUxURVIgKG92ZXJsYXkpLT5jb250ZXh0LAotICAgICAgTlVMTCwgJnZfaW5mbywgMCwgJnZfYWxpZ24pOworICAgICAgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChtZW1fYWxsb2NhdG9yLAorICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3Rfb2JqZWN0X3VucmVmIChtZW1fYWxsb2NhdG9yKTsKIAogICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIG92ZXJsYXktPmltYWdlX21lbW9yeSwgJm1hcF9pbmZvLAogICAgICAgICAgIEdTVF9NQVBfV1JJVEUpKSB7CkBAIC03MjEsNiArNzMwLDggQEAKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX292ZXJsYXlfbG9hZF9wbmcgKEdzdEdMT3ZlcmxheSAqIG92ZXJsYXksIEZJTEUgKiBmcCkKIHsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICptZW1fYWxsb2NhdG9yOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOwogICBHc3RWaWRlb0luZm8gdl9pbmZvOwogICBHc3RNYXBJbmZvIG1hcF9pbmZvOwogCkBAIC04MDEsOSArODEyLDE3IEBACiAgIG92ZXJsYXktPmltYWdlX2hlaWdodCA9IGhlaWdodDsKIAogICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmdl9pbmZvLCBHU1RfVklERU9fRk9STUFUX1JHQkEsIHdpZHRoLCBoZWlnaHQpOworICBtZW1fYWxsb2NhdG9yID0KKyAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0CisgICAgICAoR1NUX0dMX0JBU0VfRklMVEVSIChvdmVybGF5KS0+Y29udGV4dCkpOworICBwYXJhbXMgPQorICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoR1NUX0dMX0JBU0VfRklMVEVSIChvdmVybGF5KS0+Y29udGV4dCwKKyAgICAgIE5VTEwsICZ2X2luZm8sIDAsIE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CiAgIG92ZXJsYXktPmltYWdlX21lbW9yeSA9IChHc3RHTE1lbW9yeSAqKQotICAgICAgZ3N0X2dsX21lbW9yeV9hbGxvYyAoR1NUX0dMX0JBU0VfRklMVEVSIChvdmVybGF5KS0+Y29udGV4dCwKLSAgICAgIE5VTEwsICZ2X2luZm8sIDAsIE5VTEwpOworICAgICAgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChtZW1fYWxsb2NhdG9yLAorICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3Rfb2JqZWN0X3VucmVmIChtZW1fYWxsb2NhdG9yKTsKIAogICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIG92ZXJsYXktPmltYWdlX21lbW9yeSwgJm1hcF9pbmZvLAogICAgICAgICAgIEdTVF9NQVBfV1JJVEUpKSB7CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xzaW5rYmluLmMgYi9leHQvZ2wvZ3N0Z2xzaW5rYmluLmMKaW5kZXggY2FiNjE1Zi4uYzljNWE3MiAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsc2lua2Jpbi5jCisrKyBiL2V4dC9nbC9nc3RnbHNpbmtiaW4uYwpAQCAtNDIsNiArNDIsOCBAQAogICAgIGdwb2ludGVyIGdfaWZhY2VfZGF0YSk7CiBzdGF0aWMgdm9pZCBnc3RfZ2xfc2lua19iaW5fbmF2aWdhdGlvbl9pbnRlcmZhY2VfaW5pdCAoZ3BvaW50ZXIgZ19pZmFjZSwKICAgICBncG9pbnRlciBnX2lmYWNlX2RhdGEpOworc3RhdGljIHZvaWQgZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2VfaW5pdCAoZ3BvaW50ZXIgZ19pZmFjZSwKKyAgICBncG9pbnRlciBnX2lmYWNlX2RhdGEpOwogCiAjZGVmaW5lIERFRkFVTFRfU1lOQyAgICAgICAgICAgICAgICBUUlVFCiAjZGVmaW5lIERFRkFVTFRfTUFYX0xBVEVORVNTICAgICAgICAtMQpAQCAtNTQsNiArNTYsMTIgQEAKICNkZWZpbmUgREVGQVVMVF9USFJPVFRMRV9USU1FICAgICAgIDAKICNkZWZpbmUgREVGQVVMVF9NQVhfQklUUkFURSAgICAgICAgIDAKIAorLyogR3N0R0xDb2xvckJhbGFuY2UgcHJvcGVydGllcyAqLworI2RlZmluZSBERUZBVUxUX1BST1BfQ09OVFJBU1QgICAgICAgMS4wCisjZGVmaW5lIERFRkFVTFRfUFJPUF9CUklHSFRORVNTCSAgICAwLjAKKyNkZWZpbmUgREVGQVVMVF9QUk9QX0hVRSAgICAgICAgICAgIDAuMAorI2RlZmluZSBERUZBVUxUX1BST1BfU0FUVVJBVElPTgkgICAgMS4wCisKIGVudW0KIHsKICAgUFJPUF8wLApAQCAtNzAsNiArNzgsMTAgQEAKICAgUFJPUF9SRU5ERVJfREVMQVksCiAgIFBST1BfVEhST1RUTEVfVElNRSwKICAgUFJPUF9NQVhfQklUUkFURSwKKyAgUFJPUF9DT05UUkFTVCwKKyAgUFJPUF9CUklHSFRORVNTLAorICBQUk9QX0hVRSwKKyAgUFJPUF9TQVRVUkFUSU9OLAogfTsKIAogZW51bQpAQCAtODcsNiArOTksOCBAQAogICAgICAgICBnc3RfZ2xfc2lua19iaW5fdmlkZW9fb3ZlcmxheV9pbml0KTsKICAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX05BVklHQVRJT04sCiAgICAgICAgIGdzdF9nbF9zaW5rX2Jpbl9uYXZpZ2F0aW9uX2ludGVyZmFjZV9pbml0KTsKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX0NPTE9SX0JBTEFOQ0UsCisgICAgICAgIGdzdF9nbF9zaW5rX2Jpbl9jb2xvcl9iYWxhbmNlX2luaXQpCiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9kZWJ1Z19nbF9zaW5rX2JpbiwgImdsaW1hZ2VzaW5rIiwgMCwKICAgICAgICAgIk9wZW5HTCBWaWRlbyBTaW5rIEJpbiIpKTsKIApAQCAtMTY2LDYgKzE4MCwyMyBAQAogICAgICAgICAgIEdfTUFYVUlOVDY0LCBERUZBVUxUX01BWF9CSVRSQVRFLAogICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwogCisgIC8qIGNvbG9yYmFsYW5jZSAqLworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTlRSQVNULAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImNvbnRyYXN0IiwgIkNvbnRyYXN0IiwgImNvbnRyYXN0IiwKKyAgICAgICAgICAwLjAsIDIuMCwgREVGQVVMVF9QUk9QX0NPTlRSQVNULAorICAgICAgICAgIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9CUklHSFRORVNTLAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImJyaWdodG5lc3MiLCAiQnJpZ2h0bmVzcyIsICJicmlnaHRuZXNzIiwgLTEuMCwgMS4wLAorICAgICAgICAgIERFRkFVTFRfUFJPUF9CUklHSFRORVNTLAorICAgICAgICAgIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9IVUUsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiaHVlIiwgIkh1ZSIsICJodWUiLCAtMS4wLCAxLjAsIERFRkFVTFRfUFJPUF9IVUUsCisgICAgICAgICAgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NBVFVSQVRJT04sCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgic2F0dXJhdGlvbiIsICJTYXR1cmF0aW9uIiwgInNhdHVyYXRpb24iLCAwLjAsIDIuMCwKKyAgICAgICAgICBERUZBVUxUX1BST1BfU0FUVVJBVElPTiwKKyAgICAgICAgICBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKICAgLyoqCiAgICAqIEdzdEdMU2lua0Jpbjo6Y3JlYXRlLWVsZW1lbnQ6CiAgICAqIEBvYmplY3Q6IHRoZSAjR3N0R0xTaW5rQmluCkBAIC0xOTgsMTEgKzIyOSwxNCBAQAogCiAgIHNlbGYtPnVwbG9hZCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsdXBsb2FkIiwgTlVMTCk7CiAgIHNlbGYtPmNvbnZlcnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJnbGNvbG9yY29udmVydCIsIE5VTEwpOworICBzZWxmLT5iYWxhbmNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ2xjb2xvcmJhbGFuY2UiLCBOVUxMKTsKIAogICByZXMgJj0gZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNlbGYpLCBzZWxmLT51cGxvYWQpOwogICByZXMgJj0gZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKHNlbGYpLCBzZWxmLT5jb252ZXJ0KTsKKyAgcmVzICY9IGdzdF9iaW5fYWRkIChHU1RfQklOIChzZWxmKSwgc2VsZi0+YmFsYW5jZSk7CiAKICAgcmVzICY9IGdzdF9lbGVtZW50X2xpbmtfcGFkcyAoc2VsZi0+dXBsb2FkLCAic3JjIiwgc2VsZi0+Y29udmVydCwgInNpbmsiKTsKKyAgcmVzICY9IGdzdF9lbGVtZW50X2xpbmtfcGFkcyAoc2VsZi0+Y29udmVydCwgInNyYyIsIHNlbGYtPmJhbGFuY2UsICJzaW5rIik7CiAKICAgcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHNlbGYtPnVwbG9hZCwgInNpbmsiKTsKICAgaWYgKCFwYWQpIHsKQEAgLTIxNCw2ICsyNDgsMTUgQEAKICAgICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOwogICB9CiAKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChzZWxmLT5iYWxhbmNlKSwKKyAgICAgIEdTVF9PQkpFQ1QgKHNlbGYpLCAiY29udHJhc3QiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChzZWxmLT5iYWxhbmNlKSwKKyAgICAgIEdTVF9PQkpFQ1QgKHNlbGYpLCAiYnJpZ2h0bmVzcyIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKHNlbGYtPmJhbGFuY2UpLAorICAgICAgR1NUX09CSkVDVCAoc2VsZiksICJodWUiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChzZWxmLT5iYWxhbmNlKSwKKyAgICAgIEdTVF9PQkpFQ1QgKHNlbGYpLCAic2F0dXJhdGlvbiIpOworCiAgIGlmICghcmVzKSB7CiAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAiRmFpbGVkIHRvIGFkZC9jb25uZWN0IHRoZSBuZWNlc3NhcnkgbWFjaGluZXJ5Iik7CiAgIH0KQEAgLTIyNyw3ICsyNzAsNyBAQAogICBnc3Rfb2JqZWN0X3NldF9uYW1lIChHU1RfT0JKRUNUIChzZWxmLT5zaW5rKSwgInNpbmsiKTsKICAgcmVzICY9IGdzdF9iaW5fYWRkIChHU1RfQklOIChzZWxmKSwgc2VsZi0+c2luayk7CiAKLSAgcmVzICY9IGdzdF9lbGVtZW50X2xpbmtfcGFkcyAoc2VsZi0+Y29udmVydCwgInNyYyIsIHNlbGYtPnNpbmssICJzaW5rIik7CisgIHJlcyAmPSBnc3RfZWxlbWVudF9saW5rX3BhZHMgKHNlbGYtPmJhbGFuY2UsICJzcmMiLCBzZWxmLT5zaW5rLCAic2luayIpOwogCiAgIGlmICghcmVzKQogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gbGluayBzaW5rIGVsZW1lbnQgaW50byB0aGUgcGlwZWxpbmUiKTsKQEAgLTI4MSw2ICszMjQsMTMgQEAKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIH0KKyAgICBjYXNlIFBST1BfQ09OVFJBU1Q6CisgICAgY2FzZSBQUk9QX0JSSUdIVE5FU1M6CisgICAgY2FzZSBQUk9QX0hVRToKKyAgICBjYXNlIFBST1BfU0FUVVJBVElPTjoKKyAgICAgIGlmIChzZWxmLT5iYWxhbmNlKQorICAgICAgICBnX29iamVjdF9zZXRfcHJvcGVydHkgKEdfT0JKRUNUIChzZWxmLT5iYWxhbmNlKSwgcHNwZWMtPm5hbWUsIHZhbHVlKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBpZiAoc2VsZi0+c2luaykKICAgICAgICAgZ19vYmplY3Rfc2V0X3Byb3BlcnR5IChHX09CSkVDVCAoc2VsZi0+c2luayksIHBzcGVjLT5uYW1lLCB2YWx1ZSk7CkBAIC0yOTgsNiArMzQ4LDEzIEBACiAgICAgY2FzZSBQUk9QX1NJTks6CiAgICAgICBnX3ZhbHVlX3NldF9vYmplY3QgKHZhbHVlLCBzZWxmLT5zaW5rKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9DT05UUkFTVDoKKyAgICBjYXNlIFBST1BfQlJJR0hUTkVTUzoKKyAgICBjYXNlIFBST1BfSFVFOgorICAgIGNhc2UgUFJPUF9TQVRVUkFUSU9OOgorICAgICAgaWYgKHNlbGYtPmJhbGFuY2UpCisgICAgICAgIGdfb2JqZWN0X2dldF9wcm9wZXJ0eSAoR19PQkpFQ1QgKHNlbGYtPmJhbGFuY2UpLCBwc3BlYy0+bmFtZSwgdmFsdWUpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGlmIChzZWxmLT5zaW5rKQogICAgICAgICBnX29iamVjdF9nZXRfcHJvcGVydHkgKEdfT0JKRUNUIChzZWxmLT5zaW5rKSwgcHNwZWMtPm5hbWUsIHZhbHVlKTsKQEAgLTQ1NCwzICs1MTEsODkgQEAKICAgaWZhY2UtPnNldF9yZW5kZXJfcmVjdGFuZ2xlID0gZ3N0X2dsX3NpbmtfYmluX292ZXJsYXlfc2V0X3JlbmRlcl9yZWN0YW5nbGU7CiAgIGlmYWNlLT5zZXRfd2luZG93X2hhbmRsZSA9IGdzdF9nbF9zaW5rX2Jpbl9vdmVybGF5X3NldF93aW5kb3dfaGFuZGxlOwogfQorCitzdGF0aWMgY29uc3QgR0xpc3QgKgorZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2VfbGlzdF9jaGFubmVscyAoR3N0Q29sb3JCYWxhbmNlICogYmFsYW5jZSkKK3sKKyAgR3N0R0xTaW5rQmluICpzZWxmID0gR1NUX0dMX1NJTktfQklOIChiYWxhbmNlKTsKKyAgR3N0Q29sb3JCYWxhbmNlICpiYWxhbmNlX2VsZW1lbnQgPSBOVUxMOworICBjb25zdCBHTGlzdCAqbGlzdCA9IE5VTEw7CisKKyAgYmFsYW5jZV9lbGVtZW50ID0KKyAgICAgIEdTVF9DT0xPUl9CQUxBTkNFIChnc3RfYmluX2dldF9ieV9pbnRlcmZhY2UgKEdTVF9CSU4gKHNlbGYpLAorICAgICAgICAgIEdTVF9UWVBFX0NPTE9SX0JBTEFOQ0UpKTsKKworICBpZiAoYmFsYW5jZV9lbGVtZW50KSB7CisgICAgbGlzdCA9IGdzdF9jb2xvcl9iYWxhbmNlX2xpc3RfY2hhbm5lbHMgKGJhbGFuY2VfZWxlbWVudCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoYmFsYW5jZV9lbGVtZW50KTsKKyAgfQorCisgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2Vfc2V0X3ZhbHVlIChHc3RDb2xvckJhbGFuY2UgKiBiYWxhbmNlLAorICAgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKiBjaGFubmVsLCBnaW50IHZhbHVlKQoreworICBHc3RHTFNpbmtCaW4gKnNlbGYgPSBHU1RfR0xfU0lOS19CSU4gKGJhbGFuY2UpOworICBHc3RDb2xvckJhbGFuY2UgKmJhbGFuY2VfZWxlbWVudCA9IE5VTEw7CisKKyAgYmFsYW5jZV9lbGVtZW50ID0KKyAgICAgIEdTVF9DT0xPUl9CQUxBTkNFIChnc3RfYmluX2dldF9ieV9pbnRlcmZhY2UgKEdTVF9CSU4gKHNlbGYpLAorICAgICAgICAgIEdTVF9UWVBFX0NPTE9SX0JBTEFOQ0UpKTsKKworICBpZiAoYmFsYW5jZV9lbGVtZW50KSB7CisgICAgZ3N0X2NvbG9yX2JhbGFuY2Vfc2V0X3ZhbHVlIChiYWxhbmNlX2VsZW1lbnQsIGNoYW5uZWwsIHZhbHVlKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChiYWxhbmNlX2VsZW1lbnQpOworICB9Cit9CisKK3N0YXRpYyBnaW50Citnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9nZXRfdmFsdWUgKEdzdENvbG9yQmFsYW5jZSAqIGJhbGFuY2UsCisgICAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqIGNoYW5uZWwpCit7CisgIEdzdEdMU2lua0JpbiAqc2VsZiA9IEdTVF9HTF9TSU5LX0JJTiAoYmFsYW5jZSk7CisgIEdzdENvbG9yQmFsYW5jZSAqYmFsYW5jZV9lbGVtZW50ID0gTlVMTDsKKyAgZ2ludCB2YWwgPSAwOworCisgIGJhbGFuY2VfZWxlbWVudCA9CisgICAgICBHU1RfQ09MT1JfQkFMQU5DRSAoZ3N0X2Jpbl9nZXRfYnlfaW50ZXJmYWNlIChHU1RfQklOIChzZWxmKSwKKyAgICAgICAgICBHU1RfVFlQRV9DT0xPUl9CQUxBTkNFKSk7CisKKyAgaWYgKGJhbGFuY2VfZWxlbWVudCkgeworICAgIHZhbCA9IGdzdF9jb2xvcl9iYWxhbmNlX2dldF92YWx1ZSAoYmFsYW5jZV9lbGVtZW50LCBjaGFubmVsKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChiYWxhbmNlX2VsZW1lbnQpOworICB9CisKKyAgcmV0dXJuIHZhbDsKK30KKworc3RhdGljIEdzdENvbG9yQmFsYW5jZVR5cGUKK2dzdF9nbF9zaW5rX2Jpbl9jb2xvcl9iYWxhbmNlX2dldF9iYWxhbmNlX3R5cGUgKEdzdENvbG9yQmFsYW5jZSAqIGJhbGFuY2UpCit7CisgIEdzdEdMU2lua0JpbiAqc2VsZiA9IEdTVF9HTF9TSU5LX0JJTiAoYmFsYW5jZSk7CisgIEdzdENvbG9yQmFsYW5jZSAqYmFsYW5jZV9lbGVtZW50ID0gTlVMTDsKKyAgR3N0Q29sb3JCYWxhbmNlVHlwZSB0eXBlID0gMDsKKworICBiYWxhbmNlX2VsZW1lbnQgPQorICAgICAgR1NUX0NPTE9SX0JBTEFOQ0UgKGdzdF9iaW5fZ2V0X2J5X2ludGVyZmFjZSAoR1NUX0JJTiAoc2VsZiksCisgICAgICAgICAgR1NUX1RZUEVfQ09MT1JfQkFMQU5DRSkpOworCisgIGlmIChiYWxhbmNlX2VsZW1lbnQpIHsKKyAgICB0eXBlID0gZ3N0X2NvbG9yX2JhbGFuY2VfZ2V0X2JhbGFuY2VfdHlwZSAoYmFsYW5jZV9lbGVtZW50KTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChiYWxhbmNlX2VsZW1lbnQpOworICB9CisKKyAgcmV0dXJuIHR5cGU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9pbml0IChncG9pbnRlciBnX2lmYWNlLCBncG9pbnRlciBnX2lmYWNlX2RhdGEpCit7CisgIEdzdENvbG9yQmFsYW5jZUludGVyZmFjZSAqaWZhY2UgPSAoR3N0Q29sb3JCYWxhbmNlSW50ZXJmYWNlICopIGdfaWZhY2U7CisKKyAgaWZhY2UtPmxpc3RfY2hhbm5lbHMgPSBnc3RfZ2xfc2lua19iaW5fY29sb3JfYmFsYW5jZV9saXN0X2NoYW5uZWxzOworICBpZmFjZS0+c2V0X3ZhbHVlID0gZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2Vfc2V0X3ZhbHVlOworICBpZmFjZS0+Z2V0X3ZhbHVlID0gZ3N0X2dsX3NpbmtfYmluX2NvbG9yX2JhbGFuY2VfZ2V0X3ZhbHVlOworICBpZmFjZS0+Z2V0X2JhbGFuY2VfdHlwZSA9IGdzdF9nbF9zaW5rX2Jpbl9jb2xvcl9iYWxhbmNlX2dldF9iYWxhbmNlX3R5cGU7Cit9CmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xzaW5rYmluLmggYi9leHQvZ2wvZ3N0Z2xzaW5rYmluLmgKaW5kZXggMWRiYjQwZC4uZjQ1MjlkMCAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsc2lua2Jpbi5oCisrKyBiL2V4dC9nbC9nc3RnbHNpbmtiaW4uaApAQCAtNTYsNiArNTYsNyBAQAogCiAgIEdzdEVsZW1lbnQgKnVwbG9hZDsKICAgR3N0RWxlbWVudCAqY29udmVydDsKKyAgR3N0RWxlbWVudCAqYmFsYW5jZTsKICAgR3N0RWxlbWVudCAqc2luazsKIH07CiAKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHN0ZXJlb21peC5jIGIvZXh0L2dsL2dzdGdsc3RlcmVvbWl4LmMKaW5kZXggYjg4MGQwNi4uZWQ2MDRiMiAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsc3RlcmVvbWl4LmMKKysrIGIvZXh0L2dsL2dzdGdsc3RlcmVvbWl4LmMKQEAgLTMwLDE1ICszMCwyNyBAQAogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsX3N0ZXJlb19taXhfZGVidWcKIEdTVF9ERUJVR19DQVRFR09SWSAoZ3N0X2dsX3N0ZXJlb19taXhfZGVidWcpOwogCitHX0RFRklORV9UWVBFIChHc3RHTFN0ZXJlb01peFBhZCwgZ3N0X2dsX3N0ZXJlb19taXhfcGFkLCBHU1RfVFlQRV9HTF9NSVhFUl9QQUQpOworCitzdGF0aWMgdm9pZAorZ3N0X2dsX3N0ZXJlb19taXhfcGFkX2NsYXNzX2luaXQgKEdzdEdMU3RlcmVvTWl4UGFkQ2xhc3MgKiBrbGFzcykKK3sKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9zdGVyZW9fbWl4X3BhZF9pbml0IChHc3RHTFN0ZXJlb01peFBhZCAqIHBhZCkKK3sKK30KKwogI2RlZmluZSBnc3RfZ2xfc3RlcmVvX21peF9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCiBHX0RFRklORV9UWVBFIChHc3RHTFN0ZXJlb01peCwgZ3N0X2dsX3N0ZXJlb19taXgsIEdTVF9UWVBFX0dMX01JWEVSKTsKIAotc3RhdGljIEdzdENhcHMgKl91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpOworc3RhdGljIEdzdENhcHMgKl91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMsCisgICAgR3N0Q2FwcyAqIGZpbHRlcik7CiBzdGF0aWMgZ2Jvb2xlYW4gX25lZ290aWF0ZWRfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmlkZW9hZ2dyZWdhdG9yLAogICAgIEdzdENhcHMgKiBjYXBzKTsKIGdib29sZWFuIGdzdF9nbF9zdGVyZW9fbWl4X21ha2Vfb3V0cHV0IChHc3RHTFN0ZXJlb01peCAqIG1peCk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX3N0ZXJlb19taXhfcHJvY2Vzc19mcmFtZXMgKEdzdEdMU3RlcmVvTWl4ICogbWl4ZXIsCi0gICAgR1B0ckFycmF5ICogaW5fZnJhbWVzKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfc3RlcmVvX21peF9wcm9jZXNzX2ZyYW1lcyAoR3N0R0xTdGVyZW9NaXggKiBtaXhlcik7CiAKICNkZWZpbmUgREVGQVVMVF9ET1dOTUlYIEdTVF9HTF9TVEVSRU9fRE9XTk1JWF9BTkFHTFlQSF9HUkVFTl9NQUdFTlRBX0RVQk9JUwogCkBAIC01OCw5ICs3MCwxMyBAQAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksCi0gICAgICAgICAgICAiUkdCQSIpICI7ICIKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsIgorICAgICAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIKKyAgICAgICAgIjsgIgogICAgICAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKICAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwKICAgICAgICAgICAgICJSR0JBIikKQEAgLTcwLDkgKzg2LDEzIEBACiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rXyV1IiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9SRVFVRVNULAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksCi0gICAgICAgICAgICAiUkdCQSIpICI7ICIKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsIgorICAgICAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIKKyAgICAgICAgIjsgIgogICAgICAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKICAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fR0xfVEVYVFVSRV9VUExPQURfTUVUQSwKICAgICAgICAgICAgICJSR0JBIikKQEAgLTEzNSw2ICsxNTUsNyBAQAogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua19mYWN0b3J5KSk7CiAKKyAgYWdnX2NsYXNzLT5zaW5rcGFkc190eXBlID0gR1NUX1RZUEVfR0xfU1RFUkVPX01JWF9QQUQ7CiAgIGFnZ19jbGFzcy0+c3RvcCA9IGdzdF9nbF9zdGVyZW9fbWl4X3N0b3A7CiAgIGFnZ19jbGFzcy0+c3RhcnQgPSBnc3RfZ2xfc3RlcmVvX21peF9zdGFydDsKICAgYWdnX2NsYXNzLT5zcmNfcXVlcnkgPSBnc3RfZ2xfc3RlcmVvX21peF9zcmNfcXVlcnk7CkBAIC0xNDUsNyArMTY2LDYgQEAKICAgdmlkZW9hZ2dyZWdhdG9yX2NsYXNzLT5nZXRfb3V0cHV0X2J1ZmZlciA9CiAgICAgICBnc3RfZ2xfc3RlcmVvX21peF9nZXRfb3V0cHV0X2J1ZmZlcjsKICAgdmlkZW9hZ2dyZWdhdG9yX2NsYXNzLT5maW5kX2Jlc3RfZm9ybWF0ID0gZ3N0X2dsX3N0ZXJlb19taXhfZmluZF9iZXN0X2Zvcm1hdDsKLSAgdmlkZW9hZ2dyZWdhdG9yX2NsYXNzLT5wcmVzZXJ2ZV91cGRhdGVfY2Fwc19yZXN1bHQgPSBUUlVFOwogCiAgIGJhc2VfbWl4X2NsYXNzLT5zdXBwb3J0ZWRfZ2xfYXBpID0gR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDM7CiB9CkBAIC0yNDIsMTAgKzI2Miw4IEBACiBnYm9vbGVhbgogZ3N0X2dsX3N0ZXJlb19taXhfbWFrZV9vdXRwdXQgKEdzdEdMU3RlcmVvTWl4ICogbWl4KQogewotICBndWludCBpOwogICBHTGlzdCAqd2FsazsKICAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7Ci0gIGd1aW50IGFycmF5X2luZGV4ID0gMDsKICAgR3N0RWxlbWVudCAqZWxlbWVudCA9IEdTVF9FTEVNRU5UIChtaXgpOwogICBnYm9vbGVhbiBtaXNzaW5nX2J1ZmZlciA9IEZBTFNFOwogCkBAIC0yNTMsMzMgKzI3MSwyMyBAQAogCiAgIEdTVF9PQkpFQ1RfTE9DSyAobWl4KTsKICAgd2FsayA9IGVsZW1lbnQtPnNpbmtwYWRzOwotCi0gIGkgPSBtaXgtPmZyYW1lcy0+bGVuOwotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAobWl4LT5mcmFtZXMsIGVsZW1lbnQtPm51bXNpbmtwYWRzKTsKLSAgZm9yICg7IGkgPCBlbGVtZW50LT5udW1zaW5rcGFkczsgaSsrKQotICAgIG1peC0+ZnJhbWVzLT5wZGF0YVtpXSA9IGdfc2xpY2VfbmV3MCAoR3N0R0xTdGVyZW9NaXhGcmFtZURhdGEpOwogICB3aGlsZSAod2FsaykgewotICAgIEdzdEdMTWl4ZXJQYWQgKnBhZCA9IEdTVF9HTF9NSVhFUl9QQUQgKHdhbGstPmRhdGEpOwogICAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqdmFnZ3BhZCA9IHdhbGstPmRhdGE7Ci0gICAgR3N0R0xTdGVyZW9NaXhGcmFtZURhdGEgKmZyYW1lOworICAgIEdzdEdMU3RlcmVvTWl4UGFkICpwYWQgPSB3YWxrLT5kYXRhOwogCiAgICAgR1NUX0xPR19PQkpFQ1QgKG1peCwgIkNoZWNraW5nIHBhZCAlIiBHU1RfUFRSX0ZPUk1BVCwgdmFnZ3BhZCk7CiAKLSAgICBmcmFtZSA9IGdfcHRyX2FycmF5X2luZGV4IChtaXgtPmZyYW1lcywgYXJyYXlfaW5kZXgpOwotICAgIGZyYW1lLT5iYXNlLnBhZCA9IHBhZDsKLSAgICBmcmFtZS0+YnVmID0gTlVMTDsKLQotICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7Ci0KICAgICBpZiAodmFnZ3BhZC0+YnVmZmVyICE9IE5VTEwpIHsKLSAgICAgIGZyYW1lLT5idWYgPSB2YWdncGFkLT5idWZmZXI7CisgICAgICBwYWQtPmN1cnJlbnRfYnVmZmVyID0gdmFnZ3BhZC0+YnVmZmVyOwogCi0gICAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJHb3QgYnVmZmVyICUiIEdTVF9QVFJfRk9STUFULCBmcmFtZS0+YnVmKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIkdvdCBidWZmZXIgJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICAgICAgcGFkLT5jdXJyZW50X2J1ZmZlcik7CiAgICAgfSBlbHNlIHsKICAgICAgIEdTVF9MT0dfT0JKRUNUIChtaXgsICJObyBidWZmZXIgb24gcGFkICUiIEdTVF9QVFJfRk9STUFULCB2YWdncGFkKTsKKyAgICAgIHBhZC0+Y3VycmVudF9idWZmZXIgPSBOVUxMOwogICAgICAgbWlzc2luZ19idWZmZXIgPSBUUlVFOwogICAgIH0KLSAgICArK2FycmF5X2luZGV4OworICAgIHdhbGsgPSBnX2xpc3RfbmV4dCAod2Fsayk7CiAgIH0KICAgaWYgKG1pc3NpbmdfYnVmZmVyKSB7CiAgICAgLyogV2UncmUgc3RpbGwgd2FpdGluZyBmb3IgYSBidWZmZXIgdG8gdHVybiB1cCBvbiBhdCBsZWFzdCBvbmUgaW5wdXQgKi8KQEAgLTI4OSw3ICsyOTcsNyBAQAogICB9CiAKICAgLyogQ29weSBHTCBtZW1vcnkgZnJvbSBlYWNoIGlucHV0IGZyYW1lIHRvIHRoZSBvdXRwdXQgKi8KLSAgaWYgKCFnc3RfZ2xfc3RlcmVvX21peF9wcm9jZXNzX2ZyYW1lcyAobWl4LCBtaXgtPmZyYW1lcykpIHsKKyAgaWYgKCFnc3RfZ2xfc3RlcmVvX21peF9wcm9jZXNzX2ZyYW1lcyAobWl4KSkgewogICAgIEdTVF9MT0dfT0JKRUNUIChtaXgsICJGYWlsZWQgdG8gcHJvY2VzcyBmcmFtZXMgdG8gb3V0cHV0Iik7CiAgICAgZ290byBvdXQ7CiAgIH0KQEAgLTM2Myw0MSArMzcxLDE4IEBACiAgIH0KIH0KIAotc3RhdGljIHZvaWQKLV9mcmVlX2dsbWl4ZXJfZnJhbWVfZGF0YSAoR3N0R0xTdGVyZW9NaXhGcmFtZURhdGEgKiBmcmFtZSkKLXsKLSAgaWYgKGZyYW1lID09IE5VTEwpCi0gICAgcmV0dXJuOwotICBpZiAoZnJhbWUtPmJ1ZikKLSAgICBnc3RfYnVmZmVyX3VucmVmIChmcmFtZS0+YnVmKTsKLSAgZ19zbGljZV9mcmVlMSAoc2l6ZW9mIChHc3RHTFN0ZXJlb01peEZyYW1lRGF0YSksIGZyYW1lKTsKLX0KLQogc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfc3RlcmVvX21peF9zdGFydCAoR3N0QWdncmVnYXRvciAqIGFnZykKIHsKLSAgZ3VpbnQgaTsKICAgR3N0R0xTdGVyZW9NaXggKm1peCA9IEdTVF9HTF9TVEVSRU9fTUlYIChhZ2cpOwotICBHc3RFbGVtZW50ICplbGVtZW50ID0gR1NUX0VMRU1FTlQgKGFnZyk7CiAKICAgaWYgKCFHU1RfQUdHUkVHQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3RhcnQgKGFnZykpCiAgICAgcmV0dXJuIEZBTFNFOwogCiAgIEdTVF9PQkpFQ1RfTE9DSyAobWl4KTsKLSAgbWl4LT5hcnJheV9idWZmZXJzID0gZ19wdHJfYXJyYXlfbmV3X2Z1bGwgKGVsZW1lbnQtPm51bXNpbmtwYWRzLAotICAgICAgKEdEZXN0cm95Tm90aWZ5KSBfZnJlZV9nbG1peGVyX2ZyYW1lX2RhdGEpOwotICBtaXgtPmZyYW1lcyA9IGdfcHRyX2FycmF5X25ld19mdWxsIChlbGVtZW50LT5udW1zaW5rcGFkcywgTlVMTCk7Ci0KLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKG1peC0+YXJyYXlfYnVmZmVycywgZWxlbWVudC0+bnVtc2lua3BhZHMpOwotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAobWl4LT5mcmFtZXMsIGVsZW1lbnQtPm51bXNpbmtwYWRzKTsKLQotICBmb3IgKGkgPSAwOyBpIDwgZWxlbWVudC0+bnVtc2lua3BhZHM7IGkrKykKLSAgICBtaXgtPmZyYW1lcy0+cGRhdGFbaV0gPSBnX3NsaWNlX25ldzAgKEdzdEdMU3RlcmVvTWl4RnJhbWVEYXRhKTsKLQogICBtaXgtPnZpZXdjb252ZXJ0ID0gZ3N0X2dsX3ZpZXdfY29udmVydF9uZXcgKCk7CiAgIGdfb2JqZWN0X3NldCAoR19PQkpFQ1QgKG1peC0+dmlld2NvbnZlcnQpLCAiZG93bm1peC1tb2RlIiwKICAgICAgIG1peC0+ZG93bm1peF9tb2RlLCBOVUxMKTsKLQogICBHU1RfT0JKRUNUX1VOTE9DSyAobWl4KTsKIAogICByZXR1cm4gVFJVRTsKQEAgLTQxMSwxMyArMzk2LDYgQEAKICAgaWYgKCFHU1RfQUdHUkVHQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+c3RvcCAoYWdnKSkKICAgICByZXR1cm4gRkFMU0U7CiAKLSAgR1NUX09CSkVDVF9MT0NLIChhZ2cpOwotICBnX3B0cl9hcnJheV9mcmVlIChtaXgtPmZyYW1lcywgVFJVRSk7Ci0gIG1peC0+ZnJhbWVzID0gTlVMTDsKLSAgZ19wdHJfYXJyYXlfZnJlZSAobWl4LT5hcnJheV9idWZmZXJzLCBUUlVFKTsKLSAgbWl4LT5hcnJheV9idWZmZXJzID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFnZyk7Ci0KICAgaWYgKG1peC0+dmlld2NvbnZlcnQpIHsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChtaXgtPnZpZXdjb252ZXJ0KTsKICAgICBtaXgtPnZpZXdjb252ZXJ0ID0gTlVMTDsKQEAgLTQ2Myw3ICs0NDEsNyBAQAogCiAvKiBSZXR1cm4gdGhlIHBvc3NpYmxlIG91dHB1dCBjYXBzIHdlIGRlY2lkZWQgaW4gZmluZF9iZXN0X2Zvcm1hdCgpICovCiBzdGF0aWMgR3N0Q2FwcyAqCi1fdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzKQorX3VwZGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIGZpbHRlcikKIHsKICAgR3N0R0xTdGVyZW9NaXggKm1peCA9IEdTVF9HTF9TVEVSRU9fTUlYICh2YWdnKTsKIApAQCAtNDc1LDYgKzQ1Myw3IEBACiBfbmVnb3RpYXRlZF9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcykKIHsKICAgR3N0R0xTdGVyZW9NaXggKm1peCA9IEdTVF9HTF9TVEVSRU9fTUlYICh2YWdnKTsKKyAgR3N0Q2FwcyAqaW5fY2FwczsKIAogICBHU1RfTE9HX09CSkVDVCAobWl4LCAiQ29uZmlndXJlZCBvdXRwdXQgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CiAKQEAgLTQ5MCw0MSArNDY5LDQ3IEBACiAgIC8qIFdlIGNhbiBjb25maWd1cmUgdGhlIHZpZXdfY29udmVydGVyIG5vdyAqLwogICBnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9jb250ZXh0IChtaXgtPnZpZXdjb252ZXJ0LAogICAgICAgR1NUX0dMX0JBU0VfTUlYRVIgKG1peCktPmNvbnRleHQpOwotICBnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9mb3JtYXQgKG1peC0+dmlld2NvbnZlcnQsICZtaXgtPm1peF9pbmZvLAotICAgICAgJm1peC0+b3V0X2luZm8pOworCisgIGluX2NhcHMgPSBnc3RfdmlkZW9faW5mb190b19jYXBzICgmbWl4LT5taXhfaW5mbyk7CisgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAoaW5fY2FwcywgMCwKKyAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpKTsKKyAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoaW5fY2FwcywgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORywKKyAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIsIE5VTEwpOworCisgIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2NhcHMgKG1peC0+dmlld2NvbnZlcnQsIGluX2NhcHMsIGNhcHMpOwogCiAgIHJldHVybiBUUlVFOwotCiB9CiAKKy8qIGNhbGxlZCB3aXRoIHRoZSBvYmplY3QgbG9jayBoZWxkICovCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9zdGVyZW9fbWl4X3Byb2Nlc3NfZnJhbWVzIChHc3RHTFN0ZXJlb01peCAqIG1peGVyLCBHUHRyQXJyYXkgKiBmcmFtZXMpCitnc3RfZ2xfc3RlcmVvX21peF9wcm9jZXNzX2ZyYW1lcyAoR3N0R0xTdGVyZW9NaXggKiBtaXhlcikKIHsKICAgR3N0VmlkZW9BZ2dyZWdhdG9yICp2YWdnID0gR1NUX1ZJREVPX0FHR1JFR0FUT1IgKG1peGVyKTsKICAgR3N0QnVmZmVyICpjb252ZXJ0ZWRfYnVmZmVyLCAqaW5idWY7CiAgIEdzdFZpZGVvSW5mbyAqb3V0X2luZm8gPSAmdmFnZy0+aW5mbzsKLSAgZ2ludCBjb3VudCA9IDA7CiAjaWZuZGVmIEdfRElTQUJMRV9BU1NFUlQKICAgZ2ludCBuOwogI2VuZGlmCiAgIGdpbnQgdiwgdmlld3M7CiAgIGdpbnQgdmFsaWRfdmlld3MgPSAwOworICBHTGlzdCAqd2FsazsKIAogICBpbmJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwotICB3aGlsZSAoY291bnQgPCBmcmFtZXMtPmxlbikgewotICAgIEdzdEdMU3RlcmVvTWl4RnJhbWVEYXRhICpmcmFtZTsKKyAgd2FsayA9IEdTVF9FTEVNRU5UIChtaXhlciktPnNpbmtwYWRzOworICB3aGlsZSAod2FsaykgeworICAgIEdzdEdMU3RlcmVvTWl4UGFkICpwYWQgPSB3YWxrLT5kYXRhOwogICAgIEdzdE1lbW9yeSAqaW5fbWVtOwogCi0gICAgZnJhbWUgPSBnX3B0cl9hcnJheV9pbmRleCAoZnJhbWVzLCBjb3VudCk7Ci0gICAgR1NUX0xPR19PQkpFQ1QgKG1peGVyLCAiSGFuZGxpbmcgZnJhbWUgJWQiLCBjb3VudCk7CisgICAgR1NUX0xPR19PQkpFQ1QgKG1peGVyLCAiSGFuZGxpbmcgZnJhbWUgJWQiLCB2YWxpZF92aWV3cyk7CiAKLSAgICBpZiAoIWZyYW1lKSB7CisgICAgaWYgKCFwYWQgfHwgIXBhZC0+Y3VycmVudF9idWZmZXIpIHsKICAgICAgIEdTVF9ERUJVRyAoInNraXBwaW5nIHRleHR1cmUsIG51bGwgZnJhbWUiKTsKLSAgICAgIGNvdW50Kys7CisgICAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwogICAgICAgY29udGludWU7CiAgICAgfQogCi0gICAgaW5fbWVtID0gZ3N0X2J1ZmZlcl9nZXRfbWVtb3J5IChmcmFtZS0+YnVmLCAwKTsKKyAgICBpbl9tZW0gPSBnc3RfYnVmZmVyX2dldF9tZW1vcnkgKHBhZC0+Y3VycmVudF9idWZmZXIsIDApOwogCiAgICAgR1NUX0xPR19PQkpFQ1QgKG1peGVyLAogICAgICAgICAiQXBwZW5kaW5nIG1lbW9yeSAlIiBHU1RfUFRSX0ZPUk1BVCAiIHRvIGludGVybWVkaWF0ZSBidWZmZXIiLCBpbl9tZW0pOwpAQCAtNTM3LDEwICs1MjIsMTAgQEAKICAgICAgKi8KICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGluYnVmLCBpbl9tZW0pOwogICAgIC8qIFVzZSBwYXJlbnQgYnVmZmVyIG1ldGEgdG8ga2VlcCBpbnB1dCBidWZmZXIgYWxpdmUgKi8KLSAgICBnc3RfYnVmZmVyX2FkZF9wYXJlbnRfYnVmZmVyX21ldGEgKGluYnVmLCBmcmFtZS0+YnVmKTsKKyAgICBnc3RfYnVmZmVyX2FkZF9wYXJlbnRfYnVmZmVyX21ldGEgKGluYnVmLCBwYWQtPmN1cnJlbnRfYnVmZmVyKTsKIAotICAgIGNvdW50Kys7CiAgICAgdmFsaWRfdmlld3MrKzsKKyAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwogICB9CiAKICAgaWYgKG1peGVyLT5taXhfaW5mby52aWV3cyAhPSB2YWxpZF92aWV3cykgewpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsc3RlcmVvbWl4LmggYi9leHQvZ2wvZ3N0Z2xzdGVyZW9taXguaAppbmRleCBkZWJlMzQ3Li5iMGYxYmQyIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xzdGVyZW9taXguaAorKysgYi9leHQvZ2wvZ3N0Z2xzdGVyZW9taXguaApAQCAtNDAsMTcgKzQwLDMxIEBACiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFN0ZXJlb01peCBHc3RHTFN0ZXJlb01peDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFN0ZXJlb01peENsYXNzIEdzdEdMU3RlcmVvTWl4Q2xhc3M7Ci10eXBlZGVmIHN0cnVjdCBfR3N0R0xTdGVyZW9NaXhGcmFtZURhdGEgR3N0R0xTdGVyZW9NaXhGcmFtZURhdGE7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xTdGVyZW9NaXhQYWQgR3N0R0xTdGVyZW9NaXhQYWQ7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xTdGVyZW9NaXhQYWRDbGFzcyBHc3RHTFN0ZXJlb01peFBhZENsYXNzOworCitzdHJ1Y3QgX0dzdEdMU3RlcmVvTWl4UGFkCit7CisgIEdzdEdMTWl4ZXJQYWQgbWl4ZXJfcGFkOworCisgIGdib29sZWFuIG1hcHBlZDsKKyAgR3N0QnVmZmVyICpjdXJyZW50X2J1ZmZlcjsKK307CisKK3N0cnVjdCBfR3N0R0xTdGVyZW9NaXhQYWRDbGFzcworeworICBHc3RHTE1peGVyUGFkQ2xhc3MgbWl4ZXJfcGFkX2NsYXNzOworfTsKKworI2RlZmluZSBHU1RfVFlQRV9HTF9TVEVSRU9fTUlYX1BBRCAoZ3N0X2dsX3N0ZXJlb19taXhfcGFkX2dldF90eXBlICgpKQorR1R5cGUgZ3N0X2dsX3N0ZXJlb19taXhfcGFkX2dldF90eXBlICh2b2lkKTsKKwogCiBzdHJ1Y3QgX0dzdEdMU3RlcmVvTWl4CiB7CiAgIEdzdEdMTWl4ZXIgbWl4ZXI7CiAKLSAgR1B0ckFycmF5ICphcnJheV9idWZmZXJzOwotICBHUHRyQXJyYXkgKmZyYW1lczsKLQogICBHTHVpbnQgb3V0X3RleF9pZDsKLSAgR3N0R0xEb3dubG9hZCAqZG93bmxvYWQ7CiAKICAgR3N0R0xWaWV3Q29udmVydCAqdmlld2NvbnZlcnQ7CiAgIEdzdEdMU3RlcmVvRG93bm1peCBkb3dubWl4X21vZGU7CkBAIC03MCwxMyArODQsNiBAQAogICAgIEdzdEdMTWl4ZXJDbGFzcyBtaXhlcl9jbGFzczsKIH07CiAKLXN0cnVjdCBfR3N0R0xTdGVyZW9NaXhGcmFtZURhdGEKLXsKLSAgR3N0R0xNaXhlckZyYW1lRGF0YSBiYXNlOwotICBnYm9vbGVhbiBtYXBwZWQ7Ci0gIEdzdEJ1ZmZlciAqYnVmOwotfTsKLQogR1R5cGUgZ3N0X2dsX3N0ZXJlb19taXhfZ2V0X3R5cGUodm9pZCk7CiAKIEdfRU5EX0RFQ0xTCmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2xzdGVyZW9zcGxpdC5jIGIvZXh0L2dsL2dzdGdsc3RlcmVvc3BsaXQuYwppbmRleCBlMTc1ZGY4Li5mYzkzYjFhIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2xzdGVyZW9zcGxpdC5jCisrKyBiL2V4dC9nbC9nc3RnbHN0ZXJlb3NwbGl0LmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgISBnbHN0ZXJlb3NwbGl0IG5hbWU9cyAhIHF1ZXVlICEgZ2xpbWFnZXNpbmsgcy4gISBxdWV1ZSAhIGdsaW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBnbHN0ZXJlb3NwbGl0IG5hbWU9cyAhIHF1ZXVlICEgZ2xpbWFnZXNpbmsgcy4gISBxdWV1ZSAhIGdsaW1hZ2VzaW5rCiAgKiBdfAogICogRkJPIChGcmFtZSBCdWZmZXIgT2JqZWN0KSBhbmQgR0xTTCAoT3BlbkdMIFNoYWRpbmcgTGFuZ3VhZ2UpIGFyZSByZXF1aXJlZC4KICAqIDwvcmVmc2VjdDI+CkBAIC0yMTAsNiArMjEwLDkgQEAKIAogICBpZiAoc3RlcmVvc3BsaXQtPmRpc3BsYXkpCiAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoc3RlcmVvc3BsaXQtPmRpc3BsYXksIFNVUFBPUlRFRF9HTF9BUElTKTsKKworICBHU1RfRUxFTUVOVF9DTEFTUyAoZ3N0X2dsX3N0ZXJlb3NwbGl0X3BhcmVudF9jbGFzcyktPnNldF9jb250ZXh0IChlbGVtZW50LAorICAgICAgY29udGV4dCk7CiB9CiAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgpAQCAtNTgxLDggKzU4NCwyNyBAQAogICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzZWxmLT5kaXNwbGF5KTsKICAgfQogCisgIHsKKyAgICBHc3RHTEFQSSBjdXJyZW50X2dsX2FwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKHNlbGYtPmNvbnRleHQpOworICAgIGlmICgoY3VycmVudF9nbF9hcGkgJiAoU1VQUE9SVEVEX0dMX0FQSVMpKSA9PSAwKQorICAgICAgZ290byB1bnN1cHBvcnRlZF9nbF9hcGk7CisgIH0KKwogICByZXR1cm4gVFJVRTsKIAordW5zdXBwb3J0ZWRfZ2xfYXBpOgorICB7CisgICAgR3N0R0xBUEkgZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoc2VsZi0+Y29udGV4dCk7CisgICAgZ2NoYXIgKmdsX2FwaV9zdHIgPSBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoZ2xfYXBpKTsKKyAgICBnY2hhciAqc3VwcG9ydGVkX2dsX2FwaV9zdHIgPSBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoU1VQUE9SVEVEX0dMX0FQSVMpOworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzZWxmLCBSRVNPVVJDRSwgQlVTWSwKKyAgICAgICAgKCJHTCBBUEkncyBub3QgY29tcGF0aWJsZSBjb250ZXh0OiAlcyBzdXBwb3J0ZWQ6ICVzIiwgZ2xfYXBpX3N0ciwKKyAgICAgICAgICAgIHN1cHBvcnRlZF9nbF9hcGlfc3RyKSwgKE5VTEwpKTsKKworICAgIGdfZnJlZSAoc3VwcG9ydGVkX2dsX2FwaV9zdHIpOworICAgIGdfZnJlZSAoZ2xfYXBpX3N0cik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiBjb250ZXh0X2Vycm9yOgogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLCBlcnJvci0+bWVzc2FnZSksCmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2x0ZXN0c3JjLmMgYi9leHQvZ2wvZ3N0Z2x0ZXN0c3JjLmMKaW5kZXggOTNkZGZkYS4uOTVjNzMyMSAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsdGVzdHNyYy5jCisrKyBiL2V4dC9nbC9nc3RnbHRlc3RzcmMuYwpAQCAtMzMsNyArMzMsNyBAQAogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogPHBhcmE+CiAgKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0gKiBnc3QtbGF1bmNoIC12IGdsdGVzdHNyYyBwYXR0ZXJuPXNtcHRlICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGdsdGVzdHNyYyBwYXR0ZXJuPXNtcHRlICEgZ2xpbWFnZXNpbmsKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiBTaG93cyBvcmlnaW5hbCBTTVBURSBjb2xvciBiYXJzIGluIGEgd2luZG93LgogICogPC9wYXJhPgpAQCAtNjMsMTMgKzYzLDE4IEBACiAgICAgICAvKiBGSUxMIE1FICovCiB9OwogCisvKiAqSU5ERU5ULU9GRiogKi8KIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwotICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLAotICAgICAgICAgICAgIlJHQkEiKSkKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsIgorICAgICAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIpCiAgICAgKTsKKy8qICpJTkRFTlQtT04qICovCiAKICNkZWZpbmUgZ3N0X2dsX3Rlc3Rfc3JjX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKIEdfREVGSU5FX1RZUEUgKEdzdEdMVGVzdFNyYywgZ3N0X2dsX3Rlc3Rfc3JjLCBHU1RfVFlQRV9QVVNIX1NSQyk7CkBAIC00NTksNiArNDY0LDggQEAKIAogICBpZiAoc3JjLT5kaXNwbGF5KQogICAgIGdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkgKHNyYy0+ZGlzcGxheSwgU1VQUE9SVEVEX0dMX0FQSVMpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtNzk3LDYgKzgwNCw5IEBACiAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYy0+ZGlzcGxheSk7CiAgIH0KIAorICBpZiAoKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKHNyYy0+Y29udGV4dCkgJiBTVVBQT1JURURfR0xfQVBJUykgPT0gMCkKKyAgICBnb3RvIHVuc3VwcG9ydGVkX2dsX2FwaTsKKwogICBvdXRfd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJnNyYy0+b3V0X2luZm8pOwogICBvdXRfaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmc3JjLT5vdXRfaW5mbyk7CiAKQEAgLTg0OSw2ICs4NTksMTkgQEAKIAogICByZXR1cm4gVFJVRTsKIAordW5zdXBwb3J0ZWRfZ2xfYXBpOgorICB7CisgICAgR3N0R0xBUEkgZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoc3JjLT5jb250ZXh0KTsKKyAgICBnY2hhciAqZ2xfYXBpX3N0ciA9IGdzdF9nbF9hcGlfdG9fc3RyaW5nIChnbF9hcGkpOworICAgIGdjaGFyICpzdXBwb3J0ZWRfZ2xfYXBpX3N0ciA9IGdzdF9nbF9hcGlfdG9fc3RyaW5nIChTVVBQT1JURURfR0xfQVBJUyk7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIEJVU1ksCisgICAgICAgICgiR0wgQVBJJ3Mgbm90IGNvbXBhdGlibGUgY29udGV4dDogJXMgc3VwcG9ydGVkOiAlcyIsIGdsX2FwaV9zdHIsCisgICAgICAgICAgICBzdXBwb3J0ZWRfZ2xfYXBpX3N0ciksIChOVUxMKSk7CisKKyAgICBnX2ZyZWUgKHN1cHBvcnRlZF9nbF9hcGlfc3RyKTsKKyAgICBnX2ZyZWUgKGdsX2FwaV9zdHIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQogY29udGV4dF9lcnJvcjoKICAgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLCBlcnJvci0+bWVzc2FnZSksCmRpZmYgLS1naXQgYS9leHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jIGIvZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uYwppbmRleCA1YTgyYWRlLi43Nzk0NDdjIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5jCisrKyBiL2V4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmMKQEAgLTEsNiArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTQgTHVib3N6IFNhcm5lY2tpIDxsdWJvc3pAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjYsMTYgKzI3LDE2IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZ2x0ZXN0c3JjICEgZ2x0cmFuc2Zvcm1hdGlvbiByb3RhdGlvbi16PTQ1ICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGdsdGVzdHNyYyAhIGdsdHJhbnNmb3JtYXRpb24gcm90YXRpb24tej00NSAhIGdsaW1hZ2VzaW5rCiAgKiBdfCBBIHBpcGVsaW5lIHRvIHJvdGF0ZSBieSA0NSBkZWdyZWVzCiAgKiB8WwotICogZ3N0LWxhdW5jaCBnbHRlc3RzcmMgISBnbHRyYW5zZm9ybWF0aW9uIHRyYW5zbGF0aW9uLXg9MC41ICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGdsdGVzdHNyYyAhIGdsdHJhbnNmb3JtYXRpb24gdHJhbnNsYXRpb24teD0wLjUgISBnbGltYWdlc2luawogICogXXwgVHJhbnNsYXRlIHRoZSB2aWRlbyBieSAwLjUKICAqIHxbCi0gKiBnc3QtbGF1bmNoIGdsdGVzdHNyYyAhIGdsdHJhbnNmb3JtYXRpb24gc2NhbGUteT0wLjUgc2NhbGUteD0wLjUgISBnbGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgZ2x0ZXN0c3JjICEgZ2x0cmFuc2Zvcm1hdGlvbiBzY2FsZS15PTAuNSBzY2FsZS14PTAuNSAhIGdsaW1hZ2VzaW5rCiAgKiBdfCBSZXNpemUgdGhlIHZpZGVvIGJ5IDAuNQogICogfFsKLSAqIGdzdC1sYXVuY2ggZ2x0ZXN0c3JjICEgZ2x0cmFuc2Zvcm1hdGlvbiByb3RhdGlvbi14PS00NSBvcnRobz1UcnVlICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGdsdGVzdHNyYyAhIGdsdHJhbnNmb3JtYXRpb24gcm90YXRpb24teD0tNDUgb3J0aG89VHJ1ZSAhIGdsaW1hZ2VzaW5rCiAgKiBdfCBSb3RhdGUgdGhlIHZpZGVvIGFyb3VuZCB0aGUgWC1BeGlzIGJ5IC00NcKwIHdpdGggYW4gb3J0aG9ncmFwaGljIHByb2plY3Rpb24KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTg2LDYgKzg3LDggQEAKIAogc3RhdGljIGdib29sZWFuIGdzdF9nbF90cmFuc2Zvcm1hdGlvbl9zZXRfY2FwcyAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIsCiAgICAgR3N0Q2FwcyAqIGluY2FwcywgR3N0Q2FwcyAqIG91dGNhcHMpOworc3RhdGljIGdib29sZWFuIGdzdF9nbF90cmFuc2Zvcm1hdGlvbl9zcmNfZXZlbnQgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucywKKyAgICBHc3RFdmVudCAqIGV2ZW50KTsKIAogc3RhdGljIHZvaWQgZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3Jlc2V0X2dsIChHc3RHTEZpbHRlciAqIGZpbHRlcik7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3N0b3AgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucyk7CkBAIC0xMjYsMTMgKzEyOSwxNyBAQAogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzczsKKyAgR3N0QmFzZVRyYW5zZm9ybUNsYXNzICpiYXNlX3RyYW5zZm9ybV9jbGFzczsKIAogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKICAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisgIGJhc2VfdHJhbnNmb3JtX2NsYXNzID0gR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyk7CiAKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3NldF9wcm9wZXJ0eTsKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX2dldF9wcm9wZXJ0eTsKIAorICBiYXNlX3RyYW5zZm9ybV9jbGFzcy0+c3JjX2V2ZW50ID0gZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3NyY19ldmVudDsKKwogICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmluaXRfZmJvID0gZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX2luaXRfc2hhZGVyOwogICBHU1RfR0xfRklMVEVSX0NMQVNTIChrbGFzcyktPmRpc3BsYXlfcmVzZXRfY2IgPQogICAgICAgZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3Jlc2V0X2dsOwpAQCAtMTkyLDEyICsxOTksMTQgQEAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TQ0FMRV9YLAogICAgICAgZ19wYXJhbV9zcGVjX2Zsb2F0ICgic2NhbGUteCIsICJYIFNjYWxlIiwKICAgICAgICAgICAiU2NhbGUgbXVsdGlwbGllciBmb3IgdGhlIFgtQXhpcy4iLAotICAgICAgICAgIDAuMCwgR19NQVhGTE9BVCwgMS4wLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAtR19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMS4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0NBTEVfWSwKICAgICAgIGdfcGFyYW1fc3BlY19mbG9hdCAoInNjYWxlLXkiLCAiWSBTY2FsZSIsCiAgICAgICAgICAgIlNjYWxlIG11bHRpcGxpZXIgZm9yIHRoZSBZLUF4aXMuIiwKLSAgICAgICAgICAwLjAsIEdfTUFYRkxPQVQsIDEuMCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgLUdfTUFYRkxPQVQsIEdfTUFYRkxPQVQsIDEuMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKIAogICAvKiBQaXZvdCAqLwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1BJVk9UX1gsCkBAIC0yMTgsMTggKzIyNywxOSBAQAogICAgICAgZ19wYXJhbV9zcGVjX2Zsb2F0ICgicGl2b3QteiIsICJaIFBpdm90IiwKICAgICAgICAgICAiUmVsZXZhbnQgZm9yIHJvdGF0aW9uIGluIDNEIHNwYWNlLiBZb3UgbG9vayBpbnRvIHRoZSBuZWdhdGl2ZSBaIGF4aXMgZGlyZWN0aW9uIiwKICAgICAgICAgICAtR19NQVhGTE9BVCwgR19NQVhGTE9BVCwgMC4wLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKICAgLyogTVZQICovCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTVZQLAogICAgICAgZ19wYXJhbV9zcGVjX2JveGVkICgibXZwLW1hdHJpeCIsCiAgICAgICAgICAgIk1vZGVsdmlldyBQcm9qZWN0aW9uIE1hdHJpeCIsCiAgICAgICAgICAgIlRoZSBmaW5hbCBHcmFwaGVuZSA0eDQgTWF0cml4IGZvciB0cmFuc2Zvcm1hdGlvbiIsCi0gICAgICAgICAgR1JBUEhFTkVfVFlQRV9NQVRSSVgsIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgR1JBUEhFTkVfVFlQRV9NQVRSSVgsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywgIk9wZW5HTCB0cmFuc2Zvcm1hdGlvbiBmaWx0ZXIiLAogICAgICAgIkZpbHRlci9FZmZlY3QvVmlkZW8iLCAiVHJhbnNmb3JtIHZpZGVvIG9uIHRoZSBHUFUiLAotICAgICAgIkx1Ym9zeiBTYXJuZWNraSA8bHVib3N6QGdtYWlsLmNvbT4iKTsKKyAgICAgICJMdWJvc3ogU2FybmVja2kgPGx1Ym9zekBnbWFpbC5jb20+XG4iCisgICAgICAiTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPiIpOwogCiAgIEdTVF9HTF9CQVNFX0ZJTFRFUl9DTEFTUyAoa2xhc3MpLT5zdXBwb3J0ZWRfZ2xfYXBpID0KICAgICAgIEdTVF9HTF9BUElfT1BFTkdMIHwgR1NUX0dMX0FQSV9PUEVOR0wzIHwgR1NUX0dMX0FQSV9HTEVTMjsKQEAgLTI1NSw2OSArMjY1LDk1IEBACiBzdGF0aWMgdm9pZAogZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX2J1aWxkX212cCAoR3N0R0xUcmFuc2Zvcm1hdGlvbiAqIHRyYW5zZm9ybWF0aW9uKQogewotICBncmFwaGVuZV9wb2ludDNkX3QgdHJhbnNsYXRpb25fdmVjdG9yID0KLSAgICAgIEdSQVBIRU5FX1BPSU5UM0RfSU5JVCAodHJhbnNmb3JtYXRpb24tPnh0cmFuc2xhdGlvbiAqIDIuMCAqCi0gICAgICB0cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LAotICAgICAgdHJhbnNmb3JtYXRpb24tPnl0cmFuc2xhdGlvbiAqIDIuMCwKLSAgICAgIHRyYW5zZm9ybWF0aW9uLT56dHJhbnNsYXRpb24gKiAyLjApOworICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAodHJhbnNmb3JtYXRpb24pOworICBncmFwaGVuZV9tYXRyaXhfdCBtb2RlbHZpZXdfbWF0cml4OwogCi0gIGdyYXBoZW5lX3BvaW50M2RfdCBwaXZvdF92ZWN0b3IgPQotICAgICAgR1JBUEhFTkVfUE9JTlQzRF9JTklUICgtdHJhbnNmb3JtYXRpb24tPnhwaXZvdCAqIHRyYW5zZm9ybWF0aW9uLT5hc3BlY3QsCi0gICAgICB0cmFuc2Zvcm1hdGlvbi0+eXBpdm90LAotICAgICAgLXRyYW5zZm9ybWF0aW9uLT56cGl2b3QpOwotCi0gIGdyYXBoZW5lX3BvaW50M2RfdCBuZWdhdGl2ZV9waXZvdF92ZWN0b3I7Ci0KLSAgZ3JhcGhlbmVfbWF0cml4X3QgbW9kZWxfbWF0cml4OwotICBncmFwaGVuZV9tYXRyaXhfdCBwcm9qZWN0aW9uX21hdHJpeDsKLSAgZ3JhcGhlbmVfbWF0cml4X3Qgdmlld19tYXRyaXg7Ci0gIGdyYXBoZW5lX21hdHJpeF90IHZwX21hdHJpeDsKLQotICBncmFwaGVuZV92ZWMzX3QgZXllOwotICBncmFwaGVuZV92ZWMzX3QgY2VudGVyOwotICBncmFwaGVuZV92ZWMzX3QgdXA7Ci0KLSAgZ3JhcGhlbmVfdmVjM19pbml0ICgmZXllLCAwLmYsIDAuZiwgMS5mKTsKLSAgZ3JhcGhlbmVfdmVjM19pbml0ICgmY2VudGVyLCAwLmYsIDAuZiwgMC5mKTsKLSAgZ3JhcGhlbmVfdmVjM19pbml0ICgmdXAsIDAuZiwgMS5mLCAwLmYpOwotCi0gIC8qIFRyYW5zbGF0ZSBpbnRvIHBpdm90IG9yaWdpbiAqLwotICBncmFwaGVuZV9tYXRyaXhfaW5pdF90cmFuc2xhdGUgKCZtb2RlbF9tYXRyaXgsICZwaXZvdF92ZWN0b3IpOwotCi0gIC8qIFNjYWxlICovCi0gIGdyYXBoZW5lX21hdHJpeF9zY2FsZSAoJm1vZGVsX21hdHJpeCwKLSAgICAgIHRyYW5zZm9ybWF0aW9uLT54c2NhbGUsIHRyYW5zZm9ybWF0aW9uLT55c2NhbGUsIDEuMGYpOwotCi0gIC8qIFJvdGF0aW9uICovCi0gIGdyYXBoZW5lX21hdHJpeF9yb3RhdGUgKCZtb2RlbF9tYXRyaXgsCi0gICAgICB0cmFuc2Zvcm1hdGlvbi0+eHJvdGF0aW9uLCBncmFwaGVuZV92ZWMzX3hfYXhpcyAoKSk7Ci0gIGdyYXBoZW5lX21hdHJpeF9yb3RhdGUgKCZtb2RlbF9tYXRyaXgsCi0gICAgICB0cmFuc2Zvcm1hdGlvbi0+eXJvdGF0aW9uLCBncmFwaGVuZV92ZWMzX3lfYXhpcyAoKSk7Ci0gIGdyYXBoZW5lX21hdHJpeF9yb3RhdGUgKCZtb2RlbF9tYXRyaXgsCi0gICAgICB0cmFuc2Zvcm1hdGlvbi0+enJvdGF0aW9uLCBncmFwaGVuZV92ZWMzX3pfYXhpcyAoKSk7Ci0KLSAgLyogVHJhbnNsYXRlIGJhY2sgZnJvbSBwaXZvdCBvcmlnaW4gKi8KLSAgZ3JhcGhlbmVfcG9pbnQzZF9zY2FsZSAoJnBpdm90X3ZlY3RvciwgLTEuMCwgJm5lZ2F0aXZlX3Bpdm90X3ZlY3Rvcik7Ci0gIGdyYXBoZW5lX21hdHJpeF90cmFuc2xhdGUgKCZtb2RlbF9tYXRyaXgsICZuZWdhdGl2ZV9waXZvdF92ZWN0b3IpOwotCi0gIC8qIFRyYW5zbGF0aW9uICovCi0gIGdyYXBoZW5lX21hdHJpeF90cmFuc2xhdGUgKCZtb2RlbF9tYXRyaXgsICZ0cmFuc2xhdGlvbl92ZWN0b3IpOwotCi0gIGlmICh0cmFuc2Zvcm1hdGlvbi0+b3J0aG8pIHsKLSAgICBncmFwaGVuZV9tYXRyaXhfaW5pdF9vcnRobyAoJnByb2plY3Rpb25fbWF0cml4LAotICAgICAgICAtdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwgdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwKLSAgICAgICAgLTEsIDEsIHRyYW5zZm9ybWF0aW9uLT56bmVhciwgdHJhbnNmb3JtYXRpb24tPnpmYXIpOworICBpZiAoIWZpbHRlci0+b3V0X2luZm8uZmluZm8pIHsKKyAgICBncmFwaGVuZV9tYXRyaXhfaW5pdF9pZGVudGl0eSAoJnRyYW5zZm9ybWF0aW9uLT5tb2RlbF9tYXRyaXgpOworICAgIGdyYXBoZW5lX21hdHJpeF9pbml0X2lkZW50aXR5ICgmdHJhbnNmb3JtYXRpb24tPnZpZXdfbWF0cml4KTsKKyAgICBncmFwaGVuZV9tYXRyaXhfaW5pdF9pZGVudGl0eSAoJnRyYW5zZm9ybWF0aW9uLT5wcm9qZWN0aW9uX21hdHJpeCk7CiAgIH0gZWxzZSB7Ci0gICAgZ3JhcGhlbmVfbWF0cml4X2luaXRfcGVyc3BlY3RpdmUgKCZwcm9qZWN0aW9uX21hdHJpeCwKLSAgICAgICAgdHJhbnNmb3JtYXRpb24tPmZvdiwKLSAgICAgICAgdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwgdHJhbnNmb3JtYXRpb24tPnpuZWFyLCB0cmFuc2Zvcm1hdGlvbi0+emZhcik7CisgICAgZ3JhcGhlbmVfcG9pbnQzZF90IHRyYW5zbGF0aW9uX3ZlY3RvciA9CisgICAgICAgIEdSQVBIRU5FX1BPSU5UM0RfSU5JVCAodHJhbnNmb3JtYXRpb24tPnh0cmFuc2xhdGlvbiAqIDIuMCAqCisgICAgICAgIHRyYW5zZm9ybWF0aW9uLT5hc3BlY3QsCisgICAgICAgIHRyYW5zZm9ybWF0aW9uLT55dHJhbnNsYXRpb24gKiAyLjAsCisgICAgICAgIHRyYW5zZm9ybWF0aW9uLT56dHJhbnNsYXRpb24gKiAyLjApOworCisgICAgZ3JhcGhlbmVfcG9pbnQzZF90IHBpdm90X3ZlY3RvciA9CisgICAgICAgIEdSQVBIRU5FX1BPSU5UM0RfSU5JVCAoLXRyYW5zZm9ybWF0aW9uLT54cGl2b3QgKiB0cmFuc2Zvcm1hdGlvbi0+YXNwZWN0LAorICAgICAgICB0cmFuc2Zvcm1hdGlvbi0+eXBpdm90LAorICAgICAgICAtdHJhbnNmb3JtYXRpb24tPnpwaXZvdCk7CisKKyAgICBncmFwaGVuZV9wb2ludDNkX3QgbmVnYXRpdmVfcGl2b3RfdmVjdG9yOworCisgICAgZ3JhcGhlbmVfdmVjM190IGV5ZTsKKyAgICBncmFwaGVuZV92ZWMzX3QgY2VudGVyOworICAgIGdyYXBoZW5lX3ZlYzNfdCB1cDsKKworICAgIGdib29sZWFuIGN1cnJlbnRfcGFzc3Rocm91Z2g7CisgICAgZ2Jvb2xlYW4gcGFzc3Rocm91Z2g7CisKKyAgICBncmFwaGVuZV92ZWMzX2luaXQgKCZleWUsIDAuZiwgMC5mLCAxLmYpOworICAgIGdyYXBoZW5lX3ZlYzNfaW5pdCAoJmNlbnRlciwgMC5mLCAwLmYsIDAuZik7CisgICAgZ3JhcGhlbmVfdmVjM19pbml0ICgmdXAsIDAuZiwgMS5mLCAwLmYpOworCisgICAgLyogVHJhbnNsYXRlIGludG8gcGl2b3Qgb3JpZ2luICovCisgICAgZ3JhcGhlbmVfbWF0cml4X2luaXRfdHJhbnNsYXRlICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICAgJnBpdm90X3ZlY3Rvcik7CisKKyAgICAvKiBTY2FsZSAqLworICAgIGdyYXBoZW5lX21hdHJpeF9zY2FsZSAoJnRyYW5zZm9ybWF0aW9uLT5tb2RlbF9tYXRyaXgsCisgICAgICAgIHRyYW5zZm9ybWF0aW9uLT54c2NhbGUsIHRyYW5zZm9ybWF0aW9uLT55c2NhbGUsIDEuMGYpOworCisgICAgLyogUm90YXRpb24gKi8KKyAgICBncmFwaGVuZV9tYXRyaXhfcm90YXRlICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICAgdHJhbnNmb3JtYXRpb24tPnhyb3RhdGlvbiwgZ3JhcGhlbmVfdmVjM194X2F4aXMgKCkpOworICAgIGdyYXBoZW5lX21hdHJpeF9yb3RhdGUgKCZ0cmFuc2Zvcm1hdGlvbi0+bW9kZWxfbWF0cml4LAorICAgICAgICB0cmFuc2Zvcm1hdGlvbi0+eXJvdGF0aW9uLCBncmFwaGVuZV92ZWMzX3lfYXhpcyAoKSk7CisgICAgZ3JhcGhlbmVfbWF0cml4X3JvdGF0ZSAoJnRyYW5zZm9ybWF0aW9uLT5tb2RlbF9tYXRyaXgsCisgICAgICAgIHRyYW5zZm9ybWF0aW9uLT56cm90YXRpb24sIGdyYXBoZW5lX3ZlYzNfel9heGlzICgpKTsKKworICAgIC8qIFRyYW5zbGF0ZSBiYWNrIGZyb20gcGl2b3Qgb3JpZ2luICovCisgICAgZ3JhcGhlbmVfcG9pbnQzZF9zY2FsZSAoJnBpdm90X3ZlY3RvciwgLTEuMCwgJm5lZ2F0aXZlX3Bpdm90X3ZlY3Rvcik7CisgICAgZ3JhcGhlbmVfbWF0cml4X3RyYW5zbGF0ZSAoJnRyYW5zZm9ybWF0aW9uLT5tb2RlbF9tYXRyaXgsCisgICAgICAgICZuZWdhdGl2ZV9waXZvdF92ZWN0b3IpOworCisgICAgLyogVHJhbnNsYXRpb24gKi8KKyAgICBncmFwaGVuZV9tYXRyaXhfdHJhbnNsYXRlICgmdHJhbnNmb3JtYXRpb24tPm1vZGVsX21hdHJpeCwKKyAgICAgICAgJnRyYW5zbGF0aW9uX3ZlY3Rvcik7CisKKyAgICBpZiAodHJhbnNmb3JtYXRpb24tPm9ydGhvKSB7CisgICAgICBncmFwaGVuZV9tYXRyaXhfaW5pdF9vcnRobyAoJnRyYW5zZm9ybWF0aW9uLT5wcm9qZWN0aW9uX21hdHJpeCwKKyAgICAgICAgICAtdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwgdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwKKyAgICAgICAgICAtMSwgMSwgdHJhbnNmb3JtYXRpb24tPnpuZWFyLCB0cmFuc2Zvcm1hdGlvbi0+emZhcik7CisgICAgfSBlbHNlIHsKKyAgICAgIGdyYXBoZW5lX21hdHJpeF9pbml0X3BlcnNwZWN0aXZlICgmdHJhbnNmb3JtYXRpb24tPnByb2plY3Rpb25fbWF0cml4LAorICAgICAgICAgIHRyYW5zZm9ybWF0aW9uLT5mb3YsCisgICAgICAgICAgdHJhbnNmb3JtYXRpb24tPmFzcGVjdCwgdHJhbnNmb3JtYXRpb24tPnpuZWFyLCB0cmFuc2Zvcm1hdGlvbi0+emZhcik7CisgICAgfQorCisgICAgZ3JhcGhlbmVfbWF0cml4X2luaXRfbG9va19hdCAoJnRyYW5zZm9ybWF0aW9uLT52aWV3X21hdHJpeCwgJmV5ZSwgJmNlbnRlciwKKyAgICAgICAgJnVwKTsKKworICAgIGN1cnJlbnRfcGFzc3Rocm91Z2ggPQorICAgICAgICBnc3RfYmFzZV90cmFuc2Zvcm1faXNfcGFzc3Rocm91Z2ggKEdTVF9CQVNFX1RSQU5TRk9STSAodHJhbnNmb3JtYXRpb24pKTsKKyAgICBwYXNzdGhyb3VnaCA9IHRyYW5zZm9ybWF0aW9uLT54dHJhbnNsYXRpb24gPT0gMC4KKyAgICAgICAgJiYgdHJhbnNmb3JtYXRpb24tPnl0cmFuc2xhdGlvbiA9PSAwLgorICAgICAgICAmJiB0cmFuc2Zvcm1hdGlvbi0+enRyYW5zbGF0aW9uID09IDAuICYmIHRyYW5zZm9ybWF0aW9uLT54cm90YXRpb24gPT0gMC4KKyAgICAgICAgJiYgdHJhbnNmb3JtYXRpb24tPnlyb3RhdGlvbiA9PSAwLiAmJiB0cmFuc2Zvcm1hdGlvbi0+enJvdGF0aW9uID09IDAuCisgICAgICAgICYmIHRyYW5zZm9ybWF0aW9uLT54c2NhbGUgPT0gMS4gJiYgdHJhbnNmb3JtYXRpb24tPnlzY2FsZSA9PSAxLgorICAgICAgICAmJiBnc3RfdmlkZW9faW5mb19pc19lcXVhbCAoJmZpbHRlci0+aW5faW5mbywgJmZpbHRlci0+b3V0X2luZm8pOworICAgIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfcGFzc3Rocm91Z2ggKEdTVF9CQVNFX1RSQU5TRk9STSAodHJhbnNmb3JtYXRpb24pLAorICAgICAgICBwYXNzdGhyb3VnaCk7CisgICAgaWYgKGN1cnJlbnRfcGFzc3Rocm91Z2ggIT0gcGFzc3Rocm91Z2gpIHsKKyAgICAgIGdzdF9iYXNlX3RyYW5zZm9ybV9yZWNvbmZpZ3VyZV9zcmMgKEdTVF9CQVNFX1RSQU5TRk9STSAodHJhbnNmb3JtYXRpb24pKTsKKyAgICB9CiAgIH0KIAotICBncmFwaGVuZV9tYXRyaXhfaW5pdF9sb29rX2F0ICgmdmlld19tYXRyaXgsICZleWUsICZjZW50ZXIsICZ1cCk7Ci0KLSAgZ3JhcGhlbmVfbWF0cml4X211bHRpcGx5ICgmdmlld19tYXRyaXgsICZwcm9qZWN0aW9uX21hdHJpeCwgJnZwX21hdHJpeCk7Ci0gIGdyYXBoZW5lX21hdHJpeF9tdWx0aXBseSAoJm1vZGVsX21hdHJpeCwgJnZwX21hdHJpeCwKLSAgICAgICZ0cmFuc2Zvcm1hdGlvbi0+bXZwX21hdHJpeCk7CisgIGdyYXBoZW5lX21hdHJpeF9tdWx0aXBseSAoJnRyYW5zZm9ybWF0aW9uLT5tb2RlbF9tYXRyaXgsCisgICAgICAmdHJhbnNmb3JtYXRpb24tPnZpZXdfbWF0cml4LCAmbW9kZWx2aWV3X21hdHJpeCk7CisgIGdyYXBoZW5lX21hdHJpeF9tdWx0aXBseSAoJm1vZGVsdmlld19tYXRyaXgsCisgICAgICAmdHJhbnNmb3JtYXRpb24tPnByb2plY3Rpb25fbWF0cml4LCAmdHJhbnNmb3JtYXRpb24tPm12cF9tYXRyaXgpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzY2LDExICs0MDIsNiBAQAogICAgIGNhc2UgUFJPUF9QSVZPVF9aOgogICAgICAgZmlsdGVyLT56cGl2b3QgPSBnX3ZhbHVlX2dldF9mbG9hdCAodmFsdWUpOwogICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX01WUDoKLSAgICAgIGlmIChnX3ZhbHVlX2dldF9ib3hlZCAodmFsdWUpICE9IE5VTEwpCi0gICAgICAgIGZpbHRlci0+bXZwX21hdHJpeCA9ICooKGdyYXBoZW5lX21hdHJpeF90ICopIGdfdmFsdWVfZ2V0X2JveGVkICh2YWx1ZSkpOwotICAgICAgcmV0dXJuOwotICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTQ1MSw2ICs0ODIsMTUyIEBACiB9CiAKIHN0YXRpYyB2b2lkCitfZmluZF9wbGFuZV9ub3JtYWwgKGNvbnN0IGdyYXBoZW5lX3BvaW50M2RfdCAqIEEsIGNvbnN0IGdyYXBoZW5lX3BvaW50M2RfdCAqIEIsCisgICAgY29uc3QgZ3JhcGhlbmVfcG9pbnQzZF90ICogQywgZ3JhcGhlbmVfdmVjM190ICogcGxhbmVfbm9ybWFsKQoreworICBncmFwaGVuZV92ZWMzX3QgVSwgViwgQV92LCBCX3YsIENfdjsKKworICBncmFwaGVuZV9wb2ludDNkX3RvX3ZlYzMgKEEsICZBX3YpOworICBncmFwaGVuZV9wb2ludDNkX3RvX3ZlYzMgKEIsICZCX3YpOworICBncmFwaGVuZV9wb2ludDNkX3RvX3ZlYzMgKEMsICZDX3YpOworCisgIGdyYXBoZW5lX3ZlYzNfc3VidHJhY3QgKCZCX3YsICZBX3YsICZVKTsKKyAgZ3JhcGhlbmVfdmVjM19zdWJ0cmFjdCAoJkNfdiwgJkFfdiwgJlYpOworCisgIGdyYXBoZW5lX3ZlYzNfY3Jvc3MgKCZVLCAmViwgcGxhbmVfbm9ybWFsKTsKKyAgZ3JhcGhlbmVfdmVjM19ub3JtYWxpemUgKHBsYW5lX25vcm1hbCwgcGxhbmVfbm9ybWFsKTsKK30KKworc3RhdGljIHZvaWQKK19maW5kX21vZGVsX2Nvb3JkcyAoR3N0R0xUcmFuc2Zvcm1hdGlvbiAqIHRyYW5zZm9ybWF0aW9uLAorICAgIGNvbnN0IGdyYXBoZW5lX3BvaW50M2RfdCAqIHNjcmVlbl9jb29yZHMsIGdyYXBoZW5lX3BvaW50M2RfdCAqIHJlcykKK3sKKyAgZ3JhcGhlbmVfbWF0cml4X3QgbW9kZWx2aWV3LCBpbnZlcnNlX3Byb2osIGludmVyc2VfbW9kZWx2aWV3OworICBncmFwaGVuZV92ZWM0X3QgdjEsIHYyOworICBncmFwaGVuZV9wb2ludDNkX3QgcDE7CisgIGdmbG9hdCB3OworCisgIGdyYXBoZW5lX3ZlYzRfaW5pdCAoJnYxLCBzY3JlZW5fY29vcmRzLT54LCBzY3JlZW5fY29vcmRzLT55LCBzY3JlZW5fY29vcmRzLT56LAorICAgICAgMS4pOworICBncmFwaGVuZV9tYXRyaXhfaW52ZXJzZSAoJnRyYW5zZm9ybWF0aW9uLT5wcm9qZWN0aW9uX21hdHJpeCwgJmludmVyc2VfcHJvaik7CisgIGdyYXBoZW5lX21hdHJpeF90cmFuc2Zvcm1fdmVjNCAoJmludmVyc2VfcHJvaiwgJnYxLCAmdjIpOworCisgIC8qIHBlcnNwZWN0aXZlIGRpdmlzaW9uICovCisgIHcgPSBncmFwaGVuZV92ZWM0X2dldF93ICgmdjIpOworICBwMS54ID0gZ3JhcGhlbmVfdmVjNF9nZXRfeCAoJnYyKSAvIHc7CisgIHAxLnkgPSBncmFwaGVuZV92ZWM0X2dldF95ICgmdjIpIC8gdzsKKyAgcDEueiA9IGdyYXBoZW5lX3ZlYzRfZ2V0X3ogKCZ2MikgLyB3OworCisgIGdyYXBoZW5lX21hdHJpeF9tdWx0aXBseSAoJnRyYW5zZm9ybWF0aW9uLT5tb2RlbF9tYXRyaXgsCisgICAgICAmdHJhbnNmb3JtYXRpb24tPnZpZXdfbWF0cml4LCAmbW9kZWx2aWV3KTsKKyAgZ3JhcGhlbmVfbWF0cml4X2ludmVyc2UgKCZtb2RlbHZpZXcsICZpbnZlcnNlX21vZGVsdmlldyk7CisgIGdyYXBoZW5lX21hdHJpeF90cmFuc2Zvcm1fcG9pbnQzZCAoJmludmVyc2VfbW9kZWx2aWV3LCAmcDEsIHJlcyk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX3RyYW5zZm9ybWF0aW9uX3NyY19ldmVudCAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLCBHc3RFdmVudCAqIGV2ZW50KQoreworICBHc3RHTFRyYW5zZm9ybWF0aW9uICp0cmFuc2Zvcm1hdGlvbiA9IEdTVF9HTF9UUkFOU0ZPUk1BVElPTiAodHJhbnMpOworICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAodHJhbnMpOworICBnZG91YmxlIG5ld194LCBuZXdfeSwgeCwgeTsKKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7CisgIGdib29sZWFuIHJldDsKKworICBHU1RfREVCVUdfT0JKRUNUICh0cmFucywgImhhbmRsaW5nICVzIGV2ZW50IiwgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKKworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9OQVZJR0FUSU9OOgorICAgICAgZXZlbnQgPQorICAgICAgICAgIEdTVF9FVkVOVCAoZ3N0X21pbmlfb2JqZWN0X21ha2Vfd3JpdGFibGUgKEdTVF9NSU5JX09CSkVDVCAoZXZlbnQpKSk7CisKKyAgICAgIHN0cnVjdHVyZSA9IChHc3RTdHJ1Y3R1cmUgKikgZ3N0X2V2ZW50X2dldF9zdHJ1Y3R1cmUgKGV2ZW50KTsKKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9kb3VibGUgKHN0cnVjdHVyZSwgInBvaW50ZXJfeCIsICZ4KSAmJgorICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2RvdWJsZSAoc3RydWN0dXJlLCAicG9pbnRlcl95IiwgJnkpKSB7CisgICAgICAgIGdmbG9hdCB3ID0gKGdmbG9hdCkgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZmaWx0ZXItPmluX2luZm8pOworICAgICAgICBnZmxvYXQgaCA9IChnZmxvYXQpIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmZpbHRlci0+aW5faW5mbyk7CisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfdCBzY3JlZW5fcG9pbnRfbmVhciwgc2NyZWVuX3BvaW50X2ZhcjsKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF90IG1vZGVsX2Nvb3JkX25lYXIsIG1vZGVsX2Nvb3JkX2ZhcjsKKyAgICAgICAgZ3JhcGhlbmVfcG9pbnQzZF90IGJvdHRvbV9sZWZ0LCBib3R0b21fcmlnaHQsIHRvcF9sZWZ0LCB0b3BfcmlnaHQ7CisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfdCByZXN1bHQ7CisgICAgICAgIGdyYXBoZW5lX3ZlYzNfdCBwbGFuZV9ub3JtYWw7CisgICAgICAgIGdyYXBoZW5lX3BsYW5lX3QgdmlkZW9fcGxhbmU7CisgICAgICAgIGdmbG9hdCBkOworCisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRyYW5zLCAiY29udmVydGluZyAlZiwlZiIsIHgsIHkpOworCisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfaW5pdCAoJnRvcF9sZWZ0LCAtMS4sIDEuLCAwLik7CisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfaW5pdCAoJnRvcF9yaWdodCwgMS4sIDEuLCAwLik7CisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfaW5pdCAoJmJvdHRvbV9sZWZ0LCAtMS4sIC0xLiwgMC4pOworICAgICAgICBncmFwaGVuZV9wb2ludDNkX2luaXQgKCZib3R0b21fcmlnaHQsIDEuLCAtMS4sIDAuKTsKKyAgICAgICAgLyogdG8gTkRDICovCisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfaW5pdCAoJnNjcmVlbl9wb2ludF9uZWFyLCAyLiAqIHggLyB3IC0gMS4sCisgICAgICAgICAgICAyLiAqIHkgLyBoIC0gMS4sIC0xLik7CisgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfaW5pdCAoJnNjcmVlbl9wb2ludF9mYXIsIDIuICogeCAvIHcgLSAxLiwKKyAgICAgICAgICAgIDIuICogeSAvIGggLSAxLiwgMS4pOworCisgICAgICAgIF9maW5kX3BsYW5lX25vcm1hbCAoJmJvdHRvbV9sZWZ0LCAmdG9wX2xlZnQsICZ0b3BfcmlnaHQsICZwbGFuZV9ub3JtYWwpOworICAgICAgICBncmFwaGVuZV9wbGFuZV9pbml0X2Zyb21fcG9pbnQgKCZ2aWRlb19wbGFuZSwgJnBsYW5lX25vcm1hbCwgJnRvcF9sZWZ0KTsKKyAgICAgICAgZCA9IGdyYXBoZW5lX3BsYW5lX2dldF9jb25zdGFudCAoJnZpZGVvX3BsYW5lKTsKKworICAgICAgICAvKiBnZXQgdGhlIGNsb3Nlc3QgYW5kIGZ1cnRoZXN0IHBvaW50cyBpbiB0aGUgdmlld2luZyBhcmVhIGZvciB0aGUKKyAgICAgICAgICogc3BlY2lmaWVkIHNjcmVlbiBjb29yZGluYXRlIGluIG9yZGVyIHRvIGNvbnN0cnVjdCBhIHJheSAqLworICAgICAgICBfZmluZF9tb2RlbF9jb29yZHMgKHRyYW5zZm9ybWF0aW9uLCAmc2NyZWVuX3BvaW50X25lYXIsCisgICAgICAgICAgICAmbW9kZWxfY29vcmRfbmVhcik7CisgICAgICAgIF9maW5kX21vZGVsX2Nvb3JkcyAodHJhbnNmb3JtYXRpb24sICZzY3JlZW5fcG9pbnRfZmFyLAorICAgICAgICAgICAgJm1vZGVsX2Nvb3JkX2Zhcik7CisKKyAgICAgICAgeworICAgICAgICAgIGdyYXBoZW5lX3ZlYzNfdCBtb2RlbF9jb29yZF9uZWFyX3ZlYzMsIG1vZGVsX2Nvb3JkX2Zhcl92ZWMzOworICAgICAgICAgIGdyYXBoZW5lX3ZlYzNfdCB0bXAsIGludGVyc2VjdGlvbiwgY29vcmRfZGlyOworICAgICAgICAgIGdmbG9hdCBudW0sIGRlbm9tLCB0OworCisgICAgICAgICAgLyogZ2V0IHRoZSBkaXJlY3Rpb24gb2YgdGhlIHJheSAqLworICAgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfdG9fdmVjMyAoJm1vZGVsX2Nvb3JkX25lYXIsICZtb2RlbF9jb29yZF9uZWFyX3ZlYzMpOworICAgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfdG9fdmVjMyAoJm1vZGVsX2Nvb3JkX2ZhciwgJm1vZGVsX2Nvb3JkX2Zhcl92ZWMzKTsKKyAgICAgICAgICBncmFwaGVuZV92ZWMzX3N1YnRyYWN0ICgmbW9kZWxfY29vcmRfbmVhcl92ZWMzLCAmbW9kZWxfY29vcmRfZmFyX3ZlYzMsCisgICAgICAgICAgICAgICZjb29yZF9kaXIpOworCisgICAgICAgICAgLyogSW50ZXJzZWN0IHRoZSByYXkgd2l0aCB0aGUgdmlkZW8gcGxhbmUgdG8gZmluZCB0aGUgZGlzdGFuY2UsIHQ6CisgICAgICAgICAgICogUmF5OiBQID0gUDAgKyB0IFBkaXIKKyAgICAgICAgICAgKiBQbGFuZTogUCBkb3QgTiArIGQgPSAwCisgICAgICAgICAgICoKKyAgICAgICAgICAgKiBTdWJzdGl0dXRpbmcgZm9yIFAgYW5kIHJlYXJyYW5naW5nIGdpdmVzOgorICAgICAgICAgICAqCisgICAgICAgICAgICogdCA9IChQMCBkb3QgTiArIGQpIC8gKFBkaXIgZG90IE4pICovCisgICAgICAgICAgZGVub20gPSBncmFwaGVuZV92ZWMzX2RvdCAoJmNvb3JkX2RpciwgJnBsYW5lX25vcm1hbCk7CisgICAgICAgICAgbnVtID0gZ3JhcGhlbmVfdmVjM19kb3QgKCZtb2RlbF9jb29yZF9uZWFyX3ZlYzMsICZwbGFuZV9ub3JtYWwpOworICAgICAgICAgIHQgPSAtKG51bSArIGQpIC8gZGVub207CisKKyAgICAgICAgICAvKiB2aWRlbyBjb29yZCA9IFAwICsgdCBQZGlyICovCisgICAgICAgICAgZ3JhcGhlbmVfdmVjM19zY2FsZSAoJmNvb3JkX2RpciwgdCwgJnRtcCk7CisgICAgICAgICAgZ3JhcGhlbmVfdmVjM19hZGQgKCZ0bXAsICZtb2RlbF9jb29yZF9uZWFyX3ZlYzMsICZpbnRlcnNlY3Rpb24pOworICAgICAgICAgIGdyYXBoZW5lX3BvaW50M2RfaW5pdF9mcm9tX3ZlYzMgKCZyZXN1bHQsICZpbnRlcnNlY3Rpb24pOworICAgICAgICB9CisKKyAgICAgICAgbmV3X3ggPSAocmVzdWx0LnggLyB0cmFuc2Zvcm1hdGlvbi0+YXNwZWN0ICsgMS4pICogdyAvIDI7CisgICAgICAgIG5ld195ID0gKHJlc3VsdC55ICsgMS4pICogaCAvIDI7CisKKyAgICAgICAgaWYgKG5ld194IDwgMC4gfHwgbmV3X3ggPiB3IHx8IG5ld195IDwgMCB8fCBuZXdfeSA+IGgpIHsKKyAgICAgICAgICAvKiBjb29yZHMgb2ZmIHZpZGVvIHN1cmZhY2UgKi8KKyAgICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKKyAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgICAgfQorCisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRyYW5zLCAidG8gJWZ4JWYiLCBuZXdfeCwgbmV3X3kpOworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAoc3RydWN0dXJlLCAicG9pbnRlcl94IiwgR19UWVBFX0RPVUJMRSwgbmV3X3gsCisgICAgICAgICAgICAicG9pbnRlcl95IiwgR19UWVBFX0RPVUJMRSwgbmV3X3ksIE5VTEwpOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0ID0gR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zcmNfZXZlbnQgKHRyYW5zLCBldmVudCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKIGdzdF9nbF90cmFuc2Zvcm1hdGlvbl9yZXNldF9nbCAoR3N0R0xGaWx0ZXIgKiBmaWx0ZXIpCiB7CiAgIEdzdEdMVHJhbnNmb3JtYXRpb24gKnRyYW5zZm9ybWF0aW9uID0gR1NUX0dMX1RSQU5TRk9STUFUSU9OIChmaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uaCBiL2V4dC9nbC9nc3RnbHRyYW5zZm9ybWF0aW9uLmgKaW5kZXggNmI5MDUxYS4uN2Q0MWM2MSAxMDA2NDQKLS0tIGEvZXh0L2dsL2dzdGdsdHJhbnNmb3JtYXRpb24uaAorKysgYi9leHQvZ2wvZ3N0Z2x0cmFuc2Zvcm1hdGlvbi5oCkBAIC03MSw2ICs3MSw5IEBACiAgICAgZ2Zsb2F0IHpmYXI7CiAgICAgZ2Jvb2xlYW4gb3J0aG87CiAKKyAgICBncmFwaGVuZV9tYXRyaXhfdCBtb2RlbF9tYXRyaXg7CisgICAgZ3JhcGhlbmVfbWF0cml4X3Qgdmlld19tYXRyaXg7CisgICAgZ3JhcGhlbmVfbWF0cml4X3QgcHJvamVjdGlvbl9tYXRyaXg7CiAgICAgZ3JhcGhlbmVfbWF0cml4X3QgbXZwX21hdHJpeDsKIAogICAgIGdib29sZWFuIGNhcHNfY2hhbmdlOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsdXBsb2FkZWxlbWVudC5jIGIvZXh0L2dsL2dzdGdsdXBsb2FkZWxlbWVudC5jCmluZGV4IDgzZmYyNGMuLjg2ZThiMDEgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RnbHVwbG9hZGVsZW1lbnQuYworKysgYi9leHQvZ2wvZ3N0Z2x1cGxvYWRlbGVtZW50LmMKQEAgLTIyMCw4ICsyMjAsNiBAQAogICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKIAogICByZXQgPSBnc3RfZ2xfdXBsb2FkX3BlcmZvcm1fd2l0aF9idWZmZXIgKHVwbG9hZC0+dXBsb2FkLCBidWZmZXIsIG91dGJ1Zik7Ci0gIC8qIEZJWE1FIEhhdmluZyB0byByZWxlYXNlIGFmdGVyIHBlcmZvcm0gaXMgYW4gYWJlcmF0aW9uICovCi0gIGdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXIgKHVwbG9hZC0+dXBsb2FkKTsKIAogICBpZiAocmV0ICE9IEdTVF9HTF9VUExPQURfRE9ORSB8fCAqb3V0YnVmID09IE5VTEwpIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoYnQsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLApkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmMgYi9leHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYWFlNzllCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmMKQEAgLTAsMCArMSw1MDkgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtZ2x2aWRlb19mbGlwCisgKgorICogVHJhbnNmb3JtcyB2aWRlbyBvbiB0aGUgR1BVLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZ2x1cGxvYWQgISBnbHZpZGVvZmxpcCBtZXRob2Q9Y2xvY2t3aXNlICEgZ2xpbWFnZXNpbmtlbGVtZW50CisgKiBdfCBUaGlzIHBpcGVsaW5lIGZsaXBzIHRoZSB0ZXN0IGltYWdlIDkwIGRlZ3JlZXMgY2xvY2t3aXNlLgorICogPC9yZWZzZWN0Mj4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RnbHZpZGVvZmxpcC5oIgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfdmlkZW9fZmxpcF9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKKworI2RlZmluZSBERUZBVUxUX01FVEhPRCBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfSURFTlRJVFkKKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfTUVUSE9ELAorfTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIF9zaW5rX3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIKKyAgICAgICAgImZvcm1hdCA9IChzdHJpbmcpIFJHQkEsICIKKyAgICAgICAgIndpZHRoID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCAiCisgICAgICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIDJEIikpOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgX3NyY190ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAiKSwgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIKKyAgICAgICAgInRleHR1cmUtdGFyZ2V0ID0gKHN0cmluZykgMkQiKSk7CisKKyNkZWZpbmUgR1NUX1RZUEVfR0xfVklERU9fRkxJUF9NRVRIT0QgKGdzdF92aWRlb19mbGlwX21ldGhvZF9nZXRfdHlwZSgpKQorc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgdmlkZW9fZmxpcF9tZXRob2RzW10gPSB7CisgIHtHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfSURFTlRJVFksICJJZGVudGl0eSAobm8gcm90YXRpb24pIiwgIm5vbmUifSwKKyAge0dTVF9HTF9WSURFT19GTElQX01FVEhPRF85MFIsICJSb3RhdGUgY2xvY2t3aXNlIDkwIGRlZ3JlZXMiLCAiY2xvY2t3aXNlIn0sCisgIHtHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfMTgwLCAiUm90YXRlIDE4MCBkZWdyZWVzIiwgInJvdGF0ZS0xODAifSwKKyAge0dTVF9HTF9WSURFT19GTElQX01FVEhPRF85MEwsICJSb3RhdGUgY291bnRlci1jbG9ja3dpc2UgOTAgZGVncmVlcyIsCisgICAgICAiY291bnRlcmNsb2Nrd2lzZSJ9LAorICB7R1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfSE9SSVosICJGbGlwIGhvcml6b250YWxseSIsICJob3Jpem9udGFsLWZsaXAifSwKKyAge0dTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1ZFUlQsICJGbGlwIHZlcnRpY2FsbHkiLCAidmVydGljYWwtZmxpcCJ9LAorICB7R1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVUxfTFIsCisgICAgICAiRmxpcCBhY3Jvc3MgdXBwZXIgbGVmdC9sb3dlciByaWdodCBkaWFnb25hbCIsICJ1cHBlci1sZWZ0LWRpYWdvbmFsIn0sCisgIHtHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VUl9MTCwKKyAgICAgICJGbGlwIGFjcm9zcyB1cHBlciByaWdodC9sb3dlciBsZWZ0IGRpYWdvbmFsIiwgInVwcGVyLXJpZ2h0LWRpYWdvbmFsIn0sCisgIHtHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfQVVUTywKKyAgICAgICJTZWxlY3QgZmxpcCBtZXRob2QgYmFzZWQgb24gaW1hZ2Utb3JpZW50YXRpb24gdGFnIiwgImF1dG9tYXRpYyJ9LAorICB7MCwgTlVMTCwgTlVMTH0sCit9OworCitzdGF0aWMgR1R5cGUKK2dzdF92aWRlb19mbGlwX21ldGhvZF9nZXRfdHlwZSAodm9pZCkKK3sKKyAgc3RhdGljIEdUeXBlIHZpZGVvX2ZsaXBfbWV0aG9kX3R5cGUgPSAwOworCisgIGlmICghdmlkZW9fZmxpcF9tZXRob2RfdHlwZSkgeworICAgIHZpZGVvX2ZsaXBfbWV0aG9kX3R5cGUgPSBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0R0xWaWRlb0ZsaXBNZXRob2QiLAorICAgICAgICB2aWRlb19mbGlwX21ldGhvZHMpOworICB9CisgIHJldHVybiB2aWRlb19mbGlwX21ldGhvZF90eXBlOworfQorCisjZGVmaW5lIGdzdF9nbF92aWRlb19mbGlwX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RHTFZpZGVvRmxpcCwgZ3N0X2dsX3ZpZGVvX2ZsaXAsCisgICAgR1NUX1RZUEVfQklOLCBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULAorICAgICAgICAiZ2x2aWRlb2ZsaXAiLCAwLCAiZ2x2aWRlb2ZsaXAgZWxlbWVudCIpOyk7CisKK3N0YXRpYyB2b2lkIGdzdF9nbF92aWRlb19mbGlwX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyB2b2lkIGdzdF9nbF92aWRlb19mbGlwX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9nbF92aWRlb19mbGlwX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKKworc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuIF9pbnB1dF9zaW5rX3Byb2JlIChHc3RQYWQgKiBwYWQsCisgICAgR3N0UGFkUHJvYmVJbmZvICogaW5mbywgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybiBfdHJhbnNfc3JjX3Byb2JlIChHc3RQYWQgKiBwYWQsIEdzdFBhZFByb2JlSW5mbyAqIGluZm8sCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworc3RhdGljIHZvaWQKK2dzdF9nbF92aWRlb19mbGlwX2NsYXNzX2luaXQgKEdzdEdMVmlkZW9GbGlwQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3M7CisKKyAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisgIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2dsX3ZpZGVvX2ZsaXBfZmluYWxpemU7CisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9nbF92aWRlb19mbGlwX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dsX3ZpZGVvX2ZsaXBfZ2V0X3Byb3BlcnR5OworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUVUSE9ELAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJtZXRob2QiLCAibWV0aG9kIiwgIm1ldGhvZCIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fRkxJUF9NRVRIT0QsIERFRkFVTFRfTUVUSE9ELAorICAgICAgICAgIEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUIHwKKyAgICAgICAgICBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJl9zcmNfdGVtcGxhdGUpKTsKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJl9zaW5rX3RlbXBsYXRlKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChlbGVtZW50X2NsYXNzLCAiT3BlbkdMIHZpZGVvIGZsaXAgZmlsdGVyIiwKKyAgICAgICJGaWx0ZXIvRWZmZWN0L1ZpZGVvIiwgIkZsaXAgdmlkZW8gb24gdGhlIEdQVSIsCisgICAgICAiTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPiIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3ZpZGVvX2ZsaXBfaW5pdCAoR3N0R0xWaWRlb0ZsaXAgKiBmbGlwKQoreworICBnYm9vbGVhbiByZXMgPSBUUlVFOworICBHc3RQYWQgKnBhZDsKKworICBmbGlwLT5hc3BlY3QgPSAxLjA7CisKKyAgZmxpcC0+aW5wdXRfY2Fwc2ZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImNhcHNmaWx0ZXIiLCBOVUxMKTsKKyAgcmVzICY9IGdzdF9iaW5fYWRkIChHU1RfQklOIChmbGlwKSwgZmxpcC0+aW5wdXRfY2Fwc2ZpbHRlcik7CisKKyAgZmxpcC0+dHJhbnNmb3JtYXRpb24gPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJnbHRyYW5zZm9ybWF0aW9uIiwgTlVMTCk7CisgIGdfb2JqZWN0X3NldCAoZmxpcC0+dHJhbnNmb3JtYXRpb24sICJvcnRobyIsIFRSVUUsIE5VTEwpOworICByZXMgJj0gZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKGZsaXApLCBmbGlwLT50cmFuc2Zvcm1hdGlvbik7CisKKyAgZmxpcC0+b3V0cHV0X2NhcHNmaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJjYXBzZmlsdGVyIiwgTlVMTCk7CisgIHJlcyAmPSBnc3RfYmluX2FkZCAoR1NUX0JJTiAoZmxpcCksIGZsaXAtPm91dHB1dF9jYXBzZmlsdGVyKTsKKworICByZXMgJj0KKyAgICAgIGdzdF9lbGVtZW50X2xpbmtfcGFkcyAoZmxpcC0+aW5wdXRfY2Fwc2ZpbHRlciwgInNyYyIsCisgICAgICBmbGlwLT50cmFuc2Zvcm1hdGlvbiwgInNpbmsiKTsKKyAgcmVzICY9CisgICAgICBnc3RfZWxlbWVudF9saW5rX3BhZHMgKGZsaXAtPnRyYW5zZm9ybWF0aW9uLCAic3JjIiwKKyAgICAgIGZsaXAtPm91dHB1dF9jYXBzZmlsdGVyLCAic2luayIpOworCisgIHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChmbGlwLT5pbnB1dF9jYXBzZmlsdGVyLCAic2luayIpOworICBpZiAoIXBhZCkgeworICAgIHJlcyA9IEZBTFNFOworICB9IGVsc2UgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZsaXAsICJzZXR0aW5nIHRhcmdldCBzaW5rIHBhZCAlIiBHU1RfUFRSX0ZPUk1BVCwgcGFkKTsKKyAgICBmbGlwLT5zaW5rcGFkID0gZ3N0X2dob3N0X3BhZF9uZXcgKCJzaW5rIiwgcGFkKTsKKyAgICBmbGlwLT5zaW5rX3Byb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUgKGZsaXAtPnNpbmtwYWQsCisgICAgICAgIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNIHwKKyAgICAgICAgR1NUX1BBRF9QUk9CRV9UWVBFX1FVRVJZX0RPV05TVFJFQU0sCisgICAgICAgIChHc3RQYWRQcm9iZUNhbGxiYWNrKSBfaW5wdXRfc2lua19wcm9iZSwgZmxpcCwgTlVMTCk7CisgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlRfQ0FTVCAoZmxpcCksIGZsaXAtPnNpbmtwYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHBhZCk7CisgIH0KKworICBwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoZmxpcC0+dHJhbnNmb3JtYXRpb24sICJzcmMiKTsKKyAgZmxpcC0+c3JjX3Byb2JlID0gZ3N0X3BhZF9hZGRfcHJvYmUgKHBhZCwKKyAgICAgIEdTVF9QQURfUFJPQkVfVFlQRV9RVUVSWV9ET1dOU1RSRUFNLAorICAgICAgKEdzdFBhZFByb2JlQ2FsbGJhY2spIF90cmFuc19zcmNfcHJvYmUsIGZsaXAsIE5VTEwpOworICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOworCisgIHBhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChmbGlwLT5vdXRwdXRfY2Fwc2ZpbHRlciwgInNyYyIpOworICBpZiAoIXBhZCkgeworICAgIHJlcyA9IEZBTFNFOworICB9IGVsc2UgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZsaXAsICJzZXR0aW5nIHRhcmdldCBzaW5rIHBhZCAlIiBHU1RfUFRSX0ZPUk1BVCwgcGFkKTsKKyAgICBmbGlwLT5zcmNwYWQgPSBnc3RfZ2hvc3RfcGFkX25ldyAoInNyYyIsIHBhZCk7CisgICAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlRfQ0FTVCAoZmxpcCksIGZsaXAtPnNyY3BhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocGFkKTsKKyAgfQorCisgIGlmICghcmVzKSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmbGlwLCAiRmFpbGVkIHRvIGFkZC9jb25uZWN0IHRoZSBuZWNlc3NhcnkgbWFjaGluZXJ5Iik7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF92aWRlb19mbGlwX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RHTFZpZGVvRmxpcCAqZmxpcCA9IEdTVF9HTF9WSURFT19GTElQIChvYmplY3QpOworCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZmbGlwLT5pbnB1dF9jYXBzLCBOVUxMKTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKKy8qIENhcHMgbmVnb3RpYXRpb24gaGFwcGVucyBsaWtlIHRoaXM6CisgKgorICogMS4gY2Fwcy9hY2NlcHQtY2FwcyBxdWVyaWVzIGJ5cGFzcyB0aGUgY2Fwc2ZpbHRlcnMgb24gZWl0aGVyIHNpZGUgb2YgdGhlCisgKiAgICB0cmFuc2Zvcm1hdGlvbiBlbGVtZW50IHNvIHRoZSBmaXhlZCBjYXBzIGRvbid0IGdldCBpbiB0aGUgd2F5LgorICogMi4gUmVjZWl2aW5nIGEgY2FwcyBldmVudCBvbiB0aGUgc2luayBwYWQgd2lsbCBzZXQgZml4ZWQgY2FwcyBvbiBlaXRoZXIgc2lkZQorICogICAgb2YgdGhlIHRyYW5zZm9ybWF0aW9uIGVsZW1lbnQuCisgKi8KK3N0YXRpYyBHc3RDYXBzICoKK190cmFuc2Zvcm1fY2FwcyAoR3N0R0xWaWRlb0ZsaXAgKiB2ZiwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMpCit7CisgIEdzdENhcHMgKm91dHB1dCA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOworICBnaW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IGdzdF9jYXBzX2dldF9zaXplIChvdXRwdXQpOyBpKyspIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG91dHB1dCwgaSk7CisgICAgZ2ludCB3aWR0aCwgaGVpZ2h0OworICAgIGdpbnQgcGFyX24sIHBhcl9kOworCisgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAid2lkdGgiLCAmd2lkdGgpICYmCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCkpIHsKKworICAgICAgc3dpdGNoICh2Zi0+YWN0aXZlX21ldGhvZCkgeworICAgICAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF85MFI6CisgICAgICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwTDoKKyAgICAgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VTF9MUjoKKyAgICAgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VUl9MTDoKKyAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAoc3RydWN0dXJlLCAid2lkdGgiLCBHX1RZUEVfSU5ULCBoZWlnaHQsCisgICAgICAgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCB3aWR0aCwgTlVMTCk7CisgICAgICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uIChzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iLAorICAgICAgICAgICAgICAgICAgJnBhcl9uLCAmcGFyX2QpKSB7CisgICAgICAgICAgICBpZiAocGFyX24gIT0gMSB8fCBwYXJfZCAhPSAxKSB7CisgICAgICAgICAgICAgIEdWYWx1ZSB2YWwgPSB7IDAsIH07CisKKyAgICAgICAgICAgICAgZ192YWx1ZV9pbml0ICgmdmFsLCBHU1RfVFlQRV9GUkFDVElPTik7CisgICAgICAgICAgICAgIGdzdF92YWx1ZV9zZXRfZnJhY3Rpb24gKCZ2YWwsIHBhcl9kLCBwYXJfbik7CisgICAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAmdmFsKTsKKyAgICAgICAgICAgICAgZ192YWx1ZV91bnNldCAoJnZhbCk7CisgICAgICAgICAgICB9CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9JREVOVElUWToKKyAgICAgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfMTgwOgorICAgICAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX0hPUklaOgorICAgICAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1ZFUlQ6CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisKKyAgcmV0dXJuIG91dHB1dDsKK30KKworLyogd2l0aCBvYmplY3QgbG9jayAqLworc3RhdGljIHZvaWQKK19zZXRfYWN0aXZlX21ldGhvZCAoR3N0R0xWaWRlb0ZsaXAgKiB2ZiwgR3N0R0xWaWRlb0ZsaXBNZXRob2QgbWV0aG9kLAorICAgIEdzdENhcHMgKiBjYXBzKQoreworICBnZmxvYXQgcm90X3ogPSAwLiwgc2NhbGVfeCA9IDEuMCwgc2NhbGVfeSA9IDEuMDsKKyAgR3N0Q2FwcyAqb3V0cHV0X2NhcHMsICp0ZW1wbDsKKyAgR3N0UGFkICpzcmNwYWQ7CisKKyAgc3dpdGNoIChtZXRob2QpIHsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9JREVOVElUWToKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwUjoKKyAgICAgIHNjYWxlX3ggKj0gdmYtPmFzcGVjdDsKKyAgICAgIHNjYWxlX3kgKj0gMS4gLyB2Zi0+YXNwZWN0OworICAgICAgcm90X3ogPSA5MC47CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF8xODA6CisgICAgICByb3RfeiA9IDE4MC47CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF85MEw6CisgICAgICBzY2FsZV94ICo9IHZmLT5hc3BlY3Q7CisgICAgICBzY2FsZV95ICo9IDEuIC8gdmYtPmFzcGVjdDsKKyAgICAgIHJvdF96ID0gMjcwLjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfSE9SSVo6CisgICAgICBzY2FsZV94ICo9IC0xLjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVVJfTEw6CisgICAgICBzY2FsZV94ICo9IC12Zi0+YXNwZWN0OworICAgICAgc2NhbGVfeSAqPSAxLiAvIHZmLT5hc3BlY3Q7CisgICAgICByb3RfeiA9IDkwLjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVkVSVDoKKyAgICAgIHNjYWxlX3ggKj0gLTEuOworICAgICAgcm90X3ogPSAxODAuOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VTF9MUjoKKyAgICAgIHNjYWxlX3ggKj0gLXZmLT5hc3BlY3Q7CisgICAgICBzY2FsZV95ICo9IDEuIC8gdmYtPmFzcGVjdDsKKyAgICAgIHJvdF96ID0gMjcwLjsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorICB2Zi0+YWN0aXZlX21ldGhvZCA9IG1ldGhvZDsKKworICBvdXRwdXRfY2FwcyA9IF90cmFuc2Zvcm1fY2FwcyAodmYsIEdTVF9QQURfU0lOSywgY2Fwcyk7CisgIGdzdF9jYXBzX3JlcGxhY2UgKCZ2Zi0+aW5wdXRfY2FwcywgY2Fwcyk7CisKKyAgc3JjcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHZmLT50cmFuc2Zvcm1hdGlvbiwgInNyYyIpOworICB0ZW1wbCA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChzcmNwYWQpOworICBnc3Rfb2JqZWN0X3VucmVmIChzcmNwYWQpOworCisgIGdzdF9jYXBzX2FwcGVuZCAob3V0cHV0X2NhcHMsIGdzdF9jYXBzX3JlZiAodGVtcGwpKTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHZmKTsKKworICBnX29iamVjdF9zZXQgKHZmLT5pbnB1dF9jYXBzZmlsdGVyLCAiY2FwcyIsIGdzdF9jYXBzX3JlZiAoY2FwcyksIE5VTEwpOworICBnX29iamVjdF9zZXQgKHZmLT5vdXRwdXRfY2Fwc2ZpbHRlciwgImNhcHMiLCBvdXRwdXRfY2FwcywgTlVMTCk7CisgIGdfb2JqZWN0X3NldCAodmYtPnRyYW5zZm9ybWF0aW9uLCAicm90YXRpb24teiIsIHJvdF96LCAic2NhbGUteCIsIHNjYWxlX3gsCisgICAgICAic2NhbGUteSIsIHNjYWxlX3ksIE5VTEwpOworICBHU1RfT0JKRUNUX0xPQ0sgKHZmKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF92aWRlb19mbGlwX3NldF9tZXRob2QgKEdzdEdMVmlkZW9GbGlwICogdmYsIEdzdEdMVmlkZW9GbGlwTWV0aG9kIG1ldGhvZCwKKyAgICBnYm9vbGVhbiBmcm9tX3RhZykKK3sKKyAgR1NUX09CSkVDVF9MT0NLICh2Zik7CisgIC8qIFN0b3JlIHVwZGF0ZWQgbWV0aG9kICovCisgIGlmIChmcm9tX3RhZykKKyAgICB2Zi0+dGFnX21ldGhvZCA9IG1ldGhvZDsKKyAgZWxzZQorICAgIHZmLT5tZXRob2QgPSBtZXRob2Q7CisKKyAgLyogR2V0IHRoZSBuZXcgbWV0aG9kICovCisgIGlmICh2Zi0+bWV0aG9kID09IEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9BVVRPKQorICAgIG1ldGhvZCA9IHZmLT50YWdfbWV0aG9kOworICBlbHNlCisgICAgbWV0aG9kID0gdmYtPm1ldGhvZDsKKworICBpZiAodmYtPmlucHV0X2NhcHMpCisgICAgX3NldF9hY3RpdmVfbWV0aG9kICh2ZiwgbWV0aG9kLCB2Zi0+aW5wdXRfY2Fwcyk7CisgIGVsc2UgeworICAgIC8qIGp1c3Qgc3RvcmUgdGhlIGNvbmZpZ3VyZWQgbWV0aG9kIGhlcmUuIFRoZSBhY3R1YWwgdHJhbnNmb3JtIGNvbmZpZ3VyYXRpb24KKyAgICAgKiB3aWxsIGJlIGRvbmUgb25jZSBjYXBzIGFyZSBjb25maWd1cmVkLiBTZWUgY2FwcyBoYW5kbGluZyBpbgorICAgICAqIF9pbnB1dF9zaW5rX3Byb2JlLiAqLworICAgIHZmLT5hY3RpdmVfbWV0aG9kID0gbWV0aG9kOworICB9CisKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHZmKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF92aWRlb19mbGlwX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RHTFZpZGVvRmxpcCAqdmYgPSBHU1RfR0xfVklERU9fRkxJUCAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfTUVUSE9EOgorICAgICAgZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X21ldGhvZCAodmYsIGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKSwgRkFMU0UpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX3ZpZGVvX2ZsaXBfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdEdMVmlkZW9GbGlwICp2ZiA9IEdTVF9HTF9WSURFT19GTElQIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9NRVRIT0Q6CisgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgdmYtPm1ldGhvZCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybgorX2lucHV0X3NpbmtfcHJvYmUgKEdzdFBhZCAqIHBhZCwgR3N0UGFkUHJvYmVJbmZvICogaW5mbywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RHTFZpZGVvRmxpcCAqdmYgPSBHU1RfR0xfVklERU9fRkxJUCAodXNlcl9kYXRhKTsKKworICBpZiAoR1NUX1BBRF9QUk9CRV9JTkZPX1RZUEUgKGluZm8pICYgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0pIHsKKyAgICBHc3RFdmVudCAqZXZlbnQgPSBHU1RfUEFEX1BST0JFX0lORk9fRVZFTlQgKGluZm8pOworCisgICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgICBjYXNlIEdTVF9FVkVOVF9UQUc6eworICAgICAgICBHc3RUYWdMaXN0ICp0YWdsaXN0OworICAgICAgICBnY2hhciAqb3JpZW50YXRpb247CisKKyAgICAgICAgZ3N0X2V2ZW50X3BhcnNlX3RhZyAoZXZlbnQsICZ0YWdsaXN0KTsKKworICAgICAgICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zdHJpbmcgKHRhZ2xpc3QsICJpbWFnZS1vcmllbnRhdGlvbiIsCisgICAgICAgICAgICAgICAgJm9yaWVudGF0aW9uKSkgeworICAgICAgICAgIGlmICghZ19zdHJjbXAwICgicm90YXRlLTAiLCBvcmllbnRhdGlvbikpCisgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0lERU5USVRZLAorICAgICAgICAgICAgICAgIFRSVUUpOworICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKCJyb3RhdGUtOTAiLCBvcmllbnRhdGlvbikpCisgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwUiwKKyAgICAgICAgICAgICAgICBUUlVFKTsKKyAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwICgicm90YXRlLTE4MCIsIG9yaWVudGF0aW9uKSkKKyAgICAgICAgICAgIGdzdF9nbF92aWRlb19mbGlwX3NldF9tZXRob2QgKHZmLCBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfMTgwLAorICAgICAgICAgICAgICAgIFRSVUUpOworICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKCJyb3RhdGUtMjcwIiwgb3JpZW50YXRpb24pKQorICAgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X21ldGhvZCAodmYsIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF85MEwsCisgICAgICAgICAgICAgICAgVFJVRSk7CisgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCAoImZsaXAtcm90YXRlLTAiLCBvcmllbnRhdGlvbikpCisgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwKKyAgICAgICAgICAgICAgICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9IT1JJWiwgVFJVRSk7CisgICAgICAgICAgZWxzZSBpZiAoIWdfc3RyY21wMCAoImZsaXAtcm90YXRlLTkwIiwgb3JpZW50YXRpb24pKQorICAgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X21ldGhvZCAodmYsCisgICAgICAgICAgICAgICAgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVVJfTEwsIFRSVUUpOworICAgICAgICAgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKCJmbGlwLXJvdGF0ZS0xODAiLCBvcmllbnRhdGlvbikpCisgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fZmxpcF9zZXRfbWV0aG9kICh2ZiwKKyAgICAgICAgICAgICAgICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9WRVJULCBUUlVFKTsKKyAgICAgICAgICBlbHNlIGlmICghZ19zdHJjbXAwICgiZmxpcC1yb3RhdGUtMjcwIiwgb3JpZW50YXRpb24pKQorICAgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2ZsaXBfc2V0X21ldGhvZCAodmYsCisgICAgICAgICAgICAgICAgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVUxfTFIsIFRSVUUpOworCisgICAgICAgICAgZ19mcmVlIChvcmllbnRhdGlvbik7CisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOnsKKyAgICAgICAgR3N0Q2FwcyAqY2FwczsKKyAgICAgICAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKKworICAgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKKyAgICAgICAgR1NUX09CSkVDVF9MT0NLICh2Zik7CisgICAgICAgIGlmIChnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZ2X2luZm8sIGNhcHMpKQorICAgICAgICAgIHZmLT5hc3BlY3QgPQorICAgICAgICAgICAgICAoZ2Zsb2F0KSBHU1RfVklERU9fSU5GT19XSURUSCAoJnZfaW5mbykgLworICAgICAgICAgICAgICAoZ2Zsb2F0KSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZ2X2luZm8pOworICAgICAgICBlbHNlCisgICAgICAgICAgdmYtPmFzcGVjdCA9IDEuMDsKKyAgICAgICAgX3NldF9hY3RpdmVfbWV0aG9kICh2ZiwgdmYtPmFjdGl2ZV9tZXRob2QsIGNhcHMpOworICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAodmYpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfSBlbHNlIGlmIChHU1RfUEFEX1BST0JFX0lORk9fVFlQRSAoaW5mbykgJgorICAgICAgR1NUX1BBRF9QUk9CRV9UWVBFX1FVRVJZX0RPV05TVFJFQU0pIHsKKyAgICBHc3RRdWVyeSAqcXVlcnkgPSBHU1RfUEFEX1BST0JFX0lORk9fUVVFUlkgKGluZm8pOworCisgICAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CisgICAgICAgIC8qIGJ5cGFzcyB0aGUgY2Fwc2ZpbHRlciAqLworICAgICAgY2FzZSBHU1RfUVVFUllfQ0FQUzoKKyAgICAgIGNhc2UgR1NUX1FVRVJZX0FDQ0VQVF9DQVBTOnsKKyAgICAgICAgR3N0UGFkICpwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAodmYtPnRyYW5zZm9ybWF0aW9uLCAic2luayIpOworICAgICAgICBpZiAoZ3N0X3BhZF9xdWVyeSAocGFkLCBxdWVyeSkpIHsKKyAgICAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChwYWQpOworICAgICAgICAgIHJldHVybiBHU1RfUEFEX1BST0JFX0hBTkRMRUQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZ3N0X29iamVjdF91bnJlZiAocGFkKTsKKyAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9EUk9QOworICAgICAgICB9CisgICAgICB9CisgICAgICBkZWZhdWx0OgorICAgICAgICBicmVhazsKKyAgICB9CisgIH0KKworICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKK30KKworc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuCitfdHJhbnNfc3JjX3Byb2JlIChHc3RQYWQgKiBwYWQsIEdzdFBhZFByb2JlSW5mbyAqIGluZm8sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0R0xWaWRlb0ZsaXAgKnZmID0gR1NUX0dMX1ZJREVPX0ZMSVAgKHVzZXJfZGF0YSk7CisKKyAgaWYgKEdTVF9QQURfUFJPQkVfSU5GT19UWVBFIChpbmZvKSAmIEdTVF9QQURfUFJPQkVfVFlQRV9RVUVSWV9ET1dOU1RSRUFNKSB7CisgICAgR3N0UXVlcnkgKnF1ZXJ5ID0gR1NUX1BBRF9QUk9CRV9JTkZPX1FVRVJZIChpbmZvKTsKKworICAgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgeworICAgICAgICAvKiBieXBhc3MgdGhlIGNhcHNmaWx0ZXIgKi8KKyAgICAgIGNhc2UgR1NUX1FVRVJZX0NBUFM6CisgICAgICBjYXNlIEdTVF9RVUVSWV9BQ0NFUFRfQ0FQUzp7CisgICAgICAgIGlmIChnc3RfcGFkX3BlZXJfcXVlcnkgKHZmLT5zcmNwYWQsIHF1ZXJ5KSkKKyAgICAgICAgICByZXR1cm4gR1NUX1BBRF9QUk9CRV9IQU5ETEVEOworICAgICAgICBlbHNlCisgICAgICAgICAgcmV0dXJuIEdTVF9QQURfUFJPQkVfRFJPUDsKKyAgICAgIH0KKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGJyZWFrOworICAgIH0KKyAgfQorCisgIHJldHVybiBHU1RfUEFEX1BST0JFX09LOworfQpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmggYi9leHQvZ2wvZ3N0Z2x2aWRlb2ZsaXAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjhlODFiCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L2dsL2dzdGdsdmlkZW9mbGlwLmgKQEAgLTAsMCArMSw5NyBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9HU1RfR0xfVklERU9fRkxJUF9IXworI2RlZmluZSBfR1NUX0dMX1ZJREVPX0ZMSVBfSF8KKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfR0xfVklERU9fRkxJUCAgICAgICAgICAgIChnc3RfZ2xfdmlkZW9fZmxpcF9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfR0xfVklERU9fRkxJUChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX0dMX1ZJREVPX0ZMSVAsR3N0R0xWaWRlb0ZsaXApKQorI2RlZmluZSBHU1RfSVNfR0xfVklERU9fRkxJUChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX0dMX1ZJREVPX0ZMSVApKQorI2RlZmluZSBHU1RfR0xfVklERU9fRkxJUF9DTEFTUyhrbGFzcykgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcykgLEdTVF9UWVBFX0dMX1ZJREVPX0ZMSVAsR3N0R0xWaWRlb0ZsaXBDbGFzcykpCisjZGVmaW5lIEdTVF9JU19HTF9WSURFT19GTElQX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSAsR1NUX1RZUEVfR0xfVklERU9fRkxJUCkpCisjZGVmaW5lIEdTVF9HTF9WSURFT19GTElQX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSAsR1NUX1RZUEVfR0xfVklERU9fRkxJUCxHc3RHTFZpZGVvRmxpcENsYXNzKSkKKworLyoqCisgKiBHc3RWaWRlb0ZsaXBNZXRob2Q6CisgKiBAR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0lERU5USVRZOiBJZGVudGl0eSAobm8gcm90YXRpb24pCisgKiBAR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwUjogUm90YXRlIGNsb2Nrd2lzZSA5MCBkZWdyZWVzCisgKiBAR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzE4MDogUm90YXRlIDE4MCBkZWdyZWVzCisgKiBAR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EXzkwTDogUm90YXRlIGNvdW50ZXItY2xvY2t3aXNlIDkwIGRlZ3JlZXMKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9IT1JJWjogRmxpcCBob3Jpem9udGFsbHkKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9WRVJUOiBGbGlwIHZlcnRpY2FsbHkKKyAqIEBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9VTF9MUjogRmxpcCBhY3Jvc3MgdXBwZXIgbGVmdC9sb3dlciByaWdodCBkaWFnb25hbAorICogQEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1VSX0xMOiBGbGlwIGFjcm9zcyB1cHBlciByaWdodC9sb3dlciBsZWZ0IGRpYWdvbmFsCisgKiBAR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0FVVE86IFNlbGVjdCBmbGlwIG1ldGhvZCBiYXNlZCBvbiBpbWFnZS1vcmllbnRhdGlvbiB0YWcKKyAqCisgKiBUaGUgZGlmZmVyZW50IGZsaXAgbWV0aG9kcy4KKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0lERU5USVRZLAorICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfOTBSLAorICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfMTgwLAorICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfOTBMLAorICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfRkxJUF9IT1JJWiwKKyAgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVkVSVCwKKyAgR1NUX0dMX1ZJREVPX0ZMSVBfTUVUSE9EX0ZMSVBfVUxfTFIsCisgIEdTVF9HTF9WSURFT19GTElQX01FVEhPRF9GTElQX1VSX0xMLAorICBHU1RfR0xfVklERU9fRkxJUF9NRVRIT0RfQVVUTywKK30gR3N0R0xWaWRlb0ZsaXBNZXRob2Q7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFZpZGVvRmxpcCBHc3RHTFZpZGVvRmxpcDsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFZpZGVvRmxpcENsYXNzIEdzdEdMVmlkZW9GbGlwQ2xhc3M7CisKK3N0cnVjdCBfR3N0R0xWaWRlb0ZsaXAKK3sKKyAgR3N0QmluICAgICAgICBiaW47CisKKyAgR3N0UGFkICAgICAgICpzcmNwYWQ7CisgIEdzdFBhZCAgICAgICAqc2lua3BhZDsKKworICBHc3RFbGVtZW50ICAgKmlucHV0X2NhcHNmaWx0ZXI7CisgIEdzdEVsZW1lbnQgICAqdHJhbnNmb3JtYXRpb247CisgIEdzdEVsZW1lbnQgICAqb3V0cHV0X2NhcHNmaWx0ZXI7CisKKyAgZ3Vsb25nICAgICAgICBzaW5rX3Byb2JlOworICBndWxvbmcgICAgICAgIHNyY19wcm9iZTsKKworICBHc3RDYXBzICAgICAgKmlucHV0X2NhcHM7CisKKyAgLyogcHJvcGVydGllcyAqLworICBHc3RHTFZpZGVvRmxpcE1ldGhvZCBtZXRob2Q7CisgIEdzdEdMVmlkZW9GbGlwTWV0aG9kIHRhZ19tZXRob2Q7CisgIEdzdEdMVmlkZW9GbGlwTWV0aG9kIGFjdGl2ZV9tZXRob2Q7CisKKyAgZ2Zsb2F0IGFzcGVjdDsKK307CisKK3N0cnVjdCBfR3N0R0xWaWRlb0ZsaXBDbGFzcworeworICBHc3RCaW5DbGFzcyBmaWx0ZXJfY2xhc3M7Cit9OworCitHVHlwZSBnc3RfZ2xfdmlkZW9fZmxpcF9nZXRfdHlwZSAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfR1NUX0dMX1ZJREVPX0ZMSVBfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYyBiL2V4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuYwppbmRleCA5Mzc2NzkzLi4yMDhhNmRmIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmMKKysrIGIvZXh0L2dsL2dzdGdsdmlkZW9taXhlci5jCkBAIC03MSwxNTEgKzcxLDcyIEBACiAgIHJldHVybiBtaXhlcl9iYWNrZ3JvdW5kX3R5cGU7CiB9CiAKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSBHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eUNsYXNzCi0gICAgR3N0R0xNaXhlckNvbnRyb2xCaW5kaW5nUHJveHlDbGFzczsKLQotc3RydWN0IF9Hc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eQorI2RlZmluZSBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTiAoZ3N0X2dsX3ZpZGVvX21peGVyX2JsZW5kX2VxdWF0aW9uX2dldF90eXBlKCkpCitzdGF0aWMgR1R5cGUKK2dzdF9nbF92aWRlb19taXhlcl9ibGVuZF9lcXVhdGlvbl9nZXRfdHlwZSAodm9pZCkKIHsKLSAgR3N0Q29udHJvbEJpbmRpbmcgcGFyZW50OworICBzdGF0aWMgR1R5cGUgbWl4ZXJfYmxlbmRfZXF1YXRpb25fdHlwZSA9IDA7CiAKLSAgR3N0T2JqZWN0ICpyZWZfb2JqZWN0OwotICBjb25zdCBnY2hhciAqcHJvcGVydHlfbmFtZTsKLX07CisgIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIG1peGVyX2JsZW5kX2VxdWF0aW9uc1tdID0geworICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fQURELCAiQWRkIiwgImFkZCJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fU1VCVFJBQ1QsICJTdWJ0cmFjdCIsICJzdWJ0cmFjdCJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fUkVWRVJTRV9TVUJUUkFDVCwgIlJldmVyc2UgU3VidHJhY3QiLAorICAgICAgICAicmV2ZXJzZS1zdWJ0cmFjdCJ9LAorICAgIHswLCBOVUxMLCBOVUxMfSwKKyAgfTsKIAotc3RydWN0IF9Hc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eUNsYXNzCi17Ci0gIEdzdENvbnRyb2xCaW5kaW5nQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotR1R5cGUgZ3N0X2dsX21peGVyX2NvbnRyb2xfYmluZGluZ19wcm94eV9nZXRfdHlwZSAodm9pZCk7Ci0jZGVmaW5lIEdTVF9UWVBFX0dMX01JWEVSX0NPTlRST0xfQklORElORyBcCi0gIChnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF90eXBlKCkpCi0KLUdfREVGSU5FX1RZUEUgKEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5LAotICAgIGdzdF9nbF9taXhlcl9jb250cm9sX2JpbmRpbmdfcHJveHksIEdTVF9UWVBFX0NPTlRST0xfQklORElORyk7Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2luaXQgKEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICogc2VsZikKLXsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X3N5bmNfdmFsdWVzIChHc3RDb250cm9sQmluZGluZyAqIGJpbmRpbmcsCi0gICAgR3N0T2JqZWN0ICogb2JqZWN0LCBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLCBHc3RDbG9ja1RpbWUgbGFzdF9zeW5jKQotewotICBHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSAqc2VsZiA9IChHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSAqKQotICAgICAgYmluZGluZzsKLSAgR3N0Q29udHJvbEJpbmRpbmcgKnJlZl9iaW5kaW5nOwotICBnYm9vbGVhbiByZXQgPSBUUlVFOwotCi0gIHJlZl9iaW5kaW5nID0gZ3N0X29iamVjdF9nZXRfY29udHJvbF9iaW5kaW5nIChzZWxmLT5yZWZfb2JqZWN0LAotICAgICAgc2VsZi0+cHJvcGVydHlfbmFtZSk7Ci0KLSAgaWYgKHJlZl9iaW5kaW5nKSB7Ci0gICAgcmV0ID0gZ3N0X2NvbnRyb2xfYmluZGluZ19zeW5jX3ZhbHVlcyAocmVmX2JpbmRpbmcsIHNlbGYtPnJlZl9vYmplY3QsCi0gICAgICAgIHRpbWVzdGFtcCwgbGFzdF9zeW5jKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChyZWZfYmluZGluZyk7CisgIGlmICghbWl4ZXJfYmxlbmRfZXF1YXRpb25fdHlwZSkgeworICAgIG1peGVyX2JsZW5kX2VxdWF0aW9uX3R5cGUgPQorICAgICAgICBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0R0xWaWRlb01peGVyQmxlbmRFcXVhdGlvbiIsCisgICAgICAgIG1peGVyX2JsZW5kX2VxdWF0aW9ucyk7CiAgIH0KLQotICByZXR1cm4gcmV0OworICByZXR1cm4gbWl4ZXJfYmxlbmRfZXF1YXRpb25fdHlwZTsKIH0KIAotc3RhdGljIEdWYWx1ZSAqCi1nc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZSAoR3N0Q29udHJvbEJpbmRpbmcgKiBiaW5kaW5nLAotICAgIEdzdENsb2NrVGltZSB0aW1lc3RhbXApCisjZGVmaW5lIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OIChnc3RfZ2xfdmlkZW9fbWl4ZXJfYmxlbmRfZnVuY3Rpb25fZ2V0X3R5cGUoKSkKK3N0YXRpYyBHVHlwZQorZ3N0X2dsX3ZpZGVvX21peGVyX2JsZW5kX2Z1bmN0aW9uX2dldF90eXBlICh2b2lkKQogewotICBHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSAqc2VsZiA9IChHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSAqKQotICAgICAgYmluZGluZzsKLSAgR3N0Q29udHJvbEJpbmRpbmcgKnJlZl9iaW5kaW5nOwotICBHVmFsdWUgKnJldCA9IE5VTEw7CisgIHN0YXRpYyBHVHlwZSBtaXhlcl9ibGVuZF9mdW5jdGlvbl90eXBlID0gMDsKIAotICByZWZfYmluZGluZyA9IGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xfYmluZGluZyAoc2VsZi0+cmVmX29iamVjdCwKLSAgICAgIHNlbGYtPnByb3BlcnR5X25hbWUpOworICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSBtaXhlcl9ibGVuZF9mdW5jc1tdID0geworICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fWkVSTywgIlplcm8iLCAiemVybyJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FLCAiT25lIiwgIm9uZSJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0NPTE9SLCAiU291cmNlIENvbG9yIiwgInNyYy1jb2xvciJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX1NSQ19DT0xPUiwKKyAgICAgICAgIk9uZSBNaW51cyBTb3VyY2UgQ29sb3IiLCAib25lLW1pbnVzLXNyYy1jb2xvciJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fRFNUX0NPTE9SLCAiRGVzdGluYXRpb24gQ29sb3IiLAorICAgICAgICAiZHN0LWNvbG9yIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfRFNUX0NPTE9SLAorICAgICAgICAiT25lIE1pbnVzIERlc3RpbmF0aW9uIENvbG9yIiwgIm9uZS1taW51cy1kc3QtY29sb3IifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQSwgIlNvdXJjZSBBbHBoYSIsICJzcmMtYWxwaGEifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQUxQSEEsCisgICAgICAgICJPbmUgTWludXMgU291cmNlIEFscGhhIiwgIm9uZS1taW51cy1zcmMtYWxwaGEifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0RTVF9BTFBIQSwgIkRlc3RpbmF0aW9uIEFscGhhIiwKKyAgICAgICAgImRzdC1hbHBoYSJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0RTVF9BTFBIQSwKKyAgICAgICAgIk9uZSBNaW51cyBEZXN0aW5hdGlvbiBBbHBoYSIsICJvbmUtbWludXMtZHN0LWFscGhhIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUiwgIkNvbnN0YW50IENvbG9yIiwKKyAgICAgICAgImNvbnN0YW50LWNvbG9yIn0sCisgICAge0dTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1IsCisgICAgICAgICJPbmUgTWludXMgQ29uc3RhbnQgQ29sb3IiLCAib25lLW1pbnVzLWNvbnRhbnQtY29sb3IifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0FMUEhBLCAiQ29uc3RhbnQgQWxwaGEiLAorICAgICAgICAiY29uc3RhbnQtYWxwaGEifSwKKyAgICB7R1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUiwKKyAgICAgICAgIk9uZSBNaW51cyBDb25zdGFudCBBbHBoYSIsICJvbmUtbWludXMtY29udGFudC1hbHBoYSJ9LAorICAgIHtHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBX1NBVFVSQVRFLAorICAgICAgICAiU291cmNlIEFscGhhIFNhdHVyYXRlIiwgInNyYy1hbHBoYS1zYXR1cmF0ZSJ9LAorICAgIHswLCBOVUxMLCBOVUxMfSwKKyAgfTsKIAotICBpZiAocmVmX2JpbmRpbmcpIHsKLSAgICByZXQgPSBnc3RfY29udHJvbF9iaW5kaW5nX2dldF92YWx1ZSAocmVmX2JpbmRpbmcsIHRpbWVzdGFtcCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAocmVmX2JpbmRpbmcpOworICBpZiAoIW1peGVyX2JsZW5kX2Z1bmN0aW9uX3R5cGUpIHsKKyAgICBtaXhlcl9ibGVuZF9mdW5jdGlvbl90eXBlID0KKyAgICAgICAgZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb24iLAorICAgICAgICBtaXhlcl9ibGVuZF9mdW5jcyk7CiAgIH0KLQotICByZXR1cm4gcmV0OworICByZXR1cm4gbWl4ZXJfYmxlbmRfZnVuY3Rpb25fdHlwZTsKIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZV9hcnJheSAoR3N0Q29udHJvbEJpbmRpbmcgKiBiaW5kaW5nLAotICAgIEdzdENsb2NrVGltZSB0aW1lc3RhbXAsIEdzdENsb2NrVGltZSBpbnRlcnZhbCwgZ3VpbnQgbl92YWx1ZXMsCi0gICAgZ3BvaW50ZXIgdmFsdWVzKQotewotICBHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSAqc2VsZiA9IChHc3RHTE1peGVyQ29udHJvbEJpbmRpbmdQcm94eSAqKQotICAgICAgYmluZGluZzsKLSAgR3N0Q29udHJvbEJpbmRpbmcgKnJlZl9iaW5kaW5nOwotICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKLQotICByZWZfYmluZGluZyA9IGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xfYmluZGluZyAoc2VsZi0+cmVmX29iamVjdCwKLSAgICAgIHNlbGYtPnByb3BlcnR5X25hbWUpOwotCi0gIGlmIChyZWZfYmluZGluZykgewotICAgIHJldCA9IGdzdF9jb250cm9sX2JpbmRpbmdfZ2V0X3ZhbHVlX2FycmF5IChyZWZfYmluZGluZywgdGltZXN0YW1wLAotICAgICAgICBpbnRlcnZhbCwgbl92YWx1ZXMsIHZhbHVlcyk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAocmVmX2JpbmRpbmcpOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF9nX3ZhbHVlX2FycmF5IChHc3RDb250cm9sQmluZGluZyAqCi0gICAgYmluZGluZywgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwgR3N0Q2xvY2tUaW1lIGludGVydmFsLCBndWludCBuX3ZhbHVlcywKLSAgICBHVmFsdWUgKiB2YWx1ZXMpCi17Ci0gIEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMTWl4ZXJDb250cm9sQmluZGluZ1Byb3h5ICopCi0gICAgICBiaW5kaW5nOwotICBHc3RDb250cm9sQmluZGluZyAqcmVmX2JpbmRpbmc7Ci0gIGdib29sZWFuIHJldCA9IEZBTFNFOwotCi0gIHJlZl9iaW5kaW5nID0gZ3N0X29iamVjdF9nZXRfY29udHJvbF9iaW5kaW5nIChzZWxmLT5yZWZfb2JqZWN0LAotICAgICAgc2VsZi0+cHJvcGVydHlfbmFtZSk7Ci0KLSAgaWYgKHJlZl9iaW5kaW5nKSB7Ci0gICAgcmV0ID0gZ3N0X2NvbnRyb2xfYmluZGluZ19nZXRfZ192YWx1ZV9hcnJheSAocmVmX2JpbmRpbmcsIHRpbWVzdGFtcCwKLSAgICAgICAgaW50ZXJ2YWwsIG5fdmFsdWVzLCB2YWx1ZXMpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKHJlZl9iaW5kaW5nKTsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLQotc3RhdGljIHZvaWQKLSAgICBnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2NsYXNzX2luaXQKLSAgICAoR3N0R0xNaXhlckNvbnRyb2xCaW5kaW5nUHJveHlDbGFzcyAqIGtsYXNzKQotewotICBHc3RDb250cm9sQmluZGluZ0NsYXNzICpjYl9jbGFzcyA9IEdTVF9DT05UUk9MX0JJTkRJTkdfQ0xBU1MgKGtsYXNzKTsKLQotICBjYl9jbGFzcy0+c3luY192YWx1ZXMgPSBnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X3N5bmNfdmFsdWVzOwotICBjYl9jbGFzcy0+Z2V0X3ZhbHVlID0gZ3N0X2dsX21peGVyX2NvbnRyb2xfYmluZGluZ19wcm94eV9nZXRfdmFsdWU7Ci0gIGNiX2NsYXNzLT5nZXRfdmFsdWVfYXJyYXkgPQotICAgICAgZ3N0X2dsX21peGVyX2NvbnRyb2xfYmluZGluZ19wcm94eV9nZXRfdmFsdWVfYXJyYXk7Ci0gIGNiX2NsYXNzLT5nZXRfZ192YWx1ZV9hcnJheSA9Ci0gICAgICBnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF9nX3ZhbHVlX2FycmF5OwotfQotCi1zdGF0aWMgR3N0Q29udHJvbEJpbmRpbmcgKgotZ3N0X2dsX21peGVyX2NvbnRyb2xfYmluZGluZ19wcm94eV9uZXcgKEdzdE9iamVjdCAqIG9iamVjdCwKLSAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIEdzdE9iamVjdCAqIHJlZl9vYmplY3QsCi0gICAgY29uc3QgZ2NoYXIgKiByZWZfcHJvcGVydHlfbmFtZSkKLXsKLSAgR3N0R0xNaXhlckNvbnRyb2xCaW5kaW5nUHJveHkgKnNlbGYgPQotICAgICAgZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTF9NSVhFUl9DT05UUk9MX0JJTkRJTkcsICJvYmplY3QiLCBvYmplY3QsCi0gICAgICAibmFtZSIsIHByb3BlcnR5X25hbWUsIE5VTEwpOwotCi0gIHNlbGYtPnJlZl9vYmplY3QgPSByZWZfb2JqZWN0OwotICBzZWxmLT5wcm9wZXJ0eV9uYW1lID0gcmVmX3Byb3BlcnR5X25hbWU7Ci0KLSAgcmV0dXJuIChHc3RDb250cm9sQmluZGluZyAqKSBzZWxmOwotfQotCi0KICNkZWZpbmUgREVGQVVMVF9QQURfWFBPUyAgIDAKICNkZWZpbmUgREVGQVVMVF9QQURfWVBPUyAgIDAKICNkZWZpbmUgREVGQVVMVF9QQURfV0lEVEggIDAKQEAgLTIyMyw2ICsxNDQsMTIgQEAKICNkZWZpbmUgREVGQVVMVF9QQURfQUxQSEEgIDEuMAogI2RlZmluZSBERUZBVUxUX1BBRF9aT1JERVIgMAogI2RlZmluZSBERUZBVUxUX1BBRF9JR05PUkVfRU9TIEZBTFNFCisjZGVmaW5lIERFRkFVTFRfUEFEX0JMRU5EX0VRVUFUSU9OX1JHQiBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fQURECisjZGVmaW5lIERFRkFVTFRfUEFEX0JMRU5EX0VRVUFUSU9OX0FMUEhBIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9BREQKKyNkZWZpbmUgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX1JHQiBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBCisjZGVmaW5lIERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBCisjZGVmaW5lIERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9SR0IgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQUxQSEEKKyNkZWZpbmUgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfU1JDX0FMUEhBCiAKIGVudW0KIHsKQEAgLTIzMiw2ICsxNTksMTYgQEAKICAgUFJPUF9JTlBVVF9XSURUSCwKICAgUFJPUF9JTlBVVF9IRUlHSFQsCiAgIFBST1BfSU5QVVRfQUxQSEEsCisgIFBST1BfSU5QVVRfQkxFTkRfRVFVQVRJT05fUkdCLAorICBQUk9QX0lOUFVUX0JMRU5EX0VRVUFUSU9OX0FMUEhBLAorICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX1NSQ19SR0IsCisgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBLAorICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0RTVF9SR0IsCisgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBLAorICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX1JFRCwKKyAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9HUkVFTiwKKyAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9CTFVFLAorICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0FMUEhBLAogICBQUk9QX0lOUFVUX1pPUkRFUiwKICAgUFJPUF9JTlBVVF9JR05PUkVfRU9TLAogfTsKQEAgLTI5OSw2ICsyMzYsNzEgQEAKICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJhbHBoYSIsICJBbHBoYSIsICJBbHBoYSBvZiB0aGUgcGljdHVyZSIsIDAuMCwgMS4wLAogICAgICAgICAgIERFRkFVTFRfUEFEX0FMUEhBLAogICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9JTlBVVF9CTEVORF9FUVVBVElPTl9SR0IsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWVxdWF0aW9uLXJnYiIsICJCbGVuZCBFcXVhdGlvbiBSR0IiLAorICAgICAgICAgICJCbGVuZCBFcXVhdGlvbiBmb3IgUkdCIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9FUVVBVElPTl9SR0IsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9FUVVBVElPTl9BTFBIQSwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZXF1YXRpb24tYWxwaGEiLCAiQmxlbmQgRXF1YXRpb24gQWxwaGEiLAorICAgICAgICAgICJCbGVuZCBFcXVhdGlvbiBmb3IgQWxwaGEiLCBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9FUVVBVElPTl9BTFBIQSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX1NSQ19SR0IsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWZ1bmN0aW9uLXNyYy1yZ2IiLCAiQmxlbmQgRnVuY3Rpb24gU291cmNlIFJHQiIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIGZvciBTb3VyY2UgUkdCIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfUkdCLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBLAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJibGVuZC1mdW5jdGlvbi1zcmMtYWxwaGEiLAorICAgICAgICAgICJCbGVuZCBGdW5jdGlvbiBTb3VyY2UgQWxwaGEiLCAiQmxlbmQgRnVuY3Rpb24gZm9yIFNvdXJjZSBBbHBoYSIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQiwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZnVuY3Rpb24tZHN0LXJnYiIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIERlc3RpbmF0aW9uIFJHQiIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIGZvciBEZXN0aW5hdGlvbiBSR0IiLAorICAgICAgICAgIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OLAorICAgICAgICAgIERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9SR0IsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEEsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWZ1bmN0aW9uLWRzdC1hbHBoYSIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIERlc3RpbmF0aW9uIEFscGhhIiwKKyAgICAgICAgICAiQmxlbmQgRnVuY3Rpb24gZm9yIERlc3RpbmlhdGlvbiBBbHBoYSIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfUkVELAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImJsZW5kLWNvbnN0YW50LWNvbG9yLXJlZCIsCisgICAgICAgICAgIkJsZW5kIENvbnN0YW50IENvbG9yIFJlZCIsICJCbGVuZCBDb25zdGFudCBDb2xvciBSZWQiLCAwLjAsIDEuMCwgMC4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfR1JFRU4sCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYmxlbmQtY29uc3RhbnQtY29sb3ItZ3JlZW4iLAorICAgICAgICAgICJCbGVuZCBDb25zdGFudCBDb2xvciBHcmVlbiIsICJCbGVuZCBDb25zdGFudCBDb2xvciBHcmVlbiIsIDAuMCwgMS4wLAorICAgICAgICAgIDAuMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0JMVUUsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYmxlbmQtY29uc3RhbnQtY29sb3ItYmx1ZSIsCisgICAgICAgICAgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIEdyZWVuIiwgMC4wLCAxLjAsCisgICAgICAgICAgMC4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfQUxQSEEsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYmxlbmQtY29uc3RhbnQtY29sb3ItYWxwaGEiLAorICAgICAgICAgICJCbGVuZCBDb25zdGFudCBDb2xvciBBbHBoYSIsICJCbGVuZCBDb25zdGFudCBDb2xvciBBbHBoYSIsIDAuMCwgMS4wLAorICAgICAgICAgIDAuMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zMjgsMjUgKzMzMCw0NCBAQAogICAgICAgZ19vYmplY3RfbmV3IChnc3RfZ2xfdmlkZW9fbWl4ZXJfaW5wdXRfZ2V0X3R5cGUgKCksICJuYW1lIiwKICAgICAgIEdTVF9PQkpFQ1RfTkFNRSAobWl4ZXJfcGFkKSwgImRpcmVjdGlvbiIsIEdTVF9QQURfRElSRUNUSU9OIChtaXhlcl9wYWQpLAogICAgICAgTlVMTCk7Ci0gIEdzdENvbnRyb2xCaW5kaW5nICpjYjsKIAogICBpZiAoIWdzdF9naG9zdF9wYWRfY29uc3RydWN0IChHU1RfR0hPU1RfUEFEIChpbnB1dCkpKSB7CiAgICAgZ3N0X29iamVjdF91bnJlZiAoaW5wdXQpOwogICAgIHJldHVybiBOVUxMOwogICB9Ci0jZGVmaW5lIEFERF9QUk9YWV9DT05UUk9MX0JJTkRJTkcocHJvcCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgY2IgPSBnc3RfZ2xfbWl4ZXJfY29udHJvbF9iaW5kaW5nX3Byb3h5X25ldyAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwgXAotICAgICAgR19TVFJJTkdJRlkgKHByb3ApLCBHU1RfT0JKRUNUIChpbnB1dCksIEdfU1RSSU5HSUZZIChwcm9wKSk7ICAgICBcCi0gIGdzdF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZyAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwgY2IpCiAKLSAgQUREX1BST1hZX0NPTlRST0xfQklORElORyAoem9yZGVyKTsKLSAgQUREX1BST1hZX0NPTlRST0xfQklORElORyAoeHBvcyk7Ci0gIEFERF9QUk9YWV9DT05UUk9MX0JJTkRJTkcgKHlwb3MpOwotICBBRERfUFJPWFlfQ09OVFJPTF9CSU5ESU5HICh3aWR0aCk7Ci0gIEFERF9QUk9YWV9DT05UUk9MX0JJTkRJTkcgKGhlaWdodCk7Ci0gIEFERF9QUk9YWV9DT05UUk9MX0JJTkRJTkcgKGFscGhhKTsKLQotI3VuZGVmIEFERF9QUk9YWV9DT05UUk9MX0JJTkRJTkcKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiem9yZGVyIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgInhwb3MiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAieXBvcyIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJ3aWR0aCIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJoZWlnaHQiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYWxwaGEiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtZXF1YXRpb24tcmdiIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImJsZW5kLWVxdWF0aW9uLWFscGhhIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImJsZW5kLWZ1bmN0aW9uLXNyYy1yZ2IiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtZnVuY3Rpb24tc3JjLWFscGhhIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImJsZW5kLWZ1bmN0aW9uLWRzdC1yZ2IiKTsKKyAgZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHU1RfT0JKRUNUIChtaXhlcl9wYWQpLAorICAgICAgR1NUX09CSkVDVCAoaW5wdXQpLCAiYmxlbmQtZnVuY3Rpb24tZHN0LWFscGhhIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImJsZW5kLWNvbnN0YW50LWNvbG9yLXJlZCIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJibGVuZC1jb25zdGFudC1jb2xvci1ncmVlbiIpOworICBnc3RfZ2xfb2JqZWN0X2FkZF9jb250cm9sX2JpbmRpbmdfcHJveHkgKEdTVF9PQkpFQ1QgKG1peGVyX3BhZCksCisgICAgICBHU1RfT0JKRUNUIChpbnB1dCksICJibGVuZC1jb25zdGFudC1jb2xvci1ibHVlIik7CisgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAoR1NUX09CSkVDVCAobWl4ZXJfcGFkKSwKKyAgICAgIEdTVF9PQkpFQ1QgKGlucHV0KSwgImJsZW5kLWNvbnN0YW50LWNvbG9yLWFscGhhIik7CiAKICAgaW5wdXQtPm1peGVyX3BhZCA9IG1peGVyX3BhZDsKIApAQCAtNDM5LDEzICs0NjAsMTUgQEAKIHN0YXRpYyB2b2lkIGdzdF9nbF92aWRlb19taXhlcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKLXN0YXRpYyBHc3RDYXBzICpfdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzKTsKK3N0YXRpYyBHc3RDYXBzICpfdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzLAorICAgIEdzdENhcHMgKiBmaWx0ZXIpOworc3RhdGljIEdzdENhcHMgKl9maXhhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpOwogc3RhdGljIHZvaWQgZ3N0X2dsX3ZpZGVvX21peGVyX3Jlc2V0IChHc3RHTE1peGVyICogbWl4ZXIpOwogc3RhdGljIGdib29sZWFuIGdzdF9nbF92aWRlb19taXhlcl9pbml0X3NoYWRlciAoR3N0R0xNaXhlciAqIG1peGVyLAogICAgIEdzdENhcHMgKiBvdXRjYXBzKTsKIAogc3RhdGljIGdib29sZWFuIGdzdF9nbF92aWRlb19taXhlcl9wcm9jZXNzX3RleHR1cmVzIChHc3RHTE1peGVyICogbWl4ZXIsCi0gICAgR1B0ckFycmF5ICogaW5fZnJhbWVzLCBndWludCBvdXRfdGV4KTsKKyAgICBndWludCBvdXRfdGV4KTsKIHN0YXRpYyB2b2lkIGdzdF9nbF92aWRlb19taXhlcl9jYWxsYmFjayAoZ3BvaW50ZXIgc3R1ZmYpOwogCiAvKiAqSU5ERU5ULU9GRiogKi8KQEAgLTUzNCw2ICs1NTcsMTcgQEAKICAgZ2ludCB3aWR0aCwgaGVpZ2h0OwogICBnZG91YmxlIGFscGhhOwogCisgIEdzdEdMVmlkZW9NaXhlckJsZW5kRXF1YXRpb24gYmxlbmRfZXF1YXRpb25fcmdiOworICBHc3RHTFZpZGVvTWl4ZXJCbGVuZEVxdWF0aW9uIGJsZW5kX2VxdWF0aW9uX2FscGhhOworICBHc3RHTFZpZGVvTWl4ZXJCbGVuZEZ1bmN0aW9uIGJsZW5kX2Z1bmN0aW9uX3NyY19yZ2I7CisgIEdzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb24gYmxlbmRfZnVuY3Rpb25fc3JjX2FscGhhOworICBHc3RHTFZpZGVvTWl4ZXJCbGVuZEZ1bmN0aW9uIGJsZW5kX2Z1bmN0aW9uX2RzdF9yZ2I7CisgIEdzdEdMVmlkZW9NaXhlckJsZW5kRnVuY3Rpb24gYmxlbmRfZnVuY3Rpb25fZHN0X2FscGhhOworICBnZG91YmxlIGJsZW5kX2NvbnN0YW50X2NvbG9yX3JlZDsKKyAgZ2RvdWJsZSBibGVuZF9jb25zdGFudF9jb2xvcl9ncmVlbjsKKyAgZ2RvdWJsZSBibGVuZF9jb25zdGFudF9jb2xvcl9ibHVlOworICBnZG91YmxlIGJsZW5kX2NvbnN0YW50X2NvbG9yX2FscGhhOworCiAgIGdib29sZWFuIGdlb21ldHJ5X2NoYW5nZTsKICAgR0x1aW50IHZlcnRleF9idWZmZXI7CiB9OwpAQCAtNTU5LDEzICs1OTMsMjkgQEAKICAgUFJPUF9QQURfWVBPUywKICAgUFJPUF9QQURfV0lEVEgsCiAgIFBST1BfUEFEX0hFSUdIVCwKLSAgUFJPUF9QQURfQUxQSEEKKyAgUFJPUF9QQURfQUxQSEEsCisgIFBST1BfUEFEX0JMRU5EX0VRVUFUSU9OX1JHQiwKKyAgUFJPUF9QQURfQkxFTkRfRVFVQVRJT05fQUxQSEEsCisgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19SR0IsCisgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQSwKKyAgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQiwKKyAgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBLAorICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9SRUQsCisgIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SX0dSRUVOLAorICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9CTFVFLAorICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9BTFBIQSwKIH07CiAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfdmlkZW9fbWl4ZXJfcGFkX2luaXQgKEdzdEdMVmlkZW9NaXhlclBhZCAqIHBhZCkKIHsKLSAgcGFkLT5hbHBoYSA9IDEuMDsKKyAgcGFkLT5hbHBoYSA9IERFRkFVTFRfUEFEX0FMUEhBOworICBwYWQtPmJsZW5kX2VxdWF0aW9uX3JnYiA9IERFRkFVTFRfUEFEX0JMRU5EX0VRVUFUSU9OX1JHQjsKKyAgcGFkLT5ibGVuZF9lcXVhdGlvbl9hbHBoYSA9IERFRkFVTFRfUEFEX0JMRU5EX0VRVUFUSU9OX0FMUEhBOworICBwYWQtPmJsZW5kX2Z1bmN0aW9uX3NyY19yZ2IgPSBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfUkdCOworICBwYWQtPmJsZW5kX2Z1bmN0aW9uX3NyY19hbHBoYSA9IERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQTsKKyAgcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfcmdiID0gREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX1JHQjsKKyAgcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfYWxwaGEgPSBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEE7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC01OTYsNiArNjQ2LDcxIEBACiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYWxwaGEiLCAiQWxwaGEiLCAiQWxwaGEgb2YgdGhlIHBpY3R1cmUiLCAwLjAsIDEuMCwKICAgICAgICAgICBERUZBVUxUX1BBRF9BTFBIQSwKICAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfSU5QVVRfQkxFTkRfRVFVQVRJT05fUkdCLAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJibGVuZC1lcXVhdGlvbi1yZ2IiLCAiQmxlbmQgRXF1YXRpb24gUkdCIiwKKyAgICAgICAgICAiQmxlbmQgRXF1YXRpb24gZm9yIFJHQiIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRVFVQVRJT05fUkdCLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRVFVQVRJT05fQUxQSEEsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWVxdWF0aW9uLWFscGhhIiwgIkJsZW5kIEVxdWF0aW9uIEFscGhhIiwKKyAgICAgICAgICAiQmxlbmQgRXF1YXRpb24gZm9yIEFscGhhIiwgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRVFVQVRJT05fQUxQSEEsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTlBVVF9CTEVORF9GVU5DVElPTl9TUkNfUkdCLAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJibGVuZC1mdW5jdGlvbi1zcmMtcmdiIiwgIkJsZW5kIEZ1bmN0aW9uIFNvdXJjZSBSR0IiLAorICAgICAgICAgICJCbGVuZCBGdW5jdGlvbiBmb3IgU291cmNlIFJHQiIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT04sCisgICAgICAgICAgREVGQVVMVF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX1JHQiwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQSwKKyAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiYmxlbmQtZnVuY3Rpb24tc3JjLWFscGhhIiwKKyAgICAgICAgICAiQmxlbmQgRnVuY3Rpb24gU291cmNlIEFscGhhIiwgIkJsZW5kIEZ1bmN0aW9uIGZvciBTb3VyY2UgQWxwaGEiLAorICAgICAgICAgIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OLAorICAgICAgICAgIERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0lOUFVUX0JMRU5EX0ZVTkNUSU9OX0RTVF9SR0IsCisgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJsZW5kLWZ1bmN0aW9uLWRzdC1yZ2IiLAorICAgICAgICAgICJCbGVuZCBGdW5jdGlvbiBEZXN0aW5hdGlvbiBSR0IiLAorICAgICAgICAgICJCbGVuZCBGdW5jdGlvbiBmb3IgRGVzdGluYXRpb24gUkdCIiwKKyAgICAgICAgICBHU1RfVFlQRV9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTiwKKyAgICAgICAgICBERUZBVUxUX1BBRF9CTEVORF9GVU5DVElPTl9EU1RfUkdCLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU5QVVRfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBLAorICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJibGVuZC1mdW5jdGlvbi1kc3QtYWxwaGEiLAorICAgICAgICAgICJCbGVuZCBGdW5jdGlvbiBEZXN0aW5hdGlvbiBBbHBoYSIsCisgICAgICAgICAgIkJsZW5kIEZ1bmN0aW9uIGZvciBEZXN0aW5pYXRpb24gQWxwaGEiLAorICAgICAgICAgIEdTVF9UWVBFX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OLAorICAgICAgICAgIERFRkFVTFRfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9BTFBIQSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9SRUQsCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYmxlbmQtY29uc3RhbnQtY29sb3ItcmVkIiwKKyAgICAgICAgICAiQmxlbmQgQ29uc3RhbnQgQ29sb3IgUmVkIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIFJlZCIsIDAuMCwgMS4wLCAwLjAsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHU1RfUEFSQU1fQ09OVFJPTExBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfR1JFRU4sCisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgiYmxlbmQtY29uc3RhbnQtY29sb3ItZ3JlZW4iLAorICAgICAgICAgICJCbGVuZCBDb25zdGFudCBDb2xvciBHcmVlbiIsICJCbGVuZCBDb25zdGFudCBDb2xvciBHcmVlbiIsIDAuMCwgMS4wLAorICAgICAgICAgIDAuMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9CTFVFLAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImJsZW5kLWNvbnN0YW50LWNvbG9yLWJsdWUiLAorICAgICAgICAgICJCbGVuZCBDb25zdGFudCBDb2xvciBHcmVlbiIsICJCbGVuZCBDb25zdGFudCBDb2xvciBHcmVlbiIsIDAuMCwgMS4wLAorICAgICAgICAgIDAuMCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9BTFBIQSwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJibGVuZC1jb25zdGFudC1jb2xvci1hbHBoYSIsCisgICAgICAgICAgIkJsZW5kIENvbnN0YW50IENvbG9yIEFscGhhIiwgIkJsZW5kIENvbnN0YW50IENvbG9yIEFscGhhIiwgMC4wLCAxLjAsCisgICAgICAgICAgMC4wLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR1NUX1BBUkFNX0NPTlRST0xMQUJMRSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTYyMCw2ICs3MzUsMzYgQEAKICAgICBjYXNlIFBST1BfUEFEX0FMUEhBOgogICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgcGFkLT5hbHBoYSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0VRVUFUSU9OX1JHQjoKKyAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBwYWQtPmJsZW5kX2VxdWF0aW9uX3JnYik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgorICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIHBhZC0+YmxlbmRfZXF1YXRpb25fYWxwaGEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9TUkNfUkdCOgorICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIHBhZC0+YmxlbmRfZnVuY3Rpb25fc3JjX3JnYik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQToKKyAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBwYWQtPmJsZW5kX2Z1bmN0aW9uX3NyY19hbHBoYSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9SR0I6CisgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfcmdiKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBOgorICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIHBhZC0+YmxlbmRfZnVuY3Rpb25fZHN0X2FscGhhKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfUkVEOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9yZWQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9HUkVFTjoKKyAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSAodmFsdWUsIHBhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfZ3JlZW4pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9CTFVFOgorICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9ibHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfQUxQSEE6CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBwYWQtPmJsZW5kX2NvbnN0YW50X2NvbG9yX2FscGhhKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC02NTMsNiArNzk4LDM2IEBACiAgICAgY2FzZSBQUk9QX1BBRF9BTFBIQToKICAgICAgIHBhZC0+YWxwaGEgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRVFVQVRJT05fUkdCOgorICAgICAgcGFkLT5ibGVuZF9lcXVhdGlvbl9yZ2IgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0VRVUFUSU9OX0FMUEhBOgorICAgICAgcGFkLT5ibGVuZF9lcXVhdGlvbl9hbHBoYSA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX1JHQjoKKyAgICAgIHBhZC0+YmxlbmRfZnVuY3Rpb25fc3JjX3JnYiA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBOgorICAgICAgcGFkLT5ibGVuZF9mdW5jdGlvbl9zcmNfYWxwaGEgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9SR0I6CisgICAgICBwYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9yZ2IgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUEFEX0JMRU5EX0ZVTkNUSU9OX0RTVF9BTFBIQToKKyAgICAgIHBhZC0+YmxlbmRfZnVuY3Rpb25fZHN0X2FscGhhID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9SRUQ6CisgICAgICBwYWQtPmJsZW5kX2NvbnN0YW50X2NvbG9yX3JlZCA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9HUkVFTjoKKyAgICAgIHBhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfZ3JlZW4gPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QQURfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1JfQkxVRToKKyAgICAgIHBhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfYmx1ZSA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BBRF9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9DT0xPUl9BTFBIQToKKyAgICAgIHBhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfYWxwaGEgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC02NjIsNiArODM3LDI2IEBACiB9CiAKIHN0YXRpYyB2b2lkCitfZGVsX2J1ZmZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR0x1aW50ICogcEJ1ZmZlcikKK3sKKyAgY29udGV4dC0+Z2xfdnRhYmxlLT5EZWxldGVCdWZmZXJzICgxLCBwQnVmZmVyKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF92aWRlb19taXhlcl9yZWxlYXNlX3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFBhZCAqIHApCit7CisgIEdzdEdMVmlkZW9NaXhlclBhZCAqcGFkID0gR1NUX0dMX1ZJREVPX01JWEVSX1BBRCAocCk7CisgIGlmIChwYWQtPnZlcnRleF9idWZmZXIpIHsKKyAgICBHc3RHTEJhc2VNaXhlciAqbWl4ID0gR1NUX0dMX0JBU0VfTUlYRVIgKGVsZW1lbnQpOworICAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKG1peC0+Y29udGV4dCwgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpCisgICAgICAgIF9kZWxfYnVmZmVyLCAmcGFkLT52ZXJ0ZXhfYnVmZmVyKTsKKyAgICBwYWQtPnZlcnRleF9idWZmZXIgPSAwOworICB9CisgIEdTVF9FTEVNRU5UX0NMQVNTIChnX3R5cGVfY2xhc3NfcGVla19wYXJlbnQgKEdfT0JKRUNUX0dFVF9DTEFTUyAoZWxlbWVudCkpKQorICAgICAgLT5yZWxlYXNlX3BhZCAoZWxlbWVudCwgcCk7Cit9CisKK3N0YXRpYyB2b2lkCiBnc3RfZ2xfdmlkZW9fbWl4ZXJfY2xhc3NfaW5pdCAoR3N0R0xWaWRlb01peGVyQ2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwpAQCAtNjcxLDYgKzg2Niw3IEBACiAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAgIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworICBlbGVtZW50X2NsYXNzLT5yZWxlYXNlX3BhZCA9IGdzdF9nbF92aWRlb19taXhlcl9yZWxlYXNlX3BhZDsKIAogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ2xfdmlkZW9fbWl4ZXJfc2V0X3Byb3BlcnR5OwogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZ2xfdmlkZW9fbWl4ZXJfZ2V0X3Byb3BlcnR5OwpAQCAtNjkwLDYgKzg4Niw3IEBACiAgICAgICBnc3RfZ2xfdmlkZW9fbWl4ZXJfcHJvY2Vzc190ZXh0dXJlczsKIAogICB2YWdnX2NsYXNzLT51cGRhdGVfY2FwcyA9IF91cGRhdGVfY2FwczsKKyAgdmFnZ19jbGFzcy0+Zml4YXRlX2NhcHMgPSBfZml4YXRlX2NhcHM7CiAKICAgYWdnX2NsYXNzLT5zaW5rcGFkc190eXBlID0gR1NUX1RZUEVfR0xfVklERU9fTUlYRVJfUEFEOwogCkBAIC03MDIsNyArODk5LDYgQEAKIHsKICAgdmlkZW9fbWl4ZXItPmJhY2tncm91bmQgPSBERUZBVUxUX0JBQ0tHUk9VTkQ7CiAgIHZpZGVvX21peGVyLT5zaGFkZXIgPSBOVUxMOwotICB2aWRlb19taXhlci0+aW5wdXRfZnJhbWVzID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTczOSw5ICs5MzUsOSBAQAogCiBzdGF0aWMgdm9pZAogX21peGVyX3BhZF9nZXRfb3V0cHV0X3NpemUgKEdzdEdMVmlkZW9NaXhlciAqIG1peCwKLSAgICBHc3RHTFZpZGVvTWl4ZXJQYWQgKiBtaXhfcGFkLCBnaW50ICogd2lkdGgsIGdpbnQgKiBoZWlnaHQpCisgICAgR3N0R0xWaWRlb01peGVyUGFkICogbWl4X3BhZCwgZ2ludCBvdXRfcGFyX24sIGdpbnQgb3V0X3Bhcl9kLCBnaW50ICogd2lkdGgsCisgICAgZ2ludCAqIGhlaWdodCkKIHsKLSAgR3N0VmlkZW9BZ2dyZWdhdG9yICp2YWdnID0gR1NUX1ZJREVPX0FHR1JFR0FUT1IgKG1peCk7CiAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqdmFnZ19wYWQgPSBHU1RfVklERU9fQUdHUkVHQVRPUl9QQUQgKG1peF9wYWQpOwogICBnaW50IHBhZF93aWR0aCwgcGFkX2hlaWdodDsKICAgZ3VpbnQgZGFyX24sIGRhcl9kOwpAQCAtNzY0LDEzICs5NjAsMTAgQEAKIAogICBnc3RfdmlkZW9fY2FsY3VsYXRlX2Rpc3BsYXlfcmF0aW8gKCZkYXJfbiwgJmRhcl9kLCBwYWRfd2lkdGgsIHBhZF9oZWlnaHQsCiAgICAgICBHU1RfVklERU9fSU5GT19QQVJfTiAoJnZhZ2dfcGFkLT5pbmZvKSwKLSAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZ19wYWQtPmluZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnLT5pbmZvKSwgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnLT5pbmZvKQotICAgICAgKTsKKyAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZ19wYWQtPmluZm8pLCBvdXRfcGFyX24sIG91dF9wYXJfZCk7CiAgIEdTVF9MT0dfT0JKRUNUIChtaXhfcGFkLCAic2NhbGluZyAldXgldSBieSAldS8ldSAoJXUvJXUgLyAldS8ldSkiLCBwYWRfd2lkdGgsCiAgICAgICBwYWRfaGVpZ2h0LCBkYXJfbiwgZGFyX2QsIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZ19wYWQtPmluZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnX3BhZC0+aW5mbyksCi0gICAgICBHU1RfVklERU9fSU5GT19QQVJfTiAoJnZhZ2ctPmluZm8pLCBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2ctPmluZm8pKTsKKyAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZ19wYWQtPmluZm8pLCBvdXRfcGFyX24sIG91dF9wYXJfZCk7CiAKICAgaWYgKHBhZF9oZWlnaHQgJSBkYXJfbiA9PSAwKSB7CiAgICAgcGFkX3dpZHRoID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAocGFkX2hlaWdodCwgZGFyX24sIGRhcl9kKTsKQEAgLTc4NywxNyArOTgwLDQ0IEBACiB9CiAKIHN0YXRpYyBHc3RDYXBzICoKLV91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpCitfdXBkYXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQoreworICBHc3RDYXBzICpyZXQ7CisKKyAgcmV0ID0KKyAgICAgIEdTVF9WSURFT19BR0dSRUdBVE9SX0NMQVNTIChnc3RfZ2xfdmlkZW9fbWl4ZXJfcGFyZW50X2NsYXNzKS0+dXBkYXRlX2NhcHMKKyAgICAgICh2YWdnLCBjYXBzLCBOVUxMKTsKKworICBpZiAoZmlsdGVyKSB7CisgICAgR3N0Q2FwcyAqdG1wID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChyZXQsIGZpbHRlcik7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHJldCk7CisgICAgcmV0ID0gdG1wOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdzdENhcHMgKgorX2ZpeGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcykKIHsKICAgR3N0R0xWaWRlb01peGVyICptaXggPSBHU1RfR0xfVklERU9fTUlYRVIgKHZhZ2cpOwotICBHTGlzdCAqbDsKLSAgZ2ludCBiZXN0X3dpZHRoID0gLTEsIGJlc3RfaGVpZ2h0ID0gLTE7Ci0gIEdzdFZpZGVvSW5mbyBpbmZvOworICBnaW50IGJlc3Rfd2lkdGggPSAwLCBiZXN0X2hlaWdodCA9IDA7CisgIGdpbnQgYmVzdF9mcHNfbiA9IDAsIGJlc3RfZnBzX2QgPSAwOworICBnaW50IHBhcl9uLCBwYXJfZDsKKyAgZ2RvdWJsZSBiZXN0X2ZwcyA9IDAuOwogICBHc3RDYXBzICpyZXQgPSBOVUxMOwotICBpbnQgaTsKKyAgR3N0U3RydWN0dXJlICpzOworICBHTGlzdCAqbDsKIAotICBjYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoY2Fwcyk7Ci0gIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpOworICByZXQgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKKworICAvKiB3ZSBuZWVkIHRoaXMgdG8gY2FsY3VsYXRlIGhvdyBsYXJnZSB0byBtYWtlIHRoZSBvdXRwdXQgZnJhbWUgKi8KKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJldCwgMCk7CisgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iKSkgeworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgR1NUX1RZUEVfRlJBQ1RJT04sIDEsIDEsIE5VTEwpOworICB9CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAxLCAxKTsKKyAgZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24gKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAmcGFyX24sICZwYXJfZCk7CiAKICAgR1NUX09CSkVDVF9MT0NLICh2YWdnKTsKICAgZm9yIChsID0gR1NUX0VMRU1FTlQgKHZhZ2cpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKQEAgLTgwNSw4ICsxMDI1LDEyIEBACiAgICAgR3N0R0xWaWRlb01peGVyUGFkICptaXhlcl9wYWQgPSBHU1RfR0xfVklERU9fTUlYRVJfUEFEICh2YWdncGFkKTsKICAgICBnaW50IHRoaXNfd2lkdGgsIHRoaXNfaGVpZ2h0OwogICAgIGdpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBnaW50IGZwc19uLCBmcHNfZDsKKyAgICBnZG91YmxlIGN1cl9mcHM7CiAKLSAgICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAobWl4LCBtaXhlcl9wYWQsICZ3aWR0aCwgJmhlaWdodCk7CisgICAgZnBzX24gPSBHU1RfVklERU9fSU5GT19GUFNfTiAoJnZhZ2dwYWQtPmluZm8pOworICAgIGZwc19kID0gR1NUX1ZJREVPX0lORk9fRlBTX0QgKCZ2YWdncGFkLT5pbmZvKTsKKyAgICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAobWl4LCBtaXhlcl9wYWQsIHBhcl9uLCBwYXJfZCwgJndpZHRoLCAmaGVpZ2h0KTsKIAogICAgIGlmICh3aWR0aCA9PSAwIHx8IGhlaWdodCA9PSAwKQogICAgICAgY29udGludWU7CkBAIC04MTgsMjAgKzEwNDIsMzMgQEAKICAgICAgIGJlc3Rfd2lkdGggPSB0aGlzX3dpZHRoOwogICAgIGlmIChiZXN0X2hlaWdodCA8IHRoaXNfaGVpZ2h0KQogICAgICAgYmVzdF9oZWlnaHQgPSB0aGlzX2hlaWdodDsKKworICAgIGlmIChmcHNfZCA9PSAwKQorICAgICAgY3VyX2ZwcyA9IDAuMDsKKyAgICBlbHNlCisgICAgICBnc3RfdXRpbF9mcmFjdGlvbl90b19kb3VibGUgKGZwc19uLCBmcHNfZCwgJmN1cl9mcHMpOworCisgICAgaWYgKGJlc3RfZnBzIDwgY3VyX2ZwcykgeworICAgICAgYmVzdF9mcHMgPSBjdXJfZnBzOworICAgICAgYmVzdF9mcHNfbiA9IGZwc19uOworICAgICAgYmVzdF9mcHNfZCA9IGZwc19kOworICAgIH0KICAgfQogICBHU1RfT0JKRUNUX1VOTE9DSyAodmFnZyk7CiAKLSAgcmV0ID0KLSAgICAgIEdTVF9WSURFT19BR0dSRUdBVE9SX0NMQVNTIChnc3RfZ2xfdmlkZW9fbWl4ZXJfcGFyZW50X2NsYXNzKS0+dXBkYXRlX2NhcHMKLSAgICAgICh2YWdnLCBjYXBzKTsKLQotICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKHJldCk7IGkrKykgewotICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJldCwgaSk7Ci0KLSAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgIndpZHRoIiwgR19UWVBFX0lOVCwgYmVzdF93aWR0aCwgImhlaWdodCIsIEdfVFlQRV9JTlQsCi0gICAgICAgIGJlc3RfaGVpZ2h0LCBOVUxMKTsKKyAgaWYgKGJlc3RfZnBzX24gPD0gMCB8fCBiZXN0X2Zwc19kIDw9IDAgfHwgYmVzdF9mcHMgPT0gMC4wKSB7CisgICAgYmVzdF9mcHNfbiA9IDI1OworICAgIGJlc3RfZnBzX2QgPSAxOworICAgIGJlc3RfZnBzID0gMjUuMDsKICAgfQogCisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChyZXQsIDApOworICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAocywgIndpZHRoIiwgYmVzdF93aWR0aCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzLCAiaGVpZ2h0IiwgYmVzdF9oZWlnaHQpOworICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChzLCAiZnJhbWVyYXRlIiwgYmVzdF9mcHNfbiwKKyAgICAgIGJlc3RfZnBzX2QpOworICByZXQgPSBnc3RfY2Fwc19maXhhdGUgKHJldCk7CisKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtODQ2LDcgKzEwODMsNyBAQAogICAgIHBhZC0+dmVydGV4X2J1ZmZlciA9IDA7CiAgIH0KIAotICByZXR1cm4gRkFMU0U7CisgIHJldHVybiBUUlVFOwogfQogCiBzdGF0aWMgdm9pZApAQCAtODY0LDYgKzExMDEsMTEgQEAKICAgICB2aWRlb19taXhlci0+dmJvX2luZGljZXMgPSAwOwogICB9CiAKKyAgaWYgKHZpZGVvX21peGVyLT5jaGVja2VyX3ZibykgeworICAgIGdsLT5EZWxldGVCdWZmZXJzICgxLCAmdmlkZW9fbWl4ZXItPmNoZWNrZXJfdmJvKTsKKyAgICB2aWRlb19taXhlci0+Y2hlY2tlcl92Ym8gPSAwOworICB9CisKICAgZ3N0X2FnZ3JlZ2F0b3JfaXRlcmF0ZV9zaW5rcGFkcyAoR1NUX0FHR1JFR0FUT1IgKHZpZGVvX21peGVyKSwgX3Jlc2V0X3BhZF9nbCwKICAgICAgIE5VTEwpOwogfQpAQCAtODc0LDggKzExMTYsNiBAQAogICBHc3RHTFZpZGVvTWl4ZXIgKnZpZGVvX21peGVyID0gR1NUX0dMX1ZJREVPX01JWEVSIChtaXhlcik7CiAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IEdTVF9HTF9CQVNFX01JWEVSIChtaXhlciktPmNvbnRleHQ7CiAKLSAgdmlkZW9fbWl4ZXItPmlucHV0X2ZyYW1lcyA9IE5VTEw7Ci0KICAgR1NUX0RFQlVHX09CSkVDVCAobWl4ZXIsICJjb250ZXh0OiVwIiwgY29udGV4dCk7CiAKICAgaWYgKHZpZGVvX21peGVyLT5zaGFkZXIpCkBAIC05MDUsMTMgKzExNDUsMTAgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfZ2xfdmlkZW9fbWl4ZXJfcHJvY2Vzc190ZXh0dXJlcyAoR3N0R0xNaXhlciAqIG1peCwgR1B0ckFycmF5ICogZnJhbWVzLAotICAgIGd1aW50IG91dF90ZXgpCitnc3RfZ2xfdmlkZW9fbWl4ZXJfcHJvY2Vzc190ZXh0dXJlcyAoR3N0R0xNaXhlciAqIG1peCwgZ3VpbnQgb3V0X3RleCkKIHsKICAgR3N0R0xWaWRlb01peGVyICp2aWRlb19taXhlciA9IEdTVF9HTF9WSURFT19NSVhFUiAobWl4KTsKIAotICB2aWRlb19taXhlci0+aW5wdXRfZnJhbWVzID0gZnJhbWVzOwotCiAgIGdzdF9nbF9jb250ZXh0X3VzZV9mYm9fdjIgKEdTVF9HTF9CQVNFX01JWEVSIChtaXgpLT5jb250ZXh0LAogICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZHU1RfVklERU9fQUdHUkVHQVRPUiAobWl4KS0+aW5mbyksCiAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZHU1RfVklERU9fQUdHUkVHQVRPUiAobWl4KS0+aW5mbyksCkBAIC0xMDE3LDYgKzEyNTQsMTIzIEBACiAgIHJldHVybiBUUlVFOwogfQogCitzdGF0aWMgZ3VpbnQKK19ibGVuZF9lcXVhdGlvbl90b19nbCAoR3N0R0xWaWRlb01peGVyQmxlbmRFcXVhdGlvbiBlcXVhdGlvbikKK3sKKyAgc3dpdGNoIChlcXVhdGlvbikgeworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX0FERDoKKyAgICAgIHJldHVybiBHTF9GVU5DX0FERDsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9TVUJUUkFDVDoKKyAgICAgIHJldHVybiBHTF9GVU5DX1NVQlRSQUNUOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX1JFVkVSU0VfU1VCVFJBQ1Q6CisgICAgICByZXR1cm4gR0xfRlVOQ19SRVZFUlNFX1NVQlRSQUNUOworICAgIGRlZmF1bHQ6CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgIHJldHVybiAwOworICB9Cit9CisKK3N0YXRpYyBndWludAorX2JsZW5kX2Z1bmN0aW9uX3RvX2dsIChHc3RHTFZpZGVvTWl4ZXJCbGVuZEZ1bmN0aW9uIGVxdWF0aW9uKQoreworICBzd2l0Y2ggKGVxdWF0aW9uKSB7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fWkVSTzoKKyAgICAgIHJldHVybiBHTF9aRVJPOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORToKKyAgICAgIHJldHVybiBHTF9PTkU7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0NPTE9SOgorICAgICAgcmV0dXJuIEdMX1NSQ19DT0xPUjsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfU1JDX0NPTE9SOgorICAgICAgcmV0dXJuIEdMX09ORV9NSU5VU19TUkNfQ09MT1I7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fRFNUX0NPTE9SOgorICAgICAgcmV0dXJuIEdMX0RTVF9DT0xPUjsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfRFNUX0NPTE9SOgorICAgICAgcmV0dXJuIEdMX09ORV9NSU5VU19EU1RfQ09MT1I7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBOgorICAgICAgcmV0dXJuIEdMX1NSQ19BTFBIQTsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfU1JDX0FMUEhBOgorICAgICAgcmV0dXJuIEdMX09ORV9NSU5VU19TUkNfQUxQSEE7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBOgorICAgICAgcmV0dXJuIEdMX0RTVF9BTFBIQTsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfRFNUX0FMUEhBOgorICAgICAgcmV0dXJuIEdMX09ORV9NSU5VU19EU1RfQUxQSEE7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1I6CisgICAgICByZXR1cm4gR0xfQ09OU1RBTlRfQ09MT1I7CisgICAgY2FzZSBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOgorICAgICAgcmV0dXJuIEdMX09ORV9NSU5VU19DT05TVEFOVF9DT0xPUjsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9BTFBIQToKKyAgICAgIHJldHVybiBHTF9DT05TVEFOVF9BTFBIQTsKKyAgICBjYXNlIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEE6CisgICAgICByZXR1cm4gR0xfT05FX01JTlVTX0NPTlNUQU5UX0FMUEhBOworICAgIGNhc2UgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQV9TQVRVUkFURToKKyAgICAgIHJldHVybiBHTF9TUkNfQUxQSEFfU0FUVVJBVEU7CisgICAgZGVmYXVsdDoKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgcmV0dXJuIDA7CisgIH0KK30KKworc3RhdGljIGdib29sZWFuCitfc2V0X2JsZW5kX3N0YXRlIChHc3RHTFZpZGVvTWl4ZXIgKiB2aWRlb19taXhlciwgR3N0R0xWaWRlb01peGVyUGFkICogbWl4X3BhZCkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBHU1RfR0xfQkFTRV9NSVhFUiAodmlkZW9fbWl4ZXIpLT5jb250ZXh0LT5nbF92dGFibGU7CisgIGdib29sZWFuIHJlcXVpcmVfc2VwYXJhdGUgPSBGQUxTRTsKKyAgZ3VpbnQgZ2xfZnVuY19zcmNfcmdiLCBnbF9mdW5jX3NyY19hbHBoYSwgZ2xfZnVuY19kc3RfcmdiLCBnbF9mdW5jX2RzdF9hbHBoYTsKKyAgZ3VpbnQgZ2xfZXF1YXRpb25fcmdiLCBnbF9lcXVhdGlvbl9hbHBoYTsKKworICByZXF1aXJlX3NlcGFyYXRlID0KKyAgICAgIG1peF9wYWQtPmJsZW5kX2VxdWF0aW9uX3JnYiAhPSBtaXhfcGFkLT5ibGVuZF9lcXVhdGlvbl9hbHBoYQorICAgICAgfHwgbWl4X3BhZC0+YmxlbmRfZnVuY3Rpb25fc3JjX3JnYiAhPSBtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9zcmNfYWxwaGEKKyAgICAgIHx8IG1peF9wYWQtPmJsZW5kX2Z1bmN0aW9uX2RzdF9yZ2IgIT0gbWl4X3BhZC0+YmxlbmRfZnVuY3Rpb25fZHN0X2FscGhhOworCisgIGlmIChyZXF1aXJlX3NlcGFyYXRlICYmICghZ2wtPkJsZW5kRnVuY1NlcGFyYXRlCisgICAgICAgICAgfHwgIWdsLT5CbGVuZEVxdWF0aW9uU2VwYXJhdGUpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAobWl4X3BhZCwKKyAgICAgICAgInNlcGFyYXRlZCBibGVuZCBlcXVhdGlvbnMvZnVuY3Rpb25zIHJlcXVlc3RlZCBob3dldmVyICIKKyAgICAgICAgImdsQmxlbmRGdW5jU2VwYXJhdGUgb3IgZ2xCbGVuZEVxdWF0aW9uU2VwYXJhdGUgbm90IGF2YWlsYWJsZSIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmIChtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfcmdiID09CisgICAgICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0FMUEhBX1NBVFVSQVRFKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAobWl4X3BhZCwKKyAgICAgICAgIkRlc3RpbmF0aW9uIFJHQiBibGVuZCBmdW5jdGlvbiBjYW5ub3QgYmUgXCdTUkNfQUxQSEFfU0FUVVJBVEVcJyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmIChtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfYWxwaGEgPT0KKyAgICAgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEFfU0FUVVJBVEUpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChtaXhfcGFkLAorICAgICAgICAiRGVzdGluYXRpb24gYWxwaGEgYmxlbmQgZnVuY3Rpb24gY2Fubm90IGJlIFwnU1JDX0FMUEhBX1NBVFVSQVRFXCciKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBnbF9lcXVhdGlvbl9yZ2IgPSBfYmxlbmRfZXF1YXRpb25fdG9fZ2wgKG1peF9wYWQtPmJsZW5kX2VxdWF0aW9uX3JnYik7CisgIGdsX2VxdWF0aW9uX2FscGhhID0gX2JsZW5kX2VxdWF0aW9uX3RvX2dsIChtaXhfcGFkLT5ibGVuZF9lcXVhdGlvbl9hbHBoYSk7CisKKyAgZ2xfZnVuY19zcmNfcmdiID0gX2JsZW5kX2Z1bmN0aW9uX3RvX2dsIChtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9zcmNfcmdiKTsKKyAgZ2xfZnVuY19zcmNfYWxwaGEgPSBfYmxlbmRfZnVuY3Rpb25fdG9fZ2wgKG1peF9wYWQtPmJsZW5kX2Z1bmN0aW9uX3NyY19hbHBoYSk7CisgIGdsX2Z1bmNfZHN0X3JnYiA9IF9ibGVuZF9mdW5jdGlvbl90b19nbCAobWl4X3BhZC0+YmxlbmRfZnVuY3Rpb25fZHN0X3JnYik7CisgIGdsX2Z1bmNfZHN0X2FscGhhID0gX2JsZW5kX2Z1bmN0aW9uX3RvX2dsIChtaXhfcGFkLT5ibGVuZF9mdW5jdGlvbl9kc3RfYWxwaGEpOworCisgIGlmIChnbC0+QmxlbmRFcXVhdGlvblNlcGFyYXRlKQorICAgIGdsLT5CbGVuZEVxdWF0aW9uU2VwYXJhdGUgKGdsX2VxdWF0aW9uX3JnYiwgZ2xfZXF1YXRpb25fYWxwaGEpOworICBlbHNlCisgICAgZ2wtPkJsZW5kRXF1YXRpb24gKGdsX2VxdWF0aW9uX3JnYik7CisKKyAgaWYgKGdsLT5CbGVuZEZ1bmNTZXBhcmF0ZSkKKyAgICBnbC0+QmxlbmRGdW5jU2VwYXJhdGUgKGdsX2Z1bmNfc3JjX3JnYiwgZ2xfZnVuY19kc3RfcmdiLCBnbF9mdW5jX3NyY19hbHBoYSwKKyAgICAgICAgZ2xfZnVuY19kc3RfYWxwaGEpOworICBlbHNlCisgICAgZ2wtPkJsZW5kRnVuYyAoZ2xfZnVuY19zcmNfcmdiLCBnbF9mdW5jX2RzdF9yZ2IpOworCisgIGdsLT5CbGVuZENvbG9yIChtaXhfcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9yZWQsCisgICAgICBtaXhfcGFkLT5ibGVuZF9jb25zdGFudF9jb2xvcl9ncmVlbiwgbWl4X3BhZC0+YmxlbmRfY29uc3RhbnRfY29sb3JfYmx1ZSwKKyAgICAgIG1peF9wYWQtPmJsZW5kX2NvbnN0YW50X2NvbG9yX2FscGhhKTsKKworICByZXR1cm4gVFJVRTsKK30KKwogLyogb3BlbmdsIHNjZW5lLCBwYXJhbXM6IGlucHV0IHRleHR1cmUgKG5vdCB0aGUgb3V0cHV0IG1peGVyLT50ZXh0dXJlKSAqLwogc3RhdGljIHZvaWQKIGdzdF9nbF92aWRlb19taXhlcl9jYWxsYmFjayAoZ3BvaW50ZXIgc3R1ZmYpCkBAIC0xMDI1LDEyICsxMzc5LDEwIEBACiAgIEdzdFZpZGVvQWdncmVnYXRvciAqdmFnZyA9IEdTVF9WSURFT19BR0dSRUdBVE9SIChzdHVmZik7CiAgIEdzdEdMTWl4ZXIgKm1peGVyID0gR1NUX0dMX01JWEVSICh2aWRlb19taXhlcik7CiAgIEdzdEdMRnVuY3MgKmdsID0gR1NUX0dMX0JBU0VfTUlYRVIgKG1peGVyKS0+Y29udGV4dC0+Z2xfdnRhYmxlOwotCiAgIEdMaW50IGF0dHJfcG9zaXRpb25fbG9jID0gMDsKICAgR0xpbnQgYXR0cl90ZXh0dXJlX2xvYyA9IDA7CiAgIGd1aW50IG91dF93aWR0aCwgb3V0X2hlaWdodDsKLQotICBndWludCBjb3VudCA9IDA7CisgIEdMaXN0ICp3YWxrOwogCiAgIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmdmFnZy0+aW5mbyk7CiAgIG91dF9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZ2YWdnLT5pbmZvKTsKQEAgLTEwNTksOSArMTQxMSwxMSBAQAogCiAgIGdsLT5FbmFibGUgKEdMX0JMRU5EKTsKIAotICB3aGlsZSAoY291bnQgPCB2aWRlb19taXhlci0+aW5wdXRfZnJhbWVzLT5sZW4pIHsKLSAgICBHc3RHTE1peGVyRnJhbWVEYXRhICpmcmFtZTsKLSAgICBHc3RHTFZpZGVvTWl4ZXJQYWQgKnBhZDsKKyAgR1NUX09CSkVDVF9MT0NLICh2aWRlb19taXhlcik7CisgIHdhbGsgPSBHU1RfRUxFTUVOVCAodmlkZW9fbWl4ZXIpLT5zaW5rcGFkczsKKyAgd2hpbGUgKHdhbGspIHsKKyAgICBHc3RHTE1peGVyUGFkICptaXhfcGFkID0gd2Fsay0+ZGF0YTsKKyAgICBHc3RHTFZpZGVvTWl4ZXJQYWQgKnBhZCA9IHdhbGstPmRhdGE7CiAgICAgR3N0VmlkZW9JbmZvICp2X2luZm87CiAgICAgZ3VpbnQgaW5fdGV4OwogICAgIGd1aW50IGluX3dpZHRoLCBpbl9oZWlnaHQ7CkBAIC0xMDc1LDI2ICsxNDI5LDI1IEBACiAgICAgfTsKICAgICAvKiAqSU5ERU5ULU9OKiAqLwogCi0gICAgZnJhbWUgPSBnX3B0cl9hcnJheV9pbmRleCAodmlkZW9fbWl4ZXItPmlucHV0X2ZyYW1lcywgY291bnQpOwotICAgIGlmICghZnJhbWUpIHsKLSAgICAgIEdTVF9ERUJVRyAoInNraXBwaW5nIHRleHR1cmUsIG51bGwgZnJhbWUiKTsKLSAgICAgIGNvdW50Kys7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0gICAgcGFkID0gKEdzdEdMVmlkZW9NaXhlclBhZCAqKSBmcmFtZS0+cGFkOwogICAgIHZfaW5mbyA9ICZHU1RfVklERU9fQUdHUkVHQVRPUl9QQUQgKHBhZCktPmluZm87CiAgICAgaW5fd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAodl9pbmZvKTsKICAgICBpbl9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKHZfaW5mbyk7CiAKLSAgICBpZiAoIWZyYW1lLT50ZXh0dXJlIHx8IGluX3dpZHRoIDw9IDAgfHwgaW5faGVpZ2h0IDw9IDAKKyAgICBpZiAoIW1peF9wYWQtPmN1cnJlbnRfdGV4dHVyZSB8fCBpbl93aWR0aCA8PSAwIHx8IGluX2hlaWdodCA8PSAwCiAgICAgICAgIHx8IHBhZC0+YWxwaGEgPT0gMC4wZikgewotICAgICAgR1NUX0RFQlVHICgic2tpcHBpbmcgdGV4dHVyZToldSBmcmFtZTolcCB3aWR0aDoldSBoZWlnaHQ6JXUgYWxwaGE6JWYiLAotICAgICAgICAgIGZyYW1lLT50ZXh0dXJlLCBmcmFtZSwgaW5fd2lkdGgsIGluX2hlaWdodCwgcGFkLT5hbHBoYSk7Ci0gICAgICBjb3VudCsrOworICAgICAgR1NUX0RFQlVHICgic2tpcHBpbmcgdGV4dHVyZToldSBwYWQ6JXAgd2lkdGg6JXUgaGVpZ2h0OiV1IGFscGhhOiVmIiwKKyAgICAgICAgICBtaXhfcGFkLT5jdXJyZW50X3RleHR1cmUsIHBhZCwgaW5fd2lkdGgsIGluX2hlaWdodCwgcGFkLT5hbHBoYSk7CisgICAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwogICAgICAgY29udGludWU7CiAgICAgfQogCi0gICAgaW5fdGV4ID0gZnJhbWUtPnRleHR1cmU7CisgICAgaWYgKCFfc2V0X2JsZW5kX3N0YXRlICh2aWRlb19taXhlciwgcGFkKSkgeworICAgICAgR1NUX0ZJWE1FX09CSkVDVCAocGFkLCAic2tpcHBpbmcgZHVlIHRvIGluY29ycmVjdCBibGVuZCBwYXJhbWV0ZXJzIik7CisgICAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaW5fdGV4ID0gbWl4X3BhZC0+Y3VycmVudF90ZXh0dXJlOwogCiAgICAgX2luaXRfdmJvX2luZGljZXMgKHZpZGVvX21peGVyKTsKIApAQCAtMTEwMiw3ICsxNDU1LDkgQEAKICAgICAgIGdpbnQgcGFkX3dpZHRoLCBwYWRfaGVpZ2h0OwogICAgICAgZ2Zsb2F0IHcsIGg7CiAKLSAgICAgIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplICh2aWRlb19taXhlciwgcGFkLCAmcGFkX3dpZHRoLCAmcGFkX2hlaWdodCk7CisgICAgICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAodmlkZW9fbWl4ZXIsIHBhZCwKKyAgICAgICAgICBHU1RfVklERU9fSU5GT19QQVJfTiAoJnZhZ2ctPmluZm8pLAorICAgICAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZy0+aW5mbyksICZwYWRfd2lkdGgsICZwYWRfaGVpZ2h0KTsKIAogICAgICAgdyA9ICgoZ2Zsb2F0KSBwYWRfd2lkdGggLyAoZ2Zsb2F0KSBvdXRfd2lkdGgpOwogICAgICAgaCA9ICgoZ2Zsb2F0KSBwYWRfaGVpZ2h0IC8gKGdmbG9hdCkgb3V0X2hlaWdodCk7CkBAIC0xMTM1LDkgKzE0OTAsNiBAQAogICAgIH0KICAgICBnbC0+QmluZEJ1ZmZlciAoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHZpZGVvX21peGVyLT52Ym9faW5kaWNlcyk7CiAKLSAgICBnbC0+QmxlbmRGdW5jIChHTF9TUkNfQUxQSEEsIEdMX09ORV9NSU5VU19TUkNfQUxQSEEpOwotICAgIGdsLT5CbGVuZEVxdWF0aW9uIChHTF9GVU5DX0FERCk7Ci0KICAgICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTApOwogICAgIGdsLT5CaW5kVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCwgaW5fdGV4KTsKICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpICh2aWRlb19taXhlci0+c2hhZGVyLCAidGV4dHVyZSIsIDApOwpAQCAtMTE1NCw4ICsxNTA2LDkgQEAKIAogICAgIGdsLT5EcmF3RWxlbWVudHMgKEdMX1RSSUFOR0xFUywgNiwgR0xfVU5TSUdORURfU0hPUlQsIDApOwogCi0gICAgKytjb3VudDsKKyAgICB3YWxrID0gZ19saXN0X25leHQgKHdhbGspOwogICB9CisgIEdTVF9PQkpFQ1RfVU5MT0NLICh2aWRlb19taXhlcik7CiAKICAgZ2wtPkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoYXR0cl9wb3NpdGlvbl9sb2MpOwogICBnbC0+RGlzYWJsZVZlcnRleEF0dHJpYkFycmF5IChhdHRyX3RleHR1cmVfbG9jKTsKZGlmZiAtLWdpdCBhL2V4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuaCBiL2V4dC9nbC9nc3RnbHZpZGVvbWl4ZXIuaAppbmRleCAwZDAyNTJiLi5hMDc3NmZkIDEwMDY0NAotLS0gYS9leHQvZ2wvZ3N0Z2x2aWRlb21peGVyLmgKKysrIGIvZXh0L2dsL2dzdGdsdmlkZW9taXhlci5oCkBAIC01Myw2ICs1Myw2NiBAQAogfQogR3N0R0xWaWRlb01peGVyQmFja2dyb3VuZDsKIAorLyoqCisgKiBHc3RHTFZpZGVvTWl4ZXJCbGVuZEVxdWF0aW9uOgorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9BREQ6IEFkZCB0aGUgdHdvIHJlc3VsdHMuCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX1NVQlRSQUNUOiBTdWJ0cmFjdCBjb21wb25lbnQtd2lzZSB0aGUgZGVzdGluYXRpb24gZnJvbSB0aGUgc291cmNlIChTIC0gRCkuCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0VRVUFUSU9OX1JFVkVSU0VfU1VCVFJBQ1Q6IFN1YnRyYWN0IGNvbXBvbmVudC13aXNlIHRoZSBzb3VyY2UgZnJvbSB0aGUgZGVzdGluYXRpb24gKEQgLSBTKS4KKyAqCisgKiBUaGUgYmxlbmRpbmcgZXF1YXRpb24gdG8gdXNlLiAgU2VlIHRoZSBvcGVuZ2wgc3BlY2lmaWNpdGlvbiBmb3IKKyAqIGdsQmxlbmRFcXVhdGlvblNlcGFyYXRlCisgKi8KK3R5cGVkZWYgZW51bQoreworICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fQURELAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRVFVQVRJT05fU1VCVFJBQ1QsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9FUVVBVElPTl9SRVZFUlNFX1NVQlRSQUNULAorfQorR3N0R0xWaWRlb01peGVyQmxlbmRFcXVhdGlvbjsKKworLyoqCisgKiBHc3RHTFZpZGVvTWl4ZXJCbGVuZEZ1bmN0aW9uOgorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9aRVJPOiBBbGwgY29tcG9uZW50cyBhcmUgemVybworICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkU6IEFsbCBjb21wb25lbnRzIGFyZSBvbmUKKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0NPTE9SOiBVc2UgdGhlIHNvdXJjZSBjb2xvci9hbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfU1JDX0NPTE9SOiBPbmUgbWludXMgdGhlIHNvdXJjZSBjb2xvci9hbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9EU1RfQ09MT1I6IFVzZSB0aGUgZGVzdGluYXRpb24gY29sb3IvYWxwaGEKKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0RTVF9DT0xPUjogT25lIG1pbnVzIHRoZSBkZXN0aW5hdGlvbiBjb2xvci9hbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEE6IEFsbCBjb21wb25lbnRzIGFyZSB0aGUgc291cmNlIGFscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19TUkNfQUxQSEE6IEFsbCBjb21wb25lbnRzIGFyZSBvbmUgbWludXMgdGhlIHNvdXJjZSBhbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9EU1RfQUxQSEE6IEFsbCBjb21wb25lbnRzIGFyZSB0aGUgZGVzdGluYXRpb24gYWxwaGEKKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0RTVF9BTFBIQTogQWxsIGNvbXBvbmVudHMgYXJlIG9uZSBtaW51cyB0aGUgZGVzdGluYXRpb24gYWxwaGEKKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQ09MT1I6IFVzZSB0aGUgY29uc3RhbnQgY29sb3IvYWxwaGEKKyAqIEBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SOiBVc2Ugb25lIG1pbnVzIHRoZSBjb25zdGFudCBjb2xvci9hbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9DT05TVEFOVF9BTFBIQTogQWxsIGNvbXBvbmVudHMgYXJlIHRoZSBjb25zdGFudCBhbHBoYQorICogQEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfQ09OU1RBTlRfQ09MT1I6IEFsbCBjb21wb25lbnRzIGFyZSBvbmUgbWludXMgdGhlIGNvbnN0YW50IGFscGhhCisgKiBAR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX1NSQ19BTFBIQV9TQVRVUkFURTogQWxsIGNvbG9yIGNvbXBvbmVudHMKKyAqICAgICBhcmUgdGhlIG1pbmltdW0gb2Ygc291cmNlIGFscGhhIGFuZCBvbmUgbWludXMgdGhlIGRlc3RpbmF0aW9uIGFscGhhLgorICogICAgIEFscGhhIGlzIGVxdWFsIHRvIG9uZS4KKyAqCisgKiBUaGUgYmxlbmRpbmcgZnVuY3Rpb24gdG8gdXNlLiAgU2VlIHRoZSBvcGVuZ2wgc3BlY2lmaWNpdGlvbiBmb3IKKyAqIGdsQmxlbmRGdW5jU2VwYXJhdGUKKyAqLwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9aRVJPLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fU1JDX0NPTE9SLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX1NSQ19DT0xPUiwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0RTVF9DT0xPUiwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX09ORV9NSU5VU19EU1RfQ09MT1IsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEEsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfU1JDX0FMUEhBLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fRFNUX0FMUEhBLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0RTVF9BTFBIQSwKKyAgR1NUX0dMX1ZJREVPX01JWEVSX0JMRU5EX0ZVTkNUSU9OX0NPTlNUQU5UX0NPTE9SLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fT05FX01JTlVTX0NPTlNUQU5UX0NPTE9SLAorICBHU1RfR0xfVklERU9fTUlYRVJfQkxFTkRfRlVOQ1RJT05fQ09OU1RBTlRfQUxQSEEsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9PTkVfTUlOVVNfQ09OU1RBTlRfQUxQSEEsCisgIEdTVF9HTF9WSURFT19NSVhFUl9CTEVORF9GVU5DVElPTl9TUkNfQUxQSEFfU0FUVVJBVEUsCit9CitHc3RHTFZpZGVvTWl4ZXJCbGVuZEZ1bmN0aW9uOworCiBzdHJ1Y3QgX0dzdEdMVmlkZW9NaXhlcgogewogICAgIEdzdEdMTWl4ZXIgbWl4ZXI7CkBAIC02MSw3ICsxMjEsNiBAQAogCiAgICAgR3N0R0xTaGFkZXIgKnNoYWRlcjsKICAgICBHc3RHTFNoYWRlciAqY2hlY2tlcjsKLSAgICBHUHRyQXJyYXkgKmlucHV0X2ZyYW1lczsKIAogICAgIEdMdWludCB2YW87CiAgICAgR0x1aW50IHZib19pbmRpY2VzOwpkaWZmIC0tZ2l0IGEvZXh0L2dsL2dzdG9wZW5nbC5jIGIvZXh0L2dsL2dzdG9wZW5nbC5jCmluZGV4IDFmYWQwYTIuLjUwNjc2YzQgMTAwNjQ0Ci0tLSBhL2V4dC9nbC9nc3RvcGVuZ2wuYworKysgYi9leHQvZ2wvZ3N0b3BlbmdsLmMKQEAgLTQ3LDYgKzQ3LDcgQEAKICNpbmNsdWRlICJnc3RnbHVwbG9hZGVsZW1lbnQuaCIKICNpbmNsdWRlICJnc3RnbGRvd25sb2FkZWxlbWVudC5oIgogI2luY2x1ZGUgImdzdGdsY29sb3Jjb252ZXJ0ZWxlbWVudC5oIgorI2luY2x1ZGUgImdzdGdsY29sb3JiYWxhbmNlLmgiCiAjaW5jbHVkZSAiZ3N0Z2xmaWx0ZXJiaW4uaCIKICNpbmNsdWRlICJnc3RnbHNpbmtiaW4uaCIKICNpbmNsdWRlICJnc3RnbHNyY2Jpbi5oIgpAQCAtNjAsOSArNjEsMTEgQEAKICNpbmNsdWRlICJnc3RnbGZpbHRlcmFwcC5oIgogI2luY2x1ZGUgImdzdGdsc3RlcmVvc3BsaXQuaCIKICNpbmNsdWRlICJnc3RnbHN0ZXJlb21peC5oIgorI2luY2x1ZGUgImdzdGdsdmlld2NvbnZlcnQuaCIKIAogI2lmIEhBVkVfR1JBUEhFTkUKICNpbmNsdWRlICJnc3RnbHRyYW5zZm9ybWF0aW9uLmgiCisjaW5jbHVkZSAiZ3N0Z2x2aWRlb2ZsaXAuaCIKICNlbmRpZgogI2lmIEhBVkVfSlBFRwogI2lmIEhBVkVfUE5HCkBAIC03NSw3ICs3OCw2IEBACiAjaW5jbHVkZSAiZ3N0Z2xmaWx0ZXJnbGFzcy5oIgogLyogI2luY2x1ZGUgImdzdGdsZmlsdGVycmVmbGVjdGVkc2NyZWVuLmgiICovCiAjaW5jbHVkZSAiZ3N0Z2xkZWludGVybGFjZS5oIgotI2luY2x1ZGUgImdzdGdsdmlld2NvbnZlcnQuaCIKICNpbmNsdWRlICJnc3RnbG1vc2FpYy5oIgogI2lmIEhBVkVfUE5HCiAjaW5jbHVkZSAiZ3N0Z2xkaWZmZXJlbmNlbWF0dGUuaCIKQEAgLTE0MCw2ICsxNDIsMTEgQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAorICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnbGNvbG9yYmFsYW5jZSIsCisgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfQ09MT1JfQkFMQU5DRSkpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKwogICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnbGZpbHRlcmJpbiIsCiAgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfRklMVEVSX0JJTikpIHsKICAgICByZXR1cm4gRkFMU0U7CkBAIC0xNjksNiArMTc2LDExIEBACiAgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfVFJBTlNGT1JNQVRJT04pKSB7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9CisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2x2aWRlb2ZsaXAiLAorICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX1ZJREVPX0ZMSVApKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiAjZW5kaWYKIAogICBpZiAoIWdzdF9nbF9lZmZlY3RzX3JlZ2lzdGVyX2ZpbHRlcnMgKHBsdWdpbiwgR1NUX1JBTktfTk9ORSkpIHsKQEAgLTE5OSw2ICsyMTEsMjEgQEAKICAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9GSUxURVJfQVBQKSkgewogICAgIHJldHVybiBGQUxTRTsKICAgfQorCisgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsdmlld2NvbnZlcnQiLAorICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX1ZJRVdfQ09OVkVSVF9FTEVNRU5UKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsc3RlcmVvc3BsaXQiLAorICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX1NURVJFT1NQTElUKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsc3RlcmVvbWl4IiwKKyAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9HTF9TVEVSRU9fTUlYKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQogI2lmIEhBVkVfSlBFRwogI2lmIEhBVkVfUE5HCiAgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsb3ZlcmxheSIsCkBAIC0yMjgsMTEgKzI1NSw2IEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKLSAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2x2aWV3Y29udmVydCIsCi0gICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfVklFV19DT05WRVJUX0VMRU1FTlQpKSB7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ2xtb3NhaWMiLAogICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX01PU0FJQykpIHsKICAgICByZXR1cm4gRkFMU0U7CkBAIC0yNDksMTQgKzI3MSw2IEBACiAgIH0KICNlbmRpZgogI2VuZGlmIC8qIEhBVkVfUE5HICovCi0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgImdsc3RlcmVvc3BsaXQiLAotICAgICAgICAgIEdTVF9SQU5LX05PTkUsIEdTVF9UWVBFX0dMX1NURVJFT1NQTElUKSkgewotICAgIHJldHVybiBGQUxTRTsKLSAgfQotICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnbHN0ZXJlb21peCIsCi0gICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfR0xfU1RFUkVPX01JWCkpIHsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KICNlbmRpZiAvKiBHU1RfR0xfSEFWRV9PUEVOR0wgKi8KICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfQ09DT0EKICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiY2FvcGVuZ2xsYXllcnNpbmsiLApkaWZmIC0tZ2l0IGEvZXh0L2dtZS9NYWtlZmlsZS5pbiBiL2V4dC9nbWUvTWFrZWZpbGUuaW4KaW5kZXggOWFiOGNlNi4uYTA4NjRiNCAxMDA2NDQKLS0tIGEvZXh0L2dtZS9NYWtlZmlsZS5pbgorKysgYi9leHQvZ21lL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9NYWtlZmlsZS5hbSBiL2V4dC9nc2V0dGluZ3MvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYmE4YWMuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLWdzZXR0aW5nc19TQ0hFTUFTID0gb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCi0KLW9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbDogb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCi0JY3Agb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sIG9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAotCi1pZiBVU0VfR1NFVFRJTkdTCi1AR1NFVFRJTkdTX1JVTEVTQAotZW5kaWYKLQotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHMubGEKLQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfU09VUkNFUyA9IFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMgXAotICAgICAgICBnc3Rnc2V0dGluZ3NhdWRpb3NyYy5jIFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmMgXAotICAgICAgICBnc3Rnc2V0dGluZ3N2aWRlb3NyYy5jIFwKLSAgICAgICAgZ3N0c3dpdGNoc2luay5jIFwKLSAgICAgICAgZ3N0c3dpdGNoc3JjLmMgXAotCXBsdWdpbi5jCi0KLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEdTRVRUSU5HU19DRkxBR1MpICQoRElSX0NGTEFHUykgXAotCS1ER3N0U3dpdGNoU3JjPUdzdEdTZXR0aW5nc1N3aXRjaFNyYyBcCi0JLURHc3RTd2l0Y2hTcmNDbGFzcz1Hc3RHU2V0dGluZ3NTd2l0Y2hTcmNDbGFzcyBcCi0JLURHc3RTd2l0Y2hTaW5rPUdzdEdTZXR0aW5nc1N3aXRjaFNpbmsgXAotCS1ER3N0U3dpdGNoU2lua0NsYXNzPUdzdEdTZXR0aW5nc1N3aXRjaFNpbmtDbGFzcwotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCQUREID0gJChHU1RfTElCUykgJChHU0VUVElOR1NfTElCUykKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi0KLW5vaW5zdF9IRUFERVJTID0gXAotICAgICAgICBnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuaCBcCi0gICAgICAgIGdzdGdzZXR0aW5nc2F1ZGlvc3JjLmggXAotICAgICAgICBnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuaCBcCi0gICAgICAgIGdzdGdzZXR0aW5nc3ZpZGVvc3JjLmggXAotICAgICAgICBnc3Rzd2l0Y2hzaW5rLmggXAotICAgICAgICBnc3Rzd2l0Y2hzcmMuaCBcCi0JZ3N0Z3NldHRpbmdzLmgKLQotRVhUUkFfRElTVCA9IG9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAotCi1DTEVBTkZJTEVTID0gJChnc2V0dGluZ3NfU0NIRU1BUykKZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzLmggYi9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5ncy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDlhZWU3Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzLmgKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX0dTRVRUSU5HU19IX18KLSNkZWZpbmUgX19HU1RfR1NFVFRJTkdTX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19TQ0hFTUEgIm9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXItMC4xMC5kZWZhdWx0LWVsZW1lbnRzIgotI2RlZmluZSBHU1RfR1NFVFRJTkdTX1BBVEggIi9kZXNrdG9wL2dzdHJlYW1lci8wLjEwL2RlZmF1bHQtZWxlbWVudHMvIgotCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfS0VZX1NPVU5EU19BVURJT1NJTksgInNvdW5kcy1hdWRpb3NpbmsiCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfS0VZX01VU0lDX0FVRElPU0lOSyAibXVzaWMtYXVkaW9zaW5rIgotI2RlZmluZSBHU1RfR1NFVFRJTkdTX0tFWV9DSEFUX0FVRElPU0lOSyAiY2hhdC1hdWRpb3NpbmsiCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfS0VZX0FVRElPU1JDICJhdWRpb3NyYyIKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19LRVlfVklERU9TSU5LICJ2aWRlb3NpbmsiCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfS0VZX1ZJREVPU1JDICJ2aWRlb3NyYyIKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19LRVlfVklTVUFMSVpBVElPTiAidmlzdWFsaXphdGlvbiIKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX0dTRVRUSU5HU19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMgYi9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc2F1ZGlvc2luay5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDgwY2I1Li4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNTUgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLS8qKgotICogU0VDVElPTjplbGVtZW50LWdzZXR0aW5nc2F1ZGlvc2luawotICoKLSAqIFRoaXMgZWxlbWVudCBvdXRwdXRzIHNvdW5kIHRvIHRoZSBhdWRpb3NpbmsgdGhhdCBoYXMgYmVlbiBjb25maWd1cmVkIGluCi0gKiBHU2V0dGluZ3MgYnkgdGhlIHVzZXIuCi0gKiAKLSAqIDxyZWZzZWN0Mj4KLSAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KLSAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBnc2V0dGluZ3NhdWRpb3NpbmsKLSAqIF18IFBsYXkgb24gY29uZmlndXJlZCBhdWRpb3NpbmsKLSAqIDwvcmVmc2VjdDI+Ci0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlIDxjb25maWcuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9nbGliLWNvbXBhdC1wcml2YXRlLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuaCIKLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3MuaCIKLQotI2RlZmluZSBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEUgKGdzdF9nc2V0dGluZ3NfYXVkaW9zaW5rX3Byb2ZpbGVfZ2V0X3R5cGUoKSkKLXN0YXRpYyBHVHlwZQotZ3N0X2dzZXR0aW5nc19hdWRpb3NpbmtfcHJvZmlsZV9nZXRfdHlwZSAodm9pZCkKLXsKLSAgc3RhdGljIEdUeXBlIGdzZXR0aW5nc19wcm9maWxlX3R5cGUgPSAwOwotICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSBnc2V0dGluZ3NfcHJvZmlsZXNbXSA9IHsKLSAgICB7R1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9TT1VORFMsICJTb3VuZCBFdmVudHMiLCAic291bmRzIn0sCi0gICAge0dTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfTVVTSUMsICJNdXNpYyBhbmQgTW92aWVzIChkZWZhdWx0KSIsCi0gICAgICAgICJtdXNpYyJ9LAotICAgIHtHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX0NIQVQsICJBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciLCAiY2hhdCJ9LAotICAgIHswLCBOVUxMLCBOVUxMfQotICB9OwotCi0gIGlmICghZ3NldHRpbmdzX3Byb2ZpbGVfdHlwZSkgewotICAgIGdzZXR0aW5nc19wcm9maWxlX3R5cGUgPQotICAgICAgICBnX2VudW1fcmVnaXN0ZXJfc3RhdGljICgiR3N0R1NldHRpbmdzQXVkaW9TaW5rUHJvZmlsZSIsCi0gICAgICAgIGdzZXR0aW5nc19wcm9maWxlcyk7Ci0gIH0KLSAgcmV0dXJuIGdzZXR0aW5nc19wcm9maWxlX3R5cGU7Ci19Ci0KLWVudW0KLXsKLSAgUFJPUF8wLAotICBQUk9QX1BST0ZJTEUKLX07Ci0KLUdTVF9CT0lMRVJQTEFURSAoR3N0R1NldHRpbmdzQXVkaW9TaW5rLCBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmssIEdzdFN3aXRjaFNpbmssCi0gICAgR1NUX1RZUEVfU1dJVENIX1NJTkspOwotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19jaGFuZ2VfY2hpbGQgKEdzdEdTZXR0aW5nc0F1ZGlvU2luayAqIHNpbmspCi17Ci0gIGNvbnN0IGdjaGFyICprZXkgPSBOVUxMOwotICBnY2hhciAqbmV3X3N0cmluZzsKLSAgR0Vycm9yICplcnIgPSBOVUxMOwotICBHc3RFbGVtZW50ICpuZXdfa2lkOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIHN3aXRjaCAoc2luay0+cHJvZmlsZSkgewotICAgIGNhc2UgR1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9TT1VORFM6Ci0gICAgICBrZXkgPSBHU1RfR1NFVFRJTkdTX0tFWV9TT1VORFNfQVVESU9TSU5LOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX01VU0lDOgotICAgICAga2V5ID0gR1NUX0dTRVRUSU5HU19LRVlfTVVTSUNfQVVESU9TSU5LOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX0NIQVQ6Ci0gICAgICBrZXkgPSBHU1RfR1NFVFRJTkdTX0tFWV9DSEFUX0FVRElPU0lOSzsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIG5ld19zdHJpbmcgPSBnX3NldHRpbmdzX2dldF9zdHJpbmcgKHNpbmstPnNldHRpbmdzLCBrZXkpOwotCi0gIGlmIChuZXdfc3RyaW5nICE9IE5VTEwgJiYgc2luay0+Z3NldHRpbmdzX3N0ciAhPSBOVUxMICYmCi0gICAgICAoc3RybGVuIChuZXdfc3RyaW5nKSA9PSAwIHx8Ci0gICAgICAgICAgc3RyY21wIChzaW5rLT5nc2V0dGluZ3Nfc3RyLCBuZXdfc3RyaW5nKSA9PSAwKSkgewotICAgIGdfZnJlZSAobmV3X3N0cmluZyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywKLSAgICAgICAgIkdTZXR0aW5ncyBrZXkgd2FzIHVwZGF0ZWQsIGJ1dCBpdCBkaWRuJ3QgY2hhbmdlLiBJZ25vcmluZyIpOwotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLSAgICByZXR1cm4gVFJVRTsKLSAgfQotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIkdTZXR0aW5ncyBrZXkgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJyIsCi0gICAgICBHU1RfU1RSX05VTEwgKHNpbmstPmdzZXR0aW5nc19zdHIpLCBHU1RfU1RSX05VTEwgKG5ld19zdHJpbmcpKTsKLQotICBpZiAobmV3X3N0cmluZykgewotICAgIG5ld19raWQgPSBnc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24gKG5ld19zdHJpbmcsIFRSVUUsICZlcnIpOwotICAgIGlmIChlcnIpIHsKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJlcnJvciBjcmVhdGluZyBiaW4gJyVzJzogJXMiLCBuZXdfc3RyaW5nLAotICAgICAgICAgIGVyci0+bWVzc2FnZSk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0gICAgfQotICB9IGVsc2UgewotICAgIG5ld19raWQgPSBOVUxMOwotICB9Ci0KLSAgaWYgKG5ld19raWQgPT0gTlVMTCkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5rLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAotICAgICAgICAoIkZhaWxlZCB0byByZW5kZXIgYXVkaW8gc2luayBmcm9tIEdTZXR0aW5ncyIpKTsKLSAgICBnb3RvIGZhaWw7Ci0gIH0KLQotICBpZiAoIWdzdF9zd2l0Y2hfc2lua19zZXRfY2hpbGQgKEdTVF9TV0lUQ0hfU0lOSyAoc2luayksIG5ld19raWQpKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzaW5rLCAiRmFpbGVkIHRvIHVwZGF0ZSBjaGlsZCBlbGVtZW50Iik7Ci0gICAgZ290byBmYWlsOwotICB9Ci0KLSAgZ19mcmVlIChzaW5rLT5nc2V0dGluZ3Nfc3RyKTsKLSAgc2luay0+Z3NldHRpbmdzX3N0ciA9IG5ld19zdHJpbmc7Ci0KLSAgcmV0dXJuIFRSVUU7Ci0KLWZhaWw6Ci0gIGdfZnJlZSAobmV3X3N0cmluZyk7Ci0gIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3Npbmtfc3dpdGNoX3Byb2ZpbGUgKEdzdEdTZXR0aW5nc0F1ZGlvU2luayAqIHNpbmssCi0gICAgR3N0R1NldHRpbmdzQXVkaW9TaW5rUHJvZmlsZSBwcm9maWxlKQotewotICBpZiAoc2luay0+c2V0dGluZ3MgPT0gTlVMTCkKLSAgICByZXR1cm4gVFJVRTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOwotICBzaW5rLT5wcm9maWxlID0gcHJvZmlsZTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOwotCi0gIHJldHVybiBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfY2hhbmdlX2NoaWxkIChzaW5rKTsKLX0KLQotc3RhdGljIHZvaWQKLW9uX2NoYW5nZWQgKEdTZXR0aW5ncyAqIHNldHRpbmdzLCBnY2hhciAqIGtleSwgR3N0R1NldHRpbmdzQXVkaW9TaW5rICogc2luaykKLXsKLSAgZ2Jvb2xlYW4gY2hhbmdlZCA9IEZBTFNFOwotCi0gIGlmICghZ19zdHJfaGFzX3N1ZmZpeCAoa2V5LCAiYXVkaW9zaW5rIikpCi0gICAgcmV0dXJuOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIGlmICgoc2luay0+cHJvZmlsZSA9PSBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX1NPVU5EUyAmJgotICAgICAgICAgIGdfc3RyX2VxdWFsIChrZXksIEdTVF9HU0VUVElOR1NfS0VZX1NPVU5EU19BVURJT1NJTkspKSB8fAotICAgICAgKHNpbmstPnByb2ZpbGUgPT0gR1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9NVVNJQyAmJgotICAgICAgICAgIGdfc3RyX2VxdWFsIChrZXksIEdTVF9HU0VUVElOR1NfS0VZX01VU0lDX0FVRElPU0lOSykpIHx8Ci0gICAgICAoc2luay0+cHJvZmlsZSA9PSBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX0NIQVQgJiYKLSAgICAgICAgICBnX3N0cl9lcXVhbCAoa2V5LCBHU1RfR1NFVFRJTkdTX0tFWV9DSEFUX0FVRElPU0lOSykpKQotICAgIGNoYW5nZWQgPSBUUlVFOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0KLSAgaWYgKGNoYW5nZWQpCi0gICAgZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2NoYW5nZV9jaGlsZCAoc2luayk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX3N0YXJ0IChHc3RHU2V0dGluZ3NBdWRpb1NpbmsgKiBzaW5rKQotewotICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdUaHJlYWQgKnRocmVhZDsKLQotICBzaW5rLT5sb29wID0gZ19tYWluX2xvb3BfbmV3IChzaW5rLT5jb250ZXh0LCBGQUxTRSk7Ci0KLSAgdGhyZWFkID0KLSAgICAgIGdfdGhyZWFkX2NyZWF0ZSAoKEdUaHJlYWRGdW5jKSBnX21haW5fbG9vcF9ydW4sIHNpbmstPmxvb3AsIEZBTFNFLCAmZXJyKTsKLSAgaWYgKCF0aHJlYWQpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2luaywgQ09SRSwgU1RBVEVfQ0hBTkdFLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgdGhyZWFkOiAlcyIsIGVyci0+bWVzc2FnZSkpOwotICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLSAgICBnX21haW5fbG9vcF91bnJlZiAoc2luay0+bG9vcCk7Ci0gICAgc2luay0+bG9vcCA9IE5VTEw7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAoc2luay0+Y29udGV4dCk7Ci0gIHNpbmstPnNldHRpbmdzID0gZ19zZXR0aW5nc19uZXcgKEdTVF9HU0VUVElOR1NfU0NIRU1BKTsKLSAgc2luay0+Y2hhbmdlZF9pZCA9Ci0gICAgICBnX3NpZ25hbF9jb25uZWN0X2RhdGEgKEdfT0JKRUNUIChzaW5rLT5zZXR0aW5ncyksICJjaGFuZ2VkIiwKLSAgICAgIEdfQ0FMTEJBQ0sgKG9uX2NoYW5nZWQpLCBnc3Rfb2JqZWN0X3JlZiAoc2luayksCi0gICAgICAoR0Nsb3N1cmVOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYsIDApOwotICBnX21haW5fY29udGV4dF9wb3BfdGhyZWFkX2RlZmF1bHQgKHNpbmstPmNvbnRleHQpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19yZXNldCAoR3N0R1NldHRpbmdzQXVkaW9TaW5rICogc2luaykKLXsKLSAgZ3N0X3N3aXRjaF9zaW5rX3NldF9jaGlsZCAoR1NUX1NXSVRDSF9TSU5LIChzaW5rKSwgTlVMTCk7Ci0KLSAgaWYgKHNpbmstPmNoYW5nZWRfaWQpIHsKLSAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKHNpbmstPnNldHRpbmdzLCBzaW5rLT5jaGFuZ2VkX2lkKTsKLSAgICBzaW5rLT5jaGFuZ2VkX2lkID0gMDsKLSAgfQotCi0gIGlmIChzaW5rLT5sb29wKSB7Ci0gICAgZ19tYWluX2xvb3BfcXVpdCAoc2luay0+bG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfdW5yZWYgKHNpbmstPmxvb3ApOwotICAgIHNpbmstPmxvb3AgPSBOVUxMOwotICB9Ci0KLSAgaWYgKHNpbmstPnNldHRpbmdzKSB7Ci0gICAgZ19vYmplY3RfdW5yZWYgKHNpbmstPnNldHRpbmdzKTsKLSAgICBzaW5rLT5zZXR0aW5ncyA9IE5VTEw7Ci0gIH0KLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOwotICBnX2ZyZWUgKHNpbmstPmdzZXR0aW5nc19zdHIpOwotICBzaW5rLT5nc2V0dGluZ3Nfc3RyID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotewotICBHc3RHU2V0dGluZ3NBdWRpb1NpbmsgKnNpbmsgPSBHU1RfR1NFVFRJTkdTX0FVRElPX1NJTksgKG9iamVjdCk7Ci0KLSAgZ19mcmVlIChzaW5rLT5nc2V0dGluZ3Nfc3RyKTsKLSAgZ19tYWluX2NvbnRleHRfdW5yZWYgKHNpbmstPmNvbnRleHQpOwotCi0gIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAoKEdPYmplY3QgKikgKHNpbmspKSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3Npbmtfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdEdTZXR0aW5nc0F1ZGlvU2luayAqc2luayA9IEdTVF9HU0VUVElOR1NfQVVESU9fU0lOSyAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfUFJPRklMRToKLSAgICAgIGdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19zd2l0Y2hfcHJvZmlsZSAoc2luaywgZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBHc3RHU2V0dGluZ3NBdWRpb1NpbmsgKnNpbmsgPSBHU1RfR1NFVFRJTkdTX0FVRElPX1NJTksgKG9iamVjdCk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1BST0ZJTEU6Ci0gICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgc2luay0+cHJvZmlsZSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0gICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLXsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOwotICBHc3RHU2V0dGluZ3NBdWRpb1NpbmsgKnNpbmsgPSBHU1RfR1NFVFRJTkdTX0FVRElPX1NJTksgKGVsZW1lbnQpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgotICAgICAgaWYgKCFnc3RfZ3NldHRpbmdzX2F1ZGlvX3Npbmtfc3RhcnQgKHNpbmspKQotICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwotCi0gICAgICBpZiAoIWdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19jaGFuZ2VfY2hpbGQgKHNpbmspKSB7Ci0gICAgICAgIGdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19yZXNldCAoc2luayk7Ci0gICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXQgPSBHU1RfQ0FMTF9QQVJFTlRfV0lUSF9ERUZBVUxUIChHU1RfRUxFTUVOVF9DTEFTUywgY2hhbmdlX3N0YXRlLAotICAgICAgKGVsZW1lbnQsIHRyYW5zaXRpb24pLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX3Jlc2V0IChzaW5rKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfaW5pdCAoR3N0R1NldHRpbmdzQXVkaW9TaW5rICogc2luaywKLSAgICBHc3RHU2V0dGluZ3NBdWRpb1NpbmtDbGFzcyAqIGdfY2xhc3MpCi17Ci0gIHNpbmstPmNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7Ci0gIGdzdF9nc2V0dGluZ3NfYXVkaW9fc2lua19yZXNldCAoc2luayk7Ci0KLSAgc2luay0+cHJvZmlsZSA9IEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfTVVTSUM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVrbGFzcywgIkdTZXR0aW5ncyBhdWRpbyBzaW5rIiwKLSAgICAgICJTaW5rL0F1ZGlvIiwKLSAgICAgICJBdWRpbyBzaW5rIGVtYmVkZGluZyB0aGUgR1NldHRpbmdzIHByZWZlcmVuY2VzIGZvciBhdWRpbyBvdXRwdXQiLAotICAgICAgIlNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPiIpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2NsYXNzX2luaXQgKEdzdEdTZXR0aW5nc0F1ZGlvU2lua0NsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIG9rbGFzcy0+ZmluYWxpemUgPSBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfZmluYWxpemU7Ci0gIG9rbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX3NldF9wcm9wZXJ0eTsKLSAgb2tsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfZ2V0X3Byb3BlcnR5OwotCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKG9rbGFzcywgUFJPUF9QUk9GSUxFLAotICAgICAgZ19wYXJhbV9zcGVjX2VudW0gKCJwcm9maWxlIiwgIlByb2ZpbGUiLCAiUHJvZmlsZSIsCi0gICAgICAgICAgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFLAotICAgICAgICAgIEdTVF9HU0VUVElOR1NfQVVESU9TSU5LX1BST0ZJTEVfU09VTkRTLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotCi0gIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2NoYW5nZV9zdGF0ZTsKLX0KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmggYi9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc2F1ZGlvc2luay5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTE1MTkwLi4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmgKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX0dTRVRUSU5HU19BVURJT19TSU5LX0hfXwotI2RlZmluZSBfX0dTVF9HU0VUVElOR1NfQVVESU9fU0lOS19IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+Ci0jaW5jbHVkZSAiZ3N0c3dpdGNoc2luay5oIgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NJTksgXAotICAoZ3N0X2dzZXR0aW5nc19hdWRpb19zaW5rX2dldF90eXBlICgpKQotI2RlZmluZSBHU1RfR1NFVFRJTkdTX0FVRElPX1NJTksob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX0dTRVRUSU5HU19BVURJT19TSU5LLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R1NldHRpbmdzQXVkaW9TaW5rKSkKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19BVURJT19TSU5LX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NJTkssIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHU2V0dGluZ3NBdWRpb1NpbmtDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19HU0VUVElOR1NfQVVESU9fU0lOSyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NJTkspKQotI2RlZmluZSBHU1RfSVNfR1NFVFRJTkdTX0FVRElPX1NJTktfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HU0VUVElOR1NfQVVESU9fU0lOSykpCi0KLXR5cGVkZWYgZW51bQotewotICBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX1NPVU5EUywKLSAgR1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9NVVNJQywKLSAgR1NUX0dTRVRUSU5HU19BVURJT1NJTktfUFJPRklMRV9DSEFULAotICBHU1RfR1NFVFRJTkdTX0FVRElPU0lOS19QUk9GSUxFX05PTkUgLyogSW50ZXJuYWwgdmFsdWUgb25seSAqLwotfSBHc3RHU2V0dGluZ3NBdWRpb1NpbmtQcm9maWxlOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0R1NldHRpbmdzQXVkaW9TaW5rIHsKLSAgR3N0U3dpdGNoU2luayBwYXJlbnQ7Ci0KLSAgR1NldHRpbmdzICpzZXR0aW5nczsKLQotICBHTWFpbkNvbnRleHQgKmNvbnRleHQ7Ci0gIEdNYWluTG9vcCAqbG9vcDsKLSAgZ3Vsb25nIGNoYW5nZWRfaWQ7Ci0KLSAgR3N0R1NldHRpbmdzQXVkaW9TaW5rUHJvZmlsZSBwcm9maWxlOwotICBnY2hhciAqZ3NldHRpbmdzX3N0cjsKLX0gR3N0R1NldHRpbmdzQXVkaW9TaW5rOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0R1NldHRpbmdzQXVkaW9TaW5rQ2xhc3MgewotICBHc3RTd2l0Y2hTaW5rQ2xhc3MgcGFyZW50X2NsYXNzOwotfSBHc3RHU2V0dGluZ3NBdWRpb1NpbmtDbGFzczsKLQotR1R5cGUgICBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NpbmtfZ2V0X3R5cGUgICAodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9HU0VUVElOR1NfQVVESU9fU0lOS19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zcmMuYyBiL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zcmMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2NkN2M3OS4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc2F1ZGlvc3JjLmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNDYgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLS8qKgotICogU0VDVElPTjplbGVtZW50LWdzZXR0aW5nc2F1ZGlvc3JjCi0gKgotICogVGhpcyBlbGVtZW50IG91dHB1dHMgc291bmQgdG8gdGhlIGF1ZGlvc3JjIHRoYXQgaGFzIGJlZW4gY29uZmlndXJlZCBpbgotICogR1NldHRpbmdzIGJ5IHRoZSB1c2VyLgotICogCi0gKiA8cmVmc2VjdDI+Ci0gKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+Ci0gKiB8WwotICogZ3N0LWxhdW5jaCBnc2V0dGluZ3NhdWRpb3NyYyAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rCi0gKiBdfCBQbGF5IGZyb20gY29uZmlndXJlZCBhdWRpb3NyYwotICogPC9yZWZzZWN0Mj4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgPGNvbmZpZy5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dsaWItY29tcGF0LXByaXZhdGUuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgImdzdGdzZXR0aW5nc2F1ZGlvc3JjLmgiCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzLmgiCi0KLUdTVF9CT0lMRVJQTEFURSAoR3N0R1NldHRpbmdzQXVkaW9TcmMsIGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjLCBHc3RTd2l0Y2hTcmMsCi0gICAgR1NUX1RZUEVfU1dJVENIX1NSQyk7Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfY2hhbmdlX2NoaWxkIChHc3RHU2V0dGluZ3NBdWRpb1NyYyAqIHNyYykKLXsKLSAgZ2NoYXIgKm5ld19zdHJpbmc7Ci0gIEdFcnJvciAqZXJyID0gTlVMTDsKLSAgR3N0RWxlbWVudCAqbmV3X2tpZDsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7Ci0gIG5ld19zdHJpbmcgPQotICAgICAgZ19zZXR0aW5nc19nZXRfc3RyaW5nIChzcmMtPnNldHRpbmdzLCBHU1RfR1NFVFRJTkdTX0tFWV9BVURJT1NSQyk7Ci0KLSAgaWYgKG5ld19zdHJpbmcgIT0gTlVMTCAmJiBzcmMtPmdzZXR0aW5nc19zdHIgIT0gTlVMTCAmJgotICAgICAgKHN0cmxlbiAobmV3X3N0cmluZykgPT0gMCB8fAotICAgICAgICAgIHN0cmNtcCAoc3JjLT5nc2V0dGluZ3Nfc3RyLCBuZXdfc3RyaW5nKSA9PSAwKSkgewotICAgIGdfZnJlZSAobmV3X3N0cmluZyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLAotICAgICAgICAiR1NldHRpbmdzIGtleSB3YXMgdXBkYXRlZCwgYnV0IGl0IGRpZG4ndCBjaGFuZ2UuIElnbm9yaW5nIik7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0gICAgcmV0dXJuIFRSVUU7Ci0gIH0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiR1NldHRpbmdzIGtleSBjaGFuZ2VkIGZyb20gJyVzJyB0byAnJXMnIiwKLSAgICAgIEdTVF9TVFJfTlVMTCAoc3JjLT5nc2V0dGluZ3Nfc3RyKSwgR1NUX1NUUl9OVUxMIChuZXdfc3RyaW5nKSk7Ci0KLSAgaWYgKG5ld19zdHJpbmcpIHsKLSAgICBuZXdfa2lkID0gZ3N0X3BhcnNlX2Jpbl9mcm9tX2Rlc2NyaXB0aW9uIChuZXdfc3RyaW5nLCBUUlVFLCAmZXJyKTsKLSAgICBpZiAoZXJyKSB7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChzcmMsICJlcnJvciBjcmVhdGluZyBiaW4gJyVzJzogJXMiLCBuZXdfc3RyaW5nLAotICAgICAgICAgIGVyci0+bWVzc2FnZSk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0gICAgfQotICB9IGVsc2UgewotICAgIG5ld19raWQgPSBOVUxMOwotICB9Ci0KLSAgaWYgKG5ld19raWQgPT0gTlVMTCkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIHJlbmRlciBhdWRpbyBzcmMgZnJvbSBHU2V0dGluZ3MiKSk7Ci0gICAgZ290byBmYWlsOwotICB9Ci0KLSAgaWYgKCFnc3Rfc3dpdGNoX3NyY19zZXRfY2hpbGQgKEdTVF9TV0lUQ0hfU1JDIChzcmMpLCBuZXdfa2lkKSkgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc3JjLCAiRmFpbGVkIHRvIHVwZGF0ZSBjaGlsZCBlbGVtZW50Iik7Ci0gICAgZ290byBmYWlsOwotICB9Ci0KLSAgZ19mcmVlIChzcmMtPmdzZXR0aW5nc19zdHIpOwotICBzcmMtPmdzZXR0aW5nc19zdHIgPSBuZXdfc3RyaW5nOwotCi0gIHJldHVybiBUUlVFOwotCi1mYWlsOgotICBnX2ZyZWUgKG5ld19zdHJpbmcpOwotICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyB2b2lkCi1vbl9jaGFuZ2VkIChHU2V0dGluZ3MgKiBzZXR0aW5ncywgZ2NoYXIgKiBrZXksIEdzdEdTZXR0aW5nc0F1ZGlvU3JjICogc3JjKQotewotICBpZiAoIWdfc3RyX2VxdWFsIChrZXksICJhdWRpb3NyYyIpKQotICAgIHJldHVybjsKLQotICBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19jaGFuZ2VfY2hpbGQgKHNyYyk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfc3RhcnQgKEdzdEdTZXR0aW5nc0F1ZGlvU3JjICogc3JjKQotewotICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdUaHJlYWQgKnRocmVhZDsKLQotICBzcmMtPmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKHNyYy0+Y29udGV4dCwgRkFMU0UpOwotCi0gIHRocmVhZCA9Ci0gICAgICBnX3RocmVhZF9jcmVhdGUgKChHVGhyZWFkRnVuYykgZ19tYWluX2xvb3BfcnVuLCBzcmMtPmxvb3AsIEZBTFNFLCAmZXJyKTsKLSAgaWYgKCF0aHJlYWQpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBDT1JFLCBTVEFURV9DSEFOR0UsIChOVUxMKSwKLSAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIG5ldyB0aHJlYWQ6ICVzIiwgZXJyLT5tZXNzYWdlKSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnIpOwotICAgIGdfbWFpbl9sb29wX3VucmVmIChzcmMtPmxvb3ApOwotICAgIHNyYy0+bG9vcCA9IE5VTEw7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAoc3JjLT5jb250ZXh0KTsKLSAgc3JjLT5zZXR0aW5ncyA9IGdfc2V0dGluZ3NfbmV3IChHU1RfR1NFVFRJTkdTX1NDSEVNQSk7Ci0gIHNyYy0+Y2hhbmdlZF9pZCA9Ci0gICAgICBnX3NpZ25hbF9jb25uZWN0X2RhdGEgKEdfT0JKRUNUIChzcmMtPnNldHRpbmdzKSwgImNoYW5nZWQiLAotICAgICAgR19DQUxMQkFDSyAob25fY2hhbmdlZCksIGdzdF9vYmplY3RfcmVmIChzcmMpLAotICAgICAgKEdDbG9zdXJlTm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmLCAwKTsKLSAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0IChzcmMtPmNvbnRleHQpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX3Jlc2V0IChHc3RHU2V0dGluZ3NBdWRpb1NyYyAqIHNyYykKLXsKLSAgZ3N0X3N3aXRjaF9zcmNfc2V0X2NoaWxkIChHU1RfU1dJVENIX1NSQyAoc3JjKSwgTlVMTCk7Ci0KLSAgaWYgKHNyYy0+Y2hhbmdlZF9pZCkgewotICAgIGdfc2lnbmFsX2hhbmRsZXJfZGlzY29ubmVjdCAoc3JjLT5zZXR0aW5ncywgc3JjLT5jaGFuZ2VkX2lkKTsKLSAgICBzcmMtPmNoYW5nZWRfaWQgPSAwOwotICB9Ci0KLSAgaWYgKHNyYy0+bG9vcCkgewotICAgIGdfbWFpbl9sb29wX3F1aXQgKHNyYy0+bG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfdW5yZWYgKHNyYy0+bG9vcCk7Ci0gICAgc3JjLT5sb29wID0gTlVMTDsKLSAgfQotCi0gIGlmIChzcmMtPnNldHRpbmdzKSB7Ci0gICAgZ19vYmplY3RfdW5yZWYgKHNyYy0+c2V0dGluZ3MpOwotICAgIHNyYy0+c2V0dGluZ3MgPSBOVUxMOwotICB9Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzcmMpOwotICBnX2ZyZWUgKHNyYy0+Z3NldHRpbmdzX3N0cik7Ci0gIHNyYy0+Z3NldHRpbmdzX3N0ciA9IE5VTEw7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdEdTZXR0aW5nc0F1ZGlvU3JjICpzcmMgPSBHU1RfR1NFVFRJTkdTX0FVRElPX1NSQyAob2JqZWN0KTsKLQotICBnX2ZyZWUgKHNyYy0+Z3NldHRpbmdzX3N0cik7Ci0gIGdfbWFpbl9jb250ZXh0X3VucmVmIChzcmMtPmNvbnRleHQpOwotCi0gIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAoKEdPYmplY3QgKikgKHNyYykpKTsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCi17Ci0gIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldCA9IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUzsKLSAgR3N0R1NldHRpbmdzQXVkaW9TcmMgKnNyYyA9IEdTVF9HU0VUVElOR1NfQVVESU9fU1JDIChlbGVtZW50KTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKLSAgICAgIGlmICghZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfc3RhcnQgKHNyYykpCi0gICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0KLSAgICAgIGlmICghZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfY2hhbmdlX2NoaWxkIChzcmMpKSB7Ci0gICAgICAgIGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX3Jlc2V0IChzcmMpOwotICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0ID0gR1NUX0NBTExfUEFSRU5UX1dJVEhfREVGQVVMVCAoR1NUX0VMRU1FTlRfQ0xBU1MsIGNoYW5nZV9zdGF0ZSwKLSAgICAgIChlbGVtZW50LCB0cmFuc2l0aW9uKSwgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKLSAgICAgIGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX3Jlc2V0IChzcmMpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2luaXQgKEdzdEdTZXR0aW5nc0F1ZGlvU3JjICogc3JjLAotICAgIEdzdEdTZXR0aW5nc0F1ZGlvU3JjQ2xhc3MgKiBnX2NsYXNzKQotewotICBzcmMtPmNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7Ci0gIGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX3Jlc2V0IChzcmMpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc19hdWRpb19zcmNfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVrbGFzcywgIkdTZXR0aW5ncyBhdWRpbyBzcmMiLAotICAgICAgIlNyYy9BdWRpbyIsCi0gICAgICAiQXVkaW8gc3JjIGVtYmVkZGluZyB0aGUgR1NldHRpbmdzIHByZWZlcmVuY2VzIGZvciBhdWRpbyBpbnB1dCIsCi0gICAgICAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19jbGFzc19pbml0IChHc3RHU2V0dGluZ3NBdWRpb1NyY0NsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIG9rbGFzcy0+ZmluYWxpemUgPSBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19maW5hbGl6ZTsKLQotICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9nc2V0dGluZ3NfYXVkaW9fc3JjX2NoYW5nZV9zdGF0ZTsKLX0KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zcmMuaCBiL2V4dC9nc2V0dGluZ3MvZ3N0Z3NldHRpbmdzYXVkaW9zcmMuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDVjM2ZjMy4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc2F1ZGlvc3JjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMCBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX0dTRVRUSU5HU19BVURJT19TUkNfSF9fCi0jZGVmaW5lIF9fR1NUX0dTRVRUSU5HU19BVURJT19TUkNfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgImdzdHN3aXRjaHNyYy5oIgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NSQyBcCi0gIChnc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19nZXRfdHlwZSAoKSkKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19BVURJT19TUkMob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX0dTRVRUSU5HU19BVURJT19TUkMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHU2V0dGluZ3NBdWRpb1NyYykpCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfQVVESU9fU1JDX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NSQywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdTZXR0aW5nc0F1ZGlvU3JjQ2xhc3MpKQotI2RlZmluZSBHU1RfSVNfR1NFVFRJTkdTX0FVRElPX1NSQyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NSQykpCi0jZGVmaW5lIEdTVF9JU19HU0VUVElOR1NfQVVESU9fU1JDX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NSQykpCi0KLXR5cGVkZWYgc3RydWN0IF9Hc3RHU2V0dGluZ3NBdWRpb1NyYyB7Ci0gIEdzdFN3aXRjaFNyYyBwYXJlbnQ7Ci0KLSAgR1NldHRpbmdzICpzZXR0aW5nczsKLQotICBHTWFpbkNvbnRleHQgKmNvbnRleHQ7Ci0gIEdNYWluTG9vcCAqbG9vcDsKLSAgZ3Vsb25nIGNoYW5nZWRfaWQ7Ci0KLSAgZ2NoYXIgKmdzZXR0aW5nc19zdHI7Ci19IEdzdEdTZXR0aW5nc0F1ZGlvU3JjOwotCi10eXBlZGVmIHN0cnVjdCBfR3N0R1NldHRpbmdzQXVkaW9TcmNDbGFzcyB7Ci0gIEdzdFN3aXRjaFNyY0NsYXNzIHBhcmVudF9jbGFzczsKLX0gR3N0R1NldHRpbmdzQXVkaW9TcmNDbGFzczsKLQotR1R5cGUgICBnc3RfZ3NldHRpbmdzX2F1ZGlvX3NyY19nZXRfdHlwZSAgICh2b2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX0dTRVRUSU5HU19BVURJT19TUkNfSF9fICovCmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc2luay5jIGIvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjdhMGEyNS4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc2luay5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEwIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0vKioKLSAqIFNFQ1RJT046ZWxlbWVudC1nc2V0dGluZ3N2aWRlb3NpbmsKLSAqCi0gKiBUaGlzIGVsZW1lbnQgb3V0cHV0cyBzb3VuZCB0byB0aGUgdmlkZW9zaW5rIHRoYXQgaGFzIGJlZW4gY29uZmlndXJlZCBpbgotICogR1NldHRpbmdzIGJ5IHRoZSB1c2VyLgotICogCi0gKiA8cmVmc2VjdDI+Ci0gKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+Ci0gKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgISB2aWRlb2NvbnZlcnQgISB2aWRlb3NjYWxlICEgZ3NldHRpbmdzdmlkZW9zaW5rCi0gKiBdfCBQbGF5IG9uIGNvbmZpZ3VyZWQgdmlkZW9zaW5rCi0gKiA8L3JlZnNlY3QyPgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmgiCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzLmgiCi0KLUdTVF9CT0lMRVJQTEFURSAoR3N0R1NldHRpbmdzVmlkZW9TaW5rLCBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmssIEdzdFN3aXRjaFNpbmssCi0gICAgR1NUX1RZUEVfU1dJVENIX1NJTkspOwotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19jaGFuZ2VfY2hpbGQgKEdzdEdTZXR0aW5nc1ZpZGVvU2luayAqIHNpbmspCi17Ci0gIGdjaGFyICpuZXdfc3RyaW5nOwotICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdzdEVsZW1lbnQgKm5ld19raWQ7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKLSAgbmV3X3N0cmluZyA9Ci0gICAgICBnX3NldHRpbmdzX2dldF9zdHJpbmcgKHNpbmstPnNldHRpbmdzLCBHU1RfR1NFVFRJTkdTX0tFWV9WSURFT1NJTkspOwotCi0gIGlmIChuZXdfc3RyaW5nICE9IE5VTEwgJiYgc2luay0+Z3NldHRpbmdzX3N0ciAhPSBOVUxMICYmCi0gICAgICAoc3RybGVuIChuZXdfc3RyaW5nKSA9PSAwIHx8Ci0gICAgICAgICAgc3RyY21wIChzaW5rLT5nc2V0dGluZ3Nfc3RyLCBuZXdfc3RyaW5nKSA9PSAwKSkgewotICAgIGdfZnJlZSAobmV3X3N0cmluZyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywKLSAgICAgICAgIkdTZXR0aW5ncyBrZXkgd2FzIHVwZGF0ZWQsIGJ1dCBpdCBkaWRuJ3QgY2hhbmdlLiBJZ25vcmluZyIpOwotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLSAgICByZXR1cm4gVFJVRTsKLSAgfQotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIkdTZXR0aW5ncyBrZXkgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJyIsCi0gICAgICBHU1RfU1RSX05VTEwgKHNpbmstPmdzZXR0aW5nc19zdHIpLCBHU1RfU1RSX05VTEwgKG5ld19zdHJpbmcpKTsKLQotICBpZiAobmV3X3N0cmluZykgewotICAgIG5ld19raWQgPSBnc3RfcGFyc2VfYmluX2Zyb21fZGVzY3JpcHRpb24gKG5ld19zdHJpbmcsIFRSVUUsICZlcnIpOwotICAgIGlmIChlcnIpIHsKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJlcnJvciBjcmVhdGluZyBiaW4gJyVzJzogJXMiLCBuZXdfc3RyaW5nLAotICAgICAgICAgIGVyci0+bWVzc2FnZSk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycik7Ci0gICAgfQotICB9IGVsc2UgewotICAgIG5ld19raWQgPSBOVUxMOwotICB9Ci0KLSAgaWYgKG5ld19raWQgPT0gTlVMTCkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5rLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAotICAgICAgICAoIkZhaWxlZCB0byByZW5kZXIgdmlkZW8gc2luayBmcm9tIEdTZXR0aW5ncyIpKTsKLSAgICBnb3RvIGZhaWw7Ci0gIH0KLQotICBpZiAoIWdzdF9zd2l0Y2hfc2lua19zZXRfY2hpbGQgKEdTVF9TV0lUQ0hfU0lOSyAoc2luayksIG5ld19raWQpKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzaW5rLCAiRmFpbGVkIHRvIHVwZGF0ZSBjaGlsZCBlbGVtZW50Iik7Ci0gICAgZ290byBmYWlsOwotICB9Ci0KLSAgZ19mcmVlIChzaW5rLT5nc2V0dGluZ3Nfc3RyKTsKLSAgc2luay0+Z3NldHRpbmdzX3N0ciA9IG5ld19zdHJpbmc7Ci0KLSAgcmV0dXJuIFRSVUU7Ci0KLWZhaWw6Ci0gIGdfZnJlZSAobmV3X3N0cmluZyk7Ci0gIHJldHVybiBGQUxTRTsKLX0KLQotc3RhdGljIHZvaWQKLW9uX2NoYW5nZWQgKEdTZXR0aW5ncyAqIHNldHRpbmdzLCBnY2hhciAqIGtleSwgR3N0R1NldHRpbmdzVmlkZW9TaW5rICogc2luaykKLXsKLSAgaWYgKCFnX3N0cl9oYXNfc3VmZml4IChrZXksICJ2aWRlb3NpbmsiKSkKLSAgICByZXR1cm47Ci0KLSAgZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2NoYW5nZV9jaGlsZCAoc2luayk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX3N0YXJ0IChHc3RHU2V0dGluZ3NWaWRlb1NpbmsgKiBzaW5rKQotewotICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdUaHJlYWQgKnRocmVhZDsKLQotICBzaW5rLT5sb29wID0gZ19tYWluX2xvb3BfbmV3IChzaW5rLT5jb250ZXh0LCBGQUxTRSk7Ci0KLSAgdGhyZWFkID0KLSAgICAgIGdfdGhyZWFkX2NyZWF0ZSAoKEdUaHJlYWRGdW5jKSBnX21haW5fbG9vcF9ydW4sIHNpbmstPmxvb3AsIEZBTFNFLCAmZXJyKTsKLSAgaWYgKCF0aHJlYWQpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2luaywgQ09SRSwgU1RBVEVfQ0hBTkdFLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgdGhyZWFkOiAlcyIsIGVyci0+bWVzc2FnZSkpOwotICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLSAgICBnX21haW5fbG9vcF91bnJlZiAoc2luay0+bG9vcCk7Ci0gICAgc2luay0+bG9vcCA9IE5VTEw7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAoc2luay0+Y29udGV4dCk7Ci0gIHNpbmstPnNldHRpbmdzID0gZ19zZXR0aW5nc19uZXcgKEdTVF9HU0VUVElOR1NfU0NIRU1BKTsKLSAgc2luay0+Y2hhbmdlZF9pZCA9Ci0gICAgICBnX3NpZ25hbF9jb25uZWN0X2RhdGEgKEdfT0JKRUNUIChzaW5rLT5zZXR0aW5ncyksICJjaGFuZ2VkIiwKLSAgICAgIEdfQ0FMTEJBQ0sgKG9uX2NoYW5nZWQpLCBnc3Rfb2JqZWN0X3JlZiAoc2luayksCi0gICAgICAoR0Nsb3N1cmVOb3RpZnkpIGdzdF9vYmplY3RfdW5yZWYsIDApOwotICBnX21haW5fY29udGV4dF9wb3BfdGhyZWFkX2RlZmF1bHQgKHNpbmstPmNvbnRleHQpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19yZXNldCAoR3N0R1NldHRpbmdzVmlkZW9TaW5rICogc2luaykKLXsKLSAgZ3N0X3N3aXRjaF9zaW5rX3NldF9jaGlsZCAoR1NUX1NXSVRDSF9TSU5LIChzaW5rKSwgTlVMTCk7Ci0KLSAgaWYgKHNpbmstPmNoYW5nZWRfaWQpIHsKLSAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKHNpbmstPnNldHRpbmdzLCBzaW5rLT5jaGFuZ2VkX2lkKTsKLSAgICBzaW5rLT5jaGFuZ2VkX2lkID0gMDsKLSAgfQotCi0gIGlmIChzaW5rLT5sb29wKSB7Ci0gICAgZ19tYWluX2xvb3BfcXVpdCAoc2luay0+bG9vcCk7Ci0gICAgZ19tYWluX2xvb3BfdW5yZWYgKHNpbmstPmxvb3ApOwotICAgIHNpbmstPmxvb3AgPSBOVUxMOwotICB9Ci0KLSAgaWYgKHNpbmstPnNldHRpbmdzKSB7Ci0gICAgZ19vYmplY3RfdW5yZWYgKHNpbmstPnNldHRpbmdzKTsKLSAgICBzaW5rLT5zZXR0aW5ncyA9IE5VTEw7Ci0gIH0KLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOwotICBnX2ZyZWUgKHNpbmstPmdzZXR0aW5nc19zdHIpOwotICBzaW5rLT5nc2V0dGluZ3Nfc3RyID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNpbmspOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotewotICBHc3RHU2V0dGluZ3NWaWRlb1NpbmsgKnNpbmsgPSBHU1RfR1NFVFRJTkdTX1ZJREVPX1NJTksgKG9iamVjdCk7Ci0KLSAgZ19mcmVlIChzaW5rLT5nc2V0dGluZ3Nfc3RyKTsKLSAgZ19tYWluX2NvbnRleHRfdW5yZWYgKHNpbmstPmNvbnRleHQpOwotCi0gIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGZpbmFsaXplLCAoKEdPYmplY3QgKikgKHNpbmspKSk7Ci19Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0gICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLXsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOwotICBHc3RHU2V0dGluZ3NWaWRlb1NpbmsgKnNpbmsgPSBHU1RfR1NFVFRJTkdTX1ZJREVPX1NJTksgKGVsZW1lbnQpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9OVUxMX1RPX1JFQURZOgotICAgICAgaWYgKCFnc3RfZ3NldHRpbmdzX3ZpZGVvX3Npbmtfc3RhcnQgKHNpbmspKQotICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwotCi0gICAgICBpZiAoIWdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19jaGFuZ2VfY2hpbGQgKHNpbmspKSB7Ci0gICAgICAgIGdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19yZXNldCAoc2luayk7Ci0gICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXQgPSBHU1RfQ0FMTF9QQVJFTlRfV0lUSF9ERUZBVUxUIChHU1RfRUxFTUVOVF9DTEFTUywgY2hhbmdlX3N0YXRlLAotICAgICAgKGVsZW1lbnQsIHRyYW5zaXRpb24pLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX3Jlc2V0IChzaW5rKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfaW5pdCAoR3N0R1NldHRpbmdzVmlkZW9TaW5rICogc2luaywKLSAgICBHc3RHU2V0dGluZ3NWaWRlb1NpbmtDbGFzcyAqIGdfY2xhc3MpCi17Ci0gIHNpbmstPmNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7Ci0gIGdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19yZXNldCAoc2luayk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVrbGFzcywgIkdTZXR0aW5ncyB2aWRlbyBzaW5rIiwKLSAgICAgICJTaW5rL1ZpZGVvIiwKLSAgICAgICJWaWRlbyBzaW5rIGVtYmVkZGluZyB0aGUgR1NldHRpbmdzIHByZWZlcmVuY2VzIGZvciB2aWRlbyBpbnB1dCIsCi0gICAgICAiU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Iik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NpbmtfY2xhc3NfaW5pdCAoR3N0R1NldHRpbmdzVmlkZW9TaW5rQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpva2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOwotICBHc3RFbGVtZW50Q2xhc3MgKmVrbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0KLSAgb2tsYXNzLT5maW5hbGl6ZSA9IGdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19maW5hbGl6ZTsKLQotICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19jaGFuZ2Vfc3RhdGU7Ci19CmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc2luay5oIGIvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3N2aWRlb3NpbmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFmOWJjNi4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc2luay5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9HU0VUVElOR1NfVklERU9fU0lOS19IX18KLSNkZWZpbmUgX19HU1RfR1NFVFRJTkdTX1ZJREVPX1NJTktfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z2lvL2dpby5oPgotI2luY2x1ZGUgImdzdHN3aXRjaHNpbmsuaCIKLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TSU5LIFwKLSAgKGdzdF9nc2V0dGluZ3NfdmlkZW9fc2lua19nZXRfdHlwZSAoKSkKLSNkZWZpbmUgR1NUX0dTRVRUSU5HU19WSURFT19TSU5LKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9HU0VUVElOR1NfVklERU9fU0lOSywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdTZXR0aW5nc1ZpZGVvU2luaykpCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfVklERU9fU0lOS19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TSU5LLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R1NldHRpbmdzVmlkZW9TaW5rQ2xhc3MpKQotI2RlZmluZSBHU1RfSVNfR1NFVFRJTkdTX1ZJREVPX1NJTksob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TSU5LKSkKLSNkZWZpbmUgR1NUX0lTX0dTRVRUSU5HU19WSURFT19TSU5LX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfR1NFVFRJTkdTX1ZJREVPX1NJTkspKQotCi10eXBlZGVmIHN0cnVjdCBfR3N0R1NldHRpbmdzVmlkZW9TaW5rIHsKLSAgR3N0U3dpdGNoU2luayBwYXJlbnQ7Ci0KLSAgR1NldHRpbmdzICpzZXR0aW5nczsKLQotICBHTWFpbkNvbnRleHQgKmNvbnRleHQ7Ci0gIEdNYWluTG9vcCAqbG9vcDsKLSAgZ3Vsb25nIGNoYW5nZWRfaWQ7Ci0KLSAgZ2NoYXIgKmdzZXR0aW5nc19zdHI7Ci19IEdzdEdTZXR0aW5nc1ZpZGVvU2luazsKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdTZXR0aW5nc1ZpZGVvU2lua0NsYXNzIHsKLSAgR3N0U3dpdGNoU2lua0NsYXNzIHBhcmVudF9jbGFzczsKLX0gR3N0R1NldHRpbmdzVmlkZW9TaW5rQ2xhc3M7Ci0KLUdUeXBlICAgZ3N0X2dzZXR0aW5nc192aWRlb19zaW5rX2dldF90eXBlICAgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfR1NFVFRJTkdTX1ZJREVPX1NJTktfSF9fICovCmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmMgYi9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNzY4NjcuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3N2aWRlb3NyYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQ2ICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEwIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0vKioKLSAqIFNFQ1RJT046ZWxlbWVudC1nc2V0dGluZ3N2aWRlb3NyYwotICoKLSAqIFRoaXMgZWxlbWVudCBvdXRwdXRzIHNvdW5kIHRvIHRoZSB2aWRlb3NyYyB0aGF0IGhhcyBiZWVuIGNvbmZpZ3VyZWQgaW4KLSAqIEdTZXR0aW5ncyBieSB0aGUgdXNlci4KLSAqIAotICogPHJlZnNlY3QyPgotICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgotICogfFsKLSAqIGdzdC1sYXVuY2ggZ3NldHRpbmdzdmlkZW9zcmMgISB2aWRlb2NvbnZlcnQgISB2aWRlb3NjYWxlICEgYXV0b3ZpZGVvc2luawotICogXXwgUGxheSBmcm9tIGNvbmZpZ3VyZWQgdmlkZW9zcmMKLSAqIDwvcmVmc2VjdDI+Ci0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlIDxjb25maWcuaD4KLSNlbmRpZgotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9nbGliLWNvbXBhdC1wcml2YXRlLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3N2aWRlb3NyYy5oIgotI2luY2x1ZGUgImdzdGdzZXR0aW5ncy5oIgotCi1HU1RfQk9JTEVSUExBVEUgKEdzdEdTZXR0aW5nc1ZpZGVvU3JjLCBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyYywgR3N0U3dpdGNoU3JjLAotICAgIEdTVF9UWVBFX1NXSVRDSF9TUkMpOwotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX2NoYW5nZV9jaGlsZCAoR3N0R1NldHRpbmdzVmlkZW9TcmMgKiBzcmMpCi17Ci0gIGdjaGFyICpuZXdfc3RyaW5nOwotICBHRXJyb3IgKmVyciA9IE5VTEw7Ci0gIEdzdEVsZW1lbnQgKm5ld19raWQ7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzcmMpOwotICBuZXdfc3RyaW5nID0KLSAgICAgIGdfc2V0dGluZ3NfZ2V0X3N0cmluZyAoc3JjLT5zZXR0aW5ncywgR1NUX0dTRVRUSU5HU19LRVlfVklERU9TUkMpOwotCi0gIGlmIChuZXdfc3RyaW5nICE9IE5VTEwgJiYgc3JjLT5nc2V0dGluZ3Nfc3RyICE9IE5VTEwgJiYKLSAgICAgIChzdHJsZW4gKG5ld19zdHJpbmcpID09IDAgfHwKLSAgICAgICAgICBzdHJjbXAgKHNyYy0+Z3NldHRpbmdzX3N0ciwgbmV3X3N0cmluZykgPT0gMCkpIHsKLSAgICBnX2ZyZWUgKG5ld19zdHJpbmcpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywKLSAgICAgICAgIkdTZXR0aW5ncyBrZXkgd2FzIHVwZGF0ZWQsIGJ1dCBpdCBkaWRuJ3QgY2hhbmdlLiBJZ25vcmluZyIpOwotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwotICAgIHJldHVybiBUUlVFOwotICB9Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgIkdTZXR0aW5ncyBrZXkgY2hhbmdlZCBmcm9tICclcycgdG8gJyVzJyIsCi0gICAgICBHU1RfU1RSX05VTEwgKHNyYy0+Z3NldHRpbmdzX3N0ciksIEdTVF9TVFJfTlVMTCAobmV3X3N0cmluZykpOwotCi0gIGlmIChuZXdfc3RyaW5nKSB7Ci0gICAgbmV3X2tpZCA9IGdzdF9wYXJzZV9iaW5fZnJvbV9kZXNjcmlwdGlvbiAobmV3X3N0cmluZywgVFJVRSwgJmVycik7Ci0gICAgaWYgKGVycikgewotICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc3JjLCAiZXJyb3IgY3JlYXRpbmcgYmluICclcyc6ICVzIiwgbmV3X3N0cmluZywKLSAgICAgICAgICBlcnItPm1lc3NhZ2UpOwotICAgICAgZ19lcnJvcl9mcmVlIChlcnIpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICBuZXdfa2lkID0gTlVMTDsKLSAgfQotCi0gIGlmIChuZXdfa2lkID09IE5VTEwpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAotICAgICAgICAoIkZhaWxlZCB0byByZW5kZXIgdmlkZW8gc3JjIGZyb20gR1NldHRpbmdzIikpOwotICAgIGdvdG8gZmFpbDsKLSAgfQotCi0gIGlmICghZ3N0X3N3aXRjaF9zcmNfc2V0X2NoaWxkIChHU1RfU1dJVENIX1NSQyAoc3JjKSwgbmV3X2tpZCkpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNyYywgIkZhaWxlZCB0byB1cGRhdGUgY2hpbGQgZWxlbWVudCIpOwotICAgIGdvdG8gZmFpbDsKLSAgfQotCi0gIGdfZnJlZSAoc3JjLT5nc2V0dGluZ3Nfc3RyKTsKLSAgc3JjLT5nc2V0dGluZ3Nfc3RyID0gbmV3X3N0cmluZzsKLQotICByZXR1cm4gVFJVRTsKLQotZmFpbDoKLSAgZ19mcmVlIChuZXdfc3RyaW5nKTsKLSAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgdm9pZAotb25fY2hhbmdlZCAoR1NldHRpbmdzICogc2V0dGluZ3MsIGdjaGFyICoga2V5LCBHc3RHU2V0dGluZ3NWaWRlb1NyYyAqIHNyYykKLXsKLSAgaWYgKCFnX3N0cl9lcXVhbCAoa2V5LCAidmlkZW9zcmMiKSkKLSAgICByZXR1cm47Ci0KLSAgZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfY2hhbmdlX2NoaWxkIChzcmMpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX3N0YXJ0IChHc3RHU2V0dGluZ3NWaWRlb1NyYyAqIHNyYykKLXsKLSAgR0Vycm9yICplcnIgPSBOVUxMOwotICBHVGhyZWFkICp0aHJlYWQ7Ci0KLSAgc3JjLT5sb29wID0gZ19tYWluX2xvb3BfbmV3IChzcmMtPmNvbnRleHQsIEZBTFNFKTsKLQotICB0aHJlYWQgPQotICAgICAgZ190aHJlYWRfY3JlYXRlICgoR1RocmVhZEZ1bmMpIGdfbWFpbl9sb29wX3J1biwgc3JjLT5sb29wLCBGQUxTRSwgJmVycik7Ci0gIGlmICghdGhyZWFkKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgQ09SRSwgU1RBVEVfQ0hBTkdFLCAoTlVMTCksCi0gICAgICAgICgiRmFpbGVkIHRvIGNyZWF0ZSBuZXcgdGhyZWFkOiAlcyIsIGVyci0+bWVzc2FnZSkpOwotICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKLSAgICBnX21haW5fbG9vcF91bnJlZiAoc3JjLT5sb29wKTsKLSAgICBzcmMtPmxvb3AgPSBOVUxMOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQgKHNyYy0+Y29udGV4dCk7Ci0gIHNyYy0+c2V0dGluZ3MgPSBnX3NldHRpbmdzX25ldyAoR1NUX0dTRVRUSU5HU19TQ0hFTUEpOwotICBzcmMtPmNoYW5nZWRfaWQgPQotICAgICAgZ19zaWduYWxfY29ubmVjdF9kYXRhIChHX09CSkVDVCAoc3JjLT5zZXR0aW5ncyksICJjaGFuZ2VkIiwKLSAgICAgIEdfQ0FMTEJBQ0sgKG9uX2NoYW5nZWQpLCBnc3Rfb2JqZWN0X3JlZiAoc3JjKSwKLSAgICAgIChHQ2xvc3VyZU5vdGlmeSkgZ3N0X29iamVjdF91bnJlZiwgMCk7Ci0gIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdCAoc3JjLT5jb250ZXh0KTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19yZXNldCAoR3N0R1NldHRpbmdzVmlkZW9TcmMgKiBzcmMpCi17Ci0gIGdzdF9zd2l0Y2hfc3JjX3NldF9jaGlsZCAoR1NUX1NXSVRDSF9TUkMgKHNyYyksIE5VTEwpOwotCi0gIGlmIChzcmMtPmNoYW5nZWRfaWQpIHsKLSAgICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKHNyYy0+c2V0dGluZ3MsIHNyYy0+Y2hhbmdlZF9pZCk7Ci0gICAgc3JjLT5jaGFuZ2VkX2lkID0gMDsKLSAgfQotCi0gIGlmIChzcmMtPmxvb3ApIHsKLSAgICBnX21haW5fbG9vcF9xdWl0IChzcmMtPmxvb3ApOwotICAgIGdfbWFpbl9sb29wX3VucmVmIChzcmMtPmxvb3ApOwotICAgIHNyYy0+bG9vcCA9IE5VTEw7Ci0gIH0KLQotICBpZiAoc3JjLT5zZXR0aW5ncykgewotICAgIGdfb2JqZWN0X3VucmVmIChzcmMtPnNldHRpbmdzKTsKLSAgICBzcmMtPnNldHRpbmdzID0gTlVMTDsKLSAgfQotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKLSAgZ19mcmVlIChzcmMtPmdzZXR0aW5nc19zdHIpOwotICBzcmMtPmdzZXR0aW5nc19zdHIgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotewotICBHc3RHU2V0dGluZ3NWaWRlb1NyYyAqc3JjID0gR1NUX0dTRVRUSU5HU19WSURFT19TUkMgKG9iamVjdCk7Ci0KLSAgZ19mcmVlIChzcmMtPmdzZXR0aW5nc19zdHIpOwotICBnX21haW5fY29udGV4dF91bnJlZiAoc3JjLT5jb250ZXh0KTsKLQotICBHU1RfQ0FMTF9QQVJFTlQgKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKChHT2JqZWN0ICopIChzcmMpKSk7Ci19Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7Ci0gIEdzdEdTZXR0aW5nc1ZpZGVvU3JjICpzcmMgPSBHU1RfR1NFVFRJTkdTX1ZJREVPX1NSQyAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6Ci0gICAgICBpZiAoIWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX3N0YXJ0IChzcmMpKQotICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwotCi0gICAgICBpZiAoIWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX2NoYW5nZV9jaGlsZCAoc3JjKSkgewotICAgICAgICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19yZXNldCAoc3JjKTsKLSAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldCA9IEdTVF9DQUxMX1BBUkVOVF9XSVRIX0RFRkFVTFQgKEdTVF9FTEVNRU5UX0NMQVNTLCBjaGFuZ2Vfc3RhdGUsCi0gICAgICAoZWxlbWVudCwgdHJhbnNpdGlvbiksIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci0gICAgICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19yZXNldCAoc3JjKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19pbml0IChHc3RHU2V0dGluZ3NWaWRlb1NyYyAqIHNyYywKLSAgICBHc3RHU2V0dGluZ3NWaWRlb1NyY0NsYXNzICogZ19jbGFzcykKLXsKLSAgc3JjLT5jb250ZXh0ID0gZ19tYWluX2NvbnRleHRfbmV3ICgpOwotICBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19yZXNldCAoc3JjKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nc2V0dGluZ3NfdmlkZW9fc3JjX2Jhc2VfaW5pdCAoZ3BvaW50ZXIga2xhc3MpCi17Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWtsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChla2xhc3MsICJHU2V0dGluZ3MgdmlkZW8gc3JjIiwKLSAgICAgICJTcmMvVmlkZW8iLAotICAgICAgIlZpZGVvIHNyYyBlbWJlZGRpbmcgdGhlIEdTZXR0aW5ncyBwcmVmZXJlbmNlcyBmb3IgdmlkZW8gaW5wdXQiLAotICAgICAgIlNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPiIpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfY2xhc3NfaW5pdCAoR3N0R1NldHRpbmdzVmlkZW9TcmNDbGFzcyAqIGtsYXNzKQotewotICBHT2JqZWN0Q2xhc3MgKm9rbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWtsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKLQotICBva2xhc3MtPmZpbmFsaXplID0gZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfZmluYWxpemU7Ci0KLSAgZWtsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfZ3NldHRpbmdzX3ZpZGVvX3NyY19jaGFuZ2Vfc3RhdGU7Ci19CmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmggYi9leHQvZ3NldHRpbmdzL2dzdGdzZXR0aW5nc3ZpZGVvc3JjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiN2E2Y2QuLjAwMDAwMDAKLS0tIGEvZXh0L2dzZXR0aW5ncy9nc3Rnc2V0dGluZ3N2aWRlb3NyYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9HU0VUVElOR1NfVklERU9fU1JDX0hfXwotI2RlZmluZSBfX0dTVF9HU0VUVElOR1NfVklERU9fU1JDX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdpby9naW8uaD4KLSNpbmNsdWRlICJnc3Rzd2l0Y2hzcmMuaCIKLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TUkMgXAotICAoZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfZ2V0X3R5cGUgKCkpCi0jZGVmaW5lIEdTVF9HU0VUVElOR1NfVklERU9fU1JDKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9HU0VUVElOR1NfVklERU9fU1JDLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R1NldHRpbmdzVmlkZW9TcmMpKQotI2RlZmluZSBHU1RfR1NFVFRJTkdTX1ZJREVPX1NSQ19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TUkMsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHU2V0dGluZ3NWaWRlb1NyY0NsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX0dTRVRUSU5HU19WSURFT19TUkMob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TUkMpKQotI2RlZmluZSBHU1RfSVNfR1NFVFRJTkdTX1ZJREVPX1NSQ19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TUkMpKQotCi10eXBlZGVmIHN0cnVjdCBfR3N0R1NldHRpbmdzVmlkZW9TcmMgewotICBHc3RTd2l0Y2hTcmMgcGFyZW50OwotCi0gIEdTZXR0aW5ncyAqc2V0dGluZ3M7Ci0KLSAgR01haW5Db250ZXh0ICpjb250ZXh0OwotICBHTWFpbkxvb3AgKmxvb3A7Ci0gIGd1bG9uZyBjaGFuZ2VkX2lkOwotCi0gIGdjaGFyICpnc2V0dGluZ3Nfc3RyOwotfSBHc3RHU2V0dGluZ3NWaWRlb1NyYzsKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdTZXR0aW5nc1ZpZGVvU3JjQ2xhc3MgewotICBHc3RTd2l0Y2hTcmNDbGFzcyBwYXJlbnRfY2xhc3M7Ci19IEdzdEdTZXR0aW5nc1ZpZGVvU3JjQ2xhc3M7Ci0KLUdUeXBlICAgZ3N0X2dzZXR0aW5nc192aWRlb19zcmNfZ2V0X3R5cGUgICAodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9HU0VUVElOR1NfVklERU9fU1JDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rzd2l0Y2hzaW5rLmMgYi9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2UwNDJjZS4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuYworKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoYykgMjAwNSBSb25hbGQgUy4gQnVsdGplIDxyYnVsdGplQHJvbmFsZC5iaXRmcmVhay5uZXQ+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDYgSsO8cmcgQmlsbGV0ZXIgPGpAYml0cm9uLmNoPgotICogQ29weXJpZ2h0IChjKSAyMDA3IEphbiBTY2htaWR0IDx0aGF5dGFuQG5vcmFpc2luLm5ldD4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgImdzdHN3aXRjaHNpbmsuaCIKLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoc3dpdGNoX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHN3aXRjaF9kZWJ1ZwotCi1zdGF0aWMgdm9pZCBnc3Rfc3dpdGNoX3NpbmtfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCk7Ci1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9zd2l0Y2hfc2lua19jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKLQotZW51bQotewotICBQUk9QXzAKLX07Ci0KLUdTVF9CT0lMRVJQTEFURSAoR3N0U3dpdGNoU2luaywgZ3N0X3N3aXRjaF9zaW5rLCBHc3RCaW4sIEdTVF9UWVBFX0JJTik7Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfc3dpdGNoX3NpbmtfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKHN3aXRjaF9kZWJ1ZywgInN3aXRjaHNpbmsiLCAwLCAic3dpdGNoc2luayBlbGVtZW50Iik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfc3dpdGNoX3NpbmtfY2xhc3NfaW5pdCAoR3N0U3dpdGNoU2lua0NsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotICBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua190ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgICBHU1RfUEFEX1NJTkssCi0gICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwotICBHc3RQYWRUZW1wbGF0ZSAqY2hpbGRfcGFkX3RlbXBsOwotCi0gIG9rbGFzcy0+ZGlzcG9zZSA9IGdzdF9zd2l0Y2hfc2lua19kaXNwb3NlOwotICBla2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF9zd2l0Y2hfc2lua19jaGFuZ2Vfc3RhdGU7Ci0KLSAgLyogUHJvdmlkZSBhIGRlZmF1bHQgcGFkIHRlbXBsYXRlIGlmIHRoZSBjaGlsZCBkaWRuJ3QgKi8KLSAgY2hpbGRfcGFkX3RlbXBsID0gZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoZWtsYXNzLCAic2luayIpOwotICBpZiAoY2hpbGRfcGFkX3RlbXBsID09IE5VTEwpIHsKLSAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChla2xhc3MsCi0gICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNpbmtfdGVtcGxhdGUpKTsKLSAgfQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9zd2l0Y2hfc2lua19yZXNldCAoR3N0U3dpdGNoU2luayAqIHNpbmspCi17Ci0gIC8qIHRoaXMgd2lsbCBpbnN0YWxsIGZha2VzaW5rIGlmIG5vIG90aGVyIGNoaWxkIGhhcyBiZWVuIHNldCwKLSAgICogb3RoZXJ3aXNlIHdlIHJlbHkgb24gdGhlIHN1YmNsYXNzIHRvIGtub3cgd2hlbiB0byB1bnNldCBpdHMKLSAgICogY3VzdG9tIGtpZCAqLwotICBpZiAoc2luay0+a2lkID09IE5VTEwpIHsKLSAgICByZXR1cm4gZ3N0X3N3aXRjaF9zaW5rX3NldF9jaGlsZCAoc2luaywgTlVMTCk7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc2lua19pbml0IChHc3RTd2l0Y2hTaW5rICogc2luaywgR3N0U3dpdGNoU2lua0NsYXNzICogZ19jbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9HRVRfQ0xBU1MgKHNpbmspOwotICBHc3RQYWRUZW1wbGF0ZSAqdGVtcGw7Ci0KLSAgdGVtcGwgPSBnc3RfZWxlbWVudF9jbGFzc19nZXRfcGFkX3RlbXBsYXRlIChla2xhc3MsICJzaW5rIik7Ci0gIHNpbmstPnBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlICgic2luayIsIHRlbXBsKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKHNpbmspLCBzaW5rLT5wYWQpOwotCi0gIGdzdF9zd2l0Y2hfc2lua19yZXNldCAoc2luayk7Ci0KLSAgR1NUX09CSkVDVF9GTEFHX1NFVCAoc2luaywgR1NUX0VMRU1FTlRfSVNfU0lOSyk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfc3dpdGNoX3NpbmtfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0U3dpdGNoU2luayAqc2luayA9IEdTVF9TV0lUQ0hfU0lOSyAob2JqZWN0KTsKLSAgR3N0T2JqZWN0ICpuZXdfa2lkLCAqa2lkOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIG5ld19raWQgPSBHU1RfT0JKRUNUX0NBU1QgKHNpbmstPm5ld19raWQpOwotICBzaW5rLT5uZXdfa2lkID0gTlVMTDsKLQotICBraWQgPSBHU1RfT0JKRUNUX0NBU1QgKHNpbmstPmtpZCk7Ci0gIHNpbmstPmtpZCA9IE5VTEw7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLQotICBnc3Rfb2JqZWN0X3JlcGxhY2UgKCZuZXdfa2lkLCBOVUxMKTsKLSAgZ3N0X29iamVjdF9yZXBsYWNlICgma2lkLCBOVUxMKTsKLQotICBHU1RfQ0FMTF9QQVJFTlQgKEdfT0JKRUNUX0NMQVNTLCBkaXNwb3NlLCAob2JqZWN0KSk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3N3aXRjaF9zaW5rX2NvbW1pdF9uZXdfa2lkIChHc3RTd2l0Y2hTaW5rICogc2luaykKLXsKLSAgR3N0UGFkICp0YXJnZXRwYWQ7Ci0gIEdzdFN0YXRlIGtpZF9zdGF0ZTsKLSAgR3N0RWxlbWVudCAqbmV3X2tpZCwgKm9sZF9raWQ7Ci0gIGdib29sZWFuIGlzX2Zha2VzaW5rID0gRkFMU0U7Ci0gIEdzdEJ1cyAqYnVzOwotCi0gIC8qIG5lZWQgbG9ja2luZyBhcm91bmQgbWVtYmVyIGFjY2Vzc2VzICovCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7Ci0gIC8qIElmIHdlJ3JlIGN1cnJlbnRseSBjaGFuZ2luZyBzdGF0ZSwgc2V0IHRoZSBjaGlsZCB0byB0aGUgbmV4dCBzdGF0ZQotICAgKiB3ZSdyZSB0cmFuc2l0aW9uaW5nIHRvbywgcmF0aGVyIHRoYW4gb3VyIGN1cnJlbnQgc3RhdGUgd2hpY2ggaXMgCi0gICAqIGFib3V0IHRvIGNoYW5nZSAqLwotICBpZiAoR1NUX1NUQVRFX05FWFQgKHNpbmspICE9IEdTVF9TVEFURV9WT0lEX1BFTkRJTkcpCi0gICAga2lkX3N0YXRlID0gR1NUX1NUQVRFX05FWFQgKHNpbmspOwotICBlbHNlCi0gICAga2lkX3N0YXRlID0gR1NUX1NUQVRFIChzaW5rKTsKLQotICBuZXdfa2lkID0gc2luay0+bmV3X2tpZCA/IGdzdF9vYmplY3RfcmVmIChzaW5rLT5uZXdfa2lkKSA6IE5VTEw7Ci0gIHNpbmstPm5ld19raWQgPSBOVUxMOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0KLSAgLyogRmFrZXNpbmsgYnkgZGVmYXVsdCBpZiBOVUxMIGlzIHBhc3NlZCBhcyB0aGUgbmV3IGNoaWxkICovCi0gIGlmIChuZXdfa2lkID09IE5VTEwpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiUmVwbGFjaW5nIGtpZCB3aXRoIGZha2VzaW5rIik7Ci0gICAgbmV3X2tpZCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImZha2VzaW5rIiwgInRlc3RzaW5rIik7Ci0gICAgaWYgKG5ld19raWQgPT0gTlVMTCkgewotICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkZhaWxlZCB0byBjcmVhdGUgZmFrZXNpbmsiKTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0gICAgLyogQWRkIGEgcmVmZXJlbmNlLCBhcyBpdCB3b3VsZCBpZiB0aGUgZWxlbWVudCBjYW1lIGZyb20gc2luay0+bmV3X2tpZCAqLwotICAgIGdzdF9vYmplY3RfcmVmIChuZXdfa2lkKTsKLSAgICBnX29iamVjdF9zZXQgKG5ld19raWQsICJzeW5jIiwgVFJVRSwgTlVMTCk7Ci0gICAgaXNfZmFrZXNpbmsgPSBUUlVFOwotICB9IGVsc2UgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJTZXR0aW5nIG5ldyBraWQiKTsKLSAgfQotCi0gIC8qIHNldCB0ZW1wb3JhcnkgYnVzIG9mIG91ciBvd24gdG8gY2F0Y2ggZXJyb3IgbWVzc2FnZXMgZnJvbSB0aGUgY2hpbGQKLSAgICogKGNvdWxkIHdlIGp1c3Qgc2V0IG91ciBvd24gYnVzIG9uIGl0LCBvciB3b3VsZCB0aGUgc3RhdGUgY2hhbmdlIG1lc3NhZ2VzCi0gICAqIGZyb20gdGhlIG5vdC15ZXQtYWRkZWQgZWxlbWVudCBjb25mdXNlIHRoZSBzdGF0ZSBjaGFuZ2UgYWxnb3JpdGhtPyBMZXQncwotICAgKiBwbGF5IGl0IHNhZmUgZm9yIG5vdykgKi8KLSAgYnVzID0gZ3N0X2J1c19uZXcgKCk7Ci0gIGdzdF9lbGVtZW50X3NldF9idXMgKG5ld19raWQsIGJ1cyk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKGJ1cyk7Ci0KLSAgaWYgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAobmV3X2tpZCwga2lkX3N0YXRlKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKLSAgICBHc3RNZXNzYWdlICptc2c7Ci0KLSAgICAvKiBjaGVjayBpZiBjaGlsZCBwb3N0ZWQgYW4gZXJyb3IgbWVzc2FnZSBhbmQgaWYgc28gcmUtcG9zdCBpdCBvbiBvdXIgYnVzCi0gICAgICogc28gdGhhdCB0aGUgYXBwbGljYXRpb24gZ2V0cyB0byBzZWUgYSBkZWNlbnQgZXJyb3IgYW5kIG5vdCBvdXIgZ2VuZXJpYwotICAgICAqIGZhbGxiYWNrIGVycm9yIG1lc3NhZ2Ugd2hpY2ggaXMgY29tcGxldGVseSBpbmRlY2lwaGVyYWJsZSB0byB0aGUgdXNlciAqLwotICAgIG1zZyA9IGdzdF9idXNfcG9wX2ZpbHRlcmVkIChHU1RfRUxFTUVOVF9CVVMgKG5ld19raWQpLCBHU1RfTUVTU0FHRV9FUlJPUik7Ci0gICAgaWYgKG1zZykgewotICAgICAgR1NUX0lORk9fT0JKRUNUIChzaW5rLCAiRm9yd2FyZGluZyBraWQgZXJyb3I6ICUiIEdTVF9QVFJfRk9STUFULCBtc2cpOwotICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoc2luayksIG1zZyk7Ci0gICAgfQotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5rLCBDT1JFLCBTVEFURV9DSEFOR0UsIChOVUxMKSwKLSAgICAgICAgKCJGYWlsZWQgdG8gc2V0IHN0YXRlIG9uIG5ldyBjaGlsZC4iKSk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobmV3X2tpZCwgTlVMTCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAobmV3X2tpZCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0gIGdzdF9lbGVtZW50X3NldF9idXMgKG5ld19raWQsIE5VTEwpOwotICBnc3RfYmluX2FkZCAoR1NUX0JJTiAoc2luayksIG5ld19raWQpOwotCi0gIC8qIE5vdywgcmVwbGFjZSB0aGUgZXhpc3RpbmcgY2hpbGQgKi8KLSAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKLSAgb2xkX2tpZCA9IHNpbmstPmtpZDsKLSAgc2luay0+a2lkID0gbmV3X2tpZDsKLSAgLyogTWFyayB3aGV0aGVyIGEgY3VzdG9tIGtpZCBvciBmYWtlc2luayBoYXMgYmVlbiBpbnN0YWxsZWQgKi8KLSAgc2luay0+aGF2ZV9raWQgPSAhaXNfZmFrZXNpbms7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKLQotICAvKiBraWxsIG9sZCBlbGVtZW50ICovCi0gIGlmIChvbGRfa2lkKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIlJlbW92aW5nIG9sZCBraWQgJSIgR1NUX1BUUl9GT1JNQVQsIG9sZF9raWQpOwotICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob2xkX2tpZCwgR1NUX1NUQVRFX05VTEwpOwotICAgIGdzdF9iaW5fcmVtb3ZlIChHU1RfQklOIChzaW5rKSwgb2xkX2tpZCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAob2xkX2tpZCk7Ci0gICAgLyogRG9uJ3QgbG9zZSB0aGUgU0lOSyBmbGFnICovCi0gICAgR1NUX09CSkVDVF9GTEFHX1NFVCAoc2luaywgR1NUX0VMRU1FTlRfSVNfU0lOSyk7Ci0gIH0KLQotICAvKiByZS1hdHRhY2ggZ2hvc3RwYWQgKi8KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIkNyZWF0aW5nIG5ldyBnaG9zdHBhZCIpOwotICB0YXJnZXRwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoc2luay0+a2lkLCAic2luayIpOwotICBnc3RfZ2hvc3RfcGFkX3NldF90YXJnZXQgKEdTVF9HSE9TVF9QQUQgKHNpbmstPnBhZCksIHRhcmdldHBhZCk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKHRhcmdldHBhZCk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJkb25lIGNoYW5naW5nIGNoaWxkIG9mIHN3aXRjaHNpbmsiKTsKLQotICAvKiBGSVhNRTogUHVzaCBuZXctc2VnbWVudCBpbmZvIGFuZCBwcmUtcm9sbCBidWZmZXIocykgaW50byB0aGUga2lkICovCi0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLWdib29sZWFuCi1nc3Rfc3dpdGNoX3Npbmtfc2V0X2NoaWxkIChHc3RTd2l0Y2hTaW5rICogc2luaywgR3N0RWxlbWVudCAqIG5ld19raWQpCi17Ci0gIEdzdFN0YXRlIGN1ciwgbmV4dDsKLSAgR3N0RWxlbWVudCAqKnBfa2lkOwotCi0gIC8qIE5vdGhpbmcgdG8gZG8gaWYgY2xlYXJpbmcgdGhlIGNoaWxkIGFuZCB3ZSd2ZSBhbHJlYWR5IGluc3RhbGxlZCBmYWtlc2luayAqLwotICBpZiAobmV3X2tpZCA9PSBOVUxMICYmIHNpbmstPmtpZCAhPSBOVUxMICYmIHNpbmstPmhhdmVfa2lkID09IEZBTFNFKQotICAgIHJldHVybiBUUlVFOwotCi0gIC8qIFN0b3JlIHRoZSBuZXcga2lkIHRvIGJlIGNvbW1pdHRlZCBsYXRlciAqLwotICBHU1RfT0JKRUNUX0xPQ0sgKHNpbmspOwotICBjdXIgPSBHU1RfU1RBVEUgKHNpbmspOwotICBuZXh0ID0gR1NUX1NUQVRFX05FWFQgKHNpbmspOwotICBwX2tpZCA9ICZzaW5rLT5uZXdfa2lkOwotICBnc3Rfb2JqZWN0X3JlcGxhY2UgKChHc3RPYmplY3QgKiopIHBfa2lkLCAoR3N0T2JqZWN0ICopIG5ld19raWQpOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7Ci0gIGlmIChuZXdfa2lkKQotICAgIGdzdF9vYmplY3RfdW5yZWYgKG5ld19raWQpOwotCi0gIC8qIFNvbWV0aW1lLCBpdCB3b3VsZCBiZSBsb3ZlbHkgdG8gYWxsb3cgc2luayBjaGFuZ2VzIGV2ZW4gd2hlbgotICAgKiBhbHJlYWR5IHJ1bm5pbmcsIGJ1dCB0aGlzIGludm9sdmVzIHNlbmRpbmcgYW4gYXBwcm9wcmlhdGUgbmV3LXNlZ21lbnQKLSAgICogYW5kIHBvc3NpYmx5IHByZXJvbGxpbmcgZXRjICovCi0gIC8qIEZJWE1FOiBCbG9jayB0aGUgcGFkIGFuZCByZXBsYWNlIHRoZSBraWQgd2hlbiBpdCBjb21wbGV0ZXMgKi8KLSAgaWYgKGN1ciA+IEdTVF9TVEFURV9SRUFEWSB8fCBuZXh0ID09IEdTVF9TVEFURV9QQVVTRUQpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLAotICAgICAgICAiU3dpdGNoLXNpbmsgaXMgYWxyZWFkeSBydW5uaW5nLiBJZ25vcmluZyBjaGFuZ2Ugb2YgY2hpbGQuIik7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAobmV3X2tpZCk7Ci0gICAgcmV0dXJuIFRSVUU7Ci0gIH0KLQotICByZXR1cm4gZ3N0X3N3aXRjaF9zaW5rX2NvbW1pdF9uZXdfa2lkIChzaW5rKTsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3Rfc3dpdGNoX3NpbmtfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLXsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOwotICBHc3RTd2l0Y2hTaW5rICpzaW5rID0gR1NUX1NXSVRDSF9TSU5LIChlbGVtZW50KTsKLQotICByZXQgPSBHU1RfQ0FMTF9QQVJFTlRfV0lUSF9ERUZBVUxUIChHU1RfRUxFTUVOVF9DTEFTUywgY2hhbmdlX3N0YXRlLAotICAgICAgKGVsZW1lbnQsIHRyYW5zaXRpb24pLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgaWYgKCFnc3Rfc3dpdGNoX3NpbmtfcmVzZXQgKHNpbmspKQotICAgICAgICByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9nc3Rzd2l0Y2hzaW5rLmggYi9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDBiM2Y2OC4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNpbmsuaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChjKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KLSAqIENvcHlyaWdodCAoYykgMjAwNyBKYW4gU2NobWlkdCA8dGhheXRhbkBtYWQuc2NpZW50aXN0LmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIF9fR1NUX1NXSVRDSF9TSU5LX0hfXwotI2RlZmluZSBfX0dTVF9TV0lUQ0hfU0lOS19IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIEdTVF9UWVBFX1NXSVRDSF9TSU5LIFwKLSAgKGdzdF9zd2l0Y2hfc2lua19nZXRfdHlwZSAoKSkKLSNkZWZpbmUgR1NUX1NXSVRDSF9TSU5LKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9TV0lUQ0hfU0lOSywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFN3aXRjaFNpbmspKQotI2RlZmluZSBHU1RfU1dJVENIX1NJTktfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9TV0lUQ0hfU0lOSywgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFN3aXRjaFNpbmtDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19TV0lUQ0hfU0lOSyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfU1dJVENIX1NJTkspKQotI2RlZmluZSBHU1RfSVNfU1dJVENIX1NJTktfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9TV0lUQ0hfU0lOSykpCi0KLXR5cGVkZWYgc3RydWN0IF9Hc3RTd2l0Y2hTaW5rIHsKLSAgR3N0QmluIHBhcmVudDsKLQotICBHc3RFbGVtZW50ICpraWQ7Ci0gIEdzdEVsZW1lbnQgKm5ld19raWQ7Ci0gIEdzdFBhZCAqcGFkOwotCi0gIC8qIElmIGEgY3VzdG9tIGNoaWxkIGhhcyBiZWVuIHNldC4uLiAqLwotICBnYm9vbGVhbiBoYXZlX2tpZDsKLX0gR3N0U3dpdGNoU2luazsKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdFN3aXRjaFNpbmtDbGFzcyB7Ci0gIEdzdEJpbkNsYXNzIHBhcmVudF9jbGFzczsKLX0gR3N0U3dpdGNoU2lua0NsYXNzOwotCi1HVHlwZSAgIGdzdF9zd2l0Y2hfc2lua19nZXRfdHlwZSAgICh2b2lkKTsKLQotZ2Jvb2xlYW4gZ3N0X3N3aXRjaF9zaW5rX3NldF9jaGlsZCAoR3N0U3dpdGNoU2luayAqc3NpbmssIEdzdEVsZW1lbnQgKm5ld19raWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfU1dJVENIX1NJTktfSF9fICovCmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNyYy5jIGIvZXh0L2dzZXR0aW5ncy9nc3Rzd2l0Y2hzcmMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI1ZDA2OC4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNyYy5jCisrKyAvZGV2L251bGwKQEAgLTEsMjYyICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChjKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KLSAqIENvcHlyaWdodCAoYykgMjAwNiBKw7xyZyBCaWxsZXRlciA8akBiaXRyb24uY2g+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSmFuIFNjaG1pZHQgPHRoYXl0YW5Abm9yYWlzaW4ubmV0PgotICogQ29weXJpZ2h0IChjKSAyMDEwIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSAiZ3N0c3dpdGNoc3JjLmgiCi0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKHN3aXRjaF9kZWJ1Zyk7Ci0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBzd2l0Y2hfZGVidWcKLQotc3RhdGljIHZvaWQgZ3N0X3N3aXRjaF9zcmNfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCk7Ci1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9zd2l0Y2hfc3JjX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOwotCi1HU1RfQk9JTEVSUExBVEUgKEdzdFN3aXRjaFNyYywgZ3N0X3N3aXRjaF9zcmMsIEdzdEJpbiwgR1NUX1RZUEVfQklOKTsKLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc3JjX2Jhc2VfaW5pdCAoZ3BvaW50ZXIga2xhc3MpCi17Ci0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChzd2l0Y2hfZGVidWcsICJzd2l0Y2hzcmMiLCAwLCAic3dpdGNoc3JjIGVsZW1lbnQiKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc3JjX2NsYXNzX2luaXQgKEdzdFN3aXRjaFNyY0NsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqb2tsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotICBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjX3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgICAgR1NUX1BBRF9TUkMsCi0gICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwotICBHc3RQYWRUZW1wbGF0ZSAqY2hpbGRfcGFkX3RlbXBsOwotCi0gIG9rbGFzcy0+ZGlzcG9zZSA9IGdzdF9zd2l0Y2hfc3JjX2Rpc3Bvc2U7Ci0gIGVrbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X3N3aXRjaF9zcmNfY2hhbmdlX3N0YXRlOwotCi0gIC8qIFByb3ZpZGUgYSBkZWZhdWx0IHBhZCB0ZW1wbGF0ZSBpZiB0aGUgY2hpbGQgZGlkbid0ICovCi0gIGNoaWxkX3BhZF90ZW1wbCA9IGdzdF9lbGVtZW50X2NsYXNzX2dldF9wYWRfdGVtcGxhdGUgKGVrbGFzcywgInNyYyIpOwotICBpZiAoY2hpbGRfcGFkX3RlbXBsID09IE5VTEwpIHsKLSAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChla2xhc3MsCi0gICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY190ZW1wbGF0ZSkpOwotICB9Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3N3aXRjaF9zcmNfcmVzZXQgKEdzdFN3aXRjaFNyYyAqIHNyYykKLXsKLSAgLyogdGhpcyB3aWxsIGluc3RhbGwgZmFrZXNyYyBpZiBubyBvdGhlciBjaGlsZCBoYXMgYmVlbiBzZXQsCi0gICAqIG90aGVyd2lzZSB3ZSByZWx5IG9uIHRoZSBzdWJjbGFzcyB0byBrbm93IHdoZW4gdG8gdW5zZXQgaXRzCi0gICAqIGN1c3RvbSBraWQgKi8KLSAgaWYgKHNyYy0+a2lkID09IE5VTEwpIHsKLSAgICByZXR1cm4gZ3N0X3N3aXRjaF9zcmNfc2V0X2NoaWxkIChzcmMsIE5VTEwpOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfc3dpdGNoX3NyY19pbml0IChHc3RTd2l0Y2hTcmMgKiBzcmMsIEdzdFN3aXRjaFNyY0NsYXNzICogZ19jbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICpla2xhc3MgPSBHU1RfRUxFTUVOVF9HRVRfQ0xBU1MgKHNyYyk7Ci0gIEdzdFBhZFRlbXBsYXRlICp0ZW1wbDsKLQotICB0ZW1wbCA9IGdzdF9lbGVtZW50X2NsYXNzX2dldF9wYWRfdGVtcGxhdGUgKGVrbGFzcywgInNyYyIpOwotICBzcmMtPnBhZCA9IGdzdF9naG9zdF9wYWRfbmV3X25vX3RhcmdldF9mcm9tX3RlbXBsYXRlICgic3JjIiwgdGVtcGwpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoc3JjKSwgc3JjLT5wYWQpOwotCi0gIGdzdF9zd2l0Y2hfc3JjX3Jlc2V0IChzcmMpOwotCi0gIEdTVF9PQkpFQ1RfRkxBR19TRVQgKHNyYywgR1NUX0VMRU1FTlRfSVNfU09VUkNFKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9zd2l0Y2hfc3JjX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdFN3aXRjaFNyYyAqc3JjID0gR1NUX1NXSVRDSF9TUkMgKG9iamVjdCk7Ci0gIEdzdE9iamVjdCAqbmV3X2tpZCwgKmtpZDsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7Ci0gIG5ld19raWQgPSBHU1RfT0JKRUNUX0NBU1QgKHNyYy0+bmV3X2tpZCk7Ci0gIHNyYy0+bmV3X2tpZCA9IE5VTEw7Ci0KLSAga2lkID0gR1NUX09CSkVDVF9DQVNUIChzcmMtPmtpZCk7Ci0gIHNyYy0+a2lkID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7Ci0KLSAgZ3N0X29iamVjdF9yZXBsYWNlICgmbmV3X2tpZCwgTlVMTCk7Ci0gIGdzdF9vYmplY3RfcmVwbGFjZSAoJmtpZCwgTlVMTCk7Ci0KLSAgR1NUX0NBTExfUEFSRU5UIChHX09CSkVDVF9DTEFTUywgZGlzcG9zZSwgKG9iamVjdCkpOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9zd2l0Y2hfc3JjX2NvbW1pdF9uZXdfa2lkIChHc3RTd2l0Y2hTcmMgKiBzcmMpCi17Ci0gIEdzdFBhZCAqdGFyZ2V0cGFkOwotICBHc3RTdGF0ZSBraWRfc3RhdGU7Ci0gIEdzdEVsZW1lbnQgKm5ld19raWQsICpvbGRfa2lkOwotICBnYm9vbGVhbiBpc19mYWtlc3JjID0gRkFMU0U7Ci0gIEdzdEJ1cyAqYnVzOwotCi0gIC8qIG5lZWQgbG9ja2luZyBhcm91bmQgbWVtYmVyIGFjY2Vzc2VzICovCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKLSAgLyogSWYgd2UncmUgY3VycmVudGx5IGNoYW5naW5nIHN0YXRlLCBzZXQgdGhlIGNoaWxkIHRvIHRoZSBuZXh0IHN0YXRlCi0gICAqIHdlJ3JlIHRyYW5zaXRpb25pbmcgdG9vLCByYXRoZXIgdGhhbiBvdXIgY3VycmVudCBzdGF0ZSB3aGljaCBpcyAKLSAgICogYWJvdXQgdG8gY2hhbmdlICovCi0gIGlmIChHU1RfU1RBVEVfTkVYVCAoc3JjKSAhPSBHU1RfU1RBVEVfVk9JRF9QRU5ESU5HKQotICAgIGtpZF9zdGF0ZSA9IEdTVF9TVEFURV9ORVhUIChzcmMpOwotICBlbHNlCi0gICAga2lkX3N0YXRlID0gR1NUX1NUQVRFIChzcmMpOwotCi0gIG5ld19raWQgPSBzcmMtPm5ld19raWQgPyBnc3Rfb2JqZWN0X3JlZiAoc3JjLT5uZXdfa2lkKSA6IE5VTEw7Ci0gIHNyYy0+bmV3X2tpZCA9IE5VTEw7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwotCi0gIC8qIEZha2VzcmMgYnkgZGVmYXVsdCBpZiBOVUxMIGlzIHBhc3NlZCBhcyB0aGUgbmV3IGNoaWxkICovCi0gIGlmIChuZXdfa2lkID09IE5VTEwpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJSZXBsYWNpbmcga2lkIHdpdGggZmFrZXNyYyIpOwotICAgIG5ld19raWQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJmYWtlc3JjIiwgInRlc3RzcmMiKTsKLSAgICBpZiAobmV3X2tpZCA9PSBOVUxMKSB7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChzcmMsICJGYWlsZWQgdG8gY3JlYXRlIGZha2VzcmMiKTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0gICAgLyogQWRkIGEgcmVmZXJlbmNlLCBhcyBpdCB3b3VsZCBpZiB0aGUgZWxlbWVudCBjYW1lIGZyb20gc3JjLT5uZXdfa2lkICovCi0gICAgZ3N0X29iamVjdF9yZWYgKG5ld19raWQpOwotICAgIGlzX2Zha2VzcmMgPSBUUlVFOwotICB9IGVsc2UgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgIlNldHRpbmcgbmV3IGtpZCIpOwotICB9Ci0KLSAgLyogc2V0IHRlbXBvcmFyeSBidXMgb2Ygb3VyIG93biB0byBjYXRjaCBlcnJvciBtZXNzYWdlcyBmcm9tIHRoZSBjaGlsZAotICAgKiAoY291bGQgd2UganVzdCBzZXQgb3VyIG93biBidXMgb24gaXQsIG9yIHdvdWxkIHRoZSBzdGF0ZSBjaGFuZ2UgbWVzc2FnZXMKLSAgICogZnJvbSB0aGUgbm90LXlldC1hZGRlZCBlbGVtZW50IGNvbmZ1c2UgdGhlIHN0YXRlIGNoYW5nZSBhbGdvcml0aG0/IExldCdzCi0gICAqIHBsYXkgaXQgc2FmZSBmb3Igbm93KSAqLwotICBidXMgPSBnc3RfYnVzX25ldyAoKTsKLSAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobmV3X2tpZCwgYnVzKTsKLSAgZ3N0X29iamVjdF91bnJlZiAoYnVzKTsKLQotICBpZiAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChuZXdfa2lkLCBraWRfc3RhdGUpID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgewotICAgIEdzdE1lc3NhZ2UgKm1zZzsKLQotICAgIC8qIGNoZWNrIGlmIGNoaWxkIHBvc3RlZCBhbiBlcnJvciBtZXNzYWdlIGFuZCBpZiBzbyByZS1wb3N0IGl0IG9uIG91ciBidXMKLSAgICAgKiBzbyB0aGF0IHRoZSBhcHBsaWNhdGlvbiBnZXRzIHRvIHNlZSBhIGRlY2VudCBlcnJvciBhbmQgbm90IG91ciBnZW5lcmljCi0gICAgICogZmFsbGJhY2sgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyBjb21wbGV0ZWx5IGluZGVjaXBoZXJhYmxlIHRvIHRoZSB1c2VyICovCi0gICAgbXNnID0gZ3N0X2J1c19wb3BfZmlsdGVyZWQgKEdTVF9FTEVNRU5UX0JVUyAobmV3X2tpZCksIEdTVF9NRVNTQUdFX0VSUk9SKTsKLSAgICBpZiAobXNnKSB7Ci0gICAgICBHU1RfSU5GT19PQkpFQ1QgKHNyYywgIkZvcndhcmRpbmcga2lkIGVycm9yOiAlIiBHU1RfUFRSX0ZPUk1BVCwgbXNnKTsKLSAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKHNyYyksIG1zZyk7Ci0gICAgfQotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIENPUkUsIFNUQVRFX0NIQU5HRSwgKE5VTEwpLAotICAgICAgICAoIkZhaWxlZCB0byBzZXQgc3RhdGUgb24gbmV3IGNoaWxkLiIpKTsKLSAgICBnc3RfZWxlbWVudF9zZXRfYnVzIChuZXdfa2lkLCBOVUxMKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdfa2lkKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLSAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobmV3X2tpZCwgTlVMTCk7Ci0gIGdzdF9iaW5fYWRkIChHU1RfQklOIChzcmMpLCBuZXdfa2lkKTsKLQotICAvKiBOb3csIHJlcGxhY2UgdGhlIGV4aXN0aW5nIGNoaWxkICovCi0gIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKLSAgb2xkX2tpZCA9IHNyYy0+a2lkOwotICBzcmMtPmtpZCA9IG5ld19raWQ7Ci0gIC8qIE1hcmsgd2hldGhlciBhIGN1c3RvbSBraWQgb3IgZmFrZXNyYyBoYXMgYmVlbiBpbnN0YWxsZWQgKi8KLSAgc3JjLT5oYXZlX2tpZCA9ICFpc19mYWtlc3JjOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKLQotICAvKiBraWxsIG9sZCBlbGVtZW50ICovCi0gIGlmIChvbGRfa2lkKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiUmVtb3Zpbmcgb2xkIGtpZCAlIiBHU1RfUFRSX0ZPUk1BVCwgb2xkX2tpZCk7Ci0gICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvbGRfa2lkLCBHU1RfU1RBVEVfTlVMTCk7Ci0gICAgZ3N0X2Jpbl9yZW1vdmUgKEdTVF9CSU4gKHNyYyksIG9sZF9raWQpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKG9sZF9raWQpOwotICAgIC8qIERvbid0IGxvc2UgdGhlIFNPVVJDRSBmbGFnICovCi0gICAgR1NUX09CSkVDVF9GTEFHX1NFVCAoc3JjLCBHU1RfRUxFTUVOVF9JU19TT1VSQ0UpOwotICB9Ci0KLSAgLyogcmUtYXR0YWNoIGdob3N0cGFkICovCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgIkNyZWF0aW5nIG5ldyBnaG9zdHBhZCIpOwotICB0YXJnZXRwYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoc3JjLT5raWQsICJzcmMiKTsKLSAgZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0IChHU1RfR0hPU1RfUEFEIChzcmMtPnBhZCksIHRhcmdldHBhZCk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKHRhcmdldHBhZCk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgImRvbmUgY2hhbmdpbmcgY2hpbGQgb2Ygc3dpdGNoc3JjIik7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLWdib29sZWFuCi1nc3Rfc3dpdGNoX3NyY19zZXRfY2hpbGQgKEdzdFN3aXRjaFNyYyAqIHNyYywgR3N0RWxlbWVudCAqIG5ld19raWQpCi17Ci0gIEdzdFN0YXRlIGN1ciwgbmV4dDsKLSAgR3N0RWxlbWVudCAqKnBfa2lkOwotCi0gIC8qIE5vdGhpbmcgdG8gZG8gaWYgY2xlYXJpbmcgdGhlIGNoaWxkIGFuZCB3ZSd2ZSBhbHJlYWR5IGluc3RhbGxlZCBmYWtlc3JjICovCi0gIGlmIChuZXdfa2lkID09IE5VTEwgJiYgc3JjLT5raWQgIT0gTlVMTCAmJiBzcmMtPmhhdmVfa2lkID09IEZBTFNFKQotICAgIHJldHVybiBUUlVFOwotCi0gIC8qIFN0b3JlIHRoZSBuZXcga2lkIHRvIGJlIGNvbW1pdHRlZCBsYXRlciAqLwotICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7Ci0gIGN1ciA9IEdTVF9TVEFURSAoc3JjKTsKLSAgbmV4dCA9IEdTVF9TVEFURV9ORVhUIChzcmMpOwotICBwX2tpZCA9ICZzcmMtPm5ld19raWQ7Ci0gIGdzdF9vYmplY3RfcmVwbGFjZSAoKEdzdE9iamVjdCAqKikgcF9raWQsIChHc3RPYmplY3QgKikgbmV3X2tpZCk7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwotICBpZiAobmV3X2tpZCkKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdfa2lkKTsKLQotICAvKiBTb21ldGltZSwgaXQgd291bGQgYmUgbG92ZWx5IHRvIGFsbG93IHNyYyBjaGFuZ2VzIGV2ZW4gd2hlbgotICAgKiBhbHJlYWR5IHJ1bm5pbmcgKi8KLSAgLyogRklYTUU6IEJsb2NrIHRoZSBwYWQgYW5kIHJlcGxhY2UgdGhlIGtpZCB3aGVuIGl0IGNvbXBsZXRlcyAqLwotICBpZiAoY3VyID4gR1NUX1NUQVRFX1JFQURZIHx8IG5leHQgPT0gR1NUX1NUQVRFX1BBVVNFRCkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywKLSAgICAgICAgIlN3aXRjaC1zcmMgaXMgYWxyZWFkeSBydW5uaW5nLiBJZ25vcmluZyBjaGFuZ2Ugb2YgY2hpbGQuIik7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAobmV3X2tpZCk7Ci0gICAgcmV0dXJuIFRSVUU7Ci0gIH0KLQotICByZXR1cm4gZ3N0X3N3aXRjaF9zcmNfY29tbWl0X25ld19raWQgKHNyYyk7Ci19Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X3N3aXRjaF9zcmNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLXsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOwotICBHc3RTd2l0Y2hTcmMgKnNyYyA9IEdTVF9TV0lUQ0hfU1JDIChlbGVtZW50KTsKLQotICByZXQgPSBHU1RfQ0FMTF9QQVJFTlRfV0lUSF9ERUZBVUxUIChHU1RfRUxFTUVOVF9DTEFTUywgY2hhbmdlX3N0YXRlLAotICAgICAgKGVsZW1lbnQsIHRyYW5zaXRpb24pLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgaWYgKCFnc3Rfc3dpdGNoX3NyY19yZXNldCAoc3JjKSkKLSAgICAgICAgcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc3JjLmggYi9leHQvZ3NldHRpbmdzL2dzdHN3aXRjaHNyYy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzY5OGExLi4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3MvZ3N0c3dpdGNoc3JjLmgKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqCi0gKiBDb3B5cmlnaHQgKGMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgotICogQ29weXJpZ2h0IChjKSAyMDA1IFRpbS1QaGlsaXBwIE3DvGxsZXIgPHRpbSBjZW50cmljdWxhciBuZXQ+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMDcgSmFuIFNjaG1pZHQgPHRoYXl0YW5AbWFkLnNjaWVudGlzdC5jb20+Ci0gKiBDb3B5cmlnaHQgKGMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9TV0lUQ0hfU1JDX0hfXwotI2RlZmluZSBfX0dTVF9TV0lUQ0hfU1JDX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfU1dJVENIX1NSQyAgICAgICAgICAgIChnc3Rfc3dpdGNoX3NyY19nZXRfdHlwZSAoKSkKLSNkZWZpbmUgR1NUX1NXSVRDSF9TUkMob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1NXSVRDSF9TUkMsIEdzdFN3aXRjaFNyYykpCi0jZGVmaW5lIEdTVF9TV0lUQ0hfU1JDX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX1NXSVRDSF9TUkMsIEdzdFN3aXRjaFNyY0NsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX1NXSVRDSF9TUkMob2JqKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1NXSVRDSF9TUkMpKQotI2RlZmluZSBHU1RfSVNfU1dJVENIX1NSQ19DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9TV0lUQ0hfU1JDKSkKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdFN3aXRjaFNyYyB7Ci0gIEdzdEJpbiBwYXJlbnQ7Ci0KLSAgR3N0RWxlbWVudCAqa2lkOwotICBHc3RFbGVtZW50ICpuZXdfa2lkOwotICBHc3RQYWQgKnBhZDsKLQotICAvKiBJZiBhIGN1c3RvbSBjaGlsZCBoYXMgYmVlbiBzZXQuLi4gKi8KLSAgZ2Jvb2xlYW4gaGF2ZV9raWQ7Ci19IEdzdFN3aXRjaFNyYzsKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdFN3aXRjaFNyY0NsYXNzIHsKLSAgR3N0QmluQ2xhc3MgcGFyZW50X2NsYXNzOwotfSBHc3RTd2l0Y2hTcmNDbGFzczsKLQotR1R5cGUgICAgIGdzdF9zd2l0Y2hfc3JjX2dldF90eXBlICAgKHZvaWQpOwotZ2Jvb2xlYW4gIGdzdF9zd2l0Y2hfc3JjX3NldF9jaGlsZCAgKEdzdFN3aXRjaFNyYyAqc3NyYywgR3N0RWxlbWVudCAqbmV3X2tpZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9TV0lUQ0hfU1JDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwgYi9leHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQwYzRjZS4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAorKysgL2Rldi9udWxsCkBAIC0xLDk0ICswLDAgQEAKLTxzY2hlbWFsaXN0PgotICA8c2NoZW1hIGlkPSJvcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLTEuMC5kZWZhdWx0LWVsZW1lbnRzIiBwYXRoPSIvZGVza3RvcC9nc3RyZWFtZXIvMS4wL2RlZmF1bHQtZWxlbWVudHMvIiBnZXR0ZXh0LWRvbWFpbj0iZ3N0LXBsdWdpbnMtYmFkLTEuMCI+Ci0gICAgPGtleSBuYW1lPSJzb3VuZHMtYXVkaW9zaW5rIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJhdXRvYXVkaW9zaW5rIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3Npbms8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsKLSAgICAgIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQKLSAgICAgIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InNvdW5kcy1hdWRpb3NpbmstZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3Npbms8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0iY2hhdC1hdWRpb3NpbmsiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+ImF1dG9hdWRpb3NpbmsiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmc8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsKLSAgICAgIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQKLSAgICAgIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9ImNoYXQtYXVkaW9zaW5rLWRlc2NyaXB0aW9uIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJEZWZhdWx0IjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZzwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJtdXNpYy1hdWRpb3NpbmsiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+ImF1dG9hdWRpb3NpbmsiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mCi0gICAgICBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rCi0gICAgICBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkCi0gICAgICBvZiBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJtdXNpYy1hdWRpb3NpbmstZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllczwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJ2aWRlb3NpbmsiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+ImF1dG92aWRlb3NpbmsiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mCi0gICAgICBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssCi0gICAgICB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayBjYW4gYmUKLSAgICAgIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InZpZGVvc2luay1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9ImF1ZGlvc3JjIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJhbHNhc3JjIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kCi0gICAgICBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZgotICAgICAganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0iYXVkaW9zcmMtZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlkZW9zcmMiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+InY0bDJzcmMiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+R1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLgotICAgICAgU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvCi0gICAgICBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InZpZGVvc3JjLWRlc2NyaXB0aW9uIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJEZWZhdWx0IjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYzwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InZpc3VhbGl6YXRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+Imdvb20iPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbjwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0bwotICAgICAgdHJhbnNmb3JtIGF1ZGlvIHN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlCi0gICAgICBnb29tLCBnb29tMmsxIGFuZCBzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYQotICAgICAgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InZpc3VhbGl6YXRpb24tZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb248L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgPC9zY2hlbWE+Ci08L3NjaGVtYWxpc3Q+CmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbiBiL2V4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTEzYjNhLi4wMDAwMDAwCi0tLSBhL2V4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotPHNjaGVtYWxpc3Q+Ci0gIDxzY2hlbWEgaWQ9Im9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAuZGVmYXVsdC1lbGVtZW50cyIgcGF0aD0iL2Rlc2t0b3AvZ3N0cmVhbWVyL0BHU1RfQVBJX1ZFUlNJT05AL2RlZmF1bHQtZWxlbWVudHMvIiBnZXR0ZXh0LWRvbWFpbj0iQEdFVFRFWFRfUEFDS0FHRUAiPgotICAgIDxrZXkgbmFtZT0ic291bmRzLWF1ZGlvc2luayIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iQERFRkFVTFRfQVVESU9TSU5LQCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mCi0gICAgICBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rCi0gICAgICBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkCi0gICAgICBvZiBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJzb3VuZHMtYXVkaW9zaW5rLWRlc2NyaXB0aW9uIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJEZWZhdWx0IjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9ImNoYXQtYXVkaW9zaW5rIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJAREVGQVVMVF9BVURJT1NJTktAIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mCi0gICAgICBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rCi0gICAgICBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkCi0gICAgICBvZiBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJjaGF0LWF1ZGlvc2luay1kZXNjcmlwdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iRGVmYXVsdCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmc8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0ibXVzaWMtYXVkaW9zaW5rIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJAREVGQVVMVF9BVURJT1NJTktAIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllczwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZgotICAgICAgb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luawotICAgICAgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZAotICAgICAgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0ibXVzaWMtYXVkaW9zaW5rLWRlc2NyaXB0aW9uIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJEZWZhdWx0IjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXM8L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlkZW9zaW5rIiB0eXBlPSJzIj4KLSAgICAgIDxkZWZhdWx0PiJAREVGQVVMVF9WSURFT1NJTktAIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luazwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZgotICAgICAgb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLAotICAgICAgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgY2FuIGJlCi0gICAgICBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJ2aWRlb3NpbmstZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luazwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5EZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LjwvZGVzY3JpcHRpb24+Ci0gICAgPC9rZXk+Ci0gICAgPGtleSBuYW1lPSJhdWRpb3NyYyIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iQERFRkFVTFRfQVVESU9TUkNAIjwvZGVmYXVsdD4KLSAgICAgIDxzdW1tYXJ5PmRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YKLSAgICAgIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kCi0gICAgICBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZgotICAgICAganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0iYXVkaW9zcmMtZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlkZW9zcmMiIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkBERUZBVUxUX1ZJREVPU1JDQCI8L2RlZmF1bHQ+Ci0gICAgICA8c3VtbWFyeT5kZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYzwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuCi0gICAgICBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8KLSAgICAgIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlkZW9zcmMtZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjPC9zdW1tYXJ5PgotICAgICAgPGRlc2NyaXB0aW9uPkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC48L2Rlc2NyaXB0aW9uPgotICAgIDwva2V5PgotICAgIDxrZXkgbmFtZT0idmlzdWFsaXphdGlvbiIgdHlwZT0icyI+Ci0gICAgICA8ZGVmYXVsdD4iQERFRkFVTFRfVklTVUFMSVpFUkAiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbjwvc3VtbWFyeT4KLSAgICAgIDxkZXNjcmlwdGlvbj5HU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0bwotICAgICAgdHJhbnNmb3JtIGF1ZGlvIHN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlCi0gICAgICBnb29tLCBnb29tMmsxIGFuZCBzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYQotICAgICAgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgICA8a2V5IG5hbWU9InZpc3VhbGl6YXRpb24tZGVzY3JpcHRpb24iIHR5cGU9InMiPgotICAgICAgPGRlZmF1bHQ+IkRlZmF1bHQiPC9kZWZhdWx0PgotICAgICAgPHN1bW1hcnk+ZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb248L3N1bW1hcnk+Ci0gICAgICA8ZGVzY3JpcHRpb24+RGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuPC9kZXNjcmlwdGlvbj4KLSAgICA8L2tleT4KLSAgPC9zY2hlbWE+Ci08L3NjaGVtYWxpc3Q+CmRpZmYgLS1naXQgYS9leHQvZ3NldHRpbmdzL3BsdWdpbi5jIGIvZXh0L2dzZXR0aW5ncy9wbHVnaW4uYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjI2NDk2Ny4uMDAwMDAwMAotLS0gYS9leHQvZ3NldHRpbmdzL3BsdWdpbi5jCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTAgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotI2luY2x1ZGUgImdzdGdzZXR0aW5nc2F1ZGlvc3JjLmgiCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmgiCi0jaW5jbHVkZSAiZ3N0Z3NldHRpbmdzdmlkZW9zcmMuaCIKLSNpbmNsdWRlICJnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuaCIKLQotc3RhdGljIGdib29sZWFuCi1wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQotewotICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnc2V0dGluZ3NhdWRpb3NpbmsiLCBHU1RfUkFOS19OT05FLAotICAgICAgICAgIEdTVF9UWVBFX0dTRVRUSU5HU19BVURJT19TSU5LKSB8fAotICAgICAgIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJnc2V0dGluZ3NhdWRpb3NyYyIsIEdTVF9SQU5LX05PTkUsCi0gICAgICAgICAgR1NUX1RZUEVfR1NFVFRJTkdTX0FVRElPX1NSQykgfHwKLSAgICAgICFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ3NldHRpbmdzdmlkZW9zaW5rIiwgR1NUX1JBTktfTk9ORSwKLSAgICAgICAgICBHU1RfVFlQRV9HU0VUVElOR1NfVklERU9fU0lOSykgfHwKLSAgICAgICFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiZ3NldHRpbmdzdmlkZW9zcmMiLCBHU1RfUkFOS19OT05FLAotICAgICAgICAgIEdTVF9UWVBFX0dTRVRUSU5HU19WSURFT19TUkMpKQotICAgIHJldHVybiBGQUxTRTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAotICAgIEdTVF9WRVJTSU9OX01JTk9SLAotICAgIGdzZXR0aW5ncywKLSAgICAiR1NldHRpbmdzIHBsdWdpbiIsCi0gICAgcGx1Z2luX2luaXQsIFZFUlNJT04sICJMR1BMIiwgR1NUX1BBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvZXh0L2dzbS9NYWtlZmlsZS5pbiBiL2V4dC9nc20vTWFrZWZpbGUuaW4KaW5kZXggNDJjNzUwYi4uODE3N2NiZiAxMDA2NDQKLS0tIGEvZXh0L2dzbS9NYWtlZmlsZS5pbgorKysgYi9leHQvZ3NtL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2d0ay9NYWtlZmlsZS5pbiBiL2V4dC9ndGsvTWFrZWZpbGUuaW4KaW5kZXggNDNjZWI1Ni4uMzZjMjU1MSAxMDA2NDQKLS0tIGEvZXh0L2d0ay9NYWtlZmlsZS5pbgorKysgYi9leHQvZ3RrL01ha2VmaWxlLmluCkBAIC0xMTksMTYgKzExOSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjg4LDYgKzI4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzI1LDYgKzMyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzMzLDcgKzMzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1Miw4ICszNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzcwLDE2ICszNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDA1LDYgKzQwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzMCw2ICs0MzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzEsNiArNTM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0NCw4ICs1NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjEsNiArNTY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxOCwxNiArNjI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODksNiArNzAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk4LDYgKzcxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzUsNyArNzUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmMgYi9leHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmMKaW5kZXggZTE5Mjk0MC4uZjAwMTliZiAxMDA2NDQKLS0tIGEvZXh0L2d0ay9nc3RndGtiYXNlc2luay5jCisrKyBiL2V4dC9ndGsvZ3N0Z3RrYmFzZXNpbmsuYwpAQCAtMTQxLDkgKzE0MSwxNiBAQAogc3RhdGljIHZvaWQKIGdzdF9ndGtfYmFzZV9zaW5rX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQogewotICBHc3RHdGtCYXNlU2luayAqZ3RrX3NpbmsgPSBHU1RfR1RLX0JBU0VfU0lOSyAob2JqZWN0KTs7CisgIEdzdEd0a0Jhc2VTaW5rICpndGtfc2luayA9IEdTVF9HVEtfQkFTRV9TSU5LIChvYmplY3QpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoZ3RrX3NpbmspOworICBpZiAoZ3RrX3NpbmstPndpbmRvdyAmJiBndGtfc2luay0+d2luZG93X2Rlc3Ryb3lfaWQpCisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChndGtfc2luay0+d2luZG93LCBndGtfc2luay0+d2luZG93X2Rlc3Ryb3lfaWQpOworICBpZiAoZ3RrX3NpbmstPndpZGdldCAmJiBndGtfc2luay0+d2lkZ2V0X2Rlc3Ryb3lfaWQpCisgICAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChndGtfc2luay0+d2lkZ2V0LCBndGtfc2luay0+d2lkZ2V0X2Rlc3Ryb3lfaWQpOwogCiAgIGdfY2xlYXJfb2JqZWN0ICgmZ3RrX3NpbmstPndpZGdldCk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChndGtfc2luayk7CiAKICAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwogfQpAQCAtMTk0LDcgKzIwMSw3IEBACiAgIC8qIFRha2UgdGhlIGZsb2F0aW5nIHJlZiwgb3RoZXIgd2lzZSB0aGUgZGVzdHJ1Y3Rpb24gb2YgdGhlIGNvbnRhaW5lciB3aWxsCiAgICAqIG1ha2UgdGhpcyB3aWRnZXQgZGlzYXBlYXIgcG9zc2libHkgYmVmb3JlIHdlIGFyZSBkb25lLiAqLwogICBnc3Rfb2JqZWN0X3JlZl9zaW5rIChndGtfc2luay0+d2lkZ2V0KTsKLSAgZ19zaWduYWxfY29ubmVjdCAoZ3RrX3NpbmstPndpZGdldCwgImRlc3Ryb3kiLAorICBndGtfc2luay0+d2lkZ2V0X2Rlc3Ryb3lfaWQgPSBnX3NpZ25hbF9jb25uZWN0IChndGtfc2luay0+d2lkZ2V0LCAiZGVzdHJveSIsCiAgICAgICBHX0NBTExCQUNLICh3aWRnZXRfZGVzdHJveV9jYiksIGd0a19zaW5rKTsKIAogICAvKiBiYWNrIHBvaW50ZXIgKi8KQEAgLTMxNiw3ICszMjMsNyBAQAogICAgIGd0a193aW5kb3dfc2V0X2RlZmF1bHRfc2l6ZSAoR1RLX1dJTkRPVyAoZ3N0X3NpbmstPndpbmRvdyksIDY0MCwgNDgwKTsKICAgICBndGtfd2luZG93X3NldF90aXRsZSAoR1RLX1dJTkRPVyAoZ3N0X3NpbmstPndpbmRvdyksIGtsYXNzLT53aW5kb3dfdGl0bGUpOwogICAgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSIChnc3Rfc2luay0+d2luZG93KSwgdG9wbGV2ZWwpOwotICAgIGdfc2lnbmFsX2Nvbm5lY3QgKGdzdF9zaW5rLT53aW5kb3csICJkZXN0cm95IiwKKyAgICBnc3Rfc2luay0+d2luZG93X2Rlc3Ryb3lfaWQgPSBnX3NpZ25hbF9jb25uZWN0IChnc3Rfc2luay0+d2luZG93LCAiZGVzdHJveSIsCiAgICAgICAgIEdfQ0FMTEJBQ0sgKHdpbmRvd19kZXN0cm95X2NiKSwgZ3N0X3NpbmspOwogICB9CiAKZGlmZiAtLWdpdCBhL2V4dC9ndGsvZ3N0Z3RrYmFzZXNpbmsuaCBiL2V4dC9ndGsvZ3N0Z3RrYmFzZXNpbmsuaAppbmRleCA3MjYwY2Q1Li5lZjhjMjg0IDEwMDY0NAotLS0gYS9leHQvZ3RrL2dzdGd0a2Jhc2VzaW5rLmgKKysrIGIvZXh0L2d0ay9nc3RndGtiYXNlc2luay5oCkBAIC02OSw2ICs2OSw4IEBACiAgIEdCaW5kaW5nICAgICAgICAgICAgICpiaW5kX2lnbm9yZV9hbHBoYTsKIAogICBHdGtXaWRnZXQgICAgICAgICAgICAqd2luZG93OworICBndWxvbmcgICAgICAgICAgICAgICB3aWRnZXRfZGVzdHJveV9pZDsKKyAgZ3Vsb25nICAgICAgICAgICAgICAgd2luZG93X2Rlc3Ryb3lfaWQ7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2V4dC9ndGsvZ3RrZ3N0Z2x3aWRnZXQuYyBiL2V4dC9ndGsvZ3RrZ3N0Z2x3aWRnZXQuYwppbmRleCA3YjNmMzdmLi5jOWFkMGI2IDEwMDY0NAotLS0gYS9leHQvZ3RrL2d0a2dzdGdsd2lkZ2V0LmMKKysrIGIvZXh0L2d0ay9ndGtnc3RnbHdpZGdldC5jCkBAIC01Miw4ICs1Miw3IEBACiAKIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHdGtHc3RHTFdpZGdldCwgZ3RrX2dzdF9nbF93aWRnZXQsIEdUS19UWVBFX0dMX0FSRUEsCiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfREVGQVVMVCwgImd0a2dzdGdsd2lkZ2V0IiwgMCwKLSAgICAgICAgIkd0ayBHc3QgR0wgV2lkZ2V0Iik7Ci0gICAgKTsKKyAgICAgICAgIkd0ayBHc3QgR0wgV2lkZ2V0Iik7KTsKIAogI2RlZmluZSBHVEtfR1NUX0dMX1dJREdFVF9HRVRfUFJJVkFURShvYmopIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvYmopLCBcCiAgICAgR1RLX1RZUEVfR1NUX0dMX1dJREdFVCwgR3RrR3N0R0xXaWRnZXRQcml2YXRlKSkKQEAgLTExOSwxMSArMTE4LDE4IEBACiB7CiAgIEd0a0dzdEdMV2lkZ2V0UHJpdmF0ZSAqcHJpdiA9IGdzdF93aWRnZXQtPnByaXY7CiAgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gcHJpdi0+Y29udGV4dC0+Z2xfdnRhYmxlOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKIAotICBwcml2LT5zaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAocHJpdi0+Y29udGV4dCk7CisgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChwcml2LT5vdGhlcl9jb250ZXh0LCAiaW5pdGlhbGl6aW5nIHJlZGlzcGxheSIpOworICBpZiAoIShwcml2LT5zaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChwcml2LT5jb250ZXh0LCAmZXJyb3IpKSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBpbml0aWFsaXplIHNoYWRlcjogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgcmV0dXJuOworICB9CiAKLSAgZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92Zl9hbmRfY2hlY2sgKHByaXYtPnNoYWRlciwKLSAgICAgICZwcml2LT5hdHRyX3Bvc2l0aW9uLCAmcHJpdi0+YXR0cl90ZXh0dXJlKTsKKyAgcHJpdi0+YXR0cl9wb3NpdGlvbiA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHByaXYtPnNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgcHJpdi0+YXR0cl90ZXh0dXJlID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAocHJpdi0+c2hhZGVyLCAiYV90ZXhjb29yZCIpOwogCiAgIGlmIChnbC0+R2VuVmVydGV4QXJyYXlzKSB7CiAgICAgZ2wtPkdlblZlcnRleEFycmF5cyAoMSwgJnByaXYtPnZhbyk7CkBAIC0yMDcsNiArMjEzLDcgQEAKIHsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CiAKKyAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKGNvbnRleHQsICJubyBidWZmZXIuICByZW5kZXJpbmcgYmxhY2siKTsKICAgZ2wtPkNsZWFyQ29sb3IgKDAuMCwgMC4wLCAwLjAsIDAuMCk7CiAgIGdsLT5DbGVhciAoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CiB9CkBAIC0yNDQsMTcgKzI1MSwyMCBAQAogICAgICAgZ290byBkb25lOwogICAgIH0KIAorICAgIHByaXYtPmN1cnJlbnRfdGV4ID0gKihndWludCAqKSBnbF9mcmFtZS5kYXRhWzBdOworICAgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChwcml2LT5vdGhlcl9jb250ZXh0LCAicmVkcmF3aW5nIHRleHR1cmUgJXUiLAorICAgICAgICBwcml2LT5jdXJyZW50X3RleCk7CisKICAgICBnc3RfZ2xfb3ZlcmxheV9jb21wb3NpdG9yX3VwbG9hZF9vdmVybGF5cyAocHJpdi0+b3ZlcmxheV9jb21wb3NpdG9yLAogICAgICAgICBidWZmZXIpOwogCiAgICAgc3luY19tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfZ2xfc3luY19tZXRhIChidWZmZXIpOwogICAgIGlmIChzeW5jX21ldGEpIHsKKyAgICAgIC8qIFhYWDogdGhlIHNldF9zeW5jKCkgc2VlbXMgdG8gYmUgbmVlZGVkIGZvciByZXNpemluZyAqLwogICAgICAgZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludCAoc3luY19tZXRhLCBwcml2LT5jb250ZXh0KTsKICAgICAgIGdzdF9nbF9zeW5jX21ldGFfd2FpdCAoc3luY19tZXRhLCBwcml2LT5vdGhlcl9jb250ZXh0KTsKICAgICB9CiAKLSAgICBwcml2LT5jdXJyZW50X3RleCA9ICooZ3VpbnQgKikgZ2xfZnJhbWUuZGF0YVswXTsKLQogICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJmdsX2ZyYW1lKTsKIAogICAgIGlmIChiYXNlX3dpZGdldC0+YnVmZmVyKQpAQCAtMjcxLDYgKzI4MSw5IEBACiAgIF9yZWRyYXdfdGV4dHVyZSAoR1RLX0dTVF9HTF9XSURHRVQgKHdpZGdldCksIHByaXYtPmN1cnJlbnRfdGV4KTsKICAgZ3N0X2dsX292ZXJsYXlfY29tcG9zaXRvcl9kcmF3X292ZXJsYXlzIChwcml2LT5vdmVybGF5X2NvbXBvc2l0b3IpOwogCisgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChwcml2LT5vdGhlcl9jb250ZXh0LCAidGV4dHVyZSAldSByZWRyYXduIiwKKyAgICAgIHByaXYtPmN1cnJlbnRfdGV4KTsKKwogZG9uZToKICAgaWYgKHByaXYtPm90aGVyX2NvbnRleHQpCiAgICAgZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGUgKHByaXYtPm90aGVyX2NvbnRleHQsIEZBTFNFKTsKQEAgLTQ5Myw3ICs1MDYsNyBAQAogICAgIEdUS19HU1RfQkFTRV9XSURHRVRfTE9DSyAoZ3N0X3dpZGdldCk7CiAgIH0KIAotICBpZiAoIUdTVF9HTF9JU19DT05URVhUIChwcml2LT5vdGhlcl9jb250ZXh0KSkgeworICBpZiAoIUdTVF9JU19HTF9DT05URVhUIChwcml2LT5vdGhlcl9jb250ZXh0KSkgewogICAgIEdUS19HU1RfQkFTRV9XSURHRVRfVU5MT0NLIChnc3Rfd2lkZ2V0KTsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KZGlmZiAtLWdpdCBhL2V4dC9obHMvTWFrZWZpbGUuYW0gYi9leHQvaGxzL01ha2VmaWxlLmFtCmluZGV4IGY2Njg4MGYuLjE4OWY5ZTYgMTAwNjQ0Ci0tLSBhL2V4dC9obHMvTWFrZWZpbGUuYW0KKysrIGIvZXh0L2hscy9NYWtlZmlsZS5hbQpAQCAtMSwyNSArMSwyNSBAQAogCi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RmcmFnbWVudGVkLmxhCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RobHMubGEKIAotbGliZ3N0ZnJhZ21lbnRlZF9sYV9TT1VSQ0VTID0JCQlcCitsaWJnc3RobHNfbGFfU09VUkNFUyA9CQkJXAogCW0zdTguYwkJCQkJXAogCWdzdGhsc2RlbXV4LmMJCQkJXAotCWdzdGZyYWdtZW50ZWRwbHVnaW4uYyAJCQlcCisJZ3N0aGxzcGx1Z2luLmMgCQkJXAogCWdzdGhsc3NpbmsuYyAJCQkJXAogCWdzdG0zdThwbGF5bGlzdC5jCiAKLWxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEdJT19DRkxBR1MpICQoTElCR0NSWVBUX0NGTEFHUykgJChORVRUTEVfQ0ZMQUdTKQotbGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJBREQgPSBcCitsaWJnc3RobHNfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKExJQkdDUllQVF9DRkxBR1MpICQoTkVUVExFX0NGTEFHUykgJChPUEVOU1NMX0NGTEFHUykKK2xpYmdzdGhsc19sYV9MSUJBREQgPSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC91cmlkb3dubG9hZGVyL2xpYmdzdHVyaWRvd25sb2FkZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAogICAgICAgICAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0cGJ1dGlscy0kKEdTVF9BUElfVkVSU0lPTikgLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChHSU9fTElCUykgJChMSUJNKSAkKExJQkdDUllQVF9MSUJTKSAkKE5FVFRMRV9MSUJTKSAkKE9QRU5TU0xfTElCUykKLWxpYmdzdGZyYWdtZW50ZWRfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKSAtbm8tdW5kZWZpbmVkCi1saWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExJQk0pICQoTElCR0NSWVBUX0xJQlMpICQoTkVUVExFX0xJQlMpICQoT1BFTlNTTF9MSUJTKQorbGliZ3N0aGxzX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykgLW5vLXVuZGVmaW5lZAorbGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKICMgaGVhZGVycyB3ZSBuZWVkIGJ1dCBkb24ndCB3YW50IGluc3RhbGxlZAogbm9pbnN0X0hFQURFUlMgPSAJCQlcCi0JZ3N0ZnJhZ21lbnRlZC5oCQkJXAorCWdzdGhscy5oCQkJXAogCWdzdGhsc2RlbXV4LmgJCQlcCiAJZ3N0aGxzc2luay5oCQkJXAogCWdzdG0zdThwbGF5bGlzdC5oCQlcCmRpZmYgLS1naXQgYS9leHQvaGxzL01ha2VmaWxlLmluIGIvZXh0L2hscy9NYWtlZmlsZS5pbgppbmRleCBhMzI4ZGI5Li43YzcxOWQ3IDEwMDY0NAotLS0gYS9leHQvaGxzL01ha2VmaWxlLmluCisrKyBiL2V4dC9obHMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY0LDI2ICsxNjMsMjQgQEAKIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChwbHVnaW5kaXIpIgogTFRMSUJSQVJJRVMgPSAkKHBsdWdpbl9MVExJQlJBUklFUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1saWJnc3RmcmFnbWVudGVkX2xhX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKK2xpYmdzdGhsc19sYV9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3VyaWRvd25sb2FkZXIvbGliZ3N0dXJpZG93bmxvYWRlci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2xpYmdzdGZyYWdtZW50ZWRfbGFfT0JKRUNUUyA9IGxpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5sbyBcCi0JbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5sbyBcCi0JbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLmxvIFwKLQlsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc3NpbmsubG8gXAotCWxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvCi1saWJnc3RmcmFnbWVudGVkX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGZyYWdtZW50ZWRfbGFfT0JKRUNUUykKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2FtX2xpYmdzdGhsc19sYV9PQkpFQ1RTID0gbGliZ3N0aGxzX2xhLW0zdTgubG8gXAorCWxpYmdzdGhsc19sYS1nc3RobHNkZW11eC5sbyBsaWJnc3RobHNfbGEtZ3N0aGxzcGx1Z2luLmxvIFwKKwlsaWJnc3RobHNfbGEtZ3N0aGxzc2luay5sbyBsaWJnc3RobHNfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvCitsaWJnc3RobHNfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0aGxzX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RmcmFnbWVudGVkX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAotCSQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSBcCi0JLS1tb2RlPWxpbmsgJChDQ0xEKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitsaWJnc3RobHNfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ0NMRCkgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQobGliZ3N0aGxzX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKIGFtX192X1BfMCA9IGZhbHNlCkBAIC0yMTgsOCArMjE1LDggQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RmcmFnbWVudGVkX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfU09VUkNFUykKK1NPVVJDRVMgPSAkKGxpYmdzdGhsc19sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3RobHNfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTI4Miw2ICsyNzksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOSw2ICszMTgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNyw3ICszMjgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDYsOCArMzQ2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NCwxNiArMzY1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OSw2ICs0MDEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjQsNiArNDI4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI1LDYgKzUzMSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzgsOCArNTQ1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU1LDYgKzU2MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTIsMTYgKzYxOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Myw2ICs2ODIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgzLDYgKzY5Myw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Miw2ICs3MDMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI5LDcgKzc0Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzY5LDI3ICs3ODEsMjcgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0ZnJhZ21lbnRlZC5sYQotbGliZ3N0ZnJhZ21lbnRlZF9sYV9TT1VSQ0VTID0gXAorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0aGxzLmxhCitsaWJnc3RobHNfbGFfU09VUkNFUyA9IFwKIAltM3U4LmMJCQkJCVwKIAlnc3RobHNkZW11eC5jCQkJCVwKLQlnc3RmcmFnbWVudGVkcGx1Z2luLmMgCQkJXAorCWdzdGhsc3BsdWdpbi5jIAkJCVwKIAlnc3RobHNzaW5rLmMgCQkJCVwKIAlnc3RtM3U4cGxheWxpc3QuYwogCi1saWJnc3RmcmFnbWVudGVkX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChHSU9fQ0ZMQUdTKSAkKExJQkdDUllQVF9DRkxBR1MpICQoTkVUVExFX0NGTEFHUykKLWxpYmdzdGZyYWdtZW50ZWRfbGFfTElCQUREID0gXAorbGliZ3N0aGxzX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChMSUJHQ1JZUFRfQ0ZMQUdTKSAkKE5FVFRMRV9DRkxBR1MpICQoT1BFTlNTTF9DRkxBR1MpCitsaWJnc3RobHNfbGFfTElCQUREID0gXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAgICAgICAgJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHBidXRpbHMtJChHU1RfQVBJX1ZFUlNJT04pIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoR0lPX0xJQlMpICQoTElCTSkgJChMSUJHQ1JZUFRfTElCUykgJChORVRUTEVfTElCUykgJChPUEVOU1NMX0xJQlMpCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExJQk0pICQoTElCR0NSWVBUX0xJQlMpICQoTkVUVExFX0xJQlMpICQoT1BFTlNTTF9MSUJTKQogCi1saWJnc3RmcmFnbWVudGVkX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykgLW5vLXVuZGVmaW5lZAotbGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorbGliZ3N0aGxzX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykgLW5vLXVuZGVmaW5lZAorbGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKICMgaGVhZGVycyB3ZSBuZWVkIGJ1dCBkb24ndCB3YW50IGluc3RhbGxlZAogbm9pbnN0X0hFQURFUlMgPSBcCi0JZ3N0ZnJhZ21lbnRlZC5oCQkJXAorCWdzdGhscy5oCQkJXAogCWdzdGhsc2RlbXV4LmgJCQlcCiAJZ3N0aGxzc2luay5oCQkJXAogCWdzdG0zdThwbGF5bGlzdC5oCQlcCkBAIC04NjQsOCArODc2LDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RmcmFnbWVudGVkLmxhOiAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfT0JKRUNUUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RmcmFnbWVudGVkX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NDTEQpJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RmcmFnbWVudGVkX2xhX09CSkVDVFMpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJBREQpICQoTElCUykKK2xpYmdzdGhscy5sYTogJChsaWJnc3RobHNfbGFfT0JKRUNUUykgJChsaWJnc3RobHNfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdGhsc19sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0aGxzX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RobHNfbGFfT0JKRUNUUykgJChsaWJnc3RobHNfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04NzMsMTEgKzg4NSwxMSBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0ZnJhZ21lbnRlZHBsdWdpbi5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzZGVtdXguUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc3NpbmsuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNkZW11eC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNwbHVnaW4uUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0aGxzc2luay5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RobHNfbGEtbTN1OC5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtOTAzLDQwICs5MTUsNDAgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGliZ3N0ZnJhZ21lbnRlZF9sYS1tM3U4LmxvOiBtM3U4LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1tM3U4LlRwbyAtYyAtbyBsaWJnc3RmcmFnbWVudGVkX2xhLW0zdTgubG8gYHRlc3QgLWYgJ20zdTguYycgfHwgZWNobyAnJChzcmNkaXIpLydgbTN1OC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLW0zdTguVHBvICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLW0zdTguUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbTN1OC5jJyBvYmplY3Q9J2xpYmdzdGZyYWdtZW50ZWRfbGEtbTN1OC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0aGxzX2xhLW0zdTgubG86IG0zdTguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGhsc19sYS1tM3U4LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RobHNfbGEtbTN1OC5UcG8gLWMgLW8gbGliZ3N0aGxzX2xhLW0zdTgubG8gYHRlc3QgLWYgJ20zdTguYycgfHwgZWNobyAnJChzcmNkaXIpLydgbTN1OC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RobHNfbGEtbTN1OC5UcG8gJChERVBESVIpL2xpYmdzdGhsc19sYS1tM3U4LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J20zdTguYycgb2JqZWN0PSdsaWJnc3RobHNfbGEtbTN1OC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RmcmFnbWVudGVkX2xhLW0zdTgubG8gYHRlc3QgLWYgJ20zdTguYycgfHwgZWNobyAnJChzcmNkaXIpLydgbTN1OC5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGhsc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RobHNfbGEtbTN1OC5sbyBgdGVzdCAtZiAnbTN1OC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BtM3U4LmMKIAotbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5sbzogZ3N0aGxzZGVtdXguYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5UcG8gLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5sbyBgdGVzdCAtZiAnZ3N0aGxzZGVtdXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0aGxzZGVtdXguYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5UcG8gJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzZGVtdXguUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0aGxzZGVtdXguYycgb2JqZWN0PSdsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc2RlbXV4LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RobHNfbGEtZ3N0aGxzZGVtdXgubG86IGdzdGhsc2RlbXV4LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0aGxzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RobHNfbGEtZ3N0aGxzZGVtdXgubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNkZW11eC5UcG8gLWMgLW8gbGliZ3N0aGxzX2xhLWdzdGhsc2RlbXV4LmxvIGB0ZXN0IC1mICdnc3RobHNkZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNkZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0aGxzZGVtdXguVHBvICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0aGxzZGVtdXguUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0aGxzZGVtdXguYycgb2JqZWN0PSdsaWJnc3RobHNfbGEtZ3N0aGxzZGVtdXgubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNkZW11eC5sbyBgdGVzdCAtZiAnZ3N0aGxzZGVtdXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0aGxzZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0aGxzX2xhLWdzdGhsc2RlbXV4LmxvIGB0ZXN0IC1mICdnc3RobHNkZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNkZW11eC5jCiAKLWxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0ZnJhZ21lbnRlZHBsdWdpbi5sbzogZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGZyYWdtZW50ZWRwbHVnaW4ubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0ZnJhZ21lbnRlZHBsdWdpbi5UcG8gLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLmxvIGB0ZXN0IC1mICdnc3RmcmFnbWVudGVkcGx1Z2luLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGZyYWdtZW50ZWRwbHVnaW4uYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLlRwbyAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RmcmFnbWVudGVkcGx1Z2luLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGZyYWdtZW50ZWRwbHVnaW4uYycgb2JqZWN0PSdsaWJnc3RmcmFnbWVudGVkX2xhLWdzdGZyYWdtZW50ZWRwbHVnaW4ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdGhsc19sYS1nc3RobHNwbHVnaW4ubG86IGdzdGhsc3BsdWdpbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGhsc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0aGxzX2xhLWdzdGhsc3BsdWdpbi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc3BsdWdpbi5UcG8gLWMgLW8gbGliZ3N0aGxzX2xhLWdzdGhsc3BsdWdpbi5sbyBgdGVzdCAtZiAnZ3N0aGxzcGx1Z2luLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc3BsdWdpbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0aGxzcGx1Z2luLlRwbyAkKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc3BsdWdpbi5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RobHNwbHVnaW4uYycgb2JqZWN0PSdsaWJnc3RobHNfbGEtZ3N0aGxzcGx1Z2luLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0ZnJhZ21lbnRlZHBsdWdpbi5sbyBgdGVzdCAtZiAnZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RmcmFnbWVudGVkcGx1Z2luLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0aGxzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGhsc19sYS1nc3RobHNwbHVnaW4ubG8gYHRlc3QgLWYgJ2dzdGhsc3BsdWdpbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNwbHVnaW4uYwogCi1saWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc3NpbmsubG86IGdzdGhsc3NpbmsuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNzaW5rLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdGhsc3NpbmsuVHBvIC1jIC1vIGxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5sbyBgdGVzdCAtZiAnZ3N0aGxzc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNzaW5rLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5UcG8gJChERVBESVIpL2xpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RobHNzaW5rLmMnIG9iamVjdD0nbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RobHNzaW5rLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RobHNfbGEtZ3N0aGxzc2luay5sbzogZ3N0aGxzc2luay5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0aGxzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGhsc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0aGxzX2xhLWdzdGhsc3NpbmsubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNzaW5rLlRwbyAtYyAtbyBsaWJnc3RobHNfbGEtZ3N0aGxzc2luay5sbyBgdGVzdCAtZiAnZ3N0aGxzc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNzaW5rLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RobHNzaW5rLlRwbyAkKERFUERJUikvbGliZ3N0aGxzX2xhLWdzdGhsc3NpbmsuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0aGxzc2luay5jJyBvYmplY3Q9J2xpYmdzdGhsc19sYS1nc3RobHNzaW5rLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZnJhZ21lbnRlZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RmcmFnbWVudGVkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0aGxzc2luay5sbyBgdGVzdCAtZiAnZ3N0aGxzc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RobHNzaW5rLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0aGxzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGhsc19sYS1nc3RobHNzaW5rLmxvIGB0ZXN0IC1mICdnc3RobHNzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGhsc3NpbmsuYwogCi1saWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5sbzogZ3N0bTN1OHBsYXlsaXN0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGZyYWdtZW50ZWRfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5UcG8gLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RtM3U4cGxheWxpc3QubG8gYHRlc3QgLWYgJ2dzdG0zdThwbGF5bGlzdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RtM3U4cGxheWxpc3QuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RtM3U4cGxheWxpc3QuVHBvICQoREVQRElSKS9saWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RtM3U4cGxheWxpc3QuYycgb2JqZWN0PSdsaWJnc3RmcmFnbWVudGVkX2xhLWdzdG0zdThwbGF5bGlzdC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0aGxzX2xhLWdzdG0zdThwbGF5bGlzdC5sbzogZ3N0bTN1OHBsYXlsaXN0LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RobHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0aGxzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RobHNfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0bTN1OHBsYXlsaXN0LlRwbyAtYyAtbyBsaWJnc3RobHNfbGEtZ3N0bTN1OHBsYXlsaXN0LmxvIGB0ZXN0IC1mICdnc3RtM3U4cGxheWxpc3QuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bTN1OHBsYXlsaXN0LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QuVHBvICQoREVQRElSKS9saWJnc3RobHNfbGEtZ3N0bTN1OHBsYXlsaXN0LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG0zdThwbGF5bGlzdC5jJyBvYmplY3Q9J2xpYmdzdGhsc19sYS1nc3RtM3U4cGxheWxpc3QubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RmcmFnbWVudGVkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGZyYWdtZW50ZWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0ZnJhZ21lbnRlZF9sYS1nc3RtM3U4cGxheWxpc3QubG8gYHRlc3QgLWYgJ2dzdG0zdThwbGF5bGlzdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RtM3U4cGxheWxpc3QuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGhsc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RobHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0aGxzX2xhLWdzdG0zdThwbGF5bGlzdC5sbyBgdGVzdCAtZiAnZ3N0bTN1OHBsYXlsaXN0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG0zdThwbGF5bGlzdC5jCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KZGlmZiAtLWdpdCBhL2V4dC9obHMvZ3N0ZnJhZ21lbnRlZC5oIGIvZXh0L2hscy9nc3RmcmFnbWVudGVkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxYzdhMmIuLjAwMDAwMDAKLS0tIGEvZXh0L2hscy9nc3RmcmFnbWVudGVkLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi0jaWZuZGVmIF9fR1NUX0ZSQUdNRU5URURfSF9fCi0jZGVmaW5lIF9fR1NUX0ZSQUdNRU5URURfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTiAoZnJhZ21lbnRlZF9kZWJ1Zyk7Ci0KLSNkZWZpbmUgTE9HX0NBUFMob2JqLCBjYXBzKSBHU1RfREVCVUdfT0JKRUNUIChvYmosICIlczogJSIgR1NUX1BUUl9GT1JNQVQsICNjYXBzLCBjYXBzKQotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfRlJBR01FTlRFRF9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9obHMvZ3N0ZnJhZ21lbnRlZHBsdWdpbi5jIGIvZXh0L2hscy9nc3RmcmFnbWVudGVkcGx1Z2luLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5YTc3NDEuLjAwMDAwMDAKLS0tIGEvZXh0L2hscy9nc3RmcmFnbWVudGVkcGx1Z2luLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi0jaWZkZWYgSEFWRV9DT05GSUdfSAotIyAgaW5jbHVkZSA8Y29uZmlnLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotI2luY2x1ZGUgImdzdGZyYWdtZW50ZWQuaCIKLSNpbmNsdWRlICJnc3RobHNkZW11eC5oIgotI2luY2x1ZGUgImdzdGhsc3NpbmsuaCIKLQotR1NUX0RFQlVHX0NBVEVHT1JZIChmcmFnbWVudGVkX2RlYnVnKTsKLQotc3RhdGljIGdib29sZWFuCi1mcmFnbWVudGVkX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKLXsKLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGZyYWdtZW50ZWRfZGVidWcsICJmcmFnbWVudGVkIiwgMCwgImZyYWdtZW50ZWQiKTsKLQotICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJobHNkZW11eCIsIEdTVF9SQU5LX1BSSU1BUlksCi0gICAgICAgICAgR1NUX1RZUEVfSExTX0RFTVVYKSB8fCBGQUxTRSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKCFnc3RfaGxzX3NpbmtfcGx1Z2luX2luaXQgKHBsdWdpbikpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1HU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCi0gICAgR1NUX1ZFUlNJT05fTUlOT1IsCi0gICAgZnJhZ21lbnRlZCwKLSAgICAiRnJhZ21lbnRlZCBzdHJlYW1pbmcgcGx1Z2lucyIsCi0gICAgZnJhZ21lbnRlZF9pbml0LCBWRVJTSU9OLCAiTEdQTCIsIFBBQ0tBR0VfTkFNRSwgImh0dHA6Ly93d3cuZ3N0cmVhbWVyLm9yZy8iKQpkaWZmIC0tZ2l0IGEvZXh0L2hscy9nc3RobHMuaCBiL2V4dC9obHMvZ3N0aGxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzgwNmY0ZgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC9obHMvZ3N0aGxzLmgKQEAgLTAsMCArMSwxMiBAQAorI2lmbmRlZiBfX0dTVF9ITFNfSF9fCisjZGVmaW5lIF9fR1NUX0hMU19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworR19CRUdJTl9ERUNMUworCitHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChobHNfZGVidWcpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfSExTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2hscy9nc3RobHNkZW11eC5jIGIvZXh0L2hscy9nc3RobHNkZW11eC5jCmluZGV4IDFjMDVmYTguLmNmNTFkOTkgMTAwNjQ0Ci0tLSBhL2V4dC9obHMvZ3N0aGxzZGVtdXguYworKysgYi9leHQvaGxzL2dzdGhsc2RlbXV4LmMKQEAgLTU3LDIyICs1Nyw4IEBACiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfaGxzX2RlbXV4X2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9obHNfZGVtdXhfZGVidWcKIAotZW51bQotewotICBQUk9QXzAsCi0KLSAgUFJPUF9GUkFHTUVOVFNfQ0FDSEUsCi0gIFBST1BfTEFTVAotfTsKLQotI2RlZmluZSBERUZBVUxUX0ZSQUdNRU5UU19DQUNIRSAxCi0KIC8qIEdPYmplY3QgKi8KLXN0YXRpYyB2b2lkIGdzdF9obHNfZGVtdXhfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotc3RhdGljIHZvaWQgZ3N0X2hsc19kZW11eF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgdm9pZCBnc3RfaGxzX2RlbXV4X2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmopOworc3RhdGljIHZvaWQgZ3N0X2hsc19kZW11eF9maW5hbGl6ZSAoR09iamVjdCAqIG9iaik7CiAKIC8qIEdzdEVsZW1lbnQgKi8KIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgpAQCAtODEsOCArNjcsNiBAQAogLyogR3N0SExTRGVtdXggKi8KIHN0YXRpYyBnYm9vbGVhbiBnc3RfaGxzX2RlbXV4X3VwZGF0ZV9wbGF5bGlzdCAoR3N0SExTRGVtdXggKiBkZW11eCwKICAgICBnYm9vbGVhbiB1cGRhdGUsIEdFcnJvciAqKiBlcnIpOwotc3RhdGljIGdib29sZWFuIGdzdF9obHNfZGVtdXhfc2V0X2xvY2F0aW9uIChHc3RITFNEZW11eCAqIGRlbXV4LAotICAgIGNvbnN0IGdjaGFyICogdXJpLCBjb25zdCBnY2hhciAqIGJhc2VfdXJpKTsKIHN0YXRpYyBnY2hhciAqZ3N0X2hsc19zcmNfYnVmX3RvX3V0ZjhfcGxheWxpc3QgKEdzdEJ1ZmZlciAqIGJ1Zik7CiAKIHN0YXRpYyBnYm9vbGVhbiBnc3RfaGxzX2RlbXV4X2NoYW5nZV9wbGF5bGlzdCAoR3N0SExTRGVtdXggKiBkZW11eCwKQEAgLTEyNSwxNCArMTA5LDE0IEBACiBHX0RFRklORV9UWVBFIChHc3RITFNEZW11eCwgZ3N0X2hsc19kZW11eCwgR1NUX1RZUEVfQURBUFRJVkVfREVNVVgpOwogCiBzdGF0aWMgdm9pZAotZ3N0X2hsc19kZW11eF9kaXNwb3NlIChHT2JqZWN0ICogb2JqKQorZ3N0X2hsc19kZW11eF9maW5hbGl6ZSAoR09iamVjdCAqIG9iaikKIHsKICAgR3N0SExTRGVtdXggKmRlbXV4ID0gR1NUX0hMU19ERU1VWCAob2JqKTsKIAogICBnc3RfaGxzX2RlbXV4X3Jlc2V0IChHU1RfQURBUFRJVkVfREVNVVhfQ0FTVCAoZGVtdXgpKTsKICAgZ3N0X20zdThfY2xpZW50X2ZyZWUgKGRlbXV4LT5jbGllbnQpOwogCi0gIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kaXNwb3NlIChvYmopOworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iaik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDYsMTggKzEzMCw3IEBACiAgIGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwogICBhZGFwdGl2ZWRlbXV4X2NsYXNzID0gKEdzdEFkYXB0aXZlRGVtdXhDbGFzcyAqKSBrbGFzczsKIAotICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfaGxzX2RlbXV4X3NldF9wcm9wZXJ0eTsKLSAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2hsc19kZW11eF9nZXRfcHJvcGVydHk7Ci0gIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSBnc3RfaGxzX2RlbXV4X2Rpc3Bvc2U7Ci0KLSNpZm5kZWYgR1NUX1JFTU9WRV9ERVBSRUNBVEVECi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRlJBR01FTlRTX0NBQ0hFLAotICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJmcmFnbWVudHMtY2FjaGUiLCAiRnJhZ21lbnRzIGNhY2hlIiwKLSAgICAgICAgICAiTnVtYmVyIG9mIGZyYWdtZW50cyBuZWVkZWQgdG8gYmUgY2FjaGVkIHRvIHN0YXJ0IHBsYXlpbmcgIgotICAgICAgICAgICIoREVQUkVDQVRFRDogSGFzIG5vIGVmZmVjdCBzaW5jZSAxLjMuMSkiLAotICAgICAgICAgIDEsIEdfTUFYVUlOVCwgREVGQVVMVF9GUkFHTUVOVFNfQ0FDSEUsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwgR19QQVJBTV9ERVBSRUNBVEVEKSk7Ci0jZW5kaWYKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfaGxzX2RlbXV4X2ZpbmFsaXplOwogCiAgIGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfaGxzX2RlbXV4X2NoYW5nZV9zdGF0ZSk7CiAKQEAgLTIwNCwzMyArMTc3LDYgQEAKICAgZGVtdXgtPmRvX3R5cGVmaW5kID0gVFJVRTsKIH0KIAotc3RhdGljIHZvaWQKLWdzdF9obHNfZGVtdXhfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9GUkFHTUVOVFNfQ0FDSEU6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfaGxzX2RlbXV4X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsCi0gICAgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfRlJBR01FTlRTX0NBQ0hFOgotICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIDEpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0gICAgICBicmVhazsKLSAgfQotfQotCiBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KIGdzdF9obHNfZGVtdXhfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKIHsKQEAgLTI2MSwxMyArMjA3LDEwIEBACiBnc3RfaGxzX2RlbXV4X2NyZWF0ZV9wYWQgKEdzdEhMU0RlbXV4ICogaGxzZGVtdXgpCiB7CiAgIGdjaGFyICpuYW1lOwotICBHc3RQYWRUZW1wbGF0ZSAqdG1wbDsKICAgR3N0UGFkICpwYWQ7CiAKICAgbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNyY18ldSIsIGhsc2RlbXV4LT5zcmNwYWRfY291bnRlcisrKTsKLSAgdG1wbCA9IGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY3RlbXBsYXRlKTsKLSAgcGFkID0gZ3N0X2dob3N0X3BhZF9uZXdfbm9fdGFyZ2V0X2Zyb21fdGVtcGxhdGUgKG5hbWUsIHRtcGwpOwotICBnc3Rfb2JqZWN0X3VucmVmICh0bXBsKTsKKyAgcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZzcmN0ZW1wbGF0ZSwgbmFtZSk7CiAgIGdfZnJlZSAobmFtZSk7CiAKICAgcmV0dXJuIHBhZDsKQEAgLTMwMSw2ICsyNDQsOCBAQAogICBnaW50NjQgY3VycmVudF9zZXF1ZW5jZTsKICAgR3N0TTNVOE1lZGlhRmlsZSAqZmlsZTsKICAgZ3VpbnQ2NCBiaXRyYXRlOworICBnYm9vbGVhbiBzbmFwX2JlZm9yZSwgc25hcF9hZnRlciwgc25hcF9uZWFyZXN0LCBrZXl1bml0OworICBnYm9vbGVhbiByZXZlcnNlOwogCiAgIGdzdF9ldmVudF9wYXJzZV9zZWVrIChzZWVrLCAmcmF0ZSwgJmZvcm1hdCwgJmZsYWdzLCAmc3RhcnRfdHlwZSwgJnN0YXJ0LAogICAgICAgJnN0b3BfdHlwZSwgJnN0b3ApOwpAQCAtMzU3LDE0ICszMDIsMzcgQEAKICAgZmlsZSA9IEdTVF9NM1U4X01FRElBX0ZJTEUgKGhsc2RlbXV4LT5jbGllbnQtPmN1cnJlbnQtPmZpbGVzLT5kYXRhKTsKICAgY3VycmVudF9zZXF1ZW5jZSA9IGZpbGUtPnNlcXVlbmNlOwogICBjdXJyZW50X3BvcyA9IDA7Ci0gIHRhcmdldF9wb3MgPSByYXRlID4gMCA/IHN0YXJ0IDogc3RvcDsKKyAgcmV2ZXJzZSA9IHJhdGUgPCAwOworICB0YXJnZXRfcG9zID0gcmV2ZXJzZSA/IHN0b3AgOiBzdGFydDsKKworICAvKiBTbmFwIHRvIHNlZ21lbnQgYm91bmRhcnkuIEltcHJvdmVzIHNlZWsgcGVyZm9ybWFuY2Ugb24gc2xvdyBtYWNoaW5lcy4gKi8KKyAga2V5dW5pdCA9ICEgIShmbGFncyAmIEdTVF9TRUVLX0ZMQUdfS0VZX1VOSVQpOworICBzbmFwX25lYXJlc3QgPQorICAgICAgKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1QpID09IEdTVF9TRUVLX0ZMQUdfU05BUF9ORUFSRVNUOworICBzbmFwX2JlZm9yZSA9ICEgIShmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUpOworICBzbmFwX2FmdGVyID0gISAhKGZsYWdzICYgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSKTsKKwogICAvKiBGSVhNRTogSGVyZSB3ZSBuZWVkIHByb3BlciBkaXNjb250IGhhbmRsaW5nICovCiAgIGZvciAod2FsayA9IGhsc2RlbXV4LT5jbGllbnQtPmN1cnJlbnQtPmZpbGVzOyB3YWxrOyB3YWxrID0gd2Fsay0+bmV4dCkgewogICAgIGZpbGUgPSB3YWxrLT5kYXRhOwogCiAgICAgY3VycmVudF9zZXF1ZW5jZSA9IGZpbGUtPnNlcXVlbmNlOwogICAgIGN1cnJlbnRfZmlsZSA9IHdhbGs7Ci0gICAgaWYgKGN1cnJlbnRfcG9zIDw9IHRhcmdldF9wb3MgJiYgdGFyZ2V0X3BvcyA8IGN1cnJlbnRfcG9zICsgZmlsZS0+ZHVyYXRpb24pIHsKKyAgICBpZiAoKCFyZXZlcnNlICYmIHNuYXBfYWZ0ZXIpIHx8IHNuYXBfbmVhcmVzdCkgeworICAgICAgaWYgKGN1cnJlbnRfcG9zID49IHRhcmdldF9wb3MpCisgICAgICAgIGJyZWFrOworICAgICAgaWYgKHNuYXBfbmVhcmVzdCAmJiB0YXJnZXRfcG9zIC0gY3VycmVudF9wb3MgPCBmaWxlLT5kdXJhdGlvbiAvIDIpCisgICAgICAgIGJyZWFrOworICAgIH0gZWxzZSBpZiAocmV2ZXJzZSAmJiBzbmFwX2FmdGVyKSB7CisgICAgICAvKiBjaGVjayBpZiB0aGUgbmV4dCBmcmFnbWVudCBpcyBvdXIgdGFyZ2V0LCBpbiB0aGlzIGNhc2Ugd2Ugd2FudCB0bworICAgICAgICogc3RhcnQgZnJvbSB0aGUgcHJldmlvdXMgZnJhZ21lbnQgKi8KKyAgICAgIEdzdENsb2NrVGltZSBuZXh0X3BvcyA9IGN1cnJlbnRfcG9zICsgZmlsZS0+ZHVyYXRpb247CisKKyAgICAgIGlmIChuZXh0X3BvcyA8PSB0YXJnZXRfcG9zICYmIHRhcmdldF9wb3MgPCBuZXh0X3BvcyArIGZpbGUtPmR1cmF0aW9uKSB7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgIH0gZWxzZSBpZiAoY3VycmVudF9wb3MgPD0gdGFyZ2V0X3BvcworICAgICAgICAmJiB0YXJnZXRfcG9zIDwgY3VycmVudF9wb3MgKyBmaWxlLT5kdXJhdGlvbikgewogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGN1cnJlbnRfcG9zICs9IGZpbGUtPmR1cmF0aW9uOwpAQCAtMzgzLDYgKzM1MSwxOSBAQAogICBobHNkZW11eC0+Y2xpZW50LT5zZXF1ZW5jZV9wb3NpdGlvbiA9IGN1cnJlbnRfcG9zOwogICBHU1RfTTNVOF9DTElFTlRfVU5MT0NLIChobHNkZW11eC0+Y2xpZW50KTsKIAorICAvKiBQbGF5IGZyb20gdGhlIGVuZCBvZiB0aGUgY3VycmVudCBzZWxlY3RlZCBzZWdtZW50ICovCisgIGlmIChyZXZlcnNlICYmIChzbmFwX2JlZm9yZSB8fCBzbmFwX2FmdGVyIHx8IHNuYXBfbmVhcmVzdCkpCisgICAgY3VycmVudF9wb3MgKz0gZmlsZS0+ZHVyYXRpb247CisKKyAgaWYgKGtleXVuaXQgfHwgc25hcF9iZWZvcmUgfHwgc25hcF9hZnRlciB8fCBzbmFwX25lYXJlc3QpIHsKKyAgICBpZiAoIXJldmVyc2UpCisgICAgICBnc3Rfc2VnbWVudF9kb19zZWVrICgmZGVtdXgtPnNlZ21lbnQsIHJhdGUsIGZvcm1hdCwgZmxhZ3MsIHN0YXJ0X3R5cGUsCisgICAgICAgICAgY3VycmVudF9wb3MsIHN0b3BfdHlwZSwgc3RvcCwgTlVMTCk7CisgICAgZWxzZQorICAgICAgZ3N0X3NlZ21lbnRfZG9fc2VlayAoJmRlbXV4LT5zZWdtZW50LCByYXRlLCBmb3JtYXQsIGZsYWdzLCBzdGFydF90eXBlLAorICAgICAgICAgIHN0YXJ0LCBzdG9wX3R5cGUsIGN1cnJlbnRfcG9zLCBOVUxMKTsKKyAgfQorCiAgIHJldHVybiBUUlVFOwogfQogCkBAIC00MTYsOCArMzk3LDE0IEBACiAgIEdzdEhMU0RlbXV4ICpobHNkZW11eCA9IEdTVF9ITFNfREVNVVhfQ0FTVCAoZGVtdXgpOwogICBnY2hhciAqcGxheWxpc3QgPSBOVUxMOwogCi0gIGdzdF9obHNfZGVtdXhfc2V0X2xvY2F0aW9uIChobHNkZW11eCwgZGVtdXgtPm1hbmlmZXN0X3VyaSwKLSAgICAgIGRlbXV4LT5tYW5pZmVzdF9iYXNlX3VyaSk7CisgIGlmIChobHNkZW11eC0+Y2xpZW50KQorICAgIGdzdF9tM3U4X2NsaWVudF9mcmVlIChobHNkZW11eC0+Y2xpZW50KTsKKworICBobHNkZW11eC0+Y2xpZW50ID0KKyAgICAgIGdzdF9tM3U4X2NsaWVudF9uZXcgKGRlbXV4LT5tYW5pZmVzdF91cmksIGRlbXV4LT5tYW5pZmVzdF9iYXNlX3VyaSk7CisKKyAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwgIkNoYW5nZWQgbG9jYXRpb246ICVzIChiYXNlIHVyaTogJXMpIiwKKyAgICAgIGRlbXV4LT5tYW5pZmVzdF91cmksIEdTVF9TVFJfTlVMTCAoZGVtdXgtPm1hbmlmZXN0X2Jhc2VfdXJpKSk7CiAKICAgcGxheWxpc3QgPSBnc3RfaGxzX3NyY19idWZfdG9fdXRmOF9wbGF5bGlzdCAoYnVmKTsKICAgaWYgKHBsYXlsaXN0ID09IE5VTEwpIHsKQEAgLTQ0NCw2ICs0MzEsOSBAQAogICAgIH0gZWxzZSB7CiAgICAgICBHTGlzdCAqdG1wID0gZ3N0X20zdThfY2xpZW50X2dldF9wbGF5bGlzdF9mb3JfYml0cmF0ZSAoaGxzZGVtdXgtPmNsaWVudCwKICAgICAgICAgICBkZW11eC0+Y29ubmVjdGlvbl9zcGVlZCk7CisgICAgICBHU1RfTTNVOF9DTElFTlRfTE9DSyAoaGxzZGVtdXgtPmNsaWVudCk7CisgICAgICBobHNkZW11eC0+Y2xpZW50LT5tYWluLT5jdXJyZW50X3ZhcmlhbnQgPSB0bXA7CisgICAgICBHU1RfTTNVOF9DTElFTlRfVU5MT0NLIChobHNkZW11eC0+Y2xpZW50KTsKIAogICAgICAgY2hpbGQgPSBHU1RfTTNVOCAodG1wLT5kYXRhKTsKICAgICB9CkBAIC01MjUsOSArNTE1LDEyIEBACiAgIHJldHVybiBUUlVFOwogCiBrZXlfZmFpbGVkOgotICAvKiBUT0RPIFJhaXNlIHRoaXMgZXJyb3IgdG8gdGhlIHVzZXIgKi8KLSAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkZhaWxlZCB0byBkZWNyeXB0IGRhdGEiKTsKLSAgcmV0dXJuIEZBTFNFOworICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRlbXV4LCBTVFJFQU0sIERFTVVYLAorICAgICAgICAoIkNvdWxkbid0IHJldHJpZXZlIGtleSBmb3IgZGVjcnlwdGlvbiIpLCAoTlVMTCkpOworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJGYWlsZWQgdG8gZGVjcnlwdCBkYXRhIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCkBAIC03MTUsMjMgKzcwOCwyNSBAQAogICAgIHJldHVybiBHU1RfRkxPV19FT1M7CiAgIH0KIAorICBpZiAoc3RyZWFtLT5kaXNjb250KQorICAgIGRpc2NvbnQgPSBUUlVFOworCiAgIC8qIHNldCB1cCBvdXIgc291cmNlIGZvciBkb3dubG9hZCAqLwotICBpZiAoaGxzZGVtdXgtPnJlc2V0X3B0cyB8fCBkaXNjb250KSB7CisgIGlmIChobHNkZW11eC0+cmVzZXRfcHRzIHx8IGRpc2NvbnQgfHwgc3RyZWFtLT5kZW11eC0+c2VnbWVudC5yYXRlIDwgMC4wKSB7CiAgICAgc3RyZWFtLT5mcmFnbWVudC50aW1lc3RhbXAgPSB0aW1lc3RhbXA7CiAgIH0gZWxzZSB7CiAgICAgc3RyZWFtLT5mcmFnbWVudC50aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICB9CiAKLSAgaWYgKGhsc2RlbXV4LT5jdXJyZW50X2tleSkKLSAgICBnX2ZyZWUgKGhsc2RlbXV4LT5jdXJyZW50X2tleSk7CisgIGdfZnJlZSAoaGxzZGVtdXgtPmN1cnJlbnRfa2V5KTsKICAgaGxzZGVtdXgtPmN1cnJlbnRfa2V5ID0ga2V5OwotICBpZiAoaGxzZGVtdXgtPmN1cnJlbnRfaXYpCi0gICAgZ19mcmVlIChobHNkZW11eC0+Y3VycmVudF9pdik7CisgIGdfZnJlZSAoaGxzZGVtdXgtPmN1cnJlbnRfaXYpOwogICBobHNkZW11eC0+Y3VycmVudF9pdiA9IGl2OwogICBnX2ZyZWUgKHN0cmVhbS0+ZnJhZ21lbnQudXJpKTsKICAgc3RyZWFtLT5mcmFnbWVudC51cmkgPSBuZXh0X2ZyYWdtZW50X3VyaTsKICAgc3RyZWFtLT5mcmFnbWVudC5yYW5nZV9zdGFydCA9IHJhbmdlX3N0YXJ0OwogICBzdHJlYW0tPmZyYWdtZW50LnJhbmdlX2VuZCA9IHJhbmdlX2VuZDsKKyAgc3RyZWFtLT5mcmFnbWVudC5kdXJhdGlvbiA9IGR1cmF0aW9uOwogICBpZiAoZGlzY29udCkKICAgICBzdHJlYW0tPmRpc2NvbnQgPSBkaXNjb250OwogCkBAIC04MDIsMTggKzc5Nyw2IEBACiAgIGdzdF9obHNfZGVtdXhfZGVjcnlwdF9lbmQgKGRlbXV4KTsKIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfaGxzX2RlbXV4X3NldF9sb2NhdGlvbiAoR3N0SExTRGVtdXggKiBkZW11eCwgY29uc3QgZ2NoYXIgKiB1cmksCi0gICAgY29uc3QgZ2NoYXIgKiBiYXNlX3VyaSkKLXsKLSAgaWYgKGRlbXV4LT5jbGllbnQpCi0gICAgZ3N0X20zdThfY2xpZW50X2ZyZWUgKGRlbXV4LT5jbGllbnQpOwotICBkZW11eC0+Y2xpZW50ID0gZ3N0X20zdThfY2xpZW50X25ldyAodXJpLCBiYXNlX3VyaSk7Ci0gIEdTVF9JTkZPX09CSkVDVCAoZGVtdXgsICJDaGFuZ2VkIGxvY2F0aW9uOiAlcyAoYmFzZSB1cmk6ICVzKSIsIHVyaSwKLSAgICAgIEdTVF9TVFJfTlVMTCAoYmFzZV91cmkpKTsKLSAgcmV0dXJuIFRSVUU7Ci19Ci0KIHN0YXRpYyBnY2hhciAqCiBnc3RfaGxzX3NyY19idWZfdG9fdXRmOF9wbGF5bGlzdCAoR3N0QnVmZmVyICogYnVmKQogewpAQCAtODU4LDYzICs4NDEsNjQgQEAKICAgICAgIFRSVUUsIFRSVUUsIFRSVUUsIGVycik7CiAgIGdfZnJlZSAobWFpbl91cmkpOwogICBpZiAoZG93bmxvYWQgPT0gTlVMTCkgewotICAgIGlmICghYWRhcHRpdmVfZGVtdXgtPmNhbmNlbGxlZCAmJiB1cGRhdGUgJiYgIW1haW5fY2hlY2tlZAotICAgICAgICAmJiBnc3RfbTN1OF9jbGllbnRfaGFzX3ZhcmlhbnRfcGxheWxpc3QgKGRlbXV4LT5jbGllbnQpCi0gICAgICAgICYmIGdzdF9tM3U4X2NsaWVudF9oYXNfbWFpbiAoZGVtdXgtPmNsaWVudCkpIHsKLSAgICAgIEdFcnJvciAqZXJyMiA9IE5VTEw7Ci0gICAgICBtYWluX3VyaSA9IGdzdF9tM3U4X2NsaWVudF9nZXRfdXJpIChkZW11eC0+Y2xpZW50KTsKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAoZGVtdXgsCi0gICAgICAgICAgIlVwZGF0aW5nIHBsYXlsaXN0ICVzIGZhaWxlZCwgYXR0ZW1wdCB0byByZWZyZXNoIHZhcmlhbnQgcGxheWxpc3QgJXMiLAotICAgICAgICAgIHVyaSwgbWFpbl91cmkpOwotICAgICAgZG93bmxvYWQgPQotICAgICAgICAgIGdzdF91cmlfZG93bmxvYWRlcl9mZXRjaF91cmkgKGFkYXB0aXZlX2RlbXV4LT5kb3dubG9hZGVyLAotICAgICAgICAgIG1haW5fdXJpLCBOVUxMLCBUUlVFLCBUUlVFLCBUUlVFLCAmZXJyMik7Ci0gICAgICBnX2ZyZWUgKG1haW5fdXJpKTsKLSAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIyKTsKLSAgICAgIGlmIChkb3dubG9hZCAhPSBOVUxMKSB7Ci0gICAgICAgIGdjaGFyICpiYXNlX3VyaTsKKyAgICBnY2hhciAqYmFzZV91cmk7CiAKLSAgICAgICAgYnVmID0gZ3N0X2ZyYWdtZW50X2dldF9idWZmZXIgKGRvd25sb2FkKTsKLSAgICAgICAgcGxheWxpc3QgPSBnc3RfaGxzX3NyY19idWZfdG9fdXRmOF9wbGF5bGlzdCAoYnVmKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLQotICAgICAgICBpZiAocGxheWxpc3QgPT0gTlVMTCkgewotICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsCi0gICAgICAgICAgICAgICJGYWlsZWQgdG8gdmFsaWRhdGUgdmFyaWFudCBwbGF5bGlzdCBlbmNvZGluZyIpOwotICAgICAgICAgIGdfZnJlZSAodXJpKTsKLSAgICAgICAgICBnX29iamVjdF91bnJlZiAoZG93bmxvYWQpOwotICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIGdfZnJlZSAodXJpKTsKLSAgICAgICAgaWYgKGRvd25sb2FkLT5yZWRpcmVjdF9wZXJtYW5lbnQgJiYgZG93bmxvYWQtPnJlZGlyZWN0X3VyaSkgewotICAgICAgICAgIHVyaSA9IGRvd25sb2FkLT5yZWRpcmVjdF91cmk7Ci0gICAgICAgICAgYmFzZV91cmkgPSBOVUxMOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIHVyaSA9IGRvd25sb2FkLT51cmk7Ci0gICAgICAgICAgYmFzZV91cmkgPSBkb3dubG9hZC0+cmVkaXJlY3RfdXJpOwotICAgICAgICB9Ci0KLSAgICAgICAgaWYgKCFnc3RfbTN1OF9jbGllbnRfdXBkYXRlX3ZhcmlhbnRfcGxheWxpc3QgKGRlbXV4LT5jbGllbnQsIHBsYXlsaXN0LAotICAgICAgICAgICAgICAgIHVyaSwgYmFzZV91cmkpKSB7Ci0gICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkZhaWxlZCB0byB1cGRhdGUgdGhlIHZhcmlhbnQgcGxheWxpc3QiKTsKLSAgICAgICAgICBnX29iamVjdF91bnJlZiAoZG93bmxvYWQpOwotICAgICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgICAgfQotCi0gICAgICAgIGdfb2JqZWN0X3VucmVmIChkb3dubG9hZCk7Ci0KLSAgICAgICAgZ19jbGVhcl9lcnJvciAoZXJyKTsKLSAgICAgICAgbWFpbl9jaGVja2VkID0gVFJVRTsKLSAgICAgICAgZ290byByZXRyeTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdfZnJlZSAodXJpKTsKLSAgICAgICAgcmV0dXJuIEZBTFNFOwotICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgaWYgKCF1cGRhdGUgfHwgbWFpbl9jaGVja2VkCisgICAgICAgIHx8ICFnc3RfbTN1OF9jbGllbnRfaGFzX3ZhcmlhbnRfcGxheWxpc3QgKGRlbXV4LT5jbGllbnQpKSB7CiAgICAgICBnX2ZyZWUgKHVyaSk7CiAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQorCisgICAgZ19jbGVhcl9lcnJvciAoZXJyKTsKKyAgICBtYWluX3VyaSA9IGdzdF9tM3U4X2NsaWVudF9nZXRfdXJpIChkZW11eC0+Y2xpZW50KTsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAiVXBkYXRpbmcgcGxheWxpc3QgJXMgZmFpbGVkLCBhdHRlbXB0IHRvIHJlZnJlc2ggdmFyaWFudCBwbGF5bGlzdCAlcyIsCisgICAgICAgIHVyaSwgbWFpbl91cmkpOworICAgIGRvd25sb2FkID0KKyAgICAgICAgZ3N0X3VyaV9kb3dubG9hZGVyX2ZldGNoX3VyaSAoYWRhcHRpdmVfZGVtdXgtPmRvd25sb2FkZXIsCisgICAgICAgIG1haW5fdXJpLCBOVUxMLCBUUlVFLCBUUlVFLCBUUlVFLCBlcnIpOworICAgIGdfZnJlZSAobWFpbl91cmkpOworICAgIGlmIChkb3dubG9hZCA9PSBOVUxMKSB7CisgICAgICBnX2ZyZWUgKHVyaSk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgYnVmID0gZ3N0X2ZyYWdtZW50X2dldF9idWZmZXIgKGRvd25sb2FkKTsKKyAgICBwbGF5bGlzdCA9IGdzdF9obHNfc3JjX2J1Zl90b191dGY4X3BsYXlsaXN0IChidWYpOworICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisKKyAgICBpZiAocGxheWxpc3QgPT0gTlVMTCkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAiRmFpbGVkIHRvIHZhbGlkYXRlIHZhcmlhbnQgcGxheWxpc3QgZW5jb2RpbmciKTsKKyAgICAgIGdfZnJlZSAodXJpKTsKKyAgICAgIGdfb2JqZWN0X3VucmVmIChkb3dubG9hZCk7CisgICAgICBnX3NldF9lcnJvciAoZXJyLCBHU1RfU1RSRUFNX0VSUk9SLCBHU1RfU1RSRUFNX0VSUk9SX1dST05HX1RZUEUsCisgICAgICAgICAgIkNvdWxkbid0IHZhbGlkYXRlIHBsYXlsaXN0IGVuY29kaW5nIik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZ19mcmVlICh1cmkpOworICAgIGlmIChkb3dubG9hZC0+cmVkaXJlY3RfcGVybWFuZW50ICYmIGRvd25sb2FkLT5yZWRpcmVjdF91cmkpIHsKKyAgICAgIHVyaSA9IGRvd25sb2FkLT5yZWRpcmVjdF91cmk7CisgICAgICBiYXNlX3VyaSA9IE5VTEw7CisgICAgfSBlbHNlIHsKKyAgICAgIHVyaSA9IGRvd25sb2FkLT51cmk7CisgICAgICBiYXNlX3VyaSA9IGRvd25sb2FkLT5yZWRpcmVjdF91cmk7CisgICAgfQorCisgICAgaWYgKCFnc3RfbTN1OF9jbGllbnRfdXBkYXRlX3ZhcmlhbnRfcGxheWxpc3QgKGRlbXV4LT5jbGllbnQsIHBsYXlsaXN0LAorICAgICAgICAgICAgdXJpLCBiYXNlX3VyaSkpIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJGYWlsZWQgdG8gdXBkYXRlIHRoZSB2YXJpYW50IHBsYXlsaXN0Iik7CisgICAgICBnX29iamVjdF91bnJlZiAoZG93bmxvYWQpOworICAgICAgZ19zZXRfZXJyb3IgKGVyciwgR1NUX1NUUkVBTV9FUlJPUiwgR1NUX1NUUkVBTV9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgIkNvdWxkbid0IHVwZGF0ZSBwbGF5bGlzdCIpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGdfb2JqZWN0X3VucmVmIChkb3dubG9hZCk7CisKKyAgICBtYWluX2NoZWNrZWQgPSBUUlVFOworICAgIGdvdG8gcmV0cnk7CiAgIH0KICAgZ19mcmVlICh1cmkpOwogCkBAIC0xMDAwLDYgKzk4NCw5IEBACiAgICAgICB0YXJnZXRfcG9zID0gTUFYICh0YXJnZXRfcG9zLCBkZW11eC0+Y2xpZW50LT5zZXF1ZW5jZV9wb3NpdGlvbik7CiAgICAgfQogCisgICAgR1NUX0xPR19PQkpFQ1QgKGRlbXV4LCAiTG9va2luZyBmb3Igc2VxdWVuY2UgcG9zaXRpb24gJSIKKyAgICAgICAgR1NUX1RJTUVfRk9STUFUICIgaW4gdXBkYXRlZCBwbGF5bGlzdCIsIEdTVF9USU1FX0FSR1MgKHRhcmdldF9wb3MpKTsKKwogICAgIGN1cnJlbnRfcG9zID0gMDsKICAgICBmb3IgKHdhbGsgPSBkZW11eC0+Y2xpZW50LT5jdXJyZW50LT5maWxlczsgd2Fsazsgd2FsayA9IHdhbGstPm5leHQpIHsKICAgICAgIEdzdE0zVThNZWRpYUZpbGUgKmZpbGUgPSB3YWxrLT5kYXRhOwpAQCAtMTA1OCw5ICsxMDQ1LDggQEAKIAogICBHU1RfSU5GT19PQkpFQ1QgKGRlbXV4LCAiQ2xpZW50IHdhcyBvbiAlZGJwcywgbWF4IGFsbG93ZWQgaXMgJWRicHMsIHN3aXRjaGluZyIKICAgICAgICIgdG8gYml0cmF0ZSAlZGJwcyIsIG9sZF9iYW5kd2lkdGgsIG1heF9iaXRyYXRlLCBuZXdfYmFuZHdpZHRoKTsKLSAgc3RyZWFtLT5kaXNjb250ID0gVFJVRTsKIAotICBpZiAoZ3N0X2hsc19kZW11eF91cGRhdGVfcGxheWxpc3QgKGRlbXV4LCBGQUxTRSwgTlVMTCkpIHsKKyAgaWYgKGdzdF9obHNfZGVtdXhfdXBkYXRlX3BsYXlsaXN0IChkZW11eCwgVFJVRSwgTlVMTCkpIHsKICAgICBnY2hhciAqdXJpOwogICAgIGdjaGFyICptYWluX3VyaTsKICAgICB1cmkgPSBnc3RfbTN1OF9jbGllbnRfZ2V0X2N1cnJlbnRfdXJpIChkZW11eC0+Y2xpZW50KTsKQEAgLTEwNzUsNiArMTA2MSw3IEBACiAgICAgZ19mcmVlIChtYWluX3VyaSk7CiAgICAgaWYgKGNoYW5nZWQpCiAgICAgICAqY2hhbmdlZCA9IFRSVUU7CisgICAgc3RyZWFtLT5kaXNjb250ID0gVFJVRTsKICAgfSBlbHNlIHsKICAgICBHTGlzdCAqZmFpbG92ZXIgPSBOVUxMOwogCmRpZmYgLS1naXQgYS9leHQvaGxzL2dzdGhsc2RlbXV4LmggYi9leHQvaGxzL2dzdGhsc2RlbXV4LmgKaW5kZXggZGFhMzY3MC4uMTE1NDIzNiAxMDA2NDQKLS0tIGEvZXh0L2hscy9nc3RobHNkZW11eC5oCisrKyBiL2V4dC9obHMvZ3N0aGxzZGVtdXguaApAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgIm0zdTguaCIKLSNpbmNsdWRlICJnc3RmcmFnbWVudGVkLmgiCisjaW5jbHVkZSAiZ3N0aGxzLmgiCiAjaW5jbHVkZSA8Z3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oPgogI2lmIGRlZmluZWQoSEFWRV9PUEVOU1NMKQogI2luY2x1ZGUgPG9wZW5zc2wvZXZwLmg+CmRpZmYgLS1naXQgYS9leHQvaGxzL2dzdGhsc3BsdWdpbi5jIGIvZXh0L2hscy9nc3RobHNwbHVnaW4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTJmNTE0Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L2hscy9nc3RobHNwbHVnaW4uYwpAQCAtMCwwICsxLDMyIEBACisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyAgaW5jbHVkZSA8Y29uZmlnLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworI2luY2x1ZGUgImdzdGhscy5oIgorI2luY2x1ZGUgImdzdGhsc2RlbXV4LmgiCisjaW5jbHVkZSAiZ3N0aGxzc2luay5oIgorCitHU1RfREVCVUdfQ0FURUdPUlkgKGhsc19kZWJ1Zyk7CisKK3N0YXRpYyBnYm9vbGVhbgoraGxzX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKK3sKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGhsc19kZWJ1ZywgImhscyIsIDAsICJIVFRQIExpdmUgU3RyZWFtaW5nIChITFMpIik7CisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiaGxzZGVtdXgiLCBHU1RfUkFOS19QUklNQVJZLAorICAgICAgICAgIEdTVF9UWVBFX0hMU19ERU1VWCkgfHwgRkFMU0UpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmICghZ3N0X2hsc19zaW5rX3BsdWdpbl9pbml0IChwbHVnaW4pKQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gVFJVRTsKK30KKworR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAorICAgIEdTVF9WRVJTSU9OX01JTk9SLAorICAgIGhscywKKyAgICAiSFRUUCBMaXZlIFN0cmVhbWluZyAoSExTKSIsCisgICAgaGxzX2luaXQsIFZFUlNJT04sIEdTVF9MSUNFTlNFLCBQQUNLQUdFX05BTUUsIEdTVF9QQUNLQUdFX09SSUdJTikKZGlmZiAtLWdpdCBhL2V4dC9obHMvZ3N0aGxzc2luay5jIGIvZXh0L2hscy9nc3RobHNzaW5rLmMKaW5kZXggZGU1ZTg0Yy4uMDM2NzFkMCAxMDA2NDQKLS0tIGEvZXh0L2hscy9nc3RobHNzaW5rLmMKKysrIGIvZXh0L2hscy9nc3RobHNzaW5rLmMKQEAgLTM2LDcgKzM2LDYgQEAKICNpbmNsdWRlICJnc3RobHNzaW5rLmgiCiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotI2luY2x1ZGUgPGdpby9naW8uaD4KICNpbmNsdWRlIDxnbGliL2dzdGRpby5oPgogI2luY2x1ZGUgPG1lbW9yeS5oPgogCmRpZmYgLS1naXQgYS9leHQvaGxzL2dzdG0zdThwbGF5bGlzdC5jIGIvZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuYwppbmRleCBmMmM1NTZiLi5jNjAwNzAyIDEwMDY0NAotLS0gYS9leHQvaGxzL2dzdG0zdThwbGF5bGlzdC5jCisrKyBiL2V4dC9obHMvZ3N0bTN1OHBsYXlsaXN0LmMKQEAgLTIxLDIwICsyMSwxMCBAQAogCiAjaW5jbHVkZSA8Z2xpYi5oPgogCi0jaW5jbHVkZSAiZ3N0ZnJhZ21lbnRlZC5oIgorI2luY2x1ZGUgImdzdGhscy5oIgogI2luY2x1ZGUgImdzdG0zdThwbGF5bGlzdC5oIgogCi0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBmcmFnbWVudGVkX2RlYnVnCi0KLSNkZWZpbmUgTTNVOF9IRUFERVJfVEFHICIjRVhUTTNVXG4iCi0jZGVmaW5lIE0zVThfVkVSU0lPTl9UQUcgIiNFWFQtWC1WRVJTSU9OOiVkXG4iCi0jZGVmaW5lIE0zVThfQUxMT1dfQ0FDSEVfVEFHICIjRVhULVgtQUxMT1ctQ0FDSEU6JXNcbiIKLSNkZWZpbmUgTTNVOF9UQVJHRVREVVJBVElPTl9UQUcgIiNFWFQtWC1UQVJHRVREVVJBVElPTjolZFxuIgotI2RlZmluZSBNM1U4X01FRElBX1NFUVVFTkNFX1RBRyAiI0VYVC1YLU1FRElBLVNFUVVFTkNFOiVkXG4iCi0jZGVmaW5lIE0zVThfRElTQ09OVElOVUlUWV9UQUcgIiNFWFQtWC1ESVNDT05USU5VSVRZXG4iCi0jZGVmaW5lIE0zVThfSU5UX0lORl9UQUcgIiNFWFRJTkY6JWQsJXNcbiVzXG4iCi0jZGVmaW5lIE0zVThfRkxPQVRfSU5GX1RBRyAiI0VYVElORjolcywlc1xuJXNcbiIKLSNkZWZpbmUgTTNVOF9FTkRMSVNUX1RBRyAiI0VYVC1YLUVORExJU1QiCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBobHNfZGVidWcKIAogZW51bQogewpAQCAtNDIsNiArMzIsMTYgQEAKICAgR1NUX00zVThfUExBWUxJU1RfVFlQRV9WT0QsCiB9OwogCit0eXBlZGVmIHN0cnVjdCBfR3N0TTNVOEVudHJ5IEdzdE0zVThFbnRyeTsKKworc3RydWN0IF9Hc3RNM1U4RW50cnkKK3sKKyAgZ2Zsb2F0IGR1cmF0aW9uOworICBnY2hhciAqdGl0bGU7CisgIGdjaGFyICp1cmw7CisgIGdib29sZWFuIGRpc2NvbnRpbnVvdXM7Cit9OworCiBzdGF0aWMgR3N0TTNVOEVudHJ5ICoKIGdzdF9tM3U4X2VudHJ5X25ldyAoY29uc3QgZ2NoYXIgKiB1cmwsIGNvbnN0IGdjaGFyICogdGl0bGUsCiAgICAgZ2Zsb2F0IGR1cmF0aW9uLCBnYm9vbGVhbiBkaXNjb250aW51b3VzKQpAQCAtNjgsMjUgKzY4LDYgQEAKICAgZ19mcmVlIChlbnRyeSk7CiB9CiAKLXN0YXRpYyBnY2hhciAqCi1nc3RfbTN1OF9lbnRyeV9yZW5kZXIgKEdzdE0zVThFbnRyeSAqIGVudHJ5LCBndWludCB2ZXJzaW9uKQotewotICBnY2hhciBidWZbR19BU0NJSV9EVE9TVFJfQlVGX1NJWkVdOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChlbnRyeSAhPSBOVUxMLCBOVUxMKTsKLQotICBpZiAodmVyc2lvbiA8IDMpCi0gICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAoIiVzIiBNM1U4X0lOVF9JTkZfVEFHLAotICAgICAgICBlbnRyeS0+ZGlzY29udGludW91cyA/IE0zVThfRElTQ09OVElOVUlUWV9UQUcgOiAiIiwKLSAgICAgICAgKGdpbnQpICgoZW50cnktPmR1cmF0aW9uICsgNTAwICogR1NUX01TRUNPTkQpIC8gR1NUX1NFQ09ORCksCi0gICAgICAgIGVudHJ5LT50aXRsZSA/IGVudHJ5LT50aXRsZSA6ICIiLCBlbnRyeS0+dXJsKTsKLQotICByZXR1cm4gZ19zdHJkdXBfcHJpbnRmICgiJXMiIE0zVThfRkxPQVRfSU5GX1RBRywKLSAgICAgIGVudHJ5LT5kaXNjb250aW51b3VzID8gTTNVOF9ESVNDT05USU5VSVRZX1RBRyA6ICIiLAotICAgICAgZ19hc2NpaV9kdG9zdHIgKGJ1Ziwgc2l6ZW9mIChidWYpLCAoZW50cnktPmR1cmF0aW9uIC8gR1NUX1NFQ09ORCkpLAotICAgICAgZW50cnktPnRpdGxlID8gZW50cnktPnRpdGxlIDogIiIsIGVudHJ5LT51cmwpOwotfQotCiBHc3RNM1U4UGxheWxpc3QgKgogZ3N0X20zdThfcGxheWxpc3RfbmV3IChndWludCB2ZXJzaW9uLCBndWludCB3aW5kb3dfc2l6ZSwgZ2Jvb2xlYW4gYWxsb3dfY2FjaGUpCiB7CkBAIC0xNDgsMTIgKzEyOSwxMiBAQAogc3RhdGljIGd1aW50CiBnc3RfbTN1OF9wbGF5bGlzdF90YXJnZXRfZHVyYXRpb24gKEdzdE0zVThQbGF5bGlzdCAqIHBsYXlsaXN0KQogewotICBnaW50IGk7Ci0gIEdzdE0zVThFbnRyeSAqZW50cnk7CiAgIGd1aW50NjQgdGFyZ2V0X2R1cmF0aW9uID0gMDsKKyAgR0xpc3QgKmw7CiAKLSAgZm9yIChpID0gMDsgaSA8IHBsYXlsaXN0LT5lbnRyaWVzLT5sZW5ndGg7IGkrKykgewotICAgIGVudHJ5ID0gKEdzdE0zVThFbnRyeSAqKSBnX3F1ZXVlX3BlZWtfbnRoIChwbGF5bGlzdC0+ZW50cmllcywgaSk7CisgIGZvciAobCA9IHBsYXlsaXN0LT5lbnRyaWVzLT5oZWFkOyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0TTNVOEVudHJ5ICplbnRyeSA9IGwtPmRhdGE7CisKICAgICBpZiAoZW50cnktPmR1cmF0aW9uID4gdGFyZ2V0X2R1cmF0aW9uKQogICAgICAgdGFyZ2V0X2R1cmF0aW9uID0gZW50cnktPmR1cmF0aW9uOwogICB9CkBAIC0xNjEsNjUgKzE0Miw1MiBAQAogICByZXR1cm4gKGd1aW50KSAoKHRhcmdldF9kdXJhdGlvbiArIDUwMCAqIEdTVF9NU0VDT05EKSAvIEdTVF9TRUNPTkQpOwogfQogCi1zdGF0aWMgdm9pZAotcmVuZGVyX2VudHJ5IChHc3RNM1U4RW50cnkgKiBlbnRyeSwgR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpCi17Ci0gIGdjaGFyICplbnRyeV9zdHI7Ci0KLSAgZW50cnlfc3RyID0gZ3N0X20zdThfZW50cnlfcmVuZGVyIChlbnRyeSwgcGxheWxpc3QtPnZlcnNpb24pOwotICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChwbGF5bGlzdC0+cGxheWxpc3Rfc3RyLCAiJXMiLCBlbnRyeV9zdHIpOwotICBnX2ZyZWUgKGVudHJ5X3N0cik7Ci19Ci0KIGdjaGFyICoKIGdzdF9tM3U4X3BsYXlsaXN0X3JlbmRlciAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpCiB7Ci0gIGdjaGFyICpwbDsKKyAgR1N0cmluZyAqcGxheWxpc3Rfc3RyOworICBHTGlzdCAqbDsKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAocGxheWxpc3QgIT0gTlVMTCwgTlVMTCk7CiAKLSAgcGxheWxpc3QtPnBsYXlsaXN0X3N0ciA9IGdfc3RyaW5nX25ldyAoIiIpOworICBwbGF5bGlzdF9zdHIgPSBnX3N0cmluZ19uZXcgKCIjRVhUTTNVXG4iKTsKIAotICAvKiAjRVhUTTNVICovCi0gIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0LT5wbGF5bGlzdF9zdHIsIE0zVThfSEVBREVSX1RBRyk7Ci0gIC8qICNFWFQtWC1WRVJTSU9OICovCi0gIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0LT5wbGF5bGlzdF9zdHIsIE0zVThfVkVSU0lPTl9UQUcsCisgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0X3N0ciwgIiNFWFQtWC1WRVJTSU9OOiVkXG4iLAogICAgICAgcGxheWxpc3QtPnZlcnNpb24pOwotICAvKiAjRVhULVgtQUxMT1dfQ0FDSEUgKi8KLSAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3QtPnBsYXlsaXN0X3N0ciwgTTNVOF9BTExPV19DQUNIRV9UQUcsCisKKyAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3Rfc3RyLCAiI0VYVC1YLUFMTE9XLUNBQ0hFOiVzXG4iLAogICAgICAgcGxheWxpc3QtPmFsbG93X2NhY2hlID8gIllFUyIgOiAiTk8iKTsKLSAgLyogI0VYVC1YLU1FRElBLVNFUVVFTkNFICovCi0gIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0LT5wbGF5bGlzdF9zdHIsIE0zVThfTUVESUFfU0VRVUVOQ0VfVEFHLAorCisgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0X3N0ciwgIiNFWFQtWC1NRURJQS1TRVFVRU5DRTolZFxuIiwKICAgICAgIHBsYXlsaXN0LT5zZXF1ZW5jZV9udW1iZXIgLSBwbGF5bGlzdC0+ZW50cmllcy0+bGVuZ3RoKTsKLSAgLyogI0VYVC1YLVRBUkdFVERVUkFUSU9OICovCi0gIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0LT5wbGF5bGlzdF9zdHIsIE0zVThfVEFSR0VURFVSQVRJT05fVEFHLAorCisgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0X3N0ciwgIiNFWFQtWC1UQVJHRVREVVJBVElPTjoldVxuIiwKICAgICAgIGdzdF9tM3U4X3BsYXlsaXN0X3RhcmdldF9kdXJhdGlvbiAocGxheWxpc3QpKTsKLSAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3QtPnBsYXlsaXN0X3N0ciwgIlxuIik7CisgIGdfc3RyaW5nX2FwcGVuZCAocGxheWxpc3Rfc3RyLCAiXG4iKTsKIAogICAvKiBFbnRyaWVzICovCi0gIGdfcXVldWVfZm9yZWFjaCAocGxheWxpc3QtPmVudHJpZXMsIChHRnVuYykgcmVuZGVyX2VudHJ5LCBwbGF5bGlzdCk7CisgIGZvciAobCA9IHBsYXlsaXN0LT5lbnRyaWVzLT5oZWFkOyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KSB7CisgICAgZ2NoYXIgYnVmW0dfQVNDSUlfRFRPU1RSX0JVRl9TSVpFXTsKKyAgICBHc3RNM1U4RW50cnkgKmVudHJ5ID0gbC0+ZGF0YTsKKworICAgIGlmIChlbnRyeS0+ZGlzY29udGludW91cykKKyAgICAgIGdfc3RyaW5nX2FwcGVuZCAocGxheWxpc3Rfc3RyLCAiI0VYVC1YLURJU0NPTlRJTlVJVFlcbiIpOworCisgICAgaWYgKHBsYXlsaXN0LT52ZXJzaW9uIDwgMykgeworICAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3Rfc3RyLCAiI0VYVElORjolZCwlc1xuIiwKKyAgICAgICAgICAoZ2ludCkgKChlbnRyeS0+ZHVyYXRpb24gKyA1MDAgKiBHU1RfTVNFQ09ORCkgLyBHU1RfU0VDT05EKSwKKyAgICAgICAgICBlbnRyeS0+dGl0bGUgPyBlbnRyeS0+dGl0bGUgOiAiIik7CisgICAgfSBlbHNlIHsKKyAgICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHBsYXlsaXN0X3N0ciwgIiNFWFRJTkY6JXMsJXNcbiIsCisgICAgICAgICAgZ19hc2NpaV9kdG9zdHIgKGJ1Ziwgc2l6ZW9mIChidWYpLCBlbnRyeS0+ZHVyYXRpb24gLyBHU1RfU0VDT05EKSwKKyAgICAgICAgICBlbnRyeS0+dGl0bGUgPyBlbnRyeS0+dGl0bGUgOiAiIik7CisgICAgfQorCisgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAocGxheWxpc3Rfc3RyLCAiJXNcbiIsIGVudHJ5LT51cmwpOworICB9CiAKICAgaWYgKHBsYXlsaXN0LT5lbmRfbGlzdCkKLSAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChwbGF5bGlzdC0+cGxheWxpc3Rfc3RyLCBNM1U4X0VORExJU1RfVEFHKTsKKyAgICBnX3N0cmluZ19hcHBlbmQgKHBsYXlsaXN0X3N0ciwgIiNFWFQtWC1FTkRMSVNUIik7CiAKLSAgcGwgPSBwbGF5bGlzdC0+cGxheWxpc3Rfc3RyLT5zdHI7Ci0gIGdfc3RyaW5nX2ZyZWUgKHBsYXlsaXN0LT5wbGF5bGlzdF9zdHIsIEZBTFNFKTsKLSAgcmV0dXJuIHBsOwotfQotCi12b2lkCi1nc3RfbTN1OF9wbGF5bGlzdF9jbGVhciAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpCi17Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHBsYXlsaXN0ICE9IE5VTEwpOwotCi0gIGdfcXVldWVfZm9yZWFjaCAocGxheWxpc3QtPmVudHJpZXMsIChHRnVuYykgZ3N0X20zdThfZW50cnlfZnJlZSwgTlVMTCk7Ci0gIGdfcXVldWVfY2xlYXIgKHBsYXlsaXN0LT5lbnRyaWVzKTsKLX0KLQotZ3VpbnQKLWdzdF9tM3U4X3BsYXlsaXN0X25fZW50cmllcyAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpCi17Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChwbGF5bGlzdCAhPSBOVUxMLCAwKTsKLQotICByZXR1cm4gcGxheWxpc3QtPmVudHJpZXMtPmxlbmd0aDsKKyAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUgKHBsYXlsaXN0X3N0ciwgRkFMU0UpOwogfQpkaWZmIC0tZ2l0IGEvZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuaCBiL2V4dC9obHMvZ3N0bTN1OHBsYXlsaXN0LmgKaW5kZXggMGU5NTEzMi4uN2Q4MDQzNSAxMDA2NDQKLS0tIGEvZXh0L2hscy9nc3RtM3U4cGxheWxpc3QuaAorKysgYi9leHQvaGxzL2dzdG0zdThwbGF5bGlzdC5oCkBAIC0yMywyMSArMjMsMTAgQEAKICNkZWZpbmUgX19HU1RfTTNVOF9QTEFZTElTVF9IX18KIAogI2luY2x1ZGUgPGdsaWIuaD4KLSNpbmNsdWRlIDxnaW8vZ2lvLmg+CiAKIEdfQkVHSU5fREVDTFMKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdE0zVThQbGF5bGlzdCBHc3RNM1U4UGxheWxpc3Q7Ci10eXBlZGVmIHN0cnVjdCBfR3N0TTNVOEVudHJ5IEdzdE0zVThFbnRyeTsKLQotCi1zdHJ1Y3QgX0dzdE0zVThFbnRyeQotewotICBnZmxvYXQgZHVyYXRpb247Ci0gIGdjaGFyICp0aXRsZTsKLSAgZ2NoYXIgKnVybDsKLSAgZ2Jvb2xlYW4gZGlzY29udGludW91czsKLX07CiAKIHN0cnVjdCBfR3N0TTNVOFBsYXlsaXN0CiB7CkBAIC01MCwyMyArMzksMjQgQEAKIAogICAvKjwgUHJpdmF0ZSA+Ki8KICAgR1F1ZXVlICplbnRyaWVzOwotICBHU3RyaW5nICpwbGF5bGlzdF9zdHI7CiB9OwogCiAKIEdzdE0zVThQbGF5bGlzdCAqIGdzdF9tM3U4X3BsYXlsaXN0X25ldyAoZ3VpbnQgdmVyc2lvbiwgCiAJCQkJICAgICAgICAgZ3VpbnQgd2luZG93X3NpemUsCiAJCQkJCSBnYm9vbGVhbiBhbGxvd19jYWNoZSk7Ci12b2lkIGdzdF9tM3U4X3BsYXlsaXN0X2ZyZWUgKEdzdE0zVThQbGF5bGlzdCAqIHBsYXlsaXN0KTsKLWdib29sZWFuIGdzdF9tM3U4X3BsYXlsaXN0X2FkZF9lbnRyeSAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QsCi0gICAgCQkJCSAgICAgY29uc3QgZ2NoYXIgKiB1cmwsCi0JCQkJICAgICBjb25zdCBnY2hhciAqdGl0bGUsCi0JCQkJICAgICBnZmxvYXQgZHVyYXRpb24sCi0JCQkJICAgICBndWludCBpbmRleCwKLQkJCQkgICAgIGdib29sZWFuIGRpc2NvbnRpbnVvdXMpOwotZ2NoYXIgKiBnc3RfbTN1OF9wbGF5bGlzdF9yZW5kZXIgKEdzdE0zVThQbGF5bGlzdCAqIHBsYXlsaXN0KTsgCi12b2lkIGdzdF9tM3U4X3BsYXlsaXN0X2NsZWFyIChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCk7IAotZ3VpbnQgZ3N0X20zdThfcGxheWxpc3Rfbl9lbnRyaWVzIChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCk7IAorCit2b2lkICAgICAgICAgICAgICBnc3RfbTN1OF9wbGF5bGlzdF9mcmVlIChHc3RNM1U4UGxheWxpc3QgKiBwbGF5bGlzdCk7CisKK2dib29sZWFuICAgICAgICAgIGdzdF9tM3U4X3BsYXlsaXN0X2FkZF9lbnRyeSAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgICAqIHVybCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAgICogdGl0bGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdmbG9hdCAgICAgICAgICAgIGR1cmF0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAgICAgICAgICAgICBpbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgICAgZGlzY29udGludW91cyk7CisKK2djaGFyICogICAgICAgICAgIGdzdF9tM3U4X3BsYXlsaXN0X3JlbmRlciAoR3N0TTNVOFBsYXlsaXN0ICogcGxheWxpc3QpOwogCiBHX0VORF9ERUNMUworCiAjZW5kaWYgLyogX19NM1U4X0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L2hscy9tM3U4LmMgYi9leHQvaGxzL20zdTguYwppbmRleCA0MjY1Zjk3Li5kZjI2N2Y3IDEwMDY0NAotLS0gYS9leHQvaGxzL20zdTguYworKysgYi9leHQvaGxzL20zdTguYwpAQCAtMjUsMjkgKzI1LDEwIEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgogCi0jaW5jbHVkZSAiZ3N0ZnJhZ21lbnRlZC5oIgorI2luY2x1ZGUgImdzdGhscy5oIgogI2luY2x1ZGUgIm0zdTguaCIKIAotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZnJhZ21lbnRlZF9kZWJ1ZwotCi0jaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgMzMsIDQpCi0jZGVmaW5lIGdfbGlzdF9jb3B5X2RlZXAgZ3N0X2dfbGlzdF9jb3B5X2RlZXAKLXN0YXRpYyBHTGlzdCAqCi1nc3RfZ19saXN0X2NvcHlfZGVlcCAoR0xpc3QgKiBsaXN0LCBHQ29weUZ1bmMgZnVuYywgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBsaXN0ID0gZ19saXN0X2NvcHkgKGxpc3QpOwotCi0gIGlmIChmdW5jICE9IE5VTEwpIHsKLSAgICBHTGlzdCAqbDsKLQotICAgIGZvciAobCA9IGxpc3Q7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpIHsKLSAgICAgIGwtPmRhdGEgPSBmdW5jIChsLT5kYXRhLCB1c2VyX2RhdGEpOwotICAgIH0KLSAgfQotCi0gIHJldHVybiBsaXN0OwotfQotI2VuZGlmCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBobHNfZGVidWcKIAogc3RhdGljIEdzdE0zVTggKmdzdF9tM3U4X25ldyAodm9pZCk7CiBzdGF0aWMgdm9pZCBnc3RfbTN1OF9mcmVlIChHc3RNM1U4ICogbTN1OCk7CkBAIC0xMzEsODQgKzExMiw2IEBACiAgIGdfZnJlZSAoc2VsZik7CiB9CiAKLXN0YXRpYyBHc3RNM1U4TWVkaWFGaWxlICoKLWdzdF9tM3U4X21lZGlhX2ZpbGVfY29weSAoY29uc3QgR3N0TTNVOE1lZGlhRmlsZSAqIHNlbGYsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYgIT0gTlVMTCwgTlVMTCk7Ci0KLSAgcmV0dXJuIGdzdF9tM3U4X21lZGlhX2ZpbGVfbmV3IChnX3N0cmR1cCAoc2VsZi0+dXJpKSwgZ19zdHJkdXAgKHNlbGYtPnRpdGxlKSwKLSAgICAgIHNlbGYtPmR1cmF0aW9uLCBzZWxmLT5zZXF1ZW5jZSk7Ci19Ci0KLXN0YXRpYyBHc3RNM1U4ICoKLV9tM3U4X2NvcHkgKGNvbnN0IEdzdE0zVTggKiBzZWxmLCBHc3RNM1U4ICogcGFyZW50KQotewotICBHc3RNM1U4ICpkdXA7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlbGYgIT0gTlVMTCwgTlVMTCk7Ci0KLSAgZHVwID0gZ3N0X20zdThfbmV3ICgpOwotICBkdXAtPnVyaSA9IGdfc3RyZHVwIChzZWxmLT51cmkpOwotICBkdXAtPmJhc2VfdXJpID0gZ19zdHJkdXAgKHNlbGYtPmJhc2VfdXJpKTsKLSAgZHVwLT5uYW1lID0gZ19zdHJkdXAgKHNlbGYtPm5hbWUpOwotICBkdXAtPmVuZGxpc3QgPSBzZWxmLT5lbmRsaXN0OwotICBkdXAtPnZlcnNpb24gPSBzZWxmLT52ZXJzaW9uOwotICBkdXAtPnRhcmdldGR1cmF0aW9uID0gc2VsZi0+dGFyZ2V0ZHVyYXRpb247Ci0gIGR1cC0+YWxsb3djYWNoZSA9IHNlbGYtPmFsbG93Y2FjaGU7Ci0gIGR1cC0+YmFuZHdpZHRoID0gc2VsZi0+YmFuZHdpZHRoOwotICBkdXAtPnByb2dyYW1faWQgPSBzZWxmLT5wcm9ncmFtX2lkOwotICBkdXAtPmNvZGVjcyA9IGdfc3RyZHVwIChzZWxmLT5jb2RlY3MpOwotICBkdXAtPndpZHRoID0gc2VsZi0+d2lkdGg7Ci0gIGR1cC0+aGVpZ2h0ID0gc2VsZi0+aGVpZ2h0OwotICBkdXAtPmlmcmFtZSA9IHNlbGYtPmlmcmFtZTsKLSAgZHVwLT5maWxlcyA9Ci0gICAgICBnX2xpc3RfY29weV9kZWVwIChzZWxmLT5maWxlcywgKEdDb3B5RnVuYykgZ3N0X20zdThfbWVkaWFfZmlsZV9jb3B5LAotICAgICAgTlVMTCk7Ci0KLSAgLyogcHJpdmF0ZSAqLwotICBkdXAtPmxhc3RfZGF0YSA9IGdfc3RyZHVwIChzZWxmLT5sYXN0X2RhdGEpOwotICBkdXAtPmxpc3RzID0gZ19saXN0X2NvcHlfZGVlcCAoc2VsZi0+bGlzdHMsIChHQ29weUZ1bmMpIF9tM3U4X2NvcHksIGR1cCk7Ci0gIGR1cC0+aWZyYW1lX2xpc3RzID0KLSAgICAgIGdfbGlzdF9jb3B5X2RlZXAgKHNlbGYtPmlmcmFtZV9saXN0cywgKEdDb3B5RnVuYykgX20zdThfY29weSwgZHVwKTsKLSAgLyogTk9URTogY3VycmVudF92YXJpYW50IHdpbGwgZ2V0IHNldCBpbiBnc3RfbTN1OF9jb3B5ICgpICovCi0gIGR1cC0+cGFyZW50ID0gcGFyZW50OwotICBkdXAtPm1lZGlhc2VxdWVuY2UgPSBzZWxmLT5tZWRpYXNlcXVlbmNlOwotICByZXR1cm4gZHVwOwotfQotCi1zdGF0aWMgR3N0TTNVOCAqCi1nc3RfbTN1OF9jb3B5IChjb25zdCBHc3RNM1U4ICogc2VsZikKLXsKLSAgR0xpc3QgKmVudHJ5OwotICBndWludCBuOwotCi0gIEdzdE0zVTggKmR1cCA9IF9tM3U4X2NvcHkgKHNlbGYsIE5VTEwpOwotCi0gIGlmIChzZWxmLT5jdXJyZW50X3ZhcmlhbnQgIT0gTlVMTCkgewotICAgIGZvciAobiA9IDAsIGVudHJ5ID0gc2VsZi0+bGlzdHM7IGVudHJ5OyBlbnRyeSA9IGVudHJ5LT5uZXh0LCBuKyspIHsKLSAgICAgIGlmIChlbnRyeSA9PSBzZWxmLT5jdXJyZW50X3ZhcmlhbnQpIHsKLSAgICAgICAgZHVwLT5jdXJyZW50X3ZhcmlhbnQgPSBnX2xpc3RfbnRoIChkdXAtPmxpc3RzLCBuKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgaWYgKCFkdXAtPmN1cnJlbnRfdmFyaWFudCkgewotICAgICAgZm9yIChuID0gMCwgZW50cnkgPSBzZWxmLT5pZnJhbWVfbGlzdHM7IGVudHJ5OyBlbnRyeSA9IGVudHJ5LT5uZXh0LCBuKyspIHsKLSAgICAgICAgaWYgKGVudHJ5ID09IHNlbGYtPmN1cnJlbnRfdmFyaWFudCkgewotICAgICAgICAgIGR1cC0+Y3VycmVudF92YXJpYW50ID0gZ19saXN0X250aCAoZHVwLT5pZnJhbWVfbGlzdHMsIG4pOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICghZHVwLT5jdXJyZW50X3ZhcmlhbnQpIHsKLSAgICAgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGRldGVybWluZSBjdXJyZW50IHBsYXlsaXN0Iik7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIGR1cDsKLX0KLQogc3RhdGljIGdib29sZWFuCiBpbnRfZnJvbV9zdHJpbmcgKGdjaGFyICogcHRyLCBnY2hhciAqKiBlbmRwdHIsIGdpbnQgKiB2YWwpCiB7CkBAIC0yOTcsNyArMjAwLDcgQEAKIHN0YXRpYyBnYm9vbGVhbgogcGFyc2VfYXR0cmlidXRlcyAoZ2NoYXIgKiogcHRyLCBnY2hhciAqKiBhLCBnY2hhciAqKiB2KQogewotICBnY2hhciAqZW5kID0gTlVMTCwgKnA7CisgIGdjaGFyICplbmQgPSBOVUxMLCAqcCwgKnZlOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChwdHIgIT0gTlVMTCwgRkFMU0UpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoKnB0ciAhPSBOVUxMLCBGQUxTRSk7CkBAIC0zMzAsOCArMjMzLDIwIEBACiAKICAgKnYgPSBwID0gZ191dGY4X3N0cmNociAoKnB0ciwgLTEsICc9Jyk7CiAgIGlmICgqdikgewotICAgICp2ID0gZ191dGY4X25leHRfY2hhciAoKnYpOwogICAgICpwID0gJ1wwJzsKKyAgICAqdiA9IGdfdXRmOF9uZXh0X2NoYXIgKCp2KTsKKyAgICBpZiAoKip2ID09ICciJykgeworICAgICAgdmUgPSBnX3V0ZjhfbmV4dF9jaGFyICgqdik7CisgICAgICBpZiAodmUpIHsKKyAgICAgICAgdmUgPSBnX3V0Zjhfc3RyY2hyICh2ZSwgLTEsICciJyk7CisgICAgICB9CisgICAgICBpZiAodmUpIHsKKyAgICAgICAgKnYgPSBnX3V0ZjhfbmV4dF9jaGFyICgqdik7CisgICAgICAgICp2ZSA9ICdcMCc7CisgICAgICB9IGVsc2UgeworICAgICAgICBHU1RfV0FSTklORyAoIkNhbm5vdCByZW1vdmUgcXVvdGF0aW9uIG1hcmtzIGZyb20gJXMiLCAqYSk7CisgICAgICB9CisgICAgfQogICB9IGVsc2UgewogICAgIEdTVF9XQVJOSU5HICgibWlzc2luZyA9IGFmdGVyIGF0dHJpYnV0ZSIpOwogICAgIHJldHVybiBGQUxTRTsKQEAgLTM0MSwyOCArMjU2LDYgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLXN0YXRpYyBnY2hhciAqCi11bnF1b3RlX3N0cmluZyAoZ2NoYXIgKiBzdHJpbmcpCi17Ci0gIGdjaGFyICpzdHJpbmdfcmV0OwotCi0gIHN0cmluZ19yZXQgPSBzdHJjaHIgKHN0cmluZywgJyInKTsKLSAgaWYgKHN0cmluZ19yZXQgIT0gTlVMTCkgewotICAgIC8qIGZvdW5kIGluaXRpYWxpemF0aW9uIHF1b3RhdGlvbiBtYXJrIG9mIHN0cmluZyAqLwotICAgIHN0cmluZyA9IHN0cmluZ19yZXQgKyAxOwotICAgIHN0cmluZ19yZXQgPSBzdHJjaHIgKHN0cmluZywgJyInKTsKLSAgICBpZiAoc3RyaW5nX3JldCAhPSBOVUxMKSB7Ci0gICAgICAvKiBmb3VuZCBmaW5hbGl6aW5nIHF1b3RhdGlvbiBtYXJrIG9mIHN0cmluZyAqLwotICAgICAgc3RyaW5nX3JldFswXSA9ICdcMCc7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEdTVF9XQVJOSU5HCi0gICAgICAgICAgKCJ3cm9uZyBzdHJpbmcgdW5xb3V0aW5nIC0gY2Fubm90IGZpbmQgZmluYWxpemluZyBxdW90YXRpb24gbWFyayIpOwotICAgICAgcmV0dXJuIE5VTEw7Ci0gICAgfQotICB9Ci0gIHJldHVybiBzdHJpbmc7Ci19Ci0KIHN0YXRpYyBnaW50CiBfbTN1OF9jb21wYXJlX3VyaSAoR3N0TTNVOCAqIGEsIGdjaGFyICogdXJpKQogewpAQCAtMzk0LDYgKzI4Nyw3IEBACiAgIGdib29sZWFuIGhhdmVfaXYgPSBGQUxTRTsKICAgZ3VpbnQ4IGl2WzE2XSA9IHsgMCwgfTsKICAgZ2ludDY0IHNpemUgPSAtMSwgb2Zmc2V0ID0gLTE7CisgIGdpbnQ2NCBtZWRpYXNlcXVlbmNlOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWxmICE9IE5VTEwsIEZBTFNFKTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRhdGEgIT0gTlVMTCwgRkFMU0UpOwpAQCAtNDE2LDYgKzMxMCw4IEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKKyAgR1NUX1RSQUNFICgiZGF0YTpcbiVzIiwgZGF0YSk7CisKICAgZ19mcmVlIChzZWxmLT5sYXN0X2RhdGEpOwogICBzZWxmLT5sYXN0X2RhdGEgPSBkYXRhOwogCkBAIC00MjYsNiArMzIyLDcgQEAKICAgICBzZWxmLT5maWxlcyA9IE5VTEw7CiAgIH0KICAgY2xpZW50LT5kdXJhdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIG1lZGlhc2VxdWVuY2UgPSAwOwogCiAgIC8qIEJ5IGRlZmF1bHQsIGFsbG93IGNhY2hpbmcgKi8KICAgc2VsZi0+YWxsb3djYWNoZSA9IFRSVUU7CkBAIC00NjksOSArMzY2LDcgQEAKICAgICAgICAgbGlzdCA9IE5VTEw7CiAgICAgICB9IGVsc2UgewogICAgICAgICBHc3RNM1U4TWVkaWFGaWxlICpmaWxlOwotICAgICAgICBmaWxlID0KLSAgICAgICAgICAgIGdzdF9tM3U4X21lZGlhX2ZpbGVfbmV3IChkYXRhLCB0aXRsZSwgZHVyYXRpb24sCi0gICAgICAgICAgICBzZWxmLT5tZWRpYXNlcXVlbmNlKyspOworICAgICAgICBmaWxlID0gZ3N0X20zdThfbWVkaWFfZmlsZV9uZXcgKGRhdGEsIHRpdGxlLCBkdXJhdGlvbiwgbWVkaWFzZXF1ZW5jZSsrKTsKIAogICAgICAgICAvKiBzZXQgZW5jcnlwdGlvbiBwYXJhbXMgKi8KICAgICAgICAgZmlsZS0+a2V5ID0gY3VycmVudF9rZXkgPyBnX3N0cmR1cCAoY3VycmVudF9rZXkpIDogTlVMTDsKQEAgLTU0Nyw3ICs0NDIsNiBAQAogICAgICAgICBHc3RNM1U4ICpuZXdfbGlzdDsKIAogICAgICAgICBuZXdfbGlzdCA9IGdzdF9tM3U4X25ldyAoKTsKLSAgICAgICAgbmV3X2xpc3QtPnBhcmVudCA9IHNlbGY7CiAgICAgICAgIG5ld19saXN0LT5pZnJhbWUgPSBpZnJhbWU7CiAgICAgICAgIGRhdGEgPSBkYXRhICsgKGlmcmFtZSA/IDI2IDogMTgpOwogICAgICAgICB3aGlsZSAoZGF0YSAmJiBwYXJzZV9hdHRyaWJ1dGVzICgmZGF0YSwgJmEsICZ2KSkgewpAQCAtNTcyLDI0ICs0NjYsMTMgQEAKICAgICAgICAgICAgIH0KICAgICAgICAgICB9IGVsc2UgaWYgKGlmcmFtZSAmJiBnX3N0cl9lcXVhbCAoYSwgIlVSSSIpKSB7CiAgICAgICAgICAgICBnY2hhciAqbmFtZTsKLSAgICAgICAgICAgIGdjaGFyICp1cmkgPSBnX3N0cmR1cCAodik7Ci0gICAgICAgICAgICBnY2hhciAqdXJpcCA9IHVyaTsKKyAgICAgICAgICAgIGdjaGFyICp1cmk7CiAKLSAgICAgICAgICAgIHVyaSA9IHVucXVvdGVfc3RyaW5nICh1cmkpOworICAgICAgICAgICAgdXJpID0gdXJpX2pvaW4gKHNlbGYtPmJhc2VfdXJpID8gc2VsZi0+YmFzZV91cmkgOiBzZWxmLT51cmksIHYpOwogICAgICAgICAgICAgaWYgKHVyaSkgewotICAgICAgICAgICAgICB1cmkgPSB1cmlfam9pbiAoc2VsZi0+YmFzZV91cmkgPyBzZWxmLT5iYXNlX3VyaSA6IHNlbGYtPnVyaSwgdXJpKTsKLSAgICAgICAgICAgICAgaWYgKHVyaSA9PSBOVUxMKSB7Ci0gICAgICAgICAgICAgICAgZ19mcmVlICh1cmlwKTsKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICBuYW1lID0gZ19zdHJkdXAgKHVyaSk7Ci0KICAgICAgICAgICAgICAgZ3N0X20zdThfc2V0X3VyaSAobmV3X2xpc3QsIHVyaSwgTlVMTCwgbmFtZSk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBHU1RfV0FSTklORwotICAgICAgICAgICAgICAgICAgKCJDYW5ub3QgcmVtb3ZlIHF1b3RhdGlvbiBtYXJrcyBmcm9tIGktZnJhbWUtc3RyZWFtIFVSSSIpOwogICAgICAgICAgICAgfQotICAgICAgICAgICAgZ19mcmVlICh1cmlwKTsKICAgICAgICAgICB9CiAgICAgICAgIH0KIApAQCAtNjEzLDcgKzQ5Niw3IEBACiAgICAgICAgICAgc2VsZi0+dGFyZ2V0ZHVyYXRpb24gPSB2YWwgKiBHU1RfU0VDT05EOwogICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4IChkYXRhX2V4dF94LCAiTUVESUEtU0VRVUVOQ0U6IikpIHsKICAgICAgICAgaWYgKGludF9mcm9tX3N0cmluZyAoZGF0YSArIDIyLCAmZGF0YSwgJnZhbCkpCi0gICAgICAgICAgc2VsZi0+bWVkaWFzZXF1ZW5jZSA9IHZhbDsKKyAgICAgICAgICBtZWRpYXNlcXVlbmNlID0gdmFsOwogICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4IChkYXRhX2V4dF94LCAiRElTQ09OVElOVUlUWSIpKSB7CiAgICAgICAgIGRpc2NvbnRpbnVpdHkgPSBUUlVFOwogICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4IChkYXRhX2V4dF94LCAiUFJPR1JBTS1EQVRFLVRJTUU6IikpIHsKQEAgLTYzMiwxOCArNTE1LDggQEAKICAgICAgICAgY3VycmVudF9rZXkgPSBOVUxMOwogICAgICAgICB3aGlsZSAoZGF0YSAmJiBwYXJzZV9hdHRyaWJ1dGVzICgmZGF0YSwgJmEsICZ2KSkgewogICAgICAgICAgIGlmIChnX3N0cl9lcXVhbCAoYSwgIlVSSSIpKSB7Ci0gICAgICAgICAgICBnY2hhciAqa2V5ID0gZ19zdHJkdXAgKHYpOwotICAgICAgICAgICAgZ2NoYXIgKmtleXAgPSBrZXk7Ci0KLSAgICAgICAgICAgIGtleSA9IHVucXVvdGVfc3RyaW5nIChrZXkpOwotICAgICAgICAgICAgaWYgKGtleSkgewotICAgICAgICAgICAgICBjdXJyZW50X2tleSA9Ci0gICAgICAgICAgICAgICAgICB1cmlfam9pbiAoc2VsZi0+YmFzZV91cmkgPyBzZWxmLT5iYXNlX3VyaSA6IHNlbGYtPnVyaSwga2V5KTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIEdTVF9XQVJOSU5HCi0gICAgICAgICAgICAgICAgICAoIkNhbm5vdCByZW1vdmUgcXVvdGF0aW9uIG1hcmtzIGZyb20gZGVjcnlwdGlvbiBrZXkgVVJJIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgICBnX2ZyZWUgKGtleXApOworICAgICAgICAgICAgY3VycmVudF9rZXkgPQorICAgICAgICAgICAgICAgIHVyaV9qb2luIChzZWxmLT5iYXNlX3VyaSA/IHNlbGYtPmJhc2VfdXJpIDogc2VsZi0+dXJpLCB2KTsKICAgICAgICAgICB9IGVsc2UgaWYgKGdfc3RyX2VxdWFsIChhLCAiSVYiKSkgewogICAgICAgICAgICAgZ2NoYXIgKml2cCA9IHY7CiAgICAgICAgICAgICBnaW50IGk7CkBAIC03ODYsNyArNjU5LDYgQEAKICAgY2xpZW50LT5jdXJyZW50X2ZpbGVfZHVyYXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICBjbGllbnQtPnNlcXVlbmNlID0gLTE7CiAgIGNsaWVudC0+c2VxdWVuY2VfcG9zaXRpb24gPSAwOwotICBjbGllbnQtPnVwZGF0ZV9mYWlsZWRfY291bnQgPSAwOwogICBjbGllbnQtPmhpZ2hlc3Rfc2VxdWVuY2VfbnVtYmVyID0gLTE7CiAgIGNsaWVudC0+ZHVyYXRpb24gPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICBnX211dGV4X2luaXQgKCZjbGllbnQtPmxvY2spOwpAQCAtODEzLDcgKzY4NSw2IEBACiAgIEdTVF9NM1U4X0NMSUVOVF9MT0NLIChzZWxmKTsKICAgaWYgKG0zdTggIT0gc2VsZi0+Y3VycmVudCkgewogICAgIHNlbGYtPmN1cnJlbnQgPSBtM3U4OwotICAgIHNlbGYtPnVwZGF0ZV9mYWlsZWRfY291bnQgPSAwOwogICAgIHNlbGYtPmR1cmF0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgICBzZWxmLT5jdXJyZW50X2ZpbGUgPSBOVUxMOwogICB9CkBAIC04MzUsMTAgKzcwNiw4IEBACiAgIGlmICghZ3N0X20zdThfdXBkYXRlIChzZWxmLCBtM3U4LCBkYXRhLCAmdXBkYXRlZCkpCiAgICAgZ290byBvdXQ7CiAKLSAgaWYgKCF1cGRhdGVkKSB7Ci0gICAgc2VsZi0+dXBkYXRlX2ZhaWxlZF9jb3VudCsrOworICBpZiAoIXVwZGF0ZWQpCiAgICAgZ290byBvdXQ7Ci0gIH0KIAogICBpZiAoc2VsZi0+Y3VycmVudCAmJiAhc2VsZi0+Y3VycmVudC0+ZmlsZXMpIHsKICAgICBHU1RfRVJST1IgKCJJbnZhbGlkIG1lZGlhIHBsYXlsaXN0LCBpdCBkb2VzIG5vdCBjb250YWluIGFueSBtZWRpYSBmaWxlcyIpOwpAQCAtOTI1LDcgKzc5NCw3IEBACiAgICAgICBHTGlzdCAqbWF0Y2ggPSBnX2xpc3RfZmluZF9jdXN0b20gKHVubWF0Y2hlZF9saXN0cywgbGlzdF9lbnRyeS0+ZGF0YSwKICAgICAgICAgICAoR0NvbXBhcmVGdW5jKSBfZmluZF9tM3U4X2xpc3RfbWF0Y2gpOwogICAgICAgaWYgKG1hdGNoKQotICAgICAgICB1bm1hdGNoZWRfbGlzdHMgPSBnX2xpc3RfcmVtb3ZlX2xpbmsgKHVubWF0Y2hlZF9saXN0cywgbWF0Y2gpOworICAgICAgICB1bm1hdGNoZWRfbGlzdHMgPSBnX2xpc3RfZGVsZXRlX2xpbmsgKHVubWF0Y2hlZF9saXN0cywgbWF0Y2gpOwogICAgIH0KIAogICAgIGlmICh1bm1hdGNoZWRfbGlzdHMgIT0gTlVMTCkgewpAQCAtOTQxLDEwICs4MTAsMTIgQEAKICAgICAgIGdfbGlzdF9mcmVlICh1bm1hdGNoZWRfbGlzdHMpOwogICAgIH0KIAotICAgIC8qIFN3aXRjaCBvdXQgdGhlIHZhcmlhbnQgcGxheWxpc3QgKi8KKyAgICAvKiBTd2l0Y2ggb3V0IHRoZSB2YXJpYW50IHBsYXlsaXN0LCBzdGVhbCBpdCBmcm9tIG5ld19jbGllbnQgKi8KICAgICBvbGQgPSBzZWxmLT5tYWluOwogCi0gICAgc2VsZi0+bWFpbiA9IGdzdF9tM3U4X2NvcHkgKG5ld19jbGllbnQtPm1haW4pOworICAgIHNlbGYtPm1haW4gPSBuZXdfY2xpZW50LT5tYWluOworICAgIG5ld19jbGllbnQtPm1haW4gPSBnc3RfbTN1OF9uZXcgKCk7CisKICAgICBpZiAoc2VsZi0+bWFpbi0+bGlzdHMpCiAgICAgICBzZWxmLT5jdXJyZW50ID0gc2VsZi0+bWFpbi0+Y3VycmVudF92YXJpYW50LT5kYXRhOwogICAgIGVsc2UKQEAgLTk2MiwxMiArODMzLDYgQEAKICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGdib29sZWFuCi1fZmluZF9jdXJyZW50IChHc3RNM1U4TWVkaWFGaWxlICogZmlsZSwgR3N0TTNVOENsaWVudCAqIGNsaWVudCkKLXsKLSAgcmV0dXJuIGZpbGUtPnNlcXVlbmNlICE9IGNsaWVudC0+c2VxdWVuY2U7Ci19Ci0KIHN0YXRpYyBHTGlzdCAqCiBmaW5kX25leHRfZnJhZ21lbnQgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsIEdMaXN0ICogbCwgZ2Jvb2xlYW4gZm9yd2FyZCkKIHsKQEAgLTExNDUsMTYgKzEwMTAsMzQgQEAKICAgICBHTGlzdCAqbDsKIAogICAgIEdTVF9ERUJVRyAoIkxvb2tpbmcgZm9yIGZyYWdtZW50ICUiIEdfR0lOVDY0X0ZPUk1BVCwgY2xpZW50LT5zZXF1ZW5jZSk7Ci0gICAgbCA9IGdfbGlzdF9maW5kX2N1c3RvbSAoY2xpZW50LT5jdXJyZW50LT5maWxlcywgY2xpZW50LAotICAgICAgICAoR0NvbXBhcmVGdW5jKSBfZmluZF9jdXJyZW50KTsKLSAgICBpZiAobCA9PSBOVUxMKSB7CisgICAgZm9yIChsID0gY2xpZW50LT5jdXJyZW50LT5maWxlczsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkgeworICAgICAgaWYgKEdTVF9NM1U4X01FRElBX0ZJTEUgKGwtPmRhdGEpLT5zZXF1ZW5jZSA9PSBjbGllbnQtPnNlcXVlbmNlKSB7CisgICAgICAgIGNsaWVudC0+Y3VycmVudF9maWxlID0gbDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICAgIGlmIChjbGllbnQtPmN1cnJlbnRfZmlsZSA9PSBOVUxMKSB7CiAgICAgICBHU1RfREVCVUcKICAgICAgICAgICAoIkNvdWxkIG5vdCBmaW5kIGN1cnJlbnQgZnJhZ21lbnQsIHRyeWluZyBuZXh0IGZyYWdtZW50IGRpcmVjdGx5Iik7CiAgICAgICBhbHRlcm5hdGVfYWR2YW5jZSAoY2xpZW50LCBmb3J3YXJkKTsKKworICAgICAgLyogUmVzeW5jIHNlcXVlbmNlIG51bWJlciBpZiB0aGUgYWJvdmUgaGFzIGZhaWxlZCBmb3IgbGl2ZSBzdHJlYW1zICovCisgICAgICBpZiAoY2xpZW50LT5jdXJyZW50X2ZpbGUgPT0gTlVMTCAmJiBHU1RfTTNVOF9DTElFTlRfSVNfTElWRSAoY2xpZW50KSkgeworICAgICAgICAvKiBmb3IgbGl2ZSBzdHJlYW1zLCBzdGFydCBHU1RfTTNVOF9MSVZFX01JTl9GUkFHTUVOVF9ESVNUQU5DRSBmcm9tCisgICAgICAgICAgIHRoZSBlbmQgb2YgdGhlIHBsYXlsaXN0LiBTZWUgc2VjdGlvbiA2LjMuMyBvZiBITFMgZHJhZnQgKi8KKyAgICAgICAgZ2ludCBwb3MgPQorICAgICAgICAgICAgZ19saXN0X2xlbmd0aCAoY2xpZW50LT5jdXJyZW50LT5maWxlcykgLQorICAgICAgICAgICAgR1NUX00zVThfTElWRV9NSU5fRlJBR01FTlRfRElTVEFOQ0U7CisgICAgICAgIGNsaWVudC0+Y3VycmVudF9maWxlID0KKyAgICAgICAgICAgIGdfbGlzdF9udGggKGNsaWVudC0+Y3VycmVudC0+ZmlsZXMsIHBvcyA+PSAwID8gcG9zIDogMCk7CisgICAgICAgIGNsaWVudC0+Y3VycmVudF9maWxlX2R1cmF0aW9uID0KKyAgICAgICAgICAgIEdTVF9NM1U4X01FRElBX0ZJTEUgKGNsaWVudC0+Y3VycmVudF9maWxlLT5kYXRhKS0+ZHVyYXRpb247CisKKyAgICAgICAgR1NUX1dBUk5JTkcgKCJSZXN5bmNpbmcgbGl2ZSBwbGF5bGlzdCIpOworICAgICAgfQogICAgICAgR1NUX00zVThfQ0xJRU5UX1VOTE9DSyAoY2xpZW50KTsKICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgY2xpZW50LT5jdXJyZW50X2ZpbGUgPSBsOwogICB9CiAKICAgZmlsZSA9IEdTVF9NM1U4X01FRElBX0ZJTEUgKGNsaWVudC0+Y3VycmVudF9maWxlLT5kYXRhKTsKQEAgLTEyNTYsMjIgKzExMzksNiBAQAogfQogCiBnYm9vbGVhbgotZ3N0X20zdThfY2xpZW50X2hhc19tYWluIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KQotewotICBnYm9vbGVhbiByZXQ7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNsaWVudCAhPSBOVUxMLCBGQUxTRSk7Ci0KLSAgR1NUX00zVThfQ0xJRU5UX0xPQ0sgKGNsaWVudCk7Ci0gIGlmIChjbGllbnQtPm1haW4pCi0gICAgcmV0ID0gVFJVRTsKLSAgZWxzZQotICAgIHJldCA9IEZBTFNFOwotICBHU1RfTTNVOF9DTElFTlRfVU5MT0NLIChjbGllbnQpOwotICByZXR1cm4gcmV0OwotfQotCi1nYm9vbGVhbgogZ3N0X20zdThfY2xpZW50X2hhc192YXJpYW50X3BsYXlsaXN0IChHc3RNM1U4Q2xpZW50ICogY2xpZW50KQogewogICBnYm9vbGVhbiByZXQ7CkBAIC0xMzgwLDI4ICsxMjQ3LDYgQEAKICAgcmV0dXJuIHJldDsKIH0KIAotZ3VpbnQ2NAotZ3N0X20zdThfY2xpZW50X2dldF9jdXJyZW50X2ZyYWdtZW50X2R1cmF0aW9uIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KQotewotICBndWludDY0IGR1cjsKLSAgR0xpc3QgKmxpc3Q7Ci0KLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNsaWVudCAhPSBOVUxMLCAwKTsKLQotICBHU1RfTTNVOF9DTElFTlRfTE9DSyAoY2xpZW50KTsKLQotICBsaXN0ID0gZ19saXN0X2ZpbmRfY3VzdG9tIChjbGllbnQtPmN1cnJlbnQtPmZpbGVzLCBjbGllbnQsCi0gICAgICAoR0NvbXBhcmVGdW5jKSBfZmluZF9jdXJyZW50KTsKLSAgaWYgKGxpc3QgPT0gTlVMTCkgewotICAgIGR1ciA9IC0xOwotICB9IGVsc2UgewotICAgIGR1ciA9IEdTVF9NM1U4X01FRElBX0ZJTEUgKGxpc3QtPmRhdGEpLT5kdXJhdGlvbjsKLSAgfQotCi0gIEdTVF9NM1U4X0NMSUVOVF9VTkxPQ0sgKGNsaWVudCk7Ci0gIHJldHVybiBkdXI7Ci19Ci0KIGdib29sZWFuCiBnc3RfbTN1OF9jbGllbnRfZ2V0X3NlZWtfcmFuZ2UgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsIGdpbnQ2NCAqIHN0YXJ0LAogICAgIGdpbnQ2NCAqIHN0b3ApCkBAIC0xNDEwLDYgKzEyNTUsNyBAQAogICBHTGlzdCAqd2FsazsKICAgR3N0TTNVOE1lZGlhRmlsZSAqZmlsZTsKICAgZ3VpbnQgY291bnQ7CisgIGd1aW50IG1pbl9kaXN0YW5jZSA9IDA7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNsaWVudCAhPSBOVUxMLCBGQUxTRSk7CiAKQEAgLTE0MjAsMTMgKzEyNjYsMTYgQEAKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAorICBpZiAoR1NUX00zVThfQ0xJRU5UX0lTX0xJVkUgKGNsaWVudCkpIHsKKyAgICAvKiBtaW5fZGlzdGFuY2UgaXMgdXNlZCB0byBtYWtlIHN1cmUgdGhlIHNlZWsgcmFuZ2UgaXMgbmV2ZXIgY2xvc2VyIHRoYW4KKyAgICAgICBHU1RfTTNVOF9MSVZFX01JTl9GUkFHTUVOVF9ESVNUQU5DRSBmcmFnbWVudHMgZnJvbSB0aGUgZW5kIG9mIGEgbGl2ZQorICAgICAgIHBsYXlsaXN0IC0gc2VlIDYuMy4zLiAiUGxheWluZyB0aGUgUGxheWxpc3QgZmlsZSIgb2YgdGhlIEhMUyBkcmFmdCAqLworICAgIG1pbl9kaXN0YW5jZSA9IEdTVF9NM1U4X0xJVkVfTUlOX0ZSQUdNRU5UX0RJU1RBTkNFOworICB9CiAgIGNvdW50ID0gZ19saXN0X2xlbmd0aCAoY2xpZW50LT5jdXJyZW50LT5maWxlcyk7CiAKLSAgLyogY291bnQgaXMgdXNlZCB0byBtYWtlIHN1cmUgdGhlIHNlZWsgcmFuZ2UgaXMgbmV2ZXIgY2xvc2VyIHRoYW4KLSAgICAgR1NUX00zVThfTElWRV9NSU5fRlJBR01FTlRfRElTVEFOQ0UgZnJhZ21lbnRzIGZyb20gdGhlIGVuZCBvZiB0aGUKLSAgICAgcGxheWxpc3QgLSBzZWUgNi4zLjMuICJQbGF5aW5nIHRoZSBQbGF5bGlzdCBmaWxlIiBvZiB0aGUgSExTIGRyYWZ0ICovCiAgIGZvciAod2FsayA9IGNsaWVudC0+Y3VycmVudC0+ZmlsZXM7Ci0gICAgICB3YWxrICYmIGNvdW50ID49IEdTVF9NM1U4X0xJVkVfTUlOX0ZSQUdNRU5UX0RJU1RBTkNFOyB3YWxrID0gd2Fsay0+bmV4dCkgeworICAgICAgd2FsayAmJiBjb3VudCA+PSBtaW5fZGlzdGFuY2U7IHdhbGsgPSB3YWxrLT5uZXh0KSB7CiAgICAgZmlsZSA9IHdhbGstPmRhdGE7CiAgICAgLS1jb3VudDsKICAgICBkdXJhdGlvbiArPSBmaWxlLT5kdXJhdGlvbjsKZGlmZiAtLWdpdCBhL2V4dC9obHMvbTN1OC5oIGIvZXh0L2hscy9tM3U4LmgKaW5kZXggN2IwOWRlMS4uMjRlYWFhMSAxMDA2NDQKLS0tIGEvZXh0L2hscy9tM3U4LmgKKysrIGIvZXh0L2hscy9tM3U4LmgKQEAgLTI1LDcgKzI1LDkgQEAKIAogI2luY2x1ZGUgPGdsaWIuaD4KIAotR19CRUdJTl9ERUNMUyB0eXBlZGVmIHN0cnVjdCBfR3N0TTNVOCBHc3RNM1U4OworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0TTNVOCBHc3RNM1U4OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE0zVThNZWRpYUZpbGUgR3N0TTNVOE1lZGlhRmlsZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RNM1U4Q2xpZW50IEdzdE0zVThDbGllbnQ7CiAKQEAgLTM2LDExICszOCw2IEBACiAjZGVmaW5lIEdTVF9NM1U4X0NMSUVOVF9VTkxPQ0soYykgZ19tdXRleF91bmxvY2sgKCZjLT5sb2NrKTsKIAogI2RlZmluZSBHU1RfTTNVOF9DTElFTlRfSVNfTElWRShjKSAoKCEoYyktPmN1cnJlbnQgfHwgKGMpLT5jdXJyZW50LT5lbmRsaXN0KSA/IEZBTFNFIDogVFJVRSkKLS8qIGhsc2RlbXV4IG11c3Qgbm90IGdldCBjbG9zZXIgdG8gdGhlIGVuZCBvZiBhIGxpdmUgc3RyZWFtIHRoYW4KLSAgIEdTVF9NM1U4X0xJVkVfTUlOX0ZSQUdNRU5UX0RJU1RBTkNFIGZyYWdtZW50cy4gU2VjdGlvbiA2LjMuMwotICAgIlBsYXlpbmcgdGhlIFBsYXlsaXN0IGZpbGUiIG9mIHRoZSBITFMgZHJhZnQgc3RhdGVzIHRoYXQgdGhpcwotICAgdmFsdWUgaXMgdGhyZWUgZnJhZ21lbnRzICovCi0jZGVmaW5lIEdTVF9NM1U4X0xJVkVfTUlOX0ZSQUdNRU5UX0RJU1RBTkNFIDMKIAogLyogaGxzZGVtdXggbXVzdCBub3QgZ2V0IGNsb3NlciB0byB0aGUgZW5kIG9mIGEgbGl2ZSBzdHJlYW0gdGhhbgogICAgR1NUX00zVThfTElWRV9NSU5fRlJBR01FTlRfRElTVEFOQ0UgZnJhZ21lbnRzLiBTZWN0aW9uIDYuMy4zCkBAIC03NCw4ICs3MSw2IEBACiAgIEdMaXN0ICpsaXN0czsgICAgICAgICAgICAgICAgIC8qIGxpc3Qgb2YgR3N0TTNVOCBmcm9tIHRoZSBtYWluIHBsYXlsaXN0ICovCiAgIEdMaXN0ICppZnJhbWVfbGlzdHM7ICAgICAgICAgIC8qIEktZnJhbWUgbGlzdHMgZnJvbSB0aGUgbWFpbiBwbGF5bGlzdCAqLwogICBHTGlzdCAqY3VycmVudF92YXJpYW50OyAgICAgICAvKiBDdXJyZW50IHZhcmlhbnQgcGxheWxpc3QgdXNlZCAqLwotICBHc3RNM1U4ICpwYXJlbnQ7ICAgICAgICAgICAgICAvKiBtYWluIHBsYXlsaXN0IChpZiBhbnkpICovCi0gIGdpbnQ2NCBtZWRpYXNlcXVlbmNlOyAgICAgICAgICAvKiBFWFQtWC1NRURJQS1TRVFVRU5DRSAmIGluY3JlYXNlZCB3aXRoIG5ldyBtZWRpYSBmaWxlICovCiB9OwogCiBzdHJ1Y3QgX0dzdE0zVThNZWRpYUZpbGUKQEAgLTk0LDcgKzg5LDYgQEAKIHsKICAgR3N0TTNVOCAqbWFpbjsgICAgICAgICAgICAgICAgLyogbWFpbiBwbGF5bGlzdCAqLwogICBHc3RNM1U4ICpjdXJyZW50OwotICBndWludCB1cGRhdGVfZmFpbGVkX2NvdW50OwogICBHTGlzdCAqY3VycmVudF9maWxlOwogICBHc3RDbG9ja1RpbWUgY3VycmVudF9maWxlX2R1cmF0aW9uOyAvKiBEdXJhdGlvbiBvZiBjdXJyZW50IGZyYWdtZW50ICovCiAgIGdpbnQ2NCBzZXF1ZW5jZTsgICAgICAgICAgICAgIC8qIHRoZSBuZXh0IHNlcXVlbmNlIGZvciB0aGlzIGNsaWVudCAqLwpAQCAtMTA3LDMwICsxMDEsNTYgQEAKIH07CiAKIAotR3N0TTNVOENsaWVudCAqZ3N0X20zdThfY2xpZW50X25ldyAoY29uc3QgZ2NoYXIgKiB1cmksIGNvbnN0IGdjaGFyICogYmFzZV91cmkpOwotdm9pZCBnc3RfbTN1OF9jbGllbnRfZnJlZSAoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7Ci1nYm9vbGVhbiBnc3RfbTN1OF9jbGllbnRfdXBkYXRlIChHc3RNM1U4Q2xpZW50ICogY2xpZW50LCBnY2hhciAqIGRhdGEpOwotZ2Jvb2xlYW4gZ3N0X20zdThfY2xpZW50X3VwZGF0ZV92YXJpYW50X3BsYXlsaXN0IChHc3RNM1U4Q2xpZW50ICogY2xpZW50LCBnY2hhciAqIGRhdGEsIGNvbnN0IGdjaGFyICogdXJpLCBjb25zdCBnY2hhciAqIGJhc2VfdXJpKTsKLXZvaWQgZ3N0X20zdThfY2xpZW50X3NldF9jdXJyZW50IChHc3RNM1U4Q2xpZW50ICogY2xpZW50LCBHc3RNM1U4ICogbTN1OCk7Ci1nYm9vbGVhbiBnc3RfbTN1OF9jbGllbnRfZ2V0X25leHRfZnJhZ21lbnQgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsCi0gICAgZ2Jvb2xlYW4gKiBkaXNjb250aW51aXR5LCBnY2hhciAqKiB1cmksIEdzdENsb2NrVGltZSAqIGR1cmF0aW9uLAotICAgIEdzdENsb2NrVGltZSAqIHRpbWVzdGFtcCwgZ2ludDY0ICogcmFuZ2Vfc3RhcnQsIGdpbnQ2NCAqIHJhbmdlX2VuZCwKLSAgICBnY2hhciAqKiBrZXksIGd1aW50OCAqKiBpdiwgZ2Jvb2xlYW4gZm9yd2FyZCk7Ci1nYm9vbGVhbiBnc3RfbTN1OF9jbGllbnRfaGFzX25leHRfZnJhZ21lbnQgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsIGdib29sZWFuIGZvcndhcmQpOwotdm9pZCBnc3RfbTN1OF9jbGllbnRfYWR2YW5jZV9mcmFnbWVudCAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwgZ2Jvb2xlYW4gZm9yd2FyZCk7Ci1Hc3RDbG9ja1RpbWUgZ3N0X20zdThfY2xpZW50X2dldF9kdXJhdGlvbiAoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7Ci1Hc3RDbG9ja1RpbWUgZ3N0X20zdThfY2xpZW50X2dldF90YXJnZXRfZHVyYXRpb24gKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOwotZ2NoYXIgKmdzdF9tM3U4X2NsaWVudF9nZXRfdXJpKEdzdE0zVThDbGllbnQgKiBjbGllbnQpOwotZ2NoYXIgKmdzdF9tM3U4X2NsaWVudF9nZXRfY3VycmVudF91cmkoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7Ci1nYm9vbGVhbiBnc3RfbTN1OF9jbGllbnRfaGFzX21haW4oR3N0TTNVOENsaWVudCAqIGNsaWVudCk7Ci1nYm9vbGVhbiBnc3RfbTN1OF9jbGllbnRfaGFzX3ZhcmlhbnRfcGxheWxpc3QoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7Ci1nYm9vbGVhbiBnc3RfbTN1OF9jbGllbnRfaXNfbGl2ZShHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKLUdMaXN0ICogZ3N0X20zdThfY2xpZW50X2dldF9wbGF5bGlzdF9mb3JfYml0cmF0ZSAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwKLSAgICBndWludCBiaXRyYXRlKTsKK0dzdE0zVThDbGllbnQgKiBnc3RfbTN1OF9jbGllbnRfbmV3IChjb25zdCBnY2hhciAqIHVyaSwgY29uc3QgZ2NoYXIgKiBiYXNlX3VyaSk7CiAKLWd1aW50NjQgZ3N0X20zdThfY2xpZW50X2dldF9jdXJyZW50X2ZyYWdtZW50X2R1cmF0aW9uIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKK3ZvaWQgICAgICAgICAgICBnc3RfbTN1OF9jbGllbnRfZnJlZSAoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7CiAKLWdib29sZWFuIGdzdF9tM3U4X2NsaWVudF9nZXRfc2Vla19yYW5nZShHc3RNM1U4Q2xpZW50ICogY2xpZW50LCBnaW50NjQgKiBzdGFydCwgZ2ludDY0ICogc3RvcCk7CitnYm9vbGVhbiAgICAgICAgZ3N0X20zdThfY2xpZW50X3VwZGF0ZSAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwgZ2NoYXIgKiBkYXRhKTsKKworZ2Jvb2xlYW4gICAgICAgIGdzdF9tM3U4X2NsaWVudF91cGRhdGVfdmFyaWFudF9wbGF5bGlzdCAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdjaGFyICAgICAgICAgKiBkYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgICAqIHVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICAgKiBiYXNlX3VyaSk7CisKK3ZvaWQgICAgICAgICAgICBnc3RfbTN1OF9jbGllbnRfc2V0X2N1cnJlbnQgICAgICAgICAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0TTNVOCAgICAgICAqIG0zdTgpOworCitnYm9vbGVhbiAgICAgICAgZ3N0X20zdThfY2xpZW50X2dldF9uZXh0X2ZyYWdtZW50ICAgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgKiBkaXNjb250aW51aXR5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2hhciAgICAgICAgKiogdXJpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDbG9ja1RpbWUgICogZHVyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENsb2NrVGltZSAgKiB0aW1lc3RhbXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQ2NCAgICAgICAgKiByYW5nZV9zdGFydCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludDY0ICAgICAgICAqIHJhbmdlX2VuZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NoYXIgICAgICAgICoqIGtleSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ4ICAgICAgICoqIGl2LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAgICAgICAgZm9yd2FyZCk7CisKK2dib29sZWFuICAgICAgICBnc3RfbTN1OF9jbGllbnRfaGFzX25leHRfZnJhZ21lbnQgICAoR3N0TTNVOENsaWVudCAqIGNsaWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gICAgICAgIGZvcndhcmQpOworCit2b2lkICAgICAgICAgICAgZ3N0X20zdThfY2xpZW50X2FkdmFuY2VfZnJhZ21lbnQgICAgKEdzdE0zVThDbGllbnQgKiBjbGllbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICBmb3J3YXJkKTsKKworR3N0Q2xvY2tUaW1lICAgIGdzdF9tM3U4X2NsaWVudF9nZXRfZHVyYXRpb24gICAgICAgIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKKworR3N0Q2xvY2tUaW1lICAgIGdzdF9tM3U4X2NsaWVudF9nZXRfdGFyZ2V0X2R1cmF0aW9uIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKKworZ2NoYXIgKiAgICAgICAgIGdzdF9tM3U4X2NsaWVudF9nZXRfdXJpICAgICAgICAgICAgIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKKworZ2NoYXIgKiAgICAgICAgIGdzdF9tM3U4X2NsaWVudF9nZXRfY3VycmVudF91cmkgICAgIChHc3RNM1U4Q2xpZW50ICogY2xpZW50KTsKKworZ2Jvb2xlYW4gICAgICAgIGdzdF9tM3U4X2NsaWVudF9oYXNfdmFyaWFudF9wbGF5bGlzdCAoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7CisKK2dib29sZWFuICAgICAgICBnc3RfbTN1OF9jbGllbnRfaXNfbGl2ZSAgICAgICAgICAgICAoR3N0TTNVOENsaWVudCAqIGNsaWVudCk7CisKK0dMaXN0ICogICAgICAgICBnc3RfbTN1OF9jbGllbnRfZ2V0X3BsYXlsaXN0X2Zvcl9iaXRyYXRlIChHc3RNM1U4Q2xpZW50ICogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50ICAgICAgICAgICBiaXRyYXRlKTsKKworZ2Jvb2xlYW4gICAgICAgIGdzdF9tM3U4X2NsaWVudF9nZXRfc2Vla19yYW5nZSAgICAgIChHc3RNM1U4Q2xpZW50ICogY2xpZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50NjQgICAgICAgICogc3RhcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQ2NCAgICAgICAgKiBzdG9wKTsKIAogR19FTkRfREVDTFMKKwogI2VuZGlmIC8qIF9fTTNVOF9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9rYXRlL01ha2VmaWxlLmluIGIvZXh0L2thdGUvTWFrZWZpbGUuaW4KaW5kZXggNTBiYzU4Yy4uNjUwNzk5YiAxMDA2NDQKLS0tIGEvZXh0L2thdGUvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2thdGUvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjgwLDYgKzI3OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE3LDYgKzMxOCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI1LDcgKzMyOCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0NCw4ICszNDYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYyLDE2ICszNjUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk3LDYgKzQwMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMiw2ICs0MjgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjMsNiArNTMxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNiw4ICs1NDUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTMsNiArNTYwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMCwxNiArNjE5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcxLDYgKzY4Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODEsNiArNjkzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkwLDYgKzcwMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjcsNyArNzQyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQva2F0ZS9nc3RrYXRlZGVjLmMgYi9leHQva2F0ZS9nc3RrYXRlZGVjLmMKaW5kZXggODc0ODQ5OC4uYzYxZDUxNCAxMDA2NDQKLS0tIGEvZXh0L2thdGUvZ3N0a2F0ZWRlYy5jCisrKyBiL2V4dC9rYXRlL2dzdGthdGVkZWMuYwpAQCAtNjEsMTQgKzYxLDE0IEBACiAgKiA8cGFyYT4KICAqIFRoaXMgZXhwbGljaXRlbHkgZGVjb2RlcyBhIEthdGUgc3RyZWFtOgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPXRlc3Qub2dnICEgb2dnZGVtdXggISBrYXRlZGVjICEgZmFrZXNpbmsgc2lsZW50PVRSVUUKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249dGVzdC5vZ2cgISBvZ2dkZW11eCAhIGthdGVkZWMgISBmYWtlc2luayBzaWxlbnQ9VFJVRQogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIDwvcGFyYT4KICAqIDxwYXJhPgogICogVGhpcyB3aWxsIGF1dG9tYXRpY2FsbHkgZGV0ZWN0IGFuZCB1c2UgYW55IEthdGUgc3RyZWFtcyBtdWx0aXBsZXhlZAogICogaW4gYW4gT2dnIHN0cmVhbToKICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggcGxheWJpbiB1cmk9ZmlsZTovLy90bXAvdGVzdC5vZ2cKKyAqIGdzdC1sYXVuY2gtMS4wIHBsYXliaW4gdXJpPWZpbGU6Ly8vdG1wL3Rlc3Qub2dnCiAgKiA8L3Byb2dyYW1saXN0aW5nPgogICogPC9wYXJhPgogICogPC9yZWZzZWN0Mj4KZGlmZiAtLWdpdCBhL2V4dC9rYXRlL2dzdGthdGVlbmMuYyBiL2V4dC9rYXRlL2dzdGthdGVlbmMuYwppbmRleCA1OTU4NjhmLi5kODg5MTRhIDEwMDY0NAotLS0gYS9leHQva2F0ZS9nc3RrYXRlZW5jLmMKKysrIGIvZXh0L2thdGUvZ3N0a2F0ZWVuYy5jCkBAIC02Miw3ICs2Miw3IEBACiAgKiA8cGFyYT4KICAqIFRoaXMgZW5jb2RlcyBhIERWRCBTUFUgdHJhY2sgdG8gYSBLYXRlIHN0cmVhbToKICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggZHZkcmVhZHNyYyAhIGR2ZGRlbXV4ICEgZHZkc3VicGFyc2UgISBrYXRlZW5jIGNhdGVnb3J5PXNwdS1zdWJ0aXRsZXMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj10ZXN0Lm9nZworICogZ3N0LWxhdW5jaC0xLjAgZHZkcmVhZHNyYyAhIGR2ZGRlbXV4ICEgZHZkc3VicGFyc2UgISBrYXRlZW5jIGNhdGVnb3J5PXNwdS1zdWJ0aXRsZXMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj10ZXN0Lm9nZwogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIDwvcGFyYT4KICAqIDwvcmVmc2VjdDI+CkBAIC03OTEsMTIgKzc5MSw5IEBACiAgIGtiaXRtYXAgPSAoa2F0ZV9iaXRtYXAgKikgZ19tYWxsb2MgKHNpemVvZiAoa2F0ZV9iaXRtYXApKTsKICAga3BhbGV0dGUgPSAoa2F0ZV9wYWxldHRlICopIGdfbWFsbG9jIChzaXplb2YgKGthdGVfcGFsZXR0ZSkpOwogICBpZiAoIWtyZWdpb24gfHwgIWtwYWxldHRlIHx8ICFrYml0bWFwKSB7Ci0gICAgaWYgKGtyZWdpb24pCi0gICAgICBnX2ZyZWUgKGtyZWdpb24pOwotICAgIGlmIChrYml0bWFwKQotICAgICAgZ19mcmVlIChrYml0bWFwKTsKLSAgICBpZiAoa3BhbGV0dGUpCi0gICAgICBnX2ZyZWUgKGtwYWxldHRlKTsKKyAgICBnX2ZyZWUgKGtyZWdpb24pOworICAgIGdfZnJlZSAoa2JpdG1hcCk7CisgICAgZ19mcmVlIChrcGFsZXR0ZSk7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGtlLCBTVFJFQU0sIEVOQ09ERSwgKE5VTEwpLCAoIk91dCBvZiBtZW1vcnkiKSk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CmRpZmYgLS1naXQgYS9leHQva2F0ZS9nc3RrYXRlcGFyc2UuYyBiL2V4dC9rYXRlL2dzdGthdGVwYXJzZS5jCmluZGV4IDg2NjU3YjguLjk5ZWEwYzggMTAwNjQ0Ci0tLSBhL2V4dC9rYXRlL2dzdGthdGVwYXJzZS5jCisrKyBiL2V4dC9rYXRlL2dzdGthdGVwYXJzZS5jCkBAIC00MSwxNCArNDEsMTQgQEAKICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiA8cGFyYT4KICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj1rYXRlLm9nZyAhIG9nZ2RlbXV4ICEga2F0ZXBhcnNlICEgZmFrZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249a2F0ZS5vZ2cgISBvZ2dkZW11eCAhIGthdGVwYXJzZSAhIGZha2VzaW5rCiAgKiA8L3Byb2dyYW1saXN0aW5nPgogICogVGhpcyBwaXBlbGluZSBzaG93cyB0aGF0IHRoZSBzdHJlYW1oZWFkZXIgaXMgc2V0IGluIHRoZSBjYXBzLCBhbmQgdGhhdCBlYWNoCiAgKiBidWZmZXIgaGFzIHRoZSB0aW1lc3RhbXAsIGR1cmF0aW9uLCBvZmZzZXQsIGFuZCBvZmZzZXRfZW5kIHNldC4KICAqIDwvcGFyYT4KICAqIDxwYXJhPgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPWthdGUub2dnICEgb2dnZGVtdXggISBrYXRlcGFyc2UgXAorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1rYXRlLm9nZyAhIG9nZ2RlbXV4ICEga2F0ZXBhcnNlIFwKICAqICAgICAgICAgICAgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1rYXRlLXJlbXV4ZWQub2dnCiAgKiA8L3Byb2dyYW1saXN0aW5nPgogICogVGhpcyBwaXBlbGluZSBzaG93cyByZW11eGluZy4ga2F0ZS1yZW11eGVkLm9nZyBtaWdodCBub3QgYmUgZXhhY3RseSB0aGUgc2FtZQpkaWZmIC0tZ2l0IGEvZXh0L2thdGUvZ3N0a2F0ZXNwdS5jIGIvZXh0L2thdGUvZ3N0a2F0ZXNwdS5jCmluZGV4IGJkZjBkZDguLmI3ODM4YzEgMTAwNjQ0Ci0tLSBhL2V4dC9rYXRlL2dzdGthdGVzcHUuYworKysgYi9leHQva2F0ZS9nc3RrYXRlc3B1LmMKQEAgLTkxMSw3ICs5MTEsNiBAQAogCiBlcnJvcjoKICAga2F0ZV90cmFja2VyX2NsZWFyICgma2luKTsKLSAgaWYgKGJ5dGVzKQotICAgIGdfZnJlZSAoYnl0ZXMpOworICBnX2ZyZWUgKGJ5dGVzKTsKICAgcmV0dXJuIE5VTEw7CiB9CmRpZmYgLS1naXQgYS9leHQva2F0ZS9nc3RrYXRldGFnLmMgYi9leHQva2F0ZS9nc3RrYXRldGFnLmMKaW5kZXggYjdkODhlZC4uZTI4MDkxNyAxMDA2NDQKLS0tIGEvZXh0L2thdGUvZ3N0a2F0ZXRhZy5jCisrKyBiL2V4dC9rYXRlL2dzdGthdGV0YWcuYwpAQCAtNDQsMjAgKzQ0LDIwIEBACiAgKiA8L3BhcmE+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogPHBhcmE+Ci0gKiBUaGlzIGVsZW1lbnQgaXMgb25seSB1c2VmdWwgd2l0aCBnc3QtbGF1bmNoIGZvciBtb2RpZnlpbmcgdGhlIGxhbmd1YWdlCisgKiBUaGlzIGVsZW1lbnQgaXMgb25seSB1c2VmdWwgd2l0aCBnc3QtbGF1bmNoLTEuMCBmb3IgbW9kaWZ5aW5nIHRoZSBsYW5ndWFnZQogICogYW5kL29yIGNhdGVnb3J5ICh3aGljaCBhcmUgcHJvcGVydGllcyBvZiB0aGUgc3RyZWFtIGxvY2F0ZWQgaW4gdGhlIGthdGUKICAqIGJlZ2lubmluZyBvZiBzdHJlYW0gaGVhZGVyKSwgYmVjYXVzZSBpdCBkb2VzIG5vdCBzdXBwb3J0IHNldHRpbmcgdGhlIHRhZ3MKICAqIG9uIGEgI0dzdFRhZ1NldHRlciBpbnRlcmZhY2UuIENvbmNlcHR1YWxseSwgdGhlIGVsZW1lbnQgd2lsbCB1c3VhbGx5IGJlCiAgKiB1c2VkIGxpa2U6CiAgKiA8cHJvZ3JhbWxpc3Rpbmc+Ci0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249Zm9vLm9nZyAhIG9nZ2RlbXV4ICEga2F0ZXRhZyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPWJhci5vZ2cKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249Zm9vLm9nZyAhIG9nZ2RlbXV4ICEga2F0ZXRhZyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPWJhci5vZ2cKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiA8L3BhcmE+CiAgKiA8cGFyYT4KICAqIFRoaXMgcGlwZWxpbmUgd2lsbCBzZXQgdGhlIGxhbmd1YWdlIGFuZCBjYXRlZ29yeSBvZiB0aGUgc3RyZWFtIHRvIHRoZQogICogZ2l2ZW4gdmFsdWVzOgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZvby5vZ2cgISBvZ2dkZW11eCAhIGthdGV0YWcgbGFuZ3VhZ2U9cHRfQlIgY2F0ZWdvcnk9c3VidGl0bGVzICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249YmFyLm9nZworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1mb28ub2dnICEgb2dnZGVtdXggISBrYXRldGFnIGxhbmd1YWdlPXB0X0JSIGNhdGVnb3J5PXN1YnRpdGxlcyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPWJhci5vZ2cKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiA8L3BhcmE+CiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZXh0L2thdGUvZ3N0a2F0ZXV0aWwuYyBiL2V4dC9rYXRlL2dzdGthdGV1dGlsLmMKaW5kZXggOTM3NzdhYi4uY2YxYTJhZiAxMDA2NDQKLS0tIGEvZXh0L2thdGUvZ3N0a2F0ZXV0aWwuYworKysgYi9leHQva2F0ZS9nc3RrYXRldXRpbC5jCkBAIC0zNzEsMTEgKzM3MSw5IEBACiAgICAgICAgIH0KIAogICAgICAgICAvKiB1cGRhdGUgcHJvcGVydGllcyAqLwotICAgICAgICBpZiAoZGVjb2Rlci0+bGFuZ3VhZ2UpCi0gICAgICAgICAgZ19mcmVlIChkZWNvZGVyLT5sYW5ndWFnZSk7CisgICAgICAgIGdfZnJlZSAoZGVjb2Rlci0+bGFuZ3VhZ2UpOwogICAgICAgICBkZWNvZGVyLT5sYW5ndWFnZSA9IGdfc3RyZHVwIChkZWNvZGVyLT5rLmtpLT5sYW5ndWFnZSk7Ci0gICAgICAgIGlmIChkZWNvZGVyLT5jYXRlZ29yeSkKLSAgICAgICAgICBnX2ZyZWUgKGRlY29kZXItPmNhdGVnb3J5KTsKKyAgICAgICAgZ19mcmVlIChkZWNvZGVyLT5jYXRlZ29yeSk7CiAgICAgICAgIGRlY29kZXItPmNhdGVnb3J5ID0gZ19zdHJkdXAgKGRlY29kZXItPmsua2ktPmNhdGVnb3J5KTsKICAgICAgICAgZGVjb2Rlci0+b3JpZ2luYWxfY2FudmFzX3dpZHRoID0gZGVjb2Rlci0+ay5raS0+b3JpZ2luYWxfY2FudmFzX3dpZHRoOwogICAgICAgICBkZWNvZGVyLT5vcmlnaW5hbF9jYW52YXNfaGVpZ2h0ID0gZGVjb2Rlci0+ay5raS0+b3JpZ2luYWxfY2FudmFzX2hlaWdodDsKZGlmZiAtLWdpdCBhL2V4dC9sYWRzcGEvTWFrZWZpbGUuaW4gYi9leHQvbGFkc3BhL01ha2VmaWxlLmluCmluZGV4IGVhMTRiMWUuLjljNGYxZDUgMTAwNjQ0Ci0tLSBhL2V4dC9sYWRzcGEvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2xhZHNwYS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzksNiArMjc4LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTYsNiArMzE3LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjQsNyArMzI3LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQzLDggKzM0NSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjEsMTYgKzM2NCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTYsNiArNDAwLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIxLDYgKzQyNyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMiw2ICs1MzAsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM1LDggKzU0NCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Miw2ICs1NTksOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA5LDE2ICs2MTgsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzAsNiArNjgxLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4MCw2ICs2OTIsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODksNiArNzAyLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNiw3ICs3NDEsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9sYWRzcGEvZ3N0bGFkc3BhLmMgYi9leHQvbGFkc3BhL2dzdGxhZHNwYS5jCmluZGV4IDAyYmIxNzkuLmRmMDY2OTMgMTAwNjQ0Ci0tLSBhL2V4dC9sYWRzcGEvZ3N0bGFkc3BhLmMKKysrIGIvZXh0L2xhZHNwYS9nc3RsYWRzcGEuYwpAQCAtMzcsOSArMzcsOSBAQAogICogfFsKICAqIChwYWRzcCkgbGlzdHBsdWdpbnMKICAqIChwYWRzcCkgYW5hbHlzZXBsdWdpbiBjbXQuc28gYW1wX21vbm8KLSAqIGdzdC1sYXVuY2ggLWUgZmlsZXNyYyBsb2NhdGlvbj0iJG15ZmlsZSIgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgImF1ZGlvL3gtcmF3LGZvcm1hdD1TMTZMRSxyYXRlPTQ4MDAwLGNoYW5uZWxzPTEiICEgd2F2ZW5jICEgZmlsZXNpbmsgbG9jYXRpb249InRlc3Rpbi53YXYiCisgKiBnc3QtbGF1bmNoLTEuMCAtZSBmaWxlc3JjIGxvY2F0aW9uPSIkbXlmaWxlIiAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISAiYXVkaW8veC1yYXcsZm9ybWF0PVMxNkxFLHJhdGU9NDgwMDAsY2hhbm5lbHM9MSIgISB3YXZlbmMgISBmaWxlc2luayBsb2NhdGlvbj0idGVzdGluLndhdiIKICAqIChwYWRzcCkgYXBwbHlwbHVnaW4gdGVzdGluLndhdiB0ZXN0b3V0LndhdiBjbXQuc28gYW1wX21vbm8gMiAKLSAqIGdzdC1sYXVuY2ggcGxheWJpbiB1cmk9ZmlsZTovLyIkUFdEIi90ZXN0b3V0LndhdgorICogZ3N0LWxhdW5jaC0xLjAgcGxheWJpbiB1cmk9ZmlsZTovLyIkUFdEIi90ZXN0b3V0LndhdgogICogXXwgRGVjb2RlIGFueSBhdWRpbyBmaWxlIGludG8gd2F2IHdpdGggdGhlIGZvcm1hdCBleHBlY3RlZCBmb3IgdGhlIHNwZWNpZmljIGxhZHNwYSBwbHVnaW4gdG8gYmUgYXBwbGllZCwgYXBwbHkgdGhlIGxhZHNwYSBmaWx0ZXIgYW5kIHBsYXkgaXQuCiAgKiA8L3JlZnNlY3QyPgogICoKQEAgLTQ4LDcgKzQ4LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIExBRFNQQSBsaW5lIHdpdGggdGhpcyBwbHVnaW5zPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1dG9hdWRpb3NyYyAhIGxhZHNwYS1jbXQtc28tYW1wLW1vbm8gZ2Fpbj0yICEgbGFkc3BhLWNhcHMtc28tcGxhdGUgISBsYWRzcGEtdGFwLWVjaG8tc28tdGFwLXN0ZXJlby1lY2hvIGwtZGVsYXk9NTAwIHItaGFhcy1kZWxheT01MDAgISB0ZWUgbmFtZT1teVQgbXlULiAhIHF1ZXVlICEgYXV0b2F1ZGlvc2luayBteVQuICEgcXVldWUgISBhdWRpb2NvbnZlcnQgISBnb29tICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsgcGl4ZWwtYXNwZWN0LXJhdGlvPTMvNAorICogZ3N0LWxhdW5jaC0xLjAgYXV0b2F1ZGlvc3JjICEgbGFkc3BhLWNtdC1zby1hbXAtbW9ubyBnYWluPTIgISBsYWRzcGEtY2Fwcy1zby1wbGF0ZSAhIGxhZHNwYS10YXAtZWNoby1zby10YXAtc3RlcmVvLWVjaG8gbC1kZWxheT01MDAgci1oYWFzLWRlbGF5PTUwMCAhIHRlZSBuYW1lPW15VCBteVQuICEgcXVldWUgISBhdXRvYXVkaW9zaW5rIG15VC4gISBxdWV1ZSAhIGF1ZGlvY29udmVydCAhIGdvb20gISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luayBwaXhlbC1hc3BlY3QtcmF0aW89My80CiAgKiBdfCBHZXQgYXVkaW8gaW5wdXQsIGZpbHRlciBpdCB0aHJvdWdoIENBUFMgUGxhdGUgYW5kIFRBUCBTdGVyZW8gRWNobywgcGxheSBpdCBhbmQgc2hvdyBhIHZpc3VhbGl6YXRpb24gKHJlY29tbWVuZGVkIGhlYXJwaG9uZXMpLgogICogPC9yZWZzZWN0Mj4KICAqCkBAIC04Miw3ICs4Miw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBGaWx0ZXIvRWZmZWN0L0F1ZGlvL0xBRFNQQSBsaW5lIHdpdGggdGhpcyBwbHVnaW5zPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249IiRteWZpbGUiICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGxhZHNwYS1jYWxmLXNvLXJldmVyYiBkZWNheS10aW1lPTE1IGhpZ2gtZnJxLWRhbXA9MjAwMDAgcm9vbS1zaXplPTUgZGlmZnVzaW9uPTEgd2V0LWFtb3VudD0yIGRyeS1hbW91bnQ9MiBwcmUtZGVsYXk9NTAgYmFzcy1jdXQ9MjAwMDAgdHJlYmxlLWN1dD0yMDAwMCAhIGxhZHNwYS10YXAtZWNoby1zby10YXAtc3RlcmVvLWVjaG8gbC1kZWxheT01MDAgci1oYWFzLWRlbGF5PTUwMCAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249IiRteWZpbGUiICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGxhZHNwYS1jYWxmLXNvLXJldmVyYiBkZWNheS10aW1lPTE1IGhpZ2gtZnJxLWRhbXA9MjAwMDAgcm9vbS1zaXplPTUgZGlmZnVzaW9uPTEgd2V0LWFtb3VudD0yIGRyeS1hbW91bnQ9MiBwcmUtZGVsYXk9NTAgYmFzcy1jdXQ9MjAwMDAgdHJlYmxlLWN1dD0yMDAwMCAhIGxhZHNwYS10YXAtZWNoby1zby10YXAtc3RlcmVvLWVjaG8gbC1kZWxheT01MDAgci1oYWFzLWRlbGF5PTUwMCAhIGF1dG9hdWRpb3NpbmsKICAqIF18IERlY29kZSBhbnkgYXVkaW8gZmlsZSwgZmlsdGVyIGl0IHRocm91Z2ggQ2FsZiBSZXZlcmIgTEFEU1BBIHRoZW4gVEFQIFN0ZXJlbyBFY2hvLCBhbmQgcGxheSBpdC4KICAqIDwvcmVmc2VjdDI+CiAgKiA8L2xpc3RpdGVtPgpAQCAtOTAsMTkgKzkwLDE5IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBTb3VyY2UvQXVkaW8vTEFEU1BBIGxpbmUgd2l0aCB0aGlzIHBsdWdpbnM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggbGFkc3Bhc3JjLXNpbmUtc28tc2luZS1mY2FjIGZyZXF1ZW5jeT0yMjAgYW1wbGl0dWRlPTEwMCAhIGF1ZGlvY29udmVydCAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGxhZHNwYXNyYy1zaW5lLXNvLXNpbmUtZmNhYyBmcmVxdWVuY3k9MjIwIGFtcGxpdHVkZT0xMDAgISBhdWRpb2NvbnZlcnQgISBhdXRvYXVkaW9zaW5rCiAgKiBdfCBHZW5lcmF0ZSBhIHNpbmUgd2F2ZSB3aXRoIFNpbmUgT3NjaWxsYXRvciAoRnJlcTpjb250cm9sLCBBbXA6Y29udHJvbCkgYW5kIHBsYXkgaXQuCiAgKiA8L3JlZnNlY3QyPgogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgU291cmNlL0F1ZGlvL0xBRFNQQSBsaW5lIHdpdGggdGhpcyBwbHVnaW5zPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGxhZHNwYXNyYy1jYXBzLXNvLWNsaWNrIGJwbT0yNDAgdm9sdW1lPTEgISBhdXRvYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBsYWRzcGFzcmMtY2Fwcy1zby1jbGljayBicG09MjQwIHZvbHVtZT0xICEgYXV0b2F1ZGlvc2luawogICogXXwgR2VuZXJhdGUgY2xpY2tzIHdpdGggQ0FQUyBDbGljayAtIE1ldHJvbm9tZSBhdCAyNDAgYmVhdHMgcGVyIG1pbnV0ZSBhbmQgcGxheSBpdC4KICAqIDwvcmVmc2VjdDI+CiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBTb3VyY2UvQXVkaW8vTEFEU1BBIGxpbmUgd2l0aCB0aGlzIHBsdWdpbnM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggbGFkc3Bhc3JjLXJhbmRvbS0xNjYxLXNvLXJhbmRvbS1mY3NjLW9hICEgbGFkc3BhLWNtdC1zby1hbXAtbW9ubyBnYWluPTEuNSAhIGxhZHNwYS1jYXBzLXNvLXBsYXRlICEgdGVlIG5hbWU9bXlUIG15VC4gISBxdWV1ZSAhIGF1dG9hdWRpb3NpbmsgbXlULiAhIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEgd2F2ZXNjb3BlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgbGFkc3Bhc3JjLXJhbmRvbS0xNjYxLXNvLXJhbmRvbS1mY3NjLW9hICEgbGFkc3BhLWNtdC1zby1hbXAtbW9ubyBnYWluPTEuNSAhIGxhZHNwYS1jYXBzLXNvLXBsYXRlICEgdGVlIG5hbWU9bXlUIG15VC4gISBxdWV1ZSAhIGF1dG9hdWRpb3NpbmsgbXlULiAhIHF1ZXVlICEgYXVkaW9jb252ZXJ0ICEgd2F2ZXNjb3BlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgR2VuZXJhdGUgcmFuZG9tIHdhdmUsIGZpbHRlciBpdCB0cmhvdWdoIE1vbm8gQW1wbGlmaWVyIGFuZCBWZXJzYXRpbGUgUGxhdGUgUmV2ZXJiLCBhbmQgcGxheSwgd2hpbGUgc2hvd2luZywgaXQuCiAgKiA8L3JlZnNlY3QyPgogICogPC9saXN0aXRlbT4KQEAgLTExMCw3ICsxMTAsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgU2luay9BdWRpby9MQURTUEEgbGluZSB3aXRoIHRoaXMgcGx1Z2luczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBhdXRvYXVkaW9zcmMgISBsYWRzcGEtY210LXNvLWFtcC1tb25vIGdhaW49MiAhIGxhZHNwYS1jYXBzLXNvLXBsYXRlICEgbGFkc3BhLXRhcC1lY2hvLXNvLXRhcC1zdGVyZW8tZWNobyBsLWRlbGF5PTUwMCByLWhhYXMtZGVsYXk9NTAwICEgdGVlIG5hbWU9bXlUIG15VC4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgcXVldWUgISBsYWRzcGFzaW5rLWNtdC1zby1udWxsLWFpIG15VC4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgcXVldWUgISBnb29tICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsgcGl4ZWwtYXNwZWN0LXJhdGlvPTMvNAorICogZ3N0LWxhdW5jaC0xLjAgYXV0b2F1ZGlvc3JjICEgbGFkc3BhLWNtdC1zby1hbXAtbW9ubyBnYWluPTIgISBsYWRzcGEtY2Fwcy1zby1wbGF0ZSAhIGxhZHNwYS10YXAtZWNoby1zby10YXAtc3RlcmVvLWVjaG8gbC1kZWxheT01MDAgci1oYWFzLWRlbGF5PTUwMCAhIHRlZSBuYW1lPW15VCBteVQuICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIHF1ZXVlICEgbGFkc3Bhc2luay1jbXQtc28tbnVsbC1haSBteVQuICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIHF1ZXVlICEgZ29vbSAhIHZpZGVvY29udmVydCAhIHh2aW1hZ2VzaW5rIHBpeGVsLWFzcGVjdC1yYXRpbz0zLzQKICAqIF18IEdldCBhdWRpbyBpbnB1dCwgZmlsdGVyIGl0IHRyaG91Z2ggTW9ubyBBbXBsaWZpZXIsIENBUFMgUGxhdGUgTEFEU1BBIGFuZCBUQVAgU3RlcmVvIEVjaG8sIGV4cGxpY2l0aWx5IGFudWxhdGUgYXVkaW8gd2l0aCBOdWxsIChBdWRpbyBPdXRwdXQpLCBhbmQgcGxheSBhIHZpc3VhbGl6YXRpb24gKHJlY29tbWVuZGVkIGhlYXJwaG9uZXMpLgogICogPC9yZWZzZWN0Mj4KICAqIDwvbGlzdGl0ZW0+CmRpZmYgLS1naXQgYS9leHQvbGFkc3BhL2dzdGxhZHNwYWZpbHRlci5jIGIvZXh0L2xhZHNwYS9nc3RsYWRzcGFmaWx0ZXIuYwppbmRleCA2OWQwZTYzLi4yZDFlYTQ1IDEwMDY0NAotLS0gYS9leHQvbGFkc3BhL2dzdGxhZHNwYWZpbHRlci5jCisrKyBiL2V4dC9sYWRzcGEvZ3N0bGFkc3BhZmlsdGVyLmMKQEAgLTEwNSwyMCArMTA1LDE5IEBACiAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKICAgfQogCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGxhZHNwYV9kZWJ1ZywgInRyYW5zZm9ybWVkICUiIEdTVF9QVFJfRk9STUFULCByZXQpOworICBHU1RfREVCVUdfT0JKRUNUIChiYXNlLCAidHJhbnNmb3JtZWQgJSIgR1NUX1BUUl9GT1JNQVQsIHJldCk7CiAKICAgaWYgKGZpbHRlcikgewogICAgIEdzdENhcHMgKmludGVyc2VjdGlvbjsKIAotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGxhZHNwYV9kZWJ1ZywgIlVzaW5nIGZpbHRlciBjYXBzICUiIEdTVF9QVFJfRk9STUFULAotICAgICAgICBmaWx0ZXIpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhc2UsICJVc2luZyBmaWx0ZXIgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgZmlsdGVyKTsKIAogICAgIGludGVyc2VjdGlvbiA9CiAgICAgICAgIGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChmaWx0ZXIsIHJldCwgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKICAgICBnc3RfY2Fwc191bnJlZiAocmV0KTsKICAgICByZXQgPSBpbnRlcnNlY3Rpb247CiAKLSAgICBHU1RfREVCVUdfT0JKRUNUIChsYWRzcGFfZGVidWcsICJJbnRlcnNlY3Rpb24gJSIgR1NUX1BUUl9GT1JNQVQsIHJldCk7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZSwgIkludGVyc2VjdGlvbiAlIiBHU1RfUFRSX0ZPUk1BVCwgcmV0KTsKICAgfQogCiAgIGdzdF9jYXBzX3VucmVmIChzcmNjYXBzKTsKZGlmZiAtLWdpdCBhL2V4dC9saWJkZTI2NS9NYWtlZmlsZS5pbiBiL2V4dC9saWJkZTI2NS9NYWtlZmlsZS5pbgppbmRleCAzMjI5MjI1Li42NDA1YWJiIDEwMDY0NAotLS0gYS9leHQvbGliZGUyNjUvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2xpYmRlMjY1L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L2xpYmRlMjY1L2xpYmRlMjY1LWRlYy5jIGIvZXh0L2xpYmRlMjY1L2xpYmRlMjY1LWRlYy5jCmluZGV4IDdjYmEzN2EuLmUxMWYxMmMgMTAwNjQ0Ci0tLSBhL2V4dC9saWJkZTI2NS9saWJkZTI2NS1kZWMuYworKysgYi9leHQvbGliZGUyNjUvbGliZGUyNjUtZGVjLmMKQEAgLTQxLDU4ICs0MSw2IEBACiAKICNpbmNsdWRlICJsaWJkZTI2NS1kZWMuaCIKIAotI2lmICFHTElCX0NIRUNLX1ZFUlNJT04oMiwgMzYsIDApCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpZmRlZiBIQVZFX1VOSVNURF9ICi0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0jZW5kaWYKLSNpZmRlZiBHX09TX1dJTjMyCi0jaW5jbHVkZSA8d2luZG93cy5oPgotI2VuZGlmCi0jZGVmaW5lIGdfZ2V0X251bV9wcm9jZXNzb3JzIGdzdF9nX2dldF9udW1fcHJvY2Vzc29ycwotc3RhdGljIGd1aW50Ci1nc3RfZ19nZXRfbnVtX3Byb2Nlc3NvcnMgKHZvaWQpCi17Ci0gIGd1aW50IHRocmVhZHMgPSAwOwotCi0jaWYgZGVmaW5lZChfU0NfTlBST0NfT05MTikKLSAgdGhyZWFkcyA9IHN5c2NvbmYgKF9TQ19OUFJPQ19PTkxOKTsKLSNlbGlmIGRlZmluZWQoX1NDX05QUk9DRVNTT1JTX09OTE4pCi0gIHRocmVhZHMgPSBzeXNjb25mIChfU0NfTlBST0NFU1NPUlNfT05MTik7Ci0jZWxpZiBkZWZpbmVkKEdfT1NfV0lOMzIpCi0gIHsKLSAgICBTWVNURU1fSU5GTyBzeXNpbmZvOwotICAgIERXT1JEX1BUUiBwcm9jZXNzX2NwdXM7Ci0gICAgRFdPUkRfUFRSIHN5c3RlbV9jcHVzOwotCi0gICAgLyogVGhpcyAqbmV2ZXIqIGZhaWxzLCBidXQgZG9lc24ndCB0YWtlIENQVSBhZmZpbml0eSBpbnRvIGFjY291bnQgKi8KLSAgICBHZXRTeXN0ZW1JbmZvICgmc3lzaW5mbyk7Ci0gICAgdGhyZWFkcyA9IChpbnQpIHN5c2luZm8uZHdOdW1iZXJPZlByb2Nlc3NvcnM7Ci0KLSAgICAvKiBUaGlzICpjYW4qIGZhaWwsIGJ1dCBwcm9kdWNlcyBjb3JyZWN0IHJlc3VsdHMgaWYgYWZmaW5pdHkgbWFzayBpcyB1c2VkLAotICAgICAqIHVubGlrZSB0aGUgc2ltcGxlciBjb2RlIGFib3ZlLgotICAgICAqLwotICAgIGlmIChHZXRQcm9jZXNzQWZmaW5pdHlNYXNrIChHZXRDdXJyZW50UHJvY2VzcyAoKSwKLSAgICAgICAgICAgICZwcm9jZXNzX2NwdXMsICZzeXN0ZW1fY3B1cykpIHsKLSAgICAgIHVuc2lnbmVkIGludCBjb3VudDsKLQotICAgICAgZm9yIChjb3VudCA9IDA7IHByb2Nlc3NfY3B1cyAhPSAwOyBwcm9jZXNzX2NwdXMgPj49IDEpCi0gICAgICAgIGlmIChwcm9jZXNzX2NwdXMgJiAxKQotICAgICAgICAgIGNvdW50Kys7Ci0gICAgfQotICB9Ci0jZWxzZQotI3dhcm5pbmcgIkRvbid0IGtub3cgaG93IHRvIGdldCBudW1iZXIgb2YgQ1BVIGNvcmVzLCB3aWxsIHVzZSB0aGUgZGVmYXVsdCB0aHJlYWQgY291bnQiCi0gIHRocmVhZHMgPSBERUZBVUxUX1RIUkVBRF9DT1VOVDsKLSNlbmRpZgotCi0gIGlmICh0aHJlYWRzID4gMCkKLSAgICByZXR1cm4gdGhyZWFkczsKLQotICByZXR1cm4gMTsKLX0KLSNlbmRpZiAvKiAhR0xJQl9DSEVDS19WRVJTSU9OKDIsIDM2LCAwKSAqLwotCiAvKiB1c2UgdHdvIGRlY29kZXIgdGhyZWFkcyBpZiBubyBpbmZvcm1hdGlvbiBhYm91dAogICogYXZhaWxhYmxlIENQVSBjb3JlcyBjYW4gYmUgcmV0cmlldmVkICovCiAjZGVmaW5lIERFRkFVTFRfVEhSRUFEX0NPVU5UICAgICAgICAyCmRpZmYgLS1naXQgYS9leHQvbGlibW1zL01ha2VmaWxlLmluIGIvZXh0L2xpYm1tcy9NYWtlZmlsZS5pbgppbmRleCA3OTVhYmRlLi4yYTUzMzZjIDEwMDY0NAotLS0gYS9leHQvbGlibW1zL01ha2VmaWxlLmluCisrKyBiL2V4dC9saWJtbXMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvbGlibW1zL2dzdG1tcy5jIGIvZXh0L2xpYm1tcy9nc3RtbXMuYwppbmRleCAyNTkzOGM4Li41ZTNmZjM4IDEwMDY0NAotLS0gYS9leHQvbGlibW1zL2dzdG1tcy5jCisrKyBiL2V4dC9saWJtbXMvZ3N0bW1zLmMKQEAgLTYwOSw4ICs2MDksNyBAQAogICB9CiAKICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOwotICBpZiAoc3JjLT51cmlfbmFtZSkKLSAgICBnX2ZyZWUgKHNyYy0+dXJpX25hbWUpOworICBnX2ZyZWUgKHNyYy0+dXJpX25hbWUpOwogICBzcmMtPnVyaV9uYW1lID0gZml4ZWRfdXJpOwogICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKIApkaWZmIC0tZ2l0IGEvZXh0L2xpYnZpc3VhbC9NYWtlZmlsZS5pbiBiL2V4dC9saWJ2aXN1YWwvTWFrZWZpbGUuaW4KaW5kZXggOWU1OTI2NC4uYzg2ZjNhNCAxMDA2NDQKLS0tIGEvZXh0L2xpYnZpc3VhbC9NYWtlZmlsZS5pbgorKysgYi9leHQvbGlidmlzdWFsL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjcyLDYgKzI3MSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA5LDYgKzMxMCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE3LDcgKzMyMCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNiw4ICszMzgsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU0LDE2ICszNTcsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg5LDYgKzM5Myw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNCw2ICs0MjAsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTUsNiArNTIzLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyOCw4ICs1MzcsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDUsNiArNTUyLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMiwxNiArNjExLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjYzLDYgKzY3NCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzMsNiArNjg1LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgyLDYgKzY5NSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTksNyArNzM0LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvbGlidmlzdWFsL3Zpc3VhbC1nbC5jIGIvZXh0L2xpYnZpc3VhbC92aXN1YWwtZ2wuYwppbmRleCA4OGI0NDE5Li44NWM5MWUwIDEwMDY0NAotLS0gYS9leHQvbGlidmlzdWFsL3Zpc3VhbC1nbC5jCisrKyBiL2V4dC9saWJ2aXN1YWwvdmlzdWFsLWdsLmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBhdWRpb3Rlc3RzcmMgISBsaWJ2aXN1YWxfZ2xfbHZfZmxvd2VyICEgZ2xpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGF1ZGlvdGVzdHNyYyAhIGxpYnZpc3VhbF9nbF9sdl9mbG93ZXIgISBnbGltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2V4dC9sdjIvTWFrZWZpbGUuaW4gYi9leHQvbHYyL01ha2VmaWxlLmluCmluZGV4IDQyZWFlNDIuLjIwMDRlNWIgMTAwNjQ0Ci0tLSBhL2V4dC9sdjIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L2x2Mi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9taW1pYy9NYWtlZmlsZS5pbiBiL2V4dC9taW1pYy9NYWtlZmlsZS5pbgppbmRleCA3MmIzNDc5Li4xNDU0ODMxIDEwMDY0NAotLS0gYS9leHQvbWltaWMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L21pbWljL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L21vZHBsdWcvTWFrZWZpbGUuaW4gYi9leHQvbW9kcGx1Zy9NYWtlZmlsZS5pbgppbmRleCBmYzQwNjM0Li43ZTIwNTFhIDEwMDY0NAotLS0gYS9leHQvbW9kcGx1Zy9NYWtlZmlsZS5pbgorKysgYi9leHQvbW9kcGx1Zy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9tb2RwbHVnL2dzdG1vZHBsdWcuY2MgYi9leHQvbW9kcGx1Zy9nc3Rtb2RwbHVnLmNjCmluZGV4IDY4M2ZiYWEuLmZmMzY0MWQgMTAwNjQ0Ci0tLSBhL2V4dC9tb2RwbHVnL2dzdG1vZHBsdWcuY2MKKysrIGIvZXh0L21vZHBsdWcvZ3N0bW9kcGx1Zy5jYwpAQCAtOTEsNyArOTEsNyBAQAogI2RlZmluZSBERUZBVUxUX09WRVJTQU1QICAgICAgICAgVFJVRQogI2RlZmluZSBERUZBVUxUX05PSVNFX1JFRFVDVElPTiAgVFJVRQogCi0jZGVmaW5lIEZPUk1BVFMgInsgIkdTVF9BVURJT19ORSAoUzMyKSIsICJHU1RfQVVESU9fTkUgKFMxNikiLCBVOCB9IgorI2RlZmluZSBGT1JNQVRTICJ7ICIgR1NUX0FVRElPX05FIChTMzIpICIsICIgR1NUX0FVRElPX05FIChTMTYpICIsIFU4IH0iCiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBtb2RwbHVnX3NyY190ZW1wbGF0ZV9mYWN0b3J5ID0KIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKZGlmZiAtLWdpdCBhL2V4dC9tcGVnMmVuYy9NYWtlZmlsZS5pbiBiL2V4dC9tcGVnMmVuYy9NYWtlZmlsZS5pbgppbmRleCBmMzA0Nzc2Li5mZGY1YWEyIDEwMDY0NAotLS0gYS9leHQvbXBlZzJlbmMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L21wZWcyZW5jL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L21wZWcyZW5jL2dzdG1wZWcyZW5jLmNjIGIvZXh0L21wZWcyZW5jL2dzdG1wZWcyZW5jLmNjCmluZGV4IDllNjMxZTMuLjVjNjg2Y2MgMTAwNjQ0Ci0tLSBhL2V4dC9tcGVnMmVuYy9nc3RtcGVnMmVuYy5jYworKysgYi9leHQvbXBlZzJlbmMvZ3N0bXBlZzJlbmMuY2MKQEAgLTM0LDcgKzM0LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoLTAuMTAgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEwMDAgISBtcGVnMmVuYyAhIGZpbGVzaW5rIGxvY2F0aW9uPXZpZGVvdGVzdHNyYy5tMXYKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xMDAwICEgbXBlZzJlbmMgISBmaWxlc2luayBsb2NhdGlvbj12aWRlb3Rlc3RzcmMubTF2CiAgKiBdfCBUaGlzIGV4YW1wbGUgcGlwZWxpbmUgd2lsbCBlbmNvZGUgYSB0ZXN0IHZpZGVvIHNvdXJjZSB0byBhIGFuIE1QRUcxCiAgKiBlbGVtZW50YXJ5IHN0cmVhbSAod2l0aCBHZW5lcmljIE1QRUcxIHByb2ZpbGUpLgogICogPHBhcmE+CkBAIC00Nyw3ICs0Nyw3IEBACiAgKiBpbiB0aGUgZXhhbXBsZSBhYm92ZSkgYWxsb3cgbW9zdCBwYXJhbWV0ZXJzIHRvIGJlIGFkanVzdGVkLgogICogPC9wYXJhPgogICogfFsKLSAqIGdzdC1sYXVuY2gtMC4xMCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAwMCAhIHZpZGVvc2NhbGUgISBtcGVnMmVuYyBmb3JtYXQ9MSBub3JtPXAgISBmaWxlc2luayBsb2NhdGlvbj12aWRlb3Rlc3RzcmMubTF2CisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAwMCAhIHZpZGVvc2NhbGUgISBtcGVnMmVuYyBmb3JtYXQ9MSBub3JtPXAgISBmaWxlc2luayBsb2NhdGlvbj12aWRlb3Rlc3RzcmMubTF2CiAgKiBdfCBUaGlzIHdpbGwgcHJvZHVjZSBhbiBNUEVHMSBwcm9maWxlIHN0cmVhbSBhY2NvcmRpbmcgdG8gVkNEMi4wIHNwZWNpZmljYXRpb25zCiAgKiBmb3IgUEFMICNHc3RNcGVnMmVuYzpub3JtIChhcyB0aGUgaW1hZ2UgaGVpZ2h0IGlzIGRlcGVuZGVudCBvbiB2aWRlbyBub3JtKS4KICAqIDwvcmVmc2VjdDI+CkBAIC0yNTUsNyArMjU1LDcgQEAKICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7CiAKICAgc3RydWN0dXJlID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJ2aWRlby94LXJhdyIsCi0gICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgJ0k0MjAnLCBOVUxMKTsKKyAgICAgICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAiSTQyMCIsIE5VTEwpOwogCiAgIHN3aXRjaCAoZW5jLT5vcHRpb25zLT5ub3JtKSB7CiAgICAgY2FzZSAwOgpkaWZmIC0tZ2l0IGEvZXh0L21wZzEyMy9NYWtlZmlsZS5hbSBiL2V4dC9tcGcxMjMvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOTYyMDcuLjAwMDAwMDAKLS0tIGEvZXh0L21wZzEyMy9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdG1wZzEyMy5sYQotCi1saWJnc3RtcGcxMjNfbGFfU09VUkNFUyA9IGdzdG1wZzEyM2F1ZGlvZGVjLmMKLWxpYmdzdG1wZzEyM19sYV9DRkxBR1MgPSAtREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0JJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChNUEcxMjNfQ0ZMQUdTKQotbGliZ3N0bXBnMTIzX2xhX0xJQkFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTVBHMTIzX0xJQlMpCi1saWJnc3RtcGcxMjNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0bXBnMTIzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi0KLW5vaW5zdF9IRUFERVJTID0gZ3N0bXBnMTIzYXVkaW9kZWMuaApkaWZmIC0tZ2l0IGEvZXh0L21wZzEyMy9NYWtlZmlsZS5pbiBiL2V4dC9tcGcxMjMvTWFrZWZpbGUuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNDk0ZDguLjAwMDAwMDAKLS0tIGEvZXh0L21wZzEyMy9NYWtlZmlsZS5pbgorKysgL2Rldi9udWxsCkBAIC0xLDExMDYgKzAsMCBAQAotIyBNYWtlZmlsZS5pbiBnZW5lcmF0ZWQgYnkgYXV0b21ha2UgMS4xNSBmcm9tIE1ha2VmaWxlLmFtLgotIyBAY29uZmlndXJlX2lucHV0QAotCi0jIENvcHlyaWdodCAoQykgMTk5NC0yMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotCi0jIFRoaXMgTWFrZWZpbGUuaW4gaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgotIyBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAotIyB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0KLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWSwgdG8gdGhlIGV4dGVudCBwZXJtaXR0ZWQgYnkgbGF3OyB3aXRob3V0Ci0jIGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEKLSMgUEFSVElDVUxBUiBQVVJQT1NFLgotCi1AU0VUX01BS0VACi0KLQotVlBBVEggPSBAc3JjZGlyQAotYW1fX2lzX2dudV9tYWtlID0geyBcCi0gIGlmIHRlc3QgLXogJyQoTUFLRUxFVkVMKSc7IHRoZW4gXAotICAgIGZhbHNlOyBcCi0gIGVsaWYgdGVzdCAtbiAnJChNQUtFX0hPU1QpJzsgdGhlbiBcCi0gICAgdHJ1ZTsgXAotICBlbGlmIHRlc3QgLW4gJyQoTUFLRV9WRVJTSU9OKScgJiYgdGVzdCAtbiAnJChDVVJESVIpJzsgdGhlbiBcCi0gICAgdHJ1ZTsgXAotICBlbHNlIFwKLSAgICBmYWxzZTsgXAotICBmaTsgXAotfQotYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbiA9IFwKLSAgY2FzZSAkJHt0YXJnZXRfb3B0aW9uLX0gaW4gXAotICAgICAgPykgOzsgXAotICAgICAgKikgZWNobyAiYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbjogaW50ZXJuYWwgZXJyb3I6IGludmFsaWQiIFwKLSAgICAgICAgICAgICAgInRhcmdldCBvcHRpb24gJyQke3RhcmdldF9vcHRpb24tfScgc3BlY2lmaWVkIiA+JjI7IFwKLSAgICAgICAgIGV4aXQgMTs7IFwKLSAgZXNhYzsgXAotICBoYXNfb3B0PW5vOyBcCi0gIHNhbmVfbWFrZWZsYWdzPSQkTUFLRUZMQUdTOyBcCi0gIGlmICQoYW1fX2lzX2dudV9tYWtlKTsgdGhlbiBcCi0gICAgc2FuZV9tYWtlZmxhZ3M9JCRNRkxBR1M7IFwKLSAgZWxzZSBcCi0gICAgY2FzZSAkJE1BS0VGTEFHUyBpbiBcCi0gICAgICAqXFxbXCBcCV0qKSBcCi0gICAgICAgIGJzPVxcOyBcCi0gICAgICAgIHNhbmVfbWFrZWZsYWdzPWBwcmludGYgJyVzXG4nICIkJE1BS0VGTEFHUyIgXAotICAgICAgICAgIHwgc2VkICJzLyQkYnMkJGJzWyQkYnMgJCRicwldKi8vZyJgOzsgXAotICAgIGVzYWM7IFwKLSAgZmk7IFwKLSAgc2tpcF9uZXh0PW5vOyBcCi0gIHN0cmlwX3RyYWlsb3B0ICgpIFwKLSAgeyBcCi0gICAgZmxnPWBwcmludGYgJyVzXG4nICIkJGZsZyIgfCBzZWQgInMvJCQxLiokJC8vImA7IFwKLSAgfTsgXAotICBmb3IgZmxnIGluICQkc2FuZV9tYWtlZmxhZ3M7IGRvIFwKLSAgICB0ZXN0ICQkc2tpcF9uZXh0ID0geWVzICYmIHsgc2tpcF9uZXh0PW5vOyBjb250aW51ZTsgfTsgXAotICAgIGNhc2UgJCRmbGcgaW4gXAotICAgICAgKj0qfC0tKikgY29udGludWU7OyBcCi0gICAgICAgIC0qSSkgc3RyaXBfdHJhaWxvcHQgJ0knOyBza2lwX25leHQ9eWVzOzsgXAotICAgICAgLSpJPyopIHN0cmlwX3RyYWlsb3B0ICdJJzs7IFwKLSAgICAgICAgLSpPKSBzdHJpcF90cmFpbG9wdCAnTyc7IHNraXBfbmV4dD15ZXM7OyBcCi0gICAgICAtKk8/Kikgc3RyaXBfdHJhaWxvcHQgJ08nOzsgXAotICAgICAgICAtKmwpIHN0cmlwX3RyYWlsb3B0ICdsJzsgc2tpcF9uZXh0PXllczs7IFwKLSAgICAgIC0qbD8qKSBzdHJpcF90cmFpbG9wdCAnbCc7OyBcCi0gICAgICAtW2RFRG1dKSBza2lwX25leHQ9eWVzOzsgXAotICAgICAgLVtKVF0pIHNraXBfbmV4dD15ZXM7OyBcCi0gICAgZXNhYzsgXAotICAgIGNhc2UgJCRmbGcgaW4gXAotICAgICAgKiQkdGFyZ2V0X29wdGlvbiopIGhhc19vcHQ9eWVzOyBicmVhazs7IFwKLSAgICBlc2FjOyBcCi0gIGRvbmU7IFwKLSAgdGVzdCAkJGhhc19vcHQgPSB5ZXMKLWFtX19tYWtlX2RyeXJ1biA9ICh0YXJnZXRfb3B0aW9uPW47ICQoYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbikpCi1hbV9fbWFrZV9rZWVwZ29pbmcgPSAodGFyZ2V0X29wdGlvbj1rOyAkKGFtX19tYWtlX3J1bm5pbmdfd2l0aF9vcHRpb24pKQotcGtnZGF0YWRpciA9ICQoZGF0YWRpcikvQFBBQ0tBR0VACi1wa2dpbmNsdWRlZGlyID0gJChpbmNsdWRlZGlyKS9AUEFDS0FHRUAKLXBrZ2xpYmRpciA9ICQobGliZGlyKS9AUEFDS0FHRUAKLXBrZ2xpYmV4ZWNkaXIgPSAkKGxpYmV4ZWNkaXIpL0BQQUNLQUdFQAotYW1fX2NkID0gQ0RQQVRIPSIkJHtaU0hfVkVSU0lPTisufSQoUEFUSF9TRVBBUkFUT1IpIiAmJiBjZAotaW5zdGFsbF9zaF9EQVRBID0gJChpbnN0YWxsX3NoKSAtYyAtbSA2NDQKLWluc3RhbGxfc2hfUFJPR1JBTSA9ICQoaW5zdGFsbF9zaCkgLWMKLWluc3RhbGxfc2hfU0NSSVBUID0gJChpbnN0YWxsX3NoKSAtYwotSU5TVEFMTF9IRUFERVIgPSAkKElOU1RBTExfREFUQSkKLXRyYW5zZm9ybSA9ICQocHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSkKLU5PUk1BTF9JTlNUQUxMID0gOgotUFJFX0lOU1RBTEwgPSA6Ci1QT1NUX0lOU1RBTEwgPSA6Ci1OT1JNQUxfVU5JTlNUQUxMID0gOgotUFJFX1VOSU5TVEFMTCA9IDoKLVBPU1RfVU5JTlNUQUxMID0gOgotYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKLWhvc3RfdHJpcGxldCA9IEBob3N0QAotdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotc3ViZGlyID0gZXh0L21wZzEyMwotQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAotYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYXV0by1hbHQubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWNvbXBpbGVyLWZsYWcubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWxpYnRvb2wubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLXZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2F4X2NyZWF0ZV9zdGRpbnRfaC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXhfcHRocmVhZC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWFyY2gubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1hcmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtY2hlY2subTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1kZWZhdWx0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZG93aGlsZS5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWVycm9yLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZmVhdHVyZS5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWdldHRleHQubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1nbGliMi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LXBsYXRmb3JtLm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtcGx1Z2luLWRvY3MubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1wbHVnaW5kaXIubTQgXAotCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCi1hbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAotCSQoQUNMT0NBTF9NNCkKLURJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKLQkkKGFtX19ESVNUX0NPTU1PTikKLW1raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCi1DT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCi1DT05GSUdfQ0xFQU5fRklMRVMgPQotQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KLWFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwotYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKLSAgICAkKHNyY2RpcikvKikgZj1gZWNobyAiJCRwIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAotICAgICopIGY9JCRwOzsgXAotICBlc2FjOwotYW1fX3N0cmlwX2RpciA9IGY9YGVjaG8gJCRwIHwgc2VkIC1lICdzfF4uKi98fCdgOwotYW1fX2luc3RhbGxfbWF4ID0gNDAKLWFtX19ub2Jhc2Vfc3RyaXBfc2V0dXAgPSBcCi0gIHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2AKLWFtX19ub2Jhc2Vfc3RyaXAgPSBcCi0gIGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwIjsgZG9uZSB8IHNlZCAtZSAic3wkJHNyY2RpcnN0cmlwL3x8IgotYW1fX25vYmFzZV9saXN0ID0gJChhbV9fbm9iYXNlX3N0cmlwX3NldHVwKTsgXAotICBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCAkJHAiOyBkb25lIHwgXAotICBzZWQgInN8ICQkc3JjZGlyc3RyaXAvfCB8OyInIC8gLipcLy8hcy8gLiovIC4vOyBzLFwoIC4qXCkvW14vXSokJCxcMSwnIHwgXAotICAkKEFXSykgJ0JFR0lOIHsgZmlsZXNbIi4iXSA9ICIiIH0geyBmaWxlc1skJDJdID0gZmlsZXNbJCQyXSAiICIgJCQxOyBcCi0gICAgaWYgKCsrblskJDJdID09ICQoYW1fX2luc3RhbGxfbWF4KSkgXAotICAgICAgeyBwcmludCAkJDIsIGZpbGVzWyQkMl07IG5bJCQyXSA9IDA7IGZpbGVzWyQkMl0gPSAiIiB9IH0gXAotICAgIEVORCB7IGZvciAoZGlyIGluIGZpbGVzKSBwcmludCBkaXIsIGZpbGVzW2Rpcl0gfScKLWFtX19iYXNlX2xpc3QgPSBcCi0gIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCi0gIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKLWFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKLSAgdGVzdCAteiAiJCRmaWxlcyIgXAotICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAotICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKLSAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKLSAgfQotYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCi1MVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQotYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdG1wZzEyM19sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0bXBnMTIzX2xhX09CSkVDVFMgPSBsaWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMubG8KLWxpYmdzdG1wZzEyM19sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RtcGcxMjNfbGFfT0JKRUNUUykKLUFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKLWFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCi1hbV9fdl9sdF8wID0gLS1zaWxlbnQKLWFtX192X2x0XzEgPSAKLWxpYmdzdG1wZzEyM19sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKGxpYmdzdG1wZzEyM19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCi0JJChDQ0xEKSAkKGxpYmdzdG1wZzEyM19sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChsaWJnc3RtcGcxMjNfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAotQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKLWFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQotYW1fX3ZfUF8wID0gZmFsc2UKLWFtX192X1BfMSA9IDoKLUFNX1ZfR0VOID0gJChhbV9fdl9HRU5fQEFNX1ZAKQotYW1fX3ZfR0VOXyA9ICQoYW1fX3ZfR0VOX0BBTV9ERUZBVUxUX1ZAKQotYW1fX3ZfR0VOXzAgPSBAZWNobyAiICBHRU4gICAgICIgJEA7Ci1hbV9fdl9HRU5fMSA9IAotQU1fVl9hdCA9ICQoYW1fX3ZfYXRfQEFNX1ZAKQotYW1fX3ZfYXRfID0gJChhbV9fdl9hdF9AQU1fREVGQVVMVF9WQCkKLWFtX192X2F0XzAgPSBACi1hbV9fdl9hdF8xID0gCi1ERUZBVUxUX0lOQ0xVREVTID0gLUkuQGFtX19pc3JjQCAtSSQodG9wX2J1aWxkZGlyKQotZGVwY29tcCA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvZGVwY29tcAotYW1fX2RlcGZpbGVzX21heWJlID0gZGVwZmlsZXMKLWFtX19tdiA9IG12IC1mCi1DT01QSUxFID0gJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpIFwKLQkkKENQUEZMQUdTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpCi1MVENPTVBJTEUgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKLQkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSBcCi0JJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSBcCi0JJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQotQU1fVl9DQyA9ICQoYW1fX3ZfQ0NfQEFNX1ZAKQotYW1fX3ZfQ0NfID0gJChhbV9fdl9DQ19AQU1fREVGQVVMVF9WQCkKLWFtX192X0NDXzAgPSBAZWNobyAiICBDQyAgICAgICIgJEA7Ci1hbV9fdl9DQ18xID0gCi1DQ0xEID0gJChDQykKLUxJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKLQkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpIFwKLQkkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKLUFNX1ZfQ0NMRCA9ICQoYW1fX3ZfQ0NMRF9AQU1fVkApCi1hbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKLWFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKLWFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQobGliZ3N0bXBnMTIzX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdG1wZzEyM19sYV9TT1VSQ0VTKQotYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCi0gIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAotICAgIG58bm98Tk8pIGZhbHNlOzsgXAotICAgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCi0gIGVzYWMKLUhFQURFUlMgPSAkKG5vaW5zdF9IRUFERVJTKQotYW1fX3RhZ2dlZF9maWxlcyA9ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKFRBR1NfRklMRVMpICQoTElTUCkKLSMgUmVhZCBhIGxpc3Qgb2YgbmV3bGluZS1zZXBhcmF0ZWQgc3RyaW5ncyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCwKLSMgYW5kIHByaW50IGVhY2ggb2YgdGhlbSBvbmNlLCB3aXRob3V0IGR1cGxpY2F0ZXMuICBJbnB1dCBvcmRlciBpcwotIyAqbm90KiBwcmVzZXJ2ZWQuCi1hbV9fdW5pcXVpZnlfaW5wdXQgPSAkKEFXSykgJ1wKLSAgQkVHSU4geyBub25lbXB0eSA9IDA7IH0gXAotICB7IGl0ZW1zWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAotICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGl0ZW1zKSBwcmludCBpOyB9OyB9IFwKLScKLSMgTWFrZSBzdXJlIHRoZSBsaXN0IG9mIHNvdXJjZXMgaXMgdW5pcXVlLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSwKLSMgZS5nLiwgdGhlIHNhbWUgc291cmNlIGZpbGUgbWlnaHQgYmUgc2hhcmVkIGFtb25nIF9TT1VSQ0VTIHZhcmlhYmxlcwotIyBmb3IgZGlmZmVyZW50IHByb2dyYW1zL2xpYnJhcmllcy4KLWFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMgPSBcCi0gIGxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCi0gIHVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCi0gICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCi0gIGRvbmUgfCAkKGFtX191bmlxdWlmeV9pbnB1dClgCi1FVEFHUyA9IGV0YWdzCi1DVEFHUyA9IGN0YWdzCi1hbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3Bfc3JjZGlyKS9kZXBjb21wCi1ESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQotQUNMT0NBTCA9IEBBQ0xPQ0FMQAotQUNMT0NBTF9BTUZMQUdTID0gQEFDTE9DQUxfQU1GTEFHU0AKLUFDTUVOQ19DRkxBR1MgPSBAQUNNRU5DX0NGTEFHU0AKLUFDTU1QM0RFQ19DRkxBR1MgPSBAQUNNTVAzREVDX0NGTEFHU0AKLUFNVEFSID0gQEFNVEFSQAotQU1fREVGQVVMVF9WRVJCT1NJVFkgPSBAQU1fREVGQVVMVF9WRVJCT1NJVFlACi1BUEVYU0lOS19DRkxBR1MgPSBAQVBFWFNJTktfQ0ZMQUdTQAotQVBFWFNJTktfTElCUyA9IEBBUEVYU0lOS19MSUJTQAotQVIgPSBAQVJACi1BUyA9IEBBU0AKLUFTU1JFTkRFUl9DRkxBR1MgPSBAQVNTUkVOREVSX0NGTEFHU0AKLUFTU1JFTkRFUl9MSUJTID0gQEFTU1JFTkRFUl9MSUJTQAotQVVUT0NPTkYgPSBAQVVUT0NPTkZACi1BVVRPSEVBREVSID0gQEFVVE9IRUFERVJACi1BVVRPTUFLRSA9IEBBVVRPTUFLRUAKLUFXSyA9IEBBV0tACi1CTFVFWjVfQ0ZMQUdTID0gQEJMVUVaNV9DRkxBR1NACi1CTFVFWjVfTElCUyA9IEBCTFVFWjVfTElCU0AKLUJTMkJfQ0ZMQUdTID0gQEJTMkJfQ0ZMQUdTQAotQlMyQl9MSUJTID0gQEJTMkJfTElCU0AKLUJaMl9MSUJTID0gQEJaMl9MSUJTQAotQ0MgPSBAQ0NACi1DQ0FTRkxBR1MgPSBAQ0NBU0ZMQUdTQAotQ0NERVBNT0RFID0gQENDREVQTU9ERUAKLUNGTEFHUyA9IEBDRkxBR1NACi1DSFJPTUFQUklOVF9DRkxBR1MgPSBAQ0hST01BUFJJTlRfQ0ZMQUdTQAotQ0hST01BUFJJTlRfTElCUyA9IEBDSFJPTUFQUklOVF9MSUJTQAotQ0xVVFRFUl9DRkxBR1MgPSBAQ0xVVFRFUl9DRkxBR1NACi1DTFVUVEVSX0dMWF9DRkxBR1MgPSBAQ0xVVFRFUl9HTFhfQ0ZMQUdTQAotQ0xVVFRFUl9HTFhfTElCUyA9IEBDTFVUVEVSX0dMWF9MSUJTQAotQ0xVVFRFUl9MSUJTID0gQENMVVRURVJfTElCU0AKLUNMVVRURVJfWDExX0NGTEFHUyA9IEBDTFVUVEVSX1gxMV9DRkxBR1NACi1DTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACi1DUFAgPSBAQ1BQQAotQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACi1DVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKLUNVUkxfTElCUyA9IEBDVVJMX0xJQlNACi1DWFggPSBAQ1hYQAotQ1hYQ1BQID0gQENYWENQUEAKLUNYWERFUE1PREUgPSBAQ1hYREVQTU9ERUAKLUNYWEZMQUdTID0gQENYWEZMQUdTQAotQ1lHUEFUSF9XID0gQENZR1BBVEhfV0AKLURBQUxBX0NGTEFHUyA9IEBEQUFMQV9DRkxBR1NACi1EQUFMQV9MSUJTID0gQERBQUxBX0xJQlNACi1EQ0NQX0xJQlMgPSBARENDUF9MSUJTQAotREVDS0xJTktfQ1hYRkxBR1MgPSBAREVDS0xJTktfQ1hYRkxBR1NACi1ERUNLTElOS19MSUJTID0gQERFQ0tMSU5LX0xJQlNACi1ERUZBVUxUX0FVRElPU0lOSyA9IEBERUZBVUxUX0FVRElPU0lOS0AKLURFRkFVTFRfQVVESU9TUkMgPSBAREVGQVVMVF9BVURJT1NSQ0AKLURFRkFVTFRfVklERU9TSU5LID0gQERFRkFVTFRfVklERU9TSU5LQAotREVGQVVMVF9WSURFT1NSQyA9IEBERUZBVUxUX1ZJREVPU1JDQAotREVGQVVMVF9WSVNVQUxJWkVSID0gQERFRkFVTFRfVklTVUFMSVpFUkAKLURFRlMgPSBAREVGU0AKLURFUERJUiA9IEBERVBESVJACi1ERVBSRUNBVEVEX0NGTEFHUyA9IEBERVBSRUNBVEVEX0NGTEFHU0AKLURJUkVDVDNEX0xJQlMgPSBARElSRUNUM0RfTElCU0AKLURJUkVDVEZCX0NGTEFHUyA9IEBESVJFQ1RGQl9DRkxBR1NACi1ESVJFQ1RGQl9MSUJTID0gQERJUkVDVEZCX0xJQlNACi1ESVJFQ1RTT1VORF9MSUJTID0gQERJUkVDVFNPVU5EX0xJQlNACi1ESVJFQ1RYX0NGTEFHUyA9IEBESVJFQ1RYX0NGTEFHU0AKLURJUkVDVFhfTERGTEFHUyA9IEBESVJFQ1RYX0xERkxBR1NACi1ETExUT09MID0gQERMTFRPT0xACi1EU1lNVVRJTCA9IEBEU1lNVVRJTEAKLURUTFNfQ0ZMQUdTID0gQERUTFNfQ0ZMQUdTQAotRFRMU19MSUJTID0gQERUTFNfTElCU0AKLURUU19MSUJTID0gQERUU19MSUJTQAotRFVNUEJJTiA9IEBEVU1QQklOQAotRFZETkFWX0NGTEFHUyA9IEBEVkROQVZfQ0ZMQUdTQAotRFZETkFWX0xJQlMgPSBARFZETkFWX0xJQlNACi1FQ0hPX0MgPSBARUNIT19DQAotRUNIT19OID0gQEVDSE9fTkAKLUVDSE9fVCA9IEBFQ0hPX1RACi1FR1JFUCA9IEBFR1JFUEAKLUVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACi1FUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKLUVSUk9SX09CSkNGTEFHUyA9IEBFUlJPUl9PQkpDRkxBR1NACi1FWEVFWFQgPSBARVhFRVhUQAotRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACi1FWElGX0xJQlMgPSBARVhJRl9MSUJTQAotRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKLUZBQURfTElCUyA9IEBGQUFEX0xJQlNACi1GRkxBR1MgPSBARkZMQUdTQAotRkdSRVAgPSBARkdSRVBACi1GTElURV9DRkxBR1MgPSBARkxJVEVfQ0ZMQUdTQAotRkxJVEVfTElCUyA9IEBGTElURV9MSUJTQAotRkxVSURTWU5USF9DRkxBR1MgPSBARkxVSURTWU5USF9DRkxBR1NACi1GTFVJRFNZTlRIX0xJQlMgPSBARkxVSURTWU5USF9MSUJTQAotR0NPViA9IEBHQ09WQAotR0NPVl9DRkxBR1MgPSBAR0NPVl9DRkxBR1NACi1HQ09WX0xJQlMgPSBAR0NPVl9MSUJTQAotR0RCVVNfQ09ERUdFTiA9IEBHREJVU19DT0RFR0VOQAotR0VUVEVYVF9NQUNST19WRVJTSU9OID0gQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAKLUdFVFRFWFRfUEFDS0FHRSA9IEBHRVRURVhUX1BBQ0tBR0VACi1HSU9fQ0ZMQUdTID0gQEdJT19DRkxBR1NACi1HSU9fTERGTEFHUyA9IEBHSU9fTERGTEFHU0AKLUdJT19MSUJTID0gQEdJT19MSUJTQAotR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKLUdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKLUdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACi1HTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKLUdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACi1HTElCX0xJQlMgPSBAR0xJQl9MSUJTQAotR0xJQl9NS0VOVU1TID0gQEdMSUJfTUtFTlVNU0AKLUdMSUJfUFJFRklYID0gQEdMSUJfUFJFRklYQAotR0xJQl9SRVEgPSBAR0xJQl9SRVFACi1HTF9DRkxBR1MgPSBAR0xfQ0ZMQUdTQAotR0xfTElCUyA9IEBHTF9MSUJTQAotR0xfT0JKQ0ZMQUdTID0gQEdMX09CSkNGTEFHU0AKLUdNRV9MSUJTID0gQEdNRV9MSUJTQAotR01PRFVMRV9FWFBPUlRfQ0ZMQUdTID0gQEdNT0RVTEVfRVhQT1JUX0NGTEFHU0AKLUdNT0RVTEVfRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9FWFBPUlRfTElCU0AKLUdNT0RVTEVfTk9fRVhQT1JUX0NGTEFHUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9DRkxBR1NACi1HTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACi1HTVNHRk1UID0gQEdNU0dGTVRACi1HTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKLUdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACi1HUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACi1HUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACi1HU01fTElCUyA9IEBHU01fTElCU0AKLUdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAotR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKLUdTVF9BR0UgPSBAR1NUX0FHRUAKLUdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACi1HU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAotR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKLUdTVF9CQVNFX0xJQlMgPSBAR1NUX0JBU0VfTElCU0AKLUdTVF9DRkxBR1MgPSBAR1NUX0NGTEFHU0AKLUdTVF9DSEVDS19DRkxBR1MgPSBAR1NUX0NIRUNLX0NGTEFHU0AKLUdTVF9DSEVDS19MSUJTID0gQEdTVF9DSEVDS19MSUJTQAotR1NUX0NPTlRST0xMRVJfQ0ZMQUdTID0gQEdTVF9DT05UUk9MTEVSX0NGTEFHU0AKLUdTVF9DT05UUk9MTEVSX0xJQlMgPSBAR1NUX0NPTlRST0xMRVJfTElCU0AKLUdTVF9DVVJSRU5UID0gQEdTVF9DVVJSRU5UQAotR1NUX0NYWEZMQUdTID0gQEdTVF9DWFhGTEFHU0AKLUdTVF9MRVZFTF9ERUZBVUxUID0gQEdTVF9MRVZFTF9ERUZBVUxUQAotR1NUX0xJQlMgPSBAR1NUX0xJQlNACi1HU1RfTElCVkVSU0lPTiA9IEBHU1RfTElCVkVSU0lPTkAKLUdTVF9MSUJfTERGTEFHUyA9IEBHU1RfTElCX0xERkxBR1NACi1HU1RfTElDRU5TRSA9IEBHU1RfTElDRU5TRUAKLUdTVF9MVF9MREZMQUdTID0gQEdTVF9MVF9MREZMQUdTQAotR1NUX05FVF9DRkxBR1MgPSBAR1NUX05FVF9DRkxBR1NACi1HU1RfTkVUX0xJQlMgPSBAR1NUX05FVF9MSUJTQAotR1NUX09CSkNGTEFHUyA9IEBHU1RfT0JKQ0ZMQUdTQAotR1NUX09QVElPTl9DRkxBR1MgPSBAR1NUX09QVElPTl9DRkxBR1NACi1HU1RfT1BUSU9OX0NYWEZMQUdTID0gQEdTVF9PUFRJT05fQ1hYRkxBR1NACi1HU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKLUdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKLUdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACi1HU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACi1HU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAotR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQAotR1NUX1BMVUdJTlNfQkFEX0NYWEZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DWFhGTEFHU0AKLUdTVF9QTFVHSU5TX0JBRF9PQkpDRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX09CSkNGTEFHU0AKLUdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTQAotR1NUX1BMVUdJTlNfQkFTRV9ESVIgPSBAR1NUX1BMVUdJTlNfQkFTRV9ESVJACi1HU1RfUExVR0lOU19CQVNFX0xJQlMgPSBAR1NUX1BMVUdJTlNfQkFTRV9MSUJTQAotR1NUX1BMVUdJTlNfRElSID0gQEdTVF9QTFVHSU5TX0RJUkAKLUdTVF9QTFVHSU5TX0dPT0RfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0dPT0RfQ0ZMQUdTQAotR1NUX1BMVUdJTlNfR09PRF9ESVIgPSBAR1NUX1BMVUdJTlNfR09PRF9ESVJACi1HU1RfUExVR0lOU19HT09EX0xJQlMgPSBAR1NUX1BMVUdJTlNfR09PRF9MSUJTQAotR1NUX1BMVUdJTlNfTElCQVZfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0xJQkFWX0NGTEFHU0AKLUdTVF9QTFVHSU5TX0xJQkFWX0RJUiA9IEBHU1RfUExVR0lOU19MSUJBVl9ESVJACi1HU1RfUExVR0lOU19MSUJBVl9MSUJTID0gQEdTVF9QTFVHSU5TX0xJQkFWX0xJQlNACi1HU1RfUExVR0lOU19OT05QT1JURUQgPSBAR1NUX1BMVUdJTlNfTk9OUE9SVEVEQAotR1NUX1BMVUdJTlNfU0VMRUNURUQgPSBAR1NUX1BMVUdJTlNfU0VMRUNURURACi1HU1RfUExVR0lOU19VR0xZX0NGTEFHUyA9IEBHU1RfUExVR0lOU19VR0xZX0NGTEFHU0AKLUdTVF9QTFVHSU5TX1VHTFlfRElSID0gQEdTVF9QTFVHSU5TX1VHTFlfRElSQAotR1NUX1BMVUdJTlNfVUdMWV9MSUJTID0gQEdTVF9QTFVHSU5TX1VHTFlfTElCU0AKLUdTVF9QTFVHSU5fTERGTEFHUyA9IEBHU1RfUExVR0lOX0xERkxBR1NACi1HU1RfUExVR0lOX0xJQlRPT0xGTEFHUyA9IEBHU1RfUExVR0lOX0xJQlRPT0xGTEFHU0AKLUdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKLUdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACi1HU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACi1HVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKLUdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAotR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKLUdUSzNfTElCUyA9IEBHVEszX0xJQlNACi1HVEszX1dBWUxBTkRfQ0ZMQUdTID0gQEdUSzNfV0FZTEFORF9DRkxBR1NACi1HVEszX1dBWUxBTkRfTElCUyA9IEBHVEszX1dBWUxBTkRfTElCU0AKLUdUSzNfWDExX0NGTEFHUyA9IEBHVEszX1gxMV9DRkxBR1NACi1HVEszX1gxMV9MSUJTID0gQEdUSzNfWDExX0xJQlNACi1HVEtET0NfQ0hFQ0sgPSBAR1RLRE9DX0NIRUNLQAotR1RLRE9DX0RFUFNfQ0ZMQUdTID0gQEdUS0RPQ19ERVBTX0NGTEFHU0AKLUdUS0RPQ19ERVBTX0xJQlMgPSBAR1RLRE9DX0RFUFNfTElCU0AKLUdUS0RPQ19NS1BERiA9IEBHVEtET0NfTUtQREZACi1HVEtET0NfUkVCQVNFID0gQEdUS0RPQ19SRUJBU0VACi1HVEtfQkFTRV9ESVIgPSBAR1RLX0JBU0VfRElSQAotR1RLX0NGTEFHUyA9IEBHVEtfQ0ZMQUdTQAotR1RLX0xJQlMgPSBAR1RLX0xJQlNACi1HVEtfVkVSU0lPTiA9IEBHVEtfVkVSU0lPTkAKLUdfVURFVl9DRkxBR1MgPSBAR19VREVWX0NGTEFHU0AKLUdfVURFVl9MSUJTID0gQEdfVURFVl9MSUJTQAotSEFWRV9DTFVUVEVSID0gQEhBVkVfQ0xVVFRFUkAKLUhBVkVfQ0xVVFRFUl9HTFggPSBASEFWRV9DTFVUVEVSX0dMWEAKLUhBVkVfQ0xVVFRFUl9YMTEgPSBASEFWRV9DTFVUVEVSX1gxMUAKLUhBVkVfQ1hYID0gQEhBVkVfQ1hYQAotSEFWRV9ESVJFQ1QzRCA9IEBIQVZFX0RJUkVDVDNEQAotSEFWRV9ESVJFQ1RTT1VORCA9IEBIQVZFX0RJUkVDVFNPVU5EQAotSEFWRV9EVFMgPSBASEFWRV9EVFNACi1IQVZFX0VHTCA9IEBIQVZFX0VHTEAKLUhBVkVfRkFBQyA9IEBIQVZFX0ZBQUNACi1IQVZFX0ZBQUQgPSBASEFWRV9GQUFEQAotSEFWRV9GTElURSA9IEBIQVZFX0ZMSVRFQAotSEFWRV9HTCA9IEBIQVZFX0dMQAotSEFWRV9HTEVTMiA9IEBIQVZFX0dMRVMyQAotSEFWRV9HUkFQSEVORSA9IEBIQVZFX0dSQVBIRU5FQAotSEFWRV9HU00gPSBASEFWRV9HU01ACi1IQVZFX0dUSzMgPSBASEFWRV9HVEszQAotSEFWRV9KUEVHID0gQEhBVkVfSlBFR0AKLUhBVkVfTkFTID0gQEhBVkVfTkFTQAotSEFWRV9PUEVOSlBFRyA9IEBIQVZFX09QRU5KUEVHQAotSEFWRV9QTkcgPSBASEFWRV9QTkdACi1IQVZFX1NSVFAgPSBASEFWRV9TUlRQQAotSEFWRV9XQVNBUEkgPSBASEFWRV9XQVNBUElACi1IQVZFX1dJTERNSURJID0gQEhBVkVfV0lMRE1JRElACi1IQVZFX1dJTktTID0gQEhBVkVfV0lOS1NACi1IQVZFX1dJTlNDUkVFTkNBUCA9IEBIQVZFX1dJTlNDUkVFTkNBUEAKLUhBVkVfWDExID0gQEhBVkVfWDExQAotSFRNTF9ESVIgPSBASFRNTF9ESVJACi1JTlNUQUxMID0gQElOU1RBTExACi1JTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAotSU5TVEFMTF9QUk9HUkFNID0gQElOU1RBTExfUFJPR1JBTUAKLUlOU1RBTExfU0NSSVBUID0gQElOU1RBTExfU0NSSVBUQAotSU5TVEFMTF9TVFJJUF9QUk9HUkFNID0gQElOU1RBTExfU1RSSVBfUFJPR1JBTUAKLUlOVExMSUJTID0gQElOVExMSUJTQAotSU5UTF9NQUNPU1hfTElCUyA9IEBJTlRMX01BQ09TWF9MSUJTQAotSU5UUk9TUEVDVElPTl9DRkxBR1MgPSBASU5UUk9TUEVDVElPTl9DRkxBR1NACi1JTlRST1NQRUNUSU9OX0NPTVBJTEVSID0gQElOVFJPU1BFQ1RJT05fQ09NUElMRVJACi1JTlRST1NQRUNUSU9OX0dFTkVSQVRFID0gQElOVFJPU1BFQ1RJT05fR0VORVJBVEVACi1JTlRST1NQRUNUSU9OX0dJUkRJUiA9IEBJTlRST1NQRUNUSU9OX0dJUkRJUkAKLUlOVFJPU1BFQ1RJT05fSU5JVCA9IEBJTlRST1NQRUNUSU9OX0lOSVRACi1JTlRST1NQRUNUSU9OX0xJQlMgPSBASU5UUk9TUEVDVElPTl9MSUJTQAotSU5UUk9TUEVDVElPTl9NQUtFRklMRSA9IEBJTlRST1NQRUNUSU9OX01BS0VGSUxFQAotSU5UUk9TUEVDVElPTl9TQ0FOTkVSID0gQElOVFJPU1BFQ1RJT05fU0NBTk5FUkAKLUlOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUiA9IEBJTlRST1NQRUNUSU9OX1RZUEVMSUJESVJACi1KUEVHX0xJQlMgPSBASlBFR19MSUJTQAotS0FURV9DRkxBR1MgPSBAS0FURV9DRkxBR1NACi1LQVRFX0xJQlMgPSBAS0FURV9MSUJTQAotTEQgPSBATERACi1MREZMQUdTID0gQExERkxBR1NACi1MSUJEQzEzOTRfQ0ZMQUdTID0gQExJQkRDMTM5NF9DRkxBR1NACi1MSUJEQzEzOTRfTElCUyA9IEBMSUJEQzEzOTRfTElCU0AKLUxJQkRFMjY1X0NGTEFHUyA9IEBMSUJERTI2NV9DRkxBR1NACi1MSUJERTI2NV9MSUJTID0gQExJQkRFMjY1X0xJQlNACi1MSUJESVIgPSBATElCRElSQAotTElCR0NSWVBUX0NGTEFHUyA9IEBMSUJHQ1JZUFRfQ0ZMQUdTQAotTElCR0NSWVBUX0NPTkZJRyA9IEBMSUJHQ1JZUFRfQ09ORklHQAotTElCR0NSWVBUX0xJQlMgPSBATElCR0NSWVBUX0xJQlNACi1MSUJJQ09OViA9IEBMSUJJQ09OVkAKLUxJQklOVEwgPSBATElCSU5UTEAKLUxJQk0gPSBATElCTUAKLUxJQk1NU19DRkxBR1MgPSBATElCTU1TX0NGTEFHU0AKLUxJQk1NU19MSUJTID0gQExJQk1NU19MSUJTQAotTElCT0JKUyA9IEBMSUJPQkpTQAotTElCUE5HX0NGTEFHUyA9IEBMSUJQTkdfQ0ZMQUdTQAotTElCUE5HX0xJQlMgPSBATElCUE5HX0xJQlNACi1MSUJTID0gQExJQlNACi1MSUJUT09MID0gQExJQlRPT0xACi1MSUJVREVWX0NGTEFHUyA9IEBMSUJVREVWX0NGTEFHU0AKLUxJQlVERVZfTElCUyA9IEBMSUJVREVWX0xJQlNACi1MSUJVU0JfQ0ZMQUdTID0gQExJQlVTQl9DRkxBR1NACi1MSUJVU0JfTElCUyA9IEBMSUJVU0JfTElCU0AKLUxJQlZJU1VBTF9DRkxBR1MgPSBATElCVklTVUFMX0NGTEFHU0AKLUxJQlZJU1VBTF9MSUJTID0gQExJQlZJU1VBTF9MSUJTQAotTElCWE1MMl9DRkxBR1MgPSBATElCWE1MMl9DRkxBR1NACi1MSUJYTUwyX0xJQlMgPSBATElCWE1MMl9MSUJTQAotTElQTyA9IEBMSVBPQAotTE5fUyA9IEBMTl9TQAotTE9DQUxFRElSID0gQExPQ0FMRURJUkAKLUxSREZfQ0ZMQUdTID0gQExSREZfQ0ZMQUdTQAotTFJERl9MSUJTID0gQExSREZfTElCU0AKLUxUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKLUxUTElCSU5UTCA9IEBMVExJQklOVExACi1MVExJQk9CSlMgPSBATFRMSUJPQkpTQAotTUFJTlQgPSBATUFJTlRACi1NQUtFSU5GTyA9IEBNQUtFSU5GT0AKLU1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKLU1JTUlDX0NGTEFHUyA9IEBNSU1JQ19DRkxBR1NACi1NSU1JQ19MSUJTID0gQE1JTUlDX0xJQlNACi1NSlBFR19DRkxBR1MgPSBATUpQRUdfQ0ZMQUdTQAotTUpQRUdfTElCUyA9IEBNSlBFR19MSUJTQAotTUtESVJfUCA9IEBNS0RJUl9QQAotTU9DID0gQE1PQ0AKLU1PRFBMVUdfQ0ZMQUdTID0gQE1PRFBMVUdfQ0ZMQUdTQAotTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKLU1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACi1NUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKLU1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACi1NUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACi1NUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACi1NU0dGTVQgPSBATVNHRk1UQAotTVNHRk1UXzAxNSA9IEBNU0dGTVRfMDE1QAotTVNHTUVSR0UgPSBATVNHTUVSR0VACi1NVVNFUEFDS19MSUJTID0gQE1VU0VQQUNLX0xJQlNACi1OQVNfQ0ZMQUdTID0gQE5BU19DRkxBR1NACi1OQVNfTElCUyA9IEBOQVNfTElCU0AKLU5FT05fQ0ZMQUdTID0gQE5FT05fQ0ZMQUdTQAotTkVPTl9MSUJTID0gQE5FT05fTElCU0AKLU5FVFRMRV9DRkxBR1MgPSBATkVUVExFX0NGTEFHU0AKLU5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAotTk0gPSBATk1ACi1OTUVESVQgPSBATk1FRElUQAotT0JKQyA9IEBPQkpDQAotT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACi1PQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQAotT0JKRFVNUCA9IEBPQkpEVU1QQAotT0JKRVhUID0gQE9CSkVYVEAKLU9GQV9DRkxBR1MgPSBAT0ZBX0NGTEFHU0AKLU9GQV9MSUJTID0gQE9GQV9MSUJTQAotT1BFTkFMX0NGTEFHUyA9IEBPUEVOQUxfQ0ZMQUdTQAotT1BFTkFMX0xJQlMgPSBAT1BFTkFMX0xJQlNACi1PUEVOQ1ZfQ0ZMQUdTID0gQE9QRU5DVl9DRkxBR1NACi1PUEVOQ1ZfTElCUyA9IEBPUEVOQ1ZfTElCU0AKLU9QRU5DVl9QUkVGSVggPSBAT1BFTkNWX1BSRUZJWEAKLU9QRU5FWFJfQ0ZMQUdTID0gQE9QRU5FWFJfQ0ZMQUdTQAotT1BFTkVYUl9MSUJTID0gQE9QRU5FWFJfTElCU0AKLU9QRU5IMjY0X0NGTEFHUyA9IEBPUEVOSDI2NF9DRkxBR1NACi1PUEVOSDI2NF9MSUJTID0gQE9QRU5IMjY0X0xJQlNACi1PUEVOSlBFR19DRkxBR1MgPSBAT1BFTkpQRUdfQ0ZMQUdTQAotT1BFTkpQRUdfTElCUyA9IEBPUEVOSlBFR19MSUJTQAotT1BFTk5JMl9DRkxBR1MgPSBAT1BFTk5JMl9DRkxBR1NACi1PUEVOTkkyX0xJQlMgPSBAT1BFTk5JMl9MSUJTQAotT1BFTlNTTF9DRkxBR1MgPSBAT1BFTlNTTF9DRkxBR1NACi1PUEVOU1NMX0xJQlMgPSBAT1BFTlNTTF9MSUJTQAotT1BVU19DRkxBR1MgPSBAT1BVU19DRkxBR1NACi1PUFVTX0xJQlMgPSBAT1BVU19MSUJTQAotT1JDQyA9IEBPUkNDQAotT1JDQ19GTEFHUyA9IEBPUkNDX0ZMQUdTQAotT1JDX0NGTEFHUyA9IEBPUkNfQ0ZMQUdTQAotT1JDX0xJQlMgPSBAT1JDX0xJQlNACi1PVE9PTCA9IEBPVE9PTEAKLU9UT09MNjQgPSBAT1RPT0w2NEAKLVBBQ0tBR0UgPSBAUEFDS0FHRUAKLVBBQ0tBR0VfQlVHUkVQT1JUID0gQFBBQ0tBR0VfQlVHUkVQT1JUQAotUEFDS0FHRV9OQU1FID0gQFBBQ0tBR0VfTkFNRUAKLVBBQ0tBR0VfU1RSSU5HID0gQFBBQ0tBR0VfU1RSSU5HQAotUEFDS0FHRV9UQVJOQU1FID0gQFBBQ0tBR0VfVEFSTkFNRUAKLVBBQ0tBR0VfVVJMID0gQFBBQ0tBR0VfVVJMQAotUEFDS0FHRV9WRVJTSU9OID0gQFBBQ0tBR0VfVkVSU0lPTkAKLVBBQ0tBR0VfVkVSU0lPTl9NQUpPUiA9IEBQQUNLQUdFX1ZFUlNJT05fTUFKT1JACi1QQUNLQUdFX1ZFUlNJT05fTUlDUk8gPSBAUEFDS0FHRV9WRVJTSU9OX01JQ1JPQAotUEFDS0FHRV9WRVJTSU9OX01JTk9SID0gQFBBQ0tBR0VfVkVSU0lPTl9NSU5PUkAKLVBBQ0tBR0VfVkVSU0lPTl9OQU5PID0gQFBBQ0tBR0VfVkVSU0lPTl9OQU5PQAotUEFDS0FHRV9WRVJTSU9OX1JFTEVBU0UgPSBAUEFDS0FHRV9WRVJTSU9OX1JFTEVBU0VACi1QQVRIX1NFUEFSQVRPUiA9IEBQQVRIX1NFUEFSQVRPUkAKLVBLR19DT05GSUcgPSBAUEtHX0NPTkZJR0AKLVBMVUdJTkRJUiA9IEBQTFVHSU5ESVJACi1QT1NVQiA9IEBQT1NVQkAKLVBST0ZJTEVfQ0ZMQUdTID0gQFBST0ZJTEVfQ0ZMQUdTQAotUFRIUkVBRF9DQyA9IEBQVEhSRUFEX0NDQAotUFRIUkVBRF9DRkxBR1MgPSBAUFRIUkVBRF9DRkxBR1NACi1QVEhSRUFEX0xJQlMgPSBAUFRIUkVBRF9MSUJTQAotUFZSX0NGTEFHUyA9IEBQVlJfQ0ZMQUdTQAotUFZSX0xJQlMgPSBAUFZSX0xJQlNACi1QWVRIT04gPSBAUFlUSE9OQAotUFlUSE9OX0VYRUNfUFJFRklYID0gQFBZVEhPTl9FWEVDX1BSRUZJWEAKLVBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACi1QWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACi1QWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKLVFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACi1RVF9MSUJTID0gQFFUX0xJQlNACi1RVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKLVFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACi1RVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACi1RVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKLVJBTkxJQiA9IEBSQU5MSUJACi1SQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKLVJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAotUlNWR19MSUJTID0gQFJTVkdfTElCU0AKLVJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQAotUlRNUF9MSUJTID0gQFJUTVBfTElCU0AKLVNCQ19DRkxBR1MgPSBAU0JDX0NGTEFHU0AKLVNCQ19MSUJTID0gQFNCQ19MSUJTQAotU0NIUk9fQ0ZMQUdTID0gQFNDSFJPX0NGTEFHU0AKLVNDSFJPX0xJQlMgPSBAU0NIUk9fTElCU0AKLVNETF9DRkxBR1MgPSBAU0RMX0NGTEFHU0AKLVNETF9DTFVUVEVSID0gQFNETF9DTFVUVEVSQAotU0RMX0NPTkZJRyA9IEBTRExfQ09ORklHQAotU0RMX0xJQlMgPSBAU0RMX0xJQlNACi1TRUQgPSBAU0VEQAotU0VUX01BS0UgPSBAU0VUX01BS0VACi1TSEVMTCA9IEBTSEVMTEAKLVNITV9MSUJTID0gQFNITV9MSUJTQAotU0xWMl9DRkxBR1MgPSBAU0xWMl9DRkxBR1NACi1TTFYyX0xJQlMgPSBAU0xWMl9MSUJTQAotU05ERklMRV9DRkxBR1MgPSBAU05ERklMRV9DRkxBR1NACi1TTkRGSUxFX0xJQlMgPSBAU05ERklMRV9MSUJTQAotU05ESU9fTElCUyA9IEBTTkRJT19MSUJTQAotU09VTkRUT1VDSF9DRkxBR1MgPSBAU09VTkRUT1VDSF9DRkxBR1NACi1TT1VORFRPVUNIX0xJQlMgPSBAU09VTkRUT1VDSF9MSUJTQAotU1BBTkRTUF9DRkxBR1MgPSBAU1BBTkRTUF9DRkxBR1NACi1TUEFORFNQX0xJQlMgPSBAU1BBTkRTUF9MSUJTQAotU1BDX0xJQlMgPSBAU1BDX0xJQlNACi1TUlRQX0NGTEFHUyA9IEBTUlRQX0NGTEFHU0AKLVNSVFBfTElCUyA9IEBTUlRQX0xJQlNACi1TU0gyX0NGTEFHUyA9IEBTU0gyX0NGTEFHU0AKLVNTSDJfTElCUyA9IEBTU0gyX0xJQlNACi1TVFJJUCA9IEBTVFJJUEAKLVRFTEVURVhUREVDX0NGTEFHUyA9IEBURUxFVEVYVERFQ19DRkxBR1NACi1URUxFVEVYVERFQ19MSUJTID0gQFRFTEVURVhUREVDX0xJQlNACi1USUdFUl9DRkxBR1MgPSBAVElHRVJfQ0ZMQUdTQAotVElHRVJfTElCUyA9IEBUSUdFUl9MSUJTQAotVElNSURJVFlfQ0ZMQUdTID0gQFRJTUlESVRZX0NGTEFHU0AKLVRJTUlESVRZX0xJQlMgPSBAVElNSURJVFlfTElCU0AKLVVJQyA9IEBVSUNACi1VU0VfR0xFUzIgPSBAVVNFX0dMRVMyQAotVVNFX05MUyA9IEBVU0VfTkxTQAotVVNFX09QRU5HTCA9IEBVU0VfT1BFTkdMQAotVkFMR1JJTkRfQ0ZMQUdTID0gQFZBTEdSSU5EX0NGTEFHU0AKLVZBTEdSSU5EX0xJQlMgPSBAVkFMR1JJTkRfTElCU0AKLVZBTEdSSU5EX1BBVEggPSBAVkFMR1JJTkRfUEFUSEAKLVZEUEFVX0NGTEFHUyA9IEBWRFBBVV9DRkxBR1NACi1WRFBBVV9MSUJTID0gQFZEUEFVX0xJQlNACi1WRVJTSU9OID0gQFZFUlNJT05ACi1WT0FBQ0VOQ19DRkxBR1MgPSBAVk9BQUNFTkNfQ0ZMQUdTQAotVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAotVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACi1WT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAotV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACi1XQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACi1XQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKLVdBU0FQSV9MSUJTID0gQFdBU0FQSV9MSUJTQAotV0FZTEFORF9DRkxBR1MgPSBAV0FZTEFORF9DRkxBR1NACi1XQVlMQU5EX0VHTF9DRkxBR1MgPSBAV0FZTEFORF9FR0xfQ0ZMQUdTQAotV0FZTEFORF9FR0xfTElCUyA9IEBXQVlMQU5EX0VHTF9MSUJTQAotV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKLVdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAotV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKLVdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACi1XSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACi1XSU5LU19MSUJTID0gQFdJTktTX0xJQlNACi1XSU5TQ1JFRU5DQVBfTElCUyA9IEBXSU5TQ1JFRU5DQVBfTElCU0AKLVdJTlNPQ0syX0xJQlMgPSBAV0lOU09DSzJfTElCU0AKLVgxMV9DRkxBR1MgPSBAWDExX0NGTEFHU0AKLVgxMV9MSUJTID0gQFgxMV9MSUJTQAotWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACi1YMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAotWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACi1YQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAotWEdFVFRFWFQgPSBAWEdFVFRFWFRACi1YR0VUVEVYVF8wMTUgPSBAWEdFVFRFWFRfMDE1QAotWEdFVFRFWFRfRVhUUkFfT1BUSU9OUyA9IEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQAotWFZJRF9MSUJTID0gQFhWSURfTElCU0AKLVhfQ0ZMQUdTID0gQFhfQ0ZMQUdTQAotWF9MSUJTID0gQFhfTElCU0AKLVpCQVJfQ0ZMQUdTID0gQFpCQVJfQ0ZMQUdTQAotWkJBUl9MSUJTID0gQFpCQVJfTElCU0AKLWFic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACi1hYnNfc3JjZGlyID0gQGFic19zcmNkaXJACi1hYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACi1hYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKLWFjX2N0X0FSID0gQGFjX2N0X0FSQAotYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACi1hY19jdF9DWFggPSBAYWNfY3RfQ1hYQAotYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAotYWNfY3RfT0JKQyA9IEBhY19jdF9PQkpDQAotYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACi1hbV9fbGVhZGluZ19kb3QgPSBAYW1fX2xlYWRpbmdfZG90QAotYW1fX3F1b3RlID0gQGFtX19xdW90ZUAKLWFtX190YXIgPSBAYW1fX3RhckAKLWFtX191bnRhciA9IEBhbV9fdW50YXJACi1heF9wdGhyZWFkX2NvbmZpZyA9IEBheF9wdGhyZWFkX2NvbmZpZ0AKLWJpbmRpciA9IEBiaW5kaXJACi1idWlsZCA9IEBidWlsZEAKLWJ1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQAotYnVpbGRfY3B1ID0gQGJ1aWxkX2NwdUAKLWJ1aWxkX29zID0gQGJ1aWxkX29zQAotYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckAKLWJ1aWxkZGlyID0gQGJ1aWxkZGlyQAotZGF0YWRpciA9IEBkYXRhZGlyQAotZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACi1kb2NkaXIgPSBAZG9jZGlyQAotZHZpZGlyID0gQGR2aWRpckAKLWV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKLWhvc3QgPSBAaG9zdEAKLWhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKLWhvc3RfY3B1ID0gQGhvc3RfY3B1QAotaG9zdF9vcyA9IEBob3N0X29zQAotaG9zdF92ZW5kb3IgPSBAaG9zdF92ZW5kb3JACi1odG1sZGlyID0gQGh0bWxkaXJACi1pbmNsdWRlZGlyID0gQGluY2x1ZGVkaXJACi1pbmZvZGlyID0gQGluZm9kaXJACi1pbnN0YWxsX3NoID0gQGluc3RhbGxfc2hACi1saWJkaXIgPSBAbGliZGlyQAotbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAotbG9jYWxlZGlyID0gQGxvY2FsZWRpckAKLWxvY2Fsc3RhdGVkaXIgPSBAbG9jYWxzdGF0ZWRpckAKLW1hbmRpciA9IEBtYW5kaXJACi1ta2Rpcl9wID0gQG1rZGlyX3BACi1vbGRpbmNsdWRlZGlyID0gQG9sZGluY2x1ZGVkaXJACi1wZGZkaXIgPSBAcGRmZGlyQAotcGtncHlleGVjZGlyID0gQHBrZ3B5ZXhlY2RpckAKLXBrZ3B5dGhvbmRpciA9IEBwa2dweXRob25kaXJACi1wbHVnaW5kaXIgPSBAcGx1Z2luZGlyQAotcHJlZml4ID0gQHByZWZpeEAKLXByb2dyYW1fdHJhbnNmb3JtX25hbWUgPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKLXBzZGlyID0gQHBzZGlyQAotcHlleGVjZGlyID0gQHB5ZXhlY2RpckAKLXB5dGhvbmRpciA9IEBweXRob25kaXJACi1ydW5zdGF0ZWRpciA9IEBydW5zdGF0ZWRpckAKLXNiaW5kaXIgPSBAc2JpbmRpckAKLXNoYXJlZHN0YXRlZGlyID0gQHNoYXJlZHN0YXRlZGlyQAotc3JjZGlyID0gQHNyY2RpckAKLXN5c2NvbmZkaXIgPSBAc3lzY29uZmRpckAKLXRhcmdldCA9IEB0YXJnZXRACi10YXJnZXRfYWxpYXMgPSBAdGFyZ2V0X2FsaWFzQAotdGFyZ2V0X2NwdSA9IEB0YXJnZXRfY3B1QAotdGFyZ2V0X29zID0gQHRhcmdldF9vc0AKLXRhcmdldF92ZW5kb3IgPSBAdGFyZ2V0X3ZlbmRvckAKLXRvcF9idWlsZF9wcmVmaXggPSBAdG9wX2J1aWxkX3ByZWZpeEAKLXRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACi10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACi13YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bXBnMTIzLmxhCi1saWJnc3RtcGcxMjNfbGFfU09VUkNFUyA9IGdzdG1wZzEyM2F1ZGlvZGVjLmMKLWxpYmdzdG1wZzEyM19sYV9DRkxBR1MgPSAtREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0JJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChNUEcxMjNfQ0ZMQUdTKQotCi1saWJnc3RtcGcxMjNfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChNUEcxMjNfTElCUykKLQotbGliZ3N0bXBnMTIzX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdG1wZzEyM19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBnc3RtcGcxMjNhdWRpb2RlYy5oCi1hbGw6IGFsbC1hbQotCi0uU1VGRklYRVM6Ci0uU1VGRklYRVM6IC5jIC5sbyAubyAub2JqCi0kKHNyY2RpcikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKLQlAZm9yIGRlcCBpbiAkPzsgZG8gXAotCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcCi0JICAgICokJGRlcCopIFwKLQkgICAgICAoIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaCApIFwKLQkgICAgICAgICYmIHsgaWYgdGVzdCAtZiAkQDsgdGhlbiBleGl0IDA7IGVsc2UgYnJlYWs7IGZpOyB9OyBcCi0JICAgICAgZXhpdCAxOzsgXAotCSAgZXNhYzsgXAotCWRvbmU7IFwKLQllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBleHQvbXBnMTIzL01ha2VmaWxlJzsgXAotCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKLQkgICQoQVVUT01BS0UpIC0tZ251IGV4dC9tcGcxMjMvTWFrZWZpbGUKLU1ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKLQlAY2FzZSAnJD8nIGluIFwKLQkgICpjb25maWcuc3RhdHVzKikgXAotCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2g7OyBcCi0JICAqKSBcCi0JICAgIGVjaG8gJyBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSknOyBcCi0JICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKTs7IFwKLQllc2FjOwotCi0kKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKLQotJCh0b3Bfc3JjZGlyKS9jb25maWd1cmU6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fY29uZmlndXJlX2RlcHMpCi0JY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCi0kKEFDTE9DQUxfTTQpOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoYW1fX2FjbG9jYWxfbTRfZGVwcykKLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKLSQoYW1fX2FjbG9jYWxfbTRfZGVwcyk6Ci0KLWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVM6ICQocGx1Z2luX0xUTElCUkFSSUVTKQotCUAkKE5PUk1BTF9JTlNUQUxMKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCi0JbGlzdDI9OyBmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKLQkgIGlmIHRlc3QgLWYgJCRwOyB0aGVuIFwKLQkgICAgbGlzdDI9IiQkbGlzdDIgJCRwIjsgXAotCSAgZWxzZSA6OyBmaTsgXAotCWRvbmU7IFwKLQl0ZXN0IC16ICIkJGxpc3QyIiB8fCB7IFwKLQkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChwbHVnaW5kaXIpJyI7IFwKLQkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKHBsdWdpbmRpcikiIHx8IGV4aXQgMTsgXAotCSAgZWNobyAiICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9aW5zdGFsbCAkKElOU1RBTEwpICQoSU5TVEFMTF9TVFJJUF9GTEFHKSAkJGxpc3QyICckKERFU1RESVIpJChwbHVnaW5kaXIpJyI7IFwKLQkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9aW5zdGFsbCAkKElOU1RBTEwpICQoSU5TVEFMTF9TVFJJUF9GTEFHKSAkJGxpc3QyICIkKERFU1RESVIpJChwbHVnaW5kaXIpIjsgXAotCX0KLQotdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOgotCUAkKE5PUk1BTF9VTklOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKLQlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKLQkgICQoYW1fX3N0cmlwX2RpcikgXAotCSAgZWNobyAiICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICckKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiciOyBcCi0JICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAiJChERVNURElSKSQocGx1Z2luZGlyKS8kJGYiOyBcCi0JZG9uZQotCi1jbGVhbi1wbHVnaW5MVExJQlJBUklFUzoKLQktdGVzdCAteiAiJChwbHVnaW5fTFRMSUJSQVJJRVMpIiB8fCBybSAtZiAkKHBsdWdpbl9MVExJQlJBUklFUykKLQlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgXAotCWxvY3M9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBcCi0JICAgICAgc2VkICdzfF5bXi9dKiQkfC58OyBzfC9bXi9dKiQkfHw7IHN8JCR8L3NvX2xvY2F0aW9uc3wnIHwgXAotCSAgICAgIHNvcnQgLXVgOyBcCi0JdGVzdCAteiAiJCRsb2NzIiB8fCB7IFwKLQkgIGVjaG8gcm0gLWYgJCR7bG9jc307IFwKLQkgIHJtIC1mICQke2xvY3N9OyBcCi0JfQotCi1saWJnc3RtcGcxMjMubGE6ICQobGliZ3N0bXBnMTIzX2xhX09CSkVDVFMpICQobGliZ3N0bXBnMTIzX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RtcGcxMjNfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdG1wZzEyM19sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0bXBnMTIzX2xhX09CSkVDVFMpICQobGliZ3N0bXBnMTIzX2xhX0xJQkFERCkgJChMSUJTKQotCi1tb3N0bHljbGVhbi1jb21waWxlOgotCS1ybSAtZiAqLiQoT0JKRVhUKQotCi1kaXN0Y2xlYW4tY29tcGlsZToKLQktcm0gLWYgKi50YWIuYwotCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bXBnMTIzX2xhLWdzdG1wZzEyM2F1ZGlvZGVjLlBsb0BhbV9fcXVvdGVACi0KLS5jLm86Ci1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENPTVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAkJGRlcGJhc2UuVHBvIC1jIC1vICRAICQ8ICYmXAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQkZGVwYmFzZS5UcG8gJCRkZXBiYXNlLlBvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nJDwnIG9iamVjdD0nJEAnIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ09NUElMRSkgLWMgLW8gJEAgJDwKLQotLmMub2JqOgotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm9iaiQkfHwnYDtcCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKENPTVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAkJGRlcGJhc2UuVHBvIC1jIC1vICRAIGAkKENZR1BBVEhfVykgJyQ8J2AgJiZcCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJCRkZXBiYXNlLlRwbyAkJGRlcGJhc2UuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDT01QSUxFKSAtYyAtbyAkQCBgJChDWUdQQVRIX1cpICckPCdgCi0KLS5jLmxvOgotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLmxvJCR8fCdgO1wKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoTFRDT01QSUxFKSAtTVQgJEAgLU1EIC1NUCAtTUYgJCRkZXBiYXNlLlRwbyAtYyAtbyAkQCAkPCAmJlwKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkJGRlcGJhc2UuVHBvICQkZGVwYmFzZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAotCi1saWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMubG86IGdzdG1wZzEyM2F1ZGlvZGVjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RtcGcxMjNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bXBnMTIzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5UcG8gLWMgLW8gbGliZ3N0bXBnMTIzX2xhLWdzdG1wZzEyM2F1ZGlvZGVjLmxvIGB0ZXN0IC1mICdnc3RtcGcxMjNhdWRpb2RlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RtcGcxMjNhdWRpb2RlYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMuVHBvICQoREVQRElSKS9saWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0bXBnMTIzYXVkaW9kZWMuYycgb2JqZWN0PSdsaWJnc3RtcGcxMjNfbGEtZ3N0bXBnMTIzYXVkaW9kZWMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RtcGcxMjNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bXBnMTIzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG1wZzEyM19sYS1nc3RtcGcxMjNhdWRpb2RlYy5sbyBgdGVzdCAtZiAnZ3N0bXBnMTIzYXVkaW9kZWMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bXBnMTIzYXVkaW9kZWMuYwotCi1tb3N0bHljbGVhbi1saWJ0b29sOgotCS1ybSAtZiAqLmxvCi0KLWNsZWFuLWxpYnRvb2w6Ci0JLXJtIC1yZiAubGlicyBfbGlicwotCi1JRDogJChhbV9fdGFnZ2VkX2ZpbGVzKQotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IG1raWQgLWZJRCAkJHVuaXF1ZQotdGFnczogdGFncy1hbQotVEFHUzogdGFncwotCi10YWdzLWFtOiAkKFRBR1NfREVQRU5ERU5DSUVTKSAkKGFtX190YWdnZWRfZmlsZXMpCi0Jc2V0IHg7IFwKLQloZXJlPWBwd2RgOyBcCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAotCXNoaWZ0OyBcCi0JaWYgdGVzdCAteiAiJChFVEFHU19BUkdTKSQkKiQkdW5pcXVlIjsgdGhlbiA6OyBlbHNlIFwKLQkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwKLQkgIGlmIHRlc3QgJCQjIC1ndCAwOyB0aGVuIFwKLQkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAotCSAgICAgICIkJEAiICQkdW5pcXVlOyBcCi0JICBlbHNlIFwKLQkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAotCSAgICAgICQkdW5pcXVlOyBcCi0JICBmaTsgXAotCWZpCi1jdGFnczogY3RhZ3MtYW0KLQotQ1RBR1M6IGN0YWdzCi1jdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKLQl0ZXN0IC16ICIkKENUQUdTX0FSR1MpJCR1bmlxdWUiIFwKLQkgIHx8ICQoQ1RBR1MpICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKLQkgICAgICQkdW5pcXVlCi0KLUdUQUdTOgotCWhlcmU9YCQoYW1fX2NkKSAkKHRvcF9idWlsZGRpcikgJiYgcHdkYCBcCi0JICAmJiAkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSBcCi0JICAmJiBndGFncyAtaSAkKEdUQUdTX0FSR1MpICIkJGhlcmUiCi1jc2NvcGVsaXN0OiBjc2NvcGVsaXN0LWFtCi0KLWNzY29wZWxpc3QtYW06ICQoYW1fX3RhZ2dlZF9maWxlcykKLQlsaXN0PSckKGFtX190YWdnZWRfZmlsZXMpJzsgXAotCWNhc2UgIiQoc3JjZGlyKSIgaW4gXAotCSAgW1xcL10qIHwgPzpbXFwvXSopIHNkaXI9IiQoc3JjZGlyKSIgOzsgXAotCSAgKikgc2Rpcj0kKHN1YmRpcikvJChzcmNkaXIpIDs7IFwKLQllc2FjOyBcCi0JZm9yIGkgaW4gJCRsaXN0OyBkbyBcCi0JICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIFwKLQkgICAgZWNobyAiJChzdWJkaXIpLyQkaSI7IFwKLQkgIGVsc2UgXAotCSAgICBlY2hvICIkJHNkaXIvJCRpIjsgXAotCSAgZmk7IFwKLQlkb25lID4+ICQodG9wX2J1aWxkZGlyKS9jc2NvcGUuZmlsZXMKLQotZGlzdGNsZWFuLXRhZ3M6Ci0JLXJtIC1mIFRBR1MgSUQgR1RBR1MgR1JUQUdTIEdTWU1TIEdQQVRIIHRhZ3MKLQotZGlzdGRpcjogJChESVNURklMRVMpCi0JQHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAotCXRvcHNyY2RpcnN0cmlwPWBlY2hvICIkKHRvcF9zcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKLQlsaXN0PSckKERJU1RGSUxFUyknOyBcCi0JICBkaXN0X2ZpbGVzPWBmb3IgZmlsZSBpbiAkJGxpc3Q7IGRvIGVjaG8gJCRmaWxlOyBkb25lIHwgXAotCSAgc2VkIC1lICJzfF4kJHNyY2RpcnN0cmlwL3x8O3QiIFwKLQkgICAgICAtZSAic3xeJCR0b3BzcmNkaXJzdHJpcC98JCh0b3BfYnVpbGRkaXIpL3w7dCJgOyBcCi0JY2FzZSAkJGRpc3RfZmlsZXMgaW4gXAotCSAgKi8qKSAkKE1LRElSX1ApIGBlY2hvICIkJGRpc3RfZmlsZXMiIHwgXAotCQkJICAgc2VkICcvXC8vIWQ7c3xefCQoZGlzdGRpcikvfDtzLC9bXi9dKiQkLCwnIHwgXAotCQkJICAgc29ydCAtdWAgOzsgXAotCWVzYWM7IFwKLQlmb3IgZmlsZSBpbiAkJGRpc3RfZmlsZXM7IGRvIFwKLQkgIGlmIHRlc3QgLWYgJCRmaWxlIHx8IHRlc3QgLWQgJCRmaWxlOyB0aGVuIGQ9LjsgZWxzZSBkPSQoc3JjZGlyKTsgZmk7IFwKLQkgIGlmIHRlc3QgLWQgJCRkLyQkZmlsZTsgdGhlbiBcCi0JICAgIGRpcj1gZWNobyAiLyQkZmlsZSIgfCBzZWQgLWUgJ3MsL1teL10qJCQsLCdgOyBcCi0JICAgIGlmIHRlc3QgLWQgIiQoZGlzdGRpcikvJCRmaWxlIjsgdGhlbiBcCi0JICAgICAgZmluZCAiJChkaXN0ZGlyKS8kJGZpbGUiIC10eXBlIGQgISAtcGVybSAtNzAwIC1leGVjIGNobW9kIHUrcnd4IHt9IFw7OyBcCi0JICAgIGZpOyBcCi0JICAgIGlmIHRlc3QgLWQgJChzcmNkaXIpLyQkZmlsZSAmJiB0ZXN0ICQkZCAhPSAkKHNyY2Rpcik7IHRoZW4gXAotCSAgICAgIGNwIC1mcFIgJChzcmNkaXIpLyQkZmlsZSAiJChkaXN0ZGlyKSQkZGlyIiB8fCBleGl0IDE7IFwKLQkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKLQkgICAgZmk7IFwKLQkgICAgY3AgLWZwUiAkJGQvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAotCSAgZWxzZSBcCi0JICAgIHRlc3QgLWYgIiQoZGlzdGRpcikvJCRmaWxlIiBcCi0JICAgIHx8IGNwIC1wICQkZC8kJGZpbGUgIiQoZGlzdGRpcikvJCRmaWxlIiBcCi0JICAgIHx8IGV4aXQgMTsgXAotCSAgZmk7IFwKLQlkb25lCi1jaGVjay1hbTogYWxsLWFtCi1jaGVjazogY2hlY2stYW0KLWFsbC1hbTogTWFrZWZpbGUgJChMVExJQlJBUklFUykgJChIRUFERVJTKQotaW5zdGFsbGRpcnM6Ci0JZm9yIGRpciBpbiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IGRvIFwKLQkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKLQlkb25lCi1pbnN0YWxsOiBpbnN0YWxsLWFtCi1pbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1hbQotaW5zdGFsbC1kYXRhOiBpbnN0YWxsLWRhdGEtYW0KLXVuaW5zdGFsbDogdW5pbnN0YWxsLWFtCi0KLWluc3RhbGwtYW06IGFsbC1hbQotCUAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1kYXRhLWFtCi0KLWluc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLWFtCi1pbnN0YWxsLXN0cmlwOgotCWlmIHRlc3QgLXogJyQoU1RSSVApJzsgdGhlbiBcCi0JICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgICAgICBpbnN0YWxsOyBcCi0JZWxzZSBcCi0JICAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBJTlNUQUxMX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgXAotCSAgICBpbnN0YWxsX3NoX1BST0dSQU09IiQoSU5TVEFMTF9TVFJJUF9QUk9HUkFNKSIgSU5TVEFMTF9TVFJJUF9GTEFHPS1zIFwKLQkgICAgIklOU1RBTExfUFJPR1JBTV9FTlY9U1RSSVBQUk9HPSckKFNUUklQKSciIGluc3RhbGw7IFwKLQlmaQotbW9zdGx5Y2xlYW4tZ2VuZXJpYzoKLQotY2xlYW4tZ2VuZXJpYzoKLQotZGlzdGNsZWFuLWdlbmVyaWM6Ci0JLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCi0JLXRlc3QgLiA9ICIkKHNyY2RpcikiIHx8IHRlc3QgLXogIiQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMpCi0KLW1haW50YWluZXItY2xlYW4tZ2VuZXJpYzoKLQlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCi0JQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgotY2xlYW46IGNsZWFuLWFtCi0KLWNsZWFuLWFtOiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgXAotCW1vc3RseWNsZWFuLWFtCi0KLWRpc3RjbGVhbjogZGlzdGNsZWFuLWFtCi0JLXJtIC1yZiAuLyQoREVQRElSKQotCS1ybSAtZiBNYWtlZmlsZQotZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCi0JZGlzdGNsZWFuLXRhZ3MKLQotZHZpOiBkdmktYW0KLQotZHZpLWFtOgotCi1odG1sOiBodG1sLWFtCi0KLWh0bWwtYW06Ci0KLWluZm86IGluZm8tYW0KLQotaW5mby1hbToKLQotaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCi0KLWluc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1hbQotCi1pbnN0YWxsLWR2aS1hbToKLQotaW5zdGFsbC1leGVjLWFtOgotCi1pbnN0YWxsLWh0bWw6IGluc3RhbGwtaHRtbC1hbQotCi1pbnN0YWxsLWh0bWwtYW06Ci0KLWluc3RhbGwtaW5mbzogaW5zdGFsbC1pbmZvLWFtCi0KLWluc3RhbGwtaW5mby1hbToKLQotaW5zdGFsbC1tYW46Ci0KLWluc3RhbGwtcGRmOiBpbnN0YWxsLXBkZi1hbQotCi1pbnN0YWxsLXBkZi1hbToKLQotaW5zdGFsbC1wczogaW5zdGFsbC1wcy1hbQotCi1pbnN0YWxsLXBzLWFtOgotCi1pbnN0YWxsY2hlY2stYW06Ci0KLW1haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tYW0KLQktcm0gLXJmIC4vJChERVBESVIpCi0JLXJtIC1mIE1ha2VmaWxlCi1tYWludGFpbmVyLWNsZWFuLWFtOiBkaXN0Y2xlYW4tYW0gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljCi0KLW1vc3RseWNsZWFuOiBtb3N0bHljbGVhbi1hbQotCi1tb3N0bHljbGVhbi1hbTogbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIFwKLQltb3N0bHljbGVhbi1saWJ0b29sCi0KLXBkZjogcGRmLWFtCi0KLXBkZi1hbToKLQotcHM6IHBzLWFtCi0KLXBzLWFtOgotCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwotCi0uTUFLRTogaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCi0KLS5QSE9OWTogQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgXAotCWNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgY3Njb3BlbGlzdC1hbSBjdGFncyBcCi0JY3RhZ3MtYW0gZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKLQlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBcCi0JaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBcCi0JaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBcCi0JaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIFwKLQlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gXAotCWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMgaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIFwKLQlpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgXAotCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIFwKLQltb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBcCi0JcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSBcCi0JdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCi0KLS5QUkVDSU9VUzogTWFrZWZpbGUKLQotCi0jIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFibGVzLgotIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCi0uTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9leHQvbXBnMTIzL2dzdG1wZzEyM2F1ZGlvZGVjLmMgYi9leHQvbXBnMTIzL2dzdG1wZzEyM2F1ZGlvZGVjLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhODU5OGMuLjAwMDAwMDAKLS0tIGEvZXh0L21wZzEyMy9nc3RtcGcxMjNhdWRpb2RlYy5jCisrKyAvZGV2L251bGwKQEAgLTEsNjMzICswLDAgQEAKLS8qICBNUDMgZGVjb2RpbmcgcGx1Z2luIGZvciBHU3RyZWFtZXIgdXNpbmcgdGhlIG1wZzEyMyBsaWJyYXJ5Ci0gKiAgQ29weXJpZ2h0IChDKSAyMDEyIENhcmxvcyBSYWZhZWwgR2lhbmkKLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqICB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiAgVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiAgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxICBVU0EKLSAqLwotCi0vKioKLSAqIFNFQ1RJT046IGVsZW1lbnQtbXBnMTIzYXVkaW9kZWMKLSAqIEBzZWVfYWxzbzogbGFtZW1wM2VuYywgbWFkCi0gKgotICogQXVkaW8gZGVjb2RlciBmb3IgTVBFRy0xIGxheWVyIDEvMi8zIGF1ZGlvIGRhdGEuCi0gKgotICogPHJlZnNlY3QyPgotICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KLSAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249bXVzaWMubXAzICEgbXBlZ2F1ZGlvcGFyc2UgISBtcGcxMjNhdWRpb2RlYyAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rCi0gKiBdfCBEZWNvZGUgYW5kIHBsYXkgdGhlIG1wMyBmaWxlCi0gKiA8L3JlZnNlY3QyPgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSA8Y29uZmlnLmg+Ci0jZW5kaWYKLQotI2luY2x1ZGUgImdzdG1wZzEyM2F1ZGlvZGVjLmgiCi0KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAobXBnMTIzX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIG1wZzEyM19kZWJ1ZwotCi0vKiBPbWl0dGVkIHNhbXBsZSBmb3JtYXRzIHRoYXQgbXBnMTIzIHN1cHBvcnRzIChvciBhdCBsZWFzdCBjYW4gc3VwcG9ydCk6Ci0gKiAgLSA4Yml0IGludGVnZXIgc2lnbmVkCi0gKiAgLSA4Yml0IGludGVnZXIgdW5zaWduZWQKLSAqICAtIGEtbGF3Ci0gKiAgLSBtdS1sYXcKLSAqICAtIDY0Yml0IGZsb2F0Ci0gKgotICogVGhlIGZpcnN0IGZvdXIgZm9ybWF0cyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgR3N0QXVkaW9EZWNvZGVyIGJhc2UgY2xhc3MuCi0gKiAoVGhlIGludGVybmFsIGdzdF9hdWRpb19mb3JtYXRfZnJvbV9jYXBzX3N0cnVjdHVyZSgpIGNhbGwgZmFpbHMuKQotICoKLSAqIFRoZSA2NGJpdCBmbG9hdCBpc3N1ZSBpcyB0cmlja3kuIG1wZzEyMyBhY3R1YWxseSBkZWNvZGVzIHRvICJyZWFsIiwKLSAqIG5vdCBuZWNlc3NhcmlseSB0byAiZmxvYXQiLgotICoKLSAqICJyZWFsIiBjYW4gYmUgZml4ZWQgcG9pbnQsIDMyYml0IGZsb2F0LCA2NGJpdCBmbG9hdC4gVGhlcmUgc2VlbXMgdG8gYmUKLSAqIG5vIHdheSBob3cgdG8gZmluZCBvdXQgd2hpY2ggb25lIG9mIHRoZW0gaXMgYWN0dWFsbHkgdXNlZC4KLSAqCi0gKiBIb3dldmVyLCBpbiBhbGwga25vd24gaW5zdGFsbGF0aW9ucywgInJlYWwiIGVxdWFscyAzMmJpdCBmbG9hdCwgc28gdGhhdCdzCi0gKiB3aGF0IGlzIHVzZWQuICovCi0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzdGF0aWNfc2lua190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby9tcGVnLCAiCi0gICAgICAgICJtcGVndmVyc2lvbiA9IChpbnQpIDEsICIKLSAgICAgICAgImxheWVyID0gKGludCkgWyAxLCAzIF0sICIKLSAgICAgICAgInJhdGUgPSAoaW50KSB7IDgwMDAsIDExMDI1LCAxMjAwMCwgMTYwMDAsIDIyMDUwLCAyNDAwMCwgMzIwMDAsIDQ0MTAwLCA0ODAwMCB9LCAiCi0gICAgICAgICJjaGFubmVscyA9IChpbnQpIFsgMSwgMiBdLCAiICJwYXJzZWQgPSAoYm9vbGVhbikgdHJ1ZSAiKQotICAgICk7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfbXBnMTIzX2F1ZGlvX2RlY19zdGFydCAoR3N0QXVkaW9EZWNvZGVyICogZGVjKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfbXBnMTIzX2F1ZGlvX2RlY19zdG9wIChHc3RBdWRpb0RlY29kZXIgKiBkZWMpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X21wZzEyM19hdWRpb19kZWNfcHVzaF9kZWNvZGVkX2J5dGVzIChHc3RNcGcxMjNBdWRpb0RlYwotICAgICogbXBnMTIzX2RlY29kZXIsIHVuc2lnbmVkIGNoYXIgY29uc3QgKmRlY29kZWRfYnl0ZXMsCi0gICAgc2l6ZV90IGNvbnN0IG51bV9kZWNvZGVkX2J5dGVzKTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9tcGcxMjNfYXVkaW9fZGVjX2hhbmRsZV9mcmFtZSAoR3N0QXVkaW9EZWNvZGVyICogZGVjLAotICAgIEdzdEJ1ZmZlciAqIGlucHV0X2J1ZmZlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X21wZzEyM19hdWRpb19kZWNfc2V0X2Zvcm1hdCAoR3N0QXVkaW9EZWNvZGVyICogZGVjLAotICAgIEdzdENhcHMgKiBpbnB1dF9jYXBzKTsKLXN0YXRpYyB2b2lkIGdzdF9tcGcxMjNfYXVkaW9fZGVjX2ZsdXNoIChHc3RBdWRpb0RlY29kZXIgKiBkZWMsIGdib29sZWFuIGhhcmQpOwotCi1HX0RFRklORV9UWVBFIChHc3RNcGcxMjNBdWRpb0RlYywgZ3N0X21wZzEyM19hdWRpb19kZWMsIEdTVF9UWVBFX0FVRElPX0RFQ09ERVIpOwotCi1zdGF0aWMgdm9pZAotZ3N0X21wZzEyM19hdWRpb19kZWNfY2xhc3NfaW5pdCAoR3N0TXBnMTIzQXVkaW9EZWNDbGFzcyAqIGtsYXNzKQotewotICBHc3RBdWRpb0RlY29kZXJDbGFzcyAqYmFzZV9jbGFzczsKLSAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzOwotICBHc3RQYWRUZW1wbGF0ZSAqc3JjX3RlbXBsYXRlLCAqc2lua190ZW1wbGF0ZTsKLSAgaW50IGVycm9yOwotCi0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChtcGcxMjNfZGVidWcsICJtcGcxMjMiLCAwLCAibXBnMTIzIG1wMyBkZWNvZGVyIik7Ci0KLSAgYmFzZV9jbGFzcyA9IEdTVF9BVURJT19ERUNPREVSX0NMQVNTIChrbGFzcyk7Ci0gIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCi0gICAgICAibXBnMTIzIG1wMyBkZWNvZGVyIiwKLSAgICAgICJDb2RlYy9EZWNvZGVyL0F1ZGlvIiwKLSAgICAgICJEZWNvZGVzIG1wMyBzdHJlYW1zIHVzaW5nIHRoZSBtcGcxMjMgbGlicmFyeSIsCi0gICAgICAiQ2FybG9zIFJhZmFlbCBHaWFuaSA8ZHZAcHNldWRvdGVybWluYWwub3JnPiIpOwotCi0gIC8qIE5vdCB1c2luZyBzdGF0aWMgcGFkIHRlbXBsYXRlIGZvciBzcmNjYXBzLCBzaW5jZSB0aGUgY29tbWEtc2VwYXJhdGVkIGxpc3QKLSAgICogb2YgZm9ybWF0cyBuZWVkcyB0byBiZSBjcmVhdGVkIGRlcGVuZGluZyBvbiB3aGF0ZXZlciBtcGcxMjMgc3VwcG9ydHMgKi8KLSAgewotICAgIGNvbnN0IGludCAqZm9ybWF0X2xpc3Q7Ci0gICAgY29uc3QgbG9uZyAqcmF0ZXNfbGlzdDsKLSAgICBzaXplX3QgbnVtLCBpOwotICAgIEdTdHJpbmcgKnM7Ci0gICAgR3N0Q2FwcyAqc3JjX3RlbXBsYXRlX2NhcHM7Ci0KLSAgICBzID0gZ19zdHJpbmdfbmV3ICgiYXVkaW8veC1yYXcsICIpOwotCi0gICAgbXBnMTIzX2VuY29kaW5ncyAoJmZvcm1hdF9saXN0LCAmbnVtKTsKLSAgICBnX3N0cmluZ19hcHBlbmQgKHMsICJmb3JtYXQgPSB7ICIpOwotICAgIGZvciAoaSA9IDA7IGkgPCBudW07ICsraSkgewotICAgICAgc3dpdGNoIChmb3JtYXRfbGlzdFtpXSkgewotICAgICAgICBjYXNlIE1QRzEyM19FTkNfU0lHTkVEXzE2OgotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgKGkgPiAwKSA/ICIsICIgOiAiIik7Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCBHU1RfQVVESU9fTkUgKFMxNikpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1QRzEyM19FTkNfVU5TSUdORURfMTY6Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCAoaSA+IDApID8gIiwgIiA6ICIiKTsKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIEdTVF9BVURJT19ORSAoVTE2KSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVBHMTIzX0VOQ19TSUdORURfMjQ6Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCAoaSA+IDApID8gIiwgIiA6ICIiKTsKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIEdTVF9BVURJT19ORSAoUzI0KSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgTVBHMTIzX0VOQ19VTlNJR05FRF8yNDoKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIChpID4gMCkgPyAiLCAiIDogIiIpOwotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgR1NUX0FVRElPX05FIChVMjQpKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUEcxMjNfRU5DX1NJR05FRF8zMjoKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIChpID4gMCkgPyAiLCAiIDogIiIpOwotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgR1NUX0FVRElPX05FIChTMzIpKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBNUEcxMjNfRU5DX1VOU0lHTkVEXzMyOgotICAgICAgICAgIGdfc3RyaW5nX2FwcGVuZCAocywgKGkgPiAwKSA/ICIsICIgOiAiIik7Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCBHU1RfQVVESU9fTkUgKFUzMikpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIE1QRzEyM19FTkNfRkxPQVRfMzI6Ci0gICAgICAgICAgZ19zdHJpbmdfYXBwZW5kIChzLCAoaSA+IDApID8gIiwgIiA6ICIiKTsKLSAgICAgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsIEdTVF9BVURJT19ORSAoRjMyKSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgR1NUX0RFQlVHICgiSWdub3JpbmcgbXBnMTIzIGZvcm1hdCAlZCIsIGZvcm1hdF9saXN0W2ldKTsKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gICAgZ19zdHJpbmdfYXBwZW5kIChzLCAiIH0sICIpOwotCi0gICAgbXBnMTIzX3JhdGVzICgmcmF0ZXNfbGlzdCwgJm51bSk7Ci0gICAgZ19zdHJpbmdfYXBwZW5kIChzLCAicmF0ZSA9IChpbnQpIHsgIik7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bTsgKytpKSB7Ci0gICAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChzLCAiJXMlbHUiLCAoaSA+IDApID8gIiwgIiA6ICIiLCByYXRlc19saXN0W2ldKTsKLSAgICB9Ci0gICAgZ19zdHJpbmdfYXBwZW5kIChzLCAifSwgIik7Ci0KLSAgICBnX3N0cmluZ19hcHBlbmQgKHMsICJjaGFubmVscyA9IChpbnQpIFsgMSwgMiBdLCAiKTsKLSAgICBnX3N0cmluZ19hcHBlbmQgKHMsICJsYXlvdXQgPSAoc3RyaW5nKSBpbnRlcmxlYXZlZCIpOwotCi0gICAgc3JjX3RlbXBsYXRlX2NhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAocy0+c3RyKTsKLSAgICBzcmNfdGVtcGxhdGUgPSBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNyYyIsIEdTVF9QQURfU1JDLCBHU1RfUEFEX0FMV0FZUywKLSAgICAgICAgc3JjX3RlbXBsYXRlX2NhcHMpOwotCi0gICAgZ19zdHJpbmdfZnJlZSAocywgVFJVRSk7Ci0gIH0KLQotICBzaW5rX3RlbXBsYXRlID0gZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3RhdGljX3NpbmtfdGVtcGxhdGUpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsIHNpbmtfdGVtcGxhdGUpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLCBzcmNfdGVtcGxhdGUpOwotCi0gIGJhc2VfY2xhc3MtPnN0YXJ0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tcGcxMjNfYXVkaW9fZGVjX3N0YXJ0KTsKLSAgYmFzZV9jbGFzcy0+c3RvcCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXBnMTIzX2F1ZGlvX2RlY19zdG9wKTsKLSAgYmFzZV9jbGFzcy0+aGFuZGxlX2ZyYW1lID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXBnMTIzX2F1ZGlvX2RlY19oYW5kbGVfZnJhbWUpOwotICBiYXNlX2NsYXNzLT5zZXRfZm9ybWF0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tcGcxMjNfYXVkaW9fZGVjX3NldF9mb3JtYXQpOwotICBiYXNlX2NsYXNzLT5mbHVzaCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXBnMTIzX2F1ZGlvX2RlY19mbHVzaCk7Ci0KLSAgZXJyb3IgPSBtcGcxMjNfaW5pdCAoKTsKLSAgaWYgKEdfVU5MSUtFTFkgKGVycm9yICE9IE1QRzEyM19PSykpCi0gICAgR1NUX0VSUk9SICgiQ291bGQgbm90IGluaXRpYWxpemUgbXBnMTIzIGxpYnJhcnk6ICVzIiwKLSAgICAgICAgbXBnMTIzX3BsYWluX3N0cmVycm9yIChlcnJvcikpOwotICBlbHNlCi0gICAgR1NUX0lORk8gKCJtcGcxMjMgbGlicmFyeSBpbml0aWFsaXplZCIpOwotfQotCi0KLXZvaWQKLWdzdF9tcGcxMjNfYXVkaW9fZGVjX2luaXQgKEdzdE1wZzEyM0F1ZGlvRGVjICogbXBnMTIzX2RlY29kZXIpCi17Ci0gIG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgPSBOVUxMOwotICBnc3RfYXVkaW9fZGVjb2Rlcl9zZXRfbmVlZHNfZm9ybWF0IChHU1RfQVVESU9fREVDT0RFUiAobXBnMTIzX2RlY29kZXIpLCBUUlVFKTsKLSAgZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X3VzZV9kZWZhdWx0X3BhZF9hY2NlcHRjYXBzIChHU1RfQVVESU9fREVDT0RFUl9DQVNUCi0gICAgICAobXBnMTIzX2RlY29kZXIpLCBUUlVFKTsKLSAgR1NUX1BBRF9TRVRfQUNDRVBUX1RFTVBMQVRFIChHU1RfQVVESU9fREVDT0RFUl9TSU5LX1BBRCAobXBnMTIzX2RlY29kZXIpKTsKLX0KLQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9tcGcxMjNfYXVkaW9fZGVjX3N0YXJ0IChHc3RBdWRpb0RlY29kZXIgKiBkZWMpCi17Ci0gIEdzdE1wZzEyM0F1ZGlvRGVjICptcGcxMjNfZGVjb2RlcjsKLSAgaW50IGVycm9yOwotCi0gIG1wZzEyM19kZWNvZGVyID0gR1NUX01QRzEyM19BVURJT19ERUMgKGRlYyk7Ci0gIGVycm9yID0gMDsKLQotICBtcGcxMjNfZGVjb2Rlci0+aGFuZGxlID0gbXBnMTIzX25ldyAoTlVMTCwgJmVycm9yKTsKLSAgbXBnMTIzX2RlY29kZXItPmhhc19uZXh0X2F1ZGlvaW5mbyA9IEZBTFNFOwotICBtcGcxMjNfZGVjb2Rlci0+ZnJhbWVfb2Zmc2V0ID0gMDsKLQotICAvKiBJbml0aWFsbHksIHRoZSBtcGcxMjMgaGFuZGxlIGNvbWVzIHdpdGggYSBzZXQgb2YgZGVmYXVsdCBmb3JtYXRzCi0gICAqIHN1cHBvcnRlZC4gVGhpcyBjbGVhcnMgdGhpcyBzZXQuICBUaGlzIGlzIG5lY2Vzc2FyeSwgc2luY2Ugb25seSBvbmUKLSAgICogZm9ybWF0IHNoYWxsIGJlIHN1cHBvcnRlZCAoc2VlIHNldF9mb3JtYXQgZm9yIG1vcmUpLiAqLwotICBtcGcxMjNfZm9ybWF0X25vbmUgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotCi0gIC8qIEJ1aWx0LWluIG1wZzEyMyBzdXBwb3J0IGZvciBnYXBsZXNzIGRlY29kaW5nIGlzIGRpc2FibGVkIGZvciBub3csCi0gICAqIHNpbmNlIGl0IGRvZXMgbm90IHdvcmsgd2VsbCB3aXRoIHNlZWtpbmcgKi8KLSAgbXBnMTIzX3BhcmFtIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlLCBNUEcxMjNfUkVNT1ZFX0ZMQUdTLCBNUEcxMjNfR0FQTEVTUywgMCk7Ci0gIC8qIFRlbGxzIG1wZzEyMyB0byB1c2UgYSBzbWFsbCByZWFkLWFoZWFkIGJ1ZmZlciBmb3IgYmV0dGVyIE1QRUcgc3luYzsKLSAgICogZXNzZW50aWFsIGZvciBNUDMgcmFkaW8gc3RyZWFtcyAqLwotICBtcGcxMjNfcGFyYW0gKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUsIE1QRzEyM19BRERfRkxBR1MsIE1QRzEyM19TRUVLQlVGRkVSLCAwKTsKLSAgLyogU2V0cyB0aGUgcmVzeW5jIGxpbWl0IHRvIHRoZSBlbmQgb2YgdGhlIHN0cmVhbSAob3RoZXJ3aXNlIG1wZzEyMyBtYXkgZ2l2ZQotICAgKiB1cCBvbiBkZWNvZGluZyBwcmVtYXR1cmVseSwgZXNwZWNpYWxseSB3aXRoIG1wMyB3ZWIgcmFkaW9zKSAqLwotICBtcGcxMjNfcGFyYW0gKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUsIE1QRzEyM19SRVNZTkNfTElNSVQsIC0xLCAwKTsKLSNpZiBNUEcxMjNfQVBJX1ZFUlNJT04gPj0gMzYKLSAgLyogVGhlIHByZWNpc2UgQVBJIHZlcnNpb24gd2hlcmUgTVBHMTIzX0FVVE9fUkVTQU1QTEUgYXBwZWFyZWQgaXMKLSAgICogc29tZXdoZXJlIGJldHdlZW4gMjkgYW5kIDM2ICovCi0gIC8qIERvbid0IGxldCBtcGcxMjMgcmVzYW1wbGUgb3V0cHV0ICovCi0gIG1wZzEyM19wYXJhbSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSwgTVBHMTIzX1JFTU9WRV9GTEFHUywKLSAgICAgIE1QRzEyM19BVVRPX1JFU0FNUExFLCAwKTsKLSNlbmRpZgotICAvKiBEb24ndCBsZXQgbXBnMTIzIHByaW50IG1lc3NhZ2VzIHRvIHN0ZG91dC9zdGRlcnIgKi8KLSAgbXBnMTIzX3BhcmFtIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlLCBNUEcxMjNfQUREX0ZMQUdTLCBNUEcxMjNfUVVJRVQsIDApOwotCi0gIC8qIE9wZW4gaW4gZmVlZCBtb2RlICg9IGVuY29kZWQgZGF0YSBpcyBmZWQgbWFudWFsbHkgaW50byB0aGUgaGFuZGxlKS4gKi8KLSAgZXJyb3IgPSBtcGcxMjNfb3Blbl9mZWVkIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKTsKLQotICBpZiAoR19VTkxJS0VMWSAoZXJyb3IgIT0gTVBHMTIzX09LKSkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChkZWMsIExJQlJBUlksIElOSVQsIChOVUxMKSwKLSAgICAgICAgKCIlcyIsIG1wZzEyM19zdHJlcnJvciAobXBnMTIzX2RlY29kZXItPmhhbmRsZSkpKTsKLSAgICBtcGcxMjNfY2xvc2UgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICAgIG1wZzEyM19kZWxldGUgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICAgIG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgPSBOVUxMOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIEdTVF9JTkZPX09CSkVDVCAoZGVjLCAibXBnMTIzIGRlY29kZXIgc3RhcnRlZCIpOwotCi0gIHJldHVybiBUUlVFOwotfQotCi0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X21wZzEyM19hdWRpb19kZWNfc3RvcCAoR3N0QXVkaW9EZWNvZGVyICogZGVjKQotewotICBHc3RNcGcxMjNBdWRpb0RlYyAqbXBnMTIzX2RlY29kZXIgPSBHU1RfTVBHMTIzX0FVRElPX0RFQyAoZGVjKTsKLQotICBpZiAoR19MSUtFTFkgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgIT0gTlVMTCkpIHsKLSAgICBtcGcxMjNfY2xvc2UgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICAgIG1wZzEyM19kZWxldGUgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpOwotICAgIG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgPSBOVUxMOwotICB9Ci0KLSAgR1NUX0lORk9fT0JKRUNUIChkZWMsICJtcGcxMjMgZGVjb2RlciBzdG9wcGVkIik7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9tcGcxMjNfYXVkaW9fZGVjX3B1c2hfZGVjb2RlZF9ieXRlcyAoR3N0TXBnMTIzQXVkaW9EZWMgKiBtcGcxMjNfZGVjb2RlciwKLSAgICB1bnNpZ25lZCBjaGFyIGNvbnN0ICpkZWNvZGVkX2J5dGVzLCBzaXplX3QgY29uc3QgbnVtX2RlY29kZWRfYnl0ZXMpCi17Ci0gIEdzdEJ1ZmZlciAqb3V0cHV0X2J1ZmZlcjsKLSAgR3N0QXVkaW9EZWNvZGVyICpkZWM7Ci0KLSAgb3V0cHV0X2J1ZmZlciA9IE5VTEw7Ci0gIGRlYyA9IEdTVF9BVURJT19ERUNPREVSIChtcGcxMjNfZGVjb2Rlcik7Ci0KLSAgaWYgKChudW1fZGVjb2RlZF9ieXRlcyA9PSAwKSB8fCAoZGVjb2RlZF9ieXRlcyA9PSBOVUxMKSkgewotICAgIC8qIFRoaXMgb2NjdXJzIGluIHRoZSBmaXJzdCBmZXcgZnJhbWVzLCB3aGljaCBkbyBub3QgY2FycnkgZGF0YTsgb25jZQotICAgICAqIE1QRzEyM19BVURJT19ERUNfTkVXX0ZPUk1BVCBpcyByZWNlaXZlZCwgdGhlIGVtcHR5IGZyYW1lcyBzdG9wIG9jY3VycmluZyAqLwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKG1wZzEyM19kZWNvZGVyLAotICAgICAgICAiY2Fubm90IGRlY29kZSB5ZXQsIG5lZWQgbW9yZSBkYXRhIC0+IG5vIG91dHB1dCBidWZmZXIgdG8gcHVzaCIpOwotICAgIHJldHVybiBHU1RfRkxPV19PSzsKLSAgfQotCi0gIG91dHB1dF9idWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZSAoTlVMTCwgbnVtX2RlY29kZWRfYnl0ZXMsIE5VTEwpOwotCi0gIGlmIChvdXRwdXRfYnVmZmVyID09IE5VTEwpIHsKLSAgICAvKiBUaGlzIGlzIG5lY2Vzc2FyeSB0byBhZHZhbmNlIHBsYXliYWNrIGluIHRpbWUsCi0gICAgICogZXZlbiB3aGVuIG5vdGhpbmcgd2FzIGRlY29kZWQuICovCi0gICAgcmV0dXJuIGdzdF9hdWRpb19kZWNvZGVyX2ZpbmlzaF9mcmFtZSAoZGVjLCBOVUxMLCAxKTsKLSAgfSBlbHNlIHsKLSAgICBHc3RNYXBJbmZvIGluZm87Ci0KLSAgICBpZiAoZ3N0X2J1ZmZlcl9tYXAgKG91dHB1dF9idWZmZXIsICZpbmZvLCBHU1RfTUFQX1dSSVRFKSkgewotICAgICAgbWVtY3B5IChpbmZvLmRhdGEsIGRlY29kZWRfYnl0ZXMsIG51bV9kZWNvZGVkX2J5dGVzKTsKLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKG91dHB1dF9idWZmZXIsICZpbmZvKTsKLSAgICB9IGVsc2UgewotICAgICAgR1NUX0VSUk9SX09CSkVDVCAobXBnMTIzX2RlY29kZXIsICJnc3RfYnVmZmVyX21hcCgpIHJldHVybmVkIE5VTEwiKTsKLSAgICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dHB1dF9idWZmZXIpOwotICAgICAgb3V0cHV0X2J1ZmZlciA9IE5VTEw7Ci0gICAgfQotCi0gICAgcmV0dXJuIGdzdF9hdWRpb19kZWNvZGVyX2ZpbmlzaF9mcmFtZSAoZGVjLCBvdXRwdXRfYnVmZmVyLCAxKTsKLSAgfQotfQotCi0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfbXBnMTIzX2F1ZGlvX2RlY19oYW5kbGVfZnJhbWUgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYywKLSAgICBHc3RCdWZmZXIgKiBpbnB1dF9idWZmZXIpCi17Ci0gIEdzdE1wZzEyM0F1ZGlvRGVjICptcGcxMjNfZGVjb2RlcjsKLSAgaW50IGRlY29kZV9lcnJvcjsKLSAgdW5zaWduZWQgY2hhciAqZGVjb2RlZF9ieXRlczsKLSAgc2l6ZV90IG51bV9kZWNvZGVkX2J5dGVzOwotICBHc3RGbG93UmV0dXJuIHJldHZhbDsKLQotICBtcGcxMjNfZGVjb2RlciA9IEdTVF9NUEcxMjNfQVVESU9fREVDIChkZWMpOwotCi0gIGdfYXNzZXJ0IChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlICE9IE5VTEwpOwotCi0gIC8qIFRoZSBhY3R1YWwgZGVjb2RpbmcgKi8KLSAgewotICAgIC8qIGZlZWQgaW5wdXQgZGF0YSAoaWYgdGhlcmUgaXMgYW55KSAqLwotICAgIGlmIChHX0xJS0VMWSAoaW5wdXRfYnVmZmVyICE9IE5VTEwpKSB7Ci0gICAgICBHc3RNYXBJbmZvIGluZm87Ci0KLSAgICAgIGlmIChnc3RfYnVmZmVyX21hcCAoaW5wdXRfYnVmZmVyLCAmaW5mbywgR1NUX01BUF9SRUFEKSkgewotICAgICAgICBtcGcxMjNfZmVlZCAobXBnMTIzX2RlY29kZXItPmhhbmRsZSwgaW5mby5kYXRhLCBpbmZvLnNpemUpOwotICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChpbnB1dF9idWZmZXIsICZpbmZvKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEdTVF9BVURJT19ERUNPREVSX0VSUk9SIChtcGcxMjNfZGVjb2RlciwgMSwgUkVTT1VSQ0UsIFJFQUQsIChOVUxMKSwKLSAgICAgICAgICAgICgiZ3N0X21lbW9yeV9tYXAoKSBmYWlsZWQiKSwgcmV0dmFsKTsKLSAgICAgICAgcmV0dXJuIHJldHZhbDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBUcnkgdG8gZGVjb2RlIGEgZnJhbWUgKi8KLSAgICBkZWNvZGVkX2J5dGVzID0gTlVMTDsKLSAgICBudW1fZGVjb2RlZF9ieXRlcyA9IDA7Ci0gICAgZGVjb2RlX2Vycm9yID0gbXBnMTIzX2RlY29kZV9mcmFtZSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSwKLSAgICAgICAgJm1wZzEyM19kZWNvZGVyLT5mcmFtZV9vZmZzZXQsICZkZWNvZGVkX2J5dGVzLCAmbnVtX2RlY29kZWRfYnl0ZXMpOwotICB9Ci0KLSAgcmV0dmFsID0gR1NUX0ZMT1dfT0s7Ci0KLSAgc3dpdGNoIChkZWNvZGVfZXJyb3IpIHsKLSAgICBjYXNlIE1QRzEyM19ORVdfRk9STUFUOgotICAgICAgLyogQXMgbWVudGlvbmVkIGluIGdzdF9tcGcxMjNfYXVkaW9fZGVjX3NldF9mb3JtYXQoKSwgdGhlIG5leHQgYXVkaW9pbmZvCi0gICAgICAgKiBpcyBub3Qgc2V0IGltbWVkaWF0ZWx5OyBpbnN0ZWFkLCB0aGUgY29kZSB3YWl0cyBmb3IgbXBnMTIzIHRvIHRha2UKLSAgICAgICAqIG5vdGUgb2YgdGhlIG5ldyBmb3JtYXQsIGFuZCB0aGVuIHNldHMgdGhlIGF1ZGlvaW5mby4gVGhpcyBmaXhlcyBnbGl0Y2hlcwotICAgICAgICogd2l0aCBtcDNzIGNvbnRhaW5pbmcgc2V2ZXJhbCBmb3JtYXQgaGVhZGVycyAoZm9yIGV4YW1wbGUsIGZpcnN0IGhhbGYKLSAgICAgICAqIHVzaW5nIDQ0LjFrSHosIHNlY29uZCBoYWxmIDMyIGtIeikgKi8KLQotICAgICAgR1NUX0xPR19PQkpFQ1QgKGRlYywKLSAgICAgICAgICAibXBnMTIzIHJlcG9ydGVkIGEgbmV3IGZvcm1hdCAtPiBzZXR0aW5nIG5leHQgc3JjY2FwcyIpOwotCi0gICAgICBnc3RfbXBnMTIzX2F1ZGlvX2RlY19wdXNoX2RlY29kZWRfYnl0ZXMgKG1wZzEyM19kZWNvZGVyLCBkZWNvZGVkX2J5dGVzLAotICAgICAgICAgIG51bV9kZWNvZGVkX2J5dGVzKTsKLQotICAgICAgLyogSWYgdGhlcmUgaXMgYSBuZXh0IGF1ZGlvaW5mbywgdXNlIGl0LCB0aGVuIHNldCBoYXNfbmV4dF9hdWRpb2luZm8gdG8KLSAgICAgICAqIEZBTFNFLCB0byBtYWtlIHN1cmUgZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X291dHB1dF9mb3JtYXQoKSBpc24ndCBjYWxsZWQKLSAgICAgICAqIGFnYWluIHVudGlsIHNldF9mb3JtYXQgaXMgY2FsbGVkIGJ5IHRoZSBiYXNlIGNsYXNzICovCi0gICAgICBpZiAobXBnMTIzX2RlY29kZXItPmhhc19uZXh0X2F1ZGlvaW5mbykgewotICAgICAgICBpZiAoIWdzdF9hdWRpb19kZWNvZGVyX3NldF9vdXRwdXRfZm9ybWF0IChkZWMsCi0gICAgICAgICAgICAgICAgJihtcGcxMjNfZGVjb2Rlci0+bmV4dF9hdWRpb2luZm8pKSkgewotICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVjLCAiVW5hYmxlIHRvIHNldCBvdXRwdXQgZm9ybWF0Iik7Ci0gICAgICAgICAgcmV0dmFsID0gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7Ci0gICAgICAgIH0KLSAgICAgICAgbXBnMTIzX2RlY29kZXItPmhhc19uZXh0X2F1ZGlvaW5mbyA9IEZBTFNFOwotICAgICAgfQotCi0gICAgICBicmVhazsKLQotICAgIGNhc2UgTVBHMTIzX05FRURfTU9SRToKLSAgICBjYXNlIE1QRzEyM19PSzoKLSAgICAgIHJldHZhbCA9IGdzdF9tcGcxMjNfYXVkaW9fZGVjX3B1c2hfZGVjb2RlZF9ieXRlcyAobXBnMTIzX2RlY29kZXIsCi0gICAgICAgICAgZGVjb2RlZF9ieXRlcywgbnVtX2RlY29kZWRfYnl0ZXMpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIE1QRzEyM19ET05FOgotICAgICAgLyogSWYgdGhpcyBoYXBwZW5zLCB0aGVuIHRoZSB1cHN0cmVhbSBwYXJzZXIgc29tZWhvdyBtaXNzZWQgdGhlIGVuZGluZwotICAgICAgICogb2YgdGhlIGJpdHN0cmVhbSAqLwotICAgICAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIm1wZzEyMyBpcyBkb25lIGRlY29kaW5nIik7Ci0gICAgICBnc3RfbXBnMTIzX2F1ZGlvX2RlY19wdXNoX2RlY29kZWRfYnl0ZXMgKG1wZzEyM19kZWNvZGVyLCBkZWNvZGVkX2J5dGVzLAotICAgICAgICAgIG51bV9kZWNvZGVkX2J5dGVzKTsKLSAgICAgIHJldHZhbCA9IEdTVF9GTE9XX0VPUzsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICB7Ci0gICAgICAvKiBBbnl0aGluZyBlbHNlIGlzIGNvbnNpZGVyZWQgYW4gZXJyb3IgKi8KLSAgICAgIGludCBlcnJjb2RlOwotICAgICAgcmV0dmFsID0gR1NUX0ZMT1dfRVJST1I7ICAvKiB1c2UgZXJyb3IgYnkgZGVmYXVsdCAqLwotICAgICAgc3dpdGNoIChkZWNvZGVfZXJyb3IpIHsKLSAgICAgICAgY2FzZSBNUEcxMjNfRVJSOgotICAgICAgICAgIGVycmNvZGUgPSBtcGcxMjNfZXJyY29kZSAobXBnMTIzX2RlY29kZXItPmhhbmRsZSk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgZXJyY29kZSA9IGRlY29kZV9lcnJvcjsKLSAgICAgIH0KLSAgICAgIHN3aXRjaCAoZXJyY29kZSkgewotICAgICAgICBjYXNlIE1QRzEyM19CQURfT1VURk9STUFUOnsKLSAgICAgICAgICBHc3RDYXBzICppbnB1dF9jYXBzID0KLSAgICAgICAgICAgICAgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQVVESU9fREVDT0RFUl9TSU5LX1BBRCAoZGVjKSk7Ci0gICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRlYywgU1RSRUFNLCBGT1JNQVQsIChOVUxMKSwKLSAgICAgICAgICAgICAgKCJPdXRwdXQgc2FtcGxlIGZvcm1hdCBjb3VsZCBub3QgYmUgdXNlZCB3aGVuIHRyeWluZyB0byBkZWNvZGUgZnJhbWUuICIKLSAgICAgICAgICAgICAgICAgICJUaGlzIGlzIHR5cGljYWxseSBjYXVzZWQgd2hlbiB0aGUgaW5wdXQgY2FwcyAob2Z0ZW4gdGhlIHNhbXBsZSAiCi0gICAgICAgICAgICAgICAgICAicmF0ZSkgZG8gbm90IG1hdGNoIHRoZSBhY3R1YWwgZm9ybWF0IG9mIHRoZSBhdWRpbyBkYXRhLiAiCi0gICAgICAgICAgICAgICAgICAiSW5wdXQgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIGlucHV0X2NhcHMpCi0gICAgICAgICAgICAgICk7Ci0gICAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGlucHV0X2NhcHMpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGRlZmF1bHQ6ewotICAgICAgICAgIGNoYXIgY29uc3QgKmVycm1zZyA9IG1wZzEyM19wbGFpbl9zdHJlcnJvciAoZXJyY29kZSk7Ci0gICAgICAgICAgLyogR1NUX0FVRElPX0RFQ09ERVJfRVJST1Igc2V0cyBhIG5ldyByZXR1cm4gdmFsdWUgYWNjb3JkaW5nIHRvCi0gICAgICAgICAgICogaXRzIGVzdGltYXRpb25zICovCi0gICAgICAgICAgR1NUX0FVRElPX0RFQ09ERVJfRVJST1IgKG1wZzEyM19kZWNvZGVyLCAxLCBTVFJFQU0sIERFQ09ERSwgKE5VTEwpLAotICAgICAgICAgICAgICAoIm1wZzEyMyBkZWNvZGluZyBlcnJvcjogJXMiLCBlcnJtc2cpLCByZXR2YWwpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIHJldHZhbDsKLX0KLQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9tcGcxMjNfYXVkaW9fZGVjX3NldF9mb3JtYXQgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYywgR3N0Q2FwcyAqIGlucHV0X2NhcHMpCi17Ci0gIC8qICJlbmNvZGluZyIgaXMgdGhlIHNhbXBsZSBmb3JtYXQgc3BlY2lmaWVyIGZvciBtcGcxMjMgKi8KLSAgaW50IGVuY29kaW5nOwotICBpbnQgc2FtcGxlX3JhdGUsIG51bV9jaGFubmVsczsKLSAgR3N0QXVkaW9Gb3JtYXQgZm9ybWF0OwotICBHc3RNcGcxMjNBdWRpb0RlYyAqbXBnMTIzX2RlY29kZXI7Ci0gIGdib29sZWFuIHJldHZhbCA9IEZBTFNFOwotCi0gIG1wZzEyM19kZWNvZGVyID0gR1NUX01QRzEyM19BVURJT19ERUMgKGRlYyk7Ci0KLSAgZ19hc3NlcnQgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUgIT0gTlVMTCk7Ci0KLSAgbXBnMTIzX2RlY29kZXItPmhhc19uZXh0X2F1ZGlvaW5mbyA9IEZBTFNFOwotCi0gIC8qIEdldCBzYW1wbGUgcmF0ZSBhbmQgbnVtYmVyIG9mIGNoYW5uZWxzIGZyb20gaW5wdXRfY2FwcyAqLwotICB7Ci0gICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7Ci0gICAgZ2Jvb2xlYW4gZXJyID0gRkFMU0U7Ci0KLSAgICAvKiBPbmx5IHRoZSBmaXJzdCBzdHJ1Y3R1cmUgaXMgdXNlZCAobXVsdGlwbGUKLSAgICAgKiBpbnB1dCBjYXBzIHN0cnVjdHVyZXMgZG9uJ3QgbWFrZSBzZW5zZSAqLwotICAgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGlucHV0X2NhcHMsIDApOwotCi0gICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgInJhdGUiLCAmc2FtcGxlX3JhdGUpKSB7Ci0gICAgICBlcnIgPSBUUlVFOwotICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZGVjLCAiSW5wdXQgY2FwcyBkbyBub3QgaGF2ZSBhIHJhdGUgdmFsdWUiKTsKLSAgICB9Ci0gICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImNoYW5uZWxzIiwgJm51bV9jaGFubmVscykpIHsKLSAgICAgIGVyciA9IFRSVUU7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChkZWMsICJJbnB1dCBjYXBzIGRvIG5vdCBoYXZlIGEgY2hhbm5lbCB2YWx1ZSIpOwotICAgIH0KLQotICAgIGlmIChHX1VOTElLRUxZIChlcnIpKQotICAgICAgZ290byBkb25lOwotICB9Ci0KLSAgLyogR2V0IHNhbXBsZSBmb3JtYXQgZnJvbSB0aGUgYWxsb3dlZCBzcmMgY2FwcyAqLwotICB7Ci0gICAgR3N0Q2FwcyAqYWxsb3dlZF9zcmNjYXBzID0KLSAgICAgICAgZ3N0X3BhZF9nZXRfYWxsb3dlZF9jYXBzIChHU1RfQVVESU9fREVDT0RFUl9TUkNfUEFEIChkZWMpKTsKLQotICAgIGlmIChhbGxvd2VkX3NyY2NhcHMgPT0gTlVMTCkgewotICAgICAgLyogc3JjcGFkIGlzIG5vdCBsaW5rZWQgKHlldCksIHNvIG5vIHBlZXIgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlOwotICAgICAgICoganVzdCB1c2UgdGhlIGRlZmF1bHQgc2FtcGxlIGZvcm1hdCAoMTYgYml0IHNpZ25lZCBpbnRlZ2VyKSAqLwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAobXBnMTIzX2RlY29kZXIsCi0gICAgICAgICAgInNyY3BhZCBpcyBub3QgbGlua2VkICh5ZXQpIC0+IHVzaW5nIFMxNiBzYW1wbGUgZm9ybWF0Iik7Ci0gICAgICBmb3JtYXQgPSBHU1RfQVVESU9fRk9STUFUX1MxNjsKLSAgICAgIGVuY29kaW5nID0gTVBHMTIzX0VOQ19TSUdORURfMTY7Ci0gICAgfSBlbHNlIGlmIChnc3RfY2Fwc19pc19lbXB0eSAoYWxsb3dlZF9zcmNjYXBzKSkgewotICAgICAgZ3N0X2NhcHNfdW5yZWYgKGFsbG93ZWRfc3JjY2Fwcyk7Ci0gICAgICBnb3RvIGRvbmU7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGdjaGFyIGNvbnN0ICpmb3JtYXRfc3RyOwotICAgICAgR1ZhbHVlIGNvbnN0ICpmb3JtYXRfdmFsdWU7Ci0KLSAgICAgIC8qIExvb2sgYXQgdGhlIHNhbXBsZSBmb3JtYXQgdmFsdWVzIGZyb20gdGhlIGZpcnN0IHN0cnVjdHVyZSAqLwotICAgICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChhbGxvd2VkX3NyY2NhcHMsIDApOwotICAgICAgZm9ybWF0X3ZhbHVlID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0cnVjdHVyZSwgImZvcm1hdCIpOwotCi0gICAgICBpZiAoZm9ybWF0X3ZhbHVlID09IE5VTEwpIHsKLSAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGFsbG93ZWRfc3JjY2Fwcyk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICAgIH0gZWxzZSBpZiAoR1NUX1ZBTFVFX0hPTERTX0xJU1QgKGZvcm1hdF92YWx1ZSkpIHsKLSAgICAgICAgLyogaWYgdmFsdWUgaXMgYSBmb3JtYXQgbGlzdCwgcGljayB0aGUgZmlyc3QgZW50cnkgKi8KLSAgICAgICAgR1ZhbHVlIGNvbnN0ICpmbXRfbGlzdF92YWx1ZSA9Ci0gICAgICAgICAgICBnc3RfdmFsdWVfbGlzdF9nZXRfdmFsdWUgKGZvcm1hdF92YWx1ZSwgMCk7Ci0gICAgICAgIGZvcm1hdF9zdHIgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKGZtdF9saXN0X3ZhbHVlKTsKLSAgICAgIH0gZWxzZSBpZiAoR19WQUxVRV9IT0xEU19TVFJJTkcgKGZvcm1hdF92YWx1ZSkpIHsKLSAgICAgICAgLyogaWYgdmFsdWUgaXMgYSBzdHJpbmcsIHVzZSBpdCBkaXJlY3RseSAqLwotICAgICAgICBmb3JtYXRfc3RyID0gZ192YWx1ZV9nZXRfc3RyaW5nIChmb3JtYXRfdmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAobXBnMTIzX2RlY29kZXIsICJ1bmV4cGVjdGVkIHR5cGUgZm9yICdmb3JtYXQnIGZpZWxkICIKLSAgICAgICAgICAgICJpbiBjYXBzIHN0cnVjdHVyZSAlIiBHU1RfUFRSX0ZPUk1BVCwgc3RydWN0dXJlKTsKLSAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGFsbG93ZWRfc3JjY2Fwcyk7Ci0gICAgICAgIGdvdG8gZG9uZTsKLSAgICAgIH0KLQotICAgICAgLyogZ2V0IHRoZSBmb3JtYXQgdmFsdWUgZnJvbSB0aGUgc3RyaW5nICovCi0gICAgICBmb3JtYXQgPSBnc3RfYXVkaW9fZm9ybWF0X2Zyb21fc3RyaW5nIChmb3JtYXRfc3RyKTsKLSAgICAgIGdzdF9jYXBzX3VucmVmIChhbGxvd2VkX3NyY2NhcHMpOwotCi0gICAgICBnX2Fzc2VydCAoZm9ybWF0ICE9IEdTVF9BVURJT19GT1JNQVRfVU5LTk9XTik7Ci0KLSAgICAgIC8qIGNvbnZlcnQgZm9ybWF0IHRvIG1wZzEyMyBlbmNvZGluZyAqLwotICAgICAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MxNjoKLSAgICAgICAgICBlbmNvZGluZyA9IE1QRzEyM19FTkNfU0lHTkVEXzE2OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzI0OgotICAgICAgICAgIGVuY29kaW5nID0gTVBHMTIzX0VOQ19TSUdORURfMjQ7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9TMzI6Ci0gICAgICAgICAgZW5jb2RpbmcgPSBNUEcxMjNfRU5DX1NJR05FRF8zMjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1UxNjoKLSAgICAgICAgICBlbmNvZGluZyA9IE1QRzEyM19FTkNfVU5TSUdORURfMTY7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9VMjQ6Ci0gICAgICAgICAgZW5jb2RpbmcgPSBNUEcxMjNfRU5DX1VOU0lHTkVEXzI0OwotICAgICAgICAgIGJyZWFrOwotICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfVTMyOgotICAgICAgICAgIGVuY29kaW5nID0gTVBHMTIzX0VOQ19VTlNJR05FRF8zMjsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX0YzMjoKLSAgICAgICAgICBlbmNvZGluZyA9IE1QRzEyM19FTkNfRkxPQVRfMzI7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gICAgICAgICAgZ290byBkb25lOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIC8qIFNhbXBsZSByYXRlLCBudW1iZXIgb2YgY2hhbm5lbHMsIGFuZCBzYW1wbGUgZm9ybWF0IGFyZSBrbm93biBhdCB0aGlzIHBvaW50LgotICAgKiBTZXQgdGhlIGF1ZGlvaW5mbyBzdHJ1Y3R1cmUncyB2YWx1ZXMgYW5kIHRoZSBtcGcxMjMgZm9ybWF0LiAqLwotICB7Ci0gICAgaW50IGVycjsKLQotICAgIC8qIGNsZWFyIGFsbCBleGlzdGluZyBmb3JtYXQgc2V0dGluZ3MgZnJvbSB0aGUgbXBnMTIzIGluc3RhbmNlICovCi0gICAgbXBnMTIzX2Zvcm1hdF9ub25lIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKTsKLSAgICAvKiBzZXQgdGhlIGNob3NlbiBmb3JtYXQgKi8KLSAgICBlcnIgPQotICAgICAgICBtcGcxMjNfZm9ybWF0IChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlLCBzYW1wbGVfcmF0ZSwgbnVtX2NoYW5uZWxzLAotICAgICAgICBlbmNvZGluZyk7Ci0KLSAgICBpZiAoZXJyICE9IE1QRzEyM19PSykgewotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZWMsCi0gICAgICAgICAgIm1wZzEyM19mb3JtYXQoKSBmYWlsZWQ6ICVzIiwKLSAgICAgICAgICBtcGcxMjNfc3RyZXJyb3IgKG1wZzEyM19kZWNvZGVyLT5oYW5kbGUpKTsKLSAgICB9IGVsc2UgewotICAgICAgZ3N0X2F1ZGlvX2luZm9faW5pdCAoJihtcGcxMjNfZGVjb2Rlci0+bmV4dF9hdWRpb2luZm8pKTsKLSAgICAgIGdzdF9hdWRpb19pbmZvX3NldF9mb3JtYXQgKCYobXBnMTIzX2RlY29kZXItPm5leHRfYXVkaW9pbmZvKSwgZm9ybWF0LAotICAgICAgICAgIHNhbXBsZV9yYXRlLCBudW1fY2hhbm5lbHMsIE5VTEwpOwotICAgICAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIlRoZSBuZXh0IGF1ZGlvIGZvcm1hdCBpczogJXMsICV1IEh6LCAldSBjaGFubmVscyIsCi0gICAgICAgICAgZ3N0X2F1ZGlvX2Zvcm1hdF90b19zdHJpbmcgKGZvcm1hdCksIHNhbXBsZV9yYXRlLCBudW1fY2hhbm5lbHMpOwotICAgICAgbXBnMTIzX2RlY29kZXItPmhhc19uZXh0X2F1ZGlvaW5mbyA9IFRSVUU7Ci0KLSAgICAgIHJldHZhbCA9IFRSVUU7Ci0gICAgfQotICB9Ci0KLWRvbmU6Ci0gIHJldHVybiByZXR2YWw7Ci19Ci0KLQotc3RhdGljIHZvaWQKLWdzdF9tcGcxMjNfYXVkaW9fZGVjX2ZsdXNoIChHc3RBdWRpb0RlY29kZXIgKiBkZWMsIGdib29sZWFuIGhhcmQpCi17Ci0gIGludCBlcnJvcjsKLSAgR3N0TXBnMTIzQXVkaW9EZWMgKm1wZzEyM19kZWNvZGVyOwotCi0gIEdTVF9MT0dfT0JKRUNUIChkZWMsICJGbHVzaGluZyBkZWNvZGVyIik7Ci0KLSAgbXBnMTIzX2RlY29kZXIgPSBHU1RfTVBHMTIzX0FVRElPX0RFQyAoZGVjKTsKLQotICBnX2Fzc2VydCAobXBnMTIzX2RlY29kZXItPmhhbmRsZSAhPSBOVUxMKTsKLQotICAvKiBGbHVzaCBieSByZW9wZW5pbmcgdGhlIGZlZWQgKi8KLSAgbXBnMTIzX2Nsb3NlIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKTsKLSAgZXJyb3IgPSBtcGcxMjNfb3Blbl9mZWVkIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKTsKLQotICBpZiAoR19VTkxJS0VMWSAoZXJyb3IgIT0gTVBHMTIzX09LKSkgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChkZWMsIExJQlJBUlksIElOSVQsIChOVUxMKSwKLSAgICAgICAgKCJFcnJvciB3aGlsZSByZW9wZW5pbmcgbXBnMTIzIGZlZWQ6ICVzIiwKLSAgICAgICAgICAgIG1wZzEyM19wbGFpbl9zdHJlcnJvciAoZXJyb3IpKSk7Ci0gICAgbXBnMTIzX2Nsb3NlIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKTsKLSAgICBtcGcxMjNfZGVsZXRlIChtcGcxMjNfZGVjb2Rlci0+aGFuZGxlKTsKLSAgICBtcGcxMjNfZGVjb2Rlci0+aGFuZGxlID0gTlVMTDsKLSAgfQotCi0gIGlmIChoYXJkKQotICAgIG1wZzEyM19kZWNvZGVyLT5oYXNfbmV4dF9hdWRpb2luZm8gPSBGQUxTRTsKLQotICAvKiBvcGVuaW5nL2Nsb3NpbmcgZmVlZHMgZG8gbm90IGFmZmVjdCB0aGUgZm9ybWF0IGRlZmluZWQgYnkgdGhlCi0gICAqIG1wZzEyM19mb3JtYXQoKSBjYWxsIHRoYXQgd2FzIG1hZGUgaW4gZ3N0X21wZzEyM19hdWRpb19kZWNfc2V0X2Zvcm1hdCgpLAotICAgKiBhbmQgc2luY2UgdGhlIHVwL2Rvd25zdHJlYW0gY2FwcyBhcmUgbm90IGV4cGVjdGVkIHRvIGNoYW5nZSBoZXJlLCBubwotICAgKiBtcGcxMjNfZm9ybWF0KCkgY2FsbHMgYXJlIGRvbmUgKi8KLX0KLQotc3RhdGljIGdib29sZWFuCi1wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQotewotICByZXR1cm4gZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgIm1wZzEyM2F1ZGlvZGVjIiwKLSAgICAgIEdTVF9SQU5LX01BUkdJTkFMLCBnc3RfbXBnMTIzX2F1ZGlvX2RlY19nZXRfdHlwZSAoKSk7Ci19Ci0KLUdTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKLSAgICBHU1RfVkVSU0lPTl9NSU5PUiwKLSAgICBtcGcxMjMsICJtcDMgZGVjb2RpbmcgYmFzZWQgb24gdGhlIG1wZzEyMyBsaWJyYXJ5IiwKLSAgICBwbHVnaW5faW5pdCwgVkVSU0lPTiwgIkxHUEwiLCBHU1RfUEFDS0FHRV9OQU1FLCBHU1RfUEFDS0FHRV9PUklHSU4pCmRpZmYgLS1naXQgYS9leHQvbXBnMTIzL2dzdG1wZzEyM2F1ZGlvZGVjLmggYi9leHQvbXBnMTIzL2dzdG1wZzEyM2F1ZGlvZGVjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4MzdhNTYuLjAwMDAwMDAKLS0tIGEvZXh0L21wZzEyMy9nc3RtcGcxMjNhdWRpb2RlYy5oCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotLyogIE1QMyBkZWNvZGluZyBwbHVnaW4gZm9yIEdTdHJlYW1lciB1c2luZyB0aGUgbXBnMTIzIGxpYnJhcnkKLSAqICBDb3B5cmlnaHQgKEMpIDIwMTIgQ2FybG9zIFJhZmFlbCBHaWFuaQotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqICBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqICBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgIFVTQQotICovCi0KLSNpZm5kZWYgX19HU1RfTVBHMTIzX0FVRElPX0RFQ19IX18KLSNkZWZpbmUgX19HU1RfTVBHMTIzX0FVRElPX0RFQ19IX18KLQotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9kZWNvZGVyLmg+Ci0jaW5jbHVkZSA8bXBnMTIzLmg+Ci0KLQotR19CRUdJTl9ERUNMUwotCi0KLXR5cGVkZWYgc3RydWN0IF9Hc3RNcGcxMjNBdWRpb0RlYyBHc3RNcGcxMjNBdWRpb0RlYzsKLXR5cGVkZWYgc3RydWN0IF9Hc3RNcGcxMjNBdWRpb0RlY0NsYXNzIEdzdE1wZzEyM0F1ZGlvRGVjQ2xhc3M7Ci0KLQotI2RlZmluZSBHU1RfVFlQRV9NUEcxMjNfQVVESU9fREVDICAgICAgICAgICAgIChnc3RfbXBnMTIzX2F1ZGlvX2RlY19nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfTVBHMTIzX0FVRElPX0RFQyhvYmopICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgR1NUX1RZUEVfTVBHMTIzX0FVRElPX0RFQyxHc3RNcGcxMjNBdWRpb0RlYykpCi0jZGVmaW5lIEdTVF9NUEcxMjNfQVVESU9fREVDX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEdTVF9UWVBFX01QRzEyM19BVURJT19ERUMsR3N0TXBnMTIzQXVkaW9EZWNDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19NUEcxMjNfQVVESU9fREVDKG9iaikgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLCBHU1RfVFlQRV9NUEcxMjNfQVVESU9fREVDKSkKLSNkZWZpbmUgR1NUX0lTX01QRzEyM19BVURJT19ERUNfQ0xBU1Moa2xhc3MpICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgR1NUX1RZUEVfTVBHMTIzX0FVRElPX0RFQykpCi0KLXN0cnVjdCBfR3N0TXBnMTIzQXVkaW9EZWMKLXsKLSAgR3N0QXVkaW9EZWNvZGVyIHBhcmVudDsKLQotICBtcGcxMjNfaGFuZGxlICpoYW5kbGU7Ci0KLSAgR3N0QXVkaW9JbmZvIG5leHRfYXVkaW9pbmZvOwotICBnYm9vbGVhbiBoYXNfbmV4dF9hdWRpb2luZm87Ci0KLSAgb2ZmX3QgZnJhbWVfb2Zmc2V0OwotfTsKLQotCi1zdHJ1Y3QgX0dzdE1wZzEyM0F1ZGlvRGVjQ2xhc3MKLXsKLSAgR3N0QXVkaW9EZWNvZGVyQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotR19HTlVDX0lOVEVSTkFMIEdUeXBlIGdzdF9tcGcxMjNfYXVkaW9fZGVjX2dldF90eXBlICh2b2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmCmRpZmYgLS1naXQgYS9leHQvbXBsZXgvTWFrZWZpbGUuaW4gYi9leHQvbXBsZXgvTWFrZWZpbGUuaW4KaW5kZXggYTdjZjhkNS4uYjkxMTU4MCAxMDA2NDQKLS0tIGEvZXh0L21wbGV4L01ha2VmaWxlLmluCisrKyBiL2V4dC9tcGxleC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzgsNiArMjc3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTUsNiArMzE2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjMsNyArMzI2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQyLDggKzM0NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjAsMTYgKzM2MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTUsNiArMzk5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIwLDYgKzQyNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMSw2ICs1MjksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM0LDggKzU0Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MSw2ICs1NTgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA4LDE2ICs2MTcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjksNiArNjgwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OSw2ICs2OTEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODgsNiArNzAxLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNSw3ICs3NDAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9tcGxleC9nc3RtcGxleC5jYyBiL2V4dC9tcGxleC9nc3RtcGxleC5jYwppbmRleCBiMTA5ZDE4Li5hZTUwYmVhIDEwMDY0NAotLS0gYS9leHQvbXBsZXgvZ3N0bXBsZXguY2MKKysrIGIvZXh0L21wbGV4L2dzdG1wbGV4LmNjCkBAIC0zNSw3ICszNSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAwMCAhIG1wZWcyZW5jICEgbXBsZXggISBmaWxlc2luayBsb2NhdGlvbj12aWRlb3Rlc3RzcmMubXBnCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTAwMCAhIG1wZWcyZW5jICEgbXBsZXggISBmaWxlc2luayBsb2NhdGlvbj12aWRlb3Rlc3RzcmMubXBnCiAgKiBdfCBUaGlzIGV4YW1wbGUgcGlwZWxpbmUgd2lsbCBlbmNvZGUgYSB0ZXN0IHZpZGVvIHNvdXJjZSB0byBhbgogICogTVBFRzEgZWxlbWVudGFyeSBzdHJlYW0gYW5kIG11bHRpcGxleGVzIHRoaXMgdG8gYW4gTVBFRyBzeXN0ZW0gc3RyZWFtLgogICogPHBhcmE+CmRpZmYgLS1naXQgYS9leHQvbXVzZXBhY2svTWFrZWZpbGUuaW4gYi9leHQvbXVzZXBhY2svTWFrZWZpbGUuaW4KaW5kZXggNDY2YWQzYS4uNTA2Y2M1YSAxMDA2NDQKLS0tIGEvZXh0L211c2VwYWNrL01ha2VmaWxlLmluCisrKyBiL2V4dC9tdXNlcGFjay9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9uYXMvTWFrZWZpbGUuaW4gYi9leHQvbmFzL01ha2VmaWxlLmluCmluZGV4IDQ4NzA2ZGQuLjk5YTFlYzEgMTAwNjQ0Ci0tLSBhL2V4dC9uYXMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L25hcy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9uZW9uL01ha2VmaWxlLmluIGIvZXh0L25lb24vTWFrZWZpbGUuaW4KaW5kZXggODBiNzMzMS4uZDU5N2MyZiAxMDA2NDQKLS0tIGEvZXh0L25lb24vTWFrZWZpbGUuaW4KKysrIGIvZXh0L25lb24vTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvbmVvbi9nc3RuZW9uaHR0cHNyYy5jIGIvZXh0L25lb24vZ3N0bmVvbmh0dHBzcmMuYwppbmRleCBlMjBiNTA5Li44YTRmZjBkIDEwMDY0NAotLS0gYS9leHQvbmVvbi9nc3RuZW9uaHR0cHNyYy5jCisrKyBiL2V4dC9uZW9uL2dzdG5lb25odHRwc3JjLmMKQEAgLTMyMSw4ICszMjEsNyBAQAogICAgICAgYnJlYWs7CiAgICAgfQogICAgIGNhc2UgUFJPUF9VU0VSX0FHRU5UOgotICAgICAgaWYgKHNyYy0+dXNlcl9hZ2VudCkKLSAgICAgICAgZ19mcmVlIChzcmMtPnVzZXJfYWdlbnQpOworICAgICAgZ19mcmVlIChzcmMtPnVzZXJfYWdlbnQpOwogICAgICAgc3JjLT51c2VyX2FnZW50ID0gZ19zdHJkdXAgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9DT09LSUVTOgpkaWZmIC0tZ2l0IGEvZXh0L29mYS9NYWtlZmlsZS5pbiBiL2V4dC9vZmEvTWFrZWZpbGUuaW4KaW5kZXggYTY3ZGU4MC4uNDNiNDkwZSAxMDA2NDQKLS0tIGEvZXh0L29mYS9NYWtlZmlsZS5pbgorKysgYi9leHQvb2ZhL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L29wZW5hbC9NYWtlZmlsZS5pbiBiL2V4dC9vcGVuYWwvTWFrZWZpbGUuaW4KaW5kZXggM2JmM2I5Ny4uYWMwMDAzZiAxMDA2NDQKLS0tIGEvZXh0L29wZW5hbC9NYWtlZmlsZS5pbgorKysgYi9leHQvb3BlbmFsL01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OSw2ICsyNzgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNiw2ICszMTcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNCw3ICszMjcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDMsOCArMzQ1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MSwxNiArMzY0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Niw2ICs0MDAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjEsNiArNDI3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIyLDYgKzUzMCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzUsOCArNTQ0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUyLDYgKzU1OSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDksMTYgKzYxOCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MCw2ICs2ODEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgwLDYgKzY5Miw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OSw2ICs3MDIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI2LDcgKzc0MSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L29wZW5hbC9nc3RvcGVuYWxzaW5rLmMgYi9leHQvb3BlbmFsL2dzdG9wZW5hbHNpbmsuYwppbmRleCAxZmExYzY1Li43NGY1OGU0IDEwMDY0NAotLS0gYS9leHQvb3BlbmFsL2dzdG9wZW5hbHNpbmsuYworKysgYi9leHQvb3BlbmFsL2dzdG9wZW5hbHNpbmsuYwpAQCAtMzQsMTMgKzM0LDEzIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgdm9sdW1lIHZvbHVtZT0wLjUgISBvcGVuYWxzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISB2b2x1bWUgdm9sdW1lPTAuNSAhIG9wZW5hbHNpbmsKICAqIF18IHdpbGwgcGxheSBhIHNpbmUgd2F2ZSAoY29udGludW91cyBiZWVwIHNvdW5kKSB0aHJvdWdoIE9wZW5BTC4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249c3RyZWFtLndhdiAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIG9wZW5hbHNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249c3RyZWFtLndhdiAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIG9wZW5hbHNpbmsKICAqIF18IHdpbGwgcGxheSBhIHdhdiBhdWRpbyBmaWxlIHRocm91Z2ggT3BlbkFMLgogICogfFsKLSAqIGdzdC1sYXVuY2ggb3BlbmFsc3JjICEgImF1ZGlvL3gtcmF3LGZvcm1hdD1TMTZMRSxyYXRlPTQ0MTAwIiAhIGF1ZGlvY29udmVydCAhIHZvbHVtZSB2b2x1bWU9MC4yNSAhIG9wZW5hbHNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIG9wZW5hbHNyYyAhICJhdWRpby94LXJhdyxmb3JtYXQ9UzE2TEUscmF0ZT00NDEwMCIgISBhdWRpb2NvbnZlcnQgISB2b2x1bWUgdm9sdW1lPTAuMjUgISBvcGVuYWxzaW5rCiAgKiBdfCB3aWxsIGNhcHR1cmUgYW5kIHBsYXkgYXVkaW8gdGhyb3VnaCBPcGVuQUwuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9leHQvb3BlbmFsL2dzdG9wZW5hbHNyYy5jIGIvZXh0L29wZW5hbC9nc3RvcGVuYWxzcmMuYwppbmRleCBlZjQ4NDc1Li5kMDZiM2M0IDEwMDY0NAotLS0gYS9leHQvb3BlbmFsL2dzdG9wZW5hbHNyYy5jCisrKyBiL2V4dC9vcGVuYWwvZ3N0b3BlbmFsc3JjLmMKQEAgLTU3LDEwICs1NywxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IG9wZW5hbHNyYyAhIGF1ZGlvY29udmVydCAhIHdhdmVuYyAhIGZpbGVzaW5rIGxvY2F0aW9uPXN0cmVhbS53YXYKKyAqIGdzdC1sYXVuY2gtMS4wIC12IG9wZW5hbHNyYyAhIGF1ZGlvY29udmVydCAhIHdhdmVuYyAhIGZpbGVzaW5rIGxvY2F0aW9uPXN0cmVhbS53YXYKICAqIF18ICogd2lsbCBjYXB0dXJlIHNvdW5kIHRocm91Z2ggT3BlbkFMIGFuZCBlbmNvZGUgaXQgdG8gYSB3YXYgZmlsZS4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIG9wZW5hbHNyYyAhICJhdWRpby94LXJhdyxmb3JtYXQ9UzE2TEUscmF0ZT00NDEwMCIgISBhdWRpb2NvbnZlcnQgISB2b2x1bWUgdm9sdW1lPTAuMjUgISBvcGVuYWxzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBvcGVuYWxzcmMgISAiYXVkaW8veC1yYXcsZm9ybWF0PVMxNkxFLHJhdGU9NDQxMDAiICEgYXVkaW9jb252ZXJ0ICEgdm9sdW1lIHZvbHVtZT0wLjI1ICEgb3BlbmFsc2luawogICogXXwgd2lsbCBjYXB0dXJlIGFuZCBwbGF5IGF1ZGlvIHRocm91Z2ggT3BlbkFMLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9NYWtlZmlsZS5hbSBiL2V4dC9vcGVuY3YvTWFrZWZpbGUuYW0KaW5kZXggNzI0NzJmYi4uMGVlZTM4YyAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9NYWtlZmlsZS5hbQorKysgYi9leHQvb3BlbmN2L01ha2VmaWxlLmFtCkBAIC0yLDI0ICsyLDI0IEBACiAKICMgc291cmNlcyB1c2VkIHRvIGNvbXBpbGUgdGhpcyBwbHVnLWluCiBsaWJnc3RvcGVuY3ZfbGFfU09VUkNFUyA9IGdzdG9wZW5jdi5jcHAgXAotCQkJZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYyBcCi0JCQlnc3RvcGVuY3Z1dGlscy5jIFwKLQkJCWdzdGN2ZGlsYXRlLmMgXAotCQkJZ3N0Y3ZkaWxhdGVlcm9kZS5jIFwKLQkJCWdzdGN2ZXF1YWxpemVoaXN0LmMgXAotCQkJZ3N0Y3Zlcm9kZS5jIFwKLQkJCWdzdGN2bGFwbGFjZS5jIFwKLQkJCWdzdGN2c21vb3RoLmMgXAotCQkJZ3N0Y3Zzb2JlbC5jIFwKKwkJCWdzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcCBcCisJCQlnc3RvcGVuY3Z1dGlscy5jcHAgXAorCQkJZ3N0Y3ZkaWxhdGUuY3BwIFwKKwkJCWdzdGN2ZGlsYXRlZXJvZGUuY3BwIFwKKwkJCWdzdGN2ZXF1YWxpemVoaXN0LmNwcCBcCisJCQlnc3RjdmVyb2RlLmNwcCBcCisJCQlnc3RjdmxhcGxhY2UuY3BwIFwKKwkJCWdzdGN2c21vb3RoLmNwcCBcCisJCQlnc3RjdnNvYmVsLmNwcCBcCiAJCQlnc3RlZGdlZGV0ZWN0LmNwcCBcCiAJCQlnc3RmYWNlYmx1ci5jcHAgXAotCQkJZ3N0aGFuZGRldGVjdC5jIFwKLQkJCWdzdHB5cmFtaWRzZWdtZW50LmMgXAotCQkJZ3N0dGVtcGxhdGVtYXRjaC5jIFwKLQkJCWdzdHRleHRvdmVybGF5LmMgXAotCQkJZ3N0bW90aW9uY2VsbHMuYyBcCi0JCQlnc3Rza2luZGV0ZWN0LmMgXAotCQkJZ3N0cmV0aW5leC5jIFwKKwkJCWdzdGhhbmRkZXRlY3QuY3BwIFwKKwkJCWdzdHB5cmFtaWRzZWdtZW50LmNwcCBcCisJCQlnc3R0ZW1wbGF0ZW1hdGNoLmNwcCBcCisJCQlnc3R0ZXh0b3ZlcmxheS5jcHAgXAorCQkJZ3N0bW90aW9uY2VsbHMuY3BwIFwKKwkJCWdzdHNraW5kZXRlY3QuY3BwIFwKKwkJCWdzdHJldGluZXguY3BwIFwKIAkJCWdzdGZhY2VkZXRlY3QuY3BwIFwKIAkJCWdzdHNlZ21lbnRhdGlvbi5jcHAgXAogCQkJZ3N0Z3JhYmN1dC5jcHAgXApAQCAtMjcsNyArMjcsOCBAQAogCQkJbW90aW9uY2VsbHNfd3JhcHBlci5jcHAgXAogCQkJTW90aW9uQ2VsbHMuY3BwCiAKLWxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DWFhGTEFHUykgJChPUEVOQ1ZfQ0ZMQUdTKQorbGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NYWEZMQUdTKSAkKE9QRU5DVl9DRkxBR1MpIFwKKwktREdTVF9IQUFSX0NBU0NBREVTX0RJUj1cIiQocGtnZGF0YWRpcikvQEdTVF9BUElfVkVSU0lPTkAvb3BlbmN2X2hhYXJjYXNjYWRlc1wiCiAKICMgZmxhZ3MgdXNlZCB0byBjb21waWxlIHRoaXMgZmFjZWRldGVjdAogIyBhZGQgb3RoZXIgX0NGTEFHUyBhbmQgX0xJQlMgYXMgbmVlZGVkCkBAIC0zNiw3ICszNyw2IEBACiAjIE9wZW5DVidzIGRlZmluZSBpc24ndCBnb29kIGVub3VnaCB0byBhdm9pZCAndW51c2VkJyBnY2Mgd2FybmluZ3MgKGF0IHYyLjEuMCkKIGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgXAogCSQoR1NUX0NGTEFHUykgJChPUEVOQ1ZfQ0ZMQUdTKSBcCi0JLURHU1RfSEFBUl9DQVNDQURFU19ESVI9XCIkKHBrZ2RhdGFkaXIpL0BHU1RfQVBJX1ZFUlNJT05AL29wZW5jdl9oYWFyY2FzY2FkZXNcIiBcCiAJLURDVl9JTkxJTkU9InN0YXRpYyBpbmxpbmUiIFwKIAktRENWX05PX0JBQ0tXQVJEX0NPTVBBVElCSUxJVFkKIApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9NYWtlZmlsZS5pbiBiL2V4dC9vcGVuY3YvTWFrZWZpbGUuaW4KaW5kZXggNGU3OWM4OS4uNWYyZTI4MCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9NYWtlZmlsZS5pbgorKysgYi9leHQvb3BlbmN2L01ha2VmaWxlLmluCkBAIC0xMTcsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTIxNCwyNCArMjEzLDYgQEAKIGRlcGNvbXAgPSAkKFNIRUxMKSAkKHRvcF9zcmNkaXIpL2RlcGNvbXAKIGFtX19kZXBmaWxlc19tYXliZSA9IGRlcGZpbGVzCiBhbV9fbXYgPSBtdiAtZgotQ09NUElMRSA9ICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSBcCi0JJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQotTFRDT01QSUxFID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSBcCi0JJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgXAotCSQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgXAotCSQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLUFNX1ZfQ0MgPSAkKGFtX192X0NDX0BBTV9WQCkKLWFtX192X0NDXyA9ICQoYW1fX3ZfQ0NfQEFNX0RFRkFVTFRfVkApCi1hbV9fdl9DQ18wID0gQGVjaG8gIiAgQ0MgICAgICAiICRAOwotYW1fX3ZfQ0NfMSA9IAotQ0NMRCA9ICQoQ0MpCi1MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSBcCi0JJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSBcCi0JJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACi1BTV9WX0NDTEQgPSAkKGFtX192X0NDTERfQEFNX1ZAKQotYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCi1hbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7Ci1hbV9fdl9DQ0xEXzEgPSAKIENYWENPTVBJTEUgPSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpIFwKIAkkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKEFNX0NYWEZMQUdTKSAkKENYWEZMQUdTKQogTFRDWFhDT01QSUxFID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKEFNX0xJQlRPT0xGTEFHUykgXApAQCAtMzE1LDYgKzI5Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzUyLDYgKzMzNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzYwLDcgKzM0NSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM3OSw4ICszNjMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzk3LDE2ICszODIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDMyLDYgKzQxOCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQ1Nyw2ICs0NDUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01NTgsNiArNTQ4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU3MSw4ICs1NjIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01ODgsNiArNTc3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTY0NSwxNiArNjM2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNzA2LDYgKzY5OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC03MTYsNiArNzEwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzI1LDYgKzcyMCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NjIsNyArNzU5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC04MDYsMjQgKzgwMiwyNCBAQAogCiAjIHNvdXJjZXMgdXNlZCB0byBjb21waWxlIHRoaXMgcGx1Zy1pbgogbGliZ3N0b3BlbmN2X2xhX1NPVVJDRVMgPSBnc3RvcGVuY3YuY3BwIFwKLQkJCWdzdG9wZW5jdnZpZGVvZmlsdGVyLmMgXAotCQkJZ3N0b3BlbmN2dXRpbHMuYyBcCi0JCQlnc3RjdmRpbGF0ZS5jIFwKLQkJCWdzdGN2ZGlsYXRlZXJvZGUuYyBcCi0JCQlnc3RjdmVxdWFsaXplaGlzdC5jIFwKLQkJCWdzdGN2ZXJvZGUuYyBcCi0JCQlnc3RjdmxhcGxhY2UuYyBcCi0JCQlnc3RjdnNtb290aC5jIFwKLQkJCWdzdGN2c29iZWwuYyBcCisJCQlnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jcHAgXAorCQkJZ3N0b3BlbmN2dXRpbHMuY3BwIFwKKwkJCWdzdGN2ZGlsYXRlLmNwcCBcCisJCQlnc3RjdmRpbGF0ZWVyb2RlLmNwcCBcCisJCQlnc3RjdmVxdWFsaXplaGlzdC5jcHAgXAorCQkJZ3N0Y3Zlcm9kZS5jcHAgXAorCQkJZ3N0Y3ZsYXBsYWNlLmNwcCBcCisJCQlnc3RjdnNtb290aC5jcHAgXAorCQkJZ3N0Y3Zzb2JlbC5jcHAgXAogCQkJZ3N0ZWRnZWRldGVjdC5jcHAgXAogCQkJZ3N0ZmFjZWJsdXIuY3BwIFwKLQkJCWdzdGhhbmRkZXRlY3QuYyBcCi0JCQlnc3RweXJhbWlkc2VnbWVudC5jIFwKLQkJCWdzdHRlbXBsYXRlbWF0Y2guYyBcCi0JCQlnc3R0ZXh0b3ZlcmxheS5jIFwKLQkJCWdzdG1vdGlvbmNlbGxzLmMgXAotCQkJZ3N0c2tpbmRldGVjdC5jIFwKLQkJCWdzdHJldGluZXguYyBcCisJCQlnc3RoYW5kZGV0ZWN0LmNwcCBcCisJCQlnc3RweXJhbWlkc2VnbWVudC5jcHAgXAorCQkJZ3N0dGVtcGxhdGVtYXRjaC5jcHAgXAorCQkJZ3N0dGV4dG92ZXJsYXkuY3BwIFwKKwkJCWdzdG1vdGlvbmNlbGxzLmNwcCBcCisJCQlnc3Rza2luZGV0ZWN0LmNwcCBcCisJCQlnc3RyZXRpbmV4LmNwcCBcCiAJCQlnc3RmYWNlZGV0ZWN0LmNwcCBcCiAJCQlnc3RzZWdtZW50YXRpb24uY3BwIFwKIAkJCWdzdGdyYWJjdXQuY3BwIFwKQEAgLTgzMSw3ICs4MjcsOSBAQAogCQkJbW90aW9uY2VsbHNfd3JhcHBlci5jcHAgXAogCQkJTW90aW9uQ2VsbHMuY3BwCiAKLWxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DWFhGTEFHUykgJChPUEVOQ1ZfQ0ZMQUdTKQorbGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NYWEZMQUdTKSAkKE9QRU5DVl9DRkxBR1MpIFwKKwktREdTVF9IQUFSX0NBU0NBREVTX0RJUj1cIiQocGtnZGF0YWRpcikvQEdTVF9BUElfVkVSU0lPTkAvb3BlbmN2X2hhYXJjYXNjYWRlc1wiCisKIAogIyBmbGFncyB1c2VkIHRvIGNvbXBpbGUgdGhpcyBmYWNlZGV0ZWN0CiAjIGFkZCBvdGhlciBfQ0ZMQUdTIGFuZCBfTElCUyBhcyBuZWVkZWQKQEAgLTg0MCw3ICs4MzgsNiBAQAogIyBPcGVuQ1YncyBkZWZpbmUgaXNuJ3QgZ29vZCBlbm91Z2ggdG8gYXZvaWQgJ3VudXNlZCcgZ2NjIHdhcm5pbmdzIChhdCB2Mi4xLjApCiBsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9DRkxBR1MpICQoT1BFTkNWX0NGTEFHUykgXAotCS1ER1NUX0hBQVJfQ0FTQ0FERVNfRElSPVwiJChwa2dkYXRhZGlyKS9AR1NUX0FQSV9WRVJTSU9OQC9vcGVuY3ZfaGFhcmNhc2NhZGVzXCIgXAogCS1EQ1ZfSU5MSU5FPSJzdGF0aWMgaW5saW5lIiBcCiAJLURDVl9OT19CQUNLV0FSRF9DT01QQVRJQklMSVRZCiAKQEAgLTg4MSw3ICs4NzgsNyBAQAogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgotLlNVRkZJWEVTOiAuYyAuY3BwIC5sbyAubyAub2JqCisuU1VGRklYRVM6IC5jcHAgLmxvIC5vIC5vYmoKICQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQogCUBmb3IgZGVwIGluICQ/OyBkbyBcCiAJICBjYXNlICckKGFtX19jb25maWd1cmVfZGVwcyknIGluIFwKQEAgLTk4MiwxNDIgKzk3OSw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLW1vdGlvbmNlbGxzX3dyYXBwZXIuUGxvQGFtX19xdW90ZUAKIAotLmMubzoKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgJDwgJiZcCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJCRkZXBiYXNlLlRwbyAkJGRlcGJhc2UuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDT01QSUxFKSAtYyAtbyAkQCAkPAotCi0uYy5vYmo6Ci1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwub2JqJCR8fCdgO1wKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYCAmJlwKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkJGRlcGJhc2UuVHBvICQkZGVwYmFzZS5QbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENPTVBJTEUpIC1jIC1vICRAIGAkKENZR1BBVEhfVykgJyQ8J2AKLQotLmMubG86Ci1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubG8kJHx8J2A7XAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChMVENPTVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAkJGRlcGJhc2UuVHBvIC1jIC1vICRAICQ8ICYmXAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQkZGVwYmFzZS5UcG8gJCRkZXBiYXNlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8Ci0KLWxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbzogZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dmlkZW9maWx0ZXIubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnZpZGVvZmlsdGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wZW5jdnZpZGVvZmlsdGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLmxvIGB0ZXN0IC1mICdnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbzogZ3N0b3BlbmN2dXRpbHMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dXRpbHMubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnV0aWxzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wZW5jdnV0aWxzLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RvcGVuY3Z1dGlscy5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLmxvIGB0ZXN0IC1mICdnc3RvcGVuY3Z1dGlscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcGVuY3Z1dGlscy5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbzogZ3N0Y3ZkaWxhdGUuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGUubG8gYHRlc3QgLWYgJ2dzdGN2ZGlsYXRlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZGlsYXRlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RjdmRpbGF0ZS5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLmxvIGB0ZXN0IC1mICdnc3RjdmRpbGF0ZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmRpbGF0ZS5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLmxvOiBnc3RjdmRpbGF0ZWVyb2RlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLmxvIGB0ZXN0IC1mICdnc3RjdmRpbGF0ZWVyb2RlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZGlsYXRlZXJvZGUuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RjdmRpbGF0ZWVyb2RlLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLmxvIGB0ZXN0IC1mICdnc3RjdmRpbGF0ZWVyb2RlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZGlsYXRlZXJvZGUuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG86IGdzdGN2ZXF1YWxpemVoaXN0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXF1YWxpemVoaXN0LmxvIGB0ZXN0IC1mICdnc3RjdmVxdWFsaXplaGlzdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmVxdWFsaXplaGlzdC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Y3ZlcXVhbGl6ZWhpc3QuYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5sbyBgdGVzdCAtZiAnZ3N0Y3ZlcXVhbGl6ZWhpc3QuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZlcXVhbGl6ZWhpc3QuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5sbzogZ3N0Y3Zlcm9kZS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5sbyBgdGVzdCAtZiAnZ3N0Y3Zlcm9kZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmVyb2RlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Y3Zlcm9kZS5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5sbyBgdGVzdCAtZiAnZ3N0Y3Zlcm9kZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmVyb2RlLmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5sbzogZ3N0Y3ZsYXBsYWNlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvIGB0ZXN0IC1mICdnc3RjdmxhcGxhY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZsYXBsYWNlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGN2bGFwbGFjZS5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UubG8gYHRlc3QgLWYgJ2dzdGN2bGFwbGFjZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmxhcGxhY2UuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG86IGdzdGN2c21vb3RoLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2c21vb3RoLmxvIGB0ZXN0IC1mICdnc3RjdnNtb290aC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdnNtb290aC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGguVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGguUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Y3ZzbW9vdGguYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5sbyBgdGVzdCAtZiAnZ3N0Y3ZzbW9vdGguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZzbW9vdGguYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5sbzogZ3N0Y3Zzb2JlbC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5sbyBgdGVzdCAtZiAnZ3N0Y3Zzb2JlbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdnNvYmVsLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Y3Zzb2JlbC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5sbyBgdGVzdCAtZiAnZ3N0Y3Zzb2JlbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdnNvYmVsLmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QubG86IGdzdGhhbmRkZXRlY3QuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QubG8gYHRlc3QgLWYgJ2dzdGhhbmRkZXRlY3QuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0aGFuZGRldGVjdC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGhhbmRkZXRlY3QuYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QubG8gYHRlc3QgLWYgJ2dzdGhhbmRkZXRlY3QuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0aGFuZGRldGVjdC5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbzogZ3N0cHlyYW1pZHNlZ21lbnQuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQubG8gYHRlc3QgLWYgJ2dzdHB5cmFtaWRzZWdtZW50LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHB5cmFtaWRzZWdtZW50LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RweXJhbWlkc2VnbWVudC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvIGB0ZXN0IC1mICdnc3RweXJhbWlkc2VnbWVudC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RweXJhbWlkc2VnbWVudC5jCi0KLWxpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLmxvOiBnc3R0ZW1wbGF0ZW1hdGNoLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2guVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLmxvIGB0ZXN0IC1mICdnc3R0ZW1wbGF0ZW1hdGNoLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRlbXBsYXRlbWF0Y2guYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2guVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3R0ZW1wbGF0ZW1hdGNoLmMnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2gubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLmxvIGB0ZXN0IC1mICdnc3R0ZW1wbGF0ZW1hdGNoLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRlbXBsYXRlbWF0Y2guYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG86IGdzdHRleHRvdmVybGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LmxvIGB0ZXN0IC1mICdnc3R0ZXh0b3ZlcmxheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R0ZXh0b3ZlcmxheS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0dGV4dG92ZXJsYXkuYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbyBgdGVzdCAtZiAnZ3N0dGV4dG92ZXJsYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dGV4dG92ZXJsYXkuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG86IGdzdG1vdGlvbmNlbGxzLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLmxvIGB0ZXN0IC1mICdnc3Rtb3Rpb25jZWxscy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rtb3Rpb25jZWxscy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0bW90aW9uY2VsbHMuYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbyBgdGVzdCAtZiAnZ3N0bW90aW9uY2VsbHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bW90aW9uY2VsbHMuYwotCi1saWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5sbzogZ3N0c2tpbmRldGVjdC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5sbyBgdGVzdCAtZiAnZ3N0c2tpbmRldGVjdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rza2luZGV0ZWN0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0c2tpbmRldGVjdC5jJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5sbyBgdGVzdCAtZiAnZ3N0c2tpbmRldGVjdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rza2luZGV0ZWN0LmMKLQotbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXgubG86IGdzdHJldGluZXguYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXgubG8gYHRlc3QgLWYgJ2dzdHJldGluZXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cmV0aW5leC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHJldGluZXguYycgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXgubG8gYHRlc3QgLWYgJ2dzdHJldGluZXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cmV0aW5leC5jCi0KIC5jcHAubzoKIEBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XAogQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQ1hYQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgJDwgJiZcCkBAIC0xMTQ5LDYgKzEwMTAsNjkgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2LmxvIGB0ZXN0IC1mICdnc3RvcGVuY3YuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcGVuY3YuY3BwCiAKK2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5sbzogZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dmlkZW9maWx0ZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnZpZGVvZmlsdGVyLmxvIGB0ZXN0IC1mICdnc3RvcGVuY3Z2aWRlb2ZpbHRlci5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z2aWRlb2ZpbHRlci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dmlkZW9maWx0ZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dmlkZW9maWx0ZXIubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5sbzogZ3N0b3BlbmN2dXRpbHMuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dXRpbHMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdG9wZW5jdnV0aWxzLmxvIGB0ZXN0IC1mICdnc3RvcGVuY3Z1dGlscy5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wZW5jdnV0aWxzLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RvcGVuY3Z1dGlscy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdG9wZW5jdnV0aWxzLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dXRpbHMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0b3BlbmN2dXRpbHMubG8gYHRlc3QgLWYgJ2dzdG9wZW5jdnV0aWxzLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3BlbmN2dXRpbHMuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5sbzogZ3N0Y3ZkaWxhdGUuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlLmxvIGB0ZXN0IC1mICdnc3RjdmRpbGF0ZS5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZGlsYXRlLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdGN2ZGlsYXRlLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGUubG8gYHRlc3QgLWYgJ2dzdGN2ZGlsYXRlLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZkaWxhdGUuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLmxvOiBnc3RjdmRpbGF0ZWVyb2RlLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5sbyBgdGVzdCAtZiAnZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZGlsYXRlZXJvZGUuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZkaWxhdGVlcm9kZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdGN2ZGlsYXRlZXJvZGUuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RjdmRpbGF0ZWVyb2RlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZGlsYXRlZXJvZGUubG8gYHRlc3QgLWYgJ2dzdGN2ZGlsYXRlZXJvZGUuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmRpbGF0ZWVyb2RlLmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QubG86IGdzdGN2ZXF1YWxpemVoaXN0LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXF1YWxpemVoaXN0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmVxdWFsaXplaGlzdC5sbyBgdGVzdCAtZiAnZ3N0Y3ZlcXVhbGl6ZWhpc3QuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmVxdWFsaXplaGlzdC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZlcXVhbGl6ZWhpc3QuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RjdmVxdWFsaXplaGlzdC5jcHAnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXF1YWxpemVoaXN0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXF1YWxpemVoaXN0LmxvIGB0ZXN0IC1mICdnc3RjdmVxdWFsaXplaGlzdC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2ZXF1YWxpemVoaXN0LmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5sbzogZ3N0Y3Zlcm9kZS5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUubG8gYHRlc3QgLWYgJ2dzdGN2ZXJvZGUuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdmVyb2RlLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2ZXJvZGUuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RjdmVyb2RlLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zlcm9kZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdmVyb2RlLmxvIGB0ZXN0IC1mICdnc3RjdmVyb2RlLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3Zlcm9kZS5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5sbzogZ3N0Y3ZsYXBsYWNlLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5sbyBgdGVzdCAtZiAnZ3N0Y3ZsYXBsYWNlLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZsYXBsYWNlLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdmxhcGxhY2UuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0Y3ZsYXBsYWNlLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZsYXBsYWNlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2bGFwbGFjZS5sbyBgdGVzdCAtZiAnZ3N0Y3ZsYXBsYWNlLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3ZsYXBsYWNlLmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGgubG86IGdzdGN2c21vb3RoLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdGN2c21vb3RoLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGguVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdnNtb290aC5sbyBgdGVzdCAtZiAnZ3N0Y3ZzbW9vdGguY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdnNtb290aC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGguVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3ZzbW9vdGguUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RjdnNtb290aC5jcHAnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdGN2c21vb3RoLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2c21vb3RoLmxvIGB0ZXN0IC1mICdnc3RjdnNtb290aC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGN2c21vb3RoLmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5sbzogZ3N0Y3Zzb2JlbC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwubG8gYHRlc3QgLWYgJ2dzdGN2c29iZWwuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RjdnNvYmVsLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGN2c29iZWwuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RjdnNvYmVsLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0Y3Zzb2JlbC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RjdnNvYmVsLmxvIGB0ZXN0IC1mICdnc3RjdnNvYmVsLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Y3Zzb2JlbC5jcHAKKwogbGliZ3N0b3BlbmN2X2xhLWdzdGVkZ2VkZXRlY3QubG86IGdzdGVkZ2VkZXRlY3QuY3BwCiBAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0ZWRnZWRldGVjdC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGVkZ2VkZXRlY3QuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RlZGdlZGV0ZWN0LmxvIGB0ZXN0IC1mICdnc3RlZGdlZGV0ZWN0LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0ZWRnZWRldGVjdC5jcHAKIEBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0ZWRnZWRldGVjdC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RlZGdlZGV0ZWN0LlBsbwpAQCAtMTE2Myw2ICsxMDg3LDU1IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGZhY2VibHVyLmxvIGB0ZXN0IC1mICdnc3RmYWNlYmx1ci5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGZhY2VibHVyLmNwcAogCitsaWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5sbzogZ3N0aGFuZGRldGVjdC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QubG8gYHRlc3QgLWYgJ2dzdGhhbmRkZXRlY3QuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RoYW5kZGV0ZWN0LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGhhbmRkZXRlY3QuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RoYW5kZGV0ZWN0LmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0aGFuZGRldGVjdC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RoYW5kZGV0ZWN0LmxvIGB0ZXN0IC1mICdnc3RoYW5kZGV0ZWN0LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0aGFuZGRldGVjdC5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LmxvOiBnc3RweXJhbWlkc2VnbWVudC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0cHlyYW1pZHNlZ21lbnQubG8gYHRlc3QgLWYgJ2dzdHB5cmFtaWRzZWdtZW50LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cHlyYW1pZHNlZ21lbnQuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHB5cmFtaWRzZWdtZW50LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0cHlyYW1pZHNlZ21lbnQuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RweXJhbWlkc2VnbWVudC5sbyBgdGVzdCAtZiAnZ3N0cHlyYW1pZHNlZ21lbnQuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RweXJhbWlkc2VnbWVudC5jcHAKKworbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2gubG86IGdzdHRlbXBsYXRlbWF0Y2guY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2guVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLmxvIGB0ZXN0IC1mICdnc3R0ZW1wbGF0ZW1hdGNoLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dGVtcGxhdGVtYXRjaC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZW1wbGF0ZW1hdGNoLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0dGVtcGxhdGVtYXRjaC5jcHAnIG9iamVjdD0nbGliZ3N0b3BlbmN2X2xhLWdzdHRlbXBsYXRlbWF0Y2gubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGVtcGxhdGVtYXRjaC5sbyBgdGVzdCAtZiAnZ3N0dGVtcGxhdGVtYXRjaC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRlbXBsYXRlbWF0Y2guY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5sbzogZ3N0dGV4dG92ZXJsYXkuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHRleHRvdmVybGF5LmxvIGB0ZXN0IC1mICdnc3R0ZXh0b3ZlcmxheS5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRleHRvdmVybGF5LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3R0ZXh0b3ZlcmxheS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdHRleHRvdmVybGF5LmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0dGV4dG92ZXJsYXkubG8gYHRlc3QgLWYgJ2dzdHRleHRvdmVybGF5LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dGV4dG92ZXJsYXkuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5sbzogZ3N0bW90aW9uY2VsbHMuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdG1vdGlvbmNlbGxzLmxvIGB0ZXN0IC1mICdnc3Rtb3Rpb25jZWxscy5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG1vdGlvbmNlbGxzLmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rtb3Rpb25jZWxscy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdG1vdGlvbmNlbGxzLmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0bW90aW9uY2VsbHMubG8gYHRlc3QgLWYgJ2dzdG1vdGlvbmNlbGxzLmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bW90aW9uY2VsbHMuY3BwCisKK2xpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LmxvOiBnc3Rza2luZGV0ZWN0LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdG9wZW5jdl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3BlbmN2X2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LlRwbyAtYyAtbyBsaWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5sbyBgdGVzdCAtZiAnZ3N0c2tpbmRldGVjdC5jcHAnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHNraW5kZXRlY3QuY3BwCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QuVHBvICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0c2tpbmRldGVjdC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdHNraW5kZXRlY3QuY3BwJyBvYmplY3Q9J2xpYmdzdG9wZW5jdl9sYS1nc3Rza2luZGV0ZWN0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDWFhERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWEBhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHNraW5kZXRlY3QubG8gYHRlc3QgLWYgJ2dzdHNraW5kZXRlY3QuY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rza2luZGV0ZWN0LmNwcAorCitsaWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5sbzogZ3N0cmV0aW5leC5jcHAKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RvcGVuY3ZfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wZW5jdl9sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5UcG8gLWMgLW8gbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXgubG8gYHRlc3QgLWYgJ2dzdHJldGluZXguY3BwJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RyZXRpbmV4LmNwcAorQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LlRwbyAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdHJldGluZXguUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RyZXRpbmV4LmNwcCcgb2JqZWN0PSdsaWJnc3RvcGVuY3ZfbGEtZ3N0cmV0aW5leC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RyZXRpbmV4LmxvIGB0ZXN0IC1mICdnc3RyZXRpbmV4LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cmV0aW5leC5jcHAKKwogbGliZ3N0b3BlbmN2X2xhLWdzdGZhY2VkZXRlY3QubG86IGdzdGZhY2VkZXRlY3QuY3BwCiBAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0b3BlbmN2X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcGVuY3ZfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RvcGVuY3ZfbGEtZ3N0ZmFjZWRldGVjdC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3BlbmN2X2xhLWdzdGZhY2VkZXRlY3QuVHBvIC1jIC1vIGxpYmdzdG9wZW5jdl9sYS1nc3RmYWNlZGV0ZWN0LmxvIGB0ZXN0IC1mICdnc3RmYWNlZGV0ZWN0LmNwcCcgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0ZmFjZWRldGVjdC5jcHAKIEBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcGVuY3ZfbGEtZ3N0ZmFjZWRldGVjdC5UcG8gJChERVBESVIpL2xpYmdzdG9wZW5jdl9sYS1nc3RmYWNlZGV0ZWN0LlBsbwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9Nb3Rpb25DZWxscy5jcHAgYi9leHQvb3BlbmN2L01vdGlvbkNlbGxzLmNwcAppbmRleCBlYWEwMTNmLi45YTE2MTc2IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L01vdGlvbkNlbGxzLmNwcAorKysgYi9leHQvb3BlbmN2L01vdGlvbkNlbGxzLmNwcApAQCAtNDksMTAgKzQ5LDcgQEAKIC8vI2VuZGlmCiAjZW5kaWYKIAotI2luY2x1ZGUgPGNzdGRsaWI+CiAjaW5jbHVkZSA8ZXJybm8uaD4KLSNpbmNsdWRlIDxtYXRoLmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgIk1vdGlvbkNlbGxzLmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L01vdGlvbkNlbGxzLmggYi9leHQvb3BlbmN2L01vdGlvbkNlbGxzLmgKaW5kZXggNDFiYjljNy4uOTcxMzdiYiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9Nb3Rpb25DZWxscy5oCisrKyBiL2V4dC9vcGVuY3YvTW90aW9uQ2VsbHMuaApAQCAtNTIsMTEgKzUyLDggQEAKICNpZmRlZiBIQVZFX09QRU5DVjJfSElHSEdVSV9ISUdIR1VJX0NfSAogI2luY2x1ZGUgPG9wZW5jdjIvaGlnaGd1aS9oaWdoZ3VpX2MuaD4gICAgICAgICAgICAvLyBpbmNsdWRlcyBoaWdoR1VJIGRlZmluaXRpb25zCiAjZW5kaWYKLSNpbmNsdWRlIDxpb3N0cmVhbT4KICNpbmNsdWRlIDxmc3RyZWFtPgogI2luY2x1ZGUgPHZlY3Rvcj4KLSNpbmNsdWRlIDxjc3RkaW8+Ci0jaW5jbHVkZSA8Y21hdGg+CiAjaW5jbHVkZSA8Z2xpYi5oPgogCiAvL01vdGlvbkNlbGxzIGRlZmluZXMKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGUuYyBiL2V4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGUuY3BwCnNpbWlsYXJpdHkgaW5kZXggODYlCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGUuYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jcHAKaW5kZXggZGEwNzEzZC4uYmM2YjAzMiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZS5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGUuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00MSwxMiArNDEsMjMgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWN2ZGlsYXRlCisgKgorICogRGlsYXRlcyB0aGUgaW1hZ2Ugd2l0aCB0aGUgY3ZEaWxhdGUgT3BlbkNWIGZ1bmN0aW9uLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBjdmRpbGF0ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCiAjaW5jbHVkZSAiZ3N0Y3ZkaWxhdGUuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKQEAgLTU3LDggKzY4LDYgQEAKIAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2N2X2RpbGF0ZV90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICoKICAgICBmaWx0ZXIsIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2N2X2RpbGF0ZV90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogZmlsdGVyLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpOwogCiAvKiBpbml0aWFsaXplIHRoZSBjdmRpbGF0ZSdzIGNsYXNzICovCiBzdGF0aWMgdm9pZApAQCAtNzAsNyArNzksNiBAQAogICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzID0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKikga2xhc3M7CiAKICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfaXBfZnVuYyA9IGdzdF9jdl9kaWxhdGVfdHJhbnNmb3JtX2lwOwotICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19mdW5jID0gZ3N0X2N2X2RpbGF0ZV90cmFuc2Zvcm07CiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCiAgICAgICAiY3ZkaWxhdGUiLAogICAgICAgIlRyYW5zZm9ybS9FZmZlY3QvVmlkZW8iLApAQCAtODksMTggKzk3LDYgQEAKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9jdl9kaWxhdGVfdHJhbnNmb3JtIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGJhc2UsIEdzdEJ1ZmZlciAqIGJ1ZiwKLSAgICBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZykKLXsKLSAgR3N0Q3ZEaWxhdGVFcm9kZSAqZmlsdGVyID0gR1NUX0NWX0RJTEFURV9FUk9ERSAoYmFzZSk7Ci0KLSAgLyogVE9ETyBzdXBwb3J0IGtlcm5lbCBhcyBhIHBhcmFtZXRlciAqLwotICBjdkRpbGF0ZSAoaW1nLCBvdXRpbWcsIE5VTEwsIGZpbHRlci0+aXRlcmF0aW9ucyk7Ci0KLSAgcmV0dXJuIEdTVF9GTE9XX09LOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2N2X2RpbGF0ZV90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAogICAgIElwbEltYWdlICogaW1nKQogewpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmMgYi9leHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuY3BwCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGN2ZGlsYXRlZXJvZGUuY3BwCmluZGV4IDEzMzQyYWIuLjY5YTQxNjkgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTUwLDggKzUwLDYgQEAKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdGN2ZGlsYXRlZXJvZGUuaCIKIApAQCAtMTMxLDcgKzEyOSw4IEBACiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfSVRFUkFUSU9OUywKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJpdGVyYXRpb25zIiwgIml0ZXJhdGlvbnMiLAogICAgICAgICAgICJOdW1iZXIgb2YgaXRlcmF0aW9ucyB0byBydW4gdGhlIGFsZ29yaXRobSIsIDEsIEdfTUFYSU5ULAotICAgICAgICAgIERFRkFVTFRfSVRFUkFUSU9OUywgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9JVEVSQVRJT05TLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICAvKiBhZGQgc2luayBhbmQgc291cmNlIHBhZCB0ZW1wbGF0ZXMgKi8KICAgY2FwcyA9IGdzdF9vcGVuY3ZfY2Fwc19mcm9tX2N2X2ltYWdlX3R5cGUgKENWXzE2VUMxKTsKQEAgLTE1NSw3ICsxNTQsOCBAQAogICAgIEdzdEN2RGlsYXRlRXJvZGVDbGFzcyAqIGdjbGFzcykKIHsKICAgZmlsdGVyLT5pdGVyYXRpb25zID0gREVGQVVMVF9JVEVSQVRJT05TOwotICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIFRSVUUpOworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBUUlVFKTsKIH0KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3ZkaWxhdGVlcm9kZS5oIGIvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmgKaW5kZXggOTQ0MjVmNS4uYmQyYWE3YyAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmgKKysrIGIvZXh0L29wZW5jdi9nc3RjdmRpbGF0ZWVyb2RlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQ0LDggKzQ0LDYgQEAKICNpZm5kZWYgX19HU1RfQ1ZfRElMQVRFX0VST0RFX0hfXwogI2RlZmluZSBfX0dTVF9DVl9ESUxBVEVfRVJPREVfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03Miw3ICs3MCw3IEBACiAgIGdpbnQgaXRlcmF0aW9uczsKIH07CiAKLXN0cnVjdCBfR3N0Q3ZEaWxhdGVFcm9kZUNsYXNzIAorc3RydWN0IF9Hc3RDdkRpbGF0ZUVyb2RlQ2xhc3MKIHsKICAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5jIGIvZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5jcHAKc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmNwcAppbmRleCA3Mzg0ZGYxLi5lYTFkYjI4IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmMKKysrIGIvZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5jcHAKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQxLDEzICs0MSwyNSBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtY3ZlcXVhbGl6ZWhpc3QKKyAqCisgKiBFcXVhbGl6ZXMgdGhlIGhpc3RvZ3JhbSBvZiBhIGdyYXlzY2FsZSBpbWFnZSB3aXRoIHRoZSBjdkVxdWFsaXplSGlzdCBPcGVuQ1YKKyAqIGZ1bmN0aW9uLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgcGF0dGVybj0yMyAhIGN2ZXF1YWxpemVoaXN0ICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0Y3ZlcXVhbGl6ZWhpc3QuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKQEAgLTk2LDcgKzEwOCw4IEBACiBzdGF0aWMgdm9pZAogZ3N0X2N2X2VxdWFsaXplX2hpc3RfaW5pdCAoR3N0Q3ZFcXVhbGl6ZUhpc3QgKiBmaWx0ZXIpCiB7Ci0gIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UgKEdTVF9CQVNFX1RSQU5TRk9STSAoZmlsdGVyKSwgRkFMU0UpOworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBGQUxTRSk7CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmggYi9leHQvb3BlbmN2L2dzdGN2ZXF1YWxpemVoaXN0LmgKaW5kZXggZDFkNjAwZC4uYzE4NTk5NCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RjdmVxdWFsaXplaGlzdC5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3ZlcXVhbGl6ZWhpc3QuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDQsOCArNDQsNiBAQAogI2lmbmRlZiBfX0dTVF9DVl9FUVVBTElaRV9ISVNUX0hfXwogI2RlZmluZSBfX0dTVF9DVl9FUVVBTElaRV9ISVNUX0hfXwogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCiAjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KIAogR19CRUdJTl9ERUNMUwpAQCAtNzAsNyArNjgsNyBAQAogICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OwogfTsKIAotc3RydWN0IF9Hc3RDdkVxdWFsaXplSGlzdENsYXNzIAorc3RydWN0IF9Hc3RDdkVxdWFsaXplSGlzdENsYXNzCiB7CiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3Zlcm9kZS5jIGIvZXh0L29wZW5jdi9nc3RjdmVyb2RlLmNwcApzaW1pbGFyaXR5IGluZGV4IDg2JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdGN2ZXJvZGUuYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3RjdmVyb2RlLmNwcAppbmRleCA0YzYyNjI0Li4zOWI3MmJlIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2ZXJvZGUuYworKysgYi9leHQvb3BlbmN2L2dzdGN2ZXJvZGUuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00MSwxMiArNDEsMjMgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWN2ZXJvZGUKKyAqCisgKiBFcm9kZXMgdGhlIGltYWdlIHdpdGggdGhlIGN2RXJvZGUgT3BlbkNWIGZ1bmN0aW9uLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgISBjdmVyb2RlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlICJnc3RjdmVyb2RlLmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgogCkBAIC01Nyw4ICs2OCw2IEBACiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9jdl9lcm9kZV90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICoKICAgICBmaWx0ZXIsIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2N2X2Vyb2RlX3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBmaWx0ZXIsCi0gICAgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZyk7CiAKIC8qIGluaXRpYWxpemUgdGhlIGN2ZXJvZGUncyBjbGFzcyAqLwogc3RhdGljIHZvaWQKQEAgLTcwLDcgKzc5LDYgQEAKICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcyA9IChHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICopIGtsYXNzOwogCiAgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2lwX2Z1bmMgPSBnc3RfY3ZfZXJvZGVfdHJhbnNmb3JtX2lwOwotICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19mdW5jID0gZ3N0X2N2X2Vyb2RlX3RyYW5zZm9ybTsKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywKICAgICAgICJjdmVyb2RlIiwKICAgICAgICJUcmFuc2Zvcm0vRWZmZWN0L1ZpZGVvIiwKQEAgLTg5LDE4ICs5Nyw2IEBACiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfY3ZfZXJvZGVfdHJhbnNmb3JtIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGJhc2UsIEdzdEJ1ZmZlciAqIGJ1ZiwKLSAgICBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZykKLXsKLSAgR3N0Q3ZEaWxhdGVFcm9kZSAqZmlsdGVyID0gR1NUX0NWX0RJTEFURV9FUk9ERSAoYmFzZSk7Ci0KLSAgLyogVE9ETyBzdXBwb3J0IGtlcm5lbCBhcyBhIHBhcmFtZXRlciAqLwotICBjdkVyb2RlIChpbWcsIG91dGltZywgTlVMTCwgZmlsdGVyLT5pdGVyYXRpb25zKTsKLQotICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfY3ZfZXJvZGVfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGJhc2UsIEdzdEJ1ZmZlciAqIGJ1ZiwKICAgICBJcGxJbWFnZSAqIGltZykKIHsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmMgYi9leHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5jcHAKc2ltaWxhcml0eSBpbmRleCA2MSUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuY3BwCmluZGV4IDViOTU2MTguLmM5ODk0NTYgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmMKKysrIGIvZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00MSwxMyArNDEsMjMgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWN2bGFwbGFjZQorICoKKyAqIEFwcGxpZXMgY3ZMYXBsYWNlIE9wZW5DViBmdW5jdGlvbiB0byB0aGUgaW1hZ2UuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGN2bGFwbGFjZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlICJnc3RjdmxhcGxhY2UuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKQEAgLTU3LDIyICs2NywxNCBAQAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCiAgICAgR1NUX1BBRF9TSU5LLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIkdSQVk4IikpCisgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiUkdCIikpCiAgICAgKTsKIAotI2lmIEdfQllURV9PUkRFUiA9PSBHX0JJR19FTkRJQU4KIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJHUkFZMTZfQkUiKSkKKyAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJSR0IiKSkKICAgICApOwotI2Vsc2UKLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJHUkFZMTZfTEUiKSkKLSAgICApOwotI2VuZGlmCiAKIC8qIEZpbHRlciBzaWduYWxzIGFuZCBhcmdzICovCiBlbnVtCkBAIC04MywxMCArODUsMTYgQEAKIGVudW0KIHsKICAgUFJPUF8wLAotICBQUk9QX0FQRVJUVVJFX1NJWkUKKyAgUFJPUF9BUEVSVFVSRV9TSVpFLAorICBQUk9QX1NDQUxFLAorICBQUk9QX1NISUZULAorICBQUk9QX01BU0sKIH07CiAKICNkZWZpbmUgREVGQVVMVF9BUEVSVFVSRV9TSVpFIDMKKyNkZWZpbmUgREVGQVVMVF9TQ0FMRV9GQUNUT1IgMS4wCisjZGVmaW5lIERFRkFVTFRfU0hJRlQgMC4wCisjZGVmaW5lIERFRkFVTFRfTUFTSyBUUlVFCiAKIEdfREVGSU5FX1RZUEUgKEdzdEN2TGFwbGFjZSwgZ3N0X2N2X2xhcGxhY2UsIEdTVF9UWVBFX09QRU5DVl9WSURFT19GSUxURVIpOwogCkBAIC05NSw4ICsxMDMsOCBAQAogc3RhdGljIHZvaWQgZ3N0X2N2X2xhcGxhY2VfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogCi1zdGF0aWMgR3N0Q2FwcyAqZ3N0X2N2X2xhcGxhY2VfdHJhbnNmb3JtX2NhcHMgKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucywKLSAgICBHc3RQYWREaXJlY3Rpb24gZGlyLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIGZpbHRlcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2N2X2xhcGxhY2VfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKKyAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfY3ZfbGFwbGFjZV90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogZmlsdGVyLAogICAgIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpOwpAQCAtMTExLDggKzExOSwxMiBAQAogewogICBHc3RDdkxhcGxhY2UgKmZpbHRlciA9IEdTVF9DVl9MQVBMQUNFIChvYmopOwogCi0gIGlmIChmaWx0ZXItPmludGVybWVkaWFyeV9pbWcpCisgIGlmIChmaWx0ZXItPmludGVybWVkaWFyeV9pbWcpIHsKICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZyk7CisgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2R3JheSk7CisgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPkxhcGxhY2UpOworICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5DTGFwbGFjZSk7CisgIH0KIAogICBHX09CSkVDVF9DTEFTUyAoZ3N0X2N2X2xhcGxhY2VfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iaik7CiB9CkBAIC0xMjIsMjcgKzEzNCwzNSBAQAogZ3N0X2N2X2xhcGxhY2VfY2xhc3NfaW5pdCAoR3N0Q3ZMYXBsYWNlQ2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwotICBHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKmdzdGJhc2V0cmFuc2Zvcm1fY2xhc3M7CiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKmdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3M7CiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7Ci0gIGdzdGJhc2V0cmFuc2Zvcm1fY2xhc3MgPSAoR3N0QmFzZVRyYW5zZm9ybUNsYXNzICopIGtsYXNzOwogICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzID0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKikga2xhc3M7CiAKICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2N2X2xhcGxhY2VfZmluYWxpemUpOwogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfY3ZfbGFwbGFjZV9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9jdl9sYXBsYWNlX2dldF9wcm9wZXJ0eTsKIAotICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT50cmFuc2Zvcm1fY2FwcyA9IGdzdF9jdl9sYXBsYWNlX3RyYW5zZm9ybV9jYXBzOwotCiAgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2Z1bmMgPSBnc3RfY3ZfbGFwbGFjZV90cmFuc2Zvcm07CiAgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3NldF9jYXBzID0gZ3N0X2N2X2xhcGxhY2VfY3Zfc2V0X2NhcHM7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9BUEVSVFVSRV9TSVpFLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImFwZXJ0dXJlLXNpemUiLCAiYXBlcnR1cmUgc2l6ZSIsCiAgICAgICAgICAgIlNpemUgb2YgdGhlIGV4dGVuZGVkIExhcGxhY2UgS2VybmVsICgxLCAzLCA1IG9yIDcpIiwgMSwgNywKLSAgICAgICAgICBERUZBVUxUX0FQRVJUVVJFX1NJWkUsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfQVBFUlRVUkVfU0laRSwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NDQUxFLAorICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoInNjYWxlIiwgInNjYWxlIGZhY3RvciIsCisgICAgICAgICAgIlNjYWxlIGZhY3RvciIsIDAuMCwgR19NQVhET1VCTEUsCisgICAgICAgICAgREVGQVVMVF9TQ0FMRV9GQUNUT1IsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TSElGVCwKKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJzaGlmdCIsICJTaGlmdCIsCisgICAgICAgICAgIlZhbHVlIGFkZGVkIHRvIHRoZSBzY2FsZWQgc291cmNlIGFycmF5IGVsZW1lbnRzIiwgMC4wLCBHX01BWERPVUJMRSwKKyAgICAgICAgICBERUZBVUxUX1NISUZULCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUFTSywKKyAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgibWFzayIsICJNYXNrIiwKKyAgICAgICAgICAiU2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBlZGdlcyBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdCIsCisgICAgICAgICAgREVGQVVMVF9NQVNLLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY19mYWN0b3J5KSk7CkBAIC0xNTksOSArMTc5LDE2IEBACiBzdGF0aWMgdm9pZAogZ3N0X2N2X2xhcGxhY2VfaW5pdCAoR3N0Q3ZMYXBsYWNlICogZmlsdGVyKQogewotICBmaWx0ZXItPmFwZXJ0dXJlX3NpemUgPSBERUZBVUxUX0FQRVJUVVJFX1NJWkU7CisgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChHU1RfQkFTRV9UUkFOU0ZPUk1fU0lOS19QQUQgKGZpbHRlciksCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2N2X2xhcGxhY2VfaGFuZGxlX3NpbmtfZXZlbnQpKTsKIAotICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIEZBTFNFKTsKKyAgZmlsdGVyLT5hcGVydHVyZV9zaXplID0gREVGQVVMVF9BUEVSVFVSRV9TSVpFOworICBmaWx0ZXItPnNjYWxlID0gREVGQVVMVF9TQ0FMRV9GQUNUT1I7CisgIGZpbHRlci0+c2hpZnQgPSBERUZBVUxUX1NISUZUOworICBmaWx0ZXItPm1hc2sgPSBERUZBVUxUX01BU0s7CisKKyAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlIChHU1RfT1BFTkNWX1ZJREVPX0ZJTFRFUl9DQVNUIChmaWx0ZXIpLAorICAgICAgRkFMU0UpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTE3MCw5NyArMTk3LDE3IEBACiAgICAgZ2ludCBvdXRfaGVpZ2h0LCBnaW50IG91dF9kZXB0aCwgZ2ludCBvdXRfY2hhbm5lbHMpCiB7CiAgIEdzdEN2TGFwbGFjZSAqZmlsdGVyID0gR1NUX0NWX0xBUExBQ0UgKHRyYW5zKTsKLSAgZ2ludCBpbnRlcm1lZGlhcnlfZGVwdGg7CiAKLSAgLyogY3ZMYXBsYWNlIG5lZWRzIGFuIHNpZ25lZCBvdXRwdXQsIHNvIHdlIGNyZWF0ZSBvdXIgaW50ZXJtZWRpYXJ5IHN0ZXAKLSAgICogaW1hZ2UgaGVyZSAqLwotICBzd2l0Y2ggKG91dF9kZXB0aCkgewotICAgIGNhc2UgSVBMX0RFUFRIXzE2VToKLSAgICAgIGludGVybWVkaWFyeV9kZXB0aCA9IElQTF9ERVBUSF8xNlM7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmaWx0ZXIsICJVbnN1cHBvcnRlZCBvdXRwdXQgZGVwdGggJWQiLCBvdXRfZGVwdGgpOwotICAgICAgcmV0dXJuIEZBTFNFOwotICB9CiAgIGlmIChmaWx0ZXItPmludGVybWVkaWFyeV9pbWcpIHsKICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZyk7CiAgIH0KIAotICBmaWx0ZXItPmludGVybWVkaWFyeV9pbWcgPSBjdkNyZWF0ZUltYWdlIChjdlNpemUgKG91dF93aWR0aCwgb3V0X2hlaWdodCksCi0gICAgICBpbnRlcm1lZGlhcnlfZGVwdGgsIG91dF9jaGFubmVscyk7CisgIGZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZyA9CisgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKG91dF93aWR0aCwgb3V0X2hlaWdodCksIElQTF9ERVBUSF8xNlMsIDEpOwogCiAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgR3N0Q2FwcyAqCi1nc3RfY3ZfbGFwbGFjZV90cmFuc2Zvcm1fY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLCBHc3RQYWREaXJlY3Rpb24gZGlyLAotICAgIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQotewotICBHc3RDYXBzICp0bywgKnJldDsKLSAgR3N0Q2FwcyAqdGVtcGw7Ci0gIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotICBHc3RQYWQgKm90aGVyOwotICBnaW50IGk7Ci0KLSAgdG8gPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IGdzdF9jYXBzX2dldF9zaXplIChjYXBzKTsgaSsrKSB7Ci0gICAgY29uc3QgR1ZhbHVlICp2OwotICAgIEdWYWx1ZSBsaXN0ID0geyAwLCB9OwotICAgIEdWYWx1ZSB2YWwgPSB7IDAsIH07Ci0KLSAgICBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX2NvcHkgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIGkpKTsKLQotICAgIGdfdmFsdWVfaW5pdCAoJmxpc3QsIEdTVF9UWVBFX0xJU1QpOwotCi0gICAgZ192YWx1ZV9pbml0ICgmdmFsLCBHX1RZUEVfU1RSSU5HKTsKLSAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZ2YWwsICJHUkFZOCIpOwotICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZ2YWwpOwotICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWwpOwotCi0gICAgZ192YWx1ZV9pbml0ICgmdmFsLCBHX1RZUEVfU1RSSU5HKTsKLSNpZiBHX0JZVEVfT1JERVIgPT0gR19CSUdfRU5ESUFOCi0gICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdmFsLCAiR1JBWTE2X0JFIik7Ci0jZWxzZQotICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnZhbCwgIkdSQVkxNl9MRSIpOwotI2VuZGlmCi0gICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7Ci0gICAgZ192YWx1ZV91bnNldCAoJnZhbCk7Ci0KLSAgICB2ID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHN0cnVjdHVyZSwgImZvcm1hdCIpOwotCi0gICAgZ3N0X3ZhbHVlX2xpc3RfbWVyZ2UgKCZ2YWwsIHYsICZsaXN0KTsKLSAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3RydWN0dXJlLCAiZm9ybWF0IiwgJnZhbCk7Ci0gICAgZ192YWx1ZV91bnNldCAoJnZhbCk7Ci0gICAgZ192YWx1ZV91bnNldCAoJmxpc3QpOwotCi0gICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGQgKHN0cnVjdHVyZSwgImNvbG9yaW1ldHJ5Iik7Ci0gICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGQgKHN0cnVjdHVyZSwgImNocm9tYS1zaXRlIik7Ci0KLSAgICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlICh0bywgc3RydWN0dXJlKTsKLQotICB9Ci0KLSAgLyogZmlsdGVyIGFnYWluc3Qgc2V0IGFsbG93ZWQgY2FwcyBvbiB0aGUgcGFkICovCi0gIG90aGVyID0gKGRpciA9PSBHU1RfUEFEX1NJTkspID8gdHJhbnMtPnNyY3BhZCA6IHRyYW5zLT5zaW5rcGFkOwotICB0ZW1wbCA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChvdGhlcik7Ci0gIHJldCA9IGdzdF9jYXBzX2ludGVyc2VjdCAodG8sIHRlbXBsKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHRvKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKLQotICBpZiAocmV0ICYmIGZpbHRlcikgewotICAgIEdzdENhcHMgKmludGVyc2VjdGlvbjsKLQotICAgIGludGVyc2VjdGlvbiA9Ci0gICAgICAgIGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChmaWx0ZXIsIHJldCwgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKLSAgICBnc3RfY2Fwc191bnJlZiAocmV0KTsKLSAgICByZXQgPSBpbnRlcnNlY3Rpb247Ci0gIH0KLQotICByZXR1cm4gcmV0OwotCi19Ci0KIHN0YXRpYyB2b2lkCiBnc3RfY3ZfbGFwbGFjZV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKQEAgLTI3Nyw2ICsyMjQsMTUgQEAKICAgICAgICAgZmlsdGVyLT5hcGVydHVyZV9zaXplID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CiAgICAgfQogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDQUxFOgorICAgICAgZmlsdGVyLT5zY2FsZSA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NISUZUOgorICAgICAgZmlsdGVyLT5zaGlmdCA9IGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01BU0s6CisgICAgICBmaWx0ZXItPm1hc2sgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CisgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwpAQCAtMjkzLDIyICsyNDksOTAgQEAKICAgICBjYXNlIFBST1BfQVBFUlRVUkVfU0laRToKICAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIGZpbHRlci0+YXBlcnR1cmVfc2l6ZSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NBTEU6CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBmaWx0ZXItPnNjYWxlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TSElGVDoKKyAgICAgIGdfdmFsdWVfc2V0X2RvdWJsZSAodmFsdWUsIGZpbHRlci0+c2hpZnQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01BU0s6CisgICAgICBnX3ZhbHVlX3NldF9ib29sZWFuICh2YWx1ZSwgZmlsdGVyLT5tYXNrKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CiAgIH0KIH0KIAorc3RhdGljIGdib29sZWFuCitnc3RfY3ZfbGFwbGFjZV9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCisgICAgR3N0RXZlbnQgKiBldmVudCkKK3sKKyAgR3N0Q3ZMYXBsYWNlICpmaWx0ZXI7CisgIGdpbnQgd2lkdGgsIGhlaWdodDsKKyAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7CisgIGdib29sZWFuIHJlcyA9IFRSVUU7CisKKyAgZmlsdGVyID0gR1NUX0NWX0xBUExBQ0UgKHBhcmVudCk7CisKKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzoKKyAgICB7CisgICAgICBHc3RDYXBzICpjYXBzOworICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7CisKKyAgICAgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCk7CisgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImhlaWdodCIsICZoZWlnaHQpOworCisgICAgICBpZiAoZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nICE9IE5VTEwpIHsKKyAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmludGVybWVkaWFyeV9pbWcpOworICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Q0xhcGxhY2UpOworICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZHcmF5KTsKKyAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPkxhcGxhY2UpOworICAgICAgfQorCisgICAgICBmaWx0ZXItPkNMYXBsYWNlID0KKyAgICAgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfOFUsIDMpOworICAgICAgZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nID0KKyAgICAgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfMTZTLCAxKTsKKyAgICAgIGZpbHRlci0+Y3ZHcmF5ID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAxKTsKKyAgICAgIGZpbHRlci0+TGFwbGFjZSA9IGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF84VSwgMSk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmVzID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworCisgIHJldHVybiByZXM7Cit9CisKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfY3ZfbGFwbGFjZV90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAogICAgIElwbEltYWdlICogaW1nLCBHc3RCdWZmZXIgKiBvdXRidWYsIElwbEltYWdlICogb3V0aW1nKQogewogICBHc3RDdkxhcGxhY2UgKmZpbHRlciA9IEdTVF9DVl9MQVBMQUNFIChiYXNlKTsKKyAgR3N0TWFwSW5mbyBvdXRfaW5mbzsKIAogICBnX2Fzc2VydCAoZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nKTsKIAotICBjdkxhcGxhY2UgKGltZywgZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nLCBmaWx0ZXItPmFwZXJ0dXJlX3NpemUpOwotICBjdkNvbnZlcnRTY2FsZSAoZmlsdGVyLT5pbnRlcm1lZGlhcnlfaW1nLCBvdXRpbWcsIDEsIDApOworICBjdkN2dENvbG9yIChpbWcsIGZpbHRlci0+Y3ZHcmF5LCBDVl9SR0IyR1JBWSk7CisgIGN2TGFwbGFjZSAoZmlsdGVyLT5jdkdyYXksIGZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZywgZmlsdGVyLT5hcGVydHVyZV9zaXplKTsKKyAgY3ZDb252ZXJ0U2NhbGUgKGZpbHRlci0+aW50ZXJtZWRpYXJ5X2ltZywgZmlsdGVyLT5MYXBsYWNlLCBmaWx0ZXItPnNjYWxlLAorICAgICAgZmlsdGVyLT5zaGlmdCk7CisKKyAgY3ZaZXJvIChmaWx0ZXItPkNMYXBsYWNlKTsKKyAgaWYgKGZpbHRlci0+bWFzaykgeworICAgIGN2Q29weSAoaW1nLCBmaWx0ZXItPkNMYXBsYWNlLCBmaWx0ZXItPkxhcGxhY2UpOworICB9IGVsc2UgeworICAgIGN2Q3Z0Q29sb3IgKGZpbHRlci0+TGFwbGFjZSwgZmlsdGVyLT5DTGFwbGFjZSwgQ1ZfR1JBWTJSR0IpOworICB9CisKKyAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm91dF9pbmZvLCBHU1RfTUFQX1dSSVRFKTsKKyAgbWVtY3B5IChvdXRfaW5mby5kYXRhLCBmaWx0ZXItPkNMYXBsYWNlLT5pbWFnZURhdGEsCisgICAgICBnc3RfYnVmZmVyX2dldF9zaXplIChvdXRidWYpKTsKIAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5oIGIvZXh0L29wZW5jdi9nc3RjdmxhcGxhY2UuaAppbmRleCAwOThiMzQ3Li44MmYyMzdmIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2bGFwbGFjZS5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3ZsYXBsYWNlLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQ0LDggKzQ0LDYgQEAKICNpZm5kZWYgX19HU1RfQ1ZfTEFQTEFDRV9IX18KICNkZWZpbmUgX19HU1RfQ1ZfTEFQTEFDRV9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgPGdzdG9wZW5jdnZpZGVvZmlsdGVyLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTcwLDExICs2OCwxNyBAQAogICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OwogCiAgIGdpbnQgYXBlcnR1cmVfc2l6ZTsKKyAgZ2RvdWJsZSBzY2FsZTsKKyAgZ2RvdWJsZSBzaGlmdDsKKyAgZ2Jvb2xlYW4gbWFzazsKIAogICBJcGxJbWFnZSAqaW50ZXJtZWRpYXJ5X2ltZzsKKyAgSXBsSW1hZ2UgKmN2R3JheTsKKyAgSXBsSW1hZ2UgKkxhcGxhY2U7CisgIElwbEltYWdlICpDTGFwbGFjZTsKIH07CiAKLXN0cnVjdCBfR3N0Q3ZMYXBsYWNlQ2xhc3MgCitzdHJ1Y3QgX0dzdEN2TGFwbGFjZUNsYXNzCiB7CiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguYyBiL2V4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguY3BwCnNpbWlsYXJpdHkgaW5kZXggNzklCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3RjdnNtb290aC5jcHAKaW5kZXggMTY5ZmQxNi4uODcxNTczNiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RjdnNtb290aC5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00MSwxOSArNDEsMzIgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWN2c21vb3RoCisgKgorICogU21vb3RocyB0aGUgaW1hZ2UgdXNpbmcgdGhlcyBjdlNtb290aCBPcGVuQ1YgZnVuY3Rpb24uCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGN2c21vb3RoICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdGN2c21vb3RoLmgiCi0jaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgorI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jLmhwcD4KKwogCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfY3Zfc21vb3RoX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9jdl9zbW9vdGhfZGVidWcKIAordXNpbmcgbmFtZXNwYWNlIGN2OwogLyogRmlsdGVyIHNpZ25hbHMgYW5kIGFyZ3MgKi8KIGVudW0KIHsKQEAgLTg2LDcgKzk5LDYgQEAKICAgc3RhdGljIEdUeXBlIGN2X3Ntb290aF90eXBlX3R5cGUgPSAwOwogCiAgIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHNtb290aF90eXBlc1tdID0gewotLyogICAge0NWX0JMVVJfTk9fU0NBTEUsICJDViBCbHVyIE5vIFNjYWxlIiwgImJsdXItbm8tc2NhbGUifSwgKi8KICAgICB7Q1ZfQkxVUiwgIkNWIEJsdXIiLCAiYmx1ciJ9LAogICAgIHtDVl9HQVVTU0lBTiwgIkNWIEdhdXNzaWFuIiwgImdhdXNzaWFuIn0sCiAgICAge0NWX01FRElBTiwgIkNWIE1lZGlhbiIsICJtZWRpYW4ifSwKQEAgLTEwMyw3ICsxMTUsNyBAQAogCiAjZGVmaW5lIERFRkFVTFRfQ1ZfU01PT1RIX1RZUEUgQ1ZfR0FVU1NJQU4KICNkZWZpbmUgREVGQVVMVF9XSURUSCAzCi0jZGVmaW5lIERFRkFVTFRfSEVJR0hUIDAKKyNkZWZpbmUgREVGQVVMVF9IRUlHSFQgMwogI2RlZmluZSBERUZBVUxUX0NPTE9SU0lHTUEgMC4wCiAjZGVmaW5lIERFRkFVTFRfU1BBVElBTFNJR01BIDAuMAogCkBAIC0xMTYsOCArMTI4LDYgQEAKIAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2N2X3Ntb290aF90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICoKICAgICBmaWx0ZXIsIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2N2X3Ntb290aF90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogZmlsdGVyLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpOwogCiAvKiBpbml0aWFsaXplIHRoZSBjdnNtb290aCdzIGNsYXNzICovCiBzdGF0aWMgdm9pZApAQCAtMTM2LDQ1ICsxNDYsNDEgQEAKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2N2X3Ntb290aF9nZXRfcHJvcGVydHk7CiAKICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfaXBfZnVuYyA9IGdzdF9jdl9zbW9vdGhfdHJhbnNmb3JtX2lwOwotICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19mdW5jID0gZ3N0X2N2X3Ntb290aF90cmFuc2Zvcm07CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TTU9PVEhfVFlQRSwKICAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgidHlwZSIsCiAgICAgICAgICAgInR5cGUiLAogICAgICAgICAgICJTbW9vdGggVHlwZSIsCiAgICAgICAgICAgR1NUX1RZUEVfQ1ZfU01PT1RIX1RZUEUsCi0gICAgICAgICAgREVGQVVMVF9DVl9TTU9PVEhfVFlQRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKQorICAgICAgICAgIERFRkFVTFRfQ1ZfU01PT1RIX1RZUEUsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkKICAgICAgICk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfV0lEVEgsCi0gICAgICBnX3BhcmFtX3NwZWNfaW50ICgid2lkdGgiLCAid2lkdGggKGFwZXJ0dXJlIHdpZHRoKSIsCi0gICAgICAgICAgIlRoZSBhcGVydHVyZSB3aWR0aCAoTXVzdCBiZSBwb3NpdGl2ZSBhbmQgb2RkKS4iCi0gICAgICAgICAgIkNoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20iCi0gICAgICAgICAgIi9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoIiwgMSwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9XSURUSCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgid2lkdGgiLCAid2lkdGggKGtlcm5lbCB3aWR0aCkiLAorICAgICAgICAgICJUaGUgZ2F1c3NpYW4ga2VybmVsIHdpZHRoIChtdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLiIKKyAgICAgICAgICAiSWYgdHlwZSBpcyBtZWRpYW4sIHRoaXMgbWVhbnMgdGhlIGFwZXJ0dXJlIGxpbmVhciBzaXplLiIKKyAgICAgICAgICAiQ2hlY2sgT3BlbkNWIGRvY3M6IGh0dHA6Ly9kb2NzLm9wZW5jdi5vcmciCisgICAgICAgICAgIi8yLjQvbW9kdWxlcy9pbWdwcm9jL2RvYy9maWx0ZXJpbmcuaHRtIiwKKyAgICAgICAgICAxLCBHX01BWElOVCwgREVGQVVMVF9XSURUSCwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfSEVJR0hULAotICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImhlaWdodCIsICJoZWlnaHQgKGFwZXJ0dXJlIGhlaWdodCkiLAotICAgICAgICAgICJUaGUgYXBlcnR1cmUgaGVpZ2h0LCBpZiB6ZXJvLCB0aGUgd2lkdGggaXMgdXNlZC4iCi0gICAgICAgICAgIihNdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQgb3IgemVybywgdW51c2V0IGluIG1lZGlhbiBhbmQgYmlsYXRlcmFsICIKLSAgICAgICAgICAidHlwZXMpLiBDaGVjayBjdlNtb290aCBPcGVuQ1YgZG9jczogaHR0cDovL29wZW5jdi53aWxsb3dnYXJhZ2UuY29tIgotICAgICAgICAgICIvZG9jdW1lbnRhdGlvbi9pbWFnZV9maWx0ZXJpbmcuaHRtbCNjdlNtb290aCIsIDAsIEdfTUFYSU5ULAotICAgICAgICAgIERFRkFVTFRfSEVJR0hULCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJoZWlnaHQiLCAiaGVpZ2h0IChrZXJuZWwgaGVpZ2h0KSIsCisgICAgICAgICAgIlRoZSBnYXVzc2lhbiBrZXJuZWwgaGVpZ2h0IChtdXN0IGJlIHBvc2l0aXZlIGFuZCBvZGQpLiIsCisgICAgICAgICAgMCwgR19NQVhJTlQsIERFRkFVTFRfSEVJR0hULAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DT0xPUlNJR01BLAogICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoImNvbG9yIiwgImNvbG9yIChnYXVzc2lhbiBzdGFuZGFyZCBkZXZpYXRpb24gb3IgIgogICAgICAgICAgICJjb2xvciBzaWdtYSIsCiAgICAgICAgICAgIklmIHR5cGUgaXMgZ2F1c3NpYW4sIHRoaXMgbWVhbnMgdGhlIHN0YW5kYXJkIGRldmlhdGlvbi4iCiAgICAgICAgICAgIklmIHR5cGUgaXMgYmlsYXRlcmFsLCB0aGlzIG1lYW5zIHRoZSBjb2xvci1zaWdtYS4gSWYgemVybywgIgotICAgICAgICAgICJEZWZhdWx0IHZhbHVlcyBhcmUgdXNlZC4iCi0gICAgICAgICAgIkNoZWNrIGN2U21vb3RoIE9wZW5DViBkb2NzOiBodHRwOi8vb3BlbmN2LndpbGxvd2dhcmFnZS5jb20iCi0gICAgICAgICAgIi9kb2N1bWVudGF0aW9uL2ltYWdlX2ZpbHRlcmluZy5odG1sI2N2U21vb3RoIiwKKyAgICAgICAgICAiRGVmYXVsdCB2YWx1ZXMgYXJlIHVzZWQuIiwKICAgICAgICAgICAwLCBHX01BWERPVUJMRSwgREVGQVVMVF9DT0xPUlNJR01BLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TUEFUSUFMU0lHTUEsCiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgic3BhdGlhbCIsICJzcGF0aWFsIChzcGF0aWFsIHNpZ21hLCBiaWxhdGVyYWwgb25seSkiLAotICAgICAgICAgICJPbmx5IHVzZWQgaW4gYmlsYXRlcmFsIHR5cGUsIG1lYW5zIHRoZSBzcGF0aWFsLXNpZ21hLiIKLSAgICAgICAgICAiQ2hlY2sgY3ZTbW9vdGggT3BlbkNWIGRvY3M6IGh0dHA6Ly9vcGVuY3Yud2lsbG93Z2FyYWdlLmNvbSIKLSAgICAgICAgICAiL2RvY3VtZW50YXRpb24vaW1hZ2VfZmlsdGVyaW5nLmh0bWwjY3ZTbW9vdGgiLAorICAgICAgICAgICJPbmx5IHVzZWQgaW4gYmlsYXRlcmFsIHR5cGUsIG1lYW5zIHRoZSBzcGF0aWFsLXNpZ21hLiIsCiAgICAgICAgICAgMCwgR19NQVhET1VCTEUsIERFRkFVTFRfU1BBVElBTFNJR01BLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgImN2c21vb3RoIiwKQEAgLTIwNiw3ICsyMTIsOCBAQAogICBmaWx0ZXItPmNvbG9yc2lnbWEgPSBERUZBVUxUX0NPTE9SU0lHTUE7CiAgIGZpbHRlci0+c3BhdGlhbHNpZ21hID0gREVGQVVMVF9TUEFUSUFMU0lHTUE7CiAKLSAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9pbl9wbGFjZSAoR1NUX0JBU0VfVFJBTlNGT1JNIChmaWx0ZXIpLCBGQUxTRSk7CisgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVCAoZmlsdGVyKSwKKyAgICAgIFRSVUUpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjIwLDEwICsyMjcsMTIgQEAKICAgc3dpdGNoICh2YWx1ZSkgewogICAgIGNhc2UgQ1ZfR0FVU1NJQU46CiAgICAgY2FzZSBDVl9CTFVSOgotICAgICAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9pbl9wbGFjZSAoR1NUX0JBU0VfVFJBTlNGT1JNIChmaWx0ZXIpLCBUUlVFKTsKKyAgICAgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVAorICAgICAgICAgIChmaWx0ZXIpLCBUUlVFKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIEZBTFNFKTsKKyAgICAgIGdzdF9vcGVuY3ZfdmlkZW9fZmlsdGVyX3NldF9pbl9wbGFjZSAoR1NUX09QRU5DVl9WSURFT19GSUxURVJfQ0FTVAorICAgICAgICAgIChmaWx0ZXIpLCBGQUxTRSk7CiAgICAgICBicmVhazsKICAgfQogfQpAQCAtMjUyLDcgKzI2MSw3IEBACiAgICAgY2FzZSBQUk9QX0hFSUdIVDp7CiAgICAgICBnaW50IHByb3AgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKIAotICAgICAgaWYgKHByb3AgJSAyID09IDEgfHwgcHJvcCA9PSAwKSB7CisgICAgICBpZiAocHJvcCAlIDIgPT0gMSkgewogICAgICAgICBmaWx0ZXItPmhlaWdodCA9IHByb3A7CiAgICAgICB9IGVsc2UgewogICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZpbHRlciwgIklnbm9yaW5nIHZhbHVlIGZvciBoZWlnaHQsIG5vdCBvZGQiCkBAIC0zMDEsMjUgKzMxMCwyOSBAQAogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X2N2X3Ntb290aF90cmFuc2Zvcm0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAotICAgIElwbEltYWdlICogaW1nLCBHc3RCdWZmZXIgKiBvdXRidWYsIElwbEltYWdlICogb3V0aW1nKQotewotICBHc3RDdlNtb290aCAqZmlsdGVyID0gR1NUX0NWX1NNT09USCAoYmFzZSk7Ci0KLSAgY3ZTbW9vdGggKGltZywgb3V0aW1nLCBmaWx0ZXItPnR5cGUsIGZpbHRlci0+d2lkdGgsIGZpbHRlci0+aGVpZ2h0LAotICAgICAgZmlsdGVyLT5jb2xvcnNpZ21hLCBmaWx0ZXItPnNwYXRpYWxzaWdtYSk7Ci0KLSAgcmV0dXJuIEdTVF9GTE9XX09LOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2N2X3Ntb290aF90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAogICAgIElwbEltYWdlICogaW1nKQogewogICBHc3RDdlNtb290aCAqZmlsdGVyID0gR1NUX0NWX1NNT09USCAoYmFzZSk7CiAKLSAgY3ZTbW9vdGggKGltZywgaW1nLCBmaWx0ZXItPnR5cGUsIGZpbHRlci0+d2lkdGgsIGZpbHRlci0+aGVpZ2h0LAotICAgICAgZmlsdGVyLT5jb2xvcnNpZ21hLCBmaWx0ZXItPnNwYXRpYWxzaWdtYSk7CisgIHN3aXRjaCAoZmlsdGVyLT50eXBlKSB7CisgICAgY2FzZSBDVl9CTFVSOgorICAgICAgYmx1ciAoTWF0IChpbWcpLCBNYXQgKGltZyksIFNpemUgKGZpbHRlci0+d2lkdGgsIGZpbHRlci0+aGVpZ2h0KSwKKyAgICAgICAgICBQb2ludCAoLTEsIC0xKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIENWX0dBVVNTSUFOOgorICAgICAgR2F1c3NpYW5CbHVyIChNYXQgKGltZyksIE1hdCAoaW1nKSwgU2l6ZSAoZmlsdGVyLT53aWR0aCwgZmlsdGVyLT5oZWlnaHQpLAorICAgICAgICAgIGZpbHRlci0+Y29sb3JzaWdtYSwgZmlsdGVyLT5jb2xvcnNpZ21hKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQ1ZfTUVESUFOOgorICAgICAgbWVkaWFuQmx1ciAoTWF0IChpbWcpLCBNYXQgKGltZyksIGZpbHRlci0+d2lkdGgpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBDVl9CSUxBVEVSQUw6CisgICAgICBiaWxhdGVyYWxGaWx0ZXIgKE1hdCAoaW1nKSwgTWF0IChpbWcpLCAtMSwgZmlsdGVyLT5jb2xvcnNpZ21hLCAwLjApOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CiAKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdnNtb290aC5oIGIvZXh0L29wZW5jdi9nc3RjdnNtb290aC5oCmluZGV4IGMzZTUxNjQuLjdjNzRmYmQgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0Y3ZzbW9vdGguaAorKysgYi9leHQvb3BlbmN2L2dzdGN2c21vb3RoLmgKQEAgLTEsNyArMSw3IEBACiAvKgogICogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAgVGhpYWdvIFNhbnRvcyA8dGhpYWdvLnNvdXNhLnNhbnRvc0Bjb2xsYWJvcmEuY28udWs+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQ0LDggKzQ0LDYgQEAKICNpZm5kZWYgX19HU1RfQ1ZfU01PT1RIX0hfXwogI2RlZmluZSBfX0dTVF9DVl9TTU9PVEhfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03Nyw3ICs3NSw3IEBACiAgIGdkb3VibGUgc3BhdGlhbHNpZ21hOwogfTsKIAotc3RydWN0IF9Hc3RDdlNtb290aENsYXNzIAorc3RydWN0IF9Hc3RDdlNtb290aENsYXNzCiB7CiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0Y3Zzb2JlbC5jIGIvZXh0L29wZW5jdi9nc3RjdnNvYmVsLmNwcApzaW1pbGFyaXR5IGluZGV4IDYwJQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdGN2c29iZWwuYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3RjdnNvYmVsLmNwcAppbmRleCAxZDliMTUxLi5kNWM5ZWY3IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2c29iZWwuYworKysgYi9leHQvb3BlbmN2L2dzdGN2c29iZWwuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEwIFRoaWFnbyBTYW50b3MgPHRoaWFnby5zb3VzYS5zYW50b3NAY29sbGFib3JhLmNvLnVrPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00MSwxMyArNDEsMjMgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWN2c29iZWwKKyAqCisgKiBBcHBsaWVzIHRoZSBjdlNvYmVsIE9wZW5DViBmdW5jdGlvbiB0byB0aGUgaW1hZ2UuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGN2c29iZWwgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0Y3Zzb2JlbC5oIgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIApAQCAtNTcsMjMgKzY3LDE0IEBACiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiR1JBWTgiKSkKKyAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJSR0IiKSkKICAgICApOwogCi0KLSNpZiBHX0JZVEVfT1JERVIgPT0gR19CSUdfRU5ESUFOCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCiAgICAgR1NUX1BBRF9TUkMsCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiR1JBWTE2X0JFIikpCisgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiUkdCIikpCiAgICAgKTsKLSNlbHNlCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiR1JBWTE2X0xFIikpCi0gICAgKTsKLSNlbmRpZgogCiAvKiBGaWx0ZXIgc2lnbmFscyBhbmQgYXJncyAqLwogZW51bQpAQCAtODYsMTIgKzg3LDE0IEBACiAgIFBST1BfMCwKICAgUFJPUF9YX09SREVSLAogICBQUk9QX1lfT1JERVIsCi0gIFBST1BfQVBFUlRVUkVfU0laRQorICBQUk9QX0FQRVJUVVJFX1NJWkUsCisgIFBST1BfTUFTSwogfTsKIAogI2RlZmluZSBERUZBVUxUX1hfT1JERVIgMQogI2RlZmluZSBERUZBVUxUX1lfT1JERVIgMAogI2RlZmluZSBERUZBVUxUX0FQRVJUVVJFX1NJWkUgMworI2RlZmluZSBERUZBVUxUX01BU0sgVFJVRQogCiBHX0RFRklORV9UWVBFIChHc3RDdlNvYmVsLCBnc3RfY3Zfc29iZWwsIEdTVF9UWVBFX09QRU5DVl9WSURFT19GSUxURVIpOwogCkBAIC0xMDAsNDQgKzEwMyw2NSBAQAogc3RhdGljIHZvaWQgZ3N0X2N2X3NvYmVsX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAotc3RhdGljIEdzdENhcHMgKmdzdF9jdl9zb2JlbF90cmFuc2Zvcm1fY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLAotICAgIEdzdFBhZERpcmVjdGlvbiBkaXIsIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKTsKLQorc3RhdGljIGdib29sZWFuIGdzdF9jdl9zb2JlbF9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfY3Zfc29iZWxfdHJhbnNmb3JtIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGZpbHRlciwKICAgICBHc3RCdWZmZXIgKiBidWYsIElwbEltYWdlICogaW1nLCBHc3RCdWZmZXIgKiBvdXRidWYsIElwbEltYWdlICogb3V0aW1nKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfY3Zfc29iZWxfc2V0X2NhcHMgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogdHJhbnNmb3JtLAorICAgIGdpbnQgaW5fd2lkdGgsIGdpbnQgaW5faGVpZ2h0LCBnaW50IGluX2RlcHRoLCBnaW50IGluX2NoYW5uZWxzLAorICAgIGdpbnQgb3V0X3dpZHRoLCBnaW50IG91dF9oZWlnaHQsIGdpbnQgb3V0X2RlcHRoLCBnaW50IG91dF9jaGFubmVscyk7CisKKy8qIENsZWFuIHVwICovCitzdGF0aWMgdm9pZAorZ3N0X2N2X3NvYmVsX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqKQoreworICBHc3RDdlNvYmVsICpmaWx0ZXIgPSBHU1RfQ1ZfU09CRUwgKG9iaik7CisKKyAgaWYgKGZpbHRlci0+Y3ZTb2JlbCAhPSBOVUxMKSB7CisgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2Q1NvYmVsKTsKKyAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZHcmF5KTsKKyAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZTb2JlbCk7CisgIH0KKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X2N2X3NvYmVsX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmopOworfQogCiAvKiBpbml0aWFsaXplIHRoZSBjdnNvYmVsJ3MgY2xhc3MgKi8KIHN0YXRpYyB2b2lkCiBnc3RfY3Zfc29iZWxfY2xhc3NfaW5pdCAoR3N0Q3ZTb2JlbENsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSAgR3N0QmFzZVRyYW5zZm9ybUNsYXNzICpnc3RiYXNldHJhbnNmb3JtX2NsYXNzOwogICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICpnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzOwogCiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzID0gKEdzdEJhc2VUcmFuc2Zvcm1DbGFzcyAqKSBrbGFzczsKICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcyA9IChHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICopIGtsYXNzOwogCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9jdl9zb2JlbF9maW5hbGl6ZSk7CiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9jdl9zb2JlbF9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9jdl9zb2JlbF9nZXRfcHJvcGVydHk7CiAKLSAgZ3N0YmFzZXRyYW5zZm9ybV9jbGFzcy0+dHJhbnNmb3JtX2NhcHMgPSBnc3RfY3Zfc29iZWxfdHJhbnNmb3JtX2NhcHM7Ci0KICAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfZnVuYyA9IGdzdF9jdl9zb2JlbF90cmFuc2Zvcm07CisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3NldF9jYXBzID0gZ3N0X2N2X3NvYmVsX3NldF9jYXBzOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfWF9PUkRFUiwKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ4LW9yZGVyIiwgInggb3JkZXIiLAogICAgICAgICAgICJPcmRlciBvZiB0aGUgZGVyaXZhdGl2ZSB4IiwgLTEsIEdfTUFYSU5ULAotICAgICAgICAgIERFRkFVTFRfWF9PUkRFUiwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9YX09SREVSLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ZX09SREVSLAotICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInktb3JkZXIiLCAieSBvcmRlciIsCi0gICAgICAgICAgIk9yZGVyIG9mIHRoZSBkZXJpdmF0aXZlIHkiLCAtMSwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9ZX09SREVSLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ5LW9yZGVyIiwgInkgb3JkZXIiLCAiT3JkZXIgb2YgdGhlIGRlcml2YXRpdmUgeSIsIC0xLAorICAgICAgICAgIEdfTUFYSU5ULCBERUZBVUxUX1lfT1JERVIsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0FQRVJUVVJFX1NJWkUsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiYXBlcnR1cmUtc2l6ZSIsICJhcGVydHVyZSBzaXplIiwKICAgICAgICAgICAiU2l6ZSBvZiB0aGUgZXh0ZW5kZWQgU29iZWwgS2VybmVsICgxLCAzLCA1IG9yIDcpIiwgMSwgNywKLSAgICAgICAgICBERUZBVUxUX0FQRVJUVVJFX1NJWkUsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfQVBFUlRVUkVfU0laRSwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUFTSywKKyAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgibWFzayIsICJNYXNrIiwKKyAgICAgICAgICAiU2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBkZXJpdmF0aXZlIGVkZ2VzIHNob3VsZCBiZSB1c2VkIGFzIGEgbWFzayBvbiB0aGUgb3JpZ2luYWwgaW5wdXQgb3Igbm90IiwKKyAgICAgICAgICBERUZBVUxUX01BU0ssIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjX2ZhY3RvcnkpKTsKQEAgLTE1NCw3OCArMTc4LDc0IEBACiBzdGF0aWMgdm9pZAogZ3N0X2N2X3NvYmVsX2luaXQgKEdzdEN2U29iZWwgKiBmaWx0ZXIpCiB7CisgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChHU1RfQkFTRV9UUkFOU0ZPUk1fU0lOS19QQUQgKGZpbHRlciksCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2N2X3NvYmVsX2hhbmRsZV9zaW5rX2V2ZW50KSk7CisKICAgZmlsdGVyLT54X29yZGVyID0gREVGQVVMVF9YX09SREVSOwogICBmaWx0ZXItPnlfb3JkZXIgPSBERUZBVUxUX1lfT1JERVI7CiAgIGZpbHRlci0+YXBlcnR1cmVfc2l6ZSA9IERFRkFVTFRfQVBFUlRVUkVfU0laRTsKKyAgZmlsdGVyLT5tYXNrID0gREVGQVVMVF9NQVNLOwogCi0gIGdzdF9iYXNlX3RyYW5zZm9ybV9zZXRfaW5fcGxhY2UgKEdTVF9CQVNFX1RSQU5TRk9STSAoZmlsdGVyKSwgRkFMU0UpOworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBGQUxTRSk7CiB9CiAKLXN0YXRpYyBHc3RDYXBzICoKLWdzdF9jdl9zb2JlbF90cmFuc2Zvcm1fY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIHRyYW5zLCBHc3RQYWREaXJlY3Rpb24gZGlyLAotICAgIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQorLyogdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBsaW5rIHdpdGggb3RoZXIgZWxlbWVudHMgKi8KK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2N2X3NvYmVsX3NldF9jYXBzIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIHRyYW5zZm9ybSwKKyAgICBnaW50IGluX3dpZHRoLCBnaW50IGluX2hlaWdodCwgZ2ludCBpbl9kZXB0aCwgZ2ludCBpbl9jaGFubmVscywKKyAgICBnaW50IG91dF93aWR0aCwgZ2ludCBvdXRfaGVpZ2h0LCBnaW50IG91dF9kZXB0aCwgZ2ludCBvdXRfY2hhbm5lbHMpCiB7Ci0gIEdzdENhcHMgKnRvLCAqcmV0OwotICBHc3RDYXBzICp0ZW1wbDsKKyAgR3N0Q3ZTb2JlbCAqZmlsdGVyID0gR1NUX0NWX1NPQkVMICh0cmFuc2Zvcm0pOworCisgIGlmIChmaWx0ZXItPmN2R3JheSkKKyAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZHcmF5KTsKKworICBmaWx0ZXItPmN2R3JheSA9CisgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKGluX3dpZHRoLCBpbl9oZWlnaHQpLCBJUExfREVQVEhfOFUsIDEpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9jdl9zb2JlbF9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCisgICAgR3N0RXZlbnQgKiBldmVudCkKK3sKKyAgR3N0Q3ZTb2JlbCAqZmlsdGVyOworICBnaW50IHdpZHRoLCBoZWlnaHQ7CiAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwotICBHc3RQYWQgKm90aGVyOwotICBnaW50IGk7CisgIGdib29sZWFuIHJlcyA9IFRSVUU7CiAKLSAgdG8gPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7CisgIGZpbHRlciA9IEdTVF9DVl9TT0JFTCAocGFyZW50KTsKIAotICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpOyBpKyspIHsKLSAgICBjb25zdCBHVmFsdWUgKnY7Ci0gICAgR1ZhbHVlIGxpc3QgPSB7IDAsIH07Ci0gICAgR1ZhbHVlIHZhbCA9IHsgMCwgfTsKKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzoKKyAgICB7CisgICAgICBHc3RDYXBzICpjYXBzOworICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7CiAKLSAgICBzdHJ1Y3R1cmUgPSBnc3Rfc3RydWN0dXJlX2NvcHkgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIGkpKTsKKyAgICAgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJ3aWR0aCIsICZ3aWR0aCk7CisgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgImhlaWdodCIsICZoZWlnaHQpOwogCi0gICAgZ192YWx1ZV9pbml0ICgmbGlzdCwgR1NUX1RZUEVfTElTVCk7CisgICAgICBpZiAoZmlsdGVyLT5jdlNvYmVsICE9IE5VTEwpIHsKKyAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2Q1NvYmVsKTsKKyAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2R3JheSk7CisgICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdlNvYmVsKTsKKyAgICAgIH0KIAotICAgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX1NUUklORyk7Ci0gICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdmFsLCAiR1JBWTgiKTsKLSAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKLSAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsKTsKLQotICAgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX1NUUklORyk7Ci0jaWYgR19CWVRFX09SREVSID09IEdfQklHX0VORElBTgotICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnZhbCwgIkdSQVkxNl9CRSIpOwotI2Vsc2UKLSAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZ2YWwsICJHUkFZMTZfTEUiKTsKLSNlbmRpZgotICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZ2YWwpOwotICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWwpOwotCi0gICAgdiA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJmb3JtYXQiKTsKLQotICAgIGdzdF92YWx1ZV9saXN0X21lcmdlICgmdmFsLCB2LCAmbGlzdCk7Ci0gICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHN0cnVjdHVyZSwgImZvcm1hdCIsICZ2YWwpOwotICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWwpOwotICAgIGdfdmFsdWVfdW5zZXQgKCZsaXN0KTsKLQotICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkIChzdHJ1Y3R1cmUsICJjb2xvcmltZXRyeSIpOwotICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkIChzdHJ1Y3R1cmUsICJjaHJvbWEtc2l0ZSIpOwotCi0gICAgZ3N0X2NhcHNfYXBwZW5kX3N0cnVjdHVyZSAodG8sIHN0cnVjdHVyZSk7Ci0KLSAgfQotICAvKiBmaWx0ZXIgYWdhaW5zdCBzZXQgYWxsb3dlZCBjYXBzIG9uIHRoZSBwYWQgKi8KLSAgb3RoZXIgPSAoZGlyID09IEdTVF9QQURfU0lOSykgPyB0cmFucy0+c3JjcGFkIDogdHJhbnMtPnNpbmtwYWQ7Ci0gIHRlbXBsID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKG90aGVyKTsKLSAgcmV0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0ICh0bywgdGVtcGwpOwotICBnc3RfY2Fwc191bnJlZiAodG8pOwotICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOwotCi0gIGlmIChyZXQgJiYgZmlsdGVyKSB7Ci0gICAgR3N0Q2FwcyAqaW50ZXJzZWN0aW9uOwotCi0gICAgaW50ZXJzZWN0aW9uID0KLSAgICAgICAgZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgcmV0LCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwotICAgIGdzdF9jYXBzX3VucmVmIChyZXQpOwotICAgIHJldCA9IGludGVyc2VjdGlvbjsKKyAgICAgIGZpbHRlci0+Y3ZDU29iZWwgPSBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfOFUsIDMpOworICAgICAgZmlsdGVyLT5jdkdyYXkgPSBjdkNyZWF0ZUltYWdlIChjdlNpemUgKHdpZHRoLCBoZWlnaHQpLCBJUExfREVQVEhfOFUsIDEpOworICAgICAgZmlsdGVyLT5jdlNvYmVsID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAxKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CiAgIH0KIAotICByZXR1cm4gcmV0OworICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CisKKyAgcmV0dXJuIHJlczsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1MCw2ICsyNzAsOSBAQAogICAgICAgICBmaWx0ZXItPmFwZXJ0dXJlX3NpemUgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKICAgICB9CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUFTSzoKKyAgICAgIGZpbHRlci0+bWFzayA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC0yNzIsNiArMjk1LDkgQEAKICAgICBjYXNlIFBST1BfQVBFUlRVUkVfU0laRToKICAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIGZpbHRlci0+YXBlcnR1cmVfc2l6ZSk7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUFTSzoKKyAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBmaWx0ZXItPm1hc2spOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTI4MywxMCArMzA5LDIzIEBACiAgICAgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpCiB7CiAgIEdzdEN2U29iZWwgKmZpbHRlciA9IEdTVF9DVl9TT0JFTCAoYmFzZSk7CisgIEdzdE1hcEluZm8gb3V0X2luZm87CiAKLSAgY3ZTb2JlbCAoaW1nLCBvdXRpbWcsIGZpbHRlci0+eF9vcmRlciwgZmlsdGVyLT55X29yZGVyLAorICBjdkN2dENvbG9yIChpbWcsIGZpbHRlci0+Y3ZHcmF5LCBDVl9SR0IyR1JBWSk7CisgIGN2U29iZWwgKGZpbHRlci0+Y3ZHcmF5LCBmaWx0ZXItPmN2U29iZWwsIGZpbHRlci0+eF9vcmRlciwgZmlsdGVyLT55X29yZGVyLAogICAgICAgZmlsdGVyLT5hcGVydHVyZV9zaXplKTsKIAorICBjdlplcm8gKGZpbHRlci0+Y3ZDU29iZWwpOworICBpZiAoZmlsdGVyLT5tYXNrKSB7CisgICAgY3ZDb3B5IChpbWcsIGZpbHRlci0+Y3ZDU29iZWwsIGZpbHRlci0+Y3ZTb2JlbCk7CisgIH0gZWxzZSB7CisgICAgY3ZDdnRDb2xvciAoZmlsdGVyLT5jdlNvYmVsLCBmaWx0ZXItPmN2Q1NvYmVsLCBDVl9HUkFZMlJHQik7CisgIH0KKworICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmb3V0X2luZm8sIEdTVF9NQVBfV1JJVEUpOworICBtZW1jcHkgKG91dF9pbmZvLmRhdGEsIGZpbHRlci0+Y3ZDU29iZWwtPmltYWdlRGF0YSwKKyAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZikpOworCiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RjdnNvYmVsLmggYi9leHQvb3BlbmN2L2dzdGN2c29iZWwuaAppbmRleCBjNjcxOWEwLi42MmNhYmFiIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGN2c29iZWwuaAorKysgYi9leHQvb3BlbmN2L2dzdGN2c29iZWwuaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDQsOCArNDQsNiBAQAogI2lmbmRlZiBfX0dTVF9DVl9TT0JFTF9IX18KICNkZWZpbmUgX19HU1RfQ1ZfU09CRUxfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlIDxnc3RvcGVuY3Z2aWRlb2ZpbHRlci5oPgogCiBHX0JFR0lOX0RFQ0xTCkBAIC03Miw5ICs3MCwxNCBAQAogICBnaW50IHhfb3JkZXI7CiAgIGdpbnQgeV9vcmRlcjsKICAgZ2ludCBhcGVydHVyZV9zaXplOworICBnYm9vbGVhbiBtYXNrOworCisgIElwbEltYWdlICpjdkNTb2JlbDsKKyAgSXBsSW1hZ2UgKmN2R3JheTsKKyAgSXBsSW1hZ2UgKmN2U29iZWw7CiB9OwogCi1zdHJ1Y3QgX0dzdEN2U29iZWxDbGFzcyAKK3N0cnVjdCBfR3N0Q3ZTb2JlbENsYXNzCiB7CiAgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmNwcCBiL2V4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmNwcAppbmRleCBmM2Y5ZDY0Li4zY2E5MDE1IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGRpc3Bhcml0eS5jcHAKKysrIGIvZXh0L29wZW5jdi9nc3RkaXNwYXJpdHkuY3BwCkBAIC01MywzMiArNTMsMzIgQEAKICAqIHJ1biBwcmVmaWx0ZXJpbmcgc3RhZ2VzIHRvIG5vcm1hbGl6ZSBicmlnaHRuZXNzIGJldHdlZW4gdGhlIGlucHV0cywgYW5kIHRvIG1heGltaXplIHRleHR1cmUuCiAgKgogICogTm90ZSB0aGF0IGluIGdlbmVyYWwgaXMgaGFyZCB0byBmaW5kIGNvcnJlc3BvbmRlbmNlcyBiZXR3ZWVuIHNvZnQgdGV4dHVyZXMsIGZvciBpbnN0YW5jZSBhCi0gKiBibG9jayBvZiBnbG9zcyBibHVlIGNvbG91ci4gVGhlIG91dHB1dCBpcyBhIGdyYXkgaW1hZ2Ugd2l0aCB2YWx1ZXMgY2xvc2UgdG8gd2hpdGUgbWVhbmluZyAKKyAqIGJsb2NrIG9mIGdsb3NzIGJsdWUgY29sb3VyLiBUaGUgb3V0cHV0IGlzIGEgZ3JheSBpbWFnZSB3aXRoIHZhbHVlcyBjbG9zZSB0byB3aGl0ZSBtZWFuaW5nCiAgKiBjbG9zZXIgdG8gdGhlIGNhbWVyYXMgYW5kIGRhcmtlciBmYXIgYXdheS4gQmxhY2sgbWVhbnMgdGhhdCB0aGUgcGl4ZWxzIHdlcmUgbm90IG1hdGNoZWQKICAqIGNvcnJlY3RseSAobm90IGZvdW5kKS4gVGhlIHJlc3VsdGluZyBkZXB0aCBtYXAgY2FuIGJlIHRyYW5zZm9ybWVkIGludG8gcmVhbCB3b3JsZCBjb29yZGluYXRlcwogICogYnkgbWVhbnMgb2YgT3BlbkNWIGZ1bmN0aW9uIChyZXByb2plY3RJbWFnZVRvM0QpIGJ1dCBmb3IgdGhpcyB0aGUgY2FtZXJhIG1hdHJpeGVzIG5lZWQgdG8KICAqIGJlIGZ1bGx5IGtub3duLgogICoKICAqIEFsZ29yaXRobSAxIGlzIHRoZSBPcGVuQ1YgU3RlcmVvIEJsb2NrIE1hdGNoaW5nLCBzaW1pbGFyIHRvIHRoZSBvbmUgZGV2ZWxvcGVkIGJ5IEt1cnQgS29ub2xpZ2UKLSAqIFtBXSBhbmQgdGhhdCB3b3JrcyBieSB1c2luZyBzbWFsbCBTdW0tb2YtYWJzb2x1dGUtZGlmZmVyZW5jIChTQUQpIHdpbmRvd3MgdG8gZmluZCBtYXRjaGluZyAKKyAqIFtBXSBhbmQgdGhhdCB3b3JrcyBieSB1c2luZyBzbWFsbCBTdW0tb2YtYWJzb2x1dGUtZGlmZmVyZW5jIChTQUQpIHdpbmRvd3MgdG8gZmluZCBtYXRjaGluZwogICogcG9pbnRzIGJldHdlZW4gdGhlIGxlZnQgYW5kIHJpZ2h0IHJlY3RpZmllZCBpbWFnZXMuIFRoaXMgYWxnb3JpdGhtIGZpbmRzIG9ubHkgc3Ryb25nbHkgbWF0Y2hpbmcKICAqIHBvaW50cyBiZXR3ZWVuIGJvdGggaW1hZ2VzLCB0aGlzIG1lYW5zIG5vcm1hbGx5IHN0cm9uZyB0ZXh0dXJlcy4gSW4gc29mdCB0ZXh0dXJlcywgc3VjaCBhcyBhCiAgKiBzaW5nbGUgY29sb3VyZWQgd2FsbCAoYXMgb3Bwb3NlZCB0bywgZi5pLiBhIGhhaXJ5IHJ1ZyksIG5vdCBhbGwgcGl4ZWxzIG1pZ2h0IGhhdmUgY29ycmVzcG9uZGVuY2UuCiAgKgogICogQWxnb3JpdGhtIDIgaXMgdGhlIFNlbWkgR2xvYmFsIE1hdGNoaW5nIChTR00pIGFsZ29yaXRobSBbQl0gd2hpY2ggbW9kZWxzIHRoZSBzY2VuZSBzdHJ1Y3R1cmUKLSAqIHdpdGggYSBwb2ludC13aXNlIG1hdGNoaW5nIGNvc3QgYW5kIGFuIGFzc29jaWF0ZWQgc21vb3RobmVzcyB0ZXJtLiBUaGUgZW5lcmd5IG1pbmltaXphdGlvbiAKLSAqIGlzIHRoZW4gY29tcHV0ZWQgaW4gYSBtdWx0aXR1ZGUgb2YgMUQgbGluZXMuIEZvciBlYWNoIHBvaW50LCB0aGUgZGlzcGFyaXR5IGNvcnJlc3BvbmRpbmcgdG8gCi0gKiB0aGUgbWluaW11bSBhZ2dyZWdhdGVkIGNvc3QgaXMgc2VsZWN0ZWQuIEluIFtCXSB0aGUgYXV0aG9yIHByb3Bvc2VzIHRvIHVzZSA4IG9yIDE2IGRpZmZlcmVudCAKLSAqIGluZGVwZW5kZW50IHBhdGhzLiBUaGUgU0dNIGFwcHJvYWNoIHdvcmtzIHdlbGwgbmVhciBkZXB0aCBkaXNjb250aW51aXRpZXMsIGJ1dCBwcm9kdWNlcyBsZXNzIAotICogYWNjdXJhdGUgcmVzdWx0cy4gRGVzcGl0ZSBpdHMgcmVsYXRpdmVseSBsYXJnZSBtZW1vcnkgZm9vdHByaW50LCB0aGlzIG1ldGhvZCBpcyB2ZXJ5IGZhc3QgYW5kIAorICogd2l0aCBhIHBvaW50LXdpc2UgbWF0Y2hpbmcgY29zdCBhbmQgYW4gYXNzb2NpYXRlZCBzbW9vdGhuZXNzIHRlcm0uIFRoZSBlbmVyZ3kgbWluaW1pemF0aW9uCisgKiBpcyB0aGVuIGNvbXB1dGVkIGluIGEgbXVsdGl0dWRlIG9mIDFEIGxpbmVzLiBGb3IgZWFjaCBwb2ludCwgdGhlIGRpc3Bhcml0eSBjb3JyZXNwb25kaW5nIHRvCisgKiB0aGUgbWluaW11bSBhZ2dyZWdhdGVkIGNvc3QgaXMgc2VsZWN0ZWQuIEluIFtCXSB0aGUgYXV0aG9yIHByb3Bvc2VzIHRvIHVzZSA4IG9yIDE2IGRpZmZlcmVudAorICogaW5kZXBlbmRlbnQgcGF0aHMuIFRoZSBTR00gYXBwcm9hY2ggd29ya3Mgd2VsbCBuZWFyIGRlcHRoIGRpc2NvbnRpbnVpdGllcywgYnV0IHByb2R1Y2VzIGxlc3MKKyAqIGFjY3VyYXRlIHJlc3VsdHMuIERlc3BpdGUgaXRzIHJlbGF0aXZlbHkgbGFyZ2UgbWVtb3J5IGZvb3RwcmludCwgdGhpcyBtZXRob2QgaXMgdmVyeSBmYXN0IGFuZAogICogcG90ZW50aWFsbHkgcm9idXN0IHRvIGNvbXBsaWNhdGVkIHRleHR1cmVkIHJlZ2lvbnMuCiAgKgotICogQWxnb3JpdGhtIDMgaXMgdGhlIE9wZW5DViBpbXBsZW1lbnRhdGlvbiBvZiBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgdmFyaWF0aW9uYWwgc3RlcmVvIAorICogQWxnb3JpdGhtIDMgaXMgdGhlIE9wZW5DViBpbXBsZW1lbnRhdGlvbiBvZiBhIG1vZGlmaWNhdGlvbiBvZiB0aGUgdmFyaWF0aW9uYWwgc3RlcmVvCiAgKiBjb3JyZXNwb25kZW5jZSBhbGdvcml0aG0sIGRlc2NyaWJlZCBpbiBbQ10uCiAgKgotICogQWxnb3JpdGhtIDQgaXMgdGhlIEdyYXBoIEN1dCBzdGVyZW8gdmlzaW9uIGFsZ29yaXRobSAoR0MpIGludHJvZHVjZWQgaW4gW0RdOyBpdCBpcyBhIGdsb2JhbCAKKyAqIEFsZ29yaXRobSA0IGlzIHRoZSBHcmFwaCBDdXQgc3RlcmVvIHZpc2lvbiBhbGdvcml0aG0gKEdDKSBpbnRyb2R1Y2VkIGluIFtEXTsgaXQgaXMgYSBnbG9iYWwKICAqIHN0ZXJlbyB2aXNpb24gbWV0aG9kLiBJdCBjYWxjdWxhdGVzIGRlcHRoIGRpc2NvbnRpbnVpdGllcyBieSBtaW5pbWl6aW5nIGFuIGVuZXJneSBmdW5jdGlvbgotICogY29tYmluZ2luIGEgcG9pbnQtd2lzZSBtYXRjaGluZyBjb3N0IGFuZCBhIHNtb290aG5lc3MgdGVybS4gVGhlIGVuZXJneSBmdW5jdGlvbiBpcyBwYXNzZWQgCisgKiBjb21iaW5naW4gYSBwb2ludC13aXNlIG1hdGNoaW5nIGNvc3QgYW5kIGEgc21vb3RobmVzcyB0ZXJtLiBUaGUgZW5lcmd5IGZ1bmN0aW9uIGlzIHBhc3NlZAogICogdG8gZ3JhcGggYW5kIEdyYXBoIEN1dCBpcyB1c2VkIHRvIGZpbmQgYSBsb3dlc3QtZW5lcmd5IGN1dC4gR0MgaXMgY29tcHV0YXRpb25hbGx5IGludGVuc2l2ZSBkdWUKICAqIHRvIGl0cyBnbG9iYWwgbmF0dXJlIGFuZCB1c2VzIGxvYWRzIG9mIG1lbW9yeSwgYnV0IGl0IGNhbiBkZWFsIHdpdGggdGV4dHVyZWxlc3MgcmVnaW9ucyBhbmQKICAqIHJlZmxlY3Rpb25zIGJldHRlciB0aGFuIG90aGVyIG1ldGhvZHMuCkBAIC04NiwxNSArODYsMTUgQEAKICAqCiAgKiBTb21lIHRlc3QgaW1hZ2VzIGNhbiBiZSBmb3VuZCBoZXJlOiBodHRwOi8vdmlzaW9uLnN0YW5mb3JkLmVkdS9+YmlyY2gvcDJwLwogICoKLSAqIFtBXSBLLiBLb25vbGlnZS4gU21hbGwgdmlzaW9uIHN5c3RlbS4gaGFyZHdhcmUgYW5kIGltcGxlbWVudGF0aW9uLiBJbiBQcm9jLiBJbnRlcm5hdGlvbmFsIAorICogW0FdIEsuIEtvbm9saWdlLiBTbWFsbCB2aXNpb24gc3lzdGVtLiBoYXJkd2FyZSBhbmQgaW1wbGVtZW50YXRpb24uIEluIFByb2MuIEludGVybmF0aW9uYWwKICAqIFN5bXBvc2l1bSBvbiBSb2JvdGljcyBSZXNlYXJjaCwgcGFnZXMgMTExLS0xMTYsIEhheWFtYSwgSmFwYW4sIDE5OTcuCi0gKiBbQl0gSC4gSGlyc2NobcO8bGxlciwg4oCcQWNjdXJhdGUgYW5kIGVmZmljaWVudCBzdGVyZW8gcHJvY2Vzc2luZyBieSBzZW1pLWdsb2JhbCBtYXRjaGluZyBhbmQgCi0gKiBtdXR1YWwgaW5mb3JtYXRpb24s4oCdIGluIFByb2NlZWRpbmdzIG9mIHRoZSBJRUVFIENvbmZlcmVuY2Ugb24gQ29tcHV0ZXIgVmlzaW9uIGFuZCBQYXR0ZXJuIAorICogW0JdIEguIEhpcnNjaG3DvGxsZXIsIOKAnEFjY3VyYXRlIGFuZCBlZmZpY2llbnQgc3RlcmVvIHByb2Nlc3NpbmcgYnkgc2VtaS1nbG9iYWwgbWF0Y2hpbmcgYW5kCisgKiBtdXR1YWwgaW5mb3JtYXRpb24s4oCdIGluIFByb2NlZWRpbmdzIG9mIHRoZSBJRUVFIENvbmZlcmVuY2Ugb24gQ29tcHV0ZXIgVmlzaW9uIGFuZCBQYXR0ZXJuCiAgKiBSZWNvZ25pdGlvbiwgMjAwNSwgcHAuIDgwN+KAkzgxNC4KICAqIFtDXSBTLiBLb3NvdiwgVC4gVGhvcm1hZWhsZW4sIEguLVAuIFNlaWRlbCAiQWNjdXJhdGUgUmVhbC1UaW1lIERpc3Bhcml0eSBFc3RpbWF0aW9uIHdpdGgKLSAqIFZhcmlhdGlvbmFsIE1ldGhvZHMiIFByb2NlZWRpbmdzIG9mIHRoZSA1dGggSW50ZXJuYXRpb25hbCBTeW1wb3NpdW0gb24gVmlzdWFsIENvbXB1dGluZywgCisgKiBWYXJpYXRpb25hbCBNZXRob2RzIiBQcm9jZWVkaW5ncyBvZiB0aGUgNXRoIEludGVybmF0aW9uYWwgU3ltcG9zaXVtIG9uIFZpc3VhbCBDb21wdXRpbmcsCiAgKiBWZWdhcywgVVNBCi0gKiBbRF0gU2NoYXJzdGVpbiwgRC4gJiBTemVsaXNraSwgUi4gKDIwMDEpLiBBIHRheG9ub215IGFuZCBldmFsdWF0aW9uIG9mIGRlbnNlIHR3by1mcmFtZSBzdGVyZW8gCisgKiBbRF0gU2NoYXJzdGVpbiwgRC4gJiBTemVsaXNraSwgUi4gKDIwMDEpLiBBIHRheG9ub215IGFuZCBldmFsdWF0aW9uIG9mIGRlbnNlIHR3by1mcmFtZSBzdGVyZW8KICAqIGNvcnJlc3BvbmRlbmNlIGFsZ29yaXRobXMsIEludGVybmF0aW9uYWwgSm91cm5hbCBvZiBDb21wdXRlciBWaXNpb24gNDc6IDfigJM0Mi4KICAqCiAgKiA8cmVmc2VjdDI+CkBAIC0xMDMsNyArMTAzLDcgQEAKICAqIGdzdC1sYXVuY2gtMS4wICAgICAgIHZpZGVvdGVzdHNyYyAhIHZpZGVvL3gtcmF3LHdpZHRoPTMyMCxoZWlnaHQ9MjQwICEgZGlzcDAuc2lua19yaWdodCAgICAgIHZpZGVvdGVzdHNyYyAhIHZpZGVvL3gtcmF3LHdpZHRoPTMyMCxoZWlnaHQ9MjQwICEgZGlzcDAuc2lua19sZWZ0ICAgICAgZGlzcGFyaXR5IG5hbWU9ZGlzcDAgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCiAgKiBdfAogICogQW5vdGhlciBleGFtcGxlLCB3aXRoIHR3byBwbmcgZmlsZXMgcmVwcmVzZW50aW5nIGEgY2xhc3NpY2FsIHN0ZXJlbyBtYXRjaGluZywKLSAqIGRvd25sb2FkYWJsZSBmcm9tIGh0dHA6Ly92aXNpb24ubWlkZGxlYnVyeS5lZHUvc3RlcmVvL3N1Ym1pdC90c3VrdWJhL2ltNC5wbmcgYW5kIAorICogZG93bmxvYWRhYmxlIGZyb20gaHR0cDovL3Zpc2lvbi5taWRkbGVidXJ5LmVkdS9zdGVyZW8vc3VibWl0L3RzdWt1YmEvaW00LnBuZyBhbmQKICAqIGltMy5wbmcuIE5vdGUgaGVyZSB0aGV5IGFyZSBkb3dubG9hZGVkIGluIH4gKGhvbWUpLgogICogfFsKIGdzdC1sYXVuY2gtMS4wICAgIG11bHRpZmlsZXNyYyAgbG9jYXRpb249fi9pbTMucG5nICEgcG5nZGVjICEgdmlkZW9jb252ZXJ0ICAhIGRpc3AwLnNpbmtfcmlnaHQgICAgIG11bHRpZmlsZXNyYyAgbG9jYXRpb249fi9pbTQucG5nICEgcG5nZGVjICEgdmlkZW9jb252ZXJ0ICEgZGlzcDAuc2lua19sZWZ0IGRpc3Bhcml0eSAgIG5hbWU9ZGlzcDAgbWV0aG9kPXNibSAgICAgZGlzcDAuc3JjICEgdmlkZW9jb252ZXJ0ICEgeGltYWdlc2luawpAQCAtMTE5LDggKzExOSw2IEBACiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxvcGVuY3YyL2NvbnRyaWIvY29udHJpYi5ocHA+CiAjaW5jbHVkZSAiZ3N0ZGlzcGFyaXR5LmgiCiAKQEAgLTQxOCwxMiArNDE2LDEyIEBACiAgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgewogICAgIGNhc2UgR1NUX1FVRVJZX0NBUFM6CiAgICAgICBnX211dGV4X2xvY2sgKCZmcy0+bG9jayk7Ci0gICAgICBpZiAoIWdzdF9wYWRfaGFzX2N1cnJlbnRfY2FwcyAoZnMtPnNyY3BhZCkpIHsKKyAgICAgIGN1cnJlbnRfY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoZnMtPnNyY3BhZCk7CisgICAgICBpZiAoY3VycmVudF9jYXBzID09IE5VTEwpIHsKICAgICAgICAgdGVtcGxhdGVfY2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChwYWQpOwogICAgICAgICBnc3RfcXVlcnlfc2V0X2NhcHNfcmVzdWx0IChxdWVyeSwgdGVtcGxhdGVfY2Fwcyk7CiAgICAgICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbGF0ZV9jYXBzKTsKICAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGN1cnJlbnRfY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoZnMtPnNyY3BhZCk7CiAgICAgICAgIGdzdF9xdWVyeV9zZXRfY2Fwc19yZXN1bHQgKHF1ZXJ5LCBjdXJyZW50X2NhcHMpOwogICAgICAgICBnc3RfY2Fwc191bnJlZiAoY3VycmVudF9jYXBzKTsKICAgICAgIH0KQEAgLTU0OCwxOSArNTQ2LDE5IEBACiAgICAgICBmcy0+d2lkdGgsIGZzLT5oZWlnaHQsIGZzLT5hY3R1YWxDaGFubmVscyk7CiAKICAgLyogU3RlcmVvIGNvcnJlc3BvbmRpbmcgdXNpbmcgc2VtaS1nbG9iYWwgYmxvY2sgbWF0Y2hpbmcuIEFjY29yZGluZyB0byBPcGVuQ1Y6Ci0gICAgICIiIFRoZSBjbGFzcyBpbXBsZW1lbnRzIG1vZGlmaWVkIEguIEhpcnNjaG11bGxlciBhbGdvcml0aG0gSEgwOCAuIFRoZSBtYWluIAorICAgICAiIiBUaGUgY2xhc3MgaW1wbGVtZW50cyBtb2RpZmllZCBILiBIaXJzY2htdWxsZXIgYWxnb3JpdGhtIEhIMDggLiBUaGUgbWFpbgogICAgICBkaWZmZXJlbmNlcyBiZXR3ZWVuIHRoZSBpbXBsZW1lbnRlZCBhbGdvcml0aG0gYW5kIHRoZSBvcmlnaW5hbCBvbmUgYXJlOgogCi0gICAgIC0gYnkgZGVmYXVsdCB0aGUgYWxnb3JpdGhtIGlzIHNpbmdsZS1wYXNzLCBpLmUuIGluc3RlYWQgb2YgOCBkaXJlY3Rpb25zIHdlIAorICAgICAtIGJ5IGRlZmF1bHQgdGhlIGFsZ29yaXRobSBpcyBzaW5nbGUtcGFzcywgaS5lLiBpbnN0ZWFkIG9mIDggZGlyZWN0aW9ucyB3ZQogICAgICBvbmx5IGNvbnNpZGVyIDUuIFNldCBmdWxsRFA9dHJ1ZSB0byBydW4gdGhlIGZ1bGwgdmFyaWFudCBvZiB0aGUgYWxnb3JpdGhtCiAgICAgICh3aGljaCBjb3VsZCBjb25zdW1lIGEgbG90IG9mIG1lbW9yeSkKICAgICAgLSB0aGUgYWxnb3JpdGhtIG1hdGNoZXMgYmxvY2tzLCBub3QgaW5kaXZpZHVhbCBwaXhlbHMgKHRob3VnaCwgYnkgc2V0dGluZwogICAgICBTQURXaW5kb3dTaXplPTEgdGhlIGJsb2NrcyBhcmUgcmVkdWNlZCB0byBzaW5nbGUgcGl4ZWxzKQogICAgICAtIG11dHVhbCBpbmZvcm1hdGlvbiBjb3N0IGZ1bmN0aW9uIGlzIG5vdCBpbXBsZW1lbnRlZC4gSW5zdGVhZCwgd2UgdXNlIGEKLSAgICAgc2ltcGxlciBCaXJjaGZpZWxkLVRvbWFzaSBzdWItcGl4ZWwgbWV0cmljIGZyb20gQlQ5NiAsIHRob3VnaCB0aGUgY29sb3IgCisgICAgIHNpbXBsZXIgQmlyY2hmaWVsZC1Ub21hc2kgc3ViLXBpeGVsIG1ldHJpYyBmcm9tIEJUOTYgLCB0aG91Z2ggdGhlIGNvbG9yCiAgICAgIGltYWdlcyBhcmUgc3VwcG9ydGVkIGFzIHdlbGwuCi0gICAgIC0gd2UgaW5jbHVkZSBzb21lIHByZS0gYW5kIHBvc3QtIHByb2Nlc3Npbmcgc3RlcHMgZnJvbSBLLiBLb25vbGlnZSAKLSAgICAgYWxnb3JpdGhtIEZpbmRTdGVyZW9Db3JyZXNwb25kZW5jZUJNICwgc3VjaCBhcyBwcmUtZmlsdGVyaW5nIAorICAgICAtIHdlIGluY2x1ZGUgc29tZSBwcmUtIGFuZCBwb3N0LSBwcm9jZXNzaW5nIHN0ZXBzIGZyb20gSy4gS29ub2xpZ2UKKyAgICAgYWxnb3JpdGhtIEZpbmRTdGVyZW9Db3JyZXNwb25kZW5jZUJNICwgc3VjaCBhcyBwcmUtZmlsdGVyaW5nCiAgICAgICggQ1ZfU1RFUkVPX0JNX1hTT0JFTCB0eXBlKSBhbmQgcG9zdC1maWx0ZXJpbmcgKHVuaXF1ZW5lc3MgY2hlY2ssIHF1YWRyYXRpYwogICAgICBpbnRlcnBvbGF0aW9uIGFuZCBzcGVja2xlIGZpbHRlcmluZykgIiIKICAgICovCkBAIC01NzIsNyArNTcwLDcgQEAKICAgICAgICAgQ1ZfTUlOTUFYLCBOVUxMKTsKICAgICBjdkN2dENvbG9yIChmcy0+Y3ZHcmF5X2RlcHRoX21hcDIsIGZzLT5jdlJHQl9yaWdodCwgQ1ZfR1JBWTJSR0IpOwogICB9Ci0gIC8qIEFsZ29yaXRobSAxIGlzIHRoZSBPcGVuQ1YgU3RlcmVvIEJsb2NrIE1hdGNoaW5nLCBzaW1pbGFyIHRvIHRoZSBvbmUgCisgIC8qIEFsZ29yaXRobSAxIGlzIHRoZSBPcGVuQ1YgU3RlcmVvIEJsb2NrIE1hdGNoaW5nLCBzaW1pbGFyIHRvIHRoZSBvbmUKICAgICAgZGV2ZWxvcGVkIGJ5IEt1cnQgS29ub2xpZ2UgW0FdIGFuZCB0aGF0IHdvcmtzIGJ5IHVzaW5nIHNtYWxsIFN1bS1vZi1hYnNvbHV0ZS0KICAgICAgZGlmZmVyZW5jZXMgKFNBRCkgd2luZG93LiBTZWUgdGhlIGNvbW1lbnRzIG9uIHRvcCBvZiB0aGUgZmlsZS4KICAgICovCkBAIC01OTMsOSArNTkxLDkgQEAKICAgICBydW5fc3Zhcl9pdGVyYXRpb24gKGZzKTsKICAgICBjdkN2dENvbG9yIChmcy0+Y3ZHcmF5X2RlcHRoX21hcDIsIGZzLT5jdlJHQl9yaWdodCwgQ1ZfR1JBWTJSR0IpOwogICB9Ci0gIC8qIFRoZSBHcmFwaCBDdXQgc3RlcmVvIHZpc2lvbiBhbGdvcml0aG0gKEdDKSBpbnRyb2R1Y2VkIGluIFtEXSBpcyBhIGdsb2JhbCAKLSAgICAgc3RlcmVvIHZpc2lvbiBtZXRob2QuIEl0IGNhbGN1bGF0ZXMgZGVwdGggZGlzY29udGludWl0aWVzIGJ5IG1pbmltaXppbmcgYW4gCi0gICAgIGVuZXJneSBmdW5jdGlvbiBjb21iaW5naW4gYSBwb2ludC13aXNlIG1hdGNoaW5nIGNvc3QgYW5kIGEgc21vb3RobmVzcyB0ZXJtLiAKKyAgLyogVGhlIEdyYXBoIEN1dCBzdGVyZW8gdmlzaW9uIGFsZ29yaXRobSAoR0MpIGludHJvZHVjZWQgaW4gW0RdIGlzIGEgZ2xvYmFsCisgICAgIHN0ZXJlbyB2aXNpb24gbWV0aG9kLiBJdCBjYWxjdWxhdGVzIGRlcHRoIGRpc2NvbnRpbnVpdGllcyBieSBtaW5pbWl6aW5nIGFuCisgICAgIGVuZXJneSBmdW5jdGlvbiBjb21iaW5naW4gYSBwb2ludC13aXNlIG1hdGNoaW5nIGNvc3QgYW5kIGEgc21vb3RobmVzcyB0ZXJtLgogICAgICBTZWUgdGhlIGNvbW1lbnRzIG9uIHRvcCBvZiB0aGUgZmlsZS4KICAgICovCiAgIGVsc2UgaWYgKE1FVEhPRF9HQyA9PSBmcy0+bWV0aG9kKSB7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGRpc3Bhcml0eS5oIGIvZXh0L29wZW5jdi9nc3RkaXNwYXJpdHkuaAppbmRleCBhZGJiOWFlLi4wN2UyNDE3IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGRpc3Bhcml0eS5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0ZGlzcGFyaXR5LmgKQEAgLTQ1LDYgKzQ1LDcgQEAKICNkZWZpbmUgX19HU1RfRElTUEFSSVRZX0hfXwogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogCiAjaW5jbHVkZSA8b3BlbmN2Mi9sZWdhY3kvbGVnYWN5LmhwcD4KIApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0LmNwcCBiL2V4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5jcHAKaW5kZXggNWVjZjhlYy4uN2U2YzFlNyAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RlZGdlZGV0ZWN0LmNwcAorKysgYi9leHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuY3BwCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNaWNoYWVsIFNoZWxkb24gPG1pa2VAbWlrZWFzb2Z0LmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNTEsNyArNTEsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2gtMC4xMCB2aWRlb3Rlc3RzcmMgISBkZWNvZGViaW4gISB2aWRlb2NvbnZlcnQgISBlZGdlZGV0ZWN0ICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGRlY29kZWJpbiAhIHZpZGVvY29udmVydCAhIGVkZ2VkZXRlY3QgISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTYwLDkgKzYwLDYgQEAKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KLSNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdGVkZ2VkZXRlY3QuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKQEAgLTEwMSw3ICs5OCw3IEBACiAgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgiUkdCIikpCiAgICAgKTsKIAotR19ERUZJTkVfVFlQRSAoR3N0RWRnZURldGVjdCwgZ3N0X2VkZ2VfZGV0ZWN0LCBHU1RfVFlQRV9FTEVNRU5UKTsKK0dfREVGSU5FX1RZUEUgKEdzdEVkZ2VEZXRlY3QsIGdzdF9lZGdlX2RldGVjdCwgR1NUX1RZUEVfT1BFTkNWX1ZJREVPX0ZJTFRFUik7CiAKIHN0YXRpYyB2b2lkIGdzdF9lZGdlX2RldGVjdF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CkBAIC0xMTAsOCArMTA3LDExIEBACiAKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZWRnZV9kZXRlY3RfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKICAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2VkZ2VfZGV0ZWN0X2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RCdWZmZXIgKiBidWYpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2VkZ2VfZGV0ZWN0X3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBmaWx0ZXIsCisgICAgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZywgR3N0QnVmZmVyICogb3V0YnVmLCBJcGxJbWFnZSAqIG91dGltZyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2VkZ2VfZGV0ZWN0X3NldF9jYXBzIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIHRyYW5zZm9ybSwKKyAgICBnaW50IGluX3dpZHRoLCBnaW50IGluX2hlaWdodCwgZ2ludCBpbl9kZXB0aCwgZ2ludCBpbl9jaGFubmVscywKKyAgICBnaW50IG91dF93aWR0aCwgZ2ludCBvdXRfaGVpZ2h0LCBnaW50IG91dF9kZXB0aCwgZ2ludCBvdXRfY2hhbm5lbHMpOwogCiAvKiBDbGVhbiB1cCAqLwogc3RhdGljIHZvaWQKQEAgLTExOSw4ICsxMTksNyBAQAogewogICBHc3RFZGdlRGV0ZWN0ICpmaWx0ZXIgPSBHU1RfRURHRV9ERVRFQ1QgKG9iaik7CiAKLSAgaWYgKGZpbHRlci0+Y3ZJbWFnZSAhPSBOVUxMKSB7Ci0gICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2SW1hZ2UpOworICBpZiAoZmlsdGVyLT5jdkVkZ2UgIT0gTlVMTCkgewogICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkNFZGdlKTsKICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZHcmF5KTsKICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZFZGdlKTsKQEAgLTEzNCwxNCArMTMzLDE5IEBACiBnc3RfZWRnZV9kZXRlY3RfY2xhc3NfaW5pdCAoR3N0RWRnZURldGVjdENsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzczsKIAogICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcyA9IChHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICopIGtsYXNzOwogCiAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9lZGdlX2RldGVjdF9maW5hbGl6ZSk7CiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9lZGdlX2RldGVjdF9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9lZGdlX2RldGVjdF9nZXRfcHJvcGVydHk7CiAKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfZnVuYyA9IGdzdF9lZGdlX2RldGVjdF90cmFuc2Zvcm07CisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3NldF9jYXBzID0gZ3N0X2VkZ2VfZGV0ZWN0X3NldF9jYXBzOworCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUFTSywKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgibWFzayIsICJNYXNrIiwKICAgICAgICAgICAiU2V0cyB3aGV0aGVyIHRoZSBkZXRlY3RlZCBlZGdlcyBzaG91bGQgYmUgdXNlZCBhcyBhIG1hc2sgb24gdGhlIG9yaWdpbmFsIGlucHV0IG9yIG5vdCIsCkBAIC0xNzksMjIgKzE4MywxNiBAQAogc3RhdGljIHZvaWQKIGdzdF9lZGdlX2RldGVjdF9pbml0IChHc3RFZGdlRGV0ZWN0ICogZmlsdGVyKQogewotICBmaWx0ZXItPnNpbmtwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNpbmtfZmFjdG9yeSwgInNpbmsiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zaW5rcGFkKTsKLSAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKGZpbHRlci0+c2lua3BhZCwKKyAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKEdTVF9CQVNFX1RSQU5TRk9STV9TSU5LX1BBRCAoZmlsdGVyKSwKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZWRnZV9kZXRlY3RfaGFuZGxlX3NpbmtfZXZlbnQpKTsKLSAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGZpbHRlci0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZWRnZV9kZXRlY3RfY2hhaW4pKTsKIAotICBmaWx0ZXItPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc3JjX2ZhY3RvcnksICJzcmMiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zcmNwYWQpOwotCi0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBmaWx0ZXItPnNpbmtwYWQpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zcmNwYWQpOwogICBmaWx0ZXItPm1hc2sgPSBUUlVFOwogICBmaWx0ZXItPnRocmVzaG9sZDEgPSA1MDsKICAgZmlsdGVyLT50aHJlc2hvbGQyID0gMTUwOwogICBmaWx0ZXItPmFwZXJ0dXJlID0gMzsKKworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBGQUxTRSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTEsNiArMjQ5LDIzIEBACiAKIC8qIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgbGluayB3aXRoIG90aGVyIGVsZW1lbnRzICovCiBzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9lZGdlX2RldGVjdF9zZXRfY2FwcyAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiB0cmFuc2Zvcm0sCisgICAgZ2ludCBpbl93aWR0aCwgZ2ludCBpbl9oZWlnaHQsIGdpbnQgaW5fZGVwdGgsIGdpbnQgaW5fY2hhbm5lbHMsCisgICAgZ2ludCBvdXRfd2lkdGgsIGdpbnQgb3V0X2hlaWdodCwgZ2ludCBvdXRfZGVwdGgsIGdpbnQgb3V0X2NoYW5uZWxzKQoreworICBHc3RFZGdlRGV0ZWN0ICpmaWx0ZXIgPSBHU1RfRURHRV9ERVRFQ1QgKHRyYW5zZm9ybSk7CisKKyAgaWYgKGZpbHRlci0+Y3ZHcmF5KQorICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkdyYXkpOworCisgIGZpbHRlci0+Y3ZHcmF5ID0KKyAgICAgIGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAoaW5fd2lkdGgsIGluX2hlaWdodCksIElQTF9ERVBUSF84VSwgMSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qIHRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0aGUgbGluayB3aXRoIG90aGVyIGVsZW1lbnRzICovCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9lZGdlX2RldGVjdF9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCiAgICAgR3N0RXZlbnQgKiBldmVudCkKIHsKQEAgLTI3MSwxNCArMjg2LDEyIEBACiAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKTsKICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCk7CiAKLSAgICAgIGlmIChmaWx0ZXItPmN2SW1hZ2UgIT0gTlVMTCkgewotICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZJbWFnZSk7CisgICAgICBpZiAoZmlsdGVyLT5jdkVkZ2UgIT0gTlVMTCkgewogICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZDRWRnZSk7CiAgICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkdyYXkpOwogICAgICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZFZGdlKTsKICAgICAgIH0KIAotICAgICAgZmlsdGVyLT5jdkltYWdlID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAzKTsKICAgICAgIGZpbHRlci0+Y3ZDRWRnZSA9IGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF84VSwgMyk7CiAgICAgICBmaWx0ZXItPmN2R3JheSA9IGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF84VSwgMSk7CiAgICAgICBmaWx0ZXItPmN2RWRnZSA9IGN2Q3JlYXRlSW1hZ2UgKGN2U2l6ZSAod2lkdGgsIGhlaWdodCksIElQTF9ERVBUSF84VSwgMSk7CkBAIC0yOTEsNDkgKzMwNCwzMSBAQAogICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CiAKICAgcmV0dXJuIHJlczsKLQogfQogCi0vKiBjaGFpbiBmdW5jdGlvbgotICogdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1YWwgcHJvY2Vzc2luZwotICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X2VkZ2VfZGV0ZWN0X2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKQorZ3N0X2VkZ2VfZGV0ZWN0X3RyYW5zZm9ybSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBiYXNlLCBHc3RCdWZmZXIgKiBidWYsCisgICAgSXBsSW1hZ2UgKiBpbWcsIEdzdEJ1ZmZlciAqIG91dGJ1ZiwgSXBsSW1hZ2UgKiBvdXRpbWcpCiB7Ci0gIEdzdEVkZ2VEZXRlY3QgKmZpbHRlcjsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIEdzdE1hcEluZm8gaW5faW5mbzsKKyAgR3N0RWRnZURldGVjdCAqZmlsdGVyID0gR1NUX0VER0VfREVURUNUIChiYXNlKTsKICAgR3N0TWFwSW5mbyBvdXRfaW5mbzsKIAotICBmaWx0ZXIgPSBHU1RfRURHRV9ERVRFQ1QgKHBhcmVudCk7Ci0KLSAgYnVmID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChidWYpOwotICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5faW5mbywgR1NUX01BUF9XUklURSk7Ci0gIGZpbHRlci0+Y3ZJbWFnZS0+aW1hZ2VEYXRhID0gKGNoYXIgKikgaW5faW5mby5kYXRhOwotCi0gIGN2Q3Z0Q29sb3IgKGZpbHRlci0+Y3ZJbWFnZSwgZmlsdGVyLT5jdkdyYXksIENWX1JHQjJHUkFZKTsKKyAgY3ZDdnRDb2xvciAoaW1nLCBmaWx0ZXItPmN2R3JheSwgQ1ZfUkdCMkdSQVkpOwogICBjdkNhbm55IChmaWx0ZXItPmN2R3JheSwgZmlsdGVyLT5jdkVkZ2UsIGZpbHRlci0+dGhyZXNob2xkMSwKICAgICAgIGZpbHRlci0+dGhyZXNob2xkMiwgZmlsdGVyLT5hcGVydHVyZSk7CiAKICAgY3ZaZXJvIChmaWx0ZXItPmN2Q0VkZ2UpOwogICBpZiAoZmlsdGVyLT5tYXNrKSB7Ci0gICAgY3ZDb3B5IChmaWx0ZXItPmN2SW1hZ2UsIGZpbHRlci0+Y3ZDRWRnZSwgZmlsdGVyLT5jdkVkZ2UpOworICAgIGN2Q29weSAoaW1nLCBmaWx0ZXItPmN2Q0VkZ2UsIGZpbHRlci0+Y3ZFZGdlKTsKICAgfSBlbHNlIHsKICAgICBjdkN2dENvbG9yIChmaWx0ZXItPmN2RWRnZSwgZmlsdGVyLT5jdkNFZGdlLCBDVl9HUkFZMlJHQik7CiAgIH0KIAotICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGZpbHRlci0+Y3ZDRWRnZS0+aW1hZ2VTaXplKTsKLSAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8gKG91dGJ1ZiwgYnVmLAotICAgICAgKEdzdEJ1ZmZlckNvcHlGbGFncykgR1NUX0JVRkZFUl9DT1BZX01FVEFEQVRBLCAwLCAtMSk7Ci0KICAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm91dF9pbmZvLCBHU1RfTUFQX1dSSVRFKTsKICAgbWVtY3B5IChvdXRfaW5mby5kYXRhLCBmaWx0ZXItPmN2Q0VkZ2UtPmltYWdlRGF0YSwKICAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZikpOwogCi0gIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJmluX2luZm8pOwotICBnc3RfYnVmZmVyX3VubWFwIChvdXRidWYsICZvdXRfaW5mbyk7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0gIHJldHVybiBnc3RfcGFkX3B1c2ggKGZpbHRlci0+c3JjcGFkLCBvdXRidWYpOworICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKIC8qIGVudHJ5IHBvaW50IHRvIGluaXRpYWxpemUgdGhlIHBsdWctaW4KQEAgLTM0Myw5ICszMzgsNyBAQAogZ2Jvb2xlYW4KIGdzdF9lZGdlX2RldGVjdF9wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQogewotICAvKiBkZWJ1ZyBjYXRlZ29yeSBmb3IgZmx0ZXJpbmcgbG9nIG1lc3NhZ2VzCi0gICAqCi0gICAqLworICAvKiBkZWJ1ZyBjYXRlZ29yeSBmb3IgZmx0ZXJpbmcgbG9nIG1lc3NhZ2VzICovCiAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZWRnZV9kZXRlY3RfZGVidWcsICJlZGdlZGV0ZWN0IiwKICAgICAgIDAsICJQZXJmb3JtcyBjYW5ueSBlZGdlIGRldGVjdGlvbiBvbiB2aWRlb3MgYW5kIGltYWdlcyIpOwogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGVkZ2VkZXRlY3QuaCBiL2V4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5oCmluZGV4IDIzYzk1ZTYuLjA0NzJjNWQgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0ZWRnZWRldGVjdC5oCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNaWNoYWVsIFNoZWxkb24gPG1pa2VAbWlrZWFzb2Z0LmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDYsNyArNDYsNyBAQAogI2lmbmRlZiBfX0dTVF9FREdFX0RFVEVDVF9IX18KICNkZWZpbmUgX19HU1RfRURHRV9ERVRFQ1RfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KICNpbmNsdWRlIDxvcGVuY3YyL2NvcmUvY29yZV9jLmg+CiAKIEdfQkVHSU5fREVDTFMKQEAgLTYxLDI1ICs2MSwyNCBAQAogICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfRURHRV9ERVRFQ1QpKQogI2RlZmluZSBHU1RfSVNfRURHRV9ERVRFQ1RfQ0xBU1Moa2xhc3MpIFwKICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfRURHRV9ERVRFQ1QpKQorCiB0eXBlZGVmIHN0cnVjdCBfR3N0RWRnZURldGVjdCBHc3RFZGdlRGV0ZWN0OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEVkZ2VEZXRlY3RDbGFzcyBHc3RFZGdlRGV0ZWN0Q2xhc3M7CiAKIHN0cnVjdCBfR3N0RWRnZURldGVjdAogewotICBHc3RFbGVtZW50IGVsZW1lbnQ7Ci0KLSAgR3N0UGFkICpzaW5rcGFkLCAqc3JjcGFkOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OwogCiAgIGdib29sZWFuIG1hc2s7CiAKICAgaW50IHRocmVzaG9sZDEsIHRocmVzaG9sZDIsIGFwZXJ0dXJlOwogCi0gIElwbEltYWdlICpjdkVkZ2UsICpjdkdyYXksICpjdkltYWdlLCAqY3ZDRWRnZTsKKyAgSXBsSW1hZ2UgKmN2RWRnZSwgKmN2R3JheSwgKmN2Q0VkZ2U7CiB9OwogCiBzdHJ1Y3QgX0dzdEVkZ2VEZXRlY3RDbGFzcwogewotICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIEdUeXBlIGdzdF9lZGdlX2RldGVjdF9nZXRfdHlwZSAodm9pZCk7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGZhY2VibHVyLmNwcCBiL2V4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuY3BwCmluZGV4IDQwZmY0ZjguLjJiYzg4ZDEgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuY3BwCisrKyBiL2V4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuY3BwCkBAIC00LDcgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNaWNoYWVsIFNoZWxkb24gPG1pa2VAbWlrZWFzb2Z0LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBSb2JlcnQgSm9iYmFneSA8am9iYmFneS5yb2JlcnRAZ21haWwuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC02MSwxMCArNjEsOCBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdGZhY2VibHVyLmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jLmhwcD4KZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuaCBiL2V4dC9vcGVuY3YvZ3N0ZmFjZWJsdXIuaAppbmRleCA4OTBjMGM5Li45Yzg2ZTFiIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGZhY2VibHVyLmgKKysrIGIvZXh0L29wZW5jdi9nc3RmYWNlYmx1ci5oCkBAIC00LDcgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNaWNoYWVsIFNoZWxkb24gPG1pa2VAbWlrZWFzb2Z0LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAxMSBSb2JlcnQgSm9iYmFneSA8am9iYmFneS5yb2JlcnRAZ21haWwuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdGZhY2VkZXRlY3QuY3BwIGIvZXh0L29wZW5jdi9nc3RmYWNlZGV0ZWN0LmNwcAppbmRleCA3ZWM2ZTM5Li5hZmY5OTc5IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGZhY2VkZXRlY3QuY3BwCisrKyBiL2V4dC9vcGVuY3YvZ3N0ZmFjZWRldGVjdC5jcHAKQEAgLTc2LDExICs3Niw4IEBACiAjICBpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KICNpbmNsdWRlIDx2ZWN0b3I+CiAKLSNpbmNsdWRlICJnc3RvcGVuY3Z1dGlscy5oIgogI2luY2x1ZGUgImdzdGZhY2VkZXRlY3QuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKQEAgLTU3Myw3ICs1NzAsNyBAQAogICB9CiB9CiAKLS8qIAorLyoKICAqIFBlcmZvcm1zIHRoZSBmYWNlIGRldGVjdGlvbgogICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RncmFiY3V0LmNwcCBiL2V4dC9vcGVuY3YvZ3N0Z3JhYmN1dC5jcHAKaW5kZXggYzlmZjRmOS4uZWFmNzI3YiAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RncmFiY3V0LmNwcAorKysgYi9leHQvb3BlbmN2L2dzdGdyYWJjdXQuY3BwCkBAIC0xLDcgKzEsNyBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEzIE1pZ3VlbCBDYXNhcy1TYW5jaGV6IDxtaWd1ZWxlY2FzYXNzYW5jaGV6QGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDgsMjMgKzQ4LDIzIEBACiAgKiBUaGlzIGVsZW1lbnQgaXMgYSB3cmFwcGVyIGFyb3VuZCBPcGVuQ1YgZ3JhYmN1dCBpbXBsZW1lbnRhdGlvbi4gR3JhYkN1dCBpcyBhbgogICogaW1hZ2Ugc2VnbWVudGF0aW9uIG1ldGhvZCBiYXNlZCBvbiBncmFwaCBjdXRzIHRlY2huaXF1ZS4gSXQgY2FuIGJlIHNlZW4gYXMgYQogICogd2F5IG9mIGZpbmUtZ3JhaW4gc2VnbWVudGluZyB0aGUgaW1hZ2UgZnJvbSBzb21lIEZHIGFuZCBCRyAic2VlZCIgYXJlYXMuIFRoZQotICogT3BlbkNWIGltcGxlbWVudGF0aW9uIGZvbGxvd3MgdGhlIGFydGljbGUgWzFdLiAKKyAqIE9wZW5DViBpbXBsZW1lbnRhdGlvbiBmb2xsb3dzIHRoZSBhcnRpY2xlIFsxXS4KICAqIFRoZSAic2VlZCIgYXJlYXMgYXJlIHRha2VuIGluIHRoaXMgZWxlbWVudCBmcm9tIGVpdGhlciBhbiBpbnB1dCBib3VuZGluZyBib3gKICAqIGNvbWluZyBmcm9tIGEgZmFjZSBkZXRlY3Rpb24sIG9yIGZyb20gYWxwaGEgY2hhbm5lbCB2YWx1ZXMuIFRoZSBpbnB1dCBib3ggaXMKLSAqIHRha2VuIGZyb20gYSAiZmFjZSIgZXZlbnQgc3VjaCBhcyB0aGUgb25lIGdlbmVyYXRlZCBmcm9tIHRoZSAnZmFjZWRldGVjdCcgCi0gKiBlbGVtZW50LiBUaGUgQWxwaGEgY2hhbm5lbCB2YWx1ZXMgc2hvdWxkIGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nIChjdi5ocHApOiAKLSAqIGVudW17ICAKKyAqIHRha2VuIGZyb20gYSAiZmFjZSIgZXZlbnQgc3VjaCBhcyB0aGUgb25lIGdlbmVyYXRlZCBmcm9tIHRoZSAnZmFjZWRldGVjdCcKKyAqIGVsZW1lbnQuIFRoZSBBbHBoYSBjaGFubmVsIHZhbHVlcyBzaG91bGQgYmUgb25lIG9mIHRoZSBmb2xsb3dpbmcgKGN2LmhwcCk6CisgKiBlbnVtewogICogIEdDX0JHRCAgICA9IDAsICAvLyE8IGJhY2tncm91bmQKICAqICBHQ19GR0QgICAgPSAxLCAgLy8hPCBmb3JlZ3JvdW5kCiAgKiAgR0NfUFJfQkdEID0gMiwgIC8vITwgbW9zdCBwcm9iYWJseSBiYWNrZ3JvdW5kCiAgKiAgR0NfUFJfRkdEID0gMyAgIC8vITwgbW9zdCBwcm9iYWJseSBmb3JlZ3JvdW5kCiAgKiB9OwogICogd2l0aCB2YWx1ZXMgb3ZlciBHQ19QUl9GR0QgaW50ZXJwcmV0ZWQgYXMgR0NfUFJfRkdELiBJTiBDQVNFIE9GIG5vIGFscGhhIG1hc2sKLSAqIGlucHV0IChhbGwgMCdzIG9yIGFsbCAxJ3MpLCB0aGUgJ0dzdE9wZW5DdkZhY2VEZXRlY3QtZmFjZScgZG93bnN0cmVhbSBldmVudCAKKyAqIGlucHV0IChhbGwgMCdzIG9yIGFsbCAxJ3MpLCB0aGUgJ0dzdE9wZW5DdkZhY2VEZXRlY3QtZmFjZScgZG93bnN0cmVhbSBldmVudAogICogaXMgdXNlZCB0byBjcmVhdGUgYSBiYm94IG9mIFBSX0ZHIGVsZW1lbnRzLiBJZiBib3RoIGZvcmVncm91bmQgYWxwaGEKICAqIGlzIG5vdCBzcGVjaWZpZWQgYW5kIHRoZXJlIGlzIG5vIGZhY2UgZGV0ZWN0aW9uLCBub3RoaW5nIGlzIGRvbmUuCiAgKgotICogWzFdIEMuIFJvdGhlciwgVi4gS29sbW9nb3JvdiwgYW5kIEEuIEJsYWtlLCAiR3JhYkN1dDogSW50ZXJhY3RpdmUgZm9yZWdyb3VuZCAKKyAqIFsxXSBDLiBSb3RoZXIsIFYuIEtvbG1vZ29yb3YsIGFuZCBBLiBCbGFrZSwgIkdyYWJDdXQ6IEludGVyYWN0aXZlIGZvcmVncm91bmQKICAqIGV4dHJhY3Rpb24gdXNpbmcgaXRlcmF0ZWQgZ3JhcGggY3V0cywgQUNNIFRyYW5zLiBHcmFwaC4sIHZvbC4gMjMsIHBwLiAzMDnigJMzMTQsCiAgKiAyMDA0LgogICoKQEAgLTg0LDExICs4NCw5IEBACiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlICJnc3RncmFiY3V0LmgiCiBleHRlcm4gIkMiCiB7Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogI2luY2x1ZGUgPG9wZW5jdjIvaW1ncHJvYy9pbWdwcm9jX2MuaD4KIH0KICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvYy5ocHA+CkBAIC0zMjYsOCArMzI0LDggQEAKICAgY3ZDdnRDb2xvciAoZ2MtPmN2UkdCQWluLCBnYy0+Y3ZSR0JpbiwgQ1ZfQkdSQTJCR1IpOwogICBjb21wb3NlX21hdHJpeF9mcm9tX2ltYWdlIChnYy0+Z3JhYmN1dF9tYXNrLCBnYy0+Y3ZEKTsKIAotICAvKiAgUGFzcyBjdkQgdG8gZ3JhYmN1dF9tYXNrIGZvciB0aGUgZ3JhcGhjdXQgc3R1ZmYgYnV0IHRoYXQgb25seSBpZiAKLSAgICAgcmVhbGx5IHRoZXJlIGlzIHNvbWV0aGluZyBpbiB0aGUgbWFzayEgb3RoZXJ3aXNlIC0tPmlucHV0IGJib3ggaXMgCisgIC8qICBQYXNzIGN2RCB0byBncmFiY3V0X21hc2sgZm9yIHRoZSBncmFwaGN1dCBzdHVmZiBidXQgdGhhdCBvbmx5IGlmCisgICAgIHJlYWxseSB0aGVyZSBpcyBzb21ldGhpbmcgaW4gdGhlIG1hc2shIG90aGVyd2lzZSAtLT5pbnB1dCBiYm94IGlzCiAgICAgIHdoYXQgd2UgdXNlICovCiAgIGFscGhhcGl4ZWxzID0gY3ZDb3VudE5vblplcm8gKGdjLT5jdkQpOwogICBpZiAoKDAgPCBhbHBoYXBpeGVscykgJiYgKGFscGhhcGl4ZWxzIDwgKGdjLT53aWR0aCAqIGdjLT5oZWlnaHQpKSkgewpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmMgYi9leHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwCnNpbWlsYXJpdHkgaW5kZXggNjYlCnJlbmFtZSBmcm9tIGV4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuY3BwCmluZGV4IGM0ZGQzOTAuLmUzNmI4MGUgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jCisrKyBiL2V4dC9vcGVuY3YvZ3N0aGFuZGRldGVjdC5jcHAKQEAgLTYyLDcgKzYyLDYgQEAKIAogLyogZWxlbWVudCBoZWFkZXIgKi8KICNpbmNsdWRlICJnc3RoYW5kZGV0ZWN0LmgiCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9oYW5kZGV0ZWN0X2RlYnVnKTsKQEAgLTcyLDYgKzcxLDcgQEAKICNkZWZpbmUgSEFBUl9GSUxFX0ZJU1QgR1NUX0hBQVJfQ0FTQ0FERVNfRElSIEdfRElSX1NFUEFSQVRPUl9TICJmaXN0LnhtbCIKICNkZWZpbmUgSEFBUl9GSUxFX1BBTE0gR1NUX0hBQVJfQ0FTQ0FERVNfRElSIEdfRElSX1NFUEFSQVRPUl9TICJwYWxtLnhtbCIKIAordXNpbmcgbmFtZXNwYWNlIGN2OwogLyogRmlsdGVyIHNpZ25hbHMgYW5kIGFyZ3MgKi8KIGVudW0KIHsKQEAgLTExMyw4ICsxMTMsOCBAQAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2hhbmRkZXRlY3RfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqCiAgICAgdHJhbnNmb3JtLCBHc3RCdWZmZXIgKiBidWZmZXIsIElwbEltYWdlICogaW1nKTsKIAotc3RhdGljIEN2SGFhckNsYXNzaWZpZXJDYXNjYWRlICpnc3RfaGFuZGRldGVjdF9sb2FkX3Byb2ZpbGUgKEdzdEhhbmRkZXRlY3QgKgotICAgIGZpbHRlciwgZ2NoYXIgKiBwcm9maWxlKTsKK3N0YXRpYyBDYXNjYWRlQ2xhc3NpZmllciAqZ3N0X2hhbmRkZXRlY3RfbG9hZF9wcm9maWxlIChHc3RIYW5kZGV0ZWN0ICogZmlsdGVyLAorICAgIGdjaGFyICogcHJvZmlsZSk7CiAKIHN0YXRpYyB2b2lkIGdzdF9oYW5kZGV0ZWN0X25hdmlnYXRpb25faW50ZXJmYWNlX2luaXQgKEdzdE5hdmlnYXRpb25JbnRlcmZhY2UgKgogICAgIGlmYWNlKTsKQEAgLTE2MCwxMCArMTYwLDkgQEAKIAogICBpZiAoZmlsdGVyLT5jdkdyYXkpCiAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2R3JheSk7Ci0gIGlmIChmaWx0ZXItPmN2U3RvcmFnZSkKLSAgICBjdlJlbGVhc2VNZW1TdG9yYWdlICgmZmlsdGVyLT5jdlN0b3JhZ2UpOwogICBnX2ZyZWUgKGZpbHRlci0+cHJvZmlsZV9maXN0KTsKICAgZ19mcmVlIChmaWx0ZXItPnByb2ZpbGVfcGFsbSk7CisgIGRlbGV0ZSAoZmlsdGVyLT5iZXN0X3IpOwogCiAgIEdfT0JKRUNUX0NMQVNTIChnc3RfaGFuZGRldGVjdF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqKTsKIH0KQEAgLTE5MSw1MyArMTkwLDUzIEBACiAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImRpc3BsYXkiLAogICAgICAgICAgICJEaXNwbGF5IiwKICAgICAgICAgICAiV2hldGhlciB0aGUgZGV0ZWN0ZWQgaGFuZHMgYXJlIGhpZ2hsaWdodGVkIGluIG91dHB1dCBmcmFtZSIsCi0gICAgICAgICAgVFJVRSwgR19QQVJBTV9SRUFEV1JJVEUpCisgICAgICAgICAgVFJVRSwgKEdQYXJhbUZsYWdzKUdfUEFSQU1fUkVBRFdSSVRFKQogICAgICAgKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKICAgICAgIFBST1BfUFJPRklMRV9GSVNULAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInByb2ZpbGVfZmlzdCIsCiAgICAgICAgICAgIlByb2ZpbGVfZmlzdCIsCiAgICAgICAgICAgIkxvY2F0aW9uIG9mIEhBQVIgY2FzY2FkZSBmaWxlIChmaXN0IGdlc3R1cmUpIiwKLSAgICAgICAgICBIQUFSX0ZJTEVfRklTVCwgR19QQVJBTV9SRUFEV1JJVEUpCisgICAgICAgICAgSEFBUl9GSUxFX0ZJU1QsIChHUGFyYW1GbGFncylHX1BBUkFNX1JFQURXUklURSkKICAgICAgICk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCiAgICAgICBQUk9QX1BST0ZJTEVfUEFMTSwKICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJwcm9maWxlX3BhbG0iLAogICAgICAgICAgICJQcm9maWxlX3BhbG0iLAogICAgICAgICAgICJMb2NhdGlvbiBvZiBIQUFSIGNhc2NhZGUgZmlsZSAocGFsbSBnZXN0dXJlKSIsCi0gICAgICAgICAgSEFBUl9GSUxFX1BBTE0sIEdfUEFSQU1fUkVBRFdSSVRFKQorICAgICAgICAgIEhBQVJfRklMRV9QQUxNLCAoR1BhcmFtRmxhZ3MpR19QQVJBTV9SRUFEV1JJVEUpCiAgICAgICApOwogICAvKiBGSVhNRTogcHJvcGVydHkgbmFtZSBuZWVkcyBmaXhpbmcgKi8KICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKICAgICAgIFBST1BfUk9JX1gsCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoIlJPSV9YIiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJST0lfWCIsCiAgICAgICAgICAgIlJPSV9YIiwKICAgICAgICAgICAiWCBvZiBsZWZ0LXRvcCBwb2ludGVyIGluIHJlZ2lvbiBvZiBpbnRlcmVzdCBcbkdlc3R1cmVzIGluIHRoZSBkZWZpbmVkIHJlZ2lvbiBvZiBpbnRlcmVzdCB3aWxsIGVtaXQgbWVzc2FnZXMiLAotICAgICAgICAgIDAsIFVJTlRfTUFYLCAwLCBHX1BBUkFNX1JFQURXUklURSkKKyAgICAgICAgICAwLCBJTlRfTUFYLCAwLCAoR1BhcmFtRmxhZ3MpR19QQVJBTV9SRUFEV1JJVEUpCiAgICAgICApOwogICAvKiBGSVhNRTogcHJvcGVydHkgbmFtZSBuZWVkcyBmaXhpbmcgKi8KICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKICAgICAgIFBST1BfUk9JX1ksCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoIlJPSV9ZIiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJST0lfWSIsCiAgICAgICAgICAgIlJPSV9ZIiwKICAgICAgICAgICAiWSBvZiBsZWZ0LXRvcCBwb2ludGVyIGluIHJlZ2lvbiBvZiBpbnRlcmVzdCBcbkdlc3R1cmVzIGluIHRoZSBkZWZpbmVkIHJlZ2lvbiBvZiBpbnRlcmVzdCB3aWxsIGVtaXQgbWVzc2FnZXMiLAotICAgICAgICAgIDAsIFVJTlRfTUFYLCAwLCBHX1BBUkFNX1JFQURXUklURSkKKyAgICAgICAgICAwLCBJTlRfTUFYLCAwLCAoR1BhcmFtRmxhZ3MpR19QQVJBTV9SRUFEV1JJVEUpCiAgICAgICApOwogICAvKiBGSVhNRTogcHJvcGVydHkgbmFtZSBuZWVkcyBmaXhpbmcgKi8KICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKICAgICAgIFBST1BfUk9JX1dJRFRILAotICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJST0lfV0lEVEgiLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIlJPSV9XSURUSCIsCiAgICAgICAgICAgIlJPSV9XSURUSCIsCiAgICAgICAgICAgIldJRFRIIG9mIGxlZnQtdG9wIHBvaW50ZXIgaW4gcmVnaW9uIG9mIGludGVyZXN0IFxuR2VzdHVyZXMgaW4gdGhlIGRlZmluZWQgcmVnaW9uIG9mIGludGVyZXN0IHdpbGwgZW1pdCBtZXNzYWdlcyIsCi0gICAgICAgICAgMCwgVUlOVF9NQVgsIDAsIEdfUEFSQU1fUkVBRFdSSVRFKQorICAgICAgICAgIDAsIElOVF9NQVgsIDAsIChHUGFyYW1GbGFncylHX1BBUkFNX1JFQURXUklURSkKICAgICAgICk7CiAgIC8qIEZJWE1FOiBwcm9wZXJ0eSBuYW1lIG5lZWRzIGZpeGluZyAqLwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAogICAgICAgUFJPUF9ST0lfSEVJR0hULAotICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJST0lfSEVJR0hUIiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJST0lfSEVJR0hUIiwKICAgICAgICAgICAiUk9JX0hFSUdIVCIsCiAgICAgICAgICAgIkhFSUdIVCBvZiBsZWZ0LXRvcCBwb2ludGVyIGluIHJlZ2lvbiBvZiBpbnRlcmVzdCBcbkdlc3R1cmVzIGluIHRoZSBkZWZpbmVkIHJlZ2lvbiBvZiBpbnRlcmVzdCB3aWxsIGVtaXQgbWVzc2FnZXMiLAotICAgICAgICAgIDAsIFVJTlRfTUFYLCAwLCBHX1BBUkFNX1JFQURXUklURSkKKyAgICAgICAgICAwLCBJTlRfTUFYLCAwLCAoR1BhcmFtRmxhZ3MpR19QQVJBTV9SRUFEV1JJVEUpCiAgICAgICApOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCkBAIC0yNjEsOCArMjYwLDE3IEBACiBzdGF0aWMgdm9pZAogZ3N0X2hhbmRkZXRlY3RfaW5pdCAoR3N0SGFuZGRldGVjdCAqIGZpbHRlcikKIHsKLSAgZmlsdGVyLT5wcm9maWxlX2Zpc3QgPSBnX3N0cmR1cCAoSEFBUl9GSUxFX0ZJU1QpOwotICBmaWx0ZXItPnByb2ZpbGVfcGFsbSA9IGdfc3RyZHVwIChIQUFSX0ZJTEVfUEFMTSk7CisgIGNvbnN0IGdjaGFyICpoYWFyX3BhdGg7CisKKyAgaGFhcl9wYXRoID0gZ19nZXRlbnYgKCJHU1RfSEFBUl9DQVNDQURFU19QQVRIIik7CisgIGlmIChoYWFyX3BhdGgpIHsKKyAgICBmaWx0ZXItPnByb2ZpbGVfZmlzdCA9IGdfYnVpbGRfZmlsZW5hbWUgKGhhYXJfcGF0aCwgImZpc3QueG1sIiwgTlVMTCk7CisgICAgZmlsdGVyLT5wcm9maWxlX3BhbG0gPSBnX2J1aWxkX2ZpbGVuYW1lIChoYWFyX3BhdGgsICJwYWxtLnhtbCIsIE5VTEwpOworICB9IGVsc2UgeworICAgIGZpbHRlci0+cHJvZmlsZV9maXN0ID0gZ19zdHJkdXAgKEhBQVJfRklMRV9GSVNUKTsKKyAgICBmaWx0ZXItPnByb2ZpbGVfcGFsbSA9IGdfc3RyZHVwIChIQUFSX0ZJTEVfUEFMTSk7CisgIH0KKwogICBmaWx0ZXItPnJvaV94ID0gMDsKICAgZmlsdGVyLT5yb2lfeSA9IDA7CiAgIGZpbHRlci0+cm9pX3dpZHRoID0gMDsKQEAgLTI4OCw3ICsyOTYsNyBAQAogICAgIGNhc2UgUFJPUF9QUk9GSUxFX0ZJU1Q6CiAgICAgICBnX2ZyZWUgKGZpbHRlci0+cHJvZmlsZV9maXN0KTsKICAgICAgIGlmIChmaWx0ZXItPmN2Q2FzY2FkZV9maXN0KQotICAgICAgICBjdlJlbGVhc2VIYWFyQ2xhc3NpZmllckNhc2NhZGUgKCZmaWx0ZXItPmN2Q2FzY2FkZV9maXN0KTsKKyAgICAgICAgZGVsZXRlIGZpbHRlci0+Y3ZDYXNjYWRlX2Zpc3Q7CiAgICAgICBmaWx0ZXItPnByb2ZpbGVfZmlzdCA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogICAgICAgZmlsdGVyLT5jdkNhc2NhZGVfZmlzdCA9CiAgICAgICAgICAgZ3N0X2hhbmRkZXRlY3RfbG9hZF9wcm9maWxlIChmaWx0ZXIsIGZpbHRlci0+cHJvZmlsZV9maXN0KTsKQEAgLTI5Niw3ICszMDQsNyBAQAogICAgIGNhc2UgUFJPUF9QUk9GSUxFX1BBTE06CiAgICAgICBnX2ZyZWUgKGZpbHRlci0+cHJvZmlsZV9wYWxtKTsKICAgICAgIGlmIChmaWx0ZXItPmN2Q2FzY2FkZV9wYWxtKQotICAgICAgICBjdlJlbGVhc2VIYWFyQ2xhc3NpZmllckNhc2NhZGUgKCZmaWx0ZXItPmN2Q2FzY2FkZV9wYWxtKTsKKyAgICAgICAgZGVsZXRlIGZpbHRlci0+Y3ZDYXNjYWRlX3BhbG07CiAgICAgICBmaWx0ZXItPnByb2ZpbGVfcGFsbSA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogICAgICAgZmlsdGVyLT5jdkNhc2NhZGVfcGFsbSA9CiAgICAgICAgICAgZ3N0X2hhbmRkZXRlY3RfbG9hZF9wcm9maWxlIChmaWx0ZXIsIGZpbHRlci0+cHJvZmlsZV9wYWxtKTsKQEAgLTMwNSwxNiArMzEzLDE2IEBACiAgICAgICBmaWx0ZXItPmRpc3BsYXkgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUk9JX1g6Ci0gICAgICBmaWx0ZXItPnJvaV94ID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgZmlsdGVyLT5yb2lfeCA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JPSV9ZOgotICAgICAgZmlsdGVyLT5yb2lfeSA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKyAgICAgIGZpbHRlci0+cm9pX3kgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ST0lfV0lEVEg6Ci0gICAgICBmaWx0ZXItPnJvaV93aWR0aCA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKyAgICAgIGZpbHRlci0+cm9pX3dpZHRoID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUk9JX0hFSUdIVDoKLSAgICAgIGZpbHRlci0+cm9pX2hlaWdodCA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKyAgICAgIGZpbHRlci0+cm9pX2hlaWdodCA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CkBAIC0zMzksMTYgKzM0NywxNiBAQAogICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgZmlsdGVyLT5wcm9maWxlX3BhbG0pOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JPSV9YOgotICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGZpbHRlci0+cm9pX3gpOworICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZmlsdGVyLT5yb2lfeCk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfUk9JX1k6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZmlsdGVyLT5yb2lfeSk7CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBmaWx0ZXItPnJvaV95KTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9ST0lfV0lEVEg6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZmlsdGVyLT5yb2lfd2lkdGgpOworICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZmlsdGVyLT5yb2lfd2lkdGgpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1JPSV9IRUlHSFQ6Ci0gICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZmlsdGVyLT5yb2lfaGVpZ2h0KTsKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIGZpbHRlci0+cm9pX2hlaWdodCk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKQEAgLTM3NiwxMCArMzg0LDYgQEAKICAgZmlsdGVyLT5jdkdyYXkgPQogICAgICAgY3ZDcmVhdGVJbWFnZSAoY3ZTaXplIChpbl93aWR0aCwgaW5faGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAxKTsKIAotICBpZiAoIWZpbHRlci0+Y3ZTdG9yYWdlKQotICAgIGZpbHRlci0+Y3ZTdG9yYWdlID0gY3ZDcmVhdGVNZW1TdG9yYWdlICgwKTsKLSAgZWxzZQotICAgIGN2Q2xlYXJNZW1TdG9yYWdlIChmaWx0ZXItPmN2U3RvcmFnZSk7CiAgIHJldHVybiBUUlVFOwogfQogCkBAIC0zOTEsMTQ3ICszOTUsNTQgQEAKICAgICBHc3RCdWZmZXIgKiBidWZmZXIsIElwbEltYWdlICogaW1nKQogewogICBHc3RIYW5kZGV0ZWN0ICpmaWx0ZXIgPSBHU1RfSEFORERFVEVDVCAodHJhbnNmb3JtKTsKLSAgQ3ZTZXEgKmhhbmRzOwotICBDdlJlY3QgKnI7CisgIFJlY3QgKnI7CiAgIEdzdFN0cnVjdHVyZSAqczsKICAgR3N0TWVzc2FnZSAqbTsKLSAgaW50IGk7CisgIHVuc2lnbmVkIGludCBpOworICB2ZWN0b3IgPCBSZWN0ID4gaGFuZHM7CiAKICAgLyogY2hlY2sgZGV0ZWN0aW9uIGNhc2NhZGVzICovCi0gIGlmICghZmlsdGVyLT5jdkNhc2NhZGVfZmlzdCB8fCAhZmlsdGVyLT5jdkNhc2NhZGVfcGFsbSkKLSAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0KKyAgaWYgKGZpbHRlci0+Y3ZDYXNjYWRlX2Zpc3QgJiYgZmlsdGVyLT5jdkNhc2NhZGVfcGFsbSkgewogICAvKiBjdnQgdG8gZ3JheSBjb2xvdXIgc3BhY2UgZm9yIGhhbmQgZGV0ZWN0ICovCi0gIGN2Q3Z0Q29sb3IgKGltZywgZmlsdGVyLT5jdkdyYXksIENWX1JHQjJHUkFZKTsKLSAgY3ZDbGVhck1lbVN0b3JhZ2UgKGZpbHRlci0+Y3ZTdG9yYWdlKTsKKyAgICBjdkN2dENvbG9yIChpbWcsIGZpbHRlci0+Y3ZHcmF5LCBDVl9SR0IyR1JBWSk7CiAKLSAgLyogZGV0ZWN0IEZJU1QgZ2VzdHVyZSBmaXN0ICovCi0gIGhhbmRzID0KLSAgICAgIGN2SGFhckRldGVjdE9iamVjdHMgKGZpbHRlci0+Y3ZHcmF5LCBmaWx0ZXItPmN2Q2FzY2FkZV9maXN0LAotICAgICAgZmlsdGVyLT5jdlN0b3JhZ2UsIDEuMSwgMiwgQ1ZfSEFBUl9ET19DQU5OWV9QUlVOSU5HLCBjdlNpemUgKDI0LCAyNCksCi0gICAgICBjdlNpemUgKDAsIDApKTsKKyAgICAvKiBkZXRlY3QgRklTVCBnZXN0dXJlIGZpc3QgKi8KKyAgICBNYXQgcm9pIChmaWx0ZXItPmN2R3JheSwgUmVjdCAoZmlsdGVyLT5jdkdyYXktPm9yaWdpbiwKKyAgICAgICAgICAgIGZpbHRlci0+Y3ZHcmF5LT5vcmlnaW4sIGZpbHRlci0+Y3ZHcmF5LT53aWR0aCwKKyAgICAgICAgICAgIGZpbHRlci0+Y3ZHcmF5LT5oZWlnaHQpKTsKKyAgICBmaWx0ZXItPmN2Q2FzY2FkZV9maXN0LT5kZXRlY3RNdWx0aVNjYWxlIChyb2ksIGhhbmRzLCAxLjEsIDIsCisgICAgICAgIENWX0hBQVJfRE9fQ0FOTllfUFJVTklORywgY3ZTaXplICgyNCwgMjQpLCBjdlNpemUgKDAsIDApKTsKIAotICAvKiBpZiBGSVNUIGdlc3R1cmUgZGV0ZWN0ZWQgKi8KLSAgaWYgKGhhbmRzICYmIGhhbmRzLT50b3RhbCA+IDApIHsKLSAgICBpbnQgbWluX2Rpc3RhbmNlLCBkaXN0YW5jZTsKLSAgICBDdlJlY3QgdGVtcF9yOwotICAgIEN2UG9pbnQgYzsKKyAgICAvKiBpZiBGSVNUIGdlc3R1cmUgZGV0ZWN0ZWQgKi8KKyAgICBpZiAoIWhhbmRzLmVtcHR5ICgpKSB7CiAKLSAgICBHU1RfREVCVUdfT0JKRUNUIChmaWx0ZXIsICIlZCBGSVNUIGdlc3R1cmVzIGRldGVjdGVkXG4iLAotICAgICAgICAoaW50KSBoYW5kcy0+dG90YWwpOwotCi0gICAgLyogR28gdGhyb3VnaCBhbGwgZGV0ZWN0ZWQgRklTVCBnZXN0dXJlcyB0byBnZXQgdGhlIGJlc3Qgb25lCi0gICAgICogcHJldl9yID0+IHByZXZpb3VzIGhhbmQKLSAgICAgKiBiZXN0X3IgPT4gYmVzdCBoYW5kIGluIHRoaXMgZnJhbWUKLSAgICAgKi8KLSAgICAvKiBzZXQgbWluX2Rpc3RhbmNlIGZvciBpbml0IGNvbXBhcmlzb24gKi8KLSAgICBtaW5fZGlzdGFuY2UgPSBpbWctPndpZHRoICsgaW1nLT5oZWlnaHQ7Ci0gICAgLyogSW5pdCBmaWx0ZXItPnByZXZfciAqLwotICAgIHRlbXBfciA9IGN2UmVjdCAoMCwgMCwgMCwgMCk7Ci0gICAgaWYgKGZpbHRlci0+cHJldl9yID09IE5VTEwpCi0gICAgICBmaWx0ZXItPnByZXZfciA9ICZ0ZW1wX3I7Ci0gICAgLyogR2V0IHRoZSBiZXN0IEZJU1QgZ2VzdHVyZSAqLwotICAgIGZvciAoaSA9IDA7IGkgPCBoYW5kcy0+dG90YWw7IGkrKykgewotICAgICAgciA9IChDdlJlY3QgKikgY3ZHZXRTZXFFbGVtIChoYW5kcywgaSk7Ci0gICAgICBkaXN0YW5jZSA9IChpbnQpIHNxcnQgKHBvdyAoKHItPnggLSBmaWx0ZXItPnByZXZfci0+eCksCi0gICAgICAgICAgICAgIDIpICsgcG93ICgoci0+eSAtIGZpbHRlci0+cHJldl9yLT55KSwgMikpOwotICAgICAgaWYgKGRpc3RhbmNlIDw9IG1pbl9kaXN0YW5jZSkgewotICAgICAgICBtaW5fZGlzdGFuY2UgPSBkaXN0YW5jZTsKLSAgICAgICAgZmlsdGVyLT5iZXN0X3IgPSByOwotICAgICAgfQotICAgIH0KLSAgICAvKiBTYXZlIGJlc3RfciBhcyBwcmV2X3IgZm9yIG5leHQgZnJhbWUgY29tcGFyaXNvbiAqLwotICAgIGZpbHRlci0+cHJldl9yID0gKEN2UmVjdCAqKSBmaWx0ZXItPmJlc3RfcjsKLSAgICAvKiBzZW5kIG1zZyB0byBhcHAvYnVzIGlmIHRoZSBkZXRlY3RlZCBnZXN0dXJlIGZhbGxzIGluIHRoZSByZWdpb24gb2YgaW50ZXJlc3QgKi8KLSAgICAvKiBnZXQgY2VudGVyIHBvaW50IG9mIGdlc3R1cmUgKi8KLSAgICBjID0gY3ZQb2ludCAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggLyAyLAotICAgICAgICBmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgLyAyKTsKLSAgICAvKiBzZW5kIG1lc3NhZ2U6Ci0gICAgICogaWYgdGhlIGNlbnRlciBwb2ludCBpcyBpbiB0aGUgcmVnaW9uIG9mIGludGVyZXN0LCBPUiwKLSAgICAgKiBpZiB0aGUgcmVnaW9uIG9mIGludGVyZXN0IHJlbWFpbnMgZGVmYXVsdCBhcyAoMCwwLDAsMCkqLwotICAgIGlmICgoYy54ID49IGZpbHRlci0+cm9pX3ggJiYgYy54IDw9IChmaWx0ZXItPnJvaV94ICsgZmlsdGVyLT5yb2lfd2lkdGgpCi0gICAgICAgICAgICAmJiBjLnkgPj0gZmlsdGVyLT5yb2lfeQotICAgICAgICAgICAgJiYgYy55IDw9IChmaWx0ZXItPnJvaV95ICsgZmlsdGVyLT5yb2lfaGVpZ2h0KSkKLSAgICAgICAgfHwgKGZpbHRlci0+cm9pX3ggPT0gMAotICAgICAgICAgICAgJiYgZmlsdGVyLT5yb2lfeSA9PSAwCi0gICAgICAgICAgICAmJiBmaWx0ZXItPnJvaV93aWR0aCA9PSAwICYmIGZpbHRlci0+cm9pX2hlaWdodCA9PSAwKSkgewotICAgICAgLyogRGVmaW5lIHN0cnVjdHVyZSBmb3IgbWVzc2FnZSBwb3N0ICovCi0gICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJoYW5kLWdlc3R1cmUiLAotICAgICAgICAgICJnZXN0dXJlIiwgR19UWVBFX1NUUklORywgImZpc3QiLAotICAgICAgICAgICJ4IiwgR19UWVBFX1VJTlQsCi0gICAgICAgICAgKGd1aW50KSAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggKiAwLjUpLCAieSIsCi0gICAgICAgICAgR19UWVBFX1VJTlQsCi0gICAgICAgICAgKGd1aW50KSAoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSwgIndpZHRoIiwKLSAgICAgICAgICBHX1RZUEVfVUlOVCwgKGd1aW50KSBmaWx0ZXItPmJlc3Rfci0+d2lkdGgsICJoZWlnaHQiLCBHX1RZUEVfVUlOVCwKLSAgICAgICAgICAoZ3VpbnQpIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQsIE5VTEwpOwotICAgICAgLyogSW5pdCBtZXNzYWdlIGVsZW1lbnQgKi8KLSAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7Ci0gICAgICAvKiBTZW5kIG1lc3NhZ2UgKi8KLSAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOwotCi0jaWYgMAotICAgICAgLyogc2VuZCBldmVudAotICAgICAgICogaGVyZSB3ZSB1c2UgbW91c2UtbW92ZSBldmVudCBpbnN0ZWFkIG9mIGZpc3QtbW92ZSBvciBwYWxtLW1vdmUgZXZlbnQKLSAgICAgICAqICEhISB0aGlzIHdpbGwgQ0hBTkdFIGluIHRoZSBmdXR1cmUgISEhCi0gICAgICAgKiAhISEgYnkgYWRkaW5nIGdzdF9uYXZpZ2F0aW9uX3NlbmRfaGFuZF9kZXRlY3RfZXZlbnQoKSBpbiBuYXZpZ2F0aW9uLmMgISEhCi0gICAgICAgKi8KLSAgICAgIGdzdF9uYXZpZ2F0aW9uX3NlbmRfbW91c2VfZXZlbnQgKEdTVF9OQVZJR0FUSU9OIChmaWx0ZXIpLAotICAgICAgICAgICJtb3VzZS1tb3ZlIiwKLSAgICAgICAgICAwLAotICAgICAgICAgIChkb3VibGUpIChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSksCi0gICAgICAgICAgKGRvdWJsZSkgKGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAqIDAuNSkpOwotI2VuZGlmCi0gICAgfQotICAgIC8qIENoZWNrIGZpbHRlci0+ZGlzcGxheSwKLSAgICAgKiBJZiBUUlVFLCBkaXNwbGF5aW5nIHJlZCBjaXJjbGUgbWFya2VyIGluIHRoZSBvdXQgZnJhbWUgKi8KLSAgICBpZiAoZmlsdGVyLT5kaXNwbGF5KSB7Ci0gICAgICBDdlBvaW50IGNlbnRlcjsKLSAgICAgIGludCByYWRpdXM7Ci0gICAgICBjZW50ZXIueCA9IGN2Um91bmQgKChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSkpOwotICAgICAgY2VudGVyLnkgPSBjdlJvdW5kICgoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSk7Ci0gICAgICByYWRpdXMgPQotICAgICAgICAgIGN2Um91bmQgKChmaWx0ZXItPmJlc3Rfci0+d2lkdGggKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0KSAqIDAuMjUpOwotICAgICAgY3ZDaXJjbGUgKGltZywgY2VudGVyLCByYWRpdXMsIENWX1JHQiAoMCwgMCwgMjAwKSwgMSwgOCwgMCk7Ci0gICAgfQotICB9IGVsc2UgewotICAgIC8qIGlmIE5PIEZJU1QgZ2VzdHVyZSwgZGV0ZWN0aW5nIFBBTE0gZ2VzdHVyZSAqLwotICAgIGhhbmRzID0KLSAgICAgICAgY3ZIYWFyRGV0ZWN0T2JqZWN0cyAoZmlsdGVyLT5jdkdyYXksIGZpbHRlci0+Y3ZDYXNjYWRlX3BhbG0sCi0gICAgICAgIGZpbHRlci0+Y3ZTdG9yYWdlLCAxLjEsIDMsIENWX0hBQVJfRE9fQ0FOTllfUFJVTklORywgY3ZTaXplICgyNCwgMjQpLAotICAgICAgICBjdlNpemUgKDAsIDApKTsKLSAgICAvKiBpZiBQQUxNIGRldGVjdGVkICovCi0gICAgaWYgKGhhbmRzICYmIGhhbmRzLT50b3RhbCA+IDApIHsKICAgICAgIGludCBtaW5fZGlzdGFuY2UsIGRpc3RhbmNlOwotICAgICAgQ3ZSZWN0IHRlbXBfcjsKKyAgICAgIFJlY3QgdGVtcF9yOwogICAgICAgQ3ZQb2ludCBjOwotICAgICAgLyogc2V0IGZyYW1lIGJ1ZmZlciB3cml0YWJsZSAqLwotICAgICAgaWYgKGZpbHRlci0+ZGlzcGxheSkgewotICAgICAgICBidWZmZXIgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGJ1ZmZlcik7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIiVkIFBBTE0gZ2VzdHVyZXMgZGV0ZWN0ZWRcbiIsCi0gICAgICAgICAgICAoaW50KSBoYW5kcy0+dG90YWwpOwotICAgICAgfQotICAgICAgLyogR28gdGhyb3VnaCBhbGwgZGV0ZWN0ZWQgUEFMTSBnZXN0dXJlcyB0byBnZXQgdGhlIGJlc3Qgb25lCisKKyAgICAgIC8qIEdvIHRocm91Z2ggYWxsIGRldGVjdGVkIEZJU1QgZ2VzdHVyZXMgdG8gZ2V0IHRoZSBiZXN0IG9uZQogICAgICAgICogcHJldl9yID0+IHByZXZpb3VzIGhhbmQKICAgICAgICAqIGJlc3RfciA9PiBiZXN0IGhhbmQgaW4gdGhpcyBmcmFtZQogICAgICAgICovCi0gICAgICAvKiBzdXBwb3NlIGEgbWluX2Rpc3RhbmNlIGZvciBpbml0IGNvbXBhcmlzb24gKi8KKyAgICAgIC8qIHNldCBtaW5fZGlzdGFuY2UgZm9yIGluaXQgY29tcGFyaXNvbiAqLwogICAgICAgbWluX2Rpc3RhbmNlID0gaW1nLT53aWR0aCArIGltZy0+aGVpZ2h0OwogICAgICAgLyogSW5pdCBmaWx0ZXItPnByZXZfciAqLwotICAgICAgdGVtcF9yID0gY3ZSZWN0ICgwLCAwLCAwLCAwKTsKKyAgICAgIHRlbXBfciA9IFJlY3QgKDAsIDAsIDAsIDApOwogICAgICAgaWYgKGZpbHRlci0+cHJldl9yID09IE5VTEwpCiAgICAgICAgIGZpbHRlci0+cHJldl9yID0gJnRlbXBfcjsKLSAgICAgIC8qIEdldCB0aGUgYmVzdCBQQUxNIGdlc3R1cmUgKi8KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBoYW5kcy0+dG90YWw7IGkrKykgewotICAgICAgICByID0gKEN2UmVjdCAqKSBjdkdldFNlcUVsZW0gKGhhbmRzLCBpKTsKKyAgICAgIC8qIEdldCB0aGUgYmVzdCBGSVNUIGdlc3R1cmUgKi8KKyAgICAgIGZvciAoaSA9IDA7IGkgPCBoYW5kcy5zaXplKCk7IGkrKykgeworICAgICAgICByID0gJmhhbmRzW2ldOwogICAgICAgICBkaXN0YW5jZSA9IChpbnQpIHNxcnQgKHBvdyAoKHItPnggLSBmaWx0ZXItPnByZXZfci0+eCksCiAgICAgICAgICAgICAgICAgMikgKyBwb3cgKChyLT55IC0gZmlsdGVyLT5wcmV2X3ItPnkpLCAyKSk7CiAgICAgICAgIGlmIChkaXN0YW5jZSA8PSBtaW5fZGlzdGFuY2UpIHsKICAgICAgICAgICBtaW5fZGlzdGFuY2UgPSBkaXN0YW5jZTsKLSAgICAgICAgICBmaWx0ZXItPmJlc3RfciA9IHI7CisgICAgICAgICAgZGVsZXRlIChmaWx0ZXItPmJlc3Rfcik7CisgICAgICAgICAgZmlsdGVyLT5iZXN0X3IgPSBuZXcgUmVjdCAoKnIpOwogICAgICAgICB9CiAgICAgICB9CiAgICAgICAvKiBTYXZlIGJlc3RfciBhcyBwcmV2X3IgZm9yIG5leHQgZnJhbWUgY29tcGFyaXNvbiAqLwotICAgICAgZmlsdGVyLT5wcmV2X3IgPSAoQ3ZSZWN0ICopIGZpbHRlci0+YmVzdF9yOworICAgICAgZmlsdGVyLT5wcmV2X3IgPSBmaWx0ZXItPmJlc3RfcjsKIAogICAgICAgLyogc2VuZCBtc2cgdG8gYXBwL2J1cyBpZiB0aGUgZGV0ZWN0ZWQgZ2VzdHVyZSBmYWxscyBpbiB0aGUgcmVnaW9uIG9mIGludGVyZXN0ICovCiAgICAgICAvKiBnZXQgY2VudGVyIHBvaW50IG9mIGdlc3R1cmUgKi8KQEAgLTU0OCwxMyArNDU5LDEzIEBACiAgICAgICAgICAgICAgICYmIGZpbHRlci0+cm9pX3dpZHRoID09IDAgJiYgZmlsdGVyLT5yb2lfaGVpZ2h0ID09IDApKSB7CiAgICAgICAgIC8qIERlZmluZSBzdHJ1Y3R1cmUgZm9yIG1lc3NhZ2UgcG9zdCAqLwogICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJoYW5kLWdlc3R1cmUiLAotICAgICAgICAgICAgImdlc3R1cmUiLCBHX1RZUEVfU1RSSU5HLCAicGFsbSIsCi0gICAgICAgICAgICAieCIsIEdfVFlQRV9VSU5ULAotICAgICAgICAgICAgKGd1aW50KSAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggKiAwLjUpLCAieSIsCi0gICAgICAgICAgICBHX1RZUEVfVUlOVCwKLSAgICAgICAgICAgIChndWludCkgKGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAqIDAuNSksICJ3aWR0aCIsCi0gICAgICAgICAgICBHX1RZUEVfVUlOVCwgKGd1aW50KSBmaWx0ZXItPmJlc3Rfci0+d2lkdGgsICJoZWlnaHQiLCBHX1RZUEVfVUlOVCwKLSAgICAgICAgICAgIChndWludCkgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCwgTlVMTCk7CisgICAgICAgICAgICAiZ2VzdHVyZSIsIEdfVFlQRV9TVFJJTkcsICJmaXN0IiwKKyAgICAgICAgICAgICJ4IiwgR19UWVBFX0lOVCwKKyAgICAgICAgICAgIChnaW50KSAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggKiAwLjUpLCAieSIsCisgICAgICAgICAgICBHX1RZUEVfSU5ULAorICAgICAgICAgICAgKGdpbnQpIChmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgKiAwLjUpLCAid2lkdGgiLAorICAgICAgICAgICAgR19UWVBFX0lOVCwgKGdpbnQpIGZpbHRlci0+YmVzdF9yLT53aWR0aCwgImhlaWdodCIsIEdfVFlQRV9JTlQsCisgICAgICAgICAgICAoZ2ludCkgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCwgTlVMTCk7CiAgICAgICAgIC8qIEluaXQgbWVzc2FnZSBlbGVtZW50ICovCiAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7CiAgICAgICAgIC8qIFNlbmQgbWVzc2FnZSAqLwpAQCAtNTcyLDIwICs0ODMsNiBAQAogICAgICAgICAgICAgKGRvdWJsZSkgKGZpbHRlci0+YmVzdF9yLT54ICsgZmlsdGVyLT5iZXN0X3ItPndpZHRoICogMC41KSwKICAgICAgICAgICAgIChkb3VibGUpIChmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgKiAwLjUpKTsKIAotICAgICAgICAvKiBvciB1c2UgYW5vdGhlciB3YXkgdG8gc2VuZCB1cHN0cmVhbSBuYXZpZ2F0aW9uIGV2ZW50IGZvciBkZWJ1ZwotICAgICAgICAgKgotICAgICAgICAgKiBHc3RFdmVudCAqZXZlbnQgPQotICAgICAgICAgKiBnc3RfZXZlbnRfbmV3X25hdmlnYXRpb24gKGdzdF9zdHJ1Y3R1cmVfbmV3Ci0gICAgICAgICAqICgiYXBwbGljYXRpb24veC1nc3QtbmF2aWdhdGlvbiIsICJldmVudCIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICAgICAqICJtb3VzZS1tb3ZlIiwKLSAgICAgICAgICogImJ1dHRvbiIsIEdfVFlQRV9JTlQsIDAsCi0gICAgICAgICAqICJwb2ludGVyX3giLCBHX1RZUEVfRE9VQkxFLAotICAgICAgICAgKiAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggKiAwLjUpLAotICAgICAgICAgKiAicG9pbnRlcl95IiwgR19UWVBFX0RPVUJMRSwKLSAgICAgICAgICogKGRvdWJsZSkgKGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAqIDAuNSksCi0gICAgICAgICAqIE5VTEwpKTsKLSAgICAgICAgICogZ3N0X3BhZF9zZW5kX2V2ZW50IChHU1RfQkFTRV9UUkFOU0ZPUk1fQ0FTVCAoZmlsdGVyKS0+c3JjcGFkLCBldmVudCk7Ci0gICAgICAgICAqLwogI2VuZGlmCiAgICAgICB9CiAgICAgICAvKiBDaGVjayBmaWx0ZXItPmRpc3BsYXksCkBAIC01OTksNiArNDk2LDExMyBAQAogICAgICAgICAgICAgY3ZSb3VuZCAoKGZpbHRlci0+YmVzdF9yLT53aWR0aCArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQpICogMC4yNSk7CiAgICAgICAgIGN2Q2lyY2xlIChpbWcsIGNlbnRlciwgcmFkaXVzLCBDVl9SR0IgKDAsIDAsIDIwMCksIDEsIDgsIDApOwogICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgIC8qIGlmIE5PIEZJU1QgZ2VzdHVyZSwgZGV0ZWN0aW5nIFBBTE0gZ2VzdHVyZSAqLworICAgICAgZmlsdGVyLT5jdkNhc2NhZGVfcGFsbS0+ZGV0ZWN0TXVsdGlTY2FsZSAocm9pLCBoYW5kcywgMS4xLCAyLAorICAgICAgICAgIENWX0hBQVJfRE9fQ0FOTllfUFJVTklORywgY3ZTaXplICgyNCwgMjQpLCBjdlNpemUgKDAsIDApKTsKKyAgICAgIC8qIGlmIFBBTE0gZGV0ZWN0ZWQgKi8KKyAgICAgIGlmICghaGFuZHMuZW1wdHkgKCkpIHsKKyAgICAgICAgaW50IG1pbl9kaXN0YW5jZSwgZGlzdGFuY2U7CisgICAgICAgIFJlY3QgdGVtcF9yOworICAgICAgICBDdlBvaW50IGM7CisKKyAgICAgICAgaWYgKGZpbHRlci0+ZGlzcGxheSkgeworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIiVkIFBBTE0gZ2VzdHVyZXMgZGV0ZWN0ZWRcbiIsCisgICAgICAgICAgICAgIChpbnQpIGhhbmRzLnNpemUgKCkpOworICAgICAgICB9CisgICAgICAgIC8qIEdvIHRocm91Z2ggYWxsIGRldGVjdGVkIFBBTE0gZ2VzdHVyZXMgdG8gZ2V0IHRoZSBiZXN0IG9uZQorICAgICAgICAgKiBwcmV2X3IgPT4gcHJldmlvdXMgaGFuZAorICAgICAgICAgKiBiZXN0X3IgPT4gYmVzdCBoYW5kIGluIHRoaXMgZnJhbWUKKyAgICAgICAgICovCisgICAgICAgIC8qIHN1cHBvc2UgYSBtaW5fZGlzdGFuY2UgZm9yIGluaXQgY29tcGFyaXNvbiAqLworICAgICAgICBtaW5fZGlzdGFuY2UgPSBpbWctPndpZHRoICsgaW1nLT5oZWlnaHQ7CisgICAgICAgIC8qIEluaXQgZmlsdGVyLT5wcmV2X3IgKi8KKyAgICAgICAgdGVtcF9yID0gUmVjdCAoMCwgMCwgMCwgMCk7CisgICAgICAgaWYgKGZpbHRlci0+cHJldl9yID09IE5VTEwpCisgICAgICAgICAgZmlsdGVyLT5wcmV2X3IgPSAmdGVtcF9yOworICAgICAgICAvKiBHZXQgdGhlIGJlc3QgUEFMTSBnZXN0dXJlICovCisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBoYW5kcy5zaXplICgpOyArK2kpIHsKKyAgICAgICAgICByID0gJmhhbmRzW2ldOworICAgICAgICAgIGRpc3RhbmNlID0gKGludCkgc3FydCAocG93ICgoci0+eCAtIGZpbHRlci0+cHJldl9yLT54KSwKKyAgICAgICAgICAgICAgICAgIDIpICsgcG93ICgoci0+eSAtIGZpbHRlci0+cHJldl9yLT55KSwgMikpOworICAgICAgICAgIGlmIChkaXN0YW5jZSA8PSBtaW5fZGlzdGFuY2UpIHsKKyAgICAgICAgICAgIG1pbl9kaXN0YW5jZSA9IGRpc3RhbmNlOworICAgICAgICAgICAgZGVsZXRlIChmaWx0ZXItPmJlc3Rfcik7CisgICAgICAgICAgICBmaWx0ZXItPmJlc3RfciA9IG5ldyBSZWN0ICgqcik7CisgICAgICAgICAgfQorICAgICAgICB9CisgICAgICAgIC8qIFNhdmUgYmVzdF9yIGFzIHByZXZfciBmb3IgbmV4dCBmcmFtZSBjb21wYXJpc29uICovCisgICAgICAgIGZpbHRlci0+cHJldl9yID0gZmlsdGVyLT5iZXN0X3I7CisKKyAgICAgICAgLyogc2VuZCBtc2cgdG8gYXBwL2J1cyBpZiB0aGUgZGV0ZWN0ZWQgZ2VzdHVyZSBmYWxscyBpbiB0aGUgcmVnaW9uIG9mIGludGVyZXN0ICovCisgICAgICAgIC8qIGdldCBjZW50ZXIgcG9pbnQgb2YgZ2VzdHVyZSAqLworICAgICAgICBjID0gY3ZQb2ludCAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggLyAyLAorICAgICAgICAgICAgZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0IC8gMik7CisgICAgICAgIC8qIHNlbmQgbWVzc2FnZToKKyAgICAgICAgICogaWYgdGhlIGNlbnRlciBwb2ludCBpcyBpbiB0aGUgcmVnaW9uIG9mIGludGVyZXN0LCBPUiwKKyAgICAgICAgICogaWYgdGhlIHJlZ2lvbiBvZiBpbnRlcmVzdCByZW1haW5zIGRlZmF1bHQgYXMgKDAsMCwwLDApKi8KKyAgICAgICAgaWYgKCgoZ2ludCkgYy54ID49IGZpbHRlci0+cm9pX3gKKyAgICAgICAgICAgICAgICAmJiAoZ2ludCkgYy54IDw9IChmaWx0ZXItPnJvaV94ICsgZmlsdGVyLT5yb2lfd2lkdGgpCisgICAgICAgICAgICAgICAgJiYgKGdpbnQpIGMueSA+PSBmaWx0ZXItPnJvaV95CisgICAgICAgICAgICAgICAgJiYgKGdpbnQpIGMueSA8PSAoZmlsdGVyLT5yb2lfeSArIGZpbHRlci0+cm9pX2hlaWdodCkpCisgICAgICAgICAgICB8fCAoZmlsdGVyLT5yb2lfeCA9PSAwICYmIGZpbHRlci0+cm9pX3kgPT0gMAorICAgICAgICAgICAgICAgICYmIGZpbHRlci0+cm9pX3dpZHRoID09IDAgJiYgZmlsdGVyLT5yb2lfaGVpZ2h0ID09IDApKSB7CisgICAgICAgICAgLyogRGVmaW5lIHN0cnVjdHVyZSBmb3IgbWVzc2FnZSBwb3N0ICovCisgICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgiaGFuZC1nZXN0dXJlIiwKKyAgICAgICAgICAgICAgImdlc3R1cmUiLCBHX1RZUEVfU1RSSU5HLCAicGFsbSIsCisgICAgICAgICAgICAgICJ4IiwgR19UWVBFX0lOVCwKKyAgICAgICAgICAgICAgKGdpbnQpIChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSksICJ5IiwKKyAgICAgICAgICAgICAgR19UWVBFX0lOVCwKKyAgICAgICAgICAgICAgKGdpbnQpIChmaWx0ZXItPmJlc3Rfci0+eSArIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQgKiAwLjUpLAorICAgICAgICAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCAoZ2ludCkgZmlsdGVyLT5iZXN0X3ItPndpZHRoLCAiaGVpZ2h0IiwKKyAgICAgICAgICAgICAgR19UWVBFX0lOVCwgKGdpbnQpIGZpbHRlci0+YmVzdF9yLT5oZWlnaHQsIE5VTEwpOworICAgICAgICAgIC8qIEluaXQgbWVzc2FnZSBlbGVtZW50ICovCisgICAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKKyAgICAgICAgICAvKiBTZW5kIG1lc3NhZ2UgKi8KKyAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKKworI2lmIDAKKyAgICAgICAgICAvKiBzZW5kIGV2ZW50CisgICAgICAgICAgICogaGVyZSB3ZSB1c2UgbW91c2UtbW92ZSBldmVudCBpbnN0ZWFkIG9mIGZpc3QtbW92ZSBvciBwYWxtLW1vdmUgZXZlbnQKKyAgICAgICAgICAgKiAhISEgdGhpcyB3aWxsIENIQU5HRSBpbiB0aGUgZnV0dXJlICEhIQorICAgICAgICAgICAqICEhISBieSBhZGRpbmcgZ3N0X25hdmlnYXRpb25fc2VuZF9oYW5kX2RldGVjdF9ldmVudCgpIGluIG5hdmlnYXRpb24uYyAhISEKKyAgICAgICAgICAgKi8KKyAgICAgICAgICBnc3RfbmF2aWdhdGlvbl9zZW5kX21vdXNlX2V2ZW50IChHU1RfTkFWSUdBVElPTiAoZmlsdGVyKSwKKyAgICAgICAgICAgICAgIm1vdXNlLW1vdmUiLAorICAgICAgICAgICAgICAwLAorICAgICAgICAgICAgICAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnggKyBmaWx0ZXItPmJlc3Rfci0+d2lkdGggKiAwLjUpLAorICAgICAgICAgICAgICAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSk7CisKKyAgICAgICAgICAvKiBvciB1c2UgYW5vdGhlciB3YXkgdG8gc2VuZCB1cHN0cmVhbSBuYXZpZ2F0aW9uIGV2ZW50IGZvciBkZWJ1ZworICAgICAgICAgICAqCisgICAgICAgICAgICogR3N0RXZlbnQgKmV2ZW50ID0KKyAgICAgICAgICAgKiBnc3RfZXZlbnRfbmV3X25hdmlnYXRpb24gKGdzdF9zdHJ1Y3R1cmVfbmV3CisgICAgICAgICAgICogKCJhcHBsaWNhdGlvbi94LWdzdC1uYXZpZ2F0aW9uIiwgImV2ZW50IiwgR19UWVBFX1NUUklORywKKyAgICAgICAgICAgKiAibW91c2UtbW92ZSIsCisgICAgICAgICAgICogImJ1dHRvbiIsIEdfVFlQRV9JTlQsIDAsCisgICAgICAgICAgICogInBvaW50ZXJfeCIsIEdfVFlQRV9ET1VCTEUsCisgICAgICAgICAgICogKGRvdWJsZSkgKGZpbHRlci0+YmVzdF9yLT54ICsgZmlsdGVyLT5iZXN0X3ItPndpZHRoICogMC41KSwKKyAgICAgICAgICAgKiAicG9pbnRlcl95IiwgR19UWVBFX0RPVUJMRSwKKyAgICAgICAgICAgKiAoZG91YmxlKSAoZmlsdGVyLT5iZXN0X3ItPnkgKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0ICogMC41KSwKKyAgICAgICAgICAgKiBOVUxMKSk7CisgICAgICAgICAgICogZ3N0X3BhZF9zZW5kX2V2ZW50IChHU1RfQkFTRV9UUkFOU0ZPUk1fQ0FTVCAoZmlsdGVyKS0+c3JjcGFkLCBldmVudCk7CisgICAgICAgICAgICovCisjZW5kaWYKKyAgICAgICAgfQorICAgICAgICAvKiBDaGVjayBmaWx0ZXItPmRpc3BsYXksCisgICAgICAgICAqIElmIFRSVUUsIGRpc3BsYXlpbmcgcmVkIGNpcmNsZSBtYXJrZXIgaW4gdGhlIG91dCBmcmFtZSAqLworICAgICAgICBpZiAoZmlsdGVyLT5kaXNwbGF5KSB7CisgICAgICAgICAgQ3ZQb2ludCBjZW50ZXI7CisgICAgICAgICAgaW50IHJhZGl1czsKKyAgICAgICAgICBjZW50ZXIueCA9CisgICAgICAgICAgICAgIGN2Um91bmQgKChmaWx0ZXItPmJlc3Rfci0+eCArIGZpbHRlci0+YmVzdF9yLT53aWR0aCAqIDAuNSkpOworICAgICAgICAgIGNlbnRlci55ID0KKyAgICAgICAgICAgICAgY3ZSb3VuZCAoKGZpbHRlci0+YmVzdF9yLT55ICsgZmlsdGVyLT5iZXN0X3ItPmhlaWdodCAqIDAuNSkpOworICAgICAgICAgIHJhZGl1cyA9CisgICAgICAgICAgICAgIGN2Um91bmQgKChmaWx0ZXItPmJlc3Rfci0+d2lkdGggKyBmaWx0ZXItPmJlc3Rfci0+aGVpZ2h0KSAqIDAuMjUpOworICAgICAgICAgIGN2Q2lyY2xlIChpbWcsIGNlbnRlciwgcmFkaXVzLCBDVl9SR0IgKDAsIDAsIDIwMCksIDEsIDgsIDApOworICAgICAgICB9CisgICAgICB9CiAgICAgfQogICB9CiAKQEAgLTYwNiwxNyArNjEwLDE4IEBACiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAotc3RhdGljIEN2SGFhckNsYXNzaWZpZXJDYXNjYWRlICoKK3N0YXRpYyBDYXNjYWRlQ2xhc3NpZmllciAqCiBnc3RfaGFuZGRldGVjdF9sb2FkX3Byb2ZpbGUgKEdzdEhhbmRkZXRlY3QgKiBmaWx0ZXIsIGdjaGFyICogcHJvZmlsZSkKIHsKLSAgQ3ZIYWFyQ2xhc3NpZmllckNhc2NhZGUgKmNhc2NhZGU7CisgIENhc2NhZGVDbGFzc2lmaWVyICpjYXNjYWRlOwogCi0gIGlmIChwcm9maWxlID09IE5VTEwpCisgIGNhc2NhZGUgPSBuZXcgQ2FzY2FkZUNsYXNzaWZpZXIgKHByb2ZpbGUpOworICBpZiAoY2FzY2FkZS0+ZW1wdHkgKCkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChmaWx0ZXIsICJJbnZhbGlkIHByb2ZpbGUgZmlsZTogJXMiLCBwcm9maWxlKTsKKyAgICBkZWxldGUgY2FzY2FkZTsKICAgICByZXR1cm4gTlVMTDsKLSAgaWYgKCEoY2FzY2FkZSA9IChDdkhhYXJDbGFzc2lmaWVyQ2FzY2FkZSAqKSBjdkxvYWQgKHByb2ZpbGUsIDAsIDAsIDApKSkgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZmlsdGVyLCAiQ291bGRuJ3QgbG9hZCBIYWFyIGNsYXNzaWZpZXIgY2FzY2FkZTogJXMuIiwKLSAgICAgICAgcHJvZmlsZSk7CiAgIH0KKwogICByZXR1cm4gY2FzY2FkZTsKIH0KIApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RoYW5kZGV0ZWN0LmggYi9leHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaAppbmRleCAwMWEzMGJkLi4zOTMwOGM4IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaAorKysgYi9leHQvb3BlbmN2L2dzdGhhbmRkZXRlY3QuaApAQCAtNDUsOSArNDUsNyBAQAogI2lmbmRlZiBfX0dTVF9IQU5EREVURUNUX0hfXwogI2RlZmluZSBfX0dTVF9IQU5EREVURUNUX0hfXwogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotI2luY2x1ZGUgPGdzdC92aWRlby9uYXZpZ2F0aW9uLmg+CisjaW5jbHVkZSA8Y3YuaD4KIAogI2luY2x1ZGUgImdzdG9wZW5jdnZpZGVvZmlsdGVyLmgiCiAvKiBvcGVuY3YgKi8KQEAgLTgzLDIwICs4MSwxOSBAQAogICBnY2hhciAqcHJvZmlsZV9maXN0OwogICBnY2hhciAqcHJvZmlsZV9wYWxtOwogICAvKiByZWdpb24gb2YgaW50ZXJlc3QgKi8KLSAgZ3VpbnQgcm9pX3g7Ci0gIGd1aW50IHJvaV95OwotICBndWludCByb2lfd2lkdGg7Ci0gIGd1aW50IHJvaV9oZWlnaHQ7CisgIGdpbnQgcm9pX3g7CisgIGdpbnQgcm9pX3k7CisgIGdpbnQgcm9pX3dpZHRoOworICBnaW50IHJvaV9oZWlnaHQ7CiAKICAgLyogb3BlbmN2CiAgICAqIGN2R3JheSAtIGltYWdlIHRvIGdyYXkgY29sb3VyCiAgICAqLwogICBJcGxJbWFnZSAqY3ZHcmF5OwotICBDdkhhYXJDbGFzc2lmaWVyQ2FzY2FkZSAqY3ZDYXNjYWRlX2Zpc3Q7Ci0gIEN2SGFhckNsYXNzaWZpZXJDYXNjYWRlICpjdkNhc2NhZGVfcGFsbTsKLSAgQ3ZNZW1TdG9yYWdlICpjdlN0b3JhZ2U7Ci0gIEN2UmVjdCAqcHJldl9yOwotICBDdlJlY3QgKmJlc3RfcjsKKyAgY3Y6OkNhc2NhZGVDbGFzc2lmaWVyICpjdkNhc2NhZGVfZmlzdDsKKyAgY3Y6OkNhc2NhZGVDbGFzc2lmaWVyICpjdkNhc2NhZGVfcGFsbTsKKyAgY3Y6OlJlY3QgKnByZXZfcjsKKyAgY3Y6OlJlY3QgKmJlc3RfcjsKIH07CiAKIHN0cnVjdCBfR3N0SGFuZGRldGVjdENsYXNzCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmMgYi9leHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcApzaW1pbGFyaXR5IGluZGV4IDY2JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuY3BwCmluZGV4IDJkZTk5YWIuLmUxZDQxMmYgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuYworKysgYi9leHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmNwcApAQCAtMSw4ICsxLDggQEAKIC8qCi0gKiBHU3RyZWFtZXIgTW90aW9DZWxscyBkZXRlY3QgYXJlYXMgb2YgbW90aW9uCisgKiBHU3RyZWFtZXIgTW90aW9uQ2VsbHMgZGV0ZWN0IGFyZWFzIG9mIG1vdGlvbgogICogQ29weXJpZ2h0IChDKSAyMDExIFJvYmVydCBKb2JiYWd5IDxqb2JiYWd5LnJvYmVydEBnbWFpbC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTmljb2xhIE11cmlubyA8bmljb2xhLm11cmlub0BnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTUwLDcgKzUwLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoLTAuMTAgdmlkZW90ZXN0c3JjIHBhdHRlcm49MTggISB2aWRlb3JhdGUgISB2aWRlb3NjYWxlICEgdmlkZW8veC1yYXcsd2lkdGg9MzIwLGhlaWdodD0yNDAsZnJhbWVyYXRlPTUvMSAhIHZpZGVvY29udmVydCAhIG1vdGlvbmNlbGxzICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBwYXR0ZXJuPTE4ICEgdmlkZW9yYXRlICEgdmlkZW9zY2FsZSAhIHZpZGVvL3gtcmF3LHdpZHRoPTMyMCxoZWlnaHQ9MjQwLGZyYW1lcmF0ZT01LzEgISB2aWRlb2NvbnZlcnQgISBtb3Rpb25jZWxscyAhIHZpZGVvY29udmVydCAhIHh2aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNTksMTYgKzU5LDcgQEAKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN5cy90aW1lLmg+Ci0jaW5jbHVkZSA8dGltZS5oPgotI2luY2x1ZGUgPGxpbWl0cy5oPgotCi0jaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgImdzdG1vdGlvbmNlbGxzLmgiCi0jaW5jbHVkZSAibW90aW9uY2VsbHNfd3JhcHBlci5oIgotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfbW90aW9uX2NlbGxzX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9tb3Rpb25fY2VsbHNfZGVidWcKQEAgLTE1MCw3ICsxNDEsNyBAQAogICAgIEdTVF9QQURfQUxXQVlTLAogICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIlJHQiIpKSk7CiAKLUdfREVGSU5FX1RZUEUgKEdzdE1vdGlvbmNlbGxzLCBnc3RfbW90aW9uX2NlbGxzLCBHU1RfVFlQRV9FTEVNRU5UKTsKK0dfREVGSU5FX1RZUEUgKEdzdE1vdGlvbmNlbGxzLCBnc3RfbW90aW9uX2NlbGxzLCBHU1RfVFlQRV9PUEVOQ1ZfVklERU9fRklMVEVSKTsKIAogc3RhdGljIHZvaWQgZ3N0X21vdGlvbl9jZWxsc19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CkBAIC0xNTksOCArMTUwLDggQEAKIAogc3RhdGljIGdib29sZWFuIGdzdF9tb3Rpb25fY2VsbHNfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKICAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X21vdGlvbl9jZWxsc19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgR3N0QnVmZmVyICogYnVmKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9tb3Rpb25fY2VsbHNfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqCisgICAgZmlsdGVyLCBHc3RCdWZmZXIgKiBidWYsIElwbEltYWdlICogaW1nKTsKIAogc3RhdGljIHZvaWQgZ3N0X21vdGlvbmNlbGxzX3VwZGF0ZV9tb3Rpb25fY2VsbHMgKEdzdE1vdGlvbmNlbGxzICogZmlsdGVyKTsKIHN0YXRpYyB2b2lkIGdzdF9tb3Rpb25jZWxsc191cGRhdGVfbW90aW9uX21hc2tzIChHc3RNb3Rpb25jZWxscyAqIGZpbHRlcik7CkBAIC0xODUsMTAgKzE3Niw2IEBACiAgICAgR0ZSRUUgKGZpbHRlci0+bW90aW9uY2VsbHNpZHgpOwogICB9CiAKLSAgaWYgKGZpbHRlci0+Y3ZJbWFnZSkgewotICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkltYWdlKTsKLSAgfQotCiAgIEdGUkVFIChmaWx0ZXItPm1vdGlvbmNlbGxzY29sb3IpOwogICBHRlJFRSAoZmlsdGVyLT5wcmV2X2RhdGFmaWxlKTsKICAgR0ZSRUUgKGZpbHRlci0+Y3VyX2RhdGFmaWxlKTsKQEAgLTIwMywxMDYgKzE5MCwxMTcgQEAKIGdzdF9tb3Rpb25fY2VsbHNfY2xhc3NfaW5pdCAoR3N0TW90aW9uY2VsbHNDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKmdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3M7CiAKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MgPSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqKSBrbGFzczsKIAogICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbW90aW9uX2NlbGxzX2ZpbmFsaXplKTsKICAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X21vdGlvbl9jZWxsc19zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9tb3Rpb25fY2VsbHNfZ2V0X3Byb3BlcnR5OwogCisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MtPmN2X3RyYW5zX2lwX2Z1bmMgPSBnc3RfbW90aW9uX2NlbGxzX3RyYW5zZm9ybV9pcDsKKwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0dSSURfWCwKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJncmlkeCIsICJOdW1iZXIgb2YgSG9yaXpvbnRhbCBHcmlkcyIsCi0gICAgICAgICAgIllvdSBjYW4gZ2l2ZSBudW1iZXIgb2YgaG9yaXpvbnRhbCBncmlkIGNlbGxzLiIsIEdSSURfTUlOLCBHUklEX01BWCwKLSAgICAgICAgICBHUklEX0RFRiwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgIk51bWJlciBvZiBob3Jpem9udGFsIGdyaWQgY2VsbHMuIiwgR1JJRF9NSU4sIEdSSURfTUFYLAorICAgICAgICAgIEdSSURfREVGLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9HUklEX1ksCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiZ3JpZHkiLCAiTnVtYmVyIG9mIFZlcnRpY2FsIEdyaWRzIiwKLSAgICAgICAgICAiWW91IGNhbiBnaXZlIG51bWJlciBvZiB2ZXJ0aWNhbCBncmlkIGNlbGxzLiIsIEdSSURfTUlOLCBHUklEX01BWCwKLSAgICAgICAgICBHUklEX0RFRiwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgIk51bWJlciBvZiB2ZXJ0aWNhbCBncmlkIGNlbGxzLiIsIEdSSURfTUlOLCBHUklEX01BWCwKKyAgICAgICAgICBHUklEX0RFRiwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0VOU0lUSVZJVFksCiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgic2Vuc2l0aXZpdHkiLCAiTW90aW9uIFNlbnNpdGl2aXR5IiwKLSAgICAgICAgICAiWW91IGNhbiB0dW5uaW5nIHRoZSBlbGVtZW50IG1vdGlvbiBzZW5zaXRpdml0eS4iLCBTRU5TSVRJVklUWV9NSU4sCisgICAgICAgICAgIk1vdGlvbiBkZXRlY3Rpb24gc2Vuc2l0aXZpdHkuIiwgU0VOU0lUSVZJVFlfTUlOLAogICAgICAgICAgIFNFTlNJVElWSVRZX01BWCwgU0VOU0lUSVZJVFlfREVGQVVMVCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVEhSRVNIT0xELAogICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoInRocmVzaG9sZCIsICJMb3dlciBib3VuZCBvZiBtb3Rpb24gY2VsbHMgbnVtYmVyIiwKLSAgICAgICAgICAiVGhyZXNob2xkIHZhbHVlIGZvciBtb3Rpb24sIHdoZW4gbW90aW9uIGNlbGxzIG51bWJlciBncmVhdGVyIHN1bSBjZWxscyAqIHRocmVzaG9sZCwgd2Ugc2hvdyBtb3Rpb24uIiwKKyAgICAgICAgICAiVGhyZXNob2xkIHZhbHVlIGZvciBtb3Rpb24uIEZpbHRlciBkZXRlY3RzIG1vdGlvbiB3aGVuIGF0IGxlYXN0ICIKKyAgICAgICAgICAidGhpcyBmcmFjdGlvbiBvZiB0aGUgY2VsbHMgaGF2ZSBtb3ZlZCIsCiAgICAgICAgICAgVEhSRVNIT0xEX01JTiwgVEhSRVNIT0xEX01BWCwgVEhSRVNIT0xEX0RFRkFVTFQsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0dBUCwKLSAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJnYXAiLAotICAgICAgICAgICJHYXAgaXMgdGltZSBpbiBzZWNvbmQsIGVsYXBzZWQgdGltZSBmcm9tIGxhc3QgbW90aW9uIHRpbWVzdGFtcC4gIiwKLSAgICAgICAgICAiSWYgZWxhcHNlZCB0aW1lIG1pbnVzIGZvcm0gbGFzdCBtb3Rpb24gdGltZXN0YW1wIGlzIGdyZWF0ZXIgb3IgZXF1YWwgdGhhbiBnYXAgdGhlbiB3ZSBwb3N0IG1vdGlvbiBmaW5pc2hlZCBidXMgbWVzc2FnZS4gIiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJnYXAiLCAiTW90aW9uLWZpbmlzaGVkIFRocmVzaG9sZCIsCisgICAgICAgICAgIkludGVydmFsIGluIHNlY29uZHMgYWZ0ZXIgd2hpY2ggbW90aW9uIGlzIGNvbnNpZGVyZWQgZmluaXNoZWQgIgorICAgICAgICAgICJhbmQgYSBtb3Rpb24gZmluaXNoZWQgYnVzIG1lc3NhZ2UgaXMgcG9zdGVkLiIsCiAgICAgICAgICAgR0FQX01JTiwgR0FQX01BWCwgR0FQX0RFRiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfUE9TVE5PTU9USU9OLAotICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInBvc3Rub21vdGlvbiIsICJQT1NUTk9NT1RJT04iLAotICAgICAgICAgICJJZiBub24gMCBwb3N0IGEgbm9fbW90aW9uIGV2ZW50IGlzIHBvc3RlZCBvbiB0aGUgYnVzIGlmIG5vIG1vdGlvbiBpcyBkZXRlY3RlZCBmb3IgTiBzZWNvbmRzIiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJwb3N0bm9tb3Rpb24iLCAiTm8tbW90aW9uIFRocmVzaG9sZCIsCisgICAgICAgICAgIklmIG5vbiAwLCBwb3N0IGEgbm9fbW90aW9uIGV2ZW50IG9uIHRoZSBidXMgaWYgbm8gbW90aW9uIGlzICIKKyAgICAgICAgICAiZGV0ZWN0ZWQgZm9yIHRoZSBnaXZlbiBudW1iZXIgb2Ygc2Vjb25kcyIsCiAgICAgICAgICAgUE9TVF9OT19NT1RJT05fTUlOLCBQT1NUX05PX01PVElPTl9NQVgsIFBPU1RfTk9fTU9USU9OX0RFRiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUlOSU1VTk1PVElPTkZSQU1FUywKLSAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJtaW5pbXVtbW90aW9uZnJhbWVzIiwgIk1JTklNVU4gTU9USU9OIEZSQU1FUyIsCi0gICAgICAgICAgIkRlZmluZSB0aGUgbWluaW11bSBudW1iZXIgb2YgbW90aW9uIGZyYW1lcyB0aGF0IHRyaWdnZXIgYSBtb3Rpb24gZXZlbnQiLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm1pbmltdW1tb3Rpb25mcmFtZXMiLCAiTWluaW11bSBNb3Rpb24gRnJhbWVzIiwKKyAgICAgICAgICAiTWluaW11bSBudW1iZXIgb2YgbW90aW9uIGZyYW1lcyB0cmlnZ2VyaW5nIGEgbW90aW9uIGV2ZW50IiwKICAgICAgICAgICBNSU5JTVVNX01PVElPTl9GUkFNRVNfTUlOLCBNSU5JTVVNX01PVElPTl9GUkFNRVNfTUFYLAogICAgICAgICAgIE1JTklNVU1fTU9USU9OX0ZSQU1FU19ERUYsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0RJU1BMQVksCiAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImRpc3BsYXkiLCAiRGlzcGxheSIsCi0gICAgICAgICAgIk1vdGlvbiBDZWxscyB2aXNpYmxlIG9yIG5vdCBvbiBDdXJyZW50IEZyYW1lIiwgRkFMU0UsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgIlRvZ2dsZSBkaXNwbGF5IG9mIG1vdGlvbiBjZWxscyBvbiBjdXJyZW50IGZyYW1lIiwgRkFMU0UsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1BPU1RBTExNT1RJT04sCiAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoInBvc3RhbGxtb3Rpb24iLCAiUG9zdCBBbGwgTW90aW9uIiwKLSAgICAgICAgICAiRWxlbWVudCBwb3N0IGJ1cyBtc2cgZm9yIGV2ZXJ5IG1vdGlvbiBmcmFtZSBvciBqdXN0IG1vdGlvbiBzdGFydCBhbmQgbW90aW9uIHN0b3AiLAotICAgICAgICAgIEZBTFNFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiUG9zdCBidXMgbWVzc2FnZXMgZm9yIGV2ZXJ5IG1vdGlvbiBmcmFtZSBvciBqdXN0IG1vdGlvbiBzdGFydCBhbmQgIgorICAgICAgICAgICJtb3Rpb24gc3RvcCIsCisgICAgICAgICAgRkFMU0UsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9VU0VBTFBIQSwKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgidXNlYWxwaGEiLCAiVXNlIGFscGhhIiwKLSAgICAgICAgICAiVXNlIG9yIG5vdCBhbHBoYSBibGVuZGluZyBvbiBmcmFtZXMgd2l0aCBtb3Rpb24gY2VsbHMiLCBUUlVFLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgICJUb2dnbGUgdXNhZ2Ugb2YgYWxwaGEgYmxlbmRpbmcgb24gZnJhbWVzIHdpdGggbW90aW9uIGNlbGxzIiwgVFJVRSwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAjaWYgMAogICAvKiBGSVhNRTogc2hvdWxkIG5vdCBiZSBhIGxvbmcgcHJvcGVydHksIG1ha2UgaXQgZWl0aGVyIGdpbnQgb3IgZ2ludDY0CiAgICAqIChpcyB0aGlzIHByb3BlcnR5IGFjdHVhbGx5IHVzZWQgb3IgdXNlZnVsIGZvciBhbnl0aGluZz8pICovCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfREFURSwKICAgICAgIGdfcGFyYW1fc3BlY19sb25nICgiZGF0ZSIsICJNb3Rpb24gQ2VsbCBEYXRlIiwKICAgICAgICAgICAiQ3VycmVudCBEYXRlIGluIG1pbGxpc2Vjb25kcyIsIERBVEVfTUlOLCBEQVRFX01BWCwgREFURV9ERUYsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogI2VuZGlmCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfREFUQUZJTEUsCiAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgiZGF0YWZpbGUiLCAiRGF0YUZpbGUiLAogICAgICAgICAgICJMb2NhdGlvbiBvZiBtb3Rpb25jZWxscyBkYXRhIGZpbGUgKGVtcHR5IHN0cmluZyBtZWFucyBubyBzYXZpbmcpIiwKLSAgICAgICAgICBOVUxMLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBOVUxMLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfREFUQUZJTEVfRVhULAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoImRhdGFmaWxlZXh0ZW5zaW9uIiwgIkRhdGFGaWxlIEV4dGVuc2lvbiIsCiAgICAgICAgICAgIkV4dGVuc2lvbiBvZiBkYXRhZmlsZSIsIERFRl9EQVRBRklMRUVYVCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTU9USU9OTUFTS0NPT1JELAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoIm1vdGlvbm1hc2tjb29yZHMiLCAiTW90aW9uIE1hc2sgd2l0aCBDb29yZGluYXRlcyIsCi0gICAgICAgICAgIlRoZSB1cHBlciBsZWZ0IHgsIHkgYW5kIGxvd2VyIHJpZ2h0IHgsIHkgY29vcmRpbmF0ZXMgc2VwYXJhdGVkIHdpdGggXCI6XCIsICIKLSAgICAgICAgICAiZGVzY3JpYmUgYSByZWdpb24uIFJlZ2lvbnMgc2VwYXJhdGVkIHdpdGggXCIsXCIiLCBOVUxMLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgICJEZXNjcmliZSBhIHJlZ2lvbiB3aXRoIGl0cyB1cHBlciBsZWZ0IGFuZCBsb3dlciByaWdodCB4LCB5ICIKKyAgICAgICAgICAiY29vcmRpbmF0ZXMgc2VwYXJhdGVkIHdpdGggXCI6XCIuIFBhc3MgbXVsdGlwbGUgcmVnaW9ucyBhcyBhICIKKyAgICAgICAgICAiY29tbWEtc2VwYXJhdGVkIGxpc3QiLCBOVUxMLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NT1RJT05NQVNLQ0VMTFNQT1MsCiAgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgibW90aW9ubWFza2NlbGxzcG9zIiwKICAgICAgICAgICAiTW90aW9uIE1hc2sgd2l0aCBDZWxscyBQb3NpdGlvbiIsCi0gICAgICAgICAgIlRoZSBsaW5lIGFuZCBjb2x1bW4gaWR4IHNlcGFyYXRlZCB3aXRoIFwiOlwiIHdoYXQgY2VsbHMgd2FudCB3ZSBtYXNrLW91dCwgIgotICAgICAgICAgICJkZXNjcmliZSBhIGNlbGwuIENlbGxzIHNlcGFyYXRlZCB3aXRoIFwiLFwiIiwgTlVMTCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiRGVzY3JpYmUgYSBjZWxsIHdpdGggaXRzIGxpbmUgYW5kIGNvbHVtbiBpZHggc2VwYXJhdGVkIHdpdGggXCI6XCIuICIKKyAgICAgICAgICAiUGFzcyBtdWx0aXBsZSBjZWxscyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IiwgTlVMTCwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ0VMTFNDT0xPUiwKICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJjZWxsc2NvbG9yIiwgIkNvbG9yIG9mIE1vdGlvbiBDZWxscyIsCi0gICAgICAgICAgIlRoZSBjb2xvciBvZiBtb3Rpb24gY2VsbHMgc2VwYXJhdGVkIHdpdGggXCIsXCIiLCAiMjU1LDI1NSwwIiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiQ29sb3IgZm9yIG1vdGlvbiBjZWxscyBpbiBSLEcsQiBmb3JtYXQuIE1heCBwZXIgY2hhbm5lbCBpcyAyNTUiLAorICAgICAgICAgICIyNTUsMjU1LDAiLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NT1RJT05DRUxMU0lEWCwKICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJtb3Rpb25jZWxsc2lkeCIsICJNb3Rpb24gQ2VsbHMgT2YgSW50ZXJlc3QoTU9DSSkiLAotICAgICAgICAgICJUaGUgbGluZSBhbmQgY29sdW1uIGlkeCBzZXBhcmF0ZWQgd2l0aCBcIjpcIiwgIgotICAgICAgICAgICJkZXNjcmliZSBhIGNlbGwuIENlbGxzIHNlcGFyYXRlZCB3aXRoIFwiLFwiIiwgTlVMTCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiRGVzY3JpYmUgYSBjZWxsIHdpdGggaXRzIGxpbmUgYW5kIGNvbHVtbiBpZHggc2VwYXJhdGVkIHdpdGggXCI6XCIuICIKKyAgICAgICAgICAiUGFzcyBtdWx0aXBsZSBjZWxscyBhcyBhIGNvbW1hLXNlcGFyYXRlZCBsaXN0IiwgTlVMTCwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ0FMQ1VMQVRFTU9USU9OLAogICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJjYWxjdWxhdGVtb3Rpb24iLCAiQ2FsY3VsYXRlIE1vdGlvbiIsCi0gICAgICAgICAgIklmIG5lZWRzIGNhbGN1bGF0ZSBtb3Rpb24gb24gZnJhbWUgeW91IG5lZWQgdGhpcyBwcm9wZXJ0eSBzZXR0aW5nIHRydWUgb3RoZXJ3aXNlIGZhbHNlIiwKLSAgICAgICAgICBUUlVFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICAiVG9nZ2xlcyBtb3Rpb24gY2FsY3VsYXRpb24uIElmIEZBTFNFLCB0aGlzIGZpbHRlciBkb2VzIG5vdGhpbmciLAorICAgICAgICAgIFRSVUUsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NT1RJT05DRUxMVEhJQ0tORVNTLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm1vdGlvbmNlbGx0aGlja25lc3MiLCAiTW90aW9uIENlbGwgVGhpY2tuZXNzIiwKLSAgICAgICAgICAiTW90aW9uIENlbGwgQm9yZGVyIFRoaWNrbmVzcywgaWYgaXQncyAtMSB0aGVuIG1vdGlvbiBjZWxsIHdpbGwgYmUgZmlsbCIsCisgICAgICAgICAgIk1vdGlvbiBDZWxsIEJvcmRlciBUaGlja25lc3MuIFNldCB0byAtMSB0byBmaWxsIG1vdGlvbiBjZWxsIiwKICAgICAgICAgICBUSElDS05FU1NfTUlOLCBUSElDS05FU1NfTUFYLCBUSElDS05FU1NfREVGLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgIm1vdGlvbmNlbGxzIiwKQEAgLTMyNCwxOSArMzIyLDggQEAKIHN0YXRpYyB2b2lkCiBnc3RfbW90aW9uX2NlbGxzX2luaXQgKEdzdE1vdGlvbmNlbGxzICogZmlsdGVyKQogewotICBmaWx0ZXItPnNpbmtwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNpbmtfZmFjdG9yeSwgInNpbmsiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zaW5rcGFkKTsKLQotICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZmlsdGVyLT5zaW5rcGFkLAorICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoR1NUX0JBU0VfVFJBTlNGT1JNX1NJTktfUEFEIChmaWx0ZXIpLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9tb3Rpb25fY2VsbHNfaGFuZGxlX3NpbmtfZXZlbnQpKTsKLSAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGZpbHRlci0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbW90aW9uX2NlbGxzX2NoYWluKSk7Ci0KLSAgZmlsdGVyLT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNyY19mYWN0b3J5LCAic3JjIik7Ci0gIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKGZpbHRlci0+c3JjcGFkKTsKLQotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zaW5rcGFkKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZpbHRlciksIGZpbHRlci0+c3JjcGFkKTsKIAogICBmaWx0ZXItPmRpc3BsYXkgPSBUUlVFOwogICBmaWx0ZXItPmNhbGN1bGF0ZV9tb3Rpb24gPSBUUlVFOwpAQCAtMzQ5LDkgKzMzNiw5IEBACiAgIGZpbHRlci0+cG9zdG5vbW90aW9uID0gUE9TVF9OT19NT1RJT05fREVGOwogICBmaWx0ZXItPm1pbmltdW1fbW90aW9uX2ZyYW1lcyA9IE1JTklNVU1fTU9USU9OX0ZSQU1FU19ERUY7CiAKLSAgZmlsdGVyLT5wcmV2X2RhdGFmaWxlID0gZ19zdHJkdXAgKE5VTEwpOwotICBmaWx0ZXItPmN1cl9kYXRhZmlsZSA9IGdfc3RyZHVwIChOVUxMKTsKLSAgZmlsdGVyLT5iYXNlbmFtZV9kYXRhZmlsZSA9IGdfc3RyZHVwIChOVUxMKTsKKyAgZmlsdGVyLT5wcmV2X2RhdGFmaWxlID0gTlVMTDsKKyAgZmlsdGVyLT5jdXJfZGF0YWZpbGUgPSBOVUxMOworICBmaWx0ZXItPmJhc2VuYW1lX2RhdGFmaWxlID0gTlVMTDsKICAgZmlsdGVyLT5kYXRhZmlsZV9leHRlbnNpb24gPSBnX3N0cmR1cCAoREVGX0RBVEFGSUxFRVhUKTsKICAgZmlsdGVyLT5zZW5zaXRpdml0eSA9IFNFTlNJVElWSVRZX0RFRkFVTFQ7CiAgIGZpbHRlci0+dGhyZXNob2xkID0gVEhSRVNIT0xEX0RFRkFVTFQ7CkBAIC0zOTQsNiArMzgxLDggQEAKICAgZmlsdGVyLT5kYXRhZmlsZWlkeCA9IDA7CiAgIGZpbHRlci0+aWQgPSBtb3Rpb25fY2VsbHNfaW5pdCAoKTsKIAorICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBUUlVFKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTQ2Nyw3ICs0NTYsNyBAQAogICAgICAgZmlsdGVyLT5iYXNlbmFtZV9kYXRhZmlsZSA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOwogCiAgICAgICBpZiAoc3RybGVuIChmaWx0ZXItPmJhc2VuYW1lX2RhdGFmaWxlKSA9PSAwKSB7Ci0gICAgICAgIGZpbHRlci0+Y3VyX2RhdGFmaWxlID0gZ19zdHJkdXAgKE5VTEwpOworICAgICAgICBmaWx0ZXItPmN1cl9kYXRhZmlsZSA9IE5VTEw7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgICAgZmlsdGVyLT5jdXJfZGF0YWZpbGUgPQpAQCAtNTE4LDggKzUwNyw3IEBACiAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRfY291bnQgPSAwOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBpZiAoc3RycykKLSAgICAgICAgZ19zdHJmcmVldiAoc3Rycyk7CisgICAgICBnX3N0cmZyZWV2IChzdHJzKTsKICAgICAgIHRtcHV4ID0gLTE7CiAgICAgICB0bXB1eSA9IC0xOwogICAgICAgdG1wbHggPSAtMTsKQEAgLTU0NiwxOCArNTM0LDIwIEBACiAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNfY291bnQgPSAwOwogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBpZiAobW90aW9ubWFza2NlbGxzc3RyKQotICAgICAgICBnX3N0cmZyZWV2IChtb3Rpb25tYXNrY2VsbHNzdHIpOworICAgICAgZ19zdHJmcmVldiAobW90aW9ubWFza2NlbGxzc3RyKTsKICAgICAgIHRtcHV4ID0gLTE7CiAgICAgICB0bXB1eSA9IC0xOwogICAgICAgdG1wbHggPSAtMTsKICAgICAgIHRtcGx5ID0gLTE7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfQ0VMTFNDT0xPUjoKLSAgICAgIGNvbG9yc3RyID0gZ19zdHJzcGxpdCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSksICIsIiwgMjU1KTsKKyAgICAgIGNvbG9yc3RyID0gZ19zdHJzcGxpdCAoZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSksICIsIiwgNCk7CiAgICAgICBmb3IgKGNlbGxzY29sb3JzY250ID0gMDsgY29sb3JzdHJbY2VsbHNjb2xvcnNjbnRdICE9IE5VTEw7CiAgICAgICAgICAgKytjZWxsc2NvbG9yc2NudCk7Ci0gICAgICBpZiAoY2VsbHNjb2xvcnNjbnQgPT0gMykgeworICAgICAgaWYgKGNlbGxzY29sb3JzY250ICE9IDMpIHsKKyAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChmaWx0ZXIsICJJZ25vcmluZyBiYWRseS1mb3JtYXR0ZWQgY2VsbHNjb2xvciBSR0IgIgorICAgICAgICAgICAgInN0cmluZyIpOworICAgICAgfSBlbHNlIHsKICAgICAgICAgc3NjYW5mIChjb2xvcnN0clswXSwgIiVkIiwgJnIpOwogICAgICAgICBzc2NhbmYgKGNvbG9yc3RyWzFdLCAiJWQiLCAmZyk7CiAgICAgICAgIHNzY2FuZiAoY29sb3JzdHJbMl0sICIlZCIsICZiKTsKQEAgLTU2OSw4ICs1NTksNyBAQAogICAgICAgICBmaWx0ZXItPm1vdGlvbmNlbGxzY29sb3ItPkdfY2hhbm5lbF92YWx1ZSA9IGc7CiAgICAgICAgIGZpbHRlci0+bW90aW9uY2VsbHNjb2xvci0+Ql9jaGFubmVsX3ZhbHVlID0gYjsKICAgICAgIH0KLSAgICAgIGlmIChjb2xvcnN0cikKLSAgICAgICAgZ19zdHJmcmVldiAoY29sb3JzdHIpOworICAgICAgZ19zdHJmcmVldiAoY29sb3JzdHIpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX01PVElPTkNFTExTSURYOgogICAgICAgbW90aW9uY2VsbHNzdHIgPSBnX3N0cnNwbGl0IChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSwgIiwiLCAyNTUpOwpAQCAtNTk2LDggKzU4NSw3IEBACiAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25jZWxsc19jb3VudCA9IDA7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGlmIChtb3Rpb25jZWxsc3N0cikKLSAgICAgICAgZ19zdHJmcmVldiAobW90aW9uY2VsbHNzdHIpOworICAgICAgZ19zdHJmcmVldiAobW90aW9uY2VsbHNzdHIpOwogICAgICAgdG1wdXggPSAtMTsKICAgICAgIHRtcHV5ID0gLTE7CiAgICAgICB0bXBseCA9IC0xOwpAQCAtODM0LDExICs4MjIsNiBAQAogICAgICAgZmlsdGVyLT5oZWlnaHQgPSBpbmZvLmhlaWdodDsKIAogICAgICAgZmlsdGVyLT5mcmFtZXJhdGUgPSAoZG91YmxlKSBpbmZvLmZwc19uIC8gKGRvdWJsZSkgaW5mby5mcHNfZDsKLSAgICAgIGlmIChmaWx0ZXItPmN2SW1hZ2UpCi0gICAgICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkltYWdlKTsKLSAgICAgIGZpbHRlci0+Y3ZJbWFnZSA9Ci0gICAgICAgICAgY3ZDcmVhdGVJbWFnZSAoY3ZTaXplIChmaWx0ZXItPndpZHRoLCBmaWx0ZXItPmhlaWdodCksIElQTF9ERVBUSF84VSwKLSAgICAgICAgICAzKTsKICAgICAgIGJyZWFrOwogICAgIH0KICAgICBkZWZhdWx0OgpAQCAtODQ4LDE5ICs4MzEsMTcgQEAKICAgcmVzID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOwogCiAgIHJldHVybiByZXM7Ci0KLQogfQogCiAvKiBjaGFpbiBmdW5jdGlvbgogICogdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1YWwgcHJvY2Vzc2luZwogICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X21vdGlvbl9jZWxsc19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKK2dzdF9tb3Rpb25fY2VsbHNfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGJhc2UsIEdzdEJ1ZmZlciAqIGJ1ZiwKKyAgICBJcGxJbWFnZSAqIGltZykKIHsKLSAgR3N0TW90aW9uY2VsbHMgKmZpbHRlcjsKLSAgR3N0TWFwSW5mbyBpbmZvOwotICBmaWx0ZXIgPSBnc3RfbW90aW9uX2NlbGxzIChwYXJlbnQpOworICBHc3RNb3Rpb25jZWxscyAqZmlsdGVyID0gZ3N0X21vdGlvbl9jZWxscyAoYmFzZSk7CisKICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXIpOwogICBpZiAoZmlsdGVyLT5jYWxjdWxhdGVfbW90aW9uKSB7CiAgICAgZG91YmxlIHNlbnNpdGl2aXR5OwpAQCAtODY4LDggKzg0OSw4IEBACiAgICAgICAgIG1vdGlvbmNlbGxzX2NvdW50LCBpOwogICAgIGludCB0aGlja25lc3MsIHN1Y2Nlc3MsIG1vdGlvbmNlbGxzaWR4Y250LCBudW1iZXJPZkNlbGxzLAogICAgICAgICBtb3Rpb25jZWxsc251bWJlciwgY2VsbHNPZkludGVyZXN0TnVtYmVyOwotICAgIGludCBtaW5jZWxsc09mSW50ZXJlc3ROdW1iZXIsIG1vdGlvbmRldGVjdCwgbWluaW11bV9tb3Rpb25fZnJhbWVzLAotICAgICAgICBwb3N0bm9tb3Rpb247CisgICAgaW50IG1pbmNlbGxzT2ZJbnRlcmVzdE51bWJlciwgbW90aW9uZGV0ZWN0OworICAgIHVpbnQgbWluaW11bV9tb3Rpb25fZnJhbWVzLCBwb3N0bm9tb3Rpb247CiAgICAgY2hhciAqZGF0YWZpbGU7CiAgICAgYm9vbCBkaXNwbGF5LCBjaGFuZ2VkX2RhdGFmaWxlLCB1c2VBbHBoYTsKICAgICBnaW50NjQgc3RhcnR0aW1lOwpAQCAtODc5LDIzMCArODYwLDIzNSBAQAogICAgIG1vdGlvbmNlbGxpZHggKm1vdGlvbmNlbGxzaWR4OwogCiAgICAgYnVmID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChidWYpOwotICAgIGlmIChnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mbywgR1NUX01BUF9XUklURSkpIHsKLSAgICAgIGZpbHRlci0+Y3ZJbWFnZS0+aW1hZ2VEYXRhID0gKGNoYXIgKikgaW5mby5kYXRhOwotICAgICAgaWYgKGZpbHRlci0+Zmlyc3RmcmFtZSkgewotICAgICAgICBzZXRQcmV2RnJhbWUgKGZpbHRlci0+Y3ZJbWFnZSwgZmlsdGVyLT5pZCk7Ci0gICAgICAgIGZpbHRlci0+Zmlyc3RmcmFtZSA9IEZBTFNFOwotICAgICAgfQotICAgICAgbWluaW11bV9tb3Rpb25fZnJhbWVzID0gZmlsdGVyLT5taW5pbXVtX21vdGlvbl9mcmFtZXM7Ci0gICAgICBwb3N0bm9tb3Rpb24gPSBmaWx0ZXItPnBvc3Rub21vdGlvbjsKLSAgICAgIHNlbnNpdGl2aXR5ID0gZmlsdGVyLT5zZW5zaXRpdml0eTsKLSAgICAgIGZyYW1lcmF0ZSA9IGZpbHRlci0+ZnJhbWVyYXRlOwotICAgICAgZ3JpZHggPSBmaWx0ZXItPmdyaWR4OwotICAgICAgZ3JpZHkgPSBmaWx0ZXItPmdyaWR5OwotICAgICAgZGlzcGxheSA9IGZpbHRlci0+ZGlzcGxheTsKLSAgICAgIG1vdGlvbm1hc2tjb29yZF9jb3VudCA9IGZpbHRlci0+bW90aW9ubWFza2Nvb3JkX2NvdW50OwotICAgICAgbW90aW9ubWFza2Nvb3JkcyA9Ci0gICAgICAgICAgZ19uZXcwIChtb3Rpb25tYXNrY29vcmRyZWN0LCBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZF9jb3VudCk7Ci0gICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRfY291bnQ7IGkrKykgeyAgICAgLy93ZSBuZWVkIGRpdmlkZSAyIGJlY2F1c2Ugd2UgdXNlIGdhdXNzIHB5cmFtaWQgaW4gQysrIHNpZGUKLSAgICAgICAgbW90aW9ubWFza2Nvb3Jkc1tpXS51cHBlcl9sZWZ0X3ggPQotICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLnVwcGVyX2xlZnRfeCAvIDI7Ci0gICAgICAgIG1vdGlvbm1hc2tjb29yZHNbaV0udXBwZXJfbGVmdF95ID0KLSAgICAgICAgICAgIGZpbHRlci0+bW90aW9ubWFza2Nvb3Jkc1tpXS51cHBlcl9sZWZ0X3kgLyAyOwotICAgICAgICBtb3Rpb25tYXNrY29vcmRzW2ldLmxvd2VyX3JpZ2h0X3ggPQotICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLmxvd2VyX3JpZ2h0X3ggLyAyOwotICAgICAgICBtb3Rpb25tYXNrY29vcmRzW2ldLmxvd2VyX3JpZ2h0X3kgPQotICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLmxvd2VyX3JpZ2h0X3kgLyAyOwotICAgICAgfQorICAgIGlmIChmaWx0ZXItPmZpcnN0ZnJhbWUpIHsKKyAgICAgIHNldFByZXZGcmFtZSAoaW1nLCBmaWx0ZXItPmlkKTsKKyAgICAgIGZpbHRlci0+Zmlyc3RmcmFtZSA9IEZBTFNFOworICAgIH0KIAotICAgICAgbW90aW9uY2VsbHNjb2xvci5SX2NoYW5uZWxfdmFsdWUgPQotICAgICAgICAgIGZpbHRlci0+bW90aW9uY2VsbHNjb2xvci0+Ul9jaGFubmVsX3ZhbHVlOwotICAgICAgbW90aW9uY2VsbHNjb2xvci5HX2NoYW5uZWxfdmFsdWUgPQotICAgICAgICAgIGZpbHRlci0+bW90aW9uY2VsbHNjb2xvci0+R19jaGFubmVsX3ZhbHVlOwotICAgICAgbW90aW9uY2VsbHNjb2xvci5CX2NoYW5uZWxfdmFsdWUgPQotICAgICAgICAgIGZpbHRlci0+bW90aW9uY2VsbHNjb2xvci0+Ql9jaGFubmVsX3ZhbHVlOworICAgIG1pbmltdW1fbW90aW9uX2ZyYW1lcyA9IGZpbHRlci0+bWluaW11bV9tb3Rpb25fZnJhbWVzOworICAgIHBvc3Rub21vdGlvbiA9IGZpbHRlci0+cG9zdG5vbW90aW9uOworICAgIHNlbnNpdGl2aXR5ID0gZmlsdGVyLT5zZW5zaXRpdml0eTsKKyAgICBmcmFtZXJhdGUgPSBmaWx0ZXItPmZyYW1lcmF0ZTsKKyAgICBncmlkeCA9IGZpbHRlci0+Z3JpZHg7CisgICAgZ3JpZHkgPSBmaWx0ZXItPmdyaWR5OworICAgIGRpc3BsYXkgPSBmaWx0ZXItPmRpc3BsYXk7CisgICAgbW90aW9ubWFza2Nvb3JkX2NvdW50ID0gZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRfY291bnQ7CisgICAgbW90aW9ubWFza2Nvb3JkcyA9CisgICAgICAgIGdfbmV3MCAobW90aW9ubWFza2Nvb3JkcmVjdCwgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRfY291bnQpOworICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXItPm1vdGlvbm1hc2tjb29yZF9jb3VudDsgaSsrKSB7ICAgICAgIC8vd2UgbmVlZCBkaXZpZGUgMiBiZWNhdXNlIHdlIHVzZSBnYXVzcyBweXJhbWlkIGluIEMrKyBzaWRlCisgICAgICBtb3Rpb25tYXNrY29vcmRzW2ldLnVwcGVyX2xlZnRfeCA9CisgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLnVwcGVyX2xlZnRfeCAvIDI7CisgICAgICBtb3Rpb25tYXNrY29vcmRzW2ldLnVwcGVyX2xlZnRfeSA9CisgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLnVwcGVyX2xlZnRfeSAvIDI7CisgICAgICBtb3Rpb25tYXNrY29vcmRzW2ldLmxvd2VyX3JpZ2h0X3ggPQorICAgICAgICAgIGZpbHRlci0+bW90aW9ubWFza2Nvb3Jkc1tpXS5sb3dlcl9yaWdodF94IC8gMjsKKyAgICAgIG1vdGlvbm1hc2tjb29yZHNbaV0ubG93ZXJfcmlnaHRfeSA9CisgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY29vcmRzW2ldLmxvd2VyX3JpZ2h0X3kgLyAyOworICAgIH0KIAotICAgICAgaWYgKChmaWx0ZXItPmNoYW5nZWRfZ3JpZHggfHwgZmlsdGVyLT5jaGFuZ2VkX2dyaWR5Ci0gICAgICAgICAgICAgIHx8IGZpbHRlci0+Y2hhbmdlZF9zdGFydGltZSkpIHsKLSAgICAgICAgaWYgKChnX3N0cmNtcDAgKGZpbHRlci0+Y3VyX2RhdGFmaWxlLCBOVUxMKSAhPSAwKSkgewotICAgICAgICAgIEdGUkVFIChmaWx0ZXItPmN1cl9kYXRhZmlsZSk7Ci0gICAgICAgICAgZmlsdGVyLT5kYXRhZmlsZWlkeCsrOwotICAgICAgICAgIGZpbHRlci0+Y3VyX2RhdGFmaWxlID0KLSAgICAgICAgICAgICAgZ19zdHJkdXBfcHJpbnRmICgiJXMtJWQuJXMiLCBmaWx0ZXItPmJhc2VuYW1lX2RhdGFmaWxlLAotICAgICAgICAgICAgICBmaWx0ZXItPmRhdGFmaWxlaWR4LCBmaWx0ZXItPmRhdGFmaWxlX2V4dGVuc2lvbik7Ci0gICAgICAgICAgZmlsdGVyLT5jaGFuZ2VkX2RhdGFmaWxlID0gVFJVRTsKLSAgICAgICAgICBtb3Rpb25fY2VsbHNfZnJlZV9yZXNvdXJjZXMgKGZpbHRlci0+aWQpOwotICAgICAgICB9Ci0gICAgICAgIGlmIChmaWx0ZXItPm1vdGlvbmNlbGxzX2NvdW50ID4gMCkKLSAgICAgICAgICBnc3RfbW90aW9uY2VsbHNfdXBkYXRlX21vdGlvbl9jZWxscyAoZmlsdGVyKTsKLSAgICAgICAgaWYgKGZpbHRlci0+bW90aW9ubWFza2NlbGxzX2NvdW50ID4gMCkKLSAgICAgICAgICBnc3RfbW90aW9uY2VsbHNfdXBkYXRlX21vdGlvbl9tYXNrcyAoZmlsdGVyKTsKLSAgICAgICAgZmlsdGVyLT5jaGFuZ2VkX2dyaWR4ID0gRkFMU0U7Ci0gICAgICAgIGZpbHRlci0+Y2hhbmdlZF9ncmlkeSA9IEZBTFNFOwotICAgICAgICBmaWx0ZXItPmNoYW5nZWRfc3RhcnRpbWUgPSBGQUxTRTsKLSAgICAgIH0KLSAgICAgIGRhdGFmaWxlID0gZ19zdHJkdXAgKGZpbHRlci0+Y3VyX2RhdGFmaWxlKTsKLSAgICAgIGZpbHRlci0+Y3VyX2J1ZmZfdGltZXN0YW1wID0gKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC8gR1NUX01TRUNPTkQpOwotICAgICAgZmlsdGVyLT5zdGFydHRpbWUgKz0KLSAgICAgICAgICAoZmlsdGVyLT5jdXJfYnVmZl90aW1lc3RhbXAgLSBmaWx0ZXItPnByZXZfYnVmZl90aW1lc3RhbXApOwotICAgICAgc3RhcnR0aW1lID0gZmlsdGVyLT5zdGFydHRpbWU7Ci0gICAgICBpZiAoZmlsdGVyLT5jaGFuZ2VkX2RhdGFmaWxlIHx8IGZpbHRlci0+ZGlmZl90aW1lc3RhbXAgPCAwKQotICAgICAgICBmaWx0ZXItPmRpZmZfdGltZXN0YW1wID0KLSAgICAgICAgICAgIChnaW50NjQpIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSAvIEdTVF9NU0VDT05EKTsKLSAgICAgIGNoYW5nZWRfZGF0YWZpbGUgPSBmaWx0ZXItPmNoYW5nZWRfZGF0YWZpbGU7Ci0gICAgICBtb3Rpb25tYXNrY2VsbHNfY291bnQgPSBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc19jb3VudDsKLSAgICAgIG1vdGlvbm1hc2tjZWxsc2lkeCA9Ci0gICAgICAgICAgZ19uZXcwIChtb3Rpb25jZWxsaWR4LCBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc19jb3VudCk7Ci0gICAgICBmb3IgKGkgPSAwOyBpIDwgZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNfY291bnQ7IGkrKykgewotICAgICAgICBtb3Rpb25tYXNrY2VsbHNpZHhbaV0ubGluZWlkeCA9IGZpbHRlci0+bW90aW9ubWFza2NlbGxzaWR4W2ldLmxpbmVpZHg7Ci0gICAgICAgIG1vdGlvbm1hc2tjZWxsc2lkeFtpXS5jb2x1bW5pZHggPQotICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNpZHhbaV0uY29sdW1uaWR4OwotICAgICAgfQotICAgICAgbW90aW9uY2VsbHNfY291bnQgPSBmaWx0ZXItPm1vdGlvbmNlbGxzX2NvdW50OwotICAgICAgbW90aW9uY2VsbHNpZHggPSBnX25ldzAgKG1vdGlvbmNlbGxpZHgsIGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQpOwotICAgICAgZm9yIChpID0gMDsgaSA8IGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQ7IGkrKykgewotICAgICAgICBtb3Rpb25jZWxsc2lkeFtpXS5saW5laWR4ID0gZmlsdGVyLT5tb3Rpb25jZWxsc2lkeFtpXS5saW5laWR4OwotICAgICAgICBtb3Rpb25jZWxsc2lkeFtpXS5jb2x1bW5pZHggPSBmaWx0ZXItPm1vdGlvbmNlbGxzaWR4W2ldLmNvbHVtbmlkeDsKLSAgICAgIH0KLSAgICAgIHVzZUFscGhhID0gZmlsdGVyLT51c2VhbHBoYTsKLSAgICAgIHRoaWNrbmVzcyA9IGZpbHRlci0+dGhpY2tuZXNzOwotICAgICAgc3VjY2VzcyA9Ci0gICAgICAgICAgcGVyZm9ybV9kZXRlY3Rpb25fbW90aW9uX2NlbGxzIChmaWx0ZXItPmN2SW1hZ2UsIHNlbnNpdGl2aXR5LAotICAgICAgICAgIGZyYW1lcmF0ZSwgZ3JpZHgsIGdyaWR5LAotICAgICAgICAgIChnaW50NjQpIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSAvIEdTVF9NU0VDT05EKSAtCi0gICAgICAgICAgZmlsdGVyLT5kaWZmX3RpbWVzdGFtcCwgZGlzcGxheSwgdXNlQWxwaGEsIG1vdGlvbm1hc2tjb29yZF9jb3VudCwKLSAgICAgICAgICBtb3Rpb25tYXNrY29vcmRzLCBtb3Rpb25tYXNrY2VsbHNfY291bnQsIG1vdGlvbm1hc2tjZWxsc2lkeCwKLSAgICAgICAgICBtb3Rpb25jZWxsc2NvbG9yLCBtb3Rpb25jZWxsc19jb3VudCwgbW90aW9uY2VsbHNpZHgsIHN0YXJ0dGltZSwKLSAgICAgICAgICBkYXRhZmlsZSwgY2hhbmdlZF9kYXRhZmlsZSwgdGhpY2tuZXNzLCBmaWx0ZXItPmlkKTsKKyAgICBtb3Rpb25jZWxsc2NvbG9yLlJfY2hhbm5lbF92YWx1ZSA9CisgICAgICAgIGZpbHRlci0+bW90aW9uY2VsbHNjb2xvci0+Ul9jaGFubmVsX3ZhbHVlOworICAgIG1vdGlvbmNlbGxzY29sb3IuR19jaGFubmVsX3ZhbHVlID0KKyAgICAgICAgZmlsdGVyLT5tb3Rpb25jZWxsc2NvbG9yLT5HX2NoYW5uZWxfdmFsdWU7CisgICAgbW90aW9uY2VsbHNjb2xvci5CX2NoYW5uZWxfdmFsdWUgPQorICAgICAgICBmaWx0ZXItPm1vdGlvbmNlbGxzY29sb3ItPkJfY2hhbm5lbF92YWx1ZTsKIAotICAgICAgaWYgKChzdWNjZXNzID09IDEpICYmIChmaWx0ZXItPnNlbnRfaW5pdF9lcnJvcl9tc2cgPT0gRkFMU0UpKSB7Ci0gICAgICAgIGNoYXIgKmluaXRmYWlsZWRyZWFzb247Ci0gICAgICAgIGludCBpbml0ZXJyb3Jjb2RlOwotICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gICAgICAgIEdzdE1lc3NhZ2UgKm07Ci0gICAgICAgIGluaXRmYWlsZWRyZWFzb24gPSBnZXRJbml0RGF0YUZpbGVGYWlsZWQgKGZpbHRlci0+aWQpOwotICAgICAgICBpbml0ZXJyb3Jjb2RlID0gZ2V0SW5pdEVycm9yQ29kZSAoZmlsdGVyLT5pZCk7Ci0gICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJpbml0X2Vycm9yX2NvZGUiLCBHX1RZUEVfSU5ULAotICAgICAgICAgICAgaW5pdGVycm9yY29kZSwgImRldGFpbHMiLCBHX1RZUEVfU1RSSU5HLCBpbml0ZmFpbGVkcmVhc29uLCBOVUxMKTsKLSAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKLSAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7Ci0gICAgICAgIGZpbHRlci0+c2VudF9pbml0X2Vycm9yX21zZyA9IFRSVUU7CisgICAgaWYgKChmaWx0ZXItPmNoYW5nZWRfZ3JpZHggfHwgZmlsdGVyLT5jaGFuZ2VkX2dyaWR5CisgICAgICAgICAgICB8fCBmaWx0ZXItPmNoYW5nZWRfc3RhcnRpbWUpKSB7CisgICAgICBpZiAoKGdfc3RyY21wMCAoZmlsdGVyLT5jdXJfZGF0YWZpbGUsIE5VTEwpICE9IDApKSB7CisgICAgICAgIEdGUkVFIChmaWx0ZXItPmN1cl9kYXRhZmlsZSk7CisgICAgICAgIGZpbHRlci0+ZGF0YWZpbGVpZHgrKzsKKyAgICAgICAgZmlsdGVyLT5jdXJfZGF0YWZpbGUgPQorICAgICAgICAgICAgZ19zdHJkdXBfcHJpbnRmICgiJXMtJWQuJXMiLCBmaWx0ZXItPmJhc2VuYW1lX2RhdGFmaWxlLAorICAgICAgICAgICAgZmlsdGVyLT5kYXRhZmlsZWlkeCwgZmlsdGVyLT5kYXRhZmlsZV9leHRlbnNpb24pOworICAgICAgICBmaWx0ZXItPmNoYW5nZWRfZGF0YWZpbGUgPSBUUlVFOworICAgICAgICBtb3Rpb25fY2VsbHNfZnJlZV9yZXNvdXJjZXMgKGZpbHRlci0+aWQpOwogICAgICAgfQotICAgICAgaWYgKChzdWNjZXNzID09IC0xKSAmJiAoZmlsdGVyLT5zZW50X3NhdmVfZXJyb3JfbXNnID09IEZBTFNFKSkgewotICAgICAgICBjaGFyICpzYXZlZmFpbGVkcmVhc29uOwotICAgICAgICBpbnQgc2F2ZWVycm9yY29kZTsKLSAgICAgICAgR3N0U3RydWN0dXJlICpzOwotICAgICAgICBHc3RNZXNzYWdlICptOwotICAgICAgICBzYXZlZmFpbGVkcmVhc29uID0gZ2V0U2F2ZURhdGFGaWxlRmFpbGVkIChmaWx0ZXItPmlkKTsKLSAgICAgICAgc2F2ZWVycm9yY29kZSA9IGdldFNhdmVFcnJvckNvZGUgKGZpbHRlci0+aWQpOwotICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAic2F2ZV9lcnJvcl9jb2RlIiwgR19UWVBFX0lOVCwKLSAgICAgICAgICAgIHNhdmVlcnJvcmNvZGUsICJkZXRhaWxzIiwgR19UWVBFX1NUUklORywgc2F2ZWZhaWxlZHJlYXNvbiwgTlVMTCk7Ci0gICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7Ci0gICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOwotICAgICAgICBmaWx0ZXItPnNlbnRfc2F2ZV9lcnJvcl9tc2cgPSBUUlVFOwotICAgICAgfQotICAgICAgaWYgKHN1Y2Nlc3MgPT0gLTIpIHsKLSAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGZpbHRlciwgImZyYW1lIGRyb3BwZWQiKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmaW5mbyk7Ci0gICAgICAgIGZpbHRlci0+cHJldl9idWZmX3RpbWVzdGFtcCA9IGZpbHRlci0+Y3VyX2J1ZmZfdGltZXN0YW1wOwotICAgICAgICAvL2ZyZWUKLSAgICAgICAgR0ZSRUUgKGRhdGFmaWxlKTsKLSAgICAgICAgR0ZSRUUgKG1vdGlvbm1hc2tjb29yZHMpOwotICAgICAgICBHRlJFRSAobW90aW9ubWFza2NlbGxzaWR4KTsKLSAgICAgICAgR0ZSRUUgKG1vdGlvbmNlbGxzaWR4KTsKLSAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcik7Ci0gICAgICAgIHJldHVybiBnc3RfcGFkX3B1c2ggKGZpbHRlci0+c3JjcGFkLCBidWYpOwotICAgICAgfQotICAgICAgZmlsdGVyLT5jaGFuZ2VkX2RhdGFmaWxlID0gZ2V0Q2hhbmdlZERhdGFGaWxlIChmaWx0ZXItPmlkKTsKLSAgICAgIG1vdGlvbmNlbGxzaWR4Y250ID0gZ2V0TW90aW9uQ2VsbHNJZHhDbnQgKGZpbHRlci0+aWQpOwotICAgICAgbnVtYmVyT2ZDZWxscyA9IGZpbHRlci0+Z3JpZHggKiBmaWx0ZXItPmdyaWR5OwotICAgICAgbW90aW9uY2VsbHNudW1iZXIgPSBtb3Rpb25jZWxsc2lkeGNudCAvIE1TR0xFTjsKLSAgICAgIGNlbGxzT2ZJbnRlcmVzdE51bWJlciA9IChmaWx0ZXItPm1vdGlvbmNlbGxzX2NvdW50ID4gMCkgPyAvL2hvdyBtYW55IGNlbGxzIGludGVyZXN0IGZvciB1cwotICAgICAgICAgIChmaWx0ZXItPm1vdGlvbmNlbGxzX2NvdW50KSA6IChudW1iZXJPZkNlbGxzKTsKLSAgICAgIG1pbmNlbGxzT2ZJbnRlcmVzdE51bWJlciA9Ci0gICAgICAgICAgZmxvb3IgKChkb3VibGUpIGNlbGxzT2ZJbnRlcmVzdE51bWJlciAqIGZpbHRlci0+dGhyZXNob2xkKTsKLSAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXIpOwotICAgICAgbW90aW9uZGV0ZWN0ID0gKG1vdGlvbmNlbGxzbnVtYmVyID49IG1pbmNlbGxzT2ZJbnRlcmVzdE51bWJlcikgPyAxIDogMDsKLSAgICAgIGlmICgobW90aW9uY2VsbHNpZHhjbnQgPiAwKSAmJiAobW90aW9uZGV0ZWN0ID09IDEpKSB7Ci0gICAgICAgIGNoYXIgKmRldGVjdGVkbW90aW9uY2VsbHM7Ci0gICAgICAgIGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7Ci0gICAgICAgIGRldGVjdGVkbW90aW9uY2VsbHMgPSBnZXRNb3Rpb25DZWxsc0lkeCAoZmlsdGVyLT5pZCk7Ci0gICAgICAgIGlmIChkZXRlY3RlZG1vdGlvbmNlbGxzKSB7Ci0gICAgICAgICAgZmlsdGVyLT5jb25zZWN1dGl2ZV9tb3Rpb24rKzsKLSAgICAgICAgICBpZiAoKGZpbHRlci0+cHJldmlvdXNfbW90aW9uID09IEZBTFNFKQotICAgICAgICAgICAgICAmJiAoZmlsdGVyLT5jb25zZWN1dGl2ZV9tb3Rpb24gPj0gbWluaW11bV9tb3Rpb25fZnJhbWVzKSkgewotICAgICAgICAgICAgR3N0U3RydWN0dXJlICpzOwotICAgICAgICAgICAgR3N0TWVzc2FnZSAqbTsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIm1vdGlvbiBzdGFydGVkLCBwb3N0IG1zZyBvbiB0aGUgYnVzIik7Ci0gICAgICAgICAgICBmaWx0ZXItPnByZXZpb3VzX21vdGlvbiA9IFRSVUU7Ci0gICAgICAgICAgICBmaWx0ZXItPm1vdGlvbl9iZWdpbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKLSAgICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJtb3Rpb25fY2VsbHNfaW5kaWNlcyIsCi0gICAgICAgICAgICAgICAgR19UWVBFX1NUUklORywgZGV0ZWN0ZWRtb3Rpb25jZWxscywgIm1vdGlvbl9iZWdpbiIsCi0gICAgICAgICAgICAgICAgR19UWVBFX1VJTlQ2NCwgZmlsdGVyLT5tb3Rpb25fYmVnaW5fdGltZXN0YW1wLCBOVUxMKTsKLSAgICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKLSAgICAgICAgICB9IGVsc2UgaWYgKGZpbHRlci0+cG9zdGFsbG1vdGlvbikgewotICAgICAgICAgICAgR3N0U3RydWN0dXJlICpzOwotICAgICAgICAgICAgR3N0TWVzc2FnZSAqbTsKLSAgICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIm1vdGlvbiwgcG9zdCBtc2cgb24gdGhlIGJ1cyIpOwotICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25fdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7Ci0gICAgICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAibW90aW9uX2NlbGxzX2luZGljZXMiLAotICAgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIGRldGVjdGVkbW90aW9uY2VsbHMsICJtb3Rpb24iLCBHX1RZUEVfVUlOVDY0LAotICAgICAgICAgICAgICAgIGZpbHRlci0+bW90aW9uX3RpbWVzdGFtcCwgTlVMTCk7Ci0gICAgICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOwotICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7Ci0gICAgICAgICAgfQotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIEdzdFN0cnVjdHVyZSAqczsKLSAgICAgICAgICBHc3RNZXNzYWdlICptOwotICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJtb3Rpb25fY2VsbHNfaW5kaWNlcyIsCi0gICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsICJlcnJvciIsIE5VTEwpOwotICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7Ci0gICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGZpbHRlci0+Y29uc2VjdXRpdmVfbW90aW9uID0gMDsKLSAgICAgICAgaWYgKCgoKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wKSAvIDEwMDAwMDAwMDBsKSA+PQotICAgICAgICAgICAgICAgIGZpbHRlci0+Z2FwKQotICAgICAgICAgICAgJiYgKGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wID4gMCkpIHsKLSAgICAgICAgICBpZiAoZmlsdGVyLT5wcmV2aW91c19tb3Rpb24pIHsKLSAgICAgICAgICAgIEdzdFN0cnVjdHVyZSAqczsKLSAgICAgICAgICAgIEdzdE1lc3NhZ2UgKm07Ci0gICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmaWx0ZXIsICJtb3Rpb24gZmluaXNoZWQsIHBvc3QgbXNnIG9uIHRoZSBidXMiKTsKLSAgICAgICAgICAgIGZpbHRlci0+cHJldmlvdXNfbW90aW9uID0gRkFMU0U7Ci0gICAgICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAibW90aW9uX2ZpbmlzaGVkIiwgR19UWVBFX1VJTlQ2NCwKLSAgICAgICAgICAgICAgICBmaWx0ZXItPmxhc3RfbW90aW9uX3RpbWVzdGFtcCwgTlVMTCk7Ci0gICAgICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOwotICAgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpZiAocG9zdG5vbW90aW9uID4gMCkgewotICAgICAgICBndWludDY0IGxhc3RfYnVmX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC8gMTAwMDAwMDAwMGw7Ci0gICAgICAgIGlmICgobGFzdF9idWZfdGltZXN0YW1wIC0KLSAgICAgICAgICAgICAgICAoZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAgLyAxMDAwMDAwMDAwbCkpID49Ci0gICAgICAgICAgICBmaWx0ZXItPnBvc3Rub21vdGlvbikgewotICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgInBvc3Qgbm8gbW90aW9uIG1zZyBvbiB0aGUgYnVzIik7Ci0gICAgICAgICAgaWYgKChsYXN0X2J1Zl90aW1lc3RhbXAgLQotICAgICAgICAgICAgICAgICAgKGZpbHRlci0+bGFzdF9ub21vdGlvbl9ub3RpZmllZCAvIDEwMDAwMDAwMDBsKSkgPj0KLSAgICAgICAgICAgICAgZmlsdGVyLT5wb3N0bm9tb3Rpb24pIHsKLSAgICAgICAgICAgIEdzdFN0cnVjdHVyZSAqczsKLSAgICAgICAgICAgIEdzdE1lc3NhZ2UgKm07Ci0gICAgICAgICAgICBmaWx0ZXItPmxhc3Rfbm9tb3Rpb25fbm90aWZpZWQgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKLSAgICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJub19tb3Rpb24iLCBHX1RZUEVfVUlOVDY0LAotICAgICAgICAgICAgICAgIGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wLCBOVUxMKTsKLSAgICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7Ci0gICAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJmluZm8pOworICAgICAgaWYgKGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQgPiAwKQorICAgICAgICBnc3RfbW90aW9uY2VsbHNfdXBkYXRlX21vdGlvbl9jZWxscyAoZmlsdGVyKTsKKyAgICAgIGlmIChmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc19jb3VudCA+IDApCisgICAgICAgIGdzdF9tb3Rpb25jZWxsc191cGRhdGVfbW90aW9uX21hc2tzIChmaWx0ZXIpOworICAgICAgZmlsdGVyLT5jaGFuZ2VkX2dyaWR4ID0gRkFMU0U7CisgICAgICBmaWx0ZXItPmNoYW5nZWRfZ3JpZHkgPSBGQUxTRTsKKyAgICAgIGZpbHRlci0+Y2hhbmdlZF9zdGFydGltZSA9IEZBTFNFOworICAgIH0KKworICAgIGRhdGFmaWxlID0gZ19zdHJkdXAgKGZpbHRlci0+Y3VyX2RhdGFmaWxlKTsKKyAgICBmaWx0ZXItPmN1cl9idWZmX3RpbWVzdGFtcCA9IChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSAvIEdTVF9NU0VDT05EKTsKKyAgICBmaWx0ZXItPnN0YXJ0dGltZSArPQorICAgICAgICAoZmlsdGVyLT5jdXJfYnVmZl90aW1lc3RhbXAgLSBmaWx0ZXItPnByZXZfYnVmZl90aW1lc3RhbXApOworICAgIHN0YXJ0dGltZSA9IGZpbHRlci0+c3RhcnR0aW1lOworICAgIGlmIChmaWx0ZXItPmNoYW5nZWRfZGF0YWZpbGUgfHwgZmlsdGVyLT5kaWZmX3RpbWVzdGFtcCA8IDApCisgICAgICBmaWx0ZXItPmRpZmZfdGltZXN0YW1wID0KKyAgICAgICAgICAoZ2ludDY0KSAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgLyBHU1RfTVNFQ09ORCk7CisgICAgY2hhbmdlZF9kYXRhZmlsZSA9IGZpbHRlci0+Y2hhbmdlZF9kYXRhZmlsZTsKKworICAgIG1vdGlvbm1hc2tjZWxsc19jb3VudCA9IGZpbHRlci0+bW90aW9ubWFza2NlbGxzX2NvdW50OworICAgIG1vdGlvbm1hc2tjZWxsc2lkeCA9IGdfbmV3MCAobW90aW9uY2VsbGlkeCwgZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNfY291bnQpOworICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXItPm1vdGlvbm1hc2tjZWxsc19jb3VudDsgaSsrKSB7CisgICAgICBtb3Rpb25tYXNrY2VsbHNpZHhbaV0ubGluZWlkeCA9IGZpbHRlci0+bW90aW9ubWFza2NlbGxzaWR4W2ldLmxpbmVpZHg7CisgICAgICBtb3Rpb25tYXNrY2VsbHNpZHhbaV0uY29sdW1uaWR4ID0gZmlsdGVyLT5tb3Rpb25tYXNrY2VsbHNpZHhbaV0uY29sdW1uaWR4OworICAgIH0KKyAgICBtb3Rpb25jZWxsc19jb3VudCA9IGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQ7CisgICAgbW90aW9uY2VsbHNpZHggPSBnX25ldzAgKG1vdGlvbmNlbGxpZHgsIGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQpOworICAgIGZvciAoaSA9IDA7IGkgPCBmaWx0ZXItPm1vdGlvbmNlbGxzX2NvdW50OyBpKyspIHsKKyAgICAgIG1vdGlvbmNlbGxzaWR4W2ldLmxpbmVpZHggPSBmaWx0ZXItPm1vdGlvbmNlbGxzaWR4W2ldLmxpbmVpZHg7CisgICAgICBtb3Rpb25jZWxsc2lkeFtpXS5jb2x1bW5pZHggPSBmaWx0ZXItPm1vdGlvbmNlbGxzaWR4W2ldLmNvbHVtbmlkeDsKKyAgICB9CisKKyAgICB1c2VBbHBoYSA9IGZpbHRlci0+dXNlYWxwaGE7CisgICAgdGhpY2tuZXNzID0gZmlsdGVyLT50aGlja25lc3M7CisgICAgc3VjY2VzcyA9CisgICAgICAgIHBlcmZvcm1fZGV0ZWN0aW9uX21vdGlvbl9jZWxscyAoaW1nLCBzZW5zaXRpdml0eSwKKyAgICAgICAgZnJhbWVyYXRlLCBncmlkeCwgZ3JpZHksCisgICAgICAgIChnaW50NjQpIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSAvIEdTVF9NU0VDT05EKSAtCisgICAgICAgIGZpbHRlci0+ZGlmZl90aW1lc3RhbXAsIGRpc3BsYXksIHVzZUFscGhhLCBtb3Rpb25tYXNrY29vcmRfY291bnQsCisgICAgICAgIG1vdGlvbm1hc2tjb29yZHMsIG1vdGlvbm1hc2tjZWxsc19jb3VudCwgbW90aW9ubWFza2NlbGxzaWR4LAorICAgICAgICBtb3Rpb25jZWxsc2NvbG9yLCBtb3Rpb25jZWxsc19jb3VudCwgbW90aW9uY2VsbHNpZHgsIHN0YXJ0dGltZSwKKyAgICAgICAgZGF0YWZpbGUsIGNoYW5nZWRfZGF0YWZpbGUsIHRoaWNrbmVzcywgZmlsdGVyLT5pZCk7CisKKyAgICBpZiAoKHN1Y2Nlc3MgPT0gMSkgJiYgKGZpbHRlci0+c2VudF9pbml0X2Vycm9yX21zZyA9PSBGQUxTRSkpIHsKKyAgICAgIGNoYXIgKmluaXRmYWlsZWRyZWFzb247CisgICAgICBpbnQgaW5pdGVycm9yY29kZTsKKyAgICAgIEdzdFN0cnVjdHVyZSAqczsKKyAgICAgIEdzdE1lc3NhZ2UgKm07CisKKyAgICAgIGluaXRmYWlsZWRyZWFzb24gPSBnZXRJbml0RGF0YUZpbGVGYWlsZWQgKGZpbHRlci0+aWQpOworICAgICAgaW5pdGVycm9yY29kZSA9IGdldEluaXRFcnJvckNvZGUgKGZpbHRlci0+aWQpOworICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgImluaXRfZXJyb3JfY29kZSIsIEdfVFlQRV9JTlQsCisgICAgICAgICAgaW5pdGVycm9yY29kZSwgImRldGFpbHMiLCBHX1RZUEVfU1RSSU5HLCBpbml0ZmFpbGVkcmVhc29uLCBOVUxMKTsKKyAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7CisgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKKyAgICAgIGZpbHRlci0+c2VudF9pbml0X2Vycm9yX21zZyA9IFRSVUU7CisgICAgfQorICAgIGlmICgoc3VjY2VzcyA9PSAtMSkgJiYgKGZpbHRlci0+c2VudF9zYXZlX2Vycm9yX21zZyA9PSBGQUxTRSkpIHsKKyAgICAgIGNoYXIgKnNhdmVmYWlsZWRyZWFzb247CisgICAgICBpbnQgc2F2ZWVycm9yY29kZTsKKyAgICAgIEdzdFN0cnVjdHVyZSAqczsKKyAgICAgIEdzdE1lc3NhZ2UgKm07CisKKyAgICAgIHNhdmVmYWlsZWRyZWFzb24gPSBnZXRTYXZlRGF0YUZpbGVGYWlsZWQgKGZpbHRlci0+aWQpOworICAgICAgc2F2ZWVycm9yY29kZSA9IGdldFNhdmVFcnJvckNvZGUgKGZpbHRlci0+aWQpOworICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgInNhdmVfZXJyb3JfY29kZSIsIEdfVFlQRV9JTlQsCisgICAgICAgICAgc2F2ZWVycm9yY29kZSwgImRldGFpbHMiLCBHX1RZUEVfU1RSSU5HLCBzYXZlZmFpbGVkcmVhc29uLCBOVUxMKTsKKyAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7CisgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKKyAgICAgIGZpbHRlci0+c2VudF9zYXZlX2Vycm9yX21zZyA9IFRSVUU7CisgICAgfQorICAgIGlmIChzdWNjZXNzID09IC0yKSB7CisgICAgICBHU1RfTE9HX09CSkVDVCAoZmlsdGVyLCAiZnJhbWUgZHJvcHBlZCIpOwogICAgICAgZmlsdGVyLT5wcmV2X2J1ZmZfdGltZXN0YW1wID0gZmlsdGVyLT5jdXJfYnVmZl90aW1lc3RhbXA7CiAgICAgICAvL2ZyZWUKICAgICAgIEdGUkVFIChkYXRhZmlsZSk7CiAgICAgICBHRlJFRSAobW90aW9ubWFza2Nvb3Jkcyk7CiAgICAgICBHRlJFRSAobW90aW9ubWFza2NlbGxzaWR4KTsKICAgICAgIEdGUkVFIChtb3Rpb25jZWxsc2lkeCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZmlsdGVyLCAiZXJyb3IgbWFwcGluZyBpbnB1dCBidWZmZXIiKTsKICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXIpOworICAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICAgIH0KKworICAgIGZpbHRlci0+Y2hhbmdlZF9kYXRhZmlsZSA9IGdldENoYW5nZWREYXRhRmlsZSAoZmlsdGVyLT5pZCk7CisgICAgbW90aW9uY2VsbHNpZHhjbnQgPSBnZXRNb3Rpb25DZWxsc0lkeENudCAoZmlsdGVyLT5pZCk7CisgICAgbnVtYmVyT2ZDZWxscyA9IGZpbHRlci0+Z3JpZHggKiBmaWx0ZXItPmdyaWR5OworICAgIG1vdGlvbmNlbGxzbnVtYmVyID0gbW90aW9uY2VsbHNpZHhjbnQgLyBNU0dMRU47CisgICAgY2VsbHNPZkludGVyZXN0TnVtYmVyID0gKGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQgPiAwKSA/ICAgLy9ob3cgbWFueSBjZWxscyBpbnRlcmVzdCBmb3IgdXMKKyAgICAgICAgKGZpbHRlci0+bW90aW9uY2VsbHNfY291bnQpIDogKG51bWJlck9mQ2VsbHMpOworICAgIG1pbmNlbGxzT2ZJbnRlcmVzdE51bWJlciA9CisgICAgICAgIGZsb29yICgoZG91YmxlKSBjZWxsc09mSW50ZXJlc3ROdW1iZXIgKiBmaWx0ZXItPnRocmVzaG9sZCk7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcik7CisgICAgbW90aW9uZGV0ZWN0ID0gKG1vdGlvbmNlbGxzbnVtYmVyID49IG1pbmNlbGxzT2ZJbnRlcmVzdE51bWJlcikgPyAxIDogMDsKKyAgICBpZiAoKG1vdGlvbmNlbGxzaWR4Y250ID4gMCkgJiYgKG1vdGlvbmRldGVjdCA9PSAxKSkgeworICAgICAgY2hhciAqZGV0ZWN0ZWRtb3Rpb25jZWxsczsKKworICAgICAgZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKKyAgICAgIGRldGVjdGVkbW90aW9uY2VsbHMgPSBnZXRNb3Rpb25DZWxsc0lkeCAoZmlsdGVyLT5pZCk7CisgICAgICBpZiAoZGV0ZWN0ZWRtb3Rpb25jZWxscykgeworICAgICAgICBmaWx0ZXItPmNvbnNlY3V0aXZlX21vdGlvbisrOworICAgICAgICBpZiAoKGZpbHRlci0+cHJldmlvdXNfbW90aW9uID09IEZBTFNFKQorICAgICAgICAgICAgJiYgKGZpbHRlci0+Y29uc2VjdXRpdmVfbW90aW9uID49IG1pbmltdW1fbW90aW9uX2ZyYW1lcykpIHsKKyAgICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgICAgICAgR3N0TWVzc2FnZSAqbTsKKworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgIm1vdGlvbiBzdGFydGVkLCBwb3N0IG1zZyBvbiB0aGUgYnVzIik7CisgICAgICAgICAgZmlsdGVyLT5wcmV2aW91c19tb3Rpb24gPSBUUlVFOworICAgICAgICAgIGZpbHRlci0+bW90aW9uX2JlZ2luX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOworICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJtb3Rpb25fY2VsbHNfaW5kaWNlcyIsCisgICAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsIGRldGVjdGVkbW90aW9uY2VsbHMsICJtb3Rpb25fYmVnaW4iLAorICAgICAgICAgICAgICBHX1RZUEVfVUlOVDY0LCBmaWx0ZXItPm1vdGlvbl9iZWdpbl90aW1lc3RhbXAsIE5VTEwpOworICAgICAgICAgIG0gPSBnc3RfbWVzc2FnZV9uZXdfZWxlbWVudCAoR1NUX09CSkVDVCAoZmlsdGVyKSwgcyk7CisgICAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgbSk7CisgICAgICAgIH0gZWxzZSBpZiAoZmlsdGVyLT5wb3N0YWxsbW90aW9uKSB7CisgICAgICAgICAgR3N0U3RydWN0dXJlICpzOworICAgICAgICAgIEdzdE1lc3NhZ2UgKm07CisKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmaWx0ZXIsICJtb3Rpb24sIHBvc3QgbXNnIG9uIHRoZSBidXMiKTsKKyAgICAgICAgICBmaWx0ZXItPm1vdGlvbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKKyAgICAgICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJtb3Rpb24iLCAibW90aW9uX2NlbGxzX2luZGljZXMiLAorICAgICAgICAgICAgICBHX1RZUEVfU1RSSU5HLCBkZXRlY3RlZG1vdGlvbmNlbGxzLCAibW90aW9uIiwgR19UWVBFX1VJTlQ2NCwKKyAgICAgICAgICAgICAgZmlsdGVyLT5tb3Rpb25fdGltZXN0YW1wLCBOVUxMKTsKKyAgICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOworICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOworICAgICAgICB9CisgICAgICB9IGVsc2UgeworICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgICAgIEdzdE1lc3NhZ2UgKm07CisKKyAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgIm1vdGlvbl9jZWxsc19pbmRpY2VzIiwKKyAgICAgICAgICAgIEdfVFlQRV9TVFJJTkcsICJlcnJvciIsIE5VTEwpOworICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOworICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZmlsdGVyLT5jb25zZWN1dGl2ZV9tb3Rpb24gPSAwOworICAgICAgaWYgKCgoKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpIC0KKyAgICAgICAgICAgICAgICAgICAgICBmaWx0ZXItPmxhc3RfbW90aW9uX3RpbWVzdGFtcCkgLyAxMDAwMDAwMDAwbCkgPj0KKyAgICAgICAgICAgICAgZmlsdGVyLT5nYXApCisgICAgICAgICAgJiYgKGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wID4gMCkpIHsKKyAgICAgICAgaWYgKGZpbHRlci0+cHJldmlvdXNfbW90aW9uKSB7CisgICAgICAgICAgR3N0U3RydWN0dXJlICpzOworICAgICAgICAgIEdzdE1lc3NhZ2UgKm07CisKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChmaWx0ZXIsICJtb3Rpb24gZmluaXNoZWQsIHBvc3QgbXNnIG9uIHRoZSBidXMiKTsKKyAgICAgICAgICBmaWx0ZXItPnByZXZpb3VzX21vdGlvbiA9IEZBTFNFOworICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoIm1vdGlvbiIsICJtb3Rpb25fZmluaXNoZWQiLCBHX1RZUEVfVUlOVDY0LAorICAgICAgICAgICAgICBmaWx0ZXItPmxhc3RfbW90aW9uX3RpbWVzdGFtcCwgTlVMTCk7CisgICAgICAgICAgbSA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChmaWx0ZXIpLCBzKTsKKyAgICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBtKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgICBpZiAocG9zdG5vbW90aW9uID4gMCkgeworICAgICAgZ3VpbnQ2NCBsYXN0X2J1Zl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSAvIDEwMDAwMDAwMDBsOworICAgICAgaWYgKChsYXN0X2J1Zl90aW1lc3RhbXAgLQorICAgICAgICAgICAgICAoZmlsdGVyLT5sYXN0X21vdGlvbl90aW1lc3RhbXAgLyAxMDAwMDAwMDAwbCkpID49CisgICAgICAgICAgZmlsdGVyLT5wb3N0bm9tb3Rpb24pIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZmlsdGVyLCAicG9zdCBubyBtb3Rpb24gbXNnIG9uIHRoZSBidXMiKTsKKyAgICAgICAgaWYgKChsYXN0X2J1Zl90aW1lc3RhbXAgLQorICAgICAgICAgICAgICAgIChmaWx0ZXItPmxhc3Rfbm9tb3Rpb25fbm90aWZpZWQgLyAxMDAwMDAwMDAwbCkpID49CisgICAgICAgICAgICBmaWx0ZXItPnBvc3Rub21vdGlvbikgeworICAgICAgICAgIEdzdFN0cnVjdHVyZSAqczsKKyAgICAgICAgICBHc3RNZXNzYWdlICptOworCisgICAgICAgICAgZmlsdGVyLT5sYXN0X25vbW90aW9uX25vdGlmaWVkID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7CisgICAgICAgICAgcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgibW90aW9uIiwgIm5vX21vdGlvbiIsIEdfVFlQRV9VSU5UNjQsCisgICAgICAgICAgICAgIGZpbHRlci0+bGFzdF9tb3Rpb25fdGltZXN0YW1wLCBOVUxMKTsKKyAgICAgICAgICBtID0gZ3N0X21lc3NhZ2VfbmV3X2VsZW1lbnQgKEdTVF9PQkpFQ1QgKGZpbHRlciksIHMpOworICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGZpbHRlci0+cHJldl9idWZmX3RpbWVzdGFtcCA9IGZpbHRlci0+Y3VyX2J1ZmZfdGltZXN0YW1wOworCisgICAgLy9mcmVlCisgICAgR0ZSRUUgKGRhdGFmaWxlKTsKKyAgICBHRlJFRSAobW90aW9ubWFza2Nvb3Jkcyk7CisgICAgR0ZSRUUgKG1vdGlvbm1hc2tjZWxsc2lkeCk7CisgICAgR0ZSRUUgKG1vdGlvbmNlbGxzaWR4KTsKICAgfSBlbHNlIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGZpbHRlciwgIk1vdGlvbiBkZXRlY3Rpb24gZGlzYWJsZWQiKTsKICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyKTsKICAgfQotICByZXR1cm4gZ3N0X3BhZF9wdXNoIChmaWx0ZXItPnNyY3BhZCwgYnVmKTsKKyAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCiAvKiBlbnRyeSBwb2ludCB0byBpbml0aWFsaXplIHRoZSBwbHVnLWluCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmggYi9leHQvb3BlbmN2L2dzdG1vdGlvbmNlbGxzLmgKaW5kZXggMGE3ZGFhMC4uZGEwNGE3NCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3Rtb3Rpb25jZWxscy5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0bW90aW9uY2VsbHMuaApAQCAtMiw3ICsyLDcgQEAKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDExIFJvYmVydCBKb2JiYWd5IDxqb2JiYWd5LnJvYmVydEBnbWFpbC5jb20+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMTEgTmljb2xhIE11cmlubyA8bmljb2xhLm11cmlub0BnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQ1LDggKzQ1LDkgQEAKICNpZm5kZWYgX19HU1RfTU9USU9OQ0VMTFNfSF9fCiAjZGVmaW5lIF9fR1NUX01PVElPTkNFTExTX0hfXwogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdG9wZW5jdnZpZGVvZmlsdGVyLmg+CiAjaW5jbHVkZSA8b3BlbmN2Mi9jb3JlL2NvcmVfYy5oPgorI2luY2x1ZGUgIm1vdGlvbmNlbGxzX3dyYXBwZXIuaCIKIAogR19CRUdJTl9ERUNMUwogLyogI2RlZmluZXMgZG9uJ3QgbGlrZSB3aGl0ZXNwYWNleSBiaXRzICovCkBAIC02MywyOCArNjQsOSBAQAogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1vdGlvbmNlbGxzIEdzdE1vdGlvbmNlbGxzOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdE1vdGlvbmNlbGxzQ2xhc3MgR3N0TW90aW9uY2VsbHNDbGFzczsKIAotdHlwZWRlZiBzdHJ1Y3QgewotCWludCB1cHBlcl9sZWZ0X3g7Ci0JaW50IHVwcGVyX2xlZnRfeTsKLQlpbnQgbG93ZXJfcmlnaHRfeDsKLQlpbnQgbG93ZXJfcmlnaHRfeTsKLX0gbW90aW9ubWFza2Nvb3JkcmVjdDsKLQotdHlwZWRlZiBzdHJ1Y3QgewotCWludCBSX2NoYW5uZWxfdmFsdWU7Ci0JaW50IEdfY2hhbm5lbF92YWx1ZTsKLQlpbnQgQl9jaGFubmVsX3ZhbHVlOwotfSBjZWxsc2NvbG9yOwotCi10eXBlZGVmIHN0cnVjdCB7Ci0JaW50IGxpbmVpZHg7Ci0JaW50IGNvbHVtbmlkeDsKLX0gbW90aW9uY2VsbGlkeDsKLQogc3RydWN0IF9Hc3RNb3Rpb25jZWxscwogewotICBHc3RFbGVtZW50IGVsZW1lbnQ7Ci0gIEdzdFBhZCAqc2lua3BhZCwgKnNyY3BhZDsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXIgZWxlbWVudDsKICAgR3N0U3RhdGUgc3RhdGU7CiAgIGdib29sZWFuIGRpc3BsYXksIGNhbGN1bGF0ZV9tb3Rpb24sIGZpcnN0Z3JpZHgsIGZpcnN0Z3JpZHksIGNoYW5nZWRfZ3JpZHgsCiAgICAgICBjaGFuZ2VkX2dyaWR5LCBjaGFuZ2VkX3N0YXJ0aW1lOwpAQCAtOTQsMTIgKzc2LDEyIEBACiAgIGdjaGFyICpwcmV2X2RhdGFmaWxlLCAqY3VyX2RhdGFmaWxlLCAqYmFzZW5hbWVfZGF0YWZpbGUsICpkYXRhZmlsZV9leHRlbnNpb247CiAgIGdpbnQgcHJldmdyaWR4LCBncmlkeCwgcHJldmdyaWR5LCBncmlkeSwgaWQ7CiAgIGdkb3VibGUgc2Vuc2l0aXZpdHksIHRocmVzaG9sZDsKLSAgSXBsSW1hZ2UgKmN2SW1hZ2U7CiAgIG1vdGlvbm1hc2tjb29yZHJlY3QgKm1vdGlvbm1hc2tjb29yZHM7CiAgIGNlbGxzY29sb3IgKm1vdGlvbmNlbGxzY29sb3I7CiAgIG1vdGlvbmNlbGxpZHggKm1vdGlvbmNlbGxzaWR4LCAqbW90aW9ubWFza2NlbGxzaWR4OwogICBpbnQgbW90aW9ubWFza2Nvb3JkX2NvdW50LCBtb3Rpb25jZWxsc19jb3VudCwgbW90aW9ubWFza2NlbGxzX2NvdW50OwotICBpbnQgZ2FwLCB0aGlja25lc3MsIGRhdGFmaWxlaWR4LCBwb3N0bm9tb3Rpb24sIG1pbmltdW1fbW90aW9uX2ZyYW1lczsKKyAgaW50IHRoaWNrbmVzczsKKyAgZ3VpbnQgZ2FwLCBkYXRhZmlsZWlkeCwgcG9zdG5vbW90aW9uLCBtaW5pbXVtX21vdGlvbl9mcmFtZXM7CiAgIGd1aW50NjQgbW90aW9uX2JlZ2luX3RpbWVzdGFtcCwgbGFzdF9tb3Rpb25fdGltZXN0YW1wLCBtb3Rpb25fdGltZXN0YW1wLAogICAgICAgbGFzdF9ub21vdGlvbl9ub3RpZmllZCwgcHJldl9idWZmX3RpbWVzdGFtcCwgY3VyX2J1ZmZfdGltZXN0YW1wOwogICBnaW50NjQgZGlmZl90aW1lc3RhbXAsIHN0YXJ0dGltZTsKQEAgLTExMiw3ICs5NCw3IEBACiAKIHN0cnVjdCBfR3N0TW90aW9uY2VsbHNDbGFzcwogewotICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIEdUeXBlIGdzdF9tb3Rpb25fY2VsbHNfZ2V0X3R5cGUgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jIGIvZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jcHAKc2ltaWxhcml0eSBpbmRleCA2NSUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmNwcAppbmRleCA4OTkwMWJmLi5kYTZlZWE5IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmMKKysrIGIvZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5jcHAKQEAgLTI2LDc4ICsyNiwxNCBAQAogI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi9jb3JlL3R5cGVzX2MuaD4KIAotc3RhdGljIGdib29sZWFuCi1nc3Rfb3BlbmN2X2dldF9pcGxfZGVwdGhfYW5kX2NoYW5uZWxzIChHc3RTdHJ1Y3R1cmUgKiBzdHJ1Y3R1cmUsCi0gICAgZ2ludCAqIGlwbGRlcHRoLCBnaW50ICogY2hhbm5lbHMsIEdFcnJvciAqKiBlcnIpCi17Ci0gIEdzdFZpZGVvRm9ybWF0IGZvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTjsKLSAgY29uc3QgR3N0VmlkZW9Gb3JtYXRJbmZvICppbmZvOwotICBnaW50IGRlcHRoID0gMCwgaTsKLSAgY29uc3QgZ2NoYXIgKnM7Ci0KLSAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUgKHN0cnVjdHVyZSwgInZpZGVvL3gtcmF3IikpIHsKLSAgICBpZiAoIShzID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzdHJ1Y3R1cmUsICJmb3JtYXQiKSkpCi0gICAgICByZXR1cm4gRkFMU0U7Ci0gICAgZm9ybWF0ID0gZ3N0X3ZpZGVvX2Zvcm1hdF9mcm9tX3N0cmluZyAocyk7Ci0gICAgaWYgKGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pCi0gICAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBpbmZvID0gZ3N0X3ZpZGVvX2Zvcm1hdF9nZXRfaW5mbyAoZm9ybWF0KTsKLQotICBpZiAoR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0lTX1JHQiAoaW5mbykpCi0gICAgKmNoYW5uZWxzID0gMzsKLSAgZWxzZSBpZiAoR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0lTX0dSQVkgKGluZm8pKQotICAgICpjaGFubmVscyA9IDE7Ci0gIGVsc2UgewotICAgIGdfc2V0X2Vycm9yIChlcnIsIEdTVF9DT1JFX0VSUk9SLCBHU1RfQ09SRV9FUlJPUl9ORUdPVElBVElPTiwKLSAgICAgICAgIlVuc3VwcG9ydGVkIHN0cnVjdHVyZSAlcyIsIGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHN0cnVjdHVyZSkpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fRk9STUFUX0lORk9fTl9DT01QT05FTlRTIChpbmZvKTsgaSsrKQotICAgIGRlcHRoICs9IEdTVF9WSURFT19GT1JNQVRfSU5GT19ERVBUSCAoaW5mbywgaSk7Ci0KLSAgaWYgKGRlcHRoIC8gKmNoYW5uZWxzID09IDgpIHsKLSAgICAvKiBUT0RPIHNpZ25kbmVzcz8gKi8KLSAgICAqaXBsZGVwdGggPSBJUExfREVQVEhfOFU7Ci0gIH0gZWxzZSBpZiAoZGVwdGggLyAqY2hhbm5lbHMgPT0gMTYpIHsKLSAgICAqaXBsZGVwdGggPSBJUExfREVQVEhfMTZVOwotICB9IGVsc2UgewotICAgIGdfc2V0X2Vycm9yIChlcnIsIEdTVF9DT1JFX0VSUk9SLCBHU1RfQ09SRV9FUlJPUl9ORUdPVElBVElPTiwKLSAgICAgICAgIlVuc3VwcG9ydGVkIGRlcHRoL2NoYW5uZWxzICVkLyVkIiwgZGVwdGgsICpjaGFubmVscyk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLWdib29sZWFuCi1nc3Rfb3BlbmN2X3BhcnNlX2lwbGltYWdlX3BhcmFtc19mcm9tX3N0cnVjdHVyZSAoR3N0U3RydWN0dXJlICogc3RydWN0dXJlLAotICAgIGdpbnQgKiB3aWR0aCwgZ2ludCAqIGhlaWdodCwgZ2ludCAqIGlwbGRlcHRoLCBnaW50ICogY2hhbm5lbHMsCi0gICAgR0Vycm9yICoqIGVycikKLXsKLSAgaWYgKCFnc3Rfb3BlbmN2X2dldF9pcGxfZGVwdGhfYW5kX2NoYW5uZWxzIChzdHJ1Y3R1cmUsIGlwbGRlcHRoLCBjaGFubmVscywKLSAgICAgICAgICBlcnIpKSB7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgd2lkdGgpIHx8Ci0gICAgICAhZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCBoZWlnaHQpKSB7Ci0gICAgZ19zZXRfZXJyb3IgKGVyciwgR1NUX0NPUkVfRVJST1IsIEdTVF9DT1JFX0VSUk9SX05FR09USUFUSU9OLAotICAgICAgICAiTm8gd2lkdGgvaGVpZ2h0IGluIGNhcHMiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KIAogZ2Jvb2xlYW4KIGdzdF9vcGVuY3ZfcGFyc2VfaXBsaW1hZ2VfcGFyYW1zX2Zyb21fY2FwcyAoR3N0Q2FwcyAqIGNhcHMsIGdpbnQgKiB3aWR0aCwKICAgICBnaW50ICogaGVpZ2h0LCBnaW50ICogaXBsZGVwdGgsIGdpbnQgKiBjaGFubmVscywgR0Vycm9yICoqIGVycikKIHsKICAgR3N0VmlkZW9JbmZvIGluZm87Ci0gIGdpbnQgaSwgZGVwdGggPSAwOworICBnaW50IGRlcHRoID0gMDsKKyAgZ3VpbnQgaTsKIAogICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpKSB7CiAgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGdldCB0aGUgdmlkZW9pbmZvIGZyb20gY2FwcyIpOwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5oIGIvZXh0L29wZW5jdi9nc3RvcGVuY3Z1dGlscy5oCmluZGV4IDg0MTIzZjEuLjEzZGZkOWUgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0b3BlbmN2dXRpbHMuaAorKysgYi9leHQvb3BlbmN2L2dzdG9wZW5jdnV0aWxzLmgKQEAgLTMwLDE3ICszMCwxMyBAQAogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogCiAKLQotZ2Jvb2xlYW4KLWdzdF9vcGVuY3ZfZ2V0X2lwbGRlcHRoIChnaW50IGRlcHRoLCBnaW50IGJwcCwgZ2ludCAqIGlwbGRlcHRoKTsKK0dfQkVHSU5fREVDTFMKIAogZ2Jvb2xlYW4gZ3N0X29wZW5jdl9wYXJzZV9pcGxpbWFnZV9wYXJhbXNfZnJvbV9jYXBzCiAgICAgKEdzdENhcHMgKiBjYXBzLCBnaW50ICogd2lkdGgsIGdpbnQgKiBoZWlnaHQsIGdpbnQgKiBkZXB0aCwKICAgICBnaW50ICogY2hhbm5lbHMsIEdFcnJvciAqKiBlcnIpOwotZ2Jvb2xlYW4gZ3N0X29wZW5jdl9wYXJzZV9pcGxpbWFnZV9wYXJhbXNfZnJvbV9zdHJ1Y3R1cmUKLSAgICAoR3N0U3RydWN0dXJlICogc3RydWN0dXJlLCBnaW50ICogd2lkdGgsIGdpbnQgKiBoZWlnaHQsIGdpbnQgKiBkZXB0aCwKLSAgICBnaW50ICogY2hhbm5lbHMsIEdFcnJvciAqKiBlcnIpOwogCiBHc3RDYXBzICogZ3N0X29wZW5jdl9jYXBzX2Zyb21fY3ZfaW1hZ2VfdHlwZSAoaW50IGN2X3R5cGUpOworR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIF9fR1NUX09QRU5DVl9VVElMU19fICovCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmMgYi9leHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcApzaW1pbGFyaXR5IGluZGV4IDk4JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0b3BlbmN2dmlkZW9maWx0ZXIuY3BwCmluZGV4IGM1M2M3ZjUuLjRiOGU1MzYgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0b3BlbmN2dmlkZW9maWx0ZXIuYworKysgYi9leHQvb3BlbmN2L2dzdG9wZW5jdnZpZGVvZmlsdGVyLmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMCBUaGlhZ28gU2FudG9zIDx0aGlhZ28uc291c2Euc2FudG9zQGNvbGxhYm9yYS5jby51az4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDcsOCArNDcsNiBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgImdzdG9wZW5jdnZpZGVvZmlsdGVyLmgiCiAjaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKIApAQCAtMTM1LDcgKzEzMyw3IEBACiAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAgIGJhc2V0cmFuc19jbGFzcyA9IChHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKikga2xhc3M7Ci0gIHBhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOworICBwYXJlbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOwogCiAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9kZWJ1ZywKICAgICAgICJvcGVuY3ZiYXNldHJhbnNmb3JtIiwgMCwgIm9wZW5jdmJhc2V0cmFuc2Zvcm0gZWxlbWVudCIpOwpAQCAtMjE3LDcgKzIxNSw3IEBACiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmY2xhc3MtPmN2X3RyYW5zX2lwX2Z1bmMgIT0gTlVMTCwgR1NUX0ZMT1dfRVJST1IpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAodHJhbnNmb3JtLT5jdkltYWdlICE9IE5VTEwsIEdTVF9GTE9XX0VSUk9SKTsKIAotICBpZiAoIWdzdF9idWZmZXJfbWFwIChidWZmZXIsICZpbmZvLCBHU1RfTUFQX1JFQURXUklURSkpCisgIGlmICghZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJmluZm8sIChHc3RNYXBGbGFncykgKEdTVF9NQVBfUkVBRFdSSVRFKSkpCiAgICAgZ290byBtYXBfZmFpbGVkOwogCiAgIHRyYW5zZm9ybS0+Y3ZJbWFnZS0+aW1hZ2VEYXRhID0gKGNoYXIgKikgaW5mby5kYXRhOwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jIGIvZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jcHAKc2ltaWxhcml0eSBpbmRleCA2OSUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmNwcAppbmRleCA2MThmZmRmLi5kODI0N2MwIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmMKKysrIGIvZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC01MSw3ICs1MSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiAtbSBmYWtlc3JjICEgcHlyYW1pZHNlZ21lbnQgISBmYWtlc2luayBzaWxlbnQ9VFJVRQorICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgcHlyYW1pZHNlZ21lbnQgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNjAsOSArNjAsNiBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0cHlyYW1pZHNlZ21lbnQuaCIKIAogI2RlZmluZSBCTE9DS19TSVpFIDEwMDAKQEAgLTcwLDYgKzY3LDcgQEAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9weXJhbWlkX3NlZ21lbnRfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3B5cmFtaWRfc2VnbWVudF9kZWJ1ZwogCit1c2luZyBuYW1lc3BhY2UgY3Y7CiAvKiBGaWx0ZXIgc2lnbmFscyBhbmQgYXJncyAqLwogZW51bQogewpAQCAtMTAyLDE3ICsxMDAsMTYgQEAKICAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJSR0IiKSkKICAgICApOwogCi1HX0RFRklORV9UWVBFIChHc3RQeXJhbWlkU2VnbWVudCwgZ3N0X3B5cmFtaWRfc2VnbWVudCwgR1NUX1RZUEVfRUxFTUVOVCk7CitHX0RFRklORV9UWVBFIChHc3RQeXJhbWlkU2VnbWVudCwgZ3N0X3B5cmFtaWRfc2VnbWVudCwKKyAgICBHU1RfVFlQRV9PUEVOQ1ZfVklERU9fRklMVEVSKTsKIAogc3RhdGljIHZvaWQgZ3N0X3B5cmFtaWRfc2VnbWVudF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiBzdGF0aWMgdm9pZCBnc3RfcHlyYW1pZF9zZWdtZW50X2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIAotc3RhdGljIGdib29sZWFuIGdzdF9weXJhbWlkX3NlZ21lbnRfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3B5cmFtaWRfc2VnbWVudF9jaGFpbiAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9weXJhbWlkX3NlZ21lbnRfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqCisgICAgYmFzZSwgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZyk7CiAKIC8qIENsZWFuIHVwICovCiBzdGF0aWMgdm9pZApAQCAtMTIwLDEwICsxMTcsNiBAQAogewogICBHc3RQeXJhbWlkU2VnbWVudCAqZmlsdGVyID0gR1NUX1BZUkFNSURfU0VHTUVOVCAob2JqKTsKIAotICBpZiAoZmlsdGVyLT5jdkltYWdlICE9IE5VTEwpIHsKLSAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZJbWFnZSk7Ci0gIH0KLQogICBjdlJlbGVhc2VNZW1TdG9yYWdlICgmZmlsdGVyLT5zdG9yYWdlKTsKIAogICBHX09CSkVDVF9DTEFTUyAoZ3N0X3B5cmFtaWRfc2VnbWVudF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqKTsKQEAgLTEzNCwzMiArMTI3LDM3IEBACiBnc3RfcHlyYW1pZF9zZWdtZW50X2NsYXNzX2luaXQgKEdzdFB5cmFtaWRTZWdtZW50Q2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICpnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzOwogCiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzID0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKikga2xhc3M7CiAKICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3B5cmFtaWRfc2VnbWVudF9maW5hbGl6ZSk7CiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9weXJhbWlkX3NlZ21lbnRfc2V0X3Byb3BlcnR5OwogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfcHlyYW1pZF9zZWdtZW50X2dldF9wcm9wZXJ0eTsKIAorICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19pcF9mdW5jID0KKyAgICAgIGdzdF9weXJhbWlkX3NlZ21lbnRfdHJhbnNmb3JtX2lwOworCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0lMRU5ULAogICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJzaWxlbnQiLCAiU2lsZW50IiwgIlByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgPyIsCi0gICAgICAgICAgRkFMU0UsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIEZBTFNFLCAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9USFJFU0hPTEQxLAogICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoInRocmVzaG9sZDEiLCAiVGhyZXNob2xkMSIsCiAgICAgICAgICAgIkVycm9yIHRocmVzaG9sZCBmb3IgZXN0YWJsaXNoaW5nIGxpbmtzIiwgMCwgMTAwMCwgNTAsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVEhSRVNIT0xEMiwKICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJ0aHJlc2hvbGQyIiwgIlRocmVzaG9sZDIiLAogICAgICAgICAgICJFcnJvciB0aHJlc2hvbGQgZm9yIHNlZ21lbnQgY2x1c3RlcmluZyIsIDAsIDEwMDAsIDYwLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0xFVkVMLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImxldmVsIiwgIkxldmVsIiwKICAgICAgICAgICAiTWF4aW11bSBsZXZlbCBvZiB0aGUgcHlyYW1pZCBzZWdtZW50YXRpb24iLCAxLCA0LCA0LAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgInB5cmFtaWRzZWdtZW50IiwKQEAgLTE4MSwxOSArMTc5LDYgQEAKIHN0YXRpYyB2b2lkCiBnc3RfcHlyYW1pZF9zZWdtZW50X2luaXQgKEdzdFB5cmFtaWRTZWdtZW50ICogZmlsdGVyKQogewotICBmaWx0ZXItPnNpbmtwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNpbmtfZmFjdG9yeSwgInNpbmsiKTsKLSAgR1NUX1BBRF9TRVRfUFJPWFlfQ0FQUyAoZmlsdGVyLT5zaW5rcGFkKTsKLQotICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZmlsdGVyLT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9weXJhbWlkX3NlZ21lbnRfaGFuZGxlX3NpbmtfZXZlbnQpKTsKLSAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGZpbHRlci0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfcHlyYW1pZF9zZWdtZW50X2NoYWluKSk7Ci0KLSAgZmlsdGVyLT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNyY19mYWN0b3J5LCAic3JjIik7Ci0gIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKGZpbHRlci0+c3JjcGFkKTsKLQotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zaW5rcGFkKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZpbHRlciksIGZpbHRlci0+c3JjcGFkKTsKICAgZmlsdGVyLT5zdG9yYWdlID0gY3ZDcmVhdGVNZW1TdG9yYWdlIChCTE9DS19TSVpFKTsKICAgZmlsdGVyLT5jb21wID0KICAgICAgIGN2Q3JlYXRlU2VxICgwLCBzaXplb2YgKEN2U2VxKSwgc2l6ZW9mIChDdlBvaW50KSwgZmlsdGVyLT5zdG9yYWdlKTsKQEAgLTIwMSw2ICsxODYsOSBAQAogICBmaWx0ZXItPnRocmVzaG9sZDEgPSA1MC4wOwogICBmaWx0ZXItPnRocmVzaG9sZDIgPSA2MC4wOwogICBmaWx0ZXItPmxldmVsID0gNDsKKworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBUUlVFKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1Myw3OCArMjQxLDE5IEBACiAgIH0KIH0KIAotLyogR3N0RWxlbWVudCB2bWV0aG9kIGltcGxlbWVudGF0aW9ucyAqLwotCi0vKiB0aGlzIGZ1bmN0aW9uIGhhbmRsZXMgdGhlIGxpbmsgd2l0aCBvdGhlciBlbGVtZW50cyAqLwotc3RhdGljIGdib29sZWFuCi1nc3RfcHlyYW1pZF9zZWdtZW50X2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KQotewotICBHc3RQeXJhbWlkU2VnbWVudCAqZmlsdGVyOwotICBHc3RWaWRlb0luZm8gaW5mbzsKLSAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKLSAgZmlsdGVyID0gR1NUX1BZUkFNSURfU0VHTUVOVCAocGFyZW50KTsKLQotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgotICAgIHsKLSAgICAgIEdzdENhcHMgKmNhcHM7Ci0gICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKLSAgICAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpOwotCi0gICAgICBpZiAoZmlsdGVyLT5jdkltYWdlICE9IE5VTEwpIHsKLSAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2SW1hZ2UpOwotICAgICAgfQotICAgICAgZmlsdGVyLT5jdkltYWdlID0KLSAgICAgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKGluZm8ud2lkdGgsIGluZm8uaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAzKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotLyogY2hhaW4gZnVuY3Rpb24KKy8qIHRyYW5zZm9ybSBmdW5jdGlvbgogICogdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1YWwgcHJvY2Vzc2luZwogICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X3B5cmFtaWRfc2VnbWVudF9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKK2dzdF9weXJhbWlkX3NlZ21lbnRfdHJhbnNmb3JtX2lwIChHc3RPcGVuY3ZWaWRlb0ZpbHRlciAqIGJhc2UsIEdzdEJ1ZmZlciAqIGJ1ZiwKKyAgICBJcGxJbWFnZSAqIGltZykKIHsKLSAgR3N0UHlyYW1pZFNlZ21lbnQgKmZpbHRlcjsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIEdzdE1hcEluZm8gaW5mbzsKLSAgR3N0TWFwSW5mbyBvdXRpbmZvOworICBHc3RQeXJhbWlkU2VnbWVudCAqZmlsdGVyID0gR1NUX1BZUkFNSURfU0VHTUVOVCAoYmFzZSk7CiAKLSAgZmlsdGVyID0gR1NUX1BZUkFNSURfU0VHTUVOVCAoR1NUX09CSkVDVF9QQVJFTlQgKHBhZCkpOwotCi0gIGJ1ZiA9IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSAoYnVmKTsKLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJmluZm8sIEdTVF9NQVBfUkVBRFdSSVRFKTsKLSAgZmlsdGVyLT5jdkltYWdlLT5pbWFnZURhdGEgPSAoY2hhciAqKSBpbmZvLmRhdGE7Ci0gIGZpbHRlci0+Y3ZTZWdtZW50ZWRJbWFnZSA9IGN2Q2xvbmVJbWFnZSAoZmlsdGVyLT5jdkltYWdlKTsKLQotICBjdlB5clNlZ21lbnRhdGlvbiAoZmlsdGVyLT5jdkltYWdlLCBmaWx0ZXItPmN2U2VnbWVudGVkSW1hZ2UsIGZpbHRlci0+c3RvcmFnZSwKKyAgY3ZQeXJTZWdtZW50YXRpb24gKGltZywgaW1nLCBmaWx0ZXItPnN0b3JhZ2UsCiAgICAgICAmKGZpbHRlci0+Y29tcCksIGZpbHRlci0+bGV2ZWwsIGZpbHRlci0+dGhyZXNob2xkMSwgZmlsdGVyLT50aHJlc2hvbGQyKTsKIAotICAvKiBUT0RPIGxvb2sgaWYgdGhlcmUgaXMgYSB3YXkgaW4gb3BlbmN2IHRvIHJldXNlIHRoZSBpbWFnZSBkYXRhIGFuZAotICAgKiBkZWxldGUgb25seSB0aGUgc3RydWN0IGhlYWRlcnMuIFdvdWxkIGF2b2lkIGEgbWVtY3B5IGhlcmUgKi8KLQotICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGZpbHRlci0+Y3ZTZWdtZW50ZWRJbWFnZS0+aW1hZ2VTaXplKTsKLSAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8gKG91dGJ1ZiwgYnVmLCBHU1RfQlVGRkVSX0NPUFlfTUVUQURBVEEsIDAsIC0xKTsKLSAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm91dGluZm8sIEdTVF9NQVBfV1JJVEUpOwotICBtZW1jcHkgKG91dGluZm8uZGF0YSwgZmlsdGVyLT5jdlNlZ21lbnRlZEltYWdlLT5pbWFnZURhdGEsCi0gICAgICBnc3RfYnVmZmVyX2dldF9zaXplIChvdXRidWYpKTsKLQotICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZpbmZvKTsKLSAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2U2VnbWVudGVkSW1hZ2UpOwotICBnX2Fzc2VydCAoZmlsdGVyLT5jdlNlZ21lbnRlZEltYWdlID09IE5VTEwpOwotCi0gIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm91dGluZm8pOwotICByZXR1cm4gZ3N0X3BhZF9wdXNoIChmaWx0ZXItPnNyY3BhZCwgb3V0YnVmKTsKKyAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCiAKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuaCBiL2V4dC9vcGVuY3YvZ3N0cHlyYW1pZHNlZ21lbnQuaAppbmRleCA1ODZlZjJjLi5lNzE1NzY2IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHB5cmFtaWRzZWdtZW50LmgKKysrIGIvZXh0L29wZW5jdi9nc3RweXJhbWlkc2VnbWVudC5oCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNaWNoYWVsIFNoZWxkb24gPG1pa2VAbWlrZWFzb2Z0LmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDYsMTIgKzQ2LDkgQEAKICNpZm5kZWYgX19HU1RfUFlSQU1JRF9TRUdNRU5UX0hfXwogI2RlZmluZSBfX0dTVF9QWVJBTUlEX1NFR01FTlRfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KICNpbmNsdWRlIDxvcGVuY3YyL2NvcmUvdmVyc2lvbi5ocHA+Ci0KLSNpZiBDVl9NQUpPUl9WRVJTSU9OICogMTAwICsgQ1ZfTUlOT1JfVkVSU0lPTiA+PSAyMDQKICNpbmNsdWRlIDxvcGVuY3YyL2xlZ2FjeS9sZWdhY3kuaHBwPgotI2VuZGlmCiAKIEdfQkVHSU5fREVDTFMKIC8qICNkZWZpbmVzIGRvbid0IGxpa2Ugd2hpdGVzcGFjZXkgYml0cyAqLwpAQCAtNjUsMTkgKzYyLDE4IEBACiAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9QWVJBTUlEX1NFR01FTlQpKQogI2RlZmluZSBHU1RfSVNfUFlSQU1JRF9TRUdNRU5UX0NMQVNTKGtsYXNzKSBcCiAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1BZUkFNSURfU0VHTUVOVCkpCisKIHR5cGVkZWYgc3RydWN0IF9Hc3RQeXJhbWlkU2VnbWVudCBHc3RQeXJhbWlkU2VnbWVudDsKIHR5cGVkZWYgc3RydWN0IF9Hc3RQeXJhbWlkU2VnbWVudENsYXNzIEdzdFB5cmFtaWRTZWdtZW50Q2xhc3M7CiAKIHN0cnVjdCBfR3N0UHlyYW1pZFNlZ21lbnQKIHsKLSAgR3N0RWxlbWVudCBlbGVtZW50OworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OwogCiAgIEdzdFBhZCAqc2lua3BhZCwgKnNyY3BhZDsKIAogICBnYm9vbGVhbiBzaWxlbnQ7CiAKLSAgSXBsSW1hZ2UgKmN2SW1hZ2UsICpjdlNlZ21lbnRlZEltYWdlOwotCiAgIEN2TWVtU3RvcmFnZSAqc3RvcmFnZTsKIAogICBDdlNlcSAqY29tcDsKQEAgLTg5LDcgKzg1LDcgQEAKIAogc3RydWN0IF9Hc3RQeXJhbWlkU2VnbWVudENsYXNzCiB7Ci0gIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7CisgIEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgcGFyZW50X2NsYXNzOwogfTsKIAogR1R5cGUgZ3N0X3B5cmFtaWRfc2VnbWVudF9nZXRfdHlwZSAodm9pZCk7CmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHJldGluZXguYyBiL2V4dC9vcGVuY3YvZ3N0cmV0aW5leC5jcHAKc2ltaWxhcml0eSBpbmRleCA5NCUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3RyZXRpbmV4LmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0cmV0aW5leC5jcHAKaW5kZXggOWE3YzhkYy4uNzU4NDJmOCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RyZXRpbmV4LmMKKysrIGIvZXh0L29wZW5jdi9nc3RyZXRpbmV4LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMyBNaWd1ZWwgQ2FzYXMtU2FuY2hleiA8bWlndWVsZWNhc2Fzc2FuY2hlekBnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQ2LDggKzQ2LDggQEAKICAqCiAgKiBCYXNpYyBhbmQgbXVsdGlzY2FsZSByZXRpbmV4IGZvciBjb2xvdXIgaW1hZ2UgZW5oYW5jZW1lbnQsIHNlZSBhcnRpY2xlOgogICoKLSAqIFJhaG1hbiwgWmlhLXVyLCBEYW5pZWwgSi4gSm9ic29uLCBhbmQgR2xlbm4gQS4gV29vZGVsbC4gIk11bHRpLXNjYWxlIHJldGluZXggZm9yIAotICogY29sb3IgaW1hZ2UgZW5oYW5jZW1lbnQuIiBJbWFnZSBQcm9jZXNzaW5nLCAxOTk2LiBQcm9jZWVkaW5ncy4sIEludGVybmF0aW9uYWwgCisgKiBSYWhtYW4sIFppYS11ciwgRGFuaWVsIEouIEpvYnNvbiwgYW5kIEdsZW5uIEEuIFdvb2RlbGwuICJNdWx0aS1zY2FsZSByZXRpbmV4IGZvcgorICogY29sb3IgaW1hZ2UgZW5oYW5jZW1lbnQuIiBJbWFnZSBQcm9jZXNzaW5nLCAxOTk2LiBQcm9jZWVkaW5ncy4sIEludGVybmF0aW9uYWwKICAqIENvbmZlcmVuY2Ugb24uIFZvbC4gMy4gSUVFRSwgMTk5Ni4KICAqCiAgKiA8cmVmc2VjdDI+CkBAIC02MiwxMyArNjIsMTQgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgImdzdHJldGluZXguaCIKICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CisjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2MuaHBwPgogCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfcmV0aW5leF9kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfcmV0aW5leF9kZWJ1ZwogCit1c2luZyBuYW1lc3BhY2UgY3Y7CiAvKiBGaWx0ZXIgc2lnbmFscyBhbmQgYXJncyAqLwogZW51bQogewpAQCAtMTUzLDEyICsxNTQsMTMgQEAKICAgICAgICAgICAiUmV0aW5leCBtZXRob2QgdG8gdXNlIiwKICAgICAgICAgICAiUmV0aW5leCBtZXRob2QgdG8gdXNlIiwKICAgICAgICAgICBHU1RfVFlQRV9SRVRJTkVYX01FVEhPRCwgREVGQVVMVF9NRVRIT0QsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0NBTEVTLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoInNjYWxlcyIsICJzY2FsZXMiLAogICAgICAgICAgICJBbW91bnQgb2YgZ2F1c3NpYW4gZmlsdGVycyAoc2NhbGVzKSB1c2VkIGluIG11bHRpc2NhbGUgcmV0aW5leCIsIDEsCi0gICAgICAgICAgNCwgREVGQVVMVF9TQ0FMRVMsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIDQsIERFRkFVTFRfU0NBTEVTLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgIlJldGluZXggaW1hZ2UgY29sb3VyIGVuaGFjZW1lbnQiLCAiRmlsdGVyL0VmZmVjdC9WaWRlbyIsCkBAIC0xNjksMTAgKzE3MSw4IEBACiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfZmFjdG9yeSkpOwogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua19mYWN0b3J5KSk7Ci0KIH0KIAotCiAvKiBpbml0aWFsaXplIHRoZSBuZXcgZWxlbWVudAogICogaW5zdGFudGlhdGUgcGFkcyBhbmQgYWRkIHRoZW0gdG8gZWxlbWVudAogICogc2V0IHBhZCBjYWxiYWNrIGZ1bmN0aW9ucwpAQCAtMTg0LDcgKzE4NCw4IEBACiAgIGZpbHRlci0+bWV0aG9kID0gREVGQVVMVF9NRVRIT0Q7CiAgIGZpbHRlci0+c2NhbGVzID0gREVGQVVMVF9TQ0FMRVM7CiAgIGZpbHRlci0+Y3VycmVudF9zY2FsZXMgPSAwOwotICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIFRSVUUpOworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBUUlVFKTsKIH0KIAogCkBAIC0yOTMsMTUgKzI5NCwxNiBAQAogICBpbnQgZ2FpbiA9IDEyODsKICAgaW50IG9mZnNldCA9IDEyODsKICAgaW50IGZpbHRlcl9zaXplOworICBNYXQgaWN2RCAocmV0aW5leC0+Y3ZELCBmYWxzZSk7CiAKLSAgaWYgKCFnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mbywgR1NUX01BUF9SRUFEV1JJVEUpKSB7CisgIGlmICghZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJmluZm8sIChHc3RNYXBGbGFncykgR1NUX01BUF9SRUFEV1JJVEUpKSB7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CiAgIHJldGluZXgtPmN2UkdCaW4tPmltYWdlRGF0YSA9IChjaGFyICopIGluZm8uZGF0YTsKIAogICAvKiBCYXNpYyByZXRpbmV4IHJlc3RvcmF0aW9uLiAgVGhlIGltYWdlIGFuZCBhIGZpbHRlcmVkIGltYWdlIGFyZSBjb252ZXJ0ZWQKICAgICAgdG8gdGhlIGxvZyBkb21haW4gYW5kIHN1YnRyYWN0ZWQuCi0gICAgIE8gPSBMb2coSSkgLSBMb2coSChJKSkgICAKKyAgICAgTyA9IExvZyhJKSAtIExvZyhIKEkpKQogICAgICB3aGVyZSBPIGlzIHRoZSBvdXRwdXQsIEggaXMgYSBnYXVzc2lhbiAyZCBmaWx0ZXIgYW5kIEkgaXMgdGhlIGlucHV0IGltYWdlLiAqLwogICBpZiAoTUVUSE9EX0JBU0lDID09IHJldGluZXgtPm1ldGhvZCkgewogICAgIC8qICBDb21wdXRlIGxvZyBpbWFnZSAqLwpAQCAtMzEzLDggKzMxNSw3IEBACiAgICAgZmlsdGVyX3NpemUgPSBmaWx0ZXJfc2l6ZSAqIDIgKyAxOwogCiAgICAgY3ZDb252ZXJ0IChyZXRpbmV4LT5jdlJHQmluLCByZXRpbmV4LT5jdkQpOwotICAgIGN2U21vb3RoIChyZXRpbmV4LT5jdkQsIHJldGluZXgtPmN2RCwgQ1ZfR0FVU1NJQU4sIGZpbHRlcl9zaXplLCBmaWx0ZXJfc2l6ZSwKLSAgICAgICAgMC4wLCAwLjApOworICAgIEdhdXNzaWFuQmx1ciAoaWN2RCwgaWN2RCwgU2l6ZSAoZmlsdGVyX3NpemUsIGZpbHRlcl9zaXplKSwgMC4wLCAwLjApOwogICAgIGN2TG9nIChyZXRpbmV4LT5jdkQsIHJldGluZXgtPmN2Qyk7CiAKICAgICAvKiAgQ29tcHV0ZSBkaWZmZXJlbmNlICovCkBAIC0zNTksOCArMzYwLDcgQEAKICAgICAgIGZpbHRlcl9zaXplID0gZmlsdGVyX3NpemUgKiAyICsgMTsKIAogICAgICAgY3ZDb252ZXJ0IChyZXRpbmV4LT5jdlJHQmluLCByZXRpbmV4LT5jdkQpOwotICAgICAgY3ZTbW9vdGggKHJldGluZXgtPmN2RCwgcmV0aW5leC0+Y3ZELCBDVl9HQVVTU0lBTiwgZmlsdGVyX3NpemUsCi0gICAgICAgICAgZmlsdGVyX3NpemUsIDAuMCwgMC4wKTsKKyAgICAgIEdhdXNzaWFuQmx1ciAoaWN2RCwgaWN2RCwgU2l6ZSAoZmlsdGVyX3NpemUsIGZpbHRlcl9zaXplKSwgMC4wLCAwLjApOwogICAgICAgY3ZMb2cgKHJldGluZXgtPmN2RCwgcmV0aW5leC0+Y3ZDKTsKIAogICAgICAgLyogIENvbXB1dGUgd2VpZ2h0ZWQgZGlmZmVyZW5jZSAqLwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3RyZXRpbmV4LmggYi9leHQvb3BlbmN2L2dzdHJldGluZXguaAppbmRleCBjNTNkMjMwLi5kMDkwYTViIDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHJldGluZXguaAorKysgYi9leHQvb3BlbmN2L2dzdHJldGluZXguaApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMyBNaWd1ZWwgQ2FzYXMtU2FuY2hleiA8bWlndWVsZWNhc2Fzc2FuY2hlekBnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTQ0LDExICs0NCw5IEBACiAjaWZuZGVmIF9fR1NUX1JFVElORVhfSF9fCiAjZGVmaW5lIF9fR1NUX1JFVElORVhfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvZmlsdGVyLmg+CiAjaW5jbHVkZSA8b3BlbmN2Mi9jb3JlL2NvcmVfYy5oPgogCisjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KIAogR19CRUdJTl9ERUNMUwogLyogI2RlZmluZXMgZG9uJ3QgbGlrZSB3aGl0ZXNwYWNleSBiaXRzICovCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHNlZ21lbnRhdGlvbi5jcHAgYi9leHQvb3BlbmN2L2dzdHNlZ21lbnRhdGlvbi5jcHAKaW5kZXggNzljYmI0OS4uZTBhYTgyMSAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3RzZWdtZW50YXRpb24uY3BwCisrKyBiL2V4dC9vcGVuY3YvZ3N0c2VnbWVudGF0aW9uLmNwcApAQCAtMSwxNSArMSwxNSBAQAogLyoKICAqIEdTdHJlYW1lcgogICogQ29weXJpZ2h0IChDKSAyMDEzIE1pZ3VlbCBDYXNhcy1TYW5jaGV6IDxtaWd1ZWxlY2FzYXNzYW5jaGV6QGdtYWlsLmNvbT4KLSAqIEV4Y2VwdDogUGFydHMgb2YgY29kZSBpbnNpZGUgdGhlIHByZXByb2Nlc3NvciBkZWZpbmUgQ09ERV9GUk9NX09SRUlMTFlfQk9PSywgCi0gKiAgd2hpY2ggYXJlIGRvd25sb2FkZWQgZnJvbSBPJ1JlaWxseSB3ZWJzaXRlIAorICogRXhjZXB0OiBQYXJ0cyBvZiBjb2RlIGluc2lkZSB0aGUgcHJlcHJvY2Vzc29yIGRlZmluZSBDT0RFX0ZST01fT1JFSUxMWV9CT09LLAorICogIHdoaWNoIGFyZSBkb3dubG9hZGVkIGZyb20gTydSZWlsbHkgd2Vic2l0ZQogICogIFtodHRwOi8vZXhhbXBsZXMub3JlaWxseS5jb20vOTc4MDU5NjUxNjEzMC9dCiAgKiAgYW5kIGFkYXB0ZWQuIEl0cyBsaWNlbnNlIHJlYWRzOgogICogICJPY3QuIDMsIDIwMDgKLSAqICAgUmlnaHQgdG8gdXNlIHRoaXMgY29kZSBpbiBhbnkgd2F5IHlvdSB3YW50IHdpdGhvdXQgd2FycmVudHksIHN1cHBvcnQgb3IgCisgKiAgIFJpZ2h0IHRvIHVzZSB0aGlzIGNvZGUgaW4gYW55IHdheSB5b3Ugd2FudCB3aXRob3V0IHdhcnJlbnR5LCBzdXBwb3J0IG9yCiAgKiAgIGFueSBndWFyZW50ZWUgb2YgaXQgd29ya2luZy4gIgogICoKLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNTUsMjcgKzU1LDI3IEBACiAgKgogICogVGhpcyBlbGVtZW50IGNyZWF0ZXMgYW5kIHVwZGF0ZXMgYSBmZy9iZyBtb2RlbCB1c2luZyBvbmUgb2Ygc2V2ZXJhbCBhcHByb2FjaGVzLgogICogVGhlIG9uZSBjYWxsZWQgImNvZGVib29rIiByZWZlcnMgdG8gdGhlIGNvZGVib29rIGFwcHJvYWNoIGZvbGxvd2luZyB0aGUgb3BlbmN2Ci0gKiBPJ1JlaWxseSBib29rIFsxXSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBLLiBLaW0sIAotICogVC4gSC4gQ2hhbGlkYWJob25nc2UsIEQuIEhhcndvb2QgYW5kIEwuIERhdmlzIFsyXS4gQmFja2dyb3VuZFN1YnRyYWN0b3JNT0cgWzNdLCAKLSAqIG9yIE1PRyBmb3Igc2hvcnRzLCByZWZlcnMgdG8gYSBHYXVzc2lhbiBNaXh0dXJlLWJhc2VkIEJhY2tncm91bmQvRm9yZWdyb3VuZCAKKyAqIE8nUmVpbGx5IGJvb2sgWzFdIGltcGxlbWVudGF0aW9uIG9mIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIEsuIEtpbSwKKyAqIFQuIEguIENoYWxpZGFiaG9uZ3NlLCBELiBIYXJ3b29kIGFuZCBMLiBEYXZpcyBbMl0uIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HIFszXSwKKyAqIG9yIE1PRyBmb3Igc2hvcnRzLCByZWZlcnMgdG8gYSBHYXVzc2lhbiBNaXh0dXJlLWJhc2VkIEJhY2tncm91bmQvRm9yZWdyb3VuZAogICogU2VnbWVudGF0aW9uIEFsZ29yaXRobS4gT3BlbkNWIE1PRyBpbXBsZW1lbnRzIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFs0XS4KLSAqIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HMiBbNV0sIHJlZmVycyB0byBhbm90aGVyIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgCi0gKiBCYWNrZ3JvdW5kL0ZvcmVncm91bmQgc2VnbWVudGF0aW9uIGFsZ29yaXRobS4gT3BlbkNWIE1PRzIgaW1wbGVtZW50cyB0aGUgCisgKiBCYWNrZ3JvdW5kU3VidHJhY3Rvck1PRzIgWzVdLCByZWZlcnMgdG8gYW5vdGhlciBHYXVzc2lhbiBNaXh0dXJlLWJhc2VkCisgKiBCYWNrZ3JvdW5kL0ZvcmVncm91bmQgc2VnbWVudGF0aW9uIGFsZ29yaXRobS4gT3BlbkNWIE1PRzIgaW1wbGVtZW50cyB0aGUKICAqIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gWzZdIGFuZCBbN10uCiAgKgotICogWzFdIExlYXJuaW5nIE9wZW5DVjogQ29tcHV0ZXIgVmlzaW9uIHdpdGggdGhlIE9wZW5DViBMaWJyYXJ5IGJ5IEdhcnkgQnJhZHNraSAKKyAqIFsxXSBMZWFybmluZyBPcGVuQ1Y6IENvbXB1dGVyIFZpc2lvbiB3aXRoIHRoZSBPcGVuQ1YgTGlicmFyeSBieSBHYXJ5IEJyYWRza2kKICAqIGFuZCBBZHJpYW4gS2FlaGxlciwgUHVibGlzaGVkIGJ5IE8nUmVpbGx5IE1lZGlhLCBPY3RvYmVyIDMsIDIwMDgKLSAqIFsyXSAiUmVhbC10aW1lIEZvcmVncm91bmQtQmFja2dyb3VuZCBTZWdtZW50YXRpb24gdXNpbmcgQ29kZWJvb2sgTW9kZWwiLCAKKyAqIFsyXSAiUmVhbC10aW1lIEZvcmVncm91bmQtQmFja2dyb3VuZCBTZWdtZW50YXRpb24gdXNpbmcgQ29kZWJvb2sgTW9kZWwiLAogICogUmVhbC10aW1lIEltYWdpbmcsIFZvbHVtZSAxMSwgSXNzdWUgMywgUGFnZXMgMTY3LTI1NiwgSnVuZSAyMDA1LgogICogWzNdIGh0dHA6Ly9vcGVuY3YuaXRzZWV6LmNvbS9tb2R1bGVzL3ZpZGVvL2RvYy9tb3Rpb25fYW5hbHlzaXNfYW5kX29iamVjdF90cmFja2luZy5odG1sI2JhY2tncm91bmRzdWJ0cmFjdG9ybW9nCi0gKiBbNF0gUC4gS2FkZXdUcmFLdVBvbmcgYW5kIFIuIEJvd2RlbiwgIkFuIGltcHJvdmVkIGFkYXB0aXZlIGJhY2tncm91bmQgCi0gKiBtaXh0dXJlIG1vZGVsIGZvciByZWFsLXRpbWUgdHJhY2tpbmcgd2l0aCBzaGFkb3cgZGV0ZWN0aW9uIiwgUHJvYy4gMm5kIAorICogWzRdIFAuIEthZGV3VHJhS3VQb25nIGFuZCBSLiBCb3dkZW4sICJBbiBpbXByb3ZlZCBhZGFwdGl2ZSBiYWNrZ3JvdW5kCisgKiBtaXh0dXJlIG1vZGVsIGZvciByZWFsLXRpbWUgdHJhY2tpbmcgd2l0aCBzaGFkb3cgZGV0ZWN0aW9uIiwgUHJvYy4gMm5kCiAgKiBFdXJvcGVhbiBXb3Jrc2hvcCBvbiBBZHZhbmNlZCBWaWRlby1CYXNlZCBTdXJ2ZWlsbGFuY2UgU3lzdGVtcywgMjAwMQogICogWzVdIGh0dHA6Ly9vcGVuY3YuaXRzZWV6LmNvbS9tb2R1bGVzL3ZpZGVvL2RvYy9tb3Rpb25fYW5hbHlzaXNfYW5kX29iamVjdF90cmFja2luZy5odG1sI2JhY2tncm91bmRzdWJ0cmFjdG9ybW9nMgotICogWzZdIFouWml2a292aWMsICJJbXByb3ZlZCBhZGFwdGl2ZSBHYXVzaWFuIG1peHR1cmUgbW9kZWwgZm9yIGJhY2tncm91bmQgCisgKiBbNl0gWi5aaXZrb3ZpYywgIkltcHJvdmVkIGFkYXB0aXZlIEdhdXNpYW4gbWl4dHVyZSBtb2RlbCBmb3IgYmFja2dyb3VuZAogICogc3VidHJhY3Rpb24iLCBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2UgUGF0dGVybiBSZWNvZ25pdGlvbiwgVUssIEF1Z3VzdCwgMjAwNC4KLSAqIFs3XSBaLlppdmtvdmljLCBGLiB2YW4gZGVyIEhlaWpkZW4sICJFZmZpY2llbnQgQWRhcHRpdmUgRGVuc2l0eSBFc3RpbWF0aW9uIAotICogcGVyIEltYWdlIFBpeGVsIGZvciB0aGUgVGFzayBvZiBCYWNrZ3JvdW5kIFN1YnRyYWN0aW9uIiwgUGF0dGVybiBSZWNvZ25pdGlvbiAKKyAqIFs3XSBaLlppdmtvdmljLCBGLiB2YW4gZGVyIEhlaWpkZW4sICJFZmZpY2llbnQgQWRhcHRpdmUgRGVuc2l0eSBFc3RpbWF0aW9uCisgKiBwZXIgSW1hZ2UgUGl4ZWwgZm9yIHRoZSBUYXNrIG9mIEJhY2tncm91bmQgU3VidHJhY3Rpb24iLCBQYXR0ZXJuIFJlY29nbml0aW9uCiAgKiBMZXR0ZXJzLCB2b2wuIDI3LCBuby4gNywgcGFnZXMgNzczLTc4MCwgMjAwNi4KICAqCiAgKiA8cmVmc2VjdDI+CkBAIC05MCw4ICs5MCw2IEBACiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgImdzdHNlZ21lbnRhdGlvbi5oIgogI2luY2x1ZGUgPG9wZW5jdjIvdmlkZW8vYmFja2dyb3VuZF9zZWdtLmhwcD4KICNpbmNsdWRlIDxvcGVuY3YyL2ltZ3Byb2MvaW1ncHJvY19jLmg+CkBAIC0zODIsMTIgKzM4MCwxMiBAQAogICBjdkN2dENvbG9yIChmaWx0ZXItPmN2UkdCQSwgZmlsdGVyLT5jdlJHQiwgQ1ZfUkdCQTJSR0IpOwogICBjdkN2dENvbG9yIChmaWx0ZXItPmN2UkdCLCBmaWx0ZXItPmN2WVVWLCBDVl9SR0IyWUNyQ2IpOwogCi0gIC8qIENyZWF0ZSBhbmQgdXBkYXRlIGEgZmcvYmcgbW9kZWwgdXNpbmcgYSBjb2RlYm9vayBhcHByb2FjaCBmb2xsb3dpbmcgdGhlIAorICAvKiBDcmVhdGUgYW5kIHVwZGF0ZSBhIGZnL2JnIG1vZGVsIHVzaW5nIGEgY29kZWJvb2sgYXBwcm9hY2ggZm9sbG93aW5nIHRoZQogICAgKiBvcGVuY3YgTydSZWlsbHkgYm9vayBbMV0gaW1wbGVtZW50YXRpb24gb2YgdGhlIGFsZ28gZGVzY3JpYmVkIGluIFsyXS4KICAgICoKLSAgICogWzFdIExlYXJuaW5nIE9wZW5DVjogQ29tcHV0ZXIgVmlzaW9uIHdpdGggdGhlIE9wZW5DViBMaWJyYXJ5IGJ5IEdhcnkgCisgICAqIFsxXSBMZWFybmluZyBPcGVuQ1Y6IENvbXB1dGVyIFZpc2lvbiB3aXRoIHRoZSBPcGVuQ1YgTGlicmFyeSBieSBHYXJ5CiAgICAqIEJyYWRza2kgYW5kIEFkcmlhbiBLYWVobGVyLCBQdWJsaXNoZWQgYnkgTydSZWlsbHkgTWVkaWEsIE9jdG9iZXIgMywgMjAwOAotICAgKiBbMl0gIlJlYWwtdGltZSBGb3JlZ3JvdW5kLUJhY2tncm91bmQgU2VnbWVudGF0aW9uIHVzaW5nIENvZGVib29rIE1vZGVsIiwgCisgICAqIFsyXSAiUmVhbC10aW1lIEZvcmVncm91bmQtQmFja2dyb3VuZCBTZWdtZW50YXRpb24gdXNpbmcgQ29kZWJvb2sgTW9kZWwiLAogICAgKiBSZWFsLXRpbWUgSW1hZ2luZywgVm9sdW1lIDExLCBJc3N1ZSAzLCBQYWdlcyAxNjctMjU2LCBKdW5lIDIwMDUuICovCiAgIGlmIChNRVRIT0RfQk9PSyA9PSBmaWx0ZXItPm1ldGhvZCkgewogICAgIHVuc2lnbmVkIGNiQm91bmRzWzNdID0geyAxMCwgNSwgNSB9OwpAQCAtNDI5LDI3ICs0MjcsMjcgQEAKICAgICAgICAgZmlsdGVyLT5tZW1fc3RvcmFnZSwgZmlsdGVyLT5jb250b3Vycyk7CiAKICAgfQotICAvKiBDcmVhdGUgdGhlIGZvcmVncm91bmQgYW5kIGJhY2tncm91bmQgbWFza3MgdXNpbmcgQmFja2dyb3VuZFN1YnRyYWN0b3JNT0cgWzFdLCAKLSAgICogIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kIHNlZ21lbnRhdGlvbiBhbGdvcml0aG0uIE9wZW5DViAKKyAgLyogQ3JlYXRlIHRoZSBmb3JlZ3JvdW5kIGFuZCBiYWNrZ3JvdW5kIG1hc2tzIHVzaW5nIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HIFsxXSwKKyAgICogIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kIHNlZ21lbnRhdGlvbiBhbGdvcml0aG0uIE9wZW5DVgogICAgKiBNT0cgaW1wbGVtZW50cyB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBbMl0uCi0gICAqIAorICAgKgogICAgKiBbMV0gaHR0cDovL29wZW5jdi5pdHNlZXouY29tL21vZHVsZXMvdmlkZW8vZG9jL21vdGlvbl9hbmFseXNpc19hbmRfb2JqZWN0X3RyYWNraW5nLmh0bWwjYmFja2dyb3VuZHN1YnRyYWN0b3Jtb2cKLSAgICogWzJdIFAuIEthZGV3VHJhS3VQb25nIGFuZCBSLiBCb3dkZW4sICJBbiBpbXByb3ZlZCBhZGFwdGl2ZSBiYWNrZ3JvdW5kIAotICAgKiBtaXh0dXJlIG1vZGVsIGZvciByZWFsLXRpbWUgdHJhY2tpbmcgd2l0aCBzaGFkb3cgZGV0ZWN0aW9uIiwgUHJvYy4gMm5kIAorICAgKiBbMl0gUC4gS2FkZXdUcmFLdVBvbmcgYW5kIFIuIEJvd2RlbiwgIkFuIGltcHJvdmVkIGFkYXB0aXZlIGJhY2tncm91bmQKKyAgICogbWl4dHVyZSBtb2RlbCBmb3IgcmVhbC10aW1lIHRyYWNraW5nIHdpdGggc2hhZG93IGRldGVjdGlvbiIsIFByb2MuIDJuZAogICAgKiBFdXJvcGVhbiBXb3Jrc2hvcCBvbiBBZHZhbmNlZCBWaWRlby1CYXNlZCBTdXJ2ZWlsbGFuY2UgU3lzdGVtcywgMjAwMQogICAgKi8KICAgZWxzZSBpZiAoTUVUSE9EX01PRyA9PSBmaWx0ZXItPm1ldGhvZCkgewogICAgIHJ1bl9tb2dfaXRlcmF0aW9uIChmaWx0ZXIpOwogICB9CiAgIC8qIENyZWF0ZSB0aGUgZm9yZWdyb3VuZCBhbmQgYmFja2dyb3VuZCBtYXNrcyB1c2luZyBCYWNrZ3JvdW5kU3VidHJhY3Rvck1PRzIKLSAgICogWzFdLCBHYXVzc2lhbiBNaXh0dXJlLWJhc2VkIEJhY2tncm91bmQvRm9yZWdyb3VuZCBzZWdtZW50YXRpb24gYWxnb3JpdGhtLiAKKyAgICogWzFdLCBHYXVzc2lhbiBNaXh0dXJlLWJhc2VkIEJhY2tncm91bmQvRm9yZWdyb3VuZCBzZWdtZW50YXRpb24gYWxnb3JpdGhtLgogICAgKiBPcGVuQ1YgTU9HMiBpbXBsZW1lbnRzIHRoZSBhbGdvcml0aG0gZGVzY3JpYmVkIGluIFsyXSBhbmQgWzNdLgotICAgKiAKKyAgICoKICAgICogWzFdIGh0dHA6Ly9vcGVuY3YuaXRzZWV6LmNvbS9tb2R1bGVzL3ZpZGVvL2RvYy9tb3Rpb25fYW5hbHlzaXNfYW5kX29iamVjdF90cmFja2luZy5odG1sI2JhY2tncm91bmRzdWJ0cmFjdG9ybW9nMgotICAgKiBbMl0gWi5aaXZrb3ZpYywgIkltcHJvdmVkIGFkYXB0aXZlIEdhdXNpYW4gbWl4dHVyZSBtb2RlbCBmb3IgYmFja2dyb3VuZCAKKyAgICogWzJdIFouWml2a292aWMsICJJbXByb3ZlZCBhZGFwdGl2ZSBHYXVzaWFuIG1peHR1cmUgbW9kZWwgZm9yIGJhY2tncm91bmQKICAgICogc3VidHJhY3Rpb24iLCBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2UgUGF0dGVybiBSZWNvZ25pdGlvbiwgVUssIEF1ZyAyMDA0LgotICAgKiBbM10gWi5aaXZrb3ZpYywgRi4gdmFuIGRlciBIZWlqZGVuLCAiRWZmaWNpZW50IEFkYXB0aXZlIERlbnNpdHkgRXN0aW1hdGlvbiAKLSAgICogcGVyIEltYWdlIFBpeGVsIGZvciB0aGUgVGFzayBvZiBCYWNrZ3JvdW5kIFN1YnRyYWN0aW9uIiwgUGF0dGVybiAKKyAgICogWzNdIFouWml2a292aWMsIEYuIHZhbiBkZXIgSGVpamRlbiwgIkVmZmljaWVudCBBZGFwdGl2ZSBEZW5zaXR5IEVzdGltYXRpb24KKyAgICogcGVyIEltYWdlIFBpeGVsIGZvciB0aGUgVGFzayBvZiBCYWNrZ3JvdW5kIFN1YnRyYWN0aW9uIiwgUGF0dGVybgogICAgKiBSZWNvZ25pdGlvbiBMZXR0ZXJzLCB2b2wuIDI3LCBuby4gNywgcGFnZXMgNzczLTc4MCwgMjAwNi4gICAqLwogICBlbHNlIGlmIChNRVRIT0RfTU9HMiA9PSBmaWx0ZXItPm1ldGhvZCkgewogICAgIHJ1bl9tb2cyX2l0ZXJhdGlvbiAoZmlsdGVyKTsKQEAgLTQ4NywyMCArNDg1LDIwIEBACiAKIAogI2lmZGVmIENPREVfRlJPTV9PUkVJTExZX0JPT0sgICAvKiBTZWUgbGljZW5zZSBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBwYWdlICovCi0vKiAKLSAgaW50IHVwZGF0ZV9jb2RlYm9vayh1Y2hhciAqcCwgY29kZUJvb2sgJmMsIHVuc2lnbmVkIGNiQm91bmRzKSAKLSAgVXBkYXRlcyB0aGUgY29kZWJvb2sgZW50cnkgd2l0aCBhIG5ldyBkYXRhIHBvaW50IAotICAKLSAgcCBQb2ludGVyIHRvIGEgWVVWIG9yIEhTSSBwaXhlbCAKLSAgYyBDb2RlYm9vayBmb3IgdGhpcyBwaXhlbCAKLSAgY2JCb3VuZHMgTGVhcm5pbmcgYm91bmRzIGZvciBjb2RlYm9vayAoUnVsZSBvZiB0aHVtYjogMTApIAotICBudW1DaGFubmVscyBOdW1iZXIgb2YgY29sb3IgY2hhbm5lbHMgd2XCocKvcmUgbGVhcm5pbmcgCi0gIAotICBOT1RFUzogCi0gIGN2Qm91bmRzIG11c3QgYmUgb2YgbGVuZ3RoIGVxdWFsIHRvIG51bUNoYW5uZWxzIAotICAKLSAgUkVUVVJOIAotICBjb2RlYm9vayBpbmRleCAKKy8qCisgIGludCB1cGRhdGVfY29kZWJvb2sodWNoYXIgKnAsIGNvZGVCb29rICZjLCB1bnNpZ25lZCBjYkJvdW5kcykKKyAgVXBkYXRlcyB0aGUgY29kZWJvb2sgZW50cnkgd2l0aCBhIG5ldyBkYXRhIHBvaW50CisKKyAgcCBQb2ludGVyIHRvIGEgWVVWIG9yIEhTSSBwaXhlbAorICBjIENvZGVib29rIGZvciB0aGlzIHBpeGVsCisgIGNiQm91bmRzIExlYXJuaW5nIGJvdW5kcyBmb3IgY29kZWJvb2sgKFJ1bGUgb2YgdGh1bWI6IDEwKQorICBudW1DaGFubmVscyBOdW1iZXIgb2YgY29sb3IgY2hhbm5lbHMgd2XCocKvcmUgbGVhcm5pbmcKKworICBOT1RFUzoKKyAgY3ZCb3VuZHMgbXVzdCBiZSBvZiBsZW5ndGggZXF1YWwgdG8gbnVtQ2hhbm5lbHMKKworICBSRVRVUk4KKyAgY29kZWJvb2sgaW5kZXgKICovCiBpbnQKIHVwZGF0ZV9jb2RlYm9vayAodW5zaWduZWQgY2hhciAqcCwgY29kZUJvb2sgKiBjLCB1bnNpZ25lZCAqY2JCb3VuZHMsCkBAIC01ODksMTQgKzU4NywxNCBAQAogCiAKIC8qCi0gaW50IGNsZWFyX3N0YWxlX2VudHJpZXMoY29kZUJvb2sgJmMpIAotICBEdXJpbmcgbGVhcm5pbmcsIGFmdGVyIHlvdSd2ZSBsZWFybmVkIGZvciBzb21lIHBlcmlvZCBvZiB0aW1lLCAKLSAgcGVyaW9kaWNhbGx5IGNhbGwgdGhpcyB0byBjbGVhciBvdXQgc3RhbGUgY29kZWJvb2sgZW50cmllcyAKLSAgCi0gIGMgQ29kZWJvb2sgdG8gY2xlYW4gdXAgCi0gIAotICBSZXR1cm4gCi0gIG51bWJlciBvZiBlbnRyaWVzIGNsZWFyZWQgCisgaW50IGNsZWFyX3N0YWxlX2VudHJpZXMoY29kZUJvb2sgJmMpCisgIER1cmluZyBsZWFybmluZywgYWZ0ZXIgeW91J3ZlIGxlYXJuZWQgZm9yIHNvbWUgcGVyaW9kIG9mIHRpbWUsCisgIHBlcmlvZGljYWxseSBjYWxsIHRoaXMgdG8gY2xlYXIgb3V0IHN0YWxlIGNvZGVib29rIGVudHJpZXMKKworICBjIENvZGVib29rIHRvIGNsZWFuIHVwCisKKyAgUmV0dXJuCisgIG51bWJlciBvZiBlbnRyaWVzIGNsZWFyZWQKICovCiBpbnQKIGNsZWFyX3N0YWxlX2VudHJpZXMgKGNvZGVCb29rICogYykKQEAgLTY0MCwyNyArNjM4LDI3IEBACiAKIAogLyoKLSAgdWNoYXIgYmFja2dyb3VuZF9kaWZmKCB1Y2hhciAqcCwgY29kZUJvb2sgJmMsIAotICBpbnQgbWluTW9kLCBpbnQgbWF4TW9kKSAKLSAgR2l2ZW4gYSBwaXhlbCBhbmQgYSBjb2RlYm9vaywgZGV0ZXJtaW5lIGlmIHRoZSBwaXhlbCBpcyAKLSAgY292ZXJlZCBieSB0aGUgY29kZWJvb2sgCi0gIAotICBwIFBpeGVsIHBvaW50ZXIgKFlVViBpbnRlcmxlYXZlZCkgCi0gIGMgQ29kZWJvb2sgcmVmZXJlbmNlIAotICBudW1DaGFubmVscyBOdW1iZXIgb2YgY2hhbm5lbHMgd2UgYXJlIHRlc3RpbmcgCi0gIG1heE1vZCBBZGQgdGhpcyAocG9zc2libHkgbmVnYXRpdmUpIG51bWJlciBvbnRvIAorICB1Y2hhciBiYWNrZ3JvdW5kX2RpZmYoIHVjaGFyICpwLCBjb2RlQm9vayAmYywKKyAgaW50IG1pbk1vZCwgaW50IG1heE1vZCkKKyAgR2l2ZW4gYSBwaXhlbCBhbmQgYSBjb2RlYm9vaywgZGV0ZXJtaW5lIGlmIHRoZSBwaXhlbCBpcworICBjb3ZlcmVkIGJ5IHRoZSBjb2RlYm9vawogCi0gIG1heCBsZXZlbCB3aGVuIGRldGVybWluaW5nIGlmIG5ldyBwaXhlbCBpcyBmb3JlZ3JvdW5kIAotICBtaW5Nb2QgU3VicmFjdCB0aGlzIChwb3NzaWJseSBuZWdhdGl2ZSkgbnVtYmVyIGZyb20gCi0gIG1pbiBsZXZlbCB3aGVuIGRldGVybWluaW5nIGlmIG5ldyBwaXhlbCBpcyBmb3JlZ3JvdW5kIAotICAKLSAgTk9URVM6IAotICBtaW5Nb2QgYW5kIG1heE1vZCBtdXN0IGhhdmUgbGVuZ3RoIG51bUNoYW5uZWxzLCAKLSAgZS5nLiAzIGNoYW5uZWxzID0+IG1pbk1vZFszXSwgbWF4TW9kWzNdLiBUaGVyZSBpcyBvbmUgbWluIGFuZCAKLSAgb25lIG1heCB0aHJlc2hvbGQgcGVyIGNoYW5uZWwuIAotICAKLSAgUmV0dXJuIAotICAwID0+IGJhY2tncm91bmQsIDI1NSA9PiBmb3JlZ3JvdW5kIAorICBwIFBpeGVsIHBvaW50ZXIgKFlVViBpbnRlcmxlYXZlZCkKKyAgYyBDb2RlYm9vayByZWZlcmVuY2UKKyAgbnVtQ2hhbm5lbHMgTnVtYmVyIG9mIGNoYW5uZWxzIHdlIGFyZSB0ZXN0aW5nCisgIG1heE1vZCBBZGQgdGhpcyAocG9zc2libHkgbmVnYXRpdmUpIG51bWJlciBvbnRvCisKKyAgbWF4IGxldmVsIHdoZW4gZGV0ZXJtaW5pbmcgaWYgbmV3IHBpeGVsIGlzIGZvcmVncm91bmQKKyAgbWluTW9kIFN1YnJhY3QgdGhpcyAocG9zc2libHkgbmVnYXRpdmUpIG51bWJlciBmcm9tCisgIG1pbiBsZXZlbCB3aGVuIGRldGVybWluaW5nIGlmIG5ldyBwaXhlbCBpcyBmb3JlZ3JvdW5kCisKKyAgTk9URVM6CisgIG1pbk1vZCBhbmQgbWF4TW9kIG11c3QgaGF2ZSBsZW5ndGggbnVtQ2hhbm5lbHMsCisgIGUuZy4gMyBjaGFubmVscyA9PiBtaW5Nb2RbM10sIG1heE1vZFszXS4gVGhlcmUgaXMgb25lIG1pbiBhbmQKKyAgb25lIG1heCB0aHJlc2hvbGQgcGVyIGNoYW5uZWwuCisKKyAgUmV0dXJuCisgIDAgPT4gYmFja2dyb3VuZCwgMjU1ID0+IGZvcmVncm91bmQKICovCiB1bnNpZ25lZCBjaGFyCiBiYWNrZ3JvdW5kX2RpZmYgKHVuc2lnbmVkIGNoYXIgKnAsIGNvZGVCb29rICogYywgaW50IG51bUNoYW5uZWxzLApAQCAtNzk5LDEyICs3OTcsMTIgQEAKICAgICAgICh1Y2hhciAqKSBmaWx0ZXItPmN2RkctPmltYWdlRGF0YTsKIAogICAvKgotICAgICBCYWNrZ3JvdW5kU3VidHJhY3Rvck1PRyBbMV0sIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kIAorICAgICBCYWNrZ3JvdW5kU3VidHJhY3Rvck1PRyBbMV0sIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kCiAgICAgIFNlZ21lbnRhdGlvbiBBbGdvcml0aG0uIE9wZW5DViBNT0cgaW1wbGVtZW50cyB0aGUgYWxnb3JpdGhtIGRlc2NyaWJlZCBpbiBbMl0uCiAKICAgICAgWzFdIGh0dHA6Ly9vcGVuY3YuaXRzZWV6LmNvbS9tb2R1bGVzL3ZpZGVvL2RvYy9tb3Rpb25fYW5hbHlzaXNfYW5kX29iamVjdF90cmFja2luZy5odG1sI2JhY2tncm91bmRzdWJ0cmFjdG9ybW9nCi0gICAgIFsyXSBQLiBLYWRld1RyYUt1UG9uZyBhbmQgUi4gQm93ZGVuLCAiQW4gaW1wcm92ZWQgYWRhcHRpdmUgYmFja2dyb3VuZCAKLSAgICAgbWl4dHVyZSBtb2RlbCBmb3IgcmVhbC10aW1lIHRyYWNraW5nIHdpdGggc2hhZG93IGRldGVjdGlvbiIsIFByb2MuIDJuZCAKKyAgICAgWzJdIFAuIEthZGV3VHJhS3VQb25nIGFuZCBSLiBCb3dkZW4sICJBbiBpbXByb3ZlZCBhZGFwdGl2ZSBiYWNrZ3JvdW5kCisgICAgIG1peHR1cmUgbW9kZWwgZm9yIHJlYWwtdGltZSB0cmFja2luZyB3aXRoIHNoYWRvdyBkZXRlY3Rpb24iLCBQcm9jLiAybmQKICAgICAgRXVyb3BlYW4gV29ya3Nob3Agb24gQWR2YW5jZWQgVmlkZW8tQmFzZWQgU3VydmVpbGxhbmNlIFN5c3RlbXMsIDIwMDEKICAgICovCiAKQEAgLTgyNCwxNSArODIyLDE1IEBACiAgICAgICAodWNoYXIgKikgZmlsdGVyLT5jdkZHLT5pbWFnZURhdGE7CiAKICAgLyoKLSAgICAgQmFja2dyb3VuZFN1YnRyYWN0b3JNT0cyIFsxXSwgR2F1c3NpYW4gTWl4dHVyZS1iYXNlZCBCYWNrZ3JvdW5kL0ZvcmVncm91bmQgCi0gICAgIHNlZ21lbnRhdGlvbiBhbGdvcml0aG0uIE9wZW5DViBNT0cyIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4gCisgICAgIEJhY2tncm91bmRTdWJ0cmFjdG9yTU9HMiBbMV0sIEdhdXNzaWFuIE1peHR1cmUtYmFzZWQgQmFja2dyb3VuZC9Gb3JlZ3JvdW5kCisgICAgIHNlZ21lbnRhdGlvbiBhbGdvcml0aG0uIE9wZW5DViBNT0cyIGltcGxlbWVudHMgdGhlIGFsZ29yaXRobSBkZXNjcmliZWQgaW4KICAgICAgWzJdIGFuZCBbM10uCiAKICAgICAgWzFdIGh0dHA6Ly9vcGVuY3YuaXRzZWV6LmNvbS9tb2R1bGVzL3ZpZGVvL2RvYy9tb3Rpb25fYW5hbHlzaXNfYW5kX29iamVjdF90cmFja2luZy5odG1sI2JhY2tncm91bmRzdWJ0cmFjdG9ybW9nMgotICAgICBbMl0gWi5aaXZrb3ZpYywgIkltcHJvdmVkIGFkYXB0aXZlIEdhdXNpYW4gbWl4dHVyZSBtb2RlbCBmb3IgYmFja2dyb3VuZCAKKyAgICAgWzJdIFouWml2a292aWMsICJJbXByb3ZlZCBhZGFwdGl2ZSBHYXVzaWFuIG1peHR1cmUgbW9kZWwgZm9yIGJhY2tncm91bmQKICAgICAgc3VidHJhY3Rpb24iLCBJbnRlcm5hdGlvbmFsIENvbmZlcmVuY2UgUGF0dGVybiBSZWNvZ25pdGlvbiwgVUssIEF1Z3VzdCwgMjAwNC4KLSAgICAgWzNdIFouWml2a292aWMsIEYuIHZhbiBkZXIgSGVpamRlbiwgIkVmZmljaWVudCBBZGFwdGl2ZSBEZW5zaXR5IEVzdGltYXRpb24gcGVyIAotICAgICBJbWFnZSBQaXhlbCBmb3IgdGhlIFRhc2sgb2YgQmFja2dyb3VuZCBTdWJ0cmFjdGlvbiIsIFBhdHRlcm4gUmVjb2duaXRpb24gCisgICAgIFszXSBaLlppdmtvdmljLCBGLiB2YW4gZGVyIEhlaWpkZW4sICJFZmZpY2llbnQgQWRhcHRpdmUgRGVuc2l0eSBFc3RpbWF0aW9uIHBlcgorICAgICBJbWFnZSBQaXhlbCBmb3IgdGhlIFRhc2sgb2YgQmFja2dyb3VuZCBTdWJ0cmFjdGlvbiIsIFBhdHRlcm4gUmVjb2duaXRpb24KICAgICAgTGV0dGVycywgdm9sLiAyNywgbm8uIDcsIHBhZ2VzIDc3My03ODAsIDIwMDYuCiAgICAqLwogCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHNraW5kZXRlY3QuYyBiL2V4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5jcHAKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmMKcmVuYW1lIHRvIGV4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5jcHAKaW5kZXggY2FmMzhlYy4uYWFkZTIzYyAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmMKKysrIGIvZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmNwcApAQCAtMSw3ICsxLDcgQEAKIC8qCiAgKiBHU3RyZWFtZXIKICAqIENvcHlyaWdodCAoQykgMjAxMyBNaWd1ZWwgQ2FzYXMtU2FuY2hleiA8bWlndWVsZWNhc2Fzc2FuY2hlekBnbWFpbC5jb20+Ci0gKiAKKyAqCiAgKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQogICogY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZSAiU29mdHdhcmUiKSwKICAqIHRvIGRlYWwgaW4gdGhlIFNvZnR3YXJlIHdpdGhvdXQgcmVzdHJpY3Rpb24sIGluY2x1ZGluZyB3aXRob3V0IGxpbWl0YXRpb24KQEAgLTU4LDkgKzU4LDYgQEAKICNpbmNsdWRlIDxjb25maWcuaD4KICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlICJnc3Rza2luZGV0ZWN0LmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgogI2luY2x1ZGUgPG9wZW5jdjIvbGVnYWN5L2NvbXBhdC5ocHA+CkBAIC0xNTgsNyArMTU1LDcgQEAKICAgICAgICAgICAiTWV0aG9kIHRvIHVzZSIsCiAgICAgICAgICAgIk1ldGhvZCB0byB1c2UiLAogICAgICAgICAgIEdTVF9UWVBFX1NLSU5fREVURUNUX01FVEhPRCwgSFNWLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgInNraW5kZXRlY3QiLApAQCAtMTg2LDcgKzE4Myw4IEBACiAgIGZpbHRlci0+cG9zdHByb2Nlc3MgPSBUUlVFOwogICBmaWx0ZXItPm1ldGhvZCA9IEhTVjsKIAotICBnc3RfYmFzZV90cmFuc2Zvcm1fc2V0X2luX3BsYWNlIChHU1RfQkFTRV9UUkFOU0ZPUk0gKGZpbHRlciksIEZBTFNFKTsKKyAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlIChHU1RfT1BFTkNWX1ZJREVPX0ZJTFRFUl9DQVNUIChmaWx0ZXIpLAorICAgICAgRkFMU0UpOwogfQogCiAKQEAgLTMxNiwxNyArMzE0LDE1IEBACiB7CiAgIEdzdFNraW5EZXRlY3QgKmZpbHRlciA9IEdTVF9TS0lOX0RFVEVDVCAoYmFzZSk7CiAKLQotCiAgIGZpbHRlci0+Y3ZSR0ItPmltYWdlRGF0YSA9IChjaGFyICopIGltZy0+aW1hZ2VEYXRhOwogICBmaWx0ZXItPmN2U2tpbi0+aW1hZ2VEYXRhID0gKGNoYXIgKikgb3V0aW1nLT5pbWFnZURhdGE7CiAKICAgLyogU0tJTiBDT0xPVVIgQkxPQiBERVRFQ1RJT04gKi8KICAgaWYgKEhTViA9PSBmaWx0ZXItPm1ldGhvZCkgewogICAgIGN2Q3Z0Q29sb3IgKGZpbHRlci0+Y3ZSR0IsIGZpbHRlci0+Y3ZIU1YsIENWX1JHQjJIU1YpOwotICAgIGN2Q3Z0UGl4VG9QbGFuZSAoZmlsdGVyLT5jdkhTViwgZmlsdGVyLT5jdkgsIGZpbHRlci0+Y3ZTLCBmaWx0ZXItPmN2ViwgMCk7ICAvKiAgRXh0cmFjdCB0aGUgMyBjb2xvciBjb21wb25lbnRzLiAqLworICAgIGN2U3BsaXQgKGZpbHRlci0+Y3ZIU1YsIGZpbHRlci0+Y3ZILCBmaWx0ZXItPmN2UywgZmlsdGVyLT5jdlYsIDApOyAgLyogIEV4dHJhY3QgdGhlIDMgY29sb3IgY29tcG9uZW50cy4gKi8KIAotICAgIC8qICBEZXRlY3Qgd2hpY2ggcGl4ZWxzIGluIGVhY2ggb2YgdGhlIEgsIFMgYW5kIFYgY2hhbm5lbHMgYXJlIHByb2JhYmx5IHNraW4gcGl4ZWxzLiAKKyAgICAvKiAgRGV0ZWN0IHdoaWNoIHBpeGVscyBpbiBlYWNoIG9mIHRoZSBILCBTIGFuZCBWIGNoYW5uZWxzIGFyZSBwcm9iYWJseSBza2luIHBpeGVscy4KICAgICAgICBBc3N1bWUgdGhhdCBza2luIGhhcyBhIEh1ZSBiZXR3ZWVuIDAgdG8gMTggKG91dCBvZiAxODApLCBhbmQgU2F0dXJhdGlvbiBhYm92ZSA1MCwgYW5kIEJyaWdodG5lc3MgYWJvdmUgODAuICovCiAgICAgY3ZUaHJlc2hvbGQgKGZpbHRlci0+Y3ZILCBmaWx0ZXItPmN2SDIsIDEwLCBVQ0hBUl9NQVgsIENWX1RIUkVTSF9CSU5BUlkpOyAgIC8qIChodWUgPiAxMCkgKi8KICAgICBjdlRocmVzaG9sZCAoZmlsdGVyLT5jdkgsIGZpbHRlci0+Y3ZILCAyMCwgVUNIQVJfTUFYLCBDVl9USFJFU0hfQklOQVJZX0lOVik7ICAgICAgICAvKiAoaHVlIDwgMjApICovCkBAIC0zMzYsNyArMzMyLDcgQEAKICAgICAvKiAgZXJvZGUgdGhlIEhVRSB0byBnZXQgcmlkIG9mIG5vaXNlLiAqLwogICAgIGN2RXJvZGUgKGZpbHRlci0+Y3ZILCBmaWx0ZXItPmN2SCwgTlVMTCwgMSk7CiAKLSAgICAvKiAgQ29tYmluZSBhbGwgMyB0aHJlc2hvbGRlZCBjb2xvciBjb21wb25lbnRzLCBzbyB0aGF0IGFuIG91dHB1dCBwaXhlbCB3aWxsIG9ubHkgCisgICAgLyogIENvbWJpbmUgYWxsIDMgdGhyZXNob2xkZWQgY29sb3IgY29tcG9uZW50cywgc28gdGhhdCBhbiBvdXRwdXQgcGl4ZWwgd2lsbCBvbmx5CiAgICAgICAgYmUgd2hpdGUgKDI1NSkgaWYgdGhlIEgsIFMgYW5kIFYgcGl4ZWxzIHdlcmUgYWxzbyB3aGl0ZS4KICAgICAgICBpbWFnZVNraW4gPSAoaHVlID4gMTApIF4gKGh1ZSA8IDIwKSBeIChzYXQgPiA0OCkgXiAodmFsID4gODApLCB3aGVyZSAgIF4gbWVhbiBwaXhlbHMtd2lzZSBBTkQgKi8KICAgICBjdkFuZCAoZmlsdGVyLT5jdkgsIGZpbHRlci0+Y3ZTLCBmaWx0ZXItPmN2U2tpblBpeGVsczEsIE5VTEwpOwpAQCAtMzc0LDcgKzM3MCw3IEBACiAgICAgY3ZDdnRDb2xvciAoZmlsdGVyLT5jdmRyYWZ0LCBmaWx0ZXItPmN2UkdCLCBDVl9HUkFZMlJHQik7CiAgIH0KIAotICAvKiBBZnRlciB0aGlzIHdlIGhhdmUgYSBSR0IgQmxhY2sgYW5kIHdoaXRlIGltYWdlIHdpdGggdGhlIHNraW4sIGluIAorICAvKiBBZnRlciB0aGlzIHdlIGhhdmUgYSBSR0IgQmxhY2sgYW5kIHdoaXRlIGltYWdlIHdpdGggdGhlIHNraW4sIGluCiAgICAgIGZpbHRlci0+Y3ZSR0IuIFdlIGNhbiBwb3N0cHJvY2VzcyBieSBhcHBseWluZyAxIGVyb2RlLWRpbGF0ZSBhbmQgMQogICAgICBkaWxhdGUtZXJvZGUsIG9yIGFsdGVybmF0aXZlbHkgMSBvcGVuaW5nLWNsb3NpbmcgYWxsIHRvZ2V0aGVyLCB3aXRoCiAgICAgIHRoZSBnb2FsIG9mIHJlbW92aW5nIHNtYWxsIChzcHVyaW91cykgc2tpbiBzcG90cyBhbmQgY3JlYXRpbmcgbGFyZ2UKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0c2tpbmRldGVjdC5oIGIvZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmgKaW5kZXggOTEwZDIyZS4uYTljNTQ4ZCAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmgKKysrIGIvZXh0L29wZW5jdi9nc3Rza2luZGV0ZWN0LmgKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDA4IE1pY2hhZWwgU2hlbGRvbiA8bWlrZUBtaWtlYXNvZnQuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC00Niw4ICs0Niw2IEBACiAjaWZuZGVmIF9fR1NUX1NLSU5fREVURUNUX0hfXwogI2RlZmluZSBfX0dTVF9TS0lOX0RFVEVDVF9IX18KIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQogI2luY2x1ZGUgPGdzdG9wZW5jdnZpZGVvZmlsdGVyLmg+CiAKIEdfQkVHSU5fREVDTFMKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jIGIvZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmNwcApzaW1pbGFyaXR5IGluZGV4IDc4JQpyZW5hbWUgZnJvbSBleHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guYwpyZW5hbWUgdG8gZXh0L29wZW5jdi9nc3R0ZW1wbGF0ZW1hdGNoLmNwcAppbmRleCAyMWQ4Y2Q0Li4xMjIzMDY2IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guYworKysgYi9leHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guY3BwCkBAIC00LDcgKzQsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNaWNoYWVsIFNoZWxkb24gPG1pa2VAbWlrZWFzb2Z0LmNvbT4KICAqIENvcHlyaWdodCAoQykgMjAwOSBOb2FtIExld2lzIDxqb25lcy5ub2FtbGVAZ21haWwuY29tPgotICogCisgKgogICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEKICAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksCiAgKiB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uCkBAIC01Miw3ICs1Miw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaC0wLjEwIHZpZGVvdGVzdHNyYyAhIGRlY29kZWJpbiAhIHZpZGVvY29udmVydCAhIHRlbXBsYXRlbWF0Y2ggdGVtcGxhdGU9L3BhdGgvdG8vZmlsZS5qcGcgISB2aWRlb2NvbnZlcnQgISB4dmltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZGVjb2RlYmluICEgdmlkZW9jb252ZXJ0ICEgdGVtcGxhdGVtYXRjaCB0ZW1wbGF0ZT0vcGF0aC90by9maWxlLmpwZyAhIHZpZGVvY29udmVydCAhIHh2aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNjEsMTAgKzYxLDcgQEAKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0KICNpbmNsdWRlICIuLi8uLi9nc3QtbGlicy9nc3QvZ3N0LWkxOG4tcGx1Z2luLmgiCi0jaW5jbHVkZSAiZ3N0b3BlbmN2dXRpbHMuaCIKICNpbmNsdWRlICJnc3R0ZW1wbGF0ZW1hdGNoLmgiCiAjaW5jbHVkZSA8b3BlbmN2Mi9pbWdwcm9jL2ltZ3Byb2NfYy5oPgogCkBAIC0xMDIsNyArOTksOCBAQAogICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIkJHUiIpKQogICAgICk7CiAKLUdfREVGSU5FX1RZUEUgKEdzdFRlbXBsYXRlTWF0Y2gsIGdzdF90ZW1wbGF0ZV9tYXRjaCwgR1NUX1RZUEVfRUxFTUVOVCk7CitHX0RFRklORV9UWVBFIChHc3RUZW1wbGF0ZU1hdGNoLCBnc3RfdGVtcGxhdGVfbWF0Y2gsCisgICAgR1NUX1RZUEVfT1BFTkNWX1ZJREVPX0ZJTFRFUik7CiAKIHN0YXRpYyB2b2lkIGdzdF90ZW1wbGF0ZV9tYXRjaF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CiBzdGF0aWMgdm9pZCBnc3RfdGVtcGxhdGVfbWF0Y2hfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLApAQCAtMTEwLDQyICsxMDgsMzggQEAKIHN0YXRpYyB2b2lkIGdzdF90ZW1wbGF0ZV9tYXRjaF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKLXN0YXRpYyBnYm9vbGVhbiBnc3RfdGVtcGxhdGVfbWF0Y2hfaGFuZGxlX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RlbXBsYXRlX21hdGNoX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RCdWZmZXIgKiBidWYpOwotCi1zdGF0aWMgdm9pZCBnc3RfdGVtcGxhdGVfbWF0Y2hfbG9hZF90ZW1wbGF0ZSAoR3N0VGVtcGxhdGVNYXRjaCAqIGZpbHRlciwKLSAgICBnY2hhciAqIHRlbXBsYXRlKTsKLXN0YXRpYyB2b2lkIGdzdF90ZW1wbGF0ZV9tYXRjaF9tYXRjaCAoSXBsSW1hZ2UgKiBpbnB1dCwgSXBsSW1hZ2UgKiB0ZW1wbGF0ZSwKLSAgICBJcGxJbWFnZSAqIGRpc3RfaW1hZ2UsIGRvdWJsZSAqYmVzdF9yZXMsIEN2UG9pbnQgKiBiZXN0X3BvcywgaW50IG1ldGhvZCk7Ci0KLQorc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RlbXBsYXRlX21hdGNoX3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKgorICAgIGZpbHRlciwgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZyk7CiAKIC8qIGluaXRpYWxpemUgdGhlIHRlbXBsYXRlbWF0Y2gncyBjbGFzcyAqLwogc3RhdGljIHZvaWQKIGdzdF90ZW1wbGF0ZV9tYXRjaF9jbGFzc19pbml0IChHc3RUZW1wbGF0ZU1hdGNoQ2xhc3MgKiBrbGFzcykKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzICpnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzOwogICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwogCiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzID0gKEdzdE9wZW5jdlZpZGVvRmlsdGVyQ2xhc3MgKikga2xhc3M7CiAKICAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfdGVtcGxhdGVfbWF0Y2hfZmluYWxpemU7CiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF90ZW1wbGF0ZV9tYXRjaF9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF90ZW1wbGF0ZV9tYXRjaF9nZXRfcHJvcGVydHk7CiAKKyAgZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzcy0+Y3ZfdHJhbnNfaXBfZnVuYyA9IGdzdF90ZW1wbGF0ZV9tYXRjaF90cmFuc2Zvcm1faXA7CisKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NRVRIT0QsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgibWV0aG9kIiwgIk1ldGhvZCIsCiAgICAgICAgICAgIlNwZWNpZmllcyB0aGUgd2F5IHRoZSB0ZW1wbGF0ZSBtdXN0IGJlIGNvbXBhcmVkIHdpdGggaW1hZ2UgcmVnaW9ucy4gMD1TUURJRkYsIDE9U1FESUZGX05PUk1FRCwgMj1DQ09SLCAzPUNDT1JfTk9STUVELCA0PUNDT0VGRiwgNT1DQ09FRkZfTk9STUVELiIsCi0gICAgICAgICAgMCwgNSwgREVGQVVMVF9NRVRIT0QsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIDAsIDUsIERFRkFVTFRfTUVUSE9ELAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9URU1QTEFURSwKICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJ0ZW1wbGF0ZSIsICJUZW1wbGF0ZSIsICJGaWxlbmFtZSBvZiB0ZW1wbGF0ZSBpbWFnZSIsCi0gICAgICAgICAgTlVMTCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgTlVMTCwgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0RJU1BMQVksCiAgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImRpc3BsYXkiLCAiRGlzcGxheSIsCiAgICAgICAgICAgIlNldHMgd2hldGhlciB0aGUgZGV0ZWN0ZWQgdGVtcGxhdGUgc2hvdWxkIGJlIGhpZ2hsaWdodGVkIGluIHRoZSBvdXRwdXQiLAotICAgICAgICAgIFRSVUUsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIFRSVUUsIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgInRlbXBsYXRlbWF0Y2giLApAQCAtMTY3LDI0ICsxNjEsNTAgQEAKIHN0YXRpYyB2b2lkCiBnc3RfdGVtcGxhdGVfbWF0Y2hfaW5pdCAoR3N0VGVtcGxhdGVNYXRjaCAqIGZpbHRlcikKIHsKLSAgZmlsdGVyLT5zaW5rcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZzaW5rX2ZhY3RvcnksICJzaW5rIik7Ci0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChmaWx0ZXItPnNpbmtwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RlbXBsYXRlX21hdGNoX2hhbmRsZV9zaW5rX2V2ZW50KSk7Ci0gIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChmaWx0ZXItPnNpbmtwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RlbXBsYXRlX21hdGNoX2NoYWluKSk7Ci0gIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKGZpbHRlci0+c2lua3BhZCk7Ci0KLSAgZmlsdGVyLT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNyY19mYWN0b3J5LCAic3JjIik7Ci0gIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKGZpbHRlci0+c3JjcGFkKTsKLQotICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoZmlsdGVyKSwgZmlsdGVyLT5zaW5rcGFkKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZpbHRlciksIGZpbHRlci0+c3JjcGFkKTsKICAgZmlsdGVyLT50ZW1wbCA9IE5VTEw7CiAgIGZpbHRlci0+ZGlzcGxheSA9IFRSVUU7CiAgIGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlID0gTlVMTDsKICAgZmlsdGVyLT5jdkRpc3RJbWFnZSA9IE5VTEw7Ci0gIGZpbHRlci0+Y3ZJbWFnZSA9IE5VTEw7CiAgIGZpbHRlci0+bWV0aG9kID0gREVGQVVMVF9NRVRIT0Q7CisKKyAgZ3N0X29wZW5jdl92aWRlb19maWx0ZXJfc2V0X2luX3BsYWNlIChHU1RfT1BFTkNWX1ZJREVPX0ZJTFRFUl9DQVNUIChmaWx0ZXIpLAorICAgICAgVFJVRSk7Cit9CisKKy8qIFdlIHRha2Ugb3duZXJzaGlwIG9mIHRlbXBsYXRlIGhlcmUgKi8KK3N0YXRpYyB2b2lkCitnc3RfdGVtcGxhdGVfbWF0Y2hfbG9hZF90ZW1wbGF0ZSAoR3N0VGVtcGxhdGVNYXRjaCAqIGZpbHRlciwgZ2NoYXIgKiB0ZW1wbCkKK3sKKyAgZ2NoYXIgKm9sZFRlbXBsYXRlRmlsZW5hbWUgPSBOVUxMOworICBJcGxJbWFnZSAqb2xkVGVtcGxhdGVJbWFnZSA9IE5VTEwsICpuZXdUZW1wbGF0ZUltYWdlID0gTlVMTCwgKm9sZERpc3RJbWFnZSA9CisgICAgICBOVUxMOworCisgIGlmICh0ZW1wbCkgeworICAgIG5ld1RlbXBsYXRlSW1hZ2UgPSBjdkxvYWRJbWFnZSAodGVtcGwsIENWX0xPQURfSU1BR0VfQ09MT1IpOworICAgIGlmICghbmV3VGVtcGxhdGVJbWFnZSkgeworICAgICAgLyogVW5mb3J0dW5hdGVseSBPcGVuQ1YgZG9lc24ndCBzZWVtIHRvIHByb3ZpZGUgYW55IHdheSBvZiBmaW5kaW5nIG91dAorICAgICAgICAgd2h5IHRoZSBpbWFnZSBsb2FkIGZhaWxlZCwgc28gd2UgY2FuJ3QgYmUgbW9yZSBzcGVjaWZpYyB0aGFuIEZBSUxFRDogKi8KKyAgICAgIEdTVF9FTEVNRU5UX1dBUk5JTkcgKGZpbHRlciwgUkVTT1VSQ0UsIEZBSUxFRCwKKyAgICAgICAgICAoXygiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIikpLAorICAgICAgICAgICgiV2hpbGUgYXR0ZW1wdGluZyB0byBsb2FkIHRlbXBsYXRlICclcyciLCB0ZW1wbCkpOworICAgICAgZ19mcmVlICh0ZW1wbCk7CisgICAgICB0ZW1wbCA9IE5VTEw7CisgICAgfQorICB9CisKKyAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXIpOworICBvbGRUZW1wbGF0ZUZpbGVuYW1lID0gZmlsdGVyLT50ZW1wbDsKKyAgZmlsdGVyLT50ZW1wbCA9IHRlbXBsOworICBvbGRUZW1wbGF0ZUltYWdlID0gZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2U7CisgIGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlID0gbmV3VGVtcGxhdGVJbWFnZTsKKyAgb2xkRGlzdEltYWdlID0gZmlsdGVyLT5jdkRpc3RJbWFnZTsKKyAgLyogVGhpcyB3aWxsIGJlIHJlY3JlYXRlZCBpbiB0aGUgY2hhaW4gZnVuY3Rpb24gYXMgcmVxdWlyZWQ6ICovCisgIGZpbHRlci0+Y3ZEaXN0SW1hZ2UgPSBOVUxMOworICBHU1RfT0JKRUNUX1VOTE9DSyAoZmlsdGVyKTsKKworICBjdlJlbGVhc2VJbWFnZSAoJm9sZERpc3RJbWFnZSk7CisgIGN2UmVsZWFzZUltYWdlICgmb2xkVGVtcGxhdGVJbWFnZSk7CisgIGdfZnJlZSAob2xkVGVtcGxhdGVGaWxlbmFtZSk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNTYsNDIgKzI3Niw2IEBACiAKIC8qIEdzdEVsZW1lbnQgdm1ldGhvZCBpbXBsZW1lbnRhdGlvbnMgKi8KIAotLyogdGhpcyBmdW5jdGlvbiBoYW5kbGVzIHRoZSBsaW5rIHdpdGggb3RoZXIgZWxlbWVudHMgKi8KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3RlbXBsYXRlX21hdGNoX2hhbmRsZV9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KQotewotICBHc3RUZW1wbGF0ZU1hdGNoICpmaWx0ZXI7Ci0gIEdzdFZpZGVvSW5mbyBpbmZvOwotICBnYm9vbGVhbiByZXMgPSBUUlVFOwotCi0gIGZpbHRlciA9IEdTVF9URU1QTEFURV9NQVRDSCAocGFyZW50KTsKLSAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzoKLSAgICB7Ci0gICAgICBHc3RDYXBzICpjYXBzOwotICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7Ci0gICAgICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZpbmZvLCBjYXBzKTsKLQotICAgICAgaWYgKGZpbHRlci0+Y3ZJbWFnZSkgewotICAgICAgICBjdlJlbGVhc2VJbWFnZUhlYWRlciAoJmZpbHRlci0+Y3ZJbWFnZSk7Ci0gICAgICB9Ci0gICAgICBmaWx0ZXItPmN2SW1hZ2UgPQotICAgICAgICAgIGN2Q3JlYXRlSW1hZ2VIZWFkZXIgKGN2U2l6ZSAoaW5mby53aWR0aCwgaW5mby5oZWlnaHQpLCBJUExfREVQVEhfOFUsCi0gICAgICAgICAgMyk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmVzID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOwotCi0gIHJldHVybiByZXM7Ci0KLQotfQotCiBzdGF0aWMgdm9pZAogZ3N0X3RlbXBsYXRlX21hdGNoX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQogewpAQCAtMjk5LDkgKzI4Myw3IEBACiAgIGZpbHRlciA9IEdTVF9URU1QTEFURV9NQVRDSCAob2JqZWN0KTsKIAogICBnX2ZyZWUgKGZpbHRlci0+dGVtcGwpOwotICBpZiAoZmlsdGVyLT5jdkltYWdlKSB7Ci0gICAgY3ZSZWxlYXNlSW1hZ2VIZWFkZXIgKCZmaWx0ZXItPmN2SW1hZ2UpOwotICB9CisKICAgaWYgKGZpbHRlci0+Y3ZEaXN0SW1hZ2UpIHsKICAgICBjdlJlbGVhc2VJbWFnZSAoJmZpbHRlci0+Y3ZEaXN0SW1hZ2UpOwogICB9CkBAIC0zMTIsNDUgKzI5NCw1NyBAQAogICBHX09CSkVDVF9DTEFTUyAoZ3N0X3RlbXBsYXRlX21hdGNoX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwogfQogCitzdGF0aWMgdm9pZAorZ3N0X3RlbXBsYXRlX21hdGNoX21hdGNoIChJcGxJbWFnZSAqIGlucHV0LCBJcGxJbWFnZSAqIHRlbXBsLAorICAgIElwbEltYWdlICogZGlzdF9pbWFnZSwgZG91YmxlICpiZXN0X3JlcywgQ3ZQb2ludCAqIGJlc3RfcG9zLCBpbnQgbWV0aG9kKQoreworICBkb3VibGUgZGlzdF9taW4gPSAwLCBkaXN0X21heCA9IDA7CisgIEN2UG9pbnQgbWluX3BvcywgbWF4X3BvczsKKyAgY3ZNYXRjaFRlbXBsYXRlIChpbnB1dCwgdGVtcGwsIGRpc3RfaW1hZ2UsIG1ldGhvZCk7CisgIGN2TWluTWF4TG9jIChkaXN0X2ltYWdlLCAmZGlzdF9taW4sICZkaXN0X21heCwgJm1pbl9wb3MsICZtYXhfcG9zLCBOVUxMKTsKKyAgaWYgKChDVl9UTV9TUURJRkZfTk9STUVEID09IG1ldGhvZCkgfHwgKENWX1RNX1NRRElGRiA9PSBtZXRob2QpKSB7CisgICAgKmJlc3RfcmVzID0gZGlzdF9taW47CisgICAgKmJlc3RfcG9zID0gbWluX3BvczsKKyAgICBpZiAoQ1ZfVE1fU1FESUZGX05PUk1FRCA9PSBtZXRob2QpIHsKKyAgICAgICpiZXN0X3JlcyA9IDEgLSAqYmVzdF9yZXM7CisgICAgfQorICB9IGVsc2UgeworICAgICpiZXN0X3JlcyA9IGRpc3RfbWF4OworICAgICpiZXN0X3BvcyA9IG1heF9wb3M7CisgIH0KK30KKwogLyogY2hhaW4gZnVuY3Rpb24KICAqIHRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgYWN0dWFsIHByb2Nlc3NpbmcKICAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF90ZW1wbGF0ZV9tYXRjaF9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKK2dzdF90ZW1wbGF0ZV9tYXRjaF90cmFuc2Zvcm1faXAgKEdzdE9wZW5jdlZpZGVvRmlsdGVyICogYmFzZSwgR3N0QnVmZmVyICogYnVmLAorICAgIElwbEltYWdlICogaW1nKQogewogICBHc3RUZW1wbGF0ZU1hdGNoICpmaWx0ZXI7CiAgIEN2UG9pbnQgYmVzdF9wb3M7CiAgIGRvdWJsZSBiZXN0X3JlczsKLSAgR3N0TWFwSW5mbyBpbmZvOwogICBHc3RNZXNzYWdlICptID0gTlVMTDsKIAotICBmaWx0ZXIgPSBHU1RfVEVNUExBVEVfTUFUQ0ggKHBhcmVudCk7CisgIGZpbHRlciA9IEdTVF9URU1QTEFURV9NQVRDSCAoYmFzZSk7CiAKLSAgaWYgKCghZmlsdGVyKSB8fCAoIWJ1ZikpIHsKLSAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0gIH0KICAgR1NUX0xPR19PQkpFQ1QgKGZpbHRlciwgIkJ1ZmZlciBzaXplICV1IiwgKGd1aW50KSBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpKTsKIAotICBidWYgPSBnc3RfYnVmZmVyX21ha2Vfd3JpdGFibGUgKGJ1Zik7Ci0gIGdzdF9idWZmZXJfbWFwIChidWYsICZpbmZvLCBHU1RfTUFQX1JFQURXUklURSk7Ci0gIGZpbHRlci0+Y3ZJbWFnZS0+aW1hZ2VEYXRhID0gKGNoYXIgKikgaW5mby5kYXRhOwotCiAgIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyKTsKICAgaWYgKGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlICYmICFmaWx0ZXItPmN2RGlzdEltYWdlKSB7Ci0gICAgaWYgKGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlLT53aWR0aCA+IGZpbHRlci0+Y3ZJbWFnZS0+d2lkdGgpIHsKKyAgICBpZiAoZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPndpZHRoID4gaW1nLT53aWR0aCkgewogICAgICAgR1NUX1dBUk5JTkcgKCJUZW1wbGF0ZSBJbWFnZSBpcyB3aWRlciB0aGFuIGlucHV0IGltYWdlIik7Ci0gICAgfSBlbHNlIGlmIChmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+aGVpZ2h0ID4gZmlsdGVyLT5jdkltYWdlLT5oZWlnaHQpIHsKKyAgICB9IGVsc2UgaWYgKGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlLT5oZWlnaHQgPiBpbWctPmhlaWdodCkgewogICAgICAgR1NUX1dBUk5JTkcgKCJUZW1wbGF0ZSBJbWFnZSBpcyB0YWxsZXIgdGhhbiBpbnB1dCBpbWFnZSIpOwogICAgIH0gZWxzZSB7CiAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGZpbHRlciwgImN2Q3JlYXRlSW1hZ2UgKFNpemUoJWQtJWQrMSwlZCkgJWQsICVkKSIsCi0gICAgICAgICAgZmlsdGVyLT5jdkltYWdlLT53aWR0aCwgZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPndpZHRoLAotICAgICAgICAgIGZpbHRlci0+Y3ZJbWFnZS0+aGVpZ2h0IC0gZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPmhlaWdodCArIDEsCi0gICAgICAgICAgSVBMX0RFUFRIXzMyRiwgMSk7CisgICAgICAgICAgaW1nLT53aWR0aCwgZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPndpZHRoLAorICAgICAgICAgIGltZy0+aGVpZ2h0IC0gZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPmhlaWdodCArIDEsIElQTF9ERVBUSF8zMkYsIDEpOwogICAgICAgZmlsdGVyLT5jdkRpc3RJbWFnZSA9Ci0gICAgICAgICAgY3ZDcmVhdGVJbWFnZSAoY3ZTaXplIChmaWx0ZXItPmN2SW1hZ2UtPndpZHRoIC0KKyAgICAgICAgICBjdkNyZWF0ZUltYWdlIChjdlNpemUgKGltZy0+d2lkdGggLQogICAgICAgICAgICAgICBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+d2lkdGggKyAxLAotICAgICAgICAgICAgICBmaWx0ZXItPmN2SW1hZ2UtPmhlaWdodCAtIGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlLT5oZWlnaHQgKyAxKSwKKyAgICAgICAgICAgICAgaW1nLT5oZWlnaHQgLSBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZS0+aGVpZ2h0ICsgMSksCiAgICAgICAgICAgSVBMX0RFUFRIXzMyRiwgMSk7CiAgICAgICBpZiAoIWZpbHRlci0+Y3ZEaXN0SW1hZ2UpIHsKICAgICAgICAgR1NUX1dBUk5JTkcgKCJDb3VsZG4ndCBjcmVhdGUgZGlzdCBpbWFnZS4iKTsKQEAgLTM2MCw3ICszNTQsNyBAQAogICBpZiAoZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UgJiYgZmlsdGVyLT5jdkRpc3RJbWFnZSkgewogICAgIEdzdFN0cnVjdHVyZSAqczsKIAotICAgIGdzdF90ZW1wbGF0ZV9tYXRjaF9tYXRjaCAoZmlsdGVyLT5jdkltYWdlLCBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZSwKKyAgICBnc3RfdGVtcGxhdGVfbWF0Y2hfbWF0Y2ggKGltZywgZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UsCiAgICAgICAgIGZpbHRlci0+Y3ZEaXN0SW1hZ2UsICZiZXN0X3JlcywgJmJlc3RfcG9zLCBmaWx0ZXItPm1ldGhvZCk7CiAKICAgICBzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJ0ZW1wbGF0ZV9tYXRjaCIsCkBAIC0zOTAsNyArMzg0LDcgQEAKIAogICAgICAgY29ybmVyLnggKz0gZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPndpZHRoOwogICAgICAgY29ybmVyLnkgKz0gZmlsdGVyLT5jdlRlbXBsYXRlSW1hZ2UtPmhlaWdodDsKLSAgICAgIGN2UmVjdGFuZ2xlIChmaWx0ZXItPmN2SW1hZ2UsIGJlc3RfcG9zLCBjb3JuZXIsIGNvbG9yLCAzLCA4LCAwKTsKKyAgICAgIGN2UmVjdGFuZ2xlIChpbWcsIGJlc3RfcG9zLCBjb3JuZXIsIGNvbG9yLCAzLCA4LCAwKTsKICAgICB9CiAKICAgfQpAQCAtMzk5LDY5ICszOTMsOSBAQAogICBpZiAobSkgewogICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKGZpbHRlciksIG0pOwogICB9Ci0gIHJldHVybiBnc3RfcGFkX3B1c2ggKGZpbHRlci0+c3JjcGFkLCBidWYpOworICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKLQotCi1zdGF0aWMgdm9pZAotZ3N0X3RlbXBsYXRlX21hdGNoX21hdGNoIChJcGxJbWFnZSAqIGlucHV0LCBJcGxJbWFnZSAqIHRlbXBsLAotICAgIElwbEltYWdlICogZGlzdF9pbWFnZSwgZG91YmxlICpiZXN0X3JlcywgQ3ZQb2ludCAqIGJlc3RfcG9zLCBpbnQgbWV0aG9kKQotewotICBkb3VibGUgZGlzdF9taW4gPSAwLCBkaXN0X21heCA9IDA7Ci0gIEN2UG9pbnQgbWluX3BvcywgbWF4X3BvczsKLSAgY3ZNYXRjaFRlbXBsYXRlIChpbnB1dCwgdGVtcGwsIGRpc3RfaW1hZ2UsIG1ldGhvZCk7Ci0gIGN2TWluTWF4TG9jIChkaXN0X2ltYWdlLCAmZGlzdF9taW4sICZkaXN0X21heCwgJm1pbl9wb3MsICZtYXhfcG9zLCBOVUxMKTsKLSAgaWYgKChDVl9UTV9TUURJRkZfTk9STUVEID09IG1ldGhvZCkgfHwgKENWX1RNX1NRRElGRiA9PSBtZXRob2QpKSB7Ci0gICAgKmJlc3RfcmVzID0gZGlzdF9taW47Ci0gICAgKmJlc3RfcG9zID0gbWluX3BvczsKLSAgICBpZiAoQ1ZfVE1fU1FESUZGX05PUk1FRCA9PSBtZXRob2QpIHsKLSAgICAgICpiZXN0X3JlcyA9IDEgLSAqYmVzdF9yZXM7Ci0gICAgfQotICB9IGVsc2UgewotICAgICpiZXN0X3JlcyA9IGRpc3RfbWF4OwotICAgICpiZXN0X3BvcyA9IG1heF9wb3M7Ci0gIH0KLX0KLQotCi0vKiBXZSB0YWtlIG93bmVyc2hpcCBvZiB0ZW1wbGF0ZSBoZXJlICovCi1zdGF0aWMgdm9pZAotZ3N0X3RlbXBsYXRlX21hdGNoX2xvYWRfdGVtcGxhdGUgKEdzdFRlbXBsYXRlTWF0Y2ggKiBmaWx0ZXIsIGdjaGFyICogdGVtcGwpCi17Ci0gIGdjaGFyICpvbGRUZW1wbGF0ZUZpbGVuYW1lID0gTlVMTDsKLSAgSXBsSW1hZ2UgKm9sZFRlbXBsYXRlSW1hZ2UgPSBOVUxMLCAqbmV3VGVtcGxhdGVJbWFnZSA9IE5VTEwsICpvbGREaXN0SW1hZ2UgPQotICAgICAgTlVMTDsKLQotICBpZiAodGVtcGwpIHsKLSAgICBuZXdUZW1wbGF0ZUltYWdlID0gY3ZMb2FkSW1hZ2UgKHRlbXBsLCBDVl9MT0FEX0lNQUdFX0NPTE9SKTsKLSAgICBpZiAoIW5ld1RlbXBsYXRlSW1hZ2UpIHsKLSAgICAgIC8qIFVuZm9ydHVuYXRlbHkgT3BlbkNWIGRvZXNuJ3Qgc2VlbSB0byBwcm92aWRlIGFueSB3YXkgb2YgZmluZGluZyBvdXQKLSAgICAgICAgIHdoeSB0aGUgaW1hZ2UgbG9hZCBmYWlsZWQsIHNvIHdlIGNhbid0IGJlIG1vcmUgc3BlY2lmaWMgdGhhbiBGQUlMRUQ6ICovCi0gICAgICBHU1RfRUxFTUVOVF9XQVJOSU5HIChmaWx0ZXIsIFJFU09VUkNFLCBGQUlMRUQsCi0gICAgICAgICAgKF8oIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIpKSwKLSAgICAgICAgICAoIldoaWxlIGF0dGVtcHRpbmcgdG8gbG9hZCB0ZW1wbGF0ZSAnJXMnIiwgdGVtcGwpKTsKLSAgICAgIGdfZnJlZSAodGVtcGwpOwotICAgICAgdGVtcGwgPSBOVUxMOwotICAgIH0KLSAgfQotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoZmlsdGVyKTsKLSAgb2xkVGVtcGxhdGVGaWxlbmFtZSA9IGZpbHRlci0+dGVtcGw7Ci0gIGZpbHRlci0+dGVtcGwgPSB0ZW1wbDsKLSAgb2xkVGVtcGxhdGVJbWFnZSA9IGZpbHRlci0+Y3ZUZW1wbGF0ZUltYWdlOwotICBmaWx0ZXItPmN2VGVtcGxhdGVJbWFnZSA9IG5ld1RlbXBsYXRlSW1hZ2U7Ci0gIG9sZERpc3RJbWFnZSA9IGZpbHRlci0+Y3ZEaXN0SW1hZ2U7Ci0gIC8qIFRoaXMgd2lsbCBiZSByZWNyZWF0ZWQgaW4gdGhlIGNoYWluIGZ1bmN0aW9uIGFzIHJlcXVpcmVkOiAqLwotICBmaWx0ZXItPmN2RGlzdEltYWdlID0gTlVMTDsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcik7Ci0KLSAgY3ZSZWxlYXNlSW1hZ2UgKCZvbGREaXN0SW1hZ2UpOwotICBjdlJlbGVhc2VJbWFnZSAoJm9sZFRlbXBsYXRlSW1hZ2UpOwotICBnX2ZyZWUgKG9sZFRlbXBsYXRlRmlsZW5hbWUpOwotfQotCi0KIC8qIGVudHJ5IHBvaW50IHRvIGluaXRpYWxpemUgdGhlIHBsdWctaW4KICAqIGluaXRpYWxpemUgdGhlIHBsdWctaW4gaXRzZWxmCiAgKiByZWdpc3RlciB0aGUgZWxlbWVudCBmYWN0b3JpZXMgYW5kIG90aGVyIGZlYXR1cmVzCmRpZmYgLS1naXQgYS9leHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guaCBiL2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5oCmluZGV4IGI2YzA0MjYuLmU3YzAyMDIgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5oCisrKyBiL2V4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5oCkBAIC0zLDcgKzMsNyBAQAogICogQ29weXJpZ2h0IChDKSAyMDA1IFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KICAqIENvcHlyaWdodCAoQykgMjAwOCBNaWNoYWVsIFNoZWxkb24gPG1pa2VAbWlrZWFzb2Z0LmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDYsNyArNDYsNyBAQAogI2lmbmRlZiBfX0dTVF9URU1QTEFURV9NQVRDSF9IX18KICNkZWZpbmUgX19HU1RfVEVNUExBVEVfTUFUQ0hfSF9fCiAKLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KIAogI2lmZGVmIEhBVkVfSElHSEdVSV9ICiAjaW5jbHVkZSA8aGlnaGd1aS5oPiAgICAgICAgICAgIC8vIGluY2x1ZGVzIGhpZ2hHVUkgZGVmaW5pdGlvbnMKQEAgLTcyLDIxICs3MiwxOSBAQAogCiBzdHJ1Y3QgX0dzdFRlbXBsYXRlTWF0Y2gKIHsKLSAgR3N0RWxlbWVudCBlbGVtZW50OwotCi0gIEdzdFBhZCAqc2lua3BhZCwgKnNyY3BhZDsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXIgZWxlbWVudDsKIAogICBnaW50IG1ldGhvZDsKICAgZ2Jvb2xlYW4gZGlzcGxheTsKIAogICBnY2hhciAqdGVtcGw7CiAKLSAgSXBsSW1hZ2UgKmN2SW1hZ2UsICpjdkdyYXksICpjdlRlbXBsYXRlSW1hZ2UsICpjdkRpc3RJbWFnZTsKKyAgSXBsSW1hZ2UgKmN2R3JheSwgKmN2VGVtcGxhdGVJbWFnZSwgKmN2RGlzdEltYWdlOwogfTsKIAogc3RydWN0IF9Hc3RUZW1wbGF0ZU1hdGNoQ2xhc3MKIHsKLSAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyBwYXJlbnRfY2xhc3M7CiB9OwogCiBHVHlwZSBnc3RfdGVtcGxhdGVfbWF0Y2hfZ2V0X3R5cGUgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jIGIvZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jcHAKc2ltaWxhcml0eSBpbmRleCA3NiUKcmVuYW1lIGZyb20gZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jCnJlbmFtZSB0byBleHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmNwcAppbmRleCA5ZjdlNGI3Li43MDI1YjM2IDEwMDY0NAotLS0gYS9leHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmMKKysrIGIvZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5jcHAKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDEwIFNyZWVyZW5qIEJhbGFjaGFuZHJhbiA8YnNyZWVyZW5qQGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNjAsOSArNjAsNiBAQAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgPGdzdC9nc3QuaD4KLQotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCiAjaW5jbHVkZSAiZ3N0dGV4dG92ZXJsYXkuaCIKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfZGVidWcpOwpAQCAtMTE1LDE3ICsxMTIsMTYgQEAKICAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKCJSR0IiKSkKICAgICApOwogCi1HX0RFRklORV9UWVBFIChHc3RPcGVuY3ZUZXh0T3ZlcmxheSwgZ3N0X29wZW5jdl90ZXh0X292ZXJsYXksIEdTVF9UWVBFX0VMRU1FTlQpOworR19ERUZJTkVfVFlQRSAoR3N0T3BlbmN2VGV4dE92ZXJsYXksIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5LAorICAgIEdTVF9UWVBFX09QRU5DVl9WSURFT19GSUxURVIpOwogCiBzdGF0aWMgdm9pZCBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCiAgICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiBzdGF0aWMgdm9pZCBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCiAgICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKLXN0YXRpYyBnYm9vbGVhbiBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9jaGFpbiAoR3N0UGFkICogcGFkLAotICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIKKyAgICAqIGZpbHRlciwgR3N0QnVmZmVyICogYnVmLCBJcGxJbWFnZSAqIGltZyk7CiAKIC8qIENsZWFuIHVwICovCiBzdGF0aWMgdm9pZApAQCAtMTMzLDEwICsxMjksNiBAQAogewogICBHc3RPcGVuY3ZUZXh0T3ZlcmxheSAqZmlsdGVyID0gR1NUX09QRU5DVl9URVhUX09WRVJMQVkgKG9iaik7CiAKLSAgaWYgKGZpbHRlci0+Y3ZJbWFnZSkgewotICAgIGN2UmVsZWFzZUltYWdlICgmZmlsdGVyLT5jdkltYWdlKTsKLSAgfQotCiAgIGdfZnJlZSAoZmlsdGVyLT50ZXh0YnVmKTsKIAogICBHX09CSkVDVF9DTEFTUyAoZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iaik7CkBAIC0xNDcsMTIgKzEzOSwxNiBAQAogZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfY2xhc3NfaW5pdCAoR3N0T3BlbmN2VGV4dE92ZXJsYXlDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7Ci0KKyAgR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqZ3N0b3BlbmN2YmFzZWZpbHRlcl9jbGFzczsKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKLSAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAKKyAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9maW5hbGl6ZSk7CisgIGdzdG9wZW5jdmJhc2VmaWx0ZXJfY2xhc3MgPSAoR3N0T3BlbmN2VmlkZW9GaWx0ZXJDbGFzcyAqKSBrbGFzczsKKworICBnc3RvcGVuY3ZiYXNlZmlsdGVyX2NsYXNzLT5jdl90cmFuc19pcF9mdW5jID0KKyAgICAgIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X3RyYW5zZm9ybV9pcDsKIAogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2dldF9wcm9wZXJ0eTsKQEAgLTE2MCw0NyArMTU2LDU1IEBACiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVEVYVCwKICAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJ0ZXh0IiwgInRleHQiLAogICAgICAgICAgICJUZXh0IHRvIGJlIGRpc3BsYXkuIiwgREVGQVVMVF9QUk9QX1RFWFQsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfWFBPUywKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ4cG9zIiwgImhvcml6b250YWwgcG9zaXRpb24iLAogICAgICAgICAgICJTZXRzIHRoZSBIb3Jpem9udGFsIHBvc2l0aW9uIiwgMCwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9QUk9QX1hQT1MsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfUFJPUF9YUE9TLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1lQT1MsCiAgICAgICBnX3BhcmFtX3NwZWNfaW50ICgieXBvcyIsICJ2ZXJ0aWNhbCBwb3NpdGlvbiIsCiAgICAgICAgICAgIlNldHMgdGhlIFZlcnRpY2FsIHBvc2l0aW9uIiwgMCwgR19NQVhJTlQsCi0gICAgICAgICAgREVGQVVMVF9QUk9QX1lQT1MsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfUFJPUF9ZUE9TLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1RISUNLTkVTUywKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJ0aGlja25lc3MiLCAiZm9udCB0aGlja25lc3MiLAogICAgICAgICAgICJTZXRzIHRoZSBUaGlja25lc3Mgb2YgRm9udCIsIDAsIEdfTUFYSU5ULAotICAgICAgICAgIERFRkFVTFRfUFJPUF9USElDS05FU1MsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfUFJPUF9USElDS05FU1MsCisgICAgICAgICAgKEdQYXJhbUZsYWdzKSAoR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSkpOwogCiAgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ09MT1JfUiwKICAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJjb2xvclIiLCAiY29sb3IgLVJlZCAiLAogICAgICAgICAgICJTZXRzIHRoZSBjb2xvciAtUiIsIDAsIDI1NSwKLSAgICAgICAgICBERUZBVUxUX1BST1BfQ09MT1IsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfUFJPUF9DT0xPUiwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DT0xPUl9HLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImNvbG9yRyIsICJjb2xvciAtR3JlZW4iLAogICAgICAgICAgICJTZXRzIHRoZSBjb2xvciAtRyIsIDAsIDI1NSwKLSAgICAgICAgICBERUZBVUxUX1BST1BfQ09MT1IsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfUFJPUF9DT0xPUiwKKyAgICAgICAgICAoR1BhcmFtRmxhZ3MpIChHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKSk7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DT0xPUl9CLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImNvbG9yQiIsICJjb2xvciAtQmx1ZSIsCiAgICAgICAgICAgIlNldHMgdGhlIGNvbG9yIC1CIiwgMCwgMjU1LAotICAgICAgICAgIERFRkFVTFRfUFJPUF9DT0xPUiwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisgICAgICAgICAgREVGQVVMVF9QUk9QX0NPTE9SLAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0hFSUdIVCwKICAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJoZWlnaHQiLCAiSGVpZ2h0IiwKICAgICAgICAgICAiU2V0cyB0aGUgaGVpZ2h0IG9mIGZvbnRzIiwgMS4wLCA1LjAsCi0gICAgICAgICAgREVGQVVMVF9IRUlHSFQsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICAgICAgICAgIERFRkFVTFRfSEVJR0hULAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1dJRFRILAogICAgICAgZ19wYXJhbV9zcGVjX2RvdWJsZSAoIndpZHRoIiwgIldpZHRoIiwKICAgICAgICAgICAiU2V0cyB0aGUgd2lkdGggb2YgZm9udHMiLCAxLjAsIDUuMCwKLSAgICAgICAgICBERUZBVUxUX1dJRFRILCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKyAgICAgICAgICBERUZBVUxUX1dJRFRILAorICAgICAgICAgIChHUGFyYW1GbGFncykgKEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpKTsKIAogICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgIm9wZW5jdnRleHRvdmVybGF5IiwKQEAgLTIyMiwyMCArMjI2LDYgQEAKIHN0YXRpYyB2b2lkCiBnc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9pbml0IChHc3RPcGVuY3ZUZXh0T3ZlcmxheSAqIGZpbHRlcikKIHsKLSAgZmlsdGVyLT5zaW5rcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZzaW5rX2ZhY3RvcnksICJzaW5rIik7Ci0gIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKGZpbHRlci0+c2lua3BhZCk7Ci0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChmaWx0ZXIpLCBmaWx0ZXItPnNpbmtwYWQpOwotCi0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChmaWx0ZXItPnNpbmtwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfaGFuZGxlX3NpbmtfZXZlbnQpKTsKLQotICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoZmlsdGVyLT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2NoYWluKSk7Ci0KLSAgZmlsdGVyLT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNyY19mYWN0b3J5LCAic3JjIik7Ci0gIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKGZpbHRlci0+c3JjcGFkKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKGZpbHRlciksIGZpbHRlci0+c3JjcGFkKTsKLQogICBmaWx0ZXItPnRleHRidWYgPSBnX3N0cmR1cCAoREVGQVVMVF9QUk9QX1RFWFQpOwogICBmaWx0ZXItPndpZHRoID0gREVGQVVMVF9QUk9QX1dJRFRIOwogICBmaWx0ZXItPmhlaWdodCA9IERFRkFVTFRfUFJPUF9IRUlHSFQ7CkBAIC0yNDUsNiArMjM1LDkgQEAKICAgZmlsdGVyLT5jb2xvclIgPSBERUZBVUxUX1BST1BfQ09MT1I7CiAgIGZpbHRlci0+Y29sb3JHID0gREVGQVVMVF9QUk9QX0NPTE9SOwogICBmaWx0ZXItPmNvbG9yQiA9IERFRkFVTFRfUFJPUF9DT0xPUjsKKworICBnc3Rfb3BlbmN2X3ZpZGVvX2ZpbHRlcl9zZXRfaW5fcGxhY2UgKEdTVF9PUEVOQ1ZfVklERU9fRklMVEVSX0NBU1QgKGZpbHRlciksCisgICAgICBUUlVFKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMzMCw3MSArMzIzLDIyIEBACiAgIH0KIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3Rfb3BlbmN2X3RleHRfb3ZlcmxheV9oYW5kbGVfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgR3N0T3BlbmN2VGV4dE92ZXJsYXkgKmZpbHRlcjsKLSAgZ2ludCB3aWR0aCwgaGVpZ2h0OwotICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKLSAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKLQotICBmaWx0ZXIgPSBHU1RfT1BFTkNWX1RFWFRfT1ZFUkxBWSAocGFyZW50KTsKLQotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgotICAgIHsKLSAgICAgIEdzdENhcHMgKmNhcHM7Ci0gICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKLQotICAgICAgc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIndpZHRoIiwgJndpZHRoKTsKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmhlaWdodCk7Ci0KLSAgICAgIGlmIChmaWx0ZXItPmN2SW1hZ2UpIHsKLSAgICAgICAgY3ZSZWxlYXNlSW1hZ2UgKCZmaWx0ZXItPmN2SW1hZ2UpOwotICAgICAgfQotICAgICAgZmlsdGVyLT5jdkltYWdlID0gY3ZDcmVhdGVJbWFnZSAoY3ZTaXplICh3aWR0aCwgaGVpZ2h0KSwgSVBMX0RFUFRIXzhVLCAzKTsKLQotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJlcyA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKLSAgcmV0dXJuIHJlczsKLX0KLQotCiAvKiBjaGFpbiBmdW5jdGlvbgogICogdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1YWwgcHJvY2Vzc2luZwogICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X29wZW5jdl90ZXh0X292ZXJsYXlfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEJ1ZmZlciAqIGJ1ZikKK2dzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X3RyYW5zZm9ybV9pcCAoR3N0T3BlbmN2VmlkZW9GaWx0ZXIgKiBiYXNlLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZiwgSXBsSW1hZ2UgKiBpbWcpCiB7Ci0gIEdzdE9wZW5jdlRleHRPdmVybGF5ICpmaWx0ZXI7Ci0gIEdzdE1hcEluZm8gbWFwX2luZm87Ci0gIGd1aW50OCAqZGF0YTsKLQotICBmaWx0ZXIgPSBHU1RfT1BFTkNWX1RFWFRfT1ZFUkxBWSAocGFyZW50KTsKLQotICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmbWFwX2luZm8sIEdTVF9NQVBfUkVBRCk7Ci0gIGRhdGEgPSBtYXBfaW5mby5kYXRhOwotCi0gIGZpbHRlci0+Y3ZJbWFnZS0+aW1hZ2VEYXRhID0gKGNoYXIgKikgZGF0YTsKKyAgR3N0T3BlbmN2VGV4dE92ZXJsYXkgKmZpbHRlciA9IEdTVF9PUEVOQ1ZfVEVYVF9PVkVSTEFZIChiYXNlKTsKIAogICBjdkluaXRGb250ICgmKGZpbHRlci0+Zm9udCksIENWX0ZPTlRfVkVDVE9SMCwgZmlsdGVyLT53aWR0aCwgZmlsdGVyLT5oZWlnaHQsCiAgICAgICAwLCBmaWx0ZXItPnRoaWNrbmVzcywgMCk7Ci0KLSAgYnVmID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChidWYpOwotICBjdlB1dFRleHQgKGZpbHRlci0+Y3ZJbWFnZSwgZmlsdGVyLT50ZXh0YnVmLCBjdlBvaW50IChmaWx0ZXItPnhwb3MsCisgIGN2UHV0VGV4dCAoaW1nLCBmaWx0ZXItPnRleHRidWYsIGN2UG9pbnQgKGZpbHRlci0+eHBvcywKICAgICAgICAgICBmaWx0ZXItPnlwb3MpLCAmKGZpbHRlci0+Zm9udCksIGN2U2NhbGFyIChmaWx0ZXItPmNvbG9yUiwKICAgICAgICAgICBmaWx0ZXItPmNvbG9yRywgZmlsdGVyLT5jb2xvckIsIDApKTsKIAotICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXBfaW5mbyk7Ci0gIHJldHVybiBnc3RfcGFkX3B1c2ggKGZpbHRlci0+c3JjcGFkLCBidWYpOworICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKIApkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5oIGIvZXh0L29wZW5jdi9nc3R0ZXh0b3ZlcmxheS5oCmluZGV4IGU5MmFiMDcuLjY1YTdkNzUgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvZ3N0dGV4dG92ZXJsYXkuaAorKysgYi9leHQvb3BlbmN2L2dzdHRleHRvdmVybGF5LmgKQEAgLTMsNyArMyw3IEBACiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgVGhvbWFzIFZhbmRlciBTdGljaGVsZSA8dGhvbWFzQGFwZXN0YWFydC5vcmc+CiAgKiBDb3B5cmlnaHQgKEMpIDIwMDUgUm9uYWxkIFMuIEJ1bHRqZSA8cmJ1bHRqZUByb25hbGQuYml0ZnJlYWsubmV0PgogICogQ29weXJpZ2h0IChDKSAyMDEwIFNyZWVyZW5qIEJhbGFjaGFuZHJhbiA8YnNyZWVyZW5qQGdtYWlsLmNvbT4KLSAqIAorICoKICAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCiAgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAogICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgpAQCAtNDYsOCArNDYsNyBAQAogI2lmbmRlZiBfX0dTVF9PUEVOQ1ZfVEVYVF9PVkVSTEFZX0hfXwogI2RlZmluZSBfX0dTVF9PUEVOQ1ZfVEVYVF9PVkVSTEFZX0hfXwogCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgImdzdG9wZW5jdnV0aWxzLmgiCisjaW5jbHVkZSA8Z3N0b3BlbmN2dmlkZW9maWx0ZXIuaD4KICNpbmNsdWRlIDxvcGVuY3YyL2NvcmUvY29yZV9jLmg+CiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTY4LDEyICs2Nyw5IEBACiAKIHN0cnVjdCBfR3N0T3BlbmN2VGV4dE92ZXJsYXkKIHsKLSAgR3N0RWxlbWVudCBlbGVtZW50OworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlciBlbGVtZW50OwogCi0gIEdzdFBhZCAqc2lua3BhZCwgKnNyY3BhZDsKLQotICBJcGxJbWFnZSAqY3ZJbWFnZTsKLSAgQ3ZGb250IGZvbnQ7ICAKKyAgQ3ZGb250IGZvbnQ7CiAKICAgZ2ludCB4cG9zOwogICBnaW50IHlwb3M7CkBAIC04NSw5ICs4MSw5IEBACiAKIH07CiAKLXN0cnVjdCBfR3N0T3BlbmN2VGV4dE92ZXJsYXlDbGFzcyAKK3N0cnVjdCBfR3N0T3BlbmN2VGV4dE92ZXJsYXlDbGFzcwogewotICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOworICBHc3RPcGVuY3ZWaWRlb0ZpbHRlckNsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIEdUeXBlIGdzdF9vcGVuY3ZfdGV4dF9vdmVybGF5X2dldF90eXBlICh2b2lkKTsKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvbW90aW9uY2VsbHNfd3JhcHBlci5jcHAgYi9leHQvb3BlbmN2L21vdGlvbmNlbGxzX3dyYXBwZXIuY3BwCmluZGV4IGU5Nzk0Y2YuLjliY2U4MzggMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuY3YvbW90aW9uY2VsbHNfd3JhcHBlci5jcHAKKysrIGIvZXh0L29wZW5jdi9tb3Rpb25jZWxsc193cmFwcGVyLmNwcApAQCAtNTYsNiArNTYsOSBAQAogc3RhdGljIGludCBpbnN0YW5jZUNvdW50ZXIgPSAwOwogc3RhdGljIGJvb2wgZWxlbWVudF9pZF93YXNfbWF4ID0gZmFsc2U7CiAKK3ZlY3RvciA8IGluc3RhbmNlT2ZNQyA+IG1vdGlvbmNlbGxzdmVjdG9yOwordmVjdG9yIDwgaW50ID4gbW90aW9uY2VsbHNmcmVlaWRzOworCiBNb3Rpb25DZWxscyAqbWM7CiBjaGFyIHBfc3RyW10gPSAiaWR4IGZhaWxlZCI7CiAKZGlmZiAtLWdpdCBhL2V4dC9vcGVuY3YvbW90aW9uY2VsbHNfd3JhcHBlci5oIGIvZXh0L29wZW5jdi9tb3Rpb25jZWxsc193cmFwcGVyLmgKaW5kZXggMWZlNWRjMy4uYjY4NjlhMSAxMDA2NDQKLS0tIGEvZXh0L29wZW5jdi9tb3Rpb25jZWxsc193cmFwcGVyLmgKKysrIGIvZXh0L29wZW5jdi9tb3Rpb25jZWxsc193cmFwcGVyLmgKQEAgLTU0LDggKzU0LDYgQEAKICAgaW50IGlkOwogICBNb3Rpb25DZWxscyAqbWM7CiB9OwotdmVjdG9yIDwgaW5zdGFuY2VPZk1DID4gbW90aW9uY2VsbHN2ZWN0b3I7Ci12ZWN0b3IgPCBpbnQgPm1vdGlvbmNlbGxzZnJlZWlkczsKIAogaW50IHNlYXJjaElkeCAoaW50IHBfaWQpOwogZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvZXh0L29wZW5leHIvTWFrZWZpbGUuaW4gYi9leHQvb3BlbmV4ci9NYWtlZmlsZS5pbgppbmRleCBhNzE1YjAxLi43MWFiYjMyIDEwMDY0NAotLS0gYS9leHQvb3BlbmV4ci9NYWtlZmlsZS5pbgorKysgYi9leHQvb3BlbmV4ci9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yOTQsNiArMjkzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzEsNiArMzMyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzksNyArMzQyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzU4LDggKzM2MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzYsMTYgKzM3OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MTEsNiArNDE1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDM2LDYgKzQ0Miw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUzNyw2ICs1NDUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTUwLDggKzU1OSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU2Nyw2ICs1NzQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjI0LDE2ICs2MzMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02ODUsNiArNjk2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY5NSw2ICs3MDcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MDQsNiArNzE3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc0MSw3ICs3NTYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9vcGVuaDI2NC9NYWtlZmlsZS5pbiBiL2V4dC9vcGVuaDI2NC9NYWtlZmlsZS5pbgppbmRleCBjYTcxMDljLi4xODMxNmMxIDEwMDY0NAotLS0gYS9leHQvb3BlbmgyNjQvTWFrZWZpbGUuaW4KKysrIGIvZXh0L29wZW5oMjY0L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI5NCw2ICsyOTMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzMSw2ICszMzIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzOSw3ICszNDIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTgsOCArMzYwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3NiwxNiArMzc5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxMSw2ICs0MTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzYsNiArNDQyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTM3LDYgKzU0NSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTAsOCArNTU5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTY3LDYgKzU3NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjQsMTYgKzYzMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4NSw2ICs2OTYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjk1LDYgKzcwNyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwNCw2ICs3MTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQxLDcgKzc1Niw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L29wZW5qcGVnL01ha2VmaWxlLmluIGIvZXh0L29wZW5qcGVnL01ha2VmaWxlLmluCmluZGV4IDdiZjEzYTcuLmQzNzc3MWEgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVuanBlZy9NYWtlZmlsZS5pbgorKysgYi9leHQvb3BlbmpwZWcvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvb3Blbm5pMi9NYWtlZmlsZS5pbiBiL2V4dC9vcGVubmkyL01ha2VmaWxlLmluCmluZGV4IGU4MmFjNzYuLjQwMjc1OTUgMTAwNjQ0Ci0tLSBhL2V4dC9vcGVubmkyL01ha2VmaWxlLmluCisrKyBiL2V4dC9vcGVubmkyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L29wdXMvTWFrZWZpbGUuYW0gYi9leHQvb3B1cy9NYWtlZmlsZS5hbQppbmRleCBkMjJjNjY0Li5jNmMxYTgwIDEwMDY0NAotLS0gYS9leHQvb3B1cy9NYWtlZmlsZS5hbQorKysgYi9leHQvb3B1cy9NYWtlZmlsZS5hbQpAQCAtMSwxOSArMSwyMCBAQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0b3B1cy5sYQorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0b3B1c3BhcnNlLmxhCiAKLWxpYmdzdG9wdXNfbGFfU09VUkNFUyA9IGdzdG9wdXMuYyBnc3RvcHVzZGVjLmMgZ3N0b3B1c2VuYy5jIGdzdG9wdXNwYXJzZS5jIGdzdG9wdXNoZWFkZXIuYyBnc3RvcHVzY29tbW9uLmMgZ3N0cnRwb3B1c3BheS5jIGdzdHJ0cG9wdXNkZXBheS5jCi1saWJnc3RvcHVzX2xhX0NGTEFHUyA9IFwKK2xpYmdzdG9wdXNwYXJzZV9sYV9TT1VSQ0VTID0gZ3N0b3B1cy5jIGdzdG9wdXNwYXJzZS5jIGdzdG9wdXNoZWFkZXIuYworbGliZ3N0b3B1c3BhcnNlX2xhX0NGTEFHUyA9IFwKICAgICAgICAgLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCiAJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0NGTEFHUykgXAogCSQoT1BVU19DRkxBR1MpCi1saWJnc3RvcHVzX2xhX0xJQkFERCA9IFwKK2xpYmdzdG9wdXNwYXJzZV9sYV9MSUJBREQgPSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKLQktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgLWxnc3RydHAtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0cGJ1dGlscy0kKEdTVF9BUElfVkVSU0lPTikgXAogCSQoR1NUX0JBU0VfTElCUykgXAogCSQoR1NUX0xJQlMpIFwKIAkkKE9QVVNfTElCUykKLWxpYmdzdG9wdXNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKSAkKExJQk0pCi1saWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCitsaWJnc3RvcHVzcGFyc2VfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKSAkKExJQk0pCitsaWJnc3RvcHVzcGFyc2VfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIAotbm9pbnN0X0hFQURFUlMgPSBnc3RvcHVzZW5jLmggZ3N0b3B1c2RlYy5oIGdzdG9wdXNwYXJzZS5oIGdzdG9wdXNoZWFkZXIuaCBnc3RvcHVzY29tbW9uLmggZ3N0cnRwb3B1c3BheS5oIGdzdHJ0cG9wdXNkZXBheS5oCitub2luc3RfSEVBREVSUyA9IGdzdG9wdXNwYXJzZS5oIGdzdG9wdXNoZWFkZXIuaApkaWZmIC0tZ2l0IGEvZXh0L29wdXMvTWFrZWZpbGUuaW4gYi9leHQvb3B1cy9NYWtlZmlsZS5pbgppbmRleCA4YzI1NWQyLi43NGE5NTJlIDEwMDY0NAotLS0gYS9leHQvb3B1cy9NYWtlZmlsZS5pbgorKysgYi9leHQvb3B1cy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjQsMjMgKzE2MywyMSBAQAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdG9wdXNfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK2xpYmdzdG9wdXNwYXJzZV9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0b3B1c19sYV9PQkpFQ1RTID0gbGliZ3N0b3B1c19sYS1nc3RvcHVzLmxvIFwKLQlsaWJnc3RvcHVzX2xhLWdzdG9wdXNkZWMubG8gbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLmxvIFwKLQlsaWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5sbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNoZWFkZXIubG8gXAotCWxpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5sbyBsaWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkubG8gXAotCWxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LmxvCi1saWJnc3RvcHVzX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdG9wdXNfbGFfT0JKRUNUUykKK2FtX2xpYmdzdG9wdXNwYXJzZV9sYV9PQkpFQ1RTID0gbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXMubG8gXAorCWxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzcGFyc2UubG8gXAorCWxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzaGVhZGVyLmxvCitsaWJnc3RvcHVzcGFyc2VfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0b3B1c3BhcnNlX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RvcHVzX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAotCSQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCi0JJChDQ0xEKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0b3B1c19sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitsaWJnc3RvcHVzcGFyc2VfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChsaWJnc3RvcHVzcGFyc2VfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ0NMRCkgJChsaWJnc3RvcHVzcGFyc2VfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQobGliZ3N0b3B1c3BhcnNlX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKIGFtX192X1BfMCA9IGZhbHNlCkBAIC0yMTUsOCArMjEyLDggQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RvcHVzX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdG9wdXNfbGFfU09VUkNFUykKK1NPVVJDRVMgPSAkKGxpYmdzdG9wdXNwYXJzZV9sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3RvcHVzcGFyc2VfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTI3OSw2ICsyNzYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNiw2ICszMTUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNCw3ICszMjUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDMsOCArMzQzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MSwxNiArMzYyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Niw2ICszOTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjEsNiArNDI1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIyLDYgKzUyOCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzUsOCArNTQyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUyLDYgKzU1Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDksMTYgKzYxNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MCw2ICs2NzksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgwLDYgKzY5MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OSw2ICs3MDAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI2LDcgKzczOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzY2LDI1ICs3NzgsMjYgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0b3B1cy5sYQotbGliZ3N0b3B1c19sYV9TT1VSQ0VTID0gZ3N0b3B1cy5jIGdzdG9wdXNkZWMuYyBnc3RvcHVzZW5jLmMgZ3N0b3B1c3BhcnNlLmMgZ3N0b3B1c2hlYWRlci5jIGdzdG9wdXNjb21tb24uYyBnc3RydHBvcHVzcGF5LmMgZ3N0cnRwb3B1c2RlcGF5LmMKLWxpYmdzdG9wdXNfbGFfQ0ZMQUdTID0gXAorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0b3B1c3BhcnNlLmxhCitsaWJnc3RvcHVzcGFyc2VfbGFfU09VUkNFUyA9IGdzdG9wdXMuYyBnc3RvcHVzcGFyc2UuYyBnc3RvcHVzaGVhZGVyLmMKK2xpYmdzdG9wdXNwYXJzZV9sYV9DRkxBR1MgPSBcCiAgICAgICAgIC1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9DRkxBR1MpIFwKIAkkKE9QVVNfQ0ZMQUdTKQogCi1saWJnc3RvcHVzX2xhX0xJQkFERCA9IFwKK2xpYmdzdG9wdXNwYXJzZV9sYV9MSUJBREQgPSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKLQktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgLWxnc3RydHAtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0cGJ1dGlscy0kKEdTVF9BUElfVkVSU0lPTikgXAogCSQoR1NUX0JBU0VfTElCUykgXAogCSQoR1NUX0xJQlMpIFwKIAkkKE9QVVNfTElCUykKIAotbGliZ3N0b3B1c19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpICQoTElCTSkKLWxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gZ3N0b3B1c2VuYy5oIGdzdG9wdXNkZWMuaCBnc3RvcHVzcGFyc2UuaCBnc3RvcHVzaGVhZGVyLmggZ3N0b3B1c2NvbW1vbi5oIGdzdHJ0cG9wdXNwYXkuaCBnc3RydHBvcHVzZGVwYXkuaAorbGliZ3N0b3B1c3BhcnNlX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykgJChMSUJNKQorbGliZ3N0b3B1c3BhcnNlX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCitub2luc3RfSEVBREVSUyA9IGdzdG9wdXNwYXJzZS5oIGdzdG9wdXNoZWFkZXIuaAogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtODU0LDggKzg2Nyw4IEBACiAJICBybSAtZiAkJHtsb2NzfTsgXAogCX0KIAotbGliZ3N0b3B1cy5sYTogJChsaWJnc3RvcHVzX2xhX09CSkVDVFMpICQobGliZ3N0b3B1c19sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0b3B1c19sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DQ0xEKSQobGliZ3N0b3B1c19sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0b3B1c19sYV9PQkpFQ1RTKSAkKGxpYmdzdG9wdXNfbGFfTElCQUREKSAkKExJQlMpCitsaWJnc3RvcHVzcGFyc2UubGE6ICQobGliZ3N0b3B1c3BhcnNlX2xhX09CSkVDVFMpICQobGliZ3N0b3B1c3BhcnNlX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RvcHVzcGFyc2VfbGFfREVQRU5ERU5DSUVTKSAKKwkkKEFNX1ZfQ0NMRCkkKGxpYmdzdG9wdXNwYXJzZV9sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0b3B1c3BhcnNlX2xhX09CSkVDVFMpICQobGliZ3N0b3B1c3BhcnNlX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQpAQCAtODYzLDE0ICs4NzYsOSBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1cy5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2RlYy5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2VuYy5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2hlYWRlci5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzaGVhZGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNwYXJzZS5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtODk2LDYxICs5MDQsMjYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGliZ3N0b3B1c19sYS1nc3RvcHVzLmxvOiBnc3RvcHVzLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNfbGEtZ3N0b3B1cy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzLlRwbyAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXMubG8gYHRlc3QgLWYgJ2dzdG9wdXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1cy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXMuVHBvICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0b3B1cy5jJyBvYmplY3Q9J2xpYmdzdG9wdXNfbGEtZ3N0b3B1cy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXMubG86IGdzdG9wdXMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNwYXJzZV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzcGFyc2VfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5UcG8gLWMgLW8gbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXMubG8gYHRlc3QgLWYgJ2dzdG9wdXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1cy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wdXMuYycgb2JqZWN0PSdsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXMubG8gYHRlc3QgLWYgJ2dzdG9wdXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1cy5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c3BhcnNlX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNwYXJzZV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1cy5sbyBgdGVzdCAtZiAnZ3N0b3B1cy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzLmMKIAotbGliZ3N0b3B1c19sYS1nc3RvcHVzZGVjLmxvOiBnc3RvcHVzZGVjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c2RlYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzZGVjLlRwbyAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNkZWMubG8gYHRlc3QgLWYgJ2dzdG9wdXNkZWMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c2RlYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNkZWMuVHBvICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNkZWMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0b3B1c2RlYy5jJyBvYmplY3Q9J2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2RlYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNwYXJzZS5sbzogZ3N0b3B1c3BhcnNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzcGFyc2VfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c3BhcnNlX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c3BhcnNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c3BhcnNlLlRwbyAtYyAtbyBsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c3BhcnNlLmxvIGB0ZXN0IC1mICdnc3RvcHVzcGFyc2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0b3B1c3BhcnNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzcGFyc2UuVHBvICQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c3BhcnNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wdXNwYXJzZS5jJyBvYmplY3Q9J2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzcGFyc2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzZGVjLmxvIGB0ZXN0IC1mICdnc3RvcHVzZGVjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNkZWMuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNwYXJzZV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzcGFyc2VfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNwYXJzZS5sbyBgdGVzdCAtZiAnZ3N0b3B1c3BhcnNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNwYXJzZS5jCiAKLWxpYmdzdG9wdXNfbGEtZ3N0b3B1c2VuYy5sbzogZ3N0b3B1c2VuYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcHVzX2xhLWdzdG9wdXNlbmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2VuYy5UcG8gLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLmxvIGB0ZXN0IC1mICdnc3RvcHVzZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNlbmMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLlRwbyAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wdXNlbmMuYycgb2JqZWN0PSdsaWJnc3RvcHVzX2xhLWdzdG9wdXNlbmMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzaGVhZGVyLmxvOiBnc3RvcHVzaGVhZGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzcGFyc2VfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c3BhcnNlX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c2hlYWRlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIuVHBvIC1jIC1vIGxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzaGVhZGVyLmxvIGB0ZXN0IC1mICdnc3RvcHVzaGVhZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNoZWFkZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIuVHBvICQoREVQRElSKS9saWJnc3RvcHVzcGFyc2VfbGEtZ3N0b3B1c2hlYWRlci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RvcHVzaGVhZGVyLmMnIG9iamVjdD0nbGliZ3N0b3B1c3BhcnNlX2xhLWdzdG9wdXNoZWFkZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzZW5jLmxvIGB0ZXN0IC1mICdnc3RvcHVzZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNlbmMuYwotCi1saWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5sbzogZ3N0b3B1c3BhcnNlLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c3BhcnNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5UcG8gLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzcGFyc2UubG8gYHRlc3QgLWYgJ2dzdG9wdXNwYXJzZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzcGFyc2UuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzcGFyc2UuVHBvICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RvcHVzcGFyc2UuYycgb2JqZWN0PSdsaWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdG9wdXNwYXJzZS5sbyBgdGVzdCAtZiAnZ3N0b3B1c3BhcnNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNwYXJzZS5jCi0KLWxpYmdzdG9wdXNfbGEtZ3N0b3B1c2hlYWRlci5sbzogZ3N0b3B1c2hlYWRlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RvcHVzX2xhLWdzdG9wdXNoZWFkZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2hlYWRlci5UcG8gLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzaGVhZGVyLmxvIGB0ZXN0IC1mICdnc3RvcHVzaGVhZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNoZWFkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzaGVhZGVyLlRwbyAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RvcHVzaGVhZGVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG9wdXNoZWFkZXIuYycgb2JqZWN0PSdsaWJnc3RvcHVzX2xhLWdzdG9wdXNoZWFkZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0b3B1c19sYS1nc3RvcHVzaGVhZGVyLmxvIGB0ZXN0IC1mICdnc3RvcHVzaGVhZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNoZWFkZXIuYwotCi1saWJnc3RvcHVzX2xhLWdzdG9wdXNjb21tb24ubG86IGdzdG9wdXNjb21tb24uYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdG9wdXNjb21tb24uVHBvIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5sbyBgdGVzdCAtZiAnZ3N0b3B1c2NvbW1vbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzY29tbW9uLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RvcHVzY29tbW9uLmMnIG9iamVjdD0nbGliZ3N0b3B1c19sYS1nc3RvcHVzY29tbW9uLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0b3B1c2NvbW1vbi5sbyBgdGVzdCAtZiAnZ3N0b3B1c2NvbW1vbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RvcHVzY29tbW9uLmMKLQotbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzcGF5LmxvOiBnc3RydHBvcHVzcGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG9wdXNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzcGF5LlRwbyAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkubG8gYHRlc3QgLWYgJ2dzdHJ0cG9wdXNwYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwb3B1c3BheS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkuVHBvICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cnRwb3B1c3BheS5jJyBvYmplY3Q9J2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c3BheS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNwYXkubG8gYHRlc3QgLWYgJ2dzdHJ0cG9wdXNwYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwb3B1c3BheS5jCi0KLWxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LmxvOiBnc3RydHBvcHVzZGVwYXkuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdG9wdXNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0b3B1c19sYS1nc3RydHBvcHVzZGVwYXkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LlRwbyAtYyAtbyBsaWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNkZXBheS5sbyBgdGVzdCAtZiAnZ3N0cnRwb3B1c2RlcGF5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHJ0cG9wdXNkZXBheS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RvcHVzX2xhLWdzdHJ0cG9wdXNkZXBheS5UcG8gJChERVBESVIpL2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHJ0cG9wdXNkZXBheS5jJyBvYmplY3Q9J2xpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0b3B1c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RvcHVzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wdXNfbGEtZ3N0cnRwb3B1c2RlcGF5LmxvIGB0ZXN0IC1mICdnc3RydHBvcHVzZGVwYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwb3B1c2RlcGF5LmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RvcHVzcGFyc2VfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0b3B1c3BhcnNlX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG9wdXNwYXJzZV9sYS1nc3RvcHVzaGVhZGVyLmxvIGB0ZXN0IC1mICdnc3RvcHVzaGVhZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG9wdXNoZWFkZXIuYwogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzLmMgYi9leHQvb3B1cy9nc3RvcHVzLmMKaW5kZXggYTM0MjdiMi4uZDUzNjAwMCAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1cy5jCisrKyBiL2V4dC9vcHVzL2dzdG9wdXMuYwpAQCAtMjEsMzkgKzIxLDE3IEBACiAjaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKIAotI2luY2x1ZGUgImdzdG9wdXNkZWMuaCIKLSNpbmNsdWRlICJnc3RvcHVzZW5jLmgiCiAjaW5jbHVkZSAiZ3N0b3B1c3BhcnNlLmgiCiAKLSNpbmNsdWRlICJnc3RydHBvcHVzcGF5LmgiCi0jaW5jbHVkZSAiZ3N0cnRwb3B1c2RlcGF5LmgiCi0KICNpbmNsdWRlIDxnc3QvdGFnL3RhZy5oPgogCiBzdGF0aWMgZ2Jvb2xlYW4KIHBsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCiB7Ci0KLSAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAib3B1c2VuYyIsIEdTVF9SQU5LX1BSSU1BUlksCi0gICAgICAgICAgR1NUX1RZUEVfT1BVU19FTkMpKQotICAgIHJldHVybiBGQUxTRTsKLQotICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJvcHVzZGVjIiwgR1NUX1JBTktfUFJJTUFSWSwKLSAgICAgICAgICBHU1RfVFlQRV9PUFVTX0RFQykpCi0gICAgcmV0dXJuIEZBTFNFOwotCiAgIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgIm9wdXNwYXJzZSIsIEdTVF9SQU5LX05PTkUsCiAgICAgICAgICAgR1NUX1RZUEVfT1BVU19QQVJTRSkpCiAgICAgcmV0dXJuIEZBTFNFOwogCi0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInJ0cG9wdXNkZXBheSIsIEdTVF9SQU5LX1NFQ09OREFSWSwKLSAgICAgICAgICBHU1RfVFlQRV9SVFBfT1BVU19ERVBBWSkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmICghZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInJ0cG9wdXNwYXkiLCBHU1RfUkFOS19TRUNPTkRBUlksCi0gICAgICAgICAgR1NUX1RZUEVfUlRQX09QVVNfUEFZKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KICAgZ3N0X3RhZ19yZWdpc3Rlcl9tdXNpY2JyYWluel90YWdzICgpOwogCiAgIHJldHVybiBUUlVFOwpAQCAtNjEsNiArMzksNiBAQAogCiBHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCiAgICAgR1NUX1ZFUlNJT05fTUlOT1IsCi0gICAgb3B1cywKLSAgICAiT1BVUyBwbHVnaW4gbGlicmFyeSIsCisgICAgb3B1c3BhcnNlLAorICAgICJPUFVTIHBhcnNlIHBsdWdpbiIsCiAgICAgcGx1Z2luX2luaXQsIFZFUlNJT04sICJMR1BMIiwgR1NUX1BBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5jIGIvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZWJjY2Q4Li4wMDAwMDAwCi0tLSBhL2V4dC9vcHVzL2dzdG9wdXNjb21tb24uYworKysgL2Rldi9udWxsCkBAIC0xLDExMSArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlICJnc3RvcHVzY29tbW9uLmgiCi0KLS8qIGh0dHA6Ly93d3cueGlwaC5vcmcvdm9yYmlzL2RvYy9Wb3JiaXNfSV9zcGVjLmh0bWwjeDEtODAwMDA0LjMuOSAqLwotLyogY29weSBvZiB0aGUgc2FtZSBzdHJ1Y3R1cmUgaW4gdGhlIHZvcmJpcyBwbHVnaW4gKi8KLWNvbnN0IEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIGdzdF9vcHVzX2NoYW5uZWxfcG9zaXRpb25zW11bOF0gPSB7Ci0gIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIE1vbm8gKi8KLSAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX01PTk99LAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdGVyZW8gKi8KLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVCwKLSAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfSwKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogU3RlcmVvICsgQ2VudHJlICovCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0NFTlRFUiwKLSAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfSwKLSAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogUXVhZHJhcGhvbmljICovCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfUklHSFQsCi0gICAgICB9LAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBTdGVyZW8gKyBDZW50cmUgKyByZWFyIHN0ZXJlbyAqLwotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVIsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfUklHSFQsCi0gICAgICB9LAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBGdWxsIDUuMSBTdXJyb3VuZCAqLwotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9DRU5URVIsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfUklHSFQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0xGRTEsCi0gICAgICB9LAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA2LjEgU3Vycm91bmQsIGluIFZvcmJpcyBzcGVjIHNpbmNlIDIwMTAtMDEtMTMgKi8KLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfQ0VOVEVSLAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9MRUZULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9TSURFX1JJR0hULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0NFTlRFUiwKLSAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0xGRTF9LAotICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiA3LjEgU3Vycm91bmQsIGluIFZvcmJpcyBzcGVjIHNpbmNlIDIwMTAtMDEtMTMgKi8KLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfQ0VOVEVSLAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVCwKLSAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fU0lERV9MRUZULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9TSURFX1JJR0hULAotICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQsCi0gICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1JFQVJfUklHSFQsCi0gICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9MRkUxfSwKLX07Ci0KLWNvbnN0IGNoYXIgKmdzdF9vcHVzX2NoYW5uZWxfbmFtZXNbXSA9IHsKLSAgIm1vbm8iLAotICAiZnJvbnQgbGVmdCIsCi0gICJmcm9udCByaWdodCIsCi0gICJyZWFyIGNlbnRlciIsCi0gICJyZWFyIGxlZnQiLAotICAicmVhciByaWdodCIsCi0gICJsZmUiLAotICAiZnJvbnQgY2VudGVyIiwKLSAgImZyb250IGxlZnQgb2YgY2VudGVyIiwKLSAgImZyb250IHJpZ2h0IG9mIGNlbnRlciIsCi0gICJzaWRlIGxlZnQiLAotICAic2lkZSByaWdodCIsCi0gICJub25lIgotfTsKLQotdm9pZAotZ3N0X29wdXNfY29tbW9uX2xvZ19jaGFubmVsX21hcHBpbmdfdGFibGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAotICAgIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXRlZ29yeSwgY29uc3QgY2hhciAqbXNnLCBpbnQgbl9jaGFubmVscywKLSAgICBjb25zdCBndWludDggKiB0YWJsZSkKLXsKLSAgaW50IG47Ci0gIEdTdHJpbmcgKnM7Ci0KLSAgaWYgKGdzdF9kZWJ1Z19jYXRlZ29yeV9nZXRfdGhyZXNob2xkIChjYXRlZ29yeSkgPCBHU1RfTEVWRUxfSU5GTykKLSAgICByZXR1cm47Ci0KLSAgcyA9IGdfc3RyaW5nX25ldyAoIlsgIik7Ci0gIGZvciAobiA9IDA7IG4gPCBuX2NoYW5uZWxzOyArK24pIHsKLSAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChzLCAiJWQgIiwgdGFibGVbbl0pOwotICB9Ci0gIGdfc3RyaW5nX2FwcGVuZCAocywgIl0iKTsKLQotICBHU1RfQ0FUX0xFVkVMX0xPRyAoY2F0ZWdvcnksIEdTVF9MRVZFTF9JTkZPLCBlbGVtZW50LCAiJXM6ICVzIiwgbXNnLCBzLT5zdHIpOwotICBnX3N0cmluZ19mcmVlIChzLCBUUlVFKTsKLX0KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNkZWMuYyBiL2V4dC9vcHVzL2dzdG9wdXNkZWMuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjA4MWI5OS4uMDAwMDAwMAotLS0gYS9leHQvb3B1cy9nc3RvcHVzZGVjLmMKKysrIC9kZXYvbnVsbApAQCAtMSw3OTQgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDQgV2ltIFRheW1hbnMgPHdpbUBmbHVlbmRvLmNvbT4KLSAqIENvcHlyaWdodCAoQykgMjAwNiBUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW0gY2VudHJpY3VsYXIgbmV0PgotICogQ29weXJpZ2h0IChDKSAyMDA4IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICogQ29weXJpZ2h0IChDKSAyMDExLTIwMTIgVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotLyoKLSAqIEJhc2VkIG9uIHRoZSBzcGVleGRlYyBlbGVtZW50LgotICovCi0KLS8qKgotICogU0VDVElPTjplbGVtZW50LW9wdXNkZWMKLSAqIEBzZWVfYWxzbzogb3B1c2VuYywgb2dnZGVtdXgKLSAqCi0gKiBUaGlzIGVsZW1lbnQgZGVjb2RlcyBhIE9QVVMgc3RyZWFtIHRvIHJhdyBpbnRlZ2VyIGF1ZGlvLgotICoKLSAqIDxyZWZzZWN0Mj4KLSAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+Ci0gKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPW9wdXMub2dnICEgb2dnZGVtdXggISBvcHVzZGVjICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGFsc2FzaW5rCi0gKiBdfCBEZWNvZGUgYW4gT2dnL09wdXMgZmlsZS4gVG8gY3JlYXRlIGFuIE9nZy9PcHVzIGZpbGUgcmVmZXIgdG8gdGhlIGRvY3VtZW50YXRpb24gb2Ygb3B1c2VuYy4KLSAqIDwvcmVmc2VjdDI+Ci0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgImdzdG9wdXNoZWFkZXIuaCIKLSNpbmNsdWRlICJnc3RvcHVzY29tbW9uLmgiCi0jaW5jbHVkZSAiZ3N0b3B1c2RlYy5oIgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChvcHVzZGVjX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIG9wdXNkZWNfZGVidWcKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIG9wdXNfZGVjX3NyY19mYWN0b3J5ID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgIgotICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfQVVESU9fTkUgKFMxNikgIiwgIgotICAgICAgICAibGF5b3V0ID0gKHN0cmluZykgaW50ZXJsZWF2ZWQsICIKLSAgICAgICAgInJhdGUgPSAoaW50KSB7IDQ4MDAwLCAyNDAwMCwgMTYwMDAsIDEyMDAwLCA4MDAwIH0sICIKLSAgICAgICAgImNoYW5uZWxzID0gKGludCkgWyAxLCA4IF0gIikKLSAgICApOwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgb3B1c19kZWNfc2lua19mYWN0b3J5ID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImF1ZGlvL3gtb3B1cyIpCi0gICAgKTsKLQotR19ERUZJTkVfVFlQRSAoR3N0T3B1c0RlYywgZ3N0X29wdXNfZGVjLCBHU1RfVFlQRV9BVURJT19ERUNPREVSKTsKLQotI2RlZmluZSBEQl9UT19MSU5FQVIoeCkgcG93ICgxMC4sICh4KSAvIDIwLikKLQotI2RlZmluZSBERUZBVUxUX1VTRV9JTkJBTkRfRkVDIEZBTFNFCi0jZGVmaW5lIERFRkFVTFRfQVBQTFlfR0FJTiBUUlVFCi0KLWVudW0KLXsKLSAgUFJPUF8wLAotICBQUk9QX1VTRV9JTkJBTkRfRkVDLAotICBQUk9QX0FQUExZX0dBSU4KLX07Ci0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X29wdXNfZGVjX3BhcnNlX2hlYWRlciAoR3N0T3B1c0RlYyAqIGRlYywKLSAgICBHc3RCdWZmZXIgKiBidWYpOwotc3RhdGljIGdib29sZWFuIGdzdF9vcHVzX2RlY19zdGFydCAoR3N0QXVkaW9EZWNvZGVyICogZGVjKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3Rfb3B1c19kZWNfc3RvcCAoR3N0QXVkaW9EZWNvZGVyICogZGVjKTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9vcHVzX2RlY19oYW5kbGVfZnJhbWUgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYywKLSAgICBHc3RCdWZmZXIgKiBidWZmZXIpOwotc3RhdGljIGdib29sZWFuIGdzdF9vcHVzX2RlY19zZXRfZm9ybWF0IChHc3RBdWRpb0RlY29kZXIgKiBiZGVjLAotICAgIEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyB2b2lkIGdzdF9vcHVzX2RlY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgdm9pZCBnc3Rfb3B1c19kZWNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotCi0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19kZWNfY2xhc3NfaW5pdCAoR3N0T3B1c0RlY0NsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSAgR3N0QXVkaW9EZWNvZGVyQ2xhc3MgKmFkY2xhc3M7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzczsKLQotICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSAgYWRjbGFzcyA9IChHc3RBdWRpb0RlY29kZXJDbGFzcyAqKSBrbGFzczsKLSAgZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7Ci0KLSAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X29wdXNfZGVjX3NldF9wcm9wZXJ0eTsKLSAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X29wdXNfZGVjX2dldF9wcm9wZXJ0eTsKLQotICBhZGNsYXNzLT5zdGFydCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3B1c19kZWNfc3RhcnQpOwotICBhZGNsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2RlY19zdG9wKTsKLSAgYWRjbGFzcy0+aGFuZGxlX2ZyYW1lID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2RlY19oYW5kbGVfZnJhbWUpOwotICBhZGNsYXNzLT5zZXRfZm9ybWF0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2RlY19zZXRfZm9ybWF0KTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmb3B1c19kZWNfc3JjX2ZhY3RvcnkpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJm9wdXNfZGVjX3NpbmtfZmFjdG9yeSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLCAiT3B1cyBhdWRpbyBkZWNvZGVyIiwKLSAgICAgICJDb2RlYy9EZWNvZGVyL0F1ZGlvIiwKLSAgICAgICJkZWNvZGUgb3B1cyBzdHJlYW1zIHRvIGF1ZGlvIiwKLSAgICAgICJWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4iKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9VU0VfSU5CQU5EX0ZFQywKLSAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgidXNlLWluYmFuZC1mZWMiLCAiVXNlIGluLWJhbmQgRkVDIiwKLSAgICAgICAgICAiVXNlIGZvcndhcmQgZXJyb3IgY29ycmVjdGlvbiBpZiBhdmFpbGFibGUiLCBERUZBVUxUX1VTRV9JTkJBTkRfRkVDLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotCi0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQVBQTFlfR0FJTiwKLSAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiYXBwbHktZ2FpbiIsICJBcHBseSBnYWluIiwKLSAgICAgICAgICAiQXBwbHkgZ2FpbiBpZiBhbnkgaXMgc3BlY2lmaWVkIGluIHRoZSBoZWFkZXIiLCBERUZBVUxUX0FQUExZX0dBSU4sCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0KLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG9wdXNkZWNfZGVidWcsICJvcHVzZGVjIiwgMCwKLSAgICAgICJvcHVzIGRlY29kaW5nIGVsZW1lbnQiKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2RlY19yZXNldCAoR3N0T3B1c0RlYyAqIGRlYykKLXsKLSAgZGVjLT5wYWNrZXRubyA9IDA7Ci0gIGlmIChkZWMtPnN0YXRlKSB7Ci0gICAgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2Rlc3Ryb3kgKGRlYy0+c3RhdGUpOwotICAgIGRlYy0+c3RhdGUgPSBOVUxMOwotICB9Ci0KLSAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmZGVjLT5zdHJlYW1oZWFkZXIsIE5VTEwpOwotICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZkZWMtPnZvcmJpc2NvbW1lbnQsIE5VTEwpOwotICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZkZWMtPmxhc3RfYnVmZmVyLCBOVUxMKTsKLSAgZGVjLT5wcmltZWQgPSBGQUxTRTsKLQotICBkZWMtPnByZV9za2lwID0gMDsKLSAgZGVjLT5yMTI4X2dhaW4gPSAwOwotICBkZWMtPnNhbXBsZV9yYXRlID0gMDsKLSAgZGVjLT5uX2NoYW5uZWxzID0gMDsKLSAgZGVjLT5sZWZ0b3Zlcl9wbGNfZHVyYXRpb24gPSAwOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZGVjX2luaXQgKEdzdE9wdXNEZWMgKiBkZWMpCi17Ci0gIGRlYy0+dXNlX2luYmFuZF9mZWMgPSBGQUxTRTsKLSAgZGVjLT5hcHBseV9nYWluID0gREVGQVVMVF9BUFBMWV9HQUlOOwotCi0gIGdzdF9hdWRpb19kZWNvZGVyX3NldF9uZWVkc19mb3JtYXQgKEdTVF9BVURJT19ERUNPREVSIChkZWMpLCBUUlVFKTsKLSAgZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X3VzZV9kZWZhdWx0X3BhZF9hY2NlcHRjYXBzIChHU1RfQVVESU9fREVDT0RFUl9DQVNUCi0gICAgICAoZGVjKSwgVFJVRSk7Ci0gIEdTVF9QQURfU0VUX0FDQ0VQVF9URU1QTEFURSAoR1NUX0FVRElPX0RFQ09ERVJfU0lOS19QQUQgKGRlYykpOwotCi0gIGdzdF9vcHVzX2RlY19yZXNldCAoZGVjKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3Rfb3B1c19kZWNfc3RhcnQgKEdzdEF1ZGlvRGVjb2RlciAqIGRlYykKLXsKLSAgR3N0T3B1c0RlYyAqb2RlYyA9IEdTVF9PUFVTX0RFQyAoZGVjKTsKLQotICBnc3Rfb3B1c19kZWNfcmVzZXQgKG9kZWMpOwotCi0gIC8qIHdlIGtub3cgYWJvdXQgY29uY2VhbG1lbnQgKi8KLSAgZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X3BsY19hd2FyZSAoZGVjLCBUUlVFKTsKLQotICBpZiAob2RlYy0+dXNlX2luYmFuZF9mZWMpIHsKLSAgICAvKiBvcHVzZGVjIG91dHB1dHMgc2FtcGxlcyBkaXJlY3RseSBmcm9tIGFuIGlucHV0IGJ1ZmZlciwgZXhjZXB0IGlmCi0gICAgICogRkVDIGlzIG9uLCBpbiB3aGljaCBjYXNlIGl0IGJ1ZmZlcnMgb25lIGJ1ZmZlciBpbiBjYXNlIG9uZSBidWZmZXIKLSAgICAgKiBnb2VzIG1pc3NpbmcuCi0gICAgICovCi0gICAgZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X2xhdGVuY3kgKGRlYywgMTIwICogR1NUX01TRUNPTkQsIDEyMCAqIEdTVF9NU0VDT05EKTsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcHVzX2RlY19zdG9wIChHc3RBdWRpb0RlY29kZXIgKiBkZWMpCi17Ci0gIEdzdE9wdXNEZWMgKm9kZWMgPSBHU1RfT1BVU19ERUMgKGRlYyk7Ci0KLSAgZ3N0X29wdXNfZGVjX3Jlc2V0IChvZGVjKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGRvdWJsZQotZ3N0X29wdXNfZGVjX2dldF9yMTI4X2dhaW4gKGdpbnQxNiByMTI4X2dhaW4pCi17Ci0gIHJldHVybiByMTI4X2dhaW4gLyAoZG91YmxlKSAoMSA8PCA4KTsKLX0KLQotc3RhdGljIGRvdWJsZQotZ3N0X29wdXNfZGVjX2dldF9yMTI4X3ZvbHVtZSAoZ2ludDE2IHIxMjhfZ2FpbikKLXsKLSAgcmV0dXJuIERCX1RPX0xJTkVBUiAoZ3N0X29wdXNfZGVjX2dldF9yMTI4X2dhaW4gKHIxMjhfZ2FpbikpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZGVjX25lZ290aWF0ZSAoR3N0T3B1c0RlYyAqIGRlYywgY29uc3QgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gKiBwb3MpCi17Ci0gIEdzdENhcHMgKmNhcHMgPSBnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMgKEdTVF9BVURJT19ERUNPREVSX1NSQ19QQUQgKGRlYykpOwotICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gIEdzdEF1ZGlvSW5mbyBpbmZvOwotCi0gIGlmIChjYXBzKSB7Ci0gICAgY2FwcyA9IGdzdF9jYXBzX3RydW5jYXRlIChjYXBzKTsKLSAgICBjYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoY2Fwcyk7Ci0gICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotCi0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChzLCAicmF0ZSIpKQotICAgICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJyYXRlIiwgZGVjLT5zYW1wbGVfcmF0ZSk7Ci0gICAgZWxzZQotICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJyYXRlIiwgR19UWVBFX0lOVCwgZGVjLT5zYW1wbGVfcmF0ZSwgTlVMTCk7Ci0gICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAicmF0ZSIsICZkZWMtPnNhbXBsZV9yYXRlKTsKLQotICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAocywgImNoYW5uZWxzIikpCi0gICAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAocywgImNoYW5uZWxzIiwgZGVjLT5uX2NoYW5uZWxzKTsKLSAgICBlbHNlCi0gICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgZGVjLT5uX2NoYW5uZWxzLCBOVUxMKTsKLSAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJjaGFubmVscyIsICZkZWMtPm5fY2hhbm5lbHMpOwotCi0gICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICB9Ci0KLSAgaWYgKGRlYy0+bl9jaGFubmVscyA9PSAwKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiVXNpbmcgYSBkZWZhdWx0IG9mIDIgY2hhbm5lbHMiKTsKLSAgICBkZWMtPm5fY2hhbm5lbHMgPSAyOwotICAgIHBvcyA9IE5VTEw7Ci0gIH0KLQotICBpZiAoZGVjLT5zYW1wbGVfcmF0ZSA9PSAwKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiVXNpbmcgYSBkZWZhdWx0IG9mIDQ4a0h6IHNhbXBsZSByYXRlIik7Ci0gICAgZGVjLT5zYW1wbGVfcmF0ZSA9IDQ4MDAwOwotICB9Ci0KLSAgR1NUX0lORk9fT0JKRUNUIChkZWMsICJOZWdvdGlhdGVkICVkIGNoYW5uZWxzLCAlZCBIeiIsIGRlYy0+bl9jaGFubmVscywKLSAgICAgIGRlYy0+c2FtcGxlX3JhdGUpOwotCi0gIC8qIHBhc3MgdmFsaWQgb3JkZXIgdG8gYXVkaW8gaW5mbyAqLwotICBpZiAocG9zKSB7Ci0gICAgbWVtY3B5IChkZWMtPm9wdXNfcG9zLCBwb3MsIHNpemVvZiAocG9zWzBdKSAqIGRlYy0+bl9jaGFubmVscyk7Ci0gICAgZ3N0X2F1ZGlvX2NoYW5uZWxfcG9zaXRpb25zX3RvX3ZhbGlkX29yZGVyIChkZWMtPm9wdXNfcG9zLCBkZWMtPm5fY2hhbm5lbHMpOwotICB9Ci0KLSAgLyogc2V0IHVwIHNvdXJjZSBmb3JtYXQgKi8KLSAgZ3N0X2F1ZGlvX2luZm9faW5pdCAoJmluZm8pOwotICBnc3RfYXVkaW9faW5mb19zZXRfZm9ybWF0ICgmaW5mbywgR1NUX0FVRElPX0ZPUk1BVF9TMTYsCi0gICAgICBkZWMtPnNhbXBsZV9yYXRlLCBkZWMtPm5fY2hhbm5lbHMsIHBvcyA/IGRlYy0+b3B1c19wb3MgOiBOVUxMKTsKLSAgZ3N0X2F1ZGlvX2RlY29kZXJfc2V0X291dHB1dF9mb3JtYXQgKEdTVF9BVURJT19ERUNPREVSIChkZWMpLCAmaW5mbyk7Ci0KLSAgLyogYnV0IHdlIHN0aWxsIG5lZWQgdGhlIG9wdXMgb3JkZXIgZm9yIGxhdGVyIHJlb3JkZXJpbmcgKi8KLSAgaWYgKHBvcykgewotICAgIG1lbWNweSAoZGVjLT5vcHVzX3BvcywgcG9zLCBzaXplb2YgKHBvc1swXSkgKiBkZWMtPm5fY2hhbm5lbHMpOwotICAgIGdzdF9hdWRpb19jaGFubmVsX3Bvc2l0aW9uc190b192YWxpZF9vcmRlciAoZGVjLT5vcHVzX3BvcywgZGVjLT5uX2NoYW5uZWxzKTsKLSAgfSBlbHNlIHsKLSAgICBkZWMtPm9wdXNfcG9zWzBdID0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fSU5WQUxJRDsKLSAgfQotCi0gIGRlYy0+aW5mbyA9IGluZm87Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3Rfb3B1c19kZWNfcGFyc2VfaGVhZGVyIChHc3RPcHVzRGVjICogZGVjLCBHc3RCdWZmZXIgKiBidWYpCi17Ci0gIGNvbnN0IGd1aW50OCAqZGF0YTsKLSAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gcG9zWzY0XTsKLSAgY29uc3QgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gKnBvc24gPSBOVUxMOwotICBHc3RNYXBJbmZvIG1hcDsKLQotICBpZiAoIWdzdF9vcHVzX2hlYWRlcl9pc19pZF9oZWFkZXIgKGJ1ZikpIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChkZWMsICJIZWFkZXIgaXMgbm90IGFuIE9wdXMgSUQgaGVhZGVyIik7Ci0gICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotICB9Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgZGF0YSA9IG1hcC5kYXRhOwotCi0gIGRlYy0+bl9jaGFubmVscyA9IGRhdGFbOV07Ci0gIGRlYy0+c2FtcGxlX3JhdGUgPSBHU1RfUkVBRF9VSU5UMzJfTEUgKGRhdGEgKyAxMik7Ci0gIGlmIChkZWMtPnNhbXBsZV9yYXRlID09IDApCi0gICAgZGVjLT5zYW1wbGVfcmF0ZSA9IDQ4MDAwOwotICBkZWMtPnByZV9za2lwID0gR1NUX1JFQURfVUlOVDE2X0xFIChkYXRhICsgMTApOwotICBkZWMtPnIxMjhfZ2FpbiA9IEdTVF9SRUFEX1VJTlQxNl9MRSAoZGF0YSArIDE2KTsKLSAgZGVjLT5yMTI4X2dhaW5fdm9sdW1lID0gZ3N0X29wdXNfZGVjX2dldF9yMTI4X3ZvbHVtZSAoZGVjLT5yMTI4X2dhaW4pOwotICBHU1RfSU5GT19PQkpFQ1QgKGRlYywKLSAgICAgICJGb3VuZCBwcmUtc2tpcCBvZiAldSBzYW1wbGVzLCBSMTI4IGdhaW4gJWQgKHZvbHVtZSAlZikiLAotICAgICAgZGVjLT5wcmVfc2tpcCwgZGVjLT5yMTI4X2dhaW4sIGRlYy0+cjEyOF9nYWluX3ZvbHVtZSk7Ci0KLSAgZGVjLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gZGF0YVsxOF07Ci0gIGlmIChkZWMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPT0gMCkgewotICAgIC8qIGltcGxpY2l0IG1hcHBpbmcgKi8KLSAgICBHU1RfSU5GT19PQkpFQ1QgKGRlYywgIkNoYW5uZWwgbWFwcGluZyBmYW1pbHkgMCwgaW1wbGljaXQgbWFwcGluZyIpOwotICAgIGRlYy0+bl9zdHJlYW1zID0gZGVjLT5uX3N0ZXJlb19zdHJlYW1zID0gMTsKLSAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ1swXSA9IDA7Ci0gICAgZGVjLT5jaGFubmVsX21hcHBpbmdbMV0gPSAxOwotICB9IGVsc2UgewotICAgIGRlYy0+bl9zdHJlYW1zID0gZGF0YVsxOV07Ci0gICAgZGVjLT5uX3N0ZXJlb19zdHJlYW1zID0gZGF0YVsyMF07Ci0gICAgbWVtY3B5IChkZWMtPmNoYW5uZWxfbWFwcGluZywgZGF0YSArIDIxLCBkZWMtPm5fY2hhbm5lbHMpOwotCi0gICAgaWYgKGRlYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9PSAxKSB7Ci0gICAgICBHU1RfSU5GT19PQkpFQ1QgKGRlYywgIkNoYW5uZWwgbWFwcGluZyBmYW1pbHkgMSwgVm9yYmlzIG1hcHBpbmciKTsKLSAgICAgIHN3aXRjaCAoZGVjLT5uX2NoYW5uZWxzKSB7Ci0gICAgICAgIGNhc2UgMToKLSAgICAgICAgY2FzZSAyOgotICAgICAgICAgIC8qIG5vdGhpbmcgKi8KLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSAzOgotICAgICAgICBjYXNlIDQ6Ci0gICAgICAgIGNhc2UgNToKLSAgICAgICAgY2FzZSA2OgotICAgICAgICBjYXNlIDc6Ci0gICAgICAgIGNhc2UgODoKLSAgICAgICAgICBwb3NuID0gZ3N0X29wdXNfY2hhbm5lbF9wb3NpdGlvbnNbZGVjLT5uX2NoYW5uZWxzIC0gMV07Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIGRlZmF1bHQ6ewotICAgICAgICAgIGdpbnQgaTsKLQotICAgICAgICAgIEdTVF9FTEVNRU5UX1dBUk5JTkcgKEdTVF9FTEVNRU5UIChkZWMpLCBTVFJFQU0sIERFQ09ERSwKLSAgICAgICAgICAgICAgKE5VTEwpLCAoIlVzaW5nIE5PTkUgY2hhbm5lbCBsYXlvdXQgZm9yIG1vcmUgdGhhbiA4IGNoYW5uZWxzIikpOwotCi0gICAgICAgICAgZm9yIChpID0gMDsgaSA8IGRlYy0+bl9jaGFubmVsczsgaSsrKQotICAgICAgICAgICAgcG9zW2ldID0gR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fTk9ORTsKLQotICAgICAgICAgIHBvc24gPSBwb3M7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9IGVsc2UgewotICAgICAgR1NUX0lORk9fT0JKRUNUIChkZWMsICJDaGFubmVsIG1hcHBpbmcgZmFtaWx5ICVkIiwKLSAgICAgICAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkpOwotICAgIH0KLSAgfQotCi0gIGdzdF9vcHVzX2RlY19uZWdvdGlhdGUgKGRlYywgcG9zbik7Ci0KLSAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKLQotICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci19Ci0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9vcHVzX2RlY19wYXJzZV9jb21tZW50cyAoR3N0T3B1c0RlYyAqIGRlYywgR3N0QnVmZmVyICogYnVmKQotewotICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1vcHVzX2RlY19jaGFpbl9wYXJzZV9kYXRhIChHc3RPcHVzRGVjICogZGVjLCBHc3RCdWZmZXIgKiBidWZmZXIpCi17Ci0gIEdzdEZsb3dSZXR1cm4gcmVzID0gR1NUX0ZMT1dfT0s7Ci0gIGdzaXplIHNpemU7Ci0gIGd1aW50OCAqZGF0YTsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIGdpbnQxNiAqb3V0X2RhdGE7Ci0gIGludCBuLCBlcnI7Ci0gIGludCBzYW1wbGVzOwotICB1bnNpZ25lZCBpbnQgcGFja2V0X3NpemU7Ci0gIEdzdEJ1ZmZlciAqYnVmOwotICBHc3RNYXBJbmZvIG1hcCwgb21hcDsKLQotICBpZiAoZGVjLT5zdGF0ZSA9PSBOVUxMKSB7Ci0gICAgLyogSWYgd2UgZGlkIG5vdCBnZXQgYW55IGhlYWRlcnMsIGRlZmF1bHQgdG8gMiBjaGFubmVscyAqLwotICAgIGlmIChkZWMtPm5fY2hhbm5lbHMgPT0gMCkgewotICAgICAgR1NUX0lORk9fT0JKRUNUIChkZWMsICJObyBoZWFkZXIsIGFzc3VtaW5nIHNpbmdsZSBzdHJlYW0iKTsKLSAgICAgIGRlYy0+bl9jaGFubmVscyA9IDI7Ci0gICAgICBkZWMtPnNhbXBsZV9yYXRlID0gNDgwMDA7Ci0gICAgICAvKiBkZWZhdWx0IHN0ZXJlbyBtYXBwaW5nICovCi0gICAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAwOwotICAgICAgZGVjLT5jaGFubmVsX21hcHBpbmdbMF0gPSAwOwotICAgICAgZGVjLT5jaGFubmVsX21hcHBpbmdbMV0gPSAxOwotICAgICAgZGVjLT5uX3N0cmVhbXMgPSAxOwotICAgICAgZGVjLT5uX3N0ZXJlb19zdHJlYW1zID0gMTsKLQotICAgICAgZ3N0X29wdXNfZGVjX25lZ290aWF0ZSAoZGVjLCBOVUxMKTsKLSAgICB9Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJDcmVhdGluZyBkZWNvZGVyIHdpdGggJWQgY2hhbm5lbHMsICVkIEh6IiwKLSAgICAgICAgZGVjLT5uX2NoYW5uZWxzLCBkZWMtPnNhbXBsZV9yYXRlKTsKLSNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCi0gICAgZ3N0X29wdXNfY29tbW9uX2xvZ19jaGFubmVsX21hcHBpbmdfdGFibGUgKEdTVF9FTEVNRU5UIChkZWMpLCBvcHVzZGVjX2RlYnVnLAotICAgICAgICAiTWFwcGluZyB0YWJsZSIsIGRlYy0+bl9jaGFubmVscywgZGVjLT5jaGFubmVsX21hcHBpbmcpOwotI2VuZGlmCi0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICIlZCBzdHJlYW1zLCAlZCBzdGVyZW8iLCBkZWMtPm5fc3RyZWFtcywKLSAgICAgICAgZGVjLT5uX3N0ZXJlb19zdHJlYW1zKTsKLSAgICBkZWMtPnN0YXRlID0KLSAgICAgICAgb3B1c19tdWx0aXN0cmVhbV9kZWNvZGVyX2NyZWF0ZSAoZGVjLT5zYW1wbGVfcmF0ZSwgZGVjLT5uX2NoYW5uZWxzLAotICAgICAgICBkZWMtPm5fc3RyZWFtcywgZGVjLT5uX3N0ZXJlb19zdHJlYW1zLCBkZWMtPmNoYW5uZWxfbWFwcGluZywgJmVycik7Ci0gICAgaWYgKCFkZWMtPnN0YXRlIHx8IGVyciAhPSBPUFVTX09LKQotICAgICAgZ290byBjcmVhdGlvbl9mYWlsZWQ7Ci0gIH0KLQotICBpZiAoYnVmZmVyKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiUmVjZWl2ZWQgYnVmZmVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQsCi0gICAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcikpOwotICB9IGVsc2UgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgIlJlY2VpdmVkIG1pc3NpbmcgYnVmZmVyIik7Ci0gIH0KLQotICAvKiBpZiB1c2luZyBpbi1iYW5kIEZFQywgd2UgaW50cm9kdWRlIG9uZSBleHRyYSBmcmFtZSdzIGRlbGF5IGFzIHdlIG5lZWQKLSAgICAgdG8gcG90ZW50aWFsbHkgd2FpdCBmb3IgbmV4dCBidWZmZXIgdG8gZGVjb2RlIGEgbWlzc2luZyBidWZmZXIgKi8KLSAgaWYgKGRlYy0+dXNlX2luYmFuZF9mZWMgJiYgIWRlYy0+cHJpbWVkKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiRmlyc3QgYnVmZmVyIHJlY2VpdmVkIGluIEZFQyBtb2RlLCBlYXJseSBvdXQiKTsKLSAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZkZWMtPmxhc3RfYnVmZmVyLCBidWZmZXIpOwotICAgIGRlYy0+cHJpbWVkID0gVFJVRTsKLSAgICBnb3RvIGRvbmU7Ci0gIH0KLQotICAvKiBUaGF0J3MgdGhlIGJ1ZmZlciB3ZSdsbCBiZSBzZW5kaW5nIHRvIHRoZSBvcHVzIGRlY29kZXIuICovCi0gIGJ1ZiA9IChkZWMtPnVzZV9pbmJhbmRfZmVjCi0gICAgICAmJiBnc3RfYnVmZmVyX2dldF9zaXplIChkZWMtPmxhc3RfYnVmZmVyKSA+Ci0gICAgICAwKSA/IGRlYy0+bGFzdF9idWZmZXIgOiBidWZmZXI7Ci0KLSAgaWYgKGJ1ZiAmJiBnc3RfYnVmZmVyX2dldF9zaXplIChidWYpID4gMCkgewotICAgIGdzdF9idWZmZXJfbWFwIChidWYsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgZGF0YSA9IG1hcC5kYXRhOwotICAgIHNpemUgPSBtYXAuc2l6ZTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJVc2luZyBidWZmZXIgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwgc2l6ZSk7Ci0gIH0gZWxzZSB7Ci0gICAgLyogY29uY2VhbG1lbnQgZGF0YSwgcGFzcyBOVUxMIGFzIHRoZSBiaXRzIHBhcmFtZXRlcnMgKi8KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJVc2luZyBOVUxMIGJ1ZmZlciIpOwotICAgIGRhdGEgPSBOVUxMOwotICAgIHNpemUgPSAwOwotICB9Ci0KLSAgaWYgKGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcikgPT0gMCkgewotICAgIEdzdENsb2NrVGltZSBjb25zdCBvcHVzX3BsY19hbGlnbm1lbnQgPSAyNTAwICogR1NUX1VTRUNPTkQ7Ci0gICAgR3N0Q2xvY2tUaW1lIGFsaWduZWRfbWlzc2luZ19kdXJhdGlvbjsKLSAgICBHc3RDbG9ja1RpbWUgbWlzc2luZ19kdXJhdGlvbiA9IEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcik7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsCi0gICAgICAgICJtaXNzaW5nIGJ1ZmZlciwgZG9pbmcgUExDIGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVAotICAgICAgICAiIHBsdXMgbGVmdG92ZXIgJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTIChtaXNzaW5nX2R1cmF0aW9uKSwKLSAgICAgICAgR1NUX1RJTUVfQVJHUyAoZGVjLT5sZWZ0b3Zlcl9wbGNfZHVyYXRpb24pKTsKLQotICAgIC8qIGFkZCB0aGUgbGVmdG92ZXIgUExDIGR1cmF0aW9uIHRvIHRoYXQgb2YgdGhlIGJ1ZmZlciAqLwotICAgIG1pc3NpbmdfZHVyYXRpb24gKz0gZGVjLT5sZWZ0b3Zlcl9wbGNfZHVyYXRpb247Ci0KLSAgICAvKiBhbGlnbiB0aGUgY29tYmluZWQgYnVmZmVyIGFuZCBsZWZ0b3ZlciBQTEMgZHVyYXRpb24gdG8gbXVsdGlwbGVzCi0gICAgICogb2YgMi41bXMsIGFsd2F5cyByb3VuZGluZyBkb3duLCBhbmQgc3RvcmUgZXhjZXNzIGR1cmF0aW9uIGZvciBsYXRlciAqLwotICAgIGFsaWduZWRfbWlzc2luZ19kdXJhdGlvbiA9Ci0gICAgICAgIChtaXNzaW5nX2R1cmF0aW9uIC8gb3B1c19wbGNfYWxpZ25tZW50KSAqIG9wdXNfcGxjX2FsaWdubWVudDsKLSAgICBkZWMtPmxlZnRvdmVyX3BsY19kdXJhdGlvbiA9IG1pc3NpbmdfZHVyYXRpb24gLSBhbGlnbmVkX21pc3NpbmdfZHVyYXRpb247Ci0KLSAgICAvKiBPcHVzJyBQTEMgY2Fubm90IG9wZXJhdGUgd2l0aCBsZXNzIHRoYW4gMi41bXM7IHNraXAgUExDCi0gICAgICogYW5kIGFjY3VtdWxhdGUgdGhlIG1pc3NpbmcgZHVyYXRpb24gaW4gdGhlIGxlZnRvdmVyX3BsY19kdXJhdGlvbgotICAgICAqIGZvciB0aGUgbmV4dCBQTEMgYXR0ZW1wdCAqLwotICAgIGlmIChhbGlnbmVkX21pc3NpbmdfZHVyYXRpb24gPCBvcHVzX3BsY19hbGlnbm1lbnQpIHsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywKLSAgICAgICAgICAiY3VycmVudCBkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQKLSAgICAgICAgICAiIG9mIG1pc3NpbmcgZGF0YSBub3QgZW5vdWdoIGZvciBQTEMgKG1pbmltdW0gbmVlZGVkOiAlIgotICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCAiKSAtIHNraXBwaW5nIiwgR1NUX1RJTUVfQVJHUyAobWlzc2luZ19kdXJhdGlvbiksCi0gICAgICAgICAgR1NUX1RJTUVfQVJHUyAob3B1c19wbGNfYWxpZ25tZW50KSk7Ci0gICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgLyogY29udmVydCB0aGUgZHVyYXRpb24gKGluIG5hbm9zZWNvbmRzKSB0byBzYW1wbGUgY291bnQgKi8KLSAgICBzYW1wbGVzID0KLSAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoYWxpZ25lZF9taXNzaW5nX2R1cmF0aW9uLCBkZWMtPnNhbXBsZV9yYXRlLAotICAgICAgICBHU1RfU0VDT05EKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywKLSAgICAgICAgImNhbGN1bGF0ZWQgUExDIGZyYW1lIGxlbmd0aDogJSIgR1NUX1RJTUVfRk9STUFUCi0gICAgICAgICIgbnVtIGZyYW1lIHNhbXBsZXM6ICVkIG5ldyBsZWZ0b3ZlcjogJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgICBHU1RfVElNRV9BUkdTIChhbGlnbmVkX21pc3NpbmdfZHVyYXRpb24pLCBzYW1wbGVzLAotICAgICAgICBHU1RfVElNRV9BUkdTIChkZWMtPmxlZnRvdmVyX3BsY19kdXJhdGlvbikpOwotICB9IGVsc2UgewotICAgIC8qIHVzZSBtYXhpbXVtIHNpemUgKDEyMCBtcykgYXMgdGhlIG51bWJlciBvZiByZXR1cm5lZCBzYW1wbGVzIGlzCi0gICAgICAgbm90IGNvbnN0YW50IG92ZXIgdGhlIHN0cmVhbS4gKi8KLSAgICBzYW1wbGVzID0gMTIwICogZGVjLT5zYW1wbGVfcmF0ZSAvIDEwMDA7Ci0gIH0KLQotICBwYWNrZXRfc2l6ZSA9IHNhbXBsZXMgKiBkZWMtPm5fY2hhbm5lbHMgKiAyOwotCi0gIG91dGJ1ZiA9Ci0gICAgICBnc3RfYXVkaW9fZGVjb2Rlcl9hbGxvY2F0ZV9vdXRwdXRfYnVmZmVyIChHU1RfQVVESU9fREVDT0RFUiAoZGVjKSwKLSAgICAgIHBhY2tldF9zaXplKTsKLSAgaWYgKCFvdXRidWYpIHsKLSAgICBnb3RvIGJ1ZmZlcl9mYWlsZWQ7Ci0gIH0KLQotICBnc3RfYnVmZmVyX21hcCAob3V0YnVmLCAmb21hcCwgR1NUX01BUF9XUklURSk7Ci0gIG91dF9kYXRhID0gKGdpbnQxNiAqKSBvbWFwLmRhdGE7Ci0KLSAgaWYgKGRlYy0+dXNlX2luYmFuZF9mZWMpIHsKLSAgICBpZiAoZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoZGVjLT5sYXN0X2J1ZmZlcikgPiAwKSB7Ci0gICAgICAvKiBub3JtYWwgZGVsYXllZCBkZWNvZGUgKi8KLSAgICAgIEdTVF9MT0dfT0JKRUNUIChkZWMsICJGRUMgZW5hYmxlZCwgZGVjb2RpbmcgbGFzdCBkZWxheWVkIGJ1ZmZlciIpOwotICAgICAgbiA9IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlIChkZWMtPnN0YXRlLCBkYXRhLCBzaXplLCBvdXRfZGF0YSwgc2FtcGxlcywKLSAgICAgICAgICAwKTsKLSAgICB9IGVsc2UgewotICAgICAgLyogRkVDIHJlY29uc3RydWN0aW9uIGRlY29kZSAqLwotICAgICAgR1NUX0xPR19PQkpFQ1QgKGRlYywgIkZFQyBlbmFibGVkLCByZWNvbnN0cnVjdGluZyBsYXN0IGJ1ZmZlciIpOwotICAgICAgbiA9IG9wdXNfbXVsdGlzdHJlYW1fZGVjb2RlIChkZWMtPnN0YXRlLCBkYXRhLCBzaXplLCBvdXRfZGF0YSwgc2FtcGxlcywKLSAgICAgICAgICAxKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgLyogbm9ybWFsIGRlY29kZSAqLwotICAgIEdTVF9MT0dfT0JKRUNUIChkZWMsICJGRUMgZGlzYWJsZWQsIGRlY29kaW5nIGJ1ZmZlciIpOwotICAgIG4gPSBvcHVzX211bHRpc3RyZWFtX2RlY29kZSAoZGVjLT5zdGF0ZSwgZGF0YSwgc2l6ZSwgb3V0X2RhdGEsIHNhbXBsZXMsIDApOwotICB9Ci0gIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm9tYXApOwotICBpZiAoZGF0YSAhPSBOVUxMKQotICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJm1hcCk7Ci0KLSAgaWYgKG4gPCAwKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKGRlYywgU1RSRUFNLCBERUNPREUsICgiRGVjb2RpbmcgZXJyb3I6ICVkIiwgbiksIChOVUxMKSk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0YnVmKTsKLSAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0gIH0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiZGVjb2RlZCAlZCBzYW1wbGVzIiwgbik7Ci0gIGdzdF9idWZmZXJfc2V0X3NpemUgKG91dGJ1ZiwgbiAqIDIgKiBkZWMtPm5fY2hhbm5lbHMpOwotCi0gIC8qIFNraXAgYW55IHNhbXBsZXMgdGhhdCBuZWVkIHNraXBwaW5nICovCi0gIGlmIChkZWMtPnByZV9za2lwID4gMCkgewotICAgIGd1aW50IHNjYWxlZF9wcmVfc2tpcCA9IGRlYy0+cHJlX3NraXAgKiBkZWMtPnNhbXBsZV9yYXRlIC8gNDgwMDA7Ci0gICAgZ3VpbnQgc2tpcCA9IHNjYWxlZF9wcmVfc2tpcCA+IG4gPyBuIDogc2NhbGVkX3ByZV9za2lwOwotICAgIGd1aW50IHNjYWxlZF9za2lwID0gc2tpcCAqIDQ4MDAwIC8gZGVjLT5zYW1wbGVfcmF0ZTsKLQotICAgIGdzdF9idWZmZXJfcmVzaXplIChvdXRidWYsIHNraXAgKiAyICogZGVjLT5uX2NoYW5uZWxzLCAtMSk7Ci0gICAgZGVjLT5wcmVfc2tpcCAtPSBzY2FsZWRfc2tpcDsKLSAgICBHU1RfSU5GT19PQkpFQ1QgKGRlYywKLSAgICAgICAgIlNraXBwaW5nICV1IHNhbXBsZXMgKCV1IGF0IDQ4MDAwIEh6LCAldSBsZWZ0IHRvIHNraXApIiwgc2tpcCwKLSAgICAgICAgc2NhbGVkX3NraXAsIGRlYy0+cHJlX3NraXApOwotICB9Ci0KLSAgaWYgKGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZikgPT0gMCkgewotICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7Ci0gICAgb3V0YnVmID0gTlVMTDsKLSAgfSBlbHNlIGlmIChkZWMtPm9wdXNfcG9zWzBdICE9IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0lOVkFMSUQpIHsKLSAgICBnc3RfYXVkaW9fYnVmZmVyX3Jlb3JkZXJfY2hhbm5lbHMgKG91dGJ1ZiwgR1NUX0FVRElPX0ZPUk1BVF9TMTYsCi0gICAgICAgIGRlYy0+bl9jaGFubmVscywgZGVjLT5vcHVzX3BvcywgZGVjLT5pbmZvLnBvc2l0aW9uKTsKLSAgfQotCi0gIC8qIEFwcGx5IGdhaW4gKi8KLSAgLyogV291bGQgYmUgYmV0dGVyIG9mZiBsZWF2aW5nIHRoaXMgdG8gYSB2b2x1bWUgZWxlbWVudCwgYXMgdGhpcyBpcwotICAgICBhIG5haXZlIGNvbnZlcnNpb24gdGhhdCBkb2VzIHRvbyBtYW55IGludC9mbG9hdCBjb252ZXJzaW9ucy4KLSAgICAgSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBjb250cm9sIG92ZXIgdGhlIHBpcGVsaW5lLi4uCi0gICAgIFNvIG1ha2UgaXQgb3B0aW9uYWwgaWYgdGhlIHVzZXIgcHJvZ3JhbSB3YW50cyB0byB1c2UgYSB2b2x1bWUsCi0gICAgIGJ1dCBkbyBpdCBieSBkZWZhdWx0IHNvIHRoZSBjb3JyZWN0IHZvbHVtZSBnb2VzIG91dCBieSBkZWZhdWx0ICovCi0gIGlmIChkZWMtPmFwcGx5X2dhaW4gJiYgb3V0YnVmICYmIGRlYy0+cjEyOF9nYWluKSB7Ci0gICAgZ3NpemUgcnNpemU7Ci0gICAgdW5zaWduZWQgaW50IGksIG5zYW1wbGVzOwotICAgIGRvdWJsZSB2b2x1bWUgPSBkZWMtPnIxMjhfZ2Fpbl92b2x1bWU7Ci0gICAgZ2ludDE2ICpzYW1wbGVzOwotCi0gICAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm9tYXAsIEdTVF9NQVBfUkVBRFdSSVRFKTsKLSAgICBzYW1wbGVzID0gKGdpbnQxNiAqKSBvbWFwLmRhdGE7Ci0gICAgcnNpemUgPSBvbWFwLnNpemU7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiQXBwbHlpbmcgZ2Fpbjogdm9sdW1lICVmIiwgdm9sdW1lKTsKLSAgICBuc2FtcGxlcyA9IHJzaXplIC8gMjsKLSAgICBmb3IgKGkgPSAwOyBpIDwgbnNhbXBsZXM7ICsraSkgewotICAgICAgaW50IHNhbXBsZSA9IChpbnQpIChzYW1wbGVzW2ldICogdm9sdW1lICsgMC41KTsKLSAgICAgIHNhbXBsZXNbaV0gPSBzYW1wbGUgPCAtMzI3NjggPyAtMzI3NjggOiBzYW1wbGUgPiAzMjc2NyA/IDMyNzY3IDogc2FtcGxlOwotICAgIH0KLSAgICBnc3RfYnVmZmVyX3VubWFwIChvdXRidWYsICZvbWFwKTsKLSAgfQotCi0gIGlmIChkZWMtPnVzZV9pbmJhbmRfZmVjKSB7Ci0gICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmZGVjLT5sYXN0X2J1ZmZlciwgYnVmZmVyKTsKLSAgfQotCi0gIHJlcyA9IGdzdF9hdWRpb19kZWNvZGVyX2ZpbmlzaF9mcmFtZSAoR1NUX0FVRElPX0RFQ09ERVIgKGRlYyksIG91dGJ1ZiwgMSk7Ci0KLSAgaWYgKHJlcyAhPSBHU1RfRkxPV19PSykKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJmbG93OiAlcyIsIGdzdF9mbG93X2dldF9uYW1lIChyZXMpKTsKLQotZG9uZToKLSAgcmV0dXJuIHJlczsKLQotY3JlYXRpb25fZmFpbGVkOgotICBHU1RfRVJST1JfT0JKRUNUIChkZWMsICJGYWlsZWQgdG8gY3JlYXRlIE9wdXMgZGVjb2RlcjogJWQiLCBlcnIpOwotICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0KLWJ1ZmZlcl9mYWlsZWQ6Ci0gIEdTVF9FUlJPUl9PQkpFQ1QgKGRlYywgIkZhaWxlZCB0byBjcmVhdGUgJXUgYnl0ZSBidWZmZXIiLCBwYWNrZXRfc2l6ZSk7Ci0gIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3Rfb3B1c19kZWNfc2V0X2Zvcm1hdCAoR3N0QXVkaW9EZWNvZGVyICogYmRlYywgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdE9wdXNEZWMgKmRlYyA9IEdTVF9PUFVTX0RFQyAoYmRlYyk7Ci0gIGdib29sZWFuIHJldCA9IFRSVUU7Ci0gIEdzdFN0cnVjdHVyZSAqczsKLSAgY29uc3QgR1ZhbHVlICpzdHJlYW1oZWFkZXI7Ci0gIEdzdENhcHMgKm9sZF9jYXBzOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgInNldF9mb3JtYXQ6ICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLQotICBpZiAoKG9sZF9jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQVVESU9fREVDT0RFUl9TSU5LX1BBRCAoYmRlYykpKSkgewotICAgIGlmIChnc3RfY2Fwc19pc19lcXVhbCAoY2Fwcywgb2xkX2NhcHMpKSB7Ci0gICAgICBnc3RfY2Fwc191bnJlZiAob2xkX2NhcHMpOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiY2FwcyBkaWRuJ3QgY2hhbmdlIik7Ci0gICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiY2FwcyBoYXZlIGNoYW5nZWQsIHJlc2V0dGluZyBkZWNvZGVyIik7Ci0gICAgZ3N0X29wdXNfZGVjX3Jlc2V0IChkZWMpOwotICAgIGdzdF9jYXBzX3VucmVmIChvbGRfY2Fwcyk7Ci0gIH0KLQotICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gIGlmICgoc3RyZWFtaGVhZGVyID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHMsICJzdHJlYW1oZWFkZXIiKSkgJiYKLSAgICAgIEdfVkFMVUVfSE9MRFMgKHN0cmVhbWhlYWRlciwgR1NUX1RZUEVfQVJSQVkpICYmCi0gICAgICBnc3RfdmFsdWVfYXJyYXlfZ2V0X3NpemUgKHN0cmVhbWhlYWRlcikgPj0gMikgewotICAgIGNvbnN0IEdWYWx1ZSAqaGVhZGVyLCAqdm9yYmlzY29tbWVudDsKLSAgICBHc3RCdWZmZXIgKmJ1ZjsKLSAgICBHc3RGbG93UmV0dXJuIHJlcyA9IEdTVF9GTE9XX09LOwotCi0gICAgaGVhZGVyID0gZ3N0X3ZhbHVlX2FycmF5X2dldF92YWx1ZSAoc3RyZWFtaGVhZGVyLCAwKTsKLSAgICBpZiAoaGVhZGVyICYmIEdfVkFMVUVfSE9MRFMgKGhlYWRlciwgR1NUX1RZUEVfQlVGRkVSKSkgewotICAgICAgYnVmID0gZ3N0X3ZhbHVlX2dldF9idWZmZXIgKGhlYWRlcik7Ci0gICAgICByZXMgPSBnc3Rfb3B1c19kZWNfcGFyc2VfaGVhZGVyIChkZWMsIGJ1Zik7Ci0gICAgICBpZiAocmVzICE9IEdTVF9GTE9XX09LKQotICAgICAgICBnb3RvIGRvbmU7Ci0gICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZkZWMtPnN0cmVhbWhlYWRlciwgYnVmKTsKLSAgICB9Ci0KLSAgICB2b3JiaXNjb21tZW50ID0gZ3N0X3ZhbHVlX2FycmF5X2dldF92YWx1ZSAoc3RyZWFtaGVhZGVyLCAxKTsKLSAgICBpZiAodm9yYmlzY29tbWVudCAmJiBHX1ZBTFVFX0hPTERTICh2b3JiaXNjb21tZW50LCBHU1RfVFlQRV9CVUZGRVIpKSB7Ci0gICAgICBidWYgPSBnc3RfdmFsdWVfZ2V0X2J1ZmZlciAodm9yYmlzY29tbWVudCk7Ci0gICAgICByZXMgPSBnc3Rfb3B1c19kZWNfcGFyc2VfY29tbWVudHMgKGRlYywgYnVmKTsKLSAgICAgIGlmIChyZXMgIT0gR1NUX0ZMT1dfT0spCi0gICAgICAgIGdvdG8gZG9uZTsKLSAgICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJmRlYy0+dm9yYmlzY29tbWVudCwgYnVmKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgLyogZGVmYXVsdHMgaWYgbm90IGluIHRoZSBjYXBzICovCi0gICAgZGVjLT5uX2NoYW5uZWxzID0gMjsKLSAgICBkZWMtPnNhbXBsZV9yYXRlID0gNDgwMDA7Ci0KLSAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJjaGFubmVscyIsICZkZWMtPm5fY2hhbm5lbHMpOwotICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgInJhdGUiLCAmZGVjLT5zYW1wbGVfcmF0ZSk7Ci0KLSAgICAvKiBkZWZhdWx0IHN0ZXJlbyBtYXBwaW5nICovCi0gICAgZGVjLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gMDsKLSAgICBkZWMtPmNoYW5uZWxfbWFwcGluZ1swXSA9IDA7Ci0gICAgZGVjLT5jaGFubmVsX21hcHBpbmdbMV0gPSAxOwotICAgIGRlYy0+bl9zdHJlYW1zID0gMTsKLSAgICBkZWMtPm5fc3RlcmVvX3N0cmVhbXMgPSAxOwotCi0gICAgZ3N0X29wdXNfZGVjX25lZ290aWF0ZSAoZGVjLCBOVUxMKTsKLSAgfQotCi1kb25lOgotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLW1lbWNtcF9idWZmZXJzIChHc3RCdWZmZXIgKiBidWYxLCBHc3RCdWZmZXIgKiBidWYyKQotewotICBnc2l6ZSBzaXplMSwgc2l6ZTI7Ci0gIGdib29sZWFuIHJlczsKLSAgR3N0TWFwSW5mbyBtYXA7Ci0KLSAgc2l6ZTEgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWYxKTsKLSAgc2l6ZTIgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWYyKTsKLQotICBpZiAoc2l6ZTEgIT0gc2l6ZTIpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGdzdF9idWZmZXJfbWFwIChidWYxLCAmbWFwLCBHU1RfTUFQX1JFQUQpOwotICByZXMgPSBnc3RfYnVmZmVyX21lbWNtcCAoYnVmMiwgMCwgbWFwLmRhdGEsIG1hcC5zaXplKSA9PSAwOwotICBnc3RfYnVmZmVyX3VubWFwIChidWYxLCAmbWFwKTsKLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X29wdXNfZGVjX2hhbmRsZV9mcmFtZSAoR3N0QXVkaW9EZWNvZGVyICogYWRlYywgR3N0QnVmZmVyICogYnVmKQotewotICBHc3RGbG93UmV0dXJuIHJlczsKLSAgR3N0T3B1c0RlYyAqZGVjOwotCi0gIC8qIG5vIGZhbmN5IGRyYWluaW5nICovCi0gIGlmIChHX1VOTElLRUxZICghYnVmKSkKLSAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0KLSAgZGVjID0gR1NUX09QVVNfREVDIChhZGVjKTsKLSAgR1NUX0xPR19PQkpFQ1QgKGRlYywKLSAgICAgICJHb3QgYnVmZmVyIHRzICUiIEdTVF9USU1FX0ZPUk1BVCAiLCBkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKSksCi0gICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpKSk7Ci0KLSAgLyogSWYgd2UgaGF2ZSB0aGUgc3RyZWFtaGVhZGVyIGFuZCB2b3JiaXNjb21tZW50IGZyb20gdGhlIGNhcHMgYWxyZWFkeQotICAgKiBpZ25vcmUgdGhlbSBoZXJlICovCi0gIGlmIChkZWMtPnN0cmVhbWhlYWRlciAmJiBkZWMtPnZvcmJpc2NvbW1lbnQpIHsKLSAgICBpZiAobWVtY21wX2J1ZmZlcnMgKGRlYy0+c3RyZWFtaGVhZGVyLCBidWYpKSB7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJmb3VuZCBzdHJlYW1oZWFkZXIiKTsKLSAgICAgIGdzdF9hdWRpb19kZWNvZGVyX2ZpbmlzaF9mcmFtZSAoYWRlYywgTlVMTCwgMSk7Ci0gICAgICByZXMgPSBHU1RfRkxPV19PSzsKLSAgICB9IGVsc2UgaWYgKG1lbWNtcF9idWZmZXJzIChkZWMtPnZvcmJpc2NvbW1lbnQsIGJ1ZikpIHsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlYywgImZvdW5kIHZvcmJpc2NvbW1lbnRzIik7Ci0gICAgICBnc3RfYXVkaW9fZGVjb2Rlcl9maW5pc2hfZnJhbWUgKGFkZWMsIE5VTEwsIDEpOwotICAgICAgcmVzID0gR1NUX0ZMT1dfT0s7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJlcyA9IG9wdXNfZGVjX2NoYWluX3BhcnNlX2RhdGEgKGRlYywgYnVmKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgLyogT3RoZXJ3aXNlIGZhbGwgYmFjayB0byBwYWNrZXQgY291bnRpbmcgYW5kIGFzc3VtZSB0aGF0IHRoZQotICAgICAqIGZpcnN0IHR3byBwYWNrZXRzIG1pZ2h0IGJlIHRoZSBoZWFkZXJzLCBjaGVja2luZyBtYWdpYy4gKi8KLSAgICBzd2l0Y2ggKGRlYy0+cGFja2V0bm8pIHsKLSAgICAgIGNhc2UgMDoKLSAgICAgICAgaWYgKGdzdF9vcHVzX2hlYWRlcl9pc19oZWFkZXIgKGJ1ZiwgIk9wdXNIZWFkIiwgOCkpIHsKLSAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJmb3VuZCBzdHJlYW1oZWFkZXIiKTsKLSAgICAgICAgICByZXMgPSBnc3Rfb3B1c19kZWNfcGFyc2VfaGVhZGVyIChkZWMsIGJ1Zik7Ci0gICAgICAgICAgZ3N0X2F1ZGlvX2RlY29kZXJfZmluaXNoX2ZyYW1lIChhZGVjLCBOVUxMLCAxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICByZXMgPSBvcHVzX2RlY19jaGFpbl9wYXJzZV9kYXRhIChkZWMsIGJ1Zik7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDE6Ci0gICAgICAgIGlmIChnc3Rfb3B1c19oZWFkZXJfaXNfaGVhZGVyIChidWYsICJPcHVzVGFncyIsIDgpKSB7Ci0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiY291bnRlZCB2b3JiaXNjb21tZW50cyIpOwotICAgICAgICAgIHJlcyA9IGdzdF9vcHVzX2RlY19wYXJzZV9jb21tZW50cyAoZGVjLCBidWYpOwotICAgICAgICAgIGdzdF9hdWRpb19kZWNvZGVyX2ZpbmlzaF9mcmFtZSAoYWRlYywgTlVMTCwgMSk7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgcmVzID0gb3B1c19kZWNfY2hhaW5fcGFyc2VfZGF0YSAoZGVjLCBidWYpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgIHsKLSAgICAgICAgcmVzID0gb3B1c19kZWNfY2hhaW5fcGFyc2VfZGF0YSAoZGVjLCBidWYpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBkZWMtPnBhY2tldG5vKys7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2RlY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLAotICAgIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgR3N0T3B1c0RlYyAqZGVjID0gR1NUX09QVVNfREVDIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9VU0VfSU5CQU5EX0ZFQzoKLSAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBkZWMtPnVzZV9pbmJhbmRfZmVjKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9BUFBMWV9HQUlOOgotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGRlYy0+YXBwbHlfZ2Fpbik7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19kZWNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdE9wdXNEZWMgKmRlYyA9IEdTVF9PUFVTX0RFQyAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfVVNFX0lOQkFORF9GRUM6Ci0gICAgICBkZWMtPnVzZV9pbmJhbmRfZmVjID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0FQUExZX0dBSU46Ci0gICAgICBkZWMtPmFwcGx5X2dhaW4gPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19CmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzZGVjLmggYi9leHQvb3B1cy9nc3RvcHVzZGVjLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4ZDQzYTkuLjAwMDAwMDAKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2RlYy5oCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDwxOTk5PiBFcmlrIFdhbHRoaW5zZW4gPG9tZWdhQGNzZS5vZ2kuZWR1PgotICogQ29weXJpZ2h0IChDKSA8MjAwOD4gU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDExLTIwMTI+IFZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfT1BVU19ERUNfSF9fCi0jZGVmaW5lIF9fR1NUX09QVVNfREVDX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2RlY29kZXIuaD4KLSNpbmNsdWRlIDxvcHVzX211bHRpc3RyZWFtLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotI2RlZmluZSBHU1RfVFlQRV9PUFVTX0RFQyBcCi0gIChnc3Rfb3B1c19kZWNfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgR1NUX09QVVNfREVDKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfT1BVU19ERUMsR3N0T3B1c0RlYykpCi0jZGVmaW5lIEdTVF9PUFVTX0RFQ19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9PUFVTX0RFQyxHc3RPcHVzRGVjQ2xhc3MpKQotI2RlZmluZSBHU1RfSVNfT1BVU19ERUMob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9PUFVTX0RFQykpCi0jZGVmaW5lIEdTVF9JU19PUFVTX0RFQ19DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9PUFVTX0RFQykpCi0KLXR5cGVkZWYgc3RydWN0IF9Hc3RPcHVzRGVjIEdzdE9wdXNEZWM7Ci10eXBlZGVmIHN0cnVjdCBfR3N0T3B1c0RlY0NsYXNzIEdzdE9wdXNEZWNDbGFzczsKLQotc3RydWN0IF9Hc3RPcHVzRGVjIHsKLSAgR3N0QXVkaW9EZWNvZGVyICAgICAgIGVsZW1lbnQ7Ci0KLSAgT3B1c01TRGVjb2RlciAgICAgICAgKnN0YXRlOwotCi0gIGd1aW50NjQgICAgICAgICAgICAgICBwYWNrZXRubzsKLQotICBHc3RCdWZmZXIgICAgICAgICAgICAqc3RyZWFtaGVhZGVyOwotICBHc3RCdWZmZXIgICAgICAgICAgICAqdm9yYmlzY29tbWVudDsKLQotICBpbnQgc2FtcGxlX3JhdGU7Ci0gIGludCBuX2NoYW5uZWxzOwotICBndWludDMyIHByZV9za2lwOwotICBnaW50MTYgcjEyOF9nYWluOwotCi0gIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIG9wdXNfcG9zWzY0XTsKLSAgR3N0QXVkaW9JbmZvIGluZm87Ci0KLSAgZ3VpbnQ4IG5fc3RyZWFtczsKLSAgZ3VpbnQ4IG5fc3RlcmVvX3N0cmVhbXM7Ci0gIGd1aW50OCBjaGFubmVsX21hcHBpbmdfZmFtaWx5OwotICBndWludDggY2hhbm5lbF9tYXBwaW5nWzI1Nl07Ci0KLSAgZ2Jvb2xlYW4gYXBwbHlfZ2FpbjsKLSAgZG91YmxlIHIxMjhfZ2Fpbl92b2x1bWU7Ci0KLSAgZ2Jvb2xlYW4gdXNlX2luYmFuZF9mZWM7Ci0gIEdzdEJ1ZmZlciAqbGFzdF9idWZmZXI7Ci0gIGdib29sZWFuIHByaW1lZDsKLQotICBndWludDY0IGxlZnRvdmVyX3BsY19kdXJhdGlvbjsKLX07Ci0KLXN0cnVjdCBfR3N0T3B1c0RlY0NsYXNzIHsKLSAgR3N0QXVkaW9EZWNvZGVyQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotR1R5cGUgZ3N0X29wdXNfZGVjX2dldF90eXBlICh2b2lkKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9fR1NUX09QVVNfREVDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0b3B1c2VuYy5jIGIvZXh0L29wdXMvZ3N0b3B1c2VuYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGZkNDQxLi4wMDAwMDAwCi0tLSBhL2V4dC9vcHVzL2dzdG9wdXNlbmMuYworKysgL2Rldi9udWxsCkBAIC0xLDExODIgKzAsMCBAQAotLyogR1N0cmVhbWVyIE9wdXMgRW5jb2RlcgotICogQ29weXJpZ2h0IChDKSA8MTk5OT4gRXJpayBXYWx0aGluc2VuIDxvbWVnYUBjc2Uub2dpLmVkdT4KLSAqIENvcHlyaWdodCAoQykgPDIwMDg+IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgotICogQ29weXJpZ2h0IChDKSA8MjAxMT4gVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotLyoKLSAqIEJhc2VkIG9uIHRoZSBzcGVleGVuYyBlbGVtZW50Ci0gKi8KLQotLyoqCi0gKiBTRUNUSU9OOmVsZW1lbnQtb3B1c2VuYwotICogQHNlZV9hbHNvOiBvcHVzZGVjLCBvZ2dtdXgKLSAqCi0gKiBUaGlzIGVsZW1lbnQgZW5jb2RlcyByYXcgYXVkaW8gdG8gT1BVUy4KLSAqCi0gKiA8cmVmc2VjdDI+Ci0gKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgotICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgYXVkaW90ZXN0c3JjIHdhdmU9c2luZSBudW0tYnVmZmVycz0xMDAgISBhdWRpb2NvbnZlcnQgISBvcHVzZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249c2luZS5vZ2cKLSAqIF18IEVuY29kZSBhIHRlc3Qgc2luZSBzaWduYWwgdG8gT2dnL09QVVMuCi0gKiA8L3JlZnNlY3QyPgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDx0aW1lLmg+Ci0jaW5jbHVkZSA8bWF0aC5oPgotI2luY2x1ZGUgPG9wdXMuaD4KLQotI2luY2x1ZGUgPGdzdC9nc3R0YWdzZXR0ZXIuaD4KLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KLSNpbmNsdWRlIDxnc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oPgotI2luY2x1ZGUgImdzdG9wdXNoZWFkZXIuaCIKLSNpbmNsdWRlICJnc3RvcHVzY29tbW9uLmgiCi0jaW5jbHVkZSAiZ3N0b3B1c2VuYy5oIgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChvcHVzZW5jX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIG9wdXNlbmNfZGVidWcKLQotLyogU29tZSBhcmJpdHJhcnkgYm91bmRzIGJleW9uZCB3aGljaCBpdCByZWFsbHkgZG9lc24ndCBtYWtlIHNlbnNlLgotICAgVGhlIHNwZWMgbWVudGlvbnMgNiBrYi9zIHRvIDUxMCBrYi9zLCBzbyA0MDAwIGFuZCA2NTAwMDAgb3VnaHQgdG8gYmUKLSAgIHNhZmUgYXMgcHJvcGVydHkgYm91bmRzLiAqLwotI2RlZmluZSBMT1dFU1RfQklUUkFURSA0MDAwCi0jZGVmaW5lIEhJR0hFU1RfQklUUkFURSA2NTAwMDAKLQotI2RlZmluZSBHU1RfT1BVU19FTkNfVFlQRV9CQU5EV0lEVEggKGdzdF9vcHVzX2VuY19iYW5kd2lkdGhfZ2V0X3R5cGUoKSkKLXN0YXRpYyBHVHlwZQotZ3N0X29wdXNfZW5jX2JhbmR3aWR0aF9nZXRfdHlwZSAodm9pZCkKLXsKLSAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgdmFsdWVzW10gPSB7Ci0gICAge09QVVNfQkFORFdJRFRIX05BUlJPV0JBTkQsICJOYXJyb3cgYmFuZCIsICJuYXJyb3diYW5kIn0sCi0gICAge09QVVNfQkFORFdJRFRIX01FRElVTUJBTkQsICJNZWRpdW0gYmFuZCIsICJtZWRpdW1iYW5kIn0sCi0gICAge09QVVNfQkFORFdJRFRIX1dJREVCQU5ELCAiV2lkZSBiYW5kIiwgIndpZGViYW5kIn0sCi0gICAge09QVVNfQkFORFdJRFRIX1NVUEVSV0lERUJBTkQsICJTdXBlciB3aWRlIGJhbmQiLCAic3VwZXJ3aWRlYmFuZCJ9LAotICAgIHtPUFVTX0JBTkRXSURUSF9GVUxMQkFORCwgIkZ1bGwgYmFuZCIsICJmdWxsYmFuZCJ9LAotICAgIHtPUFVTX0FVVE8sICJBdXRvIiwgImF1dG8ifSwKLSAgICB7MCwgTlVMTCwgTlVMTH0KLSAgfTsKLSAgc3RhdGljIHZvbGF0aWxlIEdUeXBlIGlkID0gMDsKLQotICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKChnc2l6ZSAqKSAmIGlkKSkgewotICAgIEdUeXBlIF9pZDsKLQotICAgIF9pZCA9IGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RPcHVzRW5jQmFuZHdpZHRoIiwgdmFsdWVzKTsKLQotICAgIGdfb25jZV9pbml0X2xlYXZlICgoZ3NpemUgKikgJiBpZCwgX2lkKTsKLSAgfQotCi0gIHJldHVybiBpZDsKLX0KLQotI2RlZmluZSBHU1RfT1BVU19FTkNfVFlQRV9GUkFNRV9TSVpFIChnc3Rfb3B1c19lbmNfZnJhbWVfc2l6ZV9nZXRfdHlwZSgpKQotc3RhdGljIEdUeXBlCi1nc3Rfb3B1c19lbmNfZnJhbWVfc2l6ZV9nZXRfdHlwZSAodm9pZCkKLXsKLSAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgdmFsdWVzW10gPSB7Ci0gICAgezIsICIyLjUiLCAiMi41In0sCi0gICAgezUsICI1IiwgIjUifSwKLSAgICB7MTAsICIxMCIsICIxMCJ9LAotICAgIHsyMCwgIjIwIiwgIjIwIn0sCi0gICAgezQwLCAiNDAiLCAiNDAifSwKLSAgICB7NjAsICI2MCIsICI2MCJ9LAotICAgIHswLCBOVUxMLCBOVUxMfQotICB9OwotICBzdGF0aWMgdm9sYXRpbGUgR1R5cGUgaWQgPSAwOwotCi0gIGlmIChnX29uY2VfaW5pdF9lbnRlciAoKGdzaXplICopICYgaWQpKSB7Ci0gICAgR1R5cGUgX2lkOwotCi0gICAgX2lkID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdE9wdXNFbmNGcmFtZVNpemUiLCB2YWx1ZXMpOwotCi0gICAgZ19vbmNlX2luaXRfbGVhdmUgKChnc2l6ZSAqKSAmIGlkLCBfaWQpOwotICB9Ci0KLSAgcmV0dXJuIGlkOwotfQotCi0jZGVmaW5lIEdTVF9PUFVTX0VOQ19UWVBFX0FVRElPX1RZUEUgKGdzdF9vcHVzX2VuY19hdWRpb190eXBlX2dldF90eXBlKCkpCi1zdGF0aWMgR1R5cGUKLWdzdF9vcHVzX2VuY19hdWRpb190eXBlX2dldF90eXBlICh2b2lkKQotewotICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2YWx1ZXNbXSA9IHsKLSAgICB7T1BVU19BUFBMSUNBVElPTl9BVURJTywgIkdlbmVyaWMgYXVkaW8iLCAiZ2VuZXJpYyJ9LAotICAgIHtPUFVTX0FQUExJQ0FUSU9OX1ZPSVAsICJWb2ljZSIsICJ2b2ljZSJ9LAotICAgIHswLCBOVUxMLCBOVUxMfQotICB9OwotICBzdGF0aWMgdm9sYXRpbGUgR1R5cGUgaWQgPSAwOwotCi0gIGlmIChnX29uY2VfaW5pdF9lbnRlciAoKGdzaXplICopICYgaWQpKSB7Ci0gICAgR1R5cGUgX2lkOwotCi0gICAgX2lkID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdE9wdXNFbmNBdWRpb1R5cGUiLCB2YWx1ZXMpOwotCi0gICAgZ19vbmNlX2luaXRfbGVhdmUgKChnc2l6ZSAqKSAmIGlkLCBfaWQpOwotICB9Ci0KLSAgcmV0dXJuIGlkOwotfQotCi0jZGVmaW5lIEdTVF9PUFVTX0VOQ19UWVBFX0JJVFJBVEVfVFlQRSAoZ3N0X29wdXNfZW5jX2JpdHJhdGVfdHlwZV9nZXRfdHlwZSgpKQotc3RhdGljIEdUeXBlCi1nc3Rfb3B1c19lbmNfYml0cmF0ZV90eXBlX2dldF90eXBlICh2b2lkKQotewotICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB2YWx1ZXNbXSA9IHsKLSAgICB7QklUUkFURV9UWVBFX0NCUiwgIkNCUiIsICJjYnIifSwKLSAgICB7QklUUkFURV9UWVBFX1ZCUiwgIlZCUiIsICJ2YnIifSwKLSAgICB7QklUUkFURV9UWVBFX0NPTlNUUkFJTkVEX1ZCUiwgIkNvbnN0cmFpbmVkIFZCUiIsICJjb25zdHJhaW5lZC12YnIifSwKLSAgICB7MCwgTlVMTCwgTlVMTH0KLSAgfTsKLSAgc3RhdGljIHZvbGF0aWxlIEdUeXBlIGlkID0gMDsKLQotICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKChnc2l6ZSAqKSAmIGlkKSkgewotICAgIEdUeXBlIF9pZDsKLQotICAgIF9pZCA9IGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RPcHVzRW5jQml0cmF0ZVR5cGUiLCB2YWx1ZXMpOwotCi0gICAgZ19vbmNlX2luaXRfbGVhdmUgKChnc2l6ZSAqKSAmIGlkLCBfaWQpOwotICB9Ci0KLSAgcmV0dXJuIGlkOwotfQotCi0jZGVmaW5lIEZPUk1BVF9TVFIgR1NUX0FVRElPX05FKFMxNikKLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgIgotICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgIiBGT1JNQVRfU1RSICIsICIKLSAgICAgICAgImxheW91dCA9IChzdHJpbmcpIGludGVybGVhdmVkLCAiCi0gICAgICAgICJyYXRlID0gKGludCkgNDgwMDAsICIKLSAgICAgICAgImNoYW5uZWxzID0gKGludCkgWyAxLCAyIF07ICIKLSAgICAgICAgImF1ZGlvL3gtcmF3LCAiCi0gICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSAiIEZPUk1BVF9TVFIgIiwgIgotICAgICAgICAibGF5b3V0ID0gKHN0cmluZykgaW50ZXJsZWF2ZWQsICIKLSAgICAgICAgInJhdGUgPSAoaW50KSB7IDgwMDAsIDEyMDAwLCAxNjAwMCwgMjQwMDAgfSwgIgotICAgICAgICAiY2hhbm5lbHMgPSAoaW50KSBbIDEsIDIgXSAiKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfZmFjdG9yeSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LW9wdXMiKQotICAgICk7Ci0KLSNkZWZpbmUgREVGQVVMVF9BVURJTyAgICAgICAgICAgVFJVRQotI2RlZmluZSBERUZBVUxUX0FVRElPX1RZUEUgICAgICBPUFVTX0FQUExJQ0FUSU9OX0FVRElPCi0jZGVmaW5lIERFRkFVTFRfQklUUkFURSAgICAgICAgIDY0MDAwCi0jZGVmaW5lIERFRkFVTFRfQkFORFdJRFRIICAgICAgIE9QVVNfQkFORFdJRFRIX0ZVTExCQU5ECi0jZGVmaW5lIERFRkFVTFRfRlJBTUVTSVpFICAgICAgIDIwCi0jZGVmaW5lIERFRkFVTFRfQ0JSICAgICAgICAgICAgIFRSVUUKLSNkZWZpbmUgREVGQVVMVF9DT05TVFJBSU5FRF9WQlIgVFJVRQotI2RlZmluZSBERUZBVUxUX0JJVFJBVEVfVFlQRSAgICBCSVRSQVRFX1RZUEVfQ0JSCi0jZGVmaW5lIERFRkFVTFRfQ09NUExFWElUWSAgICAgIDEwCi0jZGVmaW5lIERFRkFVTFRfSU5CQU5EX0ZFQyAgICAgIEZBTFNFCi0jZGVmaW5lIERFRkFVTFRfRFRYICAgICAgICAgICAgIEZBTFNFCi0jZGVmaW5lIERFRkFVTFRfUEFDS0VUX0xPU1NfUEVSQ0VOVCAwCi0jZGVmaW5lIERFRkFVTFRfTUFYX1BBWUxPQURfU0laRSA0MDAwCi0KLWVudW0KLXsKLSAgUFJPUF8wLAotICBQUk9QX0FVRElPLAotICBQUk9QX0FVRElPX1RZUEUsCi0gIFBST1BfQklUUkFURSwKLSAgUFJPUF9CQU5EV0lEVEgsCi0gIFBST1BfRlJBTUVfU0laRSwKLSAgUFJPUF9DQlIsCi0gIFBST1BfQ09OU1RSQUlORURfVkJSLAotICBQUk9QX0JJVFJBVEVfVFlQRSwKLSAgUFJPUF9DT01QTEVYSVRZLAotICBQUk9QX0lOQkFORF9GRUMsCi0gIFBST1BfRFRYLAotICBQUk9QX1BBQ0tFVF9MT1NTX1BFUkNFTlQsCi0gIFBST1BfTUFYX1BBWUxPQURfU0laRQotfTsKLQotc3RhdGljIHZvaWQgZ3N0X29wdXNfZW5jX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLQotc3RhdGljIGdib29sZWFuIGdzdF9vcHVzX2VuY19zaW5rX2V2ZW50IChHc3RBdWRpb0VuY29kZXIgKiBiZW5jLAotICAgIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIEdzdENhcHMgKmdzdF9vcHVzX2VuY19zaW5rX2dldGNhcHMgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsCi0gICAgR3N0Q2FwcyAqIGZpbHRlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X29wdXNfZW5jX3NldHVwIChHc3RPcHVzRW5jICogZW5jKTsKLQotc3RhdGljIHZvaWQgZ3N0X29wdXNfZW5jX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLXN0YXRpYyB2b2lkIGdzdF9vcHVzX2VuY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci0KLXN0YXRpYyB2b2lkIGdzdF9vcHVzX2VuY19zZXRfdGFncyAoR3N0T3B1c0VuYyAqIGVuYyk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X29wdXNfZW5jX3N0YXJ0IChHc3RBdWRpb0VuY29kZXIgKiBiZW5jKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3Rfb3B1c19lbmNfc3RvcCAoR3N0QXVkaW9FbmNvZGVyICogYmVuYyk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X29wdXNfZW5jX3NldF9mb3JtYXQgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsCi0gICAgR3N0QXVkaW9JbmZvICogaW5mbyk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3Rfb3B1c19lbmNfaGFuZGxlX2ZyYW1lIChHc3RBdWRpb0VuY29kZXIgKiBiZW5jLAotICAgIEdzdEJ1ZmZlciAqIGJ1Zik7Ci1zdGF0aWMgZ2ludDY0IGdzdF9vcHVzX2VuY19nZXRfbGF0ZW5jeSAoR3N0T3B1c0VuYyAqIGVuYyk7Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9vcHVzX2VuY19lbmNvZGUgKEdzdE9wdXNFbmMgKiBlbmMsIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0KLSNkZWZpbmUgZ3N0X29wdXNfZW5jX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKLUdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RPcHVzRW5jLCBnc3Rfb3B1c19lbmMsIEdTVF9UWVBFX0FVRElPX0VOQ09ERVIsCi0gICAgR19JTVBMRU1FTlRfSU5URVJGQUNFIChHU1RfVFlQRV9UQUdfU0VUVEVSLCBOVUxMKTsKLSAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX1BSRVNFVCwgTlVMTCkpOwotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZW5jX3NldF90YWdzIChHc3RPcHVzRW5jICogZW5jKQotewotICBHc3RUYWdMaXN0ICp0YWdsaXN0OwotCi0gIC8qIGNyZWF0ZSBhIHRhZ2xpc3QgYW5kIGFkZCBhIGJpdHJhdGUgdGFnIHRvIGl0ICovCi0gIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotICBnc3RfdGFnX2xpc3RfYWRkICh0YWdsaXN0LCBHU1RfVEFHX01FUkdFX1JFUExBQ0UsCi0gICAgICBHU1RfVEFHX0JJVFJBVEUsIGVuYy0+Yml0cmF0ZSwgTlVMTCk7Ci0KLSAgZ3N0X2F1ZGlvX2VuY29kZXJfbWVyZ2VfdGFncyAoR1NUX0FVRElPX0VOQ09ERVIgKGVuYyksIHRhZ2xpc3QsCi0gICAgICBHU1RfVEFHX01FUkdFX1JFUExBQ0UpOwotCi0gIGdzdF90YWdfbGlzdF91bnJlZiAodGFnbGlzdCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19lbmNfY2xhc3NfaW5pdCAoR3N0T3B1c0VuY0NsYXNzICoga2xhc3MpCi17Ci0gIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSAgR3N0QXVkaW9FbmNvZGVyQ2xhc3MgKmJhc2VfY2xhc3M7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKLQotICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSAgYmFzZV9jbGFzcyA9IChHc3RBdWRpb0VuY29kZXJDbGFzcyAqKSBrbGFzczsKLSAgZ3N0ZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7Ci0KLSAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X29wdXNfZW5jX3NldF9wcm9wZXJ0eTsKLSAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X29wdXNfZW5jX2dldF9wcm9wZXJ0eTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjX2ZhY3RvcnkpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNpbmtfZmFjdG9yeSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLCAiT3B1cyBhdWRpbyBlbmNvZGVyIiwKLSAgICAgICJDb2RlYy9FbmNvZGVyL0F1ZGlvIiwKLSAgICAgICJFbmNvZGVzIGF1ZGlvIGluIE9wdXMgZm9ybWF0IiwKLSAgICAgICJWaW5jZW50IFBlbnF1ZXJjJ2ggPHZpbmNlbnQucGVucXVlcmNoQGNvbGxhYm9yYS5jby51az4iKTsKLQotICBiYXNlX2NsYXNzLT5zdGFydCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3B1c19lbmNfc3RhcnQpOwotICBiYXNlX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2VuY19zdG9wKTsKLSAgYmFzZV9jbGFzcy0+c2V0X2Zvcm1hdCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3B1c19lbmNfc2V0X2Zvcm1hdCk7Ci0gIGJhc2VfY2xhc3MtPmhhbmRsZV9mcmFtZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3B1c19lbmNfaGFuZGxlX2ZyYW1lKTsKLSAgYmFzZV9jbGFzcy0+c2lua19ldmVudCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfb3B1c19lbmNfc2lua19ldmVudCk7Ci0gIGJhc2VfY2xhc3MtPmdldGNhcHMgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X29wdXNfZW5jX3NpbmtfZ2V0Y2Fwcyk7Ci0KLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9BVURJTywKLSAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiYXVkaW8iLAotICAgICAgICAgICJBdWRpbyBvciB2b2ljZSIsCi0gICAgICAgICAgIkF1ZGlvIG9yIHZvaWNlIChERVBSRUNBVEVEOiB1c2UgYXVkaW8tdHlwZSkiLCBERUZBVUxUX0FVRElPLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8IEdfUEFSQU1fREVQUkVDQVRFRCkpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0FVRElPX1RZUEUsCi0gICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImF1ZGlvLXR5cGUiLCAiV2hhdCB0eXBlIG9mIGF1ZGlvIHRvIG9wdGltaXplIGZvciIsCi0gICAgICAgICAgIldoYXQgdHlwZSBvZiBhdWRpbyB0byBvcHRpbWl6ZSBmb3IiLCBHU1RfT1BVU19FTkNfVFlQRV9BVURJT19UWVBFLAotICAgICAgICAgIERFRkFVTFRfQVVESU9fVFlQRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKEdfT0JKRUNUX0NMQVNTIChrbGFzcyksIFBST1BfQklUUkFURSwKLSAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJiaXRyYXRlIiwgIkVuY29kaW5nIEJpdC1yYXRlIiwKLSAgICAgICAgICAiU3BlY2lmeSBhbiBlbmNvZGluZyBiaXQtcmF0ZSAoaW4gYnBzKS4iLCBMT1dFU1RfQklUUkFURSwKLSAgICAgICAgICBISUdIRVNUX0JJVFJBVEUsIERFRkFVTFRfQklUUkFURSwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfAotICAgICAgICAgIEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9CQU5EV0lEVEgsCi0gICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJhbmR3aWR0aCIsICJCYW5kIFdpZHRoIiwgIkF1ZGlvIEJhbmQgV2lkdGgiLAotICAgICAgICAgIEdTVF9PUFVTX0VOQ19UWVBFX0JBTkRXSURUSCwgREVGQVVMVF9CQU5EV0lEVEgsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKLSAgICAgICAgICBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRlJBTUVfU0laRSwKLSAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgiZnJhbWUtc2l6ZSIsICJGcmFtZSBTaXplIiwKLSAgICAgICAgICAiVGhlIGR1cmF0aW9uIG9mIGFuIGF1ZGlvIGZyYW1lLCBpbiBtcyIsIEdTVF9PUFVTX0VOQ19UWVBFX0ZSQU1FX1NJWkUsCi0gICAgICAgICAgREVGQVVMVF9GUkFNRVNJWkUsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKLSAgICAgICAgICBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ0JSLAotICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJjYnIiLCAiQ29uc3RhbnQgYml0IHJhdGUiLAotICAgICAgICAgICJDb25zdGFudCBiaXQgcmF0ZSAoREVQUkVDQVRFRDogdXNlIGJpdHJhdGUtdHlwZSkiLCBERUZBVUxUX0NCUiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfCBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HCi0gICAgICAgICAgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DT05TVFJBSU5FRF9WQlIsCi0gICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNvbnN0cmFpbmVkLXZiciIsICJDb25zdHJhaW5lZCBWQlIiLAotICAgICAgICAgICJDb25zdHJhaW5lZCBWQlIgKERFUFJFQ0FURUQ6IHVzZSBiaXRyYXRlLXR5cGUpIiwKLSAgICAgICAgICBERUZBVUxUX0NPTlNUUkFJTkVEX1ZCUiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfCBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HCi0gICAgICAgICAgfCBHX1BBUkFNX0RFUFJFQ0FURUQpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9CSVRSQVRFX1RZUEUsCi0gICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImJpdHJhdGUtdHlwZSIsICJCaXRyYXRlIHR5cGUiLCAiQml0cmF0ZSB0eXBlIiwKLSAgICAgICAgICBHU1RfT1BVU19FTkNfVFlQRV9CSVRSQVRFX1RZUEUsIERFRkFVTFRfQklUUkFURV9UWVBFLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8Ci0gICAgICAgICAgR1NUX1BBUkFNX01VVEFCTEVfUExBWUlORykpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTVBMRVhJVFksCi0gICAgICBnX3BhcmFtX3NwZWNfaW50ICgiY29tcGxleGl0eSIsICJDb21wbGV4aXR5IiwgIkNvbXBsZXhpdHkiLCAwLCAxMCwKLSAgICAgICAgICBERUZBVUxUX0NPTVBMRVhJVFksCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKLSAgICAgICAgICBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfSU5CQU5EX0ZFQywKLSAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgiaW5iYW5kLWZlYyIsICJJbi1iYW5kIEZFQyIsCi0gICAgICAgICAgIkVuYWJsZSBmb3J3YXJkIGVycm9yIGNvcnJlY3Rpb24iLCBERUZBVUxUX0lOQkFORF9GRUMsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwKLSAgICAgICAgICBHU1RfUEFSQU1fTVVUQUJMRV9QTEFZSU5HKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRFRYLAotICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJkdHgiLCAiRFRYIiwgIkRUWCIsIERFRkFVTFRfRFRYLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8Ci0gICAgICAgICAgR1NUX1BBUkFNX01VVEFCTEVfUExBWUlORykpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChHX09CSkVDVF9DTEFTUyAoa2xhc3MpLAotICAgICAgUFJPUF9QQUNLRVRfTE9TU19QRVJDRU5ULCBnX3BhcmFtX3NwZWNfaW50ICgicGFja2V0LWxvc3MtcGVyY2VudGFnZSIsCi0gICAgICAgICAgIkxvc3MgcGVyY2VudGFnZSIsICJQYWNrZXQgbG9zcyBwZXJjZW50YWdlIiwgMCwgMTAwLAotICAgICAgICAgIERFRkFVTFRfUEFDS0VUX0xPU1NfUEVSQ0VOVCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfAotICAgICAgICAgIEdTVF9QQVJBTV9NVVRBQkxFX1BMQVlJTkcpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKSwKLSAgICAgIFBST1BfTUFYX1BBWUxPQURfU0laRSwgZ19wYXJhbV9zcGVjX3VpbnQgKCJtYXgtcGF5bG9hZC1zaXplIiwKLSAgICAgICAgICAiTWF4IHBheWxvYWQgc2l6ZSIsICJNYXhpbXVtIHBheWxvYWQgc2l6ZSBpbiBieXRlcyIsIDIsIDQwMDAsCi0gICAgICAgICAgREVGQVVMVF9NQVhfUEFZTE9BRF9TSVpFLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyB8Ci0gICAgICAgICAgR1NUX1BBUkFNX01VVEFCTEVfUExBWUlORykpOwotCi0gIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9vcHVzX2VuY19maW5hbGl6ZSk7Ci0KLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKG9wdXNlbmNfZGVidWcsICJvcHVzZW5jIiwgMCwgIk9wdXMgZW5jb2RlciIpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZW5jX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQotewotICBHc3RPcHVzRW5jICplbmM7Ci0KLSAgZW5jID0gR1NUX09QVVNfRU5DIChvYmplY3QpOwotCi0gIGdfbXV0ZXhfY2xlYXIgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotCi0gIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2VuY19pbml0IChHc3RPcHVzRW5jICogZW5jKQotewotICBHc3RBdWRpb0VuY29kZXIgKmJlbmMgPSBHU1RfQVVESU9fRU5DT0RFUiAoZW5jKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJpbml0Iik7Ci0KLSAgR1NUX1BBRF9TRVRfQUNDRVBUX1RFTVBMQVRFIChHU1RfQVVESU9fRU5DT0RFUl9TSU5LX1BBRCAoZW5jKSk7Ci0KLSAgZ19tdXRleF9pbml0ICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLQotICBlbmMtPm5fY2hhbm5lbHMgPSAtMTsKLSAgZW5jLT5zYW1wbGVfcmF0ZSA9IC0xOwotICBlbmMtPmZyYW1lX3NhbXBsZXMgPSAwOwotCi0gIGVuYy0+Yml0cmF0ZSA9IERFRkFVTFRfQklUUkFURTsKLSAgZW5jLT5iYW5kd2lkdGggPSBERUZBVUxUX0JBTkRXSURUSDsKLSAgZW5jLT5mcmFtZV9zaXplID0gREVGQVVMVF9GUkFNRVNJWkU7Ci0gIGVuYy0+Yml0cmF0ZV90eXBlID0gREVGQVVMVF9CSVRSQVRFX1RZUEU7Ci0gIGVuYy0+Y29tcGxleGl0eSA9IERFRkFVTFRfQ09NUExFWElUWTsKLSAgZW5jLT5pbmJhbmRfZmVjID0gREVGQVVMVF9JTkJBTkRfRkVDOwotICBlbmMtPmR0eCA9IERFRkFVTFRfRFRYOwotICBlbmMtPnBhY2tldF9sb3NzX3BlcmNlbnRhZ2UgPSBERUZBVUxUX1BBQ0tFVF9MT1NTX1BFUkNFTlQ7Ci0gIGVuYy0+bWF4X3BheWxvYWRfc2l6ZSA9IERFRkFVTFRfTUFYX1BBWUxPQURfU0laRTsKLSAgZW5jLT5hdWRpb190eXBlID0gREVGQVVMVF9BVURJT19UWVBFOwotCi0gIC8qIGFycmFuZ2UgZ3JhbnVsZXBvcyBtYXJraW5nIChhbmQgcmVxdWlyZWQgcGVyZmVjdCB0cykgKi8KLSAgZ3N0X2F1ZGlvX2VuY29kZXJfc2V0X21hcmtfZ3JhbnVsZSAoYmVuYywgVFJVRSk7Ci0gIGdzdF9hdWRpb19lbmNvZGVyX3NldF9wZXJmZWN0X3RpbWVzdGFtcCAoYmVuYywgVFJVRSk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X29wdXNfZW5jX3N0YXJ0IChHc3RBdWRpb0VuY29kZXIgKiBiZW5jKQotewotICBHc3RPcHVzRW5jICplbmMgPSBHU1RfT1BVU19FTkMgKGJlbmMpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgInN0YXJ0Iik7Ci0gIGVuYy0+ZW5jb2RlZF9zYW1wbGVzID0gMDsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3Rfb3B1c19lbmNfc3RvcCAoR3N0QXVkaW9FbmNvZGVyICogYmVuYykKLXsKLSAgR3N0T3B1c0VuYyAqZW5jID0gR1NUX09QVVNfRU5DIChiZW5jKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJzdG9wIik7Ci0gIGlmIChlbmMtPnN0YXRlKSB7Ci0gICAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2Rlc3Ryb3kgKGVuYy0+c3RhdGUpOwotICAgIGVuYy0+c3RhdGUgPSBOVUxMOwotICB9Ci0gIGdzdF90YWdfc2V0dGVyX3Jlc2V0X3RhZ3MgKEdTVF9UQUdfU0VUVEVSIChlbmMpKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdpbnQ2NAotZ3N0X29wdXNfZW5jX2dldF9sYXRlbmN5IChHc3RPcHVzRW5jICogZW5jKQotewotICBnaW50NjQgbGF0ZW5jeSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoZW5jLT5mcmFtZV9zYW1wbGVzLCBHU1RfU0VDT05ELAotICAgICAgZW5jLT5zYW1wbGVfcmF0ZSk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgIkxhdGVuY3k6ICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyAobGF0ZW5jeSkpOwotICByZXR1cm4gbGF0ZW5jeTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2VuY19zZXR1cF9iYXNlX2NsYXNzIChHc3RPcHVzRW5jICogZW5jLCBHc3RBdWRpb0VuY29kZXIgKiBiZW5jKQotewotICBnc3RfYXVkaW9fZW5jb2Rlcl9zZXRfbGF0ZW5jeSAoYmVuYywKLSAgICAgIGdzdF9vcHVzX2VuY19nZXRfbGF0ZW5jeSAoZW5jKSwgZ3N0X29wdXNfZW5jX2dldF9sYXRlbmN5IChlbmMpKTsKLSAgZ3N0X2F1ZGlvX2VuY29kZXJfc2V0X2ZyYW1lX3NhbXBsZXNfbWluIChiZW5jLCBlbmMtPmZyYW1lX3NhbXBsZXMpOwotICBnc3RfYXVkaW9fZW5jb2Rlcl9zZXRfZnJhbWVfc2FtcGxlc19tYXggKGJlbmMsIGVuYy0+ZnJhbWVfc2FtcGxlcyk7Ci0gIGdzdF9hdWRpb19lbmNvZGVyX3NldF9mcmFtZV9tYXggKGJlbmMsIDEpOwotfQotCi1zdGF0aWMgZ2ludAotZ3N0X29wdXNfZW5jX2dldF9mcmFtZV9zYW1wbGVzIChHc3RPcHVzRW5jICogZW5jKQotewotICBnaW50IGZyYW1lX3NhbXBsZXMgPSAwOwotICBzd2l0Y2ggKGVuYy0+ZnJhbWVfc2l6ZSkgewotICAgIGNhc2UgMjoKLSAgICAgIGZyYW1lX3NhbXBsZXMgPSBlbmMtPnNhbXBsZV9yYXRlIC8gNDAwOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSA1OgotICAgICAgZnJhbWVfc2FtcGxlcyA9IGVuYy0+c2FtcGxlX3JhdGUgLyAyMDA7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDEwOgotICAgICAgZnJhbWVfc2FtcGxlcyA9IGVuYy0+c2FtcGxlX3JhdGUgLyAxMDA7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDIwOgotICAgICAgZnJhbWVfc2FtcGxlcyA9IGVuYy0+c2FtcGxlX3JhdGUgLyA1MDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgNDA6Ci0gICAgICBmcmFtZV9zYW1wbGVzID0gZW5jLT5zYW1wbGVfcmF0ZSAvIDI1OwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSA2MDoKLSAgICAgIGZyYW1lX3NhbXBsZXMgPSAzICogZW5jLT5zYW1wbGVfcmF0ZSAvIDUwOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZW5jLCAiVW5zdXBwb3J0ZWQgZnJhbWUgc2l6ZTogJWQiLCBlbmMtPmZyYW1lX3NpemUpOwotICAgICAgZnJhbWVfc2FtcGxlcyA9IDA7Ci0gICAgICBicmVhazsKLSAgfQotICByZXR1cm4gZnJhbWVfc2FtcGxlczsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2VuY19zZXR1cF90cml2aWFsX21hcHBpbmcgKEdzdE9wdXNFbmMgKiBlbmMsIGd1aW50OCBtYXBwaW5nWzI1Nl0pCi17Ci0gIGludCBuOwotCi0gIGZvciAobiA9IDA7IG4gPCAyNTU7ICsrbikKLSAgICBtYXBwaW5nW25dID0gbjsKLX0KLQotc3RhdGljIGludAotZ3N0X29wdXNfZW5jX2ZpbmRfY2hhbm5lbF9wb3NpdGlvbiAoR3N0T3B1c0VuYyAqIGVuYywgY29uc3QgR3N0QXVkaW9JbmZvICogaW5mbywKLSAgICBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBwb3NpdGlvbikKLXsKLSAgaW50IG47Ci0gIGZvciAobiA9IDA7IG4gPCBlbmMtPm5fY2hhbm5lbHM7ICsrbikgewotICAgIGlmIChHU1RfQVVESU9fSU5GT19QT1NJVElPTiAoaW5mbywgbikgPT0gcG9zaXRpb24pIHsKLSAgICAgIHJldHVybiBuOwotICAgIH0KLSAgfQotICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyBpbnQKLWdzdF9vcHVzX2VuY19maW5kX2NoYW5uZWxfcG9zaXRpb25faW5fdm9yYmlzX29yZGVyIChHc3RPcHVzRW5jICogZW5jLAotICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHBvc2l0aW9uKQotewotICBpbnQgYzsKLQotICBmb3IgKGMgPSAwOyBjIDwgZW5jLT5uX2NoYW5uZWxzOyArK2MpIHsKLSAgICBpZiAoZ3N0X29wdXNfY2hhbm5lbF9wb3NpdGlvbnNbZW5jLT5uX2NoYW5uZWxzIC0gMV1bY10gPT0gcG9zaXRpb24pIHsKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAoZW5jLAotICAgICAgICAgICJDaGFubmVsIHBvc2l0aW9uICVzIG1hcHMgdG8gaW5kZXggJWQgaW4gVm9yYmlzIG9yZGVyIiwKLSAgICAgICAgICBnc3Rfb3B1c19jaGFubmVsX25hbWVzW3Bvc2l0aW9uXSwgYyk7Ci0gICAgICByZXR1cm4gYzsKLSAgICB9Ci0gIH0KLSAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsCi0gICAgICAiQ2hhbm5lbCBwb3NpdGlvbiAlcyBpcyBub3QgcmVwcmVzZW50YWJsZSBpbiBWb3JiaXMgb3JkZXIiLAotICAgICAgZ3N0X29wdXNfY2hhbm5lbF9uYW1lc1twb3NpdGlvbl0pOwotICByZXR1cm4gLTE7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3Rfb3B1c19lbmNfc2V0dXBfY2hhbm5lbF9tYXBwaW5ncyAoR3N0T3B1c0VuYyAqIGVuYywKLSAgICBjb25zdCBHc3RBdWRpb0luZm8gKiBpbmZvKQotewotI2RlZmluZSBNQVBTKGlkeCxwb3MpIChHU1RfQVVESU9fSU5GT19QT1NJVElPTiAoaW5mbywgKGlkeCkpID09IEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OXyMjcG9zKQotCi0gIGludCBuOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgIlNldHRpbmcgdXAgY2hhbm5lbCBtYXBwaW5nIGZvciAlZCBjaGFubmVscyIsCi0gICAgICBlbmMtPm5fY2hhbm5lbHMpOwotCi0gIC8qIFN0YXJ0IGJ5IHNldHRpbmcgdXAgYSBkZWZhdWx0IHRyaXZpYWwgbWFwcGluZyAqLwotICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMgPSAwOwotICBnc3Rfb3B1c19lbmNfc2V0dXBfdHJpdmlhbF9tYXBwaW5nIChlbmMsIGVuYy0+ZW5jb2RpbmdfY2hhbm5lbF9tYXBwaW5nKTsKLSAgZ3N0X29wdXNfZW5jX3NldHVwX3RyaXZpYWxfbWFwcGluZyAoZW5jLCBlbmMtPmRlY29kaW5nX2NoYW5uZWxfbWFwcGluZyk7Ci0KLSAgLyogRm9yIG9uZSBjaGFubmVsLCB1c2UgdGhlIGJhc2ljIFJUUCBtYXBwaW5nICovCi0gIGlmIChlbmMtPm5fY2hhbm5lbHMgPT0gMSkgewotICAgIEdTVF9JTkZPX09CSkVDVCAoZW5jLCAiTW9ubywgdHJpdmlhbCBSVFAgbWFwcGluZyIpOwotICAgIGVuYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9IDA7Ci0gICAgLyogaW1wbGljaXQgbWFwcGluZyBmb3IgZmFtaWx5IDAgKi8KLSAgICByZXR1cm47Ci0gIH0KLQotICAvKiBGb3IgdHdvIGNoYW5uZWxzLCB1c2UgdGhlIGJhc2ljIFJUUCBtYXBwaW5nIGlmIHRoZSBjaGFubmVscyBhcmUKLSAgICAgbWFwcGVkIGFzIGxlZnQvcmlnaHQuICovCi0gIGlmIChlbmMtPm5fY2hhbm5lbHMgPT0gMikgewotICAgIGlmIChNQVBTICgwLCBGUk9OVF9MRUZUKSAmJiBNQVBTICgxLCBGUk9OVF9SSUdIVCkpIHsKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAoZW5jLCAiU3RlcmVvLCBjYW5vbmljYWwgbWFwcGluZyIpOwotICAgICAgZW5jLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gMDsKLSAgICAgIGVuYy0+bl9zdGVyZW9fc3RyZWFtcyA9IDE7Ci0gICAgICAvKiBUaGUgY2hhbm5lbCBtYXBwaW5nIGlzIGltcGxpY2l0IGZvciBmYW1pbHkgMCwgdGhhdCdzIHdoeSB3ZSBkbyBub3QKLSAgICAgICAgIGF0dGVtcHQgdG8gY3JlYXRlIG9uZSBmb3IgcmlnaHQvbGVmdCAtIHRoaXMgd2lsbCBiZSBtYXBwZWQgdG8gdGhlCi0gICAgICAgICBWb3JiaXMgbWFwcGluZyBiZWxvdy4gKi8KLSAgICAgIHJldHVybjsKLSAgICB9IGVsc2UgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiU3RlcmVvLCBidXQgbm90IGNhbm9uaWNhbCBtYXBwaW5nLCBjb250aW51aW5nIik7Ci0gICAgfQotICB9Ci0KLSAgLyogRm9yIGNoYW5uZWxzIGJldHdlZW4gMSBhbmQgOCwgd2UgdXNlIHRoZSBWb3JiaXMgbWFwcGluZyBpZiB3ZSBjYW4KLSAgICAgZmluZCBhIHBlcm11dGF0aW9uIHRoYXQgbWF0Y2hlcyBpdC4gTW9ubyB3aWxsIGhhdmUgYmVlbiB0YWtlbiBjYXJlCi0gICAgIG9mIGVhcmxpZXIsIGJ1dCB0aGlzIGNvZGUgYWxzbyBoYW5kbGVzIGl0LiBTYW1lIGZvciBsZWZ0L3JpZ2h0IHN0ZXJlby4KLSAgICAgVGhlcmUgYXJlIHR3byBtYXBwaW5ncy4gT25lIG1hcHMgdGhlIGlucHV0IGNoYW5uZWxzIHRvIGFuIG9yZGVyaW5nCi0gICAgIHdoaWNoIGhhcyB0aGUgbmF0dXJhbCBwYWlycyBmaXJzdCBzbyB0aGV5IGNhbiBiZW5lZml0IGZyb20gdGhlIE9wdXMKLSAgICAgc3RlcmVvIGNoYW5uZWwgY291cGxpbmcsIGFuZCB0aGUgb3RoZXIgbWFwcyB0aGlzIG9yZGVyaW5nIHRvIHRoZQotICAgICBWb3JiaXMgb3JkZXJpbmcuICovCi0gIGlmIChlbmMtPm5fY2hhbm5lbHMgPj0gMSAmJiBlbmMtPm5fY2hhbm5lbHMgPD0gOCkgewotICAgIGludCBjMCwgYzEsIGMwdiwgYzF2OwotICAgIGludCBtYXBwZWQ7Ci0gICAgZ2Jvb2xlYW4gcG9zaXRpb25zX2RvbmVbMjU2XTsKLSAgICBzdGF0aWMgY29uc3QgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gcGFpcnNbXVsyXSA9IHsKLSAgICAgIHtHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZULAotICAgICAgICAgIEdTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX0ZST05UX1JJR0hUfSwKLSAgICAgIHtHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9SRUFSX0xFRlQsCi0gICAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fUkVBUl9SSUdIVH0sCi0gICAgICB7R1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfTEVGVF9PRl9DRU5URVIsCi0gICAgICAgICAgR1NUX0FVRElPX0NIQU5ORUxfUE9TSVRJT05fRlJPTlRfUklHSFRfT0ZfQ0VOVEVSfSwKLSAgICAgIHtHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9MRUZUX09GX0NFTlRFUiwKLSAgICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9GUk9OVF9SSUdIVF9PRl9DRU5URVJ9LAotICAgICAge0dTVF9BVURJT19DSEFOTkVMX1BPU0lUSU9OX1NJREVfTEVGVCwKLSAgICAgICAgICBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl9TSURFX1JJR0hUfSwKLSAgICB9OwotICAgIHNpemVfdCBwYWlyOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLAotICAgICAgICAiSW4gcmFuZ2UgZm9yIHRoZSBWb3JiaXMgbWFwcGluZywgYnVpbGRpbmcgY2hhbm5lbCBtYXBwaW5nIHRhYmxlcyIpOwotCi0gICAgZW5jLT5uX3N0ZXJlb19zdHJlYW1zID0gMDsKLSAgICBtYXBwZWQgPSAwOwotICAgIGZvciAobiA9IDA7IG4gPCAyNTY7ICsrbikKLSAgICAgIHBvc2l0aW9uc19kb25lW25dID0gRkFMU0U7Ci0KLSAgICAvKiBGaXJzdCwgZmluZCBhbnkgbmF0dXJhbCBwYWlycywgYW5kIG1vdmUgdGhlbSB0byB0aGUgZnJvbnQgKi8KLSAgICBmb3IgKHBhaXIgPSAwOyBwYWlyIDwgR19OX0VMRU1FTlRTIChwYWlycyk7ICsrcGFpcikgewotICAgICAgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gcDAgPSBwYWlyc1twYWlyXVswXTsKLSAgICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHAxID0gcGFpcnNbcGFpcl1bMV07Ci0gICAgICBjMCA9IGdzdF9vcHVzX2VuY19maW5kX2NoYW5uZWxfcG9zaXRpb24gKGVuYywgaW5mbywgcDApOwotICAgICAgYzEgPSBnc3Rfb3B1c19lbmNfZmluZF9jaGFubmVsX3Bvc2l0aW9uIChlbmMsIGluZm8sIHAxKTsKLSAgICAgIGlmIChjMCA+PSAwICYmIGMxID49IDApIHsKLSAgICAgICAgLyogV2UgZm91bmQgYSBuYXR1cmFsIHBhaXIgKi8KLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiTmF0dXJhbCBwYWlyICclcy8lcycgZm91bmQgYXQgJWQgJWQiLAotICAgICAgICAgICAgZ3N0X29wdXNfY2hhbm5lbF9uYW1lc1twMF0sIGdzdF9vcHVzX2NoYW5uZWxfbmFtZXNbcDFdLCBjMCwgYzEpOwotICAgICAgICAvKiBGaW5kIHdoZXJlIHRoZXkgbWFwIGluIFZvcmJpcyBvcmRlciAqLwotICAgICAgICBjMHYgPSBnc3Rfb3B1c19lbmNfZmluZF9jaGFubmVsX3Bvc2l0aW9uX2luX3ZvcmJpc19vcmRlciAoZW5jLCBwMCk7Ci0gICAgICAgIGMxdiA9IGdzdF9vcHVzX2VuY19maW5kX2NoYW5uZWxfcG9zaXRpb25faW5fdm9yYmlzX29yZGVyIChlbmMsIHAxKTsKLSAgICAgICAgaWYgKGMwdiA8IDAgfHwgYzF2IDwgMCkgewotICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZW5jLAotICAgICAgICAgICAgICAiQ2Fubm90IG1hcCBjaGFubmVsIHBvc2l0aW9ucyB0byBWb3JiaXMgb3JkZXIsIHVzaW5nIHVua25vd24gbWFwcGluZyIpOwotICAgICAgICAgIGVuYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSA9IDI1NTsKLSAgICAgICAgICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMgPSAwOwotICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIGVuYy0+ZW5jb2RpbmdfY2hhbm5lbF9tYXBwaW5nW21hcHBlZF0gPSBjMDsKLSAgICAgICAgZW5jLT5lbmNvZGluZ19jaGFubmVsX21hcHBpbmdbbWFwcGVkICsgMV0gPSBjMTsKLSAgICAgICAgZW5jLT5kZWNvZGluZ19jaGFubmVsX21hcHBpbmdbYzB2XSA9IG1hcHBlZDsKLSAgICAgICAgZW5jLT5kZWNvZGluZ19jaGFubmVsX21hcHBpbmdbYzF2XSA9IG1hcHBlZCArIDE7Ci0gICAgICAgIGVuYy0+bl9zdGVyZW9fc3RyZWFtcysrOwotICAgICAgICBtYXBwZWQgKz0gMjsKLSAgICAgICAgcG9zaXRpb25zX2RvbmVbcDBdID0gcG9zaXRpb25zX2RvbmVbcDFdID0gVFJVRTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBOb3cgYWRkIGFsbCBvdGhlciBpbnB1dCBjaGFubmVscyBhcyBtb25vIHN0cmVhbXMgKi8KLSAgICBmb3IgKG4gPSAwOyBuIDwgZW5jLT5uX2NoYW5uZWxzOyArK24pIHsKLSAgICAgIEdzdEF1ZGlvQ2hhbm5lbFBvc2l0aW9uIHBvc2l0aW9uID0gR1NUX0FVRElPX0lORk9fUE9TSVRJT04gKGluZm8sIG4pOwotCi0gICAgICAvKiBpZiB3ZSBhbHJlYWR5IG1hcHBlZCBpdCB3aGlsZSBzZWFyY2hpbmcgZm9yIHBhaXJzLCBub3RoaW5nIGVsc2UKLSAgICAgICAgIG5lZWRzIHRvIGJlIGRvbmUgKi8KLSAgICAgIGlmICghcG9zaXRpb25zX2RvbmVbcG9zaXRpb25dKSB7Ci0gICAgICAgIGludCBjdjsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiQ2hhbm5lbCBwb3NpdGlvbiAlcyBpcyBub3QgbWFwcGVkIHlldCwgYWRkaW5nIiwKLSAgICAgICAgICAgIGdzdF9vcHVzX2NoYW5uZWxfbmFtZXNbcG9zaXRpb25dKTsKLSAgICAgICAgY3YgPSBnc3Rfb3B1c19lbmNfZmluZF9jaGFubmVsX3Bvc2l0aW9uX2luX3ZvcmJpc19vcmRlciAoZW5jLCBwb3NpdGlvbik7Ci0gICAgICAgIGlmIChjdiA8IDApIHsKLSAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywKLSAgICAgICAgICAgICAgIkNhbm5vdCBtYXAgY2hhbm5lbCBwb3NpdGlvbnMgdG8gVm9yYmlzIG9yZGVyLCB1c2luZyB1bmtub3duIG1hcHBpbmciKTsKLSAgICAgICAgICBlbmMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAyNTU7Ci0gICAgICAgICAgZW5jLT5uX3N0ZXJlb19zdHJlYW1zID0gMDsKLSAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLSAgICAgICAgZW5jLT5lbmNvZGluZ19jaGFubmVsX21hcHBpbmdbbWFwcGVkXSA9IG47Ci0gICAgICAgIGVuYy0+ZGVjb2RpbmdfY2hhbm5lbF9tYXBwaW5nW2N2XSA9IG1hcHBlZDsKLSAgICAgICAgbWFwcGVkKys7Ci0gICAgICB9Ci0gICAgfQotCi0jaWZuZGVmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRwotICAgIEdTVF9JTkZPX09CSkVDVCAoZW5jLAotICAgICAgICAiTWFwcGluZyB0YWJsZXMgYnVpbHQ6ICVkIGNoYW5uZWxzLCAlZCBzdGVyZW8gc3RyZWFtcyIsIGVuYy0+bl9jaGFubmVscywKLSAgICAgICAgZW5jLT5uX3N0ZXJlb19zdHJlYW1zKTsKLSAgICBnc3Rfb3B1c19jb21tb25fbG9nX2NoYW5uZWxfbWFwcGluZ190YWJsZSAoR1NUX0VMRU1FTlQgKGVuYyksIG9wdXNlbmNfZGVidWcsCi0gICAgICAgICJFbmNvZGluZyBtYXBwaW5nIHRhYmxlIiwgZW5jLT5uX2NoYW5uZWxzLAotICAgICAgICBlbmMtPmVuY29kaW5nX2NoYW5uZWxfbWFwcGluZyk7Ci0gICAgZ3N0X29wdXNfY29tbW9uX2xvZ19jaGFubmVsX21hcHBpbmdfdGFibGUgKEdTVF9FTEVNRU5UIChlbmMpLCBvcHVzZW5jX2RlYnVnLAotICAgICAgICAiRGVjb2RpbmcgbWFwcGluZyB0YWJsZSIsIGVuYy0+bl9jaGFubmVscywKLSAgICAgICAgZW5jLT5kZWNvZGluZ19jaGFubmVsX21hcHBpbmcpOwotI2VuZGlmCi0KLSAgICBlbmMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPSAxOwotICAgIHJldHVybjsKLSAgfQotCi0gIC8qIE1vcmUgdGhhbiA4IGNoYW5uZWxzLCBpZiBmdXR1cmUgbWFwcGluZ3MgYXJlIGFkZGVkIGZvciB0aG9zZSAqLwotCi0gIC8qIEZvciBvdGhlciBjYXNlcywgd2UgdXNlIHVuZGVmaW5lZCwgd2l0aCB0aGUgZGVmYXVsdCB0cml2aWFsIG1hcHBpbmcKLSAgICAgYW5kIGFsbCBtb25vIHN0cmVhbXMgKi8KLSAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsICJVbmtub3duIG1hcHBpbmciKTsKLSAgZW5jLT5jaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gMjU1OwotICBlbmMtPm5fc3RlcmVvX3N0cmVhbXMgPSAwOwotCi0jdW5kZWYgTUFQUwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcHVzX2VuY19zZXRfZm9ybWF0IChHc3RBdWRpb0VuY29kZXIgKiBiZW5jLCBHc3RBdWRpb0luZm8gKiBpbmZvKQotewotICBHc3RPcHVzRW5jICplbmM7Ci0KLSAgZW5jID0gR1NUX09QVVNfRU5DIChiZW5jKTsKLQotICBnX211dGV4X2xvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotCi0gIGVuYy0+bl9jaGFubmVscyA9IEdTVF9BVURJT19JTkZPX0NIQU5ORUxTIChpbmZvKTsKLSAgZW5jLT5zYW1wbGVfcmF0ZSA9IEdTVF9BVURJT19JTkZPX1JBVEUgKGluZm8pOwotICBnc3Rfb3B1c19lbmNfc2V0dXBfY2hhbm5lbF9tYXBwaW5ncyAoZW5jLCBpbmZvKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAoYmVuYywgIlNldHVwIHdpdGggJWQgY2hhbm5lbHMsICVkIEh6IiwgZW5jLT5uX2NoYW5uZWxzLAotICAgICAgZW5jLT5zYW1wbGVfcmF0ZSk7Ci0KLSAgLyogaGFuZGxlIHJlY29uZmlndXJlICovCi0gIGlmIChlbmMtPnN0YXRlKSB7Ci0gICAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2Rlc3Ryb3kgKGVuYy0+c3RhdGUpOwotICAgIGVuYy0+c3RhdGUgPSBOVUxMOwotICB9Ci0gIGlmICghZ3N0X29wdXNfZW5jX3NldHVwIChlbmMpKSB7Ci0gICAgZ19tdXRleF91bmxvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotCi0gIC8qIHVwZGF0ZSB0aGUgdGFncyAqLwotICBnc3Rfb3B1c19lbmNfc2V0X3RhZ3MgKGVuYyk7Ci0KLSAgZW5jLT5mcmFtZV9zYW1wbGVzID0gZ3N0X29wdXNfZW5jX2dldF9mcmFtZV9zYW1wbGVzIChlbmMpOwotCi0gIC8qIGZlZWRiYWNrIHRvIGJhc2UgY2xhc3MgKi8KLSAgZ3N0X29wdXNfZW5jX3NldHVwX2Jhc2VfY2xhc3MgKGVuYywgYmVuYyk7Ci0KLSAgZ19tdXRleF91bmxvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9vcHVzX2VuY19zZXR1cCAoR3N0T3B1c0VuYyAqIGVuYykKLXsKLSAgaW50IGVycm9yID0gT1BVU19PSzsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgZ2Jvb2xlYW4gcmV0OwotCi0jaWZuZGVmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRwotICBHU1RfREVCVUdfT0JKRUNUIChlbmMsCi0gICAgICAic2V0dXA6ICVkIEh6LCAlZCBjaGFubmVscywgJWQgc3RlcmVvIHN0cmVhbXMsIGZhbWlseSAlZCIsCi0gICAgICBlbmMtPnNhbXBsZV9yYXRlLCBlbmMtPm5fY2hhbm5lbHMsIGVuYy0+bl9zdGVyZW9fc3RyZWFtcywKLSAgICAgIGVuYy0+Y2hhbm5lbF9tYXBwaW5nX2ZhbWlseSk7Ci0gIEdTVF9JTkZPX09CSkVDVCAoZW5jLCAiTWFwcGluZyB0YWJsZXMgYnVpbHQ6ICVkIGNoYW5uZWxzLCAlZCBzdGVyZW8gc3RyZWFtcyIsCi0gICAgICBlbmMtPm5fY2hhbm5lbHMsIGVuYy0+bl9zdGVyZW9fc3RyZWFtcyk7Ci0gIGdzdF9vcHVzX2NvbW1vbl9sb2dfY2hhbm5lbF9tYXBwaW5nX3RhYmxlIChHU1RfRUxFTUVOVCAoZW5jKSwgb3B1c2VuY19kZWJ1ZywKLSAgICAgICJFbmNvZGluZyBtYXBwaW5nIHRhYmxlIiwgZW5jLT5uX2NoYW5uZWxzLCBlbmMtPmVuY29kaW5nX2NoYW5uZWxfbWFwcGluZyk7Ci0gIGdzdF9vcHVzX2NvbW1vbl9sb2dfY2hhbm5lbF9tYXBwaW5nX3RhYmxlIChHU1RfRUxFTUVOVCAoZW5jKSwgb3B1c2VuY19kZWJ1ZywKLSAgICAgICJEZWNvZGluZyBtYXBwaW5nIHRhYmxlIiwgZW5jLT5uX2NoYW5uZWxzLCBlbmMtPmRlY29kaW5nX2NoYW5uZWxfbWFwcGluZyk7Ci0jZW5kaWYKLQotICBlbmMtPnN0YXRlID0gb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2NyZWF0ZSAoZW5jLT5zYW1wbGVfcmF0ZSwKLSAgICAgIGVuYy0+bl9jaGFubmVscywgZW5jLT5uX2NoYW5uZWxzIC0gZW5jLT5uX3N0ZXJlb19zdHJlYW1zLAotICAgICAgZW5jLT5uX3N0ZXJlb19zdHJlYW1zLCBlbmMtPmVuY29kaW5nX2NoYW5uZWxfbWFwcGluZywKLSAgICAgIGVuYy0+YXVkaW9fdHlwZSwgJmVycm9yKTsKLSAgaWYgKCFlbmMtPnN0YXRlIHx8IGVycm9yICE9IE9QVVNfT0spCi0gICAgZ290byBlbmNvZGVyX2NyZWF0aW9uX2ZhaWxlZDsKLQotICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLCBPUFVTX1NFVF9CSVRSQVRFIChlbmMtPmJpdHJhdGUpLCAwKTsKLSAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwgT1BVU19TRVRfQkFORFdJRFRIIChlbmMtPmJhbmR3aWR0aCksCi0gICAgICAwKTsKLSAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwKLSAgICAgIE9QVVNfU0VUX1ZCUiAoZW5jLT5iaXRyYXRlX3R5cGUgIT0gQklUUkFURV9UWVBFX0NCUiksIDApOwotICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLAotICAgICAgT1BVU19TRVRfVkJSX0NPTlNUUkFJTlQgKGVuYy0+Yml0cmF0ZV90eXBlID09Ci0gICAgICAgICAgQklUUkFURV9UWVBFX0NPTlNUUkFJTkVEX1ZCUiksIDApOwotICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLAotICAgICAgT1BVU19TRVRfQ09NUExFWElUWSAoZW5jLT5jb21wbGV4aXR5KSwgMCk7Ci0gIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsCi0gICAgICBPUFVTX1NFVF9JTkJBTkRfRkVDIChlbmMtPmluYmFuZF9mZWMpLCAwKTsKLSAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwgT1BVU19TRVRfRFRYIChlbmMtPmR0eCksIDApOwotICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLAotICAgICAgT1BVU19TRVRfUEFDS0VUX0xPU1NfUEVSQyAoZW5jLT5wYWNrZXRfbG9zc19wZXJjZW50YWdlKSwgMCk7Ci0KLSAgR1NUX0xPR19PQkpFQ1QgKGVuYywgIndlIGhhdmUgZnJhbWUgc2l6ZSAlZCIsIGVuYy0+ZnJhbWVfc2l6ZSk7Ci0KLSAgZ3N0X29wdXNfaGVhZGVyX2NyZWF0ZV9jYXBzICgmY2FwcywgTlVMTCwgZW5jLT5uX2NoYW5uZWxzLAotICAgICAgZW5jLT5uX3N0ZXJlb19zdHJlYW1zLCBlbmMtPnNhbXBsZV9yYXRlLCBlbmMtPmNoYW5uZWxfbWFwcGluZ19mYW1pbHksCi0gICAgICBlbmMtPmRlY29kaW5nX2NoYW5uZWxfbWFwcGluZywKLSAgICAgIGdzdF90YWdfc2V0dGVyX2dldF90YWdfbGlzdCAoR1NUX1RBR19TRVRURVIgKGVuYykpKTsKLQotICAvKiBuZWdvdGlhdGUgd2l0aCB0aGVzZSBjYXBzICovCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgImhlcmUgYXJlIHRoZSBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0KLSAgcmV0ID0gZ3N0X2F1ZGlvX2VuY29kZXJfc2V0X291dHB1dF9mb3JtYXQgKEdTVF9BVURJT19FTkNPREVSIChlbmMpLCBjYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIHJldHVybiByZXQ7Ci0KLWVuY29kZXJfY3JlYXRpb25fZmFpbGVkOgotICBHU1RfRVJST1JfT0JKRUNUIChlbmMsICJFbmNvZGVyIGNyZWF0aW9uIGZhaWxlZCIpOwotICByZXR1cm4gRkFMU0U7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X29wdXNfZW5jX3NpbmtfZXZlbnQgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIEdzdE9wdXNFbmMgKmVuYzsKLQotICBlbmMgPSBHU1RfT1BVU19FTkMgKGJlbmMpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgInNpbmsgZXZlbnQ6ICVzIiwgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKLSAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfVEFHOgotICAgIHsKLSAgICAgIEdzdFRhZ0xpc3QgKmxpc3Q7Ci0gICAgICBHc3RUYWdTZXR0ZXIgKnNldHRlciA9IEdTVF9UQUdfU0VUVEVSIChlbmMpOwotICAgICAgY29uc3QgR3N0VGFnTWVyZ2VNb2RlIG1vZGUgPSBnc3RfdGFnX3NldHRlcl9nZXRfdGFnX21lcmdlX21vZGUgKHNldHRlcik7Ci0KLSAgICAgIGdzdF9ldmVudF9wYXJzZV90YWcgKGV2ZW50LCAmbGlzdCk7Ci0gICAgICBnc3RfdGFnX3NldHRlcl9tZXJnZV90YWdzIChzZXR0ZXIsIGxpc3QsIG1vZGUpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR1NUX0VWRU5UX1NFR01FTlQ6Ci0gICAgICBlbmMtPmVuY29kZWRfc2FtcGxlcyA9IDA7Ci0gICAgICBicmVhazsKLQotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiBHU1RfQVVESU9fRU5DT0RFUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2lua19ldmVudCAoYmVuYywgZXZlbnQpOwotfQotCi1zdGF0aWMgR3N0Q2FwcyAqCi1nc3Rfb3B1c19lbmNfc2lua19nZXRjYXBzIChHc3RBdWRpb0VuY29kZXIgKiBiZW5jLCBHc3RDYXBzICogZmlsdGVyKQotewotICBHc3RPcHVzRW5jICplbmM7Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIEdzdENhcHMgKnRjYXBzOwotICBHc3RDYXBzICpwZWVyY2FwcyA9IE5VTEw7Ci0gIEdzdENhcHMgKmludGVyc2VjdCA9IE5VTEw7Ci0gIGd1aW50IGk7Ci0gIGdib29sZWFuIGFsbG93X211bHRpc3RyZWFtOwotCi0gIGVuYyA9IEdTVF9PUFVTX0VOQyAoYmVuYyk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAic2luayBnZXRjYXBzIik7Ci0KLSAgcGVlcmNhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoR1NUX0FVRElPX0VOQ09ERVJfU1JDX1BBRCAoYmVuYyksIE5VTEwpOwotICBpZiAoIXBlZXJjYXBzKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYmVuYywgIk5vIHBlZXJjYXBzLCByZXR1cm5pbmcgdGVtcGxhdGUgc2luayBjYXBzIik7Ci0gICAgcmV0dXJuIGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChHU1RfQVVESU9fRU5DT0RFUl9TSU5LX1BBRCAoYmVuYykpOwotICB9Ci0KLSAgdGNhcHMgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAoR1NUX0FVRElPX0VOQ09ERVJfU1JDX1BBRCAoYmVuYykpOwotICBpbnRlcnNlY3QgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKHBlZXJjYXBzLCB0Y2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmICh0Y2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChwZWVyY2Fwcyk7Ci0KLSAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChpbnRlcnNlY3QpKQotICAgIHJldHVybiBpbnRlcnNlY3Q7Ci0KLSAgYWxsb3dfbXVsdGlzdHJlYW0gPSBGQUxTRTsKLSAgZm9yIChpID0gMDsgaSA8IGdzdF9jYXBzX2dldF9zaXplIChpbnRlcnNlY3QpOyBpKyspIHsKLSAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChpbnRlcnNlY3QsIGkpOwotICAgIGdib29sZWFuIG11bHRpc3RyZWFtOwotICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzLCAibXVsdGlzdHJlYW0iLCAmbXVsdGlzdHJlYW0pKSB7Ci0gICAgICBpZiAobXVsdGlzdHJlYW0pIHsKLSAgICAgICAgYWxsb3dfbXVsdGlzdHJlYW0gPSBUUlVFOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICBhbGxvd19tdWx0aXN0cmVhbSA9IFRSVUU7Ci0gICAgfQotICB9Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKGludGVyc2VjdCk7Ci0KLSAgY2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChHU1RfQVVESU9fRU5DT0RFUl9TSU5LX1BBRCAoYmVuYykpOwotICBjYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoY2Fwcyk7Ci0gIGlmICghYWxsb3dfbXVsdGlzdHJlYW0pIHsKLSAgICBHVmFsdWUgcmFuZ2UgPSB7IDAgfTsKLSAgICBnX3ZhbHVlX2luaXQgKCZyYW5nZSwgR1NUX1RZUEVfSU5UX1JBTkdFKTsKLSAgICBnc3RfdmFsdWVfc2V0X2ludF9yYW5nZSAoJnJhbmdlLCAxLCAyKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpOyBpKyspIHsKLSAgICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIGkpOwotICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHMsICJjaGFubmVscyIsICZyYW5nZSk7Ci0gICAgfQotICAgIGdfdmFsdWVfdW5zZXQgKCZyYW5nZSk7Ci0gIH0KLQotICBpZiAoZmlsdGVyKSB7Ci0gICAgR3N0Q2FwcyAqdG1wID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGNhcHMsIGZpbHRlciwKLSAgICAgICAgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKLSAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gICAgY2FwcyA9IHRtcDsKLSAgfQotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgIlJldHVybmluZyBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0gIHJldHVybiBjYXBzOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X29wdXNfZW5jX2VuY29kZSAoR3N0T3B1c0VuYyAqIGVuYywgR3N0QnVmZmVyICogYnVmKQotewotICBndWludDggKmJkYXRhID0gTlVMTCwgKmRhdGEsICptZGF0YSA9IE5VTEw7Ci0gIGdzaXplIGJzaXplLCBzaXplOwotICBnc2l6ZSBieXRlczsKLSAgZ2ludCByZXQgPSBHU1RfRkxPV19PSzsKLSAgR3N0TWFwSW5mbyBtYXA7Ci0gIEdzdE1hcEluZm8gb21hcDsKLSAgZ2ludCBvdXRzaXplOwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAgR3N0U2VnbWVudCAqc2VnbWVudDsKLSAgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uOwotCi0gIGd1aW50IG1heF9wYXlsb2FkX3NpemU7Ci0gIGdpbnQgZnJhbWVfc2FtcGxlczsKLQotICBnX211dGV4X2xvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotCi0gIGJ5dGVzID0gZW5jLT5mcmFtZV9zYW1wbGVzICogZW5jLT5uX2NoYW5uZWxzICogMjsKLSAgbWF4X3BheWxvYWRfc2l6ZSA9IGVuYy0+bWF4X3BheWxvYWRfc2l6ZTsKLSAgZnJhbWVfc2FtcGxlcyA9IGVuYy0+ZnJhbWVfc2FtcGxlczsKLQotICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0KLSAgaWYgKEdfTElLRUxZIChidWYpKSB7Ci0gICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgICBiZGF0YSA9IG1hcC5kYXRhOwotICAgIGJzaXplID0gbWFwLnNpemU7Ci0KLSAgICBpZiAoR19VTkxJS0VMWSAoYnNpemUgJSBieXRlcykpIHsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgImRyYWluaW5nOyBhZGRpbmcgc2lsZW5jZSBzYW1wbGVzIik7Ci0KLSAgICAgIC8qIElmIGVuY29kaW5nIHBhcnQgb2YgYSBmcmFtZSwgYW5kIHdlIGhhdmUgbm8gc2V0IHN0b3AgdGltZSBvbgotICAgICAgICogdGhlIG91dHB1dCBzZWdtZW50LCB3ZSB1cGRhdGUgdGhlIHNlZ21lbnQgc3RvcCB0aW1lIHRvIHJlZmxlY3QKLSAgICAgICAqIHRoZSBsYXN0IHNhbXBsZS4gVGhpcyB3aWxsIGxldCBvZ2dtdXggc2V0IHRoZSBsYXN0IHBhZ2UncwotICAgICAgICogZ3JhbnBvcyB0byB0ZWxsIGEgZGVjb2RlciB0aGUgZHVtbXkgc2FtcGxlcyBzaG91bGQgYmUgY2xpcHBlZC4KLSAgICAgICAqLwotICAgICAgc2VnbWVudCA9ICZHU1RfQVVESU9fRU5DT0RFUl9PVVRQVVRfU0VHTUVOVCAoZW5jKTsKLSAgICAgIGlmICghR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHNlZ21lbnQtPnN0b3ApKSB7Ci0gICAgICAgIGludCBpbnB1dF9zYW1wbGVzID0gYnNpemUgLyAoZW5jLT5uX2NoYW5uZWxzICogMik7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywKLSAgICAgICAgICAgICJObyBzdG9wIHRpbWUgYW5kIHBhcnRpYWwgZnJhbWUsIHVwZGF0aW5nIHNlZ21lbnQiKTsKLSAgICAgICAgZHVyYXRpb24gPQotICAgICAgICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChlbmMtPmVuY29kZWRfc2FtcGxlcyArIGlucHV0X3NhbXBsZXMsCi0gICAgICAgICAgICBHU1RfU0VDT05ELCBlbmMtPnNhbXBsZV9yYXRlKTsKLSAgICAgICAgc2VnbWVudC0+c3RvcCA9IHNlZ21lbnQtPnN0YXJ0ICsgZHVyYXRpb247Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgIm5ldyBvdXRwdXQgc2VnbWVudCAlIiBHU1RfU0VHTUVOVF9GT1JNQVQsCi0gICAgICAgICAgICBzZWdtZW50KTsKLSAgICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQVVESU9fRU5DT0RFUl9TUkNfUEFEIChlbmMpLAotICAgICAgICAgICAgZ3N0X2V2ZW50X25ld19zZWdtZW50IChzZWdtZW50KSk7Ci0gICAgICB9Ci0KLSAgICAgIHNpemUgPSAoKGJzaXplIC8gYnl0ZXMpICsgMSkgKiBieXRlczsKLSAgICAgIG1kYXRhID0gZ19tYWxsb2MwIChzaXplKTsKLSAgICAgIG1lbWNweSAobWRhdGEsIGJkYXRhLCBic2l6ZSk7Ci0gICAgICBkYXRhID0gbWRhdGE7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGRhdGEgPSBiZGF0YTsKLSAgICAgIHNpemUgPSBic2l6ZTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAibm90aGluZyB0byBkcmFpbiIpOwotICAgIGdvdG8gZG9uZTsKLSAgfQotCi0gIGdfYXNzZXJ0IChzaXplID09IGJ5dGVzKTsKLQotICBvdXRidWYgPQotICAgICAgZ3N0X2F1ZGlvX2VuY29kZXJfYWxsb2NhdGVfb3V0cHV0X2J1ZmZlciAoR1NUX0FVRElPX0VOQ09ERVIgKGVuYyksCi0gICAgICBtYXhfcGF5bG9hZF9zaXplICogZW5jLT5uX2NoYW5uZWxzKTsKLSAgaWYgKCFvdXRidWYpCi0gICAgZ290byBkb25lOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgImVuY29kaW5nICVkIHNhbXBsZXMgKCVkIGJ5dGVzKSIsCi0gICAgICBmcmFtZV9zYW1wbGVzLCAoaW50KSBieXRlcyk7Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm9tYXAsIEdTVF9NQVBfV1JJVEUpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgImVuY29kaW5nICVkIHNhbXBsZXMgKCVkIGJ5dGVzKSIsCi0gICAgICBmcmFtZV9zYW1wbGVzLCAoaW50KSBieXRlcyk7Ci0KLSAgb3V0c2l6ZSA9Ci0gICAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZSAoZW5jLT5zdGF0ZSwgKGNvbnN0IGdpbnQxNiAqKSBkYXRhLAotICAgICAgZnJhbWVfc2FtcGxlcywgb21hcC5kYXRhLCBtYXhfcGF5bG9hZF9zaXplICogZW5jLT5uX2NoYW5uZWxzKTsKLQotICBnc3RfYnVmZmVyX3VubWFwIChvdXRidWYsICZvbWFwKTsKLQotICBpZiAob3V0c2l6ZSA8IDApIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChlbmMsICJFbmNvZGluZyBmYWlsZWQ6ICVkIiwgb3V0c2l6ZSk7Ci0gICAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7Ci0gICAgZ290byBkb25lOwotICB9IGVsc2UgaWYgKG91dHNpemUgPiBtYXhfcGF5bG9hZF9zaXplKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsCi0gICAgICAgICJFbmNvZGVkIHNpemUgJWQgaXMgaGlnaGVyIHRoYW4gbWF4IHBheWxvYWQgc2l6ZSAoJWQgYnl0ZXMpIiwKLSAgICAgICAgb3V0c2l6ZSwgbWF4X3BheWxvYWRfc2l6ZSk7Ci0gICAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7Ci0gICAgZ290byBkb25lOwotICB9Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZW5jLCAiT3V0cHV0IHBhY2tldCBpcyAldSBieXRlcyIsIG91dHNpemUpOwotICBnc3RfYnVmZmVyX3NldF9zaXplIChvdXRidWYsIG91dHNpemUpOwotCi0gIHJldCA9Ci0gICAgICBnc3RfYXVkaW9fZW5jb2Rlcl9maW5pc2hfZnJhbWUgKEdTVF9BVURJT19FTkNPREVSIChlbmMpLCBvdXRidWYsCi0gICAgICBmcmFtZV9zYW1wbGVzKTsKLSAgZW5jLT5lbmNvZGVkX3NhbXBsZXMgKz0gZnJhbWVfc2FtcGxlczsKLQotZG9uZToKLQotICBpZiAoYmRhdGEpCi0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKLQotICBpZiAobWRhdGEpCi0gICAgZ19mcmVlIChtZGF0YSk7Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9vcHVzX2VuY19oYW5kbGVfZnJhbWUgKEdzdEF1ZGlvRW5jb2RlciAqIGJlbmMsIEdzdEJ1ZmZlciAqIGJ1ZikKLXsKLSAgR3N0T3B1c0VuYyAqZW5jOwotICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwotCi0gIGVuYyA9IEdTVF9PUFVTX0VOQyAoYmVuYyk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKGVuYywgImhhbmRsZV9mcmFtZSIpOwotICBHU1RfREVCVUdfT0JKRUNUIChlbmMsICJyZWNlaXZlZCBidWZmZXIgJXAgb2YgJSIgR19HU0laRV9GT1JNQVQgIiBieXRlcyIsIGJ1ZiwKLSAgICAgIGJ1ZiA/IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZikgOiAwKTsKLQotICByZXQgPSBnc3Rfb3B1c19lbmNfZW5jb2RlIChlbmMsIGJ1Zik7Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9vcHVzX2VuY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLAotICAgIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgR3N0T3B1c0VuYyAqZW5jOwotCi0gIGVuYyA9IEdTVF9PUFVTX0VOQyAob2JqZWN0KTsKLQotICBnX211dGV4X2xvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9BVURJTzoKLSAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLAotICAgICAgICAgIGVuYy0+YXVkaW9fdHlwZSA9PSBPUFVTX0FQUExJQ0FUSU9OX0FVRElPID8gVFJVRSA6IEZBTFNFKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9BVURJT19UWVBFOgotICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGVuYy0+YXVkaW9fdHlwZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQklUUkFURToKLSAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIGVuYy0+Yml0cmF0ZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQkFORFdJRFRIOgotICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGVuYy0+YmFuZHdpZHRoKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GUkFNRV9TSVpFOgotICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGVuYy0+ZnJhbWVfc2l6ZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ0JSOgotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsCi0gICAgICAgICAgImNiciBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkOyB1c2UgYml0cmF0ZS10eXBlIGluc3RlYWQiKTsKLSAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBlbmMtPmJpdHJhdGVfdHlwZSA9PSBCSVRSQVRFX1RZUEVfQ0JSKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DT05TVFJBSU5FRF9WQlI6Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywKLSAgICAgICAgICAiY29uc3RyYWluZWQtdmJyIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBiaXRyYXRlLXR5cGUgaW5zdGVhZCIpOwotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsCi0gICAgICAgICAgZW5jLT5iaXRyYXRlX3R5cGUgPT0gQklUUkFURV9UWVBFX0NPTlNUUkFJTkVEX1ZCUik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQklUUkFURV9UWVBFOgotICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGVuYy0+Yml0cmF0ZV90eXBlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DT01QTEVYSVRZOgotICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZW5jLT5jb21wbGV4aXR5KTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9JTkJBTkRfRkVDOgotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGVuYy0+aW5iYW5kX2ZlYyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRFRYOgotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIGVuYy0+ZHR4KTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9QQUNLRVRfTE9TU19QRVJDRU5UOgotICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgZW5jLT5wYWNrZXRfbG9zc19wZXJjZW50YWdlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9NQVhfUEFZTE9BRF9TSVpFOgotICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGVuYy0+bWF4X3BheWxvYWRfc2l6ZSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgZ19tdXRleF91bmxvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X29wdXNfZW5jX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBHc3RPcHVzRW5jICplbmM7Ci0KLSAgZW5jID0gR1NUX09QVVNfRU5DIChvYmplY3QpOwotCi0jZGVmaW5lIEdTVF9PUFVTX1VQREFURV9QUk9QRVJUWShwcm9wLHR5cGUsY3RsKSBkbyB7IFwKLSAgZ19tdXRleF9sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsgXAotICBlbmMtPnByb3AgPSBnX3ZhbHVlX2dldF8jI3R5cGUgKHZhbHVlKTsgXAotICBpZiAoZW5jLT5zdGF0ZSkgeyBcCi0gICAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwgT1BVU19TRVRfIyNjdGwgKGVuYy0+cHJvcCkpOyBcCi0gIH0gXAotICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7IFwKLX0gd2hpbGUoMCkKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfQVVESU86Ci0gICAgICBlbmMtPmF1ZGlvX3R5cGUgPQotICAgICAgICAgIGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKSA/IE9QVVNfQVBQTElDQVRJT05fQVVESU8gOgotICAgICAgICAgIE9QVVNfQVBQTElDQVRJT05fVk9JUDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9BVURJT19UWVBFOgotICAgICAgZW5jLT5hdWRpb190eXBlID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0JJVFJBVEU6Ci0gICAgICBHU1RfT1BVU19VUERBVEVfUFJPUEVSVFkgKGJpdHJhdGUsIGludCwgQklUUkFURSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQkFORFdJRFRIOgotICAgICAgR1NUX09QVVNfVVBEQVRFX1BST1BFUlRZIChiYW5kd2lkdGgsIGVudW0sIEJBTkRXSURUSCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRlJBTUVfU0laRToKLSAgICAgIGdfbXV0ZXhfbG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0gICAgICBlbmMtPmZyYW1lX3NpemUgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7Ci0gICAgICBlbmMtPmZyYW1lX3NhbXBsZXMgPSBnc3Rfb3B1c19lbmNfZ2V0X2ZyYW1lX3NhbXBsZXMgKGVuYyk7Ci0gICAgICBnc3Rfb3B1c19lbmNfc2V0dXBfYmFzZV9jbGFzcyAoZW5jLCBHU1RfQVVESU9fRU5DT0RFUiAoZW5jKSk7Ci0gICAgICBnX211dGV4X3VubG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfQ0JSOgotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsCi0gICAgICAgICAgImNiciBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkOyB1c2UgYml0cmF0ZS10eXBlIGluc3RlYWQiKTsKLSAgICAgIGdfd2FybmluZyAoImNiciBwcm9wZXJ0eSBpcyBkZXByZWNhdGVkOyB1c2UgYml0cmF0ZS10eXBlIGluc3RlYWQiKTsKLSAgICAgIGdfbXV0ZXhfbG9jayAoJmVuYy0+cHJvcGVydHlfbG9jayk7Ci0gICAgICBlbmMtPmJpdHJhdGVfdHlwZSA9IEJJVFJBVEVfVFlQRV9DQlI7Ci0gICAgICBpZiAoZW5jLT5zdGF0ZSkgewotICAgICAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLCBPUFVTX1NFVF9WQlIgKEZBTFNFKSk7Ci0gICAgICAgIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsCi0gICAgICAgICAgICBPUFVTX1NFVF9WQlJfQ09OU1RSQUlOVCAoRkFMU0UpLCAwKTsKLSAgICAgIH0KLSAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DT05TVFJBSU5FRF9WQlI6Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywKLSAgICAgICAgICAiY29uc3RyYWluZWQtdmJyIHByb3BlcnR5IGlzIGRlcHJlY2F0ZWQ7IHVzZSBiaXRyYXRlLXR5cGUgaW5zdGVhZCIpOwotICAgICAgZ193YXJuaW5nCi0gICAgICAgICAgKCJjb25zdHJhaW5lZC12YnIgcHJvcGVydHkgaXMgZGVwcmVjYXRlZDsgdXNlIGJpdHJhdGUtdHlwZSBpbnN0ZWFkIik7Ci0gICAgICBnX211dGV4X2xvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgICAgZW5jLT5iaXRyYXRlX3R5cGUgPSBCSVRSQVRFX1RZUEVfQ09OU1RSQUlORURfVkJSOwotICAgICAgaWYgKGVuYy0+c3RhdGUpIHsKLSAgICAgICAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwgT1BVU19TRVRfVkJSIChUUlVFKSk7Ci0gICAgICAgIG9wdXNfbXVsdGlzdHJlYW1fZW5jb2Rlcl9jdGwgKGVuYy0+c3RhdGUsCi0gICAgICAgICAgICBPUFVTX1NFVF9WQlJfQ09OU1RSQUlOVCAoVFJVRSksIDApOwotICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0JJVFJBVEVfVFlQRToKLSAgICAgIC8qIHRoaXMgb25lIGhhcyBhbiBvcHBvc2l0ZSBtZWFuaW5nIHRvIHRoZSBvcHVzIGN0bC4uLiAqLwotICAgICAgZ19tdXRleF9sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLSAgICAgIGVuYy0+Yml0cmF0ZV90eXBlID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOwotICAgICAgaWYgKGVuYy0+c3RhdGUpIHsKLSAgICAgICAgb3B1c19tdWx0aXN0cmVhbV9lbmNvZGVyX2N0bCAoZW5jLT5zdGF0ZSwKLSAgICAgICAgICAgIE9QVVNfU0VUX1ZCUiAoZW5jLT5iaXRyYXRlX3R5cGUgIT0gQklUUkFURV9UWVBFX0NCUikpOwotICAgICAgICBvcHVzX211bHRpc3RyZWFtX2VuY29kZXJfY3RsIChlbmMtPnN0YXRlLAotICAgICAgICAgICAgT1BVU19TRVRfVkJSX0NPTlNUUkFJTlQgKGVuYy0+Yml0cmF0ZV90eXBlID09Ci0gICAgICAgICAgICAgICAgQklUUkFURV9UWVBFX0NPTlNUUkFJTkVEX1ZCUiksIDApOwotICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKCZlbmMtPnByb3BlcnR5X2xvY2spOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTVBMRVhJVFk6Ci0gICAgICBHU1RfT1BVU19VUERBVEVfUFJPUEVSVFkgKGNvbXBsZXhpdHksIGludCwgQ09NUExFWElUWSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfSU5CQU5EX0ZFQzoKLSAgICAgIEdTVF9PUFVTX1VQREFURV9QUk9QRVJUWSAoaW5iYW5kX2ZlYywgYm9vbGVhbiwgSU5CQU5EX0ZFQyk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRFRYOgotICAgICAgR1NUX09QVVNfVVBEQVRFX1BST1BFUlRZIChkdHgsIGJvb2xlYW4sIERUWCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfUEFDS0VUX0xPU1NfUEVSQ0VOVDoKLSAgICAgIEdTVF9PUFVTX1VQREFURV9QUk9QRVJUWSAocGFja2V0X2xvc3NfcGVyY2VudGFnZSwgaW50LCBQQUNLRVRfTE9TU19QRVJDKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9NQVhfUEFZTE9BRF9TSVpFOgotICAgICAgZ19tdXRleF9sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLSAgICAgIGVuYy0+bWF4X3BheWxvYWRfc2l6ZSA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZW5jLT5wcm9wZXJ0eV9sb2NrKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotI3VuZGVmIEdTVF9PUFVTX1VQREFURV9QUk9QRVJUWQotCi19CmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzZW5jLmggYi9leHQvb3B1cy9nc3RvcHVzZW5jLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzZWFhYzguLjAwMDAwMDAKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2VuYy5oCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLS8qIEdTdHJlYW1lciBPcHVzIEVuY29kZXIKLSAqIENvcHlyaWdodCAoQykgPDE5OTk+IEVyaWsgV2FsdGhpbnNlbiA8b21lZ2FAY3NlLm9naS5lZHU+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDA4PiBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW4uZHJvZWdlQGNvbGxhYm9yYS5jby51az4KLSAqIENvcHlyaWdodCAoQykgPDIwMTEtMjAxMj4gVmluY2VudCBQZW5xdWVyYydoIDx2aW5jZW50LnBlbnF1ZXJjaEBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotCi0jaWZuZGVmIF9fR1NUX09QVVNfRU5DX0hfXwotI2RlZmluZSBfX0dTVF9PUFVTX0VOQ19IX18KLQotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2VuY29kZXIuaD4KLQotI2luY2x1ZGUgPG9wdXNfbXVsdGlzdHJlYW0uaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIEdTVF9UWVBFX09QVVNfRU5DIFwKLSAgKGdzdF9vcHVzX2VuY19nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfT1BVU19FTkMob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9PUFVTX0VOQyxHc3RPcHVzRW5jKSkKLSNkZWZpbmUgR1NUX09QVVNfRU5DX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX09QVVNfRU5DLEdzdE9wdXNFbmNDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19PUFVTX0VOQyhvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX09QVVNfRU5DKSkKLSNkZWZpbmUgR1NUX0lTX09QVVNfRU5DX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX09QVVNfRU5DKSkKLQotI2RlZmluZSBNQVhfRlJBTUVfU0laRSAyMDAwKjIKLSNkZWZpbmUgTUFYX0ZSQU1FX0JZVEVTIDIwMDAKLQotdHlwZWRlZiBlbnVtCi17Ci0gIEJJVFJBVEVfVFlQRV9DQlIsCi0gIEJJVFJBVEVfVFlQRV9WQlIsCi0gIEJJVFJBVEVfVFlQRV9DT05TVFJBSU5FRF9WQlIsCi19IEdzdE9wdXNFbmNCaXRyYXRlVHlwZTsKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdE9wdXNFbmMgR3N0T3B1c0VuYzsKLXR5cGVkZWYgc3RydWN0IF9Hc3RPcHVzRW5jQ2xhc3MgR3N0T3B1c0VuY0NsYXNzOwotCi1zdHJ1Y3QgX0dzdE9wdXNFbmMgewotICBHc3RBdWRpb0VuY29kZXIgICAgICAgZWxlbWVudDsKLQotICBPcHVzTVNFbmNvZGVyICAgICAgICAqc3RhdGU7Ci0KLSAgLyogTG9ja3MgdGhvc2UgcHJvcGVydGllcyB3aGljaCBtYXkgYmUgY2hhbmdlZCBhdCBwbGF5IHRpbWUgKi8KLSAgR011dGV4ICAgICAgICAgICAgICAgIHByb3BlcnR5X2xvY2s7Ci0KLSAgLyogcHJvcGVydGllcyAqLwotICBnaW50ICAgICAgICAgICAgICAgICAgYXVkaW9fdHlwZTsKLSAgZ2ludCAgICAgICAgICAgICAgICAgIGJpdHJhdGU7Ci0gIGdpbnQgICAgICAgICAgICAgICAgICBiYW5kd2lkdGg7Ci0gIGdpbnQgICAgICAgICAgICAgICAgICBmcmFtZV9zaXplOwotICBHc3RPcHVzRW5jQml0cmF0ZVR5cGUgYml0cmF0ZV90eXBlOwotICBnaW50ICAgICAgICAgICAgICAgICAgY29tcGxleGl0eTsKLSAgZ2Jvb2xlYW4gICAgICAgICAgICAgIGluYmFuZF9mZWM7Ci0gIGdib29sZWFuICAgICAgICAgICAgICBkdHg7Ci0gIGdpbnQgICAgICAgICAgICAgICAgICBwYWNrZXRfbG9zc19wZXJjZW50YWdlOwotICBndWludCAgICAgICAgICAgICAgICAgbWF4X3BheWxvYWRfc2l6ZTsKLQotICBnaW50ICAgICAgICAgICAgICAgICAgZnJhbWVfc2FtcGxlczsKLSAgZ2ludCAgICAgICAgICAgICAgICAgIG5fY2hhbm5lbHM7Ci0gIGdpbnQgICAgICAgICAgICAgICAgICBzYW1wbGVfcmF0ZTsKLQotICBndWludDY0ICAgICAgICAgICAgICAgZW5jb2RlZF9zYW1wbGVzOwotCi0gIGd1aW50OCAgICAgICAgICAgICAgICBjaGFubmVsX21hcHBpbmdfZmFtaWx5OwotICBndWludDggICAgICAgICAgICAgICAgZW5jb2RpbmdfY2hhbm5lbF9tYXBwaW5nWzI1Nl07Ci0gIGd1aW50OCAgICAgICAgICAgICAgICBkZWNvZGluZ19jaGFubmVsX21hcHBpbmdbMjU2XTsKLSAgZ3VpbnQ4ICAgICAgICAgICAgICAgIG5fc3RlcmVvX3N0cmVhbXM7Ci19OwotCi1zdHJ1Y3QgX0dzdE9wdXNFbmNDbGFzcyB7Ci0gIEdzdEF1ZGlvRW5jb2RlckNsYXNzIHBhcmVudF9jbGFzczsKLQotICAvKiBzaWduYWxzICovCi0gIHZvaWQgKCpmcmFtZV9lbmNvZGVkKSAoR3N0RWxlbWVudCAqZWxlbWVudCk7Ci19OwotCi1HVHlwZSBnc3Rfb3B1c19lbmNfZ2V0X3R5cGUgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfT1BVU19FTkNfSF9fICovCmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzaGVhZGVyLmMgYi9leHQvb3B1cy9nc3RvcHVzaGVhZGVyLmMKaW5kZXggMTUyMWMxYy4uZGNjODU4OSAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5jCisrKyBiL2V4dC9vcHVzL2dzdG9wdXNoZWFkZXIuYwpAQCAtMjYsMjE5ICsyNiw2IEBACiAjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Ynl0ZXdyaXRlci5oPgogI2luY2x1ZGUgImdzdG9wdXNoZWFkZXIuaCIKIAotc3RhdGljIEdzdEJ1ZmZlciAqCi1nc3Rfb3B1c19lbmNfY3JlYXRlX2lkX2J1ZmZlciAoZ2ludCBuY2hhbm5lbHMsIGdpbnQgbl9zdGVyZW9fc3RyZWFtcywKLSAgICBnaW50IHNhbXBsZV9yYXRlLCBndWludDggY2hhbm5lbF9tYXBwaW5nX2ZhbWlseSwKLSAgICBjb25zdCBndWludDggKiBjaGFubmVsX21hcHBpbmcpCi17Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyOwotICBHc3RCeXRlV3JpdGVyIGJ3OwotICBnYm9vbGVhbiBoZGwgPSBUUlVFOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChuY2hhbm5lbHMgPiAwICYmIG5jaGFubmVscyA8IDI1NiwgTlVMTCk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChuX3N0ZXJlb19zdHJlYW1zID49IDAsIE5VTEwpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAobl9zdGVyZW9fc3RyZWFtcyA8PSBuY2hhbm5lbHMgLSBuX3N0ZXJlb19zdHJlYW1zLCBOVUxMKTsKLQotICBnc3RfYnl0ZV93cml0ZXJfaW5pdCAoJmJ3KTsKLQotICAvKiBTZWUgaHR0cDovL3dpa2kueGlwaC5vcmcvT2dnT3B1cyAqLwotICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF9kYXRhICgmYncsIChjb25zdCBndWludDggKikgIk9wdXNIZWFkIiwgOCk7Ci0gIGhkbCAmPSBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4ICgmYncsIDB4MDEpOyAvKiB2ZXJzaW9uIG51bWJlciAqLwotICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50OCAoJmJ3LCBuY2hhbm5lbHMpOwotICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfbGUgKCZidywgMCk7ICAgICAgICAvKiBwcmUtc2tpcCAqLwotICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfbGUgKCZidywgc2FtcGxlX3JhdGUpOwotICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfbGUgKCZidywgMCk7ICAgICAgICAvKiBvdXRwdXQgZ2FpbiAqLwotICBoZGwgJj0gZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50OCAoJmJ3LCBjaGFubmVsX21hcHBpbmdfZmFtaWx5KTsKLSAgaWYgKGNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPiAwKSB7Ci0gICAgaGRsICY9IGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDggKCZidywgbmNoYW5uZWxzIC0gbl9zdGVyZW9fc3RyZWFtcyk7Ci0gICAgaGRsICY9IGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDggKCZidywgbl9zdGVyZW9fc3RyZWFtcyk7Ci0gICAgaGRsICY9IGdzdF9ieXRlX3dyaXRlcl9wdXRfZGF0YSAoJmJ3LCBjaGFubmVsX21hcHBpbmcsIG5jaGFubmVscyk7Ci0gIH0KLQotICBpZiAoIWhkbCkKLSAgICBHU1RfV0FSTklORyAoIkVycm9yIGNyZWF0aW5nIGhlYWRlciIpOwotCi0gIGJ1ZmZlciA9IGdzdF9ieXRlX3dyaXRlcl9yZXNldF9hbmRfZ2V0X2J1ZmZlciAoJmJ3KTsKLQotICBHU1RfQlVGRkVSX09GRlNFVCAoYnVmZmVyKSA9IDA7Ci0gIEdTVF9CVUZGRVJfT0ZGU0VUX0VORCAoYnVmZmVyKSA9IDA7Ci0KLSAgcmV0dXJuIGJ1ZmZlcjsKLX0KLQotc3RhdGljIEdzdEJ1ZmZlciAqCi1nc3Rfb3B1c19lbmNfY3JlYXRlX21ldGFkYXRhX2J1ZmZlciAoY29uc3QgR3N0VGFnTGlzdCAqIHRhZ3MpCi17Ci0gIEdzdFRhZ0xpc3QgKmVtcHR5X3RhZ3MgPSBOVUxMOwotICBHc3RCdWZmZXIgKmNvbW1lbnRzID0gTlVMTDsKLQotICBHU1RfREVCVUcgKCJ0YWdzID0gJSIgR1NUX1BUUl9GT1JNQVQsIHRhZ3MpOwotCi0gIGlmICh0YWdzID09IE5VTEwpIHsKLSAgICAvKiBGSVhNRTogYmV0dGVyIGZpeCBjaGFpbiBvZiBjYWxsZXJzIHRvIG5vdCB3cml0ZSBtZXRhZGF0YSBhdCBhbGwsCi0gICAgICogaWYgdGhlcmUgaXMgbm9uZSAqLwotICAgIGVtcHR5X3RhZ3MgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotICAgIHRhZ3MgPSBlbXB0eV90YWdzOwotICB9Ci0gIGNvbW1lbnRzID0KLSAgICAgIGdzdF90YWdfbGlzdF90b192b3JiaXNjb21tZW50X2J1ZmZlciAodGFncywgKGNvbnN0IGd1aW50OCAqKSAiT3B1c1RhZ3MiLAotICAgICAgOCwgIkVuY29kZWQgd2l0aCBHU3RyZWFtZXIgT3B1c2VuYyIpOwotCi0gIEdTVF9CVUZGRVJfT0ZGU0VUIChjb21tZW50cykgPSAwOwotICBHU1RfQlVGRkVSX09GRlNFVF9FTkQgKGNvbW1lbnRzKSA9IDA7Ci0KLSAgaWYgKGVtcHR5X3RhZ3MpCi0gICAgZ3N0X3RhZ19saXN0X3VucmVmIChlbXB0eV90YWdzKTsKLQotICByZXR1cm4gY29tbWVudHM7Ci19Ci0KLS8qCi0gKiAocmVhbGx5IHJlYWxseSkgRklYTUU6IG1vdmUgaW50byBjb3JlIChkaXhpdCB0cG0pCi0gKi8KLS8qCi0gKiBfZ3N0X2NhcHNfc2V0X2J1ZmZlcl9hcnJheToKLSAqIEBjYXBzOiAodHJhbnNmZXIgZnVsbCk6IGEgI0dzdENhcHMKLSAqIEBmaWVsZDogZmllbGQgaW4gY2FwcyB0byBzZXQKLSAqIEBidWY6IGhlYWRlciBidWZmZXJzCi0gKgotICogQWRkcyBnaXZlbiBidWZmZXJzIHRvIGFuIGFycmF5IG9mIGJ1ZmZlcnMgc2V0IGFzIHRoZSBnaXZlbiBAZmllbGQKLSAqIG9uIHRoZSBnaXZlbiBAY2Fwcy4gIExpc3Qgb2YgYnVmZmVyIGFyZ3VtZW50cyBtdXN0IGJlIE5VTEwtdGVybWluYXRlZC4KLSAqCi0gKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGlucHV0IGNhcHMgd2l0aCBhIHN0cmVhbWhlYWRlciBmaWVsZCBhZGRlZCwgb3IgTlVMTAotICogICAgIGlmIHNvbWUgZXJyb3Igb2NjdXJyZWQKLSAqLwotc3RhdGljIEdzdENhcHMgKgotX2dzdF9jYXBzX3NldF9idWZmZXJfYXJyYXkgKEdzdENhcHMgKiBjYXBzLCBjb25zdCBnY2hhciAqIGZpZWxkLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZiwgLi4uKQotewotICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IE5VTEw7Ci0gIHZhX2xpc3QgdmE7Ci0gIEdWYWx1ZSBhcnJheSA9IHsgMCB9OwotICBHVmFsdWUgdmFsdWUgPSB7IDAgfTsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoY2FwcyAhPSBOVUxMLCBOVUxMKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9jYXBzX2lzX2ZpeGVkIChjYXBzKSwgTlVMTCk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmaWVsZCAhPSBOVUxMLCBOVUxMKTsKLQotICBjYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoY2Fwcyk7Ci0gIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotCi0gIGdfdmFsdWVfaW5pdCAoJmFycmF5LCBHU1RfVFlQRV9BUlJBWSk7Ci0KLSAgdmFfc3RhcnQgKHZhLCBidWYpOwotICAvKiBwdXQgYnVmZmVycyBpbiBhIGZpeGVkIGxpc3QgKi8KLSAgd2hpbGUgKGJ1ZikgewotICAgIGdfYXNzZXJ0IChnc3RfYnVmZmVyX2lzX3dyaXRhYmxlIChidWYpKTsKLQotICAgIC8qIG1hcmsgYnVmZmVyICovCi0gICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoYnVmLCBHU1RfQlVGRkVSX0ZMQUdfSEVBREVSKTsKLQotICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlLCBHU1RfVFlQRV9CVUZGRVIpOwotICAgIGJ1ZiA9IGdzdF9idWZmZXJfY29weSAoYnVmKTsKLSAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19IRUFERVIpOwotICAgIGdzdF92YWx1ZV9zZXRfYnVmZmVyICgmdmFsdWUsIGJ1Zik7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSAgICBnc3RfdmFsdWVfYXJyYXlfYXBwZW5kX3ZhbHVlICgmYXJyYXksICZ2YWx1ZSk7Ci0gICAgZ192YWx1ZV91bnNldCAoJnZhbHVlKTsKLQotICAgIGJ1ZiA9IHZhX2FyZyAodmEsIEdzdEJ1ZmZlciAqKTsKLSAgfQotICB2YV9lbmQgKHZhKTsKLQotICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3RydWN0dXJlLCBmaWVsZCwgJmFycmF5KTsKLSAgZ192YWx1ZV91bnNldCAoJmFycmF5KTsKLQotICByZXR1cm4gY2FwczsKLX0KLQotdm9pZAotZ3N0X29wdXNfaGVhZGVyX2NyZWF0ZV9jYXBzX2Zyb21faGVhZGVycyAoR3N0Q2FwcyAqKiBjYXBzLCBHU0xpc3QgKiogaGVhZGVycywKLSAgICBHc3RCdWZmZXIgKiBidWYxLCBHc3RCdWZmZXIgKiBidWYyKQotewotICBpbnQgbl9zdHJlYW1zLCBmYW1pbHk7Ci0gIGdpbnQgY2hhbm5lbHMsIHJhdGU7Ci0gIGdib29sZWFuIG11bHRpc3RyZWFtOwotICBHc3RNYXBJbmZvIG1hcDsKLSAgZ3VpbnQ4ICpkYXRhOwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKGNhcHMpOwotICBnX3JldHVybl9pZl9mYWlsICghaGVhZGVycyB8fCAhKmhlYWRlcnMpOwotICBnX3JldHVybl9pZl9mYWlsIChnc3RfYnVmZmVyX2dldF9zaXplIChidWYxKSA+PSAxOSk7Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZjEsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gIGRhdGEgPSBtYXAuZGF0YTsKLQotICBjaGFubmVscyA9IGRhdGFbOV07Ci0gIHJhdGUgPSBHU1RfUkVBRF9VSU5UMzJfTEUgKGRhdGEgKyAxMik7Ci0KLSAgLyogd29yayBvdXQgdGhlIG51bWJlciBvZiBzdHJlYW1zICovCi0gIGZhbWlseSA9IGRhdGFbMThdOwotICBpZiAoZmFtaWx5ID09IDApIHsKLSAgICBuX3N0cmVhbXMgPSAxOwotICB9IGVsc2UgewotICAgIC8qIG9ubHkgaW5jbHVkZWQgaW4gdGhlIGhlYWRlciBmb3IgZmFtaWx5ID4gMCAqLwotICAgIGlmIChtYXAuc2l6ZSA+PSAyMCkKLSAgICAgIG5fc3RyZWFtcyA9IGRhdGFbMTldOwotICAgIGVsc2UgewotICAgICAgZ193YXJuaW5nICgiZmFtaWx5ID4gMCBidXQgaGVhZGVyIGJ1ZmZlciBzaXplIDwgMjAiKTsKLSAgICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZjEsICZtYXApOwotICAgICAgcmV0dXJuOwotICAgIH0KLSAgfQotCi0gIC8qIFRPRE86IHNob3VsZCBwcm9iYWJseSBhbHNvIHB1dCB0aGUgY2hhbm5lbCBtYXBwaW5nIGludG8gdGhlIGNhcHMgdG9vIG9uY2UKLSAgICogd2UgYWN0dWFsbHkgc3VwcG9ydCBtdWx0aSBjaGFubmVsLCBhbmQgcHJlLXNraXAgYW5kIG90aGVyIGZpZWxkcyAqLwotCi0gIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZjEsICZtYXApOwotCi0gIC8qIG1hcmsgYW5kIHB1dCBvbiBjYXBzICovCi0gIG11bHRpc3RyZWFtID0gbl9zdHJlYW1zID4gMTsKLSAgKmNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8veC1vcHVzIiwKLSAgICAgICJtdWx0aXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBtdWx0aXN0cmVhbSwKLSAgICAgICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIGNoYW5uZWxzLCBOVUxMKTsKLQotICBpZiAocmF0ZSA+IDApIHsKLSAgICBnc3RfY2Fwc19zZXRfc2ltcGxlICgqY2FwcywgInJhdGUiLCBHX1RZUEVfSU5ULCByYXRlLCBOVUxMKTsKLSAgfQotCi0gICpjYXBzID0gX2dzdF9jYXBzX3NldF9idWZmZXJfYXJyYXkgKCpjYXBzLCAic3RyZWFtaGVhZGVyIiwgYnVmMSwgYnVmMiwgTlVMTCk7Ci0KLSAgaWYgKGhlYWRlcnMpIHsKLSAgICAqaGVhZGVycyA9IGdfc2xpc3RfcHJlcGVuZCAoKmhlYWRlcnMsIGdzdF9idWZmZXJfcmVmIChidWYyKSk7Ci0gICAgKmhlYWRlcnMgPSBnX3NsaXN0X3ByZXBlbmQgKCpoZWFkZXJzLCBnc3RfYnVmZmVyX3JlZiAoYnVmMSkpOwotICB9Ci19Ci0KLXZvaWQKLWdzdF9vcHVzX2hlYWRlcl9jcmVhdGVfY2FwcyAoR3N0Q2FwcyAqKiBjYXBzLCBHU0xpc3QgKiogaGVhZGVycywgZ2ludCBuY2hhbm5lbHMsCi0gICAgZ2ludCBuX3N0ZXJlb19zdHJlYW1zLCBnaW50IHNhbXBsZV9yYXRlLCBndWludDggY2hhbm5lbF9tYXBwaW5nX2ZhbWlseSwKLSAgICBjb25zdCBndWludDggKiBjaGFubmVsX21hcHBpbmcsIGNvbnN0IEdzdFRhZ0xpc3QgKiB0YWdzKQotewotICBHc3RCdWZmZXIgKmJ1ZjEsICpidWYyOwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKGNhcHMpOwotICBnX3JldHVybl9pZl9mYWlsICghaGVhZGVycyB8fCAhKmhlYWRlcnMpOwotICBnX3JldHVybl9pZl9mYWlsIChuY2hhbm5lbHMgPiAwKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAoc2FtcGxlX3JhdGUgPj0gMCk7ICAvKiAwIC0+IHVuc2V0ICovCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKGNoYW5uZWxfbWFwcGluZ19mYW1pbHkgPT0gMCB8fCBjaGFubmVsX21hcHBpbmcpOwotCi0gIC8qIE9wdXMgc3RyZWFtcyBpbiBPZ2cgYmVnaW4gd2l0aCB0d28gaGVhZGVyczsgdGhlIGluaXRpYWwgaGVhZGVyICh3aXRoCi0gICAgIG1vc3Qgb2YgdGhlIGNvZGVjIHNldHVwIHBhcmFtZXRlcnMpIHdoaWNoIGlzIG1hbmRhdGVkIGJ5IHRoZSBPZ2cKLSAgICAgYml0c3RyZWFtIHNwZWMuICBUaGUgc2Vjb25kIGhlYWRlciBob2xkcyBhbnkgY29tbWVudCBmaWVsZHMuICovCi0KLSAgLyogY3JlYXRlIGhlYWRlciBidWZmZXJzICovCi0gIGJ1ZjEgPQotICAgICAgZ3N0X29wdXNfZW5jX2NyZWF0ZV9pZF9idWZmZXIgKG5jaGFubmVscywgbl9zdGVyZW9fc3RyZWFtcywgc2FtcGxlX3JhdGUsCi0gICAgICBjaGFubmVsX21hcHBpbmdfZmFtaWx5LCBjaGFubmVsX21hcHBpbmcpOwotICBidWYyID0gZ3N0X29wdXNfZW5jX2NyZWF0ZV9tZXRhZGF0YV9idWZmZXIgKHRhZ3MpOwotCi0gIGdzdF9vcHVzX2hlYWRlcl9jcmVhdGVfY2Fwc19mcm9tX2hlYWRlcnMgKGNhcHMsIGhlYWRlcnMsIGJ1ZjEsIGJ1ZjIpOwotCi0gIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZjIpOwotICBnc3RfYnVmZmVyX3VucmVmIChidWYxKTsKLX0KLQogZ2Jvb2xlYW4KIGdzdF9vcHVzX2hlYWRlcl9pc19oZWFkZXIgKEdzdEJ1ZmZlciAqIGJ1ZiwgY29uc3QgY2hhciAqbWFnaWMsIGd1aW50IG1hZ2ljX3NpemUpCiB7CmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzaGVhZGVyLmggYi9leHQvb3B1cy9nc3RvcHVzaGVhZGVyLmgKaW5kZXggMTRjODhjMC4uMmE5MWMwMyAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2hlYWRlci5oCisrKyBiL2V4dC9vcHVzL2dzdG9wdXNoZWFkZXIuaApAQCAtMjYsMTIgKzI2LDYgQEAKIAogR19CRUdJTl9ERUNMUwogCi1leHRlcm4gdm9pZCBnc3Rfb3B1c19oZWFkZXJfY3JlYXRlX2NhcHNfZnJvbV9oZWFkZXJzIChHc3RDYXBzICoqY2FwcywgR1NMaXN0ICoqaGVhZGVycywKLSAgICBHc3RCdWZmZXIgKmlkX2hlYWRlciwgR3N0QnVmZmVyICpjb21tZW50X2hlYWRlcik7Ci1leHRlcm4gdm9pZCBnc3Rfb3B1c19oZWFkZXJfY3JlYXRlX2NhcHMgKEdzdENhcHMgKipjYXBzLCBHU0xpc3QgKipoZWFkZXJzLAotICAgIGdpbnQgbmNoYW5uZWxzLCBnaW50IG5fc3RlcmVvX3N0cmVhbXMsIGdpbnQgc2FtcGxlX3JhdGUsCi0gICAgZ3VpbnQ4IGNoYW5uZWxfbWFwcGluZ19mYW1pbHksIGNvbnN0IGd1aW50OCAqY2hhbm5lbF9tYXBwaW5nLAotICAgIGNvbnN0IEdzdFRhZ0xpc3QgKnRhZ3MpOwogZXh0ZXJuIGdib29sZWFuIGdzdF9vcHVzX2hlYWRlcl9pc19oZWFkZXIgKEdzdEJ1ZmZlciAqIGJ1ZiwKICAgICBjb25zdCBjaGFyICptYWdpYywgZ3VpbnQgbWFnaWNfc2l6ZSk7CiBleHRlcm4gZ2Jvb2xlYW4gZ3N0X29wdXNfaGVhZGVyX2lzX2lkX2hlYWRlciAoR3N0QnVmZmVyICogYnVmKTsKZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNwYXJzZS5jIGIvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmMKaW5kZXggNzFmMDYzOS4uZWEzMjUyZSAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmMKKysrIGIvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmMKQEAgLTI5LDcgKzI5LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPW9wdXNkYXRhICEgb3B1c3BhcnNlICEgb3B1c2RlYyAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhbHNhc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1vcHVzZGF0YSAhIG9wdXNwYXJzZSAhIG9wdXNkZWMgISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYWxzYXNpbmsKICAqIF18IERlY29kZSBhbmQgcGxheXMgYW4gdW5tdXhlZCBPcHVzIGZpbGUuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC00Myw2ICs0Myw5IEBACiAjaW5jbHVkZSAiZ3N0b3B1c2hlYWRlci5oIgogI2luY2x1ZGUgImdzdG9wdXNwYXJzZS5oIgogCisjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgorCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChvcHVzcGFyc2VfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgb3B1c3BhcnNlX2RlYnVnCiAKQEAgLTEwMSw2ICsxMDQsOCBAQAogZ3N0X29wdXNfcGFyc2VfaW5pdCAoR3N0T3B1c1BhcnNlICogcGFyc2UpCiB7CiAgIHBhcnNlLT5oZWFkZXJfc2VudCA9IEZBTFNFOworICBwYXJzZS0+Z290X2hlYWRlcnMgPSBGQUxTRTsKKyAgcGFyc2UtPnByZV9za2lwID0gMDsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC0xMDksNiArMTE0LDggQEAKICAgR3N0T3B1c1BhcnNlICpwYXJzZSA9IEdTVF9PUFVTX1BBUlNFIChiYXNlKTsKIAogICBwYXJzZS0+aGVhZGVyX3NlbnQgPSBGQUxTRTsKKyAgcGFyc2UtPmdvdF9oZWFkZXJzID0gRkFMU0U7CisgIHBhcnNlLT5wcmVfc2tpcCA9IDA7CiAgIHBhcnNlLT5uZXh0X3RzID0gMDsKIAogICByZXR1cm4gVFJVRTsKQEAgLTExOSwxMSArMTI2LDkgQEAKIHsKICAgR3N0T3B1c1BhcnNlICpwYXJzZSA9IEdTVF9PUFVTX1BBUlNFIChiYXNlKTsKIAotICBnX3NsaXN0X2ZvcmVhY2ggKHBhcnNlLT5oZWFkZXJzLCAoR0Z1bmMpIGdzdF9idWZmZXJfdW5yZWYsIE5VTEwpOwotICBnX3NsaXN0X2ZyZWUgKHBhcnNlLT5oZWFkZXJzKTsKLSAgcGFyc2UtPmhlYWRlcnMgPSBOVUxMOwotCiAgIHBhcnNlLT5oZWFkZXJfc2VudCA9IEZBTFNFOworICBwYXJzZS0+Z290X2hlYWRlcnMgPSBGQUxTRTsKKyAgcGFyc2UtPnByZV9za2lwID0gMDsKIAogICByZXR1cm4gVFJVRTsKIH0KQEAgLTE5NSw3ICsyMDAsNiBAQAogICAgICAgfQogCiAgICAgICBwYWNrZXRfb2Zmc2V0ID0gODsKLSAgICAgIGRhdGEgKz0gcGFja2V0X29mZnNldDsKIAogICAgICAgLyogZm9yIGFkIGhvYyBmcmFtaW5nLCBoZWVkIHRoZSBmcmFtaW5nLCBzbyB3ZSBlYXQgYW55IHBhZGRpbmcgKi8KICAgICAgIHBheWxvYWRfb2Zmc2V0ID0gcGFja2V0X3NpemU7CkBAIC0yNDEsNyArMjQ1LDcgQEAKICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7CiAKICAgLyogRklYTUUgc29tZSBkYXkgLi4uIHNob3VsZCBub3QgbWVzcyB3aXRoIGJ1ZmZlciBpdHNlbGYgKi8KLSAgaWYgKCFwYXJzZS0+aGVhZGVyX3NlbnQpIHsKKyAgaWYgKCFwYXJzZS0+Z290X2hlYWRlcnMpIHsKICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZmcmFtZS0+YnVmZmVyLAogICAgICAgICBnc3RfYnVmZmVyX2NvcHlfcmVnaW9uIChmcmFtZS0+YnVmZmVyLCBHU1RfQlVGRkVSX0NPUFlfQUxMLCAwLCBzaXplKSk7CiAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoZnJhbWUtPmJ1ZmZlcik7CkBAIC0zMjIsMTUgKzMyNiwxOCBAQAogICBHc3RPcHVzUGFyc2UgKnBhcnNlOwogICBnYm9vbGVhbiBpc19pZGhlYWRlciwgaXNfY29tbWVudGhlYWRlcjsKICAgR3N0TWFwSW5mbyBtYXA7CisgIEdzdEF1ZGlvQ2xpcHBpbmdNZXRhICpjbWV0YSA9CisgICAgICBnc3RfYnVmZmVyX2dldF9hdWRpb19jbGlwcGluZ19tZXRhIChmcmFtZS0+YnVmZmVyKTsKIAogICBwYXJzZSA9IEdTVF9PUFVTX1BBUlNFIChiYXNlKTsKIAorICBnX2Fzc2VydCAoIWNtZXRhIHx8IGNtZXRhLT5mb3JtYXQgPT0gR1NUX0ZPUk1BVF9ERUZBVUxUKTsKKwogICBpc19pZGhlYWRlciA9IGdzdF9vcHVzX2hlYWRlcl9pc19pZF9oZWFkZXIgKGZyYW1lLT5idWZmZXIpOwogICBpc19jb21tZW50aGVhZGVyID0gZ3N0X29wdXNfaGVhZGVyX2lzX2NvbW1lbnRfaGVhZGVyIChmcmFtZS0+YnVmZmVyKTsKIAotICBpZiAoIXBhcnNlLT5oZWFkZXJfc2VudCkgeworICBpZiAoIXBhcnNlLT5nb3RfaGVhZGVycyB8fCAhcGFyc2UtPmhlYWRlcl9zZW50KSB7CiAgICAgR3N0Q2FwcyAqY2FwczsKLSAgICBndWludDggY2hhbm5lbHM7CiAKICAgICAvKiBPcHVzIHN0cmVhbXMgY2FuIGRlY29kZSB0byAxIG9yIDIgY2hhbm5lbHMsIHNvIHVzZSB0aGUgaGVhZGVyCiAgICAgICAgdmFsdWUgaWYgd2UgaGF2ZSBvbmUsIG9yIDIgb3RoZXJ3aXNlICovCkBAIC0zNDQsMzEgKzM1MSw3NyBAQAogICAgICAgcmV0dXJuIEdTVF9CQVNFX1BBUlNFX0ZMT1dfRFJPUFBFRDsKICAgICB9CiAKLSAgICBnX3NsaXN0X2ZvcmVhY2ggKHBhcnNlLT5oZWFkZXJzLCAoR0Z1bmMpIGdzdF9idWZmZXJfdW5yZWYsIE5VTEwpOwotICAgIGdfc2xpc3RfZnJlZSAocGFyc2UtPmhlYWRlcnMpOwotICAgIHBhcnNlLT5oZWFkZXJzID0gTlVMTDsKKyAgICBwYXJzZS0+Z290X2hlYWRlcnMgPSBUUlVFOwogCi0gICAgaWYgKHBhcnNlLT5pZF9oZWFkZXIgJiYgcGFyc2UtPmNvbW1lbnRfaGVhZGVyKSB7Ci0gICAgICBnc3Rfb3B1c19oZWFkZXJfY3JlYXRlX2NhcHNfZnJvbV9oZWFkZXJzICgmY2FwcywgJnBhcnNlLT5oZWFkZXJzLAotICAgICAgICAgIHBhcnNlLT5pZF9oZWFkZXIsIHBhcnNlLT5jb21tZW50X2hlYWRlcik7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGd1aW50OCBjaGFubmVsX21hcHBpbmdfZmFtaWx5LCBjaGFubmVsX21hcHBpbmdbMjU2XTsKLSAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsCi0gICAgICAgICAgIk5vIGhlYWRlcnMsIGJsaW5kbHkgc2V0dGluZyB1cCBjYW5vbmljYWwgc3RlcmVvIik7Ci0gICAgICBjaGFubmVscyA9IDI7Ci0gICAgICBjaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gMDsKLSAgICAgIGNoYW5uZWxfbWFwcGluZ1swXSA9IDA7Ci0gICAgICBjaGFubmVsX21hcHBpbmdbMV0gPSAxOwotICAgICAgZ3N0X29wdXNfaGVhZGVyX2NyZWF0ZV9jYXBzICgmY2FwcywgJnBhcnNlLT5oZWFkZXJzLCBjaGFubmVscywgMSwgNDgwMDAsCi0gICAgICAgICAgY2hhbm5lbF9tYXBwaW5nX2ZhbWlseSwgY2hhbm5lbF9tYXBwaW5nLCBOVUxMKTsKKyAgICBpZiAoY21ldGEgJiYgY21ldGEtPnN0YXJ0KSB7CisgICAgICBwYXJzZS0+cHJlX3NraXAgKz0gY21ldGEtPnN0YXJ0OworCisgICAgICBnc3RfYnVmZmVyX21hcCAoZnJhbWUtPmJ1ZmZlciwgJm1hcCwgR1NUX01BUF9SRUFEKTsKKyAgICAgIGR1cmF0aW9uID0gcGFja2V0X2R1cmF0aW9uX29wdXMgKG1hcC5kYXRhLCBtYXAuc2l6ZSk7CisgICAgICBnc3RfYnVmZmVyX3VubWFwIChmcmFtZS0+YnVmZmVyLCAmbWFwKTsKKworICAgICAgLyogUXVldWUgZnJhbWUgZm9yIGxhdGVyIG9uY2Ugd2Uga25vdyBhbGwgaW5pdGlhbCBwYWRkaW5nICovCisgICAgICBpZiAoZHVyYXRpb24gPT0gY21ldGEtPnN0YXJ0KSB7CisgICAgICAgIGZyYW1lLT5mbGFncyB8PSBHU1RfQkFTRV9QQVJTRV9GUkFNRV9GTEFHX1FVRVVFOworICAgICAgfQogICAgIH0KIAotICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnBhcnNlLT5pZF9oZWFkZXIsIE5VTEwpOwotICAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnBhcnNlLT5jb21tZW50X2hlYWRlciwgTlVMTCk7CisgICAgaWYgKCEoZnJhbWUtPmZsYWdzICYgR1NUX0JBU0VfUEFSU0VfRlJBTUVfRkxBR19RVUVVRSkpIHsKKyAgICAgIGlmIChGQUxTRSAmJiBwYXJzZS0+aWRfaGVhZGVyICYmIHBhcnNlLT5jb21tZW50X2hlYWRlcikgeworICAgICAgICBndWludDE2IHByZV9za2lwOwogCi0gICAgZ3N0X3BhZF9zZXRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpLCBjYXBzKTsKLSAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gICAgcGFyc2UtPmhlYWRlcl9zZW50ID0gVFJVRTsKKyAgICAgICAgZ3N0X2J1ZmZlcl9tYXAgKHBhcnNlLT5pZF9oZWFkZXIsICZtYXAsIEdTVF9NQVBfUkVBRFdSSVRFKTsKKyAgICAgICAgcHJlX3NraXAgPSBHU1RfUkVBRF9VSU5UMTZfTEUgKG1hcC5kYXRhICsgMTApOworICAgICAgICBpZiAocHJlX3NraXAgIT0gcGFyc2UtPnByZV9za2lwKSB7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocGFyc2UsCisgICAgICAgICAgICAgICJGaXhpbmcgdXAgcHJlLXNraXAgJXUgLT4gJSIgR19HVUlOVDY0X0ZPUk1BVCwgcHJlX3NraXAsCisgICAgICAgICAgICAgIHBhcnNlLT5wcmVfc2tpcCk7CisgICAgICAgICAgR1NUX1dSSVRFX1VJTlQxNl9MRSAobWFwLmRhdGEgKyAxMCwgcGFyc2UtPnByZV9za2lwKTsKKyAgICAgICAgfQorICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChwYXJzZS0+aWRfaGVhZGVyLCAmbWFwKTsKKworICAgICAgICBjYXBzID0KKyAgICAgICAgICAgIGdzdF9jb2RlY191dGlsc19vcHVzX2NyZWF0ZV9jYXBzX2Zyb21faGVhZGVyIChwYXJzZS0+aWRfaGVhZGVyLAorICAgICAgICAgICAgcGFyc2UtPmNvbW1lbnRfaGVhZGVyKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdzdENhcHMgKnNpbmtfY2FwczsKKyAgICAgICAgZ3VpbnQzMiBzYW1wbGVfcmF0ZSA9IDQ4MDAwOworICAgICAgICBndWludDggbl9jaGFubmVscywgbl9zdHJlYW1zLCBuX3N0ZXJlb19zdHJlYW1zLCBjaGFubmVsX21hcHBpbmdfZmFtaWx5OworICAgICAgICBndWludDggY2hhbm5lbF9tYXBwaW5nWzI1Nl07CisgICAgICAgIEdzdEJ1ZmZlciAqaWRfaGVhZGVyOworCisgICAgICAgIHNpbmtfY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU0lOS19QQUQgKHBhcnNlKSk7CisgICAgICAgIGlmICghc2lua19jYXBzCisgICAgICAgICAgICB8fCAhZ3N0X2NvZGVjX3V0aWxzX29wdXNfcGFyc2VfY2FwcyAoc2lua19jYXBzLCAmc2FtcGxlX3JhdGUsCisgICAgICAgICAgICAgICAgJm5fY2hhbm5lbHMsICZjaGFubmVsX21hcHBpbmdfZmFtaWx5LCAmbl9zdHJlYW1zLAorICAgICAgICAgICAgICAgICZuX3N0ZXJlb19zdHJlYW1zLCBjaGFubmVsX21hcHBpbmcpKSB7CisgICAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwKKyAgICAgICAgICAgICAgIk5vIGhlYWRlcnMgYW5kIG5vIGNhcHMsIGJsaW5kbHkgc2V0dGluZyB1cCBjYW5vbmljYWwgc3RlcmVvIik7CisgICAgICAgICAgbl9jaGFubmVscyA9IDI7CisgICAgICAgICAgbl9zdHJlYW1zID0gMTsKKyAgICAgICAgICBuX3N0ZXJlb19zdHJlYW1zID0gMTsKKyAgICAgICAgICBjaGFubmVsX21hcHBpbmdfZmFtaWx5ID0gMDsKKyAgICAgICAgICBjaGFubmVsX21hcHBpbmdbMF0gPSAwOworICAgICAgICAgIGNoYW5uZWxfbWFwcGluZ1sxXSA9IDE7CisgICAgICAgIH0KKyAgICAgICAgaWYgKHNpbmtfY2FwcykKKyAgICAgICAgICBnc3RfY2Fwc191bnJlZiAoc2lua19jYXBzKTsKKworICAgICAgICBpZF9oZWFkZXIgPQorICAgICAgICAgICAgZ3N0X2NvZGVjX3V0aWxzX29wdXNfY3JlYXRlX2hlYWRlciAoc2FtcGxlX3JhdGUsIG5fY2hhbm5lbHMsCisgICAgICAgICAgICBjaGFubmVsX21hcHBpbmdfZmFtaWx5LCBuX3N0cmVhbXMsIG5fc3RlcmVvX3N0cmVhbXMsCisgICAgICAgICAgICBjaGFubmVsX21hcHBpbmcsIHBhcnNlLT5wcmVfc2tpcCwgMCk7CisgICAgICAgIGNhcHMgPSBnc3RfY29kZWNfdXRpbHNfb3B1c19jcmVhdGVfY2Fwc19mcm9tX2hlYWRlciAoaWRfaGVhZGVyLCBOVUxMKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoaWRfaGVhZGVyKTsKKyAgICAgIH0KKworICAgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmcGFyc2UtPmlkX2hlYWRlciwgTlVMTCk7CisgICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZwYXJzZS0+Y29tbWVudF9oZWFkZXIsIE5VTEwpOworCisgICAgICBnc3RfcGFkX3NldF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSksIGNhcHMpOworICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICAgICAgcGFyc2UtPmhlYWRlcl9zZW50ID0gVFJVRTsKKyAgICB9CiAgIH0KIAogICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoZnJhbWUtPmJ1ZmZlcikgPSBwYXJzZS0+bmV4dF90czsKZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNwYXJzZS5oIGIvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmgKaW5kZXggNmQxMjBjYy4uNjM3OWRlMCAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmgKKysrIGIvZXh0L29wdXMvZ3N0b3B1c3BhcnNlLmgKQEAgLTQ0LDggKzQ0LDggQEAKIHN0cnVjdCBfR3N0T3B1c1BhcnNlIHsKICAgR3N0QmFzZVBhcnNlICAgICAgIGVsZW1lbnQ7CiAKLSAgZ2Jvb2xlYW4gaGVhZGVyX3NlbnQ7Ci0gIEdTTGlzdCAqaGVhZGVyczsKKyAgZ2Jvb2xlYW4gZ290X2hlYWRlcnMsIGhlYWRlcl9zZW50OworICBndWludDY0IHByZV9za2lwOwogICBHc3RDbG9ja1RpbWUgbmV4dF90czsKICAgR3N0QnVmZmVyICppZF9oZWFkZXI7CiAgIEdzdEJ1ZmZlciAqY29tbWVudF9oZWFkZXI7CmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuYyBiL2V4dC9vcHVzL2dzdHJ0cG9wdXNkZXBheS5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmI3MjE4Li4wMDAwMDAwCi0tLSBhL2V4dC9vcHVzL2dzdHJ0cG9wdXNkZXBheS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTc1ICswLDAgQEAKLS8qCi0gKiBPcHVzIERlcGF5bG9hZGVyIEdzdCBFbGVtZW50Ci0gKgotICogICBAYXV0aG9yOiBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSMgIGluY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxnc3QvcnRwL2dzdHJ0cGJ1ZmZlci5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgotI2luY2x1ZGUgImdzdHJ0cG9wdXNkZXBheS5oIgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChydHBvcHVzZGVwYXlfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgKHJ0cG9wdXNkZXBheV9kZWJ1ZykKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9ydHBfb3B1c19kZXBheV9zaW5rX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwLCAiCi0gICAgICAgICJtZWRpYSA9IChzdHJpbmcpIFwiYXVkaW9cIiwgIgotICAgICAgICAicGF5bG9hZCA9IChpbnQpICIgR1NUX1JUUF9QQVlMT0FEX0RZTkFNSUNfU1RSSU5HICIsIgotICAgICAgICAiY2xvY2stcmF0ZSA9IChpbnQpIDQ4MDAwLCAiCi0gICAgICAgICJlbmNvZGluZy1uYW1lID0gKHN0cmluZykgeyBcIk9QVVNcIiwgXCJYLUdTVC1PUFVTLURSQUZULVNQSVRUS0EtMDBcIiB9IikKLSAgICApOwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3J0cF9vcHVzX2RlcGF5X3NyY190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgiYXVkaW8veC1vcHVzLCBtdWx0aXN0cmVhbSA9IChib29sZWFuKSBGQUxTRSIpCi0gICAgKTsKLQotc3RhdGljIEdzdEJ1ZmZlciAqZ3N0X3J0cF9vcHVzX2RlcGF5X3Byb2Nlc3MgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheWxvYWQsCi0gICAgR3N0QnVmZmVyICogYnVmKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfcnRwX29wdXNfZGVwYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZURlcGF5bG9hZCAqIGRlcGF5bG9hZCwKLSAgICBHc3RDYXBzICogY2Fwcyk7Ci0KLUdfREVGSU5FX1RZUEUgKEdzdFJUUE9wdXNEZXBheSwgZ3N0X3J0cF9vcHVzX2RlcGF5LAotICAgIEdTVF9UWVBFX1JUUF9CQVNFX0RFUEFZTE9BRCk7Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX29wdXNfZGVwYXlfY2xhc3NfaW5pdCAoR3N0UlRQT3B1c0RlcGF5Q2xhc3MgKiBrbGFzcykKLXsKLSAgR3N0UlRQQmFzZURlcGF5bG9hZENsYXNzICpnc3RiYXNlcnRwZGVwYXlsb2FkX2NsYXNzOwotICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3M7Ci0KLSAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7Ci0gIGdzdGJhc2VydHBkZXBheWxvYWRfY2xhc3MgPSAoR3N0UlRQQmFzZURlcGF5bG9hZENsYXNzICopIGtsYXNzOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfcnRwX29wdXNfZGVwYXlfc3JjX3RlbXBsYXRlKSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfcnRwX29wdXNfZGVwYXlfc2lua190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAotICAgICAgIlJUUCBPcHVzIHBhY2tldCBkZXBheWxvYWRlciIsICJDb2RlYy9EZXBheWxvYWRlci9OZXR3b3JrL1JUUCIsCi0gICAgICAiRXh0cmFjdHMgT3B1cyBhdWRpbyBmcm9tIFJUUCBwYWNrZXRzIiwKLSAgICAgICJEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+Iik7Ci0KLSAgZ3N0YmFzZXJ0cGRlcGF5bG9hZF9jbGFzcy0+cHJvY2VzcyA9IGdzdF9ydHBfb3B1c19kZXBheV9wcm9jZXNzOwotICBnc3RiYXNlcnRwZGVwYXlsb2FkX2NsYXNzLT5zZXRfY2FwcyA9IGdzdF9ydHBfb3B1c19kZXBheV9zZXRjYXBzOwotCi0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChydHBvcHVzZGVwYXlfZGVidWcsICJydHBvcHVzZGVwYXkiLCAwLAotICAgICAgIk9wdXMgUlRQIERlcGF5bG9hZGVyIik7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX29wdXNfZGVwYXlfaW5pdCAoR3N0UlRQT3B1c0RlcGF5ICogcnRwb3B1c2RlcGF5KQotewotCi19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3J0cF9vcHVzX2RlcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheWxvYWQsIEdzdENhcHMgKiBjYXBzKQotewotICBHc3RDYXBzICpzcmNjYXBzOwotICBHc3RTdHJ1Y3R1cmUgKnM7Ci0gIGdib29sZWFuIHJldDsKLSAgY29uc3QgZ2NoYXIgKnNwcm9wX3N0ZXJlbywgKnNwcm9wX21heGNhcHR1cmVyYXRlOwotCi0gIHNyY2NhcHMgPQotICAgICAgZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL3gtb3B1cyIsICJtdWx0aXN0cmVhbSIsIEdfVFlQRV9CT09MRUFOLCBGQUxTRSwKLSAgICAgIE5VTEwpOwotCi0gIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKLSAgaWYgKChzcHJvcF9zdGVyZW8gPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJzcHJvcC1zdGVyZW8iKSkpIHsKLSAgICBpZiAoc3RyY21wIChzcHJvcF9zdGVyZW8sICIwIikgPT0gMCkKLSAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKHNyY2NhcHMsICJjaGFubmVscyIsIEdfVFlQRV9JTlQsIDEsIE5VTEwpOwotICAgIGVsc2UgaWYgKHN0cmNtcCAoc3Byb3Bfc3RlcmVvLCAiMSIpID09IDApCi0gICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChzcmNjYXBzLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAyLCBOVUxMKTsKLSAgICBlbHNlCi0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlcGF5bG9hZCwgIlVua25vd24gc3Byb3Atc3RlcmVvIHZhbHVlICclcyciLAotICAgICAgICAgIHNwcm9wX3N0ZXJlbyk7Ci0gIH0KLQotICBpZiAoKHNwcm9wX21heGNhcHR1cmVyYXRlID0KLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJzcHJvcC1tYXhjYXB0dXJlcmF0ZSIpKSkgewotICAgIGd1bG9uZyByYXRlOwotICAgIGdjaGFyICp0YWlscHRyOwotCi0gICAgcmF0ZSA9IHN0cnRvdWwgKHNwcm9wX21heGNhcHR1cmVyYXRlLCAmdGFpbHB0ciwgMTApOwotICAgIGlmIChyYXRlID4gSU5UX01BWCB8fCAqdGFpbHB0ciAhPSAnXDAnKSB7Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlcGF5bG9hZCwKLSAgICAgICAgICAiRmFpbGVkIHRvIHBhcnNlIHNwcm9wLW1heGNhcHR1cmVyYXRlIHZhbHVlICclcyciLAotICAgICAgICAgIHNwcm9wX21heGNhcHR1cmVyYXRlKTsKLSAgICB9IGVsc2UgewotICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoc3JjY2FwcywgInJhdGUiLCBHX1RZUEVfSU5ULCByYXRlLCBOVUxMKTsKLSAgICB9Ci0gIH0KLQotICByZXQgPSBnc3RfcGFkX3NldF9jYXBzIChHU1RfUlRQX0JBU0VfREVQQVlMT0FEX1NSQ1BBRCAoZGVwYXlsb2FkKSwgc3JjY2Fwcyk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXlsb2FkLAotICAgICAgInNldCBjYXBzIG9uIHNvdXJjZTogJSIgR1NUX1BUUl9GT1JNQVQgIiAocmV0PSVkKSIsIHNyY2NhcHMsIHJldCk7Ci0gIGdzdF9jYXBzX3VucmVmIChzcmNjYXBzKTsKLQotICBkZXBheWxvYWQtPmNsb2NrX3JhdGUgPSA0ODAwMDsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWZvcmVhY2hfbWV0YWRhdGEgKEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RNZXRhICoqIG1ldGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgR3N0UlRQT3B1c0RlcGF5ICpkZXBheSA9IHVzZXJfZGF0YTsKLSAgY29uc3QgR3N0TWV0YUluZm8gKmluZm8gPSAoKm1ldGEpLT5pbmZvOwotICBjb25zdCBnY2hhciAqY29uc3QgKnRhZ3MgPSBnc3RfbWV0YV9hcGlfdHlwZV9nZXRfdGFncyAoaW5mby0+YXBpKTsKLQotICBpZiAoIXRhZ3MgfHwgKGdfc3Rydl9sZW5ndGggKChnY2hhciAqKikgdGFncykgPT0gMQotICAgICAgICAgICYmIGdzdF9tZXRhX2FwaV90eXBlX2hhc190YWcgKGluZm8tPmFwaSwKLSAgICAgICAgICAgICAgZ19xdWFya19mcm9tX3N0cmluZyAoR1NUX01FVEFfVEFHX0FVRElPX1NUUikpKSkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5LCAia2VlcGluZyBtZXRhZGF0YSAlcyIsIGdfdHlwZV9uYW1lIChpbmZvLT5hcGkpKTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheSwgImRyb3BwaW5nIG1ldGFkYXRhICVzIiwgZ190eXBlX25hbWUgKGluZm8tPmFwaSkpOwotICAgICptZXRhID0gTlVMTDsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgR3N0QnVmZmVyICoKLWdzdF9ydHBfb3B1c19kZXBheV9wcm9jZXNzIChHc3RSVFBCYXNlRGVwYXlsb2FkICogZGVwYXlsb2FkLCBHc3RCdWZmZXIgKiBidWYpCi17Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmOwotICBHc3RSVFBCdWZmZXIgcnRwYnVmID0geyBOVUxMLCB9OwotCi0gIGdzdF9ydHBfYnVmZmVyX21hcCAoYnVmLCBHU1RfTUFQX1JFQUQsICZydHBidWYpOwotICBvdXRidWYgPSBnc3RfcnRwX2J1ZmZlcl9nZXRfcGF5bG9hZF9idWZmZXIgKCZydHBidWYpOwotICBnc3RfcnRwX2J1ZmZlcl91bm1hcCAoJnJ0cGJ1Zik7Ci0KLSAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChvdXRidWYpOwotICAvKiBGaWx0ZXIgYXdheSBhbGwgbWV0YXMgdGhhdCBhcmUgbm90IHNlbnNpYmxlIHRvIGNvcHkgKi8KLSAgZ3N0X2J1ZmZlcl9mb3JlYWNoX21ldGEgKG91dGJ1ZiwgZm9yZWFjaF9tZXRhZGF0YSwgZGVwYXlsb2FkKTsKLQotICByZXR1cm4gb3V0YnVmOwotfQpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0cnRwb3B1c2RlcGF5LmggYi9leHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg5MGViMS4uMDAwMDAwMAotLS0gYS9leHQvb3B1cy9nc3RydHBvcHVzZGVwYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLS8qCi0gKiBPcHVzIERlcGF5bG9hZGVyIEdzdCBFbGVtZW50Ci0gKgotICogICBAYXV0aG9yOiBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgPGRhbmlsby5ldUBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9SVFBfT1BVU19ERVBBWV9IX18KLSNkZWZpbmUgX19HU1RfUlRQX09QVVNfREVQQVlfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBiYXNlZGVwYXlsb2FkLmg+Ci0KLUdfQkVHSU5fREVDTFMgdHlwZWRlZiBzdHJ1Y3QgX0dzdFJUUE9wdXNEZXBheSBHc3RSVFBPcHVzRGVwYXk7Ci10eXBlZGVmIHN0cnVjdCBfR3N0UlRQT3B1c0RlcGF5Q2xhc3MgR3N0UlRQT3B1c0RlcGF5Q2xhc3M7Ci0KLSNkZWZpbmUgR1NUX1RZUEVfUlRQX09QVVNfREVQQVkgXAotICAoZ3N0X3J0cF9vcHVzX2RlcGF5X2dldF90eXBlKCkpCi0jZGVmaW5lIEdTVF9SVFBfT1BVU19ERVBBWShvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1JUUF9PUFVTX0RFUEFZLEdzdFJUUE9wdXNEZXBheSkpCi0jZGVmaW5lIEdTVF9SVFBfT1BVU19ERVBBWV9DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9SVFBfT1BVU19ERVBBWSxHc3RSVFBPcHVzRGVwYXlDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19SVFBfT1BVU19ERVBBWShvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1JUUF9PUFVTX0RFUEFZKSkKLSNkZWZpbmUgR1NUX0lTX1JUUF9PUFVTX0RFUEFZX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1JUUF9PUFVTX0RFUEFZKSkKLQotCi1zdHJ1Y3QgX0dzdFJUUE9wdXNEZXBheQotewotICBHc3RSVFBCYXNlRGVwYXlsb2FkIGRlcGF5bG9hZDsKLQotfTsKLQotc3RydWN0IF9Hc3RSVFBPcHVzRGVwYXlDbGFzcwotewotICBHc3RSVFBCYXNlRGVwYXlsb2FkQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotR1R5cGUgZ3N0X3J0cF9vcHVzX2RlcGF5X2dldF90eXBlICh2b2lkKTsKLQotR19FTkRfREVDTFMKLSNlbmRpZiAvKiBfX0dTVF9SVFBfT1BVU19ERVBBWV9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdHJ0cG9wdXNwYXkuYyBiL2V4dC9vcHVzL2dzdHJ0cG9wdXNwYXkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWFkNDlhNS4uMDAwMDAwMAotLS0gYS9leHQvb3B1cy9nc3RydHBvcHVzcGF5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNzcgKzAsMCBAQAotLyoKLSAqIE9wdXMgUGF5bG9hZGVyIEdzdCBFbGVtZW50Ci0gKgotICogICBAYXV0aG9yOiBEYW5pbG8gQ2VzYXIgTGVtZXMgZGUgUGF1bGEgPGRhbmlsby5jZXNhckBjb2xsYWJvcmEuY28udWs+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSMgIGluY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgPGdzdC9ydHAvZ3N0cnRwYnVmZmVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0KLSNpbmNsdWRlICJnc3RydHBvcHVzcGF5LmgiCi0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKHJ0cG9wdXNwYXlfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgKHJ0cG9wdXNwYXlfZGVidWcpCi0KLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9ydHBfb3B1c19wYXlfc2lua190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LW9wdXMsIG11bHRpc3RyZWFtID0gKGJvb2xlYW4pIEZBTFNFIikKLSAgICApOwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3J0cF9vcHVzX3BheV9zcmNfdGVtcGxhdGUgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwLCAiCi0gICAgICAgICJtZWRpYSA9IChzdHJpbmcpIFwiYXVkaW9cIiwgIgotICAgICAgICAicGF5bG9hZCA9IChpbnQpICIgR1NUX1JUUF9QQVlMT0FEX0RZTkFNSUNfU1RSSU5HICIsICIKLSAgICAgICAgImNsb2NrLXJhdGUgPSAoaW50KSA0ODAwMCwgIgotICAgICAgICAiZW5jb2RpbmctcGFyYW1zID0gKHN0cmluZykgXCIyXCIsICIKLSAgICAgICAgImVuY29kaW5nLW5hbWUgPSAoc3RyaW5nKSB7IFwiT1BVU1wiLCBcIlgtR1NULU9QVVMtRFJBRlQtU1BJVFRLQS0wMFwiIH0iKQotICAgICk7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfcnRwX29wdXNfcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwKLSAgICBHc3RDYXBzICogY2Fwcyk7Ci1zdGF0aWMgR3N0Q2FwcyAqZ3N0X3J0cF9vcHVzX3BheV9nZXRjYXBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIHBheWxvYWQsCi0gICAgR3N0UGFkICogcGFkLCBHc3RDYXBzICogZmlsdGVyKTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9ydHBfb3B1c19wYXlfaGFuZGxlX2J1ZmZlciAoR3N0UlRQQmFzZVBheWxvYWQgKgotICAgIHBheWxvYWQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0KLUdfREVGSU5FX1RZUEUgKEdzdFJ0cE9QVVNQYXksIGdzdF9ydHBfb3B1c19wYXksIEdTVF9UWVBFX1JUUF9CQVNFX1BBWUxPQUQpOwotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9vcHVzX3BheV9jbGFzc19pbml0IChHc3RSdHBPUFVTUGF5Q2xhc3MgKiBrbGFzcykKLXsKLSAgR3N0UlRQQmFzZVBheWxvYWRDbGFzcyAqZ3N0YmFzZXJ0cHBheWxvYWRfY2xhc3M7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzczsKLQotICBnc3RiYXNlcnRwcGF5bG9hZF9jbGFzcyA9IChHc3RSVFBCYXNlUGF5bG9hZENsYXNzICopIGtsYXNzOwotICBlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKLQotICBnc3RiYXNlcnRwcGF5bG9hZF9jbGFzcy0+c2V0X2NhcHMgPSBnc3RfcnRwX29wdXNfcGF5X3NldGNhcHM7Ci0gIGdzdGJhc2VydHBwYXlsb2FkX2NsYXNzLT5nZXRfY2FwcyA9IGdzdF9ydHBfb3B1c19wYXlfZ2V0Y2FwczsKLSAgZ3N0YmFzZXJ0cHBheWxvYWRfY2xhc3MtPmhhbmRsZV9idWZmZXIgPSBnc3RfcnRwX29wdXNfcGF5X2hhbmRsZV9idWZmZXI7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9ydHBfb3B1c19wYXlfc3JjX3RlbXBsYXRlKSk7Ci0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfcnRwX29wdXNfcGF5X3NpbmtfdGVtcGxhdGUpKTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAotICAgICAgIlJUUCBPcHVzIHBheWxvYWRlciIsCi0gICAgICAiQ29kZWMvUGF5bG9hZGVyL05ldHdvcmsvUlRQIiwKLSAgICAgICJQdXRzIE9wdXMgYXVkaW8gaW4gUlRQIHBhY2tldHMiLAotICAgICAgIkRhbmlsbyBDZXNhciBMZW1lcyBkZSBQYXVsYSA8ZGFuaWxvLmNlc2FyQGNvbGxhYm9yYS5jby51az4iKTsKLQotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAocnRwb3B1c3BheV9kZWJ1ZywgInJ0cG9wdXNwYXkiLCAwLAotICAgICAgIk9wdXMgUlRQIFBheWxvYWRlciIpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9vcHVzX3BheV9pbml0IChHc3RSdHBPUFVTUGF5ICogcnRwb3B1c3BheSkKLXsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfcnRwX29wdXNfcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIGdib29sZWFuIHJlczsKLSAgR3N0Q2FwcyAqc3JjX2NhcHM7Ci0gIEdzdFN0cnVjdHVyZSAqczsKLSAgY2hhciAqZW5jb2RpbmdfbmFtZTsKLSAgZ2ludCBjaGFubmVscywgcmF0ZTsKLSAgY29uc3QgY2hhciAqc3Byb3Bfc3RlcmVvID0gTlVMTDsKLSAgY2hhciAqc3Byb3BfbWF4Y2FwdHVyZXJhdGUgPSBOVUxMOwotCi0gIHNyY19jYXBzID0gZ3N0X3BhZF9nZXRfYWxsb3dlZF9jYXBzIChHU1RfUlRQX0JBU0VfUEFZTE9BRF9TUkNQQUQgKHBheWxvYWQpKTsKLSAgaWYgKHNyY19jYXBzKSB7Ci0gICAgc3JjX2NhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChzcmNfY2Fwcyk7Ci0gICAgc3JjX2NhcHMgPSBnc3RfY2Fwc190cnVuY2F0ZSAoc3JjX2NhcHMpOwotICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChzcmNfY2FwcywgMCk7Ci0gICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfc3RyaW5nIChzLCAiZW5jb2RpbmctbmFtZSIsICJPUFVTIik7Ci0gICAgZW5jb2RpbmdfbmFtZSA9IGdfc3RyZHVwIChnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJlbmNvZGluZy1uYW1lIikpOwotICAgIGdzdF9jYXBzX3VucmVmIChzcmNfY2Fwcyk7Ci0gIH0gZWxzZSB7Ci0gICAgZW5jb2RpbmdfbmFtZSA9IGdfc3RyZHVwICgiWC1HU1QtT1BVUy1EUkFGVC1TUElUVEtBLTAwIik7Ci0gIH0KLQotICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJjaGFubmVscyIsICZjaGFubmVscykpIHsKLSAgICBpZiAoY2hhbm5lbHMgPiAyKSB7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChwYXlsb2FkLAotICAgICAgICAgICJNb3JlIHRoYW4gMiBjaGFubmVscyB3aXRoIG11bHRpc3RyZWFtPUZBTFNFIGlzIGludmFsaWQiKTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9IGVsc2UgaWYgKGNoYW5uZWxzID09IDIpIHsKLSAgICAgIHNwcm9wX3N0ZXJlbyA9ICIxIjsKLSAgICB9IGVsc2UgewotICAgICAgc3Byb3Bfc3RlcmVvID0gIjAiOwotICAgIH0KLSAgfQotCi0gIGlmIChnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJyYXRlIiwgJnJhdGUpKSB7Ci0gICAgc3Byb3BfbWF4Y2FwdHVyZXJhdGUgPSBnX3N0cmR1cF9wcmludGYgKCIlZCIsIHJhdGUpOwotICB9Ci0KLSAgZ3N0X3J0cF9iYXNlX3BheWxvYWRfc2V0X29wdGlvbnMgKHBheWxvYWQsICJhdWRpbyIsIEZBTFNFLAotICAgICAgZW5jb2RpbmdfbmFtZSwgNDgwMDApOwotICBnX2ZyZWUgKGVuY29kaW5nX25hbWUpOwotCi0gIGlmIChzcHJvcF9tYXhjYXB0dXJlcmF0ZSAmJiBzcHJvcF9zdGVyZW8pIHsKLSAgICByZXMgPQotICAgICAgICBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3V0Y2FwcyAocGF5bG9hZCwgInNwcm9wLW1heGNhcHR1cmVyYXRlIiwKLSAgICAgICAgR19UWVBFX1NUUklORywgc3Byb3BfbWF4Y2FwdHVyZXJhdGUsICJzcHJvcC1zdGVyZW8iLCBHX1RZUEVfU1RSSU5HLAotICAgICAgICBzcHJvcF9zdGVyZW8sIE5VTEwpOwotICB9IGVsc2UgaWYgKHNwcm9wX21heGNhcHR1cmVyYXRlKSB7Ci0gICAgcmVzID0KLSAgICAgICAgZ3N0X3J0cF9iYXNlX3BheWxvYWRfc2V0X291dGNhcHMgKHBheWxvYWQsICJzcHJvcC1tYXhjYXB0dXJlcmF0ZSIsCi0gICAgICAgIEdfVFlQRV9TVFJJTkcsIHNwcm9wX21heGNhcHR1cmVyYXRlLCBOVUxMKTsKLSAgfSBlbHNlIGlmIChzcHJvcF9zdGVyZW8pIHsKLSAgICByZXMgPQotICAgICAgICBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3V0Y2FwcyAocGF5bG9hZCwgInNwcm9wLXN0ZXJlbyIsCi0gICAgICAgIEdfVFlQRV9TVFJJTkcsIHNwcm9wX3N0ZXJlbywgTlVMTCk7Ci0gIH0gZWxzZSB7Ci0gICAgcmVzID0gZ3N0X3J0cF9iYXNlX3BheWxvYWRfc2V0X291dGNhcHMgKHBheWxvYWQsIE5VTEwpOwotICB9Ci0KLSAgZ19mcmVlIChzcHJvcF9tYXhjYXB0dXJlcmF0ZSk7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgR3N0UnRwT1BVU1BheSAqcGF5OwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLX0gQ29weU1ldGFEYXRhOwotCi1zdGF0aWMgZ2Jvb2xlYW4KLWZvcmVhY2hfbWV0YWRhdGEgKEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RNZXRhICoqIG1ldGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgQ29weU1ldGFEYXRhICpkYXRhID0gdXNlcl9kYXRhOwotICBHc3RSdHBPUFVTUGF5ICpwYXkgPSBkYXRhLT5wYXk7Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmID0gZGF0YS0+b3V0YnVmOwotICBjb25zdCBHc3RNZXRhSW5mbyAqaW5mbyA9ICgqbWV0YSktPmluZm87Ci0gIGNvbnN0IGdjaGFyICpjb25zdCAqdGFncyA9IGdzdF9tZXRhX2FwaV90eXBlX2dldF90YWdzIChpbmZvLT5hcGkpOwotCi0gIGlmICghdGFncyB8fCAoZ19zdHJ2X2xlbmd0aCAoKGdjaGFyICoqKSB0YWdzKSA9PSAxCi0gICAgICAgICAgJiYgZ3N0X21ldGFfYXBpX3R5cGVfaGFzX3RhZyAoaW5mby0+YXBpLAotICAgICAgICAgICAgICBnX3F1YXJrX2Zyb21fc3RyaW5nIChHU1RfTUVUQV9UQUdfQVVESU9fU1RSKSkpKSB7Ci0gICAgR3N0TWV0YVRyYW5zZm9ybUNvcHkgY29weV9kYXRhID0geyBGQUxTRSwgMCwgLTEgfTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChwYXksICJjb3B5IG1ldGFkYXRhICVzIiwgZ190eXBlX25hbWUgKGluZm8tPmFwaSkpOwotICAgIC8qIHNpbXBseSBjb3B5IHRoZW4gKi8KLSAgICBpbmZvLT50cmFuc2Zvcm1fZnVuYyAob3V0YnVmLCAqbWV0YSwgaW5idWYsCi0gICAgICAgIF9nc3RfbWV0YV90cmFuc2Zvcm1fY29weSwgJmNvcHlfZGF0YSk7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocGF5LCAibm90IGNvcHlpbmcgbWV0YWRhdGEgJXMiLCBnX3R5cGVfbmFtZSAoaW5mby0+YXBpKSk7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9ydHBfb3B1c19wYXlfaGFuZGxlX2J1ZmZlciAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCwKLSAgICBHc3RCdWZmZXIgKiBidWZmZXIpCi17Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmOwotICBHc3RDbG9ja1RpbWUgcHRzLCBkdHMsIGR1cmF0aW9uOwotICBDb3B5TWV0YURhdGEgZGF0YTsKLQotICBwdHMgPSBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKTsKLSAgZHRzID0gR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcik7Ci0gIGR1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKTsKLQotICBvdXRidWYgPSBnc3RfcnRwX2J1ZmZlcl9uZXdfYWxsb2NhdGUgKDAsIDAsIDApOwotICBkYXRhLnBheSA9IEdTVF9SVFBfT1BVU19QQVkgKGJhc2VwYXlsb2FkKTsKLSAgZGF0YS5vdXRidWYgPSBvdXRidWY7Ci0gIGdzdF9idWZmZXJfZm9yZWFjaF9tZXRhIChidWZmZXIsIGZvcmVhY2hfbWV0YWRhdGEsICZkYXRhKTsKLSAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9hcHBlbmQgKG91dGJ1ZiwgYnVmZmVyKTsKLQotICBHU1RfQlVGRkVSX1BUUyAob3V0YnVmKSA9IHB0czsKLSAgR1NUX0JVRkZFUl9EVFMgKG91dGJ1ZikgPSBkdHM7Ci0gIEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1ZikgPSBkdXJhdGlvbjsKLQotICAvKiBQdXNoIG91dCAqLwotICByZXR1cm4gZ3N0X3J0cF9iYXNlX3BheWxvYWRfcHVzaCAoYmFzZXBheWxvYWQsIG91dGJ1Zik7Ci19Ci0KLXN0YXRpYyBHc3RDYXBzICoKLWdzdF9ydHBfb3B1c19wYXlfZ2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBwYXlsb2FkLAotICAgIEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGZpbHRlcikKLXsKLSAgR3N0Q2FwcyAqY2FwcywgKnBlZXJjYXBzLCAqdGNhcHM7Ci0gIEdzdFN0cnVjdHVyZSAqczsKLSAgY29uc3QgZ2NoYXIgKnN0ZXJlbzsKLQotICBpZiAocGFkID09IEdTVF9SVFBfQkFTRV9QQVlMT0FEX1NSQ1BBRCAocGF5bG9hZCkpCi0gICAgcmV0dXJuCi0gICAgICAgIEdTVF9SVFBfQkFTRV9QQVlMT0FEX0NMQVNTIChnc3RfcnRwX29wdXNfcGF5X3BhcmVudF9jbGFzcyktPmdldF9jYXBzCi0gICAgICAgIChwYXlsb2FkLCBwYWQsIGZpbHRlcik7Ci0KLSAgdGNhcHMgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAoR1NUX1JUUF9CQVNFX1BBWUxPQURfU1JDUEFEIChwYXlsb2FkKSk7Ci0gIHBlZXJjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKEdTVF9SVFBfQkFTRV9QQVlMT0FEX1NSQ1BBRCAocGF5bG9hZCksCi0gICAgICB0Y2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmICh0Y2Fwcyk7Ci0gIGlmICghcGVlcmNhcHMpCi0gICAgcmV0dXJuCi0gICAgICAgIEdTVF9SVFBfQkFTRV9QQVlMT0FEX0NMQVNTIChnc3RfcnRwX29wdXNfcGF5X3BhcmVudF9jbGFzcyktPmdldF9jYXBzCi0gICAgICAgIChwYXlsb2FkLCBwYWQsIGZpbHRlcik7Ci0KLSAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChwZWVyY2FwcykpCi0gICAgcmV0dXJuIHBlZXJjYXBzOwotCi0gIGNhcHMgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAoR1NUX1JUUF9CQVNFX1BBWUxPQURfU0lOS1BBRCAocGF5bG9hZCkpOwotCi0gIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChwZWVyY2FwcywgMCk7Ci0gIHN0ZXJlbyA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInN0ZXJlbyIpOwotICBpZiAoc3RlcmVvICE9IE5VTEwpIHsKLSAgICBjYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoY2Fwcyk7Ci0KLSAgICBpZiAoIXN0cmNtcCAoc3RlcmVvLCAiMSIpKSB7Ci0gICAgICBHc3RDYXBzICpjYXBzMiA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOwotCi0gICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAyLCBOVUxMKTsKLSAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMyLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKLSAgICAgIGNhcHMgPSBnc3RfY2Fwc19tZXJnZSAoY2FwcywgY2FwczIpOwotICAgIH0gZWxzZSBpZiAoIXN0cmNtcCAoc3RlcmVvLCAiMCIpKSB7Ci0gICAgICBHc3RDYXBzICpjYXBzMiA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOwotCi0gICAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKLSAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMyLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAyLCBOVUxMKTsKLSAgICAgIGNhcHMgPSBnc3RfY2Fwc19tZXJnZSAoY2FwcywgY2FwczIpOwotICAgIH0KLSAgfQotICBnc3RfY2Fwc191bnJlZiAocGVlcmNhcHMpOwotCi0gIGlmIChmaWx0ZXIpIHsKLSAgICBHc3RDYXBzICp0bXAgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoY2FwcywgZmlsdGVyLAotICAgICAgICBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwotICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgICBjYXBzID0gdG1wOwotICB9Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAocGF5bG9hZCwgIlJldHVybmluZyBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0gIHJldHVybiBjYXBzOwotfQpkaWZmIC0tZ2l0IGEvZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5oIGIvZXh0L29wdXMvZ3N0cnRwb3B1c3BheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjFiYmUzLi4wMDAwMDAwCi0tLSBhL2V4dC9vcHVzL2dzdHJ0cG9wdXNwYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDU4ICswLDAgQEAKLS8qCi0gKiBPcHVzIFBheWxvYWRlciBHc3QgRWxlbWVudAotICoKLSAqICAgQGF1dGhvcjogRGFuaWxvIENlc2FyIExlbWVzIGRlIFBhdWxhIDxkYW5pbG8uZXVAZ21haWwuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfUlRQX09QVVNfUEFZX0hfXwotI2RlZmluZSBfX0dTVF9SVFBfT1BVU19QQVlfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBiYXNlcGF5bG9hZC5oPgotCi1HX0JFR0lOX0RFQ0xTCi0KLSNkZWZpbmUgR1NUX1RZUEVfUlRQX09QVVNfUEFZIFwKLSAgKGdzdF9ydHBfb3B1c19wYXlfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgR1NUX1JUUF9PUFVTX1BBWShvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1JUUF9PUFVTX1BBWSxHc3RSdHBPUFVTUGF5KSkKLSNkZWZpbmUgR1NUX1JUUF9PUFVTX1BBWV9DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9SVFBfT1BVU19QQVksR3N0UnRwT1BVU1BheUNsYXNzKSkKLSNkZWZpbmUgR1NUX0lTX1JUUF9PUFVTX1BBWShvYmopIFwKLSAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1JUUF9PUFVTX1BBWSkpCi0jZGVmaW5lIEdTVF9JU19SVFBfT1BVU19QQVlfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfUlRQX09QVVNfUEFZKSkKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdFJ0cE9QVVNQYXkgR3N0UnRwT1BVU1BheTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RSdHBPUFVTUGF5Q2xhc3MgR3N0UnRwT1BVU1BheUNsYXNzOwotCi1zdHJ1Y3QgX0dzdFJ0cE9QVVNQYXkKLXsKLSAgR3N0UlRQQmFzZVBheWxvYWQgcGF5bG9hZDsKLX07Ci0KLXN0cnVjdCBfR3N0UnRwT1BVU1BheUNsYXNzCi17Ci0gIEdzdFJUUEJhc2VQYXlsb2FkQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotR1R5cGUgZ3N0X3J0cF9vcHVzX3BheV9nZXRfdHlwZSAodm9pZCk7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9SVFBfT1BVU19QQVlfSF9fICovCmRpZmYgLS1naXQgYS9leHQvcXQvTWFrZWZpbGUuYW0gYi9leHQvcXQvTWFrZWZpbGUuYW0KaW5kZXggMDU5ZWU3Yi4uNWZkZDkwYSAxMDA2NDQKLS0tIGEvZXh0L3F0L01ha2VmaWxlLmFtCisrKyBiL2V4dC9xdC9NYWtlZmlsZS5hbQpAQCAtMSw0ICsxLDQgQEAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYnF0c2luay5sYQorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0cXRzaW5rLmxhCiAKIG5vaW5zdF9IRUFERVJTID0gXAogCWdzdHFzZ3RleHR1cmUuaCBcCkBAIC0xMywzNiArMTMsMzggQEAKIEJVSUxUX1NPVVJDRVMgPSAkKG1vY19nZW5lcmF0ZWQpCiBDTEVBTkZJTEVTID0gJChtb2NfZ2VuZXJhdGVkKQogCi1ub2Rpc3RfbGlicXRzaW5rX2xhX1NPVVJDRVMgPSAkKEJVSUxUX1NPVVJDRVMpCitub2Rpc3RfbGliZ3N0cXRzaW5rX2xhX1NPVVJDRVMgPSAkKEJVSUxUX1NPVVJDRVMpCiAKLWxpYnF0c2lua19sYV9TT1VSQ0VTID0gXAorbGliZ3N0cXRzaW5rX2xhX1NPVVJDRVMgPSBcCiAJZ3N0cXNndGV4dHVyZS5jYyBcCiAJcXRpdGVtLmNjIFwKIAlnc3RxdHNpbmsuY2MgXAogCWdzdHF0c2luay5oIFwKKwlnc3RxdGdsLmggXAogCWdzdHBsdWdpbi5jYwogCi1saWJxdHNpbmtfbGFfQ1hYRkxBR1MgPSBcCitsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MgPSBcCiAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKIAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAJJChHU1RfQ1hYRkxBR1MpIFwKIAkkKEdTVF9CQVNFX0NGTEFHUykgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLQkkKFFUX0NGTEFHUykKKwkkKFFUX0NGTEFHUykgXAorCSQoR0xfQ0ZMQUdTKQogCi1saWJxdHNpbmtfbGFfTElCQUREID0gXAorbGliZ3N0cXRzaW5rX2xhX0xJQkFERCA9IFwKIAkkKEdTVF9CQVNFX0xJQlMpIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCSQoUVRfTElCUykgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKQogCi1saWJxdHNpbmtfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCitsaWJnc3RxdHNpbmtfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQorbGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKIAogJChtb2NfZ2VuZXJhdGVkKTogbW9jXyUuY2M6ICUuaAotCUBNT0NAIC1vICRAICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKE1PQ19DUFBGTEFHUykgJDwKKwlATU9DQCAtbyAkQCAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChNT0NfQ1BQRkxBR1MpICQ8CiAKIHVpLSUuaDogJS51aQogCUBVSUNAIC1vICRAICQ8CmRpZmYgLS1naXQgYS9leHQvcXQvTWFrZWZpbGUuaW4gYi9leHQvcXQvTWFrZWZpbGUuaW4KaW5kZXggM2QyNGMyOC4uYjQyOTNhNSAxMDA2NDQKLS0tIGEvZXh0L3F0L01ha2VmaWxlLmluCisrKyBiL2V4dC9xdC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjQsMjYgKzE2MywyNiBAQAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYnF0c2lua19sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorbGliZ3N0cXRzaW5rX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC0kKEdTVF9BUElfVkVSU0lPTikubGEKLWFtX2xpYnF0c2lua19sYV9PQkpFQ1RTID0gbGlicXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gXAotCWxpYnF0c2lua19sYS1xdGl0ZW0ubG8gbGlicXRzaW5rX2xhLWdzdHF0c2luay5sbyBcCi0JbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5sbwotYW1fX29iamVjdHNfMSA9IGxpYnF0c2lua19sYS1tb2NfcXRpdGVtLmxvIFwKLQlsaWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUubG8KK2FtX2xpYmdzdHF0c2lua19sYV9PQkpFQ1RTID0gbGliZ3N0cXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gXAorCWxpYmdzdHF0c2lua19sYS1xdGl0ZW0ubG8gbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5sbyBcCisJbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5sbworYW1fX29iamVjdHNfMSA9IGxpYmdzdHF0c2lua19sYS1tb2NfcXRpdGVtLmxvIFwKKwlsaWJnc3RxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUubG8KIGFtX19vYmplY3RzXzIgPSAkKGFtX19vYmplY3RzXzEpCi1ub2Rpc3RfbGlicXRzaW5rX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzIpCi1saWJxdHNpbmtfbGFfT0JKRUNUUyA9ICQoYW1fbGlicXRzaW5rX2xhX09CSkVDVFMpIFwKLQkkKG5vZGlzdF9saWJxdHNpbmtfbGFfT0JKRUNUUykKK25vZGlzdF9saWJnc3RxdHNpbmtfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMikKK2xpYmdzdHF0c2lua19sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RxdHNpbmtfbGFfT0JKRUNUUykgXAorCSQobm9kaXN0X2xpYmdzdHF0c2lua19sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKIGFtX192X2x0XzAgPSAtLXNpbGVudAogYW1fX3ZfbHRfMSA9IAotbGlicXRzaW5rX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYIFwKLQkkKGxpYnF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCi0JJChDWFhMRCkgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIFwKLQkkKGxpYnF0c2lua19sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitsaWJnc3RxdHNpbmtfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggXAorCSQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKKwkkKENYWExEKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgXAorCSQobGliZ3N0cXRzaW5rX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKIGFtX192X1BfMCA9IGZhbHNlCkBAIC0yMzYsOCArMjM1LDggQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJxdHNpbmtfbGFfU09VUkNFUykgJChub2Rpc3RfbGlicXRzaW5rX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYnF0c2lua19sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0cXRzaW5rX2xhX1NPVVJDRVMpICQobm9kaXN0X2xpYmdzdHF0c2lua19sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3RxdHNpbmtfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTMwMCw2ICsyOTksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzNyw2ICszMzgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM0NSw3ICszNDgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNjQsOCArMzY2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM4MiwxNiArMzg1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00NDIsNiArNDQ4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTQzLDYgKzU1MSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTYsOCArNTY1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTczLDYgKzU4MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MzAsMTYgKzYzOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY5MSw2ICs3MDIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzAxLDYgKzcxMyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcxMCw2ICs3MjMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQ3LDcgKzc2Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzg3LDcgKzgwMSw3IEBACiB0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogd2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYnF0c2luay5sYQorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0cXRzaW5rLmxhCiBub2luc3RfSEVBREVSUyA9IFwKIAlnc3Rxc2d0ZXh0dXJlLmggXAogCWdzdHF0c2luay5oIFwKQEAgLTgwMSwzMSArODE1LDMzIEBACiAjYW55dGhpbmcgZ2VuZXJhdGVkIGJ5IHRoZSBRdCB0b29scy4uLgogQlVJTFRfU09VUkNFUyA9ICQobW9jX2dlbmVyYXRlZCkKIENMRUFORklMRVMgPSAkKG1vY19nZW5lcmF0ZWQpCi1ub2Rpc3RfbGlicXRzaW5rX2xhX1NPVVJDRVMgPSAkKEJVSUxUX1NPVVJDRVMpCi1saWJxdHNpbmtfbGFfU09VUkNFUyA9IFwKK25vZGlzdF9saWJnc3RxdHNpbmtfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKK2xpYmdzdHF0c2lua19sYV9TT1VSQ0VTID0gXAogCWdzdHFzZ3RleHR1cmUuY2MgXAogCXF0aXRlbS5jYyBcCiAJZ3N0cXRzaW5rLmNjIFwKIAlnc3RxdHNpbmsuaCBcCisJZ3N0cXRnbC5oIFwKIAlnc3RwbHVnaW4uY2MKIAotbGlicXRzaW5rX2xhX0NYWEZMQUdTID0gXAorbGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTID0gXAogCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCiAJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAogCSQoR1NUX0NYWEZMQUdTKSBcCiAJJChHU1RfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0JJChRVF9DRkxBR1MpCisJJChRVF9DRkxBR1MpIFwKKwkkKEdMX0NGTEFHUykKIAotbGlicXRzaW5rX2xhX0xJQkFERCA9IFwKK2xpYmdzdHF0c2lua19sYV9MSUJBREQgPSBcCiAJJChHU1RfQkFTRV9MSUJTKSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAkkKFFUX0xJQlMpIFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikKIAotbGlicXRzaW5rX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYnF0c2lua19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorbGliZ3N0cXRzaW5rX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdHF0c2lua19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogYWxsOiAkKEJVSUxUX1NPVVJDRVMpCiAJJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYWxsLWFtCiAKQEAgLTg5Niw4ICs5MTIsOCBAQAogCSAgcm0gLWYgJCR7bG9jc307IFwKIAl9CiAKLWxpYnF0c2luay5sYTogJChsaWJxdHNpbmtfbGFfT0JKRUNUUykgJChsaWJxdHNpbmtfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYnF0c2lua19sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DWFhMRCkkKGxpYnF0c2lua19sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGlicXRzaW5rX2xhX09CSkVDVFMpICQobGlicXRzaW5rX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0cXRzaW5rLmxhOiAkKGxpYmdzdHF0c2lua19sYV9PQkpFQ1RTKSAkKGxpYmdzdHF0c2lua19sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0cXRzaW5rX2xhX0RFUEVOREVOQ0lFUykgCisJJChBTV9WX0NYWExEKSQobGliZ3N0cXRzaW5rX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RxdHNpbmtfbGFfT0JKRUNUUykgJChsaWJnc3RxdHNpbmtfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC05MDUsMTIgKzkyMSwxMiBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYnF0c2lua19sYS1nc3RwbHVnaW4uUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYnF0c2lua19sYS1nc3RxdHNpbmsuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJxdHNpbmtfbGEtbW9jX3F0aXRlbS5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYnF0c2lua19sYS1xdGl0ZW0uUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtZ3N0cGx1Z2luLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtZ3N0cXRzaW5rLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLW1vY19xdGl0ZW0uUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtcXRpdGVtLlBsb0BhbV9fcXVvdGVACiAKIC5jYy5vOgogQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC05MzYsNDcgKzk1Miw0NyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExUQ1hYQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGlicXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG86IGdzdHFzZ3RleHR1cmUuY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYnF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5UcG8gLWMgLW8gbGlicXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gYHRlc3QgLWYgJ2dzdHFzZ3RleHR1cmUuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHFzZ3RleHR1cmUuY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5UcG8gJChERVBESVIpL2xpYnF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0cXNndGV4dHVyZS5jYycgb2JqZWN0PSdsaWJxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0cXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG86IGdzdHFzZ3RleHR1cmUuY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdHF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5UcG8gLWMgLW8gbGliZ3N0cXRzaW5rX2xhLWdzdHFzZ3RleHR1cmUubG8gYHRlc3QgLWYgJ2dzdHFzZ3RleHR1cmUuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHFzZ3RleHR1cmUuY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5UcG8gJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYKXNvdXJjZT0nZ3N0cXNndGV4dHVyZS5jYycgb2JqZWN0PSdsaWJnc3RxdHNpbmtfbGEtZ3N0cXNndGV4dHVyZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYnF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLmxvIGB0ZXN0IC1mICdnc3Rxc2d0ZXh0dXJlLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rxc2d0ZXh0dXJlLmNjCitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdHF0c2lua19sYS1nc3Rxc2d0ZXh0dXJlLmxvIGB0ZXN0IC1mICdnc3Rxc2d0ZXh0dXJlLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rxc2d0ZXh0dXJlLmNjCiAKLWxpYnF0c2lua19sYS1xdGl0ZW0ubG86IHF0aXRlbS5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYnF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlicXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGlicXRzaW5rX2xhLXF0aXRlbS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlicXRzaW5rX2xhLXF0aXRlbS5UcG8gLWMgLW8gbGlicXRzaW5rX2xhLXF0aXRlbS5sbyBgdGVzdCAtZiAncXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2BxdGl0ZW0uY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJxdHNpbmtfbGEtcXRpdGVtLlRwbyAkKERFUERJUikvbGlicXRzaW5rX2xhLXF0aXRlbS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J3F0aXRlbS5jYycgb2JqZWN0PSdsaWJxdHNpbmtfbGEtcXRpdGVtLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RxdHNpbmtfbGEtcXRpdGVtLmxvOiBxdGl0ZW0uY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdHF0c2lua19sYS1xdGl0ZW0ubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1xdGl0ZW0uVHBvIC1jIC1vIGxpYmdzdHF0c2lua19sYS1xdGl0ZW0ubG8gYHRlc3QgLWYgJ3F0aXRlbS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgcXRpdGVtLmNjCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5UcG8gJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1xdGl0ZW0uUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdxdGl0ZW0uY2MnIG9iamVjdD0nbGliZ3N0cXRzaW5rX2xhLXF0aXRlbS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYnF0c2lua19sYS1xdGl0ZW0ubG8gYHRlc3QgLWYgJ3F0aXRlbS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgcXRpdGVtLmNjCitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdHF0c2lua19sYS1xdGl0ZW0ubG8gYHRlc3QgLWYgJ3F0aXRlbS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgcXRpdGVtLmNjCiAKLWxpYnF0c2lua19sYS1nc3RxdHNpbmsubG86IGdzdHF0c2luay5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYnF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlicXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGlicXRzaW5rX2xhLWdzdHF0c2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlicXRzaW5rX2xhLWdzdHF0c2luay5UcG8gLWMgLW8gbGlicXRzaW5rX2xhLWdzdHF0c2luay5sbyBgdGVzdCAtZiAnZ3N0cXRzaW5rLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RxdHNpbmsuY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cXRzaW5rLlRwbyAkKERFUERJUikvbGlicXRzaW5rX2xhLWdzdHF0c2luay5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdHF0c2luay5jYycgb2JqZWN0PSdsaWJxdHNpbmtfbGEtZ3N0cXRzaW5rLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RxdHNpbmtfbGEtZ3N0cXRzaW5rLmxvOiBnc3RxdHNpbmsuY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdHF0c2lua19sYS1nc3RxdHNpbmsubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3RxdHNpbmsuVHBvIC1jIC1vIGxpYmdzdHF0c2lua19sYS1nc3RxdHNpbmsubG8gYHRlc3QgLWYgJ2dzdHF0c2luay5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cXRzaW5rLmNjCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5UcG8gJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3RxdHNpbmsuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RxdHNpbmsuY2MnIG9iamVjdD0nbGliZ3N0cXRzaW5rX2xhLWdzdHF0c2luay5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYnF0c2lua19sYS1nc3RxdHNpbmsubG8gYHRlc3QgLWYgJ2dzdHF0c2luay5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cXRzaW5rLmNjCitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdHF0c2lua19sYS1nc3RxdHNpbmsubG8gYHRlc3QgLWYgJ2dzdHF0c2luay5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cXRzaW5rLmNjCiAKLWxpYnF0c2lua19sYS1nc3RwbHVnaW4ubG86IGdzdHBsdWdpbi5jYwotQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9DWFgpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYnF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlicXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtTVQgbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5UcG8gLWMgLW8gbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5sbyBgdGVzdCAtZiAnZ3N0cGx1Z2luLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbHVnaW4uY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJxdHNpbmtfbGEtZ3N0cGx1Z2luLlRwbyAkKERFUERJUikvbGlicXRzaW5rX2xhLWdzdHBsdWdpbi5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J2dzdHBsdWdpbi5jYycgb2JqZWN0PSdsaWJxdHNpbmtfbGEtZ3N0cGx1Z2luLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RxdHNpbmtfbGEtZ3N0cGx1Z2luLmxvOiBnc3RwbHVnaW4uY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdHF0c2lua19sYS1nc3RwbHVnaW4ubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3RwbHVnaW4uVHBvIC1jIC1vIGxpYmdzdHF0c2lua19sYS1nc3RwbHVnaW4ubG8gYHRlc3QgLWYgJ2dzdHBsdWdpbi5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGx1Z2luLmNjCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5UcG8gJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1nc3RwbHVnaW4uUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdnc3RwbHVnaW4uY2MnIG9iamVjdD0nbGliZ3N0cXRzaW5rX2xhLWdzdHBsdWdpbi5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYnF0c2lua19sYS1nc3RwbHVnaW4ubG8gYHRlc3QgLWYgJ2dzdHBsdWdpbi5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGx1Z2luLmNjCitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdHF0c2lua19sYS1nc3RwbHVnaW4ubG8gYHRlc3QgLWYgJ2dzdHBsdWdpbi5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGx1Z2luLmNjCiAKLWxpYnF0c2lua19sYS1tb2NfcXRpdGVtLmxvOiBtb2NfcXRpdGVtLmNjCi1AYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJxdHNpbmtfbGEtbW9jX3F0aXRlbS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGlicXRzaW5rX2xhLW1vY19xdGl0ZW0uVHBvIC1jIC1vIGxpYnF0c2lua19sYS1tb2NfcXRpdGVtLmxvIGB0ZXN0IC1mICdtb2NfcXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Btb2NfcXRpdGVtLmNjCi1AYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGlicXRzaW5rX2xhLW1vY19xdGl0ZW0uVHBvICQoREVQRElSKS9saWJxdHNpbmtfbGEtbW9jX3F0aXRlbS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J21vY19xdGl0ZW0uY2MnIG9iamVjdD0nbGlicXRzaW5rX2xhLW1vY19xdGl0ZW0ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHF0c2lua19sYS1tb2NfcXRpdGVtLmxvOiBtb2NfcXRpdGVtLmNjCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJnc3RxdHNpbmtfbGEtbW9jX3F0aXRlbS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLW1vY19xdGl0ZW0uVHBvIC1jIC1vIGxpYmdzdHF0c2lua19sYS1tb2NfcXRpdGVtLmxvIGB0ZXN0IC1mICdtb2NfcXRpdGVtLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Btb2NfcXRpdGVtLmNjCitAYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLW1vY19xdGl0ZW0uVHBvICQoREVQRElSKS9saWJnc3RxdHNpbmtfbGEtbW9jX3F0aXRlbS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J21vY19xdGl0ZW0uY2MnIG9iamVjdD0nbGliZ3N0cXRzaW5rX2xhLW1vY19xdGl0ZW0ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENYWERFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYnF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlicXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJxdHNpbmtfbGEtbW9jX3F0aXRlbS5sbyBgdGVzdCAtZiAnbW9jX3F0aXRlbS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgbW9jX3F0aXRlbS5jYworQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAkkKEFNX1ZfQ1hYQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNYWCAkKGxpYmdzdHF0c2lua19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENYWCkgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cXRzaW5rX2xhX0NYWEZMQUdTKSAkKENYWEZMQUdTKSAtYyAtbyBsaWJnc3RxdHNpbmtfbGEtbW9jX3F0aXRlbS5sbyBgdGVzdCAtZiAnbW9jX3F0aXRlbS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgbW9jX3F0aXRlbS5jYwogCi1saWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUubG86IG1vY19nc3Rxc2d0ZXh0dXJlLmNjCi1AYW1fX2Zhc3RkZXBDWFhfVFJVRUAJJChBTV9WX0NYWCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1NVCBsaWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5UcG8gLWMgLW8gbGlicXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLmxvIGB0ZXN0IC1mICdtb2NfZ3N0cXNndGV4dHVyZS5jYycgfHwgZWNobyAnJChzcmNkaXIpLydgbW9jX2dzdHFzZ3RleHR1cmUuY2MKLUBhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUuVHBvICQoREVQRElSKS9saWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFgpc291cmNlPSdtb2NfZ3N0cXNndGV4dHVyZS5jYycgb2JqZWN0PSdsaWJxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbzogbW9jX2dzdHFzZ3RleHR1cmUuY2MKK0BhbV9fZmFzdGRlcENYWF9UUlVFQAkkKEFNX1ZfQ1hYKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DWFggJChsaWJnc3RxdHNpbmtfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDWFgpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHF0c2lua19sYV9DWFhGTEFHUykgJChDWFhGTEFHUykgLU1UIGxpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cXRzaW5rX2xhLW1vY19nc3Rxc2d0ZXh0dXJlLlRwbyAtYyAtbyBsaWJnc3RxdHNpbmtfbGEtbW9jX2dzdHFzZ3RleHR1cmUubG8gYHRlc3QgLWYgJ21vY19nc3Rxc2d0ZXh0dXJlLmNjJyB8fCBlY2hvICckKHNyY2RpcikvJ2Btb2NfZ3N0cXNndGV4dHVyZS5jYworQGFtX19mYXN0ZGVwQ1hYX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5UcG8gJChERVBESVIpL2xpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENYWF9GQUxTRUAJJChBTV9WX0NYWClzb3VyY2U9J21vY19nc3Rxc2d0ZXh0dXJlLmNjJyBvYmplY3Q9J2xpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ1hYX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ1hYREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGlicXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYnF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbyBgdGVzdCAtZiAnbW9jX2dzdHFzZ3RleHR1cmUuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1vY19nc3Rxc2d0ZXh0dXJlLmNjCitAYW1fX2Zhc3RkZXBDWFhfRkFMU0VACSQoQU1fVl9DWFhAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q1hYICQobGliZ3N0cXRzaW5rX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ1hYKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RxdHNpbmtfbGFfQ1hYRkxBR1MpICQoQ1hYRkxBR1MpIC1jIC1vIGxpYmdzdHF0c2lua19sYS1tb2NfZ3N0cXNndGV4dHVyZS5sbyBgdGVzdCAtZiAnbW9jX2dzdHFzZ3RleHR1cmUuY2MnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1vY19nc3Rxc2d0ZXh0dXJlLmNjCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KQEAgLTExOTksNyArMTIxNSw3IEBACiAKIAogJChtb2NfZ2VuZXJhdGVkKTogbW9jXyUuY2M6ICUuaAotCUBNT0NAIC1vICRAICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKE1PQ19DUFBGTEFHUykgJDwKKwlATU9DQCAtbyAkQCAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChNT0NfQ1BQRkxBR1MpICQ8CiAKIHVpLSUuaDogJS51aQogCUBVSUNAIC1vICRAICQ8CmRpZmYgLS1naXQgYS9leHQvcXQvZ3N0cGx1Z2luLmNjIGIvZXh0L3F0L2dzdHBsdWdpbi5jYwppbmRleCA3MGI2MzEwLi4yZmExMGY1IDEwMDY0NAotLS0gYS9leHQvcXQvZ3N0cGx1Z2luLmNjCisrKyBiL2V4dC9xdC9nc3RwbHVnaW4uY2MKQEAgLTIzLDcgKzIzLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiZ3N0cXRzaW5rLmgiCi0jaW5jbHVkZSA8UVFtbEFwcGxpY2F0aW9uRW5naW5lPgorI2luY2x1ZGUgPFF0UW1sL1FRbWxBcHBsaWNhdGlvbkVuZ2luZT4KIAogc3RhdGljIGdib29sZWFuCiBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQpkaWZmIC0tZ2l0IGEvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MgYi9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYwppbmRleCAwOTg2YTgyLi4xMzIwOGMwIDEwMDY0NAotLS0gYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYworKysgYi9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYwpAQCAtMTExLDcgKzExMSw3IEBACiAgIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkgKHRoaXMtPmJ1ZmZlcl8sIDApOwogICBnX2Fzc2VydCAoZ3N0X2lzX2dsX21lbW9yeSAobWVtKSk7CiAKLSAgY29udGV4dCA9ICgoR3N0R0xCYXNlQnVmZmVyICopbWVtKS0+Y29udGV4dDsKKyAgY29udGV4dCA9ICgoR3N0R0xCYXNlTWVtb3J5ICopbWVtKS0+Y29udGV4dDsKIAogICBzeW5jX21ldGEgPSBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEgKHRoaXMtPnN5bmNfYnVmZmVyXyk7CiAgIGlmICghc3luY19tZXRhKQpkaWZmIC0tZ2l0IGEvZXh0L3F0L2dzdHFzZ3RleHR1cmUuaCBiL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmgKaW5kZXggYmY4ZjAzZi4uYTVhNmY5ZiAxMDA2NDQKLS0tIGEvZXh0L3F0L2dzdHFzZ3RleHR1cmUuaAorKysgYi9leHQvcXQvZ3N0cXNndGV4dHVyZS5oCkBAIC0yMiwxMSArMjIsMTMgQEAKICNkZWZpbmUgX19HU1RfUVNHX1RFWFRVUkVfSF9fCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8UVNHVGV4dHVyZT4KLSNpbmNsdWRlIDxRT3BlbkdMRnVuY3Rpb25zPgogI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgogI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgogCisjaW5jbHVkZSAiZ3N0cXRnbC5oIgorI2luY2x1ZGUgPFF0UXVpY2svUVNHVGV4dHVyZT4KKyNpbmNsdWRlIDxRdEd1aS9RT3BlbkdMRnVuY3Rpb25zPgorCiBjbGFzcyBHc3RRU0dUZXh0dXJlIDogcHVibGljIFFTR1RleHR1cmUsIHByb3RlY3RlZCBRT3BlbkdMRnVuY3Rpb25zCiB7CiAgICAgUV9PQkpFQ1QKZGlmZiAtLWdpdCBhL2V4dC9xdC9nc3RxdGdsLmggYi9leHQvcXQvZ3N0cXRnbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3M2VmMjIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvcXQvZ3N0cXRnbC5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyogcXQgdXNlcyB0aGUgc2FtZSB0cmljayBhcyB1cyB0byB0eXBlZGVmIEdMc3luYyBvbiBnbGVzMiBidXQgdG8gYSBkaWZmZXJlbnQKKyAqIHR5cGUgd2hpY2ggY29uZnVzZXMgdGhlIHByZXByb2Nlc3Nvci4gIEFzIGl0J3MgbmV2ZXIgYWN0dWFsbHkgdXNlZCBieSBxdAorICogcHVibGljIGhlYWRlcnMsIGRlZmluZSBpdCB0byBzb21ldGhpbmcgZWxzZSB0byBhdm9pZCByZWRlZmluaXRpb24KKyAqIHdhcm5pbmdzL2Vycm9ycyAqLworCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29uZmlnLmg+CisjaW5jbHVkZSA8UXRDb3JlL3FnbG9iYWwuaD4KKworI2lmIGRlZmluZWQoUVRfT1BFTkdMX0VTXzIpICYmIEdTVF9HTF9IQVZFX1dJTkRPV19BTkRST0lECisjZGVmaW5lIEdMc3luYyBnc3RfcXRfR0xzeW5jCisjaW5jbHVkZSA8UU9wZW5HTENvbnRleHQ+CisjaW5jbHVkZSA8UU9wZW5HTEZ1bmN0aW9ucz4KKyN1bmRlZiBHTHN5bmMKKyNlbmRpZiAvKiBkZWZpbmVkKFFUX09QRU5HTF9FU18yKSAqLwpkaWZmIC0tZ2l0IGEvZXh0L3F0L2dzdHF0c2luay5jYyBiL2V4dC9xdC9nc3RxdHNpbmsuY2MKaW5kZXggOWZmMTNiMC4uZGY0NGE3ZCAxMDA2NDQKLS0tIGEvZXh0L3F0L2dzdHF0c2luay5jYworKysgYi9leHQvcXQvZ3N0cXRzaW5rLmNjCkBAIC0yOCw3ICsyOCw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImdzdHF0c2luay5oIgotI2luY2x1ZGUgPFFHdWlBcHBsaWNhdGlvbj4KKyNpbmNsdWRlIDxRdEd1aS9RR3VpQXBwbGljYXRpb24+CiAKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9kZWJ1Z19xdF9nbF9zaW5rCiBHU1RfREVCVUdfQ0FURUdPUlkgKEdTVF9DQVRfREVGQVVMVCk7CkBAIC01OCw4ICs1OCwxMiBAQAogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKLSAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgIlJHQkEiKSkpOworICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIpLCAiCisgICAgImZvcm1hdCA9IChzdHJpbmcpIFJHQkEsICIKKyAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCAiCisgICAgInRleHR1cmUtdGFyZ2V0ID0gKHN0cmluZykgMkQiKSk7CiAKICNkZWZpbmUgREVGQVVMVF9GT1JDRV9BU1BFQ1RfUkFUSU8gIFRSVUUKICNkZWZpbmUgREVGQVVMVF9QQVJfTiAgICAgICAgICAgICAgIDAKQEAgLTI3MSw2ICsyNzUsOCBAQAogCiAgICAgICBpZiAocmV0KQogICAgICAgICByZXR1cm4gcmV0OworCisgICAgICAvKiBmYWxsdGhyb3VnaCAqLwogICAgIH0KICAgICBkZWZhdWx0OgogICAgICAgcmVzID0gR1NUX0JBU0VfU0lOS19DTEFTUyAocGFyZW50X2NsYXNzKS0+cXVlcnkgKGJzaW5rLCBxdWVyeSk7CkBAIC0yOTksNyArMzA1LDcgQEAKIAogICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKLSAgICAgIGFwcCA9IGR5bmFtaWNfY2FzdDxRR3VpQXBwbGljYXRpb24gKj4gKFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlICgpKTsKKyAgICAgIGFwcCA9IHN0YXRpY19jYXN0PFFHdWlBcHBsaWNhdGlvbiAqPiAoUUNvcmVBcHBsaWNhdGlvbjo6aW5zdGFuY2UgKCkpOwogICAgICAgaWYgKCFhcHApIHsKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGVsZW1lbnQsIFJFU09VUkNFLCBOT1RfRk9VTkQsCiAgICAgICAgICAgICAoIiVzIiwgIkZhaWxlZCB0byBjb25uZWN0IHRvIFF0IiksCmRpZmYgLS1naXQgYS9leHQvcXQvcXRpdGVtLmNjIGIvZXh0L3F0L3F0aXRlbS5jYwppbmRleCBhYjY0ZDllLi5lMWY5MWU3IDEwMDY0NAotLS0gYS9leHQvcXQvcXRpdGVtLmNjCisrKyBiL2V4dC9xdC9xdGl0ZW0uY2MKQEAgLTI1LDEyICsyNSwxNCBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSNpbmNsdWRlIDxRR3VpQXBwbGljYXRpb24+Ci0jaW5jbHVkZSA8UVF1aWNrV2luZG93PgotI2luY2x1ZGUgPFFTR1NpbXBsZVRleHR1cmVOb2RlPgogI2luY2x1ZGUgInF0aXRlbS5oIgogI2luY2x1ZGUgImdzdHFzZ3RleHR1cmUuaCIKIAorI2luY2x1ZGUgPFF0Q29yZS9RUnVubmFibGU+CisjaW5jbHVkZSA8UXRHdWkvUUd1aUFwcGxpY2F0aW9uPgorI2luY2x1ZGUgPFF0UXVpY2svUVF1aWNrV2luZG93PgorI2luY2x1ZGUgPFF0UXVpY2svUVNHU2ltcGxlVGV4dHVyZU5vZGU+CisKICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfWDExICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0dMWCAmJiBkZWZpbmVkIChIQVZFX1FUX1gxMSkKICNpbmNsdWRlIDxRWDExSW5mbz4KICNpbmNsdWRlIDxnc3QvZ2wveDExL2dzdGdsZGlzcGxheV94MTEuaD4KQEAgLTQxLDYgKzQzLDE1IEBACiAjaW5jbHVkZSA8Z3N0L2dsL3dheWxhbmQvZ3N0Z2xkaXNwbGF5X3dheWxhbmQuaD4KICNlbmRpZgogCisjaWYgR1NUX0dMX0hBVkVfV0lORE9XX0FORFJPSUQgJiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMICYmIGRlZmluZWQgKEhBVkVfUVRfQU5EUk9JRCkKKyNpbmNsdWRlIDxnc3QvZ2wvZWdsL2dzdGdsZGlzcGxheV9lZ2wuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaD4KKyNlbmRpZgorCisjaWYgR1NUX0dMX0hBVkVfV0lORE9XX0NPQ09BICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0NPQ09BICYmIGRlZmluZWQgKEhBVkVfUVRfTUFDKQorI2luY2x1ZGUgPGdzdC9nbC9jb2FvYS9nc3RnbGRpc3BsYXlfY29jb2EuaD4KKyNlbmRpZgorCiAvKioKICAqIFNFQ1RJT046Z3RrZ3N0Z2x3aWRnZXQKICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogYSAjR3RrR0xBcmVhIHRoYXQgcmVuZGVycyBHU3RyZWFtZXIgdmlkZW8gI0dzdEJ1ZmZlcnMKQEAgLTg5LDkgKzEwMCwyOSBAQAogICBHc3RHTENvbnRleHQgKmNvbnRleHQ7CiB9OwogCitjbGFzcyBJbml0aWFsaXplU2NlbmVHcmFwaCA6IHB1YmxpYyBRUnVubmFibGUKK3sKK3B1YmxpYzoKKyAgSW5pdGlhbGl6ZVNjZW5lR3JhcGgoUXRHTFZpZGVvSXRlbSAqaXRlbSk7CisgIHZvaWQgcnVuKCk7CisKK3ByaXZhdGU6CisgIFF0R0xWaWRlb0l0ZW0gKml0ZW1fOworfTsKKworSW5pdGlhbGl6ZVNjZW5lR3JhcGg6OkluaXRpYWxpemVTY2VuZUdyYXBoKFF0R0xWaWRlb0l0ZW0gKml0ZW0pIDoKKyAgaXRlbV8oaXRlbSkKK3sKK30KKwordm9pZCBJbml0aWFsaXplU2NlbmVHcmFwaDo6cnVuKCkKK3sKKyAgaXRlbV8tPm9uU2NlbmVHcmFwaEluaXRpYWxpemVkKCk7Cit9CisKIFF0R0xWaWRlb0l0ZW06OlF0R0xWaWRlb0l0ZW0oKQogewotICBRR3VpQXBwbGljYXRpb24gKmFwcCA9IGR5bmFtaWNfY2FzdDxRR3VpQXBwbGljYXRpb24gKj4gKFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlICgpKTsKKyAgUUd1aUFwcGxpY2F0aW9uICphcHAgPSBzdGF0aWNfY2FzdDxRR3VpQXBwbGljYXRpb24gKj4gKFFDb3JlQXBwbGljYXRpb246Omluc3RhbmNlICgpKTsKICAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9kZWJ1ZzsKIAogICBnX2Fzc2VydCAoYXBwICE9IE5VTEwpOwpAQCAtMTAwLDcgKzEzMSw3IEBACiAgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfREVGQVVMVCwgInF0Z2x3aWRnZXQiLCAwLCAiUXQgR0wgV2lkZ2V0Iik7CiAgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfZGVidWcsIDEpOwogICB9Ci0KKyAgdGhpcy0+bV9vcGVuR2xDb250ZXh0SW5pdGlhbGl6ZWQgPSBmYWxzZTsKICAgdGhpcy0+c2V0RmxhZyAoUVF1aWNrSXRlbTo6SXRlbUhhc0NvbnRlbnRzLCB0cnVlKTsKIAogICB0aGlzLT5wcml2ID0gZ19uZXcwIChRdEdMVmlkZW9JdGVtUHJpdmF0ZSwgMSk7CkBAIC0xMTYsNiArMTQ3LDE4IEBACiAgICAgdGhpcy0+cHJpdi0+ZGlzcGxheSA9IChHc3RHTERpc3BsYXkgKikKICAgICAgICAgZ3N0X2dsX2Rpc3BsYXlfeDExX25ld193aXRoX2Rpc3BsYXkgKFFYMTFJbmZvOjpkaXNwbGF5ICgpKTsKICNlbmRpZgorI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19BTkRST0lEICYmIEdTVF9HTF9IQVZFX1BMQVRGT1JNX0VHTCAmJiBkZWZpbmVkIChIQVZFX1FUX0FORFJPSUQpCisgIGlmIChRU3RyaW5nOjpmcm9tVXRmOCAoImFuZHJvaWQiKSA9PSBhcHAtPnBsYXRmb3JtTmFtZSgpKQorICAgIHRoaXMtPnByaXYtPmRpc3BsYXkgPSAoR3N0R0xEaXNwbGF5ICopIGdzdF9nbF9kaXNwbGF5X2VnbF9uZXcgKCk7CisjZW5kaWYKKyNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfQ09DT0EgJiYgR1NUX0dMX0hBVkVfUExBVEZPUk1fQ09DT0EgJiYgZGVmaW5lZCAoSEFWRV9RVF9NQUMpCisgIGlmIChRU3RyaW5nOjpmcm9tVXRmOCAoImNvY29hIikgPT0gYXBwLT5wbGF0Zm9ybU5hbWUoKSkKKyAgICB0aGlzLT5wcml2LT5kaXNwbGF5ID0gKEdzdEdMRGlzcGxheSAqKSBnc3RfZ2xfZGlzcGxheV9jb2NvYV9uZXcgKCk7CisjZW5kaWYKKyNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfRUFHTCAmJiBHU1RfR0xfSEFWRV9QTEFURk9STV9FQUdMICYmIGRlZmluZWQgKEhBVkVfUVRfSU9TKQorICBpZiAoUVN0cmluZzo6ZnJvbVV0ZjggKCJpb3MiKSA9PSBhcHAtPnBsYXRmb3JtTmFtZSgpKQorICAgIHRoaXMtPnByaXYtPmRpc3BsYXkgPSBnc3RfZ2xfZGlzcGxheV9uZXcgKCk7CisjZW5kaWYKIAogICBpZiAoIXRoaXMtPnByaXYtPmRpc3BsYXkpCiAgICAgdGhpcy0+cHJpdi0+ZGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X25ldyAoKTsKQEAgLTEyOSw3ICsxNzIsMTAgQEAKIFF0R0xWaWRlb0l0ZW06On5RdEdMVmlkZW9JdGVtKCkKIHsKICAgZ19tdXRleF9jbGVhciAoJnRoaXMtPnByaXYtPmxvY2spOwotCisgIGlmICh0aGlzLT5wcml2LT5jb250ZXh0KQorICAgIGdzdF9vYmplY3RfdW5yZWYodGhpcy0+cHJpdi0+Y29udGV4dCk7CisgIGlmICh0aGlzLT5wcml2LT5vdGhlcl9jb250ZXh0KQorICAgIGdzdF9vYmplY3RfdW5yZWYodGhpcy0+cHJpdi0+b3RoZXJfY29udGV4dCk7CiAgIGdfZnJlZSAodGhpcy0+cHJpdik7CiAgIHRoaXMtPnByaXYgPSBOVUxMOwogfQpAQCAtMTY2LDYgKzIxMiwxMCBAQAogUXRHTFZpZGVvSXRlbTo6dXBkYXRlUGFpbnROb2RlKFFTR05vZGUgKiBvbGROb2RlLAogICAgIFVwZGF0ZVBhaW50Tm9kZURhdGEgKiB1cGRhdGVQYWludE5vZGVEYXRhKQogeworICBpZiAoIW1fb3BlbkdsQ29udGV4dEluaXRpYWxpemVkKSB7CisgICAgcmV0dXJuIG9sZE5vZGU7CisgIH0KKwogICBRU0dTaW1wbGVUZXh0dXJlTm9kZSAqdGV4Tm9kZSA9IHN0YXRpY19jYXN0PFFTR1NpbXBsZVRleHR1cmVOb2RlICo+IChvbGROb2RlKTsKICAgR3N0VmlkZW9SZWN0YW5nbGUgc3JjLCBkc3QsIHJlc3VsdDsKICAgR3N0UVNHVGV4dHVyZSAqdGV4OwpAQCAtMjgzLDYgKzMzMywzOSBAQAogICAgICAgICAgIHBsYXRmb3JtLCBnbF9hcGkpOwogICB9CiAjZW5kaWYKKyNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfQU5EUk9JRCAmJiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wgJiYgZGVmaW5lZCAoSEFWRV9RVF9BTkRST0lEKQorICBpZiAoR1NUX0lTX0dMX0RJU1BMQVlfRUdMICh0aGlzLT5wcml2LT5kaXNwbGF5KSkgeworICAgIHBsYXRmb3JtID0gR1NUX0dMX1BMQVRGT1JNX0VHTDsKKyAgICBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9hcGkgKHBsYXRmb3JtLCBOVUxMLCBOVUxMKTsKKyAgICBnbF9oYW5kbGUgPSBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9jb250ZXh0IChwbGF0Zm9ybSk7CisgICAgaWYgKGdsX2hhbmRsZSkKKyAgICAgIHRoaXMtPnByaXYtPm90aGVyX2NvbnRleHQgPQorICAgICAgICAgIGdzdF9nbF9jb250ZXh0X25ld193cmFwcGVkICh0aGlzLT5wcml2LT5kaXNwbGF5LCBnbF9oYW5kbGUsCisgICAgICAgICAgcGxhdGZvcm0sIGdsX2FwaSk7CisgIH0KKyNlbmRpZgorI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19DT0NPQSAmJiBHU1RfR0xfSEFWRV9QTEFURk9STV9DT0NPQSAmJiBkZWZpbmVkIChIQVZFX1FUX01BQykKKyAgaWYgKHRoaXMtPnByaXYtPmRpc3BsYXkpIHsKKyAgICBwbGF0Zm9ybSA9IEdTVF9HTF9QTEFURk9STV9DR0w7CisgICAgZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfYXBpIChwbGF0Zm9ybSwgTlVMTCwgTlVMTCk7CisgICAgZ2xfaGFuZGxlID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfY29udGV4dCAocGxhdGZvcm0pOworICAgIGlmIChnbF9oYW5kbGUpCisgICAgICB0aGlzLT5wcml2LT5vdGhlcl9jb250ZXh0ID0KKyAgICAgICAgICBnc3RfZ2xfY29udGV4dF9uZXdfd3JhcHBlZCAodGhpcy0+cHJpdi0+ZGlzcGxheSwgZ2xfaGFuZGxlLAorICAgICAgICAgIHBsYXRmb3JtLCBnbF9hcGkpOworICB9CisjZW5kaWYKKyNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfRUFHTCAmJiBHU1RfR0xfSEFWRV9QTEFURk9STV9FQUdMICYmIGRlZmluZWQgKEhBVkVfUVRfSU9TKQorICBpZiAodGhpcy0+cHJpdi0+ZGlzcGxheSkgeworICAgIHBsYXRmb3JtID0gR1NUX0dMX1BMQVRGT1JNX0VBR0w7CisgICAgZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfYXBpIChwbGF0Zm9ybSwgTlVMTCwgTlVMTCk7CisgICAgZ2xfaGFuZGxlID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2N1cnJlbnRfZ2xfY29udGV4dCAocGxhdGZvcm0pOworICAgIGlmIChnbF9oYW5kbGUpCisgICAgICB0aGlzLT5wcml2LT5vdGhlcl9jb250ZXh0ID0KKyAgICAgICAgICBnc3RfZ2xfY29udGV4dF9uZXdfd3JhcHBlZCAodGhpcy0+cHJpdi0+ZGlzcGxheSwgZ2xfaGFuZGxlLAorICAgICAgICAgIHBsYXRmb3JtLCBnbF9hcGkpOworICB9CisjZW5kaWYKIAogICAodm9pZCkgcGxhdGZvcm07CiAgICh2b2lkKSBnbF9hcGk7CkBAIC0yOTksNiArMzgyLDcgQEAKICAgICB9IGVsc2UgewogICAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAodGhpcy0+cHJpdi0+ZGlzcGxheSwgZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAodGhpcy0+cHJpdi0+b3RoZXJfY29udGV4dCkpOwogICAgICAgZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGUgKHRoaXMtPnByaXYtPm90aGVyX2NvbnRleHQsIEZBTFNFKTsKKyAgICAgIG1fb3BlbkdsQ29udGV4dEluaXRpYWxpemVkID0gdHJ1ZTsKICAgICB9CiAgIH0KIApAQCAtMzMzLDcgKzQxNyw3IEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKLSAgaWYgKCFHU1RfR0xfSVNfQ09OVEVYVCAod2lkZ2V0LT5wcml2LT5vdGhlcl9jb250ZXh0KSkgeworICBpZiAoIUdTVF9JU19HTF9DT05URVhUICh3aWRnZXQtPnByaXYtPm90aGVyX2NvbnRleHQpKSB7CiAgICAgR1NUX0VSUk9SICgiJXAgZmFpbGVkIHRvIHJldHJpZXZlIHdyYXBwZWQgY29udGV4dCAlIiBHU1RfUFRSX0ZPUk1BVCwgd2lkZ2V0LAogICAgICAgICB3aWRnZXQtPnByaXYtPm90aGVyX2NvbnRleHQpOwogICAgIGdfbXV0ZXhfdW5sb2NrICgmd2lkZ2V0LT5wcml2LT5sb2NrKTsKQEAgLTM1OSw5ICs0NDMsOSBAQAogewogICBpZiAod2luKSB7CiAgICAgaWYgKHdpbi0+aXNTY2VuZUdyYXBoSW5pdGlhbGl6ZWQoKSkKLSAgICAgIG9uU2NlbmVHcmFwaEluaXRpYWxpemVkKCk7CisgICAgICB3aW4tPnNjaGVkdWxlUmVuZGVySm9iKG5ldyBJbml0aWFsaXplU2NlbmVHcmFwaCh0aGlzKSwgUVF1aWNrV2luZG93OjpCZWZvcmVTeW5jaHJvbml6aW5nU3RhZ2UpOwogICAgIGVsc2UKLQkgIGNvbm5lY3Qod2luLCBTSUdOQUwoc2NlbmVHcmFwaEluaXRpYWxpemVkKCkpLCB0aGlzLCBTTE9UKG9uU2NlbmVHcmFwaEluaXRpYWxpemVkKCkpLCBRdDo6RGlyZWN0Q29ubmVjdGlvbik7CisgICAgICBjb25uZWN0KHdpbiwgU0lHTkFMKHNjZW5lR3JhcGhJbml0aWFsaXplZCgpKSwgdGhpcywgU0xPVChvblNjZW5lR3JhcGhJbml0aWFsaXplZCgpKSwgUXQ6OkRpcmVjdENvbm5lY3Rpb24pOwogCiAgICAgY29ubmVjdCh3aW4sIFNJR05BTChzY2VuZUdyYXBoSW52YWxpZGF0ZWQoKSksIHRoaXMsIFNMT1Qob25TY2VuZUdyYXBoSW52YWxpZGF0ZWQoKSksIFF0OjpEaXJlY3RDb25uZWN0aW9uKTsKICAgfSBlbHNlIHsKZGlmZiAtLWdpdCBhL2V4dC9xdC9xdGl0ZW0uaCBiL2V4dC9xdC9xdGl0ZW0uaAppbmRleCBhZmQyODY5Li5hZTIzZWZmIDEwMDY0NAotLS0gYS9leHQvcXQvcXRpdGVtLmgKKysrIGIvZXh0L3F0L3F0aXRlbS5oCkBAIC0yMywxMiArMjMsMTYgQEAKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KLSNpbmNsdWRlIDxRUXVpY2tJdGVtPgotI2luY2x1ZGUgPFFPcGVuR0xDb250ZXh0PgotI2luY2x1ZGUgPFFPcGVuR0xGdW5jdGlvbnM+CisKKyNpbmNsdWRlICJnc3RxdGdsLmgiCisjaW5jbHVkZSA8UXRRdWljay9RUXVpY2tJdGVtPgorI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xDb250ZXh0PgorI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xGdW5jdGlvbnM+CiAKIHR5cGVkZWYgc3RydWN0IF9RdEdMVmlkZW9JdGVtUHJpdmF0ZSBRdEdMVmlkZW9JdGVtUHJpdmF0ZTsKIAorY2xhc3MgSW5pdGlhbGl6ZVNjZW5lR3JhcGg7CisKIGNsYXNzIFF0R0xWaWRlb0l0ZW0gOiBwdWJsaWMgUVF1aWNrSXRlbSwgcHJvdGVjdGVkIFFPcGVuR0xGdW5jdGlvbnMKIHsKICAgICBRX09CSkVDVApAQCAtNTMsMTAgKzU3LDEyIEBACiAgICAgUVNHTm9kZSAqIHVwZGF0ZVBhaW50Tm9kZSAoUVNHTm9kZSAqIG9sZE5vZGUsIFVwZGF0ZVBhaW50Tm9kZURhdGEgKiB1cGRhdGVQYWludE5vZGVEYXRhKTsKIAogcHJpdmF0ZToKKyAgICBmcmllbmQgY2xhc3MgSW5pdGlhbGl6ZVNjZW5lR3JhcGg7CiAgICAgdm9pZCBzZXRWaWV3cG9ydFNpemUoY29uc3QgUVNpemUgJnNpemUpOwogICAgIHZvaWQgc2hhcmVDb250ZXh0KCk7CiAKICAgICBRU2l6ZSBtX3ZpZXdwb3J0U2l6ZTsKKyAgICBib29sIG1fb3BlbkdsQ29udGV4dEluaXRpYWxpemVkOwogfTsKIAogZXh0ZXJuICJDIgpkaWZmIC0tZ2l0IGEvZXh0L3Jlc2luZHZkL01ha2VmaWxlLmluIGIvZXh0L3Jlc2luZHZkL01ha2VmaWxlLmluCmluZGV4IDEyZGMwNjIuLjA5YzAyM2IgMTAwNjQ0Ci0tLSBhL2V4dC9yZXNpbmR2ZC9NYWtlZmlsZS5pbgorKysgYi9leHQvcmVzaW5kdmQvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjg0LDYgKzI4Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzIxLDYgKzMyMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI5LDcgKzMzMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0OCw4ICszNTAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY2LDE2ICszNjksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDAxLDYgKzQwNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNiw2ICs0MzIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjcsNiArNTM1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0MCw4ICs1NDksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTcsNiArNTY0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxNCwxNiArNjIzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODUsNiArNjk3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk0LDYgKzcwNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzEsNyArNzQ2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvcmVzaW5kdmQvcmVzaW4tcGxheSBiL2V4dC9yZXNpbmR2ZC9yZXNpbi1wbGF5CmluZGV4IDUwNjZlNWIuLjQ2YjM2Y2YgMTAwNzU1Ci0tLSBhL2V4dC9yZXNpbmR2ZC9yZXNpbi1wbGF5CisrKyBiL2V4dC9yZXNpbmR2ZC9yZXNpbi1wbGF5CkBAIC02LDcgKzYsNyBAQAogICBERVZJQ0VfT1BUPSIiCiBmaQogCi1nc3QtbGF1bmNoIHJzbmR2ZGJpbiBuYW1lPWR2ZCAiJERFVklDRV9PUFQiIFwKK2dzdC1sYXVuY2gtMS4wIHJzbmR2ZGJpbiBuYW1lPWR2ZCAiJERFVklDRV9PUFQiIFwKICAgIGR2ZHNwdSBuYW1lPXNwdSAhIHZpZGVvY29udmVydCAhIHZpZGVvc2NhbGUgISB4aW1hZ2VzaW5rIGZvcmNlLWFzcGVjdC1yYXRpbz10cnVlIFwKICAgIGR2ZC4gISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTMgbWF4LXNpemUtYnl0ZXM9MCAhIHNwdS52aWRlbyBcCiAgICBkdmQuICEgc3B1LnN1YnBpY3R1cmUgXApkaWZmIC0tZ2l0IGEvZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXkyIGIvZXh0L3Jlc2luZHZkL3Jlc2luLXBsYXkyCmluZGV4IGUzNWE3MzIuLmVkODlhNTAgMTAwNzU1Ci0tLSBhL2V4dC9yZXNpbmR2ZC9yZXNpbi1wbGF5MgorKysgYi9leHQvcmVzaW5kdmQvcmVzaW4tcGxheTIKQEAgLTYsNyArNiw3IEBACiAgIERFVklDRV9PUFQ9IiIKIGZpCiAKLWdzdC1sYXVuY2ggcnNuZHZkYmluIG5hbWU9ZHZkICIkREVWSUNFX09QVCIgXAorZ3N0LWxhdW5jaC0xLjAgcnNuZHZkYmluIG5hbWU9ZHZkICIkREVWSUNFX09QVCIgXAogICAgZHZkc3B1IG5hbWU9c3B1ICEgZGVpbnRlcmxhY2UgISB4dmltYWdlc2luayBmb3JjZS1hc3BlY3QtcmF0aW89ZmFsc2UgXAogICAgZHZkLiAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MyBtYXgtc2l6ZS1ieXRlcz0wICEgc3B1LnZpZGVvIFwKICAgIGR2ZC4gISBzcHUuc3VicGljdHVyZSBcCmRpZmYgLS1naXQgYS9leHQvcmVzaW5kdmQvcmVzaW5kdmRiaW4uYyBiL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5jCmluZGV4IGY5Y2M1YmQuLjEwN2Y5ZDYgMTAwNjQ0Ci0tLSBhL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5jCisrKyBiL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZGJpbi5jCkBAIC0zMiw3ICszMiw2IEBACiAjaW5jbHVkZSAicmVzaW5kdmRiaW4uaCIKICNpbmNsdWRlICJyZXNpbmR2ZHNyYy5oIgogI2luY2x1ZGUgInJzbmlucHV0c2VsZWN0b3IuaCIKLS8vICNpbmNsdWRlICJyc25hdWRpb211bmdlLmgiCiAjaW5jbHVkZSAicnNuZGVjLmgiCiAjaW5jbHVkZSAicnNucGFyc2V0dGVyLmgiCiAKQEAgLTQzLDExICs0MiwxMSBAQAogR1NUX0RFQlVHX0NBVEVHT1JZX0VYVEVSTiAocmVzaW5kdmRfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgcmVzaW5kdmRfZGVidWcKIAotI2RlZmluZSBEVkRCSU5fTE9DSyhkKSBnX211dGV4X2xvY2soKGQpLT5kdmRfbG9jaykKLSNkZWZpbmUgRFZEQklOX1VOTE9DSyhkKSBnX211dGV4X3VubG9jaygoZCktPmR2ZF9sb2NrKQorI2RlZmluZSBEVkRCSU5fTE9DSyhkKSBnX211dGV4X2xvY2soJihkKS0+ZHZkX2xvY2spCisjZGVmaW5lIERWREJJTl9VTkxPQ0soZCkgZ19tdXRleF91bmxvY2soJihkKS0+ZHZkX2xvY2spCiAKLSNkZWZpbmUgRFZEQklOX1BSRVJPTExfTE9DSyhkKSBnX211dGV4X2xvY2soKGQpLT5wcmVyb2xsX2xvY2spCi0jZGVmaW5lIERWREJJTl9QUkVST0xMX1VOTE9DSyhkKSBnX211dGV4X3VubG9jaygoZCktPnByZXJvbGxfbG9jaykKKyNkZWZpbmUgRFZEQklOX1BSRVJPTExfTE9DSyhkKSBnX211dGV4X2xvY2soJihkKS0+cHJlcm9sbF9sb2NrKQorI2RlZmluZSBEVkRCSU5fUFJFUk9MTF9VTkxPQ0soZCkgZ19tdXRleF91bmxvY2soJihkKS0+cHJlcm9sbF9sb2NrKQogCiAjZGVmaW5lIERFRkFVTFRfREVWSUNFICIvZGV2L2R2ZCIKIGVudW0KQEAgLTEzNSw4ICsxMzQsOCBAQAogc3RhdGljIHZvaWQKIHJzbl9kdmRiaW5faW5pdCAoUnNuRHZkQmluICogZHZkYmluKQogewotICBkdmRiaW4tPmR2ZF9sb2NrID0gZ19tdXRleF9uZXcgKCk7Ci0gIGR2ZGJpbi0+cHJlcm9sbF9sb2NrID0gZ19tdXRleF9uZXcgKCk7CisgIGdfbXV0ZXhfaW5pdCAoJmR2ZGJpbi0+ZHZkX2xvY2spOworICBnX211dGV4X2luaXQgKCZkdmRiaW4tPnByZXJvbGxfbG9jayk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDQsOCArMTQzLDggQEAKIHsKICAgUnNuRHZkQmluICpkdmRiaW4gPSBSRVNJTkRWREJJTiAob2JqZWN0KTsKIAotICBnX211dGV4X2ZyZWUgKGR2ZGJpbi0+ZHZkX2xvY2spOwotICBnX211dGV4X2ZyZWUgKGR2ZGJpbi0+cHJlcm9sbF9sb2NrKTsKKyAgZ19tdXRleF9jbGVhciAoJmR2ZGJpbi0+ZHZkX2xvY2spOworICBnX211dGV4X2NsZWFyICgmZHZkYmluLT5wcmVyb2xsX2xvY2spOwogICBnX2ZyZWUgKGR2ZGJpbi0+bGFzdF91cmkpOwogICBnX2ZyZWUgKGR2ZGJpbi0+ZGV2aWNlKTsKIApkaWZmIC0tZ2l0IGEvZXh0L3Jlc2luZHZkL3Jlc2luZHZkYmluLmggYi9leHQvcmVzaW5kdmQvcmVzaW5kdmRiaW4uaAppbmRleCBmMjQzNGMxLi4yZWFiNTE2IDEwMDY0NAotLS0gYS9leHQvcmVzaW5kdmQvcmVzaW5kdmRiaW4uaAorKysgYi9leHQvcmVzaW5kdmQvcmVzaW5kdmRiaW4uaApAQCAtNTgsOCArNTgsOCBAQAogICBHc3RCaW4gZWxlbWVudDsKIAogICAvKiBQcm90ZWN0cyBwaWVjZXMgbGlzdCBhbmQgcHJvcGVydGllcyAqLwotICBHTXV0ZXggKmR2ZF9sb2NrOwotICBHTXV0ZXggKnByZXJvbGxfbG9jazsKKyAgR011dGV4IGR2ZF9sb2NrOworICBHTXV0ZXggcHJlcm9sbF9sb2NrOwogCiAgIGdjaGFyICpkZXZpY2U7CiAgIGdjaGFyICpsYXN0X3VyaTsKZGlmZiAtLWdpdCBhL2V4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jIGIvZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmMKaW5kZXggOTVkM2NhMS4uNTA1MzAyYiAxMDA2NDQKLS0tIGEvZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmMKKysrIGIvZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmMKQEAgLTI0OSwxMCArMjQ5LDEwIEBACiAgICAgcnNuZHZkc3JjLT5mYXN0c3RhcnQgPSBERUZBVUxUX0ZBU1RTVEFSVDsKIAogICByc25kdmRzcmMtPmRldmljZSA9IGdfc3RyZHVwIChERUZBVUxUX0RFVklDRSk7Ci0gIHJzbmR2ZHNyYy0+ZHZkX2xvY2sgPSBnX211dGV4X25ldyAoKTsKLSAgcnNuZHZkc3JjLT5icmFuY2hfbG9jayA9IGdfbXV0ZXhfbmV3ICgpOworICBnX211dGV4X2luaXQgKCZyc25kdmRzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF9pbml0ICgmcnNuZHZkc3JjLT5icmFuY2hfbG9jayk7CiAgIHJzbmR2ZHNyYy0+YnJhbmNoaW5nID0gRkFMU0U7Ci0gIHJzbmR2ZHNyYy0+c3RpbGxfY29uZCA9IGdfY29uZF9uZXcgKCk7CisgIGdfY29uZF9pbml0ICgmcnNuZHZkc3JjLT5zdGlsbF9jb25kKTsKIAogICBnc3RfYmFzZV9zcmNfc2V0X2Zvcm1hdCAoR1NUX0JBU0VfU1JDIChyc25kdmRzcmMpLCBHU1RfRk9STUFUX1RJTUUpOwogfQpAQCAtMjYyLDkgKzI2Miw5IEBACiB7CiAgIHJlc2luRHZkU3JjICpzcmMgPSBSRVNJTkRWRFNSQyAob2JqZWN0KTsKIAotICBnX211dGV4X2ZyZWUgKHNyYy0+ZHZkX2xvY2spOwotICBnX211dGV4X2ZyZWUgKHNyYy0+YnJhbmNoX2xvY2spOwotICBnX2NvbmRfZnJlZSAoc3JjLT5zdGlsbF9jb25kKTsKKyAgZ19tdXRleF9jbGVhciAoJnNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2NsZWFyICgmc3JjLT5icmFuY2hfbG9jayk7CisgIGdfY29uZF9jbGVhciAoJnNyYy0+c3RpbGxfY29uZCk7CiAgIGdfZnJlZSAoc3JjLT5kZXZpY2UpOwogCiAgIGdzdF9idWZmZXJfcmVwbGFjZSAoJnNyYy0+YWxsb2NfYnVmLCBOVUxMKTsKQEAgLTI3OCwxMCArMjc4LDEwIEBACiB7CiAgIHJlc2luRHZkU3JjICpzcmMgPSBSRVNJTkRWRFNSQyAoYnNyYyk7CiAKLSAgZ19tdXRleF9sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CiAgIHNyYy0+YnJhbmNoaW5nID0gVFJVRTsKLSAgZ19jb25kX2Jyb2FkY2FzdCAoc3JjLT5zdGlsbF9jb25kKTsKLSAgZ19tdXRleF91bmxvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICBnX2NvbmRfYnJvYWRjYXN0ICgmc3JjLT5zdGlsbF9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKIAogICByZXR1cm4gVFJVRTsKIH0KQEAgLTI5MSw5ICsyOTEsOSBAQAogewogICByZXNpbkR2ZFNyYyAqc3JjID0gUkVTSU5EVkRTUkMgKGJzcmMpOwogCi0gIGdfbXV0ZXhfbG9jayAoc3JjLT5icmFuY2hfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogICBzcmMtPmJyYW5jaGluZyA9IEZBTFNFOwotICBnX211dGV4X3VubG9jayAoc3JjLT5icmFuY2hfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CiAKICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0zNTYsNyArMzU2LDcgQEAKICAgY29uc3QgY2hhciAqZGlzY19uYW1lOwogICBnY2hhciBsYW5nWzhdOwogCi0gIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICBpZiAoIXJlYWRfdnRzX2luZm8gKHNyYykpIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELAogICAgICAgICAoXygiQ291bGQgbm90IHJlYWQgdGl0bGUgaW5mb3JtYXRpb24gZm9yIERWRC4iKSksIEdTVF9FUlJPUl9TWVNURU0pOwpAQCAtNDQwLDcgKzQ0MCw3IEBACiAgIG1lbXNldCAoc3JjLT5jdXJfY2x1dCwgMCwgc2l6ZW9mIChndWludDMyKSAqIDE2KTsKICAgc3JjLT5jdXJfYXVkaW9fcGh5c19zdHJlYW0gPSAtMTsKIAotICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgcmV0dXJuIFRSVUU7CiAKQEAgLTQ0OSw3ICs0NDksNyBAQAogICAgIGR2ZG5hdl9jbG9zZSAoc3JjLT5kdmRuYXYpOwogICAgIHNyYy0+ZHZkbmF2ID0gTlVMTDsKICAgfQotICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgIHJldHVybiBGQUxTRTsKIH0KIApAQCAtNTQzLDcgKzU0Myw3IEBACiAgIGdib29sZWFuIHJldCA9IFRSVUU7CiAgIEdzdE1lc3NhZ2UgKm1vdXNlX292ZXJfbXNnID0gTlVMTDsKIAotICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICBpZiAoc3JjLT5uYXZfY2xvY2tfaWQpIHsKICAgICBnc3RfY2xvY2tfaWRfdW5zY2hlZHVsZSAoc3JjLT5uYXZfY2xvY2tfaWQpOwpAQCAtNjEwLDcgKzYxMCw3IEBACiAgICAgc3JjLT5kdmRyZWFkID0gTlVMTDsKICAgfQogCi0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICBpZiAobW91c2Vfb3Zlcl9tc2cpCiAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVF9DQVNUIChzcmMpLCBtb3VzZV9vdmVyX21zZyk7CkBAIC02NTQsNyArNjU0LDcgQEAKIAogICAgIC8qIE5vdywgc2VuZCB0aGUgZXZlbnRzLiBXZSBuZWVkIHRvIGRyb3AgdGhlIGR2ZCBsb2NrIHdoaWxlIGRvaW5nIHNvLAogICAgICAqIGFuZCB0aGVuIGNoZWNrIGFmdGVyIGlmIHdlIGdvdCBmbHVzaGVkICovCi0gICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQkFTRV9TUkNfUEFEIChzcmMpLCBzdGlsbF9ldmVudCk7CiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQkFTRV9TUkNfUEFEIChzcmMpLCBzZWdfZXZlbnQpOwogICAgIGlmIChobF9ldmVudCkgewpAQCAtNjY0LDIxICs2NjQsMjEgQEAKICAgICBpZiAoY21kc19jaGFuZ2VkKQogICAgICAgcnNuX2R2ZHNyY19zZW5kX2NvbW1hbmRzX2NoYW5nZWQgKHNyYyk7CiAKLSAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCi0gICAgZ19tdXRleF9sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICBnX211dGV4X2xvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKIAogICAgIHNyYy0+aW5fc3RpbGxfc3RhdGUgPSBUUlVFOwogICB9IGVsc2UgewogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywKICAgICAgICAgIlJlLWVudGVyaW5nIHN0aWxsIHdhaXQgd2l0aCAlIiBHU1RfVElNRV9GT1JNQVQgIiByZW1haW5pbmciLAogICAgICAgICBHU1RfVElNRV9BUkdTIChzcmMtPnN0aWxsX3RpbWVfcmVtYWluaW5nKSk7Ci0gICAgZ19tdXRleF9sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICBnX211dGV4X2xvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKICAgfQogCiAgIGlmIChzcmMtPmJyYW5jaGluZykgewogICAgIEdTVF9JTkZPX09CSkVDVCAoc3JjLCAiQnJhbmNoaW5nIC0gYWJvcnRpbmcgc3RpbGwiKTsKLSAgICBnX211dGV4X3VubG9jayAoc3JjLT5icmFuY2hfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKICAgICByZXR1cm4gVFJVRTsKICAgfQogCkBAIC02OTAsNDkgKzY5MCw0OCBAQAogICAgICAqLwogICAgIHNyYy0+bmVlZF9zZWdtZW50ID0gVFJVRTsKIAotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJFbnRlcmluZyBjb25kX3dhaXQgc3RpbGwiKTsKLSAgICBnX2NvbmRfd2FpdCAoc3JjLT5zdGlsbF9jb25kLCBzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICBnX2NvbmRfd2FpdCAoJnNyYy0+c3RpbGxfY29uZCwgJnNyYy0+YnJhbmNoX2xvY2spOwogICAgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJjb25kX3dhaXQgc3RpbGwgb3ZlciwgYnJhbmNoaW5nID0gJWQiLAogICAgICAgICBzcmMtPmJyYW5jaGluZyk7CiAKICAgICBpZiAoc3JjLT5icmFuY2hpbmcpIHsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICByZXR1cm4gVFJVRTsKICAgICB9CiAgICAgc3JjLT5pbl9zdGlsbF9zdGF0ZSA9IEZBTFNFOwogCi0gICAgZ19tdXRleF91bmxvY2sgKHNyYy0+YnJhbmNoX2xvY2spOwotICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgfSBlbHNlIHsKLSAgICBHVGltZVZhbCBlbmRfdGltZTsKICAgICBnYm9vbGVhbiB3YXNfc2lnbmFsbGVkOwogCiAgICAgaWYgKHNyYy0+c3RpbGxfdGltZV9yZW1haW5pbmcgPiAwKSB7Ci0gICAgICBnX2dldF9jdXJyZW50X3RpbWUgKCZlbmRfdGltZSk7Ci0gICAgICBnX3RpbWVfdmFsX2FkZCAoJmVuZF90aW1lLCBzcmMtPnN0aWxsX3RpbWVfcmVtYWluaW5nIC8gR1NUX1VTRUNPTkQpOworICAgICAgZ2ludDY0IGVuZF90aW1lOworCisgICAgICBlbmRfdGltZSA9CisgICAgICAgICAgZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgKyBzcmMtPnN0aWxsX3RpbWVfcmVtYWluaW5nIC8gR1NUX1VTRUNPTkQ7CiAKICAgICAgIC8qIEltcGxlbWVudCB0aW1lZCBzdGlsbHMgYnkgc2xlZXBpbmcsIHBvc3NpYmx5CiAgICAgICAgKiBpbiBtdWx0aXBsZSBzdGVwcyBpZiB3ZSBnZXQgcGF1c2VkL3VucGF1c2VkICovCi0gICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgR1NUX0xPR19PQkpFQ1QgKHNyYywgImNvbmRfdGltZWRfd2FpdCBzdGlsbCBmb3IgJWQgc2VjIiwgZHVyYXRpb24pOwogICAgICAgd2FzX3NpZ25hbGxlZCA9Ci0gICAgICAgICAgZ19jb25kX3RpbWVkX3dhaXQgKHNyYy0+c3RpbGxfY29uZCwgc3JjLT5icmFuY2hfbG9jaywgJmVuZF90aW1lKTsKKyAgICAgICAgICBnX2NvbmRfd2FpdF91bnRpbCAoJnNyYy0+c3RpbGxfY29uZCwgJnNyYy0+YnJhbmNoX2xvY2ssIGVuZF90aW1lKTsKICAgICAgIHdhc19zaWduYWxsZWQgfD0gc3JjLT5icmFuY2hpbmc7CiAKLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgICAgIGlmICh3YXNfc2lnbmFsbGVkKSB7CiAgICAgICAgIC8qIFNpZ25hbGxlZCAtIG11c3QgYmUgZmx1c2hpbmcgKi8KLSAgICAgICAgR1RpbWVWYWwgY3VyX3RpbWU7CisgICAgICAgIGdpbnQ2NCBjdXJfdGltZTsKICAgICAgICAgR3N0Q2xvY2tUaW1lRGlmZiByZW1haW47CiAKLSAgICAgICAgZ19nZXRfY3VycmVudF90aW1lICgmY3VyX3RpbWUpOwotICAgICAgICByZW1haW4gPQotICAgICAgICAgICAgKGVuZF90aW1lLnR2X3NlYyAtIGN1cl90aW1lLnR2X3NlYykgKiBHU1RfU0VDT05EICsKLSAgICAgICAgICAgIChlbmRfdGltZS50dl91c2VjIC0gY3VyX3RpbWUudHZfdXNlYykgKiBHU1RfVVNFQ09ORDsKKyAgICAgICAgY3VyX3RpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKTsKKyAgICAgICAgcmVtYWluID0gKGVuZF90aW1lIC0gY3VyX3RpbWUpICogR1NUX1VTRUNPTkQ7CiAgICAgICAgIGlmIChyZW1haW4gPCAwKQogICAgICAgICAgIHNyYy0+c3RpbGxfdGltZV9yZW1haW5pbmcgPSAwOwogICAgICAgICBlbHNlCkBAIC03NjksOSArNzY4LDkgQEAKICAgICAgICAgICBHU1RfVElNRV9BUkdTIChzZWdtZW50LT5wb3NpdGlvbikpOwogICAgIH0KIAotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX0JBU0VfU1JDX1BBRCAoc3JjKSwgc3RpbGxfZXZlbnQpOwotICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgIH0KIAogICByZXR1cm4gVFJVRTsKQEAgLTkzMCwxMCArOTI5LDEwIEBACiAgIGR2ZG5hdl9yZXQgPSBkdmRuYXZfZ2V0X25leHRfYmxvY2sgKHNyYy0+ZHZkbmF2LCBtbWFwLmRhdGEsICZldmVudCwgJmxlbik7CiAgIGlmIChkdmRuYXZfcmV0ICE9IERWRE5BVl9TVEFUVVNfT0spCiAgICAgZ290byByZWFkX2Vycm9yOwotICBnX211dGV4X2xvY2sgKHNyYy0+YnJhbmNoX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKICAgaWYgKHNyYy0+YnJhbmNoaW5nKQogICAgIGdvdG8gYnJhbmNoaW5nOwotICBnX211dGV4X3VubG9jayAoc3JjLT5icmFuY2hfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CiAKICAgc3dpdGNoIChldmVudCkgewogICAgIGNhc2UgRFZETkFWX0JMT0NLX09LOgpAQCAtOTcwLDkgKzk2OSw5IEBACiAgICAgICB9CiAKICAgICAgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJOQVYgcGFja2V0IHN0YXJ0IFRTICUiIEdTVF9USU1FX0ZPUk1BVAotICAgICAgICAgICIgZW5kIFRTICUiIEdTVF9USU1FX0ZPUk1BVCAiIGJhc2UgJSIgR19HSU5UNjRfRk9STUFUICIgJXMiLAorICAgICAgICAgICIgZW5kIFRTICUiIEdTVF9USU1FX0ZPUk1BVCAiIGJhc2UgJSIgR1NUX1NUSU1FX0ZPUk1BVCAiICVzIiwKICAgICAgICAgICBHU1RfVElNRV9BUkdTIChuZXdfc3RhcnRfcHRtKSwgR1NUX1RJTUVfQVJHUyAobmV3X2VuZF9wdG0pLAotICAgICAgICAgIG5ld19iYXNlX3RpbWUsIGRpc2NvbnQgPyAiZGlzY29udCIgOiAiIik7CisgICAgICAgICAgR1NUX1NUSU1FX0FSR1MgKG5ld19iYXNlX3RpbWUpLCBkaXNjb250ID8gImRpc2NvbnQiIDogIiIpOwogCiAjaWYgMAogICAgICAgZ19wcmludCAoIk5BViBwYWNrZXQgc3RhcnQgVFMgJSIgR1NUX1RJTUVfRk9STUFUCkBAIC0xMDMzLDEwICsxMDMyLDEwIEBACiAgICAgICBpZiAoIXJzbl9kdmRzcmNfZG9fc3RpbGwgKHNyYywgaW5mby0+bGVuZ3RoKSkKICAgICAgICAgZ290byBpbnRlcm5hbF9lcnJvcjsKIAotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogICAgICAgaWYgKHNyYy0+YnJhbmNoaW5nKQogICAgICAgICBnb3RvIGJyYW5jaGluZzsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5icmFuY2hfbG9jayk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBEVkROQVZfV0FJVDoKQEAgLTExNDgsMTEgKzExNDcsMTEgQEAKICAgICBHc3RFdmVudCAqaGxfZXZlbnQgPSBzcmMtPmhpZ2hsaWdodF9ldmVudDsKIAogICAgIHNyYy0+aGlnaGxpZ2h0X2V2ZW50ID0gTlVMTDsKLSAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJTZW5kaW5nIGhpZ2hsaWdodCBldmVudCAtIGJ1dHRvbiAlZCIsCiAgICAgICAgIHNyYy0+YWN0aXZlX2J1dHRvbik7CiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQkFTRV9TUkNfUEFEIChzcmMpLCBobF9ldmVudCk7Ci0gICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgfQogCiAgIHJldHVybiByZXQ7CkBAIC0xMTg0LDcgKzExODMsNyBAQAogICB9CiBicmFuY2hpbmc6CiAgIHsKLSAgICBnX211dGV4X3VubG9jayAoc3JjLT5icmFuY2hfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKICAgICBnc3RfYnVmZmVyX3VubWFwIChzcmMtPmFsbG9jX2J1ZiwgJm1tYXApOwogICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKICAgfQpAQCAtMTIxNSw3ICsxMjE0LDcgQEAKICAgY21kc1tuX2NtZHMrK10gPSBHU1RfTkFWSUdBVElPTl9DT01NQU5EX0RWRF9BTkdMRV9NRU5VOwogICBjbWRzW25fY21kcysrXSA9IEdTVF9OQVZJR0FUSU9OX0NPTU1BTkRfRFZEX0NIQVBURVJfTUVOVTsKIAotICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICAvKiBNdWx0aXBsZSBhbmdsZXMgYXZhaWxhYmxlPyAqLwogICBpZiAoc3JjLT5uX2FuZ2xlcyA+IDEpIHsKQEAgLTEyMzcsNyArMTIzNiw3IEBACiAgICAgY21kc1tuX2NtZHMrK10gPSBHU1RfTkFWSUdBVElPTl9DT01NQU5EX1VQOwogICBpZiAoc3JjLT5jdXJfYnRuX21hc2sgJiBSU05fQlROX0RPV04pCiAgICAgY21kc1tuX2NtZHMrK10gPSBHU1RfTkFWSUdBVElPTl9DT01NQU5EX0RPV047Ci0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICBnc3RfbmF2aWdhdGlvbl9xdWVyeV9zZXRfY29tbWFuZHN2IChxdWVyeSwgbl9jbWRzLCBjbWRzKTsKIApAQCAtMTI1MCwxMyArMTI0OSwxMyBAQAogICBnaW50IGN1cl9hZ2wsIG5fYW5nbGVzOwogICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKIAotICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgaWYgKGR2ZG5hdl9nZXRfYW5nbGVfaW5mbyAoc3JjLT5kdmRuYXYsICZjdXJfYWdsLAogICAgICAgICAgICZuX2FuZ2xlcykgPT0gRFZETkFWX1NUQVRVU19PSykgewogICAgIGdzdF9uYXZpZ2F0aW9uX3F1ZXJ5X3NldF9hbmdsZXMgKHF1ZXJ5LCBjdXJfYWdsLCBuX2FuZ2xlcyk7CiAgICAgcmVzID0gVFJVRTsKICAgfQotICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgcmV0dXJuIHJlczsKIH0KQEAgLTEzMjEsMTAgKzEzMjAsMTAgQEAKIAogICAqb3V0YnVmID0gTlVMTDsKIAotICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgcmV0ID0gcnNuX2R2ZHNyY19wcmVwYXJlX25leHRfYmxvY2sgKHNyYywgVFJVRSk7CiAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKLSAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICByZXR1cm4gcmV0OwogICB9CiAKQEAgLTEzNTksNyArMTM1OCw3IEBACiAgICAgc3JjLT5uZWVkX3RhZ191cGRhdGUgPSBGQUxTRTsKICAgfQogCi0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICAvKiBQdXNoIGluLWJhbmQgZXZlbnRzIG5vdyB0aGF0IHdlJ3ZlIGRyb3BwZWQgdGhlIGR2ZF9sb2NrLCBiZWZvcmUKICAgICogd2UgY2hhbmdlIHNlZ21lbnQgKi8KQEAgLTE0MTYsNyArMTQxNSw3IEBACiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQkFTRV9TUkNfUEFEIChzcmMpLCB0YWdfZXZlbnQpOwogICAgIHRhZ3MgPSBOVUxMOwogICB9Ci0gIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIGlmIChzcmMtPm5leHRfYnVmICE9IE5VTEwpIHsKICAgICAvKiBOb3cgdGhhdCB3ZSdyZSBpbiB0aGUgbmV3IHNlZ21lbnQsIHdlIGNhbiBlbnF1ZXVlIGFueSBuYXYgcGFja2V0CkBAIC0xNDQ2LDcgKzE0NDUsNyBAQAogICAvKiBTY2hlZHVsZSBhIGNsb2NrIGNhbGxiYWNrIGZvciB0aGUgYW55IHBlbmRpbmcgbmF2IHBhY2tldCAqLwogICByc25fZHZkc3JjX2NoZWNrX25hdl9ibG9ja3MgKHNyYyk7CiAKLSAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgIGlmIChoaWdobGlnaHRfZXZlbnQpIHsKICAgICBHU1RfTE9HX09CSkVDVCAoc3JjLCAiUHVzaGluZyBoaWdobGlnaHQgZXZlbnQgd2l0aCBUUyAlIiBHU1RfVElNRV9GT1JNQVQsCkBAIC0xNTM0LDcgKzE1MzMsNyBAQAogICBpZiAocmVzdWx0ID09IFJTTl9OQVZfUkVTVUxUX0hJR0hMSUdIVCkgewogICAgIC8qIElmIHdlJ3JlICpvbmx5KiBjaGFuZ2luZyB0aGUgaGlnaGxpZ2h0LCB3YWtlIHVwIHRoZSBzdGlsbCBjb25kaXRpb24uCiAgICAgICogSWYgd2UncmUgYnJhbmNoaW5nLCB0aGF0IHdpbGwgaGFwcGVuIGFueXdheSAqLwotICAgIGdfY29uZF9icm9hZGNhc3QgKHNyYy0+c3RpbGxfY29uZCk7CisgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNyYy0+c3RpbGxfY29uZCk7CiAgIH0KIAogICByZXR1cm4gcmVzdWx0OwpAQCAtMTY0NSw3ICsxNjQ0LDcgQEAKIAogICAgICAgR1NUX0RFQlVHICgiZHZkbmF2c3JjIGdvdCBhIGtleXByZXNzOiAlcyIsIGtleSk7CiAKLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIGhhdmVfbG9jayA9IFRSVUU7CiAgICAgICBpZiAoIXNyYy0+cnVubmluZykKICAgICAgICAgZ290byBub3RfcnVubmluZzsKQEAgLTE3MDAsNyArMTY5OSw3IEBACiAgICAgICBpZiAoIWdzdF9uYXZpZ2F0aW9uX2V2ZW50X3BhcnNlX21vdXNlX21vdmVfZXZlbnQgKGV2ZW50LCAmeCwgJnkpKQogICAgICAgICByZXR1cm4gRkFMU0U7CiAKLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIGhhdmVfbG9jayA9IFRSVUU7CiAgICAgICBpZiAoIXNyYy0+cnVubmluZykKICAgICAgICAgZ290byBub3RfcnVubmluZzsKQEAgLTE3MzUsNyArMTczNCw3IEBACiAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgIkdvdCBjbGljayBhdCAlZywgJWciLCB4LCB5KTsKIAotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgaGF2ZV9sb2NrID0gVFJVRTsKICAgICAgIGlmICghc3JjLT5ydW5uaW5nKQogICAgICAgICBnb3RvIG5vdF9ydW5uaW5nOwpAQCAtMTc1NCw3ICsxNzUzLDcgQEAKICAgICAgIGlmIChjb21tYW5kID09IEdTVF9OQVZJR0FUSU9OX0NPTU1BTkRfSU5WQUxJRCkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBoYXZlX2xvY2sgPSBUUlVFOwogICAgICAgaWYgKCFzcmMtPnJ1bm5pbmcpCiAgICAgICAgIGdvdG8gbm90X3J1bm5pbmc7CkBAIC0xNzg2LDE2ICsxNzg1LDE2IEBACiAgICAgICBHc3RFdmVudCAqc2VlazsKIAogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiUHJvY2Vzc2luZyBmbHVzaCBhbmQganVtcCIpOwotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+YnJhbmNoX2xvY2spOwogICAgICAgc3JjLT5icmFuY2hpbmcgPSBUUlVFOwotICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoc3JjLT5zdGlsbF9jb25kKTsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmJyYW5jaF9sb2NrKTsKKyAgICAgIGdfY29uZF9icm9hZGNhc3QgKCZzcmMtPnN0aWxsX2NvbmQpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmJyYW5jaF9sb2NrKTsKIAogICAgICAgaGxfZXZlbnQgPSBzcmMtPmhpZ2hsaWdodF9ldmVudDsKICAgICAgIHNyYy0+aGlnaGxpZ2h0X2V2ZW50ID0gTlVMTDsKICAgICAgIHNyYy0+YWN0aXZlX2hpZ2hsaWdodCA9IEZBTFNFOwogCi0gICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgICAgICBpZiAoaGxfZXZlbnQpIHsKICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiU2VuZGluZyBoaWdobGlnaHQgY2hhbmdlIGV2ZW50IC0gYnV0dG9uOiAlZCIsCkBAIC0xODA5LDcgKzE4MDgsNyBAQAogICAgICAgc3JjLT5mbHVzaGluZ19zZWVrID0gVFJVRTsKICAgICAgIGdzdF9lbGVtZW50X3NlbmRfZXZlbnQgKEdTVF9FTEVNRU5UIChzcmMpLCBzZWVrKTsKIAotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgICAgICByc25fZHZkc3JjX3VwZGF0ZV9oaWdobGlnaHQgKHNyYyk7CiAgICAgfQpAQCAtMTgzMyw3ICsxODMyLDcgQEAKICAgICBjbWRzX2NoYW5nZWQgPSBzcmMtPmNvbW1hbmRzX2NoYW5nZWQ7CiAgICAgc3JjLT5jb21tYW5kc19jaGFuZ2VkID0gRkFMU0U7CiAKLSAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICAgIGlmIChobF9ldmVudCkgewogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3JjLCAiU2VuZGluZyBoaWdobGlnaHQgY2hhbmdlIGV2ZW50IC0gYnV0dG9uOiAlZCIsCkBAIC0xODU2LDcgKzE4NTUsNyBAQAogICByZXR1cm4gVFJVRTsKIG5vdF9ydW5uaW5nOgogICBpZiAoaGF2ZV9sb2NrKQotICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICBHU1RfREVCVUdfT0JKRUNUIChzcmMsICJFbGVtZW50IG5vdCBzdGFydGVkLiBJZ25vcmluZyBuYXZpZ2F0aW9uIGV2ZW50Iik7CiAgIHJldHVybiBGQUxTRTsKIH0KQEAgLTIyODksNyArMjI4OCw3IEBACiAKICAgaWYgKHNyYy0+aGlnaGxpZ2h0X2V2ZW50ICYmIHNyYy0+aW5fc3RpbGxfc3RhdGUpIHsKICAgICBHU1RfTE9HX09CSkVDVCAoc3JjLCAiU2lnbmFsbGluZyBzdGlsbCBjb25kaXRpb24gZHVlIHRvIGhpZ2hsaWdodCBjaGFuZ2UiKTsKLSAgICBnX2NvbmRfYnJvYWRjYXN0IChzcmMtPnN0aWxsX2NvbmQpOworICAgIGdfY29uZF9icm9hZGNhc3QgKCZzcmMtPnN0aWxsX2NvbmQpOwogICB9CiB9CiAKQEAgLTIzMjMsNyArMjMyMiw3IEBACiAgICAgICBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKHRpbWUpLAogICAgICAgR1NUX1RJTUVfQVJHUyAoZ3N0X2Nsb2NrX2dldF90aW1lIChjbG9jaykgLSBiYXNlX3RpbWUpKTsKIAotICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKIAogICAvKiBEZXN0cm95IHRoZSBjbG9jayBpZCB0aGF0IGNhdXNlZCB0aGlzIGNhbGxiYWNrICovCiAgIGlmIChzcmMtPm5hdl9jbG9ja19pZCkgewpAQCAtMjM1OCw3ICsyMzU3LDcgQEAKICAgICByc25fZHZkc3JjX3NjaGVkdWxlX25hdl9jYiAoc3JjLCBuZXh0X25hdik7CiAgIH0KIAotICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAKICAgcmV0dXJuIFRSVUU7CiB9CkBAIC0yMzk0LDExICsyMzkzLDExIEBACiAgIEdTVF9MT0dfT0JKRUNUIChzcmMsICJTY2hlZHVsZSBuYXYgcGFjayBmb3IgcnVubmluZyBUUyAlIiBHU1RfVElNRV9GT1JNQVQsCiAgICAgICBHU1RfVElNRV9BUkdTIChuZXh0X25hdi0+cnVubmluZ190cykpOwogCi0gIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgZ3N0X2Nsb2NrX2lkX3dhaXRfYXN5bmMgKHNyYy0+bmF2X2Nsb2NrX2lkLCByc25fZHZkc3JjX25hdl9jbG9ja19jYiwgc3JjLAogICAgICAgTlVMTCk7CiAgIGdzdF9vYmplY3RfdW5yZWYgKGNsb2NrKTsKLSAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiB9CiAKIC8qIENhbGxlZCB3aXRoIGR2ZF9sb2NrIGhlbGQgKi8KQEAgLTI1MTQsMTQgKzI1MTMsMTQgQEAKICAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUExBWUlOR19UT19QQVVTRUQ6CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChlbGVtZW50LCAiU3dpdGNoaW5nIHRvIFBBVVNFRCIpOwogICAgICAgLyogVW5zY2hlZHVsZSBhbnkgTkFWIHBhY2tldCBjYWxsYmFjayAqLwotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgc3JjLT5pbl9wbGF5aW5nID0gRkFMU0U7CiAgICAgICBpZiAoc3JjLT5uYXZfY2xvY2tfaWQpIHsKICAgICAgICAgZ3N0X2Nsb2NrX2lkX3Vuc2NoZWR1bGUgKHNyYy0+bmF2X2Nsb2NrX2lkKTsKICAgICAgICAgZ3N0X2Nsb2NrX2lkX3VucmVmIChzcmMtPm5hdl9jbG9ja19pZCk7CiAgICAgICAgIHNyYy0+bmF2X2Nsb2NrX2lkID0gTlVMTDsKICAgICAgIH0KLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgYnJlYWs7CkBAIC0yNTM1LDEwICsyNTM0LDEwIEBACiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgIlN3aXRjaGluZyB0byBQTEFZSU5HIik7CiAgICAgICAvKiBLaWNrIG9mZiB0aGUgTkFWIHBhY2tldCBjYWxsYmFjayBpZiBuZWVkZWQgKi8KLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIHNyYy0+aW5fcGxheWluZyA9IFRSVUU7CiAgICAgICByc25fZHZkc3JjX2NoZWNrX25hdl9ibG9ja3MgKHNyYyk7Ci0gICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKICAgICAgIHJzbl9kdmRzcmNfcG9zdF90aXRsZV9pbmZvIChlbGVtZW50KTsKQEAgLTI1NjEsOSArMjU2MCw5IEBACiAgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgewogICAgIGNhc2UgR1NUX1FVRVJZX0RVUkFUSU9OOgogICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2R1cmF0aW9uIChxdWVyeSwgJmZvcm1hdCwgTlVMTCk7Ci0gICAgICBnX211dGV4X2xvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBpZiAoIXNyYy0+cnVubmluZykgewotICAgICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogCkBAIC0yNTk4LDE0ICsyNTk3LDE0IEBACiAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9Ci0gICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfUVVFUllfUE9TSVRJT046CiAgICAgICBnc3RfcXVlcnlfcGFyc2VfcG9zaXRpb24gKHF1ZXJ5LCAmZm9ybWF0LCBOVUxMKTsKIAotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgaWYgKCFzcmMtPnJ1bm5pbmcpIHsKLSAgICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICAgIGlmIChmb3JtYXQgPT0gdGl0bGVfZm9ybWF0KSB7CkBAIC0yNjI3LDcgKzI2MjYsNyBAQAogICAgICAgICAgIHJlcyA9IFRSVUU7CiAgICAgICAgIH0KICAgICAgIH0KLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9RVUVSWV9DVVNUT006CiAgICAgewpAQCAtMjgzNywxNCArMjgzNiwxNCBAQAogICB9IGVsc2UgewogICAgIC8qIEhhbmRsZSBvdGhlciBmb3JtYXRzOiBUaW1lLCB0aXRsZSwgY2hhcHRlciwgYW5nbGUgKi8KICAgICBpZiAoc2VnbWVudC0+Zm9ybWF0ID09IEdTVF9GT1JNQVRfVElNRSkgewotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgc3JjLT5kaXNjb250ID0gVFJVRTsKICAgICAgIHJldCA9IHJzbl9kdmRzcmNfc2Vla190b190aW1lIChzcmMsIHNlZ21lbnQtPnN0YXJ0KTsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5kdmRfbG9jayk7CiAgICAgfSBlbHNlIGlmIChzZWdtZW50LT5mb3JtYXQgPT0gdGl0bGVfZm9ybWF0KSB7CiAgICAgICBnaW50IHRpdGxlczsKIAotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgaWYgKHNyYy0+cnVubmluZyAmJgogICAgICAgICAgIGR2ZG5hdl9nZXRfbnVtYmVyX29mX3RpdGxlcyAoc3JjLT5kdmRuYXYsCiAgICAgICAgICAgICAgICZ0aXRsZXMpID09IERWRE5BVl9TVEFUVVNfT0spIHsKQEAgLTI4NTQsOSArMjg1Myw5IEBACiAgICAgICAgICAgc3JjLT5kaXNjb250ID0gVFJVRTsKICAgICAgICAgfQogICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICB9IGVsc2UgaWYgKHNlZ21lbnQtPmZvcm1hdCA9PSBjaGFwdGVyX2Zvcm1hdCkgewotICAgICAgZ19tdXRleF9sb2NrIChzcmMtPmR2ZF9sb2NrKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNyYy0+ZHZkX2xvY2spOwogICAgICAgaWYgKHNyYy0+cnVubmluZykgewogICAgICAgICBnaW50MzIgdGl0bGUsIGNoYXB0ZXJzLCB4OwogICAgICAgICBpZiAoZHZkbmF2X2N1cnJlbnRfdGl0bGVfaW5mbyAoc3JjLT5kdmRuYXYsICZ0aXRsZSwgJngpID09CkBAIC0yODg0LDcgKzI4ODMsNyBAQAogICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgfQotICAgICAgZ19tdXRleF91bmxvY2sgKHNyYy0+ZHZkX2xvY2spOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICB9CiAgIH0KIApAQCAtMjg5NCw3ICsyODkzLDcgQEAKIAogICAgIGlmIChzcmMtPmZsdXNoaW5nX3NlZWspIHsKICAgICAgIEdzdE1lc3NhZ2UgKm1vdXNlX292ZXJfbXNnID0gTlVMTDsKLSAgICAgIGdfbXV0ZXhfbG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZzcmMtPmR2ZF9sb2NrKTsKICAgICAgIHNyYy0+Zmx1c2hpbmdfc2VlayA9IEZBTFNFOwogCiAgICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZzcmMtPm5leHRfYnVmLCBOVUxMKTsKQEAgLTI5MTMsNyArMjkxMiw3IEBACiAgICAgICAgICAgICBnc3RfbmF2aWdhdGlvbl9tZXNzYWdlX25ld19tb3VzZV9vdmVyICgoR3N0T2JqZWN0ICopIHNyYywgRkFMU0UpOwogICAgICAgICBzcmMtPndhc19tb3VzZV9vdmVyID0gRkFMU0U7CiAgICAgICB9Ci0gICAgICBnX211dGV4X3VubG9jayAoc3JjLT5kdmRfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNyYy0+ZHZkX2xvY2spOwogCiAgICAgICBpZiAobW91c2Vfb3Zlcl9tc2cpCiAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlRfQ0FTVCAoc3JjKSwgbW91c2Vfb3Zlcl9tc2cpOwpkaWZmIC0tZ2l0IGEvZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmggYi9leHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuaAppbmRleCA1ODA0YzA3Li5jYzJiYjA0IDEwMDY0NAotLS0gYS9leHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuaAorKysgYi9leHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuaApAQCAtNTAsOSArNTAsOSBAQAogCiAgIGdib29sZWFuCWZhc3RzdGFydDsKIAotICBHTXV0ZXgJKmR2ZF9sb2NrOwotICBHQ29uZAkJKnN0aWxsX2NvbmQ7Ci0gIEdNdXRleAkqYnJhbmNoX2xvY2s7CisgIEdNdXRleAlkdmRfbG9jazsKKyAgR0NvbmQJCXN0aWxsX2NvbmQ7CisgIEdNdXRleAlicmFuY2hfbG9jazsKICAgZ2Jvb2xlYW4JYnJhbmNoaW5nOwogCiAgIGdjaGFyCQkqZGV2aWNlOwpkaWZmIC0tZ2l0IGEvZXh0L3JzdmcvTWFrZWZpbGUuaW4gYi9leHQvcnN2Zy9NYWtlZmlsZS5pbgppbmRleCA5NWI5ZDk5Li4yMTA0MDNhIDEwMDY0NAotLS0gYS9leHQvcnN2Zy9NYWtlZmlsZS5pbgorKysgYi9leHQvcnN2Zy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9yc3ZnL2dzdHJzdmdkZWMuYyBiL2V4dC9yc3ZnL2dzdHJzdmdkZWMuYwppbmRleCAxN2ViY2IxLi5kODdjNmNhIDEwMDY0NAotLS0gYS9leHQvcnN2Zy9nc3Ryc3ZnZGVjLmMKKysrIGIvZXh0L3JzdmcvZ3N0cnN2Z2RlYy5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1pbWFnZS5zdmcgISByc3ZnZGVjICEgaW1hZ2VmcmVlemUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPWltYWdlLnN2ZyAhIHJzdmdkZWMgISBpbWFnZWZyZWV6ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IHJlbmRlciBhbmQgc2hvdyBhIHN2ZyBpbWFnZS4KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2V4dC9yc3ZnL2dzdHJzdmdkZWMuaCBiL2V4dC9yc3ZnL2dzdHJzdmdkZWMuaAppbmRleCA4ZDcxNzNiLi4zNzcwMDIwIDEwMDY0NAotLS0gYS9leHQvcnN2Zy9nc3Ryc3ZnZGVjLmgKKysrIGIvZXh0L3JzdmcvZ3N0cnN2Z2RlYy5oCkBAIC0yNyw5ICsyNyw2IEBACiAjaW5jbHVkZSA8Y2Fpcm8vY2Fpcm8uaD4KIAogI2luY2x1ZGUgPGxpYnJzdmcvcnN2Zy5oPgotI2lmbmRlZiBIQVZFX1JTVkdfMl8zNl8yCi0jaW5jbHVkZSA8bGlicnN2Zy9yc3ZnLWNhaXJvLmg+Ci0jZW5kaWYKIAogR19CRUdJTl9ERUNMUwogCmRpZmYgLS1naXQgYS9leHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5jIGIvZXh0L3JzdmcvZ3N0cnN2Z292ZXJsYXkuYwppbmRleCA2YzY4MTEzLi42OWY5OWFkIDEwMDY0NAotLS0gYS9leHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5jCisrKyBiL2V4dC9yc3ZnL2dzdHJzdmdvdmVybGF5LmMKQEAgLTQ3LDEzICs0NywxMyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIHZpZGVvY29udmVydCAhIHJzdmdvdmVybGF5IGxvY2F0aW9uPWZvby5zdmcgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISB2aWRlb2NvbnZlcnQgISByc3Znb3ZlcmxheSBsb2NhdGlvbj1mb28uc3ZnICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgc3BlY2lmaWVzIHRoZSBTVkcgbG9jYXRpb24gdGhyb3VnaCB0aGUgZmlsZW5hbWUgcHJvcGVydHkuCiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISB2aWRlb2NvbnZlcnQgISByc3Znb3ZlcmxheSBuYW1lPW92ZXJsYXkgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rIGZpbGVzcmMgbG9jYXRpb249Zm9vLnN2ZyAhIGltYWdlL3N2ZyAhIG92ZXJsYXkuZGF0YV9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISB2aWRlb2NvbnZlcnQgISByc3Znb3ZlcmxheSBuYW1lPW92ZXJsYXkgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rIGZpbGVzcmMgbG9jYXRpb249Zm9vLnN2ZyAhIGltYWdlL3N2ZyAhIG92ZXJsYXkuZGF0YV9zaW5rCiAgKiBdfCBkb2VzIHRoZSBzYW1lIGJ5IGZlZWRpbmcgZGF0YSB0aHJvdWdoIHRoZSBkYXRhX3NpbmsgcGFkLiBZb3UgY2FuIGFsc28gc3BlY2lmeSB0aGUgU1ZHIGRhdGEgaXRzZWxmIGFzIHBhcmFtZXRlcjoKICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIHZpZGVvY29udmVydCAhIHJzdmdvdmVybGF5IGRhdGE9JyZsdDtzdmcgdmlld0JveD0iMCAwIDgwMCA2MDAiJmd0OyZsdDtpbWFnZSB4PSI4MCUiIHk9IjgwJSIgd2lkdGg9IjEwJSIgaGVpZ2h0PSIxMCUiIHhsaW5rOmhyZWY9ImZvby5qcGciIC8mZ3Q7Jmx0Oy9zdmcmZ3Q7JyAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHZpZGVvY29udmVydCAhIHJzdmdvdmVybGF5IGRhdGE9JyZsdDtzdmcgdmlld0JveD0iMCAwIDgwMCA2MDAiJmd0OyZsdDtpbWFnZSB4PSI4MCUiIHk9IjgwJSIgd2lkdGg9IjEwJSIgaGVpZ2h0PSIxMCUiIHhsaW5rOmhyZWY9ImZvby5qcGciIC8mZ3Q7Jmx0Oy9zdmcmZ3Q7JyAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9leHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5oIGIvZXh0L3JzdmcvZ3N0cnN2Z292ZXJsYXkuaAppbmRleCAxNTFkMDk0Li45Y2QwMGZhIDEwMDY0NAotLS0gYS9leHQvcnN2Zy9nc3Ryc3Znb3ZlcmxheS5oCisrKyBiL2V4dC9yc3ZnL2dzdHJzdmdvdmVybGF5LmgKQEAgLTIxLDkgKzIxLDYgQEAKICNkZWZpbmUgX19HU1RfUlNWR19PVkVSTEFZX0hfXwogCiAjaW5jbHVkZSA8bGlicnN2Zy9yc3ZnLmg+Ci0jaWZuZGVmIEhBVkVfUlNWR18yXzM2XzIKLSNpbmNsdWRlIDxsaWJyc3ZnL3JzdmctY2Fpcm8uaD4KLSNlbmRpZgogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9maWx0ZXIuaD4KZGlmZiAtLWdpdCBhL2V4dC9ydG1wL01ha2VmaWxlLmluIGIvZXh0L3J0bXAvTWFrZWZpbGUuaW4KaW5kZXggZWM4ZDg2MS4uZDk5OTY5YSAxMDA2NDQKLS0tIGEvZXh0L3J0bXAvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3J0bXAvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvcnRtcC9SRUFETUUgYi9leHQvcnRtcC9SRUFETUUKaW5kZXggZTk4NjBhNS4uNGY2ZTQxMyAxMDA2NDQKLS0tIGEvZXh0L3J0bXAvUkVBRE1FCisrKyBiL2V4dC9ydG1wL1JFQURNRQpAQCAtMSw2ICsxLDYgQEAKLXJ0bXBzcmM6CitydG1wc3JjL3Npbms6CiAKLVRoaXMgcGx1Z2luIHJlcXVpcmVzIGxpYnJ0bXAgZnJvbSBodHRwOi8vcnRtcGR1bXAubXBsYXllcmhxLmh1LworVGhlc2UgcGx1Z2lucyByZXF1aXJlIGxpYnJ0bXAgZnJvbSBodHRwOi8vcnRtcGR1bXAubXBsYXllcmhxLmh1LwogCiBZb3UgaGF2ZSB0byBidWlsZCBsaWJydG1wIHdpdGggLWZQSUMgdG8gYmUgYWJsZSB0byB1c2UgaXQKIHdpdGggdGhlIEdTdHJlYW1lciBwbHVnaW46IG1ha2UgWENGTEFHUz0iLWZQSUMiCmRpZmYgLS1naXQgYS9leHQvcnRtcC9nc3RydG1wLmMgYi9leHQvcnRtcC9nc3RydG1wLmMKaW5kZXggNzYxNzNmMy4uOTM1MzA0ZCAxMDA2NDQKLS0tIGEvZXh0L3J0bXAvZ3N0cnRtcC5jCisrKyBiL2V4dC9ydG1wL2dzdHJ0bXAuYwpAQCAtNTAsMTEgKzUwLDE3IEBACiAgICAgY2FzZSBSVE1QX0xPR1dBUk5JTkc6CiAgICAgICBnc3RfbGV2ZWwgPSBHU1RfTEVWRUxfV0FSTklORzsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUlRNUF9MT0dJTkZPOgorICAgICAgZ3N0X2xldmVsID0gR1NUX0xFVkVMX0lORk87CisgICAgICBicmVhazsKICAgICBjYXNlIFJUTVBfTE9HREVCVUc6CiAgICAgICBnc3RfbGV2ZWwgPSBHU1RfTEVWRUxfREVCVUc7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFJUTVBfTE9HREVCVUcyOgorICAgICAgZ3N0X2xldmVsID0gR1NUX0xFVkVMX0xPRzsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6Ci0gICAgICBnc3RfbGV2ZWwgPSBHU1RfTEVWRUxfSU5GTzsKKyAgICAgIGdzdF9sZXZlbCA9IEdTVF9MRVZFTF9UUkFDRTsKICAgICAgIGJyZWFrOwogICB9CiAKQEAgLTY4LDE0ICs3NCwyNyBAQAogCiAgIFJUTVBfTG9nU2V0Q2FsbGJhY2sgKGdzdF9ydG1wX2xvZ19jYWxsYmFjayk7CiAgIGdzdF9sZXZlbCA9IGdzdF9kZWJ1Z19jYXRlZ29yeV9nZXRfdGhyZXNob2xkIChydG1wX2RlYnVnKTsKLSAgaWYgKGdzdF9sZXZlbCA+PSBHU1RfTEVWRUxfTE9HKQotICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HQUxMKTsKLSAgZWxzZSBpZiAoZ3N0X2xldmVsID49IEdTVF9MRVZFTF9ERUJVRykKLSAgICBSVE1QX0xvZ1NldExldmVsIChSVE1QX0xPR0RFQlVHKTsKLSAgZWxzZSBpZiAoZ3N0X2xldmVsID49IEdTVF9MRVZFTF9JTkZPKQotICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HSU5GTyk7Ci0gIGVsc2UgaWYgKGdzdF9sZXZlbCA+PSBHU1RfTEVWRUxfV0FSTklORykKLSAgICBSVE1QX0xvZ1NldExldmVsIChSVE1QX0xPR1dBUk5JTkcpOworCisgIHN3aXRjaCAoZ3N0X2xldmVsKSB7CisgICAgY2FzZSBHU1RfTEVWRUxfRVJST1I6CisgICAgICBSVE1QX0xvZ1NldExldmVsIChSVE1QX0xPR0VSUk9SKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0xFVkVMX1dBUk5JTkc6CisgICAgY2FzZSBHU1RfTEVWRUxfRklYTUU6CisgICAgICBSVE1QX0xvZ1NldExldmVsIChSVE1QX0xPR1dBUk5JTkcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfTEVWRUxfSU5GTzoKKyAgICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HSU5GTyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9MRVZFTF9ERUJVRzoKKyAgICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HREVCVUcpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfTEVWRUxfTE9HOgorICAgICAgUlRNUF9Mb2dTZXRMZXZlbCAoUlRNUF9MT0dERUJVRzIpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDogICAgICAgICAgICAgICAgICAgLyogX1RSQUNFIGFuZCBiZXlvbmQgKi8KKyAgICAgIFJUTVBfTG9nU2V0TGV2ZWwgKFJUTVBfTE9HQUxMKTsKKyAgfQogfQogI2VuZGlmCiAKZGlmZiAtLWdpdCBhL2V4dC9ydG1wL2dzdHJ0bXBzaW5rLmMgYi9leHQvcnRtcC9nc3RydG1wc2luay5jCmluZGV4IGQyZTdkYmYuLjc4MWYzYmYgMTAwNjQ0Ci0tLSBhL2V4dC9ydG1wL2dzdHJ0bXBzaW5rLmMKKysrIGIvZXh0L3J0bXAvZ3N0cnRtcHNpbmsuYwpAQCAtMzAsNyArMzAsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgZmZlbmNfZmx2ICEgZmx2bXV4ICEgcnRtcHNpbmsgbG9jYXRpb249J3J0bXA6Ly9sb2NhbGhvc3QvcGF0aC90by9zdHJlYW0gbGl2ZT0xJworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgZmZlbmNfZmx2ICEgZmx2bXV4ICEgcnRtcHNpbmsgbG9jYXRpb249J3J0bXA6Ly9sb2NhbGhvc3QvcGF0aC90by9zdHJlYW0gbGl2ZT0xJwogICogXXwgRW5jb2RlIGEgdGVzdCB2aWRlbyBzdHJlYW0gdG8gRkxWIHZpZGVvIGZvcm1hdCBhbmQgc3RyZWFtIGl0IHZpYSBSVE1QLgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNzYsNiArNzYsNyBAQAogc3RhdGljIGdib29sZWFuIGdzdF9ydG1wX3Npbmtfc3RvcCAoR3N0QmFzZVNpbmsgKiBzaW5rKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfcnRtcF9zaW5rX3N0YXJ0IChHc3RCYXNlU2luayAqIHNpbmspOwogc3RhdGljIGdib29sZWFuIGdzdF9ydG1wX3NpbmtfZXZlbnQgKEdzdEJhc2VTaW5rICogc2luaywgR3N0RXZlbnQgKiBldmVudCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3J0bXBfc2lua19zZXRjYXBzIChHc3RCYXNlU2luayAqIHNpbmssIEdzdENhcHMgKiBjYXBzKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9ydG1wX3NpbmtfcmVuZGVyIChHc3RCYXNlU2luayAqIHNpbmssIEdzdEJ1ZmZlciAqIGJ1Zik7CiAKICNkZWZpbmUgZ3N0X3J0bXBfc2lua19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCkBAIC0xMTQsNyArMTE1LDggQEAKICAgZ3N0YmFzZXNpbmtfY2xhc3MtPnN0YXJ0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9ydG1wX3Npbmtfc3RhcnQpOwogICBnc3RiYXNlc2lua19jbGFzcy0+c3RvcCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfcnRtcF9zaW5rX3N0b3ApOwogICBnc3RiYXNlc2lua19jbGFzcy0+cmVuZGVyID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9ydG1wX3NpbmtfcmVuZGVyKTsKLSAgZ3N0YmFzZXNpbmtfY2xhc3MtPmV2ZW50ID0gZ3N0X3J0bXBfc2lua19ldmVudDsKKyAgZ3N0YmFzZXNpbmtfY2xhc3MtPnNldF9jYXBzID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9ydG1wX3Npbmtfc2V0Y2Fwcyk7CisgIGdzdGJhc2VzaW5rX2NsYXNzLT5ldmVudCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfcnRtcF9zaW5rX2V2ZW50KTsKIAogICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X3J0bXBfc2lua19kZWJ1ZywgInJ0bXBzaW5rIiwgMCwKICAgICAgICJSVE1QIHNlcnZlciBlbGVtZW50Iik7CkBAIC0xNjIsMTUgKzE2NCwxNyBAQAogCiAgIHNpbmstPnJ0bXBfdXJpID0gZ19zdHJkdXAgKHNpbmstPnVyaSk7CiAgIHNpbmstPnJ0bXAgPSBSVE1QX0FsbG9jICgpOworCisgIGlmICghc2luay0+cnRtcCkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJDb3VsZCBub3QgYWxsb2NhdGUgbGlicnRtcCdzIFJUTVAgY29udGV4dCIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKwogICBSVE1QX0luaXQgKHNpbmstPnJ0bXApOwogICBpZiAoIVJUTVBfU2V0dXBVUkwgKHNpbmstPnJ0bXAsIHNpbmstPnJ0bXBfdXJpKSkgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5rLCBSRVNPVVJDRSwgT1BFTl9XUklURSwgKE5VTEwpLAogICAgICAgICAoIkZhaWxlZCB0byBzZXR1cCBVUkwgJyVzJyIsIHNpbmstPnVyaSkpOwotICAgIFJUTVBfRnJlZSAoc2luay0+cnRtcCk7Ci0gICAgc2luay0+cnRtcCA9IE5VTEw7Ci0gICAgZ19mcmVlIChzaW5rLT5ydG1wX3VyaSk7Ci0gICAgc2luay0+cnRtcF91cmkgPSBOVUxMOwotICAgIHJldHVybiBGQUxTRTsKKyAgICBnb3RvIGVycm9yOwogICB9CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIkNyZWF0ZWQgUlRNUCBvYmplY3QiKTsKQEAgLTE4Miw2ICsxODYsMTUgQEAKICAgc2luay0+aGF2ZV93cml0ZV9lcnJvciA9IEZBTFNFOwogCiAgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgaWYgKHNpbmstPnJ0bXApIHsKKyAgICBSVE1QX0ZyZWUgKHNpbmstPnJ0bXApOworICAgIHNpbmstPnJ0bXAgPSBOVUxMOworICB9CisgIGdfZnJlZSAoc2luay0+cnRtcF91cmkpOworICBzaW5rLT5ydG1wX3VyaSA9IE5VTEw7CisgIHJldHVybiBGQUxTRTsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC0xODksOCArMjAyLDEwIEBACiB7CiAgIEdzdFJUTVBTaW5rICpzaW5rID0gR1NUX1JUTVBfU0lOSyAoYmFzZXNpbmspOwogCi0gIGdzdF9idWZmZXJfcmVwbGFjZSAoJnNpbmstPmNhY2hlLCBOVUxMKTsKLQorICBpZiAoc2luay0+aGVhZGVyKSB7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoc2luay0+aGVhZGVyKTsKKyAgICBzaW5rLT5oZWFkZXIgPSBOVUxMOworICB9CiAgIGlmIChzaW5rLT5ydG1wKSB7CiAgICAgUlRNUF9DbG9zZSAoc2luay0+cnRtcCk7CiAgICAgUlRNUF9GcmVlIChzaW5rLT5ydG1wKTsKQEAgLTIwOCw3ICsyMjMsNyBAQAogZ3N0X3J0bXBfc2lua19yZW5kZXIgKEdzdEJhc2VTaW5rICogYnNpbmssIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKICAgR3N0UlRNUFNpbmsgKnNpbmsgPSBHU1RfUlRNUF9TSU5LIChic2luayk7Ci0gIEdzdEJ1ZmZlciAqcmVmZmVkX2J1ZiA9IE5VTEw7CisgIGdib29sZWFuIG5lZWRfdW5yZWYgPSBGQUxTRTsKICAgR3N0TWFwSW5mbyBtYXAgPSBHU1RfTUFQX0lORk9fSU5JVDsKIAogICBpZiAoc2luay0+cnRtcCA9PSBOVUxMKSB7CkBAIC0yMTcsNiArMjMyLDExIEBACiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CiAKKyAgLyogSWdub3JlIGJ1ZmZlcnMgdGhhdCBhcmUgaW4gdGhlIHN0cmVhbSBoZWFkZXJzIChjYXBzKSAqLworICBpZiAoR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoYnVmLCBHU1RfQlVGRkVSX0ZMQUdfSEVBREVSKSkgeworICAgIHJldHVybiBHU1RfRkxPV19PSzsKKyAgfQorCiAgIGlmIChzaW5rLT5maXJzdCkgewogICAgIC8qIG9wZW4gdGhlIGNvbm5lY3Rpb24gKi8KICAgICBpZiAoIVJUTVBfSXNDb25uZWN0ZWQgKHNpbmstPnJ0bXApKSB7CkBAIC0yMzQsMjEgKzI1NCwxNCBAQAogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIk9wZW5lZCBjb25uZWN0aW9uIHRvICVzIiwgc2luay0+cnRtcF91cmkpOwogICAgIH0KIAotICAgIC8qIEZJWE1FOiBQYXJzZSB0aGUgZmlyc3QgYnVmZmVyIGFuZCBzZWUgaWYgaXQgY29udGFpbnMgYSBoZWFkZXIgcGx1cyBhIHBhY2tldCBpbnN0ZWFkCi0gICAgICogb2YganVzdCBhc3N1bWluZyBpdCdzIG9ubHkgdGhlIGhlYWRlciAqLwotICAgIEdTVF9MT0dfT0JKRUNUIChzaW5rLCAiQ2FjaGluZyBmaXJzdCBidWZmZXIgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVAotICAgICAgICAiIGZvciBjb25jYXRlbmF0aW9uIiwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKSk7Ci0gICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmc2luay0+Y2FjaGUsIGJ1Zik7Ci0gICAgc2luay0+Zmlyc3QgPSBGQUxTRTsKLSAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0gIH0KKyAgICAvKiBQcmVwZW5kIHRoZSBoZWFkZXIgZnJvbSB0aGUgY2FwcyB0byB0aGUgZmlyc3Qgbm9uIGhlYWRlciBidWZmZXIgKi8KKyAgICBpZiAoc2luay0+aGVhZGVyKSB7CisgICAgICBidWYgPSBnc3RfYnVmZmVyX2FwcGVuZCAoZ3N0X2J1ZmZlcl9yZWYgKHNpbmstPmhlYWRlciksCisgICAgICAgICAgZ3N0X2J1ZmZlcl9yZWYgKGJ1ZikpOworICAgICAgbmVlZF91bnJlZiA9IFRSVUU7CisgICAgfQogCi0gIGlmIChzaW5rLT5jYWNoZSkgewotICAgIEdTVF9MT0dfT0JKRUNUIChzaW5rLCAiSm9pbmluZyAybmQgYnVmZmVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQKLSAgICAgICAgIiB0byBjYWNoZWQgYnVmIiwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKSk7Ci0gICAgZ3N0X2J1ZmZlcl9yZWYgKGJ1Zik7Ci0gICAgcmVmZmVkX2J1ZiA9IGJ1ZiA9IGdzdF9idWZmZXJfYXBwZW5kIChzaW5rLT5jYWNoZSwgYnVmKTsKLSAgICBzaW5rLT5jYWNoZSA9IE5VTEw7CisgICAgc2luay0+Zmlyc3QgPSBGQUxTRTsKICAgfQogCiAgIGlmIChzaW5rLT5oYXZlX3dyaXRlX2Vycm9yKQpAQCAtMjYzLDggKzI3Niw4IEBACiAgICAgZ290byB3cml0ZV9mYWlsZWQ7CiAKICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKLSAgaWYgKHJlZmZlZF9idWYpCi0gICAgZ3N0X2J1ZmZlcl91bnJlZiAocmVmZmVkX2J1Zik7CisgIGlmIChuZWVkX3VucmVmKQorICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogCkBAIC0yNzMsOCArMjg2LDggQEAKICAgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzaW5rLCBSRVNPVVJDRSwgV1JJVEUsIChOVUxMKSwgKCJGYWlsZWQgdG8gd3JpdGUgZGF0YSIpKTsKICAgICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZtYXApOwotICAgIGlmIChyZWZmZWRfYnVmKQotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAocmVmZmVkX2J1Zik7CisgICAgaWYgKG5lZWRfdW5yZWYpCisgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwogICAgIHNpbmstPmhhdmVfd3JpdGVfZXJyb3IgPSBUUlVFOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQpAQCAtMzgxLDYgKzM5NCw0OSBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9ydG1wX3Npbmtfc2V0Y2FwcyAoR3N0QmFzZVNpbmsgKiBzaW5rLCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0UlRNUFNpbmsgKnJ0bXBzaW5rID0gR1NUX1JUTVBfU0lOSyAoc2luayk7CisgIEdzdFN0cnVjdHVyZSAqczsKKyAgY29uc3QgR1ZhbHVlICpzaDsKKyAgR0FycmF5ICpidWZmZXJzOworICBnaW50IGk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgImNhcHMgc2V0IHRvICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKworICAvKiBDbGVhciBvdXIgY3VycmVudCBoZWFkZXIgYnVmZmVyICovCisgIGlmIChydG1wc2luay0+aGVhZGVyKSB7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAocnRtcHNpbmstPmhlYWRlcik7CisgICAgcnRtcHNpbmstPmhlYWRlciA9IE5VTEw7CisgIH0KKworICBydG1wc2luay0+aGVhZGVyID0gZ3N0X2J1ZmZlcl9uZXcgKCk7CisKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworCisgIHNoID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHMsICJzdHJlYW1oZWFkZXIiKTsKKyAgYnVmZmVycyA9IGdfdmFsdWVfcGVla19wb2ludGVyIChzaCk7CisKKyAgLyogQ29uY2F0ZW5hdGUgYWxsIGJ1ZmZlcnMgaW4gc3RyZWFtaGVhZGVyIGludG8gb25lICovCisgIGZvciAoaSA9IDA7IGkgPCBidWZmZXJzLT5sZW47ICsraSkgeworICAgIEdWYWx1ZSAqdmFsOworICAgIEdzdEJ1ZmZlciAqYnVmOworCisgICAgdmFsID0gJmdfYXJyYXlfaW5kZXggKGJ1ZmZlcnMsIEdWYWx1ZSwgaSk7CisgICAgYnVmID0gZ192YWx1ZV9wZWVrX3BvaW50ZXIgKHZhbCk7CisKKyAgICBnc3RfYnVmZmVyX3JlZiAoYnVmKTsKKworICAgIHJ0bXBzaW5rLT5oZWFkZXIgPSBnc3RfYnVmZmVyX2FwcGVuZCAocnRtcHNpbmstPmhlYWRlciwgYnVmKTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0bXBzaW5rLCAiaGF2ZSAlIiBHX0dTSVpFX0ZPUk1BVCAiIGJ5dGVzIG9mIGhlYWRlciBkYXRhIiwKKyAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKHJ0bXBzaW5rLT5oZWFkZXIpKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCiBnc3RfcnRtcF9zaW5rX2V2ZW50IChHc3RCYXNlU2luayAqIHNpbmssIEdzdEV2ZW50ICogZXZlbnQpCiB7CiAgIEdzdFJUTVBTaW5rICpydG1wc2luayA9IEdTVF9SVE1QX1NJTksgKHNpbmspOwpkaWZmIC0tZ2l0IGEvZXh0L3J0bXAvZ3N0cnRtcHNpbmsuaCBiL2V4dC9ydG1wL2dzdHJ0bXBzaW5rLmgKaW5kZXggNTIzZjVhZS4uYjkwNzJmNSAxMDA2NDQKLS0tIGEvZXh0L3J0bXAvZ3N0cnRtcHNpbmsuaAorKysgYi9leHQvcnRtcC9nc3RydG1wc2luay5oCkBAIC01Myw3ICs1Myw3IEBACiAgIFJUTVAgKnJ0bXA7CiAgIGdjaGFyICpydG1wX3VyaTsgLyogY29weSBvZiB1cmwgZm9yIGxpYnJ0bXAgKi8KIAotICBHc3RCdWZmZXIgKmNhY2hlOyAvKiBDYWNoZWQgYnVmZmVyICovCisgIEdzdEJ1ZmZlciAqaGVhZGVyOwogICBnYm9vbGVhbiBmaXJzdDsKICAgZ2Jvb2xlYW4gaGF2ZV93cml0ZV9lcnJvcjsKIH07CmRpZmYgLS1naXQgYS9leHQvcnRtcC9nc3RydG1wc3JjLmMgYi9leHQvcnRtcC9nc3RydG1wc3JjLmMKaW5kZXggYmJlZDhiMC4uMDJjYmVjMSAxMDA2NDQKLS0tIGEvZXh0L3J0bXAvZ3N0cnRtcHNyYy5jCisrKyBiL2V4dC9ydG1wL2dzdHJ0bXBzcmMuYwpAQCAtMzQsNyArMzQsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHJ0bXBzcmMgbG9jYXRpb249cnRtcDovL3NvbWVob3N0L3NvbWV1cmwgISBmYWtlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgcnRtcHNyYyBsb2NhdGlvbj1ydG1wOi8vc29tZWhvc3Qvc29tZXVybCAhIGZha2VzaW5rCiAgKiBdfCBPcGVuIGFuIFJUTVAgbG9jYXRpb24gYW5kIHBhc3MgaXRzIGNvbnRlbnQgdG8gZmFrZXNpbmsuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC00NDAsOCArNDQwLDggQEAKICAgICB9CiAgICAgY2FzZSBHU1RfUVVFUllfU0NIRURVTElORzp7CiAgICAgICBnc3RfcXVlcnlfc2V0X3NjaGVkdWxpbmcgKHF1ZXJ5LAotICAgICAgICAgIEdTVF9TQ0hFRFVMSU5HX0ZMQUdfU0VRVUVOVElBTCB8IEdTVF9TQ0hFRFVMSU5HX0ZMQUdfQkFORFdJRFRIX0xJTUlURUQsCi0gICAgICAgICAgMSwgLTEsIDApOworICAgICAgICAgIEdTVF9TQ0hFRFVMSU5HX0ZMQUdfU0VRVUVOVElBTCB8CisgICAgICAgICAgR1NUX1NDSEVEVUxJTkdfRkxBR19CQU5EV0lEVEhfTElNSVRFRCwgMSwgLTEsIDApOwogICAgICAgZ3N0X3F1ZXJ5X2FkZF9zY2hlZHVsaW5nX21vZGUgKHF1ZXJ5LCBHU1RfUEFEX01PREVfUFVTSCk7CiAKICAgICAgIHJldCA9IFRSVUU7CkBAIC01NzUsMTMgKzU3NSwxNyBAQAogICBzcmMtPmRpc2NvbnQgPSBUUlVFOwogCiAgIHNyYy0+cnRtcCA9IFJUTVBfQWxsb2MgKCk7CisKKyAgaWYgKCFzcmMtPnJ0bXApIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzcmMsICJDb3VsZCBub3QgYWxsb2NhdGUgbGlicnRtcCdzIFJUTVAgY29udGV4dCIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKwogICBSVE1QX0luaXQgKHNyYy0+cnRtcCk7CiAgIGlmICghUlRNUF9TZXR1cFVSTCAoc3JjLT5ydG1wLCBzcmMtPnVyaSkpIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELCAoTlVMTCksCiAgICAgICAgICgiRmFpbGVkIHRvIHNldHVwIFVSTCAnJXMnIiwgc3JjLT51cmkpKTsKLSAgICBSVE1QX0ZyZWUgKHNyYy0+cnRtcCk7Ci0gICAgc3JjLT5ydG1wID0gTlVMTDsKLSAgICByZXR1cm4gRkFMU0U7CisgICAgZ290byBlcnJvcjsKICAgfQogICBzcmMtPnNlZWthYmxlID0gIShzcmMtPnJ0bXAtPkxpbmsubEZsYWdzICYgUlRNUF9MRl9MSVZFKTsKICAgR1NUX0lORk9fT0JKRUNUIChzcmMsICJzZWVrYWJsZSAlZCIsIHNyYy0+c2Vla2FibGUpOwpAQCAtNTkxLDEzICs1OTUsMTggQEAKICAgICBpZiAoIVJUTVBfQ29ubmVjdCAoc3JjLT5ydG1wLCBOVUxMKSkgewogICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIE9QRU5fUkVBRCwgKE5VTEwpLAogICAgICAgICAgICgiQ291bGQgbm90IGNvbm5lY3QgdG8gUlRNUCBzdHJlYW0gXCIlc1wiIGZvciByZWFkaW5nIiwgc3JjLT51cmkpKTsKLSAgICAgIFJUTVBfRnJlZSAoc3JjLT5ydG1wKTsKLSAgICAgIHNyYy0+cnRtcCA9IE5VTEw7Ci0gICAgICByZXR1cm4gRkFMU0U7CisgICAgICBnb3RvIGVycm9yOwogICAgIH0KICAgfQogCiAgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgaWYgKHNyYy0+cnRtcCkgeworICAgIFJUTVBfRnJlZSAoc3JjLT5ydG1wKTsKKyAgICBzcmMtPnJ0bXAgPSBOVUxMOworICB9CisgIHJldHVybiBGQUxTRTsKIH0KIAogI3VuZGVmIFNUUjJBVkFMCmRpZmYgLS1naXQgYS9leHQvc2JjL01ha2VmaWxlLmluIGIvZXh0L3NiYy9NYWtlZmlsZS5pbgppbmRleCBkYTY3MTI3Li4xZmJjYWIzIDEwMDY0NAotLS0gYS9leHQvc2JjL01ha2VmaWxlLmluCisrKyBiL2V4dC9zYmMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvc2Nocm9lZGluZ2VyL01ha2VmaWxlLmluIGIvZXh0L3NjaHJvZWRpbmdlci9NYWtlZmlsZS5pbgppbmRleCA5ZjRmYmM5Li42Zjk5ZTMxIDEwMDY0NAotLS0gYS9leHQvc2Nocm9lZGluZ2VyL01ha2VmaWxlLmluCisrKyBiL2V4dC9zY2hyb2VkaW5nZXIvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc3LDYgKzI3Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE0LDYgKzMxNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIyLDcgKzMyNSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MSw4ICszNDMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU5LDE2ICszNjIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk0LDYgKzM5OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOSw2ICs0MjUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjAsNiArNTI4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMyw4ICs1NDIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTAsNiArNTU3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNywxNiArNjE2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY4LDYgKzY3OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzgsNiArNjkwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg3LDYgKzcwMCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjQsNyArNzM5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvc2RsL01ha2VmaWxlLmluIGIvZXh0L3NkbC9NYWtlZmlsZS5pbgppbmRleCAzODQyNmVjLi45YWE3YzkwIDEwMDY0NAotLS0gYS9leHQvc2RsL01ha2VmaWxlLmluCisrKyBiL2V4dC9zZGwvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmFtIGIvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5hbQppbmRleCA1ZjMzMWYzLi40ZmFmOWRmIDEwMDY0NAotLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmFtCisrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuYW0KQEAgLTYsNyArNiw2IEBACiAgICAgLURHU1RfVVNFX1VOU1RBQkxFX0FQSSAkKExJQlhNTDJfQ0ZMQUdTKQogbGliZ3N0c21vb3Roc3RyZWFtaW5nX2xhX0xJQkFERCA9IFwKICAgICAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9saWJnc3Rjb2RlY3BhcnNlcnMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKLSAgICAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3VyaWRvd25sb2FkZXIvbGliZ3N0dXJpZG93bmxvYWRlci0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogICAgICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKICAgICAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogICAgIC1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCmRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmluIGIvZXh0L3Ntb290aHN0cmVhbWluZy9NYWtlZmlsZS5pbgppbmRleCBkMTI2NWJmLi43N2FiY2FlIDEwMDY0NAotLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL01ha2VmaWxlLmluCisrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY1LDcgKzE2NCw2IEBACiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KIGxpYmdzdHNtb290aHN0cmVhbWluZ19sYV9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9saWJnc3Rjb2RlY3BhcnNlcnMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKLQkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3VyaWRvd25sb2FkZXIvbGliZ3N0dXJpZG93bmxvYWRlci0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCkBAIC0yODEsNiArMjc5LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTgsNiArMzE4LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjYsNyArMzI4LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ1LDggKzM0Niw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjMsMTYgKzM2NSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTgsNiArNDAxLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIzLDYgKzQyOCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNCw2ICs1MzEsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM3LDggKzU0NSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NCw2ICs1NjAsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjExLDE2ICs2MTksMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzIsNiArNjgyLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Miw2ICs2OTMsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTEsNiArNzAzLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOCw3ICs3NDIsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc3NSw3ICs3ODgsNiBAQAogCiBsaWJnc3RzbW9vdGhzdHJlYW1pbmdfbGFfTElCQUREID0gXAogICAgICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2xpYmdzdGNvZGVjcGFyc2Vycy0kKEdTVF9BUElfVkVSU0lPTikubGEgXAotICAgICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAgICAgJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEgXAogICAgICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAgICAgLWxnc3R0YWctJChHU1RfQVBJX1ZFUlNJT04pIFwKZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguYyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguYwppbmRleCAxOTZjZTQxLi5jOTc1ZTE3IDEwMDY0NAotLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmMKKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCkBAIC0xMjIsOSArMTIyLDEwIEBACiBzdGF0aWMgR3N0Q2xvY2tUaW1lIGdzdF9tc3NfZGVtdXhfZ2V0X2R1cmF0aW9uIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwogc3RhdGljIHZvaWQgZ3N0X21zc19kZW11eF9yZXNldCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9tc3NfZGVtdXhfc3RyZWFtX3NlZWsgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCi0gICAgR3N0Q2xvY2tUaW1lIHRzKTsKLXN0YXRpYyBnYm9vbGVhbgotZ3N0X21zc19kZW11eF9zdHJlYW1faGFzX25leHRfZnJhZ21lbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOworICAgIGdib29sZWFuIGZvcndhcmQsIEdzdFNlZWtGbGFncyBmbGFncywgR3N0Q2xvY2tUaW1lIHRzLAorICAgIEdzdENsb2NrVGltZSAqIGZpbmFsX3RzKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbXNzX2RlbXV4X3N0cmVhbV9oYXNfbmV4dF9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCisgICAgc3RyZWFtKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfbXNzX2RlbXV4X3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfbXNzX2RlbXV4X3N0cmVhbV9zZWxlY3RfYml0cmF0ZSAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCkBAIC0zMDQsMTEgKzMwNSwxMyBAQAogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X21zc19kZW11eF9zdHJlYW1fc2VlayAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIHRzKQorZ3N0X21zc19kZW11eF9zdHJlYW1fc2VlayAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwKKyAgICBHc3RTZWVrRmxhZ3MgZmxhZ3MsIEdzdENsb2NrVGltZSB0cywgR3N0Q2xvY2tUaW1lICogZmluYWxfdHMpCiB7CiAgIEdzdE1zc0RlbXV4U3RyZWFtICptc3NzdHJlYW0gPSAoR3N0TXNzRGVtdXhTdHJlYW0gKikgc3RyZWFtOwogCi0gIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtLCB0cyk7CisgIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtLCBmb3J3YXJkLCBmbGFncywgdHMsCisgICAgICBmaW5hbF90cyk7CiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIApAQCAtMzU0LDggKzM1Nyw3IEBACiAgIH0KIAogICBpZiAodG1wbCAhPSBOVUxMKSB7Ci0gICAgc3JjcGFkID0KLSAgICAgICAgR1NUX1BBRF9DQVNUIChnc3RfZ2hvc3RfcGFkX25ld19ub190YXJnZXRfZnJvbV90ZW1wbGF0ZSAobmFtZSwgdG1wbCkpOworICAgIHNyY3BhZCA9IEdTVF9QQURfQ0FTVCAoZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAodG1wbCwgbmFtZSkpOwogICAgIGdfZnJlZSAobmFtZSk7CiAgICAgZ3N0X29iamVjdF91bnJlZiAodG1wbCk7CiAgIH0KQEAgLTM2NywxMyArMzY5LDM1IEBACiAgIHJldHVybiBzcmNwYWQ7CiB9CiAKK3N0YXRpYyB2b2lkCitnc3RfbXNzX2RlbXV4X2FwcGx5X3Byb3RlY3Rpb25fc3lzdGVtIChHc3RDYXBzICogY2FwcywKKyAgICBjb25zdCBnY2hhciAqIHNlbGVjdGVkX3N5c3RlbSkKK3sKKyAgR3N0U3RydWN0dXJlICpzOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKHNlbGVjdGVkX3N5c3RlbSk7CisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsCisgICAgICAib3JpZ2luYWwtbWVkaWEtdHlwZSIsIEdfVFlQRV9TVFJJTkcsIGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHMpLAorICAgICAgR1NUX1BST1RFQ1RJT05fU1lTVEVNX0lEX0NBUFNfRklFTEQsIEdfVFlQRV9TVFJJTkcsIHNlbGVjdGVkX3N5c3RlbSwKKyAgICAgIE5VTEwpOworICBnc3Rfc3RydWN0dXJlX3NldF9uYW1lIChzLCAiYXBwbGljYXRpb24veC1jZW5jIik7CisKK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfbXNzX2RlbXV4X3NldHVwX3N0cmVhbXMgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKICAgR3N0TXNzRGVtdXggKm1zc2RlbXV4ID0gR1NUX01TU19ERU1VWF9DQVNUIChkZW11eCk7CiAgIEdTTGlzdCAqc3RyZWFtcyA9IGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3N0cmVhbXMgKG1zc2RlbXV4LT5tYW5pZmVzdCk7Ci0gIEdTTGlzdCAqaXRlcjsKICAgR1NMaXN0ICphY3RpdmVfc3RyZWFtcyA9IE5VTEw7CisgIEdTTGlzdCAqaXRlcjsKKyAgY29uc3QgZ2NoYXIgKnByb3RlY3Rpb25fc3lzdGVtX2lkID0KKyAgICAgIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fc3lzdGVtX2lkIChtc3NkZW11eC0+bWFuaWZlc3QpOworICBjb25zdCBnY2hhciAqcHJvdGVjdGlvbl9kYXRhID0KKyAgICAgIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fZGF0YSAobXNzZGVtdXgtPm1hbmlmZXN0KTsKKyAgZ2Jvb2xlYW4gcHJvdGVjdGVkID0gcHJvdGVjdGlvbl9zeXN0ZW1faWQgJiYgcHJvdGVjdGlvbl9kYXRhOworICBjb25zdCBnY2hhciAqc2VsZWN0ZWRfc3lzdGVtID0gTlVMTDsKIAogICBpZiAoc3RyZWFtcyA9PSBOVUxMKSB7CiAgICAgR1NUX0lORk9fT0JKRUNUIChtc3NkZW11eCwgIk5vIHN0cmVhbXMgZm91bmQgaW4gdGhlIG1hbmlmZXN0Iik7CkBAIC0zODMsNyArNDA3LDIzIEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKKyAgaWYgKHByb3RlY3RlZCkgeworICAgIGNvbnN0IGdjaGFyICpzeXNfaWRzWzJdID0geyBwcm90ZWN0aW9uX3N5c3RlbV9pZCwgTlVMTCB9OworCisgICAgc2VsZWN0ZWRfc3lzdGVtID0gZ3N0X3Byb3RlY3Rpb25fc2VsZWN0X3N5c3RlbSAoc3lzX2lkcyk7CisgICAgaWYgKCFzZWxlY3RlZF9zeXN0ZW0pIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG1zc2RlbXV4LCAic3RyZWFtIGlzIHByb3RlY3RlZCwgYnV0IG5vICIKKyAgICAgICAgICAic3VpdGFibGUgZGVjcnlwdG9yIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQiKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICBHU1RfSU5GT19PQkpFQ1QgKG1zc2RlbXV4LCAiQ2hhbmdpbmcgbWF4IGJpdHJhdGUgdG8gJXUiLAorICAgICAgZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQpOworICBnc3RfbXNzX21hbmlmZXN0X2NoYW5nZV9iaXRyYXRlIChtc3NkZW11eC0+bWFuaWZlc3QsIGRlbXV4LT5jb25uZWN0aW9uX3NwZWVkKTsKKwogICBHU1RfSU5GT19PQkpFQ1QgKG1zc2RlbXV4LCAiQWN0aXZhdGluZyBzdHJlYW1zIik7CisKICAgZm9yIChpdGVyID0gc3RyZWFtczsgaXRlcjsgaXRlciA9IGdfc2xpc3RfbmV4dCAoaXRlcikpIHsKICAgICBHc3RQYWQgKnNyY3BhZCA9IE5VTEw7CiAgICAgR3N0TXNzRGVtdXhTdHJlYW0gKnN0cmVhbSA9IE5VTEw7CkBAIC00MTMsNiArNDUzLDExIEBACiAgICAgY29uc3QgZ2NoYXIgKmxhbmc7CiAKICAgICBjYXBzID0gZ3N0X21zc19zdHJlYW1fZ2V0X2NhcHMgKHN0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtKTsKKworICAgIGlmIChwcm90ZWN0ZWQpIHsKKyAgICAgIGdzdF9tc3NfZGVtdXhfYXBwbHlfcHJvdGVjdGlvbl9zeXN0ZW0gKGNhcHMsIHNlbGVjdGVkX3N5c3RlbSk7CisgICAgfQorCiAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZXRfY2FwcyAoR1NUX0FEQVBUSVZFX0RFTVVYX1NUUkVBTV9DQVNUIChzdHJlYW0pLAogICAgICAgICBjcmVhdGVfbXNzX2NhcHMgKHN0cmVhbSwgY2FwcykpOwogICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKQEAgLTQyNSw2ICs0NzAsMjIgQEAKICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2V0X3RhZ3MgKEdTVF9BREFQVElWRV9ERU1VWF9TVFJFQU1fQ0FTVAogICAgICAgICAgIChzdHJlYW0pLCB0YWdzKTsKICAgICB9CisKKyAgICBpZiAocHJvdGVjdGVkKSB7CisgICAgICBnc2l6ZSBwcm90ZWN0aW9uX2RhdGFfbGVuOworICAgICAgZ3VjaGFyICpkZWNvZGVkX2RhdGEgPQorICAgICAgICAgIGdfYmFzZTY0X2RlY29kZSAocHJvdGVjdGlvbl9kYXRhLCAmcHJvdGVjdGlvbl9kYXRhX2xlbik7CisgICAgICBHc3RCdWZmZXIgKnByb3RlY3Rpb25fYnVmZmVyID0KKyAgICAgICAgICBnc3RfYnVmZmVyX25ld193cmFwcGVkIChkZWNvZGVkX2RhdGEsIHByb3RlY3Rpb25fZGF0YV9sZW4pOworICAgICAgR3N0RXZlbnQgKmV2ZW50ID0KKyAgICAgICAgICBnc3RfZXZlbnRfbmV3X3Byb3RlY3Rpb24gKHByb3RlY3Rpb25fc3lzdGVtX2lkLCBwcm90ZWN0aW9uX2J1ZmZlciwKKyAgICAgICAgICAic21vb3RoLXN0cmVhbWluZyIpOworCisgICAgICBHU1RfTE9HX09CSkVDVCAoc3RyZWFtLCAiUXVldWluZyBQcm90ZWN0aW9uIGV2ZW50IG9uIHNvdXJjZSBwYWQiKTsKKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fcXVldWVfZXZlbnQgKChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICopIHN0cmVhbSwKKyAgICAgICAgICBldmVudCk7CisgICAgICBnc3RfYnVmZmVyX3VucmVmIChwcm90ZWN0aW9uX2J1ZmZlcik7CisgICAgfQogICB9CiAKICAgZ19zbGlzdF9mcmVlIChhY3RpdmVfc3RyZWFtcyk7CkBAIC00ODUsMTAgKzU0NiwzMSBAQAogICBpZiAoZ3N0X21zc19zdHJlYW1fc2VsZWN0X2JpdHJhdGUgKG1zc3N0cmVhbS0+bWFuaWZlc3Rfc3RyZWFtLCBiaXRyYXRlKSkgewogICAgIEdzdENhcHMgKmNhcHM7CiAgICAgR3N0Q2FwcyAqbXNzY2FwczsKKyAgICBHc3RNc3NEZW11eCAqbXNzZGVtdXggPSBHU1RfTVNTX0RFTVVYX0NBU1QgKHN0cmVhbS0+ZGVtdXgpOworICAgIGNvbnN0IGdjaGFyICpwcm90ZWN0aW9uX3N5c3RlbV9pZCA9CisgICAgICAgIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fc3lzdGVtX2lkIChtc3NkZW11eC0+bWFuaWZlc3QpOworICAgIGNvbnN0IGdjaGFyICpwcm90ZWN0aW9uX2RhdGEgPQorICAgICAgICBnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX2RhdGEgKG1zc2RlbXV4LT5tYW5pZmVzdCk7CisgICAgZ2Jvb2xlYW4gcHJvdGVjdGVkID0gcHJvdGVjdGlvbl9zeXN0ZW1faWQgJiYgcHJvdGVjdGlvbl9kYXRhOworCiAgICAgY2FwcyA9IGdzdF9tc3Nfc3RyZWFtX2dldF9jYXBzIChtc3NzdHJlYW0tPm1hbmlmZXN0X3N0cmVhbSk7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwKICAgICAgICAgIlN0YXJ0aW5nIHN0cmVhbXMgcmVjb25maWd1cmF0aW9uIGR1ZSB0byBiaXRyYXRlIGNoYW5nZXMiKTsKKworICAgIGlmIChwcm90ZWN0ZWQpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpzeXNfaWRzWzJdID0geyBwcm90ZWN0aW9uX3N5c3RlbV9pZCwgTlVMTCB9OworICAgICAgY29uc3QgZ2NoYXIgKnNlbGVjdGVkX3N5c3RlbSA9IGdzdF9wcm90ZWN0aW9uX3NlbGVjdF9zeXN0ZW0gKHN5c19pZHMpOworCisgICAgICBpZiAoIXNlbGVjdGVkX3N5c3RlbSkgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChtc3NkZW11eCwgInN0cmVhbSBpcyBwcm90ZWN0ZWQsIGJ1dCBubyAiCisgICAgICAgICAgICAic3VpdGFibGUgZGVjcnlwdG9yIGVsZW1lbnQgaGFzIGJlZW4gZm91bmQiKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgfQorCisgICAgICBnc3RfbXNzX2RlbXV4X2FwcGx5X3Byb3RlY3Rpb25fc3lzdGVtIChjYXBzLCBzZWxlY3RlZF9zeXN0ZW0pOworICAgIH0KKwogICAgIG1zc2NhcHMgPSBjcmVhdGVfbXNzX2NhcHMgKG1zc3N0cmVhbSwgY2Fwcyk7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwKQEAgLTUwNSw2ICs1ODcsMTAgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorI2RlZmluZSBTRUVLX1VQREFURVNfUExBWV9QT1NJVElPTihyLCBzdGFydF90eXBlLCBzdG9wX3R5cGUpIFwKKyAgKChyID49IDAgJiYgc3RhcnRfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpIHx8IFwKKyAgIChyIDwgMCAmJiBzdG9wX3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKSkKKwogc3RhdGljIGdib29sZWFuCiBnc3RfbXNzX2RlbXV4X3NlZWsgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgR3N0RXZlbnQgKiBzZWVrKQogewpAQCAtNTIyLDcgKzYwOCwxMiBAQAogICAgICAgInNlZWsgZXZlbnQsIHJhdGU6ICVmIHN0YXJ0OiAlIiBHU1RfVElNRV9GT1JNQVQgIiBzdG9wOiAlIgogICAgICAgR1NUX1RJTUVfRk9STUFULCByYXRlLCBHU1RfVElNRV9BUkdTIChzdGFydCksIEdTVF9USU1FX0FSR1MgKHN0b3ApKTsKIAotICBnc3RfbXNzX21hbmlmZXN0X3NlZWsgKG1zc2RlbXV4LT5tYW5pZmVzdCwgc3RhcnQpOworICBpZiAoU0VFS19VUERBVEVTX1BMQVlfUE9TSVRJT04gKHJhdGUsIHN0YXJ0X3R5cGUsIHN0b3BfdHlwZSkpIHsKKyAgICBpZiAocmF0ZSA+PSAwKQorICAgICAgZ3N0X21zc19tYW5pZmVzdF9zZWVrIChtc3NkZW11eC0+bWFuaWZlc3QsIHJhdGUgPj0gMCwgc3RhcnQpOworICAgIGVsc2UKKyAgICAgIGdzdF9tc3NfbWFuaWZlc3Rfc2VlayAobXNzZGVtdXgtPm1hbmlmZXN0LCByYXRlID49IDAsIHN0b3ApOworICB9CiAKICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmggYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc2RlbXV4LmgKaW5kZXggY2M1ZmY3Zi4uZjNlYTZjZiAxMDA2NDQKLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5oCisrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzZGVtdXguaApAQCAtMjcsOCArMjcsOCBAQAogI2luY2x1ZGUgPGdzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaD4KICNpbmNsdWRlIDxnc3QvYmFzZS9nc3RhZGFwdGVyLmg+CiAjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0ZGF0YXF1ZXVlLmg+CisjaW5jbHVkZSA8Z3N0L2dzdHByb3RlY3Rpb24uaD4KICNpbmNsdWRlICJnc3Rtc3NtYW5pZmVzdC5oIgotI2luY2x1ZGUgPGdzdC91cmlkb3dubG9hZGVyL2dzdHVyaWRvd25sb2FkZXIuaD4KIAogR19CRUdJTl9ERUNMUwogCmRpZmYgLS1naXQgYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMgYi9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmMKaW5kZXggNjU1OWMyZS4uMDJlNTU5YyAxMDA2NDQKLS0tIGEvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5jCisrKyBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuYwpAQCAtOTUsNiArOTUsOSBAQAogCiAgIGdib29sZWFuIGlzX2xpdmU7CiAKKyAgR1N0cmluZyAqcHJvdGVjdGlvbl9zeXN0ZW1faWQ7CisgIGdjaGFyICpwcm90ZWN0aW9uX2RhdGE7CisKICAgR1NMaXN0ICpzdHJlYW1zOwogfTsKIApAQCAtMjY3LDYgKzI3MCw0MSBAQAogICBzdHJlYW0tPnJlZ2V4X3Bvc2l0aW9uID0gZ19yZWdleF9uZXcgKCJcXHtzdGFydFsgX110aW1lXFx9IiwgMCwgMCwgTlVMTCk7CiB9CiAKKworc3RhdGljIHZvaWQKK19nc3RfbXNzX3BhcnNlX3Byb3RlY3Rpb24gKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsCisgICAgeG1sTm9kZVB0ciBwcm90ZWN0aW9uX25vZGUpCit7CisgIHhtbE5vZGVQdHIgbm9kZWl0ZXI7CisKKyAgZm9yIChub2RlaXRlciA9IHByb3RlY3Rpb25fbm9kZS0+Y2hpbGRyZW47IG5vZGVpdGVyOworICAgICAgbm9kZWl0ZXIgPSBub2RlaXRlci0+bmV4dCkgeworICAgIGlmIChub2RlaXRlci0+dHlwZSA9PSBYTUxfRUxFTUVOVF9OT0RFCisgICAgICAgICYmIChzdHJjbXAgKChjb25zdCBjaGFyICopIG5vZGVpdGVyLT5uYW1lLCAiUHJvdGVjdGlvbkhlYWRlciIpID09IDApKSB7CisgICAgICB4bWxDaGFyICpzeXN0ZW1faWRfYXR0cmlidXRlID0KKyAgICAgICAgICB4bWxHZXRQcm9wIChub2RlaXRlciwgKHhtbENoYXIgKikgIlN5c3RlbUlEIik7CisgICAgICBnY2hhciAqdmFsdWUgPSAoZ2NoYXIgKikgc3lzdGVtX2lkX2F0dHJpYnV0ZTsKKyAgICAgIGludCBpZF9sZW4gPSBzdHJsZW4gKHZhbHVlKTsKKyAgICAgIEdTdHJpbmcgKnN5c3RlbV9pZDsKKworICAgICAgaWYgKHZhbHVlWzBdID09ICd7JykgeworICAgICAgICB2YWx1ZSsrOworICAgICAgICBpZF9sZW4tLTsKKyAgICAgIH0KKworICAgICAgc3lzdGVtX2lkID0gZ19zdHJpbmdfbmV3ICh2YWx1ZSk7CisgICAgICBzeXN0ZW1faWQgPSBnX3N0cmluZ19hc2NpaV9kb3duIChzeXN0ZW1faWQpOworICAgICAgaWYgKHZhbHVlW2lkX2xlbiAtIDFdID09ICd9JykKKyAgICAgICAgc3lzdGVtX2lkID0gZ19zdHJpbmdfdHJ1bmNhdGUgKHN5c3RlbV9pZCwgaWRfbGVuIC0gMSk7CisKKyAgICAgIG1hbmlmZXN0LT5wcm90ZWN0aW9uX3N5c3RlbV9pZCA9IHN5c3RlbV9pZDsKKyAgICAgIG1hbmlmZXN0LT5wcm90ZWN0aW9uX2RhdGEgPSAoZ2NoYXIgKikgeG1sTm9kZUdldENvbnRlbnQgKG5vZGVpdGVyKTsKKyAgICAgIHhtbEZyZWUgKHN5c3RlbV9pZF9hdHRyaWJ1dGUpOworICAgICAgYnJlYWs7CisgICAgfQorICB9Cit9CisKIEdzdE1zc01hbmlmZXN0ICoKIGdzdF9tc3NfbWFuaWZlc3RfbmV3IChHc3RCdWZmZXIgKiBkYXRhKQogewpAQCAtMzAwLDYgKzMzOCwxMSBAQAogICAgICAgbWFuaWZlc3QtPnN0cmVhbXMgPSBnX3NsaXN0X2FwcGVuZCAobWFuaWZlc3QtPnN0cmVhbXMsIHN0cmVhbSk7CiAgICAgICBfZ3N0X21zc19zdHJlYW1faW5pdCAoc3RyZWFtLCBub2RlaXRlcik7CiAgICAgfQorCisgICAgaWYgKG5vZGVpdGVyLT50eXBlID09IFhNTF9FTEVNRU5UX05PREUKKyAgICAgICAgJiYgKHN0cmNtcCAoKGNvbnN0IGNoYXIgKikgbm9kZWl0ZXItPm5hbWUsICJQcm90ZWN0aW9uIikgPT0gMCkpIHsKKyAgICAgIF9nc3RfbXNzX3BhcnNlX3Byb3RlY3Rpb24gKG1hbmlmZXN0LCBub2RlaXRlcik7CisgICAgfQogICB9CiAKICAgZ3N0X2J1ZmZlcl91bm1hcCAoZGF0YSwgJm1hcGluZm8pOwpAQCAtMzI3LDEwICszNzAsMjggQEAKIAogICBnX3NsaXN0X2ZyZWVfZnVsbCAobWFuaWZlc3QtPnN0cmVhbXMsIChHRGVzdHJveU5vdGlmeSkgZ3N0X21zc19zdHJlYW1fZnJlZSk7CiAKKyAgaWYgKG1hbmlmZXN0LT5wcm90ZWN0aW9uX3N5c3RlbV9pZCAhPSBOVUxMKQorICAgIGdfc3RyaW5nX2ZyZWUgKG1hbmlmZXN0LT5wcm90ZWN0aW9uX3N5c3RlbV9pZCwgVFJVRSk7CisgIHhtbEZyZWUgKG1hbmlmZXN0LT5wcm90ZWN0aW9uX2RhdGEpOworCiAgIHhtbEZyZWVEb2MgKG1hbmlmZXN0LT54bWwpOwogICBnX2ZyZWUgKG1hbmlmZXN0KTsKIH0KIAorY29uc3QgZ2NoYXIgKgorZ3N0X21zc19tYW5pZmVzdF9nZXRfcHJvdGVjdGlvbl9zeXN0ZW1faWQgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpCit7CisgIGlmIChtYW5pZmVzdC0+cHJvdGVjdGlvbl9zeXN0ZW1faWQgIT0gTlVMTCkKKyAgICByZXR1cm4gbWFuaWZlc3QtPnByb3RlY3Rpb25fc3lzdGVtX2lkLT5zdHI7CisgIHJldHVybiBOVUxMOworfQorCitjb25zdCBnY2hhciAqCitnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX2RhdGEgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpCit7CisgIHJldHVybiBtYW5pZmVzdC0+cHJvdGVjdGlvbl9kYXRhOworfQorCiBHU0xpc3QgKgogZ3N0X21zc19tYW5pZmVzdF9nZXRfc3RyZWFtcyAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCkKIHsKQEAgLTYzOSwxMSArNzAwLDEzIEBACiAgIGdjaGFyICphdWRpb3RhZyA9IChnY2hhciAqKSB4bWxHZXRQcm9wIChub2RlLCAoeG1sQ2hhciAqKSAiQXVkaW9UYWciKTsKICAgZ2NoYXIgKmNoYW5uZWxzX3N0ciA9IChnY2hhciAqKSB4bWxHZXRQcm9wIChub2RlLCAoeG1sQ2hhciAqKSAiQ2hhbm5lbHMiKTsKICAgZ2NoYXIgKnJhdGVfc3RyID0gKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopICJTYW1wbGluZ1JhdGUiKTsKKyAgZ2NoYXIgKmRlcHRoX3N0ciA9IChnY2hhciAqKSB4bWxHZXRQcm9wIChub2RlLCAoeG1sQ2hhciAqKSAiQml0c1BlclNhbXBsZSIpOwogICBnY2hhciAqYmxvY2tfYWxpZ25fc3RyID0KICAgICAgIChnY2hhciAqKSB4bWxHZXRQcm9wIChub2RlLCAoeG1sQ2hhciAqKSAiUGFja2V0U2l6ZSIpOwogICBnY2hhciAqY29kZWNfZGF0YV9zdHIgPQogICAgICAgKGdjaGFyICopIHhtbEdldFByb3AgKG5vZGUsICh4bWxDaGFyICopICJDb2RlY1ByaXZhdGVEYXRhIik7CiAgIEdzdEJ1ZmZlciAqY29kZWNfZGF0YSA9IE5VTEw7CisgIGdpbnQgZGVwdGggPSAwOwogICBnaW50IGJsb2NrX2FsaWduID0gMDsKICAgZ2ludCByYXRlID0gMDsKICAgZ2ludCBjaGFubmVscyA9IDA7CkBAIC02NzEsNiArNzM0LDggQEAKICAgICByYXRlID0gKGdpbnQpIGdfYXNjaWlfc3RydG91bGwgKHJhdGVfc3RyLCBOVUxMLCAxMCk7CiAgIGlmIChjaGFubmVsc19zdHIpCiAgICAgY2hhbm5lbHMgPSAoaW50KSBnX2FzY2lpX3N0cnRvdWxsIChjaGFubmVsc19zdHIsIE5VTEwsIDEwKTsKKyAgaWYgKGRlcHRoX3N0cikKKyAgICBkZXB0aCA9IChnaW50KSBnX2FzY2lpX3N0cnRvdWxsIChkZXB0aF9zdHIsIE5VTEwsIDEwKTsKICAgaWYgKGJsb2NrX2FsaWduX3N0cikKICAgICBibG9ja19hbGlnbiA9IChpbnQpIGdfYXNjaWlfc3RydG91bGwgKGJsb2NrX2FsaWduX3N0ciwgTlVMTCwgMTApOwogCkBAIC02OTcsNiArNzYyLDkgQEAKICAgICAgICAgaWYgKCFibG9ja19hbGlnbikgewogICAgICAgICAgIGJsb2NrX2FsaWduID0gR1NUX1JFQURfVUlOVDE2X0xFIChtYXBpbmZvLmRhdGEgKyAxMik7CiAgICAgICAgIH0KKyAgICAgICAgaWYgKCFkZXB0aCkgeworICAgICAgICAgIGRlcHRoID0gR1NUX1JFQURfVUlOVDE2X0xFIChtYXBpbmZvLmRhdGEgKyAxNCk7CisgICAgICAgIH0KICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoY29kZWNfZGF0YSwgJm1hcGluZm8pOwogCiAgICAgICAgIC8qIENvbnN1bWUgYWxsIHRoZSBXQVZFRk9STUFURVggc3RydWN0dXJlLCBhbmQgcGFzcyBvbmx5IHRoZSByZXN0IG9mCkBAIC03MjMsNiArNzkxLDkgQEAKICAgaWYgKHJhdGUpCiAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHN0cnVjdHVyZSwgInJhdGUiLCBHX1RZUEVfSU5ULCByYXRlLCBOVUxMKTsKIAorICBpZiAoZGVwdGgpCisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHN0cnVjdHVyZSwgImRlcHRoIiwgR19UWVBFX0lOVCwgZGVwdGgsIE5VTEwpOworCiAgIGlmIChxLT5iaXRyYXRlKQogICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzdHJ1Y3R1cmUsICJiaXRyYXRlIiwgR19UWVBFX0lOVCwgKGludCkgcS0+Yml0cmF0ZSwKICAgICAgICAgTlVMTCk7CkBAIC03MzgsNiArODA5LDcgQEAKICAgeG1sRnJlZSAoYXVkaW90YWcpOwogICB4bWxGcmVlIChjaGFubmVsc19zdHIpOwogICB4bWxGcmVlIChyYXRlX3N0cik7CisgIHhtbEZyZWUgKGRlcHRoX3N0cik7CiAgIHhtbEZyZWUgKGJsb2NrX2FsaWduX3N0cik7CiAgIHhtbEZyZWUgKGNvZGVjX2RhdGFfc3RyKTsKIApAQCAtOTE1LDcgKzk4Nyw5IEBACiAgICAgdGltZSA9IGZyYWdtZW50LT50aW1lICsgKGZyYWdtZW50LT5kdXJhdGlvbiAqIGZyYWdtZW50LT5yZXBldGl0aW9ucyk7CiAgIH0gZWxzZSB7CiAgICAgZnJhZ21lbnQgPSBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQtPmRhdGE7Ci0gICAgdGltZSA9IGZyYWdtZW50LT50aW1lICsgKGZyYWdtZW50LT5kdXJhdGlvbiAqIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCk7CisgICAgdGltZSA9CisgICAgICAgIGZyYWdtZW50LT50aW1lICsKKyAgICAgICAgKGZyYWdtZW50LT5kdXJhdGlvbiAqIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCk7CiAgIH0KIAogICB0aW1lc2NhbGUgPSBnc3RfbXNzX3N0cmVhbV9nZXRfdGltZXNjYWxlIChzdHJlYW0pOwpAQCAtMTAxNSwyNSArMTA4OSwzMiBAQAogLyoqCiAgKiBTZWVrcyBhbGwgc3RyZWFtcyB0byB0aGUgZnJhZ21lbnQgdGhhdCBjb250YWlucyB0aGUgc2V0IHRpbWUKICAqCisgKiBAZm9yd2FyZDogaWYgdGhpcyBpcyBmb3J3YXJkIHBsYXliYWNrCiAgKiBAdGltZTogdGltZSBpbiBuYW5vc2Vjb25kcwogICovCiB2b2lkCi1nc3RfbXNzX21hbmlmZXN0X3NlZWsgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIGd1aW50NjQgdGltZSkKK2dzdF9tc3NfbWFuaWZlc3Rfc2VlayAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ2Jvb2xlYW4gZm9yd2FyZCwKKyAgICBndWludDY0IHRpbWUpCiB7CiAgIEdTTGlzdCAqaXRlcjsKIAogICBmb3IgKGl0ZXIgPSBtYW5pZmVzdC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfc2xpc3RfbmV4dCAoaXRlcikpIHsKLSAgICBnc3RfbXNzX3N0cmVhbV9zZWVrIChpdGVyLT5kYXRhLCB0aW1lKTsKKyAgICBnc3RfbXNzX3N0cmVhbV9zZWVrIChpdGVyLT5kYXRhLCBmb3J3YXJkLCAwLCB0aW1lLCBOVUxMKTsKICAgfQogfQogCisjZGVmaW5lIFNOQVBfQUZURVIoZm9yd2FyZCxmbGFncykgXAorICAgICgoZm9yd2FyZCAmJiAoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIpKSB8fCBcCisgICAgKCFmb3J3YXJkICYmIChmbGFncyAmIEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUpKSkKKwogLyoqCiAgKiBTZWVrcyB0aGlzIHN0cmVhbSB0byB0aGUgZnJhZ21lbnQgdGhhdCBjb250YWlucyB0aGUgc2FtcGxlIGF0IHRpbWUKICAqCiAgKiBAdGltZTogdGltZSBpbiBuYW5vc2Vjb25kcwogICovCiB2b2lkCi1nc3RfbXNzX3N0cmVhbV9zZWVrIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIGd1aW50NjQgdGltZSkKK2dzdF9tc3Nfc3RyZWFtX3NlZWsgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwKKyAgICBHc3RTZWVrRmxhZ3MgZmxhZ3MsIGd1aW50NjQgdGltZSwgZ3VpbnQ2NCAqIGZpbmFsX3RpbWUpCiB7CiAgIEdMaXN0ICppdGVyOwogICBndWludDY0IHRpbWVzY2FsZTsKQEAgLTEwNDMsMzcgKzExMjQsNjAgQEAKICAgdGltZSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAodGltZSwgdGltZXNjYWxlLCBHU1RfU0VDT05EKTsKIAogICBHU1RfREVCVUcgKCJTdHJlYW0gJXMgc2Vla2luZyB0byAlIiBHX0dVSU5UNjRfRk9STUFULCBzdHJlYW0tPnVybCwgdGltZSk7Ci0KICAgZm9yIChpdGVyID0gc3RyZWFtLT5mcmFnbWVudHM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKLSAgICBHTGlzdCAqbmV4dCA9IGdfbGlzdF9uZXh0IChpdGVyKTsKLSAgICBpZiAobmV4dCkgewotICAgICAgZnJhZ21lbnQgPSBuZXh0LT5kYXRhOworICAgIGZyYWdtZW50ID0gaXRlci0+ZGF0YTsKKyAgICBpZiAoZnJhZ21lbnQtPnRpbWUgKyBmcmFnbWVudC0+cmVwZXRpdGlvbnMgKiBmcmFnbWVudC0+ZHVyYXRpb24gPiB0aW1lKSB7CisgICAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBpdGVyOworICAgICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4ID0KKyAgICAgICAgICAodGltZSAtIGZyYWdtZW50LT50aW1lKSAvIGZyYWdtZW50LT5kdXJhdGlvbjsKKyAgICAgIGlmICgoKHRpbWUgLSBmcmFnbWVudC0+dGltZSkgJSBmcmFnbWVudC0+ZHVyYXRpb24pID09IDApIHsKIAotICAgICAgaWYgKGZyYWdtZW50LT50aW1lID4gdGltZSkgewotICAgICAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBpdGVyOwotICAgICAgICBicmVhazsKKyAgICAgICAgLyogZm9yIHJldmVyc2UgcGxheWJhY2ssIHN0YXJ0IGZyb20gdGhlIHByZXZpb3VzIGZyYWdtZW50IHdoZW4gd2UgYXJlCisgICAgICAgICAqIGV4YWN0bHkgYXQgYSBsaW1pdCAqLworICAgICAgICBpZiAoIWZvcndhcmQpCisgICAgICAgICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4LS07CisgICAgICB9IGVsc2UgaWYgKFNOQVBfQUZURVIgKGZvcndhcmQsIGZsYWdzKSkKKyAgICAgICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4Kys7CisKKyAgICAgIGlmIChzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPT0gZnJhZ21lbnQtPnJlcGV0aXRpb25zKSB7CisgICAgICAgIC8qIG1vdmUgdG8gdGhlIG5leHQgb25lICovCisgICAgICAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCA9IDA7CisgICAgICAgIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IGdfbGlzdF9uZXh0IChpdGVyKTsKKyAgICAgICAgZnJhZ21lbnQgPQorICAgICAgICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID8gc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50LT5kYXRhIDogTlVMTDsKKworICAgICAgfSBlbHNlIGlmIChzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPT0gLTEpIHsKKyAgICAgICAgaWYgKGdfbGlzdF9wcmV2aW91cyAoaXRlcikpIHsKKyAgICAgICAgICBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQgPSBnX2xpc3RfcHJldmlvdXMgKGl0ZXIpOworICAgICAgICAgIGZyYWdtZW50ID0gc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50LT5kYXRhOworICAgICAgICAgIGdfYXNzZXJ0IChmcmFnbWVudCk7CisgICAgICAgICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4ID0gZnJhZ21lbnQtPnJlcGV0aXRpb25zIC0gMTsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBzdHJlYW0tPmZyYWdtZW50X3JlcGV0aXRpb25faW5kZXggPSAwOworICAgICAgICB9CiAgICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIGZyYWdtZW50ID0gaXRlci0+ZGF0YTsKLSAgICAgIGlmIChmcmFnbWVudC0+dGltZSArIGZyYWdtZW50LT5yZXBldGl0aW9ucyAqIGZyYWdtZW50LT5kdXJhdGlvbiA+IHRpbWUpIHsKLSAgICAgICAgc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50ID0gaXRlcjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IE5VTEw7ICAgICAgICAvKiBFT1MgKi8KLSAgICAgIH0KKwogICAgICAgYnJlYWs7CiAgICAgfQotICB9CiAKLSAgLyogcG9zaXRpb24gaW5zaWRlIHRoZSByZXBldGl0aW9ucyAqLwotICBpZiAoc3RyZWFtLT5jdXJyZW50X2ZyYWdtZW50KSB7Ci0gICAgZnJhZ21lbnQgPSBzdHJlYW0tPmN1cnJlbnRfZnJhZ21lbnQtPmRhdGE7Ci0gICAgc3RyZWFtLT5mcmFnbWVudF9yZXBldGl0aW9uX2luZGV4ID0KLSAgICAgICAgKHRpbWUgLSBmcmFnbWVudC0+dGltZSkgLyBmcmFnbWVudC0+ZHVyYXRpb247CiAgIH0KIAogICBHU1RfREVCVUcgKCJTdHJlYW0gJXMgc2Vla2VkIHRvIGZyYWdtZW50IHRpbWUgJSIgR19HVUlOVDY0X0ZPUk1BVAotICAgICAgIiByZXBldGl0aW9uICV1Iiwgc3RyZWFtLT51cmwsIGZyYWdtZW50LT50aW1lLAorICAgICAgIiByZXBldGl0aW9uICV1Iiwgc3RyZWFtLT51cmwsCisgICAgICBmcmFnbWVudCA/IGZyYWdtZW50LT50aW1lIDogR1NUX0NMT0NLX1RJTUVfTk9ORSwKICAgICAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCk7CisgIGlmIChmaW5hbF90aW1lKSB7CisgICAgaWYgKGZyYWdtZW50KSB7CisgICAgICAqZmluYWxfdGltZSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9yb3VuZCAoZnJhZ21lbnQtPnRpbWUgKworICAgICAgICAgIHN0cmVhbS0+ZnJhZ21lbnRfcmVwZXRpdGlvbl9pbmRleCAqIGZyYWdtZW50LT5kdXJhdGlvbiwKKyAgICAgICAgICBHU1RfU0VDT05ELCB0aW1lc2NhbGUpOworICAgIH0gZWxzZSB7CisgICAgICBHc3RNc3NTdHJlYW1GcmFnbWVudCAqbGFzdF9mcmFnbWVudCA9IGdfbGlzdF9sYXN0IChpdGVyKS0+ZGF0YTsKKyAgICAgICpmaW5hbF90aW1lID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX3JvdW5kIChsYXN0X2ZyYWdtZW50LT50aW1lICsKKyAgICAgICAgICBsYXN0X2ZyYWdtZW50LT5yZXBldGl0aW9ucyAqIGxhc3RfZnJhZ21lbnQtPmR1cmF0aW9uLAorICAgICAgICAgIEdTVF9TRUNPTkQsIHRpbWVzY2FsZSk7CisgICAgfQorICB9CiB9CiAKIGd1aW50NjQKQEAgLTExMjYsNyArMTIzMCw5IEBACiAgICAgZ19saXN0X2ZyZWVfZnVsbCAoc3RyZWFtLT5mcmFnbWVudHMsIGdfZnJlZSk7CiAgICAgc3RyZWFtLT5mcmFnbWVudHMgPSBnX2xpc3RfcmV2ZXJzZSAoYnVpbGRlci5mcmFnbWVudHMpOwogICAgIHN0cmVhbS0+Y3VycmVudF9mcmFnbWVudCA9IHN0cmVhbS0+ZnJhZ21lbnRzOwotICAgIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKHN0cmVhbSwgY3VycmVudF9nc3RfdGltZSk7CisgICAgLyogVE9ETyBWZXJpZnkgaG93IHJlcG9zaXRpb25pbmcgaGVyZSB3b3JrcyBmb3IgcmV2ZXJzZQorICAgICAqIHBsYXliYWNrIC0gaXQgbWlnaHQgc3RhcnQgZnJvbSB0aGUgd3JvbmcgZnJhZ21lbnQgKi8KKyAgICBnc3RfbXNzX3N0cmVhbV9zZWVrIChzdHJlYW0sIFRSVUUsIDAsIGN1cnJlbnRfZ3N0X3RpbWUsIE5VTEwpOwogICB9CiB9CiAKQEAgLTExNTYsOCArMTI2Miw2IEBACiAgIHhtbE5vZGVQdHIgcm9vdDsKICAgR3N0TWFwSW5mbyBpbmZvOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKG1hbmlmZXN0LT5pc19saXZlKTsKLQogICBnc3RfYnVmZmVyX21hcCAoZGF0YSwgJmluZm8sIEdTVF9NQVBfUkVBRCk7CiAKICAgeG1sID0geG1sUmVhZE1lbW9yeSAoKGNvbnN0IGdjaGFyICopIGluZm8uZGF0YSwKZGlmZiAtLWdpdCBhL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaCBiL2V4dC9zbW9vdGhzdHJlYW1pbmcvZ3N0bXNzbWFuaWZlc3QuaAppbmRleCAzNjRmNmQxLi5hZjc0MTljIDEwMDY0NAotLS0gYS9leHQvc21vb3Roc3RyZWFtaW5nL2dzdG1zc21hbmlmZXN0LmgKKysrIGIvZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NtYW5pZmVzdC5oCkBAIC00NCw3ICs0NCw3IEBACiBndWludDY0IGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3RpbWVzY2FsZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7CiBndWludDY0IGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2R1cmF0aW9uIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKIEdzdENsb2NrVGltZSBnc3RfbXNzX21hbmlmZXN0X2dldF9nc3RfZHVyYXRpb24gKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpOwotdm9pZCBnc3RfbXNzX21hbmlmZXN0X3NlZWsgKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QsIGd1aW50NjQgdGltZSk7Cit2b2lkIGdzdF9tc3NfbWFuaWZlc3Rfc2VlayAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCwgZ2Jvb2xlYW4gZm9yd2FyZCwgZ3VpbnQ2NCB0aW1lKTsKIGdib29sZWFuIGdzdF9tc3NfbWFuaWZlc3RfY2hhbmdlX2JpdHJhdGUgKEdzdE1zc01hbmlmZXN0ICptYW5pZmVzdCwgZ3VpbnQ2NCBiaXRyYXRlKTsKIGd1aW50NjQgZ3N0X21zc19tYW5pZmVzdF9nZXRfY3VycmVudF9iaXRyYXRlIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKIGdib29sZWFuIGdzdF9tc3NfbWFuaWZlc3RfaXNfbGl2ZSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7CkBAIC01Miw2ICs1Miw4IEBACiBnaW50IGdzdF9tc3NfbWFuaWZlc3RfZ2V0X2xvb2tfYWhlYWRfZnJhZ21lbnRzX2NvdW50IChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0KTsKIHZvaWQgZ3N0X21zc19tYW5pZmVzdF9yZWxvYWRfZnJhZ21lbnRzIChHc3RNc3NNYW5pZmVzdCAqIG1hbmlmZXN0LCBHc3RCdWZmZXIgKiBkYXRhKTsKIEdzdENsb2NrVGltZSBnc3RfbXNzX21hbmlmZXN0X2dldF9taW5fZnJhZ21lbnRfZHVyYXRpb24gKEdzdE1zc01hbmlmZXN0ICogbWFuaWZlc3QpOworY29uc3QgZ2NoYXIgKiBnc3RfbXNzX21hbmlmZXN0X2dldF9wcm90ZWN0aW9uX3N5c3RlbV9pZCAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7Citjb25zdCBnY2hhciAqIGdzdF9tc3NfbWFuaWZlc3RfZ2V0X3Byb3RlY3Rpb25fZGF0YSAoR3N0TXNzTWFuaWZlc3QgKiBtYW5pZmVzdCk7CiAKIEdzdE1zc1N0cmVhbVR5cGUgZ3N0X21zc19zdHJlYW1fZ2V0X3R5cGUgKEdzdE1zc1N0cmVhbSAqc3RyZWFtKTsKIEdzdENhcHMgKiBnc3RfbXNzX3N0cmVhbV9nZXRfY2FwcyAoR3N0TXNzU3RyZWFtICogc3RyZWFtKTsKQEAgLTY1LDcgKzY3LDcgQEAKIGdib29sZWFuIGdzdF9tc3Nfc3RyZWFtX2hhc19uZXh0X2ZyYWdtZW50IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pOwogR3N0Rmxvd1JldHVybiBnc3RfbXNzX3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pOwogR3N0Rmxvd1JldHVybiBnc3RfbXNzX3N0cmVhbV9yZWdyZXNzX2ZyYWdtZW50IChHc3RNc3NTdHJlYW0gKiBzdHJlYW0pOwotdm9pZCBnc3RfbXNzX3N0cmVhbV9zZWVrIChHc3RNc3NTdHJlYW0gKiBzdHJlYW0sIGd1aW50NjQgdGltZSk7Cit2b2lkIGdzdF9tc3Nfc3RyZWFtX3NlZWsgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSwgZ2Jvb2xlYW4gZm9yd2FyZCwgR3N0U2Vla0ZsYWdzIGZsYWdzLCBndWludDY0IHRpbWUsIGd1aW50NjQgKiBmaW5hbF90aW1lKTsKIGNvbnN0IGdjaGFyICogZ3N0X21zc19zdHJlYW1fZ2V0X2xhbmcgKEdzdE1zc1N0cmVhbSAqIHN0cmVhbSk7CiAKIGNvbnN0IGdjaGFyICogZ3N0X21zc19zdHJlYW1fdHlwZV9uYW1lIChHc3RNc3NTdHJlYW1UeXBlIHN0cmVhbXR5cGUpOwpkaWZmIC0tZ2l0IGEvZXh0L3NuZGZpbGUvTWFrZWZpbGUuaW4gYi9leHQvc25kZmlsZS9NYWtlZmlsZS5pbgppbmRleCBhNjMwMDk3Li4wYTQyNjYwIDEwMDY0NAotLS0gYS9leHQvc25kZmlsZS9NYWtlZmlsZS5pbgorKysgYi9leHQvc25kZmlsZS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9zbmRmaWxlL2dzdHNmZGVjLmMgYi9leHQvc25kZmlsZS9nc3RzZmRlYy5jCmluZGV4IGI2N2E3NDMuLmQ4NTRkYmEgMTAwNjQ0Ci0tLSBhL2V4dC9zbmRmaWxlL2dzdHNmZGVjLmMKKysrIGIvZXh0L3NuZGZpbGUvZ3N0c2ZkZWMuYwpAQCAtMjA2LDcgKzIwNiw3IEBACiAKICAgLyogRklYTUU6IHdlIHNob3VsZCBiZSB1c2luZyBHc3RTZWdtZW50IGZvciBhbGwgdGhpcyAqLwogICBpZiAoY3VyX3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9TRVQgfHwgc3RvcF90eXBlICE9IEdTVF9TRUVLX1RZUEVfTk9ORSkKLSAgICBnb3RvIHVuc3Vwb3J0ZWRfdHlwZTsKKyAgICBnb3RvIHVuc3VwcG9ydGVkX3R5cGU7CiAKICAgaWYgKHN0b3BfdHlwZSA9PSBHU1RfU0VFS19UWVBFX05PTkUpCiAgICAgc3RvcCA9IEdTVF9DTE9DS19USU1FX05PTkU7CkBAIC0yNzAsNyArMjcwLDcgQEAKICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2Vla2luZyBpcyBvbmx5IHN1cHBvcnRlZCBpbiBUSU1FIGZvcm1hdCIpOwogICAgIHJldHVybiBGQUxTRTsKICAgfQotdW5zdXBvcnRlZF90eXBlOgordW5zdXBwb3J0ZWRfdHlwZToKICAgewogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJ1bnN1cHBvcnRlZCBzZWVrIHR5cGUiKTsKICAgICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9leHQvc25kaW8vTWFrZWZpbGUuaW4gYi9leHQvc25kaW8vTWFrZWZpbGUuaW4KaW5kZXggYmVkY2Q4ZC4uNWU4OWM3NiAxMDA2NDQKLS0tIGEvZXh0L3NuZGlvL01ha2VmaWxlLmluCisrKyBiL2V4dC9zbmRpby9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9zbmRpby9zbmRpb3NpbmsuYyBiL2V4dC9zbmRpby9zbmRpb3NpbmsuYwppbmRleCBkMjY4MGE1Li4xZWFiODAwIDEwMDY0NAotLS0gYS9leHQvc25kaW8vc25kaW9zaW5rLmMKKysrIGIvZXh0L3NuZGlvL3NuZGlvc2luay5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKiA8cGFyYT4KICAqIFNpbXBsZSBleGFtcGxlIHBpcGVsaW5lIHRoYXQgcGxheXMgYW4gT2dnL1ZvcmJpcyBmaWxlIHZpYSBzbmRpbzoKICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj1mb28ub2dnICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIHNuZGlvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1mb28ub2dnICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIHNuZGlvc2luawogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIDwvcGFyYT4KICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9leHQvc25kaW8vc25kaW9zcmMuYyBiL2V4dC9zbmRpby9zbmRpb3NyYy5jCmluZGV4IDE5Nzc2YzIuLjY4MDBjN2QgMTAwNjQ0Ci0tLSBhL2V4dC9zbmRpby9zbmRpb3NyYy5jCisrKyBiL2V4dC9zbmRpby9zbmRpb3NyYy5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKiA8cGFyYT4KICAqIFNpbXBsZSBleGFtcGxlIHBpcGVsaW5lIHRoYXQgcmVjb3JkcyBhbiBPZ2cvVm9yYmlzIGZpbGUgdmlhIHNuZGlvOgogICogPHByb2dyYW1saXN0aW5nPgotICogZ3N0LWxhdW5jaCAtdiBzbmRpb3NyYyAhIGF1ZGlvY29udmVydCAhIHZvcmJpc2VuYyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPWZvby5vZ2cgCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBzbmRpb3NyYyAhIGF1ZGlvY29udmVydCAhIHZvcmJpc2VuYyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPWZvby5vZ2cKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiA8L3BhcmE+CiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZXh0L3NvdW5kdG91Y2gvTWFrZWZpbGUuaW4gYi9leHQvc291bmR0b3VjaC9NYWtlZmlsZS5pbgppbmRleCA3YzJhMDE4Li5jZmExYjA5IDEwMDY0NAotLS0gYS9leHQvc291bmR0b3VjaC9NYWtlZmlsZS5pbgorKysgYi9leHQvc291bmR0b3VjaC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yOTUsNiArMjk0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzIsNiArMzMzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNDAsNyArMzQzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzU5LDggKzM2MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzcsMTYgKzM4MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MTIsNiArNDE2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDM3LDYgKzQ0Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUzOCw2ICs1NDYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTUxLDggKzU2MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU2OCw2ICs1NzUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjI1LDE2ICs2MzQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02ODYsNiArNjk3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY5Niw2ICs3MDgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MDUsNiArNzE4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc0Miw3ICs3NTcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9zcGFuZHNwL01ha2VmaWxlLmFtIGIvZXh0L3NwYW5kc3AvTWFrZWZpbGUuYW0KaW5kZXggOTVhYjNkOS4uNDA1MDY4ZSAxMDA2NDQKLS0tIGEvZXh0L3NwYW5kc3AvTWFrZWZpbGUuYW0KKysrIGIvZXh0L3NwYW5kc3AvTWFrZWZpbGUuYW0KQEAgLTEsMTAgKzEsMTAgQEAKIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdHNwYW5kc3AubGEKIAotbGliZ3N0c3BhbmRzcF9sYV9TT1VSQ0VTID0gZ3N0c3BhbmRzcC5jIGdzdHNwYW5wbGMuYyBnc3RkdG1mZGV0ZWN0LmMKK2xpYmdzdHNwYW5kc3BfbGFfU09VUkNFUyA9IGdzdHNwYW5kc3AuYyBnc3RzcGFucGxjLmMgZ3N0ZHRtZmRldGVjdC5jIGdzdHRvbmVnZW5lcmF0ZXNyYy5jCiBsaWJnc3RzcGFuZHNwX2xhX0NGTEFHUyA9ICQoR1NUX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChTUEFORFNQX0NGTEFHUykKIGxpYmdzdHNwYW5kc3BfbGFfTElCQUREID0gJChTUEFORFNQX0xJQlMpICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAJICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKIGxpYmdzdHNwYW5kc3BfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0c3BhbmRzcF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogCi1ub2luc3RfSEVBREVSUyA9IGdzdHNwYW5wbGMuaCBnc3RkdG1mZGV0ZWN0LmgKK25vaW5zdF9IRUFERVJTID0gZ3N0c3BhbnBsYy5oIGdzdGR0bWZkZXRlY3QuaCBnc3R0b25lZ2VuZXJhdGVzcmMuaApkaWZmIC0tZ2l0IGEvZXh0L3NwYW5kc3AvTWFrZWZpbGUuaW4gYi9leHQvc3BhbmRzcC9NYWtlZmlsZS5pbgppbmRleCBhMTJmMjYzLi4yOTI0YjYxIDEwMDY0NAotLS0gYS9leHQvc3BhbmRzcC9NYWtlZmlsZS5pbgorKysgYi9leHQvc3BhbmRzcC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjksNyArMTY4LDggQEAKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGFtX2xpYmdzdHNwYW5kc3BfbGFfT0JKRUNUUyA9IGxpYmdzdHNwYW5kc3BfbGEtZ3N0c3BhbmRzcC5sbyBcCiAJbGliZ3N0c3BhbmRzcF9sYS1nc3RzcGFucGxjLmxvIFwKLQlsaWJnc3RzcGFuZHNwX2xhLWdzdGR0bWZkZXRlY3QubG8KKwlsaWJnc3RzcGFuZHNwX2xhLWdzdGR0bWZkZXRlY3QubG8gXAorCWxpYmdzdHNwYW5kc3BfbGEtZ3N0dG9uZWdlbmVyYXRlc3JjLmxvCiBsaWJnc3RzcGFuZHNwX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdHNwYW5kc3BfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCkBAIC0yNzcsNiArMjc3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTQsNiArMzE2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjIsNyArMzI2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQxLDggKzM0NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTksMTYgKzM2MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTQsNiArMzk5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE5LDYgKzQyNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMCw2ICs1MjksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMzLDggKzU0Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MCw2ICs1NTgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA3LDE2ICs2MTcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjgsNiArNjgwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OCw2ICs2OTEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODcsNiArNzAxLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNCw3ICs3NDAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc2NSwxNCArNzgwLDE0IEBACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0c3BhbmRzcC5sYQotbGliZ3N0c3BhbmRzcF9sYV9TT1VSQ0VTID0gZ3N0c3BhbmRzcC5jIGdzdHNwYW5wbGMuYyBnc3RkdG1mZGV0ZWN0LmMKK2xpYmdzdHNwYW5kc3BfbGFfU09VUkNFUyA9IGdzdHNwYW5kc3AuYyBnc3RzcGFucGxjLmMgZ3N0ZHRtZmRldGVjdC5jIGdzdHRvbmVnZW5lcmF0ZXNyYy5jCiBsaWJnc3RzcGFuZHNwX2xhX0NGTEFHUyA9ICQoR1NUX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChTUEFORFNQX0NGTEFHUykKIGxpYmdzdHNwYW5kc3BfbGFfTElCQUREID0gJChTUEFORFNQX0xJQlMpICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAJICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKIAogbGliZ3N0c3BhbmRzcF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RzcGFuZHNwX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGdzdHNwYW5wbGMuaCBnc3RkdG1mZGV0ZWN0LmgKK25vaW5zdF9IRUFERVJTID0gZ3N0c3BhbnBsYy5oIGdzdGR0bWZkZXRlY3QuaCBnc3R0b25lZ2VuZXJhdGVzcmMuaAogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtODU0LDYgKzg2OSw3IEBACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0c3BhbmRzcF9sYS1nc3RkdG1mZGV0ZWN0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0c3BhbmRzcF9sYS1nc3RzcGFuZHNwLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0c3BhbmRzcF9sYS1nc3RzcGFucGxjLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0c3BhbmRzcF9sYS1nc3R0b25lZ2VuZXJhdGVzcmMuUGxvQGFtX19xdW90ZUAKIAogLmMubzoKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKQEAgLTkwMCw2ICs5MTYsMTMgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RzcGFuZHNwX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHNwYW5kc3BfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0c3BhbmRzcF9sYS1nc3RkdG1mZGV0ZWN0LmxvIGB0ZXN0IC1mICdnc3RkdG1mZGV0ZWN0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGR0bWZkZXRlY3QuYwogCitsaWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5sbzogZ3N0dG9uZWdlbmVyYXRlc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RzcGFuZHNwX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHNwYW5kc3BfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHNwYW5kc3BfbGEtZ3N0dG9uZWdlbmVyYXRlc3JjLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5UcG8gLWMgLW8gbGliZ3N0c3BhbmRzcF9sYS1nc3R0b25lZ2VuZXJhdGVzcmMubG8gYHRlc3QgLWYgJ2dzdHRvbmVnZW5lcmF0ZXNyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R0b25lZ2VuZXJhdGVzcmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0c3BhbmRzcF9sYS1nc3R0b25lZ2VuZXJhdGVzcmMuVHBvICQoREVQRElSKS9saWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3R0b25lZ2VuZXJhdGVzcmMuYycgb2JqZWN0PSdsaWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHNwYW5kc3BfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0c3BhbmRzcF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RzcGFuZHNwX2xhLWdzdHRvbmVnZW5lcmF0ZXNyYy5sbyBgdGVzdCAtZiAnZ3N0dG9uZWdlbmVyYXRlc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHRvbmVnZW5lcmF0ZXNyYy5jCisKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KIApkaWZmIC0tZ2l0IGEvZXh0L3NwYW5kc3AvZ3N0c3BhbmRzcC5jIGIvZXh0L3NwYW5kc3AvZ3N0c3BhbmRzcC5jCmluZGV4IDBmZGNlNzkuLjM3YTA4MDYgMTAwNjQ0Ci0tLSBhL2V4dC9zcGFuZHNwL2dzdHNwYW5kc3AuYworKysgYi9leHQvc3BhbmRzcC9nc3RzcGFuZHNwLmMKQEAgLTI2LDEzICsyNiwxNSBAQAogCiAjaW5jbHVkZSAiZ3N0c3BhbnBsYy5oIgogI2luY2x1ZGUgImdzdGR0bWZkZXRlY3QuaCIKKyNpbmNsdWRlICJnc3R0b25lZ2VuZXJhdGVzcmMuaCIKIAogc3RhdGljIGdib29sZWFuCiBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQogewogICByZXR1cm4gZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgInNwYW5wbGMiLAogICAgICAgR1NUX1JBTktfUFJJTUFSWSwgR1NUX1RZUEVfU1BBTl9QTEMpICYmCi0gICAgICBnc3RfZHRtZl9kZXRlY3RfcGx1Z2luX2luaXQgKHBsdWdpbik7CisgICAgICBnc3RfZHRtZl9kZXRlY3RfcGx1Z2luX2luaXQgKHBsdWdpbikgJiYKKyAgICAgIGdzdF90b25lX2dlbmVyYXRlX3NyY19wbHVnaW5faW5pdCAocGx1Z2luKTsKIH0KIAogR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLApkaWZmIC0tZ2l0IGEvZXh0L3NwYW5kc3AvZ3N0dG9uZWdlbmVyYXRlc3JjLmMgYi9leHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYjBjYWU3Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3NwYW5kc3AvZ3N0dG9uZWdlbmVyYXRlc3JjLmMKQEAgLTAsMCArMSw0MTUgQEAKKy8qIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IElza3JhdGVsIGQuby5vLgorICogICBBdXRob3I6IE9rcnNsYXIgQWxlcyA8b2tyc2xhckBpc2tyYXRlbC5zaT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdHRvbmVnZW5lcmF0ZXNyYy5oIgorCisjdW5kZWYgSVRfREJHCisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKHRvbmVfZ2VuZXJhdGVfc3JjX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIHRvbmVfZ2VuZXJhdGVfc3JjX2RlYnVnCisKKyNkZWZpbmUgREVGQVVMVF9TQU1QTEVTX1BFUl9CVUZGRVIgICAxMDI0CisjZGVmaW5lIERFRkFVTFRfRlJFUSAgICAgICAgICAgICAgICAgMAorI2RlZmluZSBERUZBVUxUX1ZPTFVNRSAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgREVGQVVMVF9PTl9USU1FICAgICAgICAgICAgICAxMDAwCisjZGVmaW5lIERFRkFVTFRfT0ZGX1RJTUUgICAgICAgICAgICAgMTAwMAorI2RlZmluZSBERUZBVUxUX1JFUEVBVCAgICAgICAgICAgICAgIEZBTFNFCisKK2VudW0KK3sKKyAgUFJPUF8wLAorICBQUk9QX1NBTVBMRVNfUEVSX0JVRkZFUiwKKyAgUFJPUF9GUkVRLAorICBQUk9QX1ZPTFVNRSwKKyAgUFJPUF9GUkVRMiwKKyAgUFJPUF9WT0xVTUUyLAorICBQUk9QX09OX1RJTUUsCisgIFBST1BfT0ZGX1RJTUUsCisgIFBST1BfT05fVElNRTIsCisgIFBST1BfT0ZGX1RJTUUyLAorICBQUk9QX1JFUEVBVCwKKyAgUFJPUF9MQVNUCit9OworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3NyY190ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgiYXVkaW8veC1yYXcsICIKKyAgICAgICAgImZvcm1hdCA9IChzdHJpbmcpICIgR1NUX0FVRElPX05FIChTMTYpICIsICIKKyAgICAgICAgImxheW91dCA9IChzdHJpbmcpIGludGVybGVhdmVkLCAiICJyYXRlID0gKGludCkgODAwMCwgIiAiY2hhbm5lbHMgPSAxIikKKyAgICApOworCisjZGVmaW5lIGdzdF90b25lX2dlbmVyYXRlX3NyY19wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFIChHc3RUb25lR2VuZXJhdGVTcmMsIGdzdF90b25lX2dlbmVyYXRlX3NyYywgR1NUX1RZUEVfUFVTSF9TUkMpOworCitzdGF0aWMgdm9pZCBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF90b25lX2dlbmVyYXRlX3NyY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3N0YXJ0IChHc3RCYXNlU3JjICogYmFzZXNyYyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3N0b3AgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF90b25lX2dlbmVyYXRlX3NyY19maWxsIChHc3RQdXNoU3JjICogYmFzZXNyYywKKyAgICBHc3RCdWZmZXIgKiBidWZmZXIpOworCitzdGF0aWMgdm9pZAorZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2NsYXNzX2luaXQgKEdzdFRvbmVHZW5lcmF0ZVNyY0NsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKKyAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOworICBHc3RCYXNlU3JjQ2xhc3MgKmdzdGJhc2VzcmNfY2xhc3M7CisgIEdzdFB1c2hTcmNDbGFzcyAqZ3N0cHVzaHNyY19jbGFzczsKKworICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKyAgZ3N0ZWxlbWVudF9jbGFzcyA9IChHc3RFbGVtZW50Q2xhc3MgKikga2xhc3M7CisgIGdzdGJhc2VzcmNfY2xhc3MgPSAoR3N0QmFzZVNyY0NsYXNzICopIGtsYXNzOworICBnc3RwdXNoc3JjX2NsYXNzID0gKEdzdFB1c2hTcmNDbGFzcyAqKSBrbGFzczsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfZ2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF90b25lX2dlbmVyYXRlX3NyY19maW5hbGl6ZTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NBTVBMRVNfUEVSX0JVRkZFUiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJzYW1wbGVzcGVyYnVmZmVyIiwgIlNhbXBsZXMgcGVyIGJ1ZmZlciIsCisgICAgICAgICAgIk51bWJlciBvZiBzYW1wbGVzIGluIGVhY2ggb3V0Z29pbmcgYnVmZmVyIiwKKyAgICAgICAgICAxLCBHX01BWElOVCwgREVGQVVMVF9TQU1QTEVTX1BFUl9CVUZGRVIsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GUkVRLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImZyZXEiLCAiRnJlcXVlbmN5IiwgIkZyZXF1ZW5jeSBvZiB0ZXN0IHNpZ25hbCIsCisgICAgICAgICAgMCwgMjAwMDAsIERFRkFVTFRfRlJFUSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9WT0xVTUUsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgidm9sdW1lIiwgIlZvbHVtZSIsCisgICAgICAgICAgIlZvbHVtZSBvZiBmaXJzdCBzaWduYWwiLAorICAgICAgICAgIC01MCwgMCwgREVGQVVMVF9WT0xVTUUsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRlJFUTIsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgiZnJlcTIiLCAiU2Vjb25kIEZyZXF1ZW5jeSIsCisgICAgICAgICAgIkZyZXF1ZW5jeSBvZiBzZWNvbmQgdGVsZXBob255IHRvbmUgY29tcG9uZW50IiwKKyAgICAgICAgICAwLCAyMDAwMCwgREVGQVVMVF9GUkVRLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1ZPTFVNRTIsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgidm9sdW1lMiIsICJWb2x1bWUyIiwKKyAgICAgICAgICAiVm9sdW1lIG9mIHNlY29uZCB0b25lIHNpZ25hbCIsCisgICAgICAgICAgLTUwLCAwLCBERUZBVUxUX1ZPTFVNRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9PTl9USU1FLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm9uLXRpbWUiLCAiU2lnbmFsIE9OIHRpbWUgZmlyc3QgcGVyaW9kIiwKKyAgICAgICAgICAiVGltZSBvZiB0aGUgZmlyc3QgcGVyaW9kICB3aGVuIHRoZSB0b25lIHNpZ25hbCBpcyBwcmVzZW50IiwgMSwKKyAgICAgICAgICBHX01BWElOVCwgREVGQVVMVF9PTl9USU1FLCBHX1BBUkFNX1JFQURXUklURSkpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfT0ZGX1RJTUUsCisgICAgICBnX3BhcmFtX3NwZWNfaW50ICgib2ZmLXRpbWUiLCAiU2lnbmFsIE9GRiB0aW1lIGZpcnN0IHBlcmlvZCAiLAorICAgICAgICAgICJUaW1lIG9mIHRoZSBmaXJzdCBwZXJpb2QgIHdoZW4gdGhlIHRvbmUgc2lnbmFsIGlzIG9mZiIsIDAsIEdfTUFYSU5ULAorICAgICAgICAgIERFRkFVTFRfT0ZGX1RJTUUsIEdfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9PTl9USU1FMiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJvbi10aW1lMiIsICJTaWduYWwgT04gdGltZSBzZWNvbmQgcGVyaW9kIiwKKyAgICAgICAgICAiVGltZSBvZiB0aGUgc2Vjb25kIHBlcmlvZCAgd2hlbiB0aGUgdG9uZSBzaWduYWwgaXMgcHJlc2VudCIsIDEsCisgICAgICAgICAgR19NQVhJTlQsIERFRkFVTFRfT05fVElNRSwgR19QQVJBTV9SRUFEV1JJVEUpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX09GRl9USU1FMiwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJvZmYtdGltZTIiLCAiU2lnbmFsIE9GRiB0aW1lIGZpcnN0IHBlcmlvZCAiLAorICAgICAgICAgICJUaW1lIG9mIHRoZSBzZWNvbmQgcGVyaW9kICB3aGVuIHRoZSB0b25lIHNpZ25hbCBpcyBvZmYiLCAwLCBHX01BWElOVCwKKyAgICAgICAgICBERUZBVUxUX09OX1RJTUUsIEdfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9SRVBFQVQsCisgICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoInJlcGVhdCIsICJSZXBlYXQgdGhlIHNwZWNpZmllZCB0b25lIHBlcmlvZCAiLAorICAgICAgICAgICJXaGV0aGVyIHRvIHJlcGVhdCBzcGVjaWZpZWQgdG9uZSBpbmRlZmluaXRseSIsIERFRkFVTFRfUkVQRUFULAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF90b25lX2dlbmVyYXRlX3NyY19zcmNfdGVtcGxhdGUpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgIlRlbGVwaG9ueSBUb25lICBHZW5lcmF0b3Igc291cmNlIiwgIlNvdXJjZS9BdWRpbyIsCisgICAgICAiQ3JlYXRlcyB0ZWxlcGhvbnkgc2lnbmFscyBvZiBnaXZlbiBmcmVxdWVuY3ksIHZvbHVtZSwgY2FkZW5jZSIsCisgICAgICAiSXNrcmF0ZWwgPHd3dy5pc2tyYXRlbC5jb20+Iik7CisKKyAgZ3N0YmFzZXNyY19jbGFzcy0+c3RhcnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3N0YXJ0KTsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+c3RvcCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc3RvcCk7CisgIGdzdHB1c2hzcmNfY2xhc3MtPmZpbGwgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2ZpbGwpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2luaXQgKEdzdFRvbmVHZW5lcmF0ZVNyYyAqIHNyYykKK3sKKyAgc3JjLT52b2x1bWUgPSBERUZBVUxUX1ZPTFVNRTsKKyAgc3JjLT5mcmVxID0gREVGQVVMVF9GUkVROworICBzcmMtPm9uX3RpbWUgPSBERUZBVUxUX09OX1RJTUU7CisgIHNyYy0+b2ZmX3RpbWUgPSBERUZBVUxUX09GRl9USU1FOworICBzcmMtPnZvbHVtZTIgPSBERUZBVUxUX1ZPTFVNRTsKKyAgc3JjLT5mcmVxMiA9IERFRkFVTFRfRlJFUTsKKyAgc3JjLT5vbl90aW1lMiA9IERFRkFVTFRfT05fVElNRTsKKyAgc3JjLT5vZmZfdGltZTIgPSBERUZBVUxUX09GRl9USU1FOworICBzcmMtPnJlcGVhdCA9IERFRkFVTFRfUkVQRUFUOworCisgIGdzdF9iYXNlX3NyY19zZXRfZm9ybWF0IChHU1RfQkFTRV9TUkMgKHNyYyksIEdTVF9GT1JNQVRfVElNRSk7CisKKyAgc3JjLT5zYW1wbGVzX3Blcl9idWZmZXIgPSBERUZBVUxUX1NBTVBMRVNfUEVSX0JVRkZFUjsKKyAgZ3N0X2Jhc2Vfc3JjX3NldF9ibG9ja3NpemUgKEdTVF9CQVNFX1NSQyAoc3JjKSwgMiAqIHNyYy0+c2FtcGxlc19wZXJfYnVmZmVyKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF90b25lX2dlbmVyYXRlX3NyY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VG9uZUdlbmVyYXRlU3JjICpzcmMgPSBHU1RfVE9ORV9HRU5FUkFURV9TUkMgKG9iamVjdCk7CisKKyAgaWYgKHNyYy0+dG9uZV9kZXNjKSB7CisgICAgdG9uZV9nZW5fZGVzY3JpcHRvcl9mcmVlIChzcmMtPnRvbmVfZGVzYyk7CisgICAgc3JjLT50b25lX2Rlc2MgPSBOVUxMOworICB9CisKKyAgaWYgKHNyYy0+dG9uZV9zdGF0ZSkgeworICAgIHRvbmVfZ2VuX2ZyZWUgKHNyYy0+dG9uZV9zdGF0ZSk7CisgICAgc3JjLT50b25lX3N0YXRlID0gTlVMTDsKKyAgfQorCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc3RhcnQgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKQoreworICBHc3RUb25lR2VuZXJhdGVTcmMgKnNyYyA9IEdTVF9UT05FX0dFTkVSQVRFX1NSQyAoYmFzZXNyYyk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IEZBTFNFOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKworICBzcmMtPm5leHRfc2FtcGxlID0gMDsKKyAgc3JjLT5uZXh0X3RpbWUgPSAwOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90b25lX2dlbmVyYXRlX3NyY19zdG9wIChHc3RCYXNlU3JjICogYmFzZXNyYykKK3sKKyAgR3N0VG9uZUdlbmVyYXRlU3JjICpzcmMgPSBHU1RfVE9ORV9HRU5FUkFURV9TUkMgKGJhc2VzcmMpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgaWYgKHNyYy0+dG9uZV9kZXNjKSB7CisgICAgdG9uZV9nZW5fZGVzY3JpcHRvcl9mcmVlIChzcmMtPnRvbmVfZGVzYyk7CisgICAgc3JjLT50b25lX2Rlc2MgPSBOVUxMOworICB9CisKKyAgaWYgKHNyYy0+dG9uZV9zdGF0ZSkgeworICAgIHRvbmVfZ2VuX2ZyZWUgKHNyYy0+dG9uZV9zdGF0ZSk7CisgICAgc3JjLT50b25lX3N0YXRlID0gTlVMTDsKKyAgfQorICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IEZBTFNFOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF90b25lX2dlbmVyYXRlX3NyY19maWxsIChHc3RQdXNoU3JjICogYmFzZXNyYywgR3N0QnVmZmVyICogYnVmZmVyKQoreworICBHc3RUb25lR2VuZXJhdGVTcmMgKnNyYzsKKyAgR3N0Q2xvY2tUaW1lIG5leHRfdGltZTsKKyAgZ2ludDY0IG5leHRfc2FtcGxlOworICBnaW50IGJ5dGVzLCBzYW1wbGVzOworICBHc3RNYXBJbmZvIG1hcDsKKyAgY29uc3QgZ2ludCBzYW1wbGVyYXRlID0gODAwMCwgYnBmID0gMjsKKworICBzcmMgPSBHU1RfVE9ORV9HRU5FUkFURV9TUkMgKGJhc2VzcmMpOworCisgIGJ5dGVzID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKTsKKyAgc2FtcGxlcyA9IGJ5dGVzIC8gYnBmOworCisgIC8qIGNhbGN1bGF0ZSBmdWxsIGJ1ZmZlciAqLworICBuZXh0X3NhbXBsZSA9IHNyYy0+bmV4dF9zYW1wbGUgKyBzYW1wbGVzOworCisgIG5leHRfdGltZSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKG5leHRfc2FtcGxlLCBHU1RfU0VDT05ELCBzYW1wbGVyYXRlKTsKKworICBHU1RfTE9HX09CSkVDVCAoc3JjLCAic2FtcGxlcmF0ZSAlZCIsIHNhbXBsZXJhdGUpOworICBHU1RfTE9HX09CSkVDVCAoc3JjLCAibmV4dF9zYW1wbGUgJSIgR19HSU5UNjRfRk9STUFUICIsIHRzICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgIG5leHRfc2FtcGxlLCBHU1RfVElNRV9BUkdTIChuZXh0X3RpbWUpKTsKKworICBHU1RfQlVGRkVSX09GRlNFVCAoYnVmZmVyKSA9IHNyYy0+bmV4dF9zYW1wbGU7CisgIEdTVF9CVUZGRVJfT0ZGU0VUX0VORCAoYnVmZmVyKSA9IG5leHRfc2FtcGxlOworICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSA9IHNyYy0+bmV4dF90aW1lOworICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpID0gbmV4dF90aW1lIC0gc3JjLT5uZXh0X3RpbWU7CisKKyAgZ3N0X29iamVjdF9zeW5jX3ZhbHVlcyAoR1NUX09CSkVDVCAoc3JjKSwgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikpOworCisgIHNyYy0+bmV4dF90aW1lID0gbmV4dF90aW1lOworICBzcmMtPm5leHRfc2FtcGxlID0gbmV4dF9zYW1wbGU7CisKKyAgR1NUX0xPR19PQkpFQ1QgKHNyYywgImdlbmVyYXRpbmcgJXUgc2FtcGxlcyBhdCB0cyAlIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICBzYW1wbGVzLCBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSkpOworCisgIGdzdF9idWZmZXJfbWFwIChidWZmZXIsICZtYXAsIEdTVF9NQVBfV1JJVEUpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgaWYgKCFzcmMtPnRvbmVfc3RhdGUgfHwgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQpIHsKKyAgICBzcmMtPnRvbmVfZGVzYyA9IHRvbmVfZ2VuX2Rlc2NyaXB0b3JfaW5pdCAoc3JjLT50b25lX2Rlc2MsCisgICAgICAgIHNyYy0+ZnJlcSwKKyAgICAgICAgc3JjLT52b2x1bWUsCisgICAgICAgIHNyYy0+ZnJlcTIsCisgICAgICAgIHNyYy0+dm9sdW1lMiwKKyAgICAgICAgc3JjLT5vbl90aW1lLAorICAgICAgICBzcmMtPm9mZl90aW1lLCBzcmMtPm9uX3RpbWUyLCBzcmMtPm9mZl90aW1lMiwgc3JjLT5yZXBlYXQpOworCisgICAgc3JjLT50b25lX3N0YXRlID0gdG9uZV9nZW5faW5pdCAoc3JjLT50b25lX3N0YXRlLCBzcmMtPnRvbmVfZGVzYyk7CisgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBGQUxTRTsKKyAgfQorCisgIHRvbmVfZ2VuIChzcmMtPnRvbmVfc3RhdGUsIChpbnQxNl90ICopIG1hcC5kYXRhLCBzYW1wbGVzKTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwKTsKKworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFRvbmVHZW5lcmF0ZVNyYyAqc3JjID0gR1NUX1RPTkVfR0VORVJBVEVfU1JDIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9TQU1QTEVTX1BFUl9CVUZGRVI6CisgICAgICBzcmMtPnNhbXBsZXNfcGVyX2J1ZmZlciA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgZ3N0X2Jhc2Vfc3JjX3NldF9ibG9ja3NpemUgKEdTVF9CQVNFX1NSQ19DQVNUIChzcmMpLAorICAgICAgICAgIDIgKiBzcmMtPnNhbXBsZXNfcGVyX2J1ZmZlcik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlJFUToKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgICAgIHNyYy0+ZnJlcSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVk9MVU1FOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICAgICAgc3JjLT52b2x1bWUgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKKyAgICAgIHNyYy0+cHJvcGVydGllc19jaGFuZ2VkID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZSRVEyOgorICAgICAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICAgICAgc3JjLT5mcmVxMiA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVk9MVU1FMjoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgICAgIHNyYy0+dm9sdW1lMiA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT05fVElNRToKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgICAgIHNyYy0+b25fdGltZSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgc3JjLT5wcm9wZXJ0aWVzX2NoYW5nZWQgPSBUUlVFOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNyYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT05fVElNRTI6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7CisgICAgICBzcmMtPm9uX3RpbWUyID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IFRSVUU7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PRkZfVElNRToKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgICAgIHNyYy0+b2ZmX3RpbWUgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKKyAgICAgIHNyYy0+cHJvcGVydGllc19jaGFuZ2VkID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09GRl9USU1FMjoKKyAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc3JjKTsKKyAgICAgIHNyYy0+b2ZmX3RpbWUyID0gZ192YWx1ZV9nZXRfaW50ICh2YWx1ZSk7CisgICAgICBzcmMtPnByb3BlcnRpZXNfY2hhbmdlZCA9IFRSVUU7CisgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc3JjKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9SRVBFQVQ6CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7CisgICAgICBzcmMtPnJlcGVhdCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKKyAgICAgIHNyYy0+cHJvcGVydGllc19jaGFuZ2VkID0gVFJVRTsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RUb25lR2VuZXJhdGVTcmMgKnNyYyA9IEdTVF9UT05FX0dFTkVSQVRFX1NSQyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfU0FNUExFU19QRVJfQlVGRkVSOgorICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgc3JjLT5zYW1wbGVzX3Blcl9idWZmZXIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZSRVE6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPmZyZXEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1ZPTFVNRToKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+dm9sdW1lKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GUkVRMjoKKyAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIHNyYy0+ZnJlcTIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1ZPTFVNRTI6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPnZvbHVtZTIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09OX1RJTUU6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPm9uX3RpbWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX09GRl9USU1FOgorICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgc3JjLT5vZmZfdGltZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfT05fVElNRTI6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPm9uX3RpbWUyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PRkZfVElNRTI6CisgICAgICBnX3ZhbHVlX3NldF9pbnQgKHZhbHVlLCBzcmMtPm9mZl90aW1lMik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUkVQRUFUOgorICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHNyYy0+cmVwZWF0KTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworZ2Jvb2xlYW4KK2dzdF90b25lX2dlbmVyYXRlX3NyY19wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQoreworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAodG9uZV9nZW5lcmF0ZV9zcmNfZGVidWcsICJ0b25lZ2VuZXJhdGVzcmMiLCAwLAorICAgICAgIlRlbGVwaG9ueSBUb25lIFRlc3QgU291cmNlIik7CisKKyAgcmV0dXJuIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJ0b25lZ2VuZXJhdGVzcmMiLAorICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfVE9ORV9HRU5FUkFURV9TUkMpOworfQpkaWZmIC0tZ2l0IGEvZXh0L3NwYW5kc3AvZ3N0dG9uZWdlbmVyYXRlc3JjLmggYi9leHQvc3BhbmRzcC9nc3R0b25lZ2VuZXJhdGVzcmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDBlMTNkCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3NwYW5kc3AvZ3N0dG9uZWdlbmVyYXRlc3JjLmgKQEAgLTAsMCArMSw4OSBAQAorLyogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgSXNrcmF0ZWwgZC5vLm8uCisgKiAgIEF1dGhvcjogT2tyc2xhciBBbGVzIDxva3JzbGFyQGlza3JhdGVsLnNpPgorICogQ29weXJpZ2h0IChDKSAyMDE2IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9UT05FX0dFTkVSQVRFX1NSQ19IX18KKyNkZWZpbmUgX19HU1RfVE9ORV9HRU5FUkFURV9TUkNfSF9fCisKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RiYXNlc3JjLmg+CisKKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KKyNpbmNsdWRlIDxzcGFuZHNwLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9UT05FX0dFTkVSQVRFX1NSQyBcCisgIChnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1RPTkVfR0VORVJBVEVfU1JDKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfVE9ORV9HRU5FUkFURV9TUkMsR3N0VG9uZUdlbmVyYXRlU3JjKSkKKyNkZWZpbmUgR1NUX1RPTkVfR0VORVJBVEVfU1JDX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1RPTkVfR0VORVJBVEVfU1JDLEdzdFRvbmVHZW5lcmF0ZVNyY0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1RPTkVfR0VORVJBVEVfU1JDKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfVE9ORV9HRU5FUkFURV9TUkMpKQorI2RlZmluZSBHU1RfSVNfVE9ORV9HRU5FUkFURV9TUkNfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfVE9ORV9HRU5FUkFURV9TUkMpKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0VG9uZUdlbmVyYXRlU3JjIEdzdFRvbmVHZW5lcmF0ZVNyYzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RUb25lR2VuZXJhdGVTcmNDbGFzcyBHc3RUb25lR2VuZXJhdGVTcmNDbGFzczsKKworLyoqCisgKiBHc3RUb25lR2VuZXJhdGVTcmM6CisgKgorICogdG9uZWdlbmVyYXRlc3JjIG9iamVjdCBzdHJ1Y3R1cmUuCisgKi8KK3N0cnVjdCBfR3N0VG9uZUdlbmVyYXRlU3JjIHsKKyAgR3N0UHVzaFNyYyBwYXJlbnQ7CisKKyAgLyogcGFyYW1ldGVycyAqLworICBnaW50IHZvbHVtZTsgICAgICAvKiBUaGUgbGV2ZWwgb2YgdGhlIGZpcnN0IGZyZXF1ZW5jeSwgaW4gZEJtMCAqLworICBnaW50IHZvbHVtZTI7ICAgICAvKiBUaGUgbGV2ZWwgb2YgdGhlIHNlY29uZCBmcmVxdWVuY3ksIGluIGRCbTAsIG9yIHRoZSBwZXJjZW50YWdlIG1vZHVsYXRpb24gZGVwdGggZm9yIGFuIEFNIG1vZHVsYXRlZCB0b25lLiAqLworICBnaW50IGZyZXE7ICAgICAgICAvKiBUaGUgZmlyc3QgZnJlcXVlbmN5LCBpbiBIeiAqLworICBnaW50IGZyZXEyOyAgICAgICAvKiAwIGZvciBubyBzZWNvbmQgZnJlcXVlbmN5LCBhIHBvc2l0aXZlIG51bWJlciBmb3IgdGhlIHNlY29uZCBmcmVxdWVuY3ksIGluIEh6LCBvciBhIG5lZ2F0aXZlIG51bWJlciBmb3IgYW4gQU0gbW9kdWxhdGlvbiBmcmVxdWVuY3ksIGluIEh6ICovCisgIGdpbnQgb25fdGltZTsgICAgICAgICAvKiBPbiB0aW1lIGZvciB0aGUgZmlyc3QgcHJlc2VuY2Ugb2YgdG9uZSBzaWduYWwuICovCisgIGdpbnQgb2ZmX3RpbWU7ICAgICAgICAvKiBPZmYgdGltZSBiZXR3ZWVuIGZpcnN0IGFuZCBzZWNvbmQgcHJlc2VuY2Ugb2YgdG9uZSBzaWduYWwuICovCisgIGdpbnQgb25fdGltZTI7ICAgICAgICAvKiBPbiB0aW1lIGZvciB0aGUgc2Vjb25kIHByZXNlbmNlIG9mIHRvbmUgc2lnbmFsLiAqLworICBnaW50IG9mZl90aW1lMjsgICAgICAgLyogT2ZmIHRpbWUgYWZ0ZXIgdGhlIHNlY29uZCBwcmVzZW5jZSBvZiB0b25lIHNpZ25hbC4gKi8KKyAgZ2Jvb2xlYW4gcmVwZWF0OyAgICAgICAgIC8qIDAvMSBpZiB0aGUgdG9uZSByZXBlYXRlcyBpdHNlbGYgb3Igbm90LiAqLworCisgIC8qIGF1ZGlvIHBhcmFtZXRlcnMgKi8KKyAgZ2ludCBzYW1wbGVzX3Blcl9idWZmZXI7CisKKyAgLyo8IHByaXZhdGUgPiovCisgIEdzdENsb2NrVGltZSBuZXh0X3RpbWU7ICAgICAgICAgICAgICAgLyogbmV4dCB0aW1lc3RhbXAgKi8KKyAgZ2ludDY0IG5leHRfc2FtcGxlOyAgICAgICAgICAgICAgICAgICAvKiBuZXh0IHNhbXBsZSB0byBzZW5kICovCisKKyAgLyogU3BhbkRTUCAqLworICB0b25lX2dlbl9zdGF0ZV90ICp0b25lX3N0YXRlOworICB0b25lX2dlbl9kZXNjcmlwdG9yX3QgKnRvbmVfZGVzYzsKKyAgZ2Jvb2xlYW4gcHJvcGVydGllc19jaGFuZ2VkOworfTsKKworc3RydWN0IF9Hc3RUb25lR2VuZXJhdGVTcmNDbGFzcyB7CisgIEdzdFB1c2hTcmNDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSBnc3RfdG9uZV9nZW5lcmF0ZV9zcmNfZ2V0X3R5cGUgKHZvaWQpOworZ2Jvb2xlYW4gZ3N0X3RvbmVfZ2VuZXJhdGVfc3JjX3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKnBsdWdpbik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9UT05FX0dFTkVSQVRFX1NSQ19IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9zcGMvTWFrZWZpbGUuaW4gYi9leHQvc3BjL01ha2VmaWxlLmluCmluZGV4IDAzYjcwZDEuLjU3YWU4YTIgMTAwNjQ0Ci0tLSBhL2V4dC9zcGMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3NwYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC9zcGMvdGFnLmMgYi9leHQvc3BjL3RhZy5jCmluZGV4IDYxZTU5ZDUuLmJjMTNlY2IgMTAwNjQ0Ci0tLSBhL2V4dC9zcGMvdGFnLmMKKysrIGIvZXh0L3NwYy90YWcuYwpAQCAtMzI4LDIwICszMjgsMTMgQEAKIHZvaWQKIHNwY190YWdfZnJlZSAoc3BjX3RhZ19pbmZvICogaW5mbykKIHsKLSAgaWYgKGluZm8tPnRpdGxlKQotICAgIGdfZnJlZSAoaW5mby0+dGl0bGUpOwotICBpZiAoaW5mby0+Z2FtZSkKLSAgICBnX2ZyZWUgKGluZm8tPmdhbWUpOwotICBpZiAoaW5mby0+YXJ0aXN0KQotICAgIGdfZnJlZSAoaW5mby0+YXJ0aXN0KTsKLSAgaWYgKGluZm8tPmFsYnVtKQotICAgIGdfZnJlZSAoaW5mby0+YWxidW0pOwotICBpZiAoaW5mby0+cHVibGlzaGVyKQotICAgIGdfZnJlZSAoaW5mby0+cHVibGlzaGVyKTsKLSAgaWYgKGluZm8tPmNvbW1lbnQpCi0gICAgZ19mcmVlIChpbmZvLT5jb21tZW50KTsKLSAgaWYgKGluZm8tPmR1bXBlcikKLSAgICBnX2ZyZWUgKGluZm8tPmR1bXBlcik7CisgIGdfZnJlZSAoaW5mby0+dGl0bGUpOworICBnX2ZyZWUgKGluZm8tPmdhbWUpOworICBnX2ZyZWUgKGluZm8tPmFydGlzdCk7CisgIGdfZnJlZSAoaW5mby0+YWxidW0pOworICBnX2ZyZWUgKGluZm8tPnB1Ymxpc2hlcik7CisgIGdfZnJlZSAoaW5mby0+Y29tbWVudCk7CisgIGdfZnJlZSAoaW5mby0+ZHVtcGVyKTsKICAgaWYgKGluZm8tPmR1bXBfZGF0ZSkKICAgICBnX2RhdGVfZnJlZSAoaW5mby0+ZHVtcF9kYXRlKTsKIH0KZGlmZiAtLWdpdCBhL2V4dC9zcnRwL01ha2VmaWxlLmluIGIvZXh0L3NydHAvTWFrZWZpbGUuaW4KaW5kZXggY2QwNzc2Ni4uZWYyYzMzNiAxMDA2NDQKLS0tIGEvZXh0L3NydHAvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3NydHAvTWFrZWZpbGUuaW4KQEAgLTEyMywxNiArMTIzLDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yODQsNiArMjgzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjEsNiArMzIyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjksNyArMzMyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ4LDggKzM1MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjYsMTYgKzM2OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDEsNiArNDA1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI2LDYgKzQzMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNyw2ICs1MzUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQwLDggKzU0OSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Nyw2ICs1NjQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE0LDE2ICs2MjMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzUsNiArNjg2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4NSw2ICs2OTcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTQsNiArNzA3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMSw3ICs3NDYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC90ZWxldGV4dGRlYy9NYWtlZmlsZS5hbSBiL2V4dC90ZWxldGV4dGRlYy9NYWtlZmlsZS5hbQppbmRleCA4MzhlYjVmLi41YWE4YWI1IDEwMDY0NAotLS0gYS9leHQvdGVsZXRleHRkZWMvTWFrZWZpbGUuYW0KKysrIGIvZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmFtCkBAIC0xLDYgKzEsNiBAQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0dGVsZXRleHRkZWMubGEKIAotbGliZ3N0dGVsZXRleHRkZWNfbGFfU09VUkNFUyA9IGdzdHRlbGV0ZXh0ZGVjLmMgdGVsZXRleHQuYworbGliZ3N0dGVsZXRleHRkZWNfbGFfU09VUkNFUyA9IGdzdHRlbGV0ZXh0ZGVjLmMKIAogbGliZ3N0dGVsZXRleHRkZWNfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKFRFTEVURVhUREVDX0NGTEFHUykKIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0xJQkFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfTElCUykgJChURUxFVEVYVERFQ19MSUJTKQpkaWZmIC0tZ2l0IGEvZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmluIGIvZXh0L3RlbGV0ZXh0ZGVjL01ha2VmaWxlLmluCmluZGV4IDllMDY0ODQuLjA2NDEwNDEgMTAwNjQ0Ci0tLSBhL2V4dC90ZWxldGV4dGRlYy9NYWtlZmlsZS5pbgorKysgYi9leHQvdGVsZXRleHRkZWMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY3LDggKzE2Niw3IEBACiBsaWJnc3R0ZWxldGV4dGRlY19sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGFtX2xpYmdzdHRlbGV0ZXh0ZGVjX2xhX09CSkVDVFMgPSAgXAotCWxpYmdzdHRlbGV0ZXh0ZGVjX2xhLWdzdHRlbGV0ZXh0ZGVjLmxvIFwKLQlsaWJnc3R0ZWxldGV4dGRlY19sYS10ZWxldGV4dC5sbworCWxpYmdzdHRlbGV0ZXh0ZGVjX2xhLWdzdHRlbGV0ZXh0ZGVjLmxvCiBsaWJnc3R0ZWxldGV4dGRlY19sYV9PQkpFQ1RTID0gJChhbV9saWJnc3R0ZWxldGV4dGRlY19sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKQEAgLTI3Niw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzY0LDcgKzc3Nyw3IEBACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0dGVsZXRleHRkZWMubGEKLWxpYmdzdHRlbGV0ZXh0ZGVjX2xhX1NPVVJDRVMgPSBnc3R0ZWxldGV4dGRlYy5jIHRlbGV0ZXh0LmMKK2xpYmdzdHRlbGV0ZXh0ZGVjX2xhX1NPVVJDRVMgPSBnc3R0ZWxldGV4dGRlYy5jCiBsaWJnc3R0ZWxldGV4dGRlY19sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoVEVMRVRFWFRERUNfQ0ZMQUdTKQogbGliZ3N0dGVsZXRleHRkZWNfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQkFTRV9MSUJTKSAkKFRFTEVURVhUREVDX0xJQlMpCiBsaWJnc3R0ZWxldGV4dGRlY19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCkBAIC04NDksNyArODYyLDYgQEAKIAktcm0gLWYgKi50YWIuYwogCiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dGVsZXRleHRkZWNfbGEtZ3N0dGVsZXRleHRkZWMuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R0ZWxldGV4dGRlY19sYS10ZWxldGV4dC5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtODgyLDEzICs4OTQsNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhLWdzdHRlbGV0ZXh0ZGVjLmxvIGB0ZXN0IC1mICdnc3R0ZWxldGV4dGRlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R0ZWxldGV4dGRlYy5jCiAKLWxpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LmxvOiB0ZWxldGV4dC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dGVsZXRleHRkZWNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dGVsZXRleHRkZWNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R0ZWxldGV4dGRlY19sYS10ZWxldGV4dC5UcG8gLWMgLW8gbGliZ3N0dGVsZXRleHRkZWNfbGEtdGVsZXRleHQubG8gYHRlc3QgLWYgJ3RlbGV0ZXh0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHRlbGV0ZXh0LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LlRwbyAkKERFUERJUikvbGliZ3N0dGVsZXRleHRkZWNfbGEtdGVsZXRleHQuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndGVsZXRleHQuYycgb2JqZWN0PSdsaWJnc3R0ZWxldGV4dGRlY19sYS10ZWxldGV4dC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHRlbGV0ZXh0ZGVjX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHRlbGV0ZXh0ZGVjX2xhLXRlbGV0ZXh0LmxvIGB0ZXN0IC1mICd0ZWxldGV4dC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B0ZWxldGV4dC5jCi0KIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KIApkaWZmIC0tZ2l0IGEvZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmMgYi9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuYwppbmRleCA2MjJiOTcyLi45MWI3M2MyIDEwMDY0NAotLS0gYS9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuYworKysgYi9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuYwpAQCAtMjIsMTIgKzIyLDEzIEBACiAvKioKICAqIFNFQ1RJT046ZWxlbWVudC10ZWxldGV4dGRlYwogICoKLSAqIERlY29kZSBQRVMgc3RyZWFtIGNvbnRhaW5pbmcgdGVsZXRleHQgaW5mb3JtYXRpb24gdG8gUkdCQSBzdHJlYW0KKyAqIERlY29kZSBhIHN0cmVhbSBvZiByYXcgVkJJIHBhY2tldHMgY29udGFpbmluZyB0ZWxldGV4dCBpbmZvcm1hdGlvbiB0byBhIFJHQkEKKyAqIHN0cmVhbS4KICAqCiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiAtbSBmaWxlc3JjIGxvY2F0aW9uPXJlY29yZGluZy5tcGVnICEgbXBlZ3RzZGVtdXggISBwcml2YXRlL3RlbGV0ZXh0ICEgdGVsZXRleHRkZWMgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiAtbSBmaWxlc3JjIGxvY2F0aW9uPXJlY29yZGluZy5tcGVnICEgdHNkZW11eCAhIHRlbGV0ZXh0ZGVjICEgdmlkZW9jb252ZXJ0ICEgeGltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTM5LDEyICs0MCwxNSBAQAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KIAogI2luY2x1ZGUgImdzdHRlbGV0ZXh0ZGVjLmgiCiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF90ZWxldGV4dGRlY19kZWJ1Zyk7CiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdGVsZXRleHRkZWNfZGVidWcKIAorI2RlZmluZSBwYXJlbnRfY2xhc3MgZ3N0X3RlbGV0ZXh0ZGVjX3BhcmVudF9jbGFzcworCiAjZGVmaW5lIFNVQlRJVExFU19QQUdFIDg4OAogI2RlZmluZSBNQVhfU0xJQ0VTIDMyCiAjZGVmaW5lIERFRkFVTFRfRk9OVF9ERVNDUklQVElPTiAidmVyZGFuYSAxMiIKQEAgLTEyMCwyNiArMTI0LDI1IEBACiAgICIjRkYwMEZGIiwgIiMwMEZGRkYiLCAiI0VFRUVFRSIKIH07CiAKKy8qIGluIFJHQkEgbW9kZSwgb25lIGNoYXJhY3RlciBvY2N1cGllcyAxMiB4IDEwIHBpeGVscy4gKi8KKyNkZWZpbmUgQ09MVU1OU19UT19XSURUSChjb2xzKSAoKGNvbHMpICogMTIpCisjZGVmaW5lIFJPV1NfVE9fSEVJR0hUKHJvd3MpICgocm93cykgKiAxMCkKKwogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtfdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAogICAgIEdTVF9QQURfU0lOSywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMKLSAgICAoInZpZGVvL21wZWcsbXBlZ3ZlcnNpb249MixzeXN0ZW1zdHJlYW09VFJVRSA7IHByaXZhdGUvdGVsZXRleHQiKQorICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtdGVsZXRleHQ7IikKICAgICApOwogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjX3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLAogICAgIEdTVF9QQURfQUxXQVlTLAogICAgIEdTVF9TVEFUSUNfQ0FQUwotICAgIChHU1RfVklERU9fQ0FQU19SR0JBICI7IHRleHQvcGxhaW4gOyB0ZXh0L2h0bWwgOyB0ZXh0L3gtcGFuZ28tbWFya3VwIikKKyAgICAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoIlJHQkEiKSAiOyIKKyAgICAgICAgInRleHQveC1yYXcsIGZvcm1hdD17dXRmLTgscGFuZ28tbWFya3VwfSA7IikKICAgICApOwogCi0vKiBkZWJ1ZyBjYXRlZ29yeSBmb3IgZmlsdGVyaW5nIGxvZyBtZXNzYWdlcyAqLwotI2RlZmluZSBERUJVR19JTklUKGJsYSkgXAotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X3RlbGV0ZXh0ZGVjX2RlYnVnLCAidGVsZXRleHQiLCAwLCAiVGVsZXRleHQgZGVjb2RlciIpOwotCi1HU1RfQk9JTEVSUExBVEVfRlVMTCAoR3N0VGVsZXRleHREZWMsIGdzdF90ZWxldGV4dGRlYywgR3N0RWxlbWVudCwKLSAgICBHU1RfVFlQRV9FTEVNRU5ULCBERUJVR19JTklUKTsKK0dfREVGSU5FX1RZUEUgKEdzdFRlbGV0ZXh0RGVjLCBnc3RfdGVsZXRleHRkZWMsIEdTVF9UWVBFX0VMRU1FTlQpOwogCiBzdGF0aWMgdm9pZCBnc3RfdGVsZXRleHRkZWNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAogICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwpAQCAtMTQ3LDYwICsxNTAsMzUgQEAKICAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIHN0YXRpYyB2b2lkIGdzdF90ZWxldGV4dGRlY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CiAKLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfdGVsZXRleHRkZWNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfdGVsZXRleHRkZWNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICoKKyAgICBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKIAotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RlbGV0ZXh0ZGVjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdEJ1ZmZlciAqIGJ1Zik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3RlbGV0ZXh0ZGVjX3Npbmtfc2V0Y2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2Fwcyk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3RlbGV0ZXh0ZGVjX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0UGFkTGlua1JldHVybiBnc3RfdGVsZXRleHRkZWNfc3JjX3NldF9jYXBzIChHc3RQYWQgKiBwYWQsCi0gICAgR3N0Q2FwcyAqIGNhcHMpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RlbGV0ZXh0ZGVjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RCdWZmZXIgKiBidWZmZXIpOworc3RhdGljIGdib29sZWFuIGdzdF90ZWxldGV4dGRlY19zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RFdmVudCAqIGV2ZW50KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdGVsZXRleHRkZWNfc3JjX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RFdmVudCAqIGV2ZW50KTsKIAotc3RhdGljIHZiaV9ib29sIGdzdF90ZWxldGV4dGRlY19jb252ZXJ0ICh2YmlfZHZiX2RlbXV4ICogZHgsIGdwb2ludGVyIHVzZXJfZGF0YSwKLSAgICBjb25zdCB2Ymlfc2xpY2VkICogc2xpY2VkLCBndWludCBuX2xpbmVzLCBnaW50NjQgcHRzKTsKIHN0YXRpYyB2b2lkIGdzdF90ZWxldGV4dGRlY19ldmVudF9oYW5kbGVyICh2YmlfZXZlbnQgKiBldiwgdm9pZCAqdXNlcl9kYXRhKTsKIAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RlbGV0ZXh0ZGVjX3B1c2hfcGFnZSAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCk7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVsZXRleHRkZWNfZXhwb3J0X3RleHRfcGFnZSAoR3N0VGVsZXRleHREZWMgKgogICAgIHRlbGV0ZXh0LCB2YmlfcGFnZSAqIHBhZ2UsIEdzdEJ1ZmZlciAqKiBidWYpOwotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF9odG1sX3BhZ2UgKEdzdFRlbGV0ZXh0RGVjICoKLSAgICB0ZWxldGV4dCwgdmJpX3BhZ2UgKiBwYWdlLCBHc3RCdWZmZXIgKiogYnVmKTsKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF90ZWxldGV4dGRlY19leHBvcnRfcmdiYV9wYWdlIChHc3RUZWxldGV4dERlYyAqCiAgICAgdGVsZXRleHQsIHZiaV9wYWdlICogcGFnZSwgR3N0QnVmZmVyICoqIGJ1Zik7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdGVsZXRleHRkZWNfZXhwb3J0X3BhbmdvX3BhZ2UgKEdzdFRlbGV0ZXh0RGVjICoKICAgICB0ZWxldGV4dCwgdmJpX3BhZ2UgKiBwYWdlLCBHc3RCdWZmZXIgKiogYnVmKTsKIAotCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3RlbGV0ZXh0ZGVjX3B1c2hfcHJlcm9sbF9idWZmZXIgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQpOwogc3RhdGljIHZvaWQgZ3N0X3RlbGV0ZXh0ZGVjX3Byb2Nlc3NfdGVseF9idWZmZXIgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsCiAgICAgR3N0QnVmZmVyICogYnVmKTsKLXN0YXRpYyB2b2lkIGdzdF90ZWxldGV4dGRlY19wcm9jZXNzX3Blc19idWZmZXIgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsCi0gICAgR3N0QnVmZmVyICogYnVmKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfdGVsZXRleHRkZWNfZXh0cmFjdF9kYXRhX3VuaXRzIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0LAotICAgIEdzdFRlbGV0ZXh0RnJhbWUgKiBmLCBndWludDggKiBwYWNrZXQsIGd1aW50ICogb2Zmc2V0LCBnaW50IHNpemUpOworc3RhdGljIGdib29sZWFuIGdzdF90ZWxldGV4dGRlY19leHRyYWN0X2RhdGFfdW5pdHMgKEdzdFRlbGV0ZXh0RGVjICoKKyAgICB0ZWxldGV4dCwgR3N0VGVsZXRleHRGcmFtZSAqIGYsIGNvbnN0IGd1aW50OCAqIHBhY2tldCwgZ3VpbnQgKiBvZmZzZXQsCisgICAgZ3NpemUgc2l6ZSk7CiAKIHN0YXRpYyB2b2lkIGdzdF90ZWxldGV4dGRlY196dmJpX2luaXQgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQpOwogc3RhdGljIHZvaWQgZ3N0X3RlbGV0ZXh0ZGVjX3p2YmlfY2xlYXIgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQpOwotCi0vKiBHT2JqZWN0IHZtZXRob2QgaW1wbGVtZW50YXRpb25zICovCi0KLXN0YXRpYyB2b2lkCi1nc3RfdGVsZXRleHRkZWNfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKLSAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAotICAgICAgIlRlbGV0ZXh0IGRlY29kZXIiLAotICAgICAgIkRlY29kZXIiLAotICAgICAgIkRlY29kZSBQRVMgb3IgcmF3IFZCSSBzdHJlYW0gY29udGFpbmluZyB0ZWxldGV4dCBpbmZvcm1hdGlvbiB0byBSR0JBLCBIVE1MIGFuZCB0ZXh0IiwKLSAgICAgICJTZWJhc3RpYW4gUMO2bHN0ZXJsIDxzZWJwQGstZC13Lm9yZz4sICIKLSAgICAgICJBbmRvbmkgTW9yYWxlcyBBbGFzdHJ1ZXkgPHlsYXR1eWFAZ21haWwuY29tPiIpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCi0gICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfdGVtcGxhdGUpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNpbmtfdGVtcGxhdGUpKTsKLX0KK3N0YXRpYyB2b2lkIGdzdF90ZWxldGV4dGRlY19yZXNldF9mcmFtZSAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCk7CiAKIC8qIGluaXRpYWxpemUgdGhlIGdzdHRlbGV0ZXh0J3MgY2xhc3MgKi8KIHN0YXRpYyB2b2lkCkBAIC0yNDUsMTggKzIyMywyOCBAQAogICAgICAgICAgICJGb250IGRlc2NyaXB0aW9uIHVzZWQgZm9yIHRoZSBwYW5nbyBvdXRwdXQuIiwKICAgICAgICAgICBERUZBVUxUX0ZPTlRfREVTQ1JJUFRJT04sCiAgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgICJUZWxldGV4dCBkZWNvZGVyIiwKKyAgICAgICJEZWNvZGVyIiwKKyAgICAgICJEZWNvZGUgYSByYXcgVkJJIHN0cmVhbSBjb250YWluaW5nIHRlbGV0ZXh0IGluZm9ybWF0aW9uIHRvIFJHQkEgYW5kIHRleHQiLAorICAgICAgIlNlYmFzdGlhbiBQw7Zsc3RlcmwgPHNlYnBAay1kLXcub3JnPiwgIgorICAgICAgIkFuZG9uaSBNb3JhbGVzIEFsYXN0cnVleSA8eWxhdHV5YUBnbWFpbC5jb20+Iik7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNyY190ZW1wbGF0ZSkpOworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua190ZW1wbGF0ZSkpOwogfQogCiAvKiBpbml0aWFsaXplIHRoZSBuZXcgZWxlbWVudAogICogaW5pdGlhbGl6ZSBpbnN0YW5jZSBzdHJ1Y3R1cmUKICAqLwogc3RhdGljIHZvaWQKLWdzdF90ZWxldGV4dGRlY19pbml0IChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0LCBHc3RUZWxldGV4dERlY0NsYXNzICoga2xhc3MpCitnc3RfdGVsZXRleHRkZWNfaW5pdCAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCkKIHsKICAgLyogQ3JlYXRlIHNpbmsgcGFkICovCiAgIHRlbGV0ZXh0LT5zaW5rcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZzaW5rX3RlbXBsYXRlLCAic2luayIpOwotICBnc3RfcGFkX3NldF9zZXRjYXBzX2Z1bmN0aW9uICh0ZWxldGV4dC0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVsZXRleHRkZWNfc2lua19zZXRjYXBzKSk7CiAgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uICh0ZWxldGV4dC0+c2lua3BhZCwKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVsZXRleHRkZWNfY2hhaW4pKTsKICAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKHRlbGV0ZXh0LT5zaW5rcGFkLApAQCAtMjY1LDExICsyNTMsMTEgQEAKIAogICAvKiBDcmVhdGUgc3JjIHBhZCAqLwogICB0ZWxldGV4dC0+c3JjcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZzcmNfdGVtcGxhdGUsICJzcmMiKTsKLSAgZ3N0X3BhZF9zZXRfc2V0Y2Fwc19mdW5jdGlvbiAodGVsZXRleHQtPnNyY3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVsZXRleHRkZWNfc3JjX3NldF9jYXBzKSk7CisgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uICh0ZWxldGV4dC0+c3JjcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZWxldGV4dGRlY19zcmNfZXZlbnQpKTsKICAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKHRlbGV0ZXh0KSwgdGVsZXRleHQtPnNyY3BhZCk7CiAKLSAgdGVsZXRleHQtPmRlbXV4ID0gTlVMTDsKKyAgdGVsZXRleHQtPnNlZ21lbnQgPSBOVUxMOwogICB0ZWxldGV4dC0+ZGVjb2RlciA9IE5VTEw7CiAgIHRlbGV0ZXh0LT5wYWdlbm8gPSAweDEwMDsKICAgdGVsZXRleHQtPnN1Ym5vID0gLTE7CkBAIC0yODQsMTYgKzI3MiwxNCBAQAogICB0ZWxldGV4dC0+cmF0ZV9kZW5vbWluYXRvciA9IDE7CiAKICAgdGVsZXRleHQtPnF1ZXVlID0gTlVMTDsKLSAgdGVsZXRleHQtPnF1ZXVlX2xvY2sgPSBnX211dGV4X25ldyAoKTsKKyAgZ19tdXRleF9pbml0ICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogCi0gIHRlbGV0ZXh0LT5mcmFtZSA9IGdfbmV3MCAoR3N0VGVsZXRleHRGcmFtZSwgMSk7Ci0gIHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2JlZ2luID0gZ19uZXcgKHZiaV9zbGljZWQsIE1BWF9TTElDRVMpOwotICB0ZWxldGV4dC0+ZnJhbWUtPmN1cnJlbnRfc2xpY2UgPSB0ZWxldGV4dC0+ZnJhbWUtPnNsaWNlZF9iZWdpbjsKLSAgdGVsZXRleHQtPmZyYW1lLT5zbGljZWRfZW5kID0gdGVsZXRleHQtPmZyYW1lLT5zbGljZWRfYmVnaW4gKyBNQVhfU0xJQ0VTOworICBnc3RfdGVsZXRleHRkZWNfcmVzZXRfZnJhbWUgKHRlbGV0ZXh0KTsKIAogICB0ZWxldGV4dC0+bGFzdF90cyA9IDA7CiAKLSAgdGVsZXRleHQtPnByb2Nlc3NfYnVmX2Z1bmMgPSBOVUxMOworICB0ZWxldGV4dC0+ZXhwb3J0X2Z1bmMgPSBOVUxMOworICB0ZWxldGV4dC0+YnVmX3Bvb2wgPSBOVUxMOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMzAxLDcgKzI4Nyw3IEBACiB7CiAgIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAob2JqZWN0KTsKIAotICBnX211dGV4X2ZyZWUgKHRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKKyAgZ19tdXRleF9jbGVhciAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKIAogICBnX2ZyZWUgKHRlbGV0ZXh0LT5mcmFtZSk7CiAKQEAgLTMyMSw5ICszMDcsOSBAQAogICAgICAgVkJJX0VWRU5UX1RUWF9QQUdFIHwgVkJJX0VWRU5UX0NBUFRJT04sCiAgICAgICBnc3RfdGVsZXRleHRkZWNfZXZlbnRfaGFuZGxlciwgdGVsZXRleHQpOwogCi0gIGdfbXV0ZXhfbG9jayAodGVsZXRleHQtPnF1ZXVlX2xvY2spOworICBnX211dGV4X2xvY2sgKCZ0ZWxldGV4dC0+cXVldWVfbG9jayk7CiAgIHRlbGV0ZXh0LT5xdWV1ZSA9IGdfcXVldWVfbmV3ICgpOwotICBnX211dGV4X3VubG9jayAodGVsZXRleHQtPnF1ZXVlX2xvY2spOworICBnX211dGV4X3VubG9jayAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTMzMywyNSArMzE5LDIzIEBACiAKICAgR1NUX0xPR19PQkpFQ1QgKHRlbGV0ZXh0LCAiQ2xlYXJpbmcgc3RydWN0dXJlcyIpOwogCi0gIGlmICh0ZWxldGV4dC0+ZGVtdXggIT0gTlVMTCkgewotICAgIHZiaV9kdmJfZGVtdXhfZGVsZXRlICh0ZWxldGV4dC0+ZGVtdXgpOwotICAgIHRlbGV0ZXh0LT5kZW11eCA9IE5VTEw7Ci0gIH0KICAgaWYgKHRlbGV0ZXh0LT5kZWNvZGVyICE9IE5VTEwpIHsKICAgICB2YmlfZGVjb2Rlcl9kZWxldGUgKHRlbGV0ZXh0LT5kZWNvZGVyKTsKICAgICB0ZWxldGV4dC0+ZGVjb2RlciA9IE5VTEw7CiAgIH0KICAgaWYgKHRlbGV0ZXh0LT5mcmFtZSAhPSBOVUxMKSB7CisgICAgaWYgKHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2JlZ2luKQorICAgICAgZ19mcmVlICh0ZWxldGV4dC0+ZnJhbWUtPnNsaWNlZF9iZWdpbik7CiAgICAgZ19mcmVlICh0ZWxldGV4dC0+ZnJhbWUpOwogICAgIHRlbGV0ZXh0LT5mcmFtZSA9IE5VTEw7CiAgIH0KIAotICBnX211dGV4X2xvY2sgKHRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogICBpZiAodGVsZXRleHQtPnF1ZXVlICE9IE5VTEwpIHsKICAgICBnX3F1ZXVlX2ZyZWUgKHRlbGV0ZXh0LT5xdWV1ZSk7CiAgICAgdGVsZXRleHQtPnF1ZXVlID0gTlVMTDsKICAgfQotICBnX211dGV4X3VubG9jayAodGVsZXRleHQtPnF1ZXVlX2xvY2spOworICBnX211dGV4X3VubG9jayAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKIAogICB0ZWxldGV4dC0+aW5fdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgdGVsZXRleHQtPmluX2R1cmF0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKQEAgLTQxNywyMSArNDAxLDMxIEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X3RlbGV0ZXh0ZGVjX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0RXZlbnQgKiBldmVudCkKK2dzdF90ZWxldGV4dGRlY19zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKIHsKICAgZ2Jvb2xlYW4gcmV0OwotICBHc3RUZWxldGV4dERlYyAqdGVsZXRleHQgPSBHU1RfVEVMRVRFWFRERUMgKGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKSk7CisgIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAocGFyZW50KTsKIAogICBHU1RfREVCVUdfT0JKRUNUICh0ZWxldGV4dCwgImdvdCBldmVudCAlcyIsCiAgICAgICBnc3RfZXZlbnRfdHlwZV9nZXRfbmFtZSAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkpOwogCiAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX05FV1NFR01FTlQ6CisgICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKICAgICAgIC8qIG1heWJlIHNhdmUgYW5kL29yIHVwZGF0ZSB0aGUgY3VycmVudCBzZWdtZW50IChlLmcuIGZvciBvdXRwdXQKICAgICAgICAqIGNsaXBwaW5nKSBvciBjb252ZXJ0IHRoZSBldmVudCBpbnRvIG9uZSBpbiBhIGRpZmZlcmVudCBmb3JtYXQKICAgICAgICAqIChlLmcuIEJZVEVTIHRvIFRJTUUpIG9yIGRyb3AgaXQgYW5kIHNldCBhIGZsYWcgdG8gc2VuZCBhIG5ld3NlZ21lbnQKICAgICAgICAqIGV2ZW50IGluIGEgZGlmZmVyZW50IGZvcm1hdCBsYXRlciAqLwotICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2V2ZW50ICh0ZWxldGV4dC0+c3JjcGFkLCBldmVudCk7CisgICAgICBpZiAoTlVMTCA9PSB0ZWxldGV4dC0+ZXhwb3J0X2Z1bmMpIHsKKyAgICAgICAgLyogc2F2ZSB0aGUgc2VnbWVudCBldmVudCBhbmQgc2VuZCBpdCBhZnRlciBzZW5kaW5nIGNhcHMuIHJlcGxhY2UgdGhlCisgICAgICAgICAqIG9sZCBldmVudCBpZiBwcmVzZW50LiAqLworICAgICAgICBpZiAodGVsZXRleHQtPnNlZ21lbnQpIHsKKyAgICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKHRlbGV0ZXh0LT5zZWdtZW50KTsKKyAgICAgICAgfQorICAgICAgICB0ZWxldGV4dC0+c2VnbWVudCA9IGV2ZW50OworICAgICAgICByZXQgPSBUUlVFOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2V2ZW50ICh0ZWxldGV4dC0+c3JjcGFkLCBldmVudCk7CisgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9FVkVOVF9FT1M6CiAgICAgICAvKiBlbmQtb2Ytc3RyZWFtLCB3ZSBzaG91bGQgY2xvc2UgZG93biBhbGwgc3RyZWFtIGxlZnRvdmVycyBoZXJlICovCkBAIC00NDQsMTIgKzQzOCwzMSBAQAogICAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2V2ZW50ICh0ZWxldGV4dC0+c3JjcGFkLCBldmVudCk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgotICAgICAgcmV0ID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIGV2ZW50KTsKKyAgICAgIHJldCA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgZ3N0X29iamVjdF91bnJlZiAodGVsZXRleHQpOworICByZXR1cm4gcmV0OworfQogCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90ZWxldGV4dGRlY19zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQoreworICBnYm9vbGVhbiByZXQ7CisgIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAocGFyZW50KTsKKworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9SRUNPTkZJR1VSRToKKyAgICAgIC8qIHNldHRpbmcgZXhwb3J0X2Z1bmMgdG8gTlVMTCB3aWxsIGNhdXNlIHRoZSBlbGVtZW50IHRvIHJlbmVnb3RpYXRlIGNhcHMKKyAgICAgICAqIGJlZm9yZSBwdXNoaW5nIGEgYnVmZmVyLiAqLworICAgICAgdGVsZXRleHQtPmV4cG9ydF9mdW5jID0gTlVMTDsKKyAgICAgIHJldCA9IFRSVUU7CisgICAgICBicmVhazsKKworICAgIGRlZmF1bHQ6CisgICAgICByZXQgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CisgICAgICBicmVhazsKKyAgfQogICByZXR1cm4gcmV0OwogfQogCkBAIC00ODQsMTA5ICs0OTcsMTMgQEAKICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfdGVsZXRleHRkZWNfc2lua19zZXRjYXBzIChHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKQotewotICBHc3RUZWxldGV4dERlYyAqdGVsZXRleHQgPSBHU1RfVEVMRVRFWFRERUMgKGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKSk7Ci0gIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gIGNvbnN0IGdjaGFyICptaW1ldHlwZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHN0cnVjdHVyZSk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICIlczolcywgY2Fwcz0lIiBHU1RfUFRSX0ZPUk1BVCwKLSAgICAgIEdTVF9ERUJVR19QQURfTkFNRSAocGFkKSwgY2Fwcyk7Ci0KLSAgaWYgKGdfc3RyY21wMCAobWltZXR5cGUsICJwcml2YXRlL3RlbGV0ZXh0IikgPT0gMCkgewotICAgIHRlbGV0ZXh0LT5wcm9jZXNzX2J1Zl9mdW5jID0gZ3N0X3RlbGV0ZXh0ZGVjX3Byb2Nlc3NfdGVseF9idWZmZXI7Ci0gICAgZ290byBhY2NlcHRfY2FwczsKLSAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKG1pbWV0eXBlLCAidmlkZW8vbXBlZyIpID09IDApIHsKLSAgICBnaW50IHZlcnNpb247Ci0gICAgZ2Jvb2xlYW4gaXNfc3lzdGVtc3RyZWFtOwotCi0gICAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHN0cnVjdHVyZSwgIm1wZWd2ZXJzaW9uIiwgJnZlcnNpb24pIHx8Ci0gICAgICAgICFnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzdHJ1Y3R1cmUsICJzeXN0ZW1zdHJlYW0iLAotICAgICAgICAgICAgJmlzX3N5c3RlbXN0cmVhbSkpCi0gICAgICBnb3RvIHJlZnVzZV9jYXBzOwotCi0gICAgaWYgKHZlcnNpb24gIT0gMiB8fCAhaXNfc3lzdGVtc3RyZWFtKQotICAgICAgZ290byByZWZ1c2VfY2FwczsKLQotICAgIHRlbGV0ZXh0LT5wcm9jZXNzX2J1Zl9mdW5jID0gZ3N0X3RlbGV0ZXh0ZGVjX3Byb2Nlc3NfcGVzX2J1ZmZlcjsKLSAgICB0ZWxldGV4dC0+ZGVtdXggPSB2YmlfZHZiX3Blc19kZW11eF9uZXcgKGdzdF90ZWxldGV4dGRlY19jb252ZXJ0LCB0ZWxldGV4dCk7Ci0gICAgZ290byBhY2NlcHRfY2FwczsKLSAgfSBlbHNlCi0gICAgZ290byByZWZ1c2VfY2FwczsKLQotYWNjZXB0X2NhcHM6Ci0gIHsKLSAgICBnc3Rfb2JqZWN0X3VucmVmICh0ZWxldGV4dCk7Ci0gICAgcmV0dXJuIGdzdF90ZWxldGV4dGRlY19wdXNoX3ByZXJvbGxfYnVmZmVyICh0ZWxldGV4dCk7Ci0gIH0KLQotcmVmdXNlX2NhcHM6Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUICh0ZWxldGV4dCwKLSAgICAgICAgInBhZCAlcyByZWZ1c2VkIHJlbmVnb3RpYXRpb24gdG8gJSIgR1NUX1BUUl9GT1JNQVQsCi0gICAgICAgIEdTVF9QQURfTkFNRSAocGFkKSwgY2Fwcyk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAodGVsZXRleHQpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF90ZWxldGV4dGRlY19zcmNfc2V0X2NhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dDsKLSAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBOVUxMOwotICBjb25zdCBnY2hhciAqbWltZXR5cGU7Ci0gIEdzdFBhZCAqcGVlcjsKLQotICB0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAoZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpKTsKLSAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJMaW5raW5nIHRlbGV0ZXh0IHNvdXJjZSBwYWQiKTsKLQotICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKGNhcHMpKSB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAodGVsZXRleHQsCi0gICAgICAgICJwYWQgJXMgcmVmdXNlZCByZW5lZ290aWF0aW9uIHRvICUiIEdTVF9QVFJfRk9STUFULAotICAgICAgICBHU1RfUEFEX05BTUUgKHBhZCksIGNhcHMpOwotICAgIGdvdG8gcmVmdXNlX2NhcHM7Ci0gIH0KLQotICBwZWVyID0gZ3N0X3BhZF9nZXRfcGVlciAocGFkKTsKLSAgaWYgKHBlZXIpIHsKLSAgICBnc3RfcGFkX3NldF9jYXBzIChwZWVyLCBjYXBzKTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChwZWVyKTsKLSAgfQotCi0gIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotICBtaW1ldHlwZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHN0cnVjdHVyZSk7Ci0KLSAgaWYgKGdfc3RyY21wMCAobWltZXR5cGUsICJ2aWRlby94LXJhdy1yZ2IiKSA9PSAwKSB7Ci0gICAgdGVsZXRleHQtPm91dHB1dF9mb3JtYXQgPSBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9SR0JBOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRlbGV0ZXh0LCAiU2VsZWN0ZWQgUkdCQSBvdXRwdXQgZm9ybWF0Iik7Ci0gIH0gZWxzZSBpZiAoZ19zdHJjbXAwIChtaW1ldHlwZSwgInRleHQvaHRtbCIpID09IDApIHsKLSAgICB0ZWxldGV4dC0+b3V0cHV0X2Zvcm1hdCA9IEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX0hUTUw7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJTZWxlY3RlZCBIVE1MIG91dHB1dCBmb3JtYXQiKTsKLSAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKG1pbWV0eXBlLCAidGV4dC9wbGFpbiIpID09IDApIHsKLSAgICB0ZWxldGV4dC0+b3V0cHV0X2Zvcm1hdCA9IEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1RFWFQ7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJTZWxlY3RlZCB0ZXh0IG91dHB1dCBmb3JtYXQiKTsKLSAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKG1pbWV0eXBlLCAidGV4dC94LXBhbmdvLW1hcmt1cCIpID09IDApIHsKLSAgICB0ZWxldGV4dC0+b3V0cHV0X2Zvcm1hdCA9IEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX1BBTkdPOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRlbGV0ZXh0LCAiU2VsZWN0ZWQgcGFuZ28gbWFya3VwIG91dHB1dCBmb3JtYXQiKTsKLSAgfSBlbHNlCi0gICAgZ290byByZWZ1c2VfY2FwczsKLQotICBnc3Rfb2JqZWN0X3VucmVmICh0ZWxldGV4dCk7Ci0gIHJldHVybiBUUlVFOwotCi0KLXJlZnVzZV9jYXBzOgotICB7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAodGVsZXRleHQpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotfQotCiBzdGF0aWMgdm9pZAogZ3N0X3RlbGV0ZXh0ZGVjX3Jlc2V0X2ZyYW1lIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0KQogeworICBpZiAodGVsZXRleHQtPmZyYW1lID09IE5VTEwpCisgICAgdGVsZXRleHQtPmZyYW1lID0gZ19uZXcwIChHc3RUZWxldGV4dEZyYW1lLCAxKTsKKyAgaWYgKHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2JlZ2luID09IE5VTEwpCisgICAgdGVsZXRleHQtPmZyYW1lLT5zbGljZWRfYmVnaW4gPSBnX25ldyAodmJpX3NsaWNlZCwgTUFYX1NMSUNFUyk7CiAgIHRlbGV0ZXh0LT5mcmFtZS0+Y3VycmVudF9zbGljZSA9IHRlbGV0ZXh0LT5mcmFtZS0+c2xpY2VkX2JlZ2luOwogICB0ZWxldGV4dC0+ZnJhbWUtPnNsaWNlZF9lbmQgPSB0ZWxldGV4dC0+ZnJhbWUtPnNsaWNlZF9iZWdpbiArIE1BWF9TTElDRVM7CiAgIHRlbGV0ZXh0LT5mcmFtZS0+bGFzdF9maWVsZCA9IDA7CkBAIC01OTUsMzIgKzUxMiwyMyBAQAogfQogCiBzdGF0aWMgdm9pZAotZ3N0X3RlbGV0ZXh0ZGVjX3Byb2Nlc3NfcGVzX2J1ZmZlciAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwgR3N0QnVmZmVyICogYnVmKQotewotICB2YmlfZHZiX2RlbXV4X2ZlZWQgKHRlbGV0ZXh0LT5kZW11eCwgR1NUX0JVRkZFUl9EQVRBIChidWYpLAotICAgICAgR1NUX0JVRkZFUl9TSVpFIChidWYpKTsKLSAgcmV0dXJuOwotfQotCi1zdGF0aWMgdm9pZAogZ3N0X3RlbGV0ZXh0ZGVjX3Byb2Nlc3NfdGVseF9idWZmZXIgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKLSAgZ3VpbnQ4ICpkYXRhID0gR1NUX0JVRkZFUl9EQVRBIChidWYpOwotICBjb25zdCBnaW50IHNpemUgPSBHU1RfQlVGRkVSX1NJWkUgKGJ1Zik7CisgIEdzdE1hcEluZm8gYnVmX21hcDsKICAgZ3VpbnQgb2Zmc2V0ID0gMDsKICAgZ2ludCByZXM7CisgIGdzdF9idWZmZXJfbWFwIChidWYsICZidWZfbWFwLCBHU1RfTUFQX1JFQUQpOwogCiAgIHRlbGV0ZXh0LT5pbl90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKICAgdGVsZXRleHQtPmluX2R1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKTsKIAotICBpZiAodGVsZXRleHQtPmZyYW1lID09IE5VTEwpIHsKKyAgaWYgKHRlbGV0ZXh0LT5mcmFtZSA9PSBOVUxMKQogICAgIGdzdF90ZWxldGV4dGRlY19yZXNldF9mcmFtZSAodGVsZXRleHQpOwotICB9CiAKLSAgd2hpbGUgKG9mZnNldCA8IHNpemUpIHsKKyAgd2hpbGUgKG9mZnNldCA8IGJ1Zl9tYXAuc2l6ZSkgewogICAgIHJlcyA9Ci0gICAgICAgIGdzdF90ZWxldGV4dGRlY19leHRyYWN0X2RhdGFfdW5pdHMgKHRlbGV0ZXh0LCB0ZWxldGV4dC0+ZnJhbWUsIGRhdGEsCi0gICAgICAgICZvZmZzZXQsIHNpemUpOworICAgICAgICBnc3RfdGVsZXRleHRkZWNfZXh0cmFjdF9kYXRhX3VuaXRzICh0ZWxldGV4dCwgdGVsZXRleHQtPmZyYW1lLAorICAgICAgICBidWZfbWFwLmRhdGEsICZvZmZzZXQsIGJ1Zl9tYXAuc2l6ZSk7CiAKICAgICBpZiAocmVzID09IFZCSV9ORVdfRlJBTUUpIHsKICAgICAgIC8qIFdlIGhhdmUgYSBuZXcgZnJhbWUsIGl0J3MgdGltZSB0byBmZWVkIHRoZSBkZWNvZGVyICovCkBAIC02NDYsMzIgKzU1NCwxNCBAQAogICAgICAgZ3N0X3RlbGV0ZXh0ZGVjX3Jlc2V0X2ZyYW1lICh0ZWxldGV4dCk7CiAgICAgfSBlbHNlIGlmIChyZXMgPT0gVkJJX0VSUk9SKSB7CiAgICAgICBnc3RfdGVsZXRleHRkZWNfcmVzZXRfZnJhbWUgKHRlbGV0ZXh0KTsKLSAgICAgIHJldHVybjsKKyAgICAgIGdvdG8gYmVhY2g7CiAgICAgfQogICB9CitiZWFjaDoKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmYnVmX21hcCk7CiAgIHJldHVybjsKIH0KIAotc3RhdGljIHZiaV9ib29sCi1nc3RfdGVsZXRleHRkZWNfY29udmVydCAodmJpX2R2Yl9kZW11eCAqIGR4LAotICAgIGdwb2ludGVyIHVzZXJfZGF0YSwgY29uc3QgdmJpX3NsaWNlZCAqIHNsaWNlZCwgZ3VpbnQgbl9saW5lcywgZ2ludDY0IHB0cykKLXsKLSAgZ2RvdWJsZSBzYW1wbGVfdGltZTsKLSAgdmJpX3NsaWNlZCAqczsKLQotICBHc3RUZWxldGV4dERlYyAqdGVsZXRleHQgPSBHU1RfVEVMRVRFWFRERUMgKHVzZXJfZGF0YSk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJDb252ZXJ0aW5nICV1IGxpbmVzIHRvIGRlY29kZSIsIG5fbGluZXMpOwotCi0gIHNhbXBsZV90aW1lID0gcHRzICogKDEgLyA5MDAwMC4wKTsKLQotICBzID0gZ19tZW1kdXAgKHNsaWNlZCwgbl9saW5lcyAqIHNpemVvZiAodmJpX3NsaWNlZCkpOwotICB2YmlfZGVjb2RlICh0ZWxldGV4dC0+ZGVjb2Rlciwgcywgbl9saW5lcywgc2FtcGxlX3RpbWUpOwotICBnX2ZyZWUgKHMpOwotCi0gIHJldHVybiBHU1RfRkxPV19PSzsKLX0KLQogc3RhdGljIHZvaWQKIGdzdF90ZWxldGV4dGRlY19ldmVudF9oYW5kbGVyICh2YmlfZXZlbnQgKiBldiwgdm9pZCAqdXNlcl9kYXRhKQogewpAQCAtNjk3LDkgKzU4Nyw5IEBACiAgICAgICBwaS0+cGdubyA9IHBnbm87CiAgICAgICBwaS0+c3Vibm8gPSBzdWJubzsKIAotICAgICAgZ19tdXRleF9sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgICAgICBnX211dGV4X2xvY2sgKCZ0ZWxldGV4dC0+cXVldWVfbG9jayk7CiAgICAgICBnX3F1ZXVlX3B1c2hfdGFpbCAodGVsZXRleHQtPnF1ZXVlLCBwaSk7Ci0gICAgICBnX211dGV4X3VubG9jayAodGVsZXRleHQtPnF1ZXVlX2xvY2spOworICAgICAgZ19tdXRleF91bmxvY2sgKCZ0ZWxldGV4dC0+cXVldWVfbG9jayk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFZCSV9FVkVOVF9DQVBUSU9OOgogICAgICAgLyogVE9ETzogSGFuZGxlIHN1YnRpdGxlcyBpbiBjYXB0aW9uIHRlbGV0ZXh0IHBhZ2VzICovCkBAIC03MTEsMjkgKzYwMSwxNDggQEAKICAgcmV0dXJuOwogfQogCitzdGF0aWMgdm9pZAorZ3N0X3RlbGV0ZXh0ZGVjX3RyeV9nZXRfYnVmZmVyX3Bvb2wgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsIEdzdENhcHMgKiBjYXBzLAorICAgIGdzc2l6ZSBzaXplKQoreworICBndWludCBwb29sX2J1ZnNpemUsIG1pbl9idWZzLCBtYXhfYnVmczsKKyAgR3N0U3RydWN0dXJlICpwb29sY2ZnOworICBHc3RCdWZmZXJQb29sICpuZXdfcG9vbDsKKyAgR3N0UXVlcnkgKmFsbG9jID0gZ3N0X3F1ZXJ5X25ld19hbGxvY2F0aW9uIChjYXBzLCBUUlVFKTsKKworICBpZiAodGVsZXRleHQtPmJ1Zl9wb29sKSB7CisgICAgLyogdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgb25seSBvbiBhIGNhcHMvc2l6ZSBjaGFuZ2UsIHNvIGl0J3MgcHJhY3RpY2FsbHkKKyAgICAgKiBpbXBvc3NpYmxlIHRoYXQgd2UnbGwgYmUgYWJsZSB0byByZXVzZSB0aGUgb2xkIHBvb2wuICovCisgICAgZ3N0X2J1ZmZlcl9wb29sX3NldF9hY3RpdmUgKHRlbGV0ZXh0LT5idWZfcG9vbCwgRkFMU0UpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHRlbGV0ZXh0LT5idWZfcG9vbCk7CisgIH0KKworICBpZiAoIWdzdF9wYWRfcGVlcl9xdWVyeSAodGVsZXRleHQtPnNyY3BhZCwgYWxsb2MpKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAodGVsZXRleHQsICJGYWlsZWQgdG8gcXVlcnkgcGVlciBwYWQgZm9yIGFsbG9jYXRpb24gIgorICAgICAgICAicGFyYW1ldGVycyIpOworICAgIHRlbGV0ZXh0LT5idWZfcG9vbCA9IE5VTEw7CisgICAgZ290byBiZWFjaDsKKyAgfQorCisgIGlmIChnc3RfcXVlcnlfZ2V0X25fYWxsb2NhdGlvbl9wb29scyAoYWxsb2MpID4gMCkgeworICAgIGdzdF9xdWVyeV9wYXJzZV9udGhfYWxsb2NhdGlvbl9wb29sIChhbGxvYywgMCwgJm5ld19wb29sLCAmcG9vbF9idWZzaXplLAorICAgICAgICAmbWluX2J1ZnMsICZtYXhfYnVmcyk7CisgIH0gZWxzZSB7CisgICAgbmV3X3Bvb2wgPSBnc3RfYnVmZmVyX3Bvb2xfbmV3ICgpOworICAgIG1heF9idWZzID0gMDsKKyAgICBtaW5fYnVmcyA9IDE7CisgIH0KKworICBwb29sY2ZnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWcgKG5ld19wb29sKTsKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfcGFyYW1zIChwb29sY2ZnLCBnc3RfY2Fwc19jb3B5IChjYXBzKSwgc2l6ZSwKKyAgICAgIG1pbl9idWZzLCBtYXhfYnVmcyk7CisgIGlmICghZ3N0X2J1ZmZlcl9wb29sX3NldF9jb25maWcgKG5ld19wb29sLCBwb29sY2ZnKSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRlbGV0ZXh0LCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSB0aGUgYnVmZmVyIHBvb2wiKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChuZXdfcG9vbCk7CisgICAgdGVsZXRleHQtPmJ1Zl9wb29sID0gTlVMTDsKKyAgICBnb3RvIGJlYWNoOworICB9CisgIGlmICghZ3N0X2J1ZmZlcl9wb29sX3NldF9hY3RpdmUgKG5ld19wb29sLCBUUlVFKSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRlbGV0ZXh0LCAiRmFpbGVkIHRvIG1ha2UgdGhlIGJ1ZmZlciBwb29sIGFjdGl2ZSIpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKG5ld19wb29sKTsKKyAgICB0ZWxldGV4dC0+YnVmX3Bvb2wgPSBOVUxMOworICAgIGdvdG8gYmVhY2g7CisgIH0KKworICB0ZWxldGV4dC0+YnVmX3Bvb2wgPSBuZXdfcG9vbDsKKworYmVhY2g6CisgIGdzdF9xdWVyeV91bnJlZiAoYWxsb2MpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90ZWxldGV4dGRlY19uZWdvdGlhdGVfY2FwcyAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwgZ3VpbnQgd2lkdGgsCisgICAgZ3VpbnQgaGVpZ2h0KQoreworICBndWludCBpLCBjYXBzX3NpemU7CisgIGdib29sZWFuIHJ2ID0gRkFMU0U7CisKKyAgLyogZ2V0IHRoZSBwZWVyJ3MgY2FwcyBmaWx0ZXJlZCBieSBvdXIgb3duIG9uZXMuICovCisgIEdzdENhcHMgKm91cmNhcHMgPSBnc3RfcGFkX3F1ZXJ5X2NhcHMgKHRlbGV0ZXh0LT5zcmNwYWQsIE5VTEwpOworICBHc3RDYXBzICpwZWVyY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzICh0ZWxldGV4dC0+c3JjcGFkLCBvdXJjYXBzKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKG91cmNhcHMpOworCisgIGlmIChnc3RfY2Fwc19pc19lbXB0eSAocGVlcmNhcHMpKSB7CisgICAgZ290byBiZWFjaDsKKyAgfQorCisgIC8qIG1ha2UgdGhlbSB3cml0YWJsZSBpbiBjYXNlIHdlIG5lZWQgdG8gZml4YXRlIHRoZW0gKHZpZGVvL3gtcmF3KS4gKi8KKyAgcGVlcmNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChwZWVyY2Fwcyk7CisgIGNhcHNfc2l6ZSA9IGdzdF9jYXBzX2dldF9zaXplIChwZWVyY2Fwcyk7CisKKyAgZm9yIChpID0gMDsgaSA8IGNhcHNfc2l6ZTsgaSsrKSB7CisgICAgR3N0U3RydWN0dXJlICpjYXBzX3N0cnVjdCA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHBlZXJjYXBzLCBpKTsKKyAgICBjb25zdCBnY2hhciAqY2Fwc19uYW1lID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoY2Fwc19zdHJ1Y3QpOworICAgIGNvbnN0IGdjaGFyICpjYXBzX2ZtdCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoY2Fwc19zdHJ1Y3QsICJmb3JtYXQiKTsKKworICAgIGlmIChnX3N0cmNtcDAgKGNhcHNfbmFtZSwgInZpZGVvL3gtcmF3IikgPT0gMCkgeworICAgICAgdGVsZXRleHQtPndpZHRoID0gd2lkdGg7CisgICAgICB0ZWxldGV4dC0+aGVpZ2h0ID0gaGVpZ2h0OworICAgICAgdGVsZXRleHQtPmV4cG9ydF9mdW5jID0gZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF9yZ2JhX3BhZ2U7CisgICAgICBnc3Rfc3RydWN0dXJlX3NldCAoY2Fwc19zdHJ1Y3QsCisgICAgICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgd2lkdGgsCisgICAgICAgICAgImhlaWdodCIsIEdfVFlQRV9JTlQsIGhlaWdodCwKKyAgICAgICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sIDAsIDEsIE5VTEwpOworICAgICAgYnJlYWs7CisgICAgfSBlbHNlIGlmICgoZ19zdHJjbXAwIChjYXBzX25hbWUsICJ0ZXh0L3gtcmF3IikgPT0gMCkgJiYKKyAgICAgICAgKGdfc3RyY21wMCAoY2Fwc19mbXQsICJ1dGYtOCIpID09IDApKSB7CisgICAgICB0ZWxldGV4dC0+ZXhwb3J0X2Z1bmMgPSBnc3RfdGVsZXRleHRkZWNfZXhwb3J0X3RleHRfcGFnZTsKKyAgICAgIGJyZWFrOworICAgIH0gZWxzZSBpZiAoKGdfc3RyY21wMCAoY2Fwc19uYW1lLCAidGV4dC94LXJhdyIpID09IDApICYmCisgICAgICAgIChnX3N0cmNtcDAgKGNhcHNfZm10LCAicGFuZ28tbWFya3VwIikgPT0gMCkpIHsKKyAgICAgIHRlbGV0ZXh0LT5leHBvcnRfZnVuYyA9IGdzdF90ZWxldGV4dGRlY19leHBvcnRfcGFuZ29fcGFnZTsKKyAgICAgIGJyZWFrOworICAgIH0gZWxzZSB7CisgICAgICBnb3RvIGJlYWNoOworICAgIH0KKyAgfQorCisgIGlmICghZ3N0X3BhZF9wdXNoX2V2ZW50ICh0ZWxldGV4dC0+c3JjcGFkLCBnc3RfZXZlbnRfbmV3X2NhcHMgKHBlZXJjYXBzKSkpIHsKKyAgICBnb3RvIGJlYWNoOworICB9CisKKyAgLyogdHJ5IHRvIGdldCBhIGJ1ZmZlcnBvb2wgZnJvbSB0aGUgcGVlciBwYWQgaW4gY2FzZSBvZiBSR0JBIG91dHB1dC4gKi8KKyAgaWYgKGdzdF90ZWxldGV4dGRlY19leHBvcnRfcmdiYV9wYWdlID09IHRlbGV0ZXh0LT5leHBvcnRfZnVuYykgeworICAgIGdzdF90ZWxldGV4dGRlY190cnlfZ2V0X2J1ZmZlcl9wb29sICh0ZWxldGV4dCwgcGVlcmNhcHMsCisgICAgICAgIHdpZHRoICogaGVpZ2h0ICogc2l6ZW9mICh2YmlfcmdiYSkpOworICB9CisKKyAgLyogd2UgY2FuIGhhcHBpbHkgcmV0dXJuIGEgc3VjY2VzcyBub3cuICovCisgIHJ2ID0gVFJVRTsKKworYmVhY2g6CisgIGdzdF9jYXBzX3VucmVmIChwZWVyY2Fwcyk7CisgIHJldHVybiBydjsKK30KKwogLyogdGhpcyBmdW5jdGlvbiBkb2VzIHRoZSBhY3R1YWwgcHJvY2Vzc2luZwogICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X3RlbGV0ZXh0ZGVjX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdEJ1ZmZlciAqIGJ1ZikKK2dzdF90ZWxldGV4dGRlY19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKLSAgR3N0VGVsZXRleHREZWMgKnRlbGV0ZXh0ID0gR1NUX1RFTEVURVhUREVDIChHU1RfUEFEX1BBUkVOVCAocGFkKSk7CisgIEdzdFRlbGV0ZXh0RGVjICp0ZWxldGV4dCA9IEdTVF9URUxFVEVYVERFQyAocGFyZW50KTsKICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKIAogICB0ZWxldGV4dC0+aW5fdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1Zik7CiAgIHRlbGV0ZXh0LT5pbl9kdXJhdGlvbiA9IEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1Zik7CiAKLSAgdGVsZXRleHQtPnByb2Nlc3NfYnVmX2Z1bmMgKHRlbGV0ZXh0LCBidWYpOworICBnc3RfdGVsZXRleHRkZWNfcHJvY2Vzc190ZWx4X2J1ZmZlciAodGVsZXRleHQsIGJ1Zik7CiAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAKLSAgZ19tdXRleF9sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgIGdfbXV0ZXhfbG9jayAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKICAgaWYgKCFnX3F1ZXVlX2lzX2VtcHR5ICh0ZWxldGV4dC0+cXVldWUpKSB7CiAgICAgcmV0ID0gZ3N0X3RlbGV0ZXh0ZGVjX3B1c2hfcGFnZSAodGVsZXRleHQpOwogICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgICAgICBnX211dGV4X3VubG9jayAoJnRlbGV0ZXh0LT5xdWV1ZV9sb2NrKTsKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICB9Ci0gIGdfbXV0ZXhfdW5sb2NrICh0ZWxldGV4dC0+cXVldWVfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmdGVsZXRleHQtPnF1ZXVlX2xvY2spOwogCiAgIHJldHVybiByZXQ7CiAKQEAgLTc2MCw5ICs3NjksOSBAQAogICBwYWdlX2luZm8gKnBpOwogICBnaW50IHBnbm8sIHN1Ym5vOwogICBnYm9vbGVhbiBzdWNjZXNzOworICBndWludCB3aWR0aCwgaGVpZ2h0OwogCi0gIHBpID0gKHBhZ2VfaW5mbyAqKSBnX3F1ZXVlX3BvcF9oZWFkICh0ZWxldGV4dC0+cXVldWUpOwotCisgIHBpID0gZ19xdWV1ZV9wb3BfaGVhZCAodGVsZXRleHQtPnF1ZXVlKTsKICAgcGdubyA9IHZiaV9iY2QyZGVjIChwaS0+cGdubyk7CiAgIHN1Ym5vID0gdmJpX2JjZDJkZWMgKHBpLT5zdWJubyk7CiAKQEAgLTc3MCwzNyArNzc5LDM3IEBACiAKICAgc3VjY2VzcyA9IHZiaV9mZXRjaF92dF9wYWdlICh0ZWxldGV4dC0+ZGVjb2RlciwgJnBhZ2UsIHBpLT5wZ25vLCBwaS0+c3Vibm8sCiAgICAgICBWQklfV1NUX0xFVkVMXzNwNSwgMjUsIEZBTFNFKTsKKyAgZ19mcmVlIChwaSk7CiAgIGlmIChHX1VOTElLRUxZICghc3VjY2VzcykpCiAgICAgZ290byBmZXRjaF9wYWdlX2ZhaWxlZDsKIAotICBzd2l0Y2ggKHRlbGV0ZXh0LT5vdXRwdXRfZm9ybWF0KSB7Ci0gICAgY2FzZSBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9URVhUOgotICAgICAgcmV0ID0gZ3N0X3RlbGV0ZXh0ZGVjX2V4cG9ydF90ZXh0X3BhZ2UgKHRlbGV0ZXh0LCAmcGFnZSwgJmJ1Zik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9URUxFVEVYVERFQ19PVVRQVVRfRk9STUFUX0hUTUw6Ci0gICAgICByZXQgPSBnc3RfdGVsZXRleHRkZWNfZXhwb3J0X2h0bWxfcGFnZSAodGVsZXRleHQsICZwYWdlLCAmYnVmKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1RFTEVURVhUREVDX09VVFBVVF9GT1JNQVRfUkdCQToKLSAgICAgIHJldCA9IGdzdF90ZWxldGV4dGRlY19leHBvcnRfcmdiYV9wYWdlICh0ZWxldGV4dCwgJnBhZ2UsICZidWYpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9QQU5HTzoKLSAgICAgIHJldCA9IGdzdF90ZWxldGV4dGRlY19leHBvcnRfcGFuZ29fcGFnZSAodGVsZXRleHQsICZwYWdlLCAmYnVmKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLSAgICAgIGJyZWFrOwotICB9Ci0gIHZiaV91bnJlZl9wYWdlICgmcGFnZSk7Ci0gIGdfZnJlZSAocGkpOworICB3aWR0aCA9IENPTFVNTlNfVE9fV0lEVEggKHBhZ2UuY29sdW1ucyk7CisgIGhlaWdodCA9IFJPV1NfVE9fSEVJR0hUIChwYWdlLnJvd3MpOwogCi0gIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spCi0gICAgZ290byBhbGxvY19mYWlsZWQ7CisgIC8qIGlmIG91dHB1dF9mdW5jIGlzIE5VTEwsIHdlIG5lZWQgdG8gKHJlLSluZWdvdGlhdGUuIGFsc28sIGl0IGlzIHBvc3NpYmxlCisgICAqICh0aG91Z2ggdW5saWtlbHkpIHRoYXQgd2UgcmVjZWl2ZWQgYSBwYWdlIG9mIGEgZGlmZmVyZW50IHNpemUuICovCisgIGlmIChHX1VOTElLRUxZIChOVUxMID09IHRlbGV0ZXh0LT5leHBvcnRfZnVuYyB8fAorICAgICAgICAgIHRlbGV0ZXh0LT53aWR0aCAhPSB3aWR0aCB8fCB0ZWxldGV4dC0+aGVpZ2h0ICE9IGhlaWdodCkpIHsKKyAgICAvKiBpZiBuZWdvdGlhdGVfY2FwcyByZXR1cm5zIEZBTFNFLCB0aGF0IG1lYW5zIHdlIHdlcmVuJ3QgYWJsZSB0bworICAgICAqIG5lZ290aWF0ZS4gKi8KKyAgICBpZiAoR19VTkxJS0VMWSAoIWdzdF90ZWxldGV4dGRlY19uZWdvdGlhdGVfY2FwcyAodGVsZXRleHQsIHdpZHRoLCBoZWlnaHQpKSkgeworICAgICAgcmV0ID0gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7CisgICAgICBnb3RvIHB1c2hfZmFpbGVkOworICAgIH0KKyAgICBpZiAoR19VTkxJS0VMWSAodGVsZXRleHQtPnNlZ21lbnQpKSB7CisgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHRlbGV0ZXh0LT5zcmNwYWQsIHRlbGV0ZXh0LT5zZWdtZW50KTsKKyAgICAgIHRlbGV0ZXh0LT5zZWdtZW50ID0gTlVMTDsKKyAgICB9CisgIH0KKworICB0ZWxldGV4dC0+ZXhwb3J0X2Z1bmMgKHRlbGV0ZXh0LCAmcGFnZSwgJmJ1Zik7CisgIHZiaV91bnJlZl9wYWdlICgmcGFnZSk7CiAKICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPSB0ZWxldGV4dC0+aW5fdGltZXN0YW1wOwogICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpID0gdGVsZXRleHQtPmluX2R1cmF0aW9uOwogCi0gIEdTVF9JTkZPX09CSkVDVCAodGVsZXRleHQsICJQdXNoaW5nIGJ1ZmZlciBvZiBzaXplICVkIiwKLSAgICAgIEdTVF9CVUZGRVJfU0laRSAoYnVmKSk7CisgIEdTVF9JTkZPX09CSkVDVCAodGVsZXRleHQsICJQdXNoaW5nIGJ1ZmZlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFULAorICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKSk7CiAKICAgcmV0ID0gZ3N0X3BhZF9wdXNoICh0ZWxldGV4dC0+c3JjcGFkLCBidWYpOwogICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKQpAQCAtODE0LDEzICs4MjMsNiBAQAogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQogCi1hbGxvY19mYWlsZWQ6Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUICh0ZWxldGV4dCwgIkVycm9yIGFsbG9jYXRpbmcgb3V0cHV0IGJ1ZmZlciwgcmVhc29uICVzIiwKLSAgICAgICAgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOwotICAgIHJldHVybiByZXQ7Ci0gIH0KLQogcHVzaF9mYWlsZWQ6CiAgIHsKICAgICBHU1RfRVJST1JfT0JKRUNUICh0ZWxldGV4dCwgIlB1c2hpbmcgYnVmZmVyIGZhaWxlZCwgcmVhc29uICVzIiwKQEAgLTgzMCwxNyArODMyLDE3IEBACiB9CiAKIHN0YXRpYyBnY2hhciAqKgotZ3N0X3RlbGV0ZXh0ZGVjX3ZiaV9wYWdlX3RvX3RleHRfbGluZXMgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsCi0gICAgZ3VpbnQgc3RhcnQsIGd1aW50IHN0b3AsIHZiaV9wYWdlICogcGFnZSkKK2dzdF90ZWxldGV4dGRlY192YmlfcGFnZV90b190ZXh0X2xpbmVzIChndWludCBzdGFydCwgZ3VpbnQgc3RvcCwgdmJpX3BhZ2UgKgorICAgIHBhZ2UpCiB7CiAgIGNvbnN0IGd1aW50IGxpbmVzX2NvdW50ID0gc3RvcCAtIHN0YXJ0ICsgMTsKICAgY29uc3QgZ3VpbnQgbGluZV9sZW5ndGggPSBwYWdlLT5jb2x1bW5zOwogICBnY2hhciAqKmxpbmVzOwotICBnaW50IGk7CisgIGd1aW50IGk7CiAKICAgLyogYWxsb2NhdGUgYSBuZXcgTlVMTC10ZXJtaW5hdGVkIGFycmF5IG9mIHN0cmluZ3MgKi8KICAgbGluZXMgPSAoZ2NoYXIgKiopIGdfbWFsbG9jIChzaXplb2YgKGdjaGFyICopICogKGxpbmVzX2NvdW50ICsgMSkpOwotICBsaW5lc1tsaW5lc19jb3VudF0gPSBnX3N0cmR1cCAoJ1wwJyk7CisgIGxpbmVzW2xpbmVzX2NvdW50XSA9IE5VTEw7CiAKICAgLyogZXhwb3J0IGVhY2ggbGluZSBpbiB0aGUgcmFuZ2Ugb2YgdGhlIHRlbGV0ZXh0IHBhZ2UgaW4gdGV4dCBmb3JtYXQgKi8KICAgZm9yIChpID0gc3RhcnQ7IGkgPD0gc3RvcDsgaSsrKSB7CkBAIC04NTgsOCArODYwLDYgQEAKIGdzdF90ZWxldGV4dGRlY19leHBvcnRfdGV4dF9wYWdlIChHc3RUZWxldGV4dERlYyAqIHRlbGV0ZXh0LCB2YmlfcGFnZSAqIHBhZ2UsCiAgICAgR3N0QnVmZmVyICoqIGJ1ZikKIHsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgR3N0Rmxvd1JldHVybiByZXQ7CiAgIGdjaGFyICp0ZXh0OwogICBndWludCBzaXplOwogCkBAIC04NjgsNyArODY4LDcgQEAKICAgICBHU3RyaW5nICpzdWJzOwogICAgIGd1aW50IGk7CiAKLSAgICBsaW5lcyA9IGdzdF90ZWxldGV4dGRlY192YmlfcGFnZV90b190ZXh0X2xpbmVzICh0ZWxldGV4dCwgMSwgMjMsIHBhZ2UpOworICAgIGxpbmVzID0gZ3N0X3RlbGV0ZXh0ZGVjX3ZiaV9wYWdlX3RvX3RleHRfbGluZXMgKDEsIDIzLCBwYWdlKTsKICAgICBzdWJzID0gZ19zdHJpbmdfbmV3ICgiIik7CiAgICAgLyogU3RyaXAgd2hpdGUgc3BhY2VzIGFuZCBzcXVhc2ggYmxhbmsgbGluZXMgKi8KICAgICBmb3IgKGkgPSAwOyBpIDwgMjM7IGkrKykgewpAQCAtODkyLDUyICs4OTIsOSBAQAogICB9CiAKICAgLyogQWxsb2NhdGUgbmV3IGJ1ZmZlciAqLwotICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInRleHQvcGxhaW4iLCBOVUxMKTsKLSAgcmV0ID0gZ3N0X3BhZF9hbGxvY19idWZmZXIgKHRlbGV0ZXh0LT5zcmNwYWQsIEdTVF9CVUZGRVJfT0ZGU0VUX05PTkUsCi0gICAgICBzaXplLCBjYXBzLCAmKCpidWYpKTsKLSAgaWYgKEdfTElLRUxZIChyZXQgPT0gR1NUX0ZMT1dfT0spKQotICAgIEdTVF9CVUZGRVJfREFUQSAoKmJ1ZikgPSBHU1RfQlVGRkVSX01BTExPQ0RBVEEgKCpidWYpID0gKGd1aW50OCAqKSB0ZXh0OwotICBlbHNlCi0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoKmJ1Zik7CisgICpidWYgPSBnc3RfYnVmZmVyX25ld193cmFwcGVkICh0ZXh0LCBzaXplKTsKIAotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfdGVsZXRleHRkZWNfZXhwb3J0X2h0bWxfcGFnZSAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCwgdmJpX3BhZ2UgKiBwYWdlLAotICAgIEdzdEJ1ZmZlciAqKiBidWYpCi17Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIEdzdEZsb3dSZXR1cm4gcmV0OwotICBnY2hhciAqaHRtbDsKLSAgZ3NzaXplIHNpemU7Ci0gIHZiaV9leHBvcnQgKmV4OwotICBnY2hhciAqZXJyOwotCi0gIGlmICghKGV4ID0gdmJpX2V4cG9ydF9uZXcgKCJodG1sIiwgJmVycikpKSB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHRlbGV0ZXh0LCBMSUJSQVJZLCBTRVRUSU5HUywKLSAgICAgICAgKCJDYW4ndCBvcGVuIHRoZSBIVE1MIGV4cG9ydCBtb2R1bGU6ICVzIiwgZXJyKSwgKE5VTEwpKTsKLSAgICBnX2ZyZWUgKGVycik7Ci0gICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotICB9Ci0KLSAgLyogZXhwb3J0IHRvIE5VTEwgdG8gZ2V0IHNpemUgb2YgdGhlIG1lbW9yeSBuZWVkZWQgdG8gYWxsb2NhdGUgdGhlIHBhZ2UgKi8KLSAgc2l6ZSA9IHZiaV9leHBvcnRfbWVtIChleCwgTlVMTCwgMCwgcGFnZSk7Ci0gIGlmIChzaXplIDwgMCkKLSAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7Ci0gIGh0bWwgPSBnX21hbGxvYyAoc2l6ZSk7Ci0gIHZiaV9leHBvcnRfbWVtIChleCwgaHRtbCwgc2l6ZSwgcGFnZSk7Ci0KLSAgLyogQWxsb2NhdGUgbmV3IGJ1ZmZlciAqLwotICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInRleHQvaHRtbCIsIE5VTEwpOwotICByZXQgPSBnc3RfcGFkX2FsbG9jX2J1ZmZlciAodGVsZXRleHQtPnNyY3BhZCwgR1NUX0JVRkZFUl9PRkZTRVRfTk9ORSwKLSAgICAgIHNpemUsIGNhcHMsICYoKmJ1ZikpOwotICBpZiAoR19MSUtFTFkgKHJldCA9PSBHU1RfRkxPV19PSykpCi0gICAgR1NUX0JVRkZFUl9EQVRBICgqYnVmKSA9IEdTVF9CVUZGRVJfTUFMTE9DREFUQSAoKmJ1ZikgPSAoZ3VpbnQ4ICopIGh0bWw7Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICByZXR1cm4gcmV0OworICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCkBAIC05NDUsNDAgKzkwMiwzNCBAQAogICAgIEdzdEJ1ZmZlciAqKiBidWYpCiB7CiAgIGd1aW50IHNpemU7Ci0gIEdzdENhcHMgKmNhcHMsICpvdXRfY2FwczsKLSAgR3N0Rmxvd1JldHVybiByZXQ7Ci0gIGdpbnQgd2lkdGgsIGhlaWdodDsKLSAgR3N0UGFkVGVtcGxhdGUgKnRlbXBsOworICBHc3RCdWZmZXIgKmxidWY7CisgIEdzdE1hcEluZm8gYnVmX21hcDsKIAotICAvKiBvbmUgY2hhcmFjdGVyIG9jY3VwaWVzIDEyIHggMTAgcGl4ZWxzICovCi0gIHdpZHRoID0gcGFnZS0+Y29sdW1ucyAqIDEyOwotICBoZWlnaHQgPSBwYWdlLT5yb3dzICogMTA7CisgIHNpemUgPSB0ZWxldGV4dC0+d2lkdGggKiB0ZWxldGV4dC0+aGVpZ2h0ICogc2l6ZW9mICh2YmlfcmdiYSk7CiAKLSAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LXJhdy1yZ2IiLAotICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgd2lkdGgsCi0gICAgICAiaGVpZ2h0IiwgR19UWVBFX0lOVCwgaGVpZ2h0LAotICAgICAgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OLCB0ZWxldGV4dC0+cmF0ZV9udW1lcmF0b3IsCi0gICAgICB0ZWxldGV4dC0+cmF0ZV9kZW5vbWluYXRvciwgTlVMTCk7Ci0KLSAgdGVtcGwgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfdGVtcGxhdGUpOwotICBvdXRfY2FwcyA9IGdzdF9jYXBzX2ludGVyc2VjdCAoY2FwcywgZ3N0X3BhZF90ZW1wbGF0ZV9nZXRfY2FwcyAodGVtcGwpKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICBnc3Rfb2JqZWN0X3VucmVmICh0ZW1wbCk7Ci0KLSAgc2l6ZSA9IChndWludCkgd2lkdGggKihndWludCkgaGVpZ2h0ICpzaXplb2YgKHZiaV9yZ2JhKTsKLQotICByZXQgPSBnc3RfcGFkX2FsbG9jX2J1ZmZlcl9hbmRfc2V0X2NhcHMgKHRlbGV0ZXh0LT5zcmNwYWQsCi0gICAgICBHU1RfQlVGRkVSX09GRlNFVF9OT05FLCBzaXplLCBvdXRfY2FwcywgJigqYnVmKSk7Ci0KLSAgaWYgKHJldCA9PSBHU1RfRkxPV19PSykgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRlbGV0ZXh0LCAiQ3JlYXRpbmcgaW1hZ2Ugd2l0aCAlZCByb3dzIGFuZCAlZCBjb2xzIiwKLSAgICAgICAgcGFnZS0+cm93cywgcGFnZS0+Y29sdW1ucyk7Ci0gICAgdmJpX2RyYXdfdnRfcGFnZSAocGFnZSwgVkJJX1BJWEZNVF9SR0JBMzJfTEUsCi0gICAgICAgICh2YmlfcmdiYSAqKSBHU1RfQlVGRkVSX0RBVEEgKCpidWYpLCBGQUxTRSwgVFJVRSk7CisgIC8qIEFsbG9jYXRlIG5ldyBidWZmZXIsIHVzaW5nIHRoZSBuZWdvdGlhdGVkIHBvb2wgaWYgYXZhaWxhYmxlLiAqLworICBpZiAodGVsZXRleHQtPmJ1Zl9wb29sKSB7CisgICAgR3N0Rmxvd1JldHVybiBhY3F1aXJlX3J2ID0KKyAgICAgICAgZ3N0X2J1ZmZlcl9wb29sX2FjcXVpcmVfYnVmZmVyICh0ZWxldGV4dC0+YnVmX3Bvb2wsICZsYnVmLCBOVUxMKTsKKyAgICBpZiAoYWNxdWlyZV9ydiAhPSBHU1RfRkxPV19PSykgeworICAgICAgcmV0dXJuIGFjcXVpcmVfcnY7CisgICAgfQorICB9IGVsc2UgeworICAgIGxidWYgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZSAoTlVMTCwgc2l6ZSwgTlVMTCk7CisgICAgaWYgKE5VTEwgPT0gbGJ1ZikKKyAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQogCi0gIGdzdF9jYXBzX3VucmVmIChvdXRfY2Fwcyk7Ci0gIHJldHVybiByZXQ7CisgIGlmICghZ3N0X2J1ZmZlcl9tYXAgKGxidWYsICZidWZfbWFwLCBHU1RfTUFQX1dSSVRFKSkgeworICAgIGdzdF9idWZmZXJfdW5yZWYgKGxidWYpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorCisgIHZiaV9kcmF3X3Z0X3BhZ2UgKHBhZ2UsIFZCSV9QSVhGTVRfUkdCQTMyX0xFLCBidWZfbWFwLmRhdGEsIEZBTFNFLCBUUlVFKTsKKyAgZ3N0X2J1ZmZlcl91bm1hcCAobGJ1ZiwgJmJ1Zl9tYXApOworICAqYnVmID0gbGJ1ZjsKKworICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCkBAIC05OTAsMTMgKzk0MSwxMSBAQAogICBnY2hhciAqKmNvbG9yczsKICAgZ2NoYXIgKipsaW5lczsKICAgR1N0cmluZyAqc3ViczsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgR3N0Rmxvd1JldHVybiByZXQ7Ci0gIGd1aW50IHN0YXJ0LCBzdG9wOwotICBndWludCBpLCBqOworICBndWludCBzdGFydCwgc3RvcCwgazsKKyAgZ2ludCBpLCBqOwogCiAgIGNvbG9ycyA9IChnY2hhciAqKikgZ19tYWxsb2MgKHNpemVvZiAoZ2NoYXIgKikgKiAocm93cyArIDEpKTsKLSAgY29sb3JzW3Jvd3NdID0gZ19zdHJkdXAgKCdcMCcpOworICBjb2xvcnNbcm93c10gPSBOVUxMOwogCiAgIC8qIHBhcnNlIGFsbCB0aGUgbGluZXMgYW5kIGFwcHJveGltYXRlIGl0J3MgZm9yZWdyb3VuZCBjb2xvciB1c2luZyB0aGUgZmlyc3QKICAgICogbm9uIG51bGwgY2hhcmFjdGVyICovCkBAIC0xMDEzLDc3ICs5NjIsMjQgQEAKICAgLyogZ2V0IGFuIGFycmF5IG9mIHN0cmluZ3Mgd2l0aCBlYWNoIGxpbmUgb2YgdGhlIHRlbGV4dCBwYWdlICovCiAgIHN0YXJ0ID0gdGVsZXRleHQtPnN1YnRpdGxlc19tb2RlID8gMSA6IDA7CiAgIHN0b3AgPSB0ZWxldGV4dC0+c3VidGl0bGVzX21vZGUgPyByb3dzIC0gMiA6IHJvd3MgLSAxOwotICBsaW5lcyA9IGdzdF90ZWxldGV4dGRlY192YmlfcGFnZV90b190ZXh0X2xpbmVzICh0ZWxldGV4dCwgc3RhcnQsIHN0b3AsIHBhZ2UpOworICBsaW5lcyA9IGdzdF90ZWxldGV4dGRlY192YmlfcGFnZV90b190ZXh0X2xpbmVzIChzdGFydCwgc3RvcCwgcGFnZSk7CiAKICAgLyogZm9ybWF0IGVhY2ggbGluZSBpbiBwYW5nbyBtYXJrdXAgKi8KICAgc3VicyA9IGdfc3RyaW5nX25ldyAoIiIpOwotICBmb3IgKGkgPSBzdGFydDsgaSA8PSBzdG9wOyBpKyspIHsKKyAgZm9yIChrID0gc3RhcnQ7IGsgPD0gc3RvcDsgaysrKSB7CiAgICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoc3VicywgUEFOR09fVEVNUExBVEUsCi0gICAgICAgIHRlbGV0ZXh0LT5mb250X2Rlc2NyaXB0aW9uLCBjb2xvcnNbaV0sIGxpbmVzW2kgLSBzdGFydF0pOworICAgICAgICB0ZWxldGV4dC0+Zm9udF9kZXNjcmlwdGlvbiwgY29sb3JzW2tdLCBsaW5lc1trIC0gc3RhcnRdKTsKICAgfQogCiAgIC8qIEFsbG9jYXRlIG5ldyBidWZmZXIgKi8KLSAgY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ0ZXh0L3gtcGFuZ28tbWFya3VwIiwgTlVMTCk7Ci0gIHJldCA9IGdzdF9wYWRfYWxsb2NfYnVmZmVyICh0ZWxldGV4dC0+c3JjcGFkLCBHU1RfQlVGRkVSX09GRlNFVF9OT05FLAotICAgICAgc3Vicy0+bGVuICsgMSwgY2FwcywgJigqYnVmKSk7Ci0gIGlmIChHX0xJS0VMWSAocmV0ID09IEdTVF9GTE9XX09LKSkKLSAgICBHU1RfQlVGRkVSX0RBVEEgKCpidWYpID0gR1NUX0JVRkZFUl9NQUxMT0NEQVRBICgqYnVmKSA9Ci0gICAgICAgIChndWludDggKikgc3Vicy0+c3RyOwotICBlbHNlCi0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoKmJ1Zik7CisgICpidWYgPSBnc3RfYnVmZmVyX25ld193cmFwcGVkIChzdWJzLT5zdHIsIHN1YnMtPmxlbiArIDEpOwogCiAgIGdfc3RyZnJlZXYgKGxpbmVzKTsKICAgZ19zdHJmcmVldiAoY29sb3JzKTsKICAgZ19zdHJpbmdfZnJlZSAoc3VicywgRkFMU0UpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gIHJldHVybiByZXQ7CisgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfdGVsZXRleHRkZWNfcHVzaF9wcmVyb2xsX2J1ZmZlciAoR3N0VGVsZXRleHREZWMgKiB0ZWxldGV4dCkKLXsKLSAgR3N0Rmxvd1JldHVybiByZXQ7Ci0gIEdzdEJ1ZmZlciAqYnVmOwotICBnYm9vbGVhbiByZXMgPSBUUlVFOwotICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKLSAgY29uc3QgZ2NoYXIgKm1pbWV0eXBlOwotICBHc3RDYXBzICpvdXRfY2FwcywgKnBlZXJfY2FwcywgKnBhZF9jYXBzOwotCi0gIC8qIHRoZSBzdHJlYW0gaXMgc3BhcnNlLCB3ZSBzZW5kIGEgZHVtbXkgYnVmZmVyIGZvciBwcmVyb2xsICovCi0gIHBlZXJfY2FwcyA9IGdzdF9wYWRfcGVlcl9nZXRfY2FwcyAodGVsZXRleHQtPnNyY3BhZCk7Ci0gIHBhZF9jYXBzID0gZ3N0X3BhZF9nZXRfY2FwcyAodGVsZXRleHQtPnNyY3BhZCk7Ci0gIG91dF9jYXBzID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChwYWRfY2FwcywgcGVlcl9jYXBzKTsKLQotICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKG91dF9jYXBzKSkgewotICAgIHJlcyA9IEZBTFNFOwotICAgIGdvdG8gYmVhY2g7Ci0gIH0KLQotICBnc3RfY2Fwc190cnVuY2F0ZSAob3V0X2NhcHMpOwotICBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChvdXRfY2FwcywgMCk7Ci0gIG1pbWV0eXBlID0gZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RydWN0dXJlKTsKLSAgaWYgKGdfc3RyY21wMCAobWltZXR5cGUsICJ2aWRlby94LXJhdy1yZ2IiKSA9PSAwKSB7Ci0gICAgLyogb21pdCBwcmVyb2xsIGJ1ZmZlciBmb3IgdGhpcyBmb3JtYXQgKi8KLSAgICBnb3RvIGJlYWNoOwotICB9Ci0KLSAgYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jICgxKTsKLSAgR1NUX0JVRkZFUl9EQVRBIChidWYpWzBdID0gMDsKLSAgZ3N0X2J1ZmZlcl9zZXRfY2FwcyAoYnVmLCBvdXRfY2Fwcyk7Ci0gIHJldCA9IGdzdF9wYWRfcHVzaCAodGVsZXRleHQtPnNyY3BhZCwgYnVmKTsKLSAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKLSAgICByZXMgPSBGQUxTRTsKLQotYmVhY2g6Ci0gIHsKLSAgICBnc3RfY2Fwc191bnJlZiAob3V0X2NhcHMpOwotICAgIGdzdF9jYXBzX3VucmVmIChwYWRfY2Fwcyk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJfY2Fwcyk7Ci0gICAgcmV0dXJuIHJlczsKLSAgfQotfQotCi0KIC8qIENvbnZlcnRzIHRoZSBsaW5lX29mZnNldCAvIGZpZWxkX3Bhcml0eSBieXRlIG9mIGEgVkJJIGRhdGEgdW5pdC4gKi8KIHN0YXRpYyB2b2lkCiBnc3RfdGVsZXRleHRkZWNfbG9mcF90b19saW5lIChndWludCAqIGZpZWxkLCBndWludCAqIGZpZWxkX2xpbmUsCkBAIC0xMTYwLDkgKzEwNTYsOSBAQAogCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF90ZWxldGV4dGRlY19leHRyYWN0X2RhdGFfdW5pdHMgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsCi0gICAgR3N0VGVsZXRleHRGcmFtZSAqIGYsIGd1aW50OCAqIHBhY2tldCwgZ3VpbnQgKiBvZmZzZXQsIGdpbnQgc2l6ZSkKKyAgICBHc3RUZWxldGV4dEZyYW1lICogZiwgY29uc3QgZ3VpbnQ4ICogcGFja2V0LCBndWludCAqIG9mZnNldCwgZ3NpemUgc2l6ZSkKIHsKLSAgZ3VpbnQ4ICpkYXRhX3VuaXQ7CisgIGNvbnN0IGd1aW50OCAqZGF0YV91bml0OwogICBndWludCBpOwogCiAgIHdoaWxlICgqb2Zmc2V0IDwgc2l6ZSkgewpAQCAtMTI0MywzICsxMTM5LDE4IEBACiAgIH0KICAgcmV0dXJuIFZCSV9TVUNDRVNTOwogfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3RlbGV0ZXh0X2luaXQgKEdzdFBsdWdpbiAqIHRlbGV0ZXh0KQoreworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X3RlbGV0ZXh0ZGVjX2RlYnVnLCAidGVsZXRleHQiLCAwLAorICAgICAgIlRlbGV0ZXh0IGRlY29kZXIiKTsKKyAgcmV0dXJuIGdzdF9lbGVtZW50X3JlZ2lzdGVyICh0ZWxldGV4dCwgInRlbGV0ZXh0ZGVjIiwgR1NUX1JBTktfTk9ORSwKKyAgICAgIEdTVF9UWVBFX1RFTEVURVhUREVDKTsKK30KKworR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAorICAgIEdTVF9WRVJTSU9OX01JTk9SLAorICAgIHRlbGV0ZXh0LAorICAgICJUZWxldGV4dCBwbHVnaW4iLAorICAgIHRlbGV0ZXh0X2luaXQsIFZFUlNJT04sICJMR1BMIiwgIkdTdHJlYW1lciIsICJodHRwOi8vZ3N0cmVhbWVyLm5ldC8iKQpkaWZmIC0tZ2l0IGEvZXh0L3RlbGV0ZXh0ZGVjL2dzdHRlbGV0ZXh0ZGVjLmggYi9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuaAppbmRleCA0NjA3OTNkLi43YzU0NGJhIDEwMDY0NAotLS0gYS9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuaAorKysgYi9leHQvdGVsZXRleHRkZWMvZ3N0dGVsZXRleHRkZWMuaApAQCAtNDEsMTYgKzQxLDggQEAKIHR5cGVkZWYgc3RydWN0IF9Hc3RUZWxldGV4dEZyYW1lIEdzdFRlbGV0ZXh0RnJhbWU7CiB0eXBlZGVmIGVudW0gX0dzdFRlbGV0ZXh0T3V0cHV0Rm9ybWF0IEdzdFRlbGV0ZXh0T3V0cHV0Rm9ybWF0OwogCi1lbnVtIF9Hc3RUZWxldGV4dE91dHB1dEZvcm1hdAotewotICBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9SR0JBLAotICBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9URVhULAotICBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9IVE1MLAotICBHU1RfVEVMRVRFWFRERUNfT1VUUFVUX0ZPUk1BVF9QQU5HTwotfTsKLQotdHlwZWRlZiB2b2lkICgqR3N0VGVsZXRleHRQcm9jZXNzQnVmZmVyRnVuYykgKEdzdFRlbGV0ZXh0RGVjICoKLSAgICB0ZWxldGV4dCwgR3N0QnVmZmVyICogYnVmKTsKK3R5cGVkZWYgR3N0Rmxvd1JldHVybiAoKkdzdFRlbGV0ZXh0RXhwb3J0RnVuYykgKEdzdFRlbGV0ZXh0RGVjICogdGVsZXRleHQsCisgICAgdmJpX3BhZ2UgKiBwYWdlLCBHc3RCdWZmZXIgKiogYnVmKTsKIAogc3RydWN0IF9Hc3RUZWxldGV4dERlYwogewpAQCAtNTgsNiArNTAsNyBAQAogCiAgIEdzdFBhZCAqc2lua3BhZDsKICAgR3N0UGFkICpzcmNwYWQ7CisgIEdzdEV2ZW50ICpzZWdtZW50OwogCiAgIEdzdENsb2NrVGltZSBpbl90aW1lc3RhbXA7CiAgIEdzdENsb2NrVGltZSBpbl9kdXJhdGlvbjsKQEAgLTcxLDE3ICs2NCwyMiBAQAogICBnY2hhciAqc3VidGl0bGVzX3RlbXBsYXRlOwogICBnY2hhciAqZm9udF9kZXNjcmlwdGlvbjsKIAotICB2YmlfZHZiX2RlbXV4ICpkZW11eDsKICAgdmJpX2RlY29kZXIgKmRlY29kZXI7Ci0gIHZiaV9leHBvcnQgKmV4cG9ydGVyOworCiAgIEdRdWV1ZSAqcXVldWU7Ci0gIEdNdXRleCAqcXVldWVfbG9jazsKKyAgR011dGV4IHF1ZXVlX2xvY2s7CiAKICAgR3N0VGVsZXRleHRGcmFtZSAqZnJhbWU7CiAgIGZsb2F0IGxhc3RfdHM7Ci0gIEdzdFRlbGV0ZXh0T3V0cHV0Rm9ybWF0IG91dHB1dF9mb3JtYXQ7CiAKLSAgR3N0VGVsZXRleHRQcm9jZXNzQnVmZmVyRnVuYyBwcm9jZXNzX2J1Zl9mdW5jOworICBHc3RUZWxldGV4dEV4cG9ydEZ1bmMgZXhwb3J0X2Z1bmM7CisKKyAgLyogbmVnb3RpYXRlZCBzaXplIG9mIHRoZSBvdXRwdXQgaW1hZ2UgaW4gUkdCQSBtb2RlLiAqLworICBndWludCB3aWR0aDsKKyAgZ3VpbnQgaGVpZ2h0OworCisgIC8qIGJ1ZmZlciBwb29sIHJlY2VpdmVkIGZyb20gdGhlIHBlZXIgcGFkIC0gdXNlZCBpbiBSR0JBIG91dHB1dCBvbmx5LiAqLworICBHc3RCdWZmZXJQb29sICpidWZfcG9vbDsKIH07CiAKIHN0cnVjdCBfR3N0VGVsZXRleHRGcmFtZQpkaWZmIC0tZ2l0IGEvZXh0L3RlbGV0ZXh0ZGVjL3RlbGV0ZXh0LmMgYi9leHQvdGVsZXRleHRkZWMvdGVsZXRleHQuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQzZjEzZS4uMDAwMDAwMAotLS0gYS9leHQvdGVsZXRleHRkZWMvdGVsZXRleHQuYworKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLS8qCi0gKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOSBTZWJhc3RpYW4gUMO2bHN0ZXJsIDxzZWJwQGstZC13Lm9yZz4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2QxaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSAgVVNBCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgImdzdHRlbGV0ZXh0ZGVjLmgiCi0KLS8qIGVudHJ5IHBvaW50IHRvIGluaXRpYWxpemUgdGhlIHBsdWctaW4KLSAqIGluaXRpYWxpemUgdGhlIHBsdWctaW4gaXRzZWxmCi0gKiByZWdpc3RlciB0aGUgZWxlbWVudCBmYWN0b3JpZXMgYW5kIG90aGVyIGZlYXR1cmVzCi0gKi8KLXN0YXRpYyBnYm9vbGVhbgotdGVsZXRleHRfaW5pdCAoR3N0UGx1Z2luICogdGVsZXRleHQpCi17Ci0gIHJldHVybiBnc3RfZWxlbWVudF9yZWdpc3RlciAodGVsZXRleHQsICJ0ZWxldGV4dGRlYyIsIEdTVF9SQU5LX05PTkUsCi0gICAgICBHU1RfVFlQRV9URUxFVEVYVERFQyk7Ci19Ci0KLUdTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKLSAgICBHU1RfVkVSU0lPTl9NSU5PUiwKLSAgICB0ZWxldGV4dCwKLSAgICAiVGVsZXRleHQgcGx1Z2luIiwKLSAgICB0ZWxldGV4dF9pbml0LCBWRVJTSU9OLCAiTEdQTCIsICJHU3RyZWFtZXIiLCAiaHR0cDovL2dzdHJlYW1lci5uZXQvIikKZGlmZiAtLWdpdCBhL2V4dC90aW1pZGl0eS9NYWtlZmlsZS5pbiBiL2V4dC90aW1pZGl0eS9NYWtlZmlsZS5pbgppbmRleCBiZDY3MTY1Li45NTQ0Njc5IDEwMDY0NAotLS0gYS9leHQvdGltaWRpdHkvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3RpbWlkaXR5L01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI5Myw2ICsyOTIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzMCw2ICszMzEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzOCw3ICszNDEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTcsOCArMzU5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3NSwxNiArMzc4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxMCw2ICs0MTQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzUsNiArNDQxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTM2LDYgKzU0NCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDksOCArNTU4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTY2LDYgKzU3Myw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjMsMTYgKzYzMiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4NCw2ICs2OTUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjk0LDYgKzcwNiw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwMyw2ICs3MTYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQwLDcgKzc1NSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3RpbWlkaXR5L2dzdHRpbWlkaXR5LmMgYi9leHQvdGltaWRpdHkvZ3N0dGltaWRpdHkuYwppbmRleCAwODY3Nzk1Li40MThhNWZlIDEwMDY0NAotLS0gYS9leHQvdGltaWRpdHkvZ3N0dGltaWRpdHkuYworKysgYi9leHQvdGltaWRpdHkvZ3N0dGltaWRpdHkuYwpAQCAtNTg4LDggKzU4OCw3IEBACiAgICAgICBnb3RvIHBhdXNlZDsKICAgICB9CiAKLSAgICBpZiAodGltaWRpdHktPm1pZGlkYXRhKQotICAgICAgZ19mcmVlICh0aW1pZGl0eS0+bWlkaWRhdGEpOworICAgIGdfZnJlZSAodGltaWRpdHktPm1pZGlkYXRhKTsKIAogICAgIHRpbWlkaXR5LT5taWRpZGF0YSA9IGdfbWFsbG9jICh0aW1pZGl0eS0+bWlkaWRhdGFfc2l6ZSk7CiAgICAgdGltaWRpdHktPm1pZGlkYXRhX29mZnNldCA9IDA7CmRpZmYgLS1naXQgYS9leHQvdm9hYWNlbmMvTWFrZWZpbGUuaW4gYi9leHQvdm9hYWNlbmMvTWFrZWZpbGUuaW4KaW5kZXggMjU5Nzc1YS4uMDVmMjIyNSAxMDA2NDQKLS0tIGEvZXh0L3ZvYWFjZW5jL01ha2VmaWxlLmluCisrKyBiL2V4dC92b2FhY2VuYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2V4dC92b2FtcndiZW5jL01ha2VmaWxlLmluIGIvZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUuaW4KaW5kZXggNjJjNGI0ZS4uOTAwNDExNyAxMDA2NDQKLS0tIGEvZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3ZvYW1yd2JlbmMvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc3LDYgKzI3Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE0LDYgKzMxNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIyLDcgKzMyNSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MSw4ICszNDMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU5LDE2ICszNjIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk0LDYgKzM5OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOSw2ICs0MjUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjAsNiArNTI4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMyw4ICs1NDIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTAsNiArNTU3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNywxNiArNjE2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY4LDYgKzY3OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzgsNiArNjkwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg3LDYgKzcwMCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjQsNyArNzM5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL01ha2VmaWxlLmFtIGIvZXh0L3Z1bGthbi9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzU3ZTM0Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDY1IEBACitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R2dWxrYW4ubGEKKworU1VCRElSUyA9CitESVNUX1NVQkRJUlMgPSB4Y2IKK0RJU1RDTEVBTkZJTEVTID0gdmtjb25maWcuaAorCitsaWJnc3R2dWxrYW5fbGFfU09VUkNFUyA9IFwKKwlnc3R2dWxrYW4uYyBcCisJdmtkZXZpY2UuYyBcCisJdmtkaXNwbGF5LmMgXAorCXZrZXJyb3IuYyBcCisJdmtidWZmZXJtZW1vcnkuYyBcCisJdmtpbWFnZW1lbW9yeS5jIFwKKwl2a2J1ZmZlcnBvb2wuYyBcCisJdmtpbnN0YW5jZS5jIFwKKwl2a21lbW9yeS5jIFwKKwl2a3F1ZXVlLmMgXAorCXZrc2luay5jIFwKKwl2a3N3YXBwZXIuYyBcCisJdmt1cGxvYWQuYyBcCisJdmt1dGlscy5jIFwKKwl2a3dpbmRvdy5jCisKK25vaW5zdF9IRUFERVJTID0gXAorCXZrLmggXAorCXZrX2Z3ZC5oIFwKKwl2a2RldmljZS5oIFwKKwl2a2Rpc3BsYXkuaCBcCisJdmtlcnJvci5oIFwKKwl2a2J1ZmZlcm1lbW9yeS5oIFwKKwl2a2ltYWdlbWVtb3J5LmggXAorCXZrYnVmZmVycG9vbC5oIFwKKwl2a2luc3RhbmNlLmggXAorCXZrbWVtb3J5LmggXAorCXZrcXVldWUuaCBcCisJdmtzaW5rLmggXAorCXZrc3dhcHBlci5oIFwKKwl2a3VwbG9hZC5oIFwKKwl2a3V0aWxzLmggXAorCXZrdXRpbHNfcHJpdmF0ZS5oIFwKKwl2a3dpbmRvdy5oCisKK2xpYmdzdHZ1bGthbl9sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChWVUxLQU5fQ0ZMQUdTKQorCitsaWJnc3R2dWxrYW5fbGFfTElCQUREID0gXAorCSQoR1NUX0JBU0VfTElCUykgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCisJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQoVlVMS0FOX0xJQlMpCisKK2lmIFVTRV9YQ0IKK1NVQkRJUlMgKz0geGNiCitsaWJnc3R2dWxrYW5fbGFfTElCQUREICs9IHhjYi9saWJnc3R2dWxrYW4teGNiLmxhCitlbmRpZgorCitsaWJnc3R2dWxrYW5fbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQorbGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCisKKwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi9NYWtlZmlsZS5pbiBiL2V4dC92dWxrYW4vTWFrZWZpbGUuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGRmZDFkYQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vTWFrZWZpbGUuaW4KQEAgLTAsMCArMSwxMzk3IEBACisjIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBieSBhdXRvbWFrZSAxLjE1IGZyb20gTWFrZWZpbGUuYW0uCisjIEBjb25maWd1cmVfaW5wdXRACisKKyMgQ29weXJpZ2h0IChDKSAxOTk0LTIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisKKyMgVGhpcyBNYWtlZmlsZS5pbiBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisjIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisjIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZLCB0byB0aGUgZXh0ZW50IHBlcm1pdHRlZCBieSBsYXc7IHdpdGhvdXQKKyMgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQQorIyBQQVJUSUNVTEFSIFBVUlBPU0UuCisKK0BTRVRfTUFLRUAKKworCitWUEFUSCA9IEBzcmNkaXJACithbV9faXNfZ251X21ha2UgPSB7IFwKKyAgaWYgdGVzdCAteiAnJChNQUtFTEVWRUwpJzsgdGhlbiBcCisgICAgZmFsc2U7IFwKKyAgZWxpZiB0ZXN0IC1uICckKE1BS0VfSE9TVCknOyB0aGVuIFwKKyAgICB0cnVlOyBcCisgIGVsaWYgdGVzdCAtbiAnJChNQUtFX1ZFUlNJT04pJyAmJiB0ZXN0IC1uICckKENVUkRJUiknOyB0aGVuIFwKKyAgICB0cnVlOyBcCisgIGVsc2UgXAorICAgIGZhbHNlOyBcCisgIGZpOyBcCit9CithbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uID0gXAorICBjYXNlICQke3RhcmdldF9vcHRpb24tfSBpbiBcCisgICAgICA/KSA7OyBcCisgICAgICAqKSBlY2hvICJhbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uOiBpbnRlcm5hbCBlcnJvcjogaW52YWxpZCIgXAorICAgICAgICAgICAgICAidGFyZ2V0IG9wdGlvbiAnJCR7dGFyZ2V0X29wdGlvbi19JyBzcGVjaWZpZWQiID4mMjsgXAorICAgICAgICAgZXhpdCAxOzsgXAorICBlc2FjOyBcCisgIGhhc19vcHQ9bm87IFwKKyAgc2FuZV9tYWtlZmxhZ3M9JCRNQUtFRkxBR1M7IFwKKyAgaWYgJChhbV9faXNfZ251X21ha2UpOyB0aGVuIFwKKyAgICBzYW5lX21ha2VmbGFncz0kJE1GTEFHUzsgXAorICBlbHNlIFwKKyAgICBjYXNlICQkTUFLRUZMQUdTIGluIFwKKyAgICAgICpcXFtcIFwJXSopIFwKKyAgICAgICAgYnM9XFw7IFwKKyAgICAgICAgc2FuZV9tYWtlZmxhZ3M9YHByaW50ZiAnJXNcbicgIiQkTUFLRUZMQUdTIiBcCisgICAgICAgICAgfCBzZWQgInMvJCRicyQkYnNbJCRicyAkJGJzCV0qLy9nImA7OyBcCisgICAgZXNhYzsgXAorICBmaTsgXAorICBza2lwX25leHQ9bm87IFwKKyAgc3RyaXBfdHJhaWxvcHQgKCkgXAorICB7IFwKKyAgICBmbGc9YHByaW50ZiAnJXNcbicgIiQkZmxnIiB8IHNlZCAicy8kJDEuKiQkLy8iYDsgXAorICB9OyBcCisgIGZvciBmbGcgaW4gJCRzYW5lX21ha2VmbGFnczsgZG8gXAorICAgIHRlc3QgJCRza2lwX25leHQgPSB5ZXMgJiYgeyBza2lwX25leHQ9bm87IGNvbnRpbnVlOyB9OyBcCisgICAgY2FzZSAkJGZsZyBpbiBcCisgICAgICAqPSp8LS0qKSBjb250aW51ZTs7IFwKKyAgICAgICAgLSpJKSBzdHJpcF90cmFpbG9wdCAnSSc7IHNraXBfbmV4dD15ZXM7OyBcCisgICAgICAtKkk/Kikgc3RyaXBfdHJhaWxvcHQgJ0knOzsgXAorICAgICAgICAtKk8pIHN0cmlwX3RyYWlsb3B0ICdPJzsgc2tpcF9uZXh0PXllczs7IFwKKyAgICAgIC0qTz8qKSBzdHJpcF90cmFpbG9wdCAnTyc7OyBcCisgICAgICAgIC0qbCkgc3RyaXBfdHJhaWxvcHQgJ2wnOyBza2lwX25leHQ9eWVzOzsgXAorICAgICAgLSpsPyopIHN0cmlwX3RyYWlsb3B0ICdsJzs7IFwKKyAgICAgIC1bZEVEbV0pIHNraXBfbmV4dD15ZXM7OyBcCisgICAgICAtW0pUXSkgc2tpcF9uZXh0PXllczs7IFwKKyAgICBlc2FjOyBcCisgICAgY2FzZSAkJGZsZyBpbiBcCisgICAgICAqJCR0YXJnZXRfb3B0aW9uKikgaGFzX29wdD15ZXM7IGJyZWFrOzsgXAorICAgIGVzYWM7IFwKKyAgZG9uZTsgXAorICB0ZXN0ICQkaGFzX29wdCA9IHllcworYW1fX21ha2VfZHJ5cnVuID0gKHRhcmdldF9vcHRpb249bjsgJChhbV9fbWFrZV9ydW5uaW5nX3dpdGhfb3B0aW9uKSkKK2FtX19tYWtlX2tlZXBnb2luZyA9ICh0YXJnZXRfb3B0aW9uPWs7ICQoYW1fX21ha2VfcnVubmluZ193aXRoX29wdGlvbikpCitwa2dkYXRhZGlyID0gJChkYXRhZGlyKS9AUEFDS0FHRUAKK3BrZ2luY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL0BQQUNLQUdFQAorcGtnbGliZGlyID0gJChsaWJkaXIpL0BQQUNLQUdFQAorcGtnbGliZXhlY2RpciA9ICQobGliZXhlY2RpcikvQFBBQ0tBR0VACithbV9fY2QgPSBDRFBBVEg9IiQke1pTSF9WRVJTSU9OKy59JChQQVRIX1NFUEFSQVRPUikiICYmIGNkCitpbnN0YWxsX3NoX0RBVEEgPSAkKGluc3RhbGxfc2gpIC1jIC1tIDY0NAoraW5zdGFsbF9zaF9QUk9HUkFNID0gJChpbnN0YWxsX3NoKSAtYworaW5zdGFsbF9zaF9TQ1JJUFQgPSAkKGluc3RhbGxfc2gpIC1jCitJTlNUQUxMX0hFQURFUiA9ICQoSU5TVEFMTF9EQVRBKQordHJhbnNmb3JtID0gJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKQorTk9STUFMX0lOU1RBTEwgPSA6CitQUkVfSU5TVEFMTCA9IDoKK1BPU1RfSU5TVEFMTCA9IDoKK05PUk1BTF9VTklOU1RBTEwgPSA6CitQUkVfVU5JTlNUQUxMID0gOgorUE9TVF9VTklOU1RBTEwgPSA6CitidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAoraG9zdF90cmlwbGV0ID0gQGhvc3RACit0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACitAVVNFX1hDQl9UUlVFQGFtX19hcHBlbmRfMSA9IHhjYgorQFVTRV9YQ0JfVFJVRUBhbV9fYXBwZW5kXzIgPSB4Y2IvbGliZ3N0dnVsa2FuLXhjYi5sYQorc3ViZGlyID0gZXh0L3Z1bGthbgorQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAorYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYXV0by1hbHQubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWNvbXBpbGVyLWZsYWcubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWxpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLXZlcnNpb24ubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2F4X2NyZWF0ZV9zdGRpbnRfaC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXhfcHRocmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWFyY2gubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1hcmdzLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtY2hlY2subTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1kZWZhdWx0Lm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZG93aGlsZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWVycm9yLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtZmVhdHVyZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LWdldHRleHQubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1nbGliMi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LXBhY2thZ2UtcmVsZWFzZS1kYXRldGltZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3N0LXBsYXRmb3JtLm00IFwKKwkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9nc3QtcGx1Z2luLWRvY3MubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC1wbHVnaW5kaXIubTQgXAorCSQodG9wX3NyY2RpcikvY29tbW9uL200L2dzdC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKK2FtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCisJJChBQ0xPQ0FMX000KQorRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXAorCSQoYW1fX0RJU1RfQ09NTU9OKQorbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKK0NPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKK0NPTkZJR19DTEVBTl9GSUxFUyA9CitDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQorYW1fX3ZwYXRoX2Fkal9zZXR1cCA9IHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzfC58LnxnJ2A7CithbV9fdnBhdGhfYWRqID0gY2FzZSAkJHAgaW4gXAorICAgICQoc3JjZGlyKS8qKSBmPWBlY2hvICIkJHAiIHwgc2VkICJzfF4kJHNyY2RpcnN0cmlwL3x8ImA7OyBcCisgICAgKikgZj0kJHA7OyBcCisgIGVzYWM7CithbV9fc3RyaXBfZGlyID0gZj1gZWNobyAkJHAgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7CithbV9faW5zdGFsbF9tYXggPSA0MAorYW1fX25vYmFzZV9zdHJpcF9zZXR1cCA9IFwKKyAgc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKnxdL1xcXFwmL2cnYAorYW1fX25vYmFzZV9zdHJpcCA9IFwKKyAgZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAiOyBkb25lIHwgc2VkIC1lICJzfCQkc3JjZGlyc3RyaXAvfHwiCithbV9fbm9iYXNlX2xpc3QgPSAkKGFtX19ub2Jhc2Vfc3RyaXBfc2V0dXApOyBcCisgIGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwICQkcCI7IGRvbmUgfCBcCisgIHNlZCAic3wgJCRzcmNkaXJzdHJpcC98IHw7IicgLyAuKlwvLyFzLyAuKi8gLi87IHMsXCggLipcKS9bXi9dKiQkLFwxLCcgfCBcCisgICQoQVdLKSAnQkVHSU4geyBmaWxlc1siLiJdID0gIiIgfSB7IGZpbGVzWyQkMl0gPSBmaWxlc1skJDJdICIgIiAkJDE7IFwKKyAgICBpZiAoKytuWyQkMl0gPT0gJChhbV9faW5zdGFsbF9tYXgpKSBcCisgICAgICB7IHByaW50ICQkMiwgZmlsZXNbJCQyXTsgblskJDJdID0gMDsgZmlsZXNbJCQyXSA9ICIiIH0gfSBcCisgICAgRU5EIHsgZm9yIChkaXIgaW4gZmlsZXMpIHByaW50IGRpciwgZmlsZXNbZGlyXSB9JworYW1fX2Jhc2VfbGlzdCA9IFwKKyAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJyB8IFwKKyAgc2VkICckJCFOOyQkIU47JCQhTjskJCFOO3MvXG4vIC9nJworYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpciA9IHsgXAorICB0ZXN0IC16ICIkJGZpbGVzIiBcCisgICAgfHwgeyB0ZXN0ICEgLWQgIiQkZGlyIiAmJiB0ZXN0ICEgLWYgIiQkZGlyIiAmJiB0ZXN0ICEgLXIgIiQkZGlyIjsgfSBcCisgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAorICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAorICB9CithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKK0xUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCithbV9fREVQRU5ERU5DSUVTXzEgPQorbGliZ3N0dnVsa2FuX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19hcHBlbmRfMikKK2FtX2xpYmdzdHZ1bGthbl9sYV9PQkpFQ1RTID0gbGliZ3N0dnVsa2FuX2xhLWdzdHZ1bGthbi5sbyBcCisJbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLmxvIGxpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkubG8gXAorCWxpYmdzdHZ1bGthbl9sYS12a2Vycm9yLmxvIGxpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcm1lbW9yeS5sbyBcCisJbGliZ3N0dnVsa2FuX2xhLXZraW1hZ2VtZW1vcnkubG8gXAorCWxpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcnBvb2wubG8gbGliZ3N0dnVsa2FuX2xhLXZraW5zdGFuY2UubG8gXAorCWxpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5sbyBsaWJnc3R2dWxrYW5fbGEtdmtxdWV1ZS5sbyBcCisJbGliZ3N0dnVsa2FuX2xhLXZrc2luay5sbyBsaWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLmxvIFwKKwlsaWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQubG8gbGliZ3N0dnVsa2FuX2xhLXZrdXRpbHMubG8gXAorCWxpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5sbworbGliZ3N0dnVsa2FuX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdHZ1bGthbl9sYV9PQkpFQ1RTKQorQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQorYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKK2FtX192X2x0XzAgPSAtLXNpbGVudAorYW1fX3ZfbHRfMSA9IAorbGliZ3N0dnVsa2FuX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKKwkkKENDTEQpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKKwkkKGxpYmdzdHZ1bGthbl9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQorYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCithbV9fdl9QXzAgPSBmYWxzZQorYW1fX3ZfUF8xID0gOgorQU1fVl9HRU4gPSAkKGFtX192X0dFTl9AQU1fVkApCithbV9fdl9HRU5fID0gJChhbV9fdl9HRU5fQEFNX0RFRkFVTFRfVkApCithbV9fdl9HRU5fMCA9IEBlY2hvICIgIEdFTiAgICAgIiAkQDsKK2FtX192X0dFTl8xID0gCitBTV9WX2F0ID0gJChhbV9fdl9hdF9AQU1fVkApCithbV9fdl9hdF8gPSAkKGFtX192X2F0X0BBTV9ERUZBVUxUX1ZAKQorYW1fX3ZfYXRfMCA9IEAKK2FtX192X2F0XzEgPSAKK0RFRkFVTFRfSU5DTFVERVMgPSAtSS5AYW1fX2lzcmNAIC1JJCh0b3BfYnVpbGRkaXIpCitkZXBjb21wID0gJChTSEVMTCkgJCh0b3Bfc3JjZGlyKS9kZXBjb21wCithbV9fZGVwZmlsZXNfbWF5YmUgPSBkZXBmaWxlcworYW1fX212ID0gbXYgLWYKK0NPTVBJTEUgPSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgXAorCSQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKK0xUQ09NUElMRSA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAorCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpIFwKKwkkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpIFwKKwkkKEFNX0NGTEFHUykgJChDRkxBR1MpCitBTV9WX0NDID0gJChhbV9fdl9DQ19AQU1fVkApCithbV9fdl9DQ18gPSAkKGFtX192X0NDX0BBTV9ERUZBVUxUX1ZAKQorYW1fX3ZfQ0NfMCA9IEBlY2hvICIgIENDICAgICAgIiAkQDsKK2FtX192X0NDXzEgPSAKK0NDTEQgPSAkKENDKQorTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAorCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAorQU1fVl9DQ0xEID0gJChhbV9fdl9DQ0xEX0BBTV9WQCkKK2FtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQorYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOworYW1fX3ZfQ0NMRF8xID0gCitTT1VSQ0VTID0gJChsaWJnc3R2dWxrYW5fbGFfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGliZ3N0dnVsa2FuX2xhX1NPVVJDRVMpCitSRUNVUlNJVkVfVEFSR0VUUyA9IGFsbC1yZWN1cnNpdmUgY2hlY2stcmVjdXJzaXZlIGNzY29wZWxpc3QtcmVjdXJzaXZlIFwKKwljdGFncy1yZWN1cnNpdmUgZHZpLXJlY3Vyc2l2ZSBodG1sLXJlY3Vyc2l2ZSBpbmZvLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZSBpbnN0YWxsLWR2aS1yZWN1cnNpdmUgXAorCWluc3RhbGwtZXhlYy1yZWN1cnNpdmUgaW5zdGFsbC1odG1sLXJlY3Vyc2l2ZSBcCisJaW5zdGFsbC1pbmZvLXJlY3Vyc2l2ZSBpbnN0YWxsLXBkZi1yZWN1cnNpdmUgXAorCWluc3RhbGwtcHMtcmVjdXJzaXZlIGluc3RhbGwtcmVjdXJzaXZlIGluc3RhbGxjaGVjay1yZWN1cnNpdmUgXAorCWluc3RhbGxkaXJzLXJlY3Vyc2l2ZSBwZGYtcmVjdXJzaXZlIHBzLXJlY3Vyc2l2ZSBcCisJdGFncy1yZWN1cnNpdmUgdW5pbnN0YWxsLXJlY3Vyc2l2ZQorYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCisgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAorICAgIG58bm98Tk8pIGZhbHNlOzsgXAorICAgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCisgIGVzYWMKK0hFQURFUlMgPSAkKG5vaW5zdF9IRUFERVJTKQorUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFMgPSBtb3N0bHljbGVhbi1yZWN1cnNpdmUgY2xlYW4tcmVjdXJzaXZlCVwKKyAgZGlzdGNsZWFuLXJlY3Vyc2l2ZSBtYWludGFpbmVyLWNsZWFuLXJlY3Vyc2l2ZQorYW1fX3JlY3Vyc2l2ZV90YXJnZXRzID0gXAorICAkKFJFQ1VSU0lWRV9UQVJHRVRTKSBcCisgICQoUkVDVVJTSVZFX0NMRUFOX1RBUkdFVFMpIFwKKyAgJChhbV9fZXh0cmFfcmVjdXJzaXZlX3RhcmdldHMpCitBTV9SRUNVUlNJVkVfVEFSR0VUUyA9ICQoYW1fX3JlY3Vyc2l2ZV90YXJnZXRzOi1yZWN1cnNpdmU9KSBUQUdTIENUQUdTIFwKKwlkaXN0ZGlyCithbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQorIyBSZWFkIGEgbGlzdCBvZiBuZXdsaW5lLXNlcGFyYXRlZCBzdHJpbmdzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LAorIyBhbmQgcHJpbnQgZWFjaCBvZiB0aGVtIG9uY2UsIHdpdGhvdXQgZHVwbGljYXRlcy4gIElucHV0IG9yZGVyIGlzCisjICpub3QqIHByZXNlcnZlZC4KK2FtX191bmlxdWlmeV9pbnB1dCA9ICQoQVdLKSAnXAorICBCRUdJTiB7IG5vbmVtcHR5ID0gMDsgfSBcCisgIHsgaXRlbXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCisgIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gaXRlbXMpIHByaW50IGk7IH07IH0gXAorJworIyBNYWtlIHN1cmUgdGhlIGxpc3Qgb2Ygc291cmNlcyBpcyB1bmlxdWUuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlLAorIyBlLmcuLCB0aGUgc2FtZSBzb3VyY2UgZmlsZSBtaWdodCBiZSBzaGFyZWQgYW1vbmcgX1NPVVJDRVMgdmFyaWFibGVzCisjIGZvciBkaWZmZXJlbnQgcHJvZ3JhbXMvbGlicmFyaWVzLgorYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyA9IFwKKyAgbGlzdD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKKyAgdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKyAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKKyAgZG9uZSB8ICQoYW1fX3VuaXF1aWZ5X2lucHV0KWAKK0VUQUdTID0gZXRhZ3MKK0NUQUdTID0gY3RhZ3MKK2FtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL2RlcGNvbXAKK0RJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCithbV9fcmVsYXRpdml6ZSA9IFwKKyAgZGlyMD1gcHdkYDsgXAorICBzZWRfZmlyc3Q9J3MsXlwoW14vXSpcKS8uKiQkLFwxLCc7IFwKKyAgc2VkX3Jlc3Q9J3MsXlteL10qLyosLCc7IFwKKyAgc2VkX2xhc3Q9J3MsXi4qL1woW14vXSpcKSQkLFwxLCc7IFwKKyAgc2VkX2J1dGxhc3Q9J3MsLypbXi9dKiQkLCwnOyBcCisgIHdoaWxlIHRlc3QgLW4gIiQkZGlyMSI7IGRvIFwKKyAgICBmaXJzdD1gZWNobyAiJCRkaXIxIiB8IHNlZCAtZSAiJCRzZWRfZmlyc3QiYDsgXAorICAgIGlmIHRlc3QgIiQkZmlyc3QiICE9ICIuIjsgdGhlbiBcCisgICAgICBpZiB0ZXN0ICIkJGZpcnN0IiA9ICIuLiI7IHRoZW4gXAorICAgICAgICBkaXIyPWBlY2hvICIkJGRpcjAiIHwgc2VkIC1lICIkJHNlZF9sYXN0ImAvIiQkZGlyMiI7IFwKKyAgICAgICAgZGlyMD1gZWNobyAiJCRkaXIwIiB8IHNlZCAtZSAiJCRzZWRfYnV0bGFzdCJgOyBcCisgICAgICBlbHNlIFwKKyAgICAgICAgZmlyc3QyPWBlY2hvICIkJGRpcjIiIHwgc2VkIC1lICIkJHNlZF9maXJzdCJgOyBcCisgICAgICAgIGlmIHRlc3QgIiQkZmlyc3QyIiA9ICIkJGZpcnN0IjsgdGhlbiBcCisgICAgICAgICAgZGlyMj1gZWNobyAiJCRkaXIyIiB8IHNlZCAtZSAiJCRzZWRfcmVzdCJgOyBcCisgICAgICAgIGVsc2UgXAorICAgICAgICAgIGRpcjI9Ii4uLyQkZGlyMiI7IFwKKyAgICAgICAgZmk7IFwKKyAgICAgICAgZGlyMD0iJCRkaXIwIi8iJCRmaXJzdCI7IFwKKyAgICAgIGZpOyBcCisgICAgZmk7IFwKKyAgICBkaXIxPWBlY2hvICIkJGRpcjEiIHwgc2VkIC1lICIkJHNlZF9yZXN0ImA7IFwKKyAgZG9uZTsgXAorICByZWxkaXI9IiQkZGlyMiIKK0FDTE9DQUwgPSBAQUNMT0NBTEAKK0FDTE9DQUxfQU1GTEFHUyA9IEBBQ0xPQ0FMX0FNRkxBR1NACitBQ01FTkNfQ0ZMQUdTID0gQEFDTUVOQ19DRkxBR1NACitBQ01NUDNERUNfQ0ZMQUdTID0gQEFDTU1QM0RFQ19DRkxBR1NACitBTVRBUiA9IEBBTVRBUkAKK0FNX0RFRkFVTFRfVkVSQk9TSVRZID0gQEFNX0RFRkFVTFRfVkVSQk9TSVRZQAorQVBFWFNJTktfQ0ZMQUdTID0gQEFQRVhTSU5LX0NGTEFHU0AKK0FQRVhTSU5LX0xJQlMgPSBAQVBFWFNJTktfTElCU0AKK0FSID0gQEFSQAorQVMgPSBAQVNACitBU1NSRU5ERVJfQ0ZMQUdTID0gQEFTU1JFTkRFUl9DRkxBR1NACitBU1NSRU5ERVJfTElCUyA9IEBBU1NSRU5ERVJfTElCU0AKK0FVVE9DT05GID0gQEFVVE9DT05GQAorQVVUT0hFQURFUiA9IEBBVVRPSEVBREVSQAorQVVUT01BS0UgPSBAQVVUT01BS0VACitBV0sgPSBAQVdLQAorQkxVRVo1X0NGTEFHUyA9IEBCTFVFWjVfQ0ZMQUdTQAorQkxVRVo1X0xJQlMgPSBAQkxVRVo1X0xJQlNACitCUzJCX0NGTEFHUyA9IEBCUzJCX0NGTEFHU0AKK0JTMkJfTElCUyA9IEBCUzJCX0xJQlNACitCWjJfTElCUyA9IEBCWjJfTElCU0AKK0NDID0gQENDQAorQ0NBU0ZMQUdTID0gQENDQVNGTEFHU0AKK0NDREVQTU9ERSA9IEBDQ0RFUE1PREVACitDRkxBR1MgPSBAQ0ZMQUdTQAorQ0hST01BUFJJTlRfQ0ZMQUdTID0gQENIUk9NQVBSSU5UX0NGTEFHU0AKK0NIUk9NQVBSSU5UX0xJQlMgPSBAQ0hST01BUFJJTlRfTElCU0AKK0NMVVRURVJfQ0ZMQUdTID0gQENMVVRURVJfQ0ZMQUdTQAorQ0xVVFRFUl9HTFhfQ0ZMQUdTID0gQENMVVRURVJfR0xYX0NGTEFHU0AKK0NMVVRURVJfR0xYX0xJQlMgPSBAQ0xVVFRFUl9HTFhfTElCU0AKK0NMVVRURVJfTElCUyA9IEBDTFVUVEVSX0xJQlNACitDTFVUVEVSX1gxMV9DRkxBR1MgPSBAQ0xVVFRFUl9YMTFfQ0ZMQUdTQAorQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAorQ1BQID0gQENQUEAKK0NQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAorQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACitDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAorQ1hYID0gQENYWEAKK0NYWENQUCA9IEBDWFhDUFBACitDWFhERVBNT0RFID0gQENYWERFUE1PREVACitDWFhGTEFHUyA9IEBDWFhGTEFHU0AKK0NZR1BBVEhfVyA9IEBDWUdQQVRIX1dACitEQUFMQV9DRkxBR1MgPSBAREFBTEFfQ0ZMQUdTQAorREFBTEFfTElCUyA9IEBEQUFMQV9MSUJTQAorRENDUF9MSUJTID0gQERDQ1BfTElCU0AKK0RFQ0tMSU5LX0NYWEZMQUdTID0gQERFQ0tMSU5LX0NYWEZMQUdTQAorREVDS0xJTktfTElCUyA9IEBERUNLTElOS19MSUJTQAorREVGQVVMVF9BVURJT1NJTksgPSBAREVGQVVMVF9BVURJT1NJTktACitERUZBVUxUX0FVRElPU1JDID0gQERFRkFVTFRfQVVESU9TUkNACitERUZBVUxUX1ZJREVPU0lOSyA9IEBERUZBVUxUX1ZJREVPU0lOS0AKK0RFRkFVTFRfVklERU9TUkMgPSBAREVGQVVMVF9WSURFT1NSQ0AKK0RFRkFVTFRfVklTVUFMSVpFUiA9IEBERUZBVUxUX1ZJU1VBTElaRVJACitERUZTID0gQERFRlNACitERVBESVIgPSBAREVQRElSQAorREVQUkVDQVRFRF9DRkxBR1MgPSBAREVQUkVDQVRFRF9DRkxBR1NACitESVJFQ1QzRF9MSUJTID0gQERJUkVDVDNEX0xJQlNACitESVJFQ1RGQl9DRkxBR1MgPSBARElSRUNURkJfQ0ZMQUdTQAorRElSRUNURkJfTElCUyA9IEBESVJFQ1RGQl9MSUJTQAorRElSRUNUU09VTkRfTElCUyA9IEBESVJFQ1RTT1VORF9MSUJTQAorRElSRUNUWF9DRkxBR1MgPSBARElSRUNUWF9DRkxBR1NACitESVJFQ1RYX0xERkxBR1MgPSBARElSRUNUWF9MREZMQUdTQAorRExMVE9PTCA9IEBETExUT09MQAorRFNZTVVUSUwgPSBARFNZTVVUSUxACitEVExTX0NGTEFHUyA9IEBEVExTX0NGTEFHU0AKK0RUTFNfTElCUyA9IEBEVExTX0xJQlNACitEVFNfTElCUyA9IEBEVFNfTElCU0AKK0RVTVBCSU4gPSBARFVNUEJJTkAKK0RWRE5BVl9DRkxBR1MgPSBARFZETkFWX0NGTEFHU0AKK0RWRE5BVl9MSUJTID0gQERWRE5BVl9MSUJTQAorRUNIT19DID0gQEVDSE9fQ0AKK0VDSE9fTiA9IEBFQ0hPX05ACitFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACitFR1JFUCA9IEBFR1JFUEAKK0VSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACitFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKK0VSUk9SX09CSkNGTEFHUyA9IEBFUlJPUl9PQkpDRkxBR1NACitFWEVFWFQgPSBARVhFRVhUQAorRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACitFWElGX0xJQlMgPSBARVhJRl9MSUJTQAorRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKK0ZBQURfTElCUyA9IEBGQUFEX0xJQlNACitGRkxBR1MgPSBARkZMQUdTQAorRkdSRVAgPSBARkdSRVBACitGTElURV9DRkxBR1MgPSBARkxJVEVfQ0ZMQUdTQAorRkxJVEVfTElCUyA9IEBGTElURV9MSUJTQAorRkxVSURTWU5USF9DRkxBR1MgPSBARkxVSURTWU5USF9DRkxBR1NACitGTFVJRFNZTlRIX0xJQlMgPSBARkxVSURTWU5USF9MSUJTQAorR0NPViA9IEBHQ09WQAorR0NPVl9DRkxBR1MgPSBAR0NPVl9DRkxBR1NACitHQ09WX0xJQlMgPSBAR0NPVl9MSUJTQAorR0RCVVNfQ09ERUdFTiA9IEBHREJVU19DT0RFR0VOQAorR0VUVEVYVF9NQUNST19WRVJTSU9OID0gQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAKK0dFVFRFWFRfUEFDS0FHRSA9IEBHRVRURVhUX1BBQ0tBR0VACitHSU9fQ0ZMQUdTID0gQEdJT19DRkxBR1NACitHSU9fTERGTEFHUyA9IEBHSU9fTERGTEFHU0AKK0dJT19MSUJTID0gQEdJT19MSUJTQAorR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKK0dJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACitHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKK0dMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAorR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKK0dMSUJfTElCUyA9IEBHTElCX0xJQlNACitHTElCX01LRU5VTVMgPSBAR0xJQl9NS0VOVU1TQAorR0xJQl9QUkVGSVggPSBAR0xJQl9QUkVGSVhACitHTElCX1JFUSA9IEBHTElCX1JFUUAKK0dMX0NGTEFHUyA9IEBHTF9DRkxBR1NACitHTF9MSUJTID0gQEdMX0xJQlNACitHTF9PQkpDRkxBR1MgPSBAR0xfT0JKQ0ZMQUdTQAorR01FX0xJQlMgPSBAR01FX0xJQlNACitHTU9EVUxFX0VYUE9SVF9DRkxBR1MgPSBAR01PRFVMRV9FWFBPUlRfQ0ZMQUdTQAorR01PRFVMRV9FWFBPUlRfTElCUyA9IEBHTU9EVUxFX0VYUE9SVF9MSUJTQAorR01PRFVMRV9OT19FWFBPUlRfQ0ZMQUdTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0NGTEFHU0AKK0dNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKK0dNU0dGTVQgPSBAR01TR0ZNVEAKK0dNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACitHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAorR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAorR1JFUCA9IEBHUkVQQAorR1NNX0xJQlMgPSBAR1NNX0xJQlNACitHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKK0dTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACitHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAorR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKK0dTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACitHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQAorR1NUX0JBU0VfTElCUyA9IEBHU1RfQkFTRV9MSUJTQAorR1NUX0NGTEFHUyA9IEBHU1RfQ0ZMQUdTQAorR1NUX0NIRUNLX0NGTEFHUyA9IEBHU1RfQ0hFQ0tfQ0ZMQUdTQAorR1NUX0NIRUNLX0xJQlMgPSBAR1NUX0NIRUNLX0xJQlNACitHU1RfQ09OVFJPTExFUl9DRkxBR1MgPSBAR1NUX0NPTlRST0xMRVJfQ0ZMQUdTQAorR1NUX0NPTlRST0xMRVJfTElCUyA9IEBHU1RfQ09OVFJPTExFUl9MSUJTQAorR1NUX0NVUlJFTlQgPSBAR1NUX0NVUlJFTlRACitHU1RfQ1hYRkxBR1MgPSBAR1NUX0NYWEZMQUdTQAorR1NUX0xFVkVMX0RFRkFVTFQgPSBAR1NUX0xFVkVMX0RFRkFVTFRACitHU1RfTElCUyA9IEBHU1RfTElCU0AKK0dTVF9MSUJWRVJTSU9OID0gQEdTVF9MSUJWRVJTSU9OQAorR1NUX0xJQl9MREZMQUdTID0gQEdTVF9MSUJfTERGTEFHU0AKK0dTVF9MSUNFTlNFID0gQEdTVF9MSUNFTlNFQAorR1NUX0xUX0xERkxBR1MgPSBAR1NUX0xUX0xERkxBR1NACitHU1RfTkVUX0NGTEFHUyA9IEBHU1RfTkVUX0NGTEFHU0AKK0dTVF9ORVRfTElCUyA9IEBHU1RfTkVUX0xJQlNACitHU1RfT0JKQ0ZMQUdTID0gQEdTVF9PQkpDRkxBR1NACitHU1RfT1BUSU9OX0NGTEFHUyA9IEBHU1RfT1BUSU9OX0NGTEFHU0AKK0dTVF9PUFRJT05fQ1hYRkxBR1MgPSBAR1NUX09QVElPTl9DWFhGTEFHU0AKK0dTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAorR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAorR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACitHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACitHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAorR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQAorR1NUX1BMVUdJTlNfQkFEX0NYWEZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DWFhGTEFHU0AKK0dTVF9QTFVHSU5TX0JBRF9PQkpDRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX09CSkNGTEFHU0AKK0dTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTQAorR1NUX1BMVUdJTlNfQkFTRV9ESVIgPSBAR1NUX1BMVUdJTlNfQkFTRV9ESVJACitHU1RfUExVR0lOU19CQVNFX0xJQlMgPSBAR1NUX1BMVUdJTlNfQkFTRV9MSUJTQAorR1NUX1BMVUdJTlNfRElSID0gQEdTVF9QTFVHSU5TX0RJUkAKK0dTVF9QTFVHSU5TX0dPT0RfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0dPT0RfQ0ZMQUdTQAorR1NUX1BMVUdJTlNfR09PRF9ESVIgPSBAR1NUX1BMVUdJTlNfR09PRF9ESVJACitHU1RfUExVR0lOU19HT09EX0xJQlMgPSBAR1NUX1BMVUdJTlNfR09PRF9MSUJTQAorR1NUX1BMVUdJTlNfTElCQVZfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0xJQkFWX0NGTEFHU0AKK0dTVF9QTFVHSU5TX0xJQkFWX0RJUiA9IEBHU1RfUExVR0lOU19MSUJBVl9ESVJACitHU1RfUExVR0lOU19MSUJBVl9MSUJTID0gQEdTVF9QTFVHSU5TX0xJQkFWX0xJQlNACitHU1RfUExVR0lOU19OT05QT1JURUQgPSBAR1NUX1BMVUdJTlNfTk9OUE9SVEVEQAorR1NUX1BMVUdJTlNfU0VMRUNURUQgPSBAR1NUX1BMVUdJTlNfU0VMRUNURURACitHU1RfUExVR0lOU19VR0xZX0NGTEFHUyA9IEBHU1RfUExVR0lOU19VR0xZX0NGTEFHU0AKK0dTVF9QTFVHSU5TX1VHTFlfRElSID0gQEdTVF9QTFVHSU5TX1VHTFlfRElSQAorR1NUX1BMVUdJTlNfVUdMWV9MSUJTID0gQEdTVF9QTFVHSU5TX1VHTFlfTElCU0AKK0dTVF9QTFVHSU5fTERGTEFHUyA9IEBHU1RfUExVR0lOX0xERkxBR1NACitHU1RfUExVR0lOX0xJQlRPT0xGTEFHUyA9IEBHU1RfUExVR0lOX0xJQlRPT0xGTEFHU0AKK0dTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKK0dTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACitHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKK0dUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAorR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACitHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQAorR1RLM19MSUJTID0gQEdUSzNfTElCU0AKK0dUSzNfV0FZTEFORF9DRkxBR1MgPSBAR1RLM19XQVlMQU5EX0NGTEFHU0AKK0dUSzNfV0FZTEFORF9MSUJTID0gQEdUSzNfV0FZTEFORF9MSUJTQAorR1RLM19YMTFfQ0ZMQUdTID0gQEdUSzNfWDExX0NGTEFHU0AKK0dUSzNfWDExX0xJQlMgPSBAR1RLM19YMTFfTElCU0AKK0dUS0RPQ19DSEVDSyA9IEBHVEtET0NfQ0hFQ0tACitHVEtET0NfREVQU19DRkxBR1MgPSBAR1RLRE9DX0RFUFNfQ0ZMQUdTQAorR1RLRE9DX0RFUFNfTElCUyA9IEBHVEtET0NfREVQU19MSUJTQAorR1RLRE9DX01LUERGID0gQEdUS0RPQ19NS1BERkAKK0dUS0RPQ19SRUJBU0UgPSBAR1RLRE9DX1JFQkFTRUAKK0dUS19CQVNFX0RJUiA9IEBHVEtfQkFTRV9ESVJACitHVEtfQ0ZMQUdTID0gQEdUS19DRkxBR1NACitHVEtfTElCUyA9IEBHVEtfTElCU0AKK0dUS19WRVJTSU9OID0gQEdUS19WRVJTSU9OQAorR19VREVWX0NGTEFHUyA9IEBHX1VERVZfQ0ZMQUdTQAorR19VREVWX0xJQlMgPSBAR19VREVWX0xJQlNACitIQVZFX0NMVVRURVIgPSBASEFWRV9DTFVUVEVSQAorSEFWRV9DTFVUVEVSX0dMWCA9IEBIQVZFX0NMVVRURVJfR0xYQAorSEFWRV9DTFVUVEVSX1gxMSA9IEBIQVZFX0NMVVRURVJfWDExQAorSEFWRV9DWFggPSBASEFWRV9DWFhACitIQVZFX0RJUkVDVDNEID0gQEhBVkVfRElSRUNUM0RACitIQVZFX0RJUkVDVFNPVU5EID0gQEhBVkVfRElSRUNUU09VTkRACitIQVZFX0RUUyA9IEBIQVZFX0RUU0AKK0hBVkVfRUdMID0gQEhBVkVfRUdMQAorSEFWRV9GQUFDID0gQEhBVkVfRkFBQ0AKK0hBVkVfRkFBRCA9IEBIQVZFX0ZBQURACitIQVZFX0ZMSVRFID0gQEhBVkVfRkxJVEVACitIQVZFX0dMID0gQEhBVkVfR0xACitIQVZFX0dMRVMyID0gQEhBVkVfR0xFUzJACitIQVZFX0dSQVBIRU5FID0gQEhBVkVfR1JBUEhFTkVACitIQVZFX0dTTSA9IEBIQVZFX0dTTUAKK0hBVkVfR1RLMyA9IEBIQVZFX0dUSzNACitIQVZFX0pQRUcgPSBASEFWRV9KUEVHQAorSEFWRV9OQVMgPSBASEFWRV9OQVNACitIQVZFX09QRU5KUEVHID0gQEhBVkVfT1BFTkpQRUdACitIQVZFX1BORyA9IEBIQVZFX1BOR0AKK0hBVkVfU1JUUCA9IEBIQVZFX1NSVFBACitIQVZFX1dBU0FQSSA9IEBIQVZFX1dBU0FQSUAKK0hBVkVfV0lMRE1JREkgPSBASEFWRV9XSUxETUlESUAKK0hBVkVfV0lOS1MgPSBASEFWRV9XSU5LU0AKK0hBVkVfV0lOU0NSRUVOQ0FQID0gQEhBVkVfV0lOU0NSRUVOQ0FQQAorSEFWRV9YMTEgPSBASEFWRV9YMTFACitIVE1MX0RJUiA9IEBIVE1MX0RJUkAKK0lOU1RBTEwgPSBASU5TVEFMTEAKK0lOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACitJTlNUQUxMX1BST0dSQU0gPSBASU5TVEFMTF9QUk9HUkFNQAorSU5TVEFMTF9TQ1JJUFQgPSBASU5TVEFMTF9TQ1JJUFRACitJTlNUQUxMX1NUUklQX1BST0dSQU0gPSBASU5TVEFMTF9TVFJJUF9QUk9HUkFNQAorSU5UTExJQlMgPSBASU5UTExJQlNACitJTlRMX01BQ09TWF9MSUJTID0gQElOVExfTUFDT1NYX0xJQlNACitJTlRST1NQRUNUSU9OX0NGTEFHUyA9IEBJTlRST1NQRUNUSU9OX0NGTEFHU0AKK0lOVFJPU1BFQ1RJT05fQ09NUElMRVIgPSBASU5UUk9TUEVDVElPTl9DT01QSUxFUkAKK0lOVFJPU1BFQ1RJT05fR0VORVJBVEUgPSBASU5UUk9TUEVDVElPTl9HRU5FUkFURUAKK0lOVFJPU1BFQ1RJT05fR0lSRElSID0gQElOVFJPU1BFQ1RJT05fR0lSRElSQAorSU5UUk9TUEVDVElPTl9JTklUID0gQElOVFJPU1BFQ1RJT05fSU5JVEAKK0lOVFJPU1BFQ1RJT05fTElCUyA9IEBJTlRST1NQRUNUSU9OX0xJQlNACitJTlRST1NQRUNUSU9OX01BS0VGSUxFID0gQElOVFJPU1BFQ1RJT05fTUFLRUZJTEVACitJTlRST1NQRUNUSU9OX1NDQU5ORVIgPSBASU5UUk9TUEVDVElPTl9TQ0FOTkVSQAorSU5UUk9TUEVDVElPTl9UWVBFTElCRElSID0gQElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUkAKK0pQRUdfTElCUyA9IEBKUEVHX0xJQlNACitLQVRFX0NGTEFHUyA9IEBLQVRFX0NGTEFHU0AKK0tBVEVfTElCUyA9IEBLQVRFX0xJQlNACitMRCA9IEBMREAKK0xERkxBR1MgPSBATERGTEFHU0AKK0xJQkRDMTM5NF9DRkxBR1MgPSBATElCREMxMzk0X0NGTEFHU0AKK0xJQkRDMTM5NF9MSUJTID0gQExJQkRDMTM5NF9MSUJTQAorTElCREUyNjVfQ0ZMQUdTID0gQExJQkRFMjY1X0NGTEFHU0AKK0xJQkRFMjY1X0xJQlMgPSBATElCREUyNjVfTElCU0AKK0xJQkRJUiA9IEBMSUJESVJACitMSUJHQ1JZUFRfQ0ZMQUdTID0gQExJQkdDUllQVF9DRkxBR1NACitMSUJHQ1JZUFRfQ09ORklHID0gQExJQkdDUllQVF9DT05GSUdACitMSUJHQ1JZUFRfTElCUyA9IEBMSUJHQ1JZUFRfTElCU0AKK0xJQklDT05WID0gQExJQklDT05WQAorTElCSU5UTCA9IEBMSUJJTlRMQAorTElCTSA9IEBMSUJNQAorTElCTU1TX0NGTEFHUyA9IEBMSUJNTVNfQ0ZMQUdTQAorTElCTU1TX0xJQlMgPSBATElCTU1TX0xJQlNACitMSUJPQkpTID0gQExJQk9CSlNACitMSUJQTkdfQ0ZMQUdTID0gQExJQlBOR19DRkxBR1NACitMSUJQTkdfTElCUyA9IEBMSUJQTkdfTElCU0AKK0xJQlMgPSBATElCU0AKK0xJQlRPT0wgPSBATElCVE9PTEAKK0xJQlVERVZfQ0ZMQUdTID0gQExJQlVERVZfQ0ZMQUdTQAorTElCVURFVl9MSUJTID0gQExJQlVERVZfTElCU0AKK0xJQlVTQl9DRkxBR1MgPSBATElCVVNCX0NGTEFHU0AKK0xJQlVTQl9MSUJTID0gQExJQlVTQl9MSUJTQAorTElCVklTVUFMX0NGTEFHUyA9IEBMSUJWSVNVQUxfQ0ZMQUdTQAorTElCVklTVUFMX0xJQlMgPSBATElCVklTVUFMX0xJQlNACitMSUJYTUwyX0NGTEFHUyA9IEBMSUJYTUwyX0NGTEFHU0AKK0xJQlhNTDJfTElCUyA9IEBMSUJYTUwyX0xJQlNACitMSVBPID0gQExJUE9ACitMTl9TID0gQExOX1NACitMT0NBTEVESVIgPSBATE9DQUxFRElSQAorTFJERl9DRkxBR1MgPSBATFJERl9DRkxBR1NACitMUkRGX0xJQlMgPSBATFJERl9MSUJTQAorTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAorTFRMSUJJTlRMID0gQExUTElCSU5UTEAKK0xUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACitNQUlOVCA9IEBNQUlOVEAKK01BS0VJTkZPID0gQE1BS0VJTkZPQAorTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQAorTUlNSUNfQ0ZMQUdTID0gQE1JTUlDX0NGTEFHU0AKK01JTUlDX0xJQlMgPSBATUlNSUNfTElCU0AKK01KUEVHX0NGTEFHUyA9IEBNSlBFR19DRkxBR1NACitNSlBFR19MSUJTID0gQE1KUEVHX0xJQlNACitNS0RJUl9QID0gQE1LRElSX1BACitNT0MgPSBATU9DQAorTU9EUExVR19DRkxBR1MgPSBATU9EUExVR19DRkxBR1NACitNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAorTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKK01QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKK01QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACitNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACitNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACitNU0dGTVQgPSBATVNHRk1UQAorTVNHRk1UXzAxNSA9IEBNU0dGTVRfMDE1QAorTVNHTUVSR0UgPSBATVNHTUVSR0VACitNVVNFUEFDS19MSUJTID0gQE1VU0VQQUNLX0xJQlNACitOQVNfQ0ZMQUdTID0gQE5BU19DRkxBR1NACitOQVNfTElCUyA9IEBOQVNfTElCU0AKK05FT05fQ0ZMQUdTID0gQE5FT05fQ0ZMQUdTQAorTkVPTl9MSUJTID0gQE5FT05fTElCU0AKK05FVFRMRV9DRkxBR1MgPSBATkVUVExFX0NGTEFHU0AKK05FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAorTk0gPSBATk1ACitOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKK09CSkMgPSBAT0JKQ0AKK09CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAorT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKK09CSkRVTVAgPSBAT0JKRFVNUEAKK09CSkVYVCA9IEBPQkpFWFRACitPRkFfQ0ZMQUdTID0gQE9GQV9DRkxBR1NACitPRkFfTElCUyA9IEBPRkFfTElCU0AKK09QRU5BTF9DRkxBR1MgPSBAT1BFTkFMX0NGTEFHU0AKK09QRU5BTF9MSUJTID0gQE9QRU5BTF9MSUJTQAorT1BFTkNWX0NGTEFHUyA9IEBPUEVOQ1ZfQ0ZMQUdTQAorT1BFTkNWX0xJQlMgPSBAT1BFTkNWX0xJQlNACitPUEVOQ1ZfUFJFRklYID0gQE9QRU5DVl9QUkVGSVhACitPUEVORVhSX0NGTEFHUyA9IEBPUEVORVhSX0NGTEFHU0AKK09QRU5FWFJfTElCUyA9IEBPUEVORVhSX0xJQlNACitPUEVOSDI2NF9DRkxBR1MgPSBAT1BFTkgyNjRfQ0ZMQUdTQAorT1BFTkgyNjRfTElCUyA9IEBPUEVOSDI2NF9MSUJTQAorT1BFTkpQRUdfQ0ZMQUdTID0gQE9QRU5KUEVHX0NGTEFHU0AKK09QRU5KUEVHX0xJQlMgPSBAT1BFTkpQRUdfTElCU0AKK09QRU5OSTJfQ0ZMQUdTID0gQE9QRU5OSTJfQ0ZMQUdTQAorT1BFTk5JMl9MSUJTID0gQE9QRU5OSTJfTElCU0AKK09QRU5TU0xfQ0ZMQUdTID0gQE9QRU5TU0xfQ0ZMQUdTQAorT1BFTlNTTF9MSUJTID0gQE9QRU5TU0xfTElCU0AKK09QVVNfQ0ZMQUdTID0gQE9QVVNfQ0ZMQUdTQAorT1BVU19MSUJTID0gQE9QVVNfTElCU0AKK09SQ0MgPSBAT1JDQ0AKK09SQ0NfRkxBR1MgPSBAT1JDQ19GTEFHU0AKK09SQ19DRkxBR1MgPSBAT1JDX0NGTEFHU0AKK09SQ19MSUJTID0gQE9SQ19MSUJTQAorT1RPT0wgPSBAT1RPT0xACitPVE9PTDY0ID0gQE9UT09MNjRACitQQUNLQUdFID0gQFBBQ0tBR0VACitQQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAKK1BBQ0tBR0VfTkFNRSA9IEBQQUNLQUdFX05BTUVACitQQUNLQUdFX1NUUklORyA9IEBQQUNLQUdFX1NUUklOR0AKK1BBQ0tBR0VfVEFSTkFNRSA9IEBQQUNLQUdFX1RBUk5BTUVACitQQUNLQUdFX1VSTCA9IEBQQUNLQUdFX1VSTEAKK1BBQ0tBR0VfVkVSU0lPTiA9IEBQQUNLQUdFX1ZFUlNJT05ACitQQUNLQUdFX1ZFUlNJT05fTUFKT1IgPSBAUEFDS0FHRV9WRVJTSU9OX01BSk9SQAorUEFDS0FHRV9WRVJTSU9OX01JQ1JPID0gQFBBQ0tBR0VfVkVSU0lPTl9NSUNST0AKK1BBQ0tBR0VfVkVSU0lPTl9NSU5PUiA9IEBQQUNLQUdFX1ZFUlNJT05fTUlOT1JACitQQUNLQUdFX1ZFUlNJT05fTkFOTyA9IEBQQUNLQUdFX1ZFUlNJT05fTkFOT0AKK1BBQ0tBR0VfVkVSU0lPTl9SRUxFQVNFID0gQFBBQ0tBR0VfVkVSU0lPTl9SRUxFQVNFQAorUEFUSF9TRVBBUkFUT1IgPSBAUEFUSF9TRVBBUkFUT1JACitQS0dfQ09ORklHID0gQFBLR19DT05GSUdACitQTFVHSU5ESVIgPSBAUExVR0lORElSQAorUE9TVUIgPSBAUE9TVUJACitQUk9GSUxFX0NGTEFHUyA9IEBQUk9GSUxFX0NGTEFHU0AKK1BUSFJFQURfQ0MgPSBAUFRIUkVBRF9DQ0AKK1BUSFJFQURfQ0ZMQUdTID0gQFBUSFJFQURfQ0ZMQUdTQAorUFRIUkVBRF9MSUJTID0gQFBUSFJFQURfTElCU0AKK1BWUl9DRkxBR1MgPSBAUFZSX0NGTEFHU0AKK1BWUl9MSUJTID0gQFBWUl9MSUJTQAorUFlUSE9OID0gQFBZVEhPTkAKK1BZVEhPTl9FWEVDX1BSRUZJWCA9IEBQWVRIT05fRVhFQ19QUkVGSVhACitQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAorUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAorUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACitRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAorUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACitRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKK1FUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACitRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACitRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKK1JBTkxJQiA9IEBSQU5MSUJACitSQ0MgPSBAUkNDQAorUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACitSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAorUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACitSVE1QX0xJQlMgPSBAUlRNUF9MSUJTQAorU0JDX0NGTEFHUyA9IEBTQkNfQ0ZMQUdTQAorU0JDX0xJQlMgPSBAU0JDX0xJQlNACitTQ0hST19DRkxBR1MgPSBAU0NIUk9fQ0ZMQUdTQAorU0NIUk9fTElCUyA9IEBTQ0hST19MSUJTQAorU0RMX0NGTEFHUyA9IEBTRExfQ0ZMQUdTQAorU0RMX0NMVVRURVIgPSBAU0RMX0NMVVRURVJACitTRExfQ09ORklHID0gQFNETF9DT05GSUdACitTRExfTElCUyA9IEBTRExfTElCU0AKK1NFRCA9IEBTRURACitTRVRfTUFLRSA9IEBTRVRfTUFLRUAKK1NIRUxMID0gQFNIRUxMQAorU0hNX0xJQlMgPSBAU0hNX0xJQlNACitTTFYyX0NGTEFHUyA9IEBTTFYyX0NGTEFHU0AKK1NMVjJfTElCUyA9IEBTTFYyX0xJQlNACitTTkRGSUxFX0NGTEFHUyA9IEBTTkRGSUxFX0NGTEFHU0AKK1NOREZJTEVfTElCUyA9IEBTTkRGSUxFX0xJQlNACitTTkRJT19MSUJTID0gQFNORElPX0xJQlNACitTT1VORFRPVUNIX0NGTEFHUyA9IEBTT1VORFRPVUNIX0NGTEFHU0AKK1NPVU5EVE9VQ0hfTElCUyA9IEBTT1VORFRPVUNIX0xJQlNACitTUEFORFNQX0NGTEFHUyA9IEBTUEFORFNQX0NGTEFHU0AKK1NQQU5EU1BfTElCUyA9IEBTUEFORFNQX0xJQlNACitTUENfTElCUyA9IEBTUENfTElCU0AKK1NSVFBfQ0ZMQUdTID0gQFNSVFBfQ0ZMQUdTQAorU1JUUF9MSUJTID0gQFNSVFBfTElCU0AKK1NTSDJfQ0ZMQUdTID0gQFNTSDJfQ0ZMQUdTQAorU1NIMl9MSUJTID0gQFNTSDJfTElCU0AKK1NUUklQID0gQFNUUklQQAorVEVMRVRFWFRERUNfQ0ZMQUdTID0gQFRFTEVURVhUREVDX0NGTEFHU0AKK1RFTEVURVhUREVDX0xJQlMgPSBAVEVMRVRFWFRERUNfTElCU0AKK1RJR0VSX0NGTEFHUyA9IEBUSUdFUl9DRkxBR1NACitUSUdFUl9MSUJTID0gQFRJR0VSX0xJQlNACitUSU1JRElUWV9DRkxBR1MgPSBAVElNSURJVFlfQ0ZMQUdTQAorVElNSURJVFlfTElCUyA9IEBUSU1JRElUWV9MSUJTQAorVUlDID0gQFVJQ0AKK1VTRV9HTEVTMiA9IEBVU0VfR0xFUzJACitVU0VfTkxTID0gQFVTRV9OTFNACitVU0VfT1BFTkdMID0gQFVTRV9PUEVOR0xACitWQUxHUklORF9DRkxBR1MgPSBAVkFMR1JJTkRfQ0ZMQUdTQAorVkFMR1JJTkRfTElCUyA9IEBWQUxHUklORF9MSUJTQAorVkFMR1JJTkRfUEFUSCA9IEBWQUxHUklORF9QQVRIQAorVkRQQVVfQ0ZMQUdTID0gQFZEUEFVX0NGTEFHU0AKK1ZEUEFVX0xJQlMgPSBAVkRQQVVfTElCU0AKK1ZFUlNJT04gPSBAVkVSU0lPTkAKK1ZPQUFDRU5DX0NGTEFHUyA9IEBWT0FBQ0VOQ19DRkxBR1NACitWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACitWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKK1ZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKK1dBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAorV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAorV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACitXQVNBUElfTElCUyA9IEBXQVNBUElfTElCU0AKK1dBWUxBTkRfQ0ZMQUdTID0gQFdBWUxBTkRfQ0ZMQUdTQAorV0FZTEFORF9FR0xfQ0ZMQUdTID0gQFdBWUxBTkRfRUdMX0NGTEFHU0AKK1dBWUxBTkRfRUdMX0xJQlMgPSBAV0FZTEFORF9FR0xfTElCU0AKK1dBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACitXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKK1dFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACitXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAorV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAorV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQAorV0lOU0NSRUVOQ0FQX0xJQlMgPSBAV0lOU0NSRUVOQ0FQX0xJQlNACitXSU5TT0NLMl9MSUJTID0gQFdJTlNPQ0syX0xJQlNACitYMTFfQ0ZMQUdTID0gQFgxMV9DRkxBR1NACitYMTFfTElCUyA9IEBYMTFfTElCU0AKK1gyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAorWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAorWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACitYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAorWEdFVFRFWFQgPSBAWEdFVFRFWFRACitYR0VUVEVYVF8wMTUgPSBAWEdFVFRFWFRfMDE1QAorWEdFVFRFWFRfRVhUUkFfT1BUSU9OUyA9IEBYR0VUVEVYVF9FWFRSQV9PUFRJT05TQAorWFZJRF9MSUJTID0gQFhWSURfTElCU0AKK1hfQ0ZMQUdTID0gQFhfQ0ZMQUdTQAorWF9MSUJTID0gQFhfTElCU0AKK1pCQVJfQ0ZMQUdTID0gQFpCQVJfQ0ZMQUdTQAorWkJBUl9MSUJTID0gQFpCQVJfTElCU0AKK2Fic19idWlsZGRpciA9IEBhYnNfYnVpbGRkaXJACithYnNfc3JjZGlyID0gQGFic19zcmNkaXJACithYnNfdG9wX2J1aWxkZGlyID0gQGFic190b3BfYnVpbGRkaXJACithYnNfdG9wX3NyY2RpciA9IEBhYnNfdG9wX3NyY2RpckAKK2FjX2N0X0FSID0gQGFjX2N0X0FSQAorYWNfY3RfQ0MgPSBAYWNfY3RfQ0NACithY19jdF9DWFggPSBAYWNfY3RfQ1hYQAorYWNfY3RfRFVNUEJJTiA9IEBhY19jdF9EVU1QQklOQAorYWNfY3RfT0JKQyA9IEBhY19jdF9PQkpDQAorYW1fX2luY2x1ZGUgPSBAYW1fX2luY2x1ZGVACithbV9fbGVhZGluZ19kb3QgPSBAYW1fX2xlYWRpbmdfZG90QAorYW1fX3F1b3RlID0gQGFtX19xdW90ZUAKK2FtX190YXIgPSBAYW1fX3RhckAKK2FtX191bnRhciA9IEBhbV9fdW50YXJACitheF9wdGhyZWFkX2NvbmZpZyA9IEBheF9wdGhyZWFkX2NvbmZpZ0AKK2JpbmRpciA9IEBiaW5kaXJACitidWlsZCA9IEBidWlsZEAKK2J1aWxkX2FsaWFzID0gQGJ1aWxkX2FsaWFzQAorYnVpbGRfY3B1ID0gQGJ1aWxkX2NwdUAKK2J1aWxkX29zID0gQGJ1aWxkX29zQAorYnVpbGRfdmVuZG9yID0gQGJ1aWxkX3ZlbmRvckAKK2J1aWxkZGlyID0gQGJ1aWxkZGlyQAorZGF0YWRpciA9IEBkYXRhZGlyQAorZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACitkb2NkaXIgPSBAZG9jZGlyQAorZHZpZGlyID0gQGR2aWRpckAKK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAoraG9zdCA9IEBob3N0QAoraG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAoraG9zdF9jcHUgPSBAaG9zdF9jcHVACitob3N0X29zID0gQGhvc3Rfb3NACitob3N0X3ZlbmRvciA9IEBob3N0X3ZlbmRvckAKK2h0bWxkaXIgPSBAaHRtbGRpckAKK2luY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKK2luZm9kaXIgPSBAaW5mb2RpckAKK2luc3RhbGxfc2ggPSBAaW5zdGFsbF9zaEAKK2xpYmRpciA9IEBsaWJkaXJACitsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACitsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAorbG9jYWxzdGF0ZWRpciA9IEBsb2NhbHN0YXRlZGlyQAorbWFuZGlyID0gQG1hbmRpckAKK21rZGlyX3AgPSBAbWtkaXJfcEAKK29sZGluY2x1ZGVkaXIgPSBAb2xkaW5jbHVkZWRpckAKK3BkZmRpciA9IEBwZGZkaXJACitwa2dweWV4ZWNkaXIgPSBAcGtncHlleGVjZGlyQAorcGtncHl0aG9uZGlyID0gQHBrZ3B5dGhvbmRpckAKK3BsdWdpbmRpciA9IEBwbHVnaW5kaXJACitwcmVmaXggPSBAcHJlZml4QAorcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAorcHNkaXIgPSBAcHNkaXJACitweWV4ZWNkaXIgPSBAcHlleGVjZGlyQAorcHl0aG9uZGlyID0gQHB5dGhvbmRpckAKK3J1bnN0YXRlZGlyID0gQHJ1bnN0YXRlZGlyQAorc2JpbmRpciA9IEBzYmluZGlyQAorc2hhcmVkc3RhdGVkaXIgPSBAc2hhcmVkc3RhdGVkaXJACitzcmNkaXIgPSBAc3JjZGlyQAorc3lzY29uZmRpciA9IEBzeXNjb25mZGlyQAordGFyZ2V0ID0gQHRhcmdldEAKK3RhcmdldF9hbGlhcyA9IEB0YXJnZXRfYWxpYXNACit0YXJnZXRfY3B1ID0gQHRhcmdldF9jcHVACit0YXJnZXRfb3MgPSBAdGFyZ2V0X29zQAordGFyZ2V0X3ZlbmRvciA9IEB0YXJnZXRfdmVuZG9yQAordG9wX2J1aWxkX3ByZWZpeCA9IEB0b3BfYnVpbGRfcHJlZml4QAordG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK3dheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R2dWxrYW4ubGEKK1NVQkRJUlMgPSAkKGFtX19hcHBlbmRfMSkKK0RJU1RfU1VCRElSUyA9IHhjYgorRElTVENMRUFORklMRVMgPSB2a2NvbmZpZy5oCitsaWJnc3R2dWxrYW5fbGFfU09VUkNFUyA9IFwKKwlnc3R2dWxrYW4uYyBcCisJdmtkZXZpY2UuYyBcCisJdmtkaXNwbGF5LmMgXAorCXZrZXJyb3IuYyBcCisJdmtidWZmZXJtZW1vcnkuYyBcCisJdmtpbWFnZW1lbW9yeS5jIFwKKwl2a2J1ZmZlcnBvb2wuYyBcCisJdmtpbnN0YW5jZS5jIFwKKwl2a21lbW9yeS5jIFwKKwl2a3F1ZXVlLmMgXAorCXZrc2luay5jIFwKKwl2a3N3YXBwZXIuYyBcCisJdmt1cGxvYWQuYyBcCisJdmt1dGlscy5jIFwKKwl2a3dpbmRvdy5jCisKK25vaW5zdF9IRUFERVJTID0gXAorCXZrLmggXAorCXZrX2Z3ZC5oIFwKKwl2a2RldmljZS5oIFwKKwl2a2Rpc3BsYXkuaCBcCisJdmtlcnJvci5oIFwKKwl2a2J1ZmZlcm1lbW9yeS5oIFwKKwl2a2ltYWdlbWVtb3J5LmggXAorCXZrYnVmZmVycG9vbC5oIFwKKwl2a2luc3RhbmNlLmggXAorCXZrbWVtb3J5LmggXAorCXZrcXVldWUuaCBcCisJdmtzaW5rLmggXAorCXZrc3dhcHBlci5oIFwKKwl2a3VwbG9hZC5oIFwKKwl2a3V0aWxzLmggXAorCXZrdXRpbHNfcHJpdmF0ZS5oIFwKKwl2a3dpbmRvdy5oCisKK2xpYmdzdHZ1bGthbl9sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChWVUxLQU5fQ0ZMQUdTKQorCitsaWJnc3R2dWxrYW5fbGFfTElCQUREID0gJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAorCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pICQoVlVMS0FOX0xJQlMpICQoYW1fX2FwcGVuZF8yKQorbGliZ3N0dnVsa2FuX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQorYWxsOiBhbGwtcmVjdXJzaXZlCisKKy5TVUZGSVhFUzoKKy5TVUZGSVhFUzogLmMgLmxvIC5vIC5vYmoKKyQoc3JjZGlyKS9NYWtlZmlsZS5pbjogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKHNyY2RpcikvTWFrZWZpbGUuYW0gICQoYW1fX2NvbmZpZ3VyZV9kZXBzKQorCUBmb3IgZGVwIGluICQ/OyBkbyBcCisJICBjYXNlICckKGFtX19jb25maWd1cmVfZGVwcyknIGluIFwKKwkgICAgKiQkZGVwKikgXAorCSAgICAgICggY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoICkgXAorCSAgICAgICAgJiYgeyBpZiB0ZXN0IC1mICRAOyB0aGVuIGV4aXQgMDsgZWxzZSBicmVhazsgZmk7IH07IFwKKwkgICAgICBleGl0IDE7OyBcCisJICBlc2FjOyBcCisJZG9uZTsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGV4dC92dWxrYW4vTWFrZWZpbGUnOyBcCisJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAorCSAgJChBVVRPTUFLRSkgLS1nbnUgZXh0L3Z1bGthbi9NYWtlZmlsZQorTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cworCUBjYXNlICckPycgaW4gXAorCSAgKmNvbmZpZy5zdGF0dXMqKSBcCisJICAgIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaDs7IFwKKwkgICopIFwKKwkgICAgZWNobyAnIGNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRAICQoYW1fX2RlcGZpbGVzX21heWJlKSc7IFwKKwkgICAgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpOzsgXAorCWVzYWM7CisKKyQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzOiAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZSAkKENPTkZJR19TVEFUVVNfREVQRU5ERU5DSUVTKQorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorCiskKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZTogQE1BSU5UQUlORVJfTU9ERV9UUlVFQCAkKGFtX19jb25maWd1cmVfZGVwcykKKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKKyQoQUNMT0NBTF9NNCk6IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChhbV9fYWNsb2NhbF9tNF9kZXBzKQorCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAorJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKKworaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzogJChwbHVnaW5fTFRMSUJSQVJJRVMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKKwlsaXN0Mj07IGZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gXAorCSAgICBsaXN0Mj0iJCRsaXN0MiAkJHAiOyBcCisJICBlbHNlIDo7IGZpOyBcCisJZG9uZTsgXAorCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgXAorCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAorCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQocGx1Z2luZGlyKSIgfHwgZXhpdCAxOyBcCisJICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAorCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBcCisJfQorCit1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVM6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChwbHVnaW5kaXIpIiB8fCBsaXN0PTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgJChhbV9fc3RyaXBfZGlyKSBcCisJICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmJyI7IFwKKwkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiI7IFwKKwlkb25lCisKK2NsZWFuLXBsdWdpbkxUTElCUkFSSUVTOgorCS10ZXN0IC16ICIkKHBsdWdpbl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQocGx1Z2luX0xUTElCUkFSSUVTKQorCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyBcCisJbG9jcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IFwKKwkgICAgICBzZWQgJ3N8XlteL10qJCR8Lnw7IHN8L1teL10qJCR8fDsgc3wkJHwvc29fbG9jYXRpb25zfCcgfCBcCisJICAgICAgc29ydCAtdWA7IFwKKwl0ZXN0IC16ICIkJGxvY3MiIHx8IHsgXAorCSAgZWNobyBybSAtZiAkJHtsb2NzfTsgXAorCSAgcm0gLWYgJCR7bG9jc307IFwKKwl9CisKK2xpYmdzdHZ1bGthbi5sYTogJChsaWJnc3R2dWxrYW5fbGFfT0JKRUNUUykgJChsaWJnc3R2dWxrYW5fbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdHZ1bGthbl9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0dnVsa2FuX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3R2dWxrYW5fbGFfT0JKRUNUUykgJChsaWJnc3R2dWxrYW5fbGFfTElCQUREKSAkKExJQlMpCisKK21vc3RseWNsZWFuLWNvbXBpbGU6CisJLXJtIC1mICouJChPQkpFWFQpCisKK2Rpc3RjbGVhbi1jb21waWxlOgorCS1ybSAtZiAqLnRhYi5jCisKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVycG9vbC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2RldmljZS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtlcnJvci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2ltYWdlbWVtb3J5LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZraW5zdGFuY2UuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmttZW1vcnkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtxdWV1ZS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3NpbmsuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrdXBsb2FkLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrdXRpbHMuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt3aW5kb3cuUGxvQGFtX19xdW90ZUAKKworLmMubzoKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgJDwgJiZcCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKGFtX19tdikgJCRkZXBiYXNlLlRwbyAkJGRlcGJhc2UuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSckPCcgb2JqZWN0PSckQCcgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDT01QSUxFKSAtYyAtbyAkQCAkPAorCisuYy5vYmo6CitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwub2JqJCR8fCdgO1wKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQ09NUElMRSkgLU1UICRAIC1NRCAtTVAgLU1GICQkZGVwYmFzZS5UcG8gLWMgLW8gJEAgYCQoQ1lHUEFUSF9XKSAnJDwnYCAmJlwKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoYW1fX212KSAkJGRlcGJhc2UuVHBvICQkZGVwYmFzZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENPTVBJTEUpIC1jIC1vICRAIGAkKENZR1BBVEhfVykgJyQ8J2AKKworLmMubG86CitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubG8kJHx8J2A7XAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChMVENPTVBJTEUpIC1NVCAkQCAtTUQgLU1QIC1NRiAkJGRlcGJhc2UuVHBvIC1jIC1vICRAICQ8ICYmXAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChhbV9fbXYpICQkZGVwYmFzZS5UcG8gJCRkZXBiYXNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9JyQ8JyBvYmplY3Q9JyRAJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8CisKK2xpYmdzdHZ1bGthbl9sYS1nc3R2dWxrYW4ubG86IGdzdHZ1bGthbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLWdzdHZ1bGthbi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLWdzdHZ1bGthbi5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLWdzdHZ1bGthbi5sbyBgdGVzdCAtZiAnZ3N0dnVsa2FuLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHZ1bGthbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLWdzdHZ1bGthbi5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3R2dWxrYW4uYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtZ3N0dnVsa2FuLmxvIGB0ZXN0IC1mICdnc3R2dWxrYW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dnVsa2FuLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLmxvOiB2a2RldmljZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2RldmljZS5sbyBgdGVzdCAtZiAndmtkZXZpY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtkZXZpY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrZGV2aWNlLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrZGV2aWNlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtkZXZpY2UubG8gYHRlc3QgLWYgJ3ZrZGV2aWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrZGV2aWNlLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrZGlzcGxheS5sbzogdmtkaXNwbGF5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmtkaXNwbGF5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtkaXNwbGF5LlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtkaXNwbGF5LmxvIGB0ZXN0IC1mICd2a2Rpc3BsYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtkaXNwbGF5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtkaXNwbGF5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrZGlzcGxheS5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2Rpc3BsYXkubG8gYHRlc3QgLWYgJ3ZrZGlzcGxheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2Rpc3BsYXkuYworCitsaWJnc3R2dWxrYW5fbGEtdmtlcnJvci5sbzogdmtlcnJvci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrZXJyb3IubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2Vycm9yLlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtlcnJvci5sbyBgdGVzdCAtZiAndmtlcnJvci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2Vycm9yLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2Vycm9yLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrZXJyb3IuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmtlcnJvci5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a2Vycm9yLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtlcnJvci5sbyBgdGVzdCAtZiAndmtlcnJvci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2Vycm9yLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LmxvOiB2a2J1ZmZlcm1lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcm1lbW9yeS5sbyBgdGVzdCAtZiAndmtidWZmZXJtZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtidWZmZXJtZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrYnVmZmVybWVtb3J5LmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVybWVtb3J5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJtZW1vcnkubG8gYHRlc3QgLWYgJ3ZrYnVmZmVybWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrYnVmZmVybWVtb3J5LmMKKworbGliZ3N0dnVsa2FuX2xhLXZraW1hZ2VtZW1vcnkubG86IHZraW1hZ2VtZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a2ltYWdlbWVtb3J5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtpbWFnZW1lbW9yeS5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZraW1hZ2VtZW1vcnkubG8gYHRlc3QgLWYgJ3ZraW1hZ2VtZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtpbWFnZW1lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtpbWFnZW1lbW9yeS5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2ltYWdlbWVtb3J5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZraW1hZ2VtZW1vcnkuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtpbWFnZW1lbW9yeS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZraW1hZ2VtZW1vcnkubG8gYHRlc3QgLWYgJ3ZraW1hZ2VtZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtpbWFnZW1lbW9yeS5jCisKK2xpYmdzdHZ1bGthbl9sYS12a2J1ZmZlcnBvb2wubG86IHZrYnVmZmVycG9vbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVycG9vbC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVycG9vbC5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVycG9vbC5sbyBgdGVzdCAtZiAndmtidWZmZXJwb29sLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrYnVmZmVycG9vbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrYnVmZmVycG9vbC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a2J1ZmZlcnBvb2wuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtidWZmZXJwb29sLmxvIGB0ZXN0IC1mICd2a2J1ZmZlcnBvb2wuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtidWZmZXJwb29sLmMKKworbGliZ3N0dnVsa2FuX2xhLXZraW5zdGFuY2UubG86IHZraW5zdGFuY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a2luc3RhbmNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZraW5zdGFuY2UubG8gYHRlc3QgLWYgJ3ZraW5zdGFuY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtpbnN0YW5jZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a2luc3RhbmNlLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZraW5zdGFuY2UuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtpbnN0YW5jZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZraW5zdGFuY2UubG8gYHRlc3QgLWYgJ3ZraW5zdGFuY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtpbnN0YW5jZS5jCisKK2xpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5sbzogdmttZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmttZW1vcnkubG8gYHRlc3QgLWYgJ3ZrbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrbWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a21lbW9yeS5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a21lbW9yeS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrbWVtb3J5LmxvIGB0ZXN0IC1mICd2a21lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a21lbW9yeS5jCisKK2xpYmdzdHZ1bGthbl9sYS12a3F1ZXVlLmxvOiB2a3F1ZXVlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R2dWxrYW5fbGEtdmtxdWV1ZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrcXVldWUuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a3F1ZXVlLmxvIGB0ZXN0IC1mICd2a3F1ZXVlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrcXVldWUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrcXVldWUuVHBvICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtxdWV1ZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a3F1ZXVlLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrcXVldWUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2dWxrYW5fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a3F1ZXVlLmxvIGB0ZXN0IC1mICd2a3F1ZXVlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrcXVldWUuYworCitsaWJnc3R2dWxrYW5fbGEtdmtzaW5rLmxvOiB2a3NpbmsuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a3NpbmsubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3NpbmsuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a3NpbmsubG8gYHRlc3QgLWYgJ3Zrc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a3NpbmsuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrc2luay5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3NpbmsuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndmtzaW5rLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrc2luay5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrc2luay5sbyBgdGVzdCAtZiAndmtzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrc2luay5jCisKK2xpYmdzdHZ1bGthbl9sYS12a3N3YXBwZXIubG86IHZrc3dhcHBlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrc3dhcHBlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrc3dhcHBlci5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrc3dhcHBlci5sbyBgdGVzdCAtZiAndmtzd2FwcGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrc3dhcHBlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrc3dhcHBlci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a3N3YXBwZXIuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmtzd2FwcGVyLmxvIGB0ZXN0IC1mICd2a3N3YXBwZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmtzd2FwcGVyLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrdXBsb2FkLmxvOiB2a3VwbG9hZC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX2xhLXZrdXBsb2FkLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl9sYS12a3VwbG9hZC5sbyBgdGVzdCAtZiAndmt1cGxvYWQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmt1cGxvYWQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrdXBsb2FkLlRwbyAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrdXBsb2FkLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrdXBsb2FkLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX2xhLXZrdXBsb2FkLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dnVsa2FuX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZ1bGthbl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmt1cGxvYWQubG8gYHRlc3QgLWYgJ3ZrdXBsb2FkLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrdXBsb2FkLmMKKworbGliZ3N0dnVsa2FuX2xhLXZrdXRpbHMubG86IHZrdXRpbHMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a3V0aWxzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt1dGlscy5UcG8gLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrdXRpbHMubG8gYHRlc3QgLWYgJ3ZrdXRpbHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmt1dGlscy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5fbGEtdmt1dGlscy5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3V0aWxzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZrdXRpbHMuYycgb2JqZWN0PSdsaWJnc3R2dWxrYW5fbGEtdmt1dGlscy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrdXRpbHMubG8gYHRlc3QgLWYgJ3ZrdXRpbHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdmt1dGlscy5jCisKK2xpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5sbzogdmt3aW5kb3cuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5fbGEtdmt3aW5kb3cubG8gYHRlc3QgLWYgJ3Zrd2luZG93LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrd2luZG93LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a3dpbmRvdy5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl9sYS12a3dpbmRvdy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHZ1bGthbl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5fbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0dnVsa2FuX2xhLXZrd2luZG93LmxvIGB0ZXN0IC1mICd2a3dpbmRvdy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a3dpbmRvdy5jCisKK21vc3RseWNsZWFuLWxpYnRvb2w6CisJLXJtIC1mICoubG8KKworY2xlYW4tbGlidG9vbDoKKwktcm0gLXJmIC5saWJzIF9saWJzCisKKyMgVGhpcyBkaXJlY3RvcnkncyBzdWJkaXJlY3RvcmllcyBhcmUgbW9zdGx5IGluZGVwZW5kZW50OyB5b3UgY2FuIGNkCisjIGludG8gdGhlbSBhbmQgcnVuICdtYWtlJyB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhpcyBNYWtlZmlsZS4KKyMgVG8gY2hhbmdlIHRoZSB2YWx1ZXMgb2YgJ21ha2UnIHZhcmlhYmxlczogaW5zdGVhZCBvZiBlZGl0aW5nIE1ha2VmaWxlcywKKyMgKDEpIGlmIHRoZSB2YXJpYWJsZSBpcyBzZXQgaW4gJ2NvbmZpZy5zdGF0dXMnLCBlZGl0ICdjb25maWcuc3RhdHVzJworIyAgICAgKHdoaWNoIHdpbGwgY2F1c2UgdGhlIE1ha2VmaWxlcyB0byBiZSByZWdlbmVyYXRlZCB3aGVuIHlvdSBydW4gJ21ha2UnKTsKKyMgKDIpIG90aGVyd2lzZSwgcGFzcyB0aGUgZGVzaXJlZCB2YWx1ZXMgb24gdGhlICdtYWtlJyBjb21tYW5kIGxpbmUuCiskKGFtX19yZWN1cnNpdmVfdGFyZ2V0cyk6CisJQGZhaWw9OyBcCisJaWYgJChhbV9fbWFrZV9rZWVwZ29pbmcpOyB0aGVuIFwKKwkgIGZhaWxjb209J2ZhaWw9eWVzJzsgXAorCWVsc2UgXAorCSAgZmFpbGNvbT0nZXhpdCAxJzsgXAorCWZpOyBcCisJZG90X3NlZW49bm87IFwKKwl0YXJnZXQ9YGVjaG8gJEAgfCBzZWQgcy8tcmVjdXJzaXZlLy9gOyBcCisJY2FzZSAiJEAiIGluIFwKKwkgIGRpc3RjbGVhbi0qIHwgbWFpbnRhaW5lci1jbGVhbi0qKSBsaXN0PSckKERJU1RfU1VCRElSUyknIDs7IFwKKwkgICopIGxpc3Q9JyQoU1VCRElSUyknIDs7IFwKKwllc2FjOyBcCisJZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGVjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9ICIuIjsgdGhlbiBcCisJICAgIGRvdF9zZWVuPXllczsgXAorCSAgICBsb2NhbF90YXJnZXQ9IiQkdGFyZ2V0LWFtIjsgXAorCSAgZWxzZSBcCisJICAgIGxvY2FsX3RhcmdldD0iJCR0YXJnZXQiOyBcCisJICBmaTsgXAorCSAgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSAkJGxvY2FsX3RhcmdldCkgXAorCSAgfHwgZXZhbCAkJGZhaWxjb207IFwKKwlkb25lOyBcCisJaWYgdGVzdCAiJCRkb3Rfc2VlbiIgPSAibm8iOyB0aGVuIFwKKwkgICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpICIkJHRhcmdldC1hbSIgfHwgZXhpdCAxOyBcCisJZmk7IHRlc3QgLXogIiQkZmFpbCIKKworSUQ6ICQoYW1fX3RhZ2dlZF9maWxlcykKKwkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBta2lkIC1mSUQgJCR1bmlxdWUKK3RhZ3M6IHRhZ3MtcmVjdXJzaXZlCitUQUdTOiB0YWdzCisKK3RhZ3MtYW06ICQoVEFHU19ERVBFTkRFTkNJRVMpICQoYW1fX3RhZ2dlZF9maWxlcykKKwlzZXQgeDsgXAorCWhlcmU9YHB3ZGA7IFwKKwlpZiAoJChFVEFHUykgLS1ldGFncy1pbmNsdWRlIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKKwkgIGluY2x1ZGVfb3B0aW9uPS0tZXRhZ3MtaW5jbHVkZTsgXAorCSAgZW1wdHlfZml4PS47IFwKKwllbHNlIFwKKwkgIGluY2x1ZGVfb3B0aW9uPS0taW5jbHVkZTsgXAorCSAgZW1wdHlfZml4PTsgXAorCWZpOyBcCisJbGlzdD0nJChTVUJESVJTKSc7IGZvciBzdWJkaXIgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0ICIkJHN1YmRpciIgPSAuOyB0aGVuIDo7IGVsc2UgXAorCSAgICB0ZXN0ICEgLWYgJCRzdWJkaXIvVEFHUyB8fCBcCisJICAgICAgc2V0ICIkJEAiICIkJGluY2x1ZGVfb3B0aW9uPSQkaGVyZS8kJHN1YmRpci9UQUdTIjsgXAorCSAgZmk7IFwKKwlkb25lOyBcCisJJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgXAorCXNoaWZ0OyBcCisJaWYgdGVzdCAteiAiJChFVEFHU19BUkdTKSQkKiQkdW5pcXVlIjsgdGhlbiA6OyBlbHNlIFwKKwkgIHRlc3QgLW4gIiQkdW5pcXVlIiB8fCB1bmlxdWU9JCRlbXB0eV9maXg7IFwKKwkgIGlmIHRlc3QgJCQjIC1ndCAwOyB0aGVuIFwKKwkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAorCSAgICAgICIkJEAiICQkdW5pcXVlOyBcCisJICBlbHNlIFwKKwkgICAgJChFVEFHUykgJChFVEFHU0ZMQUdTKSAkKEFNX0VUQUdTRkxBR1MpICQoRVRBR1NfQVJHUykgXAorCSAgICAgICQkdW5pcXVlOyBcCisJICBmaTsgXAorCWZpCitjdGFnczogY3RhZ3MtcmVjdXJzaXZlCisKK0NUQUdTOiBjdGFncworY3RhZ3MtYW06ICQoVEFHU19ERVBFTkRFTkNJRVMpICQoYW1fX3RhZ2dlZF9maWxlcykKKwkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBcCisJdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdW5pcXVlIiBcCisJICB8fCAkKENUQUdTKSAkKENUQUdTRkxBR1MpICQoQU1fQ1RBR1NGTEFHUykgJChDVEFHU19BUkdTKSBcCisJICAgICAkJHVuaXF1ZQorCitHVEFHUzoKKwloZXJlPWAkKGFtX19jZCkgJCh0b3BfYnVpbGRkaXIpICYmIHB3ZGAgXAorCSAgJiYgJChhbV9fY2QpICQodG9wX3NyY2RpcikgXAorCSAgJiYgZ3RhZ3MgLWkgJChHVEFHU19BUkdTKSAiJCRoZXJlIgorY3Njb3BlbGlzdDogY3Njb3BlbGlzdC1yZWN1cnNpdmUKKworY3Njb3BlbGlzdC1hbTogJChhbV9fdGFnZ2VkX2ZpbGVzKQorCWxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCisJY2FzZSAiJChzcmNkaXIpIiBpbiBcCisJICBbXFwvXSogfCA/OltcXC9dKikgc2Rpcj0iJChzcmNkaXIpIiA7OyBcCisJICAqKSBzZGlyPSQoc3ViZGlyKS8kKHNyY2RpcikgOzsgXAorCWVzYWM7IFwKKwlmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gXAorCSAgICBlY2hvICIkKHN1YmRpcikvJCRpIjsgXAorCSAgZWxzZSBcCisJICAgIGVjaG8gIiQkc2Rpci8kJGkiOyBcCisJICBmaTsgXAorCWRvbmUgPj4gJCh0b3BfYnVpbGRkaXIpL2NzY29wZS5maWxlcworCitkaXN0Y2xlYW4tdGFnczoKKwktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncworCitkaXN0ZGlyOiAkKERJU1RGSUxFUykKKwlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCisJdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorCWxpc3Q9JyQoRElTVEZJTEVTKSc7IFwKKwkgIGRpc3RfZmlsZXM9YGZvciBmaWxlIGluICQkbGlzdDsgZG8gZWNobyAkJGZpbGU7IGRvbmUgfCBcCisJICBzZWQgLWUgInN8XiQkc3JjZGlyc3RyaXAvfHw7dCIgXAorCSAgICAgIC1lICJzfF4kJHRvcHNyY2RpcnN0cmlwL3wkKHRvcF9idWlsZGRpcikvfDt0ImA7IFwKKwljYXNlICQkZGlzdF9maWxlcyBpbiBcCisJICAqLyopICQoTUtESVJfUCkgYGVjaG8gIiQkZGlzdF9maWxlcyIgfCBcCisJCQkgICBzZWQgJy9cLy8hZDtzfF58JChkaXN0ZGlyKS98O3MsL1teL10qJCQsLCcgfCBcCisJCQkgICBzb3J0IC11YCA7OyBcCisJZXNhYzsgXAorCWZvciBmaWxlIGluICQkZGlzdF9maWxlczsgZG8gXAorCSAgaWYgdGVzdCAtZiAkJGZpbGUgfHwgdGVzdCAtZCAkJGZpbGU7IHRoZW4gZD0uOyBlbHNlIGQ9JChzcmNkaXIpOyBmaTsgXAorCSAgaWYgdGVzdCAtZCAkJGQvJCRmaWxlOyB0aGVuIFwKKwkgICAgZGlyPWBlY2hvICIvJCRmaWxlIiB8IHNlZCAtZSAncywvW14vXSokJCwsJ2A7IFwKKwkgICAgaWYgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJGZpbGUiOyB0aGVuIFwKKwkgICAgICBmaW5kICIkKGRpc3RkaXIpLyQkZmlsZSIgLXR5cGUgZCAhIC1wZXJtIC03MDAgLWV4ZWMgY2htb2QgdStyd3gge30gXDs7IFwKKwkgICAgZmk7IFwKKwkgICAgaWYgdGVzdCAtZCAkKHNyY2RpcikvJCRmaWxlICYmIHRlc3QgJCRkICE9ICQoc3JjZGlyKTsgdGhlbiBcCisJICAgICAgY3AgLWZwUiAkKHNyY2RpcikvJCRmaWxlICIkKGRpc3RkaXIpJCRkaXIiIHx8IGV4aXQgMTsgXAorCSAgICAgIGZpbmQgIiQoZGlzdGRpcikvJCRmaWxlIiAtdHlwZSBkICEgLXBlcm0gLTcwMCAtZXhlYyBjaG1vZCB1K3J3eCB7fSBcOzsgXAorCSAgICBmaTsgXAorCSAgICBjcCAtZnBSICQkZC8kJGZpbGUgIiQoZGlzdGRpcikkJGRpciIgfHwgZXhpdCAxOyBcCisJICBlbHNlIFwKKwkgICAgdGVzdCAtZiAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgY3AgLXAgJCRkLyQkZmlsZSAiJChkaXN0ZGlyKS8kJGZpbGUiIFwKKwkgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCWRvbmUKKwlAbGlzdD0nJChESVNUX1NVQkRJUlMpJzsgZm9yIHN1YmRpciBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgIiQkc3ViZGlyIiA9IC47IHRoZW4gOjsgZWxzZSBcCisJICAgICQoYW1fX21ha2VfZHJ5cnVuKSBcCisJICAgICAgfHwgdGVzdCAtZCAiJChkaXN0ZGlyKS8kJHN1YmRpciIgXAorCSAgICAgIHx8ICQoTUtESVJfUCkgIiQoZGlzdGRpcikvJCRzdWJkaXIiIFwKKwkgICAgICB8fCBleGl0IDE7IFwKKwkgICAgZGlyMT0kJHN1YmRpcjsgZGlyMj0iJChkaXN0ZGlyKS8kJHN1YmRpciI7IFwKKwkgICAgJChhbV9fcmVsYXRpdml6ZSk7IFwKKwkgICAgbmV3X2Rpc3RkaXI9JCRyZWxkaXI7IFwKKwkgICAgZGlyMT0kJHN1YmRpcjsgZGlyMj0iJCh0b3BfZGlzdGRpcikiOyBcCisJICAgICQoYW1fX3JlbGF0aXZpemUpOyBcCisJICAgIG5ld190b3BfZGlzdGRpcj0kJHJlbGRpcjsgXAorCSAgICBlY2hvICIgKGNkICQkc3ViZGlyICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIHRvcF9kaXN0ZGlyPSIkJG5ld190b3BfZGlzdGRpciIgZGlzdGRpcj0iJCRuZXdfZGlzdGRpciIgXFwiOyBcCisJICAgIGVjaG8gIiAgICAgYW1fX3JlbW92ZV9kaXN0ZGlyPTogYW1fX3NraXBfbGVuZ3RoX2NoZWNrPTogYW1fX3NraXBfbW9kZV9maXg9OiBkaXN0ZGlyKSI7IFwKKwkgICAgKCQoYW1fX2NkKSAkJHN1YmRpciAmJiBcCisJICAgICAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgXAorCSAgICAgICAgdG9wX2Rpc3RkaXI9IiQkbmV3X3RvcF9kaXN0ZGlyIiBcCisJICAgICAgICBkaXN0ZGlyPSIkJG5ld19kaXN0ZGlyIiBcCisJCWFtX19yZW1vdmVfZGlzdGRpcj06IFwKKwkJYW1fX3NraXBfbGVuZ3RoX2NoZWNrPTogXAorCQlhbV9fc2tpcF9tb2RlX2ZpeD06IFwKKwkgICAgICAgIGRpc3RkaXIpIFwKKwkgICAgICB8fCBleGl0IDE7IFwKKwkgIGZpOyBcCisJZG9uZQorY2hlY2stYW06IGFsbC1hbQorY2hlY2s6IGNoZWNrLXJlY3Vyc2l2ZQorYWxsLWFtOiBNYWtlZmlsZSAkKExUTElCUkFSSUVTKSAkKEhFQURFUlMpCitpbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtcmVjdXJzaXZlCitpbnN0YWxsZGlycy1hbToKKwlmb3IgZGlyIGluICIkKERFU1RESVIpJChwbHVnaW5kaXIpIjsgZG8gXAorCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQkZGlyIjsgXAorCWRvbmUKK2luc3RhbGw6IGluc3RhbGwtcmVjdXJzaXZlCitpbnN0YWxsLWV4ZWM6IGluc3RhbGwtZXhlYy1yZWN1cnNpdmUKK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLXJlY3Vyc2l2ZQordW5pbnN0YWxsOiB1bmluc3RhbGwtcmVjdXJzaXZlCisKK2luc3RhbGwtYW06IGFsbC1hbQorCUAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1kYXRhLWFtCisKK2luc3RhbGxjaGVjazogaW5zdGFsbGNoZWNrLXJlY3Vyc2l2ZQoraW5zdGFsbC1zdHJpcDoKKwlpZiB0ZXN0IC16ICckKFNUUklQKSc7IHRoZW4gXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICAgaW5zdGFsbDsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgSU5TVEFMTF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIFwKKwkgICAgaW5zdGFsbF9zaF9QUk9HUkFNPSIkKElOU1RBTExfU1RSSVBfUFJPR1JBTSkiIElOU1RBTExfU1RSSVBfRkxBRz0tcyBcCisJICAgICJJTlNUQUxMX1BST0dSQU1fRU5WPVNUUklQUFJPRz0nJChTVFJJUCknIiBpbnN0YWxsOyBcCisJZmkKK21vc3RseWNsZWFuLWdlbmVyaWM6CisKK2NsZWFuLWdlbmVyaWM6CisKK2Rpc3RjbGVhbi1nZW5lcmljOgorCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9GSUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQorCS10ZXN0IC4gPSAiJChzcmNkaXIpIiB8fCB0ZXN0IC16ICIkKENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTKQorCS10ZXN0IC16ICIkKERJU1RDTEVBTkZJTEVTKSIgfHwgcm0gLWYgJChESVNUQ0xFQU5GSUxFUykKKworbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljOgorCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZSIKKwlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCitjbGVhbjogY2xlYW4tcmVjdXJzaXZlCisKK2NsZWFuLWFtOiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgXAorCW1vc3RseWNsZWFuLWFtCisKK2Rpc3RjbGVhbjogZGlzdGNsZWFuLXJlY3Vyc2l2ZQorCS1ybSAtcmYgLi8kKERFUERJUikKKwktcm0gLWYgTWFrZWZpbGUKK2Rpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAorCWRpc3RjbGVhbi10YWdzCisKK2R2aTogZHZpLXJlY3Vyc2l2ZQorCitkdmktYW06CisKK2h0bWw6IGh0bWwtcmVjdXJzaXZlCisKK2h0bWwtYW06CisKK2luZm86IGluZm8tcmVjdXJzaXZlCisKK2luZm8tYW06CisKK2luc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworCitpbnN0YWxsLWR2aTogaW5zdGFsbC1kdmktcmVjdXJzaXZlCisKK2luc3RhbGwtZHZpLWFtOgorCitpbnN0YWxsLWV4ZWMtYW06CisKK2luc3RhbGwtaHRtbDogaW5zdGFsbC1odG1sLXJlY3Vyc2l2ZQorCitpbnN0YWxsLWh0bWwtYW06CisKK2luc3RhbGwtaW5mbzogaW5zdGFsbC1pbmZvLXJlY3Vyc2l2ZQorCitpbnN0YWxsLWluZm8tYW06CisKK2luc3RhbGwtbWFuOgorCitpbnN0YWxsLXBkZjogaW5zdGFsbC1wZGYtcmVjdXJzaXZlCisKK2luc3RhbGwtcGRmLWFtOgorCitpbnN0YWxsLXBzOiBpbnN0YWxsLXBzLXJlY3Vyc2l2ZQorCitpbnN0YWxsLXBzLWFtOgorCitpbnN0YWxsY2hlY2stYW06CisKK21haW50YWluZXItY2xlYW46IG1haW50YWluZXItY2xlYW4tcmVjdXJzaXZlCisJLXJtIC1yZiAuLyQoREVQRElSKQorCS1ybSAtZiBNYWtlZmlsZQorbWFpbnRhaW5lci1jbGVhbi1hbTogZGlzdGNsZWFuLWFtIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYworCittb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4tcmVjdXJzaXZlCisKK21vc3RseWNsZWFuLWFtOiBtb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgXAorCW1vc3RseWNsZWFuLWxpYnRvb2wKKworcGRmOiBwZGYtcmVjdXJzaXZlCisKK3BkZi1hbToKKworcHM6IHBzLXJlY3Vyc2l2ZQorCitwcy1hbToKKwordW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKKworLk1BS0U6ICQoYW1fX3JlY3Vyc2l2ZV90YXJnZXRzKSBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKKworLlBIT05ZOiAkKGFtX19yZWN1cnNpdmVfdGFyZ2V0cykgQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxsLWFtIGNoZWNrIFwKKwljaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYnRvb2wgXAorCWNsZWFuLXBsdWdpbkxUTElCUkFSSUVTIGNzY29wZWxpc3QtYW0gY3RhZ3MgY3RhZ3MtYW0gZGlzdGNsZWFuIFwKKwlkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBkaXN0Y2xlYW4tbGlidG9vbCBcCisJZGlzdGNsZWFuLXRhZ3MgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgaHRtbC1hbSBpbmZvIGluZm8tYW0gXAorCWluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIFwKKwlpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBcCisJaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gXAorCWluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIGluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMgXAorCWluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBcCisJaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIGluc3RhbGxkaXJzLWFtIG1haW50YWluZXItY2xlYW4gXAorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIFwKKwltb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIHBkZi1hbSBwcyBwcy1hbSBcCisJdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gXAorCXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworCisuUFJFQ0lPVVM6IE1ha2VmaWxlCisKKworIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4KKyMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgorLk5PRVhQT1JUOgpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi9nc3R2dWxrYW4uYyBiL2V4dC92dWxrYW4vZ3N0dnVsa2FuLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE1ODg5NQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vZ3N0dnVsa2FuLmMKQEAgLTAsMCArMSw2OCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046cGx1Z2luLXZ1bGthbgorICoKKyAqIENyb3NzLXBsYXRmb3JtIFZ1bGthbiBwbHVnaW4uCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidmtzaW5rLmgiCisjaW5jbHVkZSAidmt1cGxvYWQuaCIKKworI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWDExCisjaW5jbHVkZSA8WDExL1hsaWIuaD4KKyNlbmRpZgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfZ3N0Z2xfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CisKK3N0YXRpYyBnYm9vbGVhbgorcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKK3sKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9nbF9nc3RnbF9kZWJ1ZywgImdzdHZ1bGthbiIsIDAsICJnc3R2dWxrYW4iKTsKKworI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWDExCisgIGlmIChnX2dldGVudiAoIkdTVF9WVUxLQU5fWElOSVRUSFJFQURTIikpCisgICAgWEluaXRUaHJlYWRzICgpOworI2VuZGlmCisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAidnVsa2Fuc2luayIsCisgICAgICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfVlVMS0FOX1NJTkspKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAidnVsa2FudXBsb2FkIiwKKyAgICAgICAgICBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9WVUxLQU5fVVBMT0FEKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCisgICAgR1NUX1ZFUlNJT05fTUlOT1IsCisgICAgdnVsa2FuLAorICAgICJWdWxrYW4gcGx1Z2luIiwKKyAgICBwbHVnaW5faW5pdCwgVkVSU0lPTiwgR1NUX0xJQ0VOU0UsIEdTVF9QQUNLQUdFX05BTUUsIEdTVF9QQUNLQUdFX09SSUdJTikKZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmsuaCBiL2V4dC92dWxrYW4vdmsuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMjI1ZWQzCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92ay5oCkBAIC0wLDAgKzEsNDEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfSF8KKyNkZWZpbmUgX1ZLX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKKyNpbmNsdWRlICJ2a2FwaS5oIgorCisjaW5jbHVkZSAidmtlcnJvci5oIgorI2luY2x1ZGUgInZraW5zdGFuY2UuaCIKKyNpbmNsdWRlICJ2a2RldmljZS5oIgorI2luY2x1ZGUgInZrcXVldWUuaCIKKyNpbmNsdWRlICJ2a2Rpc3BsYXkuaCIKKyNpbmNsdWRlICJ2a3dpbmRvdy5oIgorI2luY2x1ZGUgInZrc3dhcHBlci5oIgorI2luY2x1ZGUgInZrbWVtb3J5LmgiCisjaW5jbHVkZSAidmtidWZmZXJtZW1vcnkuaCIKKyNpbmNsdWRlICJ2a2ltYWdlbWVtb3J5LmgiCisjaW5jbHVkZSAidmtidWZmZXJwb29sLmgiCisjaW5jbHVkZSAidmt1dGlscy5oIgorCisjZW5kaWYgLyogX1ZLX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrX2Z3ZC5oIGIvZXh0L3Z1bGthbi92a19md2QuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDZmMDI0Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a19md2QuaApAQCAtMCwwICsxLDcxIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX1ZLX0ZXRF9IXworI2RlZmluZSBfVktfRldEX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkluc3RhbmNlIEdzdFZ1bGthbkluc3RhbmNlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkluc3RhbmNlQ2xhc3MgR3N0VnVsa2FuSW5zdGFuY2VDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5JbnN0YW5jZVByaXZhdGUgR3N0VnVsa2FuSW5zdGFuY2VQcml2YXRlOworCit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuRGV2aWNlIEdzdFZ1bGthbkRldmljZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5EZXZpY2VDbGFzcyBHc3RWdWxrYW5EZXZpY2VDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5EZXZpY2VQcml2YXRlIEdzdFZ1bGthbkRldmljZVByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5RdWV1ZSBHc3RWdWxrYW5RdWV1ZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5RdWV1ZUNsYXNzIEdzdFZ1bGthblF1ZXVlQ2xhc3M7CisKK3R5cGVkZWYgZW51bSBfR3N0VnVsa2FuRGlzcGxheVR5cGUgR3N0VnVsa2FuRGlzcGxheVR5cGU7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5EaXNwbGF5IEdzdFZ1bGthbkRpc3BsYXk7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuRGlzcGxheUNsYXNzIEdzdFZ1bGthbkRpc3BsYXlDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5EaXNwbGF5UHJpdmF0ZSBHc3RWdWxrYW5EaXNwbGF5UHJpdmF0ZTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbldpbmRvdyBHc3RWdWxrYW5XaW5kb3c7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuV2luZG93Q2xhc3MgR3N0VnVsa2FuV2luZG93Q2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuV2luZG93UHJpdmF0ZSBHc3RWdWxrYW5XaW5kb3dQcml2YXRlOworCit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuU3dhcHBlciBHc3RWdWxrYW5Td2FwcGVyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthblN3YXBwZXJDbGFzcyBHc3RWdWxrYW5Td2FwcGVyQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuU3dhcHBlclByaXZhdGUgR3N0VnVsa2FuU3dhcHBlclByaXZhdGU7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5NZW1vcnkgR3N0VnVsa2FuTWVtb3J5OwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbk1lbW9yeUFsbG9jYXRvciBHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3I7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yQ2xhc3MgR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJNZW1vcnkgR3N0VnVsa2FuQnVmZmVyTWVtb3J5OwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvciBHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3I7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yQ2xhc3MgR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5JbWFnZU1lbW9yeSBHc3RWdWxrYW5JbWFnZU1lbW9yeTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvciBHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvckNsYXNzIEdzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJQb29sIEdzdFZ1bGthbkJ1ZmZlclBvb2w7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuQnVmZmVyUG9vbENsYXNzIEdzdFZ1bGthbkJ1ZmZlclBvb2xDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJQb29sUHJpdmF0ZSBHc3RWdWxrYW5CdWZmZXJQb29sUHJpdmF0ZTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9WS19GV0RfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuYyBiL2V4dC92dWxrYW4vdmtidWZmZXJtZW1vcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTRkMTU5Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2J1ZmZlcm1lbW9yeS5jCkBAIC0wLDAgKzEsNDMyIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInZrYnVmZmVybWVtb3J5LmgiCisKKy8qKgorICogU0VDVElPTjp2a2J1ZmZlcm1lbW9yeQorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBtZW1vcnkgc3ViY2xhc3MgZm9yIFZ1bGthbiBidWZmZXIgbWVtb3J5CisgKiBAc2VlX2Fsc286ICNHc3RNZW1vcnksICNHc3RBbGxvY2F0b3IKKyAqCisgKiBHc3RWdWxrYW5CdWZmZXJNZW1vcnkgaXMgYSAjR3N0TWVtb3J5IHN1YmNsYXNzIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGUKKyAqIG1hcHBpbmcgb2YgVnVsa2FuIGRldmljZSBtZW1vcnkuCisgKi8KKworI2RlZmluZSBHU1RfQ0FUX0RFRlVBTFQgR1NUX0NBVF9WVUxLQU5fQlVGRkVSX01FTU9SWQorR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZVQUxUKTsKKworc3RhdGljIEdzdEFsbG9jYXRvciAqX3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvcjsKKworI2RlZmluZSBHU1RfVktfQlVGRkVSX0NSRUFURV9JTkZPX0lOSVQgR1NUX1ZLX1NUUlVDVF84CisjZGVmaW5lIEdTVF9WS19CVUZGRVJfQ1JFQVRFX0lORk8oaW5mbywgcE5leHQsIGZsYWdzLCBzaXplLCB1c2FnZSwgc2hhcmluZ01vZGUsIHF1ZXVlRmFtaWx5SW5kZXhDb3VudCwgcFF1ZXVlRmFtaWx5SW5kaWNlcyApIFwKKyAgR19TVE1UX1NUQVJUIHsgXAorICAgIFZrQnVmZmVyQ3JlYXRlSW5mbyB0bXAgPSBHU1RfVktfQlVGRkVSX0NSRUFURV9JTkZPX0lOSVQgKFZLX1NUUlVDVFVSRV9UWVBFX0JVRkZFUl9DUkVBVEVfSU5GTywgcE5leHQsIGZsYWdzLCBzaXplLCB1c2FnZSwgc2hhcmluZ01vZGUsIHF1ZXVlRmFtaWx5SW5kZXhDb3VudCwgcFF1ZXVlRmFtaWx5SW5kaWNlcyk7IFwKKyAgICAoaW5mbykgPSB0bXA7IFwKKyAgfSBHX1NUTVRfRU5ECisKK3N0YXRpYyBnYm9vbGVhbgorX2NyZWF0ZV9pbmZvX2Zyb21fYXJncyAoVmtCdWZmZXJDcmVhdGVJbmZvICogaW5mbywgZ3NpemUgc2l6ZSwKKyAgICBWa0J1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UpCit7CisgIC8qIEZJWE1FOiB2YWxpZGF0ZSB0aGVzZSAqLworICBHU1RfVktfQlVGRkVSX0NSRUFURV9JTkZPICgqaW5mbywgTlVMTCwgMCwgc2l6ZSwgdXNhZ2UsCisgICAgICBWS19TSEFSSU5HX01PREVfRVhDTFVTSVZFLCAwLCBOVUxMKTsKKworICByZXR1cm4gVFJVRTsKK30KKworI2RlZmluZSBHU1RfVktfQlVGRkVSX1ZJRVdfQ1JFQVRFX0lORk9fSU5JVCBHU1RfVktfU1RSVUNUXzcKKyNkZWZpbmUgR1NUX1ZLX0JVRkZFUl9WSUVXX0NSRUFURV9JTkZPKGluZm8sIHBOZXh0LCBmbGFncywgYnVmZmVyLCBmb3JtYXQsIG9mZnNldCwgcmFuZ2UpIFwKKyAgR19TVE1UX1NUQVJUIHsgXAorICAgIFZrQnVmZmVyVmlld0NyZWF0ZUluZm8gdG1wID0gR1NUX1ZLX0JVRkZFUl9WSUVXX0NSRUFURV9JTkZPX0lOSVQgKFZLX1NUUlVDVFVSRV9UWVBFX0JVRkZFUl9WSUVXX0NSRUFURV9JTkZPLCBwTmV4dCwgZmxhZ3MsIGJ1ZmZlciwgZm9ybWF0LCBvZmZzZXQsIHJhbmdlKTsgXAorICAgIChpbmZvKSA9IHRtcDsgXAorICB9IEdfU1RNVF9FTkQKKworc3RhdGljIGdib29sZWFuCitfY3JlYXRlX3ZpZXdfZnJvbV9hcmdzIChWa0J1ZmZlclZpZXdDcmVhdGVJbmZvICogaW5mbywgVmtCdWZmZXIgYnVmZmVyLAorICAgIFZrRm9ybWF0IGZvcm1hdCwgZ3NpemUgb2Zmc2V0LCBnc2l6ZSByYW5nZSkKK3sKKyAgLyogRklYTUU6IHZhbGlkYXRlIHRoZXNlICovCisgIGdfYXNzZXJ0IChmb3JtYXQgIT0gVktfRk9STUFUX1VOREVGSU5FRCk7CisKKyAgR1NUX1ZLX0JVRkZFUl9WSUVXX0NSRUFURV9JTkZPICgqaW5mbywgTlVMTCwgMCwgYnVmZmVyLCBmb3JtYXQsIG9mZnNldCwKKyAgICAgIHJhbmdlKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK192a19idWZmZXJfbWVtX2luaXQgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqIG1lbSwgR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdE1lbW9yeSAqIHBhcmVudCwgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBWa0J1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgZ3NpemUgc2l6ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgZ3NpemUgYWxpZ24gPSBnc3RfbWVtb3J5X2FsaWdubWVudCwgb2Zmc2V0ID0gMCwgbWF4c2l6ZSA9IHNpemU7CisgIEdzdE1lbW9yeUZsYWdzIGZsYWdzID0gMDsKKworICBpZiAocGFyYW1zKSB7CisgICAgZmxhZ3MgPSBwYXJhbXMtPmZsYWdzOworICAgIGFsaWduIHw9IHBhcmFtcy0+YWxpZ247CisgICAgb2Zmc2V0ID0gcGFyYW1zLT5wcmVmaXg7CisgICAgbWF4c2l6ZSArPSBwYXJhbXMtPnByZWZpeCArIHBhcmFtcy0+cGFkZGluZyArIGFsaWduOworICB9CisKKyAgZ3N0X21lbW9yeV9pbml0IChHU1RfTUVNT1JZX0NBU1QgKG1lbSksIGZsYWdzLCBhbGxvY2F0b3IsIHBhcmVudCwgbWF4c2l6ZSwKKyAgICAgIGFsaWduLCBvZmZzZXQsIHNpemUpOworCisgIG1lbS0+ZGV2aWNlID0gZ3N0X29iamVjdF9yZWYgKGRldmljZSk7CisgIG1lbS0+d3JhcHBlZCA9IEZBTFNFOworICBtZW0tPm5vdGlmeSA9IG5vdGlmeTsKKyAgbWVtLT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisKKyAgZ19tdXRleF9pbml0ICgmbWVtLT5sb2NrKTsKKworICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZLAorICAgICAgIm5ldyBWdWxrYW4gQnVmZmVyIG1lbW9yeTolcCBzaXplOiUiIEdfR1NJWkVfRk9STUFULCBtZW0sIG1heHNpemUpOworfQorCitzdGF0aWMgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICoKK192a19idWZmZXJfbWVtX25ld19hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBwYXJlbnQsCisgICAgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBWa0Zvcm1hdCBmb3JtYXQsIGdzaXplIHNpemUsCisgICAgVmtCdWZmZXJVc2FnZUZsYWdzIHVzYWdlLCBWa01lbW9yeVByb3BlcnR5RmxhZ3MgbWVtX3Byb3BfZmxhZ3MsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqbWVtID0gTlVMTDsKKyAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXMgPSB7IDAsIH07CisgIFZrQnVmZmVyQ3JlYXRlSW5mbyBidWZmZXJfaW5mbzsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgIGd1aW50MzIgdHlwZV9pZHg7CisgIFZrQnVmZmVyIGJ1ZmZlcjsKKyAgVmtSZXN1bHQgZXJyOworCisgIGlmICghX2NyZWF0ZV9pbmZvX2Zyb21fYXJncyAoJmJ1ZmZlcl9pbmZvLCBzaXplLCB1c2FnZSkpIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZLCAiSW5jb3JyZWN0IGJ1ZmZlciBwYXJhbWV0ZXJzIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGVyciA9IHZrQ3JlYXRlQnVmZmVyIChkZXZpY2UtPmRldmljZSwgJmJ1ZmZlcl9pbmZvLCBOVUxMLCAmYnVmZmVyKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a0NyZWF0ZUJ1ZmZlciIpIDwgMCkKKyAgICBnb3RvIHZrX2Vycm9yOworCisgIG1lbSA9IGdfbmV3MCAoR3N0VnVsa2FuQnVmZmVyTWVtb3J5LCAxKTsKKyAgdmtHZXRCdWZmZXJNZW1vcnlSZXF1aXJlbWVudHMgKGRldmljZS0+ZGV2aWNlLCBidWZmZXIsICZtZW0tPnJlcXVpcmVtZW50cyk7CisKKyAgLyogWFhYOiBhc3N1bWVzIGFsaWdubWVudCBpcyBhIHBvd2VyIG9mIDIgKi8KKyAgcGFyYW1zLmFsaWduID0gbWVtLT5yZXF1aXJlbWVudHMuYWxpZ25tZW50IC0gMTsKKyAgX3ZrX2J1ZmZlcl9tZW1faW5pdCAobWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgZGV2aWNlLCB1c2FnZSwgJnBhcmFtcywKKyAgICAgIG1lbS0+cmVxdWlyZW1lbnRzLnNpemUsIHVzZXJfZGF0YSwgbm90aWZ5KTsKKyAgbWVtLT5idWZmZXIgPSBidWZmZXI7CisKKyAgaWYgKCFnc3RfdnVsa2FuX21lbW9yeV9maW5kX21lbW9yeV90eXBlX2luZGV4X3dpdGhfdHlwZV9wcm9wZXJ0aWVzIChkZXZpY2UsCisgICAgICAgICAgbWVtLT5yZXF1aXJlbWVudHMubWVtb3J5VHlwZUJpdHMsIG1lbV9wcm9wX2ZsYWdzLCAmdHlwZV9pZHgpKQorICAgIGdvdG8gZXJyb3I7CisKKyAgbWVtLT52a19tZW0gPSAoR3N0VnVsa2FuTWVtb3J5ICopIGdzdF92dWxrYW5fbWVtb3J5X2FsbG9jIChkZXZpY2UsIHR5cGVfaWR4LAorICAgICAgJnBhcmFtcywgbWVtLT5yZXF1aXJlbWVudHMuc2l6ZSwgbWVtX3Byb3BfZmxhZ3MpOworICBpZiAoIW1lbS0+dmtfbWVtKQorICAgIGdvdG8gZXJyb3I7CisKKyAgZXJyID0gdmtCaW5kQnVmZmVyTWVtb3J5IChkZXZpY2UtPmRldmljZSwgYnVmZmVyLCBtZW0tPnZrX21lbS0+bWVtX3B0ciwgMCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLCAidmtCaW5kQnVmZmVyTWVtb3J5IikgPCAwKQorICAgIGdvdG8gdmtfZXJyb3I7CisKKyAgaWYgKHVzYWdlICYgKFZLX0JVRkZFUl9VU0FHRV9VTklGT1JNX1RFWEVMX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9TVE9SQUdFX1RFWEVMX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9VTklGT1JNX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9TVE9SQUdFX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9JTkRFWF9CVUZGRVJfQklUIHwKKyAgICAgICAgICBWS19CVUZGRVJfVVNBR0VfVkVSVEVYX0JVRkZFUl9CSVQgfAorICAgICAgICAgIFZLX0JVRkZFUl9VU0FHRV9JTkRJUkVDVF9CVUZGRVJfQklUKSkgeworICAgIFZrQnVmZmVyVmlld0NyZWF0ZUluZm8gdmlld19pbmZvOworCisgICAgX2NyZWF0ZV92aWV3X2Zyb21fYXJncyAoJnZpZXdfaW5mbywgbWVtLT5idWZmZXIsIGZvcm1hdCwgMCwKKyAgICAgICAgbWVtLT5yZXF1aXJlbWVudHMuc2l6ZSk7CisgICAgZXJyID0gdmtDcmVhdGVCdWZmZXJWaWV3IChkZXZpY2UtPmRldmljZSwgJnZpZXdfaW5mbywgTlVMTCwgJm1lbS0+dmlldyk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a0NyZWF0ZUJ1ZmZlclZpZXciKSA8IDApCisgICAgICBnb3RvIHZrX2Vycm9yOworICB9CisKKyAgcmV0dXJuIG1lbTsKKwordmtfZXJyb3I6CisgIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZLAorICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIGJ1ZmZlciBtZW1vcnkgJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKK2Vycm9yOgorICB7CisgICAgaWYgKG1lbSkKKyAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgbWVtKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorfQorCitzdGF0aWMgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICoKK192a19idWZmZXJfbWVtX25ld193cmFwcGVkIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIHBhcmVudCwKKyAgICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrQnVmZmVyIGJ1ZmZlciwgVmtGb3JtYXQgZm9ybWF0LAorICAgIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqbWVtID0gZ19uZXcwIChHc3RWdWxrYW5CdWZmZXJNZW1vcnksIDEpOworICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgfTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgIFZrUmVzdWx0IGVycjsKKworICBtZW0tPmJ1ZmZlciA9IGJ1ZmZlcjsKKworICB2a0dldEJ1ZmZlck1lbW9yeVJlcXVpcmVtZW50cyAoZGV2aWNlLT5kZXZpY2UsIG1lbS0+YnVmZmVyLAorICAgICAgJm1lbS0+cmVxdWlyZW1lbnRzKTsKKworICBwYXJhbXMuYWxpZ24gPSBtZW0tPnJlcXVpcmVtZW50cy5hbGlnbm1lbnQgLSAxOworICBwYXJhbXMuZmxhZ3MgPSBHU1RfTUVNT1JZX0ZMQUdfTk9UX01BUFBBQkxFOworICBfdmtfYnVmZmVyX21lbV9pbml0IChtZW0sIGFsbG9jYXRvciwgcGFyZW50LCBkZXZpY2UsIHVzYWdlLCAmcGFyYW1zLAorICAgICAgbWVtLT5yZXF1aXJlbWVudHMuc2l6ZSwgdXNlcl9kYXRhLCBub3RpZnkpOworICBtZW0tPndyYXBwZWQgPSBUUlVFOworCisgIC8qIFhYWDogd2UgZG9uJ3QgYWN0dWFsbHkgaWYgdGhlIGJ1ZmZlciBoYXMgYSB2a0RldmljZU1lbW9yeSBib3VuZCBzbworICAgKiB0aGlzIG1heSBmYWlsICovCisgIGlmICh1c2FnZSAmIChWS19CVUZGRVJfVVNBR0VfVU5JRk9STV9URVhFTF9CVUZGRVJfQklUIHwKKyAgICAgICAgICBWS19CVUZGRVJfVVNBR0VfU1RPUkFHRV9URVhFTF9CVUZGRVJfQklUIHwKKyAgICAgICAgICBWS19CVUZGRVJfVVNBR0VfVU5JRk9STV9CVUZGRVJfQklUIHwKKyAgICAgICAgICBWS19CVUZGRVJfVVNBR0VfU1RPUkFHRV9CVUZGRVJfQklUIHwKKyAgICAgICAgICBWS19CVUZGRVJfVVNBR0VfSU5ERVhfQlVGRkVSX0JJVCB8CisgICAgICAgICAgVktfQlVGRkVSX1VTQUdFX1ZFUlRFWF9CVUZGRVJfQklUIHwKKyAgICAgICAgICBWS19CVUZGRVJfVVNBR0VfSU5ESVJFQ1RfQlVGRkVSX0JJVCkpIHsKKyAgICBWa0J1ZmZlclZpZXdDcmVhdGVJbmZvIHZpZXdfaW5mbzsKKworICAgIF9jcmVhdGVfdmlld19mcm9tX2FyZ3MgKCZ2aWV3X2luZm8sIG1lbS0+YnVmZmVyLCBmb3JtYXQsIDAsCisgICAgICAgIG1lbS0+cmVxdWlyZW1lbnRzLnNpemUpOworICAgIGVyciA9IHZrQ3JlYXRlQnVmZmVyVmlldyAoZGV2aWNlLT5kZXZpY2UsICZ2aWV3X2luZm8sIE5VTEwsICZtZW0tPnZpZXcpOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLCAidmtDcmVhdGVCdWZmZXJWaWV3IikgPCAwKQorICAgICAgZ290byB2a19lcnJvcjsKKyAgfQorCisgIHJldHVybiBtZW07CisKK3ZrX2Vycm9yOgorICB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9WVUxLQU5fQlVGRkVSX01FTU9SWSwKKyAgICAgICAgIkZhaWxlZCB0byBhbGxvY2F0ZSBidWZmZXIgbWVtb3J5ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCitlcnJvcjoKKyAgeworICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgbWVtKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorfQorCitzdGF0aWMgZ3BvaW50ZXIKK192a19idWZmZXJfbWVtX21hcF9mdWxsIChHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvLAorICAgIGdzaXplIHNpemUpCit7CisgIEdzdE1hcEluZm8gKnZrX21hcF9pbmZvOworCisgIC8qIEZJWE1FOiBwb3NzaWJsZSBiYXJyaWVyIG5lZWRlZCAqLworICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOworCisgIGlmICghbWVtLT52a19tZW0pIHsKKyAgICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICB2a19tYXBfaW5mbyA9IGdfbmV3MCAoR3N0TWFwSW5mbywgMSk7CisgIGluZm8tPnVzZXJfZGF0YVswXSA9IHZrX21hcF9pbmZvOworICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIG1lbS0+dmtfbWVtLCB2a19tYXBfaW5mbywgaW5mby0+ZmxhZ3MpKSB7CisgICAgZ19mcmVlICh2a19tYXBfaW5mbyk7CisgICAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworICAgIHJldHVybiBOVUxMOworICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKKworICByZXR1cm4gdmtfbWFwX2luZm8tPmRhdGE7Cit9CisKK3N0YXRpYyB2b2lkCitfdmtfYnVmZmVyX21lbV91bm1hcF9mdWxsIChHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvKQoreworICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOworICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIG1lbS0+dmtfbWVtLCBpbmZvLT51c2VyX2RhdGFbMF0pOworICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7CisKKyAgZ19mcmVlIChpbmZvLT51c2VyX2RhdGFbMF0pOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK192a19idWZmZXJfbWVtX2NvcHkgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCit7CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK192a19idWZmZXJfbWVtX3NoYXJlIChHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKiBtZW0sIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGdib29sZWFuCitfdmtfYnVmZmVyX21lbV9pc19zcGFuIChHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKiBtZW0xLAorICAgIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqIG1lbTIsIGdzaXplICogb2Zmc2V0KQoreworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX2J1ZmZlcl9tZW1fYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX2NyaXRpY2FsICgiU3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIEdzdEFsbG9jYXRvckNsYXNzOjphbGxvYygpIGZ1bmN0aW9uIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitfdmtfYnVmZmVyX21lbV9mcmVlIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIG1lbW9yeSkKK3sKKyAgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICptZW0gPSAoR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICopIG1lbW9yeTsKKworICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZLCAiZnJlZWluZyBidWZmZXIgbWVtb3J5OiVwICIKKyAgICAgICJpZDolIiBHX0dVSU5UNjRfRk9STUFULCBtZW0sIChndWludDY0KSBtZW0tPmJ1ZmZlcik7CisKKyAgaWYgKG1lbS0+YnVmZmVyICYmICFtZW0tPndyYXBwZWQpCisgICAgdmtEZXN0cm95QnVmZmVyIChtZW0tPmRldmljZS0+ZGV2aWNlLCBtZW0tPmJ1ZmZlciwgTlVMTCk7CisKKyAgaWYgKG1lbS0+dmlldykKKyAgICB2a0Rlc3Ryb3lCdWZmZXJWaWV3IChtZW0tPmRldmljZS0+ZGV2aWNlLCBtZW0tPnZpZXcsIE5VTEwpOworCisgIGlmIChtZW0tPnZrX21lbSkKKyAgICBnc3RfbWVtb3J5X3VucmVmICgoR3N0TWVtb3J5ICopIG1lbS0+dmtfbWVtKTsKKworICBpZiAobWVtLT5ub3RpZnkpCisgICAgbWVtLT5ub3RpZnkgKG1lbS0+dXNlcl9kYXRhKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChtZW0tPmRldmljZSk7Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jOgorICogQGRldmljZTphICNHc3RWdWxrYW5EZXZpY2UKKyAqIEBtZW1vcnlfdHlwZV9pbmRleDogdGhlIFZ1bGthbiBtZW1vcnkgdHlwZSBpbmRleAorICogQHBhcmFtczogYSAjR3N0QWxsb2NhdGlvblBhcmFtcworICogQHNpemU6IHRoZSBzaXplIHRvIGFsbG9jYXRlCisgKgorICogQWxsb2NhdGVkIGEgbmV3ICNHc3RWdWxrYW5CdWZmZXJNZW1vcnkuCisgKgorICogUmV0dXJuczogYSAjR3N0TWVtb3J5IG9iamVjdCBiYWNrZWQgYnkgYSB2dWxrYW4gZGV2aWNlIG1lbW9yeQorICovCitHc3RNZW1vcnkgKgorZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrRm9ybWF0IGZvcm1hdCwKKyAgICBnc2l6ZSBzaXplLCBWa0J1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcF9mbGFncykKK3sKKyAgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICptZW07CisKKyAgbWVtID0gX3ZrX2J1ZmZlcl9tZW1fbmV3X2FsbG9jIChfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2NhdG9yLCBOVUxMLCBkZXZpY2UsCisgICAgICBmb3JtYXQsIHNpemUsIHVzYWdlLCBtZW1fcHJvcF9mbGFncywgTlVMTCwgTlVMTCk7CisKKyAgcmV0dXJuIChHc3RNZW1vcnkgKikgbWVtOworfQorCitHc3RNZW1vcnkgKgorZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X3dyYXBwZWQgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgVmtCdWZmZXIgYnVmZmVyLAorICAgIFZrRm9ybWF0IGZvcm1hdCwgVmtCdWZmZXJVc2FnZUZsYWdzIHVzYWdlLCBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICBHc3RWdWxrYW5CdWZmZXJNZW1vcnkgKm1lbTsKKworICBtZW0gPQorICAgICAgX3ZrX2J1ZmZlcl9tZW1fbmV3X3dyYXBwZWQgKF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvY2F0b3IsIE5VTEwsIGRldmljZSwKKyAgICAgIGJ1ZmZlciwgZm9ybWF0LCB1c2FnZSwgdXNlcl9kYXRhLCBub3RpZnkpOworCisgIHJldHVybiAoR3N0TWVtb3J5ICopIG1lbTsKK30KKworR19ERUZJTkVfVFlQRSAoR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yLAorICAgIGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvY2F0b3IsIEdTVF9UWVBFX0FMTE9DQVRPUik7CisKK3N0YXRpYyB2b2lkCisgICAgZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvcl9jbGFzc19pbml0CisgICAgKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvckNsYXNzICoga2xhc3MpCit7CisgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3MgPSAoR3N0QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisKKyAgYWxsb2NhdG9yX2NsYXNzLT5hbGxvYyA9IF92a19idWZmZXJfbWVtX2FsbG9jOworICBhbGxvY2F0b3JfY2xhc3MtPmZyZWUgPSBfdmtfYnVmZmVyX21lbV9mcmVlOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvcl9pbml0IChHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3IgKgorICAgIGFsbG9jYXRvcikKK3sKKyAgR3N0QWxsb2NhdG9yICphbGxvYyA9IEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKTsKKworICBhbGxvYy0+bWVtX3R5cGUgPSBHU1RfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SX05BTUU7CisgIGFsbG9jLT5tZW1fbWFwX2Z1bGwgPSAoR3N0TWVtb3J5TWFwRnVsbEZ1bmN0aW9uKSBfdmtfYnVmZmVyX21lbV9tYXBfZnVsbDsKKyAgYWxsb2MtPm1lbV91bm1hcF9mdWxsID0KKyAgICAgIChHc3RNZW1vcnlVbm1hcEZ1bGxGdW5jdGlvbikgX3ZrX2J1ZmZlcl9tZW1fdW5tYXBfZnVsbDsKKyAgYWxsb2MtPm1lbV9jb3B5ID0gKEdzdE1lbW9yeUNvcHlGdW5jdGlvbikgX3ZrX2J1ZmZlcl9tZW1fY29weTsKKyAgYWxsb2MtPm1lbV9zaGFyZSA9IChHc3RNZW1vcnlTaGFyZUZ1bmN0aW9uKSBfdmtfYnVmZmVyX21lbV9zaGFyZTsKKyAgYWxsb2MtPm1lbV9pc19zcGFuID0gKEdzdE1lbW9yeUlzU3BhbkZ1bmN0aW9uKSBfdmtfYnVmZmVyX21lbV9pc19zcGFuOworfQorCisvKioKKyAqIGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9pbml0X29uY2U6CisgKgorICogSW5pdGlhbGl6ZXMgdGhlIFZ1bGthbiBtZW1vcnkgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorICogbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgI0dzdFZ1bGthbkJ1ZmZlck1lbW9yeSBvcGVyYXRpb24uCisgKi8KK3ZvaWQKK2dzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9pbml0X29uY2UgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9NRU1PUlksICJ2dWxrYW5idWZmZXJtZW1vcnkiLAorICAgICAgICAwLCAiVnVsa2FuIEJ1ZmZlciBNZW1vcnkiKTsKKworICAgIF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvY2F0b3IgPQorICAgICAgICBnX29iamVjdF9uZXcgKGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUgKCksIE5VTEwpOworCisgICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUl9OQU1FLAorICAgICAgICBnc3Rfb2JqZWN0X3JlZiAoX3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jYXRvcikpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKKy8qKgorICogZ3N0X2lzX3Z1bGthbl9idWZmZXJfbWVtb3J5OgorICogQG1lbTphICNHc3RNZW1vcnkKKyAqIAorICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5IGF0IEBtZW0gaXMgYSAjR3N0VnVsa2FuQnVmZmVyTWVtb3J5CisgKi8KK2dib29sZWFuCitnc3RfaXNfdnVsa2FuX2J1ZmZlcl9tZW1vcnkgKEdzdE1lbW9yeSAqIG1lbSkKK3sKKyAgcmV0dXJuIG1lbSAhPSBOVUxMICYmIG1lbS0+YWxsb2NhdG9yICE9IE5VTEwgJiYKKyAgICAgIGdfdHlwZV9pc19hIChHX09CSkVDVF9UWVBFIChtZW0tPmFsbG9jYXRvciksCisgICAgICBHU1RfVFlQRV9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1IpOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2J1ZmZlcm1lbW9yeS5oIGIvZXh0L3Z1bGthbi92a2J1ZmZlcm1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiNTgyODIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrYnVmZmVybWVtb3J5LmgKQEAgLTAsMCArMSwxMDIgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfQlVGRkVSX01FTU9SWV9IXworI2RlZmluZSBfVktfQlVGRkVSX01FTU9SWV9IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9nc3RhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0bWVtb3J5Lmg+CisKKyNpbmNsdWRlIDx2ay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SIChnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlKCkpCitHVHlwZSBnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlKHZvaWQpOworCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiwgR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SLCBHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3IpKQorI2RlZmluZSBHU1RfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1IsIEdzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9CVUZGRVJfTUVNT1JZX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvciAqKShvYmopKQorCisjZGVmaW5lIEdTVF9WVUxLQU5fQlVGRkVSX01FTU9SWV9BTExPQ0FUT1JfTkFNRSAiVnVsa2FuQnVmZmVyIgorI2RlZmluZSBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9WVUxLQU5fQlVGRkVSICJtZW1vcnk6IiBHU1RfVlVMS0FOX0JVRkZFUl9NRU1PUllfQUxMT0NBVE9SX05BTUUKKworc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJNZW1vcnkKK3sKKyAgR3N0TWVtb3J5IHBhcmVudDsKKworICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2U7CisKKyAgVmtCdWZmZXIgYnVmZmVyOworICBWa0J1ZmZlclZpZXcgdmlldzsKKyAgR3N0VnVsa2FuTWVtb3J5ICp2a19tZW07CisKKyAgVmtNZW1vcnlSZXF1aXJlbWVudHMgcmVxdWlyZW1lbnRzOworICBWa0J1ZmZlclVzYWdlRmxhZ3MgdXNhZ2U7CisKKyAgR011dGV4IGxvY2s7CisgIGdib29sZWFuIHdyYXBwZWQ7CisgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeTsKKyAgZ3BvaW50ZXIgdXNlcl9kYXRhOworfTsKKworLyoqCisgKiBHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3IKKyAqCisgKiBPcGFxdWUgI0dzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvciBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3IKK3sKKyAgR3N0QWxsb2NhdG9yIHBhcmVudDsKK307CisKKy8qKgorICogR3N0VnVsa2FuQnVmZmVyTWVtb3J5QWxsb2NhdG9yQ2xhc3M6CisgKgorICogVGhlICNHc3RWdWxrYW5CdWZmZXJNZW1vcnlBbGxvY2F0b3JDbGFzcyBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQorICovCitzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlck1lbW9yeUFsbG9jYXRvckNsYXNzCit7CisgIEdzdEFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKK307CisKK3ZvaWQgICAgICAgICAgICBnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfaW5pdF9vbmNlICAgICAgICh2b2lkKTsKK2dib29sZWFuICAgICAgICBnc3RfaXNfdnVsa2FuX2J1ZmZlcl9tZW1vcnkgICAgICAgICAgICAgIChHc3RNZW1vcnkgKiBtZW0pOworCitHc3RNZW1vcnkgKiAgICAgZ3N0X3Z1bGthbl9idWZmZXJfbWVtb3J5X2FsbG9jICAgICAgICAgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQnVmZmVyVXNhZ2VGbGFncyB1c2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcF9mbGFncyk7CisKK0dzdE1lbW9yeSAqICAgICBnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfd3JhcHBlZCAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0J1ZmZlciBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0J1ZmZlclVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX1ZLX0JVRkZFUl9NRU1PUllfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtidWZmZXJwb29sLmMgYi9leHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxZmIyZmIKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5jCkBAIC0wLDAgKzEsMjU2IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInZrYnVmZmVycG9vbC5oIgorCisvKioKKyAqIFNFQ1RJT046dmtidWZmZXJwb29sCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IGJ1ZmZlciBwb29sIGZvciAjR3N0VnVsa2FuQnVmZmVyTWVtb3J5IG9iamVjdHMKKyAqIEBzZWVfYWxzbzogI0dzdEJ1ZmZlclBvb2wsICNHc3RWdWxrYW5CdWZmZXJNZW1vcnkKKyAqCisgKiBhICNHc3RWdWxrYW5CdWZmZXJQb29sIGlzIGFuIG9iamVjdCB0aGF0IGFsbG9jYXRlcyBidWZmZXJzIHdpdGggI0dzdFZ1bGthbkJ1ZmZlck1lbW9yeQorICoKKyAqIEEgI0dzdFZ1bGthbkJ1ZmZlclBvb2wgaXMgY3JlYXRlZCB3aXRoIGdzdF92dWxrYW5fYnVmZmVyX3Bvb2xfbmV3KCkKKyAqCisgKiAjR3N0VnVsa2FuQnVmZmVyUG9vbCBpbXBsZW1lbnRzIHRoZSBWaWRlb01ldGEgYnVmZmVyIHBvb2wgb3B0aW9uIAorICogI0dTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQQorICovCisKKy8qIGJ1ZmZlcnBvb2wgKi8KK3N0cnVjdCBfR3N0VnVsa2FuQnVmZmVyUG9vbFByaXZhdGUKK3sKKyAgR3N0Q2FwcyAqY2FwczsKKyAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKKyAgZ2Jvb2xlYW4gYWRkX3ZpZGVvbWV0YTsKKyAgZ3NpemUgYWxsb2Nfc2l6ZXNbR1NUX1ZJREVPX01BWF9QTEFORVNdOworfTsKKworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9QT09MKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9QT09MCisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTF9HRVRfUFJJVkFURShvYmopICBcCisgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX0JVRkZFUl9QT09MLCBHc3RWdWxrYW5CdWZmZXJQb29sUHJpdmF0ZSkpCisKKyNkZWZpbmUgZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0VnVsa2FuQnVmZmVyUG9vbCwgZ3N0X3Z1bGthbl9idWZmZXJfcG9vbCwKKyAgICBHU1RfVFlQRV9CVUZGRVJfUE9PTCwgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfVlVMS0FOX0JVRkZFUl9QT09MLAorICAgICAgICAidnVsa2FuYnVmZmVycG9vbCIsIDAsICJWdWxrYW4gQnVmZmVyIFBvb2wiKSk7CisKK3N0YXRpYyBjb25zdCBnY2hhciAqKgorZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9nZXRfb3B0aW9ucyAoR3N0QnVmZmVyUG9vbCAqIHBvb2wpCit7CisgIHN0YXRpYyBjb25zdCBnY2hhciAqb3B0aW9uc1tdID0geyBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX01FVEEsCisgICAgTlVMTAorICB9OworCisgIHJldHVybiBvcHRpb25zOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92dWxrYW5fYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAoR3N0QnVmZmVyUG9vbCAqIHBvb2wsIEdzdFN0cnVjdHVyZSAqIGNvbmZpZykKK3sKKyAgR3N0VnVsa2FuQnVmZmVyUG9vbCAqdmtfcG9vbCA9IEdTVF9WVUxLQU5fQlVGRkVSX1BPT0xfQ0FTVCAocG9vbCk7CisgIEdzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlICpwcml2ID0gdmtfcG9vbC0+cHJpdjsKKyAgZ3VpbnQgbWluX2J1ZmZlcnMsIG1heF9idWZmZXJzOworICBHc3RDYXBzICpjYXBzID0gTlVMTDsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKyAgZ3VpbnQgaTsKKworICBpZiAoIWdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X3BhcmFtcyAoY29uZmlnLCAmY2FwcywgTlVMTCwgJm1pbl9idWZmZXJzLAorICAgICAgICAgICZtYXhfYnVmZmVycykpCisgICAgZ290byB3cm9uZ19jb25maWc7CisKKyAgaWYgKGNhcHMgPT0gTlVMTCkKKyAgICBnb3RvIG5vX2NhcHM7CisKKyAgLyogbm93IHBhcnNlIHRoZSBjYXBzIGZyb20gdGhlIGNvbmZpZyAqLworICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJnByaXYtPnZfaW5mbywgY2FwcykpCisgICAgZ290byB3cm9uZ19jYXBzOworCisgIEdTVF9MT0dfT0JKRUNUIChwb29sLCAiJWR4JWQsIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHByaXYtPnZfaW5mby53aWR0aCwKKyAgICAgIHByaXYtPnZfaW5mby5oZWlnaHQsIGNhcHMpOworCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZwcml2LT5jYXBzLCBjYXBzKTsKKworICAvKiBnZXQgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciB0byBhbGxvY2F0ZSAqLworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZwcml2LT52X2luZm8pOyBpKyspIHsKKyAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJnByaXYtPnZfaW5mbyk7CisgICAgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKmltZ19tZW07CisgICAgZ3VpbnQgd2lkdGgsIGhlaWdodDsKKyAgICBWa0Zvcm1hdCB2a19mb3JtYXQ7CisKKyAgICB2a19mb3JtYXQgPSBnc3RfdnVsa2FuX2Zvcm1hdF9mcm9tX3ZpZGVvX2Zvcm1hdCAodl9mb3JtYXQsIGkpOworICAgIHdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZwcml2LT52X2luZm8pOworICAgIGhlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnByaXYtPnZfaW5mbyk7CisKKyAgICBpbWdfbWVtID0gKEdzdFZ1bGthbkltYWdlTWVtb3J5ICopCisgICAgICAgIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jICh2a19wb29sLT5kZXZpY2UsIHZrX2Zvcm1hdCwgd2lkdGgsCisgICAgICAgIGhlaWdodCwgVktfSU1BR0VfVElMSU5HX09QVElNQUwsCisgICAgICAgIFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQgfCBWS19JTUFHRV9VU0FHRV9DT0xPUl9BVFRBQ0hNRU5UX0JJVCwKKyAgICAgICAgVktfTUVNT1JZX1BST1BFUlRZX0RFVklDRV9MT0NBTF9CSVQpOworCisgICAgcHJpdi0+YWxsb2Nfc2l6ZXNbaV0gPSBpbWdfbWVtLT5yZXF1aXJlbWVudHMuc2l6ZTsKKworICAgIGdzdF9tZW1vcnlfdW5yZWYgKEdTVF9NRU1PUllfQ0FTVCAoaW1nX21lbSkpOworICB9CisKKyAgcHJpdi0+YWRkX3ZpZGVvbWV0YSA9IGdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAorICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WSURFT19NRVRBKTsKKworICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9wYXJhbXMgKGNvbmZpZywgY2FwcywKKyAgICAgIHByaXYtPnZfaW5mby5zaXplLCBtaW5fYnVmZmVycywgbWF4X2J1ZmZlcnMpOworCisgIHJldHVybiBHU1RfQlVGRkVSX1BPT0xfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jb25maWcgKHBvb2wsIGNvbmZpZykgJiYgcmV0OworCisgIC8qIEVSUk9SUyAqLword3JvbmdfY29uZmlnOgorICB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChwb29sLCAiaW52YWxpZCBjb25maWciKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK25vX2NhcHM6CisgIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHBvb2wsICJubyBjYXBzIGluIGNvbmZpZyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQord3JvbmdfY2FwczoKKyAgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocG9vbCwKKyAgICAgICAgImZhaWxlZCBnZXR0aW5nIGdlb21ldHJ5IGZyb20gY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9Cit9CisKKy8qIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyBHc3RCdWZmZXIgY3JlYXRpb24gKi8KK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2FsbG9jIChHc3RCdWZmZXJQb29sICogcG9vbCwgR3N0QnVmZmVyICoqIGJ1ZmZlciwKKyAgICBHc3RCdWZmZXJQb29sQWNxdWlyZVBhcmFtcyAqIHBhcmFtcykKK3sKKyAgR3N0VnVsa2FuQnVmZmVyUG9vbCAqdmtfcG9vbCA9IEdTVF9WVUxLQU5fQlVGRkVSX1BPT0xfQ0FTVCAocG9vbCk7CisgIEdzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlICpwcml2ID0gdmtfcG9vbC0+cHJpdjsKKyAgR3N0QnVmZmVyICpidWY7CisgIGd1aW50IGk7CisKKyAgaWYgKCEoYnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCkpKSB7CisgICAgZ290byBub19idWZmZXI7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZwcml2LT52X2luZm8pOyBpKyspIHsKKyAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJnByaXYtPnZfaW5mbyk7CisgICAgVmtGb3JtYXQgdmtfZm9ybWF0OworICAgIEdzdE1lbW9yeSAqbWVtOworCisgICAgdmtfZm9ybWF0ID0gZ3N0X3Z1bGthbl9mb3JtYXRfZnJvbV92aWRlb19mb3JtYXQgKHZfZm9ybWF0LCBpKTsKKworICAgIG1lbSA9IGdzdF92dWxrYW5fYnVmZmVyX21lbW9yeV9hbGxvYyAodmtfcG9vbC0+ZGV2aWNlLAorICAgICAgICB2a19mb3JtYXQsIHByaXYtPmFsbG9jX3NpemVzW2ldLAorICAgICAgICBWS19CVUZGRVJfVVNBR0VfVFJBTlNGRVJfU1JDX0JJVCB8IFZLX0JVRkZFUl9VU0FHRV9UUkFOU0ZFUl9EU1RfQklULAorICAgICAgICBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCk7CisgICAgaWYgKCFtZW0pIHsKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisgICAgICBnb3RvIG1lbV9jcmVhdGVfZmFpbGVkOworICAgIH0KKworICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmLCBtZW0pOworICB9CisKKyAgKmJ1ZmZlciA9IGJ1ZjsKKworICByZXR1cm4gR1NUX0ZMT1dfT0s7CisKKyAgLyogRVJST1IgKi8KK25vX2J1ZmZlcjoKKyAgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocG9vbCwgImNhbid0IGNyZWF0ZSBpbWFnZSIpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorbWVtX2NyZWF0ZV9mYWlsZWQ6CisgIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHBvb2wsICJDb3VsZCBub3QgY3JlYXRlIFZ1bGthbiBNZW1vcnkiKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX25ldzoKKyAqIEBjb250ZXh0OiB0aGUgI0dzdEdMQ29udGV4dCB0byB1c2UKKyAqCisgKiBSZXR1cm5zOiBhICNHc3RCdWZmZXJQb29sIHRoYXQgYWxsb2NhdGVzIGJ1ZmZlcnMgd2l0aCAjR3N0R0xNZW1vcnkKKyAqLworR3N0QnVmZmVyUG9vbCAqCitnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX25ldyAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlKQoreworICBHc3RWdWxrYW5CdWZmZXJQb29sICpwb29sOworCisgIHBvb2wgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1ZVTEtBTl9CVUZGRVJfUE9PTCwgTlVMTCk7CisgIHBvb2wtPmRldmljZSA9IGdzdF9vYmplY3RfcmVmIChkZXZpY2UpOworCisgIEdTVF9MT0dfT0JKRUNUIChwb29sLCAibmV3IFZ1bGthbiBidWZmZXIgcG9vbCBmb3IgZGV2aWNlICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgZGV2aWNlKTsKKworICByZXR1cm4gR1NUX0JVRkZFUl9QT09MX0NBU1QgKHBvb2wpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9jbGFzc19pbml0IChHc3RWdWxrYW5CdWZmZXJQb29sQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKyAgR3N0QnVmZmVyUG9vbENsYXNzICpnc3RidWZmZXJwb29sX2NsYXNzID0gKEdzdEJ1ZmZlclBvb2xDbGFzcyAqKSBrbGFzczsKKworICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGtsYXNzLCBzaXplb2YgKEdzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlKSk7CisKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2ZpbmFsaXplOworCisgIGdzdGJ1ZmZlcnBvb2xfY2xhc3MtPmdldF9vcHRpb25zID0gZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9nZXRfb3B0aW9uczsKKyAgZ3N0YnVmZmVycG9vbF9jbGFzcy0+c2V0X2NvbmZpZyA9IGdzdF92dWxrYW5fYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZzsKKyAgZ3N0YnVmZmVycG9vbF9jbGFzcy0+YWxsb2NfYnVmZmVyID0gZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9hbGxvYzsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fYnVmZmVyX3Bvb2xfaW5pdCAoR3N0VnVsa2FuQnVmZmVyUG9vbCAqIHBvb2wpCit7CisgIHBvb2wtPnByaXYgPSBHU1RfVlVMS0FOX0JVRkZFUl9QT09MX0dFVF9QUklWQVRFIChwb29sKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fYnVmZmVyX3Bvb2xfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFZ1bGthbkJ1ZmZlclBvb2wgKnBvb2wgPSBHU1RfVlVMS0FOX0JVRkZFUl9QT09MX0NBU1QgKG9iamVjdCk7CisgIEdzdFZ1bGthbkJ1ZmZlclBvb2xQcml2YXRlICpwcml2ID0gcG9vbC0+cHJpdjsKKworICBHU1RfTE9HX09CSkVDVCAocG9vbCwgImZpbmFsaXplIFZ1bGthbiBidWZmZXIgcG9vbCAlcCIsIHBvb2wpOworCisgIGlmIChwcml2LT5jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChwcml2LT5jYXBzKTsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKKworICAvKiBvbmx5IHJlbGVhc2UgdGhlIGNvbnRleHQgb25jZSBhbGwgb3VyIG1lbW9yeSBoYXZlIGJlZW4gZGVsZXRlZCAqLworICBpZiAocG9vbC0+ZGV2aWNlKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAocG9vbC0+ZGV2aWNlKTsKKyAgICBwb29sLT5kZXZpY2UgPSBOVUxMOworICB9Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrYnVmZmVycG9vbC5oIGIvZXh0L3Z1bGthbi92a2J1ZmZlcnBvb2wuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZGQ0YmFmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2J1ZmZlcnBvb2wuaApAQCAtMCwwICsxLDY3IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dTVF9WVUxLQU5fQlVGRkVSX1BPT0xfSF8KKyNkZWZpbmUgX0dTVF9WVUxLQU5fQlVGRkVSX1BPT0xfSF8KKworI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9wb29sLmg+CisKKyNpbmNsdWRlIDx2ay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKy8qIGJ1ZmZlciBwb29sIGZ1bmN0aW9ucyAqLworR1R5cGUgZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9nZXRfdHlwZSAodm9pZCk7CisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9CVUZGRVJfUE9PTCAgICAgIChnc3RfdnVsa2FuX2J1ZmZlcl9wb29sX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fQlVGRkVSX1BPT0wob2JqKSAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9CVUZGRVJfUE9PTCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fQlVGRkVSX1BPT0wob2JqKSAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9CVUZGRVJfUE9PTCwgR3N0VnVsa2FuQnVmZmVyUG9vbCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fQlVGRkVSX1BPT0xfQ0FTVChvYmopICgoR3N0VnVsa2FuQnVmZmVyUG9vbCopKG9iaikpCisKKy8qKgorICogR3N0VnVsa2FuQnVmZmVyUG9vbDoKKyAqCisgKiBPcGFxdWUgR3N0VnVsa2FuQnVmZmVyUG9vbCBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5CdWZmZXJQb29sCit7CisgIEdzdEJ1ZmZlclBvb2wgYnVmZmVycG9vbDsKKworICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZTsKKworICBHc3RWdWxrYW5CdWZmZXJQb29sUHJpdmF0ZSAqcHJpdjsKK307CisKKy8qKgorICogR3N0VnVsa2FuQnVmZmVyUG9vbENsYXNzOgorICoKKyAqIFRoZSAjR3N0VnVsa2FuQnVmZmVyUG9vbENsYXNzIHN0cnVjdHVyZSBjb250YWlucyBvbmx5IHByaXZhdGUgZGF0YQorICovCitzdHJ1Y3QgX0dzdFZ1bGthbkJ1ZmZlclBvb2xDbGFzcworeworICBHc3RCdWZmZXJQb29sQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR3N0QnVmZmVyUG9vbCAqZ3N0X3Z1bGthbl9idWZmZXJfcG9vbF9uZXcgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfR1NUX1ZVTEtBTl9CVUZGRVJfUE9PTF9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2RldmljZS5jIGIvZXh0L3Z1bGthbi92a2RldmljZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4MTRkNjAKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrZGV2aWNlLmMKQEAgLTAsMCArMSw1NDkgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidmtkZXZpY2UuaCIKKyNpbmNsdWRlICJ2a3V0aWxzX3ByaXZhdGUuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCitzdGF0aWMgY29uc3QgY2hhciAqZGV2aWNlX3ZhbGlkYXRpb25fbGF5ZXJzW10gPSB7CisgICJWS19MQVlFUl9MVU5BUkdfdGhyZWFkaW5nIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19tZW1fdHJhY2tlciIsCisgICJWS19MQVlFUl9MVU5BUkdfb2JqZWN0X3RyYWNrZXIiLAorICAiVktfTEFZRVJfTFVOQVJHX2RyYXdfc3RhdGUiLAorICAiVktfTEFZRVJfTFVOQVJHX3BhcmFtX2NoZWNrZXIiLAorICAiVktfTEFZRVJfTFVOQVJHX3N3YXBjaGFpbiIsCisgICJWS19MQVlFUl9MVU5BUkdfZGV2aWNlX2xpbWl0cyIsCisgICJWS19MQVlFUl9MVU5BUkdfaW1hZ2UiLAorfTsKKworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3Z1bGthbl9kZXZpY2VfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWSAoR1NUX0NBVF9ERUZBVUxUKTsKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfQ09OVEVYVCk7CisKKyNkZWZpbmUgZ3N0X3Z1bGthbl9kZXZpY2VfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFZ1bGthbkRldmljZSwgZ3N0X3Z1bGthbl9kZXZpY2UsIEdTVF9UWVBFX09CSkVDVCwKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAidnVsa2FuZGV2aWNlIiwgMCwKKyAgICAgICAgIlZ1bGthbiBEZXZpY2UiKTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChHU1RfQ0FUX0NPTlRFWFQsICJHU1RfQ09OVEVYVCIpKTsKKworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl9kZXZpY2VfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworCitzdHJ1Y3QgX0dzdFZ1bGthbkRldmljZVByaXZhdGUKK3sKKyAgZ2Jvb2xlYW4gb3BlbmVkOworfTsKKworR3N0VnVsa2FuRGV2aWNlICoKK2dzdF92dWxrYW5fZGV2aWNlX25ldyAoR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSkKK3sKKyAgR3N0VnVsa2FuRGV2aWNlICpkZXZpY2UgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UsIE5VTEwpOworCisgIGRldmljZS0+aW5zdGFuY2UgPSBnc3Rfb2JqZWN0X3JlZiAoaW5zdGFuY2UpOworICAvKiBGSVhNRTogc2VsZWN0IHRoaXMgZXh0ZXJuYWxseSAqLworICBkZXZpY2UtPmRldmljZV9pbmRleCA9IDA7CisKKyAgcmV0dXJuIGRldmljZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fZGV2aWNlX2luaXQgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSkKK3sKKyAgZGV2aWNlLT5wcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgoZGV2aWNlKSwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UsIEdzdFZ1bGthbkRldmljZVByaXZhdGUpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kZXZpY2VfY2xhc3NfaW5pdCAoR3N0VnVsa2FuRGV2aWNlQ2xhc3MgKiBkZXZpY2VfY2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikgZGV2aWNlX2NsYXNzOworCisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoZGV2aWNlX2NsYXNzLCBzaXplb2YgKEdzdFZ1bGthbkRldmljZVByaXZhdGUpKTsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5fZGV2aWNlX2ZpbmFsaXplOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kZXZpY2VfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFZ1bGthbkRldmljZSAqZGV2aWNlID0gR1NUX1ZVTEtBTl9ERVZJQ0UgKG9iamVjdCk7CisKKyAgZ19mcmVlIChkZXZpY2UtPnF1ZXVlX2ZhbWlseV9wcm9wcyk7CisgIGRldmljZS0+cXVldWVfZmFtaWx5X3Byb3BzID0gTlVMTDsKKworICBpZiAoZGV2aWNlLT5jbWRfcG9vbCkKKyAgICB2a0Rlc3Ryb3lDb21tYW5kUG9vbCAoZGV2aWNlLT5kZXZpY2UsIGRldmljZS0+Y21kX3Bvb2wsIE5VTEwpOworICBkZXZpY2UtPmNtZF9wb29sID0gVktfTlVMTF9IQU5ETEU7CisKKyAgaWYgKGRldmljZS0+ZGV2aWNlKSB7CisgICAgdmtEZXZpY2VXYWl0SWRsZSAoZGV2aWNlLT5kZXZpY2UpOworICAgIHZrRGVzdHJveURldmljZSAoZGV2aWNlLT5kZXZpY2UsIE5VTEwpOworICB9CisgIGRldmljZS0+ZGV2aWNlID0gVktfTlVMTF9IQU5ETEU7CisKKyAgaWYgKGRldmljZS0+aW5zdGFuY2UpCisgICAgZ3N0X29iamVjdF91bnJlZiAoZGV2aWNlLT5pbnN0YW5jZSk7CisgIGRldmljZS0+aW5zdGFuY2UgPSBWS19OVUxMX0hBTkRMRTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCitfZGV2aWNlX3R5cGVfdG9fc3RyaW5nIChWa1BoeXNpY2FsRGV2aWNlVHlwZSB0eXBlKQoreworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIFZLX1BIWVNJQ0FMX0RFVklDRV9UWVBFX09USEVSOgorICAgICAgcmV0dXJuICJvdGhlciI7CisgICAgY2FzZSBWS19QSFlTSUNBTF9ERVZJQ0VfVFlQRV9JTlRFR1JBVEVEX0dQVToKKyAgICAgIHJldHVybiAiaW50ZWdyYXRlZCI7CisgICAgY2FzZSBWS19QSFlTSUNBTF9ERVZJQ0VfVFlQRV9ESVNDUkVURV9HUFU6CisgICAgICByZXR1cm4gImRpc2NyZXRlIjsKKyAgICBjYXNlIFZLX1BIWVNJQ0FMX0RFVklDRV9UWVBFX1ZJUlRVQUxfR1BVOgorICAgICAgcmV0dXJuICJ2aXJ0dWFsIjsKKyAgICBjYXNlIFZLX1BIWVNJQ0FMX0RFVklDRV9UWVBFX0NQVToKKyAgICAgIHJldHVybiAiQ1BVIjsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19waHlzaWNhbF9kZXZpY2VfaW5mbyAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzIHByb3BzOworICBWa1BoeXNpY2FsRGV2aWNlIGdwdTsKKworICBncHUgPSBnc3RfdnVsa2FuX2RldmljZV9nZXRfcGh5c2ljYWxfZGV2aWNlIChkZXZpY2UpOworICBpZiAoIWdwdSkgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVELAorICAgICAgICAiRmFpbGVkIHRvIHJldHJpZXZlIHBoeXNpY2FsIGRldmljZSIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHZrR2V0UGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzIChncHUsICZwcm9wcyk7CisKKyAgR1NUX0lORk9fT0JKRUNUIChkZXZpY2UsICJkZXZpY2UgbmFtZSAlcyB0eXBlICVzIGFwaSB2ZXJzaW9uICV1LCAiCisgICAgICAiZHJpdmVyIHZlcnNpb24gJXUgdmVuZG9yIElEIDB4JXgsIGRldmljZSBJRCAweCV4IiwgcHJvcHMuZGV2aWNlTmFtZSwKKyAgICAgIF9kZXZpY2VfdHlwZV90b19zdHJpbmcgKHByb3BzLmRldmljZVR5cGUpLCBwcm9wcy5hcGlWZXJzaW9uLAorICAgICAgcHJvcHMuZHJpdmVyVmVyc2lvbiwgcHJvcHMudmVuZG9ySUQsIHByb3BzLmRldmljZUlEKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fZGV2aWNlX29wZW4gKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgR0Vycm9yICoqIGVycm9yKQoreworICBjb25zdCBjaGFyICpleHRlbnNpb25fbmFtZXNbNjRdOworICB1aW50MzJfdCBlbmFibGVkX2V4dGVuc2lvbl9jb3VudCA9IDA7CisgIHVpbnQzMl90IGRldmljZV9leHRlbnNpb25fY291bnQgPSAwOworICBWa0V4dGVuc2lvblByb3BlcnRpZXMgKmRldmljZV9leHRlbnNpb25zID0gTlVMTDsKKyAgdWludDMyX3QgZW5hYmxlZF9sYXllcl9jb3VudCA9IDA7CisgIHVpbnQzMl90IGRldmljZV9sYXllcl9jb3VudCA9IDA7CisgIFZrTGF5ZXJQcm9wZXJ0aWVzICpkZXZpY2VfbGF5ZXJzOworICBnYm9vbGVhbiBoYXZlX3N3YXBjaGFpbl9leHQ7CisgIGdib29sZWFuIHZhbGlkYXRpb25fZm91bmQ7CisgIFZrUGh5c2ljYWxEZXZpY2UgZ3B1OworICBWa1Jlc3VsdCBlcnI7CisgIGd1aW50IGk7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fREVWSUNFIChkZXZpY2UpLCBGQUxTRSk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChkZXZpY2UpOworCisgIGlmIChkZXZpY2UtPnByaXYtPm9wZW5lZCkgeworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChkZXZpY2UpOworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgaWYgKCFfcGh5c2ljYWxfZGV2aWNlX2luZm8gKGRldmljZSwgZXJyb3IpKQorICAgIGdvdG8gZXJyb3I7CisKKyAgZ3B1ID0gZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3BoeXNpY2FsX2RldmljZSAoZGV2aWNlKTsKKworICAvKiBMb29rIGZvciB2YWxpZGF0aW9uIGxheWVycyAqLworICBlcnIgPSB2a0VudW1lcmF0ZURldmljZUxheWVyUHJvcGVydGllcyAoZ3B1LCAmZGV2aWNlX2xheWVyX2NvdW50LCBOVUxMKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMiKSA8IDApCisgICAgZ290byBlcnJvcjsKKworICBkZXZpY2VfbGF5ZXJzID0gZ19uZXcwIChWa0xheWVyUHJvcGVydGllcywgZGV2aWNlX2xheWVyX2NvdW50KTsKKyAgZXJyID0KKyAgICAgIHZrRW51bWVyYXRlRGV2aWNlTGF5ZXJQcm9wZXJ0aWVzIChncHUsICZkZXZpY2VfbGF5ZXJfY291bnQsCisgICAgICBkZXZpY2VfbGF5ZXJzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidmtFbnVtZXJhdGVEZXZpY2VMYXllclByb3BlcnRpZXMiKSA8IDApIHsKKyAgICBnX2ZyZWUgKGRldmljZV9sYXllcnMpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICB2YWxpZGF0aW9uX2ZvdW5kID0KKyAgICAgIF9jaGVja19mb3JfYWxsX2xheWVycyAoR19OX0VMRU1FTlRTIChkZXZpY2VfdmFsaWRhdGlvbl9sYXllcnMpLAorICAgICAgZGV2aWNlX3ZhbGlkYXRpb25fbGF5ZXJzLCBkZXZpY2VfbGF5ZXJfY291bnQsIGRldmljZV9sYXllcnMpOworICBnX2ZyZWUgKGRldmljZV9sYXllcnMpOworICBkZXZpY2VfbGF5ZXJzID0gTlVMTDsKKyAgaWYgKCF2YWxpZGF0aW9uX2ZvdW5kKSB7CisgICAgZ19lcnJvciAoInZrRW51bWVyYXRlRGV2aWNlTGF5ZXJQcm9wZXJ0aWVzIGZhaWxlZCB0byBmaW5kIgorICAgICAgICAiYSByZXF1aXJlZCB2YWxpZGF0aW9uIGxheWVyLlxuXG4iCisgICAgICAgICJQbGVhc2UgbG9vayBhdCB0aGUgR2V0dGluZyBTdGFydGVkIGd1aWRlIGZvciBhZGRpdGlvbmFsICIKKyAgICAgICAgImluZm9ybWF0aW9uLlxudmtDcmVhdGVEZXZpY2UgRmFpbHVyZSIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKyAgZW5hYmxlZF9sYXllcl9jb3VudCA9IEdfTl9FTEVNRU5UUyAoZGV2aWNlX3ZhbGlkYXRpb25fbGF5ZXJzKTsKKworICBlcnIgPQorICAgICAgdmtFbnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIChncHUsIE5VTEwsCisgICAgICAmZGV2aWNlX2V4dGVuc2lvbl9jb3VudCwgTlVMTCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgInZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJvcGVydGllcyIpIDwgMCkKKyAgICBnb3RvIGVycm9yOworICBHU1RfREVCVUdfT0JKRUNUIChkZXZpY2UsICJGb3VuZCAldSBleHRlbnNpb25zIiwgZGV2aWNlX2V4dGVuc2lvbl9jb3VudCk7CisKKyAgaGF2ZV9zd2FwY2hhaW5fZXh0ID0gMDsKKyAgZW5hYmxlZF9leHRlbnNpb25fY291bnQgPSAwOworICBtZW1zZXQgKGV4dGVuc2lvbl9uYW1lcywgMCwgc2l6ZW9mIChleHRlbnNpb25fbmFtZXMpKTsKKyAgZGV2aWNlX2V4dGVuc2lvbnMgPSBnX25ldzAgKFZrRXh0ZW5zaW9uUHJvcGVydGllcywgZGV2aWNlX2V4dGVuc2lvbl9jb3VudCk7CisgIGVyciA9IHZrRW51bWVyYXRlRGV2aWNlRXh0ZW5zaW9uUHJvcGVydGllcyAoZ3B1LCBOVUxMLAorICAgICAgJmRldmljZV9leHRlbnNpb25fY291bnQsIGRldmljZV9leHRlbnNpb25zKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidmtFbnVtZXJhdGVEZXZpY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIikgPCAwKSB7CisgICAgZ19mcmVlIChkZXZpY2VfZXh0ZW5zaW9ucyk7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBkZXZpY2VfZXh0ZW5zaW9uX2NvdW50OyBpKyspIHsKKyAgICBHU1RfVFJBQ0VfT0JKRUNUIChkZXZpY2UsICJjaGVja2luZyBkZXZpY2UgZXh0ZW5zaW9uICVzIiwKKyAgICAgICAgZGV2aWNlX2V4dGVuc2lvbnNbaV0uZXh0ZW5zaW9uTmFtZSk7CisgICAgaWYgKCFzdHJjbXAgKFZLX0tIUl9TV0FQQ0hBSU5fRVhURU5TSU9OX05BTUUsCisgICAgICAgICAgICBkZXZpY2VfZXh0ZW5zaW9uc1tpXS5leHRlbnNpb25OYW1lKSkgeworICAgICAgaGF2ZV9zd2FwY2hhaW5fZXh0ID0gVFJVRTsKKyAgICAgIGV4dGVuc2lvbl9uYW1lc1tlbmFibGVkX2V4dGVuc2lvbl9jb3VudCsrXSA9CisgICAgICAgICAgKGdjaGFyICopIFZLX0tIUl9TV0FQQ0hBSU5fRVhURU5TSU9OX05BTUU7CisgICAgfQorICAgIGdfYXNzZXJ0IChlbmFibGVkX2V4dGVuc2lvbl9jb3VudCA8IDY0KTsKKyAgfQorICBpZiAoIWhhdmVfc3dhcGNoYWluX2V4dCkgeworICAgIGdfZXJyb3IgKCJ2a0VudW1lcmF0ZURldmljZUV4dGVuc2lvblByb3BlcnRpZXMgZmFpbGVkIHRvIGZpbmQgdGhlIFwiIgorICAgICAgICBWS19LSFJfU1dBUENIQUlOX0VYVEVOU0lPTl9OQU1FCisgICAgICAgICJcIiBleHRlbnNpb24uXG5cbkRvIHlvdSBoYXZlIGEgY29tcGF0aWJsZSAiCisgICAgICAgICJWdWxrYW4gaW5zdGFsbGFibGUgY2xpZW50IGRyaXZlciAoSUNEKSBpbnN0YWxsZWQ/XG5QbGVhc2UgIgorICAgICAgICAibG9vayBhdCB0aGUgR2V0dGluZyBTdGFydGVkIGd1aWRlIGZvciBhZGRpdGlvbmFsICIKKyAgICAgICAgImluZm9ybWF0aW9uLlxudmtDcmVhdGVJbnN0YW5jZSBGYWlsdXJlIik7CisgIH0KKyAgZ19mcmVlIChkZXZpY2VfZXh0ZW5zaW9ucyk7CisKKyAgdmtHZXRQaHlzaWNhbERldmljZVByb3BlcnRpZXMgKGdwdSwgJmRldmljZS0+Z3B1X3Byb3BzKTsKKyAgdmtHZXRQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMgKGdwdSwgJmRldmljZS0+bWVtb3J5X3Byb3BlcnRpZXMpOworICB2a0dldFBoeXNpY2FsRGV2aWNlRmVhdHVyZXMgKGdwdSwgJmRldmljZS0+Z3B1X2ZlYXR1cmVzKTsKKworICB2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzIChncHUsICZkZXZpY2UtPm5fcXVldWVfZmFtaWxpZXMsCisgICAgICBOVUxMKTsKKyAgZ19hc3NlcnQgKGRldmljZS0+bl9xdWV1ZV9mYW1pbGllcyA+PSAxKTsKKworICBkZXZpY2UtPnF1ZXVlX2ZhbWlseV9wcm9wcyA9CisgICAgICBnX25ldzAgKFZrUXVldWVGYW1pbHlQcm9wZXJ0aWVzLCBkZXZpY2UtPm5fcXVldWVfZmFtaWxpZXMpOworICB2a0dldFBoeXNpY2FsRGV2aWNlUXVldWVGYW1pbHlQcm9wZXJ0aWVzIChncHUsICZkZXZpY2UtPm5fcXVldWVfZmFtaWxpZXMsCisgICAgICBkZXZpY2UtPnF1ZXVlX2ZhbWlseV9wcm9wcyk7CisKKyAgLyogRklYTUU6IGFsbG93IG92ZXJyaWRpbmcvc2VsZWN0aW5nICovCisgIGZvciAoaSA9IDA7IGkgPCBkZXZpY2UtPm5fcXVldWVfZmFtaWxpZXM7IGkrKykgeworICAgIGlmIChkZXZpY2UtPnF1ZXVlX2ZhbWlseV9wcm9wc1tpXS5xdWV1ZUZsYWdzICYgVktfUVVFVUVfR1JBUEhJQ1NfQklUKQorICAgICAgYnJlYWs7CisgIH0KKyAgaWYgKGkgPj0gZGV2aWNlLT5uX3F1ZXVlX2ZhbWlsaWVzKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJGYWlsZWQgdG8gZmluZCBhIGNvbXBhdGlibGUgcXVldWUgZmFtaWx5Iik7CisgICAgZ290byBlcnJvcjsKKyAgfQorICBkZXZpY2UtPnF1ZXVlX2ZhbWlseV9pZCA9IGk7CisgIGRldmljZS0+bl9xdWV1ZXMgPSAxOworCisgIHsKKyAgICBWa0RldmljZVF1ZXVlQ3JlYXRlSW5mbyBxdWV1ZV9pbmZvID0geyAwLCB9OworICAgIFZrRGV2aWNlQ3JlYXRlSW5mbyBkZXZpY2VfaW5mbyA9IHsgMCwgfTsKKyAgICBnZmxvYXQgcXVldWVfcHJpb3JpdHkgPSAwLjU7CisKKyAgICBxdWV1ZV9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfREVWSUNFX1FVRVVFX0NSRUFURV9JTkZPOworICAgIHF1ZXVlX2luZm8ucE5leHQgPSBOVUxMOworICAgIHF1ZXVlX2luZm8ucXVldWVGYW1pbHlJbmRleCA9IGRldmljZS0+cXVldWVfZmFtaWx5X2lkOworICAgIHF1ZXVlX2luZm8ucXVldWVDb3VudCA9IGRldmljZS0+bl9xdWV1ZXM7CisgICAgcXVldWVfaW5mby5wUXVldWVQcmlvcml0aWVzID0gJnF1ZXVlX3ByaW9yaXR5OworCisgICAgZGV2aWNlX2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9ERVZJQ0VfQ1JFQVRFX0lORk87CisgICAgZGV2aWNlX2luZm8ucE5leHQgPSBOVUxMOworICAgIGRldmljZV9pbmZvLnF1ZXVlQ3JlYXRlSW5mb0NvdW50ID0gMTsKKyAgICBkZXZpY2VfaW5mby5wUXVldWVDcmVhdGVJbmZvcyA9ICZxdWV1ZV9pbmZvOworICAgIGRldmljZV9pbmZvLmVuYWJsZWRMYXllckNvdW50ID0gZW5hYmxlZF9sYXllcl9jb3VudDsKKyAgICBkZXZpY2VfaW5mby5wcEVuYWJsZWRMYXllck5hbWVzID0KKyAgICAgICAgKGNvbnN0IGNoYXIgKmNvbnN0ICopIGRldmljZV92YWxpZGF0aW9uX2xheWVyczsKKyAgICBkZXZpY2VfaW5mby5lbmFibGVkRXh0ZW5zaW9uQ291bnQgPSBlbmFibGVkX2V4dGVuc2lvbl9jb3VudDsKKyAgICBkZXZpY2VfaW5mby5wcEVuYWJsZWRFeHRlbnNpb25OYW1lcyA9IChjb25zdCBjaGFyICpjb25zdCAqKSBleHRlbnNpb25fbmFtZXM7CisgICAgZGV2aWNlX2luZm8ucEVuYWJsZWRGZWF0dXJlcyA9IE5VTEw7CisKKyAgICBlcnIgPSB2a0NyZWF0ZURldmljZSAoZ3B1LCAmZGV2aWNlX2luZm8sIE5VTEwsICZkZXZpY2UtPmRldmljZSk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrQ3JlYXRlRGV2aWNlIikgPCAwKQorICAgICAgZ290byBlcnJvcjsKKyAgfQorICB7CisgICAgVmtDb21tYW5kUG9vbENyZWF0ZUluZm8gY21kX3Bvb2xfaW5mbyA9IHsgMCwgfTsKKworICAgIGNtZF9wb29sX2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9DT01NQU5EX1BPT0xfQ1JFQVRFX0lORk87CisgICAgY21kX3Bvb2xfaW5mby5wTmV4dCA9IE5VTEw7CisgICAgY21kX3Bvb2xfaW5mby5xdWV1ZUZhbWlseUluZGV4ID0gZGV2aWNlLT5xdWV1ZV9mYW1pbHlfaWQ7CisgICAgY21kX3Bvb2xfaW5mby5mbGFncyA9IDA7CisKKyAgICBlcnIgPQorICAgICAgICB2a0NyZWF0ZUNvbW1hbmRQb29sIChkZXZpY2UtPmRldmljZSwgJmNtZF9wb29sX2luZm8sIE5VTEwsCisgICAgICAgICZkZXZpY2UtPmNtZF9wb29sKTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtDcmVhdGVDb21tYW5kUG9vbCIpIDwgMCkKKyAgICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBHU1RfT0JKRUNUX1VOTE9DSyAoZGV2aWNlKTsKKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICB7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRldmljZSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9Cit9CisKK0dzdFZ1bGthblF1ZXVlICoKK2dzdF92dWxrYW5fZGV2aWNlX2dldF9xdWV1ZSAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBndWludDMyIHF1ZXVlX2ZhbWlseSwKKyAgICBndWludDMyIHF1ZXVlX2kpCit7CisgIEdzdFZ1bGthblF1ZXVlICpyZXQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fREVWSUNFIChkZXZpY2UpLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRldmljZS0+ZGV2aWNlICE9IE5VTEwsIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAocXVldWVfZmFtaWx5IDwgZGV2aWNlLT5uX3F1ZXVlcywgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWV1ZV9pIDwKKyAgICAgIGRldmljZS0+cXVldWVfZmFtaWx5X3Byb3BzW3F1ZXVlX2ZhbWlseV0ucXVldWVDb3VudCwgTlVMTCk7CisKKyAgcmV0ID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9WVUxLQU5fUVVFVUUsIE5VTEwpOworICByZXQtPmRldmljZSA9IGdzdF9vYmplY3RfcmVmIChkZXZpY2UpOworICByZXQtPmZhbWlseSA9IHF1ZXVlX2ZhbWlseTsKKyAgcmV0LT5pbmRleCA9IHF1ZXVlX2k7CisKKyAgdmtHZXREZXZpY2VRdWV1ZSAoZGV2aWNlLT5kZXZpY2UsIHF1ZXVlX2ZhbWlseSwgcXVldWVfaSwgJnJldC0+cXVldWUpOworCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF92dWxrYW5fZGV2aWNlX2ZvcmVhY2hfcXVldWUgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICBHc3RWdWxrYW5EZXZpY2VGb3JFYWNoUXVldWVGdW5jIGZ1bmMsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgZ2Jvb2xlYW4gZG9uZSA9IEZBTFNFOworICBndWludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBkZXZpY2UtPm5fcXVldWVzOyBpKyspIHsKKyAgICBHc3RWdWxrYW5RdWV1ZSAqcXVldWUgPQorICAgICAgICBnc3RfdnVsa2FuX2RldmljZV9nZXRfcXVldWUgKGRldmljZSwgZGV2aWNlLT5xdWV1ZV9mYW1pbHlfaWQsIGkpOworCisgICAgaWYgKCFmdW5jIChkZXZpY2UsIHF1ZXVlLCB1c2VyX2RhdGEpKQorICAgICAgZG9uZSA9IFRSVUU7CisKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChxdWV1ZSk7CisKKyAgICBpZiAoZG9uZSkKKyAgICAgIGJyZWFrOworICB9Cit9CisKK2dwb2ludGVyCitnc3RfdnVsa2FuX2RldmljZV9nZXRfcHJvY19hZGRyZXNzIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgY29uc3QgZ2NoYXIgKiBuYW1lKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9ERVZJQ0UgKGRldmljZSksIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGV2aWNlLT5kZXZpY2UgIT0gTlVMTCwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChuYW1lICE9IE5VTEwsIE5VTEwpOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKGRldmljZSwgIiVzIiwgbmFtZSk7CisKKyAgcmV0dXJuIHZrR2V0RGV2aWNlUHJvY0FkZHIgKGRldmljZS0+ZGV2aWNlLCBuYW1lKTsKK30KKworR3N0VnVsa2FuSW5zdGFuY2UgKgorZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X2luc3RhbmNlIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX0RFVklDRSAoZGV2aWNlKSwgTlVMTCk7CisKKyAgcmV0dXJuIGRldmljZS0+aW5zdGFuY2UgPyBnc3Rfb2JqZWN0X3JlZiAoZGV2aWNlLT5pbnN0YW5jZSkgOiBOVUxMOworfQorCitWa1BoeXNpY2FsRGV2aWNlCitnc3RfdnVsa2FuX2RldmljZV9nZXRfcGh5c2ljYWxfZGV2aWNlIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX0RFVklDRSAoZGV2aWNlKSwgTlVMTCk7CisKKyAgaWYgKGRldmljZS0+aW5zdGFuY2UtPnBoeXNpY2FsX2RldmljZXMgPT0gTlVMTCkKKyAgICByZXR1cm4gTlVMTDsKKyAgaWYgKGRldmljZS0+ZGV2aWNlX2luZGV4ID49IGRldmljZS0+aW5zdGFuY2UtPm5fcGh5c2ljYWxfZGV2aWNlcykKKyAgICByZXR1cm4gTlVMTDsKKworICByZXR1cm4gZGV2aWNlLT5pbnN0YW5jZS0+cGh5c2ljYWxfZGV2aWNlc1tkZXZpY2UtPmRldmljZV9pbmRleF07Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2RldmljZV9jcmVhdGVfY21kX2J1ZmZlciAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgIFZrQ29tbWFuZEJ1ZmZlciAqIGNtZCwgR0Vycm9yICoqIGVycm9yKQoreworICBWa1Jlc3VsdCBlcnI7CisgIFZrQ29tbWFuZEJ1ZmZlckFsbG9jYXRlSW5mbyBjbWRfaW5mbyA9IHsgMCwgfTsKKworICBjbWRfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0FMTE9DQVRFX0lORk87CisgIGNtZF9pbmZvLnBOZXh0ID0gTlVMTDsKKyAgY21kX2luZm8uY29tbWFuZFBvb2wgPSBkZXZpY2UtPmNtZF9wb29sOworICBjbWRfaW5mby5sZXZlbCA9IFZLX0NPTU1BTkRfQlVGRkVSX0xFVkVMX1BSSU1BUlk7CisgIGNtZF9pbmZvLmNvbW1hbmRCdWZmZXJDb3VudCA9IDE7CisKKyAgZXJyID0gdmtBbGxvY2F0ZUNvbW1hbmRCdWZmZXJzIChkZXZpY2UtPmRldmljZSwgJmNtZF9pbmZvLCBjbWQpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtDcmVhdGVDb21tYW5kQnVmZmVyIikgPCAwKQorICAgIHJldHVybiBGQUxTRTsKKworICBHU1RfTE9HX09CSkVDVCAoZGV2aWNlLCAiY3JlYXRlZCBjbWQgYnVmZmVyICVwIiwgY21kKTsKKworICByZXR1cm4gVFJVRTsKK30KKworLyoqCisgKiBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2RldmljZToKKyAqIEBjb250ZXh0OiBhICNHc3RDb250ZXh0CisgKiBAZGV2aWNlOiBhICNHc3RWdWxrYW5EZXZpY2UKKyAqCisgKiBTZXRzIEBkZXZpY2Ugb24gQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMS4xMAorICovCit2b2lkCitnc3RfY29udGV4dF9zZXRfdnVsa2FuX2RldmljZSAoR3N0Q29udGV4dCAqIGNvbnRleHQsIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSkKK3sKKyAgR3N0U3RydWN0dXJlICpzOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbnRleHQgIT0gTlVMTCk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9jb250ZXh0X2lzX3dyaXRhYmxlIChjb250ZXh0KSk7CisKKyAgaWYgKGRldmljZSkKKyAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9DT05URVhULAorICAgICAgICAic2V0dGluZyBHc3RWdWxrYW5EZXZpY2UoJSIgR1NUX1BUUl9GT1JNQVQgIikgb24gY29udGV4dCglIgorICAgICAgICBHU1RfUFRSX0ZPUk1BVCAiKSIsIGRldmljZSwgY29udGV4dCk7CisKKyAgcyA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVyZSAoY29udGV4dCk7CisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCBHU1RfVlVMS0FOX0RFVklDRV9DT05URVhUX1RZUEVfU1RSLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX0RFVklDRSwgZGV2aWNlLCBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfY29udGV4dF9nZXRfdnVsa2FuX2RldmljZToKKyAqIEBjb250ZXh0OiBhICNHc3RDb250ZXh0CisgKiBAZGV2aWNlOiByZXN1bHRpbmcgI0dzdFZ1bGthbkRldmljZQorICoKKyAqIFJldHVybnM6IFdoZXRoZXIgQGRldmljZSB3YXMgaW4gQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMS4xMAorICovCitnYm9vbGVhbgorZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9kZXZpY2UgKEdzdENvbnRleHQgKiBjb250ZXh0LCBHc3RWdWxrYW5EZXZpY2UgKiogZGV2aWNlKQoreworICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7CisgIGdib29sZWFuIHJldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGV2aWNlICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHQgIT0gTlVMTCwgRkFMU0UpOworCisgIHMgPSBnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlIChjb250ZXh0KTsKKyAgcmV0ID0gZ3N0X3N0cnVjdHVyZV9nZXQgKHMsIEdTVF9WVUxLQU5fREVWSUNFX0NPTlRFWFRfVFlQRV9TVFIsCisgICAgICBHU1RfVFlQRV9WVUxLQU5fREVWSUNFLCBkZXZpY2UsIE5VTEwpOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0NPTlRFWFQsICJnb3QgR3N0VnVsa2FuRGV2aWNlKCUiIEdTVF9QVFJfRk9STUFUCisgICAgICAiKSBmcm9tIGNvbnRleHQoJSIgR1NUX1BUUl9GT1JNQVQgIikiLCAqZGV2aWNlLCBjb250ZXh0KTsKKworICByZXR1cm4gcmV0OworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9kZXZpY2VfaGFuZGxlX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RRdWVyeSAqIHF1ZXJ5LAorICAgIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpCit7CisgIGdib29sZWFuIHJlcyA9IEZBTFNFOworICBjb25zdCBnY2hhciAqY29udGV4dF90eXBlOworICBHc3RDb250ZXh0ICpjb250ZXh0LCAqb2xkX2NvbnRleHQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGVsZW1lbnQgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAocXVlcnkgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSA9PSBHU1RfUVVFUllfQ09OVEVYVCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGV2aWNlICE9IE5VTEwsIEZBTFNFKTsKKworICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dF90eXBlIChxdWVyeSwgJmNvbnRleHRfdHlwZSk7CisKKyAgaWYgKGdfc3RyY21wMCAoY29udGV4dF90eXBlLCBHU1RfVlVMS0FOX0RFVklDRV9DT05URVhUX1RZUEVfU1RSKSA9PSAwKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmb2xkX2NvbnRleHQpOworCisgICAgaWYgKG9sZF9jb250ZXh0KQorICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X2NvcHkgKG9sZF9jb250ZXh0KTsKKyAgICBlbHNlCisgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3IChHU1RfVlVMS0FOX0RFVklDRV9DT05URVhUX1RZUEVfU1RSLCBUUlVFKTsKKworICAgIGdzdF9jb250ZXh0X3NldF92dWxrYW5fZGV2aWNlIChjb250ZXh0LCAqZGV2aWNlKTsKKyAgICBnc3RfcXVlcnlfc2V0X2NvbnRleHQgKHF1ZXJ5LCBjb250ZXh0KTsKKyAgICBnc3RfY29udGV4dF91bnJlZiAoY29udGV4dCk7CisKKyAgICByZXMgPSAqZGV2aWNlICE9IE5VTEw7CisgIH0KKworICByZXR1cm4gcmVzOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9kZXZpY2VfcnVuX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpCit7CisgIEdzdFF1ZXJ5ICpxdWVyeTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0VMRU1FTlQgKGVsZW1lbnQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkZXZpY2UgIT0gTlVMTCwgRkFMU0UpOworCisgIGlmICgqZGV2aWNlICYmIEdTVF9JU19WVUxLQU5fREVWSUNFICgqZGV2aWNlKSkKKyAgICByZXR1cm4gVFJVRTsKKworICBpZiAoKHF1ZXJ5ID0KKyAgICAgICAgICBnc3RfdnVsa2FuX2xvY2FsX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsCisgICAgICAgICAgICAgIEdTVF9WVUxLQU5fREVWSUNFX0NPTlRFWFRfVFlQRV9TVFIsIEZBTFNFKSkpIHsKKyAgICBHc3RDb250ZXh0ICpjb250ZXh0OworCisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY29udGV4dCk7CisgICAgaWYgKGNvbnRleHQpCisgICAgICBnc3RfY29udGV4dF9nZXRfdnVsa2FuX2RldmljZSAoY29udGV4dCwgZGV2aWNlKTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJmb3VuZCBkZXZpY2UgJXAiLCAqZGV2aWNlKTsKKworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICBpZiAoKmRldmljZSkKKyAgICByZXR1cm4gVFJVRTsKKworICByZXR1cm4gRkFMU0U7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrZGV2aWNlLmggYi9leHQvdnVsa2FuL3ZrZGV2aWNlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjJiMTA2NQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtkZXZpY2UuaApAQCAtMCwwICsxLDk5IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX1ZLX0RFVklDRV9IXworI2RlZmluZSBfVktfREVWSUNFX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSAidmsuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UgICAgICAgICAoZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ERVZJQ0UobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UsIEdzdFZ1bGthbkRldmljZSkpCisjZGVmaW5lIEdTVF9WVUxLQU5fREVWSUNFX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGspLCBHU1RfVFlQRV9WVUxLQU5fREVWSUNFLCBHc3RWdWxrYW5EZXZpY2VDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fREVWSUNFKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfVFlQRV9WVUxLQU5fREVWSUNFKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9ERVZJQ0VfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9UWVBFX1ZVTEtBTl9ERVZJQ0UpKQorI2RlZmluZSBHU1RfVlVMS0FOX0RFVklDRV9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfVFlQRV9WVUxLQU5fREVWSUNFLCBHc3RWdWxrYW5EZXZpY2VDbGFzcykpCitHVHlwZSBnc3RfdnVsa2FuX2RldmljZV9nZXRfdHlwZSAgICAgICAodm9pZCk7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ERVZJQ0VfQ09OVEVYVF9UWVBFX1NUUiAiZ3N0LnZ1bGthbi5kZXZpY2UiCisKK3R5cGVkZWYgZ2Jvb2xlYW4gKCpHc3RWdWxrYW5EZXZpY2VGb3JFYWNoUXVldWVGdW5jKSAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBHc3RWdWxrYW5RdWV1ZSAqIHF1ZXVlLCBncG9pbnRlciB1c2VyX2RhdGEpOworCitzdHJ1Y3QgX0dzdFZ1bGthbkRldmljZQoreworICBHc3RPYmplY3QgcGFyZW50OworCisgIEdzdFZ1bGthbkluc3RhbmNlICppbnN0YW5jZTsKKworICBndWludCBkZXZpY2VfaW5kZXg7CisgIFZrRGV2aWNlIGRldmljZTsgLyogaGlkZXMgYSBwb2ludGVyICovCisgIFZrUGh5c2ljYWxEZXZpY2VQcm9wZXJ0aWVzIGdwdV9wcm9wczsKKyAgVmtQaHlzaWNhbERldmljZUZlYXR1cmVzIGdwdV9mZWF0dXJlczsKKyAgVmtQaHlzaWNhbERldmljZU1lbW9yeVByb3BlcnRpZXMgbWVtb3J5X3Byb3BlcnRpZXM7CisKKyAgVmtRdWV1ZUZhbWlseVByb3BlcnRpZXMgKnF1ZXVlX2ZhbWlseV9wcm9wczsKKyAgZ3VpbnQzMiBuX3F1ZXVlX2ZhbWlsaWVzOworCisgIGd1aW50MzIgcXVldWVfZmFtaWx5X2lkOworICBndWludDMyIG5fcXVldWVzOworCisgIFZrQ29tbWFuZFBvb2wgY21kX3Bvb2w7CisKKyAgR3N0VnVsa2FuRGV2aWNlUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfR3N0VnVsa2FuRGV2aWNlQ2xhc3MKK3sKKyAgR3N0T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR3N0VnVsa2FuRGV2aWNlICogICBnc3RfdnVsa2FuX2RldmljZV9uZXcgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UpOworR3N0VnVsa2FuSW5zdGFuY2UgKiBnc3RfdnVsa2FuX2RldmljZV9nZXRfaW5zdGFuY2UgICAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX2RldmljZV9vcGVuICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyb3IpOworCitncG9pbnRlciAgICAgICAgICAgIGdzdF92dWxrYW5fZGV2aWNlX2dldF9wcm9jX2FkZHJlc3MgICAgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogbmFtZSk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF92dWxrYW5fZGV2aWNlX2ZvcmVhY2hfcXVldWUgICAgICAgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRldmljZUZvckVhY2hRdWV1ZUZ1bmMgZnVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworR3N0VnVsa2FuUXVldWUgKiAgICBnc3RfdnVsa2FuX2RldmljZV9nZXRfcXVldWUgICAgICAgICAgICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyIHF1ZXVlX2ZhbWlseSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyIHF1ZXVlX2kpOworVmtQaHlzaWNhbERldmljZSAgICBnc3RfdnVsa2FuX2RldmljZV9nZXRfcGh5c2ljYWxfZGV2aWNlICAgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSk7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF92dWxrYW5fZGV2aWNlX2NyZWF0ZV9jbWRfYnVmZmVyICAgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrQ29tbWFuZEJ1ZmZlciAqIGNtZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyb3IpOworCit2b2lkICAgICAgICAgICAgICAgIGdzdF9jb250ZXh0X3NldF92dWxrYW5fZGV2aWNlICAgICAgICAgICAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9kZXZpY2UgICAgICAgICAgIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EZXZpY2UgKiogZGV2aWNlKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X3Z1bGthbl9kZXZpY2VfaGFuZGxlX2NvbnRleHRfcXVlcnkgIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RRdWVyeSAqIHF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX2RldmljZV9ydW5fY29udGV4dF9xdWVyeSAgICAgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRldmljZSAqKiBkZXZpY2UpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX1ZLX0RFVklDRV9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2Rpc3BsYXkuYyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTA2NjgyMQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmMKQEAgLTAsMCArMSw0NjYgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNyBEYXZpZCBBLiBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBKdWxpZW4gSXNvcmNlIDxqdWxpZW4uaXNvcmNlQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBGaWxpcHBvIEFyZ2lvbGFzIDxmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2a2Rpc3BsYXkuaCIKKworI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWDExCisjaW5jbHVkZSAieDExL3ZrZGlzcGxheV94MTEuaCIKKyNlbmRpZgorI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCisjaW5jbHVkZSAieGNiL3ZrZGlzcGxheV94Y2IuaCIKKyNlbmRpZgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0NPTlRFWFQpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3Z1bGthbl9kaXNwbGF5X2RlYnVnCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOworCitzdGF0aWMgdm9pZAorX2luaXRfZGVidWcgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfREVGQVVMVCwgInZ1bGthbmRpc3BsYXkiLCAwLAorICAgICAgICAiVnVsa2FuIGRpc3BsYXkiKTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChHU1RfQ0FUX0NPTlRFWFQsICJHU1RfQ09OVEVYVCIpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RWdWxrYW5EaXNwbGF5LCBnc3RfdnVsa2FuX2Rpc3BsYXksIEdTVF9UWVBFX09CSkVDVCwKKyAgICBfaW5pdF9kZWJ1ZyAoKSk7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX0dFVF9QUklWQVRFKG8pIFwKKyAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgobyksIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZLCBHc3RWdWxrYW5EaXNwbGF5UHJpdmF0ZSkpCisKK2VudW0KK3sKKyAgU0lHTkFMXzAsCisgIENSRUFURV9DT05URVhULAorICBMQVNUX1NJR05BTAorfTsKKworLyogc3RhdGljIGd1aW50IGdzdF92dWxrYW5fZGlzcGxheV9zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCB9OyAqLworCitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX2Rpc3BsYXlfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIGdwb2ludGVyIGdzdF92dWxrYW5fZGlzcGxheV9kZWZhdWx0X2dldF9oYW5kbGUgKEdzdFZ1bGthbkRpc3BsYXkgKgorICAgIGRpc3BsYXkpOworc3RhdGljIEdzdFZ1bGthbldpbmRvdworICAgICogZ3N0X3Z1bGthbl9kaXNwbGF5X2RlZmF1bHRfY3JlYXRlX3dpbmRvdyAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworCitzdHJ1Y3QgX0dzdFZ1bGthbkRpc3BsYXlQcml2YXRlCit7CisgIEdUaHJlYWQgKmV2ZW50X3RocmVhZDsKKworICBHTXV0ZXggdGhyZWFkX2xvY2s7CisgIEdDb25kIHRocmVhZF9jb25kOworfTsKKworc3RhdGljIGdwb2ludGVyCitfZXZlbnRfdGhyZWFkX21haW4gKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICBnX211dGV4X2xvY2sgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisKKyAgZGlzcGxheS0+bWFpbl9jb250ZXh0ID0gZ19tYWluX2NvbnRleHRfbmV3ICgpOworICBkaXNwbGF5LT5tYWluX2xvb3AgPSBnX21haW5fbG9vcF9uZXcgKGRpc3BsYXktPm1haW5fY29udGV4dCwgRkFMU0UpOworCisgIGdfY29uZF9icm9hZGNhc3QgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfY29uZCk7CisgIGdfbXV0ZXhfdW5sb2NrICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2xvY2spOworCisgIGdfbWFpbl9sb29wX3J1biAoZGlzcGxheS0+bWFpbl9sb29wKTsKKworICBnX211dGV4X2xvY2sgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisKKyAgZ19tYWluX2xvb3BfdW5yZWYgKGRpc3BsYXktPm1haW5fbG9vcCk7CisgIGdfbWFpbl9jb250ZXh0X3VucmVmIChkaXNwbGF5LT5tYWluX2NvbnRleHQpOworCisgIGRpc3BsYXktPm1haW5fbG9vcCA9IE5VTEw7CisgIGRpc3BsYXktPm1haW5fY29udGV4dCA9IE5VTEw7CisKKyAgZ19jb25kX2Jyb2FkY2FzdCAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2Rpc3BsYXlfY2xhc3NfaW5pdCAoR3N0VnVsa2FuRGlzcGxheUNsYXNzICoga2xhc3MpCit7CisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0VnVsa2FuRGlzcGxheVByaXZhdGUpKTsKKworICBrbGFzcy0+Z2V0X2hhbmRsZSA9IGdzdF92dWxrYW5fZGlzcGxheV9kZWZhdWx0X2dldF9oYW5kbGU7CisgIGtsYXNzLT5jcmVhdGVfd2luZG93ID0gZ3N0X3Z1bGthbl9kaXNwbGF5X2RlZmF1bHRfY3JlYXRlX3dpbmRvdzsKKworICBHX09CSkVDVF9DTEFTUyAoa2xhc3MpLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5fZGlzcGxheV9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fZGlzcGxheV9pbml0IChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSkKK3sKKyAgZGlzcGxheS0+cHJpdiA9IEdTVF9WVUxLQU5fRElTUExBWV9HRVRfUFJJVkFURSAoZGlzcGxheSk7CisgIGRpc3BsYXktPnR5cGUgPSBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9BTlk7CisKKyAgZ19tdXRleF9pbml0ICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2xvY2spOworICBnX2NvbmRfaW5pdCAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9jb25kKTsKKworICBkaXNwbGF5LT5wcml2LT5ldmVudF90aHJlYWQgPSBnX3RocmVhZF9uZXcgKCJ2a2Rpc3BsYXktZXZlbnQiLAorICAgICAgKEdUaHJlYWRGdW5jKSBfZXZlbnRfdGhyZWFkX21haW4sIGRpc3BsYXkpOworCisgIGdfbXV0ZXhfbG9jayAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9sb2NrKTsKKyAgd2hpbGUgKCFkaXNwbGF5LT5tYWluX2xvb3ApCisgICAgZ19jb25kX3dhaXQgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfY29uZCwgJmRpc3BsYXktPnByaXYtPnRocmVhZF9sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZkaXNwbGF5LT5wcml2LT50aHJlYWRfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2Rpc3BsYXlfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFZ1bGthbkRpc3BsYXkgKmRpc3BsYXkgPSBHU1RfVlVMS0FOX0RJU1BMQVkgKG9iamVjdCk7CisKKyAgZ19tdXRleF9sb2NrICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2xvY2spOworICBpZiAoZGlzcGxheS0+bWFpbl9jb250ZXh0ICYmIGRpc3BsYXktPmV2ZW50X3NvdXJjZSkgeworICAgIGdfc291cmNlX2Rlc3Ryb3kgKGRpc3BsYXktPmV2ZW50X3NvdXJjZSk7CisgICAgZ19zb3VyY2VfdW5yZWYgKGRpc3BsYXktPmV2ZW50X3NvdXJjZSk7CisgIH0KKyAgZGlzcGxheS0+ZXZlbnRfc291cmNlID0gTlVMTDsKKworICBpZiAoZGlzcGxheS0+bWFpbl9sb29wKQorICAgIGdfbWFpbl9sb29wX3F1aXQgKGRpc3BsYXktPm1haW5fbG9vcCk7CisKKyAgd2hpbGUgKGRpc3BsYXktPm1haW5fbG9vcCkKKyAgICBnX2NvbmRfd2FpdCAoJmRpc3BsYXktPnByaXYtPnRocmVhZF9jb25kLCAmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2xvY2spOworCisgIGlmIChkaXNwbGF5LT5wcml2LT5ldmVudF90aHJlYWQpCisgICAgZ190aHJlYWRfdW5yZWYgKGRpc3BsYXktPnByaXYtPmV2ZW50X3RocmVhZCk7CisgIGRpc3BsYXktPnByaXYtPmV2ZW50X3RocmVhZCA9IE5VTEw7CisgIGdfbXV0ZXhfdW5sb2NrICgmZGlzcGxheS0+cHJpdi0+dGhyZWFkX2xvY2spOworCisgIGlmIChkaXNwbGF5LT5pbnN0YW5jZSkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKGRpc3BsYXktPmluc3RhbmNlKTsKKyAgfQorCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfdnVsa2FuX2Rpc3BsYXlfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK0dzdFZ1bGthbkRpc3BsYXkgKgorZ3N0X3Z1bGthbl9kaXNwbGF5X25ld193aXRoX3R5cGUgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UsCisgICAgR3N0VnVsa2FuRGlzcGxheVR5cGUgdHlwZSkKK3sKKyAgR3N0VnVsa2FuRGlzcGxheSAqZGlzcGxheSA9IE5VTEw7CisKKyAgX2luaXRfZGVidWcgKCk7CisKKyNpZiBHU1RfVlVMS0FOX0hBVkVfV0lORE9XX1hDQgorICBpZiAoIWRpc3BsYXkgJiYgdHlwZSAmIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQikgeworICAgIGRpc3BsYXkgPSBHU1RfVlVMS0FOX0RJU1BMQVkgKGdzdF92dWxrYW5fZGlzcGxheV94Y2JfbmV3IChOVUxMKSk7CisgIH0KKyNlbmRpZgorCisgIGlmIChkaXNwbGF5KQorICAgIGRpc3BsYXktPmluc3RhbmNlID0gZ3N0X29iamVjdF9yZWYgKGluc3RhbmNlKTsKKworICByZXR1cm4gZGlzcGxheTsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2Rpc3BsYXlfbmV3OgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0dzdFZ1bGthbkRpc3BsYXkKKyAqCisgKiBTaW5jZTogMS4xMAorICovCitHc3RWdWxrYW5EaXNwbGF5ICoKK2dzdF92dWxrYW5fZGlzcGxheV9uZXcgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UpCit7CisgIEdzdFZ1bGthbkRpc3BsYXlUeXBlIHR5cGU7CisgIEdzdFZ1bGthbkRpc3BsYXkgKmRpc3BsYXkgPSBOVUxMOworCisgIHR5cGUgPSBnc3RfdnVsa2FuX2Rpc3BsYXlfY2hvb3NlX3R5cGUgKGluc3RhbmNlKTsKKyAgZGlzcGxheSA9IGdzdF92dWxrYW5fZGlzcGxheV9uZXdfd2l0aF90eXBlIChpbnN0YW5jZSwgdHlwZSk7CisKKyAgaWYgKCFkaXNwbGF5KSB7CisgICAgLyogc3ViY2xhc3MgcmV0dXJuZWQgYSBOVUxMIGRpc3BsYXkgKi8KKyAgICBHU1RfRklYTUUgKCJjcmVhdGluZyBkdW1teSBkaXNwbGF5Iik7CisKKyAgICBkaXNwbGF5ID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9WVUxLQU5fRElTUExBWSwgTlVMTCk7CisgICAgZGlzcGxheS0+aW5zdGFuY2UgPSBnc3Rfb2JqZWN0X3JlZiAoaW5zdGFuY2UpOworICB9CisKKyAgcmV0dXJuIGRpc3BsYXk7Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl9kaXNwbGF5X2dldF9oYW5kbGU6CisgKiBAZGlzcGxheTogYSAjR3N0VnVsa2FuRGlzcGxheQorICoKKyAqIFJldHVybnM6IHRoZSB3aW5zeXMgc3BlY2lmaWMgaGFuZGxlIG9mIEBkaXNwbGF5CisgKgorICogU2luY2U6IDEuMTAKKyAqLworZ3BvaW50ZXIKK2dzdF92dWxrYW5fZGlzcGxheV9nZXRfaGFuZGxlIChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSkKK3sKKyAgR3N0VnVsa2FuRGlzcGxheUNsYXNzICprbGFzczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9ESVNQTEFZIChkaXNwbGF5KSwgTlVMTCk7CisgIGtsYXNzID0gR1NUX1ZVTEtBTl9ESVNQTEFZX0dFVF9DTEFTUyAoZGlzcGxheSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChrbGFzcy0+Z2V0X2hhbmRsZSAhPSBOVUxMLCBOVUxMKTsKKworICByZXR1cm4ga2xhc3MtPmdldF9oYW5kbGUgKGRpc3BsYXkpOworfQorCitzdGF0aWMgZ3BvaW50ZXIKK2dzdF92dWxrYW5fZGlzcGxheV9kZWZhdWx0X2dldF9oYW5kbGUgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICByZXR1cm4gMDsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2Rpc3BsYXlfZ2V0X2hhbmRsZV90eXBlOgorICogQGRpc3BsYXk6IGEgI0dzdFZ1bGthbkRpc3BsYXkKKyAqCisgKiBSZXR1cm5zOiB0aGUgI0dzdFZ1bGthbkRpc3BsYXlUeXBlIG9mIEBkaXNwbGF5CisgKgorICogU2luY2U6IDEuMTAKKyAqLworR3N0VnVsa2FuRGlzcGxheVR5cGUKK2dzdF92dWxrYW5fZGlzcGxheV9nZXRfaGFuZGxlX3R5cGUgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9ESVNQTEFZIChkaXNwbGF5KSwKKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX05PTkUpOworCisgIHJldHVybiBkaXNwbGF5LT50eXBlOworfQorCisvKioKKyAqIGdzdF92dWxrYW5fZGlzcGxheV9jcmVhdGVfd2luZG93OgorICogQGRpc3BsYXk6IGEgI0dzdFZ1bGthbkRpc3BsYXkKKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0VnVsa2FuV2luZG93IGZvciBAZGlzcGxheSBvciAlTlVMTC4KKyAqLworR3N0VnVsa2FuV2luZG93ICoKK2dzdF92dWxrYW5fZGlzcGxheV9jcmVhdGVfd2luZG93IChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSkKK3sKKyAgR3N0VnVsa2FuRGlzcGxheUNsYXNzICprbGFzczsKKyAgR3N0VnVsa2FuV2luZG93ICp3aW5kb3c7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fRElTUExBWSAoZGlzcGxheSksIE5VTEwpOworICBrbGFzcyA9IEdTVF9WVUxLQU5fRElTUExBWV9HRVRfQ0xBU1MgKGRpc3BsYXkpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoa2xhc3MtPmNyZWF0ZV93aW5kb3cgIT0gTlVMTCwgTlVMTCk7CisKKyAgd2luZG93ID0ga2xhc3MtPmNyZWF0ZV93aW5kb3cgKGRpc3BsYXkpOworCisgIGlmICh3aW5kb3cpIHsKKyAgICBHU1RfT0JKRUNUX0xPQ0sgKGRpc3BsYXkpOworICAgIGRpc3BsYXktPndpbmRvd3MgPSBnX2xpc3RfcHJlcGVuZCAoZGlzcGxheS0+d2luZG93cywgd2luZG93KTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoZGlzcGxheSk7CisgIH0KKworICByZXR1cm4gd2luZG93OworfQorCitzdGF0aWMgR3N0VnVsa2FuV2luZG93ICoKK2dzdF92dWxrYW5fZGlzcGxheV9kZWZhdWx0X2NyZWF0ZV93aW5kb3cgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICByZXR1cm4gZ3N0X3Z1bGthbl93aW5kb3dfbmV3IChkaXNwbGF5KTsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fZGlzcGxheV9yZW1vdmVfd2luZG93IChHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSwKKyAgICBHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworICBHTGlzdCAqbDsKKworICBHU1RfT0JKRUNUX0xPQ0sgKGRpc3BsYXkpOworICBsID0gZ19saXN0X2ZpbmQgKGRpc3BsYXktPndpbmRvd3MsIHdpbmRvdyk7CisgIGlmIChsKSB7CisgICAgZGlzcGxheS0+d2luZG93cyA9IGdfbGlzdF9kZWxldGVfbGluayAoZGlzcGxheS0+d2luZG93cywgbCk7CisgICAgcmV0ID0gVFJVRTsKKyAgfQorICBHU1RfT0JKRUNUX1VOTE9DSyAoZGlzcGxheSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2Rpc3BsYXk6CisgKiBAY29udGV4dDogYSAjR3N0Q29udGV4dAorICogQGRpc3BsYXk6IGEgI0dzdFZ1bGthbkRpc3BsYXkKKyAqCisgKiBTZXRzIEBkaXNwbGF5IG9uIEBjb250ZXh0CisgKgorICogU2luY2U6IDEuMTAKKyAqLwordm9pZAorZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9kaXNwbGF5IChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSkKK3sKKyAgR3N0U3RydWN0dXJlICpzOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbnRleHQgIT0gTlVMTCk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9jb250ZXh0X2lzX3dyaXRhYmxlIChjb250ZXh0KSk7CisKKyAgaWYgKGRpc3BsYXkpCisgICAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfQ09OVEVYVCwKKyAgICAgICAgInNldHRpbmcgR3N0VnVsa2FuRGlzcGxheSglIiBHU1RfUFRSX0ZPUk1BVCAiKSBvbiBjb250ZXh0KCUiCisgICAgICAgIEdTVF9QVFJfRk9STUFUICIpIiwgZGlzcGxheSwgY29udGV4dCk7CisKKyAgcyA9IGdzdF9jb250ZXh0X3dyaXRhYmxlX3N0cnVjdHVyZSAoY29udGV4dCk7CisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCBHU1RfVlVMS0FOX0RJU1BMQVlfQ09OVEVYVF9UWVBFX1NUUiwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZLCBkaXNwbGF5LCBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfY29udGV4dF9nZXRfdnVsa2FuX2Rpc3BsYXk6CisgKiBAY29udGV4dDogYSAjR3N0Q29udGV4dAorICogQGRpc3BsYXk6IHJlc3VsdGluZyAjR3N0VnVsa2FuRGlzcGxheQorICoKKyAqIFJldHVybnM6IFdoZXRoZXIgQGRpc3BsYXkgd2FzIGluIEBjb250ZXh0CisgKgorICogU2luY2U6IDEuMTAKKyAqLworZ2Jvb2xlYW4KK2dzdF9jb250ZXh0X2dldF92dWxrYW5fZGlzcGxheSAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKiBkaXNwbGF5KQoreworICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7CisgIGdib29sZWFuIHJldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGlzcGxheSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb250ZXh0ICE9IE5VTEwsIEZBTFNFKTsKKworICBzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY29udGV4dCk7CisgIHJldCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCBHU1RfVlVMS0FOX0RJU1BMQVlfQ09OVEVYVF9UWVBFX1NUUiwKKyAgICAgIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZLCBkaXNwbGF5LCBOVUxMKTsKKworICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9DT05URVhULCAiZ290IEdzdFZ1bGthbkRpc3BsYXkoJSIgR1NUX1BUUl9GT1JNQVQKKyAgICAgICIpIGZyb20gY29udGV4dCglIiBHU1RfUFRSX0ZPUk1BVCAiKSIsICpkaXNwbGF5LCBjb250ZXh0KTsKKworICByZXR1cm4gcmV0OworfQorCitHc3RWdWxrYW5EaXNwbGF5VHlwZQorZ3N0X3Z1bGthbl9kaXNwbGF5X2Nob29zZV90eXBlIChHc3RWdWxrYW5JbnN0YW5jZSAqIGluc3RhbmNlKQoreworICBjb25zdCBnY2hhciAqd2luZG93X3N0cjsKKyAgR3N0VnVsa2FuRGlzcGxheVR5cGUgdHlwZSA9IEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX05PTkU7CisgIEdzdFZ1bGthbkRpc3BsYXlUeXBlIGZpcnN0X3N1cHBvcnRlZCA9IEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX05PTkU7CisKKyAgd2luZG93X3N0ciA9IGdfZ2V0ZW52ICgiR1NUX1ZVTEtBTl9XSU5ET1ciKTsKKworICAvKiBGSVhNRTogZW51bWVyYXRlIGluc3RhbmNlIGV4dGVuc2lvbnMgZm9yIHRoZSBzdXBwb3J0ZWQgd2luc3lzJyAqLworCisjZGVmaW5lIENIT09TRV9XSU5TWVMobG5hbWUsdW5hbWUpIFwKKyAgR19TVE1UX1NUQVJUIHsgXAorICAgIGlmICghdHlwZSAmJiBnX3N0cmNtcDAgKHdpbmRvd19zdHIsIEdfU1RSSU5HSUZZIChsbmFtZSkpID09IDApIHsgXAorICAgICAgdHlwZSA9IEdfUEFTVEUoR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfLHVuYW1lKTsgXAorICAgIH0gXAorICAgIGlmICghZmlyc3Rfc3VwcG9ydGVkKSBcCisgICAgICBmaXJzdF9zdXBwb3J0ZWQgPSBHX1BBU1RFKEdTVF9WVUxLQU5fRElTUExBWV9UWVBFXyx1bmFtZSk7IFwKKyAgfSBHX1NUTVRfRU5ECisKKyNpZiBHU1RfVlVMS0FOX0hBVkVfV0lORE9XX1hDQgorICBDSE9PU0VfV0lOU1lTICh4Y2IsIFhDQik7CisjZW5kaWYKKworI3VuZGVmIENIT09TRV9XSU5TWVMKKworICBpZiAodHlwZSkKKyAgICByZXR1cm4gdHlwZTsKKworICBpZiAoZmlyc3Rfc3VwcG9ydGVkKQorICAgIHJldHVybiBmaXJzdF9zdXBwb3J0ZWQ7CisKKyAgcmV0dXJuIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX05PTkU7Cit9CisKK2NvbnN0IGdjaGFyICoKK2dzdF92dWxrYW5fZGlzcGxheV90eXBlX3RvX2V4dGVuc2lvbl9zdHJpbmcgKEdzdFZ1bGthbkRpc3BsYXlUeXBlIHR5cGUpCit7CisgIGlmICh0eXBlID09IEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX05PTkUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKHR5cGUgJiBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9YQ0IpCisgICAgcmV0dXJuIFZLX0tIUl9YQ0JfU1VSRkFDRV9FWFRFTlNJT05fTkFNRTsKKworICByZXR1cm4gTlVMTDsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fZGlzcGxheV9oYW5kbGVfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFF1ZXJ5ICogcXVlcnksCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKiBkaXNwbGF5KQoreworICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKKyAgY29uc3QgZ2NoYXIgKmNvbnRleHRfdHlwZTsKKyAgR3N0Q29udGV4dCAqY29udGV4dCwgKm9sZF9jb250ZXh0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChlbGVtZW50ICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHF1ZXJ5ICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkgPT0gR1NUX1FVRVJZX0NPTlRFWFQsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRpc3BsYXkgIT0gTlVMTCwgRkFMU0UpOworCisgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0X3R5cGUgKHF1ZXJ5LCAmY29udGV4dF90eXBlKTsKKworICBpZiAoZ19zdHJjbXAwIChjb250ZXh0X3R5cGUsIEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSKSA9PSAwKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmb2xkX2NvbnRleHQpOworCisgICAgaWYgKG9sZF9jb250ZXh0KQorICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X2NvcHkgKG9sZF9jb250ZXh0KTsKKyAgICBlbHNlCisgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3IChHU1RfVlVMS0FOX0RJU1BMQVlfQ09OVEVYVF9UWVBFX1NUUiwgVFJVRSk7CisKKyAgICBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2Rpc3BsYXkgKGNvbnRleHQsICpkaXNwbGF5KTsKKyAgICBnc3RfcXVlcnlfc2V0X2NvbnRleHQgKHF1ZXJ5LCBjb250ZXh0KTsKKyAgICBnc3RfY29udGV4dF91bnJlZiAoY29udGV4dCk7CisKKyAgICByZXMgPSAqZGlzcGxheSAhPSBOVUxMOworICB9CisKKyAgcmV0dXJuIHJlczsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fZGlzcGxheV9ydW5fY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKiBkaXNwbGF5KQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0VMRU1FTlQgKGVsZW1lbnQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkaXNwbGF5ICE9IE5VTEwsIEZBTFNFKTsKKworICBpZiAoKmRpc3BsYXkgJiYgR1NUX0lTX1ZVTEtBTl9ESVNQTEFZICgqZGlzcGxheSkpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgZ3N0X3Z1bGthbl9nbG9iYWxfY29udGV4dF9xdWVyeSAoZWxlbWVudCwKKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChlbGVtZW50LCAiZm91bmQgZGlzcGxheSAlcCIsICpkaXNwbGF5KTsKKworICBpZiAoKmRpc3BsYXkpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2Rpc3BsYXkuaCBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjBiYmI0ZgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtkaXNwbGF5LmgKQEAgLTAsMCArMSwxMTYgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAwNyBEYXZpZCBBLiBTY2hsZWVmIDxkc0BzY2hsZWVmLm9yZz4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBKdWxpZW4gSXNvcmNlIDxqdWxpZW4uaXNvcmNlQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAwOCBGaWxpcHBvIEFyZ2lvbGFzIDxmaWxpcHBvLmFyZ2lvbGFzQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMyBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1ZVTEtBTl9ESVNQTEFZX0hfXworI2RlZmluZSBfX0dTVF9WVUxLQU5fRElTUExBWV9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fRElTUExBWSAgICAgICAgICAgICAoZ3N0X3Z1bGthbl9kaXNwbGF5X2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fRElTUExBWShvYmopICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9WVUxLQU5fRElTUExBWSxHc3RWdWxrYW5EaXNwbGF5KSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZLEdzdFZ1bGthbkRpc3BsYXlDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fRElTUExBWShvYmopICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9WVUxLQU5fRElTUExBWSkpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fRElTUExBWV9DTEFTUyhrbGFzcykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLCBHU1RfVFlQRV9WVUxLQU5fRElTUExBWSkpCisjZGVmaW5lIEdTVF9WVUxLQU5fRElTUExBWV9DQVNUKG9iaikgICAgICAgICgoR3N0VnVsa2FuRGlzcGxheSopKG9iaikpCisjZGVmaW5lIEdTVF9WVUxLQU5fRElTUExBWV9HRVRfQ0xBU1MobykgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVksIEdzdFZ1bGthbkRpc3BsYXlDbGFzcykpCitHVHlwZSBnc3RfdnVsa2FuX2Rpc3BsYXlfZ2V0X3R5cGUgKHZvaWQpOworCisjZGVmaW5lIEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSICJnc3QudnVsa2FuLmRpc3BsYXkiCisKK2VudW0gX0dzdFZ1bGthbkRpc3BsYXlUeXBlCit7CisgIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX05PTkUgPSAwLAorICBHU1RfVlVMS0FOX0RJU1BMQVlfVFlQRV9YMTEgPSAoMSA8PCAwKSwKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfWENCID0gKDEgPDwgMSksCisgIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1dBWUxBTkQgPSAoMSA8PCAyKSwKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfTUlSID0gKDEgPDwgMyksCisgIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1dJTjMyID0gKDEgPDwgNCksCisKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZX1RZUEVfQU5ZID0gR19NQVhVSU5UMzIKK307CisKKy8qKgorICogR3N0VnVsa2FuRGlzcGxheToKKyAqCisgKiBUaGUgY29udGVudHMgb2YgYSAjR3N0VnVsa2FuRGlzcGxheSBhcmUgcHJpdmF0ZSBhbmQgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQKKyAqIHRocm91Z2ggdGhlIHByb3ZpZGVkIEFQSQorICovCitzdHJ1Y3QgX0dzdFZ1bGthbkRpc3BsYXkKK3sKKyAgLyogPHByaXZhdGU+ICovCisgIEdzdE9iamVjdCAgICAgICAgICAgICAgICAgb2JqZWN0OworCisgIEdzdFZ1bGthbkRpc3BsYXlUeXBlICAgICAgdHlwZTsKKworICBHc3RWdWxrYW5JbnN0YW5jZSAgICAgICAgKmluc3RhbmNlOworCisgIC8qIDxwcm90ZWN0ZWQ+ICovCisgIEdMaXN0ICAgICAgICAgICAgICAgICAgICAqd2luZG93czsgICAgICAgIC8qIE9CSkVDVCBsb2NrICovCisgIEdNYWluQ29udGV4dCAgICAgICAgICAgICAqbWFpbl9jb250ZXh0OworICBHTWFpbkxvb3AgICAgICAgICAgICAgICAgKm1haW5fbG9vcDsKKyAgR1NvdXJjZSAgICAgICAgICAgICAgICAgICpldmVudF9zb3VyY2U7CisKKyAgLyogPHByaXZhdGU+ICovCisgIEdzdFZ1bGthbkRpc3BsYXlQcml2YXRlICAqcHJpdjsKK307CisKK3N0cnVjdCBfR3N0VnVsa2FuRGlzcGxheUNsYXNzCit7CisgIEdzdE9iamVjdENsYXNzIG9iamVjdF9jbGFzczsKKworICBncG9pbnRlciAgICAgICAgICAoKmdldF9oYW5kbGUpICAgICAgICAgICAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworICBHc3RWdWxrYW5XaW5kb3cgKiAoKmNyZWF0ZV93aW5kb3cpICAgICAgICAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworfTsKKworR3N0VnVsa2FuRGlzcGxheSAqICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X25ldyAgICAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlKTsKK0dzdFZ1bGthbkRpc3BsYXkgKiAgICAgIGdzdF92dWxrYW5fZGlzcGxheV9uZXdfd2l0aF90eXBlICAgICAgICAgICAgKEdzdFZ1bGthbkluc3RhbmNlICppbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkRpc3BsYXlUeXBlIHR5cGUpOworR3N0VnVsa2FuRGlzcGxheVR5cGUgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X2Nob29zZV90eXBlICAgICAgICAgICAgICAoR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlKTsKK2NvbnN0IGdjaGFyICogICAgICAgICAgIGdzdF92dWxrYW5fZGlzcGxheV90eXBlX3RvX2V4dGVuc2lvbl9zdHJpbmcgKEdzdFZ1bGthbkRpc3BsYXlUeXBlIHR5cGUpOworCisKK2dwb2ludGVyICAgICAgICAgICAgICAgIGdzdF92dWxrYW5fZGlzcGxheV9nZXRfaGFuZGxlICAgICAgICAgICAgICAgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KTsKK0dzdFZ1bGthbkRpc3BsYXlUeXBlICAgIGdzdF92dWxrYW5fZGlzcGxheV9nZXRfaGFuZGxlX3R5cGUgICAgICAgICAgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KTsKK0dzdFZ1bGthbldpbmRvdyAqICAgICAgIGdzdF92dWxrYW5fZGlzcGxheV9jcmVhdGVfd2luZG93ICAgICAgICAgICAgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KTsKKworZ2Jvb2xlYW4gICAgICAgICAgICAgICAgZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9kaXNwbGF5ICAgICAgICAgICAgICAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXkpOwordm9pZCAgICAgICAgICAgICAgICAgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9kaXNwbGF5ICAgICAgICAgICAgICAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EaXNwbGF5ICogZGlzcGxheSk7CitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfaGFuZGxlX2NvbnRleHRfcXVlcnkgICAgIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFF1ZXJ5ICogcXVlcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXkpOworZ2Jvb2xlYW4gICAgICAgICAgICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X3J1bl9jb250ZXh0X3F1ZXJ5ICAgICAgICAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXkpOworCisvKiBHc3RWdWxrYW5XaW5kb3cgdXNhZ2Ugb25seSAqLworZ2Jvb2xlYW4gICAgICAgICAgICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X3JlbW92ZV93aW5kb3cgICAgICAgICAgICAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXksIEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdyk7CisKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1ZVTEtBTl9ESVNQTEFZX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2Vycm9yLmMgYi9leHQvdnVsa2FuL3ZrZXJyb3IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmVjMjdlCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2Vycm9yLmMKQEAgLTAsMCArMSwxMDAgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z2xpYi9ncHJpbnRmLmg+CisKKyNpbmNsdWRlICJ2a2Vycm9yLmgiCisKKy8qICpJTkRFTlQtT0ZGKiAqLworc3RhdGljIGNvbnN0IHN0cnVjdCAKK3sKKyAgVmtSZXN1bHQgcmVzdWx0OworICBjb25zdCBjaGFyICpzdHI7Cit9IHZrX3Jlc3VsdF9zdHJpbmdfbWFwW10gPSB7CisgIHtWS19FUlJPUl9PVVRfT0ZfSE9TVF9NRU1PUlksICJPdXQgT2YgaG9zdCBtZW1vcnkifSwKKyAge1ZLX0VSUk9SX09VVF9PRl9ERVZJQ0VfTUVNT1JZLCAiT3V0IG9mIGRldmljZSBtZW1vcnkifSwKKyAge1ZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwgIkluaXRpYWxpemF0aW9uIGZhaWxlZCJ9LAorICB7VktfRVJST1JfREVWSUNFX0xPU1QsICJEZXZpY2UgbG9zdCJ9LAorICB7VktfRVJST1JfTUVNT1JZX01BUF9GQUlMRUQsICJNYXAgZmFpbGVkIn0sCisgIHtWS19FUlJPUl9MQVlFUl9OT1RfUFJFU0VOVCwgIkxheWVyIG5vdCBwcmVzZW50In0sCisgIHtWS19FUlJPUl9FWFRFTlNJT05fTk9UX1BSRVNFTlQsICJFeHRlbnNpb24gbm90IHByZXNlbnQifSwKKyAge1ZLX0VSUk9SX0ZFQVRVUkVfTk9UX1BSRVNFTlQsICJGZWF0dXJlIG5vdCBwcmVzZW50In0sCisgIHtWS19FUlJPUl9JTkNPTVBBVElCTEVfRFJJVkVSLCAiSW5jb21wYXRpYmxlIGRyaXZlciJ9LAorICB7VktfRVJST1JfVE9PX01BTllfT0JKRUNUUywgIlRvbyBtYW55IG9iamVjdHMifSwKKyAge1ZLX0VSUk9SX0ZPUk1BVF9OT1RfU1VQUE9SVEVELCAiZm9ybWF0IG5vdCBzdXBwb3J0ZWQifSwKKyAge1ZLX0VSUk9SX1NVUkZBQ0VfTE9TVF9LSFIsICJTdXJmYWNlIGxvc3QifSwKKyAge1ZLX0VSUk9SX09VVF9PRl9EQVRFX0tIUiwgIm91dCBvZiBkYXRlIn0sCisgIHtWS19FUlJPUl9JTkNPTVBBVElCTEVfRElTUExBWV9LSFIsICJJbmNvbXBhdGlibGUgZGlzcGxheSJ9LAorICB7VktfRVJST1JfTkFUSVZFX1dJTkRPV19JTl9VU0VfS0hSLCAiTmF0aXZlIHdpbmRvdyBpbiB1c2UifSwKK307CisvKiAqSU5ERU5ULU9OKiAqLworCitHUXVhcmsKK2dzdF92dWxrYW5fZXJyb3JfcXVhcmsgKHZvaWQpCit7CisgIHJldHVybiBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoImdzdC12dWxrYW4tZXJyb3IiKTsKK30KKworc3RhdGljIGNvbnN0IGNoYXIgKgorX3ZrX3Jlc3VsdF90b19zdHJpbmcgKFZrUmVzdWx0IHJlc3VsdCkKK3sKKyAgaW50IGk7CisKKyAgaWYgKHJlc3VsdCA+PSAwKQorICAgIHJldHVybiBOVUxMOworICBpZiAocmVzdWx0IDwgVktfUkVTVUxUX0JFR0lOX1JBTkdFKQorICAgIHJldHVybiAiVW5rbm93biBFcnJvciI7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAodmtfcmVzdWx0X3N0cmluZ19tYXApOyBpKyspIHsKKyAgICBpZiAocmVzdWx0ID09IHZrX3Jlc3VsdF9zdHJpbmdfbWFwW2ldLnJlc3VsdCkKKyAgICAgIHJldHVybiB2a19yZXN1bHRfc3RyaW5nX21hcFtpXS5zdHI7CisgIH0KKworICByZXR1cm4gIlVua25vd24gRXJyb3IiOworfQorCitWa1Jlc3VsdAorZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChWa1Jlc3VsdCByZXN1bHQsIEdFcnJvciAqKiBlcnJvciwKKyAgICBjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKK3sKKyAgY29uc3QgY2hhciAqcmVzdWx0X3N0cjsKKyAgZ2NoYXIgKnN0cmluZzsKKyAgdmFfbGlzdCBhcmdzOworCisgIGlmIChlcnJvciA9PSBOVUxMKQorICAgIC8qIHdlIGRvbid0IGhhdmUgYW4gZXJyb3IgdG8gc2V0ICovCisgICAgcmV0dXJuIHJlc3VsdDsKKworICByZXN1bHRfc3RyID0gX3ZrX3Jlc3VsdF90b19zdHJpbmcgKHJlc3VsdCk7CisgIGlmIChyZXN1bHRfc3RyID09IE5VTEwpCisgICAgcmV0dXJuIHJlc3VsdDsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgZ192YXNwcmludGYgKCZzdHJpbmcsIGZvcm1hdCwgYXJncyk7CisgIHZhX2VuZCAoYXJncyk7CisKKyAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCByZXN1bHQsICIlczogJXMiLCByZXN1bHRfc3RyLCBzdHJpbmcpOworCisgIHJldHVybiByZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9leHQvb3B1cy9nc3RvcHVzY29tbW9uLmggYi9leHQvdnVsa2FuL3ZrZXJyb3IuaApzaW1pbGFyaXR5IGluZGV4IDYwJQpjb3B5IGZyb20gZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oCmNvcHkgdG8gZXh0L3Z1bGthbi92a2Vycm9yLmgKaW5kZXggNzE3NzFhZS4uNzg4ZTY2ZCAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oCisrKyBiL2V4dC92dWxrYW4vdmtlcnJvci5oCkBAIC0xLDUgKzEsNiBAQAotLyogR1N0cmVhbWVyIE9wdXMgRW5jb2RlcgotICogQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTcsMjEgKzE4LDIwIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0KLSNpZm5kZWYgX19HU1RfT1BVU19DT01NT05fSF9fCi0jZGVmaW5lIF9fR1NUX09QVVNfQ09NTU9OX0hfXworI2lmbmRlZiBfVktfRVJST1JfSF8KKyNkZWZpbmUgX1ZLX0VSUk9SX0hfCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisjaW5jbHVkZSA8dnVsa2FuL3Z1bGthbi5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKLWV4dGVybiBjb25zdCBHc3RBdWRpb0NoYW5uZWxQb3NpdGlvbiBnc3Rfb3B1c19jaGFubmVsX3Bvc2l0aW9uc1tdWzhdOwotZXh0ZXJuIGNvbnN0IGNoYXIgKmdzdF9vcHVzX2NoYW5uZWxfbmFtZXNbXTsKLWV4dGVybiB2b2lkIGdzdF9vcHVzX2NvbW1vbl9sb2dfY2hhbm5lbF9tYXBwaW5nX3RhYmxlIChHc3RFbGVtZW50ICplbGVtZW50LAotICAgIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXRlZ29yeSwgY29uc3QgY2hhciAqbXNnLAotICAgIGludCBuX2NoYW5uZWxzLCBjb25zdCBndWludDggKnRhYmxlKTsKKyNkZWZpbmUgR1NUX1ZVTEtBTl9FUlJPUiAoZ3N0X3Z1bGthbl9lcnJvcl9xdWFyayAoKSkKK0dRdWFyayBnc3RfdnVsa2FuX2Vycm9yX3F1YXJrICh2b2lkKTsKKworLyogb25seSBmaWxscyBlcnJvciBpZmYgZXJyb3IgIT0gTlVMTCBhbmQgcmVzdWx0IDwgMCAqLworVmtSZXN1bHQgZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChWa1Jlc3VsdCByZXN1bHQsIEdFcnJvciAqKiBlcnJvciwgY29uc3QgY2hhciAqIGZvcm1hdCwgLi4uKSBHX0dOVUNfUFJJTlRGICgzLCA0KTsKIAogR19FTkRfREVDTFMKIAotI2VuZGlmIC8qIF9fR1NUX09QVVNfQ09NTU9OX0hfXyAqLworI2VuZGlmIC8qIF9WS19JTlNUQU5DRV9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5LmMgYi9leHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMTI2M2IwCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2ltYWdlbWVtb3J5LmMKQEAgLTAsMCArMSw1NjkgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidmtpbWFnZW1lbW9yeS5oIgorCisvKioKKyAqIFNFQ1RJT046dmtpbWFnZW1lbW9yeQorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBtZW1vcnkgc3ViY2xhc3MgZm9yIFZ1bGthbiBpbWFnZSBtZW1vcnkKKyAqIEBzZWVfYWxzbzogI0dzdE1lbW9yeSwgI0dzdEFsbG9jYXRvcgorICoKKyAqIEdzdFZ1bGthbkltYWdlTWVtb3J5IGlzIGEgI0dzdE1lbW9yeSBzdWJjbGFzcyBwcm92aWRpbmcgc3VwcG9ydCBmb3IgdGhlCisgKiBtYXBwaW5nIG9mIFZ1bGthbiBkZXZpY2UgbWVtb3J5LgorICovCisKKyNkZWZpbmUgR1NUX0NBVF9ERUZVQUxUIEdTVF9DQVRfVlVMS0FOX0lNQUdFX01FTU9SWQorR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZVQUxUKTsKKworc3RhdGljIEdzdEFsbG9jYXRvciAqX3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yOworCitWa0Zvcm1hdAorZ3N0X3Z1bGthbl9mb3JtYXRfZnJvbV92aWRlb19mb3JtYXQgKEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0LCBndWludCBwbGFuZSkKK3sKKyAgZ3VpbnQgbl9wbGFuZV9jb21wb25lbnRzOworCisgIHN3aXRjaCAodl9mb3JtYXQpIHsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCeDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSeDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeFJHQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeEJHUjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSQToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVJHQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQUJHUjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVlVVjoKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1I6CisgICAgICBuX3BsYW5lX2NvbXBvbmVudHMgPSAzOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjE2OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1IxNjoKKyAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2OworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZMTZfQkU6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9MRToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYyMToKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IHBsYW5lID09IDAgPyAxIDogMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZODoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQ0NDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQyQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQxQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfSTQyMDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDE7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gNDsKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgYnJlYWs7CisgIH0KKworICBzd2l0Y2ggKG5fcGxhbmVfY29tcG9uZW50cykgeworICAgIGNhc2UgNDoKKyAgICAgIHJldHVybiBWS19GT1JNQVRfUjhHOEI4QThfVU5PUk07CisgICAgY2FzZSAzOgorICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9SOEc4QjhfVU5PUk07CisgICAgY2FzZSAyOgorICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9SOEc4X1VOT1JNOworICAgIGNhc2UgMToKKyAgICAgIHJldHVybiBWS19GT1JNQVRfUjhfVU5PUk07CisgICAgZGVmYXVsdDoKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgcmV0dXJuIFZLX0ZPUk1BVF9SOEc4QjhBOF9VTk9STTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorX3ZpZXdfY3JlYXRlX2luZm8gKFZrSW1hZ2UgaW1hZ2UsIFZrRm9ybWF0IGZvcm1hdCwgVmtJbWFnZVZpZXdDcmVhdGVJbmZvICogaW5mbykKK3sKKyAgaW5mby0+c1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9JTUFHRV9WSUVXX0NSRUFURV9JTkZPOworICBpbmZvLT5wTmV4dCA9IE5VTEw7CisgIGluZm8tPmltYWdlID0gaW1hZ2U7CisgIGluZm8tPmZvcm1hdCA9IGZvcm1hdDsKKyAgaW5mby0+dmlld1R5cGUgPSBWS19JTUFHRV9WSUVXX1RZUEVfMkQ7CisgIGluZm8tPmZsYWdzID0gMDsKKworICBHU1RfVktfQ09NUE9ORU5UX01BUFBJTkcgKGluZm8tPmNvbXBvbmVudHMsIFZLX0NPTVBPTkVOVF9TV0laWkxFX1IsCisgICAgICBWS19DT01QT05FTlRfU1dJWlpMRV9HLCBWS19DT01QT05FTlRfU1dJWlpMRV9CLCBWS19DT01QT05FTlRfU1dJWlpMRV9BKTsKKyAgR1NUX1ZLX0lNQUdFX1NVQlJFU09VUkNFX1JBTkdFIChpbmZvLT5zdWJyZXNvdXJjZVJhbmdlLAorICAgICAgVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgMCwgMSwgMCwgMSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2NyZWF0ZV9pbmZvX2Zyb21fYXJncyAoVmtJbWFnZUNyZWF0ZUluZm8gKiBpbmZvLCBWa0Zvcm1hdCBmb3JtYXQsIGdzaXplIHdpZHRoLAorICAgIGdzaXplIGhlaWdodCwgVmtJbWFnZVRpbGluZyB0aWxpbmcsIFZrSW1hZ2VVc2FnZUZsYWdzIHVzYWdlKQoreworICAvKiBGSVhNRTogdmFsaWRhdGUgdGhlc2UgKi8KKworICBpbmZvLT5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0lNQUdFX0NSRUFURV9JTkZPOworICBpbmZvLT5wTmV4dCA9IE5VTEw7CisgIGluZm8tPmZsYWdzID0gMDsKKyAgaW5mby0+aW1hZ2VUeXBlID0gVktfSU1BR0VfVFlQRV8yRDsKKyAgaW5mby0+Zm9ybWF0ID0gZm9ybWF0OworICBHU1RfVktfRVhURU5UM0QgKGluZm8tPmV4dGVudCwgd2lkdGgsIGhlaWdodCwgMSk7CisgIGluZm8tPm1pcExldmVscyA9IDE7CisgIGluZm8tPmFycmF5TGF5ZXJzID0gMTsKKyAgaW5mby0+c2FtcGxlcyA9IFZLX1NBTVBMRV9DT1VOVF8xX0JJVDsKKyAgaW5mby0+dGlsaW5nID0gdGlsaW5nOworICBpbmZvLT51c2FnZSA9IHVzYWdlOworICBpbmZvLT5zaGFyaW5nTW9kZSA9IFZLX1NIQVJJTkdfTU9ERV9FWENMVVNJVkU7CisgIGluZm8tPnF1ZXVlRmFtaWx5SW5kZXhDb3VudCA9IDA7CisgIGluZm8tPnBRdWV1ZUZhbWlseUluZGljZXMgPSBOVUxMOworICBpbmZvLT5pbml0aWFsTGF5b3V0ID0gVktfSU1BR0VfTEFZT1VUX1VOREVGSU5FRDsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK192a19pbWFnZV9tZW1faW5pdCAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBtZW0sIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RNZW1vcnkgKiBwYXJlbnQsIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgZ3NpemUgc2l6ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgZ3NpemUgYWxpZ24gPSBnc3RfbWVtb3J5X2FsaWdubWVudCwgb2Zmc2V0ID0gMCwgbWF4c2l6ZSA9IHNpemU7CisgIEdzdE1lbW9yeUZsYWdzIGZsYWdzID0gMDsKKworICBpZiAocGFyYW1zKSB7CisgICAgZmxhZ3MgPSBwYXJhbXMtPmZsYWdzOworICAgIGFsaWduIHw9IHBhcmFtcy0+YWxpZ247CisgICAgb2Zmc2V0ID0gcGFyYW1zLT5wcmVmaXg7CisgICAgbWF4c2l6ZSArPSBwYXJhbXMtPnByZWZpeCArIHBhcmFtcy0+cGFkZGluZyArIGFsaWduOworICB9CisKKyAgZ3N0X21lbW9yeV9pbml0IChHU1RfTUVNT1JZX0NBU1QgKG1lbSksIGZsYWdzLCBhbGxvY2F0b3IsIHBhcmVudCwgbWF4c2l6ZSwKKyAgICAgIGFsaWduLCBvZmZzZXQsIHNpemUpOworCisgIG1lbS0+ZGV2aWNlID0gZ3N0X29iamVjdF9yZWYgKGRldmljZSk7CisgIG1lbS0+aW1hZ2VfbGF5b3V0ID0gVktfSU1BR0VfTEFZT1VUX1VOREVGSU5FRDsKKyAgbWVtLT51c2FnZSA9IHVzYWdlOworICBtZW0tPndyYXBwZWQgPSBGQUxTRTsKKyAgbWVtLT5ub3RpZnkgPSBub3RpZnk7CisgIG1lbS0+dXNlcl9kYXRhID0gdXNlcl9kYXRhOworCisgIGdfbXV0ZXhfaW5pdCAoJm1lbS0+bG9jayk7CisKKyAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9WVUxLQU5fSU1BR0VfTUVNT1JZLAorICAgICAgIm5ldyBWdWxrYW4gSW1hZ2UgbWVtb3J5OiVwIHNpemU6JSIgR19HU0laRV9GT1JNQVQsIG1lbSwgbWF4c2l6ZSk7Cit9CisKK3N0YXRpYyBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqCitfdmtfaW1hZ2VfbWVtX25ld19hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBwYXJlbnQsCisgICAgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBWa0Zvcm1hdCBmb3JtYXQsIGdzaXplIHdpZHRoLCBnc2l6ZSBoZWlnaHQsCisgICAgVmtJbWFnZVRpbGluZyB0aWxpbmcsIFZrSW1hZ2VVc2FnZUZsYWdzIHVzYWdlLAorICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcF9mbGFncywgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKm1lbSA9IE5VTEw7CisgIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zID0geyAwLCB9OworICBWa0ltYWdlVmlld0NyZWF0ZUluZm8gdmlld19pbmZvOworICBWa0ltYWdlQ3JlYXRlSW5mbyBpbWFnZV9pbmZvOworICBWa1BoeXNpY2FsRGV2aWNlIGdwdTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgIGd1aW50MzIgdHlwZV9pZHg7CisgIFZrSW1hZ2UgaW1hZ2U7CisgIFZrUmVzdWx0IGVycjsKKworICBncHUgPSBnc3RfdnVsa2FuX2RldmljZV9nZXRfcGh5c2ljYWxfZGV2aWNlIChkZXZpY2UpOworICBpZiAoIV9jcmVhdGVfaW5mb19mcm9tX2FyZ3MgKCZpbWFnZV9pbmZvLCBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRpbGluZywKKyAgICAgICAgICB1c2FnZSkpIHsKKyAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX1ZVTEtBTl9JTUFHRV9NRU1PUlksICJJbmNvcnJlY3QgaW1hZ2UgcGFyYW1ldGVycyIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBlcnIgPSB2a0NyZWF0ZUltYWdlIChkZXZpY2UtPmRldmljZSwgJmltYWdlX2luZm8sIE5VTEwsICZpbWFnZSk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLCAidmtDcmVhdGVJbWFnZSIpIDwgMCkKKyAgICBnb3RvIHZrX2Vycm9yOworCisgIG1lbSA9IGdfbmV3MCAoR3N0VnVsa2FuSW1hZ2VNZW1vcnksIDEpOworICBfdmtfaW1hZ2VfbWVtX2luaXQgKG1lbSwgYWxsb2NhdG9yLCBwYXJlbnQsIGRldmljZSwgdXNhZ2UsICZwYXJhbXMsCisgICAgICBtZW0tPnJlcXVpcmVtZW50cy5zaXplLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisgIG1lbS0+Y3JlYXRlX2luZm8gPSBpbWFnZV9pbmZvOworICBtZW0tPmltYWdlID0gaW1hZ2U7CisKKyAgdmtHZXRJbWFnZU1lbW9yeVJlcXVpcmVtZW50cyAoZGV2aWNlLT5kZXZpY2UsIGltYWdlLCAmbWVtLT5yZXF1aXJlbWVudHMpOworICBlcnIgPSB2a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzIChncHUsIGZvcm1hdCwgVktfSU1BR0VfVFlQRV8yRCwKKyAgICAgIHRpbGluZywgdXNhZ2UsIDAsICZtZW0tPmZvcm1hdF9wcm9wZXJ0aWVzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsCisgICAgICAgICAgInZrR2V0UGh5c2ljYWxEZXZpY2VJbWFnZUZvcm1hdFByb3BlcnRpZXMiKSA8IDApCisgICAgZ290byB2a19lcnJvcjsKKworICBpZiAoIWdzdF92dWxrYW5fbWVtb3J5X2ZpbmRfbWVtb3J5X3R5cGVfaW5kZXhfd2l0aF90eXBlX3Byb3BlcnRpZXMgKGRldmljZSwKKyAgICAgICAgICBtZW0tPnJlcXVpcmVtZW50cy5tZW1vcnlUeXBlQml0cywgbWVtX3Byb3BfZmxhZ3MsICZ0eXBlX2lkeCkpCisgICAgZ290byBlcnJvcjsKKworICAvKiBYWFg6IGFzc3VtZXMgYWxpZ25tZW50IGlzIGEgcG93ZXIgb2YgMiAqLworICBwYXJhbXMuYWxpZ24gPSBtZW0tPnJlcXVpcmVtZW50cy5hbGlnbm1lbnQgLSAxOworICBtZW0tPnZrX21lbSA9IChHc3RWdWxrYW5NZW1vcnkgKikgZ3N0X3Z1bGthbl9tZW1vcnlfYWxsb2MgKGRldmljZSwgdHlwZV9pZHgsCisgICAgICAmcGFyYW1zLCBtZW0tPnJlcXVpcmVtZW50cy5zaXplLCBtZW1fcHJvcF9mbGFncyk7CisgIGlmICghbWVtLT52a19tZW0pCisgICAgZ290byBlcnJvcjsKKworICBlcnIgPSB2a0JpbmRJbWFnZU1lbW9yeSAoZGV2aWNlLT5kZXZpY2UsIGltYWdlLCBtZW0tPnZrX21lbS0+bWVtX3B0ciwgMCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLCAidmtCaW5kSW1hZ2VNZW1vcnkiKSA8IDApCisgICAgZ290byB2a19lcnJvcjsKKworICBpZiAodXNhZ2UgJiAoVktfSU1BR0VfVVNBR0VfU0FNUExFRF9CSVQgfCBWS19JTUFHRV9VU0FHRV9TVE9SQUdFX0JJVCB8CisgICAgICAgICAgVktfSU1BR0VfVVNBR0VfQ09MT1JfQVRUQUNITUVOVF9CSVQpKSB7CisgICAgX3ZpZXdfY3JlYXRlX2luZm8gKG1lbS0+aW1hZ2UsIGZvcm1hdCwgJnZpZXdfaW5mbyk7CisgICAgZXJyID0gdmtDcmVhdGVJbWFnZVZpZXcgKGRldmljZS0+ZGV2aWNlLCAmdmlld19pbmZvLCBOVUxMLCAmbWVtLT52aWV3KTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsICZlcnJvciwgInZrQ3JlYXRlSW1hZ2VWaWV3IikgPCAwKQorICAgICAgZ290byB2a19lcnJvcjsKKyAgfQorCisgIHJldHVybiBtZW07CisKK3ZrX2Vycm9yOgorICB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9WVUxLQU5fSU1BR0VfTUVNT1JZLAorICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlIG1lbW9yeSAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworZXJyb3I6CisgIHsKKyAgICBpZiAobWVtKQorICAgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBtZW0pOworICAgIHJldHVybiBOVUxMOworICB9Cit9CisKK3N0YXRpYyBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqCitfdmtfaW1hZ2VfbWVtX25ld193cmFwcGVkIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIEdzdE1lbW9yeSAqIHBhcmVudCwKKyAgICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrSW1hZ2UgaW1hZ2UsIFZrRm9ybWF0IGZvcm1hdCwgZ3NpemUgd2lkdGgsCisgICAgZ3NpemUgaGVpZ2h0LCBWa0ltYWdlVGlsaW5nIHRpbGluZywgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdFZ1bGthbkltYWdlTWVtb3J5ICptZW0gPSBnX25ldzAgKEdzdFZ1bGthbkltYWdlTWVtb3J5LCAxKTsKKyAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXMgPSB7IDAsIH07CisgIFZrSW1hZ2VWaWV3Q3JlYXRlSW5mbyB2aWV3X2luZm87CisgIFZrUGh5c2ljYWxEZXZpY2UgZ3B1OworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgVmtSZXN1bHQgZXJyOworCisgIGdwdSA9IGdzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgKGRldmljZSk7CisgIG1lbS0+aW1hZ2UgPSBpbWFnZTsKKworICB2a0dldEltYWdlTWVtb3J5UmVxdWlyZW1lbnRzIChkZXZpY2UtPmRldmljZSwgbWVtLT5pbWFnZSwgJm1lbS0+cmVxdWlyZW1lbnRzKTsKKworICAvKiBYWFg6IGFzc3VtZXMgYWxpZ25tZW50IGlzIGEgcG93ZXIgb2YgMiAqLworICBwYXJhbXMuYWxpZ24gPSBtZW0tPnJlcXVpcmVtZW50cy5hbGlnbm1lbnQgLSAxOworICBwYXJhbXMuZmxhZ3MgPSBHU1RfTUVNT1JZX0ZMQUdfTk9UX01BUFBBQkxFOworICBfdmtfaW1hZ2VfbWVtX2luaXQgKG1lbSwgYWxsb2NhdG9yLCBwYXJlbnQsIGRldmljZSwgdXNhZ2UsICZwYXJhbXMsCisgICAgICBtZW0tPnJlcXVpcmVtZW50cy5zaXplLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisgIG1lbS0+d3JhcHBlZCA9IFRSVUU7CisKKyAgaWYgKCFfY3JlYXRlX2luZm9fZnJvbV9hcmdzICgmbWVtLT5jcmVhdGVfaW5mbywgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCB0aWxpbmcsCisgICAgICAgICAgdXNhZ2UpKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9WVUxLQU5fSU1BR0VfTUVNT1JZLCAiSW5jb3JyZWN0IGltYWdlIHBhcmFtZXRlcnMiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgZXJyID0gdmtHZXRQaHlzaWNhbERldmljZUltYWdlRm9ybWF0UHJvcGVydGllcyAoZ3B1LCBmb3JtYXQsIFZLX0lNQUdFX1RZUEVfMkQsCisgICAgICB0aWxpbmcsIHVzYWdlLCAwLCAmbWVtLT5mb3JtYXRfcHJvcGVydGllcyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLAorICAgICAgICAgICJ2a0dldFBoeXNpY2FsRGV2aWNlSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzIikgPCAwKQorICAgIGdvdG8gdmtfZXJyb3I7CisKKyAgLyogWFhYOiB3ZSBkb24ndCBhY3R1YWxseSBpZiB0aGUgaW1hZ2UgaGFzIGEgdmtEZXZpY2VNZW1vcnkgYm91bmQgc28KKyAgICogdGhpcyBtYXkgZmFpbCAqLworICBpZiAodXNhZ2UgJiAoVktfSU1BR0VfVVNBR0VfU0FNUExFRF9CSVQgfCBWS19JTUFHRV9VU0FHRV9TVE9SQUdFX0JJVCB8CisgICAgICAgICAgVktfSU1BR0VfVVNBR0VfQ09MT1JfQVRUQUNITUVOVF9CSVQpKSB7CisgICAgX3ZpZXdfY3JlYXRlX2luZm8gKG1lbS0+aW1hZ2UsIGZvcm1hdCwgJnZpZXdfaW5mbyk7CisgICAgZXJyID0gdmtDcmVhdGVJbWFnZVZpZXcgKGRldmljZS0+ZGV2aWNlLCAmdmlld19pbmZvLCBOVUxMLCAmbWVtLT52aWV3KTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsICZlcnJvciwgInZrQ3JlYXRlSW1hZ2VWaWV3IikgPCAwKQorICAgICAgZ290byB2a19lcnJvcjsKKyAgfQorCisgIHJldHVybiBtZW07CisKK3ZrX2Vycm9yOgorICB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9WVUxLQU5fSU1BR0VfTUVNT1JZLAorICAgICAgICAiRmFpbGVkIHRvIGFsbG9jYXRlIGltYWdlIG1lbW9yeSAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworZXJyb3I6CisgIHsKKyAgICBnc3RfbWVtb3J5X3VucmVmICgoR3N0TWVtb3J5ICopIG1lbSk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKworc3RhdGljIGdwb2ludGVyCitfdmtfaW1hZ2VfbWVtX21hcF9mdWxsIChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8sCisgICAgZ3NpemUgc2l6ZSkKK3sKKyAgR3N0TWFwSW5mbyAqdmtfbWFwX2luZm87CisKKyAgLyogRklYTUU6IHBvc3NpYmxlIGxheW91dCB0cmFuc2Zvcm1hdGlvbiBuZWVkZWQgKi8KKyAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKKworICBpZiAoIW1lbS0+dmtfbWVtKSB7CisgICAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgdmtfbWFwX2luZm8gPSBnX25ldzAgKEdzdE1hcEluZm8sIDEpOworICBpbmZvLT51c2VyX2RhdGFbMF0gPSB2a19tYXBfaW5mbzsKKyAgaWYgKCFnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBtZW0tPnZrX21lbSwgdmtfbWFwX2luZm8sIGluZm8tPmZsYWdzKSkgeworICAgIGdfZnJlZSAodmtfbWFwX2luZm8pOworICAgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7CisKKyAgcmV0dXJuIHZrX21hcF9pbmZvLT5kYXRhOworfQorCitzdGF0aWMgdm9pZAorX3ZrX2ltYWdlX21lbV91bm1hcF9mdWxsIChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8pCit7CisgIGdfbXV0ZXhfbG9jayAoJm1lbS0+bG9jayk7CisgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgbWVtLT52a19tZW0sIGluZm8tPnVzZXJfZGF0YVswXSk7CisgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKKworICBnX2ZyZWUgKGluZm8tPnVzZXJfZGF0YVswXSk7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX2ltYWdlX21lbV9jb3B5IChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCit7CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK192a19pbWFnZV9tZW1fc2hhcmUgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogbWVtLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3ZrX2ltYWdlX21lbV9pc19zcGFuIChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIG1lbTEsIEdzdFZ1bGthbkltYWdlTWVtb3J5ICogbWVtMiwKKyAgICBnc2l6ZSAqIG9mZnNldCkKK3sKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK192a19pbWFnZV9tZW1fYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX2NyaXRpY2FsICgiU3ViY2xhc3Mgc2hvdWxkIG92ZXJyaWRlIEdzdEFsbG9jYXRvckNsYXNzOjphbGxvYygpIGZ1bmN0aW9uIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitfdmtfaW1hZ2VfbWVtX2ZyZWUgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogbWVtb3J5KQoreworICBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqbWVtID0gKEdzdFZ1bGthbkltYWdlTWVtb3J5ICopIG1lbW9yeTsKKworICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX1ZVTEtBTl9JTUFHRV9NRU1PUlksICJmcmVlaW5nIGltYWdlIG1lbW9yeTolcCAiCisgICAgICAiaWQ6JSIgR19HVUlOVDY0X0ZPUk1BVCwgbWVtLCAoZ3VpbnQ2NCkgbWVtLT5pbWFnZSk7CisKKyAgaWYgKG1lbS0+aW1hZ2UgJiYgIW1lbS0+d3JhcHBlZCkKKyAgICB2a0Rlc3Ryb3lJbWFnZSAobWVtLT5kZXZpY2UtPmRldmljZSwgbWVtLT5pbWFnZSwgTlVMTCk7CisKKyAgaWYgKG1lbS0+dmlldykKKyAgICB2a0Rlc3Ryb3lJbWFnZVZpZXcgKG1lbS0+ZGV2aWNlLT5kZXZpY2UsIG1lbS0+dmlldywgTlVMTCk7CisKKyAgaWYgKG1lbS0+dmtfbWVtKQorICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgbWVtLT52a19tZW0pOworCisgIGlmIChtZW0tPm5vdGlmeSkKKyAgICBtZW0tPm5vdGlmeSAobWVtLT51c2VyX2RhdGEpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKG1lbS0+ZGV2aWNlKTsKKworICBnX2ZyZWUgKG1lbSk7Cit9CisKK3N0YXRpYyBWa0FjY2Vzc0ZsYWdzCitfYWNjZXNzX2ZsYWdzX2Zyb21fbGF5b3V0IChWa0ltYWdlTGF5b3V0IGltYWdlX2xheW91dCkKK3sKKyAgaWYgKGltYWdlX2xheW91dCA9PSBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUwpCisgICAgcmV0dXJuIFZLX0FDQ0VTU19UUkFOU0ZFUl9XUklURV9CSVQ7CisKKyAgaWYgKGltYWdlX2xheW91dCA9PSBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfU1JDX09QVElNQUwpCisgICAgcmV0dXJuIFZLX0FDQ0VTU19UUkFOU0ZFUl9SRUFEX0JJVDsKKworICBpZiAoaW1hZ2VfbGF5b3V0ID09IFZLX0lNQUdFX0xBWU9VVF9DT0xPUl9BVFRBQ0hNRU5UX09QVElNQUwpCisgICAgcmV0dXJuIFZLX0FDQ0VTU19DT0xPUl9BVFRBQ0hNRU5UX1dSSVRFX0JJVDsKKworICBpZiAoaW1hZ2VfbGF5b3V0ID09IFZLX0lNQUdFX0xBWU9VVF9ERVBUSF9TVEVOQ0lMX0FUVEFDSE1FTlRfT1BUSU1BTCkKKyAgICByZXR1cm4gVktfQUNDRVNTX0RFUFRIX1NURU5DSUxfQVRUQUNITUVOVF9XUklURV9CSVQ7CisKKyAgaWYgKGltYWdlX2xheW91dCA9PSBWS19JTUFHRV9MQVlPVVRfU0hBREVSX1JFQURfT05MWV9PUFRJTUFMKQorICAgIHJldHVybiBWS19BQ0NFU1NfU0hBREVSX1JFQURfQklUIHwgVktfQUNDRVNTX0lOUFVUX0FUVEFDSE1FTlRfUkVBRF9CSVQ7CisKKyAgcmV0dXJuIDA7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9zZXRfbGF5b3V0IChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIHZrX21lbSwKKyAgICBWa0ltYWdlTGF5b3V0IGltYWdlX2xheW91dCwgVmtJbWFnZU1lbW9yeUJhcnJpZXIgKiBiYXJyaWVyKQoreworICAvKiB2YWxpZGF0ZSB2a19tZW0tPnVzYWdlIHdpdGggaW1hZ2VfbGF5b3V0ICovCisKKyAgYmFycmllci0+c1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9JTUFHRV9NRU1PUllfQkFSUklFUjsKKyAgYmFycmllci0+cE5leHQgPSBOVUxMOworICBiYXJyaWVyLT5kc3RBY2Nlc3NNYXNrID0gX2FjY2Vzc19mbGFnc19mcm9tX2xheW91dCAoaW1hZ2VfbGF5b3V0KTsKKyAgYmFycmllci0+c3JjQWNjZXNzTWFzayA9IF9hY2Nlc3NfZmxhZ3NfZnJvbV9sYXlvdXQgKHZrX21lbS0+aW1hZ2VfbGF5b3V0KTsKKyAgYmFycmllci0+b2xkTGF5b3V0ID0gdmtfbWVtLT5pbWFnZV9sYXlvdXQ7CisgIGJhcnJpZXItPm5ld0xheW91dCA9IGltYWdlX2xheW91dDsKKyAgYmFycmllci0+aW1hZ2UgPSB2a19tZW0tPmltYWdlOworICBHU1RfVktfSU1BR0VfU1VCUkVTT1VSQ0VfUkFOR0UgKGJhcnJpZXItPnN1YnJlc291cmNlUmFuZ2UsCisgICAgICBWS19JTUFHRV9BU1BFQ1RfQ09MT1JfQklULCAwLCAxLCAwLCAxKTsKKworICAvKiBGSVhNRTogd2hhdCBpZiB0aGUgYmFycmllciBpcyBuZXZlciBzdWJtaXR0ZWQgb3IgaXMgc3VibWl0dGVkIG91dCBvZiBvcmRlcj8gKi8KKyAgdmtfbWVtLT5pbWFnZV9sYXlvdXQgPSBpbWFnZV9sYXlvdXQ7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2M6CisgKgorICogQWxsb2NhdGVkIGEgbmV3ICNHc3RWdWxrYW5JbWFnZU1lbW9yeS4KKyAqCisgKiBSZXR1cm5zOiBhICNHc3RNZW1vcnkgb2JqZWN0IGJhY2tlZCBieSBhIHZ1bGthbiBkZXZpY2UgbWVtb3J5CisgKi8KK0dzdE1lbW9yeSAqCitnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvYyAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBWa0Zvcm1hdCBmb3JtYXQsCisgICAgZ3NpemUgd2lkdGgsIGdzaXplIGhlaWdodCwgVmtJbWFnZVRpbGluZyB0aWxpbmcsIFZrSW1hZ2VVc2FnZUZsYWdzIHVzYWdlLAorICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcF9mbGFncykKK3sKKyAgR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKm1lbTsKKworICBtZW0gPSBfdmtfaW1hZ2VfbWVtX25ld19hbGxvYyAoX3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yLCBOVUxMLCBkZXZpY2UsCisgICAgICBmb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHRpbGluZywgdXNhZ2UsIG1lbV9wcm9wX2ZsYWdzLCBOVUxMLCBOVUxMKTsKKworICByZXR1cm4gKEdzdE1lbW9yeSAqKSBtZW07Cit9CisKK0dzdE1lbW9yeSAqCitnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV93cmFwcGVkIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIFZrSW1hZ2UgaW1hZ2UsCisgICAgVmtGb3JtYXQgZm9ybWF0LCBnc2l6ZSB3aWR0aCwgZ3NpemUgaGVpZ2h0LCBWa0ltYWdlVGlsaW5nIHRpbGluZywKKyAgICBWa0ltYWdlVXNhZ2VGbGFncyB1c2FnZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdFZ1bGthbkltYWdlTWVtb3J5ICptZW07CisKKyAgbWVtID0gX3ZrX2ltYWdlX21lbV9uZXdfd3JhcHBlZCAoX3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yLCBOVUxMLCBkZXZpY2UsCisgICAgICBpbWFnZSwgZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCB0aWxpbmcsIHVzYWdlLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisKKyAgcmV0dXJuIChHc3RNZW1vcnkgKikgbWVtOworfQorCitndWludDMyCitnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9nZXRfd2lkdGggKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogaW1hZ2UpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfaXNfdnVsa2FuX2ltYWdlX21lbW9yeSAoR1NUX01FTU9SWV9DQVNUIChpbWFnZSkpLAorICAgICAgMCk7CisKKyAgcmV0dXJuIGltYWdlLT5jcmVhdGVfaW5mby5leHRlbnQud2lkdGg7Cit9CisKK2d1aW50MzIKK2dzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2dldF9oZWlnaHQgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICogaW1hZ2UpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChnc3RfaXNfdnVsa2FuX2ltYWdlX21lbW9yeSAoR1NUX01FTU9SWV9DQVNUIChpbWFnZSkpLAorICAgICAgMCk7CisKKyAgcmV0dXJuIGltYWdlLT5jcmVhdGVfaW5mby5leHRlbnQuaGVpZ2h0OworfQorCitHX0RFRklORV9UWVBFIChHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvciwgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yLAorICAgIEdTVF9UWVBFX0FMTE9DQVRPUik7CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3JfY2xhc3NfaW5pdCAoR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3JDbGFzcworICAgICoga2xhc3MpCit7CisgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3MgPSAoR3N0QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisKKyAgYWxsb2NhdG9yX2NsYXNzLT5hbGxvYyA9IF92a19pbWFnZV9tZW1fYWxsb2M7CisgIGFsbG9jYXRvcl9jbGFzcy0+ZnJlZSA9IF92a19pbWFnZV9tZW1fZnJlZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jYXRvcl9pbml0IChHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvciAqCisgICAgYWxsb2NhdG9yKQoreworICBHc3RBbGxvY2F0b3IgKmFsbG9jID0gR1NUX0FMTE9DQVRPUl9DQVNUIChhbGxvY2F0b3IpOworCisgIGFsbG9jLT5tZW1fdHlwZSA9IEdTVF9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FOworICBhbGxvYy0+bWVtX21hcF9mdWxsID0gKEdzdE1lbW9yeU1hcEZ1bGxGdW5jdGlvbikgX3ZrX2ltYWdlX21lbV9tYXBfZnVsbDsKKyAgYWxsb2MtPm1lbV91bm1hcF9mdWxsID0gKEdzdE1lbW9yeVVubWFwRnVsbEZ1bmN0aW9uKSBfdmtfaW1hZ2VfbWVtX3VubWFwX2Z1bGw7CisgIGFsbG9jLT5tZW1fY29weSA9IChHc3RNZW1vcnlDb3B5RnVuY3Rpb24pIF92a19pbWFnZV9tZW1fY29weTsKKyAgYWxsb2MtPm1lbV9zaGFyZSA9IChHc3RNZW1vcnlTaGFyZUZ1bmN0aW9uKSBfdmtfaW1hZ2VfbWVtX3NoYXJlOworICBhbGxvYy0+bWVtX2lzX3NwYW4gPSAoR3N0TWVtb3J5SXNTcGFuRnVuY3Rpb24pIF92a19pbWFnZV9tZW1faXNfc3BhbjsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9pbml0X29uY2U6CisgKgorICogSW5pdGlhbGl6ZXMgdGhlIFZ1bGthbiBtZW1vcnkgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorICogbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgI0dzdFZ1bGthbkltYWdlTWVtb3J5IG9wZXJhdGlvbi4KKyAqLwordm9pZAorZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfaW5pdF9vbmNlICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX1ZVTEtBTl9JTUFHRV9NRU1PUlksICJ2dWxrYW5pbWFnZW1lbW9yeSIsCisgICAgICAgIDAsICJWdWxrYW4gSW1hZ2UgTWVtb3J5Iik7CisKKyAgICBfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3IgPQorICAgICAgICBnX29iamVjdF9uZXcgKGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSAoKSwgTlVMTCk7CisKKyAgICBnc3RfYWxsb2NhdG9yX3JlZ2lzdGVyIChHU1RfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1JfTkFNRSwKKyAgICAgICAgZ3N0X29iamVjdF9yZWYgKF92dWxrYW5faW1hZ2VfbWVtb3J5X2FsbG9jYXRvcikpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKKy8qKgorICogZ3N0X2lzX3Z1bGthbl9pbWFnZV9tZW1vcnk6CisgKiBAbWVtOmEgI0dzdE1lbW9yeQorICogCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkgYXQgQG1lbSBpcyBhICNHc3RWdWxrYW5JbWFnZU1lbW9yeQorICovCitnYm9vbGVhbgorZ3N0X2lzX3Z1bGthbl9pbWFnZV9tZW1vcnkgKEdzdE1lbW9yeSAqIG1lbSkKK3sKKyAgcmV0dXJuIG1lbSAhPSBOVUxMICYmIG1lbS0+YWxsb2NhdG9yICE9IE5VTEwgJiYKKyAgICAgIGdfdHlwZV9pc19hIChHX09CSkVDVF9UWVBFIChtZW0tPmFsbG9jYXRvciksCisgICAgICBHU1RfVFlQRV9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUik7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuaCBiL2V4dC92dWxrYW4vdmtpbWFnZW1lbW9yeS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFhNmNhZDYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZraW1hZ2VtZW1vcnkuaApAQCAtMCwwICsxLDEyMiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19JTUFHRV9NRU1PUllfSF8KKyNkZWZpbmUgX1ZLX0lNQUdFX01FTU9SWV9IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9nc3RhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0bWVtb3J5Lmg+CisKKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlKCkpCitHVHlwZSBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUodm9pZCk7CisKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiwgR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiwgR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3IpKQorI2RlZmluZSBHU1RfVlVMS0FOX0lNQUdFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiwgR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yICopKG9iaikpCisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9JTUFHRV9NRU1PUllfQUxMT0NBVE9SX05BTUUgIlZ1bGthbkltYWdlIgorI2RlZmluZSBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9WVUxLQU5fSU1BR0UgIm1lbW9yeToiIEdTVF9WVUxLQU5fSU1BR0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FCisKK3N0cnVjdCBfR3N0VnVsa2FuSW1hZ2VNZW1vcnkKK3sKKyAgR3N0TWVtb3J5IHBhcmVudDsKKworICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2U7CisKKyAgVmtJbWFnZSBpbWFnZTsKKyAgVmtJbWFnZUxheW91dCBpbWFnZV9sYXlvdXQ7CisgIFZrSW1hZ2VWaWV3IHZpZXc7CisgIEdzdFZ1bGthbk1lbW9yeSAqdmtfbWVtOworCisgIFZrSW1hZ2VDcmVhdGVJbmZvIGNyZWF0ZV9pbmZvOworICBWa01lbW9yeVJlcXVpcmVtZW50cyByZXF1aXJlbWVudHM7CisgIFZrSW1hZ2VGb3JtYXRQcm9wZXJ0aWVzIGZvcm1hdF9wcm9wZXJ0aWVzOworICBWa0ltYWdlVXNhZ2VGbGFncyB1c2FnZTsKKworICBHTXV0ZXggbG9jazsKKyAgZ2Jvb2xlYW4gd3JhcHBlZDsKKyAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5OworICBncG9pbnRlciB1c2VyX2RhdGE7Cit9OworCisvKioKKyAqIEdzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yCisgKgorICogT3BhcXVlICNHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvciBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvcgoreworICBHc3RBbGxvY2F0b3IgcGFyZW50OworfTsKKworLyoqCisgKiBHc3RWdWxrYW5JbWFnZU1lbW9yeUFsbG9jYXRvckNsYXNzOgorICoKKyAqIFRoZSAjR3N0VnVsa2FuSW1hZ2VNZW1vcnlBbGxvY2F0b3JDbGFzcyBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQorICovCitzdHJ1Y3QgX0dzdFZ1bGthbkltYWdlTWVtb3J5QWxsb2NhdG9yQ2xhc3MKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKwordm9pZCAgICAgICAgICAgIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2luaXRfb25jZSAgICAgICAodm9pZCk7CitnYm9vbGVhbiAgICAgICAgZ3N0X2lzX3Z1bGthbl9pbWFnZV9tZW1vcnkgICAgICAgICAgICAgIChHc3RNZW1vcnkgKiBtZW0pOworCitHc3RNZW1vcnkgKiAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfYWxsb2MgICAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0Zvcm1hdCBmb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VUaWxpbmcgdGlsaW5nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZVVzYWdlRmxhZ3MgdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgbWVtX3Byb3BfZmxhZ3MpOworCitHc3RNZW1vcnkgKiAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfd3JhcHBlZCAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlIGltYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtGb3JtYXQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBoZWlnaHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlVGlsaW5nIHRpbGluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrSW1hZ2VVc2FnZUZsYWdzIHVzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKKworZ2Jvb2xlYW4gICAgICAgIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X3NldF9sYXlvdXQgICAgICAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiB2a19tZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWa0ltYWdlTGF5b3V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtJbWFnZU1lbW9yeUJhcnJpZXIgKiBiYXJyaWVyKTsKKworZ3VpbnQzMiAgICAgICAgIGdzdF92dWxrYW5faW1hZ2VfbWVtb3J5X2dldF93aWR0aCAgICAgICAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKiBpbWFnZSk7CitndWludDMyICAgICAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfZ2V0X2hlaWdodCAgICAgIChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqIGltYWdlKTsKKworVmtGb3JtYXQgZ3N0X3Z1bGthbl9mb3JtYXRfZnJvbV92aWRlb19mb3JtYXQgKEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHBsYW5lKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9WS19JTUFHRV9NRU1PUllfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtpbnN0YW5jZS5jIGIvZXh0L3Z1bGthbi92a2luc3RhbmNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjhjNGU3OAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtpbnN0YW5jZS5jCkBAIC0wLDAgKzEsNTQyIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgInZraW5zdGFuY2UuaCIKKyNpbmNsdWRlICJ2a3V0aWxzX3ByaXZhdGUuaCIKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjZGVmaW5lIEFQUF9TSE9SVF9OQU1FICJHU3RyZWFtZXIiCisKK3N0YXRpYyBjb25zdCBjaGFyICppbnN0YW5jZV92YWxpZGF0aW9uX2xheWVyc1tdID0geworICAiVktfTEFZRVJfTFVOQVJHX3RocmVhZGluZyIsCisgICJWS19MQVlFUl9MVU5BUkdfbWVtX3RyYWNrZXIiLAorICAiVktfTEFZRVJfTFVOQVJHX29iamVjdF90cmFja2VyIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19kcmF3X3N0YXRlIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19wYXJhbV9jaGVja2VyIiwKKyAgIlZLX0xBWUVSX0xVTkFSR19zd2FwY2hhaW4iLAorICAiVktfTEFZRVJfTFVOQVJHX2RldmljZV9saW1pdHMiLAorICAiVktfTEFZRVJfTFVOQVJHX2ltYWdlIiwKK307CisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92dWxrYW5faW5zdGFuY2VfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWSAoR1NUX0NBVF9ERUZBVUxUKTsKK0dTVF9ERUJVR19DQVRFR09SWSAoR1NUX1ZVTEtBTl9ERUJVR19DQVQpOworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9DT05URVhUKTsKKworZW51bQoreworICBTSUdOQUxfMCwKKyAgU0lHTkFMX0NSRUFURV9ERVZJQ0UsCisgIExBU1RfU0lHTkFMCit9OworCitzdGF0aWMgZ3VpbnQgZ3N0X3Z1bGthbl9pbnN0YW5jZV9zaWduYWxzW0xBU1RfU0lHTkFMXSA9IHsgMCB9OworCisjZGVmaW5lIGdzdF92dWxrYW5faW5zdGFuY2VfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFZ1bGthbkluc3RhbmNlLCBnc3RfdnVsa2FuX2luc3RhbmNlLAorICAgIEdTVF9UWVBFX09CSkVDVCwgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfREVGQVVMVCwKKyAgICAgICAgInZ1bGthbmluc3RhbmNlIiwgMCwgIlZ1bGthbiBJbnN0YW5jZSIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfVlVMS0FOX0RFQlVHX0NBVCwKKyAgICAgICAgInZ1bGthbmRlYnVnIiwgMCwgIlZ1bGthbiBEZWJ1ZyIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKEdTVF9DQVRfQ09OVEVYVCwgIkdTVF9DT05URVhUIikpOworCitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX2luc3RhbmNlX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKKworc3RydWN0IF9Hc3RWdWxrYW5JbnN0YW5jZVByaXZhdGUKK3sKKyAgZ2Jvb2xlYW4gb3BlbmVkOworfTsKKworR3N0VnVsa2FuSW5zdGFuY2UgKgorZ3N0X3Z1bGthbl9pbnN0YW5jZV9uZXcgKHZvaWQpCit7CisgIHJldHVybiBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1ZVTEtBTl9JTlNUQU5DRSwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX2luc3RhbmNlX2luaXQgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UpCit7CisgIGluc3RhbmNlLT5wcml2ID0gR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgoaW5zdGFuY2UpLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX0lOU1RBTkNFLCBHc3RWdWxrYW5JbnN0YW5jZVByaXZhdGUpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9pbnN0YW5jZV9jbGFzc19pbml0IChHc3RWdWxrYW5JbnN0YW5jZUNsYXNzICoga2xhc3MpCit7CisgIGdzdF92dWxrYW5fbWVtb3J5X2luaXRfb25jZSAoKTsKKyAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfaW5pdF9vbmNlICgpOworICBnc3RfdnVsa2FuX2J1ZmZlcl9tZW1vcnlfaW5pdF9vbmNlICgpOworCisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0VnVsa2FuSW5zdGFuY2VQcml2YXRlKSk7CisKKyAgLyoqCisgICAqIEdzdFZ1bGthbkluc3RhbmNlOjpjcmVhdGUtZGV2aWNlOgorICAgKiBAb2JqZWN0OiB0aGUgI0dzdFZ1bGthbkRpc3BsYXkKKyAgICoKKyAgICogT3ZlcnJpZGVzIHRoZSAjR3N0VnVsa2FuRGV2aWNlIGNyZWF0aW9uIG1lY2hhbmlzbS4KKyAgICogSXQgY2FuIGJlIGNhbGxlZCBmcm9tIGFueSB0aHJlYWQuCisgICAqCisgICAqIFJldHVybnM6IHRoZSBuZXdseSBjcmVhdGVkICNHc3RWdWxrYW5EZXZpY2UuCisgICAqLworICBnc3RfdnVsa2FuX2luc3RhbmNlX3NpZ25hbHNbU0lHTkFMX0NSRUFURV9ERVZJQ0VdID0KKyAgICAgIGdfc2lnbmFsX25ldyAoImNyZWF0ZS1kZXZpY2UiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QsIDAsIE5VTEwsIE5VTEwsIGdfY2Nsb3N1cmVfbWFyc2hhbF9nZW5lcmljLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX0RFVklDRSwgMCk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKS0+ZmluYWxpemUgPSBnc3RfdnVsa2FuX2luc3RhbmNlX2ZpbmFsaXplOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9pbnN0YW5jZV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlID0gR1NUX1ZVTEtBTl9JTlNUQU5DRSAob2JqZWN0KTsKKworICBpZiAoaW5zdGFuY2UtPnByaXYtPm9wZW5lZCkgeworICAgIGlmIChpbnN0YW5jZS0+ZGJnRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2spCisgICAgICBpbnN0YW5jZS0+ZGJnRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2sgKGluc3RhbmNlLT5pbnN0YW5jZSwKKyAgICAgICAgICBpbnN0YW5jZS0+bXNnX2NhbGxiYWNrLCBOVUxMKTsKKworICAgIGdfZnJlZSAoaW5zdGFuY2UtPnBoeXNpY2FsX2RldmljZXMpOworICB9CisgIGluc3RhbmNlLT5wcml2LT5vcGVuZWQgPSBGQUxTRTsKKworICBpZiAoaW5zdGFuY2UtPmluc3RhbmNlKQorICAgIHZrRGVzdHJveUluc3RhbmNlIChpbnN0YW5jZS0+aW5zdGFuY2UsIE5VTEwpOworICBpbnN0YW5jZS0+aW5zdGFuY2UgPSBOVUxMOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIFZrQm9vbDMyCitfZ3N0X3ZrX2RlYnVnX2NhbGxiYWNrIChWa0RlYnVnUmVwb3J0RmxhZ3NFWFQgbXNnRmxhZ3MsCisgICAgVmtEZWJ1Z1JlcG9ydE9iamVjdFR5cGVFWFQgb2JqVHlwZSwgdWludDY0X3Qgc3JjT2JqZWN0LCBzaXplX3QgbG9jYXRpb24sCisgICAgaW50MzJfdCBtc2dDb2RlLCBjb25zdCBjaGFyICpwTGF5ZXJQcmVmaXgsIGNvbnN0IGNoYXIgKnBNc2csCisgICAgdm9pZCAqcFVzZXJEYXRhKQoreworICBpZiAobXNnRmxhZ3MgJiBWS19ERUJVR19SRVBPUlRfRVJST1JfQklUX0VYVCkgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9WVUxLQU5fREVCVUdfQ0FULCAiWyVzXSBDb2RlICVkIDogJXMiLCBwTGF5ZXJQcmVmaXgsCisgICAgICAgIG1zZ0NvZGUsIHBNc2cpOworICB9IGVsc2UgaWYgKG1zZ0ZsYWdzICYgVktfREVCVUdfUkVQT1JUX1dBUk5JTkdfQklUX0VYVCkgeworICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX1ZVTEtBTl9ERUJVR19DQVQsICJbJXNdIENvZGUgJWQgOiAlcyIsIHBMYXllclByZWZpeCwKKyAgICAgICAgbXNnQ29kZSwgcE1zZyk7CisgIH0gZWxzZSBpZiAobXNnRmxhZ3MgJiBWS19ERUJVR19SRVBPUlRfSU5GT1JNQVRJT05fQklUX0VYVCkgeworICAgIEdTVF9DQVRfTE9HIChHU1RfVlVMS0FOX0RFQlVHX0NBVCwgIlslc10gQ29kZSAlZCA6ICVzIiwgcExheWVyUHJlZml4LAorICAgICAgICBtc2dDb2RlLCBwTXNnKTsKKyAgfSBlbHNlIGlmIChtc2dGbGFncyAmIFZLX0RFQlVHX1JFUE9SVF9QRVJGT1JNQU5DRV9XQVJOSU5HX0JJVF9FWFQpIHsKKyAgICBHU1RfQ0FUX0ZJWE1FIChHU1RfVlVMS0FOX0RFQlVHX0NBVCwgIlslc10gQ29kZSAlZCA6ICVzIiwgcExheWVyUHJlZml4LAorICAgICAgICBtc2dDb2RlLCBwTXNnKTsKKyAgfSBlbHNlIGlmIChtc2dGbGFncyAmIFZLX0RFQlVHX1JFUE9SVF9ERUJVR19CSVRfRVhUKSB7CisgICAgR1NUX0NBVF9UUkFDRSAoR1NUX1ZVTEtBTl9ERUJVR19DQVQsICJbJXNdIENvZGUgJWQgOiAlcyIsIHBMYXllclByZWZpeCwKKyAgICAgICAgbXNnQ29kZSwgcE1zZyk7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgLyoKKyAgICogZmFsc2UgaW5kaWNhdGVzIHRoYXQgbGF5ZXIgc2hvdWxkIG5vdCBiYWlsLW91dCBvZiBhbgorICAgKiBBUEkgY2FsbCB0aGF0IGhhZCB2YWxpZGF0aW9uIGZhaWx1cmVzLiBUaGlzIG1heSBtZWFuIHRoYXQgdGhlCisgICAqIGFwcCBkaWVzIGluc2lkZSB0aGUgZHJpdmVyIGR1ZSB0byBpbnZhbGlkIHBhcmFtZXRlcihzKS4KKyAgICogVGhhdCdzIHdoYXQgd291bGQgaGFwcGVuIHdpdGhvdXQgdmFsaWRhdGlvbiBsYXllcnMsIHNvIHdlJ2xsCisgICAqIGtlZXAgdGhhdCBiZWhhdmlvciBoZXJlLgorICAgKi8KKyAgcmV0dXJuIEZBTFNFOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9pbnN0YW5jZV9vcGVuIChHc3RWdWxrYW5JbnN0YW5jZSAqIGluc3RhbmNlLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrRXh0ZW5zaW9uUHJvcGVydGllcyAqaW5zdGFuY2VfZXh0ZW5zaW9uczsKKyAgY2hhciAqZXh0ZW5zaW9uX25hbWVzWzY0XTsgICAgLyogRklYTUU6IG1ha2UgZHluYW1pYyAqLworICBWa0xheWVyUHJvcGVydGllcyAqaW5zdGFuY2VfbGF5ZXJzOworICB1aW50MzJfdCBpbnN0YW5jZV9leHRlbnNpb25fY291bnQgPSAwOworICB1aW50MzJfdCBlbmFibGVkX2V4dGVuc2lvbl9jb3VudCA9IDA7CisgIHVpbnQzMl90IGluc3RhbmNlX2xheWVyX2NvdW50ID0gMDsKKyAgdWludDMyX3QgZW5hYmxlZF9sYXllcl9jb3VudCA9IDA7CisgIGdib29sZWFuIHZhbGlkYXRpb25fZm91bmQ7CisgIFZrUmVzdWx0IGVycjsKKworICBHU1RfT0JKRUNUX0xPQ0sgKGluc3RhbmNlKTsKKyAgaWYgKGluc3RhbmNlLT5wcml2LT5vcGVuZWQpIHsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoaW5zdGFuY2UpOworICAgIHJldHVybiBUUlVFOworICB9CisKKyAgLyogTG9vayBmb3IgdmFsaWRhdGlvbiBsYXllcnMgKi8KKyAgZXJyID0gdmtFbnVtZXJhdGVJbnN0YW5jZUxheWVyUHJvcGVydGllcyAoJmluc3RhbmNlX2xheWVyX2NvdW50LCBOVUxMKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidktFbnVtZXJhdGVJbnN0YW5jZUxheWVyUHJvcGVydGllcyIpIDwgMCkKKyAgICBnb3RvIGVycm9yOworCisgIGluc3RhbmNlX2xheWVycyA9IGdfbmV3MCAoVmtMYXllclByb3BlcnRpZXMsIGluc3RhbmNlX2xheWVyX2NvdW50KTsKKyAgZXJyID0KKyAgICAgIHZrRW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMgKCZpbnN0YW5jZV9sYXllcl9jb3VudCwKKyAgICAgIGluc3RhbmNlX2xheWVycyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgInZLRW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMiKSA8IDApIHsKKyAgICBnX2ZyZWUgKGluc3RhbmNlX2xheWVycyk7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIC8qIFRPRE86IGFsbG93IG91dHNpZGUgc2VsZWN0aW9uICovCisgIHZhbGlkYXRpb25fZm91bmQgPQorICAgICAgX2NoZWNrX2Zvcl9hbGxfbGF5ZXJzIChHX05fRUxFTUVOVFMgKGluc3RhbmNlX3ZhbGlkYXRpb25fbGF5ZXJzKSwKKyAgICAgIGluc3RhbmNlX3ZhbGlkYXRpb25fbGF5ZXJzLCBpbnN0YW5jZV9sYXllcl9jb3VudCwgaW5zdGFuY2VfbGF5ZXJzKTsKKyAgaWYgKCF2YWxpZGF0aW9uX2ZvdW5kKSB7CisgICAgZ19lcnJvciAoInZrRW51bWVyYXRlSW5zdGFuY2VMYXllclByb3BlcnRpZXMgZmFpbGVkIHRvIGZpbmQiCisgICAgICAgICJyZXF1aXJlZCB2YWxpZGF0aW9uIGxheWVyLlxuXG4iCisgICAgICAgICJQbGVhc2UgbG9vayBhdCB0aGUgR2V0dGluZyBTdGFydGVkIGd1aWRlIGZvciBhZGRpdGlvbmFsICIKKyAgICAgICAgImluZm9ybWF0aW9uLlxudmtDcmVhdGVJbnN0YW5jZSBGYWlsdXJlIik7CisgIH0KKyAgZW5hYmxlZF9sYXllcl9jb3VudCA9IEdfTl9FTEVNRU5UUyAoaW5zdGFuY2VfdmFsaWRhdGlvbl9sYXllcnMpOworCisgIGVyciA9CisgICAgICB2a0VudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyAoTlVMTCwgJmluc3RhbmNlX2V4dGVuc2lvbl9jb3VudCwKKyAgICAgIE5VTEwpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0VudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyIpIDwgMCkgeworICAgIGdfZnJlZSAoaW5zdGFuY2VfbGF5ZXJzKTsKKyAgICBnb3RvIGVycm9yOworICB9CisgIEdTVF9ERUJVR19PQkpFQ1QgKGluc3RhbmNlLCAiRm91bmQgJXUgZXh0ZW5zaW9ucyIsIGluc3RhbmNlX2V4dGVuc2lvbl9jb3VudCk7CisKKyAgbWVtc2V0IChleHRlbnNpb25fbmFtZXMsIDAsIHNpemVvZiAoZXh0ZW5zaW9uX25hbWVzKSk7CisgIGluc3RhbmNlX2V4dGVuc2lvbnMgPQorICAgICAgZ19uZXcwIChWa0V4dGVuc2lvblByb3BlcnRpZXMsIGluc3RhbmNlX2V4dGVuc2lvbl9jb3VudCk7CisgIGVyciA9CisgICAgICB2a0VudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyAoTlVMTCwgJmluc3RhbmNlX2V4dGVuc2lvbl9jb3VudCwKKyAgICAgIGluc3RhbmNlX2V4dGVuc2lvbnMpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0VudW1lcmF0ZUluc3RhbmNlRXh0ZW5zaW9uUHJvcGVydGllcyIpIDwgMCkgeworICAgIGdfZnJlZSAoaW5zdGFuY2VfbGF5ZXJzKTsKKyAgICBnX2ZyZWUgKGluc3RhbmNlX2V4dGVuc2lvbnMpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICB7CisgICAgR3N0VnVsa2FuRGlzcGxheVR5cGUgZGlzcGxheV90eXBlOworICAgIGdib29sZWFuIHN3YXBjaGFpbl9leHRfZm91bmQgPSBGQUxTRTsKKyAgICBnYm9vbGVhbiB3aW5zeXNfZXh0X2ZvdW5kID0gRkFMU0U7CisgICAgY29uc3QgZ2NoYXIgKndpbnN5c19leHRfbmFtZTsKKworICAgIGRpc3BsYXlfdHlwZSA9IGdzdF92dWxrYW5fZGlzcGxheV9jaG9vc2VfdHlwZSAoaW5zdGFuY2UpOworCisgICAgd2luc3lzX2V4dF9uYW1lID0KKyAgICAgICAgZ3N0X3Z1bGthbl9kaXNwbGF5X3R5cGVfdG9fZXh0ZW5zaW9uX3N0cmluZyAoZGlzcGxheV90eXBlKTsKKyAgICBpZiAoIXdpbnN5c19leHRfbmFtZSkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChpbnN0YW5jZSwgIk5vIHdpbmRvdyBzeXN0ZW0gZXh0ZW5zaW9uIGVuYWJsZWQiKTsKKyAgICAgIHdpbnN5c19leHRfZm91bmQgPSBUUlVFOyAgLyogRG9uJ3QgZXJyb3Igb3V0IGNvbXBsZXRlbHkgKi8KKyAgICB9CisKKyAgICAvKiBUT0RPOiBhbGxvdyBvdXRzaWRlIHNlbGVjdGlvbiAqLworICAgIGZvciAodWludDMyX3QgaSA9IDA7IGkgPCBpbnN0YW5jZV9leHRlbnNpb25fY291bnQ7IGkrKykgeworICAgICAgR1NUX1RSQUNFX09CSkVDVCAoaW5zdGFuY2UsICJjaGVja2luZyBpbnN0YW5jZSBleHRlbnNpb24gJXMiLAorICAgICAgICAgIGluc3RhbmNlX2V4dGVuc2lvbnNbaV0uZXh0ZW5zaW9uTmFtZSk7CisKKyAgICAgIGlmICghZ19zdHJjbXAwIChWS19LSFJfU1VSRkFDRV9FWFRFTlNJT05fTkFNRSwKKyAgICAgICAgICAgICAgaW5zdGFuY2VfZXh0ZW5zaW9uc1tpXS5leHRlbnNpb25OYW1lKSkgeworICAgICAgICBzd2FwY2hhaW5fZXh0X2ZvdW5kID0gVFJVRTsKKyAgICAgICAgZXh0ZW5zaW9uX25hbWVzW2VuYWJsZWRfZXh0ZW5zaW9uX2NvdW50KytdID0KKyAgICAgICAgICAgIChnY2hhciAqKSBWS19LSFJfU1VSRkFDRV9FWFRFTlNJT05fTkFNRTsKKyAgICAgIH0KKyAgICAgIGlmICghZ19zdHJjbXAwIChWS19FWFRfREVCVUdfUkVQT1JUX0VYVEVOU0lPTl9OQU1FLAorICAgICAgICAgICAgICBpbnN0YW5jZV9leHRlbnNpb25zW2ldLmV4dGVuc2lvbk5hbWUpKSB7CisgICAgICAgIGV4dGVuc2lvbl9uYW1lc1tlbmFibGVkX2V4dGVuc2lvbl9jb3VudCsrXSA9CisgICAgICAgICAgICAoZ2NoYXIgKikgVktfRVhUX0RFQlVHX1JFUE9SVF9FWFRFTlNJT05fTkFNRTsKKyAgICAgIH0KKyAgICAgIGlmICghZ19zdHJjbXAwICh3aW5zeXNfZXh0X25hbWUsIGluc3RhbmNlX2V4dGVuc2lvbnNbaV0uZXh0ZW5zaW9uTmFtZSkpIHsKKyAgICAgICAgd2luc3lzX2V4dF9mb3VuZCA9IFRSVUU7CisgICAgICAgIGV4dGVuc2lvbl9uYW1lc1tlbmFibGVkX2V4dGVuc2lvbl9jb3VudCsrXSA9IChnY2hhciAqKSB3aW5zeXNfZXh0X25hbWU7CisgICAgICB9CisgICAgICBnX2Fzc2VydCAoZW5hYmxlZF9leHRlbnNpb25fY291bnQgPCA2NCk7CisgICAgfQorICAgIGlmICghc3dhcGNoYWluX2V4dF9mb3VuZCkgeworICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICAgInZrRW51bWVyYXRlSW5zdGFuY2VFeHRlbnNpb25Qcm9wZXJ0aWVzIGZhaWxlZCB0byBmaW5kIHRoZSByZXF1aXJlZCAiCisgICAgICAgICAgIlwiIiBWS19LSFJfU1VSRkFDRV9FWFRFTlNJT05fTkFNRSAiXCIgZXh0ZW5zaW9uIik7CisgICAgICBnX2ZyZWUgKGluc3RhbmNlX2xheWVycyk7CisgICAgICBnX2ZyZWUgKGluc3RhbmNlX2V4dGVuc2lvbnMpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgaWYgKCF3aW5zeXNfZXh0X2ZvdW5kKSB7CisgICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgICAidmtFbnVtZXJhdGVJbnN0YW5jZUV4dGVuc2lvblByb3BlcnRpZXMgZmFpbGVkIHRvIGZpbmQgdGhlIHJlcXVpcmVkICIKKyAgICAgICAgICAiXCIlc1wiIHdpbmRvdyBzeXN0ZW0gZXh0ZW5zaW9uIiwgd2luc3lzX2V4dF9uYW1lKTsKKyAgICAgIGdfZnJlZSAoaW5zdGFuY2VfbGF5ZXJzKTsKKyAgICAgIGdfZnJlZSAoaW5zdGFuY2VfZXh0ZW5zaW9ucyk7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgfQorCisgIHsKKyAgICBWa0FwcGxpY2F0aW9uSW5mbyBhcHAgPSB7IDAsIH07CisgICAgVmtJbnN0YW5jZUNyZWF0ZUluZm8gaW5zdF9pbmZvID0geyAwLCB9OworCisgICAgYXBwLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQVBQTElDQVRJT05fSU5GTzsKKyAgICBhcHAucE5leHQgPSBOVUxMOworICAgIGFwcC5wQXBwbGljYXRpb25OYW1lID0gQVBQX1NIT1JUX05BTUU7CisgICAgYXBwLmFwcGxpY2F0aW9uVmVyc2lvbiA9IDA7CisgICAgYXBwLnBFbmdpbmVOYW1lID0gQVBQX1NIT1JUX05BTUU7CisgICAgYXBwLmVuZ2luZVZlcnNpb24gPSAwOworICAgIGFwcC5hcGlWZXJzaW9uID0gVktfQVBJX1ZFUlNJT047CisKKyAgICBpbnN0X2luZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9JTlNUQU5DRV9DUkVBVEVfSU5GTzsKKyAgICBpbnN0X2luZm8ucE5leHQgPSBOVUxMOworICAgIGluc3RfaW5mby5wQXBwbGljYXRpb25JbmZvID0gJmFwcDsKKyAgICBpbnN0X2luZm8uZW5hYmxlZExheWVyQ291bnQgPSBlbmFibGVkX2xheWVyX2NvdW50OworICAgIGluc3RfaW5mby5wcEVuYWJsZWRMYXllck5hbWVzID0KKyAgICAgICAgKGNvbnN0IGNoYXIgKmNvbnN0ICopIGluc3RhbmNlX3ZhbGlkYXRpb25fbGF5ZXJzOworICAgIGluc3RfaW5mby5lbmFibGVkRXh0ZW5zaW9uQ291bnQgPSBlbmFibGVkX2V4dGVuc2lvbl9jb3VudDsKKyAgICBpbnN0X2luZm8ucHBFbmFibGVkRXh0ZW5zaW9uTmFtZXMgPSAoY29uc3QgY2hhciAqY29uc3QgKikgZXh0ZW5zaW9uX25hbWVzOworCisgICAgZXJyID0gdmtDcmVhdGVJbnN0YW5jZSAoJmluc3RfaW5mbywgTlVMTCwgJmluc3RhbmNlLT5pbnN0YW5jZSk7CisgICAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrQ3JlYXRlSW5zdGFuY2UiKSA8IDApIHsKKyAgICAgIGdfZnJlZSAoaW5zdGFuY2VfbGF5ZXJzKTsKKyAgICAgIGdfZnJlZSAoaW5zdGFuY2VfZXh0ZW5zaW9ucyk7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgfQorCisgIGdfZnJlZSAoaW5zdGFuY2VfbGF5ZXJzKTsKKyAgZ19mcmVlIChpbnN0YW5jZV9leHRlbnNpb25zKTsKKworICBlcnIgPQorICAgICAgdmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMgKGluc3RhbmNlLT5pbnN0YW5jZSwKKyAgICAgICZpbnN0YW5jZS0+bl9waHlzaWNhbF9kZXZpY2VzLCBOVUxMKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidmtFbnVtZXJhdGVQaHlzaWNhbERldmljZXMiKSA8IDApCisgICAgZ290byBlcnJvcjsKKyAgZ19hc3NlcnQgKGluc3RhbmNlLT5uX3BoeXNpY2FsX2RldmljZXMgPiAwKTsKKyAgaW5zdGFuY2UtPnBoeXNpY2FsX2RldmljZXMgPQorICAgICAgZ19uZXcwIChWa1BoeXNpY2FsRGV2aWNlLCBpbnN0YW5jZS0+bl9waHlzaWNhbF9kZXZpY2VzKTsKKyAgZXJyID0KKyAgICAgIHZrRW51bWVyYXRlUGh5c2ljYWxEZXZpY2VzIChpbnN0YW5jZS0+aW5zdGFuY2UsCisgICAgICAmaW5zdGFuY2UtPm5fcGh5c2ljYWxfZGV2aWNlcywgaW5zdGFuY2UtPnBoeXNpY2FsX2RldmljZXMpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICJ2a0VudW1lcmF0ZVBoeXNpY2FsRGV2aWNlcyIpIDwgMCkKKyAgICBnb3RvIGVycm9yOworCisgIGluc3RhbmNlLT5kYmdDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrID0gKFBGTl92a0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2tFWFQpCisgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX2dldF9wcm9jX2FkZHJlc3MgKGluc3RhbmNlLAorICAgICAgInZrQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFja0VYVCIpOworICBpZiAoIWluc3RhbmNlLT5kYmdDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJGYWlsZWQgdG8gcmV0cmVpdmUgdmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorICBpbnN0YW5jZS0+ZGJnRGVzdHJveURlYnVnUmVwb3J0Q2FsbGJhY2sgPQorICAgICAgKFBGTl92a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUKQorICAgICAgZ3N0X3Z1bGthbl9pbnN0YW5jZV9nZXRfcHJvY19hZGRyZXNzIChpbnN0YW5jZSwKKyAgICAgICJ2a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIik7CisgIGlmICghaW5zdGFuY2UtPmRiZ0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJGYWlsZWQgdG8gcmV0cmVpdmUgdmtEZXN0cm95RGVidWdSZXBvcnRDYWxsYmFjayIpOworICAgIGdvdG8gZXJyb3I7CisgIH0KKyAgaW5zdGFuY2UtPmRiZ1JlcG9ydE1lc3NhZ2UgPSAoUEZOX3ZrRGVidWdSZXBvcnRNZXNzYWdlRVhUKQorICAgICAgZ3N0X3Z1bGthbl9pbnN0YW5jZV9nZXRfcHJvY19hZGRyZXNzIChpbnN0YW5jZSwKKyAgICAgICJ2a0RlYnVnUmVwb3J0TWVzc2FnZUVYVCIpOworICBpZiAoIWluc3RhbmNlLT5kYmdSZXBvcnRNZXNzYWdlKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLCBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJGYWlsZWQgdG8gcmV0cmVpdmUgdmtEZWJ1Z1JlcG9ydE1lc3NhZ2UiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgeworICAgIFZrRGVidWdSZXBvcnRDYWxsYmFja0NyZWF0ZUluZm9FWFQgaW5mbyA9IHsgMCwgfTsKKworICAgIGluZm8uc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9ERUJVR19SRVBPUlRfQ1JFQVRFX0lORk9fRVhUOworICAgIGluZm8ucE5leHQgPSBOVUxMOworICAgIGluZm8uZmxhZ3MgPQorICAgICAgICBWS19ERUJVR19SRVBPUlRfRVJST1JfQklUX0VYVCB8IFZLX0RFQlVHX1JFUE9SVF9XQVJOSU5HX0JJVF9FWFQgfAorICAgICAgICBWS19ERUJVR19SRVBPUlRfSU5GT1JNQVRJT05fQklUX0VYVCB8IFZLX0RFQlVHX1JFUE9SVF9ERUJVR19CSVRfRVhUIHwKKyAgICAgICAgVktfREVCVUdfUkVQT1JUX1BFUkZPUk1BTkNFX1dBUk5JTkdfQklUX0VYVDsKKyAgICBpbmZvLnBmbkNhbGxiYWNrID0gKFBGTl92a0RlYnVnUmVwb3J0Q2FsbGJhY2tFWFQpIF9nc3RfdmtfZGVidWdfY2FsbGJhY2s7CisgICAgaW5mby5wVXNlckRhdGEgPSBOVUxMOworCisgICAgZXJyID0KKyAgICAgICAgaW5zdGFuY2UtPmRiZ0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2sgKGluc3RhbmNlLT5pbnN0YW5jZSwgJmluZm8sIE5VTEwsCisgICAgICAgICZpbnN0YW5jZS0+bXNnX2NhbGxiYWNrKTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLAorICAgICAgICAgICAgInZrQ3JlYXRlRGVidWdSZXBvcnRDYWxsYmFjayIpIDwgMCkKKyAgICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBpbnN0YW5jZS0+cHJpdi0+b3BlbmVkID0gVFJVRTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKGluc3RhbmNlKTsKKworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIHsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoaW5zdGFuY2UpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCitncG9pbnRlcgorZ3N0X3Z1bGthbl9pbnN0YW5jZV9nZXRfcHJvY19hZGRyZXNzIChHc3RWdWxrYW5JbnN0YW5jZSAqIGluc3RhbmNlLAorICAgIGNvbnN0IGdjaGFyICogbmFtZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fSU5TVEFOQ0UgKGluc3RhbmNlKSwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbnN0YW5jZS0+aW5zdGFuY2UgIT0gTlVMTCwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChuYW1lICE9IE5VTEwsIE5VTEwpOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKGluc3RhbmNlLCAiJXMiLCBuYW1lKTsKKworICByZXR1cm4gdmtHZXRJbnN0YW5jZVByb2NBZGRyIChpbnN0YW5jZS0+aW5zdGFuY2UsIG5hbWUpOworfQorCitHc3RWdWxrYW5EZXZpY2UgKgorZ3N0X3Z1bGthbl9pbnN0YW5jZV9jcmVhdGVfZGV2aWNlIChHc3RWdWxrYW5JbnN0YW5jZSAqIGluc3RhbmNlLAorICAgIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0VnVsa2FuRGV2aWNlICpkZXZpY2U7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fSU5TVEFOQ0UgKGluc3RhbmNlKSwgTlVMTCk7CisKKyAgZ19zaWduYWxfZW1pdCAoaW5zdGFuY2UsIGdzdF92dWxrYW5faW5zdGFuY2Vfc2lnbmFsc1tTSUdOQUxfQ1JFQVRFX0RFVklDRV0sIDAsCisgICAgICAmZGV2aWNlKTsKKworICBpZiAoIWRldmljZSkKKyAgICBkZXZpY2UgPSBnc3RfdnVsa2FuX2RldmljZV9uZXcgKGluc3RhbmNlKTsKKworICBpZiAoIWdzdF92dWxrYW5fZGV2aWNlX29wZW4gKGRldmljZSwgZXJyb3IpKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoZGV2aWNlKTsKKyAgICBkZXZpY2UgPSBOVUxMOworICB9CisKKyAgcmV0dXJuIGRldmljZTsKK30KKworLyoqCisgKiBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2luc3RhbmNlOgorICogQGNvbnRleHQ6IGEgI0dzdENvbnRleHQKKyAqIEBpbnN0YW5jZTogYSAjR3N0VnVsa2FuSW5zdGFuY2UKKyAqCisgKiBTZXRzIEBpbnN0YW5jZSBvbiBAY29udGV4dAorICoKKyAqIFNpbmNlOiAxLjEwCisgKi8KK3ZvaWQKK2dzdF9jb250ZXh0X3NldF92dWxrYW5faW5zdGFuY2UgKEdzdENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UpCit7CisgIEdzdFN0cnVjdHVyZSAqczsKKworICBnX3JldHVybl9pZl9mYWlsIChjb250ZXh0ICE9IE5VTEwpOworICBnX3JldHVybl9pZl9mYWlsIChnc3RfY29udGV4dF9pc193cml0YWJsZSAoY29udGV4dCkpOworCisgIGlmIChpbnN0YW5jZSkKKyAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9DT05URVhULAorICAgICAgICAic2V0dGluZyBHc3RWdWxrYW5JbnN0YW5jZSglIiBHU1RfUFRSX0ZPUk1BVCAiKSBvbiBjb250ZXh0KCUiCisgICAgICAgIEdTVF9QVFJfRk9STUFUICIpIiwgaW5zdGFuY2UsIGNvbnRleHQpOworCisgIHMgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICBnc3Rfc3RydWN0dXJlX3NldCAocywgR1NUX1ZVTEtBTl9JTlNUQU5DRV9DT05URVhUX1RZUEVfU1RSLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX0lOU1RBTkNFLCBpbnN0YW5jZSwgTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9pbnN0YW5jZToKKyAqIEBjb250ZXh0OiBhICNHc3RDb250ZXh0CisgKiBAaW5zdGFuY2U6IHJlc3VsdGluZyAjR3N0VnVsa2FuSW5zdGFuY2UKKyAqCisgKiBSZXR1cm5zOiBXaGV0aGVyIEBpbnN0YW5jZSB3YXMgaW4gQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMS4xMAorICovCitnYm9vbGVhbgorZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9pbnN0YW5jZSAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2UpCit7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbnN0YW5jZSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb250ZXh0ICE9IE5VTEwsIEZBTFNFKTsKKworICBzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY29udGV4dCk7CisgIHJldCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCBHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIsCisgICAgICBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UsIGluc3RhbmNlLCBOVUxMKTsKKworICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9DT05URVhULCAiZ290IEdzdFZ1bGthbkluc3RhbmNlKCUiIEdTVF9QVFJfRk9STUFUCisgICAgICAiKSBmcm9tIGNvbnRleHQoJSIgR1NUX1BUUl9GT1JNQVQgIikiLCAqaW5zdGFuY2UsIGNvbnRleHQpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2luc3RhbmNlX2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5LCBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSkKK3sKKyAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7CisgIGNvbnN0IGdjaGFyICpjb250ZXh0X3R5cGU7CisgIEdzdENvbnRleHQgKmNvbnRleHQsICpvbGRfY29udGV4dDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZWxlbWVudCAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWVyeSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfUVVFUllfVFlQRSAocXVlcnkpID09IEdTVF9RVUVSWV9DT05URVhULCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbnN0YW5jZSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHRfdHlwZSAocXVlcnksICZjb250ZXh0X3R5cGUpOworCisgIGlmIChnX3N0cmNtcDAgKGNvbnRleHRfdHlwZSwgR1NUX1ZVTEtBTl9JTlNUQU5DRV9DT05URVhUX1RZUEVfU1RSKSA9PSAwKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmb2xkX2NvbnRleHQpOworCisgICAgaWYgKG9sZF9jb250ZXh0KQorICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X2NvcHkgKG9sZF9jb250ZXh0KTsKKyAgICBlbHNlCisgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3IChHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIsIFRSVUUpOworCisgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9pbnN0YW5jZSAoY29udGV4dCwgKmluc3RhbmNlKTsKKyAgICBnc3RfcXVlcnlfc2V0X2NvbnRleHQgKHF1ZXJ5LCBjb250ZXh0KTsKKyAgICBnc3RfY29udGV4dF91bnJlZiAoY29udGV4dCk7CisKKyAgICByZXMgPSAqaW5zdGFuY2UgIT0gTlVMTDsKKyAgfQorCisgIHJldHVybiByZXM7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX2luc3RhbmNlX3J1bl9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19FTEVNRU5UIChlbGVtZW50KSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoaW5zdGFuY2UgIT0gTlVMTCwgRkFMU0UpOworCisgIGlmICgqaW5zdGFuY2UgJiYgR1NUX0lTX1ZVTEtBTl9JTlNUQU5DRSAoKmluc3RhbmNlKSkKKyAgICByZXR1cm4gVFJVRTsKKworICBnc3RfdnVsa2FuX2dsb2JhbF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LAorICAgICAgR1NUX1ZVTEtBTl9JTlNUQU5DRV9DT05URVhUX1RZUEVfU1RSKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChlbGVtZW50LCAiZm91bmQgaW5zdGFuY2UgJXAiLCAqaW5zdGFuY2UpOworCisgIGlmICgqaW5zdGFuY2UpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a2luc3RhbmNlLmggYi9leHQvdnVsa2FuL3ZraW5zdGFuY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lN2Q4ZTQ5Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a2luc3RhbmNlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9WS19JTlNUQU5DRV9IXworI2RlZmluZSBfVktfSU5TVEFOQ0VfSF8KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UgICAgICAgICAoZ3N0X3Z1bGthbl9pbnN0YW5jZV9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVlVMS0FOX0lOU1RBTkNFKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UsIEdzdFZ1bGthbkluc3RhbmNlKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9JTlNUQU5DRV9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrKSwgR1NUX1RZUEVfVlVMS0FOX0lOU1RBTkNFLCBHc3RWdWxrYW5JbnN0YW5jZUNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9JTlNUQU5DRShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX1RZUEVfVlVMS0FOX0lOU1RBTkNFKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9JTlNUQU5DRV9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX1RZUEVfVlVMS0FOX0lOU1RBTkNFKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9JTlNUQU5DRV9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfVFlQRV9WVUxLQU5fSU5TVEFOQ0UsIEdzdFZ1bGthbkluc3RhbmNlQ2xhc3MpKQorR1R5cGUgZ3N0X3Z1bGthbl9pbnN0YW5jZV9nZXRfdHlwZSAgICAgICAodm9pZCk7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9JTlNUQU5DRV9DT05URVhUX1RZUEVfU1RSICJnc3QudnVsa2FuLmluc3RhbmNlIgorCitzdHJ1Y3QgX0dzdFZ1bGthbkluc3RhbmNlCit7CisgIEdzdE9iamVjdCBwYXJlbnQ7CisKKyAgVmtJbnN0YW5jZSBpbnN0YW5jZTsgLyogaGlkZXMgYSBwb2ludGVyICovCisgIFZrUGh5c2ljYWxEZXZpY2UgKnBoeXNpY2FsX2RldmljZXM7IC8qIGhpZGVzIGEgcG9pbnRlciAqLworICBndWludDMyIG5fcGh5c2ljYWxfZGV2aWNlczsKKworICBWa0RlYnVnUmVwb3J0Q2FsbGJhY2tFWFQgbXNnX2NhbGxiYWNrOworICBQRk5fdmtDcmVhdGVEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIGRiZ0NyZWF0ZURlYnVnUmVwb3J0Q2FsbGJhY2s7CisgIFBGTl92a0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrRVhUIGRiZ0Rlc3Ryb3lEZWJ1Z1JlcG9ydENhbGxiYWNrOworICBQRk5fdmtEZWJ1Z1JlcG9ydE1lc3NhZ2VFWFQgZGJnUmVwb3J0TWVzc2FnZTsKKworICBHc3RWdWxrYW5JbnN0YW5jZVByaXZhdGUgKnByaXY7Cit9OworCitzdHJ1Y3QgX0dzdFZ1bGthbkluc3RhbmNlQ2xhc3MKK3sKKyAgR3N0T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR3N0VnVsa2FuSW5zdGFuY2UgKiBnc3RfdnVsa2FuX2luc3RhbmNlX25ldyAgICAgICAgICAgICAgICAgICAgICh2b2lkKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X3Z1bGthbl9pbnN0YW5jZV9vcGVuICAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuSW5zdGFuY2UgKiBpbnN0YW5jZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycm9yKTsKKworZ3BvaW50ZXIgICAgICAgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX2dldF9wcm9jX2FkZHJlc3MgICAgICAgIChHc3RWdWxrYW5JbnN0YW5jZSAqIGluc3RhbmNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIG5hbWUpOworCitHc3RWdWxrYW5EZXZpY2UgKiAgIGdzdF92dWxrYW5faW5zdGFuY2VfY3JlYXRlX2RldmljZSAgICAgICAgICAgKEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CisKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9pbnN0YW5jZSAgICAgICAgICAgICAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthbkluc3RhbmNlICogaW5zdGFuY2UpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfY29udGV4dF9nZXRfdnVsa2FuX2luc3RhbmNlICAgICAgICAgICAgIChHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2UpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX2hhbmRsZV9jb250ZXh0X3F1ZXJ5ICAgIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2UpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX3J1bl9jb250ZXh0X3F1ZXJ5ICAgICAgIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2UpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX1ZLX0lOU1RBTkNFX0hfICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrbWVtb3J5LmMgYi9leHQvdnVsa2FuL3ZrbWVtb3J5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI4NTVjMQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmttZW1vcnkuYwpAQCAtMCwwICsxLDM1OSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInZrbWVtb3J5LmgiCisKKy8qKgorICogU0VDVElPTjp2a21lbW9yeQorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBtZW1vcnkgc3ViY2xhc3MgZm9yIFZ1bGthbiBkZXZpY2UgbWVtb3J5CisgKiBAc2VlX2Fsc286ICNHc3RNZW1vcnksICNHc3RBbGxvY2F0b3IKKyAqCisgKiBHc3RWdWxrYW5NZW1vcnkgaXMgYSAjR3N0TWVtb3J5IHN1YmNsYXNzIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGUgbWFwcGluZyBvZgorICogVnVsa2FuIGRldmljZSBtZW1vcnkuICAKKyAqLworCisvKiBXQVJOSU5HOiB3aGlsZSBzdWJhbGxvY2F0aW9uIGlzIGFsbG93ZWQsIG5vdGhpbmcgcHJldmVudHMgYWxpYXNpbmcgd2hpY2gKKyAqIHJlcXVpcmVzIGV4dGVybmFsIHN5bmNocm9uaXNhdGlvbiAqLworCisjZGVmaW5lIEdTVF9DQVRfREVGVUFMVCBHU1RfQ0FUX1ZVTEtBTl9NRU1PUlkKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGVUFMVCk7CisKK3N0YXRpYyBHc3RBbGxvY2F0b3IgKl92dWxrYW5fbWVtb3J5X2FsbG9jYXRvcjsKKworc3RhdGljIGdjaGFyICoKK19tZW1vcnlfcHJvcGVydGllc190b19zdHJpbmcgKFZrTWVtb3J5UHJvcGVydHlGbGFncyBwcm9wX2JpdHMpCit7CisgIEdTdHJpbmcgKnM7CisgIGdib29sZWFuIGZpcnN0ID0gVFJVRTsKKworI2RlZmluZSBTVFJfQVBQRU5EKHMsc3RyKSBcCisgIEdfU1RNVF9TVEFSVCB7IFwKKyAgICBpZiAoIWZpcnN0KSBcCisgICAgICBnX3N0cmluZ19hcHBlbmQgKHMsICJ8Iik7IFwKKyAgICBnX3N0cmluZ19hcHBlbmQgKHMsIHN0cik7IFwKKyAgICBmaXJzdCA9IEZBTFNFOyBcCisgIH0gR19TVE1UX0VORAorCisgIHMgPSBnX3N0cmluZ19uZXcgKE5VTEwpOworICBpZiAocHJvcF9iaXRzICYgVktfTUVNT1JZX1BST1BFUlRZX0RFVklDRV9MT0NBTF9CSVQpIHsKKyAgICBTVFJfQVBQRU5EIChzLCAiZGV2aWNlLWxvY2FsIik7CisgIH0KKyAgaWYgKHByb3BfYml0cyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX1ZJU0lCTEVfQklUKSB7CisgICAgU1RSX0FQUEVORCAocywgImhvc3QtdmlzaWJsZSIpOworICAgIGlmIChwcm9wX2JpdHMgJiBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9DT0hFUkVOVF9CSVQpIHsKKyAgICAgIFNUUl9BUFBFTkQgKHMsICJob3N0LWNvaGVyZW50Iik7CisgICAgfSBlbHNlIHsKKyAgICAgIFNUUl9BUFBFTkQgKHMsICJob3N0LWluY29oZXJlbnQiKTsKKyAgICB9CisgICAgaWYgKHByb3BfYml0cyAmIFZLX01FTU9SWV9QUk9QRVJUWV9IT1NUX0NBQ0hFRF9CSVQpIHsKKyAgICAgIFNUUl9BUFBFTkQgKHMsICJob3N0LWNhY2hlZCIpOworICAgIH0gZWxzZSB7CisgICAgICBTVFJfQVBQRU5EIChzLCAiaG9zdC11bmNhY2hlZCIpOworICAgIH0KKyAgfQorCisgIGlmIChwcm9wX2JpdHMgJiBWS19NRU1PUllfUFJPUEVSVFlfTEFaSUxZX0FMTE9DQVRFRF9CSVQpIHsKKyAgICBTVFJfQVBQRU5EIChzLCAibGF6aWx5LWFsbG9jYXRlZCIpOworICB9CisKKyAgcmV0dXJuIGdfc3RyaW5nX2ZyZWUgKHMsIEZBTFNFKTsKK30KKworc3RhdGljIHZvaWQKK192a19tZW1faW5pdCAoR3N0VnVsa2FuTWVtb3J5ICogbWVtLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgR3N0TWVtb3J5ICogcGFyZW50LCBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIGd1aW50MzIgbWVtb3J5X3R5cGVfaW5kZXgsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgZ3NpemUgc2l6ZSwKKyAgICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgbWVtX3Byb3BfZmxhZ3MsIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIGdzaXplIGFsaWduID0gZ3N0X21lbW9yeV9hbGlnbm1lbnQsIG9mZnNldCA9IDAsIG1heHNpemUgPSBzaXplOworICBHc3RNZW1vcnlGbGFncyBmbGFncyA9IDA7CisgIGdjaGFyICpwcm9wc19zdHI7CisKKyAgaWYgKHBhcmFtcykgeworICAgIGZsYWdzID0gcGFyYW1zLT5mbGFnczsKKyAgICBhbGlnbiB8PSBwYXJhbXMtPmFsaWduOworICAgIG9mZnNldCA9IHBhcmFtcy0+cHJlZml4OworICAgIG1heHNpemUgKz0gcGFyYW1zLT5wcmVmaXggKyBwYXJhbXMtPnBhZGRpbmc7CisgICAgaWYgKChtYXhzaXplICYgYWxpZ24pICE9IDApCisgICAgICBtYXhzaXplICs9IH4obWF4c2l6ZSAmIGFsaWduKSArIDE7CisgIH0KKworICBnc3RfbWVtb3J5X2luaXQgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSwgZmxhZ3MsIGFsbG9jYXRvciwgcGFyZW50LCBtYXhzaXplLAorICAgICAgYWxpZ24sIG9mZnNldCwgc2l6ZSk7CisKKyAgbWVtLT5kZXZpY2UgPSBnc3Rfb2JqZWN0X3JlZiAoZGV2aWNlKTsKKyAgbWVtLT5hbGxvY19pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfTUVNT1JZX0FMTE9DQVRFX0lORk87CisgIG1lbS0+YWxsb2NfaW5mby5wTmV4dCA9IE5VTEw7CisgIG1lbS0+YWxsb2NfaW5mby5hbGxvY2F0aW9uU2l6ZSA9IChWa0RldmljZVNpemUpIG1lbS0+bWVtLm1heHNpemU7CisgIG1lbS0+YWxsb2NfaW5mby5tZW1vcnlUeXBlSW5kZXggPSBtZW1vcnlfdHlwZV9pbmRleDsKKyAgbWVtLT5wcm9wZXJ0aWVzID0gbWVtX3Byb3BfZmxhZ3M7CisgIG1lbS0+bm90aWZ5ID0gbm90aWZ5OworICBtZW0tPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKyAgbWVtLT52a19vZmZzZXQgPSAwOworCisgIGdfbXV0ZXhfaW5pdCAoJm1lbS0+bG9jayk7CisKKyAgcHJvcHNfc3RyID0gX21lbW9yeV9wcm9wZXJ0aWVzX3RvX3N0cmluZyAobWVtX3Byb3BfZmxhZ3MpOworCisgIEdTVF9DQVRfREVCVUcgKEdTVF9DQVRfVlVMS0FOX01FTU9SWSwgIm5ldyBWdWxrYW4gbWVtb3J5OiVwIHNpemU6JSIKKyAgICAgIEdfR1NJWkVfRk9STUFUICIgcHJvcGVydGllczolcyIsIG1lbSwgbWF4c2l6ZSwgcHJvcHNfc3RyKTsKKworICBnX2ZyZWUgKHByb3BzX3N0cik7Cit9CisKK3N0YXRpYyBHc3RWdWxrYW5NZW1vcnkgKgorX3ZrX21lbV9uZXcgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogcGFyZW50LAorICAgIEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgZ3VpbnQzMiBtZW1vcnlfdHlwZV9pbmRleCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBnc2l6ZSBzaXplLAorICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBtZW1fcHJvcHNfZmxhZ3MsIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdFZ1bGthbk1lbW9yeSAqbWVtID0gZ19uZXcwIChHc3RWdWxrYW5NZW1vcnksIDEpOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgVmtSZXN1bHQgZXJyOworCisgIF92a19tZW1faW5pdCAobWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgZGV2aWNlLCBtZW1vcnlfdHlwZV9pbmRleCwgcGFyYW1zLAorICAgICAgc2l6ZSwgbWVtX3Byb3BzX2ZsYWdzLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisKKyAgZXJyID0KKyAgICAgIHZrQWxsb2NhdGVNZW1vcnkgKGRldmljZS0+ZGV2aWNlLCAmbWVtLT5hbGxvY19pbmZvLCBOVUxMLCAmbWVtLT5tZW1fcHRyKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a0FsbG9jTWVtb3J5IikgPCAwKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9WVUxLQU5fTUVNT1JZLCAiRmFpbGVkIHRvIGFsbG9jYXRlIGRldmljZSBtZW1vcnkgJXMiLAorICAgICAgICBlcnJvci0+bWVzc2FnZSk7CisgICAgZ3N0X21lbW9yeV91bnJlZiAoKEdzdE1lbW9yeSAqKSBtZW0pOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gbWVtOworfQorCitzdGF0aWMgZ3BvaW50ZXIKK192a19tZW1fbWFwX2Z1bGwgKEdzdFZ1bGthbk1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCit7CisgIGdwb2ludGVyIGRhdGE7CisgIFZrUmVzdWx0IGVycjsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgaWYgKChtZW0tPnByb3BlcnRpZXMgJiBWS19NRU1PUllfUFJPUEVSVFlfSE9TVF9WSVNJQkxFX0JJVCkgPT0gMCkgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfVlVMS0FOX01FTU9SWSwgIkNhbm5vdCBtYXAgaG9zdC1pbnZpc2libGUgbWVtb3J5Iik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBlcnIgPSB2a01hcE1lbW9yeSAobWVtLT5kZXZpY2UtPmRldmljZSwgbWVtLT5tZW1fcHRyLCBtZW0tPnZrX29mZnNldCwKKyAgICAgIHNpemUsIDAsICZkYXRhKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCAmZXJyb3IsICJ2a01hcE1lbW9yeSIpIDwgMCkgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfVlVMS0FOX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgZGV2aWNlIG1lbW9yeSAlcyIsCisgICAgICAgIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyB2b2lkCitfdmtfbWVtX3VubWFwX2Z1bGwgKEdzdFZ1bGthbk1lbW9yeSAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8pCit7CisgIHZrVW5tYXBNZW1vcnkgKG1lbS0+ZGV2aWNlLT5kZXZpY2UsIG1lbS0+bWVtX3B0cik7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX21lbV9jb3B5IChHc3RWdWxrYW5NZW1vcnkgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfdmtfbWVtX3NoYXJlIChHc3RWdWxrYW5NZW1vcnkgKiBtZW0sIGdzc2l6ZSBvZmZzZXQsIGdzaXplIHNpemUpCit7CisgIEdzdFZ1bGthbk1lbW9yeSAqc2hhcmVkID0gZ19uZXcwIChHc3RWdWxrYW5NZW1vcnksIDEpOworICBHc3RWdWxrYW5NZW1vcnkgKnBhcmVudCA9IG1lbTsKKyAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXMgPSB7IDAsIH07CisKKyAgaWYgKHNpemUgPT0gLTEpCisgICAgc2l6ZSA9IG1lbS0+bWVtLnNpemUgLSBvZmZzZXQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNpemUgPiAwLCBOVUxMKTsKKworICB3aGlsZSAoKHBhcmVudCA9IChHc3RWdWxrYW5NZW1vcnkgKikgKEdTVF9NRU1PUllfQ0FTVCAocGFyZW50KS0+cGFyZW50KSkpOworCisgIHBhcmFtcy5mbGFncyA9IEdTVF9NRU1PUllfRkxBR1MgKG1lbSk7CisgIHBhcmFtcy5hbGlnbiA9IEdTVF9NRU1PUllfQ0FTVCAocGFyZW50KS0+YWxpZ247CisKKyAgX3ZrX21lbV9pbml0IChzaGFyZWQsIF92dWxrYW5fbWVtb3J5X2FsbG9jYXRvciwgR1NUX01FTU9SWV9DQVNUIChtZW0pLAorICAgICAgcGFyZW50LT5kZXZpY2UsIHBhcmVudC0+YWxsb2NfaW5mby5tZW1vcnlUeXBlSW5kZXgsICZwYXJhbXMsIHNpemUsCisgICAgICBwYXJlbnQtPnByb3BlcnRpZXMsIE5VTEwsIE5VTEwpOworICBzaGFyZWQtPm1lbV9wdHIgPSBwYXJlbnQtPm1lbV9wdHI7CisgIHNoYXJlZC0+d3JhcHBlZCA9IFRSVUU7CisgIHNoYXJlZC0+dmtfb2Zmc2V0ID0gb2Zmc2V0ICsgbWVtLT52a19vZmZzZXQ7CisKKyAgcmV0dXJuIEdTVF9NRU1PUllfQ0FTVCAoc2hhcmVkKTsKK30KKworc3RhdGljIGdib29sZWFuCitfdmtfbWVtX2lzX3NwYW4gKEdzdFZ1bGthbk1lbW9yeSAqIG1lbTEsIEdzdFZ1bGthbk1lbW9yeSAqIG1lbTIsIGdzaXplICogb2Zmc2V0KQoreworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX3ZrX21lbV9hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBnc2l6ZSBzaXplLAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCit7CisgIGdfY3JpdGljYWwgKCJTdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgR3N0QWxsb2NhdG9yQ2xhc3M6OmFsbG9jKCkgZnVuY3Rpb24iKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK192a19tZW1fZnJlZSAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBtZW1vcnkpCit7CisgIEdzdFZ1bGthbk1lbW9yeSAqbWVtID0gKEdzdFZ1bGthbk1lbW9yeSAqKSBtZW1vcnk7CisKKyAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9WVUxLQU5fTUVNT1JZLCAiZnJlZWluZyBidWZmZXIgbWVtb3J5OiVwICIKKyAgICAgICJpZDolIiBHX0dVSU5UNjRfRk9STUFULCBtZW0sIChndWludDY0KSBtZW0tPm1lbV9wdHIpOworCisgIGdfbXV0ZXhfY2xlYXIgKCZtZW0tPmxvY2spOworCisgIGlmIChtZW0tPm5vdGlmeSkKKyAgICBtZW0tPm5vdGlmeSAobWVtLT51c2VyX2RhdGEpOworCisgIGlmIChtZW0tPm1lbV9wdHIgJiYgIW1lbS0+d3JhcHBlZCkKKyAgICB2a0ZyZWVNZW1vcnkgKG1lbS0+ZGV2aWNlLT5kZXZpY2UsIG1lbS0+bWVtX3B0ciwgTlVMTCk7CisKKyAgZ3N0X29iamVjdF91bnJlZiAobWVtLT5kZXZpY2UpOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9tZW1vcnlfZmluZF9tZW1vcnlfdHlwZV9pbmRleF93aXRoX3R5cGVfcHJvcGVydGllcyAoR3N0VnVsa2FuRGV2aWNlICoKKyAgICBkZXZpY2UsIGd1aW50MzIgdHlwZUJpdHMsIFZrTWVtb3J5UHJvcGVydHlGbGFncyBwcm9wZXJ0aWVzLAorICAgIGd1aW50MzIgKiB0eXBlSW5kZXgpCit7CisgIGd1aW50MzIgaTsKKworICAvKiBTZWFyY2ggbWVtdHlwZXMgdG8gZmluZCBmaXJzdCBpbmRleCB3aXRoIHRob3NlIHByb3BlcnRpZXMgKi8KKyAgZm9yIChpID0gMDsgaSA8IDMyOyBpKyspIHsKKyAgICBpZiAoKHR5cGVCaXRzICYgMSkgPT0gMSkgeworICAgICAgLyogVHlwZSBpcyBhdmFpbGFibGUsIGRvZXMgaXQgbWF0Y2ggdXNlciBwcm9wZXJ0aWVzPyAqLworICAgICAgaWYgKChkZXZpY2UtPm1lbW9yeV9wcm9wZXJ0aWVzLm1lbW9yeVR5cGVzW2ldLgorICAgICAgICAgICAgICBwcm9wZXJ0eUZsYWdzICYgcHJvcGVydGllcykgPT0gcHJvcGVydGllcykgeworICAgICAgICAqdHlwZUluZGV4ID0gaTsKKyAgICAgICAgcmV0dXJuIFRSVUU7CisgICAgICB9CisgICAgfQorICAgIHR5cGVCaXRzID4+PSAxOworICB9CisKKyAgcmV0dXJuIEZBTFNFOworfQorCisvKioKKyAqIGdzdF92dWxrYW5fbWVtb3J5X2FsbG9jOgorICogQGRldmljZTphICNHc3RWdWxrYW5EZXZpY2UKKyAqIEBtZW1vcnlfdHlwZV9pbmRleDogdGhlIFZ1bGthbiBtZW1vcnkgdHlwZSBpbmRleAorICogQHBhcmFtczogYSAjR3N0QWxsb2NhdGlvblBhcmFtcworICogQHNpemU6IHRoZSBzaXplIHRvIGFsbG9jYXRlCisgKgorICogQWxsb2NhdGVkIGEgbmV3ICNHc3RWdWxrYW5NZW1vcnkuCisgKgorICogUmV0dXJuczogYSAjR3N0TWVtb3J5IG9iamVjdCBiYWNrZWQgYnkgYSB2dWxrYW4gZGV2aWNlIG1lbW9yeQorICovCitHc3RNZW1vcnkgKgorZ3N0X3Z1bGthbl9tZW1vcnlfYWxsb2MgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgZ3VpbnQzMiBtZW1vcnlfdHlwZV9pbmRleCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBnc2l6ZSBzaXplLCBWa01lbW9yeVByb3BlcnR5RmxhZ3MgbWVtX2ZsYWdzKQoreworICBHc3RWdWxrYW5NZW1vcnkgKm1lbTsKKworICBtZW0gPSBfdmtfbWVtX25ldyAoX3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yLCBOVUxMLCBkZXZpY2UsIG1lbW9yeV90eXBlX2luZGV4LAorICAgICAgcGFyYW1zLCBzaXplLCBtZW1fZmxhZ3MsIE5VTEwsIE5VTEwpOworCisgIHJldHVybiAoR3N0TWVtb3J5ICopIG1lbTsKK30KKworR19ERUZJTkVfVFlQRSAoR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yLCBnc3RfdnVsa2FuX21lbW9yeV9hbGxvY2F0b3IsCisgICAgR1NUX1RZUEVfQUxMT0NBVE9SKTsKKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fbWVtb3J5X2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3JDbGFzcyAqIGtsYXNzKQoreworICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOworCisgIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBfdmtfbWVtX2FsbG9jOworICBhbGxvY2F0b3JfY2xhc3MtPmZyZWUgPSBfdmtfbWVtX2ZyZWU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX21lbW9yeV9hbGxvY2F0b3JfaW5pdCAoR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yICogYWxsb2NhdG9yKQoreworICBHc3RBbGxvY2F0b3IgKmFsbG9jID0gR1NUX0FMTE9DQVRPUl9DQVNUIChhbGxvY2F0b3IpOworCisgIGFsbG9jLT5tZW1fdHlwZSA9IEdTVF9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUl9OQU1FOworICBhbGxvYy0+bWVtX21hcF9mdWxsID0gKEdzdE1lbW9yeU1hcEZ1bGxGdW5jdGlvbikgX3ZrX21lbV9tYXBfZnVsbDsKKyAgYWxsb2MtPm1lbV91bm1hcF9mdWxsID0gKEdzdE1lbW9yeVVubWFwRnVsbEZ1bmN0aW9uKSBfdmtfbWVtX3VubWFwX2Z1bGw7CisgIGFsbG9jLT5tZW1fY29weSA9IChHc3RNZW1vcnlDb3B5RnVuY3Rpb24pIF92a19tZW1fY29weTsKKyAgYWxsb2MtPm1lbV9zaGFyZSA9IChHc3RNZW1vcnlTaGFyZUZ1bmN0aW9uKSBfdmtfbWVtX3NoYXJlOworICBhbGxvYy0+bWVtX2lzX3NwYW4gPSAoR3N0TWVtb3J5SXNTcGFuRnVuY3Rpb24pIF92a19tZW1faXNfc3BhbjsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX21lbW9yeV9pbml0X29uY2U6CisgKgorICogSW5pdGlhbGl6ZXMgdGhlIFZ1bGthbiBtZW1vcnkgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorICogbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgI0dzdFZ1bGthbk1lbW9yeSBvcGVyYXRpb24uCisgKi8KK3ZvaWQKK2dzdF92dWxrYW5fbWVtb3J5X2luaXRfb25jZSAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9WVUxLQU5fTUVNT1JZLCAidnVsa2FubWVtb3J5IiwgMCwKKyAgICAgICAgIlZ1bGthbiBNZW1vcnkiKTsKKworICAgIF92dWxrYW5fbWVtb3J5X2FsbG9jYXRvciA9CisgICAgICAgIGdfb2JqZWN0X25ldyAoZ3N0X3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlICgpLCBOVUxMKTsKKworICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUl9OQU1FLAorICAgICAgICBnc3Rfb2JqZWN0X3JlZiAoX3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yKSk7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CisgIH0KK30KKworLyoqCisgKiBnc3RfaXNfdnVsa2FuX21lbW9yeToKKyAqIEBtZW06YSAjR3N0TWVtb3J5CisgKiAKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIG1lbW9yeSBhdCBAbWVtIGlzIGEgI0dzdFZ1bGthbk1lbW9yeQorICovCitnYm9vbGVhbgorZ3N0X2lzX3Z1bGthbl9tZW1vcnkgKEdzdE1lbW9yeSAqIG1lbSkKK3sKKyAgcmV0dXJuIG1lbSAhPSBOVUxMICYmIG1lbS0+YWxsb2NhdG9yICE9IE5VTEwgJiYKKyAgICAgIGdfdHlwZV9pc19hIChHX09CSkVDVF9UWVBFIChtZW0tPmFsbG9jYXRvciksCisgICAgICBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUik7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrbWVtb3J5LmggYi9leHQvdnVsa2FuL3ZrbWVtb3J5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI1NTJhNgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmttZW1vcnkuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9HU1RfVlVMS0FOX0JBU0VfQlVGRkVSX0hfCisjZGVmaW5lIF9HU1RfVlVMS0FOX0JBU0VfQlVGRkVSX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dzdGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KKworI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X3Z1bGthbl9tZW1vcnlfYWxsb2NhdG9yX2dldF90eXBlKCkpCitHVHlwZSBnc3RfdnVsa2FuX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUodm9pZCk7CisKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUiwgR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfVlVMS0FOX01FTU9SWV9BTExPQ0FUT1IsIEdzdFZ1bGthbk1lbW9yeUFsbG9jYXRvcikpCisjZGVmaW5lIEdTVF9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX1ZVTEtBTl9NRU1PUllfQUxMT0NBVE9SLCBHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdFZ1bGthbk1lbW9yeUFsbG9jYXRvciAqKShvYmopKQorCisjZGVmaW5lIEdTVF9WVUxLQU5fTUVNT1JZX0FMTE9DQVRPUl9OQU1FICJWdWxrYW4iCisKK3N0cnVjdCBfR3N0VnVsa2FuTWVtb3J5Cit7CisgIEdzdE1lbW9yeSAgICAgICAgICAgICAgICAgbWVtOworCisgIEdzdFZ1bGthbkRldmljZSAgICAgICAgICAqZGV2aWNlOworCisgIFZrRGV2aWNlTWVtb3J5ICAgICAgICAgICAgbWVtX3B0cjsKKworICAvKiA8cHJvdGVjdGVkPiAqLworICBHTXV0ZXggICAgICAgICAgICAgICAgICAgIGxvY2s7CisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgbWFwX2NvdW50OworCisgIC8qIDxwcml2YXRlPiAqLworICBHRGVzdHJveU5vdGlmeSAgICAgICAgICAgIG5vdGlmeTsKKyAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICB1c2VyX2RhdGE7CisKKyAgVmtNZW1vcnlBbGxvY2F0ZUluZm8gICAgICBhbGxvY19pbmZvOworICBWa01lbW9yeVByb3BlcnR5RmxhZ3MgICAgIHByb3BlcnRpZXM7CisKKyAgLyogd2UgbmVlZCBvdXIgb3duIG9mZnNldCBiZWNhdXNlIEdzdE1lbW9yeSdzIGlzIHVzZWQgdG8gb2Zmc2V0IGludG8gdGhlCisgICAqIG1hcHBlZCBwb2ludGVyIHdoaWNoIHdoZW4gc3ViYWxsb2NhdGluZywgd2UgbmVlZCB0byBhdm9pZC4gIFRoaXMgaW4KKyAgICogcmVsYXRpb24gdG8gdGhlIHJvb3QgbWVtb3J5ICovCisgIGd1aW50NjQgICAgICAgICAgICAgICAgICAgdmtfb2Zmc2V0OworICBnYm9vbGVhbiAgICAgICAgICAgICAgICAgIHdyYXBwZWQ7Cit9OworCisvKioKKyAqIEdzdFZ1bGthbk1lbW9yeUFsbG9jYXRvcgorICoKKyAqIE9wYXF1ZSAjR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yIHN0cnVjdAorICovCitzdHJ1Y3QgX0dzdFZ1bGthbk1lbW9yeUFsbG9jYXRvcgoreworICBHc3RBbGxvY2F0b3IgcGFyZW50OworfTsKKworLyoqCisgKiBHc3RWdWxrYW5NZW1vcnlBbGxvY2F0b3JDbGFzczoKKyAqCisgKiBUaGUgI0dzdFZ1bGthbk1lbW9yeUFsbG9jYXRvckNsYXNzIG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuTWVtb3J5QWxsb2NhdG9yQ2xhc3MKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKwordm9pZCAgICAgICAgICAgIGdzdF92dWxrYW5fbWVtb3J5X2luaXRfb25jZSAgICAgKHZvaWQpOworZ2Jvb2xlYW4gICAgICAgIGdzdF9pc192dWxrYW5fbWVtb3J5ICAgICAgICAgICAgKEdzdE1lbW9yeSAqIG1lbSk7CisKK0dzdE1lbW9yeSAqICAgICBnc3RfdnVsa2FuX21lbW9yeV9hbGxvYyAgICAgICAgIChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiBtZW1vcnlfdHlwZV9pbmRleCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmtNZW1vcnlQcm9wZXJ0eUZsYWdzIG1lbV9wcm9wX2ZsYWdzKTsKKworZ2Jvb2xlYW4gICAgICAgIGdzdF92dWxrYW5fbWVtb3J5X2ZpbmRfbWVtb3J5X3R5cGVfaW5kZXhfd2l0aF90eXBlX3Byb3BlcnRpZXMgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiB0eXBlQml0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZrTWVtb3J5UHJvcGVydHlGbGFncyBwcm9wZXJ0aWVzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiAqIHR5cGVJbmRleCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfR1NUX1ZVTEtBTl9CQVNFX0JVRkZFUl9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3F1ZXVlLmMgYi9leHQvdnVsa2FuL3ZrcXVldWUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTg0ZmJmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a3F1ZXVlLmMKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAidmtxdWV1ZS5oIgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnVsa2FuX3F1ZXVlX2RlYnVnCitHU1RfREVCVUdfQ0FURUdPUlkgKEdTVF9DQVRfREVGQVVMVCk7CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0NPTlRFWFQpOworCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0VnVsa2FuUXVldWUsIGdzdF92dWxrYW5fcXVldWUsIEdTVF9UWVBFX09CSkVDVCwKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAidnVsa2FucXVldWUiLCAwLAorICAgICAgICAiVnVsa2FuIFF1ZXVlIik7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoR1NUX0NBVF9DT05URVhULCAiR1NUX0NPTlRFWFQiKSk7CisKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fcXVldWVfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCk7CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3F1ZXVlX2luaXQgKEdzdFZ1bGthblF1ZXVlICogZGV2aWNlKQoreworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9xdWV1ZV9jbGFzc19pbml0IChHc3RWdWxrYW5RdWV1ZUNsYXNzICogZGV2aWNlX2NsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGRldmljZV9jbGFzczsKKworICBnb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0gZ3N0X3Z1bGthbl9xdWV1ZV9kaXNwb3NlOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9xdWV1ZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RWdWxrYW5RdWV1ZSAqcXVldWUgPSBHU1RfVlVMS0FOX1FVRVVFIChvYmplY3QpOworCisgIGlmIChxdWV1ZS0+ZGV2aWNlKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKHF1ZXVlLT5kZXZpY2UpOworICBxdWV1ZS0+ZGV2aWNlID0gTlVMTDsKK30KKworR3N0VnVsa2FuRGV2aWNlICoKK2dzdF92dWxrYW5fcXVldWVfZ2V0X2RldmljZSAoR3N0VnVsa2FuUXVldWUgKiBxdWV1ZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fUVVFVUUgKHF1ZXVlKSwgTlVMTCk7CisKKyAgcmV0dXJuIHF1ZXVlLT5kZXZpY2UgPyBnc3Rfb2JqZWN0X3JlZiAocXVldWUtPmRldmljZSkgOiBOVUxMOworfQorCisvKioKKyAqIGdzdF9jb250ZXh0X3NldF92dWxrYW5fcXVldWU6CisgKiBAY29udGV4dDogYSAjR3N0Q29udGV4dAorICogQHF1ZXVlOiBhICNHc3RWdWxrYW5RdWV1ZQorICoKKyAqIFNldHMgQHF1ZXVlIG9uIEBjb250ZXh0CisgKgorICogU2luY2U6IDEuMTAKKyAqLwordm9pZAorZ3N0X2NvbnRleHRfc2V0X3Z1bGthbl9xdWV1ZSAoR3N0Q29udGV4dCAqIGNvbnRleHQsIEdzdFZ1bGthblF1ZXVlICogcXVldWUpCit7CisgIEdzdFN0cnVjdHVyZSAqczsKKworICBnX3JldHVybl9pZl9mYWlsIChjb250ZXh0ICE9IE5VTEwpOworICBnX3JldHVybl9pZl9mYWlsIChnc3RfY29udGV4dF9pc193cml0YWJsZSAoY29udGV4dCkpOworCisgIGlmIChxdWV1ZSkKKyAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9DT05URVhULAorICAgICAgICAic2V0dGluZyBHc3RWdWxrYW5RdWV1ZSglIiBHU1RfUFRSX0ZPUk1BVCAiKSBvbiBjb250ZXh0KCUiCisgICAgICAgIEdTVF9QVFJfRk9STUFUICIpIiwgcXVldWUsIGNvbnRleHQpOworCisgIHMgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICBnc3Rfc3RydWN0dXJlX3NldCAocywgR1NUX1ZVTEtBTl9RVUVVRV9DT05URVhUX1RZUEVfU1RSLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX1FVRVVFLCBxdWV1ZSwgTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9xdWV1ZToKKyAqIEBjb250ZXh0OiBhICNHc3RDb250ZXh0CisgKiBAcXVldWU6IHJlc3VsdGluZyAjR3N0VnVsa2FuUXVldWUKKyAqCisgKiBSZXR1cm5zOiBXaGV0aGVyIEBxdWV1ZSB3YXMgaW4gQGNvbnRleHQKKyAqCisgKiBTaW5jZTogMS4xMAorICovCitnYm9vbGVhbgorZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9xdWV1ZSAoR3N0Q29udGV4dCAqIGNvbnRleHQsIEdzdFZ1bGthblF1ZXVlICoqIHF1ZXVlKQoreworICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7CisgIGdib29sZWFuIHJldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAocXVldWUgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGV4dCAhPSBOVUxMLCBGQUxTRSk7CisKKyAgcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICByZXQgPSBnc3Rfc3RydWN0dXJlX2dldCAocywgR1NUX1ZVTEtBTl9RVUVVRV9DT05URVhUX1RZUEVfU1RSLAorICAgICAgR1NUX1RZUEVfVlVMS0FOX1FVRVVFLCBxdWV1ZSwgTlVMTCk7CisKKyAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfQ09OVEVYVCwgImdvdCBHc3RWdWxrYW5RdWV1ZSglIiBHU1RfUFRSX0ZPUk1BVAorICAgICAgIikgZnJvbSBjb250ZXh0KCUiIEdTVF9QVFJfRk9STUFUICIpIiwgKnF1ZXVlLCBjb250ZXh0KTsKKworICByZXR1cm4gcmV0OworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9xdWV1ZV9oYW5kbGVfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFF1ZXJ5ICogcXVlcnksCisgICAgR3N0VnVsa2FuUXVldWUgKiogcXVldWUpCit7CisgIGdib29sZWFuIHJlcyA9IEZBTFNFOworICBjb25zdCBnY2hhciAqY29udGV4dF90eXBlOworICBHc3RDb250ZXh0ICpjb250ZXh0LCAqb2xkX2NvbnRleHQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGVsZW1lbnQgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAocXVlcnkgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSA9PSBHU1RfUVVFUllfQ09OVEVYVCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAocXVldWUgIT0gTlVMTCwgRkFMU0UpOworCisgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0X3R5cGUgKHF1ZXJ5LCAmY29udGV4dF90eXBlKTsKKworICBpZiAoZ19zdHJjbXAwIChjb250ZXh0X3R5cGUsIEdTVF9WVUxLQU5fUVVFVUVfQ09OVEVYVF9UWVBFX1NUUikgPT0gMCkgeworICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJm9sZF9jb250ZXh0KTsKKworICAgIGlmIChvbGRfY29udGV4dCkKKyAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9jb3B5IChvbGRfY29udGV4dCk7CisgICAgZWxzZQorICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X25ldyAoR1NUX1ZVTEtBTl9RVUVVRV9DT05URVhUX1RZUEVfU1RSLCBUUlVFKTsKKworICAgIGdzdF9jb250ZXh0X3NldF92dWxrYW5fcXVldWUgKGNvbnRleHQsICpxdWV1ZSk7CisgICAgZ3N0X3F1ZXJ5X3NldF9jb250ZXh0IChxdWVyeSwgY29udGV4dCk7CisgICAgZ3N0X2NvbnRleHRfdW5yZWYgKGNvbnRleHQpOworCisgICAgcmVzID0gKnF1ZXVlICE9IE5VTEw7CisgIH0KKworICByZXR1cm4gcmVzOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9xdWV1ZV9ydW5fY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgR3N0VnVsa2FuUXVldWUgKiogcXVldWUpCit7CisgIEdzdFF1ZXJ5ICpxdWVyeTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0VMRU1FTlQgKGVsZW1lbnQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWV1ZSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgaWYgKCpxdWV1ZSAmJiBHU1RfSVNfVlVMS0FOX1FVRVVFICgqcXVldWUpKQorICAgIHJldHVybiBUUlVFOworCisgIGlmICgocXVlcnkgPQorICAgICAgICAgIGdzdF92dWxrYW5fbG9jYWxfY29udGV4dF9xdWVyeSAoZWxlbWVudCwKKyAgICAgICAgICAgICAgR1NUX1ZVTEtBTl9RVUVVRV9DT05URVhUX1RZUEVfU1RSLCBGQUxTRSkpKSB7CisgICAgR3N0Q29udGV4dCAqY29udGV4dDsKKworICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmNvbnRleHQpOworICAgIGlmIChjb250ZXh0KQorICAgICAgZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9xdWV1ZSAoY29udGV4dCwgcXVldWUpOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgImZvdW5kIHF1ZXVlICVwIiwgKnF1ZXVlKTsKKworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICBpZiAoKnF1ZXVlKQorICAgIHJldHVybiBUUlVFOworCisgIHJldHVybiBGQUxTRTsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtxdWV1ZS5oIGIvZXh0L3Z1bGthbi92a3F1ZXVlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRiMTMxMwotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtxdWV1ZS5oCkBAIC0wLDAgKzEsNjQgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfUVVFVUVfSF8KKyNkZWZpbmUgX1ZLX1FVRVVFX0hfCisKKyNpbmNsdWRlICJ2ay5oIgorCisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9RVUVVRSAgICAgICAgIChnc3RfdnVsa2FuX3F1ZXVlX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fUVVFVUUobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9UWVBFX1ZVTEtBTl9RVUVVRSwgR3N0VnVsa2FuUXVldWUpKQorI2RlZmluZSBHU1RfVlVMS0FOX1FVRVVFX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGspLCBHU1RfVFlQRV9WVUxLQU5fUVVFVUUsIEdzdFZ1bGthblF1ZXVlQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1FVRVVFKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfVFlQRV9WVUxLQU5fUVVFVUUpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1FVRVVFX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfVFlQRV9WVUxLQU5fUVVFVUUpKQorI2RlZmluZSBHU1RfVlVMS0FOX1FVRVVFX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9UWVBFX1ZVTEtBTl9RVUVVRSwgR3N0VnVsa2FuUXVldWVDbGFzcykpCitHVHlwZSBnc3RfdnVsa2FuX3F1ZXVlX2dldF90eXBlICAgICAgICh2b2lkKTsKKworI2RlZmluZSBHU1RfVlVMS0FOX1FVRVVFX0NPTlRFWFRfVFlQRV9TVFIgImdzdC52dWxrYW4ucXVldWUiCisKK3N0cnVjdCBfR3N0VnVsa2FuUXVldWUKK3sKKyAgR3N0T2JqZWN0IHBhcmVudDsKKworICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZTsKKworICBWa1F1ZXVlIHF1ZXVlOyAvKiBoaWRlcyBhIHBvaW50ZXIgKi8KKyAgZ3VpbnQzMiBmYW1pbHk7CisgIGd1aW50MzIgaW5kZXg7Cit9OworCitzdHJ1Y3QgX0dzdFZ1bGthblF1ZXVlQ2xhc3MKK3sKKyAgR3N0T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR3N0VnVsa2FuRGV2aWNlICogICBnc3RfdnVsa2FuX3F1ZXVlX2dldF9kZXZpY2UgKEdzdFZ1bGthblF1ZXVlICogcXVldWUpOworCit2b2lkICAgICAgICAgICAgICAgIGdzdF9jb250ZXh0X3NldF92dWxrYW5fcXVldWUgICAgICAgICAgICAgICAgKEdzdENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5RdWV1ZSAqIHF1ZXVlKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X2NvbnRleHRfZ2V0X3Z1bGthbl9xdWV1ZSAgICAgICAgICAgICAgICAoR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthblF1ZXVlICoqIHF1ZXVlKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X3Z1bGthbl9xdWV1ZV9oYW5kbGVfY29udGV4dF9xdWVyeSAgICAgICAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFF1ZXJ5ICogcXVlcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthblF1ZXVlICoqIHF1ZXVlKTsKK2dib29sZWFuICAgICAgICAgICAgZ3N0X3Z1bGthbl9xdWV1ZV9ydW5fY29udGV4dF9xdWVyeSAgICAgICAgICAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZ1bGthblF1ZXVlICoqIHF1ZXVlKTsKKworI2VuZGlmIC8qIF9WS19RVUVVRV9IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3NpbmsuYyBiL2V4dC92dWxrYW4vdmtzaW5rLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2I4NTMwZAotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtzaW5rLmMKQEAgLTAsMCArMSw1MDIgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtdnVsa2Fuc2luaworICoKKyAqIHZ1bGthbnNpbmsgcmVuZGVycyB2aWRlbyBmcmFtZXMgdG8gYSBkcmF3YWJsZSBvbiBhIGxvY2FsIG9yIHJlbW90ZQorICogZGlzcGxheSB1c2luZyBWdWxrYW4uCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisvLyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW9vdmVybGF5Lmg+CisKKyNpbmNsdWRlICJ2a3NpbmsuaCIKKyNpbmNsdWRlICJ2a2RldmljZS5oIgorCitHU1RfREVCVUdfQ0FURUdPUlkgKGdzdF9kZWJ1Z192dWxrYW5fc2luayk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZGVidWdfdnVsa2FuX3NpbmsKKworI2RlZmluZSBERUZBVUxUX0ZPUkNFX0FTUEVDVF9SQVRJTyBUUlVFCisjZGVmaW5lIERFRkFVTFRfUElYRUxfQVNQRUNUX1JBVElPX04gMAorI2RlZmluZSBERUZBVUxUX1BJWEVMX0FTUEVDVF9SQVRJT19EIDEKKworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl9zaW5rX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fc2lua19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwYXJhbV9zcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fc2lua19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwYXJhbV9zcGVjKTsKKworc3RhdGljIGdib29sZWFuIGdzdF92dWxrYW5fc2lua19xdWVyeSAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0UXVlcnkgKiBxdWVyeSk7CitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX3Npbmtfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdENvbnRleHQgKiBjb250ZXh0KTsKKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCitnc3RfdnVsa2FuX3NpbmtfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CisKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fc2lua19nZXRfdGltZXMgKEdzdEJhc2VTaW5rICogYnNpbmssIEdzdEJ1ZmZlciAqIGJ1ZiwKKyAgICBHc3RDbG9ja1RpbWUgKiBzdGFydCwgR3N0Q2xvY2tUaW1lICogZW5kKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdnVsa2FuX3Npbmtfc2V0X2NhcHMgKEdzdEJhc2VTaW5rICogYnNpbmssIEdzdENhcHMgKiBjYXBzKTsKK3N0YXRpYyBHc3RDYXBzICpnc3RfdnVsa2FuX3NpbmtfZ2V0X2NhcHMgKEdzdEJhc2VTaW5rICogYnNpbmssCisgICAgR3N0Q2FwcyAqIGZpbHRlcik7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdnVsa2FuX3NpbmtfcHJlcGFyZSAoR3N0QmFzZVNpbmsgKiBic2luaywKKyAgICBHc3RCdWZmZXIgKiBidWYpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3Z1bGthbl9zaW5rX3Nob3dfZnJhbWUgKEdzdFZpZGVvU2luayAqIGJzaW5rLAorICAgIEdzdEJ1ZmZlciAqIGJ1Zik7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfdnVsa2FuX3NpbmtfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKKyAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1ZVTEtBTl9CVUZGRVIsCisgICAgICAgICAgICBHU1RfVlVMS0FOX1NXQVBQRVJfVklERU9fRk9STUFUUykpKTsKKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfRk9SQ0VfQVNQRUNUX1JBVElPLAorICBQUk9QX1BJWEVMX0FTUEVDVF9SQVRJTywKK307CisKK2VudW0KK3sKKyAgU0lHTkFMXzAsCisgIExBU1RfU0lHTkFMCit9OworCisvKiBzdGF0aWMgZ3VpbnQgZ3N0X3Z1bGthbl9zaW5rX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07ICovCisKKyNkZWZpbmUgZ3N0X3Z1bGthbl9zaW5rX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RWdWxrYW5TaW5rLCBnc3RfdnVsa2FuX3NpbmssCisgICAgR1NUX1RZUEVfVklERU9fU0lOSywgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9kZWJ1Z192dWxrYW5fc2luaywKKyAgICAgICAgInZ1bGthbnNpbmsiLCAwLCAiVnVsa2FuIFZpZGVvIFNpbmsiKSk7CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3NpbmtfY2xhc3NfaW5pdCAoR3N0VnVsa2FuU2lua0NsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKKyAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOworICBHc3RCYXNlU2lua0NsYXNzICpnc3RiYXNlc2lua19jbGFzczsKKyAgR3N0VmlkZW9TaW5rQ2xhc3MgKmdzdHZpZGVvc2lua19jbGFzczsKKyAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzOworCisgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKKyAgZ3N0YmFzZXNpbmtfY2xhc3MgPSAoR3N0QmFzZVNpbmtDbGFzcyAqKSBrbGFzczsKKyAgZ3N0dmlkZW9zaW5rX2NsYXNzID0gKEdzdFZpZGVvU2lua0NsYXNzICopIGtsYXNzOworICBlbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfdnVsa2FuX3Npbmtfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfdnVsa2FuX3NpbmtfZ2V0X3Byb3BlcnR5OworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRk9SQ0VfQVNQRUNUX1JBVElPLAorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJmb3JjZS1hc3BlY3QtcmF0aW8iLCAiRm9yY2UgYXNwZWN0IHJhdGlvIiwKKyAgICAgICAgICAiV2hlbiBlbmFibGVkLCBzY2FsaW5nIHdpbGwgcmVzcGVjdCBvcmlnaW5hbCBhc3BlY3QgcmF0aW8iLAorICAgICAgICAgIERFRkFVTFRfRk9SQ0VfQVNQRUNUX1JBVElPLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfUElYRUxfQVNQRUNUX1JBVElPLAorICAgICAgZ3N0X3BhcmFtX3NwZWNfZnJhY3Rpb24gKCJwaXhlbC1hc3BlY3QtcmF0aW8iLCAiUGl4ZWwgQXNwZWN0IFJhdGlvIiwKKyAgICAgICAgICAiVGhlIHBpeGVsIGFzcGVjdCByYXRpbyBvZiB0aGUgZGV2aWNlIiwgMCwgMSwgR19NQVhJTlQsIDEsIDEsIDEsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChlbGVtZW50X2NsYXNzLCAiVnVsa2FuIHZpZGVvIHNpbmsiLAorICAgICAgIlNpbmsvVmlkZW8iLCAiQSB2aWRlb3NpbmsgYmFzZWQgb24gT3BlbkdMIiwKKyAgICAgICJNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+Iik7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF92dWxrYW5fc2lua190ZW1wbGF0ZSkpOworCisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3Z1bGthbl9zaW5rX2ZpbmFsaXplOworCisgIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF92dWxrYW5fc2lua19jaGFuZ2Vfc3RhdGU7CisgIGdzdGVsZW1lbnRfY2xhc3MtPnNldF9jb250ZXh0ID0gZ3N0X3Z1bGthbl9zaW5rX3NldF9jb250ZXh0OworICBnc3RiYXNlc2lua19jbGFzcy0+cXVlcnkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z1bGthbl9zaW5rX3F1ZXJ5KTsKKyAgZ3N0YmFzZXNpbmtfY2xhc3MtPnNldF9jYXBzID0gZ3N0X3Z1bGthbl9zaW5rX3NldF9jYXBzOworICBnc3RiYXNlc2lua19jbGFzcy0+Z2V0X2NhcHMgPSBnc3RfdnVsa2FuX3NpbmtfZ2V0X2NhcHM7CisgIGdzdGJhc2VzaW5rX2NsYXNzLT5nZXRfdGltZXMgPSBnc3RfdnVsa2FuX3NpbmtfZ2V0X3RpbWVzOworICBnc3RiYXNlc2lua19jbGFzcy0+cHJlcGFyZSA9IGdzdF92dWxrYW5fc2lua19wcmVwYXJlOworCisgIGdzdHZpZGVvc2lua19jbGFzcy0+c2hvd19mcmFtZSA9CisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z1bGthbl9zaW5rX3Nob3dfZnJhbWUpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9zaW5rX2luaXQgKEdzdFZ1bGthblNpbmsgKiB2a19zaW5rKQoreworICB2a19zaW5rLT5mb3JjZV9hc3BlY3RfcmF0aW8gPSBERUZBVUxUX0ZPUkNFX0FTUEVDVF9SQVRJTzsKKyAgdmtfc2luay0+cGFyX24gPSBERUZBVUxUX1BJWEVMX0FTUEVDVF9SQVRJT19OOworICB2a19zaW5rLT5wYXJfZCA9IERFRkFVTFRfUElYRUxfQVNQRUNUX1JBVElPX0Q7CisKKy8vICBnX211dGV4X2luaXQgKCZ2a19zaW5rLT5kcmF3aW5nX2xvY2spOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9zaW5rX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworLy8gIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKG9iamVjdCk7CisvLyAgZ19tdXRleF9jbGVhciAoJnZrX3NpbmstPmRyYXdpbmdfbG9jayk7CisKKy8vICBHU1RfREVCVUcgKCJmaW5hbGl6ZWQiKTsKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9zaW5rX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RWdWxrYW5TaW5rICp2a19zaW5rID0gR1NUX1ZVTEtBTl9TSU5LIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9GT1JDRV9BU1BFQ1RfUkFUSU86CisgICAgICB2a19zaW5rLT5mb3JjZV9hc3BlY3RfcmF0aW8gPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUElYRUxfQVNQRUNUX1JBVElPOgorICAgICAgdmtfc2luay0+cGFyX24gPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX251bWVyYXRvciAodmFsdWUpOworICAgICAgdmtfc2luay0+cGFyX2QgPSBnc3RfdmFsdWVfZ2V0X2ZyYWN0aW9uX2Rlbm9taW5hdG9yICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3NpbmtfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0ZPUkNFX0FTUEVDVF9SQVRJTzoKKyAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCB2a19zaW5rLT5mb3JjZV9hc3BlY3RfcmF0aW8pOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BJWEVMX0FTUEVDVF9SQVRJTzoKKyAgICAgIGdzdF92YWx1ZV9zZXRfZnJhY3Rpb24gKHZhbHVlLCB2a19zaW5rLT5wYXJfbiwgdmtfc2luay0+cGFyX2QpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92dWxrYW5fc2lua19xdWVyeSAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0UXVlcnkgKiBxdWVyeSkKK3sKKyAgR3N0VnVsa2FuU2luayAqdmtfc2luayA9IEdTVF9WVUxLQU5fU0lOSyAoYnNpbmspOworCisgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgeworICAgIGNhc2UgR1NUX1FVRVJZX0NPTlRFWFQ6eworICAgICAgaWYgKGdzdF92dWxrYW5faGFuZGxlX2NvbnRleHRfcXVlcnkgKEdTVF9FTEVNRU5UICh2a19zaW5rKSwgcXVlcnksCisgICAgICAgICAgICAgICZ2a19zaW5rLT5kaXNwbGF5LCAmdmtfc2luay0+aW5zdGFuY2UsICZ2a19zaW5rLT5kZXZpY2UpKQorICAgICAgICByZXR1cm4gVFJVRTsKKworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBHU1RfQkFTRV9TSU5LX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5xdWVyeSAoYnNpbmssIHF1ZXJ5KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fc2lua19zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdENvbnRleHQgKiBjb250ZXh0KQoreworICBHc3RWdWxrYW5TaW5rICp2a19zaW5rID0gR1NUX1ZVTEtBTl9TSU5LIChlbGVtZW50KTsKKworICBnc3RfdnVsa2FuX2hhbmRsZV9zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCwgJnZrX3NpbmstPmRpc3BsYXksCisgICAgICAmdmtfc2luay0+aW5zdGFuY2UpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7Cit9CisKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgorZ3N0X3Z1bGthbl9zaW5rX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCit7CisgIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKGVsZW1lbnQpOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIEdTVF9ERUJVRyAoImNoYW5naW5nIHN0YXRlOiAlcyA9PiAlcyIsCisgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAoR1NUX1NUQVRFX1RSQU5TSVRJT05fQ1VSUkVOVCAodHJhbnNpdGlvbikpLAorICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKEdTVF9TVEFURV9UUkFOU0lUSU9OX05FWFQgKHRyYW5zaXRpb24pKSk7CisKKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6CisgICAgICBpZiAoIWdzdF92dWxrYW5fZW5zdXJlX2VsZW1lbnRfZGF0YSAoZWxlbWVudCwgJnZrX3NpbmstPmRpc3BsYXksCisgICAgICAgICAgICAgICZ2a19zaW5rLT5pbnN0YW5jZSkpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHZrX3NpbmssIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgICAoIkZhaWxlZCB0byByZXRyaWV2ZSB2dWxrYW4gaW5zdGFuY2UvZGlzcGxheSIpLCAoTlVMTCkpOworICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgfQorCisgICAgICBpZiAoISh2a19zaW5rLT5kZXZpY2UgPQorICAgICAgICAgICAgICBnc3RfdnVsa2FuX2luc3RhbmNlX2NyZWF0ZV9kZXZpY2UgKHZrX3NpbmstPmluc3RhbmNlLCAmZXJyb3IpKSkgeworICAgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAodmtfc2luaywgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAgICgiRmFpbGVkIHRvIGNyZWF0ZSB2dWxrYW4gZGV2aWNlIiksICgiJXMiLCBlcnJvci0+bWVzc2FnZSkpOworICAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgfQorCisgICAgICBpZiAoISh2a19zaW5rLT53aW5kb3cgPQorICAgICAgICAgICAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfY3JlYXRlX3dpbmRvdyAodmtfc2luay0+ZGlzcGxheSkpKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2a19zaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIGEgd2luZG93IiksIChOVUxMKSk7CisgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICB9CisKKyAgICAgIGlmICghZ3N0X3Z1bGthbl93aW5kb3dfb3BlbiAodmtfc2luay0+d2luZG93LCAmZXJyb3IpKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2a19zaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAgICAgKCJGYWlsZWQgdG8gb3BlbiB3aW5kb3ciKSwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgICAgIHJldHVybiBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CisgICAgICB9CisKKyAgICAgIGlmICghKHZrX3NpbmstPnN3YXBwZXIgPQorICAgICAgICAgICAgICBnc3RfdnVsa2FuX3N3YXBwZXJfbmV3ICh2a19zaW5rLT5kZXZpY2UsIHZrX3NpbmstPndpbmRvdykpKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2a19zaW5rLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIGEgc3dhcHBlciIpLCAoTlVMTCkpOworICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOworICBpZiAocmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkKKyAgICByZXR1cm4gcmV0OworCisgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRDoKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKKyAgICAgIGlmICh2a19zaW5rLT5zd2FwcGVyKQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2a19zaW5rLT5zd2FwcGVyKTsKKyAgICAgIHZrX3NpbmstPnN3YXBwZXIgPSBOVUxMOworICAgICAgaWYgKHZrX3NpbmstPmRpc3BsYXkpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZrX3NpbmstPmRpc3BsYXkpOworICAgICAgdmtfc2luay0+ZGlzcGxheSA9IE5VTEw7CisgICAgICBpZiAodmtfc2luay0+d2luZG93KSB7CisgICAgICAgIGdzdF92dWxrYW5fd2luZG93X2Nsb3NlICh2a19zaW5rLT53aW5kb3cpOworICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2a19zaW5rLT53aW5kb3cpOworICAgICAgfQorICAgICAgdmtfc2luay0+d2luZG93ID0gTlVMTDsKKyAgICAgIGlmICh2a19zaW5rLT5kZXZpY2UpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZrX3NpbmstPmRldmljZSk7CisgICAgICB2a19zaW5rLT5kZXZpY2UgPSBOVUxMOworICAgICAgaWYgKHZrX3NpbmstPmluc3RhbmNlKQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2a19zaW5rLT5pbnN0YW5jZSk7CisgICAgICB2a19zaW5rLT5pbnN0YW5jZSA9IE5VTEw7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9zaW5rX2dldF90aW1lcyAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0QnVmZmVyICogYnVmLAorICAgIEdzdENsb2NrVGltZSAqIHN0YXJ0LCBHc3RDbG9ja1RpbWUgKiBlbmQpCit7CisgIEdzdFZ1bGthblNpbmsgKnZrX3NpbmsgPSBHU1RfVlVMS0FOX1NJTksgKGJzaW5rKTsKKworICBpZiAoR1NUX0JVRkZFUl9USU1FU1RBTVBfSVNfVkFMSUQgKGJ1ZikpIHsKKyAgICAqc3RhcnQgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmKTsKKyAgICBpZiAoR1NUX0JVRkZFUl9EVVJBVElPTl9JU19WQUxJRCAoYnVmKSkKKyAgICAgICplbmQgPSAqc3RhcnQgKyBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWYpOworICAgIGVsc2UgeworICAgICAgaWYgKEdTVF9WSURFT19JTkZPX0ZQU19OICgmdmtfc2luay0+dl9pbmZvKSA+IDApIHsKKyAgICAgICAgKmVuZCA9ICpzdGFydCArCisgICAgICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChHU1RfU0VDT05ELAorICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fRlBTX0QgKCZ2a19zaW5rLT52X2luZm8pLAorICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fRlBTX04gKCZ2a19zaW5rLT52X2luZm8pKTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworc3RhdGljIEdzdENhcHMgKgorZ3N0X3Z1bGthbl9zaW5rX2dldF9jYXBzIChHc3RCYXNlU2luayAqIGJzaW5rLCBHc3RDYXBzICogZmlsdGVyKQoreworICBHc3RWdWxrYW5TaW5rICp2a19zaW5rID0gR1NUX1ZVTEtBTl9TSU5LIChic2luayk7CisgIEdzdENhcHMgKnRtcCA9IE5VTEw7CisgIEdzdENhcHMgKnJlc3VsdCA9IE5VTEw7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIGlmICh2a19zaW5rLT5zd2FwcGVyKSB7CisgICAgaWYgKCEocmVzdWx0ID0KKyAgICAgICAgICAgIGdzdF92dWxrYW5fc3dhcHBlcl9nZXRfc3VwcG9ydGVkX2NhcHMgKHZrX3NpbmstPnN3YXBwZXIsICZlcnJvcikpKSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoYnNpbmssIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLCBlcnJvci0+bWVzc2FnZSksCisgICAgICAgICAgKE5VTEwpKTsKKyAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgICAgcmV0dXJuIHJlc3VsdDsKKyAgfQorCisgIHRtcCA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChHU1RfQkFTRV9TSU5LX1BBRCAoYnNpbmspKTsKKworICBpZiAoZmlsdGVyKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoYnNpbmssICJpbnRlcnNlY3Rpbmcgd2l0aCBmaWx0ZXIgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICAgZmlsdGVyKTsKKworICAgIHJlc3VsdCA9IGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChmaWx0ZXIsIHRtcCwgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKKyAgICBnc3RfY2Fwc191bnJlZiAodG1wKTsKKyAgfSBlbHNlIHsKKyAgICByZXN1bHQgPSB0bXA7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChic2luaywgInJldHVybmluZyBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgcmVzdWx0KTsKKworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19jb25maWd1cmVfZGlzcGxheV9mcm9tX2luZm8gKEdzdFZ1bGthblNpbmsgKiB2a19zaW5rLCBHc3RWaWRlb0luZm8gKiB2aW5mbykKK3sKKyAgZ3VpbnQgZGlzcGxheV9yYXRpb19udW0sIGRpc3BsYXlfcmF0aW9fZGVuOworICBnaW50IGRpc3BsYXlfcGFyX24sIGRpc3BsYXlfcGFyX2Q7CisgIGdpbnQgcGFyX24sIHBhcl9kOworICBnaW50IHdpZHRoLCBoZWlnaHQ7CisgIGdib29sZWFuIG9rOworCisgIHdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKHZpbmZvKTsKKyAgaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUICh2aW5mbyk7CisKKyAgcGFyX24gPSBHU1RfVklERU9fSU5GT19QQVJfTiAodmluZm8pOworICBwYXJfZCA9IEdTVF9WSURFT19JTkZPX1BBUl9EICh2aW5mbyk7CisKKyAgaWYgKCFwYXJfbikKKyAgICBwYXJfbiA9IDE7CisKKyAgLyogZ2V0IGRpc3BsYXkncyBQQVIgKi8KKyAgaWYgKHZrX3NpbmstPnBhcl9uICE9IDAgJiYgdmtfc2luay0+cGFyX2QgIT0gMCkgeworICAgIGRpc3BsYXlfcGFyX24gPSB2a19zaW5rLT5wYXJfbjsKKyAgICBkaXNwbGF5X3Bhcl9kID0gdmtfc2luay0+cGFyX2Q7CisgIH0gZWxzZSB7CisgICAgZGlzcGxheV9wYXJfbiA9IDE7CisgICAgZGlzcGxheV9wYXJfZCA9IDE7CisgIH0KKworICBvayA9IGdzdF92aWRlb19jYWxjdWxhdGVfZGlzcGxheV9yYXRpbyAoJmRpc3BsYXlfcmF0aW9fbnVtLAorICAgICAgJmRpc3BsYXlfcmF0aW9fZGVuLCB3aWR0aCwgaGVpZ2h0LCBwYXJfbiwgcGFyX2QsIGRpc3BsYXlfcGFyX24sCisgICAgICBkaXNwbGF5X3Bhcl9kKTsKKworICBpZiAoIW9rKQorICAgIHJldHVybiBGQUxTRTsKKworICBHU1RfVFJBQ0UgKCJQQVI6ICV1LyV1IERBUjoldS8ldSIsIHBhcl9uLCBwYXJfZCwgZGlzcGxheV9wYXJfbiwKKyAgICAgIGRpc3BsYXlfcGFyX2QpOworCisgIGlmIChoZWlnaHQgJSBkaXNwbGF5X3JhdGlvX2RlbiA9PSAwKSB7CisgICAgR1NUX0RFQlVHICgia2VlcGluZyB2aWRlbyBoZWlnaHQiKTsKKyAgICBHU1RfVklERU9fU0lOS19XSURUSCAodmtfc2luaykgPSAoZ3VpbnQpCisgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKGhlaWdodCwgZGlzcGxheV9yYXRpb19udW0sCisgICAgICAgIGRpc3BsYXlfcmF0aW9fZGVuKTsKKyAgICBHU1RfVklERU9fU0lOS19IRUlHSFQgKHZrX3NpbmspID0gaGVpZ2h0OworICB9IGVsc2UgaWYgKHdpZHRoICUgZGlzcGxheV9yYXRpb19udW0gPT0gMCkgeworICAgIEdTVF9ERUJVRyAoImtlZXBpbmcgdmlkZW8gd2lkdGgiKTsKKyAgICBHU1RfVklERU9fU0lOS19XSURUSCAodmtfc2luaykgPSB3aWR0aDsKKyAgICBHU1RfVklERU9fU0lOS19IRUlHSFQgKHZrX3NpbmspID0gKGd1aW50KQorICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50ICh3aWR0aCwgZGlzcGxheV9yYXRpb19kZW4sIGRpc3BsYXlfcmF0aW9fbnVtKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfREVCVUcgKCJhcHByb3hpbWF0aW5nIHdoaWxlIGtlZXBpbmcgdmlkZW8gaGVpZ2h0Iik7CisgICAgR1NUX1ZJREVPX1NJTktfV0lEVEggKHZrX3NpbmspID0gKGd1aW50KQorICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChoZWlnaHQsIGRpc3BsYXlfcmF0aW9fbnVtLAorICAgICAgICBkaXNwbGF5X3JhdGlvX2Rlbik7CisgICAgR1NUX1ZJREVPX1NJTktfSEVJR0hUICh2a19zaW5rKSA9IGhlaWdodDsKKyAgfQorICBHU1RfREVCVUcgKCJzY2FsaW5nIHRvICVkeCVkIiwgR1NUX1ZJREVPX1NJTktfV0lEVEggKHZrX3NpbmspLAorICAgICAgR1NUX1ZJREVPX1NJTktfSEVJR0hUICh2a19zaW5rKSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl9zaW5rX3NldF9jYXBzIChHc3RCYXNlU2luayAqIGJzaW5rLCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0VnVsa2FuU2luayAqdmtfc2luayA9IEdTVF9WVUxLQU5fU0lOSyAoYnNpbmspOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKKworICBHU1RfREVCVUdfT0JKRUNUIChic2luaywgInNldCBjYXBzIHdpdGggJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmdl9pbmZvLCBjYXBzKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCFfY29uZmlndXJlX2Rpc3BsYXlfZnJvbV9pbmZvICh2a19zaW5rLCAmdl9pbmZvKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCFnc3RfdnVsa2FuX3N3YXBwZXJfc2V0X2NhcHMgKHZrX3NpbmstPnN3YXBwZXIsIGNhcHMsICZlcnJvcikpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAodmtfc2luaywgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgKCJGYWlsZWQgdG8gY29uZmlndXJlIGNhcHMiKSwgKCIlcyIsIGVycm9yLT5tZXNzYWdlKSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICB2a19zaW5rLT52X2luZm8gPSB2X2luZm87CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfdnVsa2FuX3NpbmtfcHJlcGFyZSAoR3N0QmFzZVNpbmsgKiBic2luaywgR3N0QnVmZmVyICogYnVmKQoreworICBHc3RWdWxrYW5TaW5rICp2a19zaW5rID0gR1NUX1ZVTEtBTl9TSU5LIChic2luayk7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAodmtfc2luaywgInByZXBhcmluZyBidWZmZXIgJSIgR1NUX1BUUl9GT1JNQVQsIGJ1Zik7CisKKyAgaWYgKEdTVF9WSURFT19TSU5LX1dJRFRIICh2a19zaW5rKSA8IDEgfHwgR1NUX1ZJREVPX1NJTktfSEVJR0hUICh2a19zaW5rKSA8IDEpIHsKKyAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7CisgIH0KKworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfdnVsa2FuX3Npbmtfc2hvd19mcmFtZSAoR3N0VmlkZW9TaW5rICogdnNpbmssIEdzdEJ1ZmZlciAqIGJ1ZikKK3sKKyAgR3N0VnVsa2FuU2luayAqdmtfc2luayA9IEdTVF9WVUxLQU5fU0lOSyAodnNpbmspOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBHU1RfVFJBQ0VfT0JKRUNUICh2a19zaW5rLCAicmVuZGVyaW5nIGJ1ZmZlciAlIiBHU1RfUFRSX0ZPUk1BVCwgYnVmKTsKKworICBpZiAoIWdzdF92dWxrYW5fc3dhcHBlcl9yZW5kZXJfYnVmZmVyICh2a19zaW5rLT5zd2FwcGVyLCBidWYsICZlcnJvcikpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAodmtfc2luaywgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgKCJGYWlsZWQgdG8gcmVuZGVyIGJ1ZmZlciIpLCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtzaW5rLmggYi9leHQvdnVsa2FuL3Zrc2luay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmOTVjZjMKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3Zrc2luay5oCkBAIC0wLDAgKzEsNzAgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfU0lOS19IXworI2RlZmluZSBfVktfU0lOS19IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3NpbmsuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKyNpbmNsdWRlICJ2ay5oIgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX1NJTksgICAgICAgICAgICAoZ3N0X3Z1bGthbl9zaW5rX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fU0lOSyhvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9TSU5LLEdzdFZ1bGthblNpbmspKQorI2RlZmluZSBHU1RfVlVMS0FOX1NJTktfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1ZVTEtBTl9TSU5LLEdzdFZ1bGthblNpbmtDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fU0lOSyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9TSU5LKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9TSU5LX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9WVUxLQU5fU0lOSykpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5TaW5rIEdzdFZ1bGthblNpbms7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuU2lua0NsYXNzIEdzdFZ1bGthblNpbmtDbGFzczsKKworc3RydWN0IF9Hc3RWdWxrYW5TaW5rCit7CisgIEdzdFZpZGVvU2luayB2aWRlb19zaW5rOworCisgIEdzdFZ1bGthbkluc3RhbmNlICppbnN0YW5jZTsKKyAgR3N0VnVsa2FuRGV2aWNlICpkZXZpY2U7CisKKyAgR3N0VnVsa2FuRGlzcGxheSAqZGlzcGxheTsKKyAgR3N0VnVsa2FuV2luZG93ICp3aW5kb3c7CisKKyAgR3N0VnVsa2FuU3dhcHBlciAqc3dhcHBlcjsKKworICAvKiBwcm9wZXJ0aWVzICovCisgIGdib29sZWFuIGZvcmNlX2FzcGVjdF9yYXRpbzsKKyAgZ2ludCBwYXJfbjsKKyAgZ2ludCBwYXJfZDsKKworICAvKiBzdHJlYW0gY29uZmlndXJhdGlvbiAqLworICBHc3RWaWRlb0luZm8gdl9pbmZvOworfTsKKworc3RydWN0IF9Hc3RWdWxrYW5TaW5rQ2xhc3MKK3sKKyAgICBHc3RWaWRlb1NpbmtDbGFzcyB2aWRlb19zaW5rX2NsYXNzOworfTsKKworR1R5cGUgZ3N0X3Z1bGthbl9zaW5rX2dldF90eXBlKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmtzd2FwcGVyLmMgYi9leHQvdnVsa2FuL3Zrc3dhcHBlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwMzRjMGEKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3Zrc3dhcHBlci5jCkBAIC0wLDAgKzEsMTA0MSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgInZrc3dhcHBlci5oIgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnVsa2FuX3N3YXBwZXJfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWSAoR1NUX0NBVF9ERUZBVUxUKTsKKworI2RlZmluZSBnc3RfdnVsa2FuX3N3YXBwZXJfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFZ1bGthblN3YXBwZXIsIGdzdF92dWxrYW5fc3dhcHBlciwKKyAgICBHU1RfVFlQRV9PQkpFQ1QsIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0RFRkFVTFQsCisgICAgICAgICJ2dWxrYW5zd2FwcGVyIiwgMCwgIlZ1bGthbiBTd2FwcGVyIikpOworCisjZGVmaW5lIFJFTkRFUl9HRVRfTE9DSyhvKSAmKEdTVF9WVUxLQU5fU1dBUFBFUiAobyktPnByaXYtPnJlbmRlcl9sb2NrKQorI2RlZmluZSBSRU5ERVJfTE9DSyhvKSBnX211dGV4X2xvY2sgKFJFTkRFUl9HRVRfTE9DSyhvKSk7CisjZGVmaW5lIFJFTkRFUl9VTkxPQ0sobykgZ19tdXRleF91bmxvY2sgKFJFTkRFUl9HRVRfTE9DSyhvKSk7CisKK3N0cnVjdCBfR3N0VnVsa2FuU3dhcHBlclByaXZhdGUKK3sKKyAgR011dGV4IHJlbmRlcl9sb2NrOworfTsKKworc3RhdGljIHZvaWQgX29uX3dpbmRvd19kcmF3IChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csCisgICAgR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIpOworCitzdGF0aWMgZ2Jvb2xlYW4KK19nZXRfZnVuY3Rpb25fdGFibGUgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyKQoreworICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZSA9IHN3YXBwZXItPmRldmljZTsKKyAgR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlID0gZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X2luc3RhbmNlIChkZXZpY2UpOworCisgIGlmICghaW5zdGFuY2UpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzd2FwcGVyLCAiRmFpbGVkIHRvIGdldCBpbnN0YW5jZSBmcm9tIHRoZSBkZXZpY2UiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyNkZWZpbmUgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRChvYmosIHR5cGUsIG5hbWUpIFwKKyAgR19TVE1UX1NUQVJUIHsgXAorICAgIG9iai0+R19QQVNURSAoLCBuYW1lKSA9IEdfUEFTVEUoR19QQVNURShnc3RfdnVsa2FuXywgdHlwZSksIF9nZXRfcHJvY19hZGRyZXNzKSAodHlwZSwgInZrIiBHX1NUUklOR0lGWShuYW1lKSk7IFwKKyAgICBpZiAoIW9iai0+R19QQVNURSgsIG5hbWUpKSB7IFwKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG9iaiwgIkZhaWxlZCB0byBmaW5kIHJlcXVpcmVkIGZ1bmN0aW9uIHZrIiBHX1NUUklOR0lGWShuYW1lKSk7IFwKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGluc3RhbmNlKTsgXAorICAgICAgcmV0dXJuIEZBTFNFOyBcCisgICAgfSBcCisgIH0gR19TVE1UX0VORAorCisgIEdFVF9QUk9DX0FERFJFU1NfUkVRVUlSRUQgKHN3YXBwZXIsIGluc3RhbmNlLAorICAgICAgR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlU3VwcG9ydEtIUik7CisgIEdFVF9QUk9DX0FERFJFU1NfUkVRVUlSRUQgKHN3YXBwZXIsIGluc3RhbmNlLAorICAgICAgR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSKTsKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgaW5zdGFuY2UsCisgICAgICBHZXRQaHlzaWNhbERldmljZVN1cmZhY2VGb3JtYXRzS0hSKTsKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgaW5zdGFuY2UsCisgICAgICBHZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIpOworICBHRVRfUFJPQ19BRERSRVNTX1JFUVVJUkVEIChzd2FwcGVyLCBkZXZpY2UsIENyZWF0ZVN3YXBjaGFpbktIUik7CisgIEdFVF9QUk9DX0FERFJFU1NfUkVRVUlSRUQgKHN3YXBwZXIsIGRldmljZSwgRGVzdHJveVN3YXBjaGFpbktIUik7CisgIEdFVF9QUk9DX0FERFJFU1NfUkVRVUlSRUQgKHN3YXBwZXIsIGRldmljZSwgR2V0U3dhcGNoYWluSW1hZ2VzS0hSKTsKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgZGV2aWNlLCBBY3F1aXJlTmV4dEltYWdlS0hSKTsKKyAgR0VUX1BST0NfQUREUkVTU19SRVFVSVJFRCAoc3dhcHBlciwgZGV2aWNlLCBRdWV1ZVByZXNlbnRLSFIpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKGluc3RhbmNlKTsKKworICByZXR1cm4gVFJVRTsKKworI3VuZGVmIEdFVF9QUk9DX0FERFJFU1NfUkVRVUlSRUQKK30KKworc3RhdGljIEdzdFZpZGVvRm9ybWF0CitfdmtfZm9ybWF0X3RvX3ZpZGVvX2Zvcm1hdCAoVmtGb3JtYXQgZm9ybWF0KQoreworICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgLyogZG91YmxlIGNoZWNrIGVuZGlhbmVzcyAqLworICAgIGNhc2UgVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNOgorICAgICAgcmV0dXJuIEdTVF9WSURFT19GT1JNQVRfUkdCQTsKKyAgICBjYXNlIFZLX0ZPUk1BVF9SOEc4QjhfVU5PUk06CisgICAgICByZXR1cm4gR1NUX1ZJREVPX0ZPUk1BVF9SR0I7CisgICAgY2FzZSBWS19GT1JNQVRfQjhHOFI4QThfVU5PUk06CisgICAgICByZXR1cm4gR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOworICAgIGNhc2UgVktfRk9STUFUX0I4RzhSOF9VTk9STToKKyAgICAgIHJldHVybiBHU1RfVklERU9fRk9STUFUX0JHUjsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTjsKKyAgfQorfQorCitzdGF0aWMgVmtGb3JtYXQKK192a19mb3JtYXRfZnJvbV92aWRlb19mb3JtYXQgKEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0KQoreworICBzd2l0Y2ggKHZfZm9ybWF0KSB7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQkE6CisgICAgICByZXR1cm4gVktfRk9STUFUX1I4RzhCOEE4X1VOT1JNOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0I6CisgICAgICByZXR1cm4gVktfRk9STUFUX1I4RzhCOF9VTk9STTsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSQToKKyAgICAgIHJldHVybiBWS19GT1JNQVRfQjhHOFI4QThfVU5PUk07CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUjoKKyAgICAgIHJldHVybiBWS19GT1JNQVRfQjhHOFI4X1VOT1JNOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gVktfRk9STUFUX1VOREVGSU5FRDsKKyAgfQorfQorCitzdGF0aWMgVmtDb2xvclNwYWNlS0hSCitfdmtfY29sb3Jfc3BhY2VfZnJvbV92aWRlb19pbmZvIChHc3RWaWRlb0luZm8gKiB2X2luZm8pCit7CisgIHJldHVybiBWS19DT0xPUlNQQUNFX1NSR0JfTk9OTElORUFSX0tIUjsKK30KKworc3RhdGljIHZvaWQKK19hZGRfdmtfZm9ybWF0X3RvX2xpc3QgKEdWYWx1ZSAqIGxpc3QsIFZrRm9ybWF0IGZvcm1hdCkKK3sKKyAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQ7CisgIGNvbnN0IGdjaGFyICpmb3JtYXRfc3RyOworCisgIHZfZm9ybWF0ID0gX3ZrX2Zvcm1hdF90b192aWRlb19mb3JtYXQgKGZvcm1hdCk7CisgIGlmICh2X2Zvcm1hdCkgeworICAgIEdWYWx1ZSBpdGVtID0gR19WQUxVRV9JTklUOworCisgICAgZ192YWx1ZV9pbml0ICgmaXRlbSwgR19UWVBFX1NUUklORyk7CisgICAgZm9ybWF0X3N0ciA9IGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nICh2X2Zvcm1hdCk7CisgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmaXRlbSwgZm9ybWF0X3N0cik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlIChsaXN0LCAmaXRlbSk7CisgICAgZ192YWx1ZV91bnNldCAoJml0ZW0pOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3Z1bGthbl9zd2FwcGVyX2Vuc3VyZV9zdXJmYWNlIChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlciwgR0Vycm9yICoqIGVycm9yKQoreworICBpZiAoIXN3YXBwZXItPnN1cmZhY2UpIHsKKyAgICBpZiAoIShzd2FwcGVyLT5zdXJmYWNlID0KKyAgICAgICAgICAgIGdzdF92dWxrYW5fd2luZG93X2dldF9zdXJmYWNlIChzd2FwcGVyLT53aW5kb3csIGVycm9yKSkpIHsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RydWN0IGNob29zZV9kYXRhCit7CisgIEdzdFZ1bGthblN3YXBwZXIgKnN3YXBwZXI7CisgIEdzdFZ1bGthblF1ZXVlICpncmFwaGljc19xdWV1ZTsKKyAgR3N0VnVsa2FuUXVldWUgKnByZXNlbnRfcXVldWU7Cit9OworCitzdGF0aWMgZ2Jvb2xlYW4KK19jaG9vc2VfcXVldWUgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgR3N0VnVsa2FuUXVldWUgKiBxdWV1ZSwKKyAgICBzdHJ1Y3QgY2hvb3NlX2RhdGEgKmRhdGEpCit7CisgIGd1aW50IGZsYWdzID0gZGV2aWNlLT5xdWV1ZV9mYW1pbHlfcHJvcHNbcXVldWUtPmZhbWlseV0ucXVldWVGbGFnczsKKyAgVmtQaHlzaWNhbERldmljZSBncHU7CisgIGdib29sZWFuIHN1cHBvcnRzX3ByZXNlbnQ7CisKKyAgZ3B1ID0gZ3N0X3Z1bGthbl9kZXZpY2VfZ2V0X3BoeXNpY2FsX2RldmljZSAoZGF0YS0+c3dhcHBlci0+ZGV2aWNlKTsKKworICB7CisgICAgVmtSZXN1bHQgZXJyOworICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICAgIFZrQm9vbDMyIHBoeXNpY2FsX2RldmljZV9zdXBwb3J0ZWQ7CisKKyAgICBlcnIgPQorICAgICAgICBkYXRhLT5zd2FwcGVyLT5HZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSIChncHUsIHF1ZXVlLT5pbmRleCwKKyAgICAgICAgZGF0YS0+c3dhcHBlci0+c3VyZmFjZSwgJnBoeXNpY2FsX2RldmljZV9zdXBwb3J0ZWQpOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgJmVycm9yLAorICAgICAgICAgICAgIkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVN1cHBvcnQiKSA8IDApIHsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRhdGEtPnN3YXBwZXIsCisgICAgICAgICAgInN1cmZhY2Ugbm90IHN1cHBvcnRlZCBieSB0aGUgcGh5c2ljYWwgZGV2aWNlOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgfQorCisgIHN1cHBvcnRzX3ByZXNlbnQgPQorICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X3ByZXNlbnRhdGlvbl9zdXBwb3J0IChkYXRhLT5zd2FwcGVyLT53aW5kb3csCisgICAgICBkZXZpY2UsIHF1ZXVlLT5pbmRleCk7CisKKyAgaWYgKChmbGFncyAmIFZLX1FVRVVFX0dSQVBISUNTX0JJVCkgIT0gMCkgeworICAgIGlmIChzdXBwb3J0c19wcmVzZW50KSB7CisgICAgICAvKiBmb3VuZCBvbmUgdGhhdCBzdXBwb3J0cyBib3RoICovCisgICAgICBpZiAoZGF0YS0+Z3JhcGhpY3NfcXVldWUpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGRhdGEtPmdyYXBoaWNzX3F1ZXVlKTsKKyAgICAgIGRhdGEtPmdyYXBoaWNzX3F1ZXVlID0gZ3N0X29iamVjdF9yZWYgKHF1ZXVlKTsKKyAgICAgIGlmIChkYXRhLT5wcmVzZW50X3F1ZXVlKQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChkYXRhLT5wcmVzZW50X3F1ZXVlKTsKKyAgICAgIGRhdGEtPnByZXNlbnRfcXVldWUgPSBnc3Rfb2JqZWN0X3JlZiAocXVldWUpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBpZiAoIWRhdGEtPmdyYXBoaWNzX3F1ZXVlKQorICAgICAgZGF0YS0+cHJlc2VudF9xdWV1ZSA9IGdzdF9vYmplY3RfcmVmIChxdWV1ZSk7CisgIH0gZWxzZSBpZiAoc3VwcG9ydHNfcHJlc2VudCkgeworICAgIGlmICghZGF0YS0+cHJlc2VudF9xdWV1ZSkKKyAgICAgIGRhdGEtPnByZXNlbnRfcXVldWUgPSBnc3Rfb2JqZWN0X3JlZiAocXVldWUpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3Z1bGthbl9zd2FwcGVyX3JldHJpZXZlX3N1cmZhY2VfcHJvcGVydGllcyAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgR0Vycm9yICoqIGVycm9yKQoreworICBzdHJ1Y3QgY2hvb3NlX2RhdGEgZGF0YTsKKyAgVmtQaHlzaWNhbERldmljZSBncHU7CisgIFZrUmVzdWx0IGVycjsKKworICBpZiAoc3dhcHBlci0+c3VyZl9mb3JtYXRzKQorICAgIHJldHVybiBUUlVFOworCisgIGlmICghX3Z1bGthbl9zd2FwcGVyX2Vuc3VyZV9zdXJmYWNlIChzd2FwcGVyLCBlcnJvcikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGdwdSA9IGdzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgKHN3YXBwZXItPmRldmljZSk7CisKKyAgZGF0YS5zd2FwcGVyID0gc3dhcHBlcjsKKyAgZGF0YS5wcmVzZW50X3F1ZXVlID0gTlVMTDsKKyAgZGF0YS5ncmFwaGljc19xdWV1ZSA9IE5VTEw7CisKKyAgZ3N0X3Z1bGthbl9kZXZpY2VfZm9yZWFjaF9xdWV1ZSAoc3dhcHBlci0+ZGV2aWNlLAorICAgICAgKEdzdFZ1bGthbkRldmljZUZvckVhY2hRdWV1ZUZ1bmMpIF9jaG9vc2VfcXVldWUsICZkYXRhKTsKKworICBpZiAoZGF0YS5ncmFwaGljc19xdWV1ZSAhPSBkYXRhLnByZXNlbnRfcXVldWUpIHsKKyAgICAvKiBGSVhNRTogYWRkIHN1cHBvcnQgZm9yIHNlcGFyYXRlIGdyYXBoaWNzL3ByZXNlbnQgcXVldWVzICovCisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLAorICAgICAgICBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJGYWlsZWQgdG8gZmluZCBhIGNvbXBhdGlibGUgcHJlc2VudC9ncmFwaGljcyBxdWV1ZSIpOworICAgIGlmIChkYXRhLnByZXNlbnRfcXVldWUpCisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChkYXRhLnByZXNlbnRfcXVldWUpOworICAgIGlmIChkYXRhLmdyYXBoaWNzX3F1ZXVlKQorICAgICAgZ3N0X29iamVjdF91bnJlZiAoZGF0YS5ncmFwaGljc19xdWV1ZSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgc3dhcHBlci0+cXVldWUgPSBnc3Rfb2JqZWN0X3JlZiAoZGF0YS5wcmVzZW50X3F1ZXVlKTsKKyAgaWYgKGRhdGEucHJlc2VudF9xdWV1ZSkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChkYXRhLnByZXNlbnRfcXVldWUpOworICBpZiAoZGF0YS5ncmFwaGljc19xdWV1ZSkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChkYXRhLmdyYXBoaWNzX3F1ZXVlKTsKKworICBlcnIgPQorICAgICAgc3dhcHBlci0+R2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSIChncHUsIHN3YXBwZXItPnN1cmZhY2UsCisgICAgICAmc3dhcHBlci0+c3VyZl9wcm9wcyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgIkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tIUiIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZXJyID0KKyAgICAgIHN3YXBwZXItPkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIgKGdwdSwgc3dhcHBlci0+c3VyZmFjZSwKKyAgICAgICZzd2FwcGVyLT5uX3N1cmZfZm9ybWF0cywgTlVMTCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgIkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIHN3YXBwZXItPnN1cmZfZm9ybWF0cyA9IGdfbmV3MCAoVmtTdXJmYWNlRm9ybWF0S0hSLCBzd2FwcGVyLT5uX3N1cmZfZm9ybWF0cyk7CisgIGVyciA9CisgICAgICBzd2FwcGVyLT5HZXRQaHlzaWNhbERldmljZVN1cmZhY2VGb3JtYXRzS0hSIChncHUsIHN3YXBwZXItPnN1cmZhY2UsCisgICAgICAmc3dhcHBlci0+bl9zdXJmX2Zvcm1hdHMsIHN3YXBwZXItPnN1cmZfZm9ybWF0cyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgIkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIGVyciA9CisgICAgICBzd2FwcGVyLT5HZXRQaHlzaWNhbERldmljZVN1cmZhY2VQcmVzZW50TW9kZXNLSFIgKGdwdSwgc3dhcHBlci0+c3VyZmFjZSwKKyAgICAgICZzd2FwcGVyLT5uX3N1cmZfcHJlc2VudF9tb2RlcywgTlVMTCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgIkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgc3dhcHBlci0+c3VyZl9wcmVzZW50X21vZGVzID0KKyAgICAgIGdfbmV3MCAoVmtQcmVzZW50TW9kZUtIUiwgc3dhcHBlci0+bl9zdXJmX3ByZXNlbnRfbW9kZXMpOworICBlcnIgPQorICAgICAgc3dhcHBlci0+R2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSIChncHUsIHN3YXBwZXItPnN1cmZhY2UsCisgICAgICAmc3dhcHBlci0+bl9zdXJmX3ByZXNlbnRfbW9kZXMsIHN3YXBwZXItPnN1cmZfcHJlc2VudF9tb2Rlcyk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsCisgICAgICAgICAgIkdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUiIpIDwgMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX29uX3dpbmRvd19jbG9zZSAoR3N0VnVsa2FuV2luZG93ICogd2luZG93LCBHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlcikKK3sKKyAgZ19hdG9taWNfaW50X3NldCAoJnN3YXBwZXItPnRvX3F1aXQsIDEpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9zd2FwcGVyX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RWdWxrYW5Td2FwcGVyICpzd2FwcGVyID0gR1NUX1ZVTEtBTl9TV0FQUEVSIChvYmplY3QpOworICBpbnQgaTsKKworICBpZiAoc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXMpIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3dhcHBlci0+bl9zd2FwX2NoYWluX2ltYWdlczsgaSsrKSB7CisgICAgICBnc3RfbWVtb3J5X3VucmVmICgoR3N0TWVtb3J5ICopIHN3YXBwZXItPnN3YXBfY2hhaW5faW1hZ2VzW2ldKTsKKyAgICAgIHN3YXBwZXItPnN3YXBfY2hhaW5faW1hZ2VzW2ldID0gTlVMTDsKKyAgICB9CisgICAgZ19mcmVlIChzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlcyk7CisgIH0KKyAgc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXMgPSBOVUxMOworCisgIGlmIChzd2FwcGVyLT5zd2FwX2NoYWluKQorICAgIHN3YXBwZXItPkRlc3Ryb3lTd2FwY2hhaW5LSFIgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCBzd2FwcGVyLT5zd2FwX2NoYWluLAorICAgICAgICBOVUxMKTsKKyAgc3dhcHBlci0+c3dhcF9jaGFpbiA9IFZLX05VTExfSEFORExFOworCisgIGlmIChzd2FwcGVyLT5xdWV1ZSkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzd2FwcGVyLT5xdWV1ZSk7CisgIHN3YXBwZXItPnF1ZXVlID0gTlVMTDsKKworICBpZiAoc3dhcHBlci0+ZGV2aWNlKQorICAgIGdzdF9vYmplY3RfdW5yZWYgKHN3YXBwZXItPmRldmljZSk7CisgIHN3YXBwZXItPmRldmljZSA9IE5VTEw7CisKKyAgZ19zaWduYWxfaGFuZGxlcl9kaXNjb25uZWN0IChzd2FwcGVyLT53aW5kb3csIHN3YXBwZXItPmRyYXdfaWQpOworICBzd2FwcGVyLT5kcmF3X2lkID0gMDsKKworICBnX3NpZ25hbF9oYW5kbGVyX2Rpc2Nvbm5lY3QgKHN3YXBwZXItPndpbmRvdywgc3dhcHBlci0+Y2xvc2VfaWQpOworICBzd2FwcGVyLT5jbG9zZV9pZCA9IDA7CisKKyAgaWYgKHN3YXBwZXItPndpbmRvdykKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzd2FwcGVyLT53aW5kb3cpOworICBzd2FwcGVyLT53aW5kb3cgPSBOVUxMOworCisgIGdfZnJlZSAoc3dhcHBlci0+c3VyZl9wcmVzZW50X21vZGVzKTsKKyAgc3dhcHBlci0+c3VyZl9wcmVzZW50X21vZGVzID0gTlVMTDsKKworICBnX2ZyZWUgKHN3YXBwZXItPnN1cmZfZm9ybWF0cyk7CisgIHN3YXBwZXItPnN1cmZfZm9ybWF0cyA9IE5VTEw7CisKKyAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmc3dhcHBlci0+Y3VycmVudF9idWZmZXIsIE5VTEwpOworICBnc3RfY2Fwc19yZXBsYWNlICgmc3dhcHBlci0+Y2FwcywgTlVMTCk7CisKKyAgZ19tdXRleF9jbGVhciAoJnN3YXBwZXItPnByaXYtPnJlbmRlcl9sb2NrKTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3N3YXBwZXJfaW5pdCAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIpCit7CisgIHN3YXBwZXItPnByaXYgPQorICAgICAgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFIChzd2FwcGVyLCBHU1RfVFlQRV9WVUxLQU5fU1dBUFBFUiwKKyAgICAgIEdzdFZ1bGthblN3YXBwZXJQcml2YXRlKTsKKworICBnX211dGV4X2luaXQgKCZzd2FwcGVyLT5wcml2LT5yZW5kZXJfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3N3YXBwZXJfY2xhc3NfaW5pdCAoR3N0VnVsa2FuU3dhcHBlckNsYXNzICoga2xhc3MpCit7CisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0VnVsa2FuU3dhcHBlclByaXZhdGUpKTsKKworICBHX09CSkVDVF9DTEFTUyAoa2xhc3MpLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5fc3dhcHBlcl9maW5hbGl6ZTsKK30KKworR3N0VnVsa2FuU3dhcHBlciAqCitnc3RfdnVsa2FuX3N3YXBwZXJfbmV3IChHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdykKK3sKKyAgR3N0VnVsa2FuU3dhcHBlciAqc3dhcHBlcjsKKworICBzd2FwcGVyID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9WVUxLQU5fU1dBUFBFUiwgTlVMTCk7CisgIHN3YXBwZXItPmRldmljZSA9IGdzdF9vYmplY3RfcmVmIChkZXZpY2UpOworICBzd2FwcGVyLT53aW5kb3cgPSBnc3Rfb2JqZWN0X3JlZiAod2luZG93KTsKKworICBpZiAoIV9nZXRfZnVuY3Rpb25fdGFibGUgKHN3YXBwZXIpKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc3dhcHBlcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBzd2FwcGVyLT5jbG9zZV9pZCA9IGdfc2lnbmFsX2Nvbm5lY3QgKHN3YXBwZXItPndpbmRvdywgImNsb3NlIiwKKyAgICAgIChHQ2FsbGJhY2spIF9vbl93aW5kb3dfY2xvc2UsIHN3YXBwZXIpOworICBzd2FwcGVyLT5kcmF3X2lkID0gZ19zaWduYWxfY29ubmVjdCAoc3dhcHBlci0+d2luZG93LCAiZHJhdyIsCisgICAgICAoR0NhbGxiYWNrKSBfb25fd2luZG93X2RyYXcsIHN3YXBwZXIpOworCisgIHJldHVybiBzd2FwcGVyOworfQorCitHc3RDYXBzICoKK2dzdF92dWxrYW5fc3dhcHBlcl9nZXRfc3VwcG9ydGVkX2NhcHMgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLAorICAgIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0U3RydWN0dXJlICpzOworICBHc3RDYXBzICpjYXBzOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX1NXQVBQRVIgKHN3YXBwZXIpLCBOVUxMKTsKKworICBpZiAoIV92dWxrYW5fc3dhcHBlcl9yZXRyaWV2ZV9zdXJmYWNlX3Byb3BlcnRpZXMgKHN3YXBwZXIsIGVycm9yKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoInZpZGVvL3gtcmF3Iik7CisgIGdzdF9jYXBzX3NldF9mZWF0dXJlcyAoY2FwcywgMCwKKyAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9WVUxLQU5fQlVGRkVSKSk7CisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKworICB7CisgICAgaW50IGk7CisgICAgR1ZhbHVlIGxpc3QgPSBHX1ZBTFVFX0lOSVQ7CisKKyAgICBnX3ZhbHVlX2luaXQgKCZsaXN0LCBHU1RfVFlQRV9MSVNUKTsKKworICAgIGlmIChzd2FwcGVyLT5uX3N1cmZfZm9ybWF0cworICAgICAgICAmJiBzd2FwcGVyLT5zdXJmX2Zvcm1hdHNbMF0uZm9ybWF0ID09IFZLX0ZPUk1BVF9VTkRFRklORUQpIHsKKyAgICAgIF9hZGRfdmtfZm9ybWF0X3RvX2xpc3QgKCZsaXN0LCBWS19GT1JNQVRfQjhHOFI4QThfVU5PUk0pOworICAgIH0gZWxzZSB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgc3dhcHBlci0+bl9zdXJmX2Zvcm1hdHM7IGkrKykgeworICAgICAgICBfYWRkX3ZrX2Zvcm1hdF90b19saXN0ICgmbGlzdCwgc3dhcHBlci0+c3VyZl9mb3JtYXRzW2ldLmZvcm1hdCk7CisgICAgICB9CisgICAgfQorCisgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHMsICJmb3JtYXQiLCAmbGlzdCk7CisgICAgZ192YWx1ZV91bnNldCAoJmxpc3QpOworICB9CisgIHsKKyAgICBndWludDMyIG1heF9kaW0gPSBzd2FwcGVyLT5kZXZpY2UtPmdwdV9wcm9wcy5saW1pdHMubWF4SW1hZ2VEaW1lbnNpb24yRDsKKworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAid2lkdGgiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDEsIChnaW50KSBtYXhfZGltLAorICAgICAgICAiaGVpZ2h0IiwgR1NUX1RZUEVfSU5UX1JBTkdFLCAxLCAoZ2ludCkgbWF4X2RpbSwgInBpeGVsLWFzcGVjdC1yYXRpbyIsCisgICAgICAgIEdTVF9UWVBFX0ZSQUNUSU9OLCAxLCAxLCAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsIDAsIDEsCisgICAgICAgIEdfTUFYSU5ULCAxLCBOVUxMKTsKKyAgfQorCisgIEdTVF9JTkZPX09CSkVDVCAoc3dhcHBlciwgIlByb2JlZCB0aGUgZm9sbG93aW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgIHJldHVybiBjYXBzOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19zd2FwcGVyX3NldF9pbWFnZV9sYXlvdXRfd2l0aF9jbWQgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLAorICAgIFZrQ29tbWFuZEJ1ZmZlciBjbWQsIEdzdFZ1bGthbkltYWdlTWVtb3J5ICogaW1hZ2UsCisgICAgVmtJbWFnZUxheW91dCBuZXdfaW1hZ2VfbGF5b3V0LCBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIHNyY19zdGFnZXMgPSBWS19QSVBFTElORV9TVEFHRV9UT1BfT0ZfUElQRV9CSVQ7CisgIFZrUGlwZWxpbmVTdGFnZUZsYWdzIGRlc3Rfc3RhZ2VzID0gVktfUElQRUxJTkVfU1RBR0VfVE9QX09GX1BJUEVfQklUOworICBWa0ltYWdlTWVtb3J5QmFycmllciBpbWFnZV9tZW1vcnlfYmFycmllcjsKKworICBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9zZXRfbGF5b3V0IChpbWFnZSwgbmV3X2ltYWdlX2xheW91dCwKKyAgICAgICZpbWFnZV9tZW1vcnlfYmFycmllcik7CisKKyAgdmtDbWRQaXBlbGluZUJhcnJpZXIgKGNtZCwgc3JjX3N0YWdlcywgZGVzdF9zdGFnZXMsIDAsIDAsIE5VTEwsIDAsIE5VTEwsIDEsCisgICAgICAmaW1hZ2VfbWVtb3J5X2JhcnJpZXIpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19uZXdfZmVuY2UgKEdzdFZ1bGthbkRldmljZSAqIGRldmljZSwgVmtGZW5jZSAqIGZlbmNlLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrRmVuY2VDcmVhdGVJbmZvIGZlbmNlX2luZm87CisgIFZrUmVzdWx0IGVycjsKKworICBmZW5jZV9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfRkVOQ0VfQ1JFQVRFX0lORk87CisgIGZlbmNlX2luZm8ucE5leHQgPSBOVUxMOworICBmZW5jZV9pbmZvLmZsYWdzID0gMDsKKworICBlcnIgPSB2a0NyZWF0ZUZlbmNlIChkZXZpY2UtPmRldmljZSwgJmZlbmNlX2luZm8sIE5VTEwsIGZlbmNlKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrQ3JlYXRlRmVuY2UiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19zd2FwcGVyX3NldF9pbWFnZV9sYXlvdXQgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLAorICAgIEdzdFZ1bGthbkltYWdlTWVtb3J5ICogaW1hZ2UsIFZrSW1hZ2VMYXlvdXQgbmV3X2ltYWdlX2xheW91dCwKKyAgICBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrQ29tbWFuZEJ1ZmZlciBjbWQ7CisgIFZrRmVuY2UgZmVuY2U7CisgIFZrUmVzdWx0IGVycjsKKworICBpZiAoIWdzdF92dWxrYW5fZGV2aWNlX2NyZWF0ZV9jbWRfYnVmZmVyIChzd2FwcGVyLT5kZXZpY2UsICZjbWQsIGVycm9yKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCFfbmV3X2ZlbmNlIChzd2FwcGVyLT5kZXZpY2UsICZmZW5jZSwgZXJyb3IpKQorICAgIHJldHVybiBGQUxTRTsKKworICB7CisgICAgVmtDb21tYW5kQnVmZmVySW5oZXJpdGFuY2VJbmZvIGJ1Zl9pbmggPSB7IDAsIH07CisgICAgVmtDb21tYW5kQnVmZmVyQmVnaW5JbmZvIGNtZF9idWZfaW5mbyA9IHsgMCwgfTsKKworICAgIGJ1Zl9pbmguc1R5cGUgPSBWS19TVFJVQ1RVUkVfVFlQRV9DT01NQU5EX0JVRkZFUl9JTkhFUklUQU5DRV9JTkZPOworICAgIGJ1Zl9pbmgucE5leHQgPSBOVUxMOworICAgIGJ1Zl9pbmgucmVuZGVyUGFzcyA9IFZLX05VTExfSEFORExFOworICAgIGJ1Zl9pbmguc3VicGFzcyA9IDA7CisgICAgYnVmX2luaC5mcmFtZWJ1ZmZlciA9IFZLX05VTExfSEFORExFOworICAgIGJ1Zl9pbmgub2NjbHVzaW9uUXVlcnlFbmFibGUgPSBGQUxTRTsKKyAgICBidWZfaW5oLnF1ZXJ5RmxhZ3MgPSAwOworICAgIGJ1Zl9pbmgucGlwZWxpbmVTdGF0aXN0aWNzID0gMDsKKworICAgIGNtZF9idWZfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0JFR0lOX0lORk87CisgICAgY21kX2J1Zl9pbmZvLnBOZXh0ID0gTlVMTDsKKyAgICBjbWRfYnVmX2luZm8uZmxhZ3MgPSBWS19DT01NQU5EX0JVRkZFUl9VU0FHRV9PTkVfVElNRV9TVUJNSVRfQklUOworICAgIGNtZF9idWZfaW5mby5wSW5oZXJpdGFuY2VJbmZvID0gJmJ1Zl9pbmg7CisKKyAgICBlcnIgPSB2a0JlZ2luQ29tbWFuZEJ1ZmZlciAoY21kLCAmY21kX2J1Zl9pbmZvKTsKKyAgICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtCZWdpbkNvbW1hbmRCdWZmZXIiKSA8IDApCisgICAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIV9zd2FwcGVyX3NldF9pbWFnZV9sYXlvdXRfd2l0aF9jbWQgKHN3YXBwZXIsIGNtZCwgaW1hZ2UsCisgICAgICAgICAgbmV3X2ltYWdlX2xheW91dCwgZXJyb3IpKQorICAgIHJldHVybiBGQUxTRTsKKworICBlcnIgPSB2a0VuZENvbW1hbmRCdWZmZXIgKGNtZCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0VuZENvbW1hbmRCdWZmZXIiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIHsKKyAgICBWa1N1Ym1pdEluZm8gc3VibWl0X2luZm8gPSB7IDAsIH07CisKKyAgICBzdWJtaXRfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX1NVQk1JVF9JTkZPOworICAgIHN1Ym1pdF9pbmZvLnBOZXh0ID0gTlVMTDsKKyAgICBzdWJtaXRfaW5mby53YWl0U2VtYXBob3JlQ291bnQgPSAwOworICAgIHN1Ym1pdF9pbmZvLnBXYWl0U2VtYXBob3JlcyA9IE5VTEw7CisgICAgc3VibWl0X2luZm8uY29tbWFuZEJ1ZmZlckNvdW50ID0gMTsKKyAgICBzdWJtaXRfaW5mby5wQ29tbWFuZEJ1ZmZlcnMgPSAmY21kOworICAgIHN1Ym1pdF9pbmZvLnNpZ25hbFNlbWFwaG9yZUNvdW50ID0gMDsKKyAgICBzdWJtaXRfaW5mby5wU2lnbmFsU2VtYXBob3JlcyA9IE5VTEw7CisKKyAgICBlcnIgPSB2a1F1ZXVlU3VibWl0IChzd2FwcGVyLT5xdWV1ZS0+cXVldWUsIDEsICZzdWJtaXRfaW5mbywgZmVuY2UpOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a1F1ZXVlU3VibWl0IikgPCAwKQorICAgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgZXJyID0gdmtXYWl0Rm9yRmVuY2VzIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgMSwgJmZlbmNlLCBUUlVFLCAtMSk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a1dhaXRGb3JGZW5jZXMiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworICB2a0ZyZWVDb21tYW5kQnVmZmVycyAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIHN3YXBwZXItPmRldmljZS0+Y21kX3Bvb2wsIDEsCisgICAgICAmY21kKTsKKworICB2a0Rlc3Ryb3lGZW5jZSAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIGZlbmNlLCBOVUxMKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitfYWxsb2NhdGVfc3dhcGNoYWluIChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlciwgR3N0Q2FwcyAqIGNhcHMsCisgICAgR0Vycm9yICoqIGVycm9yKQoreworICBWa1N1cmZhY2VUcmFuc2Zvcm1GbGFnc0tIUiBwcmVUcmFuc2Zvcm07CisgIFZrQ29tcG9zaXRlQWxwaGFGbGFnc0tIUiBhbHBoYV9mbGFnczsKKyAgVmtQcmVzZW50TW9kZUtIUiBwcmVzZW50X21vZGU7CisgIFZrSW1hZ2VVc2FnZUZsYWdzIHVzYWdlID0gMDsKKyAgVmtDb2xvclNwYWNlS0hSIGNvbG9yX3NwYWNlOworICBWa0ltYWdlICpzd2FwX2NoYWluX2ltYWdlczsKKyAgVmtFeHRlbnQyRCBzd2FwY2hhaW5fZGltczsKKyAgZ3VpbnQzMiBuX2ltYWdlc193YW50ZWQ7CisgIFZrUGh5c2ljYWxEZXZpY2UgZ3B1OworICBWa0Zvcm1hdCBmb3JtYXQ7CisgIFZrUmVzdWx0IGVycjsKKyAgZ3VpbnQzMiBpOworCisgIGlmICghX3Z1bGthbl9zd2FwcGVyX2Vuc3VyZV9zdXJmYWNlIChzd2FwcGVyLCBlcnJvcikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGdwdSA9IGdzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgKHN3YXBwZXItPmRldmljZSk7CisgIGVyciA9CisgICAgICBzd2FwcGVyLT5HZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFIgKGdwdSwKKyAgICAgIHN3YXBwZXItPnN1cmZhY2UsICZzd2FwcGVyLT5zdXJmX3Byb3BzKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAiR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlQ2FwYWJpbGl0aWVzS0hSIikgPCAwKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiB3aWR0aCBhbmQgaGVpZ2h0IGFyZSBlaXRoZXIgYm90aCAtMSwgb3IgYm90aCBub3QgLTEuICovCisgIGlmIChzd2FwcGVyLT5zdXJmX3Byb3BzLmN1cnJlbnRFeHRlbnQud2lkdGggPT0gLTEpIHsKKyAgICAvKiBJZiB0aGUgc3VyZmFjZSBzaXplIGlzIHVuZGVmaW5lZCwgdGhlIHNpemUgaXMgc2V0IHRvCisgICAgICogdGhlIHNpemUgb2YgdGhlIGltYWdlcyByZXF1ZXN0ZWQuICovCisgICAgc3dhcGNoYWluX2RpbXMud2lkdGggPSAzMjA7CisgICAgc3dhcGNoYWluX2RpbXMuaGVpZ2h0ID0gMjQwOworICB9IGVsc2UgeworICAgIC8qIElmIHRoZSBzdXJmYWNlIHNpemUgaXMgZGVmaW5lZCwgdGhlIHN3YXAgY2hhaW4gc2l6ZSBtdXN0IG1hdGNoICovCisgICAgc3dhcGNoYWluX2RpbXMgPSBzd2FwcGVyLT5zdXJmX3Byb3BzLmN1cnJlbnRFeHRlbnQ7CisgIH0KKworICAvKiBJZiBtYWlsYm94IG1vZGUgaXMgYXZhaWxhYmxlLCB1c2UgaXQsIGFzIGlzIHRoZSBsb3dlc3QtbGF0ZW5jeSBub24tCisgICAqIHRlYXJpbmcgbW9kZS4gIElmIG5vdCwgdHJ5IElNTUVESUFURSB3aGljaCB3aWxsIHVzdWFsbHkgYmUgYXZhaWxhYmxlLAorICAgKiBhbmQgaXMgZmFzdGVzdCAodGhvdWdoIGl0IHRlYXJzKS4gIElmIG5vdCwgZmFsbCBiYWNrIHRvIEZJRk8gd2hpY2ggaXMKKyAgICogYWx3YXlzIGF2YWlsYWJsZS4gKi8KKyAgcHJlc2VudF9tb2RlID0gVktfUFJFU0VOVF9NT0RFX0ZJRk9fS0hSOworICBmb3IgKGdzaXplIGkgPSAwOyBpIDwgc3dhcHBlci0+bl9zdXJmX3ByZXNlbnRfbW9kZXM7IGkrKykgeworICAgIGlmIChzd2FwcGVyLT5zdXJmX3ByZXNlbnRfbW9kZXNbaV0gPT0gVktfUFJFU0VOVF9NT0RFX01BSUxCT1hfS0hSKSB7CisgICAgICBwcmVzZW50X21vZGUgPSBWS19QUkVTRU5UX01PREVfTUFJTEJPWF9LSFI7CisgICAgICBicmVhazsKKyAgICB9CisgICAgaWYgKChwcmVzZW50X21vZGUgIT0gVktfUFJFU0VOVF9NT0RFX01BSUxCT1hfS0hSKSAmJgorICAgICAgICAoc3dhcHBlci0+c3VyZl9wcmVzZW50X21vZGVzW2ldID09IFZLX1BSRVNFTlRfTU9ERV9JTU1FRElBVEVfS0hSKSkgeworICAgICAgcHJlc2VudF9tb2RlID0gVktfUFJFU0VOVF9NT0RFX0lNTUVESUFURV9LSFI7CisgICAgfQorICB9CisKKyAgLyogRGV0ZXJtaW5lIHRoZSBudW1iZXIgb2YgVmtJbWFnZSdzIHRvIHVzZSBpbiB0aGUgc3dhcCBjaGFpbiAod2UgZGVzaXJlIHRvCisgICAqIG93biBvbmx5IDEgaW1hZ2UgYXQgYSB0aW1lLCBiZXNpZGVzIHRoZSBpbWFnZXMgYmVpbmcgZGlzcGxheWVkIGFuZAorICAgKiBxdWV1ZWQgZm9yIGRpc3BsYXkpOiAqLworICBuX2ltYWdlc193YW50ZWQgPSBzd2FwcGVyLT5zdXJmX3Byb3BzLm1pbkltYWdlQ291bnQgKyAxOworICBpZiAoKHN3YXBwZXItPnN1cmZfcHJvcHMubWF4SW1hZ2VDb3VudCA+IDApICYmCisgICAgICAobl9pbWFnZXNfd2FudGVkID4gc3dhcHBlci0+c3VyZl9wcm9wcy5tYXhJbWFnZUNvdW50KSkgeworICAgIC8qIEFwcGxpY2F0aW9uIG11c3Qgc2V0dGxlIGZvciBmZXdlciBpbWFnZXMgdGhhbiBkZXNpcmVkOiAqLworICAgIG5faW1hZ2VzX3dhbnRlZCA9IHN3YXBwZXItPnN1cmZfcHJvcHMubWF4SW1hZ2VDb3VudDsKKyAgfQorCisgIGlmIChzd2FwcGVyLT4KKyAgICAgIHN1cmZfcHJvcHMuc3VwcG9ydGVkVHJhbnNmb3JtcyAmIFZLX1NVUkZBQ0VfVFJBTlNGT1JNX0lERU5USVRZX0JJVF9LSFIpIHsKKyAgICBwcmVUcmFuc2Zvcm0gPSBWS19TVVJGQUNFX1RSQU5TRk9STV9JREVOVElUWV9CSVRfS0hSOworICB9IGVsc2UgeworICAgIHByZVRyYW5zZm9ybSA9IHN3YXBwZXItPnN1cmZfcHJvcHMuY3VycmVudFRyYW5zZm9ybTsKKyAgfQorCisgIGZvcm1hdCA9CisgICAgICBfdmtfZm9ybWF0X2Zyb21fdmlkZW9fZm9ybWF0IChHU1RfVklERU9fSU5GT19GT1JNQVQgKCZzd2FwcGVyLT52X2luZm8pKTsKKyAgY29sb3Jfc3BhY2UgPSBfdmtfY29sb3Jfc3BhY2VfZnJvbV92aWRlb19pbmZvICgmc3dhcHBlci0+dl9pbmZvKTsKKworICBpZiAoKHN3YXBwZXItPnN1cmZfcHJvcHMuc3VwcG9ydGVkQ29tcG9zaXRlQWxwaGEgJgorICAgICAgICAgIFZLX0NPTVBPU0lURV9BTFBIQV9PUEFRVUVfQklUX0tIUikgIT0gMCkgeworICAgIGFscGhhX2ZsYWdzID0gVktfQ09NUE9TSVRFX0FMUEhBX09QQVFVRV9CSVRfS0hSOworICB9IGVsc2UgaWYgKChzd2FwcGVyLT5zdXJmX3Byb3BzLnN1cHBvcnRlZENvbXBvc2l0ZUFscGhhICYKKyAgICAgICAgICBWS19DT01QT1NJVEVfQUxQSEFfUFJFX01VTFRJUExJRURfQklUX0tIUikgIT0gMCkgeworICAgIGFscGhhX2ZsYWdzID0gVktfQ09NUE9TSVRFX0FMUEhBX1BSRV9NVUxUSVBMSUVEX0JJVF9LSFI7CisgIH0gZWxzZSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLAorICAgICAgICBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJJbmNvcnJlY3QgYWxwaGEgZmxhZ3MgYXZhaWxhYmxlIGZvciB0aGUgc3dhcCBpbWFnZXMiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoKHN3YXBwZXItPnN1cmZfcHJvcHMuc3VwcG9ydGVkVXNhZ2VGbGFncyAmCisgICAgICAgICAgVktfSU1BR0VfVVNBR0VfVFJBTlNGRVJfRFNUX0JJVCkgIT0gMCkgeworICAgIHVzYWdlIHw9IFZLX0lNQUdFX1VTQUdFX1RSQU5TRkVSX0RTVF9CSVQ7CisgIH0gZWxzZSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfVlVMS0FOX0VSUk9SLAorICAgICAgICBWS19FUlJPUl9JTklUSUFMSVpBVElPTl9GQUlMRUQsCisgICAgICAgICJJbmNvcnJlY3QgdXNhZ2UgZmxhZ3MgYXZhaWxhYmxlIGZvciB0aGUgc3dhcCBpbWFnZXMiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgaWYgKChzd2FwcGVyLT5zdXJmX3Byb3BzLgorICAgICAgICAgIHN1cHBvcnRlZFVzYWdlRmxhZ3MgJiBWS19JTUFHRV9VU0FHRV9DT0xPUl9BVFRBQ0hNRU5UX0JJVCkKKyAgICAgICE9IDApIHsKKyAgICB1c2FnZSB8PSBWS19JTUFHRV9VU0FHRV9DT0xPUl9BVFRBQ0hNRU5UX0JJVDsKKyAgfSBlbHNlIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsCisgICAgICAgIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwKKyAgICAgICAgIkluY29ycmVjdCB1c2FnZSBmbGFncyBhdmFpbGFibGUgZm9yIHRoZSBzd2FwIGltYWdlcyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHsKKyAgICBWa1N3YXBjaGFpbkNyZWF0ZUluZm9LSFIgc3dhcF9jaGFpbl9pbmZvID0geyAwLCB9OworICAgIFZrU3dhcGNoYWluS0hSIG9sZF9zd2FwX2NoYWluOworCisgICAgb2xkX3N3YXBfY2hhaW4gPSBzd2FwcGVyLT5zd2FwX2NoYWluOworCisgICAgc3dhcF9jaGFpbl9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfU1dBUENIQUlOX0NSRUFURV9JTkZPX0tIUjsKKyAgICBzd2FwX2NoYWluX2luZm8ucE5leHQgPSBOVUxMOworICAgIHN3YXBfY2hhaW5faW5mby5zdXJmYWNlID0gc3dhcHBlci0+c3VyZmFjZTsKKyAgICBzd2FwX2NoYWluX2luZm8ubWluSW1hZ2VDb3VudCA9IG5faW1hZ2VzX3dhbnRlZDsKKyAgICBzd2FwX2NoYWluX2luZm8uaW1hZ2VGb3JtYXQgPSBmb3JtYXQ7CisgICAgc3dhcF9jaGFpbl9pbmZvLmltYWdlQ29sb3JTcGFjZSA9IGNvbG9yX3NwYWNlOworICAgIHN3YXBfY2hhaW5faW5mby5pbWFnZUV4dGVudCA9IHN3YXBjaGFpbl9kaW1zOworICAgIHN3YXBfY2hhaW5faW5mby5pbWFnZUFycmF5TGF5ZXJzID0gMTsKKyAgICBzd2FwX2NoYWluX2luZm8uaW1hZ2VVc2FnZSA9IHVzYWdlOworICAgIHN3YXBfY2hhaW5faW5mby5pbWFnZVNoYXJpbmdNb2RlID0gVktfU0hBUklOR19NT0RFX0VYQ0xVU0lWRTsKKyAgICBzd2FwX2NoYWluX2luZm8ucXVldWVGYW1pbHlJbmRleENvdW50ID0gMDsKKyAgICBzd2FwX2NoYWluX2luZm8ucFF1ZXVlRmFtaWx5SW5kaWNlcyA9IE5VTEw7CisgICAgc3dhcF9jaGFpbl9pbmZvLnByZVRyYW5zZm9ybSA9IHByZVRyYW5zZm9ybTsKKyAgICBzd2FwX2NoYWluX2luZm8ucHJlc2VudE1vZGUgPSBwcmVzZW50X21vZGU7CisgICAgc3dhcF9jaGFpbl9pbmZvLmNvbXBvc2l0ZUFscGhhID0gYWxwaGFfZmxhZ3M7CisgICAgc3dhcF9jaGFpbl9pbmZvLmNsaXBwZWQgPSBUUlVFOworICAgIHN3YXBfY2hhaW5faW5mby5vbGRTd2FwY2hhaW4gPSBzd2FwcGVyLT5zd2FwX2NoYWluOworCisgICAgZXJyID0KKyAgICAgICAgc3dhcHBlci0+Q3JlYXRlU3dhcGNoYWluS0hSIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgJnN3YXBfY2hhaW5faW5mbywKKyAgICAgICAgTlVMTCwgJnN3YXBwZXItPnN3YXBfY2hhaW4pOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0NyZWF0ZVN3YXBjaGFpbktIUiIpIDwgMCkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmIChvbGRfc3dhcF9jaGFpbiAhPSBWS19OVUxMX0hBTkRMRSkgeworICAgICAgc3dhcHBlci0+RGVzdHJveVN3YXBjaGFpbktIUiAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIG9sZF9zd2FwX2NoYWluLAorICAgICAgICAgIE5VTEwpOworICAgIH0KKyAgfQorCisgIGVyciA9CisgICAgICBzd2FwcGVyLT5HZXRTd2FwY2hhaW5JbWFnZXNLSFIgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLAorICAgICAgc3dhcHBlci0+c3dhcF9jaGFpbiwgJnN3YXBwZXItPm5fc3dhcF9jaGFpbl9pbWFnZXMsIE5VTEwpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIHN3YXBfY2hhaW5faW1hZ2VzID0gZ19uZXcwIChWa0ltYWdlLCBzd2FwcGVyLT5uX3N3YXBfY2hhaW5faW1hZ2VzKTsKKyAgZXJyID0KKyAgICAgIHN3YXBwZXItPkdldFN3YXBjaGFpbkltYWdlc0tIUiAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsCisgICAgICBzd2FwcGVyLT5zd2FwX2NoYWluLCAmc3dhcHBlci0+bl9zd2FwX2NoYWluX2ltYWdlcywgc3dhcF9jaGFpbl9pbWFnZXMpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIiKSA8IDApIHsKKyAgICBnX2ZyZWUgKHN3YXBfY2hhaW5faW1hZ2VzKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlcyA9CisgICAgICBnX25ldzAgKEdzdFZ1bGthbkltYWdlTWVtb3J5ICosIHN3YXBwZXItPm5fc3dhcF9jaGFpbl9pbWFnZXMpOworICBmb3IgKGkgPSAwOyBpIDwgc3dhcHBlci0+bl9zd2FwX2NoYWluX2ltYWdlczsgaSsrKSB7CisgICAgc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXNbaV0gPSAoR3N0VnVsa2FuSW1hZ2VNZW1vcnkgKikKKyAgICAgICAgZ3N0X3Z1bGthbl9pbWFnZV9tZW1vcnlfd3JhcHBlZCAoc3dhcHBlci0+ZGV2aWNlLCBzd2FwX2NoYWluX2ltYWdlc1tpXSwKKyAgICAgICAgZm9ybWF0LCBzd2FwY2hhaW5fZGltcy53aWR0aCwgc3dhcGNoYWluX2RpbXMuaGVpZ2h0LAorICAgICAgICBWS19JTUFHRV9USUxJTkdfT1BUSU1BTCwgdXNhZ2UsIE5VTEwsIE5VTEwpOworCisgICAgaWYgKCFfc3dhcHBlcl9zZXRfaW1hZ2VfbGF5b3V0IChzd2FwcGVyLCBzd2FwcGVyLT5zd2FwX2NoYWluX2ltYWdlc1tpXSwKKyAgICAgICAgICAgIFZLX0lNQUdFX0xBWU9VVF9DT0xPUl9BVFRBQ0hNRU5UX09QVElNQUwsIGVycm9yKSkgeworICAgICAgZ19mcmVlIChzd2FwX2NoYWluX2ltYWdlcyk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9CisKKyAgZ19mcmVlIChzd2FwX2NoYWluX2ltYWdlcyk7CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19zd2FwY2hhaW5fcmVzaXplIChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlciwgR0Vycm9yICoqIGVycm9yKQoreworICBpbnQgaTsKKworICBpZiAoIXN3YXBwZXItPnF1ZXVlKSB7CisgICAgaWYgKCFfdnVsa2FuX3N3YXBwZXJfcmV0cmlldmVfc3VyZmFjZV9wcm9wZXJ0aWVzIChzd2FwcGVyLCBlcnJvcikpIHsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICBpZiAoc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXMpIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgc3dhcHBlci0+bl9zd2FwX2NoYWluX2ltYWdlczsgaSsrKSB7CisgICAgICBpZiAoc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXNbaV0pCisgICAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXNbaV0pOworICAgIH0KKyAgICBnX2ZyZWUgKHN3YXBwZXItPnN3YXBfY2hhaW5faW1hZ2VzKTsKKyAgfQorCisgIHJldHVybiBfYWxsb2NhdGVfc3dhcGNoYWluIChzd2FwcGVyLCBzd2FwcGVyLT5jYXBzLCBlcnJvcik7Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX3N3YXBwZXJfc2V0X2NhcHMgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLCBHc3RDYXBzICogY2FwcywKKyAgICBHRXJyb3IgKiogZXJyb3IpCit7CisgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmc3dhcHBlci0+dl9pbmZvLCBjYXBzKSkgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwKKyAgICAgICAgVktfRVJST1JfSU5JVElBTElaQVRJT05fRkFJTEVELAorICAgICAgICAiRmFpbGVkIHRvIGdldG8gR3N0VmlkZW9JbmZvIGZyb20gY2FwcyIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZzd2FwcGVyLT5jYXBzLCBjYXBzKTsKKworICByZXR1cm4gX3N3YXBjaGFpbl9yZXNpemUgKHN3YXBwZXIsIGVycm9yKTsKK30KKworc3RydWN0IGNtZF9kYXRhCit7CisgIFZrQ29tbWFuZEJ1ZmZlciBjbWQ7CisgIFZrRmVuY2UgZmVuY2U7CisgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeTsKKyAgZ3BvaW50ZXIgZGF0YTsKK307CisKK3N0YXRpYyBnYm9vbGVhbgorX2J1aWxkX3JlbmRlcl9idWZmZXJfY21kIChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlciwgZ3VpbnQzMiBzd2FwX2lkeCwKKyAgICBHc3RCdWZmZXIgKiBidWZmZXIsIHN0cnVjdCBjbWRfZGF0YSAqY21kX2RhdGEsIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0VnVsa2FuQnVmZmVyTWVtb3J5ICpidWZfbWVtOworICBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqc3dhcF9tZW07CisgIFZrQ29tbWFuZEJ1ZmZlciBjbWQ7CisgIFZrUmVzdWx0IGVycjsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3dhcF9pZHggPCBzd2FwcGVyLT5uX3N3YXBfY2hhaW5faW1hZ2VzLCBGQUxTRSk7CisgIHN3YXBfbWVtID0gc3dhcHBlci0+c3dhcF9jaGFpbl9pbWFnZXNbc3dhcF9pZHhdOworCisgIGNtZF9kYXRhLT5ub3RpZnkgPSBOVUxMOworCisgIGlmICghZ3N0X3Z1bGthbl9kZXZpY2VfY3JlYXRlX2NtZF9idWZmZXIgKHN3YXBwZXItPmRldmljZSwgJmNtZCwgZXJyb3IpKQorICAgIHJldHVybiBGQUxTRTsKKworICBidWZfbWVtID0gKEdzdFZ1bGthbkJ1ZmZlck1lbW9yeSAqKSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5IChidWZmZXIsIDApOworCisgIHsKKyAgICBWa0NvbW1hbmRCdWZmZXJJbmhlcml0YW5jZUluZm8gYnVmX2luaCA9IHsgMCwgfTsKKyAgICBWa0NvbW1hbmRCdWZmZXJCZWdpbkluZm8gY21kX2J1Zl9pbmZvID0geyAwLCB9OworCisgICAgYnVmX2luaC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX0NPTU1BTkRfQlVGRkVSX0lOSEVSSVRBTkNFX0lORk87CisgICAgYnVmX2luaC5wTmV4dCA9IE5VTEw7CisgICAgYnVmX2luaC5yZW5kZXJQYXNzID0gVktfTlVMTF9IQU5ETEU7CisgICAgYnVmX2luaC5zdWJwYXNzID0gMDsKKyAgICBidWZfaW5oLmZyYW1lYnVmZmVyID0gVktfTlVMTF9IQU5ETEU7CisgICAgYnVmX2luaC5vY2NsdXNpb25RdWVyeUVuYWJsZSA9IEZBTFNFOworICAgIGJ1Zl9pbmgucXVlcnlGbGFncyA9IDA7CisgICAgYnVmX2luaC5waXBlbGluZVN0YXRpc3RpY3MgPSAwOworCisgICAgY21kX2J1Zl9pbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfQ09NTUFORF9CVUZGRVJfQkVHSU5fSU5GTzsKKyAgICBjbWRfYnVmX2luZm8ucE5leHQgPSBOVUxMOworICAgIGNtZF9idWZfaW5mby5mbGFncyA9IFZLX0NPTU1BTkRfQlVGRkVSX1VTQUdFX09ORV9USU1FX1NVQk1JVF9CSVQ7CisgICAgY21kX2J1Zl9pbmZvLnBJbmhlcml0YW5jZUluZm8gPSAmYnVmX2luaDsKKworICAgIGVyciA9IHZrQmVnaW5Db21tYW5kQnVmZmVyIChjbWQsICZjbWRfYnVmX2luZm8pOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0JlZ2luQ29tbWFuZEJ1ZmZlciIpIDwgMCkKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghX3N3YXBwZXJfc2V0X2ltYWdlX2xheW91dF93aXRoX2NtZCAoc3dhcHBlciwgY21kLCBzd2FwX21lbSwKKyAgICAgICAgICBWS19JTUFHRV9MQVlPVVRfVFJBTlNGRVJfRFNUX09QVElNQUwsIGVycm9yKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHsKKyAgICBWa0J1ZmZlckltYWdlQ29weSByZWdpb24gPSB7IDAsIH07CisgICAgZ3VpbnQzMiBkc3Rfd2lkdGggPSBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9nZXRfd2lkdGggKHN3YXBfbWVtKTsKKyAgICBndWludDMyIGRzdF9oZWlnaHQgPSBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9nZXRfaGVpZ2h0IChzd2FwX21lbSk7CisgICAgZ3VpbnQgc3JjX3dpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZzd2FwcGVyLT52X2luZm8pOworICAgIGd1aW50IHNyY19oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZzd2FwcGVyLT52X2luZm8pOworICAgIGd1aW50IHgsIHk7CisKKyAgICBpZiAoc3JjX3dpZHRoICE9IGRzdF93aWR0aCB8fCBzcmNfaGVpZ2h0ICE9IGRzdF9oZWlnaHQpIHsKKy8qIEZJWE1FOiBicm9rZW4gd2l0aCBMdW5hckcncyBkcml2ZXIKKyAgICAgIHggPSAoc3JjX3dpZHRoIC0gZHN0X3dpZHRoKSAvIDI7CisgICAgICB5ID0gKHNyY19oZWlnaHQgLSBkc3RfaGVpZ2h0KSAvIDI7Ki8KKyAgICAgIHggPSB5ID0gMDsKKyAgICB9IGVsc2UgeworICAgICAgeCA9IHkgPSAwOworICAgIH0KKyAgICAvKiBGSVhNRTogc2NhbGUgcmVjdCAqLworICAgIEdTVF9WS19CVUZGRVJfSU1BR0VfQ09QWSAocmVnaW9uLCAwLCBzcmNfd2lkdGgsIHNyY19oZWlnaHQsCisgICAgICAgIEdTVF9WS19JTUFHRV9TVUJSRVNPVVJDRV9MQVlFUlNfSU5JVCAoVktfSU1BR0VfQVNQRUNUX0NPTE9SX0JJVCwgMCwgMCwKKyAgICAgICAgICAgIDEpLCBHU1RfVktfT0ZGU0VUM0RfSU5JVCAoeCwgeSwgMCksIEdTVF9WS19FWFRFTlQzRF9JTklUIChzcmNfd2lkdGgsCisgICAgICAgICAgICBzcmNfaGVpZ2h0LCAxKSk7CisKKyAgICB2a0NtZENvcHlCdWZmZXJUb0ltYWdlIChjbWQsIGJ1Zl9tZW0tPmJ1ZmZlciwgc3dhcF9tZW0tPmltYWdlLAorICAgICAgICBzd2FwX21lbS0+aW1hZ2VfbGF5b3V0LCAxLCAmcmVnaW9uKTsKKyAgfQorCisgIGlmICghX3N3YXBwZXJfc2V0X2ltYWdlX2xheW91dF93aXRoX2NtZCAoc3dhcHBlciwgY21kLCBzd2FwX21lbSwKKyAgICAgICAgICBWS19JTUFHRV9MQVlPVVRfUFJFU0VOVF9TUkNfS0hSLCBlcnJvcikpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBlcnIgPSB2a0VuZENvbW1hbmRCdWZmZXIgKGNtZCk7CisgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a0VuZENvbW1hbmRCdWZmZXIiKSA8IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIGNtZF9kYXRhLT5jbWQgPSBjbWQ7CisgIGNtZF9kYXRhLT5ub3RpZnkgPSBOVUxMOworCisgIGlmICghX25ld19mZW5jZSAoc3dhcHBlci0+ZGV2aWNlLCAmY21kX2RhdGEtPmZlbmNlLCBlcnJvcikpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitfcmVuZGVyX2J1ZmZlcl91bmxvY2tlZCAoR3N0VnVsa2FuU3dhcHBlciAqIHN3YXBwZXIsCisgICAgR3N0QnVmZmVyICogYnVmZmVyLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIFZrU2VtYXBob3JlIHNlbWFwaG9yZSA9IHsgMCwgfTsKKyAgVmtTZW1hcGhvcmVDcmVhdGVJbmZvIHNlbWFwaG9yZV9pbmZvID0geyAwLCB9OworICBWa1ByZXNlbnRJbmZvS0hSIHByZXNlbnQ7CisgIHN0cnVjdCBjbWRfZGF0YSBjbWRfZGF0YSA9IHsgMCwgfTsKKyAgZ3VpbnQzMiBzd2FwX2lkeDsKKyAgVmtSZXN1bHQgZXJyLCBwcmVzZW50X2VycjsKKworICBzZW1hcGhvcmVfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX1NFTUFQSE9SRV9DUkVBVEVfSU5GTzsKKyAgc2VtYXBob3JlX2luZm8ucE5leHQgPSBOVUxMOworICBzZW1hcGhvcmVfaW5mby5mbGFncyA9IDA7CisKKyAgaWYgKCFidWZmZXIpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsCisgICAgICAgIFZLX0VSUk9SX0lOSVRJQUxJWkFUSU9OX0ZBSUxFRCwgIkludmFsaWQgYnVmZmVyIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGlmIChnX2F0b21pY19pbnRfZ2V0ICgmc3dhcHBlci0+dG9fcXVpdCkpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX1NVUkZBQ0VfTE9TVF9LSFIsCisgICAgICAgICJPdXRwdXQgd2luZG93IHdhcyBjbG9zZWQiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmc3dhcHBlci0+Y3VycmVudF9idWZmZXIsIGJ1ZmZlcik7CisKK3JlYWNxdWlyZToKKyAgZXJyID0gdmtDcmVhdGVTZW1hcGhvcmUgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCAmc2VtYXBob3JlX2luZm8sCisgICAgICBOVUxMLCAmc2VtYXBob3JlKTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrQ3JlYXRlU2VtYXBob3JlIikgPCAwKQorICAgIGdvdG8gZXJyb3I7CisKKyAgZXJyID0KKyAgICAgIHN3YXBwZXItPkFjcXVpcmVOZXh0SW1hZ2VLSFIgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLAorICAgICAgc3dhcHBlci0+c3dhcF9jaGFpbiwgLTEsIHNlbWFwaG9yZSwgVktfTlVMTF9IQU5ETEUsICZzd2FwX2lkeCk7CisgIC8qIFRPRE86IERlYWwgd2l0aCB0aGUgVktfU1VCT1BUSU1BTF9LSFIgYW5kIFZLX0VSUk9SX09VVF9PRl9EQVRFX0tIUiAqLworICBpZiAoZXJyID09IFZLX0VSUk9SX09VVF9PRl9EQVRFX0tIUikgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN3YXBwZXIsICJvdXQgb2YgZGF0ZSBmcmFtZSBhY3F1aXJlZCIpOworCisgICAgdmtEZXN0cm95U2VtYXBob3JlIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgc2VtYXBob3JlLCBOVUxMKTsKKyAgICBpZiAoIV9zd2FwY2hhaW5fcmVzaXplIChzd2FwcGVyLCBlcnJvcikpCisgICAgICBnb3RvIGVycm9yOworICAgIGdvdG8gcmVhY3F1aXJlOworICB9IGVsc2UgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwKKyAgICAgICAgICAidmtBY3F1aXJlTmV4dEltYWdlS0hSIikgPCAwKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGlmICghX2J1aWxkX3JlbmRlcl9idWZmZXJfY21kIChzd2FwcGVyLCBzd2FwX2lkeCwgYnVmZmVyLCAmY21kX2RhdGEsIGVycm9yKSkKKyAgICBnb3RvIGVycm9yOworCisgIHsKKyAgICBWa1N1Ym1pdEluZm8gc3VibWl0X2luZm8gPSB7IDAsIH07CisKKyAgICBzdWJtaXRfaW5mby5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX1NVQk1JVF9JTkZPOworICAgIHN1Ym1pdF9pbmZvLnBOZXh0ID0gTlVMTDsKKyAgICBzdWJtaXRfaW5mby53YWl0U2VtYXBob3JlQ291bnQgPSAxOworICAgIHN1Ym1pdF9pbmZvLnBXYWl0U2VtYXBob3JlcyA9ICZzZW1hcGhvcmU7CisgICAgc3VibWl0X2luZm8uY29tbWFuZEJ1ZmZlckNvdW50ID0gMTsKKyAgICBzdWJtaXRfaW5mby5wQ29tbWFuZEJ1ZmZlcnMgPSAmY21kX2RhdGEuY21kOworICAgIHN1Ym1pdF9pbmZvLnNpZ25hbFNlbWFwaG9yZUNvdW50ID0gMDsKKyAgICBzdWJtaXRfaW5mby5wU2lnbmFsU2VtYXBob3JlcyA9IE5VTEw7CisKKyAgICBlcnIgPQorICAgICAgICB2a1F1ZXVlU3VibWl0IChzd2FwcGVyLT5xdWV1ZS0+cXVldWUsIDEsICZzdWJtaXRfaW5mbywgY21kX2RhdGEuZmVuY2UpOworICAgIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a1F1ZXVlU3VibWl0IikgPCAwKSB7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9CisKKyAgcHJlc2VudC5zVHlwZSA9IFZLX1NUUlVDVFVSRV9UWVBFX1BSRVNFTlRfSU5GT19LSFI7CisgIHByZXNlbnQucE5leHQgPSBOVUxMOworICBwcmVzZW50LndhaXRTZW1hcGhvcmVDb3VudCA9IDA7CisgIHByZXNlbnQucFdhaXRTZW1hcGhvcmVzID0gTlVMTDsKKyAgcHJlc2VudC5zd2FwY2hhaW5Db3VudCA9IDE7CisgIHByZXNlbnQucFN3YXBjaGFpbnMgPSAmc3dhcHBlci0+c3dhcF9jaGFpbjsKKyAgcHJlc2VudC5wSW1hZ2VJbmRpY2VzID0gJnN3YXBfaWR4OworICBwcmVzZW50LnBSZXN1bHRzID0gJnByZXNlbnRfZXJyOworCisgIGVyciA9IHN3YXBwZXItPlF1ZXVlUHJlc2VudEtIUiAoc3dhcHBlci0+cXVldWUtPnF1ZXVlLCAmcHJlc2VudCk7CisgIGlmIChlcnIgPT0gVktfRVJST1JfT1VUX09GX0RBVEVfS0hSKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc3dhcHBlciwgIm91dCBvZiBkYXRlIGZyYW1lIHN1Ym1pdHRlZCIpOworCisgICAgaWYgKCFfc3dhcGNoYWluX3Jlc2l6ZSAoc3dhcHBlciwgZXJyb3IpKQorICAgICAgZ290byBlcnJvcjsKKyAgfSBlbHNlIGlmIChnc3RfdnVsa2FuX2Vycm9yX3RvX2dfZXJyb3IgKGVyciwgZXJyb3IsICJ2a1F1ZXVlUHJlc2VudEtIUiIpIDwgMCkKKyAgICBnb3RvIGVycm9yOworCisgIGVyciA9IHZrV2FpdEZvckZlbmNlcyAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIDEsICZjbWRfZGF0YS5mZW5jZSwgVFJVRSwgLTEpOworICBpZiAoZ3N0X3Z1bGthbl9lcnJvcl90b19nX2Vycm9yIChlcnIsIGVycm9yLCAidmtXYWl0Rm9yRmVuY2VzIikgPCAwKQorICAgIGdvdG8gZXJyb3I7CisKKyAgaWYgKHNlbWFwaG9yZSkKKyAgICB2a0Rlc3Ryb3lTZW1hcGhvcmUgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCBzZW1hcGhvcmUsIE5VTEwpOworICBpZiAoY21kX2RhdGEuY21kKQorICAgIHZrRnJlZUNvbW1hbmRCdWZmZXJzIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgc3dhcHBlci0+ZGV2aWNlLT5jbWRfcG9vbCwKKyAgICAgICAgMSwgJmNtZF9kYXRhLmNtZCk7CisgIGlmIChjbWRfZGF0YS5mZW5jZSkKKyAgICB2a0Rlc3Ryb3lGZW5jZSAoc3dhcHBlci0+ZGV2aWNlLT5kZXZpY2UsIGNtZF9kYXRhLmZlbmNlLCBOVUxMKTsKKyAgaWYgKGNtZF9kYXRhLm5vdGlmeSkKKyAgICBjbWRfZGF0YS5ub3RpZnkgKGNtZF9kYXRhLmRhdGEpOworICByZXR1cm4gVFJVRTsKKworZXJyb3I6CisgIHsKKyAgICBpZiAoc2VtYXBob3JlKQorICAgICAgdmtEZXN0cm95U2VtYXBob3JlIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgc2VtYXBob3JlLCBOVUxMKTsKKyAgICBpZiAoY21kX2RhdGEuY21kKQorICAgICAgdmtGcmVlQ29tbWFuZEJ1ZmZlcnMgKHN3YXBwZXItPmRldmljZS0+ZGV2aWNlLCBzd2FwcGVyLT5kZXZpY2UtPmNtZF9wb29sLAorICAgICAgICAgIDEsICZjbWRfZGF0YS5jbWQpOworICAgIGlmIChjbWRfZGF0YS5mZW5jZSkKKyAgICAgIHZrRGVzdHJveUZlbmNlIChzd2FwcGVyLT5kZXZpY2UtPmRldmljZSwgY21kX2RhdGEuZmVuY2UsIE5VTEwpOworICAgIGlmIChjbWRfZGF0YS5ub3RpZnkpCisgICAgICBjbWRfZGF0YS5ub3RpZnkgKGNtZF9kYXRhLmRhdGEpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9zd2FwcGVyX3JlbmRlcl9idWZmZXIgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgR0Vycm9yICoqIGVycm9yKQoreworICBHc3RNZW1vcnkgKm1lbTsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkgKGJ1ZmZlciwgMCk7CisgIGlmICghbWVtKSB7CisgICAgZ19zZXRfZXJyb3JfbGl0ZXJhbCAoZXJyb3IsIEdTVF9WVUxLQU5fRVJST1IsIFZLX0VSUk9SX0ZPUk1BVF9OT1RfU1VQUE9SVEVELAorICAgICAgICAiQnVmZmVyIGhhcyBubyBtZW1vcnkiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgaWYgKCFnc3RfaXNfdnVsa2FuX2J1ZmZlcl9tZW1vcnkgKG1lbSkpIHsKKyAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR1NUX1ZVTEtBTl9FUlJPUiwgVktfRVJST1JfRk9STUFUX05PVF9TVVBQT1JURUQsCisgICAgICAgICJJbmNvcnJlY3QgbWVtb3J5IHR5cGUiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBSRU5ERVJfTE9DSyAoc3dhcHBlcik7CisgIHJldCA9IF9yZW5kZXJfYnVmZmVyX3VubG9ja2VkIChzd2FwcGVyLCBidWZmZXIsIGVycm9yKTsKKyAgUkVOREVSX1VOTE9DSyAoc3dhcHBlcik7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK19vbl93aW5kb3dfZHJhdyAoR3N0VnVsa2FuV2luZG93ICogd2luZG93LCBHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlcikKK3sKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgUkVOREVSX0xPQ0sgKHN3YXBwZXIpOworICBpZiAoIXN3YXBwZXItPmN1cnJlbnRfYnVmZmVyKSB7CisgICAgUkVOREVSX1VOTE9DSyAoc3dhcHBlcik7CisgICAgcmV0dXJuOworICB9CisKKyAgLyogVE9ETzogcGVyZm9ybSBzb21lIHJhdGUgbGltaXRpbmcgb2YgdGhlIG51bWJlciBvZiByZWRyYXcgZXZlbnRzICovCisgIGlmICghX3JlbmRlcl9idWZmZXJfdW5sb2NrZWQgKHN3YXBwZXIsIHN3YXBwZXItPmN1cnJlbnRfYnVmZmVyLCAmZXJyb3IpKQorICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN3YXBwZXIsICJGYWlsZWQgdG8gcmVkcmF3IGJ1ZmZlciAlcCAlcyIsCisgICAgICAgIHN3YXBwZXItPmN1cnJlbnRfYnVmZmVyLCBlcnJvci0+bWVzc2FnZSk7CisgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgIFJFTkRFUl9VTkxPQ0sgKHN3YXBwZXIpOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3N3YXBwZXIuaCBiL2V4dC92dWxrYW4vdmtzd2FwcGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ4NjAzNgotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmtzd2FwcGVyLmgKQEAgLTAsMCArMSwxMDQgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfU1dBUFBFUl9IXworI2RlZmluZSBfVktfU1dBUFBFUl9IXworCisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisKKyNpbmNsdWRlIDx2ay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX1NXQVBQRVIgICAgICAgICAoZ3N0X3Z1bGthbl9zd2FwcGVyX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fU1dBUFBFUihvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX1RZUEVfVlVMS0FOX1NXQVBQRVIsIEdzdFZ1bGthblN3YXBwZXIpKQorI2RlZmluZSBHU1RfVlVMS0FOX1NXQVBQRVJfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoayksIEdTVF9UWVBFX1ZVTEtBTl9TV0FQUEVSLCBHc3RWdWxrYW5Td2FwcGVyQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1NXQVBQRVIobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9UWVBFX1ZVTEtBTl9TV0FQUEVSKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9TV0FQUEVSX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfVFlQRV9WVUxLQU5fU1dBUFBFUikpCisjZGVmaW5lIEdTVF9WVUxLQU5fU1dBUFBFUl9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfVFlQRV9WVUxLQU5fU1dBUFBFUiwgR3N0VnVsa2FuU3dhcHBlckNsYXNzKSkKK0dUeXBlIGdzdF92dWxrYW5fc3dhcHBlcl9nZXRfdHlwZSAgICAgICAodm9pZCk7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9TV0FQUEVSX1ZJREVPX0ZPUk1BVFMgIiB7IFJHQkEsIEJHUkEsIFJHQiwgQkdSIH0gIgorCitzdHJ1Y3QgX0dzdFZ1bGthblN3YXBwZXIKK3sKKyAgR3N0T2JqZWN0IHBhcmVudDsKKworICBHc3RWdWxrYW5EZXZpY2UgKmRldmljZTsKKyAgR3N0VnVsa2FuV2luZG93ICp3aW5kb3c7CisgIEdzdFZ1bGthblF1ZXVlICpxdWV1ZTsKKworICBWa1N1cmZhY2VLSFIgICAgc3VyZmFjZTsKKworICBWa1N1cmZhY2VDYXBhYmlsaXRpZXNLSFIgc3VyZl9wcm9wczsKKyAgVmtTdXJmYWNlRm9ybWF0S0hSICpzdXJmX2Zvcm1hdHM7CisgIGd1aW50MzIgbl9zdXJmX2Zvcm1hdHM7CisgIFZrUHJlc2VudE1vZGVLSFIgKnN1cmZfcHJlc2VudF9tb2RlczsKKyAgZ3VpbnQzMiBuX3N1cmZfcHJlc2VudF9tb2RlczsKKworICBWa1N3YXBjaGFpbktIUiBzd2FwX2NoYWluOworICBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqKnN3YXBfY2hhaW5faW1hZ2VzOworICBndWludDMyIG5fc3dhcF9jaGFpbl9pbWFnZXM7CisKKyAgR3N0Q2FwcyAqY2FwczsKKyAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKKworICBQRk5fdmtHZXRQaHlzaWNhbERldmljZVN1cmZhY2VTdXBwb3J0S0hSIEdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVN1cHBvcnRLSFI7CisgIFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUNhcGFiaWxpdGllc0tIUiBHZXRQaHlzaWNhbERldmljZVN1cmZhY2VDYXBhYmlsaXRpZXNLSFI7CisgIFBGTl92a0dldFBoeXNpY2FsRGV2aWNlU3VyZmFjZUZvcm1hdHNLSFIgR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlRm9ybWF0c0tIUjsKKyAgUEZOX3ZrR2V0UGh5c2ljYWxEZXZpY2VTdXJmYWNlUHJlc2VudE1vZGVzS0hSIEdldFBoeXNpY2FsRGV2aWNlU3VyZmFjZVByZXNlbnRNb2Rlc0tIUjsKKyAgUEZOX3ZrQ3JlYXRlU3dhcGNoYWluS0hSIENyZWF0ZVN3YXBjaGFpbktIUjsKKyAgUEZOX3ZrRGVzdHJveVN3YXBjaGFpbktIUiBEZXN0cm95U3dhcGNoYWluS0hSOworICBQRk5fdmtHZXRTd2FwY2hhaW5JbWFnZXNLSFIgR2V0U3dhcGNoYWluSW1hZ2VzS0hSOworICBQRk5fdmtBY3F1aXJlTmV4dEltYWdlS0hSIEFjcXVpcmVOZXh0SW1hZ2VLSFI7CisgIFBGTl92a1F1ZXVlUHJlc2VudEtIUiBRdWV1ZVByZXNlbnRLSFI7CisKKyAgLyogPHByaXZhdGU+ICovCisgIC8qIHJ1bnRpbWUgdmFyaWFibGVzICovCisgIGdpbnQgdG9fcXVpdDsKKyAgR3N0QnVmZmVyICpjdXJyZW50X2J1ZmZlcjsKKworICAvKiBzaWduYWwgaGFuZGxlcnMgKi8KKyAgZ3Vsb25nIGNsb3NlX2lkOworICBndWxvbmcgZHJhd19pZDsKKworICBHc3RWdWxrYW5Td2FwcGVyUHJpdmF0ZSAqcHJpdjsKK307CisKK3N0cnVjdCBfR3N0VnVsa2FuU3dhcHBlckNsYXNzCit7CisgIEdzdE9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dzdFZ1bGthblN3YXBwZXIgKiAgZ3N0X3Z1bGthbl9zd2FwcGVyX25ldyAgICAgICAgICAgICAgICAgICAgICAoR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpOworCitHc3RDYXBzICogICAgICAgICAgIGdzdF92dWxrYW5fc3dhcHBlcl9nZXRfc3VwcG9ydGVkX2NhcHMgICAgICAgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyb3IpOworZ2Jvb2xlYW4gICAgICAgICAgICBnc3RfdnVsa2FuX3N3YXBwZXJfc2V0X2NhcHMgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5Td2FwcGVyICogc3dhcHBlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAqIGNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CitnYm9vbGVhbiAgICAgICAgICAgIGdzdF92dWxrYW5fc3dhcHBlcl9yZW5kZXJfYnVmZmVyICAgICAgICAgICAgKEdzdFZ1bGthblN3YXBwZXIgKiBzd2FwcGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKiBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfVktfSU5TVEFOQ0VfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmt1cGxvYWQuYyBiL2V4dC92dWxrYW4vdmt1cGxvYWQuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NWMzNmNmCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a3VwbG9hZC5jCkBAIC0wLDAgKzEsODI5IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjplbGVtZW50LXZ1bGthbnVwbG9hZAorICoKKyAqIHZ1bGthbnVwbG9hZCB1cGxvYWRzIGRhdGEgaW50byBWdWxrYW4gbWVtb3J5IG9iamVjdHMuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlICJ2a3VwbG9hZC5oIgorCitHU1RfREVCVUdfQ0FURUdPUlkgKGdzdF9kZWJ1Z192dWxrYW5fdXBsb2FkKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9kZWJ1Z192dWxrYW5fdXBsb2FkCisKK3N0YXRpYyBHc3RDYXBzICoKK19zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjb25zdCBHc3RDYXBzICogY2FwcywKKyAgICBjb25zdCBnY2hhciAqIGZlYXR1cmVfbmFtZSwgR3N0Q2Fwc0ZlYXR1cmVzICogcGFzc3Rocm91Z2gpCit7CisgIGd1aW50IGksIGosIG0sIG47CisgIEdzdENhcHMgKnRtcDsKKworICB0bXAgPSBnc3RfY2Fwc19jb3B5IChjYXBzKTsKKworICBuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpOworICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlcywgKm9yaWdfZmVhdHVyZXM7CisKKyAgICBvcmlnX2ZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChjYXBzLCBpKTsKKyAgICBmZWF0dXJlcyA9IGdzdF9jYXBzX2ZlYXR1cmVzX25ldyAoZmVhdHVyZV9uYW1lLCBOVUxMKTsKKworICAgIG0gPSBnc3RfY2Fwc19mZWF0dXJlc19nZXRfc2l6ZSAob3JpZ19mZWF0dXJlcyk7CisgICAgZm9yIChqID0gMDsgaiA8IG07IGorKykgeworICAgICAgY29uc3QgZ2NoYXIgKmZlYXR1cmUgPSBnc3RfY2Fwc19mZWF0dXJlc19nZXRfbnRoIChvcmlnX2ZlYXR1cmVzLCBqKTsKKworICAgICAgLyogaWYgd2UgYWxyZWFkeSBoYXZlIHRoZSBmZWF0dXJlcyAqLworICAgICAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywgZmVhdHVyZSkpCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoZ19zdHJjbXAwIChmZWF0dXJlLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9TWVNURU1fTUVNT1JZKSA9PSAwKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKHBhc3N0aHJvdWdoICYmIGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChwYXNzdGhyb3VnaCwgZmVhdHVyZSkpIHsKKyAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfYWRkIChmZWF0dXJlcywgZmVhdHVyZSk7CisgICAgICB9CisgICAgfQorCisgICAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzICh0bXAsIGksIGZlYXR1cmVzKTsKKyAgfQorCisgIHJldHVybiB0bXA7Cit9CisKK3N0cnVjdCBCdWZmZXJVcGxvYWQKK3sKKyAgR3N0VnVsa2FuVXBsb2FkICp1cGxvYWQ7Cit9OworCitzdGF0aWMgZ3BvaW50ZXIKK19idWZmZXJfbmV3X2ltcGwgKEdzdFZ1bGthblVwbG9hZCAqIHVwbG9hZCkKK3sKKyAgc3RydWN0IEJ1ZmZlclVwbG9hZCAqcmF3ID0gZ19uZXcwIChzdHJ1Y3QgQnVmZmVyVXBsb2FkLCAxKTsKKworICByYXctPnVwbG9hZCA9IHVwbG9hZDsKKworICByZXR1cm4gcmF3OworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitfYnVmZmVyX3RyYW5zZm9ybV9jYXBzIChncG9pbnRlciBpbXBsLCBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLAorICAgIEdzdENhcHMgKiBjYXBzKQoreworICByZXR1cm4gZ3N0X2NhcHNfcmVmIChjYXBzKTsKK30KKworc3RhdGljIGdib29sZWFuCitfYnVmZmVyX3NldF9jYXBzIChncG9pbnRlciBpbXBsLCBHc3RDYXBzICogaW5fY2FwcywgR3N0Q2FwcyAqIG91dF9jYXBzKQoreworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK19idWZmZXJfcHJvcG9zZV9hbGxvY2F0aW9uIChncG9pbnRlciBpbXBsLCBHc3RRdWVyeSAqIGRlY2lkZV9xdWVyeSwKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBzdHJ1Y3QgQnVmZmVyVXBsb2FkICpyYXcgPSBpbXBsOworICBnYm9vbGVhbiBuZWVkX3Bvb2w7CisgIEdzdENhcHMgKmNhcHM7CisgIGd1aW50IHNpemU7CisKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2FsbG9jYXRpb24gKHF1ZXJ5LCAmY2FwcywgJm5lZWRfcG9vbCk7CisKKyAgaWYgKGNhcHMgPT0gTlVMTCkKKyAgICByZXR1cm47CisKKyAgaWYgKG5lZWRfcG9vbCkgeworICAgIEdzdEJ1ZmZlclBvb2wgKnBvb2w7CisgICAgR3N0U3RydWN0dXJlICpjb25maWc7CisgICAgR3N0VmlkZW9JbmZvIGluZm87CisKKyAgICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpKQorICAgICAgcmV0dXJuOworCisgICAgLyogdGhlIG5vcm1hbCBzaXplIG9mIGEgZnJhbWUgKi8KKyAgICBzaXplID0gaW5mby5zaXplOworCisgICAgcG9vbCA9IGdzdF92dWxrYW5fYnVmZmVyX3Bvb2xfbmV3IChyYXctPnVwbG9hZC0+ZGV2aWNlKTsKKworICAgIGNvbmZpZyA9IGdzdF9idWZmZXJfcG9vbF9nZXRfY29uZmlnIChwb29sKTsKKyAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9wYXJhbXMgKGNvbmZpZywgY2Fwcywgc2l6ZSwgMCwgMCk7CisKKyAgICBpZiAoIWdzdF9idWZmZXJfcG9vbF9zZXRfY29uZmlnIChwb29sLCBjb25maWcpKSB7CisgICAgICBnX29iamVjdF91bnJlZiAocG9vbCk7CisgICAgICByZXR1cm47CisgICAgfQorCisgICAgZ3N0X3F1ZXJ5X2FkZF9hbGxvY2F0aW9uX3Bvb2wgKHF1ZXJ5LCBwb29sLCBzaXplLCAxLCAwKTsKKyAgICBnX29iamVjdF91bnJlZiAocG9vbCk7CisgIH0KKworICByZXR1cm47Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitfYnVmZmVyX3BlcmZvcm0gKGdwb2ludGVyIGltcGwsIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiogb3V0YnVmKQoreworICBpZiAoIWdzdF9pc192dWxrYW5fYnVmZmVyX21lbW9yeSAoZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAoaW5idWYsIDApKSkKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisKKyAgKm91dGJ1ZiA9IGluYnVmOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIHZvaWQKK19idWZmZXJfZnJlZSAoZ3BvaW50ZXIgaW1wbCkKK3sKKyAgZ19mcmVlIChpbXBsKTsKK30KKworc3RhdGljIEdzdFN0YXRpY0NhcHMgX2J1ZmZlcl9pbl90ZW1wbCA9CitHU1RfU1RBVElDX0NBUFMgKCJ2aWRlby94LXJhdygiIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1ZVTEtBTl9CVUZGRVIgIikiKTsKK3N0YXRpYyBHc3RTdGF0aWNDYXBzIF9idWZmZXJfb3V0X3RlbXBsID0KK0dTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfVlVMS0FOX0JVRkZFUiAiKSIpOworCitzdGF0aWMgY29uc3Qgc3RydWN0IFVwbG9hZE1ldGhvZCBidWZmZXJfdXBsb2FkID0geworICAiVnVsa2FuQnVmZmVyIiwKKyAgJl9idWZmZXJfaW5fdGVtcGwsCisgICZfYnVmZmVyX291dF90ZW1wbCwKKyAgX2J1ZmZlcl9uZXdfaW1wbCwKKyAgX2J1ZmZlcl90cmFuc2Zvcm1fY2FwcywKKyAgX2J1ZmZlcl9zZXRfY2FwcywKKyAgX2J1ZmZlcl9wcm9wb3NlX2FsbG9jYXRpb24sCisgIF9idWZmZXJfcGVyZm9ybSwKKyAgX2J1ZmZlcl9mcmVlLAorfTsKKworc3RydWN0IFJhd1RvQnVmZmVyVXBsb2FkCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdXBsb2FkOworCisgIEdzdFZpZGVvSW5mbyBpbl9pbmZvOworICBHc3RWaWRlb0luZm8gb3V0X2luZm87CisKKyAgR3N0QnVmZmVyUG9vbCAqcG9vbDsKKyAgZ2Jvb2xlYW4gcG9vbF9hY3RpdmU7CisKKyAgZ3NpemUgYWxsb2Nfc2l6ZXNbR1NUX1ZJREVPX01BWF9QTEFORVNdOworfTsKKworc3RhdGljIGdwb2ludGVyCitfcmF3X3RvX2J1ZmZlcl9uZXdfaW1wbCAoR3N0VnVsa2FuVXBsb2FkICogdXBsb2FkKQoreworICBzdHJ1Y3QgUmF3VG9CdWZmZXJVcGxvYWQgKnJhdyA9IGdfbmV3MCAoc3RydWN0IFJhd1RvQnVmZmVyVXBsb2FkLCAxKTsKKworICByYXctPnVwbG9hZCA9IHVwbG9hZDsKKworICByZXR1cm4gcmF3OworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitfcmF3X3RvX2J1ZmZlcl90cmFuc2Zvcm1fY2FwcyAoZ3BvaW50ZXIgaW1wbCwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwKKyAgICBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0Q2FwcyAqcmV0OworCisgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7CisgICAgcmV0ID0KKyAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1ZVTEtBTl9CVUZGRVIsIE5VTEwpOworICB9IGVsc2UgeworICAgIHJldCA9CisgICAgICAgIF9zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjYXBzLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9TWVNURU1fTUVNT1JZLCBOVUxMKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3Jhd190b19idWZmZXJfc2V0X2NhcHMgKGdwb2ludGVyIGltcGwsIEdzdENhcHMgKiBpbl9jYXBzLCBHc3RDYXBzICogb3V0X2NhcHMpCit7CisgIHN0cnVjdCBSYXdUb0J1ZmZlclVwbG9hZCAqcmF3ID0gaW1wbDsKKyAgZ3VpbnQgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0OworICBndWludCBpOworCisgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmcmF3LT5pbl9pbmZvLCBpbl9jYXBzKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZyYXctPm91dF9pbmZvLCBvdXRfY2FwcykpCisgICAgcmV0dXJuIEZBTFNFOworCisgIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmcmF3LT5vdXRfaW5mbyk7CisgIG91dF9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZyYXctPm91dF9pbmZvKTsKKworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZyYXctPm91dF9pbmZvKTsgaSsrKSB7CisgICAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZyYXctPm91dF9pbmZvKTsKKyAgICBHc3RWdWxrYW5JbWFnZU1lbW9yeSAqaW1nX21lbTsKKyAgICBWa0Zvcm1hdCB2a19mb3JtYXQ7CisKKyAgICB2a19mb3JtYXQgPSBnc3RfdnVsa2FuX2Zvcm1hdF9mcm9tX3ZpZGVvX2Zvcm1hdCAodl9mb3JtYXQsIGkpOworCisgICAgaW1nX21lbSA9IChHc3RWdWxrYW5JbWFnZU1lbW9yeSAqKQorICAgICAgICBnc3RfdnVsa2FuX2ltYWdlX21lbW9yeV9hbGxvYyAocmF3LT51cGxvYWQtPmRldmljZSwgdmtfZm9ybWF0LAorICAgICAgICBvdXRfd2lkdGgsIG91dF9oZWlnaHQsIFZLX0lNQUdFX1RJTElOR19PUFRJTUFMLAorICAgICAgICBWS19JTUFHRV9VU0FHRV9UUkFOU0ZFUl9EU1RfQklUIHwgVktfSU1BR0VfVVNBR0VfSU5QVVRfQVRUQUNITUVOVF9CSVQsCisgICAgICAgIFZLX01FTU9SWV9QUk9QRVJUWV9ERVZJQ0VfTE9DQUxfQklUKTsKKworICAgIHJhdy0+YWxsb2Nfc2l6ZXNbaV0gPSBpbWdfbWVtLT5yZXF1aXJlbWVudHMuc2l6ZTsKKworICAgIGdzdF9tZW1vcnlfdW5yZWYgKEdTVF9NRU1PUllfQ0FTVCAoaW1nX21lbSkpOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitfcmF3X3RvX2J1ZmZlcl9wcm9wb3NlX2FsbG9jYXRpb24gKGdwb2ludGVyIGltcGwsIEdzdFF1ZXJ5ICogZGVjaWRlX3F1ZXJ5LAorICAgIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIC8qIGEgbGl0dGxlIHRyaWNrZXJ5IHdpdGggdGhlIGltcGwgcG9pbnRlciAqLworICBfYnVmZmVyX3Byb3Bvc2VfYWxsb2NhdGlvbiAoaW1wbCwgZGVjaWRlX3F1ZXJ5LCBxdWVyeSk7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitfcmF3X3RvX2J1ZmZlcl9wZXJmb3JtIChncG9pbnRlciBpbXBsLCBHc3RCdWZmZXIgKiBpbmJ1ZiwgR3N0QnVmZmVyICoqIG91dGJ1ZikKK3sKKyAgc3RydWN0IFJhd1RvQnVmZmVyVXBsb2FkICpyYXcgPSBpbXBsOworICBHc3RWaWRlb0ZyYW1lIHZfZnJhbWU7CisgIEdzdEZsb3dSZXR1cm4gcmV0OworICBndWludCBpOworCisgIGlmICghcmF3LT5wb29sKSB7CisgICAgR3N0U3RydWN0dXJlICpjb25maWc7CisgICAgZ3VpbnQgbWluID0gMCwgbWF4ID0gMDsKKyAgICBnc2l6ZSBzaXplID0gMTsKKworICAgIHJhdy0+cG9vbCA9IGdzdF92dWxrYW5fYnVmZmVyX3Bvb2xfbmV3IChyYXctPnVwbG9hZC0+ZGV2aWNlKTsKKyAgICBjb25maWcgPSBnc3RfYnVmZmVyX3Bvb2xfZ2V0X2NvbmZpZyAocmF3LT5wb29sKTsKKyAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9wYXJhbXMgKGNvbmZpZywgcmF3LT51cGxvYWQtPm91dF9jYXBzLCBzaXplLCBtaW4sCisgICAgICAgIG1heCk7CisgICAgZ3N0X2J1ZmZlcl9wb29sX3NldF9jb25maWcgKHJhdy0+cG9vbCwgY29uZmlnKTsKKyAgfQorICBpZiAoIXJhdy0+cG9vbF9hY3RpdmUpIHsKKyAgICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2FjdGl2ZSAocmF3LT5wb29sLCBUUlVFKTsKKyAgICByYXctPnBvb2xfYWN0aXZlID0gVFJVRTsKKyAgfQorCisgIGlmICgocmV0ID0KKyAgICAgICAgICBnc3RfYnVmZmVyX3Bvb2xfYWNxdWlyZV9idWZmZXIgKHJhdy0+cG9vbCwgb3V0YnVmLAorICAgICAgICAgICAgICBOVUxMKSkgIT0gR1NUX0ZMT1dfT0spCisgICAgZ290byBvdXQ7CisKKyAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwICgmdl9mcmFtZSwgJnJhdy0+aW5faW5mbywgaW5idWYsIEdTVF9NQVBfUkVBRCkpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAocmF3LT51cGxvYWQsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICgiJXMiLCAiRmFpbGVkIHRvIG1hcCBpbnB1dCBidWZmZXIiKSwgTlVMTCk7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisKKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmcmF3LT5vdXRfaW5mbyk7IGkrKykgeworICAgIEdzdE1hcEluZm8gbWFwX2luZm87CisgICAgZ3NpemUgcGxhbmVfc2l6ZTsKKyAgICBHc3RNZW1vcnkgKm1lbTsKKworICAgIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkgKCpvdXRidWYsIGkpOworICAgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSwgJm1hcF9pbmZvLCBHU1RfTUFQX1dSSVRFKSkgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHJhdy0+dXBsb2FkLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELAorICAgICAgICAgICgiJXMiLCAiRmFpbGVkIHRvIG1hcCBvdXRwdXQgbWVtb3J5IiksIE5VTEwpOworICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoKm91dGJ1Zik7CisgICAgICAqb3V0YnVmID0gTlVMTDsKKyAgICAgIHJldCA9IEdTVF9GTE9XX0VSUk9SOworICAgICAgZ290byBvdXQ7CisgICAgfQorCisgICAgcGxhbmVfc2l6ZSA9CisgICAgICAgIEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSAoJnJhdy0+b3V0X2luZm8sCisgICAgICAgIGkpICogR1NUX1ZJREVPX0lORk9fQ09NUF9IRUlHSFQgKCZyYXctPm91dF9pbmZvLCBpKTsKKyAgICBnX2Fzc2VydCAocGxhbmVfc2l6ZSA8IG1hcF9pbmZvLnNpemUpOworICAgIG1lbWNweSAobWFwX2luZm8uZGF0YSwgdl9mcmFtZS5kYXRhW2ldLCBwbGFuZV9zaXplKTsKKworICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSwgJm1hcF9pbmZvKTsKKyAgfQorCisgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJnZfZnJhbWUpOworCisgIHJldCA9IEdTVF9GTE9XX09LOworCitvdXQ6CisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitfcmF3X3RvX2J1ZmZlcl9mcmVlIChncG9pbnRlciBpbXBsKQoreworICBzdHJ1Y3QgUmF3VG9CdWZmZXJVcGxvYWQgKnJhdyA9IGltcGw7CisKKyAgaWYgKHJhdy0+cG9vbCkgeworICAgIGlmIChyYXctPnBvb2xfYWN0aXZlKSB7CisgICAgICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2FjdGl2ZSAocmF3LT5wb29sLCBGQUxTRSk7CisgICAgfQorICAgIHJhdy0+cG9vbF9hY3RpdmUgPSBGQUxTRTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChyYXctPnBvb2wpOworICAgIHJhdy0+cG9vbCA9IE5VTEw7CisgIH0KKworICBnX2ZyZWUgKGltcGwpOworfQorCitzdGF0aWMgR3N0U3RhdGljQ2FwcyBfcmF3X3RvX2J1ZmZlcl9pbl90ZW1wbCA9IEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3Iik7CitzdGF0aWMgR3N0U3RhdGljQ2FwcyBfcmF3X3RvX2J1ZmZlcl9vdXRfdGVtcGwgPQorR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9WVUxLQU5fQlVGRkVSICIpIik7CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVXBsb2FkTWV0aG9kIHJhd190b19idWZmZXJfdXBsb2FkID0geworICAiUmF3VG9WdWxrYW5CdWZmZXIiLAorICAmX3Jhd190b19idWZmZXJfaW5fdGVtcGwsCisgICZfcmF3X3RvX2J1ZmZlcl9vdXRfdGVtcGwsCisgIF9yYXdfdG9fYnVmZmVyX25ld19pbXBsLAorICBfcmF3X3RvX2J1ZmZlcl90cmFuc2Zvcm1fY2FwcywKKyAgX3Jhd190b19idWZmZXJfc2V0X2NhcHMsCisgIF9yYXdfdG9fYnVmZmVyX3Byb3Bvc2VfYWxsb2NhdGlvbiwKKyAgX3Jhd190b19idWZmZXJfcGVyZm9ybSwKKyAgX3Jhd190b19idWZmZXJfZnJlZSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgVXBsb2FkTWV0aG9kICp1cGxvYWRfbWV0aG9kc1tdID0geworICAmYnVmZmVyX3VwbG9hZCwKKyAgJnJhd190b19idWZmZXJfdXBsb2FkLAorfTsKKworc3RhdGljIEdzdENhcHMgKgorX2dldF9pbnB1dF90ZW1wbGF0ZV9jYXBzICh2b2lkKQoreworICBHc3RDYXBzICpyZXQgPSBOVUxMOworICBnaW50IGk7CisKKyAgLyogRklYTUU6IGNhY2hlIHRoaXMgYW5kIGludmFsaWRhdGUgb24gY2hhbmdlcyB0byB1cGxvYWRfbWV0aG9kcyAqLworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTICh1cGxvYWRfbWV0aG9kcyk7IGkrKykgeworICAgIEdzdENhcHMgKnRlbXBsYXRlID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPmluX3RlbXBsYXRlKTsKKyAgICByZXQgPSByZXQgPT0gTlVMTCA/IHRlbXBsYXRlIDogZ3N0X2NhcHNfbWVyZ2UgKHJldCwgdGVtcGxhdGUpOworICB9CisKKyAgcmV0ID0gZ3N0X2NhcHNfc2ltcGxpZnkgKHJldCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdzdENhcHMgKgorX2dldF9vdXRwdXRfdGVtcGxhdGVfY2FwcyAodm9pZCkKK3sKKyAgR3N0Q2FwcyAqcmV0ID0gTlVMTDsKKyAgZ2ludCBpOworCisgIC8qIEZJWE1FOiBjYWNoZSB0aGlzIGFuZCBpbnZhbGlkYXRlIG9uIGNoYW5nZXMgdG8gdXBsb2FkX21ldGhvZHMgKi8KKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAodXBsb2FkX21ldGhvZHMpOyBpKyspIHsKKyAgICBHc3RDYXBzICp0ZW1wbGF0ZSA9IGdzdF9zdGF0aWNfY2Fwc19nZXQgKHVwbG9hZF9tZXRob2RzW2ldLT5vdXRfdGVtcGxhdGUpOworICAgIHJldCA9IHJldCA9PSBOVUxMID8gdGVtcGxhdGUgOiBnc3RfY2Fwc19tZXJnZSAocmV0LCB0ZW1wbGF0ZSk7CisgIH0KKworICByZXQgPSBnc3RfY2Fwc19zaW1wbGlmeSAocmV0KTsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX3VwbG9hZF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX3VwbG9hZF9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwYXJhbV9zcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fdXBsb2FkX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBhcmFtX3NwZWMpOworCitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z1bGthbl91cGxvYWRfcXVlcnkgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwKKyAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RRdWVyeSAqIHF1ZXJ5KTsKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fdXBsb2FkX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RDb250ZXh0ICogY29udGV4dCk7CitzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ3N0X3Z1bGthbl91cGxvYWRfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICoKKyAgICBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKKworc3RhdGljIGdib29sZWFuIGdzdF92dWxrYW5fdXBsb2FkX3NldF9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogYnQsCisgICAgR3N0Q2FwcyAqIGluX2NhcHMsIEdzdENhcHMgKiBvdXRfY2Fwcyk7CitzdGF0aWMgR3N0Q2FwcyAqZ3N0X3Z1bGthbl91cGxvYWRfdHJhbnNmb3JtX2NhcHMgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwKKyAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIGZpbHRlcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z1bGthbl91cGxvYWRfcHJvcG9zZV9hbGxvY2F0aW9uIChHc3RCYXNlVHJhbnNmb3JtICogYnQsCisgICAgR3N0UXVlcnkgKiBkZWNpZGVfcXVlcnksIEdzdFF1ZXJ5ICogcXVlcnkpOworc3RhdGljIGdib29sZWFuIGdzdF92dWxrYW5fdXBsb2FkX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RCYXNlVHJhbnNmb3JtICogYnQsCisgICAgR3N0UXVlcnkgKiBxdWVyeSk7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfdnVsa2FuX3VwbG9hZF90cmFuc2Zvcm0gKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwKKyAgICBHc3RCdWZmZXIgKiBpbmJ1ZiwgR3N0QnVmZmVyICogb3V0YnVmKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF92dWxrYW5fdXBsb2FkX3ByZXBhcmVfb3V0cHV0X2J1ZmZlciAoR3N0QmFzZVRyYW5zZm9ybSAqCisgICAgYnQsIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiogb3V0YnVmKTsKKworZW51bQoreworICBQUk9QXzAsCit9OworCitlbnVtCit7CisgIFNJR05BTF8wLAorICBMQVNUX1NJR05BTAorfTsKKworLyogc3RhdGljIGd1aW50IGdzdF92dWxrYW5fdXBsb2FkX3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07ICovCisKKyNkZWZpbmUgZ3N0X3Z1bGthbl91cGxvYWRfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFZ1bGthblVwbG9hZCwgZ3N0X3Z1bGthbl91cGxvYWQsCisgICAgR1NUX1RZUEVfQkFTRV9UUkFOU0ZPUk0sIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZGVidWdfdnVsa2FuX3VwbG9hZCwKKyAgICAgICAgInZ1bGthbnVwbG9hZCIsIDAsICJWdWxrYW4gVXBsb2FkZXIiKSk7CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3VwbG9hZF9jbGFzc19pbml0IChHc3RWdWxrYW5VcGxvYWRDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CisgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKKyAgR3N0QmFzZVRyYW5zZm9ybUNsYXNzICpnc3RiYXNldHJhbnNmb3JtX2NsYXNzOworCisgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKKyAgZ3N0YmFzZXRyYW5zZm9ybV9jbGFzcyA9IChHc3RCYXNlVHJhbnNmb3JtQ2xhc3MgKikga2xhc3M7CisKKyAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X3Z1bGthbl91cGxvYWRfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfdnVsa2FuX3VwbG9hZF9nZXRfcHJvcGVydHk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLCAiVnVsa2FuIFVwbG9hZGVyIiwKKyAgICAgICJGaWx0ZXIvVmlkZW8iLCAiQSBWdWxrYW4gZGF0YSB1cGxvYWRlciIsCisgICAgICAiTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPiIpOworCisgIHsKKyAgICBHc3RDYXBzICpjYXBzOworCisgICAgY2FwcyA9IF9nZXRfaW5wdXRfdGVtcGxhdGVfY2FwcyAoKTsKKyAgICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgICBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNpbmsiLCBHU1RfUEFEX1NJTkssIEdTVF9QQURfQUxXQVlTLCBjYXBzKSk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworCisgICAgY2FwcyA9IF9nZXRfb3V0cHV0X3RlbXBsYXRlX2NhcHMgKCk7CisgICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgICAgZ3N0X3BhZF90ZW1wbGF0ZV9uZXcgKCJzcmMiLCBHU1RfUEFEX1NSQywgR1NUX1BBRF9BTFdBWVMsIGNhcHMpKTsKKyAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisgIH0KKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5fdXBsb2FkX2ZpbmFsaXplOworCisgIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9IGdzdF92dWxrYW5fdXBsb2FkX2NoYW5nZV9zdGF0ZTsKKyAgZ3N0ZWxlbWVudF9jbGFzcy0+c2V0X2NvbnRleHQgPSBnc3RfdnVsa2FuX3VwbG9hZF9zZXRfY29udGV4dDsKKyAgZ3N0YmFzZXRyYW5zZm9ybV9jbGFzcy0+cXVlcnkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z1bGthbl91cGxvYWRfcXVlcnkpOworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT5zZXRfY2FwcyA9IGdzdF92dWxrYW5fdXBsb2FkX3NldF9jYXBzOworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT50cmFuc2Zvcm1fY2FwcyA9IGdzdF92dWxrYW5fdXBsb2FkX3RyYW5zZm9ybV9jYXBzOworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT5wcm9wb3NlX2FsbG9jYXRpb24gPQorICAgICAgZ3N0X3Z1bGthbl91cGxvYWRfcHJvcG9zZV9hbGxvY2F0aW9uOworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT5kZWNpZGVfYWxsb2NhdGlvbiA9CisgICAgICBnc3RfdnVsa2FuX3VwbG9hZF9kZWNpZGVfYWxsb2NhdGlvbjsKKyAgZ3N0YmFzZXRyYW5zZm9ybV9jbGFzcy0+dHJhbnNmb3JtID0gZ3N0X3Z1bGthbl91cGxvYWRfdHJhbnNmb3JtOworICBnc3RiYXNldHJhbnNmb3JtX2NsYXNzLT5wcmVwYXJlX291dHB1dF9idWZmZXIgPQorICAgICAgZ3N0X3Z1bGthbl91cGxvYWRfcHJlcGFyZV9vdXRwdXRfYnVmZmVyOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl91cGxvYWRfaW5pdCAoR3N0VnVsa2FuVXBsb2FkICogdmtfdXBsb2FkKQoreworICBndWludCBpLCBuOworCisgIG4gPSBHX05fRUxFTUVOVFMgKHVwbG9hZF9tZXRob2RzKTsKKyAgdmtfdXBsb2FkLT51cGxvYWRfaW1wbHMgPSBnX21hbGxvYyAoc2l6ZW9mIChncG9pbnRlcikgKiBuKTsKKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIHZrX3VwbG9hZC0+dXBsb2FkX2ltcGxzW2ldID0gdXBsb2FkX21ldGhvZHNbaV0tPm5ld19pbXBsICh2a191cGxvYWQpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3VwbG9hZF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VnVsa2FuVXBsb2FkICp2a191cGxvYWQgPSBHU1RfVlVMS0FOX1VQTE9BRCAob2JqZWN0KTsKKyAgZ3VpbnQgaTsKKworICBnc3RfY2Fwc19yZXBsYWNlICgmdmtfdXBsb2FkLT5pbl9jYXBzLCBOVUxMKTsKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnZrX3VwbG9hZC0+b3V0X2NhcHMsIE5VTEwpOworCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHVwbG9hZF9tZXRob2RzKTsgaSsrKSB7CisgICAgdXBsb2FkX21ldGhvZHNbaV0tPmZyZWUgKHZrX3VwbG9hZC0+dXBsb2FkX2ltcGxzW2ldKTsKKyAgfQorCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fdXBsb2FkX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworLy8gIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl91cGxvYWRfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisvLyAgR3N0VnVsa2FuVXBsb2FkICp2a191cGxvYWQgPSBHU1RfVlVMS0FOX1VQTE9BRCAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl91cGxvYWRfcXVlcnkgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBHc3RWdWxrYW5VcGxvYWQgKnZrX3VwbG9hZCA9IEdTVF9WVUxLQU5fVVBMT0FEIChidCk7CisgIGdib29sZWFuIHJlcyA9IEZBTFNFOworCisgIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgeworICAgIGNhc2UgR1NUX1FVRVJZX0NPTlRFWFQ6eworICAgICAgcmVzID0gZ3N0X3Z1bGthbl9oYW5kbGVfY29udGV4dF9xdWVyeSAoR1NUX0VMRU1FTlQgKHZrX3VwbG9hZCksIHF1ZXJ5LAorICAgICAgICAgICZ2a191cGxvYWQtPmRpc3BsYXksICZ2a191cGxvYWQtPmluc3RhbmNlLCAmdmtfdXBsb2FkLT5kZXZpY2UpOworCisgICAgICBpZiAocmVzKQorICAgICAgICByZXR1cm4gcmVzOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKHBhcmVudF9jbGFzcyktPnF1ZXJ5IChidCwgZGlyZWN0aW9uLCBxdWVyeSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3VwbG9hZF9zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdENvbnRleHQgKiBjb250ZXh0KQoreworICBHc3RWdWxrYW5VcGxvYWQgKnZrX3VwbG9hZCA9IEdTVF9WVUxLQU5fVVBMT0FEIChlbGVtZW50KTsKKworICBnc3RfdnVsa2FuX2hhbmRsZV9zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCwgJnZrX3VwbG9hZC0+ZGlzcGxheSwKKyAgICAgICZ2a191cGxvYWQtPmluc3RhbmNlKTsKKworICBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2V0X2NvbnRleHQgKGVsZW1lbnQsIGNvbnRleHQpOworfQorCitzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KK2dzdF92dWxrYW5fdXBsb2FkX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKGVsZW1lbnQpOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQgPSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1M7CisKKyAgR1NUX0RFQlVHICgiY2hhbmdpbmcgc3RhdGU6ICVzID0+ICVzIiwKKyAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChHU1RfU1RBVEVfVFJBTlNJVElPTl9DVVJSRU5UICh0cmFuc2l0aW9uKSksCisgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAoR1NUX1NUQVRFX1RSQU5TSVRJT05fTkVYVCAodHJhbnNpdGlvbikpKTsKKworICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfTlVMTF9UT19SRUFEWToKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6CisgICAgICBpZiAoIWdzdF92dWxrYW5fZW5zdXJlX2VsZW1lbnRfZGF0YSAoZWxlbWVudCwgJnZrX3VwbG9hZC0+ZGlzcGxheSwKKyAgICAgICAgICAgICAgJnZrX3VwbG9hZC0+aW5zdGFuY2UpKSB7CisgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SICh2a191cGxvYWQsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgICAoIkZhaWxlZCB0byByZXRyZWl2ZSB2dWxrYW4gaW5zdGFuY2UvZGlzcGxheSIpLCAoTlVMTCkpOworICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgfQorICAgICAgaWYgKCFnc3RfdnVsa2FuX2RldmljZV9ydW5fY29udGV4dF9xdWVyeSAoR1NUX0VMRU1FTlQgKHZrX3VwbG9hZCksCisgICAgICAgICAgICAgICZ2a191cGxvYWQtPmRldmljZSkpIHsKKyAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHZrX3VwbG9hZCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAgICgiRmFpbGVkIHRvIHJldHJlaXZlIHZ1bGthbiBkZXZpY2UiKSwgKE5VTEwpKTsKKyAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOworICBpZiAocmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkKKyAgICByZXR1cm4gcmV0OworCisgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QTEFZSU5HX1RPX1BBVVNFRDoKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CisgICAgICBpZiAodmtfdXBsb2FkLT5kaXNwbGF5KQorICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2a191cGxvYWQtPmRpc3BsYXkpOworICAgICAgdmtfdXBsb2FkLT5kaXNwbGF5ID0gTlVMTDsKKyAgICAgIGlmICh2a191cGxvYWQtPmRldmljZSkKKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodmtfdXBsb2FkLT5kZXZpY2UpOworICAgICAgdmtfdXBsb2FkLT5kZXZpY2UgPSBOVUxMOworICAgICAgaWYgKHZrX3VwbG9hZC0+aW5zdGFuY2UpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHZrX3VwbG9hZC0+aW5zdGFuY2UpOworICAgICAgdmtfdXBsb2FkLT5pbnN0YW5jZSA9IE5VTEw7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK2dzdF92dWxrYW5fdXBsb2FkX3RyYW5zZm9ybV9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogYnQsCisgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBmaWx0ZXIpCit7CisgIEdzdFZ1bGthblVwbG9hZCAqdmtfdXBsb2FkID0gR1NUX1ZVTEtBTl9VUExPQUQgKGJ0KTsKKyAgR3N0Q2FwcyAqcmVzdWx0LCAqdG1wOworICBnaW50IGk7CisKKyAgdG1wID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOworCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHVwbG9hZF9tZXRob2RzKTsgaSsrKSB7CisgICAgR3N0Q2FwcyAqdG1wMjsKKyAgICBHc3RDYXBzICp0ZW1wbDsKKworICAgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7CisgICAgICB0ZW1wbCA9IGdzdF9zdGF0aWNfY2Fwc19nZXQgKHVwbG9hZF9tZXRob2RzW2ldLT5pbl90ZW1wbGF0ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgIHRlbXBsID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPm91dF90ZW1wbGF0ZSk7CisgICAgfQorICAgIGlmICghZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAoY2FwcywgdGVtcGwpKSB7CisgICAgICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOworICAgICAgY29udGludWU7CisgICAgfQorICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisKKyAgICB0bXAyID0gdXBsb2FkX21ldGhvZHNbaV0tPnRyYW5zZm9ybV9jYXBzICh2a191cGxvYWQtPnVwbG9hZF9pbXBsc1tpXSwKKyAgICAgICAgZGlyZWN0aW9uLCBjYXBzKTsKKworICAgIGlmICh0bXAyKQorICAgICAgdG1wID0gZ3N0X2NhcHNfbWVyZ2UgKHRtcCwgdG1wMik7CisgIH0KKworICBpZiAoZmlsdGVyKSB7CisgICAgcmVzdWx0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgdG1wLCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOworICAgIGdzdF9jYXBzX3VucmVmICh0bXApOworICB9IGVsc2UgeworICAgIHJlc3VsdCA9IHRtcDsKKyAgfQorCisgIHJldHVybiByZXN1bHQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl91cGxvYWRfc2V0X2NhcHMgKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwgR3N0Q2FwcyAqIGluX2NhcHMsCisgICAgR3N0Q2FwcyAqIG91dF9jYXBzKQoreworICBHc3RWdWxrYW5VcGxvYWQgKnZrX3VwbG9hZCA9IEdTVF9WVUxLQU5fVVBMT0FEIChidCk7CisgIGdib29sZWFuIGZvdW5kX21ldGhvZCA9IEZBTFNFOworICBndWludCBpOworCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZ2a191cGxvYWQtPmluX2NhcHMsIGluX2NhcHMpOworICBnc3RfY2Fwc19yZXBsYWNlICgmdmtfdXBsb2FkLT5vdXRfY2Fwcywgb3V0X2NhcHMpOworCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHVwbG9hZF9tZXRob2RzKTsgaSsrKSB7CisgICAgR3N0Q2FwcyAqdGVtcGw7CisKKyAgICB0ZW1wbCA9IGdzdF9zdGF0aWNfY2Fwc19nZXQgKHVwbG9hZF9tZXRob2RzW2ldLT5pbl90ZW1wbGF0ZSk7CisgICAgaWYgKCFnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChpbl9jYXBzLCB0ZW1wbCkpIHsKKyAgICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisgICAgICBjb250aW51ZTsKKyAgICB9CisgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKKworICAgIHRlbXBsID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPm91dF90ZW1wbGF0ZSk7CisgICAgaWYgKCFnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChvdXRfY2FwcywgdGVtcGwpKSB7CisgICAgICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOworICAgICAgY29udGludWU7CisgICAgfQorICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisKKyAgICBpZiAoIXVwbG9hZF9tZXRob2RzW2ldLT5zZXRfY2FwcyAodmtfdXBsb2FkLT51cGxvYWRfaW1wbHNbaV0sIGluX2NhcHMsCisgICAgICAgICAgICBvdXRfY2FwcykpCisgICAgICBjb250aW51ZTsKKworICAgIEdTVF9MT0dfT0JKRUNUIChidCwgInVwbG9hZGVyICVzIGFjY2VwdGVkIGNhcHMgaW46ICUiIEdTVF9QVFJfRk9STUFUCisgICAgICAgICIgb3V0OiAlIiBHU1RfUFRSX0ZPUk1BVCwgdXBsb2FkX21ldGhvZHNbaV0tPm5hbWUsIGluX2NhcHMsIG91dF9jYXBzKTsKKworICAgIHZrX3VwbG9hZC0+Y3VycmVudF9pbXBsID0gaTsKKyAgICBmb3VuZF9tZXRob2QgPSBUUlVFOworICAgIGJyZWFrOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoYnQsCisgICAgICAic2V0IGNhcHMgaW46ICUiIEdTVF9QVFJfRk9STUFUICIgb3V0OiAlIiBHU1RfUFRSX0ZPUk1BVCwgaW5fY2FwcywKKyAgICAgIG91dF9jYXBzKTsKKworICByZXR1cm4gZm91bmRfbWV0aG9kOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92dWxrYW5fdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbiAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LAorICAgIEdzdFF1ZXJ5ICogZGVjaWRlX3F1ZXJ5LCBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBHc3RWdWxrYW5VcGxvYWQgKnZrX3VwbG9hZCA9IEdTVF9WVUxLQU5fVVBMT0FEIChidCk7CisgIGd1aW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAodXBsb2FkX21ldGhvZHMpOyBpKyspIHsKKyAgICBHc3RDYXBzICp0ZW1wbDsKKworICAgIHRlbXBsID0gZ3N0X3N0YXRpY19jYXBzX2dldCAodXBsb2FkX21ldGhvZHNbaV0tPmluX3RlbXBsYXRlKTsKKyAgICBpZiAoIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKHZrX3VwbG9hZC0+aW5fY2FwcywgdGVtcGwpKSB7CisgICAgICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOworICAgICAgY29udGludWU7CisgICAgfQorICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisKKyAgICB0ZW1wbCA9IGdzdF9zdGF0aWNfY2Fwc19nZXQgKHVwbG9hZF9tZXRob2RzW2ldLT5vdXRfdGVtcGxhdGUpOworICAgIGlmICghZ3N0X2NhcHNfY2FuX2ludGVyc2VjdCAodmtfdXBsb2FkLT5vdXRfY2FwcywgdGVtcGwpKSB7CisgICAgICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOworICAgICAgY29udGludWU7CisgICAgfQorICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbCk7CisKKyAgICB1cGxvYWRfbWV0aG9kc1tpXS0+cHJvcG9zZV9hbGxvY2F0aW9uICh2a191cGxvYWQtPnVwbG9hZF9pbXBsc1tpXSwKKyAgICAgICAgZGVjaWRlX3F1ZXJ5LCBxdWVyeSk7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdnVsa2FuX3VwbG9hZF9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LCBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitfdXBsb2FkX2ZpbmRfbWV0aG9kIChHc3RWdWxrYW5VcGxvYWQgKiB2a191cGxvYWQpCit7CisgIHZrX3VwbG9hZC0+Y3VycmVudF9pbXBsKys7CisKKyAgaWYgKHZrX3VwbG9hZC0+Y3VycmVudF9pbXBsID4gR19OX0VMRU1FTlRTICh1cGxvYWRfbWV0aG9kcykpCisgICAgcmV0dXJuIEZBTFNFOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHZrX3VwbG9hZCwgImF0dGVtcHRpbmcgdXBsb2FkIHdpdGggdXBsb2FkZXIgJXMiLAorICAgICAgdXBsb2FkX21ldGhvZHNbdmtfdXBsb2FkLT5jdXJyZW50X2ltcGxdLT5uYW1lKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF92dWxrYW5fdXBsb2FkX3ByZXBhcmVfb3V0cHV0X2J1ZmZlciAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LAorICAgIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiogb3V0YnVmKQoreworICBHc3RWdWxrYW5VcGxvYWQgKnZrX3VwbG9hZCA9IEdTVF9WVUxLQU5fVVBMT0FEIChidCk7CisgIEdzdEZsb3dSZXR1cm4gcmV0OworCisgIGRvIHsKKyAgICBncG9pbnRlciBtZXRob2RfaW1wbDsKKyAgICBjb25zdCBzdHJ1Y3QgVXBsb2FkTWV0aG9kICptZXRob2Q7CisKKyAgICBtZXRob2QgPSB1cGxvYWRfbWV0aG9kc1t2a191cGxvYWQtPmN1cnJlbnRfaW1wbF07CisgICAgbWV0aG9kX2ltcGwgPSB2a191cGxvYWQtPnVwbG9hZF9pbXBsc1t2a191cGxvYWQtPmN1cnJlbnRfaW1wbF07CisKKyAgICByZXQgPSBtZXRob2QtPnBlcmZvcm0gKG1ldGhvZF9pbXBsLCBpbmJ1Ziwgb3V0YnVmKTsKKyAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7CisgICAgICBkbyB7CisgICAgICAgIGlmICghX3VwbG9hZF9maW5kX21ldGhvZCAodmtfdXBsb2FkKSkgeworICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChidCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwKKyAgICAgICAgICAgICAgKCJDb3VsZCBub3QgZmluZCBzdWl0YWJsZSB1cGxvYWRlciIpLCAoTlVMTCkpOworICAgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgICAgICAgfQorCisgICAgICAgIG1ldGhvZCA9IHVwbG9hZF9tZXRob2RzW3ZrX3VwbG9hZC0+Y3VycmVudF9pbXBsXTsKKyAgICAgICAgbWV0aG9kX2ltcGwgPSB2a191cGxvYWQtPnVwbG9hZF9pbXBsc1t2a191cGxvYWQtPmN1cnJlbnRfaW1wbF07CisgICAgICAgIGlmICghbWV0aG9kLT5zZXRfY2FwcyAobWV0aG9kX2ltcGwsIHZrX3VwbG9hZC0+aW5fY2FwcywKKyAgICAgICAgICAgICAgICB2a191cGxvYWQtPm91dF9jYXBzKSkKKyAgICAgICAgICAvKiB0cnkgdGhlIG5leHQgbWV0aG9kICovCisgICAgICAgICAgY29udGludWU7CisgICAgICB9IHdoaWxlIChGQUxTRSk7CisgICAgICAvKiB0cnkgdGhlIHVwbG9hZGluZyB3aXRoIHRoZSBuZXh0IG1ldGhvZCAqLworICAgICAgY29udGludWU7CisgICAgfQorICB9IHdoaWxlIChGQUxTRSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF92dWxrYW5fdXBsb2FkX3RyYW5zZm9ybSAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LCBHc3RCdWZmZXIgKiBpbmJ1ZiwKKyAgICBHc3RCdWZmZXIgKiBvdXRidWYpCit7CisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmt1cGxvYWQuaCBiL2V4dC92dWxrYW4vdmt1cGxvYWQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWEzZDcyCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi92a3VwbG9hZC5oCkBAIC0wLDAgKzEsODggQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfVktfVVBMT0FEX0hfCisjZGVmaW5lIF9WS19VUExPQURfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKyNpbmNsdWRlIDx2ay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX1VQTE9BRCAgICAgICAgICAgIChnc3RfdnVsa2FuX3VwbG9hZF9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVlVMS0FOX1VQTE9BRChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9VUExPQUQsR3N0VnVsa2FuVXBsb2FkKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9VUExPQURfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1ZVTEtBTl9VUExPQUQsR3N0VnVsa2FuVXBsb2FkQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1VQTE9BRChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9VUExPQUQpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1VQTE9BRF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfVlVMS0FOX1VQTE9BRCkpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5VcGxvYWQgR3N0VnVsa2FuVXBsb2FkOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthblVwbG9hZENsYXNzIEdzdFZ1bGthblVwbG9hZENsYXNzOworCitzdHJ1Y3QgVXBsb2FkTWV0aG9kCit7CisgIGNvbnN0IGdjaGFyICAgICAgICpuYW1lOworCisgIEdzdFN0YXRpY0NhcHMgICAgICppbl90ZW1wbGF0ZTsKKyAgR3N0U3RhdGljQ2FwcyAgICAgKm91dF90ZW1wbGF0ZTsKKworICBncG9pbnRlciAgICAgICAgICAoKm5ld19pbXBsKSAgICAgICAgICAgICAgICAgKEdzdFZ1bGthblVwbG9hZCAqIHVwbG9hZCk7CisgIEdzdENhcHMgKiAgICAgICAgICgqdHJhbnNmb3JtX2NhcHMpICAgICAgICAgICAoZ3BvaW50ZXIgaW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgKiBjYXBzKTsKKyAgZ2Jvb2xlYW4gICAgICAgICAgKCpzZXRfY2FwcykgICAgICAgICAgICAgICAgIChncG9pbnRlciBpbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgKiBpbl9jYXBzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgKiBvdXRfY2Fwcyk7CisgIHZvaWQgICAgICAgICAgICAgICgqcHJvcG9zZV9hbGxvY2F0aW9uKSAgICAgICAoZ3BvaW50ZXIgaW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RRdWVyeSAqIGRlY2lkZV9xdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKKyAgR3N0Rmxvd1JldHVybiAgICAgKCpwZXJmb3JtKSAgICAgICAgICAgICAgICAgIChncG9pbnRlciBpbXBsLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKiogb3V0YnVmKTsKKyAgdm9pZCAgICAgICAgICAgICAgKCpmcmVlKSAgICAgICAgICAgICAgICAgICAgIChncG9pbnRlciBpbXBsKTsKK307CisKK3N0cnVjdCBfR3N0VnVsa2FuVXBsb2FkCit7CisgIEdzdEJhc2VUcmFuc2Zvcm0gICAgICBwYXJlbnQ7CisKKyAgR3N0VnVsa2FuSW5zdGFuY2UgICAgICppbnN0YW5jZTsKKyAgR3N0VnVsa2FuRGV2aWNlICAgICAgICpkZXZpY2U7CisKKyAgR3N0VnVsa2FuRGlzcGxheSAgICAgICpkaXNwbGF5OworCisgIEdzdENhcHMgICAgICAgICAgICAgICAqaW5fY2FwczsKKyAgR3N0Q2FwcyAgICAgICAgICAgICAgICpvdXRfY2FwczsKKworICAvKiBhbGwgaW1wbCBwb2ludGVycyAqLworICBncG9pbnRlciAgICAgICAgICAgICAgKnVwbG9hZF9pbXBsczsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgIGN1cnJlbnRfaW1wbDsKK307CisKK3N0cnVjdCBfR3N0VnVsa2FuVXBsb2FkQ2xhc3MKK3sKKyAgR3N0QmFzZVRyYW5zZm9ybUNsYXNzIHZpZGVvX3NpbmtfY2xhc3M7Cit9OworCitHVHlwZSBnc3RfdnVsa2FuX3VwbG9hZF9nZXRfdHlwZSh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3ZrdXRpbHMuYyBiL2V4dC92dWxrYW4vdmt1dGlscy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMjNkYjUKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3ZrdXRpbHMuYwpAQCAtMCwwICsxLDMyNSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2a3V0aWxzLmgiCisjaW5jbHVkZSAidmt1dGlsc19wcml2YXRlLmgiCisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfQ09OVEVYVCk7CisKK2dib29sZWFuCitfY2hlY2tfZm9yX2FsbF9sYXllcnMgKHVpbnQzMl90IGNoZWNrX2NvdW50LCBjb25zdCBjaGFyICoqY2hlY2tfbmFtZXMsCisgICAgdWludDMyX3QgbGF5ZXJfY291bnQsIFZrTGF5ZXJQcm9wZXJ0aWVzICogbGF5ZXJzKQoreworICB1aW50MzJfdCBpLCBqOworCisgIGZvciAoaSA9IDA7IGkgPCBjaGVja19jb3VudDsgaSsrKSB7CisgICAgZ2Jvb2xlYW4gZm91bmQgPSBGQUxTRTsKKyAgICBmb3IgKGogPSAwOyBqIDwgbGF5ZXJfY291bnQ7IGorKykgeworICAgICAgaWYgKGdfc3RyY21wMCAoY2hlY2tfbmFtZXNbaV0sIGxheWVyc1tqXS5sYXllck5hbWUpID09IDApIHsKKyAgICAgICAgZm91bmQgPSBUUlVFOworICAgICAgfQorICAgIH0KKyAgICBpZiAoIWZvdW5kKSB7CisgICAgICBHU1RfRVJST1IgKCJDYW5ub3QgZmluZCBsYXllcjogJXMiLCBjaGVja19uYW1lc1tpXSk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX2luaXRfY29udGV4dF9kZWJ1ZyAodm9pZCkKK3sKKyNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoR1NUX0NBVF9DT05URVhULCAiR1NUX0NPTlRFWFQiKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorI2VuZGlmCit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3ZrX3BhZF9xdWVyeSAoY29uc3QgR1ZhbHVlICogaXRlbSwgR1ZhbHVlICogdmFsdWUsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGFkICpwYWQgPSBnX3ZhbHVlX2dldF9vYmplY3QgKGl0ZW0pOworICBHc3RRdWVyeSAqcXVlcnkgPSB1c2VyX2RhdGE7CisgIGdib29sZWFuIHJlczsKKworICBfaW5pdF9jb250ZXh0X2RlYnVnICgpOworCisgIHJlcyA9IGdzdF9wYWRfcGVlcl9xdWVyeSAocGFkLCBxdWVyeSk7CisKKyAgaWYgKHJlcykgeworICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBUUlVFKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBHU1RfQ0FUX0lORk9fT0JKRUNUIChHU1RfQ0FUX0NPTlRFWFQsIHBhZCwgInBhZCBwZWVyIHF1ZXJ5IGZhaWxlZCIpOworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF92dWxrYW5fcnVuX3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uKQoreworICBHc3RJdGVyYXRvciAqaXQ7CisgIEdzdEl0ZXJhdG9yRm9sZEZ1bmN0aW9uIGZ1bmMgPSBfdmtfcGFkX3F1ZXJ5OworICBHVmFsdWUgcmVzID0geyAwIH07CisKKyAgZ192YWx1ZV9pbml0ICgmcmVzLCBHX1RZUEVfQk9PTEVBTik7CisgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKCZyZXMsIEZBTFNFKTsKKworICAvKiBBc2sgbmVpZ2hib3IgKi8KKyAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NSQykKKyAgICBpdCA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc3JjX3BhZHMgKGVsZW1lbnQpOworICBlbHNlCisgICAgaXQgPSBnc3RfZWxlbWVudF9pdGVyYXRlX3NpbmtfcGFkcyAoZWxlbWVudCk7CisKKyAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb2xkIChpdCwgZnVuYywgJnJlcywgcXVlcnkpID09IEdTVF9JVEVSQVRPUl9SRVNZTkMpCisgICAgZ3N0X2l0ZXJhdG9yX3Jlc3luYyAoaXQpOworCisgIGdzdF9pdGVyYXRvcl9mcmVlIChpdCk7CisKKyAgcmV0dXJuIGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKCZyZXMpOworfQorCit2b2lkCitnc3RfdnVsa2FuX2dsb2JhbF9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBjb25zdCBnY2hhciAqIGNvbnRleHRfdHlwZSkKK3sKKyAgR3N0UXVlcnkgKnF1ZXJ5OworICBHc3RNZXNzYWdlICptc2c7CisKKyAgaWYgKChxdWVyeSA9IGdzdF92dWxrYW5fbG9jYWxfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgY29udGV4dF90eXBlLCBUUlVFKSkpIHsKKyAgICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKyAgICByZXR1cm47CisgIH0KKworICAvKiAzKSBQb3N0IGEgR1NUX01FU1NBR0VfTkVFRF9DT05URVhUIG1lc3NhZ2Ugb24gdGhlIGJ1cyB3aXRoCisgICAqICAgIHRoZSByZXF1aXJlZCBjb250ZXh0IHR5cGUgYW5kIGFmdGVyd2FyZHMgY2hlY2sgaWYgYQorICAgKiAgICB1c2FibGUgY29udGV4dCB3YXMgc2V0IG5vdyBhcyBpbiAxKS4gVGhlIG1lc3NhZ2UgY291bGQKKyAgICogICAgYmUgaGFuZGxlZCBieSB0aGUgcGFyZW50IGJpbnMgb2YgdGhlIGVsZW1lbnQgYW5kIHRoZQorICAgKiAgICBhcHBsaWNhdGlvbi4KKyAgICovCisgIEdTVF9DQVRfSU5GT19PQkpFQ1QgKEdTVF9DQVRfQ09OVEVYVCwgZWxlbWVudCwKKyAgICAgICJwb3N0aW5nIG5lZWQgY29udGV4dCBtZXNzYWdlIik7CisgIG1zZyA9IGdzdF9tZXNzYWdlX25ld19uZWVkX2NvbnRleHQgKEdTVF9PQkpFQ1RfQ0FTVCAoZWxlbWVudCksIGNvbnRleHRfdHlwZSk7CisgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoZWxlbWVudCwgbXNnKTsKKworICAvKgorICAgKiBXaG9tZXZlciByZXNwb25kcyB0byB0aGUgbmVlZC1jb250ZXh0IG1lc3NhZ2UgcGVyZm9ybXMgYQorICAgKiBHc3RFbGVtZW50OjpzZXRfY29udGV4dCgpIHdpdGggdGhlIHJlcXVpcmVkIGNvbnRleHQgaW4gd2hpY2ggdGhlIGVsZW1lbnQKKyAgICogaXMgcmVxdWlyZWQgdG8gdXBkYXRlIHRoZSBkaXNwbGF5X3B0ciBvciBjYWxsIGdzdF92dWxrYW5faGFuZGxlX3NldF9jb250ZXh0KCkuCisgICAqLworfQorCitHc3RRdWVyeSAqCitnc3RfdnVsa2FuX2xvY2FsX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIGNvbnN0IGdjaGFyICogY29udGV4dF90eXBlLCBnYm9vbGVhbiBzZXRfY29udGV4dCkKK3sKKyAgR3N0UXVlcnkgKnF1ZXJ5OworICBHc3RDb250ZXh0ICpjdHh0OworCisgIF9pbml0X2NvbnRleHRfZGVidWcgKCk7CisKKyAgLyogIDJhKSBRdWVyeSBkb3duc3RyZWFtIHdpdGggR1NUX1FVRVJZX0NPTlRFWFQgZm9yIHRoZSBjb250ZXh0IGFuZAorICAgKiAgICAgIGNoZWNrIGlmIGRvd25zdHJlYW0gYWxyZWFkeSBoYXMgYSBjb250ZXh0IG9mIHRoZSBzcGVjaWZpYyB0eXBlCisgICAqICAyYikgUXVlcnkgdXBzdHJlYW0gYXMgYWJvdmUuCisgICAqLworICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfY29udGV4dCAoY29udGV4dF90eXBlKTsKKyAgaWYgKGdzdF92dWxrYW5fcnVuX3F1ZXJ5IChlbGVtZW50LCBxdWVyeSwgR1NUX1BBRF9TUkMpKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7CisgICAgR1NUX0NBVF9JTkZPX09CSkVDVCAoR1NUX0NBVF9DT05URVhULCBlbGVtZW50LAorICAgICAgICAiZm91bmQgY29udGV4dCAoJXApIGluIGRvd25zdHJlYW0gcXVlcnkiLCBjdHh0KTsKKyAgICBpZiAoc2V0X2NvbnRleHQpCisgICAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY3R4dCk7CisgIH0gZWxzZSBpZiAoZ3N0X3Z1bGthbl9ydW5fcXVlcnkgKGVsZW1lbnQsIHF1ZXJ5LCBHU1RfUEFEX1NJTkspKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7CisgICAgR1NUX0NBVF9JTkZPX09CSkVDVCAoR1NUX0NBVF9DT05URVhULCBlbGVtZW50LAorICAgICAgICAiZm91bmQgY29udGV4dCAoJXApIGluIHVwc3RyZWFtIHF1ZXJ5IiwgY3R4dCk7CisgICAgaWYgKHNldF9jb250ZXh0KQorICAgICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQgKGVsZW1lbnQsIGN0eHQpOworICB9IGVsc2UgeworICAgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworICAgIHF1ZXJ5ID0gTlVMTDsKKyAgfQorCisgIHJldHVybiBxdWVyeTsKK30KKworc3RhdGljIHZvaWQKK192a19kaXNwbGF5X2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdFZ1bGthbkRpc3BsYXkgKiogZGlzcGxheV9wdHIpCit7CisgIGdzdF92dWxrYW5fZ2xvYmFsX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsCisgICAgICBHU1RfVlVMS0FOX0RJU1BMQVlfQ09OVEVYVF9UWVBFX1NUUik7Cit9CisKKy8qICA0KSBDcmVhdGUgYSBjb250ZXh0IGJ5IGl0c2VsZiBhbmQgcG9zdCBhIEdTVF9NRVNTQUdFX0hBVkVfQ09OVEVYVAorICogICAgIG1lc3NhZ2UuCisgKi8KKy8qCisgKiBAZWxlbWVudDogKHRyYW5zZmVyIG5vbmUpOgorICogQGNvbnRleHQ6ICh0cmFuc2ZlciBmdWxsKToKKyAqLworc3RhdGljIHZvaWQKK192a19jb250ZXh0X3Byb3BhZ2F0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdENvbnRleHQgKiBjb250ZXh0KQoreworICBHc3RNZXNzYWdlICptc2c7CisKKyAgX2luaXRfY29udGV4dF9kZWJ1ZyAoKTsKKworICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7CisKKyAgR1NUX0NBVF9JTkZPX09CSkVDVCAoR1NUX0NBVF9DT05URVhULCBlbGVtZW50LAorICAgICAgInBvc3RpbmcgaGF2ZSBjb250ZXh0ICglIiBHU1RfUFRSX0ZPUk1BVCAiKSBtZXNzYWdlIiwgY29udGV4dCk7CisgIG1zZyA9IGdzdF9tZXNzYWdlX25ld19oYXZlX2NvbnRleHQgKEdTVF9PQkpFQ1RfQ0FTVCAoZWxlbWVudCksIGNvbnRleHQpOworICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UX0NBU1QgKGVsZW1lbnQpLCBtc2cpOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9lbnN1cmVfZWxlbWVudF9kYXRhIChncG9pbnRlciBlbGVtZW50LAorICAgIEdzdFZ1bGthbkRpc3BsYXkgKiogZGlzcGxheV9wdHIsIEdzdFZ1bGthbkluc3RhbmNlICoqIGluc3RhbmNlX3B0cikKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGVsZW1lbnQgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGlzcGxheV9wdHIgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoaW5zdGFuY2VfcHRyICE9IE5VTEwsIEZBTFNFKTsKKworICAvKiAgMSkgQ2hlY2sgaWYgdGhlIGVsZW1lbnQgYWxyZWFkeSBoYXMgYSBjb250ZXh0IG9mIHRoZSBzcGVjaWZpYworICAgKiAgICAgdHlwZS4KKyAgICovCisgIGlmICghKmluc3RhbmNlX3B0cikgeworICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgICAgZ3N0X3Z1bGthbl9nbG9iYWxfY29udGV4dF9xdWVyeSAoZWxlbWVudCwKKyAgICAgICAgR1NUX1ZVTEtBTl9JTlNUQU5DRV9DT05URVhUX1RZUEVfU1RSKTsKKworICAgIC8qIE5laWdoYm91ciBmb3VuZCBhbmQgaXQgdXBkYXRlZCB0aGUgZGlzcGxheSAqLworICAgIGlmICghKmluc3RhbmNlX3B0cikgeworICAgICAgR3N0Q29udGV4dCAqY29udGV4dDsKKworICAgICAgLyogSWYgbm8gbmVpZ2hib29yLCBvciBhcHBsaWNhdGlvbiBub3QgaW50ZXJlc3RlZCwgdXNlIHN5c3RlbSBkZWZhdWx0ICovCisgICAgICAqaW5zdGFuY2VfcHRyID0gZ3N0X3Z1bGthbl9pbnN0YW5jZV9uZXcgKCk7CisKKyAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKEdTVF9WVUxLQU5fSU5TVEFOQ0VfQ09OVEVYVF9UWVBFX1NUUiwgVFJVRSk7CisgICAgICBnc3RfY29udGV4dF9zZXRfdnVsa2FuX2luc3RhbmNlIChjb250ZXh0LCAqaW5zdGFuY2VfcHRyKTsKKworICAgICAgX3ZrX2NvbnRleHRfcHJvcGFnYXRlIChlbGVtZW50LCBjb250ZXh0KTsKKyAgICB9CisKKyAgICBpZiAoIWdzdF92dWxrYW5faW5zdGFuY2Vfb3BlbiAoKmluc3RhbmNlX3B0ciwgJmVycm9yKSkgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGVsZW1lbnQsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgKCJGYWlsZWQgdG8gY3JlYXRlIHZ1bGthbiBpbnN0YW5jZSIpLCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpKTsKKyAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9CisKKyAgaWYgKCEqZGlzcGxheV9wdHIpIHsKKyAgICBfdmtfZGlzcGxheV9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBkaXNwbGF5X3B0cik7CisKKyAgICAvKiBOZWlnaGJvdXIgZm91bmQgYW5kIGl0IHVwZGF0ZWQgdGhlIGRpc3BsYXkgKi8KKyAgICBpZiAoISpkaXNwbGF5X3B0cikgeworICAgICAgR3N0Q29udGV4dCAqY29udGV4dDsKKworICAgICAgLyogaW5zdGFuY2UgaXMgcmVxdWlyZWQgYmVmb3JlIHRoZSBkaXNwbGF5ICovCisgICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoKmluc3RhbmNlX3B0ciAhPSBOVUxMLCBGQUxTRSk7CisKKyAgICAgIC8qIElmIG5vIG5laWdoYm9vciwgb3IgYXBwbGljYXRpb24gbm90IGludGVyZXN0ZWQsIHVzZSBzeXN0ZW0gZGVmYXVsdCAqLworICAgICAgKmRpc3BsYXlfcHRyID0gZ3N0X3Z1bGthbl9kaXNwbGF5X25ldyAoKmluc3RhbmNlX3B0cik7CisKKyAgICAgIGNvbnRleHQgPSBnc3RfY29udGV4dF9uZXcgKEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSLCBUUlVFKTsKKyAgICAgIGdzdF9jb250ZXh0X3NldF92dWxrYW5fZGlzcGxheSAoY29udGV4dCwgKmRpc3BsYXlfcHRyKTsKKworICAgICAgX3ZrX2NvbnRleHRfcHJvcGFnYXRlIChlbGVtZW50LCBjb250ZXh0KTsKKyAgICB9CisgIH0KKworICByZXR1cm4gKmRpc3BsYXlfcHRyICE9IE5VTEwgJiYgKmluc3RhbmNlX3B0ciAhPSBOVUxMOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9oYW5kbGVfc2V0X2NvbnRleHQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXksIEdzdFZ1bGthbkluc3RhbmNlICoqIGluc3RhbmNlKQoreworICBHc3RWdWxrYW5EaXNwbGF5ICpkaXNwbGF5X3JlcGxhY2VtZW50ID0gTlVMTDsKKyAgR3N0VnVsa2FuSW5zdGFuY2UgKmluc3RhbmNlX3JlcGxhY2VtZW50ID0gTlVMTDsKKyAgY29uc3QgZ2NoYXIgKmNvbnRleHRfdHlwZTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZGlzcGxheSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbnN0YW5jZSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgaWYgKCFjb250ZXh0KQorICAgIHJldHVybiBGQUxTRTsKKworICBjb250ZXh0X3R5cGUgPSBnc3RfY29udGV4dF9nZXRfY29udGV4dF90eXBlIChjb250ZXh0KTsKKworICBpZiAoZ19zdHJjbXAwIChjb250ZXh0X3R5cGUsIEdTVF9WVUxLQU5fRElTUExBWV9DT05URVhUX1RZUEVfU1RSKSA9PSAwKSB7CisgICAgaWYgKCFnc3RfY29udGV4dF9nZXRfdnVsa2FuX2Rpc3BsYXkgKGNvbnRleHQsICZkaXNwbGF5X3JlcGxhY2VtZW50KSkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbGVtZW50LCAiRmFpbGVkIHRvIGdldCBkaXNwbGF5IGZyb20gY29udGV4dCIpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfSBlbHNlIGlmIChnX3N0cmNtcDAgKGNvbnRleHRfdHlwZSwKKyAgICAgICAgICBHU1RfVlVMS0FOX0lOU1RBTkNFX0NPTlRFWFRfVFlQRV9TVFIpID09IDApIHsKKyAgICBpZiAoIWdzdF9jb250ZXh0X2dldF92dWxrYW5faW5zdGFuY2UgKGNvbnRleHQsICZpbnN0YW5jZV9yZXBsYWNlbWVudCkpIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZWxlbWVudCwgIkZhaWxlZCB0byBnZXQgaW5zdGFuY2UgZnJvbSBjb250ZXh0Iik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9CisKKyAgaWYgKGRpc3BsYXlfcmVwbGFjZW1lbnQpIHsKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICpvbGQgPSAqZGlzcGxheTsKKyAgICAqZGlzcGxheSA9IGRpc3BsYXlfcmVwbGFjZW1lbnQ7CisKKyAgICBpZiAob2xkKQorICAgICAgZ3N0X29iamVjdF91bnJlZiAob2xkKTsKKyAgfQorCisgIGlmIChpbnN0YW5jZV9yZXBsYWNlbWVudCkgeworICAgIEdzdFZ1bGthbkluc3RhbmNlICpvbGQgPSAqaW5zdGFuY2U7CisgICAgKmluc3RhbmNlID0gaW5zdGFuY2VfcmVwbGFjZW1lbnQ7CisKKyAgICBpZiAob2xkKQorICAgICAgZ3N0X29iamVjdF91bnJlZiAob2xkKTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl9oYW5kbGVfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFF1ZXJ5ICogcXVlcnksCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKiBkaXNwbGF5LCBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSwKKyAgICBHc3RWdWxrYW5EZXZpY2UgKiogZGV2aWNlKQoreworICBpZiAoZ3N0X3Z1bGthbl9kaXNwbGF5X2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBxdWVyeSwgZGlzcGxheSkpCisgICAgcmV0dXJuIFRSVUU7CisgIGlmIChnc3RfdnVsa2FuX2luc3RhbmNlX2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBxdWVyeSwgaW5zdGFuY2UpKQorICAgIHJldHVybiBUUlVFOworICBpZiAoZ3N0X3Z1bGthbl9kZXZpY2VfaGFuZGxlX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsIHF1ZXJ5LCBkZXZpY2UpKQorICAgIHJldHVybiBUUlVFOworCisgIHJldHVybiBGQUxTRTsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4vdmt1dGlscy5oIGIvZXh0L3Z1bGthbi92a3V0aWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRmNjM5NQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4vdmt1dGlscy5oCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKyNpZm5kZWYgX1ZLX1VUSUxTX0hfCisjZGVmaW5lIF9WS19VVElMU19IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPHZrLmg+CisKK0dfQkVHSU5fREVDTFMKKworZ2Jvb2xlYW4gZ3N0X3Z1bGthbl9lbnN1cmVfZWxlbWVudF9kYXRhIChncG9pbnRlciBlbGVtZW50LAorICAgIEdzdFZ1bGthbkRpc3BsYXkgKipkaXNwbGF5X3B0ciwgR3N0VnVsa2FuSW5zdGFuY2UgKiogaW5zdGFuY2VfcHRyKTsKK2dib29sZWFuIGdzdF92dWxrYW5faGFuZGxlX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0VnVsa2FuRGlzcGxheSAqKiBkaXNwbGF5LCBHc3RWdWxrYW5JbnN0YW5jZSAqKiBpbnN0YW5jZSk7CitnYm9vbGVhbiBnc3RfdnVsa2FuX2hhbmRsZV9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UXVlcnkgKiBxdWVyeSwKKyAgICBHc3RWdWxrYW5EaXNwbGF5ICoqIGRpc3BsYXksIEdzdFZ1bGthbkluc3RhbmNlICoqIGluc3RhbmNlLCBHc3RWdWxrYW5EZXZpY2UgKiogZGV2aWNlKTsKKwordm9pZCBnc3RfdnVsa2FuX2dsb2JhbF9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgY29uc3QgZ2NoYXIgKiBjb250ZXh0X3R5cGUpOworR3N0UXVlcnkgKiBnc3RfdnVsa2FuX2xvY2FsX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBjb25zdCBnY2hhciAqIGNvbnRleHRfdHlwZSwgZ2Jvb2xlYW4gc2V0X2NvbnRleHQpOworZ2Jvb2xlYW4gZ3N0X3Z1bGthbl9ydW5fcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorICAgIEdzdFF1ZXJ5ICogcXVlcnksIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24pOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLypfVktfVVRJTFNfSF8gKi8KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNjb21tb24uaCBiL2V4dC92dWxrYW4vdmt1dGlsc19wcml2YXRlLmgKc2ltaWxhcml0eSBpbmRleCA2MCUKcmVuYW1lIGZyb20gZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oCnJlbmFtZSB0byBleHQvdnVsa2FuL3ZrdXRpbHNfcHJpdmF0ZS5oCmluZGV4IDcxNzcxYWUuLmFlYmY0NGIgMTAwNjQ0Ci0tLSBhL2V4dC9vcHVzL2dzdG9wdXNjb21tb24uaAorKysgYi9leHQvdnVsa2FuL3ZrdXRpbHNfcHJpdmF0ZS5oCkBAIC0xLDUgKzEsNiBAQAotLyogR1N0cmVhbWVyIE9wdXMgRW5jb2RlcgotICogQ29weXJpZ2h0IChDKSAyMDA5IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbi5kcm9lZ2VAY29sbGFib3JhLmNvLnVrPgorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTYsMjIgKzE3LDE3IEBACiAgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCi0KLQotI2lmbmRlZiBfX0dTVF9PUFVTX0NPTU1PTl9IX18KLSNkZWZpbmUgX19HU1RfT1BVU19DT01NT05fSF9fCisjaWZuZGVmIF9WS19VVElMU19QUklWQVRFX0hfCisjZGVmaW5lIF9WS19VVElMU19QUklWQVRFX0hfCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisjaW5jbHVkZSAidmsuaCIKIAogR19CRUdJTl9ERUNMUwogCi1leHRlcm4gY29uc3QgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gZ3N0X29wdXNfY2hhbm5lbF9wb3NpdGlvbnNbXVs4XTsKLWV4dGVybiBjb25zdCBjaGFyICpnc3Rfb3B1c19jaGFubmVsX25hbWVzW107Ci1leHRlcm4gdm9pZCBnc3Rfb3B1c19jb21tb25fbG9nX2NoYW5uZWxfbWFwcGluZ190YWJsZSAoR3N0RWxlbWVudCAqZWxlbWVudCwKLSAgICBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0ZWdvcnksIGNvbnN0IGNoYXIgKm1zZywKLSAgICBpbnQgbl9jaGFubmVscywgY29uc3QgZ3VpbnQ4ICp0YWJsZSk7CitnYm9vbGVhbiBfY2hlY2tfZm9yX2FsbF9sYXllcnMgKHVpbnQzMl90IGNoZWNrX2NvdW50LCBjb25zdCBjaGFyICoqIGNoZWNrX25hbWVzLAorICAgIHVpbnQzMl90IGxheWVyX2NvdW50LCBWa0xheWVyUHJvcGVydGllcyAqIGxheWVycyk7CiAKIEdfRU5EX0RFQ0xTCiAKLSNlbmRpZiAvKiBfX0dTVF9PUFVTX0NPTU1PTl9IX18gKi8KKyNlbmRpZiAvKl9WS19VVElMU19IXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3dpbmRvdy5jIGIvZXh0L3Z1bGthbi92a3dpbmRvdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhYTNjNDcKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3Zrd2luZG93LmMKQEAgLTAsMCArMSwzMDggQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046Z3N0Z2x3aW5kb3cKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogd2luZG93L3N1cmZhY2UgYWJzdHJhY3Rpb24KKyAqIEB0aXRsZTogR3N0VnVsa2FuV2luZG93CisgKiBAc2VlX2Fsc286ICNHc3RHTENvbnRleHQsICNHc3RHTERpc3BsYXkKKyAqCisgKiBHc3RWdWxrYW5XaW5kb3cgcmVwcmVzZW50cyBhIHdpbmRvdyB0aGF0IGVsZW1lbnRzIGNhbiByZW5kZXIgaW50by4gIEEgd2luZG93IGNhbgorICogZWl0aGVyIGJlIGEgdXNlciB2aXNpYmxlIHdpbmRvdyAob25zY3JlZW4pIG9yIGhpZGRlbiAob2Zmc2NyZWVuKS4KKyAqLworCisjaWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z21vZHVsZS5oPgorI2luY2x1ZGUgPHN0ZGlvLmg+CisKKyNpbmNsdWRlICJ2a3dpbmRvdy5oIgorCisjaWYgR1NUX1ZVTEtBTl9IQVZFX1dJTkRPV19YMTEKKyNpbmNsdWRlICJ4MTEvdmt3aW5kb3dfeDExLmgiCisjZW5kaWYKKyNpZiBHU1RfVlVMS0FOX0hBVkVfV0lORE9XX1hDQgorI2luY2x1ZGUgInhjYi92a3dpbmRvd194Y2IuaCIKKyNlbmRpZgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnVsa2FuX3dpbmRvd19kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZIChHU1RfQ0FUX0RFRkFVTFQpOworCisjZGVmaW5lIGdzdF92dWxrYW5fd2luZG93X3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX0FCU1RSQUNUX1RZUEUgKEdzdFZ1bGthbldpbmRvdywgZ3N0X3Z1bGthbl93aW5kb3csIEdTVF9UWVBFX09CSkVDVCk7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfR0VUX1BSSVZBVEUobykgXAorICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVywgR3N0VnVsa2FuV2luZG93UHJpdmF0ZSkpCisKK3N0cnVjdCBfR3N0VnVsa2FuV2luZG93UHJpdmF0ZQoreworICBndWludCBzdXJmYWNlX3dpZHRoOworICBndWludCBzdXJmYWNlX2hlaWdodDsKK307CisKK3N0YXRpYyB2b2lkIGdzdF92dWxrYW5fd2luZG93X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkR1bW15V2luZG93Cit7CisgIEdzdFZ1bGthbldpbmRvdyBwYXJlbnQ7CisKKyAgZ3VpbnRwdHIgaGFuZGxlOworfSBHc3RWdWxrYW5EdW1teVdpbmRvdzsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkR1bW15V2luZG93Q2FzcworeworICBHc3RWdWxrYW5XaW5kb3dDbGFzcyBwYXJlbnQ7Cit9IEdzdFZ1bGthbkR1bW15V2luZG93Q2xhc3M7CisKK0dzdFZ1bGthbkR1bW15V2luZG93ICpnc3RfdnVsa2FuX2R1bW15X3dpbmRvd19uZXcgKHZvaWQpOworCitlbnVtCit7CisgIFNJR05BTF8wLAorICBTSUdOQUxfQ0xPU0UsCisgIFNJR05BTF9EUkFXLAorICBMQVNUX1NJR05BTAorfTsKKworc3RhdGljIGd1aW50IGdzdF92dWxrYW5fd2luZG93X3NpZ25hbHNbTEFTVF9TSUdOQUxdID0geyAwIH07CisKK3N0YXRpYyBnYm9vbGVhbgorX2FjY3VtX2xvZ2ljYWxfYW5kIChHU2lnbmFsSW52b2NhdGlvbkhpbnQgKiBpaGludCwgR1ZhbHVlICogcmV0dXJuX2FjY3UsCisgICAgY29uc3QgR1ZhbHVlICogaGFuZGxlcl9yZXR1cm4sIGdwb2ludGVyIGRhdGEpCit7CisgIGdib29sZWFuIHZhbCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKGhhbmRsZXJfcmV0dXJuKTsKKyAgZ2Jvb2xlYW4gdmFsMiA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHJldHVybl9hY2N1KTsKKworICBnX3ZhbHVlX3NldF9ib29sZWFuIChyZXR1cm5fYWNjdSwgdmFsICYmIHZhbDIpOworCisgIHJldHVybiBUUlVFOworfQorCitHUXVhcmsKK2dzdF92dWxrYW5fd2luZG93X2Vycm9yX3F1YXJrICh2b2lkKQoreworICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKCJnc3QtZ2wtd2luZG93LWVycm9yLXF1YXJrIik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Z1bGthbl93aW5kb3dfZGVmYXVsdF9vcGVuIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd19kZWZhdWx0X2Nsb3NlIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7Cit9CisKK3N0YXRpYyB2b2lkCitfaW5pdF9kZWJ1ZyAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAidnVsa2Fud2luZG93IiwgMCwKKyAgICAgICAgIlZ1bGthbiBXaW5kb3ciKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfaW5pdCAoR3N0VnVsa2FuV2luZG93ICogd2luZG93KQoreworICB3aW5kb3ctPnByaXYgPQorICAgICAgR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICh3aW5kb3csIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1csCisgICAgICBHc3RWdWxrYW5XaW5kb3dQcml2YXRlKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fd2luZG93X2NsYXNzX2luaXQgKEdzdFZ1bGthbldpbmRvd0NsYXNzICoga2xhc3MpCit7CisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0VnVsa2FuV2luZG93UHJpdmF0ZSkpOworCisgIGtsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dWxrYW5fd2luZG93X2RlZmF1bHRfb3Blbik7CisgIGtsYXNzLT5jbG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnVsa2FuX3dpbmRvd19kZWZhdWx0X2Nsb3NlKTsKKworICBnc3RfdnVsa2FuX3dpbmRvd19zaWduYWxzW1NJR05BTF9DTE9TRV0gPQorICAgICAgZ19zaWduYWxfbmV3ICgiY2xvc2UiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLCBHX1NJR05BTF9SVU5fTEFTVCwgMCwKKyAgICAgIChHU2lnbmFsQWNjdW11bGF0b3IpIF9hY2N1bV9sb2dpY2FsX2FuZCwgTlVMTCwgTlVMTCwgR19UWVBFX0JPT0xFQU4sIDApOworCisgIGdzdF92dWxrYW5fd2luZG93X3NpZ25hbHNbU0lHTkFMX0RSQVddID0KKyAgICAgIGdfc2lnbmFsX25ldyAoImRyYXciLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLCBHX1NJR05BTF9SVU5fTEFTVCwgMCwKKyAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAwKTsKKworICBHX09CSkVDVF9DTEFTUyAoa2xhc3MpLT5maW5hbGl6ZSA9IGdzdF92dWxrYW5fd2luZG93X2ZpbmFsaXplOworCisgIF9pbml0X2RlYnVnICgpOworfQorCisvKioKKyAqIGdzdF92dWxrYW5fd2luZG93X25ldzoKKyAqIEBkaXNwbGF5OiBhICNHc3RHTERpc3BsYXkKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNHc3RWdWxrYW5XaW5kb3cgdXNpbmcgQGRpc3BsYXkncyBjb25uZWN0aW9uCisgKgorICogU2luY2U6IDEuMTAKKyAqLworR3N0VnVsa2FuV2luZG93ICoKK2dzdF92dWxrYW5fd2luZG93X25ldyAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpCit7CisgIEdzdFZ1bGthbldpbmRvdyAqd2luZG93ID0gTlVMTDsKKyAgY29uc3QgZ2NoYXIgKnVzZXJfY2hvaWNlOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkaXNwbGF5ICE9IE5VTEwsIE5VTEwpOworCisgIF9pbml0X2RlYnVnICgpOworCisgIHVzZXJfY2hvaWNlID0gZ19nZXRlbnYgKCJHU1RfVlVMS0FOX1dJTkRPVyIpOworICBHU1RfSU5GTyAoImNyZWF0aW5nIGEgd2luZG93LCB1c2VyIGNob2ljZTolcyIsIHVzZXJfY2hvaWNlKTsKKyNpZiBHU1RfVlVMS0FOX0hBVkVfV0lORE9XX1gxMQorICBpZiAoIXdpbmRvdyAmJiAoIXVzZXJfY2hvaWNlIHx8IGdfc3Ryc3RyX2xlbiAodXNlcl9jaG9pY2UsIDMsICJ4MTEiKSkpCisgICAgd2luZG93ID0gR1NUX1ZVTEtBTl9XSU5ET1cgKGdzdF92dWxrYW5fd2luZG93X3gxMV9uZXcgKGRpc3BsYXkpKTsKKyNlbmRpZgorI2lmIEdTVF9WVUxLQU5fSEFWRV9XSU5ET1dfWENCCisgIGlmICghd2luZG93ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgMywgInhjYiIpKSkKKyAgICB3aW5kb3cgPSBHU1RfVlVMS0FOX1dJTkRPVyAoZ3N0X3Z1bGthbl93aW5kb3dfeGNiX25ldyAoZGlzcGxheSkpOworI2VuZGlmCisgIGlmICghd2luZG93KSB7CisgICAgLyogc3ViY2xhc3MgcmV0dXJuZWQgYSBOVUxMIHdpbmRvdyAqLworICAgIEdTVF9XQVJOSU5HICgiQ291bGQgbm90IGNyZWF0ZSB3aW5kb3cuIHVzZXIgc3BlY2lmaWVkICVzLCBjcmVhdGluZyBkdW1teSIKKyAgICAgICAgIiB3aW5kb3ciLCB1c2VyX2Nob2ljZSA/IHVzZXJfY2hvaWNlIDogIihudWxsKSIpOworCisgICAgd2luZG93ID0gR1NUX1ZVTEtBTl9XSU5ET1cgKGdzdF92dWxrYW5fZHVtbXlfd2luZG93X25ldyAoKSk7CisgIH0KKworICB3aW5kb3ctPmRpc3BsYXkgPSBnc3Rfb2JqZWN0X3JlZiAoZGlzcGxheSk7CisKKyAgcmV0dXJuIHdpbmRvdzsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fd2luZG93X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RWdWxrYW5XaW5kb3cgKndpbmRvdyA9IEdTVF9WVUxLQU5fV0lORE9XIChvYmplY3QpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvdy0+ZGlzcGxheSk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF92dWxrYW5fd2luZG93X3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitHc3RWdWxrYW5EaXNwbGF5ICoKK2dzdF92dWxrYW5fd2luZG93X2dldF9kaXNwbGF5IChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX1dJTkRPVyAod2luZG93KSwgTlVMTCk7CisKKyAgcmV0dXJuIGdzdF9vYmplY3RfcmVmICh3aW5kb3ctPmRpc3BsYXkpOworfQorCitWa1N1cmZhY2VLSFIKK2dzdF92dWxrYW5fd2luZG93X2dldF9zdXJmYWNlIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0VnVsa2FuV2luZG93Q2xhc3MgKmtsYXNzOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX1dJTkRPVyAod2luZG93KSwgTlVMTCk7CisgIGtsYXNzID0gR1NUX1ZVTEtBTl9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoa2xhc3MtPmdldF9zdXJmYWNlICE9IE5VTEwsIE5VTEwpOworCisgIHJldHVybiBrbGFzcy0+Z2V0X3N1cmZhY2UgKHdpbmRvdywgZXJyb3IpOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X3ByZXNlbnRhdGlvbl9zdXBwb3J0IChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csCisgICAgR3N0VnVsa2FuRGV2aWNlICogZGV2aWNlLCBndWludDMyIHF1ZXVlX2ZhbWlseV9pZHgpCit7CisgIEdzdFZ1bGthbldpbmRvd0NsYXNzICprbGFzczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9XSU5ET1cgKHdpbmRvdyksIEZBTFNFKTsKKyAga2xhc3MgPSBHU1RfVlVMS0FOX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChrbGFzcy0+Z2V0X3ByZXNlbnRhdGlvbl9zdXBwb3J0ICE9IE5VTEwsIEZBTFNFKTsKKworICByZXR1cm4ga2xhc3MtPmdldF9wcmVzZW50YXRpb25fc3VwcG9ydCAod2luZG93LCBkZXZpY2UsIHF1ZXVlX2ZhbWlseV9pZHgpOworfQorCitnYm9vbGVhbgorZ3N0X3Z1bGthbl93aW5kb3dfb3BlbiAoR3N0VnVsa2FuV2luZG93ICogd2luZG93LCBHRXJyb3IgKiogZXJyb3IpCit7CisgIEdzdFZ1bGthbldpbmRvd0NsYXNzICprbGFzczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZVTEtBTl9XSU5ET1cgKHdpbmRvdyksIEZBTFNFKTsKKyAga2xhc3MgPSBHU1RfVlVMS0FOX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChrbGFzcy0+b3BlbiAhPSBOVUxMLCBGQUxTRSk7CisKKyAgcmV0dXJuIGtsYXNzLT5vcGVuICh3aW5kb3csIGVycm9yKTsKK30KKwordm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfY2xvc2UgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdykKK3sKKyAgR3N0VnVsa2FuV2luZG93Q2xhc3MgKmtsYXNzOworICBnYm9vbGVhbiB0b19jbG9zZTsKKworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX1dJTkRPVyAod2luZG93KSk7CisgIGtsYXNzID0gR1NUX1ZVTEtBTl9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOworICBnX3JldHVybl9pZl9mYWlsIChrbGFzcy0+Y2xvc2UgIT0gTlVMTCk7CisKKyAgZ19zaWduYWxfZW1pdCAod2luZG93LCBnc3RfdnVsa2FuX3dpbmRvd19zaWduYWxzW1NJR05BTF9DTE9TRV0sIDAsICZ0b19jbG9zZSk7CisKKyAgaWYgKHRvX2Nsb3NlKQorICAgIGtsYXNzLT5jbG9zZSAod2luZG93KTsKK30KKwordm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfcmVzaXplIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csIGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0KQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfVlVMS0FOX1dJTkRPVyAod2luZG93KSk7CisKKyAgd2luZG93LT5wcml2LT5zdXJmYWNlX3dpZHRoID0gd2lkdGg7CisgIHdpbmRvdy0+cHJpdi0+c3VyZmFjZV9oZWlnaHQgPSBoZWlnaHQ7CisKKyAgLyogWFhYOiBwb3NzaWJseSBxdWV1ZSBhIHJlc2l6ZS9yZWRyYXcgKi8KK30KKwordm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfcmVkcmF3IChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19WVUxLQU5fV0lORE9XICh3aW5kb3cpKTsKKworICBnX3NpZ25hbF9lbWl0ICh3aW5kb3csIGdzdF92dWxrYW5fd2luZG93X3NpZ25hbHNbU0lHTkFMX0RSQVddLCAwKTsKK30KKworR1R5cGUgZ3N0X3Z1bGthbl9kdW1teV93aW5kb3dfZ2V0X3R5cGUgKHZvaWQpOworR19ERUZJTkVfVFlQRSAoR3N0VnVsa2FuRHVtbXlXaW5kb3csIGdzdF92dWxrYW5fZHVtbXlfd2luZG93LAorICAgIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1cpOworCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kdW1teV93aW5kb3dfY2xhc3NfaW5pdCAoR3N0VnVsa2FuRHVtbXlXaW5kb3dDbGFzcyAqIGtsYXNzKQoreworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kdW1teV93aW5kb3dfaW5pdCAoR3N0VnVsa2FuRHVtbXlXaW5kb3cgKiBkdW1teSkKK3sKKyAgZHVtbXktPmhhbmRsZSA9IDA7Cit9CisKK0dzdFZ1bGthbkR1bW15V2luZG93ICoKK2dzdF92dWxrYW5fZHVtbXlfd2luZG93X25ldyAodm9pZCkKK3sKKyAgcmV0dXJuIGdfb2JqZWN0X25ldyAoZ3N0X3Z1bGthbl9kdW1teV93aW5kb3dfZ2V0X3R5cGUgKCksIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi92a3dpbmRvdy5oIGIvZXh0L3Z1bGthbi92a3dpbmRvdy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4YmU4MGEKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3Zrd2luZG93LmgKQEAgLTAsMCArMSwxMTUgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAwOCBKdWxpZW4gSXNvcmNlIDxqdWxpZW4uaXNvcmNlQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1ZVTEtBTl9XSU5ET1dfSF9fCisjZGVmaW5lIF9fR1NUX1ZVTEtBTl9XSU5ET1dfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKKyNpbmNsdWRlIDx2ay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVyAgICAgICAgIChnc3RfdnVsa2FuX3dpbmRvd19nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVlVMS0FOX1dJTkRPVyhvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVywgR3N0VnVsa2FuV2luZG93KSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoayksIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1csIEdzdFZ1bGthbldpbmRvd0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9XSU5ET1cobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1cpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1dJTkRPV19DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPVykpCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1csIEdzdFZ1bGthbldpbmRvd0NsYXNzKSkKK0dUeXBlIGdzdF92dWxrYW5fd2luZG93X2dldF90eXBlICAgICAodm9pZCk7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfTE9DSyh3KSBnX211dGV4X2xvY2soJkdTVF9WVUxLQU5fV0lORE9XKHcpLT5sb2NrKQorI2RlZmluZSBHU1RfVlVMS0FOX1dJTkRPV19VTkxPQ0sodykgZ19tdXRleF91bmxvY2soJkdTVF9WVUxLQU5fV0lORE9XKHcpLT5sb2NrKQorI2RlZmluZSBHU1RfVlVMS0FOX1dJTkRPV19HRVRfTE9DSyh3KSAoJkdTVF9WVUxLQU5fV0lORE9XKHcpLT5sb2NrKQorCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XX0VSUk9SIChnc3RfdnVsa2FuX3dpbmRvd19lcnJvcl9xdWFyayAoKSkKK0dRdWFyayBnc3RfdnVsa2FuX3dpbmRvd19lcnJvcl9xdWFyayAodm9pZCk7CisKK3R5cGVkZWYgZW51bQoreworICBHU1RfVlVMS0FOX1dJTkRPV19FUlJPUl9GQUlMRUQsCisgIEdTVF9WVUxLQU5fV0lORE9XX0VSUk9SX09MRF9MSUJTLAorICBHU1RfVlVMS0FOX1dJTkRPV19FUlJPUl9SRVNPVVJDRV9VTkFWQUlMQUJMRSwKK30gR3N0VnVsa2FuV2luZG93RXJyb3I7CisKKy8qKgorICogR3N0VnVsa2FuV2luZG93OgorICoKKyAqICNHc3RWdWxrYW5XaW5kb3cgaXMgYW4gb3BhcXVlIHN0cnVjdCBhbmQgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUKKyAqIHByb3ZpZGVkIGFwaS4KKyAqLworc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3cgeworICAvKjwgcHJpdmF0ZSA+Ki8KKyAgR3N0T2JqZWN0IHBhcmVudDsKKworICBHc3RWdWxrYW5EaXNwbGF5ICAgICAgICpkaXNwbGF5OworCisgIEdNdXRleCAgICAgICAgICAgICAgICAgIGxvY2s7CisKKyAgR3N0VnVsa2FuV2luZG93UHJpdmF0ZSAqcHJpdjsKKworICBncG9pbnRlciAgICAgICAgICAgICAgICBfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOworfTsKKworLyoqCisgKiBHc3RWdWxrYW5XaW5kb3dDbGFzczoKKyAqIEBwYXJlbnRfY2xhc3M6IFBhcmVudCBjbGFzcworICogQG9wZW46IG9wZW4gdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGRpc3BsYXkKKyAqIEBjbG9zZTogY2xvc2UgdGhlIGNvbm5lY3Rpb24gdG8gdGhlIGRpc3BsYXkKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dDbGFzcyB7CisgIEdzdE9iamVjdENsYXNzIHBhcmVudF9jbGFzczsKKworICBnYm9vbGVhbiAgICAgICgqb3BlbikgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKmVycm9yKTsKKyAgdm9pZCAgICAgICAgICAoKmNsb3NlKSAgICAgICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5XaW5kb3cgKndpbmRvdyk7CisKKyAgVmtTdXJmYWNlS0hSICAoKmdldF9zdXJmYWNlKSAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5XaW5kb3cgKndpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiplcnJvcik7CisgIGdib29sZWFuICAgICAgKCpnZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQpICAgICAoR3N0VnVsa2FuV2luZG93ICp3aW5kb3csCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQzMiBxdWV1ZV9mYW1pbHlfaWR4KTsKKworICAvKjwgcHJpdmF0ZSA+Ki8KKyAgZ3BvaW50ZXIgX3Jlc2VydmVkW0dTVF9QQURESU5HXTsKK307CisKK0dzdFZ1bGthbldpbmRvdyAqICBnc3RfdnVsa2FuX3dpbmRvd19uZXcgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbkRpc3BsYXkgKmRpc3BsYXkpOworCitHc3RWdWxrYW5EaXNwbGF5ICogZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X2Rpc3BsYXkgICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5XaW5kb3cgKndpbmRvdyk7CitWa1N1cmZhY2VLSFIgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfZ2V0X3N1cmZhY2UgICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5XaW5kb3cgKndpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKmVycm9yKTsKK2dib29sZWFuICAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19nZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VnVsa2FuRGV2aWNlICpkZXZpY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludDMyIHF1ZXVlX2ZhbWlseV9pZHgpOworCitnYm9vbGVhbiAgICAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfb3BlbiAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5XaW5kb3cgKndpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7Cit2b2lkICAgICAgICAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfY2xvc2UgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RWdWxrYW5XaW5kb3cgKndpbmRvdyk7CisKK3ZvaWQgICAgICAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19yZXNpemUgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgaGVpZ2h0KTsKK3ZvaWQgICAgICAgICAgICAgICBnc3RfdnVsa2FuX3dpbmRvd19yZWRyYXcgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFZ1bGthbldpbmRvdyAqd2luZG93KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1ZVTEtBTl9XSU5ET1dfSF9fICovCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbSBiL2V4dC92dWxrYW4veGNiL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdkZWJjZmYKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5hbQpAQCAtMCwwICsxLDI5IEBACisjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIHByb2R1Y2UgTWFrZWZpbGUuaW4KKworbm9pbnN0X0xUTElCUkFSSUVTID0gbGliZ3N0dnVsa2FuLXhjYi5sYQorCitsaWJnc3R2dWxrYW5feGNiX2xhX1NPVVJDRVMgPSBcCisJdmtkaXNwbGF5X3hjYi5jIFwKKwl2a3dpbmRvd194Y2IuYyBcCisJeGNiX2V2ZW50X3NvdXJjZS5jCisKK25vaW5zdF9IRUFERVJTID0gXAorCXZrZGlzcGxheV94Y2IuaCBcCisJdmt3aW5kb3dfeGNiLmggXAorCXhjYl9ldmVudF9zb3VyY2UuaAorCitsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3Bfc3JjZGlyKS9leHQvdnVsa2FuIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQ0ZMQUdTKSBcCisJJChYQ0JfQ0ZMQUdTKQorCitsaWJnc3R2dWxrYW5feGNiX2xhX0xJQkFERCA9IFwKKwkkKFhDQl9MSUJTKQorCitsaWJnc3R2dWxrYW5feGNiX2xhX0xERkxBR1MgPSBcCisJJChHU1RfTElCX0xERkxBR1MpIFwKKwkkKEdTVF9BTExfTERGTEFHUykKZGlmZiAtLWdpdCBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4gYi9leHQvdnVsa2FuL3hjYi9NYWtlZmlsZS5pbgpzaW1pbGFyaXR5IGluZGV4IDgwJQpjb3B5IGZyb20gZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgpjb3B5IHRvIGV4dC92dWxrYW4veGNiL01ha2VmaWxlLmluCmluZGV4IGJhOWU1YTIuLjJlOTcyOWYgMTAwNjQ0Ci0tLSBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUuaW4KQEAgLTkwLDcgKzkwLDcgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLXN1YmRpciA9IGdzdC9saXZlYWRkZXIKK3N1YmRpciA9IGV4dC92dWxrYW4veGNiCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTEzNCw0OCArMTMzLDIxIEBACiBDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCiBDT05GSUdfQ0xFQU5fRklMRVMgPQogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KLWFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwotYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKLSAgICAkKHNyY2RpcikvKikgZj1gZWNobyAiJCRwIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAotICAgICopIGY9JCRwOzsgXAotICBlc2FjOwotYW1fX3N0cmlwX2RpciA9IGY9YGVjaG8gJCRwIHwgc2VkIC1lICdzfF4uKi98fCdgOwotYW1fX2luc3RhbGxfbWF4ID0gNDAKLWFtX19ub2Jhc2Vfc3RyaXBfc2V0dXAgPSBcCi0gIHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2AKLWFtX19ub2Jhc2Vfc3RyaXAgPSBcCi0gIGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwIjsgZG9uZSB8IHNlZCAtZSAic3wkJHNyY2RpcnN0cmlwL3x8IgotYW1fX25vYmFzZV9saXN0ID0gJChhbV9fbm9iYXNlX3N0cmlwX3NldHVwKTsgXAotICBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCAkJHAiOyBkb25lIHwgXAotICBzZWQgInN8ICQkc3JjZGlyc3RyaXAvfCB8OyInIC8gLipcLy8hcy8gLiovIC4vOyBzLFwoIC4qXCkvW14vXSokJCxcMSwnIHwgXAotICAkKEFXSykgJ0JFR0lOIHsgZmlsZXNbIi4iXSA9ICIiIH0geyBmaWxlc1skJDJdID0gZmlsZXNbJCQyXSAiICIgJCQxOyBcCi0gICAgaWYgKCsrblskJDJdID09ICQoYW1fX2luc3RhbGxfbWF4KSkgXAotICAgICAgeyBwcmludCAkJDIsIGZpbGVzWyQkMl07IG5bJCQyXSA9IDA7IGZpbGVzWyQkMl0gPSAiIiB9IH0gXAotICAgIEVORCB7IGZvciAoZGlyIGluIGZpbGVzKSBwcmludCBkaXIsIGZpbGVzW2Rpcl0gfScKLWFtX19iYXNlX2xpc3QgPSBcCi0gIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycgfCBcCi0gIHNlZCAnJCQhTjskJCFOOyQkIU47JCQhTjtzL1xuLyAvZycKLWFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIgPSB7IFwKLSAgdGVzdCAteiAiJCRmaWxlcyIgXAotICAgIHx8IHsgdGVzdCAhIC1kICIkJGRpciIgJiYgdGVzdCAhIC1mICIkJGRpciIgJiYgdGVzdCAhIC1yICIkJGRpciI7IH0gXAotICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKLSAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKLSAgfQotYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCi1MVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQorTFRMSUJSQVJJRVMgPSAkKG5vaW5zdF9MVExJQlJBUklFUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKLQkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9IGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8KLWxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykKK2xpYmdzdHZ1bGthbl94Y2JfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpCithbV9saWJnc3R2dWxrYW5feGNiX2xhX09CSkVDVFMgPSBsaWJnc3R2dWxrYW5feGNiX2xhLXZrZGlzcGxheV94Y2IubG8gXAorCWxpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLmxvIFwKKwlsaWJnc3R2dWxrYW5feGNiX2xhLXhjYl9ldmVudF9zb3VyY2UubG8KK2xpYmdzdHZ1bGthbl94Y2JfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0dnVsa2FuX3hjYl9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKIGFtX192X2x0XzAgPSAtLXNpbGVudAogYW1fX3ZfbHRfMSA9IAotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKLQkkKENDTEQpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKLQkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitsaWJnc3R2dWxrYW5feGNiX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCisJJChsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKKwkkKGxpYmdzdHZ1bGthbl94Y2JfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxMCw4ICsxODIsOCBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQotRElTVF9TT1VSQ0VTID0gJChsaWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUykKK1NPVVJDRVMgPSAkKGxpYmdzdHZ1bGthbl94Y2JfbGFfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGliZ3N0dnVsa2FuX3hjYl9sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXApAQCAtMjc0LDYgKzI0Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzI4NSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzI5NSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszMTMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszMzIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM2OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICszOTUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNDk4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MTIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTI3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNTg2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY0OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjYwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY3MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzA5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NjEsMTYgKzc0OCwzMyBAQAogdG9wX2J1aWxkZGlyID0gQHRvcF9idWlsZGRpckAKIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RsaXZlYWRkZXIubGEKLWxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTID0gbGl2ZWFkZGVyLmMKLWxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQgPSBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKK25vaW5zdF9MVExJQlJBUklFUyA9IGxpYmdzdHZ1bGthbi14Y2IubGEKK2xpYmdzdHZ1bGthbl94Y2JfbGFfU09VUkNFUyA9IFwKKwl2a2Rpc3BsYXlfeGNiLmMgXAorCXZrd2luZG93X3hjYi5jIFwKKwl4Y2JfZXZlbnRfc291cmNlLmMKIAotbGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBsaXZlYWRkZXIuaAorbm9pbnN0X0hFQURFUlMgPSBcCisJdmtkaXNwbGF5X3hjYi5oIFwKKwl2a3dpbmRvd194Y2IuaCBcCisJeGNiX2V2ZW50X3NvdXJjZS5oCisKK2xpYmdzdHZ1bGthbl94Y2JfbGFfQ0ZMQUdTID0gXAorCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJLUkkKHRvcF9zcmNkaXIpL2V4dC92dWxrYW4gXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9DRkxBR1MpIFwKKwkkKFhDQl9DRkxBR1MpCisKK2xpYmdzdHZ1bGthbl94Y2JfbGFfTElCQUREID0gXAorCSQoWENCX0xJQlMpCisKK2xpYmdzdHZ1bGthbl94Y2JfbGFfTERGTEFHUyA9IFwKKwkkKEdTVF9MSUJfTERGTEFHUykgXAorCSQoR1NUX0FMTF9MREZMQUdTKQorCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC03ODQsOSArNzg4LDkgQEAKIAkgICAgICBleGl0IDE7OyBcCiAJICBlc2FjOyBcCiAJZG9uZTsgXAotCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGdzdC9saXZlYWRkZXIvTWFrZWZpbGUnOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUnOyBcCiAJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZQorCSAgJChBVVRPTUFLRSkgLS1nbnUgZXh0L3Z1bGthbi94Y2IvTWFrZWZpbGUKIE1ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAY2FzZSAnJD8nIGluIFwKIAkgICpjb25maWcuc3RhdHVzKikgXApAQCAtODA1LDMzICs4MDksOSBAQAogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAogJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKIAotaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzogJChwbHVnaW5fTFRMSUJSQVJJRVMpCi0JQCQoTk9STUFMX0lOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKLQlsaXN0Mj07IGZvciBwIGluICQkbGlzdDsgZG8gXAotCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gXAotCSAgICBsaXN0Mj0iJCRsaXN0MiAkJHAiOyBcCi0JICBlbHNlIDo7IGZpOyBcCi0JZG9uZTsgXAotCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgXAotCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQocGx1Z2luZGlyKSIgfHwgZXhpdCAxOyBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBcCi0JfQotCi11bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVM6Ci0JQCQoTk9STUFMX1VOSU5TVEFMTCkKLQlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChwbHVnaW5kaXIpIiB8fCBsaXN0PTsgXAotCWZvciBwIGluICQkbGlzdDsgZG8gXAotCSAgJChhbV9fc3RyaXBfZGlyKSBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmJyI7IFwKLQkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiI7IFwKLQlkb25lCi0KLWNsZWFuLXBsdWdpbkxUTElCUkFSSUVTOgotCS10ZXN0IC16ICIkKHBsdWdpbl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQocGx1Z2luX0xUTElCUkFSSUVTKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyBcCitjbGVhbi1ub2luc3RMVExJQlJBUklFUzoKKwktdGVzdCAteiAiJChub2luc3RfTFRMSUJSQVJJRVMpIiB8fCBybSAtZiAkKG5vaW5zdF9MVExJQlJBUklFUykKKwlAbGlzdD0nJChub2luc3RfTFRMSUJSQVJJRVMpJzsgXAogCWxvY3M9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBcCiAJICAgICAgc2VkICdzfF5bXi9dKiQkfC58OyBzfC9bXi9dKiQkfHw7IHN8JCR8L3NvX2xvY2F0aW9uc3wnIHwgXAogCSAgICAgIHNvcnQgLXVgOyBcCkBAIC04NDAsOCArODIwLDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RsaXZlYWRkZXIubGE6ICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0dnVsa2FuLXhjYi5sYTogJChsaWJnc3R2dWxrYW5feGNiX2xhX09CSkVDVFMpICQobGliZ3N0dnVsa2FuX3hjYl9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0dnVsa2FuX3hjYl9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0dnVsa2FuX3hjYl9sYV9MSU5LKSAgJChsaWJnc3R2dWxrYW5feGNiX2xhX09CSkVDVFMpICQobGliZ3N0dnVsa2FuX3hjYl9sYV9MSUJBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi4kKE9CSkVYVCkKQEAgLTg0OSw3ICs4MjksOSBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5feGNiX2xhLXZrZGlzcGxheV94Y2IuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3R2dWxrYW5feGNiX2xhLXZrd2luZG93X3hjYi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtODc1LDEyICs4NTcsMjYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbzogbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlRwbyAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpdmVhZGRlci5jJyBvYmplY3Q9J2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5sbzogdmtkaXNwbGF5X3hjYi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX3hjYl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX3hjYl9sYS12a2Rpc3BsYXlfeGNiLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5feGNiX2xhLXZrZGlzcGxheV94Y2IuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5sbyBgdGVzdCAtZiAndmtkaXNwbGF5X3hjYi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2Rpc3BsYXlfeGNiLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd2a2Rpc3BsYXlfeGNiLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX3hjYl9sYS12a2Rpc3BsYXlfeGNiLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3R2dWxrYW5feGNiX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZ1bGthbl94Y2JfbGEtdmtkaXNwbGF5X3hjYi5sbyBgdGVzdCAtZiAndmtkaXNwbGF5X3hjYi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2a2Rpc3BsYXlfeGNiLmMKKworbGliZ3N0dnVsa2FuX3hjYl9sYS12a3dpbmRvd194Y2IubG86IHZrd2luZG93X3hjYi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX3hjYl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX3hjYl9sYS12a3dpbmRvd194Y2IubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLlRwbyAtYyAtbyBsaWJnc3R2dWxrYW5feGNiX2xhLXZrd2luZG93X3hjYi5sbyBgdGVzdCAtZiAndmt3aW5kb3dfeGNiLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrd2luZG93X3hjYi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2dWxrYW5feGNiX2xhLXZrd2luZG93X3hjYi5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3Zrd2luZG93X3hjYi5jJyBvYmplY3Q9J2xpYmdzdHZ1bGthbl94Y2JfbGEtdmt3aW5kb3dfeGNiLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX3hjYl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5feGNiX2xhLXZrd2luZG93X3hjYi5sbyBgdGVzdCAtZiAndmt3aW5kb3dfeGNiLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZrd2luZG93X3hjYi5jCisKK2xpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5sbzogeGNiX2V2ZW50X3NvdXJjZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX3hjYl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dnVsa2FuX3hjYl9sYS14Y2JfZXZlbnRfc291cmNlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R2dWxrYW5feGNiX2xhLXhjYl9ldmVudF9zb3VyY2UuVHBvIC1jIC1vIGxpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5sbyBgdGVzdCAtZiAneGNiX2V2ZW50X3NvdXJjZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B4Y2JfZXZlbnRfc291cmNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5UcG8gJChERVBESVIpL2xpYmdzdHZ1bGthbl94Y2JfbGEteGNiX2V2ZW50X3NvdXJjZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd4Y2JfZXZlbnRfc291cmNlLmMnIG9iamVjdD0nbGliZ3N0dnVsa2FuX3hjYl9sYS14Y2JfZXZlbnRfc291cmNlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dnVsa2FuX3hjYl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3R2dWxrYW5feGNiX2xhLXhjYl9ldmVudF9zb3VyY2UubG8gYHRlc3QgLWYgJ3hjYl9ldmVudF9zb3VyY2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgeGNiX2V2ZW50X3NvdXJjZS5jCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KQEAgLTk3NCw5ICs5NzAsNiBAQAogY2hlY2s6IGNoZWNrLWFtCiBhbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKIGluc3RhbGxkaXJzOgotCWZvciBkaXIgaW4gIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBkbyBcCi0JICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCi0JZG9uZQogaW5zdGFsbDogaW5zdGFsbC1hbQogaW5zdGFsbC1leGVjOiBpbnN0YWxsLWV4ZWMtYW0KIGluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLWFtCkBAIC0xMDA5LDcgKzEwMDIsNyBAQAogCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKIGNsZWFuOiBjbGVhbi1hbQogCi1jbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJ0b29sIGNsZWFuLXBsdWdpbkxUTElCUkFSSUVTIFwKK2NsZWFuLWFtOiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYnRvb2wgY2xlYW4tbm9pbnN0TFRMSUJSQVJJRVMgXAogCW1vc3RseWNsZWFuLWFtCiAKIGRpc3RjbGVhbjogZGlzdGNsZWFuLWFtCkBAIC0xMDMwLDcgKzEwMjMsNyBAQAogCiBpbmZvLWFtOgogCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKK2luc3RhbGwtZGF0YS1hbToKIAogaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCiAKQEAgLTEwNzYsMjQgKzEwNjksMjMgQEAKIAogcHMtYW06CiAKLXVuaW5zdGFsbC1hbTogdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCit1bmluc3RhbGwtYW06CiAKIC5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKIAogLlBIT05ZOiBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCi0JY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKKwljbGVhbi1saWJ0b29sIGNsZWFuLW5vaW5zdExUTElCUkFSSUVTIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAogCWN0YWdzLWFtIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCiAJZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgXAogCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgXAogCWluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgXAogCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBcCiAJaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIFwKLQlpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBcCi0JaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIFwKLQltYWludGFpbmVyLWNsZWFuIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBcCi0JbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgXAotCXBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gXAotCXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworCWluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBcCisJaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gXAorCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIFwKKwltb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIHBkZi1hbSBwcyBwcy1hbSBcCisJdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0KIAogLlBSRUNJT1VTOiBNYWtlZmlsZQogCmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3hjYi92a2Rpc3BsYXlfeGNiLmMgYi9leHQvdnVsa2FuL3hjYi92a2Rpc3BsYXlfeGNiLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYzZjVkNQotLS0gL2Rldi9udWxsCisrKyBiL2V4dC92dWxrYW4veGNiL3ZrZGlzcGxheV94Y2IuYwpAQCAtMCwwICsxLDE0NiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2a2Rpc3BsYXlfeGNiLmgiCisjaW5jbHVkZSAieGNiX2V2ZW50X3NvdXJjZS5oIgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnVsa2FuX2Rpc3BsYXlfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF92dWxrYW5fZGlzcGxheV9kZWJ1Zyk7CisKK0dfREVGSU5FX1RZUEUgKEdzdFZ1bGthbkRpc3BsYXlYQ0IsIGdzdF92dWxrYW5fZGlzcGxheV94Y2IsCisgICAgR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVkpOworCitzdGF0aWMgdm9pZCBnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyBncG9pbnRlciBnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX2dldF9oYW5kbGUgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KTsKKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fZGlzcGxheV94Y2JfY2xhc3NfaW5pdCAoR3N0VnVsa2FuRGlzcGxheVhDQkNsYXNzICoga2xhc3MpCit7CisgIEdTVF9WVUxLQU5fRElTUExBWV9DTEFTUyAoa2xhc3MpLT5nZXRfaGFuZGxlID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX2dldF9oYW5kbGUpOworCisgIEdfT0JKRUNUX0NMQVNTIChrbGFzcyktPmZpbmFsaXplID0gZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9maW5hbGl6ZTsKK30KKworc3RhdGljIHZvaWQKK2dzdF92dWxrYW5fZGlzcGxheV94Y2JfaW5pdCAoR3N0VnVsa2FuRGlzcGxheVhDQiAqIGRpc3BsYXlfeGNiKQoreworICBHc3RWdWxrYW5EaXNwbGF5ICpkaXNwbGF5ID0gKEdzdFZ1bGthbkRpc3BsYXkgKikgZGlzcGxheV94Y2I7CisKKyAgZGlzcGxheS0+dHlwZSA9IEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQjsKKyAgZGlzcGxheV94Y2ItPmZvcmVpZ25fZGlzcGxheSA9IEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VnVsa2FuRGlzcGxheVhDQiAqZGlzcGxheV94Y2IgPSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCIChvYmplY3QpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworCisgIGlmICghZGlzcGxheV94Y2ItPmZvcmVpZ25fZGlzcGxheSAmJiBkaXNwbGF5X3hjYi0+Y29ubmVjdGlvbikKKyAgICB4Y2JfZGlzY29ubmVjdCAoZGlzcGxheV94Y2ItPmNvbm5lY3Rpb24pOworICBkaXNwbGF5X3hjYi0+Y29ubmVjdGlvbiA9IE5VTEw7Cit9CisKK3N0YXRpYyB4Y2Jfc2NyZWVuX3QgKgorX2dldF9zY3JlZW5fZnJvbV9jb25uZWN0aW9uICh4Y2JfY29ubmVjdGlvbl90ICogY29ubmVjdGlvbiwgaW50IHNjcmVlbl9ubykKK3sKKyAgY29uc3QgeGNiX3NldHVwX3QgKnNldHVwOworICB4Y2Jfc2NyZWVuX2l0ZXJhdG9yX3QgaXRlcjsKKworICBzZXR1cCA9IHhjYl9nZXRfc2V0dXAgKGNvbm5lY3Rpb24pOworICBpdGVyID0geGNiX3NldHVwX3Jvb3RzX2l0ZXJhdG9yIChzZXR1cCk7CisgIHdoaWxlIChzY3JlZW5fbm8tLSA+IDApCisgICAgeGNiX3NjcmVlbl9uZXh0ICgmaXRlcik7CisKKyAgcmV0dXJuIGl0ZXIuZGF0YTsKK30KKworLyoqCisgKiBnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX25ldzoKKyAqIEBuYW1lOiAoYWxsb3ctbm9uZSk6IGEgZGlzcGxheSBuYW1lCisgKgorICogQ3JlYXRlIGEgbmV3ICNHc3RWdWxrYW5EaXNwbGF5WENCIGZyb20gdGhlIHhjYiBkaXNwbGF5IG5hbWUuICBTZWUgWE9wZW5EaXNwbGF5KCkKKyAqIGZvciBkZXRhaWxzIG9uIHdoYXQgaXMgYSB2YWxpZCBuYW1lLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0dzdFZ1bGthbkRpc3BsYXlYQ0Igb3IgJU5VTEwKKyAqLworR3N0VnVsa2FuRGlzcGxheVhDQiAqCitnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX25ldyAoY29uc3QgZ2NoYXIgKiBuYW1lKQoreworICB4Y2JfY29ubmVjdGlvbl90ICpjb25uZWN0aW9uOworICBHc3RWdWxrYW5EaXNwbGF5WENCICpyZXQ7CisgIGludCBzY3JlZW5fbm8gPSAwOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKGdzdF92dWxrYW5fZGlzcGxheV9kZWJ1ZywgImdsZGlzcGxheSIpOworCisgIGNvbm5lY3Rpb24gPSB4Y2JfY29ubmVjdCAoTlVMTCwgJnNjcmVlbl9ubyk7CisgIGlmIChjb25uZWN0aW9uID09IE5VTEwgfHwgeGNiX2Nvbm5lY3Rpb25faGFzX2Vycm9yIChjb25uZWN0aW9uKSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBvcGVuIFhDQiBkaXNwbGF5IGNvbm5lY3Rpb24gd2l0aCBuYW1lLCBcJyVzXCciLCBuYW1lKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldCA9IGdzdF92dWxrYW5fZGlzcGxheV94Y2JfbmV3X3dpdGhfY29ubmVjdGlvbiAoY29ubmVjdGlvbiwgc2NyZWVuX25vKTsKKyAgR1NUX1ZVTEtBTl9ESVNQTEFZIChyZXQpLT5ldmVudF9zb3VyY2UgPSB4Y2JfZXZlbnRfc291cmNlX25ldyAocmV0KTsKKyAgZ19zb3VyY2VfYXR0YWNoIChHU1RfVlVMS0FOX0RJU1BMQVkgKHJldCktPmV2ZW50X3NvdXJjZSwKKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWSAocmV0KS0+bWFpbl9jb250ZXh0KTsKKyAgcmV0LT5mb3JlaWduX2Rpc3BsYXkgPSBGQUxTRTsKKworICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIGdzdF92dWxrYW5fZGlzcGxheV94Y2JfbmV3X3dpdGhfY29ubmVjdGlvbjoKKyAqIEBkaXNwbGF5OiBhbiBleGlzdGluZywgeGNiIGRpc3BsYXkKKyAqCisgKiBDcmVhdGVzIGEgbmV3IGRpc3BsYXkgY29ubmVjdGlvbiBmcm9tIGEgWENCIERpc3BsYXkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyAjR3N0VnVsa2FuRGlzcGxheVhDQgorICovCitHc3RWdWxrYW5EaXNwbGF5WENCICoKK2dzdF92dWxrYW5fZGlzcGxheV94Y2JfbmV3X3dpdGhfY29ubmVjdGlvbiAoeGNiX2Nvbm5lY3Rpb25fdCAqIGNvbm5lY3Rpb24sCisgICAgaW50IHNjcmVlbl9ubykKK3sKKyAgR3N0VnVsa2FuRGlzcGxheVhDQiAqcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb25uZWN0aW9uICE9IE5VTEwsIE5VTEwpOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKGdzdF92dWxrYW5fZGlzcGxheV9kZWJ1ZywgImdsZGlzcGxheSIpOworCisgIHJldCA9IGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfVlVMS0FOX0RJU1BMQVlfWENCLCBOVUxMKTsKKworICByZXQtPmNvbm5lY3Rpb24gPSBjb25uZWN0aW9uOworICByZXQtPnNjcmVlbiA9IF9nZXRfc2NyZWVuX2Zyb21fY29ubmVjdGlvbiAoY29ubmVjdGlvbiwgc2NyZWVuX25vKTsKKyAgcmV0LT5yb290X3dpbmRvdyA9IHJldC0+c2NyZWVuLT5yb290OworICByZXQtPmZvcmVpZ25fZGlzcGxheSA9IFRSVUU7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdwb2ludGVyCitnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX2dldF9oYW5kbGUgKEdzdFZ1bGthbkRpc3BsYXkgKiBkaXNwbGF5KQoreworICByZXR1cm4gKGdwb2ludGVyKSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04gKGRpc3BsYXkpOworfQpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5oIGIvZXh0L3Z1bGthbi94Y2IvdmtkaXNwbGF5X3hjYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjMGYxZWMKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3hjYi92a2Rpc3BsYXlfeGNiLmgKQEAgLTAsMCArMSw4NCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDEzIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfVlVMS0FOX0RJU1BMQVlfWENCX0hfXworI2RlZmluZSBfX0dTVF9WVUxLQU5fRElTUExBWV9YQ0JfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKKyNpbmNsdWRlIDx4Y2IveGNiLmg+CisKKyNpbmNsdWRlIDx2ay5oPgorI2lmbmRlZiBWS19VU0VfUExBVEZPUk1fWENCX0tIUgorI2Vycm9yICJWS19VU0VfUExBVEZPUk1fWENCX0tIUiBub3QgZGVmaW5lZCBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgaGVhZGVyIgorI2Vycm9yICJFaXRoZXIgaW5jbHVkZSB2a2FwaS5oIG9yIGRlZmluZSBWS19VU0VfUExBVEZPUk1fWENCX0tIUiBiZWZvcmUgaW5jbHVkaW5nIHRoaXMgaGVhZGVyIgorI2VuZGlmCisjaW5jbHVkZSA8dnVsa2FuL3Z1bGthbi5oPgorCitHX0JFR0lOX0RFQ0xTCisKK0dUeXBlIGdzdF92dWxrYW5fZGlzcGxheV94Y2JfZ2V0X3R5cGUgKHZvaWQpOworCisjZGVmaW5lIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZX1hDQiAgICAgICAgICAgICAoZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZX1hDQixHc3RWdWxrYW5EaXNwbGF5WENCKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DTEFTUyhrbGFzcykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBHU1RfVFlQRV9WVUxLQU5fRElTUExBWV9YQ0IsR3N0VnVsa2FuRGlzcGxheVhDQkNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1ZVTEtBTl9ESVNQTEFZX1hDQihvYmopICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9WVUxLQU5fRElTUExBWV9YQ0IpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX0RJU1BMQVlfWENCX0NMQVNTKGtsYXNzKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksIEdTVF9UWVBFX1ZVTEtBTl9ESVNQTEFZX1hDQikpCisjZGVmaW5lIEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ0FTVChvYmopICAgICAgICAoKEdzdFZ1bGthbkRpc3BsYXlYQ0IqKShvYmopKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuRGlzcGxheVhDQiBHc3RWdWxrYW5EaXNwbGF5WENCOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZ1bGthbkRpc3BsYXlYQ0JDbGFzcyBHc3RWdWxrYW5EaXNwbGF5WENCQ2xhc3M7CisKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DT05ORUNUSU9OKGQpIChHU1RfVlVMS0FOX0RJU1BMQVlfWENCKGQpLT5jb25uZWN0aW9uKQorI2RlZmluZSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX1JPT1RfV0lORE9XKGQpIChHU1RfVlVMS0FOX0RJU1BMQVlfWENCKGQpLT5yb290X3dpbmRvdykKKyNkZWZpbmUgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9TQ1JFRU4oZCkgKEdTVF9WVUxLQU5fRElTUExBWV9YQ0IoZCktPnNjcmVlbikKKworLyoqCisgKiBHc3RWdWxrYW5EaXNwbGF5WENCOgorICoKKyAqIHRoZSBjb250ZW50cyBvZiBhICNHc3RWdWxrYW5EaXNwbGF5WENCIGFyZSBwcml2YXRlIGFuZCBzaG91bGQgb25seSBiZSBhY2Nlc3NlZAorICogdGhyb3VnaCB0aGUgcHJvdmlkZWQgQVBJCisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuRGlzcGxheVhDQgoreworICBHc3RWdWxrYW5EaXNwbGF5ICAgICAgICAgIHBhcmVudDsKKworICB4Y2JfY29ubmVjdGlvbl90ICpjb25uZWN0aW9uOworICB4Y2Jfd2luZG93X3QgICAgICByb290X3dpbmRvdzsKKyAgeGNiX3NjcmVlbl90ICAgICAqc2NyZWVuOworCisgIC8qIDxwcml2YXRlPiAqLworICBnYm9vbGVhbiBmb3JlaWduX2Rpc3BsYXk7CisKKyAgR1NvdXJjZSAqZXZlbnRfc291cmNlOworfTsKKworc3RydWN0IF9Hc3RWdWxrYW5EaXNwbGF5WENCQ2xhc3MKK3sKKyAgR3N0VnVsa2FuRGlzcGxheUNsYXNzIG9iamVjdF9jbGFzczsKK307CisKK0dzdFZ1bGthbkRpc3BsYXlYQ0IgKiBnc3RfdnVsa2FuX2Rpc3BsYXlfeGNiX25ldyAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICogbmFtZSk7CitHc3RWdWxrYW5EaXNwbGF5WENCICogZ3N0X3Z1bGthbl9kaXNwbGF5X3hjYl9uZXdfd2l0aF9jb25uZWN0aW9uICAgICh4Y2JfY29ubmVjdGlvbl90ICogY29ubmVjdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzY3JlZW5fbm8pOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfVlVMS0FOX0RJU1BMQVlfWENCX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmMgYi9leHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzY5YTFkCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi94Y2Ivdmt3aW5kb3dfeGNiLmMKQEAgLTAsMCArMSwyODYgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGxvY2FsZS5oPgorCisjaW5jbHVkZSAidmt3aW5kb3dfeGNiLmgiCisjaW5jbHVkZSAidmtkaXNwbGF5X3hjYi5oIgorCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XX1hDQl9HRVRfUFJJVkFURShvKSAgXAorICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPV19YQ0IsIEdzdFZ1bGthbldpbmRvd1hDQlByaXZhdGUpKQorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnVsa2FuX3dpbmRvd194Y2JfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CisKK3N0YXRpYyB2b2lkCitfaW5pdF9kZWJ1ZyAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAidnVsa2Fud2luZG93eGNiIiwgMCwKKyAgICAgICAgIlZ1bGthbiBYQ0IgV2luZG93Iik7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CisgIH0KK30KKworI2RlZmluZSBnc3RfdnVsa2FuX3dpbmRvd194Y2JfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFZ1bGthbldpbmRvd1hDQiwgZ3N0X3Z1bGthbl93aW5kb3dfeGNiLAorICAgIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1csIF9pbml0X2RlYnVnICgpKTsKKworZ2Jvb2xlYW4gZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2hhbmRsZV9ldmVudCAoR3N0VnVsa2FuV2luZG93WENCICogd2luZG93X3hjYik7CisKK2VudW0KK3sKKyAgUFJPUF8wLAorfTsKKworc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dYQ0JQcml2YXRlCit7CisgIGdib29sZWFuIGFjdGl2YXRlOworICBnYm9vbGVhbiBhY3RpdmF0ZV9yZXN1bHQ7CisKKyAgZ2ludCBwcmVmZXJyZWRfd2lkdGg7CisgIGdpbnQgcHJlZmVycmVkX2hlaWdodDsKKworICB4Y2JfaW50ZXJuX2F0b21fcmVwbHlfdCAqYXRvbV93bV9kZWxldGVfd2luZG93OworfTsKKworc3RhdGljIFZrU3VyZmFjZUtIUiBnc3RfdnVsa2FuX3dpbmRvd194Y2JfZ2V0X3N1cmZhY2UgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywKKyAgICBHRXJyb3IgKiogZXJyb3IpOworc3RhdGljIGdib29sZWFuIGdzdF92dWxrYW5fd2luZG93X3hjYl9nZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQgKEdzdFZ1bGthbldpbmRvdworICAgICogd2luZG93LCBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIGd1aW50MzIgcXVldWVfZmFtaWx5X2lkeCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z1bGthbl93aW5kb3dfeGNiX29wZW4gKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywKKyAgICBHRXJyb3IgKiogZXJyb3IpOworc3RhdGljIHZvaWQgZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2Nsb3NlIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpOworCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfY2xhc3NfaW5pdCAoR3N0VnVsa2FuV2luZG93WENCQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpvYmpfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworICBHc3RWdWxrYW5XaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzID0gKEdzdFZ1bGthbldpbmRvd0NsYXNzICopIGtsYXNzOworCisgIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0VnVsa2FuV2luZG93WENCUHJpdmF0ZSkpOworCisgIG9ial9jbGFzcy0+ZmluYWxpemUgPSBnc3RfdnVsa2FuX3dpbmRvd194Y2JfZmluYWxpemU7CisKKyAgd2luZG93X2NsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92dWxrYW5fd2luZG93X3hjYl9vcGVuKTsKKyAgd2luZG93X2NsYXNzLT5jbG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnVsa2FuX3dpbmRvd194Y2JfY2xvc2UpOworICB3aW5kb3dfY2xhc3MtPmdldF9zdXJmYWNlID0gZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2dldF9zdXJmYWNlOworICB3aW5kb3dfY2xhc3MtPmdldF9wcmVzZW50YXRpb25fc3VwcG9ydCA9CisgICAgICBnc3RfdnVsa2FuX3dpbmRvd194Y2JfZ2V0X3ByZXNlbnRhdGlvbl9zdXBwb3J0OworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2luaXQgKEdzdFZ1bGthbldpbmRvd1hDQiAqIHdpbmRvdykKK3sKKyAgd2luZG93LT5wcml2ID0gR1NUX1ZVTEtBTl9XSU5ET1dfWENCX0dFVF9QUklWQVRFICh3aW5kb3cpOworfQorCisvKiBNdXN0IGJlIGNhbGxlZCBpbiB0aGUgZ2wgdGhyZWFkICovCitHc3RWdWxrYW5XaW5kb3dYQ0IgKgorZ3N0X3Z1bGthbl93aW5kb3dfeGNiX25ldyAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpCit7CisgIF9pbml0X2RlYnVnICgpOworCisgIGlmICgoZ3N0X3Z1bGthbl9kaXNwbGF5X2dldF9oYW5kbGVfdHlwZSAoZGlzcGxheSkgJgorICAgICAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQikKKyAgICAgID09IEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX05PTkUpIHsKKyAgICBHU1RfSU5GTyAoIldyb25nIGRpc3BsYXkgdHlwZSAldSBmb3IgdGhpcyB3aW5kb3cgdHlwZSAldSIsIGRpc3BsYXktPnR5cGUsCisgICAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9UWVBFX1hDQik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9WVUxLQU5fV0lORE9XX1hDQiwgTlVMTCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd194Y2Jfc2hvdyAoR3N0VnVsa2FuV2luZG93ICogd2luZG93KQoreworICBHc3RWdWxrYW5XaW5kb3dYQ0IgKndpbmRvd194Y2IgPSBHU1RfVlVMS0FOX1dJTkRPV19YQ0IgKHdpbmRvdyk7CisgIEdzdFZ1bGthbkRpc3BsYXlYQ0IgKmRpc3BsYXlfeGNiID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQiAod2luZG93LT5kaXNwbGF5KTsKKyAgeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbiA9CisgICAgICBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04gKGRpc3BsYXlfeGNiKTsKKworICBpZiAoIXdpbmRvd194Y2ItPnZpc2libGUpIHsKKyAgICB4Y2JfbWFwX3dpbmRvdyAoY29ubmVjdGlvbiwgd2luZG93X3hjYi0+d2luX2lkKTsKKyAgICB4Y2JfZmx1c2ggKGNvbm5lY3Rpb24pOworICAgIHdpbmRvd194Y2ItPnZpc2libGUgPSBUUlVFOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfaGlkZSAoR3N0VnVsa2FuV2luZG93ICogd2luZG93KQoreworICBHc3RWdWxrYW5XaW5kb3dYQ0IgKndpbmRvd194Y2IgPSBHU1RfVlVMS0FOX1dJTkRPV19YQ0IgKHdpbmRvdyk7CisgIEdzdFZ1bGthbkRpc3BsYXlYQ0IgKmRpc3BsYXlfeGNiID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQiAod2luZG93LT5kaXNwbGF5KTsKKyAgeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbiA9CisgICAgICBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04gKGRpc3BsYXlfeGNiKTsKKworICBpZiAod2luZG93X3hjYi0+dmlzaWJsZSkgeworICAgIHhjYl91bm1hcF93aW5kb3cgKGNvbm5lY3Rpb24sIHdpbmRvd194Y2ItPndpbl9pZCk7CisgICAgd2luZG93X3hjYi0+dmlzaWJsZSA9IEZBTFNFOworICB9Cit9CisKK2dib29sZWFuCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfY3JlYXRlX3dpbmRvdyAoR3N0VnVsa2FuV2luZG93WENCICogd2luZG93X3hjYikKK3sKKyAgR3N0VnVsa2FuRGlzcGxheVhDQiAqZGlzcGxheV94Y2I7CisgIHhjYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb247CisgIHhjYl9zY3JlZW5fdCAqc2NyZWVuOworICB4Y2Jfd2luZG93X3Qgcm9vdF93aW5kb3c7CisgIHVpbnQzMl90IHZhbHVlX21hc2ssIHZhbHVlX2xpc3RbMzJdOworICB4Y2JfaW50ZXJuX2F0b21fY29va2llX3QgY29va2llLCBjb29raWUyOworICB4Y2JfaW50ZXJuX2F0b21fcmVwbHlfdCAqcmVwbHksICpyZXBseTI7CisvLyAgY29uc3QgZ2NoYXIgKnRpdGxlID0gIk9wZW5HTCByZW5kZXJlciI7CisgIGdpbnQgeCA9IDAsIHkgPSAwLCB3aWR0aCA9IDMyMCwgaGVpZ2h0ID0gMjQwOworCisgIGRpc3BsYXlfeGNiID0KKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9YQ0IgKEdTVF9WVUxLQU5fV0lORE9XICh3aW5kb3dfeGNiKS0+ZGlzcGxheSk7CisgIGNvbm5lY3Rpb24gPSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX0NPTk5FQ1RJT04gKGRpc3BsYXlfeGNiKTsKKyAgcm9vdF93aW5kb3cgPSBHU1RfVlVMS0FOX0RJU1BMQVlfWENCX1JPT1RfV0lORE9XIChkaXNwbGF5X3hjYik7CisgIHNjcmVlbiA9IEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfU0NSRUVOIChkaXNwbGF5X3hjYik7CisKKyAgd2luZG93X3hjYi0+d2luX2lkID0geGNiX2dlbmVyYXRlX2lkIChjb25uZWN0aW9uKTsKKworICB2YWx1ZV9tYXNrID0gWENCX0NXX0JBQ0tfUElYRUwgfCBYQ0JfQ1dfRVZFTlRfTUFTSzsKKyAgdmFsdWVfbGlzdFswXSA9IHNjcmVlbi0+YmxhY2tfcGl4ZWw7CisgIHZhbHVlX2xpc3RbMV0gPQorICAgICAgWENCX0VWRU5UX01BU0tfS0VZX1JFTEVBU0UgfCBYQ0JfRVZFTlRfTUFTS19FWFBPU1VSRSB8CisgICAgICBYQ0JfRVZFTlRfTUFTS19TVFJVQ1RVUkVfTk9USUZZOworCisgIHhjYl9jcmVhdGVfd2luZG93IChjb25uZWN0aW9uLCBYQ0JfQ09QWV9GUk9NX1BBUkVOVCwgd2luZG93X3hjYi0+d2luX2lkLAorICAgICAgcm9vdF93aW5kb3csIHgsIHksIHdpZHRoLCBoZWlnaHQsIDAsIFhDQl9XSU5ET1dfQ0xBU1NfSU5QVVRfT1VUUFVULAorICAgICAgc2NyZWVuLT5yb290X3Zpc3VhbCwgdmFsdWVfbWFzaywgdmFsdWVfbGlzdCk7CisKKyAgR1NUX0xPR19PQkpFQ1QgKHdpbmRvd194Y2IsICJnbCB3aW5kb3cgaWQ6ICVwIiwKKyAgICAgIChncG9pbnRlcikgKGd1aW50cHRyKSB3aW5kb3dfeGNiLT53aW5faWQpOworICBHU1RfTE9HX09CSkVDVCAod2luZG93X3hjYiwgImdsIHdpbmRvdyBwcm9wczogeDolZCB5OiVkIiwgeCwgeSk7CisKKyAgLyogTWFnaWMgY29kZSB0aGF0IHdpbGwgc2VuZCBub3RpZmljYXRpb24gd2hlbiB3aW5kb3cgaXMgZGVzdHJveWVkICovCisgIGNvb2tpZSA9IHhjYl9pbnRlcm5fYXRvbSAoY29ubmVjdGlvbiwgMSwgMTIsICJXTV9QUk9UT0NPTFMiKTsKKyAgcmVwbHkgPSB4Y2JfaW50ZXJuX2F0b21fcmVwbHkgKGNvbm5lY3Rpb24sIGNvb2tpZSwgMCk7CisKKyAgY29va2llMiA9IHhjYl9pbnRlcm5fYXRvbSAoY29ubmVjdGlvbiwgMCwgMTYsICJXTV9ERUxFVEVfV0lORE9XIik7CisgIHJlcGx5MiA9IHhjYl9pbnRlcm5fYXRvbV9yZXBseSAoY29ubmVjdGlvbiwgY29va2llMiwgMCk7CisKKyAgeGNiX2NoYW5nZV9wcm9wZXJ0eSAoY29ubmVjdGlvbiwgWENCX1BST1BfTU9ERV9SRVBMQUNFLCB3aW5kb3dfeGNiLT53aW5faWQsCisgICAgICByZXBseS0+YXRvbSwgNCwgMzIsIDEsICZyZXBseTItPmF0b20pOworICBnX2ZyZWUgKHJlcGx5KTsKKyAgZ19mcmVlIChyZXBseTIpOworCisgIGdzdF92dWxrYW5fd2luZG93X3hjYl9zaG93IChHU1RfVlVMS0FOX1dJTkRPVyAod2luZG93X3hjYikpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgVmtTdXJmYWNlS0hSCitnc3RfdnVsa2FuX3dpbmRvd194Y2JfZ2V0X3N1cmZhY2UgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywgR0Vycm9yICoqIGVycm9yKQoreworICBWa1hjYlN1cmZhY2VDcmVhdGVJbmZvS0hSIGluZm8gPSB7IDAsIH07CisgIFZrU3VyZmFjZUtIUiByZXQ7CisgIFZrUmVzdWx0IGVycjsKKworICBpbmZvLnNUeXBlID0gVktfU1RSVUNUVVJFX1RZUEVfWENCX1NVUkZBQ0VfQ1JFQVRFX0lORk9fS0hSOworICBpbmZvLnBOZXh0ID0gTlVMTDsKKyAgaW5mby5mbGFncyA9IDA7CisgIGluZm8uY29ubmVjdGlvbiA9IEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ09OTkVDVElPTiAod2luZG93LT5kaXNwbGF5KTsKKyAgaW5mby53aW5kb3cgPSBHU1RfVlVMS0FOX1dJTkRPV19YQ0IgKHdpbmRvdyktPndpbl9pZDsKKworICBlcnIgPQorICAgICAgdmtDcmVhdGVYY2JTdXJmYWNlS0hSICh3aW5kb3ctPmRpc3BsYXktPmluc3RhbmNlLT5pbnN0YW5jZSwgJmluZm8sIE5VTEwsCisgICAgICAmcmV0KTsKKyAgaWYgKGdzdF92dWxrYW5fZXJyb3JfdG9fZ19lcnJvciAoZXJyLCBlcnJvciwgInZrQ3JlYXRlWGNiU3VyZmFjZUtIUiIpIDwgMCkKKyAgICByZXR1cm4gTlVMTDsKKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92dWxrYW5fd2luZG93X3hjYl9nZXRfcHJlc2VudGF0aW9uX3N1cHBvcnQgKEdzdFZ1bGthbldpbmRvdyAqIHdpbmRvdywKKyAgICBHc3RWdWxrYW5EZXZpY2UgKiBkZXZpY2UsIGd1aW50MzIgcXVldWVfZmFtaWx5X2lkeCkKK3sKKyAgVmtQaHlzaWNhbERldmljZSBncHU7CisgIHhjYl9zY3JlZW5fdCAqc2NyZWVuOworCisgIHNjcmVlbiA9IEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfU0NSRUVOICh3aW5kb3ctPmRpc3BsYXkpOworCisgIGdwdSA9IGdzdF92dWxrYW5fZGV2aWNlX2dldF9waHlzaWNhbF9kZXZpY2UgKGRldmljZSk7CisgIGlmICh2a0dldFBoeXNpY2FsRGV2aWNlWGNiUHJlc2VudGF0aW9uU3VwcG9ydEtIUiAoZ3B1LCBxdWV1ZV9mYW1pbHlfaWR4LAorICAgICAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ09OTkVDVElPTiAod2luZG93LT5kaXNwbGF5KSwKKyAgICAgICAgICBzY3JlZW4tPnJvb3RfdmlzdWFsKSkKKyAgICByZXR1cm4gVFJVRTsKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92dWxrYW5fd2luZG93X3hjYl9vcGVuIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3csIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0VnVsa2FuV2luZG93WENCICp3aW5kb3dfeGNiID0gR1NUX1ZVTEtBTl9XSU5ET1dfWENCICh3aW5kb3cpOworICBHc3RWdWxrYW5EaXNwbGF5WENCICpkaXNwbGF5X3hjYiA9IChHc3RWdWxrYW5EaXNwbGF5WENCICopIHdpbmRvdy0+ZGlzcGxheTsKKyAgeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbjsKKworICBjb25uZWN0aW9uID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DT05ORUNUSU9OIChkaXNwbGF5X3hjYik7CisgIGlmIChjb25uZWN0aW9uID09IE5VTEwpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9WVUxLQU5fV0lORE9XX0VSUk9SLAorICAgICAgICBHU1RfVlVMS0FOX1dJTkRPV19FUlJPUl9SRVNPVVJDRV9VTkFWQUlMQUJMRSwKKyAgICAgICAgIkZhaWxlZCB0byBjb25uZWN0IHRvIFggZGlzcGxheSBzZXJ2ZXIgd2l0aCBYQ0IiKTsKKyAgICBnb3RvIGZhaWx1cmU7CisgIH0KKworICBpZiAoIUdTVF9WVUxLQU5fV0lORE9XX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5vcGVuICh3aW5kb3csIGVycm9yKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIGdzdF92dWxrYW5fd2luZG93X3hjYl9jcmVhdGVfd2luZG93ICh3aW5kb3dfeGNiKTsKKworZmFpbHVyZToKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2Nsb3NlIChHc3RWdWxrYW5XaW5kb3cgKiB3aW5kb3cpCit7CisgIEdzdFZ1bGthbldpbmRvd1hDQiAqd2luZG93X3hjYiA9IEdTVF9WVUxLQU5fV0lORE9XX1hDQiAod2luZG93KTsKKyAgR3N0VnVsa2FuRGlzcGxheVhDQiAqZGlzcGxheV94Y2IgPSAoR3N0VnVsa2FuRGlzcGxheVhDQiAqKSB3aW5kb3ctPmRpc3BsYXk7CisgIHhjYl9jb25uZWN0aW9uX3QgKmNvbm5lY3Rpb24gPQorICAgICAgR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DT05ORUNUSU9OIChkaXNwbGF5X3hjYik7CisKKyAgaWYgKGNvbm5lY3Rpb24pIHsKKyAgICBnc3RfdnVsa2FuX3dpbmRvd194Y2JfaGlkZSAod2luZG93KTsKKworICAgIGdfZnJlZSAod2luZG93X3hjYi0+cHJpdi0+YXRvbV93bV9kZWxldGVfd2luZG93KTsKKyAgICB3aW5kb3dfeGNiLT5wcml2LT5hdG9tX3dtX2RlbGV0ZV93aW5kb3cgPSBOVUxMOworICAgIEdTVF9ERUJVRyAoImRpc3BsYXkgcmVjZWl2ZXIgY2xvc2VkIik7CisgIH0KKworICBHU1RfVlVMS0FOX1dJTkRPV19DTEFTUyAocGFyZW50X2NsYXNzKS0+Y2xvc2UgKHdpbmRvdyk7Cit9CmRpZmYgLS1naXQgYS9leHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuaCBiL2V4dC92dWxrYW4veGNiL3Zrd2luZG93X3hjYi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxN2E0ODgKLS0tIC9kZXYvbnVsbAorKysgYi9leHQvdnVsa2FuL3hjYi92a3dpbmRvd194Y2IuaApAQCAtMCwwICsxLDgzIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0dGhldyBXYXRlcnMgPHlzdHJlZXQwMEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9WVUxLQU5fV0lORE9XX1hDQl9IX18KKyNkZWZpbmUgX19HU1RfVlVMS0FOX1dJTkRPV19YQ0JfSF9fCisKKyNpbmNsdWRlIDx4Y2IveGNiLmg+CisKKyNpbmNsdWRlIDx2ay5oPgorCitHX0JFR0lOX0RFQ0xTCisKKyNkZWZpbmUgR1NUX1RZUEVfVlVMS0FOX1dJTkRPV19YQ0IgICAgICAgICAoZ3N0X3Z1bGthbl93aW5kb3dfeGNiX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XX1hDQihvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPV19YQ0IsIEdzdFZ1bGthbldpbmRvd1hDQikpCisjZGVmaW5lIEdTVF9WVUxLQU5fV0lORE9XX1hDQl9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1dfWENCLCBHc3RWdWxrYW5XaW5kb3dYQ0JDbGFzcykpCisjZGVmaW5lIEdTVF9JU19WVUxLQU5fV0lORE9XX1hDQihvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX1RZUEVfVlVMS0FOX1dJTkRPV19YQ0IpKQorI2RlZmluZSBHU1RfSVNfVlVMS0FOX1dJTkRPV19YQ0JfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1dfWENCKSkKKyNkZWZpbmUgR1NUX1ZVTEtBTl9XSU5ET1dfWENCX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9UWVBFX1ZVTEtBTl9XSU5ET1dfWENCLCBHc3RWdWxrYW5XaW5kb3dYQ0JDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dYQ0IgICAgICAgIEdzdFZ1bGthbldpbmRvd1hDQjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dYQ0JQcml2YXRlIEdzdFZ1bGthbldpbmRvd1hDQlByaXZhdGU7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnVsa2FuV2luZG93WENCQ2xhc3MgICBHc3RWdWxrYW5XaW5kb3dYQ0JDbGFzczsKKworLyoqCisgKiBHc3RWdWxrYW5XaW5kb3dYQ0I6CisgKgorICogT3BhcXVlICNHc3RWdWxrYW5XaW5kb3dYQ0Igb2JqZWN0CisgKi8KK3N0cnVjdCBfR3N0VnVsa2FuV2luZG93WENCCit7CisgIC8qPCBwcml2YXRlID4qLworICBHc3RWdWxrYW5XaW5kb3cgcGFyZW50OworCisgIC8qIFggd2luZG93ICovCisgIHhjYl93aW5kb3dfdCB3aW5faWQ7CisKKyAgZ2ludCAgICAgICAgICB2aXNpYmxlIDoxOworCisgIC8qPCBwcml2YXRlID4qLworICBHc3RWdWxrYW5XaW5kb3dYQ0JQcml2YXRlICpwcml2OworICAKKyAgZ3BvaW50ZXIgX3Jlc2VydmVkW0dTVF9QQURESU5HXTsKK307CisKKy8qKgorICogR3N0VnVsa2FuV2luZG93WENCQ2xhc3M6CisgKgorICogT3BhcXVlICNHc3RWdWxrYW5XaW5kb3dYQ0JDbGFzcyBvYmplY3QKKyAqLworc3RydWN0IF9Hc3RWdWxrYW5XaW5kb3dYQ0JDbGFzcyB7CisgIC8qPCBwcml2YXRlID4qLworICBHc3RWdWxrYW5XaW5kb3dDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgLyo8IHByaXZhdGUgPiovCisgIGdwb2ludGVyIF9yZXNlcnZlZFtHU1RfUEFERElOR19MQVJHRV07Cit9OworCitHVHlwZSBnc3RfdnVsa2FuX3dpbmRvd194Y2JfZ2V0X3R5cGUgICAgICh2b2lkKTsKKworR3N0VnVsa2FuV2luZG93WENCICogZ3N0X3Z1bGthbl93aW5kb3dfeGNiX25ldyAoR3N0VnVsa2FuRGlzcGxheSAqIGRpc3BsYXkpOworCitnYm9vbGVhbiBnc3RfdnVsa2FuX3dpbmRvd194Y2JfY3JlYXRlX3dpbmRvdyAoR3N0VnVsa2FuV2luZG93WENCICogd2luZG93X3hjYik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9WVUxLQU5fV0lORE9XX1hDQl9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuYyBiL2V4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzY4ZjE5Ci0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi94Y2IveGNiX2V2ZW50X3NvdXJjZS5jCkBAIC0wLDAgKzEsMjU1IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0dGhldyBXYXRlcnMgPHlzdHJlZXQwMEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RkaW50Lmg+CisjaW5jbHVkZSA8c3RkbGliLmg+CisKKyNpbmNsdWRlICJ4Y2JfZXZlbnRfc291cmNlLmgiCisjaW5jbHVkZSAidmtkaXNwbGF5X3hjYi5oIgorI2luY2x1ZGUgInZrd2luZG93X3hjYi5oIgorCitzdGF0aWMgZ2ludAorX2NvbXBhcmVfeGNiX3dpbmRvdyAoR3N0VnVsa2FuV2luZG93WENCICogd2luZG93X3hjYiwgeGNiX3dpbmRvd190ICogd2luZG93X2lkKQoreworICByZXR1cm4gd2luZG93X3hjYi0+d2luX2lkIC0gKndpbmRvd19pZDsKK30KKworc3RhdGljIEdzdFZ1bGthbldpbmRvd1hDQiAqCitfZmluZF93aW5kb3dfZnJvbV94Y2Jfd2luZG93IChHc3RWdWxrYW5EaXNwbGF5WENCICogZGlzcGxheV94Y2IsCisgICAgeGNiX3dpbmRvd190IHdpbmRvd19pZCkKK3sKKyAgR3N0VnVsa2FuRGlzcGxheSAqZGlzcGxheSA9IEdTVF9WVUxLQU5fRElTUExBWSAoZGlzcGxheV94Y2IpOworICBHc3RWdWxrYW5XaW5kb3dYQ0IgKnJldCA9IE5VTEw7CisgIEdMaXN0ICpsOworCisgIGlmICghd2luZG93X2lkKQorICAgIHJldHVybiBOVUxMOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoZGlzcGxheSk7CisgIGwgPSBnX2xpc3RfZmluZF9jdXN0b20gKGRpc3BsYXktPndpbmRvd3MsICZ3aW5kb3dfaWQsCisgICAgICAoR0NvbXBhcmVGdW5jKSBfY29tcGFyZV94Y2Jfd2luZG93KTsKKyAgaWYgKGwpCisgICAgcmV0ID0gZ3N0X29iamVjdF9yZWYgKGwtPmRhdGEpOworICBHU1RfT0JKRUNUX1VOTE9DSyAoZGlzcGxheSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitfeGNiX2hhbmRsZV9ldmVudCAoR3N0VnVsa2FuRGlzcGxheVhDQiAqIGRpc3BsYXlfeGNiKQoreworICB4Y2JfY29ubmVjdGlvbl90ICpjb25uZWN0aW9uID0KKyAgICAgIEdTVF9WVUxLQU5fRElTUExBWV9YQ0JfQ09OTkVDVElPTiAoZGlzcGxheV94Y2IpOworICB4Y2JfZ2VuZXJpY19ldmVudF90ICpldmVudDsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKworICB3aGlsZSAoKGV2ZW50ID0geGNiX3BvbGxfZm9yX2V2ZW50IChjb25uZWN0aW9uKSkpIHsKKyAgICB1aW50OF90IGV2ZW50X2NvZGUgPSBldmVudC0+cmVzcG9uc2VfdHlwZSAmIDB4N2Y7CisKKyAgICBzd2l0Y2ggKGV2ZW50X2NvZGUpIHsKKyAgICAgIGNhc2UgWENCX0NMSUVOVF9NRVNTQUdFOnsKKyAgICAgICAgeGNiX2NsaWVudF9tZXNzYWdlX2V2ZW50X3QgKmNsaWVudF9ldmVudDsKKyAgICAgICAgeGNiX2ludGVybl9hdG9tX2Nvb2tpZV90IGNvb2tpZTsKKyAgICAgICAgeGNiX2ludGVybl9hdG9tX3JlcGx5X3QgKnJlcGx5OworCisgICAgICAgIGNsaWVudF9ldmVudCA9ICh4Y2JfY2xpZW50X21lc3NhZ2VfZXZlbnRfdCAqKSBldmVudDsKKyAgICAgICAgY29va2llID0geGNiX2ludGVybl9hdG9tIChjb25uZWN0aW9uLCAwLCAxNiwgIldNX0RFTEVURV9XSU5ET1ciKTsKKyAgICAgICAgcmVwbHkgPSB4Y2JfaW50ZXJuX2F0b21fcmVwbHkgKGNvbm5lY3Rpb24sIGNvb2tpZSwgMCk7CisKKyAgICAgICAgaWYgKGNsaWVudF9ldmVudC0+ZGF0YS5kYXRhMzJbMF0gPT0gcmVwbHktPmF0b20pIHsKKyAgICAgICAgICBHc3RWdWxrYW5XaW5kb3dYQ0IgKndpbmRvd194Y2I7CisKKyAgICAgICAgICB3aW5kb3dfeGNiID0KKyAgICAgICAgICAgICAgX2ZpbmRfd2luZG93X2Zyb21feGNiX3dpbmRvdyAoZGlzcGxheV94Y2IsIGNsaWVudF9ldmVudC0+d2luZG93KTsKKworICAgICAgICAgIGlmICh3aW5kb3dfeGNiKSB7CisgICAgICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHdpbmRvd194Y2IsICJDbG9zZSByZXF1ZXN0ZWQiKTsKKworICAgICAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfY2xvc2UgKEdTVF9WVUxLQU5fV0lORE9XICh3aW5kb3dfeGNiKSk7CisgICAgICAgICAgICBnc3RfdnVsa2FuX2Rpc3BsYXlfcmVtb3ZlX3dpbmRvdyAoR1NUX1ZVTEtBTl9ESVNQTEFZIChkaXNwbGF5X3hjYiksCisgICAgICAgICAgICAgICAgR1NUX1ZVTEtBTl9XSU5ET1cgKHdpbmRvd194Y2IpKTsKKyAgICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvd194Y2IpOworICAgICAgICAgIH0KKyAgICAgICAgfQorCisgICAgICAgIGdfZnJlZSAocmVwbHkpOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGNhc2UgWENCX0NPTkZJR1VSRV9OT1RJRlk6eworICAgICAgICB4Y2JfY29uZmlndXJlX25vdGlmeV9ldmVudF90ICpjb25maWd1cmVfZXZlbnQ7CisgICAgICAgIEdzdFZ1bGthbldpbmRvd1hDQiAqd2luZG93X3hjYjsKKworICAgICAgICBjb25maWd1cmVfZXZlbnQgPSAoeGNiX2NvbmZpZ3VyZV9ub3RpZnlfZXZlbnRfdCAqKSBldmVudDsKKyAgICAgICAgd2luZG93X3hjYiA9CisgICAgICAgICAgICBfZmluZF93aW5kb3dfZnJvbV94Y2Jfd2luZG93IChkaXNwbGF5X3hjYiwgY29uZmlndXJlX2V2ZW50LT53aW5kb3cpOworCisgICAgICAgIGlmICh3aW5kb3dfeGNiKSB7CisgICAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfcmVzaXplIChHU1RfVlVMS0FOX1dJTkRPVyAod2luZG93X3hjYiksCisgICAgICAgICAgICAgIGNvbmZpZ3VyZV9ldmVudC0+d2lkdGgsIGNvbmZpZ3VyZV9ldmVudC0+aGVpZ2h0KTsKKworICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvd194Y2IpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgY2FzZSBYQ0JfRVhQT1NFOnsKKyAgICAgICAgeGNiX2V4cG9zZV9ldmVudF90ICpleHBvc2VfZXZlbnQgPSAoeGNiX2V4cG9zZV9ldmVudF90ICopIGV2ZW50OworICAgICAgICBHc3RWdWxrYW5XaW5kb3dYQ0IgKndpbmRvd194Y2I7CisKKyAgICAgICAgLyogbm9uLXplcm8gbWVhbnMgdGhhdCBvdGhlciBFeHBvc2UgZm9sbG93cworICAgICAgICAgKiBzbyBqdXN0IHdhaXQgZm9yIHRoZSBsYXN0IG9uZQorICAgICAgICAgKiBpbiB0aGVvcnkgd2Ugc2hvdWxkIG5vdCByZWNlaXZlIG5vbi16ZXJvIGJlY2F1c2UKKyAgICAgICAgICogd2UgaGF2ZSBubyBzdWIgYXJlYXMgaGVyZSBidXQganVzdCBpbiBjYXNlICovCisgICAgICAgIGlmIChleHBvc2VfZXZlbnQtPmNvdW50ICE9IDApCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgd2luZG93X3hjYiA9CisgICAgICAgICAgICBfZmluZF93aW5kb3dfZnJvbV94Y2Jfd2luZG93IChkaXNwbGF5X3hjYiwgZXhwb3NlX2V2ZW50LT53aW5kb3cpOworCisgICAgICAgIGlmICh3aW5kb3dfeGNiKSB7CisgICAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfcmVkcmF3IChHU1RfVlVMS0FOX1dJTkRPVyAod2luZG93X3hjYikpOworICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvd194Y2IpOworICAgICAgICB9CisgICAgICAgIGJyZWFrOworICAgICAgfQorI2lmIDAKKyAgICAgIGNhc2UgS2V5UHJlc3M6CisgICAgICBjYXNlIEtleVJlbGVhc2U6CisgICAgICAgIGtleXN5bSA9IFhrYktleWNvZGVUb0tleXN5bSAod2luZG93X3hjYi0+ZGV2aWNlLAorICAgICAgICAgICAgZXZlbnQueGtleS5rZXljb2RlLCAwLCAwKTsKKyAgICAgICAga2V5X3N0ciA9IFhLZXlzeW1Ub1N0cmluZyAoa2V5c3ltKTsKKyAgICAgICAga2V5X2RhdGEgPSBnX3NsaWNlX25ldyAoc3RydWN0IGtleV9ldmVudCk7CisgICAgICAgIGtleV9kYXRhLT53aW5kb3cgPSB3aW5kb3c7CisgICAgICAgIGtleV9kYXRhLT5rZXlfc3RyID0gWEtleXN5bVRvU3RyaW5nIChrZXlzeW0pOworICAgICAgICBrZXlfZGF0YS0+ZXZlbnRfdHlwZSA9CisgICAgICAgICAgICBldmVudC50eXBlID09IEtleVByZXNzID8gImtleS1wcmVzcyIgOiAia2V5LXJlbGVhc2UiOworICAgICAgICBHU1RfREVCVUcgKCJpbnB1dCBldmVudCBrZXkgJWQgcHJlc3NlZCBvdmVyIHdpbmRvdyBhdCAlZCwlZCAoJXMpIiwKKyAgICAgICAgICAgIGV2ZW50LnhrZXkua2V5Y29kZSwgZXZlbnQueGtleS54LCBldmVudC54a2V5LnksIGtleV9zdHIpOworICAgICAgICBnX21haW5fY29udGV4dF9pbnZva2UgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0LAorICAgICAgICAgICAgKEdTb3VyY2VGdW5jKSBnc3RfdnVsa2FuX3dpbmRvd19rZXlfZXZlbnRfY2IsIGtleV9kYXRhKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIEJ1dHRvblByZXNzOgorICAgICAgY2FzZSBCdXR0b25SZWxlYXNlOgorICAgICAgICBHU1RfREVCVUcgKCJpbnB1dCBldmVudCBtb3VzZSBidXR0b24gJWQgcHJlc3NlZCBvdmVyIHdpbmRvdyBhdCAlZCwlZCIsCisgICAgICAgICAgICBldmVudC54YnV0dG9uLmJ1dHRvbiwgZXZlbnQueGJ1dHRvbi54LCBldmVudC54YnV0dG9uLnkpOworICAgICAgICBtb3VzZV9kYXRhID0gZ19zbGljZV9uZXcgKHN0cnVjdCBtb3VzZV9ldmVudCk7CisgICAgICAgIG1vdXNlX2RhdGEtPndpbmRvdyA9IHdpbmRvdzsKKyAgICAgICAgbW91c2VfZGF0YS0+ZXZlbnRfdHlwZSA9CisgICAgICAgICAgICBldmVudC50eXBlID09CisgICAgICAgICAgICBCdXR0b25QcmVzcyA/ICJtb3VzZS1idXR0b24tcHJlc3MiIDogIm1vdXNlLWJ1dHRvbi1yZWxlYXNlIjsKKyAgICAgICAgbW91c2VfZGF0YS0+YnV0dG9uID0gZXZlbnQueGJ1dHRvbi5idXR0b247CisgICAgICAgIG1vdXNlX2RhdGEtPnBvc3ggPSAoZG91YmxlKSBldmVudC54YnV0dG9uLng7CisgICAgICAgIG1vdXNlX2RhdGEtPnBvc3kgPSAoZG91YmxlKSBldmVudC54YnV0dG9uLnk7CisKKyAgICAgICAgZ19tYWluX2NvbnRleHRfaW52b2tlICh3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCwKKyAgICAgICAgICAgIChHU291cmNlRnVuYykgZ3N0X3Z1bGthbl93aW5kb3dfbW91c2VfZXZlbnRfY2IsIG1vdXNlX2RhdGEpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgTW90aW9uTm90aWZ5OgorICAgICAgICBHU1RfREVCVUcgKCJpbnB1dCBldmVudCBwb2ludGVyIG1vdmVkIG92ZXIgd2luZG93IGF0ICVkLCVkIiwKKyAgICAgICAgICAgIGV2ZW50Lnhtb3Rpb24ueCwgZXZlbnQueG1vdGlvbi55KTsKKyAgICAgICAgbW91c2VfZGF0YSA9IGdfc2xpY2VfbmV3IChzdHJ1Y3QgbW91c2VfZXZlbnQpOworICAgICAgICBtb3VzZV9kYXRhLT53aW5kb3cgPSB3aW5kb3c7CisgICAgICAgIG1vdXNlX2RhdGEtPmV2ZW50X3R5cGUgPSAibW91c2UtbW92ZSI7CisgICAgICAgIG1vdXNlX2RhdGEtPmJ1dHRvbiA9IDA7CisgICAgICAgIG1vdXNlX2RhdGEtPnBvc3ggPSAoZG91YmxlKSBldmVudC54YnV0dG9uLng7CisgICAgICAgIG1vdXNlX2RhdGEtPnBvc3kgPSAoZG91YmxlKSBldmVudC54YnV0dG9uLnk7CisKKyAgICAgICAgZ19tYWluX2NvbnRleHRfaW52b2tlICh3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCwgKEdTb3VyY2VGdW5jKQorICAgICAgICAgICAgZ3N0X3Z1bGthbl93aW5kb3dfbW91c2VfZXZlbnRfY2IsIG1vdXNlX2RhdGEpOworICAgICAgICBicmVhazsKKyNlbmRpZgorICAgICAgZGVmYXVsdDoKKyAgICAgICAgR1NUX0RFQlVHICgidW5oYW5kbGVkIFhDQiB0eXBlOiAldSIsIGV2ZW50X2NvZGUpOworICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICBnX2ZyZWUgKGV2ZW50KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3R5cGVkZWYgc3RydWN0IF9YQ0JFdmVudFNvdXJjZQoreworICBHU291cmNlIHNvdXJjZTsKKyAgR1BvbGxGRCBwZmQ7CisgIHVpbnQzMl90IG1hc2s7CisgIEdzdFZ1bGthbkRpc3BsYXlYQ0IgKmRpc3BsYXlfeGNiOworfSBYQ0JFdmVudFNvdXJjZTsKKworc3RhdGljIGdib29sZWFuCit4Y2JfZXZlbnRfc291cmNlX3ByZXBhcmUgKEdTb3VyY2UgKiBiYXNlLCBnaW50ICogdGltZW91dCkKK3sKKyAgKnRpbWVvdXQgPSAtMTsKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3hjYl9ldmVudF9zb3VyY2VfY2hlY2sgKEdTb3VyY2UgKiBiYXNlKQoreworICBYQ0JFdmVudFNvdXJjZSAqc291cmNlID0gKFhDQkV2ZW50U291cmNlICopIGJhc2U7CisgIGdib29sZWFuIHJldHZhbDsKKworICByZXR2YWwgPSBzb3VyY2UtPnBmZC5yZXZlbnRzOworCisgIHJldHVybiByZXR2YWw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgoreGNiX2V2ZW50X3NvdXJjZV9kaXNwYXRjaCAoR1NvdXJjZSAqIGJhc2UsIEdTb3VyY2VGdW5jIGNhbGxiYWNrLCBncG9pbnRlciBkYXRhKQoreworICBYQ0JFdmVudFNvdXJjZSAqc291cmNlID0gKFhDQkV2ZW50U291cmNlICopIGJhc2U7CisKKyAgZ2Jvb2xlYW4gcmV0ID0gX3hjYl9oYW5kbGVfZXZlbnQgKHNvdXJjZS0+ZGlzcGxheV94Y2IpOworCisgIGlmIChjYWxsYmFjaykKKyAgICBjYWxsYmFjayAoZGF0YSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdTb3VyY2VGdW5jcyB4Y2JfZXZlbnRfc291cmNlX2Z1bmNzID0geworICB4Y2JfZXZlbnRfc291cmNlX3ByZXBhcmUsCisgIHhjYl9ldmVudF9zb3VyY2VfY2hlY2ssCisgIHhjYl9ldmVudF9zb3VyY2VfZGlzcGF0Y2gsCisgIE5VTEwKK307CisKK0dTb3VyY2UgKgoreGNiX2V2ZW50X3NvdXJjZV9uZXcgKEdzdFZ1bGthbkRpc3BsYXlYQ0IgKiBkaXNwbGF5X3hjYikKK3sKKyAgeGNiX2Nvbm5lY3Rpb25fdCAqY29ubmVjdGlvbjsKKyAgWENCRXZlbnRTb3VyY2UgKnNvdXJjZTsKKworICBjb25uZWN0aW9uID0gR1NUX1ZVTEtBTl9ESVNQTEFZX1hDQl9DT05ORUNUSU9OIChkaXNwbGF5X3hjYik7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb25uZWN0aW9uICE9IE5VTEwsIE5VTEwpOworCisgIHNvdXJjZSA9IChYQ0JFdmVudFNvdXJjZSAqKQorICAgICAgZ19zb3VyY2VfbmV3ICgmeGNiX2V2ZW50X3NvdXJjZV9mdW5jcywgc2l6ZW9mIChYQ0JFdmVudFNvdXJjZSkpOworICBzb3VyY2UtPmRpc3BsYXlfeGNiID0gZGlzcGxheV94Y2I7CisgIHNvdXJjZS0+cGZkLmZkID0geGNiX2dldF9maWxlX2Rlc2NyaXB0b3IgKGNvbm5lY3Rpb24pOworICBzb3VyY2UtPnBmZC5ldmVudHMgPSBHX0lPX0lOIHwgR19JT19FUlI7CisgIGdfc291cmNlX2FkZF9wb2xsICgmc291cmNlLT5zb3VyY2UsICZzb3VyY2UtPnBmZCk7CisKKyAgcmV0dXJuICZzb3VyY2UtPnNvdXJjZTsKK30KZGlmZiAtLWdpdCBhL2V4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuaCBiL2V4dC92dWxrYW4veGNiL3hjYl9ldmVudF9zb3VyY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZDliNDFjCi0tLSAvZGV2L251bGwKKysrIGIvZXh0L3Z1bGthbi94Y2IveGNiX2V2ZW50X3NvdXJjZS5oCkBAIC0wLDAgKzEsMzAgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fVlVMS0FOX1hDQl9FVkVOVF9TT1VSQ0VfSF9fCisjZGVmaW5lIF9fVlVMS0FOX1hDQl9FVkVOVF9TT1VSQ0VfSF9fCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgInZrZGlzcGxheV94Y2IuaCIKKworR1NvdXJjZSAqCit4Y2JfZXZlbnRfc291cmNlX25ldyAoR3N0VnVsa2FuRGlzcGxheVhDQiAqZGlzcGxheV94Y2IpOworCisjZW5kaWYgLyogX19WVUxLQU5fWENCX0VWRU5UX1NPVVJDRV9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC93YXlsYW5kL01ha2VmaWxlLmFtIGIvZXh0L3dheWxhbmQvTWFrZWZpbGUuYW0KaW5kZXggZTEyZDk5YS4uYzc0MmJmYyAxMDA2NDQKLS0tIGEvZXh0L3dheWxhbmQvTWFrZWZpbGUuYW0KKysrIGIvZXh0L3dheWxhbmQvTWFrZWZpbGUuYW0KQEAgLTE0LDYgKzE0LDcgQEAKIGxpYmdzdHdheWxhbmRzaW5rX2xhX0xJQkFERCA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdGFsbG9jYXRvcnMtJChHU1RfQVBJX1ZFUlNJT04pIFwKIAkkKFdBWUxBTkRfTElCUykgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3Qvd2F5bGFuZC9saWJnc3R3YXlsYW5kLSQoR1NUX0FQSV9WRVJTSU9OKS5sYQogbGliZ3N0d2F5bGFuZHNpbmtfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQpkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvTWFrZWZpbGUuaW4gYi9leHQvd2F5bGFuZC9NYWtlZmlsZS5pbgppbmRleCA1NWUzNzYyLi40MmRlZDA1IDEwMDY0NAotLS0gYS9leHQvd2F5bGFuZC9NYWtlZmlsZS5pbgorKysgYi9leHQvd2F5bGFuZC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODIsNiArMjgxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTksNiArMzIwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjcsNyArMzMwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ2LDggKzM0OCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjQsMTYgKzM2NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTksNiArNDAzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI0LDYgKzQzMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNSw2ICs1MzMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM4LDggKzU0Nyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NSw2ICs1NjIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEyLDE2ICs2MjEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzMsNiArNjg0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Myw2ICs2OTUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTIsNiArNzA1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOSw3ICs3NDQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc4NSw2ICs3OTksNyBAQAogbGliZ3N0d2F5bGFuZHNpbmtfbGFfTElCQUREID0gXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCiAJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YWxsb2NhdG9ycy0kKEdTVF9BUElfVkVSU0lPTikgXAogCSQoV0FZTEFORF9MSUJTKSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC93YXlsYW5kL2xpYmdzdHdheWxhbmQtJChHU1RfQVBJX1ZFUlNJT04pLmxhCiAKZGlmZiAtLWdpdCBhL2V4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmMgYi9leHQvd2F5bGFuZC9nc3R3YXlsYW5kc2luay5jCmluZGV4IDdjYzRiYmEuLmY0ZjM0YTggMTAwNjQ0Ci0tLSBhL2V4dC93YXlsYW5kL2dzdHdheWxhbmRzaW5rLmMKKysrIGIvZXh0L3dheWxhbmQvZ3N0d2F5bGFuZHNpbmsuYwpAQCAtMzIsNyArMzIsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIHdheWxhbmRzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISB3YXlsYW5kc2luawogICogXXwgdGVzdCB0aGUgdmlkZW8gcmVuZGVyaW5nIGluIHdheWxhbmQKICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTIxOSw4ICsyMTksNyBAQAogICBpZiAoc2luay0+cG9vbCkKICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rLT5wb29sKTsKIAotICBpZiAoc2luay0+ZGlzcGxheV9uYW1lKQotICAgIGdfZnJlZSAoc2luay0+ZGlzcGxheV9uYW1lKTsKKyAgZ19mcmVlIChzaW5rLT5kaXNwbGF5X25hbWUpOwogCiAgIGdfbXV0ZXhfY2xlYXIgKCZzaW5rLT5kaXNwbGF5X2xvY2spOwogICBnX211dGV4X2NsZWFyICgmc2luay0+cmVuZGVyX2xvY2spOwpAQCAtMzY0LDEwICszNjMsMTMgQEAKICAgaWYgKGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUgKGNvbnRleHQsCiAgICAgICAgICAgR1NUX1dBWUxBTkRfRElTUExBWV9IQU5ETEVfQ09OVEVYVF9UWVBFKSkgewogICAgIGdfbXV0ZXhfbG9jayAoJnNpbmstPmRpc3BsYXlfbG9jayk7Ci0gICAgaWYgKEdfTElLRUxZICghc2luay0+ZGlzcGxheSkpCisgICAgaWYgKEdfTElLRUxZICghc2luay0+ZGlzcGxheSkpIHsKICAgICAgIGdzdF93YXlsYW5kX3Npbmtfc2V0X2Rpc3BsYXlfZnJvbV9jb250ZXh0IChzaW5rLCBjb250ZXh0KTsKLSAgICBlbHNlCisgICAgfSBlbHNlIHsKICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZWxlbWVudCwgImNoYW5naW5nIGRpc3BsYXkgaGFuZGxlIGlzIG5vdCBzdXBwb3J0ZWQiKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2luay0+ZGlzcGxheV9sb2NrKTsKKyAgICAgIHJldHVybjsKKyAgICB9CiAgICAgZ19tdXRleF91bmxvY2sgKCZzaW5rLT5kaXNwbGF5X2xvY2spOwogICB9CiAKQEAgLTM5Nyw3ICszOTksNyBAQAogICAgIGdfdmFsdWVfaW5pdCAoJmxpc3QsIEdTVF9UWVBFX0xJU1QpOwogICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlLCBHX1RZUEVfU1RSSU5HKTsKIAotICAgIGZvcm1hdHMgPSBzaW5rLT5kaXNwbGF5LT5mb3JtYXRzOworICAgIGZvcm1hdHMgPSBzaW5rLT5kaXNwbGF5LT5zaG1fZm9ybWF0czsKICAgICBmb3IgKGkgPSAwOyBpIDwgZm9ybWF0cy0+bGVuOyBpKyspIHsKICAgICAgIGZtdCA9IGdfYXJyYXlfaW5kZXggKGZvcm1hdHMsIHVpbnQzMl90LCBpKTsKICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJnZhbHVlLCBnc3Rfd2xfc2htX2Zvcm1hdF90b19zdHJpbmcgKGZtdCkpOwpAQCAtNDQ4LDcgKzQ1MCw3IEBACiAgICAgZ290byBpbnZhbGlkX2Zvcm1hdDsKIAogICAvKiB2ZXJpZnkgd2Ugc3VwcG9ydCB0aGUgcmVxdWVzdGVkIGZvcm1hdCAqLwotICBmb3JtYXRzID0gc2luay0+ZGlzcGxheS0+Zm9ybWF0czsKKyAgZm9ybWF0cyA9IHNpbmstPmRpc3BsYXktPnNobV9mb3JtYXRzOwogICBmb3IgKGkgPSAwOyBpIDwgZm9ybWF0cy0+bGVuOyBpKyspIHsKICAgICBpZiAoZ19hcnJheV9pbmRleCAoZm9ybWF0cywgdWludDMyX3QsIGkpID09IGZvcm1hdCkKICAgICAgIGJyZWFrOwpAQCAtNjQ2LDcgKzY0OCw3IEBACiAKICAgICAgIC8qIHRoZSBmaXJzdCB0aW1lIHdlIGFjcXVpcmUgYSBidWZmZXIsCiAgICAgICAgKiB3ZSBuZWVkIHRvIGF0dGFjaCBhIHdsX2J1ZmZlciBvbiBpdCAqLwotICAgICAgd2xidWZmZXIgPSBnc3RfYnVmZmVyX2dldF93bF9idWZmZXIgKGJ1ZmZlcik7CisgICAgICB3bGJ1ZmZlciA9IGdzdF9idWZmZXJfZ2V0X3dsX2J1ZmZlciAodG9fcmVuZGVyKTsKICAgICAgIGlmIChHX1VOTElLRUxZICghd2xidWZmZXIpKSB7CiAgICAgICAgIG1lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkgKHRvX3JlbmRlciwgMCk7CiAgICAgICAgIHdidWYgPSBnc3Rfd2xfc2htX21lbW9yeV9jb25zdHJ1Y3Rfd2xfYnVmZmVyIChtZW0sIHNpbmstPmRpc3BsYXksCkBAIC02NTQsNyArNjU2LDcgQEAKICAgICAgICAgaWYgKEdfVU5MSUtFTFkgKCF3YnVmKSkKICAgICAgICAgICBnb3RvIG5vX3dsX2J1ZmZlcjsKIAotICAgICAgICBnc3RfYnVmZmVyX2FkZF93bF9idWZmZXIgKGJ1ZmZlciwgd2J1Ziwgc2luay0+ZGlzcGxheSk7CisgICAgICAgIGdzdF9idWZmZXJfYWRkX3dsX2J1ZmZlciAodG9fcmVuZGVyLCB3YnVmLCBzaW5rLT5kaXNwbGF5KTsKICAgICAgIH0KIAogICAgICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJnNyYywgR1NUX01BUF9SRUFEKTsKQEAgLTcyNCw2ICs3MjYsMTEgQEAKIAogICBnX3JldHVybl9pZl9mYWlsIChzaW5rICE9IE5VTEwpOwogCisgIGlmIChzaW5rLT53aW5kb3cgIT0gTlVMTCkgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2luaywgImNoYW5naW5nIHdpbmRvdyBoYW5kbGUgaXMgbm90IHN1cHBvcnRlZCIpOworICAgIHJldHVybjsKKyAgfQorCiAgIGdfbXV0ZXhfbG9jayAoJnNpbmstPnJlbmRlcl9sb2NrKTsKIAogICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiU2V0dGluZyB3aW5kb3cgaGFuZGxlICUiIEdTVF9QVFJfRk9STUFULApkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvd2xkaXNwbGF5LmMgYi9leHQvd2F5bGFuZC93bGRpc3BsYXkuYwppbmRleCA4YzVlZWFmLi42MTZkZWQzIDEwMDY0NAotLS0gYS9leHQvd2F5bGFuZC93bGRpc3BsYXkuYworKysgYi9leHQvd2F5bGFuZC93bGRpc3BsYXkuYwpAQCAtNDQsNyArNDQsNyBAQAogc3RhdGljIHZvaWQKIGdzdF93bF9kaXNwbGF5X2luaXQgKEdzdFdsRGlzcGxheSAqIHNlbGYpCiB7Ci0gIHNlbGYtPmZvcm1hdHMgPSBnX2FycmF5X25ldyAoRkFMU0UsIEZBTFNFLCBzaXplb2YgKHVpbnQzMl90KSk7CisgIHNlbGYtPnNobV9mb3JtYXRzID0gZ19hcnJheV9uZXcgKEZBTFNFLCBGQUxTRSwgc2l6ZW9mICh1aW50MzJfdCkpOwogICBzZWxmLT53bF9mZF9wb2xsID0gZ3N0X3BvbGxfbmV3IChUUlVFKTsKICAgc2VsZi0+YnVmZmVycyA9IGdfaGFzaF90YWJsZV9uZXcgKGdfZGlyZWN0X2hhc2gsIGdfZGlyZWN0X2VxdWFsKTsKICAgZ19tdXRleF9pbml0ICgmc2VsZi0+YnVmZmVyc19tdXRleCk7CkBAIC02OSw3ICs2OSw3IEBACiAgICAgICAoR0hGdW5jKSBnc3Rfd2xfYnVmZmVyX2ZvcmNlX3JlbGVhc2VfYW5kX3VucmVmLCBOVUxMKTsKICAgZ19oYXNoX3RhYmxlX3JlbW92ZV9hbGwgKHNlbGYtPmJ1ZmZlcnMpOwogCi0gIGdfYXJyYXlfdW5yZWYgKHNlbGYtPmZvcm1hdHMpOworICBnX2FycmF5X3VucmVmIChzZWxmLT5zaG1fZm9ybWF0cyk7CiAgIGdzdF9wb2xsX2ZyZWUgKHNlbGYtPndsX2ZkX3BvbGwpOwogICBnX2hhc2hfdGFibGVfdW5yZWYgKHNlbGYtPmJ1ZmZlcnMpOwogICBnX211dGV4X2NsZWFyICgmc2VsZi0+YnVmZmVyc19tdXRleCk7CkBAIC0xMzYsNyArMTM2LDcgQEAKIHsKICAgR3N0V2xEaXNwbGF5ICpzZWxmID0gZGF0YTsKIAotICBnX2FycmF5X2FwcGVuZF92YWwgKHNlbGYtPmZvcm1hdHMsIGZvcm1hdCk7CisgIGdfYXJyYXlfYXBwZW5kX3ZhbCAoc2VsZi0+c2htX2Zvcm1hdHMsIGZvcm1hdCk7CiB9CiAKIHN0YXRpYyBjb25zdCBzdHJ1Y3Qgd2xfc2htX2xpc3RlbmVyIHNobV9saXN0ZW5lciA9IHsKZGlmZiAtLWdpdCBhL2V4dC93YXlsYW5kL3dsZGlzcGxheS5oIGIvZXh0L3dheWxhbmQvd2xkaXNwbGF5LmgKaW5kZXggNTUwNWQ2MC4uZTlkZjc0OSAxMDA2NDQKLS0tIGEvZXh0L3dheWxhbmQvd2xkaXNwbGF5LmgKKysrIGIvZXh0L3dheWxhbmQvd2xkaXNwbGF5LmgKQEAgLTUyLDcgKzUyLDcgQEAKICAgc3RydWN0IHdsX3NoZWxsICpzaGVsbDsKICAgc3RydWN0IHdsX3NobSAqc2htOwogICBzdHJ1Y3Qgd2xfc2NhbGVyICpzY2FsZXI7Ci0gIEdBcnJheSAqZm9ybWF0czsKKyAgR0FycmF5ICpzaG1fZm9ybWF0czsKIAogICAvKiBwcml2YXRlICovCiAgIGdib29sZWFuIG93bl9kaXNwbGF5OwpkaWZmIC0tZ2l0IGEvZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuYyBiL2V4dC93YXlsYW5kL3dsc2htYWxsb2NhdG9yLmMKaW5kZXggNmQ4MmIyMy4uOTRmYmJmMSAxMDA2NDQKLS0tIGEvZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuYworKysgYi9leHQvd2F5bGFuZC93bHNobWFsbG9jYXRvci5jCkBAIC0zNCw3ICszNCw3IEBACiBHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChnc3R3YXlsYW5kX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdHdheWxhbmRfZGVidWcKIAotR19ERUZJTkVfVFlQRSAoR3N0V2xTaG1BbGxvY2F0b3IsIGdzdF93bF9zaG1fYWxsb2NhdG9yLCBHU1RfVFlQRV9BTExPQ0FUT1IpOworR19ERUZJTkVfVFlQRSAoR3N0V2xTaG1BbGxvY2F0b3IsIGdzdF93bF9zaG1fYWxsb2NhdG9yLCBHU1RfVFlQRV9GRF9BTExPQ0FUT1IpOwogCiBzdGF0aWMgR3N0TWVtb3J5ICoKIGdzdF93bF9zaG1fYWxsb2NhdG9yX2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIGdzaXplIHNpemUsCkBAIC00NCw4ICs0NCw4IEBACiAgIGNoYXIgZmlsZW5hbWVbMTAyNF07CiAgIHN0YXRpYyBpbnQgaW5pdCA9IDA7CiAgIGludCBmZDsKLSAgZ3BvaW50ZXIgZGF0YTsKLSAgR3N0V2xTaG1NZW1vcnkgKm1lbTsKKyAgR3N0TWVtb3J5ICptZW07CisgIEdzdE1hcEluZm8gaW5mbzsKIAogICAvKiBUT0RPOiBtYWtlIHVzZSBvZiB0aGUgYWxsb2NhdGlvbiBwYXJhbXMsIGlmIG5lY2Vzc2FyeSAqLwogCkBAIC02NSw0NSArNjUsMjggQEAKICAgICByZXR1cm4gTlVMTDsKICAgfQogCi0gIGRhdGEgPSBtbWFwIChOVUxMLCBzaXplLCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0gIGlmIChkYXRhID09IE1BUF9GQUlMRUQpIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAibW1hcCBmYWlsZWQ6ICVzIiwgc3RyZXJyb3IgKGVycm5vKSk7CisgIG1lbSA9IGdzdF9mZF9hbGxvY2F0b3JfYWxsb2MgKGFsbG9jYXRvciwgZmQsIHNpemUsCisgICAgICBHU1RfRkRfTUVNT1JZX0ZMQUdfS0VFUF9NQVBQRUQpOworICBpZiAoR19VTkxJS0VMWSAoIW1lbSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiR3N0RmRNZW1vcnkgYWxsb2NhdGlvbiBmYWlsZWQiKTsKICAgICBjbG9zZSAoZmQpOwogICAgIHJldHVybiBOVUxMOwogICB9CiAKKyAgLyogd2UgbmVlZCB0byBtYXAgdGhlIG1lbW9yeSBpbiBvcmRlciB0byB1bmxpbmsgdGhlIGZpbGUgd2l0aG91dCBsb3NpbmcgaXQgKi8KKyAgaWYgKCFnc3RfbWVtb3J5X21hcCAobWVtLCAmaW5mbywgR1NUX01BUF9SRUFEV1JJVEUpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkdzdEZkTWVtb3J5IG1hcCBmYWlsZWQiKTsKKyAgICBjbG9zZSAoZmQpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgLyogdW5tYXAgd2lsbCBub3QgcmVhbGx5IG11bm1hcCgpLCB3ZSBqdXN0CisgICAqIG5lZWQgaXQgdG8gcmVsZWFzZSB0aGUgbWluaW9iamVjdCBsb2NrICovCisgIGdzdF9tZW1vcnlfdW5tYXAgKG1lbSwgJmluZm8pOworCiAgIHVubGluayAoZmlsZW5hbWUpOwogCi0gIG1lbSA9IGdfc2xpY2VfbmV3MCAoR3N0V2xTaG1NZW1vcnkpOwotICBnc3RfbWVtb3J5X2luaXQgKChHc3RNZW1vcnkgKikgbWVtLCBHU1RfTUVNT1JZX0ZMQUdfTk9fU0hBUkUsIGFsbG9jYXRvciwgTlVMTCwKLSAgICAgIHNpemUsIDAsIDAsIHNpemUpOwotICBtZW0tPmRhdGEgPSBkYXRhOwotICBtZW0tPmZkID0gZmQ7Ci0KLSAgcmV0dXJuIChHc3RNZW1vcnkgKikgbWVtOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3dsX3NobV9hbGxvY2F0b3JfZnJlZSAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBtZW1vcnkpCi17Ci0gIEdzdFdsU2htTWVtb3J5ICpzaG1fbWVtID0gKEdzdFdsU2htTWVtb3J5ICopIG1lbW9yeTsKLQotICBpZiAoc2htX21lbS0+ZmQgIT0gLTEpCi0gICAgY2xvc2UgKHNobV9tZW0tPmZkKTsKLSAgbXVubWFwIChzaG1fbWVtLT5kYXRhLCBtZW1vcnktPm1heHNpemUpOwotCi0gIGdfc2xpY2VfZnJlZSAoR3N0V2xTaG1NZW1vcnksIHNobV9tZW0pOwotfQotCi1zdGF0aWMgZ3BvaW50ZXIKLWdzdF93bF9zaG1fbWVtX21hcCAoR3N0TWVtb3J5ICogbWVtLCBnc2l6ZSBtYXhzaXplLCBHc3RNYXBGbGFncyBmbGFncykKLXsKLSAgcmV0dXJuICgoR3N0V2xTaG1NZW1vcnkgKikgbWVtKS0+ZGF0YTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF93bF9zaG1fbWVtX3VubWFwIChHc3RNZW1vcnkgKiBtZW0pCi17CisgIHJldHVybiBtZW07CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xMTIsMTcgKzk1LDE2IEBACiAgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzcyA9IChHc3RBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKIAogICBhbGxvY19jbGFzcy0+YWxsb2MgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3dsX3NobV9hbGxvY2F0b3JfYWxsb2MpOwotICBhbGxvY19jbGFzcy0+ZnJlZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3Rfd2xfc2htX2FsbG9jYXRvcl9mcmVlKTsKIH0KIAogc3RhdGljIHZvaWQKIGdzdF93bF9zaG1fYWxsb2NhdG9yX2luaXQgKEdzdFdsU2htQWxsb2NhdG9yICogc2VsZikKIHsKLSAgc2VsZi0+cGFyZW50X2luc3RhbmNlLm1lbV90eXBlID0gR1NUX0FMTE9DQVRPUl9XTF9TSE07Ci0gIHNlbGYtPnBhcmVudF9pbnN0YW5jZS5tZW1fbWFwID0gZ3N0X3dsX3NobV9tZW1fbWFwOwotICBzZWxmLT5wYXJlbnRfaW5zdGFuY2UubWVtX3VubWFwID0gZ3N0X3dsX3NobV9tZW1fdW5tYXA7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKHNlbGYpOwogCi0gIEdTVF9PQkpFQ1RfRkxBR19TRVQgKHNlbGYsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOworICBhbGxvYy0+bWVtX3R5cGUgPSBHU1RfQUxMT0NBVE9SX1dMX1NITTsKKworICBHU1RfT0JKRUNUX0ZMQUdfVU5TRVQgKHNlbGYsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOwogfQogCiB2b2lkCkBAIC0xNDgsNyArMTMwLDYgQEAKIGdzdF93bF9zaG1fbWVtb3J5X2NvbnN0cnVjdF93bF9idWZmZXIgKEdzdE1lbW9yeSAqIG1lbSwgR3N0V2xEaXNwbGF5ICogZGlzcGxheSwKICAgICBjb25zdCBHc3RWaWRlb0luZm8gKiBpbmZvKQogewotICBHc3RXbFNobU1lbW9yeSAqc2htX21lbSA9IChHc3RXbFNobU1lbW9yeSAqKSBtZW07CiAgIGdpbnQgd2lkdGgsIGhlaWdodCwgc3RyaWRlOwogICBnc2l6ZSBzaXplOwogICBlbnVtIHdsX3NobV9mb3JtYXQgZm9ybWF0OwpAQCAtMTYzLDE4ICsxNDQsMTUgQEAKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X2lzX3dsX3NobV9tZW1vcnkgKG1lbSksIE5VTEwpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2l6ZSA8PSBtZW0tPnNpemUsIE5VTEwpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2htX21lbS0+ZmQgIT0gLTEsIE5VTEwpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKG1lbS0+YWxsb2NhdG9yLCAiQ3JlYXRpbmcgd2xfYnVmZmVyIG9mIHNpemUgJSIKICAgICAgIEdfR1NTSVpFX0ZPUk1BVCAiICglZCB4ICVkLCBzdHJpZGUgJWQpLCBmb3JtYXQgJXMiLCBzaXplLCB3aWR0aCwgaGVpZ2h0LAogICAgICAgc3RyaWRlLCBnc3Rfd2xfc2htX2Zvcm1hdF90b19zdHJpbmcgKGZvcm1hdCkpOwogCi0gIHdsX3Bvb2wgPSB3bF9zaG1fY3JlYXRlX3Bvb2wgKGRpc3BsYXktPnNobSwgc2htX21lbS0+ZmQsIG1lbS0+c2l6ZSk7CisgIHdsX3Bvb2wgPSB3bF9zaG1fY3JlYXRlX3Bvb2wgKGRpc3BsYXktPnNobSwgZ3N0X2ZkX21lbW9yeV9nZXRfZmQgKG1lbSksCisgICAgICBtZW0tPnNpemUpOwogICB3YnVmZmVyID0gd2xfc2htX3Bvb2xfY3JlYXRlX2J1ZmZlciAod2xfcG9vbCwgMCwgd2lkdGgsIGhlaWdodCwgc3RyaWRlLAogICAgICAgZm9ybWF0KTsKLQotICBjbG9zZSAoc2htX21lbS0+ZmQpOwotICBzaG1fbWVtLT5mZCA9IC0xOwogICB3bF9zaG1fcG9vbF9kZXN0cm95ICh3bF9wb29sKTsKIAogICByZXR1cm4gd2J1ZmZlcjsKZGlmZiAtLWdpdCBhL2V4dC93YXlsYW5kL3dsc2htYWxsb2NhdG9yLmggYi9leHQvd2F5bGFuZC93bHNobWFsbG9jYXRvci5oCmluZGV4IGYxMjg4MmMuLjA3YWUxN2YgMTAwNjQ0Ci0tLSBhL2V4dC93YXlsYW5kL3dsc2htYWxsb2NhdG9yLmgKKysrIGIvZXh0L3dheWxhbmQvd2xzaG1hbGxvY2F0b3IuaApAQCAtMjQsNiArMjQsNyBAQAogI2RlZmluZSBfX0dTVF9XTF9TSE1fQUxMT0NBVE9SX0hfXwogCiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisjaW5jbHVkZSA8Z3N0L2FsbG9jYXRvcnMvYWxsb2NhdG9ycy5oPgogI2luY2x1ZGUgPHdheWxhbmQtY2xpZW50LXByb3RvY29sLmg+CiAjaW5jbHVkZSAid2xkaXNwbGF5LmgiCiAKQEAgLTM4LDI2ICszOSwxNyBAQAogCiAjZGVmaW5lIEdTVF9BTExPQ0FUT1JfV0xfU0hNICJ3bF9zaG0iCiAKLXR5cGVkZWYgc3RydWN0IF9Hc3RXbFNobU1lbW9yeSBHc3RXbFNobU1lbW9yeTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RXbFNobUFsbG9jYXRvciBHc3RXbFNobUFsbG9jYXRvcjsKIHR5cGVkZWYgc3RydWN0IF9Hc3RXbFNobUFsbG9jYXRvckNsYXNzIEdzdFdsU2htQWxsb2NhdG9yQ2xhc3M7CiAKLXN0cnVjdCBfR3N0V2xTaG1NZW1vcnkKLXsKLSAgR3N0TWVtb3J5IHBhcmVudDsKLQotICBncG9pbnRlciBkYXRhOwotICBnaW50IGZkOwotfTsKLQogc3RydWN0IF9Hc3RXbFNobUFsbG9jYXRvcgogewotICBHc3RBbGxvY2F0b3IgcGFyZW50X2luc3RhbmNlOworICBHc3RGZEFsbG9jYXRvciBwYXJlbnRfaW5zdGFuY2U7CiB9OwogCiBzdHJ1Y3QgX0dzdFdsU2htQWxsb2NhdG9yQ2xhc3MKIHsKLSAgR3N0QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworICBHc3RGZEFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKIH07CiAKIEdUeXBlIGdzdF93bF9zaG1fYWxsb2NhdG9yX2dldF90eXBlICh2b2lkKTsKZGlmZiAtLWdpdCBhL2V4dC93YXlsYW5kL3dsd2luZG93LmMgYi9leHQvd2F5bGFuZC93bHdpbmRvdy5jCmluZGV4IGE5NjQzMzUuLjc5MDAwYWUgMTAwNjQ0Ci0tLSBhL2V4dC93YXlsYW5kL3dsd2luZG93LmMKKysrIGIvZXh0L3dheWxhbmQvd2x3aW5kb3cuYwpAQCAtMjM4LDEyICsyMzgsMTUgQEAKIGdzdF93bF93aW5kb3dfcmVzaXplX3ZpZGVvX3N1cmZhY2UgKEdzdFdsV2luZG93ICogd2luZG93LCBnYm9vbGVhbiBjb21taXQpCiB7CiAgIEdzdFZpZGVvUmVjdGFuZ2xlIHNyYyA9IHsgMCwgfTsKKyAgR3N0VmlkZW9SZWN0YW5nbGUgZHN0ID0geyAwLCB9OwogICBHc3RWaWRlb1JlY3RhbmdsZSByZXM7CiAKICAgLyogY2VudGVyIHRoZSB2aWRlb19zdWJzdXJmYWNlIGluc2lkZSBhcmVhX3N1YnN1cmZhY2UgKi8KICAgc3JjLncgPSB3aW5kb3ctPnZpZGVvX3dpZHRoOwogICBzcmMuaCA9IHdpbmRvdy0+dmlkZW9faGVpZ2h0OwotICBnc3RfdmlkZW9fc2lua19jZW50ZXJfcmVjdCAoc3JjLCB3aW5kb3ctPnJlbmRlcl9yZWN0YW5nbGUsICZyZXMsIFRSVUUpOworICBkc3QudyA9IHdpbmRvdy0+cmVuZGVyX3JlY3RhbmdsZS53OworICBkc3QuaCA9IHdpbmRvdy0+cmVuZGVyX3JlY3RhbmdsZS5oOworICBnc3RfdmlkZW9fc2lua19jZW50ZXJfcmVjdCAoc3JjLCBkc3QsICZyZXMsIFRSVUUpOwogCiAgIHdsX3N1YnN1cmZhY2Vfc2V0X3Bvc2l0aW9uICh3aW5kb3ctPnZpZGVvX3N1YnN1cmZhY2UsIHJlcy54LCByZXMueSk7CiAgIHdsX3ZpZXdwb3J0X3NldF9kZXN0aW5hdGlvbiAod2luZG93LT52aWRlb192aWV3cG9ydCwgcmVzLncsIHJlcy5oKTsKZGlmZiAtLWdpdCBhL2V4dC93ZWJwL01ha2VmaWxlLmluIGIvZXh0L3dlYnAvTWFrZWZpbGUuaW4KaW5kZXggMjU5OTg4ZC4uZjY0YjkxMyAxMDA2NDQKLS0tIGEvZXh0L3dlYnAvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3dlYnAvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQveDI2NS9NYWtlZmlsZS5pbiBiL2V4dC94MjY1L01ha2VmaWxlLmluCmluZGV4IDNiZmZkZDMuLmJlNmYyZDIgMTAwNjQ0Ci0tLSBhL2V4dC94MjY1L01ha2VmaWxlLmluCisrKyBiL2V4dC94MjY1L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3gyNjUvZ3N0eDI2NWVuYy5oIGIvZXh0L3gyNjUvZ3N0eDI2NWVuYy5oCmluZGV4IDU4YmE3YzAuLjY2YTgxMzUgMTAwNjQ0Ci0tLSBhL2V4dC94MjY1L2dzdHgyNjVlbmMuaAorKysgYi9leHQveDI2NS9nc3R4MjY1ZW5jLmgKQEAgLTI1LDcgKzI1LDYgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvZW5jb2Rlci5oPgotI2luY2x1ZGUgIl9zdGRpbnQuaCIKICNpbmNsdWRlIDx4MjY1Lmg+CiAKIEdfQkVHSU5fREVDTFMKZGlmZiAtLWdpdCBhL2V4dC94dmlkL01ha2VmaWxlLmluIGIvZXh0L3h2aWQvTWFrZWZpbGUuaW4KaW5kZXggMDExNjE5ZS4uZDRjMTIwZCAxMDA2NDQKLS0tIGEvZXh0L3h2aWQvTWFrZWZpbGUuaW4KKysrIGIvZXh0L3h2aWQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9leHQvemJhci9NYWtlZmlsZS5pbiBiL2V4dC96YmFyL01ha2VmaWxlLmluCmluZGV4IDYxMDgxZjguLmY1MjQ1NzQgMTAwNjQ0Ci0tLSBhL2V4dC96YmFyL01ha2VmaWxlLmluCisrKyBiL2V4dC96YmFyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZXh0L3piYXIvZ3N0emJhci5jIGIvZXh0L3piYXIvZ3N0emJhci5jCmluZGV4IDJiYjBhN2QuLjYyZmIxMDYgMTAwNjQ0Ci0tLSBhL2V4dC96YmFyL2dzdHpiYXIuYworKysgYi9leHQvemJhci9nc3R6YmFyLmMKQEAgLTcxLDEwICs3MSwxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC1tIHY0bDJzcmMgISB2aWRlb2NvbnZlcnQgISB6YmFyICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC1tIHY0bDJzcmMgISB2aWRlb2NvbnZlcnQgISB6YmFyICEgdmlkZW9jb252ZXJ0ICEgeHZpbWFnZXNpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgd2lsbCBkZXRlY3QgYmFyY29kZXMgYW5kIHNlbmQgdGhlbSBhcyBtZXNzYWdlcy4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC1tIHY0bDJzcmMgISB0ZWUgbmFtZT10ICEgcXVldWUgISB2aWRlb2NvbnZlcnQgISB6YmFyICEgZmFrZXNpbmsgdC4gISBxdWV1ZSAhIHh2aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtbSB2NGwyc3JjICEgdGVlIG5hbWU9dCAhIHF1ZXVlICEgdmlkZW9jb252ZXJ0ICEgemJhciAhIGZha2VzaW5rIHQuICEgcXVldWUgISB4dmltYWdlc2luawogICogXXwgU2FtZSBhcyBhYm92ZSwgYnV0IHJ1bm5pbmcgdGhlIGZpbHRlciBvbiBhIGJyYW5jaCB0byBrZWVwIHRoZSBkaXNwbGF5IGluIGNvbG9yCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL01ha2VmaWxlLmluCmluZGV4IGM1ZTU3M2IuLmEzN2ZkMjIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ4LDYgKzI0Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg1LDYgKzI4Niw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkzLDcgKzI5Niw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMiw4ICszMTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzMwLDE2ICszMzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY1LDYgKzM2OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5MCw2ICszOTYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTEsNiArNDk5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwNCw4ICs1MTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjEsNiArNTI4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3OCwxNiArNTg3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM5LDYgKzY1MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDksNiArNjYxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU4LDYgKzY3MSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTUsNyArNzEwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvTWFrZWZpbGUuYW0KaW5kZXggYTczODBmOC4uN2QwYjMwOSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L01ha2VmaWxlLmFtCisrKyBiL2dzdC1saWJzL2dzdC9NYWtlZmlsZS5hbQpAQCAtMTEsMjAgKzExLDIwIEBACiBlbmRpZgogCiBTVUJESVJTID0gdXJpZG93bmxvYWRlciBhZGFwdGl2ZWRlbXV4IGludGVyZmFjZXMgYmFzZWNhbWVyYWJpbnNyYyBjb2RlY3BhcnNlcnMgXAotCSBpbnNlcnRiaW4gbXBlZ3RzIGJhc2UgdmlkZW8gJChHTF9ESVIpICQoV0FZTEFORF9ESVIpCisJIGluc2VydGJpbiBtcGVndHMgYmFzZSB2aWRlbyBhdWRpbyBwbGF5ZXIgJChHTF9ESVIpICQoV0FZTEFORF9ESVIpCiAKIG5vaW5zdF9IRUFERVJTID0gZ3N0LWkxOG4tcGx1Z2luLmggZ2V0dGV4dC5oIGdsaWItY29tcGF0LXByaXZhdGUuaAogRElTVF9TVUJESVJTID0gdXJpZG93bmxvYWRlciBhZGFwdGl2ZWRlbXV4IGludGVyZmFjZXMgZ2wgYmFzZWNhbWVyYWJpbnNyYyBcCi0JY29kZWNwYXJzZXJzIGluc2VydGJpbiBtcGVndHMgd2F5bGFuZCBiYXNlIHZpZGVvCisJY29kZWNwYXJzZXJzIGluc2VydGJpbiBtcGVndHMgd2F5bGFuZCBiYXNlIHZpZGVvIGF1ZGlvIHBsYXllcgogCiAjZGVwZW5kZW5jaWVzCi12aWRlbzogYmFzZQordmlkZW8sIGF1ZGlvOiBiYXNlCiAKIGFkYXB0aXZlZGVtdXg6IHVyaWRvd25sb2FkZXIKIAogSU5ERVBFTkRFTlRfU1VCRElSUyA9IFwKIAlpbnRlcmZhY2VzIGJhc2VjYW1lcmFiaW5zcmMgY29kZWNwYXJzZXJzIGluc2VydGJpbiB1cmlkb3dubG9hZGVyIFwKLQltcGVndHMgYmFzZSAkKEdMX0RJUikgJChXQVlMQU5EX0RJUikKKwltcGVndHMgYmFzZSBwbGF5ZXIgJChHTF9ESVIpICQoV0FZTEFORF9ESVIpCiAKIC5QSE9OWTogaW5kZXBlbmRlbnQtc3ViZGlycyAkKElOREVQRU5ERU5UX1NVQkRJUlMpCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9NYWtlZmlsZS5pbgppbmRleCAxZDhhN2FlLi4zMTI5ZGM3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI1MCw2ICsyNDksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Nyw2ICsyODgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5NSw3ICsyOTgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTQsOCArMzE2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMzMiwxNiArMzM1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Nyw2ICszNzEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zOTIsNiArMzk4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDkzLDYgKzUwMSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDYsOCArNTE1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTIzLDYgKzUzMCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01ODAsMTYgKzU4OSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY0MSw2ICs2NTIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjUxLDYgKzY2Myw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY2MCw2ICs2NzMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk3LDcgKzcxMiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzQxLDE1ICs3NTUsMTUgQEAKIEBVU0VfT1BFTkdMX1RSVUVAR0xfRElSID0gZ2wKIEBVU0VfV0FZTEFORF9UUlVFQFdBWUxBTkRfRElSID0gd2F5bGFuZAogU1VCRElSUyA9IHVyaWRvd25sb2FkZXIgYWRhcHRpdmVkZW11eCBpbnRlcmZhY2VzIGJhc2VjYW1lcmFiaW5zcmMgY29kZWNwYXJzZXJzIFwKLQkgaW5zZXJ0YmluIG1wZWd0cyBiYXNlIHZpZGVvICQoR0xfRElSKSAkKFdBWUxBTkRfRElSKQorCSBpbnNlcnRiaW4gbXBlZ3RzIGJhc2UgdmlkZW8gYXVkaW8gcGxheWVyICQoR0xfRElSKSAkKFdBWUxBTkRfRElSKQogCiBub2luc3RfSEVBREVSUyA9IGdzdC1pMThuLXBsdWdpbi5oIGdldHRleHQuaCBnbGliLWNvbXBhdC1wcml2YXRlLmgKIERJU1RfU1VCRElSUyA9IHVyaWRvd25sb2FkZXIgYWRhcHRpdmVkZW11eCBpbnRlcmZhY2VzIGdsIGJhc2VjYW1lcmFiaW5zcmMgXAotCWNvZGVjcGFyc2VycyBpbnNlcnRiaW4gbXBlZ3RzIHdheWxhbmQgYmFzZSB2aWRlbworCWNvZGVjcGFyc2VycyBpbnNlcnRiaW4gbXBlZ3RzIHdheWxhbmQgYmFzZSB2aWRlbyBhdWRpbyBwbGF5ZXIKIAogSU5ERVBFTkRFTlRfU1VCRElSUyA9IFwKIAlpbnRlcmZhY2VzIGJhc2VjYW1lcmFiaW5zcmMgY29kZWNwYXJzZXJzIGluc2VydGJpbiB1cmlkb3dubG9hZGVyIFwKLQltcGVndHMgYmFzZSAkKEdMX0RJUikgJChXQVlMQU5EX0RJUikKKwltcGVndHMgYmFzZSBwbGF5ZXIgJChHTF9ESVIpICQoV0FZTEFORF9ESVIpCiAKIGFsbDogYWxsLXJlY3Vyc2l2ZQogCkBAIC0xMDY0LDcgKzEwNzgsNyBAQAogCiAKICNkZXBlbmRlbmNpZXMKLXZpZGVvOiBiYXNlCit2aWRlbywgYXVkaW86IGJhc2UKIAogYWRhcHRpdmVkZW11eDogdXJpZG93bmxvYWRlcgogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlLmluCmluZGV4IDAwMWQ4YjUuLjg3MTk4ODMgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jCmluZGV4IDlmNzRjNjUuLmRmZTdiYTcgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYworKysgYi9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmMKQEAgLTY4LDYgKzY4LDUzIEBACiAgKiBpbmZvcm1hdGlvbi4KICAqLwogCisvKgorTVQgc2FmZXR5LgorVGhlIGZvbGxvd2luZyBydWxlcyB3ZXJlIG9ic2VydmVkIHdoaWxlIGltcGxlbWVudGluZyBNVCBzYWZldHkgaW4gYWRhcHRpdmUgZGVtdXg6CisxLiBJZiBhIHZhcmlhYmxlIGlzIGFjY2Vzc2VkIGZyb20gbXVsdGlwbGUgdGhyZWFkcyBhbmQgYXQgbGVhc3Qgb25lIHRocmVhZAord3JpdGVzIHRvIGl0LCB0aGVuIGFsbCB0aGUgYWNjZXNzZXMgbmVlZHMgdG8gYmUgZG9uZSBmcm9tIGluc2lkZSBhIGNyaXRpY2FsIHNlY3Rpb24uCisyLiBJZiB0aHJlYWQgQSB3YW50cyB0byBqb2luIHRocmVhZCBCIHRoZW4gYXQgdGhlIG1vbWVudCBpdCBjYWxscyBnc3RfdGFza19qb2luCitpdCBtdXN0IG5vdCBob2xkIGFueSBtdXRleGVzIHRoYXQgdGhyZWFkIEIgbWlnaHQgdGFrZS4KKworQWRhcHRpdmUgZGVtdXggQVBJIGNhbiBiZSBjYWxsZWQgZnJvbSBzZXZlcmFsIHRocmVhZHMuIE1vcmUsIGFkYXB0aXZlIGRlbXV4CitzdGFydHMgc29tZSB0aHJlYWRzIHRvIG1vbml0b3IgdGhlIGRvd25sb2FkIG9mIGZyYWdtZW50cy4gSW4gb3JkZXIgdG8gcHJvdGVjdAorYWNjZXNzZXMgdG8gc2hhcmVkIHZhcmlhYmxlcyAoZGVtdXggYW5kIHN0cmVhbXMpIGFsbCB0aGUgQVBJIGZ1bmN0aW9ucyB0aGF0CitjYW4gYmUgcnVuIGluIGRpZmZlcmVudCB0aHJlYWRzIHdpbGwgbmVlZCB0byBnZXQgYSBtdXRleCAobWFuaWZlc3RfbG9jaykKK3doZW4gdGhleSBzdGFydCBhbmQgcmVsZWFzZSBpdCB3aGVuIHRoZXkgZW5kLiBCZWNhdXNlIHNvbWUgb2YgdGhvc2UgZnVuY3Rpb25zCitjYW4gaW5kaXJlY3RseSBjYWxsIG90aGVyIEFQSSBmdW5jdGlvbnMgKGVnIHRoZXkgY2FuIGdlbmVyYXRlIGV2ZW50cyBvciBtZXNzYWdlcwordGhhdCBhcmUgcHJvY2Vzc2VkIGluIHRoZSBzYW1lIHRocmVhZCkgdGhlIG1hbmlmZXN0X2xvY2sgbXVzdCBiZSByZWN1cnNpdmUuCisKK1RoZSBtYW5pZmVzdF9sb2NrIHdpbGwgc2VyaWFsaXplIHRoZSBwdWJsaWMgQVBJIG1ha2luZyBhY2Nlc3MgdG8gc2hhcmVkCit2YXJpYWJsZXMgc2FmZS4gQnV0IHNvbWUgb2YgdGhlc2UgZnVuY3Rpb25zIHdpbGwgdHJ5IGF0IHNvbWUgbW9tZW50IHRvIGpvaW4KK3RocmVhZHMgY3JlYXRlZCBieSBhZGFwdGl2ZSBkZW11eCwgb3IgdG8gY2hhbmdlIHRoZSBzdGF0ZSBvZiBzcmMgZWxlbWVudHMKKyh3aGljaCB3aWxsIGJsb2NrIHRyeWluZyB0byBqb2luIHRoZSBzcmMgZWxlbWVudCBzdHJlYW1pbmcgdGhyZWFkKS4gQmVjYXVzZQorb2YgcnVsZSAyLCB0aG9zZSBmdW5jdGlvbnMgd2lsbCBuZWVkIHRvIHJlbGVhc2UgdGhlIG1hbmlmZXN0X2xvY2sgZHVyaW5nIHRoZQorY2FsbCBvZiBnc3RfdGFza19qb2luLiBEdXJpbmcgdGhpcyB0aW1lIHRoZXkgY2FuIGJlIGludGVycnVwdGVkIGJ5IG90aGVyIEFQSSBjYWxscy4KK0ZvciBleGFtcGxlLCBkdXJpbmcgdGhlIHByZWNlc3Npbmcgb2YgYSBzZWVrIGV2ZW50LCBnc3RfYWRhcHRpdmVfZGVtdXhfc3RvcF90YXNrcworaXMgY2FsbGVkIGFuZCB0aGlzIHdpbGwgam9pbiBhbGwgdGhyZWFkcy4gSW4gb3JkZXIgdG8gcHJldmVudCBpbnRlcnJ1cHRpb25zCitkdXJpbmcgc3VjaCBwZXJpb2QsIGFsbCB0aGUgQVBJIGZ1bmN0aW9ucyB3aWxsIGFsc28gdXNlIGEgc2Vjb25kIGxvY2s6IGFwaV9sb2NrLgorVGhpcyB3aWxsIGJlIHRha2VuIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZ1bmN0aW9uIGFuZCByZWxlYXNlZCBhdCB0aGUgZW5kLAorYnV0IHRoaXMgdGltZSB0aGlzIGxvY2sgd2lsbCBub3QgYmUgdGVtcG9yYXJpbHkgcmVsZWFzZWQgZHVyaW5nIGpvaW4uCitUaGlzIGxvY2sgd2lsbCBiZSB1c2VkIG9ubHkgYnkgQVBJIGNhbGxzIChub3QgYnkgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF9sb29wCitvciBnc3RfYWRhcHRpdmVfZGVtdXhfdXBkYXRlc19sb29wIG9yIF9zcmNfY2hhaW4gb3IgX3NyY19ldmVudCkgc28gaXQgaXMgc2FmZQordG8gaG9sZCBpdCB3aGlsZSBqb2luaW5nIHRoZSB0aHJlYWRzIG9yIGNoYW5naW5nIHRoZSBzcmMgZWxlbWVudCBzdGF0ZS4gVGhlCithcGlfbG9jayB3aWxsIHNlcmlhbGlzZSBhbGwgZXh0ZXJuYWwgcmVxdWVzdHMgdG8gYWRhcHRpdmUgZGVtdXguIEluIG9yZGVyIHRvCithdm9pZCBkZWFkbG9ja3MsIGlmIGEgZnVuY3Rpb24gbmVlZHMgdG8gYWNxdWlyZSBib3RoIG1hbmlmZXN0IGFuZCBhcGkgbG9ja3MsCit0aGUgYXBpX2xvY2sgd2lsbCBiZSB0YWtlbiBmaXJzdCBhbmQgdGhlIG1hbmlmZXN0X2xvY2sgc2Vjb25kLgorCitCeSB1c2luZyB0aGUgYXBpX2xvY2sgYSB0aHJlYWQgaXMgcHJvdGVjdGVkIGFnYWluc3Qgb3RoZXIgQVBJIGNhbGxzLiBCdXQgd2hlbgordGVtcG9yYXJpbHkgZHJvcHBpbmcgdGhlIG1hbmlmZXN0X2xvY2ssIGl0IHdpbGwgYmUgdnVsbmVyYWJsZSB0byBjaGFuZ2VzIGZyb20KK3RocmVhZHMgdGhhdCB1c2Ugb25seSB0aGUgbWFuaWZlc3RfbG9jayBhbmQgbm90IHRoZSBhcGlfbG9jay4gVGhlc2UgdGhyZWFkcyBydW4KK29uZSBvZiB0aGUgZm9sbG93aW5nIGZ1bmN0aW9uczogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF9sb29wLAorZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZXNfbG9vcCwgX3NyY19jaGFpbiwgX3NyY19ldmVudC4gSW4gb3JkZXIgdG8gZ3VhcmFudGVlCit0aGF0IGFsbCBvcGVyYXRpb25zIGR1cmluZyBhbiBBUEkgY2FsbCBhcmUgbm90IGltcGFjdGVkIGJ5IG90aGVyIHdyaXRlcywgdGhlCithYm92ZSBtZW50aW9uZWQgZnVuY3Rpb25zIG11c3QgY2hlY2sgYSBjYW5jZWxsZWQgZmxhZyBldmVyeSB0aW1lIHRoZXkgcmVhY3F1aXJlCit0aGUgbWFuaWZlc3RfbG9jay4gSWYgdGhlIGZsYWcgaXMgc2V0LCB0aGV5IG11c3QgZXhpdCBpbW1lZGlhdGVseSwgd2l0aG91dAorcGVyZm9ybWluZyBhbnkgY2hhbmdlcyBvbiB0aGUgc2hhcmVkIGRhdGEuIEluIHRoaXMgd2F5LCBhbiBBUEkgY2FsbCAoZWcgc2VlaworcmVxdWVzdCkgY2FuIHNldCB0aGUgY2FuY2VsIGZsYWcgYmVmb3JlIHJlbGVhc2luZyB0aGUgbWFuaWZlc3RfbG9jayBhbmQgYmUgc3VyZQordGhhdCB0aGUgZGVtdXggb2JqZWN0IGFuZCBpdHMgc3RyZWFtcyBhcmUgbm90IGNoYW5nZWQgYnkgYW55Ym9keSBlbHNlLgorKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICNpbmNsdWRlICJjb25maWcuaCIKICNlbmRpZgpAQCAtODUsMTQgKzEzMiwyNiBAQAogCiAjZGVmaW5lIE1BWF9ET1dOTE9BRF9FUlJPUl9DT1VOVCAzCiAjZGVmaW5lIERFRkFVTFRfRkFJTEVEX0NPVU5UIDMKLSNkZWZpbmUgREVGQVVMVF9MT09LQkFDS19GUkFHTUVOVFMgMwogI2RlZmluZSBERUZBVUxUX0NPTk5FQ1RJT05fU1BFRUQgMAogI2RlZmluZSBERUZBVUxUX0JJVFJBVEVfTElNSVQgMC44CisjZGVmaW5lIFNSQ19RVUVVRV9NQVhfQllURVMgMjAgKiAxMDI0ICogMTAyNCAgICAvKiBGb3Igc2FmZXR5LiBMYXJnZSBlbm91Z2ggdG8gaG9sZCBhIHNlZ21lbnQuICovCisjZGVmaW5lIE5VTV9MT09LQkFDS19GUkFHTUVOVFMgMworCisjZGVmaW5lIEdTVF9NQU5JRkVTVF9HRVRfTE9DSyhkKSAoJihHU1RfQURBUFRJVkVfREVNVVhfQ0FTVChkKS0+cHJpdi0+bWFuaWZlc3RfbG9jaykpCisjZGVmaW5lIEdTVF9NQU5JRkVTVF9MT0NLKGQpIGdfcmVjX211dGV4X2xvY2sgKEdTVF9NQU5JRkVTVF9HRVRfTE9DSyAoZCkpOworI2RlZmluZSBHU1RfTUFOSUZFU1RfVU5MT0NLKGQpIGdfcmVjX211dGV4X3VubG9jayAoR1NUX01BTklGRVNUX0dFVF9MT0NLIChkKSk7CisKKyNkZWZpbmUgR1NUX0FQSV9HRVRfTE9DSyhkKSAoJihHU1RfQURBUFRJVkVfREVNVVhfQ0FTVChkKS0+cHJpdi0+YXBpX2xvY2spKQorI2RlZmluZSBHU1RfQVBJX0xPQ0soZCkgICBnX211dGV4X2xvY2sgKEdTVF9BUElfR0VUX0xPQ0sgKGQpKTsKKyNkZWZpbmUgR1NUX0FQSV9VTkxPQ0soZCkgZ19tdXRleF91bmxvY2sgKEdTVF9BUElfR0VUX0xPQ0sgKGQpKTsKKworI2RlZmluZSBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9HRVRfTE9DSyhkKSAoJkdTVF9BREFQVElWRV9ERU1VWF9DQVNUKGQpLT5wcml2LT5zZWdtZW50X2xvY2spCisjZGVmaW5lIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX0xPQ0soZCkgZ19tdXRleF9sb2NrIChHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9HRVRfTE9DSyAoZCkpCisjZGVmaW5lIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX1VOTE9DSyhkKSBnX211dGV4X3VubG9jayAoR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfR0VUX0xPQ0sgKGQpKQogCiBlbnVtCiB7CiAgIFBST1BfMCwKLSAgUFJPUF9MT09LQkFDS19GUkFHTUVOVFMsCiAgIFBST1BfQ09OTkVDVElPTl9TUEVFRCwKICAgUFJPUF9CSVRSQVRFX0xJTUlULAogICBQUk9QX0xBU1QKQEAgLTEwNSwyNCArMTY0LDQxIEBACiAKIHN0cnVjdCBfR3N0QWRhcHRpdmVEZW11eFByaXZhdGUKIHsKLSAgR3N0QWRhcHRlciAqaW5wdXRfYWRhcHRlcjsKLSAgZ2Jvb2xlYW4gaGF2ZV9tYW5pZmVzdDsKKyAgR3N0QWRhcHRlciAqaW5wdXRfYWRhcHRlcjsgICAgLyogcHJvdGVjdGVkIGJ5IG1hbmlmZXN0X2xvY2sgKi8KKyAgZ2Jvb2xlYW4gaGF2ZV9tYW5pZmVzdDsgICAgICAgLyogcHJvdGVjdGVkIGJ5IG1hbmlmZXN0X2xvY2sgKi8KIAotICBHc3RVcmlEb3dubG9hZGVyICpkb3dubG9hZGVyOworICBHTGlzdCAqb2xkX3N0cmVhbXM7ICAgICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgbWFuaWZlc3RfbG9jayAqLwogCi0gIEdMaXN0ICpvbGRfc3RyZWFtczsKLQotICBHc3RUYXNrICp1cGRhdGVzX3Rhc2s7CisgIEdzdFRhc2sgKnVwZGF0ZXNfdGFzazsgICAgICAgIC8qIE1UIHNhZmUgKi8KICAgR1JlY011dGV4IHVwZGF0ZXNfbG9jazsKICAgR011dGV4IHVwZGF0ZXNfdGltZWRfbG9jazsKLSAgR0NvbmQgdXBkYXRlc190aW1lZF9jb25kOwotICBnYm9vbGVhbiBzdG9wX3VwZGF0ZXNfdGFzazsKKyAgR0NvbmQgdXBkYXRlc190aW1lZF9jb25kOyAgICAgLyogcHJvdGVjdGVkIGJ5IHVwZGF0ZXNfdGltZWRfbG9jayAqLworICBnYm9vbGVhbiBzdG9wX3VwZGF0ZXNfdGFzazsgICAvKiBwcm90ZWN0ZWQgYnkgdXBkYXRlc190aW1lZF9sb2NrICovCisKKyAgLyogdXNlZCBvbmx5IGZyb20gdXBkYXRlc190YXNrLCBubyBuZWVkIHRvIHByb3RlY3QgaXQgKi8KICAgZ2ludCB1cGRhdGVfZmFpbGVkX2NvdW50OwogCi0gIGdpbnQ2NCBuZXh0X3VwZGF0ZTsKKyAgZ3VpbnQzMiBzZWdtZW50X3NlcW51bTsgICAgICAgLyogcHJvdGVjdGVkIGJ5IG1hbmlmZXN0X2xvY2sgKi8KIAotICBnYm9vbGVhbiBleHBvc2luZzsKLSAgZ3VpbnQzMiBzZWdtZW50X3NlcW51bTsKKyAgLyogbWFpbiBsb2NrIHVzZWQgdG8gcHJvdGVjdCBhZGFwdGl2ZSBkZW11eCBhbmQgYWxsIGl0cyBzdHJlYW1zLgorICAgKiBJdCBzZXJpYWxpemVzIHRoZSBhZGFwdGl2ZSBkZW11eCBwdWJsaWMgQVBJLgorICAgKi8KKyAgR1JlY011dGV4IG1hbmlmZXN0X2xvY2s7CisKKyAgLyogY29uZGl0aW9uIHRvIHdhaXQgZm9yIG1hbmlmZXN0IHVwZGF0ZXMgb24gYSBsaXZlIHN0cmVhbS4KKyAgICogSW4gb3JkZXIgdG8gc2lnbmFsIHRoZSBtYW5pZmVzdF9jb25kLCB0aGUgY2FsbGVyIG5lZWRzIHRvIGhvbGQgYm90aAorICAgKiBtYW5pZmVzdF9sb2NrIGFuZCBtYW5pZmVzdF91cGRhdGVfbG9jayAodGFrZW4gaW4gdGhpcyBvcmRlcikKKyAgICovCisgIEdDb25kIG1hbmlmZXN0X2NvbmQ7CisgIEdNdXRleCBtYW5pZmVzdF91cGRhdGVfbG9jazsKKworICBHTXV0ZXggYXBpX2xvY2s7CisKKyAgLyogUHJvdGVjdHMgZGVtdXggYW5kIHN0cmVhbSBzZWdtZW50IGluZm9ybWF0aW9uCisgICAqIE5lZWRlZCBiZWNhdXNlIHNlZWtzIGNhbiB1cGRhdGUgc2VnbWVudCBpbmZvcm1hdGlvbgorICAgKiB3aXRob3V0IG5lZWRpbmcgdG8gc3RvcCB0YXNrcyB3aGVuIHRoZXkganVzdCB3YW50IHRvCisgICAqIHVwZGF0ZSB0aGUgc2VnbWVudCBib3VuZGFyaWVzICovCisgIEdNdXRleCBzZWdtZW50X2xvY2s7CiB9OwogCiBzdGF0aWMgR3N0QmluQ2xhc3MgKnBhcmVudF9jbGFzcyA9IE5VTEw7CkBAIC0xNTUsNyArMjMxLDggQEAKICAgICBnYm9vbGVhbiBmaXJzdF9hbmRfbGl2ZSk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7CiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NlZWsgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKLSAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBHc3RDbG9ja1RpbWUgdHMpOworICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIGdib29sZWFuIGZvcndhcmQsIEdzdFNlZWtGbGFncyBmbGFncywKKyAgICBHc3RDbG9ja1RpbWUgdHMsIEdzdENsb2NrVGltZSAqIGZpbmFsX3RzKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2hhc19uZXh0X2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4ICoKICAgICBkZW11eCwgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZWxlY3RfYml0cmF0ZSAoR3N0QWRhcHRpdmVEZW11eCAqCkBAIC0xNzcsOCArMjU0LDYgQEAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3B1c2hfZXZlbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCiAgICAgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgdm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2Rvd25sb2FkX3dhaXQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKgotICAgIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIHRpbWVfZGlmZik7CiAKIHN0YXRpYyB2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF9zdGFydF90YXNrcyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KTsKIHN0YXRpYyB2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpOwpAQCAtMTkzLDYgKzI2OCw5IEBACiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9maW5pc2hfZnJhZ21lbnRfZGVmYXVsdCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fYWR2YW5jZV9mcmFnbWVudF91bmxvY2tlZCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAorICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSBkdXJhdGlvbik7CiAKIAogLyogd2UgY2FuJ3QgdXNlIEdfREVGSU5FX0FCU1RSQUNUX1RZUEUgYmVjYXVzZSB3ZSBuZWVkIHRoZSBrbGFzcyBpbiB0aGUgX2luaXQKQEAgLTIyOSwxMCArMzA3LDEwIEBACiB7CiAgIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gR1NUX0FEQVBUSVZFX0RFTVVYIChvYmplY3QpOwogCisgIEdTVF9BUElfTE9DSyAoZGVtdXgpOworICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9MT09LQkFDS19GUkFHTUVOVFM6Ci0gICAgICBkZW11eC0+bnVtX2xvb2tiYWNrX2ZyYWdtZW50cyA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKLSAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9DT05ORUNUSU9OX1NQRUVEOgogICAgICAgZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSkgKiAxMDAwOwogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJDb25uZWN0aW9uIHNwZWVkIHNldCB0byAldSIsCkBAIC0yNDUsNiArMzIzLDkgQEAKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKICAgfQorCisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1MywxMCArMzM0LDkgQEAKIHsKICAgR3N0QWRhcHRpdmVEZW11eCAqZGVtdXggPSBHU1RfQURBUFRJVkVfREVNVVggKG9iamVjdCk7CiAKKyAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKwogICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfTE9PS0JBQ0tfRlJBR01FTlRTOgotICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGRlbXV4LT5udW1fbG9va2JhY2tfZnJhZ21lbnRzKTsKLSAgICAgIGJyZWFrOwogICAgIGNhc2UgUFJPUF9DT05ORUNUSU9OX1NQRUVEOgogICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIGRlbXV4LT5jb25uZWN0aW9uX3NwZWVkIC8gMTAwMCk7CiAgICAgICBicmVhazsKQEAgLTI2Nyw2ICszNDcsOCBAQAogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwogICB9CisKKyAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjkwLDEzICszNzIsNiBAQAogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X3Byb3BlcnR5OwogICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9hZGFwdGl2ZV9kZW11eF9maW5hbGl6ZTsKIAotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0xPT0tCQUNLX0ZSQUdNRU5UUywKLSAgICAgIGdfcGFyYW1fc3BlY191aW50ICgibnVtLWxvb2tiYWNrLWZyYWdtZW50cyIsCi0gICAgICAgICAgIk51bWJlciBvZiBmcmFnbWVudHMgdG8gbG9vayBiYWNrIiwKLSAgICAgICAgICAiVGhlIG51bWJlciBvZiBmcmFnbWVudHMgdGhlIGRlbXV4ZXIgd2lsbCBsb29rIGJhY2sgdG8gY2FsY3VsYXRlIGFuIGF2ZXJhZ2UgYml0cmF0ZSIsCi0gICAgICAgICAgMSwgR19NQVhVSU5ULCBERUZBVUxUX0xPT0tCQUNLX0ZSQUdNRU5UUywKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZKSk7Ci0KICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DT05ORUNUSU9OX1NQRUVELAogICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJjb25uZWN0aW9uLXNwZWVkIiwgIkNvbm5lY3Rpb24gU3BlZWQiLAogICAgICAgICAgICJOZXR3b3JrIGNvbm5lY3Rpb24gc3BlZWQgaW4ga2JwcyAoMCA9IGNhbGN1bGF0ZSBmcm9tIGRvd25sb2FkZWQiCkBAIC0zMjUsNyArNDAwLDYgQEAKICAgICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKiBrbGFzcykKIHsKICAgR3N0UGFkVGVtcGxhdGUgKnBhZF90ZW1wbGF0ZTsKLSAgR3N0UGFkICpwYWQ7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJnc3RfYWRhcHRpdmVfZGVtdXhfaW5pdCIpOwogCkBAIC0zNDgsMjEgKzQyMiwyNCBAQAogICBnX211dGV4X2luaXQgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKICAgZ19jb25kX2luaXQgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9jb25kKTsKIAotICBnX2NvbmRfaW5pdCAoJmRlbXV4LT5tYW5pZmVzdF9jb25kKTsKLSAgZ19tdXRleF9pbml0ICgmZGVtdXgtPm1hbmlmZXN0X2xvY2spOworICBnX2NvbmRfaW5pdCAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF9jb25kKTsKKyAgZ19tdXRleF9pbml0ICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X3VwZGF0ZV9sb2NrKTsKKworICBnX3JlY19tdXRleF9pbml0ICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X2xvY2spOworICBnX211dGV4X2luaXQgKCZkZW11eC0+cHJpdi0+YXBpX2xvY2spOworICBnX211dGV4X2luaXQgKCZkZW11eC0+cHJpdi0+c2VnbWVudF9sb2NrKTsKIAogICBwYWRfdGVtcGxhdGUgPQogICAgICAgZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKSwgInNpbmsiKTsKICAgZ19yZXR1cm5faWZfZmFpbCAocGFkX3RlbXBsYXRlICE9IE5VTEwpOwogCi0gIGRlbXV4LT5zaW5rcGFkID0gcGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAocGFkX3RlbXBsYXRlLCAic2luayIpOworICBkZW11eC0+c2lua3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKHBhZF90ZW1wbGF0ZSwgInNpbmsiKTsKICAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKGRlbXV4LT5zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hZGFwdGl2ZV9kZW11eF9zaW5rX2V2ZW50KSk7CiAgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChkZW11eC0+c2lua3BhZCwKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYWRhcHRpdmVfZGVtdXhfc2lua19jaGFpbikpOwogCiAgIC8qIFByb3BlcnRpZXMgKi8KLSAgZGVtdXgtPm51bV9sb29rYmFja19mcmFnbWVudHMgPSBERUZBVUxUX0xPT0tCQUNLX0ZSQUdNRU5UUzsKICAgZGVtdXgtPmJpdHJhdGVfbGltaXQgPSBERUZBVUxUX0JJVFJBVEVfTElNSVQ7CiAgIGRlbXV4LT5jb25uZWN0aW9uX3NwZWVkID0gREVGQVVMVF9DT05ORUNUSU9OX1NQRUVEOwogCkBAIC0zODIsMTAgKzQ1OSwxMyBAQAogCiAgIGdfbXV0ZXhfY2xlYXIgKCZwcml2LT51cGRhdGVzX3RpbWVkX2xvY2spOwogICBnX2NvbmRfY2xlYXIgKCZwcml2LT51cGRhdGVzX3RpbWVkX2NvbmQpOwotICBnX2NvbmRfY2xlYXIgKCZkZW11eC0+bWFuaWZlc3RfY29uZCk7CisgIGdfbXV0ZXhfY2xlYXIgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOworICBnX2NvbmRfY2xlYXIgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfY29uZCk7CiAgIGdfb2JqZWN0X3VucmVmIChwcml2LT51cGRhdGVzX3Rhc2spOwogICBnX3JlY19tdXRleF9jbGVhciAoJnByaXYtPnVwZGF0ZXNfbG9jayk7Ci0gIGdfbXV0ZXhfY2xlYXIgKCZkZW11eC0+bWFuaWZlc3RfbG9jayk7CisgIGdfcmVjX211dGV4X2NsZWFyICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X2xvY2spOworICBnX211dGV4X2NsZWFyICgmZGVtdXgtPnByaXYtPmFwaV9sb2NrKTsKKyAgZ19tdXRleF9jbGVhciAoJmRlbXV4LT5wcml2LT5zZWdtZW50X2xvY2spOwogCiAgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKIH0KQEAgLTM5NywxNiArNDc3LDI2IEBACiAgIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gR1NUX0FEQVBUSVZFX0RFTVVYX0NBU1QgKGVsZW1lbnQpOwogICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXN1bHQgPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkU7CiAKKyAgR1NUX0FQSV9MT0NLIChkZW11eCk7CisKICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19SRUFEWToKKyAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CiAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfcmVzZXQgKGRlbXV4KTsKKyAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKICAgfQogCisgIC8qIHRoaXMgbXVzdCBiZSBydW4gd2l0aG91dCBNQU5JRkVTVF9MT0NLIHRha2VuLgorICAgKiBGb3IgUExBWUlORyB0byBQTEFZSU5HIHN0YXRlIGNoYW5nZXMsIGl0IHdpbGwgd2FudCB0byB0YWtlIGEgbG9jayBpbgorICAgKiBzcmMgZWxlbWVudCBhbmQgdGhhdCBsb2NrIGlzIGhlbGQgd2hpbGUgdGhlIHN0cmVhbWluZyB0aHJlYWQgaXMgcnVubmluZy4KKyAgICogVGhlIHN0cmVhbWluZyB0aHJlYWQgd2lsbCB0YWtlIHRoZSBNQU5JRkVTVF9MT0NLLCBsZWFkaW5nIHRvIGEgZGVhZGxvY2suCisgICAqLwogICByZXN1bHQgPSBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlIChlbGVtZW50LCB0cmFuc2l0aW9uKTsKIAorICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOwogICByZXR1cm4gcmVzdWx0OwogfQogCkBAIC00MTYsMTEgKzUwNiwyMSBAQAogewogICBHc3RBZGFwdGl2ZURlbXV4ICpkZW11eCA9IEdTVF9BREFQVElWRV9ERU1VWF9DQVNUIChwYXJlbnQpOwogICBHc3RBZGFwdGl2ZURlbXV4Q2xhc3MgKmRlbXV4X2NsYXNzOworICBnYm9vbGVhbiByZXQ7CiAKICAgc3dpdGNoIChldmVudC0+dHlwZSkgewogICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CisgICAgICBHU1RfQVBJX0xPQ0sgKGRlbXV4KTsKKyAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9yZXNldCAoZGVtdXgpOwotICAgICAgYnJlYWs7CisKKyAgICAgIHJldCA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKKworICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKKworICAgICAgcmV0dXJuIHJldDsKICAgICBjYXNlIEdTVF9FVkVOVF9FT1M6ewogICAgICAgR3N0UXVlcnkgKnF1ZXJ5OwogICAgICAgZ2Jvb2xlYW4gcXVlcnlfcmVzOwpAQCAtNDI4LDEyICs1MjgsMjEgQEAKICAgICAgIGdzaXplIGF2YWlsYWJsZTsKICAgICAgIEdzdEJ1ZmZlciAqbWFuaWZlc3RfYnVmZmVyOwogCisgICAgICBHU1RfQVBJX0xPQ0sgKGRlbXV4KTsKKyAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKICAgICAgIGRlbXV4X2NsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoZGVtdXgpOworCiAgICAgICBhdmFpbGFibGUgPSBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKGRlbXV4LT5wcml2LT5pbnB1dF9hZGFwdGVyKTsKIAogICAgICAgaWYgKGF2YWlsYWJsZSA9PSAwKSB7CiAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJSZWNlaXZlZCBFT1Mgd2l0aG91dCBhIG1hbmlmZXN0LiIpOwotICAgICAgICBicmVhazsKKyAgICAgICAgcmV0ID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworCisgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgICAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKKworICAgICAgICByZXR1cm4gcmV0OwogICAgICAgfQogCiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkdvdCBFT1Mgb24gdGhlIHNpbmsgcGFkOiBtYW5pZmVzdCBmZXRjaGVkIik7CkBAIC00NDIsNyArNTUxLDYgQEAKICAgICAgICAqIHVyaXMgKi8KICAgICAgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld191cmkgKCk7CiAgICAgICBxdWVyeV9yZXMgPSBnc3RfcGFkX3BlZXJfcXVlcnkgKHBhZCwgcXVlcnkpOwotICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgICAgIGlmIChxdWVyeV9yZXMpIHsKICAgICAgICAgZ2NoYXIgKnVyaSwgKnJlZGlyZWN0X3VyaTsKICAgICAgICAgZ2Jvb2xlYW4gcGVybWFuZW50OwpAQCAtNTI5LDYgKzYzNyw3IEBACiAKICAgICAgIH0KICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgIEdTVF9BUElfVU5MT0NLIChkZW11eCk7CiAKICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwogICAgICAgcmV0dXJuIHJldDsKQEAgLTU0OSwxOSArNjU4LDMyIEBACiAgICAgR3N0QnVmZmVyICogYnVmZmVyKQogewogICBHc3RBZGFwdGl2ZURlbXV4ICpkZW11eCA9IEdTVF9BREFQVElWRV9ERU1VWF9DQVNUIChwYXJlbnQpOworCisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKICAgZ3N0X2FkYXB0ZXJfcHVzaCAoZGVtdXgtPnByaXYtPmlucHV0X2FkYXB0ZXIsIGJ1ZmZlcik7CiAKICAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwgIlJlY2VpdmVkIG1hbmlmZXN0IGJ1ZmZlciwgdG90YWwgc2l6ZSBpcyAlaSBieXRlcyIsCiAgICAgICAoZ2ludCkgZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChkZW11eC0+cHJpdi0+aW5wdXRfYWRhcHRlcikpOwogCisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfcmVzZXQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKICAgR3N0QWRhcHRpdmVEZW11eENsYXNzICprbGFzcyA9IEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKGRlbXV4KTsKICAgR0xpc3QgKml0ZXI7CisgIEdMaXN0ICpvbGRfc3RyZWFtczsKKyAgR3N0RXZlbnQgKmVvczsKKworICAvKiB0YWtlIG93bmVyc2hpcCBvZiBvbGRfc3RyZWFtcyBiZWZvcmUgcmVsZWFzaW5nIHRoZSBtYW5pZmVzdF9sb2NrIGluCisgICAqIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzCisgICAqLworICBvbGRfc3RyZWFtcyA9IGRlbXV4LT5wcml2LT5vbGRfc3RyZWFtczsKKyAgZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zID0gTlVMTDsKIAogICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RvcF90YXNrcyAoZGVtdXgpOwogICBnc3RfdXJpX2Rvd25sb2FkZXJfcmVzZXQgKGRlbXV4LT5kb3dubG9hZGVyKTsKQEAgLTU2OSwxOSArNjkxLDI0IEBACiAgIGlmIChrbGFzcy0+cmVzZXQpCiAgICAga2xhc3MtPnJlc2V0IChkZW11eCk7CiAKKyAgZW9zID0gZ3N0X2V2ZW50X25ld19lb3MgKCk7CiAgIGZvciAoaXRlciA9IGRlbXV4LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7CiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKLSAgICBpZiAoc3RyZWFtLT5wYWQpCisgICAgaWYgKHN0cmVhbS0+cGFkKSB7CisgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHN0cmVhbS0+cGFkLCBnc3RfZXZlbnRfcmVmIChlb3MpKTsKKyAgICAgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3RyZWFtLT5wYWQsIEZBTFNFKTsKKwogICAgICAgZ3N0X2VsZW1lbnRfcmVtb3ZlX3BhZCAoR1NUX0VMRU1FTlRfQ0FTVCAoZGVtdXgpLCBzdHJlYW0tPnBhZCk7CisgICAgfQogICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZnJlZSAoc3RyZWFtKTsKICAgfQorICBnc3RfZXZlbnRfdW5yZWYgKGVvcyk7CiAgIGdfbGlzdF9mcmVlIChkZW11eC0+c3RyZWFtcyk7CiAgIGRlbXV4LT5zdHJlYW1zID0gTlVMTDsKIAotICBpZiAoZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zKSB7Ci0gICAgZ19saXN0X2ZyZWVfZnVsbCAoZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zLAorICBpZiAob2xkX3N0cmVhbXMpIHsKKyAgICBnX2xpc3RfZnJlZV9mdWxsIChvbGRfc3RyZWFtcywKICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2ZyZWUpOwotICAgIGRlbXV4LT5wcml2LT5vbGRfc3RyZWFtcyA9IE5VTEw7CiAgIH0KIAogICBnX2ZyZWUgKGRlbXV4LT5tYW5pZmVzdF91cmkpOwpAQCAtNTk2LDcgKzcyMyw2IEBACiAKICAgZGVtdXgtPmhhdmVfZ3JvdXBfaWQgPSBGQUxTRTsKICAgZGVtdXgtPmdyb3VwX2lkID0gR19NQVhVSU5UOwotICBkZW11eC0+cHJpdi0+ZXhwb3NpbmcgPSBGQUxTRTsKICAgZGVtdXgtPnByaXYtPnNlZ21lbnRfc2VxbnVtID0gZ3N0X3V0aWxfc2VxbnVtX25leHQgKCk7CiB9CiAKQEAgLTYxMyw5ICs3MzksMTIgQEAKICAgICAgIGdjaGFyICpkZWJ1ZyA9IE5VTEw7CiAgICAgICBnY2hhciAqbmV3X2Vycm9yID0gTlVMTDsKIAorICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKwogICAgICAgZm9yIChpdGVyID0gZGVtdXgtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKICAgICAgICAgc3RyZWFtID0gaXRlci0+ZGF0YTsKLSAgICAgICAgaWYgKEdTVF9PQkpFQ1RfQ0FTVCAoc3RyZWFtLT5zcmMpID09IEdTVF9NRVNTQUdFX1NSQyAobXNnKSkgeworICAgICAgICBpZiAoZ3N0X29iamVjdF9oYXNfYXNfYW5jZXN0b3IgKEdTVF9NRVNTQUdFX1NSQyAobXNnKSwKKyAgICAgICAgICAgICAgICBHU1RfT0JKRUNUX0NBU1QgKHN0cmVhbS0+c3JjKSkpIHsKICAgICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciAobXNnLCAmZXJyLCAmZGVidWcpOwogCiAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChHU1RfQURBUFRJVkVfREVNVVhfU1RSRUFNX1BBRCAoc3RyZWFtKSwKQEAgLTYzOSw2ICs3NjgsOCBAQAogICAgICAgICB9CiAgICAgICB9CiAKKyAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKwogICAgICAgZ3N0X21lc3NhZ2VfdW5yZWYgKG1zZyk7CiAgICAgICBtc2cgPSBOVUxMOwogICAgIH0KQEAgLTY1NSw5ICs3ODYsMTQgQEAKIGdzdF9hZGFwdGl2ZV9kZW11eF9zZXRfc3RyZWFtX3N0cnVjdF9zaXplIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgZ3NpemUgc3RydWN0X3NpemUpCiB7CisgIEdTVF9BUElfTE9DSyAoZGVtdXgpOworICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOwogICBkZW11eC0+c3RyZWFtX3N0cnVjdF9zaXplID0gc3RydWN0X3NpemU7CisgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9leHBvc2Vfc3RyZWFtIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKQEAgLTcwMiw3ICs4MzgsNiBAQAogICAgIHN0cmVhbS0+cGVuZGluZ19jYXBzID0gTlVMTDsKICAgfQogCi0gIHN0cmVhbS0+ZG93bmxvYWRfZmluaXNoZWQgPSBGQUxTRTsKICAgc3RyZWFtLT5kaXNjb250ID0gRkFMU0U7CiAKICAgZ3N0X29iamVjdF9yZWYgKHBhZCk7CkBAIC03MTAsNiArODQ1LDcgQEAKICAgcmV0dXJuIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UX0NBU1QgKGRlbXV4KSwgcGFkKTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgR3N0Q2xvY2tUaW1lCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2dldF9wcmVzZW50YXRpb25fb2Zmc2V0IChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKQEAgLTcyNCw2ICs4NjAsNyBAQAogICByZXR1cm4ga2xhc3MtPmdldF9wcmVzZW50YXRpb25fb2Zmc2V0IChkZW11eCwgc3RyZWFtKTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgR3N0Q2xvY2tUaW1lCiBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X3BlcmlvZF9zdGFydF90aW1lIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CkBAIC03MzcsNiArODc0LDcgQEAKICAgcmV0dXJuIGtsYXNzLT5nZXRfcGVyaW9kX3N0YXJ0X3RpbWUgKGRlbXV4KTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9leHBvc2Vfc3RyZWFtcyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIGdib29sZWFuIGZpcnN0X2FuZF9saXZlKQpAQCAtNzQ3LDcgKzg4NSw2IEBACiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRlbXV4LT5uZXh0X3N0cmVhbXMgIT0gTlVMTCwgRkFMU0UpOwogCi0gIGRlbXV4LT5wcml2LT5leHBvc2luZyA9IFRSVUU7CiAgIG9sZF9zdHJlYW1zID0gZGVtdXgtPnN0cmVhbXM7CiAgIGRlbXV4LT5zdHJlYW1zID0gZGVtdXgtPm5leHRfc3RyZWFtczsKICAgZGVtdXgtPm5leHRfc3RyZWFtcyA9IE5VTEw7CkBAIC04NjMsMTEgKzEwMDAsMTQgQEAKICAgfQogCiAgIGdzdF9lbGVtZW50X25vX21vcmVfcGFkcyAoR1NUX0VMRU1FTlRfQ0FTVCAoZGVtdXgpKTsKLSAgZGVtdXgtPnByaXYtPmV4cG9zaW5nID0gRkFMU0U7CiAKICAgaWYgKG9sZF9zdHJlYW1zKSB7CiAgICAgR3N0RXZlbnQgKmVvcyA9IGdzdF9ldmVudF9uZXdfZW9zICgpOwogCisgICAgLyogYmVmb3JlIHdlIHB1dCBzdHJlYW1zIGluIHRoZSBkZW11eC0+cHJpdi0+b2xkX3N0cmVhbXMgbGlzdCwKKyAgICAgKiB3ZSBhc2sgdGhlIGRvd25sb2FkIHRhc2sgdG8gc3RvcC4gSW4gdGhpcyB3YXksIGl0IHdpbGwgbm8gbG9uZ2VyIGJlCisgICAgICogYWxsb3dlZCB0byBjaGFuZ2UgdGhlIGRlbXV4IG9iamVjdC4KKyAgICAgKi8KICAgICBmb3IgKGl0ZXIgPSBvbGRfc3RyZWFtczsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewogICAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKIApAQCAtODc1LDIwICsxMDE1LDM3IEBACiAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHN0cmVhbS0+cGFkLCBnc3RfZXZlbnRfcmVmIChlb3MpKTsKICAgICAgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3RyZWFtLT5wYWQsIEZBTFNFKTsKICAgICAgIGdzdF9lbGVtZW50X3JlbW92ZV9wYWQgKEdTVF9FTEVNRU5UIChkZW11eCksIHN0cmVhbS0+cGFkKTsKKworICAgICAgLyogYXNrIHRoZSBkb3dubG9hZCB0YXNrIHRvIHN0b3AuCisgICAgICAgKiBXZSB3aWxsIG5vdCBqb2luIGl0IG5vdywgYmVjYXVzZSBvdXIgdGhyZWFkIGNhbiBiZSBvbmUgb2YgdGhlc2UgdGFza3MuCisgICAgICAgKiBXZSB3aWxsIGRvIHRoZSBqb2luaW5nIGxhdGVyLCBmcm9tIGFub3RoZXIgc3RyZWFtIGRvd25sb2FkIHRhc2sgb3IKKyAgICAgICAqIGZyb20gZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MuCisgICAgICAgKiBXZSBhbHNvIGNhbm5vdCBjaGFuZ2UgdGhlIHN0YXRlIG9mIHRoZSBzdHJlYW0tPnNyYyBlbGVtZW50LCBiZWNhdXNlCisgICAgICAgKiB0aGF0IHdpbGwgd2FpdCBvbiB0aGUgc3RyZWFtaW5nIHRocmVhZCAod2hpY2ggY291bGQgYmUgdGhpcyB0aHJlYWQpCisgICAgICAgKiB0byBzdG9wIGZpcnN0LgorICAgICAgICogQmVjYXVzZSB3ZSBzZW50IGFuIEVPUyB0byB0aGUgZG93bnN0cmVhbSBlbGVtZW50LCB0aGUgc3RyZWFtLT5zcmMKKyAgICAgICAqIGVsZW1lbnQgc2hvdWxkIGRldGVjdCB0aGlzIGluIGl0cyBzdHJlYW1pbmcgdGFzayBhbmQgc3RvcC4KKyAgICAgICAqIEV2ZW4gaWYgaXQgZG9lc24ndCBkbyB0aGF0LCB3ZSB3aWxsIGNoYW5nZSBpdHMgc3RhdGUgbGF0ZXIgaW4KKyAgICAgICAqIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzLgorICAgICAgICovCisgICAgICBnc3RfdGFza19zdG9wIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOworICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgIHN0cmVhbS0+Y2FuY2VsbGVkID0gVFJVRTsKKyAgICAgIGdfY29uZF9zaWduYWwgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2NvbmQpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgIH0KICAgICBnc3RfZXZlbnRfdW5yZWYgKGVvcyk7CiAKICAgICAvKiBUaGUgbGlzdCBzaG91bGQgYmUgZnJlZWQgZnJvbSBhbm90aGVyIHRocmVhZCBhcyB3ZSBjYW4ndCBwcm9wZXJseQogICAgICAqIGNsZWFudXAgYSBHc3RUYXNrIGZyb20gaXRzZWxmICovCi0gICAgR1NUX09CSkVDVF9MT0NLIChkZW11eCk7CiAgICAgZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zID0KICAgICAgICAgZ19saXN0X2NvbmNhdCAoZGVtdXgtPnByaXYtPm9sZF9zdHJlYW1zLCBvbGRfc3RyZWFtcyk7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRlbXV4KTsKICAgfQogCiAgIHJldHVybiBUUlVFOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9uZXcgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgR3N0UGFkICogcGFkKQogewpAQCAtOTA2LDcgKzEwNjMsNyBAQAogICBzdHJlYW0tPnBhZCA9IHBhZDsKICAgc3RyZWFtLT5kZW11eCA9IGRlbXV4OwogICBzdHJlYW0tPmZyYWdtZW50X2JpdHJhdGVzID0KLSAgICAgIGdfbWFsbG9jMCAoc2l6ZW9mIChndWludDY0KSAqIGRlbXV4LT5udW1fbG9va2JhY2tfZnJhZ21lbnRzKTsKKyAgICAgIGdfbWFsbG9jMCAoc2l6ZW9mIChndWludDY0KSAqIE5VTV9MT09LQkFDS19GUkFHTUVOVFMpOwogICBnc3RfcGFkX3NldF9lbGVtZW50X3ByaXZhdGUgKHBhZCwgc3RyZWFtKTsKIAogICBnc3RfcGFkX3NldF9xdWVyeV9mdW5jdGlvbiAocGFkLApAQCAtOTI0LDYgKzEwODEsMjcgQEAKICAgcmV0dXJuIHN0cmVhbTsKIH0KIAorR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCitnc3RfYWRhcHRpdmVfZGVtdXhfZmluZF9zdHJlYW1fZm9yX3BhZCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LCBHc3RQYWQgKiBwYWQpCit7CisgIEdMaXN0ICppdGVyOworCisgIGZvciAoaXRlciA9IGRlbXV4LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7CisgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKKyAgICBpZiAoc3RyZWFtLT5wYWQgPT0gcGFkKSB7CisgICAgICByZXR1cm4gc3RyZWFtOworICAgIH0KKyAgfQorICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbi4KKyAqIEl0IHdpbGwgdGVtcG9yYXJpbHkgZHJvcCB0aGUgbWFuaWZlc3RfbG9jayBpbiBvcmRlciB0byBqb2luIHRoZSB0YXNrLgorICogSXQgd2lsbCBqb2luIG9ubHkgdGhlIG9sZF9zdHJlYW1zICh0aGUgZGVtdXgtPnN0cmVhbXMgYXJlIGpvaW5lZCBieQorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MgYmVmb3JlIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZnJlZSBpcworICogY2FsbGVkKQorICovCiBzdGF0aWMgdm9pZAogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQogewpAQCAtOTM5LDExICsxMTE3LDIyIEBACiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkxlYXZpbmcgc3RyZWFtaW5nIHRhc2sgJXM6JXMiLAogICAgICAgICAgIEdTVF9ERUJVR19QQURfTkFNRSAoc3RyZWFtLT5wYWQpKTsKIAotICAgICAgZ19jb25kX3NpZ25hbCAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCk7CiAgICAgICBnc3RfdGFza19zdG9wIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOworCisgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgc3RyZWFtLT5jYW5jZWxsZWQgPSBUUlVFOworICAgICAgZ19jb25kX3NpZ25hbCAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCk7CisgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgICAgfQogICAgIEdTVF9MT0dfT0JKRUNUIChkZW11eCwgIldhaXRpbmcgZm9yIHRhc2sgdG8gZmluaXNoIik7CisKKyAgICAvKiB0ZW1wb3JhcmlseSBkcm9wIHRoZSBtYW5pZmVzdCBsb2NrIHRvIGpvaW4gdGhlIHRhc2sgKi8KKyAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKICAgICBnc3RfdGFza19qb2luIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOworCisgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKwogICAgIEdTVF9MT0dfT0JKRUNUIChkZW11eCwgIkZpbmlzaGVkIik7CiAgICAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKICAgICBnX3JlY19tdXRleF9jbGVhciAoJnN0cmVhbS0+ZG93bmxvYWRfbG9jayk7CkBAIC05NjIsNiArMTE1MSwxMCBAQAogICAgIHN0cmVhbS0+cGVuZGluZ19ldmVudHMgPSBOVUxMOwogICB9CiAKKyAgaWYgKHN0cmVhbS0+aW50ZXJuYWxfcGFkKSB7CisgICAgZ3N0X29iamVjdF91bnBhcmVudCAoR1NUX09CSkVDVF9DQVNUIChzdHJlYW0tPmludGVybmFsX3BhZCkpOworICB9CisKICAgaWYgKHN0cmVhbS0+c3JjX3NyY3BhZCkgewogICAgIGdzdF9vYmplY3RfdW5yZWYgKHN0cmVhbS0+c3JjX3NyY3BhZCk7CiAgICAgc3RyZWFtLT5zcmNfc3JjcGFkID0gTlVMTDsKQEAgLTk3NSw3ICsxMTY4LDYgQEAKIAogICBnX2NvbmRfY2xlYXIgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2NvbmQpOwogICBnX211dGV4X2NsZWFyICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLQogICBnX2ZyZWUgKHN0cmVhbS0+ZnJhZ21lbnRfYml0cmF0ZXMpOwogCiAgIGlmIChzdHJlYW0tPnBhZCkgewpAQCAtOTkwLDYgKzExODIsNyBAQAogICBnX2ZyZWUgKHN0cmVhbSk7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X2xpdmVfc2Vla19yYW5nZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIGdpbnQ2NCAqIHJhbmdlX3N0YXJ0LCBnaW50NjQgKiByYW5nZV9zdG9wKQpAQCAtMTAwMyw2ICsxMTk2LDcgQEAKICAgcmV0dXJuIGtsYXNzLT5nZXRfbGl2ZV9zZWVrX3JhbmdlIChkZW11eCwgcmFuZ2Vfc3RhcnQsIHJhbmdlX3N0b3ApOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X2Nhbl9zZWVrIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CkBAIC0xMDE2LDYgKzEyMTAsMTMgQEAKICAgcmV0dXJuIGtsYXNzLT5zZWVrICE9IE5VTEw7CiB9CiAKKyNkZWZpbmUgSVNfU05BUF9TRUVLKGYpIChmICYgKEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHU1RfU0VFS19GTEFHX1NOQVBfTkVBUkVTVCkpCisjZGVmaW5lIFJFTU9WRV9TTkFQX0ZMQUdTKGYpIChmICYgfihHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSIHwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1NFRUtfRkxBR19TTkFQX05FQVJFU1QpKQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAogICAgIEdzdEV2ZW50ICogZXZlbnQpCkBAIC0xMDI2LDYgKzEyMjcsOCBAQAogICBkZW11eCA9IEdTVF9BREFQVElWRV9ERU1VWF9DQVNUIChwYXJlbnQpOwogICBkZW11eF9jbGFzcyA9IEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKGRlbXV4KTsKIAorICAvKiBGSVhNRSBoYW5kbGUgZXZlbnRzIHJlY2VpdmVkIG9uIHBhZHMgdGhhdCBhcmUgdG8gYmUgcmVtb3ZlZCAqLworCiAgIHN3aXRjaCAoZXZlbnQtPnR5cGUpIHsKICAgICBjYXNlIEdTVF9FVkVOVF9TRUVLOgogICAgIHsKQEAgLTEwNDEsMTggKzEyNDQsMjIgQEAKIAogICAgICAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwgIlJlY2VpdmVkIHNlZWsgZXZlbnQiKTsKIAorICAgICAgR1NUX0FQSV9MT0NLIChkZW11eCk7CiAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgICAgICBpZiAoIWdzdF9hZGFwdGl2ZV9kZW11eF9jYW5fc2VlayAoZGVtdXgpKSB7CiAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgICAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKICAgICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CiAgICAgICAgIHJldHVybiBGQUxTRTsKICAgICAgIH0KLSAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKIAogICAgICAgZ3N0X2V2ZW50X3BhcnNlX3NlZWsgKGV2ZW50LCAmcmF0ZSwgJmZvcm1hdCwgJmZsYWdzLCAmc3RhcnRfdHlwZSwgJnN0YXJ0LAogICAgICAgICAgICZzdG9wX3R5cGUsICZzdG9wKTsKIAogICAgICAgaWYgKGZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUpIHsKKyAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgICBHU1RfQVBJX1VOTE9DSyAoZGVtdXgpOwogICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgfQpAQCAtMTA2MSwxMCArMTI2OCwxNCBAQAogICAgICAgICBnaW50NjQgcmFuZ2Vfc3RhcnQsIHJhbmdlX3N0b3A7CiAgICAgICAgIGlmICghZ3N0X2FkYXB0aXZlX2RlbXV4X2dldF9saXZlX3NlZWtfcmFuZ2UgKGRlbXV4LCAmcmFuZ2Vfc3RhcnQsCiAgICAgICAgICAgICAgICAgJnJhbmdlX3N0b3ApKSB7CisgICAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgICAgIEdTVF9BUElfVU5MT0NLIChkZW11eCk7CiAgICAgICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CiAgICAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICAgICB9CiAgICAgICAgIGlmIChzdGFydCA8IHJhbmdlX3N0YXJ0IHx8IHN0YXJ0ID49IHJhbmdlX3N0b3ApIHsKKyAgICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICAgICAgR1NUX0FQSV9VTkxPQ0sgKGRlbXV4KTsKICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiU2VlayB0byBpbnZhbGlkIHBvc2l0aW9uIik7CiAgICAgICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CiAgICAgICAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTA3MywxNyArMTI4NCwxMSBAQAogCiAgICAgICBzZXFudW0gPSBnc3RfZXZlbnRfZ2V0X3NlcW51bSAoZXZlbnQpOwogCi0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKLSAgICAgICAgICAic2VlayBldmVudCwgcmF0ZTogJWYgdHlwZTogJWQgc3RhcnQ6ICUiIEdTVF9USU1FX0ZPUk1BVCAiIHN0b3A6ICUiCi0gICAgICAgICAgR1NUX1RJTUVfRk9STUFULCByYXRlLCBzdGFydF90eXBlLCBHU1RfVElNRV9BUkdTIChzdGFydCksCi0gICAgICAgICAgR1NUX1RJTUVfQVJHUyAoc3RvcCkpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJzZWVrIGV2ZW50LCAlIiBHU1RfUFRSX0ZPUk1BVCwgZXZlbnQpOwogCiAgICAgICAvKiBoYXZlIGEgYmFja3VwIGluIGNhc2Ugc2VlayBmYWlscyAqLwogICAgICAgZ3N0X3NlZ21lbnRfY29weV9pbnRvICgmZGVtdXgtPnNlZ21lbnQsICZvbGRzZWdtZW50KTsKIAotICAgICAgZ3N0X3NlZ21lbnRfZG9fc2VlayAoJmRlbXV4LT5zZWdtZW50LCByYXRlLCBmb3JtYXQsIGZsYWdzLCBzdGFydF90eXBlLAotICAgICAgICAgIHN0YXJ0LCBzdG9wX3R5cGUsIHN0b3AsICZ1cGRhdGUpOwotCiAgICAgICBpZiAoZmxhZ3MgJiBHU1RfU0VFS19GTEFHX0ZMVVNIKSB7CiAgICAgICAgIEdzdEV2ZW50ICpmZXZlbnQ7CiAKQEAgLTEwOTEsMTIgKzEyOTYsODUgQEAKICAgICAgICAgZmV2ZW50ID0gZ3N0X2V2ZW50X25ld19mbHVzaF9zdGFydCAoKTsKICAgICAgICAgZ3N0X2V2ZW50X3NldF9zZXFudW0gKGZldmVudCwgc2VxbnVtKTsKICAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3B1c2hfc3JjX2V2ZW50IChkZW11eCwgZmV2ZW50KTsKLSAgICAgIH0KLSAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzIChkZW11eCk7Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIlNlZWtpbmcgdG8gc2VnbWVudCAlIiBHU1RfU0VHTUVOVF9GT1JNQVQsCi0gICAgICAgICAgJmRlbXV4LT5zZWdtZW50KTsKIAotICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0b3BfdGFza3MgKGRlbXV4KTsKKyAgICAgIH0gZWxzZSBpZiAoKHJhdGUgPiAwICYmIHN0YXJ0X3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKSB8fAorICAgICAgICAgIChyYXRlIDwgMCAmJiBzdG9wX3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKSkgeworCisgICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdG9wX3Rhc2tzIChkZW11eCk7CisgICAgICB9CisKKyAgICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX0xPQ0sgKGRlbXV4KTsKKworICAgICAgLyoKKyAgICAgICAqIEhhbmRsZSBzbmFwIHNlZWtzIGFzIGZvbGxvd3M6CisgICAgICAgKiAxKSBkbyB0aGUgc25hcCBzZWVraW5nIG9uIHRoZSBzdHJlYW0gdGhhdCByZWNlaXZlZAorICAgICAgICogICAgdGhlIGV2ZW50CisgICAgICAgKiAyKSB1c2UgdGhlIGZpbmFsIHBvc2l0aW9uIG9uIHRoaXMgc3RyZWFtIHRvIHNlZWsKKyAgICAgICAqICAgIG9uIHRoZSBvdGhlciBzdHJlYW1zIHRvIHRoZSBzYW1lIHBvc2l0aW9uCisgICAgICAgKgorICAgICAgICogV2UgY2FuJ3Qgc25hcCBhdCBhbGwgc3RyZWFtcyBhdCB0aGUgc2FtZSB0aW1lIGFzCisgICAgICAgKiB0aGV5IG1pZ2h0IGVuZCBpbiBkaWZmZXJlbnQgcG9zaXRpb25zLCBzbyBqdXN0CisgICAgICAgKiB1c2UgdGhlIG9uZSB0aGF0IHJlY2VpdmVkIHRoZSBldmVudCBhcyB0aGUgJ2xlYWRpbmcnCisgICAgICAgKiBvbmUgdG8gZG8gdGhlIHNuYXAgc2Vlay4KKyAgICAgICAqLworICAgICAgaWYgKElTX1NOQVBfU0VFSyAoZmxhZ3MpICYmIGRlbXV4X2NsYXNzLT5zdHJlYW1fc2VlaykgeworICAgICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPQorICAgICAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X2ZpbmRfc3RyZWFtX2Zvcl9wYWQgKGRlbXV4LCBwYWQpOworICAgICAgICBHc3RDbG9ja1RpbWUgdHM7CisgICAgICAgIEdzdFNlZWtGbGFncyBzdHJlYW1fc2Vla19mbGFncyA9IGZsYWdzOworCisgICAgICAgIC8qIHNuYXAtc2VlayBvbiB0aGUgc3RyZWFtIHRoYXQgcmVjZWl2ZWQgdGhlIGV2ZW50IGFuZCB0aGVuCisgICAgICAgICAqIHVzZSB0aGUgcmVzdWx0aW5nIHBvc2l0aW9uIHRvIHNlZWsgb24gYWxsIHN0cmVhbXMgKi8KKworICAgICAgICBpZiAocmF0ZSA+PSAwKSB7CisgICAgICAgICAgaWYgKHN0YXJ0X3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKQorICAgICAgICAgICAgdHMgPSBzdGFydDsKKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHRzID0gc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uOworICAgICAgICAgICAgc3RhcnRfdHlwZSA9IEdTVF9TRUVLX1RZUEVfU0VUOworICAgICAgICAgIH0KKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBpZiAoc3RvcF90eXBlICE9IEdTVF9TRUVLX1RZUEVfTk9ORSkKKyAgICAgICAgICAgIHRzID0gc3RvcDsKKyAgICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHN0b3BfdHlwZSA9IEdTVF9TRUVLX1RZUEVfU0VUOworICAgICAgICAgICAgdHMgPSBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb247CisgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgZGVtdXhfY2xhc3MtPnN0cmVhbV9zZWVrIChzdHJlYW0sIHJhdGUgPj0gMCwgc3RyZWFtX3NlZWtfZmxhZ3MsIHRzLAorICAgICAgICAgICAgJnRzKTsKKworICAgICAgICAvKiByZXBsYWNlIGV2ZW50IHdpdGggYSBuZXcgb25lIHdpdGhvdXQgc25hcGluZyB0byBzZWVrIG9uIGFsbCBzdHJlYW1zICovCisgICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOworICAgICAgICBpZiAocmF0ZSA+PSAwKSB7CisgICAgICAgICAgc3RhcnQgPSB0czsKKyAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICBzdG9wID0gdHM7CisgICAgICAgIH0KKyAgICAgICAgZXZlbnQgPQorICAgICAgICAgICAgZ3N0X2V2ZW50X25ld19zZWVrIChyYXRlLCBmb3JtYXQsIFJFTU9WRV9TTkFQX0ZMQUdTIChmbGFncyksCisgICAgICAgICAgICBzdGFydF90eXBlLCBzdGFydCwgc3RvcF90eXBlLCBzdG9wKTsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJBZGFwdGVkIHNuYXAgc2VlayB0byAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICAgICAgIGV2ZW50KTsKKyAgICAgIH0KKworICAgICAgZ3N0X3NlZ21lbnRfZG9fc2VlayAoJmRlbXV4LT5zZWdtZW50LCByYXRlLCBmb3JtYXQsIGZsYWdzLCBzdGFydF90eXBlLAorICAgICAgICAgIHN0YXJ0LCBzdG9wX3R5cGUsIHN0b3AsICZ1cGRhdGUpOworCisgICAgICAvKiBGSVhNRSAtIHRoaXMgc2VlbXMgdW5hdHVyYWwsIGRvX3NlZWsoKSBpcyB1cGRhdGluZyBiYXNlIHdoZW4gd2UKKyAgICAgICAqIG9ubHkgd2FudCB0aGUgc3RhcnQvc3RvcCBwb3NpdGlvbiB0byBjaGFuZ2UsIG1heWJlIGRvX3NlZWsoKSBuZWVkcworICAgICAgICogc29tZSBmaXhpbmc/ICovCisgICAgICBpZiAoIShmbGFncyAmIEdTVF9TRUVLX0ZMQUdfRkxVU0gpICYmICgocmF0ZSA+IDAKKyAgICAgICAgICAgICAgICAgICYmIHN0YXJ0X3R5cGUgPT0gR1NUX1NFRUtfVFlQRV9OT05FKSB8fCAocmF0ZSA8IDAKKyAgICAgICAgICAgICAgICAgICYmIHN0b3BfdHlwZSA9PSBHU1RfU0VFS19UWVBFX05PTkUpKSkgeworICAgICAgICBkZW11eC0+c2VnbWVudC5iYXNlID0gb2xkc2VnbWVudC5iYXNlOworICAgICAgfQorCisgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkNhbGxpbmcgc3ViY2xhc3Mgc2VlazogJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICAgICAgZXZlbnQpOworCiAgICAgICByZXQgPSBkZW11eF9jbGFzcy0+c2VlayAoZGVtdXgsIGV2ZW50KTsKIAogICAgICAgaWYgKCFyZXQpIHsKQEAgLTExMDUsNiArMTM4Myw3IEBACiAgICAgICB9IGVsc2UgewogICAgICAgICBkZW11eC0+cHJpdi0+c2VnbWVudF9zZXFudW0gPSBzZXFudW07CiAgICAgICB9CisgICAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKIAogICAgICAgaWYgKGZsYWdzICYgR1NUX1NFRUtfRkxBR19GTFVTSCkgewogICAgICAgICBHc3RFdmVudCAqZmV2ZW50OwpAQCAtMTEyMiw2ICsxNDAxLDcgQEAKICAgICAgICAgR3N0Q2xvY2tUaW1lIHBlcmlvZF9zdGFydCA9CiAgICAgICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfZ2V0X3BlcmlvZF9zdGFydF90aW1lIChkZW11eCk7CiAKKyAgICAgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOwogICAgICAgICBmb3IgKGl0ZXIgPSBkZW11eC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewogICAgICAgICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9IGl0ZXItPmRhdGE7CiAgICAgICAgICAgR3N0RXZlbnQgKnNlZ19ldnQ7CkBAIC0xMTMzLDU0ICsxNDEzLDQ3IEBACiAgICAgICAgICAgb2Zmc2V0ID0KICAgICAgICAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9nZXRfcHJlc2VudGF0aW9uX29mZnNldCAoZGVtdXgsIHN0cmVhbSk7CiAgICAgICAgICAgc3RyZWFtLT5zZWdtZW50LnN0YXJ0ICs9IG9mZnNldCAtIHBlcmlvZF9zdGFydDsKLSAgICAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gPSBzdHJlYW0tPnNlZ21lbnQuc3RhcnQ7CisgICAgICAgICAgaWYgKGRlbXV4LT5zZWdtZW50LnJhdGUgPiAwICYmIHN0YXJ0X3R5cGUgIT0gR1NUX1NFRUtfVFlQRV9OT05FKQorICAgICAgICAgICAgc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uID0gc3RyZWFtLT5zZWdtZW50LnN0YXJ0OworICAgICAgICAgIGVsc2UgaWYgKGRlbXV4LT5zZWdtZW50LnJhdGUgPCAwICYmIHN0b3BfdHlwZSAhPSBHU1RfU0VFS19UWVBFX05PTkUpCisgICAgICAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gPSBzdHJlYW0tPnNlZ21lbnQuc3RvcDsKICAgICAgICAgICBzZWdfZXZ0ID0gZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc3RyZWFtLT5zZWdtZW50KTsKICAgICAgICAgICBnc3RfZXZlbnRfc2V0X3NlcW51bSAoc2VnX2V2dCwgZGVtdXgtPnByaXYtPnNlZ21lbnRfc2VxbnVtKTsKICAgICAgICAgICBnc3RfZXZlbnRfcmVwbGFjZSAoJnN0cmVhbS0+cGVuZGluZ19zZWdtZW50LCBzZWdfZXZ0KTsKICAgICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKHNlZ19ldnQpOwogICAgICAgICB9CisKKyAgICAgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfVU5MT0NLIChkZW11eCk7CiAgICAgICB9CiAKICAgICAgIC8qIFJlc3RhcnQgdGhlIGRlbXV4ICovCiAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RhcnRfdGFza3MgKGRlbXV4KTsKICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgIEdTVF9BUElfVU5MT0NLIChkZW11eCk7CiAKICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwogICAgICAgcmV0dXJuIHJldDsKICAgICB9CiAgICAgY2FzZSBHU1RfRVZFTlRfUkVDT05GSUdVUkU6ewotICAgICAgR0xpc3QgKml0ZXI7CisgICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW07CiAKLSAgICAgIC8qIFdoZW4gZXhwb3NpbmcgcGFkcyByZWNvbmZpZ3VyZSBldmVudHMgYXJlIHJlY2VpdmVkIGFzIHJlc3VsdAotICAgICAgICogb2YgdGhlIGxpbmtpbmcgb2YgdGhlIHBhZHMuIFRoZSBleHBvc2luZyBhbmQgcmVjb25maWd1cmUgaGFwcGVucwotICAgICAgICogZnJvbSB0aGUgc2FtZSB0aHJlYWQuIFRoaXMgcHJldmVudHMgYSBkZWFkbG9jayBhbmQsIGFsdGhvdWdoCi0gICAgICAgKiBub3QgYmVhdXRpZnVsLCBtYWtlcyB0aGlzIHNhZmUgYnkgYXZvaWRpbmcgdGhhdCB0aGUgZGVtdXgtPnN0cmVhbXMKLSAgICAgICAqIGxpc3QgZ2V0cyBtb2RpZmllZCB3aGlsZSB0aGlzIGxvb3AgaXMgcnVubmluZyAqLwotICAgICAgaWYgKCFkZW11eC0+cHJpdi0+ZXhwb3NpbmcpCi0gICAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworICAgICAgc3RyZWFtID0gZ3N0X2FkYXB0aXZlX2RlbXV4X2ZpbmRfc3RyZWFtX2Zvcl9wYWQgKGRlbXV4LCBwYWQpOwogCi0gICAgICBmb3IgKGl0ZXIgPSBkZW11eC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgewotICAgICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwotCi0gICAgICAgIGlmIChzdHJlYW0tPnBhZCA9PSBwYWQpIHsKLSAgICAgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwotICAgICAgICAgIGlmIChzdHJlYW0tPmxhc3RfcmV0ID09IEdTVF9GTE9XX05PVF9MSU5LRUQpIHsKLSAgICAgICAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19PSzsKLSAgICAgICAgICAgIHN0cmVhbS0+cmVzdGFydF9kb3dubG9hZCA9IFRSVUU7Ci0gICAgICAgICAgICBzdHJlYW0tPm5lZWRfaGVhZGVyID0gVFJVRTsKLSAgICAgICAgICAgIHN0cmVhbS0+ZGlzY29udCA9IFRSVUU7Ci0gICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlJlc3RhcnRpbmcgZG93bmxvYWQgbG9vcCIpOwotICAgICAgICAgICAgZ3N0X3Rhc2tfc3RhcnQgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLSAgICAgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSAgICAgICAgICBpZiAoIWRlbXV4LT5wcml2LT5leHBvc2luZykKLSAgICAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKLSAgICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgIGlmIChzdHJlYW0pIHsKKyAgICAgICAgaWYgKHN0cmVhbS0+bGFzdF9yZXQgPT0gR1NUX0ZMT1dfTk9UX0xJTktFRCkgeworICAgICAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19PSzsKKyAgICAgICAgICBzdHJlYW0tPnJlc3RhcnRfZG93bmxvYWQgPSBUUlVFOworICAgICAgICAgIHN0cmVhbS0+bmVlZF9oZWFkZXIgPSBUUlVFOworICAgICAgICAgIHN0cmVhbS0+ZGlzY29udCA9IFRSVUU7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJSZXN0YXJ0aW5nIGRvd25sb2FkIGxvb3AiKTsKKyAgICAgICAgICBnc3RfdGFza19zdGFydCAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKICAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKCFkZW11eC0+cHJpdi0+ZXhwb3NpbmcpCisgICAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwogICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICAgIHJldHVybiBUUlVFOworICAgICAgfQorICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX0VWRU5UX0xBVEVOQ1k6ewpAQCAtMTIxNiw4ICsxNDg5LDEwIEBACiAgICAgICBHc3RDbG9ja1RpbWUgZHVyYXRpb24gPSAtMTsKICAgICAgIEdzdEZvcm1hdCBmbXQ7CiAKLSAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CiAgICAgICBnc3RfcXVlcnlfcGFyc2VfZHVyYXRpb24gKHF1ZXJ5LCAmZm10LCBOVUxMKTsKKworICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKwogICAgICAgaWYgKGZtdCA9PSBHU1RfRk9STUFUX1RJTUUgJiYgZGVtdXgtPnByaXYtPmhhdmVfbWFuaWZlc3QKICAgICAgICAgICAmJiAhZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KSkgewogICAgICAgICBkdXJhdGlvbiA9IGRlbXV4X2NsYXNzLT5nZXRfZHVyYXRpb24gKGRlbXV4KTsKQEAgLTEyMjcsNyArMTUwMiw5IEBACiAgICAgICAgICAgcmV0ID0gVFJVRTsKICAgICAgICAgfQogICAgICAgfQorCiAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKICAgICAgIEdTVF9MT0dfT0JKRUNUIChkZW11eCwgIkdTVF9RVUVSWV9EVVJBVElPTiByZXR1cm5zICVzIHdpdGggZHVyYXRpb24gJSIKICAgICAgICAgICBHU1RfVElNRV9GT1JNQVQsIHJldCA/ICJUUlVFIiA6ICJGQUxTRSIsIEdTVF9USU1FX0FSR1MgKGR1cmF0aW9uKSk7CiAgICAgICBicmVhazsKQEAgLTEyNDMsNiArMTUyMCw3IEBACiAgICAgICBnaW50NjQgc3RhcnQgPSAwOwogCiAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgICAgICBpZiAoIWRlbXV4LT5wcml2LT5oYXZlX21hbmlmZXN0KSB7CiAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgICAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwKQEAgLTEyNjAsNiArMTUzOCwxMSBAQAogICAgICAgICBpZiAoY2FuX3NlZWspIHsKICAgICAgICAgICBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KSkgewogICAgICAgICAgICAgcmV0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X2dldF9saXZlX3NlZWtfcmFuZ2UgKGRlbXV4LCAmc3RhcnQsICZzdG9wKTsKKyAgICAgICAgICAgIGlmICghcmV0KSB7CisgICAgICAgICAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgICAgICAgICAgICAgR1NUX0lORk9fT0JKRUNUIChkZW11eCwgImNhbid0IGFuc3dlciBzZWVraW5nIHF1ZXJ5Iik7CisgICAgICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgICAgIH0KICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgZHVyYXRpb24gPSBkZW11eF9jbGFzcy0+Z2V0X2R1cmF0aW9uIChkZW11eCk7CiAgICAgICAgICAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGR1cmF0aW9uKSAmJiBkdXJhdGlvbiA+IDApCkBAIC0xMjc1LDE0ICsxNTU4LDE3IEBACiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHU1RfUVVFUllfVVJJOgotICAgICAgLyogVE9ETyBITFMgY2FuIGFuc3dlciB0aGlzIGRpZmZlcmVudGx5IGl0IHNlZW1zICovCisKICAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgICAgIC8qIFRPRE8gSExTIGNhbiBhbnN3ZXIgdGhpcyBkaWZmZXJlbnRseSBpdCBzZWVtcyAqLwogICAgICAgaWYgKGRlbXV4LT5tYW5pZmVzdF91cmkpIHsKICAgICAgICAgLyogRklYTUU6IChobHMpIERvIHdlIGFuc3dlciB3aXRoIHRoZSB2YXJpYW50IHBsYXlsaXN0LCB3aXRoIHRoZSBjdXJyZW50CiAgICAgICAgICAqIHBsYXlsaXN0IG9yIHRoZSB0aGUgdXJpIG9mIHRoZSBsYXN0IGRvd25sb3dhZGVkIGZyYWdtZW50PyAqLwogICAgICAgICBnc3RfcXVlcnlfc2V0X3VyaSAocXVlcnksIGRlbXV4LT5tYW5pZmVzdF91cmkpOwogICAgICAgICByZXQgPSBUUlVFOwogICAgICAgfQorCiAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgpAQCAtMTI5Niw1OSArMTU4MiwxMDEgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgdm9pZAogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0YXJ0X3Rhc2tzIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CiAgIEdMaXN0ICppdGVyOwogCiAgIEdTVF9JTkZPX09CSkVDVCAoZGVtdXgsICJTdGFydGluZyBzdHJlYW1zJyB0YXNrcyIpOwotICBkZW11eC0+Y2FuY2VsbGVkID0gRkFMU0U7CiAgIGZvciAoaXRlciA9IGRlbXV4LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7CiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKKworICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgc3RyZWFtLT5jYW5jZWxsZWQgPSBGQUxTRTsKKyAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfT0s7CiAgICAgZ3N0X3Rhc2tfc3RhcnQgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CiAgIH0KIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuCisgKiBUaGlzIGZ1bmN0aW9uIHdpbGwgdGVtcG9yYXJpbHkgcmVsZWFzZSBtYW5pZmVzdF9sb2NrIGluIG9yZGVyIHRvIGpvaW4gdGhlCisgKiBkb3dubG9hZCB0aHJlYWRzLgorICogVGhlIGFwaV9sb2NrIHdpbGwgc3RpbGwgcHJvdGVjdCBpdCBhZ2FpbnN0IG90aGVyIHRocmVhZHMgdHJ5aW5nIHRvIG1vZGlmeQorICogdGhlIGRlbXV4IGVsZW1lbnQuCisgKi8KIHN0YXRpYyB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RvcF90YXNrcyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewogICBHTGlzdCAqaXRlcjsKIAotICBkZW11eC0+Y2FuY2VsbGVkID0gVFJVRTsKLQotICBkZW11eC0+cHJpdi0+c3RvcF91cGRhdGVzX3Rhc2sgPSBUUlVFOwogICBnc3RfdGFza19zdG9wIChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKLSAgZ19jb25kX3NpZ25hbCAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2NvbmQpOwogCi0gIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7Ci0gIGdfY29uZF9icm9hZGNhc3QgKCZkZW11eC0+bWFuaWZlc3RfY29uZCk7Ci0gIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKKyAgZ19tdXRleF9sb2NrICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jayk7CisgIGRlbXV4LT5wcml2LT5zdG9wX3VwZGF0ZXNfdGFzayA9IFRSVUU7CisgIGdfY29uZF9zaWduYWwgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKIAogICBnc3RfdXJpX2Rvd25sb2FkZXJfY2FuY2VsIChkZW11eC0+ZG93bmxvYWRlcik7CisKICAgZm9yIChpdGVyID0gZGVtdXgtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwogCi0gICAgZ3N0X3Rhc2tfc3RvcCAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKLSAgICBpZiAoc3RyZWFtLT5zcmMpCi0gICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHN0cmVhbS0+c3JjLCBHU1RfU1RBVEVfUkVBRFkpOwogICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7Ci0gICAgc3RyZWFtLT5kb3dubG9hZF9maW5pc2hlZCA9IFRSVUU7CisgICAgc3RyZWFtLT5jYW5jZWxsZWQgPSBUUlVFOworICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CiAgICAgZ19jb25kX3NpZ25hbCAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfY29uZCk7CiAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICB9CiAKKyAgZ19tdXRleF9sb2NrICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X3VwZGF0ZV9sb2NrKTsKKyAgZ19jb25kX2Jyb2FkY2FzdCAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOworCisgIC8qIG5lZWQgdG8gcmVsZWFzZSBtYW5pZmVzdF9sb2NrIGJlZm9yZSBzdG9wcGluZyB0aGUgc3JjIGVsZW1lbnQuCisgICAqIFRoZSBzdHJlYW1zIHdlcmUgYXNrZWQgdG8gY2FuY2VsLCBzbyB0aGV5IHdpbGwgbm90IG1ha2UgYW55IHdyaXRlcyB0byBkZW11eAorICAgKiBvYmplY3QuIEV2ZW4gaWYgd2UgdGVtcG9yYXJpbHkgcmVsZWFzZSBtYW5pZmVzdF9sb2NrLCB0aGUgZGVtdXgtPnN0cmVhbXMKKyAgICogY2Fubm90IGNoYW5nZSBhbmQgaXRlciBjYW5ub3QgYmUgaW52YWxpZGF0ZWQuCisgICAqLworICBmb3IgKGl0ZXIgPSBkZW11eC0+c3RyZWFtczsgaXRlcjsgaXRlciA9IGdfbGlzdF9uZXh0IChpdGVyKSkgeworICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbSA9IGl0ZXItPmRhdGE7CisgICAgR3N0RWxlbWVudCAqc3JjID0gc3RyZWFtLT5zcmM7CisKKyAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKKyAgICBpZiAoc3JjKSB7CisgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNyYywgR1NUX1NUQVRFX1JFQURZKTsKKyAgICB9CisKKyAgICAvKiBzdHJlYW0tPmRvd25sb2FkX3Rhc2sgdmFsdWUgbmV2ZXIgY2hhbmdlcywgc28gaXQgaXMgc2FmZSB0byByZWFkIGl0CisgICAgICogb3V0c2lkZSBjcml0aWNhbCBzZWN0aW9uCisgICAgICovCisgICAgZ3N0X3Rhc2tfam9pbiAoc3RyZWFtLT5kb3dubG9hZF90YXNrKTsKKworICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisgIH0KKworICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKKyAgLyogZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGFzayB2YWx1ZSBuZXZlciBjaGFuZ2VzLCBzbyBpdCBpcyBzYWZlIHRvIHJlYWQgaXQKKyAgICogb3V0c2lkZSBjcml0aWNhbCBzZWN0aW9uCisgICAqLworICBnc3RfdGFza19qb2luIChkZW11eC0+cHJpdi0+dXBkYXRlc190YXNrKTsKKworICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCiAgIGZvciAoaXRlciA9IGRlbXV4LT5zdHJlYW1zOyBpdGVyOyBpdGVyID0gZ19saXN0X25leHQgKGl0ZXIpKSB7CiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gaXRlci0+ZGF0YTsKIAotICAgIGdzdF90YXNrX2pvaW4gKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CiAgICAgc3RyZWFtLT5kb3dubG9hZF9lcnJvcl9jb3VudCA9IDA7CiAgICAgc3RyZWFtLT5uZWVkX2hlYWRlciA9IFRSVUU7CiAgICAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHN0cmVhbS0+YWRhcHRlcik7CiAgIH0KLSAgZ3N0X3Rhc2tfam9pbiAoZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGFzayk7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfYWRhcHRpdmVfZGVtdXhfcHVzaF9zcmNfZXZlbnQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwgR3N0RXZlbnQgKiBldmVudCkKIHsKQEAgLTEzNjQsNiArMTY5Miw3IEBACiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogdm9pZAogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZXRfY2FwcyAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKICAgICBHc3RDYXBzICogY2FwcykKQEAgLTEzNzQsNiArMTcwMyw3IEBACiAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NldF90YWdzIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLAogICAgIEdzdFRhZ0xpc3QgKiB0YWdzKQpAQCAtMTM4Niw2ICsxNzE2LDcgQEAKICAgc3RyZWFtLT5wZW5kaW5nX3RhZ3MgPSB0YWdzOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHZvaWQKIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fcXVldWVfZXZlbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCiAgICAgR3N0RXZlbnQgKiBldmVudCkKQEAgLTEzOTMsMTEgKzE3MjQsMTIgQEAKICAgc3RyZWFtLT5wZW5kaW5nX2V2ZW50cyA9IGdfbGlzdF9hcHBlbmQgKHN0cmVhbS0+cGVuZGluZ19ldmVudHMsIGV2ZW50KTsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ3VpbnQ2NAogX3VwZGF0ZV9hdmVyYWdlX2JpdHJhdGUgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBndWludDY0IG5ld19iaXRyYXRlKQogewotICBnaW50IGluZGV4ID0gc3RyZWFtLT5tb3ZpbmdfaW5kZXggJSBkZW11eC0+bnVtX2xvb2tiYWNrX2ZyYWdtZW50czsKKyAgZ2ludCBpbmRleCA9IHN0cmVhbS0+bW92aW5nX2luZGV4ICUgTlVNX0xPT0tCQUNLX0ZSQUdNRU5UUzsKIAogICBzdHJlYW0tPm1vdmluZ19iaXRyYXRlIC09IHN0cmVhbS0+ZnJhZ21lbnRfYml0cmF0ZXNbaW5kZXhdOwogICBzdHJlYW0tPmZyYWdtZW50X2JpdHJhdGVzW2luZGV4XSA9IG5ld19iaXRyYXRlOwpAQCAtMTQwNSwxMSArMTczNywxMiBAQAogCiAgIHN0cmVhbS0+bW92aW5nX2luZGV4ICs9IDE7CiAKLSAgaWYgKHN0cmVhbS0+bW92aW5nX2luZGV4ID4gZGVtdXgtPm51bV9sb29rYmFja19mcmFnbWVudHMpCi0gICAgcmV0dXJuIHN0cmVhbS0+bW92aW5nX2JpdHJhdGUgLyBkZW11eC0+bnVtX2xvb2tiYWNrX2ZyYWdtZW50czsKKyAgaWYgKHN0cmVhbS0+bW92aW5nX2luZGV4ID4gTlVNX0xPT0tCQUNLX0ZSQUdNRU5UUykKKyAgICByZXR1cm4gc3RyZWFtLT5tb3ZpbmdfYml0cmF0ZSAvIE5VTV9MT09LQkFDS19GUkFHTUVOVFM7CiAgIHJldHVybiBzdHJlYW0tPm1vdmluZ19iaXRyYXRlIC8gc3RyZWFtLT5tb3ZpbmdfaW5kZXg7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGd1aW50NjQKIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fdXBkYXRlX2N1cnJlbnRfYml0cmF0ZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCkBAIC0xNDE3LDExICsxNzUwLDE2IEBACiAgIGd1aW50NjQgYXZlcmFnZV9iaXRyYXRlOwogICBndWludDY0IGZyYWdtZW50X2JpdHJhdGU7CiAKLSAgZnJhZ21lbnRfYml0cmF0ZSA9Ci0gICAgICAoc3RyZWFtLT5mcmFnbWVudF90b3RhbF9zaXplICogOCkgLwotICAgICAgKChkb3VibGUpIHN0cmVhbS0+ZnJhZ21lbnRfdG90YWxfdGltZSAvIEdfR1VJTlQ2NF9DT05TVEFOVCAoMTAwMDAwMCkpOwotICBzdHJlYW0tPmZyYWdtZW50X3RvdGFsX3NpemUgPSAwOwotICBzdHJlYW0tPmZyYWdtZW50X3RvdGFsX3RpbWUgPSAwOworICBpZiAoZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQpIHsKKyAgICBHU1RfTE9HX09CSkVDVCAoZGVtdXgsICJDb25uZWN0aW9uLXNwZWVkIGlzIHNldCB0byAldSBrYnBzLCB1c2luZyBpdCIsCisgICAgICAgIGRlbXV4LT5jb25uZWN0aW9uX3NwZWVkIC8gMTAwMCk7CisgICAgcmV0dXJuIGRlbXV4LT5jb25uZWN0aW9uX3NwZWVkOworICB9CisKKyAgZ19vYmplY3RfZ2V0IChzdHJlYW0tPnF1ZXVlLCAiYXZnLWluLXJhdGUiLCAmZnJhZ21lbnRfYml0cmF0ZSwgTlVMTCk7CisgIGZyYWdtZW50X2JpdHJhdGUgKj0gODsKKyAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJEb3dubG9hZCBiaXRyYXRlIGlzIDogJSIgR19HVUlOVDY0X0ZPUk1BVCAiIGJwcyIsCisgICAgICBmcmFnbWVudF9iaXRyYXRlKTsKIAogICBhdmVyYWdlX2JpdHJhdGUgPSBfdXBkYXRlX2F2ZXJhZ2VfYml0cmF0ZSAoZGVtdXgsIHN0cmVhbSwgZnJhZ21lbnRfYml0cmF0ZSk7CiAKQEAgLTE0MjksMjQgKzE3NjcsMTkgQEAKICAgICAgIGZyYWdtZW50X2JpdHJhdGUpOwogICBHU1RfSU5GT19PQkpFQ1QgKHN0cmVhbSwKICAgICAgICJMYXN0ICV1IGZyYWdtZW50cyBhdmVyYWdlIGJpdHJhdGUgaXMgJSIgR19HVUlOVDY0X0ZPUk1BVCwKLSAgICAgIGRlbXV4LT5udW1fbG9va2JhY2tfZnJhZ21lbnRzLCBhdmVyYWdlX2JpdHJhdGUpOworICAgICAgTlVNX0xPT0tCQUNLX0ZSQUdNRU5UUywgYXZlcmFnZV9iaXRyYXRlKTsKIAogICAvKiBDb25zZXJ2YXRpdmUgYXBwcm9hY2gsIG1ha2Ugc3VyZSB3ZSBkb24ndCB1cGdyYWRlIHRvbyBmYXN0ICovCiAgIHN0cmVhbS0+Y3VycmVudF9kb3dubG9hZF9yYXRlID0gTUlOIChhdmVyYWdlX2JpdHJhdGUsIGZyYWdtZW50X2JpdHJhdGUpOwogCi0gIGlmIChkZW11eC0+Y29ubmVjdGlvbl9zcGVlZCkgewotICAgIEdTVF9MT0dfT0JKRUNUIChkZW11eCwgIkNvbm5lY3Rpb24tc3BlZWQgaXMgc2V0IHRvICV1IGticHMsIHVzaW5nIGl0IiwKLSAgICAgICAgZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQgLyAxMDAwKTsKLSAgICByZXR1cm4gZGVtdXgtPmNvbm5lY3Rpb25fc3BlZWQ7Ci0gIH0KLQogICBzdHJlYW0tPmN1cnJlbnRfZG93bmxvYWRfcmF0ZSAqPSBkZW11eC0+Yml0cmF0ZV9saW1pdDsKICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJCaXRyYXRlIGFmdGVyIGJpdHJhdGUgbGltaXQgKCUwLjJmKTogJSIKLSAgICAgIEdfR1VJTlQ2NF9GT1JNQVQsIGRlbXV4LT5iaXRyYXRlX2xpbWl0LCBzdHJlYW0tPmN1cnJlbnRfZG93bmxvYWRfcmF0ZSk7Ci0KKyAgICAgIEdfR1VJTlQ2NF9GT1JNQVQsIGRlbXV4LT5iaXRyYXRlX2xpbWl0LAorICAgICAgc3RyZWFtLT5jdXJyZW50X2Rvd25sb2FkX3JhdGUgKiA4KTsKICAgcmV0dXJuIHN0cmVhbS0+Y3VycmVudF9kb3dubG9hZF9yYXRlOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfY29tYmluZV9mbG93cyAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewpAQCAtMTQ1Nyw3ICsxNzkwLDYgQEAKICAgZm9yIChpdGVyID0gZGVtdXgtPnN0cmVhbXM7IGl0ZXI7IGl0ZXIgPSBnX2xpc3RfbmV4dCAoaXRlcikpIHsKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBpdGVyLT5kYXRhOwogCi0gICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICBpZiAoc3RyZWFtLT5sYXN0X3JldCAhPSBHU1RfRkxPV19OT1RfTElOS0VEKSB7CiAgICAgICBhbGxfbm90bGlua2VkID0gRkFMU0U7CiAgICAgICBpZiAoc3RyZWFtLT5sYXN0X3JldCAhPSBHU1RfRkxPV19FT1MpCkBAIC0xNDY2LDEwICsxNzk4LDggQEAKIAogICAgIGlmIChzdHJlYW0tPmxhc3RfcmV0IDw9IEdTVF9GTE9XX05PVF9ORUdPVElBVEVECiAgICAgICAgIHx8IHN0cmVhbS0+bGFzdF9yZXQgPT0gR1NUX0ZMT1dfRkxVU0hJTkcpIHsKLSAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICAgIHJldHVybiBzdHJlYW0tPmxhc3RfcmV0OwogICAgIH0KLSAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgIH0KICAgaWYgKGFsbF9ub3RsaW5rZWQpCiAgICAgcmV0dXJuIEdTVF9GTE9XX05PVF9MSU5LRUQ7CkBAIC0xNDc4LDYgKzE4MDgsOSBAQAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbi4KKyAqIFRlbXBvcmFyaWx5IHJlbGVhc2VzIG1hbmlmZXN0X2xvY2sKKyAqLwogR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9wdXNoX2J1ZmZlciAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKICAgICBHc3RCdWZmZXIgKiBidWZmZXIpCkBAIC0xNDg1LDYgKzE4MTgsOSBAQAogICBHc3RBZGFwdGl2ZURlbXV4ICpkZW11eCA9IHN0cmVhbS0+ZGVtdXg7CiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CiAgIGdib29sZWFuIGRpc2NvbnQgPSBGQUxTRTsKKyAgLyogUGVuZGluZyBldmVudHMgKi8KKyAgR3N0RXZlbnQgKnBlbmRpbmdfY2FwcyA9IE5VTEwsICpwZW5kaW5nX3NlZ21lbnQgPSBOVUxMLCAqcGVuZGluZ190YWdzID0gTlVMTDsKKyAgR0xpc3QgKnBlbmRpbmdfZXZlbnRzID0gTlVMTDsKIAogICBpZiAoc3RyZWFtLT5maXJzdF9mcmFnbWVudF9idWZmZXIpIHsKICAgICBHc3RDbG9ja1RpbWUgb2Zmc2V0ID0KQEAgLTE0OTIsNiArMTgyOCw3IEBACiAgICAgR3N0Q2xvY2tUaW1lIHBlcmlvZF9zdGFydCA9CiAgICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9nZXRfcGVyaW9kX3N0YXJ0X3RpbWUgKGRlbXV4KTsKIAorICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX0xPQ0sgKGRlbXV4KTsKICAgICBpZiAoZGVtdXgtPnNlZ21lbnQucmF0ZSA8IDApCiAgICAgICAvKiBTZXQgRElTQ09OVCBmbGFnIGZvciBldmVyeSBmaXJzdCBidWZmZXIgaW4gcmV2ZXJzZSBwbGF5YmFjayBtb2RlCiAgICAgICAgKiBhcyBlYWNoIGZyYWdtZW50IGZvciBpdHMgb3duIGhhcyB0byBiZSByZXZlcnNlZCAqLwpAQCAtMTUxMSw2ICsxODQ4LDExIEBACiAgICAgICAgIGRlbXV4LT5zZWdtZW50LnBvc2l0aW9uID0KICAgICAgICAgICAgIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbiAtIG9mZnNldCArIHBlcmlvZF9zdGFydDsKICAgICB9CisgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfVU5MT0NLIChkZW11eCk7CisKKyAgICBHU1RfTE9HX09CSkVDVCAoc3RyZWFtLT5wYWQsCisgICAgICAgICJHb2luZyB0byBwdXNoIGJ1ZmZlciB3aXRoIFBUUyAlIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfUFRTIChidWZmZXIpKSk7CiAgIH0gZWxzZSB7CiAgICAgR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICB9CkBAIC0xNTMxLDQzICsxODczLDg1IEBACiAKICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIEdTVF9CVUZGRVJfRFRTIChidWZmZXIpID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLQogICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5wZW5kaW5nX2NhcHMpKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJTZXR0aW5nIHBlbmRpbmcgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsCi0gICAgICAgIHN0cmVhbS0+cGVuZGluZ19jYXBzKTsKLSAgICBnc3RfcGFkX3NldF9jYXBzIChzdHJlYW0tPnBhZCwgc3RyZWFtLT5wZW5kaW5nX2NhcHMpOworICAgIHBlbmRpbmdfY2FwcyA9IGdzdF9ldmVudF9uZXdfY2FwcyAoc3RyZWFtLT5wZW5kaW5nX2NhcHMpOwogICAgIGdzdF9jYXBzX3VucmVmIChzdHJlYW0tPnBlbmRpbmdfY2Fwcyk7CiAgICAgc3RyZWFtLT5wZW5kaW5nX2NhcHMgPSBOVUxMOwogICB9CiAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPnBlbmRpbmdfc2VnbWVudCkpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlNlbmRpbmcgcGVuZGluZyBzZWc6ICUiIEdTVF9QVFJfRk9STUFULAotICAgICAgICBzdHJlYW0tPnBlbmRpbmdfc2VnbWVudCk7Ci0gICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgc3RyZWFtLT5wZW5kaW5nX3NlZ21lbnQpOworICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX0xPQ0sgKGRlbXV4KTsKKyAgICBwZW5kaW5nX3NlZ21lbnQgPSBzdHJlYW0tPnBlbmRpbmdfc2VnbWVudDsKICAgICBzdHJlYW0tPnBlbmRpbmdfc2VnbWVudCA9IE5VTEw7CisgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfVU5MT0NLIChkZW11eCk7CiAgIH0KLSAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+cGVuZGluZ190YWdzKSkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiU2VuZGluZyBwZW5kaW5nIHRhZ3M6ICUiIEdTVF9QVFJfRk9STUFULAotICAgICAgICBzdHJlYW0tPnBlbmRpbmdfdGFncyk7Ci0gICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChzdHJlYW0tPnBhZCwgZ3N0X2V2ZW50X25ld190YWcgKHN0cmVhbS0+cGVuZGluZ190YWdzKSk7CisgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPnBlbmRpbmdfdGFncyB8fCBzdHJlYW0tPmJpdHJhdGVfY2hhbmdlZCkpIHsKKyAgICBHc3RUYWdMaXN0ICp0YWdzID0gc3RyZWFtLT5wZW5kaW5nX3RhZ3M7CisKICAgICBzdHJlYW0tPnBlbmRpbmdfdGFncyA9IE5VTEw7CisgICAgc3RyZWFtLT5iaXRyYXRlX2NoYW5nZWQgPSAwOworCisgICAgaWYgKHN0cmVhbS0+ZnJhZ21lbnQuYml0cmF0ZSAhPSAwKSB7CisgICAgICBpZiAodGFncykKKyAgICAgICAgdGFncyA9IGdzdF90YWdfbGlzdF9tYWtlX3dyaXRhYmxlICh0YWdzKTsKKyAgICAgIGVsc2UKKyAgICAgICAgdGFncyA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7CisKKyAgICAgIGdzdF90YWdfbGlzdF9hZGQgKHRhZ3MsIEdTVF9UQUdfTUVSR0VfS0VFUCwKKyAgICAgICAgICBHU1RfVEFHX05PTUlOQUxfQklUUkFURSwgc3RyZWFtLT5mcmFnbWVudC5iaXRyYXRlLCBOVUxMKTsKKyAgICB9CisgICAgcGVuZGluZ190YWdzID0gZ3N0X2V2ZW50X25ld190YWcgKHRhZ3MpOwogICB9Ci0gIHdoaWxlIChzdHJlYW0tPnBlbmRpbmdfZXZlbnRzICE9IE5VTEwpIHsKLSAgICBHc3RFdmVudCAqZXZlbnQgPSBzdHJlYW0tPnBlbmRpbmdfZXZlbnRzLT5kYXRhOworICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5wZW5kaW5nX2V2ZW50cykpIHsKKyAgICBwZW5kaW5nX2V2ZW50cyA9IHN0cmVhbS0+cGVuZGluZ19ldmVudHM7CisgICAgc3RyZWFtLT5wZW5kaW5nX2V2ZW50cyA9IE5VTEw7CisgIH0KKworICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKKyAgLyogRG8gbm90IHB1c2ggZXZlbnRzIG9yIGJ1ZmZlcnMgaG9sZGluZyB0aGUgbWFuaWZlc3QgbG9jayAqLworICBpZiAoR19VTkxJS0VMWSAocGVuZGluZ19jYXBzKSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiU2V0dGluZyBwZW5kaW5nIGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgICBwZW5kaW5nX2NhcHMpOworICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIHBlbmRpbmdfY2Fwcyk7CisgIH0KKyAgaWYgKEdfVU5MSUtFTFkgKHBlbmRpbmdfc2VnbWVudCkpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlNlbmRpbmcgcGVuZGluZyBzZWc6ICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgICBwZW5kaW5nX3NlZ21lbnQpOworICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIHBlbmRpbmdfc2VnbWVudCk7CisgIH0KKyAgaWYgKEdfVU5MSUtFTFkgKHBlbmRpbmdfdGFncykpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlNlbmRpbmcgcGVuZGluZyB0YWdzOiAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICAgcGVuZGluZ190YWdzKTsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHN0cmVhbS0+cGFkLCBwZW5kaW5nX3RhZ3MpOworICB9CisgIHdoaWxlIChwZW5kaW5nX2V2ZW50cyAhPSBOVUxMKSB7CisgICAgR3N0RXZlbnQgKmV2ZW50ID0gcGVuZGluZ19ldmVudHMtPmRhdGE7CiAKICAgICBpZiAoIWdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIGV2ZW50KSkKICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRmFpbGVkIHRvIHNlbmQgcGVuZGluZyBldmVudCIpOwogCi0gICAgc3RyZWFtLT5wZW5kaW5nX2V2ZW50cyA9Ci0gICAgICAgIGdfbGlzdF9kZWxldGVfbGluayAoc3RyZWFtLT5wZW5kaW5nX2V2ZW50cywgc3RyZWFtLT5wZW5kaW5nX2V2ZW50cyk7CisgICAgcGVuZGluZ19ldmVudHMgPSBnX2xpc3RfZGVsZXRlX2xpbmsgKHBlbmRpbmdfZXZlbnRzLCBwZW5kaW5nX2V2ZW50cyk7CiAgIH0KIAogICByZXQgPSBnc3RfcGFkX3B1c2ggKHN0cmVhbS0+cGFkLCBidWZmZXIpOworCisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgIHJldCA9IHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgcmV0dXJuIHJldDsKKyAgfQorICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKICAgR1NUX0xPR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiUHVzaCByZXN1bHQ6ICVkICVzIiwgcmV0LAogICAgICAgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOwogCiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZmluaXNoX2ZyYWdtZW50X2RlZmF1bHQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQpAQCAtMTU4MCw2ICsxOTY0LDkgQEAKICAgICAgIHN0cmVhbS0+ZnJhZ21lbnQuZHVyYXRpb24pOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4uCisgKiBDYW4gdGVtcG9yYXJpbHkgcmVsZWFzZSBtYW5pZmVzdF9sb2NrCisgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2RhdGFfcmVjZWl2ZWRfZGVmYXVsdCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCkBAIC0xNTk0LDEyICsxOTgxLDI4IEBACiBzdGF0aWMgR3N0Rmxvd1JldHVybgogX3NyY19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKIHsKLSAgR3N0UGFkICpzcmNwYWQgPSAoR3N0UGFkICopIHBhcmVudDsKLSAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChzcmNwYWQpOwotICBHc3RBZGFwdGl2ZURlbXV4ICpkZW11eCA9IHN0cmVhbS0+ZGVtdXg7Ci0gIEdzdEFkYXB0aXZlRGVtdXhDbGFzcyAqa2xhc3MgPSBHU1RfQURBUFRJVkVfREVNVVhfR0VUX0NMQVNTIChkZW11eCk7CisgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKnN0cmVhbTsKKyAgR3N0QWRhcHRpdmVEZW11eCAqZGVtdXg7CisgIEdzdEFkYXB0aXZlRGVtdXhDbGFzcyAqa2xhc3M7CiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CiAKKyAgZGVtdXggPSBHU1RfQURBUFRJVkVfREVNVVhfQ0FTVCAocGFyZW50KTsKKyAgc3RyZWFtID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOworICBrbGFzcyA9IEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKGRlbXV4KTsKKworICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCisgIC8qIGRvIG5vdCBtYWtlIGFueSBjaGFuZ2VzIGlmIHRoZSBzdHJlYW0gaXMgY2FuY2VsbGVkICovCisgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKKyAgICByZXQgPSBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgIHJldHVybiByZXQ7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCiAgIGlmIChzdHJlYW0tPnN0YXJ0aW5nX2ZyYWdtZW50KSB7CiAgICAgR3N0Q2xvY2tUaW1lIG9mZnNldCA9CiAgICAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZ2V0X3ByZXNlbnRhdGlvbl9vZmZzZXQgKGRlbXV4LCBzdHJlYW0pOwpAQCAtMTYwOCw3ICsyMDExLDEwIEBACiAKICAgICBzdHJlYW0tPnN0YXJ0aW5nX2ZyYWdtZW50ID0gRkFMU0U7CiAgICAgaWYgKGtsYXNzLT5zdGFydF9mcmFnbWVudCkgewotICAgICAga2xhc3MtPnN0YXJ0X2ZyYWdtZW50IChkZW11eCwgc3RyZWFtKTsKKyAgICAgIGlmICgha2xhc3MtPnN0YXJ0X2ZyYWdtZW50IChkZW11eCwgc3RyZWFtKSkgeworICAgICAgICByZXQgPSBHU1RfRkxPV19FUlJPUjsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAgIH0KICAgICB9CiAKICAgICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSA9IHN0cmVhbS0+ZnJhZ21lbnQudGltZXN0YW1wOwpAQCAtMTYxOSw2ICsyMDI1LDcgQEAKICAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikpKTsKIAogICAgIGlmIChHU1RfQlVGRkVSX1BUU19JU19WQUxJRCAoYnVmZmVyKSkgeworICAgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOwogICAgICAgc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uID0gR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcik7CiAKICAgICAgIC8qIENvbnZlcnQgZnJvbSBwb3NpdGlvbiBpbnNpZGUgdGhlIHN0cmVhbSdzIHNlZ21lbnQgdG8gdGhlIGRlbXV4ZXIncwpAQCAtMTYyNywyNSArMjAzNCw2MyBAQAogICAgICAgICAgIGRlbXV4LT5zZWdtZW50LnBvc2l0aW9uKQogICAgICAgICBkZW11eC0+c2VnbWVudC5wb3NpdGlvbiA9CiAgICAgICAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gLSBvZmZzZXQgKyBwZXJpb2Rfc3RhcnQ7CisgICAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKICAgICB9CiAKICAgfSBlbHNlIHsKICAgICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIH0KKyAgaWYgKHN0cmVhbS0+ZG93bmxvYWRpbmdfZmlyc3RfYnVmZmVyKSB7CisgICAgZ2ludDY0IGNodW5rX3NpemUgPSAwOworCisgICAgc3RyZWFtLT5kb3dubG9hZGluZ19maXJzdF9idWZmZXIgPSBGQUxTRTsKKworICAgIGlmICghc3RyZWFtLT5kb3dubG9hZGluZ19oZWFkZXIgJiYgIXN0cmVhbS0+ZG93bmxvYWRpbmdfaW5kZXgpIHsKKyAgICAgIC8qIElmIHRoaXMgaXMgdGhlIGZpcnN0IGJ1ZmZlciBvZiBhIGZyYWdtZW50IChub3QgdGhlIGhlYWRlcnMgb3IgaW5kZXgpCisgICAgICAgKiBhbmQgd2UgZG9uJ3QgaGF2ZSBhIGJpcmF0ZSBmcm9tIHRoZSBzdWItY2xhc3MsIHRoZW4gc2VlIGlmIHdlCisgICAgICAgKiBjYW4gd29yayBpdCBvdXQgZnJvbSB0aGUgZnJhZ21lbnQgc2l6ZSBhbmQgZHVyYXRpb24gKi8KKyAgICAgIGlmIChzdHJlYW0tPmZyYWdtZW50LmJpdHJhdGUgPT0gMCAmJgorICAgICAgICAgIHN0cmVhbS0+ZnJhZ21lbnQuZHVyYXRpb24gIT0gMCAmJgorICAgICAgICAgIGdzdF9lbGVtZW50X3F1ZXJ5X2R1cmF0aW9uIChzdHJlYW0tPnVyaV9oYW5kbGVyLCBHU1RfRk9STUFUX0JZVEVTLAorICAgICAgICAgICAgICAmY2h1bmtfc2l6ZSkpIHsKKyAgICAgICAgZ3VpbnQgYml0cmF0ZSA9IE1JTiAoR19NQVhVSU5ULCBnc3RfdXRpbF91aW50NjRfc2NhbGUgKGNodW5rX3NpemUsCisgICAgICAgICAgICAgICAgOCAqIEdTVF9TRUNPTkQsIHN0cmVhbS0+ZnJhZ21lbnQuZHVyYXRpb24pKTsKKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICAgIkZyYWdtZW50IGhhcyBzaXplICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQKKyAgICAgICAgICAgICIgPSBiaXRyYXRlICV1IiwgY2h1bmtfc2l6ZSwKKyAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+ZnJhZ21lbnQuZHVyYXRpb24pLCBiaXRyYXRlKTsKKyAgICAgICAgc3RyZWFtLT5mcmFnbWVudC5iaXRyYXRlID0gYml0cmF0ZTsKKyAgICAgIH0KKyAgICAgIGlmIChzdHJlYW0tPmZyYWdtZW50LmJpdHJhdGUpIHsKKyAgICAgICAgc3RyZWFtLT5iaXRyYXRlX2NoYW5nZWQgPSBUUlVFOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkJpdHJhdGUgZm9yIGZyYWdtZW50IG5vdCBhdmFpbGFibGUiKTsKKyAgICAgIH0KKyAgICB9CisgIH0KIAogICBzdHJlYW0tPmRvd25sb2FkX3RvdGFsX3RpbWUgKz0KICAgICAgIGdfZ2V0X21vbm90b25pY190aW1lICgpIC0gc3RyZWFtLT5kb3dubG9hZF9jaHVua19zdGFydF90aW1lOwogICBzdHJlYW0tPmRvd25sb2FkX3RvdGFsX2J5dGVzICs9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcik7CiAKLSAgc3RyZWFtLT5mcmFnbWVudF90b3RhbF9zaXplICs9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcik7Ci0gIHN0cmVhbS0+ZnJhZ21lbnRfdG90YWxfdGltZSArPQotICAgICAgZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgLSBzdHJlYW0tPmRvd25sb2FkX2NodW5rX3N0YXJ0X3RpbWU7Ci0KICAgZ3N0X2FkYXB0ZXJfcHVzaCAoc3RyZWFtLT5hZGFwdGVyLCBidWZmZXIpOwogICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlJlY2VpdmVkIGJ1ZmZlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFUCiAgICAgICAiLiBOb3cgJSIgR19HU0laRV9GT1JNQVQgIiBvbiBhZGFwdGVyIiwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSwKICAgICAgIGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAoc3RyZWFtLT5hZGFwdGVyKSk7CisKICAgcmV0ID0ga2xhc3MtPmRhdGFfcmVjZWl2ZWQgKGRlbXV4LCBzdHJlYW0pOworCisgIGlmIChyZXQgPT0gR1NUX0ZMT1dfRkxVU0hJTkcpIHsKKyAgICAvKiBkbyBub3QgbWFrZSBhbnkgY2hhbmdlcyBpZiB0aGUgc3RyZWFtIGlzIGNhbmNlbGxlZCAqLworICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworICAgICAgcmV0dXJuIHJldDsKKyAgICB9CisgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICB9CisKICAgc3RyZWFtLT5kb3dubG9hZF9jaHVua19zdGFydF90aW1lID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCk7CiAKICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewpAQCAtMTY2NSwxNiArMjExMCwxOCBAQAogICAgICAgcmV0ID0gR1NUX0ZMT1dfRU9TOyAgICAgICAvKiByZXR1cm4gRU9TIHRvIG1ha2UgdGhlIHNvdXJjZSBzdG9wICovCiAgIH0KIAorZXJyb3I6CisKKyAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworCiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIHZvaWQKIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZnJhZ21lbnRfZG93bmxvYWRfZmluaXNoIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKICAgICBzdHJlYW0sIEdzdEZsb3dSZXR1cm4gcmV0LCBHRXJyb3IgKiBlcnIpCiB7Ci0gIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7Ci0gIHN0cmVhbS0+ZG93bmxvYWRfZmluaXNoZWQgPSBUUlVFOwotCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRG93bmxvYWQgZmluaXNoOiAlZCAlcyAtIGVycjogJXAiLCByZXQsCiAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSwgZXJyKTsKIApAQCAtMTY4Nyw2ICsyMTM0LDggQEAKICAgICAgIHN0cmVhbS0+bGFzdF9lcnJvciA9IGdfZXJyb3JfY29weSAoZXJyKTsKICAgICB9CiAgIH0KKyAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgc3RyZWFtLT5kb3dubG9hZF9maW5pc2hlZCA9IFRSVUU7CiAgIGdfY29uZF9zaWduYWwgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2NvbmQpOwogICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiB9CkBAIC0xNjk0LDE3ICsyMTQzLDIxIEBACiBzdGF0aWMgZ2Jvb2xlYW4KIF9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQogewotICBHc3RQYWQgKnNyY3BhZCA9IEdTVF9QQURfQ0FTVCAocGFyZW50KTsKLSAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqc3RyZWFtID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChzcmNwYWQpOworICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7CisgIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gc3RyZWFtLT5kZW11eDsKIAogICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKICAgICBjYXNlIEdTVF9FVkVOVF9FT1M6ewogICAgICAgR3N0QWRhcHRpdmVEZW11eENsYXNzICprbGFzczsKICAgICAgIEdzdEZsb3dSZXR1cm4gcmV0OwogCi0gICAgICBrbGFzcyA9IEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKHN0cmVhbS0+ZGVtdXgpOwotICAgICAgcmV0ID0ga2xhc3MtPmZpbmlzaF9mcmFnbWVudCAoc3RyZWFtLT5kZW11eCwgc3RyZWFtKTsKKyAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisKKyAgICAgIGtsYXNzID0gR1NUX0FEQVBUSVZFX0RFTVVYX0dFVF9DTEFTUyAoZGVtdXgpOworICAgICAgcmV0ID0ga2xhc3MtPmZpbmlzaF9mcmFnbWVudCAoZGVtdXgsIHN0cmVhbSk7CiAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2ZyYWdtZW50X2Rvd25sb2FkX2ZpbmlzaCAoc3RyZWFtLCByZXQsIE5VTEwpOworCisgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgZGVmYXVsdDoKQEAgLTE3MTksNiArMjE3Miw4IEBACiBzdGF0aWMgZ2Jvb2xlYW4KIF9zcmNfcXVlcnkgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KQogeworICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICpzdHJlYW0gPSBnc3RfcGFkX2dldF9lbGVtZW50X3ByaXZhdGUgKHBhZCk7CisKICAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CiAgICAgY2FzZSBHU1RfUVVFUllfQUxMT0NBVElPTjoKICAgICAgIHJldHVybiBGQUxTRTsKQEAgLTE3MjcsOSArMjE4MiwxMiBAQAogICAgICAgYnJlYWs7CiAgIH0KIAotICByZXR1cm4gZ3N0X3BhZF9xdWVyeV9kZWZhdWx0IChwYWQsIHBhcmVudCwgcXVlcnkpOworICByZXR1cm4gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChzdHJlYW0tPnBhZCwgcXVlcnkpOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4uCisgKiBDYW4gdGVtcG9yYXJpbHkgcmVsZWFzZSBtYW5pZmVzdF9sb2NrCisgKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV93YWl0X21hbmlmZXN0X3VwZGF0ZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCkBAIC0xNzQwLDEzICsyMTk4LDMzIEBACiAgICAqIHVzIHRvIGRvd25sb2FkIGluIHRoZSBwbGF5bGlzdCBvciB0aGUgcGxheWxpc3QKICAgICogYmVjYW1lIG5vbi1saXZlICovCiAgIHdoaWxlIChUUlVFKSB7Ci0gICAgaWYgKGRlbXV4LT5jYW5jZWxsZWQpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIk5vIGZyYWdtZW50IGxlZnQgYnV0IGxpdmUgcGxheWxpc3QsIHdhaXQgYSBiaXQiKTsKKworICAgIC8qIGdldCB0aGUgbWFuaWZlc3RfdXBkYXRlX2xvY2sgd2hpbGUgc3RpbGwgaG9sZGluZyB0aGUgbWFuaWZlc3RfbG9jay4KKyAgICAgKiBUaGlzIHdpbGwgcHJldmVudCBvdGhlciB0aHJlYWRzIHRvIHNpZ25hbCB0aGUgY29uZGl0aW9uICh0aGV5IHdpbGwgbmVlZAorICAgICAqIGJvdGggbWFuaWZlc3RfbG9jayBhbmQgbWFuaWZlc3RfdXBkYXRlX2xvY2sgaW4gb3JkZXIgdG8gc2lnbmFsKS4KKyAgICAgKiBJdCBjYW5ub3QgZGVhZGxvY2sgYmVjYXVzZSBhbGwgdGhyZWFkcyBhbHdheXMgZ2V0IHRoZSBtYW5pZmVzdF9sb2NrIGZpcnN0CisgICAgICogYW5kIG1hbmlmZXN0X3VwZGF0ZV9sb2NrIHNlY29uZC4KKyAgICAgKi8KKyAgICBnX211dGV4X2xvY2sgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOworCisgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworCisgICAgZ19jb25kX3dhaXQgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfY29uZCwKKyAgICAgICAgJmRlbXV4LT5wcml2LT5tYW5pZmVzdF91cGRhdGVfbG9jayk7CisgICAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOworCisgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKworICAgIC8qIGNoZWNrIGZvciBjYW5jZWxsZWQgZXZlcnkgdGltZSB3ZSBnZXQgdGhlIG1hbmlmZXN0X2xvY2sgKi8KKyAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKICAgICAgIHJldCA9IEZBTFNFOworICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgICAgYnJlYWs7CiAgICAgfQotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJObyBmcmFnbWVudCBsZWZ0IGJ1dCBsaXZlIHBsYXlsaXN0LCB3YWl0IGEgYml0Iik7Ci0gICAgZ19jb25kX3dhaXQgKCZkZW11eC0+bWFuaWZlc3RfY29uZCwgR1NUX01BTklGRVNUX0dFVF9MT0NLIChkZW11eCkpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKIAogICAgIC8qIEdvdCBhIG5ldyBmcmFnbWVudCBvciBub3QgbGl2ZSBhbnltb3JlPyAqLwogICAgIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2hhc19uZXh0X2ZyYWdtZW50IChkZW11eCwgc3RyZWFtKSkgewpAQCAtMTc2NywzNiArMjI0NSw3IEBACiAgIHJldHVybiByZXQ7CiB9CiAKLXN0YXRpYyBnYm9vbGVhbgotX2FkYXB0aXZlX2RlbXV4X3BhZF9yZW1vdmVfZW9zX3N0aWNreSAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqKiBldmVudCwKLSAgICBncG9pbnRlciB1ZGF0YSkKLXsKLSAgaWYgKEdTVF9FVkVOVF9UWVBFICgqZXZlbnQpID09IEdTVF9FVkVOVF9FT1MpIHsKLSAgICBnc3RfZXZlbnRfcmVwbGFjZSAoZXZlbnQsIE5VTEwpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fY2xlYXJfZW9zX2FuZF9mbHVzaF9zdGF0ZSAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqCi0gICAgc3RyZWFtKQotewotICBHc3RQYWQgKmludGVybmFsX3BhZDsKLQotICBpbnRlcm5hbF9wYWQgPQotICAgICAgR1NUX1BBRF9DQVNUIChnc3RfcHJveHlfcGFkX2dldF9pbnRlcm5hbCAoR1NUX1BST1hZX1BBRCAoc3RyZWFtLT5wYWQpKSk7Ci0gIGdzdF9wYWRfc3RpY2t5X2V2ZW50c19mb3JlYWNoIChpbnRlcm5hbF9wYWQsCi0gICAgICBfYWRhcHRpdmVfZGVtdXhfcGFkX3JlbW92ZV9lb3Nfc3RpY2t5LCBOVUxMKTsKLSAgR1NUX09CSkVDVF9GTEFHX1VOU0VUIChpbnRlcm5hbF9wYWQsIEdTVF9QQURfRkxBR19FT1MpOwotICAvKiBJbiBjYXNlIHRoZSBzdHJlYW0gaXMgcmVjb3ZlcmluZyBmcm9tIGEgZmx1c2hpbmcgc2VlayBpdCBpcyBhbHNvIG5lZWRlZAotICAgKiB0byByZW1vdmUgdGhlIGZsdXNoaW5nIHN0YXRlIGZyb20gdGhpcyBwYWQuIFRoZSBmbHVzaGluZyBzdGF0ZSBpcyBzZXQKLSAgICogYmVjYXVzZSBvZiB0aGUgZmxvdyByZXR1cm4gcHJvcGFnYXRpbmcgdW50aWwgdGhlIHNvdXJjZSBlbGVtZW50ICovCi0gIEdTVF9QQURfVU5TRVRfRkxVU0hJTkcgKGludGVybmFsX3BhZCk7Ci0KLSAgZ3N0X29iamVjdF91bnJlZiAoaW50ZXJuYWxfcGFkKTsKLX0KLQorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fdXBkYXRlX3NvdXJjZSAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKICAgICBjb25zdCBnY2hhciAqIHVyaSwgY29uc3QgZ2NoYXIgKiByZWZlcmVyLCBnYm9vbGVhbiByZWZyZXNoLApAQCAtMTgxMyw3ICsyMjYyLDcgQEAKICAgICBnY2hhciAqb2xkX3Byb3RvY29sLCAqbmV3X3Byb3RvY29sOwogICAgIGdjaGFyICpvbGRfdXJpOwogCi0gICAgb2xkX3VyaSA9IGdzdF91cmlfaGFuZGxlcl9nZXRfdXJpIChHU1RfVVJJX0hBTkRMRVIgKHN0cmVhbS0+c3JjKSk7CisgICAgb2xkX3VyaSA9IGdzdF91cmlfaGFuZGxlcl9nZXRfdXJpIChHU1RfVVJJX0hBTkRMRVIgKHN0cmVhbS0+dXJpX2hhbmRsZXIpKTsKICAgICBvbGRfcHJvdG9jb2wgPSBnc3RfdXJpX2dldF9wcm90b2NvbCAob2xkX3VyaSk7CiAgICAgbmV3X3Byb3RvY29sID0gZ3N0X3VyaV9nZXRfcHJvdG9jb2wgKHVyaSk7CiAKQEAgLTE4MjgsNyArMjI3Nyw4IEBACiAgICAgICBHRXJyb3IgKmVyciA9IE5VTEw7CiAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiUmUtdXNpbmcgb2xkIHNvdXJjZSBlbGVtZW50Iik7Ci0gICAgICBpZiAoIWdzdF91cmlfaGFuZGxlcl9zZXRfdXJpIChHU1RfVVJJX0hBTkRMRVIgKHN0cmVhbS0+c3JjKSwgdXJpLCAmZXJyKSkgeworICAgICAgaWYgKCFnc3RfdXJpX2hhbmRsZXJfc2V0X3VyaSAoR1NUX1VSSV9IQU5ETEVSIChzdHJlYW0tPnVyaV9oYW5kbGVyKSwgdXJpLAorICAgICAgICAgICAgICAmZXJyKSkgewogICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIkZhaWxlZCB0byByZS11c2Ugb2xkIHNvdXJjZSBlbGVtZW50OiAlcyIsCiAgICAgICAgICAgICBlcnItPm1lc3NhZ2UpOwogICAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKQEAgLTE4NDUsMjIgKzIyOTUsNDIgQEAKICAgfQogCiAgIGlmIChzdHJlYW0tPnNyYyA9PSBOVUxMKSB7CisgICAgR3N0UGFkICp1cmlfaGFuZGxlcl9zcmM7CisgICAgR3N0UGFkICpxdWV1ZV9zaW5rOworICAgIEdzdFBhZCAqcXVldWVfc3JjOworICAgIEdzdEVsZW1lbnQgKnVyaV9oYW5kbGVyOworICAgIEdzdEVsZW1lbnQgKnF1ZXVlOworICAgIEdzdFBhZExpbmtSZXR1cm4gcGFkX2xpbmtfcmV0OwogICAgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzczsKLSAgICBHc3RQYWQgKmludGVybmFsX3BhZDsKKyAgICBnY2hhciAqaW50ZXJuYWxfbmFtZSwgKmJpbl9uYW1lOwogCi0gICAgc3RyZWFtLT5zcmMgPSBnc3RfZWxlbWVudF9tYWtlX2Zyb21fdXJpIChHU1RfVVJJX1NSQywgdXJpLCBOVUxMLCBOVUxMKTsKLSAgICBpZiAoc3RyZWFtLT5zcmMgPT0gTlVMTCkgeworICAgIC8qIE91ciBzcmMgY29uc2lzdHMgb2YgYSBiaW4gY29udGFpbmluZyB1cmlfaGFuZGxlciAtPiBxdWV1ZTIgLiBUaGUKKyAgICAgKiBwdXJwb3NlIG9mIHRoZSBxdWV1ZTIgaXMgdG8gYWxsb3cgdGhlIHVyaV9oYW5kbGVyIHRvIGRvd25sb2FkIGFuCisgICAgICogZW50aXJlIGZyYWdtZW50IHdpdGhvdXQgYmxvY2tpbmcsIHNvIHdlIGNhbiBhY2N1cmF0ZWx5IG1lYXN1cmUgdGhlCisgICAgICogZG93bmxvYWQgYml0cmF0ZS4gKi8KKworICAgIHF1ZXVlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgicXVldWUyIiwgTlVMTCk7CisgICAgaWYgKHF1ZXVlID09IE5VTEwpCisgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBnX29iamVjdF9zZXQgKHF1ZXVlLCAibWF4LXNpemUtYnl0ZXMiLCAoZ3VpbnQpIFNSQ19RVUVVRV9NQVhfQllURVMsIE5VTEwpOworICAgIGdfb2JqZWN0X3NldCAocXVldWUsICJtYXgtc2l6ZS1idWZmZXJzIiwgKGd1aW50KSAwLCBOVUxMKTsKKyAgICBnX29iamVjdF9zZXQgKHF1ZXVlLCAibWF4LXNpemUtdGltZSIsIChndWludDY0KSAwLCBOVUxMKTsKKworICAgIHVyaV9oYW5kbGVyID0gZ3N0X2VsZW1lbnRfbWFrZV9mcm9tX3VyaSAoR1NUX1VSSV9TUkMsIHVyaSwgTlVMTCwgTlVMTCk7CisgICAgaWYgKHVyaV9oYW5kbGVyID09IE5VTEwpIHsKICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChkZW11eCwgQ09SRSwgTUlTU0lOR19QTFVHSU4sCiAgICAgICAgICAgKCJNaXNzaW5nIHBsdWdpbiB0byBoYW5kbGUgVVJJOiAnJXMnIiwgdXJpKSwgKE5VTEwpKTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHF1ZXVlKTsKICAgICAgIHJldHVybiBGQUxTRTsKICAgICB9CiAKLSAgICBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfR0VUX0NMQVNTIChzdHJlYW0tPnNyYyk7CisgICAgZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0dFVF9DTEFTUyAodXJpX2hhbmRsZXIpOwogCiAgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsICJjb21wcmVzcyIpKQotICAgICAgZ19vYmplY3Rfc2V0IChzdHJlYW0tPnNyYywgImNvbXByZXNzIiwgRkFMU0UsIE5VTEwpOworICAgICAgZ19vYmplY3Rfc2V0ICh1cmlfaGFuZGxlciwgImNvbXByZXNzIiwgRkFMU0UsIE5VTEwpOwogICAgIGlmIChnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCAia2VlcC1hbGl2ZSIpKQotICAgICAgZ19vYmplY3Rfc2V0IChzdHJlYW0tPnNyYywgImtlZXAtYWxpdmUiLCBUUlVFLCBOVUxMKTsKKyAgICAgIGdfb2JqZWN0X3NldCAodXJpX2hhbmRsZXIsICJrZWVwLWFsaXZlIiwgVFJVRSwgTlVMTCk7CiAgICAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsICJleHRyYS1oZWFkZXJzIikpIHsKICAgICAgIGlmIChyZWZlcmVyIHx8IHJlZnJlc2ggfHwgIWFsbG93X2NhY2hlKSB7CiAgICAgICAgIEdzdFN0cnVjdHVyZSAqZXh0cmFfaGVhZGVycyA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5ICgiaGVhZGVycyIpOwpAQCAtMTg3NiwzNyArMjM0Niw4NiBAQAogICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChleHRyYV9oZWFkZXJzLCAiQ2FjaGUtQ29udHJvbCIsIEdfVFlQRV9TVFJJTkcsCiAgICAgICAgICAgICAgICJtYXgtYWdlPTAiLCBOVUxMKTsKIAotICAgICAgICBnX29iamVjdF9zZXQgKHN0cmVhbS0+c3JjLCAiZXh0cmEtaGVhZGVycyIsIGV4dHJhX2hlYWRlcnMsIE5VTEwpOworICAgICAgICBnX29iamVjdF9zZXQgKHVyaV9oYW5kbGVyLCAiZXh0cmEtaGVhZGVycyIsIGV4dHJhX2hlYWRlcnMsIE5VTEwpOwogCiAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZSAoZXh0cmFfaGVhZGVycyk7CiAgICAgICB9IGVsc2UgewotICAgICAgICBnX29iamVjdF9zZXQgKHN0cmVhbS0+c3JjLCAiZXh0cmEtaGVhZGVycyIsIE5VTEwsIE5VTEwpOworICAgICAgICBnX29iamVjdF9zZXQgKHVyaV9oYW5kbGVyLCAiZXh0cmEtaGVhZGVycyIsIE5VTEwsIE5VTEwpOwogICAgICAgfQogICAgIH0KIAorICAgIC8qIFNvdXJjZSBiaW4gY3JlYXRpb24gKi8KKyAgICBiaW5fbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInNyY2Jpbi0lcyIsIEdTVF9QQURfTkFNRSAoc3RyZWFtLT5wYWQpKTsKKyAgICBzdHJlYW0tPnNyYyA9IGdzdF9iaW5fbmV3IChiaW5fbmFtZSk7CisgICAgZ19mcmVlIChiaW5fbmFtZSk7CisgICAgaWYgKHN0cmVhbS0+c3JjID09IE5VTEwpIHsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHF1ZXVlKTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHVyaV9oYW5kbGVyKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBnc3RfYmluX2FkZCAoR1NUX0JJTl9DQVNUIChzdHJlYW0tPnNyYyksIHF1ZXVlKTsKKyAgICBnc3RfYmluX2FkZCAoR1NUX0JJTl9DQVNUIChzdHJlYW0tPnNyYyksIHVyaV9oYW5kbGVyKTsKKworICAgIHVyaV9oYW5kbGVyX3NyYyA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkICh1cmlfaGFuZGxlciwgInNyYyIpOworICAgIHF1ZXVlX3NpbmsgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAocXVldWUsICJzaW5rIik7CisKKyAgICBwYWRfbGlua19yZXQgPQorICAgICAgICBnc3RfcGFkX2xpbmtfZnVsbCAodXJpX2hhbmRsZXJfc3JjLCBxdWV1ZV9zaW5rLAorICAgICAgICBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORyk7CisgICAgaWYgKEdTVF9QQURfTElOS19GQUlMRUQgKHBhZF9saW5rX3JldCkpIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgIkNvdWxkIG5vdCBsaW5rIHBhZHMgJXM6JXMgdG8gJXM6JXMgZm9yIHJlYXNvbiAlZCIsCisgICAgICAgICAgR1NUX0RFQlVHX1BBRF9OQU1FICh1cmlfaGFuZGxlcl9zcmMpLCBHU1RfREVCVUdfUEFEX05BTUUgKHF1ZXVlX3NpbmspLAorICAgICAgICAgIHBhZF9saW5rX3JldCk7CisgICAgICBnX29iamVjdF91bnJlZiAocXVldWVfc2luayk7CisgICAgICBnX29iamVjdF91bnJlZiAodXJpX2hhbmRsZXJfc3JjKTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHN0cmVhbS0+c3JjKTsKKyAgICAgIHN0cmVhbS0+c3JjID0gTlVMTDsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBnX29iamVjdF91bnJlZiAocXVldWVfc2luayk7CisgICAgZ19vYmplY3RfdW5yZWYgKHVyaV9oYW5kbGVyX3NyYyk7CisgICAgcXVldWVfc3JjID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHF1ZXVlLCAic3JjIik7CisgICAgc3RyZWFtLT5zcmNfc3JjcGFkID0gZ3N0X2dob3N0X3BhZF9uZXcgKCJzcmMiLCBxdWV1ZV9zcmMpOworICAgIGdfb2JqZWN0X3VucmVmIChxdWV1ZV9zcmMpOworICAgIGdzdF9lbGVtZW50X2FkZF9wYWQgKHN0cmVhbS0+c3JjLCBzdHJlYW0tPnNyY19zcmNwYWQpOworCiAgICAgZ3N0X2VsZW1lbnRfc2V0X2xvY2tlZF9zdGF0ZSAoc3RyZWFtLT5zcmMsIFRSVUUpOwogICAgIGdzdF9iaW5fYWRkIChHU1RfQklOX0NBU1QgKGRlbXV4KSwgc3RyZWFtLT5zcmMpOwogICAgIHN0cmVhbS0+c3JjX3NyY3BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzdHJlYW0tPnNyYywgInNyYyIpOwogCi0gICAgZ3N0X2dob3N0X3BhZF9zZXRfdGFyZ2V0IChHU1RfR0hPU1RfUEFEX0NBU1QgKHN0cmVhbS0+cGFkKSwKLSAgICAgICAgc3RyZWFtLT5zcmNfc3JjcGFkKTsKLQotICAgIC8qIHNldCB1cCBvdXIgaW50ZXJuYWwgcGFkIHRvIGRyb3AgYWxsIGV2ZW50cyBmcm9tCisgICAgLyogc2V0IHVwIG91ciBpbnRlcm5hbCBmbG9hdGluZyBwYWQgdG8gZHJvcCBhbGwgZXZlbnRzIGZyb20KICAgICAgKiB0aGUgaHR0cCBzcmMgd2UgZG9uJ3QgY2FyZSBhYm91dC4gT24gdGhlIGNoYWluIGZ1bmN0aW9uCi0gICAgICogd2UganVzdCBwdXNoIHRoZSBidWZmZXIgZm9yd2FyZCwgYnV0IHRoaXMgd2F5IGRhc2ggY2FuIGdldAotICAgICAqIHRoZSBmbG93IHJldHVybiBmcm9tIGRvd25zdHJlYW0gKi8KLSAgICBpbnRlcm5hbF9wYWQgPQotICAgICAgICBHU1RfUEFEX0NBU1QgKGdzdF9wcm94eV9wYWRfZ2V0X2ludGVybmFsIChHU1RfUFJPWFlfUEFEIChzdHJlYW0tPnBhZCkpKTsKLSAgICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoR1NUX1BBRF9DQVNUIChpbnRlcm5hbF9wYWQpLCBfc3JjX2NoYWluKTsKLSAgICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoR1NUX1BBRF9DQVNUIChpbnRlcm5hbF9wYWQpLCBfc3JjX2V2ZW50KTsKLSAgICAvKiBuZWVkIHRvIHNldCBxdWVyeSBvdGhlcndpc2UgZGVhZGxvY2tzIGhhcHBlbiB3aXRoIGFsbG9jYXRpb24gcXVlcmllcyAqLwotICAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChHU1RfUEFEX0NBU1QgKGludGVybmFsX3BhZCksIF9zcmNfcXVlcnkpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKGludGVybmFsX3BhZCk7CisgICAgICogd2UganVzdCBwdXNoIHRoZSBidWZmZXIgZm9yd2FyZCAqLworICAgIGludGVybmFsX25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJpbnRlcm5hbC0lcyIsIEdTVF9QQURfTkFNRSAoc3RyZWFtLT5wYWQpKTsKKyAgICBzdHJlYW0tPmludGVybmFsX3BhZCA9IGdzdF9wYWRfbmV3IChpbnRlcm5hbF9uYW1lLCBHU1RfUEFEX1NJTkspOworICAgIGdfZnJlZSAoaW50ZXJuYWxfbmFtZSk7CisgICAgZ3N0X29iamVjdF9zZXRfcGFyZW50IChHU1RfT0JKRUNUX0NBU1QgKHN0cmVhbS0+aW50ZXJuYWxfcGFkKSwKKyAgICAgICAgR1NUX09CSkVDVF9DQVNUIChkZW11eCkpOworICAgIEdTVF9PQkpFQ1RfRkxBR19TRVQgKHN0cmVhbS0+aW50ZXJuYWxfcGFkLCBHU1RfUEFEX0ZMQUdfTkVFRF9QQVJFTlQpOworICAgIGdzdF9wYWRfc2V0X2VsZW1lbnRfcHJpdmF0ZSAoc3RyZWFtLT5pbnRlcm5hbF9wYWQsIHN0cmVhbSk7CisgICAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzdHJlYW0tPmludGVybmFsX3BhZCwgVFJVRSk7CisgICAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKHN0cmVhbS0+aW50ZXJuYWxfcGFkLCBfc3JjX2NoYWluKTsKKyAgICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQsIF9zcmNfZXZlbnQpOworICAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChzdHJlYW0tPmludGVybmFsX3BhZCwgX3NyY19xdWVyeSk7CisKKyAgICBpZiAoZ3N0X3BhZF9saW5rX2Z1bGwgKHN0cmVhbS0+c3JjX3NyY3BhZCwgc3RyZWFtLT5pbnRlcm5hbF9wYWQsCisgICAgICAgICAgICBHU1RfUEFEX0xJTktfQ0hFQ0tfTk9USElORykgIT0gR1NUX1BBRF9MSU5LX09LKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkZhaWxlZCB0byBsaW5rIGludGVybmFsIHBhZCIpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIHN0cmVhbS0+dXJpX2hhbmRsZXIgPSB1cmlfaGFuZGxlcjsKKyAgICBzdHJlYW0tPnF1ZXVlID0gcXVldWU7CiAgIH0KICAgcmV0dXJuIFRSVUU7CiB9CiAKLS8qIG11c3QgYmUgY2FsbGVkIHdpdGggdGhlIHN0cmVhbSdzIGZyYWdtZW50X2Rvd25sb2FkX2xvY2sgKi8KKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbi4KKyAqIENhbiB0ZW1wb3JhcmlseSByZWxlYXNlIG1hbmlmZXN0X2xvY2sKKyAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfdXJpIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgY29uc3QgZ2NoYXIgKiB1cmksIGdpbnQ2NCBzdGFydCwKQEAgLTE5MTYsMTkgKzI0MzUsMjEgQEAKICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJEb3dubG9hZGluZyB1cmk6ICVzLCByYW5nZTolIiBHX0dJTlQ2NF9GT1JNQVQKICAgICAgICIgLSAlIiBHX0dJTlQ2NF9GT1JNQVQsIHVyaSwgc3RhcnQsIGVuZCk7CiAKLSAgc3RyZWFtLT5kb3dubG9hZF9maW5pc2hlZCA9IEZBTFNFOwotCiAgIGlmICghZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV91cGRhdGVfc291cmNlIChzdHJlYW0sIHVyaSwgTlVMTCwgRkFMU0UsIFRSVUUpKSB7Ci0gICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICByZXQgPSBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRVJST1I7Ci0gICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICAgIHJldHVybiByZXQ7CiAgIH0KIAogICBpZiAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzdHJlYW0tPnNyYywKICAgICAgICAgICBHU1RfU1RBVEVfUkVBRFkpICE9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkgewogICAgIGlmIChzdGFydCAhPSAwIHx8IGVuZCAhPSAtMSkgewotICAgICAgaWYgKCFnc3RfZWxlbWVudF9zZW5kX2V2ZW50IChzdHJlYW0tPnNyYywgZ3N0X2V2ZW50X25ld19zZWVrICgxLjAsCisgICAgICAvKiBIVFRQIHJhbmdlcyBhcmUgaW5jbHVzaXZlLCBHU3RyZWFtZXIgc2VnbWVudHMgYXJlIGV4Y2x1c2l2ZSBmb3IgdGhlCisgICAgICAgKiBzdG9wIHBvc2l0aW9uICovCisgICAgICBpZiAoZW5kICE9IC0xKQorICAgICAgICBlbmQgKz0gMTsKKyAgICAgIC8qIFNlbmQgdGhlIHNlZWsgZXZlbnQgdG8gdGhlIHVyaV9oYW5kbGVyLCBhcyB0aGUgb3RoZXIgcGlwZWxpbmUgZWxlbWVudHMKKyAgICAgICAqIGNhbid0IGhhbmRsZSBpdCB3aGVuIFJFQURZLiAqLworICAgICAgaWYgKCFnc3RfZWxlbWVudF9zZW5kX2V2ZW50IChzdHJlYW0tPnVyaV9oYW5kbGVyLCBnc3RfZXZlbnRfbmV3X3NlZWsgKDEuMCwKICAgICAgICAgICAgICAgICAgIEdTVF9GT1JNQVRfQllURVMsIChHc3RTZWVrRmxhZ3MpIEdTVF9TRUVLX0ZMQUdfRkxVU0gsCiAgICAgICAgICAgICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgc3RhcnQsIEdTVF9TRUVLX1RZUEVfU0VULCBlbmQpKSkgewogCkBAIC0xOTQxLDQ1ICsyNDYyLDkxIEBACiAgICAgICB9CiAgICAgfQogCi0gICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICBpZiAoR19MSUtFTFkgKHN0cmVhbS0+bGFzdF9yZXQgPT0gR1NUX0ZMT1dfT0spKSB7CiAgICAgICBzdHJlYW0tPmRvd25sb2FkX3N0YXJ0X3RpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKTsKICAgICAgIHN0cmVhbS0+ZG93bmxvYWRfY2h1bmtfc3RhcnRfdGltZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpOwotICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwotICAgICAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudCAoc3RyZWFtLT5zcmMpOworCisgICAgICAvKiBzcmMgZWxlbWVudCBpcyBpbiBzdGF0ZSBSRUFEWS4gQmVmb3JlIHdlIHN0YXJ0IGl0LCB3ZSByZXNldAorICAgICAgICogZG93bmxvYWRfZmluaXNoZWQKKyAgICAgICAqLwogICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgIHN0cmVhbS0+ZG93bmxvYWRfZmluaXNoZWQgPSBGQUxTRTsKKyAgICAgIHN0cmVhbS0+ZG93bmxvYWRpbmdfZmlyc3RfYnVmZmVyID0gVFJVRTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKworICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworCisgICAgICBpZiAoIWdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQgKHN0cmVhbS0+c3JjKSkgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiQ291bGQgbm90IHN5bmMgc3RhdGUgZm9yIHNyYyBlbGVtZW50Iik7CisgICAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisgICAgICAgIHJldCA9IHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19FUlJPUjsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KIAogICAgICAgLyogd2FpdCBmb3IgdGhlIGZyYWdtZW50IHRvIGJlIGNvbXBsZXRlbHkgZG93bmxvYWRlZCAqLwogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsCiAgICAgICAgICAgIldhaXRpbmcgZm9yIGZyYWdtZW50IGRvd25sb2FkIHRvIGZpbmlzaDogJXMiLCB1cmkpOwotICAgICAgd2hpbGUgKCFzdHJlYW0tPmRlbXV4LT5jYW5jZWxsZWQgJiYgIXN0cmVhbS0+ZG93bmxvYWRfZmluaXNoZWQpIHsKKworICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworICAgICAgICByZXQgPSBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgIHJldHVybiByZXQ7CisgICAgICB9CisgICAgICB3aGlsZSAoIXN0cmVhbS0+Y2FuY2VsbGVkICYmICFzdHJlYW0tPmRvd25sb2FkX2ZpbmlzaGVkKSB7CiAgICAgICAgIGdfY29uZF93YWl0ICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9jb25kLAogICAgICAgICAgICAgJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgICAgICB9CisgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKKyAgICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgICAgICByZXQgPSBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgICAgcmV0dXJuIHJldDsKKyAgICAgIH0KKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKwogICAgICAgcmV0ID0gc3RyZWFtLT5sYXN0X3JldDsKIAogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJGcmFnbWVudCBkb3dubG9hZCBmaW5pc2hlZDogJXMgJWQgJXMiLAogICAgICAgICAgIHVyaSwgc3RyZWFtLT5sYXN0X3JldCwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHN0cmVhbS0+bGFzdF9yZXQpKTsKICAgICB9Ci0gICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICB9IGVsc2UgewotICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgICAgaWYgKHN0cmVhbS0+bGFzdF9yZXQgPT0gR1NUX0ZMT1dfT0spCiAgICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfQ1VTVE9NX0VSUk9SOwogICAgIHJldCA9IEdTVF9GTE9XX0NVU1RPTV9FUlJPUjsKLSAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CiAgIH0KIAotICAvKiBmbHVzaCB0aGUgcHJveHlwYWRzIHNvIHRoYXQgdGhlIEVPUyBzdGF0ZSBpcyByZXNldCAqLwotICBnc3RfcGFkX3B1c2hfZXZlbnQgKHN0cmVhbS0+c3JjX3NyY3BhZCwgZ3N0X2V2ZW50X25ld19mbHVzaF9zdGFydCAoKSk7Ci0gIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5zcmNfc3JjcGFkLCBnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0b3AgKFRSVUUpKTsKKyAgLyogY2hhbmdpbmcgc3JjIGVsZW1lbnQgc3RhdGUgbWlnaHQgdHJ5IHRvIGpvaW4gdGhlIHN0cmVhbWluZyB0aHJlYWQsIHNvCisgICAqIHdlIG11c3Qgbm90IGhvbGQgdGhlIG1hbmlmZXN0IGxvY2suCisgICAqLworICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiAKICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzdHJlYW0tPnNyYywgR1NUX1NUQVRFX1JFQURZKTsKLSAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9jbGVhcl9lb3NfYW5kX2ZsdXNoX3N0YXRlIChzdHJlYW0pOworCisgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CisgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICByZXQgPSBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgIHJldHVybiByZXQ7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCisgIC8qIGRlYWN0aXZhdGUgYW5kIHJlYWN0aXZhdGUgb3VyIGdob3N0cGFkIHRvIG1ha2UgaXQgZnJlc2ggZm9yIGEgbmV3CisgICAqIHN0cmVhbSAqLworICBnc3RfcGFkX3NldF9hY3RpdmUgKHN0cmVhbS0+aW50ZXJuYWxfcGFkLCBGQUxTRSk7CisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3RyZWFtLT5pbnRlcm5hbF9wYWQsIFRSVUUpOwogCiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbi4KKyAqIENhbiB0ZW1wb3JhcmlseSByZWxlYXNlIG1hbmlmZXN0X2xvY2sKKyAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfaGVhZGVyX2ZyYWdtZW50IChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICoKICAgICBzdHJlYW0pCkBAIC0yMDAwLDcgKzI1NjcsNyBAQAogICB9CiAKICAgLyogY2hlY2sgaWYgd2UgaGF2ZSBhbiBpbmRleCAqLwotICBpZiAoIWRlbXV4LT5jYW5jZWxsZWQgJiYgcmV0ID09IEdTVF9GTE9XX09LKSB7ICAgICAgICAvKiBUT0RPIGNoZWNrIGZvciBvdGhlciB2YWxpZCB0eXBlcyAqLworICBpZiAocmV0ID09IEdTVF9GTE9XX09LKSB7ICAgICAvKiBUT0RPIGNoZWNrIGZvciBvdGhlciB2YWxpZCB0eXBlcyAqLwogCiAgICAgaWYgKHN0cmVhbS0+ZnJhZ21lbnQuaW5kZXhfdXJpICE9IE5VTEwpIHsKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LApAQCAtMjAxOCw2ICsyNTg1LDkgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuLgorICogQ2FuIHRlbXBvcmFyaWx5IHJlbGVhc2UgbWFuaWZlc3RfbG9jaworICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9kb3dubG9hZF9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKIHsKQEAgLTIwMjUsMTEgKzI1OTUsOSBAQAogICBnY2hhciAqdXJsID0gTlVMTDsKICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKIAotICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOwogICBzdHJlYW0tPnN0YXJ0aW5nX2ZyYWdtZW50ID0gVFJVRTsKICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX09LOwogICBzdHJlYW0tPmZpcnN0X2ZyYWdtZW50X2J1ZmZlciA9IFRSVUU7Ci0gIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKIAogICBpZiAoc3RyZWFtLT5mcmFnbWVudC51cmkgPT0gTlVMTCAmJiBzdHJlYW0tPmZyYWdtZW50LmhlYWRlcl91cmkgPT0gTlVMTCAmJgogICAgICAgc3RyZWFtLT5mcmFnbWVudC5pbmRleF91cmkgPT0gTlVMTCkKQEAgLTIwMzcsMTAgKzI2MDUsMTAgQEAKIAogICBpZiAoc3RyZWFtLT5uZWVkX2hlYWRlcikgewogICAgIHJldCA9IGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfaGVhZGVyX2ZyYWdtZW50IChzdHJlYW0pOwotICAgIHN0cmVhbS0+bmVlZF9oZWFkZXIgPSBGQUxTRTsKICAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7CiAgICAgICByZXR1cm4gcmV0OwogICAgIH0KKyAgICBzdHJlYW0tPm5lZWRfaGVhZGVyID0gRkFMU0U7CiAgIH0KIAogICB1cmwgPSBzdHJlYW0tPmZyYWdtZW50LnVyaTsKQEAgLTIwNTIsNyArMjYyMCwxNCBAQAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRnJhZ21lbnQgZG93bmxvYWQgcmVzdWx0OiAlZCAlcyIsCiAgICAgICAgIHN0cmVhbS0+bGFzdF9yZXQsIGdzdF9mbG93X2dldF9uYW1lIChzdHJlYW0tPmxhc3RfcmV0KSk7CiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgICAgLyogVE9ETyBjaGVjayBpZiB3ZSBhcmUgdHJ1bHkgc3RvcGluZyAqLworICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgICByZXR1cm4gcmV0OworICAgICAgfQorICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCisgICAgICAvKiBUT0RPIGNoZWNrIGlmIHdlIGFyZSB0cnVseSBzdG9wcGluZyAqLwogICAgICAgaWYgKHJldCA9PSBHU1RfRkxPV19DVVNUT01fRVJST1IgJiYgZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KSkgewogICAgICAgICBpZiAoKytzdHJlYW0tPmRvd25sb2FkX2Vycm9yX2NvdW50IDw9IE1BWF9ET1dOTE9BRF9FUlJPUl9DT1VOVCkgewogICAgICAgICAgIC8qIGxvb2tzIGxpa2UgdGhlcmUgaXMgbm8gd2F5IG9mIGtub3dpbmcgd2hlbiBhIGxpdmUgc3RyZWFtIGhhcyBlbmRlZApAQCAtMjA4NSw2OCArMjY2MCw4MSBAQAogICB9CiB9CiAKKy8qIHRoaXMgZnVuY3Rpb24gd2lsbCB0YWtlIHRoZSBtYW5pZmVzdF9sb2NrIGFuZCB3aWxsIGtlZXAgaXQgdW50aWwgdGhlIGVuZC4KKyAqIEl0IHdpbGwgcmVsZWFzZSBpdCB0ZW1wb3JhcmlseSBvbmx5IHdoZW4gZ29pbmcgdG8gc2xlZXAuCisgKiBFdmVyeSB0aW1lIGl0IHRha2VzIHRoZSBtYW5pZmVzdF9sb2NrLCBpdCB3aWxsIGNoZWNrIGZvciBjYW5jZWxsZWQgY29uZGl0aW9uCisgKi8KIHN0YXRpYyB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2Rvd25sb2FkX2xvb3AgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pCiB7CiAgIEdzdEFkYXB0aXZlRGVtdXggKmRlbXV4ID0gc3RyZWFtLT5kZW11eDsKLSAgZ3VpbnQ2NCBuZXh0X2Rvd25sb2FkID0gMDsKKyAgZ3VpbnQ2NCBuZXh0X2Rvd25sb2FkID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCk7CiAgIEdzdEZsb3dSZXR1cm4gcmV0OwogICBnYm9vbGVhbiBsaXZlOwogCiAgIEdTVF9MT0dfT0JKRUNUIChzdHJlYW0tPnBhZCwgImRvd25sb2FkIGxvb3Agc3RhcnQiKTsKIAorICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCisgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgIGdvdG8gY2FuY2VsbGVkOworICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKwogICAvKiBDaGVjayBpZiB3ZSdyZSBkb25lIHdpdGggb3VyIHNlZ21lbnQgKi8KKyAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOwogICBpZiAoZGVtdXgtPnNlZ21lbnQucmF0ZSA+IDApIHsKICAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGRlbXV4LT5zZWdtZW50LnN0b3ApCiAgICAgICAgICYmIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbiA+PSBzdHJlYW0tPnNlZ21lbnQuc3RvcCkgeworICAgICAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfVU5MT0NLIChkZW11eCk7CiAgICAgICByZXQgPSBHU1RfRkxPV19FT1M7CiAgICAgICBnc3RfdGFza19zdG9wIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOwogICAgICAgZ290byBlbmRfb2ZfbWFuaWZlc3Q7CiAgICAgfQogICB9IGVsc2UgewogICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZGVtdXgtPnNlZ21lbnQuc3RhcnQpCi0gICAgICAgICYmIHN0cmVhbS0+c2VnbWVudC5wb3NpdGlvbiA8IHN0cmVhbS0+c2VnbWVudC5zdGFydCkgeworICAgICAgICAmJiBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24gPD0gc3RyZWFtLT5zZWdtZW50LnN0YXJ0KSB7CisgICAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgIHJldCA9IEdTVF9GTE9XX0VPUzsKICAgICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CiAgICAgICBnb3RvIGVuZF9vZl9tYW5pZmVzdDsKICAgICB9CiAgIH0KLQotICBHU1RfT0JKRUNUX0xPQ0sgKGRlbXV4KTsKLSAgaWYgKGRlbXV4LT5jYW5jZWxsZWQpIHsKLSAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7Ci0gICAgZ290byBjYW5jZWxsZWQ7Ci0gIH0KKyAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfVU5MT0NLIChkZW11eCk7CiAKICAgLyogQ2xlYW51cCBvbGQgc3RyZWFtcyBpZiBhbnkgKi8KICAgaWYgKEdfVU5MSUtFTFkgKGRlbXV4LT5wcml2LT5vbGRfc3RyZWFtcyAhPSBOVUxMKSkgewogICAgIEdMaXN0ICpvbGRfc3RyZWFtcyA9IGRlbXV4LT5wcml2LT5vbGRfc3RyZWFtczsKICAgICBkZW11eC0+cHJpdi0+b2xkX3N0cmVhbXMgPSBOVUxMOwotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChkZW11eCk7CiAKLSAgICAvKiBOZWVkIHRvIHVubG9jayBhcyBpdCBtaWdodCBwb3N0IG1lc3NhZ2VzIHRvIHRoZSBidXMgKi8KICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkNsZWFuaW5nIHVwIG9sZCBzdHJlYW1zIik7CiAgICAgZ19saXN0X2ZyZWVfZnVsbCAob2xkX3N0cmVhbXMsCiAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9mcmVlKTsKICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkNsZWFuaW5nIHVwIG9sZCBzdHJlYW1zIChkb25lKSIpOwotICB9IGVsc2UgewotICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChkZW11eCk7CisKKyAgICAvKiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2ZyZWUgaGFkIHRlbXBvcmFyaWx5IHJlbGVhc2VkIHRoZSBtYW5pZmVzdF9sb2NrLgorICAgICAqIFJlY2hlY2sgdGhlIGNhbmNlbGxlZCBmbGFnLgorICAgICAqLworICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgeworICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgZ290byBjYW5jZWxsZWQ7CisgICAgfQorICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgfQogCi0gIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CiAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPnJlc3RhcnRfZG93bmxvYWQpKSB7Ci0gICAgR3N0U2VnbWVudCBzZWdtZW50OwogICAgIEdzdEV2ZW50ICpzZWdfZXZlbnQ7Ci0gICAgR3N0Q2xvY2tUaW1lIGN1ciwgdHM7CisgICAgR3N0Q2xvY2tUaW1lIGN1ciwgdHMgPSAwOwogICAgIGdpbnQ2NCBwb3M7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwKICAgICAgICAgIkFjdGl2YXRpbmcgc3RyZWFtIGR1ZSB0byByZWNvbmZpZ3VyZSBldmVudCIpOwogCi0gICAgY3VyID0gdHMgPQotICAgICAgICBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSAoJnN0cmVhbS0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAotICAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24pOwotCiAgICAgaWYgKGdzdF9wYWRfcGVlcl9xdWVyeV9wb3NpdGlvbiAoc3RyZWFtLT5wYWQsIEdTVF9GT1JNQVRfVElNRSwgJnBvcykpIHsKICAgICAgIHRzID0gKEdzdENsb2NrVGltZSkgcG9zOwogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJEb3duc3RyZWFtIHBvc2l0aW9uOiAlIgpAQCAtMjE3MSwxMiArMjc1OSwxNiBAQAogICAgICAgfQogICAgIH0KIAorICAgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX0xPQ0sgKGRlbXV4KTsKKyAgICBjdXIgPQorICAgICAgICBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSAoJnN0cmVhbS0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgICBzdHJlYW0tPnNlZ21lbnQucG9zaXRpb24pOworCiAgICAgLyogd2UgbWlnaHQgaGF2ZSBhbHJlYWR5IHB1c2hlZCB0aGlzIGRhdGEgKi8KICAgICB0cyA9IE1BWCAodHMsIGN1cik7CiAKICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlJlc3RhcnRpbmcgc3RyZWFtIGF0ICIKICAgICAgICAgInBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyAodHMpKTsKLSAgICBnc3Rfc2VnbWVudF9jb3B5X2ludG8gKCZkZW11eC0+c2VnbWVudCwgJnNlZ21lbnQpOwogCiAgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEICh0cykpIHsKICAgICAgIEdzdENsb2NrVGltZSBvZmZzZXQsIHBlcmlvZF9zdGFydDsKQEAgLTIxODYsOSArMjc3OCwxMCBAQAogICAgICAgcGVyaW9kX3N0YXJ0ID0gZ3N0X2FkYXB0aXZlX2RlbXV4X2dldF9wZXJpb2Rfc3RhcnRfdGltZSAoZGVtdXgpOwogCiAgICAgICAvKiBUT0RPIGNoZWNrIHJldHVybiAqLwotICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9zZWVrIChkZW11eCwgc3RyZWFtLCB0cyk7CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NlZWsgKGRlbXV4LCBzdHJlYW0sIGRlbXV4LT5zZWdtZW50LnJhdGUgPj0gMCwKKyAgICAgICAgICAwLCB0cywgJnRzKTsKIAotICAgICAgc2VnbWVudC5wb3NpdGlvbiA9IHRzIC0gcGVyaW9kX3N0YXJ0ICsgb2Zmc2V0OworICAgICAgc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uID0gdHMgLSBwZXJpb2Rfc3RhcnQgKyBvZmZzZXQ7CiAgICAgfQogCiAgICAgLyogVGhlIHN0cmVhbSdzIHNlZ21lbnQgaXMgc3RpbGwgY29ycmVjdCBleGNlcHQgZm9yCkBAIC0yMTk2LDE5ICsyNzg5LDE0IEBACiAgICAgICogdXBkYXRlZCBwb3NpdGlvbiAqLwogICAgIHNlZ19ldmVudCA9IGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnN0cmVhbS0+c2VnbWVudCk7CiAgICAgZ3N0X2V2ZW50X3NldF9zZXFudW0gKHNlZ19ldmVudCwgZGVtdXgtPnByaXYtPnNlZ21lbnRfc2VxbnVtKTsKKyAgICBHU1RfQURBUFRJVkVfREVNVVhfU0VHTUVOVF9VTkxPQ0sgKGRlbXV4KTsKKwogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiU2VuZGluZyByZXN0YXJ0IHNlZ21lbnQ6ICUiCiAgICAgICAgIEdTVF9QVFJfRk9STUFULCBzZWdfZXZlbnQpOwogICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIHNlZ19ldmVudCk7CiAKICAgICBzdHJlYW0tPnJlc3RhcnRfZG93bmxvYWQgPSBGQUxTRTsKICAgfQotICBHU1RfT0JKRUNUX0xPQ0sgKGRlbXV4KTsKLSAgaWYgKGRlbXV4LT5jYW5jZWxsZWQpIHsKLSAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7Ci0gICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwotICAgIGdvdG8gY2FuY2VsbGVkOwotICB9Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChkZW11eCk7CiAKICAgbGl2ZSA9IGdzdF9hZGFwdGl2ZV9kZW11eF9pc19saXZlIChkZW11eCk7CiAKQEAgLTIyMjEsMzIgKzI4MDksNTQgQEAKICAgICBpZiAobGl2ZSkgewogICAgICAgZ2ludDY0IHdhaXRfdGltZSA9CiAgICAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9nZXRfZnJhZ21lbnRfd2FpdGluZ190aW1lIChkZW11eCwgc3RyZWFtKTsKLSAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKLSAgICAgIGlmICh3YWl0X3RpbWUgPiAwKQotICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2Rvd25sb2FkX3dhaXQgKHN0cmVhbSwgd2FpdF90aW1lKTsKLSAgICB9IGVsc2UgewotICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwotICAgIH0KKyAgICAgIGlmICh3YWl0X3RpbWUgPiAwKSB7CisgICAgICAgIGdpbnQ2NCBlbmRfdGltZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpICsgd2FpdF90aW1lIC8gR1NUX1VTRUNPTkQ7CiAKLSAgICBHU1RfT0JKRUNUX0xPQ0sgKGRlbXV4KTsKLSAgICBpZiAoZGVtdXgtPmNhbmNlbGxlZCkgewotICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0ZMVVNISU5HOwotICAgICAgZ290byBjYW5jZWxsZWQ7CisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRG93bmxvYWQgd2FpdGluZyBmb3IgJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAod2FpdF90aW1lKSk7CisKKyAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOworCisgICAgICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICAgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgICAgICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgICAgZ290byBjYW5jZWxsZWQ7CisgICAgICAgIH0KKyAgICAgICAgZ19jb25kX3dhaXRfdW50aWwgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2NvbmQsCisgICAgICAgICAgICAmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrLCBlbmRfdGltZSk7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIkRvd25sb2FkIGZpbmlzaGVkIHdhaXRpbmciKTsKKworICAgICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCisgICAgICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPmNhbmNlbGxlZCkpIHsKKyAgICAgICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgICAgIGdvdG8gY2FuY2VsbGVkOworICAgICAgICB9CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgIH0KICAgICB9Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRlbXV4KTsKIAogICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19PSzsKKwogICAgIG5leHRfZG93bmxvYWQgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKTsKICAgICByZXQgPSBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2Rvd25sb2FkX2ZyYWdtZW50IChzdHJlYW0pOwogCi0gICAgR1NUX09CSkVDVF9MT0NLIChkZW11eCk7Ci0gICAgaWYgKGRlbXV4LT5jYW5jZWxsZWQpIHsKLSAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKLSAgICAgIGdvdG8gY2FuY2VsbGVkOworICAgIGlmIChyZXQgPT0gR1NUX0ZMT1dfRkxVU0hJTkcpIHsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisgICAgICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5jYW5jZWxsZWQpKSB7CisgICAgICAgIHN0cmVhbS0+bGFzdF9yZXQgPSBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgICBnb3RvIGNhbmNlbGxlZDsKKyAgICAgIH0KKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKICAgICB9Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRlbXV4KTsKIAotICAgIEdTVF9NQU5JRkVTVF9MT0NLIChkZW11eCk7CiAgIH0gZWxzZSB7CiAgICAgc3RyZWFtLT5sYXN0X3JldCA9IHJldDsKICAgfQpAQCAtMjI1OSw4ICsyODY5LDcgQEAKICAgICAgIC8qIHdlIHB1c2ggdGhlIEVPUyBhZnRlciByZWxlYXNpbmcgdGhlIG9iamVjdCBsb2NrICovCiAgICAgICBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X2lzX2xpdmUgKGRlbXV4KSkgewogICAgICAgICBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV93YWl0X21hbmlmZXN0X3VwZGF0ZSAoZGVtdXgsIHN0cmVhbSkpIHsKLSAgICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7Ci0gICAgICAgICAgcmV0dXJuOworICAgICAgICAgIGdvdG8gZW5kOwogICAgICAgICB9CiAgICAgICAgIGdzdF90YXNrX3N0b3AgKHN0cmVhbS0+ZG93bmxvYWRfdGFzayk7CiAgICAgICB9IGVsc2UgewpAQCAtMjMwMSw3ICsyOTEwLDYgQEAKICAgICAgICAgZ2Jvb2xlYW4gaXNfbGl2ZSA9IGdzdF9hZGFwdGl2ZV9kZW11eF9pc19saXZlIChkZW11eCk7CiAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsICJFcnJvciB3aGlsZSBkb3dubG9hZGluZyBmcmFnbWVudCIpOwogICAgICAgICBpZiAoKytzdHJlYW0tPmRvd25sb2FkX2Vycm9yX2NvdW50ID4gTUFYX0RPV05MT0FEX0VSUk9SX0NPVU5UKSB7Ci0gICAgICAgICAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogICAgICAgICAgIGdvdG8gZG93bmxvYWRfZXJyb3I7CiAgICAgICAgIH0KIApAQCAtMjMxMywxMyArMjkyMSwxMiBAQAogICAgICAgICAgKiBhIGJpdCB0byBub3QgZmxvb2QgdGhlIHNlcnZlciAqLwogICAgICAgICBpZiAoc3RyZWFtLT5kb3dubG9hZF9lcnJvcl9jb3VudCA9PSAxICYmICFpc19saXZlKSB7CiAgICAgICAgICAgLyogVE9ETyBobHNkZW11eCBoYWQgbW9yZSBvcHRpb25zIHRvIHRoaXMgZnVuY3Rpb24gKGJvb2xlYW4gYW5kIGVycikgKi8KLSAgICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKICAgICAgICAgICBpZiAoZ3N0X2FkYXB0aXZlX2RlbXV4X3VwZGF0ZV9tYW5pZmVzdCAoZGVtdXgpID09IEdTVF9GTE9XX09LKSB7CiAgICAgICAgICAgICAvKiBSZXRyeSBpbW1lZGlhdGVseSwgdGhlIHBsYXlsaXN0IGFjdHVhbGx5IGhhcyBjaGFuZ2VkICovCiAgICAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIlVwZGF0ZWQgdGhlIHBsYXlsaXN0Iik7Ci0gICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBnb3RvIGVuZDsKICAgICAgICAgICB9Ci0gICAgICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgICAgICAgfQogCiAgICAgICAgIC8qIFdhaXQgaGFsZiB0aGUgZnJhZ21lbnQgZHVyYXRpb24gYmVmb3JlIHJldHJ5aW5nICovCkBAIC0yMzI4LDQwICsyOTM1LDUzIEBACiAgICAgICAgICAgICAoc3RyZWFtLT5mcmFnbWVudC5kdXJhdGlvbiwgR19VU0VDX1BFUl9TRUMsIDIgKiBHU1RfU0VDT05EKTsKIAogICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKICAgICAgICAgZ19tdXRleF9sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLSAgICAgICAgaWYgKGRlbXV4LT5jYW5jZWxsZWQpIHsKKyAgICAgICAgaWYgKEdfVU5MSUtFTFkgKHN0cmVhbS0+Y2FuY2VsbGVkKSkgewogICAgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKLSAgICAgICAgICByZXR1cm47CisgICAgICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKyAgICAgICAgICBzdHJlYW0tPmxhc3RfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CisgICAgICAgICAgZ290byBjYW5jZWxsZWQ7CiAgICAgICAgIH0KICAgICAgICAgZ19jb25kX3dhaXRfdW50aWwgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2NvbmQsCiAgICAgICAgICAgICAmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrLCBuZXh0X2Rvd25sb2FkKTsKICAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworCiAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiUmV0cnlpbmcgbm93Iik7CiAKKyAgICAgICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKKworICAgICAgICBnX211dGV4X2xvY2sgKCZzdHJlYW0tPmZyYWdtZW50X2Rvd25sb2FkX2xvY2spOworICAgICAgICBpZiAoR19VTkxJS0VMWSAoc3RyZWFtLT5jYW5jZWxsZWQpKSB7CisgICAgICAgICAgc3RyZWFtLT5sYXN0X3JldCA9IEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9sb2NrKTsKKyAgICAgICAgICBnb3RvIGNhbmNlbGxlZDsKKyAgICAgICAgfQorICAgICAgICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7CisKICAgICAgICAgLyogUmVmZXRjaCB0aGUgcGxheWxpc3Qgbm93IGFmdGVyIHdlIHdhaXRlZCAqLwogICAgICAgICBpZiAoIWlzX2xpdmUKICAgICAgICAgICAgICYmIGdzdF9hZGFwdGl2ZV9kZW11eF91cGRhdGVfbWFuaWZlc3QgKGRlbXV4KSA9PSBHU1RfRkxPV19PSykgewogICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiVXBkYXRlZCB0aGUgcGxheWxpc3QiKTsKICAgICAgICAgfQotICAgICAgICByZXR1cm47CisgICAgICAgIGdvdG8gZW5kOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgIH0KIAotICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiBlbmRfb2ZfbWFuaWZlc3Q6CiAgIGlmIChHX1VOTElLRUxZIChyZXQgPT0gR1NUX0ZMT1dfRU9TKSkgewogICAgIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fcHVzaF9ldmVudCAoc3RyZWFtLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7CiAgIH0KIAogZW5kOgorICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CiAgIEdTVF9MT0dfT0JKRUNUIChzdHJlYW0tPnBhZCwgImRvd25sb2FkIGxvb3AgZW5kIik7CiAgIHJldHVybjsKIAogY2FuY2VsbGVkOgogICB7CiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJTdHJlYW0gaGFzIGJlZW4gY2FuY2VsbGVkIik7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRlbXV4KTsKICAgICBnb3RvIGVuZDsKICAgfQogZG93bmxvYWRfZXJyb3I6CkBAIC0yMzg5LDcgKzMwMDksMTUgQEAKICAgICAgICAgICAiRG93bmxvYWQgZXJyb3I6IENvdWxkbid0IGRvd25sb2FkIGZyYWdtZW50cywgdG9vIG1hbnkgZmFpbHVyZXMiKTsKICAgICB9CiAKKyAgICBnc3RfdGFza19zdG9wIChzdHJlYW0tPmRvd25sb2FkX3Rhc2spOworICAgIGlmIChzdHJlYW0tPnNyYykgeworICAgICAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzdHJlYW0tPnNyYywgR1NUX1NUQVRFX05VTEwpOworICAgICAgZ3N0X2Jpbl9yZW1vdmUgKEdTVF9CSU5fQ0FTVCAoZGVtdXgpLCBzdHJlYW0tPnNyYyk7CisgICAgICBzdHJlYW0tPnNyYyA9IE5VTEw7CisgICAgfQorCiAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVF9DQVNUIChkZW11eCksIG1zZyk7CisKICAgICBnb3RvIGVuZDsKICAgfQogfQpAQCAtMjM5Nyw2ICszMDI1LDcgQEAKIHN0YXRpYyB2b2lkCiBnc3RfYWRhcHRpdmVfZGVtdXhfdXBkYXRlc19sb29wIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CisgIGdpbnQ2NCBuZXh0X3VwZGF0ZTsKICAgR3N0QWRhcHRpdmVEZW11eENsYXNzICprbGFzcyA9IEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKGRlbXV4KTsKIAogICAvKiBMb29wIGZvciB1cGRhdGluZyBvZiB0aGUgcGxheWxpc3QuIFRoaXMgcGVyaW9kaWNhbGx5IGNoZWNrcyBpZgpAQCAtMjQwNiw4ICszMDM1LDEwIEBACiAgIC8qIGJsb2NrIHVudGlsIHRoZSBuZXh0IHNjaGVkdWxlZCB1cGRhdGUgb3IgdGhlIHNpZ25hbCB0byBxdWl0IHRoaXMgdGhyZWFkICovCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiU3RhcnRlZCB1cGRhdGVzIHRhc2siKTsKIAotICBkZW11eC0+cHJpdi0+bmV4dF91cGRhdGUgPQotICAgICAgZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgKyBrbGFzcy0+Z2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoZGVtdXgpOworICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCisgIG5leHRfdXBkYXRlID0gZ19nZXRfbW9ub3RvbmljX3RpbWUgKCkgKworICAgICAga2xhc3MtPmdldF9tYW5pZmVzdF91cGRhdGVfaW50ZXJ2YWwgKGRlbXV4KTsKIAogICAvKiBVcGRhdGluZyBwbGF5bGlzdCBvbmx5IG5lZWRlZCBmb3IgbGl2ZSBwbGF5bGlzdHMgKi8KICAgd2hpbGUgKGdzdF9hZGFwdGl2ZV9kZW11eF9pc19saXZlIChkZW11eCkpIHsKQEAgLTI0MTYsNjIgKzMwNDcsNzMgQEAKICAgICAvKiBXYWl0IGhlcmUgdW50aWwgd2Ugc2hvdWxkIGRvIHRoZSBuZXh0IHVwZGF0ZSBvciB3ZSdyZSBjYW5jZWxsZWQgKi8KICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIldhaXQgZm9yIG5leHQgcGxheWxpc3QgdXBkYXRlIik7CiAKKyAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKICAgICBnX211dGV4X2xvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKICAgICBpZiAoZGVtdXgtPnByaXYtPnN0b3BfdXBkYXRlc190YXNrKSB7CiAgICAgICBnX211dGV4X3VubG9jayAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2xvY2spOwogICAgICAgZ290byBxdWl0OwogICAgIH0KICAgICBnX2NvbmRfd2FpdF91bnRpbCAoJmRlbXV4LT5wcml2LT51cGRhdGVzX3RpbWVkX2NvbmQsCi0gICAgICAgICZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrLCBkZW11eC0+cHJpdi0+bmV4dF91cGRhdGUpOworICAgICAgICAmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jaywgbmV4dF91cGRhdGUpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jayk7CisKKyAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOworCisgICAgZ19tdXRleF9sb2NrICgmZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGltZWRfbG9jayk7CiAgICAgaWYgKGRlbXV4LT5wcml2LT5zdG9wX3VwZGF0ZXNfdGFzaykgewogICAgICAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKKyAgICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAgIGdvdG8gcXVpdDsKICAgICB9CiAgICAgZ19tdXRleF91bmxvY2sgKCZkZW11eC0+cHJpdi0+dXBkYXRlc190aW1lZF9sb2NrKTsKIAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiVXBkYXRpbmcgcGxheWxpc3QiKTsKKwogICAgIHJldCA9IGdzdF9hZGFwdGl2ZV9kZW11eF91cGRhdGVfbWFuaWZlc3QgKGRlbXV4KTsKKwogICAgIGlmIChyZXQgPT0gR1NUX0ZMT1dfRU9TKSB7CiAgICAgfSBlbHNlIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKLSAgICAgIGlmIChkZW11eC0+cHJpdi0+c3RvcF91cGRhdGVzX3Rhc2spCi0gICAgICAgIGdvdG8gcXVpdDsKKyAgICAgIC8qIHVwZGF0ZV9mYWlsZWRfY291bnQgaXMgdXNlZCBvbmx5IGhlcmUsIG5vIG5lZWQgdG8gcHJvdGVjdCBpdCAqLwogICAgICAgZGVtdXgtPnByaXYtPnVwZGF0ZV9mYWlsZWRfY291bnQrKzsKICAgICAgIGlmIChkZW11eC0+cHJpdi0+dXBkYXRlX2ZhaWxlZF9jb3VudCA8PSBERUZBVUxUX0ZBSUxFRF9DT1VOVCkgewogICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiQ291bGQgbm90IHVwZGF0ZSB0aGUgcGxheWxpc3QiKTsKLSAgICAgICAgZGVtdXgtPnByaXYtPm5leHRfdXBkYXRlID0KLSAgICAgICAgICAgIGdfZ2V0X21vbm90b25pY190aW1lICgpICsKKyAgICAgICAgbmV4dF91cGRhdGUgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKSArCiAgICAgICAgICAgICBrbGFzcy0+Z2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoZGVtdXgpOwogICAgICAgfSBlbHNlIHsKICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRlbXV4LCBTVFJFQU0sIEZBSUxFRCwKICAgICAgICAgICAgIChfKCJJbnRlcm5hbCBkYXRhIHN0cmVhbSBlcnJvci4iKSksICgiQ291bGQgbm90IHVwZGF0ZSBwbGF5bGlzdCIpKTsKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJTdG9wcGVkIHVwZGF0ZXMgdGFzayBiZWNhdXNlIG9mIGVycm9yIik7CisgICAgICAgIGdzdF90YXNrX3N0b3AgKGRlbXV4LT5wcml2LT51cGRhdGVzX3Rhc2spOworICAgICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICAgIGdvdG8gZW5kOwogICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIlVwZGF0ZWQgcGxheWxpc3Qgc3VjY2Vzc2Z1bGx5Iik7Ci0gICAgICBHU1RfTUFOSUZFU1RfTE9DSyAoZGVtdXgpOwotICAgICAgZGVtdXgtPnByaXYtPm5leHRfdXBkYXRlID0KLSAgICAgICAgICBnX2dldF9tb25vdG9uaWNfdGltZSAoKSArIGtsYXNzLT5nZXRfbWFuaWZlc3RfdXBkYXRlX2ludGVydmFsIChkZW11eCk7Ci0gICAgICAvKiBXYWtlIHVwIGRvd25sb2FkIHRhc2sgKi8KLSAgICAgIGdfY29uZF9icm9hZGNhc3QgKCZkZW11eC0+bWFuaWZlc3RfY29uZCk7Ci0gICAgICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisgICAgICBuZXh0X3VwZGF0ZSA9IGdfZ2V0X21vbm90b25pY190aW1lICgpICsKKyAgICAgICAgICBrbGFzcy0+Z2V0X21hbmlmZXN0X3VwZGF0ZV9pbnRlcnZhbCAoZGVtdXgpOworCisgICAgICAvKiBXYWtlIHVwIGRvd25sb2FkIHRhc2tzICovCisgICAgICBnX211dGV4X2xvY2sgKCZkZW11eC0+cHJpdi0+bWFuaWZlc3RfdXBkYXRlX2xvY2spOworICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoJmRlbXV4LT5wcml2LT5tYW5pZmVzdF9jb25kKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZGVtdXgtPnByaXYtPm1hbmlmZXN0X3VwZGF0ZV9sb2NrKTsKICAgICB9CiAgIH0KIAorICBHU1RfTUFOSUZFU1RfVU5MT0NLIChkZW11eCk7CisKIHF1aXQ6CiAgIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIlN0b3BwZWQgdXBkYXRlcyB0YXNrIik7Ci0gICAgZ3N0X3Rhc2tfc3RvcCAoZGVtdXgtPnByaXYtPnVwZGF0ZXNfdGFzayk7Ci0gICAgcmV0dXJuOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiU3RvcCB1cGRhdGVzIHRhc2sgcmVxdWVzdCBkZXRlY3RlZC4iKTsKICAgfQogCi1lcnJvcjoKK2VuZDoKICAgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiU3RvcHBlZCB1cGRhdGVzIHRhc2sgYmVjYXVzZSBvZiBlcnJvciIpOwotICAgIGdzdF90YXNrX3N0b3AgKGRlbXV4LT5wcml2LT51cGRhdGVzX3Rhc2spOworICAgIHJldHVybjsKICAgfQogfQogCi0KKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3B1c2hfZXZlbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCiAgICAgR3N0RXZlbnQgKiBldmVudCkKQEAgLTI0ODcsNiArMzEyOSw3IEBACiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGdib29sZWFuCiBnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewpAQCAtMjQ5NywxNyArMzE0MCwyMCBAQAogICByZXR1cm4gRkFMU0U7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2VlayAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSB0cykKKyAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBnYm9vbGVhbiBmb3J3YXJkLCBHc3RTZWVrRmxhZ3MgZmxhZ3MsCisgICAgR3N0Q2xvY2tUaW1lIHRzLCBHc3RDbG9ja1RpbWUgKiBmaW5hbF90cykKIHsKICAgR3N0QWRhcHRpdmVEZW11eENsYXNzICprbGFzcyA9IEdTVF9BREFQVElWRV9ERU1VWF9HRVRfQ0xBU1MgKGRlbXV4KTsKIAogICBpZiAoa2xhc3MtPnN0cmVhbV9zZWVrKQotICAgIHJldHVybiBrbGFzcy0+c3RyZWFtX3NlZWsgKHN0cmVhbSwgdHMpOworICAgIHJldHVybiBrbGFzcy0+c3RyZWFtX3NlZWsgKHN0cmVhbSwgZm9yd2FyZCwgZmxhZ3MsIHRzLCBmaW5hbF90cyk7CiAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1faGFzX25leHRfZnJhZ21lbnQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQpAQCAtMjUyMSwyNCArMzE2NywyNCBAQAogICByZXR1cm4gcmV0OwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fYWR2YW5jZV9mcmFnbWVudCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAogICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSBkdXJhdGlvbikKIHsKICAgR3N0Rmxvd1JldHVybiByZXQ7CiAKLSAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgaWYgKHN0cmVhbS0+bGFzdF9yZXQgPT0gR1NUX0ZMT1dfT0spIHsKICAgICBzdHJlYW0tPmxhc3RfcmV0ID0KICAgICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50X3VubG9ja2VkIChkZW11eCwgc3RyZWFtLAogICAgICAgICBkdXJhdGlvbik7CiAgIH0KICAgcmV0ID0gc3RyZWFtLT5sYXN0X3JldDsKLSAgR1NUX01BTklGRVNUX1VOTE9DSyAoZGVtdXgpOwogCiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogR3N0Rmxvd1JldHVybgogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9hZHZhbmNlX2ZyYWdtZW50X3VubG9ja2VkIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgsCiAgICAgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIGR1cmF0aW9uKQpAQCAtMjU1MCwxMCArMzE5Niw2IEBACiAKICAgc3RyZWFtLT5kb3dubG9hZF9lcnJvcl9jb3VudCA9IDA7CiAgIGdfY2xlYXJfZXJyb3IgKCZzdHJlYW0tPmxhc3RfZXJyb3IpOwotICBzdHJlYW0tPmRvd25sb2FkX3RvdGFsX3RpbWUgKz0KLSAgICAgIGdfZ2V0X21vbm90b25pY190aW1lICgpIC0gc3RyZWFtLT5kb3dubG9hZF9jaHVua19zdGFydF90aW1lOwotICBzdHJlYW0tPmZyYWdtZW50X3RvdGFsX3RpbWUgKz0KLSAgICAgIGdfZ2V0X21vbm90b25pY190aW1lICgpIC0gc3RyZWFtLT5kb3dubG9hZF9jaHVua19zdGFydF90aW1lOwogCiAgIC8qIEZJWE1FIC0gdXJsIGhhcyBubyBpbmRpY2F0aW9uIG9mIGJ5dGUgcmFuZ2VzIGZvciBzdWJzZWdtZW50cyAqLwogICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UX0NBU1QgKGRlbXV4KSwKQEAgLTI1NjksNyArMzIxMSw5IEBACiAgICAgICAgICAgICAgIEdTVF9UWVBFX0NMT0NLX1RJTUUsCiAgICAgICAgICAgICAgIHN0cmVhbS0+ZG93bmxvYWRfdG90YWxfdGltZSAqIEdTVF9VU0VDT05ELCBOVUxMKSkpOwogCi0gIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZHVyYXRpb24pKSB7CisgIC8qIERvbid0IHVwZGF0ZSB0byB0aGUgZW5kIG9mIHRoZSBzZWdtZW50IGlmIGluIHJldmVyc2UgcGxheWJhY2sgKi8KKyAgR1NUX0FEQVBUSVZFX0RFTVVYX1NFR01FTlRfTE9DSyAoZGVtdXgpOworICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGR1cmF0aW9uKSAmJiBkZW11eC0+c2VnbWVudC5yYXRlID4gMCkgewogICAgIEdzdENsb2NrVGltZSBvZmZzZXQgPQogICAgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2dldF9wcmVzZW50YXRpb25fb2Zmc2V0IChkZW11eCwgc3RyZWFtKTsKICAgICBHc3RDbG9ja1RpbWUgcGVyaW9kX3N0YXJ0ID0KQEAgLTI1ODQsNiArMzIyOCw3IEBACiAgICAgICBkZW11eC0+c2VnbWVudC5wb3NpdGlvbiA9CiAgICAgICAgICAgc3RyZWFtLT5zZWdtZW50LnBvc2l0aW9uIC0gb2Zmc2V0ICsgcGVyaW9kX3N0YXJ0OwogICB9CisgIEdTVF9BREFQVElWRV9ERU1VWF9TRUdNRU5UX1VOTE9DSyAoZGVtdXgpOwogCiAgIGlmIChnc3RfYWRhcHRpdmVfZGVtdXhfaXNfbGl2ZSAoZGVtdXgpCiAgICAgICB8fCBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX2hhc19uZXh0X2ZyYWdtZW50IChkZW11eCwgc3RyZWFtKSkgewpAQCAtMjYxOCw2ICszMjYzLDcgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2VsZWN0X2JpdHJhdGUgKEdzdEFkYXB0aXZlRGVtdXggKgogICAgIGRlbXV4LCBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLCBndWludDY0IGJpdHJhdGUpCkBAIC0yNjM1LDYgKzMyODEsNyBAQAogICByZXR1cm4gRkFMU0U7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm8gKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICBHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKQpAQCAtMjY0NCw5ICszMjkxLDE0IEBACiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChrbGFzcy0+c3RyZWFtX3VwZGF0ZV9mcmFnbWVudF9pbmZvICE9IE5VTEwsCiAgICAgICBHU1RfRkxPV19FUlJPUik7CiAKKyAgLyogTWFrZSBzdXJlIHRoZSBzdWItY2xhc3Mgd2lsbCB1cGRhdGUgYml0cmF0ZSwgb3IgZWxzZQorICAgKiB3ZSB3aWxsIGxhdGVyICovCisgIHN0cmVhbS0+ZnJhZ21lbnQuYml0cmF0ZSA9IDA7CisKICAgcmV0dXJuIGtsYXNzLT5zdHJlYW1fdXBkYXRlX2ZyYWdtZW50X2luZm8gKHN0cmVhbSk7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIGdpbnQ2NAogZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9nZXRfZnJhZ21lbnRfd2FpdGluZ190aW1lIChHc3RBZGFwdGl2ZURlbXV4ICoKICAgICBkZW11eCwgR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSkKQEAgLTI2NTgsNiArMzMxMCw3IEBACiAgIHJldHVybiAwOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCiBnc3RfYWRhcHRpdmVfZGVtdXhfdXBkYXRlX21hbmlmZXN0X2RlZmF1bHQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKQEAgLTI2NjksNyArMzMyMiw2IEBACiAgIGRvd25sb2FkID0gZ3N0X3VyaV9kb3dubG9hZGVyX2ZldGNoX3VyaSAoZGVtdXgtPmRvd25sb2FkZXIsCiAgICAgICBkZW11eC0+bWFuaWZlc3RfdXJpLCBOVUxMLCBUUlVFLCBUUlVFLCBUUlVFLCBOVUxMKTsKICAgaWYgKGRvd25sb2FkKSB7Ci0gICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgICBnX2ZyZWUgKGRlbXV4LT5tYW5pZmVzdF91cmkpOwogICAgIGdfZnJlZSAoZGVtdXgtPm1hbmlmZXN0X2Jhc2VfdXJpKTsKICAgICBpZiAoZG93bmxvYWQtPnJlZGlyZWN0X3Blcm1hbmVudCAmJiBkb3dubG9hZC0+cmVkaXJlY3RfdXJpKSB7CkBAIC0yNjg0LDcgKzMzMzYsNiBAQAogICAgIGdfb2JqZWN0X3VucmVmIChkb3dubG9hZCk7CiAgICAgcmV0ID0ga2xhc3MtPnVwZGF0ZV9tYW5pZmVzdF9kYXRhIChkZW11eCwgYnVmZmVyKTsKICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgICAvKiBGSVhNRTogU2hvdWxkIHRoZSBtYW5pZmVzdCB1cmkgdmFycyBiZSByZXZlcnRlZCB0byBvcmlnaW5hbAogICAgICAqIHZhbHVlcyBpZiB1cGRhdGluZyBmYWlscz8gKi8KICAgfSBlbHNlIHsKQEAgLTI2OTQsNiArMzM0NSw3IEBACiAgIHJldHVybiByZXQ7CiB9CiAKKy8qIG11c3QgYmUgY2FsbGVkIHdpdGggbWFuaWZlc3RfbG9jayB0YWtlbiAqLwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9hZGFwdGl2ZV9kZW11eF91cGRhdGVfbWFuaWZlc3QgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCkKIHsKQEAgLTI3MDQsMTAgKzMzNTYsOCBAQAogCiAgIGlmIChyZXQgPT0gR1NUX0ZMT1dfT0spIHsKICAgICBHc3RDbG9ja1RpbWUgZHVyYXRpb247Ci0gICAgR1NUX01BTklGRVNUX0xPQ0sgKGRlbXV4KTsKICAgICAvKiBTZW5kIGFuIHVwZGF0ZWQgZHVyYXRpb24gbWVzc2FnZSAqLwogICAgIGR1cmF0aW9uID0ga2xhc3MtPmdldF9kdXJhdGlvbiAoZGVtdXgpOwotICAgIEdTVF9NQU5JRkVTVF9VTkxPQ0sgKGRlbXV4KTsKICAgICBpZiAoZHVyYXRpb24gIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgewogICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCiAgICAgICAgICAgIlNlbmRpbmcgZHVyYXRpb24gbWVzc2FnZSA6ICUiIEdTVF9USU1FX0ZPUk1BVCwKQEAgLTI3NDIsNiArMzM5Miw3IEBACiAgIGYtPmluZGV4X3JhbmdlX2VuZCA9IC0xOwogfQogCisvKiBtdXN0IGJlIGNhbGxlZCB3aXRoIG1hbmlmZXN0X2xvY2sgdGFrZW4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FkYXB0aXZlX2RlbXV4X2hhc19uZXh0X3BlcmlvZCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4KQogewpAQCAtMjc1NCw2ICszNDA1LDcgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorLyogbXVzdCBiZSBjYWxsZWQgd2l0aCBtYW5pZmVzdF9sb2NrIHRha2VuICovCiBzdGF0aWMgdm9pZAogZ3N0X2FkYXB0aXZlX2RlbXV4X2FkdmFuY2VfcGVyaW9kIChHc3RBZGFwdGl2ZURlbXV4ICogZGVtdXgpCiB7CkBAIC0yNzY2LDE4ICszNDE4LDMgQEAKICAgZ3N0X2FkYXB0aXZlX2RlbXV4X2V4cG9zZV9zdHJlYW1zIChkZW11eCwgRkFMU0UpOwogICBnc3RfYWRhcHRpdmVfZGVtdXhfc3RhcnRfdGFza3MgKGRlbXV4KTsKIH0KLQotc3RhdGljIHZvaWQKLWdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fZG93bmxvYWRfd2FpdCAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwKLSAgICBHc3RDbG9ja1RpbWUgdGltZV9kaWZmKQotewotICBnaW50NjQgZW5kX3RpbWUgPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKSArIHRpbWVfZGlmZiAvIEdTVF9VU0VDT05EOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRG93bmxvYWQgd2FpdGluZyBmb3IgJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgR1NUX1RJTUVfQVJHUyAodGltZV9kaWZmKSk7Ci0gIGdfbXV0ZXhfbG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7Ci0gIGdfY29uZF93YWl0X3VudGlsICgmc3RyZWFtLT5mcmFnbWVudF9kb3dubG9hZF9jb25kLAotICAgICAgJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jaywgZW5kX3RpbWUpOwotICBnX211dGV4X3VubG9jayAoJnN0cmVhbS0+ZnJhZ21lbnRfZG93bmxvYWRfbG9jayk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAiRG93bmxvYWQgZmluaXNoZWQgd2FpdGluZyIpOwotfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oIGIvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5oCmluZGV4IGI2NWI2ZDYuLmFlMmQ4OTUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguaAorKysgYi9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmgKQEAgLTcyLDEwICs3Miw2IEBACiAgKi8KICNkZWZpbmUgR1NUX0FEQVBUSVZFX0RFTVVYX1NUQVRJU1RJQ1NfTUVTU0FHRV9OQU1FICJhZGFwdGl2ZS1zdHJlYW1pbmctc3RhdGlzdGljcyIKIAotI2RlZmluZSBHU1RfTUFOSUZFU1RfR0VUX0xPQ0soZCkgKCYoR1NUX0FEQVBUSVZFX0RFTVVYX0NBU1QoZCktPm1hbmlmZXN0X2xvY2spKQotI2RlZmluZSBHU1RfTUFOSUZFU1RfTE9DSyhkKSAoZ19tdXRleF9sb2NrIChHU1RfTUFOSUZFU1RfR0VUX0xPQ0sgKGQpKSkKLSNkZWZpbmUgR1NUX01BTklGRVNUX1VOTE9DSyhkKSAoZ19tdXRleF91bmxvY2sgKEdTVF9NQU5JRkVTVF9HRVRfTE9DSyAoZCkpKQotCiAjZGVmaW5lIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IoZWwsIG1zZywgZXJyKSBHX1NUTVRfU1RBUlQgeyBcCiAgIGdjaGFyICpfX2RiZyA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzOiAlcyIsIG1zZywgZXJyLT5tZXNzYWdlKTsgICAgICAgICBcCiAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZWwsICJlcnJvcjogJXMiLCBfX2RiZyk7ICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC0xMDksMTEgKzEwNSwxNiBAQAogICBnY2hhciAqaW5kZXhfdXJpOwogICBnaW50NjQgaW5kZXhfcmFuZ2Vfc3RhcnQ7CiAgIGdpbnQ2NCBpbmRleF9yYW5nZV9lbmQ7CisKKyAgLyogTm9taW5hbCBiaXRyYXRlIGFzIHByb3ZpZGVkIGJ5CisgICAqIHN1Yi1jbGFzcyBvciBjYWxjdWxhdGVkIGJ5IGJhc2UtY2xhc3MgKi8KKyAgZ3VpbnQgYml0cmF0ZTsKIH07CiAKIHN0cnVjdCBfR3N0QWRhcHRpdmVEZW11eFN0cmVhbQogewogICBHc3RQYWQgKnBhZDsKKyAgR3N0UGFkICppbnRlcm5hbF9wYWQ7CiAKICAgR3N0QWRhcHRpdmVEZW11eCAqZGVtdXg7CiAKQEAgLTEzNiwxNSArMTM3LDIxIEBACiAgIGdib29sZWFuIHJlc3RhcnRfZG93bmxvYWQ7CiAgIGdib29sZWFuIGRpc2NvbnQ7CiAKKyAgZ2Jvb2xlYW4gZG93bmxvYWRpbmdfZmlyc3RfYnVmZmVyOwogICBnYm9vbGVhbiBkb3dubG9hZGluZ19oZWFkZXI7CiAgIGdib29sZWFuIGRvd25sb2FkaW5nX2luZGV4OwogCisgIGdib29sZWFuIGJpdHJhdGVfY2hhbmdlZDsKKwogICAvKiBkb3dubG9hZCB0b29saW5nICovCiAgIEdzdEVsZW1lbnQgKnNyYzsKICAgR3N0UGFkICpzcmNfc3JjcGFkOworICBHc3RFbGVtZW50ICp1cmlfaGFuZGxlcjsKKyAgR3N0RWxlbWVudCAqcXVldWU7CiAgIEdNdXRleCBmcmFnbWVudF9kb3dubG9hZF9sb2NrOwogICBHQ29uZCBmcmFnbWVudF9kb3dubG9hZF9jb25kOwotICBnYm9vbGVhbiBkb3dubG9hZF9maW5pc2hlZDsKKyAgZ2Jvb2xlYW4gZG93bmxvYWRfZmluaXNoZWQ7ICAgLyogcHJvdGVjdGVkIGJ5IGZyYWdtZW50X2Rvd25sb2FkX2xvY2sgKi8KKyAgZ2Jvb2xlYW4gY2FuY2VsbGVkOyAgICAgICAgICAgLyogcHJvdGVjdGVkIGJ5IGZyYWdtZW50X2Rvd25sb2FkX2xvY2sgKi8KICAgZ2Jvb2xlYW4gc3RhcnRpbmdfZnJhZ21lbnQ7CiAgIGdib29sZWFuIGZpcnN0X2ZyYWdtZW50X2J1ZmZlcjsKICAgZ2ludDY0IGRvd25sb2FkX3N0YXJ0X3RpbWU7CkBAIC0xNTMsMTAgKzE2MCw2IEBACiAgIGdpbnQ2NCBkb3dubG9hZF90b3RhbF9ieXRlczsKICAgZ3VpbnQ2NCBjdXJyZW50X2Rvd25sb2FkX3JhdGU7CiAKLSAgLyogUGVyIGZyYWdtZW50IGRvd25sb2FkIGluZm9ybWF0aW9uICovCi0gIGd1aW50NjQgZnJhZ21lbnRfdG90YWxfdGltZTsKLSAgZ3VpbnQ2NCBmcmFnbWVudF90b3RhbF9zaXplOwotCiAgIC8qIEF2ZXJhZ2UgZm9yIHRoZSBsYXN0IGZyYWdtZW50cyAqLwogICBndWludDY0IG1vdmluZ19iaXRyYXRlOwogICBndWludCBtb3ZpbmdfaW5kZXg7CkBAIC0xOTIsMTYgKzE5NSwxMCBAQAogCiAgIEdzdFNlZ21lbnQgc2VnbWVudDsKIAotICBnYm9vbGVhbiBjYW5jZWxsZWQ7Ci0KLSAgR011dGV4IG1hbmlmZXN0X2xvY2s7Ci0gIEdDb25kIG1hbmlmZXN0X2NvbmQ7Ci0KICAgZ2NoYXIgKm1hbmlmZXN0X3VyaTsKICAgZ2NoYXIgKm1hbmlmZXN0X2Jhc2VfdXJpOwogCiAgIC8qIFByb3BlcnRpZXMgKi8KLSAgZ3VpbnQgbnVtX2xvb2tiYWNrX2ZyYWdtZW50czsKICAgZ2Zsb2F0IGJpdHJhdGVfbGltaXQ7ICAgICAgICAgLyogbGltaXQgb2YgdGhlIGF2YWlsYWJsZSBiaXRyYXRlIHRvIHVzZSAqLwogICBndWludCBjb25uZWN0aW9uX3NwZWVkOwogCkBAIC0zMTgsNyArMzE1LDcgQEAKICAgdm9pZCAgICAgICAgICAoKmFkdmFuY2VfcGVyaW9kKSAgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCk7CiAKICAgdm9pZCAgICAgICAgICAoKnN0cmVhbV9mcmVlKSAgICAgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOwotICBHc3RGbG93UmV0dXJuICgqc3RyZWFtX3NlZWspICAgICAoR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqIHN0cmVhbSwgR3N0Q2xvY2tUaW1lIHRzKTsKKyAgR3N0Rmxvd1JldHVybiAoKnN0cmVhbV9zZWVrKSAgICAgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIGdib29sZWFuIGZvcndhcmQsIEdzdFNlZWtGbGFncyBmbGFncywgR3N0Q2xvY2tUaW1lIHRhcmdldF90cywgR3N0Q2xvY2tUaW1lICogZmluYWxfdHMpOwogICBnYm9vbGVhbiAgICAgICgqc3RyZWFtX2hhc19uZXh0X2ZyYWdtZW50KSAgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0pOwogICBHc3RGbG93UmV0dXJuICgqc3RyZWFtX2FkdmFuY2VfZnJhZ21lbnQpIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtKTsKICAgLyoqCkBAIC00MzgsNiArNDM1LDggQEAKIAogR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqZ3N0X2FkYXB0aXZlX2RlbXV4X3N0cmVhbV9uZXcgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQYWQgKiBwYWQpOworR3N0QWRhcHRpdmVEZW11eFN0cmVhbSAqZ3N0X2FkYXB0aXZlX2RlbXV4X2ZpbmRfc3RyZWFtX2Zvcl9wYWQgKEdzdEFkYXB0aXZlRGVtdXggKiBkZW11eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQYWQgKiBwYWQpOwogdm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfc3RyZWFtX3NldF9jYXBzIChHc3RBZGFwdGl2ZURlbXV4U3RyZWFtICogc3RyZWFtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogY2Fwcyk7CiB2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fc2V0X3RhZ3MgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCkBAIC00NTEsMTAgKzQ1MCw2IEBACiB2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fcXVldWVfZXZlbnQgKEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sCiAgICAgR3N0RXZlbnQgKiBldmVudCk7CiAKLUdzdEZsb3dSZXR1cm4KLWdzdF9hZGFwdGl2ZV9kZW11eF9zdHJlYW1fYWR2YW5jZV9mcmFnbWVudF91bmxvY2tlZCAoR3N0QWRhcHRpdmVEZW11eCAqIGRlbXV4LAotICAgIEdzdEFkYXB0aXZlRGVtdXhTdHJlYW0gKiBzdHJlYW0sIEdzdENsb2NrVGltZSBkdXJhdGlvbik7Ci0KIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MTAxNDgKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuYW0KQEAgLTAsMCArMSwyNyBAQAorIyB2YXJpYWJsZXMgdXNlZCBmb3IgZW51bSBnZW5lcmF0aW9uCitsaWJfTFRMSUJSQVJJRVMgPSBsaWJnc3RiYWRhdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5sYQorCitDTEVBTkZJTEVTID0KKworbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUyA9IFwKKwlnc3RhdWRpb2FnZ3JlZ2F0b3IuYworCitub2Rpc3RfbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKKworbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTID0gXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAorCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCisJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorCSQoR1NUX0NGTEFHUykgJChPUkNfQ0ZMQUdTKSBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKQorCitsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9MSUJBREQgPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9iYXNlL2xpYmdzdGJhZGJhc2UtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChPUkNfTElCUykgJChMSUJNKQorCitsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gJChHU1RfTElCX0xERkxBR1MpICQoR1NUX0FMTF9MREZMQUdTKSAkKEdTVF9MVF9MREZMQUdTKQorCitsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9nc3QvYXVkaW8KK2xpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTID0gZ3N0YXVkaW9hZ2dyZWdhdG9yLmgKZGlmZiAtLWdpdCBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuaW4Kc2ltaWxhcml0eSBpbmRleCA3NyUKY29weSBmcm9tIGdzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KY29weSB0byBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuaW4KaW5kZXggYmE5ZTVhMi4uYzg1NGU5MSAxMDA2NDQKLS0tIGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUuaW4KQEAgLTkwLDcgKzkwLDcgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLXN1YmRpciA9IGdzdC9saXZlYWRkZXIKK3N1YmRpciA9IGdzdC1saWJzL2dzdC9hdWRpbwogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYXV0by1hbHQubTQgXApAQCAtMTE2LDE5ICsxMTYsMTkgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCi1ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCitESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCisJJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUykgXAogCSQoYW1fX0RJU1RfQ09NTU9OKQogbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKQEAgLTE2MSwyMSArMTYxLDI5IEBACiAgICAgfHwgeyBlY2hvICIgKCBjZCAnJCRkaXInICYmIHJtIC1mIiAkJGZpbGVzICIpIjsgXAogICAgICAgICAgJChhbV9fY2QpICIkJGRpciIgJiYgcm0gLWYgJCRmaWxlczsgfTsgXAogICB9Ci1hbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKLUxUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobGliZGlyKSIgXAorCSIkKERFU1RESVIpJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIgorTFRMSUJSQVJJRVMgPSAkKGxpYl9MVExJQlJBUklFUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKLQkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9IGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8KLWxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYmFzZS9saWJnc3RiYWRiYXNlLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpCithbV9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTID0gIFwKKwlsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG8KK25vZGlzdF9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTID0KK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMgPSAgXAorCSQoYW1fbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUykgXAorCSQobm9kaXN0X2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RsaXZlYWRkZXJfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAotCSQoQ0NMRCkgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgXAorCS0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ0NMRCkgJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpIFwKKwkkKENGTEFHUykgJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTKSBcCisJJChMREZMQUdTKSAtbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxMCwzMyArMjE4LDE2IEBACiBhbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKIGFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfU09VUkNFUykgXAorCSQobm9kaXN0X2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMpCiBhbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKICAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCiAgICAgbnxub3xOTykgZmFsc2U7OyBcCiAgICAgKikgKGluc3RhbGwtaW5mbyAtLXZlcnNpb24pID4vZGV2L251bGwgMj4mMTs7IFwKICAgZXNhYwotSEVBREVSUyA9ICQobm9pbnN0X0hFQURFUlMpCitIRUFERVJTID0gJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUykKIGFtX190YWdnZWRfZmlsZXMgPSAkKEhFQURFUlMpICQoU09VUkNFUykgJChUQUdTX0ZJTEVTKSAkKExJU1ApCi0jIFJlYWQgYSBsaXN0IG9mIG5ld2xpbmUtc2VwYXJhdGVkIHN0cmluZ3MgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQsCi0jIGFuZCBwcmludCBlYWNoIG9mIHRoZW0gb25jZSwgd2l0aG91dCBkdXBsaWNhdGVzLiAgSW5wdXQgb3JkZXIgaXMKLSMgKm5vdCogcHJlc2VydmVkLgotYW1fX3VuaXF1aWZ5X2lucHV0ID0gJChBV0spICdcCi0gIEJFR0lOIHsgbm9uZW1wdHkgPSAwOyB9IFwKLSAgeyBpdGVtc1skJDBdID0gMTsgbm9uZW1wdHkgPSAxOyB9IFwKLSAgRU5EIHsgaWYgKG5vbmVtcHR5KSB7IGZvciAoaSBpbiBpdGVtcykgcHJpbnQgaTsgfTsgfSBcCi0nCi0jIE1ha2Ugc3VyZSB0aGUgbGlzdCBvZiBzb3VyY2VzIGlzIHVuaXF1ZS4gIFRoaXMgaXMgbmVjZXNzYXJ5IGJlY2F1c2UsCi0jIGUuZy4sIHRoZSBzYW1lIHNvdXJjZSBmaWxlIG1pZ2h0IGJlIHNoYXJlZCBhbW9uZyBfU09VUkNFUyB2YXJpYWJsZXMKLSMgZm9yIGRpZmZlcmVudCBwcm9ncmFtcy9saWJyYXJpZXMuCi1hbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzID0gXAotICBsaXN0PSckKGFtX190YWdnZWRfZmlsZXMpJzsgXAotICB1bmlxdWU9YGZvciBpIGluICQkbGlzdDsgZG8gXAotICAgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gZWNobyAkJGk7IGVsc2UgZWNobyAkKHNyY2RpcikvJCRpOyBmaTsgXAotICBkb25lIHwgJChhbV9fdW5pcXVpZnlfaW5wdXQpYAotRVRBR1MgPSBldGFncwotQ1RBR1MgPSBjdGFncwogYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX3NyY2RpcikvZGVwY29tcAogRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKIEFDTE9DQUwgPSBAQUNMT0NBTEAKQEAgLTI3NCw2ICsyNjUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMDQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMTQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzMyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzUxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszODcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDE0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUxNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTMxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU0Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYwNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NjgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY3OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2ODksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzcyOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzYxLDE2ICs3NjcsMzAgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bGl2ZWFkZGVyLmxhCi1saWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUyA9IGxpdmVhZGRlci5jCi1saWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCiAKLWxpYmdzdGxpdmVhZGRlcl9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gbGl2ZWFkZGVyLmgKKyMgdmFyaWFibGVzIHVzZWQgZm9yIGVudW0gZ2VuZXJhdGlvbgorbGliX0xUTElCUkFSSUVTID0gbGliZ3N0YmFkYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAubGEKK0NMRUFORklMRVMgPSAKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMgPSBcCisJZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKKworbm9kaXN0X2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMgPSAkKEJVSUxUX1NPVVJDRVMpCitsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MgPSBcCisJLURHU1RfVVNFX1VOU1RBQkxFX0FQSSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfQ0ZMQUdTKSAkKE9SQ19DRkxBR1MpIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpCisKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2Jhc2UvbGliZ3N0YmFkYmFzZS0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKE9SQ19MSUJTKSAkKExJQk0pCisKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpICQoR1NUX0xUX0xERkxBR1MpCitsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9nc3QvYXVkaW8KK2xpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTID0gZ3N0YXVkaW9hZ2dyZWdhdG9yLmgKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTc4NCw5ICs4MDQsOSBAQAogCSAgICAgIGV4aXQgMTs7IFwKIAkgIGVzYWM7IFwKIAlkb25lOyBcCi0JZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSc7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QtbGlicy9nc3QvYXVkaW8vTWFrZWZpbGUnOyBcCiAJJChhbV9fY2QpICQodG9wX3NyY2RpcikgJiYgXAotCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZQorCSAgJChBVVRPTUFLRSkgLS1nbnUgZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlCiBNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCiAJQGNhc2UgJyQ/JyBpbiBcCiAJICAqY29uZmlnLnN0YXR1cyopIFwKQEAgLTgwNSwzMyArODI1LDMzIEBACiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFtLS1yZWZyZXNoCiAkKGFtX19hY2xvY2FsX200X2RlcHMpOgogCi1pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOiAkKHBsdWdpbl9MVExJQlJBUklFUykKK2luc3RhbGwtbGliTFRMSUJSQVJJRVM6ICQobGliX0xUTElCUkFSSUVTKQogCUAkKE5PUk1BTF9JTlNUQUxMKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCisJQGxpc3Q9JyQobGliX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQobGliZGlyKSIgfHwgbGlzdD07IFwKIAlsaXN0Mj07IGZvciBwIGluICQkbGlzdDsgZG8gXAogCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gXAogCSAgICBsaXN0Mj0iJCRsaXN0MiAkJHAiOyBcCiAJICBlbHNlIDo7IGZpOyBcCiAJZG9uZTsgXAogCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgXAotCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQocGx1Z2luZGlyKSIgfHwgZXhpdCAxOyBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBcCisJICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQobGliZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJChsaWJkaXIpIiB8fCBleGl0IDE7IFwKKwkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAnJChERVNURElSKSQobGliZGlyKSciOyBcCisJICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAiJChERVNURElSKSQobGliZGlyKSI7IFwKIAl9CiAKLXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzoKK3VuaW5zdGFsbC1saWJMVExJQlJBUklFUzoKIAlAJChOT1JNQUxfVU5JTlNUQUxMKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCisJQGxpc3Q9JyQobGliX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQobGliZGlyKSIgfHwgbGlzdD07IFwKIAlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKIAkgICQoYW1fX3N0cmlwX2RpcikgXAotCSAgZWNobyAiICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICckKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiciOyBcCi0JICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAiJChERVNURElSKSQocGx1Z2luZGlyKS8kJGYiOyBcCisJICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKGxpYmRpcikvJCRmJyI7IFwKKwkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChsaWJkaXIpLyQkZiI7IFwKIAlkb25lCiAKLWNsZWFuLXBsdWdpbkxUTElCUkFSSUVTOgotCS10ZXN0IC16ICIkKHBsdWdpbl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQocGx1Z2luX0xUTElCUkFSSUVTKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyBcCitjbGVhbi1saWJMVExJQlJBUklFUzoKKwktdGVzdCAteiAiJChsaWJfTFRMSUJSQVJJRVMpIiB8fCBybSAtZiAkKGxpYl9MVExJQlJBUklFUykKKwlAbGlzdD0nJChsaWJfTFRMSUJSQVJJRVMpJzsgXAogCWxvY3M9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBcCiAJICAgICAgc2VkICdzfF5bXi9dKiQkfC58OyBzfC9bXi9dKiQkfHw7IHN8JCR8L3NvX2xvY2F0aW9uc3wnIHwgXAogCSAgICAgIHNvcnQgLXVgOyBcCkBAIC04NDAsOCArODYwLDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RsaXZlYWRkZXIubGE6ICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0YmFkYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAubGE6ICQobGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUykgJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTKSAKKwkkKEFNX1ZfQ0NMRCkkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJTkspIC1ycGF0aCAkKGxpYmRpcikgJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTKSAkKGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQpAQCAtODQ5LDcgKzg2OSw3IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtODc1LDcwICs4OTUsNDUgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbzogbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlRwbyAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpdmVhZGRlci5jJyBvYmplY3Q9J2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbzogZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IuVHBvIC1jIC1vIGxpYmdzdGJhZGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbyBgdGVzdCAtZiAnZ3N0YXVkaW9hZ2dyZWdhdG9yLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGF1ZGlvYWdncmVnYXRvci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IuVHBvICQoREVQRElSKS9saWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0YXVkaW9hZ2dyZWdhdG9yLmMnIG9iamVjdD0nbGliZ3N0YmFkYXVkaW9fQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RiYWRhdWRpb19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG8gYHRlc3QgLWYgJ2dzdGF1ZGlvYWdncmVnYXRvci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhdWRpb2FnZ3JlZ2F0b3IuYwogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCiAKIGNsZWFuLWxpYnRvb2w6CiAJLXJtIC1yZiAubGlicyBfbGlicworaW5zdGFsbC1saWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTOiAkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCUBsaXN0PSckKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKSc7IHRlc3QgLW4gIiQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgbGlzdD07IFwKKwlpZiB0ZXN0IC1uICIkJGxpc3QiOyB0aGVuIFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpJyI7IFwKKwkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiIHx8IGV4aXQgMTsgXAorCWZpOyBcCisJZm9yIHAgaW4gJCRsaXN0OyBkbyBcCisJICBpZiB0ZXN0IC1mICIkJHAiOyB0aGVuIGQ9OyBlbHNlIGQ9IiQoc3JjZGlyKS8iOyBmaTsgXAorCSAgZWNobyAiJCRkJCRwIjsgXAorCWRvbmUgfCAkKGFtX19iYXNlX2xpc3QpIHwgXAorCXdoaWxlIHJlYWQgZmlsZXM7IGRvIFwKKwkgIGVjaG8gIiAkKElOU1RBTExfSEVBREVSKSAkJGZpbGVzICckKERFU1RESVIpJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpJyI7IFwKKwkgICQoSU5TVEFMTF9IRUFERVIpICQkZmlsZXMgIiQoREVTVERJUikkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiIHx8IGV4aXQgJCQ/OyBcCisJZG9uZQogCi1JRDogJChhbV9fdGFnZ2VkX2ZpbGVzKQotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IG1raWQgLWZJRCAkJHVuaXF1ZQotdGFnczogdGFncy1hbQotVEFHUzogdGFncwordW5pbnN0YWxsLWxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlM6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChsaWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyknOyB0ZXN0IC1uICIkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiIHx8IGxpc3Q9OyBcCisJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKKwlkaXI9JyQoREVTVERJUikkKGxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCit0YWdzIFRBR1M6CiAKLXRhZ3MtYW06ICQoVEFHU19ERVBFTkRFTkNJRVMpICQoYW1fX3RhZ2dlZF9maWxlcykKLQlzZXQgeDsgXAotCWhlcmU9YHB3ZGA7IFwKLQkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBcCi0Jc2hpZnQ7IFwKLQlpZiB0ZXN0IC16ICIkKEVUQUdTX0FSR1MpJCQqJCR1bmlxdWUiOyB0aGVuIDo7IGVsc2UgXAotCSAgdGVzdCAtbiAiJCR1bmlxdWUiIHx8IHVuaXF1ZT0kJGVtcHR5X2ZpeDsgXAotCSAgaWYgdGVzdCAkJCMgLWd0IDA7IHRoZW4gXAotCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcCi0JICAgICAgIiQkQCIgJCR1bmlxdWU7IFwKLQkgIGVsc2UgXAotCSAgICAkKEVUQUdTKSAkKEVUQUdTRkxBR1MpICQoQU1fRVRBR1NGTEFHUykgJChFVEFHU19BUkdTKSBcCi0JICAgICAgJCR1bmlxdWU7IFwKLQkgIGZpOyBcCi0JZmkKLWN0YWdzOiBjdGFncy1hbQorY3RhZ3MgQ1RBR1M6CiAKLUNUQUdTOiBjdGFncwotY3RhZ3MtYW06ICQoVEFHU19ERVBFTkRFTkNJRVMpICQoYW1fX3RhZ2dlZF9maWxlcykKLQkkKGFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMpOyBcCi0JdGVzdCAteiAiJChDVEFHU19BUkdTKSQkdW5pcXVlIiBcCi0JICB8fCAkKENUQUdTKSAkKENUQUdTRkxBR1MpICQoQU1fQ1RBR1NGTEFHUykgJChDVEFHU19BUkdTKSBcCi0JICAgICAkJHVuaXF1ZQorY3Njb3BlIGNzY29wZWxpc3Q6CiAKLUdUQUdTOgotCWhlcmU9YCQoYW1fX2NkKSAkKHRvcF9idWlsZGRpcikgJiYgcHdkYCBcCi0JICAmJiAkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSBcCi0JICAmJiBndGFncyAtaSAkKEdUQUdTX0FSR1MpICIkJGhlcmUiCi1jc2NvcGVsaXN0OiBjc2NvcGVsaXN0LWFtCi0KLWNzY29wZWxpc3QtYW06ICQoYW1fX3RhZ2dlZF9maWxlcykKLQlsaXN0PSckKGFtX190YWdnZWRfZmlsZXMpJzsgXAotCWNhc2UgIiQoc3JjZGlyKSIgaW4gXAotCSAgW1xcL10qIHwgPzpbXFwvXSopIHNkaXI9IiQoc3JjZGlyKSIgOzsgXAotCSAgKikgc2Rpcj0kKHN1YmRpcikvJChzcmNkaXIpIDs7IFwKLQllc2FjOyBcCi0JZm9yIGkgaW4gJCRsaXN0OyBkbyBcCi0JICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIFwKLQkgICAgZWNobyAiJChzdWJkaXIpLyQkaSI7IFwKLQkgIGVsc2UgXAotCSAgICBlY2hvICIkJHNkaXIvJCRpIjsgXAotCSAgZmk7IFwKLQlkb25lID4+ICQodG9wX2J1aWxkZGlyKS9jc2NvcGUuZmlsZXMKLQotZGlzdGNsZWFuLXRhZ3M6Ci0JLXJtIC1mIFRBR1MgSUQgR1RBR1MgR1JUQUdTIEdTWU1TIEdQQVRIIHRhZ3MKIAogZGlzdGRpcjogJChESVNURklMRVMpCiAJQHNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXApAQCAtOTc0LDcgKzk2OSw3IEBACiBjaGVjazogY2hlY2stYW0KIGFsbC1hbTogTWFrZWZpbGUgJChMVExJQlJBUklFUykgJChIRUFERVJTKQogaW5zdGFsbGRpcnM6Ci0JZm9yIGRpciBpbiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IGRvIFwKKwlmb3IgZGlyIGluICIkKERFU1RESVIpJChsaWJkaXIpIiAiJChERVNURElSKSQobGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSI7IGRvIFwKIAkgIHRlc3QgLXogIiQkZGlyIiB8fCAkKE1LRElSX1ApICIkJGRpciI7IFwKIAlkb25lCiBpbnN0YWxsOiBpbnN0YWxsLWFtCkBAIC05OTksNiArOTk0LDcgQEAKIG1vc3RseWNsZWFuLWdlbmVyaWM6CiAKIGNsZWFuLWdlbmVyaWM6CisJLXRlc3QgLXogIiQoQ0xFQU5GSUxFUykiIHx8IHJtIC1mICQoQ0xFQU5GSUxFUykKIAogZGlzdGNsZWFuLWdlbmVyaWM6CiAJLXRlc3QgLXogIiQoQ09ORklHX0NMRUFOX0ZJTEVTKSIgfHwgcm0gLWYgJChDT05GSUdfQ0xFQU5fRklMRVMpCkBAIC0xMDA5LDE0ICsxMDA1LDEzIEBACiAJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgogY2xlYW46IGNsZWFuLWFtCiAKLWNsZWFuLWFtOiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgXAorY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGliTFRMSUJSQVJJRVMgY2xlYW4tbGlidG9vbCBcCiAJbW9zdGx5Y2xlYW4tYW0KIAogZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KIAktcm0gLXJmIC4vJChERVBESVIpCiAJLXJtIC1mIE1ha2VmaWxlCi1kaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKLQlkaXN0Y2xlYW4tdGFncworZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYwogCiBkdmk6IGR2aS1hbQogCkBAIC0xMDMwLDEzICsxMDI1LDEzIEBACiAKIGluZm8tYW06CiAKLWluc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUworaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLWxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMKIAogaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCiAKIGluc3RhbGwtZHZpLWFtOgogCi1pbnN0YWxsLWV4ZWMtYW06CitpbnN0YWxsLWV4ZWMtYW06IGluc3RhbGwtbGliTFRMSUJSQVJJRVMKIAogaW5zdGFsbC1odG1sOiBpbnN0YWxsLWh0bWwtYW0KIApAQCAtMTA3NiwyNCArMTA3MSwyNyBAQAogCiBwcy1hbToKIAotdW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKK3VuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwl1bmluc3RhbGwtbGliZ3N0YXVkaW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUwogCiAuTUFLRTogaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCiAKLS5QSE9OWTogQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgXAotCWNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgY3Njb3BlbGlzdC1hbSBjdGFncyBcCi0JY3RhZ3MtYW0gZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKLQlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0Y2xlYW4tdGFncyBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBcCi0JaHRtbC1hbSBpbmZvIGluZm8tYW0gaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBcCi0JaW5zdGFsbC1kYXRhLWFtIGluc3RhbGwtZHZpIGluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBcCi0JaW5zdGFsbC1leGVjLWFtIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIFwKLQlpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gXAotCWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMgaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIFwKLQlpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgXAotCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIFwKLQltb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBcCi0JcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSBcCi0JdW5pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCisuUEhPTlk6IGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCisJY2xlYW4tbGliTFRMSUJSQVJJRVMgY2xlYW4tbGlidG9vbCBjc2NvcGVsaXN0LWFtIGN0YWdzLWFtIFwKKwlkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAorCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIFwKKwlpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBcCisJaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgXAorCWluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIFwKKwlpbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwlpbnN0YWxsLWxpYmdzdGF1ZGlvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMgXAorCWluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgXAorCWluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIFwKKwlpbnN0YWxsZGlycyBtYWludGFpbmVyLWNsZWFuIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBcCisJbW9zdGx5Y2xlYW4gbW9zdGx5Y2xlYW4tY29tcGlsZSBtb3N0bHljbGVhbi1nZW5lcmljIFwKKwltb3N0bHljbGVhbi1saWJ0b29sIHBkZiBwZGYtYW0gcHMgcHMtYW0gdGFncy1hbSB1bmluc3RhbGwgXAorCXVuaW5zdGFsbC1hbSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1saWJnc3RhdWRpb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTCiAKIC5QUkVDSU9VUzogTWFrZWZpbGUKIApkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmMgYi9nc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKc2ltaWxhcml0eSBpbmRleCA5NyUKcmVuYW1lIGZyb20gZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKcmVuYW1lIHRvIGdzdC1saWJzL2dzdC9hdWRpby9nc3RhdWRpb2FnZ3JlZ2F0b3IuYwppbmRleCA4Y2E3OTEzLi41ZDdlOGQ2IDEwMDY0NAotLS0gYS9nc3QvYXVkaW9taXhlci9nc3RhdWRpb2FnZ3JlZ2F0b3IuYworKysgYi9nc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKQEAgLTE3NSw2ICsxNzUsOCBAQAogICAgIEdzdEFnZ3JlZ2F0b3JQYWQgKiBicGFkLCBHc3RCdWZmZXIgKiBidWZmZXIsIEdzdEJ1ZmZlciAqKiBvdXRidWYpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2F1ZGlvX2FnZ3JlZ2F0b3JfYWdncmVnYXRlIChHc3RBZ2dyZWdhdG9yICogYWdnLAogICAgIGdib29sZWFuIHRpbWVvdXQpOworc3RhdGljIGdib29sZWFuIHN5bmNfcGFkX3ZhbHVlcyAoR3N0QXVkaW9BZ2dyZWdhdG9yICogYWFnZywKKyAgICBHc3RBdWRpb0FnZ3JlZ2F0b3JQYWQgKiBwYWQpOwogCiAjZGVmaW5lIERFRkFVTFRfT1VUUFVUX0JVRkZFUl9EVVJBVElPTiAoMTAgKiBHU1RfTVNFQ09ORCkKICNkZWZpbmUgREVGQVVMVF9BTElHTk1FTlRfVEhSRVNIT0xEICAgKDQwICogR1NUX01TRUNPTkQpCkBAIC0yNDAsNiArMjQyLDggQEAKIAogICBrbGFzcy0+Y3JlYXRlX291dHB1dF9idWZmZXIgPSBnc3RfYXVkaW9fYWdncmVnYXRvcl9jcmVhdGVfb3V0cHV0X2J1ZmZlcjsKIAorICBHU1RfREVCVUdfUkVHSVNURVJfRlVOQ1BUUiAoc3luY19wYWRfdmFsdWVzKTsKKwogICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoYXVkaW9fYWdncmVnYXRvcl9kZWJ1ZywgImF1ZGlvYWdncmVnYXRvciIsCiAgICAgICBHU1RfREVCVUdfRkdfTUFHRU5UQSwgIkdzdEF1ZGlvQWdncmVnYXRvciIpOwogCkBAIC04MjksNyArODMzLDcgQEAKICAgaWYgKGRpc2NvbnQpIHsKICAgICAvKiBIYXZlIGRpc2NvbnQsIG5lZWQgcmVzeW5jICovCiAgICAgaWYgKHBhZC0+cHJpdi0+bmV4dF9vZmZzZXQgIT0gLTEpCi0gICAgICBHU1RfSU5GT19PQkpFQ1QgKHBhZCwgIkhhdmUgZGlzY29udC4gRXhwZWN0ZWQgJSIKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIkhhdmUgZGlzY29udC4gRXhwZWN0ZWQgJSIKICAgICAgICAgICBHX0dVSU5UNjRfRk9STUFUICIsIGdvdCAlIiBHX0dVSU5UNjRfRk9STUFULAogICAgICAgICAgIHBhZC0+cHJpdi0+bmV4dF9vZmZzZXQsIHN0YXJ0X29mZnNldCk7CiAgICAgcGFkLT5wcml2LT5vdXRwdXRfb2Zmc2V0ID0gLTE7CkBAIC04NTMsNyArODU3LDcgQEAKIAogICAgIC8qIENvbnZlcnQgdG8gcG9zaXRpb24gaW4gdGhlIG91dHB1dCBzZWdtZW50ICovCiAgICAgc3RhcnRfb3V0cHV0X29mZnNldCA9Ci0gICAgICAgIGdzdF9zZWdtZW50X3RvX3Bvc2l0aW9uICgmYWdnLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCisgICAgICAgIGdzdF9zZWdtZW50X3Bvc2l0aW9uX2Zyb21fcnVubmluZ190aW1lICgmYWdnLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCiAgICAgICAgIHN0YXJ0X3J1bm5pbmdfdGltZSk7CiAgICAgaWYgKHN0YXJ0X291dHB1dF9vZmZzZXQgIT0gLTEpCiAgICAgICBzdGFydF9vdXRwdXRfb2Zmc2V0ID0KQEAgLTg2MSw3ICs4NjUsNyBAQAogICAgICAgICAgIEdTVF9TRUNPTkQpOwogCiAgICAgZW5kX291dHB1dF9vZmZzZXQgPQotICAgICAgICBnc3Rfc2VnbWVudF90b19wb3NpdGlvbiAoJmFnZy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgICBnc3Rfc2VnbWVudF9wb3NpdGlvbl9mcm9tX3J1bm5pbmdfdGltZSAoJmFnZy0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAogICAgICAgICBlbmRfcnVubmluZ190aW1lKTsKICAgICBpZiAoZW5kX291dHB1dF9vZmZzZXQgIT0gLTEpCiAgICAgICBlbmRfb3V0cHV0X29mZnNldCA9CkBAIC05OTUsNyArOTk5LDcgQEAKICAgaWYgKHBhZC0+cHJpdi0+cG9zaXRpb24gPT0gcGFkLT5wcml2LT5zaXplKSB7CiAgICAgLyogQnVmZmVyIGRvbmUsIGRyb3AgaXQgKi8KICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZwYWQtPnByaXYtPmJ1ZmZlciwgTlVMTCk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiRmluaXNoZWQgbWl4aW5nIGJ1ZmZlciwgd2FpdGluZyBmb3IgbmV4dCIpOworICAgIEdTVF9MT0dfT0JKRUNUIChwYWQsICJGaW5pc2hlZCBtaXhpbmcgYnVmZmVyLCB3YWl0aW5nIGZvciBuZXh0Iik7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKQEAgLTEwODksNyArMTA5Myw3IEBACiAKICAgLyogU3luYyBwYWQgcHJvcGVydGllcyB0byB0aGUgc3RyZWFtIHRpbWUgKi8KICAgZ3N0X2FnZ3JlZ2F0b3JfaXRlcmF0ZV9zaW5rcGFkcyAoYWdnLAotICAgICAgKEdzdEFnZ3JlZ2F0b3JQYWRGb3JlYWNoRnVuYykgR1NUX0RFQlVHX0ZVTkNQVFIgKHN5bmNfcGFkX3ZhbHVlcyksIE5VTEwpOworICAgICAgKEdzdEFnZ3JlZ2F0b3JQYWRGb3JlYWNoRnVuYykgc3luY19wYWRfdmFsdWVzLCBOVUxMKTsKIAogICBHU1RfQVVESU9fQUdHUkVHQVRPUl9MT0NLIChhYWdnKTsKICAgR1NUX09CSkVDVF9MT0NLIChhZ2cpOwpAQCAtMTE5NCw4ICsxMTk4LDggQEAKICAgICAgIGlmICh0aW1lb3V0KSB7CiAgICAgICAgIGlmIChwYWQtPnByaXYtPm91dHB1dF9vZmZzZXQgPCBuZXh0X29mZnNldCkgewogICAgICAgICAgIGdpbnQ2NCBkaWZmID0gbmV4dF9vZmZzZXQgLSBwYWQtPnByaXYtPm91dHB1dF9vZmZzZXQ7Ci0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHBhZCwgIlRpbWVvdXQsIG1pc3NpbmcgJSIgR19HSU5UNjRfRk9STUFUICIgZnJhbWVzICglIgotICAgICAgICAgICAgICBHU1RfVElNRV9GT1JNQVQgIikiLCBkaWZmLAorICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIlRpbWVvdXQsIG1pc3NpbmcgJSIgR19HSU5UNjRfRk9STUFUCisgICAgICAgICAgICAgICIgZnJhbWVzICglIiBHU1RfVElNRV9GT1JNQVQgIikiLCBkaWZmLAogICAgICAgICAgICAgICBHU1RfVElNRV9BUkdTIChnc3RfdXRpbF91aW50NjRfc2NhbGUgKGRpZmYsIEdTVF9TRUNPTkQsCiAgICAgICAgICAgICAgICAgICAgICAgR1NUX0FVRElPX0lORk9fUkFURSAoJmFhZ2ctPmluZm8pKSkpOwogICAgICAgICB9CkBAIC0xMjQxLDcgKzEyNDUsNyBAQAogICAgICAgcGFkLT5wcml2LT5vdXRwdXRfb2Zmc2V0ICs9IGRpZmY7CiAKICAgICAgIGlmIChwYWQtPnByaXYtPnBvc2l0aW9uID09IHBhZC0+cHJpdi0+c2l6ZSkgewotICAgICAgICBHU1RfTE9HX09CSkVDVCAocGFkLCAiQnVmZmVyIHdhcyBsYXRlIGJ5ICUiIEdTVF9USU1FX0ZPUk1BVAorICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJCdWZmZXIgd2FzIGxhdGUgYnkgJSIgR1NUX1RJTUVfRk9STUFUCiAgICAgICAgICAgICAiLCBkcm9wcGluZyAlIiBHU1RfUFRSX0ZPUk1BVCwKICAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAob2RpZmYsIEdTVF9TRUNPTkQsCiAgICAgICAgICAgICAgICAgICAgIEdTVF9BVURJT19JTkZPX1JBVEUgKCZhYWdnLT5pbmZvKSkpLCBwYWQtPnByaXYtPmJ1ZmZlcik7CkBAIC0xMjYyLDggKzEyNjYsOCBAQAogICAgICAgZHJvcF9idWYgPSAhZ3N0X2F1ZGlvX2FnZ3JlZ2F0b3JfbWl4X2J1ZmZlciAoYWFnZywgcGFkLCBwYWQtPnByaXYtPmJ1ZmZlciwKICAgICAgICAgICBvdXRidWYpOwogICAgICAgaWYgKHBhZC0+cHJpdi0+b3V0cHV0X29mZnNldCA+PSBuZXh0X29mZnNldCkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsCi0gICAgICAgICAgICAiUGFkIGlzIGFmdGVyIGN1cnJlbnQgb2Zmc2V0OiAlIiBHX0dVSU5UNjRfRk9STUFUICIgPj0gJSIKKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHBhZCwKKyAgICAgICAgICAgICJQYWQgaXMgYXQgb3IgYWZ0ZXIgY3VycmVudCBvZmZzZXQ6ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiA+PSAlIgogICAgICAgICAgICAgR19HSU5UNjRfRk9STUFULCBwYWQtPnByaXYtPm91dHB1dF9vZmZzZXQsIG5leHRfb2Zmc2V0KTsKICAgICAgIH0gZWxzZSB7CiAgICAgICAgIGlzX2RvbmUgPSBGQUxTRTsKQEAgLTEyNzksMTUgKzEyODMsMTUgQEAKIAogICBpZiAoZHJvcHBlZCkgewogICAgIC8qIFdlIGRyb3BwZWQgYSBidWZmZXIsIHJldHJ5ICovCi0gICAgR1NUX0lORk9fT0JKRUNUIChhYWdnLCAiQSBwYWQgZHJvcHBlZCBhIGJ1ZmZlciwgd2FpdCBmb3IgdGhlIG5leHQgb25lIik7CisgICAgR1NUX0xPR19PQkpFQ1QgKGFhZ2csICJBIHBhZCBkcm9wcGVkIGEgYnVmZmVyLCB3YWl0IGZvciB0aGUgbmV4dCBvbmUiKTsKICAgICBHU1RfQVVESU9fQUdHUkVHQVRPUl9VTkxPQ0sgKGFhZ2cpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKICAgfQogCiAgIGlmICghaXNfZG9uZSAmJiAhaXNfZW9zKSB7CiAgICAgLyogR2V0IG1vcmUgYnVmZmVycyAqLwotICAgIEdTVF9JTkZPX09CSkVDVCAoYWFnZywKLSAgICAgICAgIldlJ3JlIG5vdCBkb25lIHlldCBmb3IgdGhlIGN1cnJlbnQgb2Zmc2V0LCIgIiB3YWl0aW5nIGZvciBtb3JlIGRhdGEiKTsKKyAgICBHU1RfTE9HX09CSkVDVCAoYWFnZywKKyAgICAgICAgIldlJ3JlIG5vdCBkb25lIHlldCBmb3IgdGhlIGN1cnJlbnQgb2Zmc2V0LCB3YWl0aW5nIGZvciBtb3JlIGRhdGEiKTsKICAgICBHU1RfQVVESU9fQUdHUkVHQVRPUl9VTkxPQ0sgKGFhZ2cpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKICAgfQpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9hZ2dyZWdhdG9yLmggYi9nc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmgKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIGdzdC9hdWRpb21peGVyL2dzdGF1ZGlvYWdncmVnYXRvci5oCnJlbmFtZSB0byBnc3QtbGlicy9nc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmgKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9iYXNlL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW0KaW5kZXggMGQ1NTM2OC4uOTkzNzAxZCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW0KKysrIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuYW0KQEAgLTksOCArOSw4IEBACiBsaWJnc3RiYWRiYXNlX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCA9ICQoR1NUX0xJQlMpCiBsaWJnc3RiYWRiYXNlX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpICQoR1NUX0xUX0xERkxBR1MpCiAKLW5vaW5zdF9IRUFERVJTID0JXAotCWdzdGFnZ3JlZ2F0b3IuaAorbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9nc3QvYmFzZQorbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyA9IGdzdGFnZ3JlZ2F0b3IuaAogCiBFWFRSQV9ESVNUID0gCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9iYXNlL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuaW4KaW5kZXggYWQ1YjYyZS4uZjdjODQzOCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvTWFrZWZpbGUuaW4KQEAgLTExNiwxOSArMTE2LDE5IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQotRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXAorRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXAorCSQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUykgXAogCSQoYW1fX0RJU1RfQ09NTU9OKQogbWtpbnN0YWxsZGlycyA9ICQoaW5zdGFsbF9zaCkgLWQKIENPTkZJR19IRUFERVIgPSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmgKQEAgLTE2MSw3ICsxNjEsOCBAQAogICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKICAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKICAgfQotYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGxpYmRpcikiCithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQobGliZGlyKSIgXAorCSIkKERFU1RESVIpJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiCiBMVExJQlJBUklFUyA9ICQobGliX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KIGxpYmdzdGJhZGJhc2VfQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTID0gIFwKQEAgLTIxOSwyNiArMjIwLDggQEAKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKICAgICAqKSAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOzsgXAogICBlc2FjCi1IRUFERVJTID0gJChub2luc3RfSEVBREVSUykKK0hFQURFUlMgPSAkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpCiBhbV9fdGFnZ2VkX2ZpbGVzID0gJChIRUFERVJTKSAkKFNPVVJDRVMpICQoVEFHU19GSUxFUykgJChMSVNQKQotIyBSZWFkIGEgbGlzdCBvZiBuZXdsaW5lLXNlcGFyYXRlZCBzdHJpbmdzIGZyb20gdGhlIHN0YW5kYXJkIGlucHV0LAotIyBhbmQgcHJpbnQgZWFjaCBvZiB0aGVtIG9uY2UsIHdpdGhvdXQgZHVwbGljYXRlcy4gIElucHV0IG9yZGVyIGlzCi0jICpub3QqIHByZXNlcnZlZC4KLWFtX191bmlxdWlmeV9pbnB1dCA9ICQoQVdLKSAnXAotICBCRUdJTiB7IG5vbmVtcHR5ID0gMDsgfSBcCi0gIHsgaXRlbXNbJCQwXSA9IDE7IG5vbmVtcHR5ID0gMTsgfSBcCi0gIEVORCB7IGlmIChub25lbXB0eSkgeyBmb3IgKGkgaW4gaXRlbXMpIHByaW50IGk7IH07IH0gXAotJwotIyBNYWtlIHN1cmUgdGhlIGxpc3Qgb2Ygc291cmNlcyBpcyB1bmlxdWUuICBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlLAotIyBlLmcuLCB0aGUgc2FtZSBzb3VyY2UgZmlsZSBtaWdodCBiZSBzaGFyZWQgYW1vbmcgX1NPVVJDRVMgdmFyaWFibGVzCi0jIGZvciBkaWZmZXJlbnQgcHJvZ3JhbXMvbGlicmFyaWVzLgotYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyA9IFwKLSAgbGlzdD0nJChhbV9fdGFnZ2VkX2ZpbGVzKSc7IFwKLSAgdW5pcXVlPWBmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKLSAgICBpZiB0ZXN0IC1mICIkJGkiOyB0aGVuIGVjaG8gJCRpOyBlbHNlIGVjaG8gJChzcmNkaXIpLyQkaTsgZmk7IFwKLSAgZG9uZSB8ICQoYW1fX3VuaXF1aWZ5X2lucHV0KWAKLUVUQUdTID0gZXRhZ3MKLUNUQUdTID0gY3RhZ3MKIGFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL2RlcGNvbXAKIERJU1RGSUxFUyA9ICQoRElTVF9DT01NT04pICQoRElTVF9TT1VSQ0VTKSAkKFRFWElORk9TKSAkKEVYVFJBX0RJU1QpCiBBQ0xPQ0FMID0gQEFDTE9DQUxACkBAIC0yNzYsNiArMjU5LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMjk4LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzA4LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzMyNiw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM0NSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzgxLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQwOCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MTEsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzUyNSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NDAsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs1OTksMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjYyLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2NzMsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjgzLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MjIsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc3Miw5ICs3NzAsOCBAQAogCiBsaWJnc3RiYWRiYXNlX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCA9ICQoR1NUX0xJQlMpCiBsaWJnc3RiYWRiYXNlX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpICQoR1NUX0xUX0xERkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IFwKLQlnc3RhZ2dyZWdhdG9yLmgKLQorbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9nc3QvYmFzZQorbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyA9IGdzdGFnZ3JlZ2F0b3IuaAogRVhUUkFfRElTVCA9IAogYWxsOiBhbGwtYW0KIApAQCAtODkyLDU4ICs4ODksMzMgQEAKIAogY2xlYW4tbGlidG9vbDoKIAktcm0gLXJmIC5saWJzIF9saWJzCitpbnN0YWxsLWxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUzogJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKQorCUAkKE5PUk1BTF9JTlNUQUxMKQorCUBsaXN0PSckKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpJzsgdGVzdCAtbiAiJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiIHx8IGxpc3Q9OyBcCisJaWYgdGVzdCAtbiAiJCRsaXN0IjsgdGhlbiBcCisJICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQobGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpJyI7IFwKKwkgICQoTUtESVJfUCkgIiQoREVTVERJUikkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgZXhpdCAxOyBcCisJZmk7IFwKKwlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCisJICBlY2hvICIkJGQkJHAiOyBcCisJZG9uZSB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCisJd2hpbGUgcmVhZCBmaWxlczsgZG8gXAorCSAgZWNobyAiICQoSU5TVEFMTF9IRUFERVIpICQkZmlsZXMgJyQoREVTVERJUikkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSciOyBcCisJICAkKElOU1RBTExfSEVBREVSKSAkJGZpbGVzICIkKERFU1RESVIpJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiIHx8IGV4aXQgJCQ/OyBcCisJZG9uZQogCi1JRDogJChhbV9fdGFnZ2VkX2ZpbGVzKQotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IG1raWQgLWZJRCAkJHVuaXF1ZQotdGFnczogdGFncy1hbQotVEFHUzogdGFncwordW5pbnN0YWxsLWxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUzoKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpJzsgdGVzdCAtbiAiJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiIHx8IGxpc3Q9OyBcCisJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKKwlkaXI9JyQoREVTVERJUikkKGxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKK3RhZ3MgVEFHUzoKIAotdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQotCXNldCB4OyBcCi0JaGVyZT1gcHdkYDsgXAotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKLQlzaGlmdDsgXAotCWlmIHRlc3QgLXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCi0JICB0ZXN0IC1uICIkJHVuaXF1ZSIgfHwgdW5pcXVlPSQkZW1wdHlfZml4OyBcCi0JICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcCi0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKLQkgICAgICAiJCRAIiAkJHVuaXF1ZTsgXAotCSAgZWxzZSBcCi0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKLQkgICAgICAkJHVuaXF1ZTsgXAotCSAgZmk7IFwKLQlmaQotY3RhZ3M6IGN0YWdzLWFtCitjdGFncyBDVEFHUzoKIAotQ1RBR1M6IGN0YWdzCi1jdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKLQl0ZXN0IC16ICIkKENUQUdTX0FSR1MpJCR1bmlxdWUiIFwKLQkgIHx8ICQoQ1RBR1MpICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKLQkgICAgICQkdW5pcXVlCitjc2NvcGUgY3Njb3BlbGlzdDoKIAotR1RBR1M6Ci0JaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgIFwKLQkgICYmICQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpIFwKLQkgICYmIGd0YWdzIC1pICQoR1RBR1NfQVJHUykgIiQkaGVyZSIKLWNzY29wZWxpc3Q6IGNzY29wZWxpc3QtYW0KLQotY3Njb3BlbGlzdC1hbTogJChhbV9fdGFnZ2VkX2ZpbGVzKQotCWxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCi0JY2FzZSAiJChzcmNkaXIpIiBpbiBcCi0JICBbXFwvXSogfCA/OltcXC9dKikgc2Rpcj0iJChzcmNkaXIpIiA7OyBcCi0JICAqKSBzZGlyPSQoc3ViZGlyKS8kKHNyY2RpcikgOzsgXAotCWVzYWM7IFwKLQlmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKLQkgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gXAotCSAgICBlY2hvICIkKHN1YmRpcikvJCRpIjsgXAotCSAgZWxzZSBcCi0JICAgIGVjaG8gIiQkc2Rpci8kJGkiOyBcCi0JICBmaTsgXAotCWRvbmUgPj4gJCh0b3BfYnVpbGRkaXIpL2NzY29wZS5maWxlcwotCi1kaXN0Y2xlYW4tdGFnczoKLQktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncwogCiBkaXN0ZGlyOiAkKERJU1RGSUxFUykKIAlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCkBAIC05NzksNyArOTUxLDcgQEAKIGNoZWNrOiBjaGVjay1hbQogYWxsLWFtOiBNYWtlZmlsZSAkKExUTElCUkFSSUVTKSAkKEhFQURFUlMpCiBpbnN0YWxsZGlyczoKLQlmb3IgZGlyIGluICIkKERFU1RESVIpJChsaWJkaXIpIjsgZG8gXAorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGxpYmRpcikiICIkKERFU1RESVIpJChsaWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpcikiOyBkbyBcCiAJICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCiAJZG9uZQogaW5zdGFsbDogaW5zdGFsbC1hbQpAQCAtMTAyMCw4ICs5OTIsNyBAQAogZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KIAktcm0gLXJmIC4vJChERVBESVIpCiAJLXJtIC1mIE1ha2VmaWxlCi1kaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKLQlkaXN0Y2xlYW4tdGFncworZGlzdGNsZWFuLWFtOiBjbGVhbi1hbSBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYwogCiBkdmk6IGR2aS1hbQogCkBAIC0xMDM1LDcgKzEwMDYsNyBAQAogCiBpbmZvLWFtOgogCi1pbnN0YWxsLWRhdGEtYW06CitpbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtbGliZ3N0YmFzZV9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTCiAKIGluc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1hbQogCkBAIC0xMDgxLDIzICsxMDUyLDI3IEBACiAKIHBzLWFtOgogCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1saWJMVExJQlJBUklFUwordW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1saWJnc3RiYXNlX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlMKIAogLk1BS0U6IGluc3RhbGwtYW0gaW5zdGFsbC1zdHJpcAogCi0uUEhPTlk6IENUQUdTIEdUQUdTIFRBR1MgYWxsIGFsbC1hbSBjaGVjayBjaGVjay1hbSBjbGVhbiBjbGVhbi1nZW5lcmljIFwKLQljbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAotCWN0YWdzLWFtIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCi0JZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgXAotCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgXAotCWluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgXAotCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBcCi0JaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbGliTFRMSUJSQVJJRVMgaW5zdGFsbC1tYW4gaW5zdGFsbC1wZGYgXAotCWluc3RhbGwtcGRmLWFtIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBpbnN0YWxsLXN0cmlwIFwKLQlpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIG1haW50YWluZXItY2xlYW4gXAotCW1haW50YWluZXItY2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbiBtb3N0bHljbGVhbi1jb21waWxlIFwKLQltb3N0bHljbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuLWxpYnRvb2wgcGRmIHBkZi1hbSBwcyBwcy1hbSBcCi0JdGFncyB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTCisuUEhPTlk6IGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCisJY2xlYW4tbGliTFRMSUJSQVJJRVMgY2xlYW4tbGlidG9vbCBjc2NvcGVsaXN0LWFtIGN0YWdzLWFtIFwKKwlkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAorCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIGh0bWwtYW0gaW5mbyBpbmZvLWFtIFwKKwlpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIGluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBcCisJaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIGluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgXAorCWluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gaW5zdGFsbC1pbmZvLWFtIFwKKwlpbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwlpbnN0YWxsLWxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUyBpbnN0YWxsLW1hbiBcCisJaW5zdGFsbC1wZGYgaW5zdGFsbC1wZGYtYW0gaW5zdGFsbC1wcyBpbnN0YWxsLXBzLWFtIFwKKwlpbnN0YWxsLXN0cmlwIGluc3RhbGxjaGVjayBpbnN0YWxsY2hlY2stYW0gaW5zdGFsbGRpcnMgXAorCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIFwKKwltb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBcCisJcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzLWFtIHVuaW5zdGFsbCB1bmluc3RhbGwtYW0gXAorCXVuaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJdW5pbnN0YWxsLWxpYmdzdGJhc2VfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUwogCiAuUFJFQ0lPVVM6IE1ha2VmaWxlCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYyBiL2dzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuYwppbmRleCAxNDE2ZjZjLi5lYzI5N2RmIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5jCkBAIC0yMTUsNiArMjE1LDggQEAKICAgZ2Jvb2xlYW4gcGVuZGluZ19mbHVzaF9zdG9wOwogICBnYm9vbGVhbiBwZW5kaW5nX2VvczsKIAorICBnYm9vbGVhbiBmaXJzdF9idWZmZXI7CisKICAgR1F1ZXVlIGJ1ZmZlcnM7CiAgIGd1aW50IG51bV9idWZmZXJzOwogICBHc3RDbG9ja1RpbWUgaGVhZF9wb3NpdGlvbjsKQEAgLTI4OCw3ICsyOTAsNyBAQAogICBnYm9vbGVhbiBwZWVyX2xhdGVuY3lfbGl2ZTsgICAvKiBwcm90ZWN0ZWQgYnkgc3JjX2xvY2sgKi8KICAgR3N0Q2xvY2tUaW1lIHBlZXJfbGF0ZW5jeV9taW47ICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgc3JjX2xvY2sgKi8KICAgR3N0Q2xvY2tUaW1lIHBlZXJfbGF0ZW5jeV9tYXg7ICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgc3JjX2xvY2sgKi8KLSAgZ2Jvb2xlYW4gaGFzX3BlZXJfbGF0ZW5jeTsKKyAgZ2Jvb2xlYW4gaGFzX3BlZXJfbGF0ZW5jeTsgICAgLyogcHJvdGVjdGVkIGJ5IHNyY19sb2NrICovCiAKICAgR3N0Q2xvY2tUaW1lIHN1Yl9sYXRlbmN5X21pbjsgLyogcHJvdGVjdGVkIGJ5IHNyY19sb2NrICovCiAgIEdzdENsb2NrVGltZSBzdWJfbGF0ZW5jeV9tYXg7IC8qIHByb3RlY3RlZCBieSBzcmNfbG9jayAqLwpAQCAtMjk4LDcgKzMwMCw3IEBACiAgIEdNdXRleCBzcmNfbG9jazsKICAgR0NvbmQgc3JjX2NvbmQ7CiAKLSAgZ2Jvb2xlYW4gZmlyc3RfYnVmZmVyOworICBnYm9vbGVhbiBmaXJzdF9idWZmZXI7ICAgICAgICAvKiBwcm90ZWN0ZWQgYnkgb2JqZWN0IGxvY2sgKi8KICAgR3N0QWdncmVnYXRvclN0YXJ0VGltZVNlbGVjdGlvbiBzdGFydF90aW1lX3NlbGVjdGlvbjsKICAgR3N0Q2xvY2tUaW1lIHN0YXJ0X3RpbWU7CiAKQEAgLTMxMSw2ICszMTMsNyBAQAogICBHc3RFdmVudCAqZXZlbnQ7CiAgIGdib29sZWFuIHJlc3VsdDsKICAgZ2Jvb2xlYW4gZmx1c2g7CisgIGdib29sZWFuIG9ubHlfdG9fYWN0aXZlX3BhZHM7CiAKICAgZ2Jvb2xlYW4gb25lX2FjdHVhbGx5X3NlZWtlZDsKIH0gRXZlbnREYXRhOwpAQCAtNjk4LDkgKzcwMSw4IEBACiAgICAgfQogCiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwKLSAgICAgICAgImNsb2NrIHJldHVybmVkICVkIChqaXR0ZXI6ICVzJSIgR1NUX1RJTUVfRk9STUFUICIpIiwKLSAgICAgICAgc3RhdHVzLCAoaml0dGVyIDwgMCA/ICItIiA6ICIgIiksCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKChqaXR0ZXIgPCAwID8gLWppdHRlciA6IGppdHRlcikpKTsKKyAgICAgICAgImNsb2NrIHJldHVybmVkICVkIChqaXR0ZXI6ICUiIEdTVF9TVElNRV9GT1JNQVQgIikiLAorICAgICAgICBzdGF0dXMsIEdTVF9TVElNRV9BUkdTIChqaXR0ZXIpKTsKIAogICAgIC8qIHdlIHRpbWVkIG91dCAqLwogICAgIGlmIChzdGF0dXMgPT0gR1NUX0NMT0NLX09LIHx8IHN0YXR1cyA9PSBHU1RfQ0xPQ0tfRUFSTFkpIHsKQEAgLTg1OCw3ICs4NjAsNiBAQAogICBHc3RBZ2dyZWdhdG9yQ2xhc3MgKmtsYXNzOwogICBnYm9vbGVhbiByZXN1bHQ7CiAKLSAgc2VsZi0+cHJpdi0+cnVubmluZyA9IFRSVUU7CiAgIHNlbGYtPnByaXYtPnNlbmRfc3RyZWFtX3N0YXJ0ID0gVFJVRTsKICAgc2VsZi0+cHJpdi0+c2VuZF9zZWdtZW50ID0gVFJVRTsKICAgc2VsZi0+cHJpdi0+c2VuZF9lb3MgPSBUUlVFOwpAQCAtMTA4Niw2ICsxMDg3LDggQEAKICAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYpOwogICAgICAgfQogCisgICAgICBhZ2dwYWQtPnByaXYtPmZpcnN0X2J1ZmZlciA9IFRSVUU7CisKICAgICAgIC8qIFdlIG5ldmVyIGZvcndhcmQgdGhlIGV2ZW50ICovCiAgICAgICBnb3RvIGVhdDsKICAgICB9CkBAIC0xMzAzLDQyICsxMzA2LDYyIEBACiAgIFNSQ19VTkxPQ0sgKHNlbGYpOwogfQogCitzdGF0aWMgR3N0QWdncmVnYXRvclBhZCAqCitnc3RfYWdncmVnYXRvcl9kZWZhdWx0X2NyZWF0ZV9uZXdfcGFkIChHc3RBZ2dyZWdhdG9yICogc2VsZiwKKyAgICBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIHJlcV9uYW1lLCBjb25zdCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0QWdncmVnYXRvclBhZCAqYWdnX3BhZDsKKyAgR3N0QWdncmVnYXRvclByaXZhdGUgKnByaXYgPSBzZWxmLT5wcml2OworICBnaW50IHNlcmlhbCA9IDA7CisgIGdjaGFyICpuYW1lID0gTlVMTDsKKworICBpZiAodGVtcGwtPmRpcmVjdGlvbiAhPSBHU1RfUEFEX1NJTksgfHwKKyAgICAgIGdfc3RyY21wMCAodGVtcGwtPm5hbWVfdGVtcGxhdGUsICJzaW5rXyV1IikpCisgICAgZ290byBub3Rfc2luazsKKworICBHU1RfT0JKRUNUX0xPQ0sgKHNlbGYpOworICBpZiAocmVxX25hbWUgPT0gTlVMTCB8fCBzdHJsZW4gKHJlcV9uYW1lKSA8IDYKKyAgICAgIHx8ICFnX3N0cl9oYXNfcHJlZml4IChyZXFfbmFtZSwgInNpbmtfIikpIHsKKyAgICAvKiBubyBuYW1lIGdpdmVuIHdoZW4gcmVxdWVzdGluZyB0aGUgcGFkLCB1c2UgbmV4dCBhdmFpbGFibGUgaW50ICovCisgICAgcHJpdi0+cGFkY291bnQrKzsKKyAgfSBlbHNlIHsKKyAgICAvKiBwYXJzZSBzZXJpYWwgbnVtYmVyIGZyb20gcmVxdWVzdGVkIHBhZG5hbWUgKi8KKyAgICBzZXJpYWwgPSBnX2FzY2lpX3N0cnRvdWxsICgmcmVxX25hbWVbNV0sIE5VTEwsIDEwKTsKKyAgICBpZiAoc2VyaWFsID49IHByaXYtPnBhZGNvdW50KQorICAgICAgcHJpdi0+cGFkY291bnQgPSBzZXJpYWw7CisgIH0KKworICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic2lua18ldSIsIHByaXYtPnBhZGNvdW50KTsKKyAgYWdnX3BhZCA9IGdfb2JqZWN0X25ldyAoR1NUX0FHR1JFR0FUT1JfR0VUX0NMQVNTIChzZWxmKS0+c2lua3BhZHNfdHlwZSwKKyAgICAgICJuYW1lIiwgbmFtZSwgImRpcmVjdGlvbiIsIEdTVF9QQURfU0lOSywgInRlbXBsYXRlIiwgdGVtcGwsIE5VTEwpOworICBnX2ZyZWUgKG5hbWUpOworCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzZWxmKTsKKworICByZXR1cm4gYWdnX3BhZDsKKworICAvKiBlcnJvcnMgKi8KK25vdF9zaW5rOgorICB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAicmVxdWVzdCBuZXcgcGFkIHRoYXQgaXMgbm90IGEgU0lOSyBwYWRcbiIpOworICAgIHJldHVybiBOVUxMOworICB9Cit9CisKIHN0YXRpYyBHc3RQYWQgKgogZ3N0X2FnZ3JlZ2F0b3JfcmVxdWVzdF9uZXdfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwKICAgICBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLCBjb25zdCBnY2hhciAqIHJlcV9uYW1lLCBjb25zdCBHc3RDYXBzICogY2FwcykKIHsKICAgR3N0QWdncmVnYXRvciAqc2VsZjsKICAgR3N0QWdncmVnYXRvclBhZCAqYWdnX3BhZDsKLQotICBHc3RFbGVtZW50Q2xhc3MgKmtsYXNzID0gR1NUX0VMRU1FTlRfR0VUX0NMQVNTIChlbGVtZW50KTsKKyAgR3N0QWdncmVnYXRvckNsYXNzICprbGFzcyA9IEdTVF9BR0dSRUdBVE9SX0dFVF9DTEFTUyAoZWxlbWVudCk7CiAgIEdzdEFnZ3JlZ2F0b3JQcml2YXRlICpwcml2ID0gR1NUX0FHR1JFR0FUT1IgKGVsZW1lbnQpLT5wcml2OwogCiAgIHNlbGYgPSBHU1RfQUdHUkVHQVRPUiAoZWxlbWVudCk7CiAKLSAgaWYgKHRlbXBsID09IGdzdF9lbGVtZW50X2NsYXNzX2dldF9wYWRfdGVtcGxhdGUgKGtsYXNzLCAic2lua18ldSIpKSB7Ci0gICAgZ2ludCBzZXJpYWwgPSAwOwotICAgIGdjaGFyICpuYW1lID0gTlVMTDsKLQotICAgIEdTVF9PQkpFQ1RfTE9DSyAoZWxlbWVudCk7Ci0gICAgaWYgKHJlcV9uYW1lID09IE5VTEwgfHwgc3RybGVuIChyZXFfbmFtZSkgPCA2Ci0gICAgICAgIHx8ICFnX3N0cl9oYXNfcHJlZml4IChyZXFfbmFtZSwgInNpbmtfIikpIHsKLSAgICAgIC8qIG5vIG5hbWUgZ2l2ZW4gd2hlbiByZXF1ZXN0aW5nIHRoZSBwYWQsIHVzZSBuZXh0IGF2YWlsYWJsZSBpbnQgKi8KLSAgICAgIHByaXYtPnBhZGNvdW50Kys7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8qIHBhcnNlIHNlcmlhbCBudW1iZXIgZnJvbSByZXF1ZXN0ZWQgcGFkbmFtZSAqLwotICAgICAgc2VyaWFsID0gZ19hc2NpaV9zdHJ0b3VsbCAoJnJlcV9uYW1lWzVdLCBOVUxMLCAxMCk7Ci0gICAgICBpZiAoc2VyaWFsID49IHByaXYtPnBhZGNvdW50KQotICAgICAgICBwcml2LT5wYWRjb3VudCA9IHNlcmlhbDsKLSAgICB9Ci0KLSAgICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic2lua18ldSIsIHByaXYtPnBhZGNvdW50KTsKLSAgICBhZ2dfcGFkID0gZ19vYmplY3RfbmV3IChHU1RfQUdHUkVHQVRPUl9HRVRfQ0xBU1MgKHNlbGYpLT5zaW5rcGFkc190eXBlLAotICAgICAgICAibmFtZSIsIG5hbWUsICJkaXJlY3Rpb24iLCBHU1RfUEFEX1NJTkssICJ0ZW1wbGF0ZSIsIHRlbXBsLCBOVUxMKTsKLSAgICBnX2ZyZWUgKG5hbWUpOwotCi0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGVsZW1lbnQpOwotCi0gIH0gZWxzZSB7CisgIGFnZ19wYWQgPSBrbGFzcy0+Y3JlYXRlX25ld19wYWQgKHNlbGYsIHRlbXBsLCByZXFfbmFtZSwgY2Fwcyk7CisgIGlmICghYWdnX3BhZCkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGVsZW1lbnQsICJDb3VsZG4ndCBjcmVhdGUgbmV3IHBhZCIpOwogICAgIHJldHVybiBOVUxMOwogICB9CiAKQEAgLTE0MDEsMTggKzE0MjQsNiBAQAogICBlbHNlCiAgICAgbWF4ID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKIAotICBpZiAobGl2ZSAmJiBtaW4gPiBtYXgpIHsKLSAgICBHU1RfRUxFTUVOVF9XQVJOSU5HIChzZWxmLCBDT1JFLCBORUdPVElBVElPTiwKLSAgICAgICAgKCIlcyIsICJMYXRlbmN5IHRvbyBiaWciKSwKLSAgICAgICAgKCJUaGUgcmVxdWVzdGVkIGxhdGVuY3kgdmFsdWUgaXMgdG9vIGJpZyBmb3IgdGhlIGN1cnJlbnQgcGlwZWxpbmUuICIKLSAgICAgICAgICAgICJMaW1pdGluZyB0byAlIiBHX0dJTlQ2NF9GT1JNQVQsIG1heCkpOwotICAgIG1pbiA9IG1heDsKLSAgICAvKiBGSVhNRTogVGhpcyBjb3VsZCBpbiB0aGVvcnkgYmVjb21lIG5lZ2F0aXZlLCBidXQgaW4KLSAgICAgKiB0aGF0IGNhc2UgYWxsIGlzIGxvc3QgYW55d2F5ICovCi0gICAgc2VsZi0+cHJpdi0+bGF0ZW5jeSAtPSBtaW4gLSBtYXg7Ci0gICAgLyogRklYTUU6IHNob3VsZG4ndCB3ZSBnX29iamVjdF9ub3RpZnkoKSB0aGUgY2hhbmdlIGhlcmU/ICovCi0gIH0KLQogICBTUkNfQlJPQURDQVNUIChzZWxmKTsKIAogICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiY29uZmlndXJlZCBsYXRlbmN5IGxpdmU6JXMgbWluOiUiIEdfR0lOVDY0X0ZPUk1BVApAQCAtMTU1NCw5ICsxNTY1LDE0IEBACiAgIEdzdEFnZ3JlZ2F0b3JQYWQgKmFnZ3BhZCA9IEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKTsKIAogICBpZiAocGVlcikgewotICAgIHJldCA9IGdzdF9wYWRfc2VuZF9ldmVudCAocGVlciwgZ3N0X2V2ZW50X3JlZiAoZXZkYXRhLT5ldmVudCkpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgInJldHVybiBvZiBldmVudCBwdXNoIGlzICVkIiwgcmV0KTsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChwZWVyKTsKKyAgICBpZiAoZXZkYXRhLT5vbmx5X3RvX2FjdGl2ZV9wYWRzICYmIGFnZ3BhZC0+cHJpdi0+Zmlyc3RfYnVmZmVyKSB7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChwYWQsICJub3Qgc2VuZGluZyBldmVudCB0byBpbmFjdGl2ZSBwYWQiKTsKKyAgICAgIHJldCA9IFRSVUU7CisgICAgfSBlbHNlIHsKKyAgICAgIHJldCA9IGdzdF9wYWRfc2VuZF9ldmVudCAocGVlciwgZ3N0X2V2ZW50X3JlZiAoZXZkYXRhLT5ldmVudCkpOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAicmV0dXJuIG9mIGV2ZW50IHB1c2ggaXMgJWQiLCByZXQpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAocGVlcik7CisgICAgfQogICB9CiAKICAgaWYgKHJldCA9PSBGQUxTRSkgewpAQCAtMTYwMSw3ICsxNjE3LDcgQEAKIAogc3RhdGljIEV2ZW50RGF0YQogZ3N0X2FnZ3JlZ2F0b3JfZm9yd2FyZF9ldmVudF90b19hbGxfc2lua3BhZHMgKEdzdEFnZ3JlZ2F0b3IgKiBzZWxmLAotICAgIEdzdEV2ZW50ICogZXZlbnQsIGdib29sZWFuIGZsdXNoKQorICAgIEdzdEV2ZW50ICogZXZlbnQsIGdib29sZWFuIGZsdXNoLCBnYm9vbGVhbiBvbmx5X3RvX2FjdGl2ZV9wYWRzKQogewogICBFdmVudERhdGEgZXZkYXRhOwogCkBAIC0xNjA5LDYgKzE2MjUsNyBAQAogICBldmRhdGEucmVzdWx0ID0gVFJVRTsKICAgZXZkYXRhLmZsdXNoID0gZmx1c2g7CiAgIGV2ZGF0YS5vbmVfYWN0dWFsbHlfc2Vla2VkID0gRkFMU0U7CisgIGV2ZGF0YS5vbmx5X3RvX2FjdGl2ZV9wYWRzID0gb25seV90b19hY3RpdmVfcGFkczsKIAogICAvKiBXZSBmaXJzdCBuZWVkIHRvIHNldCBhbGwgcGFkcyBhcyBmbHVzaGluZyBpbiBhIGZpcnN0IHBhc3MKICAgICogYXMgZmx1c2hfc3RhcnQgZmx1c2hfc3RvcCBpcyBzb21ldGltZXMgc2VudCBzeW5jaHJvbm91c2x5CkBAIC0xNjY4LDcgKzE2ODUsOCBAQAogICBHU1RfT0JKRUNUX1VOTE9DSyAoc2VsZik7CiAKICAgLyogZm9yd2FyZCB0aGUgc2VlayB1cHN0cmVhbSAqLwotICBldmRhdGEgPSBnc3RfYWdncmVnYXRvcl9mb3J3YXJkX2V2ZW50X3RvX2FsbF9zaW5rcGFkcyAoc2VsZiwgZXZlbnQsIGZsdXNoKTsKKyAgZXZkYXRhID0KKyAgICAgIGdzdF9hZ2dyZWdhdG9yX2ZvcndhcmRfZXZlbnRfdG9fYWxsX3NpbmtwYWRzIChzZWxmLCBldmVudCwgZmx1c2gsIEZBTFNFKTsKICAgZXZlbnQgPSBOVUxMOwogCiAgIGlmICghZXZkYXRhLnJlc3VsdCB8fCAhZXZkYXRhLm9uZV9hY3R1YWxseV9zZWVrZWQpIHsKQEAgLTE3MTEsNyArMTcyOSwxMiBAQAogICAgIH0KICAgfQogCi0gIGV2ZGF0YSA9IGdzdF9hZ2dyZWdhdG9yX2ZvcndhcmRfZXZlbnRfdG9fYWxsX3NpbmtwYWRzIChzZWxmLCBldmVudCwgRkFMU0UpOworICAvKiBEb24ndCBmb3J3YXJkIFFPUyBldmVudHMgdG8gcGFkcyB0aGF0IGhhZCBubyBhY3RpdmUgYnVmZmVyIHlldC4gT3RoZXJ3aXNlCisgICAqIHRoZXkgd2lsbCByZWNlaXZlIGEgUU9TIGV2ZW50IHRoYXQgaGFzIGVhcmxpZXN0X3RpbWU9MCAoYmVjYXVzZSB3ZSBjYW4ndAorICAgKiBoYXZlIG5lZ2F0aXZlIHRpbWVzdGFtcHMpLCBhbmQgY29uc2lkZXIgdGhlaXIgYnVmZmVyIGFzIHRvbyBsYXRlICovCisgIGV2ZGF0YSA9CisgICAgICBnc3RfYWdncmVnYXRvcl9mb3J3YXJkX2V2ZW50X3RvX2FsbF9zaW5rcGFkcyAoc2VsZiwgZXZlbnQsIEZBTFNFLAorICAgICAgR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSA9PSBHU1RfRVZFTlRfUU9TKTsKICAgcmVzID0gZXZkYXRhLnJlc3VsdDsKIAogZG9uZToKQEAgLTE4NDksNyArMTg3Miw3IEBACiAgKiBHZXRzIHRoZSBsYXRlbmN5IHZhbHVlLiBTZWUgZ3N0X2FnZ3JlZ2F0b3Jfc2V0X2xhdGVuY3kgZm9yCiAgKiBtb3JlIGRldGFpbHMuCiAgKgotICogUmV0dXJuczogVGhlIHRpbWUgaW4gbmFub3NlY29uZHMgdG8gd2FpdCBmb3IgZGF0YSB0byBhcnJpdmUgb24gYSBzaW5rIHBhZCAKKyAqIFJldHVybnM6IFRoZSB0aW1lIGluIG5hbm9zZWNvbmRzIHRvIHdhaXQgZm9yIGRhdGEgdG8gYXJyaXZlIG9uIGEgc2luayBwYWQKICAqIGJlZm9yZSBhIHBhZCBpcyBkZWVtZWQgdW5yZXNwb25zaXZlLiBBIHZhbHVlIG9mIC0xIG1lYW5zIGFuCiAgKiB1bmxpbWl0ZWQgdGltZS4KICAqLwpAQCAtMTkzMiw2ICsxOTU1LDggQEAKICAga2xhc3MtPnNyY19ldmVudCA9IGdzdF9hZ2dyZWdhdG9yX2RlZmF1bHRfc3JjX2V2ZW50OwogICBrbGFzcy0+c3JjX3F1ZXJ5ID0gZ3N0X2FnZ3JlZ2F0b3JfZGVmYXVsdF9zcmNfcXVlcnk7CiAKKyAga2xhc3MtPmNyZWF0ZV9uZXdfcGFkID0gZ3N0X2FnZ3JlZ2F0b3JfZGVmYXVsdF9jcmVhdGVfbmV3X3BhZDsKKwogICBnc3RlbGVtZW50X2NsYXNzLT5yZXF1ZXN0X25ld19wYWQgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hZ2dyZWdhdG9yX3JlcXVlc3RfbmV3X3BhZCk7CiAgIGdzdGVsZW1lbnRfY2xhc3MtPnNlbmRfZXZlbnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2FnZ3JlZ2F0b3Jfc2VuZF9ldmVudCk7CkBAIC0yMTMxLDggKzIxNTYsMTEgQEAKIAogICBidWZfcHRzID0gR1NUX0JVRkZFUl9QVFMgKGFjdHVhbF9idWYpOwogCisgIGFnZ3BhZC0+cHJpdi0+Zmlyc3RfYnVmZmVyID0gRkFMU0U7CisKICAgZm9yICg7OykgewogICAgIFNSQ19MT0NLIChzZWxmKTsKKyAgICBHU1RfT0JKRUNUX0xPQ0sgKHNlbGYpOwogICAgIFBBRF9MT0NLIChhZ2dwYWQpOwogICAgIGlmIChnc3RfYWdncmVnYXRvcl9wYWRfaGFzX3NwYWNlIChzZWxmLCBhZ2dwYWQpCiAgICAgICAgICYmIGFnZ3BhZC0+cHJpdi0+Zmxvd19yZXR1cm4gPT0gR1NUX0ZMT1dfT0spIHsKQEAgLTIxNDksMTAgKzIxNzcsMTIgQEAKIAogICAgIGZsb3dfcmV0dXJuID0gYWdncGFkLT5wcml2LT5mbG93X3JldHVybjsKICAgICBpZiAoZmxvd19yZXR1cm4gIT0gR1NUX0ZMT1dfT0spIHsKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzZWxmKTsKICAgICAgIFNSQ19VTkxPQ0sgKHNlbGYpOwogICAgICAgZ290byBmbHVzaGluZzsKICAgICB9CiAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWdncGFkLCAiV2FpdGluZyBmb3IgYnVmZmVyIHRvIGJlIGNvbnN1bWVkIik7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYpOwogICAgIFNSQ19VTkxPQ0sgKHNlbGYpOwogICAgIFBBRF9XQUlUX0VWRU5UIChhZ2dwYWQpOwogCkBAIC0yMTY4LDYgKzIxOTgsNyBAQAogICAgICAgICBzdGFydF90aW1lID0gMDsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdTVF9BR0dSRUdBVE9SX1NUQVJUX1RJTUVfU0VMRUNUSU9OX0ZJUlNUOgorICAgICAgICBHU1RfT0JKRUNUX0xPQ0sgKGFnZ3BhZCk7CiAgICAgICAgIGlmIChhZ2dwYWQtPnNlZ21lbnQuZm9ybWF0ID09IEdTVF9GT1JNQVRfVElNRSkgewogICAgICAgICAgIHN0YXJ0X3RpbWUgPSBidWZfcHRzOwogICAgICAgICAgIGlmIChzdGFydF90aW1lICE9IC0xKSB7CkBAIC0yMTgzLDYgKzIyMTQsNyBAQAogICAgICAgICAgICAgICAiYXMgdGhlIHNlZ21lbnQgaXMgYSAlcyBzZWdtZW50IGluc3RlYWQgb2YgYSB0aW1lIHNlZ21lbnQiLAogICAgICAgICAgICAgICBnc3RfZm9ybWF0X2dldF9uYW1lIChhZ2dwYWQtPnNlZ21lbnQuZm9ybWF0KSk7CiAgICAgICAgIH0KKyAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFnZ3BhZCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBHU1RfQUdHUkVHQVRPUl9TVEFSVF9USU1FX1NFTEVDVElPTl9TRVQ6CiAgICAgICAgIHN0YXJ0X3RpbWUgPSBzZWxmLT5wcml2LT5zdGFydF90aW1lOwpAQCAtMjIwMyw2ICsyMjM1LDcgQEAKICAgfQogCiAgIFBBRF9VTkxPQ0sgKGFnZ3BhZCk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzZWxmKTsKICAgU1JDX1VOTE9DSyAoc2VsZik7CiAKIGRvbmU6CkBAIC0yNDE0LDYgKzI0NDcsOCBAQAogCiAgIGdfbXV0ZXhfaW5pdCAoJnBhZC0+cHJpdi0+Zmx1c2hfbG9jayk7CiAgIGdfbXV0ZXhfaW5pdCAoJnBhZC0+cHJpdi0+bG9jayk7CisKKyAgcGFkLT5wcml2LT5maXJzdF9idWZmZXIgPSBUUlVFOwogfQogCiAvKioKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuaCBiL2dzdC1saWJzL2dzdC9iYXNlL2dzdGFnZ3JlZ2F0b3IuaAppbmRleCA4ZWRhN2RjLi5lMWFmZWE0IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2Jhc2UvZ3N0YWdncmVnYXRvci5oCkBAIC0yNDUsNiArMjQ1LDExIEBACiAKICAgR3N0Q2xvY2tUaW1lICAgICAgKCpnZXRfbmV4dF90aW1lKSAgKEdzdEFnZ3JlZ2F0b3IgICAgKiAgYWdncmVnYXRvcik7CiAKKyAgR3N0QWdncmVnYXRvclBhZCAqICgqY3JlYXRlX25ld19wYWQpIChHc3RBZ2dyZWdhdG9yICAqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgICAqIHJlcV9uYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdzdENhcHMgICogY2Fwcyk7CisKICAgLyo8IHByaXZhdGUgPiovCiAgIGdwb2ludGVyICAgICAgICAgIF9nc3RfcmVzZXJ2ZWRbR1NUX1BBRERJTkdfTEFSR0VdOwogfTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9iYXNlY2FtZXJhYmluc3JjL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L2Jhc2VjYW1lcmFiaW5zcmMvTWFrZWZpbGUuaW4KaW5kZXggNjZkYWEyNy4uMmVhZDNmMSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2Jhc2VjYW1lcmFiaW5zcmMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2Jhc2VjYW1lcmFiaW5zcmMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXApAQCAtMjY1LDYgKzI2NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzAyLDYgKzMwMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzEwLDcgKzMxMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMyOSw4ICszMzEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzQ3LDE2ICszNTAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzgyLDYgKzM4Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQwNyw2ICs0MTMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MDgsNiArNTE2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyMSw4ICs1MzAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MzgsNiArNTQ1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU5NSwxNiArNjA0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjU2LDYgKzY2Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NjYsNiArNjc4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjc1LDYgKzY4OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTIsNyArNzI3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5hbQppbmRleCBlMjQ5OGRiLi5iMTgwNTcwIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL01ha2VmaWxlLmFtCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuYW0KQEAgLTUsMTggKzUsMjAgQEAKIAlnc3RoMjY1cGFyc2VyLmMgZ3N0dnA4cGFyc2VyLmMgZ3N0dnA4cmFuZ2VkZWNvZGVyLmMgXAogCXBhcnNlcnV0aWxzLmMgbmFsdXRpbHMuYyBkYm9vbGh1ZmYuYyB2cDh1dGlscy5jIFwKIAlnc3RqcGVncGFyc2VyLmMgXAotCWdzdG1wZWd2aWRlb21ldGEuYworCWdzdG1wZWd2aWRlb21ldGEuYyBcCisJZ3N0dnA5cGFyc2VyLmMgdnA5dXRpbHMuYwogCiBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyID0gXAogCSQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9jb2RlY3BhcnNlcnMKIAotbm9pbnN0X0hFQURFUlMgPSBwYXJzZXJ1dGlscy5oIG5hbHV0aWxzLmggZGJvb2xodWZmLmggdnA4dXRpbHMuaAorbm9pbnN0X0hFQURFUlMgPSBwYXJzZXJ1dGlscy5oIG5hbHV0aWxzLmggZGJvb2xodWZmLmggdnA4dXRpbHMuaCB2cDl1dGlscy5oCiAKIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyA9IFwKIAlnc3RtcGVndmlkZW9wYXJzZXIuaCBnc3RoMjY0cGFyc2VyLmggZ3N0dmMxcGFyc2VyLmggZ3N0bXBlZzRwYXJzZXIuaCBcCiAJZ3N0aDI2NXBhcnNlci5oIGdzdHZwOHBhcnNlci5oIGdzdHZwOHJhbmdlZGVjb2Rlci5oIFwKIAlnc3RqcGVncGFyc2VyLmggXAotCWdzdG1wZWd2aWRlb21ldGEuaAorCWdzdG1wZWd2aWRlb21ldGEuaCBcCisJZ3N0dnA5cGFyc2VyLmgKIAogbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUyA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL01ha2VmaWxlLmluCmluZGV4IDdhYmFkNzcuLjEwMTE5YmEgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCkBAIC0xODIsNyArMTgxLDkgQEAKIAlsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZGJvb2xodWZmLmxvIFwKIAlsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA4dXRpbHMubG8gXAogCWxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RqcGVncGFyc2VyLmxvIFwKLQlsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0bXBlZ3ZpZGVvbWV0YS5sbworCWxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RtcGVndmlkZW9tZXRhLmxvIFwKKwlsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA5cGFyc2VyLmxvIFwKKwlsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA5dXRpbHMubG8KIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTID0gIFwKIAkkKGFtX2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQpAQCAtMjkzLDYgKzI5NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzMwLDYgKzMzMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzM4LDcgKzM0Myw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1Nyw4ICszNjEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzc1LDE2ICszODAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDEwLDYgKzQxNiw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzNSw2ICs0NDMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzYsNiArNTQ2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0OSw4ICs1NjAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjYsNiArNTc1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYyMywxNiArNjM0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjg0LDYgKzY5Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02OTQsNiArNzA4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzAzLDYgKzcxOCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NDAsNyArNzU3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03ODYsMTcgKzgwMiwxOSBAQAogCWdzdGgyNjVwYXJzZXIuYyBnc3R2cDhwYXJzZXIuYyBnc3R2cDhyYW5nZWRlY29kZXIuYyBcCiAJcGFyc2VydXRpbHMuYyBuYWx1dGlscy5jIGRib29saHVmZi5jIHZwOHV0aWxzLmMgXAogCWdzdGpwZWdwYXJzZXIuYyBcCi0JZ3N0bXBlZ3ZpZGVvbWV0YS5jCisJZ3N0bXBlZ3ZpZGVvbWV0YS5jIFwKKwlnc3R2cDlwYXJzZXIuYyB2cDl1dGlscy5jCiAKIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIgPSBcCiAJJChpbmNsdWRlZGlyKS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvZ3N0L2NvZGVjcGFyc2VycwogCi1ub2luc3RfSEVBREVSUyA9IHBhcnNlcnV0aWxzLmggbmFsdXRpbHMuaCBkYm9vbGh1ZmYuaCB2cDh1dGlscy5oCitub2luc3RfSEVBREVSUyA9IHBhcnNlcnV0aWxzLmggbmFsdXRpbHMuaCBkYm9vbGh1ZmYuaCB2cDh1dGlscy5oIHZwOXV0aWxzLmgKIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVfSEVBREVSUyA9IFwKIAlnc3RtcGVndmlkZW9wYXJzZXIuaCBnc3RoMjY0cGFyc2VyLmggZ3N0dmMxcGFyc2VyLmggZ3N0bXBlZzRwYXJzZXIuaCBcCiAJZ3N0aDI2NXBhcnNlci5oIGdzdHZwOHBhcnNlci5oIGdzdHZwOHJhbmdlZGVjb2Rlci5oIFwKIAlnc3RqcGVncGFyc2VyLmggXAotCWdzdG1wZWd2aWRlb21ldGEuaAorCWdzdG1wZWd2aWRlb21ldGEuaCBcCisJZ3N0dnA5cGFyc2VyLmgKIAogbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUyA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKQEAgLTkwNSw5ICs5MjMsMTEgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dmMxcGFyc2VyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHZwOHBhcnNlci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDhyYW5nZWRlY29kZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA5cGFyc2VyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLW5hbHV0aWxzLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXBhcnNlcnV0aWxzLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOHV0aWxzLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC0xMDI0LDYgKzEwNDQsMjAgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdG1wZWd2aWRlb21ldGEubG8gYHRlc3QgLWYgJ2dzdG1wZWd2aWRlb21ldGEuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bXBlZ3ZpZGVvbWV0YS5jCiAKK2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIubG86IGdzdHZwOXBhcnNlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA5cGFyc2VyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA5cGFyc2VyLlRwbyAtYyAtbyBsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA5cGFyc2VyLmxvIGB0ZXN0IC1mICdnc3R2cDlwYXJzZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0dnA5cGFyc2VyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIuVHBvICQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0dnA5cGFyc2VyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHZwOXBhcnNlci5jJyBvYmplY3Q9J2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3R2cDlwYXJzZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHZwOXBhcnNlci5sbyBgdGVzdCAtZiAnZ3N0dnA5cGFyc2VyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHZwOXBhcnNlci5jCisKK2xpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS12cDl1dGlscy5sbzogdnA5dXRpbHMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3Rjb2RlY3BhcnNlcnNfQEdTVF9BUElfVkVSU0lPTkBfbGEtdnA5dXRpbHMuVHBvIC1jIC1vIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS12cDl1dGlscy5sbyBgdGVzdCAtZiAndnA5dXRpbHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdnA5dXRpbHMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLlRwbyAkKERFUERJUikvbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3ZwOXV0aWxzLmMnIG9iamVjdD0nbGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhLXZwOXV0aWxzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Y29kZWNwYXJzZXJzX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGNvZGVjcGFyc2Vyc19AR1NUX0FQSV9WRVJTSU9OQF9sYS12cDl1dGlscy5sbyBgdGVzdCAtZiAndnA5dXRpbHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdnA5dXRpbHMuYworCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZGJvb2xodWZmLmggYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2Rib29saHVmZi5oCmluZGV4IDVkMjdlYWYuLjFjYTUxYzEgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZGJvb2xodWZmLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9kYm9vbGh1ZmYuaApAQCAtMTUsNiArMTUsNyBAQAogI2luY2x1ZGUgPHN0ZGludC5oPgogI2luY2x1ZGUgPHN0ZGRlZi5oPgogI2luY2x1ZGUgPGxpbWl0cy5oPgorI2luY2x1ZGUgPGdsaWIuaD4KIAogdHlwZWRlZiBzaXplX3QgVlA4X0JEX1ZBTFVFOwogCkBAIC00MiwxNCArNDMsMTcgQEAKICAgICB2b2lkICAgICAgICAgICAgICAgICpkZWNyeXB0X3N0YXRlOwogfSBCT09MX0RFQ09ERVI7CiAKK0dfR05VQ19JTlRFUk5BTAogZXh0ZXJuIGNvbnN0IHVuc2lnbmVkIGNoYXIgdnA4X25vcm1bMjU2XTsKIAorR19HTlVDX0lOVEVSTkFMCiBpbnQgdnA4ZHhfc3RhcnRfZGVjb2RlKEJPT0xfREVDT0RFUiAqYnIsCiAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IHNvdXJjZV9zeiwKICAgICAgICAgICAgICAgICAgICAgICAgdnA4X2RlY3J5cHRfY2IgKmRlY3J5cHRfY2IsCiAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmRlY3J5cHRfc3RhdGUpOwogCitHX0dOVUNfSU5URVJOQUwKIHZvaWQgdnA4ZHhfYm9vbF9kZWNvZGVyX2ZpbGwoQk9PTF9ERUNPREVSICpicik7CiAKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY0cGFyc2VyLmMgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdGgyNjRwYXJzZXIuYwppbmRleCA0MDkyYWNiLi45ZGM5ODIyIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdGgyNjRwYXJzZXIuYworKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdGgyNjRwYXJzZXIuYwpAQCAtNDI4LDE3ICs0MjgsMTAgQEAKIAogICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBiaXRzdHJlYW0KICAgICAgYW5kIGhhdmUgdmFsaWQgZGVmYXVsdHMgKi8KLSAgdnVpLT5hc3BlY3RfcmF0aW9faWRjID0gMDsKICAgdnVpLT52aWRlb19mb3JtYXQgPSA1OwotICB2dWktPnZpZGVvX2Z1bGxfcmFuZ2VfZmxhZyA9IDA7CiAgIHZ1aS0+Y29sb3VyX3ByaW1hcmllcyA9IDI7CiAgIHZ1aS0+dHJhbnNmZXJfY2hhcmFjdGVyaXN0aWNzID0gMjsKICAgdnVpLT5tYXRyaXhfY29lZmZpY2llbnRzID0gMjsKLSAgdnVpLT5jaHJvbWFfc2FtcGxlX2xvY190eXBlX3RvcF9maWVsZCA9IDA7Ci0gIHZ1aS0+Y2hyb21hX3NhbXBsZV9sb2NfdHlwZV9ib3R0b21fZmllbGQgPSAwOwotICB2dWktPmxvd19kZWxheV9ocmRfZmxhZyA9IDA7Ci0gIHZ1aS0+cGFyX24gPSAwOwotICB2dWktPnBhcl9kID0gMDsKIAogICBSRUFEX1VJTlQ4IChuciwgdnVpLT5hc3BlY3RfcmF0aW9faW5mb19wcmVzZW50X2ZsYWcsIDEpOwogICBpZiAodnVpLT5hc3BlY3RfcmF0aW9faW5mb19wcmVzZW50X2ZsYWcpIHsKQEAgLTc4MCwxMSArNzczLDkgQEAKICAgZGVmYXVsdF9sdW1hX3dlaWdodCA9IDEgPDwgcC0+bHVtYV9sb2cyX3dlaWdodF9kZW5vbTsKICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAocC0+bHVtYV93ZWlnaHRfbDApOyBpKyspCiAgICAgcC0+bHVtYV93ZWlnaHRfbDBbaV0gPSBkZWZhdWx0X2x1bWFfd2VpZ2h0OwotICBtZW1zZXQgKHAtPmx1bWFfb2Zmc2V0X2wwLCAwLCBzaXplb2YgKHAtPmx1bWFfb2Zmc2V0X2wwKSk7CiAgIGlmIChHU1RfSDI2NF9JU19CX1NMSUNFIChzbGljZSkpIHsKICAgICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChwLT5sdW1hX3dlaWdodF9sMSk7IGkrKykKICAgICAgIHAtPmx1bWFfd2VpZ2h0X2wxW2ldID0gZGVmYXVsdF9sdW1hX3dlaWdodDsKLSAgICBtZW1zZXQgKHAtPmx1bWFfb2Zmc2V0X2wxLCAwLCBzaXplb2YgKHAtPmx1bWFfb2Zmc2V0X2wxKSk7CiAgIH0KIAogICBpZiAoY2hyb21hX2FycmF5X3R5cGUgIT0gMCkgewpAQCAtNzk1LDEzICs3ODYsMTEgQEAKICAgICAgIHAtPmNocm9tYV93ZWlnaHRfbDBbaV1bMF0gPSBkZWZhdWx0X2Nocm9tYV93ZWlnaHQ7CiAgICAgICBwLT5jaHJvbWFfd2VpZ2h0X2wwW2ldWzFdID0gZGVmYXVsdF9jaHJvbWFfd2VpZ2h0OwogICAgIH0KLSAgICBtZW1zZXQgKHAtPmNocm9tYV9vZmZzZXRfbDAsIDAsIHNpemVvZiAocC0+Y2hyb21hX29mZnNldF9sMCkpOwogICAgIGlmIChHU1RfSDI2NF9JU19CX1NMSUNFIChzbGljZSkpIHsKICAgICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKHAtPmNocm9tYV93ZWlnaHRfbDEpOyBpKyspIHsKICAgICAgICAgcC0+Y2hyb21hX3dlaWdodF9sMVtpXVswXSA9IGRlZmF1bHRfY2hyb21hX3dlaWdodDsKICAgICAgICAgcC0+Y2hyb21hX3dlaWdodF9sMVtpXVsxXSA9IGRlZmF1bHRfY2hyb21hX3dlaWdodDsKICAgICAgIH0KLSAgICAgIG1lbXNldCAocC0+Y2hyb21hX29mZnNldF9sMSwgMCwgc2l6ZW9mIChwLT5jaHJvbWFfb2Zmc2V0X2wxKSk7CiAgICAgfQogICB9CiAKQEAgLTk4NSwxMiArOTc0LDYgQEAKICAgICBnb3RvIGVycm9yOwogICB9CiAKLSAgLyogZGVmYXVsdCB2YWx1ZXMgKi8KLSAgdGltLT5jcGJfcmVtb3ZhbF9kZWxheSA9IDA7Ci0gIHRpbS0+ZHBiX291dHB1dF9kZWxheSA9IDA7Ci0gIHRpbS0+cGljX3N0cnVjdF9wcmVzZW50X2ZsYWcgPSBGQUxTRTsKLSAgbWVtc2V0ICh0aW0tPmNsb2NrX3RpbWVzdGFtcF9mbGFnLCAwLCAzKTsKLQogICBpZiAobmFscGFyc2VyLT5sYXN0X3Nwcy0+dnVpX3BhcmFtZXRlcnNfcHJlc2VudF9mbGFnKSB7CiAgICAgR3N0SDI2NFZVSVBhcmFtcyAqdnVpID0gJm5hbHBhcnNlci0+bGFzdF9zcHMtPnZ1aV9wYXJhbWV0ZXJzOwogCkBAIC0xMTU0LDcgKzExMzcsOCBAQAogCiAgIEdTVF9ERUJVRyAoInBhcnNpbmcgXCJTZWkgbWVzc2FnZVwiIik7CiAKLSAgc2VpLT5wYXlsb2FkVHlwZSA9IDA7CisgIG1lbXNldCAoc2VpLCAwLCBzaXplb2YgKCpzZWkpKTsKKwogICBkbyB7CiAgICAgUkVBRF9VSU5UOCAobnIsIHBheWxvYWRfdHlwZV9ieXRlLCA4KTsKICAgICBzZWktPnBheWxvYWRUeXBlICs9IHBheWxvYWRfdHlwZV9ieXRlOwpAQCAtMTI5NCw2ICsxMjc4LDggQEAKIHsKICAgZ2ludCBvZmYxOwogCisgIG1lbXNldCAobmFsdSwgMCwgc2l6ZW9mICgqbmFsdSkpOworCiAgIGlmIChzaXplIDwgb2Zmc2V0ICsgNCkgewogICAgIEdTVF9ERUJVRyAoIkNhbid0IHBhcnNlLCBidWZmZXIgaGFzIHRvbyBzbWFsbCBzaXplICUiIEdfR1NJWkVfRk9STUFUCiAgICAgICAgICIsIG9mZnNldCAldSIsIHNpemUsIG9mZnNldCk7CkBAIC0xNDE0LDYgKzE0MDAsOCBAQAogewogICBHc3RCaXRSZWFkZXIgYnI7CiAKKyAgbWVtc2V0IChuYWx1LCAwLCBzaXplb2YgKCpuYWx1KSk7CisKICAgaWYgKHNpemUgPCBvZmZzZXQgKyBuYWxfbGVuZ3RoX3NpemUpIHsKICAgICBHU1RfREVCVUcgKCJDYW4ndCBwYXJzZSwgYnVmZmVyIGhhcyB0b28gc21hbGwgc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVAogICAgICAgICAiLCBvZmZzZXQgJXUiLCBzaXplLCBvZmZzZXQpOwpAQCAtMTUxMiwyMiArMTUwMCwxNCBAQAogICBndWludCBzdWJoY1tdID0geyAxLCAyLCAxLCAxIH07CiAgIEdzdEgyNjRWVUlQYXJhbXMgKnZ1aSA9IE5VTEw7CiAKKyAgbWVtc2V0IChzcHMsIDAsIHNpemVvZiAoKnNwcykpOworCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwogICBzcHMtPmV4dGVuc2lvbl90eXBlID0gR1NUX0gyNjRfTkFMX0VYVEVOU0lPTl9OT05FOwogICBzcHMtPmNocm9tYV9mb3JtYXRfaWRjID0gMTsKLSAgc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZyA9IDA7Ci0gIHNwcy0+Yml0X2RlcHRoX2x1bWFfbWludXM4ID0gMDsKLSAgc3BzLT5iaXRfZGVwdGhfY2hyb21hX21pbnVzOCA9IDA7CiAgIG1lbXNldCAoc3BzLT5zY2FsaW5nX2xpc3RzXzR4NCwgMTYsIDk2KTsKICAgbWVtc2V0IChzcHMtPnNjYWxpbmdfbGlzdHNfOHg4LCAxNiwgMzg0KTsKLSAgbWVtc2V0ICgmc3BzLT52dWlfcGFyYW1ldGVycywgMCwgc2l6ZW9mIChzcHMtPnZ1aV9wYXJhbWV0ZXJzKSk7Ci0gIHNwcy0+bWJfYWRhcHRpdmVfZnJhbWVfZmllbGRfZmxhZyA9IDA7Ci0gIHNwcy0+ZnJhbWVfY3JvcF9sZWZ0X29mZnNldCA9IDA7Ci0gIHNwcy0+ZnJhbWVfY3JvcF9yaWdodF9vZmZzZXQgPSAwOwotICBzcHMtPmZyYW1lX2Nyb3BfdG9wX29mZnNldCA9IDA7Ci0gIHNwcy0+ZnJhbWVfY3JvcF9ib3R0b21fb2Zmc2V0ID0gMDsKLSAgc3BzLT5kZWx0YV9waWNfb3JkZXJfYWx3YXlzX3plcm9fZmxhZyA9IDA7CiAKICAgUkVBRF9VSU5UOCAobnIsIHNwcy0+cHJvZmlsZV9pZGMsIDgpOwogICBSRUFEX1VJTlQ4IChuciwgc3BzLT5jb25zdHJhaW50X3NldDBfZmxhZywgMSk7CkBAIC0xNjE2LDkgKzE1OTYsNyBAQAogICB9CiAKICAgLyogY2FsY3VsYXRlIENocm9tYUFycmF5VHlwZSAqLwotICBpZiAoc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZykKLSAgICBzcHMtPmNocm9tYV9hcnJheV90eXBlID0gMDsKLSAgZWxzZQorICBpZiAoIXNwcy0+c2VwYXJhdGVfY29sb3VyX3BsYW5lX2ZsYWcpCiAgICAgc3BzLT5jaHJvbWFfYXJyYXlfdHlwZSA9IHNwcy0+Y2hyb21hX2Zvcm1hdF9pZGM7CiAKICAgLyogQ2FsY3VsYXRlICB3aWR0aCBhbmQgaGVpZ2h0ICovCkBAIC0xOTM2LDYgKzE5MTQsOCBAQAogICBuYWxfcmVhZGVyX2luaXQgKCZuciwgbmFsdS0+ZGF0YSArIG5hbHUtPm9mZnNldCArIG5hbHUtPmhlYWRlcl9ieXRlcywKICAgICAgIG5hbHUtPnNpemUgLSBuYWx1LT5oZWFkZXJfYnl0ZXMpOwogCisgIG1lbXNldCAocHBzLCAwLCBzaXplb2YgKCpwcHMpKTsKKwogICBSRUFEX1VFX01BWCAoJm5yLCBwcHMtPmlkLCBHU1RfSDI2NF9NQVhfUFBTX0NPVU5UIC0gMSk7CiAgIFJFQURfVUVfTUFYICgmbnIsIHNwc19pZCwgR1NUX0gyNjRfTUFYX1NQU19DT1VOVCAtIDEpOwogCkBAIC0xOTUxLDggKzE5MzEsNiBAQAogCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICBwcHMtPnNsaWNlX2dyb3VwX2lkID0gTlVMTDsKLSAgcHBzLT50cmFuc2Zvcm1fOHg4X21vZGVfZmxhZyA9IDA7CiAgIG1lbWNweSAoJnBwcy0+c2NhbGluZ19saXN0c180eDQsICZzcHMtPnNjYWxpbmdfbGlzdHNfNHg0LCA5Nik7CiAgIG1lbWNweSAoJnBwcy0+c2NhbGluZ19saXN0c184eDgsICZzcHMtPnNjYWxpbmdfbGlzdHNfOHg4LCAzODQpOwogCkBAIC0yMTEzLDEyICsyMDkxLDEzIEBACiAgIEdzdEgyNjRQUFMgKnBwczsKICAgR3N0SDI2NFNQUyAqc3BzOwogCisgIG1lbXNldCAoc2xpY2UsIDAsIHNpemVvZiAoKnNsaWNlKSk7CisKICAgaWYgKCFuYWx1LT5zaXplKSB7CiAgICAgR1NUX0RFQlVHICgiSW52YWxpZCBOYWwgVW5pdCIpOwogICAgIHJldHVybiBHU1RfSDI2NF9QQVJTRVJfRVJST1I7CiAgIH0KIAotCiAgIG5hbF9yZWFkZXJfaW5pdCAoJm5yLCBuYWx1LT5kYXRhICsgbmFsdS0+b2Zmc2V0ICsgbmFsdS0+aGVhZGVyX2J5dGVzLAogICAgICAgbmFsdS0+c2l6ZSAtIG5hbHUtPmhlYWRlcl9ieXRlcyk7CiAKQEAgLTIxNTMsMTcgKzIxMzIsOCBAQAogCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICBzbGljZS0+ZmllbGRfcGljX2ZsYWcgPSAwOwotICBzbGljZS0+Ym90dG9tX2ZpZWxkX2ZsYWcgPSAwOwotICBzbGljZS0+ZGVsdGFfcGljX29yZGVyX2NudF9ib3R0b20gPSAwOwotICBzbGljZS0+ZGVsdGFfcGljX29yZGVyX2NudFswXSA9IDA7Ci0gIHNsaWNlLT5kZWx0YV9waWNfb3JkZXJfY250WzFdID0gMDsKLSAgc2xpY2UtPnJlZHVuZGFudF9waWNfY250ID0gMDsKICAgc2xpY2UtPm51bV9yZWZfaWR4X2wwX2FjdGl2ZV9taW51czEgPSBwcHMtPm51bV9yZWZfaWR4X2wwX2FjdGl2ZV9taW51czE7CiAgIHNsaWNlLT5udW1fcmVmX2lkeF9sMV9hY3RpdmVfbWludXMxID0gcHBzLT5udW1fcmVmX2lkeF9sMV9hY3RpdmVfbWludXMxOwotICBzbGljZS0+ZGlzYWJsZV9kZWJsb2NraW5nX2ZpbHRlcl9pZGMgPSAwOwotICBzbGljZS0+c2xpY2VfYWxwaGFfYzBfb2Zmc2V0X2RpdjIgPSAwOwotICBzbGljZS0+c2xpY2VfYmV0YV9vZmZzZXRfZGl2MiA9IDA7CiAKICAgaWYgKHNwcy0+c2VwYXJhdGVfY29sb3VyX3BsYW5lX2ZsYWcpCiAgICAgUkVBRF9VSU5UOCAoJm5yLCBzbGljZS0+Y29sb3VyX3BsYW5lX2lkLCAyKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NXBhcnNlci5jIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmMKaW5kZXggNzdhNDYxMC4uNTJhMWZjMiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY1cGFyc2VyLmMKQEAgLTI2NiwxMSArMjY2LDYgQEAKICAgZ3VpbnQgaSwgajsKICAgR1NUX0RFQlVHICgicGFyc2luZyBcIlByb2ZpbGVUaWVyTGV2ZWwgcGFyYW1ldGVyc1wiIik7CiAKLSAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUKLSAgICogYml0c3RyZWFtIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCi0gIGZvciAoaSA9IDA7IGkgPCBtYXhOdW1TdWJMYXllcnNNaW51czE7IGkrKykKLSAgICBwdGwtPnN1Yl9sYXllcl90aWVyX2ZsYWdbaV0gPSAwOwotCiAgIFJFQURfVUlOVDggKG5yLCBwdGwtPnByb2ZpbGVfc3BhY2UsIDIpOwogICBSRUFEX1VJTlQ4IChuciwgcHRsLT50aWVyX2ZsYWcsIDEpOwogICBSRUFEX1VJTlQ4IChuciwgcHRsLT5wcm9maWxlX2lkYywgNSk7CkBAIC0zMzYsMTEgKzMzMSw2IEBACiAKICAgR1NUX0RFQlVHICgicGFyc2luZyBcIlN1YkxheWVyIEhSRCBQYXJhbWV0ZXJzXCIiKTsKIAotICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBiaXRzdHJlYW0KLSAgICAgYW5kIGhhdmUgdmFsaWQgZGVmYXVsdHMgKi8KLSAgZm9yIChpID0gMDsgaSA8PSBDcGJDbnQ7IGkrKykKLSAgICBzdWJfaHJkLT5jYnJfZmxhZ1tpXSA9IDA7Ci0KICAgZm9yIChpID0gMDsgaSA8PSBDcGJDbnQ7IGkrKykgewogICAgIFJFQURfVUVfTUFYIChuciwgc3ViX2hyZC0+Yml0X3JhdGVfdmFsdWVfbWludXMxW2ldLCBHX01BWFVJTlQzMiAtIDEpOwogICAgIFJFQURfVUVfTUFYIChuciwgc3ViX2hyZC0+Y3BiX3NpemVfdmFsdWVfbWludXMxW2ldLCBHX01BWFVJTlQzMiAtIDEpOwpAQCAtMzcwLDE2ICszNjAsOSBAQAogCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICBocmQtPnN1Yl9waWNfaHJkX3BhcmFtc19wcmVzZW50X2ZsYWcgPSAwOwotICBocmQtPnN1Yl9waWNfY3BiX3BhcmFtc19pbl9waWNfdGltaW5nX3NlaV9mbGFnID0gMDsKICAgaHJkLT5pbml0aWFsX2NwYl9yZW1vdmFsX2RlbGF5X2xlbmd0aF9taW51czEgPSAyMzsKICAgaHJkLT5hdV9jcGJfcmVtb3ZhbF9kZWxheV9sZW5ndGhfbWludXMxID0gMjM7CiAgIGhyZC0+ZHBiX291dHB1dF9kZWxheV9sZW5ndGhfbWludXMxID0gMjM7Ci0gIGZvciAoaSA9IDA7IGkgPD0gbWF4TnVtU3ViTGF5ZXJzTWludXMxOyBpKyspIHsKLSAgICBocmQtPmZpeGVkX3BpY19yYXRlX2dlbmVyYWxfZmxhZ1tpXSA9IDA7Ci0gICAgaHJkLT5sb3dfZGVsYXlfaHJkX2ZsYWdbaV0gPSAwOwotICAgIGhyZC0+Y3BiX2NudF9taW51czFbaV0gPSAwOwotICB9CiAKICAgaWYgKGNvbW1vbkluZlByZXNlbnRGbGFnKSB7CiAgICAgUkVBRF9VSU5UOCAobnIsIGhyZC0+bmFsX2hyZF9wYXJhbWV0ZXJzX3ByZXNlbnRfZmxhZywgMSk7CkBAIC00NTQsMzUgKzQzNywxOSBAQAogCiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgICBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICB2dWktPmFzcGVjdF9yYXRpb19pZGMgPSAwOwogICB2dWktPnZpZGVvX2Zvcm1hdCA9IDU7Ci0gIHZ1aS0+dmlkZW9fZnVsbF9yYW5nZV9mbGFnID0gMDsKICAgdnVpLT5jb2xvdXJfcHJpbWFyaWVzID0gMjsKICAgdnVpLT50cmFuc2Zlcl9jaGFyYWN0ZXJpc3RpY3MgPSAyOwogICB2dWktPm1hdHJpeF9jb2VmZmljaWVudHMgPSAyOwotICB2dWktPmNocm9tYV9zYW1wbGVfbG9jX3R5cGVfdG9wX2ZpZWxkID0gMDsKLSAgdnVpLT5jaHJvbWFfc2FtcGxlX2xvY190eXBlX2JvdHRvbV9maWVsZCA9IDA7Ci0gIHZ1aS0+bmV1dHJhbF9jaHJvbWFfaW5kaWNhdGlvbl9mbGFnID0gMDsKLSAgdnVpLT5maWVsZF9zZXFfZmxhZyA9IDA7Ci0gIHZ1aS0+ZGVmX2Rpc3Bfd2luX2xlZnRfb2Zmc2V0ID0gMDsKLSAgdnVpLT5kZWZfZGlzcF93aW5fcmlnaHRfb2Zmc2V0ID0gMDsKLSAgdnVpLT5kZWZfZGlzcF93aW5fdG9wX29mZnNldCA9IDA7Ci0gIHZ1aS0+ZGVmX2Rpc3Bfd2luX2JvdHRvbV9vZmZzZXQgPSAwOwotICB2dWktPnRpbGVzX2ZpeGVkX3N0cnVjdHVyZV9mbGFnID0gMDsKICAgdnVpLT5tb3Rpb25fdmVjdG9yc19vdmVyX3BpY19ib3VuZGFyaWVzX2ZsYWcgPSAxOwotICB2dWktPm1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbl9pZGMgPSAwOwogICB2dWktPm1heF9ieXRlc19wZXJfcGljX2Rlbm9tID0gMjsKICAgdnVpLT5tYXhfYml0c19wZXJfbWluX2N1X2Rlbm9tID0gMTsKICAgdnVpLT5sb2cyX21heF9tdl9sZW5ndGhfaG9yaXpvbnRhbCA9IDE1OwogICB2dWktPmxvZzJfbWF4X212X2xlbmd0aF92ZXJ0aWNhbCA9IDE1OwotICB2dWktPnBhcl9uID0gMDsKLSAgdnVpLT5wYXJfZCA9IDA7CiAKICAgaWYgKHNwcyAmJiBzcHMtPnByb2ZpbGVfdGllcl9sZXZlbC5wcm9ncmVzc2l2ZV9zb3VyY2VfZmxhZwogICAgICAgJiYgc3BzLT5wcm9maWxlX3RpZXJfbGV2ZWwuaW50ZXJsYWNlZF9zb3VyY2VfZmxhZykKICAgICB2dWktPmZyYW1lX2ZpZWxkX2luZm9fcHJlc2VudF9mbGFnID0gMTsKLSAgZWxzZQotICAgIHZ1aS0+ZnJhbWVfZmllbGRfaW5mb19wcmVzZW50X2ZsYWcgPSAwOwogCiAgIFJFQURfVUlOVDggKG5yLCB2dWktPmFzcGVjdF9yYXRpb19pbmZvX3ByZXNlbnRfZmxhZywgMSk7CiAgIGlmICh2dWktPmFzcGVjdF9yYXRpb19pbmZvX3ByZXNlbnRfZmxhZykgewpAQCAtNzU1LDggKzcyMiw2IEBACiAKICAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGZvciBmaWVsZHMgdGhhdCBtaWdodCBub3QgYmUgcHJlc2VudCBpbiB0aGUgYml0c3RyZWFtCiAgICAgIGFuZCBoYXZlIHZhbGlkIGRlZmF1bHRzICovCi0gIHN0UlBTLT5pbnRlcl9yZWZfcGljX3NldF9wcmVkaWN0aW9uX2ZsYWcgPSAwOwotICBzdFJQUy0+ZGVsdGFfaWR4X21pbnVzMSA9IDA7CiAgIGZvciAoaiA9IDA7IGogPCAxNjsgaisrKQogICAgIHVzZV9kZWx0YV9mbGFnW2pdID0gMTsKIApAQCAtODkyLDE0ICs4NTcsNiBAQAogICBHc3RIMjY1UmVmUGljTGlzdE1vZGlmaWNhdGlvbiAqcnBsX21vZCA9ICZzbGljZS0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbjsKICAgY29uc3QgZ3VpbnQgbiA9IGNlaWxfbG9nMiAoTnVtUG9jVG90YWxDdXJyKTsKIAotICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgKi8KLSAgcnBsX21vZC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9mbGFnX2wwID0gMDsKLSAgcnBsX21vZC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9mbGFnX2wxID0gMDsKLSAgZm9yIChpID0gMDsgaSA8IHNsaWNlLT5udW1fcmVmX2lkeF9sMF9hY3RpdmVfbWludXMxOyBpKyspCi0gICAgcnBsX21vZC0+bGlzdF9lbnRyeV9sMFtpXSA9IDA7Ci0gIGZvciAoaSA9IDA7IGkgPD0gc2xpY2UtPm51bV9yZWZfaWR4X2wxX2FjdGl2ZV9taW51czE7IGkrKykKLSAgICBycGxfbW9kLT5saXN0X2VudHJ5X2wxW2ldID0gMDsKLQogICBSRUFEX1VJTlQ4IChuciwgcnBsX21vZC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9mbGFnX2wwLCAxKTsKIAogICBpZiAocnBsX21vZC0+cmVmX3BpY19saXN0X21vZGlmaWNhdGlvbl9mbGFnX2wwKSB7CkBAIC05MzgsMTkgKzg5NSw2IEBACiAKICAgUkVBRF9VRV9NQVggKG5yLCBwLT5sdW1hX2xvZzJfd2VpZ2h0X2Rlbm9tLCA3KTsKIAotICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgKi8KLSAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAocC0+Y2hyb21hX3dlaWdodF9sMF9mbGFnKTsgaSsrKSB7Ci0gICAgcC0+Y2hyb21hX3dlaWdodF9sMF9mbGFnW2ldID0gMDsKLSAgICBwLT5sdW1hX29mZnNldF9sMFtpXSA9IDA7Ci0gIH0KLQotICBpZiAoR1NUX0gyNjVfSVNfQl9TTElDRSAoc2xpY2UpKSB7Ci0gICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAocC0+bHVtYV93ZWlnaHRfbDFfZmxhZyk7IGkrKykgewotICAgICAgcC0+Y2hyb21hX3dlaWdodF9sMV9mbGFnW2ldID0gMDsKLSAgICAgIHAtPmx1bWFfb2Zmc2V0X2wxW2ldID0gMDsKLSAgICB9Ci0gIH0KLQogICBpZiAoc3BzLT5jaHJvbWFfZm9ybWF0X2lkYyAhPSAwKSB7CiAgICAgUkVBRF9TRV9BTExPV0VEIChuciwgcC0+ZGVsdGFfY2hyb21hX2xvZzJfd2VpZ2h0X2Rlbm9tLAogICAgICAgICAoMCAtIHAtPmx1bWFfbG9nMl93ZWlnaHRfZGVub20pLCAoNyAtIHAtPmx1bWFfbG9nMl93ZWlnaHRfZGVub20pKTsKQEAgLTEwMjIsMTEgKzk2Niw2IEBACiAgIH0KICAgcGVyLT5zcHMgPSBzcHM7CiAKLSAgLyogc2V0IGRlZmF1bHQgdmFsdWVzIGlmIG5vdCBwcmVzZW50ICovCi0gIHBlci0+aXJhcF9jcGJfcGFyYW1zX3ByZXNlbnRfZmxhZyA9IDA7Ci0gIHBlci0+Y3BiX2RlbGF5X29mZnNldCA9IDA7Ci0gIHBlci0+ZHBiX2RlbGF5X29mZnNldCA9IDA7Ci0KICAgaWYgKHNwcy0+dnVpX3BhcmFtZXRlcnNfcHJlc2VudF9mbGFnKSB7CiAgICAgR3N0SDI2NVZVSVBhcmFtcyAqdnVpID0gJnNwcy0+dnVpX3BhcmFtczsKICAgICBHc3RIMjY1SFJEUGFyYW1zICpocmQgPSAmdnVpLT5ocmRfcGFyYW1zOwpAQCAtMTA5Niw3ICsxMDM1LDYgQEAKICAgcHJvZmlsZV90aWVyX2xldmVsID0gJnBhcnNlci0+bGFzdF9zcHMtPnByb2ZpbGVfdGllcl9sZXZlbDsKIAogICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgKi8KLSAgdGltLT5waWNfc3RydWN0ID0gMDsKICAgaWYgKCFwcm9maWxlX3RpZXJfbGV2ZWwtPnByb2dyZXNzaXZlX3NvdXJjZV9mbGFnCiAgICAgICAmJiBwcm9maWxlX3RpZXJfbGV2ZWwtPmludGVybGFjZWRfc291cmNlX2ZsYWcpCiAgICAgdGltLT5zb3VyY2Vfc2Nhbl90eXBlID0gMDsKQEAgLTEyMjAsNiArMTE1OCw4IEBACiB7CiAgIGdpbnQgb2ZmMTsKIAorICBtZW1zZXQgKG5hbHUsIDAsIHNpemVvZiAoKm5hbHUpKTsKKwogICBpZiAoc2l6ZSA8IG9mZnNldCArIDQpIHsKICAgICBHU1RfREVCVUcgKCJDYW4ndCBwYXJzZSwgYnVmZmVyIGhhcyB0b28gc21hbGwgc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVAogICAgICAgICAiLCBvZmZzZXQgJXUiLCBzaXplLCBvZmZzZXQpOwpAQCAtMTMzNSw2ICsxMjc1LDggQEAKIHsKICAgR3N0Qml0UmVhZGVyIGJyOwogCisgIG1lbXNldCAobmFsdSwgMCwgc2l6ZW9mICgqbmFsdSkpOworCiAgIGlmIChzaXplIDwgb2Zmc2V0ICsgbmFsX2xlbmd0aF9zaXplKSB7CiAgICAgR1NUX0RFQlVHICgiQ2FuJ3QgcGFyc2UsIGJ1ZmZlciBoYXMgdG9vIHNtYWxsIHNpemUgJSIgR19HU0laRV9GT1JNQVQKICAgICAgICAgIiwgb2Zmc2V0ICV1Iiwgc2l6ZSwgb2Zmc2V0KTsKQEAgLTE0NTAsOCArMTM5Miw4IEBACiAgIG5hbF9yZWFkZXJfaW5pdCAoJm5yLCBuYWx1LT5kYXRhICsgbmFsdS0+b2Zmc2V0ICsgbmFsdS0+aGVhZGVyX2J5dGVzLAogICAgICAgbmFsdS0+c2l6ZSAtIG5hbHUtPmhlYWRlcl9ieXRlcyk7CiAKLSAgbWVtc2V0ICgmdnBzLT5wcm9maWxlX3RpZXJfbGV2ZWwsIDAsIHNpemVvZiAodnBzLT5wcm9maWxlX3RpZXJfbGV2ZWwpKTsKLSAgbWVtc2V0ICgmdnBzLT5ocmRfcGFyYW1zLCAwLCBzaXplb2YgKHZwcy0+aHJkX3BhcmFtcykpOworICBtZW1zZXQgKHZwcywgMCwgc2l6ZW9mICgqdnBzKSk7CisKICAgdnBzLT5jcHJtc19wcmVzZW50X2ZsYWcgPSAxOwogCiAgIFJFQURfVUlOVDggKCZuciwgdnBzLT5pZCwgNCk7CkBAIC0xNTk0LDE3ICsxNTM2LDcgQEAKICAgbmFsX3JlYWRlcl9pbml0ICgmbnIsIG5hbHUtPmRhdGEgKyBuYWx1LT5vZmZzZXQgKyBuYWx1LT5oZWFkZXJfYnl0ZXMsCiAgICAgICBuYWx1LT5zaXplIC0gbmFsdS0+aGVhZGVyX2J5dGVzKTsKIAotICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBiaXRzdHJlYW0KLSAgICAgYW5kIGhhdmUgdmFsaWQgZGVmYXVsdHMgKi8KLSAgbWVtc2V0ICgmc3BzLT5wcm9maWxlX3RpZXJfbGV2ZWwsIDAsIHNpemVvZiAoc3BzLT5wcm9maWxlX3RpZXJfbGV2ZWwpKTsKLSAgbWVtc2V0IChzcHMtPnNob3J0X3Rlcm1fcmVmX3BpY19zZXQsIDAsIHNpemVvZiAoc3BzLT5zaG9ydF90ZXJtX3JlZl9waWNfc2V0KSk7Ci0gIHNwcy0+c2NhbGluZ19saXN0X2RhdGFfcHJlc2VudF9mbGFnID0gMDsKLSAgc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZyA9IDA7Ci0gIHNwcy0+Y29uZl93aW5fbGVmdF9vZmZzZXQgPSAwOwotICBzcHMtPmNvbmZfd2luX3JpZ2h0X29mZnNldCA9IDA7Ci0gIHNwcy0+Y29uZl93aW5fdG9wX29mZnNldCA9IDA7Ci0gIHNwcy0+Y29uZl93aW5fYm90dG9tX29mZnNldCA9IDA7Ci0gIHNwcy0+cGNtX2xvb3BfZmlsdGVyX2Rpc2FibGVkX2ZsYWcgPSAwOworICBtZW1zZXQgKHNwcywgMCwgc2l6ZW9mICgqc3BzKSk7CiAKICAgUkVBRF9VSU5UOCAoJm5yLCB2cHNfaWQsIDQpOwogICB2cHMgPSBnc3RfaDI2NV9wYXJzZXJfZ2V0X3ZwcyAocGFyc2VyLCB2cHNfaWQpOwpAQCAtMTcyMiw5ICsxNjU0LDcgQEAKICAgUkVBRF9VSU5UOCAoJm5yLCBzcHMtPnNwc19leHRlbnNpb25fZmxhZywgMSk7CiAKICAgLyogY2FsY3VsYXRlIENocm9tYUFycmF5VHlwZSAqLwotICBpZiAoc3BzLT5zZXBhcmF0ZV9jb2xvdXJfcGxhbmVfZmxhZykKLSAgICBzcHMtPmNocm9tYV9hcnJheV90eXBlID0gMDsKLSAgZWxzZQorICBpZiAoIXNwcy0+c2VwYXJhdGVfY29sb3VyX3BsYW5lX2ZsYWcpCiAgICAgc3BzLT5jaHJvbWFfYXJyYXlfdHlwZSA9IHNwcy0+Y2hyb21hX2Zvcm1hdF9pZGM7CiAKICAgLyogQ2FsY3VsYXRlICB3aWR0aCBhbmQgaGVpZ2h0ICovCkBAIC0xODA0LDYgKzE3MzQsOCBAQAogICBuYWxfcmVhZGVyX2luaXQgKCZuciwgbmFsdS0+ZGF0YSArIG5hbHUtPm9mZnNldCArIG5hbHUtPmhlYWRlcl9ieXRlcywKICAgICAgIG5hbHUtPnNpemUgLSBuYWx1LT5oZWFkZXJfYnl0ZXMpOwogCisgIG1lbXNldCAocHBzLCAwLCBzaXplb2YgKCpwcHMpKTsKKwogICBSRUFEX1VFX01BWCAoJm5yLCBwcHMtPmlkLCBHU1RfSDI2NV9NQVhfUFBTX0NPVU5UIC0gMSk7CiAgIFJFQURfVUVfTUFYICgmbnIsIHNwc19pZCwgR1NUX0gyNjVfTUFYX1NQU19DT1VOVCAtIDEpOwogCkBAIC0xODI2LDE1ICsxNzU4LDggQEAKIAogICAvKiBzZXQgZGVmYXVsdCB2YWx1ZXMgZm9yIGZpZWxkcyB0aGF0IG1pZ2h0IG5vdCBiZSBwcmVzZW50IGluIHRoZSBiaXRzdHJlYW0KICAgICAgYW5kIGhhdmUgdmFsaWQgZGVmYXVsdHMgKi8KLSAgcHBzLT5kaWZmX2N1X3FwX2RlbHRhX2RlcHRoID0gMDsKLSAgcHBzLT5udW1fdGlsZV9jb2x1bW5zX21pbnVzMSA9IDA7Ci0gIHBwcy0+bnVtX3RpbGVfcm93c19taW51czEgPSAwOwogICBwcHMtPnVuaWZvcm1fc3BhY2luZ19mbGFnID0gMTsKICAgcHBzLT5sb29wX2ZpbHRlcl9hY3Jvc3NfdGlsZXNfZW5hYmxlZF9mbGFnID0gMTsKLSAgcHBzLT5kZWJsb2NraW5nX2ZpbHRlcl9vdmVycmlkZV9lbmFibGVkX2ZsYWcgPSAwOwotICBwcHMtPmRlYmxvY2tpbmdfZmlsdGVyX2Rpc2FibGVkX2ZsYWcgPSAwOwotICBwcHMtPmJldGFfb2Zmc2V0X2RpdjIgPSAwOwotICBwcHMtPnRjX29mZnNldF9kaXYyID0gMDsKIAogICBSRUFEX1VJTlQ4ICgmbnIsIHBwcy0+ZGVwZW5kZW50X3NsaWNlX3NlZ21lbnRzX2VuYWJsZWRfZmxhZywgMSk7CiAgIFJFQURfVUlOVDggKCZuciwgcHBzLT5vdXRwdXRfZmxhZ19wcmVzZW50X2ZsYWcsIDEpOwpAQCAtMTk5MCw2ICsxOTE1LDggQEAKICAgZ3VpbnQzMiBQaWNTaXplSW5DdGJzWTsKICAgZ2ludCBOdW1Qb2NUb3RhbEN1cnIgPSAwOwogCisgIG1lbXNldCAoc2xpY2UsIDAsIHNpemVvZiAoKnNsaWNlKSk7CisKICAgaWYgKCFuYWx1LT5zaXplKSB7CiAgICAgR1NUX0RFQlVHICgiSW52YWxpZCBOYWwgVW5pdCIpOwogICAgIHJldHVybiBHU1RfSDI2NV9QQVJTRVJfRVJST1I7CkBAIC0yMDI2LDMyICsxOTUzLDEzIEBACiAgIFBpY1NpemVJbkN0YnNZID0gcHBzLT5QaWNXaWR0aEluQ3Ric1kgKiBwcHMtPlBpY0hlaWdodEluQ3Ric1k7CiAgIC8qIHNldCBkZWZhdWx0IHZhbHVlcyBmb3IgZmllbGRzIHRoYXQgbWlnaHQgbm90IGJlIHByZXNlbnQgaW4gdGhlIGJpdHN0cmVhbQogICAgKiBhbmQgaGF2ZSB2YWxpZCBkZWZhdWx0cyAqLwotICBzbGljZS0+ZGVwZW5kZW50X3NsaWNlX3NlZ21lbnRfZmxhZyA9IDA7Ci0gIHNsaWNlLT5zZWdtZW50X2FkZHJlc3MgPSAwOwogICBzbGljZS0+cGljX291dHB1dF9mbGFnID0gMTsKLSAgc2xpY2UtPnBpY19vcmRlcl9jbnRfbHNiID0gMDsKLSAgc2xpY2UtPnNob3J0X3Rlcm1fcmVmX3BpY19zZXRfaWR4ID0gMDsKLSAgc2xpY2UtPm51bV9sb25nX3Rlcm1fc3BzID0gMDsKLSAgc2xpY2UtPm51bV9sb25nX3Rlcm1fcGljcyA9IDA7Ci0gIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKSB7Ci0gICAgc2xpY2UtPmx0X2lkeF9zcHNbaV0gPSAwOwotICAgIHNsaWNlLT5kZWx0YV9wb2NfbXNiX2N5Y2xlX2x0W2ldID0gMDsKLSAgfQotICBzbGljZS0+dGVtcG9yYWxfbXZwX2VuYWJsZWRfZmxhZyA9IDA7Ci0gIHNsaWNlLT5zYW9fbHVtYV9mbGFnID0gMDsKLSAgc2xpY2UtPnNhb19jaHJvbWFfZmxhZyA9IDA7Ci0gIHNsaWNlLT5jYWJhY19pbml0X2ZsYWcgPSAwOwogICBzbGljZS0+Y29sbG9jYXRlZF9mcm9tX2wwX2ZsYWcgPSAxOwotICBzbGljZS0+Y2JfcXBfb2Zmc2V0ID0gMDsKLSAgc2xpY2UtPmNyX3FwX29mZnNldCA9IDA7Ci0gIHNsaWNlLT5kZWJsb2NraW5nX2ZpbHRlcl9vdmVycmlkZV9mbGFnID0gMDsKLSAgc2xpY2UtPmRlYmxvY2tpbmdfZmlsdGVyX2Rpc2FibGVkX2ZsYWcgPSAwOworICBzbGljZS0+ZGVibG9ja2luZ19maWx0ZXJfZGlzYWJsZWRfZmxhZyA9IHBwcy0+ZGVibG9ja2luZ19maWx0ZXJfZGlzYWJsZWRfZmxhZzsKICAgc2xpY2UtPmJldGFfb2Zmc2V0X2RpdjIgPSBwcHMtPmJldGFfb2Zmc2V0X2RpdjI7CiAgIHNsaWNlLT50Y19vZmZzZXRfZGl2MiA9IHBwcy0+dGNfb2Zmc2V0X2RpdjI7CiAgIHNsaWNlLT5sb29wX2ZpbHRlcl9hY3Jvc3Nfc2xpY2VzX2VuYWJsZWRfZmxhZyA9CiAgICAgICBwcHMtPmxvb3BfZmlsdGVyX2Fjcm9zc19zbGljZXNfZW5hYmxlZF9mbGFnOwotICBzbGljZS0+bnVtX2VudHJ5X3BvaW50X29mZnNldHMgPSAwOwotICBzbGljZS0+ZW50cnlfcG9pbnRfb2Zmc2V0X21pbnVzMSA9IE5VTEw7CiAKICAgaWYgKCFzbGljZS0+Zmlyc3Rfc2xpY2Vfc2VnbWVudF9pbl9waWNfZmxhZykgewogICAgIGNvbnN0IGd1aW50IG4gPSBjZWlsX2xvZzIgKFBpY1NpemVJbkN0YnNZKTsKQEAgLTIzMDMsNyArMjIxMSw4IEBACiAKICAgR1NUX0RFQlVHICgicGFyc2luZyBcIlNlaSBtZXNzYWdlXCIiKTsKIAotICBzZWktPnBheWxvYWRUeXBlID0gMDsKKyAgbWVtc2V0IChzZWksIDAsIHNpemVvZiAoKnNlaSkpOworCiAgIGRvIHsKICAgICBSRUFEX1VJTlQ4IChuciwgcGF5bG9hZF90eXBlX2J5dGUsIDgpOwogICAgIHNlaS0+cGF5bG9hZFR5cGUgKz0gcGF5bG9hZF90eXBlX2J5dGU7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWc0cGFyc2VyLmMgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWc0cGFyc2VyLmMKaW5kZXggY2UxNTZjNS4uYjIzZmM4NyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVnNHBhcnNlci5jCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZzRwYXJzZXIuYwpAQCAtNDgxLDggKzQ4MSwxMSBAQAogICBwYWNrZXQtPnR5cGUgPSAoR3N0TXBlZzRTdGFydENvZGUpIChkYXRhW29mZjEgKyAzXSk7CiAKIGZpbmRfZW5kOgotICBvZmYyID0gZ3N0X2J5dGVfcmVhZGVyX21hc2tlZF9zY2FuX3VpbnQzMiAoJmJyLCAweGZmZmZmZjAwLCAweDAwMDAwMTAwLAotICAgICAgb2ZmMSArIDQsIHNpemUgLSBvZmYxIC0gNCk7CisgIGlmIChvZmYxIDwgc2l6ZSAtIDQpCisgICAgb2ZmMiA9IGdzdF9ieXRlX3JlYWRlcl9tYXNrZWRfc2Nhbl91aW50MzIgKCZiciwgMHhmZmZmZmYwMCwgMHgwMDAwMDEwMCwKKyAgICAgICAgb2ZmMSArIDQsIHNpemUgLSBvZmYxIC0gNCk7CisgIGVsc2UKKyAgICBvZmYyID0gLTE7CiAKICAgaWYgKG9mZjIgPT0gLTEpIHsKICAgICBHU1RfREVCVUcgKCJQYWNrZXQgc3RhcnQgJWQsIE5vIGVuZCBmb3VuZCIsIG9mZjEgKyA0KTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2VyLmMgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5jCmluZGV4IDYzODQxMDUuLmRlYmFmYTAgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2VyLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuYwpAQCAtNDA4LDcgKzQwOCw4IEBACiAgIH0KIAogICAvKiBza2lwIHByb2ZpbGUgYW5kIGxldmVsIGVzY2FwZSBiaXQgKi8KLSAgZ3N0X2JpdF9yZWFkZXJfc2tpcF91bmNoZWNrZWQgKCZiciwgMSk7CisgIHNlcWV4dC0+cHJvZmlsZV9sZXZlbF9lc2NhcGVfYml0ID0KKyAgICAgIGdzdF9iaXRfcmVhZGVyX2dldF9iaXRzX3VpbnQ4X3VuY2hlY2tlZCAoJmJyLCAxKTsKIAogICBzZXFleHQtPnByb2ZpbGUgPSBnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OF91bmNoZWNrZWQgKCZiciwgMyk7CiAgIHNlcWV4dC0+bGV2ZWwgPSBnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OF91bmNoZWNrZWQgKCZiciwgNCk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5oIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuaAppbmRleCAzNWY3YzZmLi4xMjk4ZWQ3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlci5oCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2VyLmgKQEAgLTI0OSw2ICsyNDksOCBAQAogICogb3RoZXJ3aXNlCiAgKiBAZnBzX25fZXh0OiBGcmFtZXJhdGUgbm9taW5hdG9yIGNvZGUKICAqIEBmcHNfZF9leHQ6IEZyYW1lcmF0ZSBkZW5vbWluYXRvciBjb2RlCisgKiBAcHJvZmlsZV9sZXZlbF9lc2NhcGVfYml0OiBFc2NhcGUgYml0LiBJZiBzZXQsIHRoZSBtZWFuaW5nIG9mIHRoZQorICogICAgQHByb2ZpbGUgYW5kIEBsZXZlbCBmaWVsZHMgaXMgZGlmZmVyZW50LgogICoKICAqIFRoZSBNcGVnMiBWaWRlbyBTZXF1ZW5jZSBFeHRlbnNpb24gc3RydWN0dXJlLgogICoqLwpAQCAtMjY5LDYgKzI3MSw4IEBACiAgIGd1aW50OCBsb3dfZGVsYXk7CiAgIGd1aW50OCBmcHNfbl9leHQsIGZwc19kX2V4dDsKIAorICAvKiBBZGRpdGlvbmFsIGluZm9ybWF0aW9uICovCisgIGd1aW50OCBwcm9maWxlX2xldmVsX2VzY2FwZV9iaXQ7CiB9OwogCiAvKioKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmMgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MThkZWUKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5jCkBAIC0wLDAgKzEsODE5IEBACisvKiBnc3R2cDlwYXJzZXIuYworICoKKyAqICBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNCBJbnRlbCBDb3Jwb3JhdGlvbgorICogIENvcHlyaWdodCAoQykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbgorICogICAgQXV0aG9yOiBYdUd1YW5neGluPEd1YW5neGluLlh1QGludGVsLmNvbT4KKyAqICAgIEF1dGhvcjogU3JlZXJlbmogQmFsYWNoYW5kcmFuPHNyZWVyZW5qLmJhbGFjaGFuZHJhbkBpbnRlbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKy8qKgorICogU0VDVElPTjpnc3R2cDlwYXJzZXIKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogQ29udmVuaWVuY2UgbGlicmFyeSBmb3IgcGFyc2luZyB2cDkgdmlkZW8gYml0c3RyZWFtLgorICoKKyAqIEZvciBtb3JlIGRldGFpbHMgYWJvdXQgdGhlIHN0cnVjdHVyZXMsIHlvdSBjYW4gcmVmZXIgdG8gdGhlCisgKiBzcGVjaWZpY2F0aW9uczoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RiaXRyZWFkZXIuaD4KKyNpbmNsdWRlICJ2cDl1dGlscy5oIgorI2luY2x1ZGUgImdzdHZwOXBhcnNlci5oIgorCisjZGVmaW5lIE1JTl9USUxFX1dJRFRIX0I2NCA0CisjZGVmaW5lIE1BWF9USUxFX1dJRFRIX0I2NCA2NAorCisvKiBvcmRlciBvZiBzYjY0LCB3aGVyZSBzYjY0ID0gNjR4NjQgKi8KKyNkZWZpbmUgQUxJR05fU0I2NCh3KSAoKHcgKyA2MykgPj4gNikKKworR1NUX0RFQlVHX0NBVEVHT1JZIChnc3RfdnA5X3BhcnNlcl9kZWJ1Zyk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfdnA5X3BhcnNlcl9kZWJ1ZworCitzdGF0aWMgZ2Jvb2xlYW4gaW5pdGlhbGl6ZWQgPSBGQUxTRTsKKyNkZWZpbmUgSU5JVElBTElaRV9ERUJVR19DQVRFR09SWSBcCisgIGlmICghaW5pdGlhbGl6ZWQpIHsgXAorICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfdnA5X3BhcnNlcl9kZWJ1ZywgImNvZGVjcGFyc2Vyc192cDkiLCAwLCBcCisgICAgICAgICJ2cDkgcGFyc2VyIGxpYnJhcnkiKTsgXAorICAgIGluaXRpYWxpemVkID0gVFJVRTsgXAorICB9CisKKyNkZWZpbmUgZ3N0X3ZwOV9yZWFkX2JpdChicikgZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDhfdW5jaGVja2VkKGJyLCAxKQorI2RlZmluZSBnc3RfdnA5X3JlYWRfYml0cyhiciwgYml0cykgZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDMyX3VuY2hlY2tlZChiciwgYml0cykKKworI2RlZmluZSBHU1RfVlA5X1BBUlNFUl9HRVRfUFJJVkFURShwYXJzZXIpICAoKEdzdFZwOVBhcnNlclByaXZhdGUgKikocGFyc2VyLT5wcml2KSkKKwordHlwZWRlZiBzdHJ1Y3QgX1JlZmVyZW5jZVNpemUKK3sKKyAgZ3VpbnQzMiB3aWR0aDsKKyAgZ3VpbnQzMiBoZWlnaHQ7Cit9IFJlZmVyZW5jZVNpemU7CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIC8qIGZvciBsb29wIGZpbHRlcnMgKi8KKyAgZ2ludDggcmVmX2RlbHRhc1tHU1RfVlA5X01BWF9SRUZfTEZfREVMVEFTXTsKKyAgZ2ludDggbW9kZV9kZWx0YXNbR1NUX1ZQOV9NQVhfTU9ERV9MRl9ERUxUQVNdOworCisgIGd1aW50OCBzZWdtZW50YXRpb25fYWJzX2RlbHRhOworICBHc3RWcDlTZWdtZW50YXRpb25JbmZvRGF0YSBzZWdtZW50YXRpb25bR1NUX1ZQOV9NQVhfU0VHTUVOVFNdOworCisgIFJlZmVyZW5jZVNpemUgcmVmZXJlbmNlW0dTVF9WUDlfUkVGX0ZSQU1FU107Cit9IEdzdFZwOVBhcnNlclByaXZhdGU7CisKK3N0YXRpYyBnaW50MzIKK2dzdF92cDlfcmVhZF9zaWduZWRfYml0cyAoR3N0Qml0UmVhZGVyICogYnIsIGludCBiaXRzKQoreworICBjb25zdCBnaW50MzIgdmFsdWUgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIGJpdHMpOworICByZXR1cm4gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpID8gLXZhbHVlIDogdmFsdWU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgordmVyaWZ5X2ZyYW1lX21hcmtlciAoR3N0Qml0UmVhZGVyICogYnIpCit7CisgIGd1aW50OCBmcmFtZV9tYXJrZXIgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDIpOworICBpZiAoZnJhbWVfbWFya2VyICE9IEdTVF9WUDlfRlJBTUVfTUFSS0VSKSB7CisgICAgR1NUX0VSUk9SICgiSW52YWxpZCBWUDkgRnJhbWUgTWFya2VyICEiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgordmVyaWZ5X3N5bmNfY29kZSAoR3N0Qml0UmVhZGVyICogY29uc3QgYnIpCit7CisgIHJldHVybiAoZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCAyNCkgPT0gR1NUX1ZQOV9TWU5DX0NPREUpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3BhcnNlX2JpdGRlcHRoX2NvbG9yc3BhY2Vfc2FtcGxpbmcgKEdzdEJpdFJlYWRlciAqIGNvbnN0IGJyLAorICAgIEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyKQoreworICBpZiAoZnJhbWVfaGRyLT5wcm9maWxlID4gR1NUX1ZQOV9QUk9GSUxFXzEpCisgICAgZnJhbWVfaGRyLT5iaXRfZGVwdGggPQorICAgICAgICBnc3RfdnA5X3JlYWRfYml0IChicikgPyBHU1RfVlA5X0JJVF9ERVBUSF8xMiA6IEdTVF9WUDlfQklUX0RFUFRIXzEwOworICBlbHNlCisgICAgZnJhbWVfaGRyLT5iaXRfZGVwdGggPSBHU1RfVlA5X0JJVF9ERVBUSF84OworCisgIGZyYW1lX2hkci0+Y29sb3Jfc3BhY2UgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDMpOworICBpZiAoZnJhbWVfaGRyLT5jb2xvcl9zcGFjZSAhPSBHU1RfVlA5X0NTX1NSR0IpIHsKKyAgICBmcmFtZV9oZHItPmNvbG9yX3JhbmdlID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworCisgICAgaWYgKGZyYW1lX2hkci0+cHJvZmlsZSA9PSBHU1RfVlA5X1BST0ZJTEVfMQorICAgICAgICB8fCBmcmFtZV9oZHItPnByb2ZpbGUgPT0gR1NUX1ZQOV9QUk9GSUxFXzMpIHsKKworICAgICAgZnJhbWVfaGRyLT5zdWJzYW1wbGluZ194ID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgICAgZnJhbWVfaGRyLT5zdWJzYW1wbGluZ195ID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworCisgICAgICBpZiAoZnJhbWVfaGRyLT5zdWJzYW1wbGluZ194ID09IDEgJiYgZnJhbWVfaGRyLT5zdWJzYW1wbGluZ195ID09IDEpIHsKKyAgICAgICAgR1NUX0VSUk9SCisgICAgICAgICAgICAoIjQ6MjowIHN1YnNhbXBsaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZmlsZV8xIG9yIHByb2ZpbGVfMyIpOworICAgICAgICBnb3RvIGVycm9yOworICAgICAgfQorCisgICAgICBpZiAoZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpKSB7CisgICAgICAgIEdTVF9FUlJPUiAoIlJlc2VydmVkIGJpdCBzZXQhIik7CisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGZyYW1lX2hkci0+c3Vic2FtcGxpbmdfeSA9IGZyYW1lX2hkci0+c3Vic2FtcGxpbmdfeCA9IDE7CisgICAgfQorICB9IGVsc2UgeworICAgIGZyYW1lX2hkci0+Y29sb3JfcmFuZ2UgPSBHU1RfVlA5X0NSX0ZVTEw7CisKKyAgICBpZiAoZnJhbWVfaGRyLT5wcm9maWxlID09IEdTVF9WUDlfUFJPRklMRV8xCisgICAgICAgIHx8IGZyYW1lX2hkci0+cHJvZmlsZSA9PSBHU1RfVlA5X1BST0ZJTEVfMykgeworICAgICAgaWYgKGdzdF92cDlfcmVhZF9iaXQgKGJyKSkgeworICAgICAgICBHU1RfRVJST1IgKCJSZXNlcnZlZCBiaXQgc2V0ISIpOworICAgICAgICBnb3RvIGVycm9yOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBHU1RfRVJST1IKKyAgICAgICAgICAoIjQ6NDo0IHN1YnNhbXBsaW5nIGlzIG5vdCBzdXBwb3J0ZWQgaW4gcHJvZmlsZV8wIGFuZCBwcm9maWxlXzIiKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICB9CisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ3VpbnQKK3BhcnNlX3Byb2ZpbGUgKEdzdEJpdFJlYWRlciAqIGJyKQoreworICBndWludDggcHJvZmlsZSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgcHJvZmlsZSB8PSBnc3RfdnA5X3JlYWRfYml0IChicikgPDwgMTsKKyAgaWYgKHByb2ZpbGUgPiAyKQorICAgIHByb2ZpbGUgKz0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICByZXR1cm4gcHJvZmlsZTsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlX2ZyYW1lX3NpemUgKEdzdEJpdFJlYWRlciAqIGJyLCBndWludDMyICogd2lkdGgsIGd1aW50MzIgKiBoZWlnaHQpCit7CisgIGNvbnN0IGd1aW50MzIgdyA9IGdzdF92cDlfcmVhZF9iaXRzIChiciwgMTYpICsgMTsKKyAgY29uc3QgZ3VpbnQzMiBoID0gZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCAxNikgKyAxOworICAqd2lkdGggPSB3OworICAqaGVpZ2h0ID0gaDsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlX2Rpc3BsYXlfZnJhbWVfc2l6ZSAoR3N0Qml0UmVhZGVyICogYnIsIEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyKQoreworICBmcmFtZV9oZHItPmRpc3BsYXlfc2l6ZV9lbmFibGVkID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICBpZiAoZnJhbWVfaGRyLT5kaXNwbGF5X3NpemVfZW5hYmxlZCkKKyAgICBwYXJzZV9mcmFtZV9zaXplIChiciwgJmZyYW1lX2hkci0+ZGlzcGxheV93aWR0aCwKKyAgICAgICAgJmZyYW1lX2hkci0+ZGlzcGxheV9oZWlnaHQpOworfQorCitzdGF0aWMgdm9pZAorcGFyc2VfZnJhbWVfc2l6ZV9mcm9tX3JlZnMgKGNvbnN0IEdzdFZwOVBhcnNlciAqIHBhcnNlciwKKyAgICBHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkciwgR3N0Qml0UmVhZGVyICogYnIpCit7CisgIGdib29sZWFuIGZvdW5kID0gRkFMU0U7CisgIGludCBpOworICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisKKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WUDlfUkVGU19QRVJfRlJBTUU7IGkrKykgeworICAgIGZvdW5kID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworCisgICAgaWYgKGZvdW5kKSB7CisgICAgICBndWludDggaWR4ID0gZnJhbWVfaGRyLT5yZWZfZnJhbWVfaW5kaWNlc1tpXTsKKyAgICAgIGZyYW1lX2hkci0+d2lkdGggPSBwcml2LT5yZWZlcmVuY2VbaWR4XS53aWR0aDsKKyAgICAgIGZyYW1lX2hkci0+aGVpZ2h0ID0gcHJpdi0+cmVmZXJlbmNlW2lkeF0uaGVpZ2h0OworICAgICAgYnJlYWs7CisgICAgfQorICB9CisgIGlmICghZm91bmQpCisgICAgcGFyc2VfZnJhbWVfc2l6ZSAoYnIsICZmcmFtZV9oZHItPndpZHRoLCAmZnJhbWVfaGRyLT5oZWlnaHQpOworfQorCitzdGF0aWMgR3N0VnA5SW50ZXJwb2xhdGlvbkZpbHRlcgorcGFyc2VfaW50ZXJwX2ZpbHRlciAoR3N0Qml0UmVhZGVyICogYnIpCit7CisgIHN0YXRpYyBjb25zdCBHc3RWcDlJbnRlcnBvbGF0aW9uRmlsdGVyIGZpbHRlcl9tYXBbXSA9IHsKKyAgICBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0VJR0hUVEFQX1NNT09USCwKKyAgICBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0VJR0hUVEFQLAorICAgIEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVBfU0hBUlAsCisgICAgR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9CSUxJTkVBUgorICB9OworCisgIHJldHVybiBnc3RfdnA5X3JlYWRfYml0IChicikgPyBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX1NXSVRDSEFCTEUgOgorICAgICAgZmlsdGVyX21hcFtnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDIpXTsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlX2xvb3BmaWx0ZXIgKEdzdFZwOUxvb3BGaWx0ZXIgKiBsZiwgR3N0Qml0UmVhZGVyICogYnIpCit7CisgIGxmLT5maWx0ZXJfbGV2ZWwgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDYpOworICBsZi0+c2hhcnBuZXNzX2xldmVsID0gZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCAzKTsKKworICBsZi0+bW9kZV9yZWZfZGVsdGFfdXBkYXRlID0gMDsKKworICBsZi0+bW9kZV9yZWZfZGVsdGFfZW5hYmxlZCA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgaWYgKGxmLT5tb2RlX3JlZl9kZWx0YV9lbmFibGVkKSB7CisgICAgbGYtPm1vZGVfcmVmX2RlbHRhX3VwZGF0ZSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICBpZiAobGYtPm1vZGVfcmVmX2RlbHRhX3VwZGF0ZSkgeworICAgICAgaW50IGk7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9NQVhfUkVGX0xGX0RFTFRBUzsgaSsrKSB7CisgICAgICAgIGxmLT51cGRhdGVfcmVmX2RlbHRhc1tpXSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICAgICAgaWYgKGxmLT51cGRhdGVfcmVmX2RlbHRhc1tpXSkKKyAgICAgICAgICBsZi0+cmVmX2RlbHRhc1tpXSA9IGdzdF92cDlfcmVhZF9zaWduZWRfYml0cyAoYnIsIDYpOworICAgICAgfQorCisgICAgICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9NQVhfTU9ERV9MRl9ERUxUQVM7IGkrKykgeworICAgICAgICBsZi0+dXBkYXRlX21vZGVfZGVsdGFzW2ldID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgICAgICBpZiAobGYtPnVwZGF0ZV9tb2RlX2RlbHRhc1tpXSkKKyAgICAgICAgICBsZi0+bW9kZV9kZWx0YXNbaV0gPSBnc3RfdnA5X3JlYWRfc2lnbmVkX2JpdHMgKGJyLCA2KTsKKyAgICAgIH0KKyAgICB9CisgIH0KK30KKworc3RhdGljIGdpbnQ4CitwYXJzZV9kZWx0YV9xIChHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgcmV0dXJuIGdzdF92cDlfcmVhZF9iaXQgKGJyKSA/IGdzdF92cDlfcmVhZF9zaWduZWRfYml0cyAoYnIsIDQpIDogMDsKK30KKworc3RhdGljIHZvaWQKK3BhcnNlX3F1YW50aXphdGlvbiAoR3N0VnA5UXVhbnRJbmRpY2VzICogcXVhbnRfaW5kaWNlcywgR3N0Qml0UmVhZGVyICogYnIpCit7CisgIHF1YW50X2luZGljZXMtPnlfYWNfcWkgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIFFJTkRFWF9CSVRTKTsKKyAgcXVhbnRfaW5kaWNlcy0+eV9kY19kZWx0YSA9IHBhcnNlX2RlbHRhX3EgKGJyKTsKKyAgcXVhbnRfaW5kaWNlcy0+dXZfZGNfZGVsdGEgPSBwYXJzZV9kZWx0YV9xIChicik7CisgIHF1YW50X2luZGljZXMtPnV2X2FjX2RlbHRhID0gcGFyc2VfZGVsdGFfcSAoYnIpOworfQorCitzdGF0aWMgdm9pZAorcGFyc2Vfc2VnbWVudGF0aW9uIChHc3RWcDlTZWdtZW50YXRpb25JbmZvICogc2VnLCBHc3RCaXRSZWFkZXIgKiBicikKK3sKKyAgaW50IGk7CisKKyAgc2VnLT51cGRhdGVfbWFwID0gRkFMU0U7CisgIHNlZy0+dXBkYXRlX2RhdGEgPSBGQUxTRTsKKworICBzZWctPmVuYWJsZWQgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGlmICghc2VnLT5lbmFibGVkKQorICAgIHJldHVybjsKKworICAvKiBTZWdtZW50YXRpb24gbWFwIHVwZGF0ZSAqLworICBzZWctPnVwZGF0ZV9tYXAgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGlmIChzZWctPnVwZGF0ZV9tYXApIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9TRUdfVFJFRV9QUk9CUzsgaSsrKSB7CisgICAgICBzZWctPnVwZGF0ZV90cmVlX3Byb2JzW2ldID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgICAgc2VnLT50cmVlX3Byb2JzW2ldID0gc2VnLT51cGRhdGVfdHJlZV9wcm9ic1tpXSA/CisgICAgICAgICAgZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCA4KSA6IEdTVF9WUDlfTUFYX1BST0I7CisgICAgfQorCisgICAgc2VnLT50ZW1wb3JhbF91cGRhdGUgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgaWYgKHNlZy0+dGVtcG9yYWxfdXBkYXRlKSB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9QUkVESUNUSU9OX1BST0JTOyBpKyspIHsKKyAgICAgICAgc2VnLT51cGRhdGVfcHJlZF9wcm9ic1tpXSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICAgICAgc2VnLT5wcmVkX3Byb2JzW2ldID0gc2VnLT51cGRhdGVfcHJlZF9wcm9ic1tpXSA/CisgICAgICAgICAgICBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDgpIDogR1NUX1ZQOV9NQVhfUFJPQjsKKyAgICAgIH0KKyAgICB9IGVsc2UgeworICAgICAgZm9yIChpID0gMDsgaSA8IEdTVF9WUDlfUFJFRElDVElPTl9QUk9CUzsgaSsrKQorICAgICAgICBzZWctPnByZWRfcHJvYnNbaV0gPSBHU1RfVlA5X01BWF9QUk9COworICAgIH0KKyAgfQorCisgIC8qIFNlZ21lbnRhdGlvbiBkYXRhIHVwZGF0ZSAqLworICBzZWctPnVwZGF0ZV9kYXRhID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworCisgIGlmIChzZWctPnVwZGF0ZV9kYXRhKSB7CisgICAgLyogY2xlYXIgYWxsIGZlYXR1cmVzICovCisgICAgbWVtc2V0IChzZWctPmRhdGEsIDAsIHNpemVvZiAoc2VnLT5kYXRhKSk7CisKKyAgICBzZWctPmFic19kZWx0YSA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVlA5X01BWF9TRUdNRU5UUzsgaSsrKSB7CisgICAgICBHc3RWcDlTZWdtZW50YXRpb25JbmZvRGF0YSAqc2VnX2RhdGEgPSBzZWctPmRhdGEgKyBpOworICAgICAgZ3VpbnQ4IGRhdGE7CisKKyAgICAgIC8qIFNFR19MVkxfQUxUX1EgKi8KKyAgICAgIHNlZ19kYXRhLT5hbHRlcm5hdGVfcXVhbnRpemVyX2VuYWJsZWQgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgICBpZiAoc2VnX2RhdGEtPmFsdGVybmF0ZV9xdWFudGl6ZXJfZW5hYmxlZCkgeworICAgICAgICBkYXRhID0gZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCA4KTsKKyAgICAgICAgc2VnX2RhdGEtPmFsdGVybmF0ZV9xdWFudGl6ZXIgPSBnc3RfdnA5X3JlYWRfYml0IChicikgPyAtZGF0YSA6IGRhdGE7CisgICAgICB9CisKKyAgICAgIC8qIFNFR19MVkxfQUxUX0xGICovCisgICAgICBzZWdfZGF0YS0+YWx0ZXJuYXRlX2xvb3BfZmlsdGVyX2VuYWJsZWQgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgICBpZiAoc2VnX2RhdGEtPmFsdGVybmF0ZV9sb29wX2ZpbHRlcl9lbmFibGVkKSB7CisgICAgICAgIGRhdGEgPSBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIDYpOworICAgICAgICBzZWdfZGF0YS0+YWx0ZXJuYXRlX2xvb3BfZmlsdGVyID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpID8gLWRhdGEgOiBkYXRhOworICAgICAgfQorCisgICAgICAvKiBTRUdfTFZMX1JFRl9GUkFNRSAqLworICAgICAgc2VnX2RhdGEtPnJlZmVyZW5jZV9mcmFtZV9lbmFibGVkID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgICAgaWYgKHNlZ19kYXRhLT5yZWZlcmVuY2VfZnJhbWVfZW5hYmxlZCkgeworICAgICAgICBzZWdfZGF0YS0+cmVmZXJlbmNlX2ZyYW1lID0gZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCAyKTsKKyAgICAgIH0KKworICAgICAgc2VnX2RhdGEtPnJlZmVyZW5jZV9za2lwID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgZ3VpbnQzMgorZ2V0X21heF9sYl90aWxlX2NvbHMgKGd1aW50MzIgc2JfY29scykKK3sKKyAgZ2ludCBtYXhfbG9nMiA9IDE7CisgIHdoaWxlICgoc2JfY29scyA+PiBtYXhfbG9nMikgPj0gTUlOX1RJTEVfV0lEVEhfQjY0KQorICAgICsrbWF4X2xvZzI7CisgIHJldHVybiBtYXhfbG9nMiAtIDE7Cit9CisKK3N0YXRpYyBndWludDMyCitnZXRfbWluX2xiX3RpbGVfY29scyAoZ3VpbnQzMiBzYl9jb2xzKQoreworICBnaW50IG1pbl9sb2cyID0gMDsKKyAgd2hpbGUgKChNQVhfVElMRV9XSURUSF9CNjQgPDwgbWluX2xvZzIpIDwgc2JfY29scykKKyAgICArK21pbl9sb2cyOworICByZXR1cm4gbWluX2xvZzI7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorcGFyc2VfdGlsZV9pbmZvIChHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkciwgR3N0Qml0UmVhZGVyICogYnIpCit7CisgIGd1aW50MzIgbWF4X29uZXM7CisgIGNvbnN0IGd1aW50MzIgc2JfY29scyA9IEFMSUdOX1NCNjQgKGZyYW1lX2hkci0+d2lkdGgpOworICBndWludDMyIG1pbl9sYl90aWxlX2NvbHMgPSBnZXRfbWluX2xiX3RpbGVfY29scyAoc2JfY29scyk7CisgIGd1aW50MzIgbWF4X2xiX3RpbGVfY29scyA9IGdldF9tYXhfbGJfdGlsZV9jb2xzIChzYl9jb2xzKTsKKworICBnX2Fzc2VydCAobWluX2xiX3RpbGVfY29scyA8PSBtYXhfbGJfdGlsZV9jb2xzKTsKKyAgbWF4X29uZXMgPSBtYXhfbGJfdGlsZV9jb2xzIC0gbWluX2xiX3RpbGVfY29sczsKKworICAvKiBjb2x1bW5zICovCisgIGZyYW1lX2hkci0+bG9nMl90aWxlX2NvbHVtbnMgPSBtaW5fbGJfdGlsZV9jb2xzOworICB3aGlsZSAobWF4X29uZXMtLSAmJiBnc3RfdnA5X3JlYWRfYml0IChicikpCisgICAgZnJhbWVfaGRyLT5sb2cyX3RpbGVfY29sdW1ucysrOworCisgIGlmIChmcmFtZV9oZHItPmxvZzJfdGlsZV9jb2x1bW5zID4gNikgeworICAgIEdTVF9FUlJPUiAoIkludmFsaWQgbnVtYmVyIG9mIHRpbGUgY29sdW1ucy4uISIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIC8qIHJvdyAqLworICBmcmFtZV9oZHItPmxvZzJfdGlsZV9yb3dzID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICBpZiAoZnJhbWVfaGRyLT5sb2cyX3RpbGVfcm93cykKKyAgICBmcmFtZV9oZHItPmxvZzJfdGlsZV9yb3dzICs9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK2xvb3BfZmlsdGVyX3VwZGF0ZSAoR3N0VnA5UGFyc2VyICogcGFyc2VyLCBjb25zdCBHc3RWcDlMb29wRmlsdGVyICogbGYpCit7CisgIEdzdFZwOVBhcnNlclByaXZhdGUgKnByaXYgPSBHU1RfVlA5X1BBUlNFUl9HRVRfUFJJVkFURSAocGFyc2VyKTsKKyAgaW50IGk7CisKKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WUDlfTUFYX1JFRl9MRl9ERUxUQVM7IGkrKykgeworICAgIGlmIChsZi0+dXBkYXRlX3JlZl9kZWx0YXNbaV0pCisgICAgICBwcml2LT5yZWZfZGVsdGFzW2ldID0gbGYtPnJlZl9kZWx0YXNbaV07CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZQOV9NQVhfTU9ERV9MRl9ERUxUQVM7IGkrKykgeworICAgIGlmIChsZi0+dXBkYXRlX21vZGVfZGVsdGFzW2ldKQorICAgICAgcHJpdi0+bW9kZV9kZWx0YXNbaV0gPSBsZi0+bW9kZV9kZWx0YXNbaV07CisgIH0KK30KKworc3RhdGljIGd1aW50OAorc2VnX2dldF9iYXNlX3FpbmRleCAoY29uc3QgR3N0VnA5UGFyc2VyICogcGFyc2VyLAorICAgIGNvbnN0IEdzdFZwOUZyYW1lSGRyICogZnJhbWVfaGRyLCBpbnQgc2VnaWQpCit7CisgIGludCBzZWdfYmFzZSA9IGZyYW1lX2hkci0+cXVhbnRfaW5kaWNlcy55X2FjX3FpOworICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisgIGNvbnN0IEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhICpzZWcgPSBwcml2LT5zZWdtZW50YXRpb24gKyBzZWdpZDsKKyAgLyogREVCVUcoImlkID0gJWQsIHNlZ19iYXNlID0gJWQsIHNlZyBlbmFibGUgPSAlZCwgYWx0IGVhbmJsZSA9ICVkLCBhYnMgPSAlZCwgYWx0PSAlZFxuIixzZWdpZCwKKyAgICAgc2VnX2Jhc2UsIGZyYW1lX2hkci0+c2VnbWVudGF0aW9uLmVuYWJsZWQsIHNlZy0+YWx0ZXJuYXRlX3F1YW50aXplcl9lbmFibGVkLCBwcml2LT5zZWdtZW50YXRpb25fYWJzX2RlbHRhLCAgc2VnLT5hbHRlcm5hdGVfcXVhbnRpemVyKTsKKyAgICovCisgIGlmIChmcmFtZV9oZHItPnNlZ21lbnRhdGlvbi5lbmFibGVkICYmIHNlZy0+YWx0ZXJuYXRlX3F1YW50aXplcl9lbmFibGVkKSB7CisgICAgaWYgKHByaXYtPnNlZ21lbnRhdGlvbl9hYnNfZGVsdGEpCisgICAgICBzZWdfYmFzZSA9IHNlZy0+YWx0ZXJuYXRlX3F1YW50aXplcjsKKyAgICBlbHNlCisgICAgICBzZWdfYmFzZSArPSBzZWctPmFsdGVybmF0ZV9xdWFudGl6ZXI7CisgIH0KKyAgcmV0dXJuIENMQU1QIChzZWdfYmFzZSwgMCwgTUFYUSk7Cit9CisKK3N0YXRpYyBndWludDgKK3NlZ19nZXRfZmlsdGVyX2xldmVsIChjb25zdCBHc3RWcDlQYXJzZXIgKiBwYXJzZXIsCisgICAgY29uc3QgR3N0VnA5RnJhbWVIZHIgKiBmcmFtZV9oZHIsIGludCBzZWdpZCkKK3sKKyAgaW50IHNlZ19maWx0ZXIgPSBmcmFtZV9oZHItPmxvb3BmaWx0ZXIuZmlsdGVyX2xldmVsOworICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisgIGNvbnN0IEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhICpzZWcgPSBwcml2LT5zZWdtZW50YXRpb24gKyBzZWdpZDsKKworICBpZiAoZnJhbWVfaGRyLT5zZWdtZW50YXRpb24uZW5hYmxlZCAmJiBzZWctPmFsdGVybmF0ZV9sb29wX2ZpbHRlcl9lbmFibGVkKSB7CisgICAgaWYgKHByaXYtPnNlZ21lbnRhdGlvbl9hYnNfZGVsdGEpCisgICAgICBzZWdfZmlsdGVyID0gc2VnLT5hbHRlcm5hdGVfbG9vcF9maWx0ZXI7CisgICAgZWxzZQorICAgICAgc2VnX2ZpbHRlciArPSBzZWctPmFsdGVybmF0ZV9sb29wX2ZpbHRlcjsKKyAgfQorICByZXR1cm4gQ0xBTVAgKHNlZ19maWx0ZXIsIDAsIEdTVF9WUDlfTUFYX0xPT1BfRklMVEVSKTsKK30KKworLypzYXZlIHNlZ21lbnRhdGlvbiBpbmZvIGZyb20gZnJhbWUgaGVhZGVyIHRvIHBhcnNlciovCitzdGF0aWMgdm9pZAorc2VnbWVudGF0aW9uX3NhdmUgKEdzdFZwOVBhcnNlciAqIHBhcnNlciwgY29uc3QgR3N0VnA5RnJhbWVIZHIgKiBmcmFtZV9oZHIpCit7CisgIGNvbnN0IEdzdFZwOVNlZ21lbnRhdGlvbkluZm8gKmluZm8gPSAmZnJhbWVfaGRyLT5zZWdtZW50YXRpb247CisgIGlmICghaW5mby0+ZW5hYmxlZCkKKyAgICByZXR1cm47CisKKyAgaWYgKGluZm8tPnVwZGF0ZV9tYXApIHsKKyAgICBnX2Fzc2VydCAoR19OX0VMRU1FTlRTIChwYXJzZXItPm1iX3NlZ21lbnRfdHJlZV9wcm9icykgPT0KKyAgICAgICAgR19OX0VMRU1FTlRTIChpbmZvLT50cmVlX3Byb2JzKSk7CisgICAgZ19hc3NlcnQgKEdfTl9FTEVNRU5UUyAocGFyc2VyLT5zZWdtZW50X3ByZWRfcHJvYnMpID09CisgICAgICAgIEdfTl9FTEVNRU5UUyAoaW5mby0+cHJlZF9wcm9icykpOworICAgIG1lbWNweSAocGFyc2VyLT5tYl9zZWdtZW50X3RyZWVfcHJvYnMsIGluZm8tPnRyZWVfcHJvYnMsCisgICAgICAgIHNpemVvZiAoaW5mby0+dHJlZV9wcm9icykpOworICAgIG1lbWNweSAocGFyc2VyLT5zZWdtZW50X3ByZWRfcHJvYnMsIGluZm8tPnByZWRfcHJvYnMsCisgICAgICAgIHNpemVvZiAoaW5mby0+cHJlZF9wcm9icykpOworICB9CisKKyAgaWYgKGluZm8tPnVwZGF0ZV9kYXRhKSB7CisgICAgR3N0VnA5UGFyc2VyUHJpdmF0ZSAqcHJpdiA9IEdTVF9WUDlfUEFSU0VSX0dFVF9QUklWQVRFIChwYXJzZXIpOworICAgIHByaXYtPnNlZ21lbnRhdGlvbl9hYnNfZGVsdGEgPSBpbmZvLT5hYnNfZGVsdGE7CisgICAgZ19hc3NlcnQgKEdfTl9FTEVNRU5UUyAocHJpdi0+c2VnbWVudGF0aW9uKSA9PSBHX05fRUxFTUVOVFMgKGluZm8tPmRhdGEpKTsKKyAgICBtZW1jcHkgKHByaXYtPnNlZ21lbnRhdGlvbiwgaW5mby0+ZGF0YSwgc2l6ZW9mIChpbmZvLT5kYXRhKSk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3NlZ21lbnRhdGlvbl91cGRhdGUgKEdzdFZwOVBhcnNlciAqIHBhcnNlciwgY29uc3QgR3N0VnA5RnJhbWVIZHIgKiBmcmFtZV9oZHIpCit7CisgIGludCBpID0gMDsKKyAgY29uc3QgR3N0VnA5UGFyc2VyUHJpdmF0ZSAqcHJpdiA9IEdTVF9WUDlfUEFSU0VSX0dFVF9QUklWQVRFIChwYXJzZXIpOworICBjb25zdCBHc3RWcDlMb29wRmlsdGVyICpsZiA9ICZmcmFtZV9oZHItPmxvb3BmaWx0ZXI7CisgIGNvbnN0IEdzdFZwOVF1YW50SW5kaWNlcyAqcXVhbnRfaW5kaWNlcyA9ICZmcmFtZV9oZHItPnF1YW50X2luZGljZXM7CisgIGludCBkZWZhdWx0X2ZpbHRlciA9IGxmLT5maWx0ZXJfbGV2ZWw7CisgIGNvbnN0IGludCBzY2FsZSA9IDEgPDwgKGRlZmF1bHRfZmlsdGVyID4+IDUpOworCisgIHNlZ21lbnRhdGlvbl9zYXZlIChwYXJzZXIsIGZyYW1lX2hkcik7CisKKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WUDlfTUFYX1NFR01FTlRTOyBpKyspIHsKKyAgICBndWludDggcSA9IHNlZ19nZXRfYmFzZV9xaW5kZXggKHBhcnNlciwgZnJhbWVfaGRyLCBpKTsKKworICAgIEdzdFZwOVNlZ21lbnRhdGlvbiAqc2VnID0gcGFyc2VyLT5zZWdtZW50YXRpb24gKyBpOworICAgIGNvbnN0IEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhICppbmZvID0gcHJpdi0+c2VnbWVudGF0aW9uICsgaTsKKworICAgIHNlZy0+bHVtYV9kY19xdWFudF9zY2FsZSA9CisgICAgICAgIGdzdF92cDlfZGNfcXVhbnQgKHEsIHF1YW50X2luZGljZXMtPnlfZGNfZGVsdGEsIGZyYW1lX2hkci0+Yml0X2RlcHRoKTsKKyAgICBzZWctPmx1bWFfYWNfcXVhbnRfc2NhbGUgPSBnc3RfdnA5X2FjX3F1YW50IChxLCAwLCBmcmFtZV9oZHItPmJpdF9kZXB0aCk7CisgICAgc2VnLT5jaHJvbWFfZGNfcXVhbnRfc2NhbGUgPQorICAgICAgICBnc3RfdnA5X2RjX3F1YW50IChxLCBxdWFudF9pbmRpY2VzLT51dl9kY19kZWx0YSwgZnJhbWVfaGRyLT5iaXRfZGVwdGgpOworICAgIHNlZy0+Y2hyb21hX2FjX3F1YW50X3NjYWxlID0KKyAgICAgICAgZ3N0X3ZwOV9hY19xdWFudCAocSwgcXVhbnRfaW5kaWNlcy0+dXZfYWNfZGVsdGEsIGZyYW1lX2hkci0+Yml0X2RlcHRoKTsKKworICAgIGlmIChsZi0+ZmlsdGVyX2xldmVsKSB7CisgICAgICBndWludDggZmlsdGVyID0gc2VnX2dldF9maWx0ZXJfbGV2ZWwgKHBhcnNlciwgZnJhbWVfaGRyLCBpKTsKKworICAgICAgaWYgKCFsZi0+bW9kZV9yZWZfZGVsdGFfZW5hYmxlZCkgeworICAgICAgICBtZW1zZXQgKHNlZy0+ZmlsdGVyX2xldmVsLCBmaWx0ZXIsIHNpemVvZiAoc2VnLT5maWx0ZXJfbGV2ZWwpKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGludCByZWYsIG1vZGU7CisgICAgICAgIGNvbnN0IGludCBpbnRyYV9maWx0ZXIgPQorICAgICAgICAgICAgZmlsdGVyICsgcHJpdi0+cmVmX2RlbHRhc1tHU1RfVlA5X1JFRl9GUkFNRV9JTlRSQV0gKiBzY2FsZTsKKyAgICAgICAgc2VnLT5maWx0ZXJfbGV2ZWxbR1NUX1ZQOV9SRUZfRlJBTUVfSU5UUkFdWzBdID0KKyAgICAgICAgICAgIENMQU1QIChpbnRyYV9maWx0ZXIsIDAsIEdTVF9WUDlfTUFYX0xPT1BfRklMVEVSKTsKKyAgICAgICAgZm9yIChyZWYgPSBHU1RfVlA5X1JFRl9GUkFNRV9MQVNUOyByZWYgPCBHU1RfVlA5X1JFRl9GUkFNRV9NQVg7ICsrcmVmKSB7CisgICAgICAgICAgZm9yIChtb2RlID0gMDsgbW9kZSA8IEdTVF9WUDlfTUFYX01PREVfTEZfREVMVEFTOyArK21vZGUpIHsKKyAgICAgICAgICAgIGNvbnN0IGludCBpbnRlcl9maWx0ZXIgPSBmaWx0ZXIgKyBwcml2LT5yZWZfZGVsdGFzW3JlZl0gKiBzY2FsZQorICAgICAgICAgICAgICAgICsgcHJpdi0+bW9kZV9kZWx0YXNbbW9kZV0gKiBzY2FsZTsKKyAgICAgICAgICAgIHNlZy0+ZmlsdGVyX2xldmVsW3JlZl1bbW9kZV0gPQorICAgICAgICAgICAgICAgIENMQU1QIChpbnRlcl9maWx0ZXIsIDAsIEdTVF9WUDlfTUFYX0xPT1BfRklMVEVSKTsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9CisgICAgc2VnLT5yZWZlcmVuY2VfZnJhbWVfZW5hYmxlZCA9IGluZm8tPnJlZmVyZW5jZV9mcmFtZV9lbmFibGVkOzsKKyAgICBzZWctPnJlZmVyZW5jZV9mcmFtZSA9IGluZm8tPnJlZmVyZW5jZV9mcmFtZTsKKyAgICBzZWctPnJlZmVyZW5jZV9za2lwID0gaW5mby0+cmVmZXJlbmNlX3NraXA7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3JlZmVyZW5jZV91cGRhdGUgKEdzdFZwOVBhcnNlciAqIHBhcnNlciwgY29uc3QgR3N0VnA5RnJhbWVIZHIgKiBjb25zdCBmcmFtZV9oZHIpCit7CisgIGd1aW50OCBmbGFnID0gMTsKKyAgZ3VpbnQ4IHJlZnJlc2hfZnJhbWVfZmxhZ3M7CisgIGludCBpOworICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisgIFJlZmVyZW5jZVNpemUgKnJlZmVyZW5jZSA9IHByaXYtPnJlZmVyZW5jZTsKKyAgaWYgKGZyYW1lX2hkci0+ZnJhbWVfdHlwZSA9PSBHU1RfVlA5X0tFWV9GUkFNRSkgeworICAgIHJlZnJlc2hfZnJhbWVfZmxhZ3MgPSAweGZmOworICB9IGVsc2UgeworICAgIHJlZnJlc2hfZnJhbWVfZmxhZ3MgPSBmcmFtZV9oZHItPnJlZnJlc2hfZnJhbWVfZmxhZ3M7CisgIH0KKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WUDlfUkVGX0ZSQU1FUzsgaSsrKSB7CisgICAgaWYgKHJlZnJlc2hfZnJhbWVfZmxhZ3MgJiBmbGFnKSB7CisgICAgICByZWZlcmVuY2VbaV0ud2lkdGggPSBmcmFtZV9oZHItPndpZHRoOworICAgICAgcmVmZXJlbmNlW2ldLmhlaWdodCA9IGZyYW1lX2hkci0+aGVpZ2h0OworICAgIH0KKyAgICBmbGFnIDw8PSAxOworICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgaW50CitmcmFtZV9pc19pbnRyYV9vbmx5IChjb25zdCBHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkcikKK3sKKyAgcmV0dXJuIGZyYW1lX2hkci0+ZnJhbWVfdHlwZSA9PSBHU1RfVlA5X0tFWV9GUkFNRSB8fCBmcmFtZV9oZHItPmludHJhX29ubHk7Cit9CisKK3N0YXRpYyB2b2lkCitzZXRfZGVmYXVsdF9sZl9kZWx0YXMgKEdzdFZwOVBhcnNlciAqIHBhcnNlcikKK3sKKyAgR3N0VnA5UGFyc2VyUHJpdmF0ZSAqcHJpdiA9IEdTVF9WUDlfUEFSU0VSX0dFVF9QUklWQVRFIChwYXJzZXIpOworICBwcml2LT5yZWZfZGVsdGFzW0dTVF9WUDlfUkVGX0ZSQU1FX0lOVFJBXSA9IDE7CisgIHByaXYtPnJlZl9kZWx0YXNbR1NUX1ZQOV9SRUZfRlJBTUVfTEFTVF0gPSAwOworICBwcml2LT5yZWZfZGVsdGFzW0dTVF9WUDlfUkVGX0ZSQU1FX0dPTERFTl0gPSAtMTsKKyAgcHJpdi0+cmVmX2RlbHRhc1tHU1RfVlA5X1JFRl9GUkFNRV9BTFRSRUZdID0gLTE7CisKKyAgcHJpdi0+bW9kZV9kZWx0YXNbMF0gPSAwOworICBwcml2LT5tb2RlX2RlbHRhc1sxXSA9IDA7Cit9CisKK3N0YXRpYyB2b2lkCitzZXRfZGVmYXVsdF9zZWdtZW50YXRpb25faW5mbyAoR3N0VnA5UGFyc2VyICogcGFyc2VyKQoreworICBHc3RWcDlQYXJzZXJQcml2YXRlICpwcml2ID0gR1NUX1ZQOV9QQVJTRVJfR0VUX1BSSVZBVEUgKHBhcnNlcik7CisKKyAgbWVtc2V0IChwcml2LT5zZWdtZW50YXRpb24sIDAsIHNpemVvZiAocHJpdi0+c2VnbWVudGF0aW9uKSk7CisKKyAgcHJpdi0+c2VnbWVudGF0aW9uX2Fic19kZWx0YSA9IEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorc2V0dXBfcGFzdF9pbmRlcGVuZGVuY2UgKEdzdFZwOVBhcnNlciAqIHBhcnNlciwKKyAgICBHc3RWcDlGcmFtZUhkciAqIGNvbnN0IGZyYW1lX2hkcikKK3sKKyAgc2V0X2RlZmF1bHRfbGZfZGVsdGFzIChwYXJzZXIpOworICBzZXRfZGVmYXVsdF9zZWdtZW50YXRpb25faW5mbyAocGFyc2VyKTsKKworICBtZW1zZXQgKGZyYW1lX2hkci0+cmVmX2ZyYW1lX3NpZ25fYmlhcywgMCwKKyAgICAgIHNpemVvZiAoZnJhbWVfaGRyLT5yZWZfZnJhbWVfc2lnbl9iaWFzKSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdnA5X3BhcnNlcl9pbml0IChHc3RWcDlQYXJzZXIgKiBwYXJzZXIpCit7CisgIEdzdFZwOVBhcnNlclByaXZhdGUgKnByaXYgPSBwYXJzZXItPnByaXY7CisKKyAgbWVtc2V0IChwYXJzZXIsIDAsIHNpemVvZiAoR3N0VnA5UGFyc2VyKSk7CisgIG1lbXNldCAocHJpdiwgMCwgc2l6ZW9mIChHc3RWcDlQYXJzZXJQcml2YXRlKSk7CisKKyAgcGFyc2VyLT5wcml2ID0gcHJpdjsKK30KKworc3RhdGljIEdzdFZwOVBhcnNlclJlc3VsdAorZ3N0X3ZwOV9wYXJzZXJfdXBkYXRlIChHc3RWcDlQYXJzZXIgKiBwYXJzZXIsIEdzdFZwOUZyYW1lSGRyICogY29uc3QgZnJhbWVfaGRyKQoreworICBpZiAoZnJhbWVfaGRyLT5mcmFtZV90eXBlID09IEdTVF9WUDlfS0VZX0ZSQU1FKQorICAgIGdzdF92cDlfcGFyc2VyX2luaXQgKHBhcnNlcik7CisKKyAgaWYgKGZyYW1lX2lzX2ludHJhX29ubHkgKGZyYW1lX2hkcikgfHwgZnJhbWVfaGRyLT5lcnJvcl9yZXNpbGllbnRfbW9kZSkKKyAgICBzZXR1cF9wYXN0X2luZGVwZW5kZW5jZSAocGFyc2VyLCBmcmFtZV9oZHIpOworCisgIGxvb3BfZmlsdGVyX3VwZGF0ZSAocGFyc2VyLCAmZnJhbWVfaGRyLT5sb29wZmlsdGVyKTsKKyAgc2VnbWVudGF0aW9uX3VwZGF0ZSAocGFyc2VyLCBmcmFtZV9oZHIpOworICByZWZlcmVuY2VfdXBkYXRlIChwYXJzZXIsIGZyYW1lX2hkcik7CisKKyAgcmV0dXJuIEdTVF9WUDlfUEFSU0VSX09LOworfQorCisKKy8qKioqKioqKiBBUEkgKioqKioqKioqKioqKi8KKworLyoqCisgKiBnc3RfdnA5X3BhcnNlcl9uZXc6CisgKgorICogQ3JlYXRlcyBhIG5ldyAjR3N0VnA5UGFyc2VyLiBJdCBzaG91bGQgYmUgZnJlZWQgd2l0aAorICogZ3N0X3ZwOV9wYXJzZXJfZnJlZSgpIGFmdGVyIHVzZS4KKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0VnA5UGFyc2VyCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RWcDlQYXJzZXIgKgorZ3N0X3ZwOV9wYXJzZXJfbmV3ICh2b2lkKQoreworICBHc3RWcDlQYXJzZXIgKnBhcnNlcjsKKyAgR3N0VnA5UGFyc2VyUHJpdmF0ZSAqcHJpdjsKKworICBJTklUSUFMSVpFX0RFQlVHX0NBVEVHT1JZOworICBHU1RfREVCVUcgKCJDcmVhdGUgVlA5IFBhcnNlciIpOworCisgIHBhcnNlciA9IGdfc2xpY2VfbmV3IChHc3RWcDlQYXJzZXIpOworICBpZiAoIXBhcnNlcikKKyAgICByZXR1cm4gTlVMTDsKKworICBwcml2ID0gZ19zbGljZV9uZXcgKEdzdFZwOVBhcnNlclByaXZhdGUpOworICBpZiAoIXByaXYpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcGFyc2VyLT5wcml2ID0gcHJpdjsKKyAgZ3N0X3ZwOV9wYXJzZXJfaW5pdCAocGFyc2VyKTsKKworICByZXR1cm4gcGFyc2VyOworfQorCisvKioKKyAqIGdzdF92cDlfcGFyc2VyX2ZyZWU6CisgKiBAcGFyc2VyOiB0aGUgI0dzdFZwOVBhcnNlciB0byBmcmVlCisgKgorICogRnJlZXMgQHBhcnNlci4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF92cDlfcGFyc2VyX2ZyZWUgKEdzdFZwOVBhcnNlciAqIHBhcnNlcikKK3sKKyAgaWYgKHBhcnNlcikgeworICAgIGlmIChwYXJzZXItPnByaXYpIHsKKyAgICAgIGdfc2xpY2VfZnJlZSAoR3N0VnA5UGFyc2VyUHJpdmF0ZSwgcGFyc2VyLT5wcml2KTsKKyAgICAgIHBhcnNlci0+cHJpdiA9IE5VTEw7CisgICAgfQorICAgIGdfc2xpY2VfZnJlZSAoR3N0VnA5UGFyc2VyLCBwYXJzZXIpOworICB9Cit9CisKKy8qKgorICogZ3N0X3ZwOV9wYXJzZXJfcGFyc2VfZnJhbWVfaGVhZGVyOgorICogQHBhcnNlcjogVGhlICNHc3RWcDlQYXJzZXIKKyAqIEBmcmFtZV9oZHI6IFRoZSAjR3N0VnA5RnJhbWVIZHIgdG8gZmlsbAorICogQGRhdGE6IFRoZSBkYXRhIHRvIHBhcnNlCisgKiBAc2l6ZTogVGhlIHNpemUgb2YgdGhlIEBkYXRhIHRvIHBhcnNlCisgKgorICogUGFyc2VzIHRoZSBWUDkgYml0c3RyZWFtIGNvbnRhaW5lZCBpbiBAZGF0YSwgYW5kIGZpbGxzIGluIEBmcmFtZV9oZHIKKyAqIHdpdGggdGhlIGluZm9ybWF0aW9uLiBUaGUgQHNpemUgYXJndW1lbnQgcmVwcmVzZW50IHRoZSB3aG9sZSBmcmFtZSBzaXplLgorICoKKyAqIFJldHVybnM6IGEgI0dzdFZwOVBhcnNlclJlc3VsdAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0VnA5UGFyc2VyUmVzdWx0Citnc3RfdnA5X3BhcnNlcl9wYXJzZV9mcmFtZV9oZWFkZXIgKEdzdFZwOVBhcnNlciAqIHBhcnNlciwKKyAgICBHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkciwgY29uc3QgZ3VpbnQ4ICogZGF0YSwgZ3NpemUgc2l6ZSkKK3sKKyAgR3N0Qml0UmVhZGVyIGJpdF9yZWFkZXI7CisgIEdzdEJpdFJlYWRlciAqYnIgPSAmYml0X3JlYWRlcjsKKworICBnc3RfYml0X3JlYWRlcl9pbml0IChiciwgZGF0YSwgc2l6ZSk7CisgIG1lbXNldCAoZnJhbWVfaGRyLCAwLCBzaXplb2YgKCpmcmFtZV9oZHIpKTsKKworICAvKiBQYXJzaW5nIFVuY29tcHJlc3NlZCBEYXRhIENodW5rICovCisKKyAgaWYgKCF2ZXJpZnlfZnJhbWVfbWFya2VyIChicikpCisgICAgZ290byBlcnJvcjsKKworICBmcmFtZV9oZHItPnByb2ZpbGUgPSBwYXJzZV9wcm9maWxlIChicik7CisgIGlmIChmcmFtZV9oZHItPnByb2ZpbGUgPiBHU1RfVlA5X1BST0ZJTEVfVU5ERUZJTkVEKSB7CisgICAgR1NUX0VSUk9SICgiU3RyZWFtIGhhcyB1bmRlZmluZWQgVlA5ICBwcm9maWxlICEiKTsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgZnJhbWVfaGRyLT5zaG93X2V4aXN0aW5nX2ZyYW1lID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICBpZiAoZnJhbWVfaGRyLT5zaG93X2V4aXN0aW5nX2ZyYW1lKSB7CisgICAgZnJhbWVfaGRyLT5mcmFtZV90b19zaG93ID0gZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCBHU1RfVlA5X1JFRl9GUkFNRVNfTE9HMik7CisgICAgcmV0dXJuIEdTVF9WUDlfUEFSU0VSX09LOworICB9CisKKyAgZnJhbWVfaGRyLT5mcmFtZV90eXBlID0gZ3N0X3ZwOV9yZWFkX2JpdCAoYnIpOworICBmcmFtZV9oZHItPnNob3dfZnJhbWUgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGZyYW1lX2hkci0+ZXJyb3JfcmVzaWxpZW50X21vZGUgPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisKKyAgaWYgKGZyYW1lX2hkci0+ZnJhbWVfdHlwZSA9PSBHU1RfVlA5X0tFWV9GUkFNRSkgeworCisgICAgaWYgKCF2ZXJpZnlfc3luY19jb2RlIChicikpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkludmFsaWQgVlA5IEtleS1mcmFtZSBzeW5jIGNvZGUgISIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBpZiAoIXBhcnNlX2JpdGRlcHRoX2NvbG9yc3BhY2Vfc2FtcGxpbmcgKGJyLCBmcmFtZV9oZHIpKSB7CisgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gcGFyc2UgY29sb3Jfc3BhY2UvYml0X2RlcHRoIGluZm8gISIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBwYXJzZV9mcmFtZV9zaXplIChiciwgJmZyYW1lX2hkci0+d2lkdGgsICZmcmFtZV9oZHItPmhlaWdodCk7CisKKyAgICBwYXJzZV9kaXNwbGF5X2ZyYW1lX3NpemUgKGJyLCBmcmFtZV9oZHIpOworCisgIH0gZWxzZSB7CisgICAgZnJhbWVfaGRyLT5pbnRyYV9vbmx5ID0gZnJhbWVfaGRyLT5zaG93X2ZyYW1lID8gMCA6IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICBmcmFtZV9oZHItPnJlc2V0X2ZyYW1lX2NvbnRleHQgPSBmcmFtZV9oZHItPmVycm9yX3Jlc2lsaWVudF9tb2RlID8KKyAgICAgICAgMCA6IGdzdF92cDlfcmVhZF9iaXRzIChiciwgMik7CisKKyAgICBpZiAoZnJhbWVfaGRyLT5pbnRyYV9vbmx5KSB7CisKKyAgICAgIGlmICghdmVyaWZ5X3N5bmNfY29kZSAoYnIpKSB7CisgICAgICAgIEdTVF9FUlJPUiAoIkludmFsaWQgVlA5IHN5bmMgY29kZSBpbiBpbnRyYS1vbmx5IGZyYW1lICEiKTsKKyAgICAgICAgZ290byBlcnJvcjsKKyAgICAgIH0KKworICAgICAgaWYgKGZyYW1lX2hkci0+cHJvZmlsZSA+IEdTVF9WUDlfUFJPRklMRV8wKSB7CisgICAgICAgIGlmICghcGFyc2VfYml0ZGVwdGhfY29sb3JzcGFjZV9zYW1wbGluZyAoYnIsIGZyYW1lX2hkcikpIHsKKyAgICAgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gcGFyc2UgY29sb3Jfc3BhY2UvYml0X2RlcHRoIGluZm8gISIpOworICAgICAgICAgIGdvdG8gZXJyb3I7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGZyYW1lX2hkci0+Y29sb3Jfc3BhY2UgPSBHU1RfVlA5X0NTX0JUXzYwMTsKKyAgICAgICAgZnJhbWVfaGRyLT5jb2xvcl9yYW5nZSA9IEdTVF9WUDlfQ1JfTElNSVRFRDsKKyAgICAgICAgZnJhbWVfaGRyLT5zdWJzYW1wbGluZ195ID0gZnJhbWVfaGRyLT5zdWJzYW1wbGluZ194ID0gMTsKKyAgICAgICAgZnJhbWVfaGRyLT5iaXRfZGVwdGggPSBHU1RfVlA5X0JJVF9ERVBUSF84OworICAgICAgfQorCisgICAgICBmcmFtZV9oZHItPnJlZnJlc2hfZnJhbWVfZmxhZ3MgPQorICAgICAgICAgIGdzdF92cDlfcmVhZF9iaXRzIChiciwgR1NUX1ZQOV9SRUZfRlJBTUVTKTsKKyAgICAgIHBhcnNlX2ZyYW1lX3NpemUgKGJyLCAmZnJhbWVfaGRyLT53aWR0aCwgJmZyYW1lX2hkci0+aGVpZ2h0KTsKKyAgICAgIHBhcnNlX2Rpc3BsYXlfZnJhbWVfc2l6ZSAoYnIsIGZyYW1lX2hkcik7CisKKyAgICB9IGVsc2UgeworICAgICAgaW50IGk7CisgICAgICBmcmFtZV9oZHItPnJlZnJlc2hfZnJhbWVfZmxhZ3MgPQorICAgICAgICAgIGdzdF92cDlfcmVhZF9iaXRzIChiciwgR1NUX1ZQOV9SRUZfRlJBTUVTKTsKKworICAgICAgZm9yIChpID0gMDsgaSA8IEdTVF9WUDlfUkVGU19QRVJfRlJBTUU7IGkrKykgeworICAgICAgICBmcmFtZV9oZHItPnJlZl9mcmFtZV9pbmRpY2VzW2ldID0KKyAgICAgICAgICAgIGdzdF92cDlfcmVhZF9iaXRzIChiciwgR1NUX1ZQOV9SRUZfRlJBTUVTX0xPRzIpOworICAgICAgICBmcmFtZV9oZHItPnJlZl9mcmFtZV9zaWduX2JpYXNbaV0gPSBnc3RfdnA5X3JlYWRfYml0IChicik7CisgICAgICB9CisKKyAgICAgIHBhcnNlX2ZyYW1lX3NpemVfZnJvbV9yZWZzIChwYXJzZXIsIGZyYW1lX2hkciwgYnIpOworICAgICAgcGFyc2VfZGlzcGxheV9mcmFtZV9zaXplIChiciwgZnJhbWVfaGRyKTsKKworICAgICAgZnJhbWVfaGRyLT5hbGxvd19oaWdoX3ByZWNpc2lvbl9tdiA9IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgICAgIGZyYW1lX2hkci0+bWNvbXBfZmlsdGVyX3R5cGUgPSBwYXJzZV9pbnRlcnBfZmlsdGVyIChicik7CisKKyAgICAgIC8qIEFzc2luZyBkZWZhbHV0IHZhbHVlcyAqLworICAgICAgZnJhbWVfaGRyLT5jb2xvcl9zcGFjZSA9IEdTVF9WUDlfQ1NfQlRfNjAxOworICAgICAgZnJhbWVfaGRyLT5jb2xvcl9yYW5nZSA9IEdTVF9WUDlfQ1JfTElNSVRFRDsKKyAgICAgIGZyYW1lX2hkci0+c3Vic2FtcGxpbmdfeSA9IGZyYW1lX2hkci0+c3Vic2FtcGxpbmdfeCA9IDE7CisgICAgICBmcmFtZV9oZHItPmJpdF9kZXB0aCA9IEdTVF9WUDlfQklUX0RFUFRIXzg7CisgICAgfQorICB9CisKKyAgZnJhbWVfaGRyLT5yZWZyZXNoX2ZyYW1lX2NvbnRleHQgPQorICAgICAgZnJhbWVfaGRyLT5lcnJvcl9yZXNpbGllbnRfbW9kZSA/IDAgOiBnc3RfdnA5X3JlYWRfYml0IChicik7CisgIGZyYW1lX2hkci0+ZnJhbWVfcGFyYWxsZWxfZGVjb2RpbmdfbW9kZSA9CisgICAgICBmcmFtZV9oZHItPmVycm9yX3Jlc2lsaWVudF9tb2RlID8gMSA6IGdzdF92cDlfcmVhZF9iaXQgKGJyKTsKKyAgZnJhbWVfaGRyLT5mcmFtZV9jb250ZXh0X2lkeCA9CisgICAgICBnc3RfdnA5X3JlYWRfYml0cyAoYnIsIEdTVF9WUDlfRlJBTUVfQ09OVEVYVFNfTE9HMik7CisKKyAgLyogbG9vcGZpbHRlciBoZWFkZXIgICovCisgIHBhcnNlX2xvb3BmaWx0ZXIgKCZmcmFtZV9oZHItPmxvb3BmaWx0ZXIsIGJyKTsKKworICAvKiBxdWFudGl6YXRpb24gaGVhZGVyICovCisgIHBhcnNlX3F1YW50aXphdGlvbiAoJmZyYW1lX2hkci0+cXVhbnRfaW5kaWNlcywgYnIpOworICAvKiBzZXQgbG9zc2xlc3NfZmxhZyAqLworICBmcmFtZV9oZHItPmxvc3NsZXNzX2ZsYWcgPSBmcmFtZV9oZHItPnF1YW50X2luZGljZXMueV9hY19xaSA9PSAwICYmCisgICAgICBmcmFtZV9oZHItPnF1YW50X2luZGljZXMueV9kY19kZWx0YSA9PSAwICYmCisgICAgICBmcmFtZV9oZHItPnF1YW50X2luZGljZXMudXZfZGNfZGVsdGEgPT0gMAorICAgICAgJiYgZnJhbWVfaGRyLT5xdWFudF9pbmRpY2VzLnV2X2FjX2RlbHRhID09IDA7CisKKyAgLyogc2VnbWVudGF0aW9uIGhlYWRlciAqLworICBwYXJzZV9zZWdtZW50YXRpb24gKCZmcmFtZV9oZHItPnNlZ21lbnRhdGlvbiwgYnIpOworCisgIC8qIHRpbGUgaGVhZGVyICovCisgIGlmICghcGFyc2VfdGlsZV9pbmZvIChmcmFtZV9oZHIsIGJyKSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBwYXJzZSB0aWxlIGluZm8uLi4hIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIC8qIHNpemUgb2YgdGhlIHJlc3Qgb2YgdGhlIGhlYWRlciAqLworICBmcmFtZV9oZHItPmZpcnN0X3BhcnRpdGlvbl9zaXplID0gZ3N0X3ZwOV9yZWFkX2JpdHMgKGJyLCAxNik7CisgIGlmICghZnJhbWVfaGRyLT5maXJzdF9wYXJ0aXRpb25fc2l6ZSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBwYXJzZSB0aGUgZmlyc3QgcGFydGl0aW9uIHNpemUuLi4hIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGZyYW1lX2hkci0+ZnJhbWVfaGVhZGVyX2xlbmd0aF9pbl9ieXRlcyA9CisgICAgICAoZ3N0X2JpdF9yZWFkZXJfZ2V0X3BvcyAoYnIpICsgNykgLyA4OworCisgIHJldHVybiBnc3RfdnA5X3BhcnNlcl91cGRhdGUgKHBhcnNlciwgZnJhbWVfaGRyKTsKKworZXJyb3I6CisgIHJldHVybiBHU1RfVlA5X1BBUlNFUl9FUlJPUjsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvZ3N0dnA5cGFyc2VyLmggYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZkNDVlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2dzdHZwOXBhcnNlci5oCkBAIC0wLDAgKzEsNDkzIEBACisvKgorICogZ3N0dnA5cGFyc2VyLmgKKyAqCisgKiAgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTQgSW50ZWwgQ29ycG9yYXRpb24KKyAqICBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24KKyAqICAgIEF1dGhvcjogWHVHdWFuZ3hpbjxHdWFuZ3hpbi5YdUBpbnRlbC5jb20+CisgKiAgICBBdXRob3I6IFNyZWVyZW5qIEJhbGFjaGFuZHJhbjxzcmVlcmVuai5iYWxhY2hhbmRyYW5AaW50ZWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgR1NUX1ZQOV9QQVJTRVJfSAorI2RlZmluZSBHU1RfVlA5X1BBUlNFUl9ICisKKyNpZm5kZWYgR1NUX1VTRV9VTlNUQUJMRV9BUEkKKyN3YXJuaW5nICJUaGUgVlA5IHBhcnNpbmcgbGlicmFyeSBpcyB1bnN0YWJsZSBBUEkgYW5kIG1heSBjaGFuZ2UgaW4gZnV0dXJlLiIKKyN3YXJuaW5nICJZb3UgY2FuIGRlZmluZSBHU1RfVVNFX1VOU1RBQkxFX0FQSSB0byBhdm9pZCB0aGlzIHdhcm5pbmcuIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVlA5X0ZSQU1FX01BUktFUiAweDAyCisjZGVmaW5lIEdTVF9WUDlfU1lOQ19DT0RFIDB4NDk4MzQyCisKKyNkZWZpbmUgR1NUX1ZQOV9NQVhfTE9PUF9GSUxURVIgICAgNjMKKyNkZWZpbmUgR1NUX1ZQOV9NQVhfUFJPQiAgICAgICAgICAgMjU1CisKKyNkZWZpbmUgR1NUX1ZQOV9SRUZTX1BFUl9GUkFNRSAgICAgMworI2RlZmluZSBHU1RfVlA5X1JFRl9GUkFNRVNfTE9HMiAgICAzCisjZGVmaW5lIEdTVF9WUDlfUkVGX0ZSQU1FUyAgICAgICAgICgxIDw8IEdTVF9WUDlfUkVGX0ZSQU1FU19MT0cyKQorCisjZGVmaW5lIEdTVF9WUDlfRlJBTUVfQ09OVEVYVFNfTE9HMiAyCisKKyNkZWZpbmUgR1NUX1ZQOV9NQVhfTE9PUF9GSUxURVIgICAgNjMKKyNkZWZpbmUgR1NUX1ZQOV9NQVhfU0hBUlBORVNTICAgICAgNworCisjZGVmaW5lIEdTVF9WUDlfTUFYX1JFRl9MRl9ERUxUQVMgIDQKKyNkZWZpbmUgR1NUX1ZQOV9NQVhfTU9ERV9MRl9ERUxUQVMgMgorCisjZGVmaW5lIEdTVF9WUDlfU0VHTUVOVF9ERUxUQURBVEEgIDAKKyNkZWZpbmUgR1NUX1ZQOV9TRUdNRU5UX0FCU0RBVEEgICAgMQorCisjZGVmaW5lIEdTVF9WUDlfTUFYX1NFR01FTlRTICAgICAgIDgKKyNkZWZpbmUgR1NUX1ZQOV9TRUdfVFJFRV9QUk9CUyAgICAgKEdTVF9WUDlfTUFYX1NFR01FTlRTLTEpCisKKyNkZWZpbmUgR1NUX1ZQOV9QUkVESUNUSU9OX1BST0JTICAgMworCit0eXBlZGVmIHN0cnVjdCBfR3N0VnA5UGFyc2VyICAgICAgICAgICAgICAgR3N0VnA5UGFyc2VyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZwOUZyYW1lSGRyICAgICAgICAgICAgIEdzdFZwOUZyYW1lSGRyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZwOUxvb3BGaWx0ZXIgICAgICAgICAgIEdzdFZwOUxvb3BGaWx0ZXI7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VnA5UXVhbnRJbmRpY2VzICAgICAgICAgR3N0VnA5UXVhbnRJbmRpY2VzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZwOVNlZ21lbnRhdGlvbiAgICAgICAgIEdzdFZwOVNlZ21lbnRhdGlvbjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RWcDlTZWdtZW50YXRpb25JbmZvICAgICBHc3RWcDlTZWdtZW50YXRpb25JbmZvOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhIEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhOworCisvKioKKyAqIEdzdFZwOVBhcnNlUmVzdWx0OgorICogQEdTVF9WUDlfUEFSU0VSX09LOiBUaGUgcGFyc2luZyB3ZW50IHdlbGwKKyAqIEBHU1RfVlA5X1BBUlNFUl9CUk9LRU5fREFUQTogVGhlIGRhdGEgdG8gcGFyc2UgaXMgYnJva2VuCisgKiBAR1NUX1ZQOV9QQVJTRVJfTk9fUEFDS0VUX0VSUk9SOiBBbiBlcnJvciBvY2N1cmVkIGR1cmluZyB0aGUgcGFyc2luZworICoKKyAqIFJlc3VsdCB0eXBlIG9mIGFueSBwYXJzaW5nIGZ1bmN0aW9uLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9WUDlfUEFSU0VSX09LLAorICBHU1RfVlA5X1BBUlNFUl9CUk9LRU5fREFUQSwKKyAgR1NUX1ZQOV9QQVJTRVJfRVJST1IsCit9IEdzdFZwOVBhcnNlclJlc3VsdDsKKworLyoqCisgKiBHc3RWcDlQcm9maWxlOiBCaXRzdHJlYW0gcHJvZmlsZXMgaW5kaWNhdGVkIGJ5IDItMyBiaXRzIGluIHRoZSB1bmNvbXByZXNzZWQgaGVhZGVyCisgKiBAR1NUX1ZQOV9QUk9GSUxFXzA6IFByb2ZpbGUgMCwgOC1iaXQgNDoyOjAgb25seS4KKyAqIEBHU1RfVlA5X1BST0ZJTEVfMTogUHJvZmlsZSAxLCA4LWJpdCA0OjQ6NCwgNDoyOjIsIGFuZCA0OjQ6MC4KKyAqIEBHU1RfVlA5X1BST0ZJTEVfMjogUHJvZmlsZSAyLCAxMC1iaXQgYW5kIDEyLWJpdCBjb2xvciBvbmx5LCB3aXRoIDQ6MjowIHNhbXBsaW5nLgorICogQEdTVF9WUDlfUFJPRklMRV8zOiBQcm9maWxlIDMsIDEwLWJpdCBhbmQgMTItYml0IGNvbG9yIG9ubHksIHdpdGggNDoyOjIvNDo0OjQvNDo0OjAgc2FtcGxpbmcuCisgKiBAR1NUX1ZQOV9QUk9GSUxFX1VOREVGSU5FRDogVW5kZWZpbmVkIHByb2ZpbGUKKyAqCisgKiBWUDkgUHJvZmlsZXMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIEdTVF9WUDlfUFJPRklMRV8wLAorICBHU1RfVlA5X1BST0ZJTEVfMSwKKyAgR1NUX1ZQOV9QUk9GSUxFXzIsCisgIEdTVF9WUDlfUFJPRklMRV8zLAorICBHU1RfVlA5X1BST0ZJTEVfVU5ERUZJTkVECit9IEdzdFZQOVByb2ZpbGU7CisKKy8qKgorICogR3N0VnA5RnJhbWVUeXBlOgorICogQEdTVF9WUDlfS0VZX0ZSQU1FOiBLZXkgZnJhbWUsIG9ubHkgaGF2ZSBpbnRyYSBibG9ja3MKKyAqIEBHU1RfVlA5X0lOVEVSX0ZSQU1FOiBJbnRlciBmcmFtZSwgYm90aCBpbnRyYSBhbmQgaW50ZXIgYmxvY2tzCisgKgorICogVlA5IGZyYW1lIHR5cGVzCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIGVudW0geworICBHU1RfVlA5X0tFWV9GUkFNRSAgID0gMCwKKyAgR1NUX1ZQOV9JTlRFUl9GUkFNRSA9IDEKK30gR3N0VnA5RnJhbWVUeXBlOworCisvKioKKyAqIEdzdFZwOUJpdERlcHRoOgorICogQEdTVF9WUDlfQklUX0RFUFRIXzg6IEJpdCBkZXB0aCBpcyA4CisgKiBAR1NUX1ZQOV9CSVRfREVQVEhfMTAgQml0IGRlcHRoIGlzIDEwCisgKiBAR1NUX1ZQOV9CSVRfREVQVEhfMTI6Qml0IGRlcHRoIGlzIDEyCisgKgorICogQml0IGRlcHRocyBvZiBlbmNvZGVkIGZyYW1lcworICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiBlbnVtIHsKKyAgR1NUX1ZQOV9CSVRfREVQVEhfOCAgPSA4LAorICBHU1RfVlA5X0JJVF9ERVBUSF8xMCA9IDEwLAorICBHU1RfVlA5X0JJVF9ERVBUSF8xMiA9IDEyCit9IEdzdFZwOUJpdERlcHRoOworCisvKioKKyAqIEdzdFZwOUNvbG9yU3BhY2U6CisgKiBAR1NUX1ZQOV9DU19VTktOT1dOOiBVbmtub3duIGNvbG9yIHNwYWNlCisgKiBAR1NUX1ZQOV9DU19CVF82MDE6IEJULjYwMQorICogQEdTVF9WUDlfQ1NfQlRfNzA5OiBCVC43MDkKKyAqIEBHU1RfVlA5X0NTX1NNUFRFXzE3MDogU01QVEUuMTcwCisgKiBAR1NUX1ZQOV9DU19TTVBURV8yNDA6IFNNUFRFLjI0MAorICogQEdTVF9WUDlfQ1NfQlRfMjAyMDogQlQuMjAyMAorICogQEdTVF9WUDlfQ1NfUkVTRVJWRUQ6IFJlc2VydmVkCisgKiBAR1NUX1ZQOV9DU19TUkdCOiBzUkdCCisgKgorICogU3VwcG9ydGVkIENvbG9yU3BhY2Ugc3RhbmRhcmRzCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIGVudW0geworICBHU1RfVlA5X0NTX1VOS05PV04gICAgICAgICAgICAgICA9IDAsCisgIEdTVF9WUDlfQ1NfQlRfNjAxICAgICAgICAgICAgICAgID0gMSwKKyAgR1NUX1ZQOV9DU19CVF83MDkgICAgICAgICAgICAgICAgPSAyLAorICBHU1RfVlA5X0NTX1NNUFRFXzE3MCAgICAgICAgICAgICA9IDMsCisgIEdTVF9WUDlfQ1NfU01QVEVfMjQwICAgICAgICAgICAgID0gNCwKKyAgR1NUX1ZQOV9DU19CVF8yMDIwICAgICAgICAgICAgICAgPSA1LAorICBHU1RfVlA5X0NTX1JFU0VSVkVEXzIgICAgICAgICAgICA9IDYsCisgIEdTVF9WUDlfQ1NfU1JHQiAgICAgICAgICAgICAgICAgID0gNworfSBHc3RWcDlDb2xvclNwYWNlOworCisvKioKKyAqIEdzdFZwOUNvbG9yUmFuZ2U6CisgKiBAR1NUX1ZQOV9DUl9MSU1JVEVEOiBZIHJhbmdlIGlzIFsxNi0yMzVdLCBVViByYW5nZSBpcyBbMTYtMjQwXQorICogQEdTVF9WUDlfQ1JfRlVMTDogRnVsbCByYW5nZSBmb3IgWSxVIGFuZCBWIFswLTI1NV0KKyAqCisgKiBQb3NzaWJsZSBjb2xvciB2YWx1ZSByYW5nZXMKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZW51bSB7CisgIEdTVF9WUDlfQ1JfTElNSVRFRCwKKyAgR1NUX1ZQOV9DUl9GVUxMCit9IEdzdFZwOUNvbG9yUmFuZ2U7CisKKy8qKgorICogR3N0VnA5SW50ZXJwb2xhdGlvbkZpbHRlcjoKKyAqIEBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0VJR0hUVEFQOiBFaWdodFRhcCBpbnRlcnBvbGF0aW9uIGZpbHRlcgorICogQEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVBfU01PT1RIOiBTbW9vdGggaW50ZXJwb2xhdGlvbiBmaWx0ZXIKKyAqIEBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0VJR0hUVEFQX1NIQVJQOiBTaGFydCBpbnRlcnBvbGF0aW9uIGZpbHRlcgorICogQEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfQklMSU5FQVI6IEJpbGluZWFyIGludGVycG9sYXRpb24gZmlsdGVyCisgKiBAR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9TV0lUQ0hBQkxFOiBTZWxlY3RhYmxlIGludGVycG9sYXRpb24gZmlsdGVyCisgKgorICogSW50ZXJwb2xhdGlvbiBGaWx0ZXJzIFR5cGVzCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIGVudW0geworICBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0VJR0hUVEFQICAgICAgICA9IDAsCisgIEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfRUlHSFRUQVBfU01PT1RIID0gMSwKKyAgR1NUX1ZQOV9JTlRFUlBPTEFUSU9OX0ZJTFRFUl9FSUdIVFRBUF9TSEFSUCAgPSAyLAorICBHU1RfVlA5X0lOVEVSUE9MQVRJT05fRklMVEVSX0JJTElORUFSICAgICAgICA9IDMsCisgIEdTVF9WUDlfSU5URVJQT0xBVElPTl9GSUxURVJfU1dJVENIQUJMRSAgICAgID0gNAorfSBHc3RWcDlJbnRlcnBvbGF0aW9uRmlsdGVyOworCisvKioKKyAqIEdzdFZwOVJlZkZyYW1lVHlwZToKKyAqIEBHU1RfVlA5X1JFRl9GUkFNRV9JTlRSQTogSW50cmEgcmVmZXJlbmNlIGZyYW1lCisgKiBAR1NUX1ZQOV9SRUZfRlJBTUVfTEFTVDogTGFzdCBSZWZlcmVuY2UgZnJhbWUKKyAqIEBHU1RfVlA5X1JFRl9GUkFNRV9HT0xERU46IEdvbGRlbiBSZWZlcmVuY2UgZnJhbWUKKyAqIEBHU1RfVlA5X1JFRl9GUkFNRV9BTFRSRUY6IEFsdGVybmF0ZSBSZWZlcmVuY2UgZnJhbWUKKyAqIEBHU1RfVlA5X1JFRl9GUkFNRV9NQVg6CisgKgorICogUmVmZXJlbmNlIEZyYW1lIHR5cGVzCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIGVudW0geworICBHU1RfVlA5X1JFRl9GUkFNRV9JTlRSQSAgPSAwLAorICBHU1RfVlA5X1JFRl9GUkFNRV9MQVNUICAgPSAxLAorICBHU1RfVlA5X1JFRl9GUkFNRV9HT0xERU4gPSAyLAorICBHU1RfVlA5X1JFRl9GUkFNRV9BTFRSRUYgPSAzLAorICBHU1RfVlA5X1JFRl9GUkFNRV9NQVggICAgPSA0Cit9IEdzdFZwOVJlZkZyYW1lVHlwZTsKKworLyoqCisgKiBHc3RWcDlRdWFudEluZGljZXM6CisgKiBAeV9hY19xaTogaW5kaWNhdGVzIHRoZSBkZXF1YW50aXphdGlvbiB0YWJsZSBpbmRleCB1c2VkIGZvciB0aGUKKyAqICAgbHVtYSBBQyBjb2VmZmljaWVudHMKKyAqIEB5X2RjX2RlbHRhOiBpbmRpY2F0ZXMgdGhlIGRlbHRhIHZhbHVlIHRoYXQgaXMgYWRkZWQgdG8gdGhlCisgKiAgIGJhc2VsaW5lIGluZGV4IHRvIG9idGFpbiB0aGUgbHVtYSBEQyBjb2VmZmljaWVudCBkZXF1YW50aXphdGlvbgorICogICBpbmRleAorICogQHV2X2RjX2RlbHRhOiBpbmRpY2F0ZXMgdGhlIGRlbHRhIHZhbHVlIHRoYXQgaXMgYWRkZWQgdG8gdGhlCisgKiAgIGJhc2VsaW5lIGluZGV4IHRvIG9idGFpbiB0aGUgY2hyb21hIERDIGNvZWZmaWNpZW50IGRlcXVhbnRpemF0aW9uCisgKiAgIGluZGV4CisgKiBAdXZfYWNfZGVsdGE6IGluZGljYXRlcyB0aGUgZGVsdGEgdmFsdWUgdGhhdCBpcyBhZGRlZCB0byB0aGUKKyAqICAgYmFzZWxpbmUgaW5kZXggdG8gb2J0YWluIHRoZSBjaHJvbWEgQUMgY29lZmZpY2llbnQgZGVxdWFudGl6YXRpb24KKyAqICAgaW5kZXgKKyAqCisgKiBEZXF1YW50aXphdGlvbiBpbmRpY2VzLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RydWN0IF9Hc3RWcDlRdWFudEluZGljZXMKK3sKKyAgZ3VpbnQ4IHlfYWNfcWk7CisgIGdpbnQ4IHlfZGNfZGVsdGE7CisgIGdpbnQ4IHV2X2RjX2RlbHRhOworICBnaW50OCB1dl9hY19kZWx0YTsKK307CisKKy8qKgorICogR3N0VnA5TG9vcEZpbHRlcjoKKyAqIEBmaWx0ZXJfbGV2ZWw6IGluZGljYXRlcyBsb29wIGZpbHRlciBsZXZlbCBmb3IgdGhlIGN1cnJlbnQgZnJhbWUKKyAqIEBzaGFycG5lc3NfbGV2ZWw6IGluZGljYXRlcyBzaGFycG5lc3MgbGV2ZWwgZm9yIHRoZWN1cnJlbnQgZnJhbWUKKyAqIEBtb2RlX3JlZl9kZWx0YV9lbmFibGVkOiBpbmRpY2F0ZSBpZiBmaWx0ZXIgYWRqdXN0IGlzIG9uCisgKiBAbW9kZV9yZWZfZGVsdGFfdXBkYXRlOiBpbmRpY2F0ZXMgaWYgdGhlIGRlbHRhIHZhbHVlcyB1c2VkIGluIGFuCisgKiAgIGFkanVzdG1lbnQgYXJlIHVwZGF0ZWQgaW4gdGhlIGN1cnJlbnQgZnJhbWUKKyAqIEB1cGRhdGVfcmVmX2RlbHRhczogaW5kaWNhdGUgd2hpY2ggcmVmIGRlbHRhcyBhcmUgdXBkYXRlZAorICogQHJlZl9kZWx0YXM6ICBMb29wIGZpbHRlciBzdHJlbmd0aCBhZGp1c3RtZW50cyBiYXNlZCBvbgorICogIGZyYW1lIHR5cGUgKGludHJhLCBpbnRlcikKKyAqIEB1cGRhdGVfbW9kZV9kZWx0YXM6IGluZGljYXRlIHdpdGggbW9kZSBkZWx0YXMgYXJlIHVwZGF0ZWQKKyAqIEBtb2RlX2RlbHRhczogTG9vcCBmaWx0ZXIgc3RyZW5ndGggYWRqdXN0bWVudHMgYmFzZWQgb24KKyAqICAgbW9kZSAoemVybywgbmV3IG12KQorICoKKyAqIExvb3AgZmlsdGVyIHZhbHVlcworICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RydWN0IF9Hc3RWcDlMb29wRmlsdGVyIHsKKyAgZ2ludCBmaWx0ZXJfbGV2ZWw7CisgIGdpbnQgc2hhcnBuZXNzX2xldmVsOworCisgIGd1aW50OCBtb2RlX3JlZl9kZWx0YV9lbmFibGVkOworICBndWludDggbW9kZV9yZWZfZGVsdGFfdXBkYXRlOworICBndWludDggdXBkYXRlX3JlZl9kZWx0YXNbR1NUX1ZQOV9NQVhfUkVGX0xGX0RFTFRBU107CisgIGdpbnQ4IHJlZl9kZWx0YXNbR1NUX1ZQOV9NQVhfUkVGX0xGX0RFTFRBU107CisgIGd1aW50OCB1cGRhdGVfbW9kZV9kZWx0YXNbR1NUX1ZQOV9NQVhfTU9ERV9MRl9ERUxUQVNdOworICBnaW50OCBtb2RlX2RlbHRhc1tHU1RfVlA5X01BWF9NT0RFX0xGX0RFTFRBU107Cit9OworCisvKioKKyAqIEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhOgorICogQGFsdGVybmF0ZV9xdWFudGl6ZXJfZW5hYmxlZDogaW5kaWNhdGUgYWx0ZXJuYXRlIHF1YW50aXplciBlbmFibGVkIGF0IHNlZ21lbnQgbGV2ZWwKKyAqIEBhbHRlcm5hdGVfcXVhbnRpemVyOiBhbHRlcm5hdGUgcXVhbnRpemVyIHZhbHVlCisgKiBAYWx0ZXJuYXRlX2xvb3BfZmlsdGVyX2VuYWJsZWQ6IGluZGljYXRlIGFsdGVybmF0ZSBsb29wIGZpbHRlciBlbmFibGVkIGF0IHNlZ21lbnQgbGV2ZWwKKyAqIEBhbHRlcm5hdGVfbG9vcF9maWx0ZXI6IGFsdGVybmF0ZSBsb29wIGZpbHRlcgorICogQHJlZmVyZW5jZV9mcmFtZV9lbmFibGVkOiBpbmRpY2F0ZSBhbHRlcm5hdGUgcmVmZXJlbmNlIGZyYW1lIGF0IHNlZ21lbnQgbGV2ZWwKKyAqIEByZWZlcmVuY2VfZnJhbWU6IGFsdGVybmF0ZSByZWZlcmVuY2UgZnJhbWUKKyAqIEByZWZlcmVuY2Vfc2tpcDogYSBibG9jayBza2lwIG1vZGUgdGhhdCBpbXBsaWVzIGJvdGggdGhlIHVzZSBvZiBhICgwLDApCisgKiAgIG1vdGlvbiB2ZWN0b3IgYW5kIHRoYXQgbm8gcmVzaWR1YWwgd2lsbCBiZSBjb2RlZC4KKyAqCisgKiBTZWdtZW50YXRpb24gaW5mbyBmb3IgZWFjaCBzZWdtZW50CisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhIHsKKyAgLyogU0VHX0xWTF9BTFRfUSAqLworICBndWludDggYWx0ZXJuYXRlX3F1YW50aXplcl9lbmFibGVkOworICBnaW50MTYgYWx0ZXJuYXRlX3F1YW50aXplcjsKKworICAvKiBTRUdfTFZMX0FMVF9MRiAqLworICBndWludDggYWx0ZXJuYXRlX2xvb3BfZmlsdGVyX2VuYWJsZWQ7CisgIGdpbnQ4IGFsdGVybmF0ZV9sb29wX2ZpbHRlcjsKKworICAvKiBTRUdfTFZMX1JFRl9GUkFNRSAqLworICBndWludDggcmVmZXJlbmNlX2ZyYW1lX2VuYWJsZWQ7CisgIGdpbnQgcmVmZXJlbmNlX2ZyYW1lOworCisgIGd1aW50OCByZWZlcmVuY2Vfc2tpcDsKK307CisKKy8qKgorICogR3N0VnA5U2VnbWVudGF0aW9uSW5mbzoKKyAqIEBlbmFibGVkOiBlbmFibGVzIHRoZSBzZWdtZW50YXRpb24gZmVhdHVyZSBmb3IgdGhlIGN1cnJlbnQgZnJhbWUKKyAqIEB1cGRhdGVfbWFwOiBkZXRlcm1pbmVzIGlmIHNlZ21lbnRhdGlvbiBpcyB1cGRhdGVkIGluIHRoZSBjdXJyZW50IGZyYW1lCisgKiBAdXBkYXRlX3RyZWVfcHJvYnM6IGRldGVybWluZXMgaWYgdHJlZSBwcm9iYWJpbGl0aWVzIHVwZGF0ZWQgb3Igbm90CisgKiBAdHJlZV9wcm9iczogc2VnbWVudCB0cmVlIHByb2JhYmlsaXRpZXMKKyAqIEB1cGRhdGVfcHJlZF9wcm9iczpkZXRlcm1pbmVzIGlmIHByZWRpY3Rpb24gcHJvYmFiaWxpdGllcyB1cGRhdGVkIG9yIG5vdAorICogQHByZWRfcHJvYnM6IHByZWRpY3Rpb24gcHJvYmFiaWxpdGllcworICogQGFic19kZWx0YTogaW50ZXJwcmV0YXRpb24gb2Ygc2VnbWVudCBkYXRhIHZhbHVlcworICogQHRlbXBvcmFsX3VwZGF0ZTogdHlwZSBvZiBtYXAgdXBkYXRlCisgKiBAdXBkYXRlX2RhdGE6IGluZGljYXRlcyBpZiB0aGUgc2VnbWVudCBmZWF0dXJlIGRhdGEKKyAqICAgaXMgdXBkYXRlZCBpbiB0aGUgY3VycmVudCBmcmFtZQorICogQGRhdGE6IHNlZ21lbnQgZmVhdHVyZSBkYXRhCisgKgorICogU2VnbWVudGF0aW9uIGluZm8KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3N0cnVjdCBfR3N0VnA5U2VnbWVudGF0aW9uSW5mbyB7CisgIC8qIGVuYWJsZSBpbiBzZXR1cF9zZWdtZW50YXRpb24qLworICBndWludDggIGVuYWJsZWQ7CisgIC8qIHVwZGF0ZV9tYXAgaW4gc2V0dXBfc2VnbWVudGF0aW9uKi8KKyAgZ3VpbnQ4IHVwZGF0ZV9tYXA7CisgIC8qIHRyZWVfcHJvYnMgZXhpc3Qgb3Igbm90Ki8KKyAgZ3VpbnQ4IHVwZGF0ZV90cmVlX3Byb2JzW0dTVF9WUDlfU0VHX1RSRUVfUFJPQlNdOworICBndWludDggdHJlZV9wcm9ic1tHU1RfVlA5X1NFR19UUkVFX1BST0JTXTsKKyAgLyogcHJlZF9wcm9icyBleGlzdCBvciBub3QqLworICBndWludDggdXBkYXRlX3ByZWRfcHJvYnNbR1NUX1ZQOV9QUkVESUNUSU9OX1BST0JTXTsKKyAgZ3VpbnQ4IHByZWRfcHJvYnNbR1NUX1ZQOV9QUkVESUNUSU9OX1BST0JTXTsKKworICAvKiBhYnNfZGVsdGEgaW4gc2V0dXBfc2VnbWVudGF0aW9uICovCisgIGd1aW50OCBhYnNfZGVsdGE7CisgIC8qIHRlbXBvcmFsX3VwZGF0ZSBpbiBzZXR1cF9zZWdtZW50YXRpb24gKi8KKyAgZ3VpbnQ4IHRlbXBvcmFsX3VwZGF0ZTsKKworICAvKiB1cGRhdGVfZGF0YSBpbiBzZXR1cF9zZWdtZW50YXRpb24qLworICBndWludDggdXBkYXRlX2RhdGE7CisgIEdzdFZwOVNlZ21lbnRhdGlvbkluZm9EYXRhIGRhdGFbR1NUX1ZQOV9NQVhfU0VHTUVOVFNdOworfTsKKworLyoqCisgKiBHc3RWcDlGcmFtZUhkcjoKKyAqIEBwcm9maWxlOiBlbmNvZGVkIHByb2ZpbGUKKyAqIEBzaG93X2V4aXN0aW5nX2ZyYW1lOiBkaXNwbGF5IGFscmVhZHkgZGVjb2RlZCBmcmFtZSBpbnN0ZWFkIG9mIGRvaW5nIHRoZSBkZWNvZGluZworICogQGZyYW1lX3RvX3Nob3c6IHdoaWNoIGZyYW1lIHRvIHNob3cgaWYgc2hvd19leGlzdGluZ19mcmFtZSBpcyB0cnVlCisgKiBAZnJhbWVfdHlwZTogZnJhbWUgdHlwZQorICogQHNob3dfZnJhbWU6IGluZGljYXRlIHdoZXRoZXIgaXQgaXMgYSBkaXNwbGF5YWJsZSBmcmFtZSBvciBub3QKKyAqIEBlcnJvcl9yZXNpbGllbnRfbW9kZTogZXJyb3IgcmVzaWxlbnQgbW9kZQorICogQHN1YnNhbXBsaW5nX3g6IGhvcml6b250YWwgc3Vic2FtcGxpbmcKKyAqIEBzdWJzYW1wbGluZ195OiB2ZXJ0aWNhbCBzdWJzYW1wbGluZworICogQHdpZHRoOiBmcmFtZSB3aWR0aAorICogQGhlaWdodDogZnJhbWUgaGVpZ2h0CisgKiBAZGlzcGxheV9zaXplX2VuYWJsZWQ6IGRpc3BsYXkgc2l6ZSBlbmFibGVkIChjcm9wcGluZykKKyAqIEBkaXNwbGF5X3dpZHRoOiBkaXNwbGF5IHdpZHRoCisgKiBAZGlzcGxheV9oZWlnaHQ6IGRpc3BsYXkgaGVpZ2h0CisgKiBAZnJhbWVfY29udGV4dF9pZHg6IGZyYW1lIGNvbnRleHQgaW5kZXgKKyAqIEBiaXRfZGVwdGg6IGJpdCBkZXB0aCBvZiB0aGUgc3RyZWFtCisgKiBAY29sb3Jfc3BhY2U6IGNvbG9yIHNwYWNlIHN0YW5kYXJkCisgKiBAY29sb3JfcmFuZ2U6IGNvbG9yIHJhbmdlIHN0YW5kYXJkCisgKiBAaW50cmFfb25seTogaW50cmEgb25seSBmcmFtZQorICogQHJlc2V0X2ZyYW1lX2NvbnRleHQ6IHJlc2V0IGZyYW1lIGNvbnRleHQKKyAqIEByZWZyZXNoX2ZyYW1lX2ZsYWdzOiByZWZyZXNoIHJlZmVyZW5jZSBmcmFtZSBmbGFncworICogQHJlZl9mcmFtZV9pbmRpY2VzOiByZWZlcmVuY2UgZnJhbWUgaW5kZXgKKyAqIEByZWZfZnJhbWVfc2lnbl9iaWFzOiBzaWduIGJpYXMgZm9yIHNlbGVjdGluZyBhbHRyZWYsbGFzdCBhbmQgZ29sZGVuIGZyYW1lcworICogQGFsbG93X2hpZ2hfcHJlY2lzaW9uX212OiBhbGxvdyBoaWdodCBwcmVjaXNpb24gbW90aW9uIHZlY3RvcgorICogQG1jb21wX2ZpbHRlcl90eXBlOiBpbnRlcnBvbGF0aW9uIGZpbHRlciB0eXBlCisgKiBAcmVmcmVzaF9mcmFtZV9jb250ZXh0OiByZWZyZXNoIGZyYW1lIGNvbnRleHQgaW5kaWNhdG9yCisgKiBAZnJhbWVfcGFyYWxsZWxfZGVjb2RpbmdfbW9kZTogZW5hYmxlIG9yIGRpc2FibGUgcGFyYWxsZWwgZGVjb2Rpbmcgc3VwcG9ydC4KKyAqIEBsb29wZmlsdGVyOiBsb29wZmlsdGVyIHZhbHVlcworICogQHF1YW50X2luZGljZXM6IHF1YW50aXphdGlvbiBpbmRlY2VzCisgKiBAc2VnbWVudGF0aW9uOiBzZWdtZW50YXRpb24gaW5mbworICogQGxvZzJfdGlsZV9yb3dzOiB0aWxlIHJvdyBpbmRpY2F0b3IKKyAqIEBsb2cyX3RpbGVfY29sdW1uczogIHRpbGUgY29sdW1uIGluZGljYXRvcgorICogQGZpcnN0X3BhcnRpdGlvbl9zaXplOiBmaXJzdCBwYXJ0aXRpb24gc2l6ZSAoYWZ0ZXIgdGhlIHVuY29tcHJlc3NlZCBoZWFkZXIpCisgKiBAbG9zc2xlc3NfZmxhZzogbG9zc2xlc3MgbW9kZSBkZWNvZGUKKyAqIEBmcmFtZV9oZWFkZXJfbGVuZ3RoX2luX2J5dGVzOiBsZW5ndGggb2YgdW5jb21wcmVzc2VkIGhlYWRlcgorICoKKyAqIEZyYW1lIGhlYWRlcgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RydWN0IF9Hc3RWcDlGcmFtZUhkcgoreworICBndWludCBwcm9maWxlOworICBndWludDggc2hvd19leGlzdGluZ19mcmFtZTsKKyAgZ2ludCAgZnJhbWVfdG9fc2hvdzsKKyAgZ3VpbnQgZnJhbWVfdHlwZTsKKyAgZ3VpbnQ4IHNob3dfZnJhbWU7CisgIGd1aW50OCBlcnJvcl9yZXNpbGllbnRfbW9kZTsKKyAgZ2ludCBzdWJzYW1wbGluZ194OworICBnaW50IHN1YnNhbXBsaW5nX3k7CisgIGd1aW50MzIgd2lkdGg7CisgIGd1aW50MzIgaGVpZ2h0OworICBndWludDggZGlzcGxheV9zaXplX2VuYWJsZWQ7CisgIGd1aW50MzIgZGlzcGxheV93aWR0aDsKKyAgZ3VpbnQzMiBkaXNwbGF5X2hlaWdodDsKKyAgZ3VpbnQgZnJhbWVfY29udGV4dF9pZHg7CisKKyAgZ3VpbnQgYml0X2RlcHRoOworICBndWludCBjb2xvcl9zcGFjZTsKKyAgZ3VpbnQgY29sb3JfcmFuZ2U7CisKKyAgZ3VpbnQ4IGludHJhX29ubHk7CisgIGdpbnQgcmVzZXRfZnJhbWVfY29udGV4dDsKKyAgZ2ludCByZWZyZXNoX2ZyYW1lX2ZsYWdzOworCisgIGdpbnQgcmVmX2ZyYW1lX2luZGljZXNbR1NUX1ZQOV9SRUZTX1BFUl9GUkFNRV07CisgIGdpbnQgcmVmX2ZyYW1lX3NpZ25fYmlhc1tHU1RfVlA5X1JFRlNfUEVSX0ZSQU1FXTsKKyAgZ2ludCBhbGxvd19oaWdoX3ByZWNpc2lvbl9tdjsKKyAgZ3VpbnQ4IG1jb21wX2ZpbHRlcl90eXBlOworCisgIGdpbnQgcmVmcmVzaF9mcmFtZV9jb250ZXh0OworICAvKiBmcmFtZV9wYXJhbGxlbF9kZWNvZGluZ19tb2RlIGluIHZwOSBjb2RlKi8KKyAgZ2ludCBmcmFtZV9wYXJhbGxlbF9kZWNvZGluZ19tb2RlOworCisgIEdzdFZwOUxvb3BGaWx0ZXIgbG9vcGZpbHRlcjsKKyAgR3N0VnA5UXVhbnRJbmRpY2VzIHF1YW50X2luZGljZXM7CisgIEdzdFZwOVNlZ21lbnRhdGlvbkluZm8gc2VnbWVudGF0aW9uOworCisgIGdpbnQgbG9nMl90aWxlX3Jvd3M7CisgIGdpbnQgbG9nMl90aWxlX2NvbHVtbnM7CisKKyAgZ3VpbnQzMiBmaXJzdF9wYXJ0aXRpb25fc2l6ZTsKKworICAvKiBjYWxjdWxhdGVkIHZhbHVlcyAqLworICBndWludCBsb3NzbGVzc19mbGFnOworICBndWludDMyIGZyYW1lX2hlYWRlcl9sZW5ndGhfaW5fYnl0ZXM7Cit9OworCisvKioKKyAqIEdzdFZwOVNlZ21lbnRhdGlvbjoKKyAqIEBmaWx0ZXJfbGV2ZWw6IGxvb3AgZmlsdGVyIGxldmVsCisgKiBAbHVtYV9hY19xdWFudF9zY2FsZTogQUMgcXVhbnQgc2NhbGUgZm9yIGx1bWEoWSkgY29tcG9uZW50CisgKiBAbHVtYV9kY19xdWFudF9zY2FsZTogREMgcXVhbnQgc2NhbGUgZm9yIGx1bWEoWSkgY29tcG9uZW50CisgKiBAY2hyb21hX2FjX3F1YW50X3NjYWxlIEFDIHF1YW50IHNjYWxlIGZvciBjaHJvbWEoVS9WKSBjb21wb25lbnQKKyAqIEBjaHJvbWFfZGNfcXVhbnRfc2NhbGU6IERDIHF1YW50IHNjYWxlIGZvciBjaHJvbWEgKFUvVikgY29tcG9uZW50CisgKiBAcmVmZXJlbmNlX2ZyYW1lX2VuYWJsZWQ6IGFsdGVybmF0ZSByZWZlcmVuY2UgZnJhbWUgZW5hYmxlbWVudAorICogQHJlZmVyZW5jZV9mcmFtZTogYWx0ZXJuYXRlIHJlZmVyZW5jZSBmcmFtZQorICogQHJlZmVyZW5jZV9za2lwOiAgYSBibG9jayBza2lwIG1vZGUgdGhhdCBpbXBsaWVzIGJvdGggdGhlIHVzZSBvZiBhICgwLDApCisgKiAgIG1vdGlvbiB2ZWN0b3IgYW5kIHRoYXQgbm8gcmVzaWR1YWwgd2lsbCBiZSBjb2RlZAorICoKKyAqIFNlZ21lbnRhdGlvbiBpbmZvIGtlcHQgYWNyb3NzIG11bHRpcGUgZnJhbWVzCisgKgorICogU2luY2U6IDEuOAorICovCitzdHJ1Y3QgX0dzdFZwOVNlZ21lbnRhdGlvbgoreworICBndWludDggZmlsdGVyX2xldmVsWzRdWzJdOworICBnaW50MTYgbHVtYV9hY19xdWFudF9zY2FsZTsKKyAgZ2ludDE2IGx1bWFfZGNfcXVhbnRfc2NhbGU7CisgIGdpbnQxNiBjaHJvbWFfYWNfcXVhbnRfc2NhbGU7CisgIGdpbnQxNiBjaHJvbWFfZGNfcXVhbnRfc2NhbGU7CisKKyAgZ3VpbnQ4IHJlZmVyZW5jZV9mcmFtZV9lbmFibGVkOworICBnaW50IHJlZmVyZW5jZV9mcmFtZTsKKworICBndWludDggcmVmZXJlbmNlX3NraXA7Cit9OworCisvKioKKyAqIEdzdFZwOVBhcnNlcjoKKyAqIEBwcml2OiBHc3RWcDlQYXJzZXJQcml2YXRlIHN0cnVjdCB0byBrZWVwIHRyYWNrIG9mIHN0YXRlIHZhcmlhYmxlcworICogQG1iX3NlZ21lbnRfdHJlZV9wcm9iczogZGVjb2RpbmcgdHJlZSBwcm9iYWJpbGl0aWVzCisgKiBAc2VnbWVudF9wcmVkX3Byb2JzOiBzZWdtZW50IHByZWRpY3Rpb24gcHJvYmFiaWlsdGllcworICogQHNlZ21lbnRhdGlvbjogU2VnbWVudGF0aW9uIGluZm8KKyAqCisgKiBQYXJzZXIgY29udGV4dCB0aGF0IG5lZWRzIHRvIGJlIGxpdmUgYWNyb3NzIGZyYW1lcworICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RydWN0IF9Hc3RWcDlQYXJzZXIKK3sKKyAgLyogcHJpdmF0ZSBzdHVjdCBmb3IgdHJhY2tpbmcgc3RhdGUgdmFyaWFibGVzIGFjcm9zcyBmcmFtZXMgKi8KKyAgdm9pZCAqcHJpdjsKKworICBndWludDggbWJfc2VnbWVudF90cmVlX3Byb2JzW0dTVF9WUDlfU0VHX1RSRUVfUFJPQlNdOworICBndWludDggc2VnbWVudF9wcmVkX3Byb2JzW0dTVF9WUDlfUFJFRElDVElPTl9QUk9CU107CisgIEdzdFZwOVNlZ21lbnRhdGlvbiBzZWdtZW50YXRpb25bR1NUX1ZQOV9NQVhfU0VHTUVOVFNdOworfTsKKworR3N0VnA5UGFyc2VyICogICAgIGdzdF92cDlfcGFyc2VyX25ldyAodm9pZCk7CisKK0dzdFZwOVBhcnNlclJlc3VsdCBnc3RfdnA5X3BhcnNlcl9wYXJzZV9mcmFtZV9oZWFkZXIgKEdzdFZwOVBhcnNlciogcGFyc2VyLCBHc3RWcDlGcmFtZUhkciAqIGZyYW1lX2hkciwgY29uc3QgZ3VpbnQ4ICogZGF0YSwgZ3NpemUgc2l6ZSk7CisKK3ZvaWQgICAgICAgICAgICAgICBnc3RfdnA5X3BhcnNlcl9mcmVlIChHc3RWcDlQYXJzZXIgKiBwYXJzZXIpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogR1NUX1ZQOV9QQVJTRVJfSCAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9uYWx1dGlscy5oIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9uYWx1dGlscy5oCmluZGV4IDExY2JlN2EuLjdlMjNhYjEgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbmFsdXRpbHMuaAorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL25hbHV0aWxzLmgKQEAgLTUzLDE5ICs1MywzNSBAQAogICBndWludDY0IGNhY2hlOyAgICAgICAgICAgICAgICAvKiBjYWNoZWQgYnl0ZXMgKi8KIH0gTmFsUmVhZGVyOwogCitHX0dOVUNfSU5URVJOQUwKIHZvaWQgbmFsX3JlYWRlcl9pbml0IChOYWxSZWFkZXIgKiBuciwgY29uc3QgZ3VpbnQ4ICogZGF0YSwgZ3VpbnQgc2l6ZSk7CiAKK0dfR05VQ19JTlRFUk5BTAogZ2Jvb2xlYW4gbmFsX3JlYWRlcl9yZWFkIChOYWxSZWFkZXIgKiBuciwgZ3VpbnQgbmJpdHMpOworCitHX0dOVUNfSU5URVJOQUwKIGdib29sZWFuIG5hbF9yZWFkZXJfc2tpcCAoTmFsUmVhZGVyICogbnIsIGd1aW50IG5iaXRzKTsKKworR19HTlVDX0lOVEVSTkFMCiBnYm9vbGVhbiBuYWxfcmVhZGVyX3NraXBfbG9uZyAoTmFsUmVhZGVyICogbnIsIGd1aW50IG5iaXRzKTsKKworR19HTlVDX0lOVEVSTkFMCiBndWludCBuYWxfcmVhZGVyX2dldF9wb3MgKGNvbnN0IE5hbFJlYWRlciAqIG5yKTsKKworR19HTlVDX0lOVEVSTkFMCiBndWludCBuYWxfcmVhZGVyX2dldF9yZW1haW5pbmcgKGNvbnN0IE5hbFJlYWRlciAqIG5yKTsKKworR19HTlVDX0lOVEVSTkFMCiBndWludCBuYWxfcmVhZGVyX2dldF9lcGJfY291bnQgKGNvbnN0IE5hbFJlYWRlciAqIG5yKTsKIAorR19HTlVDX0lOVEVSTkFMCiBnYm9vbGVhbiBuYWxfcmVhZGVyX2lzX2J5dGVfYWxpZ25lZCAoTmFsUmVhZGVyICogbnIpOworCitHX0dOVUNfSU5URVJOQUwKIGdib29sZWFuIG5hbF9yZWFkZXJfaGFzX21vcmVfZGF0YSAoTmFsUmVhZGVyICogbnIpOwogCiAjZGVmaW5lIE5BTF9SRUFERVJfUkVBRF9CSVRTX0goYml0cykgXAorR19HTlVDX0lOVEVSTkFMIFwKIGdib29sZWFuIG5hbF9yZWFkZXJfZ2V0X2JpdHNfdWludCMjYml0cyAoTmFsUmVhZGVyICpuciwgZ3VpbnQjI2JpdHMgKnZhbCwgZ3VpbnQgbmJpdHMpCiAKIE5BTF9SRUFERVJfUkVBRF9CSVRTX0ggKDgpOwpAQCAtNzMsMTEgKzg5LDE1IEBACiBOQUxfUkVBREVSX1JFQURfQklUU19IICgzMik7CiAKICNkZWZpbmUgTkFMX1JFQURFUl9QRUVLX0JJVFNfSChiaXRzKSBcCitHX0dOVUNfSU5URVJOQUwgXAogZ2Jvb2xlYW4gbmFsX3JlYWRlcl9wZWVrX2JpdHNfdWludCMjYml0cyAoY29uc3QgTmFsUmVhZGVyICpuciwgZ3VpbnQjI2JpdHMgKnZhbCwgZ3VpbnQgbmJpdHMpCiAKIE5BTF9SRUFERVJfUEVFS19CSVRTX0ggKDgpOwogCitHX0dOVUNfSU5URVJOQUwKIGdib29sZWFuIG5hbF9yZWFkZXJfZ2V0X3VlIChOYWxSZWFkZXIgKiBuciwgZ3VpbnQzMiAqIHZhbCk7CisKK0dfR05VQ19JTlRFUk5BTAogZ2Jvb2xlYW4gbmFsX3JlYWRlcl9nZXRfc2UgKE5hbFJlYWRlciAqIG5yLCBnaW50MzIgKiB2YWwpOwogCiAjZGVmaW5lIENIRUNLX0FMTE9XRURfTUFYKHZhbCwgbWF4KSB7IFwKQEAgLTE1OSw0ICsxNzksNSBAQAogICB2YWwgPSB0bXA7IFwKIH0KIAorR19HTlVDX0lOVEVSTkFMCiBnaW50IHNjYW5fZm9yX3N0YXJ0X2NvZGVzIChjb25zdCBndWludDggKiBkYXRhLCBndWludCBzaXplKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvcGFyc2VydXRpbHMuaCBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvcGFyc2VydXRpbHMuaAppbmRleCA2YjU0ZGVkLi5lMWJmMThmIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3BhcnNlcnV0aWxzLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9wYXJzZXJ1dGlscy5oCkBAIC0xMDEsNyArMTAxLDcgQEAKICAgZ3VpbnQgY2JpdHM7CiB9OwogCi1nYm9vbGVhbgorR19HTlVDX0lOVEVSTkFMIGdib29sZWFuCiBkZWNvZGVfdmxjIChHc3RCaXRSZWFkZXIgKiBiciwgZ3VpbnQgKiByZXMsIGNvbnN0IFZMQ1RhYmxlICogdGFibGUsCiAgICAgZ3VpbnQgbGVuZ3RoKTsKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDh1dGlscy5oIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDh1dGlscy5oCmluZGV4IGM4ZmM5NmIuLjU3MTVhNWIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA4dXRpbHMuaAorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOHV0aWxzLmgKQEAgLTI1LDE5ICsyNSwxOSBAQAogCiAjaW5jbHVkZSA8Z3N0L2NvZGVjcGFyc2Vycy9nc3R2cDhwYXJzZXIuaD4KIAotdm9pZAorR19HTlVDX0lOVEVSTkFMIHZvaWQKIGdzdF92cDhfdG9rZW5fdXBkYXRlX3Byb2JzX2luaXQgKEdzdFZwOFRva2VuUHJvYnMgKiBwcm9icyk7CiAKLXZvaWQKK0dfR05VQ19JTlRFUk5BTCB2b2lkCiBnc3RfdnA4X3Rva2VuX3Byb2JzX2luaXRfZGVmYXVsdHMgKEdzdFZwOFRva2VuUHJvYnMgKiBwcm9icyk7CiAKLXZvaWQKK0dfR05VQ19JTlRFUk5BTCB2b2lkCiBnc3RfdnA4X212X3VwZGF0ZV9wcm9ic19pbml0IChHc3RWcDhNdlByb2JzICogcHJvYnMpOwogCi12b2lkCitHX0dOVUNfSU5URVJOQUwgdm9pZAogZ3N0X3ZwOF9tdl9wcm9ic19pbml0X2RlZmF1bHRzIChHc3RWcDhNdlByb2JzICogcHJvYnMpOwogCi12b2lkCitHX0dOVUNfSU5URVJOQUwgdm9pZAogZ3N0X3ZwOF9tb2RlX3Byb2JzX2luaXRfZGVmYXVsdHMgKEdzdFZwOE1vZGVQcm9icyAqIHByb2JzLCBnYm9vbGVhbiBrZXlfZnJhbWUpOwogCiAjZW5kaWYgLyogR1NUX1ZQOF9VVElMU19IICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOXV0aWxzLmMgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOXV0aWxzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA5ZmEyNAotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvdnA5dXRpbHMuYwpAQCAtMCwwICsxLDI5MCBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIFdlYk0gcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgbm9yIHRoZSBXZWJNIFByb2plY3QsIG5vciB0aGUgbmFtZXMKKyAqICAgICBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICogICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbgorICogICAgIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJ2cDl1dGlscy5oIgorCitzdGF0aWMgY29uc3QgaW50MTZfdCBkY19xbG9va3VwW1FJTkRFWF9SQU5HRV0gPSB7CisgIDQsIDgsIDgsIDksIDEwLCAxMSwgMTIsIDEyLAorICAxMywgMTQsIDE1LCAxNiwgMTcsIDE4LCAxOSwgMTksCisgIDIwLCAyMSwgMjIsIDIzLCAyNCwgMjUsIDI2LCAyNiwKKyAgMjcsIDI4LCAyOSwgMzAsIDMxLCAzMiwgMzIsIDMzLAorICAzNCwgMzUsIDM2LCAzNywgMzgsIDM4LCAzOSwgNDAsCisgIDQxLCA0MiwgNDMsIDQzLCA0NCwgNDUsIDQ2LCA0NywKKyAgNDgsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDUzLAorICA1NCwgNTUsIDU2LCA1NywgNTcsIDU4LCA1OSwgNjAsCisgIDYxLCA2MiwgNjIsIDYzLCA2NCwgNjUsIDY2LCA2NiwKKyAgNjcsIDY4LCA2OSwgNzAsIDcwLCA3MSwgNzIsIDczLAorICA3NCwgNzQsIDc1LCA3NiwgNzcsIDc4LCA3OCwgNzksCisgIDgwLCA4MSwgODEsIDgyLCA4MywgODQsIDg1LCA4NSwKKyAgODcsIDg4LCA5MCwgOTIsIDkzLCA5NSwgOTYsIDk4LAorICA5OSwgMTAxLCAxMDIsIDEwNCwgMTA1LCAxMDcsIDEwOCwgMTEwLAorICAxMTEsIDExMywgMTE0LCAxMTYsIDExNywgMTE4LCAxMjAsIDEyMSwKKyAgMTIzLCAxMjUsIDEyNywgMTI5LCAxMzEsIDEzNCwgMTM2LCAxMzgsCisgIDE0MCwgMTQyLCAxNDQsIDE0NiwgMTQ4LCAxNTAsIDE1MiwgMTU0LAorICAxNTYsIDE1OCwgMTYxLCAxNjQsIDE2NiwgMTY5LCAxNzIsIDE3NCwKKyAgMTc3LCAxODAsIDE4MiwgMTg1LCAxODcsIDE5MCwgMTkyLCAxOTUsCisgIDE5OSwgMjAyLCAyMDUsIDIwOCwgMjExLCAyMTQsIDIxNywgMjIwLAorICAyMjMsIDIyNiwgMjMwLCAyMzMsIDIzNywgMjQwLCAyNDMsIDI0NywKKyAgMjUwLCAyNTMsIDI1NywgMjYxLCAyNjUsIDI2OSwgMjcyLCAyNzYsCisgIDI4MCwgMjg0LCAyODgsIDI5MiwgMjk2LCAzMDAsIDMwNCwgMzA5LAorICAzMTMsIDMxNywgMzIyLCAzMjYsIDMzMCwgMzM1LCAzNDAsIDM0NCwKKyAgMzQ5LCAzNTQsIDM1OSwgMzY0LCAzNjksIDM3NCwgMzc5LCAzODQsCisgIDM4OSwgMzk1LCA0MDAsIDQwNiwgNDExLCA0MTcsIDQyMywgNDI5LAorICA0MzUsIDQ0MSwgNDQ3LCA0NTQsIDQ2MSwgNDY3LCA0NzUsIDQ4MiwKKyAgNDg5LCA0OTcsIDUwNSwgNTEzLCA1MjIsIDUzMCwgNTM5LCA1NDksCisgIDU1OSwgNTY5LCA1NzksIDU5MCwgNjAyLCA2MTQsIDYyNiwgNjQwLAorICA2NTQsIDY2OCwgNjg0LCA3MDAsIDcxNywgNzM2LCA3NTUsIDc3NSwKKyAgNzk2LCA4MTksIDg0MywgODY5LCA4OTYsIDkyNSwgOTU1LCA5ODgsCisgIDEwMjIsIDEwNTgsIDEwOTgsIDExMzksIDExODQsIDEyMzIsIDEyODIsIDEzMzYsCit9OworCitzdGF0aWMgY29uc3QgaW50MTZfdCBkY19xbG9va3VwXzEwW1FJTkRFWF9SQU5HRV0gPSB7CisgIDQsIDksIDEwLCAxMywgMTUsIDE3LCAyMCwgMjIsCisgIDI1LCAyOCwgMzEsIDM0LCAzNywgNDAsIDQzLCA0NywKKyAgNTAsIDUzLCA1NywgNjAsIDY0LCA2OCwgNzEsIDc1LAorICA3OCwgODIsIDg2LCA5MCwgOTMsIDk3LCAxMDEsIDEwNSwKKyAgMTA5LCAxMTMsIDExNiwgMTIwLCAxMjQsIDEyOCwgMTMyLCAxMzYsCisgIDE0MCwgMTQzLCAxNDcsIDE1MSwgMTU1LCAxNTksIDE2MywgMTY2LAorICAxNzAsIDE3NCwgMTc4LCAxODIsIDE4NSwgMTg5LCAxOTMsIDE5NywKKyAgMjAwLCAyMDQsIDIwOCwgMjEyLCAyMTUsIDIxOSwgMjIzLCAyMjYsCisgIDIzMCwgMjMzLCAyMzcsIDI0MSwgMjQ0LCAyNDgsIDI1MSwgMjU1LAorICAyNTksIDI2MiwgMjY2LCAyNjksIDI3MywgMjc2LCAyODAsIDI4MywKKyAgMjg3LCAyOTAsIDI5MywgMjk3LCAzMDAsIDMwNCwgMzA3LCAzMTAsCisgIDMxNCwgMzE3LCAzMjEsIDMyNCwgMzI3LCAzMzEsIDMzNCwgMzM3LAorICAzNDMsIDM1MCwgMzU2LCAzNjIsIDM2OSwgMzc1LCAzODEsIDM4NywKKyAgMzk0LCA0MDAsIDQwNiwgNDEyLCA0MTgsIDQyNCwgNDMwLCA0MzYsCisgIDQ0MiwgNDQ4LCA0NTQsIDQ2MCwgNDY2LCA0NzIsIDQ3OCwgNDg0LAorICA0OTAsIDQ5OSwgNTA3LCA1MTYsIDUyNSwgNTMzLCA1NDIsIDU1MCwKKyAgNTU5LCA1NjcsIDU3NiwgNTg0LCA1OTIsIDYwMSwgNjA5LCA2MTcsCisgIDYyNSwgNjM0LCA2NDQsIDY1NSwgNjY2LCA2NzYsIDY4NywgNjk4LAorICA3MDgsIDcxOCwgNzI5LCA3MzksIDc0OSwgNzU5LCA3NzAsIDc4MiwKKyAgNzk1LCA4MDcsIDgxOSwgODMxLCA4NDQsIDg1NiwgODY4LCA4ODAsCisgIDg5MSwgOTA2LCA5MjAsIDkzMywgOTQ3LCA5NjEsIDk3NSwgOTg4LAorICAxMDAxLCAxMDE1LCAxMDMwLCAxMDQ1LCAxMDYxLCAxMDc2LCAxMDkwLCAxMTA1LAorICAxMTIwLCAxMTM3LCAxMTUzLCAxMTcwLCAxMTg2LCAxMjAyLCAxMjE4LCAxMjM2LAorICAxMjUzLCAxMjcxLCAxMjg4LCAxMzA2LCAxMzIzLCAxMzQyLCAxMzYxLCAxMzc5LAorICAxMzk4LCAxNDE2LCAxNDM2LCAxNDU2LCAxNDc2LCAxNDk2LCAxNTE2LCAxNTM3LAorICAxNTU5LCAxNTgwLCAxNjAxLCAxNjI0LCAxNjQ3LCAxNjcwLCAxNjkyLCAxNzE3LAorICAxNzQxLCAxNzY2LCAxNzkxLCAxODE3LCAxODQ0LCAxODcxLCAxOTAwLCAxOTI5LAorICAxOTU4LCAxOTkwLCAyMDIxLCAyMDU0LCAyMDg4LCAyMTIzLCAyMTU5LCAyMTk3LAorICAyMjM2LCAyMjc2LCAyMzE5LCAyMzYzLCAyNDEwLCAyNDU4LCAyNTA4LCAyNTYxLAorICAyNjE2LCAyNjc1LCAyNzM3LCAyODAyLCAyODcxLCAyOTQ0LCAzMDIwLCAzMTAyLAorICAzMTg4LCAzMjgwLCAzMzc1LCAzNDc4LCAzNTg2LCAzNzAyLCAzODIzLCAzOTUzLAorICA0MDg5LCA0MjM2LCA0Mzk0LCA0NTU5LCA0NzM3LCA0OTI5LCA1MTMwLCA1MzQ3LAorfTsKKworc3RhdGljIGNvbnN0IGludDE2X3QgZGNfcWxvb2t1cF8xMltRSU5ERVhfUkFOR0VdID0geworICA0LCAxMiwgMTgsIDI1LCAzMywgNDEsIDUwLCA2MCwKKyAgNzAsIDgwLCA5MSwgMTAzLCAxMTUsIDEyNywgMTQwLCAxNTMsCisgIDE2NiwgMTgwLCAxOTQsIDIwOCwgMjIyLCAyMzcsIDI1MSwgMjY2LAorICAyODEsIDI5NiwgMzEyLCAzMjcsIDM0MywgMzU4LCAzNzQsIDM5MCwKKyAgNDA1LCA0MjEsIDQzNywgNDUzLCA0NjksIDQ4NCwgNTAwLCA1MTYsCisgIDUzMiwgNTQ4LCA1NjQsIDU4MCwgNTk2LCA2MTEsIDYyNywgNjQzLAorICA2NTksIDY3NCwgNjkwLCA3MDYsIDcyMSwgNzM3LCA3NTIsIDc2OCwKKyAgNzgzLCA3OTgsIDgxNCwgODI5LCA4NDQsIDg1OSwgODc0LCA4ODksCisgIDkwNCwgOTE5LCA5MzQsIDk0OSwgOTY0LCA5NzgsIDk5MywgMTAwOCwKKyAgMTAyMiwgMTAzNywgMTA1MSwgMTA2NSwgMTA4MCwgMTA5NCwgMTEwOCwgMTEyMiwKKyAgMTEzNiwgMTE1MSwgMTE2NSwgMTE3OSwgMTE5MiwgMTIwNiwgMTIyMCwgMTIzNCwKKyAgMTI0OCwgMTI2MSwgMTI3NSwgMTI4OCwgMTMwMiwgMTMxNSwgMTMyOSwgMTM0MiwKKyAgMTM2OCwgMTM5MywgMTQxOSwgMTQ0NCwgMTQ2OSwgMTQ5NCwgMTUxOSwgMTU0NCwKKyAgMTU2OSwgMTU5NCwgMTYxOCwgMTY0MywgMTY2OCwgMTY5MiwgMTcxNywgMTc0MSwKKyAgMTc2NSwgMTc4OSwgMTgxNCwgMTgzOCwgMTg2MiwgMTg4NSwgMTkwOSwgMTkzMywKKyAgMTk1NywgMTk5MiwgMjAyNywgMjA2MSwgMjA5NiwgMjEzMCwgMjE2NSwgMjE5OSwKKyAgMjIzMywgMjI2NywgMjMwMCwgMjMzNCwgMjM2NywgMjQwMCwgMjQzNCwgMjQ2NywKKyAgMjQ5OSwgMjUzMiwgMjU3NSwgMjYxOCwgMjY2MSwgMjcwNCwgMjc0NiwgMjc4OCwKKyAgMjgzMCwgMjg3MiwgMjkxMywgMjk1NCwgMjk5NSwgMzAzNiwgMzA3NiwgMzEyNywKKyAgMzE3NywgMzIyNiwgMzI3NSwgMzMyNCwgMzM3MywgMzQyMSwgMzQ2OSwgMzUxNywKKyAgMzU2NSwgMzYyMSwgMzY3NywgMzczMywgMzc4OCwgMzg0MywgMzg5NywgMzk1MSwKKyAgNDAwNSwgNDA1OCwgNDExOSwgNDE4MSwgNDI0MSwgNDMwMSwgNDM2MSwgNDQyMCwKKyAgNDQ3OSwgNDU0NiwgNDYxMiwgNDY3NywgNDc0MiwgNDgwNywgNDg3MSwgNDk0MiwKKyAgNTAxMywgNTA4MywgNTE1MywgNTIyMiwgNTI5MSwgNTM2NywgNTQ0MiwgNTUxNywKKyAgNTU5MSwgNTY2NSwgNTc0NSwgNTgyNSwgNTkwNSwgNTk4NCwgNjA2MywgNjE0OSwKKyAgNjIzNCwgNjMxOSwgNjQwNCwgNjQ5NSwgNjU4NywgNjY3OCwgNjc2OSwgNjg2NywKKyAgNjk2NiwgNzA2NCwgNzE2MywgNzI2OSwgNzM3NiwgNzQ4MywgNzU5OSwgNzcxNSwKKyAgNzgzMiwgNzk1OCwgODA4NSwgODIxNCwgODM1MiwgODQ5MiwgODYzNSwgODc4OCwKKyAgODk0NSwgOTEwNCwgOTI3NSwgOTQ1MCwgOTYzOSwgOTgzMiwgMTAwMzEsIDEwMjQ1LAorICAxMDQ2NSwgMTA3MDIsIDEwOTQ2LCAxMTIxMCwgMTE0ODIsIDExNzc2LCAxMjA4MSwgMTI0MDksCisgIDEyNzUwLCAxMzExOCwgMTM1MDEsIDEzOTEzLCAxNDM0MywgMTQ4MDcsIDE1MjkwLCAxNTgxMiwKKyAgMTYzNTYsIDE2OTQzLCAxNzU3NSwgMTgyMzcsIDE4OTQ5LCAxOTcxOCwgMjA1MjEsIDIxMzg3LAorfTsKKworc3RhdGljIGNvbnN0IGludDE2X3QgYWNfcWxvb2t1cFtRSU5ERVhfUkFOR0VdID0geworICA0LCA4LCA5LCAxMCwgMTEsIDEyLCAxMywgMTQsCisgIDE1LCAxNiwgMTcsIDE4LCAxOSwgMjAsIDIxLCAyMiwKKyAgMjMsIDI0LCAyNSwgMjYsIDI3LCAyOCwgMjksIDMwLAorICAzMSwgMzIsIDMzLCAzNCwgMzUsIDM2LCAzNywgMzgsCisgIDM5LCA0MCwgNDEsIDQyLCA0MywgNDQsIDQ1LCA0NiwKKyAgNDcsIDQ4LCA0OSwgNTAsIDUxLCA1MiwgNTMsIDU0LAorICA1NSwgNTYsIDU3LCA1OCwgNTksIDYwLCA2MSwgNjIsCisgIDYzLCA2NCwgNjUsIDY2LCA2NywgNjgsIDY5LCA3MCwKKyAgNzEsIDcyLCA3MywgNzQsIDc1LCA3NiwgNzcsIDc4LAorICA3OSwgODAsIDgxLCA4MiwgODMsIDg0LCA4NSwgODYsCisgIDg3LCA4OCwgODksIDkwLCA5MSwgOTIsIDkzLCA5NCwKKyAgOTUsIDk2LCA5NywgOTgsIDk5LCAxMDAsIDEwMSwgMTAyLAorICAxMDQsIDEwNiwgMTA4LCAxMTAsIDExMiwgMTE0LCAxMTYsIDExOCwKKyAgMTIwLCAxMjIsIDEyNCwgMTI2LCAxMjgsIDEzMCwgMTMyLCAxMzQsCisgIDEzNiwgMTM4LCAxNDAsIDE0MiwgMTQ0LCAxNDYsIDE0OCwgMTUwLAorICAxNTIsIDE1NSwgMTU4LCAxNjEsIDE2NCwgMTY3LCAxNzAsIDE3MywKKyAgMTc2LCAxNzksIDE4MiwgMTg1LCAxODgsIDE5MSwgMTk0LCAxOTcsCisgIDIwMCwgMjAzLCAyMDcsIDIxMSwgMjE1LCAyMTksIDIyMywgMjI3LAorICAyMzEsIDIzNSwgMjM5LCAyNDMsIDI0NywgMjUxLCAyNTUsIDI2MCwKKyAgMjY1LCAyNzAsIDI3NSwgMjgwLCAyODUsIDI5MCwgMjk1LCAzMDAsCisgIDMwNSwgMzExLCAzMTcsIDMyMywgMzI5LCAzMzUsIDM0MSwgMzQ3LAorICAzNTMsIDM1OSwgMzY2LCAzNzMsIDM4MCwgMzg3LCAzOTQsIDQwMSwKKyAgNDA4LCA0MTYsIDQyNCwgNDMyLCA0NDAsIDQ0OCwgNDU2LCA0NjUsCisgIDQ3NCwgNDgzLCA0OTIsIDUwMSwgNTEwLCA1MjAsIDUzMCwgNTQwLAorICA1NTAsIDU2MCwgNTcxLCA1ODIsIDU5MywgNjA0LCA2MTUsIDYyNywKKyAgNjM5LCA2NTEsIDY2MywgNjc2LCA2ODksIDcwMiwgNzE1LCA3MjksCisgIDc0MywgNzU3LCA3NzEsIDc4NiwgODAxLCA4MTYsIDgzMiwgODQ4LAorICA4NjQsIDg4MSwgODk4LCA5MTUsIDkzMywgOTUxLCA5NjksIDk4OCwKKyAgMTAwNywgMTAyNiwgMTA0NiwgMTA2NiwgMTA4NywgMTEwOCwgMTEyOSwgMTE1MSwKKyAgMTE3MywgMTE5NiwgMTIxOSwgMTI0MywgMTI2NywgMTI5MiwgMTMxNywgMTM0MywKKyAgMTM2OSwgMTM5NiwgMTQyMywgMTQ1MSwgMTQ3OSwgMTUwOCwgMTUzNywgMTU2NywKKyAgMTU5NywgMTYyOCwgMTY2MCwgMTY5MiwgMTcyNSwgMTc1OSwgMTc5MywgMTgyOCwKK307CisKK3N0YXRpYyBjb25zdCBpbnQxNl90IGFjX3Fsb29rdXBfMTBbUUlOREVYX1JBTkdFXSA9IHsKKyAgNCwgOSwgMTEsIDEzLCAxNiwgMTgsIDIxLCAyNCwKKyAgMjcsIDMwLCAzMywgMzcsIDQwLCA0NCwgNDgsIDUxLAorICA1NSwgNTksIDYzLCA2NywgNzEsIDc1LCA3OSwgODMsCisgIDg4LCA5MiwgOTYsIDEwMCwgMTA1LCAxMDksIDExNCwgMTE4LAorICAxMjIsIDEyNywgMTMxLCAxMzYsIDE0MCwgMTQ1LCAxNDksIDE1NCwKKyAgMTU4LCAxNjMsIDE2OCwgMTcyLCAxNzcsIDE4MSwgMTg2LCAxOTAsCisgIDE5NSwgMTk5LCAyMDQsIDIwOCwgMjEzLCAyMTcsIDIyMiwgMjI2LAorICAyMzEsIDIzNSwgMjQwLCAyNDQsIDI0OSwgMjUzLCAyNTgsIDI2MiwKKyAgMjY3LCAyNzEsIDI3NSwgMjgwLCAyODQsIDI4OSwgMjkzLCAyOTcsCisgIDMwMiwgMzA2LCAzMTEsIDMxNSwgMzE5LCAzMjQsIDMyOCwgMzMyLAorICAzMzcsIDM0MSwgMzQ1LCAzNDksIDM1NCwgMzU4LCAzNjIsIDM2NywKKyAgMzcxLCAzNzUsIDM3OSwgMzg0LCAzODgsIDM5MiwgMzk2LCA0MDEsCisgIDQwOSwgNDE3LCA0MjUsIDQzMywgNDQxLCA0NDksIDQ1OCwgNDY2LAorICA0NzQsIDQ4MiwgNDkwLCA0OTgsIDUwNiwgNTE0LCA1MjMsIDUzMSwKKyAgNTM5LCA1NDcsIDU1NSwgNTYzLCA1NzEsIDU3OSwgNTg4LCA1OTYsCisgIDYwNCwgNjE2LCA2MjgsIDY0MCwgNjUyLCA2NjQsIDY3NiwgNjg4LAorICA3MDAsIDcxMywgNzI1LCA3MzcsIDc0OSwgNzYxLCA3NzMsIDc4NSwKKyAgNzk3LCA4MDksIDgyNSwgODQxLCA4NTcsIDg3MywgODg5LCA5MDUsCisgIDkyMiwgOTM4LCA5NTQsIDk3MCwgOTg2LCAxMDAyLCAxMDE4LCAxMDM4LAorICAxMDU4LCAxMDc4LCAxMDk4LCAxMTE4LCAxMTM4LCAxMTU4LCAxMTc4LCAxMTk4LAorICAxMjE4LCAxMjQyLCAxMjY2LCAxMjkwLCAxMzE0LCAxMzM4LCAxMzYyLCAxMzg2LAorICAxNDExLCAxNDM1LCAxNDYzLCAxNDkxLCAxNTE5LCAxNTQ3LCAxNTc1LCAxNjAzLAorICAxNjMxLCAxNjYzLCAxNjk1LCAxNzI3LCAxNzU5LCAxNzkxLCAxODIzLCAxODU5LAorICAxODk1LCAxOTMxLCAxOTY3LCAyMDAzLCAyMDM5LCAyMDc5LCAyMTE5LCAyMTU5LAorICAyMTk5LCAyMjM5LCAyMjgzLCAyMzI3LCAyMzcxLCAyNDE1LCAyNDU5LCAyNTA3LAorICAyNTU1LCAyNjAzLCAyNjUxLCAyNzAzLCAyNzU1LCAyODA3LCAyODU5LCAyOTE1LAorICAyOTcxLCAzMDI3LCAzMDgzLCAzMTQzLCAzMjAzLCAzMjYzLCAzMzI3LCAzMzkxLAorICAzNDU1LCAzNTIzLCAzNTkxLCAzNjU5LCAzNzMxLCAzODAzLCAzODc2LCAzOTUyLAorICA0MDI4LCA0MTA0LCA0MTg0LCA0MjY0LCA0MzQ4LCA0NDMyLCA0NTE2LCA0NjA0LAorICA0NjkyLCA0Nzg0LCA0ODc2LCA0OTcyLCA1MDY4LCA1MTY4LCA1MjY4LCA1MzcyLAorICA1NDc2LCA1NTg0LCA1NjkyLCA1ODA0LCA1OTE2LCA2MDMyLCA2MTQ4LCA2MjY4LAorICA2Mzg4LCA2NTEyLCA2NjQwLCA2NzY4LCA2OTAwLCA3MDM2LCA3MTcyLCA3MzEyLAorfTsKKworc3RhdGljIGNvbnN0IGludDE2X3QgYWNfcWxvb2t1cF8xMltRSU5ERVhfUkFOR0VdID0geworICA0LCAxMywgMTksIDI3LCAzNSwgNDQsIDU0LCA2NCwKKyAgNzUsIDg3LCA5OSwgMTEyLCAxMjYsIDEzOSwgMTU0LCAxNjgsCisgIDE4MywgMTk5LCAyMTQsIDIzMCwgMjQ3LCAyNjMsIDI4MCwgMjk3LAorICAzMTQsIDMzMSwgMzQ5LCAzNjYsIDM4NCwgNDAyLCA0MjAsIDQzOCwKKyAgNDU2LCA0NzUsIDQ5MywgNTExLCA1MzAsIDU0OCwgNTY3LCA1ODYsCisgIDYwNCwgNjIzLCA2NDIsIDY2MCwgNjc5LCA2OTgsIDcxNiwgNzM1LAorICA3NTMsIDc3MiwgNzkxLCA4MDksIDgyOCwgODQ2LCA4NjUsIDg4NCwKKyAgOTAyLCA5MjAsIDkzOSwgOTU3LCA5NzYsIDk5NCwgMTAxMiwgMTAzMCwKKyAgMTA0OSwgMTA2NywgMTA4NSwgMTEwMywgMTEyMSwgMTEzOSwgMTE1NywgMTE3NSwKKyAgMTE5MywgMTIxMSwgMTIyOSwgMTI0NiwgMTI2NCwgMTI4MiwgMTI5OSwgMTMxNywKKyAgMTMzNSwgMTM1MiwgMTM3MCwgMTM4NywgMTQwNSwgMTQyMiwgMTQ0MCwgMTQ1NywKKyAgMTQ3NCwgMTQ5MSwgMTUwOSwgMTUyNiwgMTU0MywgMTU2MCwgMTU3NywgMTU5NSwKKyAgMTYyNywgMTY2MCwgMTY5MywgMTcyNSwgMTc1OCwgMTc5MSwgMTgyNCwgMTg1NiwKKyAgMTg4OSwgMTkyMiwgMTk1NCwgMTk4NywgMjAyMCwgMjA1MiwgMjA4NSwgMjExOCwKKyAgMjE1MCwgMjE4MywgMjIxNiwgMjI0OCwgMjI4MSwgMjMxMywgMjM0NiwgMjM3OCwKKyAgMjQxMSwgMjQ1OSwgMjUwOCwgMjU1NiwgMjYwNSwgMjY1MywgMjcwMSwgMjc1MCwKKyAgMjc5OCwgMjg0NywgMjg5NSwgMjk0MywgMjk5MiwgMzA0MCwgMzA4OCwgMzEzNywKKyAgMzE4NSwgMzIzNCwgMzI5OCwgMzM2MiwgMzQyNiwgMzQ5MSwgMzU1NSwgMzYxOSwKKyAgMzY4NCwgMzc0OCwgMzgxMiwgMzg3NiwgMzk0MSwgNDAwNSwgNDA2OSwgNDE0OSwKKyAgNDIzMCwgNDMxMCwgNDM5MCwgNDQ3MCwgNDU1MCwgNDYzMSwgNDcxMSwgNDc5MSwKKyAgNDg3MSwgNDk2NywgNTA2NCwgNTE2MCwgNTI1NiwgNTM1MiwgNTQ0OCwgNTU0NCwKKyAgNTY0MSwgNTczNywgNTg0OSwgNTk2MSwgNjA3MywgNjE4NSwgNjI5NywgNjQxMCwKKyAgNjUyMiwgNjY1MCwgNjc3OCwgNjkwNiwgNzAzNCwgNzE2MiwgNzI5MCwgNzQzNSwKKyAgNzU3OSwgNzcyMywgNzg2NywgODAxMSwgODE1NSwgODMxNSwgODQ3NSwgODYzNSwKKyAgODc5NSwgODk1NiwgOTEzMiwgOTMwOCwgOTQ4NCwgOTY2MCwgOTgzNiwgMTAwMjgsCisgIDEwMjIwLCAxMDQxMiwgMTA2MDQsIDEwODEyLCAxMTAyMCwgMTEyMjgsIDExNDM3LCAxMTY2MSwKKyAgMTE4ODUsIDEyMTA5LCAxMjMzMywgMTI1NzMsIDEyODEzLCAxMzA1MywgMTMzMDksIDEzNTY1LAorICAxMzgyMSwgMTQwOTMsIDE0MzY1LCAxNDYzNywgMTQ5MjUsIDE1MjEzLCAxNTUwMiwgMTU4MDYsCisgIDE2MTEwLCAxNjQxNCwgMTY3MzQsIDE3MDU0LCAxNzM5MCwgMTc3MjYsIDE4MDYyLCAxODQxNCwKKyAgMTg3NjYsIDE5MTM0LCAxOTUwMiwgMTk4ODYsIDIwMjcwLCAyMDY3MCwgMjEwNzAsIDIxNDg2LAorICAyMTkwMiwgMjIzMzQsIDIyNzY2LCAyMzIxNCwgMjM2NjIsIDI0MTI2LCAyNDU5MCwgMjUwNzAsCisgIDI1NTUxLCAyNjA0NywgMjY1NTksIDI3MDcxLCAyNzU5OSwgMjgxNDMsIDI4Njg3LCAyOTI0NywKK307CisKK3N0YXRpYyBpbnQKK2NsYW1wIChpbnQgdmFsdWUsIGludCBsb3csIGludCBoaWdoKQoreworICByZXR1cm4gdmFsdWUgPCBsb3cgPyBsb3cgOiAodmFsdWUgPiBoaWdoID8gaGlnaCA6IHZhbHVlKTsKK30KKworaW50MTZfdAorZ3N0X3ZwOV9kY19xdWFudCAoaW50IHFpbmRleCwgaW50IGRlbHRhLCBpbnQgYml0X2RlcHRoKQoreworICBjb25zdCB1aW50OF90IHFfdGFibGVfaWR4ID0gY2xhbXAgKHFpbmRleCArIGRlbHRhLCAwLCBNQVhRKTsKKworICBzd2l0Y2ggKGJpdF9kZXB0aCkgeworICAgIGNhc2UgODoKKyAgICAgIHJldHVybiBkY19xbG9va3VwW3FfdGFibGVfaWR4XTsKKyAgICBjYXNlIDEwOgorICAgICAgcmV0dXJuIGRjX3Fsb29rdXBfMTBbcV90YWJsZV9pZHhdOworICAgIGNhc2UgMTI6CisgICAgICByZXR1cm4gZGNfcWxvb2t1cF8xMltxX3RhYmxlX2lkeF07CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAtMTsKKyAgfQorICByZXR1cm4gLTE7Cit9CisKK2ludDE2X3QKK2dzdF92cDlfYWNfcXVhbnQgKGludCBxaW5kZXgsIGludCBkZWx0YSwgaW50IGJpdF9kZXB0aCkKK3sKKyAgY29uc3QgdWludDhfdCBxX3RhYmxlX2lkeCA9IGNsYW1wIChxaW5kZXggKyBkZWx0YSwgMCwgTUFYUSk7CisKKyAgc3dpdGNoIChiaXRfZGVwdGgpIHsKKyAgICBjYXNlIDg6CisgICAgICByZXR1cm4gYWNfcWxvb2t1cFtxX3RhYmxlX2lkeF07CisgICAgY2FzZSAxMDoKKyAgICAgIHJldHVybiBhY19xbG9va3VwXzEwW3FfdGFibGVfaWR4XTsKKyAgICBjYXNlIDEyOgorICAgICAgcmV0dXJuIGFjX3Fsb29rdXBfMTJbcV90YWJsZV9pZHhdOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gLTE7CisgIH0KKyAgcmV0dXJuIC0xOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDl1dGlscy5oIGIvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy92cDl1dGlscy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmODI0MGIKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL3ZwOXV0aWxzLmgKQEAgLTAsMCArMSw1MSBAQAorLyoKKyAqICBDb3B5cmlnaHQgKGMpIDIwMTAgVGhlIFdlYk0gcHJvamVjdCBhdXRob3JzLiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZQorICogbWV0OgorICoKKyAqICAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqCisgKiAgICogUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4KKyAqICAgICB0aGUgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlCisgKiAgICAgZGlzdHJpYnV0aW9uLgorICoKKyAqICAgKiBOZWl0aGVyIHRoZSBuYW1lIG9mIEdvb2dsZSwgbm9yIHRoZSBXZWJNIFByb2plY3QsIG5vciB0aGUgbmFtZXMKKyAqICAgICBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cworICogICAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbgorICogICAgIHBlcm1pc3Npb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUworICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUgorICogQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQKKyAqIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuICoKKyAqLworCisjaWZuZGVmIF9fVlA5X1FVQU5UX0hfXworI2RlZmluZSBfX1ZQOV9RVUFOVF9IX18KKworI2luY2x1ZGUgPHN0ZGludC5oPgorI2luY2x1ZGUgPGdsaWIuaD4KKworI2RlZmluZSBNQVhRIDI1NQorI2RlZmluZSBRSU5ERVhfUkFOR0UgMjU2CisjZGVmaW5lIFFJTkRFWF9CSVRTIDgKKworR19HTlVDX0lOVEVSTkFMCitpbnQxNl90IGdzdF92cDlfZGNfcXVhbnQoaW50IHFpbmRleCwgaW50IGRlbHRhLCBpbnQgYml0X2RlcHRoKTsKKworR19HTlVDX0lOVEVSTkFMCitpbnQxNl90IGdzdF92cDlfYWNfcXVhbnQoaW50IHFpbmRleCwgaW50IGRlbHRhLCBpbnQgYml0X2RlcHRoKTsKKworCisjZW5kaWYgLy9fX1ZQOV9RVUFOVF9IX18KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5hbQppbmRleCBmOTY4MzU3Li5mMWNiOWUxIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCkBAIC00LDI0ICs0LDI2IEBACiBTVUJESVJTID0gZ2xwcm90b3R5cGVzCiBESVNUX1NVQkRJUlMgPSBnbHByb3RvdHlwZXMgYW5kcm9pZCB4MTEgd2luMzIgY29jb2Egd2F5bGFuZCBkaXNwbWFueCBlZ2wgZWFnbAogCi1ub2luc3RfSEVBREVSUyA9Ci0KIGJ1aWx0X3N5c19oZWFkZXJfY29uZmlndXJlID0gZ3N0Z2xjb25maWcuaAogCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTID0gXAogCWdzdGdsZGlzcGxheS5jIFwKIAlnc3RnbGNvbnRleHQuYyBcCi0JZ3N0Z2xiYXNlYnVmZmVyLmMgXAorCWdzdGdsZGVidWcuYyBcCisJZ3N0Z2xiYXNlbWVtb3J5LmMgXAorCWdzdGdsYnVmZmVyLmMgXAogCWdzdGdsbWVtb3J5LmMgXAorCWdzdGdsbWVtb3J5cGJvLmMgXAogCWdzdGdsYnVmZmVycG9vbC5jIFwKIAlnc3RnbGZpbHRlci5jIFwKKwlnc3RnbGZvcm1hdC5jIFwKIAlnc3RnbGJhc2VmaWx0ZXIuYyBcCiAJZ3N0Z2xzaGFkZXIuYyBcCi0JZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYyBcCisJZ3N0Z2xzaGFkZXJzdHJpbmdzLmMgXAorCWdzdGdsc2wuYyBcCisJZ3N0Z2xzbHN0YWdlLmMgXAogCWdzdGdsY29sb3Jjb252ZXJ0LmMgXAotCWdzdGdsZG93bmxvYWQuYyBcCiAJZ3N0Z2x1cGxvYWQuYyBcCi0JZ3N0Z2x1cGxvYWRtZXRhLmMgXAogCWdzdGdsd2luZG93LmMgXAogCWdzdGdsYXBpLmMgXAogCWdzdGdsZmVhdHVyZS5jIFwKQEAgLTMwLDIzICszMiwyOCBAQAogCWdzdGdsc3luY21ldGEuYyBcCiAJZ3N0Z2x2aWV3Y29udmVydC5jIFwKIAlnc3RnbG92ZXJsYXljb21wb3NpdG9yLmMgXAotCXV0aWxzL29wZW5nbF92ZXJzaW9ucy5oCisJZ3N0Z2xxdWVyeS5jIFwKKwlnc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuYwogCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIgPSAkKGluY2x1ZGVkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9nc3QvZ2wKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTID0gXAogCWdzdGdsd2luZG93LmggXAogCWdzdGdsZGlzcGxheS5oIFwKIAlnc3RnbGNvbnRleHQuaCBcCi0JZ3N0Z2xiYXNlYnVmZmVyLmggXAorCWdzdGdsZGVidWcuaCBcCisJZ3N0Z2xiYXNlbWVtb3J5LmggXAorCWdzdGdsYnVmZmVyLmggXAogCWdzdGdsbWVtb3J5LmggXAorCWdzdGdsbWVtb3J5cGJvLmggXAogCWdzdGdsYnVmZmVycG9vbC5oIFwKIAlnc3RnbGZpbHRlci5oIFwKKwlnc3RnbGZvcm1hdC5oIFwKIAlnc3RnbGJhc2VmaWx0ZXIuaCBcCi0JZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaCBcCiAJZ3N0Z2xzaGFkZXIuaCBcCisJZ3N0Z2xzaGFkZXJzdHJpbmdzLmggXAorCWdzdGdsc2wuaCBcCisJZ3N0Z2xzbHN0YWdlLmggXAogCWdzdGdsY29sb3Jjb252ZXJ0LmggXAotCWdzdGdsZG93bmxvYWQuaCBcCi0JZ3N0Z2x1cGxvYWRtZXRhLmggXAogCWdzdGdsdXBsb2FkLmggXAogCWdzdGdsYXBpLmggXAogCWdzdGdsZmVhdHVyZS5oIFwKQEAgLTU1LDkgKzYyLDE4IEBACiAJZ3N0Z2xzeW5jbWV0YS5oIFwKIAlnc3RnbHZpZXdjb252ZXJ0LmggXAogCWdzdGdsb3ZlcmxheWNvbXBvc2l0b3IuaCBcCisJZ3N0Z2xxdWVyeS5oIFwKKwlnc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuaCBcCiAJZ3N0Z2xfZndkLmggXAorCWdzdGdsX2VudW1zLmggXAogCWdsLmgKIAorbm9pbnN0X0hFQURFUlMgPSBcCisJZ3N0Z2xzbF9wcml2YXRlLmggXAorCXV0aWxzL29wZW5nbF92ZXJzaW9ucy5oIFwKKwl1dGlscy9nbGVzX3ZlcnNpb25zLmgKKworCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MSUJBREQgPSBcCiAJJChHTU9EVUxFX05PX0VYUE9SVF9MSUJTKSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKQEAgLTEwNCw2ICsxMjAsNyBAQAogaWYgVVNFX0VHTAogU1VCRElSUyArPSBlZ2wKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCArPSBlZ2wvbGliZ3N0Z2wtZWdsLmxhCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MSUJBREQgKz0gLWxnc3RhbGxvY2F0b3JzLSQoR1NUX0FQSV9WRVJTSU9OKQogZW5kaWYKIAogY29uZmlnZXhlY2luY2x1ZGVkaXIgPSAkKGxpYmRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2luY2x1ZGUvZ3N0L2dsCkBAIC0xMzcsNyArMTU0LDggQEAKIAkJR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9IiIgR1NUX1BMVUdJTl9QQVRIXzFfMD0iIiBHU1RfUkVHSVNUUllfVVBEQVRFPW5vIFwKIAkJJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIC12IC0tbmFtZXNwYWNlIEdzdEdMIFwKIAkJLS1uc3ZlcnNpb249QEdTVF9BUElfVkVSU0lPTkAgXAotCQktLXN0cmlwLXByZWZpeD1Hc3QgXAorCQktLWlkZW50aWZpZXItcHJlZml4PUdzdCBcCisJCS0tc3ltYm9sLXByZWZpeD1nc3QgXAogCQktLXdhcm4tYWxsIFwKIAkJLS1jLWluY2x1ZGUgImdzdC9nbC9nbC5oIiBcCiAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0xNTQsNyArMTcyLDcgQEAKIAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogCQktLXBrZyBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAogCQktLXBrZy1leHBvcnQgZ3N0cmVhbWVyLWdsLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkJLS1hZGQtaW5pdC1zZWN0aW9uPSJnc3RfaW5pdChOVUxMLE5VTEwpOyIgXAorCQktLWFkZC1pbml0LXNlY3Rpb249IiQoSU5UUk9TUEVDVElPTl9JTklUKSIgXAogCQktREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKIAkJLS1vdXRwdXQgJEAgXAogCQkkKGdpcl9oZWFkZXJzKSBcCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuaW4KaW5kZXggNzVkZjUxOC4uNDJlNzk1ZiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9nbC9NYWtlZmlsZS5pbgpAQCAtMTA2LDcgKzEwNiw4IEBACiBASEFWRV9XSU5ET1dfRUFHTF9UUlVFQGFtX19hcHBlbmRfMTMgPSBlYWdsCiBASEFWRV9XSU5ET1dfRUFHTF9UUlVFQGFtX19hcHBlbmRfMTQgPSBlYWdsL2xpYmdzdGdsLWVhZ2wubGEKIEBVU0VfRUdMX1RSVUVAYW1fX2FwcGVuZF8xNSA9IGVnbAotQFVTRV9FR0xfVFJVRUBhbV9fYXBwZW5kXzE2ID0gZWdsL2xpYmdzdGdsLWVnbC5sYQorQFVTRV9FR0xfVFJVRUBhbV9fYXBwZW5kXzE2ID0gZWdsL2xpYmdzdGdsLWVnbC5sYSBcCitAVVNFX0VHTF9UUlVFQAktbGdzdGFsbG9jYXRvcnMtJChHU1RfQVBJX1ZFUlNJT04pCiBzdWJkaXIgPSBnc3QtbGlicy9nc3QvZ2wKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXApAQCAtMTMzLDE2ICsxMzQsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCkBAIC0xODUsMjYgKzE4NSwzMSBAQAogCSIkKERFU1RESVIpJChjb25maWdleGVjaW5jbHVkZWRpcikiCiBMVExJQlJBUklFUyA9ICQobGliX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KK0BVU0VfRUdMX1RSVUVAYW1fX0RFUEVOREVOQ0lFU18yID0gZWdsL2xpYmdzdGdsLWVnbC5sYQogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX2FwcGVuZF8yKSBcCiAJJChhbV9fYXBwZW5kXzQpICQoYW1fX2FwcGVuZF82KSAkKGFtX19hcHBlbmRfOCkgXAogCSQoYW1fX2FwcGVuZF8xMCkgJChhbV9fYXBwZW5kXzEyKSAkKGFtX19hcHBlbmRfMTQpIFwKLQkkKGFtX19hcHBlbmRfMTYpCisJJChhbV9fREVQRU5ERU5DSUVTXzIpCiBhbV9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTID0gIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRpc3BsYXkubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udGV4dC5sbyBcCi0JbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRlYnVnLmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VtZW1vcnkubG8gXAorCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVyLmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeS5sbyBcCisJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnlwYm8ubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVycG9vbC5sbyBcCiAJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmaWx0ZXIubG8gXAorCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZm9ybWF0LmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VmaWx0ZXIubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyLmxvIFwKLQlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnZhcmlhYmxlcy5sbyBcCisJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJzdHJpbmdzLmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLmxvIFwKKwlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsc3RhZ2UubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29sb3Jjb252ZXJ0LmxvIFwKLQlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZC5sbyBcCi0JbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWRtZXRhLmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHdpbmRvdy5sbyBcCiAJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xhcGkubG8gXAogCWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZmVhdHVyZS5sbyBcCkBAIC0yMTIsNyArMjE3LDkgQEAKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZyYW1lYnVmZmVyLmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHN5bmNtZXRhLmxvIFwKIAlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHZpZXdjb252ZXJ0LmxvIFwKLQlsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG92ZXJsYXljb21wb3NpdG9yLmxvCisJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5sbyBcCisJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xxdWVyeS5sbyBcCisJbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmxvCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9PQkpFQ1RTID0gIFwKIAkkKGFtX2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCkBAIC0zNjQsNiArMzcxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC00MDEsNiArNDEwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC00MDksNyArNDIwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtNDI4LDggKzQzOCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC00NDYsMTYgKzQ1NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00ODEsNiArNDkzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNTA2LDYgKzUyMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTYwNyw2ICs2MjMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNjIwLDggKzYzNyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTYzNyw2ICs2NTIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjk0LDE2ICs3MTEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC03NTUsNiArNzc0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTc2NSw2ICs3ODUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03NzQsNiArNzk1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTgxMSw3ICs4MzQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTg1NiwyMiArODc4LDI1IEBACiAJJChhbV9fYXBwZW5kXzcpICQoYW1fX2FwcGVuZF85KSAkKGFtX19hcHBlbmRfMTEpIFwKIAkkKGFtX19hcHBlbmRfMTMpICQoYW1fX2FwcGVuZF8xNSkKIERJU1RfU1VCRElSUyA9IGdscHJvdG90eXBlcyBhbmRyb2lkIHgxMSB3aW4zMiBjb2NvYSB3YXlsYW5kIGRpc3BtYW54IGVnbCBlYWdsCi1ub2luc3RfSEVBREVSUyA9IAogYnVpbHRfc3lzX2hlYWRlcl9jb25maWd1cmUgPSBnc3RnbGNvbmZpZy5oCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTID0gXAogCWdzdGdsZGlzcGxheS5jIFwKIAlnc3RnbGNvbnRleHQuYyBcCi0JZ3N0Z2xiYXNlYnVmZmVyLmMgXAorCWdzdGdsZGVidWcuYyBcCisJZ3N0Z2xiYXNlbWVtb3J5LmMgXAorCWdzdGdsYnVmZmVyLmMgXAogCWdzdGdsbWVtb3J5LmMgXAorCWdzdGdsbWVtb3J5cGJvLmMgXAogCWdzdGdsYnVmZmVycG9vbC5jIFwKIAlnc3RnbGZpbHRlci5jIFwKKwlnc3RnbGZvcm1hdC5jIFwKIAlnc3RnbGJhc2VmaWx0ZXIuYyBcCiAJZ3N0Z2xzaGFkZXIuYyBcCi0JZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYyBcCisJZ3N0Z2xzaGFkZXJzdHJpbmdzLmMgXAorCWdzdGdsc2wuYyBcCisJZ3N0Z2xzbHN0YWdlLmMgXAogCWdzdGdsY29sb3Jjb252ZXJ0LmMgXAotCWdzdGdsZG93bmxvYWQuYyBcCiAJZ3N0Z2x1cGxvYWQuYyBcCi0JZ3N0Z2x1cGxvYWRtZXRhLmMgXAogCWdzdGdsd2luZG93LmMgXAogCWdzdGdsYXBpLmMgXAogCWdzdGdsZmVhdHVyZS5jIFwKQEAgLTg4MCwyMyArOTA1LDI4IEBACiAJZ3N0Z2xzeW5jbWV0YS5jIFwKIAlnc3RnbHZpZXdjb252ZXJ0LmMgXAogCWdzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYyBcCi0JdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmgKKwlnc3RnbHF1ZXJ5LmMgXAorCWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jCiAKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9nbAogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMgPSBcCiAJZ3N0Z2x3aW5kb3cuaCBcCiAJZ3N0Z2xkaXNwbGF5LmggXAogCWdzdGdsY29udGV4dC5oIFwKLQlnc3RnbGJhc2VidWZmZXIuaCBcCisJZ3N0Z2xkZWJ1Zy5oIFwKKwlnc3RnbGJhc2VtZW1vcnkuaCBcCisJZ3N0Z2xidWZmZXIuaCBcCiAJZ3N0Z2xtZW1vcnkuaCBcCisJZ3N0Z2xtZW1vcnlwYm8uaCBcCiAJZ3N0Z2xidWZmZXJwb29sLmggXAogCWdzdGdsZmlsdGVyLmggXAorCWdzdGdsZm9ybWF0LmggXAogCWdzdGdsYmFzZWZpbHRlci5oIFwKLQlnc3RnbHNoYWRlcnZhcmlhYmxlcy5oIFwKIAlnc3RnbHNoYWRlci5oIFwKKwlnc3RnbHNoYWRlcnN0cmluZ3MuaCBcCisJZ3N0Z2xzbC5oIFwKKwlnc3RnbHNsc3RhZ2UuaCBcCiAJZ3N0Z2xjb2xvcmNvbnZlcnQuaCBcCi0JZ3N0Z2xkb3dubG9hZC5oIFwKLQlnc3RnbHVwbG9hZG1ldGEuaCBcCiAJZ3N0Z2x1cGxvYWQuaCBcCiAJZ3N0Z2xhcGkuaCBcCiAJZ3N0Z2xmZWF0dXJlLmggXApAQCAtOTA1LDkgKzkzNSwxNyBAQAogCWdzdGdsc3luY21ldGEuaCBcCiAJZ3N0Z2x2aWV3Y29udmVydC5oIFwKIAlnc3RnbG92ZXJsYXljb21wb3NpdG9yLmggXAorCWdzdGdscXVlcnkuaCBcCisJZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmggXAogCWdzdGdsX2Z3ZC5oIFwKKwlnc3RnbF9lbnVtcy5oIFwKIAlnbC5oCiAKK25vaW5zdF9IRUFERVJTID0gXAorCWdzdGdsc2xfcHJpdmF0ZS5oIFwKKwl1dGlscy9vcGVuZ2xfdmVyc2lvbnMuaCBcCisJdXRpbHMvZ2xlc192ZXJzaW9ucy5oCisKIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCA9ICQoR01PRFVMRV9OT19FWFBPUlRfTElCUykgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCiAJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKEdMX0xJQlMpICQoYW1fX2FwcGVuZF8yKSBcCkBAIC0xMDIzLDIzICsxMDYxLDI5IEBACiAJLXJtIC1mICoudGFiLmMKIAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYXBpLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlZmlsdGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlbWVtb3J5LlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlcnBvb2wuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbG9yY29udmVydC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udGV4dC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGVidWcuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRpc3BsYXkuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmZWF0dXJlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmaWx0ZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZvcm1hdC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZnJhbWVidWZmZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5cGJvLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlci5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVydmFyaWFibGVzLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJzdHJpbmdzLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc3luY21ldGEuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZC5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkbWV0YS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXRpbHMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHZpZXdjb252ZXJ0LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x3aW5kb3cuUGxvQGFtX19xdW90ZUAKQEAgLTEwODIsMTIgKzExMjYsMjYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbnRleHQubG8gYHRlc3QgLWYgJ2dzdGdsY29udGV4dC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGNvbnRleHQuYwogCi1saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VidWZmZXIubG86IGdzdGdsYmFzZWJ1ZmZlci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWJ1ZmZlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VidWZmZXIubG8gYHRlc3QgLWYgJ2dzdGdsYmFzZWJ1ZmZlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGJhc2VidWZmZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlYnVmZmVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsYmFzZWJ1ZmZlci5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWJ1ZmZlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5sbzogZ3N0Z2xkZWJ1Zy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGVidWcubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGVidWcuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZGVidWcubG8gYHRlc3QgLWYgJ2dzdGdsZGVidWcuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xkZWJ1Zy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRlYnVnLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbGRlYnVnLmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWJ1ZmZlci5sbyBgdGVzdCAtZiAnZ3N0Z2xiYXNlYnVmZmVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsYmFzZWJ1ZmZlci5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkZWJ1Zy5sbyBgdGVzdCAtZiAnZ3N0Z2xkZWJ1Zy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGRlYnVnLmMKKworbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlbWVtb3J5LmxvOiBnc3RnbGJhc2VtZW1vcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VtZW1vcnkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZW1lbW9yeS5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlbWVtb3J5LmxvIGB0ZXN0IC1mICdnc3RnbGJhc2VtZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xiYXNlbWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZW1lbW9yeS5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZW1lbW9yeS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbGJhc2VtZW1vcnkuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VtZW1vcnkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VtZW1vcnkubG8gYHRlc3QgLWYgJ2dzdGdsYmFzZW1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGJhc2VtZW1vcnkuYworCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlci5sbzogZ3N0Z2xidWZmZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXIuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVyLmxvIGB0ZXN0IC1mICdnc3RnbGJ1ZmZlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGJ1ZmZlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlci5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsYnVmZmVyLmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlci5sbyBgdGVzdCAtZiAnZ3N0Z2xidWZmZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xidWZmZXIuYwogCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeS5sbzogZ3N0Z2xtZW1vcnkuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnkuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5LmxvIGB0ZXN0IC1mICdnc3RnbG1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbG1lbW9yeS5jCkBAIC0xMDk2LDYgKzExNTQsMTMgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeS5sbyBgdGVzdCAtZiAnZ3N0Z2xtZW1vcnkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xtZW1vcnkuYwogCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeXBiby5sbzogZ3N0Z2xtZW1vcnlwYm8uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeXBiby5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnlwYm8uVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5cGJvLmxvIGB0ZXN0IC1mICdnc3RnbG1lbW9yeXBiby5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbG1lbW9yeXBiby5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeXBiby5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsbWVtb3J5cGJvLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsbWVtb3J5cGJvLmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xtZW1vcnlwYm8ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbG1lbW9yeXBiby5sbyBgdGVzdCAtZiAnZ3N0Z2xtZW1vcnlwYm8uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xtZW1vcnlwYm8uYworCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlcnBvb2wubG86IGdzdGdsYnVmZmVycG9vbC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYnVmZmVycG9vbC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXJwb29sLlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJ1ZmZlcnBvb2wubG8gYHRlc3QgLWYgJ2dzdGdsYnVmZmVycG9vbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGJ1ZmZlcnBvb2wuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXJwb29sLlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xidWZmZXJwb29sLlBsbwpAQCAtMTExMCw2ICsxMTc1LDEzIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmaWx0ZXIubG8gYHRlc3QgLWYgJ2dzdGdsZmlsdGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZmlsdGVyLmMKIAorbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmb3JtYXQubG86IGdzdGdsZm9ybWF0LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmb3JtYXQubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZm9ybWF0LlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZvcm1hdC5sbyBgdGVzdCAtZiAnZ3N0Z2xmb3JtYXQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xmb3JtYXQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmb3JtYXQuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGZvcm1hdC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbGZvcm1hdC5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZm9ybWF0LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xmb3JtYXQubG8gYHRlc3QgLWYgJ2dzdGdsZm9ybWF0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsZm9ybWF0LmMKKwogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlZmlsdGVyLmxvOiBnc3RnbGJhc2VmaWx0ZXIuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGJhc2VmaWx0ZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWZpbHRlci5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xiYXNlZmlsdGVyLmxvIGB0ZXN0IC1mICdnc3RnbGJhc2VmaWx0ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xiYXNlZmlsdGVyLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWZpbHRlci5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsYmFzZWZpbHRlci5QbG8KQEAgLTExMjQsMTIgKzExOTYsMjYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlci5sbyBgdGVzdCAtZiAnZ3N0Z2xzaGFkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xzaGFkZXIuYwogCi1saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnZhcmlhYmxlcy5sbzogZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnZhcmlhYmxlcy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVydmFyaWFibGVzLmxvIGB0ZXN0IC1mICdnc3RnbHNoYWRlcnZhcmlhYmxlcy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHNoYWRlcnZhcmlhYmxlcy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnZhcmlhYmxlcy5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVydmFyaWFibGVzLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsc2hhZGVydmFyaWFibGVzLmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyc3RyaW5ncy5sbzogZ3N0Z2xzaGFkZXJzdHJpbmdzLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJzdHJpbmdzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2hhZGVyc3RyaW5ncy5sbyBgdGVzdCAtZiAnZ3N0Z2xzaGFkZXJzdHJpbmdzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc2hhZGVyc3RyaW5ncy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xzaGFkZXJzdHJpbmdzLmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJzdHJpbmdzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMubG8gYHRlc3QgLWYgJ2dzdGdsc2hhZGVydmFyaWFibGVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsc2hhZGVydmFyaWFibGVzLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNoYWRlcnN0cmluZ3MubG8gYHRlc3QgLWYgJ2dzdGdsc2hhZGVyc3RyaW5ncy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHNoYWRlcnN0cmluZ3MuYworCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLmxvOiBnc3RnbHNsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbC5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbC5sbyBgdGVzdCAtZiAnZ3N0Z2xzbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHNsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2wuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsc2wuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbC5sbyBgdGVzdCAtZiAnZ3N0Z2xzbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHNsLmMKKworbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbHN0YWdlLmxvOiBnc3RnbHNsc3RhZ2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsc3RhZ2UubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xzbHN0YWdlLmxvIGB0ZXN0IC1mICdnc3RnbHNsc3RhZ2UuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xzbHN0YWdlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsc2xzdGFnZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RnbHNsc3RhZ2UuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsc3RhZ2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHNsc3RhZ2UubG8gYHRlc3QgLWYgJ2dzdGdsc2xzdGFnZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHNsc3RhZ2UuYwogCiBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbG9yY29udmVydC5sbzogZ3N0Z2xjb2xvcmNvbnZlcnQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbG9yY29udmVydC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb2xvcmNvbnZlcnQuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29sb3Jjb252ZXJ0LmxvIGB0ZXN0IC1mICdnc3RnbGNvbG9yY29udmVydC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGNvbG9yY29udmVydC5jCkBAIC0xMTM4LDEzICsxMjI0LDYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbG9yY29udmVydC5sbyBgdGVzdCAtZiAnZ3N0Z2xjb2xvcmNvbnZlcnQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xjb2xvcmNvbnZlcnQuYwogCi1saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLmxvOiBnc3RnbGRvd25sb2FkLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkb3dubG9hZC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkb3dubG9hZC5UcG8gLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkb3dubG9hZC5sbyBgdGVzdCAtZiAnZ3N0Z2xkb3dubG9hZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGRvd25sb2FkLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsZG93bmxvYWQuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsZG93bmxvYWQuYycgb2JqZWN0PSdsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGRvd25sb2FkLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xkb3dubG9hZC5sbyBgdGVzdCAtZiAnZ3N0Z2xkb3dubG9hZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGRvd25sb2FkLmMKLQogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWQubG86IGdzdGdsdXBsb2FkLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWQubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkLlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZC5sbyBgdGVzdCAtZiAnZ3N0Z2x1cGxvYWQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2x1cGxvYWQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWQuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZC5QbG8KQEAgLTExNTIsMTMgKzEyMzEsNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkLmxvIGB0ZXN0IC1mICdnc3RnbHVwbG9hZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbHVwbG9hZC5jCiAKLWxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkbWV0YS5sbzogZ3N0Z2x1cGxvYWRtZXRhLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWRtZXRhLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZG1ldGEuVHBvIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsdXBsb2FkbWV0YS5sbyBgdGVzdCAtZiAnZ3N0Z2x1cGxvYWRtZXRhLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsdXBsb2FkbWV0YS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZG1ldGEuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHVwbG9hZG1ldGEuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2x1cGxvYWRtZXRhLmMnIG9iamVjdD0nbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWRtZXRhLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x1cGxvYWRtZXRhLmxvIGB0ZXN0IC1mICdnc3RnbHVwbG9hZG1ldGEuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2x1cGxvYWRtZXRhLmMKLQogbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x3aW5kb3cubG86IGdzdGdsd2luZG93LmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x3aW5kb3cubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsd2luZG93LlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHdpbmRvdy5sbyBgdGVzdCAtZiAnZ3N0Z2x3aW5kb3cuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2x3aW5kb3cuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2x3aW5kb3cuVHBvICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHdpbmRvdy5QbG8KQEAgLTEyMTUsNiArMTI4NywyMCBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsb3ZlcmxheWNvbXBvc2l0b3IubG8gYHRlc3QgLWYgJ2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5jCiAKK2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkubG86IGdzdGdscXVlcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHF1ZXJ5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHF1ZXJ5LlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHF1ZXJ5LmxvIGB0ZXN0IC1mICdnc3RnbHF1ZXJ5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdscXVlcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xxdWVyeS5UcG8gJChERVBESVIpL2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0Z2xxdWVyeS5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdscXVlcnkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbHF1ZXJ5LmxvIGB0ZXN0IC1mICdnc3RnbHF1ZXJ5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdscXVlcnkuYworCitsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkubG86IGdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LlRwbyAtYyAtbyBsaWJnc3RnbF9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkubG8gYHRlc3QgLWYgJ2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LlRwbyAkKERFUERJUikvbGliZ3N0Z2xfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jJyBvYmplY3Q9J2xpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdsX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5sbyBgdGVzdCAtZiAnZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jCisKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KIApAQCAtMTYwNyw3ICsxNjkzLDggQEAKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCUdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPSIiIEdTVF9QTFVHSU5fUEFUSF8xXzA9IiIgR1NUX1JFR0lTVFJZX1VQREFURT1ubyBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQkkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgLXYgLS1uYW1lc3BhY2UgR3N0R0wgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1uc3ZlcnNpb249QEdTVF9BUElfVkVSU0lPTkAgXAotQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1zdHJpcC1wcmVmaXg9R3N0IFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0taWRlbnRpZmllci1wcmVmaXg9R3N0IFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tc3ltYm9sLXByZWZpeD1nc3QgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS13YXJuLWFsbCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWMtaW5jbHVkZSAiZ3N0L2dsL2dsLmgiIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0xNjI0LDcgKzE3MTEsNyBAQAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItZ2wtQEdTVF9BUElfVkVSU0lPTkAgXAotQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5pdC1zZWN0aW9uPSJnc3RfaW5pdChOVUxMLE5VTEwpOyIgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5pdC1zZWN0aW9uPSIkKElOVFJPU1BFQ1RJT05fSU5JVCkiIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1vdXRwdXQgJEAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJJChnaXJfaGVhZGVycykgXApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZS5pbgppbmRleCAyYWYwZjEwLi5lNWU3ODI2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGxpYmdzdGdsYW5kcm9pZGluY2x1ZGVfSEVBREVSUykgXApAQCAtMjczLDYgKzI3Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEwLDYgKzMxMSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE4LDcgKzMyMSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNyw4ICszMzksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU1LDE2ICszNTgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkwLDYgKzM5NCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNSw2ICs0MjEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTYsNiArNTI0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyOSw4ICs1MzgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDYsNiArNTUzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMywxNiArNjEyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY0LDYgKzY3NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzQsNiArNjg2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgzLDYgKzY5Niw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjAsNyArNzM1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9nc3RnbHdpbmRvd19hbmRyb2lkX2VnbC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvZ3N0Z2x3aW5kb3dfYW5kcm9pZF9lZ2wuYwppbmRleCA5ODM3NzU2Li5mMjM0YWNmIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9nc3RnbHdpbmRvd19hbmRyb2lkX2VnbC5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmMKQEAgLTU3LDggKzU3LDYgQEAKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2FuZHJvaWRfZWdsX2dldF93aW5kb3dfaGFuZGxlKTsKICAgd2luZG93X2NsYXNzLT5zZXRfd2luZG93X2hhbmRsZSA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19hbmRyb2lkX2VnbF9zZXRfd2luZG93X2hhbmRsZSk7Ci0gIHdpbmRvd19jbGFzcy0+ZHJhd191bmxvY2tlZCA9Ci0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19hbmRyb2lkX2VnbF9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5kcmF3ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfYW5kcm9pZF9lZ2xfZHJhdyk7CiB9CiAKQEAgLTEwOCw3ICsxMDYsNyBAQAogCiAgIGlmIChjb250ZXh0X2VnbC0+ZWdsX3N1cmZhY2UpIHsKICAgICBnaW50IHdpZHRoLCBoZWlnaHQ7Ci0gICAgZ2ludCB3aW5kb3dfd2lkdGgsIHdpbmRvd19oZWlnaHQ7CisgICAgZ3VpbnQgd2luZG93X3dpZHRoLCB3aW5kb3dfaGVpZ2h0OwogCiAgICAgZ3N0X2dsX3dpbmRvd19nZXRfc3VyZmFjZV9kaW1lbnNpb25zICh3aW5kb3csICZ3aW5kb3dfd2lkdGgsCiAgICAgICAgICZ3aW5kb3dfaGVpZ2h0KTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmggYi9nc3QtbGlicy9nc3QvZ2wvYW5kcm9pZC9nc3RnbHdpbmRvd19hbmRyb2lkX2VnbC5oCmluZGV4IGVhYWRhNDQuLmI4ZGM2NmQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9hbmRyb2lkL2dzdGdsd2luZG93X2FuZHJvaWRfZWdsLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2FuZHJvaWQvZ3N0Z2x3aW5kb3dfYW5kcm9pZF9lZ2wuaApAQCAtMzAsOCArMzAsOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wgICAgICAgICAoZ3N0X2dsX3dpbmRvd19hbmRyb2lkX2VnbF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0FORFJPSURfRUdMKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wsIEdzdEdMV2luZG93QW5kcm9pZEVHTCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfQU5EUk9JRF9FR0xfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wsIEdzdEdMV2luZG93QW5kcm9pZEVHTENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19BTkRST0lEX0VHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0FORFJPSURfRUdMKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19BTkRST0lEX0VHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0FORFJPSURfRUdMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19BTkRST0lEX0VHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0FORFJPSURfRUdMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19BTkRST0lEX0VHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0FORFJPSURfRUdMKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19BTkRST0lEX0VHTF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQU5EUk9JRF9FR0wsIEdzdEdMV2luZG93QW5kcm9pZEVHTF9DbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd0FuZHJvaWRFR0wgICAgICAgIEdzdEdMV2luZG93QW5kcm9pZEVHTDsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9NYWtlZmlsZS5pbgppbmRleCBlNjFkZGQ1Li40YzAyMjM0IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvY29jb2EvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobGliZ3N0Z2xfY29jb2FpbmNsdWRlX0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY2FvcGVuZ2xsYXllci5tIGIvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY2FvcGVuZ2xsYXllci5tCmluZGV4IGNjODJjM2MuLmExMTcwMGQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbGNhb3BlbmdsbGF5ZXIubQorKysgYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjYW9wZW5nbGxheWVyLm0KQEAgLTEyNiw2ICsxMjYsNyBAQAogICB9CiAKICAgZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGUgKHNlbGYtPmRyYXdfY29udGV4dCwgVFJVRSk7CisgIGdzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aCAoc2VsZi0+ZHJhd19jb250ZXh0LCBzZWxmLT5nc3RfZ2xfY29udGV4dCk7CiAgIGlmICghZ3N0X2dsX2NvbnRleHRfZmlsbF9pbmZvIChzZWxmLT5kcmF3X2NvbnRleHQsICZlcnJvcikpIHsKICAgICBHU1RfRVJST1IgKCJmYWlsZWQgdG8gZmlsbCB3cmFwcGVkIGNvbnRleHQgaW5mb3JtYXRpb246ICVzIiwgZXJyb3ItPm1lc3NhZ2UpOwogICAgIHJldHVybiBOVUxMOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5oCmluZGV4IDIyMDY5ZWUuLjhlNGQxYWMgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbGNvbnRleHRfY29jb2EuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLmgKQEAgLTMwLDggKzMwLDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfQ09OVEVYVF9DT0NPQSAgICAgICAgIChnc3RfZ2xfY29udGV4dF9jb2NvYV9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9DT0NPQShvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9DT0NPQSwgR3N0R0xDb250ZXh0Q29jb2EpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9DT0NPQV9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfQ09DT0EsIEdzdEdMQ29udGV4dENvY29hQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9DT0NPQShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9DT0NPQSkpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUX0NPQ09BX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0NPQ09BKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0NPTlRFWFRfQ09DT0EobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfQ09DT0EpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9DT0NPQV9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9DT0NPQSkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0NPQ09BX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfQ09DT0EsIEdzdEdMQ29udGV4dENvY29hQ2xhc3MpKQogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250ZXh0Q29jb2EgICAgICAgIEdzdEdMQ29udGV4dENvY29hOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5tIGIvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsY29udGV4dF9jb2NvYS5tCmluZGV4IGJkZTkwZjEuLmFjMWUwZDYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbGNvbnRleHRfY29jb2EubQorKysgYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLm0KQEAgLTkwLDcgKzkwLDYgQEAKIHN0YXRpYyBzdHJ1Y3QgcGl4ZWxfYXR0ciBwaXhlbF9hdHRyc1tdID0gewogICB7a0NHTFBGQUFsbFJlbmRlcmVycywgIkFsbCBSZW5kZXJlcnMifSwKICAge2tDR0xQRkFEb3VibGVCdWZmZXIsICJEb3VibGUgQnVmZmVyZWQifSwKLSAge2tDR0xQRkFTdGVyZW8sICJTdGVyZW8ifSwKICAge2tDR0xQRkFBdXhCdWZmZXJzLCAiQXV4IEJ1ZmZlcnMifSwKICAge2tDR0xQRkFDb2xvclNpemUsICJDb2xvciBTaXplIn0sCiAgIHtrQ0dMUEZBQWxwaGFTaXplLCAiQWxwaGEgU2l6ZSJ9LApAQCAtMTE1LDIwICsxMTQsMjMgQEAKICAge2tDR0xQRkFBY2NlbGVyYXRlZENvbXB1dGUsICJBY2NlbGVyYXRlZCBDb21wdXRlIn0sCiAgIHtrQ0dMUEZBT3BlbkdMUHJvZmlsZSwgIk9wZW5HTCBQcm9maWxlIn0sCiAgIHtrQ0dMUEZBVmlydHVhbFNjcmVlbkNvdW50LCAiVmlydHVhbCBTY3JlZW4gQ291bnQifSwKLSNpZiBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTA5MAorI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCBNQUNfT1NfWF9WRVJTSU9OXzEwXzExCisgIHtrQ0dMUEZBU3RlcmVvLCAiU3RlcmVvIn0sCisjZW5kaWYKKyNpZiBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgTUFDX09TX1hfVkVSU0lPTl8xMF85CiAgIHtrQ0dMUEZBQ29tcGxpYW50LCAiQ29tcGxpYW50In0sCiAgIHtrQ0dMUEZBUmVtb3RlUEJ1ZmZlciwgIlJlbW90ZSBQQnVmZmVyIn0sCiAgIHtrQ0dMUEZBU2luZ2xlUmVuZGVyZXIsICJTaW5nbGUgUmVuZGVyZXIifSwKICAge2tDR0xQRkFXaW5kb3csICJXaW5kb3cifSwKICNlbmRpZgotI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDcwCisjaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfNwogLy8gIHtrQ0dMUEZBT2ZmU2NyZWVuLCAiT2ZmIFNjcmVlbiJ9LAogLy8gIHtrQ0dMUEZBUEJ1ZmZlciwgIlBCdWZmZXIifSwKICNlbmRpZgotI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCAxMDYwCisjaWYgTUFDX09TX1hfVkVSU0lPTl9NQVhfQUxMT1dFRCA8IE1BQ19PU19YX1ZFUlNJT05fMTBfNgogLy8gIHtrQ0dMUEZBRnVsbFNjcmVlbiwgIkZ1bGwgU2NyZWVuIn0sCiAjZW5kaWYKLSNpZiBNQUNfT1NfWF9WRVJTSU9OX01BWF9BTExPV0VEIDwgMTA1MAorI2lmIE1BQ19PU19YX1ZFUlNJT05fTUFYX0FMTE9XRUQgPCBNQUNfT1NfWF9WRVJTSU9OXzEwXzUKIC8vICB7a0NHTFBGQU1QU2FmZSwgIk1QIFNhZmUifSwKIC8vICB7a0NHTFBGQU11bHRpU2NyZWVuLCAiTXVsdGkgU2NyZWVuIn0sCiAvLyAge2tDR0xQRkFSb2J1c3QsICJSb2J1c3QifSwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9jb2NvYS9nc3RnbHdpbmRvd19jb2NvYS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsd2luZG93X2NvY29hLmgKaW5kZXggMjFjNTkxNy4uNmQxNDA0YiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsd2luZG93X2NvY29hLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsd2luZG93X2NvY29hLmgKQEAgLTMwLDggKzMwLDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfV0lORE9XX0NPQ09BICAgICAgICAgKGdzdF9nbF93aW5kb3dfY29jb2FfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19DT0NPQShvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0NPQ09BLCBHc3RHTFdpbmRvd0NvY29hKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19DT0NPQV9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX1dJTkRPV19DT0NPQSwgR3N0R0xXaW5kb3dDb2NvYUNsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19DT0NPQShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0NPQ09BKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19DT0NPQV9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0NPQ09BKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19DT0NPQShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0NPQ09BKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19DT0NPQV9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0NPQ09BKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19DT0NPQV9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfQ09DT0EsIEdzdEdMV2luZG93Q29jb2FDbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd0NvY29hICAgICAgICBHc3RHTFdpbmRvd0NvY29hOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2NvY29hL2dzdGdsd2luZG93X2NvY29hLm0gYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EubQppbmRleCA5YzM3ZTZjLi4wZDAyN2M1IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EubQorKysgYi9nc3QtbGlicy9nc3QvZ2wvY29jb2EvZ3N0Z2x3aW5kb3dfY29jb2EubQpAQCAtMTA2LDcgKzEwNiw2IEBACiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19jb2NvYV9nZXRfd2luZG93X2hhbmRsZSk7CiAgIHdpbmRvd19jbGFzcy0+c2V0X3dpbmRvd19oYW5kbGUgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfY29jb2Ffc2V0X3dpbmRvd19oYW5kbGUpOwotICB3aW5kb3dfY2xhc3MtPmRyYXdfdW5sb2NrZWQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19jb2NvYV9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5kcmF3ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfY29jb2FfZHJhdyk7CiAgIHdpbmRvd19jbGFzcy0+c2V0X3ByZWZlcnJlZF9zaXplID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2NvY29hX3NldF9wcmVmZXJyZWRfc2l6ZSk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZGlzcG1hbngvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wvZGlzcG1hbngvTWFrZWZpbGUuaW4KaW5kZXggYTNlYWRkYS4uZmQyN2M5YSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNDUsNiArMjQ0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODIsNiArMjgzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTAsNyArMjkzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA5LDggKzMxMSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjcsMTYgKzMzMCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjIsNiArMzY2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg3LDYgKzM5Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4OCw2ICs0OTYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAxLDggKzUxMCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxOCw2ICs1MjUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc1LDE2ICs1ODQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzYsNiArNjQ3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0Niw2ICs2NTgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTUsNiArNjY4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5Miw3ICs3MDcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9nc3RnbHdpbmRvd19kaXNwbWFueF9lZ2wuaCBiL2dzdC1saWJzL2dzdC9nbC9kaXNwbWFueC9nc3RnbHdpbmRvd19kaXNwbWFueF9lZ2wuaAppbmRleCBkZjIzZWI1Li4zMTMwYTZjIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZGlzcG1hbngvZ3N0Z2x3aW5kb3dfZGlzcG1hbnhfZWdsLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2Rpc3BtYW54L2dzdGdsd2luZG93X2Rpc3BtYW54X2VnbC5oCkBAIC00Nyw4ICs0Nyw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX1dJTkRPV19ESVNQTUFOWF9FR0wgICAgICAgICAoZ3N0X2dsX3dpbmRvd19kaXNwbWFueF9lZ2xfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19ESVNQTUFOWF9FR0wobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19ESVNQTUFOWF9FR0wsIEdzdEdMV2luZG93RGlzcG1hbnhFR0wpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0RJU1BNQU5YX0VHTF9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX1dJTkRPV19ESVNQTUFOWF9FR0wsIEdzdEdMV2luZG93RGlzcG1hbnhFR0xDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1dfRElTUE1BTlhfRUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfRElTUE1BTlhfRUdMKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19ESVNQTUFOWF9FR0xfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPV19ESVNQTUFOWF9FR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0RJU1BNQU5YX0VHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0RJU1BNQU5YX0VHTCkpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1dfRElTUE1BTlhfRUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfRElTUE1BTlhfRUdMKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19ESVNQTUFOWF9FR0xfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX0RJU1BNQU5YX0VHTCwgR3N0R0xXaW5kb3dEaXNwbWFueEVHTF9DbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd0Rpc3BtYW54RUdMICAgICAgICBHc3RHTFdpbmRvd0Rpc3BtYW54RUdMOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wvZWFnbC9NYWtlZmlsZS5pbgppbmRleCAyODY0NWZjLi44NjllYWJlIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZWFnbC9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvZ2wvZWFnbC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNDUsNiArMjQ0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODIsNiArMjgzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTAsNyArMjkzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA5LDggKzMxMSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjcsMTYgKzMzMCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjIsNiArMzY2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg3LDYgKzM5Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4OCw2ICs0OTYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAxLDggKzUxMCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxOCw2ICs1MjUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc1LDE2ICs1ODQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzYsNiArNjQ3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0Niw2ICs2NTgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTUsNiArNjY4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5Miw3ICs3MDcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLmggYi9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5oCmluZGV4IGJkNmNkMjAuLjI2MjI4MTAgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsY29udGV4dF9lYWdsLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2xjb250ZXh0X2VhZ2wuaApAQCAtMjksOCArMjksOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wgICAgICAgICAoZ3N0X2dsX2NvbnRleHRfZWFnbF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9FQUdMKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wsIEdzdEdMQ29udGV4dEVhZ2wpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9FQUdMX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9FQUdMLCBHc3RHTENvbnRleHRFYWdsQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9FQUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9FQUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9FQUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9FQUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0VBR0wpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9FQUdMX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUFHTCwgR3N0R0xDb250ZXh0RWFnbENsYXNzKSkKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29udGV4dEVhZ2wgICAgICAgIEdzdEdMQ29udGV4dEVhZ2w7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLmggYi9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLmgKaW5kZXggY2UzZDBiMy4uMDAxYzk3YyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wuaApAQCAtMjksOCArMjksOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9XSU5ET1dfRUFHTCAgICAgICAgIChnc3RfZ2xfd2luZG93X2VhZ2xfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19FQUdMKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfRUFHTCwgR3N0R0xXaW5kb3dFYWdsKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19FQUdMX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0VBR0wsIEdzdEdMV2luZG93RWFnbENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19FQUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfRUFHTCkpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1dfRUFHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX0VBR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0VBR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19FQUdMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19FQUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfRUFHTCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfRUFHTF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfRUFHTCwgR3N0R0xXaW5kb3dFYWdsQ2xhc3MpKQogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xXaW5kb3dFYWdsICAgICAgICBHc3RHTFdpbmRvd0VhZ2w7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLm0gYi9nc3QtbGlicy9nc3QvZ2wvZWFnbC9nc3RnbHdpbmRvd19lYWdsLm0KaW5kZXggZGZkODg5Zi4uZWI5ZDRmNyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2VhZ2wvZ3N0Z2x3aW5kb3dfZWFnbC5tCisrKyBiL2dzdC1saWJzL2dzdC9nbC9lYWdsL2dzdGdsd2luZG93X2VhZ2wubQpAQCAtNjksNyArNjksNiBAQAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZWFnbF9nZXRfd2luZG93X2hhbmRsZSk7CiAgIHdpbmRvd19jbGFzcy0+c2V0X3dpbmRvd19oYW5kbGUgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZWFnbF9zZXRfd2luZG93X2hhbmRsZSk7Ci0gIHdpbmRvd19jbGFzcy0+ZHJhd191bmxvY2tlZCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2VhZ2xfZHJhdyk7CiAgIHdpbmRvd19jbGFzcy0+ZHJhdyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2VhZ2xfZHJhdyk7CiAgIHdpbmRvd19jbGFzcy0+c2V0X3ByZWZlcnJlZF9zaXplID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2VhZ2xfc2V0X3ByZWZlcnJlZF9zaXplKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wvZWdsL01ha2VmaWxlLmluCmluZGV4IDc4OGExZGEuLjJlMzVhN2EgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGxpYmdzdGdsX2VnbGluY2x1ZGVfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmMgYi9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmMKaW5kZXggZWI0NTgzMC4uNDYwOThiNSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuYwpAQCAtMjUsNiArMjUsNDQgQEAKICNlbmRpZgogCiAjaW5jbHVkZSAiZ3N0ZWdsaW1hZ2VtZW1vcnkuaCIKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmIEdTVF9HTF9IQVZFX0RNQUJVRgorI2luY2x1ZGUgPGdzdC9hbGxvY2F0b3JzL2dzdGRtYWJ1Zi5oPgorI2luY2x1ZGUgPGxpYmRybS9kcm1fZm91cmNjLmg+CisKKyNpZm5kZWYgRFJNX0ZPUk1BVF9SOAorI2RlZmluZSBEUk1fRk9STUFUX1I4IGZvdXJjY19jb2RlKCdSJywgJzgnLCAnICcsICcgJykKKyNlbmRpZgorCisjaWZuZGVmIERSTV9GT1JNQVRfUkc4OAorI2RlZmluZSBEUk1fRk9STUFUX1JHODggZm91cmNjX2NvZGUoJ1InLCAnRycsICc4JywgJzgnKQorI2VuZGlmCisKKyNpZm5kZWYgRFJNX0ZPUk1BVF9HUjg4CisjZGVmaW5lIERSTV9GT1JNQVRfR1I4OCBmb3VyY2NfY29kZSgnRycsICdSJywgJzgnLCAnOCcpCisjZW5kaWYKKyNlbmRpZgorCisjaWZuZGVmIEVHTF9MSU5VWF9ETUFfQlVGX0VYVAorI2RlZmluZSBFR0xfTElOVVhfRE1BX0JVRl9FWFQgMHgzMjcwCisjZW5kaWYKKworI2lmbmRlZiBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQKKyNkZWZpbmUgRUdMX0xJTlVYX0RSTV9GT1VSQ0NfRVhUIDB4MzI3MQorI2VuZGlmCisKKyNpZm5kZWYgRUdMX0RNQV9CVUZfUExBTkUwX0ZEX0VYVAorI2RlZmluZSBFR0xfRE1BX0JVRl9QTEFORTBfRkRfRVhUIDB4MzI3MgorI2VuZGlmCisKKyNpZm5kZWYgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQKKyNkZWZpbmUgRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQgMHgzMjczCisjZW5kaWYKKworI2lmbmRlZiBFR0xfRE1BX0JVRl9QTEFORTBfUElUQ0hfRVhUCisjZGVmaW5lIEVHTF9ETUFfQlVGX1BMQU5FMF9QSVRDSF9FWFQgMHgzMjc0CisjZW5kaWYKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9FR0xfSU1BR0VfTUVNT1JZKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIEdTVF9DQVRfRUdMX0lNQUdFX01FTU9SWQpAQCAtMzEwLDkgKzM0OCwxMzcgQEAKICAgICBnc3RfZ2xfYnVmZmVyX3Bvb2xfcmVwbGFjZV9sYXN0X2J1ZmZlciAoR1NUX0dMX0JVRkZFUl9QT09MIChtZXRhLT4KICAgICAgICAgICAgIGJ1ZmZlci0+cG9vbCksIG1ldGEtPmJ1ZmZlcik7CiAKKwogICByZXR1cm4gVFJVRTsKIH0KIAorI2lmIEdTVF9HTF9IQVZFX0RNQUJVRgorLyoKKyAqIEdTdHJlYW1lciBmb3JtYXQgZGVzY3JpcHRpb25zIGRpZmZlciBmcm9tIERSTSBmb3JtYXRzIGFzIHRoZSByZXByZXNlbnRhdGlvbgorICogaXMgcmVsYXRpdmUgdG8gYSByZWdpc3RlciwgaGVuY2UgaW4gbmF0aXZlIGVuZGlhbm5lc3MuIFRvIHJlZHVjZSB0aGUgZHJpdmVyCisgKiByZXF1aXJlbWVudCwgd2Ugb25seSBpbXBvcnQgd2l0aCBhIHN1YnNldCBvZiB0ZXh0dXJlIGZvcm1hdHMgYW5kIHVzZQorICogc2hhZGVycyB0byBjb252ZXJ0LiBUaGlzIHdheSB3ZSBhdm9pZCBoYXZpbmcgdG8gdXNlIGV4dGVybmFsIHRleHR1cmUKKyAqIHRhcmdldC4KKyAqLworc3RhdGljIGludAorX2RybV9mb3VyY2NfZnJvbV9pbmZvIChHc3RWaWRlb0luZm8gKiBpbmZvLCBpbnQgcGxhbmUpCit7CisgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbyk7CisjaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgorICBjb25zdCBnaW50IHJnYmFfZm91cmNjID0gRFJNX0ZPUk1BVF9BQkdSODg4ODsKKyAgY29uc3QgZ2ludCByZ2JfZm91cmNjID0gRFJNX0ZPUk1BVF9CR1I4ODg7CisgIGNvbnN0IGdpbnQgcmdfZm91cmNjID0gRFJNX0ZPUk1BVF9HUjg4OworI2Vsc2UKKyAgY29uc3QgZ2ludCByZ2JhX2ZvdXJjYyA9IERSTV9GT1JNQVRfUkdCQTg4ODg7CisgIGNvbnN0IGdpbnQgcmdiX2ZvdXJjYyA9IERSTV9GT1JNQVRfUkdCODg4OworICBjb25zdCBnaW50IHJnX2ZvdXJjYyA9IERSTV9GT1JNQVRfUkc4ODsKKyNlbmRpZgorCisgIEdTVF9ERUJVRyAoIkdldHRpbmcgRFJNIGZvdXJjYyBmb3IgJXMgcGxhbmUgJWkiLAorICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKGZvcm1hdCksIHBsYW5lKTsKKworICBzd2l0Y2ggKGZvcm1hdCkgeworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0IxNjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSMTY6CisgICAgICByZXR1cm4gRFJNX0ZPUk1BVF9SR0I1NjU7CisKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1I6CisgICAgICByZXR1cm4gcmdiX2ZvdXJjYzsKKworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0J4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1J4OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94UkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BQkdSOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF94QkdSOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BWVVWOgorICAgICAgcmV0dXJuIHJnYmFfZm91cmNjOworCisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVk4OgorICAgICAgcmV0dXJuIERSTV9GT1JNQVRfUjg7CisKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTE2X0xFOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZMTZfQkU6CisgICAgICByZXR1cm4gcmdfZm91cmNjOworCisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMjE6CisgICAgICByZXR1cm4gcGxhbmUgPT0gMCA/IERSTV9GT1JNQVRfUjggOiByZ19mb3VyY2M7CisKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfSTQyMDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQxQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQyQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQ0NDoKKyAgICAgIHJldHVybiBEUk1fRk9STUFUX1I4OworCisgICAgZGVmYXVsdDoKKyAgICAgIEdTVF9FUlJPUiAoIlVuc3VwcG9ydGVkIGZvcm1hdCBmb3IgRE1BQnVmLiIpOworICAgICAgcmV0dXJuIC0xOworICB9Cit9CisKK0dzdE1lbW9yeSAqCitnc3RfZWdsX2ltYWdlX21lbW9yeV9mcm9tX2RtYWJ1ZiAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBnaW50IGRtYWJ1ZiwgR3N0VmlkZW9JbmZvICogaW5faW5mbywgZ2ludCBwbGFuZSwgZ3NpemUgb2Zmc2V0KQoreworICBHc3RHTENvbnRleHRFR0wgKmN0eF9lZ2wgPSBHU1RfR0xfQ09OVEVYVF9FR0wgKGNvbnRleHQpOworICBHc3RFR0xJbWFnZUFsbG9jYXRvciAqYWxsb2NhdG9yOworICBnaW50IGZvdXJjYzsKKyAgZ2ludCBhdHRpID0gMDsKKyAgRUdMaW50IGF0dHJpYnNbMTNdOworICBFR0xJbWFnZUtIUiBpbWcgPSBFR0xfTk9fSU1BR0VfS0hSOworCisgIGFsbG9jYXRvciA9IGdzdF9lZ2xfaW1hZ2VfYWxsb2NhdG9yX29idGFpbiAoKTsKKyAgZm91cmNjID0gX2RybV9mb3VyY2NfZnJvbV9pbmZvIChpbl9pbmZvLCBwbGFuZSk7CisKKyAgR1NUX0RFQlVHICgiZm91cmNjICUuNHMgKCVkKSBwbGFuZSAlZCAoJWR4JWQpIiwKKyAgICAgIChjaGFyICopICZmb3VyY2MsIGZvdXJjYywgcGxhbmUsCisgICAgICBHU1RfVklERU9fSU5GT19DT01QX1dJRFRIIChpbl9pbmZvLCBwbGFuZSksCisgICAgICBHU1RfVklERU9fSU5GT19DT01QX0hFSUdIVCAoaW5faW5mbywgcGxhbmUpKTsKKworICBhdHRyaWJzW2F0dGkrK10gPSBFR0xfV0lEVEg7CisgIGF0dHJpYnNbYXR0aSsrXSA9IEdTVF9WSURFT19JTkZPX0NPTVBfV0lEVEggKGluX2luZm8sIHBsYW5lKTsKKyAgYXR0cmlic1thdHRpKytdID0gRUdMX0hFSUdIVDsKKyAgYXR0cmlic1thdHRpKytdID0gR1NUX1ZJREVPX0lORk9fQ09NUF9IRUlHSFQgKGluX2luZm8sIHBsYW5lKTsKKworICBhdHRyaWJzW2F0dGkrK10gPSBFR0xfTElOVVhfRFJNX0ZPVVJDQ19FWFQ7CisgIGF0dHJpYnNbYXR0aSsrXSA9IGZvdXJjYzsKKworICBhdHRyaWJzW2F0dGkrK10gPSBFR0xfRE1BX0JVRl9QTEFORTBfRkRfRVhUOworICBhdHRyaWJzW2F0dGkrK10gPSBkbWFidWY7CisKKyAgYXR0cmlic1thdHRpKytdID0gRUdMX0RNQV9CVUZfUExBTkUwX09GRlNFVF9FWFQ7CisgIGF0dHJpYnNbYXR0aSsrXSA9IG9mZnNldDsKKyAgYXR0cmlic1thdHRpKytdID0gRUdMX0RNQV9CVUZfUExBTkUwX1BJVENIX0VYVDsKKyAgYXR0cmlic1thdHRpKytdID0gR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFIChpbl9pbmZvLCBwbGFuZSk7CisKKyAgYXR0cmlic1thdHRpXSA9IEVHTF9OT05FOworCisgIGZvciAoaW50IGkgPSAwOyBpIDwgYXR0aTsgaSsrKQorICAgIEdTVF9MT0cgKCJhdHRyICVpOiAlMDhYIiwgaSwgYXR0cmlic1tpXSk7CisKKyAgZ19hc3NlcnQgKGF0dGkgPT0gMTIpOworCisgIGltZyA9IGN0eF9lZ2wtPmVnbENyZWF0ZUltYWdlIChjdHhfZWdsLT5lZ2xfZGlzcGxheSwgRUdMX05PX0NPTlRFWFQsCisgICAgICBFR0xfTElOVVhfRE1BX0JVRl9FWFQsIE5VTEwsIGF0dHJpYnMpOworCisgIGlmICghaW1nKSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChhbGxvY2F0b3IsICJlZ2xDcmVhdGVJbWFnZSBmYWlsZWQ6ICVzIiwKKyAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gZ3N0X2VnbF9pbWFnZV9hbGxvY2F0b3Jfd3JhcCAoYWxsb2NhdG9yLCBjdHhfZWdsLCBpbWcsIDAsIDAsCisgICAgICBpbl9pbmZvLT5zaXplLCBOVUxMLCBOVUxMKTsKK30KKyNlbmRpZiAvKiBHU1RfR0xfSEFWRV9ETUFCVUYgKi8KKwogZ2Jvb2xlYW4KIGdzdF9lZ2xfaW1hZ2VfbWVtb3J5X3NldHVwX2J1ZmZlciAoR3N0R0xDb250ZXh0ICogY3R4LCBHc3RWaWRlb0luZm8gKiBpbmZvLAogICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaCBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaAppbmRleCBjZTFmZDQ0Li5hY2VkMjQ3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGVnbGltYWdlbWVtb3J5LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RlZ2xpbWFnZW1lbW9yeS5oCkBAIC02NCw2ICs2NCwxMSBAQAogdm9pZCBnc3RfZWdsX2ltYWdlX21lbW9yeV9zZXRfb3JpZW50YXRpb24gKEdzdE1lbW9yeSAqIG1lbSwKICAgICBHc3RWaWRlb0dMVGV4dHVyZU9yaWVudGF0aW9uIG9yaWVudGF0aW9uKTsKIAorI2lmIEdTVF9HTF9IQVZFX0RNQUJVRgorR3N0TWVtb3J5ICogZ3N0X2VnbF9pbWFnZV9tZW1vcnlfZnJvbV9kbWFidWYgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgZ2ludCBkbWFidWYsIEdzdFZpZGVvSW5mbyAqIGluX2luZm8sIGdpbnQgcGxhbmUsIGdzaXplIG9mZnNldCk7CisjZW5kaWYKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIF9HU1RfR0xfTUVNT1JZX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuYyBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jCmluZGV4IDNhNGFhMzUuLmNlYWZkZjMgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9lZ2wvZ3N0Z2xjb250ZXh0X2VnbC5jCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNsdWRlICJnc3RnbGNvbnRleHRfZWdsLmgiCiAjaW5jbHVkZSA8Z3N0L2dsL2VnbC9nc3RlZ2wuaD4KKyNpbmNsdWRlICIuLi91dGlscy9vcGVuZ2xfdmVyc2lvbnMuaCIKKyNpbmNsdWRlICIuLi91dGlscy9nbGVzX3ZlcnNpb25zLmgiCiAKICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfWDExCiAjaW5jbHVkZSAiLi4veDExL2dzdGdsd2luZG93X3gxMS5oIgpAQCAtMTA3LDEyICsxMDksMTAgQEAKICAgcmV0dXJuIGdfb2JqZWN0X25ldyAoR1NUX0dMX1RZUEVfQ09OVEVYVF9FR0wsIE5VTEwpOwogfQogCi1zdGF0aWMgY29uc3QgZ2NoYXIgKgotZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKHZvaWQpCitjb25zdCBnY2hhciAqCitnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoRUdMaW50IGVycikKIHsKLSAgRUdMaW50IG5FcnIgPSBlZ2xHZXRFcnJvciAoKTsKLQotICBzd2l0Y2ggKG5FcnIpIHsKKyAgc3dpdGNoIChlcnIpIHsKICAgICBjYXNlIEVHTF9TVUNDRVNTOgogICAgICAgcmV0dXJuICJFR0xfU1VDQ0VTUyI7CiAgICAgY2FzZSBFR0xfQkFEX0RJU1BMQVk6CkBAIC0xNTAsNyArMTUwLDcgQEAKIGdzdF9nbF9jb250ZXh0X2VnbF9jaG9vc2VfZm9ybWF0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHRXJyb3IgKiogZXJyb3IpCiB7CiAjaWYgR1NUX0dMX0hBVkVfV0lORE9XX1gxMQotICBpZiAoR1NUX0dMX0lTX1dJTkRPV19YMTEgKGNvbnRleHQtPndpbmRvdykpIHsKKyAgaWYgKEdTVF9JU19HTF9XSU5ET1dfWDExIChjb250ZXh0LT53aW5kb3cpKSB7CiAgICAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cgKGNvbnRleHQpOwogICAgIEdzdEdMV2luZG93WDExICp3aW5kb3dfeDExID0gR1NUX0dMX1dJTkRPV19YMTEgKHdpbmRvdyk7CiAgICAgZ2ludCByZXQ7CkBAIC0xNzMsMTkgKzE3MywzNiBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9nbF9jb250ZXh0X2VnbF9jaG9vc2VfY29uZmlnIChHc3RHTENvbnRleHRFR0wgKiBlZ2wsCi0gICAgR3N0R0xDb250ZXh0ICogb3RoZXJfY29udGV4dCwgR0Vycm9yICoqIGVycm9yKQorZ3N0X2dsX2NvbnRleHRfZWdsX2Nob29zZV9jb25maWcgKEdzdEdMQ29udGV4dEVHTCAqIGVnbCwgR3N0R0xBUEkgZ2xfYXBpLAorICAgIGdpbnQgbWFqb3IsIEdFcnJvciAqKiBlcnJvcikKIHsKKyAgZ2Jvb2xlYW4gY3JlYXRlX2NvbnRleHQ7CiAgIEVHTGludCBudW1Db25maWdzOwogICBnaW50IGkgPSAwOwogICBFR0xpbnQgY29uZmlnX2F0dHJpYlsyMF07CiAKKyAgY3JlYXRlX2NvbnRleHQgPQorICAgICAgZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoIkVHTF9LSFJfY3JlYXRlX2NvbnRleHQiLCBlZ2wtPmVnbF9leHRzKTsKKyAgLyogc2lsZW5jZSB1bnVzZWQgd2FybmluZ3MgKi8KKyAgKHZvaWQpIGNyZWF0ZV9jb250ZXh0OworCiAgIGNvbmZpZ19hdHRyaWJbaSsrXSA9IEVHTF9TVVJGQUNFX1RZUEU7CiAgIGNvbmZpZ19hdHRyaWJbaSsrXSA9IEVHTF9XSU5ET1dfQklUOwogICBjb25maWdfYXR0cmliW2krK10gPSBFR0xfUkVOREVSQUJMRV9UWVBFOwotICBpZiAoZWdsLT5nbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyKQotICAgIGNvbmZpZ19hdHRyaWJbaSsrXSA9IEVHTF9PUEVOR0xfRVMyX0JJVDsKLSAgZWxzZQorICBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMikgeworICAgIGlmIChtYWpvciA9PSAzKSB7CisjaWYgZGVmaW5lZChFR0xfS0hSX2NyZWF0ZV9jb250ZXh0KQorICAgICAgaWYgKGNyZWF0ZV9jb250ZXh0KSB7CisgICAgICAgIGNvbmZpZ19hdHRyaWJbaSsrXSA9IEVHTF9PUEVOR0xfRVMzX0JJVF9LSFI7CisgICAgICB9IGVsc2UKKyNlbmRpZgorICAgICAgeworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGNvbmZpZ19hdHRyaWJbaSsrXSA9IEVHTF9PUEVOR0xfRVMyX0JJVDsKKyAgICB9CisgIH0gZWxzZQogICAgIGNvbmZpZ19hdHRyaWJbaSsrXSA9IEVHTF9PUEVOR0xfQklUOwogI2lmIGRlZmluZWQoVVNFX0VHTF9SUEkpICYmIEdTVF9HTF9IQVZFX1dJTkRPV19XQVlMQU5ECiAgIC8qIFRoZSBjb25maWd1cmF0aW9ucyB3aXRoIGE9MCBzZWVtcyB0byBiZSBidWdneSB3aGVyZWFzCkBAIC0yMTAsNyArMjI3LDcgQEAKICAgfSBlbHNlIHsKICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9DT05URVhUX0VSUk9SLCBHU1RfR0xfQ09OVEVYVF9FUlJPUl9XUk9OR19DT05GSUcsCiAgICAgICAgICJGYWlsZWQgdG8gc2V0IHdpbmRvdyBjb25maWd1cmF0aW9uOiAlcyIsCi0gICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nICgpKTsKKyAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CiAgICAgZ290byBmYWlsdXJlOwogICB9CiAKQEAgLTIyMCw2ICsyMzcsNzEgQEAKICAgcmV0dXJuIEZBTFNFOwogfQogCitzdGF0aWMgRUdMQ29udGV4dAorX2NyZWF0ZV9jb250ZXh0X3dpdGhfZmxhZ3MgKEdzdEdMQ29udGV4dEVHTCAqIGVnbCwgRUdMQ29udGV4dCBzaGFyZV9jb250ZXh0LAorICAgIEdzdEdMQVBJIGdsX2FwaSwgZ2ludCBtYWpvciwgZ2ludCBtaW5vciwgZ2ludCBjb250ZXh0RmxhZ3MsCisgICAgZ2ludCBwcm9maWxlTWFzaykKK3sKKyAgZ2Jvb2xlYW4gY3JlYXRlX2NvbnRleHQ7CisjZGVmaW5lIE5fQVRUUklCUyAyMAorICBnaW50IGF0dHJpYnNbTl9BVFRSSUJTXTsKKyAgZ2ludCBuID0gMDsKKworICAvKiBmYWlsIGNyZWF0aW9uIG9mIGFwaXMvdmVyc2lvbnMvZmxhZ3MgdGhhdCByZXF1aXJlIEVHTF9LSFJfY3JlYXRlX2NvbnRleHQKKyAgICogaWYgdGhlIGV4dGVuc2lvbiBkb2Vzbid0IGV4aXN0LCBuYW1lbHk6MAorICAgKgorICAgKiAtIHByb2ZpbGUgbWFzaworICAgKiAtIGNvbnRleHQgZmxhZ3MKKyAgICogLSBHTDMgPiAzLjEKKyAgICogLSBHTEVTMiAmJiBtaW5vciA+IDAKKyAgICovCisgIGNyZWF0ZV9jb250ZXh0ID0KKyAgICAgIGdzdF9nbF9jaGVja19leHRlbnNpb24gKCJFR0xfS0hSX2NyZWF0ZV9jb250ZXh0IiwgZWdsLT5lZ2xfZXh0cyk7CisgICh2b2lkKSBjcmVhdGVfY29udGV4dDsKKyAgaWYgKCFjcmVhdGVfY29udGV4dCAmJiAocHJvZmlsZU1hc2sgfHwgY29udGV4dEZsYWdzCisgICAgICAgICAgfHwgKChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTDMpCisgICAgICAgICAgICAgICYmIEdTVF9HTF9DSEVDS19HTF9WRVJTSU9OIChtYWpvciwgbWlub3IsIDMsIDIpKQorICAgICAgICAgIHx8ICgoZ2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMikgJiYgbWlub3IgPiAwKSkpIHsKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKGVnbCwgImF0dGVtcHRpbmcgdG8gY3JlYXRlIE9wZW5HTCVzIGNvbnRleHQgdmVyc2lvbiAlZC4lZCAiCisgICAgICAiZmxhZ3MgJXggcHJvZmlsZSAleCIsIGdsX2FwaSAmIEdTVF9HTF9BUElfR0xFUzIgPyAiIEVTIiA6ICIiLCBtYWpvciwKKyAgICAgIG1pbm9yLCBjb250ZXh0RmxhZ3MsIHByb2ZpbGVNYXNrKTsKKworI2lmIGRlZmluZWQoRUdMX0tIUl9jcmVhdGVfY29udGV4dCkKKyAgaWYgKGNyZWF0ZV9jb250ZXh0KSB7CisgICAgaWYgKG1ham9yKSB7CisgICAgICBhdHRyaWJzW24rK10gPSBFR0xfQ09OVEVYVF9NQUpPUl9WRVJTSU9OX0tIUjsKKyAgICAgIGF0dHJpYnNbbisrXSA9IG1ham9yOworICAgIH0KKyAgICBpZiAobWlub3IpIHsKKyAgICAgIGF0dHJpYnNbbisrXSA9IEVHTF9DT05URVhUX01JTk9SX1ZFUlNJT05fS0hSOworICAgICAgYXR0cmlic1tuKytdID0gbWlub3I7CisgICAgfQorICAgIGlmIChjb250ZXh0RmxhZ3MpIHsKKyAgICAgIGF0dHJpYnNbbisrXSA9IEVHTF9DT05URVhUX0ZMQUdTX0tIUjsKKyAgICAgIGF0dHJpYnNbbisrXSA9IGNvbnRleHRGbGFnczsKKyAgICB9CisgICAgaWYgKHByb2ZpbGVNYXNrKSB7CisgICAgICBhdHRyaWJzW24rK10gPSBFR0xfQ09OVEVYVF9PUEVOR0xfUFJPRklMRV9NQVNLX0tIUjsKKyAgICAgIGF0dHJpYnNbbisrXSA9IHByb2ZpbGVNYXNrOworICAgIH0KKyAgfSBlbHNlCisjZW5kaWYKKyAgeworICAgIGF0dHJpYnNbbisrXSA9IEVHTF9DT05URVhUX0NMSUVOVF9WRVJTSU9OOworICAgIGF0dHJpYnNbbisrXSA9IG1ham9yOworICB9CisgIGF0dHJpYnNbbisrXSA9IEVHTF9OT05FOworCisgIGdfYXNzZXJ0IChuIDwgTl9BVFRSSUJTKTsKKyN1bmRlZiBOX0FUVFJJQlMKKworICByZXR1cm4gZWdsQ3JlYXRlQ29udGV4dCAoZWdsLT5lZ2xfZGlzcGxheSwgZWdsLT5lZ2xfY29uZmlnLCBzaGFyZV9jb250ZXh0LAorICAgICAgYXR0cmlicyk7Cit9CisKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX2NvbnRleHRfZWdsX2NyZWF0ZV9jb250ZXh0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LAogICAgIEdzdEdMQVBJIGdsX2FwaSwgR3N0R0xDb250ZXh0ICogb3RoZXJfY29udGV4dCwgR0Vycm9yICoqIGVycm9yKQpAQCAtMjI3LDExICszMDksOCBAQAogICBHc3RHTENvbnRleHRFR0wgKmVnbDsKICAgR3N0R0xXaW5kb3cgKndpbmRvdyA9IE5VTEw7CiAgIEVHTE5hdGl2ZVdpbmRvd1R5cGUgd2luZG93X2hhbmRsZSA9IChFR0xOYXRpdmVXaW5kb3dUeXBlKSAwOwotICBnaW50IGkgPSAwOwotICBFR0xpbnQgY29udGV4dF9hdHRyaWJbNV07CiAgIEVHTGludCBtYWpvclZlcnNpb247CiAgIEVHTGludCBtaW5vclZlcnNpb247Ci0gIGNvbnN0IGdjaGFyICplZ2xfZXh0czsKICAgZ2Jvb2xlYW4gbmVlZF9zdXJmYWNlID0gVFJVRTsKICAgZ3VpbnRwdHIgZXh0ZXJuYWxfZ2xfY29udGV4dCA9IDA7CiAgIEdzdEdMRGlzcGxheSAqZGlzcGxheTsKQEAgLTI1MSw3ICszMzAsOCBAQAogICAgIGV4dGVybmFsX2dsX2NvbnRleHQgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfY29udGV4dCAob3RoZXJfY29udGV4dCk7CiAgIH0KIAotICBpZiAoKGdsX2FwaSAmIChHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfR0xFUzIpKSA9PSBHU1RfR0xfQVBJX05PTkUpIHsKKyAgaWYgKChnbF9hcGkgJiAoR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMgfCBHU1RfR0xfQVBJX0dMRVMyKSkgPT0KKyAgICAgIEdTVF9HTF9BUElfTk9ORSkgewogICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX0NPTlRFWFRfRVJST1IsIEdTVF9HTF9DT05URVhUX0VSUk9SX1dST05HX0FQSSwKICAgICAgICAgIkVHTCBzdXBwb3J0cyBvcGVuZ2wgb3IgZ2xlczIiKTsKICAgICBnb3RvIGZhaWx1cmU7CkBAIC0yODgsMTEgKzM2OCwxNyBAQAogICB9IGVsc2UgewogICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX0NPTlRFWFRfRVJST1IsCiAgICAgICAgIEdTVF9HTF9DT05URVhUX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFLAotICAgICAgICAiRmFpbGVkIHRvIGluaXRpYWxpemUgZWdsOiAlcyIsIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nICgpKTsKKyAgICAgICAgIkZhaWxlZCB0byBpbml0aWFsaXplIGVnbDogJXMiLAorICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoZWdsR2V0RXJyb3IgKCkpKTsKICAgICBnb3RvIGZhaWx1cmU7CiAgIH0KIAotICBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wpIHsKKyAgZWdsLT5lZ2xfZXh0cyA9IGVnbFF1ZXJ5U3RyaW5nIChlZ2wtPmVnbF9kaXNwbGF5LCBFR0xfRVhURU5TSU9OUyk7CisKKyAgaWYgKGdsX2FwaSAmIChHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMykpIHsKKyAgICBHc3RHTEFQSSBjaG9zZW5fZ2xfYXBpID0gMDsKKyAgICBnaW50IGk7CisKICAgICAvKiBlZ2wgKyBvcGVuZ2wgb25seSBhdmFpbGFibGUgd2l0aCBFR0wgMS40KyAqLwogICAgIGlmIChtYWpvclZlcnNpb24gPT0gMSAmJiBtaW5vclZlcnNpb24gPD0gMykgewogICAgICAgaWYgKChnbF9hcGkgJiB+R1NUX0dMX0FQSV9PUEVOR0wpID09IEdTVF9HTF9BUElfTk9ORSkgewpAQCAtMzE4LDY3ICs0MDQsMTE1IEBACiAgICAgaWYgKCFlZ2xCaW5kQVBJIChFR0xfT1BFTkdMX0FQSSkpIHsKICAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX0NPTlRFWFRfRVJST1IsIEdTVF9HTF9DT05URVhUX0VSUk9SX0ZBSUxFRCwKICAgICAgICAgICAiRmFpbGVkIHRvIGJpbmQgT3BlbkdMIEFQSTogJXMiLAotICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nICgpKTsKKyAgICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoZWdsR2V0RXJyb3IgKCkpKTsKICAgICAgIGdvdG8gZmFpbHVyZTsKICAgICB9CiAKLSAgICBHU1RfSU5GTyAoIlVzaW5nIE9wZW5HTCIpOwotICAgIGVnbC0+Z2xfYXBpID0gR1NUX0dMX0FQSV9PUEVOR0w7CisgICAgR1NUX0lORk8gKCJCb3VuZCBPcGVuR0wiKTsKKworICAgIC8qIGFwaSwgdmVyc2lvbiBvbmx5IG1hdHRlcnMgZm9yIGdsZXMgKi8KKyAgICBpZiAoIWdzdF9nbF9jb250ZXh0X2VnbF9jaG9vc2VfY29uZmlnIChlZ2wsIEdTVF9HTF9BUElfT1BFTkdMLCAwLCBlcnJvcikpIHsKKyAgICAgIGdfYXNzZXJ0IChlcnJvciA9PSBOVUxMIHx8ICplcnJvciAhPSBOVUxMKTsKKyAgICAgIGdvdG8gZmFpbHVyZTsKKyAgICB9CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChvcGVuZ2xfdmVyc2lvbnMpOyBpKyspIHsKKyAgICAgIGdpbnQgcHJvZmlsZU1hc2sgPSAwOworICAgICAgZ2ludCBjb250ZXh0RmxhZ3MgPSAwOworCisgICAgICBpZiAoR1NUX0dMX0NIRUNLX0dMX1ZFUlNJT04gKG9wZW5nbF92ZXJzaW9uc1tpXS5tYWpvciwKKyAgICAgICAgICAgICAgb3BlbmdsX3ZlcnNpb25zW2ldLm1pbm9yLCAzLCAyKSkgeworICAgICAgICAvKiBza2lwIGdsMyBjb250ZXh0cyBpZiByZXF1ZXN0ZWQgKi8KKyAgICAgICAgaWYgKChnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTDMpID09IDApCisgICAgICAgICAgY29udGludWU7CisKKyAgICAgICAgY2hvc2VuX2dsX2FwaSA9IEdTVF9HTF9BUElfT1BFTkdMMzsKKyNpZiBkZWZpbmVkKEVHTF9LSFJfY3JlYXRlX2NvbnRleHQpCisgICAgICAgIHByb2ZpbGVNYXNrIHw9IEVHTF9DT05URVhUX09QRU5HTF9DT1JFX1BST0ZJTEVfQklUX0tIUjsKKyAgICAgICAgY29udGV4dEZsYWdzIHw9IEVHTF9DT05URVhUX09QRU5HTF9ERUJVR19CSVRfS0hSOworI2VuZGlmCisgICAgICB9IGVsc2UgaWYgKG9wZW5nbF92ZXJzaW9uc1tpXS5tYWpvciA9PSAzICYmIG9wZW5nbF92ZXJzaW9uc1tpXS5taW5vciA9PSAxKSB7CisgICAgICAgIC8qIHNraXAgMy4xLCB0aGUgaW1wbGVtZW50YXRpb24gaXMgZnJlZSB0byBnaXZlIHVzIGVpdGhlciBhIGNvcmUgb3IgYQorICAgICAgICAgKiBjb21wYXRpYmlsaXR5IGNvbnRleHQgKHdlIGhhdmUgbm8gc2F5KSAqLworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8qIHNraXAgbGVnYWN5IGNvbnRleHRzIGlmIHJlcXVlc3RlZCAqLworICAgICAgICBpZiAoKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMKSA9PSAwKQorICAgICAgICAgIGNvbnRpbnVlOworCisgICAgICAgIGNob3Nlbl9nbF9hcGkgPSBHU1RfR0xfQVBJX09QRU5HTDsKKyAgICAgIH0KKworICAgICAgZWdsLT5lZ2xfY29udGV4dCA9CisgICAgICAgICAgX2NyZWF0ZV9jb250ZXh0X3dpdGhfZmxhZ3MgKGVnbCwgKEVHTENvbnRleHQpIGV4dGVybmFsX2dsX2NvbnRleHQsCisgICAgICAgICAgY2hvc2VuX2dsX2FwaSwgb3BlbmdsX3ZlcnNpb25zW2ldLm1ham9yLAorICAgICAgICAgIG9wZW5nbF92ZXJzaW9uc1tpXS5taW5vciwgY29udGV4dEZsYWdzLCBwcm9maWxlTWFzayk7CisKKyAgICAgIGlmIChlZ2wtPmVnbF9jb250ZXh0KQorICAgICAgICBicmVhazsKKworI2lmIGRlZmluZWQoRUdMX0tIUl9jcmVhdGVfY29udGV4dCkKKyAgICAgIHByb2ZpbGVNYXNrICY9IH5FR0xfQ09OVEVYVF9PUEVOR0xfREVCVUdfQklUX0tIUjsKKworICAgICAgZWdsLT5lZ2xfY29udGV4dCA9CisgICAgICAgICAgX2NyZWF0ZV9jb250ZXh0X3dpdGhfZmxhZ3MgKGVnbCwgKEVHTENvbnRleHQpIGV4dGVybmFsX2dsX2NvbnRleHQsCisgICAgICAgICAgY2hvc2VuX2dsX2FwaSwgb3BlbmdsX3ZlcnNpb25zW2ldLm1ham9yLAorICAgICAgICAgIG9wZW5nbF92ZXJzaW9uc1tpXS5taW5vciwgY29udGV4dEZsYWdzLCBwcm9maWxlTWFzayk7CisKKyAgICAgIGlmIChlZ2wtPmVnbF9jb250ZXh0KQorICAgICAgICBicmVhazsKKyNlbmRpZgorICAgIH0KKworICAgIGVnbC0+Z2xfYXBpID0gY2hvc2VuX2dsX2FwaTsKICAgfSBlbHNlIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyKSB7CisgICAgZ2ludCBpOworCiAgIHRyeV9nbGVzMjoKICAgICBpZiAoIWVnbEJpbmRBUEkgKEVHTF9PUEVOR0xfRVNfQVBJKSkgewogICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfQ09OVEVYVF9FUlJPUiwgR1NUX0dMX0NPTlRFWFRfRVJST1JfRkFJTEVELAogICAgICAgICAgICJGYWlsZWQgdG8gYmluZCBPcGVuR0x8RVMgQVBJOiAlcyIsCi0gICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nIChlZ2xHZXRFcnJvciAoKSkpOwogICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KIAotICAgIEdTVF9JTkZPICgiVXNpbmcgT3BlbkdMfEVTIDIuMCIpOworICAgIEdTVF9JTkZPICgiQm91bmQgT3BlbkdMfEVTIik7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChnbGVzMl92ZXJzaW9ucyk7IGkrKykgeworICAgICAgZ2ludCBwcm9maWxlTWFzayA9IDA7CisgICAgICBnaW50IGNvbnRleHRGbGFncyA9IDA7CisKKyAgICAgIGlmICghZ3N0X2dsX2NvbnRleHRfZWdsX2Nob29zZV9jb25maWcgKGVnbCwgR1NUX0dMX0FQSV9HTEVTMiwKKyAgICAgICAgICAgICAgZ2xlczJfdmVyc2lvbnNbaV0ubWFqb3IsIGVycm9yKSkgeworICAgICAgICBjb250aW51ZTsKKyAgICAgIH0KKyNpZiBkZWZpbmVkKEVHTF9LSFJfY3JlYXRlX2NvbnRleHQpCisgICAgICAvKiB0cnkgYSBkZWJ1ZyBjb250ZXh0ICovCisgICAgICBjb250ZXh0RmxhZ3MgfD0gRUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHX0JJVF9LSFI7CisKKyAgICAgIGVnbC0+ZWdsX2NvbnRleHQgPQorICAgICAgICAgIF9jcmVhdGVfY29udGV4dF93aXRoX2ZsYWdzIChlZ2wsIChFR0xDb250ZXh0KSBleHRlcm5hbF9nbF9jb250ZXh0LAorICAgICAgICAgIEdTVF9HTF9BUElfR0xFUzIsIGdsZXMyX3ZlcnNpb25zW2ldLm1ham9yLAorICAgICAgICAgIGdsZXMyX3ZlcnNpb25zW2ldLm1pbm9yLCBjb250ZXh0RmxhZ3MsIHByb2ZpbGVNYXNrKTsKKworICAgICAgaWYgKGVnbC0+ZWdsX2NvbnRleHQpCisgICAgICAgIGJyZWFrOworCisgICAgICAvKiB0cnkgd2l0aG91dCBhIGRlYnVnIGNvbnRleHQgKi8KKyAgICAgIGNvbnRleHRGbGFncyAmPSB+RUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHX0JJVF9LSFI7CisjZW5kaWYKKworICAgICAgZWdsLT5lZ2xfY29udGV4dCA9CisgICAgICAgICAgX2NyZWF0ZV9jb250ZXh0X3dpdGhfZmxhZ3MgKGVnbCwgKEVHTENvbnRleHQpIGV4dGVybmFsX2dsX2NvbnRleHQsCisgICAgICAgICAgR1NUX0dMX0FQSV9HTEVTMiwgZ2xlczJfdmVyc2lvbnNbaV0ubWFqb3IsCisgICAgICAgICAgZ2xlczJfdmVyc2lvbnNbaV0ubWlub3IsIGNvbnRleHRGbGFncywgcHJvZmlsZU1hc2spOworCisgICAgICBpZiAoZWdsLT5lZ2xfY29udGV4dCkKKyAgICAgICAgYnJlYWs7CisgICAgfQogICAgIGVnbC0+Z2xfYXBpID0gR1NUX0dMX0FQSV9HTEVTMjsKICAgfQogCi0gIGlmICghZ3N0X2dsX2NvbnRleHRfZWdsX2Nob29zZV9jb25maWcgKGVnbCwgb3RoZXJfY29udGV4dCwgZXJyb3IpKSB7Ci0gICAgZ19hc3NlcnQgKGVycm9yID09IE5VTEwgfHwgKmVycm9yICE9IE5VTEwpOwotICAgIGdvdG8gZmFpbHVyZTsKLSAgfQotCi0gIGVnbF9leHRzID0gZWdsUXVlcnlTdHJpbmcgKGVnbC0+ZWdsX2Rpc3BsYXksIEVHTF9FWFRFTlNJT05TKTsKLQotICBHU1RfREVCVUcgKCJhYm91dCB0byBjcmVhdGUgZ2wgY29udGV4dCIpOwotCi0gIGlmIChlZ2wtPmdsX2FwaSAmIEdTVF9HTF9BUElfR0xFUzIpIHsKLSAgICBjb250ZXh0X2F0dHJpYltpKytdID0gRUdMX0NPTlRFWFRfQ0xJRU5UX1ZFUlNJT047Ci0gICAgY29udGV4dF9hdHRyaWJbaSsrXSA9IDI7Ci0gIH0KLSNpZiAhZGVmaW5lZChHU1RfRElTQUJMRV9HU1RfREVCVUcpICYmIGRlZmluZWQoRUdMX0tIUl9jcmVhdGVfY29udGV4dCkKLSAgaWYgKGdzdF9nbF9jaGVja19leHRlbnNpb24gKCJFR0xfS0hSX2NyZWF0ZV9jb250ZXh0IiwgZWdsX2V4dHMpKSB7Ci0gICAgY29udGV4dF9hdHRyaWJbaSsrXSA9IEVHTF9DT05URVhUX0ZMQUdTX0tIUjsKLSAgICBjb250ZXh0X2F0dHJpYltpKytdID0gRUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHX0JJVF9LSFI7Ci0gIH0KLSNlbmRpZgotICBjb250ZXh0X2F0dHJpYltpKytdID0gRUdMX05PTkU7Ci0KLSAgZWdsLT5lZ2xfY29udGV4dCA9Ci0gICAgICBlZ2xDcmVhdGVDb250ZXh0IChlZ2wtPmVnbF9kaXNwbGF5LCBlZ2wtPmVnbF9jb25maWcsCi0gICAgICAoRUdMQ29udGV4dCkgZXh0ZXJuYWxfZ2xfY29udGV4dCwgY29udGV4dF9hdHRyaWIpOwotCi0jaWZkZWYgRUdMX0tIUl9jcmVhdGVfY29udGV4dAotICBpZiAoZWdsLT5lZ2xfY29udGV4dCA9PSBFR0xfTk9fQ09OVEVYVCAmJiBlZ2wtPmdsX2FwaSAmIEdTVF9HTF9BUElfR0xFUzIKLSAgICAgICYmIGVnbEdldEVycm9yICgpICE9IEVHTF9TVUNDRVNTKSB7Ci0gICAgLyogdHJ5IHdpdGhvdXQgRUdMX0NPTlRFWFRfRkxBR1MgZmxhZ3MgYXMgaXQgd2FzIGFkZGVkIHRvCi0gICAgICogRUdMX0tIUl9jcmVhdGVfY29udGV4dCBmb3IgZ2xlcyBjb250ZXh0cyAqLwotICAgIGludCBpOwotICAgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGNvbnRleHRfYXR0cmliKTsgaSsrKSB7Ci0gICAgICBpZiAoY29udGV4dF9hdHRyaWJbaV0gPT0gRUdMX0NPTlRFWFRfRkxBR1NfS0hSIHx8Ci0gICAgICAgICAgY29udGV4dF9hdHRyaWJbaV0gPT0gRUdMX0NPTlRFWFRfT1BFTkdMX0RFQlVHX0JJVF9LSFIpCi0gICAgICAgIGNvbnRleHRfYXR0cmliW2ldID0gRUdMX05PTkU7Ci0gICAgfQotICAgIGVnbC0+ZWdsX2NvbnRleHQgPQotICAgICAgICBlZ2xDcmVhdGVDb250ZXh0IChlZ2wtPmVnbF9kaXNwbGF5LCBlZ2wtPmVnbF9jb25maWcsCi0gICAgICAgIChFR0xDb250ZXh0KSBleHRlcm5hbF9nbF9jb250ZXh0LCBjb250ZXh0X2F0dHJpYik7Ci0gIH0KLSNlbmRpZgotCiAgIGlmIChlZ2wtPmVnbF9jb250ZXh0ICE9IEVHTF9OT19DT05URVhUKSB7CiAgICAgR1NUX0lORk8gKCJnbCBjb250ZXh0IGNyZWF0ZWQ6ICUiIEdfR1VJTlRQVFJfRk9STUFULAogICAgICAgICAoZ3VpbnRwdHIpIGVnbC0+ZWdsX2NvbnRleHQpOwpAQCAtMzg2LDMwICs1MjAsMzAgQEAKICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9DT05URVhUX0VSUk9SLAogICAgICAgICBHU1RfR0xfQ09OVEVYVF9FUlJPUl9DUkVBVEVfQ09OVEVYVCwKICAgICAgICAgIkZhaWxlZCB0byBjcmVhdGUgYSBPcGVuR0wgY29udGV4dDogJXMiLAotICAgICAgICBnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X2Vycm9yX3N0cmluZyAoKSk7CisgICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nIChlZ2xHZXRFcnJvciAoKSkpOwogICAgIGdvdG8gZmFpbHVyZTsKICAgfQogICAvKiBGSVhNRSBkbyB3ZSB3YW50IGEgd2luZG93IHZmdW5jID8gKi8KICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfWDExCi0gIGlmIChHU1RfR0xfSVNfV0lORE9XX1gxMSAoY29udGV4dC0+d2luZG93KSkgeworICBpZiAoR1NUX0lTX0dMX1dJTkRPV19YMTEgKGNvbnRleHQtPndpbmRvdykpIHsKICAgICBnc3RfZ2xfd2luZG93X3gxMV9jcmVhdGVfd2luZG93ICgoR3N0R0xXaW5kb3dYMTEgKikgY29udGV4dC0+d2luZG93KTsKICAgfQogI2VuZGlmCiAKICAgaWYgKG90aGVyX2NvbnRleHQgPT0gTlVMTCkgewogI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19XQVlMQU5ECi0gICAgaWYgKEdTVF9HTF9JU19XSU5ET1dfV0FZTEFORF9FR0wgKGNvbnRleHQtPndpbmRvdykpIHsKKyAgICBpZiAoR1NUX0lTX0dMX1dJTkRPV19XQVlMQU5EX0VHTCAoY29udGV4dC0+d2luZG93KSkgewogICAgICAgZ3N0X2dsX3dpbmRvd193YXlsYW5kX2VnbF9jcmVhdGVfd2luZG93ICgoR3N0R0xXaW5kb3dXYXlsYW5kRUdMICopCiAgICAgICAgICAgY29udGV4dC0+d2luZG93KTsKICAgICB9CiAjZW5kaWYKICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfV0lOMzIKLSAgICBpZiAoR1NUX0dMX0lTX1dJTkRPV19XSU4zMiAoY29udGV4dC0+d2luZG93KSkgeworICAgIGlmIChHU1RfSVNfR0xfV0lORE9XX1dJTjMyIChjb250ZXh0LT53aW5kb3cpKSB7CiAgICAgICBnc3RfZ2xfd2luZG93X3dpbjMyX2NyZWF0ZV93aW5kb3cgKChHc3RHTFdpbmRvd1dpbjMyICopIGNvbnRleHQtPndpbmRvdyk7CiAgICAgfQogI2VuZGlmCiAjaWYgR1NUX0dMX0hBVkVfV0lORE9XX0RJU1BNQU5YCi0gICAgaWYgKEdTVF9HTF9JU19XSU5ET1dfRElTUE1BTlhfRUdMIChjb250ZXh0LT53aW5kb3cpKSB7CisgICAgaWYgKEdTVF9JU19HTF9XSU5ET1dfRElTUE1BTlhfRUdMIChjb250ZXh0LT53aW5kb3cpKSB7CiAgICAgICBnc3RfZ2xfd2luZG93X2Rpc3BtYW54X2VnbF9jcmVhdGVfd2luZG93ICgoR3N0R0xXaW5kb3dEaXNwbWFueEVHTCAqKQogICAgICAgICAgIGNvbnRleHQtPndpbmRvdyk7CiAgICAgfQpAQCAtNDI4LDcgKzU2Miw4IEBACiAgICAgICAgIHdpbmRvd19oYW5kbGUsIE5VTEwpOwogICAgIC8qIFN0b3JlIHdpbmRvdyBoYW5kbGUgZm9yIGxhdGVyIGNvbXBhcmlzaW9uICovCiAgICAgZWdsLT53aW5kb3dfaGFuZGxlID0gd2luZG93X2hhbmRsZTsKLSAgfSBlbHNlIGlmICghZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoIkVHTF9LSFJfc3VyZmFjZWxlc3NfY29udGV4dCIsIGVnbF9leHRzKSkgeworICB9IGVsc2UgaWYgKCFnc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uICgiRUdMX0tIUl9zdXJmYWNlbGVzc19jb250ZXh0IiwKKyAgICAgICAgICBlZ2wtPmVnbF9leHRzKSkgewogICAgIEVHTGludCBzdXJmYWNlX2F0dHJpYls3XTsKICAgICBnaW50IGogPSAwOwogCkBAIC00NTgsNyArNTkzLDcgQEAKICAgICB9IGVsc2UgewogICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfQ09OVEVYVF9FUlJPUiwgR1NUX0dMX0NPTlRFWFRfRVJST1JfRkFJTEVELAogICAgICAgICAgICJGYWlsZWQgdG8gY3JlYXRlIHdpbmRvdyBzdXJmYWNlOiAlcyIsCi0gICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nIChlZ2xHZXRFcnJvciAoKSkpOwogICAgICAgZ290byBmYWlsdXJlOwogICAgIH0KICAgfQpAQCAtNDY5LDcgKzYwNCw3IEBACiAgICAgICAgICJlZ2xDcmVhdGVJbWFnZSIpOwogICAgIGVnbC0+ZWdsRGVzdHJveUltYWdlID0gZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzcyAoY29udGV4dCwKICAgICAgICAgImVnbERlc3Ryb3lJbWFnZSIpOwotICB9IGVsc2UgaWYgKGdzdF9nbF9jaGVja19leHRlbnNpb24gKCJFR0xfS0hSX2ltYWdlX2Jhc2UiLCBlZ2xfZXh0cykpIHsKKyAgfSBlbHNlIGlmIChnc3RfZ2xfY2hlY2tfZXh0ZW5zaW9uICgiRUdMX0tIUl9pbWFnZV9iYXNlIiwgZWdsLT5lZ2xfZXh0cykpIHsKICAgICBlZ2wtPmVnbENyZWF0ZUltYWdlID0gZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzcyAoY29udGV4dCwKICAgICAgICAgImVnbENyZWF0ZUltYWdlS0hSIik7CiAgICAgZWdsLT5lZ2xEZXN0cm95SW1hZ2UgPSBnc3RfZ2xfY29udGV4dF9nZXRfcHJvY19hZGRyZXNzIChjb250ZXh0LApAQCAtNTQwLDcgKzY3NSw3IEBACiAgICAgICAgIGVnbC0+ZWdsX3N1cmZhY2UgPSBFR0xfTk9fU1VSRkFDRTsKICAgICAgICAgaWYgKCFyZXN1bHQpIHsKICAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChjb250ZXh0LCAiRmFpbGVkIHRvIGRlc3Ryb3kgb2xkIHdpbmRvdyBzdXJmYWNlOiAlcyIsCi0gICAgICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nICgpKTsKKyAgICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CiAgICAgICAgICAgZ290byBkb25lOwogICAgICAgICB9CiAgICAgICB9CkBAIC01NTEsMjEgKzY4NiwyMiBAQAogCiAgICAgICBpZiAoZWdsLT5lZ2xfc3VyZmFjZSA9PSBFR0xfTk9fU1VSRkFDRSkgewogICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChjb250ZXh0LCAiRmFpbGVkIHRvIGNyZWF0ZSB3aW5kb3cgc3VyZmFjZTogJXMiLAotICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKCkpOworICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CiAgICAgICAgIHJlc3VsdCA9IEZBTFNFOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgICB9CiAgICAgfQogICAgIHJlc3VsdCA9IGVnbE1ha2VDdXJyZW50IChlZ2wtPmVnbF9kaXNwbGF5LCBlZ2wtPmVnbF9zdXJmYWNlLAogICAgICAgICBlZ2wtPmVnbF9zdXJmYWNlLCBlZ2wtPmVnbF9jb250ZXh0KTsKLSAgfSBlbHNlCisgIH0gZWxzZSB7CiAgICAgcmVzdWx0ID0gZWdsTWFrZUN1cnJlbnQgKGVnbC0+ZWdsX2Rpc3BsYXksIEVHTF9OT19TVVJGQUNFLAogICAgICAgICBFR0xfTk9fU1VSRkFDRSwgRUdMX05PX0NPTlRFWFQpOworICB9CiAKICAgaWYgKCFyZXN1bHQpIHsKICAgICBHU1RfRVJST1JfT0JKRUNUIChjb250ZXh0LAogICAgICAgICAiRmFpbGVkIHRvIGJpbmQgY29udGV4dCB0byB0aGUgY3VycmVudCByZW5kZXJpbmcgdGhyZWFkOiAlcyIsCi0gICAgICAgIGdzdF9nbF9jb250ZXh0X2VnbF9nZXRfZXJyb3Jfc3RyaW5nICgpKTsKKyAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKGVnbEdldEVycm9yICgpKSk7CiAgIH0KIAogZG9uZToKQEAgLTYxMCw3ICs3NDYsNyBAQAogI2Vsc2UKICAgLyogT24gTGludXggdGhlIC5zbyBpcyBvbmx5IGluIC1kZXYgcGFja2FnZXMsIHRyeSB3aXRoIGEgcmVhbCBzb25hbWUKICAgICogUHJvcGVyIGNvbXBpbGVycyB3aWxsIG9wdGltaXplIGF3YXkgdGhlIHN0cmNtcCAqLwotICBpZiAoc3RyY21wIChHX01PRFVMRV9TVUZGSVgsICJzbyIpID09IDApCisgIGlmIChnX3N0cmNtcDAgKEdfTU9EVUxFX1NVRkZJWCwgInNvIikgPT0gMCkKICAgICBtb2R1bGVfZWdsID0gZ19tb2R1bGVfb3BlbiAoImxpYkVHTC5zby4xIiwgR19NT0RVTEVfQklORF9MQVpZKTsKIAogICAvKiBUaGlzIGF1dG9tYXRpY2FsbHkgaGFuZGxlcyB0aGUgc3VmZml4IGFuZCBldmVuIC5sYSBmaWxlcyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2VnbC9nc3RnbGNvbnRleHRfZWdsLmggYi9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaAppbmRleCA4OGI4YmQ3Li45MGFiYjAzIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZWdsL2dzdGdsY29udGV4dF9lZ2wuaApAQCAtMzQsOCArMzQsOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9DT05URVhUX0VHTCAgICAgICAgIChnc3RfZ2xfY29udGV4dF9lZ2xfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfRUdMKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0VHTCwgR3N0R0xDb250ZXh0RUdMKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfRUdMX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9FR0wsIEdzdEdMQ29udGV4dEVHTENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFRfRUdMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0VHTCkpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUX0VHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9FR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9FR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfRUdMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0NPTlRFWFRfRUdMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0VHTCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0VHTF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX0VHTCwgR3N0R0xDb250ZXh0RUdMQ2xhc3MpKQogCiBzdHJ1Y3QgX0dzdEdMQ29udGV4dEVHTCB7CkBAIC00OCw2ICs0OCw4IEBACiAKICAgR3N0R0xBUEkgZ2xfYXBpOwogCisgIGNvbnN0IGdjaGFyICplZ2xfZXh0czsKKwogICBFR0xJbWFnZUtIUiAoKmVnbENyZWF0ZUltYWdlKSAoRUdMRGlzcGxheSBkcHksIEVHTENvbnRleHQgY3R4LCBFR0xlbnVtIHRhcmdldCwKICAgICAgIEVHTENsaWVudEJ1ZmZlciBidWZmZXIsIGNvbnN0IEVHTGludCAqYXR0cmliX2xpc3QpOwogICBFR0xCb29sZWFuICgqZWdsRGVzdHJveUltYWdlKSAoRUdMRGlzcGxheSBkcHksIEVHTEltYWdlS0hSIGltYWdlKTsKQEAgLTY0LDYgKzY2LDkgQEAKIGd1aW50cHRyICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9jdXJyZW50X2NvbnRleHQgICh2b2lkKTsKIGdwb2ludGVyICAgICAgICAgICAgZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9wcm9jX2FkZHJlc3MgICAgIChHc3RHTEFQSSBnbF9hcGksIGNvbnN0IGdjaGFyICogbmFtZSk7CiAKK2NvbnN0IGdjaGFyICogZ3N0X2dsX2NvbnRleHRfZWdsX2dldF9lcnJvcl9zdHJpbmcgKEVHTGludCBlcnIpOworCisKIC8qIFRPRE86CiAgKiBhZGQgc3VwcG9ydCBmb3IgRUdMX05PX0NPTlRFWFQKICAqIGFkZCBnc3RfZ2xfY29udGV4dF9lZ2xfbmV3X2dsX25vX2NvbnRleHQgdGhhdCBvbmx5IG1hbmFnZXMgdGhlIGRpc3BsYXkKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nbC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dsLmgKaW5kZXggNGIxZThlZi4uYjE3YTRjNiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dsLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dsLmgKQEAgLTMxLDIzICszMSwyOCBAQAogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGFwaS5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGRpc3BsYXkuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb250ZXh0Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZGVidWcuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xmZWF0dXJlLmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZm9ybWF0Lmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsdXRpbHMuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2x3aW5kb3cuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzbHN0YWdlLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsc2hhZGVyLmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsc2hhZGVyc3RyaW5ncy5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGNvbG9yY29udmVydC5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHVwbG9hZC5oPgotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHVwbG9hZG1ldGEuaD4KLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xkb3dubG9hZC5oPgotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGJhc2VidWZmZXIuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYnVmZmVyLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZyYW1lYnVmZmVyLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYmFzZWZpbHRlci5oPgogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHZpZXdjb252ZXJ0Lmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZmlsdGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsc3luY21ldGEuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5oPgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHF1ZXJ5Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5oPgogCiAjZW5kaWYgLyogX19HU1RfR0xfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9NYWtlZmlsZS5hbQppbmRleCA2ZWE5MGRiLi41NGViYzI3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL01ha2VmaWxlLmFtCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUuYW0KQEAgLTE1LDUgKzE1LDYgQEAKIAlkZWJ1Zy5oIFwKIAl2YW8uaCBcCiAJc3luYy5oIFwKLQlidWZmZXJzLmgKKwlidWZmZXJzLmggXAorCXF1ZXJ5LmgKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvTWFrZWZpbGUuaW4KaW5kZXggMTk1OGJhOS4uNTBkN2RmNiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQocHJvdG90eXBlX0hFQURFUlMpIFwKQEAgLTIzNyw2ICsyMzYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI3NCw2ICsyNzUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4Miw3ICsyODUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDEsOCArMzAzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMxOSwxNiArMzIyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM1NCw2ICszNTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zNzksNiArMzg1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDgwLDYgKzQ4OCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00OTMsOCArNTAyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTEwLDYgKzUxNyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NjcsMTYgKzU3NiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYyOCw2ICs2MzksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjM4LDYgKzY1MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY0Nyw2ICs2NjAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjg0LDcgKzY5OSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzQwLDcgKzc1NCw4IEBACiAJZGVidWcuaCBcCiAJdmFvLmggXAogCXN5bmMuaCBcCi0JYnVmZmVycy5oCisJYnVmZmVycy5oIFwKKwlxdWVyeS5oCiAKIGFsbDogYWxsLWFtCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYWxsX2Z1bmN0aW9ucy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9hbGxfZnVuY3Rpb25zLmgKaW5kZXggYzZhZjQxNS4uOWY3ZTRmMSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9hbGxfZnVuY3Rpb25zLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9hbGxfZnVuY3Rpb25zLmgKQEAgLTMwLDMgKzMwLDQgQEAKICNpbmNsdWRlICJ2YW8uaCIKICNpbmNsdWRlICJzeW5jLmgiCiAjaW5jbHVkZSAiYnVmZmVycy5oIgorI2luY2x1ZGUgInF1ZXJ5LmgiCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2Jhc2UuaCBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYmFzZS5oCmluZGV4IGYwNTI4YjcuLjgzOTRhMzggMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYmFzZS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvYmFzZS5oCkBAIC0yNTUsNyArMjU1LDcgQEAKICAgICAgICAgICAgICAgICAgICJBUkJcMCIsCiAgICAgICAgICAgICAgICAgICAidmVydGV4X2J1ZmZlcl9vYmplY3RcMCIpCiBHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBHZW5CdWZmZXJzLAotICAgICAgICAgICAgICAgICAgICAgKEdMdWludAkJIG4sCisgICAgICAgICAgICAgICAgICAgICAoR0xzaXplaQkJIG4sCiAgICAgICAgICAgICAgICAgICAgICAgR0x1aW50CQkqYnVmZmVycykpCiBHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBCaW5kQnVmZmVyLAogICAgICAgICAgICAgICAgICAgICAgKEdMZW51bQkJIHRhcmdldCwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvZGVidWcuaCBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvZGVidWcuaAppbmRleCA2YzUzZWEyLi4xMzVkNGU2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2RlYnVnLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9kZWJ1Zy5oCkBAIC0zNCw2ICszNCw3IEBACiBHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBEZWJ1Z01lc3NhZ2VJbnNlcnQsCiAgICAgICAgICAgICAgICAgICAgICAoR0xlbnVtIHNvdXJjZSwKICAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQgaWQsCiAgICAgICAgICAgICAgICAgICAgICAgR0xlbnVtIHNldmVyaXR5LAogICAgICAgICAgICAgICAgICAgICAgIEdMc2l6ZWkgbGVuZ3RoLAogICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICptZXNzYWdlKSkKQEAgLTUyLDcgKzUzLDcgQEAKIEdTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEdldFBvaW50ZXJ2LAogICAgICAgICAgICAgICAgICAgICAgKEdMZW51bSBwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciAqIHBhcmFtcykpCi1HU1RfR0xfRVhUX0VORCAoKSAgICAgICAgICAgICAgICAgICAgICAKK0dTVF9HTF9FWFRfRU5EICgpCiAKIEdTVF9HTF9FWFRfQkVHSU4gKGtocl9kZWJ1ZywKICAgICAgICAgICAgICAgICAgIEdTVF9HTF9BUElfT1BFTkdMMywKQEAgLTg4LDMgKzg5LDI5IEBACiAgICAgICAgICAgICAgICAgICAgICAgZ2NoYXIgKmxhYmVsKSkKIEdTVF9HTF9FWFRfRU5EICgpCiAKK0dTVF9HTF9FWFRfQkVHSU4gKGV4dF9kZWJ1Z19tYXJrZXIsCisgICAgICAgICAgICAgICAgICBHU1RfR0xfQVBJX05PTkUsCisgICAgICAgICAgICAgICAgICAyNTUsIDI1NSwKKyAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgIkVYVFwwIiwKKyAgICAgICAgICAgICAgICAgICJkZWJ1Z19tYXJrZXJcMCIpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBJbnNlcnRFdmVudE1hcmtlciwKKyAgICAgICAgICAgICAgICAgICAgIChHTHNpemVpIGxlbmd0aCwKKyAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIG1lc3NhZ2UpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgUHVzaEdyb3VwTWFya2VyLAorICAgICAgICAgICAgICAgICAgICAgKEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogbWVzc2FnZSkpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBQb3BHcm91cE1hcmtlciwKKyAgICAgICAgICAgICAgICAgICAgICh2b2lkKSkKK0dTVF9HTF9FWFRfRU5EICgpCisKK0dTVF9HTF9FWFRfQkVHSU4gKGdyZW1lZHlfc3RyaW5nX21hcmtlciwKKyAgICAgICAgICAgICAgICAgIEdTVF9HTF9BUElfTk9ORSwKKyAgICAgICAgICAgICAgICAgIDI1NSwgMjU1LAorICAgICAgICAgICAgICAgICAgMjU1LCAyNTUsCisgICAgICAgICAgICAgICAgICAiR1JFTUVEWVwwIiwKKyAgICAgICAgICAgICAgICAgICJzdHJpbmdfbWFya2VyXDAiKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgU3RyaW5nTWFya2VyLAorICAgICAgICAgICAgICAgICAgICAgKEdMc2l6ZWkgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogbWVzc2FnZSkpCitHU1RfR0xfRVhUX0VORCAoKQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9nc3RnbF9jb21wYXQuaCBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvZ3N0Z2xfY29tcGF0LmgKaW5kZXggYTRmOTYzZC4uMzFiMWUwMCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9nc3RnbF9jb21wYXQuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ2xwcm90b3R5cGVzL2dzdGdsX2NvbXBhdC5oCkBAIC00Miw2ICs0Miw5IEBACiAjaWYgIUdTVF9HTF9IQVZFX0dMVUlOVDY0CiB0eXBlZGVmIGd1aW50NjQgR0x1aW50NjQ7CiAjZW5kaWYKKyNpZiAhR1NUX0dMX0hBVkVfR0xJTlQ2NAordHlwZWRlZiBnaW50NjQgR0xpbnQ2NDsKKyNlbmRpZgogCiAjaWYgIWRlZmluZWQoR1NUX0dMX0RFQlVHX1BST0MpCiAjaWYgZGVmaW5lZChHTERFQlVHUFJPQykKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvcXVlcnkuaCBiL2dzdC1saWJzL2dzdC9nbC9nbHByb3RvdHlwZXMvcXVlcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWYxYmEyCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dscHJvdG90eXBlcy9xdWVyeS5oCkBAIC0wLDAgKzEsNjMgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworR1NUX0dMX0VYVF9CRUdJTiAodGltZXJfcXVlcnksCisgICAgICAgICAgICAgICAgICBHU1RfR0xfQVBJX09QRU5HTDMsCisgICAgICAgICAgICAgICAgICAzLCAzLAorICAgICAgICAgICAgICAgICAgMywgMCwKKyAgICAgICAgICAgICAgICAgICJBUkI6XDBBTkdMRVwwRVhUXDAiLAorICAgICAgICAgICAgICAgICAgInRpbWVyX3F1ZXJ5XDBkaXNqb2ludF90aW1lcl9xdWVyeVwwIikKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEdlblF1ZXJpZXMsCisgICAgICAgICAgICAgICAgICAgICAoR0xzaXplaSBuLAorICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppZHMpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgRGVsZXRlUXVlcmllcywKKyAgICAgICAgICAgICAgICAgICAgIChHTHNpemVpIG4sCisgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICppZHMpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAoR0xib29sZWFuLCBJc1F1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgKEdMdWludCBpZCkpCitHU1RfR0xfRVhUX0ZVTkNUSU9OICh2b2lkLCBCZWdpblF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgKEdMZW51bSB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgR0x1aW50IGlkKSkKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEVuZFF1ZXJ5LAorICAgICAgICAgICAgICAgICAgICAgKEdMZW51bSB0YXJnZXQpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgUXVlcnlDb3VudGVyLAorICAgICAgICAgICAgICAgICAgICAgKEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgIEdMZW51bSB0YXJnZXQpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgR2V0UXVlcnlpdiwKKyAgICAgICAgICAgICAgICAgICAgIChHTGVudW0gdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKSkKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEdldFF1ZXJ5T2JqZWN0aXYsCisgICAgICAgICAgICAgICAgICAgICAoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBHTGludCAqcGFyYW1zKSkKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEdldFF1ZXJ5T2JqZWN0dWl2LAorICAgICAgICAgICAgICAgICAgICAgKEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgR0x1aW50ICpwYXJhbXMpKQorR1NUX0dMX0VYVF9GVU5DVElPTiAodm9pZCwgR2V0UXVlcnlPYmplY3RpNjR2LAorICAgICAgICAgICAgICAgICAgICAgKEdMdWludCBpZCwKKyAgICAgICAgICAgICAgICAgICAgICBHTGVudW0gcG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAgR0xpbnQ2NCAqcGFyYW1zKSkKK0dTVF9HTF9FWFRfRlVOQ1RJT04gKHZvaWQsIEdldFF1ZXJ5T2JqZWN0dWk2NHYsCisgICAgICAgICAgICAgICAgICAgICAoR0x1aW50IGlkLAorICAgICAgICAgICAgICAgICAgICAgIEdMZW51bSBwbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICBHTHVpbnQ2NCAqcGFyYW1zKSkKK0dTVF9HTF9FWFRfRU5EICgpCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZW51bXMuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbF9lbnVtcy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1YzdiMzkKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZW51bXMuaApAQCAtMCwwICsxLDQxIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dTVF9HTF9FTlVNU19IXworI2RlZmluZSBfR1NUX0dMX0VOVU1TX0hfCisKKy8qKgorICogR3N0R0xUZXh0dXJlVGFyZ2V0OgorICogQEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FOiBubyB0ZXh0dXJlIHRhcmdldAorICogQEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDogMkQgdGV4dHVyZSB0YXJnZXQKKyAqIEBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFOiByZWN0YW5nbGUgdGV4dHVyZSB0YXJnZXQKKyAqIEBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOiBleHRlcm5hbCBvZXMgdGV4dHVyZSB0YXJnZXQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZW51bQoreworICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORSwKKyAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJELAorICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFLAorICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTLAorfSBHc3RHTFRleHR1cmVUYXJnZXQ7CisKKyNlbmRpZiAvKiBfR1NUX0dMX0VOVU1TX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xfZndkLmgKaW5kZXggY2IyOWM2ZC4uZmI2NGZmNiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsX2Z3ZC5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbF9md2QuaApAQCAtMzksMjkgKzM5LDM3IEBACiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xXaW5kb3dQcml2YXRlIEdzdEdMV2luZG93UHJpdmF0ZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd0NsYXNzICAgR3N0R0xXaW5kb3dDbGFzczsKIAotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQmFzZUJ1ZmZlciBHc3RHTEJhc2VCdWZmZXI7Ci10eXBlZGVmIHN0cnVjdCBfR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvcjsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEJhc2VNZW1vcnkgR3N0R0xCYXNlTWVtb3J5OwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3I7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3M7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlciBHc3RHTEJ1ZmZlcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlckFsbG9jYXRvciBHc3RHTEJ1ZmZlckFsbG9jYXRvcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzIEdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTE1lbW9yeSBHc3RHTE1lbW9yeTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTEFsbG9jYXRvciBHc3RHTEFsbG9jYXRvcjsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTEFsbG9jYXRvckNsYXNzIEdzdEdMQWxsb2NhdG9yQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlBbGxvY2F0b3IgR3N0R0xNZW1vcnlBbGxvY2F0b3I7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzOworCit0eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlQQk8gR3N0R0xNZW1vcnlQQk87Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IgR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3I7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyBHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzOworCit0eXBlZGVmIHN0cnVjdCBfR3N0R0xTTFN0YWdlICAgICAgICBHc3RHTFNMU3RhZ2U7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R0xTTFN0YWdlUHJpdmF0ZSBHc3RHTFNMU3RhZ2VQcml2YXRlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMU0xTdGFnZUNsYXNzICAgR3N0R0xTTFN0YWdlQ2xhc3M7CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFNoYWRlciAgICAgICAgR3N0R0xTaGFkZXI7CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xTaGFkZXJQcml2YXRlIEdzdEdMU2hhZGVyUHJpdmF0ZTsKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFNoYWRlckNsYXNzICAgR3N0R0xTaGFkZXJDbGFzczsKIAotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRG93bmxvYWQgR3N0R0xEb3dubG9hZDsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTERvd25sb2FkQ2xhc3MgR3N0R0xEb3dubG9hZENsYXNzOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMRG93bmxvYWRQcml2YXRlIEdzdEdMRG93bmxvYWRQcml2YXRlOwotCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xVcGxvYWQgR3N0R0xVcGxvYWQ7CiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xVcGxvYWRDbGFzcyBHc3RHTFVwbG9hZENsYXNzOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVXBsb2FkUHJpdmF0ZSBHc3RHTFVwbG9hZFByaXZhdGU7CiAKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTFVwbG9hZE1ldGEgR3N0R0xVcGxvYWRNZXRhOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVXBsb2FkTWV0YUNsYXNzIEdzdEdMVXBsb2FkTWV0YUNsYXNzOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMVXBsb2FkTWV0YVByaXZhdGUgR3N0R0xVcGxvYWRNZXRhUHJpdmF0ZTsKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlclBvb2wgR3N0R0xCdWZmZXJQb29sOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyUG9vbENsYXNzIEdzdEdMQnVmZmVyUG9vbENsYXNzOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQnVmZmVyUG9vbFByaXZhdGUgR3N0R0xCdWZmZXJQb29sUHJpdmF0ZTsKIAogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29sb3JDb252ZXJ0IEdzdEdMQ29sb3JDb252ZXJ0OwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29sb3JDb252ZXJ0Q2xhc3MgR3N0R0xDb2xvckNvbnZlcnRDbGFzczsKQEAgLTgxLDYgKzg5LDc0IEBACiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xPdmVybGF5Q29tcG9zaXRvciBHc3RHTE92ZXJsYXlDb21wb3NpdG9yOwogdHlwZWRlZiBzdHJ1Y3QgX0dzdEdMT3ZlcmxheUNvbXBvc2l0b3JDbGFzcyBHc3RHTE92ZXJsYXlDb21wb3NpdG9yQ2xhc3M7CiAKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFF1ZXJ5IEdzdEdMUXVlcnk7CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xfZW51bXMuaD4KKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTEJhc2VGaWx0ZXIsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTEJ1ZmZlckFsbG9jYXRvciwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMQnVmZmVyUG9vbCwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMQ29sb3JDb252ZXJ0LCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xDb250ZXh0LCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xEaXNwbGF5LCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xGaWx0ZXIsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTE1lbW9yeUFsbG9jYXRvciwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMTWVtb3J5UEJPQWxsb2NhdG9yLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xPdmVybGF5Q29tcG9zaXRvciwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMU0xTdGFnZSwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEdMU2hhZGVyLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xVcGxvYWQsIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKworI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTFZpZXdDb252ZXJ0LCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKKyNpZmRlZiBHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQworR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMoR3N0R0xXaW5kb3csIGdzdF9vYmplY3RfdW5yZWYpCisjZW5kaWYKKwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIF9fR1NUX0dMX0ZXRF9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGFwaS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYXBpLmMKaW5kZXggM2JlZTE0Yi4uZjc5YTZlNCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYXBpLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYXBpLmMKQEAgLTEyMCw5ICsxMjAsOSBAQAogCiAvKioKICAqIGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmc6Ci0gKiBAYXBpOiBhICNHc3RHTFBsYXRmb3JtIHRvIHN0cmluZ2lmeQorICogQHBsYXRmb3JtOiBhICNHc3RHTFBsYXRmb3JtIHRvIHN0cmluZ2lmeQogICoKLSAqIFJldHVybnM6IEEgc3BhY2Ugc2VwZXJhdGVkIHN0cmluZyBvZiB0aGUgT3BlbkdMIHBsYXRmb3JtcyBlbmFibGVkIGluIEBhcGkKKyAqIFJldHVybnM6IEEgc3BhY2Ugc2VwZXJhdGVkIHN0cmluZyBvZiB0aGUgT3BlbkdMIHBsYXRmb3JtcyBlbmFibGVkIGluIEBwbGF0Zm9ybQogICovCiBnY2hhciAqCiBnc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5nIChHc3RHTFBsYXRmb3JtIHBsYXRmb3JtKQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYXBpLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xhcGkuaAppbmRleCBkZDQ0YjQ1Li5iZTM4MTEzIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xhcGkuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xhcGkuaApAQCAtMjMsNiArMjMsMTMgQEAKIAogI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGNvbmZpZy5oPgogCisvKiBUaGlzIG1pbWljIEdDQyBiZWhhdmlvdXIgd2l0aCBzeXN0ZW0gaGVhZGVycyBmaWxlcyBldmVuIGlmIEdMIGhlYWRlcnMgbWF5CisgKiBub3QgYmUgaW4gdGhlIHN5c3RlbSBoZWFkZXIgcGF0aC4gKi8KKyNpZmRlZiBfX0dOVUNfXworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwdXNoCisjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XcmVkdW5kYW50LWRlY2xzIgorI2VuZGlmCisKIC8qIE9wZW5HTCAyLjAgZm9yIEVtYmVkZGVkIFN5c3RlbXMgKi8KICNpZiBHU1RfR0xfSEFWRV9HTEVTMgogI2lmbmRlZiBHTF9HTEVYVF9QUk9UT1RZUEVTCkBAIC01Nyw2ICs2NCwxMCBAQAogIyBlbmRpZgogI2VuZGlmCiAKKyNpZmRlZiBfX0dOVUNfXworI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBwb3AKKyNlbmRpZgorCiAjaWZkZWYgV0lOQVBJCiAjZGVmaW5lIEdTVEdMQVBJIFdJTkFQSQogI2Vsc2UKQEAgLTY4LDYgKzc5LDE2IEBACiAKIEdfQkVHSU5fREVDTFMKIAorLyoqCisgKiBHc3RHTEFQSToKKyAqIEBHU1RfR0xfQVBJX05PTkU6IG5vIEFQSQorICogQEdTVF9HTF9BUElfT1BFTkdMOiBEZXNrdG9wIE9wZW5HTCB1cCB0byBhbmQgaW5jbHVkaW5nIDMuMS4gIFRoZQorICogICAgICAgICAgICAgICAgICAgIGNvbXBhdGliaWxpdHkgcHJvZmlsZSB3aGVuIHRoZSBPcGVuR0wgdmVyc2lvbiBpcyA+PSAzLjIKKyAqIEBHU1RfR0xfQVBJX09QRU5HTDM6IERlc2t0b3AgT3BlbkdMID49IDMuMiBjb3JlIHByb2ZpbGUKKyAqIEBHU1RfR0xfQVBJX0dMRVMxOiBPcGVuR0wgRVMgMS54CisgKiBAR1NUX0dMX0FQSV9HTEVTMjogT3BlbkdMIEVTIDIueCBhbmQgMy54CisgKiBAR1NUX0dMX0FQSV9BTlk6IEFueSBPcGVuR0wgQVBJCisgKi8KIHR5cGVkZWYgZW51bSB7CiAgIEdTVF9HTF9BUElfTk9ORSA9IDAsCiAgIEdTVF9HTF9BUElfT1BFTkdMID0gKDEgPDwgMCksCkBAIC03OCwxMSArOTksNDUgQEAKICAgR1NUX0dMX0FQSV9BTlkgPSBHX01BWFVJTlQzMgogfSBHc3RHTEFQSTsKIAorLyoqCisgKiBHU1RfR0xfQVBJX09QRU5HTF9OQU1FOgorICoKKyAqIFRoZSBuYW1lIGZvciAlR1NUX0dMX0FQSV9PUEVOR0wgdXNlZCBpbiB2YXJpb3VzIHBsYWNlcworICovCiAjZGVmaW5lIEdTVF9HTF9BUElfT1BFTkdMX05BTUUgIm9wZW5nbCIKKworLyoqCisgKiBHU1RfR0xfQVBJX09QRU5HTDNfTkFNRToKKyAqCisgKiBUaGUgbmFtZSBmb3IgJUdTVF9HTF9BUElfT1BFTkdMMyB1c2VkIGluIHZhcmlvdXMgcGxhY2VzCisgKi8KICNkZWZpbmUgR1NUX0dMX0FQSV9PUEVOR0wzX05BTUUgIm9wZW5nbDMiCisKKy8qKgorICogR1NUX0dMX0FQSV9HTEVTMV9OQU1FOgorICoKKyAqIFRoZSBuYW1lIGZvciAlR1NUX0dMX0FQSV9HTEVTMSB1c2VkIGluIHZhcmlvdXMgcGxhY2VzCisgKi8KICNkZWZpbmUgR1NUX0dMX0FQSV9HTEVTMV9OQU1FICJnbGVzMSIKKworLyoqCisgKiBHU1RfR0xfQVBJX0dMRVMyX05BTUU6CisgKgorICogVGhlIG5hbWUgZm9yICVHU1RfR0xfQVBJX0dMRVMyIHVzZWQgaW4gdmFyaW91cyBwbGFjZXMKKyAqLwogI2RlZmluZSBHU1RfR0xfQVBJX0dMRVMyX05BTUUgImdsZXMyIgogCisvKioKKyAqIEdzdEdMUGxhdGZvcm06CisgKiBAR1NUX0dMX1BMQVRGT1JNX05PTkU6IG5vIHBsYXRmb3JtCisgKiBAR1NUX0dMX1BMQVRGT1JNX0VHTDogdGhlIEVHTCBwbGF0Zm9ybSB1c2VkIHByaW1hcmlseSB3aXRoIHRoZSBYMTEsIHdheWxhbmQKKyAqICAgICAgICAgICAgICAgICAgICAgIGFuZCBhbmRyb2lkIHdpbmRvdyBzeXN0ZW1zIGFzIHdlbGwgYXMgb24gZW1iZWRkZWQgTGludXgKKyAqIEBHU1RfR0xfUExBVEZPUk1fR0xYOiB0aGUgR0xYIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IHdpdGggdGhlIFgxMSB3aW5kb3cgc3lzdGVtCisgKiBAR1NUX0dMX1BMQVRGT1JNX1dHTDogdGhlIFdHTCBwbGF0Zm9ybSB1c2VkIHByaW1hcmlseSBvbiBXaW5kb3dzCisgKiBAR1NUX0dMX1BMQVRGT1JNX0NHTDogdGhlIENHTCBwbGF0Zm9ybSB1c2VkIHByaW1hcmlseSBvbiBPUyBYCisgKiBAR1NUX0dMX1BMQVRGT1JNX0VBR0w6IHRoZSBFQUdMIHBsYXRmb3JtIHVzZWQgcHJpbWFyaWx5IG9uIGlPUworICogQEdTVF9HTF9QTEFURk9STV9BTlk6IGFueSBPcGVuR0wgcGxhdGZvcm0KKyAqLwogdHlwZWRlZiBlbnVtCiB7CiAgIEdTVF9HTF9QTEFURk9STV9OT05FID0gMCwKQEAgLTExNCw3ICsxNjksNyBAQAogZ2NoYXIgKiBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoR3N0R0xBUEkgYXBpKTsKIEdzdEdMQVBJIGdzdF9nbF9hcGlfZnJvbV9zdHJpbmcgKGNvbnN0IGdjaGFyICogYXBpX3MpOwogCi1nY2hhciAqIGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmcgKEdzdEdMUGxhdGZvcm0gYXBpKTsKK2djaGFyICogZ3N0X2dsX3BsYXRmb3JtX3RvX3N0cmluZyAoR3N0R0xQbGF0Zm9ybSBwbGF0Zm9ybSk7CiBHc3RHTFBsYXRmb3JtIGdzdF9nbF9wbGF0Zm9ybV9mcm9tX3N0cmluZyAoY29uc3QgZ2NoYXIgKiBwbGF0Zm9ybV9zKTsKIAogR19FTkRfREVDTFMKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VidWZmZXIuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VidWZmZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk1ZTEwNC4uMDAwMDAwMAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmMKKysrIC9kZXYvbnVsbApAQCAtMSw2NjYgKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2luY2x1ZGUgImdzdGdsYmFzZWJ1ZmZlci5oIgotI2luY2x1ZGUgImdzdGdsdXRpbHMuaCIKLQotLyoqCi0gKiBTRUNUSU9OOmdzdGdsYnVmZmVyCi0gKiBAc2hvcnRfZGVzY3JpcHRpb246IG1lbW9yeSBzdWJjbGFzcyBmb3IgR0wgYnVmZmVycwotICogQHNlZV9hbHNvOiAjR3N0TWVtb3J5LCAjR3N0QWxsb2NhdG9yCi0gKgotICogR3N0R0xCYXNlQnVmZmVyIGlzIGEgI0dzdE1lbW9yeSBzdWJjbGFzcyBwcm92aWRpbmcgc3VwcG9ydCBmb3IgdGhlIG1hcHBpbmcgb2YKLSAqIEdMIGJ1ZmZlcnMuICAKLSAqCi0gKiBEYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS4KLSAqLwotCi0vKiBJbXBsZW1lbnRhdGlvbiBub3RlczoKLSAqCi0gKiBDdXJyZW50bHkgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgR0xFUzIgZGlmZmVyZW5jZXMgKG5vIG1hcGJ1ZmZlcikKLSAqLwotCi0jZGVmaW5lIFVTSU5HX09QRU5HTChjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wsIDEsIDApKQotI2RlZmluZSBVU0lOR19PUEVOR0wzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDEpKQotI2RlZmluZSBVU0lOR19HTEVTKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMsIDEsIDApKQotI2RlZmluZSBVU0lOR19HTEVTMihjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMiwgMCkpCi0jZGVmaW5lIFVTSU5HX0dMRVMzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKLQotLyogY29tcGF0aWJpbGl0eSBkZWZpbml0aW9ucy4uLiAqLwotI2lmbmRlZiBHTF9NQVBfUkVBRF9CSVQKLSNkZWZpbmUgR0xfTUFQX1JFQURfQklUIDB4MDAwMQotI2VuZGlmCi0jaWZuZGVmIEdMX01BUF9XUklURV9CSVQKLSNkZWZpbmUgR0xfTUFQX1dSSVRFX0JJVCAweDAwMDIKLSNlbmRpZgotI2lmbmRlZiBHTF9DT1BZX1JFQURfQlVGRkVSCi0jZGVmaW5lIEdMX0NPUFlfUkVBRF9CVUZGRVIgMHg4RjM2Ci0jZW5kaWYKLSNpZm5kZWYgR0xfQ09QWV9XUklURV9CVUZGRVIKLSNkZWZpbmUgR0xfQ09QWV9XUklURV9CVUZGRVIgMHg4RjM3Ci0jZW5kaWYKLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUik7Ci0jZGVmaW5lIEdTVF9DQVRfREVGVUFMVCBHU1RfQ0FUX0dMX0JBU0VfQlVGRkVSCi0KLXN0YXRpYyBHc3RBbGxvY2F0b3IgKl9nbF9iYXNlX2J1ZmZlcl9hbGxvY2F0b3I7Ci0KLUdRdWFyawotZ3N0X2dsX2Jhc2VfYnVmZmVyX2Vycm9yX3F1YXJrICh2b2lkKQotewotICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKCJnc3QtZ2wtYmFzZS1idWZmZXItZXJyb3ItcXVhcmsiKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1fZGVmYXVsdF9jcmVhdGUgKEdzdEdMQmFzZUJ1ZmZlciAqIG1lbSwgR0Vycm9yICoqIGVycm9yKQotewotICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9CQVNFX0JVRkZFUl9FUlJPUiwgR1NUX0dMX0JBU0VfQlVGRkVSX0VSUk9SX0ZBSUxFRCwKLSAgICAgICJzdWJjbGFzcyBzaG91bGQgZGVmaW5lIGNyZWF0ZSgpIHZmdW5jIik7Ci0KLSAgZ19jcml0aWNhbCAoInN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSAiCi0gICAgICAiR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3M6OmNyZWF0ZSgpIGZ1bmN0aW9uIik7Ci0KLSAgcmV0dXJuIEZBTFNFOwotfQotCi1zdHJ1Y3QgY3JlYXRlX2RhdGEKLXsKLSAgR3N0R0xCYXNlQnVmZmVyICptZW07Ci0gIGdib29sZWFuIHJlc3VsdDsKLX07Ci0KLXN0YXRpYyB2b2lkCi1fbWVtX2NyZWF0ZV9nbCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgc3RydWN0IGNyZWF0ZV9kYXRhICp0cmFuc2ZlcikKLXsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOwotICBHRXJyb3IgKmVycm9yID0gTlVMTDsKLQotICBhbGxvY19jbGFzcyA9Ci0gICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPm1lbS0+bWVtLmFsbG9jYXRvcik7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPmNyZWF0ZSAhPSBOVUxMKTsKLQotICBpZiAoKHRyYW5zZmVyLT5yZXN1bHQgPSBhbGxvY19jbGFzcy0+Y3JlYXRlICh0cmFuc2Zlci0+bWVtLCAmZXJyb3IpKSkKLSAgICByZXR1cm47Ci0KLSAgZ19hc3NlcnQgKGVycm9yICE9IE5VTEwpOwotCi0gIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfQkFTRV9CVUZGRVIsICJGYWlsZWQgdG8gY3JlYXRlIEdMIGJ1ZmZlcjogJXMiLAotICAgICAgZXJyb3ItPm1lc3NhZ2UpOwotICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwotfQotCi12b2lkCi1nc3RfZ2xfYmFzZV9idWZmZXJfaW5pdCAoR3N0R0xCYXNlQnVmZmVyICogbWVtLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCi0gICAgR3N0TWVtb3J5ICogcGFyZW50LCBHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAotICAgIGdzaXplIHNpemUpCi17Ci0gIGdzaXplIGFsaWduID0gZ3N0X21lbW9yeV9hbGlnbm1lbnQsIG9mZnNldCA9IDAsIG1heHNpemUgPSBzaXplOwotICBHc3RNZW1vcnlGbGFncyBmbGFncyA9IDA7Ci0gIHN0cnVjdCBjcmVhdGVfZGF0YSBkYXRhOwotCi0gIGlmIChwYXJhbXMpIHsKLSAgICBmbGFncyA9IHBhcmFtcy0+ZmxhZ3M7Ci0gICAgYWxpZ24gfD0gcGFyYW1zLT5hbGlnbjsKLSAgICBvZmZzZXQgPSBwYXJhbXMtPnByZWZpeDsKLSAgICBtYXhzaXplICs9IHBhcmFtcy0+cHJlZml4ICsgcGFyYW1zLT5wYWRkaW5nICsgYWxpZ247Ci0gIH0KLQotICBnc3RfbWVtb3J5X2luaXQgKEdTVF9NRU1PUllfQ0FTVCAobWVtKSwgZmxhZ3MsIGFsbG9jYXRvciwgcGFyZW50LCBtYXhzaXplLAotICAgICAgYWxpZ24sIG9mZnNldCwgc2l6ZSk7Ci0KLSAgbWVtLT5jb250ZXh0ID0gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQpOwotICBtZW0tPmRhdGEgPSBOVUxMOwotICBtZW0tPmFsbG9jX2RhdGEgPSBOVUxMOwotCi0gIGdfbXV0ZXhfaW5pdCAoJm1lbS0+bG9jayk7Ci0KLSAgZGF0YS5tZW0gPSBtZW07Ci0KLSAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29udGV4dCwKLSAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfbWVtX2NyZWF0ZV9nbCwgJmRhdGEpOwotICBpZiAoIWRhdGEucmVzdWx0KSB7Ci0gICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwKLSAgICAgICAgIkNvdWxkIG5vdCBjcmVhdGUgR0wgYnVmZmVyIHdpdGggY29udGV4dDolcCIsIGNvbnRleHQpOwotICB9Ci0KLSAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgIm5ldyBHTCBidWZmZXIgbWVtb3J5OiVwIHNpemU6JSIKLSAgICAgIEdfR1NJWkVfRk9STUFULCBtZW0sIG1heHNpemUpOwotfQotCi1zdGF0aWMgZ3BvaW50ZXIKLV9hbGlnbl9kYXRhIChncG9pbnRlciBkYXRhLCBnc2l6ZSBhbGlnbiwgZ3NpemUgKiBtYXhzaXplKQotewotICBndWludDggKnJldCA9IGRhdGE7Ci0gIGdzaXplIGFvZmZzZXQ7Ci0KLSAgLyogZG8gYWxpZ25tZW50ICovCi0gIGlmICgoYW9mZnNldCA9ICgoZ3VpbnRwdHIpIHJldCAmIGFsaWduKSkpIHsKLSAgICBhb2Zmc2V0ID0gKGFsaWduICsgMSkgLSBhb2Zmc2V0OwotICAgIHJldCArPSBhb2Zmc2V0OwotICAgICptYXhzaXplIC09IGFvZmZzZXQ7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQotCi0vKiBzdWJjbGFzcyB1c2FnZSBvbmx5ICovCi1Hc3RHTEJhc2VCdWZmZXIgKgotZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jX2RhdGEgKEdzdEdMQmFzZUJ1ZmZlciAqIGdsX21lbSkKLXsKLSAgR3N0TWVtb3J5ICptZW0gPSAoR3N0TWVtb3J5ICopIGdsX21lbTsKLQotICBpZiAoZ2xfbWVtLT5kYXRhKQotICAgIHJldHVybiBnbF9tZW07Ci0KLSAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfQkFTRV9CVUZGRVIsICIlcCBhdHRlbXB0aW5nIGFsbG9jYXRpb24gb2YgZGF0YSAiCi0gICAgICAicG9pbnRlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFULCBnbF9tZW0sIG1lbS0+bWF4c2l6ZSk7Ci0gIGdsX21lbS0+YWxsb2NfZGF0YSA9IGdfdHJ5X21hbGxvYyAobWVtLT5tYXhzaXplKTsKLQotICBpZiAoZ2xfbWVtLT5hbGxvY19kYXRhID09IE5VTEwpIHsKLSAgICBnc3RfbWVtb3J5X3VucmVmIChtZW0pOwotICAgIHJldHVybiBOVUxMOwotICB9Ci0KLSAgZ2xfbWVtLT5kYXRhID0gX2FsaWduX2RhdGEgKGdsX21lbS0+YWxsb2NfZGF0YSwgbWVtLT5hbGlnbiwgJm1lbS0+bWF4c2l6ZSk7Ci0KLSAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgIiVwIGFsbG9jYXRlZCBkYXRhIHBvaW50ZXIgYWxsb2MgJXAsICIKLSAgICAgICJkYXRhICVwIiwgZ2xfbWVtLCBnbF9tZW0tPmFsbG9jX2RhdGEsIGdsX21lbS0+ZGF0YSk7Ci0KLSAgcmV0dXJuIGdsX21lbTsKLX0KLQotLyogWFhYOiBhZGQgYXMgQVBJPyAqLwotc3RhdGljIGdwb2ludGVyCi1nc3RfZ2xfYmFzZV9idWZmZXJfY3B1X2FjY2VzcyAoR3N0R0xCYXNlQnVmZmVyICogbWVtLAotICAgIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQotewotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IG1lbS0+Y29udGV4dC0+Z2xfdnRhYmxlOwotICBncG9pbnRlciBkYXRhLCByZXQ7Ci0KLSAgZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jX2RhdGEgKG1lbSk7Ci0gIHJldCA9IG1lbS0+ZGF0YTsKLQotICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgIm1hcHBpbmcgaWQgJWQgc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCwKLSAgICAgIG1lbS0+aWQsIHNpemUpOwotCi0gIC8qIFRoZSBleHRyYSBkYXRhIHBvaW50ZXIgaW5kaXJlY3Rpb24vbWVtY3B5IGlzIG5lZWRlZCBmb3IgY29oZXJlbnQgYWNyb3NzCi0gICAqIGNvbmN1cnJlbnQgbWFwKCkncyBpbiBib3RoIEdMIGFuZCBDUFUgKi8KLSAgaWYgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCkKLSAgICAgICYmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpID09IDAgJiYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9SRUFEKSAhPSAwKSB7Ci0gICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCBtZW0tPmlkKTsKLQotICAgIGlmIChnbC0+TWFwQnVmZmVyUmFuZ2UpIHsKLSAgICAgIC8qIEZJWE1FOiBvcHRpb25hbGx5IHJlbW92ZSB0aGlzIHdpdGggYSBmbGFnIGFuZCByZXR1cm4gdGhlCi0gICAgICAgKiBnbE1hcEJ1ZmZlclJhbmdlIHBvaW50ZXIgKHJlcXVpcmVzCi0gICAgICAgKiBHTF9BUkJfYnVmZmVyX3N0b3JhZ2UvR0w0L0dMX0NPSEVSRU5UX0JJVCkgKi8KLSAgICAgIGd1aW50IGdsX21hcF9mbGFncyA9IEdMX01BUF9SRUFEX0JJVDsKLQotICAgICAgZGF0YSA9IGdsLT5NYXBCdWZmZXJSYW5nZSAobWVtLT50YXJnZXQsIDAsIHNpemUsIGdsX21hcF9mbGFncyk7Ci0KLSAgICAgIGlmIChkYXRhKQotICAgICAgICBtZW1jcHkgKG1lbS0+ZGF0YSwgZGF0YSwgc2l6ZSk7Ci0KLSAgICAgIGdsLT5Vbm1hcEJ1ZmZlciAobWVtLT50YXJnZXQpOwotICAgICAgcmV0ID0gbWVtLT5kYXRhOwotICAgIH0gZWxzZSBpZiAoZ2wtPkdldEJ1ZmZlclN1YkRhdGEpIHsKLSAgICAgIGdsLT5HZXRCdWZmZXJTdWJEYXRhIChtZW0tPnRhcmdldCwgMCwgc2l6ZSwgbWVtLT5kYXRhKTsKLSAgICAgIHJldCA9IG1lbS0+ZGF0YTsKLSAgICB9IGVsc2UgewotICAgICAgcmV0ID0gTlVMTDsKLSAgICB9Ci0gICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCAwKTsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLS8qIFhYWDogYWRkIGFzIEFQST8gKi8KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfYmFzZV9idWZmZXJfdXBsb2FkX2NwdV93cml0ZSAoR3N0R0xCYXNlQnVmZmVyICogbWVtLCBHc3RNYXBJbmZvICogaW5mbywKLSAgICBnc2l6ZSBzaXplKQotewotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IG1lbS0+Y29udGV4dC0+Z2xfdnRhYmxlOwotICBncG9pbnRlciBkYXRhOwotCi0gIGlmICghbWVtLT5kYXRhKQotICAgIC8qIG5vIGRhdGEgcG9pbnRlciBoYXMgYmVlbiB3cml0dGVuICovCi0gICAgcmV0dXJuOwotCi0gIC8qIFRoZSBleHRyYSBkYXRhIHBvaW50ZXIgaW5kaXJlY3Rpb24vbWVtY3B5IGlzIG5lZWRlZCBmb3IgY29oZXJlbnQgYWNyb3NzCi0gICAqIGNvbmN1cnJlbnQgbWFwKCkncyBpbiBib3RoIEdMIGFuZCBDUFUgKi8KLSAgLyogRklYTUU6IHVwbG9hZGluZyBwb3RlbnRpYWxseSBoYWxmLXdyaXR0ZW4gZGF0YSBmb3IgbGliYXYgcHVzaGluZyBSRUFEV1JJVEUKLSAgICogbWFwcGVkIGJ1ZmZlcnMgKi8KLSAgaWYgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpCi0gICAgICB8fCAobWVtLT5tYXBfZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKSAhPSAwKSB7Ci0gICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCBtZW0tPmlkKTsKLQotICAgIGlmIChnbC0+TWFwQnVmZmVyUmFuZ2UpIHsKLSAgICAgIC8qIEZJWE1FOiBvcHRpb25hbGx5IHJlbW92ZSB0aGlzIHdpdGggYSBmbGFnIGFuZCByZXR1cm4gdGhlCi0gICAgICAgKiBnbE1hcEJ1ZmZlclJhbmdlIHBvaW50ZXIgKHJlcXVpcmVzCi0gICAgICAgKiBHTF9BUkJfYnVmZmVyX3N0b3JhZ2UvR0w0L0dMX0NPSEVSRU5UX0JJVCkgKi8KLSAgICAgIGd1aW50IGdsX21hcF9mbGFncyA9IEdMX01BUF9XUklURV9CSVQ7Ci0KLSAgICAgIGRhdGEgPSBnbC0+TWFwQnVmZmVyUmFuZ2UgKG1lbS0+dGFyZ2V0LCAwLCBzaXplLCBnbF9tYXBfZmxhZ3MpOwotCi0gICAgICBpZiAoZGF0YSkKLSAgICAgICAgbWVtY3B5IChkYXRhLCBtZW0tPmRhdGEsIHNpemUpOwotCi0gICAgICBnbC0+VW5tYXBCdWZmZXIgKG1lbS0+dGFyZ2V0KTsKLSAgICB9IGVsc2UgaWYgKGdsLT5CdWZmZXJTdWJEYXRhKSB7Ci0gICAgICBnbC0+QnVmZmVyU3ViRGF0YSAobWVtLT50YXJnZXQsIDAsIHNpemUsIG1lbS0+ZGF0YSk7Ci0gICAgfQotICAgIGdsLT5CaW5kQnVmZmVyIChtZW0tPnRhcmdldCwgMCk7Ci0gIH0KLX0KLQotc3RhdGljIGdwb2ludGVyCi1fZGVmYXVsdF9tYXBfYnVmZmVyIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQotewotICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgIT0gMCkgewotICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfUkVBRCkgewotICAgICAgZ3N0X2dsX2Jhc2VfYnVmZmVyX3VwbG9hZF9jcHVfd3JpdGUgKG1lbSwgaW5mbywgc2l6ZSk7Ci0gICAgfQotICAgIHJldHVybiAmbWVtLT5pZDsKLSAgfSBlbHNlIHsKLSAgICByZXR1cm4gZ3N0X2dsX2Jhc2VfYnVmZmVyX2NwdV9hY2Nlc3MgKG1lbSwgaW5mbywgc2l6ZSk7Ci0gIH0KLQotICByZXR1cm4gTlVMTDsKLX0KLQotc3RydWN0IG1hcF9kYXRhCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqbWVtOwotICBHc3RNYXBJbmZvICppbmZvOwotICBnc2l6ZSBzaXplOwotICBncG9pbnRlciBkYXRhOwotfTsKLQotc3RhdGljIHZvaWQKLV9tYXBfZGF0YV9nbCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgc3RydWN0IG1hcF9kYXRhICp0cmFuc2ZlcikKLXsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOwotICBHc3RHTEJhc2VCdWZmZXIgKm1lbSA9IHRyYW5zZmVyLT5tZW07Ci0gIEdzdE1hcEluZm8gKmluZm8gPSB0cmFuc2Zlci0+aW5mbzsKLQotICBhbGxvY19jbGFzcyA9Ci0gICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPm1lbS0+bWVtLmFsbG9jYXRvcik7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPm1hcF9idWZmZXIgIT0gTlVMTCk7Ci0KLSAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKLQotICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgIm1hcHBpbmcgbWVtICVwIGlkICVkIGZsYWdzICUwNHgiLCBtZW0sCi0gICAgICBtZW0tPmlkLCBpbmZvLT5mbGFncyk7Ci0KLSAgLyogRklYTUU6IHZhbGlkYXRlIG1hcCBmbGFncyBiYXNlZCBvbiB0aGUgbWVtb3J5IGRvbWFpbiAqLwotICBpZiAobWVtLT5tYXBfY291bnQrKyA9PSAwKQotICAgIG1lbS0+bWFwX2ZsYWdzID0gaW5mby0+ZmxhZ3M7Ci0gIGVsc2UgewotICAgIC8qIGFzc2VydCB0aGF0IHRoZSBmbGFncyBhcmUgYSBzdWJzZXQgb2YgdGhlIGZpcnN0IG1hcCBmbGFncyAqLwotICAgIGdfYXNzZXJ0ICgoKChHU1RfTUFQX0dMIC0gMSkgJiBpbmZvLT5mbGFncykgJiBtZW0tPm1hcF9mbGFncykgIT0gMCk7Ci0gICAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfQkFTRV9CVUZGRVIsICJtdWx0aXBsZSBtYXAgbm8gJWQgZmxhZ3MgJTA0eCAiCi0gICAgICAgICJhbGwgZmxhZ3MgJTA0eCIsIG1lbS0+bWFwX2NvdW50LCBpbmZvLT5mbGFncywgbWVtLT5tYXBfZmxhZ3MpOwotICB9Ci0KLSAgaWYgKChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpICE9IChtZW0tPm1hcF9mbGFncyAmIEdTVF9NQVBfR0wpKQotICAgIG1lbS0+bWFwX2ZsYWdzIHw9IEdTVF9NQVBfR0w7Ci0KLSAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkKLSAgICBtZW0tPmdsX21hcF9jb3VudCsrOwotCi0gIHRyYW5zZmVyLT5kYXRhID0gYWxsb2NfY2xhc3MtPm1hcF9idWZmZXIgKHRyYW5zZmVyLT5tZW0sIHRyYW5zZmVyLT5pbmZvLAotICAgICAgdHJhbnNmZXItPnNpemUpOwotCi0gIGlmICh0cmFuc2Zlci0+ZGF0YSkgewotICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpIHsKLSAgICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfV1JJVEUpCi0gICAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKTsKLSAgICAgIEdTVF9NRU1PUllfRkxBR19VTlNFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfV1JJVEUpCi0gICAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCk7Ci0gICAgICBHU1RfTUVNT1JZX0ZMQUdfVU5TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCk7Ci0gICAgfQotICB9Ci0KLSAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOwotfQotCi1zdGF0aWMgZ3BvaW50ZXIKLV9tZW1fbWFwX2Z1bGwgKEdzdEdMQmFzZUJ1ZmZlciAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCi17Ci0gIHN0cnVjdCBtYXBfZGF0YSB0cmFuc2ZlcjsKLQotICB0cmFuc2Zlci5tZW0gPSBtZW07Ci0gIHRyYW5zZmVyLmluZm8gPSBpbmZvOwotICB0cmFuc2Zlci5zaXplID0gc2l6ZTsKLSAgdHJhbnNmZXIuZGF0YSA9IE5VTEw7Ci0KLSAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAobWVtLT5jb250ZXh0LAotICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9tYXBfZGF0YV9nbCwgJnRyYW5zZmVyKTsKLQotICByZXR1cm4gdHJhbnNmZXIuZGF0YTsKLX0KLQotc3RhdGljIHZvaWQKLV9kZWZhdWx0X3VubWFwX2J1ZmZlciAoR3N0R0xCYXNlQnVmZmVyICogbWVtLCBHc3RNYXBJbmZvICogaW5mbykKLXsKLSAgLyogWFhYOiBvcHRpbWlzdGljYWxseSB0cmFuc2ZlciBkYXRhICovCi19Ci0KLXN0cnVjdCB1bm1hcF9kYXRhCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqbWVtOwotICBHc3RNYXBJbmZvICppbmZvOwotfTsKLQotc3RhdGljIHZvaWQKLV91bm1hcF9kYXRhX2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgdW5tYXBfZGF0YSAqdHJhbnNmZXIpCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKLSAgR3N0R0xCYXNlQnVmZmVyICptZW0gPSB0cmFuc2Zlci0+bWVtOwotICBHc3RNYXBJbmZvICppbmZvID0gdHJhbnNmZXItPmluZm87Ci0KLSAgYWxsb2NfY2xhc3MgPQotICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9HRVRfQ0xBU1MgKHRyYW5zZmVyLT5tZW0tPm1lbS5hbGxvY2F0b3IpOwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT51bm1hcF9idWZmZXIgIT0gTlVMTCk7Ci0KLSAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKLQotICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgInVubWFwcGluZyBtZW0gJXAgaWQgJWQgZmxhZ3MgJTA0eCIsIG1lbSwKLSAgICAgIG1lbS0+aWQsIGluZm8tPmZsYWdzKTsKLQotICBhbGxvY19jbGFzcy0+dW5tYXBfYnVmZmVyICh0cmFuc2Zlci0+bWVtLCB0cmFuc2Zlci0+aW5mbyk7Ci0KLSAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCAmJiAtLW1lbS0+Z2xfbWFwX2NvdW50KQotICAgIC8qIHVuc2V0IHRoZSBnbCBmbGFnICovCi0gICAgbWVtLT5tYXBfZmxhZ3MgJj0gfkdTVF9NQVBfR0w7Ci0KLSAgaWYgKC0tbWVtLT5tYXBfY291bnQgPD0gMCkgewotICAgIG1lbS0+bWFwX2ZsYWdzID0gMDsKLSAgfQotCi0gIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpIHsKLSAgICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKQotICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpOwotICB9IGVsc2UgewotICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfV1JJVEUpCi0gICAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpOwotICB9Ci0KLSAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOwotfQotCi1zdGF0aWMgdm9pZAotX21lbV91bm1hcF9mdWxsIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvKQotewotICBzdHJ1Y3QgdW5tYXBfZGF0YSB0cmFuc2ZlcjsKLQotICB0cmFuc2Zlci5tZW0gPSBtZW07Ci0gIHRyYW5zZmVyLmluZm8gPSBpbmZvOwotCi0gIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKG1lbS0+Y29udGV4dCwKLSAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfdW5tYXBfZGF0YV9nbCwgJnRyYW5zZmVyKTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9nbF9iYXNlX2J1ZmZlcl9jb3B5X2J1ZmZlcl9zdWJfZGF0YSAoR3N0R0xCYXNlQnVmZmVyICogc3JjLAotICAgIEdzdEdMQmFzZUJ1ZmZlciAqIGRlc3QsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQotewotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IHNyYy0+Y29udGV4dC0+Z2xfdnRhYmxlOwotICBHc3RNYXBJbmZvIHNpbmZvLCBkaW5mbzsKLQotICBpZiAoIWdsLT5Db3B5QnVmZmVyU3ViRGF0YSkKLSAgICAvKiBUaGlzIGlzIEdMKEVTKSAzLjArIG9ubHkgKi8KLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKCFnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbywgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpIHsKLSAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfQkFTRV9CVUZGRVIsCi0gICAgICAgICJmYWlsZWQgdG8gcmVhZCBtYXAgc291cmNlIG1lbW9yeSAlcCIsIHNyYyk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgaWYgKCFnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBkZXN0LCAmZGluZm8sIEdTVF9NQVBfV1JJVEUgfCBHU1RfTUFQX0dMKSkgewotICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwKLSAgICAgICAgImZhaWxlZCB0byB3cml0ZSBtYXAgZGVzdGluYXRpb24gbWVtb3J5ICVwIiwgZGVzdCk7Ci0gICAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbyk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgZ2wtPkJpbmRCdWZmZXIgKEdMX0NPUFlfUkVBRF9CVUZGRVIsIHNyYy0+aWQpOwotICBnbC0+QmluZEJ1ZmZlciAoR0xfQ09QWV9XUklURV9CVUZGRVIsIGRlc3QtPmlkKTsKLSAgZ2wtPkNvcHlCdWZmZXJTdWJEYXRhIChHTF9DT1BZX1JFQURfQlVGRkVSLCBHTF9DT1BZX1dSSVRFX0JVRkZFUiwKLSAgICAgIG9mZnNldCwgMCwgc2l6ZSk7Ci0KLSAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbyk7Ci0gIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgZGVzdCwgJmRpbmZvKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9nbF9iYXNlX2J1ZmZlcl9tZW1jcHkgKEdzdEdMQmFzZUJ1ZmZlciAqIHNyYywgR3N0R0xCYXNlQnVmZmVyICogZGVzdCwKLSAgICBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKLXsKLSAgR3N0TWFwSW5mbyBzaW5mbywgZGluZm87Ci0KLSAgaWYgKCFnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbywgR1NUX01BUF9SRUFEKSkgewotICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwKLSAgICAgICAgImNvdWxkIG5vdCByZWFkIG1hcCBzb3VyY2UgbWVtb3J5ICVwIiwgc3JjKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIGRlc3QsICZkaW5mbywgR1NUX01BUF9XUklURSkpIHsKLSAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfQkFTRV9CVUZGRVIsCi0gICAgICAgICJjb3VsZCBub3Qgd3JpdGUgbWFwIGRlc3QgbWVtb3J5ICVwIiwgZGVzdCk7Ci0gICAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbyk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwKLSAgICAgICJtZW1jcHkgJSIgR19HU1NJWkVfRk9STUFUICIgbWVtb3J5ICVwIC0+ICVwIiwgc2l6ZSwgc3JjLCBkZXN0KTsKLSAgbWVtY3B5IChkaW5mby5kYXRhLCBzaW5mby5kYXRhICsgb2Zmc2V0LCBzaXplKTsKLSAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBkZXN0LCAmZGluZm8pOwotICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIEdzdEdMQmFzZUJ1ZmZlciAqCi1fZGVmYXVsdF9jb3B5IChHc3RHTEJhc2VCdWZmZXIgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQotewotICByZXR1cm4gTlVMTDsKLX0KLQotc3RydWN0IGNvcHlfcGFyYW1zCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqc3JjOwotICBHc3RHTEJhc2VCdWZmZXIgKmRlc3Q7Ci0gIGdzc2l6ZSBvZmZzZXQ7Ci0gIGdzc2l6ZSBzaXplOwotICBnYm9vbGVhbiByZXN1bHQ7Ci19OwotCi1zdGF0aWMgdm9pZAotX21lbV9jb3B5X2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgY29weV9wYXJhbXMgKnRyYW5zZmVyKQotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7Ci0KLSAgYWxsb2NfY2xhc3MgPQotICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9HRVRfQ0xBU1MgKHRyYW5zZmVyLT5zcmMtPm1lbS5hbGxvY2F0b3IpOwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT5jb3B5ICE9IE5VTEwpOwotCi0gIHRyYW5zZmVyLT5kZXN0ID0KLSAgICAgIGFsbG9jX2NsYXNzLT5jb3B5ICh0cmFuc2Zlci0+c3JjLCB0cmFuc2Zlci0+b2Zmc2V0LCB0cmFuc2Zlci0+c2l6ZSk7Ci19Ci0KLXN0YXRpYyBHc3RNZW1vcnkgKgotX21lbV9jb3B5IChHc3RHTEJhc2VCdWZmZXIgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQotewotICBzdHJ1Y3QgY29weV9wYXJhbXMgdHJhbnNmZXI7Ci0KLSAgdHJhbnNmZXIuZGVzdCA9IE5VTEw7Ci0gIHRyYW5zZmVyLnNyYyA9IHNyYzsKLSAgdHJhbnNmZXIub2Zmc2V0ID0gb2Zmc2V0OwotICB0cmFuc2Zlci5zaXplID0gc2l6ZTsKLSAgaWYgKHNpemUgPT0gLTEgfHwgc2l6ZSA+IDApCi0gICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoc3JjLT5jb250ZXh0LAotICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX21lbV9jb3B5X2dsLCAmdHJhbnNmZXIpOwotCi0gIHJldHVybiAoR3N0TWVtb3J5ICopIHRyYW5zZmVyLmRlc3Q7Ci19Ci0KLXN0YXRpYyBHc3RNZW1vcnkgKgotX21lbV9zaGFyZSAoR3N0R0xCYXNlQnVmZmVyICogbWVtLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKLXsKLSAgcmV0dXJuIE5VTEw7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotX21lbV9pc19zcGFuIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0xLCBHc3RHTEJhc2VCdWZmZXIgKiBtZW0yLCBnc2l6ZSAqIG9mZnNldCkKLXsKLSAgcmV0dXJuIEZBTFNFOwotfQotCi1zdGF0aWMgR3N0TWVtb3J5ICoKLV9tZW1fYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKLXsKLSAgZ19jcml0aWNhbCAoIlN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSBHc3RBbGxvY2F0b3JDbGFzczo6YWxsb2MoKSBmdW5jdGlvbiIpOwotCi0gIHJldHVybiBOVUxMOwotfQotCi1zdGF0aWMgdm9pZAotX2RlZmF1bHRfZGVzdHJveSAoR3N0R0xCYXNlQnVmZmVyICogbWVtKQotewotfQotCi1zdGF0aWMgdm9pZAotX2Rlc3Ryb3lfZ2xfb2JqZWN0cyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xCYXNlQnVmZmVyICogbWVtKQotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7Ci0KLSAgYWxsb2NfY2xhc3MgPSBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0dFVF9DTEFTUyAobWVtLT5tZW0uYWxsb2NhdG9yKTsKLQotICBnX3JldHVybl9pZl9mYWlsIChhbGxvY19jbGFzcy0+ZGVzdHJveSAhPSBOVUxMKTsKLQotICBhbGxvY19jbGFzcy0+ZGVzdHJveSAobWVtKTsKLX0KLQotc3RhdGljIHZvaWQKLV9tZW1fZnJlZSAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBtZW1vcnkpCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqbWVtID0gKEdzdEdMQmFzZUJ1ZmZlciAqKSBtZW1vcnk7Ci0KLSAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgImZyZWVpbmcgYnVmZmVyIG1lbW9yeTolcCBpZDoldSIsIG1lbSwKLSAgICAgIG1lbS0+aWQpOwotCi0gIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKG1lbS0+Y29udGV4dCwKLSAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfZGVzdHJveV9nbF9vYmplY3RzLCBtZW0pOwotCi0gIGdfbXV0ZXhfY2xlYXIgKCZtZW0tPmxvY2spOwotCi0gIGlmIChtZW0tPmFsbG9jX2RhdGEpIHsKLSAgICBnX2ZyZWUgKG1lbS0+YWxsb2NfZGF0YSk7Ci0gICAgbWVtLT5hbGxvY19kYXRhID0gTlVMTDsKLSAgfQotICBtZW0tPmRhdGEgPSBOVUxMOwotCi0gIGdzdF9vYmplY3RfdW5yZWYgKG1lbS0+Y29udGV4dCk7Ci19Ci0KLUdfREVGSU5FX1RZUEUgKEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvciwgZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvciwKLSAgICBHU1RfVFlQRV9BTExPQ0FUT1IpOwotCi1zdGF0aWMgdm9pZAotZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqIGtsYXNzKQotewotICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOwotCi0gIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBfbWVtX2FsbG9jOwotICBhbGxvY2F0b3JfY2xhc3MtPmZyZWUgPSBfbWVtX2ZyZWU7Ci0KLSAga2xhc3MtPmNyZWF0ZSA9IF9kZWZhdWx0X2NyZWF0ZTsKLSAga2xhc3MtPm1hcF9idWZmZXIgPSBfZGVmYXVsdF9tYXBfYnVmZmVyOwotICBrbGFzcy0+dW5tYXBfYnVmZmVyID0gX2RlZmF1bHRfdW5tYXBfYnVmZmVyOwotICBrbGFzcy0+Y29weSA9IF9kZWZhdWx0X2NvcHk7Ci0gIGtsYXNzLT5kZXN0cm95ID0gX2RlZmF1bHRfZGVzdHJveTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF9iYXNlX2J1ZmZlcl9hbGxvY2F0b3JfaW5pdCAoR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yICogYWxsb2NhdG9yKQotewotICBHc3RBbGxvY2F0b3IgKmFsbG9jID0gR1NUX0FMTE9DQVRPUl9DQVNUIChhbGxvY2F0b3IpOwotCi0gIGFsbG9jLT5tZW1fdHlwZSA9IEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SOwotICBhbGxvYy0+bWVtX21hcF9mdWxsID0gKEdzdE1lbW9yeU1hcEZ1bGxGdW5jdGlvbikgX21lbV9tYXBfZnVsbDsKLSAgYWxsb2MtPm1lbV91bm1hcF9mdWxsID0gKEdzdE1lbW9yeVVubWFwRnVsbEZ1bmN0aW9uKSBfbWVtX3VubWFwX2Z1bGw7Ci0gIGFsbG9jLT5tZW1fY29weSA9IChHc3RNZW1vcnlDb3B5RnVuY3Rpb24pIF9tZW1fY29weTsKLSAgYWxsb2MtPm1lbV9zaGFyZSA9IChHc3RNZW1vcnlTaGFyZUZ1bmN0aW9uKSBfbWVtX3NoYXJlOwotICBhbGxvYy0+bWVtX2lzX3NwYW4gPSAoR3N0TWVtb3J5SXNTcGFuRnVuY3Rpb24pIF9tZW1faXNfc3BhbjsKLX0KLQotLyoqCi0gKiBnc3RfZ2xfYmFzZV9idWZmZXJfaW5pdF9vbmNlOgotICoKLSAqIEluaXRpYWxpemVzIHRoZSBHTCBCdWZmZXIgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgotICogbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgR3N0R0xCYXNlQnVmZmVyIG9wZXJhdGlvbi4KLSAqLwotdm9pZAotZ3N0X2dsX2Jhc2VfYnVmZmVyX2luaXRfb25jZSAodm9pZCkKLXsKLSAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKLQotICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKLSAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9HTF9CQVNFX0JVRkZFUiwgImdsYnVmZmVyIiwgMCwKLSAgICAgICAgIk9wZW5HTCBCdWZmZXIiKTsKLQotICAgIF9nbF9iYXNlX2J1ZmZlcl9hbGxvY2F0b3IgPQotICAgICAgICBnX29iamVjdF9uZXcgKGdzdF9nbF9iYXNlX2J1ZmZlcl9hbGxvY2F0b3JfZ2V0X3R5cGUgKCksIE5VTEwpOwotCi0gICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9OQU1FLAotICAgICAgICBnc3Rfb2JqZWN0X3JlZiAoX2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvcikpOwotICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOwotICB9Ci19Ci0KLS8qKgotICogZ3N0X2lzX2dsX2Jhc2VfYnVmZmVyOgotICogQG1lbTphICNHc3RNZW1vcnkKLSAqIAotICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5IGF0IEBtZW0gaXMgYSAjR3N0R0xCYXNlQnVmZmVyCi0gKi8KLWdib29sZWFuCi1nc3RfaXNfZ2xfYmFzZV9idWZmZXIgKEdzdE1lbW9yeSAqIG1lbSkKLXsKLSAgcmV0dXJuIG1lbSAhPSBOVUxMICYmIG1lbS0+YWxsb2NhdG9yICE9IE5VTEwgJiYKLSAgICAgIGdfdHlwZV9pc19hIChHX09CSkVDVF9UWVBFIChtZW0tPmFsbG9jYXRvciksCi0gICAgICBHU1RfVFlQRV9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1IpOwotfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWJ1ZmZlci5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWJ1ZmZlci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4N2M2ODhkLi4wMDAwMDAwCi0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VidWZmZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NCArMCwwIEBACi0vKgotICogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX0dTVF9HTF9CQVNFX0JVRkZFUl9IXwotI2RlZmluZSBfR1NUX0dMX0JBU0VfQlVGRkVSX0hfCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdGFsbG9jYXRvci5oPgotI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KLQotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9md2QuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIEdTVF9UWVBFX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUiAoZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvcl9nZXRfdHlwZSgpKQotR1R5cGUgZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKLQotI2RlZmluZSBHU1RfSVNfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX0dMX0FMTE9DQVRPUikpCi0jZGVmaW5lIEdTVF9JU19HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1IpKQotI2RlZmluZSBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0dFVF9DTEFTUyhvYmopICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SLCBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SLCBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3IpKQotI2RlZmluZSBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SLCBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfQ0FTVChvYmopICAgICAgICAgICAgKChHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3IgKikob2JqKSkKLQotR1F1YXJrIGdzdF9nbF9iYXNlX2J1ZmZlcl9lcnJvcl9xdWFyayAodm9pZCk7Ci0jZGVmaW5lIEdTVF9HTF9CQVNFX0JVRkZFUl9FUlJPUiAoZ3N0X2dsX2Jhc2VfYnVmZmVyX2Vycm9yX3F1YXJrICgpKQotCi10eXBlZGVmIGVudW0KLXsKLSAgR1NUX0dMX0JBU0VfQlVGRkVSX0VSUk9SX0ZBSUxFRCwKLSAgR1NUX0dMX0JBU0VfQlVGRkVSX0VSUk9SX09MRF9MSUJTLAotICBHU1RfR0xfQkFTRV9CVUZGRVJfRVJST1JfUkVTT1VSQ0VfVU5BVkFJTEFCTEUsCi19IEdzdEdMQnVmZmVyRXJyb3I7Ci0KLXR5cGVkZWYgZW51bQotewotICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEICAgPSAoR1NUX01FTU9SWV9GTEFHX0xBU1QgPDwgMCksCi0gIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEICAgICA9IChHU1RfTUVNT1JZX0ZMQUdfTEFTVCA8PCAxKQotfSBHc3RHTEJhc2VCdWZmZXJGbGFnczsKLQotLyoqCi0gKiBHU1RfTUFQX0dMOgotICoKLSAqIEZsYWcgaW5kaWNhdGluZyB0aGF0IHdlIHNob3VsZCBtYXAgdGhlIEdMIG9iamVjdCBpbnN0ZWFkIG9mIHRvIHN5c3RlbSBtZW1vcnkuCi0gKgotICogQ29tYmluaW5nICNHU1RfTUFQX0dMIHdpdGggI0dTVF9NQVBfV1JJVEUgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aG91Z2gKLSAqIHlvdSBhcmUgd3JpdGluZyB0byBPcGVuR0wuIENvbnZlcnNlbHksIGNvbWJpbmluZyAjR1NUX01BUF9HTCB3aXRoCi0gKiAjR1NUX01BUF9SRUFEIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhvdWdoIHlvdSBhcmUgcmVhZGluZyBmcm9tIE9wZW5HTC4KLSAqLwotI2RlZmluZSBHU1RfTUFQX0dMIChHU1RfTUFQX0ZMQUdfTEFTVCA8PCAxKQotCi0vKioKLSAqIEdzdEdMQmFzZUJ1ZmZlcjoKLSAqIEBtZW06IHRoZSBwYXJlbnQgb2JqZWN0Ci0gKiBAY29udGV4dDogdGhlICNHc3RHTENvbnRleHQgdG8gdXNlIGZvciBHTCBvcGVyYXRpb25zCi0gKiBAaWQ6IHRoZSBidWZmZXIgaWQgZm9yIHRoaXMgbWVtb3J5Ci0gKiBAdGFyZ2V0OiB0aGUgR0wgdGFyZ2V0IG9mIHRoaXMgdGV4dHVyZSBmb3IgYmluZGluZyBwdXJwb3NlcwotICoKLSAqIFJlcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgYSBHTCBidWZmZXIKLSAqLwotc3RydWN0IF9Hc3RHTEJhc2VCdWZmZXIKLXsKLSAgR3N0TWVtb3J5ICAgICAgICAgICAgIG1lbTsKLQotICBHc3RHTENvbnRleHQgICAgICAgICAqY29udGV4dDsKLSAgZ3VpbnQgICAgICAgICAgICAgICAgIGlkOwotICBndWludCAgICAgICAgICAgICAgICAgdGFyZ2V0OwotCi0gIC8qIDxwcm90ZWN0ZWQ+ICovCi0gIEdNdXRleCAgICAgICAgICAgICAgICBsb2NrOwotCi0gIEdzdE1hcEZsYWdzICAgICAgICAgICBtYXBfZmxhZ3M7ICAgICAgIC8qIGN1bXVsYXRpdmUgbWFwIGZsYWdzICovCi0gIGdpbnQgICAgICAgICAgICAgICAgICBtYXBfY291bnQ7Ci0gIGdpbnQgICAgICAgICAgICAgICAgICBnbF9tYXBfY291bnQ7Ci0KLSAgZ3BvaW50ZXIgICAgICAgICAgICAgIGRhdGE7Ci0gIC8qIDxwcml2YXRlPiAqLwotICBncG9pbnRlciAgICAgICAgICAgICAgYWxsb2NfZGF0YTsKLX07Ci0KLXR5cGVkZWYgZ2Jvb2xlYW4gICAgICAgICAgKCpHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbikgICAgICAoR3N0R0xCYXNlQnVmZmVyICogYnVmZmVyLCBHRXJyb3IgKiogZXJyb3IpOwotdHlwZWRlZiBncG9pbnRlciAgICAgICAgICAoKkdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvck1hcEJ1ZmZlckZ1bmN0aW9uKSAgIChHc3RHTEJhc2VCdWZmZXIgKiBidWZmZXIsIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBtYXhzaXplKTsKLXR5cGVkZWYgdm9pZCAgICAgICAgICAgICAgKCpHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JVbm1hcEJ1ZmZlckZ1bmN0aW9uKSAoR3N0R0xCYXNlQnVmZmVyICogYnVmZmVyLCBHc3RNYXBJbmZvICogaW5mbyk7Ci10eXBlZGVmIEdzdEdMQmFzZUJ1ZmZlciAqICgqR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ29weUZ1bmN0aW9uKSAgICAgICAgKEdzdEdMQmFzZUJ1ZmZlciAqIGJ1ZmZlciwgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpOwotdHlwZWRlZiB2b2lkICAgICAgICAgICAgICAoKkdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbikgICAgIChHc3RHTEJhc2VCdWZmZXIgKiBidWZmZXIpOwotCi0vKioKLSAqIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvcgotICoKLSAqIE9wYXF1ZSAjR3N0R0xBbGxvY2F0b3Igc3RydWN0Ci0gKi8KLXN0cnVjdCBfR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yCi17Ci0gIEdzdEFsbG9jYXRvciBwYXJlbnQ7Ci19OwotCi0vKioKLSAqIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzOgotICoKLSAqIFRoZSAjR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3Mgb25seSBjb250YWlucyBwcml2YXRlIGRhdGEKLSAqLwotc3RydWN0IF9Hc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcwotewotICBHc3RBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Ci0KLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24gICAgICBjcmVhdGU7Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvck1hcEJ1ZmZlckZ1bmN0aW9uICAgbWFwX2J1ZmZlcjsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yVW5tYXBCdWZmZXJGdW5jdGlvbiB1bm1hcF9idWZmZXI7Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNvcHlGdW5jdGlvbiAgICAgICAgY29weTsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uICAgICBkZXN0cm95OwotfTsKLQotI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgotCi0jZGVmaW5lIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX0JVRkZFUiAibWVtb3J5OkdMQnVmZmVyIgotCi0vKioKLSAqIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfTkFNRToKLSAqCi0gKiBUaGUgbmFtZSBvZiB0aGUgR0wgYnVmZmVyIGFsbG9jYXRvcgotICovCi0jZGVmaW5lIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfTkFNRSAgICJHTEJ1ZmZlciIKLQotdm9pZCAgICAgICAgICBnc3RfZ2xfYmFzZV9idWZmZXJfaW5pdF9vbmNlICh2b2lkKTsKLWdib29sZWFuICAgICAgZ3N0X2lzX2dsX2Jhc2VfYnVmZmVyICAgICAgICAoR3N0TWVtb3J5ICogbWVtKTsKLQotdm9pZCAgICAgICAgICBnc3RfZ2xfYmFzZV9idWZmZXJfaW5pdCAgICAgIChHc3RHTEJhc2VCdWZmZXIgKiBtZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0TWVtb3J5ICogcGFyZW50LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTENvbnRleHQgKiBjb250ZXh0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBtYXhzaXplKTsKLQotR3N0R0xCYXNlQnVmZmVyICogZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jX2RhdGEgIChHc3RHTEJhc2VCdWZmZXIgKiBnbF9tZW0pOwotCi1nYm9vbGVhbiBnc3RfZ2xfYmFzZV9idWZmZXJfY29weV9idWZmZXJfc3ViX2RhdGEgKEdzdEdMQmFzZUJ1ZmZlciAqIHNyYywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xCYXNlQnVmZmVyICogZGVzdCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIG9mZnNldCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIHNpemUpOwotZ2Jvb2xlYW4gZ3N0X2dsX2Jhc2VfYnVmZmVyX21lbWNweSAgICAgICAgICAgICAgIChHc3RHTEJhc2VCdWZmZXIgKiBzcmMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQmFzZUJ1ZmZlciAqIGRlc3QsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzc2l6ZSBvZmZzZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzc2l6ZSBzaXplKTsKLQotR19FTkRfREVDTFMKLQotI2VuZGlmIC8qIF9HU1RfR0xfQlVGRkVSX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmMKaW5kZXggZTdiMmUyMy4uNTU2Y2Q0MyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWZpbHRlci5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuYwpAQCAtMjYsNiArMjYsMTggQEAKIAogI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgogCisvKioKKyAqIFNFQ1RJT046Z3N0Z2xiYXNlZmlsdGVyCisgKiBAc2hvcnRfZGVzY3JpcHRpb246ICNHc3RCYXNlVHJhbnNmb3JtIHN1YmNsYXNzIGZvciB0cmFuc2Zvcm1pbiBPcGVuR0wgcmVzb3VyY2VzCisgKiBAdGl0bGU6IEdzdEdMQmFzZUZpbHRlcgorICogQHNlZV9hbHNvOiAjR3N0QmFzZVRyYW5zZm9ybQorICoKKyAqICNHc3RHTEJhc2VGaWx0ZXIgaGFuZGxlcyB0aGUgbml0dHkgZ3JpdHR5IGRldGFpbHMgb2YgcmV0cmlldmluZyBhbiBPcGVuR0wKKyAqIGNvbnRleHQuICBJdCBhbHNvIHByb3ZpZGVkIHNvbWUgd3JhcHBlcnMgYXJvdW5kICNHc3RCYXNlVHJhbnNmb3JtJ3MKKyAqIHN0YXJ0KCksIHN0b3AoKSBhbmQgc2V0X2NhcHMoKSB2aXJ0dWFsIG1ldGhvZHMgdGhhdCBlbnN1cmUgYW4gT3BlbkdMIGNvbnRleHQKKyAqIGlzIGF2YWlsYWJsZSBhbmQgY3VycmVudCBpbiB0aGUgY2FsbGluZyB0aHJlYWQuCisgKi8KKwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsX2Jhc2VfZmlsdGVyX2RlYnVnCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOwogCkBAIC01Myw2ICs2NSw3IEBACiAgICAgICAgICJnbGJhc2VmaWx0ZXIiLCAwLCAiZ2xiYXNlZmlsdGVyIGVsZW1lbnQiKTsKICAgICApOwogCitzdGF0aWMgdm9pZCBnc3RfZ2xfYmFzZV9maWx0ZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwogc3RhdGljIHZvaWQgZ3N0X2dsX2Jhc2VfZmlsdGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKIHN0YXRpYyB2b2lkIGdzdF9nbF9iYXNlX2ZpbHRlcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCkBAIC02Nyw2ICs4MCw4IEBACiBzdGF0aWMgdm9pZCBnc3RfZ2xfYmFzZV9maWx0ZXJfcmVzZXQgKEdzdEdMQmFzZUZpbHRlciAqIGZpbHRlcik7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2Jhc2VfZmlsdGVyX3N0YXJ0IChHc3RCYXNlVHJhbnNmb3JtICogYnQpOwogc3RhdGljIGdib29sZWFuIGdzdF9nbF9iYXNlX2ZpbHRlcl9zdG9wIChHc3RCYXNlVHJhbnNmb3JtICogYnQpOworc3RhdGljIGdib29sZWFuIGdzdF9nbF9iYXNlX2ZpbHRlcl9zZXRfY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LAorICAgIEdzdENhcHMgKiBpbmNhcHMsIEdzdENhcHMgKiBvdXRjYXBzKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZ2xfYmFzZV9maWx0ZXJfZGVjaWRlX2FsbG9jYXRpb24gKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucywKICAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKIApAQCAtODUsMTAgKzEwMCwxMiBAQAogICBnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKICAgZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CiAKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfZ2xfYmFzZV9maWx0ZXJfZmluYWxpemU7CiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9nbF9iYXNlX2ZpbHRlcl9zZXRfcHJvcGVydHk7CiAgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9nbF9iYXNlX2ZpbHRlcl9nZXRfcHJvcGVydHk7CiAKICAgR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyktPnF1ZXJ5ID0gZ3N0X2dsX2Jhc2VfZmlsdGVyX3F1ZXJ5OworICBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKGtsYXNzKS0+c2V0X2NhcHMgPSBnc3RfZ2xfYmFzZV9maWx0ZXJfc2V0X2NhcHM7CiAgIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAoa2xhc3MpLT5zdGFydCA9IGdzdF9nbF9iYXNlX2ZpbHRlcl9zdGFydDsKICAgR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyktPnN0b3AgPSBnc3RfZ2xfYmFzZV9maWx0ZXJfc3RvcDsKICAgR1NUX0JBU0VfVFJBTlNGT1JNX0NMQVNTIChrbGFzcyktPmRlY2lkZV9hbGxvY2F0aW9uID0KQEAgLTEwOSwxMCArMTI2LDIzIEBACiBzdGF0aWMgdm9pZAogZ3N0X2dsX2Jhc2VfZmlsdGVyX2luaXQgKEdzdEdMQmFzZUZpbHRlciAqIGZpbHRlcikKIHsKKyAgZ3N0X2Jhc2VfdHJhbnNmb3JtX3NldF9xb3NfZW5hYmxlZCAoR1NUX0JBU0VfVFJBTlNGT1JNIChmaWx0ZXIpLCBUUlVFKTsKKwogICBmaWx0ZXItPnByaXYgPSBHU1RfR0xfQkFTRV9GSUxURVJfR0VUX1BSSVZBVEUgKGZpbHRlcik7CiB9CiAKIHN0YXRpYyB2b2lkCitnc3RfZ2xfYmFzZV9maWx0ZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdEdMQmFzZUZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0JBU0VfRklMVEVSIChvYmplY3QpOworCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZmaWx0ZXItPmluX2NhcHMsIE5VTEwpOworICBnc3RfY2Fwc19yZXBsYWNlICgmZmlsdGVyLT5vdXRfY2FwcywgTlVMTCk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAogZ3N0X2dsX2Jhc2VfZmlsdGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKICAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQogewpAQCAtMTUwLDYgKzE4MCw4IEBACiAgIGlmIChmaWx0ZXItPmRpc3BsYXkpCiAgICAgZ3N0X2dsX2Rpc3BsYXlfZmlsdGVyX2dsX2FwaSAoZmlsdGVyLT5kaXNwbGF5LAogICAgICAgICBmaWx0ZXJfY2xhc3MtPnN1cHBvcnRlZF9nbF9hcGkpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMjk0LDYgKzMyNiw5IEBACiAgIEdzdEdMQmFzZUZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0JBU0VfRklMVEVSIChkYXRhKTsKICAgR3N0R0xCYXNlRmlsdGVyQ2xhc3MgKmZpbHRlcl9jbGFzcyA9IEdTVF9HTF9CQVNFX0ZJTFRFUl9HRVRfQ0xBU1MgKGZpbHRlcik7CiAKKyAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgKGZpbHRlci0+Y29udGV4dCwKKyAgICAgICJzdGFydGluZyBlbGVtZW50ICVzIiwgR1NUX09CSkVDVF9OQU1FIChmaWx0ZXIpKTsKKwogICBpZiAoZmlsdGVyX2NsYXNzLT5nbF9zdGFydCkgewogICAgIGZpbHRlci0+cHJpdi0+Z2xfcmVzdWx0ID0gZmlsdGVyX2NsYXNzLT5nbF9zdGFydCAoZmlsdGVyKTsKICAgfSBlbHNlIHsKQEAgLTMwOSw2ICszNDQsOSBAQAogICBHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAoZGF0YSk7CiAgIEdzdEdMQmFzZUZpbHRlckNsYXNzICpmaWx0ZXJfY2xhc3MgPSBHU1RfR0xfQkFTRV9GSUxURVJfR0VUX0NMQVNTIChmaWx0ZXIpOwogCisgIGdzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChmaWx0ZXItPmNvbnRleHQsCisgICAgICAic3RvcHBpbmcgZWxlbWVudCAlcyIsIEdTVF9PQkpFQ1RfTkFNRSAoZmlsdGVyKSk7CisKICAgaWYgKGZpbHRlci0+cHJpdi0+Z2xfc3RhcnRlZCkgewogICAgIGlmIChmaWx0ZXJfY2xhc3MtPmdsX3N0b3ApCiAgICAgICBmaWx0ZXJfY2xhc3MtPmdsX3N0b3AgKGZpbHRlcik7CkBAIC0zMTcsMTEgKzM1NSwyMiBAQAogICBmaWx0ZXItPnByaXYtPmdsX3N0YXJ0ZWQgPSBGQUxTRTsKIH0KIAorc3RhdGljIHZvaWQKK19nbF9zZXRfY2FwcyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xCYXNlRmlsdGVyICogZmlsdGVyKQoreworICBHc3RHTEJhc2VGaWx0ZXJDbGFzcyAqZmlsdGVyX2NsYXNzID0gR1NUX0dMX0JBU0VfRklMVEVSX0dFVF9DTEFTUyAoZmlsdGVyKTsKKworICBpZiAoZmlsdGVyX2NsYXNzLT5nbF9zZXRfY2FwcykKKyAgICBmaWx0ZXItPnByaXYtPmdsX3Jlc3VsdCA9CisgICAgICAgIGZpbHRlcl9jbGFzcy0+Z2xfc2V0X2NhcHMgKGZpbHRlciwgZmlsdGVyLT5pbl9jYXBzLCBmaWx0ZXItPm91dF9jYXBzKTsKK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfZ2xfYmFzZV9maWx0ZXJfZGVjaWRlX2FsbG9jYXRpb24gKEdzdEJhc2VUcmFuc2Zvcm0gKiB0cmFucywKICAgICBHc3RRdWVyeSAqIHF1ZXJ5KQogewogICBHc3RHTEJhc2VGaWx0ZXIgKmZpbHRlciA9IEdTVF9HTF9CQVNFX0ZJTFRFUiAodHJhbnMpOworICBHc3RHTEJhc2VGaWx0ZXJDbGFzcyAqZmlsdGVyX2NsYXNzID0gR1NUX0dMX0JBU0VfRklMVEVSX0dFVF9DTEFTUyAoZmlsdGVyKTsKICAgR0Vycm9yICplcnJvciA9IE5VTEw7CiAgIGdib29sZWFuIG5ld19jb250ZXh0ID0gRkFMU0U7CiAKQEAgLTM0OSwxMSArMzk4LDE3IEBACiAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlci0+ZGlzcGxheSk7CiAgIH0KIAotICBpZiAobmV3X2NvbnRleHQpIHsKKyAgaWYgKG5ld19jb250ZXh0IHx8ICFmaWx0ZXItPnByaXYtPmdsX3N0YXJ0ZWQpIHsKICAgICBpZiAoZmlsdGVyLT5wcml2LT5nbF9zdGFydGVkKQogICAgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoZmlsdGVyLT5jb250ZXh0LCBnc3RfZ2xfYmFzZV9maWx0ZXJfZ2xfc3RvcCwKICAgICAgICAgICBmaWx0ZXIpOwogCisgICAgeworICAgICAgR3N0R0xBUEkgY3VycmVudF9nbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChmaWx0ZXItPmNvbnRleHQpOworICAgICAgaWYgKChjdXJyZW50X2dsX2FwaSAmIGZpbHRlcl9jbGFzcy0+c3VwcG9ydGVkX2dsX2FwaSkgPT0gMCkKKyAgICAgICAgZ290byB1bnN1cHBvcnRlZF9nbF9hcGk7CisgICAgfQorCiAgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoZmlsdGVyLT5jb250ZXh0LCBnc3RfZ2xfYmFzZV9maWx0ZXJfZ2xfc3RhcnQsCiAgICAgICAgIGZpbHRlcik7CiAKQEAgLTM2MSw5ICs0MTYsMjkgQEAKICAgICAgIGdvdG8gZXJyb3I7CiAgIH0KIAorICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChmaWx0ZXItPmNvbnRleHQsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2dsX3NldF9jYXBzLCBmaWx0ZXIpOworICBpZiAoIWZpbHRlci0+cHJpdi0+Z2xfcmVzdWx0KQorICAgIGdvdG8gZXJyb3I7CisKICAgcmV0dXJuIEdTVF9CQVNFX1RSQU5TRk9STV9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGVjaWRlX2FsbG9jYXRpb24gKHRyYW5zLAogICAgICAgcXVlcnkpOwogCisKK3Vuc3VwcG9ydGVkX2dsX2FwaToKKyAgeworICAgIEdzdEdMQVBJIGdsX2FwaSA9IGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGZpbHRlci0+Y29udGV4dCk7CisgICAgZ2NoYXIgKmdsX2FwaV9zdHIgPSBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoZ2xfYXBpKTsKKyAgICBnY2hhciAqc3VwcG9ydGVkX2dsX2FwaV9zdHIgPQorICAgICAgICBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoZmlsdGVyX2NsYXNzLT5zdXBwb3J0ZWRfZ2xfYXBpKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyLCBSRVNPVVJDRSwgQlVTWSwKKyAgICAgICAgKCJHTCBBUEkncyBub3QgY29tcGF0aWJsZSBjb250ZXh0OiAlcyBzdXBwb3J0ZWQ6ICVzIiwgZ2xfYXBpX3N0ciwKKyAgICAgICAgICAgIHN1cHBvcnRlZF9nbF9hcGlfc3RyKSwgKE5VTEwpKTsKKworICAgIGdfZnJlZSAoc3VwcG9ydGVkX2dsX2FwaV9zdHIpOworICAgIGdfZnJlZSAoZ2xfYXBpX3N0cik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CiBjb250ZXh0X2Vycm9yOgogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHRyYW5zLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpLApAQCAtMzc5LDYgKzQ1NCwxOCBAQAogICB9CiB9CiAKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2Jhc2VfZmlsdGVyX3NldF9jYXBzIChHc3RCYXNlVHJhbnNmb3JtICogYnQsIEdzdENhcHMgKiBpbmNhcHMsCisgICAgR3N0Q2FwcyAqIG91dGNhcHMpCit7CisgIEdzdEdMQmFzZUZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0JBU0VfRklMVEVSIChidCk7CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJmZpbHRlci0+aW5fY2FwcywgaW5jYXBzKTsKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJmZpbHRlci0+b3V0X2NhcHMsIG91dGNhcHMpOworCisgIHJldHVybiBUUlVFOworfQorCiBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KIGdzdF9nbF9iYXNlX2ZpbHRlcl9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAogICAgIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlZmlsdGVyLmgKaW5kZXggNWVkMzk4MC4uZmExNmQwNyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZWZpbHRlci5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VmaWx0ZXIuaApAQCAtNDEsMTIgKzQxLDExIEBACiAKIC8qKgogICogR3N0R0xCYXNlRmlsdGVyOgotICogQGJhc2VfdHJhbnNmb3JtOiBwYXJlbnQgI0dzdEJhc2VUcmFuc2Zvcm0KKyAqIEBwYXJlbnQ6IHBhcmVudCAjR3N0QmFzZVRyYW5zZm9ybQogICogQGRpc3BsYXk6IHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCAjR3N0R0xEaXNwbGF5CiAgKiBAY29udGV4dDogdGhlIGN1cnJlbnRseSBjb25maWd1cmVkICNHc3RHTENvbnRleHQKLSAqCi0gKiAjR3N0R0xCYXNlRmlsdGVyIGlzIGEgYmFzZSBjbGFzcyB0aGF0IHByb3ZpZGVzIHRoZSBsb2dpYyBvZiBnZXR0aW5nIHRoZQotICogR0wgY29udGV4dCBmcm9tIHRoZSBwaXBlbGluZS4KKyAqIEBpbl9jYXBzOiB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQgaW5wdXQgI0dzdENhcHMKKyAqIEBvdXRfY2FwczogdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIG91dHB1dCAjR3N0Q2FwcwogICovCiBzdHJ1Y3QgX0dzdEdMQmFzZUZpbHRlcgogewpAQCAtNTUsNiArNTQsOSBAQAogICBHc3RHTERpc3BsYXkgICAgICAqZGlzcGxheTsKICAgR3N0R0xDb250ZXh0ICAgICAgKmNvbnRleHQ7CiAKKyAgR3N0Q2FwcyAgICAgICAgICAgKmluX2NhcHM7CisgIEdzdENhcHMgICAgICAgICAgICpvdXRfY2FwczsKKwogICAvKiA8cHJpdmF0ZT4gKi8KICAgZ3BvaW50ZXIgX3BhZGRpbmdbR1NUX1BBRERJTkddOwogCkBAIC02Myw5ICs2NSwxMSBAQAogCiAvKioKICAqIEdzdEdMQmFzZUZpbHRlckNsYXNzOgotICogQGJhc2VfdHJhbnNmb3JtX2NsYXNzOiBwYXJlbnQgY2xhc3MKKyAqIEBwYXJlbnRfY2xhc3M6IHBhcmVudCBjbGFzcworICogQHN1cHBvcnRlZF9nbF9hcGk6IHRoZSBsb2dpY2FsLU9SIG9mICNHc3RHTEFQSSdzIHN1cHBvcnRlZCBieSB0aGlzIGVsZW1lbnQKICAqIEBnbF9zdGFydDogY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQgdG8gc2V0dXAgdGhlIGVsZW1lbnQgR0wgc3RhdGUuCiAgKiBAZ2xfc3RvcDogY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQgdG8gc2V0dXAgdGhlIGVsZW1lbnQgR0wgc3RhdGUuCisgKiBAZ2xfc2V0X2NhcHM6IGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkIHdoZW4gY2FwcyBhcmUgc2V0IG9uIEBmaWx0ZXIuCiAgKi8KIHN0cnVjdCBfR3N0R0xCYXNlRmlsdGVyQ2xhc3MKIHsKQEAgLTc0LDcgKzc4LDkgQEAKIAogICBnYm9vbGVhbiAoKmdsX3N0YXJ0KSAgICAgICAgICAoR3N0R0xCYXNlRmlsdGVyICpmaWx0ZXIpOwogICB2b2lkICAgICAoKmdsX3N0b3ApICAgICAgICAgICAoR3N0R0xCYXNlRmlsdGVyICpmaWx0ZXIpOworICBnYm9vbGVhbiAoKmdsX3NldF9jYXBzKSAgICAgICAoR3N0R0xCYXNlRmlsdGVyICpmaWx0ZXIsIEdzdENhcHMgKiBpbmNhcHMsIEdzdENhcHMgKiBvdXRjYXBzKTsKIAorICAvKiA8cHJpdmF0ZT4gKi8KICAgZ3BvaW50ZXIgX3BhZGRpbmdbR1NUX1BBRERJTkddOwogfTsKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MmMxOWMKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5LmMKQEAgLTAsMCArMSw3MzEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg+CisKKy8qKgorICogU0VDVElPTjpnc3RnbGJhc2VtZW1vcnkKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogbWVtb3J5IHN1YmNsYXNzIGZvciBHTCBidWZmZXJzCisgKiBAc2VlX2Fsc286ICNHc3RNZW1vcnksICNHc3RBbGxvY2F0b3IKKyAqCisgKiBHc3RHTEJhc2VNZW1vcnkgaXMgYSAjR3N0TWVtb3J5IHN1YmNsYXNzIHByb3ZpZGluZyB0aGUgYmFzaXMgb2Ygc3VwcG9ydAorICogZm9yIHRoZSBtYXBwaW5nIG9mIEdMIGJ1ZmZlcnMuCisgKgorICogRGF0YSBpcyB1cGxvYWRlZCBvciBkb3dubG9hZGVkIGZyb20gdGhlIEdQVSBhcyBpcyBuZWNlc3NhcnkuCisgKi8KKworI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKKyNkZWZpbmUgVVNJTkdfT1BFTkdMMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAxKSkKKyNkZWZpbmUgVVNJTkdfR0xFUyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTLCAxLCAwKSkKKyNkZWZpbmUgVVNJTkdfR0xFUzIoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDIsIDApKQorI2RlZmluZSBVU0lOR19HTEVTMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlkpOworI2RlZmluZSBHU1RfQ0FUX0RFRlVBTFQgR1NUX0NBVF9HTF9CQVNFX01FTU9SWQorCitHUXVhcmsKK2dzdF9nbF9iYXNlX21lbW9yeV9lcnJvcl9xdWFyayAodm9pZCkKK3sKKyAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nICgiZ3N0LWdsLWJhc2UtYnVmZmVyLWVycm9yLXF1YXJrIik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2RlZmF1bHRfY3JlYXRlIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfQkFTRV9NRU1PUllfRVJST1IsIEdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUl9GQUlMRUQsCisgICAgICAic3ViY2xhc3Mgc2hvdWxkIGRlZmluZSBjcmVhdGUoKSB2ZnVuYyIpOworCisgIGdfY3JpdGljYWwgKCJzdWJjbGFzcyBzaG91bGQgb3ZlcnJpZGUgIgorICAgICAgIkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzOjpjcmVhdGUoKSBmdW5jdGlvbiIpOworCisgIHJldHVybiBGQUxTRTsKK30KKworc3RydWN0IGNyZWF0ZV9kYXRhCit7CisgIEdzdEdMQmFzZU1lbW9yeSAqbWVtOworICBnYm9vbGVhbiByZXN1bHQ7Cit9OworCitzdGF0aWMgdm9pZAorX21lbV9jcmVhdGVfZ2wgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCBjcmVhdGVfZGF0YSAqdHJhbnNmZXIpCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgIkNyZWF0ZSBtZW1vcnkgJXAiLCB0cmFuc2Zlci0+bWVtKTsKKworICBhbGxvY19jbGFzcyA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAodHJhbnNmZXItPm1lbS0+bWVtLmFsbG9jYXRvcik7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoYWxsb2NfY2xhc3MtPmNyZWF0ZSAhPSBOVUxMKTsKKworICB0cmFuc2Zlci0+bWVtLT5xdWVyeSA9IGdzdF9nbF9xdWVyeV9uZXcgKGNvbnRleHQsIEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQpOworCisgIGlmICgodHJhbnNmZXItPnJlc3VsdCA9IGFsbG9jX2NsYXNzLT5jcmVhdGUgKHRyYW5zZmVyLT5tZW0sICZlcnJvcikpKQorICAgIHJldHVybjsKKworICBnX2Fzc2VydCAoZXJyb3IgIT0gTlVMTCk7CisKKyAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgIkZhaWxlZCB0byBjcmVhdGUgR0wgYnVmZmVyOiAlcyIsCisgICAgICBlcnJvci0+bWVzc2FnZSk7CisgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7Cit9CisKKy8qKgorICogZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXQ6CisgKiBAbWVtOiB0aGUgI0dzdEdMQmFzZU1lbW9yeSB0byBpbml0aWFsaXplCisgKiBAYWxsb2NhdG9yOiB0aGUgI0dzdEFsbG9jYXRvciB0byBpbml0aWFsaXplIHdpdGgKKyAqIEBwYXJlbnQ6IChhbGxvdy1ub25lKTogdGhlIHBhcmVudCAjR3N0TWVtb3J5IHRvIGluaXRpYWxpemUgd2l0aAorICogQGNvbnRleHQ6IHRoZSAjR3N0R0xDb250ZXh0IHRvIGluaXRpYWxpemUgd2l0aAorICogQHBhcmFtczogKGFsbG93LW5vbmUpOiB0aGUgQEdzdEFsbG9jYXRpb25QYXJhbXMgdG8gaW5pdGlhbGl6ZSB3aXRoCisgKiBAc2l6ZTogdGhlIG51bWJlciBvZiBieXRlcyB0byBiZSBhbGxvY2F0ZWQKKyAqIEB1c2VyX2RhdGE6IChhbGxvdy1ub25lKTogdXNlciBkYXRhIHRvIGNhbGwgQG5vdGlmeSB3aXRoCisgKiBAbm90aWZ5OiAoYWxsb3ctbm9uZSk6IGEgI0dEZXN0cm95Tm90aWZ5CisgKgorICogSW5pdGlhbGl6ZXMgQG1lbSB3aXRoIHRoZSByZXF1aXJlZCBwYXJhbWV0ZXJzCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdCAoR3N0R0xCYXNlTWVtb3J5ICogbWVtLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgR3N0TWVtb3J5ICogcGFyZW50LCBHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAorICAgIGdzaXplIHNpemUsIGdwb2ludGVyIHVzZXJfZGF0YSwgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQoreworICBnc2l6ZSBhbGlnbiA9IGdzdF9tZW1vcnlfYWxpZ25tZW50LCBvZmZzZXQgPSAwLCBtYXhzaXplOworICBHc3RNZW1vcnlGbGFncyBmbGFncyA9IDA7CisgIHN0cnVjdCBjcmVhdGVfZGF0YSBkYXRhOworCisgIC8qIEEgbm90ZSBvbiBzaXplcy4KKyAgICogZ2xfbWVtLT5hbGxvY19zaXplOiB0aGUgc2l6ZSB0byBhbGxvY2F0ZSB3aGVuIHdlIGNvbnRyb2wgdGhlIGFsbG9jYXRpb24uCisgICAqICAgICAgICAgICAgICAgICAgICAgU2l6ZSBvZiB0aGUgdW5hbGlnbmVkIGFsbG9jYXRpb24uCisgICAqIG1lbS0+bWF4c2l6ZTogdGhlIHNpemUgdGhhdCBpcyB1c2VkIGJ5IEdzdE1lbW9yeSBmb3IgbWFwcGluZywgdG8gbWFwIHRoZQorICAgKiAgICAgICAgICAgICAgIGVudGlyZSBtZW1vcnkuIFRoZSBzaXplIG9mIHRoZSBhbGlnbmVkIGFsbG9jYXRpb24KKyAgICogbWVtLT5zaXplOiByZXByZXNlbnRzIHRoZSBzaXplIG9mIHRoZSB2YWxpZCBkYXRhLiBDYW4gYmUgcmVkdWNlZCB3aXRoCisgICAqICAgICAgICAgICAgZ3N0X21lbW9yeV9yZXNpemUoKQorICAgKgorICAgKiBJdCBob2xkcyB0aGF0OgorICAgKiBtZW0tPnNpemUgKyBtZW0tPm9mZnNldCA8PSBtZW0tPm1heHNpemUKKyAgICogYW5kCisgICAqIG1lbS0+bWF4c2l6ZSArIGFsaWdubWVudCBvZmZzZXQgPD0gZ2xfbWVtLT5hbGxvY19zaXplCisgICAqCisgICAqIFdlIG5lZWQgdG8gYWRkIHRoZSBhbGlnbm1lbnQgbWFzayB0byB0aGUgYWxsb2NhdGVkIHNpemUgaW4gb3JkZXIgdG8gaGF2ZQorICAgKiB0aGUgZnJlZWRvbSB0byBhbGlnbiB0aGUgZ2xfbWVtLT5kYXRhIHBvaW50ZXIgY29ycmVjdGx5IHdoaWNoIG1heSBiZSBvZmZzZXQKKyAgICogYnkgYXQgbW9zdCBhbGlnbiBieXRlcyBpbiB0aGUgYWxsb2NfZGF0YSBwb2ludGVyLgorICAgKgorICAgKiBtYXhzaXplIGlzIG5vdCBzdWl0YWJsZSBmb3IgdGhpcyBhcyBpdCBpcyB1c2VkIGJ5IEdzdE1lbW9yeSBhcyB0aGUgc2l6ZQorICAgKiB0byBtYXAgd2l0aC4KKyAgICovCisgIG1lbS0+YWxsb2Nfc2l6ZSA9IG1heHNpemUgPSBzaXplOworICBpZiAocGFyYW1zKSB7CisgICAgZmxhZ3MgPSBwYXJhbXMtPmZsYWdzOworICAgIGFsaWduIHw9IHBhcmFtcy0+YWxpZ247CisgICAgb2Zmc2V0ID0gcGFyYW1zLT5wcmVmaXg7CisgICAgbWF4c2l6ZSArPSBwYXJhbXMtPnByZWZpeCArIHBhcmFtcy0+cGFkZGluZzsKKworICAgIC8qIGRlYWxzIHdpdGggYW55IGFsaWdubWVudCAqLworICAgIG1lbS0+YWxsb2Nfc2l6ZSA9IG1heHNpemUgKyBhbGlnbjsKKyAgfQorCisgIGdzdF9tZW1vcnlfaW5pdCAoR1NUX01FTU9SWV9DQVNUIChtZW0pLCBmbGFncywgYWxsb2NhdG9yLCBwYXJlbnQsIG1heHNpemUsCisgICAgICBhbGlnbiwgb2Zmc2V0LCBzaXplKTsKKworICBtZW0tPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7CisgIG1lbS0+bm90aWZ5ID0gbm90aWZ5OworICBtZW0tPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKworICBnX211dGV4X2luaXQgKCZtZW0tPmxvY2spOworCisgIGRhdGEubWVtID0gbWVtOworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX21lbV9jcmVhdGVfZ2wsICZkYXRhKTsKKyAgaWYgKCFkYXRhLnJlc3VsdCkgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksCisgICAgICAgICJDb3VsZCBub3QgY3JlYXRlIEdMIGJ1ZmZlciB3aXRoIGNvbnRleHQ6JXAiLCBjb250ZXh0KTsKKyAgfQorCisgIEdTVF9DQVRfREVCVUcgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksICJuZXcgR0wgYnVmZmVyIG1lbW9yeTolcCBzaXplOiUiCisgICAgICBHX0dTSVpFX0ZPUk1BVCwgbWVtLCBtYXhzaXplKTsKK30KKworc3RhdGljIGdwb2ludGVyCitfYWxpZ25fZGF0YSAoZ3BvaW50ZXIgZGF0YSwgZ3NpemUgYWxpZ24pCit7CisgIGd1aW50OCAqcmV0ID0gZGF0YTsKKyAgZ3NpemUgYW9mZnNldDsKKworICAvKiBkbyBhbGlnbm1lbnQsIGRhdGEgbXVzdCBoYXZlIGVub3VnaCBwYWRkaW5nIGF0IHRoZSBlbmQgdG8gbW92ZSBhdCBtb3N0CisgICAqIGFsaWduIGJ5dGVzICovCisgIGlmICgoYW9mZnNldCA9ICgoZ3VpbnRwdHIpIHJldCAmIGFsaWduKSkpIHsKKyAgICBhb2Zmc2V0ID0gKGFsaWduICsgMSkgLSBhb2Zmc2V0OworICAgIHJldCArPSBhb2Zmc2V0OworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworLyogc3ViY2xhc3MgdXNhZ2Ugb25seSAqLworZ2Jvb2xlYW4KK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhIChHc3RHTEJhc2VNZW1vcnkgKiBnbF9tZW0pCit7CisgIEdzdE1lbW9yeSAqbWVtID0gKEdzdE1lbW9yeSAqKSBnbF9tZW07CisKKyAgaWYgKGdsX21lbS0+ZGF0YSkKKyAgICByZXR1cm4gVFJVRTsKKworICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgIiVwIGF0dGVtcHRpbmcgYWxsb2NhdGlvbiBvZiBkYXRhICIKKyAgICAgICJwb2ludGVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQsIGdsX21lbSwgZ2xfbWVtLT5hbGxvY19zaXplKTsKKyAgZ2xfbWVtLT5hbGxvY19kYXRhID0gZ190cnlfbWFsbG9jIChnbF9tZW0tPmFsbG9jX3NpemUpOworCisgIGlmIChnbF9tZW0tPmFsbG9jX2RhdGEgPT0gTlVMTCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgZ2xfbWVtLT5kYXRhID0gX2FsaWduX2RhdGEgKGdsX21lbS0+YWxsb2NfZGF0YSwgbWVtLT5hbGlnbik7CisKKyAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgIiVwIGFsbG9jYXRlZCBkYXRhIHBvaW50ZXIgYWxsb2MgJXAsICIKKyAgICAgICJkYXRhICVwIiwgZ2xfbWVtLCBnbF9tZW0tPmFsbG9jX2RhdGEsIGdsX21lbS0+ZGF0YSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0cnVjdCBtYXBfZGF0YQoreworICBHc3RHTEJhc2VNZW1vcnkgKm1lbTsKKyAgR3N0TWFwSW5mbyAqaW5mbzsKKyAgZ3NpemUgc2l6ZTsKKyAgZ3BvaW50ZXIgZGF0YTsKK307CisKK3N0YXRpYyB2b2lkCitfbWFwX2RhdGFfZ2wgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCBtYXBfZGF0YSAqdHJhbnNmZXIpCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKyAgR3N0R0xCYXNlTWVtb3J5ICptZW0gPSB0cmFuc2Zlci0+bWVtOworICBHc3RNYXBJbmZvICppbmZvID0gdHJhbnNmZXItPmluZm87CisKKyAgYWxsb2NfY2xhc3MgPQorICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1MgKHRyYW5zZmVyLT5tZW0tPm1lbS5hbGxvY2F0b3IpOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT5tYXAgIT0gTlVMTCk7CisKKyAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKKworICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwgIm1hcHBpbmcgbWVtICVwIGZsYWdzICUwNHgiLCBtZW0sCisgICAgICBpbmZvLT5mbGFncyk7CisKKyAgLyogRklYTUU6IHZhbGlkYXRlIG1hcCBmbGFncyBiYXNlZCBvbiB0aGUgbWVtb3J5IGRvbWFpbiAqLworICBpZiAobWVtLT5tYXBfY291bnQrKyA9PSAwKQorICAgIG1lbS0+bWFwX2ZsYWdzID0gaW5mby0+ZmxhZ3M7CisgIGVsc2UgeworICAgIC8qIGFzc2VydCB0aGF0IHRoZSBmbGFncyBhcmUgYSBzdWJzZXQgb2YgdGhlIGZpcnN0IG1hcCBmbGFncyAqLworICAgIGdfYXNzZXJ0ICgoKChHU1RfTUFQX0dMIC0gMSkgJiBpbmZvLT5mbGFncykgJiBtZW0tPm1hcF9mbGFncykgIT0gMCk7CisgICAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksICJtdWx0aXBsZSBtYXAgbm8gJWQgZmxhZ3MgJTA0eCAiCisgICAgICAgICJhbGwgZmxhZ3MgJTA0eCIsIG1lbS0+bWFwX2NvdW50LCBpbmZvLT5mbGFncywgbWVtLT5tYXBfZmxhZ3MpOworICB9CisKKyAgaWYgKChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpICE9IChtZW0tPm1hcF9mbGFncyAmIEdTVF9NQVBfR0wpKQorICAgIG1lbS0+bWFwX2ZsYWdzIHw9IEdTVF9NQVBfR0w7CisKKyAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkKKyAgICBtZW0tPmdsX21hcF9jb3VudCsrOworCisgIHRyYW5zZmVyLT5kYXRhID0gYWxsb2NfY2xhc3MtPm1hcCAodHJhbnNmZXItPm1lbSwgdHJhbnNmZXItPmluZm8sCisgICAgICB0cmFuc2Zlci0+c2l6ZSk7CisKKyAgaWYgKHRyYW5zZmVyLT5kYXRhKSB7CisgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgeworICAgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKKyAgICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sCisgICAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCk7CisgICAgICBHU1RfTUVNT1JZX0ZMQUdfVU5TRVQgKG1lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKKyAgICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCk7CisgICAgICBHU1RfTUVNT1JZX0ZMQUdfVU5TRVQgKG1lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpOworICAgIH0KKyAgfQorCisgIGdfbXV0ZXhfdW5sb2NrICgmbWVtLT5sb2NrKTsKK30KKworc3RhdGljIGdwb2ludGVyCitfbWVtX21hcF9mdWxsIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQoreworICBzdHJ1Y3QgbWFwX2RhdGEgdHJhbnNmZXI7CisKKyAgdHJhbnNmZXIubWVtID0gbWVtOworICB0cmFuc2Zlci5pbmZvID0gaW5mbzsKKyAgdHJhbnNmZXIuc2l6ZSA9IHNpemU7CisgIHRyYW5zZmVyLmRhdGEgPSBOVUxMOworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKG1lbS0+Y29udGV4dCwKKyAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfbWFwX2RhdGFfZ2wsICZ0cmFuc2Zlcik7CisKKyAgcmV0dXJuIHRyYW5zZmVyLmRhdGE7Cit9CisKK3N0cnVjdCB1bm1hcF9kYXRhCit7CisgIEdzdEdMQmFzZU1lbW9yeSAqbWVtOworICBHc3RNYXBJbmZvICppbmZvOworfTsKKworc3RhdGljIHZvaWQKK191bm1hcF9kYXRhX2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgdW5tYXBfZGF0YSAqdHJhbnNmZXIpCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKyAgR3N0R0xCYXNlTWVtb3J5ICptZW0gPSB0cmFuc2Zlci0+bWVtOworICBHc3RNYXBJbmZvICppbmZvID0gdHJhbnNmZXItPmluZm87CisKKyAgYWxsb2NfY2xhc3MgPQorICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1MgKHRyYW5zZmVyLT5tZW0tPm1lbS5hbGxvY2F0b3IpOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT51bm1hcCAhPSBOVUxMKTsKKworICBnX211dGV4X2xvY2sgKCZtZW0tPmxvY2spOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLCAidW5tYXBwaW5nIG1lbSAlcCBmbGFncyAlMDR4IiwgbWVtLAorICAgICAgaW5mby0+ZmxhZ3MpOworCisgIGFsbG9jX2NsYXNzLT51bm1hcCAodHJhbnNmZXItPm1lbSwgdHJhbnNmZXItPmluZm8pOworCisgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wgJiYgLS1tZW0tPmdsX21hcF9jb3VudCkKKyAgICAvKiB1bnNldCB0aGUgZ2wgZmxhZyAqLworICAgIG1lbS0+bWFwX2ZsYWdzICY9IH5HU1RfTUFQX0dMOworCisgIGlmICgtLW1lbS0+bWFwX2NvdW50IDw9IDApIHsKKyAgICBtZW0tPm1hcF9mbGFncyA9IDA7CisgIH0KKworICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSB7CisgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKKyAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCk7CisgIH0gZWxzZSB7CisgICAgaWYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkKKyAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpOworICB9CisKKyAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworfQorCitzdGF0aWMgdm9pZAorX21lbV91bm1hcF9mdWxsIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvKQoreworICBzdHJ1Y3QgdW5tYXBfZGF0YSB0cmFuc2ZlcjsKKworICB0cmFuc2Zlci5tZW0gPSBtZW07CisgIHRyYW5zZmVyLmluZm8gPSBpbmZvOworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKG1lbS0+Y29udGV4dCwKKyAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfdW5tYXBfZGF0YV9nbCwgJnRyYW5zZmVyKTsKK30KKworc3RhdGljIEdzdEdMQmFzZU1lbW9yeSAqCitfZGVmYXVsdF9jb3B5IChHc3RHTEJhc2VNZW1vcnkgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICByZXR1cm4gTlVMTDsKK30KKworc3RydWN0IGNvcHlfcGFyYW1zCit7CisgIEdzdEdMQmFzZU1lbW9yeSAqc3JjOworICBHc3RHTEJhc2VNZW1vcnkgKmRlc3Q7CisgIGdzc2l6ZSBvZmZzZXQ7CisgIGdzc2l6ZSBzaXplOworICBnYm9vbGVhbiByZXN1bHQ7Cit9OworCitzdGF0aWMgdm9pZAorX21lbV9jb3B5X2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgY29weV9wYXJhbXMgKnRyYW5zZmVyKQoreworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7CisKKyAgYWxsb2NfY2xhc3MgPQorICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1MgKHRyYW5zZmVyLT5zcmMtPm1lbS5hbGxvY2F0b3IpOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT5jb3B5ICE9IE5VTEwpOworCisgIHRyYW5zZmVyLT5kZXN0ID0KKyAgICAgIGFsbG9jX2NsYXNzLT5jb3B5ICh0cmFuc2Zlci0+c3JjLCB0cmFuc2Zlci0+b2Zmc2V0LCB0cmFuc2Zlci0+c2l6ZSk7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX21lbV9jb3B5IChHc3RHTEJhc2VNZW1vcnkgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICBzdHJ1Y3QgY29weV9wYXJhbXMgdHJhbnNmZXI7CisKKyAgdHJhbnNmZXIuZGVzdCA9IE5VTEw7CisgIHRyYW5zZmVyLnNyYyA9IHNyYzsKKyAgdHJhbnNmZXIub2Zmc2V0ID0gb2Zmc2V0OworICB0cmFuc2Zlci5zaXplID0gc2l6ZTsKKyAgaWYgKHNpemUgPT0gLTEgfHwgc2l6ZSA+IDApCisgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoc3JjLT5jb250ZXh0LAorICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX21lbV9jb3B5X2dsLCAmdHJhbnNmZXIpOworCisgIHJldHVybiAoR3N0TWVtb3J5ICopIHRyYW5zZmVyLmRlc3Q7Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX21lbV9zaGFyZSAoR3N0R0xCYXNlTWVtb3J5ICogbWVtLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX21lbV9pc19zcGFuIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0xLCBHc3RHTEJhc2VNZW1vcnkgKiBtZW0yLCBnc2l6ZSAqIG9mZnNldCkKK3sKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK19tZW1fYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgZ19jcml0aWNhbCAoIlN1YmNsYXNzIHNob3VsZCBvdmVycmlkZSBHc3RBbGxvY2F0b3JDbGFzczo6YWxsb2MoKSBmdW5jdGlvbiIpOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZAorX2RlZmF1bHRfZGVzdHJveSAoR3N0R0xCYXNlTWVtb3J5ICogbWVtKQoreworfQorCitzdGF0aWMgdm9pZAorX2Rlc3Ryb3lfZ2xfb2JqZWN0cyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xCYXNlTWVtb3J5ICogbWVtKQoreworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7CisKKyAgYWxsb2NfY2xhc3MgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAobWVtLT5tZW0uYWxsb2NhdG9yKTsKKworICBnX3JldHVybl9pZl9mYWlsIChhbGxvY19jbGFzcy0+ZGVzdHJveSAhPSBOVUxMKTsKKworICBhbGxvY19jbGFzcy0+ZGVzdHJveSAobWVtKTsKKworICBpZiAobWVtLT5xdWVyeSkKKyAgICBnc3RfZ2xfcXVlcnlfZnJlZSAobWVtLT5xdWVyeSk7Cit9CisKK3N0YXRpYyB2b2lkCitfbWVtX2ZyZWUgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogbWVtb3J5KQoreworICBHc3RHTEJhc2VNZW1vcnkgKm1lbSA9IChHc3RHTEJhc2VNZW1vcnkgKikgbWVtb3J5OworCisgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksICJmcmVlaW5nIGJ1ZmZlciBtZW1vcnk6JXAiLCBtZW0pOworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKG1lbS0+Y29udGV4dCwKKyAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfZGVzdHJveV9nbF9vYmplY3RzLCBtZW0pOworCisgIGdfbXV0ZXhfY2xlYXIgKCZtZW0tPmxvY2spOworCisgIGlmIChtZW0tPmFsbG9jX2RhdGEpIHsKKyAgICBnX2ZyZWUgKG1lbS0+YWxsb2NfZGF0YSk7CisgICAgbWVtLT5hbGxvY19kYXRhID0gTlVMTDsKKyAgfQorICBtZW0tPmRhdGEgPSBOVUxMOworCisgIGlmIChtZW0tPm5vdGlmeSkKKyAgICBtZW0tPm5vdGlmeSAobWVtLT51c2VyX2RhdGEpOworCisgIGdzdF9vYmplY3RfdW5yZWYgKG1lbS0+Y29udGV4dCk7CisKKyAgZ19mcmVlIChtZW1vcnkpOworfQorCisvKioKKyAqIGdzdF9nbF9iYXNlX21lbW9yeV9pbml0X29uY2U6CisgKgorICogSW5pdGlhbGl6ZXMgdGhlIEdMIEJhc2UgTWVtb3J5IGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KKyAqIG11bHRpcGxlIHRpbWVzLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyIEdzdEdMQmFzZU1lbW9yeSBvcGVyYXRpb24uCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlICh2b2lkKQoreworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLCAiZ2xiYXNlbWVtb3J5IiwgMCwKKyAgICAgICAgIk9wZW5HTCBCYXNlTWVtb3J5Iik7CisKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCitHX0RFRklORV9BQlNUUkFDVF9UWVBFIChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IsIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY2F0b3IsCisgICAgR1NUX1RZUEVfQUxMT0NBVE9SKTsKKworc3RhdGljIHZvaWQKK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvY2F0b3JfY2xhc3NfaW5pdCAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKiBrbGFzcykKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgKmFsbG9jYXRvcl9jbGFzcyA9IChHc3RBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKKworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gX21lbV9hbGxvYzsKKyAgYWxsb2NhdG9yX2NsYXNzLT5mcmVlID0gX21lbV9mcmVlOworCisgIGtsYXNzLT5jcmVhdGUgPSBfZGVmYXVsdF9jcmVhdGU7CisgIGtsYXNzLT5jb3B5ID0gX2RlZmF1bHRfY29weTsKKyAga2xhc3MtPmRlc3Ryb3kgPSBfZGVmYXVsdF9kZXN0cm95OworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jYXRvcl9pbml0IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKiBhbGxvY2F0b3IpCit7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CisKKyAgLyogS2VlcCB0aGUgZmFsbGJhY2sgY29weSBmdW5jdGlvbiBhcm91bmQsIHdlIHdpbGwgbmVlZCBpdCB3aGVuIGNvcHlpbmcgd2l0aAorICAgKiBhdCBhbiBvZmZzZXQgb3Igc21hbGxlciBzaXplICovCisgIGFsbG9jYXRvci0+ZmFsbGJhY2tfbWVtX2NvcHkgPSBhbGxvYy0+bWVtX2NvcHk7CisKKyAgYWxsb2MtPm1lbV9tYXBfZnVsbCA9IChHc3RNZW1vcnlNYXBGdWxsRnVuY3Rpb24pIF9tZW1fbWFwX2Z1bGw7CisgIGFsbG9jLT5tZW1fdW5tYXBfZnVsbCA9IChHc3RNZW1vcnlVbm1hcEZ1bGxGdW5jdGlvbikgX21lbV91bm1hcF9mdWxsOworICBhbGxvYy0+bWVtX2NvcHkgPSAoR3N0TWVtb3J5Q29weUZ1bmN0aW9uKSBfbWVtX2NvcHk7CisgIGFsbG9jLT5tZW1fc2hhcmUgPSAoR3N0TWVtb3J5U2hhcmVGdW5jdGlvbikgX21lbV9zaGFyZTsKKyAgYWxsb2MtPm1lbV9pc19zcGFuID0gKEdzdE1lbW9yeUlzU3BhbkZ1bmN0aW9uKSBfbWVtX2lzX3NwYW47Cit9CisKKy8qKgorICogZ3N0X2lzX2dsX2Jhc2VfbWVtb3J5OgorICogQG1lbTphICNHc3RNZW1vcnkKKyAqIAorICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5IGF0IEBtZW0gaXMgYSAjR3N0R0xCYXNlTWVtb3J5CisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2lzX2dsX2Jhc2VfbWVtb3J5IChHc3RNZW1vcnkgKiBtZW0pCit7CisgIHJldHVybiBtZW0gIT0gTlVMTCAmJiBtZW0tPmFsbG9jYXRvciAhPSBOVUxMICYmCisgICAgICBnX3R5cGVfaXNfYSAoR19PQkpFQ1RfVFlQRSAobWVtLT5hbGxvY2F0b3IpLAorICAgICAgR1NUX1RZUEVfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5OgorICogQHNyYzogdGhlIHNvdXJjZSAjR3N0R0xCYXNlTWVtb3J5CisgKiBAZGVzdDogdGhlIGRlc3RpbmF0aW9uICNHc3RHTEJhc2VNZW1vcnkKKyAqIEBvZmZzZXQ6IHRoZSBvZmZzZXQgdG8gc3RhcnQgYXQKKyAqIEBzaXplOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGNvcHkKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBjb3B5IHN1Y2VlZGVkLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHkgKEdzdEdMQmFzZU1lbW9yeSAqIHNyYywgR3N0R0xCYXNlTWVtb3J5ICogZGVzdCwKKyAgICBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgR3N0TWFwSW5mbyBzaW5mbywgZGluZm87CisKKyAgaWYgKCFnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YSAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGRlc3QpKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCFnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbywgR1NUX01BUF9SRUFEKSkgeworICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CQVNFX01FTU9SWSwKKyAgICAgICAgImNvdWxkIG5vdCByZWFkIG1hcCBzb3VyY2UgbWVtb3J5ICVwIiwgc3JjKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIGRlc3QsICZkaW5mbywgR1NUX01BUF9XUklURSkpIHsKKyAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfQkFTRV9NRU1PUlksCisgICAgICAgICJjb3VsZCBub3Qgd3JpdGUgbWFwIGRlc3QgbWVtb3J5ICVwIiwgZGVzdCk7CisgICAgZ3N0X21lbW9yeV91bm1hcCAoKEdzdE1lbW9yeSAqKSBzcmMsICZzaW5mbyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKHNpemUgPT0gLTEpCisgICAgc2l6ZSA9IHNpbmZvLnNpemUgPiBvZmZzZXQgPyBzaW5mby5zaXplIC0gb2Zmc2V0IDogMDsKKworICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX0dMX0JBU0VfTUVNT1JZLAorICAgICAgIm1lbWNweSAlIiBHX0dTU0laRV9GT1JNQVQgIiBtZW1vcnkgJXAgLT4gJXAiLCBzaXplLCBzcmMsIGRlc3QpOworICBtZW1jcHkgKGRpbmZvLmRhdGEsIHNpbmZvLmRhdGEgKyBvZmZzZXQsIHNpemUpOworICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIGRlc3QsICZkaW5mbyk7CisgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgc3JjLCAmc2luZm8pOworCisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0OgorICogQHBhcmFtczogdGhlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgdG8gaW5pdGlhbGl6ZQorICogQHN0cnVjdF9zaXplOiB0aGUgc3RydWN0IHNpemUgb2YgdGhlIGltcGxlbWVudGF0aW9uCisgKiBAYWxsb2NfZmxhZ3M6IHNvbWUgYWxsb2MgZmxhZ3MKKyAqIEBjb3B5OiBhIGNvcHkgZnVuY3Rpb24KKyAqIEBmcmVlOiBhIGZyZWUgZnVuY3Rpb24KKyAqIEBjb250ZXh0OiAodHJhbnNmZXIgbm9uZSk6IGEgI0dzdEdMQ29udGV4dAorICogQGFsbG9jX3NpemU6IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYWxsb2NhdGUuCisgKiBAYWxsb2NfcGFyYW1zOiAodHJhbnNmZXIgbm9uZSkgKGFsbG93LW5vbmUpOiBhICNHc3RBbGxvY2F0aW9uUGFyYW1zIHRvIGFwcGx5CisgKiBAd3JhcHBlZF9kYXRhOiAodHJhbnNmZXIgbm9uZSkgKGFsbG93LW5vbmUpOiBhIHN5c21lbSBkYXRhIHBvaW50ZXIgdG8gaW5pdGlhbGl6ZSB0aGUgYWxsb2NhdGlvbiB3aXRoCisgKiBAZ2xfaGFuZGxlOiAodHJhbnNmZXIgbm9uZSk6IGEgR0wgaGFuZGxlIHRvIGluaXRpYWxpemUgdGhlIGFsbG9jYXRpb24gd2l0aAorICogQHVzZXJfZGF0YTogKHRyYW5zZmVyIG5vbmUpIChhbGxvdy1ub25lKTogdXNlciBkYXRhIHRvIGNhbGwgQG5vdGlmeSB3aXRoCisgKiBAbm90aWZ5OiAoYWxsb3ctbm9uZSk6IGEgI0dEZXN0cm95Tm90aWZ5CisgKgorICogQG5vdGlmeSB3aWxsIGJlIGNhbGxlZCBvbmNlIGZvciBlYWNoIGFsbG9jYXRlZCBtZW1vcnkgdXNpbmcgdGhlc2UgQHBhcmFtcworICogd2hlbiBmcmVlaW5nIHRoZSBtZW1vcnkuCisgKgorICogUmV0dXJuczogd2hldGhlciB0aGUgcGFyYW1hdGVycyBjb3VsZCBiZSBpbml0aWFsaXplZAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0IChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCisgICAgZ3NpemUgc3RydWN0X3NpemUsIGd1aW50IGFsbG9jX2ZsYWdzLCBHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYyBjb3B5LAorICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIGZyZWUsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgZ3NpemUgYWxsb2Nfc2l6ZSwgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywKKyAgICBncG9pbnRlciB3cmFwcGVkX2RhdGEsIGd1aW50IGdsX2hhbmRsZSwgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgbWVtc2V0IChwYXJhbXMsIDAsIHNpemVvZiAoKnBhcmFtcykpOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzdHJ1Y3Rfc2l6ZSA+IDAsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvcHkgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZnJlZSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKworICBwYXJhbXMtPnN0cnVjdF9zaXplID0gc3RydWN0X3NpemU7CisgIHBhcmFtcy0+YWxsb2Nfc2l6ZSA9IGFsbG9jX3NpemU7CisgIHBhcmFtcy0+Y29weSA9IGNvcHk7CisgIHBhcmFtcy0+ZnJlZSA9IGZyZWU7CisgIHBhcmFtcy0+YWxsb2NfZmxhZ3MgPSBhbGxvY19mbGFnczsKKyAgcGFyYW1zLT5jb250ZXh0ID0gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQpOworICBpZiAoYWxsb2NfcGFyYW1zKQorICAgIHBhcmFtcy0+YWxsb2NfcGFyYW1zID0gZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2NvcHkgKGFsbG9jX3BhcmFtcyk7CisgIHBhcmFtcy0+bm90aWZ5ID0gbm90aWZ5OworICBwYXJhbXMtPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKKyAgcGFyYW1zLT53cmFwcGVkX2RhdGEgPSB3cmFwcGVkX2RhdGE7CisgIHBhcmFtcy0+Z2xfaGFuZGxlID0gZ2xfaGFuZGxlOworCisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5OgorICogQHNyYzogdGhlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgdG8gaW5pdGlhbGl6ZQorICoKKyAqIFJldHVybnM6IGEgY29weSBvZiB0aGUgI0dzdEdMQWxsb2NhdGlvblBhcmFtcyBzcGVjaWZpZWQgYnkgQHNyYyBvciAlTlVMTCBvbgorICogICAgICAgICAgZmFpbHVyZQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0R0xBbGxvY2F0aW9uUGFyYW1zICoKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5IChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBzcmMpCit7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqZGVzdDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3JjICE9IE5VTEwsIE5VTEwpOworCisgIGRlc3QgPSBnX21hbGxvYzAgKHNyYy0+c3RydWN0X3NpemUpOworCisgIGlmIChzcmMtPmNvcHkpCisgICAgc3JjLT5jb3B5IChzcmMsIGRlc3QpOworCisgIHJldHVybiBkZXN0OworfQorCisvKioKKyAqIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlOgorICogQHBhcmFtczogdGhlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMgdG8gaW5pdGlhbGl6ZQorICoKKyAqIEZyZWVzIHRoZSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIGFuZCBhbGwgYXNzb2NpYXRlZCBkYXRhLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgaWYgKHBhcmFtcy0+ZnJlZSkKKyAgICBwYXJhbXMtPmZyZWUgKHBhcmFtcyk7CisKKyAgZ19mcmVlIChwYXJhbXMpOworfQorCisvKioKKyAqIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGE6CisgKiBAcGFyYW1zOiB0aGUgc291cmNlICNHc3RHTEFsbG9jYXRpb25QYXJhbXMKKyAqCisgKiBGcmVlcyB0aGUgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGRhdGEgaW4gQHBhcmFtcy4gIERpcmVjdCBzdWJjbGFzc2VzCisgKiBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGluIHRoZWlyIG93biBvdmVycmlkZW4gZnJlZSBmdW5jdGlvbi4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgaWYgKHBhcmFtcy0+Y29udGV4dCkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChwYXJhbXMtPmNvbnRleHQpOworICBpZiAocGFyYW1zLT5hbGxvY19wYXJhbXMpCisgICAgZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKHBhcmFtcy0+YWxsb2NfcGFyYW1zKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhOgorICogQHNyYzogdGhlIHNvdXJjZSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zCisgKiBAZGVzdDogdGhlIGRlc3RpbmF0aW9uICNHc3RHTEFsbG9jYXRpb25QYXJhbXMKKyAqCisgKiBDb3BpZXMgdGhlIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBkYXRhIGZyb20gQHNyYyB0byBAZGVzdC4gIERpcmVjdCBzdWJjbGFzc2VzCisgKiBzaG91bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGluIHRoZWlyIG93biBvdmVycmlkZW4gY29weSBmdW5jdGlvbi4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHNyYywKKyAgICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBkZXN0KQoreworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoZGVzdCwgc3JjLT5zdHJ1Y3Rfc2l6ZSwgc3JjLT5hbGxvY19mbGFncywKKyAgICAgIHNyYy0+Y29weSwgc3JjLT5mcmVlLCBzcmMtPmNvbnRleHQsIHNyYy0+YWxsb2Nfc2l6ZSwgTlVMTCwKKyAgICAgIHNyYy0+d3JhcHBlZF9kYXRhLCBzcmMtPmdsX2hhbmRsZSwgc3JjLT51c2VyX2RhdGEsIHNyYy0+bm90aWZ5KTsKKworICBpZiAoc3JjLT5hbGxvY19wYXJhbXMpCisgICAgZGVzdC0+YWxsb2NfcGFyYW1zID0gZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2NvcHkgKHNyYy0+YWxsb2NfcGFyYW1zKTsKK30KKworR19ERUZJTkVfQk9YRURfVFlQRSAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zLCBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXMsCisgICAgKEdCb3hlZENvcHlGdW5jKSBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weSwKKyAgICAoR0JveGVkRnJlZUZ1bmMpIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlKTsKKworLyoqCisgKiBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2M6CisgKiBAYWxsb2NhdG9yOiBhICNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IKKyAqIEBwYXJhbXM6IHRoZSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHRvIGFsbG9jYXRlIHRoZSBtZW1vcnkgd2l0aAorICoKKyAqIFJldHVybnM6IGEgbmV3ICNHc3RHTEJhc2VNZW1vcnkgZnJvbSBAYWxsb2NhdG9yIHdpdGggdGhlIHJlcXVlc3RlZCBAcGFyYW1zLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0R0xCYXNlTWVtb3J5ICoKK2dzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmFsbG9jX2NsYXNzOworCisgIGFsbG9jX2NsYXNzID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1MgKGFsbG9jYXRvcik7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGFsbG9jX2NsYXNzICE9IE5VTEwsIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfY2xhc3MtPmFsbG9jICE9IE5VTEwsIE5VTEwpOworCisgIHJldHVybiBhbGxvY19jbGFzcy0+YWxsb2MgKGFsbG9jYXRvciwgcGFyYW1zKTsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mODYyYzg1Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oCkBAIC0wLDAgKzEsMzYxIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dTVF9HTF9CQVNFX01FTU9SWV9IXworI2RlZmluZSBfR1NUX0dMX0JBU0VfTUVNT1JZX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dzdGFsbG9jYXRvci5oPgorI2luY2x1ZGUgPGdzdC9nc3RtZW1vcnkuaD4KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9md2QuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSgpKQorR1R5cGUgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKKworI2RlZmluZSBHU1RfSVNfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX0dMX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9JU19HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyhvYmopICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SLCBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SLCBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IpKQorI2RlZmluZSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SLCBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0FTVChvYmopICAgICAgICAgICAgKChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKikob2JqKSkKKworI2RlZmluZSBHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVChtZW0pICgoR3N0R0xCYXNlTWVtb3J5ICopbWVtKQorCitHUXVhcmsgZ3N0X2dsX2Jhc2VfbWVtb3J5X2Vycm9yX3F1YXJrICh2b2lkKTsKKyNkZWZpbmUgR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SIChnc3RfZ2xfYmFzZV9tZW1vcnlfZXJyb3JfcXVhcmsgKCkpCisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5RXJyb3I6CisgKiBAR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX0ZBSUxFRDogZ2VuZXJpYyBmYWxpdXJlCisgKiBAR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX09MRF9MSUJTOiB0aGUgaW1wbGVtZW50YXRpb24gaXMgdG9vIG9sZCBhbmQgZG9lc24ndAorICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW1wbGVtZW50IGVub3VnaCBmZWF0dXJlcworICogQEdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUl9SRVNPVVJDRV9VTkFWQUlMQUJMRTogYSByZXNvdXJjZSBjb3VsZCBub3QgYmUgZm91bmQKKyAqLwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUl9GQUlMRUQsCisgIEdTVF9HTF9CQVNFX01FTU9SWV9FUlJPUl9PTERfTElCUywKKyAgR1NUX0dMX0JBU0VfTUVNT1JZX0VSUk9SX1JFU09VUkNFX1VOQVZBSUxBQkxFLAorfSBHc3RHTEJhc2VNZW1vcnlFcnJvcjsKKworLyoqCisgKiBHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlcjoKKyAqIEBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRDogdGhlIHRleHR1cmUgbmVlZHMgZG93bmxvYWRpbmcKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gdGhlIGRhdGEgcG9pbnRlcgorICogQEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRDogICB0aGUgZGF0YSBwb2ludGVyIG5lZWRzIHVwbG9hZGluZworICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0byB0aGUgdGV4dHVyZQorICovCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQgICA9IChHU1RfTUVNT1JZX0ZMQUdfTEFTVCA8PCAwKSwKKyAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEICAgICA9IChHU1RfTUVNT1JZX0ZMQUdfTEFTVCA8PCAxKQorfSBHc3RHTEJhc2VNZW1vcnlUcmFuc2ZlcjsKKworLyoqCisgKiBHU1RfTUFQX0dMOgorICoKKyAqIEZsYWcgaW5kaWNhdGluZyB0aGF0IHdlIHNob3VsZCBtYXAgdGhlIEdMIG9iamVjdCBpbnN0ZWFkIG9mIHRvIHN5c3RlbSBtZW1vcnkuCisgKgorICogQ29tYmluaW5nICNHU1RfTUFQX0dMIHdpdGggI0dTVF9NQVBfV1JJVEUgaGFzIHRoZSBzYW1lIHNlbWFudGljcyBhcyB0aG91Z2gKKyAqIHlvdSBhcmUgd3JpdGluZyB0byBPcGVuR0wuIENvbnZlcnNlbHksIGNvbWJpbmluZyAjR1NUX01BUF9HTCB3aXRoCisgKiAjR1NUX01BUF9SRUFEIGhhcyB0aGUgc2FtZSBzZW1hbnRpY3MgYXMgdGhvdWdoIHlvdSBhcmUgcmVhZGluZyBmcm9tIE9wZW5HTC4KKyAqLworI2RlZmluZSBHU1RfTUFQX0dMIChHU1RfTUFQX0ZMQUdfTEFTVCA8PCAxKQorCisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeToKKyAqIEBtZW06IHRoZSBwYXJlbnQgb2JqZWN0CisgKiBAY29udGV4dDogdGhlICNHc3RHTENvbnRleHQgdG8gdXNlIGZvciBHTCBvcGVyYXRpb25zCisgKgorICogUmVwcmVzZW50cyBpbmZvcm1hdGlvbiBhYm91dCBhIEdMIG1lbW9yeSBvYmplY3QKKyAqLworc3RydWN0IF9Hc3RHTEJhc2VNZW1vcnkKK3sKKyAgR3N0TWVtb3J5ICAgICAgICAgICAgIG1lbTsKKworICBHc3RHTENvbnRleHQgICAgICAgICAqY29udGV4dDsKKworICAvKiA8cHJvdGVjdGVkPiAqLworICBHTXV0ZXggICAgICAgICAgICAgICAgbG9jazsKKworICBHc3RNYXBGbGFncyAgICAgICAgICAgbWFwX2ZsYWdzOyAgICAgICAvKiBjdW11bGF0aXZlIG1hcCBmbGFncyAqLworICBnaW50ICAgICAgICAgICAgICAgICAgbWFwX2NvdW50OworICBnaW50ICAgICAgICAgICAgICAgICAgZ2xfbWFwX2NvdW50OworCisgIGdwb2ludGVyICAgICAgICAgICAgICBkYXRhOworCisgIEdzdEdMUXVlcnkgICAgICAgICAgICpxdWVyeTsKKworICAvKiA8cHJpdmF0ZT4gKi8KKyAgZ3NpemUgICAgICAgICAgICAgICAgIGFsbG9jX3NpemU7ICAgICAvKiBiZWNhdXNlIG1heHNpemUgaXMgdXNlZCBmb3IgbWFwcGluZyAqLworICBncG9pbnRlciAgICAgICAgICAgICAgYWxsb2NfZGF0YTsKKworICBHRGVzdHJveU5vdGlmeSAgICAgICAgbm90aWZ5OworICBncG9pbnRlciAgICAgICAgICAgICAgdXNlcl9kYXRhOworfTsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQWxsb2NhdGlvblBhcmFtcyBHc3RHTEFsbG9jYXRpb25QYXJhbXM7CisvKioKKyAqIEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jOgorICogQHNyYzogdGhlIHNvdXJjZSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHRvIGNvcHkgZnJvbQorICogQGRlc3Q6IHRoZSBzb3VyY2UgI0dzdEdMQWxsb2NhdGlvblBhcmFtcyB0byBjb3B5CisgKgorICogQ29waWVzIHRoZSBwYXJhbWV0ZXJzIGZyb20gQHNyYyBpbnRvIEBkZXN0LiAgVGhlIHN1YmNsYXNzIG11c3QgY29tcG9zZSBjb3B5CisgKiBmdW5jdGlvbnMgZnJvbSB0aGUgc3VwZXJjbGFzcy4KKyAqLwordHlwZWRlZiB2b2lkICAgICgqR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMpICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBzcmMsIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIGRlc3QpOworLyoqCisgKiBHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYzoKKyAqIEBwYXJhbXM6IGEgI0dzdEdMQWxsb2NhdGlvblBhcmFtcworICoKKyAqIEZyZWUgYW55IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBkYXRhLiAgVGhlIHN1YmNsYXNzIG11c3QgY2FsbCB0aGUgc3VwZXJjbGFzcycKKyAqIGZyZWUuCisgKi8KK3R5cGVkZWYgdm9pZCAgICAoKkdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jKSAgICAoZ3BvaW50ZXIgcGFyYW1zKTsKKworI2RlZmluZSBHU1RfVFlQRV9HTF9BTExPQ0FUSU9OX1BBUkFNUyAoZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2dldF90eXBlKCkpCitHVHlwZSBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZ2V0X3R5cGUgKHZvaWQpOworCisjZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DICgxIDw8IDApCisjZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNICgxIDw8IDEpCisjZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSAoMSA8PCAyKQorI2RlZmluZSBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19VU0VSICgxIDw8IDE2KQorCisvKioKKyAqIEdzdEdMQWxsb2NhdGlvblBhcmFtczoKKyAqIEBzdHJ1Y3Rfc2l6ZTogdGhlIHNpemUgb2YgdGhlIHN0cnVjdCAoaW5jbHVkaW5nIGFuZCBzdWJjbGFzcyBkYXRhKQorICogQGNvcHk6IGEgI0dzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jCisgKiBAZnJlZTogYSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMKKyAqIEBhbGxvY19mbGFnczogYWxsb2NhdGlvbiBmbGFncworICogQGFsbG9jX3NpemU6IHRoZSBhbGxvY2F0aW9uIHNpemUKKyAqIEBhbGxvY19wYXJhbXM6IHRoZSAjR3N0QWxsb2NhdGlvblBhcmFtcworICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICogQG5vdGlmeTogYSAjR0Rlc3Ryb3lOb3RpZnkKKyAqIEB1c2VyX2RhdGE6IGFyZ3VtZW50IHRvIGNhbGwgQG5vdGlmeSB3aXRoCisgKiBAd3JhcHBlZF9kYXRhOiB0aGUgd3JhcHBlZCBkYXRhIHBvaW50ZXIKKyAqIEBnbF9oYW5kbGU6IHRoZSB3cmFwcGVkIE9wZW5HTCBoYW5kbGUKKyAqLworLyogQmVjYXVzZSBHc3RBbGxvY2F0aW9uUGFyYW1zIGlzIG5vdCBzdWJjbGFzc2FibGUsIHN0YXJ0IG91ciBvd24gc3ViY2xhc3MKKyAqIGNoYWluLiAgRklYTUU6IDIuMCBtYWtlIEdzdEFsbG9jYXRpb25QYXJhbXMgc3ViY2xhc3NhYmxlICovCitzdHJ1Y3QgX0dzdEdMQWxsb2NhdGlvblBhcmFtcworeworICBnc2l6ZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0X3NpemU7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jICAgICBjb3B5OworICBHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyAgICAgZnJlZTsKKworICBndWludCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxsb2NfZmxhZ3M7CisgIGdzaXplICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxvY19zaXplOworICBHc3RBbGxvY2F0aW9uUGFyYW1zICAgICAgICAgICAgICAqYWxsb2NfcGFyYW1zOworICBHc3RHTENvbnRleHQgICAgICAgICAgICAgICAgICAgICAqY29udGV4dDsKKyAgR0Rlc3Ryb3lOb3RpZnkgICAgICAgICAgICAgICAgICAgIG5vdGlmeTsKKyAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YTsKKworICAvKiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSBvbmx5ICovCisgIGdwb2ludGVyICAgICAgICAgICAgICAgICAgICAgICAgICB3cmFwcGVkX2RhdGE7CisgIC8qIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSBvbmx5ICovCisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbF9oYW5kbGU7Cit9OworCitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIHN0cnVjdF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGFsbG9jX2ZsYWdzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIGNvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMgZnJlZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIGFsbG9jX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB3cmFwcGVkX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgZ2xfaGFuZGxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOworCisvKiBmcmVlIHdpdGggZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKi8KK0dzdEdMQWxsb2NhdGlvblBhcmFtcyAqIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5ICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBzcmMpOwordm9pZCAgICAgICAgICAgICAgICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcyk7CisKKy8qIHN1YmNsYXNzIHVzYWdlICovCit2b2lkICAgICAgICAgICAgICAgICAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKTsKKy8qIHN1YmNsYXNzIHVzYWdlICovCit2b2lkICAgICAgICAgICAgICAgICAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIGRlc3QpOworCisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb246CisgKiBAYWxsb2NhdG9yOiBhICNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IKKyAqIEBwYXJhbXM6IHRoZSAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIHRvIGFsbG9jYXRlIHRoZSBtZW1vcnkgd2l0aAorICoKKyAqIE5vdGU6IG5vdCBjYWxsZWQgd2l0aCBhIEdMIGNvbnRleHQgY3VycmVudAorICoKKyAqIFJldHVybnM6IGEgbmV3bHkgYWxsb2NhdGVkICNHc3RHTEJhc2VNZW1vcnkgZnJvbSBAYWxsb2NhdG9yIGFuZCBAcGFyYW1zCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIEdzdEdMQmFzZU1lbW9yeSAqICAgKCpHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uKSAgICAgICAgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKTsKKworLyoqCisgKiBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbjoKKyAqIEBtZW06IGEgI0dzdEdMQmFzZU1lbW9yeQorICogQGVycm9yOiBhICNHRXJyb3IgdG8gdXNlIG9uIGZhaWx1cmUKKyAqCisgKiBBcyB0aGlzIHZpcnR1YWwgbWV0aG9kIGlzIGNhbGxlZCB3aXRoIGFuIE9wZW5HTCBjb250ZXh0IGN1cnJlbnQsIHVzZSB0aGlzCisgKiBmdW5jdGlvbiB0byBhbGxvY2F0ZSBhbmQgT3BlbkdMIHJlc291cmNlcyBuZWVkZWQgZm9yIHlvdXIgYXBwbGljYXRpb24KKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBjcmVhdGlvbiBzdWNjZWVkZWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgZ2Jvb2xlYW4gICAgICAgICAgICAoKkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uKSAgICAgICAoR3N0R0xCYXNlTWVtb3J5ICogbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyb3IpOworCisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uOgorICogQG1lbTogYSAjR3N0R0xCYXNlTWVtb3J5CisgKiBAaW5mbzogYSAjR3N0TWFwSW5mbyB0byBtYXAgd2l0aAorICogQG1heHNpemU6IHRoZSBzaXplIHRvIG1hcAorICoKKyAqIEFsc28gc2VlIGdzdF9tZW1vcnlfbWFwKCk7CisgKgorICogUmV0dXJuczogdGhlIG1hcHBlZCBwb2ludGVyCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIGdwb2ludGVyICAgICAgICAgICAgKCpHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbikgICAgICAgICAgKEdzdEdMQmFzZU1lbW9yeSAqIG1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0TWFwSW5mbyAqIGluZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIG1heHNpemUpOworLyoqCisgKiBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uOgorICogQG1lbTogYSAjR3N0R0xCYXNlTWVtb3J5CisgKiBAaW5mbzogYSAjR3N0TWFwSW5mbyB0byBtYXAgd2l0aAorICoKKyAqIEFsc28gc2VlIGdzdF9tZW1vcnlfdW5tYXAoKTsKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3R5cGVkZWYgdm9pZCAgICAgICAgICAgICAgICAoKkdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24pICAgICAgICAoR3N0R0xCYXNlTWVtb3J5ICogbWVtLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RNYXBJbmZvICogaW5mbyk7CisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uOgorICogQG1lbTogYSAjR3N0R0xCYXNlTWVtb3J5CisgKiBAb2Zmc2V0OiB0aGUgb2Zmc2V0IHRvIGNvcHkgZnJvbQorICogQHNpemU6IHRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gY29weQorICoKKyAqIEFsc28gc2VlIGdzdF9tZW1vcnlfY29weSgpOworICoKKyAqIFJldHVybnM6IHRoZSBuZXdseSBjb3BpZWQgI0dzdEdMTWVtb3J5IG9yICVOVUxMCisgKgorICogU2luY2U6IDEuOAorICovCit0eXBlZGVmIEdzdEdMQmFzZU1lbW9yeSAqICAgKCpHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24pICAgICAgICAgKEdzdEdMQmFzZU1lbW9yeSAqIG1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIHNpemUpOworCisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbjoKKyAqIEBtZW06IGEgI0dzdEdMQmFzZU1lbW9yeQorICoKKyAqIERlc3Ryb3kgYW55IHJlc291cmNlcyBhbGxvY2F0ZWQgdGhyb3VnaG91dCB0aGUgbGlmZXRpbWUgb2YgQG1lbQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordHlwZWRlZiB2b2lkICAgICAgICAgICAgICAgICgqR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uKSAgICAgIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0pOworCisvKioKKyAqIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvcgorICoKKyAqIE9wYXF1ZSAjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIHN0cnVjdAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RydWN0IF9Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IKK3sKKyAgLyo8IHByaXZhdGUgPiovCisgIEdzdEFsbG9jYXRvciBwYXJlbnQ7CisgIEdzdE1lbW9yeUNvcHlGdW5jdGlvbiBmYWxsYmFja19tZW1fY29weTsKK307CisKKy8qKgorICogR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3M6CisgKiBAcGFyZW50X2NsYXNzOiB0aGUgcGFyZW50IGNsYXNzCisgKiBAYWxsb2M6IGEgI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb25zCisgKiBAY3JlYXRlOiBhICNHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbgorICogQG1hcDogYSAjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24KKyAqIEB1bm1hcDogYSAjR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbgorICogQGNvcHk6IGEgI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbgorICogQGRlc3Ryb3k6IGEgI0dzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworc3RydWN0IF9Hc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcworeworICBHc3RBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbiAgICAgICAgIGFsbG9jOworCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNyZWF0ZUZ1bmN0aW9uICAgICAgICBjcmVhdGU7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uICAgICAgICAgICBtYXA7CisjaWYgMAorICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JGbHVzaEZ1bmN0aW9uICAgICAgICAgZmx1c2g7ICAgICAgICAvKiBtYWtlIENQVSB3cml0ZXMgdmlzaWJsZSB0byB0aGUgR1BVICovCisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckludmFsaWRhdGVGdW5jdGlvbiAgICBpbnZhbGlkYXRlOyAgIC8qIG1ha2UgR1BVIHdyaXRlcyB2aXNpYmxlIHRvIHRoZSBDUFUgKi8KKyNlbmRpZgorICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uICAgICAgICAgdW5tYXA7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiAgICAgICAgICBjb3B5OworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24gICAgICAgZGVzdHJveTsKK307CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKworLyoqCisgKiBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SX05BTUU6CisgKgorICogVGhlIG5hbWUgb2YgdGhlIEdMIGJ1ZmZlciBhbGxvY2F0b3IKKyAqCisgKiBTaW5jZTogMS44CisgKi8KKyNkZWZpbmUgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FICAgIkdMQmFzZU1lbW9yeSIKKwordm9pZCAgICAgICAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlICh2b2lkKTsKK2dib29sZWFuICAgICAgZ3N0X2lzX2dsX2Jhc2VfbWVtb3J5ICAgICAgICAoR3N0TWVtb3J5ICogbWVtKTsKKwordm9pZCAgICAgICAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdCAgICAgIChHc3RHTEJhc2VNZW1vcnkgKiBtZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0TWVtb3J5ICogcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBzaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7CisKK2dib29sZWFuICAgICAgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jX2RhdGEgKEdzdEdMQmFzZU1lbW9yeSAqIGdsX21lbSk7CitnYm9vbGVhbiAgICAgIGdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHkgICAgIChHc3RHTEJhc2VNZW1vcnkgKiBzcmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTEJhc2VNZW1vcnkgKiBkZXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NzaXplIG9mZnNldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzc2l6ZSBzaXplKTsKKworR3N0R0xCYXNlTWVtb3J5ICogICBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgICAgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX0dTVF9HTF9CVUZGRVJfSF8gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmFiZGQ2ZAotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlci5jCkBAIC0wLDAgKzEsNDc5IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZ3N0Z2xidWZmZXIuaCIKKyNpbmNsdWRlICJnc3RnbHV0aWxzLmgiCisKKy8qKgorICogU0VDVElPTjpnc3RnbGJ1ZmZlcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIGJ1ZmZlcnMKKyAqIEBzZWVfYWxzbzogI0dzdE1lbW9yeSwgI0dzdEFsbG9jYXRvcgorICoKKyAqIEdzdEdMQnVmZmVyIGlzIGEgI0dzdE1lbW9yeSBzdWJjbGFzcyBwcm92aWRpbmcgc3VwcG9ydCBmb3IgdGhlIG1hcHBpbmcgb2YKKyAqIEdMIGJ1ZmZlcnMuICAKKyAqCisgKiBEYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS4KKyAqLworCisvKiBJbXBsZW1lbnRhdGlvbiBub3RlczoKKyAqCisgKiBDdXJyZW50bHkgZG9lcyBub3QgdGFrZSBpbnRvIGFjY291bnQgR0xFUzIgZGlmZmVyZW5jZXMgKG5vIG1hcGJ1ZmZlcikKKyAqLworCisjZGVmaW5lIFVTSU5HX09QRU5HTChjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wsIDEsIDApKQorI2RlZmluZSBVU0lOR19PUEVOR0wzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTDMsIDMsIDEpKQorI2RlZmluZSBVU0lOR19HTEVTKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMsIDEsIDApKQorI2RlZmluZSBVU0lOR19HTEVTMihjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMiwgMCkpCisjZGVmaW5lIFVTSU5HX0dMRVMzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKKworLyogY29tcGF0aWJpbGl0eSBkZWZpbml0aW9ucy4uLiAqLworI2lmbmRlZiBHTF9NQVBfUkVBRF9CSVQKKyNkZWZpbmUgR0xfTUFQX1JFQURfQklUIDB4MDAwMQorI2VuZGlmCisjaWZuZGVmIEdMX01BUF9XUklURV9CSVQKKyNkZWZpbmUgR0xfTUFQX1dSSVRFX0JJVCAweDAwMDIKKyNlbmRpZgorI2lmbmRlZiBHTF9DT1BZX1JFQURfQlVGRkVSCisjZGVmaW5lIEdMX0NPUFlfUkVBRF9CVUZGRVIgMHg4RjM2CisjZW5kaWYKKyNpZm5kZWYgR0xfQ09QWV9XUklURV9CVUZGRVIKKyNkZWZpbmUgR0xfQ09QWV9XUklURV9CVUZGRVIgMHg4RjM3CisjZW5kaWYKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9HTF9CVUZGRVIpOworI2RlZmluZSBHU1RfQ0FUX0RFRlVBTFQgR1NUX0NBVF9HTF9CVUZGRVIKKworc3RhdGljIEdzdEFsbG9jYXRvciAqX2dsX2J1ZmZlcl9hbGxvY2F0b3I7CisKK3N0YXRpYyBnYm9vbGVhbgorX2dsX2J1ZmZlcl9jcmVhdGUgKEdzdEdMQnVmZmVyICogZ2xfbWVtLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gZ2xfbWVtLT5tZW0uY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGdsLT5HZW5CdWZmZXJzICgxLCAmZ2xfbWVtLT5pZCk7CisgIGdsLT5CaW5kQnVmZmVyIChnbF9tZW0tPnRhcmdldCwgZ2xfbWVtLT5pZCk7CisgIGdsLT5CdWZmZXJEYXRhIChnbF9tZW0tPnRhcmdldCwgZ2xfbWVtLT5tZW0ubWVtLm1heHNpemUsIE5VTEwsCisgICAgICBnbF9tZW0tPnVzYWdlX2hpbnRzKTsKKyAgZ2wtPkJpbmRCdWZmZXIgKGdsX21lbS0+dGFyZ2V0LCAwKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RydWN0IGNyZWF0ZV9kYXRhCit7CisgIEdzdEdMQnVmZmVyICptZW07CisgIGdib29sZWFuIHJlc3VsdDsKK307CisKK3N0YXRpYyB2b2lkCitfZ2xfYnVmZmVyX2luaXQgKEdzdEdMQnVmZmVyICogbWVtLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgR3N0TWVtb3J5ICogcGFyZW50LCBHc3RHTENvbnRleHQgKiBjb250ZXh0LCBndWludCBnbF90YXJnZXQsIGd1aW50IGdsX3VzYWdlLAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsIGdzaXplIHNpemUpCit7CisgIG1lbS0+dGFyZ2V0ID0gZ2xfdGFyZ2V0OworICBtZW0tPnVzYWdlX2hpbnRzID0gZ2xfdXNhZ2U7CisKKyAgZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXQgKChHc3RHTEJhc2VNZW1vcnkgKikgbWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgY29udGV4dCwKKyAgICAgIHBhcmFtcywgc2l6ZSwgTlVMTCwgTlVMTCk7CisKKyAgR1NUX0NBVF9ERUJVRyAoR1NUX0NBVF9HTF9CVUZGRVIsICJuZXcgR0wgYnVmZmVyIG1lbW9yeTolcCBzaXplOiUiCisgICAgICBHX0dTSVpFX0ZPUk1BVCwgbWVtLCBtZW0tPm1lbS5tZW0ubWF4c2l6ZSk7Cit9CisKK3N0YXRpYyBHc3RHTEJ1ZmZlciAqCitfZ2xfYnVmZmVyX25ldyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBwYXJlbnQsCisgICAgR3N0R0xDb250ZXh0ICogY29udGV4dCwgZ3VpbnQgZ2xfdGFyZ2V0LCBndWludCBnbF91c2FnZSwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLCBnc2l6ZSBzaXplKQoreworICBHc3RHTEJ1ZmZlciAqcmV0ID0gZ19uZXcwIChHc3RHTEJ1ZmZlciwgMSk7CisgIF9nbF9idWZmZXJfaW5pdCAocmV0LCBhbGxvY2F0b3IsIHBhcmVudCwgY29udGV4dCwgZ2xfdGFyZ2V0LCBnbF91c2FnZSwKKyAgICAgIHBhcmFtcywgc2l6ZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdwb2ludGVyCitnc3RfZ2xfYnVmZmVyX2NwdV9hY2Nlc3MgKEdzdEdMQnVmZmVyICogbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgc2l6ZSkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBtZW0tPm1lbS5jb250ZXh0LT5nbF92dGFibGU7CisgIGdwb2ludGVyIGRhdGEsIHJldDsKKworICBpZiAoIWdzdF9nbF9iYXNlX21lbW9yeV9hbGxvY19kYXRhIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAobWVtKSkpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgcmV0ID0gbWVtLT5tZW0uZGF0YTsKKworICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9CVUZGRVIsICJtYXBwaW5nIGlkICVkIHNpemUgJSIgR19HU0laRV9GT1JNQVQsCisgICAgICBtZW0tPmlkLCBzaXplKTsKKworICAvKiBUaGUgZXh0cmEgZGF0YSBwb2ludGVyIGluZGlyZWN0aW9uL21lbWNweSBpcyBuZWVkZWQgZm9yIGNvaGVyZW50IGFjcm9zcworICAgKiBjb25jdXJyZW50IG1hcCgpJ3MgaW4gYm90aCBHTCBhbmQgQ1BVICovCisgIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKQorICAgICAgJiYgKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgPT0gMCAmJiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1JFQUQpICE9IDApIHsKKyAgICBnbC0+QmluZEJ1ZmZlciAobWVtLT50YXJnZXQsIG1lbS0+aWQpOworCisgICAgaWYgKGdsLT5NYXBCdWZmZXJSYW5nZSkgeworICAgICAgLyogRklYTUU6IG9wdGlvbmFsbHkgcmVtb3ZlIHRoaXMgd2l0aCBhIGZsYWcgYW5kIHJldHVybiB0aGUKKyAgICAgICAqIGdsTWFwQnVmZmVyUmFuZ2UgcG9pbnRlciAocmVxdWlyZXMKKyAgICAgICAqIEdMX0FSQl9idWZmZXJfc3RvcmFnZS9HTDQvR0xfQ09IRVJFTlRfQklUKSAqLworICAgICAgZ3VpbnQgZ2xfbWFwX2ZsYWdzID0gR0xfTUFQX1JFQURfQklUOworCisgICAgICBkYXRhID0gZ2wtPk1hcEJ1ZmZlclJhbmdlIChtZW0tPnRhcmdldCwgMCwgc2l6ZSwgZ2xfbWFwX2ZsYWdzKTsKKworICAgICAgaWYgKGRhdGEpCisgICAgICAgIG1lbWNweSAobWVtLT5tZW0uZGF0YSwgZGF0YSwgc2l6ZSk7CisKKyAgICAgIGdsLT5Vbm1hcEJ1ZmZlciAobWVtLT50YXJnZXQpOworICAgICAgcmV0ID0gbWVtLT5tZW0uZGF0YTsKKyAgICB9IGVsc2UgaWYgKGdsLT5HZXRCdWZmZXJTdWJEYXRhKSB7CisgICAgICBnbC0+R2V0QnVmZmVyU3ViRGF0YSAobWVtLT50YXJnZXQsIDAsIHNpemUsIG1lbS0+bWVtLmRhdGEpOworICAgICAgcmV0ID0gbWVtLT5tZW0uZGF0YTsKKyAgICB9IGVsc2UgeworICAgICAgcmV0ID0gTlVMTDsKKyAgICB9CisgICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCAwKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfYnVmZmVyX3VwbG9hZF9jcHVfd3JpdGUgKEdzdEdMQnVmZmVyICogbWVtLCBHc3RNYXBJbmZvICogaW5mbywKKyAgICBnc2l6ZSBzaXplKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IG1lbS0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ3BvaW50ZXIgZGF0YTsKKworICBpZiAoIW1lbS0+bWVtLmRhdGEpCisgICAgLyogbm8gZGF0YSBwb2ludGVyIGhhcyBiZWVuIHdyaXR0ZW4gKi8KKyAgICByZXR1cm47CisKKyAgLyogVGhlIGV4dHJhIGRhdGEgcG9pbnRlciBpbmRpcmVjdGlvbi9tZW1jcHkgaXMgbmVlZGVkIGZvciBjb2hlcmVudCBhY3Jvc3MKKyAgICogY29uY3VycmVudCBtYXAoKSdzIGluIGJvdGggR0wgYW5kIENQVSAqLworICAvKiBGSVhNRTogdXBsb2FkaW5nIHBvdGVudGlhbGx5IGhhbGYtd3JpdHRlbiBkYXRhIGZvciBsaWJhdiBwdXNoaW5nIFJFQURXUklURQorICAgKiBtYXBwZWQgYnVmZmVycyAqLworICBpZiAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpCisgICAgICB8fCAobWVtLT5tZW0ubWFwX2ZsYWdzICYgR1NUX01BUF9XUklURSkgIT0gMCkgeworICAgIGdsLT5CaW5kQnVmZmVyIChtZW0tPnRhcmdldCwgbWVtLT5pZCk7CisKKyAgICBpZiAoZ2wtPk1hcEJ1ZmZlclJhbmdlKSB7CisgICAgICAvKiBGSVhNRTogb3B0aW9uYWxseSByZW1vdmUgdGhpcyB3aXRoIGEgZmxhZyBhbmQgcmV0dXJuIHRoZQorICAgICAgICogZ2xNYXBCdWZmZXJSYW5nZSBwb2ludGVyIChyZXF1aXJlcworICAgICAgICogR0xfQVJCX2J1ZmZlcl9zdG9yYWdlL0dMNC9HTF9DT0hFUkVOVF9CSVQpICovCisgICAgICBndWludCBnbF9tYXBfZmxhZ3MgPSBHTF9NQVBfV1JJVEVfQklUOworCisgICAgICBkYXRhID0gZ2wtPk1hcEJ1ZmZlclJhbmdlIChtZW0tPnRhcmdldCwgMCwgc2l6ZSwgZ2xfbWFwX2ZsYWdzKTsKKworICAgICAgaWYgKGRhdGEpCisgICAgICAgIG1lbWNweSAoZGF0YSwgbWVtLT5tZW0uZGF0YSwgc2l6ZSk7CisKKyAgICAgIGdsLT5Vbm1hcEJ1ZmZlciAobWVtLT50YXJnZXQpOworICAgIH0gZWxzZSBpZiAoZ2wtPkJ1ZmZlclN1YkRhdGEpIHsKKyAgICAgIGdsLT5CdWZmZXJTdWJEYXRhIChtZW0tPnRhcmdldCwgMCwgc2l6ZSwgbWVtLT5tZW0uZGF0YSk7CisgICAgfQorICAgIGdsLT5CaW5kQnVmZmVyIChtZW0tPnRhcmdldCwgMCk7CisgIH0KK30KKworc3RhdGljIGdwb2ludGVyCitfZ2xfYnVmZmVyX21hcCAoR3N0R0xCdWZmZXIgKiBtZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IG1lbS0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgIT0gMCkgeworICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfUkVBRCkgeworICAgICAgZ3N0X2dsX2J1ZmZlcl91cGxvYWRfY3B1X3dyaXRlIChtZW0sIGluZm8sIHNpemUpOworICAgIH0KKyAgICBnbC0+QmluZEJ1ZmZlciAobWVtLT50YXJnZXQsIG1lbS0+aWQpOworICAgIHJldHVybiAmbWVtLT5pZDsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gZ3N0X2dsX2J1ZmZlcl9jcHVfYWNjZXNzIChtZW0sIGluZm8sIHNpemUpOworICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfYnVmZmVyX3VubWFwIChHc3RHTEJ1ZmZlciAqIG1lbSwgR3N0TWFwSW5mbyAqIGluZm8pCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gbWVtLT5tZW0uY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGlmICgoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSAhPSAwKSB7CisgICAgZ2wtPkJpbmRCdWZmZXIgKG1lbS0+dGFyZ2V0LCAwKTsKKyAgfQorICAvKiBYWFg6IG9wdGltaXN0aWNhbGx5IHRyYW5zZmVyIGRhdGEgKi8KK30KKworLyoqCisgKiBnc3RfZ2xfYnVmZmVyX2NvcHlfYnVmZmVyX3N1Yl9kYXRhOgorICogQHNyYzogdGhlIHNvdXJjZSAjR3N0R0xCdWZmZXIKKyAqIEBkZXN0OiB0aGUgZGVzdGluYXRpb24gI0dzdEdMQnVmZmVyCisgKiBAb2Zmc2V0OiB0aGUgb2Zmc2V0IHRvIGNvcHkgZnJvbSBAc3JjCisgKiBAc2l6ZTogdGhlIHNpemUgdG8gY29weSBmcm9tIEBzcmMKKyAqCisgKiBDb3BpZXMgQHNyYyBpbnRvIEBkZXN0IHVzaW5nIGdsQ29weUJ1ZmZlclN1YkRhdGEoKS4KKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBjb3B5IG9wZXJhdGlvbiBzdWNjZWVkZWQKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2J1ZmZlcl9jb3B5X2J1ZmZlcl9zdWJfZGF0YSAoR3N0R0xCdWZmZXIgKiBzcmMsCisgICAgR3N0R0xCdWZmZXIgKiBkZXN0LCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBzcmMtPm1lbS5jb250ZXh0LT5nbF92dGFibGU7CisgIEdzdE1hcEluZm8gc2luZm8sIGRpbmZvOworCisgIGlmICghZ2wtPkNvcHlCdWZmZXJTdWJEYXRhKQorICAgIC8qIFRoaXMgaXMgR0woRVMpIDMuMCsgb25seSAqLworICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIWdzdF9tZW1vcnlfbWFwICgoR3N0TWVtb3J5ICopIHNyYywgJnNpbmZvLCBHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkgeworICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CVUZGRVIsCisgICAgICAgICJmYWlsZWQgdG8gcmVhZCBtYXAgc291cmNlIG1lbW9yeSAlcCIsIHNyYyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBkZXN0LCAmZGluZm8sIEdTVF9NQVBfV1JJVEUgfCBHU1RfTUFQX0dMKSkgeworICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9CVUZGRVIsCisgICAgICAgICJmYWlsZWQgdG8gd3JpdGUgbWFwIGRlc3RpbmF0aW9uIG1lbW9yeSAlcCIsIGRlc3QpOworICAgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgc3JjLCAmc2luZm8pOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGdsLT5CaW5kQnVmZmVyIChHTF9DT1BZX1JFQURfQlVGRkVSLCBzcmMtPmlkKTsKKyAgZ2wtPkJpbmRCdWZmZXIgKEdMX0NPUFlfV1JJVEVfQlVGRkVSLCBkZXN0LT5pZCk7CisgIGdsLT5Db3B5QnVmZmVyU3ViRGF0YSAoR0xfQ09QWV9SRUFEX0JVRkZFUiwgR0xfQ09QWV9XUklURV9CVUZGRVIsCisgICAgICBvZmZzZXQsIDAsIHNpemUpOworCisgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgc3JjLCAmc2luZm8pOworICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIGRlc3QsICZkaW5mbyk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHc3RHTEJ1ZmZlciAqCitfZ2xfYnVmZmVyX2NvcHkgKEdzdEdMQnVmZmVyICogc3JjLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3IgPSBzcmMtPm1lbS5tZW0uYWxsb2NhdG9yOworICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgc3JjLT5tZW0ubWVtLmFsaWduLCAwLCAwIH07CisgIEdzdEdMQnVmZmVyICpkZXN0ID0gTlVMTDsKKworICBkZXN0ID0gX2dsX2J1ZmZlcl9uZXcgKGFsbG9jYXRvciwgTlVMTCwgc3JjLT5tZW0uY29udGV4dCwKKyAgICAgIHNyYy0+dGFyZ2V0LCBzcmMtPnVzYWdlX2hpbnRzLCAmcGFyYW1zLCBzcmMtPm1lbS5tZW0ubWF4c2l6ZSk7CisKKyAgLyogSWYgbm90IGRvaW5nIGEgZnVsbCBjb3B5LCB0aGVuIGNvcHkgdG8gc3lzbWVtLCB0aGUgMkQgcmVwcmVzZW50aW9uIG9mIHRoZQorICAgKiB0ZXh0dXJlIHdvdWxkIGJlY29tZSB3cm9uZyAqLworICBpZiAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoc3JjLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKSB7CisgICAgaWYgKCFnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5IChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoc3JjKSwKKyAgICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChkZXN0KSwgb2Zmc2V0LCBzaXplKSkgeworICAgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX0JVRkZFUiwgIkNvdWxkIG5vdCBjb3B5IEdMIEJ1ZmZlciIpOworICAgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSk7CisgICAgICBkZXN0ID0gTlVMTDsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgaWYgKCFnc3RfZ2xfYnVmZmVyX2NvcHlfYnVmZmVyX3N1Yl9kYXRhIChzcmMsIGRlc3QsIG9mZnNldCwgc2l6ZSkpIHsKKyAgICAgIGlmICghZ3N0X2dsX2Jhc2VfbWVtb3J5X21lbWNweSAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKHNyYyksCisgICAgICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChkZXN0KSwgb2Zmc2V0LCBzaXplKSkgeworICAgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfQlVGRkVSLCAiQ291bGQgbm90IGNvcHkgR0wgQnVmZmVyIik7CisgICAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCkpOworICAgICAgICBkZXN0ID0gTlVMTDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICByZXR1cm4gZGVzdDsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfZ2xfYnVmZmVyX2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIGdzaXplIHNpemUsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgZ19jcml0aWNhbCAoIk5lZWQgdG8gdXNlIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYygpIHRvIGFsbG9jYXRlIGZyb20gIgorICAgICAgInRoaXMgYWxsb2NhdG9yIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfYnVmZmVyX2Rlc3Ryb3kgKEdzdEdMQnVmZmVyICogbWVtKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IG1lbS0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBnbC0+RGVsZXRlQnVmZmVycyAoMSwgJm1lbS0+aWQpOworfQorCitzdGF0aWMgdm9pZAorX2dzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhIChHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMgKiBzcmMsCisgICAgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zICogZGVzdCkKK3sKKyAgbWVtc2V0IChkZXN0LCAwLCBzaXplb2YgKCpkZXN0KSk7CisKKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSAoJnNyYy0+cGFyZW50LCAmZGVzdC0+cGFyZW50KTsKKworICBkZXN0LT5nbF90YXJnZXQgPSBzcmMtPmdsX3RhcmdldDsKKyAgZGVzdC0+Z2xfdXNhZ2UgPSBzcmMtPmdsX3VzYWdlOworfQorCitzdGF0aWMgdm9pZAorX2dzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhIChHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMgKgorICAgIHBhcmFtcykKK3sKKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSAoJnBhcmFtcy0+cGFyZW50KTsKK30KKworLyoqCisgKiBnc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX25ldzoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBhbGxvY19zaXplOiB0aGUgc2l6ZSBpbiBieXRlcyB0byBhbGxvY2F0ZQorICogQGFsbG9jX3BhcmFtczogKGFsbG93LW5vbmUpOiB0aGUgI0dzdEFsbG9jYXRpb25QYXJhbXMgZm9yIEB0ZXhfaWQKKyAqIEBnbF90YXJnZXQ6IHRoZSBPcGVuR0wgdGFyZ2V0IHRvIGFsbG9jYXRlCisgKiBAZ2xfdXNhZ2U6IHRoZSBPcGVuR0wgdXNhZ2UgaGludCB0byBhbGxvY2F0ZSB3aXRoCisgKgorICogUmV0dXJuczogYSBuZXcgI0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyBmb3IgYWxsb2NhdGluZyBPcGVuR0wgYnVmZmVyCisgKiAgICAgICAgICBvYmplY3RzCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMgKgorZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGdzaXplIGFsbG9jX3NpemUsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywgZ3VpbnQgZ2xfdGFyZ2V0LCBndWludCBnbF91c2FnZSkKK3sKKyAgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChhbGxvY19zaXplID4gMCwgTlVMTCk7CisKKyAgcGFyYW1zID0gZ19uZXcwIChHc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMsIDEpOworCisgIGlmICghZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKCZwYXJhbXMtPnBhcmVudCwgc2l6ZW9mICgqcGFyYW1zKSwKKyAgICAgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19CVUZGRVIgfAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYykKKyAgICAgICAgICBfZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEsCisgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jKQorICAgICAgICAgIF9nc3RfZ2xfYnVmZmVyX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSwgY29udGV4dCwgYWxsb2Nfc2l6ZSwKKyAgICAgICAgICBhbGxvY19wYXJhbXMsIE5VTEwsIDAsIE5VTEwsIE5VTEwpKSB7CisgICAgZ19mcmVlIChwYXJhbXMpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcGFyYW1zLT5nbF90YXJnZXQgPSBnbF90YXJnZXQ7CisgIHBhcmFtcy0+Z2xfdXNhZ2UgPSBnbF91c2FnZTsKKworICByZXR1cm4gcGFyYW1zOworfQorCitzdGF0aWMgR3N0R0xCdWZmZXIgKgorX2dsX2J1ZmZlcl9hbGxvY19tZW0gKEdzdEdMQnVmZmVyQWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgZ3VpbnQgYWxsb2NfZmxhZ3MgPSBwYXJhbXMtPnBhcmVudC5hbGxvY19mbGFnczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfZmxhZ3MgJgorICAgICAgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQlVGRkVSLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGFsbG9jX2ZsYWdzICYgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfQUxMT0MsCisgICAgICBOVUxMKTsKKworICByZXR1cm4gX2dsX2J1ZmZlcl9uZXcgKEdTVF9BTExPQ0FUT1IgKGFsbG9jYXRvciksIE5VTEwsCisgICAgICBwYXJhbXMtPnBhcmVudC5jb250ZXh0LCBwYXJhbXMtPmdsX3RhcmdldCwgcGFyYW1zLT5nbF91c2FnZSwKKyAgICAgIHBhcmFtcy0+cGFyZW50LmFsbG9jX3BhcmFtcywgcGFyYW1zLT5wYXJlbnQuYWxsb2Nfc2l6ZSk7Cit9CisKK0dfREVGSU5FX1RZUEUgKEdzdEdMQnVmZmVyQWxsb2NhdG9yLCBnc3RfZ2xfYnVmZmVyX2FsbG9jYXRvciwKKyAgICBHU1RfVFlQRV9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IpOworCitzdGF0aWMgdm9pZAorZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0b3JfY2xhc3NfaW5pdCAoR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyAqIGtsYXNzKQoreworICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqZ2xfYmFzZTsKKworICBnbF9iYXNlID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICopIGtsYXNzOworCisgIGdsX2Jhc2UtPmFsbG9jID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckFsbG9jRnVuY3Rpb24pIF9nbF9idWZmZXJfYWxsb2NfbWVtOworICBnbF9iYXNlLT5jcmVhdGUgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24pIF9nbF9idWZmZXJfY3JlYXRlOworICBnbF9iYXNlLT5tYXAgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yTWFwRnVuY3Rpb24pIF9nbF9idWZmZXJfbWFwOworICBnbF9iYXNlLT51bm1hcCA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uKSBfZ2xfYnVmZmVyX3VubWFwOworICBnbF9iYXNlLT5jb3B5ID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbikgX2dsX2J1ZmZlcl9jb3B5OworICBnbF9iYXNlLT5kZXN0cm95ID0KKyAgICAgIChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JEZXN0cm95RnVuY3Rpb24pIF9nbF9idWZmZXJfZGVzdHJveTsKKworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gX2dsX2J1ZmZlcl9hbGxvYzsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9idWZmZXJfYWxsb2NhdG9yX2luaXQgKEdzdEdMQnVmZmVyQWxsb2NhdG9yICogYWxsb2NhdG9yKQoreworICBHc3RBbGxvY2F0b3IgKmFsbG9jID0gR1NUX0FMTE9DQVRPUl9DQVNUIChhbGxvY2F0b3IpOworCisgIGFsbG9jLT5tZW1fdHlwZSA9IEdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUU7CisKKyAgR1NUX09CSkVDVF9GTEFHX1NFVCAoYWxsb2NhdG9yLCBHU1RfQUxMT0NBVE9SX0ZMQUdfQ1VTVE9NX0FMTE9DKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYnVmZmVyX2luaXRfb25jZToKKyAqCisgKiBJbml0aWFsaXplcyB0aGUgR0wgQnVmZmVyIGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KKyAqIG11bHRpcGxlIHRpbWVzLiAgVGhpcyBtdXN0IGJlIGNhbGxlZCBiZWZvcmUgYW55IG90aGVyICNHc3RHTEJ1ZmZlciBvcGVyYXRpb24uCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYnVmZmVyX2luaXRfb25jZSAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfaW5pdF9vbmNlICgpOworCisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfR0xfQlVGRkVSLCAiZ2xidWZmZXIiLCAwLCAiT3BlbkdMIEJ1ZmZlciIpOworCisgICAgX2dsX2J1ZmZlcl9hbGxvY2F0b3IgPQorICAgICAgICBnX29iamVjdF9uZXcgKGdzdF9nbF9idWZmZXJfYWxsb2NhdG9yX2dldF90eXBlICgpLCBOVUxMKTsKKworICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9HTF9CVUZGRVJfQUxMT0NBVE9SX05BTUUsCisgICAgICAgIGdzdF9vYmplY3RfcmVmIChfZ2xfYnVmZmVyX2FsbG9jYXRvcikpOworICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOworICB9Cit9CisKKy8qKgorICogZ3N0X2lzX2dsX2J1ZmZlcjoKKyAqIEBtZW06YSAjR3N0TWVtb3J5CisgKiAKKyAqIFJldHVybnM6IHdoZXRoZXIgdGhlIG1lbW9yeSBhdCBAbWVtIGlzIGEgI0dzdEdMQnVmZmVyCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2lzX2dsX2J1ZmZlciAoR3N0TWVtb3J5ICogbWVtKQoreworICByZXR1cm4gbWVtICE9IE5VTEwgJiYgbWVtLT5hbGxvY2F0b3IgIT0gTlVMTCAmJgorICAgICAgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKKyAgICAgIEdTVF9UWVBFX0dMX0JVRkZFUl9BTExPQ0FUT1IpOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZjUxOWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVyLmgKQEAgLTAsMCArMSwxMjUgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfR1NUX0dMX0JVRkZFUl9IXworI2RlZmluZSBfR1NUX0dMX0JVRkZFUl9IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9nc3RhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0bWVtb3J5Lmg+CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9HTF9CVUZGRVJfQUxMT0NBVE9SIChnc3RfZ2xfYnVmZmVyX2FsbG9jYXRvcl9nZXRfdHlwZSgpKQorR1R5cGUgZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0b3JfZ2V0X3R5cGUodm9pZCk7CisKKyNkZWZpbmUgR1NUX0lTX0dMX0JVRkZFUl9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR0xfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0JVRkZFUl9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9CVUZGRVJfQUxMT0NBVE9SKSkKKyNkZWZpbmUgR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAgICAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9HTF9CVUZGRVJfQUxMT0NBVE9SLCBHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR0xfQlVGRkVSX0FMTE9DQVRPUiwgR3N0R0xCdWZmZXJBbGxvY2F0b3IpKQorI2RlZmluZSBHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0dMX0JVRkZFUl9BTExPQ0FUT1IsIEdzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MpKQorI2RlZmluZSBHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9DQVNUKG9iaikgICAgICAgICAgICAoKEdzdEdMQnVmZmVyQWxsb2NhdG9yICopKG9iaikpCisKKy8qKgorICogR3N0R0xCdWZmZXI6CisgKiBAbWVtOiB0aGUgcGFyZW50IG9iamVjdAorICogQGNvbnRleHQ6IHRoZSAjR3N0R0xDb250ZXh0IHRvIHVzZSBmb3IgR0wgb3BlcmF0aW9ucworICogQGlkOiB0aGUgYnVmZmVyIGlkIGZvciB0aGlzIG1lbW9yeQorICogQHRhcmdldDogdGhlIE9wZW5HTCB0YXJnZXQgb2YgdGhpcyB0ZXh0dXJlIGZvciBiaW5kaW5nIHB1cnBvc2VzCisgKiBAdXNhZ2VfaGludHM6IHRoZSBPcGVuR0wgdXNhZ2UgaGludHMgdGhpcyBidWZmZXIgd2FzIGNyZWF0ZWQgd2l0aAorICoKKyAqIFJlcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgYSBHTCBidWZmZXIKKyAqLworc3RydWN0IF9Hc3RHTEJ1ZmZlcgoreworICBHc3RHTEJhc2VNZW1vcnkgICAgICAgbWVtOworCisgIGd1aW50ICAgICAgICAgICAgICAgICBpZDsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgIHRhcmdldDsgICAgICAgICAvKiBYWFg6IHB1dCB0aGlzIGluIHRoZSBhbGxvY2F0b3I/ICovCisgIGd1aW50ICAgICAgICAgICAgICAgICB1c2FnZV9oaW50czsgICAgIC8qIFhYWDogcHV0IHRoaXMgaW4gdGhlIGFsbG9jYXRvcj8gKi8KK307CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlckFsbG9jYXRpb25QYXJhbXMgR3N0R0xCdWZmZXJBbGxvY2F0aW9uUGFyYW1zOworCisjZGVmaW5lIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0JVRkZFUiAoMSA8PCA0KQorCisvKioKKyAqIEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtczoKKyAqIEBwYXJlbnQ6IHBhcmVudCBvYmplY3QKKyAqIEBnbF90YXJnZXQ6IHRoZSBPcGVuR0wgdGFyZ2V0IHRvIGJpbmQgdGhlIGJ1ZmZlciB0bworICogQGdsX3VzYWdlOiB0aGUgT3BlbkdMIHVzYWdlIGhpbnQgdG8gY3JlYXRlIHRoZSBidWZmZXIgd2l0aAorICovCitzdHJ1Y3QgX0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcworeworICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgICAgIHBhcmVudDsKKworICBndWludCAgICAgICAgICAgICAgICAgICAgIGdsX3RhcmdldDsKKyAgZ3VpbnQgICAgICAgICAgICAgICAgICAgICBnbF91c2FnZTsKK307CisKK0dzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyAqICAgZ3N0X2dsX2J1ZmZlcl9hbGxvY2F0aW9uX3BhcmFtc19uZXcgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdzaXplIGFsbG9jX3NpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBnbF90YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgZ2xfdXNhZ2UpOworCisvKioKKyAqIEdzdEdMQnVmZmVyQWxsb2NhdG9yCisgKgorICogT3BhcXVlICNHc3RHTEFsbG9jYXRvciBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RHTEJ1ZmZlckFsbG9jYXRvcgoreworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgcGFyZW50OworfTsKKworLyoqCisgKiBHc3RHTEJ1ZmZlckFsbG9jYXRvckNsYXNzOgorICoKKyAqIFRoZSAjR3N0R0xCdWZmZXJBbGxvY2F0b3JDbGFzcyBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQorICovCitzdHJ1Y3QgX0dzdEdMQnVmZmVyQWxsb2NhdG9yQ2xhc3MKK3sKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworI2RlZmluZSBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9CVUZGRVIgIm1lbW9yeTpHTEJ1ZmZlciIKKworLyoqCisgKiBHU1RfR0xfQlVGRkVSX0FMTE9DQVRPUl9OQU1FOgorICoKKyAqIFRoZSBuYW1lIG9mIHRoZSBHTCBidWZmZXIgYWxsb2NhdG9yCisgKi8KKyNkZWZpbmUgR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRSAgICJHTEJ1ZmZlciIKKwordm9pZCAgICAgICAgICBnc3RfZ2xfYnVmZmVyX2luaXRfb25jZSAodm9pZCk7CitnYm9vbGVhbiAgICAgIGdzdF9pc19nbF9idWZmZXIgICAgICAgIChHc3RNZW1vcnkgKiBtZW0pOworCitHc3RHTEJ1ZmZlciAqIGdzdF9nbF9idWZmZXJfYWxsb2MgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgZ2xfdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgZ2xfdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3NpemUgbWF4c2l6ZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfR1NUX0dMX0JVRkZFUl9IXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5jCmluZGV4IDY5YWMyZDguLjkwNTM2YjAgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmMKQEAgLTQ3LDEzICs0Nyw5IEBACiBzdHJ1Y3QgX0dzdEdMQnVmZmVyUG9vbFByaXZhdGUKIHsKICAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7Ci0gIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqZ2xfcGFyYW1zOwogICBHc3RDYXBzICpjYXBzOwotICBnaW50IGltX2Zvcm1hdDsKLSAgR3N0VmlkZW9JbmZvIGluZm87Ci0gIEdzdFZpZGVvQWxpZ25tZW50IHZhbGlnbjsKICAgZ2Jvb2xlYW4gYWRkX3ZpZGVvbWV0YTsKLSAgZ2Jvb2xlYW4gYWRkX3VwbG9hZG1ldGE7CiAgIGdib29sZWFuIGFkZF9nbHN5bmNtZXRhOwogICBnYm9vbGVhbiB3YW50X2VnbGltYWdlOwogICBHc3RCdWZmZXIgKmxhc3RfYnVmZmVyOwpAQCAtNzYsOSArNzIsMTAgQEAKIGdzdF9nbF9idWZmZXJfcG9vbF9nZXRfb3B0aW9ucyAoR3N0QnVmZmVyUG9vbCAqIHBvb2wpCiB7CiAgIHN0YXRpYyBjb25zdCBnY2hhciAqb3B0aW9uc1tdID0geyBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX01FVEEsCi0gICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WSURFT19HTF9URVhUVVJFX1VQTE9BRF9NRVRBLAogICAgIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfU1lOQ19NRVRBLAogICAgIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fQUxJR05NRU5ULAorICAgIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfMkQsCisgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUsCiAgICAgTlVMTAogICB9OwogCkBAIC05Niw3ICs5Myw4IEBACiAgIGd1aW50IG1heF9hbGlnbiwgbjsKICAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3IgPSBOVUxMOwogICBHc3RBbGxvY2F0aW9uUGFyYW1zIGFsbG9jX3BhcmFtczsKLSAgZ2Jvb2xlYW4gcmVzZXQgPSBUUlVFOworICBHc3RHTFRleHR1cmVUYXJnZXQgdGV4X3RhcmdldDsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKICAgZ2ludCBwOwogCiAgIGlmICghZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfcGFyYW1zIChjb25maWcsICZjYXBzLCBOVUxMLCAmbWluX2J1ZmZlcnMsCkBAIC0xMTYsNjMgKzExNCw2MSBAQAogICBpZiAoIWdzdF9idWZmZXJfcG9vbF9jb25maWdfZ2V0X2FsbG9jYXRvciAoY29uZmlnLCAmYWxsb2NhdG9yLCAmYWxsb2NfcGFyYW1zKSkKICAgICBnb3RvIHdyb25nX2NvbmZpZzsKIAorICBnc3RfY2Fwc19yZXBsYWNlICgmcHJpdi0+Y2FwcywgY2Fwcyk7CisKICAgaWYgKHByaXYtPmFsbG9jYXRvcikKICAgICBnc3Rfb2JqZWN0X3VucmVmIChwcml2LT5hbGxvY2F0b3IpOwogCi0gIGlmICghYWxsb2NhdG9yKSB7Ci0gICAgZ3N0X2dsX21lbW9yeV9pbml0ICgpOwotICAgIHByaXYtPmFsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZCAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IpOwotICB9IGVsc2UgeworICBpZiAoYWxsb2NhdG9yIC8qICYmIEdTVF9JU19HTF9NRU1PUllfQUxMT0NBVE9SIChhbGxvY2F0b3IpIEZJWE1FIEVHTEltYWdlICovICkgewogICAgIHByaXYtPmFsbG9jYXRvciA9IGdzdF9vYmplY3RfcmVmIChhbGxvY2F0b3IpOworICB9IGVsc2UgeworICAgIHByaXYtPmFsbG9jYXRvciA9CisgICAgICAgIEdTVF9BTExPQ0FUT1IgKGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0IChnbHBvb2wtPmNvbnRleHQpKTsKKyAgICBnX2Fzc2VydCAocHJpdi0+YWxsb2NhdG9yKTsKICAgfQogCi0gIHByaXYtPnBhcmFtcyA9IGFsbG9jX3BhcmFtczsKLQotICBwcml2LT5pbV9mb3JtYXQgPSBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZpbmZvKTsKLSAgaWYgKHByaXYtPmltX2Zvcm1hdCA9PSAtMSkKLSAgICBnb3RvIHVua25vd25fZm9ybWF0OwotCi0gIGlmIChwcml2LT5jYXBzKQotICAgIHJlc2V0ID0gIWdzdF9jYXBzX2lzX2VxdWFsIChwcml2LT5jYXBzLCBjYXBzKTsKLQotICBnc3RfY2Fwc19yZXBsYWNlICgmcHJpdi0+Y2FwcywgY2Fwcyk7Ci0gIHByaXYtPmluZm8gPSBpbmZvOwotCiAgIHByaXYtPmFkZF92aWRlb21ldGEgPSBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2hhc19vcHRpb24gKGNvbmZpZywKICAgICAgIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fTUVUQSk7Ci0gIHByaXYtPmFkZF91cGxvYWRtZXRhID0gZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19oYXNfb3B0aW9uIChjb25maWcsCi0gICAgICBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEEpOwogICBwcml2LT5hZGRfZ2xzeW5jbWV0YSA9IGdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAogICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9TWU5DX01FVEEpOwogCiAjaWYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCi0gIGdfYXNzZXJ0IChwcml2LT5hbGxvY2F0b3IgIT0gTlVMTCk7Ci0gIHByaXYtPndhbnRfZWdsaW1hZ2UgPQotICAgICAgKGdfc3RyY21wMCAocHJpdi0+YWxsb2NhdG9yLT5tZW1fdHlwZSwgR1NUX0VHTF9JTUFHRV9NRU1PUllfVFlQRSkgPT0gMCk7Ci0jZWxzZQotICBwcml2LT53YW50X2VnbGltYWdlID0gRkFMU0U7CisgIGlmIChwcml2LT5hbGxvY2F0b3IpIHsKKyAgICBwcml2LT53YW50X2VnbGltYWdlID0KKyAgICAgICAgKGdfc3RyY21wMCAocHJpdi0+YWxsb2NhdG9yLT5tZW1fdHlwZSwgR1NUX0VHTF9JTUFHRV9NRU1PUllfVFlQRSkgPT0gMCk7CisgIH0gZWxzZQogI2VuZGlmCisgIHsKKyAgICBwcml2LT53YW50X2VnbGltYWdlID0gRkFMU0U7CisgIH0KKworICBpZiAocHJpdi0+Z2xfcGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHByaXYtPmdsX3BhcmFtcyk7CisgIHByaXYtPmdsX3BhcmFtcyA9IChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqKQorICAgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXMgKGNvbmZpZyk7CisgIGlmICghcHJpdi0+Z2xfcGFyYW1zKQorICAgIHByaXYtPmdsX3BhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKGdscG9vbC0+Y29udGV4dCwKKyAgICAgICAgJmFsbG9jX3BhcmFtcywgJmluZm8sIC0xLCBOVUxMLCAwKTsKIAogICBtYXhfYWxpZ24gPSBhbGxvY19wYXJhbXMuYWxpZ247CiAKICAgaWYgKGdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAogICAgICAgICAgIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fVklERU9fQUxJR05NRU5UKSkgewotCiAgICAgcHJpdi0+YWRkX3ZpZGVvbWV0YSA9IFRSVUU7CiAKLSAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF92aWRlb19hbGlnbm1lbnQgKGNvbmZpZywgJnByaXYtPnZhbGlnbik7CisgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfdmlkZW9fYWxpZ25tZW50IChjb25maWcsCisgICAgICAgIHByaXYtPmdsX3BhcmFtcy0+dmFsaWduKTsKIAogICAgIGZvciAobiA9IDA7IG4gPCBHU1RfVklERU9fTUFYX1BMQU5FUzsgKytuKQotICAgICAgbWF4X2FsaWduIHw9IHByaXYtPnZhbGlnbi5zdHJpZGVfYWxpZ25bbl07CisgICAgICBtYXhfYWxpZ24gfD0gcHJpdi0+Z2xfcGFyYW1zLT52YWxpZ24tPnN0cmlkZV9hbGlnbltuXTsKIAogICAgIGZvciAobiA9IDA7IG4gPCBHU1RfVklERU9fTUFYX1BMQU5FUzsgKytuKQotICAgICAgcHJpdi0+dmFsaWduLnN0cmlkZV9hbGlnbltuXSA9IG1heF9hbGlnbjsKKyAgICAgIHByaXYtPmdsX3BhcmFtcy0+dmFsaWduLT5zdHJpZGVfYWxpZ25bbl0gPSBtYXhfYWxpZ247CiAKLSAgICBnc3RfdmlkZW9faW5mb19hbGlnbiAoJnByaXYtPmluZm8sICZwcml2LT52YWxpZ24pOworICAgIGdzdF92aWRlb19pbmZvX2FsaWduIChwcml2LT5nbF9wYXJhbXMtPnZfaW5mbywgcHJpdi0+Z2xfcGFyYW1zLT52YWxpZ24pOwogCi0gICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfdmlkZW9fYWxpZ25tZW50IChjb25maWcsICZwcml2LT52YWxpZ24pOwotICB9IGVsc2UgewotICAgIGdzdF92aWRlb19hbGlnbm1lbnRfcmVzZXQgKCZwcml2LT52YWxpZ24pOworICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3ZpZGVvX2FsaWdubWVudCAoY29uZmlnLAorICAgICAgICBwcml2LT5nbF9wYXJhbXMtPnZhbGlnbik7CiAgIH0KIAogICBpZiAoYWxsb2NfcGFyYW1zLmFsaWduIDwgbWF4X2FsaWduKSB7CkBAIC0xODIsMjggKzE3OCw2NSBAQAogCiAgICAgYWxsb2NfcGFyYW1zLmFsaWduID0gbWF4X2FsaWduOwogICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2FsbG9jYXRvciAoY29uZmlnLCBhbGxvY2F0b3IsICZhbGxvY19wYXJhbXMpOwotICAgIHByaXYtPnBhcmFtcyA9IGFsbG9jX3BhcmFtczsKKyAgICBpZiAocHJpdi0+Z2xfcGFyYW1zLT5wYXJlbnQuYWxsb2NfcGFyYW1zKQorICAgICAgZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKHByaXYtPmdsX3BhcmFtcy0+cGFyZW50LmFsbG9jX3BhcmFtcyk7CisgICAgcHJpdi0+Z2xfcGFyYW1zLT5wYXJlbnQuYWxsb2NfcGFyYW1zID0KKyAgICAgICAgZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2NvcHkgKCZhbGxvY19wYXJhbXMpOwogICB9CiAKLSAgaWYgKHJlc2V0KSB7Ci0gICAgaWYgKGdscG9vbC0+dXBsb2FkKQotICAgICAgZ3N0X29iamVjdF91bnJlZiAoZ2xwb29sLT51cGxvYWQpOworICB7CisgICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisgICAgY29uc3QgZ2NoYXIgKnRhcmdldF9zdHIgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJ0ZXh0dXJlLXRhcmdldCIpOworICAgIGdib29sZWFuIG11bHRpcGxlX3RleHR1cmVfdGFyZ2V0cyA9IEZBTFNFOwogCi0gICAgZ2xwb29sLT51cGxvYWQgPSBnc3RfZ2xfdXBsb2FkX21ldGFfbmV3IChnbHBvb2wtPmNvbnRleHQpOworICAgIHRleF90YXJnZXQgPSBwcml2LT5nbF9wYXJhbXMtPnRhcmdldDsKKyAgICBpZiAodGFyZ2V0X3N0cikKKyAgICAgIHRleF90YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKHRhcmdldF9zdHIpOworCisgICAgaWYgKGdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAorICAgICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRCkpIHsKKyAgICAgIGlmICh0ZXhfdGFyZ2V0ICYmIHRleF90YXJnZXQgIT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKQorICAgICAgICBtdWx0aXBsZV90ZXh0dXJlX3RhcmdldHMgPSBUUlVFOworICAgICAgdGV4X3RhcmdldCA9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKyAgICB9CisgICAgaWYgKGdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAorICAgICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpKSB7CisgICAgICBpZiAodGV4X3RhcmdldCAmJiB0ZXhfdGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgICAgIG11bHRpcGxlX3RleHR1cmVfdGFyZ2V0cyA9IFRSVUU7CisgICAgICB0ZXhfdGFyZ2V0ID0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTsKKyAgICB9CisgICAgaWYgKGdzdF9idWZmZXJfcG9vbF9jb25maWdfaGFzX29wdGlvbiAoY29uZmlnLAorICAgICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpKSB7CisgICAgICBpZiAodGV4X3RhcmdldCAmJiB0ZXhfdGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgICAgIG11bHRpcGxlX3RleHR1cmVfdGFyZ2V0cyA9IFRSVUU7CisgICAgICB0ZXhfdGFyZ2V0ID0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzsKKyAgICB9CisKKyAgICBpZiAoIXRleF90YXJnZXQpCisgICAgICB0ZXhfdGFyZ2V0ID0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworCisgICAgaWYgKG11bHRpcGxlX3RleHR1cmVfdGFyZ2V0cykgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChwb29sLCAiTXVsdGlwbGUgdGV4dHVyZSB0YXJnZXRzIGNvbmZpZ3VyZWQgZWl0aGVyICIKKyAgICAgICAgICAidGhyb3VnaCBjYXBzIG9yIGJ1ZmZlciBwb29sIG9wdGlvbnMiKTsKKyAgICAgIHJldCA9IEZBTFNFOworICAgIH0KKworICAgIHByaXYtPmdsX3BhcmFtcy0+dGFyZ2V0ID0gdGV4X3RhcmdldDsKICAgfQogCiAgIC8qIFJlY2FsdWxhdGUgdGhlIHNpemUgYW5kIG9mZnNldCBhcyB3ZSBkb24ndCBhZGQgcGFkZGluZyBiZXR3ZWVuIHBsYW5lcy4gKi8KLSAgcHJpdi0+aW5mby5zaXplID0gMDsKLSAgZm9yIChwID0gMDsgcCA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmcHJpdi0+aW5mbyk7IHArKykgewotICAgIHByaXYtPmluZm8ub2Zmc2V0W3BdID0gcHJpdi0+aW5mby5zaXplOwotICAgIHByaXYtPmluZm8uc2l6ZSArPQotICAgICAgICBnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZSAoJnByaXYtPmluZm8sICZwcml2LT52YWxpZ24sIHApOworICBwcml2LT5nbF9wYXJhbXMtPnZfaW5mby0+c2l6ZSA9IDA7CisgIGZvciAocCA9IDA7IHAgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAocHJpdi0+Z2xfcGFyYW1zLT52X2luZm8pOyBwKyspIHsKKyAgICBwcml2LT5nbF9wYXJhbXMtPnZfaW5mby0+b2Zmc2V0W3BdID0gcHJpdi0+Z2xfcGFyYW1zLT52X2luZm8tPnNpemU7CisgICAgcHJpdi0+Z2xfcGFyYW1zLT52X2luZm8tPnNpemUgKz0KKyAgICAgICAgZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemUgKHByaXYtPmdsX3BhcmFtcy0+dl9pbmZvLAorICAgICAgICBwcml2LT5nbF9wYXJhbXMtPnZhbGlnbiwgcCk7CiAgIH0KIAotICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9wYXJhbXMgKGNvbmZpZywgY2FwcywgcHJpdi0+aW5mby5zaXplLAotICAgICAgbWluX2J1ZmZlcnMsIG1heF9idWZmZXJzKTsKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfcGFyYW1zIChjb25maWcsIGNhcHMsCisgICAgICBwcml2LT5nbF9wYXJhbXMtPnZfaW5mby0+c2l6ZSwgbWluX2J1ZmZlcnMsIG1heF9idWZmZXJzKTsKIAotICByZXR1cm4gR1NUX0JVRkZFUl9QT09MX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29uZmlnIChwb29sLCBjb25maWcpOworICByZXR1cm4gR1NUX0JVRkZFUl9QT09MX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29uZmlnIChwb29sLCBjb25maWcpICYmIHJldDsKIAogICAvKiBFUlJPUlMgKi8KIHdyb25nX2NvbmZpZzoKQEAgLTIyMiwyNiArMjU1LDExIEBACiAgICAgICAgICJmYWlsZWQgZ2V0dGluZyBnZW9tZXRyeSBmcm9tIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwogICAgIHJldHVybiBGQUxTRTsKICAgfQotdW5rbm93bl9mb3JtYXQ6Ci0gIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGdscG9vbCwgImZhaWxlZCB0byBnZXQgZm9ybWF0IGZyb20gY2FwcyAlIgotICAgICAgICBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKGdscG9vbCwgUkVTT1VSQ0UsIFdSSVRFLAotICAgICAgICAoIkZhaWxlZCB0byBjcmVhdGUgb3V0cHV0IGltYWdlIGJ1ZmZlciBvZiAlZHglZCBwaXhlbHMiLAotICAgICAgICAgICAgcHJpdi0+aW5mby53aWR0aCwgcHJpdi0+aW5mby5oZWlnaHQpLAotICAgICAgICAoIkludmFsaWQgaW5wdXQgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2FwcykpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9nbF9idWZmZXJfcG9vbF9zdGFydCAoR3N0QnVmZmVyUG9vbCAqIHBvb2wpCiB7Ci0gIEdzdEdMQnVmZmVyUG9vbCAqZ2xwb29sID0gR1NUX0dMX0JVRkZFUl9QT09MX0NBU1QgKHBvb2wpOwotICBHc3RHTEJ1ZmZlclBvb2xQcml2YXRlICpwcml2ID0gZ2xwb29sLT5wcml2OwotCi0gIGdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0IChnbHBvb2wtPnVwbG9hZCwgJnByaXYtPmluZm8pOwotCiAgIHJldHVybiBHU1RfQlVGRkVSX1BPT0xfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnN0YXJ0IChwb29sKTsKIH0KIApAQCAtMjUwLDE1ICsyNjgsMTEgQEAKIGdzdF9nbF9idWZmZXJfcG9vbF9hbGxvYyAoR3N0QnVmZmVyUG9vbCAqIHBvb2wsIEdzdEJ1ZmZlciAqKiBidWZmZXIsCiAgICAgR3N0QnVmZmVyUG9vbEFjcXVpcmVQYXJhbXMgKiBwYXJhbXMpCiB7CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yICphbGxvYzsKICAgR3N0R0xCdWZmZXJQb29sICpnbHBvb2wgPSBHU1RfR0xfQlVGRkVSX1BPT0xfQ0FTVCAocG9vbCk7CiAgIEdzdEdMQnVmZmVyUG9vbFByaXZhdGUgKnByaXYgPSBnbHBvb2wtPnByaXY7Ci0gIEdzdFZpZGVvSW5mbyAqaW5mbzsKLSAgR3N0VmlkZW9BbGlnbm1lbnQgKnZhbGlnbjsKICAgR3N0QnVmZmVyICpidWY7CiAKLSAgaW5mbyA9ICZwcml2LT5pbmZvOwotICB2YWxpZ24gPSAmcHJpdi0+dmFsaWduOwotCiAgIGlmICghKGJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpKSkgewogICAgIGdvdG8gbm9fYnVmZmVyOwogICB9CkBAIC0yNjYsNyArMjgwLDggQEAKICAgaWYgKHByaXYtPndhbnRfZWdsaW1hZ2UpIHsKICAgICAvKiBhbGxvYyBhbmQgYXBwZW5kIG1lbW9yaWVzLCBhbHNvIGFkZCB2aWRlb19tZXRhIGFuZAogICAgICAqIHRleHR1cmVfdXBsb2FkX21ldGEgKi8KLSAgICBpZiAoIWdzdF9lZ2xfaW1hZ2VfbWVtb3J5X3NldHVwX2J1ZmZlciAoZ2xwb29sLT5jb250ZXh0LCBpbmZvLCBidWYpKQorICAgIGlmICghZ3N0X2VnbF9pbWFnZV9tZW1vcnlfc2V0dXBfYnVmZmVyIChnbHBvb2wtPmNvbnRleHQsCisgICAgICAgICAgICBwcml2LT5nbF9wYXJhbXMtPnZfaW5mbywgYnVmKSkKICAgICAgIGdvdG8gZWdsX2ltYWdlX21lbV9jcmVhdGVfZmFpbGVkOwogCiAgICAgKmJ1ZmZlciA9IGJ1ZjsKQEAgLTI3NSwxMyArMjkwLDEwIEBACiAgIH0KICNlbmRpZgogCi0gIGlmICghZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKGdscG9vbC0+Y29udGV4dCwgJnByaXYtPnBhcmFtcywgaW5mbywKLSAgICAgICAgICB2YWxpZ24sIGJ1ZikpCisgIGFsbG9jID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IgKHByaXYtPmFsbG9jYXRvcik7CisgIGlmICghZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKGFsbG9jLCBidWYsIHByaXYtPmdsX3BhcmFtcykpCiAgICAgZ290byBtZW1fY3JlYXRlX2ZhaWxlZDsKIAotICBpZiAocHJpdi0+YWRkX3VwbG9hZG1ldGEpCi0gICAgZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXIgKGdscG9vbC0+dXBsb2FkLCBidWYpOwotCiAgIGlmIChwcml2LT5hZGRfZ2xzeW5jbWV0YSkKICAgICBnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGEgKGdscG9vbC0+Y29udGV4dCwgYnVmKTsKIApAQCAtNDA5LDE0ICs0MjEsMTAgQEAKIAogICBwcml2LT5hbGxvY2F0b3IgPSBOVUxMOwogICBwcml2LT5jYXBzID0gTlVMTDsKLSAgcHJpdi0+aW1fZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9VTktOT1dOOwogICBwcml2LT5hZGRfdmlkZW9tZXRhID0gVFJVRTsKICAgcHJpdi0+YWRkX2dsc3luY21ldGEgPSBGQUxTRTsKICAgcHJpdi0+d2FudF9lZ2xpbWFnZSA9IEZBTFNFOwogICBwcml2LT5sYXN0X2J1ZmZlciA9IEZBTFNFOwotCi0gIGdzdF92aWRlb19pbmZvX2luaXQgKCZwcml2LT5pbmZvKTsKLSAgZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKCZwcml2LT5wYXJhbXMpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtNDMyLDkgKzQ0MCw2IEBACiAgIGlmIChwcml2LT5jYXBzKQogICAgIGdzdF9jYXBzX3VucmVmIChwcml2LT5jYXBzKTsKIAotICBpZiAocG9vbC0+dXBsb2FkKQotICAgIGdzdF9vYmplY3RfdW5yZWYgKHBvb2wtPnVwbG9hZCk7Ci0KICAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9nbF9idWZmZXJfcG9vbF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKIAogICAvKiBvbmx5IHJlbGVhc2UgdGhlIGNvbnRleHQgb25jZSBhbGwgb3VyIG1lbW9yeSBoYXZlIGJlZW4gZGVsZXRlZCAqLwpAQCAtNDQ3LDQgKzQ1Miw0NCBAQAogICAgIGdzdF9vYmplY3RfdW5yZWYgKHByaXYtPmFsbG9jYXRvcik7CiAgICAgcHJpdi0+YWxsb2NhdG9yID0gTlVMTDsKICAgfQorCisgIGlmIChwcml2LT5nbF9wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcHJpdi0+Z2xfcGFyYW1zKTsKKyAgcHJpdi0+Z2xfcGFyYW1zID0gTlVMTDsKK30KKworLyoqCisgKiBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtczoKKyAqIEBjb25maWc6IGEgYnVmZmVyIHBvb2wgY29uZmlnCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0aGUgY3VycmVudGx5IHNldCAjR3N0R0xBbGxvY2F0aW9uUGFyYW1zIG9yICVOVUxMCisgKi8KK0dzdEdMQWxsb2NhdGlvblBhcmFtcyAqCitnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2dldF9nbF9hbGxvY2F0aW9uX3BhcmFtcyAoR3N0U3RydWN0dXJlICogY29uZmlnKQoreworICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgKnJldDsKKworICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0IChjb25maWcsICJnbC1hbGxvY2F0aW9uLXBhcmFtcyIsCisgICAgICAgICAgR1NUX1RZUEVfR0xfQUxMT0NBVElPTl9QQVJBTVMsICZyZXQsIE5VTEwpKQorICAgIHJldCA9IE5VTEw7CisKKyAgcmV0dXJuIHJldDsKK30KKworLyoqCisgKiBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9nbF9hbGxvY2F0aW9uX3BhcmFtczoKKyAqIEBjb25maWc6IGEgYnVmZmVyIHBvb2wgY29uZmlnCisgKiBAcGFyYW1zOiAodHJhbnNmZXIgbm9uZSk6IGEgI0dzdEdMQWxsb2NhdGlvblBhcmFtcworICoKKyAqIFNldHMgQHBhcmFtcyBvbiBAY29uZmlnCisgKi8KK3ZvaWQKK2dzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zIChHc3RTdHJ1Y3R1cmUgKiBjb25maWcsCisgICAgR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX3JldHVybl9pZl9mYWlsIChjb25maWcgIT0gTlVMTCk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKHBhcmFtcyAhPSBOVUxMKTsKKworICBnc3Rfc3RydWN0dXJlX3NldCAoY29uZmlnLCAiZ2wtYWxsb2NhdGlvbi1wYXJhbXMiLAorICAgICAgR1NUX1RZUEVfR0xfQUxMT0NBVElPTl9QQVJBTVMsIHBhcmFtcywgTlVMTCk7CiB9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xidWZmZXJwb29sLmgKaW5kZXggY2VhMTE3NS4uZWUxMzM2NiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGJ1ZmZlcnBvb2wuaApAQCAtMjUsMTQgKzI1LDEwIEBACiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KIAotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbF9md2QuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KIAogR19CRUdJTl9ERUNMUwogCi10eXBlZGVmIHN0cnVjdCBfR3N0R0xCdWZmZXJQb29sIEdzdEdMQnVmZmVyUG9vbDsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlclBvb2xDbGFzcyBHc3RHTEJ1ZmZlclBvb2xDbGFzczsKLXR5cGVkZWYgc3RydWN0IF9Hc3RHTEJ1ZmZlclBvb2xQcml2YXRlIEdzdEdMQnVmZmVyUG9vbFByaXZhdGU7Ci0KIC8qIGJ1ZmZlciBwb29sIGZ1bmN0aW9ucyAqLwogR1R5cGUgZ3N0X2dsX2J1ZmZlcl9wb29sX2dldF90eXBlICh2b2lkKTsKICNkZWZpbmUgR1NUX1RZUEVfR0xfQlVGRkVSX1BPT0wgICAgICAoZ3N0X2dsX2J1ZmZlcl9wb29sX2dldF90eXBlKCkpCkBAIC01MCw3ICs0Niw2IEBACiAgIEdzdEJ1ZmZlclBvb2wgYnVmZmVycG9vbDsKIAogICBHc3RHTENvbnRleHQgKmNvbnRleHQ7Ci0gIEdzdEdMVXBsb2FkTWV0YSAqdXBsb2FkOwogCiAgIEdzdEdMQnVmZmVyUG9vbFByaXZhdGUgKnByaXY7CiB9OwpAQCAtNjksNiArNjQsMTAgQEAKIHZvaWQgZ3N0X2dsX2J1ZmZlcl9wb29sX3JlcGxhY2VfbGFzdF9idWZmZXIgKEdzdEdMQnVmZmVyUG9vbCAqIHBvb2wsCiAgICAgR3N0QnVmZmVyICogYnVmZmVyKTsKIAorR3N0R0xBbGxvY2F0aW9uUGFyYW1zICogZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19nZXRfZ2xfYWxsb2NhdGlvbl9wYXJhbXMgICAgKEdzdFN0cnVjdHVyZSAqIGNvbmZpZyk7Cit2b2lkICAgICAgICAgICAgICAgICAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX3NldF9nbF9hbGxvY2F0aW9uX3BhcmFtcyAgICAoR3N0U3RydWN0dXJlICogY29uZmlnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcyk7CisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZiAvKiBfR1NUX0dMX0JVRkZFUl9QT09MX0hfICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb2xvcmNvbnZlcnQuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jCmluZGV4IDU5MTVhMzkuLmViM2I0YTggMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5jCkBAIC0yMiw2ICsyMiw3IEBACiAjaW5jbHVkZSAiY29uZmlnLmgiCiAjZW5kaWYKIAorI2luY2x1ZGUgPHN0cmluZy5oPgogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpbmNsdWRlICJnbC5oIgpAQCAtMzAsMTUgKzMxLDEyIEBACiAvKioKICAqIFNFQ1RJT046Z3N0Z2xjb2xvcmNvbnZlcnQKICAqIEBzaG9ydF9kZXNjcmlwdGlvbjogYW4gb2JqZWN0IHRoYXQgY29udmVydHMgYmV0d2VlbiBjb2xvciBzcGFjZXMvZm9ybWF0cwotICogQHNlZV9hbHNvOiAjR3N0R0xVcGxvYWQsICNHc3RHTERvd25sb2FkLCAjR3N0R0xNZW1vcnkKKyAqIEBzZWVfYWxzbzogI0dzdEdMVXBsb2FkLCAjR3N0R0xNZW1vcnksICNHc3RHTEJhc2VNZW1vcnkKICAqCiAgKiAjR3N0R0xDb2xvckNvbnZlcnQgaXMgYW4gb2JqZWN0IHRoYXQgY29udmVydHMgYmV0d2VlbiBjb2xvciBzcGFjZXMgYW5kL29yCiAgKiBmb3JtYXRzIHVzaW5nIE9wZW5HTCBTaGFkZXJzLgogICoKICAqIEEgI0dzdEdMQ29sb3JDb252ZXJ0IGNhbiBiZSBjcmVhdGVkIHdpdGggZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3KCkuCi0gKgotICogRm9yIGhhbmRsaW5nIHN0cmlkZSBzY2FsaW5nIGluIHRoZSBzaGFkZXIsIHNlZQotICogZ3N0X2dsX2NvbG9yX2NvbnZlcnRfc2V0X3RleHR1cmVfc2NhbGluZygpLgogICovCiAKICNkZWZpbmUgVVNJTkdfT1BFTkdMKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTCwgMSwgMCkpCkBAIC0xMDksNyArMTA3LDYgQEAKIHN0YXRpYyBjb25zdCBnZmxvYXQgZnJvbV9yZ2JfYnQ3MDlfdWNvZWZmW10gPSB7IC0wLjEwMDY0MCwgLTAuMzM4Njg4LCAwLjQzOTMyNyB9Owogc3RhdGljIGNvbnN0IGdmbG9hdCBmcm9tX3JnYl9idDcwOV92Y29lZmZbXSA9IHsgMC40NDA2NTQsIC0wLjQwMDI4NSwgLTAuMDQwMzcwIH07CiAKLQogLyogR1JBWTE2IHRvIFJHQiBjb252ZXJzaW9uCiAgKiAgZGF0YSB0cmFuc2ZlcmVkIGFzIEdMX0xVTUlOQU5DRV9BTFBIQSB0aGVuIGNvbnZlcnQgYmFjayB0byBHUkFZMTYgCiAgKiAgaGlnaCBieXRlIHdlaWdodCBhcyA6IDI1NSoyNTYvNjU1MzUgCkBAIC0xMTksMzkgKzExNiw2MiBAQAogI2RlZmluZSBDT01QT1NFX1dFSUdIVCBcCiAgICAgImNvbnN0IHZlYzIgY29tcG9zZV93ZWlnaHQgPSB2ZWMyKDAuOTk2MTA5LCAwLjAwMzg5MSk7XG4iCiAKLS8qIENoYW5uZWwgcmVvcmRlcmluZyBmb3IgWFlaIDwtPiBaWVggY29udmVyc2lvbiAqLwotc3RhdGljIGNvbnN0IGdjaGFyIGZyYWdfUkVPUkRFUltdID0KLSAgICAgICIjaWZkZWYgR0xfRVNcbiIKLSAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAgICIjZW5kaWZcbiIKLSAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTE7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iCi0gICAgICAidm9pZCBtYWluKHZvaWQpXG4iCi0gICAgICAie1xuIgotICAgICAgIiB2ZWM0IHQgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMCk7XG4iCi0gICAgICAiICVzXG4iIC8qIGNsb2JiZXIgYWxwaGEgY2hhbm5lbD8gKi8KLSAgICAgICIgZ2xfRnJhZ0NvbG9yID0gdmVjNCh0LiVjLCB0LiVjLCB0LiVjLCB0LiVjKTtcbiIKLSAgICAgICJ9IjsKKyNkZWZpbmUgREVGQVVMVF9VTklGT1JNUyAgICAgICAgIFwKKyAgICAiI2lmZGVmIEdMX0VTXG4iICAgICAgICAgICAgIFwKKyAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iIFwKKyAgICAiI2VuZGlmXG4iICAgICAgICAgICAgICAgICAgIFwKKyAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iIFwKKyAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTE7XG4iIFwKKyAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iIFwKKyAgICAidW5pZm9ybSBmbG9hdCB3aWR0aDtcbiIgICAgIFwKKyAgICAidW5pZm9ybSBmbG9hdCBoZWlnaHQ7XG4iICAgIFwKKyAgICAidW5pZm9ybSBmbG9hdCBwb2Zmc2V0X3g7XG4iIFwKKyAgICAidW5pZm9ybSBmbG9hdCBwb2Zmc2V0X3k7XG4iCiAKLXN0YXRpYyBjb25zdCBnY2hhciBmcmFnX0FQUExFX1lVVl9UT19SR0JbXSA9Ci0gICAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAiI2VuZGlmXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgICAidW5pZm9ybSBmbG9hdCB3aWR0aDtcbiIKLSAgICAgICJ1bmlmb3JtIGZsb2F0IGhlaWdodDtcbiIKLSAgICAgICJ1bmlmb3JtIHNhbXBsZXIyRFJlY3QgdGV4O1xuIgotICAgICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUwO1xuIgotICAgICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUxO1xuIgotICAgICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUyO1xuIgotICAgICAgInZvaWQgbWFpbih2b2lkKVxuIgotICAgICAgIntcbiIKLSAgICAgICIgdmVjNCB0ID0gdGV4dHVyZTJEUmVjdCh0ZXgsIHZfdGV4Y29vcmQgKiB2ZWMyKHdpZHRoLCBoZWlnaHQpICogdGV4X3NjYWxlMCk7XG4iCi0gICAgICAiIGdsX0ZyYWdDb2xvciA9IHZlYzQodC4lYywgdC4lYywgdC4lYywgdC4lYyk7XG4iCi0gICAgICAifSI7CisjZGVmaW5lIE1BWF9GVU5DVElPTlMgNAorCisjZGVmaW5lIGdsc2xfT0VTX2V4dGVuc2lvbl9zdHJpbmcgIiNleHRlbnNpb24gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCA6IHJlcXVpcmUgXG4iCisKK3N0cnVjdCBzaGFkZXJfdGVtcGwKK3sKKyAgY29uc3QgZ2NoYXIgKmV4dGVuc2lvbnM7CisgIGNvbnN0IGdjaGFyICp1bmlmb3JtczsKKyAgY29uc3QgZ2NoYXIgKmZ1bmN0aW9uc1tNQVhfRlVOQ1RJT05TXTsKKyAgY29uc3QgZ2NoYXIgKmJvZHk7CisKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldDsKK307CisKKyNkZWZpbmUgZ2xzbF9mdW5jX3l1dl90b19yZ2IgXAorICAgICJ2ZWMzIHl1dl90b19yZ2IgKHZlYzMgdmFsLCB2ZWMzIG9mZnNldCwgdmVjMyB5Y29lZmYsIHZlYzMgdWNvZWZmLCB2ZWMzIHZjb2VmZikge1xuIiBcCisgICAgIiAgdmVjMyByZ2I7XG4iICAgICAgICAgICAgICAgICBcCisgICAgIiAgdmFsICs9IG9mZnNldDtcbiIgICAgICAgICAgICBcCisgICAgIiAgcmdiLnIgPSBkb3QodmFsLCB5Y29lZmYpO1xuIiBcCisgICAgIiAgcmdiLmcgPSBkb3QodmFsLCB1Y29lZmYpO1xuIiBcCisgICAgIiAgcmdiLmIgPSBkb3QodmFsLCB2Y29lZmYpO1xuIiBcCisgICAgIiAgcmV0dXJuIHJnYjtcbiIgICAgICAgICAgICAgICBcCisgICAgIn1cbiIKKworI2RlZmluZSBnbHNsX2Z1bmNfcmdiX3RvX3l1diBcCisgICAgInZlYzMgcmdiX3RvX3l1diAodmVjMyB2YWwsIHZlYzMgb2Zmc2V0LCB2ZWMzIHJjb2VmZiwgdmVjMyBnY29lZmYsIHZlYzMgYmNvZWZmKSB7XG4iIFwKKyAgICAiICB2ZWMzIHl1djtcbiIgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICIgIHl1di5yID0gZG90KHZhbC5yZ2IsIHJjb2VmZik7XG4iICAgICBcCisgICAgIiAgeXV2LmcgPSBkb3QodmFsLnJnYiwgZ2NvZWZmKTtcbiIgICAgIFwKKyAgICAiICB5dXYuYiA9IGRvdCh2YWwucmdiLCBiY29lZmYpO1xuIiAgICAgXAorICAgICIgIHl1diArPSBvZmZzZXQ7XG4iICAgICAgICAgICAgICAgICAgICBcCisgICAgIiAgcmV0dXJuIHl1djtcbiIgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAifVxuIgorCisvKiBDaGFubmVsIHJlb3JkZXJpbmcgZm9yIFhZWiA8LT4gWllYIGNvbnZlcnNpb24gKi8KK3N0YXRpYyBjb25zdCBzdHJ1Y3Qgc2hhZGVyX3RlbXBsIHRlbXBsX1JFT1JERVIgPQorICB7IE5VTEwsCisgICAgREVGQVVMVF9VTklGT1JNUyAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIiwKKyAgICB7IE5VTEwsIH0sCisgICAgInZlYzQgdCA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkICogdGV4X3NjYWxlMCk7XG4iCisgICAgIiVzXG4iIC8qIGNsb2JiZXIgYWxwaGEgY2hhbm5lbD8gKi8KKyAgICAiZ2xfRnJhZ0NvbG9yID0gdmVjNCh0LiVjLCB0LiVjLCB0LiVjLCB0LiVjKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKIC8qIEdSQVkxNiB0byBSR0IgY29udmVyc2lvbgogICogIGRhdGEgdHJhbnNmZXJlZCBhcyBHTF9MVU1JTkFOQ0VfQUxQSEEgdGhlbiBjb252ZXJ0IGJhY2sgdG8gR1JBWTE2IApAQCAtMTU5LDI3NCArMTc5LDE5MSBAQAogICogIChbMH4xXSBkZW5vcm1hbGl6ZSB0byBbMH4yNTVdLHNoaWZ0IHRvIGhpZ2ggYnl0ZSxub3JtYWxpemUgdG8gWzB+MV0pCiAgKiAgbG93IGJ5dGUgd2VpZ2h0IGFzIDogMjU1LzY1NTM1IChzaW1pbGFyKQogICogKi8KLXN0YXRpYyBjb25zdCBnY2hhciBmcmFnX0NPTVBPU0VbXSA9Ci0gICAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAiI2VuZGlmXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgotICAgICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUwO1xuIgotICAgICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUxO1xuIgotICAgICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUyO1xuIgotICAgICAgQ09NUE9TRV9XRUlHSFQKLSAgICAgICJ2b2lkIG1haW4odm9pZClcbiIKLSAgICAgICJ7XG4iCi0gICAgICAiIGZsb2F0IHIsIGcsIGIsIGE7XG4iCi0gICAgICAiIHZlYzQgdCA9IHRleHR1cmUyRCh0ZXgsIHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKTtcbiIKLSAgICAgICIgciA9IGRvdCh0LiVjJWMsIGNvbXBvc2Vfd2VpZ2h0KTsiCi0gICAgICAiIGcgPSByO1xuIgotICAgICAgIiBiID0gcjtcbiIKLSAgICAgICIgYSA9IDEuMDtcbiIKLSAgICAgICIgZ2xfRnJhZ0NvbG9yID0gdmVjNCglYywgJWMsICVjLCAlYyk7XG4iCi0gICAgICAifSI7CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9DT01QT1NFID0KKyAgeyBOVUxMLAorICAgIERFRkFVTFRfVU5JRk9STVMgQ09NUE9TRV9XRUlHSFQgInVuaWZvcm0gc2FtcGxlcjJEIHRleDtcbiIsCisgICAgeyBOVUxMLCB9LAorICAgICJ2ZWM0IHJnYmE7XG4iCisgICAgInZlYzQgdCA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkICogdGV4X3NjYWxlMCk7XG4iCisgICAgInJnYmEucmdiID0gdmVjMyAoZG90KHQuJWMlYywgY29tcG9zZV93ZWlnaHQpKTsiCisgICAgInJnYmEuYSA9IDEuMDtcbiIKKyAgICAiZ2xfRnJhZ0NvbG9yID0gdmVjNChyZ2JhLiVjLCByZ2JhLiVjLCByZ2JhLiVjLCByZ2JhLiVjKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKLXN0YXRpYyBjb25zdCBjaGFyIGZyYWdfQVlVVl90b19SR0JbXSA9Ci0gICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAiI2VuZGlmXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUwO1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMTtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iCi0gICAgWVVWX1RPX1JHQl9DT0VGRklDSUVOVFMKLSAgICAidm9pZCBtYWluKHZvaWQpIHtcbiIKLSAgICAiICBmbG9hdCByLGcsYixhO1xuIgotICAgICIgIHZlYzQgdGV4ZWw7XG4iCi0gICAgIiAgdGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMCk7XG4iCi0gICAgIiAgdGV4ZWwuZ2JhICs9IG9mZnNldDtcbiIKLSAgICAiICByID0gZG90KHRleGVsLmdiYSwgY29lZmYxKTtcbiIKLSAgICAiICBnID0gZG90KHRleGVsLmdiYSwgY29lZmYyKTtcbiIKLSAgICAiICBiID0gZG90KHRleGVsLmdiYSwgY29lZmYzKTtcbiIKLSAgICAiICBhID0gdGV4ZWwucjtcbiIKLSAgICAiICBnbF9GcmFnQ29sb3I9dmVjNCglYywlYywlYywlYyk7XG4iCi0gICAgIn0iOworc3RhdGljIGNvbnN0IHN0cnVjdCBzaGFkZXJfdGVtcGwgdGVtcGxfQVlVVl90b19SR0IgPQorICB7IE5VTEwsCisgICAgREVGQVVMVF9VTklGT1JNUyBZVVZfVE9fUkdCX0NPRUZGSUNJRU5UUyAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIiwKKyAgICB7IGdsc2xfZnVuY195dXZfdG9fcmdiLCBOVUxMLCB9LAorICAgICJ2ZWM0IHRleGVsLCByZ2JhO1xuIgorICAgICJ0ZXhlbCA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkICogdGV4X3NjYWxlMCk7XG4iCisgICAgInJnYmEucmdiID0geXV2X3RvX3JnYiAodGV4ZWwueXp3LCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpO1xuIgorICAgICJyZ2JhLmEgPSB0ZXhlbC5yO1xuIgorICAgICJnbF9GcmFnQ29sb3I9dmVjNChyZ2JhLiVjLHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKLXN0YXRpYyBjb25zdCBnY2hhciBmcmFnX1JHQl90b19BWVVWW10gPQotICAgICIjaWZkZWYgR0xfRVNcbiIKLSAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgIiNlbmRpZlxuIgotICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgotICAgIFJHQl9UT19ZVVZfQ09FRkZJQ0lFTlRTCi0gICAgInZvaWQgbWFpbih2b2lkKSB7XG4iCi0gICAgIiAgdmVjNCB0ZXhlbDtcbiIKLSAgICAiICBmbG9hdCB5LCB1LCB2LCBhO1xuIgotICAgICIgIHRleGVsID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCkuJWMlYyVjJWM7XG4iCi0gICAgIiAgeSA9IGRvdCh0ZXhlbC5yZ2IsIGNvZWZmMSk7XG4iCi0gICAgIiAgdSA9IGRvdCh0ZXhlbC5yZ2IsIGNvZWZmMik7XG4iCi0gICAgIiAgdiA9IGRvdCh0ZXhlbC5yZ2IsIGNvZWZmMyk7XG4iCi0gICAgIiAgeSArPSBvZmZzZXQueDtcbiIKLSAgICAiICB1ICs9IG9mZnNldC55O1xuIgotICAgICIgIHYgKz0gb2Zmc2V0Lno7XG4iCi0gICAgIiAgYSA9ICVzO1xuIgotICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoYSx5LHUsdik7XG4iCi0gICAgIn1cbiI7CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9SR0JfdG9fQVlVViA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFJHQl9UT19ZVVZfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iLAorICAgIHsgZ2xzbF9mdW5jX3JnYl90b195dXYsIE5VTEwsIH0sCisgICAgInZlYzQgdGV4ZWwsIGF5dXY7XG4iCisgICAgInRleGVsID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQpLiVjJWMlYyVjO1xuIgorICAgICJheXV2Lnl6dyA9IHJnYl90b195dXYgKHRleGVsLnJnYiwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKTtcbiIKKyAgICAiYXl1di54ID0gJXM7XG4iCisgICAgImdsX0ZyYWdDb2xvciA9IGF5dXY7XG4iLAorICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRAorICB9OwogCiAvKiBZVVYgdG8gUkdCIGNvbnZlcnNpb24gKi8KLXN0YXRpYyBjb25zdCBjaGFyIGZyYWdfUExBTkFSX1lVVl90b19SR0JbXSA9Ci0gICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAiI2VuZGlmXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBZdGV4LCBVdGV4LCBWdGV4O1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMDtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTE7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUyO1xuIgotICAgIFlVVl9UT19SR0JfQ09FRkZJQ0lFTlRTCi0gICAgInZvaWQgbWFpbih2b2lkKSB7XG4iCi0gICAgIiAgZmxvYXQgciwgZywgYiwgYTtcbiIKLSAgICAiICB2ZWMzIHl1djtcbiIKLSAgICAiICB5dXYueCA9IHRleHR1cmUyRChZdGV4LHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKS5yO1xuIgotICAgICIgIHl1di55ID0gdGV4dHVyZTJEKFV0ZXgsdl90ZXhjb29yZCAqIHRleF9zY2FsZTEpLnI7XG4iCi0gICAgIiAgeXV2LnogPSB0ZXh0dXJlMkQoVnRleCx2X3RleGNvb3JkICogdGV4X3NjYWxlMikucjtcbiIKLSAgICAiICB5dXYgKz0gb2Zmc2V0O1xuIgotICAgICIgIHIgPSBkb3QoeXV2LCBjb2VmZjEpO1xuIgotICAgICIgIGcgPSBkb3QoeXV2LCBjb2VmZjIpO1xuIgotICAgICIgIGIgPSBkb3QoeXV2LCBjb2VmZjMpO1xuIgotICAgICIgIGEgPSAxLjA7XG4iCi0gICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCglYywgJWMsICVjLCAlYyk7XG4iCi0gICAgIn1cbiI7CitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9QTEFOQVJfWVVWX3RvX1JHQiA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFlVVl9UT19SR0JfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCBZdGV4LCBVdGV4LCBWdGV4O1xuIiwKKyAgICB7IGdsc2xfZnVuY195dXZfdG9fcmdiLCBOVUxMLCB9LAorICAgICJ2ZWM0IHRleGVsLCByZ2JhO1xuIgorICAgIC8qIEZJWE1FOiBzaG91bGQgZ2V0IHRoZSBzYW1wbGluZyByaWdodC4uLiAqLworICAgICJ0ZXhlbC54ID0gdGV4dHVyZTJEKFl0ZXgsIHRleGNvb3JkICogdGV4X3NjYWxlMCkucjtcbiIKKyAgICAidGV4ZWwueSA9IHRleHR1cmUyRChVdGV4LCB0ZXhjb29yZCAqIHRleF9zY2FsZTEpLnI7XG4iCisgICAgInRleGVsLnogPSB0ZXh0dXJlMkQoVnRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUyKS5yO1xuIgorICAgICJyZ2JhLnJnYiA9IHl1dl90b19yZ2IgKHRleGVsLnh5eiwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKTtcbiIKKyAgICAicmdiYS5hID0gMS4wO1xuIgorICAgICJnbF9GcmFnQ29sb3I9dmVjNChyZ2JhLiVjLHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKLXN0YXRpYyBjb25zdCBnY2hhciBmcmFnX1JHQl90b19QTEFOQVJfWVVWW10gPQotICAgICIjaWZkZWYgR0xfRVNcbiIKLSAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgIiNlbmRpZlxuIgotICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgotICAgICJ1bmlmb3JtIGZsb2F0IHdpZHRoO1xuIgotICAgICJ1bmlmb3JtIGZsb2F0IGhlaWdodDtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIGNocm9tYV9zYW1wbGluZztcbiIKLSAgICBSR0JfVE9fWVVWX0NPRUZGSUNJRU5UUwotICAgICJ2b2lkIG1haW4odm9pZCkge1xuIgotICAgICIgIGZsb2F0IHksIHUsIHY7XG4iCi0gICAgIiAgdmVjNCB1dl90ZXhlbDtcbiIKLSAgICAiICB2ZWM0IHRleGVsID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCkuJWMlYyVjJWM7XG4iCitzdGF0aWMgY29uc3Qgc3RydWN0IHNoYWRlcl90ZW1wbCB0ZW1wbF9SR0JfdG9fUExBTkFSX1lVViA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFJHQl9UT19ZVVZfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgInVuaWZvcm0gdmVjMiBjaHJvbWFfc2FtcGxpbmc7XG4iLAorICAgIHsgZ2xzbF9mdW5jX3JnYl90b195dXYsIE5VTEwsIH0sCisgICAgInZlYzQgdGV4ZWw7XG4iCisgICAgInZlYzMgeXV2O1xuIgorICAgICJ0ZXhlbCA9IHRleHR1cmUyRCh0ZXgsIHRleGNvb3JkKS4lYyVjJWMlYztcbiIKKyAgICAvKiBGSVhNRTogdGhpcyBpcyBub3QgcXVpdGUgY29ycmVjdCB5ZXQgKi8KKyAgICAidmVjNCB1dl90ZXhlbCA9IHZlYzQoMC4wKTtcbiIKICAgICAvKiBPbmUgdSBhbmQgdiBzYW1wbGUgY2FuIGJlIGdlbmVyYXRlZCBieSBhIG54bSBzaXplZCBibG9jayBnaXZlbiBieQogICAgICAqIEBjaHJvbWFfc2FtcGxpbmcuICBUaGUgcmVzdWx0IGlzIHRoZSBhdmVyYWdlIG9mIGFsbCB0aGUgdmFsdWVzIGluIHRoZQogICAgICAqIGJsb2NrIGNvbXB1dGVkIHdpdGggYSByb2xsaW5nIGF2ZXJhZ2UuCiAgICAgICovCi0gICAgIiAgdmVjMiBzaXplID0gdmVjMih3aWR0aCwgaGVpZ2h0KTtcbiIKLSAgICAiICB2ZWMyIHBvcyA9IHZfdGV4Y29vcmQgKiBzaXplO1xuIgotICAgICAgIC8qIHNjYWxlIGZvciBjaHJvbWEgc2l6ZSAqLwotICAgICIgIHZlYzIgY2hyb21hX3BvcyA9IHZfdGV4Y29vcmQgKiBjaHJvbWFfc2FtcGxpbmcgKiBzaXplO1xuIgotICAgICAgIC8qIG9mZnNldCBjaHJvbWEgdG8gdGhlIGNlbnRlciBvZiB0aGUgZmlyc3QgdGV4ZWwgaW4gdGhlIGJsb2NrICovCi0gICAgIiAgY2hyb21hX3BvcyAtPSBjbGFtcChjaHJvbWFfc2FtcGxpbmcgKiAwLjUgLSAwLjUsIHZlYzIoMC4wKSwgY2hyb21hX3NhbXBsaW5nKTtcbiIKLSAgICAiICBpZiAoY2hyb21hX3Bvcy54IDwgd2lkdGggJiYgY2hyb21hX3Bvcy55IDwgaGVpZ2h0KSB7XG4iCi0gICAgIiAgICBmb3IgKGludCBpID0gMDsgaSA8IGludChjaHJvbWFfc2FtcGxpbmcueCk7IGkrKykge1xuIgotICAgICIgICAgICB2ZWMyIGRlbHRhID0gdmVjMiAoZmxvYXQoaSksIDAuMCk7XG4iCi0gICAgIiAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgaW50KGNocm9tYV9zYW1wbGluZy55KTsgaisrKSB7XG4iCi0gICAgIiAgICAgICAgaW50IG4gPSAoaSsxKSooaisxKTtcbiIKLSAgICAiICAgICAgICBkZWx0YS55ID0gZmxvYXQoaik7XG4iCi0gICAgIiAgICAgICAgdmVjNCBzYW1wbGUgPSB0ZXh0dXJlMkQodGV4LCAoY2hyb21hX3BvcyArIGRlbHRhKSAvIHNpemUpLiVjJWMlYyVjO1xuIgotICAgICAgICAgICAgIC8qIHJvbGxpbmcgYXZlcmFnZSAqLwotICAgICIgICAgICAgIHV2X3RleGVsID0gKGZsb2F0KG4tMSkgKiB1dl90ZXhlbCArIHNhbXBsZSkgLyBmbG9hdChuKTtcbiIKLSAgICAiICAgICAgfVxuIgorICAgICJ2ZWMyIHVubm9ybWFsaXphdGlvbjtcbiIKKyAgICAiaWYgKHRleGNvb3JkLnggPT0gdl90ZXhjb29yZC54KSB7XG4iCisgICAgIiAgdW5ub3JtYWxpemF0aW9uID0gdmVjMih3aWR0aCwgaGVpZ2h0KTtcbiIKKyAgICAifSBlbHNlIHtcbiIKKyAgICAiICB1bm5vcm1hbGl6YXRpb24gPSB2ZWMyICgxLjApO1xuIgorICAgICJ9XG4iCisgICAgIC8qIHNjYWxlIGZvciBjaHJvbWEgc2l6ZSAqLworICAgICJ2ZWMyIGNocm9tYV9wb3MgPSB0ZXhjb29yZCAqIGNocm9tYV9zYW1wbGluZyAqIHVubm9ybWFsaXphdGlvbjtcbiIKKyAgICAgLyogb2Zmc2V0IGNocm9tYSB0byB0aGUgY2VudGVyIG9mIHRoZSBmaXJzdCB0ZXhlbCBpbiB0aGUgYmxvY2sgKi8KKyAgICAiY2hyb21hX3BvcyAtPSBjbGFtcChjaHJvbWFfc2FtcGxpbmcgKiAwLjUgLSAwLjUsIHZlYzIoMC4wKSwgY2hyb21hX3NhbXBsaW5nKTtcbiIKKyAgICAiaWYgKGNocm9tYV9wb3MueCA8IHdpZHRoICYmIGNocm9tYV9wb3MueSA8IGhlaWdodCkge1xuIgorICAgICIgIGZvciAoaW50IGkgPSAwOyBpIDwgaW50KGNocm9tYV9zYW1wbGluZy54KTsgaSsrKSB7XG4iCisgICAgIiAgICB2ZWMyIGRlbHRhID0gdmVjMiAoZmxvYXQoaSksIDAuMCk7XG4iCisgICAgIiAgICBmb3IgKGludCBqID0gMDsgaiA8IGludChjaHJvbWFfc2FtcGxpbmcueSk7IGorKykge1xuIgorICAgICIgICAgICBpbnQgbiA9IChpKzEpKihqKzEpO1xuIgorICAgICIgICAgICBkZWx0YS55ID0gZmxvYXQoaik7XG4iCisgICAgIiAgICAgIHZlYzQgc2FtcGxlID0gdGV4dHVyZTJEKHRleCwgKGNocm9tYV9wb3MgKyBkZWx0YSkgLyB1bm5vcm1hbGl6YXRpb24pLiVjJWMlYyVjO1xuIgorICAgICAgICAgICAvKiByb2xsaW5nIGF2ZXJhZ2UgKi8KKyAgICAiICAgICAgdXZfdGV4ZWwgPSAoZmxvYXQobi0xKSAqIHV2X3RleGVsICsgc2FtcGxlKSAvIGZsb2F0KG4pO1xuIgogICAgICIgICAgfVxuIgogICAgICIgIH1cbiIKLSAgICAiICB5ID0gZG90KHRleGVsLnJnYiwgY29lZmYxKTtcbiIKLSAgICAiICB1ID0gZG90KHV2X3RleGVsLnJnYiwgY29lZmYyKTtcbiIKLSAgICAiICB2ID0gZG90KHV2X3RleGVsLnJnYiwgY29lZmYzKTtcbiIKLSAgICAiICB5ICs9IG9mZnNldC54O1xuIgotICAgICIgIHUgKz0gb2Zmc2V0Lnk7XG4iCi0gICAgIiAgdiArPSBvZmZzZXQuejtcbiIKLSAgICAiICBnbF9GcmFnRGF0YVswXSA9IHZlYzQoeSwgMC4wLCAwLjAsIDEuMCk7XG4iCi0gICAgIiAgZ2xfRnJhZ0RhdGFbMV0gPSB2ZWM0KHUsIDAuMCwgMC4wLCAxLjApO1xuIgotICAgICIgIGdsX0ZyYWdEYXRhWzJdID0gdmVjNCh2LCAwLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAifVxuIjsKKyAgICAifVxuIgorICAgICJ5dXYueCA9IHJnYl90b195dXYgKHRleGVsLnJnYiwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKS54O1xuIgorICAgICJ5dXYueXogPSByZ2JfdG9feXV2ICh1dl90ZXhlbC5yZ2IsIG9mZnNldCwgY29lZmYxLCBjb2VmZjIsIGNvZWZmMykueXo7XG4iCisgICAgImdsX0ZyYWdEYXRhWzBdID0gdmVjNCh5dXYueCwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgImdsX0ZyYWdEYXRhWzFdID0gdmVjNCh5dXYueSwgMC4wLCAwLjAsIDEuMCk7XG4iCisgICAgImdsX0ZyYWdEYXRhWzJdID0gdmVjNCh5dXYueiwgMC4wLCAwLjAsIDEuMCk7XG4iLAorICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRAorICB9OwogCiAvKiBOVjEyL05WMjEgdG8gUkdCIGNvbnZlcnNpb24gKi8KLXN0YXRpYyBjb25zdCBjaGFyIGZyYWdfTlYxMl9OVjIxX3RvX1JHQltdID0gewotICAgICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgotICAgICAgIiNlbmRpZlxuIgotICAgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIFl0ZXgsVVZ0ZXg7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTE7XG4iCi0gICAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iCi0gICAgICBZVVZfVE9fUkdCX0NPRUZGSUNJRU5UUwotICAgICAgInZvaWQgbWFpbih2b2lkKSB7XG4iCi0gICAgICAiICBmbG9hdCByLCBnLCBiLCBhO1xuIgotICAgICAgIiAgdmVjMyB5dXY7XG4iCi0gICAgICAiICB5dXYueD10ZXh0dXJlMkQoWXRleCwgdl90ZXhjb29yZCAqIHRleF9zY2FsZTApLnI7XG4iCi0gICAgICAiICB5dXYueXo9dGV4dHVyZTJEKFVWdGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMSkuJWMlYztcbiIKLSAgICAgICIgIHl1diArPSBvZmZzZXQ7XG4iCi0gICAgICAiICByID0gZG90KHl1diwgY29lZmYxKTtcbiIKLSAgICAgICIgIGcgPSBkb3QoeXV2LCBjb2VmZjIpO1xuIgotICAgICAgIiAgYiA9IGRvdCh5dXYsIGNvZWZmMyk7XG4iCi0gICAgICAiICBhID0gMS4wO1xuIgotICAgICAgIiAgZ2xfRnJhZ0NvbG9yPXZlYzQoJWMsICVjLCAlYywgJWMpO1xuIgotICAgICAgIn0iCi19Oworc3RhdGljIGNvbnN0IHN0cnVjdCBzaGFkZXJfdGVtcGwgdGVtcGxfTlYxMl9OVjIxX3RvX1JHQiA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFlVVl9UT19SR0JfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCBZdGV4LCBVVnRleDtcbiIsCisgICAgeyBnbHNsX2Z1bmNfeXV2X3RvX3JnYiwgTlVMTCwgfSwKKyAgICAidmVjNCByZ2JhO1xuIgorICAgICJ2ZWMzIHl1djtcbiIKKyAgICAvKiBGSVhNRTogc2hvdWxkIGdldCB0aGUgc2FtcGxpbmcgcmlnaHQuLi4gKi8KKyAgICAieXV2Lng9dGV4dHVyZTJEKFl0ZXgsIHRleGNvb3JkICogdGV4X3NjYWxlMCkucjtcbiIKKyAgICAieXV2Lnl6PXRleHR1cmUyRChVVnRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUxKS4lYyVjO1xuIgorICAgICJyZ2JhLnJnYiA9IHl1dl90b19yZ2IgKHl1diwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKTtcbiIKKyAgICAicmdiYS5hID0gMS4wO1xuIgorICAgICJnbF9GcmFnQ29sb3I9dmVjNChyZ2JhLiVjLHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKIC8qIFJHQiB0byBOVjEyL05WMjEgY29udmVyc2lvbiAqLwogLyogTlYxMjogdSwgdgogICAgTlYyMTogdiwgdSAqLwotc3RhdGljIGNvbnN0IGNoYXIgZnJhZ19SR0JfdG9fTlYxMl9OVjIxW10gPSB7Ci0gICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAiI2VuZGlmXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUwO1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMTtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTI7XG4iCi0gICAgUkdCX1RPX1lVVl9DT0VGRklDSUVOVFMKLSAgICAidm9pZCBtYWluKHZvaWQpIHtcbiIKLSAgICAiICBmbG9hdCB5LCB1LCB2O1xuIgotICAgICIgIHZlYzQgdGV4ZWwsIHV2X3RleGVsO1xuIgotICAgICIgIHRleGVsID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCAqIHRleF9zY2FsZTApLiVjJWMlYyVjO1xuIgotICAgICIgIHV2X3RleGVsID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCAqIHRleF9zY2FsZTAgKiAyLjApLiVjJWMlYyVjO1xuIgotICAgICIgIHkgPSBkb3QodGV4ZWwucmdiLCBjb2VmZjEpO1xuIgotICAgICIgIHUgPSBkb3QodXZfdGV4ZWwucmdiLCBjb2VmZjIpO1xuIgotICAgICIgIHYgPSBkb3QodXZfdGV4ZWwucmdiLCBjb2VmZjMpO1xuIgotICAgICIgIHkgKz0gb2Zmc2V0Lng7XG4iCi0gICAgIiAgdSArPSBvZmZzZXQueTtcbiIKLSAgICAiICB2ICs9IG9mZnNldC56O1xuIgotICAgICIgIGdsX0ZyYWdEYXRhWzBdID0gdmVjNCh5LCAwLjAsIDAuMCwgMS4wKTtcbiIKLSAgICAiICBnbF9GcmFnRGF0YVsxXSA9IHZlYzQoJWMsICVjLCAwLjAsIDEuMCk7XG4iCi0gICAgIn0iCi19Oworc3RhdGljIGNvbnN0IHN0cnVjdCBzaGFkZXJfdGVtcGwgdGVtcGxfUkdCX3RvX05WMTJfTlYyMSA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFJHQl9UT19ZVVZfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iLAorICAgIHsgZ2xzbF9mdW5jX3JnYl90b195dXYsIE5VTEwsIH0sCisgICAgInZlYzQgdGV4ZWwsIHV2X3RleGVsO1xuIgorICAgICJ2ZWMzIHl1djtcbiIKKyAgICAidGV4ZWwgPSB0ZXh0dXJlMkQodGV4LCB0ZXhjb29yZCkuJWMlYyVjJWM7XG4iCisgICAgInV2X3RleGVsID0gdGV4dHVyZTJEKHRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwICogMi4wKS4lYyVjJWMlYztcbiIKKyAgICAieXV2LnggPSByZ2JfdG9feXV2ICh0ZXhlbC5yZ2IsIG9mZnNldCwgY29lZmYxLCBjb2VmZjIsIGNvZWZmMykueDtcbiIKKyAgICAieXV2Lnl6ID0gcmdiX3RvX3l1diAodXZfdGV4ZWwucmdiLCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpLnl6O1xuIgorICAgICJnbF9GcmFnRGF0YVswXSA9IHZlYzQoeXV2LngsIDAuMCwgMC4wLCAxLjApO1xuIgorICAgICJnbF9GcmFnRGF0YVsxXSA9IHZlYzQoeXV2LiVjLCB5dXYuJWMsIDAuMCwgMS4wKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKIC8qIFlVWTI6cixnLGEKICAgIFVZVlk6YSxiLHIgKi8KLXN0YXRpYyBjb25zdCBnY2hhciBmcmFnX1lVWTJfVVlWWV90b19SR0JbXSA9Ci0gICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAiI2VuZGlmXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCBZdGV4LCBVVnRleDtcbiIKLSAgICAidW5pZm9ybSB2ZWMyIHRleF9zY2FsZTA7XG4iCi0gICAgInVuaWZvcm0gdmVjMiB0ZXhfc2NhbGUxO1xuIgotICAgICJ1bmlmb3JtIHZlYzIgdGV4X3NjYWxlMjtcbiIKLSAgICAidW5pZm9ybSBmbG9hdCB3aWR0aDtcbiIKLSAgICBZVVZfVE9fUkdCX0NPRUZGSUNJRU5UUwotICAgICJ2b2lkIG1haW4odm9pZCkge1xuIgotICAgICIgIHZlYzMgeXV2O1xuIgotICAgICIgIHZlYzQgdXZfdGV4ZWw7XG4iCi0gICAgIiAgZmxvYXQgciwgZywgYiwgYTtcbiIKLSAgICAiICBmbG9hdCBkeDEgPSAtMS4wIC8gd2lkdGg7XG4iCi0gICAgIiAgZmxvYXQgZHgyID0gMC4wO1xuIgotICAgICIgIHl1di54ID0gdGV4dHVyZTJEKFl0ZXgsIHZfdGV4Y29vcmQgKiB0ZXhfc2NhbGUwKS4lYztcbiIKLSAgICAiICBmbG9hdCBpbm9yZGVyID0gbW9kICh2X3RleGNvb3JkLnggKiB3aWR0aCwgMi4wKTtcbiIKLSAgICAiICBpZiAoaW5vcmRlciA8IDEuMCkge1xuIgotICAgICIgICAgZHgyID0gLWR4MTtcbiIKLSAgICAiICAgIGR4MSA9IDAuMDtcbiIKLSAgICAiICB9XG4iCi0gICAgIiAgdXZfdGV4ZWwucmcgPSB0ZXh0dXJlMkQoWXRleCwgdl90ZXhjb29yZCAqIHRleF9zY2FsZTAgKyBkeDEpLnIlYztcbiIKLSAgICAiICB1dl90ZXhlbC5iYSA9IHRleHR1cmUyRChZdGV4LCB2X3RleGNvb3JkICogdGV4X3NjYWxlMCArIGR4MikuciVjO1xuIgotICAgICIgIHl1di55eiA9IHV2X3RleGVsLiVjJWM7XG4iCi0gICAgIiAgeXV2ICs9IG9mZnNldDtcbiIKLSAgICAiICByID0gZG90KHl1diwgY29lZmYxKTtcbiIKLSAgICAiICBnID0gZG90KHl1diwgY29lZmYyKTtcbiIKLSAgICAiICBiID0gZG90KHl1diwgY29lZmYzKTtcbiIKLSAgICAiICBhID0gMS4wO1xuIgotICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoJWMsICVjLCAlYywgJWMpO1xuIgotICAgICJ9XG4iOworc3RhdGljIGNvbnN0IHN0cnVjdCBzaGFkZXJfdGVtcGwgdGVtcGxfWVVZMl9VWVZZX3RvX1JHQiA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFlVVl9UT19SR0JfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCBZdGV4O1xuIiwKKyAgICB7IGdsc2xfZnVuY195dXZfdG9fcmdiLCBOVUxMLCB9LAorICAgICJ2ZWM0IHJnYmEsIHV2X3RleGVsO1xuIgorICAgICJ2ZWMzIHl1djtcbiIKKyAgICAvKiBGSVhNRTogc2hvdWxkIGdldCB0aGUgc2FtcGxpbmcgcmlnaHQuLi4gKi8KKyAgICAiZmxvYXQgZHgxID0gLXBvZmZzZXRfeDtcbiIKKyAgICAiZmxvYXQgZHgyID0gMC4wO1xuIgorICAgICJ5dXYueCA9IHRleHR1cmUyRChZdGV4LCB0ZXhjb29yZCAqIHRleF9zY2FsZTApLiVjO1xuIgorICAgIC8qIHZfdGV4Y29vcmQgYXJlIG5vcm1hbGl6ZWQsIHRleGNvb3JkIG1heSBub3QgYmUgZS5nLiByZWN0YW5nbGUgdGV4dHVyZXMgKi8KKyAgICAiZmxvYXQgaW5vcmRlciA9IG1vZCAodl90ZXhjb29yZC54ICogd2lkdGgsIDIuMCk7XG4iCisgICAgImlmIChpbm9yZGVyIDwgMS4wKSB7XG4iCisgICAgIiAgZHgyID0gLWR4MTtcbiIKKyAgICAiICBkeDEgPSAwLjA7XG4iCisgICAgIn1cbiIKKyAgICAidXZfdGV4ZWwucmcgPSB0ZXh0dXJlMkQoWXRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwICsgdmVjMihkeDEsIDAuMCkpLnIlYztcbiIKKyAgICAidXZfdGV4ZWwuYmEgPSB0ZXh0dXJlMkQoWXRleCwgdGV4Y29vcmQgKiB0ZXhfc2NhbGUwICsgdmVjMihkeDIsIDAuMCkpLnIlYztcbiIKKyAgICAieXV2Lnl6ID0gdXZfdGV4ZWwuJWMlYztcbiIKKyAgICAicmdiYS5yZ2IgPSB5dXZfdG9fcmdiICh5dXYsIG9mZnNldCwgY29lZmYxLCBjb2VmZjIsIGNvZWZmMyk7XG4iCisgICAgInJnYmEuYSA9IDEuMDtcbiIKKyAgICAiZ2xfRnJhZ0NvbG9yID0gdmVjNChyZ2JhLiVjLHJnYmEuJWMscmdiYS4lYyxyZ2JhLiVjKTtcbiIsCisgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgIH07CiAKLXN0YXRpYyBjb25zdCBnY2hhciBmcmFnX1JHQl90b19ZVVkyX1VZVllbXSA9Ci0gICAgIiNpZmRlZiBHTF9FU1xuIgotICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKLSAgICAiI2VuZGlmXG4iCi0gICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgotICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCi0gICAgInVuaWZvcm0gZmxvYXQgd2lkdGg7XG4iCi0gICAgUkdCX1RPX1lVVl9DT0VGRklDSUVOVFMKLSAgICAidm9pZCBtYWluKHZvaWQpIHtcbiIKLSAgICAiICB2ZWM0IHRleGVsMSwgdGV4ZWwyO1xuIgotICAgICIgIHZlYzIgdGV4ZWwzO1xuIgotICAgICIgIGZsb2F0IGZ4LCBkeCwgZnksIHksIHUsIHUxLCB1MiwgdiwgdjEsIHYyO1xuIgotICAgICIgIGZsb2F0IGlub3JkZXIgPSBtb2QgKHZfdGV4Y29vcmQueCAqIHdpZHRoLCAyLjApO1xuIgotICAgICIgIGZ4ID0gdl90ZXhjb29yZC54O1xuIgotICAgICIgIGR4ID0gMS4wIC8gd2lkdGg7XG4iCi0gICAgIiAgaWYgKHZfdGV4Y29vcmQueCA+PSAoMS4wIC0gMC41ICogZHgpIHx8ICh2X3RleGNvb3JkLnggPiAwLjUgKiBkeCAmJiBpbm9yZGVyIDwgMS4wKSkge1xuIgotICAgICIgICAgZHggPSAtZHg7XG4iCi0gICAgIiAgfVxuIgotICAgICIgIGZ5ID0gdl90ZXhjb29yZC55O1xuIgotICAgICIgIHRleGVsMSA9IHRleHR1cmUyRCh0ZXgsIHZlYzIoZngsIGZ5KSkuJWMlYyVjJWM7XG4iCi0gICAgIiAgdGV4ZWwyID0gdGV4dHVyZTJEKHRleCwgdmVjMihmeCArIGR4LCBmeSkpLiVjJWMlYyVjO1xuIgotICAgICIgIHkgPSBkb3QodGV4ZWwxLnJnYiwgY29lZmYxKTtcbiIKLSAgICAiICB1MSA9IGRvdCh0ZXhlbDEucmdiLCBjb2VmZjIpO1xuIgotICAgICIgIHUyID0gZG90KHRleGVsMi5yZ2IsIGNvZWZmMik7XG4iCi0gICAgIiAgdjEgPSBkb3QodGV4ZWwxLnJnYiwgY29lZmYzKTtcbiIKLSAgICAiICB2MiA9IGRvdCh0ZXhlbDIucmdiLCBjb2VmZjMpO1xuIgotICAgICIgIHkgKz0gb2Zmc2V0Lng7XG4iCi0gICAgIiAgdTEgKz0gb2Zmc2V0Lnk7XG4iCi0gICAgIiAgdTIgKz0gb2Zmc2V0Lnk7XG4iCi0gICAgIiAgdjEgKz0gb2Zmc2V0Lno7XG4iCi0gICAgIiAgdjIgKz0gb2Zmc2V0Lno7XG4iCi0gICAgIiAgdSA9ICh1MSArIHUyKSAvIDIuMDtcbiIKLSAgICAiICB2ID0gKHYxICsgdjIpIC8gMi4wO1xuIgotICAgICIgIGlmIChpbm9yZGVyIDwgMS4wKSB7XG4iCi0gICAgIiAgICB0ZXhlbDMuciA9JXM7XG4iCi0gICAgIiAgICB0ZXhlbDMuZyA9ICVzO1xuIgotICAgICIgIH0gZWxzZSB7XG4iCi0gICAgIiAgICB0ZXhlbDMuciA9JXM7XG4iCi0gICAgIiAgICB0ZXhlbDMuZyA9ICVzO1xuIgotICAgICIgIH1cbiIKLSAgICAiICBnbF9GcmFnQ29sb3IgPSB2ZWM0KHRleGVsMy5yLCB0ZXhlbDMuZywgMC4wLCAwLjApO1xuIgotICAgICJ9XG4iOworc3RhdGljIGNvbnN0IHN0cnVjdCBzaGFkZXJfdGVtcGwgdGVtcGxfUkdCX3RvX1lVWTJfVVlWWSA9CisgIHsgTlVMTCwKKyAgICBERUZBVUxUX1VOSUZPUk1TIFJHQl9UT19ZVVZfQ09FRkZJQ0lFTlRTICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iLAorICAgIHsgZ2xzbF9mdW5jX3JnYl90b195dXYsIE5VTEwsIH0sCisgICAgInZlYzQgdGV4ZWwxLCB0ZXhlbDI7XG4iCisgICAgInZlYzMgeXV2LCB5dXYxLCB5dXYyO1xuIgorICAgICJmbG9hdCBmeCwgZHgsIGZ5O1xuIgorICAgIC8qIHZfdGV4Y29vcmQgYXJlIG5vcm1hbGl6ZWQsIHRleGNvb3JkIG1heSBub3QgYmUgZS5nLiByZWN0YW5nbGUgdGV4dHVyZXMgKi8KKyAgICAiZmxvYXQgaW5vcmRlciA9IG1vZCAodl90ZXhjb29yZC54ICogd2lkdGgsIDIuMCk7XG4iCisgICAgImZ4ID0gdGV4Y29vcmQueDtcbiIKKyAgICAiZHggPSBwb2Zmc2V0X3g7XG4iCisgICAgImlmIChpbm9yZGVyID4gMS4wKSB7XG4iCisgICAgIiAgZHggPSAtZHg7XG4iCisgICAgIn1cbiIKKyAgICAiZnkgPSB0ZXhjb29yZC55O1xuIgorICAgICJ0ZXhlbDEgPSB0ZXh0dXJlMkQodGV4LCB2ZWMyKGZ4LCBmeSkpLiVjJWMlYyVjO1xuIgorICAgICJ0ZXhlbDIgPSB0ZXh0dXJlMkQodGV4LCB2ZWMyKGZ4ICsgZHgsIGZ5KSkuJWMlYyVjJWM7XG4iCisgICAgInl1djEgPSByZ2JfdG9feXV2ICh0ZXhlbDEucmdiLCBvZmZzZXQsIGNvZWZmMSwgY29lZmYyLCBjb2VmZjMpO1xuIgorICAgICJ5dXYyID0gcmdiX3RvX3l1diAodGV4ZWwyLnJnYiwgb2Zmc2V0LCBjb2VmZjEsIGNvZWZmMiwgY29lZmYzKTtcbiIKKyAgICAieXV2LnggPSB5dXYxLng7XG4iCisgICAgInl1di55eiA9ICh5dXYxLnl6ICsgeXV2Mi55eikgKiAwLjU7XG4iCisgICAgImlmIChpbm9yZGVyIDwgMS4wKSB7XG4iCisgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdmVjNCh5dXYuJWMsIHl1di4lYywgMC4wLCAwLjApO1xuIgorICAgICJ9IGVsc2Uge1xuIgorICAgICIgIGdsX0ZyYWdDb2xvciA9IHZlYzQoeXV2LiVjLCB5dXYuJWMsIDAuMCwgMC4wKTtcbiIKKyAgICAifVxuIiwKKyAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgfTsKIAogc3RhdGljIGNvbnN0IGdjaGFyIHRleHRfdmVydGV4X3NoYWRlcltdID0KICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKQEAgLTQzNCw4ICszNzEsOCBAQAogICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDsgICAgIFxuIgogICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgIFxuIgogICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICIgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IFxuIgotICAgICIgICB2X3RleGNvb3JkID0gYV90ZXhjb29yZDsgIFxuIgorICAgICIgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgXG4iCisgICAgIiAgdl90ZXhjb29yZCA9IGFfdGV4Y29vcmQ7ICBcbiIKICAgICAifSAgICAgICAgICAgICAgICAgICAgICAgICAgICBcbiI7CiAKIHN0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPSB7CkBAIC00NTMsNiArMzkwLDggQEAKIHsKICAgZ2ludCBpbl9uX3RleHR1cmVzOwogICBnaW50IG91dF9uX3RleHR1cmVzOworICBjb25zdCBzdHJ1Y3Qgc2hhZGVyX3RlbXBsICp0ZW1wbDsKKyAgZ2NoYXIgKmZyYWdfYm9keTsKICAgZ2NoYXIgKmZyYWdfcHJvZzsKICAgY29uc3QgZ2NoYXIgKnNoYWRlcl90ZXhfbmFtZXNbR1NUX1ZJREVPX01BWF9QTEFORVNdOwogICBnZmxvYXQgKmNtc19vZmZzZXQ7CkBAIC00NjgsNiArNDA3LDkgQEAKIAogICBzdHJ1Y3QgQ29udmVydEluZm8gY29udmVydF9pbmZvOwogCisgIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tX3RleHR1cmVfdGFyZ2V0OworICBHc3RHTFRleHR1cmVUYXJnZXQgdG9fdGV4dHVyZV90YXJnZXQ7CisKICAgR3N0R0xNZW1vcnkgKmluX3RleFtHU1RfVklERU9fTUFYX1BMQU5FU107CiAgIEdzdEdMTWVtb3J5ICpvdXRfdGV4W0dTVF9WSURFT19NQVhfUExBTkVTXTsKIApAQCAtNDc2LDYgKzQxOCwxMiBAQAogICBHTHVpbnQgdmJvX2luZGljZXM7CiAgIEdMdWludCBhdHRyX3Bvc2l0aW9uOwogICBHTHVpbnQgYXR0cl90ZXh0dXJlOworCisgIEdzdENhcHMgKmluX2NhcHM7CisgIEdzdENhcHMgKm91dF9jYXBzOworCisgIEdzdEJ1ZmZlclBvb2wgKnBvb2w7CisgIGdib29sZWFuIHBvb2xfc3RhcnRlZDsKIH07CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9nbF9jb2xvcl9jb252ZXJ0X2RlYnVnKTsKQEAgLTU5MiwxMSArNTQwLDI4IEBACiAgIGNvbnZlcnQtPnByaXYtPmNvbnZlcnRfaW5mby5jaHJvbWFfc2FtcGxpbmdbMF0gPSAxLjBmOwogICBjb252ZXJ0LT5wcml2LT5jb252ZXJ0X2luZm8uY2hyb21hX3NhbXBsaW5nWzFdID0gMS4wZjsKIAorICBpZiAoY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvLmZyYWdfcHJvZykgeworICAgIGdfZnJlZSAoY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvLmZyYWdfcHJvZyk7CisgICAgY29udmVydC0+cHJpdi0+Y29udmVydF9pbmZvLmZyYWdfcHJvZyA9IE5VTEw7CisgIH0KKyAgaWYgKGNvbnZlcnQtPnByaXYtPmNvbnZlcnRfaW5mby5mcmFnX2JvZHkpIHsKKyAgICBnX2ZyZWUgKGNvbnZlcnQtPnByaXYtPmNvbnZlcnRfaW5mby5mcmFnX2JvZHkpOworICAgIGNvbnZlcnQtPnByaXYtPmNvbnZlcnRfaW5mby5mcmFnX2JvZHkgPSBOVUxMOworICB9CiAgIGlmIChjb252ZXJ0LT5zaGFkZXIpIHsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChjb252ZXJ0LT5zaGFkZXIpOwogICAgIGNvbnZlcnQtPnNoYWRlciA9IE5VTEw7CiAgIH0KIAorICBpZiAoY29udmVydC0+cHJpdi0+cG9vbCkgeworICAgIGNvbnZlcnQtPnByaXYtPnBvb2xfc3RhcnRlZCA9IEZBTFNFOworCisgICAgZ3N0X29iamVjdF91bnJlZiAoY29udmVydC0+cHJpdi0+cG9vbCk7CisgICAgY29udmVydC0+cHJpdi0+cG9vbCA9IE5VTEw7CisgIH0KKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJmNvbnZlcnQtPnByaXYtPmluX2NhcHMsIE5VTEwpOworICBnc3RfY2Fwc19yZXBsYWNlICgmY29udmVydC0+cHJpdi0+b3V0X2NhcHMsIE5VTEwpOworCiAgIGlmIChjb252ZXJ0LT5jb250ZXh0KSB7CiAgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29udmVydC0+Y29udGV4dCwKICAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9yZXNldF9nbCwgY29udmVydCk7CkBAIC02MDQsNyArNTY5LDggQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1fZ3N0X2dsX2NvbG9yX2NvbnZlcnRfY2FuX3Bhc3N0aHJvdWdoIChHc3RWaWRlb0luZm8gKiBpbiwgR3N0VmlkZW9JbmZvICogb3V0KQorX2dzdF9nbF9jb2xvcl9jb252ZXJ0X2Nhbl9wYXNzdGhyb3VnaF9pbmZvIChHc3RWaWRlb0luZm8gKiBpbiwKKyAgICBHc3RWaWRlb0luZm8gKiBvdXQpCiB7CiAgIGdpbnQgaTsKIApAQCAtNjM4LDYgKzYwNCw4IEBACiB7CiAgIEdzdFZpZGVvSW5mbyBpbl9pbmZvLCBvdXRfaW5mbzsKICAgR3N0Q2Fwc0ZlYXR1cmVzICppbl9mZWF0dXJlcywgKm91dF9mZWF0dXJlczsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IGZyb21fdGFyZ2V0LCB0b190YXJnZXQ7CisgIGdib29sZWFuIHBhc3N0aHJvdWdoOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb252ZXJ0ICE9IE5VTEwsIEZBTFNFKTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGluX2NhcHMsIEZBTFNFKTsKQEAgLTY3MSwxOCArNjM5LDY4IEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKKyAgeworICAgIEdzdFN0cnVjdHVyZSAqaW5fcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGluX2NhcHMsIDApOworICAgIEdzdFN0cnVjdHVyZSAqb3V0X3MgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChvdXRfY2FwcywgMCk7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGRfdHlwZWQgKGluX3MsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcpKQorICAgICAgZnJvbV90YXJnZXQgPQorICAgICAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChpbl9zLAorICAgICAgICAgICAgICAidGV4dHVyZS10YXJnZXQiKSk7CisgICAgZWxzZQorICAgICAgZnJvbV90YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisKKyAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGRfdHlwZWQgKG91dF9zLCAidGV4dHVyZS10YXJnZXQiLCBHX1RZUEVfU1RSSU5HKSkKKyAgICAgIHRvX3RhcmdldCA9CisgICAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nIChnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKG91dF9zLAorICAgICAgICAgICAgICAidGV4dHVyZS10YXJnZXQiKSk7CisgICAgZWxzZQorICAgICAgdG9fdGFyZ2V0ID0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworCisgICAgaWYgKHRvX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORQorICAgICAgICB8fCBmcm9tX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORSkKKyAgICAgIC8qIGludmFsaWQgY2FwcyAqLworICAgICAgcmV0dXJuIEZBTFNFOworICB9CisKICAgaWYgKGdzdF92aWRlb19pbmZvX2lzX2VxdWFsICgmY29udmVydC0+aW5faW5mbywgJmluX2luZm8pICYmCi0gICAgICBnc3RfdmlkZW9faW5mb19pc19lcXVhbCAoJmNvbnZlcnQtPm91dF9pbmZvLCAmb3V0X2luZm8pKQorICAgICAgZ3N0X3ZpZGVvX2luZm9faXNfZXF1YWwgKCZjb252ZXJ0LT5vdXRfaW5mbywgJm91dF9pbmZvKSAmJgorICAgICAgY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9PSBmcm9tX3RhcmdldCAmJgorICAgICAgY29udmVydC0+cHJpdi0+dG9fdGV4dHVyZV90YXJnZXQgPT0gdG9fdGFyZ2V0KQogICAgIHJldHVybiBUUlVFOwogCisgIC8qIElmIGlucHV0IGFuZCBvdXRwdXQgYXJlIGlkZW50aWNhbCwgcGFzcyB0aHJvdWdoIGRpcmVjdGx5ICovCisgIHBhc3N0aHJvdWdoID0KKyAgICAgIF9nc3RfZ2xfY29sb3JfY29udmVydF9jYW5fcGFzc3Rocm91Z2hfaW5mbyAoJmluX2luZm8sICZvdXRfaW5mbykgJiYKKyAgICAgIGZyb21fdGFyZ2V0ID09IHRvX3RhcmdldDsKKworICBpZiAoIXBhc3N0aHJvdWdoICYmIHRvX3RhcmdldCAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQKKyAgICAgICYmIHRvX3RhcmdldCAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIHJldHVybiBGQUxTRTsKKworICB7CisgICAgZ3VpbnQgeXV2X2dyYXlfZmxhZ3MsIGluX2ZsYWdzLCBvdXRfZmxhZ3M7CisKKyAgICBpbl9mbGFncyA9IEdTVF9WSURFT19GT1JNQVRfSU5GT19GTEFHUyAoaW5faW5mby5maW5mbyk7CisgICAgb3V0X2ZsYWdzID0gR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0ZMQUdTIChvdXRfaW5mby5maW5mbyk7CisgICAgeXV2X2dyYXlfZmxhZ3MgPSBHU1RfVklERU9fRk9STUFUX0ZMQUdfWVVWIHwgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0dSQVk7CisKKyAgICAvKiBHUkFZL1lVViAtPiBHUkFZL1lVViBpcyBub3Qgc3VwcG9ydGVkIGZvciBub24tcGFzc3Rocm91Z2ggKi8KKyAgICBpZiAoIXBhc3N0aHJvdWdoICYmIChpbl9mbGFncyAmIHl1dl9ncmF5X2ZsYWdzKSAhPSAwCisgICAgICAgICYmIChvdXRfZmxhZ3MgJiB5dXZfZ3JheV9mbGFncykgIT0gMCkKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgfQorCiAgIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3Jlc2V0IChjb252ZXJ0KTsKICAgY29udmVydC0+aW5faW5mbyA9IGluX2luZm87CiAgIGNvbnZlcnQtPm91dF9pbmZvID0gb3V0X2luZm87CisgIGdzdF9jYXBzX3JlcGxhY2UgKCZjb252ZXJ0LT5wcml2LT5pbl9jYXBzLCBpbl9jYXBzKTsKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJmNvbnZlcnQtPnByaXYtPm91dF9jYXBzLCBvdXRfY2Fwcyk7CisgIGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQgPSBmcm9tX3RhcmdldDsKKyAgY29udmVydC0+cHJpdi0+dG9fdGV4dHVyZV90YXJnZXQgPSB0b190YXJnZXQ7CiAgIGNvbnZlcnQtPmluaXR0ZWQgPSBGQUxTRTsKIAotICAvKiBJZiBpbnB1dCBhbmQgb3V0cHV0IGFyZSBpZGVudGljYWwsIHBhc3MgdGhyb3VnaCBkaXJlY3RseSAqLwotICBjb252ZXJ0LT5wYXNzdGhyb3VnaCA9Ci0gICAgICBfZ3N0X2dsX2NvbG9yX2NvbnZlcnRfY2FuX3Bhc3N0aHJvdWdoICgmaW5faW5mbywgJm91dF9pbmZvKTsKKyAgY29udmVydC0+cGFzc3Rocm91Z2ggPSBwYXNzdGhyb3VnaDsKICNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCiAgIGlmIChHX1VOTElLRUxZIChjb252ZXJ0LT5wYXNzdGhyb3VnaCkpCiAgICAgR1NUX0RFQlVHX09CSkVDVCAoY29udmVydCwKQEAgLTcxNywzNSArNzM1LDE4NCBAQAogICByZXR1cm4gcmV0OwogfQogCitnYm9vbGVhbgorZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVjaWRlX2FsbG9jYXRpb24gKEdzdEdMQ29sb3JDb252ZXJ0ICogY29udmVydCwKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBHc3RCdWZmZXJQb29sICpwb29sID0gTlVMTDsKKyAgR3N0U3RydWN0dXJlICpjb25maWc7CisgIEdzdENhcHMgKmNhcHM7CisgIGd1aW50IG1pbiwgbWF4LCBzaXplLCBuLCBpOworICBnYm9vbGVhbiB1cGRhdGVfcG9vbDsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKKyAgR3N0VmlkZW9JbmZvIHZpbmZvOworCisgIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uIChxdWVyeSwgJmNhcHMsIE5VTEwpOworICBpZiAoIWNhcHMpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJnZpbmZvLCBjYXBzKTsKKworICBuID0gZ3N0X3F1ZXJ5X2dldF9uX2FsbG9jYXRpb25fcG9vbHMgKHF1ZXJ5KTsKKyAgaWYgKG4gPiAwKSB7CisgICAgdXBkYXRlX3Bvb2wgPSBUUlVFOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgIGdzdF9xdWVyeV9wYXJzZV9udGhfYWxsb2NhdGlvbl9wb29sIChxdWVyeSwgaSwgJnBvb2wsICZzaXplLCAmbWluLCAmbWF4KTsKKworICAgICAgaWYgKCFwb29sIHx8ICFHU1RfSVNfR0xfQlVGRkVSX1BPT0wgKHBvb2wpKSB7CisgICAgICAgIGlmIChwb29sKQorICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHBvb2wpOworICAgICAgICBwb29sID0gTlVMTDsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBpZiAoIXBvb2wpIHsKKyAgICBHc3RWaWRlb0luZm8gdmluZm87CisKKyAgICBnc3RfdmlkZW9faW5mb19pbml0ICgmdmluZm8pOworICAgIHNpemUgPSB2aW5mby5zaXplOworICAgIG1pbiA9IG1heCA9IDA7CisgICAgdXBkYXRlX3Bvb2wgPSBGQUxTRTsKKyAgfQorCisgIGlmICghcG9vbCkKKyAgICBwb29sID0gZ3N0X2dsX2J1ZmZlcl9wb29sX25ldyAoY29udmVydC0+Y29udGV4dCk7CisKKyAgY29uZmlnID0gZ3N0X2J1ZmZlcl9wb29sX2dldF9jb25maWcgKHBvb2wpOworCisgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyAoY29uZmlnLCBjYXBzLCBzaXplLCBtaW4sIG1heCk7CisgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfYWRkX29wdGlvbiAoY29uZmlnLCBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX01FVEEpOworICBpZiAoZ3N0X3F1ZXJ5X2ZpbmRfYWxsb2NhdGlvbl9tZXRhIChxdWVyeSwgR1NUX0dMX1NZTkNfTUVUQV9BUElfVFlQRSwgTlVMTCkpCisgICAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19hZGRfb3B0aW9uIChjb25maWcsCisgICAgICAgIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfU1lOQ19NRVRBKTsKKworICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3IChjb252ZXJ0LT5jb250ZXh0LCBOVUxMLCAmdmluZm8sCisgICAgICAwLCBOVUxMLCBjb252ZXJ0LT5wcml2LT50b190ZXh0dXJlX3RhcmdldCk7CisgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X2dsX2FsbG9jYXRpb25fcGFyYW1zIChjb25maWcsCisgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisKKyAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAocG9vbCwgY29uZmlnKSkKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGNvbnZlcnQsICJGYWlsZWQgdG8gc2V0IGJ1ZmZlciBwb29sIGNvbmZpZyIpOworCisgIGlmICh1cGRhdGVfcG9vbCkKKyAgICBnc3RfcXVlcnlfc2V0X250aF9hbGxvY2F0aW9uX3Bvb2wgKHF1ZXJ5LCAwLCBwb29sLCBzaXplLCBtaW4sIG1heCk7CisgIGVsc2UKKyAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIHBvb2wsIHNpemUsIG1pbiwgbWF4KTsKKworICBpZiAoY29udmVydC0+cHJpdi0+cG9vbCkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnZlcnQtPnByaXYtPnBvb2wpOworICAgIGNvbnZlcnQtPnByaXYtPnBvb2xfc3RhcnRlZCA9IEZBTFNFOworICB9CisgIGNvbnZlcnQtPnByaXYtPnBvb2wgPSBwb29sOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX2luaXRfdmFsdWVfc3RyaW5nX2xpc3QgKEdWYWx1ZSAqIGxpc3QsIC4uLikKK3sKKyAgR1ZhbHVlIGl0ZW0gPSBHX1ZBTFVFX0lOSVQ7CisgIGdjaGFyICpzdHI7CisgIHZhX2xpc3QgYXJnczsKKworICBnX3ZhbHVlX2luaXQgKGxpc3QsIEdTVF9UWVBFX0xJU1QpOworCisgIHZhX3N0YXJ0IChhcmdzLCBsaXN0KTsKKyAgd2hpbGUgKChzdHIgPSB2YV9hcmcgKGFyZ3MsIGdjaGFyICopKSkgeworICAgIGdfdmFsdWVfaW5pdCAoJml0ZW0sIEdfVFlQRV9TVFJJTkcpOworICAgIGdfdmFsdWVfc2V0X3N0cmluZyAoJml0ZW0sIHN0cik7CisKKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKGxpc3QsICZpdGVtKTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmaXRlbSk7CisgIH0KKyAgdmFfZW5kIChhcmdzKTsKK30KKwogLyogY29waWVzIHRoZSBnaXZlbiBjYXBzICovCiBzdGF0aWMgR3N0Q2FwcyAqCi1nc3RfZ2xfY29sb3JfY29udmVydF9jYXBzX3JlbW92ZV9mb3JtYXRfaW5mbyAoR3N0Q2FwcyAqIGNhcHMpCitnc3RfZ2xfY29sb3JfY29udmVydF9jYXBzX3RyYW5zZm9ybV9mb3JtYXRfaW5mbyAoR3N0Q2FwcyAqIGNhcHMpCiB7CiAgIEdzdFN0cnVjdHVyZSAqc3Q7CiAgIEdzdENhcHNGZWF0dXJlcyAqZjsKICAgZ2ludCBpLCBuOwogICBHc3RDYXBzICpyZXM7CisgIEdWYWx1ZSByZ2JfZm9ybWF0cyA9IEdfVkFMVUVfSU5JVDsKKworICBfaW5pdF92YWx1ZV9zdHJpbmdfbGlzdCAoJnJnYl9mb3JtYXRzLCAiUkdCQSIsICJBUkdCIiwgIkJHUkEiLCAiQUJHUiIsICJSR0J4IiwKKyAgICAgICJ4UkdCIiwgIkJHUngiLCAieEJHUiIsICJSR0IiLCAiQkdSIiwgTlVMTCk7CiAKICAgcmVzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwogCiAgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAoY2Fwcyk7CiAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICBjb25zdCBHVmFsdWUgKmZvcm1hdDsKKwogICAgIHN0ID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgaSk7CiAgICAgZiA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgaSk7CiAKLSAgICAvKiBJZiB0aGlzIGlzIGFscmVhZHkgZXhwcmVzc2VkIGJ5IHRoZSBleGlzdGluZyBjYXBzCi0gICAgICogc2tpcCB0aGlzIHN0cnVjdHVyZSAqLwotICAgIGlmIChpID4gMCAmJiBnc3RfY2Fwc19pc19zdWJzZXRfc3RydWN0dXJlX2Z1bGwgKHJlcywgc3QsIGYpKQotICAgICAgY29udGludWU7Ci0KKyAgICBmb3JtYXQgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3QsICJmb3JtYXQiKTsKICAgICBzdCA9IGdzdF9zdHJ1Y3R1cmVfY29weSAoc3QpOwotICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkcyAoc3QsICJmb3JtYXQiLCAiY29sb3JpbWV0cnkiLCAiY2hyb21hLXNpdGUiLAotICAgICAgICBOVUxMKTsKKyAgICBpZiAoR1NUX1ZBTFVFX0hPTERTX0xJU1QgKGZvcm1hdCkpIHsKKyAgICAgIGdib29sZWFuIGhhdmVfcmdiX2Zvcm1hdHMgPSBGQUxTRTsKKyAgICAgIEdWYWx1ZSBwYXNzdGhyb3VnaF9mb3JtYXRzID0gR19WQUxVRV9JTklUOworICAgICAgZ2ludCBqLCBsZW47CiAKLSAgICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlX2Z1bGwgKHJlcywgc3QsCi0gICAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX25ldyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBOVUxMKSk7CisgICAgICBnX3ZhbHVlX2luaXQgKCZwYXNzdGhyb3VnaF9mb3JtYXRzLCBHU1RfVFlQRV9MSVNUKTsKKyAgICAgIGxlbiA9IGdzdF92YWx1ZV9saXN0X2dldF9zaXplIChmb3JtYXQpOworICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7CisgICAgICAgIGNvbnN0IEdWYWx1ZSAqdmFsOworCisgICAgICAgIHZhbCA9IGdzdF92YWx1ZV9saXN0X2dldF92YWx1ZSAoZm9ybWF0LCBqKTsKKyAgICAgICAgaWYgKEdfVkFMVUVfSE9MRFNfU1RSSU5HICh2YWwpKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKmZvcm1hdF9zdHIgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbCk7CisgICAgICAgICAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQgPSBnc3RfdmlkZW9fZm9ybWF0X2Zyb21fc3RyaW5nIChmb3JtYXRfc3RyKTsKKyAgICAgICAgICBjb25zdCBHc3RWaWRlb0Zvcm1hdEluZm8gKnRfaW5mbyA9CisgICAgICAgICAgICAgIGdzdF92aWRlb19mb3JtYXRfZ2V0X2luZm8gKHZfZm9ybWF0KTsKKyAgICAgICAgICBpZiAoR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0ZMQUdTICh0X2luZm8pICYgKEdTVF9WSURFT19GT1JNQVRfRkxBR19ZVVYKKyAgICAgICAgICAgICAgICAgIHwgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0dSQVkpKSB7CisgICAgICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZwYXNzdGhyb3VnaF9mb3JtYXRzLCB2YWwpOworICAgICAgICAgIH0gZWxzZSBpZiAoR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0ZMQUdTICh0X2luZm8pICYKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1JHQikgeworICAgICAgICAgICAgaGF2ZV9yZ2JfZm9ybWF0cyA9IFRSVUU7CisgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGlmIChoYXZlX3JnYl9mb3JtYXRzKSB7CisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfcmVtb3ZlX2ZpZWxkcyAoc3QsICJmb3JtYXQiLCBOVUxMKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8qIGFkZCBwYXNzdGhyb3VnaCBzdHJ1Y3R1cmUsIHRoZW4gdGhlIHJnYiBjb252ZXJzaW9uIHN0cnVjdHVyZSAqLworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3QsICJmb3JtYXQiLCAmcGFzc3Rocm91Z2hfZm9ybWF0cyk7CisgICAgICAgIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmVfZnVsbCAocmVzLCBnc3Rfc3RydWN0dXJlX2NvcHkgKHN0KSwKKyAgICAgICAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2NvcHkgKGYpKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHN0LCAiZm9ybWF0IiwgJnJnYl9mb3JtYXRzKTsKKyAgICAgIH0KKyAgICAgIGdfdmFsdWVfdW5zZXQgKCZwYXNzdGhyb3VnaF9mb3JtYXRzKTsKKyAgICB9IGVsc2UgaWYgKEdfVkFMVUVfSE9MRFNfU1RSSU5HIChmb3JtYXQpKSB7CisgICAgICBjb25zdCBnY2hhciAqZm9ybWF0X3N0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAoZm9ybWF0KTsKKyAgICAgIEdzdFZpZGVvRm9ybWF0IHZfZm9ybWF0ID0gZ3N0X3ZpZGVvX2Zvcm1hdF9mcm9tX3N0cmluZyAoZm9ybWF0X3N0cik7CisgICAgICBjb25zdCBHc3RWaWRlb0Zvcm1hdEluZm8gKnRfaW5mbyA9IGdzdF92aWRlb19mb3JtYXRfZ2V0X2luZm8gKHZfZm9ybWF0KTsKKyAgICAgIGlmIChHU1RfVklERU9fRk9STUFUX0lORk9fRkxBR1MgKHRfaW5mbykgJiAoR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1lVViB8CisgICAgICAgICAgICAgIEdTVF9WSURFT19GT1JNQVRfRkxBR19HUkFZKSkgeworICAgICAgICAvKiBhZGQgcGFzc3Rocm91Z2ggc3RydWN0dXJlLCB0aGVuIHRoZSByZ2IgY29udmVyc2lvbiBzdHJ1Y3R1cmUgKi8KKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHN0LCAiZm9ybWF0IiwgZm9ybWF0KTsKKyAgICAgICAgZ3N0X2NhcHNfYXBwZW5kX3N0cnVjdHVyZV9mdWxsIChyZXMsIGdzdF9zdHJ1Y3R1cmVfY29weSAoc3QpLAorICAgICAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfY29weSAoZikpOworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3QsICJmb3JtYXQiLCAmcmdiX2Zvcm1hdHMpOworICAgICAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAvKiBSR0IgKi8KKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGRzIChzdCwgImZvcm1hdCIsIE5VTEwpOworICAgICAgfQorICAgIH0KKyAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHN0LCAiY29sb3JpbWV0cnkiLCAiY2hyb21hLXNpdGUiLAorICAgICAgICAidGV4dHVyZS10YXJnZXQiLCBOVUxMKTsKKworICAgIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmVfZnVsbCAocmVzLCBzdCwgZ3N0X2NhcHNfZmVhdHVyZXNfY29weSAoZikpOwogICB9CiAKKyAgZ192YWx1ZV91bnNldCAoJnJnYl9mb3JtYXRzKTsKKwogICByZXR1cm4gcmVzOwogfQogCkBAIC03NTMsMjYgKzkyMCwyNTAgQEAKIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3RyYW5zZm9ybV9jYXBzIChHc3RHTENvbnRleHQgKiBjb252ZXJ0LAogICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQogewotICBHc3RDYXBzICp0ZW1wbCwgKnJlc3VsdDsKLQotICB0ZW1wbCA9Ci0gICAgICBnc3RfY2Fwc19mcm9tX3N0cmluZyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBHU1RfR0xfQ09MT1JfQ09OVkVSVF9GT1JNQVRTKSk7Ci0KLSAgY2FwcyA9IGdzdF9nbF9jb2xvcl9jb252ZXJ0X2NhcHNfcmVtb3ZlX2Zvcm1hdF9pbmZvIChjYXBzKTsKLQotICByZXN1bHQgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKGNhcHMsIHRlbXBsKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOwotCi0gIHJlc3VsdCA9IGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfYWRkX2NhcHMgKHJlc3VsdCk7CisgIGNhcHMgPSBnc3RfZ2xfY29sb3JfY29udmVydF9jYXBzX3RyYW5zZm9ybV9mb3JtYXRfaW5mbyAoY2Fwcyk7CiAKICAgaWYgKGZpbHRlcikgewogICAgIEdzdENhcHMgKnRtcDsKIAotICAgIHRtcCA9IGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChmaWx0ZXIsIHJlc3VsdCwgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKKyAgICB0bXAgPSBnc3RfY2Fwc19pbnRlcnNlY3RfZnVsbCAoZmlsdGVyLCBjYXBzLCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOworICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgICBjYXBzID0gdG1wOworICB9CisKKyAgcmV0dXJuIGNhcHM7Cit9CisKKy8qIGZpeGF0aW9uIGZyb20gdmlkZW9jb252ZXJ0ICovCisjZGVmaW5lIFNDT1JFX0ZPUk1BVF9DSEFOR0UgICAgICAgICAgICAgMQorI2RlZmluZSBTQ09SRV9ERVBUSF9DSEFOR0UgICAgICAgICAgICAgIDEKKyNkZWZpbmUgU0NPUkVfQUxQSEFfQ0hBTkdFICAgICAgICAgICAgICAxCisjZGVmaW5lIFNDT1JFX0NIUk9NQV9XX0NIQU5HRSAgICAgICAgICAgMQorI2RlZmluZSBTQ09SRV9DSFJPTUFfSF9DSEFOR0UgICAgICAgICAgIDEKKyNkZWZpbmUgU0NPUkVfUEFMRVRURV9DSEFOR0UgICAgICAgICAgICAxCisKKyNkZWZpbmUgU0NPUkVfQ09MT1JTUEFDRV9MT1NTICAgICAgICAgICAyICAgICAgIC8qIFJHQiA8LT4gWVVWICovCisjZGVmaW5lIFNDT1JFX0RFUFRIX0xPU1MgICAgICAgICAgICAgICAgNCAgICAgICAvKiBjaGFuZ2UgYml0IGRlcHRoICovCisjZGVmaW5lIFNDT1JFX0FMUEhBX0xPU1MgICAgICAgICAgICAgICAgOCAgICAgICAvKiBsb3NlIHRoZSBhbHBoYSBjaGFubmVsICovCisjZGVmaW5lIFNDT1JFX0NIUk9NQV9XX0xPU1MgICAgICAgICAgICAgMTYgICAgICAvKiB2ZXJ0aWNhbCBzdWJzYW1wbGUgKi8KKyNkZWZpbmUgU0NPUkVfQ0hST01BX0hfTE9TUyAgICAgICAgICAgICAzMiAgICAgIC8qIGhvcml6b250YWwgc3Vic2FtcGxlICovCisjZGVmaW5lIFNDT1JFX1BBTEVUVEVfTE9TUyAgICAgICAgICAgICAgNjQgICAgICAvKiBjb252ZXJ0IHRvIHBhbGV0dGUgZm9ybWF0ICovCisjZGVmaW5lIFNDT1JFX0NPTE9SX0xPU1MgICAgICAgICAgICAgICAgMTI4ICAgICAvKiBjb252ZXJ0IHRvIEdSQVkgKi8KKworI2RlZmluZSBDT0xPUlNQQUNFX01BU0sgKEdTVF9WSURFT19GT1JNQVRfRkxBR19ZVVYgfCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1JHQiB8IEdTVF9WSURFT19GT1JNQVRfRkxBR19HUkFZKQorI2RlZmluZSBBTFBIQV9NQVNLICAgICAgKEdTVF9WSURFT19GT1JNQVRfRkxBR19BTFBIQSkKKyNkZWZpbmUgUEFMRVRURV9NQVNLICAgIChHU1RfVklERU9fRk9STUFUX0ZMQUdfUEFMRVRURSkKKworc3RhdGljIEdzdEdMVGV4dHVyZVRhcmdldAorX3RleHR1cmVfdGFyZ2V0X2RlbWFzayAoZ3VpbnQgdGFyZ2V0X21hc2spCit7CisgIGlmICh0YXJnZXRfbWFzayAmICgxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkpIHsKKyAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworICB9CisgIGlmICh0YXJnZXRfbWFzayAmICgxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpKSB7CisgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU7CisgIH0KKyAgaWYgKHRhcmdldF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykpIHsKKyAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzsKKyAgfQorCisgIHJldHVybiAwOworfQorCisvKiBjYWxjdWxhdGUgaG93IG11Y2ggbG9zcyBhIGNvbnZlcnNpb24gd291bGQgYmUgKi8KK3N0YXRpYyB2b2lkCitzY29yZV9mb3JtYXRfdGFyZ2V0IChjb25zdCBHc3RWaWRlb0Zvcm1hdEluZm8gKiBpbl9pbmZvLCBndWludCB0YXJnZXRzX21hc2ssCisgICAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQsIGd1aW50IG90aGVyX3RhcmdldHNfbWFzaywgZ2ludCAqIG1pbl9sb3NzLAorICAgIGNvbnN0IEdzdFZpZGVvRm9ybWF0SW5mbyAqKiBvdXRfaW5mbywgR3N0R0xUZXh0dXJlVGFyZ2V0ICogcmVzdWx0KQoreworICBjb25zdCBHc3RWaWRlb0Zvcm1hdEluZm8gKnRfaW5mbzsKKyAgR3N0VmlkZW9Gb3JtYXRGbGFncyBpbl9mbGFncywgdF9mbGFnczsKKyAgZ2ludCBsb3NzOworCisgIHRfaW5mbyA9IGdzdF92aWRlb19mb3JtYXRfZ2V0X2luZm8gKHZfZm9ybWF0KTsKKyAgaWYgKCF0X2luZm8pCisgICAgcmV0dXJuOworCisgIC8qIGFjY2VwdCBpbnB1dCBmb3JtYXQgaW1tZWRpYXRlbHkgd2l0aG91dCBsb3NzICovCisgIGlmIChpbl9pbmZvID09IHRfaW5mbyAmJiAodGFyZ2V0c19tYXNrICYgb3RoZXJfdGFyZ2V0c19tYXNrKSAhPSAwKSB7CisgICAgKm1pbl9sb3NzID0gMDsKKyAgICAqb3V0X2luZm8gPSB0X2luZm87CisgICAgKnJlc3VsdCA9IF90ZXh0dXJlX3RhcmdldF9kZW1hc2sgKHRhcmdldHNfbWFzayAmIG90aGVyX3RhcmdldHNfbWFzayk7CisgICAgcmV0dXJuOworICB9CisKKyAgLyogY2FuIG9ubHkgcGFzc3Rocm91Z2ggZXh0ZXJuYWwtb2VzIHRleHR1cmVzICovCisgIG90aGVyX3RhcmdldHNfbWFzayAmPSB+KDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUyk7CisgIGlmIChvdGhlcl90YXJnZXRzX21hc2sgPT0gMCkKKyAgICByZXR1cm47CisgIC8qIHRyeSB0byBrZWVwIHRoZSBzYW1lIHRhcmdldCAqLworICBpZiAodGFyZ2V0c19tYXNrICYgb3RoZXJfdGFyZ2V0c19tYXNrKQorICAgIG90aGVyX3RhcmdldHNfbWFzayA9IHRhcmdldHNfbWFzayAmIG90aGVyX3RhcmdldHNfbWFzazsKKworICBsb3NzID0gU0NPUkVfRk9STUFUX0NIQU5HRTsKKworICBpbl9mbGFncyA9IEdTVF9WSURFT19GT1JNQVRfSU5GT19GTEFHUyAoaW5faW5mbyk7CisgIGluX2ZsYWdzICY9IH5HU1RfVklERU9fRk9STUFUX0ZMQUdfTEU7CisgIGluX2ZsYWdzICY9IH5HU1RfVklERU9fRk9STUFUX0ZMQUdfQ09NUExFWDsKKyAgaW5fZmxhZ3MgJj0gfkdTVF9WSURFT19GT1JNQVRfRkxBR19VTlBBQ0s7CisKKyAgdF9mbGFncyA9IEdTVF9WSURFT19GT1JNQVRfSU5GT19GTEFHUyAodF9pbmZvKTsKKyAgdF9mbGFncyAmPSB+R1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0xFOworICB0X2ZsYWdzICY9IH5HU1RfVklERU9fRk9STUFUX0ZMQUdfQ09NUExFWDsKKyAgdF9mbGFncyAmPSB+R1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1VOUEFDSzsKKworICAvKiBHUkFZL1lVViAtPiBHUkFZL1lVViBpcyBub3Qgc3VwcG9ydGVkICovCisgIGlmICgoaW5fZmxhZ3MgJiAoR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1lVViB8IEdTVF9WSURFT19GT1JNQVRfRkxBR19HUkFZKSkgIT0gMAorICAgICAgJiYgKHRfZmxhZ3MgJiAoR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX1lVViB8IEdTVF9WSURFT19GT1JNQVRfRkxBR19HUkFZKSkgIT0KKyAgICAgIDApCisgICAgcmV0dXJuOworCisgIGlmICgodF9mbGFncyAmIFBBTEVUVEVfTUFTSykgIT0gKGluX2ZsYWdzICYgUEFMRVRURV9NQVNLKSkgeworICAgIGxvc3MgKz0gU0NPUkVfUEFMRVRURV9DSEFOR0U7CisgICAgaWYgKHRfZmxhZ3MgJiBQQUxFVFRFX01BU0spCisgICAgICBsb3NzICs9IFNDT1JFX1BBTEVUVEVfTE9TUzsKKyAgfQorCisgIGlmICgodF9mbGFncyAmIENPTE9SU1BBQ0VfTUFTSykgIT0gKGluX2ZsYWdzICYgQ09MT1JTUEFDRV9NQVNLKSkgeworICAgIGxvc3MgKz0gU0NPUkVfQ09MT1JTUEFDRV9MT1NTOworICAgIGlmICh0X2ZsYWdzICYgR1NUX1ZJREVPX0ZPUk1BVF9GTEFHX0dSQVkpCisgICAgICBsb3NzICs9IFNDT1JFX0NPTE9SX0xPU1M7CisgIH0KKworICBpZiAoKHRfZmxhZ3MgJiBBTFBIQV9NQVNLKSAhPSAoaW5fZmxhZ3MgJiBBTFBIQV9NQVNLKSkgeworICAgIGxvc3MgKz0gU0NPUkVfQUxQSEFfQ0hBTkdFOworICAgIGlmIChpbl9mbGFncyAmIEFMUEhBX01BU0spCisgICAgICBsb3NzICs9IFNDT1JFX0FMUEhBX0xPU1M7CisgIH0KKworICBpZiAoKGluX2luZm8tPmhfc3ViWzFdKSAhPSAodF9pbmZvLT5oX3N1YlsxXSkpIHsKKyAgICBsb3NzICs9IFNDT1JFX0NIUk9NQV9IX0NIQU5HRTsKKyAgICBpZiAoKGluX2luZm8tPmhfc3ViWzFdKSA8ICh0X2luZm8tPmhfc3ViWzFdKSkKKyAgICAgIGxvc3MgKz0gU0NPUkVfQ0hST01BX0hfTE9TUzsKKyAgfQorICBpZiAoKGluX2luZm8tPndfc3ViWzFdKSAhPSAodF9pbmZvLT53X3N1YlsxXSkpIHsKKyAgICBsb3NzICs9IFNDT1JFX0NIUk9NQV9XX0NIQU5HRTsKKyAgICBpZiAoKGluX2luZm8tPndfc3ViWzFdKSA8ICh0X2luZm8tPndfc3ViWzFdKSkKKyAgICAgIGxvc3MgKz0gU0NPUkVfQ0hST01BX1dfTE9TUzsKKyAgfQorCisgIGlmICgoaW5faW5mby0+Yml0cykgIT0gKHRfaW5mby0+Yml0cykpIHsKKyAgICBsb3NzICs9IFNDT1JFX0RFUFRIX0NIQU5HRTsKKyAgICBpZiAoKGluX2luZm8tPmJpdHMpID4gKHRfaW5mby0+Yml0cykpCisgICAgICBsb3NzICs9IFNDT1JFX0RFUFRIX0xPU1M7CisgIH0KKworICBpZiAobG9zcyA8ICptaW5fbG9zcykgeworICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQgPSBfdGV4dHVyZV90YXJnZXRfZGVtYXNrIChvdGhlcl90YXJnZXRzX21hc2spOworCisgICAgaWYgKHRhcmdldCAhPSAwKSB7CisgICAgICAqb3V0X2luZm8gPSB0X2luZm87CisgICAgICAqbWluX2xvc3MgPSBsb3NzOworICAgICAgKnJlc3VsdCA9IHRhcmdldDsKKyAgICB9CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9mb3JtYXRfdGFyZ2V0IChHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIHJlc3VsdCkKK3sKKyAgR3N0U3RydWN0dXJlICppbnMsICpvdXRzOworICBjb25zdCBnY2hhciAqaW5fZm9ybWF0OworICBjb25zdCBHc3RWaWRlb0Zvcm1hdEluZm8gKmluX2luZm8sICpvdXRfaW5mbyA9IE5VTEw7CisgIGNvbnN0IEdWYWx1ZSAqdGFyZ2V0czsKKyAgZ3VpbnQgdGFyZ2V0c19tYXNrID0gMDsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldDsKKyAgZ2ludCBtaW5fbG9zcyA9IEdfTUFYSU5UOworICBndWludCBpLCBjYXBzbGVuOworCisgIGlucyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICBpbl9mb3JtYXQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKGlucywgImZvcm1hdCIpOworICBpZiAoIWluX2Zvcm1hdCkKKyAgICByZXR1cm47CisgIHRhcmdldHMgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoaW5zLCAidGV4dHVyZS10YXJnZXQiKTsKKyAgdGFyZ2V0c19tYXNrID0gZ3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrICh0YXJnZXRzKTsKKyAgaWYgKCF0YXJnZXRzX21hc2spCisgICAgcmV0dXJuOworCisgIGluX2luZm8gPQorICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF9nZXRfaW5mbyAoZ3N0X3ZpZGVvX2Zvcm1hdF9mcm9tX3N0cmluZyAoaW5fZm9ybWF0KSk7CisgIGlmICghaW5faW5mbykKKyAgICByZXR1cm47CisKKyAgb3V0cyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJlc3VsdCwgMCk7CisKKyAgY2Fwc2xlbiA9IGdzdF9jYXBzX2dldF9zaXplIChyZXN1bHQpOworICBmb3IgKGkgPSAwOyBpIDwgY2Fwc2xlbjsgaSsrKSB7CisgICAgR3N0U3RydWN0dXJlICp0ZXN0czsKKyAgICBjb25zdCBHVmFsdWUgKmZvcm1hdDsKKyAgICBjb25zdCBHVmFsdWUgKm90aGVyX3RhcmdldHM7CisgICAgZ3VpbnQgb3RoZXJfdGFyZ2V0c19tYXNrID0gMDsKKworICAgIHRlc3RzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocmVzdWx0LCBpKTsKKworICAgIGZvcm1hdCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlICh0ZXN0cywgImZvcm1hdCIpOworICAgIG90aGVyX3RhcmdldHMgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAodGVzdHMsICJ0ZXh0dXJlLXRhcmdldCIpOworICAgIC8qIHNob3VsZCBub3QgaGFwcGVuICovCisgICAgaWYgKGZvcm1hdCA9PSBOVUxMIHx8IG90aGVyX3RhcmdldHMgPT0gTlVMTCkKKyAgICAgIGNvbnRpbnVlOworCisgICAgb3RoZXJfdGFyZ2V0c19tYXNrID0gZ3N0X2dsX3ZhbHVlX2dldF90ZXh0dXJlX3RhcmdldF9tYXNrIChvdGhlcl90YXJnZXRzKTsKKworICAgIGlmIChHU1RfVkFMVUVfSE9MRFNfTElTVCAoZm9ybWF0KSkgeworICAgICAgZ2ludCBqLCBsZW47CisKKyAgICAgIGxlbiA9IGdzdF92YWx1ZV9saXN0X2dldF9zaXplIChmb3JtYXQpOworICAgICAgZm9yIChqID0gMDsgaiA8IGxlbjsgaisrKSB7CisgICAgICAgIGNvbnN0IEdWYWx1ZSAqdmFsOworCisgICAgICAgIHZhbCA9IGdzdF92YWx1ZV9saXN0X2dldF92YWx1ZSAoZm9ybWF0LCBqKTsKKyAgICAgICAgaWYgKEdfVkFMVUVfSE9MRFNfU1RSSU5HICh2YWwpKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKmZvcm1hdF9zdHIgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbCk7CisgICAgICAgICAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQgPSBnc3RfdmlkZW9fZm9ybWF0X2Zyb21fc3RyaW5nIChmb3JtYXRfc3RyKTsKKyAgICAgICAgICBzY29yZV9mb3JtYXRfdGFyZ2V0IChpbl9pbmZvLCB0YXJnZXRzX21hc2ssIHZfZm9ybWF0LAorICAgICAgICAgICAgICBvdGhlcl90YXJnZXRzX21hc2ssICZtaW5fbG9zcywgJm91dF9pbmZvLCAmdGFyZ2V0KTsKKyAgICAgICAgICBpZiAobWluX2xvc3MgPT0gMCkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgfSBlbHNlIGlmIChHX1ZBTFVFX0hPTERTX1NUUklORyAoZm9ybWF0KSkgeworICAgICAgY29uc3QgZ2NoYXIgKmZvcm1hdF9zdHIgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKGZvcm1hdCk7CisgICAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCA9IGdzdF92aWRlb19mb3JtYXRfZnJvbV9zdHJpbmcgKGZvcm1hdF9zdHIpOworICAgICAgc2NvcmVfZm9ybWF0X3RhcmdldCAoaW5faW5mbywgdGFyZ2V0c19tYXNrLCB2X2Zvcm1hdCwgb3RoZXJfdGFyZ2V0c19tYXNrLAorICAgICAgICAgICZtaW5fbG9zcywgJm91dF9pbmZvLCAmdGFyZ2V0KTsKKyAgICB9CisgIH0KKyAgaWYgKG91dF9pbmZvKQorICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChvdXRzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywKKyAgICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX05BTUUgKG91dF9pbmZvKSwgTlVMTCk7CisgIGlmICh0YXJnZXQpCisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKG91dHMsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcsCisgICAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmcgKHRhcmdldCksIE5VTEwpOworfQorCitHc3RDYXBzICoKK2dzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9jYXBzIChHc3RHTENvbnRleHQgKiBjb252ZXJ0LAorICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogb3RoZXIpCit7CisgIEdzdENhcHMgKnJlc3VsdDsKKworICByZXN1bHQgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKG90aGVyLCBjYXBzKTsKKyAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChyZXN1bHQpKSB7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKHJlc3VsdCk7Ci0gICAgcmVzdWx0ID0gdG1wOworICAgIHJlc3VsdCA9IG90aGVyOworICB9IGVsc2UgeworICAgIGdzdF9jYXBzX3VucmVmIChvdGhlcik7CisgIH0KKworICByZXN1bHQgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChyZXN1bHQpOworICBnc3RfZ2xfY29sb3JfY29udmVydF9maXhhdGVfZm9ybWF0X3RhcmdldCAoY2FwcywgcmVzdWx0KTsKKworICByZXN1bHQgPSBnc3RfY2Fwc19maXhhdGUgKHJlc3VsdCk7CisKKyAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkspIHsKKyAgICBpZiAoZ3N0X2NhcHNfaXNfc3Vic2V0IChjYXBzLCByZXN1bHQpKSB7CisgICAgICBnc3RfY2Fwc19yZXBsYWNlICgmcmVzdWx0LCBjYXBzKTsKKyAgICB9CiAgIH0KIAogICByZXR1cm4gcmVzdWx0OwpAQCAtOTYxLDcgKzEzNTIsOCBAQAogICAgIH0KICAgICBhbHBoYSA9IGdfc3RyZHVwX3ByaW50ZiAoInQuJWMgPSAxLjA7IiwgaW5wdXRfYWxwaGFfY2hhbm5lbCk7CiAgIH0KLSAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JFT1JERVIsIGFscGhhID8gYWxwaGEgOiAiIiwKKyAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUkVPUkRFUjsKKyAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgYWxwaGEgPyBhbHBoYSA6ICIiLAogICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10pOwogICBpbmZvLT5zaGFkZXJfdGV4X25hbWVzWzBdID0gInRleCI7CiAKQEAgLTk5Miw3ICsxMzg0LDcgQEAKICAgaWYgKGdzdF9pc19nbF9tZW1vcnkgKG1lbW9yeSkgJiYgKFVTSU5HX09QRU5HTCAoY29udmVydC0+Y29udGV4dCkKICAgICAgICAgICB8fCBVU0lOR19PUEVOR0wzIChjb252ZXJ0LT5jb250ZXh0KSkpIHsKICAgICBpbl90ZXhfcmVjdGFuZ3VsYXIgPQotICAgICAgICAoKEdzdEdMTWVtb3J5ICopIG1lbW9yeSktPnRleF90YXJnZXQgPT0gR0xfVEVYVFVSRV9SRUNUQU5HTEU7CisgICAgICAgIGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTsKICAgfQogI2VuZGlmCiAKQEAgLTEwMDQsMTUgKzEzOTYsMTkgQEAKICAgICAgKiB0aGUgQXBwbGUgWUNiQ3I0MjIgZXh0ZW5zaW9uLiBJdCBjb3VsZCBhbHNvIGJlIGEgbm9ybWFsIFVZVlkgdGV4dHVyZQogICAgICAqIHdpdGggUkIgb3IgTHVtL0FscGhhCiAgICAgICovCi0gICAgaW5mby0+ZnJhZ19wcm9nID0KLSAgICAgICAgZ19zdHJkdXBfcHJpbnRmIChmcmFnX0FQUExFX1lVVl9UT19SR0IsIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwKKyAgICAvKiBUaGUgbWFuZ2xpbmcgd2lsbCBjaGFuZ2UgdGhpcyB0byB0aGUgY29ycmVjdCB0ZXh0dXJlMkRSZWN0LCBzYW1wbGVyMkRSZWN0CisgICAgICogZm9yIHVzICovCisgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUkVPUkRFUjsKKyAgICBpbmZvLT5mcmFnX2JvZHkgPQorICAgICAgICBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sCiAgICAgICAgIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSk7CiAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDE7CiAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1swXSA9ICJ0ZXgiOwogICB9IGVsc2UgewogICAgIHN3aXRjaCAoR1NUX1ZJREVPX0lORk9fRk9STUFUICgmY29udmVydC0+aW5faW5mbykpIHsKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BWVVWOgotICAgICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfQVlVVl90b19SR0IsIHBpeGVsX29yZGVyWzBdLAorICAgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9BWVVWX3RvX1JHQjsKKyAgICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgcGl4ZWxfb3JkZXJbMF0sCiAgICAgICAgICAgICBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdKTsKICAgICAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDE7CiAgICAgICAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAidGV4IjsKQEAgLTEwMjEsOCArMTQxNyw5IEBACiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQ0NDoKICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDJCOgogICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0MUI6Ci0gICAgICAgIGluZm8tPmZyYWdfcHJvZyA9Ci0gICAgICAgICAgICBnX3N0cmR1cF9wcmludGYgKGZyYWdfUExBTkFSX1lVVl90b19SR0IsIHBpeGVsX29yZGVyWzBdLAorICAgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9QTEFOQVJfWVVWX3RvX1JHQjsKKyAgICAgICAgaW5mby0+ZnJhZ19ib2R5ID0KKyAgICAgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksIHBpeGVsX29yZGVyWzBdLAogICAgICAgICAgICAgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSk7CiAgICAgICAgIGluZm8tPmluX25fdGV4dHVyZXMgPSAzOwogICAgICAgICBpbmZvLT5zaGFkZXJfdGV4X25hbWVzWzBdID0gIll0ZXgiOwpAQCAtMTAzMCw4ICsxNDI3LDkgQEAKICAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1syXSA9ICJWdGV4IjsKICAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKLSAgICAgICAgaW5mby0+ZnJhZ19wcm9nID0KLSAgICAgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19QTEFOQVJfWVVWX3RvX1JHQiwgcGl4ZWxfb3JkZXJbMF0sCisgICAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1BMQU5BUl9ZVVZfdG9fUkdCOworICAgICAgICBpbmZvLT5mcmFnX2JvZHkgPQorICAgICAgICAgICAgZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgcGl4ZWxfb3JkZXJbMF0sCiAgICAgICAgICAgICBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdKTsKICAgICAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDM7CiAgICAgICAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAiWXRleCI7CkBAIC0xMDQxLDE3ICsxNDM5LDMwIEBACiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKICAgICAgIHsKICAgICAgICAgY2hhciB1dl92YWwgPSB0ZXh0dXJlX3JnID8gJ2cnIDogJ2EnOwotICAgICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfWVVZMl9VWVZZX3RvX1JHQiwgJ3InLCB1dl92YWwsCisgICAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1lVWTJfVVlWWV90b19SR0I7CisgICAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksICdyJywgdXZfdmFsLAogICAgICAgICAgICAgdXZfdmFsLCAnZycsICdhJywgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwKICAgICAgICAgICAgIHBpeGVsX29yZGVyWzNdKTsKICAgICAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDE7CiAgICAgICAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAiWXRleCI7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQorICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1VZVlk6CisgICAgICB7CisgICAgICAgIGNoYXIgeV92YWwgPSB0ZXh0dXJlX3JnID8gJ2cnIDogJ2EnOworICAgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9ZVVkyX1VZVllfdG9fUkdCOworICAgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCB5X3ZhbCwgJ2cnLAorICAgICAgICAgICAgJ2cnLCAncicsICdiJywgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwKKyAgICAgICAgICAgIHBpeGVsX29yZGVyWzNdKTsKKyAgICAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDE7CisgICAgICAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAiWXRleCI7CisgICAgICAgIGJyZWFrOworICAgICAgfQogICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6CiAgICAgICB7CiAgICAgICAgIGNoYXIgdmFsMiA9IHRleHR1cmVfcmcgPyAnZycgOiAnYSc7Ci0gICAgICAgIGluZm8tPmZyYWdfcHJvZyA9IGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19OVjEyX05WMjFfdG9fUkdCLCAncicsIHZhbDIsCisgICAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX05WMTJfTlYyMV90b19SR0I7CisgICAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksICdyJywgdmFsMiwKICAgICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdKTsKICAgICAgICAgaW5mby0+aW5fbl90ZXh0dXJlcyA9IDI7CiAgICAgICAgIGluZm8tPnNoYWRlcl90ZXhfbmFtZXNbMF0gPSAiWXRleCI7CkBAIC0xMDYxLDIzICsxNDcyLDE0IEBACiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYyMToKICAgICAgIHsKICAgICAgICAgY2hhciB2YWwyID0gdGV4dHVyZV9yZyA/ICdnJyA6ICdhJzsKLSAgICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX05WMTJfTlYyMV90b19SR0IsIHZhbDIsICdyJywKKyAgICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfTlYxMl9OVjIxX3RvX1JHQjsKKyAgICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgdmFsMiwgJ3InLAogICAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgICBpbmZvLT5pbl9uX3RleHR1cmVzID0gMjsKICAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1swXSA9ICJZdGV4IjsKICAgICAgICAgaW5mby0+c2hhZGVyX3RleF9uYW1lc1sxXSA9ICJVVnRleCI7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1VZVlk6Ci0gICAgICB7Ci0gICAgICAgIGNoYXIgeV92YWwgPSB0ZXh0dXJlX3JnID8gJ2cnIDogJ2EnOwotICAgICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfWVVZMl9VWVZZX3RvX1JHQiwgeV92YWwsICdnJywKLSAgICAgICAgICAgICdnJywgJ3InLCAnYicsIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sCi0gICAgICAgICAgICBwaXhlbF9vcmRlclszXSk7Ci0gICAgICAgIGluZm8tPmluX25fdGV4dHVyZXMgPSAxOwotICAgICAgICBpbmZvLT5zaGFkZXJfdGV4X25hbWVzWzBdID0gIll0ZXgiOwotICAgICAgICBicmVhazsKLSAgICAgIH0KICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIGJyZWFrOwogICAgIH0KQEAgLTExMTgsNyArMTUyMCw4IEBACiAgIHN3aXRjaCAob3V0X2Zvcm1hdCkgewogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9BWVVWOgogICAgICAgYWxwaGEgPSBfaXNfUkdCeCAoaW5fZm9ybWF0KSA/ICIxLjAiIDogInRleGVsLmEiOwotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JHQl90b19BWVVWLCBwaXhlbF9vcmRlclswXSwKKyAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1JHQl90b19BWVVWOworICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwgcGl4ZWxfb3JkZXJbMF0sCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSwgYWxwaGEpOwogICAgICAgaW5mby0+b3V0X25fdGV4dHVyZXMgPSAxOwogICAgICAgYnJlYWs7CkBAIC0xMTI3LDcgKzE1MzAsOCBAQAogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDQ0OgogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDJCOgogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZNDFCOgotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JHQl90b19QTEFOQVJfWVVWLAorICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUkdCX3RvX1BMQU5BUl9ZVVY7CisgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LAogICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdLAogICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdKTsKICAgICAgIGluZm8tPm91dF9uX3RleHR1cmVzID0gMzsKQEAgLTExNDQsMzEgKzE1NDgsMzUgQEAKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9ZVVkyOgotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JHQl90b19ZVVkyX1VZVlksCisgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9SR0JfdG9fWVVZMl9VWVZZOworICAgICAgaW5mby0+ZnJhZ19ib2R5ID0gZ19zdHJkdXBfcHJpbnRmIChpbmZvLT50ZW1wbC0+Ym9keSwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSwKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSwKLSAgICAgICAgICAieSIsICJ1IiwgInkiLCAidiIpOworICAgICAgICAgICd4JywgJ3knLCAneCcsICd6Jyk7CiAgICAgICBpbmZvLT5vdXRfbl90ZXh0dXJlcyA9IDE7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKLSAgICAgIGluZm8tPmZyYWdfcHJvZyA9IGdfc3RyZHVwX3ByaW50ZiAoZnJhZ19SR0JfdG9fWVVZMl9VWVZZLAorICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfUkdCX3RvX1lVWTJfVVlWWSwKKyAgICAgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LAogICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdLAogICAgICAgICAgIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclsxXSwgcGl4ZWxfb3JkZXJbMl0sIHBpeGVsX29yZGVyWzNdLAotICAgICAgICAgICJ1IiwgInkiLCAidiIsICJ5Iik7CisgICAgICAgICAgJ3knLCAneCcsICd6JywgJ3gnKTsKICAgICAgIGluZm8tPm91dF9uX3RleHR1cmVzID0gMTsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JHQl90b19OVjEyX05WMjEsCisgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9SR0JfdG9fTlYxMl9OVjIxLAorICAgICAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10sCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10sCi0gICAgICAgICAgJ3UnLCAndicpOworICAgICAgICAgICd5JywgJ3onKTsKICAgICAgIGluZm8tPm91dF9uX3RleHR1cmVzID0gMjsKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjIxOgotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JHQl90b19OVjEyX05WMjEsCisgICAgICBpbmZvLT50ZW1wbCA9ICZ0ZW1wbF9SR0JfdG9fTlYxMl9OVjIxLAorICAgICAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10sCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10sCi0gICAgICAgICAgJ3YnLCAndScpOworICAgICAgICAgICd6JywgJ3knKTsKICAgICAgIGluZm8tPm91dF9uX3RleHR1cmVzID0gMjsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xMjEwLDcgKzE2MTgsOCBAQAogCiAgIHN3aXRjaCAoR1NUX1ZJREVPX0lORk9fRk9STUFUICgmY29udmVydC0+b3V0X2luZm8pKSB7CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVk4OgotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JFT1JERVIsIGFscGhhID8gYWxwaGEgOiAiIiwKKyAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1JFT1JERVI7CisgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCBhbHBoYSA/IGFscGhhIDogIiIsCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKQEAgLTEyNDIsMjAgKzE2NTEsMjMgQEAKIAogICBzd2l0Y2ggKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmNvbnZlcnQtPmluX2luZm8pKSB7CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVk4OgotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX1JFT1JERVIsICIiLCBwaXhlbF9vcmRlclswXSwKKyAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX1JFT1JERVI7CisgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCAiIiwgcGl4ZWxfb3JkZXJbMF0sCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzBdLCBwaXhlbF9vcmRlclszXSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTE2X0xFOgogICAgIHsKICAgICAgIGNoYXIgdmFsMiA9IHRleHR1cmVfcmcgPyAnZycgOiAnYSc7Ci0gICAgICBpbmZvLT5mcmFnX3Byb2cgPSBnX3N0cmR1cF9wcmludGYgKGZyYWdfQ09NUE9TRSwgdmFsMiwgJ3InLAorICAgICAgaW5mby0+dGVtcGwgPSAmdGVtcGxfQ09NUE9TRTsKKyAgICAgIGluZm8tPmZyYWdfYm9keSA9IGdfc3RyZHVwX3ByaW50ZiAoaW5mby0+dGVtcGwtPmJvZHksIHZhbDIsICdyJywKICAgICAgICAgICBwaXhlbF9vcmRlclswXSwgcGl4ZWxfb3JkZXJbMV0sIHBpeGVsX29yZGVyWzJdLCBwaXhlbF9vcmRlclszXSk7CiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9CRToKICAgICB7CiAgICAgICBjaGFyIHZhbDIgPSB0ZXh0dXJlX3JnID8gJ2cnIDogJ2EnOwotICAgICAgaW5mby0+ZnJhZ19wcm9nID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnX0NPTVBPU0UsICdyJywgdmFsMiwKKyAgICAgIGluZm8tPnRlbXBsID0gJnRlbXBsX0NPTVBPU0U7CisgICAgICBpbmZvLT5mcmFnX2JvZHkgPSBnX3N0cmR1cF9wcmludGYgKGluZm8tPnRlbXBsLT5ib2R5LCAncicsIHZhbDIsCiAgICAgICAgICAgcGl4ZWxfb3JkZXJbMF0sIHBpeGVsX29yZGVyWzFdLCBwaXhlbF9vcmRlclsyXSwgcGl4ZWxfb3JkZXJbM10pOwogICAgICAgYnJlYWs7CiAgICAgfQpAQCAtMTI5OCwxMiArMTcxMCwzMDkgQEAKICAgZ2wtPkRpc2FibGVWZXJ0ZXhBdHRyaWJBcnJheSAoY29udmVydC0+cHJpdi0+YXR0cl90ZXh0dXJlKTsKIH0KIAorc3RhdGljIGdjaGFyICoKK19tYW5nbGVfdGV4dHVyZV9hY2Nlc3MgKGNvbnN0IGdjaGFyICogc3RyLCBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbSwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdG8sIEdzdEdMQVBJIGdsX2FwaSkKK3sKKyAgY29uc3QgZ2NoYXIgKmZyb21fc3RyID0gTlVMTCwgKnRvX3N0ciA9IE5VTEw7CisgIGdjaGFyICpyZXQsICp0bXA7CisgIGdjaGFyICpyZWdleF9maW5kOworICBHUmVnZXggKnJlZ2V4OworCisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkKKyAgICBmcm9tX3N0ciA9ICJ0ZXh0dXJlMkQiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIGZyb21fc3RyID0gInRleHR1cmUyRFJlY3QiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKQorICAgIGZyb21fc3RyID0gInRleHR1cmUyRCI7CisKKyAgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykgeworICAgIHRvX3N0ciA9ICJ0ZXh0dXJlIjsKKyAgfSBlbHNlIHsKKyAgICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKQorICAgICAgdG9fc3RyID0gInRleHR1cmUyRCI7CisgICAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgICB0b19zdHIgPSAidGV4dHVyZTJEUmVjdCI7CisgICAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgICB0b19zdHIgPSAidGV4dHVyZTJEIjsKKyAgfQorCisgIC8qIGZvbGxvd2VkIGJ5IGFueSBhbW91bnQgb2Ygd2hpdGVzcGFjZSB0aGVuIGEgYnJhY2tldCAqLworICByZWdleF9maW5kID0gZ19zdHJkdXBfcHJpbnRmICgiJXMoPz1cXHMqXFwoKSIsIGZyb21fc3RyKTsKKyAgcmVnZXggPSBnX3JlZ2V4X25ldyAocmVnZXhfZmluZCwgMCwgMCwgTlVMTCk7CisgIHRtcCA9IGdfcmVnZXhfcmVwbGFjZV9saXRlcmFsIChyZWdleCwgc3RyLCAtMSwgMCwgdG9fc3RyLCAwLCBOVUxMKTsKKyAgZ19mcmVlIChyZWdleF9maW5kKTsKKyAgZ19yZWdleF91bnJlZiAocmVnZXgpOworCisgIGlmICh0bXApIHsKKyAgICByZXQgPSB0bXA7CisgIH0gZWxzZSB7CisgICAgR1NUX0ZJWE1FICgiQ291bGRuJ3QgbWFuZ2xlIHRleHR1cmUgYWNjZXNzIHN1Y2Nlc3NmdWxseSBmcm9tICVzIHRvICVzIiwKKyAgICAgICAgZnJvbV9zdHIsIHRvX3N0cik7CisgICAgcmV0ID0gZ19zdHJkdXAgKHN0cik7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2NoYXIgKgorX21hbmdsZV9zYW1wbGVyX3R5cGUgKGNvbnN0IGdjaGFyICogc3RyLCBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbSwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdG8pCit7CisgIGNvbnN0IGdjaGFyICpmcm9tX3N0ciA9IE5VTEwsICp0b19zdHIgPSBOVUxMOworICBnY2hhciAqcmV0LCAqdG1wOworICBnY2hhciAqcmVnZXhfZmluZDsKKyAgR1JlZ2V4ICpyZWdleDsKKworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpCisgICAgZnJvbV9zdHIgPSAic2FtcGxlcjJEIjsKKyAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkKKyAgICBmcm9tX3N0ciA9ICJzYW1wbGVyMkRSZWN0IjsKKyAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICBmcm9tX3N0ciA9ICJzYW1wbGVyRXh0ZXJuYWxPRVMiOworCisgIGlmICh0byA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpCisgICAgdG9fc3RyID0gInNhbXBsZXIyRCI7CisgIGlmICh0byA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIHRvX3N0ciA9ICJzYW1wbGVyMkRSZWN0IjsKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgdG9fc3RyID0gInNhbXBsZXJFeHRlcm5hbE9FUyI7CisKKyAgLyogZm9sbG93ZWQgYnkgc29tZSB3aGl0ZXNwYWNlICAqLworICByZWdleF9maW5kID0gZ19zdHJkdXBfcHJpbnRmICgiJXMoPz1cXHMpIiwgZnJvbV9zdHIpOworICByZWdleCA9IGdfcmVnZXhfbmV3IChyZWdleF9maW5kLCAwLCAwLCBOVUxMKTsKKyAgdG1wID0gZ19yZWdleF9yZXBsYWNlX2xpdGVyYWwgKHJlZ2V4LCBzdHIsIC0xLCAwLCB0b19zdHIsIDAsIE5VTEwpOworICBnX2ZyZWUgKHJlZ2V4X2ZpbmQpOworICBnX3JlZ2V4X3VucmVmIChyZWdleCk7CisKKyAgaWYgKHRtcCkgeworICAgIHJldCA9IHRtcDsKKyAgfSBlbHNlIHsKKyAgICBHU1RfRklYTUUgKCJDb3VsZG4ndCBtYW5nbGUgc2FtcGxlciB0eXBlIHN1Y2Nlc3NmdWxseSBmcm9tICVzIHRvICVzIiwKKyAgICAgICAgZnJvbV9zdHIsIHRvX3N0cik7CisgICAgcmV0ID0gZ19zdHJkdXAgKHN0cik7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2NoYXIgKgorX21hbmdsZV92YXJ5aW5nX2F0dHJpYnV0ZSAoY29uc3QgZ2NoYXIgKiBzdHIsIGd1aW50IHNoYWRlcl90eXBlLAorICAgIEdzdEdMQVBJIGdsX2FwaSkKK3sKKyAgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykgeworICAgIGlmIChzaGFkZXJfdHlwZSA9PSBHTF9WRVJURVhfU0hBREVSKSB7CisgICAgICBnY2hhciAqdG1wLCAqdG1wMjsKKyAgICAgIEdSZWdleCAqcmVnZXg7CisKKyAgICAgIC8qIGZvbGxvd2VkIGJ5IHNvbWUgd2hpdGVzcGFjZSAgKi8KKyAgICAgIHJlZ2V4ID0gZ19yZWdleF9uZXcgKCJ2YXJ5aW5nKD89XFxzKSIsIDAsIDAsIE5VTEwpOworICAgICAgdG1wID0gZ19yZWdleF9yZXBsYWNlX2xpdGVyYWwgKHJlZ2V4LCBzdHIsIC0xLCAwLCAib3V0IiwgMCwgTlVMTCk7CisgICAgICBnX3JlZ2V4X3VucmVmIChyZWdleCk7CisKKyAgICAgIC8qIGZvbGxvd2VkIGJ5IHNvbWUgd2hpdGVzcGFjZSAgKi8KKyAgICAgIHJlZ2V4ID0gZ19yZWdleF9uZXcgKCJhdHRyaWJ1dGUoPz1cXHMpIiwgMCwgMCwgTlVMTCk7CisgICAgICB0bXAyID0gZ19yZWdleF9yZXBsYWNlX2xpdGVyYWwgKHJlZ2V4LCB0bXAsIC0xLCAwLCAiaW4iLCAwLCBOVUxMKTsKKyAgICAgIGdfcmVnZXhfdW5yZWYgKHJlZ2V4KTsKKworICAgICAgZ19mcmVlICh0bXApOworICAgICAgcmV0dXJuIHRtcDI7CisgICAgfSBlbHNlIGlmIChzaGFkZXJfdHlwZSA9PSBHTF9GUkFHTUVOVF9TSEFERVIpIHsKKyAgICAgIGdjaGFyICp0bXA7CisgICAgICBHUmVnZXggKnJlZ2V4OworCisgICAgICAvKiBmb2xsb3dlZCBieSBzb21lIHdoaXRlc3BhY2UgICovCisgICAgICByZWdleCA9IGdfcmVnZXhfbmV3ICgidmFyeWluZyg/PVxccykiLCAwLCAwLCBOVUxMKTsKKyAgICAgIHRtcCA9IGdfcmVnZXhfcmVwbGFjZV9saXRlcmFsIChyZWdleCwgc3RyLCAtMSwgMCwgImluIiwgMCwgTlVMTCk7CisgICAgICBnX3JlZ2V4X3VucmVmIChyZWdleCk7CisKKyAgICAgIHJldHVybiB0bXA7CisgICAgfQorICB9CisgIHJldHVybiBnX3N0cmR1cCAoc3RyKTsKK30KKworc3RhdGljIGdjaGFyICoKK19tYW5nbGVfZnJhZ19jb2xvciAoY29uc3QgZ2NoYXIgKiBzdHIpCit7CisgIEdSZWdleCAqcmVnZXg7CisgIGdjaGFyICpyZXQ7CisKKyAgcmVnZXggPSBnX3JlZ2V4X25ldyAoImdsX0ZyYWdDb2xvciIsIDAsIDAsIE5VTEwpOworICByZXQgPSBnX3JlZ2V4X3JlcGxhY2VfbGl0ZXJhbCAocmVnZXgsIHN0ciwgLTEsIDAsICJmcmFnQ29sb3IiLCAwLCBOVUxMKTsKKyAgZ19yZWdleF91bnJlZiAocmVnZXgpOworCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitfbWFuZ2xlX3ZlcnNpb25fcHJvZmlsZV9mcm9tX2dsX2FwaSAoR3N0R0xBUEkgZ2xfYXBpLCBHc3RHTFNMVmVyc2lvbiAqIHZlcnNpb24sCisgICAgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKQoreworICBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSB7CisgICAgKnZlcnNpb24gPSBHU1RfR0xTTF9WRVJTSU9OXzE1MDsKKyAgICAqcHJvZmlsZSA9IEdTVF9HTFNMX1BST0ZJTEVfTk9ORTsKKyAgfSBlbHNlIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyKSB7CisgICAgKnZlcnNpb24gPSBHU1RfR0xTTF9WRVJTSU9OXzEwMDsKKyAgICAqcHJvZmlsZSA9IEdTVF9HTFNMX1BST0ZJTEVfRVM7CisgIH0gZWxzZSBpZiAoZ2xfYXBpICYgR1NUX0dMX0FQSV9PUEVOR0wpIHsKKyAgICAqdmVyc2lvbiA9IEdTVF9HTFNMX1ZFUlNJT05fMTEwOworICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZOworICB9Cit9CisKK3N0YXRpYyBnY2hhciAqCitfbWFuZ2xlX3NoYWRlciAoY29uc3QgZ2NoYXIgKiBzdHIsIGd1aW50IHNoYWRlcl90eXBlLCBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbSwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdG8sIEdzdEdMQVBJIGdsX2FwaSwgR3N0R0xTTFZlcnNpb24gKiB2ZXJzaW9uLAorICAgIEdzdEdMU0xQcm9maWxlICogcHJvZmlsZSkKK3sKKyAgZ2NoYXIgKnRtcCwgKnRtcDI7CisKKyAgdG1wID0gX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAoc3RyLCBmcm9tLCB0bywgZ2xfYXBpKTsKKyAgdG1wMiA9IF9tYW5nbGVfc2FtcGxlcl90eXBlICh0bXAsIGZyb20sIHRvKTsKKyAgZ19mcmVlICh0bXApOworICB0bXAgPSBfbWFuZ2xlX3ZhcnlpbmdfYXR0cmlidXRlICh0bXAyLCBzaGFkZXJfdHlwZSwgZ2xfYXBpKTsKKyAgZ19mcmVlICh0bXAyKTsKKyAgaWYgKHNoYWRlcl90eXBlID09IEdMX0ZSQUdNRU5UX1NIQURFUiAmJiBnbF9hcGkgJiBHU1RfR0xfQVBJX09QRU5HTDMpIHsKKyAgICB0bXAyID0gX21hbmdsZV9mcmFnX2NvbG9yICh0bXApOworICAgIGdfZnJlZSAodG1wKTsKKyAgICB0bXAgPSB0bXAyOworICB9CisgIF9tYW5nbGVfdmVyc2lvbl9wcm9maWxlX2Zyb21fZ2xfYXBpIChnbF9hcGksIHZlcnNpb24sIHByb2ZpbGUpOworICByZXR1cm4gdG1wOworfQorCitzdGF0aWMgR3N0R0xTaGFkZXIgKgorX2NyZWF0ZV9zaGFkZXIgKEdzdEdMQ29sb3JDb252ZXJ0ICogY29udmVydCkKK3sKKyAgc3RydWN0IENvbnZlcnRJbmZvICppbmZvID0gJmNvbnZlcnQtPnByaXYtPmNvbnZlcnRfaW5mbzsKKyAgR1N0cmluZyAqc3RyID0gZ19zdHJpbmdfbmV3IChOVUxMKTsKKyAgR3N0R0xTaGFkZXIgKnJldCA9IE5VTEw7CisgIEdzdEdMU0xTdGFnZSAqc3RhZ2U7CisgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGU7CisgIGdjaGFyICp2ZXJzaW9uX3N0ciwgKnRtcCwgKnRtcDE7CisgIGNvbnN0IGdjaGFyICpzdHJpbmdzWzJdOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAgR3N0R0xBUEkgZ2xfYXBpOworICBpbnQgaTsKKworICBnbF9hcGkgPSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb252ZXJ0LT5jb250ZXh0KTsKKworICByZXQgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY29udmVydC0+Y29udGV4dCk7CisKKyAgdG1wID0KKyAgICAgIF9tYW5nbGVfc2hhZGVyICh0ZXh0X3ZlcnRleF9zaGFkZXIsIEdMX1ZFUlRFWF9TSEFERVIsIGluZm8tPnRlbXBsLT50YXJnZXQsCisgICAgICBjb252ZXJ0LT5wcml2LT5mcm9tX3RleHR1cmVfdGFyZ2V0LCBnbF9hcGksICZ2ZXJzaW9uLCAmcHJvZmlsZSk7CisKKyAgdG1wMSA9IGdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV90b19zdHJpbmcgKHZlcnNpb24sIHByb2ZpbGUpOworICB2ZXJzaW9uX3N0ciA9IGdfc3RyZHVwX3ByaW50ZiAoIiN2ZXJzaW9uICVzXG4iLCB0bXAxKTsKKyAgZ19mcmVlICh0bXAxKTsKKworICBzdHJpbmdzWzBdID0gdmVyc2lvbl9zdHI7CisgIHN0cmluZ3NbMV0gPSB0bXA7CisgIGlmICghKHN0YWdlID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5ncyAoY29udmVydC0+Y29udGV4dCwKKyAgICAgICAgICAgICAgR0xfVkVSVEVYX1NIQURFUiwgdmVyc2lvbiwgcHJvZmlsZSwgMiwgc3RyaW5ncykpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoY29udmVydCwgIkZhaWxlZCB0byBjcmVhdGUgdmVydGV4IHN0YWdlIik7CisgICAgZ19mcmVlICh2ZXJzaW9uX3N0cik7CisgICAgZ19mcmVlICh0bXApOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHJldCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgZ19mcmVlICh0bXApOworCisgIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX2F0dGFjaF9zdGFnZSAocmV0LCBzdGFnZSwgJmVycm9yKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnZlcnQsICJGYWlsZWQgdG8gY29tcGlsZSB2ZXJ0ZXggc2hhZGVyICVzIiwKKyAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgZ19mcmVlICh2ZXJzaW9uX3N0cik7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RhZ2UpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHJldCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBpZiAoaW5mby0+dGVtcGwtPmV4dGVuc2lvbnMpCisgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsIGluZm8tPnRlbXBsLT5leHRlbnNpb25zKTsKKworICBpZiAoY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTCisgICAgICAmJiBpbmZvLT50ZW1wbC0+dGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsIGdsc2xfT0VTX2V4dGVuc2lvbl9zdHJpbmcpOworCisgIGlmIChpbmZvLT50ZW1wbC0+dW5pZm9ybXMpCisgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsIGluZm8tPnRlbXBsLT51bmlmb3Jtcyk7CisKKyAgaWYgKGdsX2FwaSAmIEdTVF9HTF9BUElfT1BFTkdMMykgeworICAgIGdfc3RyaW5nX2FwcGVuZF9jIChzdHIsICdcbicpOworICAgIGdfc3RyaW5nX2FwcGVuZCAoc3RyLCAib3V0IHZlYzQgZnJhZ0NvbG9yO1xuIik7CisgIH0KKworICBmb3IgKGkgPSAwOyBpIDwgTUFYX0ZVTkNUSU9OUzsgaSsrKSB7CisgICAgaWYgKGluZm8tPnRlbXBsLT5mdW5jdGlvbnNbaV0gPT0gTlVMTCkKKyAgICAgIGJyZWFrOworCisgICAgZ19zdHJpbmdfYXBwZW5kX2MgKHN0ciwgJ1xuJyk7CisgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsIGluZm8tPnRlbXBsLT5mdW5jdGlvbnNbaV0pOworICAgIGdfc3RyaW5nX2FwcGVuZF9jIChzdHIsICdcbicpOworICB9CisKKyAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJcbnZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xudm9pZCBtYWluICh2b2lkKSB7XG4iKTsKKyAgaWYgKGluZm8tPmZyYWdfYm9keSkgeworICAgIGdfc3RyaW5nX2FwcGVuZCAoc3RyLCAidmVjMiB0ZXhjb29yZDtcbiIpOworICAgIGlmIChjb252ZXJ0LT5wcml2LT5mcm9tX3RleHR1cmVfdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUKKyAgICAgICAgJiYgaW5mby0+dGVtcGwtPnRhcmdldCAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKSB7CisgICAgICBnX3N0cmluZ19hcHBlbmQgKHN0ciwgInRleGNvb3JkID0gdl90ZXhjb29yZCAqIHZlYzIgKHdpZHRoLCBoZWlnaHQpO1xuIik7CisgICAgfSBlbHNlIHsKKyAgICAgIGdfc3RyaW5nX2FwcGVuZCAoc3RyLCAidGV4Y29vcmQgPSB2X3RleGNvb3JkO1xuIik7CisgICAgfQorCisgICAgZ19zdHJpbmdfYXBwZW5kIChzdHIsIGluZm8tPmZyYWdfYm9keSk7CisgIH0KKyAgZ19zdHJpbmdfYXBwZW5kIChzdHIsICJcbn0iKTsKKyAgdG1wID0gZ19zdHJpbmdfZnJlZSAoc3RyLCBGQUxTRSk7CisgIGluZm8tPmZyYWdfcHJvZyA9IF9tYW5nbGVfc2hhZGVyICh0bXAsIEdMX0ZSQUdNRU5UX1NIQURFUiwKKyAgICAgIGluZm8tPnRlbXBsLT50YXJnZXQsIGNvbnZlcnQtPnByaXYtPmZyb21fdGV4dHVyZV90YXJnZXQsIGdsX2FwaSwKKyAgICAgICZ2ZXJzaW9uLCAmcHJvZmlsZSk7CisgIGdfZnJlZSAodG1wKTsKKworICBzdHJpbmdzWzFdID0gaW5mby0+ZnJhZ19wcm9nOworICBpZiAoIShzdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZ3MgKGNvbnZlcnQtPmNvbnRleHQsCisgICAgICAgICAgICAgIEdMX0ZSQUdNRU5UX1NIQURFUiwgdmVyc2lvbiwgcHJvZmlsZSwgMiwgc3RyaW5ncykpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoY29udmVydCwgIkZhaWxlZCB0byBjcmVhdGUgZnJhZ21lbnQgc3RhZ2UiKTsKKyAgICBnX2ZyZWUgKGluZm8tPmZyYWdfcHJvZyk7CisgICAgaW5mby0+ZnJhZ19wcm9nID0gTlVMTDsKKyAgICBnX2ZyZWUgKHZlcnNpb25fc3RyKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChyZXQpOworICAgIHJldHVybiBOVUxMOworICB9CisgIGdfZnJlZSAodmVyc2lvbl9zdHIpOworICBpZiAoIWdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2UgKHJldCwgc3RhZ2UsICZlcnJvcikpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIGNvbXBpbGUgZnJhZ21lbnQgc2hhZGVyICVzIiwKKyAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CisgICAgZ19mcmVlIChpbmZvLT5mcmFnX3Byb2cpOworICAgIGluZm8tPmZyYWdfcHJvZyA9IE5VTEw7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RhZ2UpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHJldCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBpZiAoIWdzdF9nbF9zaGFkZXJfbGluayAocmV0LCAmZXJyb3IpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoY29udmVydCwgIkZhaWxlZCB0byBsaW5rIHNoYWRlciAlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICAgIGdfZnJlZSAoaW5mby0+ZnJhZ19wcm9nKTsKKyAgICBpbmZvLT5mcmFnX3Byb2cgPSBOVUxMOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHJldCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCiAvKiBDYWxsZWQgaW4gdGhlIGdsIHRocmVhZCAqLwogc3RhdGljIGdib29sZWFuCiBfaW5pdF9jb252ZXJ0IChHc3RHTENvbG9yQ29udmVydCAqIGNvbnZlcnQpCiB7CiAgIEdzdEdMRnVuY3MgKmdsOwotICBnYm9vbGVhbiByZXM7CiAgIHN0cnVjdCBDb252ZXJ0SW5mbyAqaW5mbyA9ICZjb252ZXJ0LT5wcml2LT5jb252ZXJ0X2luZm87CiAgIGdpbnQgaTsKIApAQCAtMTM1MiwxMyArMjA2MSwxMSBAQAogICAgIH0KICAgfQogCi0gIGlmICghaW5mby0+ZnJhZ19wcm9nIHx8IGluZm8tPmluX25fdGV4dHVyZXMgPT0gMCB8fCBpbmZvLT5vdXRfbl90ZXh0dXJlcyA9PSAwKQorICBpZiAoIWluZm8tPmZyYWdfYm9keSB8fCBpbmZvLT5pbl9uX3RleHR1cmVzID09IDAgfHwgaW5mby0+b3V0X25fdGV4dHVyZXMgPT0gMCkKICAgICBnb3RvIHVuaGFuZGxlZF9mb3JtYXQ7CiAKLSAgLyogbXVsdGlwbGUgZHJhdyB0YXJnZXRzIG5vdCBzdXBwb3J0ZWQgb24gR0xFUzIuLi55ZXQgKi8KLSAgaWYgKGluZm8tPm91dF9uX3RleHR1cmVzID4gMSAmJiAoIWdsLT5EcmF3QnVmZmVycyB8fAotICAgICAgICAgIFVTSU5HX0dMRVMyIChjb252ZXJ0LT5jb250ZXh0KSkpIHsKLSAgICBnX2ZyZWUgKGluZm8tPmZyYWdfcHJvZyk7CisgIC8qIG11bHRpcGxlIGRyYXcgdGFyZ2V0cyBub3Qgc3VwcG9ydGVkIG9uIEdMRVMyLi4uICovCisgIGlmIChpbmZvLT5vdXRfbl90ZXh0dXJlcyA+IDEgJiYgIWdsLT5EcmF3QnVmZmVycykgewogICAgIEdTVF9FUlJPUiAoIkNvbnZlcnNpb24gcmVxdWlyZXMgb3V0cHV0IHRvIG11bHRpcGxlIGRyYXcgYnVmZmVycyIpOwogICAgIGdvdG8gaW5jb21wYXRpYmxlX2FwaTsKICAgfQpAQCAtMTM2OCwxNiArMjA3NSwxMSBAQAogICAgICAgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmNvbnZlcnQtPm91dF9pbmZvKSA9PSBHU1RfVklERU9fRk9STUFUX1lVWTIgfHwKICAgICAgICAgICBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZjb252ZXJ0LT5vdXRfaW5mbykgPT0KICAgICAgICAgICBHU1RfVklERU9fRk9STUFUX1VZVlkpKSB7Ci0gICAgZ19mcmVlIChpbmZvLT5mcmFnX3Byb2cpOwogICAgIEdTVF9FUlJPUiAoIkNvbnZlcnNpb24gcmVxdWlyZXMgcmVhZGluZyB3aXRoIGFuIHVuc3VwcG9ydGVkIGZvcm1hdCIpOwogICAgIGdvdG8gaW5jb21wYXRpYmxlX2FwaTsKICAgfQogCi0gIHJlcyA9Ci0gICAgICBnc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyIChjb252ZXJ0LT5jb250ZXh0LCB0ZXh0X3ZlcnRleF9zaGFkZXIsCi0gICAgICBpbmZvLT5mcmFnX3Byb2csICZjb252ZXJ0LT5zaGFkZXIpOwotICBnX2ZyZWUgKGluZm8tPmZyYWdfcHJvZyk7Ci0gIGlmICghcmVzKQorICBpZiAoIShjb252ZXJ0LT5zaGFkZXIgPSBfY3JlYXRlX3NoYWRlciAoY29udmVydCkpKQogICAgIGdvdG8gZXJyb3I7CiAKICAgY29udmVydC0+cHJpdi0+YXR0cl9wb3NpdGlvbiA9CkBAIC0xNDEwLDYgKzIxMTIsMTYgQEAKICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoY29udmVydC0+c2hhZGVyLCAiaGVpZ2h0IiwKICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmNvbnZlcnQtPmluX2luZm8pKTsKIAorICBpZiAoY29udmVydC0+cHJpdi0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKSB7CisgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xZiAoY29udmVydC0+c2hhZGVyLCAicG9mZnNldF94IiwgMS4pOworICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGNvbnZlcnQtPnNoYWRlciwgInBvZmZzZXRfeSIsIDEuKTsKKyAgfSBlbHNlIHsKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChjb252ZXJ0LT5zaGFkZXIsICJwb2Zmc2V0X3giLAorICAgICAgICAxLiAvIChnZmxvYXQpIEdTVF9WSURFT19JTkZPX1dJRFRIICgmY29udmVydC0+aW5faW5mbykpOworICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKGNvbnZlcnQtPnNoYWRlciwgInBvZmZzZXRfeSIsCisgICAgICAgIDEuIC8gKGdmbG9hdCkgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmY29udmVydC0+aW5faW5mbykpOworICB9CisKICAgaWYgKGluZm8tPmNocm9tYV9zYW1wbGluZ1swXSA+IDAuMGYgJiYgaW5mby0+Y2hyb21hX3NhbXBsaW5nWzFdID4gMC4wZikgewogICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmZ2IChjb252ZXJ0LT5zaGFkZXIsICJjaHJvbWFfc2FtcGxpbmciLCAxLAogICAgICAgICBpbmZvLT5jaHJvbWFfc2FtcGxpbmcpOwpAQCAtMTYxMiwxNSArMjMyNCwyNyBAQAogICAgICAgLyogTHVtaW5hbmNlIGZvcm1hdHMgYXJlIG5vdCBjb2xvciByZW5kZXJhYmxlICovCiAgICAgICAvKiByZW5kZXJlcmluZyB0byBhIGZyYW1lYnVmZmVyIG9ubHkgcmVuZGVycyB0aGUgaW50ZXJzZWN0aW9uIG9mIGFsbAogICAgICAgICogdGhlIGF0dGFjaG1lbnRzIGkuZS4gdGhlIHNtYWxsZXN0IGF0dGFjaG1lbnQgc2l6ZSAqLwotICAgICAgR3N0VmlkZW9JbmZvIHRlbXBfaW5mbzsKKyAgICAgIGlmICghY29udmVydC0+cHJpdi0+b3V0X3RleFtqXSkgeworICAgICAgICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworICAgICAgICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jYXRvcjsKKyAgICAgICAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7CisgICAgICAgIEdzdFZpZGVvSW5mbyB0ZW1wX2luZm87CiAKLSAgICAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZ0ZW1wX2luZm8sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgb3V0X3dpZHRoLAotICAgICAgICAgIG91dF9oZWlnaHQpOworICAgICAgICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmdGVtcF9pbmZvLCBHU1RfVklERU9fRk9STUFUX1JHQkEsIG91dF93aWR0aCwKKyAgICAgICAgICAgIG91dF9oZWlnaHQpOwogCi0gICAgICBpZiAoIWNvbnZlcnQtPnByaXYtPm91dF90ZXhbal0pCisgICAgICAgIGFsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZCAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSk7CisgICAgICAgIGJhc2VfbWVtX2FsbG9jYXRvciA9IEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGFsbG9jYXRvcik7CisgICAgICAgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKGNvbnRleHQsIE5VTEwsICZ0ZW1wX2luZm8sCisgICAgICAgICAgICAwLCBOVUxMLCBjb252ZXJ0LT5wcml2LT50b190ZXh0dXJlX3RhcmdldCk7CisKICAgICAgICAgY29udmVydC0+cHJpdi0+b3V0X3RleFtqXSA9Ci0gICAgICAgICAgICAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX21lbW9yeV9hbGxvYyAoY29udGV4dCwgTlVMTCwgJnRlbXBfaW5mbywgMCwKLSAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2NhdG9yLAorICAgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworCisgICAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CisgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgIGNvbnZlcnQtPnByaXYtPm91dF90ZXhbal0gPSBvdXRfdGV4OwogICAgIH0KQEAgLTE2NzUsOSArMjM5OSw5IEBACiAgICAgICAgIHJlcyA9IEZBTFNFOwogICAgICAgICBjb250aW51ZTsKICAgICAgIH0KLSAgICAgIGdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUgKGNvbnZlcnQtPnByaXYtPm91dF90ZXhbal0sCi0gICAgICAgICAgb3V0X3RleC0+dGV4X2lkLCBvdXRfdGV4LT50ZXhfdHlwZSwgbWVtX3dpZHRoLCBtZW1faGVpZ2h0LAotICAgICAgICAgIEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSAoJm91dF90ZXgtPmluZm8sIG91dF90ZXgtPnBsYW5lKSwgRkFMU0UpOworICAgICAgZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8gKGNvbnZlcnQtPnByaXYtPm91dF90ZXhbal0sCisgICAgICAgICAgb3V0X3RleC0+dGV4X2lkLCBjb252ZXJ0LT5wcml2LT50b190ZXh0dXJlX3RhcmdldCwgb3V0X3RleC0+dGV4X3R5cGUsCisgICAgICAgICAgbWVtX3dpZHRoLCBtZW1faGVpZ2h0KTsKICAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKChHc3RNZW1vcnkgKikgY29udmVydC0+cHJpdi0+b3V0X3RleFtqXSwgJmZyb21faW5mbyk7CiAgICAgICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIG91dF90ZXgsICZ0b19pbmZvKTsKICAgICB9IGVsc2UgewpAQCAtMTcxMSw2ICsyNDM1LDggQEAKICAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKICAgZ2ludCB2aWV3cywgdjsKICAgR3N0VmlkZW9PdmVybGF5Q29tcG9zaXRpb25NZXRhICpjb21wb3NpdGlvbl9tZXRhOworICBHc3RHTFN5bmNNZXRhICpzeW5jX21ldGE7CisgIEdzdEZsb3dSZXR1cm4gcmV0OwogCiAgIGNvbnZlcnQtPm91dGJ1ZiA9IE5VTEw7CiAKQEAgLTE3MTksOSArMjQ0NSw0NSBAQAogICAgIHJldHVybjsKICAgfQogCi0gIGNvbnZlcnQtPm91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwotICBpZiAoIWdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyIChjb252ZXJ0LT5jb250ZXh0LCBOVUxMLCAmY29udmVydC0+b3V0X2luZm8sCi0gICAgICAgICAgTlVMTCwgY29udmVydC0+b3V0YnVmKSkgeworICBzeW5jX21ldGEgPSBnc3RfYnVmZmVyX2dldF9nbF9zeW5jX21ldGEgKGNvbnZlcnQtPmluYnVmKTsKKyAgaWYgKHN5bmNfbWV0YSkKKyAgICBnc3RfZ2xfc3luY19tZXRhX3dhaXQgKHN5bmNfbWV0YSwgY29udmVydC0+Y29udGV4dCk7CisKKyAgaWYgKCFjb252ZXJ0LT5wcml2LT5wb29sKSB7CisgICAgZ2Jvb2xlYW4gcmV0OworICAgIC8qIE5vIHBvb2whICovCisgICAgR3N0UXVlcnkgKnF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19hbGxvY2F0aW9uIChjb252ZXJ0LT5wcml2LT5vdXRfY2FwcywgVFJVRSk7CisgICAgcmV0ID0gZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVjaWRlX2FsbG9jYXRpb24gKGNvbnZlcnQsIHF1ZXJ5KTsKKyAgICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICAgIGlmICghcmV0KSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIGNob29zZSBhbGxvY2F0aW9uIHBhcmFtZXRlcnMiKTsKKyAgICAgIGNvbnZlcnQtPnByaXYtPnJlc3VsdCA9IEZBTFNFOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGlmICghY29udmVydC0+cHJpdi0+cG9vbCkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoY29udmVydCwgIkZhaWxlZCB0byBjcmVhdGUgYSBidWZmZXIgcG9vbCIpOworICAgICAgY29udmVydC0+cHJpdi0+cmVzdWx0ID0gRkFMU0U7CisgICAgICByZXR1cm47CisgICAgfQorICB9CisKKyAgaWYgKCFjb252ZXJ0LT5wcml2LT5wb29sX3N0YXJ0ZWQpIHsKKyAgICBpZiAoIWdzdF9idWZmZXJfcG9vbF9zZXRfYWN0aXZlIChjb252ZXJ0LT5wcml2LT5wb29sLCBUUlVFKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoY29udmVydCwgIkZhaWxlZCB0byBzdGFydCBidWZmZXIgcG9vbCIpOworICAgICAgY29udmVydC0+cHJpdi0+cmVzdWx0ID0gRkFMU0U7CisgICAgICByZXR1cm47CisgICAgfQorICAgIGNvbnZlcnQtPnByaXYtPnBvb2xfc3RhcnRlZCA9IFRSVUU7CisgIH0KKworICByZXQgPQorICAgICAgZ3N0X2J1ZmZlcl9wb29sX2FjcXVpcmVfYnVmZmVyIChjb252ZXJ0LT5wcml2LT5wb29sLCAmY29udmVydC0+b3V0YnVmLAorICAgICAgTlVMTCk7CisgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChjb252ZXJ0LCAiRmFpbGVkIHRvIGFjcXVpcmUgYnVmZmVyIGZyb20gcG9vbDogJXMiLAorICAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CiAgICAgY29udmVydC0+cHJpdi0+cmVzdWx0ID0gRkFMU0U7CiAgICAgcmV0dXJuOwogICB9CkBAIC0xNzMyLDYgKzI0OTQsMTAgQEAKICAgZWxzZQogICAgIHZpZXdzID0gMTsKIAorICBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlciAoY29udGV4dCwgIiVzIGNvbnZlcnRpbmcgZnJvbSAlcyB0byAlcyIsCisgICAgICBHU1RfT0JKRUNUX05BTUUgKGNvbnZlcnQpLAorICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5faW5mbykpLAorICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmNvbnZlcnQtPm91dF9pbmZvKSkpOwogICAvKiBIYW5kbGUgYWxsIHZpZXdzIG9uIGlucHV0IGFuZCBvdXRwdXQgb25lIGF0IGEgdGltZSAqLwogICBmb3IgKHYgPSAwOyByZXMgJiYgdiA8IHZpZXdzOyB2KyspCiAgICAgcmVzID0gX2RvX2NvbnZlcnRfb25lX3ZpZXcgKGNvbnRleHQsIGNvbnZlcnQsIHYpOwpAQCAtMTc4NiwxMSArMjU1MiwxNCBAQAogCiAgIC8qIGF0dGFjaCB0aGUgdGV4dHVyZSB0byB0aGUgRkJPIHRvIHJlbmRlcmVyIHRvICovCiAgIGZvciAoaSA9IDA7IGkgPCBjX2luZm8tPm91dF9uX3RleHR1cmVzOyBpKyspIHsKKyAgICBndWludCBnbF90YXJnZXQgPQorICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGNvbnZlcnQtPnByaXYtPnRvX3RleHR1cmVfdGFyZ2V0KTsKKwogICAgIC8qIG5lZWRlZD8gKi8KLSAgICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIGNvbnZlcnQtPnByaXYtPm91dF90ZXhbaV0tPnRleF9pZCk7CisgICAgZ2wtPkJpbmRUZXh0dXJlIChnbF90YXJnZXQsIGNvbnZlcnQtPnByaXYtPm91dF90ZXhbaV0tPnRleF9pZCk7CiAKICAgICBnbC0+RnJhbWVidWZmZXJUZXh0dXJlMkQgKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGksCi0gICAgICAgIEdMX1RFWFRVUkVfMkQsIGNvbnZlcnQtPnByaXYtPm91dF90ZXhbaV0tPnRleF9pZCwgMCk7CisgICAgICAgIGdsX3RhcmdldCwgY29udmVydC0+cHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkLCAwKTsKICAgfQogCiAgIGlmIChnbC0+RHJhd0J1ZmZlcnMpCkBAIC0xODExLDE1ICsyNTgwLDE1IEBACiAKICAgZm9yIChpID0gY19pbmZvLT5pbl9uX3RleHR1cmVzIC0gMTsgaSA+PSAwOyBpLS0pIHsKICAgICBnY2hhciAqc2NhbGVfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInRleF9zY2FsZSV1IiwgaSk7Ci0gICAgR3N0R0xNZW1vcnkgKm0gPSBjb252ZXJ0LT5wcml2LT5pbl90ZXhbaV07Ci0gICAgZ3VpbnQgdGV4X3RhcmdldCA9IG0tPnRleF90YXJnZXQ7CisgICAgZ3VpbnQgZ2xfdGFyZ2V0ID0KKyAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsIChjb252ZXJ0LT5wcml2LT5mcm9tX3RleHR1cmVfdGFyZ2V0KTsKIAogICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCArIGkpOwotICAgIGdsLT5CaW5kVGV4dHVyZSAodGV4X3RhcmdldCwgY29udmVydC0+cHJpdi0+aW5fdGV4W2ldLT50ZXhfaWQpOwotICAgIGdsLT5UZXhQYXJhbWV0ZXJpICh0ZXhfdGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7Ci0gICAgZ2wtPlRleFBhcmFtZXRlcmkgKHRleF90YXJnZXQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKLSAgICBnbC0+VGV4UGFyYW1ldGVyaSAodGV4X3RhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwotICAgIGdsLT5UZXhQYXJhbWV0ZXJpICh0ZXhfdGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CisgICAgZ2wtPkJpbmRUZXh0dXJlIChnbF90YXJnZXQsIGNvbnZlcnQtPnByaXYtPmluX3RleFtpXS0+dGV4X2lkKTsKKyAgICBnbC0+VGV4UGFyYW1ldGVyaSAoZ2xfdGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CisgICAgZ2wtPlRleFBhcmFtZXRlcmkgKGdsX3RhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICAgIGdsLT5UZXhQYXJhbWV0ZXJpIChnbF90YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9TLCBHTF9DTEFNUF9UT19FREdFKTsKKyAgICBnbC0+VGV4UGFyYW1ldGVyaSAoZ2xfdGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAKICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzJmdiAoY29udmVydC0+c2hhZGVyLCBzY2FsZV9uYW1lLCAxLAogICAgICAgICBjb252ZXJ0LT5wcml2LT5pbl90ZXhbaV0tPnRleF9zY2FsaW5nKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbG9yY29udmVydC5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmgKaW5kZXggOGU2NmJlNC4uNTk4MGNmYSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29sb3Jjb252ZXJ0LmgKQEAgLTg0LDcgKzg0LDcgQEAKICAqCiAgKiBUaGUgY3VycmVudGx5IHN1cHBvcnRlZCBmb3JtYXRzIHRoYXQgY2FuIGJlIGNvbnZlcnRlZAogICovCi0jZGVmaW5lIEdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMgInsgUkdCLCBSR0J4LCBSR0JBLCBCR1IsIEJHUngsIEJHUkEsIHhSR0IsICIgXAorI2RlZmluZSBHU1RfR0xfQ09MT1JfQ09OVkVSVF9GT1JNQVRTICJ7IFJHQkEsIFJHQiwgUkdCeCwgQkdSLCBCR1J4LCBCR1JBLCB4UkdCLCAiIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAieEJHUiwgQVJHQiwgQUJHUiwgWTQ0NCwgSTQyMCwgWVYxMiwgWTQyQiwgIiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIlk0MUIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIEFZVVYsICIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUsIFJHQjE2LCBCR1IxNiB9IgpAQCAtOTUsMTMgKzk1LDIwIEBACiAgKiBUaGUgY3VycmVudGx5IHN1cHBvcnRlZCAjR3N0Q2FwcyB0aGF0IGNhbiBiZSBjb252ZXJ0ZWQKICAqLwogI2RlZmluZSBHU1RfR0xfQ09MT1JfQ09OVkVSVF9WSURFT19DQVBTIFwKLSAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgXAotICAgICAgICBHU1RfR0xfQ09MT1JfQ09OVkVSVF9GT1JNQVRTKQotCi0jZGVmaW5lIEdTVF9HTF9DT0xPUl9DT05WRVJUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT05fQ0FQUyBcCi0gICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgXAotICAgICAgICAiLCIgR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OLCBcCi0gICAgICAgIEdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMpCisgICAgInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIpLCAiICAgICAgICAgICAgICBcCisgICAgImZvcm1hdCA9IChzdHJpbmcpICIgR1NUX0dMX0NPTE9SX0NPTlZFUlRfRk9STUFUUyAiLCAiICAgICAgICAgICAgICBcCisgICAgIndpZHRoID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgInRleHR1cmUtdGFyZ2V0ID0gKHN0cmluZykgeyAyRCwgcmVjdGFuZ2xlLCBleHRlcm5hbC1vZXMgfSAiICAgICAgICBcCisgICAgIiA7ICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIsIiAgICAgICAgICAgICAgICBcCisgICAgR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OICIpLCAiICAgICAgICAgICBcCisgICAgImZvcm1hdCA9IChzdHJpbmcpICIgR1NUX0dMX0NPTE9SX0NPTlZFUlRfRk9STUFUUyAiLCAiICAgICAgICAgICAgICBcCisgICAgIndpZHRoID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRSAiLCAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgInRleHR1cmUtdGFyZ2V0ID0gKHN0cmluZykgeyAyRCwgcmVjdGFuZ2xlLCBleHRlcm5hbC1vZXMgfSIKIAogR3N0R0xDb2xvckNvbnZlcnQgKiBnc3RfZ2xfY29sb3JfY29udmVydF9uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOwogCkBAIC0xMDksOSArMTE2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogY2FwcywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogZmlsdGVyKTsKK0dzdENhcHMgKiAgIGdzdF9nbF9jb2xvcl9jb252ZXJ0X2ZpeGF0ZV9jYXBzICAgIChHc3RHTENvbnRleHQgKiBjb252ZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAqIGNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAqIG90aGVyKTsKIGdib29sZWFuICAgIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzICAgIChHc3RHTENvbG9yQ29udmVydCAqIGNvbnZlcnQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAgICAgICAgICAgKiBpbl9jYXBzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgICAgICAgICAgICogb3V0X2NhcHMpOworZ2Jvb2xlYW4gICAgZ3N0X2dsX2NvbG9yX2NvbnZlcnRfZGVjaWRlX2FsbG9jYXRpb24gKEdzdEdMQ29sb3JDb252ZXJ0ICAgKiBjb252ZXJ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFF1ZXJ5ICAgICAgICAgICAgKiBxdWVyeSk7CiAKIEdzdEJ1ZmZlciAqIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3BlcmZvcm0gICAgKEdzdEdMQ29sb3JDb252ZXJ0ICogY29udmVydCwgR3N0QnVmZmVyICogaW5idWYpOwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmMKaW5kZXggZDE3N2RmOC4uMmMyMDhlZCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuYwpAQCAtNDEsNiArNDEsOCBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxnbW9kdWxlLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8c3RkaW8uaD4KIAogI2luY2x1ZGUgImdsLmgiCiAjaW5jbHVkZSAiZ3N0Z2xjb250ZXh0LmgiCkBAIC02NSw3ICs2Nyw4IEBACiAjaW5jbHVkZSAiZWFnbC9nc3RnbGNvbnRleHRfZWFnbC5oIgogI2VuZGlmCiAKLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9wZXJmb3JtYW5jZSk7CitleHRlcm4gdm9pZCBfZ3N0X2dsX2RlYnVnX2VuYWJsZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisKIHN0YXRpYyBHUHJpdmF0ZSBjdXJyZW50X2NvbnRleHRfa2V5OwogCiBzdGF0aWMgR01vZHVsZSAqbW9kdWxlX3NlbGY7CkBAIC04Myw3ICs4Niw3IEBACiAjZWxzZQogICAvKiBPbiBMaW51eCB0aGUgLnNvIGlzIG9ubHkgaW4gLWRldiBwYWNrYWdlcywgdHJ5IHdpdGggYSByZWFsIHNvbmFtZQogICAgKiBQcm9wZXIgY29tcGlsZXJzIHdpbGwgb3B0aW1pemUgYXdheSB0aGUgc3RyY21wICovCi0gIGlmIChzdHJjbXAgKEdfTU9EVUxFX1NVRkZJWCwgInNvIikgPT0gMCkKKyAgaWYgKGdfc3RyY21wMCAoR19NT0RVTEVfU1VGRklYLCAic28iKSA9PSAwKQogICAgIG1vZHVsZV9vcGVuZ2wgPSBnX21vZHVsZV9vcGVuICgibGliR0wuc28uMSIsIEdfTU9EVUxFX0JJTkRfTEFaWSk7CiAKICAgLyogVGhpcyBhdXRvbWF0aWNhbGx5IGhhbmRsZXMgdGhlIHN1ZmZpeCBhbmQgZXZlbiAubGEgZmlsZXMgKi8KQEAgLTEwOCw3ICsxMTEsNyBAQAogI2Vsc2UKICAgLyogT24gTGludXggdGhlIC5zbyBpcyBvbmx5IGluIC1kZXYgcGFja2FnZXMsIHRyeSB3aXRoIGEgcmVhbCBzb25hbWUKICAgICogUHJvcGVyIGNvbXBpbGVycyB3aWxsIG9wdGltaXplIGF3YXkgdGhlIHN0cmNtcCAqLwotICBpZiAoc3RyY21wIChHX01PRFVMRV9TVUZGSVgsICJzbyIpID09IDApCisgIGlmIChnX3N0cmNtcDAgKEdfTU9EVUxFX1NVRkZJWCwgInNvIikgPT0gMCkKICAgICBtb2R1bGVfZ2xlczIgPSBnX21vZHVsZV9vcGVuICgibGliR0xFU3YyLnNvLjIiLCBHX01PRFVMRV9CSU5EX0xBWlkpOwogCiAgIC8qIFRoaXMgYXV0b21hdGljYWxseSBoYW5kbGVzIHRoZSBzdWZmaXggYW5kIGV2ZW4gLmxhIGZpbGVzICovCkBAIC0xMzMsMzcgKzEzNiw1NSBAQAogI2Vycm9yICJBZGQgbW9kdWxlIGxvYWRpbmcgc3VwcG9ydCBmb3IgR0xFUzMiCiAjZW5kaWYKIAotLyogQ29udGV4dCBzaGFyZWRuZXNzIGVzIHRyYWNrZWQgYnkgYSB1bmlxdWUgaWQgc3RvcmVkIGluIGVhY2ggY29udGV4dCBvYmplY3QKLSAqIGluIG9yZGVyIHRyYWNrIGNvbXBsZXggY3JlYXRpb24vZGVsZXRpb24gc2NlbmFyaW9zLiAgQXMgYSByZXN1bHQsIHNoYXJlZG5lc3MKLSAqIGNhbiBvbmx5IGJlIHN1Y2Nlc3NmdWxseSB2YWxpZGF0ZWQgYmV0d2VlbiB0d28gR3N0R0xDb250ZXh0J3Mgd2hlcmUgb25lIGlzCi0gKiBub3QgYSB3cmFwcGVkIGNvbnRleHQuCisvKiBDb250ZXh0IHNoYXJlZG5lc3MgaXMgdHJhY2tlZCBieSBhIHJlZmNvdW50ZWQgcG9pbnRlciBzdG9yZWQgaW4gZWFjaCBjb250ZXh0CisgKiBvYmplY3QgdG8gdHJhY2sgY29tcGxleCBjcmVhdGlvbi9kZWxldGlvbiBzY2VuYXJpb3MuICBBcyBhIHJlc3VsdCwKKyAqIHNoYXJlZG5lc3MgY2FuIG9ubHkgYmUgc3VjY2Vzc2Z1bGx5IHZhbGlkYXRlZCBiZXR3ZWVuIHR3byBHc3RHTENvbnRleHQncworICogd2hlcmUgb25lIGlzIG5vdCBhIHdyYXBwZWQgY29udGV4dC4KICAqCiAgKiBBcyB0aGVyZSBpcyBubyBBUEkgYXQgdGhlIHdpbnN5cyBsZXZlbCB0byB0ZWxsIHdoZXRoZXIgdHdvIE9wZW5HTCBjb250ZXh0cwogICogY2FuIHNoYXJlIEdMIHJlc291cmNlcywgdGhpcyBpcyB0aGUgbmV4dCBiZXN0IHRoaW5nLgorICoKKyAqIFhYWDogd2UgbWF5IG5lZWQgYSB3YXkgdG8gYXNzb2NpYXRlIHR3byB3cmFwcGVkIEdzdEdMQ29udGV4dCdzIGFzIGJlaW5nCisgKiBzaGFyZWQgaG93ZXZlciBJIGhhdmUgbm90IGNvbWUgYWNyb3NzIGEgdXNlIGNhc2UgdGhhdCByZXF1cmllcyB0aGlzIHlldC4KICAqLwotc3RhdGljIHZvbGF0aWxlIGd1aW50IHNoYXJlZ3JvdXBfaWR4OwotCi1zdGF0aWMgZ3VpbnQKLV9uZXdfc2hhcmVncm91cF9pZCAodm9pZCkKK3N0cnVjdCBDb250ZXh0U2hhcmVHcm91cAogewotICBndWludCBjdXJyZW50LCByZXQ7CisgIHZvbGF0aWxlIGludCByZWZjb3VudDsKK307CiAKLSAgZG8gewotICAgIGN1cnJlbnQgPSBnX2F0b21pY19pbnRfZ2V0ICgmc2hhcmVncm91cF9pZHgpOwotICAgIHJldCA9IGN1cnJlbnQgKyAxOworc3RhdGljIHN0cnVjdCBDb250ZXh0U2hhcmVHcm91cCAqCitfY29udGV4dF9zaGFyZV9ncm91cF9uZXcgKHZvaWQpCit7CisgIHN0cnVjdCBDb250ZXh0U2hhcmVHcm91cCAqcmV0ID0gZ19uZXcwIChzdHJ1Y3QgQ29udGV4dFNoYXJlR3JvdXAsIDEpOwogCi0gICAgLyogMCBpcyBzcGVjaWFsICovCi0gICAgaWYgKHJldCA9PSAwKQotICAgICAgcmV0Kys7Ci0gIH0gd2hpbGUgKCFnX2F0b21pY19pbnRfY29tcGFyZV9hbmRfZXhjaGFuZ2UgKCZzaGFyZWdyb3VwX2lkeCwgY3VycmVudCwgcmV0KSk7Ci0KLSAgR1NUX1RSQUNFICgiZ2VuZXJhdGVkIG5ldyBzaGFyZSBncm91cCBpZCAldSIsIHJldCk7CisgIHJldC0+cmVmY291bnQgPSAxOwogCiAgIHJldHVybiByZXQ7CiB9CiAKK3N0YXRpYyBzdHJ1Y3QgQ29udGV4dFNoYXJlR3JvdXAgKgorX2NvbnRleHRfc2hhcmVfZ3JvdXBfcmVmIChzdHJ1Y3QgQ29udGV4dFNoYXJlR3JvdXAgKnNoYXJlKQoreworICBnX2F0b21pY19pbnRfaW5jICgmc2hhcmUtPnJlZmNvdW50KTsKKyAgcmV0dXJuIHNoYXJlOworfQorCitzdGF0aWMgdm9pZAorX2NvbnRleHRfc2hhcmVfZ3JvdXBfdW5yZWYgKHN0cnVjdCBDb250ZXh0U2hhcmVHcm91cCAqc2hhcmUpCit7CisgIGlmIChnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0ICgmc2hhcmUtPnJlZmNvdW50KSkKKyAgICBnX2ZyZWUgKHNoYXJlKTsKK30KKworc3RhdGljIGdib29sZWFuCitfY29udGV4dF9zaGFyZV9ncm91cF9pc19zaGFyZWQgKHN0cnVjdCBDb250ZXh0U2hhcmVHcm91cCAqc2hhcmUpCit7CisgIHJldHVybiBnX2F0b21pY19pbnRfZ2V0ICgmc2hhcmUtPnJlZmNvdW50KSA+IDE7Cit9CisKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF9jb250ZXh0X2RlYnVnCiBHU1RfREVCVUdfQ0FURUdPUlkgKEdTVF9DQVRfREVGQVVMVCk7CitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfZ2xfZGVidWcpOwogCiAjZGVmaW5lIGdzdF9nbF9jb250ZXh0X3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKIEdfREVGSU5FX0FCU1RSQUNUX1RZUEUgKEdzdEdMQ29udGV4dCwgZ3N0X2dsX2NvbnRleHQsIEdTVF9UWVBFX09CSkVDVCk7CkBAIC0xODQsMTMgKzIwNSwxMiBAQAogICAvKiBjb25kaXRpb25zICovCiAgIEdNdXRleCByZW5kZXJfbG9jazsKICAgR0NvbmQgY3JlYXRlX2NvbmQ7Ci0gIEdDb25kIGRlc3Ryb3lfY29uZDsKIAogICBnYm9vbGVhbiBjcmVhdGVkOwogICBnYm9vbGVhbiBhbGl2ZTsKIAogICBHV2Vha1JlZiBvdGhlcl9jb250ZXh0X3JlZjsKLSAgZ3VpbnQgc2hhcmVncm91cF9pZDsKKyAgc3RydWN0IENvbnRleHRTaGFyZUdyb3VwICpzaGFyZWdyb3VwOwogICBHRXJyb3IgKiplcnJvcjsKIAogICBnaW50IGdsX21ham9yOwpAQCAtMjIwLDggKzI0MCw4IEBACiAKICNkZWZpbmUgR1NUX0dMX1dSQVBQRURfQ09OVEVYVChvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfV1JBUFBFRF9DT05URVhULCBHc3RHTFdyYXBwZWRDb250ZXh0KSkKICNkZWZpbmUgR1NUX0dMX1dSQVBQRURfQ09OVEVYVF9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX0NPTlRFWFQsIEdzdEdMQ29udGV4dENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dSQVBQRURfQ09OVEVYVChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV1JBUFBFRF9DT05URVhUKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dSQVBQRURfQ09OVEVYVF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV1JBUFBFRF9DT05URVhUKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dSQVBQRURfQ09OVEVYVChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV1JBUFBFRF9DT05URVhUKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dSQVBQRURfQ09OVEVYVF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV1JBUFBFRF9DT05URVhUKSkKICNkZWZpbmUgR1NUX0dMX1dSQVBQRURfQ09OVEVYVF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9XUkFQUEVEX0NPTlRFWFQsIEdzdEdMV3JhcHBlZENvbnRleHRDbGFzcykpCiAKIEdRdWFyawpAQCAtMjU2LDcgKzI3Niw2IEBACiAgIGdfbXV0ZXhfaW5pdCAoJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKIAogICBnX2NvbmRfaW5pdCAoJmNvbnRleHQtPnByaXYtPmNyZWF0ZV9jb25kKTsKLSAgZ19jb25kX2luaXQgKCZjb250ZXh0LT5wcml2LT5kZXN0cm95X2NvbmQpOwogICBjb250ZXh0LT5wcml2LT5jcmVhdGVkID0gRkFMU0U7CiAKICAgZ193ZWFrX3JlZl9pbml0ICgmY29udGV4dC0+cHJpdi0+b3RoZXJfY29udGV4dF9yZWYsIE5VTEwpOwpAQCAtMjgzLDcgKzMwMiw3IEBACiAgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgewogICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZ2xfY29udGV4dF9kZWJ1ZywgImdsY29udGV4dCIsIDAsCiAgICAgICAgICJnbGNvbnRleHQgZWxlbWVudCIpOwotICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKGdzdF9wZXJmb3JtYW5jZSwgIkdTVF9QRVJGT1JNQU5DRSIpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZ2xfZGVidWcsICJnbGRlYnVnIiwgMCwgIk9wZW5HTCBEZWJ1Z2dpbmciKTsKICAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKICAgfQogfQpAQCAtMzEwLDcgKzMyOSw3IEBACiAgIEdTVF9JTkZPICgiY3JlYXRpbmcgYSBjb250ZXh0IGZvciBkaXNwbGF5ICUiIEdTVF9QVFJfRk9STUFUCiAgICAgICAiLCB1c2VyIGNob2ljZTolcyIsIGRpc3BsYXksIHVzZXJfY2hvaWNlKTsKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9DR0wKLSAgaWYgKCFjb250ZXh0ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgNSwgImNnbCIpKSkKKyAgaWYgKCFjb250ZXh0ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgMywgImNnbCIpKSkKICAgICBjb250ZXh0ID0gR1NUX0dMX0NPTlRFWFQgKGdzdF9nbF9jb250ZXh0X2NvY29hX25ldyAoZGlzcGxheSkpOwogI2VuZGlmCiAjaWYgR1NUX0dMX0hBVkVfUExBVEZPUk1fR0xYCkBAIC0zMTgsMTYgKzMzNywxNSBAQAogICAgIGNvbnRleHQgPSBHU1RfR0xfQ09OVEVYVCAoZ3N0X2dsX2NvbnRleHRfZ2x4X25ldyAoZGlzcGxheSkpOwogI2VuZGlmCiAjaWYgR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMCi0gIGlmICghY29udGV4dCAmJiAoIXVzZXJfY2hvaWNlIHx8IGdfc3Ryc3RyX2xlbiAodXNlcl9jaG9pY2UsIDcsICJlZ2wiKSkpCisgIGlmICghY29udGV4dCAmJiAoIXVzZXJfY2hvaWNlIHx8IGdfc3Ryc3RyX2xlbiAodXNlcl9jaG9pY2UsIDMsICJlZ2wiKSkpCiAgICAgY29udGV4dCA9IEdTVF9HTF9DT05URVhUIChnc3RfZ2xfY29udGV4dF9lZ2xfbmV3IChkaXNwbGF5KSk7CiAjZW5kaWYKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9XR0wKLSAgaWYgKCFjb250ZXh0ICYmICghdXNlcl9jaG9pY2UgfHwgZ19zdHJzdHJfbGVuICh1c2VyX2Nob2ljZSwgMywgIndnbCIpKSkgeworICBpZiAoIWNvbnRleHQgJiYgKCF1c2VyX2Nob2ljZSB8fCBnX3N0cnN0cl9sZW4gKHVzZXJfY2hvaWNlLCAzLCAid2dsIikpKQogICAgIGNvbnRleHQgPSBHU1RfR0xfQ09OVEVYVCAoZ3N0X2dsX2NvbnRleHRfd2dsX25ldyAoZGlzcGxheSkpOwotICB9CiAjZW5kaWYKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FQUdMCi0gIGlmICghY29udGV4dCAmJiAoIXVzZXJfY2hvaWNlIHx8IGdfc3Ryc3RyX2xlbiAodXNlcl9jaG9pY2UsIDUsICJlYWdsIikpKQorICBpZiAoIWNvbnRleHQgJiYgKCF1c2VyX2Nob2ljZSB8fCBnX3N0cnN0cl9sZW4gKHVzZXJfY2hvaWNlLCA0LCAiZWFnbCIpKSkKICAgICBjb250ZXh0ID0gR1NUX0dMX0NPTlRFWFQgKGdzdF9nbF9jb250ZXh0X2VhZ2xfbmV3IChkaXNwbGF5KSk7CiAjZW5kaWYKIApAQCAtMzg4LDcgKzQwNiw3IEBACiAgIGNvbnRleHQgPSAoR3N0R0xDb250ZXh0ICopIGNvbnRleHRfd3JhcDsKIAogICBjb250ZXh0LT5kaXNwbGF5ID0gZ3N0X29iamVjdF9yZWYgKGRpc3BsYXkpOwotICBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwX2lkID0gX25ld19zaGFyZWdyb3VwX2lkICgpOworICBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwID0gX2NvbnRleHRfc2hhcmVfZ3JvdXBfbmV3ICgpOwogICBjb250ZXh0X3dyYXAtPmhhbmRsZSA9IGhhbmRsZTsKICAgY29udGV4dF93cmFwLT5wbGF0Zm9ybSA9IGNvbnRleHRfdHlwZTsKICAgY29udGV4dF93cmFwLT5hdmFpbGFibGVfYXBpcyA9IGF2YWlsYWJsZV9hcGlzOwpAQCAtNjI0LDI4ICs2NDIsMjIgQEAKICAgICBnc3RfZ2xfd2luZG93X3NldF9kcmF3X2NhbGxiYWNrIChjb250ZXh0LT53aW5kb3csIE5VTEwsIE5VTEwsIE5VTEwpOwogCiAgICAgaWYgKGNvbnRleHQtPnByaXYtPmFsaXZlKSB7Ci0gICAgICBnX211dGV4X2xvY2sgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7CiAgICAgICBHU1RfSU5GT19PQkpFQ1QgKGNvbnRleHQsICJzZW5kIHF1aXQgZ2wgd2luZG93IGxvb3AiKTsKICAgICAgIGdzdF9nbF93aW5kb3dfcXVpdCAoY29udGV4dC0+d2luZG93KTsKLSAgICAgIHdoaWxlIChjb250ZXh0LT5wcml2LT5hbGl2ZSkgewotICAgICAgICBnX2NvbmRfd2FpdCAoJmNvbnRleHQtPnByaXYtPmRlc3Ryb3lfY29uZCwgJmNvbnRleHQtPnByaXYtPnJlbmRlcl9sb2NrKTsKLSAgICAgIH0KLSAgICAgIGdfbXV0ZXhfdW5sb2NrICgmY29udGV4dC0+cHJpdi0+cmVuZGVyX2xvY2spOwotICAgIH0KIAotICAgIGdzdF9nbF93aW5kb3dfc2V0X2Nsb3NlX2NhbGxiYWNrIChjb250ZXh0LT53aW5kb3csIE5VTEwsIE5VTEwsIE5VTEwpOwotCi0gICAgaWYgKGNvbnRleHQtPnByaXYtPmdsX3RocmVhZCkgewotICAgICAgZ3BvaW50ZXIgcmV0ID0gZ190aHJlYWRfam9pbiAoY29udGV4dC0+cHJpdi0+Z2xfdGhyZWFkKTsKKyAgICAgIEdTVF9JTkZPX09CSkVDVCAoY29udGV4dCwgImpvaW5pbmcgZ2wgdGhyZWFkIik7CisgICAgICBnX3RocmVhZF9qb2luIChjb250ZXh0LT5wcml2LT5nbF90aHJlYWQpOwogICAgICAgR1NUX0lORk9fT0JKRUNUIChjb250ZXh0LCAiZ2wgdGhyZWFkIGpvaW5lZCIpOwotICAgICAgaWYgKHJldCAhPSBOVUxMKQotICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChjb250ZXh0LCAiZ2wgdGhyZWFkIHJldHVybmVkIGEgbm9uLW51bGwgcG9pbnRlciIpOwogICAgICAgY29udGV4dC0+cHJpdi0+Z2xfdGhyZWFkID0gTlVMTDsKICAgICB9CiAKKyAgICBnc3RfZ2xfd2luZG93X3NldF9jbG9zZV9jYWxsYmFjayAoY29udGV4dC0+d2luZG93LCBOVUxMLCBOVUxMLCBOVUxMKTsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChjb250ZXh0LT53aW5kb3cpOwogICB9CiAKKyAgaWYgKGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXApCisgICAgX2NvbnRleHRfc2hhcmVfZ3JvdXBfdW5yZWYgKGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXApOworCiAgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnRleHQtPmRpc3BsYXkpOwogCiAgIGlmIChjb250ZXh0LT5nbF92dGFibGUpIHsKQEAgLTY1NSw3ICs2NjcsNiBAQAogCiAgIGdfbXV0ZXhfY2xlYXIgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7CiAKLSAgZ19jb25kX2NsZWFyICgmY29udGV4dC0+cHJpdi0+ZGVzdHJveV9jb25kKTsKICAgZ19jb25kX2NsZWFyICgmY29udGV4dC0+cHJpdi0+Y3JlYXRlX2NvbmQpOwogCiAgIGdfZnJlZSAoY29udGV4dC0+cHJpdi0+Z2xfZXh0cyk7CkBAIC02ODUsNyArNjk2LDcgQEAKICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3M7CiAgIGdib29sZWFuIHJlc3VsdDsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKICAgY29udGV4dF9jbGFzcyA9IEdTVF9HTF9DT05URVhUX0dFVF9DTEFTUyAoY29udGV4dCk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb250ZXh0X2NsYXNzLT5hY3RpdmF0ZSAhPSBOVUxMLCBGQUxTRSk7CiAKQEAgLTc0Niw3ICs3NTcsNyBAQAogewogICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzczsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBHU1RfR0xfQVBJX05PTkUpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBHU1RfR0xfQVBJX05PTkUpOwogICBjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHRfY2xhc3MtPmdldF9nbF9hcGkgIT0gTlVMTCwgR1NUX0dMX0FQSV9OT05FKTsKIApAQCAtNzc1LDcgKzc4Niw3IEBACiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzOwogICBHc3RHTEFQSSBnbF9hcGk7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOwogICBjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHRfY2xhc3MtPmdldF9wcm9jX2FkZHJlc3MgIT0gTlVMTCwgTlVMTCk7CiAKQEAgLTgzMSw3ICs4NDIsNyBAQAogZ2Jvb2xlYW4KIGdzdF9nbF9jb250ZXh0X3NldF93aW5kb3cgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMV2luZG93ICogd2luZG93KQogewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoIUdTVF9HTF9JU19XUkFQUEVEX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICghR1NUX0lTX0dMX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKIAogICBHU1RfREVCVUdfT0JKRUNUIChjb250ZXh0LCAid2luZG93OiUiIEdTVF9QVFJfRk9STUFULCB3aW5kb3cpOwogCkBAIC04NjUsOSArODc2LDkgQEAKIEdzdEdMV2luZG93ICoKIGdzdF9nbF9jb250ZXh0X2dldF93aW5kb3cgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBOVUxMKTsKIAotICBpZiAoR1NUX0dMX0lTX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCkpIHsKKyAgaWYgKEdTVF9JU19HTF9XUkFQUEVEX0NPTlRFWFQgKGNvbnRleHQpKSB7CiAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChjb250ZXh0LCAiY29udGV4dCBpcyBub3QgdG9wbGV2ZWwsIHJldHVybmluZyBOVUxMIik7CiAgICAgcmV0dXJuIE5VTEw7CiAgIH0KQEAgLTg5MiwxMiArOTAzLDEyIEBACiBnYm9vbGVhbgogZ3N0X2dsX2NvbnRleHRfY2FuX3NoYXJlIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTENvbnRleHQgKiBvdGhlcl9jb250ZXh0KQogewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAob3RoZXJfY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKG90aGVyX2NvbnRleHQpLCBGQUxTRSk7CiAKICAgLyogY2hlY2sgaWYgdGhlIGNvbnRleHRzIGFyZSBkZXNjZW5kYW50cyBvciB0aGUgcm9vdCBub2RlcyBhcmUgdGhlIHNhbWUgKi8KLSAgcmV0dXJuIGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXBfaWQgIT0gMAotICAgICAgJiYgY29udGV4dC0+cHJpdi0+c2hhcmVncm91cF9pZCA9PSBvdGhlcl9jb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwX2lkOworICByZXR1cm4gY29udGV4dC0+cHJpdi0+c2hhcmVncm91cCAhPSBOVUxMCisgICAgICAmJiBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwID09IG90aGVyX2NvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXA7CiB9CiAKIC8qKgpAQCAtOTI1LDggKzkzNiw4IEBACiB7CiAgIGdib29sZWFuIGFsaXZlID0gRkFMU0U7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAoIUdTVF9HTF9JU19XUkFQUEVEX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKCFHU1RfSVNfR0xfV1JBUFBFRF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGNvbnRleHQsICIgb3RoZXJfY29udGV4dDolIiBHU1RfUFRSX0ZPUk1BVCwgb3RoZXJfY29udGV4dCk7CiAKQEAgLTkzOCwxNiArOTQ5LDE2IEBACiAgICAgZ193ZWFrX3JlZl9zZXQgKCZjb250ZXh0LT5wcml2LT5vdGhlcl9jb250ZXh0X3JlZiwgb3RoZXJfY29udGV4dCk7CiAgICAgY29udGV4dC0+cHJpdi0+ZXJyb3IgPSBlcnJvcjsKICAgICBpZiAob3RoZXJfY29udGV4dCA9PSBOVUxMKQotICAgICAgY29udGV4dC0+cHJpdi0+c2hhcmVncm91cF9pZCA9IF9uZXdfc2hhcmVncm91cF9pZCAoKTsKKyAgICAgIGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXAgPSBfY29udGV4dF9zaGFyZV9ncm91cF9uZXcgKCk7CiAgICAgZWxzZQotICAgICAgY29udGV4dC0+cHJpdi0+c2hhcmVncm91cF9pZCA9IG90aGVyX2NvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXBfaWQ7CisgICAgICBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwID0KKyAgICAgICAgICBfY29udGV4dF9zaGFyZV9ncm91cF9yZWYgKG90aGVyX2NvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXApOwogCiAgICAgY29udGV4dC0+cHJpdi0+Z2xfdGhyZWFkID0gZ190aHJlYWRfbmV3ICgiZ3N0Z2xjb250ZXh0IiwKICAgICAgICAgKEdUaHJlYWRGdW5jKSBnc3RfZ2xfY29udGV4dF9jcmVhdGVfdGhyZWFkLCBjb250ZXh0KTsKIAotICAgIGdfY29uZF93YWl0ICgmY29udGV4dC0+cHJpdi0+Y3JlYXRlX2NvbmQsICZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7Ci0KLSAgICBjb250ZXh0LT5wcml2LT5jcmVhdGVkID0gVFJVRTsKKyAgICB3aGlsZSAoIWNvbnRleHQtPnByaXYtPmNyZWF0ZWQpCisgICAgICBnX2NvbmRfd2FpdCAoJmNvbnRleHQtPnByaXYtPmNyZWF0ZV9jb25kLCAmY29udGV4dC0+cHJpdi0+cmVuZGVyX2xvY2spOwogCiAgICAgR1NUX0lORk9fT0JKRUNUIChjb250ZXh0LCAiZ2wgdGhyZWFkIGNyZWF0ZWQiKTsKICAgfQpAQCAtOTU5LDE1NCArOTcwLDYgQEAKICAgcmV0dXJuIGFsaXZlOwogfQogCi0jaWZuZGVmIEdMX0RFQlVHX1RZUEVfRVJST1IKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9FUlJPUiAweDgyNEMKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1VSCi0jZGVmaW5lIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPVVIgMHg4MjRECi0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1VSCi0jZGVmaW5lIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9VUiAweDgyNEUKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZCi0jZGVmaW5lIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkgMHg4MjRGCi0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRQotI2RlZmluZSBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFIDB4ODI1MAotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1RZUEVfTUFSS0VSCi0jZGVmaW5lIEdMX0RFQlVHX1RZUEVfTUFSS0VSIDB4ODI2OAotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1RZUEVfT1RIRVIKLSNkZWZpbmUgR0xfREVCVUdfVFlQRV9PVEhFUiAweDgyNTEKLSNlbmRpZgotCi0jaWZuZGVmIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0gKLSNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfSElHSCAweDkxNDYKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0KLSNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNIDB4OTE0NwotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1NFVkVSSVRZX0xPVwotI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9MT1cgMHg5MTQ4Ci0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OCi0jZGVmaW5lIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiAweDgyNkIKLSNlbmRpZgotCi0jaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9BUEkKLSNkZWZpbmUgR0xfREVCVUdfU09VUkNFX0FQSSAweDgyNDYKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTQotI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTSAweDgyNDcKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSCi0jZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIgMHg4MjQ4Ci0jZW5kaWYKLSNpZm5kZWYgR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZCi0jZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSAweDgyNDkKLSNlbmRpZgotI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04KLSNkZWZpbmUgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OIDB4ODI0QQotI2VuZGlmCi0jaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9PVEhFUgotI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfT1RIRVIgMHg4MjRCCi0jZW5kaWYKLQotI2lmICFkZWZpbmVkKEdTVF9ESVNBQkxFX0dTVF9ERUJVRykKLXN0YXRpYyBpbmxpbmUgY29uc3QgZ2NoYXIgKgotX2RlYnVnX3NldmVyaXR5X3RvX3N0cmluZyAoR0xlbnVtIHNldmVyaXR5KQotewotICBzd2l0Y2ggKHNldmVyaXR5KSB7Ci0gICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9ISUdIOgotICAgICAgcmV0dXJuICJoaWdoIjsKLSAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX01FRElVTToKLSAgICAgIHJldHVybiAibWVkaXVtIjsKLSAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX0xPVzoKLSAgICAgIHJldHVybiAibG93IjsKLSAgICBjYXNlIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTjoKLSAgICAgIHJldHVybiAibm90aWZpY2F0aW9uIjsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuICJpbnZhbGlkIjsKLSAgfQotfQotCi1zdGF0aWMgaW5saW5lIGNvbnN0IGdjaGFyICoKLV9kZWJ1Z19zb3VyY2VfdG9fc3RyaW5nIChHTGVudW0gc291cmNlKQotewotICBzd2l0Y2ggKHNvdXJjZSkgewotICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX0FQSToKLSAgICAgIHJldHVybiAiQVBJIjsKLSAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9XSU5ET1dfU1lTVEVNOgotICAgICAgcmV0dXJuICJ3aW5zeXMiOwotICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX1NIQURFUl9DT01QSUxFUjoKLSAgICAgIHJldHVybiAic2hhZGVyIGNvbXBpbGVyIjsKLSAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWToKLSAgICAgIHJldHVybiAidGhpcmQgcGFydHkiOwotICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OOgotICAgICAgcmV0dXJuICJhcHBsaWNhdGlvbiI7Ci0gICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfT1RIRVI6Ci0gICAgICByZXR1cm4gIm90aGVyIjsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuICJpbnZhbGlkIjsKLSAgfQotfQotCi1zdGF0aWMgaW5saW5lIGNvbnN0IGdjaGFyICoKLV9kZWJ1Z190eXBlX3RvX3N0cmluZyAoR0xlbnVtIHR5cGUpCi17Ci0gIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9FUlJPUjoKLSAgICAgIHJldHVybiAiZXJyb3IiOwotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9VUjoKLSAgICAgIHJldHVybiAiZGVwcmVjYXRlZCI7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPVVI6Ci0gICAgICByZXR1cm4gInVuZGVmaW5lZCI7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZOgotICAgICAgcmV0dXJuICJwb3J0YWJpbGl0eSI7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFOgotICAgICAgcmV0dXJuICJwZXJmb3JtYW5jZSI7Ci0gICAgY2FzZSBHTF9ERUJVR19UWVBFX01BUktFUjoKLSAgICAgIHJldHVybiAiZGVidWcgbWFya2VyIjsKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfT1RIRVI6Ci0gICAgICByZXR1cm4gIm90aGVyIjsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuICJpbnZhbGlkIjsKLSAgfQotfQotCi1zdGF0aWMgdm9pZCBHU1RHTEFQSQotX2dzdF9nbF9kZWJ1Z19jYWxsYmFjayAoR0xlbnVtIHNvdXJjZSwgR0xlbnVtIHR5cGUsIEdMdWludCBpZCwgR0xlbnVtIHNldmVyaXR5LAotICAgIEdMc2l6ZWkgbGVuZ3RoLCBjb25zdCBnY2hhciAqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gdXNlcl9kYXRhOwotICBjb25zdCBnY2hhciAqc2V2ZXJpdHlfc3RyID0gX2RlYnVnX3NldmVyaXR5X3RvX3N0cmluZyAoc2V2ZXJpdHkpOwotICBjb25zdCBnY2hhciAqc291cmNlX3N0ciA9IF9kZWJ1Z19zb3VyY2VfdG9fc3RyaW5nIChzb3VyY2UpOwotICBjb25zdCBnY2hhciAqdHlwZV9zdHIgPSBfZGVidWdfdHlwZV90b19zdHJpbmcgKHR5cGUpOwotCi0gIHN3aXRjaCAodHlwZSkgewotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9FUlJPUjoKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfVU5ERUZJTkVEX0JFSEFWSU9VUjoKLSAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbnRleHQsICIlczogR0wgJXMgZnJvbSAlcyBpZDoldSwgJXMiLCBzZXZlcml0eV9zdHIsCi0gICAgICAgICAgdHlwZV9zdHIsIHNvdXJjZV9zdHIsIGlkLCBtZXNzYWdlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9VUjoKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFk6Ci0gICAgICBHU1RfRklYTUVfT0JKRUNUIChjb250ZXh0LCAiJXM6IEdMICVzIGZyb20gJXMgaWQ6JXUsICVzIiwgc2V2ZXJpdHlfc3RyLAotICAgICAgICAgIHR5cGVfc3RyLCBzb3VyY2Vfc3RyLCBpZCwgbWVzc2FnZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0U6Ci0gICAgICBHU1RfQ0FUX0RFQlVHX09CSkVDVCAoZ3N0X3BlcmZvcm1hbmNlLCBjb250ZXh0LCAiJXM6IEdMICVzIGZyb20gJXMgaWQ6JXUsIgotICAgICAgICAgICIgJXMiLCBzZXZlcml0eV9zdHIsIHR5cGVfc3RyLCBzb3VyY2Vfc3RyLCBpZCwgbWVzc2FnZSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoY29udGV4dCwgIiVzOiBHTCAlcyBmcm9tICVzIGlkOiV1LCAlcyIsIHNldmVyaXR5X3N0ciwKLSAgICAgICAgICB0eXBlX3N0ciwgc291cmNlX3N0ciwgaWQsIG1lc3NhZ2UpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLSNlbmRpZgotCiBzdGF0aWMgZ2Jvb2xlYW4KIF9jcmVhdGVfY29udGV4dF9pbmZvIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTEFQSSBnbF9hcGksIGdpbnQgKiBnbF9tYWpvciwKICAgICBnaW50ICogZ2xfbWlub3IsIEdFcnJvciAqKiBlcnJvcikKQEAgLTExOTAsNiArMTA1Myw5IEBACiBzdGF0aWMgdm9pZAogX3VubG9ja19jcmVhdGVfdGhyZWFkIChHc3RHTENvbnRleHQgKiBjb250ZXh0KQogeworICBjb250ZXh0LT5wcml2LT5jcmVhdGVkID0gVFJVRTsKKyAgR1NUX0lORk9fT0JKRUNUIChjb250ZXh0LCAiZ2wgdGhyZWFkIHJ1bm5pbmciKTsKKyAgZ19jb25kX3NpZ25hbCAoJmNvbnRleHQtPnByaXYtPmNyZWF0ZV9jb25kKTsKICAgZ19tdXRleF91bmxvY2sgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7CiB9CiAKQEAgLTEyMjAsNyArMTA4Niw2IEBACiB7CiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzOwogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7Ci0gIEdzdEdMRnVuY3MgKmdsOwogICBHc3RHTEFQSSBjb21waWxlZF9hcGksIHVzZXJfYXBpLCBnbF9hcGksIGRpc3BsYXlfYXBpOwogICBnY2hhciAqYXBpX3N0cmluZzsKICAgZ2NoYXIgKmNvbXBpbGVkX2FwaV9zOwpAQCAtMTI1Niw3ICsxMTIxLDYgQEAKICAgICB9CiAgIH0KIAotICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKICAgY29tcGlsZWRfYXBpID0gX2NvbXBpbGVkX2FwaSAoKTsKICAgY29tcGlsZWRfYXBpX3MgPSBnc3RfZ2xfYXBpX3RvX3N0cmluZyAoY29tcGlsZWRfYXBpKTsKIApAQCAtMTM0NCwxNSArMTIwOCw5IEBACiAKICAgY29udGV4dC0+cHJpdi0+YWxpdmUgPSBUUlVFOwogCi0gIGlmIChnbC0+RGVidWdNZXNzYWdlQ2FsbGJhY2spIHsKICNpZiAhZGVmaW5lZChHU1RfRElTQUJMRV9HU1RfREVCVUcpCi0gICAgR1NUX0lORk9fT0JKRUNUIChjb250ZXh0LCAiRW5hYmxpbmcgR0wgY29udGV4dCBkZWJ1Z2dpbmciKTsKLSAgICAvKiBlbmFibGUgdGhlbSBhbGwgKi8KLSAgICBnbC0+RGVidWdNZXNzYWdlQ29udHJvbCAoR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIEdMX0RPTlRfQ0FSRSwgMCwgMCwKLSAgICAgICAgR0xfVFJVRSk7Ci0gICAgZ2wtPkRlYnVnTWVzc2FnZUNhbGxiYWNrIChfZ3N0X2dsX2RlYnVnX2NhbGxiYWNrLCBjb250ZXh0KTsKKyAgX2dzdF9nbF9kZWJ1Z19lbmFibGUgKGNvbnRleHQpOwogI2VuZGlmCi0gIH0KIAogICBpZiAob3RoZXJfY29udGV4dCkgewogICAgIEdTVF9ERUJVR19PQkpFQ1QgKGNvbnRleHQsICJVbnJlZmZpbmcgb3RoZXJfY29udGV4dCAlIiBHU1RfUFRSX0ZPUk1BVCwKQEAgLTEzNjAsOSArMTIxOCw4IEBACiAgICAgZ3N0X29iamVjdF91bnJlZiAob3RoZXJfY29udGV4dCk7CiAgIH0KIAotICBnX2NvbmRfc2lnbmFsICgmY29udGV4dC0+cHJpdi0+Y3JlYXRlX2NvbmQpOwotCi0vLyAgZ19tdXRleF91bmxvY2sgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7CisgIC8qIHVubG9ja2luZyBvZiB0aGUgcmVuZGVyX2xvY2sgaGFwcGVucyB3aGVuIHRoZQorICAgKiBjb250ZXh0J3MgbG9vcCBpcyBydW5uaW5nIGZyb20gaW5zaWRlIHRoYXQgbG9vcCAqLwogICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZV9hc3luYyAoY29udGV4dC0+d2luZG93LAogICAgICAgKEdzdEdMV2luZG93Q0IpIF91bmxvY2tfY3JlYXRlX3RocmVhZCwgY29udGV4dCwgTlVMTCk7CiAKQEAgLTEzNzEsNyArMTIyOCw2IEBACiAgIEdTVF9JTkZPX09CSkVDVCAoY29udGV4dCwgImxvb3AgZXhpdGVkIik7CiAKICAgZ19tdXRleF9sb2NrICgmY29udGV4dC0+cHJpdi0+cmVuZGVyX2xvY2spOwotCiAgIGNvbnRleHQtPnByaXYtPmFsaXZlID0gRkFMU0U7CiAKICAgZ3N0X2dsX2NvbnRleHRfYWN0aXZhdGUgKGNvbnRleHQsIEZBTFNFKTsKQEAgLTEzODcsOCArMTI0Myw3IEBACiAgICAgd2luZG93X2NsYXNzLT5jbG9zZSAoY29udGV4dC0+d2luZG93KTsKICAgfQogCi0gIGdfY29uZF9zaWduYWwgKCZjb250ZXh0LT5wcml2LT5kZXN0cm95X2NvbmQpOwotCisgIGNvbnRleHQtPnByaXYtPmNyZWF0ZWQgPSBGQUxTRTsKICAgZ19tdXRleF91bmxvY2sgKCZjb250ZXh0LT5wcml2LT5yZW5kZXJfbG9jayk7CiAKICAgcmV0dXJuIE5VTEw7CkBAIC0xMzk4LDYgKzEyNTMsOSBAQAogICAgIGlmIChvdGhlcl9jb250ZXh0KQogICAgICAgZ3N0X29iamVjdF91bnJlZiAob3RoZXJfY29udGV4dCk7CiAKKyAgICAvKiBBIGNvbnRleHQgdGhhdCBmYWlscyB0byBiZSBjcmVhdGVkIGlzIGNvbnNpZGVyZWQgY3JlYXRlZCBidXQgbm90IGFsaXZlCisgICAgICogYW5kIHdpbGwgbmV2ZXIgYmUgYWJsZSB0byBiZSBhbGl2ZSBhcyBjcmVhdGlvbiBjYW4ndCBoYXBwZW4gKi8KKyAgICBjb250ZXh0LT5wcml2LT5jcmVhdGVkID0gVFJVRTsKICAgICBnX2NvbmRfc2lnbmFsICgmY29udGV4dC0+cHJpdi0+Y3JlYXRlX2NvbmQpOwogICAgIGdfbXV0ZXhfdW5sb2NrICgmY29udGV4dC0+cHJpdi0+cmVuZGVyX2xvY2spOwogICAgIHJldHVybiBOVUxMOwpAQCAtMTQyMCw3ICsxMjc4LDcgQEAKIHsKICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpKTsKICAgY29udGV4dF9jbGFzcyA9IEdTVF9HTF9DT05URVhUX0dFVF9DTEFTUyAoY29udGV4dCk7CiAgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbnRleHRfY2xhc3MtPmRlc3Ryb3lfY29udGV4dCAhPSBOVUxMKTsKIApAQCAtMTQ0Niw3ICsxMzA0LDcgQEAKICAgR3N0R0xBUEkgZ2xfYXBpOwogICBnYm9vbGVhbiByZXQ7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb250ZXh0LT5wcml2LT5hY3RpdmVfdGhyZWFkID09IGdfdGhyZWFkX3NlbGYgKCksCiAgICAgICBGQUxTRSk7CiAKQEAgLTE1MzgsNyArMTM5Niw3IEBACiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzOwogICBndWludHB0ciByZXN1bHQ7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgMCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIDApOwogICBjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHRfY2xhc3MtPmdldF9nbF9jb250ZXh0ICE9IE5VTEwsIDApOwogCkBAIC0xNTYyLDcgKzE0MjAsNyBAQAogewogICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzczsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCAwKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgMCk7CiAgIGNvbnRleHRfY2xhc3MgPSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MgKGNvbnRleHQpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoY29udGV4dF9jbGFzcy0+Z2V0X2dsX3BsYXRmb3JtICE9IE5VTEwsIDApOwogCkBAIC0xNTgwLDcgKzE0MzgsNyBAQAogR3N0R0xEaXNwbGF5ICoKIGdzdF9nbF9jb250ZXh0X2dldF9kaXNwbGF5IChHc3RHTENvbnRleHQgKiBjb250ZXh0KQogewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgTlVMTCk7CiAKICAgcmV0dXJuIGdzdF9vYmplY3RfcmVmIChjb250ZXh0LT5kaXNwbGF5KTsKIH0KQEAgLTE2MjAsMTEgKzE0NzgsMTMgQEAKICAgR3N0R0xXaW5kb3cgKndpbmRvdzsKICAgUnVuR2VuZXJpY0RhdGEgcmRhdGE7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpKTsKICAgZ19yZXR1cm5faWZfZmFpbCAoZnVuYyAhPSBOVUxMKTsKIAotICBpZiAoR1NUX0dMX0lTX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCkpIHsKKyAgaWYgKEdTVF9JU19HTF9XUkFQUEVEX0NPTlRFWFQgKGNvbnRleHQpKQogICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGNvbnRleHQtPnByaXYtPmFjdGl2ZV90aHJlYWQgPT0gZ190aHJlYWRfc2VsZiAoKSk7CisKKyAgaWYgKGNvbnRleHQtPnByaXYtPmFjdGl2ZV90aHJlYWQgPT0gZ190aHJlYWRfc2VsZiAoKSkgewogICAgIGZ1bmMgKGNvbnRleHQsIGRhdGEpOwogICAgIHJldHVybjsKICAgfQpAQCAtMTY1Niw3ICsxNTE2LDcgQEAKIHZvaWQKIGdzdF9nbF9jb250ZXh0X2dldF9nbF92ZXJzaW9uIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBnaW50ICogbWFqLCBnaW50ICogbWluKQogewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCkpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCkpOwogICBnX3JldHVybl9pZl9mYWlsIChtYWogIT0gTlVMTCAmJiBtaW4gIT0gTlVMTCk7CiAKICAgaWYgKG1haikKQEAgLTE2ODIsNyArMTU0Miw3IEBACiBnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTEFQSSBhcGksCiAgICAgZ2ludCBtYWosIGdpbnQgbWluKQogewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKIAogICBpZiAobWFqID4gY29udGV4dC0+cHJpdi0+Z2xfbWFqb3IpCiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTcxNiw3ICsxNTc2LDcgQEAKIHsKICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3M7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmZWF0dXJlICE9IE5VTEwsIEZBTFNFKTsKIAogICBjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKQEAgLTE3NDUsNiArMTYwNSw1MCBAQAogICByZXR1cm4gZ19wcml2YXRlX2dldCAoJmN1cnJlbnRfY29udGV4dF9rZXkpOwogfQogCisvKioKKyAqIGdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZDoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqCisgKiBSZXR1cm5zOiBXaGV0aGVyIHRoZSAjR3N0R0xDb250ZXh0IGhhcyBiZWVuIHNoYXJlZCB3aXRoIGFub3RoZXIgI0dzdEdMQ29udGV4dAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworICBpZiAoR1NUX0lTX0dMX1dSQVBQRURfQ09OVEVYVCAoY29udGV4dCkpCisgICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGNvbnRleHQtPnByaXYtPmFjdGl2ZV90aHJlYWQsIEZBTFNFKTsKKyAgZWxzZQorICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb250ZXh0LT5wcml2LT5hbGl2ZSwgRkFMU0UpOworCisgIHJldHVybiBfY29udGV4dF9zaGFyZV9ncm91cF9pc19zaGFyZWQgKGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXApOworfQorCisvKioKKyAqIGdzdF9nbF9jb250ZXh0X3NldF9zaGFyZWRfd2l0aDoKKyAqIEBjb250ZXh0OiBhIHdyYXBwZWQgI0dzdEdMQ29udGV4dAorICogQHNoYXJlOiBhbm90aGVyICNHc3RHTENvbnRleHQKKyAqCisgKiBXaWxsIGludGVybmFsbHkgc2V0IEBjb250ZXh0IGFzIHNoYXJlZCB3aXRoIEBzaGFyZQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX2NvbnRleHRfc2V0X3NoYXJlZF93aXRoIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTENvbnRleHQgKiBzaGFyZSkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKHNoYXJlKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKCFnc3RfZ2xfY29udGV4dF9pc19zaGFyZWQgKGNvbnRleHQpKTsKKyAgLyogWFhYOiBtYXkgYmUgYSBsaXR0bGUgdG9vIHN0cmljdCAqLworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV1JBUFBFRF9DT05URVhUIChjb250ZXh0KSk7CisKKyAgaWYgKGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXApCisgICAgX2NvbnRleHRfc2hhcmVfZ3JvdXBfdW5yZWYgKGNvbnRleHQtPnByaXYtPnNoYXJlZ3JvdXApOworICBjb250ZXh0LT5wcml2LT5zaGFyZWdyb3VwID0KKyAgICAgIF9jb250ZXh0X3NoYXJlX2dyb3VwX3JlZiAoc2hhcmUtPnByaXYtPnNoYXJlZ3JvdXApOworfQorCiBzdGF0aWMgR3N0R0xBUEkKIGdzdF9nbF93cmFwcGVkX2NvbnRleHRfZ2V0X2dsX2FwaSAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKIHsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRleHQuaAppbmRleCAxNmI5ZDExLi41Y2JjOGFkIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xjb250ZXh0LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udGV4dC5oCkBAIC0zMCw4ICszMCw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX0NPTlRFWFQgICAgICAgICAoZ3N0X2dsX2NvbnRleHRfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFQobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFQsIEdzdEdMQ29udGV4dCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGspLCBHU1RfR0xfVFlQRV9DT05URVhULCBHc3RHTENvbnRleHRDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFRfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFQpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgR3N0R0xDb250ZXh0Q2xhc3MpKQogR1R5cGUgZ3N0X2dsX2NvbnRleHRfZ2V0X3R5cGUgICAgICh2b2lkKTsKIApAQCAtMTM2LDcgKzEzNiw3IEBACiB2b2lkICAgICAgICAgIGdzdF9nbF9jb250ZXh0X2Rlc3Ryb3kgICAgICAgICAgKEdzdEdMQ29udGV4dCAqY29udGV4dCk7CiAKIGdwb2ludGVyICAgICAgZ3N0X2dsX2NvbnRleHRfZGVmYXVsdF9nZXRfcHJvY19hZGRyZXNzIChHc3RHTEFQSSBnbF9hcGksIGNvbnN0IGdjaGFyICpuYW1lKTsKLWdwb2ludGVyICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtIChHc3RHTFBsYXRmb3JtLCBHc3RHTEFQSSBnbF9hcGksIGNvbnN0IGdjaGFyICpuYW1lKTsKK2dwb2ludGVyICAgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X3Byb2NfYWRkcmVzc193aXRoX3BsYXRmb3JtIChHc3RHTFBsYXRmb3JtIGNvbnRleHRfdHlwZSwgR3N0R0xBUEkgZ2xfYXBpLCBjb25zdCBnY2hhciAqbmFtZSk7CiAKIGdib29sZWFuICAgICAgZ3N0X2dsX2NvbnRleHRfc2V0X3dpbmRvdyAoR3N0R0xDb250ZXh0ICpjb250ZXh0LCBHc3RHTFdpbmRvdyAqd2luZG93KTsKIEdzdEdMV2luZG93ICogZ3N0X2dsX2NvbnRleHRfZ2V0X3dpbmRvdyAoR3N0R0xDb250ZXh0ICpjb250ZXh0KTsKQEAgLTE0NSw5ICsxNDUsMTIgQEAKIGdib29sZWFuICAgICAgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xBUEkgYXBpLCBnaW50IG1haiwgZ2ludCBtaW4pOwogZ2Jvb2xlYW4gICAgICBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChHc3RHTENvbnRleHQgKmNvbnRleHQsIGNvbnN0IGdjaGFyICpmZWF0dXJlKTsKIAotZ3VpbnRwdHIgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfY3VycmVudF9nbF9jb250ZXh0ICAgICAoR3N0R0xQbGF0Zm9ybSBwbGF0Zm9ybSk7CitndWludHB0ciAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2NvbnRleHQgICAgIChHc3RHTFBsYXRmb3JtIGNvbnRleHRfdHlwZSk7CiBHc3RHTEFQSSAgICAgIGdzdF9nbF9jb250ZXh0X2dldF9jdXJyZW50X2dsX2FwaSAgICAgICAgIChHc3RHTFBsYXRmb3JtIHBsYXRmb3JtLCBndWludCAqbWFqb3IsIGd1aW50ICptaW5vcik7CiAKK2dib29sZWFuICAgICAgZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkICAgICAgICAgICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOwordm9pZCAgICAgICAgICBnc3RfZ2xfY29udGV4dF9zZXRfc2hhcmVkX3dpdGggICAgICAgICAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xDb250ZXh0ICogc2hhcmUpOworCiBnYm9vbGVhbiBnc3RfZ2xfY29udGV4dF9maWxsX2luZm8gKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdFcnJvciAqKiBlcnJvcik7CiAKIC8qIEZJWE1FOiByZW1vdmUgKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzRkZGQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5jCkBAIC0wLDAgKzEsMTU1IEBACisvKiAKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0Z2xjb250cm9sYmluZGluZ3Byb3h5LmgiCisKK0dfREVGSU5FX1RZUEUgKEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSwKKyAgICBnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5LCBHU1RfVFlQRV9DT05UUk9MX0JJTkRJTkcpOworCitzdGF0aWMgdm9pZAorZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9pbml0IChHc3RHTENvbnRyb2xCaW5kaW5nUHJveHkgKiBzZWxmKQoreworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfc3luY192YWx1ZXMgKEdzdENvbnRyb2xCaW5kaW5nICogYmluZGluZywKKyAgICBHc3RPYmplY3QgKiBvYmplY3QsIEdzdENsb2NrVGltZSB0aW1lc3RhbXAsIEdzdENsb2NrVGltZSBsYXN0X3N5bmMpCit7CisgIEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqc2VsZiA9IChHc3RHTENvbnRyb2xCaW5kaW5nUHJveHkgKikKKyAgICAgIGJpbmRpbmc7CisgIEdzdENvbnRyb2xCaW5kaW5nICpyZWZfYmluZGluZzsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKworICByZWZfYmluZGluZyA9IGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xfYmluZGluZyAoc2VsZi0+cmVmX29iamVjdCwKKyAgICAgIHNlbGYtPnByb3BlcnR5X25hbWUpOworCisgIGlmIChyZWZfYmluZGluZykgeworICAgIHJldCA9IGdzdF9jb250cm9sX2JpbmRpbmdfc3luY192YWx1ZXMgKHJlZl9iaW5kaW5nLCBzZWxmLT5yZWZfb2JqZWN0LAorICAgICAgICB0aW1lc3RhbXAsIGxhc3Rfc3luYyk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmVmX2JpbmRpbmcpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdWYWx1ZSAqCitnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZSAoR3N0Q29udHJvbEJpbmRpbmcgKiBiaW5kaW5nLAorICAgIEdzdENsb2NrVGltZSB0aW1lc3RhbXApCit7CisgIEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqc2VsZiA9IChHc3RHTENvbnRyb2xCaW5kaW5nUHJveHkgKikKKyAgICAgIGJpbmRpbmc7CisgIEdzdENvbnRyb2xCaW5kaW5nICpyZWZfYmluZGluZzsKKyAgR1ZhbHVlICpyZXQgPSBOVUxMOworCisgIHJlZl9iaW5kaW5nID0gZ3N0X29iamVjdF9nZXRfY29udHJvbF9iaW5kaW5nIChzZWxmLT5yZWZfb2JqZWN0LAorICAgICAgc2VsZi0+cHJvcGVydHlfbmFtZSk7CisKKyAgaWYgKHJlZl9iaW5kaW5nKSB7CisgICAgcmV0ID0gZ3N0X2NvbnRyb2xfYmluZGluZ19nZXRfdmFsdWUgKHJlZl9iaW5kaW5nLCB0aW1lc3RhbXApOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHJlZl9iaW5kaW5nKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9nZXRfdmFsdWVfYXJyYXkgKEdzdENvbnRyb2xCaW5kaW5nICogYmluZGluZywKKyAgICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLCBHc3RDbG9ja1RpbWUgaW50ZXJ2YWwsIGd1aW50IG5fdmFsdWVzLAorICAgIGdwb2ludGVyIHZhbHVlcykKK3sKKyAgR3N0R0xDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0gKEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqKQorICAgICAgYmluZGluZzsKKyAgR3N0Q29udHJvbEJpbmRpbmcgKnJlZl9iaW5kaW5nOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICByZWZfYmluZGluZyA9IGdzdF9vYmplY3RfZ2V0X2NvbnRyb2xfYmluZGluZyAoc2VsZi0+cmVmX29iamVjdCwKKyAgICAgIHNlbGYtPnByb3BlcnR5X25hbWUpOworCisgIGlmIChyZWZfYmluZGluZykgeworICAgIHJldCA9IGdzdF9jb250cm9sX2JpbmRpbmdfZ2V0X3ZhbHVlX2FycmF5IChyZWZfYmluZGluZywgdGltZXN0YW1wLAorICAgICAgICBpbnRlcnZhbCwgbl92YWx1ZXMsIHZhbHVlcyk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmVmX2JpbmRpbmcpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF9nX3ZhbHVlX2FycmF5IChHc3RDb250cm9sQmluZGluZyAqCisgICAgYmluZGluZywgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwgR3N0Q2xvY2tUaW1lIGludGVydmFsLCBndWludCBuX3ZhbHVlcywKKyAgICBHVmFsdWUgKiB2YWx1ZXMpCit7CisgIEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eSAqc2VsZiA9IChHc3RHTENvbnRyb2xCaW5kaW5nUHJveHkgKikKKyAgICAgIGJpbmRpbmc7CisgIEdzdENvbnRyb2xCaW5kaW5nICpyZWZfYmluZGluZzsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgcmVmX2JpbmRpbmcgPSBnc3Rfb2JqZWN0X2dldF9jb250cm9sX2JpbmRpbmcgKHNlbGYtPnJlZl9vYmplY3QsCisgICAgICBzZWxmLT5wcm9wZXJ0eV9uYW1lKTsKKworICBpZiAocmVmX2JpbmRpbmcpIHsKKyAgICByZXQgPSBnc3RfY29udHJvbF9iaW5kaW5nX2dldF9nX3ZhbHVlX2FycmF5IChyZWZfYmluZGluZywgdGltZXN0YW1wLAorICAgICAgICBpbnRlcnZhbCwgbl92YWx1ZXMsIHZhbHVlcyk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocmVmX2JpbmRpbmcpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworCitzdGF0aWMgdm9pZAorICAgIGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfY2xhc3NfaW5pdAorICAgIChHc3RHTENvbnRyb2xCaW5kaW5nUHJveHlDbGFzcyAqIGtsYXNzKQoreworICBHc3RDb250cm9sQmluZGluZ0NsYXNzICpjYl9jbGFzcyA9IEdTVF9DT05UUk9MX0JJTkRJTkdfQ0xBU1MgKGtsYXNzKTsKKworICBjYl9jbGFzcy0+c3luY192YWx1ZXMgPSBnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X3N5bmNfdmFsdWVzOworICBjYl9jbGFzcy0+Z2V0X3ZhbHVlID0gZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9nZXRfdmFsdWU7CisgIGNiX2NsYXNzLT5nZXRfdmFsdWVfYXJyYXkgPSBnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF92YWx1ZV9hcnJheTsKKyAgY2JfY2xhc3MtPmdldF9nX3ZhbHVlX2FycmF5ID0gZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9nZXRfZ192YWx1ZV9hcnJheTsKK30KKworR3N0Q29udHJvbEJpbmRpbmcgKgorZ3N0X2dsX2NvbnRyb2xfYmluZGluZ19wcm94eV9uZXcgKEdzdE9iamVjdCAqIG9iamVjdCwKKyAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsIEdzdE9iamVjdCAqIHJlZl9vYmplY3QsCisgICAgY29uc3QgZ2NoYXIgKiByZWZfcHJvcGVydHlfbmFtZSkKK3sKKyAgR3N0R0xDb250cm9sQmluZGluZ1Byb3h5ICpzZWxmID0KKyAgICAgIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfR0xfQ09OVFJPTF9CSU5ESU5HX1BST1hZLCAib2JqZWN0Iiwgb2JqZWN0LAorICAgICAgIm5hbWUiLCBwcm9wZXJ0eV9uYW1lLCBOVUxMKTsKKworICBzZWxmLT5yZWZfb2JqZWN0ID0gcmVmX29iamVjdDsKKyAgc2VsZi0+cHJvcGVydHlfbmFtZSA9IHJlZl9wcm9wZXJ0eV9uYW1lOworCisgIHJldHVybiAoR3N0Q29udHJvbEJpbmRpbmcgKikgc2VsZjsKK30KKwordm9pZAorZ3N0X2dsX29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nX3Byb3h5IChHc3RPYmplY3QgKiBvYmplY3QsCisgICAgR3N0T2JqZWN0ICogcmVmX29iamVjdCwgY29uc3QgZ2NoYXIgKiBwcm9wKQoreworICBHc3RDb250cm9sQmluZGluZyAqY2I7CisKKyAgY2IgPSBnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X25ldyAob2JqZWN0LCBwcm9wLCByZWZfb2JqZWN0LCBwcm9wKTsKKyAgZ3N0X29iamVjdF9hZGRfY29udHJvbF9iaW5kaW5nIChvYmplY3QsIGNiKTsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGNvbnRyb2xiaW5kaW5ncHJveHkuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iM2E5MzEwCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsY29udHJvbGJpbmRpbmdwcm94eS5oCkBAIC0wLDAgKzEsNTggQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9HTF9QUk9YWV9DT05UUk9MX0JJTkRJTkdfSF9fCisjZGVmaW5lIF9fR1NUX0dMX1BST1hZX0NPTlRST0xfQklORElOR19IX18KKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCitHX0JFR0lOX0RFQ0xTCisKK0dUeXBlIGdzdF9nbF9jb250cm9sX2JpbmRpbmdfcHJveHlfZ2V0X3R5cGUgKHZvaWQpOworI2RlZmluZSBHU1RfVFlQRV9HTF9DT05UUk9MX0JJTkRJTkdfUFJPWFkgIChnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X2dldF90eXBlKCkpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTENvbnRyb2xCaW5kaW5nUHJveHkgR3N0R0xDb250cm9sQmluZGluZ1Byb3h5OwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29udHJvbEJpbmRpbmdQcm94eUNsYXNzIEdzdEdMQ29udHJvbEJpbmRpbmdQcm94eUNsYXNzOworCitzdHJ1Y3QgX0dzdEdMQ29udHJvbEJpbmRpbmdQcm94eQoreworICBHc3RDb250cm9sQmluZGluZyBwYXJlbnQ7CisKKyAgR3N0T2JqZWN0ICpyZWZfb2JqZWN0OworICBjb25zdCBnY2hhciAqcHJvcGVydHlfbmFtZTsKK307CisKK3N0cnVjdCBfR3N0R0xDb250cm9sQmluZGluZ1Byb3h5Q2xhc3MKK3sKKyAgR3N0Q29udHJvbEJpbmRpbmdDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHc3RDb250cm9sQmluZGluZyAqICAgICBnc3RfZ2xfY29udHJvbF9iaW5kaW5nX3Byb3h5X25ldyAgICAgICAgICAgIChHc3RPYmplY3QgKiBvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIHByb3BlcnR5X25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RPYmplY3QgKiByZWZfb2JqZWN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiByZWZfcHJvcGVydHlfbmFtZSk7CisKK3ZvaWQgICAgICAgICAgICAgICAgICAgIGdzdF9nbF9vYmplY3RfYWRkX2NvbnRyb2xfYmluZGluZ19wcm94eSAgICAgKEdzdE9iamVjdCAqIG9iamVjdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdE9iamVjdCAqIHJlZl9vYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIHByb3ApOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfR0xfUFJPWFlfQ09OVFJPTF9CSU5ESU5HX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI4OWJmNgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmMKQEAgLTAsMCArMSw1MTggQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ2wuaCIKKyNpbmNsdWRlICJnc3RnbGRlYnVnLmgiCisjaW5jbHVkZSA8Z2xpYi9ncHJpbnRmLmg+CisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKy8qKgorICogU0VDVElPTjpnc3RnbGRlYnVnCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IGhlbHBlciByb3V0aW5lcyBmb3IgZGVhbGluZyB3aXRoIE9wZW5HTCBkZWJ1Z2dpbmcKKyAqIEB0aXRsZTogT3BlbkdMIGRlYnVnZ2luZworICogQHNlZV9hbHNvOiAjR3N0R0xDb250ZXh0CisgKi8KKworI2RlZmluZSBBU1lOQ19ERUJVR19GSUxMRUQgKDEgPDwgMCkKKyNkZWZpbmUgQVNZTkNfREVCVUdfRlJPWkVOICgxIDw8IDEpCisKKy8qIGNvbXBhdGliaWxpdHkgZGVmaW5lcyAqLworI2lmbmRlZiBHTF9ERUJVR19UWVBFX0VSUk9SCisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfRVJST1IgMHg4MjRDCisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfVFlQRV9ERVBSRUNBVEVEX0JFSEFWSU9SCisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUiAweDgyNEQKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUgorI2RlZmluZSBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUiAweDgyNEUKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19UWVBFX1BPUlRBQklMSVRZCisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFkgMHg4MjRGCisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfVFlQRV9QRVJGT1JNQU5DRQorI2RlZmluZSBHTF9ERUJVR19UWVBFX1BFUkZPUk1BTkNFIDB4ODI1MAorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1RZUEVfTUFSS0VSCisjZGVmaW5lIEdMX0RFQlVHX1RZUEVfTUFSS0VSIDB4ODI2OAorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1RZUEVfT1RIRVIKKyNkZWZpbmUgR0xfREVCVUdfVFlQRV9PVEhFUiAweDgyNTEKKyNlbmRpZgorCisjaWZuZGVmIEdMX0RFQlVHX1NFVkVSSVRZX0hJR0gKKyNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfSElHSCAweDkxNDYKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19TRVZFUklUWV9NRURJVU0KKyNkZWZpbmUgR0xfREVCVUdfU0VWRVJJVFlfTUVESVVNIDB4OTE0NworI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1NFVkVSSVRZX0xPVworI2RlZmluZSBHTF9ERUJVR19TRVZFUklUWV9MT1cgMHg5MTQ4CisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfU0VWRVJJVFlfTk9USUZJQ0FUSU9OCisjZGVmaW5lIEdMX0RFQlVHX1NFVkVSSVRZX05PVElGSUNBVElPTiAweDgyNkIKKyNlbmRpZgorCisjaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9BUEkKKyNkZWZpbmUgR0xfREVCVUdfU09VUkNFX0FQSSAweDgyNDYKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTQorI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTSAweDgyNDcKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfU0hBREVSX0NPTVBJTEVSCisjZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVIgMHg4MjQ4CisjZW5kaWYKKyNpZm5kZWYgR0xfREVCVUdfU09VUkNFX1RISVJEX1BBUlRZCisjZGVmaW5lIEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSAweDgyNDkKKyNlbmRpZgorI2lmbmRlZiBHTF9ERUJVR19TT1VSQ0VfQVBQTElDQVRJT04KKyNkZWZpbmUgR0xfREVCVUdfU09VUkNFX0FQUExJQ0FUSU9OIDB4ODI0QQorI2VuZGlmCisjaWZuZGVmIEdMX0RFQlVHX1NPVVJDRV9PVEhFUgorI2RlZmluZSBHTF9ERUJVR19TT1VSQ0VfT1RIRVIgMHg4MjRCCisjZW5kaWYKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3BlcmZvcm1hbmNlKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF9kZWJ1ZworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGRlZmF1bHRfZGVidWcpOworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X2dsX21hcmtlcl9kZWJ1Zyk7CisKK3N0YXRpYyB2b2lkCitfaW5pdF9kZWJ1ZyAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChnc3RfcGVyZm9ybWFuY2UsICJHU1RfUEVSRk9STUFOQ0UiKTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfR0VUIChnc3RfZ2xfZGVidWcsICJnbGRlYnVnIik7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoZGVmYXVsdF9kZWJ1ZywgImRlZmF1bHQiKTsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X2dsX21hcmtlcl9kZWJ1ZywgImdsZGVidWdtYXJrZXIiLCAwLAorICAgICAgICAiT3BlbkdMIE1hcmtlcnMiKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorX2ZyZWVfYXN5bmNfZGVidWdfZGF0YSAoR3N0R0xBc3luY0RlYnVnICogYWQpCit7CisgIGlmIChhZC0+ZGVidWdfbXNnKSB7CisgICAgZ19mcmVlIChhZC0+ZGVidWdfbXNnKTsKKyAgICBhZC0+ZGVidWdfbXNnID0gTlVMTDsKKyAgICBpZiAoYWQtPm9iamVjdCkKKyAgICAgIGdfb2JqZWN0X3VucmVmIChhZC0+b2JqZWN0KTsKKyAgICBhZC0+b2JqZWN0ID0gTlVMTDsKKyAgICBhZC0+c3RhdGVfZmxhZ3MgJj0gfkFTWU5DX0RFQlVHX0ZJTExFRDsKKyAgfQorfQorCisvKioKKyAqIGdzdF9nbF9hc3luY19kZWJ1Z19pbml0OgorICogQGFkOiBhICNHc3RHTEFzeW5jRGVidWcKKyAqCisgKiBJbml0aWFsaXplIEBhZC4gIEludGVuZGVkIGZvciB1c2Ugd2l0aCAjR3N0R0xBc3luY0RlYnVnJ3MgdGhhdCBhcmUgZW1iZWRkZWQKKyAqIGluIG90aGVyIHN0cnVjdHMuCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYXN5bmNfZGVidWdfaW5pdCAoR3N0R0xBc3luY0RlYnVnICogYWQpCit7CisgIF9pbml0X2RlYnVnICgpOworCisgIG1lbXNldCAoYWQsIDAsIHNpemVvZiAoKmFkKSk7Cit9CisKKy8qKgorICogZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0OgorICogQGFkOiBhICNHc3RHTEFzeW5jRGVidWcKKyAqCisgKiBVbnNldCBhbnkgZHluYW1pY2FsbHkgYWxsb2NhdGVkIGRhdGEuICBJbnRlbmRlZCBmb3IgdXNlIHdpdGgKKyAqICNHc3RHTEFzeW5jRGVidWcncyB0aGF0IGFyZSBlbWJlZGRlZCBpbiBvdGhlciBzdHJ1Y3RzLgorICovCit2b2lkCitnc3RfZ2xfYXN5bmNfZGVidWdfdW5zZXQgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkKQoreworICBnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2cgKGFkKTsKKworICBfZnJlZV9hc3luY19kZWJ1Z19kYXRhIChhZCk7CisKKyAgaWYgKGFkLT5ub3RpZnkpCisgICAgYWQtPm5vdGlmeSAoYWQtPnVzZXJfZGF0YSk7Cit9CisKKy8qKgorICogZ3N0X2dsX2FzeW5jX2RlYnVnX25ldzoKKyAqIEBhZDogYSAjR3N0R0xBc3luY0RlYnVnCisgKgorICogRnJlZSB3aXRoIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlKCkKKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0R0xBc3luY0RlYnVnCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTEFzeW5jRGVidWcgKgorZ3N0X2dsX2FzeW5jX2RlYnVnX25ldyAodm9pZCkKK3sKKyAgcmV0dXJuIGdfbmV3MCAoR3N0R0xBc3luY0RlYnVnLCAxKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZToKKyAqIEBhZDogYSAjR3N0R0xBc3luY0RlYnVnCisgKgorICogRnJlZXMgQGFkCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZSAoR3N0R0xBc3luY0RlYnVnICogYWQpCit7CisgIGdzdF9nbF9hc3luY19kZWJ1Z191bnNldCAoYWQpOworICBnX2ZyZWUgKGFkKTsKK30KKworLyoqCisgKiBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplOgorICogQGFkOiBhICNHc3RHTEFzeW5jRGVidWcKKyAqCisgKiBmcmVlemUgdGhlIGRlYnVnIG91dHB1dC4gIFdoaWxlIGZyb3plbiwgYW55IGNhbGwgdG8KKyAqIGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZygpIHdpbGwgbm90IG91dHB1dCBhbnkgbWVzc2FnZXMgYnV0CisgKiBzdWJzZXF1ZW50IGNhbGxzIHRvIGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnKCkgd2lsbCBvdmVyd3JpdGUgcHJldmlvdXMKKyAqIG1lc3NhZ2VzLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSAoR3N0R0xBc3luY0RlYnVnICogYWQpCit7CisgIGFkLT5zdGF0ZV9mbGFncyB8PSBBU1lOQ19ERUJVR19GUk9aRU47Cit9CisKKy8qKgorICogZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXc6CisgKiBAYWQ6IGEgI0dzdEdMQXN5bmNEZWJ1ZworICoKKyAqIHVuZnJlZXplIHRoZSBkZWJ1ZyBvdXRwdXQuICBTZWUgZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSgpIGZvciB3aGF0IGZyZWV6aW5nIG1lYW5zCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYXN5bmNfZGVidWdfdGhhdyAoR3N0R0xBc3luY0RlYnVnICogYWQpCit7CisgIGFkLT5zdGF0ZV9mbGFncyAmPSB+QVNZTkNfREVCVUdfRlJPWkVOOworfQorCisjaWYgIWRlZmluZWQoR1NUX0RJU0FCTEVfR1NUX0RFQlVHKQorCitzdGF0aWMgaW5saW5lIGNvbnN0IGdjaGFyICoKK19kZWJ1Z19zZXZlcml0eV90b19zdHJpbmcgKEdMZW51bSBzZXZlcml0eSkKK3sKKyAgc3dpdGNoIChzZXZlcml0eSkgeworICAgIGNhc2UgR0xfREVCVUdfU0VWRVJJVFlfSElHSDoKKyAgICAgIHJldHVybiAiaGlnaCI7CisgICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9NRURJVU06CisgICAgICByZXR1cm4gIm1lZGl1bSI7CisgICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9MT1c6CisgICAgICByZXR1cm4gImxvdyI7CisgICAgY2FzZSBHTF9ERUJVR19TRVZFUklUWV9OT1RJRklDQVRJT046CisgICAgICByZXR1cm4gIm5vdGlmaWNhdGlvbiI7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAiaW52YWxpZCI7CisgIH0KK30KKworc3RhdGljIGlubGluZSBjb25zdCBnY2hhciAqCitfZGVidWdfc291cmNlX3RvX3N0cmluZyAoR0xlbnVtIHNvdXJjZSkKK3sKKyAgc3dpdGNoIChzb3VyY2UpIHsKKyAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9BUEk6CisgICAgICByZXR1cm4gIkFQSSI7CisgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfV0lORE9XX1NZU1RFTToKKyAgICAgIHJldHVybiAid2luc3lzIjsKKyAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9TSEFERVJfQ09NUElMRVI6CisgICAgICByZXR1cm4gInNoYWRlciBjb21waWxlciI7CisgICAgY2FzZSBHTF9ERUJVR19TT1VSQ0VfVEhJUkRfUEFSVFk6CisgICAgICByZXR1cm4gInRoaXJkIHBhcnR5IjsKKyAgICBjYXNlIEdMX0RFQlVHX1NPVVJDRV9BUFBMSUNBVElPTjoKKyAgICAgIHJldHVybiAiYXBwbGljYXRpb24iOworICAgIGNhc2UgR0xfREVCVUdfU09VUkNFX09USEVSOgorICAgICAgcmV0dXJuICJvdGhlciI7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAiaW52YWxpZCI7CisgIH0KK30KKworc3RhdGljIGlubGluZSBjb25zdCBnY2hhciAqCitfZGVidWdfdHlwZV90b19zdHJpbmcgKEdMZW51bSB0eXBlKQoreworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfRVJST1I6CisgICAgICByZXR1cm4gImVycm9yIjsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUjoKKyAgICAgIHJldHVybiAiZGVwcmVjYXRlZCI7CisgICAgY2FzZSBHTF9ERUJVR19UWVBFX1VOREVGSU5FRF9CRUhBVklPUjoKKyAgICAgIHJldHVybiAidW5kZWZpbmVkIjsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFk6CisgICAgICByZXR1cm4gInBvcnRhYmlsaXR5IjsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0U6CisgICAgICByZXR1cm4gInBlcmZvcm1hbmNlIjsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfTUFSS0VSOgorICAgICAgcmV0dXJuICJkZWJ1ZyBtYXJrZXIiOworICAgIGNhc2UgR0xfREVCVUdfVFlQRV9PVEhFUjoKKyAgICAgIHJldHVybiAib3RoZXIiOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gImludmFsaWQiOworICB9Cit9CisKK3N0YXRpYyB2b2lkIEdTVEdMQVBJCitfZ3N0X2dsX2RlYnVnX2NhbGxiYWNrIChHTGVudW0gc291cmNlLCBHTGVudW0gdHlwZSwgR0x1aW50IGlkLCBHTGVudW0gc2V2ZXJpdHksCisgICAgR0xzaXplaSBsZW5ndGgsIGNvbnN0IGdjaGFyICogbWVzc2FnZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSB1c2VyX2RhdGE7CisgIGNvbnN0IGdjaGFyICpzZXZlcml0eV9zdHIgPSBfZGVidWdfc2V2ZXJpdHlfdG9fc3RyaW5nIChzZXZlcml0eSk7CisgIGNvbnN0IGdjaGFyICpzb3VyY2Vfc3RyID0gX2RlYnVnX3NvdXJjZV90b19zdHJpbmcgKHNvdXJjZSk7CisgIGNvbnN0IGdjaGFyICp0eXBlX3N0ciA9IF9kZWJ1Z190eXBlX3RvX3N0cmluZyAodHlwZSk7CisKKyAgX2luaXRfZGVidWcgKCk7CisKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBHTF9ERUJVR19UWVBFX0VSUk9SOgorICAgIGNhc2UgR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1I6CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChjb250ZXh0LCAiJXM6IEdMICVzIGZyb20gJXMgaWQ6JXUsICVzIiwgc2V2ZXJpdHlfc3RyLAorICAgICAgICAgIHR5cGVfc3RyLCBzb3VyY2Vfc3RyLCBpZCwgbWVzc2FnZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfREVQUkVDQVRFRF9CRUhBVklPUjoKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUE9SVEFCSUxJVFk6CisgICAgICBHU1RfRklYTUVfT0JKRUNUIChjb250ZXh0LCAiJXM6IEdMICVzIGZyb20gJXMgaWQ6JXUsICVzIiwgc2V2ZXJpdHlfc3RyLAorICAgICAgICAgIHR5cGVfc3RyLCBzb3VyY2Vfc3RyLCBpZCwgbWVzc2FnZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdMX0RFQlVHX1RZUEVfUEVSRk9STUFOQ0U6CisgICAgICBHU1RfQ0FUX0RFQlVHX09CSkVDVCAoZ3N0X3BlcmZvcm1hbmNlLCBjb250ZXh0LCAiJXM6IEdMICVzIGZyb20gJXMgaWQ6JXUsIgorICAgICAgICAgICIgJXMiLCBzZXZlcml0eV9zdHIsIHR5cGVfc3RyLCBzb3VyY2Vfc3RyLCBpZCwgbWVzc2FnZSk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR1NUX0RFQlVHX09CSkVDVCAoY29udGV4dCwgIiVzOiBHTCAlcyBmcm9tICVzIGlkOiV1LCAlcyIsIHNldmVyaXR5X3N0ciwKKyAgICAgICAgICB0eXBlX3N0ciwgc291cmNlX3N0ciwgaWQsIG1lc3NhZ2UpOworICAgICAgYnJlYWs7CisgIH0KK30KKworR19HTlVDX0lOVEVSTkFMIHZvaWQgX2dzdF9nbF9kZWJ1Z19lbmFibGUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworCitHX0dOVUNfSU5URVJOQUwgdm9pZAorX2dzdF9nbF9kZWJ1Z19lbmFibGUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBHc3REZWJ1Z0xldmVsIGxldmVsOworICBHTGVudW0gZGVidWdfdHlwZXNbOF07CisgIGd1aW50IGksIG4gPSAwOworCisgIF9pbml0X2RlYnVnICgpOworCisgIGlmICghZ2wtPkRlYnVnTWVzc2FnZUNhbGxiYWNrKSB7CisgICAgR1NUX0NBVF9JTkZPX09CSkVDVCAoZ3N0X2dsX2NvbnRleHRfZGVidWcsIGNvbnRleHQsCisgICAgICAgICJObyBkZWJ1Z2dpbmcgc3VwcG9ydCBhdmFpbGFibGUiKTsKKyAgICByZXR1cm47CisgIH0KKworICBsZXZlbCA9IGdzdF9kZWJ1Z19jYXRlZ29yeV9nZXRfdGhyZXNob2xkIChnc3RfZ2xfZGVidWcpOworCisgIGlmIChsZXZlbCA8IEdTVF9MRVZFTF9FUlJPUikgeworICAgIEdTVF9DQVRfSU5GT19PQkpFQ1QgKGdzdF9nbF9jb250ZXh0X2RlYnVnLCBjb250ZXh0LAorICAgICAgICAiRGlzYWJsaW5nIEdMIGNvbnRleHQgZGVidWdnaW5nIChnbGRlYnVnIGNhdGVnb3J5IGRlYnVnIGxldmVsIDwgZXJyb3IpIik7CisgICAgcmV0dXJuOworICB9CisKKyAgR1NUX0NBVF9JTkZPX09CSkVDVCAoZ3N0X2dsX2NvbnRleHRfZGVidWcsIGNvbnRleHQsCisgICAgICAiRW5hYmxpbmcgR0wgY29udGV4dCBkZWJ1Z2dpbmciKTsKKworICBnbC0+RGVidWdNZXNzYWdlQ2FsbGJhY2sgKF9nc3RfZ2xfZGVidWdfY2FsbGJhY2ssIGNvbnRleHQpOworICBpZiAobGV2ZWwgPj0gR1NUX0xFVkVMX0RFQlVHKSB7CisgICAgLyogZW5hYmxlIHRoZW0gYWxsICovCisgICAgZ2wtPkRlYnVnTWVzc2FnZUNvbnRyb2wgKEdMX0RPTlRfQ0FSRSwgR0xfRE9OVF9DQVJFLCBHTF9ET05UX0NBUkUsIDAsIDAsCisgICAgICAgIEdMX1RSVUUpOworICB9IGVsc2UgeworICAgIGlmIChsZXZlbCA+PSBHU1RfTEVWRUxfRklYTUUpIHsKKyAgICAgIGRlYnVnX3R5cGVzW24rK10gPSBHTF9ERUJVR19UWVBFX0RFUFJFQ0FURURfQkVIQVZJT1I7CisgICAgICBkZWJ1Z190eXBlc1tuKytdID0gR0xfREVCVUdfVFlQRV9QT1JUQUJJTElUWTsKKyAgICB9CisgICAgaWYgKGxldmVsID49IEdTVF9MRVZFTF9FUlJPUikgeworICAgICAgZGVidWdfdHlwZXNbbisrXSA9IEdMX0RFQlVHX1RZUEVfRVJST1I7CisgICAgICBkZWJ1Z190eXBlc1tuKytdID0gR0xfREVCVUdfVFlQRV9VTkRFRklORURfQkVIQVZJT1I7CisgICAgfQorICAgIGdfYXNzZXJ0IChuIDwgR19OX0VMRU1FTlRTIChkZWJ1Z190eXBlcykpOworICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgIGdsLT5EZWJ1Z01lc3NhZ2VDb250cm9sIChHTF9ET05UX0NBUkUsIGRlYnVnX3R5cGVzW2ldLCBHTF9ET05UX0NBUkUsCisgICAgICAgICAgMCwgMCwgR0xfVFJVRSk7CisgICAgfQorICB9Cit9CisKKy8qKgorICogZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXI6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAZm9ybWF0OiBhIHByaW50Zi1zdHlsZSBmb3JtYXQgc3RyaW5nCisgKiBALi4uOiBhcmd1bWVudHMgZm9ybSBAZm9ybWF0CisgKgorICogSW5zZXJ0cyBhIG1hcmtlciBpbnRvIGEgR0wgZGVidWcgc3RyZWFtLiAgUmVxdWlyZXMgdGhlICdnbGRlYnVnbWFya2VyJworICogZGVidWcgY2F0ZWdvcnkgdG8gYmUgYXQgbGVhc3QgJUdTVF9MRVZFTF9GSVhNRS4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBjb25zdCBnY2hhciAqIGZvcm1hdCwgLi4uKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ2NoYXIgKnN0cmluZzsKKyAgZ2ludCBsZW47CisgIHZhX2xpc3QgYXJnczsKKworICBfaW5pdF9kZWJ1ZyAoKTsKKworICAvKiBhcmUgd2UgZW5hYmxlZCAqLworICBpZiAoZ3N0X2RlYnVnX2NhdGVnb3J5X2dldF90aHJlc2hvbGQgKGdzdF9nbF9tYXJrZXJfZGVidWcpIDwgR1NUX0xFVkVMX0ZJWE1FKQorICAgIHJldHVybjsKKworICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKKyAgbGVuID0gZ3N0X2luZm9fdmFzcHJpbnRmICgmc3RyaW5nLCBmb3JtYXQsIGFyZ3MpOworICB2YV9lbmQgKGFyZ3MpOworCisgIC8qIGdzdF9pbmZvX3Zhc3ByaW50ZigpIHJldHVybnMgLTEgb24gZXJyb3IsIHRoZSB2YXJpb3VzIGRlYnVnIG1hcmtlcgorICAgKiBmdW5jdGlvbnMgdGFrZSBsZW49LTEgdG8gbWVhbiBudWxsIHRlcm1pbmF0ZWQgKi8KKyAgaWYgKGxlbiA8IDAgfHwgc3RyaW5nID09IE5VTEwpCisgICAgLyogbm8gZGVidWcgb3V0cHV0ICovCisgICAgcmV0dXJuOworCisgIGlmIChnbC0+RGVidWdNZXNzYWdlSW5zZXJ0KQorICAgIGdsLT5EZWJ1Z01lc3NhZ2VJbnNlcnQgKEdMX0RFQlVHX1NPVVJDRV9USElSRF9QQVJUWSwgR0xfREVCVUdfVFlQRV9NQVJLRVIsCisgICAgICAgIDAsIEdMX0RFQlVHX1NFVkVSSVRZX0xPVywgKGdzaXplKSBsZW4sIHN0cmluZyk7CisgIGVsc2UgaWYgKGdsLT5JbnNlcnRFdmVudE1hcmtlcikKKyAgICBnbC0+SW5zZXJ0RXZlbnRNYXJrZXIgKGxlbiwgc3RyaW5nKTsKKyAgZWxzZSBpZiAoZ2wtPlN0cmluZ01hcmtlcikKKyAgICBnbC0+U3RyaW5nTWFya2VyIChsZW4sIHN0cmluZyk7CisKKyAgZ19mcmVlIChzdHJpbmcpOworfQorCisvKioKKyAqIGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdDoKKyAqIEBhZDogdGhlICNHc3RHTEFzeW5jRGVidWcgdG8gc3RvcmUgdGhlIG1lc3NhZ2UgaW4KKyAqIEBjYXQ6IHRoZSAjR3N0RGVidWdDYXRlZ29yeSB0byBvdXRwdXQgdGhlIG1lc3NhZ2UgaW4KKyAqIEBsZXZlbDogdGhlICNHc3RMZXZlbAorICogQGZpbGU6IHRoZSBmaWxlIHdoZXJlIHRoZSBkZWJ1ZyBtZXNzYWdlIG9yaWdpbmF0ZXMgZnJvbQorICogQGZ1bmN0aW9uOiB0aGUgZnVuY3Rpb24gd2hlcmUgdGhlIGRlYnVnIG1lc3NhZ2Ugb3JpZ2luYXRlcyBmcm9tCisgKiBAbGluZTogdGhlIGxpbmUgaW4gQGZpbGUgd2hlcmUgdGhlIGRlYnVnIG1lc3NhZ2Ugb3JpZ2luYXRlcyBmcm9tCisgKiBAb2JqZWN0OiAoYWxsb3ctbm9uZSk6IGEgI0dPYmplY3QgdG8gYXNzb2NpYXRlIHdpdGggdGhlIGRlYnVnIG1lc3NhZ2UKKyAqIEBmb3JtYXQ6IGEgcHJpbnRmIHN0eWxlIGZvcm1hdCBzdHJpbmcKKyAqIEB2YXJhcmdzOiB0aGUgbGlzdCBvZiBhcmd1bWVudHMgZm9yIEBmb3JtYXQKKyAqCisgKiBTdG9yZXMgYSBkZWJ1ZyBtZXNzYWdlIGZvciBsYXRlciBvdXRwdXQgYnkgZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnKCkKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdCAoR3N0R0xBc3luY0RlYnVnICogYWQsCisgICAgR3N0RGVidWdDYXRlZ29yeSAqIGNhdCwgR3N0RGVidWdMZXZlbCBsZXZlbCwgY29uc3QgZ2NoYXIgKiBmaWxlLAorICAgIGNvbnN0IGdjaGFyICogZnVuY3Rpb24sIGdpbnQgbGluZSwgR09iamVjdCAqIG9iamVjdCwgY29uc3QgZ2NoYXIgKiBmb3JtYXQsCisgICAgdmFfbGlzdCB2YXJhcmdzKQoreworICBnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2cgKGFkKTsKKyAgX2ZyZWVfYXN5bmNfZGVidWdfZGF0YSAoYWQpOworCisgIGlmIChHX1VOTElLRUxZIChsZXZlbCA8PSBHU1RfTEVWRUxfTUFYICYmIGxldmVsIDw9IF9nc3RfZGVidWdfbWluKSkgeworICAgIGlmICghY2F0KQorICAgICAgY2F0ID0gZGVmYXVsdF9kZWJ1ZzsKKworICAgIGFkLT5jYXQgPSBjYXQ7CisgICAgYWQtPmxldmVsID0gbGV2ZWw7CisgICAgYWQtPmZpbGUgPSBmaWxlOworICAgIGFkLT5mdW5jdGlvbiA9IGZ1bmN0aW9uOworICAgIGFkLT5saW5lID0gbGluZTsKKyAgICBpZiAob2JqZWN0KQorICAgICAgYWQtPm9iamVjdCA9IGdfb2JqZWN0X3JlZiAob2JqZWN0KTsKKyAgICBlbHNlCisgICAgICBhZC0+b2JqZWN0ID0gTlVMTDsKKworICAgIGFkLT5kZWJ1Z19tc2cgPSBnc3RfaW5mb19zdHJkdXBfdnByaW50ZiAoZm9ybWF0LCB2YXJhcmdzKTsKKyAgICBhZC0+c3RhdGVfZmxhZ3MgfD0gQVNZTkNfREVCVUdfRklMTEVEOworICB9Cit9CisKKy8qKgorICogZ3N0X2dsX2FzeW5jX2RlYnVnX291dHB1dF9sb2dfbXNnOgorICogQGFkOiB0aGUgI0dzdEdMQXN5bmNEZWJ1ZyB0byBzdG9yZSB0aGUgbWVzc2FnZSBpbgorICoKKyAqIE91dHB1dHMgYSBwcmV2aW91c2x5IHN0b3JlZCBkZWJ1ZyBtZXNzYWdlLgorICovCit2b2lkCitnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2cgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkKQoreworICBpZiAoKGFkLT5zdGF0ZV9mbGFncyAmIEFTWU5DX0RFQlVHX0ZJTExFRCkgIT0gMAorICAgICAgJiYgKGFkLT5zdGF0ZV9mbGFncyAmIEFTWU5DX0RFQlVHX0ZST1pFTikgPT0gMCkgeworICAgIGdjaGFyICptc2cgPSBOVUxMOworCisgICAgaWYgKGFkLT5jYWxsYmFjaykKKyAgICAgIG1zZyA9IGFkLT5jYWxsYmFjayAoYWQtPnVzZXJfZGF0YSk7CisKKyAgICBnc3RfZGVidWdfbG9nIChhZC0+Y2F0LCBhZC0+bGV2ZWwsIGFkLT5maWxlLCBhZC0+ZnVuY3Rpb24sIGFkLT5saW5lLAorICAgICAgICBhZC0+b2JqZWN0LCAiJXMgJXMiLCBHU1RfU1RSX05VTEwgKGFkLT5kZWJ1Z19tc2cpLCBtc2cgPyBtc2cgOiAiIik7CisgICAgZ19mcmVlIChtc2cpOworICAgIF9mcmVlX2FzeW5jX2RlYnVnX2RhdGEgKGFkKTsKKyAgfQorfQorCisvKioKKyAqIGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnOgorICogQGFkOiB0aGUgI0dzdEdMQXN5bmNEZWJ1ZyB0byBzdG9yZSB0aGUgbWVzc2FnZSBpbgorICogQGNhdDogdGhlICNHc3REZWJ1Z0NhdGVnb3J5IHRvIG91dHB1dCB0aGUgbWVzc2FnZSBpbgorICogQGxldmVsOiB0aGUgI0dzdExldmVsCisgKiBAZmlsZTogdGhlIGZpbGUgd2hlcmUgdGhlIGRlYnVnIG1lc3NhZ2Ugb3JpZ2luYXRlcyBmcm9tCisgKiBAZnVuY3Rpb246IHRoZSBmdW5jdGlvbiB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb20KKyAqIEBsaW5lOiB0aGUgbGluZSBpbiBAZmlsZSB3aGVyZSB0aGUgZGVidWcgbWVzc2FnZSBvcmlnaW5hdGVzIGZyb20KKyAqIEBvYmplY3Q6IChhbGxvdy1ub25lKTogYSAjR09iamVjdCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGVidWcgbWVzc2FnZQorICogQGZvcm1hdDogYSBwcmludGYgc3R5bGUgZm9ybWF0IHN0cmluZworICogQC4uLjogdGhlIGxpc3Qgb2YgYXJndW1lbnRzIGZvciBAZm9ybWF0CisgKgorICogU3RvcmVzIGEgZGVidWcgbWVzc2FnZSBmb3IgbGF0ZXIgb3V0cHV0IGJ5IGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZygpCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZyAoR3N0R0xBc3luY0RlYnVnICogYWQsIEdzdERlYnVnQ2F0ZWdvcnkgKiBjYXQsCisgICAgR3N0RGVidWdMZXZlbCBsZXZlbCwgY29uc3QgZ2NoYXIgKiBmaWxlLCBjb25zdCBnY2hhciAqIGZ1bmN0aW9uLCBnaW50IGxpbmUsCisgICAgR09iamVjdCAqIG9iamVjdCwgY29uc3QgZ2NoYXIgKiBmb3JtYXQsIC4uLikKK3sKKyAgdmFfbGlzdCB2YXJhcmdzOworCisgIGlmIChHX1VOTElLRUxZIChsZXZlbCA8PSBHU1RfTEVWRUxfTUFYICYmIGxldmVsIDw9IF9nc3RfZGVidWdfbWluKSkgeworICAgIHZhX3N0YXJ0ICh2YXJhcmdzLCBmb3JtYXQpOworICAgIGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnX3ZhbGlzdCAoYWQsIGNhdCwgbGV2ZWwsIGZpbGUsIGZ1bmN0aW9uLAorICAgICAgICBsaW5lLCBvYmplY3QsIGZvcm1hdCwgdmFyYXJncyk7CisgICAgdmFfZW5kICh2YXJhcmdzKTsKKyAgfQorfQorI2Vsc2UKK0dfR05VQ19JTlRFUk5BTCB2b2lkIF9nc3RfZ2xfZGVidWdfZW5hYmxlIChHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGVidWcuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2OGEyYgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRlYnVnLmgKQEAgLTAsMCArMSwxNzIgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9HTF9ERUJVR19IX18KKyNkZWZpbmUgX19HU1RfR0xfREVCVUdfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0R0xBc3luY0RlYnVnIEdzdEdMQXN5bmNEZWJ1ZzsKKwordHlwZWRlZiBnY2hhciAqICgqR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZSkgKGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKy8qKgorICogR3N0R0xBc3luY0RlYnVnOgorICoKKyAqICNHc3RHTEFzeW5jRGVidWcgYW4gb3BhcXVlIHN0cnVjdHVyZSBhbmQgc2hvdWxkIG9ubHkgYmUgYWNjZXNzZWQgdGhyb3VnaCB0aGUKKyAqIHByb3ZpZGVkIEFQSS4KKyAqLworc3RydWN0IF9Hc3RHTEFzeW5jRGVidWcKK3sKKyAgLyogPHByaXZhdGU+ICovCisgIGd1aW50ICAgICAgICAgICAgIHN0YXRlX2ZsYWdzOworICBHc3REZWJ1Z0NhdGVnb3J5ICpjYXQ7CisgIEdzdERlYnVnTGV2ZWwgICAgIGxldmVsOworICBjb25zdCBnY2hhciAgICAgICpmaWxlOworICBjb25zdCBnY2hhciAgICAgICpmdW5jdGlvbjsKKyAgZ2ludCAgICAgICAgICAgICAgbGluZTsKKyAgR09iamVjdCAgICAgICAgICAqb2JqZWN0OworICBnY2hhciAgICAgICAgICAgICpkZWJ1Z19tc2c7CisKKyAgLyogPHByb3RlY3RlZD4gKi8KKyAgR3N0R0xBc3luY0RlYnVnTG9nR2V0TWVzc2FnZSBjYWxsYmFjazsKKyAgZ3BvaW50ZXIgICAgICAgICAgdXNlcl9kYXRhOworICBHRGVzdHJveU5vdGlmeSAgICBub3RpZnk7Cit9OworCitHc3RHTEFzeW5jRGVidWcgKiAgIGdzdF9nbF9hc3luY19kZWJ1Z19uZXcgICAgICAgICAgICAgICAgICAgICAgKHZvaWQpOwordm9pZCAgICAgICAgICAgICAgICBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZSAgICAgICAgICAgICAgICAgICAgIChHc3RHTEFzeW5jRGVidWcgKiBhZCk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9hc3luY19kZWJ1Z19pbml0ICAgICAgICAgICAgICAgICAgICAgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkKTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0ICAgICAgICAgICAgICAgICAgICAoR3N0R0xBc3luY0RlYnVnICogYWQpOwordm9pZCAgICAgICAgICAgICAgICBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplICAgICAgICAgICAgICAgICAgIChHc3RHTEFzeW5jRGVidWcgKiBhZCk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9hc3luY19kZWJ1Z190aGF3ICAgICAgICAgICAgICAgICAgICAgKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkKTsKKworLyoqCisgKiBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3Q6CisgKiBAYWQ6IHRoZSAjR3N0R0xBc3luY0RlYnVnIHRvIHN0b3JlIHRoZSBtZXNzYWdlIGluCisgKiBAY2F0OiB0aGUgI0dzdERlYnVnQ2F0ZWdvcnkgdG8gb3V0cHV0IHRoZSBtZXNzYWdlIGluCisgKiBAbGV2ZWw6IHRoZSAjR3N0TGV2ZWwKKyAqIEBvYmplY3Q6IChhbGxvdy1ub25lKTogYSAjR09iamVjdCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGVidWcgbWVzc2FnZQorICogQGZvcm1hdDogYSBwcmludGYgc3R5bGUgZm9ybWF0IHN0cmluZworICogQHZhcmFyZ3M6IHRoZSBsaXN0IG9mIGFyZ3VtZW50cyBmb3IgQGZvcm1hdAorICoKKyAqIFN0b3JlcyBhIGRlYnVnIG1lc3NhZ2UgaW4gQGFkIGZvciBsYXRlciBvdXRwdXQKKyAqLworI2RlZmluZSBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPR192YWxpc3QoYWQsY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsdmFyYXJncykgICBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0IChhZCwgY2F0LCBsZXZlbCwgX19GSUxFX18sICAgICAgICAgIFwKKyAgICAgICAgR1NUX0ZVTkNUSU9OLCBfX0xJTkVfXywgb2JqZWN0LCBmb3JtYXQsIHZhcmFyZ3MpCisKKy8qKgorICogR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0c6CisgKiBAYWQ6IHRoZSAjR3N0R0xBc3luY0RlYnVnIHRvIHN0b3JlIHRoZSBtZXNzYWdlIGluCisgKiBAY2F0OiB0aGUgI0dzdERlYnVnQ2F0ZWdvcnkgdG8gb3V0cHV0IHRoZSBtZXNzYWdlIGluCisgKiBAbGV2ZWw6IHRoZSAjR3N0TGV2ZWwKKyAqIEBvYmplY3Q6IChhbGxvdy1ub25lKTogYSAjR09iamVjdCB0byBhc3NvY2lhdGUgd2l0aCB0aGUgZGVidWcgbWVzc2FnZQorICogQGZvcm1hdDogYSBwcmludGYgc3R5bGUgZm9ybWF0IHN0cmluZworICogQC4uLjogdGhlIGxpc3Qgb2YgYXJndW1lbnRzIGZvciBAZm9ybWF0CisgKgorICogU3RvcmVzIGEgZGVidWcgbWVzc2FnZSBpbiBAYWQgZm9yIGxhdGVyIG91dHB1dAorICovCisjaWYgR19IQVZFX0lTT19WQVJBUkdTCisjZGVmaW5lIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKGFkLGNhdCxsZXZlbCxvYmplY3QsZm9ybWF0LC4uLikgICAgICAgICAgICAgIFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfc3RvcmVfbG9nX21zZyAoYWQsIGNhdCwgbGV2ZWwsIF9fRklMRV9fLCBHU1RfRlVOQ1RJT04sICAgXAorICAgICAgICBfX0xJTkVfXywgb2JqZWN0LCBmb3JtYXQsIF9fVkFfQVJHU19fKQorI2Vsc2UgLyogR19IQVZFX0lTT19WQVJBUkdTICovCisjaWYgR19IQVZFX0dOVUNfVkFSQVJHUworI2RlZmluZSBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRyhhZCxjYXQsbGV2ZWwsb2JqZWN0LGZvcm1hdCxhcmdzLi4uKSAgICAgICAgICBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2cgKGFkLCBjYXQsIGxldmVsLCBfX0ZJTEVfXywgR1NUX0ZVTkNUSU9OLCAgIFwKKyAgICAgICAgX19MSU5FX18sIG9iamVjdCwgZm9ybWF0LCAjI2FyZ3MpCisjZWxzZSAvKiBHX0hBVkVfR05VQ19WQVJBUkdTICovCitzdGF0aWMgaW5saW5lIHZvaWQKK0dTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HKEdzdEdMQXN5bmNEZWJ1ZyAqIGFkLCBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0LAorICAgIEdzdERlYnVnTGV2ZWwgbGV2ZWwsIEdPYmplY3QgKiBvYmplY3QsIGNvbnN0IGdjaGFyICogZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgdmFyYXJnczsKKworICB2YV9zdGFydCAodmFyYXJncywgZm9ybWF0KTsKKyAgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0dfdmFsaXN0IChhZCwgY2F0LCBsZXZlbCwgb2JqZWN0LCBmb3JtYXQsIHZhcmFyZ3MpOworICB2YV9lbmQgKHZhcmFyZ3MpOworfQorI2VuZGlmIC8qIEdfSEFWRV9HTlVDX1ZBUkFSR1MgKi8KKyNlbmRpZiAvKiBHX0hBVkVfSVNPX1ZBUkFSR1MgKi8KKworI2lmICFkZWZpbmVkKEdTVF9ESVNBQkxFX0dTVF9ERUJVRykKKwordm9pZCAgICAgICAgZ3N0X2dsX2luc2VydF9kZWJ1Z19tYXJrZXIgICAgICAgICAgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGZvcm1hdCwgLi4uKSBHX0dOVUNfUFJJTlRGICgyLCAzKTsKK3ZvaWQgICAgICAgIGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyAgICAgICAoR3N0R0xBc3luY0RlYnVnICogYWQpOwordm9pZCAgICAgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2cgICAgICAgIChHc3RHTEFzeW5jRGVidWcgKiBhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0RGVidWdDYXRlZ29yeSAqIGNhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0RGVidWdMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3QgKiBvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogZm9ybWF0LCAuLi4pIEdfR05VQ19QUklOVEYgKDgsIDkpOwordm9pZCAgICAgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0IChHc3RHTEFzeW5jRGVidWcgKiBhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0RGVidWdDYXRlZ29yeSAqIGNhdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0RGVidWdMZXZlbCBsZXZlbCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBmaWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqIGZ1bmN0aW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGxpbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdPYmplY3QgKiBvYmplY3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICogZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YV9saXN0IHZhcmFyZ3MpIEdfR05VQ19QUklOVEYgKDgsIDApOworCisjZWxzZSAvKiBHU1RfRElTQUJMRV9HU1RfREVCVUcgKi8KKworI2RlZmluZSBnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2coYWQpIEdfU1RNVF9TVEFSVHsgfUdfU1RNVF9FTkQKKyNkZWZpbmUgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2dfdmFsaXN0KGFkLGNhdCxsZXZlbCxmaWxlLGZ1bmN0aW9uLGxpbmUsb2JqZWN0LGZvcm1hdCxhcmdzKSBHX1NUTVRfU1RBUlR7IH1HX1NUTVRfRU5ECisKKyNpZiBHX0hBVkVfSVNPX1ZBUkFSR1MKKworI2RlZmluZSBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlciguLi4pIEdfU1RNVF9TVEFSVHsgfUdfU1RNVF9FTkQKKyNkZWZpbmUgZ3N0X2dsX2FzeW5jX2RlYnVnX3N0b3JlX2xvZ19tc2coLi4uKSBHX1NUTVRfU1RBUlR7IH1HX1NUTVRfRU5ECisKKyNlbHNlIC8qIEdfSEFWRV9JU09fVkFSQVJHUyAqLworI2lmIEdfSEFWRV9HTlVDX1ZBUkFSR1MKKworI2RlZmluZSBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlcihhcmdzLi4uKSBHX1NUTVRfU1RBUlR7IH1HX1NUTVRfRU5ECisjZGVmaW5lIGdzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnKGFyZ3MuLi4pIEdfU1RNVF9TVEFSVHsgfUdfU1RNVF9FTkQKKworI2Vsc2UgLyogR19IQVZFX0dOVUNfVkFSQVJHUyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQKK2dzdF9nbF9pbnNlcnRfZGVidWdfbWFya2VyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBjb25zdCBnY2hhciAqIGZvcm1hdCwgLi4uKQoreworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK2dzdF9nbF9hc3luY19kZWJ1Z19zdG9yZV9sb2dfbXNnIChHc3RHTEFzeW5jRGVidWcgKiBhZCwKKyAgICBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0LCBHc3REZWJ1Z0xldmVsIGxldmVsLCBjb25zdCBnY2hhciAqIGZpbGUsCisgICAgY29uc3QgZ2NoYXIgKiBmdW5jdGlvbiwgZ2ludCBsaW5lLCBHc3RPYmplY3QgKiBvYmplY3QsCisgICAgY29uc3QgZ2NoYXIgKiBmb3JtYXQsIC4uLikKK3sKK30KKworI2VuZGlmIC8qIEdfSEFWRV9HTlVDX1ZBUkFSR1MgKi8KKyNlbmRpZiAvKiBHX0hBVkVfSVNPX1ZBUkFSR1MgKi8KKyNlbmRpZiAvKiBHU1RfRElTQUJMRV9HU1RfREVCVUcgKi8KKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX0dMX0RFQlVHX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5jCmluZGV4IDUxYzFkZjUuLjVjYWUyZjQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmMKQEAgLTEzOSw4ICsxMzksOCBAQAogCiAgIEdTVF9UUkFDRSAoImluaXQgJXAiLCBkaXNwbGF5KTsKIAotICBnc3RfZ2xfYmFzZV9idWZmZXJfaW5pdF9vbmNlICgpOwotICBnc3RfZ2xfbWVtb3J5X2luaXQgKCk7CisgIGdzdF9nbF9idWZmZXJfaW5pdF9vbmNlICgpOworICBnc3RfZ2xfbWVtb3J5X3Bib19pbml0X29uY2UgKCk7CiAKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKICAgZ3N0X2VnbF9pbWFnZV9tZW1vcnlfaW5pdCAoKTsKQEAgLTQzNyw4ICs0MzcsMTEgQEAKICAgICAgIGNvbnRpbnVlOwogICAgIH0KIAorICAgIGlmICh0aHJlYWQgPT0gTlVMTCkKKyAgICAgIHJldHVybiBjb250ZXh0OworCiAgICAgY29udGV4dF90aHJlYWQgPSBnc3RfZ2xfY29udGV4dF9nZXRfdGhyZWFkIChjb250ZXh0KTsKLSAgICBpZiAodGhyZWFkICE9IE5VTEwgJiYgdGhyZWFkID09IGNvbnRleHRfdGhyZWFkKSB7CisgICAgaWYgKHRocmVhZCAhPSBjb250ZXh0X3RocmVhZCkgewogICAgICAgZ190aHJlYWRfdW5yZWYgKGNvbnRleHRfdGhyZWFkKTsKICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnRleHQpOwogICAgICAgcHJldiA9IGw7CkBAIC00OTcsNyArNTAwLDcgQEAKICAgICBnb3RvIG91dDsKICAgfQogCi0gIGlmIChjb2xsaXNpb24gPT0gY29udGV4dCkgeworICBpZiAodGhyZWFkID09IGNvbGxpc2lvbl90aHJlYWQpIHsKICAgICByZXQgPSBUUlVFOwogICAgIGdvdG8gb3V0OwogICB9CkBAIC01MzMsNyArNTM2LDcgQEAKICAgR1dlYWtSZWYgKnJlZjsKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0RJU1BMQVkgKGRpc3BsYXkpLCBGQUxTRSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOwogCiAgIGNvbnRleHRfZGlzcGxheSA9IGdzdF9nbF9jb250ZXh0X2dldF9kaXNwbGF5IChjb250ZXh0KTsKICAgZ19hc3NlcnQgKGNvbnRleHRfZGlzcGxheSA9PSBkaXNwbGF5KTsKQEAgLTU0Myw2ICs1NDYsMTMgQEAKICAgaWYgKHRocmVhZCkgewogICAgIGNvbGxpc2lvbiA9IF9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkX3VubG9ja2VkIChkaXNwbGF5LCB0aHJlYWQpOwogICAgIGdfdGhyZWFkX3VucmVmICh0aHJlYWQpOworCisgICAgLyogYWRkaW5nIHRoZSBzYW1lIGNvbnRleHQgaXMgYSBuby1vcCAqLworICAgIGlmIChjb250ZXh0ID09IGNvbGxpc2lvbikgeworICAgICAgcmV0ID0gVFJVRTsKKyAgICAgIGdvdG8gb3V0OworICAgIH0KKwogICAgIGlmIChfY2hlY2tfY29sbGlzaW9uIChjb250ZXh0LCBjb2xsaXNpb24pKSB7CiAgICAgICByZXQgPSBGQUxTRTsKICAgICAgIGdvdG8gb3V0OwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZGlzcGxheS5oCmluZGV4IDkzNDE4ODQuLjdmNDlhNDQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRpc3BsYXkuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xkaXNwbGF5LmgKQEAgLTQwLDYgKzQwLDE3IEBACiAjZGVmaW5lIEdTVF9HTF9ESVNQTEFZX0NBU1Qob2JqKSAgICAgICAgKChHc3RHTERpc3BsYXkqKShvYmopKQogI2RlZmluZSBHU1RfR0xfRElTUExBWV9HRVRfQ0xBU1MobykgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX1RZUEVfR0xfRElTUExBWSwgR3N0R0xEaXNwbGF5Q2xhc3MpKQogCisvKioKKyAqIEdzdEdMRGlzcGxheVR5cGU6CisgKiBAR1NUX0dMX0RJU1BMQVlfVFlQRV9OT05FOiBubyBkaXNwbGF5IHR5cGUKKyAqIEBHU1RfR0xfRElTUExBWV9UWVBFX1gxMTogWDExIGRpc3BsYXkKKyAqIEBHU1RfR0xfRElTUExBWV9UWVBFX1dBWUxBTkQ6IFdheWxhbmQgZGlzcGxheQorICogQEdTVF9HTF9ESVNQTEFZX1RZUEVfQ09DT0E6IENvY29hIGRpc3BsYXkKKyAqIEBHU1RfR0xfRElTUExBWV9UWVBFX1dJTjMyOiBXaW4zMiBkaXNwbGF5CisgKiBAR1NUX0dMX0RJU1BMQVlfVFlQRV9ESVNQTUFOWDogRGlzcG1hbnggZGlzcGxheQorICogQEdTVF9HTF9ESVNQTEFZX1RZUEVfRUdMOiBFR0wgZGlzcGxheQorICogQEdTVF9HTF9ESVNQTEFZX1RZUEVfQU5ZOiBhbnkgZGlzcGxheSB0eXBlCisgKi8KIHR5cGVkZWYgZW51bQogewogICBHU1RfR0xfRElTUExBWV9UWVBFX05PTkUgPSAwLApAQCAtODQsNyArOTUsNyBAQAogZ3VpbnRwdHIgICAgICAgICBnc3RfZ2xfZGlzcGxheV9nZXRfaGFuZGxlICAgICAgICAgICAgIChHc3RHTERpc3BsYXkgKiBkaXNwbGF5KTsKIEdzdEdMRGlzcGxheVR5cGUgZ3N0X2dsX2Rpc3BsYXlfZ2V0X2hhbmRsZV90eXBlICAgICAgICAoR3N0R0xEaXNwbGF5ICogZGlzcGxheSk7CiB2b2lkICAgICAgICAgICAgIGdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkgICAgICAgICAgKEdzdEdMRGlzcGxheSAqIGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQVBJIGFwaSk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQVBJIGdsX2FwaSk7CiBHc3RHTEFQSSAgICAgICAgIGdzdF9nbF9kaXNwbGF5X2dldF9nbF9hcGkgICAgICAgICAgICAgKEdzdEdMRGlzcGxheSAqIGRpc3BsYXkpOwogR3N0R0xBUEkgICAgICAgICBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfYXBpX3VubG9ja2VkICAgIChHc3RHTERpc3BsYXkgKiBkaXNwbGF5KTsKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRvd25sb2FkLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmMDQ1YzcuLjAwMDAwMDAKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuYworKysgL2Rldi9udWxsCkBAIC0xLDUwNCArMCwwIEBACi0vKgotICogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0dGhldyBXYXRlcnMgPHlzdHJlZTAwQGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiZ2wuaCIKLSNpbmNsdWRlICJnc3RnbGRvd25sb2FkLmgiCi0KLS8qKgotICogU0VDVElPTjpnc3RnbGRvd25sb2FkCi0gKiBAc2hvcnRfZGVzY3JpcHRpb246IGFuIG9iamVjdCB0aGF0IGRvd25sb2FkcyBHTCB0ZXh0dXJlcwotICogQHNlZV9hbHNvOiAjR3N0R0xVcGxvYWQsICNHc3RHTE1lbW9yeQotICoKLSAqICNHc3RHTERvd25sb2FkIGlzIGFuIG9iamVjdCB0aGF0IGRvd25sb2FkcyBHTCB0ZXh0dXJlcyBpbnRvIHN5c3RlbSBtZW1vcnkuCi0gKgotICogQSAjR3N0R0xEb3dubG9hZCBjYW4gYmUgY3JlYXRlZCB3aXRoIGdzdF9nbF9kb3dubG9hZF9uZXcoKQotICovCi0KLSNkZWZpbmUgVVNJTkdfT1BFTkdMKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTCwgMSwgMCkpCi0jZGVmaW5lIFVTSU5HX09QRU5HTDMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMMywgMywgMSkpCi0jZGVmaW5lIFVTSU5HX0dMRVMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUywgMSwgMCkpCi0jZGVmaW5lIFVTSU5HX0dMRVMyKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAyLCAwKSkKLSNkZWZpbmUgVVNJTkdfR0xFUzMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsIDApKQotCi1zdGF0aWMgZ2Jvb2xlYW4gX2RvX2Rvd25sb2FkIChHc3RHTERvd25sb2FkICogZG93bmxvYWQsIEdzdEJ1ZmZlciAqIGluYnVmKTsKLXN0YXRpYyBnYm9vbGVhbiBfaW5pdF9kb3dubG9hZCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkKTsKLXN0YXRpYyBnYm9vbGVhbiBfZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhX3VubG9ja2VkIChHc3RHTERvd25sb2FkICoKLSAgICBkb3dubG9hZCwgR0x1aW50IHRleHR1cmVfaWQsIEdMdWludCB0ZXh0dXJlX3RhcmdldCwKLSAgICBncG9pbnRlciBkYXRhW0dTVF9WSURFT19NQVhfUExBTkVTXSk7Ci1zdGF0aWMgdm9pZCBnc3RfZ2xfZG93bmxvYWRfcmVzZXQgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCk7Ci0KLS8qICpJTkRFTlQtT04qICovCi0vKiBEZWZpbmUgdGhlIG1heGltdW0gbnVtYmVyIG9mIHBsYW5lcyB3ZSBjYW4gaGFuZGxlIC0gbWF4IDIgdmlld3MgcGVyIGJ1ZmZlciAqLwotI2RlZmluZSBHU1RfR0xfRE9XTkxPQURfTUFYX1ZJRVdTIDIKLSNkZWZpbmUgR1NUX0dMX0RPV05MT0FEX01BWF9QTEFORVMgKEdTVF9WSURFT19NQVhfUExBTkVTICogR1NUX0dMX0RPV05MT0FEX01BWF9WSUVXUykKLQotc3RydWN0IF9Hc3RHTERvd25sb2FkUHJpdmF0ZQotewotICBjb25zdCBnY2hhciAqWVVZMl9VWVZZOwotICBjb25zdCBnY2hhciAqSTQyMF9ZVjEyOwotICBjb25zdCBnY2hhciAqQVlVVjsKLSAgY29uc3QgZ2NoYXIgKkFSR0I7Ci0gIGNvbnN0IGdjaGFyICp2ZXJ0X3NoYWRlcjsKLQotICBHc3RCdWZmZXIgKmluYnVmOwotICAvKiBUZW1wb3Jhcnkgd3JhcHBlZCB0ZXh0dXJlIGZvciBwZXJmb3JtX3dpdGhfZGF0YSBkb3dubG9hZCAqLwotICBHc3RHTE1lbW9yeSAqaW5fdGV4OwotCi0gIC8qIE91dHB1dCBkYXRhIHBsYW5lcyAqLwotICBncG9pbnRlciBvdXRfZGF0YVtHU1RfR0xfRE9XTkxPQURfTUFYX1BMQU5FU107Ci19OwotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfZ2xfZG93bmxvYWRfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X2dsX2Rvd25sb2FkX2RlYnVnCi0KLSNkZWZpbmUgREVCVUdfSU5JVCBcCi0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZ2xfZG93bmxvYWRfZGVidWcsICJnbGRvd25sb2FkIiwgMCwgImRvd25sb2FkIik7Ci0KLUdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RHTERvd25sb2FkLCBnc3RfZ2xfZG93bmxvYWQsIEdTVF9UWVBFX09CSkVDVCwKLSAgICBERUJVR19JTklUKTsKLXN0YXRpYyB2b2lkIGdzdF9nbF9kb3dubG9hZF9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci0KLSNkZWZpbmUgR1NUX0dMX0RPV05MT0FEX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG9iaiksIFwKLSAgICBHU1RfVFlQRV9HTF9ET1dOTE9BRCwgR3N0R0xEb3dubG9hZFByaXZhdGUpKQotCi1zdGF0aWMgdm9pZAotZ3N0X2dsX2Rvd25sb2FkX2NsYXNzX2luaXQgKEdzdEdMRG93bmxvYWRDbGFzcyAqIGtsYXNzKQotewotICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGtsYXNzLCBzaXplb2YgKEdzdEdMRG93bmxvYWRQcml2YXRlKSk7Ci0KLSAgR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKS0+ZmluYWxpemUgPSBnc3RfZ2xfZG93bmxvYWRfZmluYWxpemU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfZG93bmxvYWRfaW5pdCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkKQotewotCi0gIGRvd25sb2FkLT5wcml2ID0gR1NUX0dMX0RPV05MT0FEX0dFVF9QUklWQVRFIChkb3dubG9hZCk7Ci0KLSAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJmRvd25sb2FkLT5pbmZvKTsKLX0KLQotLyoqCi0gKiBnc3RfZ2xfZG93bmxvYWRfbmV3OgotICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAotICoKLSAqIFJldHVybnM6IGEgbmV3ICNHc3RHTERvd25sb2FkIG9iamVjdAotICovCi1Hc3RHTERvd25sb2FkICoKLWdzdF9nbF9kb3dubG9hZF9uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCi17Ci0gIEdzdEdMRG93bmxvYWQgKmRvd25sb2FkOwotCi0gIGRvd25sb2FkID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTF9ET1dOTE9BRCwgTlVMTCk7Ci0KLSAgZG93bmxvYWQtPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7Ci0gIGRvd25sb2FkLT5jb252ZXJ0ID0gZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3IChjb250ZXh0KTsKLQotICByZXR1cm4gZG93bmxvYWQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfZG93bmxvYWRfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdEdMRG93bmxvYWQgKmRvd25sb2FkOwotCi0gIGRvd25sb2FkID0gR1NUX0dMX0RPV05MT0FEIChvYmplY3QpOwotCi0gIGdzdF9nbF9kb3dubG9hZF9yZXNldCAoZG93bmxvYWQpOwotCi0gIGlmIChkb3dubG9hZC0+Y29udmVydCkgewotICAgIGdzdF9vYmplY3RfdW5yZWYgKGRvd25sb2FkLT5jb252ZXJ0KTsKLSAgICBkb3dubG9hZC0+Y29udmVydCA9IE5VTEw7Ci0gIH0KLQotICBpZiAoZG93bmxvYWQtPmNvbnRleHQpIHsKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChkb3dubG9hZC0+Y29udGV4dCk7Ci0gICAgZG93bmxvYWQtPmNvbnRleHQgPSBOVUxMOwotICB9Ci0KLSAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9nbF9kb3dubG9hZF9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF9kb3dubG9hZF9yZXNldCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkKQotewotICBpZiAoZG93bmxvYWQtPnByaXYtPmluX3RleCkgewotICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgZG93bmxvYWQtPnByaXYtPmluX3RleCk7Ci0gICAgZG93bmxvYWQtPnByaXYtPmluX3RleCA9IE5VTEw7Ci0gIH0KLX0KLQotLyoqCi0gKiBnc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdDoKLSAqIEBkb3dubG9hZDogYSAjR3N0R0xEb3dubG9hZAotICogQG91dF9pbmZvOiBhICNHc3RWaWRlb0luZm8KLSAqCi0gKiBJbml0aWFsaXplcyBAZG93bmxvYWQgd2l0aCB0aGUgaW5mb3JtYXRpb24gcmVxdWlyZWQgZm9yIGRvd25sb2FkLgotICovCi12b2lkCi1nc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkLCBHc3RWaWRlb0luZm8gKiBvdXRfaW5mbykKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAoZG93bmxvYWQgIT0gTlVMTCk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAob3V0X2luZm8pICE9Ci0gICAgICBHU1RfVklERU9fRk9STUFUX1VOS05PV04pOwotICBnX3JldHVybl9pZl9mYWlsIChHU1RfVklERU9fSU5GT19GT1JNQVQgKG91dF9pbmZvKSAhPQotICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9FTkNPREVEKTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKGRvd25sb2FkKTsKLQotICBpZiAoZ3N0X3ZpZGVvX2luZm9faXNfZXF1YWwgKCZkb3dubG9hZC0+aW5mbywgb3V0X2luZm8pKSB7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGRvd25sb2FkKTsKLSAgICByZXR1cm47Ci0gIH0KLQotICBnc3RfZ2xfZG93bmxvYWRfcmVzZXQgKGRvd25sb2FkKTsKLSAgZG93bmxvYWQtPmluaXR0ZWQgPSBGQUxTRTsKLSAgZG93bmxvYWQtPmluZm8gPSAqb3V0X2luZm87Ci0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGRvd25sb2FkKTsKLX0KLQotc3RhdGljIEdzdENhcHMgKgotX3NldF9jYXBzX2ZlYXR1cmVzIChjb25zdCBHc3RDYXBzICogY2FwcywgY29uc3QgZ2NoYXIgKiBmZWF0dXJlX25hbWUpCi17Ci0gIEdzdENhcHMgKnRtcCA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOwotICBndWludCBuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKHRtcCk7Ci0gIGd1aW50IGkgPSAwOwotCi0gIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKLSAgICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzOwotCi0gICAgZmVhdHVyZXMgPSBnc3RfY2Fwc19mZWF0dXJlc19uZXcgKGZlYXR1cmVfbmFtZSwgTlVMTCk7Ci0gICAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzICh0bXAsIGksIGZlYXR1cmVzKTsKLSAgfQotCi0gIHJldHVybiB0bXA7Ci19Ci0KLUdzdENhcHMgKgotZ3N0X2dsX2Rvd25sb2FkX3RyYW5zZm9ybV9jYXBzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAotICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQotewotICBHc3RDYXBzICpnbF90ZW1wbCwgKnRlbXBsLCAqcmVzdWx0LCAqdG1wOwotCi0gIHRlbXBsID0KLSAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nIChHU1RfVklERU9fQ0FQU19NQUtFIChHU1RfR0xfQ09MT1JfQ09OVkVSVF9GT1JNQVRTKSk7Ci0gIGdsX3RlbXBsID0KLSAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nIChHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKLSAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIEdTVF9HTF9DT0xPUl9DT05WRVJUX0ZPUk1BVFMpKTsKLQotICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU1JDKSB7Ci0gICAgdG1wID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGNhcHMsIHRlbXBsLCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwotICAgIHJlc3VsdCA9IF9zZXRfY2Fwc19mZWF0dXJlcyAodG1wLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOwotICAgIGdzdF9jYXBzX3VucmVmICh0bXApOwotICAgIHRtcCA9IHJlc3VsdDsKLSAgfSBlbHNlIHsKLSAgICB0bXAgPSBnc3RfY2Fwc19yZWYgKGNhcHMpOwotICB9Ci0KLSAgcmVzdWx0ID0KLSAgICAgIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3RyYW5zZm9ybV9jYXBzIChjb250ZXh0LCBkaXJlY3Rpb24sIHRtcCwgZmlsdGVyKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHRtcCk7Ci0gIHRtcCA9IHJlc3VsdDsKLQotICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU0lOSykgewotICAgIHJlc3VsdCA9IF9zZXRfY2Fwc19mZWF0dXJlcyAodG1wLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9TWVNURU1fTUVNT1JZKTsKLSAgICBnc3RfY2Fwc191bnJlZiAodG1wKTsKLSAgICB0bXAgPSByZXN1bHQ7Ci0gICAgcmVzdWx0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKHRtcCwgdGVtcGwsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKHRtcCk7Ci0gICAgdG1wID0gcmVzdWx0OwotICB9Ci0KLSAgaWYgKGZpbHRlcikgewotICAgIHJlc3VsdCA9IGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChmaWx0ZXIsIHRtcCwgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKLSAgICBnc3RfY2Fwc191bnJlZiAodG1wKTsKLSAgfSBlbHNlIHsKLSAgICByZXN1bHQgPSB0bXA7Ci0gIH0KLSAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGdsX3RlbXBsKTsKLQotICByZXR1cm4gcmVzdWx0OwotfQotCi0vKioKLSAqIGdzdF9nbF9kb3dubG9hZF9wZXJmb3JtX3dpdGhfZGF0YToKLSAqIEBkb3dubG9hZDogYSAjR3N0R0xEb3dubG9hZAotICogQHRleHR1cmVfaWQ6IHRoZSB0ZXh0dXJlIGlkIHRvIGRvd25sb2FkCi0gKiBAdGV4dHVyZV90YXJnZXQ6IHRoZSBHTCB0ZXh0dXJlIHRhcmdldAotICogQGRhdGE6IChvdXQpOiB3aGVyZSB0aGUgZG93bmxvYWRlZCBkYXRhIHNob3VsZCBnbwotICoKLSAqIERvd25sb2FkcyBAdGV4dHVyZV9pZCBpbnRvIEBkYXRhLiBAZGF0YSBzaXplIGFuZCBmb3JtYXQgaXMgc3BlY2lmaWVkIGJ5Ci0gKiB0aGUgI0dzdFZpZGVvRm9ybWF0IHBhc3NlZCB0byBnc3RfZ2xfZG93bmxvYWRfc2V0X2Zvcm1hdCgpCi0gKgotICogVGhpcyBtZXRob2QgY2FuIG9ubHkgYmUgdXNlZCBmb3IgZG93bmxvYWQgYSBzaW5nbGUgdmlldy4KLSAqCi0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBkb3dubG9hZCB3YXMgc3VjY2Vzc2Z1bAotICovCi1nYm9vbGVhbgotZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhIChHc3RHTERvd25sb2FkICogZG93bmxvYWQsCi0gICAgR0x1aW50IHRleHR1cmVfaWQsIEdMdWludCB0ZXh0dXJlX3RhcmdldCwKLSAgICBncG9pbnRlciBkYXRhW0dTVF9WSURFT19NQVhfUExBTkVTXSkKLXsKLSAgZ2Jvb2xlYW4gcmV0OwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkb3dubG9hZCAhPSBOVUxMLCBGQUxTRSk7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChkb3dubG9hZCk7Ci0gIHJldCA9Ci0gICAgICBfZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhX3VubG9ja2VkIChkb3dubG9hZCwKLSAgICAgIHRleHR1cmVfaWQsIHRleHR1cmVfdGFyZ2V0LCBkYXRhKTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGRvd25sb2FkKTsKLQotICByZXR1cm4gcmV0OwotfQotCi0vKiBUaGlzIG1ldGhvZCBvbmx5IHN1cHBvcnRzIG9uZSBpbnB1dCB0ZXh0dXJlICovCi1zdGF0aWMgZ2Jvb2xlYW4KLV9nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV93aXRoX2RhdGFfdW5sb2NrZWQgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCwKLSAgICBHTHVpbnQgdGV4dHVyZV9pZCwgR0x1aW50IHRleHR1cmVfdGFyZ2V0LAotICAgIGdwb2ludGVyIGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdKQotewotICBndWludCBpOwotICBnYm9vbGVhbiByZXM7Ci0gIEdzdEJ1ZmZlciAqaW5idWY7Ci0gIGd1aW50IG91dF93aWR0aCwgb3V0X2hlaWdodDsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoZG93bmxvYWQgIT0gTlVMTCwgRkFMU0UpOwotICBnX3JldHVybl92YWxfaWZfZmFpbCAodGV4dHVyZV9pZCA+IDAsIEZBTFNFKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmRvd25sb2FkLT5pbmZvKSAhPQotICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9VTktOT1dOCi0gICAgICAmJiBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZkb3dubG9hZC0+aW5mbykgIT0gR1NUX1ZJREVPX0ZPUk1BVF9FTkNPREVELAotICAgICAgRkFMU0UpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJmRvd25sb2FkLT5pbmZvKTsgaSsrKSB7Ci0gICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGRhdGFbaV0gIT0gTlVMTCwgRkFMU0UpOwotICB9Ci0KLSAgaWYgKCFkb3dubG9hZC0+cHJpdi0+aW5fdGV4KSB7Ci0gICAgR3N0VmlkZW9JbmZvIHRlbXBfaW5mbzsKLQotICAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZ0ZW1wX2luZm8sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwKLSAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZkb3dubG9hZC0+aW5mbyksCi0gICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmRvd25sb2FkLT5pbmZvKSk7Ci0KLSAgICBkb3dubG9hZC0+cHJpdi0+aW5fdGV4ID0KLSAgICAgICAgZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUgKGRvd25sb2FkLT5jb250ZXh0LAotICAgICAgICB0ZXh0dXJlX2lkLCB0ZXh0dXJlX3RhcmdldCwgJnRlbXBfaW5mbywgMCwgTlVMTCwgTlVMTCwgTlVMTCk7Ci0gIH0KLQotCi0gIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmZG93bmxvYWQtPmluZm8pOwotICBvdXRfaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZG93bmxvYWQtPmluZm8pOwotCi0gIEdTVF9UUkFDRSAoImRvaW5nIGRvd25sb2FkIG9mIHRleHR1cmU6JXUgKCV1eCV1KSIsCi0gICAgICBkb3dubG9hZC0+cHJpdi0+aW5fdGV4LT50ZXhfaWQsIG91dF93aWR0aCwgb3V0X2hlaWdodCk7Ci0KLSAgZG93bmxvYWQtPnByaXYtPmluX3RleC0+dGV4X2lkID0gdGV4dHVyZV9pZDsKLQotICBpbmJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwotICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGluYnVmLAotICAgICAgZ3N0X21lbW9yeV9yZWYgKChHc3RNZW1vcnkgKikgZG93bmxvYWQtPnByaXYtPmluX3RleCkpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fTUFYX1BMQU5FUzsgaSsrKQotICAgIGRvd25sb2FkLT5wcml2LT5vdXRfZGF0YVtpXSA9IGRhdGFbaV07Ci0gIC8qIENsZWFyIHJlbWFpbmluZyBwbGFuZXMgZm9yIHNhZmV0eSAqLwotICB3aGlsZSAoaSA8IEdTVF9HTF9ET1dOTE9BRF9NQVhfUExBTkVTKQotICAgIGRvd25sb2FkLT5wcml2LT5vdXRfZGF0YVtpKytdID0gTlVMTDsKLQotICByZXMgPSBfZG9fZG93bmxvYWQgKGRvd25sb2FkLCBpbmJ1Zik7Ci0KLSAgZG93bmxvYWQtPnByaXYtPmluYnVmID0gTlVMTDsKLSAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWYpOwotCi0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotX2luaXRfZG93bmxvYWQgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCkKLXsKLSAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQ7Ci0gIEdzdENhcHMgKmluX2NhcHMsICpvdXRfY2FwczsKLSAgR3N0Q2Fwc0ZlYXR1cmVzICpvdXRfZ2xfZmVhdHVyZXM7Ci0gIGdib29sZWFuIHJlczsKLQotICB2X2Zvcm1hdCA9IEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmRvd25sb2FkLT5pbmZvKTsKLQotICBpZiAoZG93bmxvYWQtPmluaXR0ZWQpCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgR1NUX1RSQUNFICgiaW5pdGlhbGl6aW5nIHRleHR1cmUgZG93bmxvYWQgZm9yIGZvcm1hdCAlcyIsCi0gICAgICBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAodl9mb3JtYXQpKTsKLQotICBpZiAoVVNJTkdfR0xFUzIgKGRvd25sb2FkLT5jb250ZXh0KSAmJiAhVVNJTkdfR0xFUzMgKGRvd25sb2FkLT5jb250ZXh0KSkgewotICAgIC8qIEdMX1JHQkEgaXMgdGhlIG9ubHkgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgdGV4dHVyZSBmb3JtYXQgaW4gR0xFUzIgKi8KLSAgICBpZiAodl9mb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9SR0IgfHwgdl9mb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9CR1IpIHsKLSAgICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoZG93bmxvYWQtPmNvbnRleHQsICJDYW5ub3QgZG93bmxvYWQgUkdCICIKLSAgICAgICAgICAidGV4dHVyZXMgaW4gR0xFUzIiKTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0gIH0KLQotICBvdXRfZ2xfZmVhdHVyZXMgPQotICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJvbV9zdHJpbmcgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7Ci0gIG91dF9jYXBzID0gZ3N0X3ZpZGVvX2luZm9fdG9fY2FwcyAoJmRvd25sb2FkLT5pbmZvKTsKLSAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzIChvdXRfY2FwcywgMCwgb3V0X2dsX2ZlYXR1cmVzKTsKLQotICBpbl9jYXBzID0gZ3N0X2NhcHNfY29weSAob3V0X2NhcHMpOwotICBnc3RfY2Fwc19zZXRfc2ltcGxlIChpbl9jYXBzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlJHQkEiLCBOVUxMKTsKLQotICByZXMgPSBnc3RfZ2xfY29sb3JfY29udmVydF9zZXRfY2FwcyAoZG93bmxvYWQtPmNvbnZlcnQsIGluX2NhcHMsIG91dF9jYXBzKTsKLQotICBnc3RfY2Fwc191bnJlZiAoaW5fY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChvdXRfY2Fwcyk7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIGdib29sZWFuCi1fZG9fZG93bmxvYWQgKEdzdEdMRG93bmxvYWQgKiBkb3dubG9hZCwgR3N0QnVmZmVyICogaW5idWYpCi17Ci0gIEdzdEJ1ZmZlciAqb3V0YnVmOwotICBHc3RNYXBJbmZvIG1hcF9pbmZvOwotICBnYm9vbGVhbiByZXQgPSBUUlVFOwotICBnaW50IGk7Ci0gIEdzdFZpZGVvSW5mbyAqaW5mbzsKLSAgZ3VpbnQgdmlld3MsIG91dF9wbGFuZXM7Ci0gIGdwb2ludGVyICpkYXRhID0gZG93bmxvYWQtPnByaXYtPm91dF9kYXRhOwotCi0gIGlmICghZG93bmxvYWQtPmluaXR0ZWQpIHsKLSAgICBpZiAoIV9pbml0X2Rvd25sb2FkIChkb3dubG9hZCkpIHsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRvd25sb2FkLCAiRmFpbGVkIHRvIGluaXRpYWxpc2UiKTsKLSAgICAgIHJldHVybiBGQUxTRTsKLSAgICB9Ci0gIH0KLQotICBvdXRidWYgPSBnc3RfZ2xfY29sb3JfY29udmVydF9wZXJmb3JtIChkb3dubG9hZC0+Y29udmVydCwgaW5idWYpOwotICBpZiAoIW91dGJ1ZikgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRvd25sb2FkLCAiRmFpbGVkIHRvIGNvbG91ciBjb252ZXJ0IGZvciBvdXRwdXQiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBpbmZvID0gJmRvd25sb2FkLT5pbmZvOwotICBpZiAoR1NUX1ZJREVPX0lORk9fTVVMVElWSUVXX01PREUgKGluZm8pID09Ci0gICAgICBHU1RfVklERU9fTVVMVElWSUVXX01PREVfU0VQQVJBVEVEKQotICAgIHZpZXdzID0gR1NUX1ZJREVPX0lORk9fVklFV1MgKGluZm8pOwotICBlbHNlCi0gICAgdmlld3MgPSAxOwotICBvdXRfcGxhbmVzID0gR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluZm8pICogdmlld3M7Ci0KLSAgZm9yIChpID0gMDsgaSA8IG91dF9wbGFuZXM7IGkrKykgewotICAgIEdzdE1lbW9yeSAqb3V0X21lbSA9IGdzdF9idWZmZXJfcGVla19tZW1vcnkgKG91dGJ1ZiwgaSk7Ci0gICAgZ3BvaW50ZXIgdGVtcF9kYXRhID0gKChHc3RHTEJhc2VCdWZmZXIgKikgb3V0X21lbSktPmRhdGE7Ci0gICAgKChHc3RHTEJhc2VCdWZmZXIgKikgb3V0X21lbSktPmRhdGEgPSBkYXRhW2ldOwotCi0gICAgaWYgKCFnc3RfbWVtb3J5X21hcCAob3V0X21lbSwgJm1hcF9pbmZvLCBHU1RfTUFQX1JFQUQpKSB7Ci0gICAgICBHU1RfRVJST1JfT0JKRUNUIChkb3dubG9hZCwgIkZhaWxlZCB0byBtYXAgbWVtb3J5Iik7Ci0gICAgICByZXQgPSBGQUxTRTsKLSAgICB9Ci0gICAgZ3N0X21lbW9yeV91bm1hcCAob3V0X21lbSwgJm1hcF9pbmZvKTsKLSAgICAoKEdzdEdMQmFzZUJ1ZmZlciAqKSBvdXRfbWVtKS0+ZGF0YSA9IHRlbXBfZGF0YTsKLSAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG91dF9tZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpOwotICB9Ci0KLSAgZ3N0X2J1ZmZlcl91bnJlZiAob3V0YnVmKTsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybV91bmxvY2tlZCAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkLAotICAgIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiBvdXRidWYpCi17Ci0gIGd1aW50IGk7Ci0gIGdib29sZWFuIHJlcyA9IEZBTFNFOwotICBndWludCBvdXRfd2lkdGgsIG91dF9oZWlnaHQ7Ci0gIEdzdFZpZGVvRnJhbWUgb3V0X2ZyYW1lOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkb3dubG9hZCAhPSBOVUxMLCBGQUxTRSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfVklERU9fSU5GT19GT1JNQVQgKCZkb3dubG9hZC0+aW5mbykgIT0KLSAgICAgIEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTgotICAgICAgJiYgR1NUX1ZJREVPX0lORk9fRk9STUFUICgmZG93bmxvYWQtPmluZm8pICE9IEdTVF9WSURFT19GT1JNQVRfRU5DT0RFRCwKLSAgICAgIEZBTFNFKTsKLQotICBvdXRfd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJmRvd25sb2FkLT5pbmZvKTsKLSAgb3V0X2hlaWdodCA9IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmRvd25sb2FkLT5pbmZvKTsKLQotICBHU1RfVFJBQ0VfT0JKRUNUIChkb3dubG9hZCwgImRvaW5nIGRvd25sb2FkIG9mIGJ1ZmZlciAlIiBHU1RfUFRSX0ZPUk1BVAotICAgICAgIiAoJXV4JXUpIiwgaW5idWYsIG91dF93aWR0aCwgb3V0X2hlaWdodCk7Ci0KLSAgLyogRklYTUU6IE1hcCBtdWx0aXBsZSB2aWV3cyAqLwotICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZvdXRfZnJhbWUsICZkb3dubG9hZC0+aW5mbywgb3V0YnVmLCBHU1RfTUFQX1dSSVRFKSkKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTICgmZG93bmxvYWQtPmluZm8pOyBpKyspIHsKLSAgICBpZiAob3V0X2ZyYW1lLmRhdGFbaV0gPT0gTlVMTCkKLSAgICAgIGdvdG8gZmFpbDsKLSAgICBkb3dubG9hZC0+cHJpdi0+b3V0X2RhdGFbaV0gPSBvdXRfZnJhbWUuZGF0YVtpXTsKLSAgfQotICB3aGlsZSAoaSA8IEdTVF9HTF9ET1dOTE9BRF9NQVhfUExBTkVTKQotICAgIGRvd25sb2FkLT5wcml2LT5vdXRfZGF0YVtpKytdID0gTlVMTDsKLQotICByZXMgPSBfZG9fZG93bmxvYWQgKGRvd25sb2FkLCBpbmJ1Zik7Ci0KLWZhaWw6Ci0gIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJm91dF9mcmFtZSk7Ci0gIGRvd25sb2FkLT5wcml2LT5pbmJ1ZiA9IE5VTEw7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotLyoqCi0gKiBnc3RfZ2xfZG93bmxvYWRfcGVyZm9ybToKLSAqIEBkb3dubG9hZDogYSAjR3N0R0xEb3dubG9hZAotICogQGluYnVmOiAodHJhbnNmZXIgbm9uZSk6IGEgI0dzdEJ1ZmZlciBpbnB1dCBidWZmZXIKLSAqIEBvdXRidWY6ICh0cmFuc2ZlciBub25lKSAob3V0KTogYSAjR3N0QnVmZmVyIG91dHB1dCBidWZmZXIKLSAqCi0gKiBEb3dubG9hZHMgdGhlIGNvbnRlbnRzIG9mIEBpbmJ1ZiBpbnRvIEBvdXRidWYuCi0gKgotICogVGhlIG91dHB1dCBidWZmZXIgY29udGVudHMgbXVzdCBtYXRjaCB0aGUgI0dzdFZpZGVvRm9ybWF0IHBhc3NlZAotICogdG8gZ3N0X2dsX2Rvd25sb2FkX3NldF9mb3JtYXQoKSwgYW5kIHRoZSBpbnB1dCBidWZmZXIgbXVzdAotICogY29udGFpbiAjR3N0R0xNZW1vcnkgbWVtb3J5IGl0ZW1zLgotICoKLSAqIFRoaXMgbWV0aG9kIHN1cHBvcnRzIGRvd25sb2FkaW5nIG11bHRpcGxlIHZpZXdzLgotICoKLSAqIFJldHVybnM6IHdoZXRoZXIgdGhlIGRvd25sb2FkIHdhcyBzdWNjZXNzZnVsCi0gKi8KLWdib29sZWFuCi1nc3RfZ2xfZG93bmxvYWRfcGVyZm9ybSAoR3N0R0xEb3dubG9hZCAqIGRvd25sb2FkLAotICAgIEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RCdWZmZXIgKiBvdXRidWYpCi17Ci0gIGdib29sZWFuIHJldDsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAoZG93bmxvYWQgIT0gTlVMTCwgRkFMU0UpOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoZG93bmxvYWQpOwotICByZXQgPSBfZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fdW5sb2NrZWQgKGRvd25sb2FkLCBpbmJ1Ziwgb3V0YnVmKTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGRvd25sb2FkKTsKLQotICByZXR1cm4gcmV0OwotfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGRvd25sb2FkLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0NzY4NTQuLjAwMDAwMDAKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZG93bmxvYWQuaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLS8qCi0gKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVlMDBAZ21haWwuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfR0xfRE9XTkxPQURfSF9fCi0jZGVmaW5lIF9fR1NUX0dMX0RPV05MT0FEX0hfXwotCi0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0jaW5jbHVkZSA8Z3N0L2dzdG1lbW9yeS5oPgotCi0jaW5jbHVkZSA8Z3N0L2dsL2dsLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotR1R5cGUgZ3N0X2dsX2Rvd25sb2FkX2dldF90eXBlICh2b2lkKTsKLSNkZWZpbmUgR1NUX1RZUEVfR0xfRE9XTkxPQUQgKGdzdF9nbF9kb3dubG9hZF9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfR0xfRE9XTkxPQUQob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfR0xfRE9XTkxPQUQsR3N0R0xEb3dubG9hZCkpCi0jZGVmaW5lIEdTVF9HTF9ET1dOTE9BRF9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfR0xfRElTUExBWSxHc3RHTERvd25sb2FkQ2xhc3MpKQotI2RlZmluZSBHU1RfSVNfR0xfRE9XTkxPQUQob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfR0xfRE9XTkxPQUQpKQotI2RlZmluZSBHU1RfSVNfR0xfRE9XTkxPQURfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX0dMX0RPV05MT0FEKSkKLSNkZWZpbmUgR1NUX0dMX0RPV05MT0FEX0NBU1Qob2JqKSAoKEdzdEdMRG93bmxvYWQqKShvYmopKQotCi0vKioKLSAqIEdzdEdMRG93bmxvYWQ6Ci0gKgotICogT3BhcXVlICNHc3RHTERvd25sb2FkIG9iamVjdAotICovCi1zdHJ1Y3QgX0dzdEdMRG93bmxvYWQKLXsKLSAgLyogPHByaXZhdGU+ICovCi0gIEdzdE9iamVjdCAgICAgICAgcGFyZW50OwotCi0gIEdzdEdMQ29udGV4dCAgICAgKmNvbnRleHQ7Ci0gIEdzdEdMQ29sb3JDb252ZXJ0ICpjb252ZXJ0OwotCi0gIC8qIG91dHB1dCBkYXRhICovCi0gIEdzdFZpZGVvSW5mbyAgICAgaW5mbzsKLQotICBnYm9vbGVhbiAgICAgICAgIGluaXR0ZWQ7Ci0KLSAgR3N0R0xEb3dubG9hZFByaXZhdGUgKnByaXY7Ci0KLSAgZ3BvaW50ZXIgX3Jlc2VydmVkW0dTVF9QQURESU5HXTsKLX07Ci0KLS8qKgotICogR3N0R0xEb3dubG9hZENsYXNzOgotICoKLSAqIFRoZSAjR3N0R0xEb3dubG9hZENsYXNzIHN0cnVjdCBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQotICovCi1zdHJ1Y3QgX0dzdEdMRG93bmxvYWRDbGFzcwotewotICAvKiA8cHJpdmF0ZT4gKi8KLSAgR3N0T2JqZWN0Q2xhc3Mgb2JqZWN0X2NsYXNzOwotfTsKLQotR3N0R0xEb3dubG9hZCAqIGdzdF9nbF9kb3dubG9hZF9uZXcgICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOwotCi12b2lkIGdzdF9nbF9kb3dubG9hZF9zZXRfZm9ybWF0ICAgICAgICAgICAgICAgIChHc3RHTERvd25sb2FkICogZG93bmxvYWQsIEdzdFZpZGVvSW5mbyAqIG91dF9pbmZvKTsKLUdzdENhcHMgKiBnc3RfZ2xfZG93bmxvYWRfdHJhbnNmb3JtX2NhcHMgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnZlcnQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAqIGNhcHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICogZmlsdGVyKTsKLQotZ2Jvb2xlYW4gZ3N0X2dsX2Rvd25sb2FkX3BlcmZvcm1fd2l0aF9kYXRhICAgICAgICAgIChHc3RHTERvd25sb2FkICogZG93bmxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdMdWludCB0ZXh0dXJlX2lkLCBHTHVpbnQgdGV4dHVyZV90YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdKTsKLWdib29sZWFuIGdzdF9nbF9kb3dubG9hZF9wZXJmb3JtIChHc3RHTERvd25sb2FkICogZG93bmxvYWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QnVmZmVyICppbmJ1ZiwgR3N0QnVmZmVyICpvdXRidWYpOwotCi1HX0VORF9ERUNMUwotCi0jZW5kaWYgLyogX19HU1RfR0xfRE9XTkxPQURfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmZWF0dXJlLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmZWF0dXJlLmMKaW5kZXggNGE1ZDg3Ni4uYmFmMjliMSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuYwpAQCAtMjcsNiArMjcsMjEgQEAKICNpbmNsdWRlICJnbC5oIgogI2luY2x1ZGUgImdzdGdsZmVhdHVyZS5oIgogCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnbF9mZWF0dXJlCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOworCitzdGF0aWMgdm9pZAorX2luaXRfZGVidWcgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfREVGQVVMVCwgImdsZmVhdHVyZSIsIDAsCisgICAgICAgICJPcGVuR0wgZmVhdHVyZSBkZXRlY3Rpb24iKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCiBnYm9vbGVhbgogZ3N0X2dsX2NoZWNrX2V4dGVuc2lvbiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgZ2NoYXIgKiBleHQpCiB7CkBAIC0xODksOCArMjA0LDcgQEAKICAgZm9yIChmdW5jX251bSA9IDA7IGRhdGEtPmZ1bmN0aW9uc1tmdW5jX251bV0ubmFtZTsgZnVuY19udW0rKykgewogICAgIHZvaWQgKmZ1bmM7CiAKLSAgICBpZiAoZnVsbF9mdW5jdGlvbl9uYW1lKQotICAgICAgZ19mcmVlIChmdWxsX2Z1bmN0aW9uX25hbWUpOworICAgIGdfZnJlZSAoZnVsbF9mdW5jdGlvbl9uYW1lKTsKIAogICAgIGZ1bGxfZnVuY3Rpb25fbmFtZSA9IGdfc3RyY29uY2F0ICgiZ2wiLCBkYXRhLT5mdW5jdGlvbnNbZnVuY19udW1dLm5hbWUsCiAgICAgICAgIHN1ZmZpeCwgTlVMTCk7CkBAIC0yNTEsNiArMjY1LDggQEAKIHsKICAgaW50IGk7CiAKKyAgX2luaXRfZGVidWcgKCk7CisKICAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ3N0X2dsX2ZlYXR1cmVfZXh0X2Z1bmN0aW9uc19kYXRhKTsgaSsrKSB7CiAgICAgX2dzdF9nbF9mZWF0dXJlX2NoZWNrIChjb250ZXh0LCAiR0wiLAogICAgICAgICBnc3RfZ2xfZmVhdHVyZV9leHRfZnVuY3Rpb25zX2RhdGEgKyBpLCBnbF9tYWpvciwgZ2xfbWlub3IsCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmZWF0dXJlLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmZWF0dXJlLmgKaW5kZXggMGJiY2RhNi4uZmRjMzEzNyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmVhdHVyZS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZlYXR1cmUuaApAQCAtOTcsNyArOTcsNyBAQAogZ2Jvb2xlYW4KIGdzdF9nbF9jaGVja19leHRlbnNpb24gKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGdjaGFyICogZXh0KTsKIAotZ2Jvb2xlYW4KK0dfR05VQ19JTlRFUk5BTCBnYm9vbGVhbgogX2dzdF9nbF9mZWF0dXJlX2NoZWNrIChHc3RHTENvbnRleHQgKmNvbnRleHQsCiAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpkcml2ZXJfcHJlZml4LAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgR3N0R0xGZWF0dXJlRGF0YSAqZGF0YSwKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgaW50IGdsX21pbm9yLAogICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqZXh0ZW5zaW9uc19zdHJpbmcpOwogCi12b2lkCitHX0dOVUNfSU5URVJOQUwgdm9pZAogX2dzdF9nbF9mZWF0dXJlX2NoZWNrX2V4dF9mdW5jdGlvbnMgKEdzdEdMQ29udGV4dCAqY29udGV4dCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGdsX21ham9yLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZ2xfbWlub3IsCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jCmluZGV4IDc4YmNiYzkuLjFlMThlNDEgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZpbHRlci5jCkBAIC0zNSwyNCArMzUsMzEgQEAKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbF9maWx0ZXJfZGVidWcKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CiAKLQorLyogKklOREVOVC1PRkYqICovCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2dsX2ZpbHRlcl9zcmNfcGFkX3RlbXBsYXRlID0KIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwotICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLAotICAgICAgICAgICAgIlJHQkEiKSkKLSAgICApOworICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZICIpLCAiCisgICAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICAgIndpZHRoID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgICAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiCisgICAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsIgorICAgICAgInRleHR1cmUtdGFyZ2V0ID0gKHN0cmluZykgMkQiCisgICAgKSk7CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfZ2xfZmlsdGVyX3NpbmtfcGFkX3RlbXBsYXRlID0KIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCiAgICAgR1NUX1BBRF9TSU5LLAogICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCi0gICAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksCi0gICAgICAgICAgICAiUkdCQSIpKQotICAgICk7CisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIKKyAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSBSR0JBLCAiCisgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwiCisgICAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSAyRCIKKyAgICApKTsKKy8qICpJTkRFTlQtT04qICovCiAKIC8qIFByb3BlcnRpZXMgKi8KIGVudW0KQEAgLTYzLDcgKzcwLDggQEAKICNkZWZpbmUgZ3N0X2dsX2ZpbHRlcl9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCiBHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0R0xGaWx0ZXIsIGdzdF9nbF9maWx0ZXIsIEdTVF9UWVBFX0dMX0JBU0VfRklMVEVSLAogICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfZ2xfZmlsdGVyX2RlYnVnLCAiZ2xmaWx0ZXIiLCAwLAotICAgICAgICAiZ2xmaWx0ZXIgZWxlbWVudCIpOyk7CisgICAgICAgICJnbGZpbHRlciBlbGVtZW50Iik7CisgICAgKTsKIAogc3RhdGljIHZvaWQgZ3N0X2dsX2ZpbHRlcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CkBAIC05MCw2ICs5OCw4IEBACiAgICAgR3N0Q2FwcyAqIG91dGNhcHMpOwogc3RhdGljIGdib29sZWFuIGdzdF9nbF9maWx0ZXJfZ2xfc3RhcnQgKEdzdEdMQmFzZUZpbHRlciAqIGZpbHRlcik7CiBzdGF0aWMgdm9pZCBnc3RfZ2xfZmlsdGVyX2dsX3N0b3AgKEdzdEdMQmFzZUZpbHRlciAqIGZpbHRlcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2dsX2ZpbHRlcl9nbF9zZXRfY2FwcyAoR3N0R0xCYXNlRmlsdGVyICogYnQsCisgICAgR3N0Q2FwcyAqIGluY2FwcywgR3N0Q2FwcyAqIG91dGNhcHMpOwogCiBzdGF0aWMgdm9pZAogZ3N0X2dsX2ZpbHRlcl9jbGFzc19pbml0IChHc3RHTEZpbHRlckNsYXNzICoga2xhc3MpCkBAIC0xMTcsNiArMTI3LDcgQEAKIAogICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+Z2xfc3RhcnQgPSBnc3RfZ2xfZmlsdGVyX2dsX3N0YXJ0OwogICBHU1RfR0xfQkFTRV9GSUxURVJfQ0xBU1MgKGtsYXNzKS0+Z2xfc3RvcCA9IGdzdF9nbF9maWx0ZXJfZ2xfc3RvcDsKKyAgR1NUX0dMX0JBU0VfRklMVEVSX0NMQVNTIChrbGFzcyktPmdsX3NldF9jYXBzID0gZ3N0X2dsX2ZpbHRlcl9nbF9zZXRfY2FwczsKIAogICBrbGFzcy0+dHJhbnNmb3JtX2ludGVybmFsX2NhcHMgPSBkZWZhdWx0X3RyYW5zZm9ybV9pbnRlcm5hbF9jYXBzOwogCkBAIC0xNzYsNDQgKzE4NywxMSBAQAogewogICBHc3RHTEZpbHRlciAqZmlsdGVyID0gR1NUX0dMX0ZJTFRFUiAoYmFzZV9maWx0ZXIpOwogICBHc3RHTEZpbHRlckNsYXNzICpmaWx0ZXJfY2xhc3MgPSBHU1RfR0xfRklMVEVSX0dFVF9DTEFTUyAoZmlsdGVyKTsKLSAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gR1NUX0dMX0JBU0VfRklMVEVSIChmaWx0ZXIpLT5jb250ZXh0OwotICBnaW50IG91dF93aWR0aCwgb3V0X2hlaWdodDsKLQotICBvdXRfd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoJmZpbHRlci0+b3V0X2luZm8pOwotICBvdXRfaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZmlsdGVyLT5vdXRfaW5mbyk7Ci0KLSAgaWYgKGZpbHRlci0+ZmJvKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfZGVsX2ZibyAoY29udGV4dCwgZmlsdGVyLT5mYm8sIGZpbHRlci0+ZGVwdGhidWZmZXIpOwotICAgIGZpbHRlci0+ZmJvID0gMDsKLSAgICBmaWx0ZXItPmRlcHRoYnVmZmVyID0gMDsKLSAgfQotICAvL2Jsb2NraW5nIGNhbGwsIGdlbmVyYXRlIGEgRkJPCi0gIGlmICghZ3N0X2dsX2NvbnRleHRfZ2VuX2ZibyAoY29udGV4dCwgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0LAotICAgICAgICAgICZmaWx0ZXItPmZibywgJmZpbHRlci0+ZGVwdGhidWZmZXIpKQotICAgIGdvdG8gY29udGV4dF9lcnJvcjsKIAogICBpZiAoZmlsdGVyX2NsYXNzLT5kaXNwbGF5X2luaXRfY2IpCiAgICAgZmlsdGVyX2NsYXNzLT5kaXNwbGF5X2luaXRfY2IgKGZpbHRlcik7CiAKLSAgaWYgKGZpbHRlcl9jbGFzcy0+aW5pdF9mYm8pIHsKLSAgICBpZiAoIWZpbHRlcl9jbGFzcy0+aW5pdF9mYm8gKGZpbHRlcikpCi0gICAgICBnb3RvIGVycm9yOwotICB9Ci0KICAgcmV0dXJuIFRSVUU7Ci0KLWNvbnRleHRfZXJyb3I6Ci0gIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZmlsdGVyLCBSRVNPVVJDRSwgTk9UX0ZPVU5ELCAoIkNvdWxkIG5vdCBnZW5lcmF0ZSBGQk8iKSwKLSAgICAgICAgKE5VTEwpKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLWVycm9yOgotICB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKGZpbHRlciwgTElCUkFSWSwgSU5JVCwKLSAgICAgICAgKCJTdWJjbGFzcyBmYWlsZWQgdG8gaW5pdGlhbGl6ZS4iKSwgKE5VTEwpKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KIH0KIAogc3RhdGljIHZvaWQKQEAgLTI2Miw4ICsyNDAsOCBAQAogICBHVmFsdWUgZnBhciA9IHsgMCwgfSwgdHBhciA9IHsKICAgMCx9OwogCi0gIG90aGVyY2FwcyA9IGdzdF9jYXBzX3RydW5jYXRlIChvdGhlcmNhcHMpOwogICBvdGhlcmNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChvdGhlcmNhcHMpOworICBvdGhlcmNhcHMgPSBnc3RfY2Fwc190cnVuY2F0ZSAob3RoZXJjYXBzKTsKIAogICBHU1RfREVCVUdfT0JKRUNUIChidCwgInRyeWluZyB0byBmaXhhdGUgb3RoZXJjYXBzICUiIEdTVF9QVFJfRk9STUFUCiAgICAgICAiIGJhc2VkIG9uIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIG90aGVyY2FwcywgY2Fwcyk7CkBAIC0zNTgsNyArMzM2LDEzIEBACiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChidCwgImhlaWdodCBpcyBmaXhlZCAoJWQpIiwgaCk7CiAKICAgICAgIGlmICghZ3N0X3ZhbHVlX2lzX2ZpeGVkICh0b19wYXIpKSB7Ci0gICAgICAgIGdzdF92YWx1ZV9zZXRfZnJhY3Rpb24gKCZ0cGFyLCAxLCAxKTsKKyAgICAgICAgLyogKHNob3J0Y3V0KSBjb3B5LXBhc3RlICg/Pykgb2YgdmlkZW9zY2FsZSBzZWVtcyB0byBhaW0gZm9yIDEvMSwKKyAgICAgICAgICogc28gbGV0J3MgbWFrZSBpdCBzbyAuLi4KKyAgICAgICAgICogZXNwZWNpYWxseSBpZiBmb2xsb3dpbmcgY29kZSBhc3N1bWVzIGZpeGVkICovCisgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJ0LCAiZml4YXRpbmcgdG9fcGFyIHRvIDF4MSIpOworICAgICAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChvdXRzLAorICAgICAgICAgICAgInBpeGVsLWFzcGVjdC1yYXRpbyIsIDEsIDEpOworICAgICAgICB0b19wYXIgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAob3V0cywgInBpeGVsLWFzcGVjdC1yYXRpbyIpOwogICAgICAgfQogCiAgICAgICAvKiBQQVIgaXMgZml4ZWQsIGNob29zZSB0aGUgaGVpZ2h0IHRoYXQgaXMgbmVhcmVzdCB0byB0aGUKQEAgLTM4NSw3ICszNjksMTMgQEAKICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJ0LCAid2lkdGggaXMgZml4ZWQgKCVkKSIsIHcpOwogCiAgICAgICBpZiAoIWdzdF92YWx1ZV9pc19maXhlZCAodG9fcGFyKSkgewotICAgICAgICBnc3RfdmFsdWVfc2V0X2ZyYWN0aW9uICgmdHBhciwgMSwgMSk7CisgICAgICAgIC8qIChzaG9ydGN1dCkgY29weS1wYXN0ZSAoPz8pIG9mIHZpZGVvc2NhbGUgc2VlbXMgdG8gYWltIGZvciAxLzEsCisgICAgICAgICAqIHNvIGxldCdzIG1ha2UgaXQgc28gLi4uCisgICAgICAgICAqIGVzcGVjaWFsbHkgaWYgZm9sbG93aW5nIGNvZGUgYXNzdW1lcyBmaXhlZCAqLworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChidCwgImZpeGF0aW5nIHRvX3BhciB0byAxeDEiKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbiAob3V0cywKKyAgICAgICAgICAgICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAxLCAxKTsKKyAgICAgICAgdG9fcGFyID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKG91dHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iKTsKICAgICAgIH0KIAogICAgICAgLyogUEFSIGlzIGZpeGVkLCBjaG9vc2UgdGhlIGhlaWdodCB0aGF0IGlzIG5lYXJlc3QgdG8gdGhlCkBAIC02NzcsNiArNjY3LDQ5IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgorZ3N0X2dsX2ZpbHRlcl9nbF9zZXRfY2FwcyAoR3N0R0xCYXNlRmlsdGVyICogYnQsIEdzdENhcHMgKiBpbmNhcHMsCisgICAgR3N0Q2FwcyAqIG91dGNhcHMpCit7CisgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChidCk7CisgIEdzdEdMRmlsdGVyQ2xhc3MgKmZpbHRlcl9jbGFzcyA9IEdTVF9HTF9GSUxURVJfR0VUX0NMQVNTIChmaWx0ZXIpOworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBHU1RfR0xfQkFTRV9GSUxURVIgKGZpbHRlciktPmNvbnRleHQ7CisgIGdpbnQgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0OworCisgIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmZmlsdGVyLT5vdXRfaW5mbyk7CisgIG91dF9oZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZmaWx0ZXItPm91dF9pbmZvKTsKKworICBpZiAoZmlsdGVyLT5mYm8pIHsKKyAgICBnc3RfZ2xfY29udGV4dF9kZWxfZmJvIChjb250ZXh0LCBmaWx0ZXItPmZibywgZmlsdGVyLT5kZXB0aGJ1ZmZlcik7CisgICAgZmlsdGVyLT5mYm8gPSAwOworICAgIGZpbHRlci0+ZGVwdGhidWZmZXIgPSAwOworICB9CisgIC8vYmxvY2tpbmcgY2FsbCwgZ2VuZXJhdGUgYSBGQk8KKyAgaWYgKCFnc3RfZ2xfY29udGV4dF9nZW5fZmJvIChjb250ZXh0LCBvdXRfd2lkdGgsIG91dF9oZWlnaHQsCisgICAgICAgICAgJmZpbHRlci0+ZmJvLCAmZmlsdGVyLT5kZXB0aGJ1ZmZlcikpCisgICAgZ290byBjb250ZXh0X2Vycm9yOworCisgIGlmIChmaWx0ZXJfY2xhc3MtPmluaXRfZmJvKSB7CisgICAgaWYgKCFmaWx0ZXJfY2xhc3MtPmluaXRfZmJvIChmaWx0ZXIpKQorICAgICAgZ290byBlcnJvcjsKKyAgfQorCisgIHJldHVybiBUUlVFOworCitjb250ZXh0X2Vycm9yOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKGZpbHRlciwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCJDb3VsZCBub3QgZ2VuZXJhdGUgRkJPIiksCisgICAgICAgIChOVUxMKSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CitlcnJvcjoKKyAgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChmaWx0ZXIsIExJQlJBUlksIElOSVQsCisgICAgICAgICgiU3ViY2xhc3MgZmFpbGVkIHRvIGluaXRpYWxpemUuIiksIChOVUxMKSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9Cit9CisKK3N0YXRpYyBnYm9vbGVhbgogZ3N0X2dsX2ZpbHRlcl9zZXRfY2FwcyAoR3N0QmFzZVRyYW5zZm9ybSAqIGJ0LCBHc3RDYXBzICogaW5jYXBzLAogICAgIEdzdENhcHMgKiBvdXRjYXBzKQogewpAQCAtNzAzLDcgKzczNiw4IEBACiAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmZpbHRlci0+b3V0X2luZm8pLAogICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmZmlsdGVyLT5vdXRfaW5mbyksIGluY2Fwcywgb3V0Y2Fwcyk7CiAKLSAgcmV0dXJuIFRSVUU7CisgIHJldHVybiBHU1RfQkFTRV9UUkFOU0ZPUk1fQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNldF9jYXBzIChidCwgaW5jYXBzLAorICAgICAgb3V0Y2Fwcyk7CiAKIC8qIEVSUk9SUyAqLwogd3JvbmdfY2FwczoKQEAgLTg5NCw2ICs5MjgsMTMgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIHZvaWQKK19kZWJ1Z19tYXJrZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMRmlsdGVyICogZmlsdGVyKQoreworICBnc3RfZ2xfaW5zZXJ0X2RlYnVnX21hcmtlciAoY29udGV4dCwKKyAgICAgICJwcm9jZXNzaW5nIGluIGVsZW1lbnQgJXMiLCBHU1RfT0JKRUNUX05BTUUgKGZpbHRlcikpOworfQorCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X2dsX2ZpbHRlcl90cmFuc2Zvcm0gKEdzdEJhc2VUcmFuc2Zvcm0gKiBidCwgR3N0QnVmZmVyICogaW5idWYsCiAgICAgR3N0QnVmZmVyICogb3V0YnVmKQpAQCAtOTE0LDYgKzk1NSw4IEBACiAgIGlmIChpbl9zeW5jX21ldGEpCiAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChpbl9zeW5jX21ldGEsIGNvbnRleHQpOwogCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfZGVidWdfbWFya2VyLAorICAgICAgZmlsdGVyKTsKICAgaWYgKGZpbHRlcl9jbGFzcy0+ZmlsdGVyKQogICAgIHJldCA9IGZpbHRlcl9jbGFzcy0+ZmlsdGVyIChmaWx0ZXIsIGluYnVmLCBvdXRidWYpOwogICBlbHNlCkBAIC05ODksNiArMTAzMiwyOCBAQAogfQogCiBzdGF0aWMgdm9pZAorX2dldF9hdHRyaWJ1dGVzIChHc3RHTEZpbHRlciAqIGZpbHRlcikKK3sKKyAgaWYgKCFmaWx0ZXItPmRlZmF1bHRfc2hhZGVyKQorICAgIHJldHVybjsKKworICBpZiAoZmlsdGVyLT52YWxpZF9hdHRyaWJ1dGVzKQorICAgIHJldHVybjsKKworICBpZiAoZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID09IC0xKQorICAgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoZmlsdGVyLT5kZWZhdWx0X3NoYWRlciwKKyAgICAgICAgImFfcG9zaXRpb24iKTsKKworICBpZiAoZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPT0gLTEpCisgICAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIsCisgICAgICAgICJhX3RleGNvb3JkIik7CisKKyAgZmlsdGVyLT52YWxpZF9hdHRyaWJ1dGVzID0gVFJVRTsKK30KKworc3RhdGljIHZvaWQKIF9kcmF3X3dpdGhfc2hhZGVyX2NiIChnaW50IHdpZHRoLCBnaW50IGhlaWdodCwgZ3VpbnQgdGV4dHVyZSwgZ3BvaW50ZXIgc3R1ZmYpCiB7CiAgIEdzdEdMRmlsdGVyICpmaWx0ZXIgPSBHU1RfR0xfRklMVEVSIChzdHVmZik7CkBAIC0xMDAyLDYgKzEwNjcsNyBAQAogICB9CiAjZW5kaWYKIAorICBfZ2V0X2F0dHJpYnV0ZXMgKGZpbHRlcik7CiAgIGdzdF9nbF9zaGFkZXJfdXNlIChmaWx0ZXItPmRlZmF1bHRfc2hhZGVyKTsKIAogICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRTEpOwpAQCAtMTAxNCwyMyArMTA4MCw2IEBACiAgIGdzdF9nbF9maWx0ZXJfZHJhd190ZXh0dXJlIChmaWx0ZXIsIHRleHR1cmUsIHdpZHRoLCBoZWlnaHQpOwogfQogCi1zdGF0aWMgdm9pZAotX2dldF9hdHRyaWJ1dGVzIChHc3RHTEZpbHRlciAqIGZpbHRlcikKLXsKLSAgaWYgKCFmaWx0ZXItPmRlZmF1bHRfc2hhZGVyKQotICAgIHJldHVybjsKLQotICBpZiAoZmlsdGVyLT5kcmF3X2F0dHJfcG9zaXRpb25fbG9jID09IC0xKQotICAgIGZpbHRlci0+ZHJhd19hdHRyX3Bvc2l0aW9uX2xvYyA9Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoZmlsdGVyLT5kZWZhdWx0X3NoYWRlciwKLSAgICAgICAgImFfcG9zaXRpb24iKTsKLQotICBpZiAoZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPT0gLTEpCi0gICAgZmlsdGVyLT5kcmF3X2F0dHJfdGV4dHVyZV9sb2MgPQotICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIsCi0gICAgICAgICJhX3RleGNvb3JkIik7Ci19Ci0KIC8qKgogICogZ3N0X2dsX2ZpbHRlcl9yZW5kZXJfdG9fdGFyZ2V0X3dpdGhfc2hhZGVyOgogICogQGZpbHRlcjogYSAjR3N0R0xGaWx0ZXIKQEAgLTEwNTEsOCArMTEwMCw5IEBACiBnc3RfZ2xfZmlsdGVyX3JlbmRlcl90b190YXJnZXRfd2l0aF9zaGFkZXIgKEdzdEdMRmlsdGVyICogZmlsdGVyLAogICAgIGdib29sZWFuIHJlc2l6ZSwgR0x1aW50IGlucHV0LCBHTHVpbnQgdGFyZ2V0LCBHc3RHTFNoYWRlciAqIHNoYWRlcikKIHsKKyAgaWYgKGZpbHRlci0+ZGVmYXVsdF9zaGFkZXIgIT0gc2hhZGVyKQorICAgIGZpbHRlci0+dmFsaWRfYXR0cmlidXRlcyA9IEZBTFNFOwogICBmaWx0ZXItPmRlZmF1bHRfc2hhZGVyID0gc2hhZGVyOwotICBfZ2V0X2F0dHJpYnV0ZXMgKGZpbHRlcik7CiAKICAgZ3N0X2dsX2ZpbHRlcl9yZW5kZXJfdG9fdGFyZ2V0IChmaWx0ZXIsIHJlc2l6ZSwgaW5wdXQsIHRhcmdldCwKICAgICAgIF9kcmF3X3dpdGhfc2hhZGVyX2NiLCBmaWx0ZXIpOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZmlsdGVyLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuaAppbmRleCA5NGFiMzMzLi5hODE4YmFiIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmaWx0ZXIuaApAQCAtNzEsNiArNzEsNyBAQAogICBHTHVpbnQgICAgICAgICAgICAgb3V0X3RleF9pZDsKIAogICBHc3RHTFNoYWRlciAgICAgICAqZGVmYXVsdF9zaGFkZXI7CisgIGdib29sZWFuICAgICAgICAgICB2YWxpZF9hdHRyaWJ1dGVzOwogCiAgIEdMdWludCAgICAgICAgICAgICB2YW87CiAgIEdMdWludCAgICAgICAgICAgICB2Ym9faW5kaWNlczsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZm9ybWF0LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM3ZTI1MAotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZvcm1hdC5jCkBAIC0wLDAgKzEsNDM2IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGZvcm1hdC5oPgorI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGNvbnRleHQuaD4KKworI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKKyNkZWZpbmUgVVNJTkdfT1BFTkdMMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAxKSkKKyNkZWZpbmUgVVNJTkdfR0xFUyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTLCAxLCAwKSkKKyNkZWZpbmUgVVNJTkdfR0xFUzIoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDIsIDApKQorI2RlZmluZSBVU0lOR19HTEVTMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCisKKyNpZm5kZWYgR0xfUkdCQTgKKyNkZWZpbmUgR0xfUkdCQTggMHg4MDU4CisjZW5kaWYKKyNpZm5kZWYgR0xfUkVECisjZGVmaW5lIEdMX1JFRCAweDE5MDMKKyNlbmRpZgorI2lmbmRlZiBHTF9SRworI2RlZmluZSBHTF9SRyAweDgyMjcKKyNlbmRpZgorI2lmbmRlZiBHTF9SOAorI2RlZmluZSBHTF9SOCAweDgyMjkKKyNlbmRpZgorI2lmbmRlZiBHTF9SRzgKKyNkZWZpbmUgR0xfUkc4IDB4ODIyQgorI2VuZGlmCisKKyNpZm5kZWYgR0xfVEVYVFVSRV9SRUNUQU5HTEUKKyNkZWZpbmUgR0xfVEVYVFVSRV9SRUNUQU5HTEUgMHg4NEY1CisjZW5kaWYKKyNpZm5kZWYgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMKKyNkZWZpbmUgR0xfVEVYVFVSRV9FWFRFUk5BTF9PRVMgMHg4RDY1CisjZW5kaWYKKworc3RhdGljIGlubGluZSBndWludAorX2dsX2Zvcm1hdF9uX2NvbXBvbmVudHMgKGd1aW50IGZvcm1hdCkKK3sKKyAgc3dpdGNoIChmb3JtYXQpIHsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCQToKKyAgICBjYXNlIEdMX1JHQkE6CisgICAgICByZXR1cm4gNDsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNjoKKyAgICBjYXNlIEdMX1JHQjoKKyAgICAgIHJldHVybiAzOworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0VfQUxQSEE6CisgICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHOgorICAgIGNhc2UgR0xfTFVNSU5BTkNFX0FMUEhBOgorICAgIGNhc2UgR0xfUkc6CisgICAgICByZXR1cm4gMjsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFOgorICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SOgorICAgIGNhc2UgR0xfTFVNSU5BTkNFOgorICAgIGNhc2UgR0xfUkVEOgorICAgICAgcmV0dXJuIDE7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiAwOworICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgZ3VpbnQKK19nbF90eXBlX25fY29tcG9uZW50cyAoZ3VpbnQgdHlwZSkKK3sKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgcmV0dXJuIDE7CisgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKKyAgICAgIHJldHVybiAzOworICAgIGRlZmF1bHQ6CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICAgIHJldHVybiAwOworICB9Cit9CisKK3N0YXRpYyBpbmxpbmUgZ3VpbnQKK19nbF90eXBlX25fYnl0ZXMgKGd1aW50IHR5cGUpCit7CisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgIHJldHVybiAxOworICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICByZXR1cm4gMjsKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICByZXR1cm4gMDsKKyAgfQorfQorCisvKioKKyAqIGdzdF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzOgorICogQGZvcm1hdDogdGhlIE9wZW5HTCBmb3JtYXQsICVHTF9SR0JBLCAlR0xfTFVNSU5BTkNFLCBldGMKKyAqIEB0eXBlOiB0aGUgT3BlbkdMIHR5cGUsICVHTF9VTlNJR05FRF9CWVRFLCAlR0xfRkxPQVQsIGV0YworICoKKyAqIFJldHVybnM6IHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhlIHNwZWNpZmllZCBAZm9ybWF0LCBAdHlwZSBjb21iaW5hdGlvbiB0YWtlcworICogcGVyIHBpeGVsCisgKi8KK2d1aW50Citnc3RfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlcyAoZ3VpbnQgZm9ybWF0LCBndWludCB0eXBlKQoreworICByZXR1cm4gX2dsX2Zvcm1hdF9uX2NvbXBvbmVudHMgKGZvcm1hdCkgLyBfZ2xfdHlwZV9uX2NvbXBvbmVudHMgKHR5cGUpICoKKyAgICAgIF9nbF90eXBlX25fYnl0ZXMgKHR5cGUpOworfQorCisvKioKKyAqIGdzdF9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlczoKKyAqIEB0ZXhfZm9ybWF0OiBhICNHc3RWaWRlb0dMVGV4dHVyZVR5cGUKKyAqCisgKiBSZXR1cm5zOiB0aGUgbnVtYmVyIG9mIGJ5dGVzIEB0ZXhfZm9ybWF0IHVzZWQgcGVyIHBpeGVsCisgKi8KK2d1aW50Citnc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXMgKEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfZm9ybWF0KQoreworICBndWludCBmb3JtYXQsIHR5cGU7CisKKyAgZm9ybWF0ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAodGV4X2Zvcm1hdCk7CisgIHR5cGUgPSBHTF9VTlNJR05FRF9CWVRFOworICBpZiAodGV4X2Zvcm1hdCA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQorICAgIHR5cGUgPSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKKworICByZXR1cm4gZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXMgKGZvcm1hdCwgdHlwZSk7Cit9CisKKy8qKgorICogZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZToKKyAqIEB0ZXhfZm9ybWF0OiBhICNHc3RWaWRlb0dMVGV4dHVyZVR5cGUKKyAqCisgKiBSZXR1cm5zOiB0aGUgT3BlbkdMIGZvcm1hdCBzcGVjaWZpZWQgYnkgQHRleF9mb3JtYXQKKyAqLworZ3VpbnQKK2dzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfZm9ybWF0KQoreworICBzd2l0Y2ggKHRleF9mb3JtYXQpIHsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFX0FMUEhBOgorICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFOgorICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCQToKKyAgICAgIHJldHVybiBHTF9SR0JBOworICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0I6CisgICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2OgorICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkc6CisgICAgICByZXR1cm4gR0xfUkc7CisgICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1I6CisgICAgICByZXR1cm4gR0xfUkVEOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOworICB9Cit9CisKKy8qKgorICogZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdDoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEB2X2Zvcm1hdDogYSAjR3N0VmlkZW9Gb3JtYXQKKyAqIEBwbGFuZTogdGhlIHBsYW5lIG51bWJlciAoc3RhcnRpbmcgZnJvbSAwKQorICoKKyAqIFJldHVybnM6IHRoZSAjR3N0VmlkZW9HTFRleHR1cmVUeXBlIGZvciB0aGUgc3BlY2lmaWVkIEBmb3JtYXQgYW5kIEBwbGFuZQorICogICAgICAgICAgdGhhdCBjYW4gYmUgYWxsb2NhdGVkIHVzaW5nIEBjb250ZXh0CisgKi8KK0dzdFZpZGVvR0xUZXh0dXJlVHlwZQorZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCwgZ3VpbnQgcGxhbmUpCit7CisgIGdib29sZWFuIHRleHR1cmVfcmcgPQorICAgICAgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoY29udGV4dCwgIkdMX0VYVF90ZXh0dXJlX3JnIikKKyAgICAgIHx8IGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsIDApCisgICAgICB8fCBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChjb250ZXh0LCAiR0xfQVJCX3RleHR1cmVfcmciKQorICAgICAgfHwgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAwKTsKKyAgZ3VpbnQgbl9wbGFuZV9jb21wb25lbnRzOworCisgIHN3aXRjaCAodl9mb3JtYXQpIHsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCeDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSeDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeFJHQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeEJHUjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSQToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVJHQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQUJHUjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVlVVjoKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDQ7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1I6CisgICAgICBuX3BsYW5lX2NvbXBvbmVudHMgPSAzOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjE2OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1IxNjoKKyAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2OworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZMTZfQkU6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9MRToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDI7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYyMToKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IHBsYW5lID09IDAgPyAxIDogMjsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZODoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQ0NDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQyQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQxQjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfSTQyMDoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKKyAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDE7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gNDsKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgYnJlYWs7CisgIH0KKworICBzd2l0Y2ggKG5fcGxhbmVfY29tcG9uZW50cykgeworICAgIGNhc2UgNDoKKyAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkE7CisgICAgICBicmVhazsKKyAgICBjYXNlIDM6CisgICAgICByZXR1cm4gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0I7CisgICAgICBicmVhazsKKyAgICBjYXNlIDI6CisgICAgICByZXR1cm4gdGV4dHVyZV9yZyA/IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkcgOgorICAgICAgICAgIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFX0FMUEhBOworICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgcmV0dXJuIHRleHR1cmVfcmcgPyBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1IgOgorICAgICAgICAgIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOworfQorCisvKioKKyAqIGdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZToKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBmb3JtYXQ6IGFuIE9wZW5HTCBmb3JtYXQsICVHTF9SR0JBLCAlR0xfTFVNSU5BTkNFLCBldGMKKyAqIEB0eXBlOiBhbiBPcGVuR0wgdHlwZSwgJUdMX1VOU0lHTkVEX0JZVEUsICVHTF9GTE9BVCwgZXRjCisgKgorICogUmV0dXJuczogdGhlIHNpemVkIGludGVybmFsIGZvcm1hdCBzcGVjaWZpZWQgYnkgQGZvcm1hdCBhbmQgQHR5cGUgdGhhdCBjYW4KKyAqICAgICAgICAgIGJlIHVzZWQgaW4gQGNvbnRleHQKKyAqLworZ3VpbnQKK2dzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBndWludCBmb3JtYXQsIGd1aW50IHR5cGUpCit7CisgIGdib29sZWFuIGV4dF90ZXh0dXJlX3JnID0KKyAgICAgIGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUgKGNvbnRleHQsICJHTF9FWFRfdGV4dHVyZV9yZyIpOworCisgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBHTF9SR0JBOgorICAgICAgc3dpdGNoICh0eXBlKSB7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKKyAgICAgICAgICByZXR1cm4gVVNJTkdfR0xFUzIgKGNvbnRleHQpCisgICAgICAgICAgICAgICYmICFVU0lOR19HTEVTMyAoY29udGV4dCkgPyBHTF9SR0JBIDogR0xfUkdCQTg7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIEdMX1JHQjoKKyAgICAgIHN3aXRjaCAodHlwZSkgeworICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6CisgICAgICAgICAgcmV0dXJuIEdMX1JHQjg7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR0xfVU5TSUdORURfU0hPUlRfNV82XzU6CisgICAgICAgICAgcmV0dXJuIEdMX1JHQjsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgR0xfUkc6CisgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgIGlmICghVVNJTkdfR0xFUzMgKGNvbnRleHQpICYmIFVTSU5HX0dMRVMyIChjb250ZXh0KSAmJiBleHRfdGV4dHVyZV9yZykKKyAgICAgICAgICAgIHJldHVybiBHTF9SRzsKKyAgICAgICAgICByZXR1cm4gR0xfUkc4OworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHTF9SRUQ6CisgICAgICBzd2l0Y2ggKHR5cGUpIHsKKyAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgorICAgICAgICAgIGlmICghVVNJTkdfR0xFUzMgKGNvbnRleHQpICYmIFVTSU5HX0dMRVMyIChjb250ZXh0KSAmJiBleHRfdGV4dHVyZV9yZykKKyAgICAgICAgICAgIHJldHVybiBHTF9SRUQ7CisgICAgICAgICAgcmV0dXJuIEdMX1I4OworICAgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHTF9MVU1JTkFOQ0U6CisgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6CisgICAgICByZXR1cm4gR0xfTFVNSU5BTkNFX0FMUEhBOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHTF9BTFBIQToKKyAgICAgIHJldHVybiBHTF9BTFBIQTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorCisgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICByZXR1cm4gMDsKK30KKworLyoqCisgKiBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nOgorICogQHRhcmdldDogYSAjR3N0R0xUZXh0dXJlVGFyZ2V0CisgKgorICogUmV0dXJuczogdGhlIHN0cmluZ2lmaWVkIHZlcnNpb24gb2YgQHRhcmdldCBvciAlTlVMTAorICovCitjb25zdCBnY2hhciAqCitnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nIChHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0KQoreworICBzd2l0Y2ggKHRhcmdldCkgeworICAgIGNhc2UgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOgorICAgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFI7CisgICAgY2FzZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFOgorICAgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSOworICAgIGNhc2UgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzoKKyAgICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTX1NUUjsKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKworLyoqCisgKiBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nOgorICogQHN0cjogYSBzdHJpbmcgZXF1aXZhbGFudCB0byBvbmUgb2YgdGhlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8qX1NUUiB2YWx1ZXMKKyAqCisgKiBSZXR1cm5zOiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldCByZXByZXNlbnRlZCBieSBAc3RyIG9yCisgKiAgICAgICAgICAlR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkUKKyAqLworR3N0R0xUZXh0dXJlVGFyZ2V0Citnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKGNvbnN0IGdjaGFyICogc3RyKQoreworICBpZiAoIXN0cikKKyAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkU7CisKKyAgaWYgKGdfc3RyY21wMCAoc3RyLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSKSA9PSAwKQorICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisgIGlmIChnX3N0cmNtcDAgKHN0ciwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIpID09IDApCisgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU7CisgIGlmIChnX3N0cmNtcDAgKHN0ciwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFIpID09IDApCisgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM7CisKKyAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FOworfQorCisvKioKKyAqIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbDoKKyAqIEB0YXJnZXQ6IGEgI0dzdEdMVGV4dHVyZVRhcmdldAorICoKKyAqIFJldHVybnM6IHRoZSBPcGVuR0wgdmFsdWUgZm9yIGJpbmRpbmcgdGhlIEB0YXJnZXQgd2l0aCBnbEJpbmRUZXh0dXJlKCkgYW5kCisgKiAgICAgICAgICBzaW1pbGFyIGZ1bmN0aW9ucyBvciAwCisgKi8KK2d1aW50Citnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQpCit7CisgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgY2FzZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ6CisgICAgICByZXR1cm4gR0xfVEVYVFVSRV8yRDsKKyAgICBjYXNlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU6CisgICAgICByZXR1cm4gR0xfVEVYVFVSRV9SRUNUQU5HTEU7CisgICAgY2FzZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOgorICAgICAgcmV0dXJuIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gMDsKKyAgfQorfQorCisvKioKKyAqIGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsOgorICogQHRhcmdldDogYW4gT3BlbkdMIHRleHR1cmUgYmluZGluZyB0YXJnZXQKKyAqCisgKiBSZXR1cm5zOiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldCB0aGF0J3MgZXF1aWF2YWxhbnQgdG8gQHRhcmdldCBvcgorICogICAgICAgICAgJUdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FCisgKi8KK0dzdEdMVGV4dHVyZVRhcmdldAorZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fZ2wgKGd1aW50IHRhcmdldCkKK3sKKyAgc3dpdGNoICh0YXJnZXQpIHsKKyAgICBjYXNlIEdMX1RFWFRVUkVfMkQ6CisgICAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEOworICAgIGNhc2UgR0xfVEVYVFVSRV9SRUNUQU5HTEU6CisgICAgICByZXR1cm4gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRTsKKyAgICBjYXNlIEdMX1RFWFRVUkVfRVhURVJOQUxfT0VTOgorICAgICAgcmV0dXJuIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVM7CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORTsKKyAgfQorfQorCisvKioKKyAqIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb246CisgKiBAdGFyZ2V0OiBhICNHc3RHTFRleHR1cmVUYXJnZXQKKyAqCisgKiBSZXR1cm5zOiBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIEBHc3RCdWZmZXJQb29sT3B0aW9uIHNwZWNpZmllZCBieSBAdGFyZ2V0CisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9nbF90ZXh0dXJlX3RhcmdldF90b19idWZmZXJfcG9vbF9vcHRpb24gKEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQpCit7CisgIHN3aXRjaCAodGFyZ2V0KSB7CisgICAgY2FzZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ6CisgICAgICByZXR1cm4gR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKyAgICBjYXNlIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU6CisgICAgICByZXR1cm4gR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU7CisgICAgY2FzZSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOgorICAgICAgcmV0dXJuIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gTlVMTDsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZm9ybWF0LmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmb3JtYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mY2Q2MThhCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZm9ybWF0LmgKQEAgLTAsMCArMSw5MiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9HU1RfR0xfRk9STUFUX0hfCisjZGVmaW5lIF9HU1RfR0xfRk9STUFUX0hfCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xfZndkLmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisKKy8qKgorICogR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUjoKKyAqCisgKiBTdHJpbmcgdXNlZCBmb3IgJUdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCBpbiB0aGluZ3MgbGlrZSBjYXBzIHZhbHVlcworICovCisjZGVmaW5lIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRF9TVFIgIjJEIgorCisvKioKKyAqIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSOgorICoKKyAqIFN0cmluZyB1c2VkIGZvciAlR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSBpbiB0aGluZ3MgbGlrZSBjYXBzIHZhbHVlcworICovCisjZGVmaW5lIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSICJyZWN0YW5nbGUiCisKKy8qKgorICogR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFI6CisgKgorICogU3RyaW5nIHVzZWQgZm9yICVHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTIGluIHRoaW5ncyBsaWtlIGNhcHMgdmFsdWVzCisgKi8KKyNkZWZpbmUgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FU19TVFIgImV4dGVybmFsLW9lcyIKKworLyoqCisgKiBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEOgorICoKKyAqIFN0cmluZyB1c2VkIGZvciAlR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEIGFzIGEgI0dzdEJ1ZmZlclBvb2wgcG9vbCBvcHRpb24KKyAqLworI2RlZmluZSBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUXzJEICJHc3RCdWZmZXJQb29sT3B0aW9uR0xUZXh0dXJlVGFyZ2V0MkQiCisKKy8qKgorICogR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU6CisgKgorICogU3RyaW5nIHVzZWQgZm9yICVHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFIGFzIGEgI0dzdEJ1ZmZlclBvb2wgcG9vbCBvcHRpb24KKyAqLworI2RlZmluZSBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSAiR3N0QnVmZmVyUG9vbE9wdGlvbkdMVGV4dHVyZVRhcmdldFJlY3RhbmdsZSIKKworLyoqCisgKiBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUzoKKyAqCisgKiBTdHJpbmcgdXNlZCBmb3IgJUdTVF9HTF9URVhUVVJFX1RBUkdFVF9FU1RFUk5BTF9PRVMgYXMgYSAjR3N0QnVmZmVyUG9vbCBwb29sIG9wdGlvbgorICovCisjZGVmaW5lIEdTVF9CVUZGRVJfUE9PTF9PUFRJT05fR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTICJHc3RCdWZmZXJQb29sT3B0aW9uR0xUZXh0dXJlVGFyZ2V0RXh0ZXJuYWxPRVMiCisKK0dfQkVHSU5fREVDTFMKKworZ3VpbnQgICAgICAgICAgICAgICAgICAgZ3N0X2dsX2Zvcm1hdF90eXBlX25fYnl0ZXMgICAgICAgICAgICAgICAgICAoZ3VpbnQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdHlwZSk7CitndWludCAgICAgICAgICAgICAgICAgICBnc3RfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXMgICAgICAgICAgICAgICAgIChHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X2Zvcm1hdCk7CitndWludCAgICAgICAgICAgICAgICAgICBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlICAgICAgICAgIChHc3RWaWRlb0dMVGV4dHVyZVR5cGUgdGV4X2Zvcm1hdCk7CitHc3RWaWRlb0dMVGV4dHVyZVR5cGUgICBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0ICAgICAgICAgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBwbGFuZSk7CitndWludCAgICAgICAgICAgICAgICAgICBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdHlwZSk7CisKK0dzdEdMVGV4dHVyZVRhcmdldCAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAgICAgICAgICAgKGNvbnN0IGdjaGFyICogc3RyKTsKK2NvbnN0IGdjaGFyICogICAgICAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19zdHJpbmcgICAgICAgICAgICAgKEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQpOworZ3VpbnQgICAgICAgICAgICAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsICAgICAgICAgICAgICAgICAoR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCk7CitHc3RHTFRleHR1cmVUYXJnZXQgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbCAgICAgICAgICAgICAgIChndWludCB0YXJnZXQpOworY29uc3QgZ2NoYXIgKiAgICAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbiAoR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfR1NUX0dMX0ZPUk1BVF9IXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZnJhbWVidWZmZXIuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbGZyYW1lYnVmZmVyLmgKaW5kZXggMWZjOTIyMi4uNDc2OGFmYiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsZnJhbWVidWZmZXIuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xmcmFtZWJ1ZmZlci5oCkBAIC02NCw2ICs2NCwxMCBAQAogCiB2b2lkIGdzdF9nbF9mcmFtZWJ1ZmZlcl9kZWxldGUgKEdzdEdMRnJhbWVidWZmZXIgKmZyYW1lLCBndWludCBmYm8sIGd1aW50IGRlcHRoKTsKIAorI2lmZGVmIEdfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DCitHX0RFRklORV9BVVRPUFRSX0NMRUFOVVBfRlVOQyhHc3RHTEZyYW1lYnVmZmVyLCBnc3Rfb2JqZWN0X3VucmVmKQorI2VuZGlmCisKIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYwppbmRleCAwYTUyOGVjLi4wMjBiYzdjIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnkuYwpAQCAtMSw2ICsxLDYgQEAKIC8qCiAgKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAxMiBNYXR0aGV3IFdhdGVycyA8eXN0cmVldDAwQGdtYWlsLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI2LDMwICsyNiwyMyBAQAogCiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAKLSNpbmNsdWRlICJnc3RnbG1lbW9yeS5oIgotI2luY2x1ZGUgImdzdGdsdXRpbHMuaCIKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xiYXNlbWVtb3J5Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5Lmg+CiAKIC8qKgogICogU0VDVElPTjpnc3RnbG1lbW9yeQogICogQHNob3J0X2Rlc2NyaXB0aW9uOiBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzCiAgKiBAc2VlX2Fsc286ICNHc3RNZW1vcnksICNHc3RBbGxvY2F0b3IsICNHc3RHTEJ1ZmZlclBvb2wKICAqCi0gKiBHc3RHTE1lbW9yeSBpcyBhICNHc3RHTEJhc2VCdWZmZXIgc3ViY2xhc3MgcHJvdmlkaW5nIHN1cHBvcnQgZm9yIHRoZSBtYXBwaW5nIG9mCi0gKiBHTCB0ZXh0dXJlcy4gIAorICogR3N0R0xNZW1vcnkgaXMgYSAjR3N0R0xCYXNlTWVtb3J5IHN1YmNsYXNzIHByb3ZpZGluZyBzdXBwb3J0IGZvciB0aGUgbWFwcGluZyBvZgorICogT3BlbkdMIHRleHR1cmVzLiAgCiAgKgotICogI0dzdEdMTWVtb3J5IGlzIGNyZWF0ZWQgdGhyb3VnaCBnc3RfZ2xfbWVtb3J5X2FsbG9jKCkgb3Igc3lzdGVtIG1lbW9yeSBjYW4KLSAqIGJlIHdyYXBwZWQgdGhyb3VnaCBnc3RfZ2xfbWVtb3J5X3dyYXBwZWQoKS4KKyAqICNHc3RHTE1lbW9yeSBpcyBjcmVhdGVkIG9yIHdyYXBwZWQgdGhyb3VnaCBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MoKQorICogd2l0aCAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMuCiAgKgogICogRGF0YSBpcyB1cGxvYWRlZCBvciBkb3dubG9hZGVkIGZyb20gdGhlIEdQVSBhcyBpcyBuZWNlc3NhcnkuCiAgKi8KIAotLyogSW1wbGVtZW50YXRpb24gbm90ZXMKLSAqCi0gKiBQQk8gdHJhbnNmZXIncyBhcmUgaW1wbGVtZW50ZWQgdXNpbmcgR3N0R0xCYXNlQnVmZmVyLiAgV2UganVzdCBuZWVkIHRvCi0gKiBlbnN1cmUgdGhhdCB0aGUgdGV4dHVyZSBkYXRhIGlzIHdyaXR0ZW4vcmVhZCB0by9mcm9tIGJlZm9yZS9hZnRlciBjYWxsaW5nCi0gKiB0aGUgcGFyZW50IGNsYXNzIHdoaWNoIHBlcmZvcm1zIHRoZSBwYm8gYnVmZmVyIHRyYW5zZmVyLgotICovCi0KICNkZWZpbmUgVVNJTkdfT1BFTkdMKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTCwgMSwgMCkpCiAjZGVmaW5lIFVTSU5HX09QRU5HTDMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMMywgMywgMSkpCiAjZGVmaW5lIFVTSU5HX0dMRVMoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUywgMSwgMCkpCkBAIC02MCw1NiArNTMsMjUgQEAKICNkZWZpbmUgR0xfTUVNX0hFSUdIVChnbF9tZW0pIF9nZXRfcGxhbmVfaGVpZ2h0ICgmZ2xfbWVtLT5pbmZvLCBnbF9tZW0tPnBsYW5lKQogI2RlZmluZSBHTF9NRU1fU1RSSURFKGdsX21lbSkgR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFICgmZ2xfbWVtLT5pbmZvLCBnbF9tZW0tPnBsYW5lKQogCi0jZGVmaW5lIENPTlRFWFRfU1VQUE9SVFNfUEJPX1VQTE9BRChjb250ZXh0KSBcCi0gICAgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIFwKLSAgICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMsIDIsIDEpIFwKLSAgICAgICAgfHwgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCi0jZGVmaW5lIENPTlRFWFRfU1VQUE9SVFNfUEJPX0RPV05MT0FEKGNvbnRleHQpIFwKLSAgICAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgXAotICAgICAgICBHU1RfR0xfQVBJX09QRU5HTCB8IEdTVF9HTF9BUElfT1BFTkdMMyB8IEdTVF9HTF9BUElfR0xFUzIsIDMsIDApKQorc3RhdGljIEdzdEFsbG9jYXRvciAqX2dsX21lbW9yeV9hbGxvY2F0b3I7CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfR0xfTUVNT1JZKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIEdTVF9DQVRfR0xfTUVNT1JZCiAKLXN0YXRpYyBHc3RBbGxvY2F0b3IgKl9nbF9hbGxvY2F0b3I7Ci0KIC8qIGNvbXBhdGFiaWxpdHkgZGVmaW5pdGlvbnMuLi4gKi8KLSNpZm5kZWYgR0xfUkdCQTgKLSNkZWZpbmUgR0xfUkdCQTggMHg4MDU4Ci0jZW5kaWYKLSNpZm5kZWYgR0xfUkVECi0jZGVmaW5lIEdMX1JFRCAweDE5MDMKLSNlbmRpZgotI2lmbmRlZiBHTF9SRwotI2RlZmluZSBHTF9SRyAweDgyMjcKLSNlbmRpZgotI2lmbmRlZiBHTF9SOAotI2RlZmluZSBHTF9SOCAweDgyMjkKLSNlbmRpZgotI2lmbmRlZiBHTF9SRzgKLSNkZWZpbmUgR0xfUkc4IDB4ODIyQgotI2VuZGlmCi0jaWZuZGVmIEdMX1BJWEVMX1BBQ0tfQlVGRkVSCi0jZGVmaW5lIEdMX1BJWEVMX1BBQ0tfQlVGRkVSIDB4ODhFQgotI2VuZGlmCi0jaWZuZGVmIEdMX1BJWEVMX1VOUEFDS19CVUZGRVIKLSNkZWZpbmUgR0xfUElYRUxfVU5QQUNLX0JVRkZFUiAweDg4RUMKLSNlbmRpZgotI2lmbmRlZiBHTF9TVFJFQU1fUkVBRAotI2RlZmluZSBHTF9TVFJFQU1fUkVBRCAweDg4RTEKLSNlbmRpZgotI2lmbmRlZiBHTF9TVFJFQU1fRFJBVwotI2RlZmluZSBHTF9TVFJFQU1fRFJBVyAweDg4RTAKLSNlbmRpZgotI2lmbmRlZiBHTF9TVFJFQU1fQ09QWQotI2RlZmluZSBHTF9TVFJFQU1fQ09QWSAweDg4RTIKLSNlbmRpZgogI2lmbmRlZiBHTF9VTlBBQ0tfUk9XX0xFTkdUSAogI2RlZmluZSBHTF9VTlBBQ0tfUk9XX0xFTkdUSCAweDBDRjIKICNlbmRpZgogCi1HX0RFRklORV9UWVBFIChHc3RHTEFsbG9jYXRvciwgZ3N0X2dsX2FsbG9jYXRvciwKLSAgICBHU1RfVFlQRV9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1IpOworI2lmbmRlZiBHTF9URVhUVVJFX1JFQ1RBTkdMRQorI2RlZmluZSBHTF9URVhUVVJFX1JFQ1RBTkdMRSAweDg0RjUKKyNlbmRpZgorI2lmbmRlZiBHTF9URVhUVVJFX0VYVEVSTkFMX09FUworI2RlZmluZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyAweDhENjUKKyNlbmRpZgorCitHX0RFRklORV9UWVBFIChHc3RHTE1lbW9yeUFsbG9jYXRvciwgZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3IsCisgICAgR1NUX1RZUEVfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SKTsKIAogdHlwZWRlZiBzdHJ1Y3QKIHsKQEAgLTExNyw5ICs3OSw4IEBACiAgIEdzdEdMTWVtb3J5ICpzcmM7CiAgIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSBvdXRfZm9ybWF0OwogICBndWludCBvdXRfd2lkdGgsIG91dF9oZWlnaHQ7Ci0gIGd1aW50IG91dF9zdHJpZGU7Ci0gIGdib29sZWFuIHJlc3BlY2lmeTsKLSAgZ3VpbnQgdGV4X3RhcmdldDsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRleF90YXJnZXQ7CisgIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfdHlwZTsKICAgLyogaW5vdXQgKi8KICAgZ3VpbnQgdGV4X2lkOwogICAvKiBvdXQgKi8KQEAgLTEyNywyNDAgKzg4LDYgQEAKIH0gR3N0R0xNZW1vcnlDb3B5UGFyYW1zOwogCiBzdGF0aWMgaW5saW5lIGd1aW50Ci1fZ2xfZm9ybWF0X25fY29tcG9uZW50cyAoZ3VpbnQgZm9ybWF0KQotewotICBzd2l0Y2ggKGZvcm1hdCkgewotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOgotICAgIGNhc2UgR0xfUkdCQToKLSAgICAgIHJldHVybiA0OwotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0I6Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2OgotICAgIGNhc2UgR0xfUkdCOgotICAgICAgcmV0dXJuIDM7Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX0xVTUlOQU5DRV9BTFBIQToKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkc6Ci0gICAgY2FzZSBHTF9MVU1JTkFOQ0VfQUxQSEE6Ci0gICAgY2FzZSBHTF9SRzoKLSAgICAgIHJldHVybiAyOwotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9MVU1JTkFOQ0U6Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1I6Ci0gICAgY2FzZSBHTF9MVU1JTkFOQ0U6Ci0gICAgY2FzZSBHTF9SRUQ6Ci0gICAgICByZXR1cm4gMTsKLSAgICBkZWZhdWx0OgotICAgICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotc3RhdGljIGlubGluZSBndWludAotX2dsX3R5cGVfbl9jb21wb25lbnRzIChndWludCB0eXBlKQotewotICBzd2l0Y2ggKHR5cGUpIHsKLSAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICByZXR1cm4gMTsKLSAgICBjYXNlIEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OgotICAgICAgcmV0dXJuIDM7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAgcmV0dXJuIDA7Ci0gIH0KLX0KLQotc3RhdGljIGlubGluZSBndWludAotX2dsX3R5cGVfbl9ieXRlcyAoZ3VpbnQgdHlwZSkKLXsKLSAgc3dpdGNoICh0eXBlKSB7Ci0gICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgcmV0dXJuIDE7Ci0gICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKLSAgICAgIHJldHVybiAyOwotICAgIGRlZmF1bHQ6Ci0gICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKLSAgICAgIHJldHVybiAwOwotICB9Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZ3VpbnQKLV9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzIChndWludCBmb3JtYXQsIGd1aW50IHR5cGUpCi17Ci0gIHJldHVybiBfZ2xfZm9ybWF0X25fY29tcG9uZW50cyAoZm9ybWF0KSAvIF9nbF90eXBlX25fY29tcG9uZW50cyAodHlwZSkgKgotICAgICAgX2dsX3R5cGVfbl9ieXRlcyAodHlwZSk7Ci19Ci0KLXN0YXRpYyBpbmxpbmUgZ3VpbnQKLV9nbF90ZXh0dXJlX3R5cGVfbl9ieXRlcyAoR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF9mb3JtYXQpCi17Ci0gIGd1aW50IGZvcm1hdCwgdHlwZTsKLQotICBmb3JtYXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlICh0ZXhfZm9ybWF0KTsKLSAgdHlwZSA9IEdMX1VOU0lHTkVEX0JZVEU7Ci0gIGlmICh0ZXhfZm9ybWF0ID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCi0gICAgdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OwotCi0gIHJldHVybiBfZ2xfZm9ybWF0X3R5cGVfbl9ieXRlcyAoZm9ybWF0LCB0eXBlKTsKLX0KLQotZ3VpbnQKLWdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfZm9ybWF0KQotewotICBzd2l0Y2ggKHRleF9mb3JtYXQpIHsKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFX0FMUEhBOgotICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRV9BTFBIQTsKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFOgotICAgICAgcmV0dXJuIEdMX0xVTUlOQU5DRTsKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCQToKLSAgICAgIHJldHVybiBHTF9SR0JBOwotICAgIGNhc2UgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0I6Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2OgotICAgICAgcmV0dXJuIEdMX1JHQjsKLSAgICBjYXNlIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkc6Ci0gICAgICByZXR1cm4gR0xfUkc7Ci0gICAgY2FzZSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1I6Ci0gICAgICByZXR1cm4gR0xfUkVEOwotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOwotICB9Ci19Ci0KLUdzdFZpZGVvR0xUZXh0dXJlVHlwZQotZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICBHc3RWaWRlb0Zvcm1hdCB2X2Zvcm1hdCwgZ3VpbnQgcGxhbmUpCi17Ci0gIGdib29sZWFuIHRleHR1cmVfcmcgPQotICAgICAgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoY29udGV4dCwgIkdMX0VYVF90ZXh0dXJlX3JnIikKLSAgICAgIHx8IGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsIDApCi0gICAgICB8fCBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChjb250ZXh0LCAiR0xfQVJCX3RleHR1cmVfcmciKQotICAgICAgfHwgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAwKTsKLSAgZ3VpbnQgbl9wbGFuZV9jb21wb25lbnRzOwotCi0gIHN3aXRjaCAodl9mb3JtYXQpIHsKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCeDoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSeDoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeFJHQjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfeEJHUjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSQToKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVJHQjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQUJHUjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVlVVjoKLSAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCOgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1I6Ci0gICAgICBuX3BsYW5lX2NvbXBvbmVudHMgPSAzOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjE2OgotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1IxNjoKLSAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2OwotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZMTZfQkU6Ci0gICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9MRToKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKLSAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDI7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYyMToKLSAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IHBsYW5lID09IDAgPyAxIDogMjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZODoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQ0NDoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQyQjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWTQxQjoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfSTQyMDoKLSAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKLSAgICAgIG5fcGxhbmVfY29tcG9uZW50cyA9IDE7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgbl9wbGFuZV9jb21wb25lbnRzID0gNDsKLSAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICBzd2l0Y2ggKG5fcGxhbmVfY29tcG9uZW50cykgewotICAgIGNhc2UgNDoKLSAgICAgIHJldHVybiBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDM6Ci0gICAgICByZXR1cm4gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0I7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIDI6Ci0gICAgICByZXR1cm4gdGV4dHVyZV9yZyA/IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkcgOgotICAgICAgICAgIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFX0FMUEhBOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSAxOgotICAgICAgcmV0dXJuIHRleHR1cmVfcmcgPyBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1IgOgotICAgICAgICAgIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBOwotfQotCi1ndWludAotZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAotICAgIGd1aW50IGZvcm1hdCwgZ3VpbnQgdHlwZSkKLXsKLSAgZ2Jvb2xlYW4gZXh0X3RleHR1cmVfcmcgPQotICAgICAgZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoY29udGV4dCwgIkdMX0VYVF90ZXh0dXJlX3JnIik7Ci0KLSAgc3dpdGNoIChmb3JtYXQpIHsKLSAgICBjYXNlIEdMX1JHQkE6Ci0gICAgICBzd2l0Y2ggKHR5cGUpIHsKLSAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9CWVRFOgotICAgICAgICAgIHJldHVybiBVU0lOR19HTEVTMiAoY29udGV4dCkKLSAgICAgICAgICAgICAgJiYgIVVTSU5HX0dMRVMzIChjb250ZXh0KSA/IEdMX1JHQkEgOiBHTF9SR0JBODsKLSAgICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR0xfUkdCOgotICAgICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICAgIGNhc2UgR0xfVU5TSUdORURfQllURToKLSAgICAgICAgICByZXR1cm4gR0xfUkdCODsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgY2FzZSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNToKLSAgICAgICAgICByZXR1cm4gR0xfUkdCOwotICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHTF9SRzoKLSAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgaWYgKCFVU0lOR19HTEVTMyAoY29udGV4dCkgJiYgVVNJTkdfR0xFUzIgKGNvbnRleHQpICYmIGV4dF90ZXh0dXJlX3JnKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JHOwotICAgICAgICAgIHJldHVybiBHTF9SRzg7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdMX1JFRDoKLSAgICAgIHN3aXRjaCAodHlwZSkgewotICAgICAgICBjYXNlIEdMX1VOU0lHTkVEX0JZVEU6Ci0gICAgICAgICAgaWYgKCFVU0lOR19HTEVTMyAoY29udGV4dCkgJiYgVVNJTkdfR0xFUzIgKGNvbnRleHQpICYmIGV4dF90ZXh0dXJlX3JnKQotICAgICAgICAgICAgcmV0dXJuIEdMX1JFRDsKLSAgICAgICAgICByZXR1cm4gR0xfUjg7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdMX0xVTUlOQU5DRToKLSAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0U7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdMX0xVTUlOQU5DRV9BTFBIQToKLSAgICAgIHJldHVybiBHTF9MVU1JTkFOQ0VfQUxQSEE7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdMX0FMUEhBOgotICAgICAgcmV0dXJuIEdMX0FMUEhBOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7Ci0gIHJldHVybiAwOwotfQotCi1zdGF0aWMgaW5saW5lIGd1aW50CiBfZ2V0X3BsYW5lX3dpZHRoIChHc3RWaWRlb0luZm8gKiBpbmZvLCBndWludCBwbGFuZSkKIHsKICAgaWYgKEdTVF9WSURFT19JTkZPX0lTX1lVViAoaW5mbykpCkBAIC0zODQsOTYgKzExMSw2IEBACiAgICAgcmV0dXJuIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoaW5mbyk7CiB9CiAKLXR5cGVkZWYgc3RydWN0IF9HZW5UZXh0dXJlCi17Ci0gIGd1aW50IHdpZHRoLCBoZWlnaHQ7Ci0gIEdMZW51bSBnbF90YXJnZXQ7Ci0gIEdMZW51bSBnbF9mb3JtYXQ7Ci0gIEdMZW51bSBnbF90eXBlOwotICBndWludCByZXN1bHQ7Ci19IEdlblRleHR1cmU7Ci0KLS8qIGZpbmQgdGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGUgc3RhcnQgb2YgdGhlIHBsYW5lIGFuZCB3aGVyZSB0aGUgdmlkZW8KLSAqIGRhdGEgc3RhcnRzIGluIHRoZSBwbGFuZSAqLwotc3RhdGljIGdzaXplCi1fZmluZF9wbGFuZV9mcmFtZV9zdGFydCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCi17Ci0gIGdzaXplIHBsYW5lX3N0YXJ0OwotICBnaW50IGk7Ci0KLSAgLyogZmluZCB0aGUgc3RhcnQgb2YgdGhlIHBsYW5lIGRhdGEgaW5jbHVkaW5nIHBhZGRpbmcgKi8KLSAgcGxhbmVfc3RhcnQgPSAwOwotICBmb3IgKGkgPSAwOyBpIDwgZ2xfbWVtLT5wbGFuZTsgaSsrKSB7Ci0gICAgcGxhbmVfc3RhcnQgKz0KLSAgICAgICAgZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemUgKCZnbF9tZW0tPmluZm8sICZnbF9tZW0tPnZhbGlnbiwgaSk7Ci0gIH0KLQotICAvKiBvZmZzZXQgYmV0d2VlbiB0aGUgcGxhbmUgZGF0YSBzdGFydCBhbmQgd2hlcmUgdGhlIHZpZGVvIGZyYW1lIHN0YXJ0cyAqLwotICByZXR1cm4gKEdTVF9WSURFT19JTkZPX1BMQU5FX09GRlNFVCAoJmdsX21lbS0+aW5mbywKLSAgICAgICAgICBnbF9tZW0tPnBsYW5lKSkgLSBwbGFuZV9zdGFydCArIGdsX21lbS0+bWVtLm1lbS5vZmZzZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1fdXBsb2FkX21lbW9yeSAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBtYXhzaXplKQotewotICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnbF9tZW0tPm1lbS5jb250ZXh0OwotICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKLSAgR0xlbnVtIGdsX2Zvcm1hdCwgZ2xfdHlwZSwgZ2xfdGFyZ2V0OwotICBncG9pbnRlciBkYXRhOwotICBnc2l6ZSBwbGFuZV9zdGFydDsKLQotICBpZiAoKGdsX21lbS0+dHJhbnNmZXJfc3RhdGUgJiBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSA9PSAwKQotICAgIHJldHVybjsKLQotICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKLQotICBnbF90eXBlID0gR0xfVU5TSUdORURfQllURTsKLSAgaWYgKGdsX21lbS0+dGV4X3R5cGUgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKLSAgICBnbF90eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7Ci0KLSAgZ2xfZm9ybWF0ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoZ2xfbWVtLT50ZXhfdHlwZSk7Ci0gIGdsX3RhcmdldCA9IGdsX21lbS0+dGV4X3RhcmdldDsKLQotICBpZiAoVVNJTkdfT1BFTkdMIChjb250ZXh0KSB8fCBVU0lOR19HTEVTMyAoY29udGV4dCkKLSAgICAgIHx8IFVTSU5HX09QRU5HTDMgKGNvbnRleHQpKSB7Ci0gICAgZ2wtPlBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfUk9XX0xFTkdUSCwgZ2xfbWVtLT51bnBhY2tfbGVuZ3RoKTsKLSAgfSBlbHNlIGlmIChVU0lOR19HTEVTMiAoY29udGV4dCkpIHsKLSAgICBnbC0+UGl4ZWxTdG9yZWkgKEdMX1VOUEFDS19BTElHTk1FTlQsIGdsX21lbS0+dW5wYWNrX2xlbmd0aCk7Ci0gIH0KLQotICBHU1RfTE9HICgidXBsb2FkIGZvciB0ZXh0dXJlIGlkOiV1LCB3aXRoIHBibyAldSAldXgldSIsCi0gICAgICBnbF9tZW0tPnRleF9pZCwgZ2xfbWVtLT5tZW0uaWQsIGdsX21lbS0+dGV4X3dpZHRoLAotICAgICAgR0xfTUVNX0hFSUdIVCAoZ2xfbWVtKSk7Ci0KLSAgLyogZmluZCB0aGUgc3RhcnQgb2YgdGhlIHBsYW5lIGRhdGEgaW5jbHVkaW5nIHBhZGRpbmcgKi8KLSAgcGxhbmVfc3RhcnQgPSBfZmluZF9wbGFuZV9mcmFtZV9zdGFydCAoZ2xfbWVtKTsKLQotICBpZiAoZ2xfbWVtLT5tZW0uaWQgJiYgQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChjb250ZXh0KSkgewotICAgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBnbF9tZW0tPm1lbS5pZCk7Ci0gICAgZGF0YSA9ICh2b2lkICopIHBsYW5lX3N0YXJ0OwotICB9IGVsc2UgewotICAgIGRhdGEgPSAoZ3BvaW50ZXIpICgoZ2ludHB0cikgcGxhbmVfc3RhcnQgKyAoZ2ludHB0cikgZ2xfbWVtLT5tZW0uZGF0YSk7Ci0gIH0KLQotICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgZ2xfbWVtLT50ZXhfaWQpOwotICBnbC0+VGV4U3ViSW1hZ2UyRCAoZ2xfdGFyZ2V0LCAwLCAwLCAwLCBnbF9tZW0tPnRleF93aWR0aCwKLSAgICAgIEdMX01FTV9IRUlHSFQgKGdsX21lbSksIGdsX2Zvcm1hdCwgZ2xfdHlwZSwgZGF0YSk7Ci0KLSAgaWYgKGdsX21lbS0+bWVtLmlkICYmIENPTlRFWFRfU1VQUE9SVFNfUEJPX1VQTE9BRCAoY29udGV4dCkpCi0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDApOwotCi0gIC8qIFJlc2V0IHRvIGRlZmF1bHQgdmFsdWVzICovCi0gIGlmIChVU0lOR19PUEVOR0wgKGNvbnRleHQpIHx8IFVTSU5HX0dMRVMzIChjb250ZXh0KSkgewotICAgIGdsLT5QaXhlbFN0b3JlaSAoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOwotICB9IGVsc2UgaWYgKFVTSU5HX0dMRVMyIChjb250ZXh0KSkgewotICAgIGdsLT5QaXhlbFN0b3JlaSAoR0xfVU5QQUNLX0FMSUdOTUVOVCwgNCk7Ci0gIH0KLQotICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgMCk7Ci0KLSAgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmPSB+R1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRDsKLX0KLQogc3RhdGljIGlubGluZSB2b2lkCiBfY2FsY3VsYXRlX3VucGFja19sZW5ndGggKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQogewpAQCAtNDg0LDcgKzEyMSw3IEBACiAgIGdsX21lbS0+dW5wYWNrX2xlbmd0aCA9IDE7CiAgIGdsX21lbS0+dGV4X3dpZHRoID0gR0xfTUVNX1dJRFRIIChnbF9tZW0pOwogCi0gIG5fZ2xfYnl0ZXMgPSBfZ2xfdGV4dHVyZV90eXBlX25fYnl0ZXMgKGdsX21lbS0+dGV4X3R5cGUpOworICBuX2dsX2J5dGVzID0gZ3N0X2dsX3RleHR1cmVfdHlwZV9uX2J5dGVzIChnbF9tZW0tPnRleF90eXBlKTsKICAgaWYgKG5fZ2xfYnl0ZXMgPT0gMCkgewogICAgIEdTVF9FUlJPUiAoIlVuc3VwcG9ydGVkIHRleHR1cmUgdHlwZSAlZCIsIGdsX21lbS0+dGV4X3R5cGUpOwogICAgIHJldHVybjsKQEAgLTUwMiw4ICsxMzksOCBAQAogICAgICAgICAgICgoR0xfTUVNX1dJRFRIIChnbF9tZW0pICogbl9nbF9ieXRlcykgKyBqIC0gMSkgJiB+KGogLSAxKTsKIAogICAgICAgaWYgKHJvdW5kX3VwX2ogPT0gR0xfTUVNX1NUUklERSAoZ2xfbWVtKSkgewotICAgICAgICBHU1RfTE9HICgiRm91bmQgYWxpZ25tZW50IG9mICV1IGJhc2VkIG9uIHdpZHRoICIKLSAgICAgICAgICAgICIod2l0aCBwbGFuZSB3aWR0aDoldSwgcGxhbmUgc3RyaWRlOiV1IGFuZCBwaXhlbCBzdHJpZGU6JXUuICIKKyAgICAgICAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfTUVNT1JZLCAiRm91bmQgYWxpZ25tZW50IG9mICV1IGJhc2VkIG9uICIKKyAgICAgICAgICAgICJ3aWR0aCAod2l0aCBwbGFuZSB3aWR0aDoldSwgcGxhbmUgc3RyaWRlOiV1IGFuZCBwaXhlbCBzdHJpZGU6JXUuICIKICAgICAgICAgICAgICJSVSV1KCV1KiV1KSA9ICV1KSIsIGosIEdMX01FTV9XSURUSCAoZ2xfbWVtKSwKICAgICAgICAgICAgIEdMX01FTV9TVFJJREUgKGdsX21lbSksIG5fZ2xfYnl0ZXMsIGosIEdMX01FTV9XSURUSCAoZ2xfbWVtKSwKICAgICAgICAgICAgIG5fZ2xfYnl0ZXMsIHJvdW5kX3VwX2opOwpAQCAtNTI1LDggKzE2Miw4IEBACiAgICAgICAgIGd1aW50IHJvdW5kX3VwX2ogPSAoKEdMX01FTV9TVFJJREUgKGdsX21lbSkpICsgaiAtIDEpICYgfihqIC0gMSk7CiAKICAgICAgICAgaWYgKHJvdW5kX3VwX2ogPT0gKEdMX01FTV9TVFJJREUgKGdsX21lbSkpKSB7Ci0gICAgICAgICAgR1NUX0xPRyAoIkZvdW5kIGFsaWdubWVudCBvZiAldSBiYXNlZCBvbiAiCi0gICAgICAgICAgICAgICJzdHJpZGUgKHdpdGggcGxhbmUgc3RyaWRlOiV1IGFuZCBwaXhlbCBzdHJpZGU6JXUuICIKKyAgICAgICAgICBHU1RfQ0FUX0xPRyAoR1NUX0NBVF9HTF9NRU1PUlksICJGb3VuZCBhbGlnbm1lbnQgb2YgJXUgYmFzZWQgIgorICAgICAgICAgICAgICAib24gc3RyaWRlICh3aXRoIHBsYW5lIHN0cmlkZToldSBhbmQgcGl4ZWwgc3RyaWRlOiV1LiAiCiAgICAgICAgICAgICAgICJSVSV1KCV1KSA9ICV1KSIsIGosIEdMX01FTV9TVFJJREUgKGdsX21lbSksIG5fZ2xfYnl0ZXMsIGosCiAgICAgICAgICAgICAgIEdMX01FTV9TVFJJREUgKGdsX21lbSksIHJvdW5kX3VwX2opOwogCkBAIC01NDEsMTQgKzE3OCwyNSBAQAogICAgICAgfQogCiAgICAgICBpZiAoaiA8IG5fZ2xfYnl0ZXMpIHsKLSAgICAgICAgR1NUX0VSUk9SCi0gICAgICAgICAgICAoIkZhaWxlZCB0byBmaW5kIG1hdGNoaW5nIGFsaWdubWVudC4gSW1hZ2UgbWF5ICIKLSAgICAgICAgICAgICJsb29rIGNvcnJ1cHRlZC4gcGxhbmUgd2lkdGg6JXUsIHBsYW5lIHN0cmlkZToldSBhbmQgcGl4ZWwgIgotICAgICAgICAgICAgInN0cmlkZToldSIsIEdMX01FTV9XSURUSCAoZ2xfbWVtKSwgR0xfTUVNX1NUUklERSAoZ2xfbWVtKSwKLSAgICAgICAgICAgIG5fZ2xfYnl0ZXMpOworICAgICAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZhaWxlZCB0byBmaW5kIG1hdGNoaW5nICIKKyAgICAgICAgICAgICJhbGlnbm1lbnQuIEltYWdlIG1heSBsb29rIGNvcnJ1cHRlZC4gcGxhbmUgd2lkdGg6JXUsICIKKyAgICAgICAgICAgICJwbGFuZSBzdHJpZGU6JXUgYW5kIHBpeGVsIHN0cmlkZToldSIsIEdMX01FTV9XSURUSCAoZ2xfbWVtKSwKKyAgICAgICAgICAgIEdMX01FTV9TVFJJREUgKGdsX21lbSksIG5fZ2xfYnl0ZXMpOwogICAgICAgfQogICAgIH0KICAgfQorCisgIGlmIChnbF9tZW0tPnRleF90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkgeworICAgIGd1aW50IHdfc3ViID0KKyAgICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX1dfU1VCIChnbF9tZW0tPmluZm8uZmluZm8sIGdsX21lbS0+cGxhbmUpOworICAgIGd1aW50IGhfc3ViID0KKyAgICAgICAgR1NUX1ZJREVPX0ZPUk1BVF9JTkZPX0hfU1VCIChnbF9tZW0tPmluZm8uZmluZm8sIGdsX21lbS0+cGxhbmUpOworCisgICAgaWYgKHdfc3ViKQorICAgICAgZ2xfbWVtLT50ZXhfc2NhbGluZ1swXSAvPSAoMSA8PCB3X3N1Yik7CisgICAgaWYgKGhfc3ViKQorICAgICAgZ2xfbWVtLT50ZXhfc2NhbGluZ1sxXSAvPSAoMSA8PCBoX3N1Yik7CisgIH0KIH0KIAogc3RhdGljIGd1aW50CkBAIC01NjAsMjIgKzIwOCwyNCBAQAogCiAgIGdsLT5HZW5UZXh0dXJlcyAoMSwgJnRleF9pZCk7CiAgIGdsLT5CaW5kVGV4dHVyZSAodGFyZ2V0LCB0ZXhfaWQpOwotICBnbC0+VGV4SW1hZ2UyRCAodGFyZ2V0LCAwLCBpbnRlcm5hbF9mb3JtYXQsIHdpZHRoLCBoZWlnaHQsIDAsIGZvcm1hdCwgdHlwZSwKLSAgICAgIE5VTEwpOworICBpZiAodGFyZ2V0ID09IEdMX1RFWFRVUkVfMkQgfHwgdGFyZ2V0ID09IEdMX1RFWFRVUkVfUkVDVEFOR0xFKQorICAgIGdsLT5UZXhJbWFnZTJEICh0YXJnZXQsIDAsIGludGVybmFsX2Zvcm1hdCwgd2lkdGgsIGhlaWdodCwgMCwgZm9ybWF0LCB0eXBlLAorICAgICAgICBOVUxMKTsKIAogICBnbC0+VGV4UGFyYW1ldGVyaSAodGFyZ2V0LCBHTF9URVhUVVJFX01BR19GSUxURVIsIEdMX0xJTkVBUik7CiAgIGdsLT5UZXhQYXJhbWV0ZXJpICh0YXJnZXQsIEdMX1RFWFRVUkVfTUlOX0ZJTFRFUiwgR0xfTElORUFSKTsKICAgZ2wtPlRleFBhcmFtZXRlcmkgKHRhcmdldCwgR0xfVEVYVFVSRV9XUkFQX1MsIEdMX0NMQU1QX1RPX0VER0UpOwogICBnbC0+VGV4UGFyYW1ldGVyaSAodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfVCwgR0xfQ0xBTVBfVE9fRURHRSk7CiAKKyAgZ2wtPkJpbmRUZXh0dXJlICh0YXJnZXQsIDApOworCiAgIHJldHVybiB0ZXhfaWQ7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotX2dsX21lbV9jcmVhdGUgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHRXJyb3IgKiogZXJyb3IpCitfZ2xfdGV4X2NyZWF0ZSAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdFcnJvciAqKiBlcnJvcikKIHsKICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZ2xfbWVtLT5tZW0uY29udGV4dDsKLSAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CiAgIEdMZW51bSBpbnRlcm5hbF9mb3JtYXQ7CiAgIEdMZW51bSB0ZXhfZm9ybWF0OwogICBHTGVudW0gdGV4X3R5cGU7CkBAIC01ODUsNDIgKzIzNSw1MCBAQAogICBpZiAoZ2xfbWVtLT50ZXhfdHlwZSA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQogICAgIHRleF90eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7CiAKLSAgR1NUX1RSQUNFICgiR2VuZXJhdGluZyB0ZXh0dXJlIGZvcm1hdDoldSB0eXBlOiV1IGRpbWVuc2lvbnM6JXV4JXUiLAotICAgICAgdGV4X2Zvcm1hdCwgdGV4X3R5cGUsIGdsX21lbS0+dGV4X3dpZHRoLCBHTF9NRU1fSEVJR0hUIChnbF9tZW0pKTsKLQogICBpbnRlcm5hbF9mb3JtYXQgPQogICAgICAgZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlIChjb250ZXh0LCB0ZXhfZm9ybWF0LAogICAgICAgdGV4X3R5cGUpOwogCiAgIGlmICghZ2xfbWVtLT50ZXh0dXJlX3dyYXBwZWQpIHsKICAgICBnbF9tZW0tPnRleF9pZCA9Ci0gICAgICAgIF9uZXdfdGV4dHVyZSAoY29udGV4dCwgZ2xfbWVtLT50ZXhfdGFyZ2V0LCBpbnRlcm5hbF9mb3JtYXQsIHRleF9mb3JtYXQsCi0gICAgICAgIHRleF90eXBlLCBnbF9tZW0tPnRleF93aWR0aCwgR0xfTUVNX0hFSUdIVCAoZ2xfbWVtKSk7Ci0gIH0KKyAgICAgICAgX25ld190ZXh0dXJlIChjb250ZXh0LCBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGdsX21lbS0+dGV4X3RhcmdldCksCisgICAgICAgIGludGVybmFsX2Zvcm1hdCwgdGV4X2Zvcm1hdCwgdGV4X3R5cGUsIGdsX21lbS0+dGV4X3dpZHRoLAorICAgICAgICBHTF9NRU1fSEVJR0hUIChnbF9tZW0pKTsKIAotICBHU1RfTE9HICgiZ2VuZXJhdGVkIHRleHR1cmUgaWQ6JWQiLCBnbF9tZW0tPnRleF9pZCk7Ci0KLSAgaWYgKFVTSU5HX09QRU5HTCAoY29udGV4dCkgfHwgVVNJTkdfT1BFTkdMMyAoY29udGV4dCkKLSAgICAgIHx8IFVTSU5HX0dMRVMzIChjb250ZXh0KSkgewotICAgIC8qIEZJWE1FOiBsYXp5IGluaXQgdGhpcyBmb3IgcmVzb3VyY2UgY29uc3RyYWluZWQgcGxhdGZvcm1zCi0gICAgICogV2lsbCBuZWVkIHRvIGZpeCBwYm8gZGV0ZWN0aW9uIGJhc2VkIG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlIG1lbS5pZCB0aGVuICovCi0gICAgZ2wtPkdlbkJ1ZmZlcnMgKDEsICZnbF9tZW0tPm1lbS5pZCk7Ci0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIGdsX21lbS0+bWVtLmlkKTsKLSAgICBnbC0+QnVmZmVyRGF0YSAoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgZ2xfbWVtLT5tZW0ubWVtLm1heHNpemUsIE5VTEwsCi0gICAgICAgIEdMX1NUUkVBTV9EUkFXKTsKLSAgICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCk7Ci0gICAgR1NUX0xPRyAoImdlbmVyYXRlZCBwYm8gJXUiLCBnbF9tZW0tPm1lbS5pZCk7CisgICAgR1NUX1RSQUNFICgiR2VuZXJhdGluZyB0ZXh0dXJlIGlkOiV1IGZvcm1hdDoldSB0eXBlOiV1IGRpbWVuc2lvbnM6JXV4JXUiLAorICAgICAgICBnbF9tZW0tPnRleF9pZCwgdGV4X2Zvcm1hdCwgdGV4X3R5cGUsIGdsX21lbS0+dGV4X3dpZHRoLAorICAgICAgICBHTF9NRU1fSEVJR0hUIChnbF9tZW0pKTsKICAgfQogCiAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgdm9pZAotX2dsX21lbV9pbml0IChHc3RHTE1lbW9yeSAqIG1lbSwgR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBwYXJlbnQsCi0gICAgR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgZ3VpbnQgcGxhbmUsIGdwb2ludGVyIHVzZXJfZGF0YSwKLSAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfaW5pdDoKKyAqIEBtZW06IHRoZSAjR3N0R0xCYXNlTWVtb3J5IHRvIGluaXRpYWxpemUKKyAqIEBhbGxvY2F0b3I6IHRoZSAjR3N0QWxsb2NhdG9yIHRvIGluaXRpYWxpemUgd2l0aAorICogQHBhcmVudDogKGFsbG93LW5vbmUpOiB0aGUgcGFyZW50ICNHc3RNZW1vcnkgdG8gaW5pdGlhbGl6ZSB3aXRoCisgKiBAY29udGV4dDogdGhlICNHc3RHTENvbnRleHQgdG8gaW5pdGlhbGl6ZSB3aXRoCisgKiBAdGFyZ2V0OiB0aGUgI0dzdEdMVGV4dHVyZVRhcmdldCBmb3IgdGhpcyAjR3N0R0xNZW1vcnkKKyAqIEBwYXJhbXM6IChhbGxvdy1ub25lKTogdGhlIEBHc3RBbGxvY2F0aW9uUGFyYW1zIHRvIGluaXRpYWxpemUgd2l0aAorICogQGluZm86IHRoZSAjR3N0VmlkZW9JbmZvIGZvciB0aGlzICNHc3RHTE1lbW9yeQorICogQHBsYW5lOiB0aGUgcGxhbmUgbnVtYmVyIChzdGFydGluZyBmcm9tIDApIGZvciB0aGlzICNHc3RHTE1lbW9yeQorICogQHZhbGlnbjogKGFsbG93LW5vbmUpOiBvcHRpb25hbCAjR3N0VmlkZW9BbGlnbm1lbnQgcGFyYW1ldGVycworICogQG5vdGlmeTogKGFsbG93LW5vbmUpOiBhICNHRGVzdHJveU5vdGlmeQorICogQHVzZXJfZGF0YTogKGFsbG93LW5vbmUpOiB1c2VyIGRhdGEgdG8gY2FsbCBAbm90aWZ5IHdpdGgKKyAqCisgKiBJbml0aWFsaXplcyBAbWVtIHdpdGggdGhlIHJlcXVpcmVkIHBhcmFtZXRlcnMuICBAaW5mbyBpcyBhc3N1bWVkIHRvIGhhdmUKKyAqIGFscmVhZHkgaGF2ZSBiZWVuIG1vZGlmaWVkIHdpdGggZ3N0X3ZpZGVvX2luZm9fYWxpZ24oKS4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9tZW1vcnlfaW5pdCAoR3N0R0xNZW1vcnkgKiBtZW0sIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RNZW1vcnkgKiBwYXJlbnQsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0VmlkZW9JbmZvICogaW5mbywgZ3VpbnQgcGxhbmUsCisgICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIGdwb2ludGVyIHVzZXJfZGF0YSwgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQogeworICBjb25zdCBnY2hhciAqdGFyZ2V0X3N0cjsKICAgZ3NpemUgc2l6ZTsKIAogICBnX3JldHVybl9pZl9mYWlsIChwbGFuZSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKSk7CkBAIC02NDgsNDUgKzMwNiw0MiBAQAogCiAgIHNpemUgPSBnc3RfZ2xfZ2V0X3BsYW5lX2RhdGFfc2l6ZSAoaW5mbywgdmFsaWduLCBwbGFuZSk7CiAKLSAgLyogd2UgYWx3YXlzIG9wZXJhdGUgb24gMkQgdGV4dHVyZXMgdW5sZXNzIHdlJ3JlIGRlYWxpbmcgd2l0aCB3cmFwcGVkIHRleHR1cmVzICovCi0gIG1lbS0+dGV4X3RhcmdldCA9IEdMX1RFWFRVUkVfMkQ7CisgIG1lbS0+dGV4X3RhcmdldCA9IHRhcmdldDsKICAgbWVtLT50ZXhfdHlwZSA9CiAgICAgICBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0IChjb250ZXh0LCBHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pLAogICAgICAgcGxhbmUpOwogICBtZW0tPnBsYW5lID0gcGxhbmU7Ci0gIG1lbS0+bm90aWZ5ID0gbm90aWZ5OwotICBtZW0tPnVzZXJfZGF0YSA9IHVzZXJfZGF0YTsKIAogICBfY2FsY3VsYXRlX3VucGFja19sZW5ndGggKG1lbSwgY29udGV4dCk7CiAKLSAgLyogY2FsbHMgX2dsX21lbV9jcmVhdGUoKSAqLwotICBnc3RfZ2xfYmFzZV9idWZmZXJfaW5pdCAoKEdzdEdMQmFzZUJ1ZmZlciAqKSBtZW0sIGFsbG9jYXRvciwgcGFyZW50LCBjb250ZXh0LAotICAgICAgcGFyYW1zLCBzaXplKTsKKyAgZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXQgKChHc3RHTEJhc2VNZW1vcnkgKikgbWVtLCBhbGxvY2F0b3IsIHBhcmVudCwgY29udGV4dCwKKyAgICAgIHBhcmFtcywgc2l6ZSwgdXNlcl9kYXRhLCBub3RpZnkpOwogCi0gIEdTVF9ERUJVRyAoIm5ldyBHTCB0ZXh0dXJlIGNvbnRleHQ6JSIgR1NUX1BUUl9GT1JNQVQgIiBtZW1vcnk6JXAgZm9ybWF0OiV1ICIKLSAgICAgICJkaW1lbnNpb25zOiV1eCV1IHN0cmlkZToldSBzaXplOiUiIEdfR1NJWkVfRk9STUFULCBjb250ZXh0LCBtZW0sCisgIHRhcmdldF9zdHIgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fc3RyaW5nICh0YXJnZXQpOworICBHU1RfQ0FUX0RFQlVHIChHU1RfQ0FUX0dMX01FTU9SWSwgIm5ldyBHTCB0ZXh0dXJlIGNvbnRleHQ6JSIKKyAgICAgIEdTVF9QVFJfRk9STUFUICIgbWVtb3J5OiVwIHRhcmdldDolcyBmb3JtYXQ6JXUgZGltZW5zaW9uczoldXgldSAiCisgICAgICAic3RyaWRlOiV1IHNpemU6JSIgR19HU0laRV9GT1JNQVQsIGNvbnRleHQsIG1lbSwgdGFyZ2V0X3N0ciwKICAgICAgIG1lbS0+dGV4X3R5cGUsIG1lbS0+dGV4X3dpZHRoLCBHTF9NRU1fSEVJR0hUIChtZW0pLCBHTF9NRU1fU1RSSURFIChtZW0pLAogICAgICAgbWVtLT5tZW0ubWVtLnNpemUpOwogfQogCi1zdGF0aWMgR3N0R0xNZW1vcnkgKgotX2dsX21lbV9uZXcgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogcGFyZW50LAotICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIGd1aW50IHBsYW5lLCBncG9pbnRlciB1c2VyX2RhdGEsCi0gICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQotewotICBHc3RHTE1lbW9yeSAqbWVtOwotICBtZW0gPSBnX3NsaWNlX25ldzAgKEdzdEdMTWVtb3J5KTsKLSAgbWVtLT50ZXh0dXJlX3dyYXBwZWQgPSBGQUxTRTsKLQotICBfZ2xfbWVtX2luaXQgKG1lbSwgYWxsb2NhdG9yLCBwYXJlbnQsIGNvbnRleHQsIHBhcmFtcywgaW5mbywgdmFsaWduLCBwbGFuZSwKLSAgICAgIHVzZXJfZGF0YSwgbm90aWZ5KTsKLQotICByZXR1cm4gbWVtOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9nbF9tZW1fcmVhZF9waXhlbHMgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBncG9pbnRlciByZWFkX3BvaW50ZXIpCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHM6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeQorICogQHJlYWRfcG9pbnRlcjogdGhlIGRhdGEgcG9pbnRlciB0byBwYXNzIHRvIGdsUmVhZFBpeGVscworICoKKyAqIFJlYWRzIHRoZSB0ZXh0dXJlIGluICNHc3RHTE1lbW9yeSBpbnRvIEByZWFkX3BvaW50ZXIgaWYgbm8gYnVmZmVyIGlzIGJvdW5kCisgKiB0byAlR0xfUElYRUxfUEFDS19CVUZGRVIuICBPdGhlcndpc2UgQHJlYWRfcG9pbnRlciBpcyB0aGUgYnl0ZSBvZmZzZXQgaW50bworICogdGhlIGN1cnJlbnRseSBib3VuZCAlR0xfUElYRUxfUEFDS19CVUZGRVIgYnVmZmVyIHRvIHN0b3JlIHRoZSByZXN1bHQgb2YKKyAqIGdsUmVhZFBpeGVscy4gIFNlZSB0aGUgT3BlbkdMIHNwZWNpZmljYXRpb24gZm9yIGdsUmVhZFBpeGVscyBmb3IgbW9yZQorICogZGV0YWlscy4KKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZXJlYWQgb3BlcmF0aW9uIHN1Y2NlZWRlZAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHMgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBncG9pbnRlciByZWFkX3BvaW50ZXIpCiB7CiAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGdsX21lbS0+bWVtLmNvbnRleHQ7CiAgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOwpAQCAtNzAzLDcgKzM1OCw3IEBACiAgIGdsLT5CaW5kRnJhbWVidWZmZXIgKEdMX0ZSQU1FQlVGRkVSLCBmYm8pOwogCiAgIGdsLT5GcmFtZWJ1ZmZlclRleHR1cmUyRCAoR0xfRlJBTUVCVUZGRVIsIEdMX0NPTE9SX0FUVEFDSE1FTlQwLAotICAgICAgZ2xfbWVtLT50ZXhfdGFyZ2V0LCBnbF9tZW0tPnRleF9pZCwgMCk7CisgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGdsX21lbS0+dGV4X3RhcmdldCksIGdsX21lbS0+dGV4X2lkLCAwKTsKIAogICBpZiAoIWdzdF9nbF9jb250ZXh0X2NoZWNrX2ZyYW1lYnVmZmVyX3N0YXR1cyAoY29udGV4dCkpIHsKICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfTUVNT1JZLApAQCAtNzEyLDggKzM2NywxMSBAQAogICAgIHJldHVybiBGQUxTRTsKICAgfQogCisgIGdzdF9nbF9xdWVyeV9zdGFydF9sb2cgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChnbF9tZW0pLT5xdWVyeSwKKyAgICAgIEdTVF9DQVRfR0xfTUVNT1JZLCBHU1RfTEVWRUxfTE9HLCBOVUxMLCAiJXMiLCAiZ2xSZWFkUGl4ZWxzIHRvb2siKTsKICAgZ2wtPlJlYWRQaXhlbHMgKDAsIDAsIGdsX21lbS0+dGV4X3dpZHRoLCBHTF9NRU1fSEVJR0hUIChnbF9tZW0pLCBmb3JtYXQsCiAgICAgICB0eXBlLCByZWFkX3BvaW50ZXIpOworICBnc3RfZ2xfcXVlcnlfZW5kIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoZ2xfbWVtKS0+cXVlcnkpOwogCiAgIGdsLT5CaW5kRnJhbWVidWZmZXIgKEdMX0ZSQU1FQlVGRkVSLCAwKTsKIApAQCAtNzIyLDY0ICszODAsOCBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIGdib29sZWFuCi1fcmVhZF9waXhlbHNfdG9fcGJvIChHc3RHTE1lbW9yeSAqIGdsX21lbSkKLXsKLSAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBnbF9tZW0tPm1lbS5jb250ZXh0LT5nbF92dGFibGU7Ci0KLSAgaWYgKCFnbF9tZW0tPm1lbS5pZCB8fCAhQ09OVEVYVF9TVVBQT1JUU19QQk9fRE9XTkxPQUQgKGdsX21lbS0+bWVtLmNvbnRleHQpCi0gICAgICB8fCBnbF9tZW0tPnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFCi0gICAgICB8fCBnbF9tZW0tPnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFX0FMUEhBKQotICAgIC8qIHVuc3VwcG9ydGVkICovCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmIChnbF9tZW0tPnRyYW5zZmVyX3N0YXRlICYgR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSB7Ci0gICAgLyogY29weSB0ZXh0dXJlIGRhdGEgaW50byBpbnRvIHRoZSBwYm8gYW5kIG1hcCB0aGF0ICovCi0gICAgZ3NpemUgcGxhbmVfc3RhcnQgPSBfZmluZF9wbGFuZV9mcmFtZV9zdGFydCAoZ2xfbWVtKTsKLQotICAgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgZ2xfbWVtLT5tZW0uaWQpOwotCi0gICAgaWYgKCFfZ2xfbWVtX3JlYWRfcGl4ZWxzIChnbF9tZW0sIChncG9pbnRlcikgcGxhbmVfc3RhcnQpKSB7Ci0gICAgICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOwotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLQotICAgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7Ci0gICAgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmPSB+R1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KIHN0YXRpYyBncG9pbnRlcgotX3Bib19kb3dubG9hZF90cmFuc2ZlciAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7Ci0gIGdwb2ludGVyIGRhdGEgPSBOVUxMOwotCi0gIGFsbG9jX2NsYXNzID0KLSAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfQ0xBU1MgKGdzdF9nbF9hbGxvY2F0b3JfcGFyZW50X2NsYXNzKTsKLQotICAvKiB0ZXh0dXJlIC0+IHBibyAqLwotICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1JFQUQKLSAgICAgICYmIGdsX21lbS0+dHJhbnNmZXJfc3RhdGUgJiBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpIHsKLSAgICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX0dMX01FTU9SWSwgImF0dGVtcHRpbmcgZG93bmxvYWQgb2YgdGV4dHVyZSAldSAiCi0gICAgICAgICJ1c2luZyBwYm8gJXUiLCBnbF9tZW0tPnRleF9pZCwgZ2xfbWVtLT5tZW0uaWQpOwotCi0gICAgaWYgKCFfcmVhZF9waXhlbHNfdG9fcGJvIChnbF9tZW0pKQotICAgICAgcmV0dXJuIE5VTEw7Ci0gIH0KLQotICAvKiBnZXQgYSBjcHUgYWNjZXNzaWJsZSBtYXBwaW5nIGZyb20gdGhlIHBibyAqLwotICBnbF9tZW0tPm1lbS50YXJnZXQgPSBHTF9QSVhFTF9QQUNLX0JVRkZFUjsKLSAgLyogcGJvIC0+IGRhdGEgKi8KLSAgZGF0YSA9IGFsbG9jX2NsYXNzLT5tYXBfYnVmZmVyICgoR3N0R0xCYXNlQnVmZmVyICopIGdsX21lbSwgaW5mbywgc2l6ZSk7Ci0KLSAgcmV0dXJuIGRhdGE7Ci19Ci0KLXN0YXRpYyBncG9pbnRlcgotX2dsX21lbV9kb3dubG9hZF9nZXRfdGV4X2ltYWdlIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sCitfZ2xfdGV4X2Rvd25sb2FkX2dldF90ZXhfaW1hZ2UgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywKICAgICBnc2l6ZSBzaXplKQogewogICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnbF9tZW0tPm1lbS5jb250ZXh0OwpAQCAtNzk3LDggKzM5OSwxMCBAQAogICAgIHJldHVybiBOVUxMOwogCiAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfUkVBRAotICAgICAgJiYgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmIEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkgeworICAgICAgJiYgR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoZ2xfbWVtLAorICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSkgewogICAgIGd1aW50IGZvcm1hdCwgdHlwZTsKKyAgICBndWludCB0YXJnZXQ7CiAKICAgICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX0dMX01FTU9SWSwgImF0dGVtcHRpbmcgZG93bmxvYWQgb2YgdGV4dHVyZSAldSAiCiAgICAgICAgICJ1c2luZyBnbEdldFRleEltYWdlIiwgZ2xfbWVtLT50ZXhfaWQpOwpAQCAtODA4LDI2ICs0MTIsMzIgQEAKICAgICBpZiAoZ2xfbWVtLT50ZXhfdHlwZSA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQogICAgICAgdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OwogCi0gICAgZ2wtPkJpbmRUZXh0dXJlIChnbF9tZW0tPnRleF90YXJnZXQsIGdsX21lbS0+dGV4X2lkKTsKLSAgICBnbC0+R2V0VGV4SW1hZ2UgKGdsX21lbS0+dGV4X3RhcmdldCwgMCwgZm9ybWF0LCB0eXBlLCBnbF9tZW0tPm1lbS5kYXRhKTsKLSAgICBnbC0+QmluZFRleHR1cmUgKGdsX21lbS0+dGV4X3RhcmdldCwgMCk7CisgICAgdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsIChnbF9tZW0tPnRleF90YXJnZXQpOworICAgIGdsLT5CaW5kVGV4dHVyZSAodGFyZ2V0LCBnbF9tZW0tPnRleF9pZCk7CisgICAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZyAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGdsX21lbSktPnF1ZXJ5LAorICAgICAgICBHU1RfQ0FUX0dMX01FTU9SWSwgR1NUX0xFVkVMX0xPRywgTlVMTCwgIiVzIiwgImdsR2V0VGV4SW1hZ2UgdG9vayIpOworICAgIGdsLT5HZXRUZXhJbWFnZSAodGFyZ2V0LCAwLCBmb3JtYXQsIHR5cGUsIGdsX21lbS0+bWVtLmRhdGEpOworICAgIGdzdF9nbF9xdWVyeV9lbmQgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChnbF9tZW0pLT5xdWVyeSk7CisgICAgZ2wtPkJpbmRUZXh0dXJlICh0YXJnZXQsIDApOwogICB9CiAKICAgcmV0dXJuIGdsX21lbS0+bWVtLmRhdGE7CiB9CiAKIHN0YXRpYyBncG9pbnRlcgotX2dsX21lbV9kb3dubG9hZF9yZWFkX3BpeGVscyAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLAorX2dsX3RleF9kb3dubG9hZF9yZWFkX3BpeGVscyAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLAogICAgIGdzaXplIHNpemUpCiB7CiAgIGlmIChzaXplICE9IC0xICYmIHNpemUgIT0gKChHc3RNZW1vcnkgKikgZ2xfbWVtKS0+bWF4c2l6ZSkKICAgICByZXR1cm4gTlVMTDsKIAogICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1JFQUQKLSAgICAgICYmIGdsX21lbS0+dHJhbnNmZXJfc3RhdGUgJiBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpIHsKLSAgICBHU1RfQ0FUX1RSQUNFIChHU1RfQ0FUX0dMX01FTU9SWSwgImF0dGVtcHRpbmcgZG93bmxvYWQgb2YgdGV4dHVyZSAldSAiCi0gICAgICAgICJ1c2luZyBnbFJlYWRQaXhlbHMiLCBnbF9tZW0tPnRleF9pZCk7Ci0gICAgaWYgKCFfZ2xfbWVtX3JlYWRfcGl4ZWxzIChnbF9tZW0sIGdsX21lbS0+bWVtLmRhdGEpKQorICAgICAgJiYgR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoZ2xfbWVtLAorICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSkgeworICAgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfR0xfTUVNT1JZLAorICAgICAgICAiYXR0ZW1wdGluZyBkb3dubG9hZCBvZiB0ZXh0dXJlICV1ICIgInVzaW5nIGdsUmVhZFBpeGVscyIsCisgICAgICAgIGdsX21lbS0+dGV4X2lkKTsKKyAgICBpZiAoIWdzdF9nbF9tZW1vcnlfcmVhZF9waXhlbHMgKGdsX21lbSwgZ2xfbWVtLT5tZW0uZGF0YSkpCiAgICAgICByZXR1cm4gTlVMTDsKICAgfQogCkBAIC04MzUsMTQ5ICs0NDUsMjM0IEBACiB9CiAKIHN0YXRpYyBncG9pbnRlcgotX2dsX21lbV9tYXBfY3B1X2FjY2VzcyAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQorX2dsX3RleF9tYXBfY3B1X2FjY2VzcyAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQogewogICBncG9pbnRlciBkYXRhID0gTlVMTDsKIAotICBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NfZGF0YSAoKEdzdEdMQmFzZUJ1ZmZlciAqKSBnbF9tZW0pOwotCi0gIGlmICghZGF0YSAmJiBnbF9tZW0tPm1lbS5pZAotICAgICAgJiYgQ09OVEVYVF9TVVBQT1JUU19QQk9fRE9XTkxPQUQgKGdsX21lbS0+bWVtLmNvbnRleHQpKQotICAgIGRhdGEgPSBfcGJvX2Rvd25sb2FkX3RyYW5zZmVyIChnbF9tZW0sIGluZm8sIHNpemUpOwotICBpZiAoIWRhdGEpCi0gICAgZGF0YSA9IF9nbF9tZW1fZG93bmxvYWRfZ2V0X3RleF9pbWFnZSAoZ2xfbWVtLCBpbmZvLCBzaXplKTsKKyAgaWYgKCFnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YSAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGdsX21lbSkpKQorICAgIHJldHVybiBOVUxMOwogCiAgIGlmICghZGF0YSkKLSAgICBkYXRhID0gX2dsX21lbV9kb3dubG9hZF9yZWFkX3BpeGVscyAoZ2xfbWVtLCBpbmZvLCBzaXplKTsKKyAgICBkYXRhID0gX2dsX3RleF9kb3dubG9hZF9nZXRfdGV4X2ltYWdlIChnbF9tZW0sIGluZm8sIHNpemUpOworCisgIGlmICghZGF0YSkKKyAgICBkYXRhID0gX2dsX3RleF9kb3dubG9hZF9yZWFkX3BpeGVscyAoZ2xfbWVtLCBpbmZvLCBzaXplKTsKIAogICByZXR1cm4gZGF0YTsKIH0KIAorc3RhdGljIHZvaWQKK191cGxvYWRfY3B1X3dyaXRlIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIG1heHNpemUpCit7CisgIGdzdF9nbF9tZW1vcnlfdGV4c3ViaW1hZ2UgKGdsX21lbSwgZ2xfbWVtLT5tZW0uZGF0YSk7Cit9CisKKy8qKgorICogZ3N0X2dsX21lbW9yeV90ZXhzdWJpbWFnZToKKyAqIEBnbF9tZW06IGEgI0dzdEdMTWVtb3J5CisgKiBAcmVhZF9wb2ludGVyOiB0aGUgZGF0YSBwb2ludGVyIHRvIHBhc3MgdG8gZ2xUZXhTdWJJbWFnZQorICoKKyAqIFNlZSBnc3RfZ2xfbWVtb3J5X3JlYWRfcGl4ZWxzKCkgZm9yIHdoYXQgQHJlYWRfcG9pbnRlciBzaWduaWZpZXMuCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgZ3BvaW50ZXIgcmVhZF9wb2ludGVyKQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnbF9tZW0tPm1lbS5jb250ZXh0OworICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKKyAgR0xlbnVtIGdsX2Zvcm1hdCwgZ2xfdHlwZSwgZ2xfdGFyZ2V0OworICBncG9pbnRlciBkYXRhOworICBnc2l6ZSBwbGFuZV9zdGFydDsKKworICBpZiAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKGdsX21lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSkKKyAgICByZXR1cm47CisKKyAgZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX0JZVEU7CisgIGlmIChnbF9tZW0tPnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCisgICAgZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OworCisgIGdsX2Zvcm1hdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKGdsX21lbS0+dGV4X3R5cGUpOworICBnbF90YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGdsX21lbS0+dGV4X3RhcmdldCk7CisKKyAgaWYgKFVTSU5HX09QRU5HTCAoY29udGV4dCkgfHwgVVNJTkdfR0xFUzMgKGNvbnRleHQpCisgICAgICB8fCBVU0lOR19PUEVOR0wzIChjb250ZXh0KSkgeworICAgIGdsLT5QaXhlbFN0b3JlaSAoR0xfVU5QQUNLX1JPV19MRU5HVEgsIGdsX21lbS0+dW5wYWNrX2xlbmd0aCk7CisgIH0gZWxzZSBpZiAoVVNJTkdfR0xFUzIgKGNvbnRleHQpKSB7CisgICAgZ2wtPlBpeGVsU3RvcmVpIChHTF9VTlBBQ0tfQUxJR05NRU5ULCBnbF9tZW0tPnVucGFja19sZW5ndGgpOworICB9CisKKyAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfTUVNT1JZLCAidXBsb2FkIGZvciB0ZXh0dXJlIGlkOiV1LCAldXgldSIsCisgICAgICBnbF9tZW0tPnRleF9pZCwgZ2xfbWVtLT50ZXhfd2lkdGgsIEdMX01FTV9IRUlHSFQgKGdsX21lbSkpOworCisgIC8qIGZpbmQgdGhlIHN0YXJ0IG9mIHRoZSBwbGFuZSBkYXRhIGluY2x1ZGluZyBwYWRkaW5nICovCisgIHBsYW5lX3N0YXJ0ID0KKyAgICAgIGdzdF9nbF9nZXRfcGxhbmVfc3RhcnQgKCZnbF9tZW0tPmluZm8sICZnbF9tZW0tPnZhbGlnbiwKKyAgICAgIGdsX21lbS0+cGxhbmUpICsgZ2xfbWVtLT5tZW0ubWVtLm9mZnNldDsKKworICBkYXRhID0gKGdwb2ludGVyKSAoKGdpbnRwdHIpIHBsYW5lX3N0YXJ0ICsgKGdpbnRwdHIpIHJlYWRfcG9pbnRlcik7CisKKyAgZ2wtPkJpbmRUZXh0dXJlIChnbF90YXJnZXQsIGdsX21lbS0+dGV4X2lkKTsKKyAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZyAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKGdsX21lbSktPnF1ZXJ5LAorICAgICAgR1NUX0NBVF9HTF9NRU1PUlksIEdTVF9MRVZFTF9MT0csIE5VTEwsICIlcyIsICJnbFRleFN1YkltYWdlIHRvb2siKTsKKyAgZ2wtPlRleFN1YkltYWdlMkQgKGdsX3RhcmdldCwgMCwgMCwgMCwgZ2xfbWVtLT50ZXhfd2lkdGgsCisgICAgICBHTF9NRU1fSEVJR0hUIChnbF9tZW0pLCBnbF9mb3JtYXQsIGdsX3R5cGUsIGRhdGEpOworICBnc3RfZ2xfcXVlcnlfZW5kIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoZ2xfbWVtKS0+cXVlcnkpOworCisgIC8qIFJlc2V0IHRvIGRlZmF1bHQgdmFsdWVzICovCisgIGlmIChVU0lOR19PUEVOR0wgKGNvbnRleHQpIHx8IFVTSU5HX0dMRVMzIChjb250ZXh0KSkgeworICAgIGdsLT5QaXhlbFN0b3JlaSAoR0xfVU5QQUNLX1JPV19MRU5HVEgsIDApOworICB9IGVsc2UgaWYgKFVTSU5HX0dMRVMyIChjb250ZXh0KSkgeworICAgIGdsLT5QaXhlbFN0b3JlaSAoR0xfVU5QQUNLX0FMSUdOTUVOVCwgNCk7CisgIH0KKworICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgMCk7Cit9CisKIHN0YXRpYyBncG9pbnRlcgotX2dsX21lbV9tYXBfYnVmZmVyIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIG1heHNpemUpCitfZGVmYXVsdF9nbF90ZXhfbWFwIChHc3RHTE1lbW9yeSAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sIGdzaXplIHNpemUpCiB7Ci0gIEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKyAgaWYgKChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpID09IEdTVF9NQVBfR0wpIHsKKyAgICBfdXBsb2FkX2NwdV93cml0ZSAoZ2xfbWVtLCBpbmZvLCBzaXplKTsKKyAgICByZXR1cm4gJmdsX21lbS0+dGV4X2lkOworICB9IGVsc2UgeworICAgIHJldHVybiBfZ2xfdGV4X21hcF9jcHVfYWNjZXNzIChnbF9tZW0sIGluZm8sIHNpemUpOworICB9Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX2dsX3RleF9tYXAgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgbWF4c2l6ZSkKK3sKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7CiAgIGdwb2ludGVyIGRhdGE7CiAKLSAgYWxsb2NfY2xhc3MgPQotICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0FMTE9DQVRPUl9DTEFTUyAoZ3N0X2dsX2FsbG9jYXRvcl9wYXJlbnRfY2xhc3MpOworICBhbGxvY19jbGFzcyA9IEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAoZ2xfbWVtLT5tZW0ubWVtLmFsbG9jYXRvcik7CiAKICAgaWYgKChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpID09IEdTVF9NQVBfR0wpIHsKLSAgICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9SRUFEKSA9PSBHU1RfTUFQX1JFQUQpIHsKLSAgICAgIEdTVF9UUkFDRSAoIm1hcHBpbmcgR0wgdGV4dHVyZToldSBmb3IgcmVhZGluZyIsIGdsX21lbS0+dGV4X2lkKTsKLQotICAgICAgaWYgKGdsX21lbS0+bWVtLmlkICYmIENPTlRFWFRfU1VQUE9SVFNfUEJPX1VQTE9BRCAoZ2xfbWVtLT5tZW0uY29udGV4dCkpIHsKLSAgICAgICAgZ2xfbWVtLT5tZW0udGFyZ2V0ID0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUjsKLSAgICAgICAgLyogZGF0YSAtPiBwYm8gKi8KLSAgICAgICAgYWxsb2NfY2xhc3MtPm1hcF9idWZmZXIgKChHc3RHTEJhc2VCdWZmZXIgKikgZ2xfbWVtLCBpbmZvLCBtYXhzaXplKTsKLSAgICAgIH0KLSAgICAgIC8qIHBibyAtPiB0ZXh0dXJlICovCi0gICAgICBfdXBsb2FkX21lbW9yeSAoZ2xfbWVtLCBpbmZvLCBtYXhzaXplKTsKLSAgICB9Ci0KLSAgICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkgPT0gR1NUX01BUF9XUklURSkgewotICAgICAgR1NUX1RSQUNFICgibWFwcGluZyBHTCB0ZXh0dXJlOiV1IGZvciB3cml0aW5nIiwgZ2xfbWVtLT50ZXhfaWQpOwotICAgICAgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSB8PSBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQ7Ci0gICAgfQotICAgIGdsX21lbS0+dHJhbnNmZXJfc3RhdGUgJj0gfkdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQ7Ci0KLSAgICBkYXRhID0gJmdsX21lbS0+dGV4X2lkOworICAgIGlmIChnbF9tZW0tPnRleF90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICAgIHJldHVybiAmZ2xfbWVtLT50ZXhfaWQ7CiAgIH0gZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgIC8qIG5vdCBHTCAqLwotICAgIGRhdGEgPSBfZ2xfbWVtX21hcF9jcHVfYWNjZXNzIChnbF9tZW0sIGluZm8sIG1heHNpemUpOwotICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfV1JJVEUpCi0gICAgICBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQ7Ci0gICAgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSAmPSB+R1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEOworICAgIGlmIChnbF9tZW0tPnRleF90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykgeworICAgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksICJDYW5ub3QgbWFwIEV4dGVybmFsIE9FUyB0ZXh0dXJlcyIpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQogICB9CiAKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT5tYXAgIT0gTlVMTCwgTlVMTCk7CisgIGRhdGEgPSBhbGxvY19jbGFzcy0+bWFwIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoZ2xfbWVtKSwgaW5mbywgbWF4c2l6ZSk7CisKICAgcmV0dXJuIGRhdGE7CiB9CiAKIHN0YXRpYyB2b2lkCi1fZ2xfbWVtX3VubWFwX2NwdV9hY2Nlc3MgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbykKK19kZWZhdWx0X2dsX3RleF91bm1hcCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvKQogewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7Ci0gIGNvbnN0IEdzdEdMRnVuY3MgKmdsOwotCi0gIGFsbG9jX2NsYXNzID0KLSAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9BTExPQ0FUT1JfQ0xBU1MgKGdzdF9nbF9hbGxvY2F0b3JfcGFyZW50X2NsYXNzKTsKLSAgZ2wgPSBnbF9tZW0tPm1lbS5jb250ZXh0LT5nbF92dGFibGU7Ci0KLSAgaWYgKCFnbF9tZW0tPm1lbS5pZCkKLSAgICAvKiBQQk8ncyBub3Qgc3VwcG9ydGVkICovCi0gICAgcmV0dXJuOwotCi0gIGdsX21lbS0+bWVtLnRhcmdldCA9IEdMX1BJWEVMX1BBQ0tfQlVGRkVSOwotICBhbGxvY19jbGFzcy0+dW5tYXBfYnVmZmVyICgoR3N0R0xCYXNlQnVmZmVyICopIGdsX21lbSwgaW5mbyk7Ci0gIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgMCk7CiB9CiAKIHN0YXRpYyB2b2lkCi1fZ2xfbWVtX3VubWFwX2J1ZmZlciAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvKQorX2dsX3RleF91bm1hcCAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvKQogewotICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgPT0gMCkgewotICAgIF9nbF9tZW1fdW5tYXBfY3B1X2FjY2VzcyAoZ2xfbWVtLCBpbmZvKTsKLSAgICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKQotICAgICAgZ2xfbWVtLT50cmFuc2Zlcl9zdGF0ZSB8PSBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEOwotICB9IGVsc2UgewotICAgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfV1JJVEUpCi0gICAgICBnbF9tZW0tPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRDsKLSAgfQorICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKworICBhbGxvY19jbGFzcyA9IEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyAoZ2xfbWVtLT5tZW0ubWVtLmFsbG9jYXRvcik7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGFsbG9jX2NsYXNzLT51bm1hcCAhPSBOVUxMKTsKKworICBhbGxvY19jbGFzcy0+dW5tYXAgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChnbF9tZW0pLCBpbmZvKTsKIH0KIAotc3RhdGljIHZvaWQKLV9nbF9tZW1fY29weV90aHJlYWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGdwb2ludGVyIGRhdGEpCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfY29weV90ZXhpYW1nZToKKyAqIEBnbF9tZW06IHRoZSBzb3VyY2UgI0dzdEdMTWVtb3J5CisgKiBAdGV4X2lkOiB0aGUgZGVzdGluYXRpb24gdGV4dHVyZSBpZAorICogQG91dF90YXJnZXQ6IHRoZSBkZXN0aW5hdGlvbiAjR3N0R0xUZXh0dXJlVGFyZ2V0CisgKiBAb3V0X3RleF90eXBlOiB0aGUgZGVzdGluYXRpb24gI0dzdFZpZGVvR0xUZXh0dXJlVHlwZQorICogQG91dF93aWR0aDogdGhlIGRlc3RpbmF0aW9uIHdpZHRoCisgKiBAb3V0X2hlaWdodDogdGhlIGRlc3RpbmF0aW9uIGhlaWdodAorICoKKyAqIENvcGllcyB0aGUgdGV4dHVyZSBpbiAjR3N0R0xNZW1vcnkgaW50byB0aGUgdGV4dHVyZSBzcGVjaWZpZWQgYnkgQHRleF9pZCwKKyAqIEBvdXRfdGFyZ2V0LCBAb3V0X3RleF90eXBlLCBAb3V0X3dpZHRoIGFuZCBAb3V0X2hlaWdodC4KKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBjb3B5IHN1Y2NlZWRlZC4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfZ2xfbWVtb3J5X2NvcHlfdGV4aW1hZ2UgKEdzdEdMTWVtb3J5ICogc3JjLCBndWludCB0ZXhfaWQsCisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IG91dF90YXJnZXQsIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSBvdXRfdGV4X3R5cGUsCisgICAgZ2ludCBvdXRfd2lkdGgsIGdpbnQgb3V0X2hlaWdodCkKIHsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7Ci0gIEdzdEdMTWVtb3J5Q29weVBhcmFtcyAqY29weV9wYXJhbXM7Ci0gIEdzdEdMTWVtb3J5ICpzcmM7Ci0gIGd1aW50IHRleF9pZDsKLSAgR0x1aW50IG91dF90ZXhfdGFyZ2V0OwotICBHTHVpbnQgZmJvSWQ7Ci0gIGdzaXplIG91dF93aWR0aCwgb3V0X2hlaWdodCwgb3V0X3N0cmlkZTsKLSAgR0x1aW50IG91dF9nbF9mb3JtYXQsIG91dF9nbF90eXBlOwotICBHTHVpbnQgaW5fZ2xfZm9ybWF0LCBpbl9nbF90eXBlOwotICBnc2l6ZSBpbl9zaXplLCBvdXRfc2l6ZTsKKyAgZ3VpbnQgb3V0X2dsX2Zvcm1hdCwgb3V0X3RleF90YXJnZXQ7CisgIEdzdE1hcEluZm8gc2luZm87CisgIGd1aW50IHNyY190ZXhfaWQ7CisgIGd1aW50IGZibzsKIAotICBjb3B5X3BhcmFtcyA9IChHc3RHTE1lbW9yeUNvcHlQYXJhbXMgKikgZGF0YTsKLSAgc3JjID0gY29weV9wYXJhbXMtPnNyYzsKLSAgdGV4X2lkID0gY29weV9wYXJhbXMtPnRleF9pZDsKLSAgb3V0X3RleF90YXJnZXQgPSBjb3B5X3BhcmFtcy0+dGV4X3RhcmdldDsKLSAgb3V0X3dpZHRoID0gY29weV9wYXJhbXMtPm91dF93aWR0aDsKLSAgb3V0X2hlaWdodCA9IGNvcHlfcGFyYW1zLT5vdXRfaGVpZ2h0OwotICBvdXRfc3RyaWRlID0gY29weV9wYXJhbXMtPm91dF9zdHJpZGU7Ci0KLSAgZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7Ci0gIG91dF9nbF9mb3JtYXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlIChjb3B5X3BhcmFtcy0+b3V0X2Zvcm1hdCk7Ci0gIG91dF9nbF90eXBlID0gR0xfVU5TSUdORURfQllURTsKLSAgaWYgKGNvcHlfcGFyYW1zLT5vdXRfZm9ybWF0ID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCi0gICAgb3V0X2dsX3R5cGUgPSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKLSAgaW5fZ2xfZm9ybWF0ID0gZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoc3JjLT50ZXhfdHlwZSk7Ci0gIGluX2dsX3R5cGUgPSBHTF9VTlNJR05FRF9CWVRFOwotICBpZiAoc3JjLT50ZXhfdHlwZSA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQjE2KQotICAgIGluX2dsX3R5cGUgPSBHTF9VTlNJR05FRF9TSE9SVF81XzZfNTsKKyAgZ2wgPSBzcmMtPm1lbS5jb250ZXh0LT5nbF92dGFibGU7CisgIG91dF90ZXhfdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsIChvdXRfdGFyZ2V0KTsKKyAgb3V0X2dsX2Zvcm1hdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKG91dF90ZXhfdHlwZSk7CiAKICAgaWYgKCFnbC0+R2VuRnJhbWVidWZmZXJzKSB7Ci0gICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChjb250ZXh0LAotICAgICAgICAiQ29udGV4dCwgRVhUX2ZyYW1lYnVmZmVyX29iamVjdCBub3Qgc3VwcG9ydGVkIik7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksICJGcmFtZWJ1ZmZlciBvYmplY3RzIG5vdCBzdXBwb3J0ZWQiKTsKICAgICBnb3RvIGVycm9yOwogICB9CiAKLSAgaW5fc2l6ZSA9IEdMX01FTV9IRUlHSFQgKHNyYykgKiBHTF9NRU1fU1RSSURFIChzcmMpOwotICBvdXRfc2l6ZSA9IG91dF9oZWlnaHQgKiBvdXRfc3RyaWRlOwotCi0gIGlmIChjb3B5X3BhcmFtcy0+cmVzcGVjaWZ5KSB7Ci0gICAgaWYgKGluX3NpemUgIT0gb3V0X3NpemUpIHsKLSAgICAgIEdTVF9FUlJPUiAoIkNhbm5vdCBjb3B5IGJldHdlZW4gdGV4dHVyZXMgd2l0aCBiYWNraW5nIGRhdGEgb2YgZGlmZmVyZW50IgotICAgICAgICAgICJzaXplcy4gaW5wdXQgJSIgR19HU0laRV9GT1JNQVQgIiBvdXRwdXQgJSIgR19HU0laRV9GT1JNQVQsIGluX3NpemUsCi0gICAgICAgICAgb3V0X3NpemUpOwotICAgICAgZ290byBlcnJvcjsKLSAgICB9CisgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAoc3JjKSwgJnNpbmZvLAorICAgICAgICAgIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksCisgICAgICAgICJGYWlsZWQgdG8gbWFwIHNvdXJjZSBtZW1vcnkgZm9yIGNvcHlpbmciKTsKKyAgICBnb3RvIGVycm9yOwogICB9CisgIHNyY190ZXhfaWQgPSAqKGd1aW50ICopIHNpbmZvLmRhdGE7CiAKLSAgaWYgKCF0ZXhfaWQpIHsKLSAgICBndWludCBpbnRlcm5hbF9mb3JtYXQ7Ci0gICAgZ3VpbnQgb3V0X2dsX3R5cGU7CisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX01FTU9SWSwgImNvcHlpbmcgbWVtb3J5ICVwLCB0ZXggJXUgaW50byAiCisgICAgICAidGV4dHVyZSAlaSIsIHNyYywgc3JjX3RleF9pZCwgdGV4X2lkKTsKIAorICAvKiBGSVhNRTogdHJ5IGFuZCBhdm9pZCBjcmVhdGluZyBhbmQgZGVzdHJveWluZyBmYm8ncyBldmVyeSBjb3B5Li4uICovCisgIC8qIGNyZWF0ZSBhIGZyYW1lYnVmZmVyIG9iamVjdCAqLworICBnbC0+R2VuRnJhbWVidWZmZXJzICgxLCAmZmJvKTsKKyAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIGZibyk7CisKKyAgZ2wtPkZyYW1lYnVmZmVyVGV4dHVyZTJEIChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsCisgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKHNyYy0+dGV4X3RhcmdldCksIHNyY190ZXhfaWQsIDApOworCisvLyAgaWYgKCFnc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXMgKHNyYy0+Y29udGV4dCkpCisvLyAgICBnb3RvIGZib19lcnJvcjsKKworICBnbC0+QmluZFRleHR1cmUgKG91dF90ZXhfdGFyZ2V0LCB0ZXhfaWQpOworICBnc3RfZ2xfcXVlcnlfc3RhcnRfbG9nIChHU1RfR0xfQkFTRV9NRU1PUllfQ0FTVCAoc3JjKS0+cXVlcnksCisgICAgICBHU1RfQ0FUX0dMX01FTU9SWSwgR1NUX0xFVkVMX0xPRywgTlVMTCwgIiVzIiwgIkNvcHlUZXhJbWFnZTJEIHRvb2siKTsKKyAgZ2wtPkNvcHlUZXhJbWFnZTJEIChvdXRfdGV4X3RhcmdldCwgMCwgb3V0X2dsX2Zvcm1hdCwgMCwgMCwgb3V0X3dpZHRoLAorICAgICAgb3V0X2hlaWdodCwgMCk7CisgIGdzdF9nbF9xdWVyeV9lbmQgKEdTVF9HTF9CQVNFX01FTU9SWV9DQVNUIChzcmMpLT5xdWVyeSk7CisKKyAgZ2wtPkJpbmRUZXh0dXJlIChvdXRfdGV4X3RhcmdldCwgMCk7CisgIGdsLT5CaW5kRnJhbWVidWZmZXIgKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKworICBnbC0+RGVsZXRlRnJhbWVidWZmZXJzICgxLCAmZmJvKTsKKworICBnc3RfbWVtb3J5X3VubWFwIChHU1RfTUVNT1JZX0NBU1QgKHNyYyksICZzaW5mbyk7CisKKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfdGV4X2NvcHlfdGhyZWFkIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBncG9pbnRlciBkYXRhKQoreworICBHc3RHTE1lbW9yeUNvcHlQYXJhbXMgKmNvcHlfcGFyYW1zOworCisgIGNvcHlfcGFyYW1zID0gKEdzdEdMTWVtb3J5Q29weVBhcmFtcyAqKSBkYXRhOworCisgIGlmICghY29weV9wYXJhbXMtPnRleF9pZCkgeworICAgIGd1aW50IGludGVybmFsX2Zvcm1hdCwgb3V0X2dsX2Zvcm1hdCwgb3V0X2dsX3R5cGUsIG91dF90ZXhfdGFyZ2V0OworCisgICAgb3V0X3RleF90YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGNvcHlfcGFyYW1zLT50ZXhfdGFyZ2V0KTsKKyAgICBvdXRfZ2xfZm9ybWF0ID0KKyAgICAgICAgZ3N0X2dsX2Zvcm1hdF9mcm9tX2dsX3RleHR1cmVfdHlwZSAoY29weV9wYXJhbXMtPnNyYy0+dGV4X3R5cGUpOwogICAgIG91dF9nbF90eXBlID0gR0xfVU5TSUdORURfQllURTsKICAgICBpZiAoY29weV9wYXJhbXMtPm91dF9mb3JtYXQgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKICAgICAgIG91dF9nbF90eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7CkBAIC05ODYsNDM3ICs2ODEsMjI0IEBACiAgICAgICAgIGdzdF9nbF9zaXplZF9nbF9mb3JtYXRfZnJvbV9nbF9mb3JtYXRfdHlwZSAoY29udGV4dCwgb3V0X2dsX2Zvcm1hdCwKICAgICAgICAgb3V0X2dsX3R5cGUpOwogCi0gICAgdGV4X2lkID0KLSAgICAgICAgX25ld190ZXh0dXJlIChjb250ZXh0LCBvdXRfdGV4X3RhcmdldCwgaW50ZXJuYWxfZm9ybWF0LCBvdXRfZ2xfZm9ybWF0LAotICAgICAgICBvdXRfZ2xfdHlwZSwgY29weV9wYXJhbXMtPm91dF93aWR0aCwgY29weV9wYXJhbXMtPm91dF9oZWlnaHQpOworICAgIGNvcHlfcGFyYW1zLT50ZXhfaWQgPQorICAgICAgICBfbmV3X3RleHR1cmUgKGNvbnRleHQsIG91dF90ZXhfdGFyZ2V0LAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQsIG91dF9nbF9mb3JtYXQsIG91dF9nbF90eXBlLCBjb3B5X3BhcmFtcy0+b3V0X3dpZHRoLAorICAgICAgICBjb3B5X3BhcmFtcy0+b3V0X2hlaWdodCk7CiAgIH0KIAotICBpZiAoIXRleF9pZCkgewotICAgIEdTVF9XQVJOSU5HICgiQ291bGQgbm90IGNyZWF0ZSBHTCB0ZXh0dXJlIHdpdGggY29udGV4dDolcCIsIGNvbnRleHQpOwotICB9Ci0KLSAgR1NUX0xPRyAoImNvcHlpbmcgbWVtb3J5ICVwLCB0ZXggJXUgaW50byB0ZXh0dXJlICVpIiwKLSAgICAgIHNyYywgc3JjLT50ZXhfaWQsIHRleF9pZCk7Ci0KLSAgLyogRklYTUU6IHRyeSBhbmQgYXZvaWQgY3JlYXRpbmcgYW5kIGRlc3Ryb3lpbmcgZmJvJ3MgZXZlcnkgY29weS4uLiAqLwotICAvKiBjcmVhdGUgYSBmcmFtZWJ1ZmZlciBvYmplY3QgKi8KLSAgZ2wtPkdlbkZyYW1lYnVmZmVycyAoMSwgJmZib0lkKTsKLSAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIGZib0lkKTsKLQotICBnbC0+RnJhbWVidWZmZXJUZXh0dXJlMkQgKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCwKLSAgICAgIHNyYy0+dGV4X3RhcmdldCwgc3JjLT50ZXhfaWQsIDApOwotCi0vLyAgaWYgKCFnc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXMgKHNyYy0+Y29udGV4dCkpCi0vLyAgICBnb3RvIGZib19lcnJvcjsKLQotICBnbC0+QmluZFRleHR1cmUgKG91dF90ZXhfdGFyZ2V0LCB0ZXhfaWQpOwotICBpZiAoY29weV9wYXJhbXMtPnJlc3BlY2lmeSkgewotICAgIGlmICghZ2wtPkdlbkJ1ZmZlcnMgfHwgIXNyYy0+bWVtLmlkKSB7Ci0gICAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKGNvbnRleHQsICJDYW5ub3QgcmVpbnRlcnByZXQgdGV4dHVyZSBjb250ZW50cyAiCi0gICAgICAgICAgIndpdGhvdXQgcGl4ZWwgYnVmZmVyIG9iamVjdHMiKTsKLSAgICAgIGdsLT5CaW5kVGV4dHVyZSAob3V0X3RleF90YXJnZXQsIDApOwotICAgICAgZ290byBmYm9fZXJyb3I7Ci0gICAgfQotCi0gICAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9HTEVTMgotICAgICAgICAmJiAoaW5fZ2xfZm9ybWF0ICE9IEdMX1JHQkEgfHwgaW5fZ2xfdHlwZSAhPSBHTF9VTlNJR05FRF9CWVRFKSkgewotICAgICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChjb250ZXh0LCAiQ2Fubm90IGNvcHkgbm9uIFJHQkEvVU5TSUdORURfQllURSAiCi0gICAgICAgICAgInRleHR1cmVzIG9uIEdMRVMyIik7Ci0gICAgICBnbC0+QmluZFRleHR1cmUgKG91dF90ZXhfdGFyZ2V0LCAwKTsKLSAgICAgIGdvdG8gZmJvX2Vycm9yOwotICAgIH0KLQotICAgIEdTVF9UUkFDRSAoImNvcHlpbmcgdGV4dHVyZSBkYXRhIHdpdGggc2l6ZSBvZiAldSoldSoldSIsCi0gICAgICAgIF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzIChpbl9nbF9mb3JtYXQsIGluX2dsX3R5cGUpLCBzcmMtPnRleF93aWR0aCwKLSAgICAgICAgR0xfTUVNX0hFSUdIVCAoc3JjKSk7Ci0KLSAgICAvKiBjb3B5IHRleCAqLwotICAgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgc3JjLT5tZW0uaWQpOwotICAgIGdsLT5CdWZmZXJEYXRhIChHTF9QSVhFTF9QQUNLX0JVRkZFUiwgaW5fc2l6ZSwgTlVMTCwgR0xfU1RSRUFNX0NPUFkpOwotICAgIGdsLT5SZWFkUGl4ZWxzICgwLCAwLCBzcmMtPnRleF93aWR0aCwgR0xfTUVNX0hFSUdIVCAoc3JjKSwgaW5fZ2xfZm9ybWF0LAotICAgICAgICBpbl9nbF90eXBlLCAwKTsKLSAgICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfUEFDS19CVUZGRVIsIDApOwotCi0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIHNyYy0+bWVtLmlkKTsKLSAgICBnbC0+VGV4U3ViSW1hZ2UyRCAob3V0X3RleF90YXJnZXQsIDAsIDAsIDAsIG91dF93aWR0aCwgb3V0X2hlaWdodCwKLSAgICAgICAgb3V0X2dsX2Zvcm1hdCwgb3V0X2dsX3R5cGUsIDApOwotCi0gICAgZ2wtPkJpbmRCdWZmZXIgKEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsIDApOwotICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAvKiBkaWZmZXJlbnQgc2l6ZXMgKi8KLSAgICBnbC0+Q29weVRleEltYWdlMkQgKG91dF90ZXhfdGFyZ2V0LCAwLCBvdXRfZ2xfZm9ybWF0LCAwLCAwLCBvdXRfd2lkdGgsCi0gICAgICAgIG91dF9oZWlnaHQsIDApOwotICB9Ci0KLSAgZ2wtPkJpbmRUZXh0dXJlIChvdXRfdGV4X3RhcmdldCwgMCk7Ci0gIGdsLT5CaW5kRnJhbWVidWZmZXIgKEdMX0ZSQU1FQlVGRkVSLCAwKTsKLQotICBnbC0+RGVsZXRlRnJhbWVidWZmZXJzICgxLCAmZmJvSWQpOwotCi0gIGNvcHlfcGFyYW1zLT50ZXhfaWQgPSB0ZXhfaWQ7Ci0gIGNvcHlfcGFyYW1zLT5yZXN1bHQgPSBUUlVFOwotCi0gIHJldHVybjsKLQotLyogRVJST1JTICovCi1mYm9fZXJyb3I6Ci0gIHsKLSAgICBnbC0+RGVsZXRlRnJhbWVidWZmZXJzICgxLCAmZmJvSWQpOwotCi0gICAgY29weV9wYXJhbXMtPnRleF9pZCA9IDA7Ci0gICAgY29weV9wYXJhbXMtPnJlc3VsdCA9IEZBTFNFOwotICAgIHJldHVybjsKLSAgfQotCi1lcnJvcjoKLSAgewotICAgIGNvcHlfcGFyYW1zLT5yZXN1bHQgPSBGQUxTRTsKLSAgICByZXR1cm47Ci0gIH0KKyAgY29weV9wYXJhbXMtPnJlc3VsdCA9IGdzdF9nbF9tZW1vcnlfY29weV90ZXhpbWFnZSAoY29weV9wYXJhbXMtPnNyYywKKyAgICAgIGNvcHlfcGFyYW1zLT50ZXhfaWQsIGNvcHlfcGFyYW1zLT50ZXhfdGFyZ2V0LCBjb3B5X3BhcmFtcy0+dGV4X3R5cGUsCisgICAgICBjb3B5X3BhcmFtcy0+b3V0X3dpZHRoLCBjb3B5X3BhcmFtcy0+b3V0X2hlaWdodCk7CiB9CiAKIHN0YXRpYyBHc3RNZW1vcnkgKgotX2dsX21lbV9jb3B5IChHc3RHTE1lbW9yeSAqIHNyYywgZ3NzaXplIG9mZnNldCwgZ3NzaXplIHNpemUpCitfZGVmYXVsdF9nbF90ZXhfY29weSAoR3N0R0xNZW1vcnkgKiBzcmMsIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQogewotICBHc3RHTEFsbG9jYXRvciAqYWxsb2NhdG9yID0gKEdzdEdMQWxsb2NhdG9yICopIHNyYy0+bWVtLm1lbS5hbGxvY2F0b3I7Ci0gIEdzdE1lbW9yeSAqcmV0ID0gTlVMTDsKKyAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXMgPSB7IDAsIEdTVF9NRU1PUllfQ0FTVCAoc3JjKS0+YWxpZ24sIDAsIDAgfTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpiYXNlX21lbV9hbGxvY2F0b3I7CisgIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOworICBHc3RHTE1lbW9yeSAqZGVzdCA9IE5VTEw7CisKKyAgYWxsb2NhdG9yID0gR1NUX01FTU9SWV9DQVNUIChzcmMpLT5hbGxvY2F0b3I7CisgIGJhc2VfbWVtX2FsbG9jYXRvciA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKikgYWxsb2NhdG9yOworCisgIGlmIChzcmMtPnRleF90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiQ2Fubm90IGNvcHkgRXh0ZXJuYWwgT0VTIHRleHR1cmVzIik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KIAogICAvKiBJZiBub3QgZG9pbmcgYSBmdWxsIGNvcHksIHRoZW4gY29weSB0byBzeXNtZW0sIHRoZSAyRCByZXByZXNlbnRpb24gb2YgdGhlCiAgICAqIHRleHR1cmUgd291bGQgYmVjb21lIHdyb25nICovCi0gIGlmIChvZmZzZXQgPiAwIHx8IHNpemUgPCBzcmMtPm1lbS5tZW0uc2l6ZSkgewotICAgIHJldCA9IGFsbG9jYXRvci0+ZmFsbGJhY2tfbWVtX2NvcHkgKCZzcmMtPm1lbS5tZW0sIG9mZnNldCwgc2l6ZSk7Ci0gIH0gZWxzZSBpZiAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoc3JjLCBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpIHsKLSAgICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtcyA9IHsgMCwgc3JjLT5tZW0ubWVtLmFsaWduLCAwLCAwIH07Ci0gICAgR3N0R0xNZW1vcnkgKmRlc3Q7Ci0KLSAgICBkZXN0ID0gX2dsX21lbV9uZXcgKHNyYy0+bWVtLm1lbS5hbGxvY2F0b3IsIE5VTEwsIHNyYy0+bWVtLmNvbnRleHQsICZwYXJhbXMsCi0gICAgICAgICZzcmMtPmluZm8sICZzcmMtPnZhbGlnbiwgc3JjLT5wbGFuZSwgTlVMTCwgTlVMTCk7Ci0gICAgZGVzdCA9IChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NfZGF0YSAoKEdzdEdMQmFzZUJ1ZmZlciAqKQotICAgICAgICBkZXN0KTsKLQotICAgIGlmIChkZXN0ID09IE5VTEwpIHsKLSAgICAgIEdTVF9XQVJOSU5HICgiQ291bGQgbm90IGNvcHkgR0wgTWVtb3J5Iik7Ci0gICAgICBnb3RvIGRvbmU7Ci0gICAgfQotCi0gICAgbWVtY3B5IChkZXN0LT5tZW0uZGF0YSwgKGd1aW50OCAqKSBzcmMtPm1lbS5kYXRhICsgc3JjLT5tZW0ubWVtLm9mZnNldCwKLSAgICAgICAgc3JjLT5tZW0ubWVtLnNpemUpOwotICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAoZGVzdCwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpOwotICAgIGRlc3QtPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQ7Ci0gICAgcmV0ID0gKEdzdE1lbW9yeSAqKSBkZXN0OwotICB9IGVsc2UgewotICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zID0geyAwLCBzcmMtPm1lbS5tZW0uYWxpZ24sIDAsIDAgfTsKLSAgICBHc3RHTE1lbW9yeUNvcHlQYXJhbXMgY29weV9wYXJhbXM7Ci0gICAgR3N0R0xNZW1vcnkgKmRlc3Q7Ci0KLSAgICBjb3B5X3BhcmFtcy5zcmMgPSBzcmM7Ci0gICAgY29weV9wYXJhbXMudGV4X2lkID0gMDsKLSAgICBjb3B5X3BhcmFtcy5vdXRfZm9ybWF0ID0gc3JjLT50ZXhfdHlwZTsKLSAgICBjb3B5X3BhcmFtcy50ZXhfdGFyZ2V0ID0gc3JjLT50ZXhfdGFyZ2V0OwotICAgIGNvcHlfcGFyYW1zLm91dF93aWR0aCA9IHNyYy0+dGV4X3dpZHRoOwotICAgIGNvcHlfcGFyYW1zLm91dF9oZWlnaHQgPSBHTF9NRU1fSEVJR0hUIChzcmMpOwotICAgIGNvcHlfcGFyYW1zLm91dF9zdHJpZGUgPSBHTF9NRU1fU1RSSURFIChzcmMpOwotICAgIGNvcHlfcGFyYW1zLnJlc3BlY2lmeSA9IEZBTFNFOwotCi0gICAgX2dsX21lbV9jb3B5X3RocmVhZCAoc3JjLT5tZW0uY29udGV4dCwgJmNvcHlfcGFyYW1zKTsKLQotICAgIGlmICghY29weV9wYXJhbXMucmVzdWx0KSB7Ci0gICAgICBHU1RfV0FSTklORyAoIkNvdWxkIG5vdCBjb3B5IEdMIE1lbW9yeSIpOwotICAgICAgZ290byBkb25lOwotICAgIH0KLQotICAgIGRlc3QgPSBnX3NsaWNlX25ldzAgKEdzdEdMTWVtb3J5KTsKLSAgICAvKiBkb24ndCBjcmVhdGUgb3VyIG93biB0ZXh0dXJlICovCi0gICAgZGVzdC0+dGV4dHVyZV93cmFwcGVkID0gVFJVRTsKLSAgICBfZ2xfbWVtX2luaXQgKGRlc3QsIHNyYy0+bWVtLm1lbS5hbGxvY2F0b3IsIE5VTEwsIHNyYy0+bWVtLmNvbnRleHQsICZwYXJhbXMsCi0gICAgICAgICZzcmMtPmluZm8sICZzcmMtPnZhbGlnbiwgc3JjLT5wbGFuZSwgTlVMTCwgTlVMTCk7Ci0gICAgZGVzdC0+dGV4dHVyZV93cmFwcGVkID0gRkFMU0U7Ci0KLSAgICBkZXN0LT50ZXhfaWQgPSBjb3B5X3BhcmFtcy50ZXhfaWQ7Ci0gICAgZGVzdC0+dGV4X3RhcmdldCA9IGNvcHlfcGFyYW1zLnRleF90YXJnZXQ7Ci0gICAgZGVzdCA9IChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9idWZmZXJfYWxsb2NfZGF0YSAoKEdzdEdMQmFzZUJ1ZmZlciAqKQotICAgICAgICBkZXN0KTsKLSAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKGRlc3QsIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpOwotICAgIGRlc3QtPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRDsKLSAgICByZXQgPSAoR3N0TWVtb3J5ICopIGRlc3Q7CisgIGlmIChvZmZzZXQgPiAwIHx8IHNpemUgPCBHU1RfTUVNT1JZX0NBU1QgKHNyYyktPnNpemUpIHsKKyAgICByZXR1cm4gYmFzZV9tZW1fYWxsb2NhdG9yLT5mYWxsYmFja19tZW1fY29weSAoR1NUX01FTU9SWV9DQVNUIChzcmMpLCBvZmZzZXQsCisgICAgICAgIHNpemUpOwogICB9CiAKLWRvbmU6Ci0gIHJldHVybiByZXQ7CisgIGRlc3QgPSBnX25ldzAgKEdzdEdMTWVtb3J5LCAxKTsKKworICBnc3RfZ2xfbWVtb3J5X2luaXQgKGRlc3QsIGFsbG9jYXRvciwgTlVMTCwgc3JjLT5tZW0uY29udGV4dCwgc3JjLT50ZXhfdGFyZ2V0LAorICAgICAgJnBhcmFtcywgJnNyYy0+aW5mbywgc3JjLT5wbGFuZSwgJnNyYy0+dmFsaWduLCBOVUxMLCBOVUxMKTsKKworICBpZiAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoc3JjLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKSB7CisgICAgaWYgKCFnc3RfZ2xfYmFzZV9tZW1vcnlfbWVtY3B5ICgoR3N0R0xCYXNlTWVtb3J5ICopIHNyYywKKyAgICAgICAgICAgIChHc3RHTEJhc2VNZW1vcnkgKikgZGVzdCwgb2Zmc2V0LCBzaXplKSkgeworICAgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX01FTU9SWSwgIkNvdWxkIG5vdCBjb3B5IEdMIE1lbW9yeSIpOworICAgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgR3N0TWFwSW5mbyBkaW5mbzsKKworICAgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCksICZkaW5mbywKKyAgICAgICAgICAgIEdTVF9NQVBfV1JJVEUgfCBHU1RfTUFQX0dMKSkgeworICAgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX01FTU9SWSwKKyAgICAgICAgICAiRmFpbGVkIG5vdCBtYXAgZGVzdGluYXRpb24gIiAiZm9yIHdyaXRpbmciKTsKKyAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCkpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorCisgICAgaWYgKCFnc3RfZ2xfbWVtb3J5X2NvcHlfaW50byAoKEdzdEdMTWVtb3J5ICopIHNyYywKKyAgICAgICAgICAgICgoR3N0R0xNZW1vcnkgKikgZGVzdCktPnRleF9pZCwgc3JjLT50ZXhfdGFyZ2V0LAorICAgICAgICAgICAgc3JjLT50ZXhfdHlwZSwgc3JjLT50ZXhfd2lkdGgsIEdMX01FTV9IRUlHSFQgKHNyYykpKSB7CisgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfTUVNT1JZLCAiQ291bGQgbm90IGNvcHkgR0wgTWVtb3J5Iik7CisgICAgICBnc3RfbWVtb3J5X3VubWFwIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpLCAmZGluZm8pOworICAgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBnc3RfbWVtb3J5X3VubWFwIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpLCAmZGluZm8pOworICB9CisKKyAgcmV0dXJuIChHc3RNZW1vcnkgKikgZGVzdDsKIH0KIAogc3RhdGljIEdzdE1lbW9yeSAqCi1fZ2xfbWVtX2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIGdzaXplIHNpemUsCitfZ2xfdGV4X2NvcHkgKEdzdEdMTWVtb3J5ICogc3JjLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7CisKKyAgYWxsb2NfY2xhc3MgPSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9HRVRfQ0xBU1MgKHNyYy0+bWVtLm1lbS5hbGxvY2F0b3IpOworCisgIGlmIChzcmMtPnRleF90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiQ2Fubm90IGNvcHkgRXh0ZXJuYWwgT0VTIHRleHR1cmVzIik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfY2xhc3MtPmNvcHksIE5VTEwpOworICByZXR1cm4gKEdzdE1lbW9yeSAqKSBhbGxvY19jbGFzcy0+Y29weSAoR1NUX0dMX0JBU0VfTUVNT1JZX0NBU1QgKHNyYyksIG9mZnNldCwKKyAgICAgIHNpemUpOworfQorCitzdGF0aWMgR3N0TWVtb3J5ICoKK19nbF90ZXhfYWxsb2MgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgZ3NpemUgc2l6ZSwKICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQogewotICBnX3dhcm5pbmcgKCJ1c2UgZ3N0X2dsX21lbW9yeV9hbGxvYyAoKSB0byBhbGxvY2F0ZSBmcm9tIHRoaXMgIgotICAgICAgIkdzdEdMTWVtb3J5IGFsbG9jYXRvciIpOworICBnX3dhcm5pbmcgKCJVc2UgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIHRvIGFsbG9jYXRlIGZyb20gdGhpcyBhbGxvY2F0b3IiKTsKIAogICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQKLV9nbF9tZW1fZGVzdHJveSAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCitfZ2xfdGV4X2Rlc3Ryb3kgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQogewogICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGdsX21lbS0+bWVtLmNvbnRleHQtPmdsX3Z0YWJsZTsKIAogICBpZiAoZ2xfbWVtLT50ZXhfaWQgJiYgIWdsX21lbS0+dGV4dHVyZV93cmFwcGVkKQogICAgIGdsLT5EZWxldGVUZXh0dXJlcyAoMSwgJmdsX21lbS0+dGV4X2lkKTsKK30KIAotICBpZiAoZ2xfbWVtLT5tZW0uaWQpCi0gICAgZ2wtPkRlbGV0ZUJ1ZmZlcnMgKDEsICZnbF9tZW0tPm1lbS5pZCk7CitzdGF0aWMgR3N0R0xNZW1vcnkgKgorX2RlZmF1bHRfZ2xfdGV4X2FsbG9jIChHc3RHTE1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgZ3VpbnQgYWxsb2NfZmxhZ3MgPSBwYXJhbXMtPnBhcmVudC5hbGxvY19mbGFnczsKKyAgR3N0R0xNZW1vcnkgKm1lbTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfZmxhZ3MgJiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTywKKyAgICAgIE5VTEwpOworCisgIG1lbSA9IGdfbmV3MCAoR3N0R0xNZW1vcnksIDEpOworCisgIGlmIChhbGxvY19mbGFncyAmIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSkgeworICAgIG1lbS0+dGV4X2lkID0gcGFyYW1zLT5wYXJlbnQuZ2xfaGFuZGxlOworICAgIG1lbS0+dGV4dHVyZV93cmFwcGVkID0gVFJVRTsKKyAgfQorCisgIGdzdF9nbF9tZW1vcnlfaW5pdCAobWVtLCBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvciksIE5VTEwsCisgICAgICBwYXJhbXMtPnBhcmVudC5jb250ZXh0LCBwYXJhbXMtPnRhcmdldCwgcGFyYW1zLT5wYXJlbnQuYWxsb2NfcGFyYW1zLAorICAgICAgcGFyYW1zLT52X2luZm8sIHBhcmFtcy0+cGxhbmUsIHBhcmFtcy0+dmFsaWduLCBwYXJhbXMtPnBhcmVudC51c2VyX2RhdGEsCisgICAgICBwYXJhbXMtPnBhcmVudC5ub3RpZnkpOworCisgIGlmIChhbGxvY19mbGFncyAmIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSkgeworICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCk7CisgIH0KKyAgaWYgKGFsbG9jX2ZsYWdzICYgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9TWVNNRU0pIHsKKyAgICBtZW0tPm1lbS5kYXRhID0gcGFyYW1zLT5wYXJlbnQud3JhcHBlZF9kYXRhOworICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpOworICB9CisKKyAgcmV0dXJuIG1lbTsKIH0KIAogc3RhdGljIHZvaWQKLV9nbF9tZW1fZnJlZSAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBtZW0pCitnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9jbGFzc19pbml0IChHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICoga2xhc3MpCiB7Ci0gIEdzdEdMTWVtb3J5ICpnbF9tZW0gPSAoR3N0R0xNZW1vcnkgKikgbWVtOwotCi0gIEdTVF9BTExPQ0FUT1JfQ0xBU1MgKGdzdF9nbF9hbGxvY2F0b3JfcGFyZW50X2NsYXNzKS0+ZnJlZSAoYWxsb2NhdG9yLCBtZW0pOwotCi0gIGlmIChnbF9tZW0tPm5vdGlmeSkKLSAgICBnbF9tZW0tPm5vdGlmeSAoZ2xfbWVtLT51c2VyX2RhdGEpOwotCi0gIGdfc2xpY2VfZnJlZSAoR3N0R0xNZW1vcnksIGdsX21lbSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfYWxsb2NhdG9yX2NsYXNzX2luaXQgKEdzdEdMQWxsb2NhdG9yQ2xhc3MgKiBrbGFzcykKLXsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3MgKmdsX2Jhc2U7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICpnbF9iYXNlOwogICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzOwogCi0gIGdsX2Jhc2UgPSAoR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisgIGdsX2Jhc2UgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CiAgIGFsbG9jYXRvcl9jbGFzcyA9IChHc3RBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKIAotICBnbF9iYXNlLT5jcmVhdGUgPSAoR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ3JlYXRlRnVuY3Rpb24pIF9nbF9tZW1fY3JlYXRlOwotICBnbF9iYXNlLT5tYXBfYnVmZmVyID0KLSAgICAgIChHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JNYXBCdWZmZXJGdW5jdGlvbikgX2dsX21lbV9tYXBfYnVmZmVyOwotICBnbF9iYXNlLT51bm1hcF9idWZmZXIgPQotICAgICAgKEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvclVubWFwQnVmZmVyRnVuY3Rpb24pIF9nbF9tZW1fdW5tYXBfYnVmZmVyOwotICBnbF9iYXNlLT5jb3B5ID0gKEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckNvcHlGdW5jdGlvbikgX2dsX21lbV9jb3B5OwotICBnbF9iYXNlLT5kZXN0cm95ID0gKEdzdEdMQmFzZUJ1ZmZlckFsbG9jYXRvckRlc3Ryb3lGdW5jdGlvbikgX2dsX21lbV9kZXN0cm95OworICBrbGFzcy0+bWFwID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uKSBfZGVmYXVsdF9nbF90ZXhfbWFwOworICBrbGFzcy0+dW5tYXAgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yVW5tYXBGdW5jdGlvbikgX2RlZmF1bHRfZ2xfdGV4X3VubWFwOworICBrbGFzcy0+Y29weSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDb3B5RnVuY3Rpb24pIF9kZWZhdWx0X2dsX3RleF9jb3B5OwogCi0gIGFsbG9jYXRvcl9jbGFzcy0+YWxsb2MgPSBfZ2xfbWVtX2FsbG9jOwotICBhbGxvY2F0b3JfY2xhc3MtPmZyZWUgPSBfZ2xfbWVtX2ZyZWU7CisgIGdsX2Jhc2UtPmFsbG9jID0KKyAgICAgIChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JBbGxvY0Z1bmN0aW9uKSBfZGVmYXVsdF9nbF90ZXhfYWxsb2M7CisgIGdsX2Jhc2UtPmNyZWF0ZSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbikgX2dsX3RleF9jcmVhdGU7CisgIGdsX2Jhc2UtPm1hcCA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbikgX2dsX3RleF9tYXA7CisgIGdsX2Jhc2UtPnVubWFwID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24pIF9nbF90ZXhfdW5tYXA7CisgIGdsX2Jhc2UtPmNvcHkgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uKSBfZ2xfdGV4X2NvcHk7CisgIGdsX2Jhc2UtPmRlc3Ryb3kgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uKSBfZ2xfdGV4X2Rlc3Ryb3k7CisKKyAgYWxsb2NhdG9yX2NsYXNzLT5hbGxvYyA9IF9nbF90ZXhfYWxsb2M7CiB9CiAKIHN0YXRpYyB2b2lkCi1nc3RfZ2xfYWxsb2NhdG9yX2luaXQgKEdzdEdMQWxsb2NhdG9yICogYWxsb2NhdG9yKQorZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfaW5pdCAoR3N0R0xNZW1vcnlBbGxvY2F0b3IgKiBhbGxvY2F0b3IpCiB7CiAgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CiAKLSAgLyogS2VlcCB0aGUgZmFsbGJhY2sgY29weSBmdW5jdGlvbiBhcm91bmQsIHdlIHdpbGwgbmVlZCBpdCB3aGVuIGNvcHlpbmcgd2l0aAotICAgKiBhdCBhbiBvZmZzZXQgb3Igc21hbGxlciBzaXplICovCi0gIGFsbG9jYXRvci0+ZmFsbGJhY2tfbWVtX2NvcHkgPSBhbGxvYy0+bWVtX2NvcHk7Ci0KLSAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1I7CisgIGFsbG9jLT5tZW1fdHlwZSA9IEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUU7CiAKICAgR1NUX09CSkVDVF9GTEFHX1NFVCAoYWxsb2NhdG9yLCBHU1RfQUxMT0NBVE9SX0ZMQUdfQ1VTVE9NX0FMTE9DKTsKIH0KIAogLyoqCi0gKiBnc3RfZ2xfbWVtb3J5X2NvcHlfaW50b190ZXh0dXJlOgorICogZ3N0X2dsX21lbW9yeV9jb3B5X2ludG86CiAgKiBAZ2xfbWVtOmEgI0dzdEdMTWVtb3J5CiAgKiBAdGV4X2lkOk9wZW5HTCB0ZXh0dXJlIGlkCi0gKiBAdGV4X3R5cGU6IGEgI0dzdFZpZGVvR0xUZXh0dXJlVHlwZQorICogQHRhcmdldDogdGhlICNHc3RHTFRleHR1cmVUYXJnZXQKKyAqIEB0ZXhfdHlwZTogdGhlICNHc3RWaWRlb0dMVGV4dHVyZVR5cGUKICAqIEB3aWR0aDogd2lkdGggb2YgQHRleF9pZAogICogQGhlaWdodDogaGVpZ2h0IG9mIEB0ZXhfaWQKLSAqIEBzdHJpZGU6IHN0cmlkZSBvZiB0aGUgYmFja2luZyB0ZXh0dXJlIGRhdGEKLSAqIEByZXNwZWNpZnk6IHdoZXRoZXIgdG8gY29weSB0aGUgZGF0YSBvciBjb3B5IHBlciB0ZXhlbAogICoKICAqIENvcGllcyBAZ2xfbWVtIGludG8gdGhlIHRleHR1cmUgc3BlY2ZpZmllZCBieSBAdGV4X2lkLiAgVGhlIGZvcm1hdCBvZiBAdGV4X2lkCiAgKiBpcyBzcGVjaWZpZWQgYnkgQHRleF90eXBlLCBAd2lkdGggYW5kIEBoZWlnaHQuCiAgKgotICogSWYgQHJlc3BlY2lmeSBpcyAlVFJVRSwgdGhlbiB0aGUgY29weSBpcyBwZXJmb3JtZWQgaW4gdGVybXMgb2YgdGhlIHRleHR1cmUKLSAqIGRhdGEuICBUaGlzIGlzIHVzZWZ1bCBmb3Igc3BsaXR0aW5nIFJHQkEgdGV4dHVyZXMgaW50byBSRyBvciBSIHRleHR1cmVzIG9yCi0gKiB2aWNlIHZlcnNhLiBUaGUgcmVxdWlyZW1lbnQgZm9yIHRoaXMgdG8gc3VjY2VlZCBpcyB0aGF0IHRoZSBiYWNraW5nIHRleHR1cmUKLSAqIGRhdGEgbXVzdCBiZSB0aGUgc2FtZSBzaXplLCBpLmUuIHNheSBhIFJHQkE4IHRleHR1cmUgaXMgY29udmVydGVkIGludG8gYSBSRzgKLSAqIHRleHR1cmUsIHRoZW4gdGhlIFJHIHRleHR1cmUgbXVzdCBoYXZlIHR3aWNlIGFzIG1hbnkgcGl4ZWxzIGF2YWlsYWJsZSBmb3IKLSAqIG91dHB1dCBhcyB0aGUgUkdCQSB0ZXh0dXJlLgotICoKLSAqIE90aGVyd2lzZSwgaWYgQHJlc3BlY2lmeSBpcyAlRkFMU0UsIHRoZW4gdGhlIGNvcHkgaXMgcGVyZm9ybWVkIHBlciB0ZXhlbAotICogdXNpbmcgZ2xDb3B5VGV4SW1hZ2UuICBTZWUgdGhlIE9wZW5HTCBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZQotICogbWFwcGluZ3MgYmV0d2VlbiB0ZXh0dXJlIGZvcm1hdHMuCi0gKgogICogUmV0dXJuczogV2hldGhlciB0aGUgY29weSBzdWNlZWRlZAorICoKKyAqIFNpbmNlOiAxLjgKICAqLwogZ2Jvb2xlYW4KLWdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUgKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBndWludCB0ZXhfaWQsCi0gICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlLCBnaW50IHdpZHRoLCBnaW50IGhlaWdodCwgZ2ludCBzdHJpZGUsCi0gICAgZ2Jvb2xlYW4gcmVzcGVjaWZ5KQorZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8gKEdzdEdMTWVtb3J5ICogZ2xfbWVtLCBndWludCB0ZXhfaWQsCisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlLCBnaW50IHdpZHRoLAorICAgIGdpbnQgaGVpZ2h0KQogewogICBHc3RHTE1lbW9yeUNvcHlQYXJhbXMgY29weV9wYXJhbXM7CiAKICAgY29weV9wYXJhbXMuc3JjID0gZ2xfbWVtOwotICBjb3B5X3BhcmFtcy50ZXhfdGFyZ2V0ID0gZ2xfbWVtLT50ZXhfdGFyZ2V0OwogICBjb3B5X3BhcmFtcy50ZXhfaWQgPSB0ZXhfaWQ7Ci0gIGNvcHlfcGFyYW1zLm91dF9mb3JtYXQgPSB0ZXhfdHlwZTsKKyAgY29weV9wYXJhbXMudGV4X3RhcmdldCA9IHRhcmdldDsKKyAgY29weV9wYXJhbXMudGV4X3R5cGUgPSB0ZXhfdHlwZTsKICAgY29weV9wYXJhbXMub3V0X3dpZHRoID0gd2lkdGg7CiAgIGNvcHlfcGFyYW1zLm91dF9oZWlnaHQgPSBoZWlnaHQ7Ci0gIGNvcHlfcGFyYW1zLm91dF9zdHJpZGUgPSBzdHJpZGU7Ci0gIGNvcHlfcGFyYW1zLnJlc3BlY2lmeSA9IHJlc3BlY2lmeTsKIAotICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChnbF9tZW0tPm1lbS5jb250ZXh0LCBfZ2xfbWVtX2NvcHlfdGhyZWFkLAorICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChnbF9tZW0tPm1lbS5jb250ZXh0LCBfZ2xfdGV4X2NvcHlfdGhyZWFkLAogICAgICAgJmNvcHlfcGFyYW1zKTsKIAogICByZXR1cm4gY29weV9wYXJhbXMucmVzdWx0OwogfQogCiAvKioKLSAqIGdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlOgotICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAotICogQHRleHR1cmVfaWQ6IHRoZSBHTCB0ZXh0dXJlIGhhbmRsZQotICogQHRleHR1cmVfdGFyZ2V0OiB0aGUgR0wgdGV4dHVyZSB0YXJnZXQKLSAqIEBpbmZvOiB0aGUgI0dzdFZpZGVvSW5mbyBvZiB0aGUgbWVtb3J5Ci0gKiBAcGxhbmU6IFRoZSBwbGFuZSB0aGlzIG1lbW9yeSB3aWxsIHJlcHJlc2VudAotICogQHVzZXJfZGF0YTogdXNlciBkYXRhCi0gKiBAbm90aWZ5OiBEZXN0cm95IGNhbGxiYWNrIGZvciB0aGUgdXNlciBkYXRhCisgKiBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX3dpZHRoOgorICogQGdsX21lbTogYSAjR3N0R0xNZW1vcnkKICAqCi0gKiBXcmFwcyBhIHRleHR1cmUgaGFuZGxlIGludG8gYSAjR3N0R0xNZW1vcnkuCisgKiBSZXR1cm5zOiB0aGUgdGV4dHVyZSB3aWR0aCBvZiBAZ2xfbWVtCiAgKgotICogUmV0dXJuczogYSBuZXdseSBhbGxvY2F0ZWQgI0dzdEdMTWVtb3J5CisgKiBTaW5jZTogMS44CiAgKi8KLUdzdEdMTWVtb3J5ICoKLWdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAotICAgIGd1aW50IHRleHR1cmVfaWQsIGd1aW50IHRleHR1cmVfdGFyZ2V0LAotICAgIEdzdFZpZGVvSW5mbyAqIGluZm8sIGd1aW50IHBsYW5lLCBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwKLSAgICBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKLXsKLSAgR3N0R0xNZW1vcnkgKm1lbTsKLQotICBtZW0gPSBnX3NsaWNlX25ldzAgKEdzdEdMTWVtb3J5KTsKLQotICBtZW0tPnRleF9pZCA9IHRleHR1cmVfaWQ7Ci0gIG1lbS0+dGV4dHVyZV93cmFwcGVkID0gVFJVRTsKLQotICBfZ2xfbWVtX2luaXQgKG1lbSwgX2dsX2FsbG9jYXRvciwgTlVMTCwgY29udGV4dCwgTlVMTCwgaW5mbywgdmFsaWduLCBwbGFuZSwKLSAgICAgIHVzZXJfZGF0YSwgbm90aWZ5KTsKLQotICBtZW0tPnRleF90YXJnZXQgPSB0ZXh0dXJlX3RhcmdldDsKLQotICBtZW0gPSAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfYnVmZmVyX2FsbG9jX2RhdGEgKChHc3RHTEJhc2VCdWZmZXIgKikgbWVtKTsKLSAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpOwotICBtZW0tPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRDsKLQotICByZXR1cm4gbWVtOwotfQotCi0vKioKLSAqIGdzdF9nbF9tZW1vcnlfYWxsb2M6Ci0gKiBAY29udGV4dDphICNHc3RHTENvbnRleHQKLSAqIEBwYXJhbXM6IGEgI0dzdEFsbG9jYXRpb25QYXJhbXMKLSAqIEBpbmZvOiB0aGUgI0dzdFZpZGVvSW5mbyBvZiB0aGUgbWVtb3J5Ci0gKiBAcGxhbmU6IHRoZSBwbGFuZSB0aGlzIG1lbW9yeSB3aWxsIHJlcHJlc2VudAotICogQHZhbGlnbjogdGhlICNHc3RWaWRlb0FsaWdubWVudCBhcHBsaWVkIHRvIEBpbmZvCi0gKgotICogQWxsb2NhdGVkIGEgbmV3ICNHc3RHbE1lbW9yeS4KLSAqCi0gKiBSZXR1cm5zOiBhICNHc3RNZW1vcnkgb2JqZWN0IHdpdGggYSBHTCB0ZXh0dXJlIHNwZWNpZmllZCBieSBAdmluZm8KLSAqICAgICAgICAgIGZyb20gQGNvbnRleHQKLSAqLwotR3N0TWVtb3J5ICoKLWdzdF9nbF9tZW1vcnlfYWxsb2MgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMsCi0gICAgR3N0VmlkZW9JbmZvICogaW5mbywgZ3VpbnQgcGxhbmUsIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduKQotewotICBHc3RHTE1lbW9yeSAqbWVtOwotCi0gIG1lbSA9IF9nbF9tZW1fbmV3IChfZ2xfYWxsb2NhdG9yLCBOVUxMLCBjb250ZXh0LCBwYXJhbXMsIGluZm8sIHZhbGlnbiwgcGxhbmUsCi0gICAgICBOVUxMLCBOVUxMKTsKLSAgbWVtID0gKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX2J1ZmZlcl9hbGxvY19kYXRhICgoR3N0R0xCYXNlQnVmZmVyICopIG1lbSk7Ci0KLSAgcmV0dXJuIChHc3RNZW1vcnkgKikgbWVtOwotfQotCi0vKioKLSAqIGdzdF9nbF9tZW1vcnlfd3JhcHBlZDoKLSAqIEBjb250ZXh0OmEgI0dzdEdMQ29udGV4dAotICogQGluZm86IHRoZSAjR3N0VmlkZW9JbmZvIG9mIHRoZSBtZW1vcnkgYW5kIGRhdGEKLSAqIEBwbGFuZTogdGhlIHBsYW5lIHRoaXMgbWVtb3J5IHdpbGwgcmVwcmVzZW50Ci0gKiBAdmFsaWduOiB0aGUgI0dzdFZpZGVvQWxpZ25tZW50IGFwcGxpZWQgdG8gQGluZm8KLSAqIEBkYXRhOiB0aGUgZGF0YSB0byB3cmFwCi0gKiBAdXNlcl9kYXRhOiBkYXRhIGNhbGxlZCB3aXRoIGZvciBAbm90aWZ5Ci0gKiBAbm90aWZ5OiBmdW5jdGlvbiBjYWxsZWQgd2l0aCBAdXNlcl9kYXRhIHdoZW4gQGRhdGEgbmVlZHMgdG8gYmUgZnJlZWQKLSAqIAotICogV3JhcHBlZCBAZGF0YSBpbnRvIGEgI0dzdEdMTWVtb3J5LiBUaGlzIHZlcnNpb24gd2lsbCBhY2NvdW50IGZvciBwYWRkaW5nCi0gKiBhZGRlZCB0byB0aGUgYWxsb2NhdGlvbiBhbmQgZXhwcmVzc2VkIHRocm91Z2ggQHZhbGlnbi4KLSAqCi0gKiBSZXR1cm5zOiBhICNHc3RHTE1lbW9yeSBvYmplY3Qgd2l0aCBhIEdMIHRleHR1cmUgc3BlY2lmaWVkIGJ5IEB2X2luZm8KLSAqICAgICAgICAgIGZyb20gQGNvbnRleHQgYW5kIGNvbnRlbnRzIHNwZWNpZmllZCBieSBAZGF0YQotICovCi1Hc3RHTE1lbW9yeSAqCi1nc3RfZ2xfbWVtb3J5X3dyYXBwZWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgZ3VpbnQgcGxhbmUsIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBncG9pbnRlciBkYXRhLCBncG9pbnRlciB1c2VyX2RhdGEsCi0gICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KQotewotICBHc3RHTE1lbW9yeSAqbWVtOwotCi0gIG1lbSA9IF9nbF9tZW1fbmV3IChfZ2xfYWxsb2NhdG9yLCBOVUxMLCBjb250ZXh0LCBOVUxMLCBpbmZvLCB2YWxpZ24sIHBsYW5lLAotICAgICAgdXNlcl9kYXRhLCBub3RpZnkpOwotICBpZiAoIW1lbSkKLSAgICByZXR1cm4gTlVMTDsKLQotICBtZW0tPm1lbS5kYXRhID0gZGF0YTsKLQotICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKG1lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpOwotICBtZW0tPnRyYW5zZmVyX3N0YXRlIHw9IEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQ7Ci0KLSAgcmV0dXJuIG1lbTsKLX0KLQotc3RhdGljIHZvaWQKLV9kb3dubG9hZF90cmFuc2ZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xNZW1vcnkgKiBnbF9tZW0pCi17Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqbWVtID0gKEdzdEdMQmFzZUJ1ZmZlciAqKSBnbF9tZW07Ci0KLSAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKLSAgaWYgKF9yZWFkX3BpeGVsc190b19wYm8gKGdsX21lbSkpCi0gICAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9HTF9NRU1PUlksICJvcHRpbWlzdGljIGRvd25sb2FkIG9mIHRleHR1cmUgJXUgIgotICAgICAgICAidXNpbmcgcGJvICV1IiwgZ2xfbWVtLT50ZXhfaWQsIGdsX21lbS0+bWVtLmlkKTsKLSAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOwotfQotCi12b2lkCi1nc3RfZ2xfbWVtb3J5X2Rvd25sb2FkX3RyYW5zZmVyIChHc3RHTE1lbW9yeSAqIGdsX21lbSkKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pKTsKLQotICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChnbF9tZW0tPm1lbS5jb250ZXh0LAotICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kb3dubG9hZF90cmFuc2ZlciwgZ2xfbWVtKTsKLX0KLQotc3RhdGljIHZvaWQKLV91cGxvYWRfdHJhbnNmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMTWVtb3J5ICogZ2xfbWVtKQotewotICBHc3RHTEJhc2VCdWZmZXJBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7Ci0gIEdzdEdMQmFzZUJ1ZmZlciAqbWVtID0gKEdzdEdMQmFzZUJ1ZmZlciAqKSBnbF9tZW07Ci0gIEdzdE1hcEluZm8gaW5mbzsKLQotICBhbGxvY19jbGFzcyA9Ci0gICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfQUxMT0NBVE9SX0NMQVNTIChnc3RfZ2xfYWxsb2NhdG9yX3BhcmVudF9jbGFzcyk7Ci0KLSAgaW5mby5mbGFncyA9IEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0w7Ci0gIGluZm8ubWVtb3J5ID0gKEdzdE1lbW9yeSAqKSBtZW07Ci0gIC8qIGZyb20gZ3N0X21lbW9yeV9tYXAoKSAqLwotICBpbmZvLnNpemUgPSBtZW0tPm1lbS5zaXplOwotICBpbmZvLm1heHNpemUgPSBtZW0tPm1lbS5tYXhzaXplIC0gbWVtLT5tZW0ub2Zmc2V0OwotCi0gIGdfbXV0ZXhfbG9jayAoJm1lbS0+bG9jayk7Ci0gIG1lbS0+dGFyZ2V0ID0gR0xfUElYRUxfVU5QQUNLX0JVRkZFUjsKLSAgYWxsb2NfY2xhc3MtPm1hcF9idWZmZXIgKG1lbSwgJmluZm8sIG1lbS0+bWVtLm1heHNpemUpOwotICBhbGxvY19jbGFzcy0+dW5tYXBfYnVmZmVyIChtZW0sICZpbmZvKTsKLSAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOwotfQotCi12b2lkCi1nc3RfZ2xfbWVtb3J5X3VwbG9hZF90cmFuc2ZlciAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pCi17Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9pc19nbF9tZW1vcnkgKChHc3RNZW1vcnkgKikgZ2xfbWVtKSk7Ci0KLSAgaWYgKENPTlRFWFRfU1VQUE9SVFNfUEJPX1VQTE9BRCAoZ2xfbWVtLT5tZW0uY29udGV4dCkpCi0gICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoZ2xfbWVtLT5tZW0uY29udGV4dCwKLSAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF91cGxvYWRfdHJhbnNmZXIsIGdsX21lbSk7Ci19Ci0KIGdpbnQKIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGggKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQogewpAQCAtMTQyNSw2ICs5MDcsMTQgQEAKICAgcmV0dXJuIGdsX21lbS0+dGV4X3dpZHRoOwogfQogCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0OgorICogQGdsX21lbTogYSAjR3N0R0xNZW1vcnkKKyAqCisgKiBSZXR1cm5zOiB0aGUgdGV4dHVyZSBoZWlnaHQgb2YgQGdsX21lbQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwogZ2ludAogZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV9oZWlnaHQgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQogewpAQCAtMTQzNCwyMyArOTI0LDc2IEBACiB9CiAKIC8qKgotICogZ3N0X2dsX21lbW9yeV9pbml0OgorICogZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90eXBlOgorICogQGdsX21lbTogYSAjR3N0R0xNZW1vcnkKICAqCi0gKiBJbml0aWFsaXplcyB0aGUgR0wgTWVtb3J5IGFsbG9jYXRvci4gSXQgaXMgc2FmZSB0byBjYWxsIHRoaXMgZnVuY3Rpb24KKyAqIFJldHVybnM6IHRoZSAjR3N0VmlkZW9HTFRleHR1cmVUeXBlIG9mIEBnbF9tZW0KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdFZpZGVvR0xUZXh0dXJlVHlwZQorZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90eXBlIChHc3RHTE1lbW9yeSAqIGdsX21lbSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdzdF9pc19nbF9tZW1vcnkgKChHc3RNZW1vcnkgKikgZ2xfbWVtKSwgMCk7CisKKyAgcmV0dXJuIGdsX21lbS0+dGV4X3R5cGU7Cit9CisKKy8qKgorICogZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXQ6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeQorICoKKyAqIFJldHVybnM6IHRoZSAjR3N0R0xUZXh0dXJlVGFyZ2V0IG9mIEBnbF9tZW0KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdEdMVGV4dHVyZVRhcmdldAorZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90YXJnZXQgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pLCAwKTsKKworICByZXR1cm4gZ2xfbWVtLT50ZXhfdGFyZ2V0OworfQorCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWQ6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeQorICoKKyAqIFJldHVybnM6IHRoZSBPcGVuR0wgdGV4dHVyZSBoYW5kbGUgb2YgQGdsX21lbQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ3VpbnQKK2dzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaWQgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBnbF9tZW0pLCAwKTsKKworICByZXR1cm4gZ2xfbWVtLT50ZXhfaWQ7Cit9CisKKy8qKgorICogZ3N0X2dsX21lbW9yeV9pbml0X29uY2U6CisgKgorICogSW5pdGlhbGl6ZXMgdGhlIEdMIEJhc2UgVGV4dHVyZSBhbGxvY2F0b3IuIEl0IGlzIHNhZmUgdG8gY2FsbCB0aGlzIGZ1bmN0aW9uCiAgKiBtdWx0aXBsZSB0aW1lcy4gIFRoaXMgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIGFueSBvdGhlciBHc3RHTE1lbW9yeSBvcGVyYXRpb24uCisgKgorICogU2luY2U6IDEuNAogICovCiB2b2lkCi1nc3RfZ2xfbWVtb3J5X2luaXQgKHZvaWQpCitnc3RfZ2xfbWVtb3J5X2luaXRfb25jZSAodm9pZCkKIHsKICAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKIAogICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKLSAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9HTF9NRU1PUlksICJnbG1lbW9yeSIsIDAsICJPcGVuR0wgTWVtb3J5Iik7CisgICAgZ3N0X2dsX2Jhc2VfbWVtb3J5X2luaXRfb25jZSAoKTsKIAotICAgIF9nbF9hbGxvY2F0b3IgPSBnX29iamVjdF9uZXcgKGdzdF9nbF9hbGxvY2F0b3JfZ2V0X3R5cGUgKCksIE5VTEwpOworICAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChHU1RfQ0FUX0dMX01FTU9SWSwgImdsYmFzZXRleHR1cmUiLCAwLAorICAgICAgICAiT3BlbkdMIEJhc2UgVGV4dHVyZSBNZW1vcnkiKTsKIAotICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SLAotICAgICAgICBnc3Rfb2JqZWN0X3JlZiAoX2dsX2FsbG9jYXRvcikpOworICAgIF9nbF9tZW1vcnlfYWxsb2NhdG9yID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTF9NRU1PUllfQUxMT0NBVE9SLCBOVUxMKTsKKworICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUsIF9nbF9tZW1vcnlfYWxsb2NhdG9yKTsKKwogICAgIGdfb25jZV9pbml0X2xlYXZlICgmX2luaXQsIDEpOwogICB9CiB9CkBAIC0xNDYwLDkwICsxMDAzLDM0MyBAQAogICogQG1lbTphICNHc3RNZW1vcnkKICAqIAogICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5IGF0IEBtZW0gaXMgYSAjR3N0R0xNZW1vcnkKKyAqCisgKiBTaW5jZTogMS40CiAgKi8KIGdib29sZWFuCiBnc3RfaXNfZ2xfbWVtb3J5IChHc3RNZW1vcnkgKiBtZW0pCiB7CiAgIHJldHVybiBtZW0gIT0gTlVMTCAmJiBtZW0tPmFsbG9jYXRvciAhPSBOVUxMCi0gICAgICAmJiBnX3R5cGVfaXNfYSAoR19PQkpFQ1RfVFlQRSAobWVtLT5hbGxvY2F0b3IpLCBHU1RfVFlQRV9HTF9BTExPQ0FUT1IpOworICAgICAgJiYgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKKyAgICAgIEdTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IpOworfQorCitzdGF0aWMgdm9pZAorX2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19zZXRfdmlkZW9fYWxpZ25tZW50IChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcworICAgICogcGFyYW1zLCBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbikKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAocGFyYW1zICE9IE5VTEwpOworCisgIGlmICghcGFyYW1zLT52YWxpZ24pCisgICAgcGFyYW1zLT52YWxpZ24gPSBnX25ldzAgKEdzdFZpZGVvQWxpZ25tZW50LCAxKTsKKworICBpZiAodmFsaWduKSB7CisgICAgKnBhcmFtcy0+dmFsaWduID0gKnZhbGlnbjsKKyAgfSBlbHNlIHsKKyAgICBnc3RfdmlkZW9fYWxpZ25tZW50X3Jlc2V0IChwYXJhbXMtPnZhbGlnbik7CisgIH0KK30KKworLyoqCisgKiBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfaW5pdF9mdWxsOgorICogQHBhcmFtczogYSAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgdG8gaW5pdGlhbGl6ZQorICogQHN0cnVjdF9zaXplOiB0aGUgc2l6ZSBvZiB0aGUgc3RydWN0IGluIEBwYXJhbXMKKyAqIEBhbGxvY19mbGFnczogc29tZSBhbGxvY2F0aW9uIGZsYWdzCisgKiBAY29weTogYSBjb3B5IGZ1bmN0aW9uCisgKiBAZnJlZTogYSBmcmVlIGZ1bmN0aW9uCisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAYWxsb2NfcGFyYW1zOiAoYWxsb3ctbm9uZSk6IHRoZSAjR3N0QWxsb2NhdGlvblBhcmFtcyBmb3IgQHdyYXBwZWRfZGF0YQorICogQHZfaW5mbzogdGhlICNHc3RWaWRlb0luZm8gZm9yIEB3cmFwcGVkX2RhdGEKKyAqIEBwbGFuZTogdGhlIHZpZGVvIHBsYW5lIEB3cmFwcGVkX2RhdGEgcmVwcmVzZW50cworICogQHZhbGlnbjogKGFsbG93LW5vbmUpOiBhbnkgI0dzdFZpZGVvQWxpZ25tZW50IGFwcGxpZWQgdG8gc3ltZW0gbWFwcGluZ3Mgb2YgQHdyYXBwZWRfZGF0YQorICogQHRhcmdldDogdGhlICNHc3RHTFRleHR1cmVUYXJnZXQKKyAqIEB3cmFwcGVkX2RhdGE6IChhbGxvdy1ub25lKTogdGhlIG9wdGlvbmFsIGRhdGEgcG9pbnRlciB0byB3cmFwCisgKiBAZ2xfaGFuZGxlOiB0aGUgb3B0aW9uYWwgT3BlbkdMIGhhbmRsZSB0byB3cmFwIG9yIDAKKyAqIEB1c2VyX2RhdGE6IChhbGxvdy1ub25lKTogdXNlciBkYXRhIHRvIGNhbGwgQG5vdGlmeSB3aXRoCisgKiBAbm90aWZ5OiAoYWxsb3ctbm9uZSk6IGEgI0dEZXN0cm95Tm90aWZ5CisgKgorICogSW50ZW5kZWQgZm9yIHN1YmNsYXNzIHVzYWdlCisgKgorICogUmV0dXJuczogaW5pdGlhbGl6ZXMgQHBhcmFtcyB3aXRoIHRoZSBwYXJhbWV0ZXJzIHNwZWNpZmllZAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGwgKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAorICAgIGdzaXplIHN0cnVjdF9zaXplLCBndWludCBhbGxvY19mbGFncywgR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMgY29weSwKKyAgICBHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYyBmcmVlLCBHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBhbGxvY19wYXJhbXMsIEdzdFZpZGVvSW5mbyAqIHZfaW5mbywKKyAgICBndWludCBwbGFuZSwgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgZ3BvaW50ZXIgd3JhcHBlZF9kYXRhLCBndWludCBnbF9oYW5kbGUsIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIGd1aW50IGk7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHBhcmFtcyAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjb3B5ICE9IE5VTEwsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGZyZWUgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh2X2luZm8gIT0gTlVMTCwgRkFMU0UpOworCisgIG1lbXNldCAocGFyYW1zLCAwLCBzaXplb2YgKCpwYXJhbXMpKTsKKworICBpZiAoIWdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19pbml0ICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcywKKyAgICAgICAgICBzdHJ1Y3Rfc2l6ZSwgYWxsb2NfZmxhZ3MsIGNvcHksIGZyZWUsIGNvbnRleHQsIDAsIGFsbG9jX3BhcmFtcywKKyAgICAgICAgICB3cmFwcGVkX2RhdGEsIGdsX2hhbmRsZSwgdXNlcl9kYXRhLCBub3RpZnkpKQorICAgIHJldHVybiBGQUxTRTsKKworICBwYXJhbXMtPnZfaW5mbyA9IGdfbmV3MCAoR3N0VmlkZW9JbmZvLCAxKTsKKyAgKnBhcmFtcy0+dl9pbmZvID0gKnZfaW5mbzsKKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19NQVhfUExBTkVTOyBpKyspIHsKKyAgICBwYXJhbXMtPnZfaW5mby0+b2Zmc2V0W2ldID0gdl9pbmZvLT5vZmZzZXRbaV07CisgICAgcGFyYW1zLT52X2luZm8tPnN0cmlkZVtpXSA9IHZfaW5mby0+c3RyaWRlW2ldOworICB9CisgIF9nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfc2V0X3ZpZGVvX2FsaWdubWVudCAocGFyYW1zLCB2YWxpZ24pOworICBwYXJhbXMtPnRhcmdldCA9IHRhcmdldDsKKyAgcGFyYW1zLT5wbGFuZSA9IHBsYW5lOworCisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXc6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAYWxsb2NfcGFyYW1zOiAoYWxsb3ctbm9uZSk6IHRoZSAjR3N0QWxsb2NhdGlvblBhcmFtcyBmb3IgQHdyYXBwZWRfZGF0YQorICogQHZfaW5mbzogdGhlICNHc3RWaWRlb0luZm8gZm9yIEB3cmFwcGVkX2RhdGEKKyAqIEBwbGFuZTogdGhlIHZpZGVvIHBsYW5lIEB3cmFwcGVkX2RhdGEgcmVwcmVzZW50cworICogQHZhbGlnbjogKGFsbG93LW5vbmUpOiBhbnkgI0dzdFZpZGVvQWxpZ25tZW50IGFwcGxpZWQgdG8gc3ltZW0gbWFwcGluZ3Mgb2YgQHdyYXBwZWRfZGF0YQorICogQHRhcmdldDogdGhlICNHc3RHTFRleHR1cmVUYXJnZXQgZm9yIEB3cmFwcGVkX2RhdGEKKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgZm9yIGFsbG9jYXRpbmcgI0dzdEdMTWVtb3J5J3MKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICoKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywgR3N0VmlkZW9JbmZvICogdl9pbmZvLCBndWludCBwbGFuZSwKKyAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCkKK3sKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtcyA9IGdfbmV3MCAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMsIDEpOworCisgIGlmICghZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbCAocGFyYW1zLAorICAgICAgICAgIHNpemVvZiAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMpLAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX0FMTE9DIHwKKyAgICAgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTywKKyAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMpCisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSwKKyAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMpCisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSwgY29udGV4dCwgYWxsb2NfcGFyYW1zLAorICAgICAgICAgIHZfaW5mbywgcGxhbmUsIHZhbGlnbiwgdGFyZ2V0LCBOVUxMLCAwLCBOVUxMLCBOVUxMKSkgeworICAgIGdfZnJlZSAocGFyYW1zKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBwYXJhbXM7Cit9CisKKy8qKgorICogZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGE6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAYWxsb2NfcGFyYW1zOiAoYWxsb3ctbm9uZSk6IHRoZSAjR3N0QWxsb2NhdGlvblBhcmFtcyBmb3IgQHdyYXBwZWRfZGF0YQorICogQHZfaW5mbzogdGhlICNHc3RWaWRlb0luZm8gZm9yIEB3cmFwcGVkX2RhdGEKKyAqIEBwbGFuZTogdGhlIHZpZGVvIHBsYW5lIEB3cmFwcGVkX2RhdGEgcmVwcmVzZW50cworICogQHZhbGlnbjogKGFsbG93LW5vbmUpOiBhbnkgI0dzdFZpZGVvQWxpZ25tZW50IGFwcGxpZWQgdG8gc3ltZW0gbWFwcGluZ3Mgb2YgQHdyYXBwZWRfZGF0YQorICogQHRhcmdldDogdGhlICNHc3RHTFRleHR1cmVUYXJnZXQgZm9yIEB3cmFwcGVkX2RhdGEKKyAqIEB3cmFwcGVkX2RhdGE6IHRoZSBkYXRhIHBvaW50ZXIgdG8gd3JhcAorICogQHVzZXJfZGF0YTogKGFsbG93LW5vbmUpOiB1c2VyIGRhdGEgdG8gY2FsbCBAbm90aWZ5IHdpdGgKKyAqIEBub3RpZnk6IChhbGxvdy1ub25lKTogYSAjR0Rlc3Ryb3lOb3RpZnkKKyAqCisgKiBSZXR1cm5zOiBhIG5ldyAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgZm9yIHdyYXBwaW5nIEB3cmFwcGVkX2RhdGEKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICoKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBhbGxvY19wYXJhbXMsIEdzdFZpZGVvSW5mbyAqIHZfaW5mbywgZ3VpbnQgcGxhbmUsCisgICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgZ3BvaW50ZXIgd3JhcHBlZF9kYXRhLCBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtcyA9IGdfbmV3MCAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMsIDEpOworCisgIGlmICghZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbCAocGFyYW1zLAorICAgICAgICAgIHNpemVvZiAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMpLAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfU1lTTUVNIHwKKyAgICAgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTywKKyAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zQ29weUZ1bmMpCisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSwKKyAgICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zRnJlZUZ1bmMpCisgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSwgY29udGV4dCwgYWxsb2NfcGFyYW1zLAorICAgICAgICAgIHZfaW5mbywgcGxhbmUsIHZhbGlnbiwgdGFyZ2V0LCB3cmFwcGVkX2RhdGEsIDAsIHVzZXJfZGF0YSwgbm90aWZ5KSkgeworICAgIGdfZnJlZSAocGFyYW1zKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBwYXJhbXM7Cit9CisKKy8qKgorICogZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmU6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAYWxsb2NfcGFyYW1zOiAoYWxsb3ctbm9uZSk6IHRoZSAjR3N0QWxsb2NhdGlvblBhcmFtcyBmb3IgQHRleF9pZAorICogQHZfaW5mbzogdGhlICNHc3RWaWRlb0luZm8gZm9yIEB0ZXhfaWQKKyAqIEBwbGFuZTogdGhlIHZpZGVvIHBsYW5lIEB0ZXhfaWQgcmVwcmVzZW50cworICogQHZhbGlnbjogKGFsbG93LW5vbmUpOiBhbnkgI0dzdFZpZGVvQWxpZ25tZW50IGFwcGxpZWQgdG8gc3ltZW0gbWFwcGluZ3Mgb2YgQHRleF9pZAorICogQHRhcmdldDogdGhlICNHc3RHTFRleHR1cmVUYXJnZXQgZm9yIEB0ZXhfaWQKKyAqIEB0ZXhfaWQ6IHRoZSBHTCB0ZXh0dXJlIHRvIHdyYXAKKyAqIEB1c2VyX2RhdGE6IChhbGxvdy1ub25lKTogdXNlciBkYXRhIHRvIGNhbGwgQG5vdGlmeSB3aXRoCisgKiBAbm90aWZ5OiAoYWxsb3ctbm9uZSk6IGEgI0dEZXN0cm95Tm90aWZ5CisgKgorICogUmV0dXJuczogYSBuZXcgI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zIGZvciB3cmFwcGluZyBAdGV4X2lkCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqCitnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLCBHc3RWaWRlb0luZm8gKiB2X2luZm8sIGd1aW50IHBsYW5lLAorICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LAorICAgIGd1aW50IHRleF9pZCwgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXMgPSBnX25ldzAgKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zLCAxKTsKKworICBpZiAoIWdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19pbml0X2Z1bGwgKHBhcmFtcywKKyAgICAgICAgICBzaXplb2YgKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zKSwKKyAgICAgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX0dQVV9IQU5ETEUgfAorICAgICAgICAgIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXNDb3B5RnVuYykKKyAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXNGcmVlRnVuYykKKyAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhLCBjb250ZXh0LCBhbGxvY19wYXJhbXMsCisgICAgICAgICAgdl9pbmZvLCBwbGFuZSwgdmFsaWduLCB0YXJnZXQsIE5VTEwsIHRleF9pZCwgdXNlcl9kYXRhLCBub3RpZnkpKSB7CisgICAgZ19mcmVlIChwYXJhbXMpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0dXJuIHBhcmFtczsKK30KKworLyoqCisgKiBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfZnJlZV9kYXRhOgorICogQHBhcmFtczogYSAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMKKyAqCisgKiBVbnNldCBhbmQgZnJlZSBhbnkgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHJlc291cmNlcy4gIEludGVuZGVkIGZvciBzdWJjbGFzcworICogdXNhZ2Ugb25seSB0byBjaGFpbiB1cCBhdCB0aGUgZW5kIG9mIGEgc3ViY2xhc3MgZnJlZSBmdW5jdGlvbi4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19mcmVlX2RhdGEgKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX2ZyZWUgKHBhcmFtcy0+dl9pbmZvKTsKKyAgZ19mcmVlIChwYXJhbXMtPnZhbGlnbik7CisKKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSAoJnBhcmFtcy0+cGFyZW50KTsKK30KKworLyoqCisgKiBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhOgorICogQHNyY192aWQ6IHNvdXJjZSAjR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgdG8gY29weSBmcm9tCisgKiBAZGVzdF92aWQ6IGRlc3RpbmF0aW9uICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyB0byBjb3B5IGludG8KKyAqCisgKiBDb3B5IGFuZCBzZXQgYW55IGR5bmFtaWNhbGx5IGFsbG9jYXRlZCByZXNvdXJjZXMgaW4gQGRlc3RfdmlkLiAgSW50ZW5kZWQKKyAqIGZvciBzdWJjbGFzcyB1c2FnZSBvbmx5IHRvIGNoYWluIHVwIGF0IHRoZSBlbmQgb2YgYSBzdWJjbGFzcyBjb3B5IGZ1bmN0aW9uLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2NvcHlfZGF0YSAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBzcmNfdmlkLAorICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogZGVzdF92aWQpCit7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqc3JjID0gKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBzcmNfdmlkOworICBHc3RHTEFsbG9jYXRpb25QYXJhbXMgKmRlc3QgPSAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIGRlc3RfdmlkOworICBndWludCBpOworCisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19jb3B5X2RhdGEgKHNyYywgZGVzdCk7CisKKyAgZGVzdF92aWQtPnZfaW5mbyA9IGdfbmV3MCAoR3N0VmlkZW9JbmZvLCAxKTsKKyAgKmRlc3RfdmlkLT52X2luZm8gPSAqc3JjX3ZpZC0+dl9pbmZvOworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX01BWF9QTEFORVM7IGkrKykgeworICAgIGRlc3RfdmlkLT52X2luZm8tPm9mZnNldFtpXSA9IHNyY192aWQtPnZfaW5mby0+b2Zmc2V0W2ldOworICAgIGRlc3RfdmlkLT52X2luZm8tPnN0cmlkZVtpXSA9IHNyY192aWQtPnZfaW5mby0+c3RyaWRlW2ldOworICB9CisgIF9nc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfc2V0X3ZpZGVvX2FsaWdubWVudCAoZGVzdF92aWQsCisgICAgICBzcmNfdmlkLT52YWxpZ24pOworICBkZXN0X3ZpZC0+dGFyZ2V0ID0gc3JjX3ZpZC0+dGFyZ2V0OworICBkZXN0X3ZpZC0+cGxhbmUgPSBzcmNfdmlkLT5wbGFuZTsKIH0KIAogLyoqCiAgKiBnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlcjoKLSAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKLSAqIEBwYXJhbXM6IGEgI0dzdEFsbG9jYXRpb25QYXJhbXMKLSAqIEBpbmZvOiBhICNHc3RWaWRlb0luZm8KLSAqIEB2YWxpZ246IHRoZSAjR3N0VmlkZW9BbGlnbm1lbnQgYXBwbGllZCB0byBAaW5mbwotICogQGJ1ZmZlcjogYSAjR3N0QnVmZmVyCisgKiBAYWxsb2NhdG9yOiB0aGUgQEdzdEdMTWVtb3J5QWxsb2NhdG9yIHRvIGFsbG9jYXRlIGZyb20KKyAqIEBidWZmZXI6IGEgI0dzdEJ1ZmZlciB0byBzZXR1cAorICogQHBhcmFtczogdGhlICNHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyB0byBhbGxvY2F0ZSB3aXRoCiAgKgotICogQWRkcyB0aGUgcmVxdWlyZWQgI0dzdEdMTWVtb3J5PCEtLSAgLS0+cyB3aXRoIHRoZSBjb3JyZWN0IGNvbmZpZ3VyYXRpb24gdG8KLSAqIEBidWZmZXIgYmFzZWQgb24gQGluZm8uIFRoaXMgdmVyc2lvbiBoYW5kbGVzIHBhZGRpbmcgdGhyb3VnaCBAdmFsaWduLgorICogUmV0dXJuczogd2hldGhlciB0aGUgYnVmZmVyIHdhcyBjb3JyZWN0bHkgc2V0dXAKICAqCi0gKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBtZW1vcnkncyB3ZXJlIHN1Y2Vzc2Z1bGx5IGFkZGVkLgorICogU2luY2U6IDEuOAogICovCiBnYm9vbGVhbgotZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgR3N0QnVmZmVyICogYnVmZmVyKQorZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKEdzdEdMTWVtb3J5QWxsb2NhdG9yICogYWxsb2NhdG9yLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpCiB7Ci0gIEdzdEdMTWVtb3J5ICpnbF9tZW1bR1NUX1ZJREVPX01BWF9QTEFORVNdID0geyBOVUxMLCB9OworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfYWxsb2NhdG9yOwogICBndWludCBuX21lbSwgaSwgdiwgdmlld3M7CisgIGd1aW50IGFsbG9jX2ZsYWdzID0gcGFyYW1zLT5wYXJlbnQuYWxsb2NfZmxhZ3M7CiAKLSAgbl9tZW0gPSBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5mbyk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChwYXJhbXMgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoKGFsbG9jX2ZsYWdzICYKKyAgICAgICAgICBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSkKKyAgICAgID09IDAsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKChwYXJhbXMtPnBhcmVudC5hbGxvY19mbGFncyAmCisgICAgICAgICAgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFKSA9PSAwLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChhbGxvY19mbGFncyAmIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1ZJREVPLAorICAgICAgRkFMU0UpOwogCi0gIGlmIChHU1RfVklERU9fSU5GT19NVUxUSVZJRVdfTU9ERSAoaW5mbykgPT0KKyAgYmFzZV9hbGxvY2F0b3IgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChhbGxvY2F0b3IpOworICBuX21lbSA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChwYXJhbXMtPnZfaW5mbyk7CisKKyAgaWYgKEdTVF9WSURFT19JTkZPX01VTFRJVklFV19NT0RFIChwYXJhbXMtPnZfaW5mbykgPT0KICAgICAgIEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9TRVBBUkFURUQpCi0gICAgdmlld3MgPSBpbmZvLT52aWV3czsKKyAgICB2aWV3cyA9IHBhcmFtcy0+dl9pbmZvLT52aWV3czsKICAgZWxzZQogICAgIHZpZXdzID0gMTsKIAogICBmb3IgKHYgPSAwOyB2IDwgdmlld3M7IHYrKykgewogICAgIGZvciAoaSA9IDA7IGkgPCBuX21lbTsgaSsrKSB7Ci0gICAgICBnbF9tZW1baV0gPQotICAgICAgICAgIChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfbWVtb3J5X2FsbG9jIChjb250ZXh0LCBwYXJhbXMsIGluZm8sIGksCi0gICAgICAgICAgdmFsaWduKTsKLSAgICAgIGlmIChnbF9tZW1baV0gPT0gTlVMTCkKKyAgICAgIEdzdEdMTWVtb3J5ICpnbF9tZW07CisKKyAgICAgIHBhcmFtcy0+cGxhbmUgPSBpOworCisgICAgICBpZiAoIShnbF9tZW0gPSAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX2FsbG9jYXRvciwKKyAgICAgICAgICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKSkpCiAgICAgICAgIHJldHVybiBGQUxTRTsKIAotICAgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWZmZXIsIChHc3RNZW1vcnkgKikgZ2xfbWVtW2ldKTsKKyAgICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmZmVyLCAoR3N0TWVtb3J5ICopIGdsX21lbSk7CiAgICAgfQogCiAgICAgZ3N0X2J1ZmZlcl9hZGRfdmlkZW9fbWV0YV9mdWxsIChidWZmZXIsIHYsCi0gICAgICAgIEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbyksIEdTVF9WSURFT19JTkZPX1dJRFRIIChpbmZvKSwKLSAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKSwgbl9tZW0sIGluZm8tPm9mZnNldCwgaW5mby0+c3RyaWRlKTsKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fRk9STUFUIChwYXJhbXMtPnZfaW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIIChwYXJhbXMtPnZfaW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAocGFyYW1zLT52X2luZm8pLCBuX21lbSwgcGFyYW1zLT52X2luZm8tPm9mZnNldCwKKyAgICAgICAgcGFyYW1zLT52X2luZm8tPnN0cmlkZSk7CiAgIH0KIAogICByZXR1cm4gVFJVRTsKIH0KIAogLyoqCi0gKiBnc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWQ6CisgKiBnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdDoKICAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKLSAqIEBpbmZvOiBhICNHc3RWaWRlb0luZm8KLSAqIEB2YWxpZ246IGEgI0dzdFZpZGVvSW5mbwotICogQGRhdGE6IGEgbGlzdCBvZiBwZXIgcGxhbmUgZGF0YSBwb2ludGVycwotICogQHRleHR1cmVzOiAodHJhbnNmZXIgb3V0KTogYSBsaXN0IG9mICNHc3RHTE1lbW9yeQotICogQHVzZXJfZGF0YTogdXNlciBkYXRhIGZvciB0aGUgZGVzdHJveSBmdW5jdGlvbgotICogQG5vdGlmeTogQSBmdW5jdGlvbiBjYWxsZWQgZWFjaCB0aW1lIGEgbWVtb3J5IGlzIGZyZWVkCiAgKgotICogV3JhcHMgcGVyIHBsYW5lIGRhdGEgcG9pbnRlciBpbiBAZGF0YSBpbnRvIHRoZSBjb3JyZXNwb25kaW5nIGVudHJ5IGluCi0gKiBAdGV4dHVyZXMgYmFzZWQgb24gQGluZm8gYW5kIHBhZGRpbmcgZnJvbSBAdmFsaWduLiBOb3RlIHRoYXQgdGhlIEBub3RpZnkKLSAqIHdpbGwgYmUgY2FsbGVkIGFzIG1hbnkgdGltZSBhcyB0aGVyZSBpcyBwbGFuZXMuCisgKiBSZXR1cm5zOiB0aGUgZGVmYXVsdCAjR3N0R0xNZW1vcnlBbGxvY2F0b3Igc3VwcG9ydGVkIGJ5IEBjb250ZXh0CiAgKgotICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5J3Mgd2VyZSBzdWNlc3NmdWxseSBjcmVhdGVkLgorICogU2luY2U6IDEuOAogICovCi1nYm9vbGVhbgotZ3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RWaWRlb0luZm8gKiBpbmZvLAotICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBncG9pbnRlciBkYXRhW0dTVF9WSURFT19NQVhfUExBTkVTXSwKLSAgICBHc3RHTE1lbW9yeSAqIHRleHR1cmVzW0dTVF9WSURFT19NQVhfUExBTkVTXSwgZ3BvaW50ZXIgdXNlcl9kYXRhLAotICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK0dzdEdMTWVtb3J5QWxsb2NhdG9yICoKK2dzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0IChHc3RHTENvbnRleHQgKiBjb250ZXh0KQogewotICBnaW50IGk7CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yICphbGxvY2F0b3IgPSBOVUxMOwogCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5mbyk7IGkrKykgewotICAgIHRleHR1cmVzW2ldID0gKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZCAoY29udGV4dCwgaW5mbywgaSwKLSAgICAgICAgdmFsaWduLCBkYXRhW2ldLCB1c2VyX2RhdGEsIG5vdGlmeSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOworCisgIC8qIHdlIGNhbiBvbmx5IHVzZSB0aGUgcGJvIGFsbG9jYXRvciB3aXRoIEdMID4gMy4wIGNvbnRleHRzICovCisgIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LAorICAgICAgICAgIEdTVF9HTF9BUElfT1BFTkdMIHwgR1NUX0dMX0FQSV9PUEVOR0wzIHwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpIHsKKyAgICBhbGxvY2F0b3IgPSAoR3N0R0xNZW1vcnlBbGxvY2F0b3IgKikKKyAgICAgICAgZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRSk7CisgIH0gZWxzZSB7CisgICAgYWxsb2NhdG9yID0gKEdzdEdMTWVtb3J5QWxsb2NhdG9yICopCisgICAgICAgIGdzdF9hbGxvY2F0b3JfZmluZCAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSk7CiAgIH0KIAotICByZXR1cm4gVFJVRTsKKyAgcmV0dXJuIGFsbG9jYXRvcjsKIH0KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmgKaW5kZXggN2JjNDYwNy4uYjAzMmE1YyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5LmgKQEAgLTEsNiArMSw2IEBACiAvKgogICogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0dGhldyBXYXRlcnMgPHlzdHJlZXQwMEBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yNiwyOSArMjYsMjcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0bWVtb3J5Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAKLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xiYXNlYnVmZmVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYmFzZW1lbW9yeS5oPgogCiBHX0JFR0lOX0RFQ0xTCiAKLSNkZWZpbmUgR1NUX1RZUEVfR0xfQUxMT0NBVE9SIChnc3RfZ2xfYWxsb2NhdG9yX2dldF90eXBlKCkpCi1HVHlwZSBnc3RfZ2xfYWxsb2NhdG9yX2dldF90eXBlKHZvaWQpOworI2RlZmluZSBHU1RfVFlQRV9HTF9NRU1PUllfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfdHlwZSgpKQorR1R5cGUgZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X3R5cGUodm9pZCk7CiAKLSNkZWZpbmUgR1NUX0lTX0dMX0FMTE9DQVRPUihvYmopICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9HTF9BTExPQ0FUT1IpKQotI2RlZmluZSBHU1RfSVNfR0xfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfR0xfQUxMT0NBVE9SKSkKLSNkZWZpbmUgR1NUX0dMX0FMTE9DQVRPUl9HRVRfQ0xBU1Mob2JqKSAgICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX0dMX0FMTE9DQVRPUiwgR3N0R0xBbGxvY2F0b3JDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfR0xfQUxMT0NBVE9SLCBHc3RHTEFsbG9jYXRvcikpCi0jZGVmaW5lIEdTVF9HTF9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9BTExPQ0FUT1IsIEdzdEdMQWxsb2NhdG9yQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfQUxMT0NBVE9SX0NBU1Qob2JqKSAgICAgICAgICAgICgoR3N0R0xBbGxvY2F0b3IgKikob2JqKSkKKyNkZWZpbmUgR1NUX0lTX0dMX01FTU9SWV9BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9JU19HTF9NRU1PUllfQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX0dFVF9DTEFTUyhvYmopICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfR0xfTUVNT1JZX0FMTE9DQVRPUiwgR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcykpCisjZGVmaW5lIEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IsIEdzdEdMTWVtb3J5QWxsb2NhdG9yKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9NRU1PUllfQUxMT0NBVE9SLCBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0FTVChvYmopICAgICAgICAgICAgKChHc3RHTE1lbW9yeUFsbG9jYXRvciAqKShvYmopKQogCi10eXBlZGVmIGVudW0gX0dzdEdMTWVtb3J5VHJhbnNmZXIKLXsKLSAgLyogZm9yY2UgYSB0cmFuc2ZlciBiZXR3ZWVuIHRoZSB0ZXh0dXJlIGFuZCB0aGUgUEJPIChpZiBhdmFpbGFibGUpICovCi0gIEdTVF9HTF9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQgPSAoMSA8PCAwKSwKLSAgR1NUX0dMX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEID0gKDEgPDwgMSksCi19IEdzdEdMTWVtb3J5VHJhbnNmZXI7CisjZGVmaW5lIEdTVF9HTF9NRU1PUllfQ0FTVChvYmopICgoR3N0R0xNZW1vcnkgKikgb2JqKQogCi0jZGVmaW5lIEdTVF9HTF9NRU1PUllfQUREX1RSQU5TRkVSKG1lbSxzdGF0ZSkgKChHc3RHTE1lbW9yeSAqKW1lbSktPnRyYW5zZmVyX3N0YXRlIHw9IHN0YXRlCisjZGVmaW5lIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSAibWVtb3J5OkdMTWVtb3J5IgorI2RlZmluZSBHU1RfR0xfTUVNT1JZX1ZJREVPX0ZPUk1BVFNfU1RSIFwKKyAgICAieyBSR0JBLCBCR1JBLCBSR0J4LCBCR1J4LCBBUkdCLCBBQkdSLCB4UkdCLCB4QkdSLCBSR0IsIEJHUiwgUkdCMTYsIEJHUjE2LCAiIFwKKyAgICAiQVlVViwgSTQyMCwgWVYxMiwgTlYxMiwgTlYyMSwgWVVZMiwgVVlWWSwgWTQxQiwgWTQyQiwgWTQ0NCwgIiBcCisgICAgIkdSQVk4LCBHUkFZMTZfTEUsIEdSQVkxNl9CRSB9IgogCiAvKioKICAqIEdzdEdMTWVtb3J5OgpAQCAtNjYsMTE4ICs2NCwxNjIgQEAKICAqLwogc3RydWN0IF9Hc3RHTE1lbW9yeQogewotICBHc3RHTEJhc2VCdWZmZXIgICAgICAgbWVtOworICBHc3RHTEJhc2VNZW1vcnkgICAgICAgICAgIG1lbTsKIAotICBndWludCAgICAgICAgICAgICAgICAgdGV4X2lkOwotICBndWludCAgICAgICAgICAgICAgICAgdGV4X3RhcmdldDsKLSAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlOwotICBHc3RWaWRlb0luZm8gICAgICAgICAgaW5mbzsKLSAgR3N0VmlkZW9BbGlnbm1lbnQgICAgIHZhbGlnbjsKLSAgZ3VpbnQgICAgICAgICAgICAgICAgIHBsYW5lOwotICBnZmxvYXQgICAgICAgICAgICAgICAgdGV4X3NjYWxpbmdbMl07CisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgdGV4X2lkOworICBHc3RHTFRleHR1cmVUYXJnZXQgICAgICAgIHRleF90YXJnZXQ7CisgIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSAgICAgdGV4X3R5cGU7CisgIEdzdFZpZGVvSW5mbyAgICAgICAgICAgICAgaW5mbzsKKyAgR3N0VmlkZW9BbGlnbm1lbnQgICAgICAgICB2YWxpZ247CisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgcGxhbmU7CisgIGdmbG9hdCAgICAgICAgICAgICAgICAgICAgdGV4X3NjYWxpbmdbMl07CiAKLSAgLyogPHByaXZhdGU+ICovCi0gIEdzdEdMTWVtb3J5VHJhbnNmZXIgICB0cmFuc2Zlcl9zdGF0ZTsKLSAgZ2Jvb2xlYW4gICAgICAgICAgICAgIHRleHR1cmVfd3JhcHBlZDsKLSAgR0Rlc3Ryb3lOb3RpZnkgICAgICAgIG5vdGlmeTsKLSAgZ3BvaW50ZXIgICAgICAgICAgICAgIHVzZXJfZGF0YTsKLSAgZ3VpbnQgICAgICAgICAgICAgICAgIHVucGFja19sZW5ndGg7Ci0gIGd1aW50ICAgICAgICAgICAgICAgICB0ZXhfd2lkdGg7CisgIC8qIDxwcm90ZWN0ZWQ+ICovCisgIGdib29sZWFuICAgICAgICAgICAgICAgICAgdGV4dHVyZV93cmFwcGVkOworICBndWludCAgICAgICAgICAgICAgICAgICAgIHVucGFja19sZW5ndGg7CisgIGd1aW50ICAgICAgICAgICAgICAgICAgICAgdGV4X3dpZHRoOwogfTsKIAotI2RlZmluZSBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIm1lbW9yeTpHTE1lbW9yeSIKLSNkZWZpbmUgR1NUX0dMX01FTU9SWV9WSURFT19GT1JNQVRTX1NUUiBcCi0gICAgInsgUkdCQSwgQkdSQSwgUkdCeCwgQkdSeCwgQVJHQiwgQUJHUiwgeFJHQiwgeEJHUiwgUkdCLCBCR1IsIFJHQjE2LCBCR1IxNiwgIiBcCi0gICAgIkFZVVYsIEk0MjAsIFlWMTIsIE5WMTIsIE5WMjEsIFlVWTIsIFVZVlksIFk0MUIsIFk0MkIsIFk0NDQsICIgXAotICAgICJHUkFZOCwgR1JBWTE2X0xFLCBHUkFZMTZfQkUgfSIKK3R5cGVkZWYgc3RydWN0IF9Hc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtczsKKworI2RlZmluZSBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTyAoMSA8PCAzKQorCitzdHJ1Y3QgX0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zCit7CisgIEdzdEdMQWxsb2NhdGlvblBhcmFtcyAgcGFyZW50OworCisgIEdzdFZpZGVvSW5mbyAgICAgICAgICAqdl9pbmZvOworICBndWludCAgICAgICAgICAgICAgICAgIHBsYW5lOworICBHc3RWaWRlb0FsaWdubWVudCAgICAgKnZhbGlnbjsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0ICAgICB0YXJnZXQ7Cit9OworCitnYm9vbGVhbiAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2luaXRfZnVsbCAgICAgICAgKEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnc2l6ZSBzdHJ1Y3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgYWxsb2NfZmxhZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0NvcHlGdW5jIGNvcHksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQWxsb2NhdGlvblBhcmFtc0ZyZWVGdW5jIGZyZWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBhbGxvY19wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIHZfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB3cmFwcGVkX2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IGdsX2hhbmRsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOworR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3IChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogYWxsb2NfcGFyYW1zLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKiB2X2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHBsYW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCk7CitHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIGFsbG9jX3BhcmFtcywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIHZfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHBsYW5lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgd3JhcHBlZF9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKKworR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgKiBhbGxvY19wYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKiB2X2luZm8sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBwbGFuZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHRleF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7CisKKy8qIHN1YmNsYXNzIHVzYWdlICovCit2b2lkICAgICAgICAgICAgZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWVfZGF0YSAgICAoR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBwYXJhbXMpOworLyogc3ViY2xhc3MgdXNhZ2UgKi8KK3ZvaWQgICAgICAgICAgICBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfY29weV9kYXRhICAgIChHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIHNyY192aWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKiBkZXN0X3ZpZCk7CiAKIC8qKgotICogR1NUX0dMX01FTU9SWV9BTExPQ0FUT1I6CisgKiBHc3RHTE1lbW9yeUFsbG9jYXRvcgorICoKKyAqIE9wYXF1ZSAjR3N0R0xNZW1vcnlBbGxvY2F0b3Igc3RydWN0CisgKi8KK3N0cnVjdCBfR3N0R0xNZW1vcnlBbGxvY2F0b3IKK3sKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yIHBhcmVudDsKK307CisKKy8qKgorICogR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzczoKKyAqCisgKiBUaGUgI0dzdEdMTWVtb3J5QWxsb2NhdG9yQ2xhc3Mgb25seSBjb250YWlucyBwcml2YXRlIGRhdGEKKyAqLworc3RydWN0IF9Hc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzCit7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICAgICAgICAgICAgIHBhcmVudF9jbGFzczsKKworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JNYXBGdW5jdGlvbiAgICAgICBtYXA7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNvcHlGdW5jdGlvbiAgICAgIGNvcHk7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvclVubWFwRnVuY3Rpb24gICAgIHVubWFwOworfTsKKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbGJhc2VtZW1vcnkuaD4KKworLyoqCisgKiBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FOgogICoKICAqIFRoZSBuYW1lIG9mIHRoZSBHTCBtZW1vcnkgYWxsb2NhdG9yCiAgKi8KLSNkZWZpbmUgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IgICAiR0xNZW1vcnkiCisjZGVmaW5lIEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUgICAiR0xNZW1vcnkiCiAKLXZvaWQgICAgICAgICAgZ3N0X2dsX21lbW9yeV9pbml0ICh2b2lkKTsKLWdib29sZWFuICAgICAgZ3N0X2lzX2dsX21lbW9yeSAoR3N0TWVtb3J5ICogbWVtKTsKK3ZvaWQgICAgICAgICAgICBnc3RfZ2xfbWVtb3J5X2luaXRfb25jZSAodm9pZCk7CitnYm9vbGVhbiAgICAgICAgZ3N0X2lzX2dsX21lbW9yeSAoR3N0TWVtb3J5ICogbWVtKTsKIAotR3N0TWVtb3J5ICogICBnc3RfZ2xfbWVtb3J5X2FsbG9jICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9BbGlnbm1lbnQgKnZhbGlnbik7Ci1Hc3RHTE1lbW9yeSAqIGdzdF9nbF9tZW1vcnlfd3JhcHBlZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKiBpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHBsYW5lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQWxpZ25tZW50ICp2YWxpZ24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgZGF0YSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKLUdzdEdMTWVtb3J5ICogZ3N0X2dsX21lbW9yeV93cmFwcGVkX3RleHR1cmUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0ZXh0dXJlX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdGV4dHVyZV90YXJnZXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKiBpbmZvLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0FsaWdubWVudCAqdmFsaWduLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Rlc3Ryb3lOb3RpZnkgbm90aWZ5KTsKK3ZvaWQgICAgICAgICAgICBnc3RfZ2xfbWVtb3J5X2luaXQgICAgICAgICAgICAgIChHc3RHTE1lbW9yeSAqIG1lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0TWVtb3J5ICogcGFyZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICpwYXJhbXMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICogaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBwbGFuZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0FsaWdubWVudCAqdmFsaWduLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpOwogCi12b2lkICAgICAgICAgIGdzdF9nbF9tZW1vcnlfZG93bmxvYWRfdHJhbnNmZXIgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKTsKLXZvaWQgICAgICAgICAgZ3N0X2dsX21lbW9yeV91cGxvYWRfdHJhbnNmZXIgICAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pOworZ2Jvb2xlYW4gICAgICAgIGdzdF9nbF9tZW1vcnlfY29weV9pbnRvICAgICAgICAgKEdzdEdMTWVtb3J5ICpnbF9tZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdGV4X2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBoZWlnaHQpOworZ2Jvb2xlYW4gICAgICAgIGdzdF9nbF9tZW1vcnlfY29weV90ZXhpbWFnZSAgICAgKEdzdEdMTWVtb3J5ICogc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHRleF9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgb3V0X3RhcmdldCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgb3V0X3RleF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBoZWlnaHQpOwogCi1nYm9vbGVhbiAgICAgIGdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUgKEdzdEdMTWVtb3J5ICpnbF9tZW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IHRleF9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBzdHJpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIHJlc3BlY2lmeSk7CitnYm9vbGVhbiAgICAgICAgZ3N0X2dsX21lbW9yeV9yZWFkX3BpeGVscyAgICAgICAoR3N0R0xNZW1vcnkgKiBnbF9tZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgcmVhZF9wb2ludGVyKTsKK3ZvaWQgICAgICAgICAgICBnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlICAgICAgIChHc3RHTE1lbW9yeSAqIGdsX21lbSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciByZWFkX3BvaW50ZXIpOwogCi1nYm9vbGVhbiAgICAgIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9BbGlnbm1lbnQgKnZhbGlnbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKiBidWZmZXIpOwotZ2Jvb2xlYW4gICAgICBnc3RfZ2xfbWVtb3J5X3NldHVwX3dyYXBwZWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICogaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0FsaWdubWVudCAqdmFsaWduLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIGRhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMTWVtb3J5ICp0ZXh0dXJlc1tHU1RfVklERU9fTUFYX1BMQU5FU10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgdXNlcl9kYXRhLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSk7CisvKiBhY2Nlc3NvcnMgKi8KK2dpbnQgICAgICAgICAgICAgICAgICAgIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGggICAgIChHc3RHTE1lbW9yeSAqIGdsX21lbSk7CitnaW50ICAgICAgICAgICAgICAgICAgICBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2hlaWdodCAgICAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pOworR3N0VmlkZW9HTFRleHR1cmVUeXBlICAgZ3N0X2dsX21lbW9yeV9nZXRfdGV4dHVyZV90eXBlICAgICAgKEdzdEdMTWVtb3J5ICogZ2xfbWVtKTsKK0dzdEdMVGV4dHVyZVRhcmdldCAgICAgIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfdGFyZ2V0ICAgIChHc3RHTE1lbW9yeSAqIGdsX21lbSk7CitndWludCAgICAgICAgICAgICAgICAgICBnc3RfZ2xfbWVtb3J5X2dldF90ZXh0dXJlX2lkICAgICAgICAoR3N0R0xNZW1vcnkgKiBnbF9tZW0pOwogCi1naW50ICAgICAgICAgIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGggIChHc3RHTE1lbW9yeSAqIGdsX21lbSk7Ci1naW50ICAgICAgICAgIGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0IChHc3RHTE1lbW9yeSAqIGdsX21lbSk7CitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAgICAgICAgICAoR3N0R0xNZW1vcnlBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QnVmZmVyICogYnVmZmVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKTsKIAotLyogdXRpbGl0eSBmdW5jdGlvbnMgKi8KLUdzdFZpZGVvR0xUZXh0dXJlVHlwZSBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0IChHc3RHTENvbnRleHQgKmNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9Gb3JtYXQgdl9mb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgcGxhbmUpOwotZ3VpbnQgICAgICAgICAgICAgICAgIGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXhfZm9ybWF0KTsKLWd1aW50ICAgICAgICAgICAgICAgICBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBmb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0eXBlKTsKIAotLyoqCi0gKiBHc3RHTEFsbG9jYXRvcgotICoKLSAqIE9wYXF1ZSAjR3N0R0xBbGxvY2F0b3Igc3RydWN0Ci0gKi8KLXN0cnVjdCBfR3N0R0xBbGxvY2F0b3IKLXsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yIHBhcmVudDsKLSAgR3N0TWVtb3J5Q29weUZ1bmN0aW9uIGZhbGxiYWNrX21lbV9jb3B5OwotfTsKLQotLyoqCi0gKiBHc3RHTEFsbG9jYXRvckNsYXNzOgotICoKLSAqIFRoZSAjR3N0R0xBbGxvY2F0b3JDbGFzcyBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQotICovCi1zdHJ1Y3QgX0dzdEdMQWxsb2NhdG9yQ2xhc3MKLXsKLSAgR3N0R0xCYXNlQnVmZmVyQWxsb2NhdG9yQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKK0dzdEdMTWVtb3J5QWxsb2NhdG9yICogIGdzdF9nbF9tZW1vcnlfYWxsb2NhdG9yX2dldF9kZWZhdWx0IChHc3RHTENvbnRleHQgKmNvbnRleHQpOwogCiBHX0VORF9ERUNMUwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NTNlMWMKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xtZW1vcnlwYm8uYwpAQCAtMCwwICsxLDg4NSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWV0MDBAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDE1IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsbWVtb3J5cGJvLmg+CisKKy8qKgorICogU0VDVElPTjpnc3RnbG1lbW9yeXBibworICogQHNob3J0X2Rlc2NyaXB0aW9uOiBtZW1vcnkgc3ViY2xhc3MgZm9yIEdMIHRleHR1cmVzCisgKiBAc2VlX2Fsc286ICNHc3RNZW1vcnksICNHc3RBbGxvY2F0b3IsICNHc3RHTEJ1ZmZlclBvb2wKKyAqCisgKiAjR3N0R0xNZW1vcnlQQk8gaXMgY3JlYXRlZCBvciB3cmFwcGVkIHRocm91Z2ggZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jKCkKKyAqIHdpdGggI0dzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zLgorICoKKyAqICNHc3RHTE1lbW9yeVBCTyBpcyBjcmVhdGVkIHRocm91Z2ggZ3N0X2dsX21lbW9yeV9wYm9fYWxsb2MoKSBvciBzeXN0ZW0gbWVtb3J5IGNhbgorICogYmUgd3JhcHBlZCB0aHJvdWdoIGdzdF9nbF9tZW1vcnlfcGJvX3dyYXBwZWQoKS4KKyAqCisgKiBEYXRhIGlzIHVwbG9hZGVkIG9yIGRvd25sb2FkZWQgZnJvbSB0aGUgR1BVIGFzIGlzIG5lY2Vzc2FyeS4KKyAqLworCisvKiBJbXBsZW1lbnRhdGlvbiBub3RlcworICoKKyAqIFBCTyB0cmFuc2ZlcidzIGFyZSBpbXBsZW1lbnRlZCB1c2luZyBHc3RHTEJ1ZmZlci4gIFdlIGp1c3QgbmVlZCB0bworICogZW5zdXJlIHRoYXQgdGhlIHRleHR1cmUgZGF0YSBpcyB3cml0dGVuL3JlYWQgdG8vZnJvbSBiZWZvcmUvYWZ0ZXIgY2FsbGluZworICogbWFwIChtZW0tPnBibywgUkVBRCkgd2hpY2ggcGVyZm9ybXMgdGhlIHBibyBidWZmZXIgdHJhbnNmZXIuCisgKi8KKworI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKKyNkZWZpbmUgVVNJTkdfT1BFTkdMMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAxKSkKKyNkZWZpbmUgVVNJTkdfR0xFUyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTLCAxLCAwKSkKKyNkZWZpbmUgVVNJTkdfR0xFUzIoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDIsIDApKQorI2RlZmluZSBVU0lOR19HTEVTMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCisKKyNkZWZpbmUgR0xfTUVNX0hFSUdIVChnbF9tZW0pIF9nZXRfcGxhbmVfaGVpZ2h0ICgmZ2xfbWVtLT5tZW0uaW5mbywgZ2xfbWVtLT5tZW0ucGxhbmUpCisjZGVmaW5lIEdMX01FTV9TVFJJREUoZ2xfbWVtKSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUgKCZnbF9tZW0tPm1lbS5pbmZvLCBnbF9tZW0tPm1lbS5wbGFuZSkKKworI2RlZmluZSBDT05URVhUX1NVUFBPUlRTX1BCT19VUExPQUQoY29udGV4dCkgXAorICAgIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBcCisgICAgICAgIEdTVF9HTF9BUElfT1BFTkdMIHwgR1NUX0dMX0FQSV9PUEVOR0wzLCAyLCAxKSBcCisgICAgICAgIHx8IGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsIDApKQorI2RlZmluZSBDT05URVhUX1NVUFBPUlRTX1BCT19ET1dOTE9BRChjb250ZXh0KSBcCisgICAgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIFwKKyAgICAgICAgR1NUX0dMX0FQSV9PUEVOR0wgfCBHU1RfR0xfQVBJX09QRU5HTDMgfCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9HTF9NRU1PUlkpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgR1NUX0NBVF9HTF9NRU1PUlkKKworc3RhdGljIEdzdEFsbG9jYXRvciAqX2dsX2FsbG9jYXRvcjsKKworLyogY29tcGF0YWJpbGl0eSBkZWZpbml0aW9ucy4uLiAqLworI2lmbmRlZiBHTF9QSVhFTF9QQUNLX0JVRkZFUgorI2RlZmluZSBHTF9QSVhFTF9QQUNLX0JVRkZFUiAweDg4RUIKKyNlbmRpZgorI2lmbmRlZiBHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSCisjZGVmaW5lIEdMX1BJWEVMX1VOUEFDS19CVUZGRVIgMHg4OEVDCisjZW5kaWYKKyNpZm5kZWYgR0xfU1RSRUFNX1JFQUQKKyNkZWZpbmUgR0xfU1RSRUFNX1JFQUQgMHg4OEUxCisjZW5kaWYKKyNpZm5kZWYgR0xfU1RSRUFNX0RSQVcKKyNkZWZpbmUgR0xfU1RSRUFNX0RSQVcgMHg4OEUwCisjZW5kaWYKKyNpZm5kZWYgR0xfU1RSRUFNX0NPUFkKKyNkZWZpbmUgR0xfU1RSRUFNX0NPUFkgMHg4OEUyCisjZW5kaWYKKyNpZm5kZWYgR0xfVU5QQUNLX1JPV19MRU5HVEgKKyNkZWZpbmUgR0xfVU5QQUNLX1JPV19MRU5HVEggMHgwQ0YyCisjZW5kaWYKKworI2lmbmRlZiBHTF9URVhUVVJFX1JFQ1RBTkdMRQorI2RlZmluZSBHTF9URVhUVVJFX1JFQ1RBTkdMRSAweDg0RjUKKyNlbmRpZgorI2lmbmRlZiBHTF9URVhUVVJFX0VYVEVSTkFMX09FUworI2RlZmluZSBHTF9URVhUVVJFX0VYVEVSTkFMX09FUyAweDhENjUKKyNlbmRpZgorCisjZGVmaW5lIHBhcmVudF9jbGFzcyBnc3RfZ2xfbWVtb3J5X3Bib19hbGxvY2F0b3JfcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFIChHc3RHTE1lbW9yeVBCT0FsbG9jYXRvciwgZ3N0X2dsX21lbW9yeV9wYm9fYWxsb2NhdG9yLAorICAgIEdTVF9UWVBFX0dMX01FTU9SWV9BTExPQ0FUT1IpOworCit0eXBlZGVmIHN0cnVjdAoreworICAvKiBpbiAqLworICBHc3RHTE1lbW9yeVBCTyAqc3JjOworICBHc3RWaWRlb0dMVGV4dHVyZVR5cGUgb3V0X2Zvcm1hdDsKKyAgZ3VpbnQgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0OworICBndWludCBvdXRfc3RyaWRlOworICBnYm9vbGVhbiByZXNwZWNpZnk7CisgIEdzdEdMVGV4dHVyZVRhcmdldCB0ZXhfdGFyZ2V0OworICAvKiBpbm91dCAqLworICBndWludCB0ZXhfaWQ7CisgIC8qIG91dCAqLworICBnYm9vbGVhbiByZXN1bHQ7Cit9IEdzdEdMTWVtb3J5UEJPQ29weVBhcmFtczsKKworc3RhdGljIGlubGluZSBndWludAorX2dldF9wbGFuZV9oZWlnaHQgKEdzdFZpZGVvSW5mbyAqIGluZm8sIGd1aW50IHBsYW5lKQoreworICBpZiAoR1NUX1ZJREVPX0lORk9fSVNfWVVWIChpbmZvKSkKKyAgICAvKiBGb3Igbm93IGNvbXBvbmVudCB3aWR0aCBhbmQgcGxhbmUgd2lkdGggYXJlIHRoZSBzYW1lIGFuZCB0aGUKKyAgICAgKiBwbGFuZS1jb21wb25lbnQgbWFwcGluZyBtYXRjaGVzCisgICAgICovCisgICAgcmV0dXJuIEdTVF9WSURFT19JTkZPX0NPTVBfSEVJR0hUIChpbmZvLCBwbGFuZSk7CisgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHQiwgR1JBWSAqLworICAgIHJldHVybiBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pOworfQorCitzdGF0aWMgdm9pZAorX3VwbG9hZF9wYm9fbWVtb3J5IChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8sCisgICAgR3N0R0xCdWZmZXIgKiBwYm8sIEdzdE1hcEluZm8gKiBwYm9faW5mbykKK3sKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZ2xfbWVtLT5tZW0ubWVtLmNvbnRleHQ7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsOworICBndWludCBwYm9faWQ7CisKKyAgaWYgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChnbF9tZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpCisgICAgcmV0dXJuOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKENPTlRFWFRfU1VQUE9SVFNfUEJPX1VQTE9BRCAoY29udGV4dCkpOworCisgIGdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBwYm9faWQgPSAqKGd1aW50ICopIHBib19pbmZvLT5kYXRhOworCisgIEdTVF9DQVRfTE9HIChHU1RfQ0FUX0dMX01FTU9SWSwgInVwbG9hZCBmb3IgdGV4dHVyZSBpZDoldSwgd2l0aCBwYm8gJXUgJXV4JXUiLAorICAgICAgZ2xfbWVtLT5tZW0udGV4X2lkLCBwYm9faWQsIGdsX21lbS0+bWVtLnRleF93aWR0aCwKKyAgICAgIEdMX01FTV9IRUlHSFQgKGdsX21lbSkpOworCisgIGdsLT5CaW5kQnVmZmVyIChHTF9QSVhFTF9VTlBBQ0tfQlVGRkVSLCBwYm9faWQpOworICBnc3RfZ2xfbWVtb3J5X3RleHN1YmltYWdlIChHU1RfR0xfTUVNT1JZX0NBU1QgKGdsX21lbSksIE5VTEwpOworICBnbC0+QmluZEJ1ZmZlciAoR0xfUElYRUxfVU5QQUNLX0JVRkZFUiwgMCk7Cit9CisKK3N0YXRpYyBndWludAorX25ld190ZXh0dXJlIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBndWludCB0YXJnZXQsIGd1aW50IGludGVybmFsX2Zvcm1hdCwKKyAgICBndWludCBmb3JtYXQsIGd1aW50IHR5cGUsIGd1aW50IHdpZHRoLCBndWludCBoZWlnaHQpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBndWludCB0ZXhfaWQ7CisKKyAgZ2wtPkdlblRleHR1cmVzICgxLCAmdGV4X2lkKTsKKyAgZ2wtPkJpbmRUZXh0dXJlICh0YXJnZXQsIHRleF9pZCk7CisgIGlmICh0YXJnZXQgPT0gR0xfVEVYVFVSRV8yRCB8fCB0YXJnZXQgPT0gR0xfVEVYVFVSRV9SRUNUQU5HTEUpCisgICAgZ2wtPlRleEltYWdlMkQgKHRhcmdldCwgMCwgaW50ZXJuYWxfZm9ybWF0LCB3aWR0aCwgaGVpZ2h0LCAwLCBmb3JtYXQsIHR5cGUsCisgICAgICAgIE5VTEwpOworCisgIGdsLT5UZXhQYXJhbWV0ZXJpICh0YXJnZXQsIEdMX1RFWFRVUkVfTUFHX0ZJTFRFUiwgR0xfTElORUFSKTsKKyAgZ2wtPlRleFBhcmFtZXRlcmkgKHRhcmdldCwgR0xfVEVYVFVSRV9NSU5fRklMVEVSLCBHTF9MSU5FQVIpOworICBnbC0+VGV4UGFyYW1ldGVyaSAodGFyZ2V0LCBHTF9URVhUVVJFX1dSQVBfUywgR0xfQ0xBTVBfVE9fRURHRSk7CisgIGdsLT5UZXhQYXJhbWV0ZXJpICh0YXJnZXQsIEdMX1RFWFRVUkVfV1JBUF9ULCBHTF9DTEFNUF9UT19FREdFKTsKKworICBnbC0+QmluZFRleHR1cmUgKHRhcmdldCwgMCk7CisKKyAgcmV0dXJuIHRleF9pZDsKK30KKworc3RhdGljIGdib29sZWFuCitfZ2xfbWVtX2NyZWF0ZSAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0sIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZ2xfbWVtLT5tZW0ubWVtLmNvbnRleHQ7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKworICBhbGxvY19jbGFzcyA9IEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MgKHBhcmVudF9jbGFzcyk7CisgIGlmICghYWxsb2NfY2xhc3MtPmNyZWF0ZSAoKEdzdEdMQmFzZU1lbW9yeSAqKSBnbF9tZW0sIGVycm9yKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKENPTlRFWFRfU1VQUE9SVFNfUEJPX0RPV05MT0FEIChjb250ZXh0KQorICAgICAgfHwgQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChjb250ZXh0KSkgeworICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgYWxsb2NfcGFyYW1zID0KKyAgICAgICAgeyAwLCBHU1RfTUVNT1JZX0NBU1QgKGdsX21lbSktPmFsaWduLCAwLCAwIH07CisgICAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpidWZfYWxsb2NhdG9yOworICAgIEdzdEdMQnVmZmVyQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworCisgICAgYnVmX2FsbG9jYXRvciA9CisgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9hbGxvY2F0b3JfZmluZAorICAgICAgICAoR1NUX0dMX0JVRkZFUl9BTExPQ0FUT1JfTkFNRSkpOworICAgIHBhcmFtcyA9CisgICAgICAgIGdzdF9nbF9idWZmZXJfYWxsb2NhdGlvbl9wYXJhbXNfbmV3IChjb250ZXh0LAorICAgICAgICBHU1RfTUVNT1JZX0NBU1QgKGdsX21lbSktPnNpemUsICZhbGxvY19wYXJhbXMsIEdMX1BJWEVMX1VOUEFDS19CVUZGRVIsCisgICAgICAgIEdMX1NUUkVBTV9EUkFXKTsKKworICAgIC8qIEZJWE1FOiBsYXp5IGluaXQgdGhpcyBmb3IgcmVzb3VyY2UgY29uc3RyYWluZWQgcGxhdGZvcm1zCisgICAgICogV2lsbCBuZWVkIHRvIGZpeCBwYm8gZGV0ZWN0aW9uIGJhc2VkIG9uIHRoZSBleGlzdGVuY2Ugb2YgdGhlIG1lbS5pZCB0aGVuICovCisgICAgZ2xfbWVtLT5wYm8gPSAoR3N0R0xCdWZmZXIgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChidWZfYWxsb2NhdG9yLAorICAgICAgICAoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisKKyAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKGJ1Zl9hbGxvY2F0b3IpOworCisgICAgR1NUX0NBVF9MT0cgKEdTVF9DQVRfR0xfTUVNT1JZLCAiZ2VuZXJhdGVkIHBibyAldSIsIGdsX21lbS0+cGJvLT5pZCk7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK19nbF9tZW1faW5pdCAoR3N0R0xNZW1vcnlQQk8gKiBtZW0sIEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RNZW1vcnkgKiBwYXJlbnQsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0VmlkZW9JbmZvICogaW5mbywKKyAgICBndWludCBwbGFuZSwgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIGdzdF9nbF9tZW1vcnlfaW5pdCAoKEdzdEdMTWVtb3J5ICopIG1lbSwgYWxsb2NhdG9yLCBwYXJlbnQsCisgICAgICBjb250ZXh0LCB0YXJnZXQsIHBhcmFtcywgaW5mbywgcGxhbmUsIHZhbGlnbiwgdXNlcl9kYXRhLCBub3RpZnkpOworfQorCitzdGF0aWMgR3N0R0xNZW1vcnlQQk8gKgorX2dsX21lbV9uZXcgKEdzdEFsbG9jYXRvciAqIGFsbG9jYXRvciwgR3N0TWVtb3J5ICogcGFyZW50LAorICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0VmlkZW9JbmZvICogaW5mbywKKyAgICBndWludCBwbGFuZSwgR3N0VmlkZW9BbGlnbm1lbnQgKiB2YWxpZ24sIGdwb2ludGVyIHVzZXJfZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdEdMTWVtb3J5UEJPICptZW07CisgIG1lbSA9IGdfbmV3MCAoR3N0R0xNZW1vcnlQQk8sIDEpOworICBtZW0tPm1lbS50ZXh0dXJlX3dyYXBwZWQgPSBGQUxTRTsKKworICBfZ2xfbWVtX2luaXQgKG1lbSwgYWxsb2NhdG9yLCBwYXJlbnQsIGNvbnRleHQsIHRhcmdldCwgcGFyYW1zLCBpbmZvLCBwbGFuZSwKKyAgICAgIHZhbGlnbiwgdXNlcl9kYXRhLCBub3RpZnkpOworCisgIHJldHVybiBtZW07Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3JlYWRfcGl4ZWxzX3RvX3BibyAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0pCit7CisgIGlmICghZ2xfbWVtLT5wYm8gfHwgIUNPTlRFWFRfU1VQUE9SVFNfUEJPX0RPV05MT0FEIChnbF9tZW0tPm1lbS5tZW0uY29udGV4dCkKKyAgICAgIHx8IGdsX21lbS0+bWVtLnRleF90eXBlID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfTFVNSU5BTkNFCisgICAgICB8fCBnbF9tZW0tPm1lbS50ZXhfdHlwZSA9PSBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX0xVTUlOQU5DRV9BTFBIQSkKKyAgICAvKiB1bnN1cHBvcnRlZCAqLworICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoZ2xfbWVtLAorICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSkgeworICAgIC8qIGNvcHkgdGV4dHVyZSBkYXRhIGludG8gaW50byB0aGUgcGJvIGFuZCBtYXAgdGhhdCAqLworICAgIGdzaXplIHBsYW5lX3N0YXJ0OworICAgIEdzdE1hcEluZm8gcGJvX2luZm87CisKKyAgICBwbGFuZV9zdGFydCA9CisgICAgICAgIGdzdF9nbF9nZXRfcGxhbmVfc3RhcnQgKCZnbF9tZW0tPm1lbS5pbmZvLCAmZ2xfbWVtLT5tZW0udmFsaWduLAorICAgICAgICBnbF9tZW0tPm1lbS5wbGFuZSkgKyBHU1RfTUVNT1JZX0NBU1QgKGdsX21lbSktPm9mZnNldDsKKworICAgIGdsX21lbS0+cGJvLT50YXJnZXQgPSBHTF9QSVhFTF9QQUNLX0JVRkZFUjsKKyAgICBpZiAoIWdzdF9tZW1vcnlfbWFwIChHU1RfTUVNT1JZX0NBU1QgKGdsX21lbS0+cGJvKSwgJnBib19pbmZvLAorICAgICAgICAgICAgR1NUX01BUF9XUklURSB8IEdTVF9NQVBfR0wpKSB7CisgICAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgcGJvIGZvciB3cml0aW5nIik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKCFnc3RfZ2xfbWVtb3J5X3JlYWRfcGl4ZWxzICgoR3N0R0xNZW1vcnkgKikgZ2xfbWVtLAorICAgICAgICAgICAgKGdwb2ludGVyKSBwbGFuZV9zdGFydCkpIHsKKyAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmcGJvX2luZm8pOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmcGJvX2luZm8pOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX3Bib19kb3dubG9hZF90cmFuc2ZlciAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQoreworICBHc3RNYXBJbmZvICpwYm9faW5mbzsKKworICBnbF9tZW0tPnBiby0+dGFyZ2V0ID0gR0xfUElYRUxfUEFDS19CVUZGRVI7CisgIC8qIHRleHR1cmUgLT4gcGJvICovCisgIGlmIChpbmZvLT5mbGFncyAmIEdTVF9NQVBfUkVBRAorICAgICAgJiYgR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAoZ2xfbWVtLAorICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSkgeworICAgIEdzdE1hcEluZm8gaW5mbzsKKworICAgIEdTVF9DQVRfVFJBQ0UgKEdTVF9DQVRfR0xfTUVNT1JZLAorICAgICAgICAiYXR0ZW1wdGluZyBkb3dubG9hZCBvZiB0ZXh0dXJlICV1ICIgInVzaW5nIHBibyAldSIsIGdsX21lbS0+bWVtLnRleF9pZCwKKyAgICAgICAgZ2xfbWVtLT5wYm8tPmlkKTsKKworICAgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmaW5mbywKKyAgICAgICAgICAgIEdTVF9NQVBfV1JJVEUgfCBHU1RfTUFQX0dMKSkgeworICAgICAgR1NUX0NBVF9XQVJOSU5HIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZhaWxlZCB0byB3cml0ZSB0byBQQk8iKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGlmICghX3JlYWRfcGl4ZWxzX3RvX3BibyAoZ2xfbWVtKSkKKyAgICAgIHJldHVybiBOVUxMOworCisgICAgZ3N0X21lbW9yeV91bm1hcCAoR1NUX01FTU9SWV9DQVNUIChnbF9tZW0tPnBibyksICZpbmZvKTsKKyAgfQorCisgIHBib19pbmZvID0gZ19uZXcwIChHc3RNYXBJbmZvLCAxKTsKKworICAvKiBwYm8gLT4gZGF0YSAqLworICAvKiBnZXQgYSBjcHUgYWNjZXNzaWJsZSBtYXBwaW5nIGZyb20gdGhlIHBibyAqLworICBpZiAoIWdzdF9tZW1vcnlfbWFwIChHU1RfTUVNT1JZX0NBU1QgKGdsX21lbS0+cGJvKSwgcGJvX2luZm8sIGluZm8tPmZsYWdzKSkgeworICAgIEdTVF9DQVRfRVJST1IgKEdTVF9DQVRfR0xfTUVNT1JZLCAiRmFpbGVkIHRvIG1hcCBwYm8iKTsKKyAgICBnX2ZyZWUgKHBib19pbmZvKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorICBpbmZvLT51c2VyX2RhdGFbMF0gPSBwYm9faW5mbzsKKworICByZXR1cm4gcGJvX2luZm8tPmRhdGE7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX2dsX21lbV9tYXBfY3B1X2FjY2VzcyAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQoreworICBncG9pbnRlciBkYXRhID0gTlVMTDsKKworICBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2NfZGF0YSAoKEdzdEdMQmFzZU1lbW9yeSAqKSBnbF9tZW0pOworCisgIGlmICghZGF0YSAmJiBnbF9tZW0tPnBibworICAgICAgJiYgQ09OVEVYVF9TVVBQT1JUU19QQk9fRE9XTkxPQUQgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0KSkKKyAgICBkYXRhID0gX3Bib19kb3dubG9hZF90cmFuc2ZlciAoZ2xfbWVtLCBpbmZvLCBzaXplKTsKKworICBpZiAoIWRhdGEpIHsKKyAgICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICphbGxvY19jbGFzczsKKworICAgIGFsbG9jX2NsYXNzID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MgKHBhcmVudF9jbGFzcyk7CisKKyAgICBkYXRhID0gYWxsb2NfY2xhc3MtPm1hcCAoKEdzdEdMQmFzZU1lbW9yeSAqKSBnbF9tZW0sIGluZm8sIHNpemUpOworICB9CisKKyAgcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX2dsX21lbV9tYXBfZ3B1X2FjY2VzcyAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQoreworICBncG9pbnRlciBkYXRhID0gJmdsX21lbS0+bWVtLnRleF9pZDsKKworICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9SRUFEKSA9PSBHU1RfTUFQX1JFQUQpIHsKKyAgICBpZiAoZ2xfbWVtLT5wYm8gJiYgQ09OVEVYVF9TVVBQT1JUU19QQk9fVVBMT0FEIChnbF9tZW0tPm1lbS5tZW0uY29udGV4dCkpIHsKKyAgICAgIEdzdE1hcEluZm8gcGJvX2luZm87CisKKyAgICAgIC8qIGRhdGEgLT4gcGJvICovCisgICAgICBpZiAoIWdzdF9tZW1vcnlfbWFwIChHU1RfTUVNT1JZX0NBU1QgKGdsX21lbS0+cGJvKSwgJnBib19pbmZvLAorICAgICAgICAgICAgICBHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkgeworICAgICAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgcGJvIik7CisgICAgICAgIHJldHVybiBOVUxMOworICAgICAgfQorCisgICAgICAvKiBwYm8gLT4gdGV4dHVyZSAqLworICAgICAgX3VwbG9hZF9wYm9fbWVtb3J5IChnbF9tZW0sIGluZm8sIGdsX21lbS0+cGJvLCAmcGJvX2luZm8pOworCisgICAgICBnc3RfbWVtb3J5X3VubWFwIChHU1RfTUVNT1JZX0NBU1QgKGdsX21lbS0+cGJvKSwgJnBib19pbmZvKTsKKyAgICB9IGVsc2UgeworICAgICAgR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyAqYWxsb2NfY2xhc3M7CisKKyAgICAgIGFsbG9jX2NsYXNzID0gR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MgKHBhcmVudF9jbGFzcyk7CisKKyAgICAgIGRhdGEgPSBhbGxvY19jbGFzcy0+bWFwICgoR3N0R0xCYXNlTWVtb3J5ICopIGdsX21lbSwgaW5mbywgc2l6ZSk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIGRhdGE7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorX2dsX21lbV9tYXAgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtLCBHc3RNYXBJbmZvICogaW5mbywgZ3NpemUgbWF4c2l6ZSkKK3sKKyAgZ3BvaW50ZXIgZGF0YTsKKworICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgPT0gR1NUX01BUF9HTCkgeworICAgIGlmIChnbF9tZW0tPm1lbS50ZXhfdGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgICByZXR1cm4gJmdsX21lbS0+bWVtLnRleF9pZDsKKworICAgIGRhdGEgPSBfZ2xfbWVtX21hcF9ncHVfYWNjZXNzIChnbF9tZW0sIGluZm8sIG1heHNpemUpOworICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAvKiBub3QgR0wgKi8KKyAgICBpZiAoZ2xfbWVtLT5tZW0udGV4X3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkNhbm5vdCBtYXAgRXh0ZXJuYWwgT0VTIHRleHR1cmVzIik7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBkYXRhID0gX2dsX21lbV9tYXBfY3B1X2FjY2VzcyAoZ2xfbWVtLCBpbmZvLCBtYXhzaXplKTsKKyAgfQorCisgIHJldHVybiBkYXRhOworfQorCitzdGF0aWMgdm9pZAorX2dsX21lbV91bm1hcF9jcHVfYWNjZXNzIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSwgR3N0TWFwSW5mbyAqIGluZm8pCit7CisgIGlmICghZ2xfbWVtLT5wYm8gfHwgIUNPTlRFWFRfU1VQUE9SVFNfUEJPX0RPV05MT0FEIChnbF9tZW0tPm1lbS5tZW0uY29udGV4dCkpCisgICAgLyogUEJPJ3Mgbm90IHN1cHBvcnRlZCAqLworICAgIHJldHVybjsKKworICBnbF9tZW0tPnBiby0+dGFyZ2V0ID0gR0xfUElYRUxfUEFDS19CVUZGRVI7CisgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLAorICAgICAgKEdzdE1hcEluZm8gKikgaW5mby0+dXNlcl9kYXRhWzBdKTsKKyAgZ19mcmVlIChpbmZvLT51c2VyX2RhdGFbMF0pOworfQorCitzdGF0aWMgdm9pZAorX2dsX21lbV91bm1hcCAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0sIEdzdE1hcEluZm8gKiBpbmZvKQoreworICBpZiAoKGluZm8tPmZsYWdzICYgR1NUX01BUF9HTCkgPT0gMCkgeworICAgIF9nbF9tZW1fdW5tYXBfY3B1X2FjY2VzcyAoZ2xfbWVtLCBpbmZvKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorX2dsX21lbV9jb3B5X3RocmVhZCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7CisgIEdzdEdMTWVtb3J5UEJPQ29weVBhcmFtcyAqY29weV9wYXJhbXM7CisgIEdzdEdMTWVtb3J5UEJPICpzcmM7CisgIGd1aW50IHRleF9pZDsKKyAgZ3VpbnQgb3V0X3RleF90YXJnZXQ7CisgIEdMdWludCBmYm9JZDsKKyAgZ3NpemUgb3V0X3dpZHRoLCBvdXRfaGVpZ2h0LCBvdXRfc3RyaWRlOworICBHTHVpbnQgb3V0X2dsX2Zvcm1hdCwgb3V0X2dsX3R5cGU7CisgIEdMdWludCBpbl9nbF9mb3JtYXQsIGluX2dsX3R5cGU7CisgIGdzaXplIGluX3NpemUsIG91dF9zaXplOworCisgIGNvcHlfcGFyYW1zID0gKEdzdEdMTWVtb3J5UEJPQ29weVBhcmFtcyAqKSBkYXRhOworICBzcmMgPSBjb3B5X3BhcmFtcy0+c3JjOworICB0ZXhfaWQgPSBjb3B5X3BhcmFtcy0+dGV4X2lkOworICBvdXRfdGV4X3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoY29weV9wYXJhbXMtPnRleF90YXJnZXQpOworICBvdXRfd2lkdGggPSBjb3B5X3BhcmFtcy0+b3V0X3dpZHRoOworICBvdXRfaGVpZ2h0ID0gY29weV9wYXJhbXMtPm91dF9oZWlnaHQ7CisgIG91dF9zdHJpZGUgPSBjb3B5X3BhcmFtcy0+b3V0X3N0cmlkZTsKKworICBnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgb3V0X2dsX2Zvcm1hdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKGNvcHlfcGFyYW1zLT5vdXRfZm9ybWF0KTsKKyAgb3V0X2dsX3R5cGUgPSBHTF9VTlNJR05FRF9CWVRFOworICBpZiAoY29weV9wYXJhbXMtPm91dF9mb3JtYXQgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKKyAgICBvdXRfZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OworICBpbl9nbF9mb3JtYXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlIChzcmMtPm1lbS50ZXhfdHlwZSk7CisgIGluX2dsX3R5cGUgPSBHTF9VTlNJR05FRF9CWVRFOworICBpZiAoc3JjLT5tZW0udGV4X3R5cGUgPT0gR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0IxNikKKyAgICBpbl9nbF90eXBlID0gR0xfVU5TSUdORURfU0hPUlRfNV82XzU7CisKKyAgaWYgKCFnbC0+R2VuRnJhbWVidWZmZXJzKSB7CisgICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChjb250ZXh0LAorICAgICAgICAiQ29udGV4dCwgRVhUX2ZyYW1lYnVmZmVyX29iamVjdCBub3Qgc3VwcG9ydGVkIik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGluX3NpemUgPSBHTF9NRU1fSEVJR0hUIChzcmMpICogR0xfTUVNX1NUUklERSAoc3JjKTsKKyAgb3V0X3NpemUgPSBvdXRfaGVpZ2h0ICogb3V0X3N0cmlkZTsKKworICBpZiAoY29weV9wYXJhbXMtPnJlc3BlY2lmeSkgeworICAgIGlmIChpbl9zaXplICE9IG91dF9zaXplKSB7CisgICAgICBHU1RfRVJST1IgKCJDYW5ub3QgY29weSBiZXR3ZWVuIHRleHR1cmVzIHdpdGggYmFja2luZyBkYXRhIG9mIGRpZmZlcmVudCIKKyAgICAgICAgICAic2l6ZXMuIGlucHV0ICUiIEdfR1NJWkVfRk9STUFUICIgb3V0cHV0ICUiIEdfR1NJWkVfRk9STUFULCBpbl9zaXplLAorICAgICAgICAgIG91dF9zaXplKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICB9CisKKyAgaWYgKCF0ZXhfaWQpIHsKKyAgICBndWludCBpbnRlcm5hbF9mb3JtYXQ7CisgICAgZ3VpbnQgb3V0X2dsX3R5cGU7CisKKyAgICBvdXRfZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX0JZVEU7CisgICAgaWYgKGNvcHlfcGFyYW1zLT5vdXRfZm9ybWF0ID09IEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCMTYpCisgICAgICBvdXRfZ2xfdHlwZSA9IEdMX1VOU0lHTkVEX1NIT1JUXzVfNl81OworCisgICAgaW50ZXJuYWxfZm9ybWF0ID0KKyAgICAgICAgZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlIChjb250ZXh0LCBvdXRfZ2xfZm9ybWF0LAorICAgICAgICBvdXRfZ2xfdHlwZSk7CisKKyAgICB0ZXhfaWQgPQorICAgICAgICBfbmV3X3RleHR1cmUgKGNvbnRleHQsIG91dF90ZXhfdGFyZ2V0LAorICAgICAgICBpbnRlcm5hbF9mb3JtYXQsIG91dF9nbF9mb3JtYXQsIG91dF9nbF90eXBlLCBjb3B5X3BhcmFtcy0+b3V0X3dpZHRoLAorICAgICAgICBjb3B5X3BhcmFtcy0+b3V0X2hlaWdodCk7CisgIH0KKworICBpZiAoIXRleF9pZCkgeworICAgIEdTVF9XQVJOSU5HICgiQ291bGQgbm90IGNyZWF0ZSBHTCB0ZXh0dXJlIHdpdGggY29udGV4dDolcCIsIGNvbnRleHQpOworICB9CisKKyAgR1NUX0xPRyAoImNvcHlpbmcgbWVtb3J5ICVwLCB0ZXggJXUgaW50byB0ZXh0dXJlICVpIiwKKyAgICAgIHNyYywgc3JjLT5tZW0udGV4X2lkLCB0ZXhfaWQpOworCisgIC8qIEZJWE1FOiB0cnkgYW5kIGF2b2lkIGNyZWF0aW5nIGFuZCBkZXN0cm95aW5nIGZibydzIGV2ZXJ5IGNvcHkuLi4gKi8KKyAgLyogY3JlYXRlIGEgZnJhbWVidWZmZXIgb2JqZWN0ICovCisgIGdsLT5HZW5GcmFtZWJ1ZmZlcnMgKDEsICZmYm9JZCk7CisgIGdsLT5CaW5kRnJhbWVidWZmZXIgKEdMX0ZSQU1FQlVGRkVSLCBmYm9JZCk7CisKKyAgZ2wtPkZyYW1lYnVmZmVyVGV4dHVyZTJEIChHTF9GUkFNRUJVRkZFUiwgR0xfQ09MT1JfQVRUQUNITUVOVDAsCisgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKHNyYy0+bWVtLnRleF90YXJnZXQpLCBzcmMtPm1lbS50ZXhfaWQsIDApOworCisvLyAgaWYgKCFnc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXMgKHNyYy0+bWVtLm1lbS5jb250ZXh0KSkKKy8vICAgIGdvdG8gZmJvX2Vycm9yOworCisgIGdsLT5CaW5kVGV4dHVyZSAob3V0X3RleF90YXJnZXQsIHRleF9pZCk7CisgIGlmIChjb3B5X3BhcmFtcy0+cmVzcGVjaWZ5KSB7CisgICAgR3N0TWFwSW5mbyBwYm9faW5mbzsKKworICAgIGlmICghZ2wtPkdlbkJ1ZmZlcnMgfHwgIXNyYy0+cGJvKSB7CisgICAgICBnc3RfZ2xfY29udGV4dF9zZXRfZXJyb3IgKGNvbnRleHQsICJDYW5ub3QgcmVpbnRlcnByZXQgdGV4dHVyZSBjb250ZW50cyAiCisgICAgICAgICAgIndpdGhvdXQgcGl4ZWwgYnVmZmVyIG9iamVjdHMiKTsKKyAgICAgIGdsLT5CaW5kVGV4dHVyZSAob3V0X3RleF90YXJnZXQsIDApOworICAgICAgZ290byBmYm9fZXJyb3I7CisgICAgfQorCisgICAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9HTEVTMgorICAgICAgICAmJiAoaW5fZ2xfZm9ybWF0ICE9IEdMX1JHQkEgfHwgaW5fZ2xfdHlwZSAhPSBHTF9VTlNJR05FRF9CWVRFKSkgeworICAgICAgZ3N0X2dsX2NvbnRleHRfc2V0X2Vycm9yIChjb250ZXh0LCAiQ2Fubm90IGNvcHkgbm9uIFJHQkEvVU5TSUdORURfQllURSAiCisgICAgICAgICAgInRleHR1cmVzIG9uIEdMRVMyIik7CisgICAgICBnbC0+QmluZFRleHR1cmUgKG91dF90ZXhfdGFyZ2V0LCAwKTsKKyAgICAgIGdvdG8gZmJvX2Vycm9yOworICAgIH0KKworICAgIEdTVF9UUkFDRSAoImNvcHlpbmcgdGV4dHVyZSBkYXRhIHdpdGggc2l6ZSBvZiAldSoldSoldSIsCisgICAgICAgIGdzdF9nbF9mb3JtYXRfdHlwZV9uX2J5dGVzIChpbl9nbF9mb3JtYXQsIGluX2dsX3R5cGUpLAorICAgICAgICBzcmMtPm1lbS50ZXhfd2lkdGgsIEdMX01FTV9IRUlHSFQgKHNyYykpOworCisgICAgLyogY29weSB0ZXggKi8KKyAgICBfcmVhZF9waXhlbHNfdG9fcGJvIChzcmMpOworCisgICAgc3JjLT5wYm8tPnRhcmdldCA9IEdMX1BJWEVMX1VOUEFDS19CVUZGRVI7CisgICAgaWYgKCFnc3RfbWVtb3J5X21hcCAoR1NUX01FTU9SWV9DQVNUIChzcmMtPnBibyksICZwYm9faW5mbywKKyAgICAgICAgICAgIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSB7CisgICAgICBHU1RfQ0FUX0VSUk9SIChHU1RfQ0FUX0dMX01FTU9SWSwgIkZhaWxlZCB0byBtYXAgcGJvIGZvciByZWFkaW5nIik7CisgICAgICBnb3RvIGZib19lcnJvcjsKKyAgICB9CisgICAgZ2wtPlRleFN1YkltYWdlMkQgKG91dF90ZXhfdGFyZ2V0LCAwLCAwLCAwLCBvdXRfd2lkdGgsIG91dF9oZWlnaHQsCisgICAgICAgIG91dF9nbF9mb3JtYXQsIG91dF9nbF90eXBlLCAwKTsKKyAgICBnc3RfbWVtb3J5X3VubWFwIChHU1RfTUVNT1JZX0NBU1QgKHNyYy0+cGJvKSwgJnBib19pbmZvKTsKKyAgfSBlbHNlIHsgICAgICAgICAgICAgICAgICAgICAgLyogZGlmZmVyZW50IHNpemVzICovCisgICAgZ3N0X2dsX21lbW9yeV9jb3B5X3RleGltYWdlIChHU1RfR0xfTUVNT1JZX0NBU1QgKHNyYyksCisgICAgICAgIHRleF9pZCwgY29weV9wYXJhbXMtPnRleF90YXJnZXQsIGNvcHlfcGFyYW1zLT5vdXRfZm9ybWF0LCBvdXRfd2lkdGgsCisgICAgICAgIG91dF9oZWlnaHQpOworICB9CisKKyAgZ2wtPkJpbmRUZXh0dXJlIChvdXRfdGV4X3RhcmdldCwgMCk7CisgIGdsLT5CaW5kRnJhbWVidWZmZXIgKEdMX0ZSQU1FQlVGRkVSLCAwKTsKKworICBnbC0+RGVsZXRlRnJhbWVidWZmZXJzICgxLCAmZmJvSWQpOworCisgIGNvcHlfcGFyYW1zLT50ZXhfaWQgPSB0ZXhfaWQ7CisgIGNvcHlfcGFyYW1zLT5yZXN1bHQgPSBUUlVFOworCisgIHJldHVybjsKKworLyogRVJST1JTICovCitmYm9fZXJyb3I6CisgIHsKKyAgICBnbC0+RGVsZXRlRnJhbWVidWZmZXJzICgxLCAmZmJvSWQpOworCisgICAgY29weV9wYXJhbXMtPnRleF9pZCA9IDA7CisgICAgY29weV9wYXJhbXMtPnJlc3VsdCA9IEZBTFNFOworICAgIHJldHVybjsKKyAgfQorCitlcnJvcjoKKyAgeworICAgIGNvcHlfcGFyYW1zLT5yZXN1bHQgPSBGQUxTRTsKKyAgICByZXR1cm47CisgIH0KK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfZ2xfbWVtX2NvcHkgKEdzdEdMTWVtb3J5UEJPICogc3JjLCBnc3NpemUgb2Zmc2V0LCBnc3NpemUgc2l6ZSkKK3sKKyAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXMgPSB7IDAsIEdTVF9NRU1PUllfQ0FTVCAoc3JjKS0+YWxpZ24sIDAsIDAgfTsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpiYXNlX21lbV9hbGxvY2F0b3I7CisgIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOworICBHc3RNZW1vcnkgKmRlc3QgPSBOVUxMOworCisgIGFsbG9jYXRvciA9IEdTVF9NRU1PUllfQ0FTVCAoc3JjKS0+YWxsb2NhdG9yOworICBiYXNlX21lbV9hbGxvY2F0b3IgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICopIGFsbG9jYXRvcjsKKworICBpZiAoc3JjLT5tZW0udGV4X3RhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgR1NUX0NBVF9FUlJPUiAoR1NUX0NBVF9HTF9NRU1PUlksICJDYW5ub3QgY29weSBFeHRlcm5hbCBPRVMgdGV4dHVyZXMiKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIC8qIElmIG5vdCBkb2luZyBhIGZ1bGwgY29weSwgdGhlbiBjb3B5IHRvIHN5c21lbSwgdGhlIDJEIHJlcHJlc2VudGlvbiBvZiB0aGUKKyAgICogdGV4dHVyZSB3b3VsZCBiZWNvbWUgd3JvbmcgKi8KKyAgaWYgKG9mZnNldCA+IDAgfHwgc2l6ZSA8IEdTVF9NRU1PUllfQ0FTVCAoc3JjKS0+c2l6ZSkgeworICAgIHJldHVybiBiYXNlX21lbV9hbGxvY2F0b3ItPmZhbGxiYWNrX21lbV9jb3B5IChHU1RfTUVNT1JZX0NBU1QgKHNyYyksIG9mZnNldCwKKyAgICAgICAgc2l6ZSk7CisgIH0KKworICBkZXN0ID0gKEdzdE1lbW9yeSAqKSBfZ2xfbWVtX25ldyAoYWxsb2NhdG9yLCBOVUxMLCBzcmMtPm1lbS5tZW0uY29udGV4dCwKKyAgICAgIHNyYy0+bWVtLnRleF90YXJnZXQsICZwYXJhbXMsICZzcmMtPm1lbS5pbmZvLCBzcmMtPm1lbS5wbGFuZSwKKyAgICAgICZzcmMtPm1lbS52YWxpZ24sIE5VTEwsIE5VTEwpOworCisgIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChzcmMsIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpIHsKKyAgICBpZiAoIWdzdF9nbF9iYXNlX21lbW9yeV9tZW1jcHkgKChHc3RHTEJhc2VNZW1vcnkgKikgc3JjLAorICAgICAgICAgICAgKEdzdEdMQmFzZU1lbW9yeSAqKSBkZXN0LCBvZmZzZXQsIHNpemUpKSB7CisgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfTUVNT1JZLCAiQ291bGQgbm90IGNvcHkgR0wgTWVtb3J5Iik7CisgICAgICBnc3RfbWVtb3J5X3VucmVmIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBHc3RNYXBJbmZvIGRpbmZvOworCisgICAgaWYgKCFnc3RfbWVtb3J5X21hcCAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSwgJmRpbmZvLAorICAgICAgICAgICAgR1NUX01BUF9XUklURSB8IEdTVF9NQVBfR0wpKSB7CisgICAgICBHU1RfQ0FUX1dBUk5JTkcgKEdTVF9DQVRfR0xfTUVNT1JZLAorICAgICAgICAgICJGYWlsZWQgbm90IG1hcCBkZXN0aW5hdGlvbiAiICJmb3Igd3JpdGluZyIpOworICAgICAgZ3N0X21lbW9yeV91bnJlZiAoR1NUX01FTU9SWV9DQVNUIChkZXN0KSk7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9nbF9tZW1vcnlfY29weV9pbnRvICgoR3N0R0xNZW1vcnkgKikgc3JjLAorICAgICAgICAgICAgKChHc3RHTE1lbW9yeSAqKSBkZXN0KS0+dGV4X2lkLCBzcmMtPm1lbS50ZXhfdGFyZ2V0LAorICAgICAgICAgICAgc3JjLT5tZW0udGV4X3R5cGUsIHNyYy0+bWVtLnRleF93aWR0aCwgR0xfTUVNX0hFSUdIVCAoc3JjKSkpIHsKKyAgICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9NRU1PUlksICJDb3VsZCBub3QgY29weSBHTCBNZW1vcnkiKTsKKyAgICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCksICZkaW5mbyk7CisgICAgICBnc3RfbWVtb3J5X3VucmVmIChHU1RfTUVNT1JZX0NBU1QgKGRlc3QpKTsKKyAgICAgIHJldHVybiBOVUxMOworICAgIH0KKworICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZGVzdCksICZkaW5mbyk7CisgIH0KKworICByZXR1cm4gZGVzdDsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfZ2xfbWVtX2FsbG9jIChHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsIGdzaXplIHNpemUsCisgICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgZ193YXJuaW5nICgiVXNlIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoKSB0byBhbGxvY2F0ZSBmcm9tIHRoaXMgIgorICAgICAgIkdzdEdMTWVtb3J5UEJPIGFsbG9jYXRvciIpOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZAorX2dsX21lbV9kZXN0cm95IChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSkKK3sKKyAgaWYgKGdsX21lbS0+cGJvKQorICAgIGdzdF9tZW1vcnlfdW5yZWYgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pKTsKKyAgZ2xfbWVtLT5wYm8gPSBOVUxMOworCisgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRlc3Ryb3kgKChHc3RHTEJhc2VNZW1vcnkKKyAgICAgICAgICAqKSBnbF9tZW0pOworfQorCitzdGF0aWMgR3N0R0xNZW1vcnlQQk8gKgorX2dsX21lbV9wYm9fYWxsb2MgKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqIGFsbG9jYXRvciwKKyAgICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcykKK3sKKyAgR3N0R0xNZW1vcnlQQk8gKm1lbTsKKyAgZ3VpbnQgYWxsb2NfZmxhZ3M7CisKKyAgYWxsb2NfZmxhZ3MgPSBwYXJhbXMtPnBhcmVudC5hbGxvY19mbGFnczsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoYWxsb2NfZmxhZ3MgJiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19WSURFTywKKyAgICAgIE5VTEwpOworCisgIG1lbSA9IGdfbmV3MCAoR3N0R0xNZW1vcnlQQk8sIDEpOworCisgIGlmIChhbGxvY19mbGFncyAmIEdTVF9HTF9BTExPQ0FUSU9OX1BBUkFNU19BTExPQ19GTEFHX1dSQVBfR1BVX0hBTkRMRSkgeworICAgIG1lbS0+bWVtLnRleF9pZCA9IHBhcmFtcy0+cGFyZW50LmdsX2hhbmRsZTsKKyAgICBtZW0tPm1lbS50ZXh0dXJlX3dyYXBwZWQgPSBUUlVFOworICB9CisKKyAgX2dsX21lbV9pbml0IChtZW0sIEdTVF9BTExPQ0FUT1JfQ0FTVCAoYWxsb2NhdG9yKSwgTlVMTCwKKyAgICAgIHBhcmFtcy0+cGFyZW50LmNvbnRleHQsIHBhcmFtcy0+dGFyZ2V0LCBwYXJhbXMtPnBhcmVudC5hbGxvY19wYXJhbXMsCisgICAgICBwYXJhbXMtPnZfaW5mbywgcGFyYW1zLT5wbGFuZSwgcGFyYW1zLT52YWxpZ24sIHBhcmFtcy0+cGFyZW50LnVzZXJfZGF0YSwKKyAgICAgIHBhcmFtcy0+cGFyZW50Lm5vdGlmeSk7CisKKyAgaWYgKGFsbG9jX2ZsYWdzICYgR1NUX0dMX0FMTE9DQVRJT05fUEFSQU1TX0FMTE9DX0ZMQUdfV1JBUF9HUFVfSEFORExFKSB7CisgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKTsKKyAgfQorICBpZiAoYWxsb2NfZmxhZ3MgJiBHU1RfR0xfQUxMT0NBVElPTl9QQVJBTVNfQUxMT0NfRkxBR19XUkFQX1NZU01FTSkgeworICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpOworICAgIGlmIChtZW0tPnBibykgeworICAgICAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0tPnBibywKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpOworICAgICAgbWVtLT5wYm8tPm1lbS5kYXRhID0gcGFyYW1zLT5wYXJlbnQud3JhcHBlZF9kYXRhOworICAgIH0KKyAgICBtZW0tPm1lbS5tZW0uZGF0YSA9IHBhcmFtcy0+cGFyZW50LndyYXBwZWRfZGF0YTsKKyAgfQorCisgIHJldHVybiBtZW07Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfbWVtb3J5X3Bib19hbGxvY2F0b3JfY2xhc3NfaW5pdCAoR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcyAqIGtsYXNzKQoreworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqZ2xfYmFzZTsKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3JDbGFzcyAqZ2xfdGV4OworICBHc3RBbGxvY2F0b3JDbGFzcyAqYWxsb2NhdG9yX2NsYXNzOworCisgIGdsX3RleCA9IChHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzICopIGtsYXNzOworICBnbF9iYXNlID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvckNsYXNzICopIGtsYXNzOworICBhbGxvY2F0b3JfY2xhc3MgPSAoR3N0QWxsb2NhdG9yQ2xhc3MgKikga2xhc3M7CisKKyAgZ2xfYmFzZS0+YWxsb2MgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQWxsb2NGdW5jdGlvbikgX2dsX21lbV9wYm9fYWxsb2M7CisgIGdsX2Jhc2UtPmNyZWF0ZSA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDcmVhdGVGdW5jdGlvbikgX2dsX21lbV9jcmVhdGU7CisgIGdsX3RleC0+bWFwID0gKEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvck1hcEZ1bmN0aW9uKSBfZ2xfbWVtX21hcDsKKyAgZ2xfdGV4LT51bm1hcCA9IChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JVbm1hcEZ1bmN0aW9uKSBfZ2xfbWVtX3VubWFwOworICBnbF90ZXgtPmNvcHkgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ29weUZ1bmN0aW9uKSBfZ2xfbWVtX2NvcHk7CisgIGdsX2Jhc2UtPmRlc3Ryb3kgPSAoR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yRGVzdHJveUZ1bmN0aW9uKSBfZ2xfbWVtX2Rlc3Ryb3k7CisKKyAgYWxsb2NhdG9yX2NsYXNzLT5hbGxvYyA9IF9nbF9tZW1fYWxsb2M7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfZ2xfbWVtb3J5X3Bib19hbGxvY2F0b3JfaW5pdCAoR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IgKiBhbGxvY2F0b3IpCit7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CisKKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUU7CisKKyAgR1NUX09CSkVDVF9GTEFHX1NFVCAoYWxsb2NhdG9yLCBHU1RfQUxMT0NBVE9SX0ZMQUdfQ1VTVE9NX0FMTE9DKTsKK30KKworLyoqCisgKiBnc3RfZ2xfbWVtb3J5X3Bib19jb3B5X2ludG9fdGV4dHVyZToKKyAqIEBnbF9tZW06YSAjR3N0R0xNZW1vcnlQQk8KKyAqIEB0ZXhfaWQ6IHRoZSBkZXN0aW5hdGlvbiB0ZXh0dXJlIGlkCisgKiBAdGFyZ2V0OiB0aGUgZGVzdGluYXRpb24gI0dzdEdMVGV4dHVyZVRhcmdldAorICogQHRleF90eXBlOiB0aGUgZGVzdGluYXRpb24gI0dzdFZpZGVvR0xUZXh0dXJlVHlwZQorICogQHdpZHRoOiB3aWR0aCBvZiBAdGV4X2lkCisgKiBAaGVpZ2h0OiBoZWlnaHQgb2YgQHRleF9pZAorICogQHN0cmlkZTogc3RyaWRlIG9mIHRoZSBiYWNraW5nIHRleHR1cmUgZGF0YQorICogQHJlc3BlY2lmeTogd2hldGhlciB0byBjb3B5IHRoZSBkYXRhIG9yIGNvcHkgcGVyIHRleGVsCisgKgorICogQ29waWVzIEBnbF9tZW0gaW50byB0aGUgdGV4dHVyZSBzcGVjZmlmaWVkIGJ5IEB0ZXhfaWQuICBUaGUgZm9ybWF0IG9mIEB0ZXhfaWQKKyAqIGlzIHNwZWNpZmllZCBieSBAdGV4X3R5cGUsIEB3aWR0aCBhbmQgQGhlaWdodC4KKyAqCisgKiBJZiBAcmVzcGVjaWZ5IGlzICVUUlVFLCB0aGVuIHRoZSBjb3B5IGlzIHBlcmZvcm1lZCBpbiB0ZXJtcyBvZiB0aGUgdGV4dHVyZQorICogZGF0YS4gIFRoaXMgaXMgdXNlZnVsIGZvciBzcGxpdHRpbmcgUkdCQSB0ZXh0dXJlcyBpbnRvIFJHIG9yIFIgdGV4dHVyZXMgb3IKKyAqIHZpY2UgdmVyc2EuIFRoZSByZXF1aXJlbWVudCBmb3IgdGhpcyB0byBzdWNjZWVkIGlzIHRoYXQgdGhlIGJhY2tpbmcgdGV4dHVyZQorICogZGF0YSBtdXN0IGJlIHRoZSBzYW1lIHNpemUsIGkuZS4gc2F5IGEgUkdCQTggdGV4dHVyZSBpcyBjb252ZXJ0ZWQgaW50byBhIFJHOAorICogdGV4dHVyZSwgdGhlbiB0aGUgUkcgdGV4dHVyZSBtdXN0IGhhdmUgdHdpY2UgYXMgbWFueSBwaXhlbHMgYXZhaWxhYmxlIGZvcgorICogb3V0cHV0IGFzIHRoZSBSR0JBIHRleHR1cmUuCisgKgorICogT3RoZXJ3aXNlLCBpZiBAcmVzcGVjaWZ5IGlzICVGQUxTRSwgdGhlbiB0aGUgY29weSBpcyBwZXJmb3JtZWQgcGVyIHRleGVsCisgKiB1c2luZyBnbENvcHlUZXhJbWFnZS4gIFNlZSB0aGUgT3BlbkdMIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlCisgKiBtYXBwaW5ncyBiZXR3ZWVuIHRleHR1cmUgZm9ybWF0cy4KKyAqCisgKiBSZXR1cm5zOiBXaGV0aGVyIHRoZSBjb3B5IHN1Y2VlZGVkCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmUgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtLCBndWludCB0ZXhfaWQsCisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlLCBnaW50IHdpZHRoLAorICAgIGdpbnQgaGVpZ2h0LCBnaW50IHN0cmlkZSwgZ2Jvb2xlYW4gcmVzcGVjaWZ5KQoreworICBHc3RHTE1lbW9yeVBCT0NvcHlQYXJhbXMgY29weV9wYXJhbXM7CisKKyAgY29weV9wYXJhbXMuc3JjID0gZ2xfbWVtOworICBjb3B5X3BhcmFtcy50ZXhfdGFyZ2V0ID0gdGFyZ2V0OworICBjb3B5X3BhcmFtcy50ZXhfaWQgPSB0ZXhfaWQ7CisgIGNvcHlfcGFyYW1zLm91dF9mb3JtYXQgPSB0ZXhfdHlwZTsKKyAgY29weV9wYXJhbXMub3V0X3dpZHRoID0gd2lkdGg7CisgIGNvcHlfcGFyYW1zLm91dF9oZWlnaHQgPSBoZWlnaHQ7CisgIGNvcHlfcGFyYW1zLm91dF9zdHJpZGUgPSBzdHJpZGU7CisgIGNvcHlfcGFyYW1zLnJlc3BlY2lmeSA9IHJlc3BlY2lmeTsKKworICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChnbF9tZW0tPm1lbS5tZW0uY29udGV4dCwgX2dsX21lbV9jb3B5X3RocmVhZCwKKyAgICAgICZjb3B5X3BhcmFtcyk7CisKKyAgcmV0dXJuIGNvcHlfcGFyYW1zLnJlc3VsdDsKK30KKworc3RhdGljIHZvaWQKK19kb3dubG9hZF90cmFuc2ZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0pCit7CisgIEdzdEdMQmFzZU1lbW9yeSAqbWVtID0gKEdzdEdMQmFzZU1lbW9yeSAqKSBnbF9tZW07CisKKyAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKKyAgaWYgKF9yZWFkX3BpeGVsc190b19wYm8gKGdsX21lbSkpCisgICAgR1NUX0NBVF9UUkFDRSAoR1NUX0NBVF9HTF9NRU1PUlksICJvcHRpbWlzdGljIGRvd25sb2FkIG9mIHRleHR1cmUgJXUgIgorICAgICAgICAidXNpbmcgcGJvICV1IiwgZ2xfbWVtLT5tZW0udGV4X2lkLCBnbF9tZW0tPnBiby0+aWQpOworICBHU1RfTUVNT1JZX0ZMQUdfVU5TRVQgKGdsX21lbSwgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpOworICBnX211dGV4X3VubG9jayAoJm1lbS0+bG9jayk7Cit9CisKKy8qKgorICogZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXI6CisgKiBAZ2xfbWVtOiBhICNHc3RHTE1lbW9yeVBCTworICoKKyAqIFRyYW5zZmVyIHRoZSB0ZXh0dXJlIGRhdGEgZnJvbSB0aGUgdGV4dHVyZSBpbnRvIHRoZSBQQk8gaWYgbmVjZXNzYXJ5LgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX21lbW9yeV9wYm9fZG93bmxvYWRfdHJhbnNmZXIgKEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtKQoreworICBnX3JldHVybl9pZl9mYWlsIChnc3RfaXNfZ2xfbWVtb3J5ICgoR3N0TWVtb3J5ICopIGdsX21lbSkpOworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kb3dubG9hZF90cmFuc2ZlciwgZ2xfbWVtKTsKK30KKworc3RhdGljIHZvaWQKK191cGxvYWRfdHJhbnNmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMTWVtb3J5UEJPICogZ2xfbWVtKQoreworICBHc3RHTEJhc2VNZW1vcnkgKm1lbSA9IChHc3RHTEJhc2VNZW1vcnkgKikgZ2xfbWVtOworICBHc3RNYXBJbmZvIGluZm87CisKKyAgZ19tdXRleF9sb2NrICgmbWVtLT5sb2NrKTsKKyAgZ2xfbWVtLT5wYm8tPnRhcmdldCA9IEdMX1BJWEVMX1VOUEFDS19CVUZGRVI7CisgIGlmICghZ3N0X21lbW9yeV9tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmaW5mbywKKyAgICAgICAgICBHU1RfTUFQX1JFQUQgfCBHU1RfTUFQX0dMKSkgeworICAgIEdTVF9DQVRfV0FSTklORyAoR1NUX0NBVF9HTF9NRU1PUlksICJGYWlsZWQgdG8gbWFwIHBibyBmb3IgcmVhZGluZyIpOworICB9IGVsc2UgeworICAgIGdzdF9tZW1vcnlfdW5tYXAgKEdTVF9NRU1PUllfQ0FTVCAoZ2xfbWVtLT5wYm8pLCAmaW5mbyk7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZtZW0tPmxvY2spOworfQorCisvKioKKyAqIGdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVyOgorICogQGdsX21lbTogYSAjR3N0R0xNZW1vcnlQQk8KKyAqCisgKiBUcmFuc2ZlciB0aGUgdGV4dHVyZSBkYXRhIGZyb20gdGhlIFBCTyBpbnRvIHRoZSB0ZXh0dXJlIGlmIG5lY2Vzc2FyeS4KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK3ZvaWQKK2dzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlciAoR3N0R0xNZW1vcnlQQk8gKiBnbF9tZW0pCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9pc19nbF9tZW1vcnkgKChHc3RNZW1vcnkgKikgZ2xfbWVtKSk7CisKKyAgaWYgKGdsX21lbS0+cGJvICYmIENPTlRFWFRfU1VQUE9SVFNfUEJPX1VQTE9BRCAoZ2xfbWVtLT5tZW0ubWVtLmNvbnRleHQpKQorICAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGdsX21lbS0+bWVtLm1lbS5jb250ZXh0LAorICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3VwbG9hZF90cmFuc2ZlciwgZ2xfbWVtKTsKK30KKworLyoqCisgKiBnc3RfZ2xfbWVtb3J5X3Bib19pbml0OgorICoKKyAqIEluaXRpYWxpemVzIHRoZSBHTCBNZW1vcnkgYWxsb2NhdG9yLiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbgorICogbXVsdGlwbGUgdGltZXMuICBUaGlzIG11c3QgYmUgY2FsbGVkIGJlZm9yZSBhbnkgb3RoZXIgR3N0R0xNZW1vcnlQQk8gb3BlcmF0aW9uLgorICovCit2b2lkCitnc3RfZ2xfbWVtb3J5X3Bib19pbml0X29uY2UgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgZ3N0X2dsX21lbW9yeV9pbml0X29uY2UgKCk7CisKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9HTF9NRU1PUlksICJnbG1lbW9yeSIsIDAsICJPcGVuR0wgTWVtb3J5Iik7CisKKyAgICBfZ2xfYWxsb2NhdG9yID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUiwgTlVMTCk7CisKKyAgICBnc3RfYWxsb2NhdG9yX3JlZ2lzdGVyIChHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRSwKKyAgICAgICAgZ3N0X29iamVjdF9yZWYgKF9nbF9hbGxvY2F0b3IpKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCisvKioKKyAqIGdzdF9pc19nbF9tZW1vcnlfcGJvOgorICogQG1lbTphICNHc3RNZW1vcnkKKyAqIAorICogUmV0dXJuczogd2hldGhlciB0aGUgbWVtb3J5IGF0IEBtZW0gaXMgYSAjR3N0R0xNZW1vcnlQQk8KKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfaXNfZ2xfbWVtb3J5X3BibyAoR3N0TWVtb3J5ICogbWVtKQoreworICByZXR1cm4gbWVtICE9IE5VTEwgJiYgbWVtLT5hbGxvY2F0b3IgIT0gTlVMTAorICAgICAgJiYgZ190eXBlX2lzX2EgKEdfT0JKRUNUX1RZUEUgKG1lbS0+YWxsb2NhdG9yKSwKKyAgICAgIEdTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SKTsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsbWVtb3J5cGJvLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE0MTEwZQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbG1lbW9yeXBiby5oCkBAIC0wLDAgKzEsMTAxIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIgTWF0dGhldyBXYXRlcnMgPHlzdHJlZXQwMEBnbWFpbC5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dTVF9HTF9NRU1PUllfUEJPX0hfCisjZGVmaW5lIF9HU1RfR0xfTUVNT1JZX1BCT19IXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9nc3RhbGxvY2F0b3IuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0bWVtb3J5Lmg+CisjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnkuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X3Bib19hbGxvY2F0b3JfZ2V0X3R5cGUoKSkKK0dUeXBlIGdzdF9nbF9tZW1vcnlfcGJvX2FsbG9jYXRvcl9nZXRfdHlwZSh2b2lkKTsKKworI2RlZmluZSBHU1RfSVNfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1Iob2JqKSAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfSVNfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfQ0xBU1Moa2xhc3MpICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9HRVRfQ0xBU1Mob2JqKSAgICAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SLCBHc3RHTE1lbW9yeVBCT0FsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SLCBHc3RHTE1lbW9yeVBCT0FsbG9jYXRvcikpCisjZGVmaW5lIEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SLCBHc3RHTEFsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX0NBU1Qob2JqKSAgICAgICAgICAgICgoR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3IgKikob2JqKSkKKworLyoqCisgKiBHc3RHTE1lbW9yeVBCTzoKKyAqCisgKiBQcml2YXRlIGluc3RhbmNlCisgKi8KK3N0cnVjdCBfR3N0R0xNZW1vcnlQQk8KK3sKKyAgR3N0R0xNZW1vcnkgICAgICBtZW07CisKKyAgLyogPHByaXZhdGU+ICovCisgIEdzdEdMQnVmZmVyICAgICAgICAgICpwYm87Cit9OworCisvKioKKyAqIEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUjoKKyAqCisgKiBUaGUgbmFtZSBvZiB0aGUgR0wgTWVtb3J5IFBCTyBhbGxvY2F0b3IKKyAqLworI2RlZmluZSBHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRSAgICJHTE1lbW9yeVBCTyIKKwordm9pZCAgICAgICAgICBnc3RfZ2xfbWVtb3J5X3Bib19pbml0X29uY2UgICAgICAgICAgICAgICAodm9pZCk7CitnYm9vbGVhbiAgICAgIGdzdF9pc19nbF9tZW1vcnlfcGJvICAgICAgICAgICAgICAgICAgICAgIChHc3RNZW1vcnkgKiBtZW0pOworCit2b2lkICAgICAgICAgIGdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVyICAgICAgIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSk7Cit2b2lkICAgICAgICAgIGdzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlciAgICAgICAgIChHc3RHTE1lbW9yeVBCTyAqIGdsX21lbSk7CisKK2dib29sZWFuICAgICAgZ3N0X2dsX21lbW9yeV9wYm9fY29weV9pbnRvX3RleHR1cmUgICAgICAgKEdzdEdMTWVtb3J5UEJPICpnbF9tZW0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCB0ZXhfaWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCB3aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBzdHJpZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiByZXNwZWNpZnkpOworCisvKioKKyAqIEdzdEdMQWxsb2NhdG9yCisgKgorICogT3BhcXVlICNHc3RHTEFsbG9jYXRvciBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RHTE1lbW9yeVBCT0FsbG9jYXRvcgoreworICBHc3RHTE1lbW9yeUFsbG9jYXRvciBwYXJlbnQ7Cit9OworCisvKioKKyAqIEdzdEdMQWxsb2NhdG9yQ2xhc3M6CisgKgorICogVGhlICNHc3RHTEFsbG9jYXRvckNsYXNzIG9ubHkgY29udGFpbnMgcHJpdmF0ZSBkYXRhCisgKi8KK3N0cnVjdCBfR3N0R0xNZW1vcnlQQk9BbGxvY2F0b3JDbGFzcworeworICBHc3RHTE1lbW9yeUFsbG9jYXRvckNsYXNzIHBhcmVudF9jbGFzczsKK307CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfR1NUX0dMX01FTU9SWV9QQk9fSF8gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xvdmVybGF5Y29tcG9zaXRvci5jCmluZGV4IDk3YTRhYWIuLmY3ZDA2MzkgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbG92ZXJsYXljb21wb3NpdG9yLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsb3ZlcmxheWNvbXBvc2l0b3IuYwpAQCAtMzQ0LDEyICszNDQsMjcgQEAKICAgdmluZm8uc3RyaWRlWzBdID0gdm1ldGEtPnN0cmlkZVswXTsKIAogICBpZiAoZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoY29tcF9mcmFtZSwgJnZpbmZvLCBjb21wX2J1ZmZlciwgR1NUX01BUF9SRUFEKSkgeworICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisgICAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICptZW1fYWxsb2NhdG9yOworICAgIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOworCisgICAgYWxsb2NhdG9yID0KKyAgICAgICAgR1NUX0FMTE9DQVRPUiAoZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKG92ZXJsYXktPmNvbnRleHQpKTsKKyAgICBtZW1fYWxsb2NhdG9yID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoYWxsb2NhdG9yKTsKKwogICAgIGdzdF9nbF9jb21wb3NpdGlvbl9vdmVybGF5X2FkZF90cmFuc2Zvcm1hdGlvbiAob3ZlcmxheSwgYnVmKTsKIAotICAgIGNvbXBfZ2xfbWVtb3J5ID0KLSAgICAgICAgZ3N0X2dsX21lbW9yeV93cmFwcGVkIChvdmVybGF5LT5jb250ZXh0LCAmY29tcF9mcmFtZS0+aW5mbywgMCwgTlVMTCwKKyAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YSAob3ZlcmxheS0+Y29udGV4dCwKKyAgICAgICAgTlVMTCwgJmNvbXBfZnJhbWUtPmluZm8sIDAsIE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCwKICAgICAgICAgY29tcF9mcmFtZS0+ZGF0YVswXSwgY29tcF9mcmFtZSwgX3ZpZGVvX2ZyYW1lX3VubWFwX2FuZF9mcmVlKTsKIAorICAgIGNvbXBfZ2xfbWVtb3J5ID0KKyAgICAgICAgKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAobWVtX2FsbG9jYXRvciwKKyAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChhbGxvY2F0b3IpOworCiAgICAgb3ZlcmxheV9idWZmZXIgPSBnc3RfYnVmZmVyX25ldyAoKTsKICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKG92ZXJsYXlfYnVmZmVyLCAoR3N0TWVtb3J5ICopIGNvbXBfZ2xfbWVtb3J5KTsKIApAQCAtNDI1LDEyICs0NDAsMjQgQEAKIHsKICAgR3N0R0xPdmVybGF5Q29tcG9zaXRvciAqY29tcG9zaXRvciA9CiAgICAgICAoR3N0R0xPdmVybGF5Q29tcG9zaXRvciAqKSBjb21wb3NpdG9yX3BvaW50ZXI7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCi0gIGlmICghZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjayAoY29tcG9zaXRvci0+c2hhZGVyLAotICAgICAgICAgIGZyYWdtZW50X3NoYWRlciwgJmNvbXBvc2l0b3ItPnBvc2l0aW9uX2F0dHJpYiwKLSAgICAgICAgICAmY29tcG9zaXRvci0+dGV4Y29vcmRfYXR0cmliKSkgewotICAgIEdTVF9FUlJPUiAoImNvdWxkIG5vdCBpbml0aWFsaXplIHNoYWRlci4iKTsKKyAgaWYgKCEoY29tcG9zaXRvci0+c2hhZGVyID0KKyAgICAgICAgICBnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChjb250ZXh0LCAmZXJyb3IsCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoY29udGV4dCksCisgICAgICAgICAgICAgIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoY29udGV4dCwgR0xfRlJBR01FTlRfU0hBREVSLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfVkVSU0lPTl9OT05FLAorICAgICAgICAgICAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyB8IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwKKyAgICAgICAgICAgICAgICAgIGZyYWdtZW50X3NoYWRlciksIE5VTEwpKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNvbXBvc2l0b3IsICJjb3VsZCBub3QgaW5pdGlhbGl6ZSBzaGFkZXI6ICVzIiwKKyAgICAgICAgZXJyb3ItPm1lc3NhZ2UpOworICAgIHJldHVybjsKICAgfQorCisgIGNvbXBvc2l0b3ItPnBvc2l0aW9uX2F0dHJpYiA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKGNvbXBvc2l0b3ItPnNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgY29tcG9zaXRvci0+dGV4Y29vcmRfYXR0cmliID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoY29tcG9zaXRvci0+c2hhZGVyLCAiYV90ZXhjb29yZCIpOwogfQogCiBHc3RHTE92ZXJsYXlDb21wb3NpdG9yICoKQEAgLTQ0MSw4ICs0NjgsNiBAQAogCiAgIGNvbXBvc2l0b3ItPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7CiAKLSAgY29tcG9zaXRvci0+c2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbXBvc2l0b3ItPmNvbnRleHQpOwotCiAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbXBvc2l0b3ItPmNvbnRleHQsCiAgICAgICBnc3RfZ2xfb3ZlcmxheV9jb21wb3NpdG9yX2luaXRfZ2wsIGNvbXBvc2l0b3IpOwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xxdWVyeS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWU2MzM2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuYwpAQCAtMCwwICsxLDI2OCBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE2IE1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKworI2luY2x1ZGUgPHN0cmluZy5oPgorCisjaW5jbHVkZSAiZ3N0Z2xxdWVyeS5oIgorCisjaWZuZGVmIEdMX1RJTUVfRUxBUFNFRAorI2RlZmluZSBHTF9USU1FX0VMQVBTRUQgMHg4OEJGCisjZW5kaWYKKworI2lmbmRlZiBHTF9USU1FU1RBTVAKKyNkZWZpbmUgR0xfVElNRVNUQU1QIDB4OEUyOAorI2VuZGlmCisKKyNpZm5kZWYgR0xfUVVFUllfUkVTVUxUCisjZGVmaW5lIEdMX1FVRVJZX1JFU1VMVCAweDg4NjYKKyNlbmRpZgorCisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfcXVlcnlfZGVidWcKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfREVGQVVMVCk7CisKK3N0YXRpYyB2b2lkCitfaW5pdF9kZWJ1ZyAodm9pZCkKK3sKKyAgc3RhdGljIHZvbGF0aWxlIGdzaXplIF9pbml0ID0gMDsKKworICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZfaW5pdCkpIHsKKyAgICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoR1NUX0NBVF9ERUZBVUxULCAiZ2xxdWVyeSIsIDAsICJnbHF1ZXJ5IGVsZW1lbnQiKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCitzdGF0aWMgY29uc3QgZ2NoYXIgKgorX3F1ZXJ5X3R5cGVfdG9fc3RyaW5nIChndWludCBxdWVyeV90eXBlKQoreworICBzd2l0Y2ggKHF1ZXJ5X3R5cGUpIHsKKyAgICBjYXNlIEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQ6CisgICAgY2FzZSBHTF9USU1FX0VMQVBTRUQ6CisgICAgICByZXR1cm4gInRpbWUgZWxhcHNlZCI7CisgICAgY2FzZSBHTF9USU1FU1RBTVA6CisgICAgY2FzZSBHU1RfR0xfUVVFUllfVElNRVNUQU1QOgorICAgICAgcmV0dXJuICJ0aW1lc3RhbXAiOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gInVua25vd24iOworICB9Cit9CisKK3N0YXRpYyBndWludAorX2dzdF9nbF9xdWVyeV90eXBlX3RvX2dsIChHc3RHTFF1ZXJ5VHlwZSBxdWVyeV90eXBlKQoreworICBpZiAocXVlcnlfdHlwZSA9PSBHU1RfR0xfUVVFUllfVElNRV9FTEFQU0VEKQorICAgIHJldHVybiBHTF9USU1FX0VMQVBTRUQ7CisgIGlmIChxdWVyeV90eXBlID09IEdTVF9HTF9RVUVSWV9USU1FU1RBTVApCisgICAgcmV0dXJuIEdMX1RJTUVTVEFNUDsKKworICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX3F1ZXJ5X3R5cGVfc3VwcG9ydHNfY291bnRlciAoZ3VpbnQgZ2xfcXVlcnlfdHlwZSkKK3sKKyAgcmV0dXJuIGdsX3F1ZXJ5X3R5cGUgPT0gR0xfVElNRVNUQU1QOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19xdWVyeV90eXBlX3N1cHBvcnRzX2JlZ2luX2VuZCAoZ3VpbnQgZ2xfcXVlcnlfdHlwZSkKK3sKKyAgcmV0dXJuIGdsX3F1ZXJ5X3R5cGUgPT0gR0xfVElNRV9FTEFQU0VEOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19jb250ZXh0X3N1cHBvcnRzX3F1ZXJ5X3R5cGUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGd1aW50IGdsX3F1ZXJ5X3R5cGUpCit7CisgIHJldHVybiBnbF9xdWVyeV90eXBlICE9IDAgJiYgY29udGV4dC0+Z2xfdnRhYmxlLT5HZW5RdWVyaWVzICE9IE5VTEw7Cit9CisKK3N0YXRpYyBnY2hhciAqCitfbG9nX3RpbWUgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0R0xRdWVyeSAqcXVlcnkgPSB1c2VyX2RhdGE7CisgIGdpbnQ2NCByZXN1bHQ7CisKKyAgcmVzdWx0ID0gZ3N0X2dsX3F1ZXJ5X3Jlc3VsdCAocXVlcnkpOworCisgIHJldHVybiBnc3RfaW5mb19zdHJkdXBfcHJpbnRmICgiJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTIChyZXN1bHQpKTsKK30KKwordm9pZAorZ3N0X2dsX3F1ZXJ5X2luaXQgKEdzdEdMUXVlcnkgKiBxdWVyeSwgR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RHTFF1ZXJ5VHlwZSBxdWVyeV90eXBlKQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKKworICBnX3JldHVybl9pZl9mYWlsIChxdWVyeSAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpKTsKKyAgZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgbWVtc2V0IChxdWVyeSwgMCwgc2l6ZW9mICgqcXVlcnkpKTsKKworICBfaW5pdF9kZWJ1ZyAoKTsKKworICBxdWVyeS0+Y29udGV4dCA9IGdzdF9vYmplY3RfcmVmIChjb250ZXh0KTsKKyAgcXVlcnktPnF1ZXJ5X3R5cGUgPSBfZ3N0X2dsX3F1ZXJ5X3R5cGVfdG9fZ2wgKHF1ZXJ5X3R5cGUpOworICBxdWVyeS0+c3VwcG9ydGVkID0gX2NvbnRleHRfc3VwcG9ydHNfcXVlcnlfdHlwZSAoY29udGV4dCwgcXVlcnktPnF1ZXJ5X3R5cGUpOworCisgIGlmIChxdWVyeS0+c3VwcG9ydGVkKQorICAgIGdsLT5HZW5RdWVyaWVzICgxLCAmcXVlcnktPnF1ZXJ5X2lkKTsKKworICBnc3RfZ2xfYXN5bmNfZGVidWdfaW5pdCAoJnF1ZXJ5LT5kZWJ1Zyk7CisgIHF1ZXJ5LT5kZWJ1Zy5jYWxsYmFjayA9IF9sb2dfdGltZTsKKyAgcXVlcnktPmRlYnVnLnVzZXJfZGF0YSA9IHF1ZXJ5OworfQorCit2b2lkCitnc3RfZ2xfcXVlcnlfdW5zZXQgKEdzdEdMUXVlcnkgKiBxdWVyeSkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAocXVlcnkgIT0gTlVMTCk7CisgIGlmIChxdWVyeS0+c3RhcnRfY2FsbGVkKQorICAgIGdfY3JpdGljYWwgKCJVbnNldHRpbmcgYSBydW5uaW5nIHF1ZXJ5LiBUaGlzIG1heSBub3QgYmUgd2hhdCB5b3Ugd2FudGVkLiIKKyAgICAgICAgIkJlIHN1cmUgdG8gcGFpciBjYWxscyB0byBnc3RfZ2xfcXVlcnlfc3RhcnQoKSBhbmQgZ3N0X2dsX3F1ZXJ5X2VuZCgpIik7CisKKyAgR1NUX1RSQUNFICgiJXAgdW5zZXR0aW5nIHF1ZXJ5ICV1IiwgcXVlcnksIHF1ZXJ5LT5xdWVyeV9pZCk7CisKKyAgZ2wgPSBxdWVyeS0+Y29udGV4dC0+Z2xfdnRhYmxlOworCisgIC8qIHVuc2V0IHRoZSBkZWJ1ZyBvYmplY3QgYXMgaXQgbWF5IGNhbGxiYWNrIHRvIHByaW50IHRoZSBsYXN0IG1lc3NhZ2UgKi8KKyAgZ3N0X2dsX2FzeW5jX2RlYnVnX3Vuc2V0ICgmcXVlcnktPmRlYnVnKTsKKworICBpZiAocXVlcnktPnF1ZXJ5X2lkKQorICAgIGdsLT5EZWxldGVRdWVyaWVzICgxLCAmcXVlcnktPnF1ZXJ5X2lkKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChxdWVyeS0+Y29udGV4dCk7Cit9CisKK0dzdEdMUXVlcnkgKgorZ3N0X2dsX3F1ZXJ5X25ldyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xRdWVyeVR5cGUgcXVlcnlfdHlwZSkKK3sKKyAgR3N0R0xRdWVyeSAqcXVlcnkgPSBnX25ldzAgKEdzdEdMUXVlcnksIDEpOworCisgIGdzdF9nbF9xdWVyeV9pbml0IChxdWVyeSwgY29udGV4dCwgcXVlcnlfdHlwZSk7CisKKyAgcmV0dXJuIHF1ZXJ5OworfQorCit2b2lkCitnc3RfZ2xfcXVlcnlfZnJlZSAoR3N0R0xRdWVyeSAqIHF1ZXJ5KQoreworICBnX3JldHVybl9pZl9mYWlsIChxdWVyeSAhPSBOVUxMKTsKKworICBnc3RfZ2xfcXVlcnlfdW5zZXQgKHF1ZXJ5KTsKKyAgZ19mcmVlIChxdWVyeSk7Cit9CisKK3ZvaWQKK2dzdF9nbF9xdWVyeV9zdGFydCAoR3N0R0xRdWVyeSAqIHF1ZXJ5KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKKworICBnX3JldHVybl9pZl9mYWlsIChxdWVyeSAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoX3F1ZXJ5X3R5cGVfc3VwcG9ydHNfYmVnaW5fZW5kIChxdWVyeS0+cXVlcnlfdHlwZSkpOworCisgIGlmICghcXVlcnktPnN1cHBvcnRlZCkKKyAgICByZXR1cm47CisKKyAgcXVlcnktPnN0YXJ0X2NhbGxlZCA9IFRSVUU7CisgIGdzdF9nbF9hc3luY19kZWJ1Z19vdXRwdXRfbG9nX21zZyAoJnF1ZXJ5LT5kZWJ1Zyk7CisKKyAgR1NUX1RSQUNFICgiJXAgc3RhcnQgcXVlcnkgdHlwZSBcJyVzXCcgaWQgJXUiLCBxdWVyeSwKKyAgICAgIF9xdWVyeV90eXBlX3RvX3N0cmluZyAocXVlcnktPnF1ZXJ5X3R5cGUpLCBxdWVyeS0+cXVlcnlfaWQpOworCisgIGdsID0gcXVlcnktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ2wtPkJlZ2luUXVlcnkgKHF1ZXJ5LT5xdWVyeV90eXBlLCBxdWVyeS0+cXVlcnlfaWQpOworfQorCit2b2lkCitnc3RfZ2xfcXVlcnlfZW5kIChHc3RHTFF1ZXJ5ICogcXVlcnkpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKHF1ZXJ5ICE9IE5VTEwpOworICBnX3JldHVybl9pZl9mYWlsIChfcXVlcnlfdHlwZV9zdXBwb3J0c19iZWdpbl9lbmQgKHF1ZXJ5LT5xdWVyeV90eXBlKSk7CisKKyAgaWYgKCFxdWVyeS0+c3VwcG9ydGVkKQorICAgIHJldHVybjsKKyAgZ19yZXR1cm5faWZfZmFpbCAocXVlcnktPnN0YXJ0X2NhbGxlZCk7CisKKyAgR1NUX1RSQUNFICgiJXAgZW5kIHF1ZXJ5IHR5cGUgXCclc1wnIGlkICV1IiwgcXVlcnksCisgICAgICBfcXVlcnlfdHlwZV90b19zdHJpbmcgKHF1ZXJ5LT5xdWVyeV90eXBlKSwgcXVlcnktPnF1ZXJ5X2lkKTsKKworICBnbCA9IHF1ZXJ5LT5jb250ZXh0LT5nbF92dGFibGU7CisKKyAgZ2wtPkVuZFF1ZXJ5IChxdWVyeS0+cXVlcnlfdHlwZSk7CisgIHF1ZXJ5LT5zdGFydF9jYWxsZWQgPSBGQUxTRTsKK30KKwordm9pZAorZ3N0X2dsX3F1ZXJ5X2NvdW50ZXIgKEdzdEdMUXVlcnkgKiBxdWVyeSkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAocXVlcnkgIT0gTlVMTCk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKF9xdWVyeV90eXBlX3N1cHBvcnRzX2NvdW50ZXIgKHF1ZXJ5LT5xdWVyeV90eXBlKSk7CisKKyAgaWYgKCFxdWVyeS0+c3VwcG9ydGVkKQorICAgIHJldHVybjsKKworICBHU1RfVFJBQ0UgKCIlcCBxdWVyeSBjb3VudGVyIHR5cGUgXCclc1wnIGlkICV1IiwgcXVlcnksCisgICAgICBfcXVlcnlfdHlwZV90b19zdHJpbmcgKHF1ZXJ5LT5xdWVyeV90eXBlKSwgcXVlcnktPnF1ZXJ5X2lkKTsKKworICBnc3RfZ2xfYXN5bmNfZGVidWdfb3V0cHV0X2xvZ19tc2cgKCZxdWVyeS0+ZGVidWcpOworCisgIGdsID0gcXVlcnktPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ2wtPlF1ZXJ5Q291bnRlciAocXVlcnktPnF1ZXJ5X2lkLCBxdWVyeS0+cXVlcnlfdHlwZSk7Cit9CisKK2d1aW50NjQKK2dzdF9nbF9xdWVyeV9yZXN1bHQgKEdzdEdMUXVlcnkgKiBxdWVyeSkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2w7CisgIGd1aW50NjQgcmV0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChxdWVyeSAhPSBOVUxMLCAwKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKCFxdWVyeS0+c3RhcnRfY2FsbGVkLCAwKTsKKworICBpZiAoIXF1ZXJ5LT5zdXBwb3J0ZWQpCisgICAgcmV0dXJuIDA7CisKKyAgZ2wgPSBxdWVyeS0+Y29udGV4dC0+Z2xfdnRhYmxlOworICBpZiAoZ2wtPkdldFF1ZXJ5T2JqZWN0dWk2NHYpIHsKKyAgICBnbC0+R2V0UXVlcnlPYmplY3R1aTY0diAocXVlcnktPnF1ZXJ5X2lkLCBHTF9RVUVSWV9SRVNVTFQsICZyZXQpOworICB9IGVsc2UgeworICAgIGd1aW50IHRtcDsKKyAgICBnbC0+R2V0UXVlcnlPYmplY3R1aXYgKHF1ZXJ5LT5xdWVyeV9pZCwgR0xfUVVFUllfUkVTVUxULCAmdG1wKTsKKyAgICByZXQgPSB0bXA7CisgIH0KKworICBHU1RfVFJBQ0UgKCIlcCBnZXQgcmVzdWx0ICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiB0eXBlIFwnJXNcJyBpZCAldSIsIHF1ZXJ5LAorICAgICAgcmV0LCBfcXVlcnlfdHlwZV90b19zdHJpbmcgKHF1ZXJ5LT5xdWVyeV90eXBlKSwgcXVlcnktPnF1ZXJ5X2lkKTsKKworICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdscXVlcnkuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHF1ZXJ5LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNmMDZmYQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHF1ZXJ5LmgKQEAgLTAsMCArMSwxNDAgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9HTF9RVUVSWV9IX18KKyNkZWZpbmUgX19HU1RfR0xfUVVFUllfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xfZndkLmg+CisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9HTF9RVUVSWV9OT05FLAorICBHU1RfR0xfUVVFUllfVElNRV9FTEFQU0VELAorICBHU1RfR0xfUVVFUllfVElNRVNUQU1QLAorfSBHc3RHTFF1ZXJ5VHlwZTsKKworc3RydWN0IF9Hc3RHTFF1ZXJ5Cit7CisgIC8qIDxwcml2YXRlPiAqLworICBHc3RHTENvbnRleHQgKiAgICBjb250ZXh0OworICBndWludCAgICAgICAgICAgICBxdWVyeV90eXBlOworICBndWludCAgICAgICAgICAgICBxdWVyeV9pZDsKKyAgZ2Jvb2xlYW4gICAgICAgICAgc3VwcG9ydGVkOworCisgIGdib29sZWFuICAgICAgICAgIHN0YXJ0X2NhbGxlZDsKKyAgR3N0R0xBc3luY0RlYnVnICAgZGVidWc7Cit9OworCit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9xdWVyeV9pbml0ICAgICAgICAgICAgICAgKEdzdEdMUXVlcnkgKiBxdWVyeSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xRdWVyeVR5cGUgcXVlcnlfdHlwZSk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9xdWVyeV91bnNldCAgICAgICAgICAgICAgKEdzdEdMUXVlcnkgKiBxdWVyeSk7CitHc3RHTFF1ZXJ5ICogICAgICAgIGdzdF9nbF9xdWVyeV9uZXcgICAgICAgICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMUXVlcnlUeXBlIHF1ZXJ5X3R5cGUpOwordm9pZCAgICAgICAgICAgICAgICBnc3RfZ2xfcXVlcnlfZnJlZSAgICAgICAgICAgICAgIChHc3RHTFF1ZXJ5ICogcXVlcnkpOworCit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9xdWVyeV9zdGFydCAgICAgICAgICAgICAgKEdzdEdMUXVlcnkgKiBxdWVyeSk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9xdWVyeV9lbmQgICAgICAgICAgICAgICAgKEdzdEdMUXVlcnkgKiBxdWVyeSk7Cit2b2lkICAgICAgICAgICAgICAgIGdzdF9nbF9xdWVyeV9jb3VudGVyICAgICAgICAgICAgKEdzdEdMUXVlcnkgKiBxdWVyeSk7CitndWludDY0ICAgICAgICAgICAgIGdzdF9nbF9xdWVyeV9yZXN1bHQgICAgICAgICAgICAgKEdzdEdMUXVlcnkgKiBxdWVyeSk7CisKKyNkZWZpbmUgZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZ192YWxpc3QocXVlcnksY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsdmFyYXJncykgXAorICBHX1NUTVRfU1RBUlQgeyAgICBcCisgICAgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0dfdmFsaXN0ICgmKHF1ZXJ5KS0+ZGVidWcsIGNhdCwgbGV2ZWwsIG9iamVjdCwgZm9ybWF0LCB2YXJhcmdzKTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemUgKCYocXVlcnkpLT5kZWJ1Zyk7IFwKKyAgICBnc3RfZ2xfcXVlcnlfc3RhcnQgKHF1ZXJ5KTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z190aGF3ICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgIH0gR19TVE1UX0VORAorCisjZGVmaW5lIGdzdF9nbF9xdWVyeV9jb3VudGVyX2xvZ192YWxpc3QocXVlcnksY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsdmFyYXJncykgXAorICBHX1NUTVRfU1RBUlQgeyAgICBcCisgICAgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0dfdmFsaXN0ICgmKHF1ZXJ5KS0+ZGVidWcsIGNhdCwgbGV2ZWwsIG9iamVjdCwgZm9ybWF0LCB2YXJhcmdzKTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemUgKCYocXVlcnkpLT5kZWJ1Zyk7IFwKKyAgICBnc3RfZ2xfcXVlcnlfY291bnRlciAocXVlcnkpOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX3RoYXcgKCYocXVlcnkpLT5kZWJ1Zyk7IFwKKyAgfSBHX1NUTVRfRU5ECisKKyNpZiBHX0hBVkVfSVNPX1ZBUkFSR1MKKworI2RlZmluZSBnc3RfZ2xfcXVlcnlfc3RhcnRfbG9nKHF1ZXJ5LGNhdCxsZXZlbCxvYmplY3QsZm9ybWF0LC4uLikgXAorICBHX1NUTVRfU1RBUlQgeyAgICBcCisgICAgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0cgKCYocXVlcnkpLT5kZWJ1ZywgY2F0LCBsZXZlbCwgb2JqZWN0LCBmb3JtYXQsIF9fVkFfQVJHU19fKTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z19mcmVlemUgKCYocXVlcnkpLT5kZWJ1Zyk7IFwKKyAgICBnc3RfZ2xfcXVlcnlfc3RhcnQgKHF1ZXJ5KTsgXAorICAgIGdzdF9nbF9hc3luY19kZWJ1Z190aGF3ICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgIH0gR19TVE1UX0VORAorI2RlZmluZSBnc3RfZ2xfcXVlcnlfY291bnRlcl9sb2cocXVlcnksY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsLi4uKSBcCisgIEdfU1RNVF9TVEFSVCB7ICAgIFwKKyAgICBHU1RfR0xfQVNZTkNfQ0FUX0xFVkVMX0xPRyAoJihxdWVyeSktPmRlYnVnLCBjYXQsIGxldmVsLCBvYmplY3QsIGZvcm1hdCwgX19WQV9BUkdTX18pOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSAoJihxdWVyeSktPmRlYnVnKTsgXAorICAgIGdzdF9nbF9xdWVyeV9jb3VudGVyIChxdWVyeSk7IFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfdGhhdyAoJihxdWVyeSktPmRlYnVnKTsgXAorICB9IEdfU1RNVF9FTkQKKworI2Vsc2UgLyogR19IQVZFX0lTT19WQVJBUkdTICovCisjaWYgR19IQVZFX0dOVUNfVkFSQVJHUworCisjZGVmaW5lIGdzdF9nbF9xdWVyeV9zdGFydF9sb2cocXVlcnksY2F0LGxldmVsLG9iamVjdCxmb3JtYXQsYXJncy4uLikgXAorICBHX1NUTVRfU1RBUlQgeyAgICBcCisgICAgR1NUX0dMX0FTWU5DX0NBVF9MRVZFTF9MT0cgKCYocXVlcnkpLT5kZWJ1ZywgY2F0LCBsZXZlbCwgb2JqZWN0LCBmb3JtYXQsICMjYXJncyk7IFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfZnJlZXplICgmKHF1ZXJ5KS0+ZGVidWcpOyBcCisgICAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0IChxdWVyeSk7IFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfdGhhdyAoJihxdWVyeSktPmRlYnVnKTsgXAorICB9IEdfU1RNVF9FTkQKKyNkZWZpbmUgZ3N0X2dsX3F1ZXJ5X2NvdW50ZXJfbG9nKHF1ZXJ5LGNhdCxsZXZlbCxvYmplY3QsZm9ybWF0LGFyZ3MuLi4pIFwKKyAgR19TVE1UX1NUQVJUIHsgICAgXAorICAgIEdTVF9HTF9BU1lOQ19DQVRfTEVWRUxfTE9HICgmKHF1ZXJ5KS0+ZGVidWcsIGNhdCwgbGV2ZWwsIG9iamVjdCwgZm9ybWF0LCAjI2FyZ3MpOyBcCisgICAgZ3N0X2dsX2FzeW5jX2RlYnVnX2ZyZWV6ZSAoJihxdWVyeSktPmRlYnVnKTsgXAorICAgIGdzdF9nbF9xdWVyeV9jb3VudGVyIChxdWVyeSk7IFwKKyAgICBnc3RfZ2xfYXN5bmNfZGVidWdfdGhhdyAoJihxdWVyeSktPmRlYnVnKTsgXAorICB9IEdfU1RNVF9FTkQKKworI2Vsc2UgLyogR19IQVZFX0dOVUNfVkFSQVJHUyAqLworCitzdGF0aWMgaW5saW5lIHZvaWQKK2dzdF9nbF9xdWVyeV9zdGFydF9sb2coR3N0R0xRdWVyeSAqIHF1ZXJ5LCBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0LAorICAgIEdzdERlYnVnTGV2ZWwgbGV2ZWwsIEdPYmplY3QgKiBvYmplY3QsIGNvbnN0IGdjaGFyICogZm9ybWF0LCAuLi4pCit7CisgIHZhX2xpc3QgdmFyYXJnczsKKworICB2YV9zdGFydCAodmFyYXJncywgZm9ybWF0KTsKKyAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZ192YWxpc3QgKHF1ZXJ5LCBjYXQsIGxldmVsLCBvYmplY3QsIGZvcm1hdCwgdmFyYXJncyk7CisgIHZhX2VuZCAodmFyYXJncyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdm9pZAorZ3N0X2dsX3F1ZXJ5X2NvdW50ZXJfbG9nKEdzdEdMUXVlcnkgKiBxdWVyeSwgR3N0RGVidWdDYXRlZ29yeSAqIGNhdCwKKyAgICBHc3REZWJ1Z0xldmVsIGxldmVsLCBHT2JqZWN0ICogb2JqZWN0LCBjb25zdCBnY2hhciAqIGZvcm1hdCwgLi4uKQoreworICB2YV9saXN0IHZhcmFyZ3M7CisKKyAgdmFfc3RhcnQgKHZhcmFyZ3MsIGZvcm1hdCk7CisgIGdzdF9nbF9xdWVyeV9jb3VudGVyX2xvZ192YWxpc3QgKHF1ZXJ5LCBjYXQsIGxldmVsLCBvYmplY3QsIGZvcm1hdCwgdmFyYXJncyk7CisgIHZhX2VuZCAodmFyYXJncyk7Cit9CisKKyNlbmRpZiAvKiBHX0hBVkVfR05VQ19WQVJBUkdTICovCisjZW5kaWYgLyogR19IQVZFX0lTT19WQVJBUkdTICovCisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9HTF9RVUVSWV9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmMKaW5kZXggYTQxYmYzOC4uOWQ5Njc4NCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVyLmMKQEAgLTI1LDM4ICsyNSwxNCBAQAogCiAjaW5jbHVkZSAiZ2wuaCIKICNpbmNsdWRlICJnc3RnbHNoYWRlci5oIgorI2luY2x1ZGUgImdzdGdsc2xfcHJpdmF0ZS5oIgogCi0vKiBGSVhNRTogc2VwYXJhdGUgaW50byBzZXBhcmF0ZSBzaGFkZXIgc3RhZ2Ugb2JqZWN0cyB0aGF0IGNhbiBiZSBhZGRlZC9yZW1vdmVkCi0gKiBpbmRlcGVuZGVudGx5IG9mIHRoZSBzaGFkZXIgcHJvZ3JhbSAqLworLyoqCisgKiBTRUNUSU9OOmdzdGdsc2hhZGVyCisgKiBAc2hvcnRfZGVzY3JpcHRpb246IG9iamVjdCByZXByZXNlbnRpbmcgYW4gT3BlbkdMIHNoYWRlciBwcm9ncmFtCisgKiBAc2VlX2Fsc286ICNHc3RHTFNMU3RhZ2UKKyAqLwogCi1zdGF0aWMgY29uc3QgZ2NoYXIgKmVzMl92ZXJzaW9uX2hlYWRlciA9ICIjdmVyc2lvbiAxMDBcbiI7Ci0KLS8qICpJTkRFTlQtT0ZGKiAqLwotc3RhdGljIGNvbnN0IGdjaGFyICpzaW1wbGVfdmVydGV4X3NoYWRlcl9zdHJfZ2xlczIgPQotICAgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4iCi0gICAgICAiYXR0cmlidXRlIHZlYzIgYV90ZXhjb29yZDtcbiIKLSAgICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKLSAgICAgICJ2b2lkIG1haW4oKVxuIgotICAgICAgIntcbiIKLSAgICAgICIgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4iCi0gICAgICAiICAgdl90ZXhjb29yZCA9IGFfdGV4Y29vcmQ7XG4iCi0gICAgICAifVxuIjsKLQotc3RhdGljIGNvbnN0IGdjaGFyICpzaW1wbGVfZnJhZ21lbnRfc2hhZGVyX3N0cl9nbGVzMiA9Ci0gICAgICAiI2lmZGVmIEdMX0VTXG4iCi0gICAgICAicHJlY2lzaW9uIG1lZGl1bXAgZmxvYXQ7XG4iCi0gICAgICAiI2VuZGlmXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCi0gICAgICAidW5pZm9ybSBzYW1wbGVyMkQgdGV4O1xuIgotICAgICAgInZvaWQgbWFpbigpXG4iCi0gICAgICAie1xuIgotICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKHRleCwgdl90ZXhjb29yZCk7XG4iCi0gICAgICAifSI7Ci0vKiAqSU5ERU5ULU9OKiAqLwotCi0jaWZuZGVmIEdMX0NPTVBJTEVfU1RBVFVTCi0jZGVmaW5lIEdMX0NPTVBJTEVfU1RBVFVTICAgICAgICAgICAgIDB4OEI4MQotI2VuZGlmCiAjaWZuZGVmIEdMaGFuZGxlQVJCCiAjZGVmaW5lIEdMaGFuZGxlQVJCIEdMdWludAogI2VuZGlmCkBAIC05NCwyNyArNzAsMTggQEAKIGVudW0KIHsKICAgUFJPUF8wLAotICBQUk9QX1ZFUlRFWF9TUkMsCi0gIFBST1BfRlJBR01FTlRfU1JDLAotICBQUk9QX0NPTVBJTEVELAotICBQUk9QX0FDVElWRSAgICAgICAgICAgICAgICAgICAvKiB1bnVzZWQgKi8KKyAgUFJPUF9MSU5LRUQsCiB9OwogCiBzdHJ1Y3QgX0dzdEdMU2hhZGVyUHJpdmF0ZQogewotICBnY2hhciAqdmVydGV4X3NyYzsKLSAgZ2NoYXIgKmZyYWdtZW50X3NyYzsKLQotICBHTGhhbmRsZUFSQiB2ZXJ0ZXhfaGFuZGxlOwotICBHTGhhbmRsZUFSQiBmcmFnbWVudF9oYW5kbGU7CiAgIEdMaGFuZGxlQVJCIHByb2dyYW1faGFuZGxlOworICBHTGlzdCAqc3RhZ2VzOwogCi0gIGdib29sZWFuIGNvbXBpbGVkOwotICBnYm9vbGVhbiBhY3RpdmU7CisgIGdib29sZWFuIGxpbmtlZDsKKyAgR0hhc2hUYWJsZSAqdW5pZm9ybV9sb2NhdGlvbnM7CiAKLSAgR3N0R0xBUEkgZ2xfYXBpOwotCi0gIEdzdEdMU2hhZGVyVlRhYmxlIHZ0YWJsZTsKKyAgR3N0R0xTTEZ1bmNzIHZ0YWJsZTsKIH07CiAKIEdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9nbF9zaGFkZXJfZGVidWcpOwpAQCAtMTMwLDIxICs5NywyMSBAQAogewogICBHc3RHTFNoYWRlclByaXZhdGUgKnByaXYgPSBzaGFkZXItPnByaXY7CiAKKyAgR1NUX09CSkVDVF9MT0NLIChzaGFkZXIpOworCiAgIC8qIHJlbGVhc2Ugc2hhZGVyIG9iamVjdHMgKi8KLSAgZ3N0X2dsX3NoYWRlcl9yZWxlYXNlIChzaGFkZXIpOworICBnc3RfZ2xfc2hhZGVyX3JlbGVhc2VfdW5sb2NrZWQgKHNoYWRlcik7CiAKICAgLyogZGVsZXRlIHByb2dyYW0gKi8KICAgaWYgKHByaXYtPnByb2dyYW1faGFuZGxlKSB7CiAgICAgR1NUX1RSQUNFICgiZmluYWxpemluZyBwcm9ncmFtIHNoYWRlciAldSIsIHByaXYtPnByb2dyYW1faGFuZGxlKTsKIAogICAgIHByaXYtPnZ0YWJsZS5EZWxldGVQcm9ncmFtIChwcml2LT5wcm9ncmFtX2hhbmRsZSk7Ci0gICAgLyogZXJyID0gZ2xHZXRFcnJvciAoKTsgKi8KLSAgICAvKiBHU1RfV0FSTklORyAoImVycm9yOiAweCV4IiwgZXJyKTsgICovCi0gICAgLyogZ2xHZXRPYmplY3RQYXJhbWV0ZXJpdihwcml2LT5wcm9ncmFtX2hhbmRsZSwgR0xfT0JKRUNUX0RFTEVURV9TVEFUVVNfLCAmc3RhdHVzKTsgKi8KLSAgICAvKiBHU1RfSU5GTyAoInByb2dyYW0gZGVsZXRpb24gc3RhdHVzOiVzIiwgc3RhdHVzID09IEdMX1RSVUUgPyAidHJ1ZSIgOiAiZmFsc2UiICk7ICovCiAgIH0KIAogICBHU1RfREVCVUcgKCJzaGFkZXIgZGVsZXRlZCAldSIsIHByaXYtPnByb2dyYW1faGFuZGxlKTsKKworICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE1OCwxNSArMTI1LDExIEBACiAKICAgR1NUX1RSQUNFX09CSkVDVCAoc2hhZGVyLCAiZmluYWxpemluZyBzaGFkZXIgJXUiLCBwcml2LT5wcm9ncmFtX2hhbmRsZSk7CiAKLSAgZ19mcmVlIChwcml2LT52ZXJ0ZXhfc3JjKTsKLSAgZ19mcmVlIChwcml2LT5mcmFnbWVudF9zcmMpOwotCiAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKHNoYWRlci0+Y29udGV4dCwKICAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfY2xlYW51cF9zaGFkZXIsIHNoYWRlcik7CiAKLSAgcHJpdi0+ZnJhZ21lbnRfaGFuZGxlID0gMDsKLSAgcHJpdi0+dmVydGV4X2hhbmRsZSA9IDA7CiAgIHByaXYtPnByb2dyYW1faGFuZGxlID0gMDsKKyAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kgKHByaXYtPnVuaWZvcm1fbG9jYXRpb25zKTsKIAogICBpZiAoc2hhZGVyLT5jb250ZXh0KSB7CiAgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyLT5jb250ZXh0KTsKQEAgLTE4MCwxNSArMTQzLDcgQEAKIGdzdF9nbF9zaGFkZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAogICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCiB7Ci0gIEdzdEdMU2hhZGVyICpzaGFkZXIgPSBHU1RfR0xfU0hBREVSIChvYmplY3QpOwotCiAgIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9WRVJURVhfU1JDOgotICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZSAoc2hhZGVyLCBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfRlJBR01FTlRfU1JDOgotICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlIChzaGFkZXIsIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKLSAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CkBAIC0yMDMsMjcgKzE1OCwxMyBAQAogICBHc3RHTFNoYWRlclByaXZhdGUgKnByaXYgPSBzaGFkZXItPnByaXY7CiAKICAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1ZFUlRFWF9TUkM6Ci0gICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBwcml2LT52ZXJ0ZXhfc3JjKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9GUkFHTUVOVF9TUkM6Ci0gICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBwcml2LT5mcmFnbWVudF9zcmMpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTVBJTEVEOgotICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHByaXYtPmNvbXBpbGVkKTsKKyAgICBjYXNlIFBST1BfTElOS0VEOgorICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHByaXYtPmxpbmtlZCk7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKICAgICAgIGJyZWFrOwogICB9Ci0KLX0KLQotaW50Ci1nc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCi17Ci0gIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdiA9IHNoYWRlci0+cHJpdjsKLSAgcmV0dXJuIChpbnQpIHByaXYtPnByb2dyYW1faGFuZGxlOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMjM5LDgyICsxODAsMTQgQEAKICAgb2JqX2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfZ2xfc2hhZGVyX2dldF9wcm9wZXJ0eTsKIAogICAvKiAuLiBhbmQgaW5zdGFsbCBwcm9wZXJ0aWVzICovCi0KICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2JqX2NsYXNzLAotICAgICAgUFJPUF9WRVJURVhfU1JDLAotICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoInZlcnRleC1zcmMiLAotICAgICAgICAgICJWZXJ0ZXggU291cmNlIiwKLSAgICAgICAgICAiR0xTTCBWZXJ0ZXggU2hhZGVyIHNvdXJjZSBjb2RlIiwgTlVMTCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAob2JqX2NsYXNzLAotICAgICAgUFJPUF9GUkFHTUVOVF9TUkMsCi0gICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgiZnJhZ21lbnQtc3JjIiwKLSAgICAgICAgICAiRnJhZ21lbnQgU291cmNlIiwKLSAgICAgICAgICAiR0xTTCBGcmFnbWVudCBTaGFkZXIgc291cmNlIGNvZGUiLCBOVUxMLAotICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChvYmpfY2xhc3MsCi0gICAgICBQUk9QX0FDVElWRSwKLSAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJhY3RpdmUiLAotICAgICAgICAgICJBY3RpdmUiLCAiRW5hYmxlL0Rpc2FibGUgdGhlIHNoYWRlciIsIE5VTEwsCi0gICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKG9ial9jbGFzcywKLSAgICAgIFBST1BfQ09NUElMRUQsCi0gICAgICBnX3BhcmFtX3NwZWNfYm9vbGVhbiAoImNvbXBpbGVkIiwKLSAgICAgICAgICAiQ29tcGlsZWQiLAotICAgICAgICAgICJTaGFkZXIgY29tcGlsZSBhbmQgbGluayBzdGF0dXMiLCBGQUxTRSwKKyAgICAgIFBST1BfTElOS0VELAorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJsaW5rZWQiLAorICAgICAgICAgICJMaW5rZWQiLAorICAgICAgICAgICJTaGFkZXIgbGluayBzdGF0dXMiLCBGQUxTRSwKICAgICAgICAgICBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOwogfQogCi12b2lkCi1nc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlIChHc3RHTFNoYWRlciAqIHNoYWRlciwgY29uc3QgZ2NoYXIgKiBzcmMpCi17Ci0gIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdjsKLQotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfU0hBREVSIChzaGFkZXIpKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAoc3JjICE9IE5VTEwpOwotCi0gIHByaXYgPSBzaGFkZXItPnByaXY7Ci0KLSAgaWYgKGdzdF9nbF9zaGFkZXJfaXNfY29tcGlsZWQgKHNoYWRlcikpCi0gICAgZ3N0X2dsX3NoYWRlcl9yZWxlYXNlIChzaGFkZXIpOwotCi0gIGdfZnJlZSAocHJpdi0+dmVydGV4X3NyYyk7Ci0KLSAgcHJpdi0+dmVydGV4X3NyYyA9IGdfc3RyZHVwIChzcmMpOwotfQotCi12b2lkCi1nc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBjb25zdCBnY2hhciAqIHNyYykKLXsKLSAgR3N0R0xTaGFkZXJQcml2YXRlICpwcml2OwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19TSEFERVIgKHNoYWRlcikpOwotICBnX3JldHVybl9pZl9mYWlsIChzcmMgIT0gTlVMTCk7Ci0KLSAgcHJpdiA9IHNoYWRlci0+cHJpdjsKLQotICBpZiAoZ3N0X2dsX3NoYWRlcl9pc19jb21waWxlZCAoc2hhZGVyKSkKLSAgICBnc3RfZ2xfc2hhZGVyX3JlbGVhc2UgKHNoYWRlcik7Ci0KLSAgZ19mcmVlIChwcml2LT5mcmFnbWVudF9zcmMpOwotCi0gIHByaXYtPmZyYWdtZW50X3NyYyA9IGdfc3RyZHVwIChzcmMpOwotfQotCi1jb25zdCBnY2hhciAqCi1nc3RfZ2xfc2hhZGVyX2dldF92ZXJ0ZXhfc291cmNlIChHc3RHTFNoYWRlciAqIHNoYWRlcikKLXsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9HTF9JU19TSEFERVIgKHNoYWRlciksIE5VTEwpOwotICByZXR1cm4gc2hhZGVyLT5wcml2LT52ZXJ0ZXhfc3JjOwotfQotCi1jb25zdCBnY2hhciAqCi1nc3RfZ2xfc2hhZGVyX2dldF9mcmFnbWVudF9zb3VyY2UgKEdzdEdMU2hhZGVyICogc2hhZGVyKQotewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX1NIQURFUiAoc2hhZGVyKSwgTlVMTCk7Ci0gIHJldHVybiBzaGFkZXItPnByaXYtPmZyYWdtZW50X3NyYzsKLX0KLQogc3RhdGljIHZvaWQKIGdzdF9nbF9zaGFkZXJfaW5pdCAoR3N0R0xTaGFkZXIgKiBzZWxmKQogewpAQCAtMzIzLDI2OCArMTk2LDQ5MCBAQAogCiAgIHByaXYgPSBzZWxmLT5wcml2ID0gR1NUX0dMX1NIQURFUl9HRVRfUFJJVkFURSAoc2VsZik7CiAKLSAgcHJpdi0+dmVydGV4X3NyYyA9IE5VTEw7Ci0gIHByaXYtPmZyYWdtZW50X3NyYyA9IE5VTEw7CisgIHByaXYtPmxpbmtlZCA9IEZBTFNFOworICBwcml2LT51bmlmb3JtX2xvY2F0aW9ucyA9CisgICAgICBnX2hhc2hfdGFibGVfbmV3X2Z1bGwgKGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLCBnX2ZyZWUsIE5VTEwpOworfQogCi0gIHByaXYtPmZyYWdtZW50X2hhbmRsZSA9IDA7Ci0gIHByaXYtPnZlcnRleF9oYW5kbGUgPSAwOworc3RhdGljIGludAorX2dldF91bmlmb3JtX2xvY2F0aW9uIChHc3RHTFNoYWRlciAqIHNoYWRlciwgY29uc3QgZ2NoYXIgKiBuYW1lKQoreworICBHc3RHTFNoYWRlclByaXZhdGUgKnByaXYgPSBzaGFkZXItPnByaXY7CisgIGludCBsb2NhdGlvbjsKKyAgZ3BvaW50ZXIgdmFsdWU7CiAKLSAgcHJpdi0+Y29tcGlsZWQgPSBGQUxTRTsKLSAgcHJpdi0+YWN0aXZlID0gRkFMU0U7ICAgICAgICAgLyogdW51c2VkIGF0IHRoZSBtb21lbnQgKi8KKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHByaXYtPmxpbmtlZCwgMCk7CiAKLSAgLyogRklYTUU6IGFkZCBBUEkgdG8gZ2V0L3NldCB0aGlzIGZvciBlYWNoIHNoYWRlciAqLwotICBwcml2LT5nbF9hcGkgPSBHU1RfR0xfQVBJX0FOWTsKKyAgaWYgKCFnX2hhc2hfdGFibGVfbG9va3VwX2V4dGVuZGVkIChwcml2LT51bmlmb3JtX2xvY2F0aW9ucywgbmFtZSwgTlVMTCwKKyAgICAgICAgICAmdmFsdWUpKSB7CisgICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwcml2LT51bmlmb3JtX2xvY2F0aW9ucywgZ19zdHJkdXAgKG5hbWUpLAorICAgICAgICBHSU5UX1RPX1BPSU5URVIgKGxvY2F0aW9uKSk7CisgIH0gZWxzZSB7CisgICAgbG9jYXRpb24gPSBHUE9JTlRFUl9UT19JTlQgKHZhbHVlKTsKKyAgfQorCisgIHJldHVybiBsb2NhdGlvbjsKK30KKworc3RhdGljIEdzdEdMU2hhZGVyICoKK19uZXdfd2l0aF9zdGFnZXNfdmFfbGlzdCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR0Vycm9yICoqIGVycm9yLAorICAgIHZhX2xpc3QgdmFyYXJncykKK3sKKyAgR3N0R0xTaGFkZXIgKnNoYWRlcjsKKyAgR3N0R0xTTFN0YWdlICpzdGFnZTsKKyAgZ2Jvb2xlYW4gdG9fdW5yZWZfYW5kX291dCA9IEZBTFNFOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOworCisgIHNoYWRlciA9IGdfb2JqZWN0X25ldyAoR1NUX0dMX1RZUEVfU0hBREVSLCBOVUxMKTsKKyAgc2hhZGVyLT5jb250ZXh0ID0gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQpOworCisgIHdoaWxlICgoc3RhZ2UgPSB2YV9hcmcgKHZhcmFyZ3MsIEdzdEdMU0xTdGFnZSAqKSkpIHsKKyAgICBpZiAodG9fdW5yZWZfYW5kX291dCkgeworICAgICAgZ3N0X29iamVjdF91bnJlZiAoc3RhZ2UpOworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgaWYgKCFnc3RfZ2xzbF9zdGFnZV9jb21waWxlIChzdGFnZSwgZXJyb3IpKSB7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7CisgICAgICB0b191bnJlZl9hbmRfb3V0ID0gVFJVRTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgICBpZiAoIWdzdF9nbF9zaGFkZXJfYXR0YWNoIChzaGFkZXIsIHN0YWdlKSkgeworICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xTTF9FUlJPUiwgR1NUX0dMU0xfRVJST1JfUFJPR1JBTSwKKyAgICAgICAgICAiRmFpbGVkIHRvIGF0dGFjaCBzdGFnZSB0byBwcm9ncmFtIik7CisgICAgICB0b191bnJlZl9hbmRfb3V0ID0gVFJVRTsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKyAgfQorCisgIGlmICh0b191bnJlZl9hbmRfb3V0KSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBzaGFkZXI7Cit9CisKKy8qKgorICogZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlczoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEBlcnJvcjogYSAjR0Vycm9yCisgKiBALi4uOiBhIE5VTEwgdGVybWluYXRlZCBsaXN0IG9mICNHc3RHTFNMU3RhZ2UncworICoKKyAqIEVhY2ggc3RhZ2Ugd2lsbCBhdHRlbXB0IHRvIGJlIGNvbXBpbGVkIGFuZCBhdHRhY2hlZCB0byBAc2hhZGVyLiAgVGhlbgorICogdGhlIHNoYWRlciB3aWxsIGJlIGxpbmtlZC4gT24gZXJyb3IsICVOVUxMIHdpbGwgYmUgcmV0dXJuZWQgYW5kIEBlcnJvciB3aWxsCisgKiBjb250YWluIHRoZSBkZXRhaWxzIG9mIHRoZSBlcnJvci4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyBAc2hhZGVyIHdpdGggdGhlIHNwZWNpZmllZCBzdGFnZXMuCisgKgorICogU2luY2U6IDEuOAorICovCitHc3RHTFNoYWRlciAqCitnc3RfZ2xfc2hhZGVyX25ld19saW5rX3dpdGhfc3RhZ2VzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHRXJyb3IgKiogZXJyb3IsCisgICAgLi4uKQoreworICBHc3RHTFNoYWRlciAqc2hhZGVyOworICB2YV9saXN0IHZhcmFyZ3M7CisKKyAgdmFfc3RhcnQgKHZhcmFyZ3MsIGVycm9yKTsKKyAgc2hhZGVyID0gX25ld193aXRoX3N0YWdlc192YV9saXN0IChjb250ZXh0LCBlcnJvciwgdmFyYXJncyk7CisgIHZhX2VuZCAodmFyYXJncyk7CisKKyAgaWYgKCFzaGFkZXIpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKCFnc3RfZ2xfc2hhZGVyX2xpbmsgKHNoYWRlciwgZXJyb3IpKQorICAgIHJldHVybiBOVUxMOworCisgIHJldHVybiBzaGFkZXI7Cit9CisKKy8qKgorICogZ3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXM6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAZXJyb3I6IGEgI0dFcnJvcgorICogQC4uLjogYSBOVUxMIHRlcm1pbmF0ZWQgbGlzdCBvZiAjR3N0R0xTTFN0YWdlJ3MKKyAqCisgKiBFYWNoIHN0YWdlIHdpbGwgYXR0ZW1wdCB0byBiZSBjb21waWxlZCBhbmQgYXR0YWNoZWQgdG8gQHNoYWRlci4gIE9uIGVycm9yLAorICogJU5VTEwgd2lsbCBiZSByZXR1cm5lZCBhbmQgQGVycm9yIHdpbGwgY29udGFpbiB0aGUgZGV0YWlscyBvZiB0aGUgZXJyb3IuCisgKgorICogTm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZAorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgQHNoYWRlciB3aXRoIHRoZSBzcGVjaWZpZWQgc3RhZ2VzLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0R0xTaGFkZXIgKgorZ3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXMgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdFcnJvciAqKiBlcnJvciwgLi4uKQoreworICBHc3RHTFNoYWRlciAqc2hhZGVyOworICB2YV9saXN0IHZhcmFyZ3M7CisKKyAgdmFfc3RhcnQgKHZhcmFyZ3MsIGVycm9yKTsKKyAgc2hhZGVyID0gX25ld193aXRoX3N0YWdlc192YV9saXN0IChjb250ZXh0LCBlcnJvciwgdmFyYXJncyk7CisgIHZhX2VuZCAodmFyYXJncyk7CisKKyAgcmV0dXJuIHNoYWRlcjsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX25ldzoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyBlbXB0eSBAc2hhZGVyCisgKi8KK0dzdEdMU2hhZGVyICoKK2dzdF9nbF9zaGFkZXJfbmV3IChHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICByZXR1cm4gZ3N0X2dsX3NoYWRlcl9uZXdfd2l0aF9zdGFnZXMgKGNvbnRleHQsIE5VTEwsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9nbF9zaGFkZXJfbmV3X2RlZmF1bHQ6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAZXJyb3I6IGEgI0dFcnJvciB0aGF0IGlzIGZpbGxlZCBvbiBmYWlsdXJlCisgKgorICogTm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZAorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBkZWZhdWx0IEBzaGFkZXIgb3IgJU5VTEwgb24gZmFpbHVyZQorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworR3N0R0xTaGFkZXIgKgorZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR0Vycm9yICoqIGVycm9yKQoreworICByZXR1cm4gZ3N0X2dsX3NoYWRlcl9uZXdfbGlua193aXRoX3N0YWdlcyAoY29udGV4dCwgZXJyb3IsCisgICAgICBnc3RfZ2xzbF9zdGFnZV9uZXdfZGVmYXVsdF92ZXJ0ZXggKGNvbnRleHQpLAorICAgICAgZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfZnJhZ21lbnQgKGNvbnRleHQpLCBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX2lzX2xpbmtlZDoKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKgorICogTm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZAorICoKKyAqIFJldHVybnM6IHdoZXRoZXIgQHNoYWRlciBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgbGlua2VkCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX3NoYWRlcl9pc19saW5rZWQgKEdzdEdMU2hhZGVyICogc2hhZGVyKQoreworICBnYm9vbGVhbiByZXQ7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9TSEFERVIgKHNoYWRlciksIEZBTFNFKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKHNoYWRlcik7CisgIHJldCA9IHNoYWRlci0+cHJpdi0+bGlua2VkOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKKworICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLV9maWxsX3Z0YWJsZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCitfZW5zdXJlX3Byb2dyYW0gKEdzdEdMU2hhZGVyICogc2hhZGVyKQogewotICBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKLSAgR3N0R0xTaGFkZXJWVGFibGUgKnZ0YWJsZSA9ICZzaGFkZXItPnByaXYtPnZ0YWJsZTsKKyAgaWYgKHNoYWRlci0+cHJpdi0+cHJvZ3JhbV9oYW5kbGUpCisgICAgcmV0dXJuIFRSVUU7CiAKLSAgaWYgKGdsLT5DcmVhdGVQcm9ncmFtKSB7Ci0gICAgdnRhYmxlLT5DcmVhdGVQcm9ncmFtID0gZ2wtPkNyZWF0ZVByb2dyYW07Ci0gICAgdnRhYmxlLT5EZWxldGVQcm9ncmFtID0gZ2wtPkRlbGV0ZVByb2dyYW07Ci0gICAgdnRhYmxlLT5Vc2VQcm9ncmFtID0gZ2wtPlVzZVByb2dyYW07CisgIHNoYWRlci0+cHJpdi0+cHJvZ3JhbV9oYW5kbGUgPSBzaGFkZXItPnByaXYtPnZ0YWJsZS5DcmVhdGVQcm9ncmFtICgpOworICByZXR1cm4gc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwOworfQogCi0gICAgdnRhYmxlLT5DcmVhdGVTaGFkZXIgPSBnbC0+Q3JlYXRlU2hhZGVyOwotICAgIHZ0YWJsZS0+RGVsZXRlU2hhZGVyID0gZ2wtPkRlbGV0ZVNoYWRlcjsKLSAgICB2dGFibGUtPkF0dGFjaFNoYWRlciA9IGdsLT5BdHRhY2hTaGFkZXI7Ci0gICAgdnRhYmxlLT5EZXRhY2hTaGFkZXIgPSBnbC0+RGV0YWNoU2hhZGVyOworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZToKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKgorICogUmV0dXJuczogdGhlIEdMIHByb2dyYW0gaGFuZGxlIGZvciB0aGlzIHNoYWRlcgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworaW50Citnc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCit7CisgIGludCByZXQ7CiAKLSAgICB2dGFibGUtPkdldEF0dGFjaGVkU2hhZGVycyA9IGdsLT5HZXRBdHRhY2hlZFNoYWRlcnM7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfU0hBREVSIChzaGFkZXIpLCAwKTsKIAotICAgIHZ0YWJsZS0+R2V0U2hhZGVySW5mb0xvZyA9IGdsLT5HZXRTaGFkZXJJbmZvTG9nOwotICAgIHZ0YWJsZS0+R2V0U2hhZGVyaXYgPSBnbC0+R2V0U2hhZGVyaXY7Ci0gICAgdnRhYmxlLT5HZXRQcm9ncmFtSW5mb0xvZyA9IGdsLT5HZXRQcm9ncmFtSW5mb0xvZzsKLSAgICB2dGFibGUtPkdldFByb2dyYW1pdiA9IGdsLT5HZXRQcm9ncmFtaXY7Ci0gIH0gZWxzZSBpZiAoZ2wtPkNyZWF0ZVByb2dyYW1PYmplY3QpIHsKLSAgICB2dGFibGUtPkNyZWF0ZVByb2dyYW0gPSBnbC0+Q3JlYXRlUHJvZ3JhbU9iamVjdDsKLSAgICB2dGFibGUtPkRlbGV0ZVByb2dyYW0gPSBnbC0+RGVsZXRlT2JqZWN0OwotICAgIHZ0YWJsZS0+VXNlUHJvZ3JhbSA9IGdsLT5Vc2VQcm9ncmFtT2JqZWN0OworICBHU1RfT0JKRUNUX0xPQ0sgKHNoYWRlcik7CisgIHJldCA9IChpbnQpIHNoYWRlci0+cHJpdi0+cHJvZ3JhbV9oYW5kbGU7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOwogCi0gICAgdnRhYmxlLT5DcmVhdGVTaGFkZXIgPSBnbC0+Q3JlYXRlU2hhZGVyT2JqZWN0OwotICAgIHZ0YWJsZS0+RGVsZXRlU2hhZGVyID0gZ2wtPkRlbGV0ZU9iamVjdDsKLSAgICB2dGFibGUtPkF0dGFjaFNoYWRlciA9IGdsLT5BdHRhY2hPYmplY3Q7Ci0gICAgdnRhYmxlLT5EZXRhY2hTaGFkZXIgPSBnbC0+RGV0YWNoT2JqZWN0OworICByZXR1cm4gcmV0OworfQogCi0gICAgdnRhYmxlLT5HZXRBdHRhY2hlZFNoYWRlcnMgPSBnbC0+R2V0QXR0YWNoZWRPYmplY3RzOworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZDoKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZSB0byBhdHRhY2gKKyAqCisgKiBEZXRhY2hlcyBAc3RhZ2UgZnJvbSBAc2hhZGVyLiAgQHN0YWdlIG11c3QgaGF2ZSBiZWVuIHN1Y2Nlc3NmdWxseSBhdHRhY2hlZAorICogdG8gQHNoYWRlciB3aXRoIGdzdF9nbF9zaGFkZXJfYXR0YWNoKCkgb3IgZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQoKS4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZCAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBndWludCBzdGFnZV9oYW5kbGU7CisgIEdMaXN0ICplbGVtOwogCi0gICAgdnRhYmxlLT5HZXRTaGFkZXJJbmZvTG9nID0gZ2wtPkdldEluZm9Mb2c7Ci0gICAgdnRhYmxlLT5HZXRTaGFkZXJpdiA9IGdsLT5HZXRPYmplY3RQYXJhbWV0ZXJpdjsKLSAgICB2dGFibGUtPkdldFByb2dyYW1JbmZvTG9nID0gZ2wtPkdldEluZm9Mb2c7Ci0gICAgdnRhYmxlLT5HZXRQcm9ncmFtaXYgPSBnbC0+R2V0T2JqZWN0UGFyYW1ldGVyaXY7Ci0gIH0gZWxzZSB7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9TSEFERVIgKHNoYWRlcikpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpKTsKKworICBpZiAoIV9nc3RfZ2xzbF9mdW5jc19maWxsICgmc2hhZGVyLT5wcml2LT52dGFibGUsIHNoYWRlci0+Y29udGV4dCkpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNoYWRlciwgIkZhaWxlZCB0byByZXRyZWl2ZSByZXF1aXJlZCBHTFNMIGZ1bmN0aW9ucyIpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmICghc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZSkKKyAgICByZXR1cm47CisKKyAgZWxlbSA9IGdfbGlzdF9maW5kIChzaGFkZXItPnByaXYtPnN0YWdlcywgc3RhZ2UpOworICBpZiAoIWVsZW0pIHsKKyAgICBHU1RfRklYTUVfT0JKRUNUIChzaGFkZXIsICJDb3VsZCBub3QgZmluZCBzdGFnZSAlcCBpbiBzaGFkZXIgJXAiLCBzdGFnZSwKKyAgICAgICAgc2hhZGVyKTsKKyAgICByZXR1cm47CisgIH0KKworICBzdGFnZV9oYW5kbGUgPSBnc3RfZ2xzbF9zdGFnZV9nZXRfaGFuZGxlIChzdGFnZSk7CisgIGlmICghc3RhZ2VfaGFuZGxlKSB7CisgICAgR1NUX0ZJWE1FX09CSkVDVCAoc2hhZGVyLCAiU3RhZ2UgJXAgZG9lc24ndCBoYXZlIGEgR0wgaGFuZGxlIiwgc3RhZ2UpOworICAgIHJldHVybjsKKyAgfQorCisgIGlmIChzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZS0+SXNQcm9ncmFtKQorICAgIGdfYXNzZXJ0IChzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZS0+SXNQcm9ncmFtIChzaGFkZXItPgorICAgICAgICAgICAgcHJpdi0+cHJvZ3JhbV9oYW5kbGUpKTsKKyAgaWYgKHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlLT5Jc1NoYWRlcikKKyAgICBnX2Fzc2VydCAoc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGUtPklzU2hhZGVyIChzdGFnZV9oYW5kbGUpKTsKKworICBHU1RfTE9HX09CSkVDVCAoc2hhZGVyLCAiZGV0YWNoaW5nIHNoYWRlciAlaSBmcm9tIHByb2dyYW0gJWkiLCBzdGFnZV9oYW5kbGUsCisgICAgICAoaW50KSBzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlKTsKKyAgc2hhZGVyLT5wcml2LT52dGFibGUuRGV0YWNoU2hhZGVyIChzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlLAorICAgICAgc3RhZ2VfaGFuZGxlKTsKKworICBzaGFkZXItPnByaXYtPnN0YWdlcyA9IGdfbGlzdF9kZWxldGVfbGluayAoc2hhZGVyLT5wcml2LT5zdGFnZXMsIGVsZW0pOworICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZSk7Cit9CisKKy8qKgorICogZ3N0X2dsX3NoYWRlcl9kZXRhY2g6CisgKiBAc2hhZGVyOiBhICNHc3RHTFNoYWRlcgorICogQHN0YWdlOiBhICNHc3RHTFNMU3RhZ2UgdG8gYXR0YWNoCisgKgorICogRGV0YWNoZXMgQHN0YWdlIGZyb20gQHNoYWRlci4gIEBzdGFnZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgYXR0YWNoZWQKKyAqIHRvIEBzaGFkZXIgd2l0aCBnc3RfZ2xfc2hhZGVyX2F0dGFjaCgpIG9yIGdzdF9nbF9zaGFkZXJfYXR0YWNoX3VubG9ja2VkKCkuCisgKgorICogTm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwordm9pZAorZ3N0X2dsX3NoYWRlcl9kZXRhY2ggKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1NIQURFUiAoc2hhZGVyKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTFNMX1NUQUdFIChzdGFnZSkpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2hhZGVyKTsKKyAgZ3N0X2dsX3NoYWRlcl9kZXRhY2hfdW5sb2NrZWQgKHNoYWRlciwgc3RhZ2UpOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKK30KKworLyoqCisgKiBnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZDoKKyAqIEBzaGFkZXI6IGEgI0dzdEdMU2hhZGVyCisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZSB0byBhdHRhY2gKKyAqCisgKiBBdHRhY2hlcyBAc3RhZ2UgdG8gQHNoYWRlci4gIEBzdGFnZSBtdXN0IGhhdmUgYmVlbiBzdWNjZXNzZnVsbHkgY29tcGlsZWQKKyAqIHdpdGggZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSgpLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIEBzdGFnZSBjb3VsZCBiZSBhdHRhY2hlZCB0byBAc2hhZGVyCisgKgorICogU2luY2U6IDEuOAorICovCitnYm9vbGVhbgorZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSkKK3sKKyAgZ3VpbnQgc3RhZ2VfaGFuZGxlOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfU0hBREVSIChzaGFkZXIpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpLCBGQUxTRSk7CisKKyAgaWYgKCFfZ3N0X2dsc2xfZnVuY3NfZmlsbCAoJnNoYWRlci0+cHJpdi0+dnRhYmxlLCBzaGFkZXItPmNvbnRleHQpKSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzaGFkZXIsICJGYWlsZWQgdG8gcmV0cmVpdmUgcmVxdWlyZWQgR0xTTCBmdW5jdGlvbnMiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIV9lbnN1cmVfcHJvZ3JhbSAoc2hhZGVyKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogYWxyZWFkeSBhdHRhY2hlZD8gKi8KKyAgaWYgKGdfbGlzdF9maW5kIChzaGFkZXItPnByaXYtPnN0YWdlcywgc3RhZ2UpKQorICAgIHJldHVybiBUUlVFOworCisgIHN0YWdlX2hhbmRsZSA9IGdzdF9nbHNsX3N0YWdlX2dldF9oYW5kbGUgKHN0YWdlKTsKKyAgaWYgKCFzdGFnZV9oYW5kbGUpIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGUtPklzUHJvZ3JhbSkKKyAgICBnX2Fzc2VydCAoc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGUtPklzUHJvZ3JhbSAoc2hhZGVyLT4KKyAgICAgICAgICAgIHByaXYtPnByb2dyYW1faGFuZGxlKSk7CisgIGlmIChzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZS0+SXNTaGFkZXIpCisgICAgZ19hc3NlcnQgKHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlLT5Jc1NoYWRlciAoc3RhZ2VfaGFuZGxlKSk7CisKKyAgc2hhZGVyLT5wcml2LT5zdGFnZXMgPQorICAgICAgZ19saXN0X3ByZXBlbmQgKHNoYWRlci0+cHJpdi0+c3RhZ2VzLCBnc3Rfb2JqZWN0X3JlZl9zaW5rIChzdGFnZSkpOworICBHU1RfTE9HX09CSkVDVCAoc2hhZGVyLCAiYXR0YWNoaW5nIHNoYWRlciAlaSB0byBwcm9ncmFtICVpIiwgc3RhZ2VfaGFuZGxlLAorICAgICAgKGludCkgc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZSk7CisgIHNoYWRlci0+cHJpdi0+dnRhYmxlLkF0dGFjaFNoYWRlciAoc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZSwKKyAgICAgIHN0YWdlX2hhbmRsZSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X2dsX3NoYWRlcl9hdHRhY2g6CisgKiBAc2hhZGVyOiBhICNHc3RHTFNoYWRlcgorICogQHN0YWdlOiBhICNHc3RHTFNMU3RhZ2UgdG8gYXR0YWNoCisgKgorICogQXR0YWNoZXMgQHN0YWdlIHRvIEBzaGFkZXIuICBAc3RhZ2UgbXVzdCBoYXZlIGJlZW4gc3VjY2Vzc2Z1bGx5IGNvbXBpbGVkCisgKiB3aXRoIGdzdF9nbHNsX3N0YWdlX2NvbXBpbGUoKS4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogUmV0dXJuczogd2hldGhlciBAc3RhZ2UgY291bGQgYmUgYXR0YWNoZWQgdG8gQHNoYWRlcgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF9zaGFkZXJfYXR0YWNoIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR3N0R0xTTFN0YWdlICogc3RhZ2UpCit7CisgIGdib29sZWFuIHJldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX1NIQURFUiAoc2hhZGVyKSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSwgRkFMU0UpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2hhZGVyKTsKKyAgcmV0ID0gZ3N0X2dsX3NoYWRlcl9hdHRhY2hfdW5sb2NrZWQgKHNoYWRlciwgc3RhZ2UpOworICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKKworICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIGdzdF9nbF9zaGFkZXJfY29tcGlsZV9hdHRhY2hfc3RhZ2U6CisgKiBAc2hhZGVyOiBhICNHc3RHTFNoYWRlcgorICogQHN0YWdlOiBhICNHc3RHTFNMU3RhZ2UgdG8gYXR0YWNoCisgKiBAZXJyb3I6IGEgI0dFcnJvcgorICoKKyAqIENvbXBpbGVzIEBzdGFnZSBhbmQgYXR0YWNoZXMgaXQgdG8gQHNoYWRlci4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogUmV0dXJuczogd2hldGhlciBAc3RhZ2UgY291bGQgYmUgY29tcGlsZWQgYW5kIGF0dGFjaGVkIHRvIEBzaGFkZXIKKyAqCisgKiBTaW5jZTogMS44CisgKi8KK2dib29sZWFuCitnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR3N0R0xTTFN0YWdlICogc3RhZ2UsCisgICAgR0Vycm9yICoqIGVycm9yKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSwgRkFMU0UpOworCisgIGlmICghZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSAoc3RhZ2UsIGVycm9yKSkgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICghZ3N0X2dsX3NoYWRlcl9hdHRhY2ggKHNoYWRlciwgc3RhZ2UpKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xTTF9FUlJPUiwgR1NUX0dMU0xfRVJST1JfQ09NUElMRSwKKyAgICAgICAgIkZhaWxlZCB0byBhdHRhY2ggc3RhZ2UgdG8gc2hhZGVyIik7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLUdzdEdMU2hhZGVyICoKLWdzdF9nbF9zaGFkZXJfbmV3IChHc3RHTENvbnRleHQgKiBjb250ZXh0KQotewotICBHc3RHTFNoYWRlciAqc2hhZGVyOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOwotCi0gIHNoYWRlciA9IGdfb2JqZWN0X25ldyAoR1NUX0dMX1RZUEVfU0hBREVSLCBOVUxMKTsKLSAgc2hhZGVyLT5jb250ZXh0ID0gZ3N0X29iamVjdF9yZWYgKGNvbnRleHQpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNoYWRlciwgIkNyZWF0ZWQgbmV3IEdMU2hhZGVyIGZvciBjb250ZXh0ICUiIEdTVF9QVFJfRk9STUFULAotICAgICAgY29udGV4dCk7Ci0KLSAgcmV0dXJuIHNoYWRlcjsKLX0KLQorLyoqCisgKiBnc3RfZ2xfc2hhZGVyX2xpbms6CisgKiBAc2hhZGVyOiBhICNHc3RHTFNoYWRlcgorICogQGVycm9yOiBhICNHRXJyb3IKKyAqCisgKiBMaW5rcyB0aGUgY3VycmVudCBsaXN0IG9mICNHc3RHTFNMU3RhZ2UncyBpbiBAc2hhZGVyLgorICoKKyAqIE5vdGU6IG11c3QgYmUgY2FsbGVkIGluIHRoZSBHTCB0aHJlYWQKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIEBzaGFkZXIgY291bGQgYmUgbGlua2VkIHRvZ2V0aGVyLgorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwogZ2Jvb2xlYW4KLWdzdF9nbF9zaGFkZXJfaXNfY29tcGlsZWQgKEdzdEdMU2hhZGVyICogc2hhZGVyKQotewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX1NIQURFUiAoc2hhZGVyKSwgRkFMU0UpOwotCi0gIHJldHVybiBzaGFkZXItPnByaXYtPmNvbXBpbGVkOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9zaGFkZXJfc3RyaW5nX2hhc192ZXJzaW9uIChjb25zdCBnY2hhciAqIHN0cikKLXsKLSAgZ2Jvb2xlYW4gc2xfY29tbWVudCA9IEZBTFNFOwotICBnYm9vbGVhbiBtbF9jb21tZW50ID0gRkFMU0U7Ci0gIGdib29sZWFuIGhhc192ZXJzaW9uID0gRkFMU0U7Ci0gIGdpbnQgaSA9IDA7Ci0KLSAgLyogc2VhcmNoIGZvciAjdmVyc2lvbiB0byBhbGxvdyBmb3IgcHJlY2VlZGluZyBjb21tZW50cyBhcyBhbGxvd2VkIGJ5IHRoZQotICAgKiBHTFNMIHNwZWNpZmljYXRpb24gKi8KLSAgd2hpbGUgKHN0ciAmJiBzdHJbaV0gIT0gJ1wwJyAmJiBpIDwgMTAyNCkgewotICAgIGlmIChzbF9jb21tZW50KSB7Ci0gICAgICBpZiAoc3RyW2ldICE9ICdcbicpCi0gICAgICAgIHNsX2NvbW1lbnQgPSBGQUxTRTsKLSAgICAgIGkrKzsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIGlmIChtbF9jb21tZW50KSB7Ci0gICAgICBpZiAoZ19zdHJzdHJfbGVuICgmc3RyW2ldLCAyLCAiKi8iKSkgewotICAgICAgICBtbF9jb21tZW50ID0gRkFMU0U7Ci0gICAgICAgIGkgKz0gMjsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGkrKzsKLSAgICAgIH0KLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIGlmIChnX3N0cnN0cl9sZW4gKCZzdHJbaV0sIDIsICIvLyIpKSB7Ci0gICAgICBzbF9jb21tZW50ID0gVFJVRTsKLSAgICAgIGkgKz0gMjsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIGlmIChnX3N0cnN0cl9sZW4gKCZzdHJbaV0sIDIsICIvKiIpKSB7Ci0gICAgICBtbF9jb21tZW50ID0gVFJVRTsKLSAgICAgIGkgKz0gMjsKLSAgICAgIGNvbnRpbnVlOwotICAgIH0KLQotICAgIGlmIChnX3N0cnN0cl9sZW4gKCZzdHJbaV0sIDEsICIjIikpIHsKLSAgICAgIGlmIChnX3N0cnN0cl9sZW4gKCZzdHJbaV0sIDgsICIjdmVyc2lvbiIpKQotICAgICAgICBoYXNfdmVyc2lvbiA9IFRSVUU7Ci0gICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBpKys7Ci0gIH0KLQotICByZXR1cm4gaGFzX3ZlcnNpb247Ci19Ci0KLXN0YXRpYyB2b2lkCi1fbWF5YmVfcHJlcGVuZF92ZXJzaW9uIChHc3RHTFNoYWRlciAqIHNoYWRlciwgY29uc3QgZ2NoYXIgKiBzaGFkZXJfc3RyLAotICAgIGdpbnQgKiBuX3ZlcnRleF9zb3VyY2VzLCBjb25zdCBnY2hhciAqKiogdmVydGV4X3NvdXJjZXMpCi17Ci0gIGdpbnQgbiA9IDE7Ci0KLSAgLyogRklYTUU6IHRoaXMgYWxsIGFuIGVkdWNhdGVkIGd1ZXNzICovCi0gIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChzaGFkZXItPmNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMMywgMywKLSAgICAgICAgICAwKQotICAgICAgJiYgKHNoYWRlci0+cHJpdi0+Z2xfYXBpICYgR1NUX0dMX0FQSV9HTEVTMikgIT0gMAotICAgICAgJiYgIV9zaGFkZXJfc3RyaW5nX2hhc192ZXJzaW9uIChzaGFkZXJfc3RyKSkKLSAgICBuID0gMjsKLQotICAqdmVydGV4X3NvdXJjZXMgPSBnX21hbGxvYzAgKG4gKiBzaXplb2YgKGdjaGFyICopKTsKLQotICBpZiAobiA+IDEpCi0gICAgKnZlcnRleF9zb3VyY2VzWzBdID0gZXMyX3ZlcnNpb25faGVhZGVyOwotCi0gICgqdmVydGV4X3NvdXJjZXMpW24gLSAxXSA9IHNoYWRlcl9zdHI7Ci0gICpuX3ZlcnRleF9zb3VyY2VzID0gbjsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZSAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdFcnJvciAqKiBlcnJvcikKK2dzdF9nbF9zaGFkZXJfbGluayAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsIEdFcnJvciAqKiBlcnJvcikKIHsKICAgR3N0R0xTaGFkZXJQcml2YXRlICpwcml2OwotICBHc3RHTEZ1bmNzICpnbDsKLQorICBjb25zdCBHc3RHTEZ1bmNzICpnbDsKICAgZ2NoYXIgaW5mb19idWZmZXJbMjA0OF07Ci0gIGdpbnQgbGVuID0gMDsKICAgR0xpbnQgc3RhdHVzID0gR0xfRkFMU0U7CisgIGdpbnQgbGVuID0gMDsKKyAgZ2Jvb2xlYW4gcmV0OworICBHTGlzdCAqZWxlbTsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX1NIQURFUiAoc2hhZGVyKSwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX1NIQURFUiAoc2hhZGVyKSwgRkFMU0UpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2hhZGVyKTsKIAogICBwcml2ID0gc2hhZGVyLT5wcml2OwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGlmIChwcml2LT5jb21waWxlZCkKLSAgICByZXR1cm4gcHJpdi0+Y29tcGlsZWQ7CisgIGlmIChwcml2LT5saW5rZWQpIHsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKKyAgICByZXR1cm4gVFJVRTsKKyAgfQogCi0gIGlmICghX2ZpbGxfdnRhYmxlIChzaGFkZXIsIHNoYWRlci0+Y29udGV4dCkpCisgIGlmICghX2dzdF9nbHNsX2Z1bmNzX2ZpbGwgKCZzaGFkZXItPnByaXYtPnZ0YWJsZSwgc2hhZGVyLT5jb250ZXh0KSkgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMU0xfRVJST1IsIEdTVF9HTFNMX0VSUk9SX1BST0dSQU0sCisgICAgICAgICJGYWlsZWQgdG8gcmV0cmVpdmUgcmVxdWlyZWQgR0xTTCBmdW5jdGlvbnMiKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoc2hhZGVyKTsKICAgICByZXR1cm4gRkFMU0U7CisgIH0KIAotICBzaGFkZXItPnByaXYtPnByb2dyYW1faGFuZGxlID0gc2hhZGVyLT5wcml2LT52dGFibGUuQ3JlYXRlUHJvZ3JhbSAoKTsKKyAgaWYgKCFfZW5zdXJlX3Byb2dyYW0gKHNoYWRlcikpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9QUk9HUkFNLAorICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBHTCBwcm9ncmFtIG9iamVjdCIpOworICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaGFkZXIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQogCiAgIEdTVF9UUkFDRSAoInNoYWRlciBjcmVhdGVkICV1Iiwgc2hhZGVyLT5wcml2LT5wcm9ncmFtX2hhbmRsZSk7CiAKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlLCBGQUxTRSk7CisgIGZvciAoZWxlbSA9IHNoYWRlci0+cHJpdi0+c3RhZ2VzOyBlbGVtOyBlbGVtID0gZWxlbS0+bmV4dCkgeworICAgIEdzdEdMU0xTdGFnZSAqc3RhZ2UgPSBlbGVtLT5kYXRhOwogCi0gIGlmIChwcml2LT52ZXJ0ZXhfc3JjKSB7Ci0gICAgZ2ludCBuX3ZlcnRleF9zb3VyY2VzOwotICAgIGNvbnN0IGdjaGFyICoqdmVydGV4X3NvdXJjZXM7Ci0KLSAgICBfbWF5YmVfcHJlcGVuZF92ZXJzaW9uIChzaGFkZXIsIHByaXYtPnZlcnRleF9zcmMsICZuX3ZlcnRleF9zb3VyY2VzLAotICAgICAgICAmdmVydGV4X3NvdXJjZXMpOwotCi0gICAgLyogY3JlYXRlIHZlcnRleCBvYmplY3QgKi8KLSAgICBwcml2LT52ZXJ0ZXhfaGFuZGxlID0gcHJpdi0+dnRhYmxlLkNyZWF0ZVNoYWRlciAoR0xfVkVSVEVYX1NIQURFUik7Ci0gICAgZ2wtPlNoYWRlclNvdXJjZSAocHJpdi0+dmVydGV4X2hhbmRsZSwgbl92ZXJ0ZXhfc291cmNlcywgdmVydGV4X3NvdXJjZXMsCi0gICAgICAgIE5VTEwpOwotICAgIGdfZnJlZSAodmVydGV4X3NvdXJjZXMpOwotCi0gICAgLyogY29tcGlsZSAqLwotICAgIGdsLT5Db21waWxlU2hhZGVyIChwcml2LT52ZXJ0ZXhfaGFuZGxlKTsKLSAgICAvKiBjaGVjayBldmVyeXRoaW5nIGlzIG9rICovCi0gICAgc3RhdHVzID0gR0xfRkFMU0U7Ci0gICAgZ2wtPkdldFNoYWRlcml2IChwcml2LT52ZXJ0ZXhfaGFuZGxlLCBHTF9DT01QSUxFX1NUQVRVUywgJnN0YXR1cyk7Ci0KLSAgICBwcml2LT52dGFibGUuR2V0U2hhZGVySW5mb0xvZyAocHJpdi0+dmVydGV4X2hhbmRsZSwKLSAgICAgICAgc2l6ZW9mIChpbmZvX2J1ZmZlcikgLSAxLCAmbGVuLCBpbmZvX2J1ZmZlcik7Ci0gICAgaW5mb19idWZmZXJbbGVuXSA9ICdcMCc7Ci0KLSAgICBpZiAoc3RhdHVzICE9IEdMX1RSVUUpIHsKLSAgICAgIEdTVF9FUlJPUiAoIlZlcnRleCBTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkOlxuJXMiLCBpbmZvX2J1ZmZlcik7Ci0KLSAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMX1NIQURFUl9FUlJPUiwKLSAgICAgICAgICBHU1RfR0xfU0hBREVSX0VSUk9SX0NPTVBJTEUsCi0gICAgICAgICAgIlZlcnRleCBTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkOlxuJXMiLCBpbmZvX2J1ZmZlcik7Ci0KLSAgICAgIHByaXYtPnZ0YWJsZS5EZWxldGVTaGFkZXIgKHByaXYtPnZlcnRleF9oYW5kbGUpOwotICAgICAgcHJpdi0+Y29tcGlsZWQgPSBGQUxTRTsKLSAgICAgIHJldHVybiBwcml2LT5jb21waWxlZDsKLSAgICB9IGVsc2UgaWYgKGxlbiA+IDEpIHsKLSAgICAgIEdTVF9GSVhNRSAoInZlcnRleCBzaGFkZXIgaW5mbyBsb2c6XG4lc1xuIiwgaW5mb19idWZmZXIpOworICAgIGlmICghZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSAoc3RhZ2UsIGVycm9yKSkgeworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNoYWRlcik7CisgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQotICAgIHByaXYtPnZ0YWJsZS5BdHRhY2hTaGFkZXIgKHByaXYtPnByb2dyYW1faGFuZGxlLCBwcml2LT52ZXJ0ZXhfaGFuZGxlKTsKIAotICAgIEdTVF9MT0cgKCJ2ZXJ0ZXggc2hhZGVyIGF0dGFjaGVkICV1IiwgcHJpdi0+dmVydGV4X2hhbmRsZSk7Ci0gIH0KLQotICBpZiAocHJpdi0+ZnJhZ21lbnRfc3JjKSB7Ci0gICAgZ2ludCBuX2ZyYWdtZW50X3NvdXJjZXM7Ci0gICAgY29uc3QgZ2NoYXIgKipmcmFnbWVudF9zb3VyY2VzOwotCi0gICAgX21heWJlX3ByZXBlbmRfdmVyc2lvbiAoc2hhZGVyLCBwcml2LT5mcmFnbWVudF9zcmMsICZuX2ZyYWdtZW50X3NvdXJjZXMsCi0gICAgICAgICZmcmFnbWVudF9zb3VyY2VzKTsKLQotICAgIC8qIGNyZWF0ZSBmcmFnbWVudCBvYmplY3QgKi8KLSAgICBwcml2LT5mcmFnbWVudF9oYW5kbGUgPSBwcml2LT52dGFibGUuQ3JlYXRlU2hhZGVyIChHTF9GUkFHTUVOVF9TSEFERVIpOwotICAgIGdsLT5TaGFkZXJTb3VyY2UgKHByaXYtPmZyYWdtZW50X2hhbmRsZSwgbl9mcmFnbWVudF9zb3VyY2VzLAotICAgICAgICBmcmFnbWVudF9zb3VyY2VzLCBOVUxMKTsKLSAgICBnX2ZyZWUgKGZyYWdtZW50X3NvdXJjZXMpOwotICAgIC8qIGNvbXBpbGUgKi8KLSAgICBnbC0+Q29tcGlsZVNoYWRlciAocHJpdi0+ZnJhZ21lbnRfaGFuZGxlKTsKLSAgICAvKiBjaGVjayBldmVyeXRoaW5nIGlzIG9rICovCi0gICAgc3RhdHVzID0gR0xfRkFMU0U7Ci0gICAgcHJpdi0+dnRhYmxlLkdldFNoYWRlcml2IChwcml2LT5mcmFnbWVudF9oYW5kbGUsCi0gICAgICAgIEdMX0NPTVBJTEVfU1RBVFVTLCAmc3RhdHVzKTsKLQotICAgIHByaXYtPnZ0YWJsZS5HZXRTaGFkZXJJbmZvTG9nIChwcml2LT5mcmFnbWVudF9oYW5kbGUsCi0gICAgICAgIHNpemVvZiAoaW5mb19idWZmZXIpIC0gMSwgJmxlbiwgaW5mb19idWZmZXIpOwotICAgIGluZm9fYnVmZmVyW2xlbl0gPSAnXDAnOwotICAgIGlmIChzdGF0dXMgIT0gR0xfVFJVRSkgewotICAgICAgR1NUX0VSUk9SICgiRnJhZ21lbnQgU2hhZGVyIGNvbXBpbGF0aW9uIGZhaWxlZDpcbiVzIiwgaW5mb19idWZmZXIpOwotCi0gICAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTF9TSEFERVJfRVJST1IsCi0gICAgICAgICAgR1NUX0dMX1NIQURFUl9FUlJPUl9DT01QSUxFLAotICAgICAgICAgICJGcmFnbWVudCBTaGFkZXIgY29tcGlsYXRpb24gZmFpbGVkOlxuJXMiLCBpbmZvX2J1ZmZlcik7Ci0KLSAgICAgIHByaXYtPnZ0YWJsZS5EZWxldGVTaGFkZXIgKHByaXYtPmZyYWdtZW50X2hhbmRsZSk7Ci0gICAgICBwcml2LT5jb21waWxlZCA9IEZBTFNFOwotICAgICAgcmV0dXJuIHByaXYtPmNvbXBpbGVkOwotICAgIH0gZWxzZSBpZiAobGVuID4gMSkgewotICAgICAgR1NUX0ZJWE1FICgidmVydGV4IHNoYWRlciBpbmZvIGxvZzpcbiVzXG4iLCBpbmZvX2J1ZmZlcik7CisgICAgaWYgKCFnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCAoc2hhZGVyLCBzdGFnZSkpIHsKKyAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX0dMU0xfRVJST1IsIEdTVF9HTFNMX0VSUk9SX0NPTVBJTEUsCisgICAgICAgICAgIkZhaWxlZCB0byBhdHRhY2ggc2hhZGVyICUiIEdTVF9QVFJfRk9STUFUICJ0byBwcm9ncmFtICUiCisgICAgICAgICAgR1NUX1BUUl9GT1JNQVQsIHN0YWdlLCBzaGFkZXIpOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNoYWRlcik7CisgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQotICAgIHByaXYtPnZ0YWJsZS5BdHRhY2hTaGFkZXIgKHByaXYtPnByb2dyYW1faGFuZGxlLCBwcml2LT5mcmFnbWVudF9oYW5kbGUpOwotCi0gICAgR1NUX0xPRyAoImZyYWdtZW50IHNoYWRlciBhdHRhY2hlZCAldSIsIHByaXYtPmZyYWdtZW50X2hhbmRsZSk7CiAgIH0KIAogICAvKiBpZiBub3RoaW5nIGZhaWxlZCBsaW5rIHNoYWRlcnMgKi8KQEAgLTU5OSw1OSArNjk0LDk0IEBACiAgIGlmIChzdGF0dXMgIT0gR0xfVFJVRSkgewogICAgIEdTVF9FUlJPUiAoIlNoYWRlciBsaW5raW5nIGZhaWxlZDpcbiVzIiwgaW5mb19idWZmZXIpOwogCi0gICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfR0xfU0hBREVSX0VSUk9SLAotICAgICAgICBHU1RfR0xfU0hBREVSX0VSUk9SX0xJTkssICJTaGFkZXIgTGlua2luZyBmYWlsZWQ6XG4lcyIsIGluZm9fYnVmZmVyKTsKLSAgICBwcml2LT5jb21waWxlZCA9IEZBTFNFOwotICAgIHJldHVybiBwcml2LT5jb21waWxlZDsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9MSU5LLAorICAgICAgICAiU2hhZGVyIExpbmtpbmcgZmFpbGVkOlxuJXMiLCBpbmZvX2J1ZmZlcik7CisgICAgcmV0ID0gcHJpdi0+bGlua2VkID0gRkFMU0U7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNoYWRlcik7CisgICAgcmV0dXJuIHJldDsKICAgfSBlbHNlIGlmIChsZW4gPiAxKSB7CiAgICAgR1NUX0ZJWE1FICgic2hhZGVyIGxpbmsgbG9nOlxuJXNcbiIsIGluZm9fYnVmZmVyKTsKICAgfQotICAvKiBzdWNjZXNzISAqLwotICBwcml2LT5jb21waWxlZCA9IFRSVUU7Ci0gIGdfb2JqZWN0X25vdGlmeSAoR19PQkpFQ1QgKHNoYWRlciksICJjb21waWxlZCIpOwogCi0gIHJldHVybiBwcml2LT5jb21waWxlZDsKKyAgcmV0ID0gcHJpdi0+bGlua2VkID0gVFJVRTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNoYWRlcik7CisKKyAgZ19vYmplY3Rfbm90aWZ5IChHX09CSkVDVCAoc2hhZGVyKSwgImxpbmtlZCIpOworCisgIHJldHVybiByZXQ7CiB9CiAKKy8qKgorICogZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkOgorICogQHNoYWRlcjogYSAjR3N0R0xTaGFkZXIKKyAqCisgKiBSZWxlYXNlcyB0aGUgc2hhZGVyIGFuZCBzdGFnZXMuCisgKgorICogTm90ZTogbXVzdCBiZSBjYWxsZWQgaW4gdGhlIEdMIHRocmVhZAorICoKKyAqIFNpbmNlOiAxLjgKKyAqLwogdm9pZAotZ3N0X2dsX3NoYWRlcl9yZWxlYXNlIChHc3RHTFNoYWRlciAqIHNoYWRlcikKK2dzdF9nbF9zaGFkZXJfcmVsZWFzZV91bmxvY2tlZCAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpCiB7CiAgIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdjsKKyAgR0xpc3QgKmVsZW07CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1NIQURFUiAoc2hhZGVyKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9TSEFERVIgKHNoYWRlcikpOwogCiAgIHByaXYgPSBzaGFkZXItPnByaXY7CiAKLSAgaWYgKCFwcml2LT5jb21waWxlZCB8fCAhcHJpdi0+cHJvZ3JhbV9oYW5kbGUpCi0gICAgcmV0dXJuOworICBmb3IgKGVsZW0gPSBzaGFkZXItPnByaXYtPnN0YWdlczsgZWxlbTspIHsKKyAgICBHc3RHTFNMU3RhZ2UgKnN0YWdlID0gZWxlbS0+ZGF0YTsKKyAgICBHTGlzdCAqbmV4dCA9IGVsZW0tPm5leHQ7CiAKLSAgaWYgKHByaXYtPnZlcnRleF9oYW5kbGUpIHsgICAgLyogbm90IG5lZWRlZCBidXQgbnZpZGlhIGRvZXNuJ3QgY2FyZSB0byByZXNwZWN0IHRoZSBzcGVjICovCi0gICAgR1NUX1RSQUNFICgiZmluYWxpemluZyB2ZXJ0ZXggc2hhZGVyICV1IiwgcHJpdi0+dmVydGV4X2hhbmRsZSk7Ci0KLSAgICBwcml2LT52dGFibGUuRGVsZXRlU2hhZGVyIChwcml2LT52ZXJ0ZXhfaGFuZGxlKTsKKyAgICBnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZCAoc2hhZGVyLCBzdGFnZSk7CisgICAgZWxlbSA9IG5leHQ7CiAgIH0KIAotICBpZiAocHJpdi0+ZnJhZ21lbnRfaGFuZGxlKSB7Ci0gICAgR1NUX1RSQUNFICgiZmluYWxpemluZyBmcmFnbWVudCBzaGFkZXIgJXUiLCBwcml2LT5mcmFnbWVudF9oYW5kbGUpOworICBnX2xpc3RfZnJlZV9mdWxsIChzaGFkZXItPnByaXYtPnN0YWdlcywgKEdEZXN0cm95Tm90aWZ5KSBnc3Rfb2JqZWN0X3VucmVmKTsKKyAgc2hhZGVyLT5wcml2LT5zdGFnZXMgPSBOVUxMOwogCi0gICAgcHJpdi0+dnRhYmxlLkRlbGV0ZVNoYWRlciAocHJpdi0+ZnJhZ21lbnRfaGFuZGxlKTsKLSAgfQorICBwcml2LT5saW5rZWQgPSBGQUxTRTsKKyAgZ19oYXNoX3RhYmxlX3JlbW92ZV9hbGwgKHByaXYtPnVuaWZvcm1fbG9jYXRpb25zKTsKIAotICBpZiAocHJpdi0+dmVydGV4X2hhbmRsZSkKLSAgICBwcml2LT52dGFibGUuRGV0YWNoU2hhZGVyIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgcHJpdi0+dmVydGV4X2hhbmRsZSk7Ci0gIGlmIChwcml2LT5mcmFnbWVudF9oYW5kbGUpCi0gICAgcHJpdi0+dnRhYmxlLkRldGFjaFNoYWRlciAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIHByaXYtPmZyYWdtZW50X2hhbmRsZSk7Ci0KLSAgcHJpdi0+Y29tcGlsZWQgPSBGQUxTRTsKLSAgZ19vYmplY3Rfbm90aWZ5IChHX09CSkVDVCAoc2hhZGVyKSwgImNvbXBpbGVkIik7CisgIGdfb2JqZWN0X25vdGlmeSAoR19PQkpFQ1QgKHNoYWRlciksICJsaW5rZWQiKTsKIH0KIAorLyoqCisgKiBnc3RfZ2xfc2hhZGVyX3JlbGVhc2U6CisgKiBAc2hhZGVyOiBhICNHc3RHTFNoYWRlcgorICoKKyAqIFJlbGVhc2VzIHRoZSBzaGFkZXIgYW5kIHN0YWdlcy4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkCisgKgorICogU2luY2U6IDEuOAorICovCit2b2lkCitnc3RfZ2xfc2hhZGVyX3JlbGVhc2UgKEdzdEdMU2hhZGVyICogc2hhZGVyKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfU0hBREVSIChzaGFkZXIpKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKHNoYWRlcik7CisgIGdzdF9nbF9zaGFkZXJfcmVsZWFzZV91bmxvY2tlZCAoc2hhZGVyKTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKHNoYWRlcik7Cit9CisKKy8qKgorICogZ3N0X2dsX3NoYWRlcl91c2U6CisgKiBAc2hhZGVyOiBhICNHc3RHTFNoYWRlcgorICoKKyAqIE1hcmsncyBAc2hhZGVyIGFzIGJlaW5nIHVzZWQgZm9yIHRoZSBuZXh0IEdMIGRyYXcgY29tbWFuZC4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkIGFuZCBAc2hhZGVyIG11c3QgaGF2ZSBiZWVuIGxpbmtlZC4KKyAqLwogdm9pZAogZ3N0X2dsX3NoYWRlcl91c2UgKEdzdEdMU2hhZGVyICogc2hhZGVyKQogewogICBHc3RHTFNoYWRlclByaXZhdGUgKnByaXY7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1NIQURFUiAoc2hhZGVyKSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9TSEFERVIgKHNoYWRlcikpOwogCiAgIHByaXYgPSBzaGFkZXItPnByaXY7CiAKQEAgLTY2MiwxMiArNzkyLDIwIEBACiAgIHJldHVybjsKIH0KIAorLyoqCisgKiBnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXI6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKgorICogQ2xlYXIncyB0aGUgY3VycmVudGx5IHNldCBzaGFkZXIgZnJvbSB0aGUgR0wgc3RhdGUgbWFjaGluZS4KKyAqCisgKiBOb3RlOiBtdXN0IGJlIGNhbGxlZCBpbiB0aGUgR0wgdGhyZWFkLgorICovCiB2b2lkCiBnc3RfZ2xfY29udGV4dF9jbGVhcl9zaGFkZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7CiAgIEdzdEdMRnVuY3MgKmdsOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19DT05URVhUIChjb250ZXh0KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSk7CiAKICAgZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CiAKQEAgLTY3NywxMDQgKzgxNSw2IEBACiAgICAgZ2wtPlVzZVByb2dyYW1PYmplY3QgKDApOwogfQogCi1nYm9vbGVhbgotZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FuZF9jaGVjayAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsCi0gICAgY29uc3QgZ2NoYXIgKiBzb3VyY2UsIEdzdEdMU2hhZGVyU291cmNlVHlwZSB0eXBlKQotewotICBnYm9vbGVhbiBpc19jb21waWxlZCA9IEZBTFNFOwotCi0gIGdfb2JqZWN0X2dldCAoR19PQkpFQ1QgKHNoYWRlciksICJjb21waWxlZCIsICZpc19jb21waWxlZCwgTlVMTCk7Ci0KLSAgaWYgKCFpc19jb21waWxlZCkgewotICAgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwotCi0gICAgc3dpdGNoICh0eXBlKSB7Ci0gICAgICBjYXNlIEdTVF9HTF9TSEFERVJfRlJBR01FTlRfU09VUkNFOgotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF9mcmFnbWVudF9zb3VyY2UgKHNoYWRlciwgc291cmNlKTsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdTVF9HTF9TSEFERVJfVkVSVEVYX1NPVVJDRToKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZSAoc2hhZGVyLCBzb3VyY2UpOwotICAgICAgICBicmVhazsKLSAgICAgIGRlZmF1bHQ6Ci0gICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwotICAgICAgICBicmVhazsKLSAgICB9Ci0KLSAgICBnc3RfZ2xfc2hhZGVyX2NvbXBpbGUgKHNoYWRlciwgJmVycm9yKTsKLSAgICBpZiAoZXJyb3IpIHsKLSAgICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoc2hhZGVyLT5jb250ZXh0LCAiJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKLSAgICAgIGdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlciAoc2hhZGVyLT5jb250ZXh0KTsKLQotICAgICAgcmV0dXJuIEZBTFNFOwotICAgIH0KLSAgfQotICByZXR1cm4gVFJVRTsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9nbF9zaGFkZXJfY29tcGlsZV9hbGxfd2l0aF9hdHRyaWJzX2FuZF9jaGVjayAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsCi0gICAgY29uc3QgZ2NoYXIgKiB2X3NyYywgY29uc3QgZ2NoYXIgKiBmX3NyYywgY29uc3QgZ2ludCBuX2F0dHJpYnMsCi0gICAgY29uc3QgZ2NoYXIgKiBhdHRyaWJfbmFtZXNbXSwgR0xpbnQgYXR0cmliX2xvY3NbXSkKLXsKLSAgZ2ludCBpID0gMDsKLSAgR0Vycm9yICplcnJvciA9IE5VTEw7Ci0KLSAgZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZSAoc2hhZGVyLCB2X3NyYyk7Ci0gIGdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZSAoc2hhZGVyLCBmX3NyYyk7Ci0KLSAgZ3N0X2dsX3NoYWRlcl9jb21waWxlIChzaGFkZXIsICZlcnJvcik7Ci0gIGlmIChlcnJvcikgewotICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoc2hhZGVyLT5jb250ZXh0LCAiJXMiLCBlcnJvci0+bWVzc2FnZSk7Ci0gICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0gICAgZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyIChzaGFkZXItPmNvbnRleHQpOwotCi0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgZm9yIChpID0gMDsgaSA8IG5fYXR0cmliczsgaSsrKQotICAgIGF0dHJpYl9sb2NzW2ldID0KLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsIGF0dHJpYl9uYW1lc1tpXSk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLWdib29sZWFuCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X2ZfYW5kX2NoZWNrIChHc3RHTFNoYWRlciAqIHNoYWRlciwKLSAgICBjb25zdCBnY2hhciAqIHZfc3JjLCBjb25zdCBnaW50IG5fYXR0cmlicywgY29uc3QgZ2NoYXIgKiBhdHRyaWJfbmFtZXNbXSwKLSAgICBHTGludCBhdHRyaWJfbG9jc1tdKQotewotICByZXR1cm4gZ3N0X2dsX3NoYWRlcl9jb21waWxlX2FsbF93aXRoX2F0dHJpYnNfYW5kX2NoZWNrIChzaGFkZXIsIHZfc3JjLAotICAgICAgc2ltcGxlX2ZyYWdtZW50X3NoYWRlcl9zdHJfZ2xlczIsIG5fYXR0cmlicywgYXR0cmliX25hbWVzLCBhdHRyaWJfbG9jcyk7Ci19Ci0KLWdib29sZWFuCi1nc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZfYW5kX2NoZWNrIChHc3RHTFNoYWRlciAqIHNoYWRlciwKLSAgICBjb25zdCBnY2hhciAqIGZfc3JjLCBHTGludCAqIHBvc19sb2MsIEdMaW50ICogdGV4X2xvYykKLXsKLSAgY29uc3QgZ2NoYXIgKmF0dHJpYl9uYW1lc1syXSA9IHsgImFfcG9zaXRpb24iLCAiYV90ZXhjb29yZCIgfTsKLSAgR0xpbnQgYXR0cmliX2xvY3NbMl0gPSB7IDAgfTsKLSAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKLQotICByZXQgPSBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYWxsX3dpdGhfYXR0cmlic19hbmRfY2hlY2sgKHNoYWRlciwKLSAgICAgIHNpbXBsZV92ZXJ0ZXhfc2hhZGVyX3N0cl9nbGVzMiwgZl9zcmMsIDIsIGF0dHJpYl9uYW1lcywgYXR0cmliX2xvY3MpOwotCi0gIGlmIChyZXQpIHsKLSAgICAqcG9zX2xvYyA9IGF0dHJpYl9sb2NzWzBdOwotICAgICp0ZXhfbG9jID0gYXR0cmliX2xvY3NbMV07Ci0gIH0KLQotICByZXR1cm4gcmV0OwotfQotCi1nYm9vbGVhbgotZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92Zl9hbmRfY2hlY2sgKEdzdEdMU2hhZGVyICogc2hhZGVyLAotICAgIEdMaW50ICogcG9zX2xvYywgR0xpbnQgKiB0ZXhfbG9jKQotewotICByZXR1cm4gZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjayAoc2hhZGVyLAotICAgICAgc2ltcGxlX2ZyYWdtZW50X3NoYWRlcl9zdHJfZ2xlczIsIHBvc19sb2MsIHRleF9sb2MpOwotfQotCiB2b2lkCiBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFmIChHc3RHTFNoYWRlciAqIHNoYWRlciwgY29uc3QgZ2NoYXIgKiBuYW1lLAogICAgIGdmbG9hdCB2YWx1ZSkKQEAgLTc4OSw3ICs4MjksNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm0xZiAobG9jYXRpb24sIHZhbHVlKTsKIH0KQEAgLTgwNyw3ICs4NDcsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm0xZnYgKGxvY2F0aW9uLCBjb3VudCwgdmFsdWUpOwogfQpAQCAtODI1LDcgKzg2NSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTFpIChsb2NhdGlvbiwgdmFsdWUpOwogfQpAQCAtODQzLDcgKzg4Myw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTFpdiAobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiB9CkBAIC04NjEsNyArOTAxLDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtMmYgKGxvY2F0aW9uLCB2YWx1ZTAsIHZhbHVlMSk7CiB9CkBAIC04NzksNyArOTE5LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtMmZ2IChsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KQEAgLTg5Nyw3ICs5MzcsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm0yaSAobG9jYXRpb24sIHYwLCB2MSk7CiB9CkBAIC05MTUsNyArOTU1LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtMml2IChsb2NhdGlvbiwgY291bnQsIHZhbHVlKTsKIH0KQEAgLTkzMyw3ICs5NzMsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm0zZiAobG9jYXRpb24sIHYwLCB2MSwgdjIpOwogfQpAQCAtOTUxLDcgKzk5MSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTNmdiAobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiB9CkBAIC05NjksNyArMTAwOSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTNpIChsb2NhdGlvbiwgdjAsIHYxLCB2Mik7CiB9CkBAIC05ODcsNyArMTAyNyw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTNpdiAobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiB9CkBAIC0xMDA1LDcgKzEwNDUsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm00ZiAobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KQEAgLTEwMjMsNyArMTA2Myw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTRmdiAobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiB9CkBAIC0xMDQxLDcgKzEwODEsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm00aSAobG9jYXRpb24sIHYwLCB2MSwgdjIsIHYzKTsKIH0KQEAgLTEwNTksNyArMTA5OSw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybTRpdiAobG9jYXRpb24sIGNvdW50LCB2YWx1ZSk7CiB9CkBAIC0xMDc3LDcgKzExMTcsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm1NYXRyaXgyZnYgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC0xMDk1LDcgKzExMzUsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm1NYXRyaXgzZnYgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC0xMTEzLDcgKzExNTMsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm1NYXRyaXg0ZnYgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC0xMTMyLDcgKzExNzIsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm1NYXRyaXgyeDNmdiAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KQEAgLTExNTAsNyArMTE5MCw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybU1hdHJpeDJ4NGZ2IChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQpAQCAtMTE2OCw3ICsxMjA4LDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtTWF0cml4M3gyZnYgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC0xMTg2LDcgKzEyMjYsNyBAQAogICBnX3JldHVybl9pZl9mYWlsIChwcml2LT5wcm9ncmFtX2hhbmRsZSAhPSAwKTsKICAgZ2wgPSBzaGFkZXItPmNvbnRleHQtPmdsX3Z0YWJsZTsKIAotICBsb2NhdGlvbiA9IGdsLT5HZXRVbmlmb3JtTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgbG9jYXRpb24gPSBfZ2V0X3VuaWZvcm1fbG9jYXRpb24gKHNoYWRlciwgbmFtZSk7CiAKICAgZ2wtPlVuaWZvcm1NYXRyaXgzeDRmdiAobG9jYXRpb24sIGNvdW50LCB0cmFuc3Bvc2UsIHZhbHVlKTsKIH0KQEAgLTEyMDQsNyArMTI0NCw3IEBACiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHByaXYtPnByb2dyYW1faGFuZGxlICE9IDApOwogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIGxvY2F0aW9uID0gZ2wtPkdldFVuaWZvcm1Mb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUpOworICBsb2NhdGlvbiA9IF9nZXRfdW5pZm9ybV9sb2NhdGlvbiAoc2hhZGVyLCBuYW1lKTsKIAogICBnbC0+VW5pZm9ybU1hdHJpeDR4MmZ2IChsb2NhdGlvbiwgY291bnQsIHRyYW5zcG9zZSwgdmFsdWUpOwogfQpAQCAtMTIyMiw3ICsxMjYyLDcgQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgbG9jYXRpb24gPSBnbC0+R2V0VW5pZm9ybUxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisgIGxvY2F0aW9uID0gX2dldF91bmlmb3JtX2xvY2F0aW9uIChzaGFkZXIsIG5hbWUpOwogCiAgIGdsLT5Vbmlmb3JtTWF0cml4NHgzZnYgKGxvY2F0aW9uLCBjb3VudCwgdHJhbnNwb3NlLCB2YWx1ZSk7CiB9CkBAIC0xMjMzLDE2ICsxMjczLDIwIEBACiB7CiAgIEdzdEdMU2hhZGVyUHJpdmF0ZSAqcHJpdjsKICAgR3N0R0xGdW5jcyAqZ2w7CisgIGdpbnQgcmV0OwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzaGFkZXIgIT0gTlVMTCwgLTEpOwogICBwcml2ID0gc2hhZGVyLT5wcml2OwogICBnX3JldHVybl92YWxfaWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCwgLTEpOwotICBpZiAoMCA9PSBwcml2LT52ZXJ0ZXhfaGFuZGxlKQotICAgIHJldHVybiAtMTsKIAogICBnbCA9IHNoYWRlci0+Y29udGV4dC0+Z2xfdnRhYmxlOwogCi0gIHJldHVybiBnbC0+R2V0QXR0cmliTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBuYW1lKTsKKyAgcmV0ID0gZ2wtPkdldEF0dHJpYkxvY2F0aW9uIChwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSk7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2hhZGVyLCAicmV0cmVpdmVkIHByb2dyYW0gJWkgYXR0cmlidXRlIFwnJXNcJyBsb2NhdGlvbiAlaSIsCisgICAgICAoaW50KSBwcml2LT5wcm9ncmFtX2hhbmRsZSwgbmFtZSwgcmV0KTsKKworICByZXR1cm4gcmV0OwogfQogCiB2b2lkCkBAIC0xMjU3LDExICsxMzAxLDggQEAKICAgZ19yZXR1cm5faWZfZmFpbCAocHJpdi0+cHJvZ3JhbV9oYW5kbGUgIT0gMCk7CiAgIGdsID0gc2hhZGVyLT5jb250ZXh0LT5nbF92dGFibGU7CiAKLSAgZ2wtPkJpbmRBdHRyaWJMb2NhdGlvbiAocHJpdi0+cHJvZ3JhbV9oYW5kbGUsIGluZGV4LCBuYW1lKTsKLX0KKyAgR1NUX1RSQUNFX09CSkVDVCAoc2hhZGVyLCAiYmluZGluZyBwcm9ncmFtICVpIGF0dHJpYnV0ZSBcJyVzXCcgbG9jYXRpb24gJWkiLAorICAgICAgKGludCkgcHJpdi0+cHJvZ3JhbV9oYW5kbGUsIG5hbWUsIGluZGV4KTsKIAotR1F1YXJrCi1nc3RfZ2xfc2hhZGVyX2Vycm9yX3F1YXJrICh2b2lkKQotewotICByZXR1cm4gZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKCJnc3QtZ2wtc2hhZGVyLWVycm9yIik7CisgIGdsLT5CaW5kQXR0cmliTG9jYXRpb24gKHByaXYtPnByb2dyYW1faGFuZGxlLCBpbmRleCwgbmFtZSk7CiB9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXIuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5oCmluZGV4IDk3Zjk4ZmMuLjIxNDEwZTIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlci5oCkBAIC0yNiwyNiArMjYsMTQgQEAKIAogR19CRUdJTl9ERUNMUwogCitHVHlwZSBnc3RfZ2xfc2hhZGVyX2dldF90eXBlICh2b2lkKTsKICNkZWZpbmUgR1NUX0dMX1RZUEVfU0hBREVSICAgICAgICAgKGdzdF9nbF9zaGFkZXJfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX1NIQURFUihvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfU0hBREVSLCBHc3RHTFNoYWRlcikpCiAjZGVmaW5lIEdTVF9HTF9TSEFERVJfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9TSEFERVIsIEdzdEdMU2hhZGVyQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfU0hBREVSKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9TSEFERVIpKQotI2RlZmluZSBHU1RfR0xfSVNfU0hBREVSX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9TSEFERVIpKQorI2RlZmluZSBHU1RfSVNfR0xfU0hBREVSKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9TSEFERVIpKQorI2RlZmluZSBHU1RfSVNfR0xfU0hBREVSX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9TSEFERVIpKQogI2RlZmluZSBHU1RfR0xfU0hBREVSX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1NIQURFUiwgR3N0R0xTaGFkZXJDbGFzcykpCiAKLSNkZWZpbmUgR1NUX0dMX1NIQURFUl9FUlJPUiAoZ3N0X2dsX3NoYWRlcl9lcnJvcl9xdWFyayAoKSkKLQotdHlwZWRlZiBlbnVtIHsKLSAgR1NUX0dMX1NIQURFUl9FUlJPUl9DT01QSUxFLAotICBHU1RfR0xfU0hBREVSX0VSUk9SX0xJTkssCi0gIEdTVF9HTF9TSEFERVJfRVJST1JfUFJPR1JBTQotfSBHc3RHTFNoYWRlckVycm9yOwotCi10eXBlZGVmIGVudW0gewotICBHU1RfR0xfU0hBREVSX0ZSQUdNRU5UX1NPVVJDRSwKLSAgR1NUX0dMX1NIQURFUl9WRVJURVhfU09VUkNFCi19IEdzdEdMU2hhZGVyU291cmNlVHlwZTsKLQogc3RydWN0IF9Hc3RHTFNoYWRlciB7CiAgIC8qPCBwcml2YXRlID4qLwogICBHc3RPYmplY3QgcGFyZW50OwpAQCAtNTMsNiArNDEsOCBAQAogICBHc3RHTENvbnRleHQgKmNvbnRleHQ7CiAKICAgR3N0R0xTaGFkZXJQcml2YXRlICpwcml2OworCisgIGdwb2ludGVyIF9wYWRkaW5nW0dTVF9QQURESU5HXTsKIH07CiAKIHN0cnVjdCBfR3N0R0xTaGFkZXJDbGFzcyB7CkBAIC02MCwzMyArNTAsMjkgQEAKICAgR3N0T2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOwogfTsKIAotLyogbWV0aG9kcyAqLworR3N0R0xTaGFkZXIgKiBnc3RfZ2xfc2hhZGVyX25ldyAgICAgICAgICAgICAgICAgICAgIChHc3RHTENvbnRleHQgKmNvbnRleHQpOworR3N0R0xTaGFkZXIgKiBnc3RfZ2xfc2hhZGVyX25ld193aXRoX3N0YWdlcyAgICAgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHRXJyb3IgKiogZXJyb3IsIC4uLik7CitHc3RHTFNoYWRlciAqIGdzdF9nbF9zaGFkZXJfbmV3X2xpbmtfd2l0aF9zdGFnZXMgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdFcnJvciAqKiBlcnJvciwgLi4uKTsKK0dzdEdMU2hhZGVyICogZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAgICAgICAgICAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR0Vycm9yICoqIGVycm9yKTsKIAotR1F1YXJrIGdzdF9nbF9zaGFkZXJfZXJyb3JfcXVhcmsgKHZvaWQpOwotR1R5cGUgZ3N0X2dsX3NoYWRlcl9nZXRfdHlwZSAodm9pZCk7CitnYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2F0dGFjaCAgICAgICAgICAgICAgICAgICAgICAgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSk7CitnYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2F0dGFjaF91bmxvY2tlZCAgICAgICAgICAgICAgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSk7CiAKLUdzdEdMU2hhZGVyICogZ3N0X2dsX3NoYWRlcl9uZXcgKEdzdEdMQ29udGV4dCAqY29udGV4dCk7Cit2b2lkICAgICBnc3RfZ2xfc2hhZGVyX2RldGFjaCAgICAgICAgICAgICAgICAgICAgICAgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSk7Cit2b2lkICAgICBnc3RfZ2xfc2hhZGVyX2RldGFjaF91bmxvY2tlZCAgICAgICAgICAgICAgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBHc3RHTFNMU3RhZ2UgKiBzdGFnZSk7CiAKLWludCBnc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZShHc3RHTFNoYWRlciAqIHNoYWRlcik7CitnYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlICAgICAgICAgKEdzdEdMU2hhZGVyICogc2hhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMU3RhZ2UgKnN0YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyb3IpOworZ2Jvb2xlYW4gZ3N0X2dsX3NoYWRlcl9saW5rICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RHTFNoYWRlciAqIHNoYWRlciwgR0Vycm9yICoqIGVycm9yKTsKK2dib29sZWFuIGdzdF9nbF9zaGFkZXJfaXNfbGlua2VkICAgICAgICAgICAgICAgICAgICAoR3N0R0xTaGFkZXIgKnNoYWRlcik7CiAKLXZvaWQgICAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZSAgIChHc3RHTFNoYWRlciAqc2hhZGVyLCBjb25zdCBnY2hhciAqc3JjKTsKLXZvaWQgICAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlIChHc3RHTFNoYWRlciAqc2hhZGVyLCBjb25zdCBnY2hhciAqc3JjKTsKLWNvbnN0IGdjaGFyICogZ3N0X2dsX3NoYWRlcl9nZXRfdmVydGV4X3NvdXJjZSAgIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKLWNvbnN0IGdjaGFyICogZ3N0X2dsX3NoYWRlcl9nZXRfZnJhZ21lbnRfc291cmNlIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKK2ludCBnc3RfZ2xfc2hhZGVyX2dldF9wcm9ncmFtX2hhbmRsZSAgICAgICAgICAgICAgICAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpOwogCi12b2lkICAgICBnc3RfZ2xfc2hhZGVyX3NldF9hY3RpdmUgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyLCBnYm9vbGVhbiBhY3RpdmUpOwotZ2Jvb2xlYW4gZ3N0X2dsX3NoYWRlcl9pc19jb21waWxlZCAgICAgICAoR3N0R0xTaGFkZXIgKnNoYWRlcik7Ci1nYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGUgICAgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyLCBHRXJyb3IgKiplcnJvcik7Ci1nYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYW5kX2NoZWNrIChHc3RHTFNoYWRlciAqc2hhZGVyLCBjb25zdCBnY2hhciAqc291cmNlLCBHc3RHTFNoYWRlclNvdXJjZVR5cGUgdHlwZSk7Ci1nYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYWxsX3dpdGhfYXR0cmlic19hbmRfY2hlY2sgKEdzdEdMU2hhZGVyICpzaGFkZXIsIGNvbnN0IGdjaGFyICp2X3NyYywgY29uc3QgZ2NoYXIgKmZfc3JjLCBjb25zdCBnaW50IG5fYXR0cmlicywgY29uc3QgZ2NoYXIgKmF0dHJpYl9uYW1lc1tdLCBHTGludCBhdHRyaWJfbG9jc1tdKTsKLQotZ2Jvb2xlYW4gZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF9mX2FuZF9jaGVjayAgIChHc3RHTFNoYWRlciAqc2hhZGVyLCBjb25zdCBnY2hhciAqdl9zcmMsIGNvbnN0IGdpbnQgbl9hdHRyaWJzLCBjb25zdCBnY2hhciAqYXR0cmliX25hbWVzW10sIEdMaW50IGF0dHJpYl9sb2NzW10pOwotZ2Jvb2xlYW4gZ3N0X2dsX3NoYWRlcl9jb21waWxlX3dpdGhfZGVmYXVsdF92X2FuZF9jaGVjayAgIChHc3RHTFNoYWRlciAqc2hhZGVyLCBjb25zdCBnY2hhciAqZl9zcmMsIEdMaW50ICpwb3NfbG9jLCBHTGludCAqdGV4X2xvYyk7Ci1nYm9vbGVhbiBnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfd2l0aF9kZWZhdWx0X3ZmX2FuZF9jaGVjayAgKEdzdEdMU2hhZGVyICpzaGFkZXIsIEdMaW50ICpwb3NfbG9jLCBHTGludCAqdGV4X2xvYyk7Ci0KLXZvaWQgZ3N0X2dsX3NoYWRlcl9yZWxlYXNlICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKLXZvaWQgZ3N0X2dsX3NoYWRlcl91c2UgICAgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKLXZvaWQgZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyIChHc3RHTENvbnRleHQgKmNvbnRleHQpOwordm9pZCBnc3RfZ2xfc2hhZGVyX3JlbGVhc2UgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKK3ZvaWQgZ3N0X2dsX3NoYWRlcl9yZWxlYXNlX3VubG9ja2VkICAgICAgICAgICAgICAgICAoR3N0R0xTaGFkZXIgKiBzaGFkZXIpOwordm9pZCBnc3RfZ2xfc2hhZGVyX3VzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RHTFNoYWRlciAqc2hhZGVyKTsKK3ZvaWQgZ3N0X2dsX2NvbnRleHRfY2xlYXJfc2hhZGVyICAgICAgICAgICAgICAgICAgICAoR3N0R0xDb250ZXh0ICpjb250ZXh0KTsKIAogdm9pZCBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpICAgICAgICAgICAoR3N0R0xTaGFkZXIgKnNoYWRlciwgY29uc3QgZ2NoYXIgKm5hbWUsIGdpbnQgdmFsdWUpOwogdm9pZCBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdiAgICAgICAgICAoR3N0R0xTaGFkZXIgKnNoYWRlciwgY29uc3QgZ2NoYXIgKm5hbWUsIGd1aW50IGNvdW50LCBnaW50ICp2YWx1ZSk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzI5YmU2ZgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnN0cmluZ3MuYwpAQCAtMCwwICsxLDcxIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdGdsc2hhZGVyc3RyaW5ncy5oIgorCisvKiAqSU5ERU5ULU9GRiogKi8KK2NvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ192ZXJ0ZXhfZGVmYXVsdCA9CisgICAgImF0dHJpYnV0ZSB2ZWM0IGFfcG9zaXRpb247XG4iCisgICAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Y29vcmQ7XG4iCisgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgorICAgICJ2b2lkIG1haW4oKVxuIgorICAgICJ7XG4iCisgICAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjtcbiIKKyAgICAiICAgdl90ZXhjb29yZCA9IGFfdGV4Y29vcmQ7XG4iCisgICAgIn1cbiI7CisKK2NvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ192ZXJ0ZXhfbWF0NF90ZXh0dXJlX3RyYW5zZm9ybSA9CisgICAgInVuaWZvcm0gbWF0NCB1X3RyYW5zZm9ybWF0aW9uO1xuIgorICAgICJhdHRyaWJ1dGUgdmVjNCBhX3Bvc2l0aW9uO1xuIgorICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleGNvb3JkO1xuIgorICAgICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDtcbiIKKyAgICAidm9pZCBtYWluKClcbiIKKyAgICAie1xuIgorICAgICIgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG4iCisgICAgIiAgIHZfdGV4Y29vcmQgPSAodV90cmFuc2Zvcm1hdGlvbiAqIHZlYzQoYV90ZXhjb29yZCwgMCwgMSkpLnh5O1xuIgorICAgICJ9XG4iOworCitjb25zdCBnY2hhciAqZ3N0X2dsX3NoYWRlcl9zdHJpbmdfZnJhZ21lbnRfZGVmYXVsdCA9CisgICAgIiNpZmRlZiBHTF9FU1xuIgorICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDtcbiIKKyAgICAiI2VuZGlmXG4iCisgICAgInZhcnlpbmcgdmVjMiB2X3RleGNvb3JkO1xuIgorICAgICJ1bmlmb3JtIHNhbXBsZXIyRCB0ZXg7XG4iCisgICAgInZvaWQgbWFpbigpXG4iCisgICAgIntcbiIKKyAgICAiICBnbF9GcmFnQ29sb3IgPSB0ZXh0dXJlMkQodGV4LCB2X3RleGNvb3JkKTtcbiIKKyAgICAifSI7CisKK2NvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ19mcmFnbWVudF9leHRlcm5hbF9vZXNfZGVmYXVsdCA9CisgICAgIiNleHRlbnNpb24gR0xfT0VTX0VHTF9pbWFnZV9leHRlcm5hbCA6IHJlcXVpcmVcbiIKKyAgICAiI2lmZGVmIEdMX0VTXG4iCisgICAgInByZWNpc2lvbiBtZWRpdW1wIGZsb2F0O1xuIgorICAgICIjZW5kaWZcbiIKKyAgICAidmFyeWluZyB2ZWMyIHZfdGV4Y29vcmQ7XG4iCisgICAgInVuaWZvcm0gc2FtcGxlckV4dGVybmFsT0VTIHRleDtcbiIKKyAgICAidm9pZCBtYWluKClcbiIKKyAgICAie1xuIgorICAgICIgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIHZfdGV4Y29vcmQpO1xuIgorICAgICJ9IjsKKy8qICpJTkRFTlQtT04qICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJzdHJpbmdzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDllYThkZQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnN0cmluZ3MuaApAQCAtMCwwICsxLDM2IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfR0xfU0hBREVSX1NUUklOR1NfSF9fCisjZGVmaW5lIF9fR1NUX0dMX1NIQURFUl9TVFJJTkdTX0hfXworCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisKK0dfQkVHSU5fREVDTFMKKworZXh0ZXJuIGNvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ192ZXJ0ZXhfZGVmYXVsdDsKK2V4dGVybiBjb25zdCBnY2hhciAqZ3N0X2dsX3NoYWRlcl9zdHJpbmdfZnJhZ21lbnRfZGVmYXVsdDsKKworZXh0ZXJuIGNvbnN0IGdjaGFyICpnc3RfZ2xfc2hhZGVyX3N0cmluZ192ZXJ0ZXhfbWF0NF90ZXh0dXJlX3RyYW5zZm9ybTsKK2V4dGVybiBjb25zdCBnY2hhciAqZ3N0X2dsX3NoYWRlcl9zdHJpbmdfZnJhZ21lbnRfZXh0ZXJuYWxfb2VzX2RlZmF1bHQ7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9HTF9TSEFERVJfU1RSSU5HU19IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnZhcmlhYmxlcy5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJlMDRjOTQuLjAwMDAwMDAKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2hhZGVydmFyaWFibGVzLmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNDg4ICswLDAgQEAKLS8qCi0gKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgMjAwOSBMdWMgRGVzY2hlbmF1eCA8bHVjLmRlc2NoZW5hdXhAZnJlZXN1cmYuY2g+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSNpbmNsdWRlICJjb25maWcuaCIKLSNlbmRpZgotCi0jaW5jbHVkZSAiZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaCIKLQotI2lmICFkZWZpbmVkKHN0cnRva19yKSAmJiBkZWZpbmVkKEdfT1NfV0lOMzIpCi0jaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNkZWZpbmUgc3RydG9rX3Igc3RydG9rX3MKLSNlbHNlCi0jZGVmaW5lIHN0cnRva19yKHMsZCxwKSBzdHJ0b2socyxkKQotI2VuZGlmCi0jZW5kaWYKLQotI2RlZmluZSB0cmltbGVmdChzLGNoYXJzKSB3aGlsZShzWzBdICYmIHN0cmNocihjaGFycyxzWzBdKSkgKytzOwotI2RlZmluZSB0cmltcmlnaHQocyxjaGFycykgeyBcCi0JY2hhciAqZW5kOyBcCi0JZW5kPXMrc3RybGVuKHMpLTE7IFwKLQl3aGlsZShlbmQ+PXMgJiYgc3RyY2hyKGNoYXJzLGVuZFswXSkpIChlbmQtLSlbMF09MDsgXAotfQotCi1jb25zdCBjaGFyICpnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbXSA9IHsKLSAgImJvb2wiLAotICAiaW50IiwKLSAgInVpbnQiLAotICAiZmxvYXQiLAotICAidmVjMiIsCi0gICJ2ZWMzIiwKLSAgInZlYzQiLAotICAiYnZlYzIiLAotICAiYnZlYzMiLAotICAiYnZlYzQiLAotICAiaXZlYzIiLAotICAiaXZlYzMiLAotICAiaXZlYzQiLAotICAidXZlYzIiLAotICAidXZlYzMiLAotICAidXZlYzQiLAotICAibWF0MiIsCi0gICJtYXQzIiwKLSAgIm1hdDQiLAotICAibWF0MngyIiwKLSAgIm1hdDJ4MyIsCi0gICJtYXQyeDQiLAotICAibWF0M3gyIiwKLSAgIm1hdDN4MyIsCi0gICJtYXQzeDQiLAotICAibWF0NHgyIiwKLSAgIm1hdDR4MyIsCi0gICJtYXQ0eDQiLAotICAwCi19OwotCi10eXBlZGVmIGVudW0KLXsKLSAgX2Jvb2wsCi0gIF9pbnQsCi0gIF91aW50LAotICBfZmxvYXQsCi0gIF92ZWMyLAotICBfdmVjMywKLSAgX3ZlYzQsCi0gIF9idmVjMiwKLSAgX2J2ZWMzLAotICBfYnZlYzQsCi0gIF9pdmVjMiwKLSAgX2l2ZWMzLAotICBfaXZlYzQsCi0gIF91dmVjMiwKLSAgX3V2ZWMzLAotICBfdXZlYzQsCi0gIF9tYXQyLAotICBfbWF0MywKLSAgX21hdDQsCi0gIF9tYXQyeDIsCi0gIF9tYXQyeDMsCi0gIF9tYXQyeDQsCi0gIF9tYXQzeDIsCi0gIF9tYXQzeDMsCi0gIF9tYXQzeDQsCi0gIF9tYXQ0eDIsCi0gIF9tYXQ0eDMsCi0gIF9tYXQ0eDQsCi0gIF9kYXRhdHlwZWNvdW50Ci19IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZWluZGV4OwotCi10eXBlZGVmIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYwotewotICBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVpbmRleCB0eXBlOwotICBjaGFyICpuYW1lOwotICBpbnQgYXJyYXlzaXplOwotICBpbnQgY291bnQ7Ci0gIHZvaWQgKnZhbHVlOwotCi19IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjOwotCi1jaGFyICpwYXJzZW5hbWUgKGNoYXIgKip2YXJuYW1lLCBpbnQgKmFycmF5c2l6ZSwgY2hhciAqKnNhdmVwdHIpOwotY2hhciAqcGFyc2V2YWx1ZSAoY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KTsKLWNoYXIgKnZlY19wYXJzZXZhbHVlIChpbnQgbiwgY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KTsKLWNoYXIgKmJ2ZWNfcGFyc2V2YWx1ZSAoaW50IG4sIGNoYXIgKnZhbHVlLCBjaGFyICpfc2F2ZXB0ciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCk7Ci1jaGFyICppdmVjX3BhcnNldmFsdWUgKGludCBuLCBjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpOwotY2hhciAqdXZlY19wYXJzZXZhbHVlIChpbnQgbiwgY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KTsKLWNoYXIgKm1hdF9wYXJzZXZhbHVlIChpbnQgbiwgaW50IG0sIGNoYXIgKnZhbHVlLCBjaGFyICpfc2F2ZXB0ciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCk7Ci0KLS8qCi0JRnVuY3Rpb246Ci0JCWdzdF9nbF9zaGFkZXJ2YXJpYWJsZXNfcGFyc2UKLQotCURlc2NyaXB0aW9uOgotCQlQYXJzZSB1bmlmb3JtIHZhcmlhYmxlcyBkZWNsYXJhdGlvbnMgYW5kIHNldCB0aGVpciB2YWx1ZXMgaW4KLQkJdGhlIHNwZWNpZmllZCBzaGFkZXIuCi0KLQlBcmd1bWVudHM6Ci0KLQkJR3N0R0xTaGFkZXIgKnNoYWRlcjoKLQkJCVNoYWRlciBpbiB3aGljaCB2YXJpYWJsZXMgYXJlIHRvIGJlIHNldC4KLQotCQljaGFyICp2YXJpYWJsZXM6Ci0JCQlUaGUgdGV4dCB0byBiZSBwYXJzZWQuCi0KLQkJaW50ICgqX3NldHZhcmlhYmxlKSgpOgotCQkJRGVmYXVsdHMgdG8gZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX3NldCgpLgotCQkJWW91IGNhbiBzcGVjaWZ5IGhlcmUgYSB1c2VyIGZ1bmN0aW9uIGZvciBtYW5hZ2luZyB0aGUKLQkJCXBhcnNlZCB2YXJpYWJsZSBkZXNjcmlwdGlvbi4KLQotCXJldHVybiB2YWx1ZXM6Ci0JCSAwOiAJTm8gZXJyb3IuCi0JCS0xOglFcnJvci4KLQotKi8KLQotaW50Ci1nc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlIChHc3RHTFNoYWRlciAqIHNoYWRlciwgY2hhciAqdmFyaWFibGVzLAotICAgIGludCAoKl9zZXR2YXJpYWJsZSkgKEdzdEdMU2hhZGVyICogc2hhZGVyLAotICAgICAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKiB2KSkKLXsKLSAgY2hhciAqcCA9IDA7Ci0gIGNoYXIgKnAwOwotICBjaGFyICplOwotICBjaGFyIGUxID0gMDsKLSAgY2hhciAqdCA9IDA7Ci0gIGNoYXIgKnZhcm5hbWU7Ci0gIGNoYXIgKnZhcnR5cGU7Ci0gIGNoYXIgKnZhcnZhbHVlOwotICBpbnQgYXJyYXlzaXplID0gMDsKLSAgY2hhciAqc2F2ZXB0ciA9IHZhcmlhYmxlczsKLSAgaW50IGxpbmUgPSAxOwotICBjaGFyICpsaW07Ci0gIGludCBpOwotICBpbnQgbGVuOwotICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgcmV0OwotCi0gIGlmICghX3NldHZhcmlhYmxlKSB7Ci0gICAgX3NldHZhcmlhYmxlID0gZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX3NldDsKLSAgfQotCi0gIGlmICghdmFyaWFibGVzKQotICAgIHJldHVybiAwOwotCi0gIHAwID0gdmFyaWFibGVzOwotICB0cmltcmlnaHQgKHAwLCAiIFx0XHJcbiIpOwotICBsaW0gPSB2YXJpYWJsZXMgKyBzdHJsZW4gKHZhcmlhYmxlcyk7Ci0gIGUgPSBzdHJjaHIgKHAwLCAnOycpOwotICB3aGlsZSAocDAgPCBsaW0pIHsKLQotICAgIGlmICghZSkgewotICAgICAgaWYgKHAwWzBdKQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgYnJlYWs7Ci0gICAgfQotCi0gICAgZTEgPSBlWzFdOwotICAgIGVbMV0gPSAwOwotICAgIHAgPSBnX3N0cmR1cCAocDApOwotICAgIGVbMV0gPSBlMTsKLQotICAgIHRyaW1yaWdodCAocCwgIiBcdCIpOwotICAgIHRyaW1sZWZ0IChwLCAiIFx0XHJcbiIpOwotCi0gICAgdCA9IHN0cnRva19yIChwLCAiIFx0IiwgJnNhdmVwdHIpOwotICAgIGlmICghdCkKLSAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICB0cmltcmlnaHQgKHQsICIgXHRcclxuIik7Ci0KLSAgICBpZiAodFswXSkgewotCi0gICAgICBpZiAoIXN0cmNtcCAodCwgImNvbnN0IikpIHsKLSAgICAgICAgdCA9IHN0cnRva19yICgwLCAiIFx0IiwgJnNhdmVwdHIpOwotICAgICAgICBpZiAoIXQpCi0gICAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgICAgaWYgKCF0WzBdKQotICAgICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgICB9Ci0gICAgICAvLyBwYXJzZSBkYXRhIHR5cGUKLSAgICAgIGZvciAoaSA9IDA7IGkgPCBfZGF0YXR5cGVjb3VudDsgKytpKSB7Ci0gICAgICAgIGlmICghc3RyY21wICh0LCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbaV0pKSB7Ci0gICAgICAgICAgcmV0LnR5cGUgPSAoZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlaW5kZXgpIGk7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGlmIChpID09IF9kYXRhdHlwZWNvdW50KQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotCi0gICAgICB2YXJ0eXBlID0gZ19zdHJkdXAgKHQpOwotICAgICAgR1NUX0lORk8gKCJ2YXJ0eXBlIDogJyVzJ1xuIiwgdmFydHlwZSk7Ci0KLSAgICAgIHRyaW1sZWZ0IChzYXZlcHRyLCAiIFx0Iik7Ci0gICAgICB0ID0gc2F2ZXB0cjsKLSAgICAgIGlmICgqc2F2ZXB0ciA9PSAnPScpCi0gICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0KLSAgICAgIC8vIHBhcnNlIHZhcmlhYmxlIG5hbWUgYW5kIGFycmF5IHNpemUKLSAgICAgIHQgPSBwYXJzZW5hbWUgKCZ2YXJuYW1lLCAmYXJyYXlzaXplLCAmc2F2ZXB0cik7Ci0gICAgICBpZiAodCkKLSAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLQotICAgICAgdHJpbXJpZ2h0ICh2YXJuYW1lLCAiIFx0Iik7Ci0gICAgICBHU1RfSU5GTyAoInZhcm5hbWUgOiAnJXMnXG4iLCB2YXJuYW1lKTsKLSAgICAgIEdTVF9JTkZPICgiYXJyYXlzaXplIDogJWRcbiIsIGFycmF5c2l6ZSk7Ci0KLSAgICAgIC8vIGNoZWNrIHR5cGUgY2FzdCBhZnRlciBhc3NpZ25lbWVudCBvcGVyYXRvcgotICAgICAgdCA9IHN0cnRva19yICgwLCAiKCIsICZzYXZlcHRyKTsKLSAgICAgIGlmICghdCkKLSAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLQotICAgICAgaWYgKGFycmF5c2l6ZSkgewotICAgICAgICBnY2hhciAqcyA9IGdfc3RyZHVwX3ByaW50ZiAoIiVzWyVkXSIsIHZhcnR5cGUsIGFycmF5c2l6ZSk7Ci0gICAgICAgIGlmIChzdHJjbXAgKHQsIHMpKSB7Ci0gICAgICAgICAgZ19mcmVlIChzKTsKLSAgICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgICB9Ci0gICAgICAgIGdfZnJlZSAocyk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAoc3RyY21wICh0LCB2YXJ0eXBlKSkKLSAgICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgfQotCi0gICAgICAvLyBleHRyYWN0IHZhcmlhYmxlIHZhbHVlCi0gICAgICB0ID0gc3RydG9rX3IgKDAsICI7IiwgJnNhdmVwdHIpOwotICAgICAgaWYgKCF0KQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotCi0gICAgICBpZiAoIXRbMF0pCi0gICAgICAgIGdvdG8gcGFyc2VfZXJyb3I7Ci0gICAgICBpZiAoKihzYXZlcHRyIC0gMikgIT0gJyknKQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotICAgICAgKihzYXZlcHRyIC0gMikgPSAwOwotICAgICAgaWYgKCF0WzBdKQotICAgICAgICBnb3RvIHBhcnNlX2Vycm9yOwotCi0gICAgICB2YXJ2YWx1ZSA9IGdfc3RyZHVwICh0KTsKLSAgICAgIEdTVF9JTkZPICgidmFsdWU6ICVzXG5cbiIsIHZhcnZhbHVlKTsKLQotICAgICAgdCA9IHNhdmVwdHI7Ci0gICAgICBpZiAodFswXSkKLSAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLQotICAgICAgLy8gcGFyc2UgdmFyaWFibGUgdmFsdWUKLSAgICAgIGxlbiA9IHN0cmxlbiAodmFydmFsdWUpOwotICAgICAgcmV0Lm5hbWUgPSB2YXJuYW1lOwotICAgICAgcmV0LmFycmF5c2l6ZSA9IGFycmF5c2l6ZTsKLSAgICAgIHQgPSBwYXJzZXZhbHVlICh2YXJ2YWx1ZSwgc2F2ZXB0ciwgJnJldCk7Ci0gICAgICBpZiAodCkgewotICAgICAgICB0IC09IGxlbjsKLSAgICAgICAgZ290byBwYXJzZV9lcnJvcjsKLSAgICAgIH0KLSAgICAgIC8vIHNldCB2YXJpYWJsZSB2YWx1ZQotICAgICAgX3NldHZhcmlhYmxlIChzaGFkZXIsICZyZXQpOwotCi0gICAgICBmZmx1c2ggKDApOwotICAgIH0KLSAgICAvLyBUZWxsIG1lIHdoeSB3ZSBjYW5ub3QgZnJlZShwKSB3aGl0aG91dCBzZWdmYXVsdC4KLSAgICAvL2dfZnJlZShwKTsKLSAgICBwMCA9IGUgKyAxOwotICAgICsrbGluZTsKLSAgICBlID0gc3RyY2hyIChwMCwgJzsnKTsKLSAgfQotCi0gIHJldHVybiAwOwotCi1wYXJzZV9lcnJvcjoKLSAgaWYgKCF0KSB7Ci0gICAgdCA9IHNhdmVwdHI7Ci0gIH0KLSAgaWYgKCFlKSB7Ci0gICAgdCA9IHAgPSBwMDsKLSAgfSBlbHNlIHsKLSAgICBlWzFdID0gMDsKLSAgICB0cmltbGVmdCAocDAsICIgXHRcclxuIik7Ci0gICAgR1NUX0VSUk9SICgiXG4lcyIsIHAwKTsKLSAgICBlWzFdID0gZTE7Ci0gIH0KLSAgR1NUX0VSUk9SICgicGFyc2UgZXJyb3Igb24gbGluZSAlZCwgcG9zaXRpb24gJWxkICglcykiLCBsaW5lLCAoZ2xvbmcpICh0IC0gcCksCi0gICAgICB0KTsKLSAgcmV0dXJuIC0xOwotfQotCi0vKgotCUZ1bmN0aW9uOgotCQlwYXJzZW5hbWUKLQotCURlc2NyaXB0aW9uOgotCQlQYXJzZSB0ZXh0IGJldHdlZW4gdGhlIGRhdGEgdHlwZSBhbmQgdGhlIGFzc2lnbmVtZW50IG9wZXJhdG9yCi0JCShpZTogdmFyaWFibGUgbmFtZSBhbmQgYXJyYXkgc2l6ZSkuCi0KLQlBcmd1bWVudHM6Ci0KLQkJY2hhciAqKnZhcm5hbWU6Ci0JCQlUZXh0IHRvIHBhcnNlLgotCi0JCWludCAqYXJyYXlzaXplOgotCQkJUG9pbnRlciB0byBhcnJheSBzaXplLiBTZXQgdG8gMCBpZiBubyBhcnJheS4KLQotCQljaGFyICoqc2F2ZXB0cjoKLQkJCUFkZHJlc3Mgb2YgY2hhciAqc2F2ZXB0ciBmb3Igc3RydG9rX3IoKQotCi0JcmV0dXJuIHZhbHVlczoKLQkJIDA6IAlObyBlcnJvci4KLQkJITA6CVBvaW50ZXIgdG8gcGFyc2UgZXJyb3IuCi0KLSovCi0KLWNoYXIgKgotcGFyc2VuYW1lIChjaGFyICoqdmFybmFtZSwgaW50ICphcnJheXNpemUsIGNoYXIgKipzYXZlcHRyKQotewotICBjaGFyICp0OwotICBjaGFyICppOwotICBnaW50IGo7Ci0KLSAgKmFycmF5c2l6ZSA9IDA7Ci0gIHQgPSBzdHJ0b2tfciAoMCwgIj0iLCBzYXZlcHRyKTsKLSAgaWYgKCF0KQotICAgIHJldHVybiAqc2F2ZXB0cjsKLQotICB0cmltbGVmdCAodCwgIiBcdCIpOwotICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLQotICBpID0gc3RyY2hyICh0LCAnWycpOwotICBpZiAoIWkpIHsgICAgICAgICAgICAgICAgICAgICAvLyBub3QgYW4gYXJyYXkKLSAgICBpZiAoIXRbMF0pCi0gICAgICByZXR1cm4gdDsKLSAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodCk7ICsraikgewotICAgICAgaWYgKCFzdHJjaHIgKFZBTElEX1ZBUk5BTUVfQ0hBUlMsIHRbal0pKQotICAgICAgICByZXR1cm4gdCArIGo7Ci0gICAgfQotICAgICp2YXJuYW1lID0gZ19zdHJkdXAgKHQpOwotICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAvLyBpcyBhbiBhcnJheQotCi0gICAgY2hhciAqaTI7Ci0gICAgY2hhciAqYzsKLQotICAgIGkyID0gc3RyY2hyIChpICsgMSwgJ10nKTsKLSAgICBpZiAoIWkyKQotICAgICAgcmV0dXJuIGkgKyAxOwotICAgICppID0gMDsKLQotICAgIGlmICghdFswXSkKLSAgICAgIHJldHVybiB0OwotICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh0KTsgKytqKSB7Ci0gICAgICBpZiAoIXN0cmNociAoVkFMSURfVkFSTkFNRV9DSEFSUywgdFtqXSkpCi0gICAgICAgIHJldHVybiB0OwotICAgIH0KLQotICAgICp2YXJuYW1lID0gZ19zdHJkdXAgKHQpOwotICAgICppID0gJ1snOwotCi0gICAgZm9yIChjID0gaSArIDE7IGMgPCBpMjsgKytjKQotICAgICAgaWYgKCpjIDwgJzAnIHx8ICpjID4gJzknKQotICAgICAgICByZXR1cm4gYzsKLQotICAgICppMiA9IDA7Ci0gICAgKmFycmF5c2l6ZSA9IGF0b2kgKGkgKyAxKTsKLSAgICAqaTIgPSAnXSc7Ci0KLSAgICBpZiAoISphcnJheXNpemUpCi0gICAgICByZXR1cm4gaSArIDE7Ci0gIH0KLQotICByZXR1cm4gMDsKLX0KLQotLyoKLQlGdW5jdGlvbjoKLQkJZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX3NldAotCi0JRGVzY3JpcHRpb246Ci0JCVNldCB2YXJpYWJsZSB2YWx1ZSBpbiB0aGUgc3BlY2lmaWVkIHNoYWRlcgotCi0JQXJndW1lbnRzOgotCi0JCUdzdEdsU2hhZGVyICpzaGFkZXI6Ci0JCQlUaGUgc2hhZGVyIHdoZXJlIHRvIHNldCB0aGUgdmFyaWFibGUuCi0KLQkJc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQ6Ci0JCQlUaGUgdmFyaWFibGUgZGVzY3JpcHRpb24uCi0KLQlyZXR1cm4gdmFsdWVzOgotCQkgMDogCU5vIGVycm9yLgotCQkhMDoJVmFyaWFibGUgdHlwZSB1bmtub3duL2luY29ycmVjdC4KLQotKi8KLQotaW50Ci1nc3RfZ2xfc2hhZGVydmFyaWFibGVfc2V0IChHc3RHTFNoYWRlciAqIHNoYWRlciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCkKLXsKLQotICBzd2l0Y2ggKHJldC0+dHlwZSkgewotICAgIGNhc2UgX2Jvb2w6Ci0gICAgICBpZiAocmV0LT5hcnJheXNpemUpIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaXYgKHNoYWRlciwgcmV0LT5uYW1lLCByZXQtPmNvdW50LAotICAgICAgICAgICAgKGludCAqKSByZXQtPnZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgcmV0LT5uYW1lLAotICAgICAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbMF0pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBfaW50OgotICAgICAgaWYgKHJldC0+YXJyYXlzaXplKSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWl2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwKLSAgICAgICAgICAgIChpbnQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsIHJldC0+bmFtZSwKLSAgICAgICAgICAgICgoaW50ICopIHJldC0+dmFsdWUpWzBdKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfdWludDoKLSAgICAgIGlmIChyZXQtPmFycmF5c2l6ZSkgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsCi0gICAgICAgICAgICAoaW50ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKHVuc2lnbmVkIGludCAqKSByZXQtPnZhbHVlKVswXSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX2Zsb2F0OgotICAgICAgaWYgKHJldC0+YXJyYXlzaXplKSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwKLSAgICAgICAgICAgIChmbG9hdCAqKSByZXQtPnZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWYgKHNoYWRlciwgcmV0LT5uYW1lLAotICAgICAgICAgICAgKChmbG9hdCAqKSByZXQtPnZhbHVlKVswXSk7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX3ZlYzI6Ci0gICAgICBpZiAocmV0LT5hcnJheXNpemUpIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZnYgKHNoYWRlciwgcmV0LT5uYW1lLCByZXQtPmNvdW50LAotICAgICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yZiAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpWzBdLCAoKGZsb2F0ICopIHJldC0+dmFsdWUpWzFdKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfYnZlYzI6Ci0gICAgY2FzZSBfaXZlYzI6Ci0gICAgY2FzZSBfdXZlYzI6Ci0gICAgICBpZiAocmV0LT5hcnJheXNpemUpIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8yaXYgKHNoYWRlciwgcmV0LT5uYW1lLCByZXQtPmNvdW50LAotICAgICAgICAgICAgKGludCAqKSByZXQtPnZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMmkgKHNoYWRlciwgcmV0LT5uYW1lLAotICAgICAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbMF0sICgoaW50ICopIHJldC0+dmFsdWUpWzFdKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfdmVjMzoKLSAgICAgIGlmIChyZXQtPmFycmF5c2l6ZSkgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsCi0gICAgICAgICAgICAoZmxvYXQgKikgcmV0LT52YWx1ZSk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzNmIChzaGFkZXIsIHJldC0+bmFtZSwKLSAgICAgICAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbMF0sICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbMV0sCi0gICAgICAgICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpWzJdKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfYnZlYzM6Ci0gICAgY2FzZSBfaXZlYzM6Ci0gICAgY2FzZSBfdXZlYzM6Ci0gICAgICBpZiAocmV0LT5hcnJheXNpemUpIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8zaXYgKHNoYWRlciwgcmV0LT5uYW1lLCByZXQtPmNvdW50LAotICAgICAgICAgICAgKGludCAqKSByZXQtPnZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fM2kgKHNoYWRlciwgcmV0LT5uYW1lLAotICAgICAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbMF0sICgoaW50ICopIHJldC0+dmFsdWUpWzFdLAotICAgICAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbMl0pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF92ZWM0OgotICAgICAgaWYgKHJldC0+YXJyYXlzaXplKSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGZ2IChzaGFkZXIsIHJldC0+bmFtZSwgcmV0LT5jb3VudCwKLSAgICAgICAgICAgIChmbG9hdCAqKSByZXQtPnZhbHVlKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fNGYgKHNoYWRlciwgcmV0LT5uYW1lLAotICAgICAgICAgICAgKChmbG9hdCAqKSByZXQtPnZhbHVlKVswXSwgKChmbG9hdCAqKSByZXQtPnZhbHVlKVsxXSwKLSAgICAgICAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbMl0sICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbM10pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9idmVjNDoKLSAgICBjYXNlIF9pdmVjNDoKLSAgICBjYXNlIF91dmVjNDoKLSAgICAgIGlmIChyZXQtPmFycmF5c2l6ZSkgewotICAgICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzRpdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsCi0gICAgICAgICAgICAoaW50ICopIHJldC0+dmFsdWUpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV80aSAoc2hhZGVyLCByZXQtPm5hbWUsCi0gICAgICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVswXSwgKChpbnQgKikgcmV0LT52YWx1ZSlbMV0sCi0gICAgICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVsyXSwgKChpbnQgKikgcmV0LT52YWx1ZSlbM10pOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQyOgotICAgIGNhc2UgX21hdDJ4MjoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzJmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQzOgotICAgIGNhc2UgX21hdDN4MzoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzNmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQ0OgotICAgIGNhc2UgX21hdDR4NDoKLSAgICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSNpZiBHU1RfR0xfSEFWRV9PUEVOR0wKLSAgICBjYXNlIF9tYXQyeDM6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDNmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQzeDI6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDJmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQyeDQ6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8yeDRmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQ0eDI6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDJmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQzeDQ6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zeDRmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQ0eDM6Ci0gICAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80eDNmdiAoc2hhZGVyLCByZXQtPm5hbWUsIHJldC0+Y291bnQsIDAsCi0gICAgICAgICAgKGZsb2F0ICopIHJldC0+dmFsdWUpOwotICAgICAgYnJlYWs7Ci0jZW5kaWYKLQotICAgIGRlZmF1bHQ6Ci0gICAgICByZXR1cm4gLTE7Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLS8qCi0JRnVuY3Rpb246Ci0JCXBhcnNldmFsdWUKLQotCURlc2NyaXB0aW9uOgotCQlQYXJzZSB0ZXh0IGNvbWluZyBhZnRlciB0aGUgYXNzaWduZW1lbnQgb3BlcmF0b3IgZm9yIHNjYWxhcgotCQl2YXJpYWJsZXMgb3IgY2FsbCB0aGUgYXBwcm9wcmlhdGUgc3Vicm91dGluZSB0byBwYXJzZSB2ZWN0b3IKLQkJdmFyaWFibGVzLgotCi0JQXJndW1lbnRzOgotCi0JCWNoYXIgKnZhbHVlOgotCQkJVGV4dCB0byBiZSBwYXJzZWQuCi0KLQkJY2hhciAqX3NhdmVwdHI6Ci0JCQlJbmRleCBvZiBlbmQgb2YgdmFsdWUuCi0KLQkJc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQ6Ci0JCQlUaGUgdmFyaWFibGUgZGVzY3JpcHRpb24gdG8gYmUgY29tcGxldGVkCi0JCQlBdCBpbnB1dCB0aW1lIGl0IGNvbnRhaW5zIHRoZSBkYXRhIHR5cGUgaW5kZXggKHR5cGUpLAotCQkJdmFyaWFibGUgbmFtZSAobmFtZSkgYW5kIGFycmF5IHNpemUgKGFycmF5c2l6ZSkuCi0KLQlyZXR1cm4gdmFsdWVzOgotCQkgMDogCU5vIGVycm9yLgotCQkhMDoJUG9pbnRlciB0byBwYXJzZSBlcnJvci4KLQotKi8KLQotY2hhciAqCi1wYXJzZXZhbHVlIChjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KQotewotCi0gIGludCBpLCBqOwotICBjaGFyICp0OwotICBjaGFyICpzYXZlcHRyID0gdmFsdWU7Ci0KLSAgc3dpdGNoIChyZXQtPnR5cGUpIHsKLSAgICBjYXNlIF9ib29sOgotICAgICAgcmV0LT5jb3VudCA9IChyZXQtPmFycmF5c2l6ZSkgPyByZXQtPmFycmF5c2l6ZSA6IDE7Ci0gICAgICBpZiAocmV0LT5jb3VudCA9PSAxKSB7ICAgIC8vIG5vIGFycmF5Ci0gICAgICAgIGlmIChzdHJjbXAgKHZhbHVlLCAidHJ1ZSIpICYmIHN0cmNtcCAodmFsdWUsICJmYWxzZSIpKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0cjsKLSAgICAgICAgcmV0LT52YWx1ZSA9ICh2b2lkICopIGdfbWFsbG9jIChzaXplb2YgKGludCkpOwotICAgICAgICAoKGludCAqKSByZXQtPnZhbHVlKVswXSA9IHN0cmNtcCAodmFsdWUsICJmYWxzZSIpOwotCi0gICAgICB9IGVsc2UgeyAgICAgICAgICAgICAgICAgIC8vIGFycmF5Ci0gICAgICAgIHJldC0+dmFsdWUgPSBnX21hbGxvYyAoc2l6ZW9mIChpbnQgKikgKiByZXQtPmNvdW50KTsKLSAgICAgICAgdCA9IHN0cnRva19yICh2YWx1ZSwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLSAgICAgICAgICBpZiAoIXQpCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLSAgICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgICAgIGlmIChzdHJjbXAgKHQsICJ0cnVlIikgJiYgc3RyY21wICh0LCAiZmFsc2UiKSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0gICAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbaV0gPSBzdHJjbXAgKHQsICJmYWxzZSIpOwotICAgICAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIGNhc2UgX2ludDoKLSAgICAgIHJldC0+Y291bnQgPSAocmV0LT5hcnJheXNpemUpID8gcmV0LT5hcnJheXNpemUgOiAxOwotICAgICAgaWYgKHJldC0+Y291bnQgPT0gMSkgewotICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgICBpZiAoIXN0cmNociAoIi0wMTIzNDU2Nzg5IiwgdmFsdWVbal0pKQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgajsKLSAgICAgICAgfQotICAgICAgICByZXQtPnZhbHVlID0gKHZvaWQgKikgZ19tYWxsb2MgKHNpemVvZiAoaW50KSk7Ci0gICAgICAgICooKGludCAqKSByZXQtPnZhbHVlKSA9IGF0b2kgKHZhbHVlKTsKLQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgcmV0LT52YWx1ZSA9IGdfbWFsbG9jIChzaXplb2YgKGludCkgKiByZXQtPmNvdW50KTsKLSAgICAgICAgdCA9IHN0cnRva19yICh2YWx1ZSwgIiwiLCAmc2F2ZXB0cik7Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IHJldC0+Y291bnQ7ICsraSkgewotCi0gICAgICAgICAgaWYgKCF0KQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgICAgIGlmICghdFswXSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgICAgIGlmICghc3RyY2hyICgiLTAxMjM0NTY3ODkiLCB2YWx1ZVtqXSkpCi0gICAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCkgKyBqOwotICAgICAgICAgIH0KLQotICAgICAgICAgICgoaW50ICopIHJldC0+dmFsdWUpW2ldID0gYXRvaSAodCk7Ci0gICAgICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF91aW50OgotICAgICAgcmV0LT5jb3VudCA9IChyZXQtPmFycmF5c2l6ZSkgPyByZXQtPmFycmF5c2l6ZSA6IDE7Ci0gICAgICBpZiAocmV0LT5jb3VudCA9PSAxKSB7Ci0gICAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh2YWx1ZSk7ICsraikgewotICAgICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OSIsIHZhbHVlW2pdKSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIGo7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0LT52YWx1ZSA9ICh2b2lkICopIGdfbWFsbG9jIChzaXplb2YgKHVuc2lnbmVkIGludCkpOwotICAgICAgICAqKCh1bnNpZ25lZCBpbnQgKikgcmV0LT52YWx1ZSkgPSBhdG9pICh2YWx1ZSk7Ci0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIHJldC0+dmFsdWUgPSBnX21hbGxvYyAoc2l6ZW9mICh1bnNpZ25lZCBpbnQpICogcmV0LT5jb3VudCk7Ci0gICAgICAgIHQgPSBzdHJ0b2tfciAodmFsdWUsICIsIiwgJnNhdmVwdHIpOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLQotICAgICAgICAgIGlmICghdCkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgICAgICBpZiAoIXRbMF0pCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICAgICAgZm9yIChqID0gMDsgaiA8IChnaW50KSBzdHJsZW4gKHZhbHVlKTsgKytqKSB7Ci0gICAgICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODkiLCB2YWx1ZVtqXSkpCi0gICAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCkgKyBqOwotICAgICAgICAgIH0KLQotICAgICAgICAgICgodW5zaWduZWQgaW50ICopIHJldC0+dmFsdWUpW2ldID0gYXRvaSAodCk7Ci0gICAgICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9mbG9hdDoKLSAgICAgIHJldC0+Y291bnQgPSAocmV0LT5hcnJheXNpemUpID8gcmV0LT5hcnJheXNpemUgOiAxOwotICAgICAgaWYgKHJldC0+Y291bnQgPT0gMSkgewotICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODkuLSIsIHZhbHVlW2pdKSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIGo7Ci0gICAgICAgIH0KLSAgICAgICAgcmV0LT52YWx1ZSA9ICh2b2lkICopIGdfbWFsbG9jIChzaXplb2YgKGZsb2F0KSk7Ci0gICAgICAgICooKGZsb2F0ICopIHJldC0+dmFsdWUpID0gKGZsb2F0KSBnX2FzY2lpX3N0cnRvZCAodmFsdWUsIE5VTEwpOwotCi0gICAgICB9IGVsc2UgewotICAgICAgICByZXQtPnZhbHVlID0gZ19tYWxsb2MgKHNpemVvZiAoZmxvYXQpICogcmV0LT5jb3VudCk7Ci0gICAgICAgIHQgPSBzdHJ0b2tfciAodmFsdWUsICIsIiwgJnNhdmVwdHIpOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLQotICAgICAgICAgIGlmICghdCkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgICAgICBpZiAoIXRbMF0pCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICAgICAgZm9yIChqID0gMDsgaiA8IChnaW50KSBzdHJsZW4gKHZhbHVlKTsgKytqKSB7Ci0gICAgICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODkuLSIsIHZhbHVlW2pdKSkKLSAgICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KSArIGo7Ci0gICAgICAgICAgfQotCi0gICAgICAgICAgKChmbG9hdCAqKSByZXQtPnZhbHVlKVtpXSA9IChmbG9hdCkgZ19hc2NpaV9zdHJ0b2QgKHQsIE5VTEwpOwotICAgICAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfdmVjMjoKLSAgICAgIHJldHVybiB2ZWNfcGFyc2V2YWx1ZSAoMiwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9idmVjMjoKLSAgICAgIHJldHVybiBidmVjX3BhcnNldmFsdWUgKDIsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfaXZlYzI6Ci0gICAgICByZXR1cm4gaXZlY19wYXJzZXZhbHVlICgyLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX3V2ZWMyOgotICAgICAgcmV0dXJuIHV2ZWNfcGFyc2V2YWx1ZSAoMiwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF92ZWMzOgotICAgICAgcmV0dXJuIHZlY19wYXJzZXZhbHVlICgzLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX2J2ZWMzOgotICAgICAgcmV0dXJuIGJ2ZWNfcGFyc2V2YWx1ZSAoMywgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9pdmVjMzoKLSAgICAgIHJldHVybiB1dmVjX3BhcnNldmFsdWUgKDMsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfdXZlYzM6Ci0gICAgICByZXR1cm4gdXZlY19wYXJzZXZhbHVlICgzLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX3ZlYzQ6Ci0gICAgICByZXR1cm4gdmVjX3BhcnNldmFsdWUgKDQsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfYnZlYzQ6Ci0gICAgICByZXR1cm4gYnZlY19wYXJzZXZhbHVlICg0LCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX2l2ZWM0OgotICAgICAgcmV0dXJuIGl2ZWNfcGFyc2V2YWx1ZSAoNCwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF91dmVjNDoKLSAgICAgIHJldHVybiB1dmVjX3BhcnNldmFsdWUgKDQsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfbWF0MjoKLSAgICBjYXNlIF9tYXQyeDI6Ci0gICAgICByZXR1cm4gbWF0X3BhcnNldmFsdWUgKDIsIDIsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfbWF0MngzOgotICAgICAgcmV0dXJuIG1hdF9wYXJzZXZhbHVlICgyLCAzLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDN4MjoKLSAgICAgIHJldHVybiBtYXRfcGFyc2V2YWx1ZSAoMywgMiwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQyeDQ6Ci0gICAgICByZXR1cm4gbWF0X3BhcnNldmFsdWUgKDIsIDQsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfbWF0NHgyOgotICAgICAgcmV0dXJuIG1hdF9wYXJzZXZhbHVlICg0LCAyLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDM6Ci0gICAgY2FzZSBfbWF0M3gzOgotICAgICAgcmV0dXJuIG1hdF9wYXJzZXZhbHVlICgzLCAzLCB2YWx1ZSwgX3NhdmVwdHIsIHJldCk7Ci0gICAgICBicmVhazsKLQotICAgIGNhc2UgX21hdDN4NDoKLSAgICAgIHJldHVybiBtYXRfcGFyc2V2YWx1ZSAoMywgNCwgdmFsdWUsIF9zYXZlcHRyLCByZXQpOwotICAgICAgYnJlYWs7Ci0KLSAgICBjYXNlIF9tYXQ0eDM6Ci0gICAgICByZXR1cm4gbWF0X3BhcnNldmFsdWUgKDQsIDMsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgY2FzZSBfbWF0NDoKLSAgICBjYXNlIF9tYXQ0eDQ6Ci0gICAgICByZXR1cm4gbWF0X3BhcnNldmFsdWUgKDQsIDQsIHZhbHVlLCBfc2F2ZXB0ciwgcmV0KTsKLSAgICAgIGJyZWFrOwotCi0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0gIHJldHVybiAwOwotfQotCi0vKgotCUZ1bmN0aW9uOgotCQl2ZWNfcGFyc2V2YWx1ZQotCi0JRGVzY3JpcHRpb246Ci0JCVBhcnNlIHRleHQgY29taW5nIGFmdGVyIHRoZSBhc3NpZ25lbWVudCBvcGVyYXRvciBmb3IgdmVjCi0JCXR5cGUgdmFyaWFibGVzLgotCi0JQXJndW1lbnRzOgotCi0JCWludCBuOwotCQkJVmVjdG9yIGRpbWVuc2lvbi4KLQotCQljaGFyICp2YWx1ZToKLQkJCVRleHQgdG8gYmUgcGFyc2VkLgotCi0JCWNoYXIgKl9zYXZlcHRyOgotCQkJSW5kZXggb2YgZW5kIG9mIHZhbHVlLgotCi0JCXN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0OgotCQkJVGhlIHZhcmlhYmxlIGRlc2NyaXB0aW9uIHRvIGJlIGNvbXBsZXRlZAotCQkJQXQgaW5wdXQgdGltZSBpdCBjb250YWlucyB0aGUgZGF0YSB0eXBlIGluZGV4ICh0eXBlKSwKLQkJCXZhcmlhYmxlIG5hbWUgKG5hbWUpIGFuZCBhcnJheSBzaXplIChhcnJheXNpemUpLgotCi0JcmV0dXJuIHZhbHVlczoKLQkJIDA6IAlObyBlcnJvci4KLQkJITA6CVBvaW50ZXIgdG8gcGFyc2UgZXJyb3IuCi0KLSovCi0KLWNoYXIgKgotdmVjX3BhcnNldmFsdWUgKGludCBuLCBjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpCi17Ci0KLSAgaW50IGk7Ci0gIGludCBqOwotICBpbnQgazsKLSAgY2hhciAqc2F2ZXB0ciA9IHZhbHVlOwotICBjaGFyICpzYXZlcHRyMjsKLSAgY2hhciAqdDsKLSAgY2hhciAqdTsKLQotICByZXQtPmNvdW50ID0gKHJldC0+YXJyYXlzaXplKSA/IHJldC0+YXJyYXlzaXplICogbiA6IG47Ci0gIHJldC0+dmFsdWUgPSBnX21hbGxvYyAoc2l6ZW9mIChmbG9hdCkgKiByZXQtPmNvdW50KTsKLQotICBpZiAoIXJldC0+YXJyYXlzaXplKSB7Ci0gICAgdCA9IHN0cnRva19yICh2YWx1ZSwgIiwiLCAmc2F2ZXB0cik7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgcmV0LT5jb3VudDsgKytpKSB7Ci0KLSAgICAgIGlmICghdCkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgIGlmICghdFswXSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KTsKLQotICAgICAgZm9yIChqID0gMDsgaiA8IChnaW50KSBzdHJsZW4gKHZhbHVlKTsgKytqKSB7Ci0gICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OS4tIiwgdmFsdWVbal0pKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCkgKyBqOwotICAgICAgfQotCi0gICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpW2ldID0gKGZsb2F0KSBnX2FzY2lpX3N0cnRvZCAodCwgTlVMTCk7Ci0gICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgIH0KLQotICB9IGVsc2UgewotCi0gICAgc2F2ZXB0cjIgPSB2YWx1ZTsKLSAgICB1ID0gc3RydG9rX3IgKHZhbHVlLCAiKSIsICZzYXZlcHRyMik7Ci0KLSAgICBmb3IgKGsgPSAwOyBrIDwgcmV0LT5hcnJheXNpemU7ICsraykgewotCi0gICAgICBpZiAoIXUpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyMiAtIHZhbHVlKTsKLQotICAgICAgdHJpbWxlZnQgKHUsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodSwgIiBcdCIpOwotCi0gICAgICBpZiAoaykgewotICAgICAgICBpZiAodVswXSAhPSAnLCcpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0gICAgICAgICsrdTsKLSAgICAgICAgdHJpbWxlZnQgKHUsICIgXHQiKTsKLSAgICAgIH0KLQotICAgICAgaWYgKHN0cm5jbXAgKHUsIGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdLAotICAgICAgICAgICAgICBzdHJsZW4gKGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdKSkpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotCi0gICAgICB1ICs9IHN0cmxlbiAoZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0pOwotICAgICAgdHJpbWxlZnQgKHUsICIgXHQiKTsKLSAgICAgIGlmICh1WzBdICE9ICcoJykKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0gICAgICArK3U7Ci0KLSAgICAgIHQgPSBzdHJ0b2tfciAodSwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgICBpZiAoIXQpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotCi0gICAgICBmb3IgKGkgPSAwOyBpIDwgbjsgKytpKSB7Ci0KLSAgICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICAgIGlmICghdFswXSkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodCAtIHZhbHVlKTsKLQotICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodCk7ICsraikgewotICAgICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OS4tIiwgdFtqXSkpCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodCAtIHZhbHVlKSArIGo7Ci0gICAgICAgIH0KLQotICAgICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpW2sgKiBuICsgaV0gPSAoZmxvYXQpIGdfYXNjaWlfc3RydG9kICh0LCBOVUxMKTsKLSAgICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICAgICAgaWYgKGkgPCAobiAtIDEpICYmICF0KQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICB9Ci0gICAgICB1ID0gc3RydG9rX3IgKDAsICIpIiwgJnNhdmVwdHIyKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLS8qCi0JRnVuY3Rpb246Ci0JCWJ2ZWNfcGFyc2V2YWx1ZQotCi0JRGVzY3JpcHRpb246Ci0JCVBhcnNlIHRleHQgY29taW5nIGFmdGVyIHRoZSBhc3NpZ25lbWVudCBvcGVyYXRvciBmb3IgYnZlYwotCQl0eXBlIHZhcmlhYmxlcy4KLQotCUFyZ3VtZW50czoKLQotCQlpbnQgbjsKLQkJCVZlY3RvciBkaW1lbnNpb24uCi0KLQkJY2hhciAqdmFsdWU6Ci0JCQlUZXh0IHRvIGJlIHBhcnNlZC4KLQotCQljaGFyICpfc2F2ZXB0cjoKLQkJCUluZGV4IG9mIGVuZCBvZiB2YWx1ZS4KLQotCQlzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldDoKLQkJCVRoZSB2YXJpYWJsZSBkZXNjcmlwdGlvbiB0byBiZSBjb21wbGV0ZWQKLQkJCUF0IGlucHV0IHRpbWUgaXQgY29udGFpbnMgdGhlIGRhdGEgdHlwZSBpbmRleCAodHlwZSksCi0JCQl2YXJpYWJsZSBuYW1lIChuYW1lKSBhbmQgYXJyYXkgc2l6ZSAoYXJyYXlzaXplKS4KLQotCXJldHVybiB2YWx1ZXM6Ci0JCSAwOiAJTm8gZXJyb3IuCi0JCSEwOglQb2ludGVyIHRvIHBhcnNlIGVycm9yLgotCi0qLwotCi1jaGFyICoKLWJ2ZWNfcGFyc2V2YWx1ZSAoaW50IG4sIGNoYXIgKnZhbHVlLCBjaGFyICpfc2F2ZXB0ciwKLSAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKnJldCkKLXsKLQotICBpbnQgaTsKLSAgaW50IGs7Ci0gIGNoYXIgKnNhdmVwdHIgPSB2YWx1ZTsKLSAgY2hhciAqc2F2ZXB0cjI7Ci0gIGNoYXIgKnQ7Ci0gIGNoYXIgKnU7Ci0KLSAgcmV0LT5jb3VudCA9IChyZXQtPmFycmF5c2l6ZSkgPyByZXQtPmFycmF5c2l6ZSAqIG4gOiBuOwotICByZXQtPnZhbHVlID0gZ19tYWxsb2MgKHNpemVvZiAoY2hhciAqKikgKiByZXQtPmNvdW50KTsKLQotICBpZiAoIXJldC0+YXJyYXlzaXplKSB7Ci0gICAgdCA9IHN0cnRva19yICh2YWx1ZSwgIiwiLCAmc2F2ZXB0cik7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgcmV0LT5jb3VudDsgKytpKSB7Ci0KLSAgICAgIGlmICghdCkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgIGlmICghdFswXSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KTsKLQotICAgICAgaWYgKHN0cmNtcCAoInRydWUiLCB2YWx1ZSkgfHwgc3RyY21wICgiZmFsc2UiLCB2YWx1ZSkpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCk7Ci0KLSAgICAgICgoaW50ICopIHJldC0+dmFsdWUpW2ldID0gc3RyY21wICh0LCAiZmFsc2UiKTsKLSAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgfQotCi0gIH0gZWxzZSB7Ci0KLSAgICBzYXZlcHRyMiA9IHZhbHVlOwotICAgIHUgPSBzdHJ0b2tfciAodmFsdWUsICIpIiwgJnNhdmVwdHIyKTsKLQotICAgIGZvciAoayA9IDA7IGsgPCByZXQtPmFycmF5c2l6ZTsgKytrKSB7Ci0KLSAgICAgIGlmICghdSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIyIC0gdmFsdWUpOwotCi0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh1LCAiIFx0Iik7Ci0KLSAgICAgIGlmIChrKSB7Ci0gICAgICAgIGlmICh1WzBdICE9ICcsJykKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICAgKyt1OwotICAgICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgfQotCi0gICAgICBpZiAoc3RybmNtcCAodSwgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0sCi0gICAgICAgICAgICAgIHN0cmxlbiAoZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0pKSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIHUgKz0gc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSk7Ci0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgaWYgKHVbMF0gIT0gJygnKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICsrdTsKLQotICAgICAgdCA9IHN0cnRva19yICh1LCAiLCIsICZzYXZlcHRyKTsKLSAgICAgIGlmICghdCkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKLQotICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgICAgaWYgKCF0WzBdKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh0IC0gdmFsdWUpOwotCi0gICAgICAgIGlmIChzdHJjbXAgKCJ0cnVlIiwgdCkgfHwgc3RyY21wICgiZmFsc2UiLCB0KSkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICAgICgoaW50ICopIHJldC0+dmFsdWUpW2sgKiBuICsgaV0gPSBzdHJjbXAgKHQsICJmYWxzZSIpOwotICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgICAgICBpZiAoaSA8IChuIC0gMSkgJiYgIXQpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgIH0KLSAgICAgIHUgPSBzdHJ0b2tfciAoMCwgIikiLCAmc2F2ZXB0cjIpOwotICAgIH0KLSAgfQotICByZXR1cm4gMDsKLX0KLQotLyoKLQlGdW5jdGlvbjoKLQkJaXZlY19wYXJzZXZhbHVlCi0KLQlEZXNjcmlwdGlvbjoKLQkJUGFyc2UgdGV4dCBjb21pbmcgYWZ0ZXIgdGhlIGFzc2lnbmVtZW50IG9wZXJhdG9yIGZvciBpdmVjCi0JCXR5cGUgdmFyaWFibGVzLgotCi0JQXJndW1lbnRzOgotCi0JCWludCBuOwotCQkJVmVjdG9yIGRpbWVuc2lvbi4KLQotCQljaGFyICp2YWx1ZToKLQkJCVRleHQgdG8gYmUgcGFyc2VkLgotCi0JCWNoYXIgKl9zYXZlcHRyOgotCQkJSW5kZXggb2YgZW5kIG9mIHZhbHVlLgotCi0JCXN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0OgotCQkJVGhlIHZhcmlhYmxlIGRlc2NyaXB0aW9uIHRvIGJlIGNvbXBsZXRlZAotCQkJQXQgaW5wdXQgdGltZSBpdCBjb250YWlucyB0aGUgZGF0YSB0eXBlIGluZGV4ICh0eXBlKSwKLQkJCXZhcmlhYmxlIG5hbWUgKG5hbWUpIGFuZCBhcnJheSBzaXplIChhcnJheXNpemUpLgotCi0JcmV0dXJuIHZhbHVlczoKLQkJIDA6IAlObyBlcnJvci4KLQkJITA6CVBvaW50ZXIgdG8gcGFyc2UgZXJyb3IuCi0KLSovCi0KLWNoYXIgKgotaXZlY19wYXJzZXZhbHVlIChpbnQgbiwgY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KQotewotCi0gIGludCBpOwotICBpbnQgajsKLSAgaW50IGs7Ci0gIGNoYXIgKnNhdmVwdHIgPSB2YWx1ZTsKLSAgY2hhciAqc2F2ZXB0cjI7Ci0gIGNoYXIgKnQ7Ci0gIGNoYXIgKnU7Ci0KLSAgcmV0LT5jb3VudCA9IChyZXQtPmFycmF5c2l6ZSkgPyByZXQtPmFycmF5c2l6ZSAqIG4gOiBuOwotICByZXQtPnZhbHVlID0gZ19tYWxsb2MgKHNpemVvZiAoaW50KSAqIHJldC0+Y291bnQpOwotCi0gIGlmICghcmV0LT5hcnJheXNpemUpIHsKLSAgICB0ID0gc3RydG9rX3IgKHZhbHVlLCAiLCIsICZzYXZlcHRyKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLQotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgaWYgKCF0WzBdKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5LSIsIHZhbHVlW2pdKSkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpICsgajsKLSAgICAgIH0KLQotICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbaV0gPSBhdG9pICh0KTsKLSAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgfQotCi0gIH0gZWxzZSB7Ci0KLSAgICBzYXZlcHRyMiA9IHZhbHVlOwotICAgIHUgPSBzdHJ0b2tfciAodmFsdWUsICIpIiwgJnNhdmVwdHIyKTsKLQotICAgIGZvciAoayA9IDA7IGsgPCByZXQtPmFycmF5c2l6ZTsgKytrKSB7Ci0KLSAgICAgIGlmICghdSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIyIC0gdmFsdWUpOwotCi0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh1LCAiIFx0Iik7Ci0KLSAgICAgIGlmIChrKSB7Ci0gICAgICAgIGlmICh1WzBdICE9ICcsJykKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICAgKyt1OwotICAgICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgfQotCi0gICAgICBpZiAoc3RybmNtcCAodSwgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0sCi0gICAgICAgICAgICAgIHN0cmxlbiAoZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0pKSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIHUgKz0gc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSk7Ci0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgaWYgKHVbMF0gIT0gJygnKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICsrdTsKLQotICAgICAgdCA9IHN0cnRva19yICh1LCAiLCIsICZzYXZlcHRyKTsKLSAgICAgIGlmICghdCkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyArK2kpIHsKLQotICAgICAgICB0cmltbGVmdCAodCwgIiBcdCIpOwotICAgICAgICB0cmltcmlnaHQgKHQsICIgXHQiKTsKLSAgICAgICAgaWYgKCF0WzBdKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh0IC0gdmFsdWUpOwotCi0gICAgICAgIGZvciAoaiA9IDA7IGogPCAoZ2ludCkgc3RybGVuICh0KTsgKytqKSB7Ci0gICAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5LSIsIHRbal0pKQotICAgICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHQgLSB2YWx1ZSkgKyBqOwotICAgICAgICB9Ci0KLSAgICAgICAgKChpbnQgKikgcmV0LT52YWx1ZSlbayAqIG4gKyBpXSA9IGF0b2kgKHQpOwotICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgICAgICBpZiAoaSA8IChuIC0gMSkgJiYgIXQpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB2YWx1ZSk7Ci0KLSAgICAgIH0KLSAgICAgIHUgPSBzdHJ0b2tfciAoMCwgIikiLCAmc2F2ZXB0cjIpOwotICAgIH0KLSAgfQotICByZXR1cm4gMDsKLX0KLQotLyoKLQlGdW5jdGlvbjoKLQkJdXZlY19wYXJzZXZhbHVlCi0KLQlEZXNjcmlwdGlvbjoKLQkJUGFyc2UgdGV4dCBjb21pbmcgYWZ0ZXIgdGhlIGFzc2lnbmVtZW50IG9wZXJhdG9yIGZvciB1dmVjCi0JCXR5cGUgdmFyaWFibGVzLgotCi0JQXJndW1lbnRzOgotCi0JCWludCBuOwotCQkJVmVjdG9yIGRpbWVuc2lvbi4KLQotCQljaGFyICp2YWx1ZToKLQkJCVRleHQgdG8gYmUgcGFyc2VkLgotCi0JCWNoYXIgKl9zYXZlcHRyOgotCQkJSW5kZXggb2YgZW5kIG9mIHZhbHVlLgotCi0JCXN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0OgotCQkJVGhlIHZhcmlhYmxlIGRlc2NyaXB0aW9uIHRvIGJlIGNvbXBsZXRlZAotCQkJQXQgaW5wdXQgdGltZSBpdCBjb250YWlucyB0aGUgZGF0YSB0eXBlIGluZGV4ICh0eXBlKSwKLQkJCXZhcmlhYmxlIG5hbWUgKG5hbWUpIGFuZCBhcnJheSBzaXplIChhcnJheXNpemUpLgotCi0JcmV0dXJuIHZhbHVlczoKLQkJIDA6IAlObyBlcnJvci4KLQkJITA6CVBvaW50ZXIgdG8gcGFyc2UgZXJyb3IuCi0KLSovCi0KLWNoYXIgKgotdXZlY19wYXJzZXZhbHVlIChpbnQgbiwgY2hhciAqdmFsdWUsIGNoYXIgKl9zYXZlcHRyLAotICAgIHN0cnVjdCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGVzYyAqcmV0KQotewotCi0gIGludCBpOwotICBpbnQgajsKLSAgaW50IGs7Ci0gIGNoYXIgKnNhdmVwdHIgPSB2YWx1ZTsKLSAgY2hhciAqc2F2ZXB0cjI7Ci0gIGNoYXIgKnQ7Ci0gIGNoYXIgKnU7Ci0KLSAgcmV0LT5jb3VudCA9IChyZXQtPmFycmF5c2l6ZSkgPyByZXQtPmFycmF5c2l6ZSAqIG4gOiBuOwotICByZXQtPnZhbHVlID0gZ19tYWxsb2MgKHNpemVvZiAodW5zaWduZWQgaW50KSAqIHJldC0+Y291bnQpOwotCi0gIGlmICghcmV0LT5hcnJheXNpemUpIHsKLSAgICB0ID0gc3RydG9rX3IgKHZhbHVlLCAiLCIsICZzYXZlcHRyKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLQotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgaWYgKCF0WzBdKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5IiwgdmFsdWVbal0pKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdCkgKyBqOwotICAgICAgfQotCi0gICAgICAoKHVuc2lnbmVkIGludCAqKSByZXQtPnZhbHVlKVtpXSA9IGF0b2kgKHQpOwotICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICB9Ci0KLSAgfSBlbHNlIHsKLQotICAgIHNhdmVwdHIyID0gdmFsdWU7Ci0gICAgdSA9IHN0cnRva19yICh2YWx1ZSwgIikiLCAmc2F2ZXB0cjIpOwotCi0gICAgZm9yIChrID0gMDsgayA8IHJldC0+YXJyYXlzaXplOyArK2spIHsKLQotICAgICAgaWYgKCF1KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0cjIgLSB2YWx1ZSk7Ci0KLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB0cmltcmlnaHQgKHUsICIgXHQiKTsKLQotICAgICAgaWYgKGspIHsKLSAgICAgICAgaWYgKHVbMF0gIT0gJywnKQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgICArK3U7Ci0gICAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChzdHJuY21wICh1LCBnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSwKLSAgICAgICAgICAgICAgc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSkpKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgdSArPSBzdHJsZW4gKGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kYXRhdHlwZVtyZXQtPnR5cGVdKTsKLSAgICAgIHRyaW1sZWZ0ICh1LCAiIFx0Iik7Ci0gICAgICBpZiAodVswXSAhPSAnKCcpCi0gICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh1IC0gdmFsdWUpOwotICAgICAgKyt1OwotCi0gICAgICB0ID0gc3RydG9rX3IgKHUsICIsIiwgJnNhdmVwdHIpOwotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLQotICAgICAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgewotCi0gICAgICAgIHRyaW1sZWZ0ICh0LCAiIFx0Iik7Ci0gICAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgICBpZiAoIXRbMF0pCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHQgLSB2YWx1ZSk7Ci0KLSAgICAgICAgZm9yIChqID0gMDsgaiA8IChnaW50KSBzdHJsZW4gKHQpOyArK2opIHsKLSAgICAgICAgICBpZiAoIXN0cmNociAoIjAxMjM0NTY3ODkiLCB0W2pdKSkKLSAgICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArICh0IC0gdmFsdWUpICsgajsKLSAgICAgICAgfQotCi0gICAgICAgICgodW5zaWduZWQgaW50ICopIHJldC0+dmFsdWUpW2sgKiBuICsgaV0gPSBhdG9pICh0KTsKLSAgICAgICAgdCA9IHN0cnRva19yICgwLCAiLCIsICZzYXZlcHRyKTsKLSAgICAgICAgaWYgKGkgPCAobiAtIDEpICYmICF0KQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICB9Ci0gICAgICB1ID0gc3RydG9rX3IgKDAsICIpIiwgJnNhdmVwdHIyKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIDA7Ci19Ci0KLS8qCi0JRnVuY3Rpb246Ci0JCW1hdF9wYXJzZXZhbHVlCi0KLQlEZXNjcmlwdGlvbjoKLQkJUGFyc2UgdGV4dCBjb21pbmcgYWZ0ZXIgdGhlIGFzc2lnbmVtZW50IG9wZXJhdG9yIGZvciBtYXRyaXgKLQkJdHlwZSB2YXJpYWJsZXMuCi0KLQlBcmd1bWVudHM6Ci0KLQkJaW50IG4sbTsKLQkJCU1hdHJpeCBkaW1lbnNpb25zLgotCi0JCWNoYXIgKnZhbHVlOgotCQkJVGV4dCB0byBiZSBwYXJzZWQuCi0KLQkJY2hhciAqX3NhdmVwdHI6Ci0JCQlJbmRleCBvZiBlbmQgb2YgdmFsdWUuCi0KLQkJc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQ6Ci0JCQlUaGUgdmFyaWFibGUgZGVzY3JpcHRpb24gdG8gYmUgY29tcGxldGVkCi0JCQlBdCBpbnB1dCB0aW1lIGl0IGNvbnRhaW5zIHRoZSBkYXRhIHR5cGUgaW5kZXggKHR5cGUpLAotCQkJdmFyaWFibGUgbmFtZSAobmFtZSkgYW5kIGFycmF5IHNpemUgKGFycmF5c2l6ZSkuCi0KLQlyZXR1cm4gdmFsdWVzOgotCQkgMDogCU5vIGVycm9yLgotCQkhMDoJUG9pbnRlciB0byBwYXJzZSBlcnJvci4KLQotKi8KLQotY2hhciAqCi1tYXRfcGFyc2V2YWx1ZSAoaW50IG4sIGludCBtLCBjaGFyICp2YWx1ZSwgY2hhciAqX3NhdmVwdHIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpCi17Ci0KLSAgaW50IGk7Ci0gIGludCBqOwotICBpbnQgazsKLSAgY2hhciAqc2F2ZXB0ciA9IHZhbHVlOwotICBjaGFyICpzYXZlcHRyMjsKLSAgY2hhciAqdDsKLSAgY2hhciAqdTsKLQotICByZXQtPmNvdW50ID0gKHJldC0+YXJyYXlzaXplKSA/IHJldC0+YXJyYXlzaXplICogbiAqIG0gOiBuICogbTsKLSAgcmV0LT52YWx1ZSA9IGdfbWFsbG9jIChzaXplb2YgKGZsb2F0KSAqIHJldC0+Y291bnQpOwotCi0gIGlmICghcmV0LT5hcnJheXNpemUpIHsKLSAgICB0ID0gc3RydG9rX3IgKHZhbHVlLCAiLCIsICZzYXZlcHRyKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCByZXQtPmNvdW50OyArK2kpIHsKLQotICAgICAgaWYgKCF0KQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHZhbHVlKTsKLQotICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgIHRyaW1yaWdodCAodCwgIiBcdCIpOwotICAgICAgaWYgKCF0WzBdKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAoc2F2ZXB0ciAtIHQpOwotCi0gICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodmFsdWUpOyArK2opIHsKLSAgICAgICAgaWYgKCFzdHJjaHIgKCIwMTIzNDU2Nzg5Li0iLCB2YWx1ZVtqXSkpCi0gICAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIgLSB0KSArIGo7Ci0gICAgICB9Ci0KLSAgICAgICgoZmxvYXQgKikgcmV0LT52YWx1ZSlbaV0gPSAoZmxvYXQpIGdfYXNjaWlfc3RydG9kICh0LCBOVUxMKTsKLSAgICAgIHQgPSBzdHJ0b2tfciAoMCwgIiwiLCAmc2F2ZXB0cik7Ci0gICAgfQotCi0gIH0gZWxzZSB7Ci0KLSAgICBzYXZlcHRyMiA9IHZhbHVlOwotICAgIHUgPSBzdHJ0b2tfciAodmFsdWUsICIpIiwgJnNhdmVwdHIyKTsKLQotICAgIGZvciAoayA9IDA7IGsgPCByZXQtPmFycmF5c2l6ZTsgKytrKSB7Ci0KLSAgICAgIGlmICghdSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHNhdmVwdHIyIC0gdmFsdWUpOwotCi0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgdHJpbXJpZ2h0ICh1LCAiIFx0Iik7Ci0KLSAgICAgIGlmIChrKSB7Ci0gICAgICAgIGlmICh1WzBdICE9ICcsJykKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICAgKyt1OwotICAgICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgfQotCi0gICAgICBpZiAoc3RybmNtcCAodSwgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0sCi0gICAgICAgICAgICAgIHN0cmxlbiAoZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2RhdGF0eXBlW3JldC0+dHlwZV0pKSkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIHUgKz0gc3RybGVuIChnc3RfZ2xfc2hhZGVydmFyaWFibGVfZGF0YXR5cGVbcmV0LT50eXBlXSk7Ci0gICAgICB0cmltbGVmdCAodSwgIiBcdCIpOwotICAgICAgaWYgKHVbMF0gIT0gJygnKQotICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodSAtIHZhbHVlKTsKLSAgICAgICsrdTsKLQotICAgICAgdCA9IHN0cnRva19yICh1LCAiLCIsICZzYXZlcHRyKTsKLSAgICAgIGlmICghdCkKLSAgICAgICAgcmV0dXJuIF9zYXZlcHRyICsgKHUgLSB2YWx1ZSk7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBuICogbTsgKytpKSB7Ci0KLSAgICAgICAgdHJpbWxlZnQgKHQsICIgXHQiKTsKLSAgICAgICAgdHJpbXJpZ2h0ICh0LCAiIFx0Iik7Ci0gICAgICAgIGlmICghdFswXSkKLSAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodCAtIHZhbHVlKTsKLQotICAgICAgICBmb3IgKGogPSAwOyBqIDwgKGdpbnQpIHN0cmxlbiAodCk7ICsraikgewotICAgICAgICAgIGlmICghc3RyY2hyICgiMDEyMzQ1Njc4OS4tIiwgdFtqXSkpCi0gICAgICAgICAgICByZXR1cm4gX3NhdmVwdHIgKyAodCAtIHZhbHVlKSArIGo7Ci0gICAgICAgIH0KLQotICAgICAgICAoKGZsb2F0ICopIHJldC0+dmFsdWUpW2sgKiBuICogbSArIGldID0KLSAgICAgICAgICAgIChmbG9hdCkgZ19hc2NpaV9zdHJ0b2QgKHQsIE5VTEwpOwotICAgICAgICB0ID0gc3RydG9rX3IgKDAsICIsIiwgJnNhdmVwdHIpOwotICAgICAgICBpZiAoaSA8IChuICogbSAtIDEpICYmICF0KQotICAgICAgICAgIHJldHVybiBfc2F2ZXB0ciArIChzYXZlcHRyIC0gdmFsdWUpOwotCi0gICAgICB9Ci0gICAgICB1ID0gc3RydG9rX3IgKDAsICIpIiwgJnNhdmVwdHIyKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIDA7Ci19CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzaGFkZXJ2YXJpYWJsZXMuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnZhcmlhYmxlcy5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzdlMWE1Li4wMDAwMDAwCi0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNoYWRlcnZhcmlhYmxlcy5oCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDA5IEx1YyBEZXNjaGVuYXV4IDxsdWMuZGVzY2hlbmF1eEBmcmVlc3VyZi5jaD4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZuZGVmIEdTVF9HTFNIQURFUl9WQVJJQUJMRVMKLSNkZWZpbmUgR1NUX0dMU0hBREVSX1ZBUklBQkxFUwotCi0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzaGFkZXIuaD4KLQotI2RlZmluZSBWQUxJRF9WQVJOQU1FX0NIQVJTICJhYmNkZWZnaGlqa2xtbm9wcXVyc3R1dnd4eXpBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWjAxMjM0NTY3ODlfIgotCi1zdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2M7Ci0KLWludCBnc3RfZ2xfc2hhZGVydmFyaWFibGVzX3BhcnNlIChHc3RHTFNoYWRlciAqIHNoYWRlciwgY2hhciAqdmFyaWFibGVzLAotICAgIGludCAoKl9zZXR2YXJpYWJsZSkgKEdzdEdMU2hhZGVyICogc2hhZGVyLAotICAgICAgICBzdHJ1Y3QgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX2Rlc2MgKiB2KSk7Ci1pbnQgZ3N0X2dsX3NoYWRlcnZhcmlhYmxlX3NldCAoR3N0R0xTaGFkZXIgKiBzaGFkZXIsCi0gICAgc3RydWN0IGdzdF9nbF9zaGFkZXJ2YXJpYWJsZV9kZXNjICpyZXQpOwotCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwNzQ1NTIKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5jCkBAIC0wLDAgKzEsNTUzIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCisjaW5jbHVkZSAiZ3N0Z2xzbC5oIgorI2luY2x1ZGUgImdzdGdsc2xfcHJpdmF0ZS5oIgorCisvKioKKyAqIFNFQ1RJT046Z3N0Z2xzbAorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBoZWxwZXJzIGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlcnMKKyAqIEBzZWVfYWxzbzogI0dzdEdMU0xTdGFnZSwgI0dzdEdMU2hhZGVyCisgKi8KKworR1F1YXJrCitnc3RfZ2xzbF9lcnJvcl9xdWFyayAodm9pZCkKK3sKKyAgcmV0dXJuIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nICgiZ3N0LWdsc2wtZXJyb3IiKTsKK30KKworc3RydWN0IGdsc2xfdmVyc2lvbl9zdHJpbmcKK3sKKyAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbjsKKyAgY29uc3QgZ2NoYXIgKm5hbWU7Cit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IGdsc2xfdmVyc2lvbl9zdHJpbmcgZ2xzbF92ZXJzaW9uc1tdID0geworICAvKiBrZWVwIGluIHN5bmMgd2l0aCBkZWZpbml0aW9uIGluIHRoZSBoZWFkZXIgKi8KKyAge0dTVF9HTFNMX1ZFUlNJT05fMTAwLCAiMTAwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzExMCwgIjExMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMjAsICIxMjAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTMwLCAiMTMwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzE0MCwgIjE0MCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNTAsICIxNTAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzAwLCAiMzAwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMxMCwgIjMxMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMjAsICIzMjAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzMwLCAiMzMwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQwMCwgIjQwMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MTAsICI0MTAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDIwLCAiNDIwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQzMCwgIjQzMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80NDAsICI0NDAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDUwLCAiNDUwIn0sCit9OworCitzdHJ1Y3QgZ2xzbF9wcm9maWxlX3N0cmluZworeworICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlOworICBjb25zdCBnY2hhciAqbmFtZTsKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZ2xzbF9wcm9maWxlX3N0cmluZyBnbHNsX3Byb2ZpbGVzW10gPSB7CisgIC8qIGtlZXAgaW4gc3luYyB3aXRoIGRlZmluaXRpb24gaW4gdGhlIGhlYWRlciAqLworICB7R1NUX0dMU0xfUFJPRklMRV9FUywgImVzIn0sCisgIHtHU1RfR0xTTF9QUk9GSUxFX0NPUkUsICJjb3JlIn0sCisgIHtHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksICJjb21wYXRpYmlsaXR5In0sCit9OworCitjb25zdCBnY2hhciAqCitnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAoR3N0R0xTTFZlcnNpb24gdmVyc2lvbikKK3sKKyAgaW50IGk7CisKKyAgaWYgKHZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl9OT05FKQorICAgIHJldHVybiBOVUxMOworCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGdsc2xfdmVyc2lvbnMpOyBpKyspIHsKKyAgICBpZiAodmVyc2lvbiA9PSBnbHNsX3ZlcnNpb25zW2ldLnZlcnNpb24pCisgICAgICByZXR1cm4gZ2xzbF92ZXJzaW9uc1tpXS5uYW1lOworICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK0dzdEdMU0xWZXJzaW9uCitnc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nIChjb25zdCBnY2hhciAqIHN0cmluZykKK3sKKyAgZ2NoYXIgKnN0cjsKKyAgaW50IGk7CisKKyAgaWYgKHN0cmluZyA9PSBOVUxMKQorICAgIHJldHVybiAwOworCisgIHN0ciA9IGdfc3RyZHVwIChzdHJpbmcpOworICBzdHIgPSBnX3N0cnN0cmlwIChzdHIpOworCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGdsc2xfdmVyc2lvbnMpOyBpKyspIHsKKyAgICBpZiAoZ19zdHJjbXAwIChzdHIsIGdsc2xfdmVyc2lvbnNbaV0ubmFtZSkgPT0gMCkgeworICAgICAgZ19mcmVlIChzdHIpOworICAgICAgcmV0dXJuIGdsc2xfdmVyc2lvbnNbaV0udmVyc2lvbjsKKyAgICB9CisgIH0KKworICBnX2ZyZWUgKHN0cik7CisgIHJldHVybiAwOworfQorCitjb25zdCBnY2hhciAqCitnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAoR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSkKK3sKKyAgaW50IGk7CisKKyAgaWYgKHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9OT05FKQorICAgIHJldHVybiBOVUxMOworCisgIC8qIG11bHRpcGxlIHByb2ZpbGVzIGFyZSBub3QgYWxsb3dlZCAqLworICBpZiAoKHByb2ZpbGUgJiAocHJvZmlsZSAtIDEpKSAhPSAwKQorICAgIHJldHVybiBOVUxMOworCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGdsc2xfcHJvZmlsZXMpOyBpKyspIHsKKyAgICBpZiAocHJvZmlsZSA9PSBnbHNsX3Byb2ZpbGVzW2ldLnByb2ZpbGUpCisgICAgICByZXR1cm4gZ2xzbF9wcm9maWxlc1tpXS5uYW1lOworICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK0dzdEdMU0xQcm9maWxlCitnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nIChjb25zdCBnY2hhciAqIHN0cmluZykKK3sKKyAgZ2NoYXIgKnN0cjsKKyAgaW50IGk7CisKKyAgaWYgKHN0cmluZyA9PSBOVUxMKQorICAgIHJldHVybiBHU1RfR0xTTF9QUk9GSUxFX05PTkU7CisKKyAgc3RyID0gZ19zdHJkdXAgKHN0cmluZyk7CisgIHN0ciA9IGdfc3Ryc3RyaXAgKHN0cik7CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ2xzbF9wcm9maWxlcyk7IGkrKykgeworICAgIGlmIChnX3N0cmNtcDAgKHN0ciwgZ2xzbF9wcm9maWxlc1tpXS5uYW1lKSA9PSAwKSB7CisgICAgICBnX2ZyZWUgKHN0cik7CisgICAgICByZXR1cm4gZ2xzbF9wcm9maWxlc1tpXS5wcm9maWxlOworICAgIH0KKyAgfQorCisgIGdfZnJlZSAoc3RyKTsKKyAgcmV0dXJuIEdTVF9HTFNMX1BST0ZJTEVfTk9ORTsKK30KKworc3RhdGljIGdib29sZWFuCitfaXNfdmFsaWRfdmVyc2lvbl9wcm9maWxlIChHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLCBHc3RHTFNMUHJvZmlsZSBwcm9maWxlKQoreworICBpZiAodmVyc2lvbiA9PSBHU1RfR0xTTF9WRVJTSU9OX05PTkUpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgLyogdmVyc2lvbnMgdGhhdCBtYXkgbm90IG5lZWQgYW4gZXhwbGljaXQgcHJvZmlsZSAqLworICBpZiAodmVyc2lvbiA8PSBHU1RfR0xTTF9WRVJTSU9OXzE1MCAmJiBwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfTk9ORSkKKyAgICByZXR1cm4gVFJVRTsKKworICAvKiBFUyB2ZXJzaW9ucyByZXF1aXJlIGFuIEVTIHByb2ZpbGUgKi8KKyAgaWYgKHZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl8xMDAgfHwgdmVyc2lvbiA9PSBHU1RfR0xTTF9WRVJTSU9OXzMwMAorICAgICAgfHwgdmVyc2lvbiA9PSBHU1RfR0xTTF9WRVJTSU9OXzMxMCB8fCB2ZXJzaW9uID09IEdTVF9HTFNMX1ZFUlNJT05fMzIwKQorICAgIHJldHVybiBwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfRVM7CisKKyAgLyogcmVxdWlyZWQgcHJvZmlsZSBhbmQgbm8gRVMgcHJvZmlsZSBmb3Igbm9ybWFsIEdMIGNvbnRleHRzICovCisgIGlmICh2ZXJzaW9uID49IEdTVF9HTFNMX1ZFUlNJT05fMzMwKQorICAgIHJldHVybiBwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfTk9ORSB8fCBwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfQ09SRQorICAgICAgICB8fCBwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWTsKKworICBpZiAodmVyc2lvbiA8PSBHU1RfR0xTTF9WRVJTSU9OXzE1MCkKKyAgICByZXR1cm4gcHJvZmlsZSA9PSBHU1RfR0xTTF9QUk9GSUxFX05PTkUKKyAgICAgICAgfHwgcHJvZmlsZSA9PSBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFk7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitnY2hhciAqCitnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nIChHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLAorICAgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUpCit7CisgIGNvbnN0IGdjaGFyICp2ZXJzaW9uX3MsICpwcm9maWxlX3M7CisKKyAgaWYgKCFfaXNfdmFsaWRfdmVyc2lvbl9wcm9maWxlICh2ZXJzaW9uLCBwcm9maWxlKSkKKyAgICByZXR1cm4gTlVMTDsKKworICB2ZXJzaW9uX3MgPSBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAodmVyc2lvbik7CisgIC8qIG5vIHByb2ZpbGVzIGluIEdML0VTIDw9IDE1MCAqLworICBpZiAodmVyc2lvbiA8PSBHU1RfR0xTTF9WRVJTSU9OXzE1MCkKKyAgICBwcm9maWxlX3MgPSBOVUxMOworICBlbHNlCisgICAgcHJvZmlsZV9zID0gZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKHByb2ZpbGUpOworCisgIGlmICghdmVyc2lvbl9zKQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChwcm9maWxlX3MpCisgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAoIiVzICVzIiwgdmVyc2lvbl9zLCBwcm9maWxlX3MpOworCisgIHJldHVybiBnX3N0cmR1cCAodmVyc2lvbl9zKTsKK30KKworc3RhdGljIHZvaWQKK19maXh1cF92ZXJzaW9uX3Byb2ZpbGUgKEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbiwgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKQoreworICBpZiAoKnZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl8xMDAgfHwgKnZlcnNpb24gPT0gR1NUX0dMU0xfVkVSU0lPTl8zMDAKKyAgICAgIHx8ICp2ZXJzaW9uID09IEdTVF9HTFNMX1ZFUlNJT05fMzEwIHx8ICp2ZXJzaW9uID09IEdTVF9HTFNMX1ZFUlNJT05fMzIwKQorICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9FUzsKKyAgZWxzZSBpZiAoKnZlcnNpb24gPD0gR1NUX0dMU0xfVkVSU0lPTl8xNTApCisgICAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFk7CisgIGVsc2UgaWYgKCpwcm9maWxlID09IEdTVF9HTFNMX1BST0ZJTEVfTk9ORQorICAgICAgJiYgKnZlcnNpb24gPj0gR1NUX0dMU0xfVkVSU0lPTl8zMzApCisgICAgKnByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX0NPUkU7Cit9CisKKy8qIEBzdHIgcG9pbnRzIHRvIHRoZSBzdGFydCBvZiAiI3ZlcnNpb24iLCAiIyAgICB2ZXJzaW9uIiBvciAiI1x0dmVyc2lvbiIsIGV0YyAqLworc3RhdGljIGNvbnN0IGdjaGFyICoKK19jaGVja192YWxpZF92ZXJzaW9uX3ByZXByb2Nlc3Nvcl9zdHJpbmcgKGNvbnN0IGdjaGFyICogc3RyKQoreworICBnaW50IGkgPSAwOworCisgIGlmICghc3RyIHx8ICFzdHJbaV0pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgLyogdGhlcmUgY2FuIGJlIHdoaXRlc3BhY2UgYmV0d2VlbiB0aGUgJyMnIGFuZCAndmVyc2lvbicgKi8KKyAgZG8geworICAgIGkrKzsKKyAgICBpZiAoc3RyW2ldID09ICdcMCcgfHwgc3RyW2ldID09ICdcbicgfHwgc3RyW2ldID09ICdccicpCisgICAgICByZXR1cm4gTlVMTDsKKyAgfSB3aGlsZSAoZ19hc2NpaV9pc3NwYWNlIChzdHJbaV0pKTsKKyAgaWYgKGdfc3Ryc3RyX2xlbiAoJnN0cltpXSwgNywgInZlcnNpb24iKSkKKyAgICByZXR1cm4gJnN0cltpICsgN107CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK2dib29sZWFuCitnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKGNvbnN0IGdjaGFyICogc3RyaW5nLAorICAgIEdzdEdMU0xWZXJzaW9uICogdmVyc2lvbl9yZXQsIEdzdEdMU0xQcm9maWxlICogcHJvZmlsZV9yZXQpCit7CisgIGdjaGFyICpzdHIsICp2ZXJzaW9uX3MsICpwcm9maWxlX3M7CisgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb24gPSBHU1RfR0xTTF9WRVJTSU9OX05PTkU7CisgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUgPSBHU1RfR0xTTF9QUk9GSUxFX05PTkU7CisgIGdpbnQgaTsKKworICBpZiAoIXN0cmluZykKKyAgICBnb3RvIGVycm9yOworCisgIHN0ciA9IGdfc3RyZHVwIChzdHJpbmcpOworICB2ZXJzaW9uX3MgPSBnX3N0cnN0cmlwIChzdHIpOworCisgIC8qIHNraXAgcG9zc2libGUgI3ZlcnNpb24gcHJlZml4ICovCisgIGlmIChzdHJbMF0gPT0gJyMnKSB7CisgICAgaWYgKCEodmVyc2lvbl9zID0KKyAgICAgICAgICAgIChnY2hhciAqKSBfY2hlY2tfdmFsaWRfdmVyc2lvbl9wcmVwcm9jZXNzb3Jfc3RyaW5nICh2ZXJzaW9uX3MpKSkgeworICAgICAgZ19mcmVlIChzdHIpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgIH0KKworICB2ZXJzaW9uX3MgPSBnX3N0cnN0cmlwICh2ZXJzaW9uX3MpOworCisgIGkgPSAwOworICB3aGlsZSAodmVyc2lvbl9zICYmIHZlcnNpb25fc1tpXSAhPSAnXDAnICYmIGdfYXNjaWlfaXNkaWdpdCAodmVyc2lvbl9zW2ldKSkKKyAgICBpKys7CisgIC8qIHdyb25nIHZlcnNpb24gbGVuZ3RoICovCisgIGlmIChpICE9IDMpIHsKKyAgICBnX2ZyZWUgKHN0cik7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGlmICh2ZXJzaW9uX3NbaV0gIT0gMCkgeworICAgIHZlcnNpb25fc1tpXSA9ICdcMCc7CisgICAgaSsrOworICAgIHByb2ZpbGVfcyA9ICZ2ZXJzaW9uX3NbaV07CisgICAgcHJvZmlsZV9zID0gZ19zdHJzdHJpcCAocHJvZmlsZV9zKTsKKworICAgIHByb2ZpbGUgPSBnc3RfZ2xzbF9wcm9maWxlX2Zyb21fc3RyaW5nIChwcm9maWxlX3MpOworICB9CisgIHZlcnNpb24gPSBnc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nICh2ZXJzaW9uX3MpOworICBnX2ZyZWUgKHN0cik7CisKKyAgLyogY2hlY2sgd2hldGhlciB0aGUgcGFyc2VkIGRhdGEgaXMgdmFsaWQgKi8KKyAgaWYgKCF2ZXJzaW9uKQorICAgIGdvdG8gZXJyb3I7CisgIGlmICghX2lzX3ZhbGlkX3ZlcnNpb25fcHJvZmlsZSAodmVyc2lvbiwgcHJvZmlsZSkpCisgICAgZ290byBlcnJvcjsKKyAgLyogZ290IGEgcHJvZmlsZSB3aGVuIG5vbmUgd2FzIGV4cGVjdGVkICovCisgIGlmICh2ZXJzaW9uIDw9IEdTVF9HTFNMX1ZFUlNJT05fMTUwICYmIHByb2ZpbGUgIT0gR1NUX0dMU0xfUFJPRklMRV9OT05FKQorICAgIGdvdG8gZXJyb3I7CisKKyAgX2ZpeHVwX3ZlcnNpb25fcHJvZmlsZSAoJnZlcnNpb24sICZwcm9maWxlKTsKKworICBpZiAocHJvZmlsZV9yZXQpCisgICAgKnByb2ZpbGVfcmV0ID0gcHJvZmlsZTsKKyAgaWYgKHZlcnNpb25fcmV0KQorICAgICp2ZXJzaW9uX3JldCA9IHZlcnNpb247CisKKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICB7CisgICAgaWYgKHByb2ZpbGVfcmV0KQorICAgICAgKnByb2ZpbGVfcmV0ID0gR1NUX0dMU0xfUFJPRklMRV9OT05FOworICAgIGlmICh2ZXJzaW9uX3JldCkKKyAgICAgICp2ZXJzaW9uX3JldCA9IEdTVF9HTFNMX1ZFUlNJT05fTk9ORTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworLyogcmV0dXJucyB0aGUgcG9pbnRlciBpbiBAc3RyIHRvIHRoZSAjdmVyc2lvbiBkZWNsYXJhdGlvbiAqLworY29uc3QgZ2NoYXIgKgorX2dzdF9nbHNsX3NoYWRlcl9zdHJpbmdfZmluZF92ZXJzaW9uIChjb25zdCBnY2hhciAqIHN0cikKK3sKKyAgZ2Jvb2xlYW4gc2xfY29tbWVudCA9IEZBTFNFOworICBnYm9vbGVhbiBtbF9jb21tZW50ID0gRkFMU0U7CisgIGdib29sZWFuIG5ld2xpbmUgPSBUUlVFOworICBnaW50IGkgPSAwOworCisgIC8qIHNlYXJjaCBmb3IgI3ZlcnNpb24gd2hpbGUgYWxsb3dpbmcgZm9yIHByZWNlZWRpbmcgY29tbWVudHMvd2hpdGVzcGFjZSBhcworICAgKiBwZXJtaXR0ZWQgYnkgdGhlIEdMU0wgc3BlY2lmaWNhdGlvbiAqLworICB3aGlsZSAoc3RyICYmIHN0cltpXSAhPSAnXDAnICYmIGkgPCAxMDI0KSB7CisgICAgaWYgKHN0cltpXSA9PSAnXG4nIHx8IHN0cltpXSA9PSAnXHInKSB7CisgICAgICBuZXdsaW5lID0gVFJVRTsKKyAgICAgIHNsX2NvbW1lbnQgPSBGQUxTRTsKKyAgICAgIGkrKzsKKyAgICAgIGNvbnRpbnVlOworICAgIH0KKworICAgIGlmIChnX2FzY2lpX2lzc3BhY2UgKHN0cltpXSkpCisgICAgICBnb3RvIG5leHQ7CisKKyAgICBpZiAoc2xfY29tbWVudCkKKyAgICAgIGdvdG8gbmV4dDsKKworICAgIGlmIChtbF9jb21tZW50KSB7CisgICAgICBpZiAoZ19zdHJzdHJfbGVuICgmc3RyW2ldLCAyLCAiKi8iKSkgeworICAgICAgICBtbF9jb21tZW50ID0gRkFMU0U7CisgICAgICAgIGkrKzsKKyAgICAgIH0KKyAgICAgIGdvdG8gbmV4dDsKKyAgICB9CisKKyAgICBpZiAoZ19zdHJzdHJfbGVuICgmc3RyW2ldLCAyLCAiLy8iKSkgeworICAgICAgc2xfY29tbWVudCA9IFRSVUU7CisgICAgICBpKys7CisgICAgICBnb3RvIG5leHQ7CisgICAgfQorCisgICAgaWYgKGdfc3Ryc3RyX2xlbiAoJnN0cltpXSwgMiwgIi8qIikpIHsKKyAgICAgIG1sX2NvbW1lbnQgPSBUUlVFOworICAgICAgaSsrOworICAgICAgZ290byBuZXh0OworICAgIH0KKworICAgIGlmIChzdHJbaV0gPT0gJyMnKSB7CisgICAgICBpZiAobmV3bGluZSAmJiBfY2hlY2tfdmFsaWRfdmVyc2lvbl9wcmVwcm9jZXNzb3Jfc3RyaW5nICgmc3RyW2ldKSkKKyAgICAgICAgcmV0dXJuICZzdHJbaV07CisgICAgICBicmVhazsKKyAgICB9CisKKyAgbmV4dDoKKyAgICBuZXdsaW5lID0gRkFMU0U7CisgICAgaSsrOworICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK2dib29sZWFuCitnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZSAoY29uc3QgZ2NoYXIgKiBzLCBHc3RHTFNMVmVyc2lvbiAqIHZlcnNpb24sCisgICAgR3N0R0xTTFByb2ZpbGUgKiBwcm9maWxlKQoreworICBjb25zdCBnY2hhciAqdmVyc2lvbl9wcm9maWxlX3M7CisKKyAgdmVyc2lvbl9wcm9maWxlX3MgPSBfZ3N0X2dsc2xfc2hhZGVyX3N0cmluZ19maW5kX3ZlcnNpb24gKHMpOworICBpZiAoIXZlcnNpb25fcHJvZmlsZV9zKQorICAgIGdvdG8gZXJyb3I7CisKKyAgaWYgKCFnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKHZlcnNpb25fcHJvZmlsZV9zLCB2ZXJzaW9uLAorICAgICAgICAgIHByb2ZpbGUpKQorICAgIGdvdG8gZXJyb3I7CisKKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICB7CisgICAgaWYgKHZlcnNpb24pCisgICAgICAqdmVyc2lvbiA9IEdTVF9HTFNMX1ZFUlNJT05fTk9ORTsKKyAgICBpZiAocHJvZmlsZSkKKyAgICAgICpwcm9maWxlID0gR1NUX0dMU0xfUFJPRklMRV9OT05FOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorfQorCitHc3RHTFNMVmVyc2lvbgorZ3N0X2dsX3ZlcnNpb25fdG9fZ2xzbF92ZXJzaW9uIChHc3RHTEFQSSBnbF9hcGksIGdpbnQgbWFqLCBnaW50IG1pbikKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGdsX2FwaSAhPSBHU1RfR0xfQVBJX05PTkUsIDApOworCisgIGlmIChnbF9hcGkgJiBHU1RfR0xfQVBJX0dMRVMyKSB7CisgICAgaWYgKG1haiA9PSAyICYmIG1pbiA9PSAwKQorICAgICAgcmV0dXJuIDEwMDsKKworICAgIGlmIChtYWogPT0gMyAmJiBtaW4gPj0gMCAmJiBtaW4gPD0gMikKKyAgICAgIHJldHVybiBtYWogKiAxMDAgKyBtaW4gKiAxMDsKKworICAgIHJldHVybiAwOworICB9CisKKyAgLyogdmVyc2lvbnMgbWF0Y2ggZm9yID49IDMuMyAqLworICBpZiAoZ2xfYXBpICYgKEdTVF9HTF9BUElfT1BFTkdMMyB8IEdTVF9HTF9BUElfT1BFTkdMKSkgeworICAgIGlmIChtYWogPiAzIHx8IChtYWogPT0gMyAmJiBtaW4gPj0gMykpCisgICAgICByZXR1cm4gbWFqICogMTAwICsgbWluICogMTA7CisKKyAgICBpZiAobWFqID09IDMgJiYgbWluID09IDIpCisgICAgICByZXR1cm4gMTUwOworICAgIGlmIChtYWogPT0gMyAmJiBtaW4gPT0gMSkKKyAgICAgIHJldHVybiAxNDA7CisgICAgaWYgKG1haiA9PSAzICYmIG1pbiA9PSAwKQorICAgICAgcmV0dXJuIDEzMDsKKyAgICBpZiAobWFqID09IDIgJiYgbWluID09IDEpCisgICAgICByZXR1cm4gMTIwOworICAgIGlmIChtYWogPT0gMiAmJiBtaW4gPT0gMCkKKyAgICAgIHJldHVybiAxMTA7CisKKyAgICByZXR1cm4gMDsKKyAgfQorCisgIHJldHVybiAwOworfQorCitnYm9vbGVhbgorZ3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb24gKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbiwgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9DT05URVhUIChjb250ZXh0KSwgRkFMU0UpOworCisgIGlmICghX2lzX3ZhbGlkX3ZlcnNpb25fcHJvZmlsZSAodmVyc2lvbiwgcHJvZmlsZSkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmIChwcm9maWxlICE9IEdTVF9HTFNMX1BST0ZJTEVfTk9ORSkgeworICAgIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAyLCAwKSkgeworICAgICAgaWYgKChwcm9maWxlICYgR1NUX0dMU0xfUFJPRklMRV9FUykgPT0gMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0gZWxzZSBpZiAoKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9PUEVOR0wpICE9IDApIHsKKyAgICAgIGlmICgocHJvZmlsZSAmIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSkgPT0gMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0gZWxzZSBpZiAoKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9PUEVOR0wzKSAhPSAwKSB7CisgICAgICAvKiBHTF9BUkJfZXMyX2NvbXBhdGliaWxpdHkgaXMgcmVxdXJpZWQgZm9yIEdMMyBjb250ZXh0cyAqLworICAgICAgaWYgKChwcm9maWxlICYgKEdTVF9HTFNMX1BST0ZJTEVfQ09SRSB8IEdTVF9HTFNMX1BST0ZJTEVfRVMpKSA9PSAwKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfSBlbHNlIHsKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgIH0KKyAgfQorCisgIGlmICh2ZXJzaW9uICE9IEdTVF9HTFNMX1ZFUlNJT05fTk9ORSkgeworICAgIEdzdEdMQVBJIGdsX2FwaTsKKyAgICBnaW50IG1haiwgbWluLCBnbHNsX3ZlcnNpb247CisKKyAgICBpZiAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMSkpIHsKKyAgICAgIGlmICh2ZXJzaW9uID4gR1NUX0dMU0xfVkVSU0lPTl8zMTApCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9IGVsc2UgaWYgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDMsCisgICAgICAgICAgICAwKSkgeworICAgICAgaWYgKHZlcnNpb24gPiBHU1RfR0xTTF9WRVJTSU9OXzMwMCkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0gZWxzZSBpZiAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMiwKKyAgICAgICAgICAgIDApKSB7CisgICAgICBpZiAodmVyc2lvbiA+IEdTVF9HTFNMX1ZFUlNJT05fMTAwKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgZ2xfYXBpID0gZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCk7CisgICAgZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX3ZlcnNpb24gKGNvbnRleHQsICZtYWosICZtaW4pOworICAgIGdsc2xfdmVyc2lvbiA9IGdzdF9nbF92ZXJzaW9uX3RvX2dsc2xfdmVyc2lvbiAoZ2xfYXBpLCBtYWosIG1pbik7CisgICAgaWYgKHZlcnNpb24gPiBnbHNsX3ZlcnNpb24pCisgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICBpZiAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAxLCAwKSkKKyAgICAgIC8qIEdMX0FSQl9lczJfY29tcGF0aWJpbGl0eSBpcyByZXF1cmllZCBmb3IgR0wzIGNvbnRleHRzICovCisgICAgICBpZiAodmVyc2lvbiA8IEdTVF9HTFNMX1ZFUlNJT05fMTUwICYmIHZlcnNpb24gIT0gR1NUX0dMU0xfVkVSU0lPTl8xMDApCisgICAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX09QRU5HTCwgMSwgMCkKKyAgICAgICAgJiYgdmVyc2lvbiA8IEdTVF9HTFNMX1ZFUlNJT05fMTEwKQorICAgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitfZ3N0X2dsc2xfZnVuY3NfZmlsbCAoR3N0R0xTTEZ1bmNzICogdnRhYmxlLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAodnRhYmxlLT5pbml0aWFsaXplZCkKKyAgICByZXR1cm4gVFJVRTsKKworICBpZiAoZ2wtPkNyZWF0ZVByb2dyYW0pIHsKKyAgICB2dGFibGUtPkNyZWF0ZVByb2dyYW0gPSBnbC0+Q3JlYXRlUHJvZ3JhbTsKKyAgICB2dGFibGUtPkRlbGV0ZVByb2dyYW0gPSBnbC0+RGVsZXRlUHJvZ3JhbTsKKyAgICB2dGFibGUtPlVzZVByb2dyYW0gPSBnbC0+VXNlUHJvZ3JhbTsKKworICAgIHZ0YWJsZS0+Q3JlYXRlU2hhZGVyID0gZ2wtPkNyZWF0ZVNoYWRlcjsKKyAgICB2dGFibGUtPkRlbGV0ZVNoYWRlciA9IGdsLT5EZWxldGVTaGFkZXI7CisgICAgdnRhYmxlLT5BdHRhY2hTaGFkZXIgPSBnbC0+QXR0YWNoU2hhZGVyOworICAgIHZ0YWJsZS0+RGV0YWNoU2hhZGVyID0gZ2wtPkRldGFjaFNoYWRlcjsKKworICAgIHZ0YWJsZS0+R2V0QXR0YWNoZWRTaGFkZXJzID0gZ2wtPkdldEF0dGFjaGVkU2hhZGVyczsKKworICAgIHZ0YWJsZS0+R2V0U2hhZGVySW5mb0xvZyA9IGdsLT5HZXRTaGFkZXJJbmZvTG9nOworICAgIHZ0YWJsZS0+R2V0U2hhZGVyaXYgPSBnbC0+R2V0U2hhZGVyaXY7CisgICAgdnRhYmxlLT5HZXRQcm9ncmFtSW5mb0xvZyA9IGdsLT5HZXRQcm9ncmFtSW5mb0xvZzsKKyAgICB2dGFibGUtPkdldFByb2dyYW1pdiA9IGdsLT5HZXRQcm9ncmFtaXY7CisgIH0gZWxzZSBpZiAoZ2wtPkNyZWF0ZVByb2dyYW1PYmplY3QpIHsKKyAgICB2dGFibGUtPkNyZWF0ZVByb2dyYW0gPSBnbC0+Q3JlYXRlUHJvZ3JhbU9iamVjdDsKKyAgICB2dGFibGUtPkRlbGV0ZVByb2dyYW0gPSBnbC0+RGVsZXRlT2JqZWN0OworICAgIHZ0YWJsZS0+VXNlUHJvZ3JhbSA9IGdsLT5Vc2VQcm9ncmFtT2JqZWN0OworCisgICAgdnRhYmxlLT5DcmVhdGVTaGFkZXIgPSBnbC0+Q3JlYXRlU2hhZGVyT2JqZWN0OworICAgIHZ0YWJsZS0+RGVsZXRlU2hhZGVyID0gZ2wtPkRlbGV0ZU9iamVjdDsKKyAgICB2dGFibGUtPkF0dGFjaFNoYWRlciA9IGdsLT5BdHRhY2hPYmplY3Q7CisgICAgdnRhYmxlLT5EZXRhY2hTaGFkZXIgPSBnbC0+RGV0YWNoT2JqZWN0OworCisgICAgdnRhYmxlLT5HZXRBdHRhY2hlZFNoYWRlcnMgPSBnbC0+R2V0QXR0YWNoZWRPYmplY3RzOworCisgICAgdnRhYmxlLT5HZXRTaGFkZXJJbmZvTG9nID0gZ2wtPkdldEluZm9Mb2c7CisgICAgdnRhYmxlLT5HZXRTaGFkZXJpdiA9IGdsLT5HZXRPYmplY3RQYXJhbWV0ZXJpdjsKKyAgICB2dGFibGUtPkdldFByb2dyYW1JbmZvTG9nID0gZ2wtPkdldEluZm9Mb2c7CisgICAgdnRhYmxlLT5HZXRQcm9ncmFtaXYgPSBnbC0+R2V0T2JqZWN0UGFyYW1ldGVyaXY7CisgIH0gZWxzZSB7CisgICAgdnRhYmxlLT5pbml0aWFsaXplZCA9IEZBTFNFOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHZ0YWJsZS0+aW5pdGlhbGl6ZWQgPSBUUlVFOworICByZXR1cm4gVFJVRTsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmMDUxZjYKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbC5oCkBAIC0wLDAgKzEsOTYgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9HTFNMX0hfXworI2RlZmluZSBfX0dTVF9HTFNMX0hfXworCisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsX2Z3ZC5oPgorCitHX0JFR0lOX0RFQ0xTCisKK0dRdWFyayBnc3RfZ2xzbF9lcnJvcl9xdWFyayAodm9pZCk7CisjZGVmaW5lIEdTVF9HTFNMX0VSUk9SIChnc3RfZ2xzbF9lcnJvcl9xdWFyayAoKSkKKwordHlwZWRlZiBlbnVtIHsKKyAgR1NUX0dMU0xfRVJST1JfQ09NUElMRSwKKyAgR1NUX0dMU0xfRVJST1JfTElOSywKKyAgR1NUX0dMU0xfRVJST1JfUFJPR1JBTSwKK30gR3N0R0xTTEVycm9yOworCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX0dMU0xfVkVSU0lPTl9OT05FID0gMCwKKworICBHU1RfR0xTTF9WRVJTSU9OXzEwMCA9IDEwMCwgLyogRVMgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl8xMTAgPSAxMTAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fMTIwID0gMTIwLCAvKiBHTCAqLworICBHU1RfR0xTTF9WRVJTSU9OXzEzMCA9IDEzMCwgLyogR0wgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl8xNDAgPSAxNDAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fMTUwID0gMTUwLCAvKiBHTCAqLworICBHU1RfR0xTTF9WRVJTSU9OXzMwMCA9IDMwMCwgLyogRVMgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl8zMTAgPSAzMTAsIC8qIEVTICovCisgIEdTVF9HTFNMX1ZFUlNJT05fMzIwID0gMzIwLCAvKiBFUyAqLworICBHU1RfR0xTTF9WRVJTSU9OXzMzMCA9IDMzMCwgLyogR0wgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl80MDAgPSA0MDAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fNDEwID0gNDEwLCAvKiBHTCAqLworICBHU1RfR0xTTF9WRVJTSU9OXzQyMCA9IDQyMCwgLyogR0wgKi8KKyAgR1NUX0dMU0xfVkVSU0lPTl80MzAgPSA0MzAsIC8qIEdMICovCisgIEdTVF9HTFNMX1ZFUlNJT05fNDQwID0gNDQwLCAvKiBHTCAqLworICBHU1RfR0xTTF9WRVJTSU9OXzQ1MCA9IDQ1MCwgLyogR0wgKi8KKworICBHU1RfR0xTTF9WRVJTSU9OX0FOWSA9IC0xLAorfSBHc3RHTFNMVmVyc2lvbjsKKwordHlwZWRlZiBlbnVtCit7CisgIC8qIFhYWDogbWF5YmUgbWFrZSBHc3RHTEFQSSBpbnN0ZWFkICovCisgIEdTVF9HTFNMX1BST0ZJTEVfTk9ORSA9IDAsCisKKyAgR1NUX0dMU0xfUFJPRklMRV9FUyA9ICgxIDw8IDApLAorICBHU1RfR0xTTF9QUk9GSUxFX0NPUkUgPSAoMSA8PCAxKSwKKyAgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZID0gKDEgPDwgMiksCisKKyAgR1NUX0dMU0xfUFJPRklMRV9BTlkgPSAtMSwKK30gR3N0R0xTTFByb2ZpbGU7CisKK0dzdEdMU0xWZXJzaW9uIGdzdF9nbHNsX3ZlcnNpb25fZnJvbV9zdHJpbmcgICAgICAgICAoY29uc3QgZ2NoYXIgKiBzdHJpbmcpOworY29uc3QgZ2NoYXIgKiAgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgICAgICAgICAgIChHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uKTsKKworR3N0R0xTTFByb2ZpbGUgZ3N0X2dsc2xfcHJvZmlsZV9mcm9tX3N0cmluZyAgICAgICAgIChjb25zdCBnY2hhciAqIHN0cmluZyk7Citjb25zdCBnY2hhciAqICBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAgICAgICAgICAgKEdzdEdMU0xQcm9maWxlIHByb2ZpbGUpOworCitnY2hhciAqICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nICAgKEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUpOworZ2Jvb2xlYW4gICAgICAgZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX2Zyb21fc3RyaW5nIChjb25zdCBnY2hhciAqIHN0cmluZywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFZlcnNpb24gKiB2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMUHJvZmlsZSAqIHByb2ZpbGUpOworCitnYm9vbGVhbiAgICAgICBnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZSAgKGNvbnN0IGdjaGFyICpzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMVmVyc2lvbiAqIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xQcm9maWxlICogcHJvZmlsZSk7CisKK0dzdEdMU0xWZXJzaW9uIGdzdF9nbF92ZXJzaW9uX3RvX2dsc2xfdmVyc2lvbiAgICAgICAoR3N0R0xBUEkgZ2xfYXBpLCBnaW50IG1haiwgZ2ludCBtaW4pOworZ2Jvb2xlYW4gICAgICAgZ3N0X2dsX2NvbnRleHRfc3VwcG9ydHNfZ2xzbF9wcm9maWxlX3ZlcnNpb24gKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFZlcnNpb24gdmVyc2lvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX0dMU0xfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbF9wcml2YXRlLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbF9wcml2YXRlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFiZTY3NwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsX3ByaXZhdGUuaApAQCAtMCwwICsxLDYzIEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfR0xTTF9QUklWQVRFX0hfXworI2RlZmluZSBfX0dTVF9HTFNMX1BSSVZBVEVfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xfZndkLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2lmbmRlZiBHTF9DT01QSUxFX1NUQVRVUworI2RlZmluZSBHTF9DT01QSUxFX1NUQVRVUyAgICAgICAgICAgICAweDhCODEKKyNlbmRpZgorI2lmbmRlZiBHTGhhbmRsZUFSQgorI2RlZmluZSBHTGhhbmRsZUFSQiBHTHVpbnQKKyNlbmRpZgorCit0eXBlZGVmIHN0cnVjdCBfR3N0R0xTTEZ1bmNzCit7CisgIGdib29sZWFuIGluaXRpYWxpemVkOworCisgIEdMdWludCBHU1RHTEFQSSAoKkNyZWF0ZVByb2dyYW0pICh2b2lkKTsKKyAgdm9pZCBHU1RHTEFQSSAoKkRlbGV0ZVByb2dyYW0pIChHTHVpbnQgcHJvZ3JhbSk7CisgIHZvaWQgR1NUR0xBUEkgKCpVc2VQcm9ncmFtKSAoR0x1aW50IHByb2dyYW0pOworICB2b2lkIEdTVEdMQVBJICgqR2V0QXR0YWNoZWRTaGFkZXJzKSAoR0x1aW50IHByb2dyYW0sIEdMc2l6ZWkgbWF4Y291bnQsCisgICAgICBHTHNpemVpICogY291bnQsIEdMdWludCAqIHNoYWRlcnMpOworCisgIEdMdWludCBHU1RHTEFQSSAoKkNyZWF0ZVNoYWRlcikgKEdMZW51bSBzaGFkZXJUeXBlKTsKKyAgdm9pZCBHU1RHTEFQSSAoKkRlbGV0ZVNoYWRlcikgKEdMdWludCBzaGFkZXIpOworICB2b2lkIEdTVEdMQVBJICgqQXR0YWNoU2hhZGVyKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOworICB2b2lkIEdTVEdMQVBJICgqRGV0YWNoU2hhZGVyKSAoR0x1aW50IHByb2dyYW0sIEdMdWludCBzaGFkZXIpOworCisgIHZvaWQgR1NUR0xBUEkgKCpHZXRTaGFkZXJpdikgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKKyAgdm9pZCBHU1RHTEFQSSAoKkdldFByb2dyYW1pdikgKEdMdWludCBwcm9ncmFtLCBHTGVudW0gcG5hbWUsIEdMaW50ICogcGFyYW1zKTsKKyAgdm9pZCBHU1RHTEFQSSAoKkdldFNoYWRlckluZm9Mb2cpIChHTHVpbnQgc2hhZGVyLCBHTHNpemVpIG1heExlbmd0aCwKKyAgICAgIEdMc2l6ZWkgKiBsZW5ndGgsIGNoYXIgKmxvZyk7CisgIHZvaWQgR1NUR0xBUEkgKCpHZXRQcm9ncmFtSW5mb0xvZykgKEdMdWludCBzaGFkZXIsIEdMc2l6ZWkgbWF4TGVuZ3RoLAorICAgICAgR0xzaXplaSAqIGxlbmd0aCwgY2hhciAqbG9nKTsKK30gR3N0R0xTTEZ1bmNzOworCitHX0dOVUNfSU5URVJOQUwgZ2Jvb2xlYW4gX2dzdF9nbHNsX2Z1bmNzX2ZpbGwgKEdzdEdMU0xGdW5jcyAqIHZ0YWJsZSwgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CitHX0dOVUNfSU5URVJOQUwgY29uc3QgZ2NoYXIgKiBfZ3N0X2dsc2xfc2hhZGVyX3N0cmluZ19maW5kX3ZlcnNpb24gKGNvbnN0IGdjaGFyICogc3RyKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX0dMU0xfUFJJVkFURV9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzBiMWQwCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc2xzdGFnZS5jCkBAIC0wLDAgKzEsNTI5IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCisjaW5jbHVkZSAiZ3N0Z2xzbHN0YWdlLmgiCisjaW5jbHVkZSAiZ3N0Z2xzbF9wcml2YXRlLmgiCisKKy8qKgorICogU0VDVElPTjpnc3RnbHNsc3RhZ2UKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogb2JqZWN0IGZvciBkZWFsaW5nIHdpdGggT3BlbkdMIHNoYWRlciBzdGFnZXMKKyAqIEB0aXRsZTogR3N0R0xTTFN0YWdlCisgKiBAc2VlX2Fsc286ICNHc3RHTFNoYWRlcgorICoKKyAqICNHc3RHTFNMU3RhZ2UgaG9sZHMgYW5kIHJlcHJlc2VudHMgYSBzaW5nbGUgT3BlbkdMIHNoYWRlciBzdGFnZS4KKyAqLworCitzdGF0aWMgY29uc3QgZ2NoYXIgKmVzMl92ZXJzaW9uX2hlYWRlciA9ICIjdmVyc2lvbiAxMDBcbiI7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9nbHNsX3N0YWdlX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9nbHNsX3N0YWdlX2RlYnVnCisKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RHTFNMU3RhZ2UsIGdzdF9nbHNsX3N0YWdlLCBHU1RfVFlQRV9PQkpFQ1QsCisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9nbHNsX3N0YWdlX2RlYnVnLCAiZ2xzbHN0YWdlIiwgMCwKKyAgICAgICAgIkdMU0wgU3RhZ2UiKTsKKyAgICApOworCisjZGVmaW5lIEdTVF9HTFNMX1NUQUdFX0dFVF9QUklWQVRFKG8pIFwKKyAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSgobyksIEdTVF9UWVBFX0dMU0xfU1RBR0UsIEdzdEdMU0xTdGFnZVByaXZhdGUpKQorCitzdHJ1Y3QgX0dzdEdMU0xTdGFnZVByaXZhdGUKK3sKKyAgR3N0R0xTTEZ1bmNzIHZ0YWJsZTsKKworICBHTGVudW0gdHlwZTsKKyAgR0xoYW5kbGVBUkIgaGFuZGxlOworICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOworICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlOworICBnY2hhciAqKnN0cmluZ3M7CisgIGdpbnQgbl9zdHJpbmdzOworCisgIGdib29sZWFuIGNvbXBpbGVkOworfTsKKworc3RhdGljIHZvaWQKK2dzdF9nbHNsX3N0YWdlX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RHTFNMU3RhZ2UgKnN0YWdlID0gR1NUX0dMU0xfU1RBR0UgKG9iamVjdCk7CisgIGdpbnQgaTsKKworICBpZiAoc3RhZ2UtPmNvbnRleHQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdGFnZS0+Y29udGV4dCk7CisgICAgc3RhZ2UtPmNvbnRleHQgPSBOVUxMOworICB9CisKKyAgZm9yIChpID0gMDsgaSA8IHN0YWdlLT5wcml2LT5uX3N0cmluZ3M7IGkrKykgeworICAgIGdfZnJlZSAoc3RhZ2UtPnByaXYtPnN0cmluZ3NbaV0pOworICB9CisgIGdfZnJlZSAoc3RhZ2UtPnByaXYtPnN0cmluZ3MpOworICBzdGFnZS0+cHJpdi0+c3RyaW5ncyA9IE5VTEw7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9nbHNsX3N0YWdlX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2dsc2xfc3RhZ2Vfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9nbHNsX3N0YWdlX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9CisKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbHNsX3N0YWdlX2NsYXNzX2luaXQgKEdzdEdMU0xTdGFnZUNsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqb2JqX2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKworICBnX3R5cGVfY2xhc3NfYWRkX3ByaXZhdGUgKGtsYXNzLCBzaXplb2YgKEdzdEdMU0xTdGFnZVByaXZhdGUpKTsKKworICBvYmpfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2dsc2xfc3RhZ2VfZmluYWxpemU7CisgIG9ial9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2dsc2xfc3RhZ2Vfc2V0X3Byb3BlcnR5OworICBvYmpfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9nbHNsX3N0YWdlX2dldF9wcm9wZXJ0eTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9nbHNsX3N0YWdlX2luaXQgKEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBzdGFnZS0+cHJpdiA9IEdTVF9HTFNMX1NUQUdFX0dFVF9QUklWQVRFIChzdGFnZSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2lzX3ZhbGlkX3NoYWRlcl90eXBlIChHTGVudW0gdHlwZSkKK3sKKyAgc3dpdGNoICh0eXBlKSB7CisgICAgY2FzZSBHTF9WRVJURVhfU0hBREVSOgorICAgIGNhc2UgR0xfRlJBR01FTlRfU0hBREVSOgorI2lmZGVmIEdMX1RFU1NfQ09OVFJPTF9TSEFERVIKKyAgICBjYXNlIEdMX1RFU1NfQ09OVFJPTF9TSEFERVI6CisjZW5kaWYKKyNpZmRlZiBHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSCisgICAgY2FzZSBHTF9URVNTX0VWQUxVQVRJT05fU0hBREVSOgorI2VuZGlmCisjaWZkZWYgR0xfR0VPTUVUUllfU0hBREVSCisgICAgY2FzZSBHTF9HRU9NRVRSWV9TSEFERVI6CisjZW5kaWYKKyNpZmRlZiBHTF9DT01QVVRFX1NIQURFUgorICAgIGNhc2UgR0xfQ09NUFVURV9TSEFERVI6CisjZW5kaWYKKyAgICAgIHJldHVybiBUUlVFOworICAgIGRlZmF1bHQ6CisgICAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworc3RhdGljIGNvbnN0IGdjaGFyICoKK19zaGFkZXJfdHlwZV90b19zdHJpbmcgKEdMZW51bSB0eXBlKQoreworICBzd2l0Y2ggKHR5cGUpIHsKKyAgICBjYXNlIEdMX1ZFUlRFWF9TSEFERVI6CisgICAgICByZXR1cm4gInZlcnRleCI7CisgICAgY2FzZSBHTF9GUkFHTUVOVF9TSEFERVI6CisgICAgICByZXR1cm4gImZyYWdtZW50IjsKKyNpZmRlZiBHTF9URVNTX0NPTlRST0xfU0hBREVSCisgICAgY2FzZSBHTF9URVNTX0NPTlRST0xfU0hBREVSOgorICAgICAgcmV0dXJuICJ0ZXNzZWxhdGlvbiBjb250cm9sIjsKKyNlbmRpZgorI2lmZGVmIEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVIKKyAgICBjYXNlIEdMX1RFU1NfRVZBTFVBVElPTl9TSEFERVI6CisgICAgICByZXR1cm4gInRlc3NlbGF0aW9uIGV2YWx1YXRpb24iOworI2VuZGlmCisjaWZkZWYgR0xfR0VPTUVUUllfU0hBREVSCisgICAgY2FzZSBHTF9HRU9NRVRSWV9TSEFERVI6CisgICAgICByZXR1cm4gImdlb21ldHJ5IjsKKyNlbmRpZgorI2lmZGVmIEdMX0NPTVBVVEVfU0hBREVSCisgICAgY2FzZSBHTF9DT01QVVRFX1NIQURFUjoKKyAgICAgIHJldHVybiAiY29tcHV0ZSI7CisjZW5kaWYKKyAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuICJ1bmtub3duIjsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19lbnN1cmVfc2hhZGVyIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSkKK3sKKyAgaWYgKHN0YWdlLT5wcml2LT5oYW5kbGUpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgaWYgKCEoc3RhZ2UtPnByaXYtPmhhbmRsZSA9CisgICAgICAgICAgc3RhZ2UtPnByaXYtPnZ0YWJsZS5DcmVhdGVTaGFkZXIgKHN0YWdlLT5wcml2LT50eXBlKSkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBzdGFnZS0+cHJpdi0+aGFuZGxlICE9IDA7Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nczoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqIEB0eXBlOiB0aGUgR0wgZW51bSBzaGFkZXIgc3RhZ2UgdHlwZQorICogQHZlcnNpb246IHRoZSAjR3N0R0xTTFZlcnNpb24KKyAqIEBwcm9maWxlOiB0aGUgI0dzdEdMU0xQcm9maWxlCisgKiBAbl9zdHJpbmdzOiB0aGUgbnVtYmVyIG9mIHN0cmluZ3MgaW4gQHN0cgorICogQHN0cjogYW4gYXJyYXkgb2Ygc3RyaW5ncyBjb25jYXR0ZWQgdG9nZXRoZXIgdG8gcHJvZHVjZSBhIHNoYWRlcgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0dzdEdMU0xTdGFnZSBvZiB0aGUgc3BlY2lmaWVkIEB0eXBlCisgKi8KK0dzdEdMU0xTdGFnZSAqCitnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmdzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBndWludCB0eXBlLAorICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUsIGdpbnQgbl9zdHJpbmdzLAorICAgIGNvbnN0IGdjaGFyICoqIHN0cikKK3sKKyAgR3N0R0xTTFN0YWdlICpzdGFnZTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKF9pc192YWxpZF9zaGFkZXJfdHlwZSAodHlwZSksIE5VTEwpOworCisgIHN0YWdlID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9HTFNMX1NUQUdFLCBOVUxMKTsKKyAgLyogRklYTUU6IEdJbml0dGFibGUgKi8KKyAgaWYgKCFfZ3N0X2dsc2xfZnVuY3NfZmlsbCAoJnN0YWdlLT5wcml2LT52dGFibGUsIGNvbnRleHQpKSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RhZ2UpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgc3RhZ2UtPmNvbnRleHQgPSBnc3Rfb2JqZWN0X3JlZiAoY29udGV4dCk7CisgIHN0YWdlLT5wcml2LT50eXBlID0gdHlwZTsKKyAgaWYgKCFnc3RfZ2xzbF9zdGFnZV9zZXRfc3RyaW5ncyAoc3RhZ2UsIHZlcnNpb24sIHByb2ZpbGUsIG5fc3RyaW5ncywgc3RyKSkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHN0YWdlKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHJldHVybiBzdGFnZTsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9uZXdfd2l0aF9zdHJpbmc6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAdHlwZTogdGhlIEdMIGVudW0gc2hhZGVyIHN0YWdlIHR5cGUKKyAqIEB2ZXJzaW9uOiB0aGUgI0dzdEdMU0xWZXJzaW9uCisgKiBAcHJvZmlsZTogdGhlICNHc3RHTFNMUHJvZmlsZQorICogQHN0cjogYSBzaGFkZXIgc3RyaW5nCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyAjR3N0R0xTTFN0YWdlIG9mIHRoZSBzcGVjaWZpZWQgQHR5cGUKKyAqLworR3N0R0xTTFN0YWdlICoKK2dzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgZ3VpbnQgdHlwZSwKKyAgICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLCBHc3RHTFNMUHJvZmlsZSBwcm9maWxlLCBjb25zdCBnY2hhciAqIHN0cikKK3sKKyAgcmV0dXJuIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZ3MgKGNvbnRleHQsIHR5cGUsIHZlcnNpb24sIHByb2ZpbGUsIDEsCisgICAgICAmc3RyKTsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9uZXc6CisgKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0CisgKiBAdHlwZTogdGhlIEdMIGVudW0gc2hhZGVyIHN0YWdlIHR5cGUKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNHc3RHTFNMU3RhZ2Ugb2YgdGhlIHNwZWNpZmllZCBAdHlwZQorICovCitHc3RHTFNMU3RhZ2UgKgorZ3N0X2dsc2xfc3RhZ2VfbmV3IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBndWludCB0eXBlKQoreworICByZXR1cm4gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCB0eXBlLCBHU1RfR0xTTF9WRVJTSU9OX05PTkUsCisgICAgICBHU1RfR0xTTF9QUk9GSUxFX05PTkUsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX2RlZmF1bHRfdmVydGV4OgorICogQGNvbnRleHQ6IGEgI0dzdEdMQ29udGV4dAorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBuZXcgI0dzdEdMU0xTdGFnZSB3aXRoIHRoZSBkZWZhdWx0IHZlcnRleCBzaGFkZXIKKyAqLworR3N0R0xTTFN0YWdlICoKK2dzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X3ZlcnRleCAoR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgcmV0dXJuIGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoY29udGV4dCwgR0xfVkVSVEVYX1NIQURFUiwKKyAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgIEdTVF9HTFNMX1BST0ZJTEVfRVMgfCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksCisgICAgICBnc3RfZ2xfc2hhZGVyX3N0cmluZ192ZXJ0ZXhfZGVmYXVsdCk7Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfZGVmYXVsdF9mcmFnbWVudDoKKyAqIEBjb250ZXh0OiBhICNHc3RHTENvbnRleHQKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGEgbmV3ICNHc3RHTFNMU3RhZ2Ugd2l0aCB0aGUgZGVmYXVsdCBmcmFnbWVudCBzaGFkZXIKKyAqLworR3N0R0xTTFN0YWdlICoKK2dzdF9nbHNsX3N0YWdlX25ld19kZWZhdWx0X2ZyYWdtZW50IChHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICByZXR1cm4gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsCisgICAgICBHU1RfR0xTTF9QUk9GSUxFX0VTIHwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLAorICAgICAgZ3N0X2dsX3NoYWRlcl9zdHJpbmdfZnJhZ21lbnRfZGVmYXVsdCk7Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2Vfc2V0X3N0cmluZ3M6CisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZQorICogQHZlcnNpb246IGEgI0dzdEdMU0xWZXJzaW9uCisgKiBAcHJvZmlsZTogYSAjR3N0R0xTTFByb2ZpbGUKKyAqIEBuX3N0cmluZ3M6IG51bWJlciBvZiBzdHJpbmdzIGluIEBzdHIKKyAqIEBzdHI6ICh0cmFuc2ZlciBub25lKTogYSBHTFNMIHNoYWRlciBzdHJpbmcKKyAqCisgKiBSZXBsYWNlcyB0aGUgY3VycmVudCBzaGFkZXIgc3RyaW5nIHdpdGggQHN0ci4KKyAqLworZ2Jvb2xlYW4KK2dzdF9nbHNsX3N0YWdlX3NldF9zdHJpbmdzIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSwgR3N0R0xTTFZlcnNpb24gdmVyc2lvbiwKKyAgICBHc3RHTFNMUHJvZmlsZSBwcm9maWxlLCBnaW50IG5fc3RyaW5ncywgY29uc3QgZ2NoYXIgKiogc3RyKQoreworICBnaW50IGk7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTFNMX1NUQUdFIChzdGFnZSksIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG5fc3RyaW5ncyA+IDAsIEZBTFNFKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHN0ciAhPSBOVUxMLCBGQUxTRSk7CisKKyAgaWYgKCFnc3RfZ2xfY29udGV4dF9zdXBwb3J0c19nbHNsX3Byb2ZpbGVfdmVyc2lvbiAoc3RhZ2UtPmNvbnRleHQsIHZlcnNpb24sCisgICAgICAgICAgcHJvZmlsZSkpIHsKKyAgICBjb25zdCBnY2hhciAqdmVyc2lvbl9zdHIgPSBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAodmVyc2lvbik7CisgICAgY29uc3QgZ2NoYXIgKnByb2ZpbGVfc3RyID0gZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKHByb2ZpbGUpOworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN0YWdlLCAiR0wgY29udGV4dCBkb2VzIG5vdCBzdXBwb3J0IHZlcnNpb24gJXMgYW5kICIKKyAgICAgICAgInByb2ZpbGUgJXMiLCB2ZXJzaW9uX3N0ciwgcHJvZmlsZV9zdHIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHN0YWdlLT5wcml2LT52ZXJzaW9uID0gdmVyc2lvbjsKKyAgc3RhZ2UtPnByaXYtPnByb2ZpbGUgPSBwcm9maWxlOworCisgIGZvciAoaSA9IDA7IGkgPCBzdGFnZS0+cHJpdi0+bl9zdHJpbmdzOyBpKyspIHsKKyAgICBnX2ZyZWUgKHN0YWdlLT5wcml2LT5zdHJpbmdzW2ldKTsKKyAgfQorCisgIGlmIChzdGFnZS0+cHJpdi0+bl9zdHJpbmdzIDwgbl9zdHJpbmdzKSB7CisgICAgLyogb25seSByZWFsbG9jIGlmIHdlIG5lZWQgbW9yZSBzcGFjZSAqLworICAgIGdfZnJlZSAoc3RhZ2UtPnByaXYtPnN0cmluZ3MpOworICAgIHN0YWdlLT5wcml2LT5zdHJpbmdzID0gZ19uZXcwIChnY2hhciAqLCBuX3N0cmluZ3MpOworICB9CisKKyAgZm9yIChpID0gMDsgaSA8IG5fc3RyaW5nczsgaSsrKQorICAgIHN0YWdlLT5wcml2LT5zdHJpbmdzW2ldID0gZ19zdHJkdXAgKHN0cltpXSk7CisgIHN0YWdlLT5wcml2LT5uX3N0cmluZ3MgPSBuX3N0cmluZ3M7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2VfZ2V0X3NoYWRlcl90eXBlOgorICogQHN0YWdlOiBhICNHc3RHTFNMU3RhZ2UKKyAqCisgKiBSZXR1cm5zOiBUaGUgR0wgc2hhZGVyIHR5cGUgZm9yIHRoaXMgc2hhZGVyIHN0YWdlCisgKi8KK2d1aW50Citnc3RfZ2xzbF9zdGFnZV9nZXRfc2hhZGVyX3R5cGUgKEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSwgMCk7CisKKyAgcmV0dXJuIHN0YWdlLT5wcml2LT50eXBlOworfQorCisvKioKKyAqIGdzdF9nbHNsX3N0YWdlX2dldF9oYW5kbGU6CisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZQorICoKKyAqIFJldHVybnM6IFRoZSBHTCBoYW5kbGUgZm9yIHRoaXMgc2hhZGVyIHN0YWdlCisgKi8KK2d1aW50Citnc3RfZ2xzbF9zdGFnZV9nZXRfaGFuZGxlIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTFNMX1NUQUdFIChzdGFnZSksIDApOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoc3RhZ2UtPnByaXYtPmNvbXBpbGVkLCAwKTsKKworICByZXR1cm4gc3RhZ2UtPnByaXYtPmhhbmRsZTsKK30KKworLyoqCisgKiBnc3RfZ2xzbF9zdGFnZV9nZXRfdmVyc2lvbjoKKyAqIEBzdGFnZTogYSAjR3N0R0xTTFN0YWdlCisgKgorICogUmV0dXJuczogVGhlIEdMU0wgdmVyc2lvbiBmb3IgdGhlIGN1cnJlbnQgc2hhZGVyIHN0YWdlCisgKi8KK0dzdEdMU0xWZXJzaW9uCitnc3RfZ2xzbF9zdGFnZV9nZXRfdmVyc2lvbiAoR3N0R0xTTFN0YWdlICogc3RhZ2UpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xTTF9TVEFHRSAoc3RhZ2UpLCAwKTsKKworICByZXR1cm4gc3RhZ2UtPnByaXYtPnZlcnNpb247Cit9CisKKy8qKgorICogZ3N0X2dsc2xfc3RhZ2VfZ2V0X3Byb2ZpbGU6CisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZQorICoKKyAqIFJldHVybnM6IFRoZSBHTFNMIHByb2ZpbGUgZm9yIHRoZSBjdXJyZW50IHNoYWRlciBzdGFnZQorICovCitHc3RHTFNMUHJvZmlsZQorZ3N0X2dsc2xfc3RhZ2VfZ2V0X3Byb2ZpbGUgKEdzdEdMU0xTdGFnZSAqIHN0YWdlKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSwgMCk7CisKKyAgcmV0dXJuIHN0YWdlLT5wcml2LT5wcm9maWxlOworfQorCitzdGF0aWMgdm9pZAorX21heWJlX3ByZXBlbmRfdmVyc2lvbiAoR3N0R0xTTFN0YWdlICogc3RhZ2UsIGdjaGFyICoqIHNoYWRlcl9zdHIsCisgICAgZ2ludCAqIG5fdmVydGV4X3NvdXJjZXMsIGNvbnN0IGdjaGFyICoqKiB2ZXJ0ZXhfc291cmNlcykKK3sKKyAgZ2ludCBuID0gKm5fdmVydGV4X3NvdXJjZXM7CisgIGdib29sZWFuIGFkZF9oZWFkZXIgPSBGQUxTRTsKKyAgZ2ludCBpLCBqOworCisgIC8qIEZJWE1FOiB0aGlzIGFsbCBhbiBlZHVjYXRlZCBndWVzcyAqLworICBpZiAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoc3RhZ2UtPmNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMMywgMywgMCkKKyAgICAgICYmIChzdGFnZS0+cHJpdi0+cHJvZmlsZSAmIEdTVF9HTFNMX1BST0ZJTEVfRVMpICE9IDAKKyAgICAgICYmICFfZ3N0X2dsc2xfc2hhZGVyX3N0cmluZ19maW5kX3ZlcnNpb24gKHNoYWRlcl9zdHJbMF0pKSB7CisgICAgYWRkX2hlYWRlciA9IFRSVUU7CisgICAgbisrOworICB9CisKKyAgKnZlcnRleF9zb3VyY2VzID0gZ19tYWxsb2MwIChuICogc2l6ZW9mIChnY2hhciAqKSk7CisKKyAgaSA9IDA7CisgIGlmIChhZGRfaGVhZGVyKQorICAgICgqdmVydGV4X3NvdXJjZXMpW2krK10gPSBlczJfdmVyc2lvbl9oZWFkZXI7CisKKyAgZm9yIChqID0gMDsgaiA8IHN0YWdlLT5wcml2LT5uX3N0cmluZ3M7IGkrKywgaisrKQorICAgICgqdmVydGV4X3NvdXJjZXMpW2ldID0gc2hhZGVyX3N0cltqXTsKKyAgKm5fdmVydGV4X3NvdXJjZXMgPSBuOworfQorCitzdHJ1Y3QgY29tcGlsZQoreworICBHc3RHTFNMU3RhZ2UgKnN0YWdlOworICBHRXJyb3IgKiplcnJvcjsKKyAgZ2Jvb2xlYW4gcmVzdWx0OworfTsKKworc3RhdGljIHZvaWQKK19jb21waWxlX3NoYWRlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgc3RydWN0IGNvbXBpbGUgKmRhdGEpCit7CisgIEdzdEdMU0xTdGFnZVByaXZhdGUgKnByaXYgPSBkYXRhLT5zdGFnZS0+cHJpdjsKKyAgR3N0R0xTTEZ1bmNzICp2dGFibGUgPSAmZGF0YS0+c3RhZ2UtPnByaXYtPnZ0YWJsZTsKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisgIGNvbnN0IGdjaGFyICoqdmVydGV4X3NvdXJjZXM7CisgIGdjaGFyIGluZm9fYnVmZmVyWzIwNDhdOworICBnaW50IG5fdmVydGV4X3NvdXJjZXM7CisgIEdMaW50IHN0YXR1czsKKyAgZ2ludCBsZW47CisgIGdpbnQgaTsKKworICBpZiAoZGF0YS0+c3RhZ2UtPnByaXYtPmNvbXBpbGVkKSB7CisgICAgZGF0YS0+cmVzdWx0ID0gVFJVRTsKKyAgICByZXR1cm47CisgIH0KKworICBpZiAoIV9lbnN1cmVfc2hhZGVyIChkYXRhLT5zdGFnZSkpIHsKKyAgICBnX3NldF9lcnJvciAoZGF0YS0+ZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9DT01QSUxFLAorICAgICAgICAiRmFpbGVkIHRvIGNyZWF0ZSBzaGFkZXIgb2JqZWN0Iik7CisgICAgZGF0YS0+cmVzdWx0ID0gRkFMU0U7CisgICAgcmV0dXJuOworICB9CisKKyAgbl92ZXJ0ZXhfc291cmNlcyA9IGRhdGEtPnN0YWdlLT5wcml2LT5uX3N0cmluZ3M7CisgIF9tYXliZV9wcmVwZW5kX3ZlcnNpb24gKGRhdGEtPnN0YWdlLCBwcml2LT5zdHJpbmdzLCAmbl92ZXJ0ZXhfc291cmNlcywKKyAgICAgICZ2ZXJ0ZXhfc291cmNlcyk7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoZGF0YS0+c3RhZ2UsICJjb21waWxpbmcgc2hhZGVyOiIpOworICBmb3IgKGkgPSAwOyBpIDwgbl92ZXJ0ZXhfc291cmNlczsgaSsrKSB7CisgICAgR1NUX1RSQUNFX09CSkVDVCAoZGF0YS0+c3RhZ2UsICIlcyIsIHZlcnRleF9zb3VyY2VzW2ldKTsKKyAgfQorCisgIGdsLT5TaGFkZXJTb3VyY2UgKHByaXYtPmhhbmRsZSwgbl92ZXJ0ZXhfc291cmNlcywKKyAgICAgIChjb25zdCBnY2hhciAqKikgdmVydGV4X3NvdXJjZXMsIE5VTEwpOworICBnbC0+Q29tcGlsZVNoYWRlciAocHJpdi0+aGFuZGxlKTsKKyAgZ19mcmVlICh2ZXJ0ZXhfc291cmNlcyk7CisgIC8qIEZJWE1FOiBzdXBwb3J0ZWQgdGhyZWFkZWQgR0xTTCBjb21waWxlcnMgYW5kIGRvbid0IGRlc3Ryb3kgY29tcGlsYXRpb24KKyAgICogcGVyZm9ybWFuY2UgYnkgZ2V0dGluZyB0aGUgY29tcGlsYXRpb24gcmVzdWx0IGRpcmVjdGx5IGFmdGVyIGNvbXBpbGF0aW9uICovCisgIHN0YXR1cyA9IEdMX0ZBTFNFOworICB2dGFibGUtPkdldFNoYWRlcml2IChwcml2LT5oYW5kbGUsIEdMX0NPTVBJTEVfU1RBVFVTLCAmc3RhdHVzKTsKKworICBsZW4gPSAwOworICB2dGFibGUtPkdldFNoYWRlckluZm9Mb2cgKHByaXYtPmhhbmRsZSwgc2l6ZW9mIChpbmZvX2J1ZmZlcikgLSAxLCAmbGVuLAorICAgICAgaW5mb19idWZmZXIpOworICBpbmZvX2J1ZmZlcltsZW5dID0gJ1wwJzsKKworICBpZiAoc3RhdHVzICE9IEdMX1RSVUUpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChkYXRhLT5zdGFnZSwgIiVzIHNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6JXMiLAorICAgICAgICBfc2hhZGVyX3R5cGVfdG9fc3RyaW5nIChwcml2LT50eXBlKSwgaW5mb19idWZmZXIpOworCisgICAgZ19zZXRfZXJyb3IgKGRhdGEtPmVycm9yLCBHU1RfR0xTTF9FUlJPUiwgR1NUX0dMU0xfRVJST1JfQ09NUElMRSwKKyAgICAgICAgIiVzIHNoYWRlciBjb21waWxhdGlvbiBmYWlsZWQ6JXMiLAorICAgICAgICBfc2hhZGVyX3R5cGVfdG9fc3RyaW5nIChwcml2LT50eXBlKSwgaW5mb19idWZmZXIpOworCisgICAgdnRhYmxlLT5EZWxldGVTaGFkZXIgKHByaXYtPmhhbmRsZSk7CisgICAgZGF0YS0+cmVzdWx0ID0gRkFMU0U7CisgICAgcmV0dXJuOworICB9IGVsc2UgaWYgKGxlbiA+IDEpIHsKKyAgICBHU1RfRklYTUVfT0JKRUNUIChkYXRhLT5zdGFnZSwgIiVzIHNoYWRlciBpbmZvIGxvZzolcyIsCisgICAgICAgIF9zaGFkZXJfdHlwZV90b19zdHJpbmcgKHByaXYtPnR5cGUpLCBpbmZvX2J1ZmZlcik7CisgIH0KKworICBkYXRhLT5yZXN1bHQgPSBUUlVFOworfQorCisvKioKKyAqIGdzdF9nbHNsX3N0YWdlX2NvbXBpbGU6CisgKiBAc3RhZ2U6IGEgI0dzdEdMU0xTdGFnZQorICogQGVycm9yOiBhICNHRXJyb3IgdG8gdXNlIG9uIGZhaWx1cmUKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBjb21waWxhdGlvbiBzdWNlZWRlZAorICovCitnYm9vbGVhbgorZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSAoR3N0R0xTTFN0YWdlICogc3RhZ2UsIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgc3RydWN0IGNvbXBpbGUgZGF0YTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMU0xfU1RBR0UgKHN0YWdlKSwgRkFMU0UpOworCisgIGlmICghc3RhZ2UtPnByaXYtPnN0cmluZ3MpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyb3IsIEdTVF9HTFNMX0VSUk9SLCBHU1RfR0xTTF9FUlJPUl9DT01QSUxFLAorICAgICAgICAiTm8gc2hhZGVyIHNvdXJjZSB0byBjb21waWxlIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgZGF0YS5zdGFnZSA9IHN0YWdlOworICBkYXRhLmVycm9yID0gZXJyb3I7CisKKyAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoc3RhZ2UtPmNvbnRleHQsCisgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2NvbXBpbGVfc2hhZGVyLCAmZGF0YSk7CisKKyAgc3RhZ2UtPnByaXYtPmNvbXBpbGVkID0gVFJVRTsKKworICByZXR1cm4gZGF0YS5yZXN1bHQ7Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzbHN0YWdlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFkY2JlYwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHNsc3RhZ2UuaApAQCAtMCwwICsxLDk0IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfR0xTTF9TVEFHRV9IX18KKyNkZWZpbmUgX19HU1RfR0xTTF9TVEFHRV9IX18KKworI2luY2x1ZGUgPGdzdC9nbC9nc3RnbHNsLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9HTFNMX1NUQUdFICAgICAgICAgKGdzdF9nbHNsX3N0YWdlX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9HTFNMX1NUQUdFKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfVFlQRV9HTFNMX1NUQUdFLCBHc3RHTFNMU3RhZ2UpKQorI2RlZmluZSBHU1RfR0xTTF9TVEFHRV9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9UWVBFX0dMU0xfU1RBR0UsIEdzdEdMU0xTdGFnZUNsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX0dMU0xfU1RBR0UobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9UWVBFX0dMU0xfU1RBR0UpKQorI2RlZmluZSBHU1RfSVNfR0xTTF9TVEFHRV9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX1RZUEVfR0xTTF9TVEFHRSkpCisjZGVmaW5lIEdTVF9HTFNMX1NUQUdFX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9UWVBFX0dMU0xfU1RBR0UsIEdzdEdMU0xTdGFnZUNsYXNzKSkKKworLyoqCisgKiBHc3RHTFNMU3RhZ2U6CisgKgorICogT3BhcXVlICNHc3RHTFNMU3RhZ2Ugc3RydWN0CisgKi8KK3N0cnVjdCBfR3N0R0xTTFN0YWdlCit7CisgIC8qPCBwcml2YXRlID4qLworICBHc3RPYmplY3QgcGFyZW50OworCisgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKKworICBHc3RHTFNMU3RhZ2VQcml2YXRlICpwcml2OworCisgIGdwb2ludGVyIF9wYWRkaW5nW0dTVF9QQURESU5HXTsKK307CisKKy8qKgorICogR3N0R0xTTFN0YWdlQ2xhc3M6CisgKgorICogT3BhcXVlICNHc3RHTFNMU3RhZ2VDbGFzcyBzdHJ1Y3QKKyAqLworc3RydWN0IF9Hc3RHTFNMU3RhZ2VDbGFzcworeworICAvKjwgcHJpdmF0ZSA+Ki8KKyAgR3N0T2JqZWN0Q2xhc3MgcGFyZW50OworfTsKKworR1R5cGUgICAgICAgICAgZ3N0X2dsc2xfc3RhZ2VfZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOworR3N0R0xTTFN0YWdlICogZ3N0X2dsc2xfc3RhZ2VfbmV3ICAgICAgICAgICAgICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIGd1aW50IHR5cGUpOworR3N0R0xTTFN0YWdlICogZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBzdHIpOworR3N0R0xTTFN0YWdlICogZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5ncyAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgdHlwZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBuX3N0cmluZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiogc3RyKTsKKworR3N0R0xTTFN0YWdlICogZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfZnJhZ21lbnQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworR3N0R0xTTFN0YWdlICogZ3N0X2dsc2xfc3RhZ2VfbmV3X2RlZmF1bHRfdmVydGV4ICAgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworCitndWludCAgICAgICAgICBnc3RfZ2xzbF9zdGFnZV9nZXRfaGFuZGxlICAgICAgICAoR3N0R0xTTFN0YWdlICogc3RhZ2UpOworR3N0R0xTTFByb2ZpbGUgZ3N0X2dsc2xfc3RhZ2VfZ2V0X3Byb2ZpbGUgICAgICAgKEdzdEdMU0xTdGFnZSAqIHN0YWdlKTsKK0dzdEdMU0xWZXJzaW9uIGdzdF9nbHNsX3N0YWdlX2dldF92ZXJzaW9uICAgICAgIChHc3RHTFNMU3RhZ2UgKiBzdGFnZSk7CitndWludCAgICAgICAgICBnc3RfZ2xzbF9zdGFnZV9nZXRfc2hhZGVyX3R5cGUgICAoR3N0R0xTTFN0YWdlICogc3RhZ2UpOworZ2Jvb2xlYW4gICAgICAgZ3N0X2dsc2xfc3RhZ2Vfc2V0X3N0cmluZ3MgICAgICAgKEdzdEdMU0xTdGFnZSAqIHN0YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IG5fc3RyaW5ncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqKiBzdHIpOworZ2Jvb2xlYW4gICAgICAgZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSAgICAgICAgICAgKEdzdEdMU0xTdGFnZSAqIHN0YWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnJvcik7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9HTFNMX1NUQUdFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmMKaW5kZXggZjY4MDM1My4uYjQwNjFkMyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5jCkBAIC0zNywxMyArMzcsOTEgQEAKICNpZm5kZWYgR0xfVElNRU9VVF9FWFBJUkVECiAjZGVmaW5lIEdMX1RJTUVPVVRfRVhQSVJFRCAweDkxMUIKICNlbmRpZgorI2lmbmRlZiBHTF9USU1FT1VUX0lHTk9SRUQKKyNkZWZpbmUgR0xfVElNRU9VVF9JR05PUkVEIEdfR1VJTlQ2NF9DT05TVEFOVCgweEZGRkZGRkZGRkZGRkZGRkYpCisjZW5kaWYKKworc3RhdGljIHZvaWQKK19kZWZhdWx0X3NldF9zeW5jX2dsIChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBpZiAoZ2wtPkZlbmNlU3luYykgeworICAgIGlmIChzeW5jX21ldGEtPmRhdGEpIHsKKyAgICAgIEdTVF9MT0cgKCJkZWxldGluZyBzeW5jIG9iamVjdCAlcCIsIHN5bmNfbWV0YS0+ZGF0YSk7CisgICAgICBnbC0+RGVsZXRlU3luYyAoKEdMc3luYykgc3luY19tZXRhLT5kYXRhKTsKKyAgICB9CisgICAgc3luY19tZXRhLT5kYXRhID0KKyAgICAgICAgKGdwb2ludGVyKSBnbC0+RmVuY2VTeW5jIChHTF9TWU5DX0dQVV9DT01NQU5EU19DT01QTEVURSwgMCk7CisKKyAgICBpZiAoZ3N0X2dsX2NvbnRleHRfaXNfc2hhcmVkIChjb250ZXh0KSkKKyAgICAgIC8qIGlmIHdlIG9ubHkgaGF2ZSBhIHNpbmdsZSBjb250ZXh0LCB0aGUgd2FpdCB3aWxsIGZsdXNoIGZvciB1cyAqLworICAgICAgZ2wtPkZsdXNoICgpOworICAgIEdTVF9MT0cgKCJzZXR0aW5nIHN5bmMgb2JqZWN0ICVwIiwgc3luY19tZXRhLT5kYXRhKTsKKyAgfSBlbHNlIHsKKyAgICAvKiBYWFg6IHRoaXMgYSBsaXR0bGUgb3ZlciB0aGUgdG9wIGlmIHRoZSBDUFUgaXMgbmV2ZXIgZ29pbmcgdG8KKyAgICAgKiBhY2Nlc3MgdGhlIGRhdGEsIGhvd2V2ZXIgdGhpcyBpcyB0aGUgbGVnYWN5IHBhdGgsIHNvLi4uICovCisgICAgZ2wtPkZpbmlzaCAoKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorX2RlZmF1bHRfd2FpdF9nbCAoR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSwgR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgaWYgKHN5bmNfbWV0YS0+ZGF0YSAmJiBnbC0+V2FpdFN5bmMpIHsKKyAgICBHU1RfTE9HICgid2FpdGluZyBvbiBzeW5jIG9iamVjdCAlcCIsIHN5bmNfbWV0YS0+ZGF0YSk7CisgICAgZ2wtPldhaXRTeW5jICgoR0xzeW5jKSBzeW5jX21ldGEtPmRhdGEsIDAsIEdMX1RJTUVPVVRfSUdOT1JFRCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK19kZWZhdWx0X3dhaXRfY3B1X2dsIChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgR0xlbnVtIHJlczsKKworICBpZiAoc3luY19tZXRhLT5kYXRhICYmIGdsLT5DbGllbnRXYWl0U3luYykgeworICAgIGRvIHsKKyAgICAgIEdTVF9MT0cgKCJ3YWl0aW5nIG9uIHN5bmMgb2JqZWN0ICVwIiwgc3luY19tZXRhLT5kYXRhKTsKKyAgICAgIHJlcyA9CisgICAgICAgICAgZ2wtPkNsaWVudFdhaXRTeW5jICgoR0xzeW5jKSBzeW5jX21ldGEtPmRhdGEsCisgICAgICAgICAgR0xfU1lOQ19GTFVTSF9DT01NQU5EU19CSVQsIDEwMDAwMDAwMDAgLyogMXMgKi8gKTsKKyAgICB9IHdoaWxlIChyZXMgPT0gR0xfVElNRU9VVF9FWFBJUkVEKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorX2RlZmF1bHRfY29weSAoR3N0R0xTeW5jTWV0YSAqIHNyYywgR3N0QnVmZmVyICogc2J1ZmZlciwgR3N0R0xTeW5jTWV0YSAqIGRlc3QsCisgICAgR3N0QnVmZmVyICogZGJ1ZmZlcikKK3sKKyAgR1NUX0xPRyAoImNvcHkgc3luYyBvYmplY3QgJXAgZnJvbSBtZXRhICVwIHRvICVwIiwgc3JjLT5kYXRhLCBzcmMsIGRlc3QpOworCisgIC8qIFNldHRpbmcgYSBzeW5jIHBvaW50IGhlcmUgcmVsaWVzIG9uIEdzdEJ1ZmZlciBjb3B5aW5nCisgICAqIG1ldGFzIGFmdGVyIGRhdGEgKi8KKyAgZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludCAoc3JjLCBzcmMtPmNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorX2RlZmF1bHRfZnJlZV9nbCAoR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSwgR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgaWYgKHN5bmNfbWV0YS0+ZGF0YSkgeworICAgIEdTVF9MT0cgKCJkZWxldGluZyBzeW5jIG9iamVjdCAlcCIsIHN5bmNfbWV0YS0+ZGF0YSk7CisgICAgZ2wtPkRlbGV0ZVN5bmMgKChHTHN5bmMpIHN5bmNfbWV0YS0+ZGF0YSk7CisgICAgc3luY19tZXRhLT5kYXRhID0gTlVMTDsKKyAgfQorfQogCiBHc3RHTFN5bmNNZXRhICoKLWdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0QnVmZmVyICogYnVmZmVyKQorZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhX2Z1bGwgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEJ1ZmZlciAqIGJ1ZmZlciwKKyAgICBncG9pbnRlciBkYXRhKQogewogICBHc3RHTFN5bmNNZXRhICptZXRhOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAoY29udGV4dCksIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKGNvbnRleHQpLCBOVUxMKTsKIAogICBtZXRhID0KICAgICAgIChHc3RHTFN5bmNNZXRhICopIGdzdF9idWZmZXJfYWRkX21ldGEgKChidWZmZXIpLCBHU1RfR0xfU1lOQ19NRVRBX0lORk8sCkBAIC01Myw2MCArMTMxLDgzIEBACiAgICAgcmV0dXJuIE5VTEw7CiAKICAgbWV0YS0+Y29udGV4dCA9IGdzdF9vYmplY3RfcmVmIChjb250ZXh0KTsKLSAgbWV0YS0+Z2xzeW5jID0gTlVMTDsKKyAgbWV0YS0+ZGF0YSA9IGRhdGE7CiAKICAgcmV0dXJuIG1ldGE7CiB9CiAKK0dzdEdMU3luY01ldGEgKgorZ3N0X2J1ZmZlcl9hZGRfZ2xfc3luY19tZXRhIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RCdWZmZXIgKiBidWZmZXIpCit7CisgIEdzdEdMU3luY01ldGEgKnJldCA9IGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxsIChjb250ZXh0LCBidWZmZXIsIE5VTEwpOworICBpZiAoIXJldCkKKyAgICByZXR1cm4gTlVMTDsKKworICByZXQtPnNldF9zeW5jX2dsID0gX2RlZmF1bHRfc2V0X3N5bmNfZ2w7CisgIHJldC0+d2FpdF9nbCA9IF9kZWZhdWx0X3dhaXRfZ2w7CisgIHJldC0+d2FpdF9jcHVfZ2wgPSBfZGVmYXVsdF93YWl0X2NwdV9nbDsKKyAgcmV0LT5jb3B5ID0gX2RlZmF1bHRfY29weTsKKyAgcmV0LT5mcmVlX2dsID0gX2RlZmF1bHRfZnJlZV9nbDsKKworICByZXR1cm4gcmV0OworfQorCiBzdGF0aWMgdm9pZAogX3NldF9zeW5jX3BvaW50IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTFN5bmNNZXRhICogc3luY19tZXRhKQogewotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ19hc3NlcnQgKHN5bmNfbWV0YS0+c2V0X3N5bmNfZ2wgIT0gTlVMTCk7CiAKLSAgaWYgKGdsLT5GZW5jZVN5bmMpIHsKLSAgICBpZiAoc3luY19tZXRhLT5nbHN5bmMpIHsKLSAgICAgIEdTVF9MT0cgKCJkZWxldGluZyBzeW5jIG9iamVjdCAlcCIsIHN5bmNfbWV0YS0+Z2xzeW5jKTsKLSAgICAgIGdsLT5EZWxldGVTeW5jIChzeW5jX21ldGEtPmdsc3luYyk7Ci0gICAgfQotICAgIHN5bmNfbWV0YS0+Z2xzeW5jID0gZ2wtPkZlbmNlU3luYyAoR0xfU1lOQ19HUFVfQ09NTUFORFNfQ09NUExFVEUsIDApOwotICAgIGdsLT5GbHVzaCAoKTsKLSAgICBHU1RfTE9HICgic2V0dGluZyBzeW5jIG9iamVjdCAlcCIsIHN5bmNfbWV0YS0+Z2xzeW5jKTsKLSAgfSBlbHNlIHsKLSAgICBnbC0+RmluaXNoICgpOwotICB9CisgIEdTVF9MT0cgKCJzZXR0aW5nIHN5bmMgcG9pbnQgJXAiLCBzeW5jX21ldGEpOworICBzeW5jX21ldGEtPnNldF9zeW5jX2dsIChzeW5jX21ldGEsIGNvbnRleHQpOwogfQogCiB2b2lkCiBnc3RfZ2xfc3luY19tZXRhX3NldF9zeW5jX3BvaW50IChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLAogICAgIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCiB7Ci0gIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNvbnRleHQsCi0gICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3NldF9zeW5jX3BvaW50LCBzeW5jX21ldGEpOworICBpZiAoc3luY19tZXRhLT5zZXRfc3luYykKKyAgICBzeW5jX21ldGEtPnNldF9zeW5jIChzeW5jX21ldGEsIGNvbnRleHQpOworICBlbHNlCisgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29udGV4dCwKKyAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9zZXRfc3luY19wb2ludCwgc3luY19tZXRhKTsKIH0KIAogc3RhdGljIHZvaWQKIF93YWl0IChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTFN5bmNNZXRhICogc3luY19tZXRhKQogewotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKLSAgR0xlbnVtIHJlczsKKyAgZ19hc3NlcnQgKHN5bmNfbWV0YS0+d2FpdF9nbCAhPSBOVUxMKTsKIAotICBpZiAoZ2wtPkNsaWVudFdhaXRTeW5jKSB7Ci0gICAgZG8gewotICAgICAgR1NUX0xPRyAoIndhaXRpbmcgb24gc3luYyBvYmplY3QgJXAiLCBzeW5jX21ldGEtPmdsc3luYyk7Ci0gICAgICByZXMgPQotICAgICAgICAgIGdsLT5DbGllbnRXYWl0U3luYyAoc3luY19tZXRhLT5nbHN5bmMsIEdMX1NZTkNfRkxVU0hfQ09NTUFORFNfQklULAotICAgICAgICAgIDEwMDAwMDAwMDAgLyogMXMgKi8gKTsKLSAgICB9IHdoaWxlIChyZXMgPT0gR0xfVElNRU9VVF9FWFBJUkVEKTsKLSAgfQorICBHU1RfTE9HICgid2FpdGluZyAlcCIsIHN5bmNfbWV0YSk7CisgIHN5bmNfbWV0YS0+d2FpdF9nbCAoc3luY19tZXRhLCBjb250ZXh0KTsKIH0KIAogdm9pZAogZ3N0X2dsX3N5bmNfbWV0YV93YWl0IChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQogewotICBpZiAoc3luY19tZXRhLT5nbHN5bmMpIHsKKyAgaWYgKHN5bmNfbWV0YS0+d2FpdCkKKyAgICBzeW5jX21ldGEtPndhaXQgKHN5bmNfbWV0YSwgY29udGV4dCk7CisgIGVsc2UKICAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LAogICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3dhaXQsIHN5bmNfbWV0YSk7Ci0gIH0KK30KKworc3RhdGljIHZvaWQKK193YWl0X2NwdSAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSkKK3sKKyAgZ19hc3NlcnQgKHN5bmNfbWV0YS0+d2FpdF9jcHVfZ2wgIT0gTlVMTCk7CisKKyAgR1NUX0xPRyAoIndhaXRpbmcgJXAiLCBzeW5jX21ldGEpOworICBzeW5jX21ldGEtPndhaXRfY3B1X2dsIChzeW5jX21ldGEsIGNvbnRleHQpOworfQorCit2b2lkCitnc3RfZ2xfc3luY19tZXRhX3dhaXRfY3B1IChHc3RHTFN5bmNNZXRhICogc3luY19tZXRhLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBpZiAoc3luY19tZXRhLT53YWl0X2NwdSkKKyAgICBzeW5jX21ldGEtPndhaXRfY3B1IChzeW5jX21ldGEsIGNvbnRleHQpOworICBlbHNlCisgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoY29udGV4dCwKKyAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF93YWl0X2NwdSwgc3luY19tZXRhKTsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC0xMjAsMTkgKzIyMSwyNiBAQAogICBpZiAoR1NUX01FVEFfVFJBTlNGT1JNX0lTX0NPUFkgKHR5cGUpKSB7CiAgICAgR3N0TWV0YVRyYW5zZm9ybUNvcHkgKmNvcHkgPSBkYXRhOwogCisgICAgZ19hc3NlcnQgKHNtZXRhLT5jb3B5ICE9IE5VTEwpOworCiAgICAgaWYgKCFjb3B5LT5yZWdpb24pIHsKICAgICAgIC8qIG9ubHkgY29weSBpZiB0aGUgY29tcGxldGUgZGF0YSBpcyBjb3BpZWQgYXMgd2VsbCAqLwotICAgICAgZG1ldGEgPSBnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGEgKHNtZXRhLT5jb250ZXh0LCBkZXN0KTsKLQorICAgICAgZG1ldGEgPSBnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbCAoc21ldGEtPmNvbnRleHQsIGRlc3QsIE5VTEwpOwogICAgICAgaWYgKCFkbWV0YSkKICAgICAgICAgcmV0dXJuIEZBTFNFOwogCi0gICAgICBHU1RfTE9HICgiY29weSBzeW5jIG9iamVjdCAlcCBmcm9tIG1ldGEgJXAgdG8gJXAiLCBzbWV0YS0+Z2xzeW5jLAotICAgICAgICAgIHNtZXRhLCBkbWV0YSk7CisgICAgICBkbWV0YS0+c2V0X3N5bmMgPSBzbWV0YS0+c2V0X3N5bmM7CisgICAgICBkbWV0YS0+c2V0X3N5bmNfZ2wgPSBzbWV0YS0+c2V0X3N5bmNfZ2w7CisgICAgICBkbWV0YS0+d2FpdCA9IHNtZXRhLT53YWl0OworICAgICAgZG1ldGEtPndhaXRfZ2wgPSBzbWV0YS0+d2FpdF9nbDsKKyAgICAgIGRtZXRhLT53YWl0X2NwdSA9IHNtZXRhLT53YWl0X2NwdTsKKyAgICAgIGRtZXRhLT53YWl0X2NwdV9nbCA9IHNtZXRhLT53YWl0X2NwdV9nbDsKKyAgICAgIGRtZXRhLT5jb3B5ID0gc21ldGEtPmNvcHk7CisgICAgICBkbWV0YS0+ZnJlZSA9IHNtZXRhLT5mcmVlOworICAgICAgZG1ldGEtPmZyZWVfZ2wgPSBzbWV0YS0+ZnJlZV9nbDsKIAotICAgICAgLyogU2V0dGluZyBhIHN5bmMgcG9pbnQgaGVyZSByZWxpZXMgb24gR3N0QnVmZmVyIGNvcHlpbmcKLSAgICAgICAqIG1ldGFzIGFmdGVyIGRhdGEgKi8KLSAgICAgIGdzdF9nbF9zeW5jX21ldGFfc2V0X3N5bmNfcG9pbnQgKGRtZXRhLCBzbWV0YS0+Y29udGV4dCk7CisgICAgICBHU1RfTE9HICgiY29weWluZyBzeW5jIG1ldGEgJXAgaW50byAlcCIsIHNtZXRhLCBkbWV0YSk7CisgICAgICBzbWV0YS0+Y29weSAoc21ldGEsIGJ1ZmZlciwgZG1ldGEsIGRlc3QpOwogICAgIH0KICAgfSBlbHNlIHsKICAgICAvKiByZXR1cm4gRkFMU0UsIGlmIHRyYW5zZm9ybSB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgKi8KQEAgLTE0NSwyMiArMjUzLDIxIEBACiBzdGF0aWMgdm9pZAogX2ZyZWVfZ2xfc3luY19tZXRhIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RHTFN5bmNNZXRhICogc3luY19tZXRhKQogewotICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgZ19hc3NlcnQgKHN5bmNfbWV0YS0+ZnJlZV9nbCAhPSBOVUxMKTsKIAotICBpZiAoc3luY19tZXRhLT5nbHN5bmMpIHsKLSAgICBHU1RfTE9HICgiZGVsZXRpbmcgc3luYyBvYmplY3QgJXAiLCBzeW5jX21ldGEtPmdsc3luYyk7Ci0gICAgZ2wtPkRlbGV0ZVN5bmMgKHN5bmNfbWV0YS0+Z2xzeW5jKTsKLSAgICBzeW5jX21ldGEtPmdsc3luYyA9IE5VTEw7Ci0gIH0KKyAgR1NUX0xPRyAoImZyZWUgc3luYyBtZXRhICVwIiwgc3luY19tZXRhKTsKKyAgc3luY19tZXRhLT5mcmVlX2dsIChzeW5jX21ldGEsIGNvbnRleHQpOwogfQogCiBzdGF0aWMgdm9pZAogX2dzdF9nbF9zeW5jX21ldGFfZnJlZSAoR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSwgR3N0QnVmZmVyICogYnVmZmVyKQogewotICBpZiAoc3luY19tZXRhLT5nbHN5bmMpIHsKKyAgaWYgKHN5bmNfbWV0YS0+ZnJlZSkKKyAgICBzeW5jX21ldGEtPmZyZWUgKHN5bmNfbWV0YSwgc3luY19tZXRhLT5jb250ZXh0KTsKKyAgZWxzZQogICAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKHN5bmNfbWV0YS0+Y29udGV4dCwKICAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9mcmVlX2dsX3N5bmNfbWV0YSwgc3luY19tZXRhKTsKLSAgfQorCiAgIGdzdF9vYmplY3RfdW5yZWYgKHN5bmNfbWV0YS0+Y29udGV4dCk7CiB9CiAKQEAgLTE3Nyw3ICsyODQsMTYgQEAKICAgfQogCiAgIHN5bmNfbWV0YS0+Y29udGV4dCA9IE5VTEw7Ci0gIHN5bmNfbWV0YS0+Z2xzeW5jID0gTlVMTDsKKyAgc3luY19tZXRhLT5kYXRhID0gTlVMTDsKKyAgc3luY19tZXRhLT5zZXRfc3luYyA9IE5VTEw7CisgIHN5bmNfbWV0YS0+c2V0X3N5bmNfZ2wgPSBOVUxMOworICBzeW5jX21ldGEtPndhaXQgPSBOVUxMOworICBzeW5jX21ldGEtPndhaXRfZ2wgPSBOVUxMOworICBzeW5jX21ldGEtPndhaXRfY3B1ID0gTlVMTDsKKyAgc3luY19tZXRhLT53YWl0X2NwdV9nbCA9IE5VTEw7CisgIHN5bmNfbWV0YS0+Y29weSA9IE5VTEw7CisgIHN5bmNfbWV0YS0+ZnJlZSA9IE5VTEw7CisgIHN5bmNfbWV0YS0+ZnJlZV9nbCA9IE5VTEw7CiAKICAgcmV0dXJuIFRSVUU7CiB9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsc3luY21ldGEuaAppbmRleCA5ZDc5NDM1Li5lNWViMTdiIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2xzeW5jbWV0YS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHN5bmNtZXRhLmgKQEAgLTMyLDEyICszMiwyMSBAQAogI2RlZmluZSBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX0dMX1NZTkNfTUVUQSAiR3N0QnVmZmVyUG9vbE9wdGlvbkdMU3luY01ldGEiCiAKIHN0cnVjdCBfR3N0R0xTeW5jTWV0YSB7Ci0gIC8qPCBwcml2YXRlID4qLwogICBHc3RNZXRhIHBhcmVudDsKIAogICBHc3RHTENvbnRleHQgKmNvbnRleHQ7CiAKLSAgR0xzeW5jICAgICAgICBnbHN5bmM7CisgIGdwb2ludGVyICAgICAgZGF0YTsKKworICB2b2lkICgqc2V0X3N5bmMpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCpzZXRfc3luY19nbCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKndhaXQpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCp3YWl0X2dsKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqd2FpdF9jcHUpIChHc3RHTFN5bmNNZXRhICogc3luYywgR3N0R0xDb250ZXh0ICogY29udGV4dCk7CisgIHZvaWQgKCp3YWl0X2NwdV9nbCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKKyAgdm9pZCAoKmNvcHkpIChHc3RHTFN5bmNNZXRhICogc3JjLCBHc3RCdWZmZXIgKiBzYnVmZmVyLCBHc3RHTFN5bmNNZXRhICogZGVzdCwgR3N0QnVmZmVyICogZGJ1ZmZlcik7CisgIHZvaWQgKCpmcmVlKSAoR3N0R0xTeW5jTWV0YSAqIHN5bmMsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpOworICB2b2lkICgqZnJlZV9nbCkgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKIH07CiAKIEdUeXBlIGdzdF9nbF9zeW5jX21ldGFfYXBpX2dldF90eXBlICh2b2lkKTsKQEAgLTQ2LDggKzU1LDExIEBACiAjZGVmaW5lIGdzdF9idWZmZXJfZ2V0X2dsX3N5bmNfbWV0YShiKSAoKEdzdEdMU3luY01ldGEqKWdzdF9idWZmZXJfZ2V0X21ldGEoKGIpLEdTVF9HTF9TWU5DX01FVEFfQVBJX1RZUEUpKQogCiBHc3RHTFN5bmNNZXRhICogICAgIGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YSAgICAgICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RCdWZmZXIgKmJ1ZmZlcik7CitHc3RHTFN5bmNNZXRhICogICAgIGdzdF9idWZmZXJfYWRkX2dsX3N5bmNfbWV0YV9mdWxsICAgIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBHc3RCdWZmZXIgKiBidWZmZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBkYXRhKTsKIHZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3N5bmNfbWV0YV9zZXRfc3luY19wb2ludCAgICAgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKIHZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0ICAgICAgICAgICAgICAgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKK3ZvaWQgICAgICAgICAgICAgICAgZ3N0X2dsX3N5bmNfbWV0YV93YWl0X2NwdSAgICAgICAgICAgKEdzdEdMU3luY01ldGEgKiBzeW5jLCBHc3RHTENvbnRleHQgKiBjb250ZXh0KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYwppbmRleCAwYWRkY2ExLi5lYjI1ZTE1IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYworKysgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuYwpAQCAtMzEsNiArMzEsMTAgQEAKICNpbmNsdWRlICJlZ2wvZ3N0ZWdsaW1hZ2VtZW1vcnkuaCIKICNlbmRpZgogCisjaWYgR1NUX0dMX0hBVkVfRE1BQlVGCisjaW5jbHVkZSA8Z3N0L2FsbG9jYXRvcnMvZ3N0ZG1hYnVmLmg+CisjZW5kaWYKKwogLyoqCiAgKiBTRUNUSU9OOmdzdGdsdXBsb2FkCiAgKiBAc2hvcnRfZGVzY3JpcHRpb246IGFuIG9iamVjdCB0aGF0IHVwbG9hZHMgdG8gR0wgdGV4dHVyZXMKQEAgLTU2LDExICs2MCwyNyBAQAogR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdEdMVXBsb2FkLCBnc3RfZ2xfdXBsb2FkLCBHU1RfVFlQRV9PQkpFQ1QsCiAgICAgREVCVUdfSU5JVCk7CiBzdGF0aWMgdm9pZCBnc3RfZ2xfdXBsb2FkX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKLXN0YXRpYyB2b2lkIGdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXJfdW5sb2NrZWQgKEdzdEdMVXBsb2FkICogdXBsb2FkKTsKIAogI2RlZmluZSBHU1RfR0xfVVBMT0FEX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG9iaiksIFwKICAgICBHU1RfVFlQRV9HTF9VUExPQUQsIEdzdEdMVXBsb2FkUHJpdmF0ZSkpCiAKK3N0YXRpYyBHc3RHTFRleHR1cmVUYXJnZXQKK19jYXBzX2dldF90ZXh0dXJlX3RhcmdldCAoR3N0Q2FwcyAqIGNhcHMsIEdzdEdMVGV4dHVyZVRhcmdldCBkZWZhdWx0X3RhcmdldCkKK3sKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHJldCA9IDA7CisgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworCisgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZF90eXBlZCAocywgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORykpIHsKKyAgICBjb25zdCBnY2hhciAqdGFyZ2V0X3N0ciA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInRleHR1cmUtdGFyZ2V0Iik7CisgICAgcmV0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nICh0YXJnZXRfc3RyKTsKKyAgfQorCisgIGlmICghcmV0KQorICAgIHJldCA9IGRlZmF1bHRfdGFyZ2V0OworCisgIHJldHVybiByZXQ7Cit9CisKIC8qIERlZmluZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgcGxhbmVzIHdlIGNhbiB1cGxvYWQgLSBoYW5kbGUgMiB2aWV3cyBwZXIgYnVmZmVyICovCiAjZGVmaW5lIEdTVF9HTF9VUExPQURfTUFYX1BMQU5FUyAoR1NUX1ZJREVPX01BWF9QTEFORVMgKiAyKQogCkBAIC04NSwyMiArMTA1LDU5IEBACiB9OwogCiBzdGF0aWMgR3N0Q2FwcyAqCi1fc2V0X2NhcHNfZmVhdHVyZXMgKGNvbnN0IEdzdENhcHMgKiBjYXBzLCBjb25zdCBnY2hhciAqIGZlYXR1cmVfbmFtZSkKK19zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjb25zdCBHc3RDYXBzICogY2FwcywKKyAgICBjb25zdCBnY2hhciAqIGZlYXR1cmVfbmFtZSwgR3N0Q2Fwc0ZlYXR1cmVzICogcGFzc3Rocm91Z2gpCiB7Ci0gIEdzdENhcHMgKnRtcCA9IGdzdF9jYXBzX2NvcHkgKGNhcHMpOwotICBndWludCBuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKHRtcCk7Ci0gIGd1aW50IGkgPSAwOworICBndWludCBpLCBqLCBtLCBuOworICBHc3RDYXBzICp0bXA7CiAKKyAgdG1wID0gZ3N0X2NhcHNfY29weSAoY2Fwcyk7CisKKyAgbiA9IGdzdF9jYXBzX2dldF9zaXplIChjYXBzKTsKICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgewotICAgIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7CisgICAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlcywgKm9yaWdfZmVhdHVyZXM7CiAKKyAgICBvcmlnX2ZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChjYXBzLCBpKTsKICAgICBmZWF0dXJlcyA9IGdzdF9jYXBzX2ZlYXR1cmVzX25ldyAoZmVhdHVyZV9uYW1lLCBOVUxMKTsKKworICAgIG0gPSBnc3RfY2Fwc19mZWF0dXJlc19nZXRfc2l6ZSAob3JpZ19mZWF0dXJlcyk7CisgICAgZm9yIChqID0gMDsgaiA8IG07IGorKykgeworICAgICAgY29uc3QgZ2NoYXIgKmZlYXR1cmUgPSBnc3RfY2Fwc19mZWF0dXJlc19nZXRfbnRoIChvcmlnX2ZlYXR1cmVzLCBqKTsKKworICAgICAgLyogaWYgd2UgYWxyZWFkeSBoYXZlIHRoZSBmZWF0dXJlcyAqLworICAgICAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywgZmVhdHVyZSkpCisgICAgICAgIGNvbnRpbnVlOworCisgICAgICBpZiAoZ19zdHJjbXAwIChmZWF0dXJlLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9TWVNURU1fTUVNT1JZKSA9PSAwKQorICAgICAgICBjb250aW51ZTsKKworICAgICAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChwYXNzdGhyb3VnaCwgZmVhdHVyZSkpIHsKKyAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfYWRkIChmZWF0dXJlcywgZmVhdHVyZSk7CisgICAgICB9CisgICAgfQorCiAgICAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzICh0bXAsIGksIGZlYXR1cmVzKTsKICAgfQogCiAgIHJldHVybiB0bXA7CiB9CiAKK3N0YXRpYyBHc3RDYXBzICoKK19jYXBzX2ludGVyc2VjdF90ZXh0dXJlX3RhcmdldCAoR3N0Q2FwcyAqIGNhcHMsIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXRfbWFzaykKK3sKKyAgR1ZhbHVlIHRhcmdldHMgPSBHX1ZBTFVFX0lOSVQ7CisgIEdzdENhcHMgKnJldCwgKnRhcmdldDsKKworICB0YXJnZXQgPSBnc3RfY2Fwc19jb3B5IChjYXBzKTsKKyAgZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2sgKCZ0YXJnZXRzLCB0YXJnZXRfbWFzayk7CisgIGdzdF9jYXBzX3NldF92YWx1ZSAodGFyZ2V0LCAidGV4dHVyZS10YXJnZXQiLCAmdGFyZ2V0cyk7CisKKyAgcmV0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGNhcHMsIHRhcmdldCwgR1NUX0NBUFNfSU5URVJTRUNUX0ZJUlNUKTsKKworICBnc3RfY2Fwc191bnJlZiAodGFyZ2V0KTsKKyAgcmV0dXJuIHJldDsKK30KKwogdHlwZWRlZiBlbnVtCiB7CiAgIE1FVEhPRF9GTEFHX0NBTl9TSEFSRV9DT05URVhUID0gMSwKQEAgLTEyMiw3ICsxNzksNiBAQAogICAgICAgR3N0UXVlcnkgKiBxdWVyeSk7CiAgICAgR3N0R0xVcGxvYWRSZXR1cm4gKCpwZXJmb3JtKSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyLAogICAgICAgR3N0QnVmZmVyICoqIG91dGJ1Zik7Ci0gIHZvaWQgKCpyZWxlYXNlKSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyKTsKICAgdm9pZCAoKmZyZWUpIChncG9pbnRlciBpbXBsKTsKIH0gX1VwbG9hZE1ldGhvZDsKIApAQCAtMTQ1LDcgKzIwMSwzOSBAQAogX2dsX21lbW9yeV91cGxvYWRfdHJhbnNmb3JtX2NhcHMgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCiAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMpCiB7Ci0gIHJldHVybiBfc2V0X2NhcHNfZmVhdHVyZXMgKGNhcHMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7CisgIEdzdENhcHNGZWF0dXJlcyAqcGFzc3Rocm91Z2ggPQorICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJvbV9zdHJpbmcKKyAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04pOworICBHc3RDYXBzICpyZXQ7CisKKyAgcmV0ID0KKyAgICAgIF9zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjYXBzLAorICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBwYXNzdGhyb3VnaCk7CisKKyAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJlZSAocGFzc3Rocm91Z2gpOworCisgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7CisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldF9tYXNrID0gMDsKKyAgICBHc3RDYXBzICp0bXA7CisKKyAgICB0YXJnZXRfbWFzayB8PSAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKyAgICB0YXJnZXRfbWFzayB8PSAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEU7CisgICAgdGFyZ2V0X21hc2sgfD0gMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTOworICAgIHRtcCA9IF9jYXBzX2ludGVyc2VjdF90ZXh0dXJlX3RhcmdldCAocmV0LCB0YXJnZXRfbWFzayk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHJldCk7CisgICAgcmV0ID0gdG1wOworICB9IGVsc2UgeworICAgIGdpbnQgaSwgbjsKKworICAgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAocmV0KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChyZXQsIGkpOworCisgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHMsICJ0ZXh0dXJlLXRhcmdldCIsIE5VTEwpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMTk0LDE2ICsyODIsMjYgQEAKICAgICBHc3RRdWVyeSAqIHF1ZXJ5KQogewogICBzdHJ1Y3QgR0xNZW1vcnlVcGxvYWQgKnVwbG9hZCA9IGltcGw7Ci0gIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zOwotICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKICAgR3N0QnVmZmVyUG9vbCAqcG9vbCA9IE5VTEw7CiAgIGd1aW50IG5fcG9vbHMsIGk7CisgIEdzdENhcHMgKmNhcHM7CisgIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7CiAKLSAgZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKCZwYXJhbXMpOworICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbiAocXVlcnksICZjYXBzLCBOVUxMKTsKKyAgZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGNhcHMsIDApOwogCi0gIGFsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZCAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IpOwotICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcGFyYW0gKHF1ZXJ5LCBhbGxvY2F0b3IsICZwYXJhbXMpOwotICBnc3Rfb2JqZWN0X3VucmVmIChhbGxvY2F0b3IpOworICAvKiBPbmx5IG9mZmVyIG91ciBjdXN0b20gYWxsb2NhdG9yIGlmIHRoYXQgdHlwZSBvZiBtZW1vcnkgd2FzIG5lZ290aWF0ZWQuICovCisgIGlmIChnc3RfY2Fwc19mZWF0dXJlc19jb250YWlucyAoZmVhdHVyZXMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSkpIHsKKyAgICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKKyAgICBHc3RBbGxvY2F0aW9uUGFyYW1zIHBhcmFtczsKKyAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnBhcmFtcyk7CisKKyAgICBhbGxvY2F0b3IgPQorICAgICAgICBHU1RfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdCAodXBsb2FkLT51cGxvYWQtPgorICAgICAgICAgICAgY29udGV4dCkpOworICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wYXJhbSAocXVlcnksIGFsbG9jYXRvciwgJnBhcmFtcyk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKKyAgfQogCiAgIG5fcG9vbHMgPSBnc3RfcXVlcnlfZ2V0X25fYWxsb2NhdGlvbl9wb29scyAocXVlcnkpOwogICBmb3IgKGkgPSAwOyBpIDwgbl9wb29sczsgaSsrKSB7CkBAIC0yMTcsMTAgKzMxNSw4IEBACiAgIGlmICghcG9vbCkgewogICAgIEdzdFN0cnVjdHVyZSAqY29uZmlnOwogICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotICAgIEdzdENhcHMgKmNhcHM7CiAgICAgZ3NpemUgc2l6ZTsKIAotICAgIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uIChxdWVyeSwgJmNhcHMsIE5VTEwpOwogCiAgICAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZpbmZvLCBjYXBzKSkKICAgICAgIGdvdG8gaW52YWxpZF9jYXBzOwpAQCAtMjMzLDYgKzMyOSwxNyBAQAogICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyAoY29uZmlnLCBjYXBzLCBzaXplLCAwLCAwKTsKICAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2FkZF9vcHRpb24gKGNvbmZpZywKICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9TWU5DX01FVEEpOworICAgIGlmICh1cGxvYWQtPnVwbG9hZC0+cHJpdi0+b3V0X2NhcHMpIHsKKyAgICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQ7CisgICAgICBjb25zdCBnY2hhciAqdGFyZ2V0X3Bvb2xfb3B0aW9uX3N0cjsKKworICAgICAgdGFyZ2V0ID0KKyAgICAgICAgICBfY2Fwc19nZXRfdGV4dHVyZV90YXJnZXQgKHVwbG9hZC0+dXBsb2FkLT5wcml2LT5vdXRfY2FwcywKKyAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpOworICAgICAgdGFyZ2V0X3Bvb2xfb3B0aW9uX3N0ciA9CisgICAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2J1ZmZlcl9wb29sX29wdGlvbiAodGFyZ2V0KTsKKyAgICAgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfYWRkX29wdGlvbiAoY29uZmlnLCB0YXJnZXRfcG9vbF9vcHRpb25fc3RyKTsKKyAgICB9CiAKICAgICBpZiAoIWdzdF9idWZmZXJfcG9vbF9zZXRfY29uZmlnIChwb29sLCBjb25maWcpKSB7CiAgICAgICBnc3Rfb2JqZWN0X3VucmVmIChwb29sKTsKQEAgLTI3Niw3ICszODMsOCBAQAogICAgICAgICAgICAgZ2xfbWVtLT5tZW0uY29udGV4dCkpCiAgICAgICByZXR1cm4gR1NUX0dMX1VQTE9BRF9VTlNIQVJFRF9HTF9DT05URVhUOwogCi0gICAgZ3N0X2dsX21lbW9yeV91cGxvYWRfdHJhbnNmZXIgKGdsX21lbSk7CisgICAgaWYgKGdzdF9pc19nbF9tZW1vcnlfcGJvIChtZW0pKQorICAgICAgZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyICgoR3N0R0xNZW1vcnlQQk8gKikgbWVtKTsKICAgfQogCiAgICpvdXRidWYgPSBnc3RfYnVmZmVyX3JlZiAoYnVmZmVyKTsKQEAgLTI4NSwxMSArMzkzLDYgQEAKIH0KIAogc3RhdGljIHZvaWQKLV9nbF9tZW1vcnlfdXBsb2FkX3JlbGVhc2UgKGdwb2ludGVyIGltcGwsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLX0KLQotc3RhdGljIHZvaWQKIF9nbF9tZW1vcnlfdXBsb2FkX2ZyZWUgKGdwb2ludGVyIGltcGwpCiB7CiAgIGdfZnJlZSAoaW1wbCk7CkBAIC0zMDksNyArNDEyLDYgQEAKICAgJl9nbF9tZW1vcnlfdXBsb2FkX2FjY2VwdCwKICAgJl9nbF9tZW1vcnlfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbiwKICAgJl9nbF9tZW1vcnlfdXBsb2FkX3BlcmZvcm0sCi0gICZfZ2xfbWVtb3J5X3VwbG9hZF9yZWxlYXNlLAogICAmX2dsX21lbW9yeV91cGxvYWRfZnJlZQogfTsKIApAQCAtMzE5LDYgKzQyMSw3IEBACiAgIEdzdEdMVXBsb2FkICp1cGxvYWQ7CiAgIEdzdEJ1ZmZlciAqYnVmZmVyOwogICBHc3RCdWZmZXIgKipvdXRidWY7CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CiB9OwogCiBzdGF0aWMgZ3BvaW50ZXIKQEAgLTMzNSwxNSArNDM4LDM5IEBACiBfZWdsX2ltYWdlX3VwbG9hZF90cmFuc2Zvcm1fY2FwcyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcykKIHsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpwYXNzdGhyb3VnaCA9CisgICAgICBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZworICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTik7CiAgIEdzdENhcHMgKnJldDsKIAogICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU0lOSykgewotICAgIHJldCA9IF9zZXRfY2Fwc19mZWF0dXJlcyAoY2FwcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKKyAgICBHc3RDYXBzICp0bXA7CisKKyAgICByZXQgPQorICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXNfd2l0aF9wYXNzdGhyb3VnaCAoY2FwcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBwYXNzdGhyb3VnaCk7CisKKyAgICB0bXAgPSBfY2Fwc19pbnRlcnNlY3RfdGV4dHVyZV90YXJnZXQgKHJldCwgMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpOworICAgIGdzdF9jYXBzX3VucmVmIChyZXQpOworICAgIHJldCA9IHRtcDsKICAgfSBlbHNlIHsKLSAgICByZXQgPSBfc2V0X2NhcHNfZmVhdHVyZXMgKGNhcHMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0VHTF9JTUFHRSk7CisgICAgZ2ludCBpLCBuOworCisgICAgcmV0ID0KKyAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0VHTF9JTUFHRSwgcGFzc3Rocm91Z2gpOwogICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKHJldCwgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJSR0JBIiwgTlVMTCk7CisKKyAgICBuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKHJldCk7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocmV0LCBpKTsKKworICAgICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGRzIChzLCAidGV4dHVyZS10YXJnZXQiLCBOVUxMKTsKKyAgICB9CiAgIH0KIAorICBnc3RfY2Fwc19mZWF0dXJlc19mcmVlIChwYXNzdGhyb3VnaCk7CisKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMzY3LDYgKzQ5NCwxNCBAQAogICBpZiAoIXJldCkKICAgICByZXR1cm4gRkFMU0U7CiAKKyAgaWYgKGltYWdlLT5wYXJhbXMpCisgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgaW1hZ2UtPnBhcmFtcyk7CisgIGlmICghKGltYWdlLT5wYXJhbXMgPQorICAgICAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKGltYWdlLT51cGxvYWQtPmNvbnRleHQsIE5VTEwsCisgICAgICAgICAgICAgICZpbWFnZS0+dXBsb2FkLT5wcml2LT5pbl9pbmZvLCAtMSwgTlVMTCwKKyAgICAgICAgICAgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKSkpCisgICAgcmV0dXJuIEZBTFNFOworCiAgIGlmIChidWZmZXIpIHsKICAgICBHc3RWaWRlb0luZm8gKmluX2luZm8gPSAmaW1hZ2UtPnVwbG9hZC0+cHJpdi0+aW5faW5mbzsKICAgICBndWludCBleHBlY3RlZF9tZW1vcmllcyA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbl9pbmZvKTsKQEAgLTM5NSwxMyArNTMwLDIyIEBACiAgICAgR3N0UXVlcnkgKiBxdWVyeSkKIHsKICAgc3RydWN0IEVHTEltYWdlVXBsb2FkICppbWFnZSA9IGltcGw7Ci0gIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zOwotICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlczsKIAotICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnBhcmFtcyk7CisgIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uIChxdWVyeSwgJmNhcHMsIE5VTEwpOworICBmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCk7CiAKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2ZlYXR1cmUgKGltYWdlLT51cGxvYWQtPmNvbnRleHQsCisgIC8qIE9ubHkgb2ZmZXIgb3VyIGN1c3RvbSBhbGxvY2F0b3IgaWYgdGhhdCB0eXBlIG9mIG1lbW9yeSB3YXMgbmVnb3RpYXRlZC4gKi8KKyAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywKKyAgICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9FR0xfSU1BR0UpICYmCisgICAgICBnc3RfZ2xfY29udGV4dF9jaGVja19mZWF0dXJlIChpbWFnZS0+dXBsb2FkLT5jb250ZXh0LAogICAgICAgICAgICJFR0xfS0hSX2ltYWdlX2Jhc2UiKSkgeworICAgIEdzdEFsbG9jYXRpb25QYXJhbXMgcGFyYW1zOworICAgIEdzdEFsbG9jYXRvciAqYWxsb2NhdG9yOworCisgICAgZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKCZwYXJhbXMpOworCiAgICAgYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfRUdMX0lNQUdFX01FTU9SWV9UWVBFKTsKICAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcGFyYW0gKHF1ZXJ5LCBhbGxvY2F0b3IsICZwYXJhbXMpOwogICAgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CkBAIC00MTIsMTIgKzU1NiwxNyBAQAogX2VnbF9pbWFnZV91cGxvYWRfcGVyZm9ybV9nbF90aHJlYWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCiAgICAgc3RydWN0IEVHTEltYWdlVXBsb2FkICppbWFnZSkKIHsKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3IgKmFsbG9jYXRvcjsKICAgZ3VpbnQgaSwgbjsKIAorICBhbGxvY2F0b3IgPQorICAgICAgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9hbGxvY2F0b3JfZmluZAorICAgICAgKEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FKSk7CisKICAgLyogRklYTUU6IGJ1ZmZlciBwb29sICovCiAgICppbWFnZS0+b3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyIChpbWFnZS0+dXBsb2FkLT5jb250ZXh0LAotICAgICAgTlVMTCwgJmltYWdlLT51cGxvYWQtPnByaXYtPm91dF9pbmZvLCBOVUxMLCAqaW1hZ2UtPm91dGJ1Zik7CisgIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyIChhbGxvY2F0b3IsICppbWFnZS0+b3V0YnVmLCBpbWFnZS0+cGFyYW1zKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKIAogICBuID0gZ3N0X2J1ZmZlcl9uX21lbW9yeSAoaW1hZ2UtPmJ1ZmZlcik7CiAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKQEAgLTQzNSw4ICs1ODQsOCBAQAogICB9CiAKICAgaWYgKEdTVF9JU19HTF9CVUZGRVJfUE9PTCAoaW1hZ2UtPmJ1ZmZlci0+cG9vbCkpCi0gICAgZ3N0X2dsX2J1ZmZlcl9wb29sX3JlcGxhY2VfbGFzdF9idWZmZXIgKEdTVF9HTF9CVUZGRVJfUE9PTCAoaW1hZ2UtPgotICAgICAgICAgICAgYnVmZmVyLT5wb29sKSwgaW1hZ2UtPmJ1ZmZlcik7CisgICAgZ3N0X2dsX2J1ZmZlcl9wb29sX3JlcGxhY2VfbGFzdF9idWZmZXIgKEdTVF9HTF9CVUZGRVJfUE9PTCAoaW1hZ2UtPmJ1ZmZlci0+CisgICAgICAgICAgICBwb29sKSwgaW1hZ2UtPmJ1ZmZlcik7CiB9CiAKIHN0YXRpYyBHc3RHTFVwbG9hZFJldHVybgpAQCAtNDU4LDEzICs2MDcsMTMgQEAKIH0KIAogc3RhdGljIHZvaWQKLV9lZ2xfaW1hZ2VfdXBsb2FkX3JlbGVhc2UgKGdwb2ludGVyIGltcGwsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLX0KLQotc3RhdGljIHZvaWQKIF9lZ2xfaW1hZ2VfdXBsb2FkX2ZyZWUgKGdwb2ludGVyIGltcGwpCiB7CisgIHN0cnVjdCBFR0xJbWFnZVVwbG9hZCAqaW1hZ2UgPSBpbXBsOworCisgIGlmIChpbWFnZS0+cGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIGltYWdlLT5wYXJhbXMpOworCiAgIGdfZnJlZSAoaW1wbCk7CiB9CiAKQEAgLTQ4MSwxMCArNjMwLDI4MiBAQAogICAmX2VnbF9pbWFnZV91cGxvYWRfYWNjZXB0LAogICAmX2VnbF9pbWFnZV91cGxvYWRfcHJvcG9zZV9hbGxvY2F0aW9uLAogICAmX2VnbF9pbWFnZV91cGxvYWRfcGVyZm9ybSwKLSAgJl9lZ2xfaW1hZ2VfdXBsb2FkX3JlbGVhc2UsCiAgICZfZWdsX2ltYWdlX3VwbG9hZF9mcmVlCiB9OwotI2VuZGlmCisjZW5kaWYgLyogR1NUX0dMX0hBVkVfUExBVEZPUk1fRUdMICovCisKKyNpZiBHU1RfR0xfSEFWRV9ETUFCVUYKK3N0cnVjdCBEbWFidWZVcGxvYWQKK3sKKyAgR3N0R0xVcGxvYWQgKnVwbG9hZDsKKworICBHc3RNZW1vcnkgKmVnbGltYWdlW0dTVF9WSURFT19NQVhfUExBTkVTXTsKKyAgR3N0QnVmZmVyICpvdXRidWY7CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7Cit9OworCitzdGF0aWMgR3N0U3RhdGljQ2FwcyBfZG1hX2J1Zl91cGxvYWRfY2FwcyA9CitHU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0UgKEdTVF9HTF9NRU1PUllfVklERU9fRk9STUFUU19TVFIpKTsKKworc3RhdGljIGdwb2ludGVyCitfZG1hX2J1Zl91cGxvYWRfbmV3IChHc3RHTFVwbG9hZCAqIHVwbG9hZCkKK3sKKyAgc3RydWN0IERtYWJ1ZlVwbG9hZCAqZG1hYnVmID0gZ19uZXcwIChzdHJ1Y3QgRG1hYnVmVXBsb2FkLCAxKTsKKyAgZG1hYnVmLT51cGxvYWQgPSB1cGxvYWQ7CisgIHJldHVybiBkbWFidWY7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK19kbWFfYnVmX3VwbG9hZF90cmFuc2Zvcm1fY2FwcyAoR3N0R0xDb250ZXh0ICogY29udGV4dCwKKyAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpwYXNzdGhyb3VnaCA9CisgICAgICBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZworICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVUQV9HU1RfVklERU9fT1ZFUkxBWV9DT01QT1NJVElPTik7CisgIEdzdENhcHMgKnJldDsKKworICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU0lOSykgeworICAgIEdzdENhcHMgKnRtcDsKKworICAgIHJldCA9CisgICAgICAgIF9zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjYXBzLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIHBhc3N0aHJvdWdoKTsKKworICAgIHRtcCA9IF9jYXBzX2ludGVyc2VjdF90ZXh0dXJlX3RhcmdldCAocmV0LCAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHJldCk7CisgICAgcmV0ID0gdG1wOworICB9IGVsc2UgeworICAgIGdpbnQgaSwgbjsKKworICAgIHJldCA9CisgICAgICAgIF9zZXRfY2Fwc19mZWF0dXJlc193aXRoX3Bhc3N0aHJvdWdoIChjYXBzLAorICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9TWVNURU1fTUVNT1JZLCBwYXNzdGhyb3VnaCk7CisKKyAgICBuID0gZ3N0X2NhcHNfZ2V0X3NpemUgKHJldCk7CisgICAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAocmV0LCBpKTsKKworICAgICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGRzIChzLCAidGV4dHVyZS10YXJnZXQiLCBOVUxMKTsKKyAgICB9CisgIH0KKworICBnc3RfY2Fwc19mZWF0dXJlc19mcmVlIChwYXNzdGhyb3VnaCk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIEdRdWFyaworX2VnbGltYWdlX3F1YXJrIChnaW50IHBsYW5lKQoreworICBzdGF0aWMgR1F1YXJrIHF1YXJrWzRdID0geyAwIH07CisgIHN0YXRpYyBjb25zdCBnY2hhciAqcXVhcmtfc3RyW10gPSB7CisgICAgIkdzdEdMRE1BQnVmRUdMSW1hZ2UwIiwKKyAgICAiR3N0R0xETUFCdWZFR0xJbWFnZTEiLAorICAgICJHc3RHTERNQUJ1ZkVHTEltYWdlMiIsCisgICAgIkdzdEdMRE1BQnVmRUdMSW1hZ2UzIiwKKyAgfTsKKworICBpZiAoIXF1YXJrW3BsYW5lXSkKKyAgICBxdWFya1twbGFuZV0gPSBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAocXVhcmtfc3RyW3BsYW5lXSk7CisKKyAgcmV0dXJuIHF1YXJrW3BsYW5lXTsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitfZ2V0X2NhY2hlZF9lZ2xpbWFnZSAoR3N0TWVtb3J5ICogbWVtLCBnaW50IHBsYW5lKQoreworICByZXR1cm4gZ3N0X21pbmlfb2JqZWN0X2dldF9xZGF0YSAoR1NUX01JTklfT0JKRUNUIChtZW0pLAorICAgICAgX2VnbGltYWdlX3F1YXJrIChwbGFuZSkpOworfQorCitzdGF0aWMgdm9pZAorX3NldF9jYWNoZWRfZWdsaW1hZ2UgKEdzdE1lbW9yeSAqIG1lbSwgR3N0TWVtb3J5ICogZWdsaW1hZ2UsIGdpbnQgcGxhbmUpCit7CisgIHJldHVybiBnc3RfbWluaV9vYmplY3Rfc2V0X3FkYXRhIChHU1RfTUlOSV9PQkpFQ1QgKG1lbSksCisgICAgICBfZWdsaW1hZ2VfcXVhcmsgKHBsYW5lKSwgZWdsaW1hZ2UsIChHRGVzdHJveU5vdGlmeSkgZ3N0X21lbW9yeV91bnJlZik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2RtYV9idWZfdXBsb2FkX2FjY2VwdCAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyLCBHc3RDYXBzICogaW5fY2FwcywKKyAgICBHc3RDYXBzICogb3V0X2NhcHMpCit7CisgIHN0cnVjdCBEbWFidWZVcGxvYWQgKmRtYWJ1ZiA9IGltcGw7CisgIEdzdFZpZGVvSW5mbyAqaW5faW5mbyA9ICZkbWFidWYtPnVwbG9hZC0+cHJpdi0+aW5faW5mbzsKKyAgZ3VpbnQgbl9wbGFuZXMgPSBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5faW5mbyk7CisgIEdzdFZpZGVvTWV0YSAqbWV0YTsKKyAgZ3VpbnQgbl9tZW07CisgIGd1aW50IG1lbXNfaWR4W0dTVF9WSURFT19NQVhfUExBTkVTXTsKKyAgZ3NpemUgbWVtc19za2lwW0dTVF9WSURFT19NQVhfUExBTkVTXTsKKyAgR3N0TWVtb3J5ICptZW1zW0dTVF9WSURFT19NQVhfUExBTkVTXTsKKyAgZ3VpbnQgaTsKKworICBuX21lbSA9IGdzdF9idWZmZXJfbl9tZW1vcnkgKGJ1ZmZlcik7CisgIG1ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19tZXRhIChidWZmZXIpOworCisgIC8qIGRtYWJ1ZiB1cGxvYWQgaXMgb25seSBzdXBwb3J0ZWQgd2l0aCBFR0wgY29udGV4dHMuICovCisgIGlmICghR1NUX0lTX0dMX0NPTlRFWFRfRUdMIChkbWFidWYtPnVwbG9hZC0+Y29udGV4dCkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGlmICghZ3N0X2dsX2NvbnRleHRfY2hlY2tfZmVhdHVyZSAoZG1hYnVmLT51cGxvYWQtPmNvbnRleHQsCisgICAgICAgICAgIkVHTF9LSFJfaW1hZ2VfYmFzZSIpKQorICAgIHJldHVybiBGQUxTRTsKKworICAvKiBUaGlzIHdpbGwgZWxpbWluYXRlIG1vc3Qgbm9uLWRtYWJ1ZiBvdXQgdGhlcmUgKi8KKyAgaWYgKCFnc3RfaXNfZG1hYnVmX21lbW9yeSAoZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAoYnVmZmVyLCAwKSkpCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIFdlIGNhbm5vdCBoYXZlIG11bHRpcGxlIGRtYWJ1ZiBwZXIgcGxhbmUgKi8KKyAgaWYgKG5fbWVtID4gbl9wbGFuZXMpCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIFVwZGF0ZSB2aWRlbyBpbmZvIGJhc2VkIG9uIHZpZGVvIG1ldGEgKi8KKyAgaWYgKG1ldGEpIHsKKyAgICBpbl9pbmZvLT53aWR0aCA9IG1ldGEtPndpZHRoOworICAgIGluX2luZm8tPmhlaWdodCA9IG1ldGEtPmhlaWdodDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBtZXRhLT5uX3BsYW5lczsgaSsrKSB7CisgICAgICBpbl9pbmZvLT5vZmZzZXRbaV0gPSBtZXRhLT5vZmZzZXRbaV07CisgICAgICBpbl9pbmZvLT5zdHJpZGVbaV0gPSBtZXRhLT5zdHJpZGVbaV07CisgICAgfQorICB9CisKKyAgaWYgKGRtYWJ1Zi0+cGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIGRtYWJ1Zi0+cGFyYW1zKTsKKyAgaWYgKCEoZG1hYnVmLT5wYXJhbXMgPQorICAgICAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKGRtYWJ1Zi0+dXBsb2FkLT5jb250ZXh0LCBOVUxMLAorICAgICAgICAgICAgICAmZG1hYnVmLT51cGxvYWQtPnByaXYtPmluX2luZm8sIC0xLCBOVUxMLAorICAgICAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogRmluZCBhbmQgdmFsaWRhdGUgYWxsIG1lbW9yaWVzICovCisgIGZvciAoaSA9IDA7IGkgPCBuX3BsYW5lczsgaSsrKSB7CisgICAgZ3VpbnQgcGxhbmVfc2l6ZTsKKyAgICBndWludCBsZW5ndGg7CisKKyAgICBwbGFuZV9zaXplID0gZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemUgKGluX2luZm8sIE5VTEwsIGkpOworCisgICAgaWYgKCFnc3RfYnVmZmVyX2ZpbmRfbWVtb3J5IChidWZmZXIsIGluX2luZm8tPm9mZnNldFtpXSwgcGxhbmVfc2l6ZSwKKyAgICAgICAgICAgICZtZW1zX2lkeFtpXSwgJmxlbmd0aCwgJm1lbXNfc2tpcFtpXSkpCisgICAgICByZXR1cm4gRkFMU0U7CisKKyAgICAvKiBXZSBjYW4ndCBoYXZlIG1vcmUgdGhlbiBvbmUgZG1hYnVmIHBlciBwbGFuZSAqLworICAgIGlmIChsZW5ndGggIT0gMSkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIG1lbXNbaV0gPSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5IChidWZmZXIsIG1lbXNfaWR4W2ldKTsKKworICAgIC8qIEFuZCBhbGwgbWVtb3J5IGZvdW5kIG11c3QgYmUgZG1hYnVmICovCisgICAgaWYgKCFnc3RfaXNfZG1hYnVmX21lbW9yeSAobWVtc1tpXSkpCisgICAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICAvKiBOb3cgY3JlYXRlIGFuIEVHTEltYWdlIGZvciBlYWNoIGRtYWJ1ZnMgKi8KKyAgZm9yIChpID0gMDsgaSA8IG5fcGxhbmVzOyBpKyspIHsKKyAgICAvKiBjaGVjayBpZiBvbmUgaXMgY2FjaGVkICovCisgICAgZG1hYnVmLT5lZ2xpbWFnZVtpXSA9IF9nZXRfY2FjaGVkX2VnbGltYWdlIChtZW1zW2ldLCBpKTsKKyAgICBpZiAoZG1hYnVmLT5lZ2xpbWFnZVtpXSkKKyAgICAgIGNvbnRpbnVlOworCisgICAgLyogb3RoZXJ3aXNlIGNyZWF0ZSBvbmUgYW5kIGNhY2hlIGl0ICovCisgICAgZG1hYnVmLT5lZ2xpbWFnZVtpXSA9CisgICAgICAgIGdzdF9lZ2xfaW1hZ2VfbWVtb3J5X2Zyb21fZG1hYnVmIChkbWFidWYtPnVwbG9hZC0+Y29udGV4dCwKKyAgICAgICAgZ3N0X2RtYWJ1Zl9tZW1vcnlfZ2V0X2ZkIChtZW1zW2ldKSwgaW5faW5mbywgaSwgbWVtc19za2lwW2ldKTsKKworICAgIGlmICghZG1hYnVmLT5lZ2xpbWFnZVtpXSkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIF9zZXRfY2FjaGVkX2VnbGltYWdlIChtZW1zW2ldLCBkbWFidWYtPmVnbGltYWdlW2ldLCBpKTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorX2RtYV9idWZfdXBsb2FkX3Byb3Bvc2VfYWxsb2NhdGlvbiAoZ3BvaW50ZXIgaW1wbCwgR3N0UXVlcnkgKiBkZWNpZGVfcXVlcnksCisgICAgR3N0UXVlcnkgKiBxdWVyeSkKK3sKKyAgLyogbm90aGluZyB0byBkbyBmb3Igbm93LiAqLworfQorCitzdGF0aWMgdm9pZAorX2RtYV9idWZfdXBsb2FkX3BlcmZvcm1fZ2xfdGhyZWFkIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIHN0cnVjdCBEbWFidWZVcGxvYWQgKmRtYWJ1ZikKK3sKKyAgR3N0R0xNZW1vcnlBbGxvY2F0b3IgKmFsbG9jYXRvcjsKKyAgZ3VpbnQgaSwgbjsKKworICBhbGxvY2F0b3IgPQorICAgICAgR1NUX0dMX01FTU9SWV9BTExPQ0FUT1IgKGdzdF9hbGxvY2F0b3JfZmluZAorICAgICAgKEdTVF9HTF9NRU1PUllfUEJPX0FMTE9DQVRPUl9OQU1FKSk7CisKKyAgLyogRklYTUU6IGJ1ZmZlciBwb29sICovCisgIGRtYWJ1Zi0+b3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7CisgIGdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyIChhbGxvY2F0b3IsIGRtYWJ1Zi0+b3V0YnVmLCBkbWFidWYtPnBhcmFtcyk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CisKKyAgbiA9IGdzdF9idWZmZXJfbl9tZW1vcnkgKGRtYWJ1Zi0+b3V0YnVmKTsKKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gTlVMTDsKKyAgICBHc3RHTE1lbW9yeSAqZ2xfbWVtID0KKyAgICAgICAgKEdzdEdMTWVtb3J5ICopIGdzdF9idWZmZXJfcGVla19tZW1vcnkgKGRtYWJ1Zi0+b3V0YnVmLCBpKTsKKworICAgIGlmICghZG1hYnVmLT5lZ2xpbWFnZVtpXSkgeworICAgICAgZ19jbGVhcl9wb2ludGVyICgmZG1hYnVmLT5vdXRidWYsIGdzdF9idWZmZXJfdW5yZWYpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGdsID0gR1NUX0dMX0NPTlRFWFQgKCgoR3N0RUdMSW1hZ2VNZW1vcnkgKikgZ2xfbWVtKS0+Y29udGV4dCktPmdsX3Z0YWJsZTsKKworICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCArIGkpOworICAgIGdsLT5CaW5kVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCwgZ2xfbWVtLT50ZXhfaWQpOworICAgIGdsLT5FR0xJbWFnZVRhcmdldFRleHR1cmUyRCAoR0xfVEVYVFVSRV8yRCwKKyAgICAgICAgZ3N0X2VnbF9pbWFnZV9tZW1vcnlfZ2V0X2ltYWdlIChkbWFidWYtPmVnbGltYWdlW2ldKSk7CisgIH0KK30KKworc3RhdGljIEdzdEdMVXBsb2FkUmV0dXJuCitfZG1hX2J1Zl91cGxvYWRfcGVyZm9ybSAoZ3BvaW50ZXIgaW1wbCwgR3N0QnVmZmVyICogYnVmZmVyLCBHc3RCdWZmZXIgKiogb3V0YnVmKQoreworICBzdHJ1Y3QgRG1hYnVmVXBsb2FkICpkbWFidWYgPSBpbXBsOworCisgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGRtYWJ1Zi0+dXBsb2FkLT5jb250ZXh0LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kbWFfYnVmX3VwbG9hZF9wZXJmb3JtX2dsX3RocmVhZCwgZG1hYnVmKTsKKworICBpZiAoIWRtYWJ1Zi0+b3V0YnVmKQorICAgIHJldHVybiBHU1RfR0xfVVBMT0FEX0VSUk9SOworCisgIGdzdF9idWZmZXJfYWRkX3BhcmVudF9idWZmZXJfbWV0YSAoZG1hYnVmLT5vdXRidWYsIGJ1ZmZlcik7CisKKyAgKm91dGJ1ZiA9IGRtYWJ1Zi0+b3V0YnVmOworICBkbWFidWYtPm91dGJ1ZiA9IE5VTEw7CisKKyAgcmV0dXJuIEdTVF9HTF9VUExPQURfRE9ORTsKK30KKworc3RhdGljIHZvaWQKK19kbWFfYnVmX3VwbG9hZF9mcmVlIChncG9pbnRlciBpbXBsKQoreworICBzdHJ1Y3QgRG1hYnVmVXBsb2FkICpkbWFidWYgPSBpbXBsOworCisgIGlmIChkbWFidWYtPnBhcmFtcykKKyAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBkbWFidWYtPnBhcmFtcyk7CisKKyAgZ19mcmVlIChpbXBsKTsKK30KKworc3RhdGljIGNvbnN0IFVwbG9hZE1ldGhvZCBfZG1hX2J1Zl91cGxvYWQgPSB7CisgICJEbWFidWYiLAorICAwLAorICAmX2RtYV9idWZfdXBsb2FkX2NhcHMsCisgICZfZG1hX2J1Zl91cGxvYWRfbmV3LAorICAmX2RtYV9idWZfdXBsb2FkX3RyYW5zZm9ybV9jYXBzLAorICAmX2RtYV9idWZfdXBsb2FkX2FjY2VwdCwKKyAgJl9kbWFfYnVmX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb24sCisgICZfZG1hX2J1Zl91cGxvYWRfcGVyZm9ybSwKKyAgJl9kbWFfYnVmX3VwbG9hZF9mcmVlCit9OworCisjZW5kaWYgLyogR1NUX0dMX0hBVkVfRE1BQlVGICovCiAKIHN0cnVjdCBHTFVwbG9hZE1ldGEKIHsKQEAgLTQ5Myw2ICs5MTQsNyBAQAogICBnYm9vbGVhbiByZXN1bHQ7CiAgIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSAqbWV0YTsKICAgZ3VpbnQgdGV4dHVyZV9pZHNbR1NUX0dMX1VQTE9BRF9NQVhfUExBTkVTXTsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKIH07CiAKIHN0YXRpYyBncG9pbnRlcgpAQCAtNTA5LDE3ICs5MzEsMzkgQEAKIF91cGxvYWRfbWV0YV91cGxvYWRfdHJhbnNmb3JtX2NhcHMgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCiAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMpCiB7CisgIEdzdENhcHNGZWF0dXJlcyAqcGFzc3Rocm91Z2ggPQorICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJvbV9zdHJpbmcKKyAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX09WRVJMQVlfQ09NUE9TSVRJT04pOwogICBHc3RDYXBzICpyZXQ7CiAKICAgaWYgKGRpcmVjdGlvbiA9PSBHU1RfUEFEX1NJTkspIHsKLSAgICByZXQgPSBfc2V0X2NhcHNfZmVhdHVyZXMgKGNhcHMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7Ci0gIH0gZWxzZSB7CisgICAgR3N0Q2FwcyAqdG1wOworCiAgICAgcmV0ID0KLSAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzIChjYXBzLAotICAgICAgICBHU1RfQ0FQU19GRUFUVVJFX01FVEFfR1NUX1ZJREVPX0dMX1RFWFRVUkVfVVBMT0FEX01FVEEpOworICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXNfd2l0aF9wYXNzdGhyb3VnaCAoY2FwcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBwYXNzdGhyb3VnaCk7CisKKyAgICB0bXAgPSBfY2Fwc19pbnRlcnNlY3RfdGV4dHVyZV90YXJnZXQgKHJldCwgMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpOworICAgIGdzdF9jYXBzX3VucmVmIChyZXQpOworICAgIHJldCA9IHRtcDsKKyAgfSBlbHNlIHsKKyAgICBnaW50IGksIG47CisKKyAgICByZXQgPQorICAgICAgICBfc2V0X2NhcHNfZmVhdHVyZXNfd2l0aF9wYXNzdGhyb3VnaCAoY2FwcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19HTF9URVhUVVJFX1VQTE9BRF9NRVRBLCBwYXNzdGhyb3VnaCk7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAocmV0LCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIlJHQkEiLCBOVUxMKTsKKworICAgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAocmV0KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChyZXQsIGkpOworCisgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHMsICJ0ZXh0dXJlLXRhcmdldCIsIE5VTEwpOworICAgIH0KICAgfQogCisgIGdzdF9jYXBzX2ZlYXR1cmVzX2ZyZWUgKHBhc3N0aHJvdWdoKTsKKwogICByZXR1cm4gcmV0OwogfQogCkBAIC01NDUsNiArOTg5LDE0IEBACiAgIGlmICghcmV0KQogICAgIHJldHVybiByZXQ7CiAKKyAgaWYgKHVwbG9hZC0+cGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHVwbG9hZC0+cGFyYW1zKTsKKyAgaWYgKCEodXBsb2FkLT5wYXJhbXMgPQorICAgICAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKHVwbG9hZC0+dXBsb2FkLT5jb250ZXh0LCBOVUxMLAorICAgICAgICAgICAgICAmdXBsb2FkLT51cGxvYWQtPnByaXYtPmluX2luZm8sIC0xLCBOVUxMLAorICAgICAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpKSkKKyAgICByZXR1cm4gRkFMU0U7CisKICAgaWYgKGJ1ZmZlcikgewogICAgIGlmICgobWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2dsX3RleHR1cmVfdXBsb2FkX21ldGEgKGJ1ZmZlcikpID09IE5VTEwpCiAgICAgICByZXR1cm4gRkFMU0U7CkBAIC01NzQsMTEgKzEwMjYsMTEgQEAKICAgZ3BvaW50ZXIgaGFuZGxlOwogCiAgIGdsX2FwaXMgPQotICAgICAgZ3N0X2dsX2FwaV90b19zdHJpbmcgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKHVwbG9hZC0+dXBsb2FkLT4KLSAgICAgICAgICBjb250ZXh0KSk7Ci0gIHBsYXRmb3JtID0KLSAgICAgIGdzdF9nbF9wbGF0Zm9ybV90b19zdHJpbmcgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9wbGF0Zm9ybSAodXBsb2FkLT4KKyAgICAgIGdzdF9nbF9hcGlfdG9fc3RyaW5nIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpICh1cGxvYWQtPgogICAgICAgICAgIHVwbG9hZC0+Y29udGV4dCkpOworICBwbGF0Zm9ybSA9CisgICAgICBnc3RfZ2xfcGxhdGZvcm1fdG9fc3RyaW5nIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfcGxhdGZvcm0KKyAgICAgICh1cGxvYWQtPnVwbG9hZC0+Y29udGV4dCkpOwogICBoYW5kbGUgPSAoZ3BvaW50ZXIpIGdzdF9nbF9jb250ZXh0X2dldF9nbF9jb250ZXh0ICh1cGxvYWQtPnVwbG9hZC0+Y29udGV4dCk7CiAKICAgZ2xfY29udGV4dCA9CkBAIC02MTgsNiArMTA3MCw5IEBACiAgIGludCBpOwogICBHc3RWaWRlb0luZm8gKmluX2luZm8gPSAmdXBsb2FkLT51cGxvYWQtPnByaXYtPmluX2luZm87CiAgIGd1aW50IG1heF9wbGFuZXMgPSBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5faW5mbyk7CisgIEdzdEdMTWVtb3J5QWxsb2NhdG9yICphbGxvY2F0b3I7CisKKyAgYWxsb2NhdG9yID0gZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKHVwbG9hZC0+dXBsb2FkLT5jb250ZXh0KTsKIAogICAvKiBTdXBwb3J0IHN0ZXJlbyB2aWV3cyBmb3Igc2VwYXJhdGVkIG11bHRpdmlldyBtb2RlICovCiAgIGlmIChHU1RfVklERU9fSU5GT19NVUxUSVZJRVdfTU9ERSAoaW5faW5mbykgPT0KQEAgLTYzMCw4ICsxMDg1LDggQEAKIAogICAvKiBGSVhNRTogYnVmZmVyIHBvb2wgKi8KICAgKm91dGJ1ZiA9IGdzdF9idWZmZXJfbmV3ICgpOwotICBnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAodXBsb2FkLT51cGxvYWQtPmNvbnRleHQsCi0gICAgICBOVUxMLCAmdXBsb2FkLT51cGxvYWQtPnByaXYtPmluX2luZm8sIE5VTEwsICpvdXRidWYpOworICBnc3RfZ2xfbWVtb3J5X3NldHVwX2J1ZmZlciAoYWxsb2NhdG9yLCAqb3V0YnVmLCB1cGxvYWQtPnBhcmFtcyk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CiAKICAgZm9yIChpID0gMDsgaSA8IEdTVF9HTF9VUExPQURfTUFYX1BMQU5FUzsgaSsrKSB7CiAgICAgZ3VpbnQgdGV4X2lkID0gMDsKQEAgLTY2MSwxMSArMTExNiw2IEBACiB9CiAKIHN0YXRpYyB2b2lkCi1fdXBsb2FkX21ldGFfdXBsb2FkX3JlbGVhc2UgKGdwb2ludGVyIGltcGwsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLX0KLQotc3RhdGljIHZvaWQKIF91cGxvYWRfbWV0YV91cGxvYWRfZnJlZSAoZ3BvaW50ZXIgaW1wbCkKIHsKICAgc3RydWN0IEdMVXBsb2FkTWV0YSAqdXBsb2FkID0gaW1wbDsKQEAgLTY3OCw2ICsxMTI4LDEwIEBACiAgICAgICBnc3RfZ2xfY29udGV4dF9kZWxfdGV4dHVyZSAodXBsb2FkLT51cGxvYWQtPmNvbnRleHQsCiAgICAgICAgICAgJnVwbG9hZC0+dGV4dHVyZV9pZHNbaV0pOwogICB9CisKKyAgaWYgKHVwbG9hZC0+cGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHVwbG9hZC0+cGFyYW1zKTsKKwogICBnX2ZyZWUgKHVwbG9hZCk7CiB9CiAKQEAgLTY5NCw3ICsxMTQ4LDYgQEAKICAgJl91cGxvYWRfbWV0YV91cGxvYWRfYWNjZXB0LAogICAmX3VwbG9hZF9tZXRhX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb24sCiAgICZfdXBsb2FkX21ldGFfdXBsb2FkX3BlcmZvcm0sCi0gICZfdXBsb2FkX21ldGFfdXBsb2FkX3JlbGVhc2UsCiAgICZfdXBsb2FkX21ldGFfdXBsb2FkX2ZyZWUKIH07CiAKQEAgLTcwOCw2ICsxMTYxLDcgQEAKIHsKICAgR3N0R0xVcGxvYWQgKnVwbG9hZDsKICAgc3RydWN0IFJhd1VwbG9hZEZyYW1lICppbl9mcmFtZTsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKIH07CiAKIHN0YXRpYyBzdHJ1Y3QgUmF3VXBsb2FkRnJhbWUgKgpAQCAtNzcxLDE0ICsxMjI1LDQxIEBACiBfcmF3X2RhdGFfdXBsb2FkX3RyYW5zZm9ybV9jYXBzIChHc3RHTENvbnRleHQgKiBjb250ZXh0LAogICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzKQogeworICBHc3RDYXBzRmVhdHVyZXMgKnBhc3N0aHJvdWdoID0KKyAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2Zyb21fc3RyaW5nCisgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRVRBX0dTVF9WSURFT19PVkVSTEFZX0NPTVBPU0lUSU9OKTsKICAgR3N0Q2FwcyAqcmV0OwogCiAgIGlmIChkaXJlY3Rpb24gPT0gR1NUX1BBRF9TSU5LKSB7Ci0gICAgcmV0ID0gX3NldF9jYXBzX2ZlYXR1cmVzIChjYXBzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOworICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXRfbWFzayA9IDA7CisgICAgR3N0Q2FwcyAqdG1wOworCisgICAgcmV0ID0KKyAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgcGFzc3Rocm91Z2gpOworCisgICAgdGFyZ2V0X21hc2sgfD0gMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisgICAgdGFyZ2V0X21hc2sgfD0gMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFOworICAgIHRtcCA9IF9jYXBzX2ludGVyc2VjdF90ZXh0dXJlX3RhcmdldCAocmV0LCB0YXJnZXRfbWFzayk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHJldCk7CisgICAgcmV0ID0gdG1wOwogICB9IGVsc2UgewotICAgIHJldCA9IF9zZXRfY2Fwc19mZWF0dXJlcyAoY2FwcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfU1lTVEVNX01FTU9SWSk7CisgICAgZ2ludCBpLCBuOworCisgICAgcmV0ID0KKyAgICAgICAgX3NldF9jYXBzX2ZlYXR1cmVzX3dpdGhfcGFzc3Rocm91Z2ggKGNhcHMsCisgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX1NZU1RFTV9NRU1PUlksIHBhc3N0aHJvdWdoKTsKKworICAgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAocmV0KTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChyZXQsIGkpOworCisgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHMsICJ0ZXh0dXJlLXRhcmdldCIsIE5VTEwpOworICAgIH0KICAgfQogCisgIGdzdF9jYXBzX2ZlYXR1cmVzX2ZyZWUgKHBhc3N0aHJvdWdoKTsKKwogICByZXR1cm4gcmV0OwogfQogCkBAIC03OTMsOCArMTI3NCwxOSBAQAogICBpZiAoIWdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKSkKICAgICByZXR1cm4gRkFMU0U7CiAKKyAgaWYgKHJhdy0+aW5fZnJhbWUpCisgICAgX3Jhd191cGxvYWRfZnJhbWVfdW5yZWYgKHJhdy0+aW5fZnJhbWUpOwogICByYXctPmluX2ZyYW1lID0gX3Jhd191cGxvYWRfZnJhbWVfbmV3IChyYXcsIGJ1ZmZlcik7CiAKKyAgaWYgKHJhdy0+cGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHJhdy0+cGFyYW1zKTsKKyAgaWYgKCEocmF3LT5wYXJhbXMgPQorICAgICAgICAgIGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhIChyYXctPnVwbG9hZC0+Y29udGV4dCwKKyAgICAgICAgICAgICAgTlVMTCwgJnJhdy0+dXBsb2FkLT5wcml2LT5pbl9pbmZvLCAtMSwgTlVMTCwKKyAgICAgICAgICAgICAgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJELCBOVUxMLCByYXctPmluX2ZyYW1lLAorICAgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIF9yYXdfdXBsb2FkX2ZyYW1lX3VucmVmKSkpCisgICAgcmV0dXJuIEZBTFNFOworCiAgIHJldHVybiAocmF3LT5pbl9mcmFtZSAhPSBOVUxMKTsKIH0KIApAQCAtODA5LDM3ICsxMzAxLDQzIEBACiBfcmF3X2RhdGFfdXBsb2FkX3BlcmZvcm0gKGdwb2ludGVyIGltcGwsIEdzdEJ1ZmZlciAqIGJ1ZmZlciwKICAgICBHc3RCdWZmZXIgKiogb3V0YnVmKQogewotICBHc3RHTE1lbW9yeSAqaW5fdGV4W0dTVF9HTF9VUExPQURfTUFYX1BMQU5FU10gPSB7IDAsIH07CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYWxsb2NhdG9yOwogICBzdHJ1Y3QgUmF3VXBsb2FkICpyYXcgPSBpbXBsOwogICBpbnQgaTsKICAgR3N0VmlkZW9JbmZvICppbl9pbmZvID0gJnJhdy0+dXBsb2FkLT5wcml2LT5pbl9pbmZvOwotICBndWludCBtYXhfcGxhbmVzID0gR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluX2luZm8pOworICBndWludCBuX21lbSA9IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbl9pbmZvKTsKIAotICAvKiBTdXBwb3J0IHN0ZXJlbyB2aWV3cyBmb3Igc2VwYXJhdGVkIG11bHRpdmlldyBtb2RlICovCi0gIGlmIChHU1RfVklERU9fSU5GT19NVUxUSVZJRVdfTU9ERSAoaW5faW5mbykgPT0KLSAgICAgIEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9TRVBBUkFURUQpCi0gICAgbWF4X3BsYW5lcyAqPSBHU1RfVklERU9fSU5GT19WSUVXUyAoaW5faW5mbyk7Ci0KLSAgZ3N0X2dsX21lbW9yeV9zZXR1cF93cmFwcGVkIChyYXctPnVwbG9hZC0+Y29udGV4dCwKLSAgICAgICZyYXctPnVwbG9hZC0+cHJpdi0+aW5faW5mbywgTlVMTCwgcmF3LT5pbl9mcmFtZS0+ZnJhbWUuZGF0YSwgaW5fdGV4LAotICAgICAgcmF3LT5pbl9mcmFtZSwgKEdEZXN0cm95Tm90aWZ5KSBfcmF3X3VwbG9hZF9mcmFtZV91bnJlZik7CisgIGFsbG9jYXRvciA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdAorICAgICAgKHJhdy0+dXBsb2FkLT5jb250ZXh0KSk7CiAKICAgLyogRklYTUUgVXNlIGEgYnVmZmVyIHBvb2wgdG8gY2FjaGUgdGhlIGdlbmVyYXRlZCB0ZXh0dXJlcyAqLworICAvKiBGSVhNRTogbXVsdGl2aWV3IHN1cHBvcnQgd2l0aCBzZXBhcmF0ZWQgbGVmdC9yaWdodCBmcmFtZXM/ICovCiAgICpvdXRidWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKLSAgZm9yIChpID0gMDsgaSA8IG1heF9wbGFuZXM7IGkrKykgeworICBmb3IgKGkgPSAwOyBpIDwgbl9tZW07IGkrKykgeworICAgIEdzdEdMQmFzZU1lbW9yeSAqdGV4OworCisgICAgcmF3LT5wYXJhbXMtPnBhcmVudC53cmFwcGVkX2RhdGEgPSByYXctPmluX2ZyYW1lLT5mcmFtZS5kYXRhW2ldOworICAgIHJhdy0+cGFyYW1zLT5wbGFuZSA9IGk7CisKKyAgICB0ZXggPQorICAgICAgICBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGFsbG9jYXRvciwKKyAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSByYXctPnBhcmFtcyk7CisgICAgaWYgKCF0ZXgpIHsKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKCpvdXRidWYpOworICAgICAgKm91dGJ1ZiA9IE5VTEw7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChyYXctPnVwbG9hZCwgIkZhaWxlZCB0byBhbGxvY2F0ZSB3cmFwcGVkIHRleHR1cmUiKTsKKyAgICAgIHJldHVybiBHU1RfR0xfVVBMT0FEX0VSUk9SOworICAgIH0KKwogICAgIF9yYXdfdXBsb2FkX2ZyYW1lX3JlZiAocmF3LT5pbl9mcmFtZSk7Ci0gICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5ICgqb3V0YnVmLCAoR3N0TWVtb3J5ICopIGluX3RleFtpXSk7CisgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5ICgqb3V0YnVmLCAoR3N0TWVtb3J5ICopIHRleCk7CiAgIH0KKyAgZ3N0X29iamVjdF91bnJlZiAoYWxsb2NhdG9yKTsKIAotICByZXR1cm4gR1NUX0dMX1VQTE9BRF9ET05FOwotfQotCi1zdGF0aWMgdm9pZAotX3Jhd19kYXRhX3VwbG9hZF9yZWxlYXNlIChncG9pbnRlciBpbXBsLCBHc3RCdWZmZXIgKiBidWZmZXIpCi17Ci0gIHN0cnVjdCBSYXdVcGxvYWQgKnJhdyA9IGltcGw7CiAgIF9yYXdfdXBsb2FkX2ZyYW1lX3VucmVmIChyYXctPmluX2ZyYW1lKTsKICAgcmF3LT5pbl9mcmFtZSA9IE5VTEw7CisgIHJldHVybiBHU1RfR0xfVVBMT0FEX0RPTkU7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC04NDcsNiArMTM0NSw5IEBACiB7CiAgIHN0cnVjdCBSYXdVcGxvYWQgKnJhdyA9IGltcGw7CiAKKyAgaWYgKHJhdy0+cGFyYW1zKQorICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHJhdy0+cGFyYW1zKTsKKwogICBnX2ZyZWUgKHJhdyk7CiB9CiAKQEAgLTg2Miw3ICsxMzYzLDYgQEAKICAgJl9yYXdfZGF0YV91cGxvYWRfYWNjZXB0LAogICAmX3Jhd19kYXRhX3VwbG9hZF9wcm9wb3NlX2FsbG9jYXRpb24sCiAgICZfcmF3X2RhdGFfdXBsb2FkX3BlcmZvcm0sCi0gICZfcmF3X2RhdGFfdXBsb2FkX3JlbGVhc2UsCiAgICZfcmF3X2RhdGFfdXBsb2FkX2ZyZWUKIH07CiAKQEAgLTg3MCw2ICsxMzcwLDkgQEAKICNpZiBHU1RfR0xfSEFWRV9QTEFURk9STV9FR0wKICAgJl9lZ2xfaW1hZ2VfdXBsb2FkLAogI2VuZGlmCisjaWYgR1NUX0dMX0hBVkVfRE1BQlVGCisgICZfZG1hX2J1Zl91cGxvYWQsCisjZW5kaWYKICAgJl91cGxvYWRfbWV0YV91cGxvYWQsICZfcmF3X2RhdGFfdXBsb2FkCiB9OwogCkBAIC05NDUsOCArMTQ0OCw2IEBACiAKICAgdXBsb2FkID0gR1NUX0dMX1VQTE9BRCAob2JqZWN0KTsKIAotICBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyX3VubG9ja2VkICh1cGxvYWQpOwotCiAgIGlmICh1cGxvYWQtPnByaXYtPm1ldGhvZF9pbXBsKQogICAgIHVwbG9hZC0+cHJpdi0+bWV0aG9kLT5mcmVlICh1cGxvYWQtPnByaXYtPm1ldGhvZF9pbXBsKTsKICAgdXBsb2FkLT5wcml2LT5tZXRob2RfaSA9IDA7CkBAIC05OTQsOSArMTQ5NSw2IEBACiAgICAgICB0bXAgPSBnc3RfY2Fwc19tZXJnZSAodG1wLCB0bXAyKTsKICAgfQogCi0gIHRtcCA9IGdzdF9nbF9vdmVybGF5X2NvbXBvc2l0b3JfYWRkX2NhcHMgKHRtcCk7Ci0KLQogICBpZiAoZmlsdGVyKSB7CiAgICAgcmVzdWx0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKGZpbHRlciwgdG1wLCBHU1RfQ0FQU19JTlRFUlNFQ1RfRklSU1QpOwogICAgIGdzdF9jYXBzX3VucmVmICh0bXApOwpAQCAtMTA5NywzMiArMTU5NSw2IEBACiAgIEdTVF9PQkpFQ1RfVU5MT0NLICh1cGxvYWQpOwogfQogCi1zdGF0aWMgdm9pZAotZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcl91bmxvY2tlZCAoR3N0R0xVcGxvYWQgKiB1cGxvYWQpCi17Ci0gIGlmICh1cGxvYWQtPnByaXYtPm91dGJ1ZiAmJiB1cGxvYWQtPnByaXYtPm1ldGhvZF9pbXBsKSB7Ci0gICAgdXBsb2FkLT5wcml2LT5tZXRob2QtPnJlbGVhc2UgKHVwbG9hZC0+cHJpdi0+bWV0aG9kX2ltcGwsCi0gICAgICAgIHVwbG9hZC0+cHJpdi0+b3V0YnVmKTsKLSAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZ1cGxvYWQtPnByaXYtPm91dGJ1ZiwgTlVMTCk7Ci0gIH0KLX0KLQotLyoqCi0gKiBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyOgotICogQHVwbG9hZDogYSAjR3N0R0xVcGxvYWQKLSAqCi0gKiBSZWxlYXNlcyBhbnkgYnVmZmVycyBjdXJyZW50bHkgcmVmZXJlbmNlZCBieSBAdXBsb2FkCi0gKi8KLXZvaWQKLWdzdF9nbF91cGxvYWRfcmVsZWFzZV9idWZmZXIgKEdzdEdMVXBsb2FkICogdXBsb2FkKQotewotICBnX3JldHVybl9pZl9mYWlsICh1cGxvYWQgIT0gTlVMTCk7Ci0KLSAgR1NUX09CSkVDVF9MT0NLICh1cGxvYWQpOwotICBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyX3VubG9ja2VkICh1cGxvYWQpOwotICBHU1RfT0JKRUNUX1VOTE9DSyAodXBsb2FkKTsKLX0KLQogc3RhdGljIGdib29sZWFuCiBfdXBsb2FkX2ZpbmRfbWV0aG9kIChHc3RHTFVwbG9hZCAqIHVwbG9hZCkKIHsKQEAgLTExNDgsMTEgKzE2MjAsMTEgQEAKIC8qKgogICogZ3N0X2dsX3VwbG9hZF9wZXJmb3JtX3dpdGhfYnVmZmVyOgogICogQHVwbG9hZDogYSAjR3N0R0xVcGxvYWQKLSAqIEBidWZmZXI6IGEgI0dzdEJ1ZmZlcgotICogQG91dGJ1Zl9wdHI6IChhbGxvdy1ub25lKTogcmVzdWx0aW5nIGJ1ZmZlcgorICogQGJ1ZmZlcjogaW5wdXQgI0dzdEJ1ZmZlcgorICogQG91dGJ1Zl9wdHI6IHJlc3VsdGluZyAjR3N0QnVmZmVyCiAgKgotICogVXBsb2FkcyBAYnVmZmVyIHRvIHRoZSB0ZXh0dXJlIGdpdmVuIGJ5IEB0ZXhfaWQuICBAdGV4X2lkIGlzIHZhbGlkCi0gKiB1bnRpbCBnc3RfZ2xfdXBsb2FkX3JlbGVhc2VfYnVmZmVyKCkgaXMgY2FsbGVkLgorICogVXBsb2FkcyBAYnVmZmVyIHVzaW5nIHRoZSB0cmFuc2Zvcm1hdGlvbiBzcGVjaWZpZWQgYnkKKyAqIGdzdF9nbF91cGxvYWRfc2V0X2NhcHMoKSBjcmVhdGluZyBhIG5ldyAjR3N0QnVmZmVyIGluIEBvdXRidWZfcHRyLgogICoKICAqIFJldHVybnM6IHdoZXRoZXIgdGhlIHVwbG9hZCB3YXMgc3VjY2Vzc2Z1bAogICovCkBAIC0xMTYxLDE0ICsxNjMzLDE0IEBACiAgICAgR3N0QnVmZmVyICoqIG91dGJ1Zl9wdHIpCiB7CiAgIEdzdEdMVXBsb2FkUmV0dXJuIHJldCA9IEdTVF9HTF9VUExPQURfRVJST1I7CisgIEdzdEJ1ZmZlciAqb3V0YnVmOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfVVBMT0FEICh1cGxvYWQpLCBGQUxTRSk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfQlVGRkVSIChidWZmZXIpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChvdXRidWZfcHRyICE9IE5VTEwsIEZBTFNFKTsKIAogICBHU1RfT0JKRUNUX0xPQ0sgKHVwbG9hZCk7CiAKLSAgZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcl91bmxvY2tlZCAodXBsb2FkKTsKLQogI2RlZmluZSBORVhUX01FVEhPRCBcCiBkbyB7IFwKICAgaWYgKCFfdXBsb2FkX2ZpbmRfbWV0aG9kICh1cGxvYWQpKSB7IFwKQEAgLTExODgsNyArMTY2MCw3IEBACiAKICAgcmV0ID0KICAgICAgIHVwbG9hZC0+cHJpdi0+bWV0aG9kLT5wZXJmb3JtICh1cGxvYWQtPnByaXYtPm1ldGhvZF9pbXBsLCBidWZmZXIsCi0gICAgICAmdXBsb2FkLT5wcml2LT5vdXRidWYpOworICAgICAgJm91dGJ1Zik7CiAgIGlmIChyZXQgPT0gR1NUX0dMX1VQTE9BRF9VTlNIQVJFRF9HTF9DT05URVhUKSB7CiAgICAgdXBsb2FkLT5wcml2LT5tZXRob2QtPmZyZWUgKHVwbG9hZC0+cHJpdi0+bWV0aG9kX2ltcGwpOwogICAgIHVwbG9hZC0+cHJpdi0+bWV0aG9kID0gJl9yYXdfZGF0YV91cGxvYWQ7CkBAIC0xMTk3LDE4ICsxNjY5LDE1IEBACiAgIH0gZWxzZSBpZiAocmV0ID09IEdTVF9HTF9VUExPQURfRE9ORSkgewogICAgIC8qIHdlIGFyZSBkb25lICovCiAgIH0gZWxzZSB7Ci0gICAgZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlcl91bmxvY2tlZCAodXBsb2FkKTsKICAgICB1cGxvYWQtPnByaXYtPm1ldGhvZC0+ZnJlZSAodXBsb2FkLT5wcml2LT5tZXRob2RfaW1wbCk7CiAgICAgdXBsb2FkLT5wcml2LT5tZXRob2RfaW1wbCA9IE5VTEw7CiAgICAgTkVYVF9NRVRIT0Q7CiAgIH0KIAotICBpZiAob3V0YnVmX3B0cikgewotICAgIGlmIChidWZmZXIgIT0gdXBsb2FkLT5wcml2LT5vdXRidWYpCi0gICAgICBnc3RfYnVmZmVyX2NvcHlfaW50byAodXBsb2FkLT5wcml2LT5vdXRidWYsIGJ1ZmZlciwKLSAgICAgICAgICBHU1RfQlVGRkVSX0NPUFlfRkxBR1MgfCBHU1RfQlVGRkVSX0NPUFlfVElNRVNUQU1QUywgMCwgLTEpOwotICAgICpvdXRidWZfcHRyID0gZ3N0X2J1ZmZlcl9yZWYgKHVwbG9hZC0+cHJpdi0+b3V0YnVmKTsKLSAgfQorICBpZiAoYnVmZmVyICE9IG91dGJ1ZikKKyAgICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0YnVmLCBidWZmZXIsCisgICAgICAgIEdTVF9CVUZGRVJfQ09QWV9GTEFHUyB8IEdTVF9CVUZGRVJfQ09QWV9USU1FU1RBTVBTLCAwLCAtMSk7CisgICpvdXRidWZfcHRyID0gb3V0YnVmOwogCiAgIEdTVF9PQkpFQ1RfVU5MT0NLICh1cGxvYWQpOwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWQuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5oCmluZGV4IDViYzQzNDYuLjU3N2M5NGIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZC5oCkBAIC05OCw4ICs5OCw3IEBACiAKIEdzdEdMVXBsb2FkUmV0dXJuIGdzdF9nbF91cGxvYWRfcGVyZm9ybV93aXRoX2J1ZmZlciAoR3N0R0xVcGxvYWQgKiB1cGxvYWQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0QnVmZmVyICogYnVmZmVyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdEJ1ZmZlciAqKiBvdXRidWYpOwotdm9pZCAgICAgICAgICAgICAgZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlciAgICAgKEdzdEdMVXBsb2FkICogdXBsb2FkKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKiogb3V0YnVmX3B0cik7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZG1ldGEuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHVwbG9hZG1ldGEuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTQ3ZTAwNi4uMDAwMDAwMAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWRtZXRhLmMKKysrIC9kZXYvbnVsbApAQCAtMSwzODAgKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTQgTWF0dGhldyBXYXRlcnMgPHlzdHJlZTAwQGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotI2luY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotCi0jaW5jbHVkZSAiZ2wuaCIKLSNpbmNsdWRlICJnc3RnbHVwbG9hZG1ldGEuaCIKLQotLyoqCi0gKiBTRUNUSU9OOmdzdGdsdXBsb2FkbWV0YQotICogQHNob3J0X2Rlc2NyaXB0aW9uOiBhbiBvYmplY3QgdGhhdCBwcm92aWRlcyAjR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhCi0gKiBAc2VlX2Fsc286ICNHc3RHTFVwbG9hZCwgI0dzdEdMTWVtb3J5Ci0gKgotICogI0dzdEdMVXBsb2FkTWV0YSBpcyBhbiBvYmplY3QgdGhhdCB1cGxvYWRzIGRhdGEgZnJvbSBzeXN0ZW0gbWVtb3J5IGludG8gR0wgdGV4dHVyZXMuCi0gKgotICogQSAjR3N0R0xVcGxvYWQgY2FuIGJlIGNyZWF0ZWQgd2l0aCBnc3RfZ2xfdXBsb2FkX25ldygpCi0gKi8KLQotI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKLSNkZWZpbmUgVVNJTkdfT1BFTkdMMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAxKSkKLSNkZWZpbmUgVVNJTkdfR0xFUyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTLCAxLCAwKSkKLSNkZWZpbmUgVVNJTkdfR0xFUzIoY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfR0xFUzIsIDIsIDApKQotI2RlZmluZSBVU0lOR19HTEVTMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9HTEVTMiwgMywgMCkpCi0KLS8qICpJTkRFTlQtT0ZGKiAqLwotCi1zdHJ1Y3QgX0dzdEdMVXBsb2FkTWV0YVByaXZhdGUKLXsKLSAgR3N0QnVmZmVyICpidWZmZXI7Ci0gIGdib29sZWFuIGluaXR0ZWQ7Ci0KLSAgR3N0R0xNZW1vcnkgKmluX3RleFtHU1RfVklERU9fTUFYX1BMQU5FU107Ci0gIEdzdEdMTWVtb3J5ICpvdXRfdGV4W0dTVF9WSURFT19NQVhfUExBTkVTXTsKLX07Ci0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9nbF91cGxvYWRfbWV0YV9kZWJ1Zyk7Ci0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfdXBsb2FkX21ldGFfZGVidWcKLQotI2RlZmluZSBERUJVR19JTklUIFwKLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9nbF91cGxvYWRfbWV0YV9kZWJ1ZywgImdsdXBsb2FkbWV0YSIsIDAsICJ1cGxvYWRtZXRhIik7Ci0KLUdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RHTFVwbG9hZE1ldGEsIGdzdF9nbF91cGxvYWRfbWV0YSwgR1NUX1RZUEVfT0JKRUNULCBERUJVR19JTklUKTsKLXN0YXRpYyB2b2lkIGdzdF9nbF91cGxvYWRfbWV0YV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci1zdGF0aWMgdm9pZCBnc3RfZ2xfdXBsb2FkX21ldGFfcmVzZXQgKEdzdEdMVXBsb2FkTWV0YSAqIHVwbG9hZCk7Ci0KLSNkZWZpbmUgR1NUX0dMX1VQTE9BRF9NRVRBX0dFVF9QUklWQVRFKG9iaikgKEdfVFlQRV9JTlNUQU5DRV9HRVRfUFJJVkFURSAoKG9iaiksIFwKLSAgICBHU1RfVFlQRV9HTF9VUExPQURfTUVUQSwgR3N0R0xVcGxvYWRNZXRhUHJpdmF0ZSkpCi0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfdXBsb2FkX21ldGFfY2xhc3NfaW5pdCAoR3N0R0xVcGxvYWRNZXRhQ2xhc3MgKiBrbGFzcykKLXsKLSAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3RHTFVwbG9hZE1ldGFQcml2YXRlKSk7Ci0KLSAgR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKS0+ZmluYWxpemUgPSBnc3RfZ2xfdXBsb2FkX21ldGFfZmluYWxpemU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfZ2xfdXBsb2FkX21ldGFfaW5pdCAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkKQotewotICB1cGxvYWQtPnByaXYgPSBHU1RfR0xfVVBMT0FEX01FVEFfR0VUX1BSSVZBVEUgKHVwbG9hZCk7Ci0KLSAgdXBsb2FkLT5jb250ZXh0ID0gTlVMTDsKLQotICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmdXBsb2FkLT5pbmZvLCBHU1RfVklERU9fRk9STUFUX0VOQ09ERUQsIDAsIDApOwotfQotCi0vKioKLSAqIGdzdF9nbF91cGxvYWRfbWV0YV9uZXc6Ci0gKiBAY29udGV4dDogYSAjR3N0R0xDb250ZXh0Ci0gKgotICogUmV0dXJuczogYSBuZXcgI0dzdEdMVXBsb2FkTWV0YSBvYmplY3QKLSAqLwotR3N0R0xVcGxvYWRNZXRhICoKLWdzdF9nbF91cGxvYWRfbWV0YV9uZXcgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCi17Ci0gIEdzdEdMVXBsb2FkTWV0YSAqdXBsb2FkOwotCi0gIHVwbG9hZCA9IGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfR0xfVVBMT0FEX01FVEEsIE5VTEwpOwotCi0gIHVwbG9hZC0+Y29udGV4dCA9IGdzdF9vYmplY3RfcmVmIChjb250ZXh0KTsKLQotICBHU1RfREVCVUdfT0JKRUNUICh1cGxvYWQsICJDcmVhdGVkIHVwbG9hZCBmb3IgY29udGV4dCAlIkdTVF9QVFJfRk9STUFULCB1cGxvYWQtPmNvbnRleHQpOwotICAKLSAgcmV0dXJuIHVwbG9hZDsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9nbF91cGxvYWRfbWV0YV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0R0xVcGxvYWRNZXRhICp1cGxvYWQ7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAob2JqZWN0LCAiRmluYWxpemluZyIpOwotICB1cGxvYWQgPSBHU1RfR0xfVVBMT0FEX01FVEEgKG9iamVjdCk7Ci0KLSAgZ3N0X2dsX3VwbG9hZF9tZXRhX3Jlc2V0ICh1cGxvYWQpOwotCi0gIGlmICh1cGxvYWQtPmNvbnRleHQpIHsKLSAgICBnc3Rfb2JqZWN0X3VucmVmICh1cGxvYWQtPmNvbnRleHQpOwotICAgIHVwbG9hZC0+Y29udGV4dCA9IE5VTEw7Ci0gIH0KLQotICBHX09CSkVDVF9DTEFTUyAoZ3N0X2dsX3VwbG9hZF9tZXRhX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2dsX3VwbG9hZF9tZXRhX3Jlc2V0IChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQpCi17Ci0gIGd1aW50IGk7Ci0KLSAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19NQVhfUExBTkVTOyBpKyspIHsKLSAgICBpZiAodXBsb2FkLT5wcml2LT5vdXRfdGV4W2ldKSB7Ci0gICAgICBnc3RfbWVtb3J5X3VucmVmICgoR3N0TWVtb3J5ICopIHVwbG9hZC0+cHJpdi0+b3V0X3RleFtpXSk7Ci0gICAgICB1cGxvYWQtPnByaXYtPm91dF90ZXhbaV0gPSBOVUxMOwotICAgIH0KLSAgfQotCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fTUFYX1BMQU5FUzsgaSsrKSB7Ci0gICAgaWYgKHVwbG9hZC0+cHJpdi0+aW5fdGV4W2ldKSB7Ci0gICAgICBnc3RfbWVtb3J5X3VucmVmICgoR3N0TWVtb3J5ICopIHVwbG9hZC0+cHJpdi0+aW5fdGV4W2ldKTsKLSAgICAgIHVwbG9hZC0+cHJpdi0+aW5fdGV4W2ldID0gTlVMTDsKLSAgICB9Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLV9nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdF91bmxvY2tlZCAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkLAotICAgIEdzdFZpZGVvSW5mbyAqaW5mbykKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAodXBsb2FkICE9IE5VTEwpOwotICBnX3JldHVybl9pZl9mYWlsIChHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pICE9Ci0gICAgICBHU1RfVklERU9fRk9STUFUX1VOS05PV04pOwotICBnX3JldHVybl9pZl9mYWlsIChHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pICE9Ci0gICAgICBHU1RfVklERU9fRk9STUFUX0VOQ09ERUQpOwotCi0gIGlmIChnc3RfdmlkZW9faW5mb19pc19lcXVhbCAoJnVwbG9hZC0+aW5mbywgaW5mbykpCi0gICAgcmV0dXJuOwotCi0gIGdzdF9nbF91cGxvYWRfbWV0YV9yZXNldCAodXBsb2FkKTsKLSAgdXBsb2FkLT5pbmZvID0gKmluZm87Ci0gIHVwbG9hZC0+cHJpdi0+aW5pdHRlZCA9IEZBTFNFOwotfQotCi0vKioKLSAqIGdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0OgotICogQHVwbG9hZDogYSAjR3N0R0xVcGxvYWQKLSAqIEBpbmZvOiBpbnB1dCAjR3N0VmlkZW9JbmZvCi0gKgotICogSW5pdGlhbGl6ZXMgQHVwbG9hZCB3aXRoIHRoZSBpbmZvcm1hdGlvbiByZXF1aXJlZCBmb3IgdXBsb2FkLgotICovCi12b2lkCi1nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdCAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkLCBHc3RWaWRlb0luZm8gKiBpbmZvKQotewotICBHU1RfT0JKRUNUX0xPQ0sgKHVwbG9hZCk7Ci0gIF9nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdF91bmxvY2tlZCAodXBsb2FkLCBpbmZvKTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKHVwbG9hZCk7Ci19Ci0KLS8qKgotICogZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF9mb3JtYXQ6Ci0gKiBAdXBsb2FkOiBhICNHc3RHTFVwbG9hZAotICoKLSAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlICNHc3RWaWRlb0luZm8gc2V0IGJ5Ci0gKiBnc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdCgpCi0gKi8KLUdzdFZpZGVvSW5mbyAqCi1nc3RfZ2xfdXBsb2FkX21ldGFfZ2V0X2Zvcm1hdCAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkKQotewotICBHc3RWaWRlb0luZm8gKnJldDsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKHVwbG9hZCk7Ci0gIHJldCA9ICZ1cGxvYWQtPmluZm87Ci0gIEdTVF9PQkpFQ1RfTE9DSyAodXBsb2FkKTsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLV9wZXJmb3JtX3dpdGhfZ2xfbWVtb3J5IChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQsIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSAqCi0gICAgbWV0YSwgZ3VpbnQgdGV4dHVyZV9pZFs0XSkKLXsKLSAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKLSAgZ2ludCBpOwotCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnVwbG9hZC0+aW5mbyk7IGkrKykgewotICAgIEdzdEdMTWVtb3J5ICppbl9tZW0gPSB1cGxvYWQtPnByaXYtPmluX3RleFtpXTsKLQotICAgIGlmIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChpbl9tZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSkgewotICAgICAgR3N0TWFwSW5mbyBtYXBfaW5mbzsKLSAgICAgIGd1aW50IHRleF9pZDsKLQotICAgICAgdGV4X2lkID0gaW5fbWVtLT50ZXhfaWQ7Ci0gICAgICBpbl9tZW0tPnRleF9pZCA9IHRleHR1cmVfaWRbaV07Ci0KLSAgICAgIGlmICghZ3N0X21lbW9yeV9tYXAgKChHc3RNZW1vcnkgKikgaW5fbWVtLCAmbWFwX2luZm8sIEdTVF9NQVBfUkVBRCB8IEdTVF9NQVBfR0wpKSB7Ci0gICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodXBsb2FkLCAiRmFpbGVkIHRvIG1hcCBHTCBtZW1vcnkiKTsKLSAgICAgICAgcmVzID0gRkFMU0U7Ci0gICAgICB9Ci0gICAgICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIGluX21lbSwgJm1hcF9pbmZvKTsKLQotICAgICAgaW5fbWVtLT50ZXhfaWQgPSB0ZXhfaWQ7Ci0gICAgICBHU1RfTUlOSV9PQkpFQ1RfRkxBR19TRVQgKGluX21lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpOwotICAgIH0gZWxzZSB7Ci0gICAgICBHc3RHTE1lbW9yeSAqb3V0X21lbTsKLSAgICAgIGdpbnQgbWVtX3dpZHRoLCBtZW1faGVpZ2h0OwotCi0gICAgICBpZiAoIXVwbG9hZC0+cHJpdi0+b3V0X3RleFtpXSkgewotICAgICAgICAvKiB0aGUgR0wgdXBsb2FkIG1ldGEgY3JlYXRlcyBHTF9URVhUVVJFXzJEIHRleHR1cmVzICovCi0gICAgICAgIHVwbG9hZC0+cHJpdi0+b3V0X3RleFtpXSA9IGdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlICh1cGxvYWQtPmNvbnRleHQsCi0gICAgICAgICAgICB0ZXh0dXJlX2lkW2ldLCBHTF9URVhUVVJFXzJELCAmdXBsb2FkLT5pbmZvLCBpLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICAgIH0KLQotICAgICAgb3V0X21lbSA9IHVwbG9hZC0+cHJpdi0+b3V0X3RleFtpXTsKLQotICAgICAgaWYgKG91dF9tZW0tPnRleF9pZCAhPSB0ZXh0dXJlX2lkW2ldKSB7Ci0gICAgICAgIG91dF9tZW0tPnRleF9pZCA9IHRleHR1cmVfaWRbaV07Ci0gICAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAob3V0X21lbSwgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCk7Ci0gICAgICB9Ci0KLSAgICAgIG1lbV93aWR0aCA9IGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfd2lkdGggKG91dF9tZW0pOwotICAgICAgbWVtX2hlaWdodCA9IGdzdF9nbF9tZW1vcnlfZ2V0X3RleHR1cmVfaGVpZ2h0IChvdXRfbWVtKTsKLQotICAgICAgaWYgKCEocmVzID0gZ3N0X2dsX21lbW9yeV9jb3B5X2ludG9fdGV4dHVyZSAoaW5fbWVtLCBvdXRfbWVtLT50ZXhfaWQsCi0gICAgICAgICAgICBvdXRfbWVtLT50ZXhfdHlwZSwgbWVtX3dpZHRoLCBtZW1faGVpZ2h0LAotICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fUExBTkVfU1RSSURFICgmb3V0X21lbS0+aW5mbywgb3V0X21lbS0+cGxhbmUpLAotICAgICAgICAgICAgRkFMU0UpKSkKLSAgICAgICAgYnJlYWs7Ci0gICAgfQotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIGdib29sZWFuCi1fcGVyZm9ybV93aXRoX2RhdGFfdW5sb2NrZWQgKEdzdEdMVXBsb2FkTWV0YSAqIHVwbG9hZCwKLSAgICBHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEgKiBtZXRhLCAKLSAgICBncG9pbnRlciBkYXRhW0dTVF9WSURFT19NQVhfUExBTkVTXSwgZ3VpbnQgdGV4dHVyZV9pZFs0XSkKLXsKLSAgZ3VpbnQgaTsKLQotICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZ1cGxvYWQtPmluZm8pOyBpKyspIHsKLSAgICBpZiAoIXVwbG9hZC0+cHJpdi0+aW5fdGV4W2ldKQotICAgICAgdXBsb2FkLT5wcml2LT5pbl90ZXhbaV0gPSBnc3RfZ2xfbWVtb3J5X3dyYXBwZWQgKHVwbG9hZC0+Y29udGV4dCwKLSAgICAgICAgICAmdXBsb2FkLT5pbmZvLCBpLCBOVUxMLCBkYXRhW2ldLCBOVUxMLCBOVUxMKTsKLSAgfQotCi0gIHJldHVybiBfcGVyZm9ybV93aXRoX2dsX21lbW9yeSAodXBsb2FkLCBtZXRhLCB0ZXh0dXJlX2lkKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1fcGVyZm9ybV9mb3JfZ2xfdGV4dHVyZV91cGxvYWRfbWV0YSAoR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhICoKLSAgICBtZXRhLCBndWludCB0ZXh0dXJlX2lkWzRdKQotewotICBHc3RHTFVwbG9hZE1ldGEgKnVwbG9hZDsKLSAgR3N0VmlkZW9GcmFtZSBmcmFtZTsKLSAgR3N0TWVtb3J5ICptZW07Ci0gIGdib29sZWFuIHJldDsKLSAgZ3VpbnQgaSwgbjsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAobWV0YSAhPSBOVUxMLCBGQUxTRSk7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0ZXh0dXJlX2lkICE9IE5VTEwsIEZBTFNFKTsKLQotICB1cGxvYWQgPSBtZXRhLT51c2VyX2RhdGE7Ci0KLSAgR1NUX09CSkVDVF9MT0NLICh1cGxvYWQpOwotCi0gIGlmICghdXBsb2FkLT5wcml2LT5pbml0dGVkKSB7Ci0gICAgR3N0VmlkZW9JbmZvIGluZm87Ci0gICAgR3N0VmlkZW9NZXRhICp2X21ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19tZXRhICh1cGxvYWQtPnByaXYtPmJ1ZmZlcik7Ci0gICAgZ2ludCBpOwotCi0gICAgaWYgKCEocmV0ID0gdl9tZXRhICE9IE5VTEwpKQotICAgICAgZ290byBvdXQ7Ci0KLSAgICBnc3RfdmlkZW9faW5mb19pbml0ICgmaW5mbyk7Ci0gICAgaW5mby5maW5mbyA9IGdzdF92aWRlb19mb3JtYXRfZ2V0X2luZm8gKHZfbWV0YS0+Zm9ybWF0KTsKLSAgICBpbmZvLndpZHRoID0gdl9tZXRhLT53aWR0aDsKLSAgICBpbmZvLmhlaWdodCA9IHZfbWV0YS0+aGVpZ2h0OwotCi0gICAgZm9yIChpID0gMDsgaSA8IGluZm8uZmluZm8tPm5fcGxhbmVzOyBpKyspIHsKLSAgICAgIGluZm8ub2Zmc2V0W2ldID0gdl9tZXRhLT5vZmZzZXRbaV07Ci0gICAgICBpbmZvLnN0cmlkZVtpXSA9IHZfbWV0YS0+c3RyaWRlW2ldOwotICAgIH0KLQotICAgIF9nc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdF91bmxvY2tlZCAodXBsb2FkLCAmaW5mbyk7Ci0gICAgdXBsb2FkLT5wcml2LT5pbml0dGVkID0gVFJVRTsKLSAgfQotCi0gIEdTVF9MT0cgKCJVcGxvYWRpbmcgZm9yIG1ldGEgd2l0aCB0ZXh0dXJlcyAlaSwlaSwlaSwlaSIsIHRleHR1cmVfaWRbMF0sCi0gICAgICB0ZXh0dXJlX2lkWzFdLCB0ZXh0dXJlX2lkWzJdLCB0ZXh0dXJlX2lkWzNdKTsKLQotICAvKiBHc3RHTE1lbW9yeSAqLwotICBuID0gZ3N0X2J1ZmZlcl9uX21lbW9yeSAodXBsb2FkLT5wcml2LT5idWZmZXIpOwotICBtZW0gPSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5ICh1cGxvYWQtPnByaXYtPmJ1ZmZlciwgMCk7Ci0KLSAgaWYgKGdzdF9pc19nbF9tZW1vcnkgKG1lbSkgJiYgbiA9PSBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnVwbG9hZC0+aW5mbykpIHsKLSAgICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZ1cGxvYWQtPmluZm8pOyBpKyspCi0gICAgICB1cGxvYWQtPnByaXYtPmluX3RleFtpXSA9IChHc3RHTE1lbW9yeSAqKSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5ICh1cGxvYWQtPnByaXYtPmJ1ZmZlciwgaSk7Ci0KLSAgICByZXQgPSBfcGVyZm9ybV93aXRoX2dsX21lbW9yeSAodXBsb2FkLCBtZXRhLCB0ZXh0dXJlX2lkKTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJnVwbG9hZC0+aW5mbyk7IGkrKykKLSAgICAgIHVwbG9hZC0+cHJpdi0+aW5fdGV4W2ldID0gTlVMTDsKLQotICAgIGlmIChyZXQpCi0gICAgICBnb3RvIG91dDsKLSAgfQotCi0gIGlmICghKHJldCA9IGdzdF92aWRlb19mcmFtZV9tYXAgKCZmcmFtZSwgJnVwbG9hZC0+aW5mbywgdXBsb2FkLT5wcml2LT5idWZmZXIsCi0gICAgICAgICAgR1NUX01BUF9SRUFEKSkpIHsKLSAgICBHU1RfRVJST1IgKCJmYWlsZWQgdG8gbWFwIHZpZGVvIGZyYW1lIik7Ci0gICAgZ290byBvdXQ7Ci0gIH0KLQotICAvKiB1cGRhdGUgdGhlIHZpZGVvIGluZm8gZnJvbSB0aGUgb25lIHVwZGF0ZWQgYnkgZnJhbWVfbWFwIHVzaW5nIHZpZGVvIG1ldGEgKi8KLSAgX2dzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0X3VubG9ja2VkICh1cGxvYWQsICZmcmFtZS5pbmZvKTsKLQotICByZXQgPSBfcGVyZm9ybV93aXRoX2RhdGFfdW5sb2NrZWQgKHVwbG9hZCwgbWV0YSwgZnJhbWUuZGF0YSwgdGV4dHVyZV9pZCk7Ci0KLSAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmZnJhbWUpOwotCi1vdXQ6Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLICh1cGxvYWQpOwotICByZXR1cm4gcmV0OwotfQotCi0vKioKLSAqIGdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVyOgotICogQHVwbG9hZDogYSAjR3N0R0xVcGxvYWRNZXRhCi0gKiBAYnVmZmVyOiBhICNHc3RCdWZmZXIKLSAqCi0gKiBBZGRzIGEgI0dzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSBvbiBAYnVmZmVyIHVzaW5nIEB1cGxvYWQKLSAqCi0gKiBSZXR1cm5zOiB3aGV0aGVyIGl0IHdhcyBzdWNjZXNzZnVsCi0gKi8KLWdib29sZWFuCi1nc3RfZ2xfdXBsb2FkX21ldGFfYWRkX3RvX2J1ZmZlciAoR3N0R0xVcGxvYWRNZXRhICogdXBsb2FkLCBHc3RCdWZmZXIgKiBidWZmZXIpCi17Ci0gIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXh0dXJlX3R5cGVzW0dTVF9WSURFT19NQVhfUExBTkVTXTsKLSAgR3N0VmlkZW9NZXRhICp2X21ldGE7Ci0gIGdpbnQgaTsKLQotICBnX3JldHVybl92YWxfaWZfZmFpbCAodXBsb2FkICE9IE5VTEwsIEZBTFNFKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGJ1ZmZlciAhPSBOVUxMLCBGQUxTRSk7Ci0gIHZfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX21ldGEgKGJ1ZmZlcik7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh2X21ldGEgIT0gTlVMTCwgRkFMU0UpOwotCi0gIHVwbG9hZC0+cHJpdi0+YnVmZmVyID0gYnVmZmVyOwotCi0gIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fTUFYX1BMQU5FUzsgaSsrKSB7Ci0gICAgdGV4dHVyZV90eXBlc1tpXSA9IGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKHVwbG9hZC0+Y29udGV4dCwgdl9tZXRhLT5mb3JtYXQsIGkpOwotICB9Ci0KLSAgZ3N0X2J1ZmZlcl9hZGRfdmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YSAoYnVmZmVyLAotICAgICAgR1NUX1ZJREVPX0dMX1RFWFRVUkVfT1JJRU5UQVRJT05fWF9OT1JNQUxfWV9OT1JNQUwsIDEsIHRleHR1cmVfdHlwZXMsCi0gICAgICBfcGVyZm9ybV9mb3JfZ2xfdGV4dHVyZV91cGxvYWRfbWV0YSwgZ3N0X29iamVjdF9yZWYgKHVwbG9hZCksCi0gICAgICBnc3Rfb2JqZWN0X3JlZiwgZ3N0X29iamVjdF91bnJlZik7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWRtZXRhLmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1cGxvYWRtZXRhLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5OWJlMmEuLjAwMDAwMDAKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXBsb2FkbWV0YS5oCisrKyAvZGV2L251bGwKQEAgLTEsNzkgKzAsMCBAQAotLyoKLSAqIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSAyMDEyIE1hdHRoZXcgV2F0ZXJzIDx5c3RyZWUwMEBnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9HTF9VUExPQURfTUVUQV9IX18KLSNkZWZpbmUgX19HU1RfR0xfVVBMT0FEX01FVEFfSF9fCi0KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSNpbmNsdWRlIDxnc3QvZ3N0bWVtb3J5Lmg+Ci0KLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xfZndkLmg+Ci0KLUdfQkVHSU5fREVDTFMKLQotR1R5cGUgZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF90eXBlICh2b2lkKTsKLSNkZWZpbmUgR1NUX1RZUEVfR0xfVVBMT0FEX01FVEEgKGdzdF9nbF91cGxvYWRfbWV0YV9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfR0xfVVBMT0FEX01FVEEob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfR0xfVVBMT0FEX01FVEEsR3N0R0xVcGxvYWRNZXRhKSkKLSNkZWZpbmUgR1NUX0dMX1VQTE9BRF9NRVRBX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9HTF9VUExPQURfTUVUQSxHc3RHTFVwbG9hZE1ldGFDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19HTF9VUExPQURfTUVUQShvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9HTF9VUExPQURfTUVUQSkpCi0jZGVmaW5lIEdTVF9JU19HTF9VUExPQURfTUVUQV9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfR0xfVVBMT0FEX01FVEEpKQotI2RlZmluZSBHU1RfR0xfVVBMT0FEX01FVEFfQ0FTVChvYmopICgoR3N0R0xVcGxvYWRNZXRhKikob2JqKSkKLQotLyoqCi0gKiBHc3RHTFVwbG9hZE1ldGEKLSAqCi0gKiBPcGFxdWUgI0dzdEdMVXBsb2FkTWV0YSBvYmplY3QKLSAqLwotc3RydWN0IF9Hc3RHTFVwbG9hZE1ldGEKLXsKLSAgLyogPHByaXZhdGU+ICovCi0gIEdzdE9iamVjdCAgICAgICAgcGFyZW50OwotCi0gIEdzdEdMQ29udGV4dCAgICAqY29udGV4dDsKLQotICAvKiBpbnB1dCBkYXRhICovCi0gIEdzdFZpZGVvSW5mbyAgICAgaW5mbzsKLQotICAvKiA8cHJpdmF0ZT4gKi8KLSAgR3N0R0xVcGxvYWRNZXRhUHJpdmF0ZSAqcHJpdjsKLQotICBncG9pbnRlciBfcmVzZXJ2ZWRbR1NUX1BBRERJTkddOwotfTsKLQotLyoqCi0gKiBHc3RHTFVwbG9hZE1ldGFDbGFzczoKLSAqCi0gKiBUaGUgI0dzdEdMVXBsb2FkTWV0YUNsYXNzIHN0cnVjdCBvbmx5IGNvbnRhaW5zIHByaXZhdGUgZGF0YQotICovCi1zdHJ1Y3QgX0dzdEdMVXBsb2FkTWV0YUNsYXNzCi17Ci0gIEdzdE9iamVjdENsYXNzIG9iamVjdF9jbGFzczsKLX07Ci0KLUdzdEdMVXBsb2FkTWV0YSAqIGdzdF9nbF91cGxvYWRfbWV0YV9uZXcgICAgICAgICAgICAoR3N0R0xDb250ZXh0ICogY29udGV4dCk7Ci0KLXZvaWQgICAgICAgICAgIGdzdF9nbF91cGxvYWRfbWV0YV9zZXRfZm9ybWF0ICAgIChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQsIEdzdFZpZGVvSW5mbyAqIGluZm8pOwotR3N0VmlkZW9JbmZvICogZ3N0X2dsX3VwbG9hZF9tZXRhX2dldF9mb3JtYXQgICAgKEdzdEdMVXBsb2FkTWV0YSAqIHVwbG9hZCk7Ci0KLWdib29sZWFuICAgICAgIGdzdF9nbF91cGxvYWRfbWV0YV9hZGRfdG9fYnVmZmVyIChHc3RHTFVwbG9hZE1ldGEgKiB1cGxvYWQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0KLUdfRU5EX0RFQ0xTCi0KLSNlbmRpZiAvKiBfX0dTVF9HTF9VUExPQURfTUVUQV9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmMgYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5jCmluZGV4IDBjMDY0MmEuLjAyOTBlZmIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuYwpAQCAtMjQsNiArMjQsNyBAQAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z2xpYi9ncHJpbnRmLmg+CiAKICNpbmNsdWRlICJnbC5oIgogI2luY2x1ZGUgImdzdGdsdXRpbHMuaCIKQEAgLTM3NCwyMCArMzc1LDY1IEBACiAgIGdzdF9vYmplY3RfdW5yZWYgKGZyYW1lKTsKIH0KIAotc3RhdGljIHZvaWQKLV9jb21waWxlX3NoYWRlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0R0xTaGFkZXIgKiogc2hhZGVyKQorc3RydWN0IF9jb21waWxlX3NoYWRlcgogeworICBHc3RHTFNoYWRlciAqKnNoYWRlcjsKKyAgY29uc3QgZ2NoYXIgKnZlcnRleF9zcmM7CisgIGNvbnN0IGdjaGFyICpmcmFnbWVudF9zcmM7Cit9OworCitzdGF0aWMgdm9pZAorX2NvbXBpbGVfc2hhZGVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgX2NvbXBpbGVfc2hhZGVyICpkYXRhKQoreworICBHc3RHTFNoYWRlciAqc2hhZGVyOworICBHc3RHTFNMU3RhZ2UgKnZlcnQsICpmcmFnOwogICBHRXJyb3IgKmVycm9yID0gTlVMTDsKIAotICBnc3RfZ2xfc2hhZGVyX2NvbXBpbGUgKCpzaGFkZXIsICZlcnJvcik7Ci0gIGlmIChlcnJvcikgewotICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAoY29udGV4dCwgIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICBzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ldyAoY29udGV4dCk7CisKKyAgaWYgKGRhdGEtPnZlcnRleF9zcmMpIHsKKyAgICB2ZXJ0ID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9WRVJURVhfU0hBREVSLAorICAgICAgICBHU1RfR0xTTF9WRVJTSU9OX05PTkUsCisgICAgICAgIEdTVF9HTFNMX1BST0ZJTEVfRVMgfCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksIGRhdGEtPnZlcnRleF9zcmMpOworICAgIGlmICghZ3N0X2dsc2xfc3RhZ2VfY29tcGlsZSAodmVydCwgJmVycm9yKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAodmVydCwgIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAodmVydCk7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBpZiAoIWdzdF9nbF9zaGFkZXJfYXR0YWNoIChzaGFkZXIsIHZlcnQpKSB7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICAgICAgcmV0dXJuOworICAgIH0KKyAgfQorCisgIGlmIChkYXRhLT5mcmFnbWVudF9zcmMpIHsKKyAgICBmcmFnID0gZ3N0X2dsc2xfc3RhZ2VfbmV3X3dpdGhfc3RyaW5nIChjb250ZXh0LCBHTF9GUkFHTUVOVF9TSEFERVIsCisgICAgICAgIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwKKyAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyB8IEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwKKyAgICAgICAgZGF0YS0+ZnJhZ21lbnRfc3JjKTsKKyAgICBpZiAoIWdzdF9nbHNsX3N0YWdlX2NvbXBpbGUgKGZyYWcsICZlcnJvcikpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGZyYWcsICIlcyIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGZyYWcpOworICAgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgICAgaWYgKCFnc3RfZ2xfc2hhZGVyX2F0dGFjaCAoc2hhZGVyLCBmcmFnKSkgeworICAgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICAgIHJldHVybjsKKyAgICB9CisgIH0KKworICBpZiAoIWdzdF9nbF9zaGFkZXJfbGluayAoc2hhZGVyLCAmZXJyb3IpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2hhZGVyLCAiJXMiLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CiAgICAgZXJyb3IgPSBOVUxMOwogICAgIGdzdF9nbF9jb250ZXh0X2NsZWFyX3NoYWRlciAoY29udGV4dCk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAoKnNoYWRlcik7Ci0gICAgKnNoYWRlciA9IE5VTEw7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKKyAgICByZXR1cm47CiAgIH0KKworICAqZGF0YS0+c2hhZGVyID0gc2hhZGVyOwogfQogCiAvKiBDYWxsZWQgYnkgZ2xmaWx0ZXIgKi8KQEAgLTM5NSwxOCArNDQxLDE3IEBACiBnc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBjb25zdCBnY2hhciAqIHZlcnRfc3JjLAogICAgIGNvbnN0IGdjaGFyICogZnJhZ19zcmMsIEdzdEdMU2hhZGVyICoqIHNoYWRlcikKIHsKKyAgc3RydWN0IF9jb21waWxlX3NoYWRlciBkYXRhOworCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChmcmFnX3NyYyAhPSBOVUxMIHx8IHZlcnRfc3JjICE9IE5VTEwsIEZBTFNFKTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNoYWRlciAhPSBOVUxMLCBGQUxTRSk7CiAKLSAgKnNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb250ZXh0KTsKLQotICBpZiAoZnJhZ19zcmMpCi0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlICgqc2hhZGVyLCBmcmFnX3NyYyk7Ci0gIGlmICh2ZXJ0X3NyYykKLSAgICBnc3RfZ2xfc2hhZGVyX3NldF92ZXJ0ZXhfc291cmNlICgqc2hhZGVyLCB2ZXJ0X3NyYyk7CisgIGRhdGEuc2hhZGVyID0gc2hhZGVyOworICBkYXRhLnZlcnRleF9zcmMgPSB2ZXJ0X3NyYzsKKyAgZGF0YS5mcmFnbWVudF9zcmMgPSBmcmFnX3NyYzsKIAogICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LCAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2NvbXBpbGVfc2hhZGVyLAotICAgICAgc2hhZGVyKTsKKyAgICAgICZkYXRhKTsKIAogICByZXR1cm4gKnNoYWRlciAhPSBOVUxMOwogfQpAQCAtNDE2LDggKzQ2MSw3IEBACiB7CiAgIHZhX2xpc3QgYXJnczsKIAotICBpZiAoZXJyb3JfbWVzc2FnZSkKLSAgICBnX2ZyZWUgKGVycm9yX21lc3NhZ2UpOworICBnX2ZyZWUgKGVycm9yX21lc3NhZ2UpOwogCiAgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwogICBlcnJvcl9tZXNzYWdlID0gZ19zdHJkdXBfdnByaW50ZiAoZm9ybWF0LCBhcmdzKTsKQEAgLTQ1Miw2ICs0OTYsMTkgQEAKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9DT05URVhUKTsKIAorc3RhdGljIHZvaWQKK19pbml0X2NvbnRleHRfZGVidWcgKHZvaWQpCit7CisjaWZuZGVmIEdTVF9ESVNBQkxFX0dTVF9ERUJVRworICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgX2luaXQgPSAwOworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJl9pbml0KSkgeworICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKEdTVF9DQVRfQ09OVEVYVCwgIkdTVF9DT05URVhUIik7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZfaW5pdCwgMSk7CisgIH0KKyNlbmRpZgorfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIHBhZF9xdWVyeSAoY29uc3QgR1ZhbHVlICogaXRlbSwgR1ZhbHVlICogdmFsdWUsIGdwb2ludGVyIHVzZXJfZGF0YSkKIHsKQEAgLTQ1OSw2ICs1MTYsOCBAQAogICBHc3RRdWVyeSAqcXVlcnkgPSB1c2VyX2RhdGE7CiAgIGdib29sZWFuIHJlczsKIAorICBfaW5pdF9jb250ZXh0X2RlYnVnICgpOworCiAgIHJlcyA9IGdzdF9wYWRfcGVlcl9xdWVyeSAocGFkLCBxdWVyeSk7CiAKICAgaWYgKHJlcykgewpAQCAtNDk1LDEzICs1NTQsMTQgQEAKICAgcmV0dXJuIGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKCZyZXMpOwogfQogCi1zdGF0aWMgR3N0UXVlcnkgKgotX2dzdF9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBncG9pbnRlciBwdHIsIGNvbnN0IGdjaGFyICogZGlzcGxheV90eXBlKQorc3RhdGljIHZvaWQKK19nc3RfY29udGV4dF9xdWVyeSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIGNvbnN0IGdjaGFyICogZGlzcGxheV90eXBlKQogewogICBHc3RRdWVyeSAqcXVlcnk7CiAgIEdzdENvbnRleHQgKmN0eHQ7CiAKKyAgX2luaXRfY29udGV4dF9kZWJ1ZyAoKTsKKwogICAvKiAgMmEpIFF1ZXJ5IGRvd25zdHJlYW0gd2l0aCBHU1RfUVVFUllfQ09OVEVYVCBmb3IgdGhlIGNvbnRleHQgYW5kCiAgICAqICAgICAgY2hlY2sgaWYgZG93bnN0cmVhbSBhbHJlYWR5IGhhcyBhIGNvbnRleHQgb2YgdGhlIHNwZWNpZmljIHR5cGUKICAgICogIDJiKSBRdWVyeSB1cHN0cmVhbSBhcyBhYm92ZS4KQEAgLTUxMSwxMCArNTcxLDEyIEBACiAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7CiAgICAgR1NUX0NBVF9JTkZPX09CSkVDVCAoR1NUX0NBVF9DT05URVhULCBlbGVtZW50LAogICAgICAgICAiZm91bmQgY29udGV4dCAoJXApIGluIGRvd25zdHJlYW0gcXVlcnkiLCBjdHh0KTsKKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY3R4dCk7CiAgIH0gZWxzZSBpZiAoZ3N0X2dsX3J1bl9xdWVyeSAoZWxlbWVudCwgcXVlcnksIEdTVF9QQURfU0lOSykpIHsKICAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjdHh0KTsKICAgICBHU1RfQ0FUX0lORk9fT0JKRUNUIChHU1RfQ0FUX0NPTlRFWFQsIGVsZW1lbnQsCiAgICAgICAgICJmb3VuZCBjb250ZXh0ICglcCkgaW4gdXBzdHJlYW0gcXVlcnkiLCBjdHh0KTsKKyAgICBnc3RfZWxlbWVudF9zZXRfY29udGV4dCAoZWxlbWVudCwgY3R4dCk7CiAgIH0gZWxzZSB7CiAgICAgLyogMykgUG9zdCBhIEdTVF9NRVNTQUdFX05FRURfQ09OVEVYVCBtZXNzYWdlIG9uIHRoZSBidXMgd2l0aAogICAgICAqICAgIHRoZSByZXF1aXJlZCBjb250ZXh0IHR5cGUgYW5kIGFmdGVyd2FyZHMgY2hlY2sgaWYgYQpAQCAtNTM3LDEwMyArNTk5LDMzIEBACiAgICAqIGlzIHJlcXVpcmVkIHRvIHVwZGF0ZSB0aGUgZGlzcGxheV9wdHIgb3IgY2FsbCBnc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0KCkuCiAgICAqLwogCi0gIHJldHVybiBxdWVyeTsKKyAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CiB9CiAKIHN0YXRpYyB2b2lkCiBnc3RfZ2xfZGlzcGxheV9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0R0xEaXNwbGF5ICoqIGRpc3BsYXlfcHRyKQogewotICBHc3RDb250ZXh0ICpjdHh0ID0gTlVMTDsKLSAgR3N0UXVlcnkgKnF1ZXJ5ID0gTlVMTDsKLQotI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKLSAgaWYgKCFHU1RfQ0FUX0NPTlRFWFQpCi0gICAgR1NUX0RFQlVHX0NBVEVHT1JZX0dFVCAoR1NUX0NBVF9DT05URVhULCAiR1NUX0NPTlRFWFQiKTsKLSNlbmRpZgotCi0gIHF1ZXJ5ID0KLSAgICAgIF9nc3RfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgZGlzcGxheV9wdHIsIEdTVF9HTF9ESVNQTEFZX0NPTlRFWFRfVFlQRSk7Ci0gIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmN0eHQpOwotCi0gIGlmIChjdHh0ICYmIGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUgKGN0eHQsIEdTVF9HTF9ESVNQTEFZX0NPTlRFWFRfVFlQRSkpIHsKLSAgICBHc3RHTERpc3BsYXkgKnRtcF9kaXNwID0gTlVMTDsKLSAgICBpZiAoZ3N0X2NvbnRleHRfZ2V0X2dsX2Rpc3BsYXkgKGN0eHQsICZ0bXBfZGlzcCkgJiYgdG1wX2Rpc3ApCi0gICAgICAqZGlzcGxheV9wdHIgPSB0bXBfZGlzcDsKLSAgfQotCisgIF9nc3RfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgR1NUX0dMX0RJU1BMQVlfQ09OVEVYVF9UWVBFKTsKICAgaWYgKCpkaXNwbGF5X3B0cikKLSAgICBnb3RvIG91dDsKKyAgICByZXR1cm47CiAKICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfWDExCi0gIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOwotICBxdWVyeSA9IF9nc3RfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgZGlzcGxheV9wdHIsICJnc3QueDExLmRpc3BsYXkuaGFuZGxlIik7Ci0gIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmN0eHQpOwotICBpZiAoY3R4dCAmJiBnc3RfY29udGV4dF9oYXNfY29udGV4dF90eXBlIChjdHh0LCAiZ3N0LngxMS5kaXNwbGF5LmhhbmRsZSIpKSB7Ci0gICAgY29uc3QgR3N0U3RydWN0dXJlICpzOwotICAgIERpc3BsYXkgKmRpc3BsYXk7Ci0KLSAgICBzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY3R4dCk7Ci0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCAiZGlzcGxheSIsIEdfVFlQRV9QT0lOVEVSLCAmZGlzcGxheSwgTlVMTCkKLSAgICAgICAgJiYgZGlzcGxheSkgewotICAgICAgKmRpc3BsYXlfcHRyID0KLSAgICAgICAgICAoR3N0R0xEaXNwbGF5ICopIGdzdF9nbF9kaXNwbGF5X3gxMV9uZXdfd2l0aF9kaXNwbGF5IChkaXNwbGF5KTsKLSAgICB9Ci0gIH0KLQorICBfZ3N0X2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsICJnc3QueDExLmRpc3BsYXkuaGFuZGxlIik7CiAgIGlmICgqZGlzcGxheV9wdHIpCi0gICAgZ290byBvdXQ7CisgICAgcmV0dXJuOwogI2VuZGlmCiAKICNpZiBHU1RfR0xfSEFWRV9XSU5ET1dfV0FZTEFORAotICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKLSAgcXVlcnkgPQotICAgICAgX2dzdF9jb250ZXh0X3F1ZXJ5IChlbGVtZW50LCBkaXNwbGF5X3B0ciwKLSAgICAgICJHc3RXYXlsYW5kRGlzcGxheUhhbmRsZUNvbnRleHRUeXBlIik7Ci0gIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmN0eHQpOwotICBpZiAoY3R4dAotICAgICAgJiYgZ3N0X2NvbnRleHRfaGFzX2NvbnRleHRfdHlwZSAoY3R4dCwKLSAgICAgICAgICAiR3N0V2F5bGFuZERpc3BsYXlIYW5kbGVDb250ZXh0VHlwZSIpKSB7Ci0gICAgY29uc3QgR3N0U3RydWN0dXJlICpzOwotICAgIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5OwotCi0gICAgcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGN0eHQpOwotICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldCAocywgImRpc3BsYXkiLCBHX1RZUEVfUE9JTlRFUiwgJmRpc3BsYXksIE5VTEwpCi0gICAgICAgICYmIGRpc3BsYXkpIHsKLSAgICAgICpkaXNwbGF5X3B0ciA9Ci0gICAgICAgICAgKEdzdEdMRGlzcGxheSAqKSBnc3RfZ2xfZGlzcGxheV93YXlsYW5kX25ld193aXRoX2Rpc3BsYXkgKGRpc3BsYXkpOwotICAgIH0KLSAgfQotCisgIF9nc3RfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgIkdzdFdheWxhbmREaXNwbGF5SGFuZGxlQ29udGV4dFR5cGUiKTsKICAgaWYgKCpkaXNwbGF5X3B0cikKLSAgICBnb3RvIG91dDsKKyAgICByZXR1cm47CiAjZW5kaWYKLQotb3V0OgotICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKIH0KIAogc3RhdGljIHZvaWQKLWdzdF9nbF9jb250ZXh0X3F1ZXJ5IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0R0xDb250ZXh0ICoqIGNvbnRleHRfcHRyKQorZ3N0X2dsX2NvbnRleHRfcXVlcnkgKEdzdEVsZW1lbnQgKiBlbGVtZW50KQogewotICBHc3RDb250ZXh0ICpjdHh0OwotICBHc3RRdWVyeSAqcXVlcnk7Ci0KLSNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCi0gIGlmICghR1NUX0NBVF9DT05URVhUKQotICAgIEdTVF9ERUJVR19DQVRFR09SWV9HRVQgKEdTVF9DQVRfQ09OVEVYVCwgIkdTVF9DT05URVhUIik7Ci0jZW5kaWYKLQotICBxdWVyeSA9IF9nc3RfY29udGV4dF9xdWVyeSAoZWxlbWVudCwgY29udGV4dF9wdHIsICJnc3QuZ2wuYXBwX2NvbnRleHQiKTsKLSAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY3R4dCk7Ci0gIGlmIChjdHh0ICYmIGdzdF9jb250ZXh0X2hhc19jb250ZXh0X3R5cGUgKGN0eHQsICJnc3QuZ2wuYXBwX2NvbnRleHQiKSkgewotICAgIGNvbnN0IEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGN0eHQpOwotICAgIEdzdEdMQ29udGV4dCAqdG1wX2N0eCA9IE5VTEw7Ci0gICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCAiY29udGV4dCIsIEdTVF9HTF9UWVBFX0NPTlRFWFQsICZ0bXBfY3R4LCBOVUxMKQotICAgICAgICAmJiB0bXBfY3R4KQotICAgICAgKmNvbnRleHRfcHRyID0gdG1wX2N0eDsKLSAgfQotCi0gIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworICBfZ3N0X2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsICJnc3QuZ2wuYXBwX2NvbnRleHQiKTsKIH0KIAogLyogIDQpIENyZWF0ZSBhIGNvbnRleHQgYnkgaXRzZWxmIGFuZCBwb3N0IGEgR1NUX01FU1NBR0VfSEFWRV9DT05URVhUCkBAIC02NTAsOSArNjQyLDEzIEBACiAgICAgcmV0dXJuOwogICB9CiAKKyAgX2luaXRfY29udGV4dF9kZWJ1ZyAoKTsKKwogICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfbmV3IChHU1RfR0xfRElTUExBWV9DT05URVhUX1RZUEUsIFRSVUUpOwogICBnc3RfY29udGV4dF9zZXRfZ2xfZGlzcGxheSAoY29udGV4dCwgZGlzcGxheSk7CiAKKyAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQgKGVsZW1lbnQsIGNvbnRleHQpOworCiAgIEdTVF9DQVRfSU5GT19PQkpFQ1QgKEdTVF9DQVRfQ09OVEVYVCwgZWxlbWVudCwKICAgICAgICJwb3N0aW5nIGhhdmUgY29udGV4dCAoJXApIG1lc3NhZ2Ugd2l0aCBkaXNwbGF5ICglcCkiLCBjb250ZXh0LCBkaXNwbGF5KTsKICAgbXNnID0gZ3N0X21lc3NhZ2VfbmV3X2hhdmVfY29udGV4dCAoR1NUX09CSkVDVF9DQVNUIChlbGVtZW50KSwgY29udGV4dCk7CkBAIC02OTMsNyArNjg5LDcgQEAKICAgaWYgKCpjb250ZXh0X3B0cikKICAgICBnb3RvIGRvbmU7CiAKLSAgZ3N0X2dsX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQsIGNvbnRleHRfcHRyKTsKKyAgZ3N0X2dsX2NvbnRleHRfcXVlcnkgKGVsZW1lbnQpOwogCiBkb25lOgogICByZXR1cm4gKmRpc3BsYXlfcHRyICE9IE5VTEw7CkBAIC05MDgsNiArOTA0LDI1IEBACiAgIHJldHVybiBwbGFuZV9zaXplOwogfQogCisvKiBmaW5kIHRoZSBkaWZmZXJlbmNlIGJldHdlZW4gdGhlIHN0YXJ0IG9mIHRoZSBwbGFuZSBhbmQgd2hlcmUgdGhlIHZpZGVvCisgKiBkYXRhIHN0YXJ0cyBpbiB0aGUgcGxhbmUgKi8KK2dzaXplCitnc3RfZ2xfZ2V0X3BsYW5lX3N0YXJ0IChHc3RWaWRlb0luZm8gKiBpbmZvLCBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwKKyAgICBndWludCBwbGFuZSkKK3sKKyAgZ3NpemUgcGxhbmVfc3RhcnQ7CisgIGdpbnQgaTsKKworICAvKiBmaW5kIHRoZSBzdGFydCBvZiB0aGUgcGxhbmUgZGF0YSBpbmNsdWRpbmcgcGFkZGluZyAqLworICBwbGFuZV9zdGFydCA9IDA7CisgIGZvciAoaSA9IDA7IGkgPCBwbGFuZTsgaSsrKSB7CisgICAgcGxhbmVfc3RhcnQgKz0gZ3N0X2dsX2dldF9wbGFuZV9kYXRhX3NpemUgKGluZm8sIHZhbGlnbiwgaSk7CisgIH0KKworICAvKiBvZmZzZXQgYmV0d2VlbiB0aGUgcGxhbmUgZGF0YSBzdGFydCBhbmQgd2hlcmUgdGhlIHZpZGVvIGZyYW1lIHN0YXJ0cyAqLworICByZXR1cm4gKEdTVF9WSURFT19JTkZPX1BMQU5FX09GRlNFVCAoaW5mbywgcGxhbmUpKSAtIHBsYW5lX3N0YXJ0OworfQorCiBHc3RDYXBzICoKIGdzdF9nbF9jYXBzX3JlcGxhY2VfYWxsX2NhcHNfZmVhdHVyZXMgKGNvbnN0IEdzdENhcHMgKiBjYXBzLAogICAgIGNvbnN0IGdjaGFyICogZmVhdHVyZV9uYW1lKQpAQCAtOTMyLDMgKzk0NywxMzIgQEAKIAogICByZXR1cm4gdG1wOwogfQorCisvKioKKyAqIGdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFzazoKKyAqIEB2YWx1ZTogYW4gaW5pdGlhbGl6ZWQgI0dWYWx1ZSBvZiB0eXBlIEdfVFlQRV9TVFJJTkcKKyAqCisgKiBTZWUgZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldF9mcm9tX21hc2soKSBmb3Igd2hhdCBlbnRhaWxzIGEgbWFzaworICoKKyAqIFJldHVybnM6IHRoZSBtYXNrIG9mICNHc3RHTFRleHR1cmVUYXJnZXQncyBpbiBAdmFsdWUKKyAqLworR3N0R0xUZXh0dXJlVGFyZ2V0Citnc3RfZ2xfdmFsdWVfZ2V0X3RleHR1cmVfdGFyZ2V0X21hc2sgKGNvbnN0IEdWYWx1ZSAqIHRhcmdldHMpCit7CisgIGd1aW50IG5ld190YXJnZXRzID0gMDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAodGFyZ2V0cyAhPSBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORSk7CisKKyAgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICh0YXJnZXRzLCBHX1RZUEVfU1RSSU5HKSkgeworICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQ7CisgICAgY29uc3QgZ2NoYXIgKnN0cjsKKworICAgIHN0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodGFyZ2V0cyk7CisgICAgdGFyZ2V0ID0gZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X2Zyb21fc3RyaW5nIChzdHIpOworCisgICAgaWYgKHRhcmdldCkKKyAgICAgIG5ld190YXJnZXRzIHw9IDEgPDwgdGFyZ2V0OworICB9IGVsc2UgaWYgKEdfVFlQRV9DSEVDS19WQUxVRV9UWVBFICh0YXJnZXRzLCBHU1RfVFlQRV9MSVNUKSkgeworICAgIGdpbnQgaiwgbTsKKworICAgIG0gPSBnc3RfdmFsdWVfbGlzdF9nZXRfc2l6ZSAodGFyZ2V0cyk7CisgICAgZm9yIChqID0gMDsgaiA8IG07IGorKykgeworICAgICAgY29uc3QgR1ZhbHVlICp2YWwgPSBnc3RfdmFsdWVfbGlzdF9nZXRfdmFsdWUgKHRhcmdldHMsIGopOworICAgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldDsKKyAgICAgIGNvbnN0IGdjaGFyICpzdHI7CisKKyAgICAgIHN0ciA9IGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsKTsKKyAgICAgIHRhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoc3RyKTsKKyAgICAgIGlmICh0YXJnZXQpCisgICAgICAgIG5ld190YXJnZXRzIHw9IDEgPDwgdGFyZ2V0OworICAgIH0KKyAgfQorCisgIHJldHVybiBuZXdfdGFyZ2V0czsKK30KKworLyoqCisgKiBnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0OgorICogQHZhbHVlOiBhbiBpbml0aWFsaXplZCAjR1ZhbHVlIG9mIHR5cGUgR19UWVBFX1NUUklORworICogQHRhcmdldDogYSAjR3N0R0xUZXh0dXJlVGFyZ2V0J3MKKyAqCisgKiBSZXR1cm5zOiB3aGV0aGVyIHRoZSBAdGFyZ2V0IGNvdWxkIGJlIHNldCBvbiBAdmFsdWUKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXQgKEdWYWx1ZSAqIHZhbHVlLCBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0KQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAodmFsdWUgIT0gTlVMTCwgRkFMU0UpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAodGFyZ2V0ICE9IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9OT05FLCBGQUxTRSk7CisKKyAgaWYgKHRhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICh2YWx1ZSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEX1NUUik7CisgIH0gZWxzZSBpZiAodGFyZ2V0ID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICh2YWx1ZSwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRV9TVFIpOworICB9IGVsc2UgaWYgKHRhcmdldCA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAodmFsdWUsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSKTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGd1aW50NjQKK19nc3RfZ2xfbG9nMl9pbnQ2NCAoZ3VpbnQ2NCB2YWx1ZSkKK3sKKyAgZ3VpbnQ2NCByZXQgPSAwOworCisgIHdoaWxlICh2YWx1ZSA+Pj0gMSkKKyAgICByZXQrKzsKKworICByZXR1cm4gcmV0OworfQorCisvKioKKyAqIGdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrOgorICogQHZhbHVlOiBhbiB1bmluaXRpYWxpemVkICNHVmFsdWUKKyAqIEB0YXJnZXRfbWFzazogYSBiaXR3aXNlIG1hc2sgb2YgI0dzdEdMVGV4dHVyZVRhcmdldCdzCisgKgorICogQSBtYXNrIGlzIGEgYml0d2lzZSBPUiBvZiAoMSA8PCB0YXJnZXQpIHdoZXJlIHRhcmdldCBpcyBhIHZhbGlkCisgKiAjR3N0R0xUZXh0dXJlVGFyZ2V0CisgKgorICogUmV0dXJuczogd2hldGhlciB0aGUgQHRhcmdldF9tYXNrIGNvdWxkIGJlIHNldCBvbiBAdmFsdWUKKyAqLworZ2Jvb2xlYW4KK2dzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrIChHVmFsdWUgKiB2YWx1ZSwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0X21hc2spCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh2YWx1ZSAhPSBOVUxMLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0YXJnZXRfbWFzayAhPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfTk9ORSwgRkFMU0UpOworCisgIGlmICgodGFyZ2V0X21hc2sgJiAodGFyZ2V0X21hc2sgLSAxKSkgPT0gMCkgeworICAgIC8qIG9ubHkgb25lIHRleHR1cmUgdGFyZ2V0IHNldCAqLworICAgIGdfdmFsdWVfaW5pdCAodmFsdWUsIEdfVFlQRV9TVFJJTkcpOworICAgIHJldHVybiBnc3RfZ2xfdmFsdWVfc2V0X3RleHR1cmVfdGFyZ2V0ICh2YWx1ZSwKKyAgICAgICAgX2dzdF9nbF9sb2cyX2ludDY0ICh0YXJnZXRfbWFzaykpOworICB9IGVsc2UgeworICAgIEdWYWx1ZSBpdGVtID0gR19WQUxVRV9JTklUOworICAgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgICAgZ192YWx1ZV9pbml0ICh2YWx1ZSwgR1NUX1RZUEVfTElTVCk7CisgICAgZ192YWx1ZV9pbml0ICgmaXRlbSwgR19UWVBFX1NUUklORyk7CisgICAgaWYgKHRhcmdldF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKSkgeworICAgICAgZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldCAoJml0ZW0sIEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCk7CisgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKHZhbHVlLCAmaXRlbSk7CisgICAgICByZXQgPSBUUlVFOworICAgIH0KKyAgICBpZiAodGFyZ2V0X21hc2sgJiAoMSA8PCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKSkgeworICAgICAgZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldCAoJml0ZW0sIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpOworICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICh2YWx1ZSwgJml0ZW0pOworICAgICAgcmV0ID0gVFJVRTsKKyAgICB9CisgICAgaWYgKHRhcmdldF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykpIHsKKyAgICAgIGdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXQgKCZpdGVtLAorICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpOworICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICh2YWx1ZSwgJml0ZW0pOworICAgICAgcmV0ID0gVFJVRTsKKyAgICB9CisKKyAgICByZXR1cm4gcmV0OworICB9Cit9CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdXRpbHMuaAppbmRleCBlZTYwNmUwLi4xYzVhYjEyIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x1dGlscy5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHV0aWxzLmgKQEAgLTEwNiw5ICsxMDYsMTYgQEAKICAgICBHc3RRdWVyeSAqIHF1ZXJ5LCBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uKTsKIGdzaXplIGdzdF9nbF9nZXRfcGxhbmVfZGF0YV9zaXplIChHc3RWaWRlb0luZm8gKiBpbmZvLCBHc3RWaWRlb0FsaWdubWVudCAqIGFsaWduLAogICAgIGd1aW50IHBsYW5lKTsKK2dzaXplIGdzdF9nbF9nZXRfcGxhbmVfc3RhcnQgKEdzdFZpZGVvSW5mbyAqIGluZm8sIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLAorICAgIGd1aW50IHBsYW5lKTsKIEdzdENhcHMgKiBnc3RfZ2xfY2Fwc19yZXBsYWNlX2FsbF9jYXBzX2ZlYXR1cmVzIChjb25zdCBHc3RDYXBzICogY2FwcywKICAgICBjb25zdCBnY2hhciAqIGZlYXR1cmVfbmFtZSk7CiAKK2dib29sZWFuIGdzdF9nbF92YWx1ZV9zZXRfdGV4dHVyZV90YXJnZXRfZnJvbV9tYXNrIChHVmFsdWUgKiB2YWx1ZSwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0X21hc2spOworZ2Jvb2xlYW4gZ3N0X2dsX3ZhbHVlX3NldF90ZXh0dXJlX3RhcmdldCAoR1ZhbHVlICogdmFsdWUsIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQpOworR3N0R0xUZXh0dXJlVGFyZ2V0IGdzdF9nbF92YWx1ZV9nZXRfdGV4dHVyZV90YXJnZXRfbWFzayAoY29uc3QgR1ZhbHVlICogdmFsdWUpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogX19HU1RfR0xfVVRJTFNfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuYwppbmRleCBlYmU0ZWQzLi43ZDQ0ODYwIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmMKQEAgLTIxLDcgKzIxLDcgQEAKICAqLwogCiAvKioKLSAqIFNFQ1RJT046dmlld2NvbnZlcnQKKyAqIFNFQ1RJT046Z3N0Z2x2aWV3Y29udmVydAogICoKICAqIENvbnZlcnQgc3RlcmVvc2NvcGljL211bHRpdmlldyB2aWRlbyB1c2luZyBmcmFnbWVudCBzaGFkZXJzLgogICovCkBAIC0zMSw2ICszMSw3IEBACiAjZW5kaWYKIAogI2luY2x1ZGUgImdzdGdsdmlld2NvbnZlcnQuaCIKKyNpbmNsdWRlIDxnc3QvdmlkZW8vZ3N0dmlkZW9hZmZpbmV0cmFuc2Zvcm1hdGlvbm1ldGEuaD4KIAogI2RlZmluZSBVU0lOR19PUEVOR0woY29udGV4dCkgKGdzdF9nbF9jb250ZXh0X2NoZWNrX2dsX3ZlcnNpb24gKGNvbnRleHQsIEdTVF9HTF9BUElfT1BFTkdMLCAxLCAwKSkKICNkZWZpbmUgVVNJTkdfT1BFTkdMMyhjb250ZXh0KSAoZ3N0X2dsX2NvbnRleHRfY2hlY2tfZ2xfdmVyc2lvbiAoY29udGV4dCwgR1NUX0dMX0FQSV9PUEVOR0wzLCAzLCAxKSkKQEAgLTM5LDggKzQwLDEyIEBACiAjZGVmaW5lIFVTSU5HX0dMRVMzKGNvbnRleHQpIChnc3RfZ2xfY29udGV4dF9jaGVja19nbF92ZXJzaW9uIChjb250ZXh0LCBHU1RfR0xfQVBJX0dMRVMyLCAzLCAwKSkKIAogc3RhdGljIEdzdFN0YXRpY0NhcHMgY2Fwc190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX0NBUFMgKEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwotICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksICJSR0JBIikpOworR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcoIiBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkgIiksICIKKyAgICAiZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgIgorICAgICJ3aWR0aCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIiwgIgorICAgICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKKyAgICAiZnJhbWVyYXRlID0gIiBHU1RfVklERU9fRlBTX1JBTkdFICIsICIKKyAgICAidGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSB7IDJELCByZWN0YW5nbGUsIGV4dGVybmFsLW9lcyB9ICIpOwogCiAjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBnc3RfZ2xfdmlld19jb252ZXJ0X2RlYnVnCiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChHU1RfQ0FUX0RFRkFVTFQpOwpAQCAtMTQwLDYgKzE0NSwxMyBAQAogICAgICAgfQogfTsKIAorc3RhdGljIGdmbG9hdCBpZGVudGl0eV9tYXRyaXhbXSA9IHsKKyAgMS4wZiwgMC4wZiwgMC4wZiwgMC4wZiwKKyAgMC4wZiwgMS4wZiwgMC4wZiwgMC4wZiwKKyAgMC4wZiwgMC4wZiwgMS4wZiwgMC4wZiwKKyAgMC4wZiwgMC4wZiwgMC4wZiwgMS4wZiwKK307CisKIC8qICpJTkRFTlQtT0ZGKiAqLwogc3RhdGljIGNvbnN0IGdjaGFyICpmcmFnbWVudF9zb3VyY2UgPQogICAiI2lmZGVmIEdMX0VTXG4iCkBAIC0yMjQsMTYgKzIzNiw2IEBACiBzdGF0aWMgY29uc3QgZ2NoYXIgKmZyYWdfb3V0cHV0X3NlcGFyYXRlZCA9CiAgICJnbF9GcmFnRGF0YVswXSA9IGw7XG4iCiAgICJnbF9GcmFnRGF0YVsxXSA9IHI7XG4iOwotCi1zdGF0aWMgY29uc3QgZ2NoYXIgdGV4dF92ZXJ0ZXhfc2hhZGVyW10gPQotICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgImF0dHJpYnV0ZSB2ZWMyIGFfdGV4Y29vcmQ7ICAgXG4iCi0gICJ2YXJ5aW5nIHZlYzIgdl90ZXhjb29yZDsgICAgIFxuIgotICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgInsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICIgICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247IFxuIgotICAiICAgdl90ZXhjb29yZCA9IGFfdGV4Y29vcmQ7ICBcbiIKLSAgIn0gICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwogLyogKklOREVOVC1PTiogKi8KIAogc3RhdGljIGNvbnN0IEdMZmxvYXQgdmVydGljZXNbXSA9IHsKQEAgLTM0OCwxNCArMzUwLDE4IEBACiAgICAgZ3N0X2dsX3ZpZXdfY29udmVydF9yZXNldCAodmlld2NvbnZlcnQpOwogfQogCi1nYm9vbGVhbgotZ3N0X2dsX3ZpZXdfY29udmVydF9zZXRfZm9ybWF0IChHc3RHTFZpZXdDb252ZXJ0ICogdmlld2NvbnZlcnQsCi0gICAgR3N0VmlkZW9JbmZvICogaW5faW5mbywgR3N0VmlkZW9JbmZvICogb3V0X2luZm8pCitzdGF0aWMgZ2Jvb2xlYW4KK192aWV3X2NvbnZlcnRfc2V0X2Zvcm1hdCAoR3N0R0xWaWV3Q29udmVydCAqIHZpZXdjb252ZXJ0LAorICAgIEdzdFZpZGVvSW5mbyAqIGluX2luZm8sIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tX3RhcmdldCwKKyAgICBHc3RWaWRlb0luZm8gKiBvdXRfaW5mbywgR3N0R0xUZXh0dXJlVGFyZ2V0IHRvX3RhcmdldCkKIHsKKyAgZ2Jvb2xlYW4gcGFzc3Rocm91Z2g7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfVklFV19DT05WRVJUICh2aWV3Y29udmVydCksIEZBTFNFKTsKIAogICBpZiAoZ3N0X3ZpZGVvX2luZm9faXNfZXF1YWwgKGluX2luZm8sICZ2aWV3Y29udmVydC0+aW5faW5mbykgJiYKLSAgICAgIGdzdF92aWRlb19pbmZvX2lzX2VxdWFsIChvdXRfaW5mbywgJnZpZXdjb252ZXJ0LT5vdXRfaW5mbykpCisgICAgICBnc3RfdmlkZW9faW5mb19pc19lcXVhbCAob3V0X2luZm8sICZ2aWV3Y29udmVydC0+b3V0X2luZm8pICYmCisgICAgICB2aWV3Y29udmVydC0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9PSBmcm9tX3RhcmdldCAmJgorICAgICAgdmlld2NvbnZlcnQtPnRvX3RleHR1cmVfdGFyZ2V0ID09IHRvX3RhcmdldCkKICAgICByZXR1cm4gVFJVRTsKIAogICBpZiAoR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbl9pbmZvKSAhPSBHU1RfVklERU9fRk9STUFUX1JHQkEgfHwKQEAgLTM2NSwxMiArMzcxLDIyIEBACiAgICAgcmV0dXJuIEZBTFNFOwogICB9CiAKKyAgcGFzc3Rocm91Z2ggPSBnc3RfdmlkZW9faW5mb19pc19lcXVhbCAoaW5faW5mbywgb3V0X2luZm8pICYmCisgICAgICBmcm9tX3RhcmdldCA9PSB0b190YXJnZXQ7CisKKyAgaWYgKCFwYXNzdGhyb3VnaCAmJiB0b190YXJnZXQgIT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJECisgICAgICAmJiB0b190YXJnZXQgIT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkKKyAgICByZXR1cm4gRkFMU0U7CisKICAgLyogRklYTUU6IENvbXBhcmUgd2hhdCBjaGFuZ2VkIGFuZCBkZWNpZGUgaWYgd2UgbmVlZCBhIGZ1bGwgcmVzZXQgb3Igbm90ICovCiAgIEdTVF9PQkpFQ1RfTE9DSyAodmlld2NvbnZlcnQpOwogICBnc3RfZ2xfdmlld19jb252ZXJ0X3Jlc2V0ICh2aWV3Y29udmVydCk7CiAKICAgdmlld2NvbnZlcnQtPmluX2luZm8gPSAqaW5faW5mbzsKICAgdmlld2NvbnZlcnQtPm91dF9pbmZvID0gKm91dF9pbmZvOworICB2aWV3Y29udmVydC0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9IGZyb21fdGFyZ2V0OworICB2aWV3Y29udmVydC0+dG9fdGV4dHVyZV90YXJnZXQgPSB0b190YXJnZXQ7CisgIHZpZXdjb252ZXJ0LT5jYXBzX3Bhc3N0aHJvdWdoID0gcGFzc3Rocm91Z2g7CiAKICAgZ3N0X2J1ZmZlcl9yZXBsYWNlICgmdmlld2NvbnZlcnQtPnByaXYtPnByaW1hcnlfaW4sIE5VTEwpOwogICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZ2aWV3Y29udmVydC0+cHJpdi0+YXV4aWxsaWFyeV9pbiwgTlVMTCk7CkBAIC0zOTUsNiArNDExLDggQEAKIHsKICAgR3N0VmlkZW9JbmZvIGluX2luZm8sIG91dF9pbmZvOwogICBHc3RDYXBzRmVhdHVyZXMgKmluX2ZlYXR1cmVzLCAqb3V0X2ZlYXR1cmVzOworICBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbV90YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CisgIEdzdEdMVGV4dHVyZVRhcmdldCB0b190YXJnZXQgPSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQ7CiAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9WSUVXX0NPTlZFUlQgKHZpZXdjb252ZXJ0KSwgRkFMU0UpOwogICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0NBUFMgKGluX2NhcHMpLCBGQUxTRSk7CkBAIC00MTksNyArNDM3LDMwIEBACiAgIGlmICghZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmb3V0X2luZm8sIG91dF9jYXBzKSkKICAgICByZXR1cm4gRkFMU0U7CiAKLSAgcmV0dXJuIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2Zvcm1hdCAodmlld2NvbnZlcnQsICZpbl9pbmZvLCAmb3V0X2luZm8pOworICB7CisgICAgR3N0U3RydWN0dXJlICppbl9zID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoaW5fY2FwcywgMCk7CisgICAgR3N0U3RydWN0dXJlICpvdXRfcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG91dF9jYXBzLCAwKTsKKworICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZF90eXBlZCAoaW5fcywgInRleHR1cmUtdGFyZ2V0IiwgR19UWVBFX1NUUklORykpIHsKKyAgICAgIGZyb21fdGFyZ2V0ID0KKyAgICAgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoaW5fcywKKyAgICAgICAgICAgICAgInRleHR1cmUtdGFyZ2V0IikpOworICAgIH0KKworICAgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZF90eXBlZCAob3V0X3MsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcpKSB7CisgICAgICB0b190YXJnZXQgPQorICAgICAgICAgIGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChvdXRfcywKKyAgICAgICAgICAgICAgInRleHR1cmUtdGFyZ2V0IikpOworICAgIH0KKworICAgIGlmICh0b190YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkUKKyAgICAgICAgfHwgZnJvbV90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX05PTkUpCisgICAgICAvKiBpbnZhbGlkIGNhcHMgKi8KKyAgICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBfdmlld19jb252ZXJ0X3NldF9mb3JtYXQgKHZpZXdjb252ZXJ0LCAmaW5faW5mbywgZnJvbV90YXJnZXQsCisgICAgICAmb3V0X2luZm8sIHRvX3RhcmdldCk7CiB9CiAKIC8qIEZ1bmN0aW9uIHRoYXQgY2FuIGhhbHZlIHRoZSB2YWx1ZQpAQCAtMTAwMywxMiArMTA0NCwxMSBAQAogICByZXR1cm4gcmVzdWx0OwogfQogCi0KIEdzdENhcHMgKgogZ3N0X2dsX3ZpZXdfY29udmVydF90cmFuc2Zvcm1fY2FwcyAoR3N0R0xWaWV3Q29udmVydCAqIHZpZXdjb252ZXJ0LAogICAgIEdzdFBhZERpcmVjdGlvbiBkaXJlY3Rpb24sIEdzdENhcHMgKiBjYXBzLCBHc3RDYXBzICogZmlsdGVyKQogewotICBnaW50IGk7CisgIGdpbnQgaSwgbjsKICAgR3N0Q2FwcyAqYmFzZV9jYXBzID0gZ3N0X3N0YXRpY19jYXBzX2dldCAoJmNhcHNfdGVtcGxhdGUpOwogICBHc3RDYXBzICpvdXRfY2FwcywgKnRtcF9jYXBzOwogCkBAIC0xMDgzLDEwICsxMTIzLDEwNCBAQAogb3V0OgogICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CiAKKyAgbiA9IGdzdF9jYXBzX2dldF9zaXplIChvdXRfY2Fwcyk7CisgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChvdXRfY2FwcywgaSk7CisKKyAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZHMgKHMsICJ0ZXh0dXJlLXRhcmdldCIsIE5VTEwpOworICB9CisKICAgR1NUX0RFQlVHX09CSkVDVCAodmlld2NvbnZlcnQsICJSZXR1cm5pbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgb3V0X2NhcHMpOwogICByZXR1cm4gb3V0X2NhcHM7CiB9CiAKK3N0YXRpYyBndWludAorX2dldF90YXJnZXRfYml0bWFza19mcm9tX2dfdmFsdWUgKGNvbnN0IEdWYWx1ZSAqIHRhcmdldHMpCit7CisgIGd1aW50IG5ld190YXJnZXRzID0gMDsKKworICBpZiAodGFyZ2V0cyA9PSBOVUxMKSB7CisgICAgbmV3X3RhcmdldHMgPSAxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRDsKKyAgfSBlbHNlIGlmIChHX1RZUEVfQ0hFQ0tfVkFMVUVfVFlQRSAodGFyZ2V0cywgR19UWVBFX1NUUklORykpIHsKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdGFyZ2V0OworICAgIGNvbnN0IGdjaGFyICpzdHI7CisKKyAgICBzdHIgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKHRhcmdldHMpOworICAgIHRhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX3N0cmluZyAoc3RyKTsKKworICAgIGlmICh0YXJnZXQpCisgICAgICBuZXdfdGFyZ2V0cyB8PSAxIDw8IHRhcmdldDsKKyAgfSBlbHNlIGlmIChHX1RZUEVfQ0hFQ0tfVkFMVUVfVFlQRSAodGFyZ2V0cywgR1NUX1RZUEVfTElTVCkpIHsKKyAgICBnaW50IGosIG07CisKKyAgICBtID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3NpemUgKHRhcmdldHMpOworICAgIGZvciAoaiA9IDA7IGogPCBtOyBqKyspIHsKKyAgICAgIGNvbnN0IEdWYWx1ZSAqdmFsID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3ZhbHVlICh0YXJnZXRzLCBqKTsKKyAgICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQ7CisgICAgICBjb25zdCBnY2hhciAqc3RyOworCisgICAgICBzdHIgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbCk7CisgICAgICB0YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9zdHJpbmcgKHN0cik7CisgICAgICBpZiAodGFyZ2V0KQorICAgICAgICBuZXdfdGFyZ2V0cyB8PSAxIDw8IHRhcmdldDsKKyAgICB9CisgIH0KKworICByZXR1cm4gbmV3X3RhcmdldHM7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK19maXhhdGVfdGV4dHVyZV90YXJnZXQgKEdzdEdMVmlld0NvbnZlcnQgKiB2aWV3Y29udmVydCwKKyAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIG90aGVyKQoreworICBHVmFsdWUgaXRlbSA9IEdfVkFMVUVfSU5JVDsKKyAgY29uc3QgR1ZhbHVlICp0YXJnZXRzLCAqb3RoZXJfdGFyZ2V0czsKKyAgZ3VpbnQgdGFyZ2V0c19tYXNrID0gMCwgb3RoZXJfdGFyZ2V0c19tYXNrID0gMCwgcmVzdWx0X21hc2s7CisgIEdzdFN0cnVjdHVyZSAqcywgKnNfb3RoZXI7CisKKyAgb3RoZXIgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChvdGhlcik7CisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgc19vdGhlciA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG90aGVyLCAwKTsKKworICBvdGhlcl90YXJnZXRzID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHNfb3RoZXIsICJ0ZXh0dXJlLXRhcmdldCIpOworICB0YXJnZXRzID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHMsICJ0ZXh0dXJlLXRhcmdldCIpOworCisgIHRhcmdldHNfbWFzayA9IF9nZXRfdGFyZ2V0X2JpdG1hc2tfZnJvbV9nX3ZhbHVlICh0YXJnZXRzKTsKKyAgb3RoZXJfdGFyZ2V0c19tYXNrID0gX2dldF90YXJnZXRfYml0bWFza19mcm9tX2dfdmFsdWUgKG90aGVyX3RhcmdldHMpOworCisgIHJlc3VsdF9tYXNrID0gdGFyZ2V0c19tYXNrICYgb3RoZXJfdGFyZ2V0c19tYXNrOworICBpZiAocmVzdWx0X21hc2sgPT0gMCkgeworICAgIC8qIG5vdGhpbmcgd2UgY2FuIGRvIGhlcmUgKi8KKyAgICByZXR1cm4gZ3N0X2NhcHNfZml4YXRlIChvdGhlcik7CisgIH0KKworICBpZiAoZGlyZWN0aW9uID09IEdTVF9QQURfU0lOSykgeworICAgIHJlc3VsdF9tYXNrICY9CisgICAgICAgICgxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCB8IDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSk7CisgIH0gZWxzZSB7CisgICAgLyogaWYgdGhlIHNyYyBjYXBzIGhhcyAyRCBzdXBwb3J0IHdlIGNhbiAnY29udmVydCcgdG8gYW55dGhpbmcgKi8KKyAgICBpZiAodGFyZ2V0c19tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKSkKKyAgICAgIHJlc3VsdF9tYXNrID0gLTE7CisgICAgZWxzZQorICAgICAgcmVzdWx0X21hc2sgPSBvdGhlcl90YXJnZXRzX21hc2s7CisgIH0KKworICBnX3ZhbHVlX2luaXQgKCZpdGVtLCBHX1RZUEVfU1RSSU5HKTsKKyAgaWYgKHJlc3VsdF9tYXNrICYgKDEgPDwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJEKSkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZpdGVtLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSKTsKKyAgfSBlbHNlIGlmIChyZXN1bHRfbWFzayAmICgxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJml0ZW0sIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSKTsKKyAgfSBlbHNlIGlmIChyZXN1bHRfbWFzayAmICgxIDw8IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJml0ZW0sIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVNfU1RSKTsKKyAgfQorCisgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzLCAidGV4dHVyZS10YXJnZXQiLCAmaXRlbSk7CisKKyAgZ192YWx1ZV91bnNldCAoJml0ZW0pOworCisgIHJldHVybiBnc3RfY2Fwc19maXhhdGUgKG90aGVyKTsKK30KKwogR3N0Q2FwcyAqCiBnc3RfZ2xfdmlld19jb252ZXJ0X2ZpeGF0ZV9jYXBzIChHc3RHTFZpZXdDb252ZXJ0ICogdmlld2NvbnZlcnQsCiAgICAgR3N0UGFkRGlyZWN0aW9uIGRpcmVjdGlvbiwgR3N0Q2FwcyAqIGNhcHMsIEdzdENhcHMgKiBvdGhlcmNhcHMpCkBAIC0xMTU4LDYgKzEyOTIsMTAgQEAKICAgICB9CiAgIH0KIAorICB0bXAgPSBfZml4YXRlX3RleHR1cmVfdGFyZ2V0ICh2aWV3Y29udmVydCwgZGlyZWN0aW9uLCBjYXBzLCBvdGhlcmNhcHMpOworICBnc3RfY2Fwc191bnJlZiAob3RoZXJjYXBzKTsKKyAgb3RoZXJjYXBzID0gdG1wOworCiBkb25lOgogICBHU1RfREVCVUdfT0JKRUNUICh2aWV3Y29udmVydCwgImRpciAlcyBmaXhhdGVkIHRvICUiIEdTVF9QVFJfRk9STUFUCiAgICAgICAiIGFnYWluc3QgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwKQEAgLTEyNTUsNiArMTM5Myw3IEBACiAgIGd1aW50IG91dF93aWR0aCwgb3V0X2hlaWdodDsKICAgR0x1aW50IGZha2VfdGV4dHVyZSA9IDA7ICAgICAgLyogYSBGQk8gbXVzdCBoYXZhIHRleHR1cmUgdG8gaW5pdCAqLwogICBHTGVudW0gaW50ZXJuYWxfZm9ybWF0OworICBnYm9vbGVhbiByZXQgPSBUUlVFOwogCiAgIGdsID0gdmlld2NvbnZlcnQtPmNvbnRleHQtPmdsX3Z0YWJsZTsKICAgb3V0X3dpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKCZ2aWV3Y29udmVydC0+b3V0X2luZm8pOwpAQCAtMTMxMCwxNCArMTQ0OSwxMTEgQEAKICAgaWYgKCFnc3RfZ2xfY29udGV4dF9jaGVja19mcmFtZWJ1ZmZlcl9zdGF0dXMgKHZpZXdjb252ZXJ0LT5jb250ZXh0KSkgewogICAgIGdzdF9nbF9jb250ZXh0X3NldF9lcnJvciAodmlld2NvbnZlcnQtPmNvbnRleHQsCiAgICAgICAgICJHTCBmcmFtZWJ1ZmZlciBzdGF0dXMgaW5jb21wbGV0ZSIpOwotICAgIGdsLT5EZWxldGVUZXh0dXJlcyAoMSwgJmZha2VfdGV4dHVyZSk7Ci0gICAgcmV0dXJuIEZBTFNFOworICAgIHJldCA9IEZBTFNFOwogICB9CiAKICAgLyogdW5iaW5kIHRoZSBGQk8gKi8KKyAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCAwKTsKICAgZ2wtPkJpbmRGcmFtZWJ1ZmZlciAoR0xfRlJBTUVCVUZGRVIsIDApOwogICBnbC0+RGVsZXRlVGV4dHVyZXMgKDEsICZmYWtlX3RleHR1cmUpOwotICByZXR1cm4gVFJVRTsKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdjaGFyICoKK19tYW5nbGVfdGV4dHVyZV9hY2Nlc3MgKGNvbnN0IGdjaGFyICogc3RyLCBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbSwKKyAgICBHc3RHTFRleHR1cmVUYXJnZXQgdG8pCit7CisgIGNvbnN0IGdjaGFyICpmcm9tX3N0ciA9IE5VTEwsICp0b19zdHIgPSBOVUxMOworICBnY2hhciAqcmV0LCAqdG1wOworICBnY2hhciAqcmVnZXhfZmluZDsKKyAgR1JlZ2V4ICpyZWdleDsKKworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpCisgICAgZnJvbV9zdHIgPSAidGV4dHVyZTJEIjsKKyAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSkKKyAgICBmcm9tX3N0ciA9ICJ0ZXh0dXJlMkRSZWN0IjsKKyAgaWYgKGZyb20gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICBmcm9tX3N0ciA9ICJ0ZXh0dXJlMkQiOworCisgIGlmICh0byA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpCisgICAgdG9fc3RyID0gInRleHR1cmUyRCI7CisgIGlmICh0byA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIHRvX3N0ciA9ICJ0ZXh0dXJlMkRSZWN0IjsKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgdG9fc3RyID0gInRleHR1cmUyRCI7CisKKyAgLyogZm9sbG93ZWQgYnkgYW55IGFtb3VudCBvZiB3aGl0ZXNwYWNlIHRoZW4gYSBicmFja2V0ICovCisgIHJlZ2V4X2ZpbmQgPSBnX3N0cmR1cF9wcmludGYgKCIlcyg/PVxccypcXCgpIiwgZnJvbV9zdHIpOworICByZWdleCA9IGdfcmVnZXhfbmV3IChyZWdleF9maW5kLCAwLCAwLCBOVUxMKTsKKyAgdG1wID0gZ19yZWdleF9yZXBsYWNlX2xpdGVyYWwgKHJlZ2V4LCBzdHIsIC0xLCAwLCB0b19zdHIsIDAsIE5VTEwpOworICBnX2ZyZWUgKHJlZ2V4X2ZpbmQpOworICBnX3JlZ2V4X3VucmVmIChyZWdleCk7CisKKyAgaWYgKHRtcCkgeworICAgIHJldCA9IHRtcDsKKyAgfSBlbHNlIHsKKyAgICBHU1RfRklYTUUgKCJDb3VsZG4ndCBtYW5nbGUgdGV4dHVyZSBhY2Nlc3Mgc3VjY2Vzc2Z1bGx5IGZyb20gJXMgdG8gJXMiLAorICAgICAgICBmcm9tX3N0ciwgdG9fc3RyKTsKKyAgICByZXQgPSBnX3N0cmR1cCAoc3RyKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnY2hhciAqCitfbWFuZ2xlX3NhbXBsZXJfdHlwZSAoY29uc3QgZ2NoYXIgKiBzdHIsIEdzdEdMVGV4dHVyZVRhcmdldCBmcm9tLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0bykKK3sKKyAgY29uc3QgZ2NoYXIgKmZyb21fc3RyID0gTlVMTCwgKnRvX3N0ciA9IE5VTEw7CisgIGdjaGFyICpyZXQsICp0bXA7CisgIGdjaGFyICpyZWdleF9maW5kOworICBHUmVnZXggKnJlZ2V4OworCisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkKKyAgICBmcm9tX3N0ciA9ICJzYW1wbGVyMkQiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFKQorICAgIGZyb21fc3RyID0gInNhbXBsZXIyRFJlY3QiOworICBpZiAoZnJvbSA9PSBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfRVhURVJOQUxfT0VTKQorICAgIGZyb21fc3RyID0gInNhbXBsZXJFeHRlcm5hbE9FUyI7CisKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF8yRCkKKyAgICB0b19zdHIgPSAic2FtcGxlcjJEIjsKKyAgaWYgKHRvID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpCisgICAgdG9fc3RyID0gInNhbXBsZXIyRFJlY3QiOworICBpZiAodG8gPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykKKyAgICB0b19zdHIgPSAic2FtcGxlckV4dGVybmFsT0VTIjsKKworICAvKiBmb2xsb3dlZCBieSBzb21lIHdoaXRlc3BhY2UgICovCisgIHJlZ2V4X2ZpbmQgPSBnX3N0cmR1cF9wcmludGYgKCIlcyg/PVxccykiLCBmcm9tX3N0cik7CisgIHJlZ2V4ID0gZ19yZWdleF9uZXcgKHJlZ2V4X2ZpbmQsIDAsIDAsIE5VTEwpOworICB0bXAgPSBnX3JlZ2V4X3JlcGxhY2VfbGl0ZXJhbCAocmVnZXgsIHN0ciwgLTEsIDAsIHRvX3N0ciwgMCwgTlVMTCk7CisgIGdfZnJlZSAocmVnZXhfZmluZCk7CisgIGdfcmVnZXhfdW5yZWYgKHJlZ2V4KTsKKworICBpZiAodG1wKSB7CisgICAgcmV0ID0gdG1wOworICB9IGVsc2UgeworICAgIEdTVF9GSVhNRSAoIkNvdWxkbid0IG1hbmdsZSBzYW1wbGVyIHR5cGUgc3VjY2Vzc2Z1bGx5IGZyb20gJXMgdG8gJXMiLAorICAgICAgICBmcm9tX3N0ciwgdG9fc3RyKTsKKyAgICByZXQgPSBnX3N0cmR1cCAoc3RyKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnY2hhciAqCitfbWFuZ2xlX2V4dGVuc2lvbnMgKGNvbnN0IGdjaGFyICogc3RyLCBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbSkKK3sKKyAgY29uc3QgZ2NoYXIgKmV4dF9zdHIgPSBOVUxMOworCisgIGlmIChmcm9tID09IEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpCisgICAgZXh0X3N0ciA9ICIjZXh0ZW5zaW9uIEdMX09FU19FR0xfaW1hZ2VfZXh0ZXJuYWwgOiByZXF1aXJlXG4iOworCisgIGlmIChleHRfc3RyKSB7CisgICAgcmV0dXJuIGdfc3RyZHVwX3ByaW50ZiAoIiVzJXMiLCBleHRfc3RyLCBzdHIpOworICB9IGVsc2UgeworICAgIHJldHVybiBnX3N0cmR1cCAoc3RyKTsKKyAgfQogfQogCiAvKiBmcmVlIGFmdGVyIHVzZSAqLwpAQCAtMTMyNyw2ICsxNTYzLDggQEAKIHsKICAgY29uc3QgZ2NoYXIgKmlucHV0X3N0ciwgKm91dHB1dF9zdHI7CiAgIGdib29sZWFuIG1vbm9faW5wdXQgPSBGQUxTRTsKKyAgZ2NoYXIgKnRtcCwgKnRtcDI7CisKICAgc3dpdGNoIChpbl9tb2RlKSB7CiAgICAgY2FzZSBHU1RfVklERU9fTVVMVElWSUVXX01PREVfTk9ORToKICAgICBjYXNlIEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9NT05POgpAQCAtMTM3Nyw3ICsxNjE1LDE3IEBACiAgICAgICBicmVhazsKICAgfQogCi0gIHJldHVybiBnX3N0cmR1cF9wcmludGYgKGZyYWdtZW50X3NvdXJjZSwgaW5wdXRfc3RyLCBvdXRwdXRfc3RyKTsKKyAgdG1wID0gZ19zdHJkdXBfcHJpbnRmIChmcmFnbWVudF9zb3VyY2UsIGlucHV0X3N0ciwgb3V0cHV0X3N0cik7CisgIHRtcDIgPSBfbWFuZ2xlX3NhbXBsZXJfdHlwZSAodG1wLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsCisgICAgICB2aWV3Y29udmVydC0+ZnJvbV90ZXh0dXJlX3RhcmdldCk7CisgIGdfZnJlZSAodG1wKTsKKyAgdG1wID0gX21hbmdsZV90ZXh0dXJlX2FjY2VzcyAodG1wMiwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJELAorICAgICAgdmlld2NvbnZlcnQtPmZyb21fdGV4dHVyZV90YXJnZXQpOworICBnX2ZyZWUgKHRtcDIpOworICB0bXAyID0gX21hbmdsZV9leHRlbnNpb25zICh0bXAsIHZpZXdjb252ZXJ0LT5mcm9tX3RleHR1cmVfdGFyZ2V0KTsKKyAgZ19mcmVlICh0bXApOworCisgIHJldHVybiB0bXAyOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTQ0OSw2ICsxNjk3LDE3IEBACiAgICAgICAgICJDYW5ub3QgcGVyZm9ybSBtdWx0aXZpZXcgY29udmVyc2lvbiB3aXRob3V0IE9wZW5HTCBzaGFkZXJzIik7CiAgICAgZ290byBlcnJvcjsKICAgfQorCisgIGlmIChvdXRfbW9kZSA9PSBHU1RfVklERU9fTVVMVElWSUVXX01PREVfU0VQQVJBVEVECisgICAgICB8fCBvdXRfbW9kZSA9PSBHU1RfVklERU9fTVVMVElWSUVXX01PREVfRlJBTUVfQllfRlJBTUUpIHsKKyAgICBpZiAoIWdsLT5EcmF3QnVmZmVycykgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAodmlld2NvbnZlcnQsCisgICAgICAgICAgIlNlcGFyYXRlIHRleHR1cmUgb3V0cHV0IG1vZGUgcmVxdWVzdGVkIGhvd2V2ZXIgdGhlIGN1cnJlbnQgIgorICAgICAgICAgICJPcGVuR0wgQVBJIGRvZXMgbm90IHN1cHBvcnQgZHJhd2luZyB0byBtdWx0aXBsZSBidWZmZXJzIik7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKyAgfQorCiAgIGlmICgoaW5fZmxhZ3MgJiBHU1RfVklERU9fTVVMVElWSUVXX0ZMQUdTX1JJR0hUX1ZJRVdfRklSU1QpID09CiAgICAgICAob3V0X2ZsYWdzICYgR1NUX1ZJREVPX01VTFRJVklFV19GTEFHU19SSUdIVF9WSUVXX0ZJUlNUKSkgewogICAgIGxfaW5kZXggPSAwOwpAQCAtMTUxNiw5ICsxNzc1LDkgQEAKICAgICAgIHRleF9zY2FsZVsxXVswXSwgdGV4X3NjYWxlWzFdWzFdLAogICAgICAgb2Zmc2V0c1swXVswXSwgb2Zmc2V0c1swXVsxXSwgb2Zmc2V0c1sxXVswXSwgb2Zmc2V0c1sxXVsxXSk7CiAgIGZyYWdtZW50X3NvdXJjZV9zdHIgPSBfZ2V0X3NoYWRlcl9zdHJpbmcgKHZpZXdjb252ZXJ0LCBpbl9tb2RlLCBvdXRfbW9kZSk7Ci0vLyBnX3ByaW50ICgiJXNcbiIsIGZyYWdtZW50X3NvdXJjZV9zdHIpOwotICByZXMgPSBnc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyICh2aWV3Y29udmVydC0+Y29udGV4dCwgdGV4dF92ZXJ0ZXhfc2hhZGVyLAotICAgICAgZnJhZ21lbnRfc291cmNlX3N0ciwgJnZpZXdjb252ZXJ0LT5zaGFkZXIpOworICByZXMgPSBnc3RfZ2xfY29udGV4dF9nZW5fc2hhZGVyICh2aWV3Y29udmVydC0+Y29udGV4dCwKKyAgICAgIGdzdF9nbF9zaGFkZXJfc3RyaW5nX3ZlcnRleF9tYXQ0X3RleHR1cmVfdHJhbnNmb3JtLCBmcmFnbWVudF9zb3VyY2Vfc3RyLAorICAgICAgJnZpZXdjb252ZXJ0LT5zaGFkZXIpOwogICBnX2ZyZWUgKGZyYWdtZW50X3NvdXJjZV9zdHIpOwogICBpZiAoIXJlcykKICAgICBnb3RvIGVycm9yOwpAQCAtMTUzNiw2ICsxNzk1LDggQEAKICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJnZpZXdjb252ZXJ0LT5vdXRfaW5mbykpOwogICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF8zZnYgKHZpZXdjb252ZXJ0LT5zaGFkZXIsICJkb3dubWl4IiwKICAgICAgIDIsIEZBTFNFLCAmZG93bm1peF9tYXRyaWNlc1t2aWV3Y29udmVydC0+ZG93bm1peF9tb2RlXVswXVswXSk7CisgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fbWF0cml4XzRmdiAodmlld2NvbnZlcnQtPnNoYWRlciwgInVfdHJhbnNmb3JtYXRpb24iLAorICAgICAgMSwgRkFMU0UsIGlkZW50aXR5X21hdHJpeCk7CiAgIGlmIChpbl9tb2RlID09IEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9TRVBBUkFURUQgfHwKICAgICAgIGluX21vZGUgPT0gR1NUX1ZJREVPX01VTFRJVklFV19NT0RFX0ZSQU1FX0JZX0ZSQU1FKSB7CiAgICAgZ3N0X2dsX3NoYWRlcl9zZXRfdW5pZm9ybV8xaSAodmlld2NvbnZlcnQtPnNoYWRlciwgInRleF9sIiwgbF9pbmRleCk7CkBAIC0xNTcyLDcgKzE4MzMsNiBAQAogICAgIGdsLT5CaW5kQnVmZmVyIChHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCk7CiAgIH0KIAotICBnbC0+QmluZFRleHR1cmUgKEdMX1RFWFRVUkVfMkQsIDApOwogICB2aWV3Y29udmVydC0+aW5pdHRlZCA9IFRSVUU7CiAgIHJldHVybiBUUlVFOwogZXJyb3I6CkBAIC0xNTk0LDYgKzE4NTQsOSBAQAogICB9OwogICBHc3RWaWRlb011bHRpdmlld01vZGUgaW5fbW9kZSA9IHByaXYtPmlucHV0X21vZGU7CiAgIEdzdFZpZGVvTXVsdGl2aWV3TW9kZSBvdXRfbW9kZSA9IHByaXYtPm91dHB1dF9tb2RlOworICBndWludCBmcm9tX2dsX3RhcmdldCA9CisgICAgICBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKHZpZXdjb252ZXJ0LT5mcm9tX3RleHR1cmVfdGFyZ2V0KTsKKyAgR3N0VmlkZW9BZmZpbmVUcmFuc2Zvcm1hdGlvbk1ldGEgKmFmX21ldGE7CiAKICAgZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CiAgIG91dF93aWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIICgmdmlld2NvbnZlcnQtPm91dF9pbmZvKTsKQEAgLTE2MDUsMTIgKzE4NjgsMjIgQEAKICAgfSBlbHNlIHsKICAgICBvdXRfdmlld3MgPSAxOwogICB9CisKKyAgLyogRklYTUU6IHRoZSBhdXhpbGxhcnkgYnVmZmVyIGNvdWxkIGhhdmUgYSBkaWZmZXJlbnQgdHJhbnNmb3JtIG1hdHJpeCAqLworICBhZl9tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fYWZmaW5lX3RyYW5zZm9ybWF0aW9uX21ldGEgKHByaXYtPnByaW1hcnlfaW4pOworICBpZiAoYWZfbWV0YSkKKyAgICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtX21hdHJpeF80ZnYgKHZpZXdjb252ZXJ0LT5zaGFkZXIsCisgICAgICAgICJ1X3RyYW5zZm9ybWF0aW9uIiwgMSwgRkFMU0UsIGFmX21ldGEtPm1hdHJpeCk7CisKICAgLyogYXR0YWNoIHRoZSB0ZXh0dXJlIHRvIHRoZSBGQk8gdG8gcmVuZGVyZXIgdG8gKi8KICAgZm9yIChpID0gMDsgaSA8IG91dF92aWV3czsgaSsrKSB7CisgICAgZ3VpbnQgZ2xfdGFyZ2V0ID0KKyAgICAgICAgZ3N0X2dsX3RleHR1cmVfdGFyZ2V0X3RvX2dsICh2aWV3Y29udmVydC0+dG9fdGV4dHVyZV90YXJnZXQpOworCiAgICAgLyogbmVlZGVkPyAqLwotICAgIGdsLT5CaW5kVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCwgcHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkKTsKKyAgICBnbC0+QmluZFRleHR1cmUgKGdsX3RhcmdldCwgcHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkKTsKICAgICBnbC0+RnJhbWVidWZmZXJUZXh0dXJlMkQgKEdMX0ZSQU1FQlVGRkVSLCBHTF9DT0xPUl9BVFRBQ0hNRU5UMCArIGksCi0gICAgICAgIEdMX1RFWFRVUkVfMkQsIHByaXYtPm91dF90ZXhbaV0tPnRleF9pZCwgMCk7CisgICAgICAgIGdsX3RhcmdldCwgcHJpdi0+b3V0X3RleFtpXS0+dGV4X2lkLCAwKTsKICAgfQogCiAgIGlmIChnbC0+RHJhd0J1ZmZlcnMpCkBAIC0xNjMyLDExICsxOTA1LDExIEBACiAgICAgICByZXR1cm4gRkFMU0U7CiAgICAgfQogICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMSk7Ci0gICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCBwcml2LT5pbl90ZXhbMV0tPnRleF9pZCk7CisgICAgZ2wtPkJpbmRUZXh0dXJlIChmcm9tX2dsX3RhcmdldCwgcHJpdi0+aW5fdGV4WzFdLT50ZXhfaWQpOwogICB9CiAKICAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKLSAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCBwcml2LT5pbl90ZXhbMF0tPnRleF9pZCk7CisgIGdsLT5CaW5kVGV4dHVyZSAoZnJvbV9nbF90YXJnZXQsIHByaXYtPmluX3RleFswXS0+dGV4X2lkKTsKICAgZ2wtPkRyYXdFbGVtZW50cyAoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9TSE9SVCwgTlVMTCk7CiAgIGlmIChnbC0+QmluZFZlcnRleEFycmF5KQogICAgIGdsLT5CaW5kVmVydGV4QXJyYXkgKDApOwpAQCAtMTY1NiwxMSArMTkyOSwyNyBAQAogc3RhdGljIGdib29sZWFuCiBfZ2VuX2J1ZmZlciAoR3N0R0xWaWV3Q29udmVydCAqIHZpZXdjb252ZXJ0LCBHc3RCdWZmZXIgKiogdGFyZ2V0KQogeworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworICBHc3RHTE1lbW9yeUFsbG9jYXRvciAqbWVtX2FsbG9jYXRvcjsKKyAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7CisKICAgKnRhcmdldCA9IGdzdF9idWZmZXJfbmV3ICgpOwotICBpZiAoIWdzdF9nbF9tZW1vcnlfc2V0dXBfYnVmZmVyICh2aWV3Y29udmVydC0+Y29udGV4dCwgTlVMTCwKLSAgICAgICAgICAmdmlld2NvbnZlcnQtPm91dF9pbmZvLCBOVUxMLCAqdGFyZ2V0KSkgeworCisgIGFsbG9jYXRvciA9CisgICAgICBHU1RfQUxMT0NBVE9SIChnc3RfZ2xfbWVtb3J5X2FsbG9jYXRvcl9nZXRfZGVmYXVsdAorICAgICAgKHZpZXdjb252ZXJ0LT5jb250ZXh0KSk7CisgIG1lbV9hbGxvY2F0b3IgPSBHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUiAoYWxsb2NhdG9yKTsKKyAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAodmlld2NvbnZlcnQtPmNvbnRleHQsIE5VTEwsCisgICAgICAmdmlld2NvbnZlcnQtPm91dF9pbmZvLCAwLCBOVUxMLCB2aWV3Y29udmVydC0+dG9fdGV4dHVyZV90YXJnZXQpOworCisgIGlmICghZ3N0X2dsX21lbW9yeV9zZXR1cF9idWZmZXIgKG1lbV9hbGxvY2F0b3IsICp0YXJnZXQsIHBhcmFtcykpIHsKKyAgICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9CisgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CisKICAgZ3N0X2J1ZmZlcl9hZGRfdmlkZW9fbWV0YV9mdWxsICgqdGFyZ2V0LCAwLAogICAgICAgR1NUX1ZJREVPX0lORk9fRk9STUFUICgmdmlld2NvbnZlcnQtPm91dF9pbmZvKSwKICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmdmlld2NvbnZlcnQtPm91dF9pbmZvKSwKQEAgLTE3NzksMTAgKzIwNjgsMjggQEAKICAgICAgIC8qIEx1bWluYW5jZSBmb3JtYXRzIGFyZSBub3QgY29sb3IgcmVuZGVyYWJsZSAqLwogICAgICAgLyogcmVuZGVyZXJpbmcgdG8gYSBmcmFtZWJ1ZmZlciBvbmx5IHJlbmRlcnMgdGhlIGludGVyc2VjdGlvbiBvZiBhbGwKICAgICAgICAqIHRoZSBhdHRhY2htZW50cyBpLmUuIHRoZSBzbWFsbGVzdCBhdHRhY2htZW50IHNpemUgKi8KLSAgICAgIGlmICghcHJpdi0+b3V0X3RleFtqXSkKKyAgICAgIGlmICghcHJpdi0+b3V0X3RleFtqXSkgeworICAgICAgICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworICAgICAgICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jYXRvcjsKKyAgICAgICAgR3N0QWxsb2NhdG9yICphbGxvY2F0b3I7CisgICAgICAgIEdzdFZpZGVvSW5mbyB0ZW1wX2luZm87CisKKyAgICAgICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJnRlbXBfaW5mbywgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLCBvdXRfd2lkdGgsCisgICAgICAgICAgICBvdXRfaGVpZ2h0KTsKKworICAgICAgICBhbGxvY2F0b3IgPQorICAgICAgICAgICAgR1NUX0FMTE9DQVRPUiAoZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKGNvbnRleHQpKTsKKyAgICAgICAgYmFzZV9tZW1fYWxsb2NhdG9yID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoYWxsb2NhdG9yKTsKKyAgICAgICAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoY29udGV4dCwgTlVMTCwgJnRlbXBfaW5mbywKKyAgICAgICAgICAgIDAsIE5VTEwsIHZpZXdjb252ZXJ0LT50b190ZXh0dXJlX3RhcmdldCk7CisKICAgICAgICAgcHJpdi0+b3V0X3RleFtqXSA9Ci0gICAgICAgICAgICAoR3N0R0xNZW1vcnkgKikgZ3N0X2dsX21lbW9yeV9hbGxvYyAoY29udGV4dCwgTlVMTCwgJnRlbXBfaW5mbywgMCwKLSAgICAgICAgICAgIE5VTEwpOworICAgICAgICAgICAgKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2NhdG9yLAorICAgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworCisgICAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGFsbG9jYXRvcik7CisgICAgICB9CiAgICAgfSBlbHNlIHsKICAgICAgIHByaXYtPm91dF90ZXhbal0gPSBvdXRfdGV4OwogICAgIH0KQEAgLTE4MzMsOSArMjE0MCw4IEBACiAgICAgICAgIHJlcyA9IEZBTFNFOwogICAgICAgICBjb250aW51ZTsKICAgICAgIH0KLSAgICAgIGdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUgKHByaXYtPm91dF90ZXhbal0sCi0gICAgICAgICAgb3V0X3RleC0+dGV4X2lkLCBvdXRfdGV4LT50ZXhfdHlwZSwgd2lkdGgsIGhlaWdodCwKLSAgICAgICAgICBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUgKCZvdXRfdGV4LT5pbmZvLCBvdXRfdGV4LT5wbGFuZSksIEZBTFNFKTsKKyAgICAgIGdzdF9nbF9tZW1vcnlfY29weV9pbnRvIChwcml2LT5vdXRfdGV4W2pdLCBvdXRfdGV4LT50ZXhfaWQsCisgICAgICAgICAgdmlld2NvbnZlcnQtPnRvX3RleHR1cmVfdGFyZ2V0LCBvdXRfdGV4LT50ZXhfdHlwZSwgd2lkdGgsIGhlaWdodCk7CiAgICAgICBnc3RfbWVtb3J5X3VubWFwICgoR3N0TWVtb3J5ICopIG91dF90ZXgsICZ0b19pbmZvKTsKICAgICB9CiAKQEAgLTE4OTksNyArMjIwNSw3IEBACiAgIEdzdFZpZGVvTXVsdGl2aWV3RmxhZ3MgaW5fZmxhZ3MsIG91dF9mbGFnczsKIAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX1ZJRVdfQ09OVkVSVCAodmlld2NvbnZlcnQpLCBHU1RfRkxPV19FUlJPUik7Ci0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfQ09OVEVYVCAodmlld2NvbnZlcnQtPmNvbnRleHQpLAorICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX0NPTlRFWFQgKHZpZXdjb252ZXJ0LT5jb250ZXh0KSwKICAgICAgIEdTVF9GTE9XX0VSUk9SKTsKIAogICBHU1RfT0JKRUNUX0xPQ0sgKHZpZXdjb252ZXJ0KTsKQEAgLTE5NTAsNyArMjI1Niw4IEBACiAgIGlmIChwcml2LT5pbnB1dF9tb2RlID09IHByaXYtPm91dHB1dF9tb2RlICYmCiAgICAgICBwcml2LT5pbnB1dF9mbGFncyA9PSBwcml2LT5vdXRwdXRfZmxhZ3MgJiYKICAgICAgIHZpZXdjb252ZXJ0LT5pbl9pbmZvLndpZHRoID09IHZpZXdjb252ZXJ0LT5vdXRfaW5mby53aWR0aCAmJgotICAgICAgdmlld2NvbnZlcnQtPmluX2luZm8uaGVpZ2h0ID09IHZpZXdjb252ZXJ0LT5vdXRfaW5mby5oZWlnaHQpIHsKKyAgICAgIHZpZXdjb252ZXJ0LT5pbl9pbmZvLmhlaWdodCA9PSB2aWV3Y29udmVydC0+b3V0X2luZm8uaGVpZ2h0ICYmCisgICAgICB2aWV3Y29udmVydC0+ZnJvbV90ZXh0dXJlX3RhcmdldCA9PSB2aWV3Y29udmVydC0+dG9fdGV4dHVyZV90YXJnZXQpIHsKICAgICAvKiBwYXNzdGhyb3VnaCAtIGp1c3QgcGFzcyBpbnB1dCBidWZmZXJzICovCiAgICAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9yZWYgKHByaXYtPnByaW1hcnlfaW4pOwogICAgIGlmIChpbl9tb2RlID09IEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9GUkFNRV9CWV9GUkFNRSkKQEAgLTE5NTgsNiArMjI2NSwxMiBAQAogICAgIGdvdG8gZG9uZV9jbGVhcl9pbnB1dDsKICAgfQogCisgIC8qIFdlIGNhbid0IG91dHB1dCB0byBPRVMgdGV4dHVyZXMsIHRoZXkncmUgb25seSBzdXBwb3J0ZWQgZm9yIHBhc3N0aHJvdWdoICovCisgIGlmICh2aWV3Y29udmVydC0+dG9fdGV4dHVyZV90YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX0VYVEVSTkFMX09FUykgeworICAgIHJldCA9IEdTVF9GTE9XX0VSUk9SOworICAgIGdvdG8gZG9uZV9jbGVhcl9pbnB1dDsKKyAgfQorCiAgIC8qIEdlbmVyYXRlIG5ldyBvdXRwdXQgYnVmZmVyKHMpICovCiAgIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKHZpZXdjb252ZXJ0LT5jb250ZXh0LAogICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kb192aWV3X2NvbnZlcnQsIHZpZXdjb252ZXJ0KTsKQEAgLTE5NzQsMTEgKzIyODcsMTMgQEAKICAgfQogCiAgIG91dGJ1ZiA9IHByaXYtPnByaW1hcnlfb3V0OwotICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0YnVmLCBwcml2LT5wcmltYXJ5X2luLAotICAgICAgR1NUX0JVRkZFUl9DT1BZX0ZMQUdTIHwgR1NUX0JVRkZFUl9DT1BZX1RJTUVTVEFNUFMsIDAsIC0xKTsKLSAgR1NUX0JVRkZFUl9GTEFHX1NFVCAob3V0YnVmLAotICAgICAgR1NUX1ZJREVPX0JVRkZFUl9GTEFHX0ZJUlNUX0lOX0JVTkRMRSB8Ci0gICAgICBHU1RfVklERU9fQlVGRkVSX0ZMQUdfTVVMVElQTEVfVklFVyk7CisgIGlmIChvdXRidWYpIHsKKyAgICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0YnVmLCBwcml2LT5wcmltYXJ5X2luLAorICAgICAgICBHU1RfQlVGRkVSX0NPUFlfRkxBR1MgfCBHU1RfQlVGRkVSX0NPUFlfVElNRVNUQU1QUywgMCwgLTEpOworICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKG91dGJ1ZiwKKyAgICAgICAgR1NUX1ZJREVPX0JVRkZFUl9GTEFHX0ZJUlNUX0lOX0JVTkRMRSB8CisgICAgICAgIEdTVF9WSURFT19CVUZGRVJfRkxBR19NVUxUSVBMRV9WSUVXKTsKKyAgfQogCiAgIGlmIChwcml2LT5hdXhpbGxpYXJ5X291dCkgewogICAgIGdzdF9idWZmZXJfY29weV9pbnRvIChwcml2LT5hdXhpbGxpYXJ5X291dCwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmggYi9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x2aWV3Y29udmVydC5oCmluZGV4IDI2YTZkZjkuLjhjZmExYjIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHZpZXdjb252ZXJ0LmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL2dzdGdsdmlld2NvbnZlcnQuaApAQCAtNjEsNiArNjEsMTAgQEAKICAgR3N0VmlkZW9JbmZvIGluX2luZm87CiAgIEdzdFZpZGVvSW5mbyBvdXRfaW5mbzsKIAorICBHc3RHTFRleHR1cmVUYXJnZXQgZnJvbV90ZXh0dXJlX3RhcmdldDsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRvX3RleHR1cmVfdGFyZ2V0OworICBnYm9vbGVhbiBjYXBzX3Bhc3N0aHJvdWdoOworCiAgIGdib29sZWFuIGluaXR0ZWQ7CiAgIGdib29sZWFuIHJlY29uZmlndXJlOwogCkBAIC03OCw4ICs4Miw2IEBACiBHVHlwZSBnc3RfZ2xfdmlld19jb252ZXJ0X2dldF90eXBlICh2b2lkKTsKIEdzdEdMVmlld0NvbnZlcnQgKiBnc3RfZ2xfdmlld19jb252ZXJ0X25ldyAodm9pZCk7CiAKLWdib29sZWFuIGdzdF9nbF92aWV3X2NvbnZlcnRfc2V0X2Zvcm1hdCAoR3N0R0xWaWV3Q29udmVydCAqdmlld2NvbnZlcnQsIEdzdFZpZGVvSW5mbyAqaW5faW5mbywKLSAgICBHc3RWaWRlb0luZm8gKm91dF9pbmZvKTsKIGdib29sZWFuICBnc3RfZ2xfdmlld19jb252ZXJ0X3NldF9jYXBzIChHc3RHTFZpZXdDb252ZXJ0ICogdmlld2NvbnZlcnQsIEdzdENhcHMgKiBpbl9jYXBzLCBHc3RDYXBzICogb3V0X2NhcHMpOwogR3N0Q2FwcyAqIGdzdF9nbF92aWV3X2NvbnZlcnRfdHJhbnNmb3JtX2NhcHMgKEdzdEdMVmlld0NvbnZlcnQgKiB2aWV3Y29udmVydCwKICAgICBHc3RQYWREaXJlY3Rpb24gZGlyZWN0aW9uLCBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIGZpbHRlcik7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuYyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jCmluZGV4IDRmMjdjZDAuLjY5NWY0YzQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5jCkBAIC04NSwyMSArODUsMjMgQEAKIHN0YXRpYyB2b2lkIGdzdF9nbF93aW5kb3dfZGVmYXVsdF9zZW5kX21lc3NhZ2VfYXN5bmMgKEdzdEdMV2luZG93ICogd2luZG93LAogICAgIEdzdEdMV2luZG93Q0IgY2FsbGJhY2ssIGdwb2ludGVyIGRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3kpOwogc3RhdGljIGdwb2ludGVyIGdzdF9nbF93aW5kb3dfbmF2aWdhdGlvbl90aHJlYWQgKEdzdEdMV2luZG93ICogd2luZG93KTsKLXZvaWQgZ3N0X2dsX3dpbmRvd19ydW5fbmF2aWdhdGlvbiAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpOwotdm9pZCBnc3RfZ2xfd2luZG93X29wZW5fbmF2aWdhdGlvbiAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpOwotdm9pZCBnc3RfZ2xfd2luZG93X2Nsb3NlX25hdmlnYXRpb24gKEdzdEdMV2luZG93ICogd2luZG93KTsKLXZvaWQgZ3N0X2dsX3dpbmRvd19xdWl0X25hdmlnYXRpb24gKEdzdEdMV2luZG93ICogd2luZG93KTsKIAogc3RydWN0IF9Hc3RHTFdpbmRvd1ByaXZhdGUKIHsKICAgR01haW5Db250ZXh0ICptYWluX2NvbnRleHQ7CiAgIEdNYWluTG9vcCAqbG9vcDsKLSAgR1RocmVhZCAqbmF2aWdhdGlvbl90aHJlYWQ7CiAKICAgZ3VpbnQgc3VyZmFjZV93aWR0aDsKICAgZ3VpbnQgc3VyZmFjZV9oZWlnaHQ7CiAKICAgZ2Jvb2xlYW4gYWxpdmU7CisKKyAgR1RocmVhZCAqbmF2aWdhdGlvbl90aHJlYWQ7CisgIEdNYWluQ29udGV4dCAqbmF2aWdhdGlvbl9jb250ZXh0OworICBHTWFpbkxvb3AgKm5hdmlnYXRpb25fbG9vcDsKKyAgR011dGV4IG5hdl9sb2NrOworICBHQ29uZCBuYXZfY3JlYXRlX2NvbmQ7CisgIGdib29sZWFuIG5hdl9hbGl2ZTsKIH07CiAKIHN0YXRpYyB2b2lkIGdzdF9nbF93aW5kb3dfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwpAQCAtMTg3LDE3ICsxODksMTcgQEAKICAgd2luZG93LT5wcml2ID0gcHJpdjsKIAogICBnX211dGV4X2luaXQgKCZ3aW5kb3ctPmxvY2spOwotICBnX211dGV4X2luaXQgKCZ3aW5kb3ctPm5hdl9sb2NrKTsKLSAgZ19jb25kX2luaXQgKCZ3aW5kb3ctPm5hdl9jcmVhdGVfY29uZCk7Ci0gIGdfY29uZF9pbml0ICgmd2luZG93LT5uYXZfZGVzdHJveV9jb25kKTsKLSAgd2luZG93LT5uYXZfY3JlYXRlZCA9IEZBTFNFOwotICB3aW5kb3ctPm5hdl9hbGl2ZSA9IEZBTFNFOwogICB3aW5kb3ctPmlzX2RyYXdpbmcgPSBGQUxTRTsKIAorICBnX211dGV4X2luaXQgKCZ3aW5kb3ctPnByaXYtPm5hdl9sb2NrKTsKKyAgZ19jb25kX2luaXQgKCZ3aW5kb3ctPnByaXYtPm5hdl9jcmVhdGVfY29uZCk7CisgIHdpbmRvdy0+cHJpdi0+bmF2X2FsaXZlID0gRkFMU0U7CisKICAgZ193ZWFrX3JlZl9pbml0ICgmd2luZG93LT5jb250ZXh0X3JlZiwgTlVMTCk7CiAKICAgcHJpdi0+bWFpbl9jb250ZXh0ID0gZ19tYWluX2NvbnRleHRfbmV3ICgpOwogICBwcml2LT5sb29wID0gZ19tYWluX2xvb3BfbmV3IChwcml2LT5tYWluX2NvbnRleHQsIEZBTFNFKTsKKyAgcHJpdi0+bmF2aWdhdGlvbl9sb29wID0gTlVMTDsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTIwOSw3ICsyMTEsNiBAQAogICBrbGFzcy0+Y2xvc2UgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19kZWZhdWx0X2Nsb3NlKTsKICAga2xhc3MtPnJ1biA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2RlZmF1bHRfcnVuKTsKICAga2xhc3MtPnF1aXQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd19kZWZhdWx0X3F1aXQpOwotICBrbGFzcy0+ZHJhd191bmxvY2tlZCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2RlZmF1bHRfZHJhdyk7CiAgIGtsYXNzLT5kcmF3ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfZGVmYXVsdF9kcmF3KTsKICAga2xhc3MtPnNlbmRfbWVzc2FnZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X2RlZmF1bHRfc2VuZF9tZXNzYWdlKTsKICAga2xhc3MtPnNlbmRfbWVzc2FnZV9hc3luYyA9CkBAIC0zMTEsMTYgKzMxMiwxMyBAQAogCiAgIHdpbmRvdy0+ZGlzcGxheSA9IGdzdF9vYmplY3RfcmVmIChkaXNwbGF5KTsKIAotICBnX211dGV4X2xvY2sgKCZ3aW5kb3ctPm5hdl9sb2NrKTsKKyAgZ19tdXRleF9sb2NrICgmd2luZG93LT5wcml2LT5uYXZfbG9jayk7CisgIHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl90aHJlYWQgPSBnX3RocmVhZF9uZXcgKCJnc3RnbG5hdmlnYXRpb24iLAorICAgICAgKEdUaHJlYWRGdW5jKSBnc3RfZ2xfd2luZG93X25hdmlnYXRpb25fdGhyZWFkLCB3aW5kb3cpOwogCi0gIGlmICghd2luZG93LT5uYXZfY3JlYXRlZCkgewotICAgIHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl90aHJlYWQgPSBnX3RocmVhZF9uZXcgKCJnc3RnbG5hdmlnYXRpb24iLAotICAgICAgICAoR1RocmVhZEZ1bmMpIGdzdF9nbF93aW5kb3dfbmF2aWdhdGlvbl90aHJlYWQsIHdpbmRvdyk7Ci0KLSAgICBnX2NvbmRfd2FpdCAoJndpbmRvdy0+bmF2X2NyZWF0ZV9jb25kLCAmd2luZG93LT5uYXZfbG9jayk7Ci0gICAgd2luZG93LT5uYXZfY3JlYXRlZCA9IFRSVUU7Ci0gIH0KLSAgZ19tdXRleF91bmxvY2sgKCZ3aW5kb3ctPm5hdl9sb2NrKTsKKyAgd2hpbGUgKCF3aW5kb3ctPnByaXYtPm5hdl9hbGl2ZSkKKyAgICBnX2NvbmRfd2FpdCAoJndpbmRvdy0+cHJpdi0+bmF2X2NyZWF0ZV9jb25kLCAmd2luZG93LT5wcml2LT5uYXZfbG9jayk7CisgIGdfbXV0ZXhfdW5sb2NrICgmd2luZG93LT5wcml2LT5uYXZfbG9jayk7CiAKICAgcmV0dXJuIHdpbmRvdzsKIH0KQEAgLTMzMSwxNCArMzI5LDEyIEBACiAgIEdzdEdMV2luZG93ICp3aW5kb3cgPSBHU1RfR0xfV0lORE9XIChvYmplY3QpOwogICBHc3RHTFdpbmRvd1ByaXZhdGUgKnByaXYgPSB3aW5kb3ctPnByaXY7CiAKLSAgaWYgKHdpbmRvdy0+bmF2X2FsaXZlKSB7Ci0gICAgZ19tdXRleF9sb2NrICgmd2luZG93LT5uYXZfbG9jayk7Ci0gICAgR1NUX0lORk8gKCJzZW5kIHF1aXQgbmF2aWdhdGlvbiBsb29wIik7Ci0gICAgZ3N0X2dsX3dpbmRvd19xdWl0X25hdmlnYXRpb24gKHdpbmRvdyk7Ci0gICAgd2hpbGUgKHdpbmRvdy0+bmF2X2FsaXZlKSB7Ci0gICAgICBnX2NvbmRfd2FpdCAoJndpbmRvdy0+bmF2X2Rlc3Ryb3lfY29uZCwgJndpbmRvdy0+bmF2X2xvY2spOwotICAgIH0KLSAgICBnX211dGV4X3VubG9jayAoJndpbmRvdy0+bmF2X2xvY2spOworICBHU1RfSU5GTyAoInF1aXQgbmF2aWdhdGlvbiBsb29wIik7CisgIGlmICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fbG9vcCkgeworICAgIGdfbWFpbl9sb29wX3F1aXQgKHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9sb29wKTsKKyAgICAvKiB3YWl0IHVudGlsIG5hdmlnYXRpb24gdGhyZWFkIGZpbmlzaGVkICovCisgICAgZ190aHJlYWRfam9pbiAod2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX3RocmVhZCk7CisgICAgd2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX3RocmVhZCA9IE5VTEw7CiAgIH0KIAogICBpZiAocHJpdi0+bG9vcCkKQEAgLTM1MCw5ICszNDYsOCBAQAogICBnX3dlYWtfcmVmX2NsZWFyICgmd2luZG93LT5jb250ZXh0X3JlZik7CiAKICAgZ19tdXRleF9jbGVhciAoJndpbmRvdy0+bG9jayk7Ci0gIGdfbXV0ZXhfY2xlYXIgKCZ3aW5kb3ctPm5hdl9sb2NrKTsKLSAgZ19jb25kX2NsZWFyICgmd2luZG93LT5uYXZfY3JlYXRlX2NvbmQpOwotICBnX2NvbmRfY2xlYXIgKCZ3aW5kb3ctPm5hdl9kZXN0cm95X2NvbmQpOworICBnX211dGV4X2NsZWFyICgmd2luZG93LT5wcml2LT5uYXZfbG9jayk7CisgIGdfY29uZF9jbGVhciAoJndpbmRvdy0+cHJpdi0+bmF2X2NyZWF0ZV9jb25kKTsKICAgZ3N0X29iamVjdF91bnJlZiAod2luZG93LT5kaXNwbGF5KTsKIAogICBHX09CSkVDVF9DTEFTUyAoZ3N0X2dsX3dpbmRvd19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKQEAgLTQxNiw3ICs0MTEsNyBAQAogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAgIEdzdFNldFdpbmRvd0hhbmRsZUNiICpkYXRhOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKICAgZ19yZXR1cm5faWZfZmFpbCAoaGFuZGxlICE9IDApOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKICAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93X2NsYXNzLT5zZXRfd2luZG93X2hhbmRsZSAhPSBOVUxMKTsKQEAgLTQ2MiwyOSArNDU3LDYgQEAKICAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKHdpbmRvdywgKEdzdEdMV2luZG93Q0IpIGRyYXdfY2IsIHdpbmRvdyk7CiB9CiAKLQotLyoqCi0gKiBnc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWQ6Ci0gKiBAd2luZG93OiBhICNHc3RHTFdpbmRvdwotICoKLSAqIFJlZHJhdyB0aGUgd2luZG93IGNvbnRlbnRzLiAgSW1wbGVtZW50YXRpb25zIHNob3VsZCBpbnZva2UgdGhlIGRyYXcgY2FsbGJhY2suCi0gKgotICogU2luY2U6IDEuNAotICovCi12b2lkCi1nc3RfZ2xfd2luZG93X2RyYXdfdW5sb2NrZWQgKEdzdEdMV2luZG93ICogd2luZG93KQotewotICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7Ci0KLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7Ci0gIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwotICBnX3JldHVybl9pZl9mYWlsICh3aW5kb3dfY2xhc3MtPmRyYXdfdW5sb2NrZWQgIT0gTlVMTCk7Ci0KLSAgd2luZG93X2NsYXNzLT5kcmF3X3VubG9ja2VkICh3aW5kb3cpOwotCi0gIHdpbmRvdy0+cXVldWVfcmVzaXplID0gRkFMU0U7Ci19Ci0KIC8qKgogICogZ3N0X2dsX3dpbmRvd19kcmF3OgogICogQHdpbmRvdzogYSAjR3N0R0xXaW5kb3cKQEAgLTQ5OCw3ICs0NzAsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKICAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93X2NsYXNzLT5kcmF3ICE9IE5VTEwpOwogCkBAIC01MjgsNyArNTAwLDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAKICAgaWYgKHdpbmRvd19jbGFzcy0+c2V0X3ByZWZlcnJlZF9zaXplKQpAQCAtNTQ4LDcgKzUyMCw3IEBACiB7CiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogCiAgIGlmICh3aW5kb3dfY2xhc3MtPnNob3cpCkBAIC01NzQsNyArNTQ2LDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHdpbmRvd19jbGFzcy0+cnVuICE9IE5VTEwpOwogCkBAIC01ODIsMjMgKzU1NCw2IEBACiAgIHdpbmRvd19jbGFzcy0+cnVuICh3aW5kb3cpOwogfQogCi0vKioKLSAqIGdzdF9nbF93aW5kb3dfcnVuX25hdmlnYXRpb246Ci0gKiBAd2luZG93OiBhICNHc3RHTFdpbmRvdwotICoKLSAqIFN0YXJ0IHRoZSBleGVjdXRpb24gb2YgdGhlIG5hdmlnYXRpb24gcnVubG9vcC4KLSAqCi0gKiBTaW5jZTogMS42Ci0gKi8KLXZvaWQKLWdzdF9nbF93aW5kb3dfcnVuX25hdmlnYXRpb24gKEdzdEdMV2luZG93ICogd2luZG93KQotewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQgIT0gTlVMTCk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHdpbmRvdy0+bmF2aWdhdGlvbl9sb29wICE9IE5VTEwpOwotICBnX21haW5fbG9vcF9ydW4gKHdpbmRvdy0+bmF2aWdhdGlvbl9sb29wKTsKLX0KLQogc3RhdGljIHZvaWQKIGdzdF9nbF93aW5kb3dfZGVmYXVsdF9xdWl0IChHc3RHTFdpbmRvdyAqIHdpbmRvdykKIHsKQEAgLTYxOCw3ICs1NzMsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKICAgZ19yZXR1cm5faWZfZmFpbCAod2luZG93X2NsYXNzLT5xdWl0ICE9IE5VTEwpOwogCkBAIC02OTksNyArNjU0LDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKICAgZ19yZXR1cm5faWZfZmFpbCAoY2FsbGJhY2sgIT0gTlVMTCk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogICBnX3JldHVybl9pZl9mYWlsICh3aW5kb3dfY2xhc3MtPnNlbmRfbWVzc2FnZSAhPSBOVUxMKTsKQEAgLTc2MSw3ICs3MTYsNyBAQAogewogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogICBnX3JldHVybl9pZl9mYWlsIChjYWxsYmFjayAhPSBOVUxMKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAgIGdfcmV0dXJuX2lmX2ZhaWwgKHdpbmRvd19jbGFzcy0+c2VuZF9tZXNzYWdlX2FzeW5jICE9IE5VTEwpOwpAQCAtNzg0LDcgKzczOSw3IEBACiBnc3RfZ2xfd2luZG93X3NldF9kcmF3X2NhbGxiYWNrIChHc3RHTFdpbmRvdyAqIHdpbmRvdywgR3N0R0xXaW5kb3dDQiBjYWxsYmFjaywKICAgICBncG9pbnRlciBkYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95X25vdGlmeSkKIHsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogCiAgIEdTVF9HTF9XSU5ET1dfTE9DSyAod2luZG93KTsKIApAQCAtODEzLDcgKzc2OCw3IEBACiBnc3RfZ2xfd2luZG93X3NldF9yZXNpemVfY2FsbGJhY2sgKEdzdEdMV2luZG93ICogd2luZG93LAogICAgIEdzdEdMV2luZG93UmVzaXplQ0IgY2FsbGJhY2ssIGdwb2ludGVyIGRhdGEsIEdEZXN0cm95Tm90aWZ5IGRlc3Ryb3lfbm90aWZ5KQogewotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAKICAgR1NUX0dMX1dJTkRPV19MT0NLICh3aW5kb3cpOwogCkBAIC04NDIsNyArNzk3LDcgQEAKIGdzdF9nbF93aW5kb3dfc2V0X2Nsb3NlX2NhbGxiYWNrIChHc3RHTFdpbmRvdyAqIHdpbmRvdywgR3N0R0xXaW5kb3dDQiBjYWxsYmFjaywKICAgICBncG9pbnRlciBkYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95X25vdGlmeSkKIHsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogCiAgIEdTVF9HTF9XSU5ET1dfTE9DSyAod2luZG93KTsKIApAQCAtODg1LDcgKzg0MCw3IEBACiB7CiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKIAotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSwgMCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpLCAwKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh3aW5kb3dfY2xhc3MtPmdldF9kaXNwbGF5ICE9IE5VTEwsIDApOwogCkBAIC05MDUsNyArODYwLDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpLCAwKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdyksIDApOwogICB3aW5kb3dfY2xhc3MgPSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyAod2luZG93KTsKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHdpbmRvd19jbGFzcy0+Z2V0X3dpbmRvd19oYW5kbGUgIT0gTlVMTCwgMCk7CiAKQEAgLTkyMyw3ICs4NzgsNyBAQAogR3N0R0xDb250ZXh0ICoKIGdzdF9nbF93aW5kb3dfZ2V0X2NvbnRleHQgKEdzdEdMV2luZG93ICogd2luZG93KQogewotICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSwgTlVMTCk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpLCBOVUxMKTsKIAogICByZXR1cm4gKEdzdEdMQ29udGV4dCAqKSBnX3dlYWtfcmVmX2dldCAoJndpbmRvdy0+Y29udGV4dF9yZWYpOwogfQpAQCAtOTUwLDUwICs5MDUsNDcgQEAKIAogR19ERUZJTkVfVFlQRSAoR3N0R0xEdW1teVdpbmRvdywgZ3N0X2dsX2R1bW15X3dpbmRvdywgR1NUX0dMX1RZUEVfV0lORE9XKTsKIAotdm9pZAotZ3N0X2dsX3dpbmRvd19vcGVuX25hdmlnYXRpb24gKEdzdEdMV2luZG93ICogd2luZG93KQorc3RhdGljIGdib29sZWFuCitnc3RfZ2xfd2luZG93X25hdmlnYXRpb25fc3RhcnRlZCAoZ3BvaW50ZXIgZGF0YSkKIHsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7Ci0gIGdfbXV0ZXhfbG9jayAoJndpbmRvdy0+bmF2X2xvY2spOwotICB3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldyAoKTsKLSAgd2luZG93LT5uYXZpZ2F0aW9uX2xvb3AgPSBnX21haW5fbG9vcF9uZXcgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0LCBGQUxTRSk7Ci0gIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0KTsKLSAgd2luZG93LT5uYXZfYWxpdmUgPSBUUlVFOwotICBnX2NvbmRfc2lnbmFsICgmd2luZG93LT5uYXZfY3JlYXRlX2NvbmQpOwotICBnX211dGV4X3VubG9jayAoJndpbmRvdy0+bmF2X2xvY2spOwotfQorICBHc3RHTFdpbmRvdyAqd2luZG93ID0gZGF0YTsKIAotdm9pZAotZ3N0X2dsX3dpbmRvd19jbG9zZV9uYXZpZ2F0aW9uIChHc3RHTFdpbmRvdyAqIHdpbmRvdykKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0ICE9IE5VTEwpOwotICBnX3JldHVybl9pZl9mYWlsICh3aW5kb3ctPm5hdmlnYXRpb25fbG9vcCAhPSBOVUxMKTsKKyAgZ19tdXRleF9sb2NrICgmd2luZG93LT5wcml2LT5uYXZfbG9jayk7CisgIHdpbmRvdy0+cHJpdi0+bmF2X2FsaXZlID0gVFJVRTsKKyAgZ19jb25kX3NpZ25hbCAoJndpbmRvdy0+cHJpdi0+bmF2X2NyZWF0ZV9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZ3aW5kb3ctPnByaXYtPm5hdl9sb2NrKTsKIAotICBnX211dGV4X2xvY2sgKCZ3aW5kb3ctPm5hdl9sb2NrKTsKLSAgd2luZG93LT5uYXZfYWxpdmUgPSBGQUxTRTsKLSAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0ICh3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCk7Ci0gIGdfbWFpbl9sb29wX3VucmVmICh3aW5kb3ctPm5hdmlnYXRpb25fbG9vcCk7Ci0gIGdfbWFpbl9jb250ZXh0X3VucmVmICh3aW5kb3ctPm5hdmlnYXRpb25fY29udGV4dCk7Ci0gIGdfY29uZF9zaWduYWwgKCZ3aW5kb3ctPm5hdl9kZXN0cm95X2NvbmQpOwotICBnX211dGV4X3VubG9jayAoJndpbmRvdy0+bmF2X2xvY2spOwotfQotCi12b2lkCi1nc3RfZ2xfd2luZG93X3F1aXRfbmF2aWdhdGlvbiAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpCi17Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOwotCi0gIGdfbWFpbl9sb29wX3F1aXQgKHdpbmRvdy0+bmF2aWdhdGlvbl9sb29wKTsKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKIH0KIAogc3RhdGljIGdwb2ludGVyCiBnc3RfZ2xfd2luZG93X25hdmlnYXRpb25fdGhyZWFkIChHc3RHTFdpbmRvdyAqIHdpbmRvdykKIHsKLSAgZ3N0X2dsX3dpbmRvd19vcGVuX25hdmlnYXRpb24gKHdpbmRvdyk7Ci0gIGdzdF9nbF93aW5kb3dfcnVuX25hdmlnYXRpb24gKHdpbmRvdyk7CisgIEdTb3VyY2UgKnNvdXJjZTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSwgTlVMTCk7CisKKyAgd2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2NvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7CisgIHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9sb29wID0KKyAgICAgIGdfbWFpbl9sb29wX25ldyAod2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2NvbnRleHQsIEZBTFNFKTsKKyAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAod2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2NvbnRleHQpOworCisgIHNvdXJjZSA9IGdfaWRsZV9zb3VyY2VfbmV3ICgpOworICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sgKHNvdXJjZSwgKEdTb3VyY2VGdW5jKSBnc3RfZ2xfd2luZG93X25hdmlnYXRpb25fc3RhcnRlZCwKKyAgICAgIHdpbmRvdywgTlVMTCk7CisgIGdfc291cmNlX2F0dGFjaCAoc291cmNlLCB3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCk7CisgIGdfc291cmNlX3VucmVmIChzb3VyY2UpOworCisgIGdfbWFpbl9sb29wX3J1biAod2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2xvb3ApOworCisgIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdCAod2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2NvbnRleHQpOworCisgIGdfbWFpbl9sb29wX3VucmVmICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fbG9vcCk7CisgIGdfbWFpbl9jb250ZXh0X3VucmVmICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCk7CisgIHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9sb29wID0gTlVMTDsKKyAgd2luZG93LT5wcml2LT5uYXZpZ2F0aW9uX2NvbnRleHQgPSBOVUxMOworCiAgIEdTVF9JTkZPICgibmF2aWdhdGlvbiBsb29wIGV4aXRlZFxuIik7Ci0gIGdzdF9nbF93aW5kb3dfY2xvc2VfbmF2aWdhdGlvbiAod2luZG93KTsKIAogICByZXR1cm4gTlVMTDsKIH0KQEAgLTEwNDUsMjAgKzk5Nyw2IEBACiAgIHJldHVybiBnX29iamVjdF9uZXcgKGdzdF9nbF9kdW1teV93aW5kb3dfZ2V0X3R5cGUgKCksIE5VTEwpOwogfQogCi1nYm9vbGVhbgotZ3N0X2dsX3dpbmRvd19rZXlfZXZlbnRfY2IgKGdwb2ludGVyIGRhdGEpCi17Ci0gIHN0cnVjdCBrZXlfZXZlbnQgKmtleV9kYXRhID0gKHN0cnVjdCBrZXlfZXZlbnQgKikgZGF0YTsKLSAgR1NUX0RFQlVHCi0gICAgICAoIiVzIGNhbGxlZCBkYXRhIHN0cnVjdCAlcCB3aW5kb3cgJXAga2V5ICVzIGV2ZW50ICVzICIsCi0gICAgICBfX2Z1bmNfXywga2V5X2RhdGEsIGtleV9kYXRhLT53aW5kb3csIGtleV9kYXRhLT5rZXlfc3RyLAotICAgICAga2V5X2RhdGEtPmV2ZW50X3R5cGUpOwotICBnc3RfZ2xfd2luZG93X3NlbmRfa2V5X2V2ZW50IChHU1RfR0xfV0lORE9XIChrZXlfZGF0YS0+d2luZG93KSwKLSAgICAgIGtleV9kYXRhLT5ldmVudF90eXBlLCBrZXlfZGF0YS0+a2V5X3N0cik7Ci0gIGdfc2xpY2VfZnJlZSAoc3RydWN0IGtleV9ldmVudCwga2V5X2RhdGEpOwotICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwotfQotCiB2b2lkCiBnc3RfZ2xfd2luZG93X3NlbmRfa2V5X2V2ZW50IChHc3RHTFdpbmRvdyAqIHdpbmRvdywgY29uc3QgY2hhciAqZXZlbnRfdHlwZSwKICAgICBjb25zdCBjaGFyICprZXlfc3RyKQpAQCAtMTA2NywyMSArMTAwNSw0NSBAQAogICAgICAgZXZlbnRfdHlwZSwga2V5X3N0cik7CiB9CiAKLWdib29sZWFuCi1nc3RfZ2xfd2luZG93X21vdXNlX2V2ZW50X2NiIChncG9pbnRlciBkYXRhKQordHlwZWRlZiBzdHJ1Y3QKIHsKLSAgc3RydWN0IG1vdXNlX2V2ZW50ICptb3VzZV9kYXRhID0gKHN0cnVjdCBtb3VzZV9ldmVudCAqKSBkYXRhOwotICBHU1RfREVCVUcgKCIlcyBjYWxsZWQgZGF0YSBzdHJ1Y3QgJXAgbW91c2UgZXZlbnQgJXMgYnV0dG9uICVkIGF0ICVnLCAlZyIsCi0gICAgICBfX2Z1bmNfXywgbW91c2VfZGF0YSwgbW91c2VfZGF0YS0+ZXZlbnRfdHlwZSwgbW91c2VfZGF0YS0+YnV0dG9uLAotICAgICAgbW91c2VfZGF0YS0+cG9zeCwgbW91c2VfZGF0YS0+cG9zeSk7Ci0gIGdzdF9nbF93aW5kb3dfc2VuZF9tb3VzZV9ldmVudCAoR1NUX0dMX1dJTkRPVyAobW91c2VfZGF0YS0+d2luZG93KSwKLSAgICAgIG1vdXNlX2RhdGEtPmV2ZW50X3R5cGUsIG1vdXNlX2RhdGEtPmJ1dHRvbiwgbW91c2VfZGF0YS0+cG9zeCwKLSAgICAgIG1vdXNlX2RhdGEtPnBvc3kpOwotICBnX3NsaWNlX2ZyZWUgKHN0cnVjdCBtb3VzZV9ldmVudCwgbW91c2VfZGF0YSk7CisgIEdzdEdMV2luZG93ICp3aW5kb3c7CisgIGNvbnN0IGNoYXIgKmV2ZW50X3R5cGU7CisgIGNvbnN0IGNoYXIgKmtleV9zdHI7Cit9IEtleUV2ZW50RGF0YTsKKworc3RhdGljIGdib29sZWFuCitnc3RfZ2xfd2luZG93X2tleV9ldmVudF9jYiAoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgS2V5RXZlbnREYXRhICprZXlfZGF0YSA9IGRhdGE7CisKKyAgR1NUX0RFQlVHCisgICAgICAoIiVzIGNhbGxlZCBkYXRhIHN0cnVjdCAlcCB3aW5kb3cgJXAga2V5ICVzIGV2ZW50ICVzICIsCisgICAgICBfX2Z1bmNfXywga2V5X2RhdGEsIGtleV9kYXRhLT53aW5kb3csIGtleV9kYXRhLT5rZXlfc3RyLAorICAgICAga2V5X2RhdGEtPmV2ZW50X3R5cGUpOworCisgIGdzdF9nbF93aW5kb3dfc2VuZF9rZXlfZXZlbnQgKEdTVF9HTF9XSU5ET1cgKGtleV9kYXRhLT53aW5kb3cpLAorICAgICAga2V5X2RhdGEtPmV2ZW50X3R5cGUsIGtleV9kYXRhLT5rZXlfc3RyKTsKKwogICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOwogfQogCiB2b2lkCitnc3RfZ2xfd2luZG93X3NlbmRfa2V5X2V2ZW50X2FzeW5jIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKKyAgICBjb25zdCBjaGFyICpldmVudF90eXBlLCBjb25zdCBjaGFyICprZXlfc3RyKQoreworICBLZXlFdmVudERhdGEgKmtleV9kYXRhID0gZ19uZXcwIChLZXlFdmVudERhdGEsIDEpOworCisgIGtleV9kYXRhLT53aW5kb3cgPSB3aW5kb3c7CisgIGtleV9kYXRhLT5rZXlfc3RyID0ga2V5X3N0cjsKKyAga2V5X2RhdGEtPmV2ZW50X3R5cGUgPSBldmVudF90eXBlOworCisgIGdfbWFpbl9jb250ZXh0X2ludm9rZV9mdWxsICh3aW5kb3ctPnByaXYtPm5hdmlnYXRpb25fY29udGV4dCwKKyAgICAgIEdfUFJJT1JJVFlfREVGQVVMVCwgKEdTb3VyY2VGdW5jKSBnc3RfZ2xfd2luZG93X2tleV9ldmVudF9jYiwga2V5X2RhdGEsCisgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdfZnJlZSk7Cit9CisKK3ZvaWQKIGdzdF9nbF93aW5kb3dfc2VuZF9tb3VzZV9ldmVudCAoR3N0R0xXaW5kb3cgKiB3aW5kb3csIGNvbnN0IGNoYXIgKmV2ZW50X3R5cGUsCiAgICAgaW50IGJ1dHRvbiwgZG91YmxlIHBvc3gsIGRvdWJsZSBwb3N5KQogewpAQCAtMTA4OSw2ICsxMDUxLDQ4IEBACiAgICAgICBldmVudF90eXBlLCBidXR0b24sIHBvc3gsIHBvc3kpOwogfQogCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RHTFdpbmRvdyAqd2luZG93OworICBjb25zdCBjaGFyICpldmVudF90eXBlOworICBpbnQgYnV0dG9uOworICBkb3VibGUgcG9zeDsKKyAgZG91YmxlIHBvc3k7Cit9IE1vdXNlRXZlbnREYXRhOworCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9nbF93aW5kb3dfbW91c2VfZXZlbnRfY2IgKGdwb2ludGVyIGRhdGEpCit7CisgIE1vdXNlRXZlbnREYXRhICptb3VzZV9kYXRhID0gZGF0YTsKKworICBHU1RfREVCVUcgKCIlcyBjYWxsZWQgZGF0YSBzdHJ1Y3QgJXAgbW91c2UgZXZlbnQgJXMgYnV0dG9uICVkIGF0ICVnLCAlZyIsCisgICAgICBfX2Z1bmNfXywgbW91c2VfZGF0YSwgbW91c2VfZGF0YS0+ZXZlbnRfdHlwZSwgbW91c2VfZGF0YS0+YnV0dG9uLAorICAgICAgbW91c2VfZGF0YS0+cG9zeCwgbW91c2VfZGF0YS0+cG9zeSk7CisKKyAgZ3N0X2dsX3dpbmRvd19zZW5kX21vdXNlX2V2ZW50IChHU1RfR0xfV0lORE9XIChtb3VzZV9kYXRhLT53aW5kb3cpLAorICAgICAgbW91c2VfZGF0YS0+ZXZlbnRfdHlwZSwgbW91c2VfZGF0YS0+YnV0dG9uLCBtb3VzZV9kYXRhLT5wb3N4LAorICAgICAgbW91c2VfZGF0YS0+cG9zeSk7CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKwordm9pZAorZ3N0X2dsX3dpbmRvd19zZW5kX21vdXNlX2V2ZW50X2FzeW5jIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKKyAgICBjb25zdCBjaGFyICpldmVudF90eXBlLCBpbnQgYnV0dG9uLCBkb3VibGUgcG9zeCwgZG91YmxlIHBvc3kpCit7CisgIE1vdXNlRXZlbnREYXRhICptb3VzZV9kYXRhID0gZ19uZXcwIChNb3VzZUV2ZW50RGF0YSwgMSk7CisKKyAgbW91c2VfZGF0YS0+d2luZG93ID0gd2luZG93OworICBtb3VzZV9kYXRhLT5ldmVudF90eXBlID0gZXZlbnRfdHlwZTsKKyAgbW91c2VfZGF0YS0+YnV0dG9uID0gYnV0dG9uOworICBtb3VzZV9kYXRhLT5wb3N4ID0gcG9zeDsKKyAgbW91c2VfZGF0YS0+cG9zeSA9IHBvc3k7CisKKyAgZ19tYWluX2NvbnRleHRfaW52b2tlX2Z1bGwgKHdpbmRvdy0+cHJpdi0+bmF2aWdhdGlvbl9jb250ZXh0LAorICAgICAgR19QUklPUklUWV9ERUZBVUxULCAoR1NvdXJjZUZ1bmMpIGdzdF9nbF93aW5kb3dfbW91c2VfZXZlbnRfY2IsCisgICAgICBtb3VzZV9kYXRhLCAoR0Rlc3Ryb3lOb3RpZnkpIGdfZnJlZSk7Cit9CisKIC8qKgogICogZ3N0X2dsX3dpbmRvd19oYW5kbGVfZXZlbnRzOgogICogQHdpbmRvdzogYSAjR3N0R0xXaW5kb3cKQEAgLTExMDUsNyArMTEwOSw3IEBACiB7CiAgIEdzdEdMV2luZG93Q2xhc3MgKndpbmRvd19jbGFzczsKIAotICBnX3JldHVybl9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX0dMX1dJTkRPVyAod2luZG93KSk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogCiAgIGlmICh3aW5kb3dfY2xhc3MtPmhhbmRsZV9ldmVudHMpCkBAIC0xMTMyLDcgKzExMzYsNyBAQAogICBHc3RHTFdpbmRvd0NsYXNzICp3aW5kb3dfY2xhc3M7CiAgIGdib29sZWFuIHJldCA9IEZBTFNFOwogCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfR0xfSVNfV0lORE9XICh3aW5kb3cpLCBGQUxTRSk7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpLCBGQUxTRSk7CiAgIHdpbmRvd19jbGFzcyA9IEdTVF9HTF9XSU5ET1dfR0VUX0NMQVNTICh3aW5kb3cpOwogCiAgIGlmICh4IDwgMCB8fCB5IDwgMCB8fCB3aWR0aCA8PSAwIHx8IGhlaWdodCA8PSAwKQpAQCAtMTE0OSw3ICsxMTUzLDcgQEAKIHsKICAgR3N0R0xXaW5kb3dDbGFzcyAqd2luZG93X2NsYXNzOwogCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9HTF9JU19XSU5ET1cgKHdpbmRvdykpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfR0xfV0lORE9XICh3aW5kb3cpKTsKICAgd2luZG93X2NsYXNzID0gR1NUX0dMX1dJTkRPV19HRVRfQ0xBU1MgKHdpbmRvdyk7CiAKICAgd2luZG93LT5xdWV1ZV9yZXNpemUgPSBUUlVFOwpAQCAtMTE2MCw3ICsxMTY0LDcgQEAKIHZvaWQKIGdzdF9nbF93aW5kb3dfcmVzaXplIChHc3RHTFdpbmRvdyAqIHdpbmRvdywgZ3VpbnQgd2lkdGgsIGd1aW50IGhlaWdodCkKIHsKLSAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0dMX0lTX1dJTkRPVyAod2luZG93KSk7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19HTF9XSU5ET1cgKHdpbmRvdykpOwogCiAgIGlmICh3aW5kb3ctPnJlc2l6ZSkKICAgICB3aW5kb3ctPnJlc2l6ZSAod2luZG93LT5yZXNpemVfZGF0YSwgd2lkdGgsIGhlaWdodCk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvZ3N0Z2x3aW5kb3cuaCBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5oCmluZGV4IGU0NzgxYzcuLjFjZjVjM2UgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC9nc3RnbHdpbmRvdy5oCkBAIC0zMyw4ICszMyw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX1dJTkRPVyAgICAgICAgIChnc3RfZ2xfd2luZG93X2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1cobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX1dJTkRPVywgR3N0R0xXaW5kb3cpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1csIEdzdEdMV2luZG93Q2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1cpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1cpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1cpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1cpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1dJTkRPVywgR3N0R0xXaW5kb3dDbGFzcykpCiAKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19MT0NLKHcpIGdfbXV0ZXhfbG9jaygmR1NUX0dMX1dJTkRPVyh3KS0+bG9jaykKQEAgLTY3LDExICs2Nyw2IEBACiAgIEdzdE9iamVjdCBwYXJlbnQ7CiAKICAgR011dGV4ICAgICAgICBsb2NrOwotICBHTXV0ZXggICAgICAgIG5hdl9sb2NrOwotICBHQ29uZCAgICAgICAgIG5hdl9jcmVhdGVfY29uZDsKLSAgR0NvbmQgICAgICAgICBuYXZfZGVzdHJveV9jb25kOwotICBnYm9vbGVhbiAgICAgIG5hdl9jcmVhdGVkOwotICBnYm9vbGVhbiAgICAgIG5hdl9hbGl2ZTsKIAogICBHc3RHTERpc3BsYXkgKmRpc3BsYXk7CiAgIEdXZWFrUmVmICAgICAgY29udGV4dF9yZWY7CkBAIC05Myw5ICs4OCw2IEBACiAgIGdib29sZWFuICAgICAgICAgICAgICBxdWV1ZV9yZXNpemU7CiAKICAgLyo8IHByaXZhdGUgPiovCi0gIEdNYWluQ29udGV4dCAqbmF2aWdhdGlvbl9jb250ZXh0OwotICBHTWFpbkxvb3AgKm5hdmlnYXRpb25fbG9vcDsKLQogICBHc3RHTFdpbmRvd1ByaXZhdGUgKnByaXY7CiAKICAgZ3BvaW50ZXIgX3Jlc2VydmVkW0dTVF9QQURESU5HXTsKQEAgLTEwOCw3ICsxMDAsNiBAQAogICogQHNldF93aW5kb3dfaGFuZGxlOiBTZXQgYSB3aW5kb3cgdG8gcmVuZGVyIGludG8KICAqIEBnZXRfd2luZG93X2hhbmRsZTogR2V0cyB0aGUgY3VycmVudCB3aW5kb3cgdGhhdCB0aGlzICNHc3RHTFdpbmRvdyBpcwogICogICAgICAgICAgICAgICAgICAgICByZW5kZXJpbmcgaW50bwotICogQGRyYXdfdW5sb2NrZWQ6IHJlZHJhdyB0aGUgd2luZG93IHdpdGggdGhlIHNwZWNpZmllZCBkaW1lbnNpb25zCiAgKiBAZHJhdzogcmVkcmF3IHRoZSB3aW5kb3cgd2l0aCB0aGUgc3BlY2lmaWVkIGRpbWVuc2lvbnMKICAqIEBydW46IHJ1biB0aGUgbWFpbmxvb3AKICAqIEBxdWl0OiBzZW5kIGEgcXVpdCB0byB0aGUgbWFpbmxvb3AKQEAgLTEzMSw3ICsxMjIsNiBAQAogICBndWludHB0ciAoKmdldF9kaXNwbGF5KSAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogICB2b2lkICAgICAoKnNldF93aW5kb3dfaGFuZGxlKSAgKEdzdEdMV2luZG93ICp3aW5kb3csIGd1aW50cHRyIGlkKTsKICAgZ3VpbnRwdHIgKCpnZXRfd2luZG93X2hhbmRsZSkgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKLSAgdm9pZCAgICAgKCpkcmF3X3VubG9ja2VkKSAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKICAgdm9pZCAgICAgKCpkcmF3KSAgICAgICAgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKICAgdm9pZCAgICAgKCpydW4pICAgICAgICAgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKICAgdm9pZCAgICAgKCpxdWl0KSAgICAgICAgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKQEAgLTE1MCwyMiArMTQwLDYgQEAKICAgZ3BvaW50ZXIgX3Jlc2VydmVkW0dTVF9QQURESU5HXTsKIH07CiAKLXN0cnVjdCBrZXlfZXZlbnQKLXsKLSAgR3N0R0xXaW5kb3cgKndpbmRvdzsKLSAgY29uc3QgY2hhciAqZXZlbnRfdHlwZTsKLSAgY29uc3QgY2hhciAqa2V5X3N0cjsKLX07Ci0KLXN0cnVjdCBtb3VzZV9ldmVudAotewotICBHc3RHTFdpbmRvdyAqd2luZG93OwotICBjb25zdCBjaGFyICpldmVudF90eXBlOwotICBpbnQgYnV0dG9uOwotICBkb3VibGUgcG9zeDsKLSAgZG91YmxlIHBvc3k7Ci19OwotCiBHUXVhcmsgZ3N0X2dsX3dpbmRvd19lcnJvcl9xdWFyayAodm9pZCk7CiBHVHlwZSBnc3RfZ2xfd2luZG93X2dldF90eXBlICAgICAodm9pZCk7CiAKQEAgLTIwMywyMCArMTc3LDI2IEBACiAvKiBuYXZpZ2F0aW9uICovCiB2b2lkICAgICBnc3RfZ2xfd2luZG93X2hhbmRsZV9ldmVudHMgICAgICAgIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGhhbmRsZV9ldmVudHMpOwotZ2Jvb2xlYW4gZ3N0X2dsX3dpbmRvd19rZXlfZXZlbnRfY2IgICAgICAgICAoZ3BvaW50ZXIgZGF0YSk7Ci1nYm9vbGVhbiBnc3RfZ2xfd2luZG93X21vdXNlX2V2ZW50X2NiICAgICAgIChncG9pbnRlciBkYXRhKTsKKwogdm9pZCAgICAgZ3N0X2dsX3dpbmRvd19zZW5kX2tleV9ldmVudCAgICAgICAoR3N0R0xXaW5kb3cgKiB3aW5kb3csCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICogZXZlbnRfdHlwZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBrZXlfc3RyKTsKK3ZvaWQgICAgIGdzdF9nbF93aW5kb3dfc2VuZF9rZXlfZXZlbnRfYXN5bmMgKEdzdEdMV2luZG93ICogd2luZG93LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAqIGV2ZW50X3R5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICoga2V5X3N0cik7CiB2b2lkICAgICBnc3RfZ2xfd2luZG93X3NlbmRfbW91c2VfZXZlbnQgICAgIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBldmVudF90eXBlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1dHRvbiwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBwb3N4LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHBvc3kpOwordm9pZCAgICAgZ3N0X2dsX3dpbmRvd19zZW5kX21vdXNlX2V2ZW50X2FzeW5jIChHc3RHTFdpbmRvdyAqIHdpbmRvdywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKiBldmVudF90eXBlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGJ1dHRvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvdWJsZSBwb3N4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG91YmxlIHBvc3kpOwogCiAvKiBzdXJmYWNlcy9yZW5kZXJpbmcgKi8KIHZvaWQgICAgIGdzdF9nbF93aW5kb3dfcXVldWVfcmVzaXplICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwotdm9pZCAgICAgZ3N0X2dsX3dpbmRvd19kcmF3X3VubG9ja2VkICAgICAgICAoR3N0R0xXaW5kb3cgKndpbmRvdyk7CiB2b2lkICAgICBnc3RfZ2xfd2luZG93X2RyYXcgICAgICAgICAgICAgICAgIChHc3RHTFdpbmRvdyAqd2luZG93KTsKIHZvaWQgICAgIGdzdF9nbF93aW5kb3dfc2hvdyAgICAgICAgICAgICAgICAgKEdzdEdMV2luZG93ICp3aW5kb3cpOwogdm9pZCAgICAgZ3N0X2dsX3dpbmRvd19zZXRfcHJlZmVycmVkX3NpemUgICAoR3N0R0xXaW5kb3cgKiB3aW5kb3csCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvdXRpbHMvZ2xlc192ZXJzaW9ucy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL3V0aWxzL2dsZXNfdmVyc2lvbnMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lODBiZjFlCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3V0aWxzL2dsZXNfdmVyc2lvbnMuaApAQCAtMCwwICsxLDM4IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX0dMRVNfVkVSU0lPTlNfSF8KKyNkZWZpbmUgX0dMRVNfVkVSU0lPTlNfSF8KKworLyogbGlzdCBvZiBrbm93biBPcGVuR0wgdmVyc2lvbnMgKi8KKy8qICpJTkRFTlQtT0ZGKiAqLworCitzdGF0aWMgY29uc3Qgc3RydWN0IHsgaW50IG1ham9yLCBtaW5vcjsgfSBnbGVzMl92ZXJzaW9uc1tdID0geworICAgezMsIDJ9LAorICAgezMsIDF9LAorICAgezMsIDB9LAorCisgICB7MiwgMH0sCisKKyAgIHswLCAwfSAvKiBlbmQgb2YgbGlzdCAqLworfTsKKy8qICpJTkRFTlQtT04qICovCisKKyNlbmRpZiAvKiBfR0xFU19WRVJTSU9OU19IXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL3V0aWxzL29wZW5nbF92ZXJzaW9ucy5oIGIvZ3N0LWxpYnMvZ3N0L2dsL3V0aWxzL29wZW5nbF92ZXJzaW9ucy5oCmluZGV4IGJlZWVhYjYuLjA4MWNhZWIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC91dGlscy9vcGVuZ2xfdmVyc2lvbnMuaAorKysgYi9nc3QtbGlicy9nc3QvZ2wvdXRpbHMvb3BlbmdsX3ZlcnNpb25zLmgKQEAgLTQ4LDYgKzQ4LDcgQEAKIAogICAgezAsIDB9IC8qIGVuZCBvZiBsaXN0ICovCiB9OworCiAvKiAqSU5ERU5ULU9OKiAqLwogCiAjZW5kaWYgLyogX09QRU5HTF9WRVJTSU9OU19IXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZS5pbgppbmRleCA1NTQ2MmQ0Li4zMDc3ZmMzIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNDcsNiArMjQ2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODQsNiArMjg1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTIsNyArMjk1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzExLDggKzMxMyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjksMTYgKzMzMiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjQsNiArMzY4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg5LDYgKzM5NSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5MCw2ICs0OTgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAzLDggKzUxMiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyMCw2ICs1MjcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc3LDE2ICs1ODYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzgsNiArNjQ5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0OCw2ICs2NjAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTcsNiArNjcwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5NCw3ICs3MDksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmMgYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9nc3RnbHdpbmRvd193YXlsYW5kX2VnbC5jCmluZGV4IGIzNGFkNDIuLjZlMWYwYzUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvZ3N0Z2x3aW5kb3dfd2F5bGFuZF9lZ2wuYwpAQCAtMzM0LDggKzMzNCw2IEBACiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd193YXlsYW5kX2VnbF9nZXRfd2luZG93X2hhbmRsZSk7CiAgIHdpbmRvd19jbGFzcy0+c2V0X3dpbmRvd19oYW5kbGUgPQogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfd2F5bGFuZF9lZ2xfc2V0X3dpbmRvd19oYW5kbGUpOwotICB3aW5kb3dfY2xhc3MtPmRyYXdfdW5sb2NrZWQgPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfd2F5bGFuZF9lZ2xfZHJhdyk7CiAgIHdpbmRvd19jbGFzcy0+c2hvdyA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dheWxhbmRfZWdsX3Nob3cpOwogICB3aW5kb3dfY2xhc3MtPmRyYXcgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd193YXlsYW5kX2VnbF9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5jbG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dheWxhbmRfZWdsX2Nsb3NlKTsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmggYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC9nc3RnbHdpbmRvd193YXlsYW5kX2VnbC5oCmluZGV4IGY3NmI1YjAuLmUwMTY2ZGEgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL2dzdGdsd2luZG93X3dheWxhbmRfZWdsLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvZ3N0Z2x3aW5kb3dfd2F5bGFuZF9lZ2wuaApAQCAtMzIsOCArMzIsOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wgICAgICAgICAoZ3N0X2dsX3dpbmRvd193YXlsYW5kX2VnbF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX1dBWUxBTkRfRUdMKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wsIEdzdEdMV2luZG93V2F5bGFuZEVHTCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfV0FZTEFORF9FR0xfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wsIEdzdEdMV2luZG93V2F5bGFuZEVHTENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19XQVlMQU5EX0VHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dBWUxBTkRfRUdMKSkKLSNkZWZpbmUgR1NUX0dMX0lTX1dJTkRPV19XQVlMQU5EX0VHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dBWUxBTkRfRUdMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19XQVlMQU5EX0VHTChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dBWUxBTkRfRUdMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19XQVlMQU5EX0VHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dBWUxBTkRfRUdMKSkKICNkZWZpbmUgR1NUX0dMX1dJTkRPV19XQVlMQU5EX0VHTF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0FZTEFORF9FR0wsIEdzdEdMV2luZG93V2F5bGFuZEVHTF9DbGFzcykpCiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RHTFdpbmRvd1dheWxhbmRFR0wgICAgICAgIEdzdEdMV2luZG93V2F5bGFuZEVHTDsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL3dheWxhbmRfZXZlbnRfc291cmNlLmggYi9nc3QtbGlicy9nc3QvZ2wvd2F5bGFuZC93YXlsYW5kX2V2ZW50X3NvdXJjZS5oCmluZGV4IDk0MGE1ZTAuLmZhMjA4OTIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC93YXlsYW5kL3dheWxhbmRfZXZlbnRfc291cmNlLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3dheWxhbmQvd2F5bGFuZF9ldmVudF9zb3VyY2UuaApAQCAtMzYsNyArMzYsNyBAQAogR1NvdXJjZSAqIHdheWxhbmRfZXZlbnRfc291cmNlX25ldyAoc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfZXZlbnRfcXVldWUgKnF1ZXVlKTsKIAotZ2ludCAgICAgIGdzdF9nbF93bF9kaXNwbGF5X3JvdW5kdHJpcF9xdWV1ZSAoc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXksCitHX0dOVUNfSU5URVJOQUwgZ2ludCAgICAgIGdzdF9nbF93bF9kaXNwbGF5X3JvdW5kdHJpcF9xdWV1ZSAoc3RydWN0IHdsX2Rpc3BsYXkgKmRpc3BsYXksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgd2xfZXZlbnRfcXVldWUgKnF1ZXVlKTsKIAogI2VuZGlmIC8qIF9fV0FZTEFORF9FVkVOVF9TT1VSQ0VfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvd2luMzIvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wvd2luMzIvTWFrZWZpbGUuaW4KaW5kZXggY2NmOThlOS4uNzBjN2VhYyAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9nbC93aW4zMi9NYWtlZmlsZS5pbgpAQCAtMTE4LDE2ICsxMTgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ub2luc3RfSEVBREVSU19ESVNUKSBcCkBAIC0yNTIsNiArMjUxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODksNiArMjkwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTcsNyArMzAwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzE2LDggKzMxOCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMzQsMTYgKzMzNywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjksNiArMzczLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzk0LDYgKzQwMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5NSw2ICs1MDMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTA4LDggKzUxNyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyNSw2ICs1MzIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTgyLDE2ICs1OTEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NDMsNiArNjU0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY1Myw2ICs2NjUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NjIsNiArNjc1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5OSw3ICs3MTQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbGNvbnRleHRfd2dsLmggYi9nc3QtbGlicy9nc3QvZ2wvd2luMzIvZ3N0Z2xjb250ZXh0X3dnbC5oCmluZGV4IDY0YmYxNDEuLjI0NThkZTggMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbGNvbnRleHRfd2dsLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3dpbjMyL2dzdGdsY29udGV4dF93Z2wuaApAQCAtMjgsOCArMjgsOCBAQAogI2RlZmluZSBHU1RfR0xfVFlQRV9DT05URVhUX1dHTCAgICAgICAgIChnc3RfZ2xfY29udGV4dF93Z2xfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfV0dMKG8pICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX1dHTCwgR3N0R0xDb250ZXh0V0dMKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfV0dMX0NMQVNTKGspICAgICAoR19UWVBFX0NIRUNLX0NMQVNTKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9XR0wsIEdzdEdMQ29udGV4dFdHTENsYXNzKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFRfV0dMKG8pICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX1dHTCkpCi0jZGVmaW5lIEdTVF9HTF9JU19DT05URVhUX1dHTF9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9XR0wpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9XR0wobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfV0dMKSkKKyNkZWZpbmUgR1NUX0lTX0dMX0NPTlRFWFRfV0dMX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX1dHTCkpCiAjZGVmaW5lIEdTVF9HTF9DT05URVhUX1dHTF9HRVRfQ0xBU1MobykgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG8pLCBHU1RfR0xfVFlQRV9DT05URVhUX1dHTCwgR3N0R0xDb250ZXh0V0dMQ2xhc3MpKQogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250ZXh0V0dMICAgICAgICBHc3RHTENvbnRleHRXR0w7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvd2luMzIvZ3N0Z2x3aW5kb3dfd2luMzIuYyBiL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5jCmluZGV4IGEyZWQzZTYuLjFmZjE4YmIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5jCkBAIC03NCw3ICs3NCw2IEBACiAKICAgd2luZG93X2NsYXNzLT5zZXRfd2luZG93X2hhbmRsZSA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd193aW4zMl9zZXRfd2luZG93X2hhbmRsZSk7Ci0gIHdpbmRvd19jbGFzcy0+ZHJhd191bmxvY2tlZCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3dpbjMyX2RyYXcpOwogICB3aW5kb3dfY2xhc3MtPmRyYXcgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd193aW4zMl9kcmF3KTsKICAgd2luZG93X2NsYXNzLT5nZXRfZGlzcGxheSA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd193aW4zMl9nZXRfZGlzcGxheSk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wvd2luMzIvZ3N0Z2x3aW5kb3dfd2luMzIuaCBiL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5oCmluZGV4IDA4MGE0ZDQuLmMxN2I0OTIgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC93aW4zMi9nc3RnbHdpbmRvd193aW4zMi5oCkBAIC0zMiw4ICszMiw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX1dJTkRPV19XSU4zMiAgICAgICAgIChnc3RfZ2xfd2luZG93X3dpbjMyX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfV0lOMzIobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19XSU4zMiwgR3N0R0xXaW5kb3dXaW4zMikpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfV0lOMzJfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfV0lOMzIsIEdzdEdMV2luZG93V2luMzJDbGFzcykpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1dfV0lOMzIobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19XSU4zMikpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1dfV0lOMzJfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPV19XSU4zMikpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1dfV0lOMzIobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19XSU4zMikpCisjZGVmaW5lIEdTVF9JU19HTF9XSU5ET1dfV0lOMzJfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX1dJTkRPV19XSU4zMikpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfV0lOMzJfR0VUX0NMQVNTKG8pIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1dJTjMyLCBHc3RHTFdpbmRvd1dpbjMyQ2xhc3MpKQogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xXaW5kb3dXaW4zMiAgICAgICAgR3N0R0xXaW5kb3dXaW4zMjsKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9nbC94MTEvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvZ2wveDExL01ha2VmaWxlLmluCmluZGV4IGE5MTljYTUuLmYzYzg4MzUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC94MTEvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9NYWtlZmlsZS5pbgpAQCAtMTE4LDE2ICsxMTgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGxpYmdzdGdsX3gxMWluY2x1ZGVfSEVBREVSUykgXApAQCAtMjgxLDYgKzI4MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE4LDYgKzMxOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI2LDcgKzMyOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0NSw4ICszNDcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYzLDE2ICszNjYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk4LDYgKzQwMiw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMyw2ICs0MjksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjQsNiArNTMyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNyw4ICs1NDYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTQsNiArNTYxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMSwxNiArNjIwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcyLDYgKzY4Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODIsNiArNjk0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkxLDYgKzcwNCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjgsNyArNzQzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsY29udGV4dF9nbHguaCBiL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xjb250ZXh0X2dseC5oCmluZGV4IGUwMTUxMDguLmY5NTIwNGEgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xjb250ZXh0X2dseC5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xjb250ZXh0X2dseC5oCkBAIC0zMCw4ICszMCw4IEBACiAjZGVmaW5lIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYICAgICAgICAgKGdzdF9nbF9jb250ZXh0X2dseF9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9HTFgobykgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYLCBHc3RHTENvbnRleHRHTFgpKQogI2RlZmluZSBHU1RfR0xfQ09OVEVYVF9HTFhfQ0xBU1MoaykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1MoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0dMWCwgR3N0R0xDb250ZXh0R0xYQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfQ09OVEVYVF9HTFgobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYKSkKLSNkZWZpbmUgR1NUX0dMX0lTX0NPTlRFWFRfR0xYX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9DT05URVhUX0dMWCkpCisjZGVmaW5lIEdTVF9JU19HTF9DT05URVhUX0dMWChvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfQ09OVEVYVF9HTFgpKQorI2RlZmluZSBHU1RfSVNfR0xfQ09OVEVYVF9HTFhfQ0xBU1MoaykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoayksIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYKSkKICNkZWZpbmUgR1NUX0dMX0NPTlRFWFRfR0xYX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX0NPTlRFWFRfR0xYLCBHc3RHTENvbnRleHRHTFhfQ2xhc3MpKQogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xDb250ZXh0R0xYICAgICAgICBHc3RHTENvbnRleHRHTFg7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsZGlzcGxheV94MTEuYyBiL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xkaXNwbGF5X3gxMS5jCmluZGV4IGU2MDg2YjcuLjY5NjkyOWUgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xkaXNwbGF5X3gxMS5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2xkaXNwbGF5X3gxMS5jCkBAIC01NSw4ICs1NSw3IEBACiB7CiAgIEdzdEdMRGlzcGxheVgxMSAqZGlzcGxheV94MTEgPSBHU1RfR0xfRElTUExBWV9YMTEgKG9iamVjdCk7CiAKLSAgaWYgKGRpc3BsYXlfeDExLT5uYW1lKQotICAgIGdfZnJlZSAoZGlzcGxheV94MTEtPm5hbWUpOworICBnX2ZyZWUgKGRpc3BsYXlfeDExLT5uYW1lKTsKIAogICBpZiAoIWRpc3BsYXlfeDExLT5mb3JlaWduX2Rpc3BsYXkgJiYgZGlzcGxheV94MTEtPmRpc3BsYXkpIHsKICAgICBYQ2xvc2VEaXNwbGF5IChkaXNwbGF5X3gxMS0+ZGlzcGxheSk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5jIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbHdpbmRvd194MTEuYwppbmRleCAyOWMyYWVhLi5hMzMwODI1IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5jCisrKyBiL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmMKQEAgLTc0LDcgKzc0LDYgQEAKIHN0YXRpYyB2b2lkIGdzdF9nbF93aW5kb3dfeDExX3NldF9wcmVmZXJyZWRfc2l6ZSAoR3N0R0xXaW5kb3cgKiB3aW5kb3csCiAgICAgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQpOwogdm9pZCBnc3RfZ2xfd2luZG93X3gxMV9zaG93IChHc3RHTFdpbmRvdyAqIHdpbmRvdyk7Ci12b2lkIGdzdF9nbF93aW5kb3dfeDExX2RyYXdfdW5sb2NrZWQgKEdzdEdMV2luZG93ICogd2luZG93KTsKIHZvaWQgZ3N0X2dsX3dpbmRvd194MTFfZHJhdyAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpOwogZ2Jvb2xlYW4gZ3N0X2dsX3dpbmRvd194MTFfY3JlYXRlX2NvbnRleHQgKEdzdEdMV2luZG93ICogd2luZG93LAogICAgIEdzdEdMQVBJIGdsX2FwaSwgZ3VpbnRwdHIgZXh0ZXJuYWxfZ2xfY29udGV4dCwgR0Vycm9yICoqIGVycm9yKTsKQEAgLTEwNCw4ICsxMDMsNiBAQAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfeDExX3NldF93aW5kb3dfaGFuZGxlKTsKICAgd2luZG93X2NsYXNzLT5nZXRfd2luZG93X2hhbmRsZSA9CiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd194MTFfZ2V0X3dpbmRvd19oYW5kbGUpOwotICB3aW5kb3dfY2xhc3MtPmRyYXdfdW5sb2NrZWQgPQotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9nbF93aW5kb3dfeDExX2RyYXdfdW5sb2NrZWQpOwogICB3aW5kb3dfY2xhc3MtPmRyYXcgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2dsX3dpbmRvd194MTFfZHJhdyk7CiAgIHdpbmRvd19jbGFzcy0+b3BlbiA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3gxMV9vcGVuKTsKICAgd2luZG93X2NsYXNzLT5jbG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfZ2xfd2luZG93X3gxMV9jbG9zZSk7CkBAIC0zODcsMzkgKzM4NCwxMyBAQAogICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAod2luZG93LCAoR3N0R0xXaW5kb3dDQikgX3Nob3dfd2luZG93LCB3aW5kb3cpOwogfQogCi0vKiBDYWxsZWQgaW4gdGhlIGdsIHRocmVhZCAqLwotdm9pZAotZ3N0X2dsX3dpbmRvd194MTFfZHJhd191bmxvY2tlZCAoR3N0R0xXaW5kb3cgKiB3aW5kb3cpCi17Ci0gIEdzdEdMV2luZG93WDExICp3aW5kb3dfeDExID0gR1NUX0dMX1dJTkRPV19YMTEgKHdpbmRvdyk7Ci0KLSAgaWYgKGdzdF9nbF93aW5kb3dfaXNfcnVubmluZyAoR1NUX0dMX1dJTkRPVyAod2luZG93X3gxMSkpCi0gICAgICAmJiB3aW5kb3dfeDExLT5hbGxvd19leHRyYV9leHBvc2VfZXZlbnRzKSB7Ci0gICAgaWYgKHdpbmRvdy0+cXVldWVfcmVzaXplKSB7Ci0gICAgICBndWludCB3aWR0aCwgaGVpZ2h0OwotCi0gICAgICBnc3RfZ2xfd2luZG93X2dldF9zdXJmYWNlX2RpbWVuc2lvbnMgKHdpbmRvdywgJndpZHRoLCAmaGVpZ2h0KTsKLSAgICAgIGdzdF9nbF93aW5kb3dfcmVzaXplICh3aW5kb3csIHdpZHRoLCBoZWlnaHQpOwotICAgIH0KLQotICAgIGlmICh3aW5kb3ctPmRyYXcpIHsKLSAgICAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGdzdF9nbF93aW5kb3dfZ2V0X2NvbnRleHQgKHdpbmRvdyk7Ci0gICAgICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzcyA9IEdTVF9HTF9DT05URVhUX0dFVF9DTEFTUyAoY29udGV4dCk7Ci0KLSAgICAgIHdpbmRvdy0+ZHJhdyAod2luZG93LT5kcmF3X2RhdGEpOwotICAgICAgY29udGV4dF9jbGFzcy0+c3dhcF9idWZmZXJzIChjb250ZXh0KTsKLQotICAgICAgZ3N0X29iamVjdF91bnJlZiAoY29udGV4dCk7Ci0gICAgfQotICB9Ci19Ci0KIHN0YXRpYyB2b2lkCiBkcmF3X2NiIChncG9pbnRlciBkYXRhKQogewogICBHc3RHTFdpbmRvd1gxMSAqd2luZG93X3gxMSA9IGRhdGE7CisgIEdzdEdMV2luZG93ICp3aW5kb3cgPSBHU1RfR0xfV0lORE9XICh3aW5kb3dfeDExKTsKIAotICBpZiAoZ3N0X2dsX3dpbmRvd19pc19ydW5uaW5nIChHU1RfR0xfV0lORE9XICh3aW5kb3dfeDExKSkpIHsKKyAgaWYgKGdzdF9nbF93aW5kb3dfaXNfcnVubmluZyAod2luZG93KSkgewogICAgIFhXaW5kb3dBdHRyaWJ1dGVzIGF0dHI7CiAKICAgICBYR2V0V2luZG93QXR0cmlidXRlcyAod2luZG93X3gxMS0+ZGV2aWNlLCB3aW5kb3dfeDExLT5pbnRlcm5hbF93aW5faWQsCkBAIC00NDMsNyArNDE0LDI0IEBACiAgICAgICB9CiAgICAgfQogCi0gICAgZ3N0X2dsX3dpbmRvd194MTFfZHJhd191bmxvY2tlZCAoR1NUX0dMX1dJTkRPVyAod2luZG93X3gxMSkpOworICAgIGlmICh3aW5kb3dfeDExLT5hbGxvd19leHRyYV9leHBvc2VfZXZlbnRzKSB7CisgICAgICBpZiAod2luZG93LT5xdWV1ZV9yZXNpemUpIHsKKyAgICAgICAgZ3VpbnQgd2lkdGgsIGhlaWdodDsKKworICAgICAgICBnc3RfZ2xfd2luZG93X2dldF9zdXJmYWNlX2RpbWVuc2lvbnMgKHdpbmRvdywgJndpZHRoLCAmaGVpZ2h0KTsKKyAgICAgICAgZ3N0X2dsX3dpbmRvd19yZXNpemUgKHdpbmRvdywgd2lkdGgsIGhlaWdodCk7CisgICAgICB9CisKKyAgICAgIGlmICh3aW5kb3ctPmRyYXcpIHsKKyAgICAgICAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZ3N0X2dsX3dpbmRvd19nZXRfY29udGV4dCAod2luZG93KTsKKyAgICAgICAgR3N0R0xDb250ZXh0Q2xhc3MgKmNvbnRleHRfY2xhc3MgPSBHU1RfR0xfQ09OVEVYVF9HRVRfQ0xBU1MgKGNvbnRleHQpOworCisgICAgICAgIHdpbmRvdy0+ZHJhdyAod2luZG93LT5kcmF3X2RhdGEpOworICAgICAgICBjb250ZXh0X2NsYXNzLT5zd2FwX2J1ZmZlcnMgKGNvbnRleHQpOworCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGNvbnRleHQpOworICAgICAgfQorICAgIH0KICAgfQogfQogCkBAIC01MTIsNyArNTAwLDggQEAKICAgICBpZiAoaGFuZGxlX2V2ZW50cykgewogICAgICAgWFNlbGVjdElucHV0ICh3aW5kb3dfeDExLT5kZXZpY2UsIHdpbmRvd194MTEtPmludGVybmFsX3dpbl9pZCwKICAgICAgICAgICBTdHJ1Y3R1cmVOb3RpZnlNYXNrIHwgRXhwb3N1cmVNYXNrIHwgVmlzaWJpbGl0eUNoYW5nZU1hc2sgfAotICAgICAgICAgIFBvaW50ZXJNb3Rpb25NYXNrIHwgS2V5UHJlc3NNYXNrIHwgS2V5UmVsZWFzZU1hc2spOworICAgICAgICAgIFBvaW50ZXJNb3Rpb25NYXNrIHwgS2V5UHJlc3NNYXNrIHwgS2V5UmVsZWFzZU1hc2sgfCBCdXR0b25QcmVzc01hc2sgfAorICAgICAgICAgIEJ1dHRvblJlbGVhc2VNYXNrKTsKICAgICB9IGVsc2UgewogICAgICAgWFNlbGVjdElucHV0ICh3aW5kb3dfeDExLT5kZXZpY2UsIHdpbmRvd194MTEtPmludGVybmFsX3dpbl9pZCwKICAgICAgICAgICBTdHJ1Y3R1cmVOb3RpZnlNYXNrIHwgRXhwb3N1cmVNYXNrIHwgVmlzaWJpbGl0eUNoYW5nZU1hc2spOwpAQCAtNTI3LDEwICs1MTYsNiBAQAogICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzczsKICAgR3N0R0xXaW5kb3cgKndpbmRvdzsKICAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKLSAgY29uc3QgY2hhciAqa2V5X3N0ciA9IE5VTEw7Ci0gIEtleVN5bSBrZXlzeW07Ci0gIHN0cnVjdCBtb3VzZV9ldmVudCAqbW91c2VfZGF0YTsKLSAgc3RydWN0IGtleV9ldmVudCAqa2V5X2RhdGE7CiAKICAgd2luZG93ID0gR1NUX0dMX1dJTkRPVyAod2luZG93X3gxMSk7CiAKQEAgLTYwMyw0NyArNTg4LDM5IEBACiAgICAgICAgIGJyZWFrOwogICAgICAgY2FzZSBLZXlQcmVzczoKICAgICAgIGNhc2UgS2V5UmVsZWFzZToKKyAgICAgIHsKKyAgICAgICAgY29uc3QgY2hhciAqa2V5X3N0ciA9IE5VTEwsICprZXlfdHlwZSA9IE5VTEw7CisgICAgICAgIEtleVN5bSBrZXlzeW07CisKICAgICAgICAga2V5c3ltID0gWGtiS2V5Y29kZVRvS2V5c3ltICh3aW5kb3dfeDExLT5kZXZpY2UsCiAgICAgICAgICAgICBldmVudC54a2V5LmtleWNvZGUsIDAsIDApOwogICAgICAgICBrZXlfc3RyID0gWEtleXN5bVRvU3RyaW5nIChrZXlzeW0pOwotICAgICAgICBrZXlfZGF0YSA9IGdfc2xpY2VfbmV3IChzdHJ1Y3Qga2V5X2V2ZW50KTsKLSAgICAgICAga2V5X2RhdGEtPndpbmRvdyA9IHdpbmRvdzsKLSAgICAgICAga2V5X2RhdGEtPmtleV9zdHIgPSBYS2V5c3ltVG9TdHJpbmcgKGtleXN5bSk7Ci0gICAgICAgIGtleV9kYXRhLT5ldmVudF90eXBlID0KLSAgICAgICAgICAgIGV2ZW50LnR5cGUgPT0gS2V5UHJlc3MgPyAia2V5LXByZXNzIiA6ICJrZXktcmVsZWFzZSI7Ci0gICAgICAgIEdTVF9ERUJVRyAoImlucHV0IGV2ZW50IGtleSAlZCBwcmVzc2VkIG92ZXIgd2luZG93IGF0ICVkLCVkICglcykiLAotICAgICAgICAgICAgZXZlbnQueGtleS5rZXljb2RlLCBldmVudC54a2V5LngsIGV2ZW50LnhrZXkueSwga2V5X3N0cik7Ci0gICAgICAgIGdfbWFpbl9jb250ZXh0X2ludm9rZSAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQsCi0gICAgICAgICAgICAoR1NvdXJjZUZ1bmMpIGdzdF9nbF93aW5kb3dfa2V5X2V2ZW50X2NiLCBrZXlfZGF0YSk7CisgICAgICAgIGtleV90eXBlID0gZXZlbnQudHlwZSA9PSBLZXlQcmVzcyA/ICJrZXktcHJlc3MiIDogImtleS1yZWxlYXNlIjsKKyAgICAgICAgR1NUX0RFQlVHICgiaW5wdXQgZXZlbnQga2V5ICVkICVzIG92ZXIgd2luZG93IGF0ICVkLCVkICglcykiLAorICAgICAgICAgICAgZXZlbnQueGtleS5rZXljb2RlLCBrZXlfdHlwZSwgZXZlbnQueGtleS54LCBldmVudC54a2V5LnksIGtleV9zdHIpOworICAgICAgICBnc3RfZ2xfd2luZG93X3NlbmRfa2V5X2V2ZW50X2FzeW5jICh3aW5kb3csIGtleV90eXBlLCBrZXlfc3RyKTsKICAgICAgICAgYnJlYWs7CisgICAgICB9CiAgICAgICBjYXNlIEJ1dHRvblByZXNzOgotICAgICAgY2FzZSBCdXR0b25SZWxlYXNlOgotICAgICAgICBHU1RfREVCVUcgKCJpbnB1dCBldmVudCBtb3VzZSBidXR0b24gJWQgcHJlc3NlZCBvdmVyIHdpbmRvdyBhdCAlZCwlZCIsCi0gICAgICAgICAgICBldmVudC54YnV0dG9uLmJ1dHRvbiwgZXZlbnQueGJ1dHRvbi54LCBldmVudC54YnV0dG9uLnkpOwotICAgICAgICBtb3VzZV9kYXRhID0gZ19zbGljZV9uZXcgKHN0cnVjdCBtb3VzZV9ldmVudCk7Ci0gICAgICAgIG1vdXNlX2RhdGEtPndpbmRvdyA9IHdpbmRvdzsKLSAgICAgICAgbW91c2VfZGF0YS0+ZXZlbnRfdHlwZSA9Ci0gICAgICAgICAgICBldmVudC50eXBlID09Ci0gICAgICAgICAgICBCdXR0b25QcmVzcyA/ICJtb3VzZS1idXR0b24tcHJlc3MiIDogIm1vdXNlLWJ1dHRvbi1yZWxlYXNlIjsKLSAgICAgICAgbW91c2VfZGF0YS0+YnV0dG9uID0gZXZlbnQueGJ1dHRvbi5idXR0b247Ci0gICAgICAgIG1vdXNlX2RhdGEtPnBvc3ggPSAoZG91YmxlKSBldmVudC54YnV0dG9uLng7Ci0gICAgICAgIG1vdXNlX2RhdGEtPnBvc3kgPSAoZG91YmxlKSBldmVudC54YnV0dG9uLnk7CisgICAgICBjYXNlIEJ1dHRvblJlbGVhc2U6eworICAgICAgICBjb25zdCBjaGFyICptb3VzZV90eXBlID0gTlVMTDsKIAotICAgICAgICBnX21haW5fY29udGV4dF9pbnZva2UgKHdpbmRvdy0+bmF2aWdhdGlvbl9jb250ZXh0LAotICAgICAgICAgICAgKEdTb3VyY2VGdW5jKSBnc3RfZ2xfd2luZG93X21vdXNlX2V2ZW50X2NiLCBtb3VzZV9kYXRhKTsKKyAgICAgICAgbW91c2VfdHlwZSA9IGV2ZW50LnR5cGUgPT0KKyAgICAgICAgICAgIEJ1dHRvblByZXNzID8gIm1vdXNlLWJ1dHRvbi1wcmVzcyIgOiAibW91c2UtYnV0dG9uLXJlbGVhc2UiOworCisgICAgICAgIEdTVF9ERUJVRyAoImlucHV0IGV2ZW50IG1vdXNlIGJ1dHRvbiAlZCAlcyBvdmVyIHdpbmRvdyBhdCAlZCwlZCIsCisgICAgICAgICAgICBldmVudC54YnV0dG9uLmJ1dHRvbiwgbW91c2VfdHlwZSwgZXZlbnQueGJ1dHRvbi54LCBldmVudC54YnV0dG9uLnkpOworCisgICAgICAgIGdzdF9nbF93aW5kb3dfc2VuZF9tb3VzZV9ldmVudF9hc3luYyAod2luZG93LCBtb3VzZV90eXBlLAorICAgICAgICAgICAgZXZlbnQueGJ1dHRvbi5idXR0b24sIGV2ZW50LnhidXR0b24ueCwgZXZlbnQueGJ1dHRvbi55KTsKICAgICAgICAgYnJlYWs7CisgICAgICB9CiAgICAgICBjYXNlIE1vdGlvbk5vdGlmeToKICAgICAgICAgR1NUX0RFQlVHICgiaW5wdXQgZXZlbnQgcG9pbnRlciBtb3ZlZCBvdmVyIHdpbmRvdyBhdCAlZCwlZCIsCiAgICAgICAgICAgICBldmVudC54bW90aW9uLngsIGV2ZW50Lnhtb3Rpb24ueSk7Ci0gICAgICAgIG1vdXNlX2RhdGEgPSBnX3NsaWNlX25ldyAoc3RydWN0IG1vdXNlX2V2ZW50KTsKLSAgICAgICAgbW91c2VfZGF0YS0+d2luZG93ID0gd2luZG93OwotICAgICAgICBtb3VzZV9kYXRhLT5ldmVudF90eXBlID0gIm1vdXNlLW1vdmUiOwotICAgICAgICBtb3VzZV9kYXRhLT5idXR0b24gPSAwOwotICAgICAgICBtb3VzZV9kYXRhLT5wb3N4ID0gKGRvdWJsZSkgZXZlbnQueGJ1dHRvbi54OwotICAgICAgICBtb3VzZV9kYXRhLT5wb3N5ID0gKGRvdWJsZSkgZXZlbnQueGJ1dHRvbi55OwogCi0gICAgICAgIGdfbWFpbl9jb250ZXh0X2ludm9rZSAod2luZG93LT5uYXZpZ2F0aW9uX2NvbnRleHQsIChHU291cmNlRnVuYykKLSAgICAgICAgICAgIGdzdF9nbF93aW5kb3dfbW91c2VfZXZlbnRfY2IsIG1vdXNlX2RhdGEpOworICAgICAgICBnc3RfZ2xfd2luZG93X3NlbmRfbW91c2VfZXZlbnRfYXN5bmMgKHdpbmRvdywgIm1vdXNlLW1vdmUiLCAwLAorICAgICAgICAgICAgZXZlbnQueGJ1dHRvbi54LCBldmVudC54YnV0dG9uLnkpOwogICAgICAgICBicmVhazsKICAgICAgIGRlZmF1bHQ6CiAgICAgICAgIEdTVF9ERUJVRyAoInVua25vd24gWEV2ZW50IHR5cGU6ICV1IiwgZXZlbnQudHlwZSk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5oIGIvZ3N0LWxpYnMvZ3N0L2dsL3gxMS9nc3RnbHdpbmRvd194MTEuaAppbmRleCBjMTZhNjM3Li5iNGE0YjE3IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvZ2wveDExL2dzdGdsd2luZG93X3gxMS5oCisrKyBiL2dzdC1saWJzL2dzdC9nbC94MTEvZ3N0Z2x3aW5kb3dfeDExLmgKQEAgLTMxLDggKzMxLDggQEAKICNkZWZpbmUgR1NUX0dMX1RZUEVfV0lORE9XX1gxMSAgICAgICAgIChnc3RfZ2xfd2luZG93X3gxMV9nZXRfdHlwZSgpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX1gxMShvKSAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1gxMSwgR3N0R0xXaW5kb3dYMTEpKQogI2RlZmluZSBHU1RfR0xfV0lORE9XX1gxMV9DTEFTUyhrKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTUygoayksIEdTVF9HTF9UWVBFX1dJTkRPV19YMTEsIEdzdEdMV2luZG93WDExQ2xhc3MpKQotI2RlZmluZSBHU1RfR0xfSVNfV0lORE9XX1gxMShvKSAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvKSwgR1NUX0dMX1RZUEVfV0lORE9XX1gxMSkpCi0jZGVmaW5lIEdTVF9HTF9JU19XSU5ET1dfWDExX0NMQVNTKGspICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGspLCBHU1RfR0xfVFlQRV9XSU5ET1dfWDExKSkKKyNkZWZpbmUgR1NUX0lTX0dMX1dJTkRPV19YMTEobykgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgobyksIEdTVF9HTF9UWVBFX1dJTkRPV19YMTEpKQorI2RlZmluZSBHU1RfSVNfR0xfV0lORE9XX1gxMV9DTEFTUyhrKSAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrKSwgR1NUX0dMX1RZUEVfV0lORE9XX1gxMSkpCiAjZGVmaW5lIEdTVF9HTF9XSU5ET1dfWDExX0dFVF9DTEFTUyhvKSAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygobyksIEdTVF9HTF9UWVBFX1dJTkRPV19YMTEsIEdzdEdMV2luZG93WDExQ2xhc3MpKQogCiB0eXBlZGVmIHN0cnVjdCBfR3N0R0xXaW5kb3dYMTEgICAgICAgIEdzdEdMV2luZG93WDExOwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsaWItY29tcGF0LXByaXZhdGUuaCBiL2dzdC1saWJzL2dzdC9nbGliLWNvbXBhdC1wcml2YXRlLmgKaW5kZXggYzk2YzAwNS4uMWE0YWE3ZCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsaWItY29tcGF0LXByaXZhdGUuaAorKysgYi9nc3QtbGlicy9nc3QvZ2xpYi1jb21wYXQtcHJpdmF0ZS5oCkBAIC0yNywxMTQgKzI3LDYgQEAKIAogR19CRUdJTl9ERUNMUwogCi0jaWYgIUdMSUJfQ0hFQ0tfVkVSU0lPTigyLDI1LDApCi0KLSNpZiBkZWZpbmVkIChfTVNDX1ZFUikgJiYgIWRlZmluZWQoX1dJTjY0KQotdHlwZWRlZiBzdHJ1Y3QgX3N0YXQzMiBHU3RhdEJ1ZjsKLSNlbHNlCi10eXBlZGVmIHN0cnVjdCBzdGF0IEdTdGF0QnVmOwotI2VuZGlmCi0KLSNlbmRpZgotCi0jaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsMjYsMCkKLSNkZWZpbmUgR0xJQl9IQVNfR0RBVEVUSU1FCi0jZW5kaWYKLQotLyogU2VlIGJ1ZyAjNjUxNTE0ICovCi0jaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsMjksNSkKLSNkZWZpbmUgR19BVE9NSUNfUE9JTlRFUl9DT01QQVJFX0FORF9FWENIQU5HRShhLGIsYykgXAotICAgIGdfYXRvbWljX3BvaW50ZXJfY29tcGFyZV9hbmRfZXhjaGFuZ2UgKChhKSwoYiksKGMpKQotI2RlZmluZSBHX0FUT01JQ19JTlRfQ09NUEFSRV9BTkRfRVhDSEFOR0UoYSxiLGMpIFwKLSAgICBnX2F0b21pY19pbnRfY29tcGFyZV9hbmRfZXhjaGFuZ2UgKChhKSwoYiksKGMpKQotI2Vsc2UKLSNkZWZpbmUgR19BVE9NSUNfUE9JTlRFUl9DT01QQVJFX0FORF9FWENIQU5HRShhLGIsYykgXAotICAgIGdfYXRvbWljX3BvaW50ZXJfY29tcGFyZV9hbmRfZXhjaGFuZ2UgKCh2b2xhdGlsZSBncG9pbnRlciAqKShhKSwoYiksKGMpKQotI2RlZmluZSBHX0FUT01JQ19JTlRfQ09NUEFSRV9BTkRfRVhDSEFOR0UoYSxiLGMpIFwKLSAgICBnX2F0b21pY19pbnRfY29tcGFyZV9hbmRfZXhjaGFuZ2UgKCh2b2xhdGlsZSBpbnQgKikoYSksKGIpLChjKSkKLSNlbmRpZgotCi0vKiBTZWUgYnVnICM2NTE1MTQgKi8KLSNpZiBHTElCX0NIRUNLX1ZFUlNJT04oMiwyOSw1KQotI2RlZmluZSBHX0FUT01JQ19JTlRfQUREKGEsYikgZ19hdG9taWNfaW50X2FkZCAoKGEpLChiKSkKLSNlbHNlCi0jZGVmaW5lIEdfQVRPTUlDX0lOVF9BREQoYSxiKSBnX2F0b21pY19pbnRfZXhjaGFuZ2VfYW5kX2FkZCAoKGEpLChiKSkKLSNlbmRpZgotCi0vKiBjb3BpZXMgKi8KLQotI2lmIEdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgMzEsIDApCi0jZGVmaW5lIGdfbXV0ZXhfbmV3IGdzdF9nX211dGV4X25ldwotc3RhdGljIGlubGluZSBHTXV0ZXggKgotZ3N0X2dfbXV0ZXhfbmV3ICh2b2lkKQotewotICBHTXV0ZXggKm11dGV4ID0gZ19zbGljZV9uZXcgKEdNdXRleCk7Ci0gIGdfbXV0ZXhfaW5pdCAobXV0ZXgpOwotICByZXR1cm4gbXV0ZXg7Ci19Ci0jZGVmaW5lIGdfbXV0ZXhfZnJlZSBnc3RfZ19tdXRleF9mcmVlCi1zdGF0aWMgaW5saW5lIHZvaWQKLWdzdF9nX211dGV4X2ZyZWUgKEdNdXRleCAqbXV0ZXgpCi17Ci0gIGdfbXV0ZXhfY2xlYXIgKG11dGV4KTsKLSAgZ19zbGljZV9mcmVlIChHTXV0ZXgsIG11dGV4KTsKLX0KLSNkZWZpbmUgZ19jb25kX25ldyBnc3RfZ19jb25kX25ldwotc3RhdGljIGlubGluZSBHQ29uZCAqCi1nc3RfZ19jb25kX25ldyAodm9pZCkKLXsKLSAgR0NvbmQgKmNvbmQgPSBnX3NsaWNlX25ldyAoR0NvbmQpOwotICBnX2NvbmRfaW5pdCAoY29uZCk7Ci0gIHJldHVybiBjb25kOwotfQotI2RlZmluZSBnX2NvbmRfZnJlZSBnc3RfZ19jb25kX2ZyZWUKLXN0YXRpYyBpbmxpbmUgdm9pZAotZ3N0X2dfY29uZF9mcmVlIChHQ29uZCAqY29uZCkKLXsKLSAgZ19jb25kX2NsZWFyIChjb25kKTsKLSAgZ19zbGljZV9mcmVlIChHQ29uZCwgY29uZCk7Ci19Ci0jZGVmaW5lIGdfY29uZF90aW1lZF93YWl0IGdzdF9nX2NvbmRfdGltZWRfd2FpdAotc3RhdGljIGlubGluZSBnYm9vbGVhbgotZ3N0X2dfY29uZF90aW1lZF93YWl0IChHQ29uZCAqY29uZCwgR011dGV4ICptdXRleCwgR1RpbWVWYWwgKmFic190aW1lKQotewotICBnaW50NjQgZW5kX3RpbWU7Ci0KLSAgaWYgKGFic190aW1lID09IE5VTEwpIHsKLSAgICBnX2NvbmRfd2FpdCAoY29uZCwgbXV0ZXgpOwotICAgIHJldHVybiBUUlVFOwotICB9Ci0KLSAgZW5kX3RpbWUgPSBhYnNfdGltZS0+dHZfc2VjOwotICBlbmRfdGltZSAqPSAxMDAwMDAwOwotICBlbmRfdGltZSArPSBhYnNfdGltZS0+dHZfdXNlYzsKLQotICAvKiB3b3VsZCBiZSBuaWNlIGlmIHdlIGhhZCBjbG9ja19ydG9mZnNldCwgYnV0IHRoYXQgZGlkbid0IHNlZW0gdG8KLSAgICogbWFrZSBpdCBpbnRvIHRoZSBrZXJuZWwgeWV0Li4uCi0gICAqLwotICAvKiBpZiBDTE9DS19NT05PVE9OSUMgaXMgbm90IGRlZmluZWQgdGhlbiBnX2dldF9tb250b25pY190aW1lKCkgYW5kCi0gICAqIGdfZ2V0X3JlYWxfdGltZSgpIGFyZSByZXR1cm5pbmcgdGhlIHNhbWUgY2xvY2sgYW5kIHdlJ2QgYWRkIH4wCi0gICAqLwotICBlbmRfdGltZSArPSBnX2dldF9tb25vdG9uaWNfdGltZSAoKSAtIGdfZ2V0X3JlYWxfdGltZSAoKTsKLSAgcmV0dXJuIGdfY29uZF93YWl0X3VudGlsIChjb25kLCBtdXRleCwgZW5kX3RpbWUpOwotfQotI2VuZGlmIC8qIEdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgMzEsIDApICovCi0KLSNpZiBHTElCX0NIRUNLX1ZFUlNJT04gKDIsIDMxLCAwKQotI2RlZmluZSBnX3RocmVhZF9jcmVhdGUgZ3N0X2dfdGhyZWFkX2NyZWF0ZQotc3RhdGljIGlubGluZSBHVGhyZWFkICoKLWdzdF9nX3RocmVhZF9jcmVhdGUgKEdUaHJlYWRGdW5jIGZ1bmMsIGdwb2ludGVyIGRhdGEsIGdib29sZWFuIGpvaW5hYmxlLAotICAgIEdFcnJvciAqKmVycm9yKQotewotICBHVGhyZWFkICp0aHJlYWQgPSBnX3RocmVhZF90cnlfbmV3ICgiZ3N0LWNoZWNrIiwgZnVuYywgZGF0YSwgZXJyb3IpOwotICBpZiAoIWpvaW5hYmxlKQotICAgIGdfdGhyZWFkX3VucmVmICh0aHJlYWQpOwotICByZXR1cm4gdGhyZWFkOwotfQotI2VuZGlmIC8qIEdMSUJfQ0hFQ0tfVkVSU0lPTiAoMiwgMzEsIDApICovCi0KLS8qIGFkYXB0YXRpb25zICovCi0KIEdfRU5EX0RFQ0xTCiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuYW0KaW5kZXggMDllYjk3Yy4uODM2OGY0MSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5hbQorKysgYi9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmFtCkBAIC0zMyw3ICszMyw4IEBACiAJCUdTVF9QTFVHSU5fU1lTVEVNX1BBVEhfMV8wPSIiIEdTVF9QTFVHSU5fUEFUSF8xXzA9IiIgR1NUX1JFR0lTVFJZX1VQREFURT1ubyBcCiAJCSQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSAtdiAtLW5hbWVzcGFjZSBHc3RJbnNlcnRCaW4gXAogCQktLW5zdmVyc2lvbj1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JCS0tc3RyaXAtcHJlZml4PUdzdCBcCisJCS0taWRlbnRpZmllci1wcmVmaXg9R3N0IFwKKwkJLS1zeW1ib2wtcHJlZml4PWdzdCBcCiAJCS0td2Fybi1hbGwgXAogCQktLWMtaW5jbHVkZSAiZ3N0L2luc2VydGJpbi9nc3RpbnNlcnRiaW4uaCIgXAogCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXApAQCAtNDcsNyArNDgsNyBAQAogCQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogCQktLXBrZyBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItaW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkJLS1hZGQtaW5pdC1zZWN0aW9uPSJnc3RfaW5pdChOVUxMLE5VTEwpOyIgXAorCQktLWFkZC1pbml0LXNlY3Rpb249IiQoSU5UUk9TUEVDVElPTl9JTklUKSIgXAogCQktREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKIAkJLS1vdXRwdXQgJEAgXAogCQkkKGdpcl9oZWFkZXJzKSBcCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9NYWtlZmlsZS5pbgppbmRleCAyY2E0OGM4Li41MGNmNzNmIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXApAQCAtMjY0LDYgKzI2Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzAxLDYgKzMwMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzA5LDcgKzMxMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMyOCw4ICszMzAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzQ2LDE2ICszNDksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzgxLDYgKzM4NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQwNiw2ICs0MTIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MDcsNiArNTE1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyMCw4ICs1MjksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MzcsNiArNTQ0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU5NCwxNiArNjAzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjU1LDYgKzY2Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NjUsNiArNjc3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjc0LDYgKzY4Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTEsNyArNzI2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC0xMTQzLDcgKzExNTcsOCBAQAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9IiIgR1NUX1BMVUdJTl9QQVRIXzFfMD0iIiBHU1RfUkVHSVNUUllfVVBEQVRFPW5vIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSAtdiAtLW5hbWVzcGFjZSBHc3RJbnNlcnRCaW4gXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1uc3ZlcnNpb249QEdTVF9BUElfVkVSU0lPTkAgXAotQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1zdHJpcC1wcmVmaXg9R3N0IFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0taWRlbnRpZmllci1wcmVmaXg9R3N0IFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tc3ltYm9sLXByZWZpeD1nc3QgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS13YXJuLWFsbCBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWMtaW5jbHVkZSAiZ3N0L2luc2VydGJpbi9nc3RpbnNlcnRiaW4uaCIgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTExNTcsNyArMTE3Miw3IEBACiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2cgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1pbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAgXAotQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5pdC1zZWN0aW9uPSJnc3RfaW5pdChOVUxMLE5VTEwpOyIgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1hZGQtaW5pdC1zZWN0aW9uPSIkKElOVFJPU1BFQ1RJT05fSU5JVCkiIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1vdXRwdXQgJEAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJJChnaXJfaGVhZGVycykgXApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9nc3RpbnNlcnRiaW4uaCBiL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vZ3N0aW5zZXJ0YmluLmgKaW5kZXggMDUxYTE3YS4uNTgzMjZmNCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2luc2VydGJpbi9nc3RpbnNlcnRiaW4uaAorKysgYi9nc3QtbGlicy9nc3QvaW5zZXJ0YmluL2dzdGluc2VydGJpbi5oCkBAIC0xMDIsNSArMTAyLDkgQEAKICAgICBHc3RJbnNlcnRCaW5DYWxsYmFjayBjYWxsYmFjaywgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKIAogCisjaWZkZWYgR19ERUZJTkVfQVVUT1BUUl9DTEVBTlVQX0ZVTkMKK0dfREVGSU5FX0FVVE9QVFJfQ0xFQU5VUF9GVU5DKEdzdEluc2VydEJpbiwgZ3N0X29iamVjdF91bnJlZikKKyNlbmRpZgorCiBHX0VORF9ERUNMUwogI2VuZGlmIC8qIF9fR1NUX0lOU0VSVF9CSU5fSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9NYWtlZmlsZS5pbiBiL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlLmluCmluZGV4IDYyYzAzOTcuLjRmMjczZDYgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlLmluCisrKyBiL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL01ha2VmaWxlLmluCkBAIC0xMjQsMTYgKzEyNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtIFwKQEAgLTI5NCw2ICsyOTMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMzMSw2ICszMzIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzOSw3ICszNDIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTgsOCArMzYwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3NiwxNiArMzc5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxMSw2ICs0MTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzYsNiArNDQyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTM3LDYgKzU0NSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTAsOCArNTU5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTY3LDYgKzU3NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjQsMTYgKzYzMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4NSw2ICs2OTYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjk1LDYgKzcwNyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwNCw2ICs3MTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQxLDcgKzc1Niw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvcGhvdG9ncmFwaHkuYyBiL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5LmMKaW5kZXggNTQ4MTAzNy4uMTc5OWM1MiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvcGhvdG9ncmFwaHkuYworKysgYi9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5jCkBAIC0yOTksOCArMjk5LDYgQEAKICAqIFNldCB0aGUgbm9pc2UgcmVkdWN0aW9uIG1vZGUgZm9yIHRoZSAjR3N0RWxlbWVudAogICoKICAqIFJldHVybnM6ICVUUlVFIGlmIHNldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgJUZBTFNFIG90aGVyd2lzZQotICoKLSAqIFNpbmNlOiAwLjEwLjIxCiAgKi8KIC8qKgogICogZ3N0X3Bob3RvZ3JhcGh5X2dldF9ub2lzZV9yZWR1Y3Rpb246CkBAIC0zMTAsOCArMzA4LDYgQEAKICAqIEdldCB0aGUgbm9pc2UgcmVkdWN0aW9uIG1vZGUgZm9yIHRoZSAjR3N0RWxlbWVudAogICoKICAqIFJldHVybnM6ICVUUlVFIGlmIGdldHRpbmcgdGhlIHZhbHVlIHN1Y2NlZWRlZCwgJUZBTFNFIG90aGVyd2lzZQotICoKLSAqIFNpbmNlOiAwLjEwLjIxCiAgKi8KIEdTVF9QSE9UT0dSQVBIWV9GVU5DX1RFTVBMQVRFIChub2lzZV9yZWR1Y3Rpb24sIEdzdFBob3RvZ3JhcGh5Tm9pc2VSZWR1Y3Rpb24pOwogCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5oIGIvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvcGhvdG9ncmFwaHkuaAppbmRleCBlNjVjMGQ5Li44YzQ0OTY2IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9waG90b2dyYXBoeS5oCisrKyBiL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5LmgKQEAgLTE1OSw4ICsxNTksNiBAQAogICogcmVtYWluaW5nIG5vaXNlLgogICoKICAqIE5vaXNlIFJlZHVjdGlvbiBmZWF0dXJlcyBvZiBhIHBob3RvZ3JhcGh5IGNhcHR1cmUgb3IgZmlsdGVyIGVsZW1lbnQuCi0gKgotICogU2luY2U6IDAuMTAuMjEKICAqLwogdHlwZWRlZiBlbnVtCiB7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5hbQppbmRleCAyNTExZDQ5Li5jZDhiOGFkIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmFtCisrKyBiL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuYW0KQEAgLTgyLDcgKzgyLDcgQEAKIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKIAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1tcGVndHMtQEdTVF9BUElfVkVSU0lPTkAgXAotCQktLWFkZC1pbml0LXNlY3Rpb249ImdzdF9pbml0KE5VTEwsTlVMTCk7IiBcCisJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCiAJCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAogCQktLW91dHB1dCAkQCBcCiAJCSQoZ2lyX2hlYWRlcnMpIFwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvbXBlZ3RzL01ha2VmaWxlLmluCmluZGV4IGNiZDQ4NDguLjNkMTQyNDcgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC9tcGVndHMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9NYWtlZmlsZS5pbgpAQCAtMTI2LDE2ICsxMjYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCkBAIC0zMDIsNiArMzAxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzksNiArMzQwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNDcsNyArMzUwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzY2LDggKzM2OCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zODQsMTYgKzM4NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MTksNiArNDIzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDQ0LDYgKzQ1MCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU0NSw2ICs1NTMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTU4LDggKzU2Nyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU3NSw2ICs1ODIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjMyLDE2ICs2NDEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02OTMsNiArNzA0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTcwMyw2ICs3MTUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MTIsNiArNzI1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc0OSw3ICs3NjQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTEzNDcsNyArMTM2MSw3IEBACiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAogQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2cgZ3N0cmVhbWVyLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYWRkLWluaXQtc2VjdGlvbj0iZ3N0X2luaXQoTlVMTCxOVUxMKTsiIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCiBASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tb3V0cHV0ICRAIFwKIEBIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoZ2lyX2hlYWRlcnMpIFwKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzZGVzY3JpcHRvci5jIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmMKaW5kZXggZGE4NDE5Yy4uZDQ4MTdkMiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmMKQEAgLTYzNSw3ICs2MzUsNiBAQAogX3BhY2tldGl6ZV9kZXNjcmlwdG9yX2FycmF5IChHUHRyQXJyYXkgKiBhcnJheSwgZ3VpbnQ4ICoqIG91dF9kYXRhKQogewogICBndWludCBpOwotICBndWludDggaGVhZGVyX3NpemU7CiAgIEdzdE1wZWd0c0Rlc2NyaXB0b3IgKmRlc2NyaXB0b3I7CiAKICAgZ19yZXR1cm5faWZfZmFpbCAob3V0X2RhdGEgIT0gTlVMTCk7CkBAIC02NDcsMTMgKzY0Niw4IEBACiAgIGZvciAoaSA9IDA7IGkgPCBhcnJheS0+bGVuOyBpKyspIHsKICAgICBkZXNjcmlwdG9yID0gZ19wdHJfYXJyYXlfaW5kZXggKGFycmF5LCBpKTsKIAotICAgIGlmIChkZXNjcmlwdG9yLT50YWcgPT0gR1NUX01UU19ERVNDX0RWQl9FWFRFTlNJT04pCi0gICAgICBoZWFkZXJfc2l6ZSA9IDM7Ci0gICAgZWxzZQotICAgICAgaGVhZGVyX3NpemUgPSAyOwotCi0gICAgbWVtY3B5ICgqb3V0X2RhdGEsIGRlc2NyaXB0b3ItPmRhdGEsIGRlc2NyaXB0b3ItPmxlbmd0aCArIGhlYWRlcl9zaXplKTsKLSAgICAqb3V0X2RhdGEgKz0gZGVzY3JpcHRvci0+bGVuZ3RoICsgaGVhZGVyX3NpemU7CisgICAgbWVtY3B5ICgqb3V0X2RhdGEsIGRlc2NyaXB0b3ItPmRhdGEsIGRlc2NyaXB0b3ItPmxlbmd0aCArIDIpOworICAgICpvdXRfZGF0YSArPSBkZXNjcmlwdG9yLT5sZW5ndGggKyAyOwogICB9CiB9CiAKQEAgLTY4OSwxNSArNjgzLDE1IEBACiAKICAgZGVzY3JpcHRvci0+dGFnID0gdGFnOwogICBkZXNjcmlwdG9yLT50YWdfZXh0ZW5zaW9uID0gdGFnX2V4dGVuc2lvbjsKLSAgZGVzY3JpcHRvci0+bGVuZ3RoID0gbGVuZ3RoOworICBkZXNjcmlwdG9yLT5sZW5ndGggPSBsZW5ndGggKyAxOwogCiAgIGRlc2NyaXB0b3ItPmRhdGEgPSBnX21hbGxvYyAobGVuZ3RoICsgMyk7CiAKICAgZGF0YSA9IGRlc2NyaXB0b3ItPmRhdGE7CiAKICAgKmRhdGErKyA9IGRlc2NyaXB0b3ItPnRhZzsKLSAgKmRhdGErKyA9IGRlc2NyaXB0b3ItPnRhZ19leHRlbnNpb247Ci0gICpkYXRhID0gZGVzY3JpcHRvci0+bGVuZ3RoOworICAqZGF0YSsrID0gZGVzY3JpcHRvci0+bGVuZ3RoOworICAqZGF0YSA9IGRlc2NyaXB0b3ItPnRhZ19leHRlbnNpb247CiAKICAgcmV0dXJuIGRlc2NyaXB0b3I7CiB9CkBAIC0xMTA1LDMgKzEwOTksMjggQEAKIAogICByZXR1cm4gZGVzY3JpcHRvcjsKIH0KKworLyoqCisgKiBnc3RfbXBlZ3RzX2Rlc2NyaXB0b3JfZnJvbV9jdXN0b21fd2l0aF9leHRlbnNpb246CisgKiBAdGFnOiBkZXNjcmlwdG9yIHRhZworICogQHRhZ19leHRlbnNpb246IGRlc2NyaXB0b3IgdGFnIGV4dGVuc2lvbgorICogQGRhdGE6ICh0cmFuc2ZlciBub25lKTogZGVzY3JpcHRvciBkYXRhIChhZnRlciB0YWcgYW5kIGxlbmd0aCBmaWVsZCkKKyAqIEBsZW5ndGg6IGxlbmd0aCBvZiBAZGF0YQorICoKKyAqIENyZWF0ZXMgYSAjR3N0TXBlZ3RzRGVzY3JpcHRvciB3aXRoIGN1c3RvbSBAdGFnLCBAdGFnX2V4dGVuc2lvbiBhbmQgQGRhdGEKKyAqCisgKiBSZXR1cm5zOiAjR3N0TXBlZ3RzRGVzY3JpcHRvcgorICovCitHc3RNcGVndHNEZXNjcmlwdG9yICoKK2dzdF9tcGVndHNfZGVzY3JpcHRvcl9mcm9tX2N1c3RvbV93aXRoX2V4dGVuc2lvbiAoZ3VpbnQ4IHRhZywKKyAgICBndWludDggdGFnX2V4dGVuc2lvbiwgY29uc3QgZ3VpbnQ4ICogZGF0YSwgZ3NpemUgbGVuZ3RoKQoreworICBHc3RNcGVndHNEZXNjcmlwdG9yICpkZXNjcmlwdG9yOworCisgIGRlc2NyaXB0b3IgPSBfbmV3X2Rlc2NyaXB0b3Jfd2l0aF9leHRlbnNpb24gKHRhZywgdGFnX2V4dGVuc2lvbiwgbGVuZ3RoKTsKKworICBpZiAoZGF0YSAmJiAobGVuZ3RoID4gMCkpCisgICAgbWVtY3B5IChkZXNjcmlwdG9yLT5kYXRhICsgMywgZGF0YSwgbGVuZ3RoKTsKKworICByZXR1cm4gZGVzY3JpcHRvcjsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9tcGVndHMvZ3N0bXBlZ3RzZGVzY3JpcHRvci5oIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmgKaW5kZXggYmJlZjk3ZC4uYWY1NmJlMCAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmgKKysrIGIvZ3N0LWxpYnMvZ3N0L21wZWd0cy9nc3RtcGVndHNkZXNjcmlwdG9yLmgKQEAgLTM0MSw2ICszNDEsOCBAQAogCiBHc3RNcGVndHNEZXNjcmlwdG9yICoKIGdzdF9tcGVndHNfZGVzY3JpcHRvcl9mcm9tX2N1c3RvbSAoZ3VpbnQ4IHRhZywgY29uc3QgZ3VpbnQ4ICpkYXRhLCBnc2l6ZSBsZW5ndGgpOworR3N0TXBlZ3RzRGVzY3JpcHRvciAqCitnc3RfbXBlZ3RzX2Rlc2NyaXB0b3JfZnJvbV9jdXN0b21fd2l0aF9leHRlbnNpb24gKGd1aW50OCB0YWcsIGd1aW50OCB0YWdfZXh0ZW5zaW9uLCBjb25zdCBndWludDggKmRhdGEsIGdzaXplIGxlbmd0aCk7CiAKIEdfRU5EX0RFQ0xTCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMWQxZmMKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMTAzIEBACitsaWJfTFRMSUJSQVJJRVMgPSBsaWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEKKworbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMgPSBcCisJZ3N0cGxheWVyLmMgIFwKKwlnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYyAgXAorCWdzdHBsYXllci12aWRlby1yZW5kZXJlci5jICBcCisJZ3N0cGxheWVyLW1lZGlhLWluZm8uYyBcCisJZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmMgIFwKKwlnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jIFwKKwlnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jCisKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQ0ZMQUdTKQorCitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9IFwKKwkkKEdTVF9MSUJfTERGTEFHUykgXAorCSQoR1NUX0FMTF9MREZMQUdTKSBcCisJJChHU1RfTFRfTERGTEFHUykKKworbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCA9IFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAorCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3R0YWctJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdHBidXRpbHMtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKEdTVF9MSUJTKSBcCisJJChMSUJNKQorCitsaWJnc3RwbGF5ZXJkaXIgPSAkKGluY2x1ZGVkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9nc3QvcGxheWVyCisKK25vaW5zdF9IRUFERVJTID0gXAorCWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci1wcml2YXRlLmggXAorCWdzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmggXAorCWdzdHBsYXllci1tZWRpYS1pbmZvLXByaXZhdGUuaAorCitsaWJnc3RwbGF5ZXJfSEVBREVSUyA9IFwKKwlwbGF5ZXIuaCBcCisJZ3N0cGxheWVyLmggXAorCWdzdHBsYXllci10eXBlcy5oIFwKKwlnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuaCBcCisJZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmggXAorCWdzdHBsYXllci1tZWRpYS1pbmZvLmggXAorCWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5oICBcCisJZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuaCBcCisJZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaAorCitDTEVBTkZJTEVTID0KKworaWYgSEFWRV9JTlRST1NQRUNUSU9OCitCVUlMVF9HSVJTT1VSQ0VTID0gR3N0UGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmdpcgorCitnaXJfaGVhZGVycz0kKHBhdHN1YnN0ICUsJChzcmNkaXIpLyUsICQobGliZ3N0cGxheWVyX0hFQURFUlMpKQorZ2lyX3NvdXJjZXM9JChwYXRzdWJzdCAlLCQoc3JjZGlyKS8lLCAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTKSkKKworR3N0UGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYQorCSQoQU1fVl9HRU4pUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiBcCisJCSQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSAtdiAtLW5hbWVzcGFjZSBHc3RQbGF5ZXIgXAorCQktLW5zdmVyc2lvbj1AR1NUX0FQSV9WRVJTSU9OQCBcCisJCS0td2Fybi1hbGwgXAorCQktLXN0cmlwLXByZWZpeD1Hc3QgXAorCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJCS0tYy1pbmNsdWRlICJnc3QvcGxheWVyL3BsYXllci5oIiBcCisJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItMS4wYCBcCisJCS0tbGlicmFyeS1wYXRoPSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJCS0tbGlicmFyeT1saWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAorCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkJLS1saWJ0b29sPSIke0xJQlRPT0x9IiBcCisJCS0tcGtnIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBcCisJCS0tcGtnIGdzdHJlYW1lci1hdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCisJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCisJCS0tcGtnIGdzdHJlYW1lci10YWctQEdTVF9BUElfVkVSU0lPTkAgXAorCQktLXBrZyBnc3RyZWFtZXItcGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCisJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItcGxheWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwkJLS1hZGQtaW5pdC1zZWN0aW9uPSIkKElOVFJPU1BFQ1RJT05fSU5JVCkiIFwKKwkJLS1vdXRwdXQgJEAgXAorCQkkKGdpcl9oZWFkZXJzKSBcCisJCSQoZ2lyX3NvdXJjZXMpCisKKyMgSU5UUk9TUEVDVElPTl9HSVJESVIvSU5UUk9TUEVDVElPTl9UWVBFTElCRElSIGFyZW4ndCB0aGUgcmlnaHQgcGxhY2UgdG8KKyMgaW5zdGFsbCBhbnl0aGluZyAtIHdlIG5lZWQgdG8gaW5zdGFsbCBpbnNpZGUgb3VyIHByZWZpeC4KK2dpcmRpciA9ICQoZGF0YWRpcikvZ2lyLTEuMAorZ2lyX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVMpCisKK3R5cGVsaWJzZGlyID0gJChsaWJkaXIpL2dpcmVwb3NpdG9yeS0xLjAvCisKK3R5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKKworJS50eXBlbGliOiAlLmdpciAkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCisJJChBTV9WX0dFTilQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiIFwKKwkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCisJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikvZ3N0LWxpYnMgXAorCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvZ3N0LWxpYnMgXAorCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItMS4wYCBcCisJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQorCitDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQorZW5kaWYKZGlmZiAtLWdpdCBhL2V4dC9nc2V0dGluZ3MvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlLmluCnNpbWlsYXJpdHkgaW5kZXggNjAlCnJlbmFtZSBmcm9tIGV4dC9nc2V0dGluZ3MvTWFrZWZpbGUuaW4KcmVuYW1lIHRvIGdzdC1saWJzL2dzdC9wbGF5ZXIvTWFrZWZpbGUuaW4KaW5kZXggNDU2MGIxOC4uNTQ0Yzc4NSAxMDA2NDQKLS0tIGEvZXh0L2dzZXR0aW5ncy9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlLmluCkBAIC0xNSw2ICsxNSw3IEBACiBAU0VUX01BS0VACiAKIAorCiBWUEFUSCA9IEBzcmNkaXJACiBhbV9faXNfZ251X21ha2UgPSB7IFwKICAgaWYgdGVzdCAteiAnJChNQUtFTEVWRUwpJzsgdGhlbiBcCkBAIC05MCw3ICs5MSw4IEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1zdWJkaXIgPSBleHQvZ3NldHRpbmdzCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAYW1fX2FwcGVuZF8xID0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCitzdWJkaXIgPSBnc3QtbGlicy9nc3QvcGxheWVyCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCkBAIC0xMTYsMjQgKzExOCwyMiBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKLURJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKLQkkKGFtX19ESVNUX0NPTU1PTikKK0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobGliZ3N0cGxheWVyX0hFQURFUlMpIFwKKwkkKG5vaW5zdF9IRUFERVJTKSAkKGFtX19ESVNUX0NPTU1PTikKIG1raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCiBDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCi1DT05GSUdfQ0xFQU5fRklMRVMgPSAgXAotCW9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAorQ09ORklHX0NMRUFOX0ZJTEVTID0KIENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9CiBhbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKIGFtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCkBAIC0xNjIsMzAgKzE2MiwzMSBAQAogICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKICAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKICAgfQotYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCi1MVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQorYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGxpYmRpcikiICIkKERFU1RESVIpJChnaXJkaXIpIiBcCisJIiQoREVTVERJUikkKHR5cGVsaWJzZGlyKSIgIiQoREVTVERJUikkKGxpYmdzdHBsYXllcmRpcikiCitMVExJQlJBUklFUyA9ICQobGliX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTID0gIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX09CSkVDVFMgPSAgXAotCWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc2luay5sbyBcCi0JbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zcmMubG8gXAotCWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5sbyBcCi0JbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMubG8gXAotCWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNpbmsubG8gXAotCWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5sbyBcCi0JbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtcGx1Z2luLmxvCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9PQkpFQ1RTID0gIFwKLQkkKGFtX2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX09CSkVDVFMpCithbV9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfT0JKRUNUUyA9ICBcCisJbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5sbyBcCisJbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5sbyBcCisJbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1yZW5kZXJlci5sbyBcCisJbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1tZWRpYS1pbmZvLmxvIFwKKwlsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmxvIFwKKwlsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIubG8gXAorCWxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5sbworbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMgPSAgXAorCSQoYW1fbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKLQkkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIFwKLQktLW1vZGU9bGluayAkKENDTEQpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSBcCi0JJChDRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyBcCi0JJEAKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIFwKKwktLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKKwkkKENDTEQpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKKwkkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjIwLDE0ICsyMjEsMTUgQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9TT1VSQ0VTKQotRElTVF9TT1VSQ0VTID0gJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXAogICAgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCiAgIGVzYWMKLUhFQURFUlMgPSAkKG5vaW5zdF9IRUFERVJTKQorREFUQSA9ICQoZ2lyX0RBVEEpICQodHlwZWxpYnNfREFUQSkKK0hFQURFUlMgPSAkKGxpYmdzdHBsYXllcl9IRUFERVJTKSAkKG5vaW5zdF9IRUFERVJTKQogYW1fX3RhZ2dlZF9maWxlcyA9ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKFRBR1NfRklMRVMpICQoTElTUCkKICMgUmVhZCBhIGxpc3Qgb2YgbmV3bGluZS1zZXBhcmF0ZWQgc3RyaW5ncyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCwKICMgYW5kIHByaW50IGVhY2ggb2YgdGhlbSBvbmNlLCB3aXRob3V0IGR1cGxpY2F0ZXMuICBJbnB1dCBvcmRlciBpcwpAQCAtMjQ3LDkgKzI0OSw3IEBACiAgIGRvbmUgfCAkKGFtX191bmlxdWlmeV9pbnB1dClgCiBFVEFHUyA9IGV0YWdzCiBDVEFHUyA9IGN0YWdzCi1hbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXAotCSQoc3JjZGlyKS9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW4gXAotCSQodG9wX3NyY2RpcikvZGVwY29tcAorYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX3NyY2RpcikvZGVwY29tcAogRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFDTE9DQUxfQU1GTEFHUyA9IEBBQ0xPQ0FMX0FNRkxBR1NACkBAIC0yODYsNiArMjg2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjMsNiArMzI1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzEsNyArMzM1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzUwLDggKzM1Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjgsMTYgKzM3MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDMsNiArNDA4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI4LDYgKzQzNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyOSw2ICs1MzgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQyLDggKzU1Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1OSw2ICs1NjcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjE2LDE2ICs2MjYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Nyw2ICs3MDAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTYsNiArNzEwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMyw3ICs3NDksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc3MywzNyArNzg4LDY1IEBACiB0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogd2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKLWdzZXR0aW5nc19TQ0hFTUFTID0gb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50cy5sYQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfU09VUkNFUyA9IFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMgXAotICAgICAgICBnc3Rnc2V0dGluZ3NhdWRpb3NyYy5jIFwKLSAgICAgICAgZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmMgXAotICAgICAgICBnc3Rnc2V0dGluZ3N2aWRlb3NyYy5jIFwKLSAgICAgICAgZ3N0c3dpdGNoc2luay5jIFwKLSAgICAgICAgZ3N0c3dpdGNoc3JjLmMgXAotCXBsdWdpbi5jCitsaWJfTFRMSUJSQVJJRVMgPSBsaWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9TT1VSQ0VTID0gXAorCWdzdHBsYXllci5jICBcCisJZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmMgIFwKKwlnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYyAgXAorCWdzdHBsYXllci1tZWRpYS1pbmZvLmMgXAorCWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jICBcCisJZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYyBcCisJZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uYwogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChHU0VUVElOR1NfQ0ZMQUdTKSAkKERJUl9DRkxBR1MpIFwKLQktREdzdFN3aXRjaFNyYz1Hc3RHU2V0dGluZ3NTd2l0Y2hTcmMgXAotCS1ER3N0U3dpdGNoU3JjQ2xhc3M9R3N0R1NldHRpbmdzU3dpdGNoU3JjQ2xhc3MgXAotCS1ER3N0U3dpdGNoU2luaz1Hc3RHU2V0dGluZ3NTd2l0Y2hTaW5rIFwKLQktREdzdFN3aXRjaFNpbmtDbGFzcz1Hc3RHU2V0dGluZ3NTd2l0Y2hTaW5rQ2xhc3MKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQ0ZMQUdTKQogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJBREQgPSAkKEdTVF9MSUJTKSAkKEdTRVRUSU5HU19MSUJTKQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MREZMQUdTID0gXAorCSQoR1NUX0xJQl9MREZMQUdTKSBcCisJJChHU1RfQUxMX0xERkxBR1MpIFwKKwkkKEdTVF9MVF9MREZMQUdTKQorCitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfTElCQUREID0gXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCisJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0cGJ1dGlscy0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQoR1NUX0xJQlMpIFwKKwkkKExJQk0pCisKK2xpYmdzdHBsYXllcmRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC9wbGF5ZXIKIG5vaW5zdF9IRUFERVJTID0gXAotICAgICAgICBnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuaCBcCi0gICAgICAgIGdzdGdzZXR0aW5nc2F1ZGlvc3JjLmggXAotICAgICAgICBnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuaCBcCi0gICAgICAgIGdzdGdzZXR0aW5nc3ZpZGVvc3JjLmggXAotICAgICAgICBnc3Rzd2l0Y2hzaW5rLmggXAotICAgICAgICBnc3Rzd2l0Y2hzcmMuaCBcCi0JZ3N0Z3NldHRpbmdzLmgKKwlnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oIFwKKwlnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oIFwKKwlnc3RwbGF5ZXItbWVkaWEtaW5mby1wcml2YXRlLmgKIAotRVhUUkFfRElTVCA9IG9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAotQ0xFQU5GSUxFUyA9ICQoZ3NldHRpbmdzX1NDSEVNQVMpCitsaWJnc3RwbGF5ZXJfSEVBREVSUyA9IFwKKwlwbGF5ZXIuaCBcCisJZ3N0cGxheWVyLmggXAorCWdzdHBsYXllci10eXBlcy5oIFwKKwlnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuaCBcCisJZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmggXAorCWdzdHBsYXllci1tZWRpYS1pbmZvLmggXAorCWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5oICBcCisJZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuaCBcCisJZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaAorCitDTEVBTkZJTEVTID0gJChhbV9fYXBwZW5kXzEpCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAQlVJTFRfR0lSU09VUkNFUyA9IEdzdFBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5naXIKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUBnaXJfaGVhZGVycyA9ICQocGF0c3Vic3QgJSwkKHNyY2RpcikvJSwgJChsaWJnc3RwbGF5ZXJfSEVBREVSUykpCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAZ2lyX3NvdXJjZXMgPSAkKHBhdHN1YnN0ICUsJChzcmNkaXIpLyUsICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX1NPVVJDRVMpKQorCisjIElOVFJPU1BFQ1RJT05fR0lSRElSL0lOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUiBhcmVuJ3QgdGhlIHJpZ2h0IHBsYWNlIHRvCisjIGluc3RhbGwgYW55dGhpbmcgLSB3ZSBuZWVkIHRvIGluc3RhbGwgaW5zaWRlIG91ciBwcmVmaXguCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAZ2lyZGlyID0gJChkYXRhZGlyKS9naXItMS4wCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAZ2lyX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVMpCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAdHlwZWxpYnNkaXIgPSAkKGxpYmRpcikvZ2lyZXBvc2l0b3J5LTEuMC8KK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC04MTcsOSArODYwLDkgQEAKIAkgICAgICBleGl0IDE7OyBcCiAJICBlc2FjOyBcCiAJZG9uZTsgXAotCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGV4dC9nc2V0dGluZ3MvTWFrZWZpbGUnOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZ3N0LWxpYnMvZ3N0L3BsYXllci9NYWtlZmlsZSc7IFwKIAkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCi0JICAkKEFVVE9NQUtFKSAtLWdudSBleHQvZ3NldHRpbmdzL01ha2VmaWxlCisJICAkKEFVVE9NQUtFKSAtLWdudSBnc3QtbGlicy9nc3QvcGxheWVyL01ha2VmaWxlCiBNYWtlZmlsZTogJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzCiAJQGNhc2UgJyQ/JyBpbiBcCiAJICAqY29uZmlnLnN0YXR1cyopIFwKQEAgLTgzNywzNiArODgwLDM0IEBACiAkKEFDTE9DQUxfTTQpOiBATUFJTlRBSU5FUl9NT0RFX1RSVUVAICQoYW1fX2FjbG9jYWxfbTRfZGVwcykKIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKICQoYW1fX2FjbG9jYWxfbTRfZGVwcyk6Ci1vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWw6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW4KLQljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAogCi1pbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTOiAkKHBsdWdpbl9MVExJQlJBUklFUykKK2luc3RhbGwtbGliTFRMSUJSQVJJRVM6ICQobGliX0xUTElCUkFSSUVTKQogCUAkKE5PUk1BTF9JTlNUQUxMKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCisJQGxpc3Q9JyQobGliX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQobGliZGlyKSIgfHwgbGlzdD07IFwKIAlsaXN0Mj07IGZvciBwIGluICQkbGlzdDsgZG8gXAogCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gXAogCSAgICBsaXN0Mj0iJCRsaXN0MiAkJHAiOyBcCiAJICBlbHNlIDo7IGZpOyBcCiAJZG9uZTsgXAogCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgXAotCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQocGx1Z2luZGlyKSIgfHwgZXhpdCAxOyBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBcCisJICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQobGliZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJChsaWJkaXIpIiB8fCBleGl0IDE7IFwKKwkgIGVjaG8gIiAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAnJChERVNURElSKSQobGliZGlyKSciOyBcCisJICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWluc3RhbGwgJChJTlNUQUxMKSAkKElOU1RBTExfU1RSSVBfRkxBRykgJCRsaXN0MiAiJChERVNURElSKSQobGliZGlyKSI7IFwKIAl9CiAKLXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzoKK3VuaW5zdGFsbC1saWJMVExJQlJBUklFUzoKIAlAJChOT1JNQUxfVU5JTlNUQUxMKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyB0ZXN0IC1uICIkKHBsdWdpbmRpcikiIHx8IGxpc3Q9OyBcCisJQGxpc3Q9JyQobGliX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQobGliZGlyKSIgfHwgbGlzdD07IFwKIAlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKIAkgICQoYW1fX3N0cmlwX2RpcikgXAotCSAgZWNobyAiICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICckKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiciOyBcCi0JICAkKExJQlRPT0wpICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPXVuaW5zdGFsbCBybSAtZiAiJChERVNURElSKSQocGx1Z2luZGlyKS8kJGYiOyBcCisJICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKGxpYmRpcikvJCRmJyI7IFwKKwkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChsaWJkaXIpLyQkZiI7IFwKIAlkb25lCiAKLWNsZWFuLXBsdWdpbkxUTElCUkFSSUVTOgotCS10ZXN0IC16ICIkKHBsdWdpbl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQocGx1Z2luX0xUTElCUkFSSUVTKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyBcCitjbGVhbi1saWJMVExJQlJBUklFUzoKKwktdGVzdCAteiAiJChsaWJfTFRMSUJSQVJJRVMpIiB8fCBybSAtZiAkKGxpYl9MVExJQlJBUklFUykKKwlAbGlzdD0nJChsaWJfTFRMSUJSQVJJRVMpJzsgXAogCWxvY3M9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBcCiAJICAgICAgc2VkICdzfF5bXi9dKiQkfC58OyBzfC9bXi9dKiQkfHw7IHN8JCR8L3NvX2xvY2F0aW9uc3wnIHwgXAogCSAgICAgIHNvcnQgLXVgOyBcCkBAIC04NzUsOCArOTE2LDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50cy5sYTogJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9PQkpFQ1RTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DQ0xEKSQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX09CSkVDVFMpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCQUREKSAkKExJQlMpCitsaWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGE6ICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTKSAKKwkkKEFNX1ZfQ0NMRCkkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9MSU5LKSAtcnBhdGggJChsaWJkaXIpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX09CSkVDVFMpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQpAQCAtODg0LDEzICs5MjUsMTMgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NpbmsuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc3JjLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc2luay5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5QbG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLXBsdWdpbi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLW1lZGlhLWluZm8uUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1yZW5kZXJlci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXIuUGxvQGFtX19xdW90ZUAKIAogLmMubzoKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQylkZXBiYXNlPWBlY2hvICRAIHwgc2VkICdzfFteL10qJCR8JChERVBESVIpLyZ8O3N8XC5vJCR8fCdgO1wKQEAgLTkxNiw2MCArOTU3LDEyMyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NpbmsubG86IGdzdGdzZXR0aW5nc2F1ZGlvc2luay5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLlRwbyAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NpbmsubG8gYHRlc3QgLWYgJ2dzdGdzZXR0aW5nc2F1ZGlvc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rnc2V0dGluZ3NhdWRpb3NpbmsuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLlRwbyAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdzZXR0aW5nc2F1ZGlvc2luay5jJyBvYmplY3Q9J2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc2luay5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5sbzogZ3N0cGxheWVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXIuVHBvIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXIubG8gYHRlc3QgLWYgJ2dzdHBsYXllci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5UcG8gJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXIuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cGxheWVyLmMnIG9iamVjdD0nbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc2luay5sbyBgdGVzdCAtZiAnZ3N0Z3NldHRpbmdzYXVkaW9zaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGdzZXR0aW5nc2F1ZGlvc2luay5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXIubG8gYHRlc3QgLWYgJ2dzdHBsYXllci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXIuYwogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5sbzogZ3N0Z3NldHRpbmdzYXVkaW9zcmMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zcmMuVHBvIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc3JjLmxvIGB0ZXN0IC1mICdnc3Rnc2V0dGluZ3NhdWRpb3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rnc2V0dGluZ3NhdWRpb3NyYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5UcG8gJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc2F1ZGlvc3JjLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGdzZXR0aW5nc2F1ZGlvc3JjLmMnIG9iamVjdD0nbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzYXVkaW9zcmMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIubG86IGdzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLlRwbyAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuVHBvICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5jJyBvYmplY3Q9J2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3NhdWRpb3NyYy5sbyBgdGVzdCAtZiAnZ3N0Z3NldHRpbmdzYXVkaW9zcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z3NldHRpbmdzYXVkaW9zcmMuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmMKIAotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmxvOiBnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NpbmsubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5UcG8gLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmxvIGB0ZXN0IC1mICdnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z3NldHRpbmdzdmlkZW9zaW5rLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5UcG8gJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc2luay5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYycgb2JqZWN0PSdsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NpbmsubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIubG86IGdzdHBsYXllci12aWRlby1yZW5kZXJlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLlRwbyAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuVHBvICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHBsYXllci12aWRlby1yZW5kZXJlci5jJyBvYmplY3Q9J2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NpbmsubG8gYHRlc3QgLWYgJ2dzdGdzZXR0aW5nc3ZpZGVvc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rnc2V0dGluZ3N2aWRlb3NpbmsuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmMKIAotbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMubG86IGdzdGdzZXR0aW5nc3ZpZGVvc3JjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc3JjLlRwbyAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NyYy5sbyBgdGVzdCAtZiAnZ3N0Z3NldHRpbmdzdmlkZW9zcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0Z3NldHRpbmdzdmlkZW9zcmMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0Z3NldHRpbmdzdmlkZW9zcmMuVHBvICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rnc2V0dGluZ3N2aWRlb3NyYy5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3Rnc2V0dGluZ3N2aWRlb3NyYy5jJyBvYmplY3Q9J2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc3JjLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLW1lZGlhLWluZm8ubG86IGdzdHBsYXllci1tZWRpYS1pbmZvLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1tZWRpYS1pbmZvLlRwbyAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLW1lZGlhLWluZm8ubG8gYHRlc3QgLWYgJ2dzdHBsYXllci1tZWRpYS1pbmZvLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci1tZWRpYS1pbmZvLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5UcG8gJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RwbGF5ZXItbWVkaWEtaW5mby5jJyBvYmplY3Q9J2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdGdzZXR0aW5nc3ZpZGVvc3JjLmxvIGB0ZXN0IC1mICdnc3Rnc2V0dGluZ3N2aWRlb3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rnc2V0dGluZ3N2aWRlb3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItbWVkaWEtaW5mby5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLW1lZGlhLWluZm8uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLW1lZGlhLWluZm8uYwogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLmxvOiBnc3Rzd2l0Y2hzaW5rLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc2luay5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc2luay5UcG8gLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc2luay5sbyBgdGVzdCAtZiAnZ3N0c3dpdGNoc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rzd2l0Y2hzaW5rLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNpbmsuVHBvICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHN3aXRjaHNpbmsuYycgb2JqZWN0PSdsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzaW5rLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmxvOiBnc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5UcG8gLWMgLW8gbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLlRwbyAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuYycgb2JqZWN0PSdsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc2luay5sbyBgdGVzdCAtZiAnZ3N0c3dpdGNoc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3Rzd2l0Y2hzaW5rLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jCiAKLWxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5sbzogZ3N0c3dpdGNoc3JjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc3JjLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzcmMuVHBvIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5sbyBgdGVzdCAtZiAnZ3N0c3dpdGNoc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHN3aXRjaHNyYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzcmMuVHBvICQoREVQRElSKS9saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1nc3Rzd2l0Y2hzcmMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0c3dpdGNoc3JjLmMnIG9iamVjdD0nbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtZ3N0c3dpdGNoc3JjLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIubG86IGdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLlRwbyAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIubG8gYHRlc3QgLWYgJ2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5UcG8gJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5jJyBvYmplY3Q9J2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLWdzdHN3aXRjaHNyYy5sbyBgdGVzdCAtZiAnZ3N0c3dpdGNoc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHN3aXRjaHNyYy5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5sbyBgdGVzdCAtZiAnZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYwogCi1saWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1wbHVnaW4ubG86IHBsdWdpbi5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLXBsdWdpbi5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtcGx1Z2luLlRwbyAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1wbHVnaW4ubG8gYHRlc3QgLWYgJ3BsdWdpbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BwbHVnaW4uYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtcGx1Z2luLlRwbyAkKERFUERJUikvbGliZ3N0Z3NldHRpbmdzZWxlbWVudHNfbGEtcGx1Z2luLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J3BsdWdpbi5jJyBvYmplY3Q9J2xpYmdzdGdzZXR0aW5nc2VsZW1lbnRzX2xhLXBsdWdpbi5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmxvOiBnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYS1nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5UcG8gLWMgLW8gbGliZ3N0cGxheWVyX0BHU1RfQVBJX1ZFUlNJT05AX2xhLWdzdHBsYXllci12aXN1YWxpemF0aW9uLmxvIGB0ZXN0IC1mICdnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uVHBvICQoREVQRElSKS9saWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uYycgb2JqZWN0PSdsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3Rnc2V0dGluZ3NlbGVtZW50c19sYS1wbHVnaW4ubG8gYHRlc3QgLWYgJ3BsdWdpbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BwbHVnaW4uYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHBsYXllcl9AR1NUX0FQSV9WRVJTSU9OQF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RwbGF5ZXJfQEdTVF9BUElfVkVSU0lPTkBfbGEtZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24ubG8gYHRlc3QgLWYgJ2dzdHBsYXllci12aXN1YWxpemF0aW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHBsYXllci12aXN1YWxpemF0aW9uLmMKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwogCiBjbGVhbi1saWJ0b29sOgogCS1ybSAtcmYgLmxpYnMgX2xpYnMKK2luc3RhbGwtZ2lyREFUQTogJChnaXJfREFUQSkKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwlAbGlzdD0nJChnaXJfREFUQSknOyB0ZXN0IC1uICIkKGdpcmRpcikiIHx8IGxpc3Q9OyBcCisJaWYgdGVzdCAtbiAiJCRsaXN0IjsgdGhlbiBcCisJICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQoZ2lyZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJChnaXJkaXIpIiB8fCBleGl0IDE7IFwKKwlmaTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGVjaG8gIiQkZCQkcCI7IFwKKwlkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgJyQoREVTVERJUikkKGdpcmRpciknIjsgXAorCSAgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgIiQoREVTVERJUikkKGdpcmRpcikiIHx8IGV4aXQgJCQ/OyBcCisJZG9uZQorCit1bmluc3RhbGwtZ2lyREFUQToKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKGdpcl9EQVRBKSc7IHRlc3QgLW4gIiQoZ2lyZGlyKSIgfHwgbGlzdD07IFwKKwlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAorCWRpcj0nJChERVNURElSKSQoZ2lyZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKK2luc3RhbGwtdHlwZWxpYnNEQVRBOiAkKHR5cGVsaWJzX0RBVEEpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJQGxpc3Q9JyQodHlwZWxpYnNfREFUQSknOyB0ZXN0IC1uICIkKHR5cGVsaWJzZGlyKSIgfHwgbGlzdD07IFwKKwlpZiB0ZXN0IC1uICIkJGxpc3QiOyB0aGVuIFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJCh0eXBlbGlic2RpciknIjsgXAorCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQodHlwZWxpYnNkaXIpIiB8fCBleGl0IDE7IFwKKwlmaTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGVjaG8gIiQkZCQkcCI7IFwKKwlkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICBlY2hvICIgJChJTlNUQUxMX0RBVEEpICQkZmlsZXMgJyQoREVTVERJUikkKHR5cGVsaWJzZGlyKSciOyBcCisJICAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAiJChERVNURElSKSQodHlwZWxpYnNkaXIpIiB8fCBleGl0ICQkPzsgXAorCWRvbmUKKwordW5pbnN0YWxsLXR5cGVsaWJzREFUQToKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKHR5cGVsaWJzX0RBVEEpJzsgdGVzdCAtbiAiJCh0eXBlbGlic2RpcikiIHx8IGxpc3Q9OyBcCisJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKKwlkaXI9JyQoREVTVERJUikkKHR5cGVsaWJzZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKK2luc3RhbGwtbGliZ3N0cGxheWVySEVBREVSUzogJChsaWJnc3RwbGF5ZXJfSEVBREVSUykKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwlAbGlzdD0nJChsaWJnc3RwbGF5ZXJfSEVBREVSUyknOyB0ZXN0IC1uICIkKGxpYmdzdHBsYXllcmRpcikiIHx8IGxpc3Q9OyBcCisJaWYgdGVzdCAtbiAiJCRsaXN0IjsgdGhlbiBcCisJICBlY2hvICIgJChNS0RJUl9QKSAnJChERVNURElSKSQobGliZ3N0cGxheWVyZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJChsaWJnc3RwbGF5ZXJkaXIpIiB8fCBleGl0IDE7IFwKKwlmaTsgXAorCWZvciBwIGluICQkbGlzdDsgZG8gXAorCSAgaWYgdGVzdCAtZiAiJCRwIjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7IFwKKwkgIGVjaG8gIiQkZCQkcCI7IFwKKwlkb25lIHwgJChhbV9fYmFzZV9saXN0KSB8IFwKKwl3aGlsZSByZWFkIGZpbGVzOyBkbyBcCisJICBlY2hvICIgJChJTlNUQUxMX0hFQURFUikgJCRmaWxlcyAnJChERVNURElSKSQobGliZ3N0cGxheWVyZGlyKSciOyBcCisJICAkKElOU1RBTExfSEVBREVSKSAkJGZpbGVzICIkKERFU1RESVIpJChsaWJnc3RwbGF5ZXJkaXIpIiB8fCBleGl0ICQkPzsgXAorCWRvbmUKKwordW5pbnN0YWxsLWxpYmdzdHBsYXllckhFQURFUlM6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChsaWJnc3RwbGF5ZXJfSEVBREVSUyknOyB0ZXN0IC1uICIkKGxpYmdzdHBsYXllcmRpcikiIHx8IGxpc3Q9OyBcCisJZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ3N8Xi4qL3x8J2A7IFwKKwlkaXI9JyQoREVTVERJUikkKGxpYmdzdHBsYXllcmRpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCiAKIElEOiAkKGFtX190YWdnZWRfZmlsZXMpCiAJJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgbWtpZCAtZklEICQkdW5pcXVlCkBAIC0xMDU1LDkgKzExNTksOSBAQAogCWRvbmUKIGNoZWNrLWFtOiBhbGwtYW0KIGNoZWNrOiBjaGVjay1hbQotYWxsLWFtOiBNYWtlZmlsZSAkKExUTElCUkFSSUVTKSAkKEhFQURFUlMpCithbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoREFUQSkgJChIRUFERVJTKQogaW5zdGFsbGRpcnM6Ci0JZm9yIGRpciBpbiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IGRvIFwKKwlmb3IgZGlyIGluICIkKERFU1RESVIpJChsaWJkaXIpIiAiJChERVNURElSKSQoZ2lyZGlyKSIgIiQoREVTVERJUikkKHR5cGVsaWJzZGlyKSIgIiQoREVTVERJUikkKGxpYmdzdHBsYXllcmRpcikiOyBkbyBcCiAJICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCiAJZG9uZQogaW5zdGFsbDogaW5zdGFsbC1hbQpAQCAtMTA5Myw3ICsxMTk3LDcgQEAKIAlAZWNobyAiaXQgZGVsZXRlcyBmaWxlcyB0aGF0IG1heSByZXF1aXJlIHNwZWNpYWwgdG9vbHMgdG8gcmVidWlsZC4iCiBjbGVhbjogY2xlYW4tYW0KIAotY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBcCitjbGVhbi1hbTogY2xlYW4tZ2VuZXJpYyBjbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIFwKIAltb3N0bHljbGVhbi1hbQogCiBkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQpAQCAtMTExNCwxMyArMTIxOCwxNCBAQAogCiBpbmZvLWFtOgogCi1pbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKK2luc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1naXJEQVRBIGluc3RhbGwtbGliZ3N0cGxheWVySEVBREVSUyBcCisJaW5zdGFsbC10eXBlbGlic0RBVEEKIAogaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCiAKIGluc3RhbGwtZHZpLWFtOgogCi1pbnN0YWxsLWV4ZWMtYW06CitpbnN0YWxsLWV4ZWMtYW06IGluc3RhbGwtbGliTFRMSUJSQVJJRVMKIAogaW5zdGFsbC1odG1sOiBpbnN0YWxsLWh0bWwtYW0KIApAQCAtMTE2MCwzMiArMTI2NSw2NCBAQAogCiBwcy1hbToKIAotdW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKK3VuaW5zdGFsbC1hbTogdW5pbnN0YWxsLWdpckRBVEEgdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwl1bmluc3RhbGwtbGliZ3N0cGxheWVySEVBREVSUyB1bmluc3RhbGwtdHlwZWxpYnNEQVRBCiAKIC5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKIAogLlBIT05ZOiBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCi0JY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKKwljbGVhbi1saWJMVExJQlJBUklFUyBjbGVhbi1saWJ0b29sIGNzY29wZWxpc3QtYW0gY3RhZ3MgXAogCWN0YWdzLWFtIGRpc3RjbGVhbiBkaXN0Y2xlYW4tY29tcGlsZSBkaXN0Y2xlYW4tZ2VuZXJpYyBcCiAJZGlzdGNsZWFuLWxpYnRvb2wgZGlzdGNsZWFuLXRhZ3MgZGlzdGRpciBkdmkgZHZpLWFtIGh0bWwgXAogCWh0bWwtYW0gaW5mbyBpbmZvLWFtIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLWRhdGEgXAogCWluc3RhbGwtZGF0YS1hbSBpbnN0YWxsLWR2aSBpbnN0YWxsLWR2aS1hbSBpbnN0YWxsLWV4ZWMgXAotCWluc3RhbGwtZXhlYy1hbSBpbnN0YWxsLWh0bWwgaW5zdGFsbC1odG1sLWFtIGluc3RhbGwtaW5mbyBcCi0JaW5zdGFsbC1pbmZvLWFtIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIGluc3RhbGwtcGRmLWFtIFwKLQlpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTIGluc3RhbGwtcHMgaW5zdGFsbC1wcy1hbSBcCi0JaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgaW5zdGFsbGNoZWNrLWFtIGluc3RhbGxkaXJzIFwKKwlpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1naXJEQVRBIGluc3RhbGwtaHRtbCBpbnN0YWxsLWh0bWwtYW0gXAorCWluc3RhbGwtaW5mbyBpbnN0YWxsLWluZm8tYW0gaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJaW5zdGFsbC1saWJnc3RwbGF5ZXJIRUFERVJTIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIFwKKwlpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBcCisJaW5zdGFsbC10eXBlbGlic0RBVEEgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCiAJbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAogCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKIAlwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgdGFncy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIFwKLQl1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKKwl1bmluc3RhbGwtZ2lyREFUQSB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1saWJnc3RwbGF5ZXJIRUFERVJTIHVuaW5zdGFsbC10eXBlbGlic0RBVEEKIAogLlBSRUNJT1VTOiBNYWtlZmlsZQogCiAKLW9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbDogb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sCi0JY3Agb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sIG9yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQEdzdFBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJJChBTV9WX0dFTilQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSAtdiAtLW5hbWVzcGFjZSBHc3RQbGF5ZXIgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1uc3ZlcnNpb249QEdTVF9BUElfVkVSU0lPTkAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS13YXJuLWFsbCBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXN0cmlwLXByZWZpeD1Hc3QgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYy1pbmNsdWRlICJnc3QvcGxheWVyL3BsYXllci5oIiBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWFkZC1pbmNsdWRlLXBhdGg9JCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci0xLjBgIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tbGlicmFyeS1wYXRoPSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLWxpYnJhcnk9bGliZ3N0cGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1saWJ0b29sPSIke0xJQlRPT0x9IiBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1wa2cgZ3N0cmVhbWVyLWF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLXBrZyBnc3RyZWFtZXItdGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnIGdzdHJlYW1lci1wYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tcGtnLWV4cG9ydCBnc3RyZWFtZXItcGxheWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQktLW91dHB1dCAkQCBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQkkKGdpcl9oZWFkZXJzKSBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQkkKGdpcl9zb3VyY2VzKQogCi1AVVNFX0dTRVRUSU5HU19UUlVFQEBHU0VUVElOR1NfUlVMRVNACitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVAJS50eXBlbGliOiAlLmdpciAkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACSQoQU1fVl9HRU4pUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiBcCitASEFWRV9JTlRST1NQRUNUSU9OX1RSVUVACQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikvZ3N0LWxpYnMgXAorQEhBVkVfSU5UUk9TUEVDVElPTl9UUlVFQAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpL2dzdC1saWJzIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci0xLjBgIFwKK0BIQVZFX0lOVFJPU1BFQ1RJT05fVFJVRUAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQogCiAjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2UgdG8gbm90IGV4cG9ydCBhbGwgdmFyaWFibGVzLgogIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1nLW1haW4tY29udGV4dC1zaWduYWwtZGlzcGF0Y2hlci5jIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMWY1N2QwCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuYwpAQCAtMCwwICsxLDIxMiBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046Z3N0cGxheWVyLWdtYWluY29udGV4dHNpZ25hbGRpc3BhdGNoZXIKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogUGxheWVyIEdMaWIgTWFpbkNvbnRleHQgZGlzcGF0Y2hlcgorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuaCIKKworc3RydWN0IF9Hc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyCit7CisgIEdPYmplY3QgcGFyZW50OworICBHTWFpbkNvbnRleHQgKmFwcGxpY2F0aW9uX2NvbnRleHQ7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJDbGFzcworeworICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworc3RhdGljIHZvaWQKKyAgICBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2ludGVyZmFjZV9pbml0CisgICAgKEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UgKiBpZmFjZSk7CisKK2VudW0KK3sKKyAgR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfUFJPUF8wLAorICBHX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9QUk9QX0FQUExJQ0FUSU9OX0NPTlRFWFQsCisgIEdfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX1BST1BfTEFTVAorfTsKKworR19ERUZJTkVfVFlQRV9XSVRIX0NPREUgKEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIsCisgICAgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlciwgR19UWVBFX09CSkVDVCwKKyAgICBHX0lNUExFTUVOVF9JTlRFUkZBQ0UgKEdTVF9UWVBFX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUiwKKyAgICAgICAgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9pbnRlcmZhY2VfaW5pdCkpOworCitzdGF0aWMgR1BhcmFtU3BlYworICAgICogZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfcGFyYW1fc3BlY3MKKyAgICBbR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfUFJPUF9MQVNUXSA9IHsgTlVMTCwgfTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIgKnNlbGYgPQorICAgICAgR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUiAob2JqZWN0KTsKKworICBpZiAoc2VsZi0+YXBwbGljYXRpb25fY29udGV4dCkKKyAgICBnX21haW5fY29udGV4dF91bnJlZiAoc2VsZi0+YXBwbGljYXRpb25fY29udGV4dCk7CisKKyAgR19PQkpFQ1RfQ0xBU1MKKyAgICAgIChnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX3BhcmVudF9jbGFzcyktPmZpbmFsaXplCisgICAgICAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIgKnNlbGYgPQorICAgICAgR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUiAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIEdfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX1BST1BfQVBQTElDQVRJT05fQ09OVEVYVDoKKyAgICAgIHNlbGYtPmFwcGxpY2F0aW9uX2NvbnRleHQgPSBnX3ZhbHVlX2R1cF9ib3hlZCAodmFsdWUpOworICAgICAgaWYgKCFzZWxmLT5hcHBsaWNhdGlvbl9jb250ZXh0KQorICAgICAgICBzZWxmLT5hcHBsaWNhdGlvbl9jb250ZXh0ID0gZ19tYWluX2NvbnRleHRfcmVmX3RocmVhZF9kZWZhdWx0ICgpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlciAqc2VsZiA9CisgICAgICBHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfUFJPUF9BUFBMSUNBVElPTl9DT05URVhUOgorICAgICAgZ192YWx1ZV9zZXRfYm94ZWQgKHZhbHVlLCBzZWxmLT5hcHBsaWNhdGlvbl9jb250ZXh0KTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKKyAgICBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2NsYXNzX2luaXQKKyAgICAoR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlckNsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPQorICAgICAgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9maW5hbGl6ZTsKKyAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0KKyAgICAgIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPQorICAgICAgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9nZXRfcHJvcGVydHk7CisKKyAgZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfcGFyYW1fc3BlY3MKKyAgICAgIFtHX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9QUk9QX0FQUExJQ0FUSU9OX0NPTlRFWFRdID0KKyAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCAoImFwcGxpY2F0aW9uLWNvbnRleHQiLCAiQXBwbGljYXRpb24gQ29udGV4dCIsCisgICAgICAiQXBwbGljYXRpb24gR01haW5Db250ZXh0IHRvIGRpc3BhdGNoIHNpZ25hbHMgdG8iLCBHX1RZUEVfTUFJTl9DT05URVhULAorICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0aWVzIChnb2JqZWN0X2NsYXNzLAorICAgICAgR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfUFJPUF9MQVNULAorICAgICAgZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfcGFyYW1fc3BlY3MpOworfQorCitzdGF0aWMgdm9pZAorICAgIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfaW5pdAorICAgIChHX0dOVUNfVU5VU0VEIEdzdFBsYXllckdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXIgKiBzZWxmKQoreworfQorCit0eXBlZGVmIHN0cnVjdAoreworICB2b2lkICgqZW1pdHRlcikgKGdwb2ludGVyIGRhdGEpOworICBncG9pbnRlciBkYXRhOworICBHRGVzdHJveU5vdGlmeSBkZXN0cm95OworfSBHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyRGF0YTsKKworc3RhdGljIGdib29sZWFuCitnX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaF9nc291cmNlZnVuYyAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBkYXRhLT5lbWl0dGVyIChkYXRhLT5kYXRhKTsKKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCitzdGF0aWMgdm9pZAorZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2hfZGVzdHJveSAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBpZiAoZGF0YS0+ZGVzdHJveSkKKyAgICBkYXRhLT5kZXN0cm95IChkYXRhLT5kYXRhKTsKKyAgZ19mcmVlIChkYXRhKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIKKyAgICAqIGlmYWNlLCBHX0dOVUNfVU5VU0VEIEdzdFBsYXllciAqIHBsYXllciwgdm9pZCAoKmVtaXR0ZXIpIChncG9pbnRlciBkYXRhKSwKKyAgICBncG9pbnRlciBkYXRhLCBHRGVzdHJveU5vdGlmeSBkZXN0cm95KQoreworICBHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyICpzZWxmID0KKyAgICAgIEdTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIgKGlmYWNlKTsKKyAgR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlckRhdGEgKmdzb3VyY2VmdW5jX2RhdGEgPQorICAgICAgZ19uZXcgKEdNYWluQ29udGV4dFNpZ25hbERpc3BhdGNoZXJEYXRhLCAxKTsKKworICBnc291cmNlZnVuY19kYXRhLT5lbWl0dGVyID0gZW1pdHRlcjsKKyAgZ3NvdXJjZWZ1bmNfZGF0YS0+ZGF0YSA9IGRhdGE7CisgIGdzb3VyY2VmdW5jX2RhdGEtPmRlc3Ryb3kgPSBkZXN0cm95OworCisgIGdfbWFpbl9jb250ZXh0X2ludm9rZV9mdWxsIChzZWxmLT5hcHBsaWNhdGlvbl9jb250ZXh0LAorICAgICAgR19QUklPUklUWV9ERUZBVUxULCBnX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaF9nc291cmNlZnVuYywKKyAgICAgIGdzb3VyY2VmdW5jX2RhdGEsIGdfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoX2Rlc3Ryb3kpOworfQorCitzdGF0aWMgdm9pZAorICAgIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfaW50ZXJmYWNlX2luaXQKKyAgICAoR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSAqIGlmYWNlKQoreworICBpZmFjZS0+ZGlzcGF0Y2ggPSBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ19tYWluX2NvbnRleHRfc2lnbmFsX2Rpc3BhdGNoZXJfbmV3OgorICogQGFwcGxpY2F0aW9uX2NvbnRleHQ6IChhbGxvdy1ub25lKTogR01haW5Db250ZXh0IHRvIHVzZSBvciAlTlVMTAorICoKKyAqIENyZWF0ZXMgYSBuZXcgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciB0aGF0IHVzZXMgQGFwcGxpY2F0aW9uX2NvbnRleHQsCisgKiBvciB0aGUgdGhyZWFkIGRlZmF1bHQgb25lIGlmICVOVUxMIGlzIHVzZWQuIFNlZSBnc3RfcGxheWVyX25ld19mdWxsKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiB0aGUgbmV3IEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIKKyAqLworR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciAqCitnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldyAoR01haW5Db250ZXh0ICoKKyAgICBhcHBsaWNhdGlvbl9jb250ZXh0KQoreworICByZXR1cm4gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVIsCisgICAgICAiYXBwbGljYXRpb24tY29udGV4dCIsIGFwcGxpY2F0aW9uX2NvbnRleHQsIE5VTEwpOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItZy1tYWluLWNvbnRleHQtc2lnbmFsLWRpc3BhdGNoZXIuaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDMxMDMyYgotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmgKQEAgLTAsMCArMSw0OCBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0hfXworCisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItdHlwZXMuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oPgorCitHX0JFR0lOX0RFQ0xTCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyCisgICAgR3N0UGxheWVyR01haW5Db250ZXh0U2lnbmFsRGlzcGF0Y2hlcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyQ2xhc3MKKyAgICBHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyQ2xhc3M7CisKKyNkZWZpbmUgR1NUX1RZUEVfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSICAgICAgICAgICAgIChnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSKG9iaikgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9DTEFTUyhrbGFzcykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9HRVRfQ0xBU1Mob2JqKSAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSLCBHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyQ2xhc3MpKQorI2RlZmluZSBHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSLCBHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9HX01BSU5fQ09OVEVYVF9TSUdOQUxfRElTUEFUQ0hFUl9DTEFTUyhrbGFzcykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSLCBHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyQ2xhc3MpKQorI2RlZmluZSBHU1RfUExBWUVSX0dfTUFJTl9DT05URVhUX1NJR05BTF9ESVNQQVRDSEVSX0NBU1Qob2JqKSAgICAgICAgKChHc3RQbGF5ZXJHTWFpbkNvbnRleHRTaWduYWxEaXNwYXRjaGVyKikob2JqKSkKKworR1R5cGUgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9nZXRfdHlwZSAodm9pZCk7CisKK0dzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgKiBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldyAoR01haW5Db250ZXh0ICogYXBwbGljYXRpb25fY29udGV4dCk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9QTEFZRVJfR19NQUlOX0NPTlRFWFRfU0lHTkFMX0RJU1BBVENIRVJfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLXByaXZhdGUuaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI4NzU3YmUKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLXByaXZhdGUuaApAQCAtMCwwICsxLDEyNSBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1IEJyaWplc2ggU2luZ2ggPGJyaWplc2gua3NpbmdoQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiZ3N0cGxheWVyLW1lZGlhLWluZm8uaCIKKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfTUVESUFfSU5GT19QUklWQVRFX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfTUVESUFfSU5GT19QUklWQVRFX0hfXworCitzdHJ1Y3QgX0dzdFBsYXllclN0cmVhbUluZm8KK3sKKyAgR09iamVjdCBwYXJlbnQ7CisKKyAgZ2NoYXIgKmNvZGVjOworCisgIEdzdENhcHMgKmNhcHM7CisgIGdpbnQgc3RyZWFtX2luZGV4OworICBHc3RUYWdMaXN0ICAqdGFnczsKK307CisKK3N0cnVjdCBfR3N0UGxheWVyU3RyZWFtSW5mb0NsYXNzCit7CisgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllclN1YnRpdGxlSW5mbworeworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICBwYXJlbnQ7CisKKyAgZ2NoYXIgKmxhbmd1YWdlOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJTdWJ0aXRsZUluZm9DbGFzcworeworICBHc3RQbGF5ZXJTdHJlYW1JbmZvQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJBdWRpb0luZm8KK3sKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAgcGFyZW50OworCisgIGdpbnQgY2hhbm5lbHM7CisgIGdpbnQgc2FtcGxlX3JhdGU7CisKKyAgZ3VpbnQgYml0cmF0ZTsKKyAgZ3VpbnQgbWF4X2JpdHJhdGU7CisKKyAgZ2NoYXIgKmxhbmd1YWdlOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJBdWRpb0luZm9DbGFzcworeworICBHc3RQbGF5ZXJTdHJlYW1JbmZvQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb0luZm8KK3sKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAgcGFyZW50OworCisgIGdpbnQgd2lkdGg7CisgIGdpbnQgaGVpZ2h0OworICBnaW50IGZyYW1lcmF0ZV9udW07CisgIGdpbnQgZnJhbWVyYXRlX2Rlbm9tOworICBnaW50IHBhcl9udW07CisgIGdpbnQgcGFyX2Rlbm9tOworCisgIGd1aW50IGJpdHJhdGU7CisgIGd1aW50IG1heF9iaXRyYXRlOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb0luZm9DbGFzcworeworICBHc3RQbGF5ZXJTdHJlYW1JbmZvQ2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJNZWRpYUluZm8KK3sKKyAgR09iamVjdCBwYXJlbnQ7CisKKyAgZ2NoYXIgKnVyaTsKKyAgZ2NoYXIgKnRpdGxlOworICBnY2hhciAqY29udGFpbmVyOworICBnYm9vbGVhbiBzZWVrYWJsZTsKKyAgR3N0VGFnTGlzdCAqdGFnczsKKyAgR3N0U2FtcGxlICppbWFnZV9zYW1wbGU7CisKKyAgR0xpc3QgKnN0cmVhbV9saXN0OworICBHTGlzdCAqYXVkaW9fc3RyZWFtX2xpc3Q7CisgIEdMaXN0ICp2aWRlb19zdHJlYW1fbGlzdDsKKyAgR0xpc3QgKnN1YnRpdGxlX3N0cmVhbV9saXN0OworCisgIEdzdENsb2NrVGltZSAgZHVyYXRpb247Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllck1lZGlhSW5mb0NsYXNzCit7CisgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHX0dOVUNfSU5URVJOQUwgR3N0UGxheWVyTWVkaWFJbmZvKiAgIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19uZXcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGNvbnN0IGdjaGFyICp1cmkpOworR19HTlVDX0lOVEVSTkFMIEdzdFBsYXllck1lZGlhSW5mbyogICBnc3RfcGxheWVyX21lZGlhX2luZm9fY29weQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyTWVkaWFJbmZvICpyZWYpOworR19HTlVDX0lOVEVSTkFMIEdzdFBsYXllclN0cmVhbUluZm8qICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX25ldworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2ludCBzdHJlYW1faW5kZXgsIEdUeXBlIHR5cGUpOworR19HTlVDX0lOVEVSTkFMIEdzdFBsYXllclN0cmVhbUluZm8qICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2NvcHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllclN0cmVhbUluZm8gKnJlZik7CisKKyNlbmRpZiAvKiBfX0dTVF9QTEFZRVJfTUVESUFfSU5GT19QUklWQVRFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5jIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0MmI2MTEKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmMKQEAgLTAsMCArMSw3NzUgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLmtzaW5naEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmdzdHBsYXllci1tZWRpYWluZm8KKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogUGxheWVyIE1lZGlhIEluZm9ybWF0aW9uCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdHBsYXllci1tZWRpYS1pbmZvLmgiCisjaW5jbHVkZSAiZ3N0cGxheWVyLW1lZGlhLWluZm8tcHJpdmF0ZS5oIgorCisvKiBQZXItc3RyZWFtIGluZm9ybWF0aW9uICovCitHX0RFRklORV9BQlNUUkFDVF9UWVBFIChHc3RQbGF5ZXJTdHJlYW1JbmZvLCBnc3RfcGxheWVyX3N0cmVhbV9pbmZvLAorICAgIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19pbml0IChHc3RQbGF5ZXJTdHJlYW1JbmZvICogc2luZm8pCit7CisgIHNpbmZvLT5zdHJlYW1faW5kZXggPSAtMTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKnNpbmZvID0gR1NUX1BMQVlFUl9TVFJFQU1fSU5GTyAob2JqZWN0KTsKKworICBnX2ZyZWUgKHNpbmZvLT5jb2RlYyk7CisKKyAgaWYgKHNpbmZvLT5jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChzaW5mby0+Y2Fwcyk7CisKKyAgaWYgKHNpbmZvLT50YWdzKQorICAgIGdzdF90YWdfbGlzdF91bnJlZiAoc2luZm8tPnRhZ3MpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19jbGFzc19pbml0IChHc3RQbGF5ZXJTdHJlYW1JbmZvQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluYWxpemU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXg6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyU3RyZWFtSW5mbworICoKKyAqIEZ1bmN0aW9uIHRvIGdldCBzdHJlYW0gaW5kZXggZnJvbSAjR3N0UGxheWVyU3RyZWFtSW5mbyBpbnN0YW5jZS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgc3RyZWFtIGluZGV4IG9mIHRoaXMgc3RyZWFtLgorICovCitnaW50Citnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleCAoY29uc3QgR3N0UGxheWVyU3RyZWFtSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1NUUkVBTV9JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT5zdHJlYW1faW5kZXg7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGU6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyU3RyZWFtSW5mbworICoKKyAqIEZ1bmN0aW9uIHRvIHJldHVybiBodW1hbiByZWFkYWJsZSBuYW1lIGZvciB0aGUgc3RyZWFtIHR5cGUKKyAqIG9mIHRoZSBnaXZlbiBAaW5mbyAoZXg6ICJhdWRpbyIsICJ2aWRlbyIsICJzdWJ0aXRsZSIpCisgKgorICogUmV0dXJuczogYSBodW1hbiByZWFkYWJsZSBuYW1lCisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlIChjb25zdCBHc3RQbGF5ZXJTdHJlYW1JbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfU1RSRUFNX0lORk8gKGluZm8pLCBOVUxMKTsKKworICBpZiAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChpbmZvKSkKKyAgICByZXR1cm4gInZpZGVvIjsKKyAgZWxzZSBpZiAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChpbmZvKSkKKyAgICByZXR1cm4gImF1ZGlvIjsKKyAgZWxzZQorICAgIHJldHVybiAic3VidGl0bGUiOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3M6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyU3RyZWFtSW5mbworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogdGhlIHRhZ3MgY29udGFpbmVkIGluIHRoaXMgc3RyZWFtLgorICovCitHc3RUYWdMaXN0ICoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3MgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9TVFJFQU1fSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT50YWdzOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NvZGVjOgorICogQGluZm86IGEgI0dzdFBsYXllclN0cmVhbUluZm8KKyAqCisgKiBBIHN0cmluZyBkZXNjcmliaW5nIGNvZGVjIHVzZWQgaW4gI0dzdFBsYXllclN0cmVhbUluZm8uCisgKgorICogUmV0dXJuczogY29kZWMgc3RyaW5nIG9yIE5VTEwgb24gdW5rbm93bi4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWMgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9TVFJFQU1fSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5jb2RlYzsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzOgorICogQGluZm86IGEgI0dzdFBsYXllclN0cmVhbUluZm8KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IHRoZSAjR3N0Q2FwcyBvZiB0aGUgc3RyZWFtLgorICovCitHc3RDYXBzICoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHMgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9TVFJFQU1fSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5jYXBzOworfQorCisvKiBWaWRlbyBpbmZvcm1hdGlvbiAqLworR19ERUZJTkVfVFlQRSAoR3N0UGxheWVyVmlkZW9JbmZvLCBnc3RfcGxheWVyX3ZpZGVvX2luZm8sCisgICAgR1NUX1RZUEVfUExBWUVSX1NUUkVBTV9JTkZPKTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19pbml0IChHc3RQbGF5ZXJWaWRlb0luZm8gKiBpbmZvKQoreworICBpbmZvLT53aWR0aCA9IC0xOworICBpbmZvLT5oZWlnaHQgPSAtMTsKKyAgaW5mby0+ZnJhbWVyYXRlX251bSA9IDA7CisgIGluZm8tPmZyYW1lcmF0ZV9kZW5vbSA9IDE7CisgIGluZm8tPnBhcl9udW0gPSAxOworICBpbmZvLT5wYXJfZGVub20gPSAxOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl92aWRlb19pbmZvX2NsYXNzX2luaXQgKEdfR05VQ19VTlVTRUQgR3N0UGxheWVyVmlkZW9JbmZvQ2xhc3MgKiBrbGFzcykKK3sKKyAgLyogbm90aGluZyB0byBkbyBoZXJlICovCit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aDoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJWaWRlb0luZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgd2lkdGggb2YgdmlkZW8gaW4gI0dzdFBsYXllclZpZGVvSW5mby4KKyAqLworZ2ludAorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aCAoY29uc3QgR3N0UGxheWVyVmlkZW9JbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAoaW5mbyksIC0xKTsKKworICByZXR1cm4gaW5mby0+d2lkdGg7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9oZWlnaHQ6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyVmlkZW9JbmZvCisgKgorICogUmV0dXJuczogdGhlIGhlaWdodCBvZiB2aWRlbyBpbiAjR3N0UGxheWVyVmlkZW9JbmZvLgorICovCitnaW50Citnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodCAoY29uc3QgR3N0UGxheWVyVmlkZW9JbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAoaW5mbyksIC0xKTsKKworICByZXR1cm4gaW5mby0+aGVpZ2h0OworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlX251bToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJWaWRlb0luZm8KKyAqCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfZnJhbWVyYXRlIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8gKiBpbmZvLAorICAgIGdpbnQgKiBmcHNfbiwgZ2ludCAqIGZwc19kKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKGluZm8pKTsKKworICAqZnBzX24gPSBpbmZvLT5mcmFtZXJhdGVfbnVtOworICAqZnBzX2QgPSBpbmZvLT5mcmFtZXJhdGVfZGVub207Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9waXhlbF9hc3BlY3RfcmF0aW86CisgKiBAaW5mbzogYSAjR3N0UGxheWVyVmlkZW9JbmZvCisgKiBAcGFyX246IChvdXQpOiBudW1lcmF0b3IKKyAqIEBwYXJfZDogKG91dCk6IGRlbm9taW5hdG9yCisgKgorICogUmV0dXJucyB0aGUgcGl4ZWwgYXNwZWN0IHJhdGlvIGluIEBwYXJfbiBhbmQgQHBhcl9kCisgKgorICovCit2b2lkCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpbyAoY29uc3QgR3N0UGxheWVyVmlkZW9JbmZvICogaW5mbywKKyAgICBndWludCAqIHBhcl9uLCBndWludCAqIHBhcl9kKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKGluZm8pKTsKKworICAqcGFyX24gPSBpbmZvLT5wYXJfbnVtOworICAqcGFyX2QgPSBpbmZvLT5wYXJfZGVub207Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9iaXRyYXRlOgorICogQGluZm86IGEgI0dzdFBsYXllclZpZGVvSW5mbworICoKKyAqIFJldHVybnM6IHRoZSBjdXJyZW50IGJpdHJhdGUgb2YgdmlkZW8gaW4gI0dzdFBsYXllclZpZGVvSW5mby4KKyAqLworZ2ludAorZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9iaXRyYXRlIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT5iaXRyYXRlOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGU6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyVmlkZW9JbmZvCisgKgorICogUmV0dXJuczogdGhlIG1heGltdW0gYml0cmF0ZSBvZiB2aWRlbyBpbiAjR3N0UGxheWVyVmlkZW9JbmZvLgorICovCitnaW50Citnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X21heF9iaXRyYXRlIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT5tYXhfYml0cmF0ZTsKK30KKworLyogQXVkaW8gaW5mb3JtYXRpb24gKi8KK0dfREVGSU5FX1RZUEUgKEdzdFBsYXllckF1ZGlvSW5mbywgZ3N0X3BsYXllcl9hdWRpb19pbmZvLAorICAgIEdTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTyk7CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2F1ZGlvX2luZm9faW5pdCAoR3N0UGxheWVyQXVkaW9JbmZvICogaW5mbykKK3sKKyAgaW5mby0+Y2hhbm5lbHMgPSAwOworICBpbmZvLT5zYW1wbGVfcmF0ZSA9IDA7CisgIGluZm8tPmJpdHJhdGUgPSAtMTsKKyAgaW5mby0+bWF4X2JpdHJhdGUgPSAtMTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyQXVkaW9JbmZvICppbmZvID0gR1NUX1BMQVlFUl9BVURJT19JTkZPIChvYmplY3QpOworCisgIGdfZnJlZSAoaW5mby0+bGFuZ3VhZ2UpOworCisgIEdfT0JKRUNUX0NMQVNTIChnc3RfcGxheWVyX2F1ZGlvX2luZm9fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fY2xhc3NfaW5pdCAoR3N0UGxheWVyQXVkaW9JbmZvQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9wbGF5ZXJfYXVkaW9faW5mb19maW5hbGl6ZTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2xhbmd1YWdlOgorICogQGluZm86IGEgI0dzdFBsYXllckF1ZGlvSW5mbworICoKKyAqIFJldHVybnM6IHRoZSBsYW5ndWFnZSBvZiB0aGUgc3RyZWFtLCBvciBOVUxMIGlmIHVua25vd24uCisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2UgKGNvbnN0IEdzdFBsYXllckF1ZGlvSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKGluZm8pLCBOVUxMKTsKKworICByZXR1cm4gaW5mby0+bGFuZ3VhZ2U7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9jaGFubmVsczoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJBdWRpb0luZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgbnVtYmVyIG9mIGF1ZGlvIGNoYW5uZWxzIGluICNHc3RQbGF5ZXJBdWRpb0luZm8uCisgKi8KK2dpbnQKK2dzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHMgKGNvbnN0IEdzdFBsYXllckF1ZGlvSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKGluZm8pLCAwKTsKKworICByZXR1cm4gaW5mby0+Y2hhbm5lbHM7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJBdWRpb0luZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgYXVkaW8gc2FtcGxlIHJhdGUgaW4gI0dzdFBsYXllckF1ZGlvSW5mby4KKyAqLworZ2ludAorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9zYW1wbGVfcmF0ZSAoY29uc3QgR3N0UGxheWVyQXVkaW9JbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyAoaW5mbyksIDApOworCisgIHJldHVybiBpbmZvLT5zYW1wbGVfcmF0ZTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2JpdHJhdGU6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyQXVkaW9JbmZvCisgKgorICogUmV0dXJuczogdGhlIGF1ZGlvIGJpdHJhdGUgaW4gI0dzdFBsYXllckF1ZGlvSW5mby4KKyAqLworZ2ludAorZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9iaXRyYXRlIChjb25zdCBHc3RQbGF5ZXJBdWRpb0luZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT5iaXRyYXRlOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbWF4X2JpdHJhdGU6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyQXVkaW9JbmZvCisgKgorICogUmV0dXJuczogdGhlIGF1ZGlvIG1heGltdW0gYml0cmF0ZSBpbiAjR3N0UGxheWVyQXVkaW9JbmZvLgorICovCitnaW50Citnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X21heF9iaXRyYXRlIChjb25zdCBHc3RQbGF5ZXJBdWRpb0luZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT5tYXhfYml0cmF0ZTsKK30KKworLyogU3VidGl0bGUgaW5mb3JtYXRpb24gKi8KK0dfREVGSU5FX1RZUEUgKEdzdFBsYXllclN1YnRpdGxlSW5mbywgZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvLAorICAgIEdTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTyk7CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9faW5pdCAoR19HTlVDX1VOVVNFRCBHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKiBpbmZvKQoreworICAvKiBub3RoaW5nIHRvIGRvICovCit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqaW5mbyA9IEdTVF9QTEFZRVJfU1VCVElUTEVfSU5GTyAob2JqZWN0KTsKKworICBnX2ZyZWUgKGluZm8tPmxhbmd1YWdlKTsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2NsYXNzX2luaXQgKEdzdFBsYXllclN1YnRpdGxlSW5mb0NsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CisKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZmluYWxpemU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX2dldF9sYW5ndWFnZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8KKyAqCisgKiBSZXR1cm5zOiB0aGUgbGFuZ3VhZ2Ugb2YgdGhlIHN0cmVhbSwgb3IgTlVMTCBpZiB1bmtub3duLgorICovCitjb25zdCBnY2hhciAqCitnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X2xhbmd1YWdlIChjb25zdCBHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9TVUJUSVRMRV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPmxhbmd1YWdlOworfQorCisvKiBHbG9iYWwgbWVkaWEgaW5mb3JtYXRpb24gKi8KK0dfREVGSU5FX1RZUEUgKEdzdFBsYXllck1lZGlhSW5mbywgZ3N0X3BsYXllcl9tZWRpYV9pbmZvLCBHX1RZUEVfT0JKRUNUKTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19pbml0IChHc3RQbGF5ZXJNZWRpYUluZm8gKiBpbmZvKQoreworICBpbmZvLT5kdXJhdGlvbiA9IC0xOworICBpbmZvLT5zZWVrYWJsZSA9IEZBTFNFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8gPSBHU1RfUExBWUVSX01FRElBX0lORk8gKG9iamVjdCk7CisKKyAgZ19mcmVlIChpbmZvLT51cmkpOworCisgIGlmIChpbmZvLT50YWdzKQorICAgIGdzdF90YWdfbGlzdF91bnJlZiAoaW5mby0+dGFncyk7CisKKyAgZ19mcmVlIChpbmZvLT50aXRsZSk7CisKKyAgZ19mcmVlIChpbmZvLT5jb250YWluZXIpOworCisgIGlmIChpbmZvLT5pbWFnZV9zYW1wbGUpCisgICAgZ3N0X3NhbXBsZV91bnJlZiAoaW5mby0+aW1hZ2Vfc2FtcGxlKTsKKworICBpZiAoaW5mby0+YXVkaW9fc3RyZWFtX2xpc3QpCisgICAgZ19saXN0X2ZyZWUgKGluZm8tPmF1ZGlvX3N0cmVhbV9saXN0KTsKKworICBpZiAoaW5mby0+dmlkZW9fc3RyZWFtX2xpc3QpCisgICAgZ19saXN0X2ZyZWUgKGluZm8tPnZpZGVvX3N0cmVhbV9saXN0KTsKKworICBpZiAoaW5mby0+c3VidGl0bGVfc3RyZWFtX2xpc3QpCisgICAgZ19saXN0X2ZyZWUgKGluZm8tPnN1YnRpdGxlX3N0cmVhbV9saXN0KTsKKworICBpZiAoaW5mby0+c3RyZWFtX2xpc3QpCisgICAgZ19saXN0X2ZyZWVfZnVsbCAoaW5mby0+c3RyZWFtX2xpc3QsIGdfb2JqZWN0X3VucmVmKTsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X3BsYXllcl9tZWRpYV9pbmZvX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2NsYXNzX2luaXQgKEdzdFBsYXllck1lZGlhSW5mb0NsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqb2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKworICBvY2xhc3MtPmZpbmFsaXplID0gZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2ZpbmFsaXplOworfQorCitzdGF0aWMgR3N0UGxheWVyVmlkZW9JbmZvICoKK2dzdF9wbGF5ZXJfdmlkZW9faW5mb19uZXcgKHZvaWQpCit7CisgIHJldHVybiBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPLCBOVUxMKTsKK30KKworc3RhdGljIEdzdFBsYXllckF1ZGlvSW5mbyAqCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fbmV3ICh2b2lkKQoreworICByZXR1cm4gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTywgTlVMTCk7Cit9CisKK3N0YXRpYyBHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKgorZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX25ldyAodm9pZCkKK3sKKyAgcmV0dXJuIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8sIE5VTEwpOworfQorCitzdGF0aWMgR3N0UGxheWVyU3RyZWFtSW5mbyAqCitnc3RfcGxheWVyX3ZpZGVvX2luZm9fY29weSAoR3N0UGxheWVyVmlkZW9JbmZvICogcmVmKQoreworICBHc3RQbGF5ZXJWaWRlb0luZm8gKnJldDsKKworICByZXQgPSBnc3RfcGxheWVyX3ZpZGVvX2luZm9fbmV3ICgpOworCisgIHJldC0+d2lkdGggPSByZWYtPndpZHRoOworICByZXQtPmhlaWdodCA9IHJlZi0+aGVpZ2h0OworICByZXQtPmZyYW1lcmF0ZV9udW0gPSByZWYtPmZyYW1lcmF0ZV9udW07CisgIHJldC0+ZnJhbWVyYXRlX2Rlbm9tID0gcmVmLT5mcmFtZXJhdGVfZGVub207CisgIHJldC0+cGFyX251bSA9IHJlZi0+cGFyX251bTsKKyAgcmV0LT5wYXJfZGVub20gPSByZWYtPnBhcl9kZW5vbTsKKyAgcmV0LT5iaXRyYXRlID0gcmVmLT5iaXRyYXRlOworICByZXQtPm1heF9iaXRyYXRlID0gcmVmLT5tYXhfYml0cmF0ZTsKKworICByZXR1cm4gKEdzdFBsYXllclN0cmVhbUluZm8gKikgcmV0OworfQorCitzdGF0aWMgR3N0UGxheWVyU3RyZWFtSW5mbyAqCitnc3RfcGxheWVyX2F1ZGlvX2luZm9fY29weSAoR3N0UGxheWVyQXVkaW9JbmZvICogcmVmKQoreworICBHc3RQbGF5ZXJBdWRpb0luZm8gKnJldDsKKworICByZXQgPSBnc3RfcGxheWVyX2F1ZGlvX2luZm9fbmV3ICgpOworCisgIHJldC0+c2FtcGxlX3JhdGUgPSByZWYtPnNhbXBsZV9yYXRlOworICByZXQtPmNoYW5uZWxzID0gcmVmLT5jaGFubmVsczsKKyAgcmV0LT5iaXRyYXRlID0gcmVmLT5iaXRyYXRlOworICByZXQtPm1heF9iaXRyYXRlID0gcmVmLT5tYXhfYml0cmF0ZTsKKworICBpZiAocmVmLT5sYW5ndWFnZSkKKyAgICByZXQtPmxhbmd1YWdlID0gZ19zdHJkdXAgKHJlZi0+bGFuZ3VhZ2UpOworCisgIHJldHVybiAoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSByZXQ7Cit9CisKK3N0YXRpYyBHc3RQbGF5ZXJTdHJlYW1JbmZvICoKK2dzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19jb3B5IChHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKiByZWYpCit7CisgIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqcmV0OworCisgIHJldCA9IGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19uZXcgKCk7CisgIGlmIChyZWYtPmxhbmd1YWdlKQorICAgIHJldC0+bGFuZ3VhZ2UgPSBnX3N0cmR1cCAocmVmLT5sYW5ndWFnZSk7CisKKyAgcmV0dXJuIChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIHJldDsKK30KKworR3N0UGxheWVyU3RyZWFtSW5mbyAqCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2NvcHkgKEdzdFBsYXllclN0cmVhbUluZm8gKiByZWYpCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKmluZm8gPSBOVUxMOworCisgIGlmICghcmVmKQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKHJlZikpCisgICAgaW5mbyA9IGdzdF9wbGF5ZXJfdmlkZW9faW5mb19jb3B5ICgoR3N0UGxheWVyVmlkZW9JbmZvICopIHJlZik7CisgIGVsc2UgaWYgKEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyAocmVmKSkKKyAgICBpbmZvID0gZ3N0X3BsYXllcl9hdWRpb19pbmZvX2NvcHkgKChHc3RQbGF5ZXJBdWRpb0luZm8gKikgcmVmKTsKKyAgZWxzZQorICAgIGluZm8gPSBnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fY29weSAoKEdzdFBsYXllclN1YnRpdGxlSW5mbyAqKSByZWYpOworCisgIGluZm8tPnN0cmVhbV9pbmRleCA9IHJlZi0+c3RyZWFtX2luZGV4OworICBpZiAocmVmLT50YWdzKQorICAgIGluZm8tPnRhZ3MgPSBnc3RfdGFnX2xpc3RfcmVmIChyZWYtPnRhZ3MpOworICBpZiAocmVmLT5jYXBzKQorICAgIGluZm8tPmNhcHMgPSBnc3RfY2Fwc19jb3B5IChyZWYtPmNhcHMpOworICBpZiAocmVmLT5jb2RlYykKKyAgICBpbmZvLT5jb2RlYyA9IGdfc3RyZHVwIChyZWYtPmNvZGVjKTsKKworICByZXR1cm4gaW5mbzsKK30KKworR3N0UGxheWVyTWVkaWFJbmZvICoKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19jb3B5IChHc3RQbGF5ZXJNZWRpYUluZm8gKiByZWYpCit7CisgIEdMaXN0ICpsOworICBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm87CisKKyAgaWYgKCFyZWYpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaW5mbyA9IGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19uZXcgKHJlZi0+dXJpKTsKKyAgaW5mby0+ZHVyYXRpb24gPSByZWYtPmR1cmF0aW9uOworICBpbmZvLT5zZWVrYWJsZSA9IHJlZi0+c2Vla2FibGU7CisgIGlmIChyZWYtPnRhZ3MpCisgICAgaW5mby0+dGFncyA9IGdzdF90YWdfbGlzdF9yZWYgKHJlZi0+dGFncyk7CisgIGlmIChyZWYtPnRpdGxlKQorICAgIGluZm8tPnRpdGxlID0gZ19zdHJkdXAgKHJlZi0+dGl0bGUpOworICBpZiAocmVmLT5jb250YWluZXIpCisgICAgaW5mby0+Y29udGFpbmVyID0gZ19zdHJkdXAgKHJlZi0+Y29udGFpbmVyKTsKKyAgaWYgKHJlZi0+aW1hZ2Vfc2FtcGxlKQorICAgIGluZm8tPmltYWdlX3NhbXBsZSA9IGdzdF9zYW1wbGVfcmVmIChyZWYtPmltYWdlX3NhbXBsZSk7CisKKyAgZm9yIChsID0gcmVmLT5zdHJlYW1fbGlzdDsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkgeworICAgIEdzdFBsYXllclN0cmVhbUluZm8gKnM7CisKKyAgICBzID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19jb3B5ICgoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSBsLT5kYXRhKTsKKyAgICBpbmZvLT5zdHJlYW1fbGlzdCA9IGdfbGlzdF9hcHBlbmQgKGluZm8tPnN0cmVhbV9saXN0LCBzKTsKKworICAgIGlmIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKHMpKQorICAgICAgaW5mby0+YXVkaW9fc3RyZWFtX2xpc3QgPSBnX2xpc3RfYXBwZW5kIChpbmZvLT5hdWRpb19zdHJlYW1fbGlzdCwgcyk7CisgICAgZWxzZSBpZiAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChzKSkKKyAgICAgIGluZm8tPnZpZGVvX3N0cmVhbV9saXN0ID0gZ19saXN0X2FwcGVuZCAoaW5mby0+dmlkZW9fc3RyZWFtX2xpc3QsIHMpOworICAgIGVsc2UKKyAgICAgIGluZm8tPnN1YnRpdGxlX3N0cmVhbV9saXN0ID0KKyAgICAgICAgICBnX2xpc3RfYXBwZW5kIChpbmZvLT5zdWJ0aXRsZV9zdHJlYW1fbGlzdCwgcyk7CisgIH0KKworICByZXR1cm4gaW5mbzsKK30KKworR3N0UGxheWVyU3RyZWFtSW5mbyAqCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX25ldyAoZ2ludCBzdHJlYW1faW5kZXgsIEdUeXBlIHR5cGUpCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKmluZm8gPSBOVUxMOworCisgIGlmICh0eXBlID09IEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPKQorICAgIGluZm8gPSAoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSBnc3RfcGxheWVyX2F1ZGlvX2luZm9fbmV3ICgpOworICBlbHNlIGlmICh0eXBlID09IEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPKQorICAgIGluZm8gPSAoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSBnc3RfcGxheWVyX3ZpZGVvX2luZm9fbmV3ICgpOworICBlbHNlCisgICAgaW5mbyA9IChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19uZXcgKCk7CisKKyAgaW5mby0+c3RyZWFtX2luZGV4ID0gc3RyZWFtX2luZGV4OworCisgIHJldHVybiBpbmZvOworfQorCitHc3RQbGF5ZXJNZWRpYUluZm8gKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX25ldyAoY29uc3QgZ2NoYXIgKiB1cmkpCit7CisgIEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbzsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAodXJpICE9IE5VTEwsIE5VTEwpOworCisgIGluZm8gPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1BMQVlFUl9NRURJQV9JTkZPLCBOVUxMKTsKKyAgaW5mby0+dXJpID0gZ19zdHJkdXAgKHVyaSk7CisKKyAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF91cmk6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogdGhlIFVSSSBhc3NvY2lhdGVkIHdpdGggI0dzdFBsYXllck1lZGlhSW5mby4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF91cmkgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX01FRElBX0lORk8gKGluZm8pLCBOVUxMKTsKKworICByZXR1cm4gaW5mby0+dXJpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19pc19zZWVrYWJsZToKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgbWVkaWEgaXMgc2Vla2FibGUuCisgKi8KK2dib29sZWFuCitnc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGUgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX01FRElBX0lORk8gKGluZm8pLCBGQUxTRSk7CisKKyAgcmV0dXJuIGluZm8tPnNlZWthYmxlOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3Q6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpIChlbGVtZW50LXR5cGUgR3N0UGxheWVyU3RyZWFtSW5mbyk6IEEgI0dMaXN0IG9mCisgKiBtYXRjaGluZyAjR3N0UGxheWVyU3RyZWFtSW5mby4KKyAqLworR0xpc3QgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9zdHJlYW1fbGlzdCAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5zdHJlYW1fbGlzdDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zOgorICogQGluZm86IGEgI0dzdFBsYXllck1lZGlhSW5mbworICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKSAoZWxlbWVudC10eXBlIEdzdFBsYXllclZpZGVvSW5mbyk6IEEgI0dMaXN0IG9mCisgKiBtYXRjaGluZyAjR3N0UGxheWVyVmlkZW9JbmZvLgorICovCitHTGlzdCAqCitnc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPIChpbmZvKSwgTlVMTCk7CisKKyAgcmV0dXJuIGluZm8tPnZpZGVvX3N0cmVhbV9saXN0OworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXM6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpIChlbGVtZW50LXR5cGUgR3N0UGxheWVyU3VidGl0bGVJbmZvKTogQSAjR0xpc3Qgb2YKKyAqIG1hdGNoaW5nICNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8uCisgKi8KK0dMaXN0ICoKK2dzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXMgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX01FRElBX0lORk8gKGluZm8pLCBOVUxMKTsKKworICByZXR1cm4gaW5mby0+c3VidGl0bGVfc3RyZWFtX2xpc3Q7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtczoKKyAqIEBpbmZvOiBhICNHc3RQbGF5ZXJNZWRpYUluZm8KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSkgKGVsZW1lbnQtdHlwZSBHc3RQbGF5ZXJBdWRpb0luZm8pOiBBICNHTGlzdCBvZgorICogbWF0Y2hpbmcgI0dzdFBsYXllckF1ZGlvSW5mby4KKyAqLworR0xpc3QgKgorZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtcyAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5hdWRpb19zdHJlYW1fbGlzdDsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uOgorICogQGluZm86IGEgI0dzdFBsYXllck1lZGlhSW5mbworICoKKyAqIFJldHVybnM6IGR1cmF0aW9uIG9mIHRoZSBtZWRpYS4KKyAqLworR3N0Q2xvY2tUaW1lCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2R1cmF0aW9uIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKiBpbmZvKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPIChpbmZvKSwgLTEpOworCisgIHJldHVybiBpbmZvLT5kdXJhdGlvbjsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3M6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiB0aGUgdGFncyBjb250YWluZWQgaW4gbWVkaWEgaW5mby4KKyAqLworR3N0VGFnTGlzdCAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RhZ3MgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX01FRElBX0lORk8gKGluZm8pLCBOVUxMKTsKKworICByZXR1cm4gaW5mby0+dGFnczsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlOgorICogQGluZm86IGEgI0dzdFBsYXllck1lZGlhSW5mbworICoKKyAqIFJldHVybnM6IHRoZSBtZWRpYSB0aXRsZS4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90aXRsZSAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT50aXRsZTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXQ6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogUmV0dXJuczogdGhlIGNvbnRhaW5lciBmb3JtYXQuCisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfY29udGFpbmVyX2Zvcm1hdCAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICogaW5mbykKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfTUVESUFfSU5GTyAoaW5mbyksIE5VTEwpOworCisgIHJldHVybiBpbmZvLT5jb250YWluZXI7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGU6CisgKiBAaW5mbzogYSAjR3N0UGxheWVyTWVkaWFJbmZvCisgKgorICogRnVuY3Rpb24gdG8gZ2V0IHRoZSBpbWFnZSAob3IgcHJldmlldy1pbWFnZSkgc3RvcmVkIGluIHRhZ2xpc3QuCisgKiBBcHBsaWNhdGlvbiBjYW4gdXNlIGdzdF9zYW1wbGVfKl8oKSBBUEkncyB0byBnZXQgY2FwcywgYnVmZmVyIGV0Yy4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgbm9uZSk6IEdzdFNhbXBsZSBvciBOVUxMLgorICovCitHc3RTYW1wbGUgKgorZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9pbWFnZV9zYW1wbGUgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSX01FRElBX0lORk8gKGluZm8pLCBOVUxMKTsKKworICByZXR1cm4gaW5mby0+aW1hZ2Vfc2FtcGxlOworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0NThiNzUKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1tZWRpYS1pbmZvLmgKQEAgLTAsMCArMSwxOTIgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLmtzaW5naEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfTUVESUFfSU5GT19IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX01FRElBX0lORk9fSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9QTEFZRVJfU1RSRUFNX0lORk8gXAorICAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdHlwZSAoKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9TVFJFQU1fSU5GTyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTyxHc3RQbGF5ZXJTdHJlYW1JbmZvKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9TVFJFQU1fSU5GT19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9QTEFZRVJfU1RSRUFNX0lORk8sR3N0UGxheWVyU3RyZWFtSW5mbykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfU1RSRUFNX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9QTEFZRVJfU1RSRUFNX0lORk8pKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX1NUUkVBTV9JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1BMQVlFUl9TVFJFQU1fSU5GTykpCisKKy8qKgorICogR3N0UGxheWVyU3RyZWFtSW5mbzoKKyAqCisgKiBCYXNlIHN0cnVjdHVyZSBmb3IgaW5mb3JtYXRpb24gY29uY2VyaW5nIGEgbWVkaWEgc3RyZWFtLiBEZXBlbmRpbmcgb24KKyAqIHRoZSBzdHJlYW0gdHlwZSwgb25lIGNhbiBmaW5kIG1vcmUgbWVkaWEtc3BlY2lmaWMgaW5mb3JtYXRpb24gaW4KKyAqICNHc3RQbGF5ZXJWaWRlb0luZm8sICNHc3RQbGF5ZXJBdWRpb0luZm8sICNHc3RQbGF5ZXJTdWJ0aXRsZUluZm8uCisgKi8KK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTdHJlYW1JbmZvIEdzdFBsYXllclN0cmVhbUluZm87Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyU3RyZWFtSW5mb0NsYXNzIEdzdFBsYXllclN0cmVhbUluZm9DbGFzczsKK0dUeXBlIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3R5cGUgKHZvaWQpOworCitnaW50ICAgICAgICAgIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4CisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclN0cmVhbUluZm8gKmluZm8pOworY29uc3QgZ2NoYXIqICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJTdHJlYW1JbmZvICppbmZvKTsKK0dzdFRhZ0xpc3QqICAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFncworICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJTdHJlYW1JbmZvICppbmZvKTsKK0dzdENhcHMqICAgICAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwcworICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJTdHJlYW1JbmZvICppbmZvKTsKK2NvbnN0IGdjaGFyKiAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWMKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyU3RyZWFtSW5mbyAqaW5mbyk7CisKKyNkZWZpbmUgR1NUX1RZUEVfUExBWUVSX1ZJREVPX0lORk8gXAorICAoZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfUExBWUVSX1ZJREVPX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTywgR3N0UGxheWVyVmlkZW9JbmZvKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9WSURFT19JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgob2JqKSxHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTywgR3N0UGxheWVyVmlkZW9JbmZvQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfVklERU9fSU5GT19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKG9iaiksR1NUX1RZUEVfUExBWUVSX1ZJREVPX0lORk8pKQorCisvKioKKyAqIEdzdFBsYXllclZpZGVvSW5mbzoKKyAqCisgKiAjR3N0UGxheWVyU3RyZWFtSW5mbyBzcGVjaWZpYyB0byB2aWRlbyBzdHJlYW1zLgorICovCit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyVmlkZW9JbmZvIEdzdFBsYXllclZpZGVvSW5mbzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb0luZm9DbGFzcyBHc3RQbGF5ZXJWaWRlb0luZm9DbGFzczsKK0dUeXBlIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfdHlwZSAodm9pZCk7CisKK2dpbnQgICAgICAgICAgZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9iaXRyYXRlCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyogaW5mbyk7CitnaW50ICAgICAgICAgIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfbWF4X2JpdHJhdGUKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyVmlkZW9JbmZvKiBpbmZvKTsKK2dpbnQgICAgICAgICAgZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF93aWR0aAorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8qIGluZm8pOworZ2ludCAgICAgICAgICBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodAorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8qIGluZm8pOwordm9pZCAgICAgICAgICBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2ZyYW1lcmF0ZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJWaWRlb0luZm8qIGluZm8sIGdpbnQgKmZwc19uLCBnaW50ICpmcHNfZCk7Cit2b2lkICAgICAgICAgIGdzdF9wbGF5ZXJfdmlkZW9faW5mb19nZXRfcGl4ZWxfYXNwZWN0X3JhdGlvCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllclZpZGVvSW5mbyogaW5mbywgZ3VpbnQgKnBhcl9uLCBndWludCAqcGFyX2QpOworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPIFwKKyAgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfdHlwZSAoKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9BVURJT19JTkZPKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8sIEdzdFBsYXllckF1ZGlvSW5mbykpCisjZGVmaW5lIEdTVF9QTEFZRVJfQVVESU9fSU5GT19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTywgR3N0UGxheWVyQXVkaW9JbmZvQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX0FVRElPX0lORk8ob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfQVVESU9fSU5GT19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTykpCisKKy8qKgorICogR3N0UGxheWVyQXVkaW9JbmZvOgorICoKKyAqICNHc3RQbGF5ZXJTdHJlYW1JbmZvIHNwZWNpZmljIHRvIGF1ZGlvIHN0cmVhbXMuCisgKi8KK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJBdWRpb0luZm8gR3N0UGxheWVyQXVkaW9JbmZvOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllckF1ZGlvSW5mb0NsYXNzIEdzdFBsYXllckF1ZGlvSW5mb0NsYXNzOworR1R5cGUgZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF90eXBlICh2b2lkKTsKKworZ2ludCAgICAgICAgICBnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2NoYW5uZWxzCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllckF1ZGlvSW5mbyogaW5mbyk7CitnaW50ICAgICAgICAgIGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGUKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyQXVkaW9JbmZvKiBpbmZvKTsKK2dpbnQgICAgICAgICAgZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9iaXRyYXRlCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllckF1ZGlvSW5mbyogaW5mbyk7CitnaW50ICAgICAgICAgIGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbWF4X2JpdHJhdGUKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyQXVkaW9JbmZvKiBpbmZvKTsKK2NvbnN0IGdjaGFyKiAgZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9sYW5ndWFnZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJBdWRpb0luZm8qIGluZm8pOworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPIFwKKyAgKGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfdHlwZSAoKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9TVUJUSVRMRV9JTkZPKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8sIEdzdFBsYXllclN1YnRpdGxlSW5mbykpCisjZGVmaW5lIEdTVF9QTEFZRVJfU1VCVElUTEVfSU5GT19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTyxHc3RQbGF5ZXJTdWJ0aXRsZUluZm9DbGFzcykpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfU1VCVElUTEVfSU5GTyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9TVUJUSVRMRV9JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPKSkKKworLyoqCisgKiBHc3RQbGF5ZXJTdWJ0aXRsZUluZm86CisgKgorICogI0dzdFBsYXllclN0cmVhbUluZm8gc3BlY2lmaWMgdG8gc3VidGl0bGUgc3RyZWFtcy4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclN1YnRpdGxlSW5mbyBHc3RQbGF5ZXJTdWJ0aXRsZUluZm87Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyU3VidGl0bGVJbmZvQ2xhc3MgR3N0UGxheWVyU3VidGl0bGVJbmZvQ2xhc3M7CitHVHlwZSBnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fZ2V0X3R5cGUgKHZvaWQpOworCitjb25zdCBnY2hhciogIGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2UKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyU3VidGl0bGVJbmZvKiBpbmZvKTsKKworI2RlZmluZSBHU1RfVFlQRV9QTEFZRVJfTUVESUFfSU5GTyBcCisgIChnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9NRURJQV9JTkZPKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfUExBWUVSX01FRElBX0lORk8sR3N0UGxheWVyTWVkaWFJbmZvKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9NRURJQV9JTkZPX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1BMQVlFUl9NRURJQV9JTkZPLEdzdFBsYXllck1lZGlhSW5mb0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUl9NRURJQV9JTkZPKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfUExBWUVSX01FRElBX0lORk8pKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX01FRElBX0lORk9fQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfUExBWUVSX01FRElBX0lORk8pKQorCisvKioKKyAqIEdzdFBsYXllck1lZGlhSW5mbzoKKyAqCisgKiBTdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgbWVkaWEgaW5mb3JtYXRpb24gb2YgYSBVUkkuCisgKi8KK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJNZWRpYUluZm8gR3N0UGxheWVyTWVkaWFJbmZvOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllck1lZGlhSW5mb0NsYXNzIEdzdFBsYXllck1lZGlhSW5mb0NsYXNzOworR1R5cGUgZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF90eXBlICh2b2lkKTsKKworY29uc3QgZ2NoYXIqICBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3VyaQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworZ2Jvb2xlYW4gICAgICBnc3RfcGxheWVyX21lZGlhX2luZm9faXNfc2Vla2FibGUKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvKTsKK0dzdENsb2NrVGltZSAgZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2dldF9kdXJhdGlvbgorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworR0xpc3QqICAgICAgICBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3N0cmVhbV9saXN0CisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7CitHTGlzdCogICAgICAgIGdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXMKKyAgICAgICAgICAgICAgICAoY29uc3QgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvKTsKK0dMaXN0KiAgICAgICAgZ3N0X3BsYXllcl9nZXRfYXVkaW9fc3RyZWFtcworICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworR0xpc3QqICAgICAgICBnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7CitHc3RUYWdMaXN0KiAgIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFncworICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworY29uc3QgZ2NoYXIqICBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3RpdGxlCisgICAgICAgICAgICAgICAgKGNvbnN0IEdzdFBsYXllck1lZGlhSW5mbyAqaW5mbyk7Citjb25zdCBnY2hhciogIGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfY29udGFpbmVyX2Zvcm1hdAorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworR3N0U2FtcGxlKiAgICBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZQorICAgICAgICAgICAgICAgIChjb25zdCBHc3RQbGF5ZXJNZWRpYUluZm8gKmluZm8pOworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9NRURJQV9JTkZPX0ggKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLXByaXZhdGUuaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLXByaXZhdGUuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Mzk5MTYxCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oCkBAIC0wLDAgKzEsMzQgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVJfUFJJVkFURV9IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSX1BSSVZBVEVfSF9fCisKKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oPgorCitHX0JFR0lOX0RFQ0xTCisKK0dfR05VQ19JTlRFUk5BTCB2b2lkIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgKiBzZWxmLAorICAgIEdzdFBsYXllciAqIHBsYXllciwgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckZ1bmMgZW1pdHRlciwgZ3BvaW50ZXIgZGF0YSwKKyAgICBHRGVzdHJveU5vdGlmeSBkZXN0cm95KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUl9QUklWQVRFX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuYyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlN2I3MwotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmMKQEAgLTAsMCArMSw1NyBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXIuaCIKKyNpbmNsdWRlICJnc3RwbGF5ZXItc2lnbmFsLWRpc3BhdGNoZXItcHJpdmF0ZS5oIgorCitHX0RFRklORV9JTlRFUkZBQ0UgKEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIsIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXIsCisgICAgR19UWVBFX09CSkVDVCk7CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2RlZmF1bHRfaW5pdCAoR19HTlVDX1VOVVNFRAorICAgIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJJbnRlcmZhY2UgKiBpZmFjZSkKK3sKKworfQorCit2b2lkCitnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoIChHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXIgKiBwbGF5ZXIsIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJGdW5jIGVtaXR0ZXIsIGdwb2ludGVyIGRhdGEsCisgICAgR0Rlc3Ryb3lOb3RpZnkgZGVzdHJveSkKK3sKKyAgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSAqaWZhY2U7CisKKyAgaWYgKCFzZWxmKSB7CisgICAgZW1pdHRlciAoZGF0YSk7CisgICAgaWYgKGRlc3Ryb3kpCisgICAgICBkZXN0cm95IChkYXRhKTsKKyAgICByZXR1cm47CisgIH0KKworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSIChzZWxmKSk7CisgIGlmYWNlID0gR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUl9HRVRfSU5URVJGQUNFIChzZWxmKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoaWZhY2UtPmRpc3BhdGNoICE9IE5VTEwpOworCisgIGlmYWNlLT5kaXNwYXRjaCAoc2VsZiwgcGxheWVyLCBlbWl0dGVyLCBkYXRhLCBkZXN0cm95KTsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLmggYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2MzM4YjIKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVJfSF9fCisjZGVmaW5lIF9fR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUl9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci10eXBlcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXI7Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVySW50ZXJmYWNlOworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUiAgICAgICAgICAgICAgICAoZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9nZXRfdHlwZSAoKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUihvYmopICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUiwgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlcikpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVIob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9QTEFZRVJfU0lHTkFMX0RJU1BBVENIRVIpKQorI2RlZmluZSBHU1RfUExBWUVSX1NJR05BTF9ESVNQQVRDSEVSX0dFVF9JTlRFUkZBQ0UoaW5zdCkgKEdfVFlQRV9JTlNUQU5DRV9HRVRfSU5URVJGQUNFICgoaW5zdCksIEdTVF9UWVBFX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUiwgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSkpCisKK3R5cGVkZWYgdm9pZCAoKkdzdFBsYXllclNpZ25hbERpc3BhdGNoZXJGdW5jKSAoZ3BvaW50ZXIgZGF0YSk7CisKK3N0cnVjdCBfR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlckludGVyZmFjZSB7CisgIEdUeXBlSW50ZXJmYWNlIHBhcmVudF9pZmFjZTsKKworICB2b2lkICgqZGlzcGF0Y2gpIChHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyICogc2VsZiwKKyAgICAgICAgICAgICAgICAgICAgR3N0UGxheWVyICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyRnVuYyBlbWl0dGVyLAorICAgICAgICAgICAgICAgICAgICBncG9pbnRlciBkYXRhLAorICAgICAgICAgICAgICAgICAgICBHRGVzdHJveU5vdGlmeSBkZXN0cm95KTsKK307CisKK0dUeXBlICAgICAgICBnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2dldF90eXBlICAgICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUl9IX18gKi8KZGlmZiAtLWdpdCBhL2V4dC9vcHVzL2dzdG9wdXNjb21tb24uaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXR5cGVzLmgKc2ltaWxhcml0eSBpbmRleCA2MCUKY29weSBmcm9tIGV4dC9vcHVzL2dzdG9wdXNjb21tb24uaApjb3B5IHRvIGdzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXR5cGVzLmgKaW5kZXggNzE3NzFhZS4uZjY2MjdlNiAxMDA2NDQKLS0tIGEvZXh0L29wdXMvZ3N0b3B1c2NvbW1vbi5oCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXR5cGVzLmgKQEAgLTEsNSArMSw2IEBACi0vKiBHU3RyZWFtZXIgT3B1cyBFbmNvZGVyCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDkgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuLmRyb2VnZUBjb2xsYWJvcmEuY28udWs+CisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMTcsMjEgKzE4LDE4IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0KLSNpZm5kZWYgX19HU1RfT1BVU19DT01NT05fSF9fCi0jZGVmaW5lIF9fR1NUX09QVVNfQ09NTU9OX0hfXworI2lmbmRlZiBfX0dTVF9QTEFZRVJfVFlQRVNfSF9fCisjZGVmaW5lIF9fR1NUX1BMQVlFUl9UWVBFU19IX18KIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KLSNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KIAogR19CRUdJTl9ERUNMUwogCi1leHRlcm4gY29uc3QgR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gZ3N0X29wdXNfY2hhbm5lbF9wb3NpdGlvbnNbXVs4XTsKLWV4dGVybiBjb25zdCBjaGFyICpnc3Rfb3B1c19jaGFubmVsX25hbWVzW107Ci1leHRlcm4gdm9pZCBnc3Rfb3B1c19jb21tb25fbG9nX2NoYW5uZWxfbWFwcGluZ190YWJsZSAoR3N0RWxlbWVudCAqZWxlbWVudCwKLSAgICBHc3REZWJ1Z0NhdGVnb3J5ICogY2F0ZWdvcnksIGNvbnN0IGNoYXIgKm1zZywKLSAgICBpbnQgbl9jaGFubmVscywgY29uc3QgZ3VpbnQ4ICp0YWJsZSk7Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyIEdzdFBsYXllcjsKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJDbGFzcyBHc3RQbGF5ZXJDbGFzczsKIAogR19FTkRfREVDTFMKIAotI2VuZGlmIC8qIF9fR1NUX09QVVNfQ09NTU9OX0hfXyAqLworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9UWVBFU19IX18gKi8KKworCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmMgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1vdmVybGF5LXZpZGVvLXJlbmRlcmVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJhMzVlMAotLS0gL2Rldi9udWxsCisrKyBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuYwpAQCAtMCwwICsxLDMwOSBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046Z3N0cGxheWVyLXZpZGVvb3ZlcmxheXZpZGVvcmVuZGVyZXIKKyAqIEBzaG9ydF9kZXNjcmlwdGlvbjogUGxheWVyIFZpZGVvIE92ZXJsYXkgVmlkZW8gUmVuZGVyZXIKKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuaCIKKyNpbmNsdWRlICJnc3RwbGF5ZXIuaCIKKworI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorCitzdHJ1Y3QgX0dzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIKK3sKKyAgR09iamVjdCBwYXJlbnQ7CisKKyAgR3N0VmlkZW9PdmVybGF5ICp2aWRlb19vdmVybGF5OworICBncG9pbnRlciB3aW5kb3dfaGFuZGxlOworICBnaW50IHgsIHksIHdpZHRoLCBoZWlnaHQ7Cit9OworCitzdHJ1Y3QgX0dzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXJDbGFzcworeworICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworc3RhdGljIHZvaWQKKyAgICBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfaW50ZXJmYWNlX2luaXQKKyAgICAoR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSAqIGlmYWNlKTsKKworZW51bQoreworICBWSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX1BST1BfMCwKKyAgVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9QUk9QX1dJTkRPV19IQU5ETEUsCisgIFZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfUFJPUF9MQVNUCit9OworCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciwKKyAgICBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXIsIEdfVFlQRV9PQkpFQ1QsCisgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFIChHU1RfVFlQRV9QTEFZRVJfVklERU9fUkVOREVSRVIsCisgICAgICAgIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9pbnRlcmZhY2VfaW5pdCkpOworCitzdGF0aWMgR1BhcmFtU3BlYworICAgICogdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9wYXJhbV9zcGVjcworICAgIFtWSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX1BST1BfTEFTVF0gPSB7IE5VTEwsIH07CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKnNlbGYgPQorICAgICAgR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9QUk9QX1dJTkRPV19IQU5ETEU6CisgICAgICBzZWxmLT53aW5kb3dfaGFuZGxlID0gZ192YWx1ZV9nZXRfcG9pbnRlciAodmFsdWUpOworICAgICAgaWYgKHNlbGYtPnZpZGVvX292ZXJsYXkpCisgICAgICAgIGdzdF92aWRlb19vdmVybGF5X3NldF93aW5kb3dfaGFuZGxlIChzZWxmLT52aWRlb19vdmVybGF5LAorICAgICAgICAgICAgKGd1aW50cHRyKSBzZWxmLT53aW5kb3dfaGFuZGxlKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCisgICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqc2VsZiA9CisgICAgICBHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBWSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX1BST1BfV0lORE9XX0hBTkRMRToKKyAgICAgIGdfdmFsdWVfc2V0X3BvaW50ZXIgKHZhbHVlLCBzZWxmLT53aW5kb3dfaGFuZGxlKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqc2VsZiA9CisgICAgICBHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIgKG9iamVjdCk7CisKKyAgaWYgKHNlbGYtPnZpZGVvX292ZXJsYXkpCisgICAgZ3N0X29iamVjdF91bnJlZiAoc2VsZi0+dmlkZW9fb3ZlcmxheSk7CisKKyAgR19PQkpFQ1RfQ0xBU1MKKyAgICAgIChnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCisgICAgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2NsYXNzX2luaXQKKyAgICAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlckNsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisKKyAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0KKyAgICAgIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9CisgICAgICBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9maW5hbGl6ZTsKKworICB2aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3BhcmFtX3NwZWNzCisgICAgICBbVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9QUk9QX1dJTkRPV19IQU5ETEVdID0KKyAgICAgIGdfcGFyYW1fc3BlY19wb2ludGVyICgid2luZG93LWhhbmRsZSIsICJXaW5kb3cgSGFuZGxlIiwKKyAgICAgICJXaW5kb3cgaGFuZGxlIHRvIGVtYmVkIHRoZSB2aWRlbyBpbnRvIiwKKyAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnRpZXMgKGdvYmplY3RfY2xhc3MsCisgICAgICBWSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX1BST1BfTEFTVCwKKyAgICAgIHZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfcGFyYW1fc3BlY3MpOworfQorCitzdGF0aWMgdm9pZAorICAgIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9pbml0CisgICAgKEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKiBzZWxmKQoreworICBzZWxmLT54ID0gc2VsZi0+eSA9IHNlbGYtPndpZHRoID0gc2VsZi0+aGVpZ2h0ID0gLTE7Cit9CisKK3N0YXRpYyBHc3RFbGVtZW50ICpnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfY3JlYXRlX3ZpZGVvX3NpbmsKKyAgICAoR3N0UGxheWVyVmlkZW9SZW5kZXJlciAqIGlmYWNlLCBHc3RQbGF5ZXIgKiBwbGF5ZXIpCit7CisgIEdzdEVsZW1lbnQgKnZpZGVvX292ZXJsYXk7CisgIEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKnNlbGYgPQorICAgICAgR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSIChpZmFjZSk7CisKKyAgaWYgKHNlbGYtPnZpZGVvX292ZXJsYXkpCisgICAgZ3N0X29iamVjdF91bnJlZiAoc2VsZi0+dmlkZW9fb3ZlcmxheSk7CisKKyAgdmlkZW9fb3ZlcmxheSA9IGdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lIChwbGF5ZXIpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1ZJREVPX09WRVJMQVkgKHZpZGVvX292ZXJsYXkpLCBOVUxMKTsKKworICBzZWxmLT52aWRlb19vdmVybGF5ID0gR1NUX1ZJREVPX09WRVJMQVkgKHZpZGVvX292ZXJsYXkpOworCisgIGdzdF92aWRlb19vdmVybGF5X3NldF93aW5kb3dfaGFuZGxlIChzZWxmLT52aWRlb19vdmVybGF5LAorICAgICAgKGd1aW50cHRyKSBzZWxmLT53aW5kb3dfaGFuZGxlKTsKKyAgaWYgKHNlbGYtPndpZHRoICE9IC0xIHx8IHNlbGYtPmhlaWdodCAhPSAtMSkKKyAgICBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfcmVuZGVyX3JlY3RhbmdsZSAoc2VsZi0+dmlkZW9fb3ZlcmxheSwgc2VsZi0+eCwKKyAgICAgICAgc2VsZi0+eSwgc2VsZi0+d2lkdGgsIHNlbGYtPmhlaWdodCk7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCisgICAgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2ludGVyZmFjZV9pbml0CisgICAgKEdzdFBsYXllclZpZGVvUmVuZGVyZXJJbnRlcmZhY2UgKiBpZmFjZSkKK3sKKyAgaWZhY2UtPmNyZWF0ZV92aWRlb19zaW5rID0KKyAgICAgIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9jcmVhdGVfdmlkZW9fc2luazsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfbmV3OgorICogQHdpbmRvd19oYW5kbGU6IChhbGxvdy1ub25lKTogV2luZG93IGhhbmRsZSB0byB1c2Ugb3IgJU5VTEwKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6CisgKi8KK0dzdFBsYXllclZpZGVvUmVuZGVyZXIgKgorZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX25ldyAoZ3BvaW50ZXIgd2luZG93X2hhbmRsZSkKK3sKKyAgcmV0dXJuIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIsCisgICAgICAid2luZG93LWhhbmRsZSIsIHdpbmRvd19oYW5kbGUsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZToKKyAqIEBzZWxmOiAjR3N0UGxheWVyVmlkZW9SZW5kZXJlciBpbnN0YW5jZQorICogQHdpbmRvd19oYW5kbGU6IGhhbmRsZSByZWZlcmVuY2luZyB0byB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93CisgKgorICogU2V0cyB0aGUgcGxhdGZvcm0gc3BlY2lmaWMgd2luZG93IGhhbmRsZSBpbnRvIHdoaWNoIHRoZSB2aWRlbworICogc2hvdWxkIGJlIHJlbmRlcmVkCisgKiovCit2b2lkIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZQorICAgIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICogc2VsZiwgZ3BvaW50ZXIgd2luZG93X2hhbmRsZSkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSIChzZWxmKSk7CisKKyAgZ19vYmplY3Rfc2V0IChzZWxmLCAid2luZG93LWhhbmRsZSIsIHdpbmRvd19oYW5kbGUsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfd2luZG93X2hhbmRsZToKKyAqIEBzZWxmOiAjR3N0UGxheWVyVmlkZW9SZW5kZXJlciBpbnN0YW5jZQorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogVGhlIGN1cnJlbnRseSBzZXQsIHBsYXRmb3JtIHNwZWNpZmljIHdpbmRvdworICogaGFuZGxlCisgKi8KK2dwb2ludGVyCisgICAgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlCisgICAgKEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKiBzZWxmKSB7CisgIGdwb2ludGVyIHdpbmRvd19oYW5kbGU7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiAoc2VsZiksCisgICAgICBOVUxMKTsKKworICBnX29iamVjdF9nZXQgKHNlbGYsICJ3aW5kb3ctaGFuZGxlIiwgJndpbmRvd19oYW5kbGUsIE5VTEwpOworCisgIHJldHVybiB3aW5kb3dfaGFuZGxlOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2U6CisgKiBAc2VsZjogYSAjR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciBpbnN0YW5jZS4KKyAqCisgKiBUZWxsIGFuIG92ZXJsYXkgdGhhdCBpdCBoYXMgYmVlbiBleHBvc2VkLiBUaGlzIHdpbGwgcmVkcmF3IHRoZSBjdXJyZW50IGZyYW1lCisgKiBpbiB0aGUgZHJhd2FibGUgZXZlbiBpZiB0aGUgcGlwZWxpbmUgaXMgUEFVU0VELgorICovCit2b2lkIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9leHBvc2UKKyAgICAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiAoc2VsZikpOworCisgIGlmIChzZWxmLT52aWRlb19vdmVybGF5KQorICAgIGdzdF92aWRlb19vdmVybGF5X2V4cG9zZSAoc2VsZi0+dmlkZW9fb3ZlcmxheSk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlOgorICogQHNlbGY6IGEgI0dzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgaW5zdGFuY2UKKyAqIEB4OiB0aGUgaG9yaXpvbnRhbCBvZmZzZXQgb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93CisgKiBAeTogdGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cKKyAqIEB3aWR0aDogdGhlIHdpZHRoIG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdworICogQGhlaWdodDogdGhlIGhlaWdodCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cKKyAqCisgKiBDb25maWd1cmUgYSBzdWJyZWdpb24gYXMgYSB2aWRlbyB0YXJnZXQgd2l0aGluIHRoZSB3aW5kb3cgc2V0IGJ5CisgKiBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3dpbmRvd19oYW5kbGUoKS4gSWYgdGhpcyBpcyBub3QKKyAqIHVzZWQgb3Igbm90IHN1cHBvcnRlZCB0aGUgdmlkZW8gd2lsbCBmaWxsIHRoZSBhcmVhIG9mIHRoZSB3aW5kb3cgc2V0IGFzIHRoZQorICogb3ZlcmxheSB0byAxMDAlLiBCeSBzcGVjaWZ5aW5nIHRoZSByZWN0YW5nbGUsIHRoZSB2aWRlbyBjYW4gYmUgb3ZlcmxheWVkIHRvCisgKiBhIHNwZWNpZmljIHJlZ2lvbiBvZiB0aGF0IHdpbmRvdyBvbmx5LiBBZnRlciBzZXR0aW5nIHRoZSBuZXcgcmVjdGFuZ2xlIG9uZQorICogc2hvdWxkIGNhbGwgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2V4cG9zZSgpIHRvIGZvcmNlIGEKKyAqIHJlZHJhdy4gVG8gdW5zZXQgdGhlIHJlZ2lvbiBwYXNzIC0xIGZvciB0aGUgQHdpZHRoIGFuZCBAaGVpZ2h0IHBhcmFtZXRlcnMuCisgKgorICogVGhpcyBtZXRob2QgaXMgbmVlZGVkIGZvciBub24gZnVsbHNjcmVlbiB2aWRlbyBvdmVybGF5IGluIFVJIHRvb2xraXRzIHRoYXQKKyAqIGRvIG5vdCBzdXBwb3J0IHN1YndpbmRvd3MuCisgKgorICovCit2b2lkIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfcmVuZGVyX3JlY3RhbmdsZQorICAgIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICogc2VsZiwgZ2ludCB4LCBnaW50IHksIGdpbnQgd2lkdGgsCisgICAgZ2ludCBoZWlnaHQpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiAoc2VsZikpOworCisgIHNlbGYtPnggPSB4OworICBzZWxmLT55ID0geTsKKyAgc2VsZi0+d2lkdGggPSB3aWR0aDsKKyAgc2VsZi0+aGVpZ2h0ID0gaGVpZ2h0OworCisgIGlmIChzZWxmLT52aWRlb19vdmVybGF5KQorICAgIGdzdF92aWRlb19vdmVybGF5X3NldF9yZW5kZXJfcmVjdGFuZ2xlIChzZWxmLT52aWRlb19vdmVybGF5LAorICAgICAgICB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGU6CisgKiBAc2VsZjogYSAjR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciBpbnN0YW5jZQorICogQHg6IChvdXQpIChhbGxvdy1ub25lKTogdGhlIGhvcml6b250YWwgb2Zmc2V0IG9mIHRoZSByZW5kZXIgYXJlYSBpbnNpZGUgdGhlIHdpbmRvdworICogQHk6IChvdXQpIChhbGxvdy1ub25lKTogdGhlIHZlcnRpY2FsIG9mZnNldCBvZiB0aGUgcmVuZGVyIGFyZWEgaW5zaWRlIHRoZSB3aW5kb3cKKyAqIEB3aWR0aDogKG91dCkgKGFsbG93LW5vbmUpOiB0aGUgd2lkdGggb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93CisgKiBAaGVpZ2h0OiAob3V0KSAoYWxsb3ctbm9uZSk6IHRoZSBoZWlnaHQgb2YgdGhlIHJlbmRlciBhcmVhIGluc2lkZSB0aGUgd2luZG93CisgKgorICogUmV0dXJuIHRoZSBjdXJyZW50bHkgY29uZmlndXJlZCByZW5kZXIgcmVjdGFuZ2xlLiBTZWUgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX3NldF9yZW5kZXJfcmVjdGFuZ2xlKCkKKyAqIGZvciBkZXRhaWxzLgorICoKKyAqLwordm9pZCBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGUKKyAgICAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYsIGdpbnQgKiB4LCBnaW50ICogeSwKKyAgICBnaW50ICogd2lkdGgsIGdpbnQgKiBoZWlnaHQpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiAoc2VsZikpOworCisgIGlmICh4KQorICAgICp4ID0gc2VsZi0+eDsKKyAgaWYgKHkpCisgICAgKnkgPSBzZWxmLT55OworICBpZiAod2lkdGgpCisgICAgKndpZHRoID0gc2VsZi0+d2lkdGg7CisgIGlmIChoZWlnaHQpCisgICAgKmhlaWdodCA9IHNlbGYtPmhlaWdodDsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuaCBiL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLW92ZXJsYXktdmlkZW8tcmVuZGVyZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTA5MTEzCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oCkBAIC0wLDAgKzEsNTMgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfSF9fCisKKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci10eXBlcy5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmg+CisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIKKyAgICBHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyOwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXJDbGFzcworICAgIEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXJDbGFzczsKKworI2RlZmluZSBHU1RfVFlQRV9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiAgICAgICAgICAgICAoZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfSVNfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIob2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUikpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9DTEFTUyhrbGFzcykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIpKQorI2RlZmluZSBHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVJfR0VUX0NMQVNTKG9iaikgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSLCBHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyQ2xhc3MpKQorI2RlZmluZSBHU1RfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUiwgR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlcikpCisjZGVmaW5lIEdTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9DTEFTUyhrbGFzcykgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCAoKGtsYXNzKSwgR1NUX1RZUEVfUExBWUVSX1ZJREVPX09WRVJMQVlfVklERU9fUkVOREVSRVIsIEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXJDbGFzcykpCisjZGVmaW5lIEdTVF9QTEFZRVJfVklERU9fT1ZFUkxBWV9WSURFT19SRU5ERVJFUl9DQVNUKG9iaikgICAgICAgICgoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciopKG9iaikpCisKK0dUeXBlIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9nZXRfdHlwZSAodm9pZCk7CitHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyICogZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX25ldyAoZ3BvaW50ZXIgd2luZG93X2hhbmRsZSk7Cit2b2lkIGdzdF9wbGF5ZXJfdmlkZW9fb3ZlcmxheV92aWRlb19yZW5kZXJlcl9zZXRfd2luZG93X2hhbmRsZSAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYsIGdwb2ludGVyIHdpbmRvd19oYW5kbGUpOworZ3BvaW50ZXIgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2dldF93aW5kb3dfaGFuZGxlIChHc3RQbGF5ZXJWaWRlb092ZXJsYXlWaWRlb1JlbmRlcmVyICogc2VsZik7CisKK3ZvaWQgZ3N0X3BsYXllcl92aWRlb19vdmVybGF5X3ZpZGVvX3JlbmRlcmVyX2V4cG9zZSAoR3N0UGxheWVyVmlkZW9PdmVybGF5VmlkZW9SZW5kZXJlciAqIHNlbGYpOwordm9pZCBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfc2V0X3JlbmRlcl9yZWN0YW5nbGUgKEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKiBzZWxmLCBnaW50IHgsIGdpbnQgeSwgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQpOwordm9pZCBnc3RfcGxheWVyX3ZpZGVvX292ZXJsYXlfdmlkZW9fcmVuZGVyZXJfZ2V0X3JlbmRlcl9yZWN0YW5nbGUgKEdzdFBsYXllclZpZGVvT3ZlcmxheVZpZGVvUmVuZGVyZXIgKiBzZWxmLCBnaW50ICp4LCBnaW50ICp5LCBnaW50ICp3aWR0aCwgZ2ludCAqaGVpZ2h0KTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX1BMQVlFUl9WSURFT19PVkVSTEFZX1ZJREVPX1JFTkRFUkVSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlY2FiMTUKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmgKQEAgLTAsMCArMSwzMyBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUl9QUklWQVRFX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfVklERU9fUkVOREVSRVJfUFJJVkFURV9IX18KKworI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmg+CisKK0dfQkVHSU5fREVDTFMKKworR19HTlVDX0lOVEVSTkFMIEdzdEVsZW1lbnQgKiBnc3RfcGxheWVyX3ZpZGVvX3JlbmRlcmVyX2NyZWF0ZV92aWRlb19zaW5rIChHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyICoKKyAgICBzZWxmLCBHc3RQbGF5ZXIgKiBwbGF5ZXIpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfUExBWUVSX1ZJREVPX1JFTkRFUkVSX1BSSVZBVEVfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci5jIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmFmNmE4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXIuYwpAQCAtMCwwICsxLDQ5IEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdHBsYXllci12aWRlby1yZW5kZXJlci5oIgorI2luY2x1ZGUgImdzdHBsYXllci12aWRlby1yZW5kZXJlci1wcml2YXRlLmgiCisKK0dfREVGSU5FX0lOVEVSRkFDRSAoR3N0UGxheWVyVmlkZW9SZW5kZXJlciwgZ3N0X3BsYXllcl92aWRlb19yZW5kZXJlciwKKyAgICBHX1RZUEVfT0JKRUNUKTsKKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfdmlkZW9fcmVuZGVyZXJfZGVmYXVsdF9pbml0IChHX0dOVUNfVU5VU0VECisgICAgR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSAqIGlmYWNlKQoreworCit9CisKK0dzdEVsZW1lbnQgKgorZ3N0X3BsYXllcl92aWRlb19yZW5kZXJlcl9jcmVhdGVfdmlkZW9fc2luayAoR3N0UGxheWVyVmlkZW9SZW5kZXJlciAqIHNlbGYsCisgICAgR3N0UGxheWVyICogcGxheWVyKQoreworICBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlICppZmFjZTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUl9WSURFT19SRU5ERVJFUiAoc2VsZiksIE5VTEwpOworICBpZmFjZSA9IEdTVF9QTEFZRVJfVklERU9fUkVOREVSRVJfR0VUX0lOVEVSRkFDRSAoc2VsZik7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpZmFjZS0+Y3JlYXRlX3ZpZGVvX3NpbmsgIT0gTlVMTCwgTlVMTCk7CisKKyAgcmV0dXJuIGlmYWNlLT5jcmVhdGVfdmlkZW9fc2luayAoc2VsZiwgcGxheWVyKTsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmggYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5ZGY1YzkKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aWRlby1yZW5kZXJlci5oCkBAIC0wLDAgKzEsNDcgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfVklERU9fUkVOREVSRVJfSF9fCisjZGVmaW5lIF9fR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUl9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci10eXBlcy5oPgorCitHX0JFR0lOX0RFQ0xTCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIEdzdFBsYXllclZpZGVvUmVuZGVyZXI7Cit0eXBlZGVmIHN0cnVjdCBfR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVySW50ZXJmYWNlOworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUl9WSURFT19SRU5ERVJFUiAgICAgICAgICAgICAgICAoZ3N0X3BsYXllcl92aWRlb19yZW5kZXJlcl9nZXRfdHlwZSAoKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9WSURFT19SRU5ERVJFUihvYmopICAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUl9WSURFT19SRU5ERVJFUiwgR3N0UGxheWVyVmlkZW9SZW5kZXJlcikpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfVklERU9fUkVOREVSRVIob2JqKSAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9QTEFZRVJfVklERU9fUkVOREVSRVIpKQorI2RlZmluZSBHU1RfUExBWUVSX1ZJREVPX1JFTkRFUkVSX0dFVF9JTlRFUkZBQ0UoaW5zdCkgKEdfVFlQRV9JTlNUQU5DRV9HRVRfSU5URVJGQUNFICgoaW5zdCksIEdTVF9UWVBFX1BMQVlFUl9WSURFT19SRU5ERVJFUiwgR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSkpCisKK3N0cnVjdCBfR3N0UGxheWVyVmlkZW9SZW5kZXJlckludGVyZmFjZSB7CisgIEdUeXBlSW50ZXJmYWNlIHBhcmVudF9pZmFjZTsKKworICBHc3RFbGVtZW50ICogKCpjcmVhdGVfdmlkZW9fc2luaykgKEdzdFBsYXllclZpZGVvUmVuZGVyZXIgKiBzZWxmLCBHc3RQbGF5ZXIgKiBwbGF5ZXIpOworfTsKKworR1R5cGUgICAgICAgIGdzdF9wbGF5ZXJfdmlkZW9fcmVuZGVyZXJfZ2V0X3R5cGUgICAgICAgKHZvaWQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfUExBWUVSX1ZJREVPX1JFTkRFUkVSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5OTc2YTcKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmMKQEAgLTAsMCArMSwxNzggQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQnJpamVzaCBTaW5naCA8YnJpamVzaC5rc2luZ2hAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjpnc3RwbGF5ZXItdmlzdWFsaXphdGlvbgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBQbGF5ZXIgVmlzdWFsaXphdGlvbgorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5oIgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKK3N0YXRpYyBHTXV0ZXggdmlzX2xvY2s7CitzdGF0aWMgR1F1ZXVlIHZpc19saXN0ID0gR19RVUVVRV9JTklUOworc3RhdGljIGd1aW50MzIgdmlzX2Nvb2tpZTsKKworR19ERUZJTkVfQk9YRURfVFlQRSAoR3N0UGxheWVyVmlzdWFsaXphdGlvbiwgZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uLAorICAgIChHQm94ZWRDb3B5RnVuYykgZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHksCisgICAgKEdCb3hlZEZyZWVGdW5jKSBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZSk7CisKKy8qKgorICogZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWU6CisgKiBAdmlzOiAjR3N0UGxheWVyVmlzdWFsaXphdGlvbiBpbnN0YW5jZQorICoKKyAqIEZyZWVzIGEgI0dzdFBsYXllclZpc3VhbGl6YXRpb24uCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9mcmVlIChHc3RQbGF5ZXJWaXN1YWxpemF0aW9uICogdmlzKQoreworICBnX3JldHVybl9pZl9mYWlsICh2aXMgIT0gTlVMTCk7CisKKyAgZ19mcmVlICh2aXMtPm5hbWUpOworICBnX2ZyZWUgKHZpcy0+ZGVzY3JpcHRpb24pOworICBnX2ZyZWUgKHZpcyk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHk6CisgKiBAdmlzOiAjR3N0UGxheWVyVmlzdWFsaXphdGlvbiBpbnN0YW5jZQorICoKKyAqIE1ha2VzIGEgY29weSBvZiB0aGUgI0dzdFBsYXllclZpc3VhbGl6YXRpb24uIFRoZSByZXN1bHQgbXVzdCBiZQorICogZnJlZWQgdXNpbmcgZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2ZyZWUoKS4KKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCk6IGFuIGFsbG9jYXRlZCBjb3B5IG9mIEB2aXMuCisgKi8KK0dzdFBsYXllclZpc3VhbGl6YXRpb24gKgorZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHkgKGNvbnN0IEdzdFBsYXllclZpc3VhbGl6YXRpb24gKiB2aXMpCit7CisgIEdzdFBsYXllclZpc3VhbGl6YXRpb24gKnJldDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAodmlzICE9IE5VTEwsIE5VTEwpOworCisgIHJldCA9IGdfbmV3MCAoR3N0UGxheWVyVmlzdWFsaXphdGlvbiwgMSk7CisgIHJldC0+bmFtZSA9IHZpcy0+bmFtZSA/IGdfc3RyZHVwICh2aXMtPm5hbWUpIDogTlVMTDsKKyAgcmV0LT5kZXNjcmlwdGlvbiA9IHZpcy0+ZGVzY3JpcHRpb24gPyBnX3N0cmR1cCAodmlzLT5kZXNjcmlwdGlvbikgOiBOVUxMOworCisgIHJldHVybiByZXQ7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlOgorICogQHZpc3M6IGEgJU5VTEwgdGVybWluYXRlZCBhcnJheSBvZiAjR3N0UGxheWVyVmlzdWFsaXphdGlvbiB0byBmcmVlCisgKgorICogRnJlZXMgYSAlTlVMTCB0ZXJtaW5hdGVkIGFycmF5IG9mICNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uLgorICovCit2b2lkCitnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2ZyZWUgKEdzdFBsYXllclZpc3VhbGl6YXRpb24gKiogdmlzcykKK3sKKyAgR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqKnA7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAodmlzcyAhPSBOVUxMKTsKKworICBwID0gdmlzczsKKyAgd2hpbGUgKCpwKSB7CisgICAgZ19mcmVlICgoKnApLT5uYW1lKTsKKyAgICBnX2ZyZWUgKCgqcCktPmRlc2NyaXB0aW9uKTsKKyAgICBnX2ZyZWUgKCpwKTsKKyAgICBwKys7CisgIH0KKyAgZ19mcmVlICh2aXNzKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfdXBkYXRlX3Zpc3VhbGl6YXRpb25fbGlzdCAodm9pZCkKK3sKKyAgR0xpc3QgKmZlYXR1cmVzOworICBHTGlzdCAqbDsKKyAgZ3VpbnQzMiBjb29raWU7CisgIEdzdFBsYXllclZpc3VhbGl6YXRpb24gKnZpczsKKworICBnX211dGV4X2xvY2sgKCZ2aXNfbG9jayk7CisKKyAgLyogY2hlY2sgaWYgd2UgbmVlZCB0byB1cGRhdGUgdGhlIGxpc3QgKi8KKyAgY29va2llID0gZ3N0X3JlZ2lzdHJ5X2dldF9mZWF0dXJlX2xpc3RfY29va2llIChnc3RfcmVnaXN0cnlfZ2V0ICgpKTsKKyAgaWYgKHZpc19jb29raWUgPT0gY29va2llKSB7CisgICAgZ19tdXRleF91bmxvY2sgKCZ2aXNfbG9jayk7CisgICAgcmV0dXJuOworICB9CisKKyAgLyogaWYgdXBkYXRlIGlzIG5lZWRlZCB0aGVuIGZpcnN0IGZyZWUgdGhlIGV4aXN0aW5nIGxpc3QgKi8KKyAgd2hpbGUgKCh2aXMgPSBnX3F1ZXVlX3BvcF9oZWFkICgmdmlzX2xpc3QpKSkKKyAgICBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZSAodmlzKTsKKworICBmZWF0dXJlcyA9IGdzdF9yZWdpc3RyeV9nZXRfZmVhdHVyZV9saXN0IChnc3RfcmVnaXN0cnlfZ2V0ICgpLAorICAgICAgR1NUX1RZUEVfRUxFTUVOVF9GQUNUT1JZKTsKKworICBmb3IgKGwgPSBmZWF0dXJlczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RQbHVnaW5GZWF0dXJlICpmZWF0dXJlID0gbC0+ZGF0YTsKKyAgICBjb25zdCBnY2hhciAqa2xhc3M7CisKKyAgICBrbGFzcyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZ2V0X21ldGFkYXRhIChHU1RfRUxFTUVOVF9GQUNUT1JZIChmZWF0dXJlKSwKKyAgICAgICAgR1NUX0VMRU1FTlRfTUVUQURBVEFfS0xBU1MpOworCisgICAgaWYgKHN0cnN0ciAoa2xhc3MsICJWaXN1YWxpemF0aW9uIikpIHsKKyAgICAgIHZpcyA9IGdfbmV3MCAoR3N0UGxheWVyVmlzdWFsaXphdGlvbiwgMSk7CisKKyAgICAgIHZpcy0+bmFtZSA9IGdfc3RyZHVwIChnc3RfcGx1Z2luX2ZlYXR1cmVfZ2V0X25hbWUgKGZlYXR1cmUpKTsKKyAgICAgIHZpcy0+ZGVzY3JpcHRpb24gPQorICAgICAgICAgIGdfc3RyZHVwIChnc3RfZWxlbWVudF9mYWN0b3J5X2dldF9tZXRhZGF0YSAoR1NUX0VMRU1FTlRfRkFDVE9SWQorICAgICAgICAgICAgICAoZmVhdHVyZSksIEdTVF9FTEVNRU5UX01FVEFEQVRBX0RFU0NSSVBUSU9OKSk7CisgICAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoJnZpc19saXN0LCB2aXMpOworICAgIH0KKyAgfQorICBnc3RfcGx1Z2luX2ZlYXR1cmVfbGlzdF9mcmVlIChmZWF0dXJlcyk7CisKKyAgdmlzX2Nvb2tpZSA9IGNvb2tpZTsKKworICBnX211dGV4X3VubG9jayAoJnZpc19sb2NrKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25zX2dldDoKKyAqCisgKiBSZXR1cm5zOiAodHJhbnNmZXIgZnVsbCkgKGFycmF5IHplcm8tdGVybWluYXRlZD0xKSAoZWxlbWVudC10eXBlIEdzdFBsYXllclZpc3VhbGl6YXRpb24pOgorICogIGEgJU5VTEwgdGVybWluYXRlZCBhcnJheSBjb250YWluaW5nIGFsbCBhdmFpbGFibGUKKyAqICB2aXN1YWxpemF0aW9ucy4gVXNlIGdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZnJlZSgpIGFmdGVyCisgKiAgdXNhZ2UuCisgKi8KK0dzdFBsYXllclZpc3VhbGl6YXRpb24gKioKK2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0ICh2b2lkKQoreworICBnaW50IGkgPSAwOworICBHTGlzdCAqbDsKKyAgR3N0UGxheWVyVmlzdWFsaXphdGlvbiAqKnJldDsKKworICBnc3RfcGxheWVyX3VwZGF0ZV92aXN1YWxpemF0aW9uX2xpc3QgKCk7CisKKyAgZ19tdXRleF9sb2NrICgmdmlzX2xvY2spOworICByZXQgPSBnX25ldzAgKEdzdFBsYXllclZpc3VhbGl6YXRpb24gKiwgZ19xdWV1ZV9nZXRfbGVuZ3RoICgmdmlzX2xpc3QpICsgMSk7CisgIGZvciAobCA9IHZpc19saXN0LmhlYWQ7IGw7IGwgPSBsLT5uZXh0KQorICAgIHJldFtpKytdID0gZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHkgKGwtPmRhdGEpOworICBnX211dGV4X3VubG9jayAoJnZpc19sb2NrKTsKKworICByZXR1cm4gcmV0OworfQpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9nc3RwbGF5ZXItdmlzdWFsaXphdGlvbi5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjczODI3NzMKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci12aXN1YWxpemF0aW9uLmgKQEAgLTAsMCArMSw1MiBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLmtzaW5naEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX0dTVF9QTEFZRVJfVklTVUFMSVpBVElPTl9IX18KKyNkZWZpbmUgX19HU1RfUExBWUVSX1ZJU1VBTElaQVRJT05fSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFBsYXllclZpc3VhbGl6YXRpb24gR3N0UGxheWVyVmlzdWFsaXphdGlvbjsKKy8qKgorICogR3N0UGxheWVyVmlzdWFsaXphdGlvbjoKKyAqIEBuYW1lOiBuYW1lIG9mIHRoZSB2aXN1YWxpemF0aW9uLgorICogQGRlc2NyaXB0aW9uOiBkZXNjcmlwdGlvbiBvZiB0aGUgdmlzdWFsaXphdGlvbi4KKyAqCisgKiBBICNHc3RQbGF5ZXJWaXN1YWxpemF0aW9uIGRlc2NyaXB0b3IuCisgKi8KK3N0cnVjdCBfR3N0UGxheWVyVmlzdWFsaXphdGlvbiB7CisgIGdjaGFyICpuYW1lOworICBnY2hhciAqZGVzY3JpcHRpb247Cit9OworCitHVHlwZSAgICAgICAgICAgICAgICAgICAgIGdzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbl9nZXRfdHlwZSAodm9pZCk7CisKK0dzdFBsYXllclZpc3VhbGl6YXRpb24gKiAgZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uX2NvcHkgIChjb25zdCBHc3RQbGF5ZXJWaXN1YWxpemF0aW9uICp2aXMpOwordm9pZCAgICAgICAgICAgICAgICAgICAgICBnc3RfcGxheWVyX3Zpc3VhbGl6YXRpb25fZnJlZSAgKEdzdFBsYXllclZpc3VhbGl6YXRpb24gKnZpcyk7CisKK0dzdFBsYXllclZpc3VhbGl6YXRpb24gKiogZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19nZXQgICh2b2lkKTsKK3ZvaWQgICAgICAgICAgICAgICAgICAgICAgZ3N0X3BsYXllcl92aXN1YWxpemF0aW9uc19mcmVlIChHc3RQbGF5ZXJWaXN1YWxpemF0aW9uICoqdmlzcyk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9QTEFZRVJfVklTVUFMSVpBVElPTl9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmMgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ1MDA4MGUKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci5jCkBAIC0wLDAgKzEsMzc5MSBAQAorLyogR1N0cmVhbWVyCisgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBCcmlqZXNoIFNpbmdoIDxicmlqZXNoLmtzaW5naEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworLyoqCisgKiBTRUNUSU9OOmdzdHBsYXllcgorICogQHNob3J0X2Rlc2NyaXB0aW9uOiBQbGF5ZXIKKyAqCisgKi8KKworLyogVE9ETzoKKyAqCisgKiAtIEVxdWFsaXplcgorICogLSBHYXBsZXNzIHBsYXliYWNrCisgKiAtIEZyYW1lIHN0ZXBwaW5nCisgKiAtIFN1YnRpdGxlIGZvbnQsIGNvbm5lY3Rpb24gc3BlZWQKKyAqIC0gRGVpbnRlcmxhY2luZworICogLSBCdWZmZXJpbmcgY29udHJvbCAoLT4gcHJvZ3Jlc3NpdmUgZG93bmxvYWRpbmcpCisgKiAtIFBsYXlsaXN0L3F1ZXVlIG9iamVjdAorICogLSBDdXN0b20gdmlkZW8gc2luayAoZS5nLiBlbWJlZCBpbiBHTCBzY2VuZSkKKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0cGxheWVyLmgiCisjaW5jbHVkZSAiZ3N0cGxheWVyLXNpZ25hbC1kaXNwYXRjaGVyLXByaXZhdGUuaCIKKyNpbmNsdWRlICJnc3RwbGF5ZXItdmlkZW8tcmVuZGVyZXItcHJpdmF0ZS5oIgorI2luY2x1ZGUgImdzdHBsYXllci1tZWRpYS1pbmZvLXByaXZhdGUuaCIKKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vY29sb3JiYWxhbmNlLmg+CisjaW5jbHVkZSA8Z3N0L3RhZy90YWcuaD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9kZXNjcmlwdGlvbnMuaD4KKworI2luY2x1ZGUgPHN0cmluZy5oPgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfcGxheWVyX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9wbGF5ZXJfZGVidWcKKworI2RlZmluZSBERUZBVUxUX1VSSSBOVUxMCisjZGVmaW5lIERFRkFVTFRfUE9TSVRJT04gR1NUX0NMT0NLX1RJTUVfTk9ORQorI2RlZmluZSBERUZBVUxUX0RVUkFUSU9OIEdTVF9DTE9DS19USU1FX05PTkUKKyNkZWZpbmUgREVGQVVMVF9WT0xVTUUgMS4wCisjZGVmaW5lIERFRkFVTFRfTVVURSBGQUxTRQorI2RlZmluZSBERUZBVUxUX1JBVEUgMS4wCisjZGVmaW5lIERFRkFVTFRfUE9TSVRJT05fVVBEQVRFX0lOVEVSVkFMX01TIDEwMAorCitHUXVhcmsKK2dzdF9wbGF5ZXJfZXJyb3JfcXVhcmsgKHZvaWQpCit7CisgIHN0YXRpYyBHUXVhcmsgcXVhcms7CisKKyAgaWYgKCFxdWFyaykKKyAgICBxdWFyayA9IGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nICgiZ3N0LXBsYXllci1lcnJvci1xdWFyayIpOworCisgIHJldHVybiBxdWFyazsKK30KKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfVklERU9fUkVOREVSRVIsCisgIFBST1BfU0lHTkFMX0RJU1BBVENIRVIsCisgIFBST1BfVVJJLAorICBQUk9QX1NVQlVSSSwKKyAgUFJPUF9QT1NJVElPTiwKKyAgUFJPUF9EVVJBVElPTiwKKyAgUFJPUF9NRURJQV9JTkZPLAorICBQUk9QX0NVUlJFTlRfQVVESU9fVFJBQ0ssCisgIFBST1BfQ1VSUkVOVF9WSURFT19UUkFDSywKKyAgUFJPUF9DVVJSRU5UX1NVQlRJVExFX1RSQUNLLAorICBQUk9QX1ZPTFVNRSwKKyAgUFJPUF9NVVRFLAorICBQUk9QX1JBVEUsCisgIFBST1BfUElQRUxJTkUsCisgIFBST1BfUE9TSVRJT05fVVBEQVRFX0lOVEVSVkFMLAorICBQUk9QX0xBU1QKK307CisKK2VudW0KK3sKKyAgU0lHTkFMX1BPU0lUSU9OX1VQREFURUQsCisgIFNJR05BTF9EVVJBVElPTl9DSEFOR0VELAorICBTSUdOQUxfU1RBVEVfQ0hBTkdFRCwKKyAgU0lHTkFMX0JVRkZFUklORywKKyAgU0lHTkFMX0VORF9PRl9TVFJFQU0sCisgIFNJR05BTF9FUlJPUiwKKyAgU0lHTkFMX1dBUk5JTkcsCisgIFNJR05BTF9WSURFT19ESU1FTlNJT05TX0NIQU5HRUQsCisgIFNJR05BTF9NRURJQV9JTkZPX1VQREFURUQsCisgIFNJR05BTF9WT0xVTUVfQ0hBTkdFRCwKKyAgU0lHTkFMX01VVEVfQ0hBTkdFRCwKKyAgU0lHTkFMX1NFRUtfRE9ORSwKKyAgU0lHTkFMX0xBU1QKK307CisKK2VudW0KK3sKKyAgR1NUX1BMQVlfRkxBR19WSURFTyA9ICgxIDw8IDApLAorICBHU1RfUExBWV9GTEFHX0FVRElPID0gKDEgPDwgMSksCisgIEdTVF9QTEFZX0ZMQUdfU1VCVElUTEUgPSAoMSA8PCAyKSwKKyAgR1NUX1BMQVlfRkxBR19WSVMgPSAoMSA8PCAzKQorfTsKKworc3RydWN0IF9Hc3RQbGF5ZXIKK3sKKyAgR3N0T2JqZWN0IHBhcmVudDsKKworICBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyICp2aWRlb19yZW5kZXJlcjsKKyAgR3N0UGxheWVyU2lnbmFsRGlzcGF0Y2hlciAqc2lnbmFsX2Rpc3BhdGNoZXI7CisKKyAgZ2NoYXIgKnVyaTsKKyAgZ2NoYXIgKnN1YnVyaTsKKworICBHVGhyZWFkICp0aHJlYWQ7CisgIEdNdXRleCBsb2NrOworICBHQ29uZCBjb25kOworICBHTWFpbkNvbnRleHQgKmNvbnRleHQ7CisgIEdNYWluTG9vcCAqbG9vcDsKKworICBHc3RFbGVtZW50ICpwbGF5YmluOworICBHc3RCdXMgKmJ1czsKKyAgR3N0U3RhdGUgdGFyZ2V0X3N0YXRlLCBjdXJyZW50X3N0YXRlOworICBnYm9vbGVhbiBpc19saXZlLCBpc19lb3M7CisgIEdTb3VyY2UgKnRpY2tfc291cmNlLCAqcmVhZHlfdGltZW91dF9zb3VyY2U7CisKKyAgZ2RvdWJsZSByYXRlOworICBndWludCBwb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfbXM7CisKKyAgR3N0UGxheWVyU3RhdGUgYXBwX3N0YXRlOworICBnaW50IGJ1ZmZlcmluZzsKKworICBHc3RUYWdMaXN0ICpnbG9iYWxfdGFnczsKKyAgR3N0UGxheWVyTWVkaWFJbmZvICptZWRpYV9pbmZvOworCisgIEdzdEVsZW1lbnQgKmN1cnJlbnRfdmlzX2VsZW1lbnQ7CisKKyAgLyogUHJvdGVjdGVkIGJ5IGxvY2sgKi8KKyAgZ2Jvb2xlYW4gc2Vla19wZW5kaW5nOyAgICAgICAgLyogT25seSBzZXQgZnJvbSBtYWluIGNvbnRleHQgKi8KKyAgR3N0Q2xvY2tUaW1lIGxhc3Rfc2Vla190aW1lOyAgLyogT25seSBzZXQgZnJvbSBtYWluIGNvbnRleHQgKi8KKyAgR1NvdXJjZSAqc2Vla19zb3VyY2U7CisgIEdzdENsb2NrVGltZSBzZWVrX3Bvc2l0aW9uOworfTsKKworc3RydWN0IF9Hc3RQbGF5ZXJDbGFzcworeworICBHc3RPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCisjZGVmaW5lIHBhcmVudF9jbGFzcyBnc3RfcGxheWVyX3BhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRSAoR3N0UGxheWVyLCBnc3RfcGxheWVyLCBHU1RfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgZ3VpbnQgc2lnbmFsc1tTSUdOQUxfTEFTVF0gPSB7IDAsIH07CitzdGF0aWMgR1BhcmFtU3BlYyAqcGFyYW1fc3BlY3NbUFJPUF9MQVNUXSA9IHsgTlVMTCwgfTsKKworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyB2b2lkIGdzdF9wbGF5ZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgdm9pZCBnc3RfcGxheWVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9wbGF5ZXJfY29uc3RydWN0ZWQgKEdPYmplY3QgKiBvYmplY3QpOworCitzdGF0aWMgZ3BvaW50ZXIgZ3N0X3BsYXllcl9tYWluIChncG9pbnRlciBkYXRhKTsKKworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9zZWVrX2ludGVybmFsX2xvY2tlZCAoR3N0UGxheWVyICogc2VsZik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3BsYXllcl9zdG9wX2ludGVybmFsIChncG9pbnRlciB1c2VyX2RhdGEpOworc3RhdGljIGdib29sZWFuIGdzdF9wbGF5ZXJfcGF1c2VfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3BsYXllcl9wbGF5X2ludGVybmFsIChncG9pbnRlciB1c2VyX2RhdGEpOworc3RhdGljIGdib29sZWFuIGdzdF9wbGF5ZXJfc2V0X3JhdGVfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsX2ludGVybmFsIChncG9pbnRlcgorICAgIHVzZXJfZGF0YSk7CitzdGF0aWMgdm9pZCBjaGFuZ2Vfc3RhdGUgKEdzdFBsYXllciAqIHNlbGYsIEdzdFBsYXllclN0YXRlIHN0YXRlKTsKKworc3RhdGljIEdzdFBsYXllck1lZGlhSW5mbyAqZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2NyZWF0ZSAoR3N0UGxheWVyICogc2VsZik7CisKK3N0YXRpYyB2b2lkIGdzdF9wbGF5ZXJfc3RyZWFtc19pbmZvX2NyZWF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvLCBjb25zdCBnY2hhciAqIHByb3AsIEdUeXBlIHR5cGUpOworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9zdHJlYW1faW5mb191cGRhdGUgKEdzdFBsYXllciAqIHNlbGYsCisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqIHMpOworc3RhdGljIHZvaWQgZ3N0X3BsYXllcl9zdHJlYW1faW5mb191cGRhdGVfdGFnc19hbmRfY2FwcyAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogcyk7CitzdGF0aWMgR3N0UGxheWVyU3RyZWFtSW5mbyAqZ3N0X3BsYXllcl9zdHJlYW1faW5mb19maW5kIChHc3RQbGF5ZXJNZWRpYUluZm8gKgorICAgIG1lZGlhX2luZm8sIEdUeXBlIHR5cGUsIGdpbnQgc3RyZWFtX2luZGV4KTsKK3N0YXRpYyBHc3RQbGF5ZXJTdHJlYW1JbmZvICpnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jdXJyZW50IChHc3RQbGF5ZXIgKgorICAgIHNlbGYsIGNvbnN0IGdjaGFyICogcHJvcCwgR1R5cGUgdHlwZSk7CisKK3N0YXRpYyB2b2lkIGdzdF9wbGF5ZXJfdmlkZW9faW5mb191cGRhdGUgKEdzdFBsYXllciAqIHNlbGYsCisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqIHN0cmVhbV9pbmZvKTsKK3N0YXRpYyB2b2lkIGdzdF9wbGF5ZXJfYXVkaW9faW5mb191cGRhdGUgKEdzdFBsYXllciAqIHNlbGYsCisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqIHN0cmVhbV9pbmZvKTsKK3N0YXRpYyB2b2lkIGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb191cGRhdGUgKEdzdFBsYXllciAqIHNlbGYsCisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqIHN0cmVhbV9pbmZvKTsKKworc3RhdGljIHZvaWQgZW1pdF9tZWRpYV9pbmZvX3VwZGF0ZWRfc2lnbmFsIChHc3RQbGF5ZXIgKiBzZWxmKTsKKworc3RhdGljIHZvaWQgKmdldF90aXRsZSAoR3N0VGFnTGlzdCAqIHRhZ3MpOworc3RhdGljIHZvaWQgKmdldF9jb250YWluZXJfZm9ybWF0IChHc3RUYWdMaXN0ICogdGFncyk7CitzdGF0aWMgdm9pZCAqZ2V0X2Zyb21fdGFncyAoR3N0UGxheWVyICogc2VsZiwgR3N0UGxheWVyTWVkaWFJbmZvICogbWVkaWFfaW5mbywKKyAgICB2b2lkICooKmZ1bmMpIChHc3RUYWdMaXN0ICopKTsKK3N0YXRpYyB2b2lkICpnZXRfY292ZXJfc2FtcGxlIChHc3RUYWdMaXN0ICogdGFncyk7CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2luaXQgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJJbml0aWFsaXppbmciKTsKKworICBzZWxmID0gZ3N0X3BsYXllcl9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAoc2VsZik7CisKKyAgZ19tdXRleF9pbml0ICgmc2VsZi0+bG9jayk7CisgIGdfY29uZF9pbml0ICgmc2VsZi0+Y29uZCk7CisKKyAgc2VsZi0+Y29udGV4dCA9IGdfbWFpbl9jb250ZXh0X25ldyAoKTsKKyAgc2VsZi0+bG9vcCA9IGdfbWFpbl9sb29wX25ldyAoc2VsZi0+Y29udGV4dCwgRkFMU0UpOworCisgIHNlbGYtPnBvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9tcyA9IERFRkFVTFRfUE9TSVRJT05fVVBEQVRFX0lOVEVSVkFMX01TOworICBzZWxmLT5zZWVrX3BlbmRpbmcgPSBGQUxTRTsKKyAgc2VsZi0+c2Vla19wb3NpdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIHNlbGYtPmxhc3Rfc2Vla190aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiSW5pdGlhbGl6ZWQiKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfY2xhc3NfaW5pdCAoR3N0UGxheWVyQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfcGxheWVyX3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X3BsYXllcl9nZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSBnc3RfcGxheWVyX2Rpc3Bvc2U7CisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3BsYXllcl9maW5hbGl6ZTsKKyAgZ29iamVjdF9jbGFzcy0+Y29uc3RydWN0ZWQgPSBnc3RfcGxheWVyX2NvbnN0cnVjdGVkOworCisgIHBhcmFtX3NwZWNzW1BST1BfVklERU9fUkVOREVSRVJdID0KKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJ2aWRlby1yZW5kZXJlciIsCisgICAgICAiVmlkZW8gUmVuZGVyZXIiLCAiVmlkZW8gcmVuZGVyZXIgdG8gdXNlIGZvciByZW5kZXJpbmcgdmlkZW9zIiwKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9WSURFT19SRU5ERVJFUiwKKyAgICAgIEdfUEFSQU1fV1JJVEFCTEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgcGFyYW1fc3BlY3NbUFJPUF9TSUdOQUxfRElTUEFUQ0hFUl0gPQorICAgICAgZ19wYXJhbV9zcGVjX29iamVjdCAoInNpZ25hbC1kaXNwYXRjaGVyIiwKKyAgICAgICJTaWduYWwgRGlzcGF0Y2hlciIsICJEaXNwYXRjaGVyIGZvciB0aGUgc2lnbmFscyB0byBlLmcuIGV2ZW50IGxvb3BzIiwKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9TSUdOQUxfRElTUEFUQ0hFUiwKKyAgICAgIEdfUEFSQU1fV1JJVEFCTEUgfCBHX1BBUkFNX0NPTlNUUlVDVF9PTkxZIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgcGFyYW1fc3BlY3NbUFJPUF9VUkldID0gZ19wYXJhbV9zcGVjX3N0cmluZyAoInVyaSIsICJVUkkiLCAiQ3VycmVudCBVUkkiLAorICAgICAgREVGQVVMVF9VUkksIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgcGFyYW1fc3BlY3NbUFJPUF9TVUJVUkldID0gZ19wYXJhbV9zcGVjX3N0cmluZyAoInN1YnVyaSIsICJTdWJ0aXRsZSBVUkkiLAorICAgICAgIkN1cnJlbnQgU3VidGl0bGUgVVJJIiwgTlVMTCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX1BPU0lUSU9OXSA9CisgICAgICBnX3BhcmFtX3NwZWNfdWludDY0ICgicG9zaXRpb24iLCAiUG9zaXRpb24iLCAiQ3VycmVudCBQb3NpdGlvbiIsCisgICAgICAwLCBHX01BWFVJTlQ2NCwgREVGQVVMVF9QT1NJVElPTiwKKyAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX01FRElBX0lORk9dID0KKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJtZWRpYS1pbmZvIiwgIk1lZGlhIEluZm8iLAorICAgICAgIkN1cnJlbnQgbWVkaWEgaW5mb3JtYXRpb24iLCBHU1RfVFlQRV9QTEFZRVJfTUVESUFfSU5GTywKKyAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX0NVUlJFTlRfQVVESU9fVFJBQ0tdID0KKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJjdXJyZW50LWF1ZGlvLXRyYWNrIiwgIkN1cnJlbnQgQXVkaW8gVHJhY2siLAorICAgICAgIkN1cnJlbnQgYXVkaW8gdHJhY2sgaW5mb3JtYXRpb24iLCBHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTywKKyAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX0NVUlJFTlRfVklERU9fVFJBQ0tdID0KKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJjdXJyZW50LXZpZGVvLXRyYWNrIiwgIkN1cnJlbnQgVmlkZW8gVHJhY2siLAorICAgICAgIkN1cnJlbnQgdmlkZW8gdHJhY2sgaW5mb3JtYXRpb24iLCBHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTywKKyAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX0NVUlJFTlRfU1VCVElUTEVfVFJBQ0tdID0KKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJjdXJyZW50LXN1YnRpdGxlLXRyYWNrIiwgIkN1cnJlbnQgU3VidGl0bGUgVHJhY2siLAorICAgICAgIkN1cnJlbnQgYXVkaW8gc3VidGl0bGUgaW5mb3JtYXRpb24iLCBHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTywKKyAgICAgIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX0RVUkFUSU9OXSA9CisgICAgICBnX3BhcmFtX3NwZWNfdWludDY0ICgiZHVyYXRpb24iLCAiRHVyYXRpb24iLCAiRHVyYXRpb24iLAorICAgICAgMCwgR19NQVhVSU5UNjQsIERFRkFVTFRfRFVSQVRJT04sCisgICAgICBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgcGFyYW1fc3BlY3NbUFJPUF9WT0xVTUVdID0KKyAgICAgIGdfcGFyYW1fc3BlY19kb3VibGUgKCJ2b2x1bWUiLCAiVm9sdW1lIiwgIlZvbHVtZSIsCisgICAgICAwLCAxMC4wLCBERUZBVUxUX1ZPTFVNRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX01VVEVdID0KKyAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgibXV0ZSIsICJNdXRlIiwgIk11dGUiLAorICAgICAgREVGQVVMVF9NVVRFLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpOworCisgIHBhcmFtX3NwZWNzW1BST1BfUElQRUxJTkVdID0KKyAgICAgIGdfcGFyYW1fc3BlY19vYmplY3QgKCJwaXBlbGluZSIsICJQaXBlbGluZSIsCisgICAgICAiR1N0cmVhbWVyIHBpcGVsaW5lIHRoYXQgaXMgdXNlZCIsCisgICAgICBHU1RfVFlQRV9FTEVNRU5ULCBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgcGFyYW1fc3BlY3NbUFJPUF9SQVRFXSA9CisgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgicmF0ZSIsICJyYXRlIiwgIlBsYXliYWNrIHJhdGUiLAorICAgICAgLTY0LjAsIDY0LjAsIERFRkFVTFRfUkFURSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKworICBwYXJhbV9zcGVjc1tQUk9QX1BPU0lUSU9OX1VQREFURV9JTlRFUlZBTF0gPQorICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJwb3NpdGlvbi11cGRhdGUtaW50ZXJ2YWwiLCAiUG9zaXRpb24gdXBkYXRlIGludGVydmFsIiwKKyAgICAgICJJbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMgYmV0d2VlbiB0d28gcG9zaXRpb24tdXBkYXRlZCBzaWduYWxzLiIKKyAgICAgICJQYXNzIDAgdG8gc3RvcCB1cGRhdGluZyB0aGUgcG9zaXRpb24uIiwKKyAgICAgIDAsIDEwMDAwLCBERUZBVUxUX1BPU0lUSU9OX1VQREFURV9JTlRFUlZBTF9NUywKKyAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0aWVzIChnb2JqZWN0X2NsYXNzLCBQUk9QX0xBU1QsIHBhcmFtX3NwZWNzKTsKKworICBzaWduYWxzW1NJR05BTF9QT1NJVElPTl9VUERBVEVEXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJwb3NpdGlvbi11cGRhdGVkIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDEsIEdTVF9UWVBFX0NMT0NLX1RJTUUpOworCisgIHNpZ25hbHNbU0lHTkFMX0RVUkFUSU9OX0NIQU5HRURdID0KKyAgICAgIGdfc2lnbmFsX25ldyAoImR1cmF0aW9uLWNoYW5nZWQiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMSwgR1NUX1RZUEVfQ0xPQ0tfVElNRSk7CisKKyAgc2lnbmFsc1tTSUdOQUxfU1RBVEVfQ0hBTkdFRF0gPQorICAgICAgZ19zaWduYWxfbmV3ICgic3RhdGUtY2hhbmdlZCIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKKyAgICAgIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAxLCBHU1RfVFlQRV9QTEFZRVJfU1RBVEUpOworCisgIHNpZ25hbHNbU0lHTkFMX0JVRkZFUklOR10gPQorICAgICAgZ19zaWduYWxfbmV3ICgiYnVmZmVyaW5nIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDEsIEdfVFlQRV9JTlQpOworCisgIHNpZ25hbHNbU0lHTkFMX0VORF9PRl9TVFJFQU1dID0KKyAgICAgIGdfc2lnbmFsX25ldyAoImVuZC1vZi1zdHJlYW0iLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMCwgR19UWVBFX0lOVkFMSUQpOworCisgIHNpZ25hbHNbU0lHTkFMX0VSUk9SXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJlcnJvciIsIEdfVFlQRV9GUk9NX0NMQVNTIChrbGFzcyksCisgICAgICBHX1NJR05BTF9SVU5fTEFTVCB8IEdfU0lHTkFMX05PX1JFQ1VSU0UgfCBHX1NJR05BTF9OT19IT09LUywgMCwgTlVMTCwKKyAgICAgIE5VTEwsIE5VTEwsIEdfVFlQRV9OT05FLCAxLCBHX1RZUEVfRVJST1IpOworCisgIHNpZ25hbHNbU0lHTkFMX1ZJREVPX0RJTUVOU0lPTlNfQ0hBTkdFRF0gPQorICAgICAgZ19zaWduYWxfbmV3ICgidmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDIsIEdfVFlQRV9JTlQsIEdfVFlQRV9JTlQpOworCisgIHNpZ25hbHNbU0lHTkFMX01FRElBX0lORk9fVVBEQVRFRF0gPQorICAgICAgZ19zaWduYWxfbmV3ICgibWVkaWEtaW5mby11cGRhdGVkIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDEsIEdTVF9UWVBFX1BMQVlFUl9NRURJQV9JTkZPKTsKKworICBzaWduYWxzW1NJR05BTF9WT0xVTUVfQ0hBTkdFRF0gPQorICAgICAgZ19zaWduYWxfbmV3ICgidm9sdW1lLWNoYW5nZWQiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMCwgR19UWVBFX0lOVkFMSUQpOworCisgIHNpZ25hbHNbU0lHTkFMX01VVEVfQ0hBTkdFRF0gPQorICAgICAgZ19zaWduYWxfbmV3ICgibXV0ZS1jaGFuZ2VkIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDAsIEdfVFlQRV9JTlZBTElEKTsKKworICBzaWduYWxzW1NJR05BTF9XQVJOSU5HXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJ3YXJuaW5nIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKKyAgICAgIEdfU0lHTkFMX1JVTl9MQVNUIHwgR19TSUdOQUxfTk9fUkVDVVJTRSB8IEdfU0lHTkFMX05PX0hPT0tTLCAwLCBOVUxMLAorICAgICAgTlVMTCwgTlVMTCwgR19UWVBFX05PTkUsIDEsIEdfVFlQRV9FUlJPUik7CisKKyAgc2lnbmFsc1tTSUdOQUxfU0VFS19ET05FXSA9CisgICAgICBnX3NpZ25hbF9uZXcgKCJzZWVrLWRvbmUiLCBHX1RZUEVfRlJPTV9DTEFTUyAoa2xhc3MpLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QgfCBHX1NJR05BTF9OT19SRUNVUlNFIHwgR19TSUdOQUxfTk9fSE9PS1MsIDAsIE5VTEwsCisgICAgICBOVUxMLCBOVUxMLCBHX1RZUEVfTk9ORSwgMSwgR1NUX1RZUEVfQ0xPQ0tfVElNRSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKG9iamVjdCk7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIlN0b3BwaW5nIG1haW4gdGhyZWFkIik7CisKKyAgaWYgKHNlbGYtPmxvb3ApIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChzZWxmLT5sb29wKTsKKworICAgIGdfdGhyZWFkX2pvaW4gKHNlbGYtPnRocmVhZCk7CisgICAgc2VsZi0+dGhyZWFkID0gTlVMTDsKKworICAgIGdfbWFpbl9sb29wX3VucmVmIChzZWxmLT5sb29wKTsKKyAgICBzZWxmLT5sb29wID0gTlVMTDsKKworICAgIGdfbWFpbl9jb250ZXh0X3VucmVmIChzZWxmLT5jb250ZXh0KTsKKyAgICBzZWxmLT5jb250ZXh0ID0gTlVMTDsKKyAgfQorCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kaXNwb3NlIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAob2JqZWN0KTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiRmluYWxpemluZyIpOworCisgIGdfZnJlZSAoc2VsZi0+dXJpKTsKKyAgZ19mcmVlIChzZWxmLT5zdWJ1cmkpOworICBpZiAoc2VsZi0+Z2xvYmFsX3RhZ3MpCisgICAgZ3N0X3RhZ19saXN0X3VucmVmIChzZWxmLT5nbG9iYWxfdGFncyk7CisgIGlmIChzZWxmLT52aWRlb19yZW5kZXJlcikKKyAgICBnX29iamVjdF91bnJlZiAoc2VsZi0+dmlkZW9fcmVuZGVyZXIpOworICBpZiAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIpCisgICAgZ19vYmplY3RfdW5yZWYgKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyKTsKKyAgaWYgKHNlbGYtPmN1cnJlbnRfdmlzX2VsZW1lbnQpCisgICAgZ3N0X29iamVjdF91bnJlZiAoc2VsZi0+Y3VycmVudF92aXNfZWxlbWVudCk7CisgIGdfbXV0ZXhfY2xlYXIgKCZzZWxmLT5sb2NrKTsKKyAgZ19jb25kX2NsZWFyICgmc2VsZi0+Y29uZCk7CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9jb25zdHJ1Y3RlZCAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAob2JqZWN0KTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiQ29uc3RydWN0ZWQiKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgc2VsZi0+dGhyZWFkID0gZ190aHJlYWRfbmV3ICgiR3N0UGxheWVyIiwgZ3N0X3BsYXllcl9tYWluLCBzZWxmKTsKKyAgd2hpbGUgKCFzZWxmLT5sb29wIHx8ICFnX21haW5fbG9vcF9pc19ydW5uaW5nIChzZWxmLT5sb29wKSkKKyAgICBnX2NvbmRfd2FpdCAoJnNlbGYtPmNvbmQsICZzZWxmLT5sb2NrKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+Y29uc3RydWN0ZWQgKG9iamVjdCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3BsYXllcl9zZXRfdXJpX2ludGVybmFsIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IHVzZXJfZGF0YTsKKworICBnc3RfcGxheWVyX3N0b3BfaW50ZXJuYWwgKHNlbGYpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJDaGFuZ2luZyBVUkkgdG8gJyVzJyIsIEdTVF9TVFJfTlVMTCAoc2VsZi0+dXJpKSk7CisKKyAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAidXJpIiwgc2VsZi0+dXJpLCBOVUxMKTsKKworICAvKiBpZiBoYXZlIHN1YnVyaSBmcm9tIHByZXZpb3VzIHBsYXliYWNrIHRoZW4gZnJlZSBpdCAqLworICBpZiAoc2VsZi0+c3VidXJpKSB7CisgICAgZ19mcmVlIChzZWxmLT5zdWJ1cmkpOworICAgIHNlbGYtPnN1YnVyaSA9IE5VTEw7CisgICAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAic3VidXJpIiwgTlVMTCwgTlVMTCk7CisgIH0KKworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3BsYXllcl9zZXRfc3VidXJpX2ludGVybmFsIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IHVzZXJfZGF0YTsKKyAgR3N0Q2xvY2tUaW1lIHBvc2l0aW9uOworICBHc3RTdGF0ZSB0YXJnZXRfc3RhdGU7CisKKyAgLyogc2F2ZSB0aGUgc3RhdGUgYW5kIHBvc2l0aW9uICovCisgIHRhcmdldF9zdGF0ZSA9IHNlbGYtPnRhcmdldF9zdGF0ZTsKKyAgcG9zaXRpb24gPSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAoc2VsZik7CisKKyAgZ3N0X3BsYXllcl9zdG9wX2ludGVybmFsIChzZWxmKTsKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkNoYW5naW5nIFNVQlVSSSB0byAnJXMnIiwKKyAgICAgIEdTVF9TVFJfTlVMTCAoc2VsZi0+c3VidXJpKSk7CisKKyAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAic3VidXJpIiwgc2VsZi0+c3VidXJpLCBOVUxMKTsKKyAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAidXJpIiwgc2VsZi0+dXJpLCBOVUxMKTsKKworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIC8qIHJlc3RvcmUgc3RhdGUgYW5kIHBvc2l0aW9uICovCisgIGlmIChwb3NpdGlvbiAhPSBHU1RfQ0xPQ0tfVElNRV9OT05FKQorICAgIGdzdF9wbGF5ZXJfc2VlayAoc2VsZiwgcG9zaXRpb24pOworICBpZiAodGFyZ2V0X3N0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpCisgICAgZ3N0X3BsYXllcl9wYXVzZV9pbnRlcm5hbCAoc2VsZik7CisgIGVsc2UgaWYgKHRhcmdldF9zdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORykKKyAgICBnc3RfcGxheWVyX3BsYXlfaW50ZXJuYWwgKHNlbGYpOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9WSURFT19SRU5ERVJFUjoKKyAgICAgIHNlbGYtPnZpZGVvX3JlbmRlcmVyID0gZ192YWx1ZV9kdXBfb2JqZWN0ICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0lHTkFMX0RJU1BBVENIRVI6CisgICAgICBzZWxmLT5zaWduYWxfZGlzcGF0Y2hlciA9IGdfdmFsdWVfZHVwX29iamVjdCAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1VSSTp7CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGdfZnJlZSAoc2VsZi0+dXJpKTsKKworICAgICAgc2VsZi0+dXJpID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2V0IHVyaT0lcyIsIHNlbGYtPnVyaSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgICBnX21haW5fY29udGV4dF9pbnZva2VfZnVsbCAoc2VsZi0+Y29udGV4dCwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICAgIGdzdF9wbGF5ZXJfc2V0X3VyaV9pbnRlcm5hbCwgc2VsZiwgTlVMTCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX1NVQlVSSTp7CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGdfZnJlZSAoc2VsZi0+c3VidXJpKTsKKworICAgICAgc2VsZi0+c3VidXJpID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2V0IHN1YnVyaT0lcyIsIHNlbGYtPnN1YnVyaSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgICBnX21haW5fY29udGV4dF9pbnZva2VfZnVsbCAoc2VsZi0+Y29udGV4dCwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgICAgIGdzdF9wbGF5ZXJfc2V0X3N1YnVyaV9pbnRlcm5hbCwgc2VsZiwgTlVMTCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX1ZPTFVNRToKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXQgdm9sdW1lPSVsZiIsIGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpKTsKKyAgICAgIGdfb2JqZWN0X3NldF9wcm9wZXJ0eSAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAidm9sdW1lIiwgdmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1JBVEU6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIHNlbGYtPnJhdGUgPSBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXQgcmF0ZT0lbGYiLCBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgICBnc3RfcGxheWVyX3NldF9yYXRlX2ludGVybmFsIChzZWxmKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9NVVRFOgorICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNldCBtdXRlPSVkIiwgZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpKTsKKyAgICAgIGdfb2JqZWN0X3NldF9wcm9wZXJ0eSAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAibXV0ZSIsIHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QT1NJVElPTl9VUERBVEVfSU5URVJWQUw6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIHNlbGYtPnBvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9tcyA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXQgcG9zaXRpb24gdXBkYXRlIGludGVydmFsPSV1IG1zIiwKKyAgICAgICAgICBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSkpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICAgICAgZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsX2ludGVybmFsIChzZWxmKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1VSSToKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgc2VsZi0+dXJpKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU1VCVVJJOgorICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCBzZWxmLT5zdWJ1cmkpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJSZXR1cm5pbmcgaGFzLXN1YnVyaT0lZCIsCisgICAgICAgICAgZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9QT1NJVElPTjp7CisgICAgICBnaW50NjQgcG9zaXRpb24gPSAwOworCisgICAgICBnc3RfZWxlbWVudF9xdWVyeV9wb3NpdGlvbiAoc2VsZi0+cGxheWJpbiwgR1NUX0ZPUk1BVF9USU1FLCAmcG9zaXRpb24pOworICAgICAgZ192YWx1ZV9zZXRfdWludDY0ICh2YWx1ZSwgcG9zaXRpb24pOworICAgICAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIlJldHVybmluZyBwb3NpdGlvbj0lIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoZ192YWx1ZV9nZXRfdWludDY0ICh2YWx1ZSkpKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfRFVSQVRJT046eworICAgICAgZ2ludDY0IGR1cmF0aW9uID0gMDsKKworICAgICAgZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24gKHNlbGYtPnBsYXliaW4sIEdTVF9GT1JNQVRfVElNRSwgJmR1cmF0aW9uKTsKKyAgICAgIGdfdmFsdWVfc2V0X3VpbnQ2NCAodmFsdWUsIGR1cmF0aW9uKTsKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJSZXR1cm5pbmcgZHVyYXRpb249JSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICAgIEdTVF9USU1FX0FSR1MgKGdfdmFsdWVfZ2V0X3VpbnQ2NCAodmFsdWUpKSk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX01FRElBX0lORk86eworICAgICAgR3N0UGxheWVyTWVkaWFJbmZvICptZWRpYV9pbmZvID0gZ3N0X3BsYXllcl9nZXRfbWVkaWFfaW5mbyAoc2VsZik7CisgICAgICBnX3ZhbHVlX3NldF9vYmplY3QgKHZhbHVlLCBtZWRpYV9pbmZvKTsKKyAgICAgIGdfb2JqZWN0X3VucmVmIChtZWRpYV9pbmZvKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfQ1VSUkVOVF9BVURJT19UUkFDSzp7CisgICAgICBHc3RQbGF5ZXJBdWRpb0luZm8gKmF1ZGlvX2luZm8gPQorICAgICAgICAgIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2sgKHNlbGYpOworICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0ICh2YWx1ZSwgYXVkaW9faW5mbyk7CisgICAgICBnX29iamVjdF91bnJlZiAoYXVkaW9faW5mbyk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0NVUlJFTlRfVklERU9fVFJBQ0s6eworICAgICAgR3N0UGxheWVyVmlkZW9JbmZvICp2aWRlb19pbmZvID0KKyAgICAgICAgICBnc3RfcGxheWVyX2dldF9jdXJyZW50X3ZpZGVvX3RyYWNrIChzZWxmKTsKKyAgICAgIGdfdmFsdWVfc2V0X29iamVjdCAodmFsdWUsIHZpZGVvX2luZm8pOworICAgICAgZ19vYmplY3RfdW5yZWYgKHZpZGVvX2luZm8pOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9DVVJSRU5UX1NVQlRJVExFX1RSQUNLOnsKKyAgICAgIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqc3VidGl0bGVfaW5mbyA9CisgICAgICAgICAgZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFjayAoc2VsZik7CisgICAgICBnX3ZhbHVlX3NldF9vYmplY3QgKHZhbHVlLCBzdWJ0aXRsZV9pbmZvKTsKKyAgICAgIGdfb2JqZWN0X3VucmVmIChzdWJ0aXRsZV9pbmZvKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfVk9MVU1FOgorICAgICAgZ19vYmplY3RfZ2V0X3Byb3BlcnR5IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksICJ2b2x1bWUiLCB2YWx1ZSk7CisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiUmV0dXJuaW5nIHZvbHVtZT0lbGYiLAorICAgICAgICAgIGdfdmFsdWVfZ2V0X2RvdWJsZSAodmFsdWUpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9SQVRFOgorICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBnX3ZhbHVlX3NldF9kb3VibGUgKHZhbHVlLCBnc3RfcGxheWVyX2dldF9yYXRlIChzZWxmKSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX01VVEU6CisgICAgICBnX29iamVjdF9nZXRfcHJvcGVydHkgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwgIm11dGUiLCB2YWx1ZSk7CisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiUmV0dXJuaW5nIG11dGU9JWQiLCBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1BJUEVMSU5FOgorICAgICAgZ192YWx1ZV9zZXRfb2JqZWN0ICh2YWx1ZSwgc2VsZi0+cGxheWJpbik7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfUE9TSVRJT05fVVBEQVRFX0lOVEVSVkFMOgorICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBnX3ZhbHVlX3NldF91aW50ICh2YWx1ZSwgZ3N0X3BsYXllcl9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsIChzZWxmKSk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK21haW5fbG9vcF9ydW5uaW5nX2NiIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIk1haW4gbG9vcCBydW5uaW5nIG5vdyIpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBnX2NvbmRfc2lnbmFsICgmc2VsZi0+Y29uZCk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIEdzdFBsYXllclN0YXRlIHN0YXRlOworfSBTdGF0ZUNoYW5nZWRTaWduYWxEYXRhOworCitzdGF0aWMgdm9pZAorc3RhdGVfY2hhbmdlZF9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBTdGF0ZUNoYW5nZWRTaWduYWxEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGdfc2lnbmFsX2VtaXQgKGRhdGEtPnBsYXllciwgc2lnbmFsc1tTSUdOQUxfU1RBVEVfQ0hBTkdFRF0sIDAsIGRhdGEtPnN0YXRlKTsKK30KKworc3RhdGljIHZvaWQKK3N0YXRlX2NoYW5nZWRfc2lnbmFsX2RhdGFfZnJlZSAoU3RhdGVDaGFuZ2VkU2lnbmFsRGF0YSAqIGRhdGEpCit7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5wbGF5ZXIpOworICBnX2ZyZWUgKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAorY2hhbmdlX3N0YXRlIChHc3RQbGF5ZXIgKiBzZWxmLCBHc3RQbGF5ZXJTdGF0ZSBzdGF0ZSkKK3sKKyAgaWYgKHN0YXRlID09IHNlbGYtPmFwcF9zdGF0ZSkKKyAgICByZXR1cm47CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkNoYW5naW5nIGFwcCBzdGF0ZSBmcm9tICVzIHRvICVzIiwKKyAgICAgIGdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWUgKHNlbGYtPmFwcF9zdGF0ZSksCisgICAgICBnc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lIChzdGF0ZSkpOworICBzZWxmLT5hcHBfc3RhdGUgPSBzdGF0ZTsKKworICBpZiAoZ19zaWduYWxfaGFuZGxlcl9maW5kIChzZWxmLCBHX1NJR05BTF9NQVRDSF9JRCwKKyAgICAgICAgICBzaWduYWxzW1NJR05BTF9TVEFURV9DSEFOR0VEXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIFN0YXRlQ2hhbmdlZFNpZ25hbERhdGEgKmRhdGEgPSBnX25ldyAoU3RhdGVDaGFuZ2VkU2lnbmFsRGF0YSwgMSk7CisKKyAgICBkYXRhLT5wbGF5ZXIgPSBnX29iamVjdF9yZWYgKHNlbGYpOworICAgIGRhdGEtPnN0YXRlID0gc3RhdGU7CisgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgIHN0YXRlX2NoYW5nZWRfZGlzcGF0Y2gsIGRhdGEsCisgICAgICAgIChHRGVzdHJveU5vdGlmeSkgc3RhdGVfY2hhbmdlZF9zaWduYWxfZGF0YV9mcmVlKTsKKyAgfQorfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgR3N0Q2xvY2tUaW1lIHBvc2l0aW9uOworfSBQb3NpdGlvblVwZGF0ZWRTaWduYWxEYXRhOworCitzdGF0aWMgdm9pZAorcG9zaXRpb25fdXBkYXRlZF9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBQb3NpdGlvblVwZGF0ZWRTaWduYWxEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGlmIChkYXRhLT5wbGF5ZXItPnRhcmdldF9zdGF0ZSA+PSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgZ19zaWduYWxfZW1pdCAoZGF0YS0+cGxheWVyLCBzaWduYWxzW1NJR05BTF9QT1NJVElPTl9VUERBVEVEXSwgMCwKKyAgICAgICAgZGF0YS0+cG9zaXRpb24pOworICAgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyAoR19PQkpFQ1QgKGRhdGEtPnBsYXllciksCisgICAgICAgIHBhcmFtX3NwZWNzW1BST1BfUE9TSVRJT05dKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorcG9zaXRpb25fdXBkYXRlZF9zaWduYWxfZGF0YV9mcmVlIChQb3NpdGlvblVwZGF0ZWRTaWduYWxEYXRhICogZGF0YSkKK3sKKyAgZ19vYmplY3RfdW5yZWYgKGRhdGEtPnBsYXllcik7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgordGlja19jYiAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworICBnaW50NjQgcG9zaXRpb247CisKKyAgaWYgKHNlbGYtPnRhcmdldF9zdGF0ZSA+PSBHU1RfU1RBVEVfUEFVU0VECisgICAgICAmJiBnc3RfZWxlbWVudF9xdWVyeV9wb3NpdGlvbiAoc2VsZi0+cGxheWJpbiwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgICAgICZwb3NpdGlvbikpIHsKKyAgICBHU1RfTE9HX09CSkVDVCAoc2VsZiwgIlBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgICAgR1NUX1RJTUVfQVJHUyAocG9zaXRpb24pKTsKKworICAgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgICAgc2lnbmFsc1tTSUdOQUxfUE9TSVRJT05fVVBEQVRFRF0sIDAsIE5VTEwsIE5VTEwsIE5VTEwpICE9IDApIHsKKyAgICAgIFBvc2l0aW9uVXBkYXRlZFNpZ25hbERhdGEgKmRhdGEgPSBnX25ldyAoUG9zaXRpb25VcGRhdGVkU2lnbmFsRGF0YSwgMSk7CisKKyAgICAgIGRhdGEtPnBsYXllciA9IGdfb2JqZWN0X3JlZiAoc2VsZik7CisgICAgICBkYXRhLT5wb3NpdGlvbiA9IHBvc2l0aW9uOworICAgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgICAgcG9zaXRpb25fdXBkYXRlZF9kaXNwYXRjaCwgZGF0YSwKKyAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIHBvc2l0aW9uX3VwZGF0ZWRfc2lnbmFsX2RhdGFfZnJlZSk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIEdfU09VUkNFX0NPTlRJTlVFOworfQorCitzdGF0aWMgdm9pZAorYWRkX3RpY2tfc291cmNlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBpZiAoc2VsZi0+dGlja19zb3VyY2UpCisgICAgcmV0dXJuOworCisgIGlmICghc2VsZi0+cG9zaXRpb25fdXBkYXRlX2ludGVydmFsX21zKQorICAgIHJldHVybjsKKworICBzZWxmLT50aWNrX3NvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3IChzZWxmLT5wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfbXMpOworICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sgKHNlbGYtPnRpY2tfc291cmNlLCAoR1NvdXJjZUZ1bmMpIHRpY2tfY2IsIHNlbGYsIE5VTEwpOworICBnX3NvdXJjZV9hdHRhY2ggKHNlbGYtPnRpY2tfc291cmNlLCBzZWxmLT5jb250ZXh0KTsKK30KKworc3RhdGljIHZvaWQKK3JlbW92ZV90aWNrX3NvdXJjZSAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgaWYgKCFzZWxmLT50aWNrX3NvdXJjZSkKKyAgICByZXR1cm47CisKKyAgZ19zb3VyY2VfZGVzdHJveSAoc2VsZi0+dGlja19zb3VyY2UpOworICBnX3NvdXJjZV91bnJlZiAoc2VsZi0+dGlja19zb3VyY2UpOworICBzZWxmLT50aWNrX3NvdXJjZSA9IE5VTEw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorcmVhZHlfdGltZW91dF9jYiAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSB1c2VyX2RhdGE7CisKKyAgaWYgKHNlbGYtPnRhcmdldF9zdGF0ZSA8PSBHU1RfU1RBVEVfUkVBRFkpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2V0dGluZyBwaXBlbGluZSB0byBOVUxMIHN0YXRlIik7CisgICAgc2VsZi0+dGFyZ2V0X3N0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgICAgc2VsZi0+Y3VycmVudF9zdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX05VTEwpOworICB9CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworc3RhdGljIHZvaWQKK2FkZF9yZWFkeV90aW1lb3V0X3NvdXJjZSAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgaWYgKHNlbGYtPnJlYWR5X3RpbWVvdXRfc291cmNlKQorICAgIHJldHVybjsKKworICBzZWxmLT5yZWFkeV90aW1lb3V0X3NvdXJjZSA9IGdfdGltZW91dF9zb3VyY2VfbmV3X3NlY29uZHMgKDYwKTsKKyAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrIChzZWxmLT5yZWFkeV90aW1lb3V0X3NvdXJjZSwKKyAgICAgIChHU291cmNlRnVuYykgcmVhZHlfdGltZW91dF9jYiwgc2VsZiwgTlVMTCk7CisgIGdfc291cmNlX2F0dGFjaCAoc2VsZi0+cmVhZHlfdGltZW91dF9zb3VyY2UsIHNlbGYtPmNvbnRleHQpOworfQorCitzdGF0aWMgdm9pZAorcmVtb3ZlX3JlYWR5X3RpbWVvdXRfc291cmNlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBpZiAoIXNlbGYtPnJlYWR5X3RpbWVvdXRfc291cmNlKQorICAgIHJldHVybjsKKworICBnX3NvdXJjZV9kZXN0cm95IChzZWxmLT5yZWFkeV90aW1lb3V0X3NvdXJjZSk7CisgIGdfc291cmNlX3VucmVmIChzZWxmLT5yZWFkeV90aW1lb3V0X3NvdXJjZSk7CisgIHNlbGYtPnJlYWR5X3RpbWVvdXRfc291cmNlID0gTlVMTDsKK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIEdFcnJvciAqZXJyOworfSBFcnJvclNpZ25hbERhdGE7CisKK3N0YXRpYyB2b2lkCitlcnJvcl9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBFcnJvclNpZ25hbERhdGEgKmRhdGEgPSB1c2VyX2RhdGE7CisKKyAgZ19zaWduYWxfZW1pdCAoZGF0YS0+cGxheWVyLCBzaWduYWxzW1NJR05BTF9FUlJPUl0sIDAsIGRhdGEtPmVycik7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX2Vycm9yX3NpZ25hbF9kYXRhIChFcnJvclNpZ25hbERhdGEgKiBkYXRhKQoreworICBnX29iamVjdF91bnJlZiAoZGF0YS0+cGxheWVyKTsKKyAgZ19jbGVhcl9lcnJvciAoJmRhdGEtPmVycik7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKK3N0YXRpYyB2b2lkCitlbWl0X2Vycm9yIChHc3RQbGF5ZXIgKiBzZWxmLCBHRXJyb3IgKiBlcnIpCit7CisgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJFcnJvcjogJXMgKCVzLCAlZCkiLCBlcnItPm1lc3NhZ2UsCisgICAgICBnX3F1YXJrX3RvX3N0cmluZyAoZXJyLT5kb21haW4pLCBlcnItPmNvZGUpOworCisgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX0VSUk9SXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIEVycm9yU2lnbmFsRGF0YSAqZGF0YSA9IGdfbmV3IChFcnJvclNpZ25hbERhdGEsIDEpOworCisgICAgZGF0YS0+cGxheWVyID0gZ19vYmplY3RfcmVmIChzZWxmKTsKKyAgICBkYXRhLT5lcnIgPSBnX2Vycm9yX2NvcHkgKGVycik7CisgICAgZ3N0X3BsYXllcl9zaWduYWxfZGlzcGF0Y2hlcl9kaXNwYXRjaCAoc2VsZi0+c2lnbmFsX2Rpc3BhdGNoZXIsIHNlbGYsCisgICAgICAgIGVycm9yX2Rpc3BhdGNoLCBkYXRhLCAoR0Rlc3Ryb3lOb3RpZnkpIGZyZWVfZXJyb3Jfc2lnbmFsX2RhdGEpOworICB9CisKKyAgZ19lcnJvcl9mcmVlIChlcnIpOworCisgIHJlbW92ZV90aWNrX3NvdXJjZSAoc2VsZik7CisgIHJlbW92ZV9yZWFkeV90aW1lb3V0X3NvdXJjZSAoc2VsZik7CisKKyAgc2VsZi0+dGFyZ2V0X3N0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgIHNlbGYtPmN1cnJlbnRfc3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgc2VsZi0+aXNfbGl2ZSA9IEZBTFNFOworICBzZWxmLT5pc19lb3MgPSBGQUxTRTsKKyAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBHU1RfU1RBVEVfTlVMTCk7CisgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgc2VsZi0+YnVmZmVyaW5nID0gMTAwOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoc2VsZi0+bWVkaWFfaW5mbykgeworICAgIGdfb2JqZWN0X3VucmVmIChzZWxmLT5tZWRpYV9pbmZvKTsKKyAgICBzZWxmLT5tZWRpYV9pbmZvID0gTlVMTDsKKyAgfQorCisgIGlmIChzZWxmLT5nbG9iYWxfdGFncykgeworICAgIGdzdF90YWdfbGlzdF91bnJlZiAoc2VsZi0+Z2xvYmFsX3RhZ3MpOworICAgIHNlbGYtPmdsb2JhbF90YWdzID0gTlVMTDsKKyAgfQorCisgIHNlbGYtPnNlZWtfcGVuZGluZyA9IEZBTFNFOworICBpZiAoc2VsZi0+c2Vla19zb3VyY2UpIHsKKyAgICBnX3NvdXJjZV9kZXN0cm95IChzZWxmLT5zZWVrX3NvdXJjZSk7CisgICAgZ19zb3VyY2VfdW5yZWYgKHNlbGYtPnNlZWtfc291cmNlKTsKKyAgICBzZWxmLT5zZWVrX3NvdXJjZSA9IE5VTEw7CisgIH0KKyAgc2VsZi0+c2Vla19wb3NpdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIHNlbGYtPmxhc3Rfc2Vla190aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK2R1bXBfZG90X2ZpbGUgKEdzdFBsYXllciAqIHNlbGYsIGNvbnN0IGdjaGFyICogbmFtZSkKK3sKKyAgZ2NoYXIgKmZ1bGxfbmFtZTsKKworICBmdWxsX25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJnc3QtcGxheWVyLiVwLiVzIiwgc2VsZiwgbmFtZSk7CisKKyAgR1NUX0RFQlVHX0JJTl9UT19ET1RfRklMRV9XSVRIX1RTIChHU1RfQklOIChzZWxmLT5wbGF5YmluKSwKKyAgICAgIEdTVF9ERUJVR19HUkFQSF9TSE9XX0FMTCwgZnVsbF9uYW1lKTsKKworICBnX2ZyZWUgKGZ1bGxfbmFtZSk7Cit9CisKK3R5cGVkZWYgc3RydWN0Cit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBHRXJyb3IgKmVycjsKK30gV2FybmluZ1NpZ25hbERhdGE7CisKK3N0YXRpYyB2b2lkCit3YXJuaW5nX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIFdhcm5pbmdTaWduYWxEYXRhICpkYXRhID0gdXNlcl9kYXRhOworCisgIGdfc2lnbmFsX2VtaXQgKGRhdGEtPnBsYXllciwgc2lnbmFsc1tTSUdOQUxfV0FSTklOR10sIDAsIGRhdGEtPmVycik7Cit9CisKK3N0YXRpYyB2b2lkCitmcmVlX3dhcm5pbmdfc2lnbmFsX2RhdGEgKFdhcm5pbmdTaWduYWxEYXRhICogZGF0YSkKK3sKKyAgZ19vYmplY3RfdW5yZWYgKGRhdGEtPnBsYXllcik7CisgIGdfY2xlYXJfZXJyb3IgKCZkYXRhLT5lcnIpOworICBnX2ZyZWUgKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAorZW1pdF93YXJuaW5nIChHc3RQbGF5ZXIgKiBzZWxmLCBHRXJyb3IgKiBlcnIpCit7CisgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJXYXJuaW5nOiAlcyAoJXMsICVkKSIsIGVyci0+bWVzc2FnZSwKKyAgICAgIGdfcXVhcmtfdG9fc3RyaW5nIChlcnItPmRvbWFpbiksIGVyci0+Y29kZSk7CisKKyAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgc2lnbmFsc1tTSUdOQUxfV0FSTklOR10sIDAsIE5VTEwsIE5VTEwsIE5VTEwpICE9IDApIHsKKyAgICBXYXJuaW5nU2lnbmFsRGF0YSAqZGF0YSA9IGdfbmV3IChXYXJuaW5nU2lnbmFsRGF0YSwgMSk7CisKKyAgICBkYXRhLT5wbGF5ZXIgPSBnX29iamVjdF9yZWYgKHNlbGYpOworICAgIGRhdGEtPmVyciA9IGdfZXJyb3JfY29weSAoZXJyKTsKKyAgICBnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoIChzZWxmLT5zaWduYWxfZGlzcGF0Y2hlciwgc2VsZiwKKyAgICAgICAgd2FybmluZ19kaXNwYXRjaCwgZGF0YSwgKEdEZXN0cm95Tm90aWZ5KSBmcmVlX3dhcm5pbmdfc2lnbmFsX2RhdGEpOworICB9CisKKyAgZ19lcnJvcl9mcmVlIChlcnIpOworfQorCitzdGF0aWMgdm9pZAorZXJyb3JfY2IgKEdfR05VQ19VTlVTRUQgR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIEdFcnJvciAqZXJyLCAqcGxheWVyX2VycjsKKyAgZ2NoYXIgKm5hbWUsICpkZWJ1ZywgKm1lc3NhZ2UsICpmdWxsX21lc3NhZ2U7CisKKyAgZHVtcF9kb3RfZmlsZSAoc2VsZiwgImVycm9yIik7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1zZywgJmVyciwgJmRlYnVnKTsKKworICBuYW1lID0gZ3N0X29iamVjdF9nZXRfcGF0aF9zdHJpbmcgKG1zZy0+c3JjKTsKKyAgbWVzc2FnZSA9IGdzdF9lcnJvcl9nZXRfbWVzc2FnZSAoZXJyLT5kb21haW4sIGVyci0+Y29kZSk7CisKKyAgaWYgKGRlYnVnKQorICAgIGZ1bGxfbWVzc2FnZSA9CisgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoIkVycm9yIGZyb20gZWxlbWVudCAlczogJXNcbiVzXG4lcyIsIG5hbWUsIG1lc3NhZ2UsCisgICAgICAgIGVyci0+bWVzc2FnZSwgZGVidWcpOworICBlbHNlCisgICAgZnVsbF9tZXNzYWdlID0KKyAgICAgICAgZ19zdHJkdXBfcHJpbnRmICgiRXJyb3IgZnJvbSBlbGVtZW50ICVzOiAlc1xuJXMiLCBuYW1lLCBtZXNzYWdlLAorICAgICAgICBlcnItPm1lc3NhZ2UpOworCisgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJFUlJPUjogZnJvbSBlbGVtZW50ICVzOiAlc1xuIiwgbmFtZSwgZXJyLT5tZXNzYWdlKTsKKyAgaWYgKGRlYnVnICE9IE5VTEwpCisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkFkZGl0aW9uYWwgZGVidWcgaW5mbzpcbiVzXG4iLCBkZWJ1Zyk7CisKKyAgcGxheWVyX2VyciA9CisgICAgICBnX2Vycm9yX25ld19saXRlcmFsIChHU1RfUExBWUVSX0VSUk9SLCBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwKKyAgICAgIGZ1bGxfbWVzc2FnZSk7CisgIGVtaXRfZXJyb3IgKHNlbGYsIHBsYXllcl9lcnIpOworCisgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICBnX2ZyZWUgKGRlYnVnKTsKKyAgZ19mcmVlIChuYW1lKTsKKyAgZ19mcmVlIChmdWxsX21lc3NhZ2UpOworICBnX2ZyZWUgKG1lc3NhZ2UpOworfQorCitzdGF0aWMgdm9pZAord2FybmluZ19jYiAoR19HTlVDX1VOVVNFRCBHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKyAgR0Vycm9yICplcnIsICpwbGF5ZXJfZXJyOworICBnY2hhciAqbmFtZSwgKmRlYnVnLCAqbWVzc2FnZSwgKmZ1bGxfbWVzc2FnZTsKKworICBkdW1wX2RvdF9maWxlIChzZWxmLCAid2FybmluZyIpOworCisgIGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcgKG1zZywgJmVyciwgJmRlYnVnKTsKKworICBuYW1lID0gZ3N0X29iamVjdF9nZXRfcGF0aF9zdHJpbmcgKG1zZy0+c3JjKTsKKyAgbWVzc2FnZSA9IGdzdF9lcnJvcl9nZXRfbWVzc2FnZSAoZXJyLT5kb21haW4sIGVyci0+Y29kZSk7CisKKyAgaWYgKGRlYnVnKQorICAgIGZ1bGxfbWVzc2FnZSA9CisgICAgICAgIGdfc3RyZHVwX3ByaW50ZiAoIldhcm5pbmcgZnJvbSBlbGVtZW50ICVzOiAlc1xuJXNcbiVzIiwgbmFtZSwgbWVzc2FnZSwKKyAgICAgICAgZXJyLT5tZXNzYWdlLCBkZWJ1Zyk7CisgIGVsc2UKKyAgICBmdWxsX21lc3NhZ2UgPQorICAgICAgICBnX3N0cmR1cF9wcmludGYgKCJXYXJuaW5nIGZyb20gZWxlbWVudCAlczogJXNcbiVzIiwgbmFtZSwgbWVzc2FnZSwKKyAgICAgICAgZXJyLT5tZXNzYWdlKTsKKworICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJXQVJOSU5HOiBmcm9tIGVsZW1lbnQgJXM6ICVzXG4iLCBuYW1lLAorICAgICAgZXJyLT5tZXNzYWdlKTsKKyAgaWYgKGRlYnVnICE9IE5VTEwpCisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAiQWRkaXRpb25hbCBkZWJ1ZyBpbmZvOlxuJXNcbiIsIGRlYnVnKTsKKworICBwbGF5ZXJfZXJyID0KKyAgICAgIGdfZXJyb3JfbmV3X2xpdGVyYWwgKEdTVF9QTEFZRVJfRVJST1IsIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVELAorICAgICAgZnVsbF9tZXNzYWdlKTsKKyAgZW1pdF93YXJuaW5nIChzZWxmLCBwbGF5ZXJfZXJyKTsKKworICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKKyAgZ19mcmVlIChkZWJ1Zyk7CisgIGdfZnJlZSAobmFtZSk7CisgIGdfZnJlZSAoZnVsbF9tZXNzYWdlKTsKKyAgZ19mcmVlIChtZXNzYWdlKTsKK30KKworc3RhdGljIHZvaWQKK2Vvc19kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBnX3NpZ25hbF9lbWl0ICh1c2VyX2RhdGEsIHNpZ25hbHNbU0lHTkFMX0VORF9PRl9TVFJFQU1dLCAwKTsKK30KKworc3RhdGljIHZvaWQKK2Vvc19jYiAoR19HTlVDX1VOVVNFRCBHc3RCdXMgKiBidXMsIEdfR05VQ19VTlVTRUQgR3N0TWVzc2FnZSAqIG1zZywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkVuZCBvZiBzdHJlYW0iKTsKKworICB0aWNrX2NiIChzZWxmKTsKKyAgcmVtb3ZlX3RpY2tfc291cmNlIChzZWxmKTsKKworICBpZiAoZ19zaWduYWxfaGFuZGxlcl9maW5kIChzZWxmLCBHX1NJR05BTF9NQVRDSF9JRCwKKyAgICAgICAgICBzaWduYWxzW1NJR05BTF9FTkRfT0ZfU1RSRUFNXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICBlb3NfZGlzcGF0Y2gsIGdfb2JqZWN0X3JlZiAoc2VsZiksIChHRGVzdHJveU5vdGlmeSkgZ19vYmplY3RfdW5yZWYpOworICB9CisgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgc2VsZi0+YnVmZmVyaW5nID0gMTAwOworICBzZWxmLT5pc19lb3MgPSBUUlVFOworfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgZ2ludCBwZXJjZW50OworfSBCdWZmZXJpbmdTaWduYWxEYXRhOworCitzdGF0aWMgdm9pZAorYnVmZmVyaW5nX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEJ1ZmZlcmluZ1NpZ25hbERhdGEgKmRhdGEgPSB1c2VyX2RhdGE7CisKKyAgaWYgKGRhdGEtPnBsYXllci0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBnX3NpZ25hbF9lbWl0IChkYXRhLT5wbGF5ZXIsIHNpZ25hbHNbU0lHTkFMX0JVRkZFUklOR10sIDAsIGRhdGEtPnBlcmNlbnQpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitidWZmZXJpbmdfc2lnbmFsX2RhdGFfZnJlZSAoQnVmZmVyaW5nU2lnbmFsRGF0YSAqIGRhdGEpCit7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5wbGF5ZXIpOworICBnX2ZyZWUgKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAorYnVmZmVyaW5nX2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworICBnaW50IHBlcmNlbnQ7CisKKyAgaWYgKHNlbGYtPnRhcmdldF9zdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQpCisgICAgcmV0dXJuOworICBpZiAoc2VsZi0+aXNfbGl2ZSkKKyAgICByZXR1cm47CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfYnVmZmVyaW5nIChtc2csICZwZXJjZW50KTsKKyAgR1NUX0xPR19PQkpFQ1QgKHNlbGYsICJCdWZmZXJpbmcgJWQlJSIsIHBlcmNlbnQpOworCisgIGlmIChwZXJjZW50IDwgMTAwICYmIHNlbGYtPnRhcmdldF9zdGF0ZSA+PSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc3RhdGVfcmV0OworCisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIldhaXRpbmcgZm9yIGJ1ZmZlcmluZyB0byBmaW5pc2giKTsKKyAgICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QQVVTRUQpOworCisgICAgaWYgKHN0YXRlX3JldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLCBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAgICAgIkZhaWxlZCB0byBoYW5kbGUgYnVmZmVyaW5nIikpOworICAgICAgcmV0dXJuOworICAgIH0KKworICAgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICB9CisKKyAgaWYgKHNlbGYtPmJ1ZmZlcmluZyAhPSBwZXJjZW50KSB7CisgICAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgICBzaWduYWxzW1NJR05BTF9CVUZGRVJJTkddLCAwLCBOVUxMLCBOVUxMLCBOVUxMKSAhPSAwKSB7CisgICAgICBCdWZmZXJpbmdTaWduYWxEYXRhICpkYXRhID0gZ19uZXcgKEJ1ZmZlcmluZ1NpZ25hbERhdGEsIDEpOworCisgICAgICBkYXRhLT5wbGF5ZXIgPSBnX29iamVjdF9yZWYgKHNlbGYpOworICAgICAgZGF0YS0+cGVyY2VudCA9IHBlcmNlbnQ7CisgICAgICBnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoIChzZWxmLT5zaWduYWxfZGlzcGF0Y2hlciwgc2VsZiwKKyAgICAgICAgICBidWZmZXJpbmdfZGlzcGF0Y2gsIGRhdGEsCisgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBidWZmZXJpbmdfc2lnbmFsX2RhdGFfZnJlZSk7CisgICAgfQorCisgICAgc2VsZi0+YnVmZmVyaW5nID0gcGVyY2VudDsKKyAgfQorCisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGlmIChwZXJjZW50ID09IDEwMCAmJiAoc2VsZi0+c2Vla19wb3NpdGlvbiAhPSBHU1RfQ0xPQ0tfVElNRV9OT05FIHx8CisgICAgICAgICAgc2VsZi0+c2Vla19wZW5kaW5nKSkgeworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQnVmZmVyaW5nIGZpbmlzaGVkIC0gc2VlayBwZW5kaW5nIik7CisgIH0gZWxzZSBpZiAocGVyY2VudCA9PSAxMDAgJiYgc2VsZi0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QTEFZSU5HCisgICAgICAmJiBzZWxmLT5jdXJyZW50X3N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXQ7CisKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkJ1ZmZlcmluZyBmaW5pc2hlZCAtIGdvaW5nIHRvIFBMQVlJTkciKTsKKyAgICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgICAvKiBBcHBsaWNhdGlvbiBzdGF0ZSBjaGFuZ2UgaXMgaGFwcGVuaW5nIHdoZW4gdGhlIHN0YXRlIGNoYW5nZSBoYXBwZW5lZCAqLworICAgIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKQorICAgICAgZW1pdF9lcnJvciAoc2VsZiwgZ19lcnJvcl9uZXcgKEdTVF9QTEFZRVJfRVJST1IsIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVELAorICAgICAgICAgICAgICAiRmFpbGVkIHRvIGhhbmRsZSBidWZmZXJpbmciKSk7CisgIH0gZWxzZSBpZiAocGVyY2VudCA9PSAxMDAgJiYgc2VsZi0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkJ1ZmZlcmluZyBmaW5pc2hlZCAtIHN0YXlpbmcgUEFVU0VEIik7CisgICAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX1BBVVNFRCk7CisgIH0gZWxzZSB7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorY2xvY2tfbG9zdF9jYiAoR19HTlVDX1VOVVNFRCBHc3RCdXMgKiBidXMsIEdfR05VQ19VTlVTRUQgR3N0TWVzc2FnZSAqIG1zZywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JldDsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQ2xvY2sgbG9zdCIpOworICBpZiAoc2VsZi0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QTEFZSU5HKSB7CisgICAgc3RhdGVfcmV0ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgICBpZiAoc3RhdGVfcmV0ICE9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkKKyAgICAgIHN0YXRlX3JldCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgR1NUX1NUQVRFX1BMQVlJTkcpOworCisgICAgaWYgKHN0YXRlX3JldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpCisgICAgICBlbWl0X2Vycm9yIChzZWxmLCBnX2Vycm9yX25ldyAoR1NUX1BMQVlFUl9FUlJPUiwgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgICAgICJGYWlsZWQgdG8gaGFuZGxlIGNsb2NrIGxvc3MiKSk7CisgIH0KK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIGdpbnQgd2lkdGgsIGhlaWdodDsKK30gVmlkZW9EaW1lbnNpb25zQ2hhbmdlZFNpZ25hbERhdGE7CisKK3N0YXRpYyB2b2lkCit2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfZGlzcGF0Y2ggKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgVmlkZW9EaW1lbnNpb25zQ2hhbmdlZFNpZ25hbERhdGEgKmRhdGEgPSB1c2VyX2RhdGE7CisKKyAgaWYgKGRhdGEtPnBsYXllci0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICBnX3NpZ25hbF9lbWl0IChkYXRhLT5wbGF5ZXIsIHNpZ25hbHNbU0lHTkFMX1ZJREVPX0RJTUVOU0lPTlNfQ0hBTkdFRF0sIDAsCisgICAgICAgIGRhdGEtPndpZHRoLCBkYXRhLT5oZWlnaHQpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCit2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfc2lnbmFsX2RhdGFfZnJlZSAoVmlkZW9EaW1lbnNpb25zQ2hhbmdlZFNpZ25hbERhdGEgKgorICAgIGRhdGEpCit7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5wbGF5ZXIpOworICBnX2ZyZWUgKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAorY2hlY2tfdmlkZW9fZGltZW5zaW9uc19jaGFuZ2VkIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RFbGVtZW50ICp2aWRlb19zaW5rOworICBHc3RQYWQgKnZpZGVvX3NpbmtfcGFkOworICBHc3RDYXBzICpjYXBzOworICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgZ2ludCB3aWR0aCA9IDAsIGhlaWdodCA9IDA7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLT5wbGF5YmluLCAidmlkZW8tc2luayIsICZ2aWRlb19zaW5rLCBOVUxMKTsKKyAgaWYgKCF2aWRlb19zaW5rKQorICAgIGdvdG8gb3V0OworCisgIHZpZGVvX3NpbmtfcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHZpZGVvX3NpbmssICJzaW5rIik7CisgIGlmICghdmlkZW9fc2lua19wYWQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh2aWRlb19zaW5rKTsKKyAgICBnb3RvIG91dDsKKyAgfQorCisgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKHZpZGVvX3NpbmtfcGFkKTsKKworICBpZiAoY2FwcykgeworICAgIGlmIChnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZpbmZvLCBjYXBzKSkgeworICAgICAgaW5mby53aWR0aCA9IGluZm8ud2lkdGggKiBpbmZvLnBhcl9uIC8gaW5mby5wYXJfZDsKKworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlZpZGVvIGRpbWVuc2lvbnMgY2hhbmdlZDogJWR4JWQiLCBpbmZvLndpZHRoLAorICAgICAgICAgIGluZm8uaGVpZ2h0KTsKKyAgICAgIHdpZHRoID0gaW5mby53aWR0aDsKKyAgICAgIGhlaWdodCA9IGluZm8uaGVpZ2h0OworICAgIH0KKworICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgfQorICBnc3Rfb2JqZWN0X3VucmVmICh2aWRlb19zaW5rX3BhZCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHZpZGVvX3NpbmspOworCitvdXQ6CisgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX1ZJREVPX0RJTUVOU0lPTlNfQ0hBTkdFRF0sIDAsIE5VTEwsIE5VTEwsIE5VTEwpICE9IDApIHsKKyAgICBWaWRlb0RpbWVuc2lvbnNDaGFuZ2VkU2lnbmFsRGF0YSAqZGF0YSA9CisgICAgICAgIGdfbmV3IChWaWRlb0RpbWVuc2lvbnNDaGFuZ2VkU2lnbmFsRGF0YSwgMSk7CisKKyAgICBkYXRhLT5wbGF5ZXIgPSBnX29iamVjdF9yZWYgKHNlbGYpOworICAgIGRhdGEtPndpZHRoID0gd2lkdGg7CisgICAgZGF0YS0+aGVpZ2h0ID0gaGVpZ2h0OworICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICB2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfZGlzcGF0Y2gsIGRhdGEsCisgICAgICAgIChHRGVzdHJveU5vdGlmeSkgdmlkZW9fZGltZW5zaW9uc19jaGFuZ2VkX3NpZ25hbF9kYXRhX2ZyZWUpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitub3RpZnlfY2Fwc19jYiAoR19HTlVDX1VOVVNFRCBHT2JqZWN0ICogb2JqZWN0LAorICAgIEdfR05VQ19VTlVTRUQgR1BhcmFtU3BlYyAqIHBzcGVjLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisKKyAgY2hlY2tfdmlkZW9fZGltZW5zaW9uc19jaGFuZ2VkIChzZWxmKTsKK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIEdzdENsb2NrVGltZSBkdXJhdGlvbjsKK30gRHVyYXRpb25DaGFuZ2VkU2lnbmFsRGF0YTsKKworc3RhdGljIHZvaWQKK2R1cmF0aW9uX2NoYW5nZWRfZGlzcGF0Y2ggKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgRHVyYXRpb25DaGFuZ2VkU2lnbmFsRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBpZiAoZGF0YS0+cGxheWVyLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgIGdfc2lnbmFsX2VtaXQgKGRhdGEtPnBsYXllciwgc2lnbmFsc1tTSUdOQUxfRFVSQVRJT05fQ0hBTkdFRF0sIDAsCisgICAgICAgIGRhdGEtPmR1cmF0aW9uKTsKKyAgICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMgKEdfT0JKRUNUIChkYXRhLT5wbGF5ZXIpLAorICAgICAgICBwYXJhbV9zcGVjc1tQUk9QX0RVUkFUSU9OXSk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2R1cmF0aW9uX2NoYW5nZWRfc2lnbmFsX2RhdGFfZnJlZSAoRHVyYXRpb25DaGFuZ2VkU2lnbmFsRGF0YSAqIGRhdGEpCit7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5wbGF5ZXIpOworICBnX2ZyZWUgKGRhdGEpOworfQorCitzdGF0aWMgdm9pZAorZW1pdF9kdXJhdGlvbl9jaGFuZ2VkIChHc3RQbGF5ZXIgKiBzZWxmLCBHc3RDbG9ja1RpbWUgZHVyYXRpb24pCit7CisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJEdXJhdGlvbiBjaGFuZ2VkICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgIEdTVF9USU1FX0FSR1MgKGR1cmF0aW9uKSk7CisKKyAgaWYgKGdfc2lnbmFsX2hhbmRsZXJfZmluZCAoc2VsZiwgR19TSUdOQUxfTUFUQ0hfSUQsCisgICAgICAgICAgc2lnbmFsc1tTSUdOQUxfRFVSQVRJT05fQ0hBTkdFRF0sIDAsIE5VTEwsIE5VTEwsIE5VTEwpICE9IDApIHsKKyAgICBEdXJhdGlvbkNoYW5nZWRTaWduYWxEYXRhICpkYXRhID0gZ19uZXcgKER1cmF0aW9uQ2hhbmdlZFNpZ25hbERhdGEsIDEpOworCisgICAgZGF0YS0+cGxheWVyID0gZ19vYmplY3RfcmVmIChzZWxmKTsKKyAgICBkYXRhLT5kdXJhdGlvbiA9IGR1cmF0aW9uOworICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICBkdXJhdGlvbl9jaGFuZ2VkX2Rpc3BhdGNoLCBkYXRhLAorICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGR1cmF0aW9uX2NoYW5nZWRfc2lnbmFsX2RhdGFfZnJlZSk7CisgIH0KK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIEdzdENsb2NrVGltZSBwb3NpdGlvbjsKK30gU2Vla0RvbmVTaWduYWxEYXRhOworCitzdGF0aWMgdm9pZAorc2Vla19kb25lX2Rpc3BhdGNoIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIFNlZWtEb25lU2lnbmFsRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBnX3NpZ25hbF9lbWl0IChkYXRhLT5wbGF5ZXIsIHNpZ25hbHNbU0lHTkFMX1NFRUtfRE9ORV0sIDAsIGRhdGEtPnBvc2l0aW9uKTsKK30KKworc3RhdGljIHZvaWQKK3NlZWtfZG9uZV9zaWduYWxfZGF0YV9mcmVlIChTZWVrRG9uZVNpZ25hbERhdGEgKiBkYXRhKQoreworICBnX29iamVjdF91bnJlZiAoZGF0YS0+cGxheWVyKTsKKyAgZ19mcmVlIChkYXRhKTsKK30KKworc3RhdGljIHZvaWQKK2VtaXRfc2Vla19kb25lIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBpZiAoZ19zaWduYWxfaGFuZGxlcl9maW5kIChzZWxmLCBHX1NJR05BTF9NQVRDSF9JRCwKKyAgICAgICAgICBzaWduYWxzW1NJR05BTF9TRUVLX0RPTkVdLCAwLCBOVUxMLCBOVUxMLCBOVUxMKSAhPSAwKSB7CisgICAgU2Vla0RvbmVTaWduYWxEYXRhICpkYXRhID0gZ19uZXcgKFNlZWtEb25lU2lnbmFsRGF0YSwgMSk7CisKKyAgICBkYXRhLT5wbGF5ZXIgPSBnX29iamVjdF9yZWYgKHNlbGYpOworICAgIGRhdGEtPnBvc2l0aW9uID0gZ3N0X3BsYXllcl9nZXRfcG9zaXRpb24gKHNlbGYpOworICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICBzZWVrX2RvbmVfZGlzcGF0Y2gsIGRhdGEsIChHRGVzdHJveU5vdGlmeSkgc2Vla19kb25lX3NpZ25hbF9kYXRhX2ZyZWUpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitzdGF0ZV9jaGFuZ2VkX2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIEdzdFN0YXRlIG9sZF9zdGF0ZSwgbmV3X3N0YXRlLCBwZW5kaW5nX3N0YXRlOworCisgIGdzdF9tZXNzYWdlX3BhcnNlX3N0YXRlX2NoYW5nZWQgKG1zZywgJm9sZF9zdGF0ZSwgJm5ld19zdGF0ZSwgJnBlbmRpbmdfc3RhdGUpOworCisgIGlmIChHU1RfTUVTU0FHRV9TUkMgKG1zZykgPT0gR1NUX09CSkVDVCAoc2VsZi0+cGxheWJpbikpIHsKKyAgICBnY2hhciAqdHJhbnNpdGlvbl9uYW1lOworCisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkNoYW5nZWQgc3RhdGUgb2xkOiAlcyBuZXc6ICVzIHBlbmRpbmc6ICVzIiwKKyAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKG9sZF9zdGF0ZSksCisgICAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChuZXdfc3RhdGUpLAorICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAocGVuZGluZ19zdGF0ZSkpOworCisgICAgdHJhbnNpdGlvbl9uYW1lID0gZ19zdHJkdXBfcHJpbnRmICgiJXNfJXMiLAorICAgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAob2xkX3N0YXRlKSwKKyAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKG5ld19zdGF0ZSkpOworICAgIGR1bXBfZG90X2ZpbGUgKHNlbGYsIHRyYW5zaXRpb25fbmFtZSk7CisgICAgZ19mcmVlICh0cmFuc2l0aW9uX25hbWUpOworCisgICAgc2VsZi0+Y3VycmVudF9zdGF0ZSA9IG5ld19zdGF0ZTsKKworICAgIGlmIChvbGRfc3RhdGUgPT0gR1NUX1NUQVRFX1JFQURZICYmIG5ld19zdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VECisgICAgICAgICYmIHBlbmRpbmdfc3RhdGUgPT0gR1NUX1NUQVRFX1ZPSURfUEVORElORykgeworICAgICAgR3N0RWxlbWVudCAqdmlkZW9fc2luazsKKyAgICAgIEdzdFBhZCAqdmlkZW9fc2lua19wYWQ7CisgICAgICBnaW50NjQgZHVyYXRpb24gPSAtMTsKKworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIkluaXRpYWwgUEFVU0VEIC0gcHJlLXJvbGxlZCIpOworCisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGlmIChzZWxmLT5tZWRpYV9pbmZvKQorICAgICAgICBnX29iamVjdF91bnJlZiAoc2VsZi0+bWVkaWFfaW5mbyk7CisgICAgICBzZWxmLT5tZWRpYV9pbmZvID0gZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2NyZWF0ZSAoc2VsZik7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgICAgZW1pdF9tZWRpYV9pbmZvX3VwZGF0ZWRfc2lnbmFsIChzZWxmKTsKKworICAgICAgZ19vYmplY3RfZ2V0IChzZWxmLT5wbGF5YmluLCAidmlkZW8tc2luayIsICZ2aWRlb19zaW5rLCBOVUxMKTsKKworICAgICAgaWYgKHZpZGVvX3NpbmspIHsKKyAgICAgICAgdmlkZW9fc2lua19wYWQgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAodmlkZW9fc2luaywgInNpbmsiKTsKKworICAgICAgICBpZiAodmlkZW9fc2lua19wYWQpIHsKKyAgICAgICAgICBnX3NpZ25hbF9jb25uZWN0ICh2aWRlb19zaW5rX3BhZCwgIm5vdGlmeTo6Y2FwcyIsCisgICAgICAgICAgICAgIChHQ2FsbGJhY2spIG5vdGlmeV9jYXBzX2NiLCBzZWxmKTsKKyAgICAgICAgICBnc3Rfb2JqZWN0X3VucmVmICh2aWRlb19zaW5rX3BhZCk7CisgICAgICAgIH0KKyAgICAgICAgZ3N0X29iamVjdF91bnJlZiAodmlkZW9fc2luayk7CisgICAgICB9CisKKyAgICAgIGNoZWNrX3ZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZCAoc2VsZik7CisgICAgICBnc3RfZWxlbWVudF9xdWVyeV9kdXJhdGlvbiAoc2VsZi0+cGxheWJpbiwgR1NUX0ZPUk1BVF9USU1FLCAmZHVyYXRpb24pOworICAgICAgZW1pdF9kdXJhdGlvbl9jaGFuZ2VkIChzZWxmLCBkdXJhdGlvbik7CisgICAgfQorCisgICAgaWYgKG5ld19zdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VECisgICAgICAgICYmIHBlbmRpbmdfc3RhdGUgPT0gR1NUX1NUQVRFX1ZPSURfUEVORElORykgeworICAgICAgcmVtb3ZlX3RpY2tfc291cmNlIChzZWxmKTsKKworICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICBpZiAoc2VsZi0+c2Vla19wZW5kaW5nKSB7CisgICAgICAgIHNlbGYtPnNlZWtfcGVuZGluZyA9IEZBTFNFOworCisgICAgICAgIGlmICghc2VsZi0+bWVkaWFfaW5mby0+c2Vla2FibGUpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiTWVkaWEgaXMgbm90IHNlZWthYmxlIik7CisgICAgICAgICAgaWYgKHNlbGYtPnNlZWtfc291cmNlKSB7CisgICAgICAgICAgICBnX3NvdXJjZV9kZXN0cm95IChzZWxmLT5zZWVrX3NvdXJjZSk7CisgICAgICAgICAgICBnX3NvdXJjZV91bnJlZiAoc2VsZi0+c2Vla19zb3VyY2UpOworICAgICAgICAgICAgc2VsZi0+c2Vla19zb3VyY2UgPSBOVUxMOworICAgICAgICAgIH0KKyAgICAgICAgICBzZWxmLT5zZWVrX3Bvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgICAgICBzZWxmLT5sYXN0X3NlZWtfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgICAgIH0gZWxzZSBpZiAoc2VsZi0+c2Vla19zb3VyY2UpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2VlayBmaW5pc2hlZCBidXQgbmV3IHNlZWsgaXMgcGVuZGluZyIpOworICAgICAgICAgIGdzdF9wbGF5ZXJfc2Vla19pbnRlcm5hbF9sb2NrZWQgKHNlbGYpOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZWVrIGZpbmlzaGVkIik7CisgICAgICAgICAgZW1pdF9zZWVrX2RvbmUgKHNlbGYpOworICAgICAgICB9CisgICAgICB9CisKKyAgICAgIGlmIChzZWxmLT5zZWVrX3Bvc2l0aW9uICE9IEdTVF9DTE9DS19USU1FX05PTkUpIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNlZWtpbmcgbm93IHRoYXQgd2UgcmVhY2hlZCBQQVVTRUQgc3RhdGUiKTsKKyAgICAgICAgZ3N0X3BsYXllcl9zZWVrX2ludGVybmFsX2xvY2tlZCAoc2VsZik7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgICB9IGVsc2UgaWYgKCFzZWxmLT5zZWVrX3BlbmRpbmcpIHsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICAgICAgICB0aWNrX2NiIChzZWxmKTsKKworICAgICAgICBpZiAoc2VsZi0+dGFyZ2V0X3N0YXRlID49IEdTVF9TVEFURV9QTEFZSU5HICYmIHNlbGYtPmJ1ZmZlcmluZyA9PSAxMDApIHsKKyAgICAgICAgICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXQ7CisKKyAgICAgICAgICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QTEFZSU5HKTsKKyAgICAgICAgICBpZiAoc3RhdGVfcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkKKyAgICAgICAgICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLAorICAgICAgICAgICAgICAgICAgICBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBwbGF5IikpOworICAgICAgICB9IGVsc2UgaWYgKHNlbGYtPmJ1ZmZlcmluZyA9PSAxMDApIHsKKyAgICAgICAgICBjaGFuZ2Vfc3RhdGUgKHNlbGYsIEdTVF9QTEFZRVJfU1RBVEVfUEFVU0VEKTsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5ld19zdGF0ZSA9PSBHU1RfU1RBVEVfUExBWUlORworICAgICAgICAmJiBwZW5kaW5nX3N0YXRlID09IEdTVF9TVEFURV9WT0lEX1BFTkRJTkcpIHsKKworICAgICAgLyogSWYgbm8gc2VlayBpcyBjdXJyZW50bHkgcGVuZGluZywgYWRkIHRoZSB0aWNrIHNvdXJjZS4gVGhpcyBjYW4gaGFwcGVuCisgICAgICAgKiBpZiB3ZSBzZWVrZWQgYWxyZWFkeSBidXQgdGhlIHN0YXRlLWNoYW5nZSBtZXNzYWdlIHdhcyBzdGlsbCBxdWV1ZWQgdXAgKi8KKyAgICAgIGlmICghc2VsZi0+c2Vla19wZW5kaW5nKSB7CisgICAgICAgIGFkZF90aWNrX3NvdXJjZSAoc2VsZik7CisgICAgICAgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKG5ld19zdGF0ZSA9PSBHU1RfU1RBVEVfUkVBRFkgJiYgb2xkX3N0YXRlID4gR1NUX1NUQVRFX1JFQURZKSB7CisgICAgICBjaGFuZ2Vfc3RhdGUgKHNlbGYsIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8qIE90aGVyd2lzZSB3ZSBuZWl0aGVyIHJlYWNoZWQgUExBWUlORyBub3IgUEFVU0VELCBzbyBtdXN0CisgICAgICAgKiB3YWl0IGZvciBzb21ldGhpbmcgdG8gaGFwcGVuLi4uIGkuZS4gYXJlIEJVRkZFUklORyBub3cgKi8KKyAgICAgIGNoYW5nZV9zdGF0ZSAoc2VsZiwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZAorZHVyYXRpb25fY2hhbmdlZF9jYiAoR19HTlVDX1VOVVNFRCBHc3RCdXMgKiBidXMsIEdfR05VQ19VTlVTRUQgR3N0TWVzc2FnZSAqIG1zZywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIGdpbnQ2NCBkdXJhdGlvbjsKKworICBpZiAoZ3N0X2VsZW1lbnRfcXVlcnlfZHVyYXRpb24gKHNlbGYtPnBsYXliaW4sIEdTVF9GT1JNQVRfVElNRSwgJmR1cmF0aW9uKSkgeworICAgIGVtaXRfZHVyYXRpb25fY2hhbmdlZCAoc2VsZiwgZHVyYXRpb24pOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitsYXRlbmN5X2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR19HTlVDX1VOVVNFRCBHc3RNZXNzYWdlICogbXNnLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiTGF0ZW5jeSBjaGFuZ2VkIik7CisKKyAgZ3N0X2Jpbl9yZWNhbGN1bGF0ZV9sYXRlbmN5IChHU1RfQklOIChzZWxmLT5wbGF5YmluKSk7Cit9CisKK3N0YXRpYyB2b2lkCityZXF1ZXN0X3N0YXRlX2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIEdzdFN0YXRlIHN0YXRlOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXQ7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfcmVxdWVzdF9zdGF0ZSAobXNnLCAmc3RhdGUpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdGF0ZSAlcyByZXF1ZXN0ZWQiLAorICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKHN0YXRlKSk7CisKKyAgc2VsZi0+dGFyZ2V0X3N0YXRlID0gc3RhdGU7CisgIHN0YXRlX3JldCA9IGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoc2VsZi0+cGxheWJpbiwgc3RhdGUpOworICBpZiAoc3RhdGVfcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSkKKyAgICBlbWl0X2Vycm9yIChzZWxmLCBnX2Vycm9yX25ldyAoR1NUX1BMQVlFUl9FUlJPUiwgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgICAiRmFpbGVkIHRvIGNoYW5nZSB0byByZXF1ZXN0ZWQgc3RhdGUgJXMiLAorICAgICAgICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKHN0YXRlKSkpOworfQorCitzdGF0aWMgdm9pZAorbWVkaWFfaW5mb191cGRhdGUgKEdzdFBsYXllciAqIHNlbGYsIEdzdFBsYXllck1lZGlhSW5mbyAqIGluZm8pCit7CisgIGdfZnJlZSAoaW5mby0+dGl0bGUpOworICBpbmZvLT50aXRsZSA9IGdldF9mcm9tX3RhZ3MgKHNlbGYsIGluZm8sIGdldF90aXRsZSk7CisKKyAgZ19mcmVlIChpbmZvLT5jb250YWluZXIpOworICBpbmZvLT5jb250YWluZXIgPSBnZXRfZnJvbV90YWdzIChzZWxmLCBpbmZvLCBnZXRfY29udGFpbmVyX2Zvcm1hdCk7CisKKyAgaWYgKGluZm8tPmltYWdlX3NhbXBsZSkKKyAgICBnc3Rfc2FtcGxlX3VucmVmIChpbmZvLT5pbWFnZV9zYW1wbGUpOworICBpbmZvLT5pbWFnZV9zYW1wbGUgPSBnZXRfZnJvbV90YWdzIChzZWxmLCBpbmZvLCBnZXRfY292ZXJfc2FtcGxlKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAidGl0bGU6ICVzLCBjb250YWluZXI6ICVzICIKKyAgICAgICJpbWFnZV9zYW1wbGU6ICVwIiwgaW5mby0+dGl0bGUsIGluZm8tPmNvbnRhaW5lciwgaW5mby0+aW1hZ2Vfc2FtcGxlKTsKK30KKworc3RhdGljIHZvaWQKK3RhZ3NfY2IgKEdfR05VQ19VTlVTRUQgR3N0QnVzICogYnVzLCBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdFBsYXllciAqc2VsZiA9IEdTVF9QTEFZRVIgKHVzZXJfZGF0YSk7CisgIEdzdFRhZ0xpc3QgKnRhZ3MgPSBOVUxMOworCisgIGdzdF9tZXNzYWdlX3BhcnNlX3RhZyAobXNnLCAmdGFncyk7CisKKyAgLyoKKyAgICogTk9URTogSW5vcmRlciB0byBnZXQgZ2xvYmFsIHRhZyB5b3UgbXVzdCBhcHBseSB0aGUgZm9sbG93aW5nIHBhdGNoZXMgaW4KKyAgICogeW91ciBnc3RyZWFtZXIgYnVpbGQuCisgICAqCisgICAqIGh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtZ29vZC9jb21taXQvP2lkPTkxMTlmYmQ3NzQwOTNlM2FlNzYyYzg2NTJhY2Q4MGQ1NGIyYzNiNDUKKyAgICogaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3RyZWFtZXIvY29tbWl0Lz9pZD0xOGIwNTgxMDA5NDBiZGNhZWQ4NmZhNDEyZTM1ODJhMDI4NzFmOTk1CisgICAqLworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAicmVjaWV2ZWQgJXMgdGFncyIsCisgICAgICBnc3RfdGFnX2xpc3RfZ2V0X3Njb3BlICh0YWdzKSA9PQorICAgICAgR1NUX1RBR19TQ09QRV9HTE9CQUwgPyAiZ2xvYmFsIiA6ICJzdHJlYW0iKTsKKworICBpZiAoZ3N0X3RhZ19saXN0X2dldF9zY29wZSAodGFncykgPT0gR1NUX1RBR19TQ09QRV9HTE9CQUwpIHsKKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICBpZiAoc2VsZi0+bWVkaWFfaW5mbykgeworICAgICAgaWYgKHNlbGYtPm1lZGlhX2luZm8tPnRhZ3MpCisgICAgICAgIGdzdF90YWdfbGlzdF91bnJlZiAoc2VsZi0+bWVkaWFfaW5mby0+dGFncyk7CisgICAgICBzZWxmLT5tZWRpYV9pbmZvLT50YWdzID0gZ3N0X3RhZ19saXN0X3JlZiAodGFncyk7CisgICAgICBtZWRpYV9pbmZvX3VwZGF0ZSAoc2VsZiwgc2VsZi0+bWVkaWFfaW5mbyk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgICAgZW1pdF9tZWRpYV9pbmZvX3VwZGF0ZWRfc2lnbmFsIChzZWxmKTsKKyAgICB9IGVsc2UgeworICAgICAgaWYgKHNlbGYtPmdsb2JhbF90YWdzKQorICAgICAgICBnc3RfdGFnX2xpc3RfdW5yZWYgKHNlbGYtPmdsb2JhbF90YWdzKTsKKyAgICAgIHNlbGYtPmdsb2JhbF90YWdzID0gZ3N0X3RhZ19saXN0X3JlZiAodGFncyk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgIH0KKyAgfQorCisgIGdzdF90YWdfbGlzdF91bnJlZiAodGFncyk7Cit9CisKK3N0YXRpYyB2b2lkCitlbGVtZW50X2NiIChHX0dOVUNfVU5VU0VEIEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgcyA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUgKG1zZyk7CisgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19uYW1lIChzLCAicmVkaXJlY3QiKSkgeworICAgIGNvbnN0IGdjaGFyICpuZXdfbG9jYXRpb247CisKKyAgICBuZXdfbG9jYXRpb24gPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJuZXctbG9jYXRpb24iKTsKKyAgICBpZiAoIW5ld19sb2NhdGlvbikgeworICAgICAgY29uc3QgR1ZhbHVlICpsb2NhdGlvbnNfbGlzdCwgKmxvY2F0aW9uX3ZhbDsKKyAgICAgIGd1aW50IGksIHNpemU7CisKKyAgICAgIGxvY2F0aW9uc19saXN0ID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHMsICJsb2NhdGlvbnMiKTsKKyAgICAgIHNpemUgPSBnc3RfdmFsdWVfbGlzdF9nZXRfc2l6ZSAobG9jYXRpb25zX2xpc3QpOworICAgICAgZm9yIChpID0gMDsgaSA8IHNpemU7ICsraSkgeworICAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKmxvY2F0aW9uX3M7CisKKyAgICAgICAgbG9jYXRpb25fdmFsID0gZ3N0X3ZhbHVlX2xpc3RfZ2V0X3ZhbHVlIChsb2NhdGlvbnNfbGlzdCwgaSk7CisgICAgICAgIGlmICghR1NUX1ZBTFVFX0hPTERTX1NUUlVDVFVSRSAobG9jYXRpb25fdmFsKSkKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBsb2NhdGlvbl9zID0gKGNvbnN0IEdzdFN0cnVjdHVyZSAqKSBnX3ZhbHVlX2dldF9ib3hlZCAobG9jYXRpb25fdmFsKTsKKyAgICAgICAgaWYgKCFnc3Rfc3RydWN0dXJlX2hhc19uYW1lIChsb2NhdGlvbl9zLCAicmVkaXJlY3QiKSkKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBuZXdfbG9jYXRpb24gPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKGxvY2F0aW9uX3MsICJuZXctbG9jYXRpb24iKTsKKyAgICAgICAgaWYgKG5ld19sb2NhdGlvbikKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAobmV3X2xvY2F0aW9uKSB7CisgICAgICBHc3RTdGF0ZSB0YXJnZXRfc3RhdGU7CisKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJSZWRpcmVjdCB0byAnJXMnIiwgbmV3X2xvY2F0aW9uKTsKKworICAgICAgLyogUmVtZW1iZXIgdGFyZ2V0IHN0YXRlIGFuZCByZXN0b3JlIGFmdGVyIHNldHRpbmcgdGhlIFVSSSAqLworICAgICAgdGFyZ2V0X3N0YXRlID0gc2VsZi0+dGFyZ2V0X3N0YXRlOworCisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICAgIGdfZnJlZSAoc2VsZi0+dXJpKTsKKworICAgICAgc2VsZi0+dXJpID0gZ19zdHJkdXAgKG5ld19sb2NhdGlvbik7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgICAgICBnc3RfcGxheWVyX3NldF91cmlfaW50ZXJuYWwgKHNlbGYpOworCisgICAgICBpZiAodGFyZ2V0X3N0YXRlID09IEdTVF9TVEFURV9QQVVTRUQpCisgICAgICAgIGdzdF9wbGF5ZXJfcGF1c2VfaW50ZXJuYWwgKHNlbGYpOworICAgICAgZWxzZSBpZiAodGFyZ2V0X3N0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKQorICAgICAgICBnc3RfcGxheWVyX3BsYXlfaW50ZXJuYWwgKHNlbGYpOworICAgIH0KKyAgfQorfQorCitzdGF0aWMgdm9pZAorcGxheWVyX3NldF9mbGFnIChHc3RQbGF5ZXIgKiBzZWxmLCBnaW50IHBvcykKK3sKKyAgZ2ludCBmbGFnczsKKworICBnX29iamVjdF9nZXQgKHNlbGYtPnBsYXliaW4sICJmbGFncyIsICZmbGFncywgTlVMTCk7CisgIGZsYWdzIHw9IHBvczsKKyAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAiZmxhZ3MiLCBmbGFncywgTlVMTCk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNldHRpbmcgZmxhZ3M9JSN4IiwgZmxhZ3MpOworfQorCitzdGF0aWMgdm9pZAorcGxheWVyX2NsZWFyX2ZsYWcgKEdzdFBsYXllciAqIHNlbGYsIGdpbnQgcG9zKQoreworICBnaW50IGZsYWdzOworCisgIGdfb2JqZWN0X2dldCAoc2VsZi0+cGxheWJpbiwgImZsYWdzIiwgJmZsYWdzLCBOVUxMKTsKKyAgZmxhZ3MgJj0gfnBvczsKKyAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAiZmxhZ3MiLCBmbGFncywgTlVMTCk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNldHRpbmcgZmxhZ3M9JSN4IiwgZmxhZ3MpOworfQorCit0eXBlZGVmIHN0cnVjdAoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvOworfSBNZWRpYUluZm9VcGRhdGVkU2lnbmFsRGF0YTsKKworc3RhdGljIHZvaWQKK21lZGlhX2luZm9fdXBkYXRlZF9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBNZWRpYUluZm9VcGRhdGVkU2lnbmFsRGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKKworICBpZiAoZGF0YS0+cGxheWVyLT50YXJnZXRfc3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCkgeworICAgIGdfc2lnbmFsX2VtaXQgKGRhdGEtPnBsYXllciwgc2lnbmFsc1tTSUdOQUxfTUVESUFfSU5GT19VUERBVEVEXSwgMCwKKyAgICAgICAgZGF0YS0+aW5mbyk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2ZyZWVfbWVkaWFfaW5mb191cGRhdGVkX3NpZ25hbF9kYXRhIChNZWRpYUluZm9VcGRhdGVkU2lnbmFsRGF0YSAqIGRhdGEpCit7CisgIGdfb2JqZWN0X3VucmVmIChkYXRhLT5wbGF5ZXIpOworICBnX29iamVjdF91bnJlZiAoZGF0YS0+aW5mbyk7CisgIGdfZnJlZSAoZGF0YSk7Cit9CisKKy8qCisgKiBlbWl0X21lZGlhX2luZm9fdXBkYXRlZF9zaWduYWw6CisgKgorICogY3JlYXRlIGEgbmV3IGNvcHkgb2Ygc2VsZi0+bWVkaWFfaW5mbyBvYmplY3QgYW5kIGVtaXRzIHRoZSBuZXdseSBjcmVhdGVkCisgKiBjb3B5IHRvIHVzZXIgYXBwbGljYXRpb24uIFRoZSBuZXdseSBjcmVhdGVkIG1lZGlhX2luZm8gd2lsbCBiZSB1bnJlZidlZAorICogYXMgcGFydCBvZiBzaWduYWwgZmluYWxpemUgbWV0aG9kLgorICovCitzdGF0aWMgdm9pZAorZW1pdF9tZWRpYV9pbmZvX3VwZGF0ZWRfc2lnbmFsIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBNZWRpYUluZm9VcGRhdGVkU2lnbmFsRGF0YSAqZGF0YSA9IGdfbmV3IChNZWRpYUluZm9VcGRhdGVkU2lnbmFsRGF0YSwgMSk7CisgIGRhdGEtPnBsYXllciA9IGdfb2JqZWN0X3JlZiAoc2VsZik7CisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBkYXRhLT5pbmZvID0gZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2NvcHkgKHNlbGYtPm1lZGlhX2luZm8pOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgbWVkaWFfaW5mb191cGRhdGVkX2Rpc3BhdGNoLCBkYXRhLAorICAgICAgKEdEZXN0cm95Tm90aWZ5KSBmcmVlX21lZGlhX2luZm9fdXBkYXRlZF9zaWduYWxfZGF0YSk7Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK2dldF9jYXBzIChHc3RQbGF5ZXIgKiBzZWxmLCBnaW50IHN0cmVhbV9pbmRleCwgR1R5cGUgdHlwZSkKK3sKKyAgR3N0UGFkICpwYWQgPSBOVUxMOworICBHc3RDYXBzICpjYXBzID0gTlVMTDsKKworICBpZiAodHlwZSA9PSBHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTykKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwKKyAgICAgICAgImdldC12aWRlby1wYWQiLCBzdHJlYW1faW5kZXgsICZwYWQpOworICBlbHNlIGlmICh0eXBlID09IEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPKQorICAgIGdfc2lnbmFsX2VtaXRfYnlfbmFtZSAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLAorICAgICAgICAiZ2V0LWF1ZGlvLXBhZCIsIHN0cmVhbV9pbmRleCwgJnBhZCk7CisgIGVsc2UKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwKKyAgICAgICAgImdldC10ZXh0LXBhZCIsIHN0cmVhbV9pbmRleCwgJnBhZCk7CisKKyAgaWYgKHBhZCkgeworICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKHBhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAocGFkKTsKKyAgfQorCisgIHJldHVybiBjYXBzOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9zdWJ0aXRsZV9pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogc3RyZWFtX2luZm8pCit7CisgIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqaW5mbyA9IChHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKikgc3RyZWFtX2luZm87CisKKyAgaWYgKHN0cmVhbV9pbmZvLT50YWdzKSB7CisKKyAgICAvKiBmcmVlIHRoZSBvbGQgbGFuZ3VhZ2UgaW5mbyAqLworICAgIGdfZnJlZSAoaW5mby0+bGFuZ3VhZ2UpOworICAgIGluZm8tPmxhbmd1YWdlID0gTlVMTDsKKworICAgIC8qIEZpcnN0IHRyeSB0byBnZXQgdGhlIGxhbmd1YWdlIGZ1bGwgbmFtZSBmcm9tIHRhZywgaWYgbmFtZSBpcyBub3QKKyAgICAgKiBhdmFpbGFibGUgdGhlbiB0cnkgbGFuZ3VhZ2UgY29kZS4gSWYgd2UgZmluZCB0aGUgbGFuZ3VhZ2UgY29kZQorICAgICAqIHRoZW4gdXNlIGdzdHJlYW1lciBhcGkgdG8gdHJhbnNsYXRlIGNvZGUgdG8gZnVsbCBuYW1lLgorICAgICAqLworICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nIChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19MQU5HVUFHRV9OQU1FLAorICAgICAgICAmaW5mby0+bGFuZ3VhZ2UpOworICAgIGlmICghaW5mby0+bGFuZ3VhZ2UpIHsKKyAgICAgIGdjaGFyICpsYW5nX2NvZGUgPSBOVUxMOworCisgICAgICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAoc3RyZWFtX2luZm8tPnRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwKKyAgICAgICAgICAmbGFuZ19jb2RlKTsKKyAgICAgIGlmIChsYW5nX2NvZGUpIHsKKyAgICAgICAgaW5mby0+bGFuZ3VhZ2UgPSBnX3N0cmR1cCAoZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfbmFtZSAobGFuZ19jb2RlKSk7CisgICAgICAgIGdfZnJlZSAobGFuZ19jb2RlKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBJZiB3ZSBhcmUgc3RpbGwgZmFpbGVkIHRvIGZpbmQgbGFuZ3VhZ2UgbmFtZSB0aGVuIGNoZWNrIGlmIGV4dGVybmFsCisgICAgICogc3VidGl0bGUgaXMgbG9hZGVkIGFuZCBjb21wYXJlIHRoZSBzdHJlYW0gaW5kZXggYmV0d2VlbiBjdXJyZW50IHN1YgorICAgICAqIHN0cmVhbSBpbmRleCB3aXRoIG91ciBzdHJlYW0gaW5kZXggYW5kIGlmIG1hdGNoZXMgdGhlbiBkZWNsYXJlIGl0IGFzCisgICAgICogZXh0ZXJuYWwgc3VidGl0bGUgYW5kIHVzZSB0aGUgZmlsZW5hbWUuCisgICAgICovCisgICAgaWYgKCFpbmZvLT5sYW5ndWFnZSkgeworICAgICAgZ2ludCB0ZXh0X2luZGV4ID0gLTE7CisgICAgICBnY2hhciAqc3VidXJpID0gTlVMTDsKKworICAgICAgZ19vYmplY3RfZ2V0IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksICJjdXJyZW50LXN1YnVyaSIsICZzdWJ1cmksIE5VTEwpOworICAgICAgaWYgKHN1YnVyaSkgeworICAgICAgICBnX29iamVjdF9nZXQgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwgImN1cnJlbnQtdGV4dCIsICZ0ZXh0X2luZGV4LAorICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIGlmICh0ZXh0X2luZGV4ID09IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4IChzdHJlYW1faW5mbykpCisgICAgICAgICAgaW5mby0+bGFuZ3VhZ2UgPSBnX3BhdGhfZ2V0X2Jhc2VuYW1lIChzdWJ1cmkpOworICAgICAgICBnX2ZyZWUgKHN1YnVyaSk7CisgICAgICB9CisgICAgfQorCisgIH0gZWxzZSB7CisgICAgZ19mcmVlIChpbmZvLT5sYW5ndWFnZSk7CisgICAgaW5mby0+bGFuZ3VhZ2UgPSBOVUxMOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImxhbmd1YWdlPSVzIiwgaW5mby0+bGFuZ3VhZ2UpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl92aWRlb19pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogc3RyZWFtX2luZm8pCit7CisgIEdzdFBsYXllclZpZGVvSW5mbyAqaW5mbyA9IChHc3RQbGF5ZXJWaWRlb0luZm8gKikgc3RyZWFtX2luZm87CisKKyAgaWYgKHN0cmVhbV9pbmZvLT5jYXBzKSB7CisgICAgR3N0U3RydWN0dXJlICpzOworCisgICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHN0cmVhbV9pbmZvLT5jYXBzLCAwKTsKKyAgICBpZiAocykgeworICAgICAgZ2ludCB3aWR0aCwgaGVpZ2h0OworICAgICAgZ2ludCBmcHNfbiwgZnBzX2Q7CisgICAgICBnaW50IHBhcl9uLCBwYXJfZDsKKworICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgIndpZHRoIiwgJndpZHRoKSkKKyAgICAgICAgaW5mby0+d2lkdGggPSB3aWR0aDsKKyAgICAgIGVsc2UKKyAgICAgICAgaW5mby0+d2lkdGggPSAtMTsKKworICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImhlaWdodCIsICZoZWlnaHQpKQorICAgICAgICBpbmZvLT5oZWlnaHQgPSBoZWlnaHQ7CisgICAgICBlbHNlCisgICAgICAgIGluZm8tPmhlaWdodCA9IC0xOworCisgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCAmZnBzX24sICZmcHNfZCkpIHsKKyAgICAgICAgaW5mby0+ZnJhbWVyYXRlX251bSA9IGZwc19uOworICAgICAgICBpbmZvLT5mcmFtZXJhdGVfZGVub20gPSBmcHNfZDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGluZm8tPmZyYW1lcmF0ZV9udW0gPSAwOworICAgICAgICBpbmZvLT5mcmFtZXJhdGVfZGVub20gPSAxOworICAgICAgfQorCisKKyAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbiAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIsICZwYXJfbiwgJnBhcl9kKSkgeworICAgICAgICBpbmZvLT5wYXJfbnVtID0gcGFyX247CisgICAgICAgIGluZm8tPnBhcl9kZW5vbSA9IHBhcl9kOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgaW5mby0+cGFyX251bSA9IDE7CisgICAgICAgIGluZm8tPnBhcl9kZW5vbSA9IDE7CisgICAgICB9CisgICAgfQorICB9IGVsc2UgeworICAgIGluZm8tPndpZHRoID0gaW5mby0+aGVpZ2h0ID0gLTE7CisgICAgaW5mby0+cGFyX251bSA9IGluZm8tPnBhcl9kZW5vbSA9IDE7CisgICAgaW5mby0+ZnJhbWVyYXRlX251bSA9IDA7CisgICAgaW5mby0+ZnJhbWVyYXRlX2Rlbm9tID0gMTsKKyAgfQorCisgIGlmIChzdHJlYW1faW5mby0+dGFncykgeworICAgIGd1aW50IGJpdHJhdGUsIG1heF9iaXRyYXRlOworCisgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfdWludCAoc3RyZWFtX2luZm8tPnRhZ3MsIEdTVF9UQUdfQklUUkFURSwgJmJpdHJhdGUpKQorICAgICAgaW5mby0+Yml0cmF0ZSA9IGJpdHJhdGU7CisgICAgZWxzZQorICAgICAgaW5mby0+Yml0cmF0ZSA9IC0xOworCisgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfdWludCAoc3RyZWFtX2luZm8tPnRhZ3MsIEdTVF9UQUdfTUFYSU1VTV9CSVRSQVRFLAorICAgICAgICAgICAgJm1heF9iaXRyYXRlKSB8fCBnc3RfdGFnX2xpc3RfZ2V0X3VpbnQgKHN0cmVhbV9pbmZvLT50YWdzLAorICAgICAgICAgICAgR1NUX1RBR19OT01JTkFMX0JJVFJBVEUsICZtYXhfYml0cmF0ZSkpCisgICAgICBpbmZvLT5tYXhfYml0cmF0ZSA9IG1heF9iaXRyYXRlOworICAgIGVsc2UKKyAgICAgIGluZm8tPm1heF9iaXRyYXRlID0gLTE7CisgIH0gZWxzZSB7CisgICAgaW5mby0+Yml0cmF0ZSA9IGluZm8tPm1heF9iaXRyYXRlID0gLTE7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAid2lkdGg9JWQgaGVpZ2h0PSVkIGZwcz0lLjJmIHBhcj0lZDolZCAiCisgICAgICAiYml0cmF0ZT0lZCBtYXhfYml0cmF0ZT0lZCIsIGluZm8tPndpZHRoLCBpbmZvLT5oZWlnaHQsCisgICAgICAoZ2RvdWJsZSkgaW5mby0+ZnJhbWVyYXRlX251bSAvIGluZm8tPmZyYW1lcmF0ZV9kZW5vbSwKKyAgICAgIGluZm8tPnBhcl9udW0sIGluZm8tPnBhcl9kZW5vbSwgaW5mby0+Yml0cmF0ZSwgaW5mby0+bWF4X2JpdHJhdGUpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3BsYXllcl9hdWRpb19pbmZvX3VwZGF0ZSAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICogc3RyZWFtX2luZm8pCit7CisgIEdzdFBsYXllckF1ZGlvSW5mbyAqaW5mbyA9IChHc3RQbGF5ZXJBdWRpb0luZm8gKikgc3RyZWFtX2luZm87CisKKyAgaWYgKHN0cmVhbV9pbmZvLT5jYXBzKSB7CisgICAgR3N0U3RydWN0dXJlICpzOworCisgICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHN0cmVhbV9pbmZvLT5jYXBzLCAwKTsKKyAgICBpZiAocykgeworICAgICAgZ2ludCByYXRlLCBjaGFubmVsczsKKworICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgInJhdGUiLCAmcmF0ZSkpCisgICAgICAgIGluZm8tPnNhbXBsZV9yYXRlID0gcmF0ZTsKKyAgICAgIGVsc2UKKyAgICAgICAgaW5mby0+c2FtcGxlX3JhdGUgPSAtMTsKKworICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImNoYW5uZWxzIiwgJmNoYW5uZWxzKSkKKyAgICAgICAgaW5mby0+Y2hhbm5lbHMgPSBjaGFubmVsczsKKyAgICAgIGVsc2UKKyAgICAgICAgaW5mby0+Y2hhbm5lbHMgPSAwOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBpbmZvLT5zYW1wbGVfcmF0ZSA9IC0xOworICAgIGluZm8tPmNoYW5uZWxzID0gMDsKKyAgfQorCisgIGlmIChzdHJlYW1faW5mby0+dGFncykgeworICAgIGd1aW50IGJpdHJhdGUsIG1heF9iaXRyYXRlOworCisgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfdWludCAoc3RyZWFtX2luZm8tPnRhZ3MsIEdTVF9UQUdfQklUUkFURSwgJmJpdHJhdGUpKQorICAgICAgaW5mby0+Yml0cmF0ZSA9IGJpdHJhdGU7CisgICAgZWxzZQorICAgICAgaW5mby0+Yml0cmF0ZSA9IC0xOworCisgICAgaWYgKGdzdF90YWdfbGlzdF9nZXRfdWludCAoc3RyZWFtX2luZm8tPnRhZ3MsIEdTVF9UQUdfTUFYSU1VTV9CSVRSQVRFLAorICAgICAgICAgICAgJm1heF9iaXRyYXRlKSB8fCBnc3RfdGFnX2xpc3RfZ2V0X3VpbnQgKHN0cmVhbV9pbmZvLT50YWdzLAorICAgICAgICAgICAgR1NUX1RBR19OT01JTkFMX0JJVFJBVEUsICZtYXhfYml0cmF0ZSkpCisgICAgICBpbmZvLT5tYXhfYml0cmF0ZSA9IG1heF9iaXRyYXRlOworICAgIGVsc2UKKyAgICAgIGluZm8tPm1heF9iaXRyYXRlID0gLTE7CisKKyAgICAvKiBpZiB3ZSBoYXZlIG9sZCBsYW5ndWFnZSB0aGUgZnJlZSBpdCAqLworICAgIGdfZnJlZSAoaW5mby0+bGFuZ3VhZ2UpOworICAgIGluZm8tPmxhbmd1YWdlID0gTlVMTDsKKworICAgIC8qIEZpcnN0IHRyeSB0byBnZXQgdGhlIGxhbmd1YWdlIGZ1bGwgbmFtZSBmcm9tIHRhZywgaWYgbmFtZSBpcyBub3QKKyAgICAgKiBhdmFpbGFibGUgdGhlbiB0cnkgbGFuZ3VhZ2UgY29kZS4gSWYgd2UgZmluZCB0aGUgbGFuZ3VhZ2UgY29kZQorICAgICAqIHRoZW4gdXNlIGdzdHJlYW1lciBhcGkgdG8gdHJhbnNsYXRlIGNvZGUgdG8gZnVsbCBuYW1lLgorICAgICAqLworICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nIChzdHJlYW1faW5mby0+dGFncywgR1NUX1RBR19MQU5HVUFHRV9OQU1FLAorICAgICAgICAmaW5mby0+bGFuZ3VhZ2UpOworICAgIGlmICghaW5mby0+bGFuZ3VhZ2UpIHsKKyAgICAgIGdjaGFyICpsYW5nX2NvZGUgPSBOVUxMOworCisgICAgICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAoc3RyZWFtX2luZm8tPnRhZ3MsIEdTVF9UQUdfTEFOR1VBR0VfQ09ERSwKKyAgICAgICAgICAmbGFuZ19jb2RlKTsKKyAgICAgIGlmIChsYW5nX2NvZGUpIHsKKyAgICAgICAgaW5mby0+bGFuZ3VhZ2UgPSBnX3N0cmR1cCAoZ3N0X3RhZ19nZXRfbGFuZ3VhZ2VfbmFtZSAobGFuZ19jb2RlKSk7CisgICAgICAgIGdfZnJlZSAobGFuZ19jb2RlKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSB7CisgICAgZ19mcmVlIChpbmZvLT5sYW5ndWFnZSk7CisgICAgaW5mby0+bGFuZ3VhZ2UgPSBOVUxMOworICAgIGluZm8tPm1heF9iaXRyYXRlID0gaW5mby0+Yml0cmF0ZSA9IC0xOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImxhbmd1YWdlPSVzIHJhdGU9JWQgY2hhbm5lbHM9JWQgYml0cmF0ZT0lZCAiCisgICAgICAibWF4X2JpdHJhdGU9JWQiLCBpbmZvLT5sYW5ndWFnZSwgaW5mby0+c2FtcGxlX3JhdGUsIGluZm8tPmNoYW5uZWxzLAorICAgICAgaW5mby0+Yml0cmF0ZSwgaW5mby0+Yml0cmF0ZSk7Cit9CisKK3N0YXRpYyBHc3RQbGF5ZXJTdHJlYW1JbmZvICoKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluZCAoR3N0UGxheWVyTWVkaWFJbmZvICogbWVkaWFfaW5mbywKKyAgICBHVHlwZSB0eXBlLCBnaW50IHN0cmVhbV9pbmRleCkKK3sKKyAgR0xpc3QgKmxpc3QsICpsOworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICppbmZvID0gTlVMTDsKKworICBpZiAoIW1lZGlhX2luZm8pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgbGlzdCA9IGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfc3RyZWFtX2xpc3QgKG1lZGlhX2luZm8pOworICBmb3IgKGwgPSBsaXN0OyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KSB7CisgICAgaW5mbyA9IChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGwtPmRhdGE7CisgICAgaWYgKChHX09CSkVDVF9UWVBFIChpbmZvKSA9PSB0eXBlKSAmJiAoaW5mby0+c3RyZWFtX2luZGV4ID09IHN0cmVhbV9pbmRleCkpIHsKKyAgICAgIHJldHVybiBpbmZvOworICAgIH0KKyAgfQorCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2lzX3RyYWNrX2VuYWJsZWQgKEdzdFBsYXllciAqIHNlbGYsIGdpbnQgcG9zKQoreworICBnaW50IGZsYWdzOworCisgIGdfb2JqZWN0X2dldCAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAiZmxhZ3MiLCAmZmxhZ3MsIE5VTEwpOworCisgIGlmICgoZmxhZ3MgJiBwb3MpKQorICAgIHJldHVybiBUUlVFOworCisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIEdzdFBsYXllclN0cmVhbUluZm8gKgorZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY3VycmVudCAoR3N0UGxheWVyICogc2VsZiwgY29uc3QgZ2NoYXIgKiBwcm9wLAorICAgIEdUeXBlIHR5cGUpCit7CisgIGdpbnQgY3VycmVudDsKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAqaW5mbzsKKworICBpZiAoIXNlbGYtPm1lZGlhX2luZm8pCisgICAgcmV0dXJuIE5VTEw7CisKKyAgZ19vYmplY3RfZ2V0IChHX09CSkVDVCAoc2VsZi0+cGxheWJpbiksIHByb3AsICZjdXJyZW50LCBOVUxMKTsKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGluZm8gPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2ZpbmQgKHNlbGYtPm1lZGlhX2luZm8sIHR5cGUsIGN1cnJlbnQpOworICBpZiAoaW5mbykKKyAgICBpbmZvID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19jb3B5IChpbmZvKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICByZXR1cm4gaW5mbzsKK30KKworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc3RyZWFtX2luZm9fdXBkYXRlIChHc3RQbGF5ZXIgKiBzZWxmLCBHc3RQbGF5ZXJTdHJlYW1JbmZvICogcykKK3sKKyAgaWYgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAocykpCisgICAgZ3N0X3BsYXllcl92aWRlb19pbmZvX3VwZGF0ZSAoc2VsZiwgcyk7CisgIGVsc2UgaWYgKEdTVF9JU19QTEFZRVJfQVVESU9fSU5GTyAocykpCisgICAgZ3N0X3BsYXllcl9hdWRpb19pbmZvX3VwZGF0ZSAoc2VsZiwgcyk7CisgIGVsc2UKKyAgICBnc3RfcGxheWVyX3N1YnRpdGxlX2luZm9fdXBkYXRlIChzZWxmLCBzKTsKK30KKworc3RhdGljIGdjaGFyICoKK3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoR3N0UGxheWVyU3RyZWFtSW5mbyAqIHMpCit7CisgIGNvbnN0IGdjaGFyICp0eXBlOworICBHc3RUYWdMaXN0ICp0YWdzOworICBnY2hhciAqY29kZWMgPSBOVUxMOworCisgIGlmIChHU1RfSVNfUExBWUVSX1ZJREVPX0lORk8gKHMpKQorICAgIHR5cGUgPSBHU1RfVEFHX1ZJREVPX0NPREVDOworICBlbHNlIGlmIChHU1RfSVNfUExBWUVSX0FVRElPX0lORk8gKHMpKQorICAgIHR5cGUgPSBHU1RfVEFHX0FVRElPX0NPREVDOworICBlbHNlCisgICAgdHlwZSA9IEdTVF9UQUdfU1VCVElUTEVfQ09ERUM7CisKKyAgdGFncyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3MgKHMpOworICBpZiAodGFncykgeworICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCB0eXBlLCAmY29kZWMpOworICAgIGlmICghY29kZWMpCisgICAgICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAodGFncywgR1NUX1RBR19DT0RFQywgJmNvZGVjKTsKKyAgfQorCisgIGlmICghY29kZWMpIHsKKyAgICBHc3RDYXBzICpjYXBzOworICAgIGNhcHMgPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzIChzKTsKKyAgICBpZiAoY2FwcykgeworICAgICAgY29kZWMgPSBnc3RfcGJfdXRpbHNfZ2V0X2NvZGVjX2Rlc2NyaXB0aW9uIChjYXBzKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gY29kZWM7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N0cmVhbV9pbmZvX3VwZGF0ZV90YWdzX2FuZF9jYXBzIChHc3RQbGF5ZXIgKiBzZWxmLAorICAgIEdzdFBsYXllclN0cmVhbUluZm8gKiBzKQoreworICBHc3RUYWdMaXN0ICp0YWdzOworICBnaW50IHN0cmVhbV9pbmRleDsKKworICBzdHJlYW1faW5kZXggPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9pbmRleCAocyk7CisKKyAgaWYgKEdTVF9JU19QTEFZRVJfVklERU9fSU5GTyAocykpCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lIChzZWxmLT5wbGF5YmluLCAiZ2V0LXZpZGVvLXRhZ3MiLAorICAgICAgICBzdHJlYW1faW5kZXgsICZ0YWdzKTsKKyAgZWxzZSBpZiAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChzKSkKKyAgICBnX3NpZ25hbF9lbWl0X2J5X25hbWUgKHNlbGYtPnBsYXliaW4sICJnZXQtYXVkaW8tdGFncyIsCisgICAgICAgIHN0cmVhbV9pbmRleCwgJnRhZ3MpOworICBlbHNlCisgICAgZ19zaWduYWxfZW1pdF9ieV9uYW1lIChzZWxmLT5wbGF5YmluLCAiZ2V0LXRleHQtdGFncyIsIHN0cmVhbV9pbmRleCwgJnRhZ3MpOworCisgIGlmIChzLT50YWdzKQorICAgIGdzdF90YWdfbGlzdF91bnJlZiAocy0+dGFncyk7CisgIHMtPnRhZ3MgPSB0YWdzOworCisgIGlmIChzLT5jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChzLT5jYXBzKTsKKyAgcy0+Y2FwcyA9IGdldF9jYXBzIChzZWxmLCBzdHJlYW1faW5kZXgsIEdfT0JKRUNUX1RZUEUgKHMpKTsKKworICBnX2ZyZWUgKHMtPmNvZGVjKTsKKyAgcy0+Y29kZWMgPSBzdHJlYW1faW5mb19nZXRfY29kZWMgKHMpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICIlcyBpbmRleDogJWQgdGFnczogJXAgY2FwczogJXAiLAorICAgICAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfc3RyZWFtX3R5cGUgKHMpLCBzdHJlYW1faW5kZXgsCisgICAgICBzLT50YWdzLCBzLT5jYXBzKTsKKworICBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX3VwZGF0ZSAoc2VsZiwgcyk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfcGxheWVyX3N0cmVhbXNfaW5mb19jcmVhdGUgKEdzdFBsYXllciAqIHNlbGYsCisgICAgR3N0UGxheWVyTWVkaWFJbmZvICogbWVkaWFfaW5mbywgY29uc3QgZ2NoYXIgKiBwcm9wLCBHVHlwZSB0eXBlKQoreworICBnaW50IGk7CisgIGdpbnQgdG90YWwgPSAtMTsKKyAgR3N0UGxheWVyU3RyZWFtSW5mbyAqczsKKworICBpZiAoIW1lZGlhX2luZm8pCisgICAgcmV0dXJuOworCisgIGdfb2JqZWN0X2dldCAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCBwcm9wLCAmdG90YWwsIE5VTEwpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICIlczogJWQiLCBwcm9wLCB0b3RhbCk7CisKKyAgZm9yIChpID0gMDsgaSA8IHRvdGFsOyBpKyspIHsKKyAgICAvKiBjaGVjayBpZiBzdHJlYW0gYWxyZWFkeSBleGlzdCBpbiB0aGUgbGlzdCAqLworICAgIHMgPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2ZpbmQgKG1lZGlhX2luZm8sIHR5cGUsIGkpOworCisgICAgaWYgKCFzKSB7CisgICAgICAvKiBjcmVhdGUgYSBuZXcgc3RyZWFtIGluZm8gaW5zdGFuY2UgKi8KKyAgICAgIHMgPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX25ldyAoaSwgdHlwZSk7CisKKyAgICAgIC8qIGFkZCB0aGUgb2JqZWN0IGluIHN0cmVhbSBsaXN0ICovCisgICAgICBtZWRpYV9pbmZvLT5zdHJlYW1fbGlzdCA9IGdfbGlzdF9hcHBlbmQgKG1lZGlhX2luZm8tPnN0cmVhbV9saXN0LCBzKTsKKworICAgICAgLyogYmFzZWQgb24gdHlwZSwgYWRkIHRoZSBvYmplY3QgaW4gaXRzIGNvcnJlc3BvbmRpbmcgc3RyZWFtXyBsaXN0ICovCisgICAgICBpZiAoR1NUX0lTX1BMQVlFUl9BVURJT19JTkZPIChzKSkKKyAgICAgICAgbWVkaWFfaW5mby0+YXVkaW9fc3RyZWFtX2xpc3QgPSBnX2xpc3RfYXBwZW5kCisgICAgICAgICAgICAobWVkaWFfaW5mby0+YXVkaW9fc3RyZWFtX2xpc3QsIHMpOworICAgICAgZWxzZSBpZiAoR1NUX0lTX1BMQVlFUl9WSURFT19JTkZPIChzKSkKKyAgICAgICAgbWVkaWFfaW5mby0+dmlkZW9fc3RyZWFtX2xpc3QgPSBnX2xpc3RfYXBwZW5kCisgICAgICAgICAgICAobWVkaWFfaW5mby0+dmlkZW9fc3RyZWFtX2xpc3QsIHMpOworICAgICAgZWxzZQorICAgICAgICBtZWRpYV9pbmZvLT5zdWJ0aXRsZV9zdHJlYW1fbGlzdCA9IGdfbGlzdF9hcHBlbmQKKyAgICAgICAgICAgIChtZWRpYV9pbmZvLT5zdWJ0aXRsZV9zdHJlYW1fbGlzdCwgcyk7CisKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJjcmVhdGUgJXMgc3RyZWFtIHN0cmVhbV9pbmRleDogJWQiLAorICAgICAgICAgIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3N0cmVhbV90eXBlIChzKSwgaSk7CisgICAgfQorCisgICAgZ3N0X3BsYXllcl9zdHJlYW1faW5mb191cGRhdGVfdGFnc19hbmRfY2FwcyAoc2VsZiwgcyk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3ZpZGVvX2NoYW5nZWRfY2IgKEdfR05VQ19VTlVTRUQgR09iamVjdCAqIG9iamVjdCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBnc3RfcGxheWVyX3N0cmVhbXNfaW5mb19jcmVhdGUgKHNlbGYsIHNlbGYtPm1lZGlhX2luZm8sCisgICAgICAibi12aWRlbyIsIEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK2F1ZGlvX2NoYW5nZWRfY2IgKEdfR05VQ19VTlVTRUQgR09iamVjdCAqIG9iamVjdCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBnc3RfcGxheWVyX3N0cmVhbXNfaW5mb19jcmVhdGUgKHNlbGYsIHNlbGYtPm1lZGlhX2luZm8sCisgICAgICAibi1hdWRpbyIsIEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK3N1YnRpdGxlX2NoYW5nZWRfY2IgKEdfR05VQ19VTlVTRUQgR09iamVjdCAqIG9iamVjdCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBnc3RfcGxheWVyX3N0cmVhbXNfaW5mb19jcmVhdGUgKHNlbGYsIHNlbGYtPm1lZGlhX2luZm8sCisgICAgICAibi10ZXh0IiwgR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8pOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworfQorCitzdGF0aWMgdm9pZCAqCitnZXRfdGl0bGUgKEdzdFRhZ0xpc3QgKiB0YWdzKQoreworICBnY2hhciAqdGl0bGUgPSBOVUxMOworCisgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX1RJVExFLCAmdGl0bGUpOworICBpZiAoIXRpdGxlKQorICAgIGdzdF90YWdfbGlzdF9nZXRfc3RyaW5nICh0YWdzLCBHU1RfVEFHX1RJVExFX1NPUlROQU1FLCAmdGl0bGUpOworCisgIHJldHVybiB0aXRsZTsKK30KKworc3RhdGljIHZvaWQgKgorZ2V0X2NvbnRhaW5lcl9mb3JtYXQgKEdzdFRhZ0xpc3QgKiB0YWdzKQoreworICBnY2hhciAqY29udGFpbmVyID0gTlVMTDsKKworICBnc3RfdGFnX2xpc3RfZ2V0X3N0cmluZyAodGFncywgR1NUX1RBR19DT05UQUlORVJfRk9STUFULCAmY29udGFpbmVyKTsKKworICAvKiBUT0RPOiBJZiBjb250YWluZXIgaXMgbm90IGF2YWlsYWJsZSB0aGVuIG1heWJlIGNvbnNpZGVyCisgICAqIHBhcnNpbmcgY2FwcyBvciBmaWxlIGV4dGVuc2lvbiB0byBndWVzcyB0aGUgY29udGFpbmVyIGZvcm1hdC4KKyAgICovCisKKyAgcmV0dXJuIGNvbnRhaW5lcjsKK30KKworc3RhdGljIHZvaWQgKgorZ2V0X2Zyb21fdGFncyAoR3N0UGxheWVyICogc2VsZiwgR3N0UGxheWVyTWVkaWFJbmZvICogbWVkaWFfaW5mbywKKyAgICB2b2lkICooKmZ1bmMpIChHc3RUYWdMaXN0ICopKQoreworICBHTGlzdCAqbDsKKyAgdm9pZCAqcmV0ID0gTlVMTDsKKworICBpZiAobWVkaWFfaW5mby0+dGFncykgeworICAgIHJldCA9IGZ1bmMgKG1lZGlhX2luZm8tPnRhZ3MpOworICAgIGlmIChyZXQpCisgICAgICByZXR1cm4gcmV0OworICB9CisKKyAgLyogaWYgZ2xvYmFsIHRhZyBkb2VzIG5vdCBleGl0IHRoZW4gdHJ5IHZpZGVvIGFuZCBhdWRpbyBzdHJlYW1zICovCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJ0cnlpbmcgdmlkZW8gdGFncyIpOworICBmb3IgKGwgPSBnc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zIChtZWRpYV9pbmZvKTsgbCAhPSBOVUxMOyBsID0gbC0+bmV4dCkgeworICAgIEdzdFRhZ0xpc3QgKnRhZ3M7CisKKyAgICB0YWdzID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFncyAoKEdzdFBsYXllclN0cmVhbUluZm8gKikgbC0+ZGF0YSk7CisgICAgaWYgKHRhZ3MpCisgICAgICByZXQgPSBmdW5jICh0YWdzKTsKKworICAgIGlmIChyZXQpCisgICAgICByZXR1cm4gcmV0OworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInRyeWluZyBhdWRpbyB0YWdzIik7CisgIGZvciAobCA9IGdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXMgKG1lZGlhX2luZm8pOyBsICE9IE5VTEw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0VGFnTGlzdCAqdGFnczsKKworICAgIHRhZ3MgPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzICgoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSBsLT5kYXRhKTsKKyAgICBpZiAodGFncykKKyAgICAgIHJldCA9IGZ1bmMgKHRhZ3MpOworCisgICAgaWYgKHJldCkKKyAgICAgIHJldHVybiByZXQ7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiZmFpbGVkIHRvIGdldCB0aGUgaW5mb3JtYXRpb24gZnJvbSB0YWdzIik7CisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgdm9pZCAqCitnZXRfY292ZXJfc2FtcGxlIChHc3RUYWdMaXN0ICogdGFncykKK3sKKyAgR3N0U2FtcGxlICpjb3Zlcl9zYW1wbGUgPSBOVUxMOworCisgIGdzdF90YWdfbGlzdF9nZXRfc2FtcGxlICh0YWdzLCBHU1RfVEFHX0lNQUdFLCAmY292ZXJfc2FtcGxlKTsKKyAgaWYgKCFjb3Zlcl9zYW1wbGUpCisgICAgZ3N0X3RhZ19saXN0X2dldF9zYW1wbGUgKHRhZ3MsIEdTVF9UQUdfUFJFVklFV19JTUFHRSwgJmNvdmVyX3NhbXBsZSk7CisKKyAgcmV0dXJuIGNvdmVyX3NhbXBsZTsKK30KKworc3RhdGljIEdzdFBsYXllck1lZGlhSW5mbyAqCitnc3RfcGxheWVyX21lZGlhX2luZm9fY3JlYXRlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RQbGF5ZXJNZWRpYUluZm8gKm1lZGlhX2luZm87CisgIEdzdFF1ZXJ5ICpxdWVyeTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiYmVnaW4iKTsKKyAgbWVkaWFfaW5mbyA9IGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19uZXcgKHNlbGYtPnVyaSk7CisgIG1lZGlhX2luZm8tPmR1cmF0aW9uID0gZ3N0X3BsYXllcl9nZXRfZHVyYXRpb24gKHNlbGYpOworICBtZWRpYV9pbmZvLT50YWdzID0gc2VsZi0+Z2xvYmFsX3RhZ3M7CisgIHNlbGYtPmdsb2JhbF90YWdzID0gTlVMTDsKKworICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfc2Vla2luZyAoR1NUX0ZPUk1BVF9USU1FKTsKKyAgaWYgKGdzdF9lbGVtZW50X3F1ZXJ5IChzZWxmLT5wbGF5YmluLCBxdWVyeSkpCisgICAgZ3N0X3F1ZXJ5X3BhcnNlX3NlZWtpbmcgKHF1ZXJ5LCBOVUxMLCAmbWVkaWFfaW5mby0+c2Vla2FibGUsIE5VTEwsIE5VTEwpOworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICAvKiBjcmVhdGUgYXVkaW8vdmlkZW8vc3ViIHN0cmVhbXMgKi8KKyAgZ3N0X3BsYXllcl9zdHJlYW1zX2luZm9fY3JlYXRlIChzZWxmLCBtZWRpYV9pbmZvLCAibi12aWRlbyIsCisgICAgICBHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTyk7CisgIGdzdF9wbGF5ZXJfc3RyZWFtc19pbmZvX2NyZWF0ZSAoc2VsZiwgbWVkaWFfaW5mbywgIm4tYXVkaW8iLAorICAgICAgR1NUX1RZUEVfUExBWUVSX0FVRElPX0lORk8pOworICBnc3RfcGxheWVyX3N0cmVhbXNfaW5mb19jcmVhdGUgKHNlbGYsIG1lZGlhX2luZm8sICJuLXRleHQiLAorICAgICAgR1NUX1RZUEVfUExBWUVSX1NVQlRJVExFX0lORk8pOworCisgIG1lZGlhX2luZm8tPnRpdGxlID0gZ2V0X2Zyb21fdGFncyAoc2VsZiwgbWVkaWFfaW5mbywgZ2V0X3RpdGxlKTsKKyAgbWVkaWFfaW5mby0+Y29udGFpbmVyID0KKyAgICAgIGdldF9mcm9tX3RhZ3MgKHNlbGYsIG1lZGlhX2luZm8sIGdldF9jb250YWluZXJfZm9ybWF0KTsKKyAgbWVkaWFfaW5mby0+aW1hZ2Vfc2FtcGxlID0gZ2V0X2Zyb21fdGFncyAoc2VsZiwgbWVkaWFfaW5mbywgZ2V0X2NvdmVyX3NhbXBsZSk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInVyaTogJXMgdGl0bGU6ICVzIGR1cmF0aW9uOiAlIiBHU1RfVElNRV9GT1JNQVQKKyAgICAgICIgc2Vla2FibGU6ICVzIGNvbnRhaW5lcjogJXMgaW1hZ2Vfc2FtcGxlICVwIiwKKyAgICAgIG1lZGlhX2luZm8tPnVyaSwgbWVkaWFfaW5mby0+dGl0bGUsIEdTVF9USU1FX0FSR1MgKG1lZGlhX2luZm8tPmR1cmF0aW9uKSwKKyAgICAgIG1lZGlhX2luZm8tPnNlZWthYmxlID8gInllcyIgOiAibm8iLCBtZWRpYV9pbmZvLT5jb250YWluZXIsCisgICAgICBtZWRpYV9pbmZvLT5pbWFnZV9zYW1wbGUpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJlbmQiKTsKKyAgcmV0dXJuIG1lZGlhX2luZm87Cit9CisKK3N0YXRpYyB2b2lkCit0YWdzX2NoYW5nZWRfY2IgKEdzdFBsYXllciAqIHNlbGYsIGdpbnQgc3RyZWFtX2luZGV4LCBHVHlwZSB0eXBlKQoreworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICpzOworCisgIGlmICghc2VsZi0+bWVkaWFfaW5mbykKKyAgICByZXR1cm47CisKKyAgLyogdXBkYXRlIHRoZSBzdHJlYW0gaW5mb3JtYXRpb24gKi8KKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIHMgPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2ZpbmQgKHNlbGYtPm1lZGlhX2luZm8sIHR5cGUsIHN0cmVhbV9pbmRleCk7CisgIGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fdXBkYXRlX3RhZ3NfYW5kX2NhcHMgKHNlbGYsIHMpOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIGVtaXRfbWVkaWFfaW5mb191cGRhdGVkX3NpZ25hbCAoc2VsZik7Cit9CisKK3N0YXRpYyB2b2lkCit2aWRlb190YWdzX2NoYW5nZWRfY2IgKEdfR05VQ19VTlVTRUQgR3N0RWxlbWVudCAqIHBsYXliaW4sIGdpbnQgc3RyZWFtX2luZGV4LAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgdGFnc19jaGFuZ2VkX2NiIChHU1RfUExBWUVSICh1c2VyX2RhdGEpLCBzdHJlYW1faW5kZXgsCisgICAgICBHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTyk7Cit9CisKK3N0YXRpYyB2b2lkCithdWRpb190YWdzX2NoYW5nZWRfY2IgKEdfR05VQ19VTlVTRUQgR3N0RWxlbWVudCAqIHBsYXliaW4sIGdpbnQgc3RyZWFtX2luZGV4LAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgdGFnc19jaGFuZ2VkX2NiIChHU1RfUExBWUVSICh1c2VyX2RhdGEpLCBzdHJlYW1faW5kZXgsCisgICAgICBHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTyk7Cit9CisKK3N0YXRpYyB2b2lkCitzdWJ0aXRsZV90YWdzX2NoYW5nZWRfY2IgKEdfR05VQ19VTlVTRUQgR3N0RWxlbWVudCAqIHBsYXliaW4sIGdpbnQgc3RyZWFtX2luZGV4LAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgdGFnc19jaGFuZ2VkX2NiIChHU1RfUExBWUVSICh1c2VyX2RhdGEpLCBzdHJlYW1faW5kZXgsCisgICAgICBHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTyk7Cit9CisKK3N0YXRpYyB2b2lkCit2b2x1bWVfY2hhbmdlZF9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBnX3NpZ25hbF9lbWl0ICh1c2VyX2RhdGEsIHNpZ25hbHNbU0lHTkFMX1ZPTFVNRV9DSEFOR0VEXSwgMCk7CisgIGdfb2JqZWN0X25vdGlmeV9ieV9wc3BlYyAoR19PQkpFQ1QgKHVzZXJfZGF0YSksIHBhcmFtX3NwZWNzW1BST1BfVk9MVU1FXSk7Cit9CisKK3N0YXRpYyB2b2lkCit2b2x1bWVfbm90aWZ5X2NiIChHX0dOVUNfVU5VU0VEIEdPYmplY3QgKiBvYmosIEdfR05VQ19VTlVTRUQgR1BhcmFtU3BlYyAqIHBzcGVjLAorICAgIEdzdFBsYXllciAqIHNlbGYpCit7CisgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX1ZPTFVNRV9DSEFOR0VEXSwgMCwgTlVMTCwgTlVMTCwgTlVMTCkgIT0gMCkgeworICAgIGdzdF9wbGF5ZXJfc2lnbmFsX2Rpc3BhdGNoZXJfZGlzcGF0Y2ggKHNlbGYtPnNpZ25hbF9kaXNwYXRjaGVyLCBzZWxmLAorICAgICAgICB2b2x1bWVfY2hhbmdlZF9kaXNwYXRjaCwgZ19vYmplY3RfcmVmIChzZWxmKSwKKyAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnX29iamVjdF91bnJlZik7CisgIH0KK30KKworc3RhdGljIHZvaWQKK211dGVfY2hhbmdlZF9kaXNwYXRjaCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBnX3NpZ25hbF9lbWl0ICh1c2VyX2RhdGEsIHNpZ25hbHNbU0lHTkFMX01VVEVfQ0hBTkdFRF0sIDApOworICBnX29iamVjdF9ub3RpZnlfYnlfcHNwZWMgKEdfT0JKRUNUICh1c2VyX2RhdGEpLCBwYXJhbV9zcGVjc1tQUk9QX01VVEVdKTsKK30KKworc3RhdGljIHZvaWQKK211dGVfbm90aWZ5X2NiIChHX0dOVUNfVU5VU0VEIEdPYmplY3QgKiBvYmosIEdfR05VQ19VTlVTRUQgR1BhcmFtU3BlYyAqIHBzcGVjLAorICAgIEdzdFBsYXllciAqIHNlbGYpCit7CisgIGlmIChnX3NpZ25hbF9oYW5kbGVyX2ZpbmQgKHNlbGYsIEdfU0lHTkFMX01BVENIX0lELAorICAgICAgICAgIHNpZ25hbHNbU0lHTkFMX01VVEVfQ0hBTkdFRF0sIDAsIE5VTEwsIE5VTEwsIE5VTEwpICE9IDApIHsKKyAgICBnc3RfcGxheWVyX3NpZ25hbF9kaXNwYXRjaGVyX2Rpc3BhdGNoIChzZWxmLT5zaWduYWxfZGlzcGF0Y2hlciwgc2VsZiwKKyAgICAgICAgbXV0ZV9jaGFuZ2VkX2Rpc3BhdGNoLCBnX29iamVjdF9yZWYgKHNlbGYpLAorICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdfb2JqZWN0X3VucmVmKTsKKyAgfQorfQorCitzdGF0aWMgZ3BvaW50ZXIKK2dzdF9wbGF5ZXJfbWFpbiAoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAoZGF0YSk7CisgIEdzdEJ1cyAqYnVzOworICBHU291cmNlICpzb3VyY2U7CisgIEdTb3VyY2UgKmJ1c19zb3VyY2U7CisgIEdzdEVsZW1lbnQgKnNjYWxldGVtcG87CisKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgIlN0YXJ0aW5nIG1haW4gdGhyZWFkIik7CisKKyAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAoc2VsZi0+Y29udGV4dCk7CisKKyAgc291cmNlID0gZ19pZGxlX3NvdXJjZV9uZXcgKCk7CisgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc291cmNlLCAoR1NvdXJjZUZ1bmMpIG1haW5fbG9vcF9ydW5uaW5nX2NiLCBzZWxmLAorICAgICAgTlVMTCk7CisgIGdfc291cmNlX2F0dGFjaCAoc291cmNlLCBzZWxmLT5jb250ZXh0KTsKKyAgZ19zb3VyY2VfdW5yZWYgKHNvdXJjZSk7CisKKyAgc2VsZi0+cGxheWJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoInBsYXliaW4iLCAicGxheWJpbiIpOworCisgIGlmIChzZWxmLT52aWRlb19yZW5kZXJlcikgeworICAgIEdzdEVsZW1lbnQgKnZpZGVvX3NpbmsgPQorICAgICAgICBnc3RfcGxheWVyX3ZpZGVvX3JlbmRlcmVyX2NyZWF0ZV92aWRlb19zaW5rIChzZWxmLT52aWRlb19yZW5kZXJlciwKKyAgICAgICAgc2VsZik7CisKKyAgICBpZiAodmlkZW9fc2luaykKKyAgICAgIGdfb2JqZWN0X3NldCAoc2VsZi0+cGxheWJpbiwgInZpZGVvLXNpbmsiLCB2aWRlb19zaW5rLCBOVUxMKTsKKyAgfQorCisgIHNjYWxldGVtcG8gPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJzY2FsZXRlbXBvIiwgTlVMTCk7CisgIGlmIChzY2FsZXRlbXBvKSB7CisgICAgaWYgKGdzdF9wbHVnaW5fZmVhdHVyZV9jaGVja192ZXJzaW9uIChHU1RfUExVR0lOX0ZFQVRVUkUKKyAgICAgICAgICAgIChnc3RfZWxlbWVudF9nZXRfZmFjdG9yeSAoc2NhbGV0ZW1wbykpLCAxLCA2LCAxKSkgeworICAgICAgZ19vYmplY3Rfc2V0IChzZWxmLT5wbGF5YmluLCAiYXVkaW8tZmlsdGVyIiwgc2NhbGV0ZW1wbywgTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHNjYWxldGVtcG8pOworICAgICAgZ193YXJuaW5nICgiR3N0UGxheWVyOiBzY2FsZXRlbXBvID49IDEuNi4xIGlzIG5lZWRlZCBmb3IgcHJlc2VydmluZyAiCisgICAgICAgICAgImF1ZGlvIHBpdGNoIGR1cmluZyB0cmljayBtb2RlcyIpOworICAgIH0KKyAgfSBlbHNlIHsKKyAgICBnX3dhcm5pbmcgKCJHc3RQbGF5ZXI6IHNjYWxldGVtcG8gZWxlbWVudCBub3QgYXZhaWxhYmxlLiBBdWRpbyBwaXRjaCAiCisgICAgICAgICJ3aWxsIG5vdCBiZSBwcmVzZXJ2ZWQgZHVyaW5nIHRyaWNrIG1vZGVzIik7CisgIH0KKworICBzZWxmLT5idXMgPSBidXMgPSBnc3RfZWxlbWVudF9nZXRfYnVzIChzZWxmLT5wbGF5YmluKTsKKyAgYnVzX3NvdXJjZSA9IGdzdF9idXNfY3JlYXRlX3dhdGNoIChidXMpOworICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sgKGJ1c19zb3VyY2UsIChHU291cmNlRnVuYykgZ3N0X2J1c19hc3luY19zaWduYWxfZnVuYywKKyAgICAgIE5VTEwsIE5VTEwpOworICBnX3NvdXJjZV9hdHRhY2ggKGJ1c19zb3VyY2UsIHNlbGYtPmNvbnRleHQpOworCisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6ZXJyb3IiLCBHX0NBTExCQUNLIChlcnJvcl9jYiksCisgICAgICBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjp3YXJuaW5nIiwgR19DQUxMQkFDSyAod2FybmluZ19jYiksCisgICAgICBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjplb3MiLCBHX0NBTExCQUNLIChlb3NfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjpzdGF0ZS1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHN0YXRlX2NoYW5nZWRfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoR19PQkpFQ1QgKGJ1cyksICJtZXNzYWdlOjpidWZmZXJpbmciLAorICAgICAgR19DQUxMQkFDSyAoYnVmZmVyaW5nX2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6Y2xvY2stbG9zdCIsCisgICAgICBHX0NBTExCQUNLIChjbG9ja19sb3N0X2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6ZHVyYXRpb24tY2hhbmdlZCIsCisgICAgICBHX0NBTExCQUNLIChkdXJhdGlvbl9jaGFuZ2VkX2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6bGF0ZW5jeSIsCisgICAgICBHX0NBTExCQUNLIChsYXRlbmN5X2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6cmVxdWVzdC1zdGF0ZSIsCisgICAgICBHX0NBTExCQUNLIChyZXF1ZXN0X3N0YXRlX2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6ZWxlbWVudCIsCisgICAgICBHX0NBTExCQUNLIChlbGVtZW50X2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKEdfT0JKRUNUIChidXMpLCAibWVzc2FnZTo6dGFnIiwgR19DQUxMQkFDSyAodGFnc19jYiksIHNlbGYpOworCisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlbGYtPnBsYXliaW4sICJ2aWRlby1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2NoYW5nZWRfY2IpLCBzZWxmKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoc2VsZi0+cGxheWJpbiwgImF1ZGlvLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAoYXVkaW9fY2hhbmdlZF9jYiksIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChzZWxmLT5wbGF5YmluLCAidGV4dC1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHN1YnRpdGxlX2NoYW5nZWRfY2IpLCBzZWxmKTsKKworICBnX3NpZ25hbF9jb25uZWN0IChzZWxmLT5wbGF5YmluLCAidmlkZW8tdGFncy1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX3RhZ3NfY2hhbmdlZF9jYiksIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChzZWxmLT5wbGF5YmluLCAiYXVkaW8tdGFncy1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKGF1ZGlvX3RhZ3NfY2hhbmdlZF9jYiksIHNlbGYpOworICBnX3NpZ25hbF9jb25uZWN0IChzZWxmLT5wbGF5YmluLCAidGV4dC10YWdzLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAoc3VidGl0bGVfdGFnc19jaGFuZ2VkX2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlbGYtPnBsYXliaW4sICJub3RpZnk6OnZvbHVtZSIsCisgICAgICBHX0NBTExCQUNLICh2b2x1bWVfbm90aWZ5X2NiKSwgc2VsZik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNlbGYtPnBsYXliaW4sICJub3RpZnk6Om11dGUiLAorICAgICAgR19DQUxMQkFDSyAobXV0ZV9ub3RpZnlfY2IpLCBzZWxmKTsKKworICBzZWxmLT50YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgc2VsZi0+Y3VycmVudF9zdGF0ZSA9IEdTVF9TVEFURV9OVUxMOworICBjaGFuZ2Vfc3RhdGUgKHNlbGYsIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCk7CisgIHNlbGYtPmJ1ZmZlcmluZyA9IDEwMDsKKyAgc2VsZi0+aXNfZW9zID0gRkFMU0U7CisgIHNlbGYtPmlzX2xpdmUgPSBGQUxTRTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChzZWxmLCAiU3RhcnRpbmcgbWFpbiBsb29wIik7CisgIGdfbWFpbl9sb29wX3J1biAoc2VsZi0+bG9vcCk7CisgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJTdG9wcGVkIG1haW4gbG9vcCIpOworCisgIGdfc291cmNlX2Rlc3Ryb3kgKGJ1c19zb3VyY2UpOworICBnX3NvdXJjZV91bnJlZiAoYnVzX3NvdXJjZSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGJ1cyk7CisKKyAgcmVtb3ZlX3RpY2tfc291cmNlIChzZWxmKTsKKyAgcmVtb3ZlX3JlYWR5X3RpbWVvdXRfc291cmNlIChzZWxmKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaWYgKHNlbGYtPm1lZGlhX2luZm8pIHsKKyAgICBnX29iamVjdF91bnJlZiAoc2VsZi0+bWVkaWFfaW5mbyk7CisgICAgc2VsZi0+bWVkaWFfaW5mbyA9IE5VTEw7CisgIH0KKworICBpZiAoc2VsZi0+c2Vla19zb3VyY2UpCisgICAgZ19zb3VyY2VfdW5yZWYgKHNlbGYtPnNlZWtfc291cmNlKTsKKyAgc2VsZi0+c2Vla19zb3VyY2UgPSBOVUxMOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIGdfbWFpbl9jb250ZXh0X3BvcF90aHJlYWRfZGVmYXVsdCAoc2VsZi0+Y29udGV4dCk7CisKKyAgc2VsZi0+dGFyZ2V0X3N0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgIHNlbGYtPmN1cnJlbnRfc3RhdGUgPSBHU1RfU1RBVEVfTlVMTDsKKyAgaWYgKHNlbGYtPnBsYXliaW4pIHsKKyAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9OVUxMKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT5wbGF5YmluKTsKKyAgICBzZWxmLT5wbGF5YmluID0gTlVMTDsKKyAgfQorCisgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJTdG9wcGVkIG1haW4gdGhyZWFkIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorZ3N0X3BsYXllcl9pbml0X29uY2UgKEdfR05VQ19VTlVTRUQgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBnc3RfaW5pdCAoTlVMTCwgTlVMTCk7CisKKyAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9wbGF5ZXJfZGVidWcsICJnc3QtcGxheWVyIiwgMCwgIkdzdFBsYXllciIpOworICBnc3RfcGxheWVyX2Vycm9yX3F1YXJrICgpOworCisgIHJldHVybiBOVUxMOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfbmV3OgorICogQHZpZGVvX3JlbmRlcmVyOiAodHJhbnNmZXIgZnVsbCkgKGFsbG93LW5vbmUpOiBHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyIHRvIHVzZQorICogQHNpZ25hbF9kaXNwYXRjaGVyOiAodHJhbnNmZXIgZnVsbCkgKGFsbG93LW5vbmUpOiBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyIHRvIHVzZQorICoKKyAqIENyZWF0ZXMgYSBuZXcgI0dzdFBsYXllciBpbnN0YW5jZSB0aGF0IHVzZXMgQHNpZ25hbF9kaXNwYXRjaGVyIHRvIGRpc3BhdGNoCisgKiBzaWduYWxzIHRvIHNvbWUgZXZlbnQgbG9vcCBzeXN0ZW0sIG9yIGVtaXRzIHNpZ25hbHMgZGlyZWN0bHkgaWYgTlVMTCBpcworICogcGFzc2VkLiBTZWUgZ3N0X3BsYXllcl9nX21haW5fY29udGV4dF9zaWduYWxfZGlzcGF0Y2hlcl9uZXcoKS4KKyAqCisgKiBWaWRlbyBpcyBnb2luZyB0byBiZSByZW5kZXJlZCBieSBAdmlkZW9fcmVuZGVyZXIsIG9yIGlmICVOVUxMIGlzIHByb3ZpZGVkCisgKiBubyBzcGVjaWFsIHZpZGVvIHNldCB1cCB3aWxsIGJlIGRvbmUgYW5kIHNvbWUgZGVmYXVsdCBoYW5kbGluZyB3aWxsIGJlCisgKiBwZXJmb3JtZWQuCisgKgorICogUmV0dXJuczogYSBuZXcgI0dzdFBsYXllciBpbnN0YW5jZQorICovCitHc3RQbGF5ZXIgKgorZ3N0X3BsYXllcl9uZXcgKEdzdFBsYXllclZpZGVvUmVuZGVyZXIgKiB2aWRlb19yZW5kZXJlciwKKyAgICBHc3RQbGF5ZXJTaWduYWxEaXNwYXRjaGVyICogc2lnbmFsX2Rpc3BhdGNoZXIpCit7CisgIHN0YXRpYyBHT25jZSBvbmNlID0gR19PTkNFX0lOSVQ7CisgIEdzdFBsYXllciAqc2VsZjsKKworICBnX29uY2UgKCZvbmNlLCBnc3RfcGxheWVyX2luaXRfb25jZSwgTlVMTCk7CisKKyAgc2VsZiA9CisgICAgICBnX29iamVjdF9uZXcgKEdTVF9UWVBFX1BMQVlFUiwgInZpZGVvLXJlbmRlcmVyIiwgdmlkZW9fcmVuZGVyZXIsCisgICAgICAic2lnbmFsLWRpc3BhdGNoZXIiLCBzaWduYWxfZGlzcGF0Y2hlciwgTlVMTCk7CisKKyAgaWYgKHZpZGVvX3JlbmRlcmVyKQorICAgIGdfb2JqZWN0X3VucmVmICh2aWRlb19yZW5kZXJlcik7CisgIGlmIChzaWduYWxfZGlzcGF0Y2hlcikKKyAgICBnX29iamVjdF91bnJlZiAoc2lnbmFsX2Rpc3BhdGNoZXIpOworCisgIHJldHVybiBzZWxmOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfcGxheV9pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXQ7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlBsYXkiKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaWYgKCFzZWxmLT51cmkpIHsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICByZW1vdmVfcmVhZHlfdGltZW91dF9zb3VyY2UgKHNlbGYpOworICBzZWxmLT50YXJnZXRfc3RhdGUgPSBHU1RfU1RBVEVfUExBWUlORzsKKworICBpZiAoc2VsZi0+Y3VycmVudF9zdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQpCisgICAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyk7CisKKyAgaWYgKHNlbGYtPmN1cnJlbnRfc3RhdGUgPj0gR1NUX1NUQVRFX1BBVVNFRCAmJiAhc2VsZi0+aXNfZW9zCisgICAgICAmJiBzZWxmLT5idWZmZXJpbmcgPj0gMTAwKSB7CisgICAgc3RhdGVfcmV0ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBHU1RfU1RBVEVfUExBWUlORyk7CisgIH0gZWxzZSB7CisgICAgc3RhdGVfcmV0ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgfQorCisgIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9OT19QUkVST0xMKSB7CisgICAgc2VsZi0+aXNfbGl2ZSA9IFRSVUU7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlBpcGVsaW5lIGlzIGxpdmUiKTsKKyAgfQorCisgIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7CisgICAgZW1pdF9lcnJvciAoc2VsZiwgZ19lcnJvcl9uZXcgKEdTVF9QTEFZRVJfRVJST1IsIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVELAorICAgICAgICAgICAgIkZhaWxlZCB0byBwbGF5IikpOworICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgIH0gZWxzZSBpZiAoc3RhdGVfcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfTk9fUFJFUk9MTCkgeworICAgIHNlbGYtPmlzX2xpdmUgPSBUUlVFOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJQaXBlbGluZSBpcyBsaXZlIik7CisgIH0KKworICBpZiAoc2VsZi0+aXNfZW9zKSB7CisgICAgZ2Jvb2xlYW4gcmV0OworCisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIldhcyBFT1MsIHNlZWtpbmcgdG8gYmVnaW5uaW5nIik7CisgICAgc2VsZi0+aXNfZW9zID0gRkFMU0U7CisgICAgcmV0ID0KKyAgICAgICAgZ3N0X2VsZW1lbnRfc2Vla19zaW1wbGUgKHNlbGYtPnBsYXliaW4sIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCwgMCk7CisgICAgaWYgKCFyZXQpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJTZWVrIHRvIGJlZ2lubmluZyBmYWlsZWQiKTsKKyAgICAgIGdzdF9wbGF5ZXJfc3RvcF9pbnRlcm5hbCAoc2VsZik7CisgICAgICBnc3RfcGxheWVyX3BsYXlfaW50ZXJuYWwgKHNlbGYpOworICAgIH0KKyAgfQorCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9wbGF5OgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFJlcXVlc3QgdG8gcGxheSB0aGUgbG9hZGVkIHN0cmVhbS4KKyAqLwordm9pZAorZ3N0X3BsYXllcl9wbGF5IChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisKKyAgZ19tYWluX2NvbnRleHRfaW52b2tlX2Z1bGwgKHNlbGYtPmNvbnRleHQsIEdfUFJJT1JJVFlfREVGQVVMVCwKKyAgICAgIGdzdF9wbGF5ZXJfcGxheV9pbnRlcm5hbCwgc2VsZiwgTlVMTCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3BsYXllcl9wYXVzZV9pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXQ7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlBhdXNlIik7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGlmICghc2VsZi0+dXJpKSB7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgdGlja19jYiAoc2VsZik7CisgIHJlbW92ZV90aWNrX3NvdXJjZSAoc2VsZik7CisgIHJlbW92ZV9yZWFkeV90aW1lb3V0X3NvdXJjZSAoc2VsZik7CisKKyAgc2VsZi0+dGFyZ2V0X3N0YXRlID0gR1NUX1NUQVRFX1BBVVNFRDsKKworICBpZiAoc2VsZi0+Y3VycmVudF9zdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQpCisgICAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyk7CisKKyAgc3RhdGVfcmV0ID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChzZWxmLT5wbGF5YmluLCBHU1RfU1RBVEVfUEFVU0VEKTsKKyAgaWYgKHN0YXRlX3JldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICBlbWl0X2Vycm9yIChzZWxmLCBnX2Vycm9yX25ldyAoR1NUX1BMQVlFUl9FUlJPUiwgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgICAiRmFpbGVkIHRvIHBhdXNlIikpOworICAgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7CisgIH0gZWxzZSBpZiAoc3RhdGVfcmV0ID09IEdTVF9TVEFURV9DSEFOR0VfTk9fUFJFUk9MTCkgeworICAgIHNlbGYtPmlzX2xpdmUgPSBUUlVFOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJQaXBlbGluZSBpcyBsaXZlIik7CisgIH0KKworICBpZiAoc2VsZi0+aXNfZW9zKSB7CisgICAgZ2Jvb2xlYW4gcmV0OworCisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIldhcyBFT1MsIHNlZWtpbmcgdG8gYmVnaW5uaW5nIik7CisgICAgc2VsZi0+aXNfZW9zID0gRkFMU0U7CisgICAgcmV0ID0KKyAgICAgICAgZ3N0X2VsZW1lbnRfc2Vla19zaW1wbGUgKHNlbGYtPnBsYXliaW4sIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCwgMCk7CisgICAgaWYgKCFyZXQpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJTZWVrIHRvIGJlZ2lubmluZyBmYWlsZWQiKTsKKyAgICAgIGdzdF9wbGF5ZXJfc3RvcF9pbnRlcm5hbCAoc2VsZik7CisgICAgICBnc3RfcGxheWVyX3BhdXNlX2ludGVybmFsIChzZWxmKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfcGF1c2U6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogUGF1c2VzIHRoZSBjdXJyZW50IHN0cmVhbS4KKyAqLwordm9pZAorZ3N0X3BsYXllcl9wYXVzZSAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworCisgIGdfbWFpbl9jb250ZXh0X2ludm9rZV9mdWxsIChzZWxmLT5jb250ZXh0LCBHX1BSSU9SSVRZX0RFRkFVTFQsCisgICAgICBnc3RfcGxheWVyX3BhdXNlX2ludGVybmFsLCBzZWxmLCBOVUxMKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfcGxheWVyX3N0b3BfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gR1NUX1BMQVlFUiAodXNlcl9kYXRhKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU3RvcCIpOworCisgIHRpY2tfY2IgKHNlbGYpOworICByZW1vdmVfdGlja19zb3VyY2UgKHNlbGYpOworCisgIGFkZF9yZWFkeV90aW1lb3V0X3NvdXJjZSAoc2VsZik7CisKKyAgc2VsZi0+dGFyZ2V0X3N0YXRlID0gR1NUX1NUQVRFX05VTEw7CisgIHNlbGYtPmN1cnJlbnRfc3RhdGUgPSBHU1RfU1RBVEVfUkVBRFk7CisgIHNlbGYtPmlzX2xpdmUgPSBGQUxTRTsKKyAgc2VsZi0+aXNfZW9zID0gRkFMU0U7CisgIGdzdF9idXNfc2V0X2ZsdXNoaW5nIChzZWxmLT5idXMsIFRSVUUpOworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9SRUFEWSk7CisgIGdzdF9idXNfc2V0X2ZsdXNoaW5nIChzZWxmLT5idXMsIEZBTFNFKTsKKyAgY2hhbmdlX3N0YXRlIChzZWxmLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICBzZWxmLT5idWZmZXJpbmcgPSAxMDA7CisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoc2VsZi0+bWVkaWFfaW5mbykgeworICAgIGdfb2JqZWN0X3VucmVmIChzZWxmLT5tZWRpYV9pbmZvKTsKKyAgICBzZWxmLT5tZWRpYV9pbmZvID0gTlVMTDsKKyAgfQorICBpZiAoc2VsZi0+Z2xvYmFsX3RhZ3MpIHsKKyAgICBnc3RfdGFnX2xpc3RfdW5yZWYgKHNlbGYtPmdsb2JhbF90YWdzKTsKKyAgICBzZWxmLT5nbG9iYWxfdGFncyA9IE5VTEw7CisgIH0KKyAgc2VsZi0+c2Vla19wZW5kaW5nID0gRkFMU0U7CisgIGlmIChzZWxmLT5zZWVrX3NvdXJjZSkgeworICAgIGdfc291cmNlX2Rlc3Ryb3kgKHNlbGYtPnNlZWtfc291cmNlKTsKKyAgICBnX3NvdXJjZV91bnJlZiAoc2VsZi0+c2Vla19zb3VyY2UpOworICAgIHNlbGYtPnNlZWtfc291cmNlID0gTlVMTDsKKyAgfQorICBzZWxmLT5zZWVrX3Bvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgc2VsZi0+bGFzdF9zZWVrX3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICBzZWxmLT5yYXRlID0gMS4wOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zdG9wOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFN0b3BzIHBsYXlpbmcgdGhlIGN1cnJlbnQgc3RyZWFtIGFuZCByZXNldHMgdG8gdGhlIGZpcnN0IHBvc2l0aW9uCisgKiBpbiB0aGUgc3RyZWFtLgorICovCit2b2lkCitnc3RfcGxheWVyX3N0b3AgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKworICBnX21haW5fY29udGV4dF9pbnZva2VfZnVsbCAoc2VsZi0+Y29udGV4dCwgR19QUklPUklUWV9ERUZBVUxULAorICAgICAgZ3N0X3BsYXllcl9zdG9wX2ludGVybmFsLCBzZWxmLCBOVUxMKTsKK30KKworLyogTXVzdCBiZSBjYWxsZWQgd2l0aCBsb2NrIGZyb20gbWFpbiBjb250ZXh0LCByZWxlYXNlcyBsb2NrISAqLworc3RhdGljIHZvaWQKK2dzdF9wbGF5ZXJfc2Vla19pbnRlcm5hbF9sb2NrZWQgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdib29sZWFuIHJldDsKKyAgR3N0Q2xvY2tUaW1lIHBvc2l0aW9uOworICBnZG91YmxlIHJhdGU7CisgIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHN0YXRlX3JldDsKKyAgR3N0RXZlbnQgKnNfZXZlbnQ7CisgIEdzdFNlZWtGbGFncyBmbGFncyA9IDA7CisKKyAgaWYgKHNlbGYtPnNlZWtfc291cmNlKSB7CisgICAgZ19zb3VyY2VfZGVzdHJveSAoc2VsZi0+c2Vla19zb3VyY2UpOworICAgIGdfc291cmNlX3VucmVmIChzZWxmLT5zZWVrX3NvdXJjZSk7CisgICAgc2VsZi0+c2Vla19zb3VyY2UgPSBOVUxMOworICB9CisKKyAgLyogT25seSBzZWVrIGluIFBBVVNFRCAqLworICBpZiAoc2VsZi0+Y3VycmVudF9zdGF0ZSA8IEdTVF9TVEFURV9QQVVTRUQpIHsKKyAgICByZXR1cm47CisgIH0gZWxzZSBpZiAoc2VsZi0+Y3VycmVudF9zdGF0ZSAhPSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICBzdGF0ZV9yZXQgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHNlbGYtPnBsYXliaW4sIEdTVF9TVEFURV9QQVVTRUQpOworICAgIGlmIChzdGF0ZV9yZXQgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKSB7CisgICAgICBlbWl0X2Vycm9yIChzZWxmLCBnX2Vycm9yX25ldyAoR1NUX1BMQVlFUl9FUlJPUiwgR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQsCisgICAgICAgICAgICAgICJGYWlsZWQgdG8gc2VlayIpKTsKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICAgICAgcmV0dXJuOworICAgIH0KKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgICByZXR1cm47CisgIH0KKworICBzZWxmLT5sYXN0X3NlZWtfdGltZSA9IGdzdF91dGlsX2dldF90aW1lc3RhbXAgKCk7CisgIHBvc2l0aW9uID0gc2VsZi0+c2Vla19wb3NpdGlvbjsKKyAgc2VsZi0+c2Vla19wb3NpdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIHNlbGYtPnNlZWtfcGVuZGluZyA9IFRSVUU7CisgIHJhdGUgPSBzZWxmLT5yYXRlOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJlbW92ZV90aWNrX3NvdXJjZSAoc2VsZik7CisgIHNlbGYtPmlzX2VvcyA9IEZBTFNFOworCisgIGZsYWdzIHw9IEdTVF9TRUVLX0ZMQUdfRkxVU0g7CisKKyNpZiBHU1RfQ0hFQ0tfVkVSU0lPTigxLDUsMCkKKyAgaWYgKHJhdGUgIT0gMS4wKSB7CisgICAgZmxhZ3MgfD0gR1NUX1NFRUtfRkxBR19UUklDS01PREU7CisgIH0KKyNlbmRpZgorCisgIGlmIChyYXRlID49IDAuMCkgeworICAgIHNfZXZlbnQgPSBnc3RfZXZlbnRfbmV3X3NlZWsgKHJhdGUsIEdTVF9GT1JNQVRfVElNRSwgZmxhZ3MsCisgICAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCBwb3NpdGlvbiwgR1NUX1NFRUtfVFlQRV9OT05FLCBHU1RfQ0xPQ0tfVElNRV9OT05FKTsKKyAgfSBlbHNlIHsKKyAgICBzX2V2ZW50ID0gZ3N0X2V2ZW50X25ld19zZWVrIChyYXRlLCBHU1RfRk9STUFUX1RJTUUsIGZsYWdzLAorICAgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgR19HSU5UNjRfQ09OU1RBTlQgKDApLCBHU1RfU0VFS19UWVBFX1NFVCwgcG9zaXRpb24pOworICB9CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNlZWsgd2l0aCByYXRlICUuMmxmIHRvICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgIHJhdGUsIEdTVF9USU1FX0FSR1MgKHBvc2l0aW9uKSk7CisKKyAgcmV0ID0gZ3N0X2VsZW1lbnRfc2VuZF9ldmVudCAoc2VsZi0+cGxheWJpbiwgc19ldmVudCk7CisgIGlmICghcmV0KQorICAgIGVtaXRfZXJyb3IgKHNlbGYsIGdfZXJyb3JfbmV3IChHU1RfUExBWUVSX0VSUk9SLCBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgICAgICJGYWlsZWQgdG8gc2VlayB0byAlIiBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKHBvc2l0aW9uKSkpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc2Vla19pbnRlcm5hbCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RQbGF5ZXIgKnNlbGYgPSBHU1RfUExBWUVSICh1c2VyX2RhdGEpOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBnc3RfcGxheWVyX3NlZWtfaW50ZXJuYWxfbG9ja2VkIChzZWxmKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc2V0X3JhdGVfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gdXNlcl9kYXRhOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworCisgIHNlbGYtPnNlZWtfcG9zaXRpb24gPSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAoc2VsZik7CisKKyAgLyogSWYgdGhlcmUgaXMgbm8gc2VlayBiZWluZyBkaXNwYXRjaCB0byB0aGUgbWFpbiBjb250ZXh0IGN1cnJlbnRseSBkbyB0aGF0LAorICAgKiBvdGhlcndpc2Ugd2UganVzdCB1cGRhdGVkIHRoZSByYXRlIHNvIHRoYXQgaXQgd2lsbCBiZSB0YWtlbiBieQorICAgKiB0aGUgc2VlayBoYW5kbGVyIGZyb20gdGhlIG1haW4gY29udGV4dCBpbnN0ZWFkIG9mIHRoZSBvbGQgb25lLgorICAgKi8KKyAgaWYgKCFzZWxmLT5zZWVrX3NvdXJjZSkgeworICAgIC8qIElmIG5vIHNlZWsgaXMgcGVuZGluZyB0aGVuIGNyZWF0ZSBuZXcgc2VlayBzb3VyY2UgKi8KKyAgICBpZiAoIXNlbGYtPnNlZWtfcGVuZGluZykgeworICAgICAgc2VsZi0+c2Vla19zb3VyY2UgPSBnX2lkbGVfc291cmNlX25ldyAoKTsKKyAgICAgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc2VsZi0+c2Vla19zb3VyY2UsCisgICAgICAgICAgKEdTb3VyY2VGdW5jKSBnc3RfcGxheWVyX3NlZWtfaW50ZXJuYWwsIHNlbGYsIE5VTEwpOworICAgICAgZ19zb3VyY2VfYXR0YWNoIChzZWxmLT5zZWVrX3NvdXJjZSwgc2VsZi0+Y29udGV4dCk7CisgICAgfQorICB9CisKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X3JhdGU6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAcmF0ZTogcGxheWJhY2sgcmF0ZQorICoKKyAqIFBsYXliYWNrIGF0IHNwZWNpZmllZCByYXRlCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X3JhdGUgKEdzdFBsYXllciAqIHNlbGYsIGdkb3VibGUgcmF0ZSkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworICBnX3JldHVybl9pZl9mYWlsIChyYXRlICE9IDAuMCk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIHNlbGYtPnJhdGUgPSByYXRlOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIGdzdF9wbGF5ZXJfc2V0X3JhdGVfaW50ZXJuYWwgKHNlbGYpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3JhdGU6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogUmV0dXJuczogY3VycmVudCBwbGF5YmFjayByYXRlCisgKi8KK2dkb3VibGUKK2dzdF9wbGF5ZXJfZ2V0X3JhdGUgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgREVGQVVMVF9SQVRFKTsKKworICByZXR1cm4gc2VsZi0+cmF0ZTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfaW50ZXJuYWwgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0UGxheWVyICpzZWxmID0gdXNlcl9kYXRhOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworCisgIGlmIChzZWxmLT50aWNrX3NvdXJjZSkgeworICAgIHJlbW92ZV90aWNrX3NvdXJjZSAoc2VsZik7CisgICAgYWRkX3RpY2tfc291cmNlIChzZWxmKTsKKyAgfQorCisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisKKyAgcmV0dXJuIEdfU09VUkNFX1JFTU9WRTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWw6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAaW50ZXJ2YWw6IGludGVydmFsIGluIG1zCisgKgorICogU2V0IGludGVydmFsIGluIG1pbGxpc2Vjb25kcyBiZXR3ZWVuIHR3byBwb3NpdGlvbi11cGRhdGVkIHNpZ25hbHMuCisgKiBQYXNzIDAgdG8gc3RvcCB1cGRhdGluZyB0aGUgcG9zaXRpb24uCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCAoR3N0UGxheWVyICogc2VsZiwgZ3VpbnQgaW50ZXJ2YWwpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoaW50ZXJ2YWwgPD0gMTAwMDApOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBzZWxmLT5wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfbXMgPSBpbnRlcnZhbDsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICBnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfaW50ZXJuYWwgKHNlbGYpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbDoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBSZXR1cm5zOiBjdXJyZW50IHBvc2l0aW9uIHVwZGF0ZSBpbnRlcnZhbCBpbiBtaWxsaXNlY29uZHMKKyAqLworZ3VpbnQKK2dzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLAorICAgICAgREVGQVVMVF9QT1NJVElPTl9VUERBVEVfSU5URVJWQUxfTVMpOworCisgIHJldHVybiBzZWxmLT5wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfbXM7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZWVrOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQHBvc2l0aW9uOiBwb3NpdGlvbiB0byBzZWVrIGluIG5hbm9zZWNvbmRzCisgKgorICogU2Vla3MgdGhlIGN1cnJlbnRseS1wbGF5aW5nIHN0cmVhbSB0byB0aGUgYWJzb2x1dGUgQHBvc2l0aW9uIHRpbWUKKyAqIGluIG5hbm9zZWNvbmRzLgorICovCit2b2lkCitnc3RfcGxheWVyX3NlZWsgKEdzdFBsYXllciAqIHNlbGYsIEdzdENsb2NrVGltZSBwb3NpdGlvbikKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworICBnX3JldHVybl9pZl9mYWlsIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAocG9zaXRpb24pKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaWYgKHNlbGYtPm1lZGlhX2luZm8gJiYgIXNlbGYtPm1lZGlhX2luZm8tPnNlZWthYmxlKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIk1lZGlhIGlzIG5vdCBzZWVrYWJsZSIpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7CisgICAgcmV0dXJuOworICB9CisKKyAgc2VsZi0+c2Vla19wb3NpdGlvbiA9IHBvc2l0aW9uOworCisgIC8qIElmIHRoZXJlIGlzIG5vIHNlZWsgYmVpbmcgZGlzcGF0Y2ggdG8gdGhlIG1haW4gY29udGV4dCBjdXJyZW50bHkgZG8gdGhhdCwKKyAgICogb3RoZXJ3aXNlIHdlIGp1c3QgdXBkYXRlZCB0aGUgc2VlayBwb3NpdGlvbiBzbyB0aGF0IGl0IHdpbGwgYmUgdGFrZW4gYnkKKyAgICogdGhlIHNlZWsgaGFuZGxlciBmcm9tIHRoZSBtYWluIGNvbnRleHQgaW5zdGVhZCBvZiB0aGUgb2xkIG9uZS4KKyAgICovCisgIGlmICghc2VsZi0+c2Vla19zb3VyY2UpIHsKKyAgICBHc3RDbG9ja1RpbWUgbm93ID0gZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCAoKTsKKworICAgIC8qIElmIG5vIHNlZWsgaXMgcGVuZGluZyBvciBpdCB3YXMgc3RhcnRlZCBtb3JlIHRoYW4gMjUwIG1zZWNvbmRzIGFnbyBzZWVrCisgICAgICogaW1tZWRpYXRlbHksIG90aGVyd2lzZSB3YWl0IHVudGlsIHRoZSAyNTAgbXNlY29uZHMgaGF2ZSBwYXNzZWQgKi8KKyAgICBpZiAoIXNlbGYtPnNlZWtfcGVuZGluZyB8fCAobm93IC0gc2VsZi0+bGFzdF9zZWVrX3RpbWUgPiAyNTAgKiBHU1RfTVNFQ09ORCkpIHsKKyAgICAgIHNlbGYtPnNlZWtfc291cmNlID0gZ19pZGxlX3NvdXJjZV9uZXcgKCk7CisgICAgICBnX3NvdXJjZV9zZXRfY2FsbGJhY2sgKHNlbGYtPnNlZWtfc291cmNlLAorICAgICAgICAgIChHU291cmNlRnVuYykgZ3N0X3BsYXllcl9zZWVrX2ludGVybmFsLCBzZWxmLCBOVUxMKTsKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsICJEaXNwYXRjaGluZyBzZWVrIHRvIHBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgICAgICBHU1RfVElNRV9BUkdTIChwb3NpdGlvbikpOworICAgICAgZ19zb3VyY2VfYXR0YWNoIChzZWxmLT5zZWVrX3NvdXJjZSwgc2VsZi0+Y29udGV4dCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGd1aW50IGRlbGF5ID0gMjUwMDAwIC0gKG5vdyAtIHNlbGYtPmxhc3Rfc2Vla190aW1lKSAvIDEwMDA7CisKKyAgICAgIC8qIE5vdGUgdGhhdCBsYXN0X3NlZWtfdGltZSBtdXN0IGJlIHNldCB0byBzb21ldGhpbmcgYXQgdGhpcyBwb2ludCBhbmQKKyAgICAgICAqIGl0IG11c3QgYmUgc21hbGxlciB0aGFuIDI1MCBtc2Vjb25kcyAqLworICAgICAgc2VsZi0+c2Vla19zb3VyY2UgPSBnX3RpbWVvdXRfc291cmNlX25ldyAoZGVsYXkpOworICAgICAgZ19zb3VyY2Vfc2V0X2NhbGxiYWNrIChzZWxmLT5zZWVrX3NvdXJjZSwKKyAgICAgICAgICAoR1NvdXJjZUZ1bmMpIGdzdF9wbGF5ZXJfc2Vla19pbnRlcm5hbCwgc2VsZiwgTlVMTCk7CisKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKHNlbGYsCisgICAgICAgICAgIkRlbGF5aW5nIHNlZWsgdG8gcG9zaXRpb24gJSIgR1NUX1RJTUVfRk9STUFUICIgYnkgJXUgdXMiLAorICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHBvc2l0aW9uKSwgZGVsYXkpOworICAgICAgZ19zb3VyY2VfYXR0YWNoIChzZWxmLT5zZWVrX3NvdXJjZSwgc2VsZi0+Y29udGV4dCk7CisgICAgfQorICB9CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9nZXRfdXJpOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIEdldHMgdGhlIFVSSSBvZiB0aGUgY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogYSBzdHJpbmcgY29udGFpbmluZyB0aGUgVVJJIG9mIHRoZQorICogY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtLiBnX2ZyZWUoKSBhZnRlciB1c2FnZS4KKyAqLworZ2NoYXIgKgorZ3N0X3BsYXllcl9nZXRfdXJpIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBnY2hhciAqdmFsOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgREVGQVVMVF9VUkkpOworCisgIGdfb2JqZWN0X2dldCAoc2VsZiwgInVyaSIsICZ2YWwsIE5VTEwpOworCisgIHJldHVybiB2YWw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfdXJpOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQHVyaTogbmV4dCBVUkkgdG8gcGxheS4KKyAqCisgKiBTZXRzIHRoZSBuZXh0IFVSSSB0byBwbGF5LgorICovCit2b2lkCitnc3RfcGxheWVyX3NldF91cmkgKEdzdFBsYXllciAqIHNlbGYsIGNvbnN0IGdjaGFyICogdmFsKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisKKyAgZ19vYmplY3Rfc2V0IChzZWxmLCAidXJpIiwgdmFsLCBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2dldF9wb3NpdGlvbjoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBSZXR1cm5zOiB0aGUgYWJzb2x1dGUgcG9zaXRpb24gdGltZSwgaW4gbmFub3NlY29uZHMsIG9mIHRoZQorICogY3VycmVudGx5LXBsYXlpbmcgc3RyZWFtLgorICovCitHc3RDbG9ja1RpbWUKK2dzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RDbG9ja1RpbWUgdmFsOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgREVGQVVMVF9QT1NJVElPTik7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLCAicG9zaXRpb24iLCAmdmFsLCBOVUxMKTsKKworICByZXR1cm4gdmFsOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFJldHJpZXZlcyB0aGUgZHVyYXRpb24gb2YgdGhlIG1lZGlhIHN0cmVhbSB0aGF0IHNlbGYgcmVwcmVzZW50cy4KKyAqCisgKiBSZXR1cm5zOiB0aGUgZHVyYXRpb24gb2YgdGhlIGN1cnJlbnRseS1wbGF5aW5nIG1lZGlhIHN0cmVhbSwgaW4KKyAqIG5hbm9zZWNvbmRzLgorICovCitHc3RDbG9ja1RpbWUKK2dzdF9wbGF5ZXJfZ2V0X2R1cmF0aW9uIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBHc3RDbG9ja1RpbWUgdmFsOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgREVGQVVMVF9EVVJBVElPTik7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLCAiZHVyYXRpb24iLCAmdmFsLCBOVUxMKTsKKworICByZXR1cm4gdmFsOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3ZvbHVtZToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBSZXR1cm5zIHRoZSBjdXJyZW50IHZvbHVtZSBsZXZlbCwgYXMgYSBwZXJjZW50YWdlIGJldHdlZW4gMCBhbmQgMS4KKyAqCisgKiBSZXR1cm5zOiB0aGUgdm9sdW1lIGFzIHBlcmNlbnRhZ2UgYmV0d2VlbiAwIGFuZCAxLgorICovCitnZG91YmxlCitnc3RfcGxheWVyX2dldF92b2x1bWUgKEdzdFBsYXllciAqIHNlbGYpCit7CisgIGdkb3VibGUgdmFsOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgREVGQVVMVF9WT0xVTUUpOworCisgIGdfb2JqZWN0X2dldCAoc2VsZiwgInZvbHVtZSIsICZ2YWwsIE5VTEwpOworCisgIHJldHVybiB2YWw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfdm9sdW1lOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQHZhbDogdGhlIG5ldyB2b2x1bWUgbGV2ZWwsIGFzIGEgcGVyY2VudGFnZSBiZXR3ZWVuIDAgYW5kIDEKKyAqCisgKiBTZXRzIHRoZSB2b2x1bWUgbGV2ZWwgb2YgdGhlIHN0cmVhbSBhcyBhIHBlcmNlbnRhZ2UgYmV0d2VlbiAwIGFuZCAxLgorICovCit2b2lkCitnc3RfcGxheWVyX3NldF92b2x1bWUgKEdzdFBsYXllciAqIHNlbGYsIGdkb3VibGUgdmFsKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisKKyAgZ19vYmplY3Rfc2V0IChzZWxmLCAidm9sdW1lIiwgdmFsLCBOVUxMKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2dldF9tdXRlOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBjdXJyZW50bHktcGxheWluZyBzdHJlYW0gaXMgbXV0ZWQuCisgKi8KK2dib29sZWFuCitnc3RfcGxheWVyX2dldF9tdXRlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBnYm9vbGVhbiB2YWw7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBERUZBVUxUX01VVEUpOworCisgIGdfb2JqZWN0X2dldCAoc2VsZiwgIm11dGUiLCAmdmFsLCBOVUxMKTsKKworICByZXR1cm4gdmFsOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X211dGU6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAdmFsOiBNdXRlIHN0YXRlIHRoZSBzaG91bGQgYmUgc2V0CisgKgorICogJVRSVUUgaWYgdGhlIGN1cnJlbnRseS1wbGF5aW5nIHN0cmVhbSBzaG91bGQgYmUgbXV0ZWQuCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X211dGUgKEdzdFBsYXllciAqIHNlbGYsIGdib29sZWFuIHZhbCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworCisgIGdfb2JqZWN0X3NldCAoc2VsZiwgIm11dGUiLCB2YWwsIE5VTEwpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogVGhlIGludGVybmFsIHBsYXliaW4gaW5zdGFuY2UKKyAqLworR3N0RWxlbWVudCAqCitnc3RfcGxheWVyX2dldF9waXBlbGluZSAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgR3N0RWxlbWVudCAqdmFsOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgTlVMTCk7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLCAicGlwZWxpbmUiLCAmdmFsLCBOVUxMKTsKKworICByZXR1cm4gdmFsOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X21lZGlhX2luZm86CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogQSBGdW5jdGlvbiB0byBnZXQgdGhlIGN1cnJlbnQgbWVkaWEgaW5mbyAjR3N0UGxheWVyTWVkaWFJbmZvIGluc3RhbmNlLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogbWVkaWEgaW5mbyBpbnN0YW5jZS4KKyAqCisgKiBUaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggZ19vYmplY3RfdW5yZWYoKQorICovCitHc3RQbGF5ZXJNZWRpYUluZm8gKgorZ3N0X3BsYXllcl9nZXRfbWVkaWFfaW5mbyAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgR3N0UGxheWVyTWVkaWFJbmZvICppbmZvOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgTlVMTCk7CisKKyAgaWYgKCFzZWxmLT5tZWRpYV9pbmZvKQorICAgIHJldHVybiBOVUxMOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOworICBpbmZvID0gZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2NvcHkgKHNlbGYtPm1lZGlhX2luZm8pOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworCisgIHJldHVybiBpbmZvOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2s6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogQSBGdW5jdGlvbiB0byBnZXQgY3VycmVudCBhdWRpbyAjR3N0UGxheWVyQXVkaW9JbmZvIGluc3RhbmNlLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogY3VycmVudCBhdWRpbyB0cmFjay4KKyAqCisgKiBUaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggZ19vYmplY3RfdW5yZWYoKQorICovCitHc3RQbGF5ZXJBdWRpb0luZm8gKgorZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjayAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgR3N0UGxheWVyQXVkaW9JbmZvICppbmZvOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgTlVMTCk7CisKKyAgaWYgKCFpc190cmFja19lbmFibGVkIChzZWxmLCBHU1RfUExBWV9GTEFHX0FVRElPKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpbmZvID0gKEdzdFBsYXllckF1ZGlvSW5mbyAqKSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jdXJyZW50IChzZWxmLAorICAgICAgImN1cnJlbnQtYXVkaW8iLCBHU1RfVFlQRV9QTEFZRVJfQVVESU9fSU5GTyk7CisgIHJldHVybiBpbmZvOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2s6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogQSBGdW5jdGlvbiB0byBnZXQgY3VycmVudCB2aWRlbyAjR3N0UGxheWVyVmlkZW9JbmZvIGluc3RhbmNlLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogY3VycmVudCB2aWRlbyB0cmFjay4KKyAqCisgKiBUaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggZ19vYmplY3RfdW5yZWYoKQorICovCitHc3RQbGF5ZXJWaWRlb0luZm8gKgorZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aWRlb190cmFjayAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgR3N0UGxheWVyVmlkZW9JbmZvICppbmZvOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgTlVMTCk7CisKKyAgaWYgKCFpc190cmFja19lbmFibGVkIChzZWxmLCBHU1RfUExBWV9GTEFHX1ZJREVPKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpbmZvID0gKEdzdFBsYXllclZpZGVvSW5mbyAqKSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jdXJyZW50IChzZWxmLAorICAgICAgImN1cnJlbnQtdmlkZW8iLCBHU1RfVFlQRV9QTEFZRVJfVklERU9fSU5GTyk7CisgIHJldHVybiBpbmZvOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfc3VidGl0bGVfdHJhY2s6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogQSBGdW5jdGlvbiB0byBnZXQgY3VycmVudCBzdWJ0aXRsZSAjR3N0UGxheWVyU3VidGl0bGVJbmZvIGluc3RhbmNlLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogY3VycmVudCBzdWJ0aXRsZSB0cmFjay4KKyAqCisgKiBUaGUgY2FsbGVyIHNob3VsZCBmcmVlIGl0IHdpdGggZ19vYmplY3RfdW5yZWYoKQorICovCitHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKgorZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFjayAoR3N0UGxheWVyICogc2VsZikKK3sKKyAgR3N0UGxheWVyU3VidGl0bGVJbmZvICppbmZvOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgTlVMTCk7CisKKyAgaWYgKCFpc190cmFja19lbmFibGVkIChzZWxmLCBHU1RfUExBWV9GTEFHX1NVQlRJVExFKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpbmZvID0gKEdzdFBsYXllclN1YnRpdGxlSW5mbyAqKSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jdXJyZW50IChzZWxmLAorICAgICAgImN1cnJlbnQtdGV4dCIsIEdTVF9UWVBFX1BMQVlFUl9TVUJUSVRMRV9JTkZPKTsKKyAgcmV0dXJuIGluZm87Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2s6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAc3RyZWFtX2luZGV4OiBzdHJlYW0gaW5kZXgKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBvciAlRkFMU0UKKyAqCisgKiBTZXRzIHRoZSBhdWRpbyB0cmFjayBAc3RyZWFtX2lkZXguCisgKi8KK2dib29sZWFuCitnc3RfcGxheWVyX3NldF9hdWRpb190cmFjayAoR3N0UGxheWVyICogc2VsZiwgZ2ludCBzdHJlYW1faW5kZXgpCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKmluZm87CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCAwKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaW5mbyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluZCAoc2VsZi0+bWVkaWFfaW5mbywKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9BVURJT19JTkZPLCBzdHJlYW1faW5kZXgpOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoIWluZm8pIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiaW52YWxpZCBhdWRpbyBzdHJlYW0gaW5kZXggJWQiLCBzdHJlYW1faW5kZXgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGdfb2JqZWN0X3NldCAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAiY3VycmVudC1hdWRpbyIsIHN0cmVhbV9pbmRleCwgTlVMTCk7CisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZXQgc3RyZWFtIGluZGV4ICclZCciLCBzdHJlYW1faW5kZXgpOworICByZXR1cm4gVFJVRTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF92aWRlb190cmFjazoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBzdHJlYW1faW5kZXg6IHN0cmVhbSBpbmRleAorICoKKyAqIFJldHVybnM6ICVUUlVFIG9yICVGQUxTRQorICoKKyAqIFNldHMgdGhlIHZpZGVvIHRyYWNrIEBzdHJlYW1faW5kZXguCisgKi8KK2dib29sZWFuCitnc3RfcGxheWVyX3NldF92aWRlb190cmFjayAoR3N0UGxheWVyICogc2VsZiwgZ2ludCBzdHJlYW1faW5kZXgpCit7CisgIEdzdFBsYXllclN0cmVhbUluZm8gKmluZm87CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCAwKTsKKworICAvKiBjaGVjayBpZiBzdHJlYW1faW5kZXggZXhpc3QgaW4gb3VyIGludGVybmFsIG1lZGlhX2luZm8gbGlzdCAqLworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaW5mbyA9IGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZmluZCAoc2VsZi0+bWVkaWFfaW5mbywKKyAgICAgIEdTVF9UWVBFX1BMQVlFUl9WSURFT19JTkZPLCBzdHJlYW1faW5kZXgpOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmxvY2spOworICBpZiAoIWluZm8pIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiaW52YWxpZCB2aWRlbyBzdHJlYW0gaW5kZXggJWQiLCBzdHJlYW1faW5kZXgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGdfb2JqZWN0X3NldCAoR19PQkpFQ1QgKHNlbGYtPnBsYXliaW4pLCAiY3VycmVudC12aWRlbyIsIHN0cmVhbV9pbmRleCwgTlVMTCk7CisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZXQgc3RyZWFtIGluZGV4ICclZCciLCBzdHJlYW1faW5kZXgpOworICByZXR1cm4gVFJVRTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFjazoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBzdHJlYW1faW5kZXg6IHN0cmVhbSBpbmRleAorICoKKyAqIFJldHVybnM6ICVUUlVFIG9yICVGQUxTRQorICoKKyAqIFNldHMgdGhlIHN1YnRpdGxlIHN0cmFjayBAc3RyZWFtX2luZGV4LgorICovCitnYm9vbGVhbgorZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2sgKEdzdFBsYXllciAqIHNlbGYsIGdpbnQgc3RyZWFtX2luZGV4KQoreworICBHc3RQbGF5ZXJTdHJlYW1JbmZvICppbmZvOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgMCk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGluZm8gPSBnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2ZpbmQgKHNlbGYtPm1lZGlhX2luZm8sCisgICAgICBHU1RfVFlQRV9QTEFZRVJfU1VCVElUTEVfSU5GTywgc3RyZWFtX2luZGV4KTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgaWYgKCFpbmZvKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgImludmFsaWQgc3VidGl0bGUgc3RyZWFtIGluZGV4ICVkIiwgc3RyZWFtX2luZGV4KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBnX29iamVjdF9zZXQgKEdfT0JKRUNUIChzZWxmLT5wbGF5YmluKSwgImN1cnJlbnQtdGV4dCIsIHN0cmVhbV9pbmRleCwgTlVMTCk7CisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZXQgc3RyZWFtIGluZGV4ICclZCciLCBzdHJlYW1faW5kZXgpOworICByZXR1cm4gVFJVRTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF9hdWRpb190cmFja19lbmFibGVkOgorICogQHBsYXllcjogI0dzdFBsYXllciBpbnN0YW5jZQorICogQGVuYWJsZWQ6IFRSVUUgb3IgRkFMU0UKKyAqCisgKiBFbmFibGUgb3IgZGlzYWJsZSB0aGUgY3VycmVudCBhdWRpbyB0cmFjay4KKyAqLwordm9pZAorZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZCAoR3N0UGxheWVyICogc2VsZiwgZ2Jvb2xlYW4gZW5hYmxlZCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZikpOworCisgIGlmIChlbmFibGVkKQorICAgIHBsYXllcl9zZXRfZmxhZyAoc2VsZiwgR1NUX1BMQVlfRkxBR19BVURJTyk7CisgIGVsc2UKKyAgICBwbGF5ZXJfY2xlYXJfZmxhZyAoc2VsZiwgR1NUX1BMQVlfRkxBR19BVURJTyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInRyYWNrIGlzICclcyciLCBlbmFibGVkID8gIkVuYWJsZWQiIDogIkRpc2FibGVkIik7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZDoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBlbmFibGVkOiBUUlVFIG9yIEZBTFNFCisgKgorICogRW5hYmxlIG9yIGRpc2FibGUgdGhlIGN1cnJlbnQgdmlkZW8gdHJhY2suCisgKi8KK3ZvaWQKK2dzdF9wbGF5ZXJfc2V0X3ZpZGVvX3RyYWNrX2VuYWJsZWQgKEdzdFBsYXllciAqIHNlbGYsIGdib29sZWFuIGVuYWJsZWQpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKworICBpZiAoZW5hYmxlZCkKKyAgICBwbGF5ZXJfc2V0X2ZsYWcgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfVklERU8pOworICBlbHNlCisgICAgcGxheWVyX2NsZWFyX2ZsYWcgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfVklERU8pOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJ0cmFjayBpcyAnJXMnIiwgZW5hYmxlZCA/ICJFbmFibGVkIiA6ICJEaXNhYmxlZCIpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWQ6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAZW5hYmxlZDogVFJVRSBvciBGQUxTRQorICoKKyAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSBjdXJyZW50IHN1YnRpdGxlIHRyYWNrLgorICovCit2b2lkCitnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV90cmFja19lbmFibGVkIChHc3RQbGF5ZXIgKiBzZWxmLCBnYm9vbGVhbiBlbmFibGVkKQoreworICBnX3JldHVybl9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSk7CisKKyAgaWYgKGVuYWJsZWQpCisgICAgcGxheWVyX3NldF9mbGFnIChzZWxmLCBHU1RfUExBWV9GTEFHX1NVQlRJVExFKTsKKyAgZWxzZQorICAgIHBsYXllcl9jbGVhcl9mbGFnIChzZWxmLCBHU1RfUExBWV9GTEFHX1NVQlRJVExFKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAidHJhY2sgaXMgJyVzJyIsIGVuYWJsZWQgPyAiRW5hYmxlZCIgOiAiRGlzYWJsZWQiKTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmk6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAdXJpOiBzdWJ0aXRsZSBVUkkKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBvciAlRkFMU0UKKyAqCisgKiBTZXRzIHRoZSBleHRlcm5hbCBzdWJ0aXRsZSBVUkkuCisgKi8KK2dib29sZWFuCitnc3RfcGxheWVyX3NldF9zdWJ0aXRsZV91cmkgKEdzdFBsYXllciAqIHNlbGYsIGNvbnN0IGdjaGFyICogc3VidXJpKQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIEZBTFNFKTsKKworICBnX211dGV4X2xvY2sgKCZzZWxmLT5sb2NrKTsKKyAgZ19mcmVlIChzZWxmLT5zdWJ1cmkpOworICBzZWxmLT5zdWJ1cmkgPSBnX3N0cmR1cCAoc3VidXJpKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKworICBnc3RfcGxheWVyX3NldF9zdWJ1cmlfaW50ZXJuYWwgKHNlbGYpOworCisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3VyaToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqCisgKiBjdXJyZW50IHN1YnRpdGxlIFVSSQorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBmdWxsKTogVVJJIG9mIHRoZSBjdXJyZW50IGV4dGVybmFsIHN1YnRpdGxlLgorICogICBnX2ZyZWUoKSBhZnRlciB1c2FnZS4KKyAqLworZ2NoYXIgKgorZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfdXJpIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBnY2hhciAqdmFsID0gTlVMTDsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoR1NUX0lTX1BMQVlFUiAoc2VsZiksIE5VTEwpOworCisgIGdfb2JqZWN0X2dldCAoc2VsZiwgInN1YnVyaSIsICZ2YWwsIE5VTEwpOworCisgIHJldHVybiB2YWw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbjoKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEBuYW1lOiB2aXN1YWxpemF0aW9uIGVsZW1lbnQgb2J0YWluZWQgZnJvbQorICogI2dzdF9wbGF5ZXJfdmlzdWFsaXphdGlvbnNfZ2V0KCkKKyAqCisgKiBSZXR1cm5zOiAlVFJVRSBpZiB0aGUgdmlzdWFsaXphdGlvbnMgd2FzIHNldCBjb3JyZWN0bHkuIE90aGVyd2lzZSwKKyAqICVGQUxTRS4KKyAqLworZ2Jvb2xlYW4KK2dzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb24gKEdzdFBsYXllciAqIHNlbGYsIGNvbnN0IGdjaGFyICogbmFtZSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBGQUxTRSk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CisgIGlmIChzZWxmLT5jdXJyZW50X3Zpc19lbGVtZW50KSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2VsZi0+Y3VycmVudF92aXNfZWxlbWVudCk7CisgICAgc2VsZi0+Y3VycmVudF92aXNfZWxlbWVudCA9IE5VTEw7CisgIH0KKworICBpZiAobmFtZSkgeworICAgIHNlbGYtPmN1cnJlbnRfdmlzX2VsZW1lbnQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKG5hbWUsIE5VTEwpOworICAgIGlmICghc2VsZi0+Y3VycmVudF92aXNfZWxlbWVudCkKKyAgICAgIGdvdG8gZXJyb3Jfbm9fZWxlbWVudDsKKyAgICBnc3Rfb2JqZWN0X3JlZl9zaW5rIChzZWxmLT5jdXJyZW50X3Zpc19lbGVtZW50KTsKKyAgfQorICBnX29iamVjdF9zZXQgKHNlbGYtPnBsYXliaW4sICJ2aXMtcGx1Z2luIiwgc2VsZi0+Y3VycmVudF92aXNfZWxlbWVudCwgTlVMTCk7CisKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInNldCB2aXMtcGx1Z2luIHRvICclcyciLCBuYW1lKTsKKworICByZXR1cm4gVFJVRTsKKworZXJyb3Jfbm9fZWxlbWVudDoKKyAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKKyAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAiY291bGQgbm90IGZpbmQgdmlzdWFsaXphdGlvbiAnJXMnIiwgbmFtZSk7CisgIHJldHVybiBGQUxTRTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX2dldF9jdXJyZW50X3Zpc3VhbGl6YXRpb246CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBOYW1lIG9mIHRoZSBjdXJyZW50bHkgZW5hYmxlZCB2aXN1YWxpemF0aW9uLgorICogICBnX2ZyZWUoKSBhZnRlciB1c2FnZS4KKyAqLworZ2NoYXIgKgorZ3N0X3BsYXllcl9nZXRfY3VycmVudF92aXN1YWxpemF0aW9uIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBnY2hhciAqbmFtZSA9IE5VTEw7CisgIEdzdEVsZW1lbnQgKnZpc19wbHVnaW4gPSBOVUxMOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChHU1RfSVNfUExBWUVSIChzZWxmKSwgTlVMTCk7CisKKyAgaWYgKCFpc190cmFja19lbmFibGVkIChzZWxmLCBHU1RfUExBWV9GTEFHX1ZJUykpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgZ19vYmplY3RfZ2V0IChzZWxmLT5wbGF5YmluLCAidmlzLXBsdWdpbiIsICZ2aXNfcGx1Z2luLCBOVUxMKTsKKworICBpZiAodmlzX3BsdWdpbikgeworICAgIEdzdEVsZW1lbnRGYWN0b3J5ICpmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZ2V0X2ZhY3RvcnkgKHZpc19wbHVnaW4pOworICAgIGlmIChmYWN0b3J5KQorICAgICAgbmFtZSA9IGdfc3RyZHVwIChnc3RfcGx1Z2luX2ZlYXR1cmVfZ2V0X25hbWUgKGZhY3RvcnkpKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh2aXNfcGx1Z2luKTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJ2aXMtcGx1Z2luICclcycgJXAiLCBuYW1lLCB2aXNfcGx1Z2luKTsKKworICByZXR1cm4gbmFtZTsKK30KKworLyoqCisgKiBnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uX2VuYWJsZWQ6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAZW5hYmxlZDogVFJVRSBvciBGQUxTRQorICoKKyAqIEVuYWJsZSBvciBkaXNhYmxlIHRoZSB2aXN1YWxpemF0aW9uLgorICovCit2b2lkCitnc3RfcGxheWVyX3NldF92aXN1YWxpemF0aW9uX2VuYWJsZWQgKEdzdFBsYXllciAqIHNlbGYsIGdib29sZWFuIGVuYWJsZWQpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKworICBpZiAoZW5hYmxlZCkKKyAgICBwbGF5ZXJfc2V0X2ZsYWcgKHNlbGYsIEdTVF9QTEFZX0ZMQUdfVklTKTsKKyAgZWxzZQorICAgIHBsYXllcl9jbGVhcl9mbGFnIChzZWxmLCBHU1RfUExBWV9GTEFHX1ZJUyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInZpc3VhbGl6YXRpb24gaXMgJyVzJyIsCisgICAgICBlbmFibGVkID8gIkVuYWJsZWQiIDogIkRpc2FibGVkIik7Cit9CisKK3N0cnVjdCBDQkNoYW5uZWxNYXAKK3sKKyAgY29uc3QgZ2NoYXIgKmxhYmVsOyAgICAgICAgICAgLyogY2hhbm5lbCBsYWJlbCBuYW1lICovCisgIGNvbnN0IGdjaGFyICpuYW1lOyAgICAgICAgICAgIC8qIGdldF9uYW1lICgpICovCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IENCQ2hhbm5lbE1hcCBjYl9jaGFubmVsX21hcFtdID0geworICAvKiBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQlJJR0hUTkVTUyAqLyB7IkJSSUdIVE5FU1MiLCAiYnJpZ2h0bmVzcyJ9LAorICAvKiBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQ09OVFJBU1QgICAqLyB7IkNPTlRSQVNUIiwgImNvbnRyYXN0In0sCisgIC8qIEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9TQVRVUkFUSU9OICovIHsiU0FUVVJBVElPTiIsICJzYXR1cmF0aW9uIn0sCisgIC8qIEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9IVUUgICAgICAgICovIHsiSFVFIiwgImh1ZSJ9LAorfTsKKworc3RhdGljIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKgorZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX2ZpbmRfY2hhbm5lbCAoR3N0UGxheWVyICogc2VsZiwKKyAgICBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIHR5cGUpCit7CisgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKmNoYW5uZWw7CisgIGNvbnN0IEdMaXN0ICpsLCAqY2hhbm5lbHM7CisKKyAgaWYgKHR5cGUgPCBHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfQlJJR0hUTkVTUyB8fAorICAgICAgdHlwZSA+IEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9IVUUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgY2hhbm5lbHMgPQorICAgICAgZ3N0X2NvbG9yX2JhbGFuY2VfbGlzdF9jaGFubmVscyAoR1NUX0NPTE9SX0JBTEFOQ0UgKHNlbGYtPnBsYXliaW4pKTsKKyAgZm9yIChsID0gY2hhbm5lbHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgY2hhbm5lbCA9IGwtPmRhdGE7CisgICAgaWYgKGdfc3RycnN0ciAoY2hhbm5lbC0+bGFiZWwsIGNiX2NoYW5uZWxfbWFwW3R5cGVdLmxhYmVsKSkKKyAgICAgIHJldHVybiBjaGFubmVsOworICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9oYXNfY29sb3JfYmFsYW5jZToKKyAqIEBwbGF5ZXI6I0dzdFBsYXllciBpbnN0YW5jZQorICoKKyAqIENoZWNrcyB3aGV0aGVyIHRoZSBAcGxheWVyIGhhcyBjb2xvciBiYWxhbmNlIHN1cHBvcnQgYXZhaWxhYmxlLgorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIEBwbGF5ZXIgaGFzIGNvbG9yIGJhbGFuY2Ugc3VwcG9ydC4gT3RoZXJ3aXNlLAorICogICAlRkFMU0UuCisgKi8KK2dib29sZWFuCitnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlIChHc3RQbGF5ZXIgKiBzZWxmKQoreworICBjb25zdCBHTGlzdCAqY2hhbm5lbHM7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCBGQUxTRSk7CisKKyAgaWYgKCFHU1RfSVNfQ09MT1JfQkFMQU5DRSAoc2VsZi0+cGxheWJpbikpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGNoYW5uZWxzID0KKyAgICAgIGdzdF9jb2xvcl9iYWxhbmNlX2xpc3RfY2hhbm5lbHMgKEdTVF9DT0xPUl9CQUxBTkNFIChzZWxmLT5wbGF5YmluKSk7CisgIHJldHVybiAoY2hhbm5lbHMgIT0gTlVMTCk7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zZXRfY29sb3JfYmFsYW5jZToKKyAqIEBwbGF5ZXI6ICNHc3RQbGF5ZXIgaW5zdGFuY2UKKyAqIEB0eXBlOiAjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZQorICogQHZhbHVlOiBUaGUgbmV3IHZhbHVlIGZvciB0aGUgQHR5cGUsIHJhbmdlZCBbMCwxXQorICoKKyAqIFNldHMgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGluZGljYXRlZCBjaGFubmVsIEB0eXBlIHRvIHRoZSBwYXNzZWQKKyAqIHZhbHVlLgorICovCit2b2lkCitnc3RfcGxheWVyX3NldF9jb2xvcl9iYWxhbmNlIChHc3RQbGF5ZXIgKiBzZWxmLCBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIHR5cGUsCisgICAgZ2RvdWJsZSB2YWx1ZSkKK3sKKyAgR3N0Q29sb3JCYWxhbmNlQ2hhbm5lbCAqY2hhbm5lbDsKKyAgZ2RvdWJsZSBuZXdfdmFsOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAodmFsdWUgPj0gMC4wICYmIHZhbHVlIDw9IDEuMCk7CisKKyAgaWYgKCFHU1RfSVNfQ09MT1JfQkFMQU5DRSAoc2VsZi0+cGxheWJpbikpCisgICAgcmV0dXJuOworCisgIGNoYW5uZWwgPSBnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfZmluZF9jaGFubmVsIChzZWxmLCB0eXBlKTsKKyAgaWYgKCFjaGFubmVsKQorICAgIHJldHVybjsKKworICB2YWx1ZSA9IENMQU1QICh2YWx1ZSwgMC4wLCAxLjApOworCisgIC8qIENvbnZlcnQgdG8gY2hhbm5lbCByYW5nZSAqLworICBuZXdfdmFsID0gY2hhbm5lbC0+bWluX3ZhbHVlICsgdmFsdWUgKiAoKGdkb3VibGUpIGNoYW5uZWwtPm1heF92YWx1ZSAtCisgICAgICAoZ2RvdWJsZSkgY2hhbm5lbC0+bWluX3ZhbHVlKTsKKworICBnc3RfY29sb3JfYmFsYW5jZV9zZXRfdmFsdWUgKEdTVF9DT0xPUl9CQUxBTkNFIChzZWxmLT5wbGF5YmluKSwgY2hhbm5lbCwKKyAgICAgIG5ld192YWwpOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZ2V0X2NvbG9yX2JhbGFuY2U6CisgKiBAcGxheWVyOiAjR3N0UGxheWVyIGluc3RhbmNlCisgKiBAdHlwZTogI0dzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUKKyAqCisgKiBSZXRyaWV2ZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgaW5kaWNhdGVkIEB0eXBlLgorICoKKyAqIFJldHVybnM6IFRoZSBjdXJyZW50IHZhbHVlIG9mIEB0eXBlLCBiZXR3ZWVuIFswLDFdLiBJbiBjYXNlIG9mCisgKiAgIGVycm9yIC0xIGlzIHJldHVybmVkLgorICovCitnZG91YmxlCitnc3RfcGxheWVyX2dldF9jb2xvcl9iYWxhbmNlIChHc3RQbGF5ZXIgKiBzZWxmLCBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIHR5cGUpCit7CisgIEdzdENvbG9yQmFsYW5jZUNoYW5uZWwgKmNoYW5uZWw7CisgIGdpbnQgdmFsdWU7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKEdTVF9JU19QTEFZRVIgKHNlbGYpLCAtMSk7CisKKyAgaWYgKCFHU1RfSVNfQ09MT1JfQkFMQU5DRSAoc2VsZi0+cGxheWJpbikpCisgICAgcmV0dXJuIC0xOworCisgIGNoYW5uZWwgPSBnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfZmluZF9jaGFubmVsIChzZWxmLCB0eXBlKTsKKyAgaWYgKCFjaGFubmVsKQorICAgIHJldHVybiAtMTsKKworICB2YWx1ZSA9IGdzdF9jb2xvcl9iYWxhbmNlX2dldF92YWx1ZSAoR1NUX0NPTE9SX0JBTEFOQ0UgKHNlbGYtPnBsYXliaW4pLAorICAgICAgY2hhbm5lbCk7CisKKyAgcmV0dXJuICgoZ2RvdWJsZSkgdmFsdWUgLQorICAgICAgKGdkb3VibGUpIGNoYW5uZWwtPm1pbl92YWx1ZSkgLyAoKGdkb3VibGUpIGNoYW5uZWwtPm1heF92YWx1ZSAtCisgICAgICAoZ2RvdWJsZSkgY2hhbm5lbC0+bWluX3ZhbHVlKTsKK30KKworI2RlZmluZSBDX0VOVU0odikgKChnaW50KSB2KQorI2RlZmluZSBDX0ZMQUdTKHYpICgoZ3VpbnQpIHYpCisKK0dUeXBlCitnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfdHlwZSAodm9pZCkKK3sKKyAgc3RhdGljIGdzaXplIGlkID0gMDsKKyAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgdmFsdWVzW10gPSB7CisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0hVRSksICJHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfSFVFIiwKKyAgICAgICAgImh1ZSJ9LAorICAgIHtDX0VOVU0gKEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9CUklHSFRORVNTKSwKKyAgICAgICAgIkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9CUklHSFRORVNTIiwgImJyaWdodG5lc3MifSwKKyAgICB7Q19FTlVNIChHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfU0FUVVJBVElPTiksCisgICAgICAgICJHU1RfUExBWUVSX0NPTE9SX0JBTEFOQ0VfU0FUVVJBVElPTiIsICJzYXR1cmF0aW9uIn0sCisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0NPTlRSQVNUKSwKKyAgICAgICAgIkdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9DT05UUkFTVCIsICJjb250cmFzdCJ9LAorICAgIHswLCBOVUxMLCBOVUxMfQorICB9OworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJmlkKSkgeworICAgIEdUeXBlIHRtcCA9IGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIiwgdmFsdWVzKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJmlkLCB0bXApOworICB9CisKKyAgcmV0dXJuIChHVHlwZSkgaWQ7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X25hbWU6CisgKiBAdHlwZTogYSAjR3N0UGxheWVyQ29sb3JCYWxhbmNlVHlwZQorICoKKyAqIEdldHMgYSBzdHJpbmcgcmVwcmVzZW50aW5nIHRoZSBnaXZlbiBjb2xvciBiYWxhbmNlIHR5cGUuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhIHN0cmluZyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBjb2xvcgorICogICBiYWxhbmNlIHR5cGUuCisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF9uYW1lIChHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIHR5cGUpCit7CisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0eXBlID49IEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9CUklHSFRORVNTICYmCisgICAgICB0eXBlIDw9IEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9IVUUsIE5VTEwpOworCisgIHJldHVybiBjYl9jaGFubmVsX21hcFt0eXBlXS5uYW1lOworfQorCitHVHlwZQorZ3N0X3BsYXllcl9zdGF0ZV9nZXRfdHlwZSAodm9pZCkKK3sKKyAgc3RhdGljIGdzaXplIGlkID0gMDsKKyAgc3RhdGljIGNvbnN0IEdFbnVtVmFsdWUgdmFsdWVzW10gPSB7CisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKSwgIkdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCIsICJzdG9wcGVkIn0sCisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpLCAiR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkciLAorICAgICAgICAiYnVmZmVyaW5nIn0sCisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9TVEFURV9QQVVTRUQpLCAiR1NUX1BMQVlFUl9TVEFURV9QQVVTRUQiLCAicGF1c2VkIn0sCisgICAge0NfRU5VTSAoR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HKSwgIkdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyIsICJwbGF5aW5nIn0sCisgICAgezAsIE5VTEwsIE5VTEx9CisgIH07CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmaWQpKSB7CisgICAgR1R5cGUgdG1wID0gZ19lbnVtX3JlZ2lzdGVyX3N0YXRpYyAoIkdzdFBsYXllclN0YXRlIiwgdmFsdWVzKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJmlkLCB0bXApOworICB9CisKKyAgcmV0dXJuIChHVHlwZSkgaWQ7Cit9CisKKy8qKgorICogZ3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZToKKyAqIEBzdGF0ZTogYSAjR3N0UGxheWVyU3RhdGUKKyAqCisgKiBHZXRzIGEgc3RyaW5nIHJlcHJlc2VudGluZyB0aGUgZ2l2ZW4gc3RhdGUuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIG5vbmUpOiBhIHN0cmluZyB3aXRoIHRoZSBuYW1lIG9mIHRoZSBzdGF0ZS4KKyAqLworY29uc3QgZ2NoYXIgKgorZ3N0X3BsYXllcl9zdGF0ZV9nZXRfbmFtZSAoR3N0UGxheWVyU3RhdGUgc3RhdGUpCit7CisgIHN3aXRjaCAoc3RhdGUpIHsKKyAgICBjYXNlIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRDoKKyAgICAgIHJldHVybiAic3RvcHBlZCI7CisgICAgY2FzZSBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORzoKKyAgICAgIHJldHVybiAiYnVmZmVyaW5nIjsKKyAgICBjYXNlIEdTVF9QTEFZRVJfU1RBVEVfUEFVU0VEOgorICAgICAgcmV0dXJuICJwYXVzZWQiOworICAgIGNhc2UgR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HOgorICAgICAgcmV0dXJuICJwbGF5aW5nIjsKKyAgfQorCisgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICByZXR1cm4gTlVMTDsKK30KKworR1R5cGUKK2dzdF9wbGF5ZXJfZXJyb3JfZ2V0X3R5cGUgKHZvaWQpCit7CisgIHN0YXRpYyBnc2l6ZSBpZCA9IDA7CisgIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHZhbHVlc1tdID0geworICAgIHtDX0VOVU0gKEdTVF9QTEFZRVJfRVJST1JfRkFJTEVEKSwgIkdTVF9QTEFZRVJfRVJST1JfRkFJTEVEIiwgImZhaWxlZCJ9LAorICAgIHswLCBOVUxMLCBOVUxMfQorICB9OworCisgIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJmlkKSkgeworICAgIEdUeXBlIHRtcCA9IGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RQbGF5ZXJFcnJvciIsIHZhbHVlcyk7CisgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZpZCwgdG1wKTsKKyAgfQorCisgIHJldHVybiAoR1R5cGUpIGlkOworfQorCisvKioKKyAqIGdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWU6CisgKiBAZXJyb3I6IGEgI0dzdFBsYXllckVycm9yCisgKgorICogR2V0cyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIGdpdmVuIGVycm9yLgorICoKKyAqIFJldHVybnM6ICh0cmFuc2ZlciBub25lKTogYSBzdHJpbmcgd2l0aCB0aGUgZ2l2ZW4gZXJyb3IuCisgKi8KK2NvbnN0IGdjaGFyICoKK2dzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWUgKEdzdFBsYXllckVycm9yIGVycm9yKQoreworICBzd2l0Y2ggKGVycm9yKSB7CisgICAgY2FzZSBHU1RfUExBWUVSX0VSUk9SX0ZBSUxFRDoKKyAgICAgIHJldHVybiAiZmFpbGVkIjsKKyAgfQorCisgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICByZXR1cm4gTlVMTDsKK30KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9wbGF5ZXIvZ3N0cGxheWVyLmggYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzOTFiMGYKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QtbGlicy9nc3QvcGxheWVyL2dzdHBsYXllci5oCkBAIC0wLDAgKzEsMTgzIEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBTZWJhc3RpYW4gRHLDtmdlIDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfUExBWUVSX0hfXworI2RlZmluZSBfX0dTVF9QTEFZRVJfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItdHlwZXMuaD4KKyNpbmNsdWRlIDxnc3QvcGxheWVyL2dzdHBsYXllci1zaWduYWwtZGlzcGF0Y2hlci5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpZGVvLXJlbmRlcmVyLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5oPgorCitHX0JFR0lOX0RFQ0xTCisKK0dUeXBlICAgICAgICBnc3RfcGxheWVyX3N0YXRlX2dldF90eXBlICAgICAgICAgICAgICAgICh2b2lkKTsKKyNkZWZpbmUgICAgICBHU1RfVFlQRV9QTEFZRVJfU1RBVEUgICAgICAgICAgICAgICAgICAgIChnc3RfcGxheWVyX3N0YXRlX2dldF90eXBlICgpKQorCisvKioKKyAqIEdzdFBsYXllclN0YXRlOgorICogQEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRDogdGhlIHBsYXllciBpcyBzdG9wcGVkLgorICogQEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HOiB0aGUgcGxheWVyIGlzIGJ1ZmZlcmluZy4KKyAqIEBHU1RfUExBWUVSX1NUQVRFX1BBVVNFRDogdGhlIHBsYXllciBpcyBwYXVzZWQuCisgKiBAR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HOiB0aGUgcGxheWVyIGlzIGN1cnJlbnRseSBwbGF5aW5nIGEKKyAqIHN0cmVhbS4KKyAqLwordHlwZWRlZiBlbnVtCit7CisgIEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRCwKKyAgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcsCisgIEdTVF9QTEFZRVJfU1RBVEVfUEFVU0VELAorICBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkcKK30gR3N0UGxheWVyU3RhdGU7CisKK2NvbnN0IGdjaGFyICpnc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lICAgICAgICAgICAgICAgIChHc3RQbGF5ZXJTdGF0ZSBzdGF0ZSk7CisKK0dRdWFyayAgICAgICBnc3RfcGxheWVyX2Vycm9yX3F1YXJrICAgICAgICAgICAgICAgICAgICh2b2lkKTsKK0dUeXBlICAgICAgICBnc3RfcGxheWVyX2Vycm9yX2dldF90eXBlICAgICAgICAgICAgICAgICh2b2lkKTsKKyNkZWZpbmUgICAgICBHU1RfUExBWUVSX0VSUk9SICAgICAgICAgICAgICAgICAgICAgICAgIChnc3RfcGxheWVyX2Vycm9yX3F1YXJrICgpKQorI2RlZmluZSAgICAgIEdTVF9UWVBFX1BMQVlFUl9FUlJPUiAgICAgICAgICAgICAgICAgICAgKGdzdF9wbGF5ZXJfZXJyb3JfZ2V0X3R5cGUgKCkpCisKKy8qKgorICogR3N0UGxheWVyRXJyb3I6CisgKiBAR1NUX1BMQVlFUl9FUlJPUl9GQUlMRUQ6IGdlbmVyaWMgZXJyb3IuCisgKi8KK3R5cGVkZWYgZW51bSB7CisgIEdTVF9QTEFZRVJfRVJST1JfRkFJTEVEID0gMAorfSBHc3RQbGF5ZXJFcnJvcjsKKworY29uc3QgZ2NoYXIgKmdzdF9wbGF5ZXJfZXJyb3JfZ2V0X25hbWUgICAgICAgICAgICAgICAgKEdzdFBsYXllckVycm9yIGVycm9yKTsKKworR1R5cGUgZ3N0X3BsYXllcl9jb2xvcl9iYWxhbmNlX3R5cGVfZ2V0X3R5cGUgICAgICAgICAgKHZvaWQpOworI2RlZmluZSBHU1RfVFlQRV9QTEFZRVJfQ09MT1JfQkFMQU5DRV9UWVBFICAgICAgICAgICAgKGdzdF9wbGF5ZXJfY29sb3JfYmFsYW5jZV90eXBlX2dldF90eXBlICgpKQorCisvKioKKyAqIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU6CisgKiBAR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0JSSUdIVE5FU1M6IGJyaWdodG5lc3Mgb3IgYmxhY2sgbGV2ZWwuCisgKiBAR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0NPTlRSQVNUOiBjb250cmFzdCBvciBsdW1hIGdhaW4uCisgKiBAR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX1NBVFVSQVRJT046IGNvbG9yIHNhdHVyYXRpb24gb3IgY2hyb21hCisgKiBnYWluLgorICogQEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9IVUU6IGh1ZSBvciBjb2xvciBiYWxhbmNlLgorICovCit0eXBlZGVmIGVudW0KK3sKKyAgR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX0JSSUdIVE5FU1MsCisgIEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9DT05UUkFTVCwKKyAgR1NUX1BMQVlFUl9DT0xPUl9CQUxBTkNFX1NBVFVSQVRJT04sCisgIEdTVF9QTEFZRVJfQ09MT1JfQkFMQU5DRV9IVUUsCit9IEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGU7CisKK2NvbnN0IGdjaGFyICpnc3RfcGxheWVyX2NvbG9yX2JhbGFuY2VfdHlwZV9nZXRfbmFtZSAgIChHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIHR5cGUpOworCisjZGVmaW5lIEdTVF9UWVBFX1BMQVlFUiAgICAgICAgICAgICAoZ3N0X3BsYXllcl9nZXRfdHlwZSAoKSkKKyNkZWZpbmUgR1NUX0lTX1BMQVlFUihvYmopICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUikpCisjZGVmaW5lIEdTVF9JU19QTEFZRVJfQ0xBU1Moa2xhc3MpICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX1BMQVlFUikpCisjZGVmaW5lIEdTVF9QTEFZRVJfR0VUX0NMQVNTKG9iaikgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX1BMQVlFUiwgR3N0UGxheWVyQ2xhc3MpKQorI2RlZmluZSBHU1RfUExBWUVSKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfUExBWUVSLCBHc3RQbGF5ZXIpKQorI2RlZmluZSBHU1RfUExBWUVSX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9QTEFZRVIsIEdzdFBsYXllckNsYXNzKSkKKyNkZWZpbmUgR1NUX1BMQVlFUl9DQVNUKG9iaikgICAgICAgICgoR3N0UGxheWVyKikob2JqKSkKKworCitHVHlwZSAgICAgICAgZ3N0X3BsYXllcl9nZXRfdHlwZSAgICAgICAgICAgICAgICAgICAgICAodm9pZCk7CisKK0dzdFBsYXllciAqICBnc3RfcGxheWVyX25ldyAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXJWaWRlb1JlbmRlcmVyICogdmlkZW9fcmVuZGVyZXIsIEdzdFBsYXllclNpZ25hbERpc3BhdGNoZXIgKiBzaWduYWxfZGlzcGF0Y2hlcik7CisKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3BsYXkgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfcGF1c2UgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Cit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zdG9wICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfc2VlayAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDbG9ja1RpbWUgICBwb3NpdGlvbik7Cit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfcmF0ZSAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgICAgICAgIHJhdGUpOworZ2RvdWJsZSAgICAgIGdzdF9wbGF5ZXJfZ2V0X3JhdGUgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgICAgICAgICAgaW50ZXJ2YWwpOworZ3VpbnQgICAgICAgIGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK2djaGFyICogICAgICBnc3RfcGxheWVyX2dldF91cmkgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfc2V0X3VyaSAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAgKiB1cmkpOworCitHc3RDbG9ja1RpbWUgZ3N0X3BsYXllcl9nZXRfcG9zaXRpb24gICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKK0dzdENsb2NrVGltZSBnc3RfcGxheWVyX2dldF9kdXJhdGlvbiAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworCitnZG91YmxlICAgICAgZ3N0X3BsYXllcl9nZXRfdm9sdW1lICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKK3ZvaWQgICAgICAgICBnc3RfcGxheWVyX3NldF92b2x1bWUgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSAgICAgICAgdmFsKTsKKworZ2Jvb2xlYW4gICAgIGdzdF9wbGF5ZXJfZ2V0X211dGUgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7Cit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfbXV0ZSAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgIHZhbCk7CisKK0dzdEVsZW1lbnQgKiBnc3RfcGxheWVyX2dldF9waXBlbGluZSAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworCit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2tfZW5hYmxlZCAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZCAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCit2b2lkICAgICAgICAgZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2tfZW5hYmxlZCAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIGVuYWJsZWQpOworCitnYm9vbGVhbiAgICAgZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2sgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICpwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBzdHJlYW1faW5kZXgpOworCitnYm9vbGVhbiAgICAgZ3N0X3BsYXllcl9zZXRfdmlkZW9fdHJhY2sgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICpwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBzdHJlYW1faW5kZXgpOworCitnYm9vbGVhbiAgICAgZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdHJhY2sgICAgICAgICAgICAoR3N0UGxheWVyICAgICpwbGF5ZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCBzdHJlYW1faW5kZXgpOworCitHc3RQbGF5ZXJNZWRpYUluZm8gKiBnc3RfcGxheWVyX2dldF9tZWRpYV9pbmZvICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKworR3N0UGxheWVyQXVkaW9JbmZvICogZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK0dzdFBsYXllclZpZGVvSW5mbyAqIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlkZW9fdHJhY2sKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworCitHc3RQbGF5ZXJTdWJ0aXRsZUluZm8gKiBnc3RfcGxheWVyX2dldF9jdXJyZW50X3N1YnRpdGxlX3RyYWNrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyKTsKKworZ2Jvb2xlYW4gICAgIGdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3VyaSAgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBnY2hhciAqdXJpKTsKK2djaGFyICogICAgICBnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmkgICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOworCitnYm9vbGVhbiAgICAgZ3N0X3BsYXllcl9zZXRfdmlzdWFsaXphdGlvbiAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGdjaGFyICpuYW1lKTsKKwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfc2V0X3Zpc3VhbGl6YXRpb25fZW5hYmxlZCAgICAgKEdzdFBsYXllciAgICAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiBlbmFibGVkKTsKKworZ2NoYXIgKiAgICAgIGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfdmlzdWFsaXphdGlvbiAgICAgKEdzdFBsYXllciAgICAqIHBsYXllcik7CisKK2dib29sZWFuICAgICBnc3RfcGxheWVyX2hhc19jb2xvcl9iYWxhbmNlICAgICAgICAgICAgIChHc3RQbGF5ZXIgICAgKiBwbGF5ZXIpOwordm9pZCAgICAgICAgIGdzdF9wbGF5ZXJfc2V0X2NvbG9yX2JhbGFuY2UgICAgICAgICAgICAgKEdzdFBsYXllciAgICAqIHBsYXllciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RQbGF5ZXJDb2xvckJhbGFuY2VUeXBlIHR5cGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2RvdWJsZSB2YWx1ZSk7CitnZG91YmxlICAgICAgZ3N0X3BsYXllcl9nZXRfY29sb3JfYmFsYW5jZSAgICAgICAgICAgICAoR3N0UGxheWVyICAgICogcGxheWVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFBsYXllckNvbG9yQmFsYW5jZVR5cGUgdHlwZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9QTEFZRVJfSF9fICovCmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcGxheWVyL3BsYXllci5oIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9wbGF5ZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZmM5MWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0LWxpYnMvZ3N0L3BsYXllci9wbGF5ZXIuaApAQCAtMCwwICsxLDMwIEBACisvKiBHU3RyZWFtZXIKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgU2ViYXN0aWFuIERyw7ZnZSA8c2ViYXN0aWFuQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fUExBWUVSX0hfXworI2RlZmluZSBfX1BMQVlFUl9IX18KKworI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItbWVkaWEtaW5mby5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLWctbWFpbi1jb250ZXh0LXNpZ25hbC1kaXNwYXRjaGVyLmg+CisjaW5jbHVkZSA8Z3N0L3BsYXllci9nc3RwbGF5ZXItdmlkZW8tb3ZlcmxheS12aWRlby1yZW5kZXJlci5oPgorI2luY2x1ZGUgPGdzdC9wbGF5ZXIvZ3N0cGxheWVyLXZpc3VhbGl6YXRpb24uaD4KKworI2VuZGlmIC8qIF9fUExBWUVSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3VyaWRvd25sb2FkZXIvTWFrZWZpbGUuaW4gYi9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZS5pbgppbmRleCA0ZmI1ZGE4Li5jNzFmYWU5IDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSBcCkBAIC0yNjIsNiArMjYxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yOTksNiArMzAwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMDcsNyArMzEwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzI2LDggKzMyOCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNDQsMTYgKzM0NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNzksNiArMzgzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDA0LDYgKzQxMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUwNSw2ICs1MTMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTE4LDggKzUyNyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUzNSw2ICs1NDIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTkyLDE2ICs2MDEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NTMsNiArNjY0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY2Myw2ICs2NzUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NzIsNiArNjg1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcwOSw3ICs3MjQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQppbmRleCA1MTA4MjgxLi42Y2RhZDZmIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuYW0KKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCkBAIC0yMyw0ICsyMyw1IEBACiAKIGxpYmdzdGJhZHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpICQoR1NUX0xUX0xERkxBR1MpCiAKLW5vaW5zdF9IRUFERVJTID0gZ3N0dmlkZW9hZ2dyZWdhdG9ycGFkLmggZ3N0dmlkZW9hZ2dyZWdhdG9yLmgKK2xpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC92aWRlbworbGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMgPSBnc3R2aWRlb2FnZ3JlZ2F0b3JwYWQuaCBnc3R2aWRlb2FnZ3JlZ2F0b3IuaApkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmluCmluZGV4IDNhNGE2ZDQuLmRmMTE3ZjQgMTAwNjQ0Ci0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5pbgorKysgYi9nc3QtbGlicy9nc3QvdmlkZW8vTWFrZWZpbGUuaW4KQEAgLTExNiwxOSArMTE2LDE5IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQotRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXAorRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gXAorCSQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpIFwKIAkkKGFtX19ESVNUX0NPTU1PTikKIG1raW5zdGFsbGRpcnMgPSAkKGluc3RhbGxfc2gpIC1kCiBDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCkBAIC0xNjEsNyArMTYxLDggQEAKICAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCiAgICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCiAgIH0KLWFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChsaWJkaXIpIgorYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGxpYmRpcikiIFwKKwkiJChERVNURElSKSQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIKIExUTElCUkFSSUVTID0gJChsaWJfTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQogbGliZ3N0YmFkdmlkZW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9iYXNlL2xpYmdzdGJhZGJhc2UtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKQEAgLTIyNSwyNiArMjI2LDggQEAKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKICAgICAqKSAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOzsgXAogICBlc2FjCi1IRUFERVJTID0gJChub2luc3RfSEVBREVSUykKK0hFQURFUlMgPSAkKGxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKQogYW1fX3RhZ2dlZF9maWxlcyA9ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKFRBR1NfRklMRVMpICQoTElTUCkKLSMgUmVhZCBhIGxpc3Qgb2YgbmV3bGluZS1zZXBhcmF0ZWQgc3RyaW5ncyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCwKLSMgYW5kIHByaW50IGVhY2ggb2YgdGhlbSBvbmNlLCB3aXRob3V0IGR1cGxpY2F0ZXMuICBJbnB1dCBvcmRlciBpcwotIyAqbm90KiBwcmVzZXJ2ZWQuCi1hbV9fdW5pcXVpZnlfaW5wdXQgPSAkKEFXSykgJ1wKLSAgQkVHSU4geyBub25lbXB0eSA9IDA7IH0gXAotICB7IGl0ZW1zWyQkMF0gPSAxOyBub25lbXB0eSA9IDE7IH0gXAotICBFTkQgeyBpZiAobm9uZW1wdHkpIHsgZm9yIChpIGluIGl0ZW1zKSBwcmludCBpOyB9OyB9IFwKLScKLSMgTWFrZSBzdXJlIHRoZSBsaXN0IG9mIHNvdXJjZXMgaXMgdW5pcXVlLiAgVGhpcyBpcyBuZWNlc3NhcnkgYmVjYXVzZSwKLSMgZS5nLiwgdGhlIHNhbWUgc291cmNlIGZpbGUgbWlnaHQgYmUgc2hhcmVkIGFtb25nIF9TT1VSQ0VTIHZhcmlhYmxlcwotIyBmb3IgZGlmZmVyZW50IHByb2dyYW1zL2xpYnJhcmllcy4KLWFtX19kZWZpbmVfdW5pcV90YWdnZWRfZmlsZXMgPSBcCi0gIGxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCi0gIHVuaXF1ZT1gZm9yIGkgaW4gJCRsaXN0OyBkbyBcCi0gICAgaWYgdGVzdCAtZiAiJCRpIjsgdGhlbiBlY2hvICQkaTsgZWxzZSBlY2hvICQoc3JjZGlyKS8kJGk7IGZpOyBcCi0gIGRvbmUgfCAkKGFtX191bmlxdWlmeV9pbnB1dClgCi1FVEFHUyA9IGV0YWdzCi1DVEFHUyA9IGN0YWdzCiBhbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3Bfc3JjZGlyKS9kZXBjb21wCiBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQogQUNMT0NBTCA9IEBBQ0xPQ0FMQApAQCAtMjgyLDYgKzI2NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE5LDYgKzMwNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI3LDcgKzMxNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Niw4ICszMzIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY0LDE2ICszNTEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk5LDYgKzM4Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNCw2ICs0MTQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjUsNiArNTE3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzOCw4ICs1MzEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTUsNiArNTQ2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMiwxNiArNjA1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjczLDYgKzY2OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODMsNiArNjc5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkyLDYgKzY4OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjksNyArNzI4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03OTEsNyArNzg5LDggQEAKIAkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoT1JDX0xJQlMpICQoTElCTSkKIAogbGliZ3N0YmFkdmlkZW9fQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykgJChHU1RfTFRfTERGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gZ3N0dmlkZW9hZ2dyZWdhdG9ycGFkLmggZ3N0dmlkZW9hZ2dyZWdhdG9yLmgKK2xpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciA9ICQoaW5jbHVkZWRpcikvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2dzdC92aWRlbworbGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMgPSBnc3R2aWRlb2FnZ3JlZ2F0b3JwYWQuaCBnc3R2aWRlb2FnZ3JlZ2F0b3IuaAogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtOTA4LDU4ICs5MDcsMzMgQEAKIAogY2xlYW4tbGlidG9vbDoKIAktcm0gLXJmIC5saWJzIF9saWJzCitpbnN0YWxsLWxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZUhFQURFUlM6ICQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpCisJQCQoTk9STUFMX0lOU1RBTEwpCisJQGxpc3Q9JyQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlX0hFQURFUlMpJzsgdGVzdCAtbiAiJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIiB8fCBsaXN0PTsgXAorCWlmIHRlc3QgLW4gIiQkbGlzdCI7IHRoZW4gXAorCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKGxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciknIjsgXAorCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgZXhpdCAxOyBcCisJZmk7IFwKKwlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCisJICBlY2hvICIkJGQkJHAiOyBcCisJZG9uZSB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCisJd2hpbGUgcmVhZCBmaWxlczsgZG8gXAorCSAgZWNobyAiICQoSU5TVEFMTF9IRUFERVIpICQkZmlsZXMgJyQoREVTVERJUikkKGxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZWRpciknIjsgXAorCSAgJChJTlNUQUxMX0hFQURFUikgJCRmaWxlcyAiJChERVNURElSKSQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgZXhpdCAkJD87IFwKKwlkb25lCiAKLUlEOiAkKGFtX190YWdnZWRfZmlsZXMpCi0JJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgbWtpZCAtZklEICQkdW5pcXVlCi10YWdzOiB0YWdzLWFtCi1UQUdTOiB0YWdzCit1bmluc3RhbGwtbGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUzoKKwlAJChOT1JNQUxfVU5JTlNUQUxMKQorCUBsaXN0PSckKGxpYmdzdHZpZGVvX0BHU1RfQVBJX1ZFUlNJT05AaW5jbHVkZV9IRUFERVJTKSc7IHRlc3QgLW4gIiQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSIgfHwgbGlzdD07IFwKKwlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAorCWRpcj0nJChERVNURElSKSQobGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlZGlyKSc7ICQoYW1fX3VuaW5zdGFsbF9maWxlc19mcm9tX2RpcikKK3RhZ3MgVEFHUzoKIAotdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQotCXNldCB4OyBcCi0JaGVyZT1gcHdkYDsgXAotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKLQlzaGlmdDsgXAotCWlmIHRlc3QgLXogIiQoRVRBR1NfQVJHUykkJCokJHVuaXF1ZSI7IHRoZW4gOjsgZWxzZSBcCi0JICB0ZXN0IC1uICIkJHVuaXF1ZSIgfHwgdW5pcXVlPSQkZW1wdHlfZml4OyBcCi0JICBpZiB0ZXN0ICQkIyAtZ3QgMDsgdGhlbiBcCi0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKLQkgICAgICAiJCRAIiAkJHVuaXF1ZTsgXAotCSAgZWxzZSBcCi0JICAgICQoRVRBR1MpICQoRVRBR1NGTEFHUykgJChBTV9FVEFHU0ZMQUdTKSAkKEVUQUdTX0FSR1MpIFwKLQkgICAgICAkJHVuaXF1ZTsgXAotCSAgZmk7IFwKLQlmaQotY3RhZ3M6IGN0YWdzLWFtCitjdGFncyBDVEFHUzoKIAotQ1RBR1M6IGN0YWdzCi1jdGFncy1hbTogJChUQUdTX0RFUEVOREVOQ0lFUykgJChhbV9fdGFnZ2VkX2ZpbGVzKQotCSQoYW1fX2RlZmluZV91bmlxX3RhZ2dlZF9maWxlcyk7IFwKLQl0ZXN0IC16ICIkKENUQUdTX0FSR1MpJCR1bmlxdWUiIFwKLQkgIHx8ICQoQ1RBR1MpICQoQ1RBR1NGTEFHUykgJChBTV9DVEFHU0ZMQUdTKSAkKENUQUdTX0FSR1MpIFwKLQkgICAgICQkdW5pcXVlCitjc2NvcGUgY3Njb3BlbGlzdDoKIAotR1RBR1M6Ci0JaGVyZT1gJChhbV9fY2QpICQodG9wX2J1aWxkZGlyKSAmJiBwd2RgIFwKLQkgICYmICQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpIFwKLQkgICYmIGd0YWdzIC1pICQoR1RBR1NfQVJHUykgIiQkaGVyZSIKLWNzY29wZWxpc3Q6IGNzY29wZWxpc3QtYW0KLQotY3Njb3BlbGlzdC1hbTogJChhbV9fdGFnZ2VkX2ZpbGVzKQotCWxpc3Q9JyQoYW1fX3RhZ2dlZF9maWxlcyknOyBcCi0JY2FzZSAiJChzcmNkaXIpIiBpbiBcCi0JICBbXFwvXSogfCA/OltcXC9dKikgc2Rpcj0iJChzcmNkaXIpIiA7OyBcCi0JICAqKSBzZGlyPSQoc3ViZGlyKS8kKHNyY2RpcikgOzsgXAotCWVzYWM7IFwKLQlmb3IgaSBpbiAkJGxpc3Q7IGRvIFwKLQkgIGlmIHRlc3QgLWYgIiQkaSI7IHRoZW4gXAotCSAgICBlY2hvICIkKHN1YmRpcikvJCRpIjsgXAotCSAgZWxzZSBcCi0JICAgIGVjaG8gIiQkc2Rpci8kJGkiOyBcCi0JICBmaTsgXAotCWRvbmUgPj4gJCh0b3BfYnVpbGRkaXIpL2NzY29wZS5maWxlcwotCi1kaXN0Y2xlYW4tdGFnczoKLQktcm0gLWYgVEFHUyBJRCBHVEFHUyBHUlRBR1MgR1NZTVMgR1BBVEggdGFncwogCiBkaXN0ZGlyOiAkKERJU1RGSUxFUykKIAlAc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3MvW10uW14kJFxcKl0vXFxcXCYvZydgOyBcCkBAIC05OTUsNyArOTY5LDcgQEAKIGNoZWNrOiBjaGVjay1hbQogYWxsLWFtOiBNYWtlZmlsZSAkKExUTElCUkFSSUVTKSAkKEhFQURFUlMpCiBpbnN0YWxsZGlyczoKLQlmb3IgZGlyIGluICIkKERFU1RESVIpJChsaWJkaXIpIjsgZG8gXAorCWZvciBkaXIgaW4gIiQoREVTVERJUikkKGxpYmRpcikiICIkKERFU1RESVIpJChsaWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVkaXIpIjsgZG8gXAogCSAgdGVzdCAteiAiJCRkaXIiIHx8ICQoTUtESVJfUCkgIiQkZGlyIjsgXAogCWRvbmUKIGluc3RhbGw6IGluc3RhbGwtYW0KQEAgLTEwMzcsOCArMTAxMSw3IEBACiBkaXN0Y2xlYW46IGRpc3RjbGVhbi1hbQogCS1ybSAtcmYgLi8kKERFUERJUikKIAktcm0gLWYgTWFrZWZpbGUKLWRpc3RjbGVhbi1hbTogY2xlYW4tYW0gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAotCWRpc3RjbGVhbi10YWdzCitkaXN0Y2xlYW4tYW06IGNsZWFuLWFtIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljCiAKIGR2aTogZHZpLWFtCiAKQEAgLTEwNTIsNyArMTAyNSw3IEBACiAKIGluZm8tYW06CiAKLWluc3RhbGwtZGF0YS1hbToKK2luc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1saWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTCiAKIGluc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1hbQogCkBAIC0xMDk4LDIzICsxMDcxLDI3IEBACiAKIHBzLWFtOgogCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1saWJMVExJQlJBUklFUwordW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtbGliTFRMSUJSQVJJRVMgXAorCXVuaW5zdGFsbC1saWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTCiAKIC5NQUtFOiBpbnN0YWxsLWFtIGluc3RhbGwtc3RyaXAKIAotLlBIT05ZOiBDVEFHUyBHVEFHUyBUQUdTIGFsbCBhbGwtYW0gY2hlY2sgY2hlY2stYW0gY2xlYW4gY2xlYW4tZ2VuZXJpYyBcCi0JY2xlYW4tbGliTFRMSUJSQVJJRVMgY2xlYW4tbGlidG9vbCBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKLQljdGFncy1hbSBkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAotCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIFwKLQlodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIFwKLQlpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIFwKLQlpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gXAotCWluc3RhbGwtaW5mby1hbSBpbnN0YWxsLWxpYkxUTElCUkFSSUVTIGluc3RhbGwtbWFuIGluc3RhbGwtcGRmIFwKLQlpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBcCi0JaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBtYWludGFpbmVyLWNsZWFuIFwKLQltYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gbW9zdGx5Y2xlYW4tY29tcGlsZSBcCi0JbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIHBkZiBwZGYtYW0gcHMgcHMtYW0gXAotCXRhZ3MgdGFncy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIHVuaW5zdGFsbC1saWJMVExJQlJBUklFUworLlBIT05ZOiBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgXAorCWNsZWFuLWxpYkxUTElCUkFSSUVTIGNsZWFuLWxpYnRvb2wgY3Njb3BlbGlzdC1hbSBjdGFncy1hbSBcCisJZGlzdGNsZWFuIGRpc3RjbGVhbi1jb21waWxlIGRpc3RjbGVhbi1nZW5lcmljIFwKKwlkaXN0Y2xlYW4tbGlidG9vbCBkaXN0ZGlyIGR2aSBkdmktYW0gaHRtbCBodG1sLWFtIGluZm8gaW5mby1hbSBcCisJaW5zdGFsbCBpbnN0YWxsLWFtIGluc3RhbGwtZGF0YSBpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgXAorCWluc3RhbGwtZHZpLWFtIGluc3RhbGwtZXhlYyBpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIFwKKwlpbnN0YWxsLWh0bWwtYW0gaW5zdGFsbC1pbmZvIGluc3RhbGwtaW5mby1hbSBcCisJaW5zdGFsbC1saWJMVExJQlJBUklFUyBcCisJaW5zdGFsbC1saWJnc3R2aWRlb19AR1NUX0FQSV9WRVJTSU9OQGluY2x1ZGVIRUFERVJTIFwKKwlpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBpbnN0YWxsLXBzIFwKKwlpbnN0YWxsLXBzLWFtIGluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBcCisJaW5zdGFsbGRpcnMgbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgXAorCW1vc3RseWNsZWFuIG1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBcCisJbW9zdGx5Y2xlYW4tbGlidG9vbCBwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MtYW0gdW5pbnN0YWxsIFwKKwl1bmluc3RhbGwtYW0gdW5pbnN0YWxsLWxpYkxUTElCUkFSSUVTIFwKKwl1bmluc3RhbGwtbGliZ3N0dmlkZW9fQEdTVF9BUElfVkVSU0lPTkBpbmNsdWRlSEVBREVSUwogCiAuUFJFQ0lPVVM6IE1ha2VmaWxlCiAKZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuYyBiL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuYwppbmRleCBlYTFlODEwLi4xYmY2ZWEwIDEwMDY0NAotLS0gYS9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9hZ2dyZWdhdG9yLmMKKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5jCkBAIC01MzIsODYgKzUzMiw2IEBACiAgIGdfaGFzaF90YWJsZV91bnJlZiAoZm9ybWF0c190YWJsZSk7CiB9CiAKLS8qIFdJVEggR1NUX1ZJREVPX0FHR1JFR0FUT1JfTE9DSyBUQUtFTgotICogTk9URTogQWZ0ZXIgY2FsbGluZyB0aGF0IG1ldGhvZCB5b3UgKipoYXZlIHRvKiogY2FsbAotICogICAgICAgZ3N0X3ZpZGVvYWdncmVnYXRvcl91cGRhdGVfc3JjX2NhcHMgKHdpdGhvdXQgcmVsZWFzaW5nCi0gKiAgICAgICB0aGUgR1NUX1ZJREVPX0FHR1JFR0FUT1JfTE9DSyBpbiBiZXR3ZWVuKQotICovCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF92aWRlb2FnZ3JlZ2F0b3JfdXBkYXRlX2NvbnZlcnRlcnMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2cpCi17Ci0gIEdMaXN0ICp0bXA7Ci0gIEdzdFZpZGVvRm9ybWF0IGJlc3RfZm9ybWF0OwotICBHc3RWaWRlb0luZm8gYmVzdF9pbmZvOwotICBnYm9vbGVhbiBhdF9sZWFzdF9vbmVfYWxwaGEgPSBGQUxTRTsKLSAgR3N0Q2FwcyAqZG93bnN0cmVhbV9jYXBzOwotICBHc3RBZ2dyZWdhdG9yICphZ2cgPSBHU1RfQUdHUkVHQVRPUiAodmFnZyk7Ci0KLSAgR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3MgKnZhZ2dfY2xhc3MgPSBHU1RfVklERU9fQUdHUkVHQVRPUl9HRVRfQ0xBU1MgKHZhZ2cpOwotICBHc3RWaWRlb0FnZ3JlZ2F0b3JQYWRDbGFzcyAqdmFnZ3BhZF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrCi0gICAgICAoR1NUX0FHR1JFR0FUT1JfR0VUX0NMQVNTICh2YWdnKS0+c2lua3BhZHNfdHlwZSk7Ci0KLSAgYmVzdF9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1VOS05PV047Ci0gIGdzdF92aWRlb19pbmZvX2luaXQgKCZiZXN0X2luZm8pOwotCi0gIGRvd25zdHJlYW1fY2FwcyA9IGdzdF9wYWRfZ2V0X2FsbG93ZWRfY2FwcyAoYWdnLT5zcmNwYWQpOwotCi0gIGlmICghZG93bnN0cmVhbV9jYXBzIHx8IGdzdF9jYXBzX2lzX2VtcHR5IChkb3duc3RyZWFtX2NhcHMpKSB7Ci0gICAgR1NUX0lORk9fT0JKRUNUICh2YWdnLCAiTm8gZG93bnN0cmVhbSBjYXBzIGZvdW5kICUiCi0gICAgICAgIEdTVF9QVFJfRk9STUFULCBkb3duc3RyZWFtX2NhcHMpOwotICAgIGlmIChkb3duc3RyZWFtX2NhcHMpCi0gICAgICBnc3RfY2Fwc191bnJlZiAoZG93bnN0cmVhbV9jYXBzKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotCi0gIGlmICh2YWdnX2NsYXNzLT5maW5kX2Jlc3RfZm9ybWF0KSB7Ci0gICAgdmFnZ19jbGFzcy0+ZmluZF9iZXN0X2Zvcm1hdCAodmFnZywgZG93bnN0cmVhbV9jYXBzLCAmYmVzdF9pbmZvLAotICAgICAgICAmYXRfbGVhc3Rfb25lX2FscGhhKTsKLQotICAgIGJlc3RfZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUICgmYmVzdF9pbmZvKTsKLSAgfQotCi0gIGlmIChiZXN0X2Zvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pIHsKLSAgICBkb3duc3RyZWFtX2NhcHMgPSBnc3RfY2Fwc19maXhhdGUgKGRvd25zdHJlYW1fY2Fwcyk7Ci0gICAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmYmVzdF9pbmZvLCBkb3duc3RyZWFtX2NhcHMpOwotICAgIGJlc3RfZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUICgmYmVzdF9pbmZvKTsKLSAgfQotCi0gIGdzdF9jYXBzX3VucmVmIChkb3duc3RyZWFtX2NhcHMpOwotCi0gIGlmIChhdF9sZWFzdF9vbmVfYWxwaGEKLSAgICAgICYmICEoYmVzdF9pbmZvLmZpbmZvLT5mbGFncyAmIEdTVF9WSURFT19GT1JNQVRfRkxBR19BTFBIQSkpIHsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAodmFnZywgQ09SRSwgTkVHT1RJQVRJT04sCi0gICAgICAgICgiQXQgbGVhc3Qgb25lIG9mIHRoZSBpbnB1dCBwYWRzIGNvbnRhaW5zIGFscGhhLCBidXQgZG93bnN0cmVhbSBjYW4ndCBzdXBwb3J0IGFscGhhLiIpLAotICAgICAgICAoIkVpdGhlciBjb252ZXJ0IHlvdXIgaW5wdXRzIHRvIG5vdCBjb250YWluIGFscGhhIG9yIGFkZCBhIHZpZGVvY29udmVydCBhZnRlciB0aGUgYWdncmVnYXRvciIpKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICB2YWdnLT5pbmZvID0gYmVzdF9pbmZvOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHZhZ2csCi0gICAgICAiVGhlIG91dHB1dCBmb3JtYXQgd2lsbCBub3cgYmUgOiAlZCB3aXRoIGNocm9tYSA6ICVzIiwKLSAgICAgIGJlc3RfZm9ybWF0LCBnc3RfdmlkZW9fY2hyb21hX3RvX3N0cmluZyAoYmVzdF9pbmZvLmNocm9tYV9zaXRlKSk7Ci0KLSAgaWYgKHZhZ2dwYWRfY2xhc3MtPnNldF9pbmZvKSB7Ci0gICAgR1NUX09CSkVDVF9MT0NLICh2YWdnKTsKLSAgICAvKiBUaGVuIGJyb3dzZSB0aGUgc2lua3Mgb25jZSBtb3JlLCBzZXR0aW5nIG9yIHVuc2V0dGluZyBjb252ZXJzaW9uIGlmIG5lZWRlZCAqLwotICAgIGZvciAodG1wID0gR1NUX0VMRU1FTlQgKHZhZ2cpLT5zaW5rcGFkczsgdG1wOyB0bXAgPSB0bXAtPm5leHQpIHsKLSAgICAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqcGFkID0gR1NUX1ZJREVPX0FHR1JFR0FUT1JfUEFEICh0bXAtPmRhdGEpOwotCi0gICAgICBpZiAoIXZhZ2dwYWRfY2xhc3MtPnNldF9pbmZvIChwYWQsIHZhZ2csICZwYWQtPmluZm8sICZiZXN0X2luZm8pKSB7Ci0gICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLICh2YWdnKTsKLQotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICB9Ci0gICAgfQotICAgIEdTVF9PQkpFQ1RfVU5MT0NLICh2YWdnKTsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCiAvKiBXSVRIIEdTVF9WSURFT19BR0dSRUdBVE9SX0xPQ0sgVEFLRU4gKi8KIHN0YXRpYyBnYm9vbGVhbgogZ3N0X3ZpZGVvYWdncmVnYXRvcl9zcmNfc2V0Y2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpCkBAIC02NjIsMjUgKzU4MiwyMiBAQAogICByZXR1cm4gcmV0OwogfQogCi0vKiBXSVRIIEdTVF9WSURFT19BR0dSRUdBVE9SX0xPQ0sgVEFLRU4gKi8KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3ZpZGVvYWdncmVnYXRvcl91cGRhdGVfc3JjX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2cpCitzdGF0aWMgR3N0Q2FwcyAqCitnc3RfdmlkZW9hZ2dyZWdhdG9yX2RlZmF1bHRfZml4YXRlX2NhcHMgKEdzdFZpZGVvQWdncmVnYXRvciAqIHZhZ2csCisgICAgR3N0Q2FwcyAqIGNhcHMpCiB7Ci0gIEdMaXN0ICpsOwogICBnaW50IGJlc3Rfd2lkdGggPSAtMSwgYmVzdF9oZWlnaHQgPSAtMTsKLSAgZ2RvdWJsZSBiZXN0X2ZwcyA9IC0xLCBjdXJfZnBzOwogICBnaW50IGJlc3RfZnBzX24gPSAtMSwgYmVzdF9mcHNfZCA9IC0xOwotICBnYm9vbGVhbiByZXQgPSBUUlVFOwotICBHc3RFbGVtZW50Q2xhc3MgKmtsYXNzID0gR1NUX0VMRU1FTlRfR0VUX0NMQVNTICh2YWdnKTsKLSAgR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3MgKnZhZ2dfa2xhc3MgPSAoR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3MgKikga2xhc3M7Ci0gIEdzdEFnZ3JlZ2F0b3IgKmFnZyA9IEdTVF9BR0dSRUdBVE9SICh2YWdnKTsKKyAgZ2RvdWJsZSBiZXN0X2ZwcyA9IC0xLjsKKyAgR3N0U3RydWN0dXJlICpzOworICBHTGlzdCAqbDsKIAogICBHU1RfT0JKRUNUX0xPQ0sgKHZhZ2cpOwogICBmb3IgKGwgPSBHU1RfRUxFTUVOVCAodmFnZyktPnNpbmtwYWRzOyBsOyBsID0gbC0+bmV4dCkgewogICAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqbXBhZCA9IGwtPmRhdGE7Ci0gICAgZ2ludCB0aGlzX3dpZHRoLCB0aGlzX2hlaWdodDsKICAgICBnaW50IGZwc19uLCBmcHNfZDsKICAgICBnaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZ2RvdWJsZSBjdXJfZnBzOwogCiAgICAgZnBzX24gPSBHU1RfVklERU9fSU5GT19GUFNfTiAoJm1wYWQtPmluZm8pOwogICAgIGZwc19kID0gR1NUX1ZJREVPX0lORk9fRlBTX0QgKCZtcGFkLT5pbmZvKTsKQEAgLTY5MCwxMyArNjA3LDEwIEBACiAgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCiAgICAgICBjb250aW51ZTsKIAotICAgIHRoaXNfd2lkdGggPSB3aWR0aDsKLSAgICB0aGlzX2hlaWdodCA9IGhlaWdodDsKLQotICAgIGlmIChiZXN0X3dpZHRoIDwgdGhpc193aWR0aCkKLSAgICAgIGJlc3Rfd2lkdGggPSB0aGlzX3dpZHRoOwotICAgIGlmIChiZXN0X2hlaWdodCA8IHRoaXNfaGVpZ2h0KQotICAgICAgYmVzdF9oZWlnaHQgPSB0aGlzX2hlaWdodDsKKyAgICBpZiAoYmVzdF93aWR0aCA8IHdpZHRoKQorICAgICAgYmVzdF93aWR0aCA9IHdpZHRoOworICAgIGlmIChiZXN0X2hlaWdodCA8IGhlaWdodCkKKyAgICAgIGJlc3RfaGVpZ2h0ID0gaGVpZ2h0OwogCiAgICAgaWYgKGZwc19kID09IDApCiAgICAgICBjdXJfZnBzID0gMC4wOwpAQCAtNzE3LDg4ICs2MzEsMTQyIEBACiAgICAgYmVzdF9mcHMgPSAyNS4wOwogICB9CiAKLSAgaWYgKGJlc3Rfd2lkdGggPiAwICYmIGJlc3RfaGVpZ2h0ID4gMCAmJiBiZXN0X2ZwcyA+IDApIHsKLSAgICBHc3RDYXBzICpjYXBzLCAqcGVlcmNhcHMsICppbmZvX2NhcHM7Ci0gICAgR3N0U3RydWN0dXJlICpzOwotICAgIEdzdFZpZGVvSW5mbyBpbmZvOwotICAgIGludCBpOworICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzLCAid2lkdGgiLCBiZXN0X3dpZHRoKTsKKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJoZWlnaHQiLCBiZXN0X2hlaWdodCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCBiZXN0X2Zwc19uLAorICAgICAgYmVzdF9mcHNfZCk7CisgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIpKQorICAgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAxLCAxKTsKKyAgY2FwcyA9IGdzdF9jYXBzX2ZpeGF0ZSAoY2Fwcyk7CiAKLSAgICAvKiBJbml0aWFsaXplIHRoZSB2aWRlbyBpbmZvIHdpdGggb3VyIHRhcmdldCBmb3JtYXQgYW5kCi0gICAgICogdGhlIGJlc3Qgd2lkdGggYW5kIGhlaWdodCBhbmQgZnJhbWVyYXRlLiBUaGVuIGNvcHkgb3ZlcgotICAgICAqIGFsbCBvdGhlciBmaWVsZHMgYXMgd2UgbmVnb3RpYXRlZCB0aGVtIGJlZm9yZQotICAgICAqLwotICAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZpbmZvLCBHU1RfVklERU9fSU5GT19GT1JNQVQgKCZ2YWdnLT5pbmZvKSwKLSAgICAgICAgYmVzdF93aWR0aCwgYmVzdF9oZWlnaHQpOwotICAgIGluZm8uZnBzX24gPSBiZXN0X2Zwc19uOwotICAgIGluZm8uZnBzX2QgPSBiZXN0X2Zwc19kOwotICAgIGluZm8uY2hyb21hX3NpdGUgPSB2YWdnLT5pbmZvLmNocm9tYV9zaXRlOwotICAgIGluZm8ucGFyX24gPSB2YWdnLT5pbmZvLnBhcl9uOwotICAgIGluZm8ucGFyX2QgPSB2YWdnLT5pbmZvLnBhcl9kOwotICAgIGluZm8uY29sb3JpbWV0cnkgPSB2YWdnLT5pbmZvLmNvbG9yaW1ldHJ5OwotICAgIGluZm8uZmxhZ3MgPSB2YWdnLT5pbmZvLmZsYWdzOwotICAgIGluZm8uaW50ZXJsYWNlX21vZGUgPSB2YWdnLT5pbmZvLmludGVybGFjZV9tb2RlOworICByZXR1cm4gY2FwczsKK30KIAotICAgIGluZm9fY2FwcyA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZpbmZvKTsKK3N0YXRpYyBHc3RDYXBzICoKK2dzdF92aWRlb2FnZ3JlZ2F0b3JfZGVmYXVsdF91cGRhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywKKyAgICBHc3RDYXBzICogY2FwcywgR3N0Q2FwcyAqIGZpbHRlcikKK3sKKyAgR3N0Q2FwcyAqcmV0OwogCi0gICAgaWYgKHZhZ2dfa2xhc3MtPnVwZGF0ZV9jYXBzKSB7Ci0gICAgICBpZiAoIShjYXBzID0gdmFnZ19rbGFzcy0+dXBkYXRlX2NhcHMgKHZhZ2csIGluZm9fY2FwcykpKSB7Ci0gICAgICAgIGdzdF9jYXBzX3VucmVmIChpbmZvX2NhcHMpOwotICAgICAgICByZXQgPSBGQUxTRTsKLSAgICAgICAgZ290byBkb25lOwotICAgICAgfQotICAgICAgZ3N0X2NhcHNfdW5yZWYgKGluZm9fY2Fwcyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGNhcHMgPSBpbmZvX2NhcHM7CisgIGlmIChmaWx0ZXIpIHsKKyAgICByZXQgPSBnc3RfY2Fwc19pbnRlcnNlY3QgKGNhcHMsIGZpbHRlcik7CisgIH0gZWxzZSB7CisgICAgcmV0ID0gZ3N0X2NhcHNfcmVmIChjYXBzKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKKy8qIFdJVEggR1NUX1ZJREVPX0FHR1JFR0FUT1JfTE9DSyBUQUtFTiAqLworc3RhdGljIGdib29sZWFuCitnc3RfdmlkZW9hZ2dyZWdhdG9yX3VwZGF0ZV9zcmNfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZykKK3sKKyAgR3N0VmlkZW9BZ2dyZWdhdG9yQ2xhc3MgKnZhZ2dfa2xhc3MgPSBHU1RfVklERU9fQUdHUkVHQVRPUl9HRVRfQ0xBU1MgKHZhZ2cpOworICBHc3RWaWRlb0FnZ3JlZ2F0b3JQYWRDbGFzcyAqdmFnZ3BhZF9rbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrCisgICAgICAoR1NUX0FHR1JFR0FUT1JfR0VUX0NMQVNTICh2YWdnKS0+c2lua3BhZHNfdHlwZSk7CisgIEdzdEFnZ3JlZ2F0b3IgKmFnZyA9IEdTVF9BR0dSRUdBVE9SICh2YWdnKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRSwgYXRfbGVhc3Rfb25lX3BhZF9jb25maWd1cmVkID0gRkFMU0U7CisgIEdzdFZpZGVvRm9ybWF0IGJlc3RfZm9ybWF0OworICBHc3RWaWRlb0luZm8gYmVzdF9pbmZvOworICBnYm9vbGVhbiBhdF9sZWFzdF9vbmVfYWxwaGEgPSBGQUxTRTsKKyAgR3N0Q2FwcyAqZG93bnN0cmVhbV9jYXBzOworICBHTGlzdCAqbDsKKworICBiZXN0X2Zvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfVU5LTk9XTjsKKyAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJmJlc3RfaW5mbyk7CisKKyAgZG93bnN0cmVhbV9jYXBzID0gZ3N0X3BhZF9nZXRfYWxsb3dlZF9jYXBzIChhZ2ctPnNyY3BhZCk7CisKKyAgaWYgKCFkb3duc3RyZWFtX2NhcHMgfHwgZ3N0X2NhcHNfaXNfZW1wdHkgKGRvd25zdHJlYW1fY2FwcykpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKHZhZ2csICJObyBkb3duc3RyZWFtIGNhcHMgZm91bmQgJSIKKyAgICAgICAgR1NUX1BUUl9GT1JNQVQsIGRvd25zdHJlYW1fY2Fwcyk7CisgICAgaWYgKGRvd25zdHJlYW1fY2FwcykKKyAgICAgIGdzdF9jYXBzX3VucmVmIChkb3duc3RyZWFtX2NhcHMpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGlmICh2YWdnX2tsYXNzLT5maW5kX2Jlc3RfZm9ybWF0KSB7CisgICAgdmFnZ19rbGFzcy0+ZmluZF9iZXN0X2Zvcm1hdCAodmFnZywgZG93bnN0cmVhbV9jYXBzLCAmYmVzdF9pbmZvLAorICAgICAgICAmYXRfbGVhc3Rfb25lX2FscGhhKTsKKworICAgIGJlc3RfZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUICgmYmVzdF9pbmZvKTsKKyAgfQorCisgIGlmIChiZXN0X2Zvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pIHsKKyAgICBHc3RDYXBzICp0bXAgPSBnc3RfY2Fwc19maXhhdGUgKGdzdF9jYXBzX3JlZiAoZG93bnN0cmVhbV9jYXBzKSk7CisgICAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmYmVzdF9pbmZvLCB0bXApOworICAgIGJlc3RfZm9ybWF0ID0gR1NUX1ZJREVPX0lORk9fRk9STUFUICgmYmVzdF9pbmZvKTsKKyAgICBnc3RfY2Fwc191bnJlZiAodG1wKTsKKyAgfQorCisgIGlmIChhdF9sZWFzdF9vbmVfYWxwaGEKKyAgICAgICYmICEoYmVzdF9pbmZvLmZpbmZvLT5mbGFncyAmIEdTVF9WSURFT19GT1JNQVRfRkxBR19BTFBIQSkpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAodmFnZywgQ09SRSwgTkVHT1RJQVRJT04sCisgICAgICAgICgiQXQgbGVhc3Qgb25lIG9mIHRoZSBpbnB1dCBwYWRzIGNvbnRhaW5zIGFscGhhLCBidXQgZG93bnN0cmVhbSBjYW4ndCBzdXBwb3J0IGFscGhhLiIpLAorICAgICAgICAoIkVpdGhlciBjb252ZXJ0IHlvdXIgaW5wdXRzIHRvIG5vdCBjb250YWluIGFscGhhIG9yIGFkZCBhIHZpZGVvY29udmVydCBhZnRlciB0aGUgYWdncmVnYXRvciIpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUICh2YWdnLAorICAgICAgIlRoZSBvdXRwdXQgZm9ybWF0IHdpbGwgbm93IGJlIDogJWQgd2l0aCBjaHJvbWEgOiAlcyIsCisgICAgICBiZXN0X2Zvcm1hdCwgZ3N0X3ZpZGVvX2Nocm9tYV90b19zdHJpbmcgKGJlc3RfaW5mby5jaHJvbWFfc2l0ZSkpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAodmFnZyk7CisgIGZvciAobCA9IEdTVF9FTEVNRU5UICh2YWdnKS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0VmlkZW9BZ2dyZWdhdG9yUGFkICptcGFkID0gbC0+ZGF0YTsKKworICAgIGlmIChHU1RfVklERU9fSU5GT19XSURUSCAoJm1wYWQtPmluZm8pID09IDAKKyAgICAgICAgfHwgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmbXBhZC0+aW5mbykgPT0gMCkKKyAgICAgIGNvbnRpbnVlOworCisgICAgYXRfbGVhc3Rfb25lX3BhZF9jb25maWd1cmVkID0gVFJVRTsKKyAgICBicmVhazsKKyAgfQorICBHU1RfT0JKRUNUX1VOTE9DSyAodmFnZyk7CisKKyAgaWYgKGF0X2xlYXN0X29uZV9wYWRfY29uZmlndXJlZCkgeworICAgIEdzdENhcHMgKmNhcHMsICpwZWVyY2FwczsKKworICAgIHBlZXJjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKGFnZy0+c3JjcGFkLCBOVUxMKTsKKworICAgIGdfYXNzZXJ0ICh2YWdnX2tsYXNzLT51cGRhdGVfY2Fwcyk7CisgICAgaWYgKCEoY2FwcyA9IHZhZ2dfa2xhc3MtPnVwZGF0ZV9jYXBzICh2YWdnLCBkb3duc3RyZWFtX2NhcHMsIHBlZXJjYXBzKSkpIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodmFnZywgIlN1YmNsYXNzIGZhaWxlZCB0byB1cGRhdGUgcHJvdmlkZWQgY2FwcyIpOworICAgICAgZ3N0X2NhcHNfdW5yZWYgKGRvd25zdHJlYW1fY2Fwcyk7CisgICAgICBpZiAocGVlcmNhcHMpCisgICAgICAgIGdzdF9jYXBzX3VucmVmIChwZWVyY2Fwcyk7CisgICAgICByZXQgPSBGQUxTRTsKKyAgICAgIGdvdG8gZG9uZTsKICAgICB9Ci0KLSAgICAvKiBJZiB0aGUgc3ViLWNsYXNzIGFsbG93cyBpdCwgYWxsb3cgc2l6ZS9mcmFtZXJhdGUgY2hhbmdlcyAqLwotICAgIGlmICghdmFnZ19rbGFzcy0+cHJlc2VydmVfdXBkYXRlX2NhcHNfcmVzdWx0KSB7Ci0gICAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX2dldCAocywgIndpZHRoIiwgR19UWVBFX0lOVCwgJmJlc3Rfd2lkdGgsICJoZWlnaHQiLAotICAgICAgICAgIEdfVFlQRV9JTlQsICZiZXN0X2hlaWdodCwgTlVMTCk7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAoY2Fwcyk7IGkrKykgewotICAgICAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgaSk7Ci0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAid2lkdGgiLCBHU1RfVFlQRV9JTlRfUkFOR0UsIDEsIEdfTUFYSU5ULAotICAgICAgICAgICAgImhlaWdodCIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgMSwgR19NQVhJTlQsICJmcmFtZXJhdGUiLAotICAgICAgICAgICAgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsIDAsIDEsIEdfTUFYSU5ULCAxLCBOVUxMKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBwZWVyY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChhZ2ctPnNyY3BhZCwgY2Fwcyk7Ci0gICAgaWYgKHBlZXJjYXBzKSB7Ci0gICAgICBHc3RDYXBzICp0bXA7Ci0KLSAgICAgIHRtcCA9IGdzdF9jYXBzX2ludGVyc2VjdCAoY2FwcywgcGVlcmNhcHMpOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAodmFnZywgImludGVyc2VjdGluZyAlIiBHU1RfUFRSX0ZPUk1BVAotICAgICAgICAgICIgd2l0aCBwZWVyIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQgIiByZXN1bHQgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMsCi0gICAgICAgICAgcGVlcmNhcHMsIHRtcCk7Ci0KLSAgICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgICBnc3RfY2Fwc191bnJlZiAoZG93bnN0cmVhbV9jYXBzKTsKKyAgICBpZiAocGVlcmNhcHMpCiAgICAgICBnc3RfY2Fwc191bnJlZiAocGVlcmNhcHMpOwotICAgICAgY2FwcyA9IHRtcDsgICAgICAgICAgICAgICAvKiBwYXNzIG93bmVyc2hpcCAqLwotICAgICAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChjYXBzKSkgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUICh2YWdnLCAiZW1wdHkgY2FwcyIpOworCisgICAgaWYgKCFnc3RfY2Fwc19pc19maXhlZCAoY2FwcykpIHsKKyAgICAgIGdfYXNzZXJ0ICh2YWdnX2tsYXNzLT5maXhhdGVfY2Fwcyk7CisKKyAgICAgIGNhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChjYXBzKTsKKyAgICAgIGlmICghKGNhcHMgPSB2YWdnX2tsYXNzLT5maXhhdGVfY2FwcyAodmFnZywgY2FwcykpKSB7CisgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodmFnZywgIlN1YmNsYXNzIGZhaWxlZCB0byBmaXhhdGUgcHJvdmlkZWQgY2FwcyIpOwogICAgICAgICByZXQgPSBGQUxTRTsKLSAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogICAgICAgICBnb3RvIGRvbmU7CiAgICAgICB9CisgICAgfQogCi0gICAgICBjYXBzID0gZ3N0X2NhcHNfdHJ1bmNhdGUgKGNhcHMpOwotICAgICAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotICAgICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJ3aWR0aCIsIGJlc3Rfd2lkdGgpOwotICAgICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJoZWlnaHQiLCBiZXN0X2hlaWdodCk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChzLCAiZnJhbWVyYXRlIiwgYmVzdF9mcHNfbiwKLSAgICAgICAgICBiZXN0X2Zwc19kKTsKLSAgICAgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCAxLAotICAgICAgICAgIDEpOworICAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJnZhZ2ctPmluZm8sIGNhcHMpOwogCi0gICAgICAvKiBmaXhhdGUgdGhlIHRoZSByZXN0IG9mIHRoZSBmaWVsZHMgKi8KLSAgICAgIGNhcHMgPSBnc3RfY2Fwc19maXhhdGUgKGNhcHMpOworICAgIGlmICh2YWdncGFkX2tsYXNzLT5zZXRfaW5mbykgeworICAgICAgLyogVGhlbiBicm93c2UgdGhlIHNpbmtzIG9uY2UgbW9yZSwgc2V0dGluZyBvciB1bnNldHRpbmcgY29udmVyc2lvbiBpZiBuZWVkZWQgKi8KKyAgICAgIGZvciAobCA9IEdTVF9FTEVNRU5UICh2YWdnKS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgICAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqcGFkID0gR1NUX1ZJREVPX0FHR1JFR0FUT1JfUEFEIChsLT5kYXRhKTsKIAotICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAid2lkdGgiLCAmaW5mby53aWR0aCk7Ci0gICAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJoZWlnaHQiLCAmaW5mby5oZWlnaHQpOwotICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCAmaW5mby5mcHNfbiwgJmluZm8uZnBzX2QpOworICAgICAgICBpZiAoIXZhZ2dwYWRfa2xhc3MtPnNldF9pbmZvIChwYWQsIHZhZ2csICZwYWQtPmluZm8sICZ2YWdnLT5pbmZvKSkgeworICAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLICh2YWdnKTsKKworICAgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgICAgfQorICAgICAgfQogICAgIH0KIAogICAgIGlmIChnc3RfdmlkZW9hZ2dyZWdhdG9yX3NyY19zZXRjYXBzICh2YWdnLCBjYXBzKSkgewpAQCAtOTI0LDE1ICs4OTIsNyBAQAogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIkdldCBjYXBzIHdpdGggZmlsdGVyOiAlIiBHU1RfUFRSX0ZPUk1BVCwgZmlsdGVyKTsKIAotICBzcmNjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChzcmNwYWQpOwotICBpZiAoc3JjY2FwcyA9PSBOVUxMKSB7Ci0gICAgc3JjY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChzcmNwYWQsIHRlbXBsYXRlX2NhcHMpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIk5vIG91dHB1dCBjYXBzLCB1c2luZyBwb3NzaWJsZSBmb3JtYXRzOiAlIgotICAgICAgICBHU1RfUFRSX0ZPUk1BVCwgc3JjY2Fwcyk7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiVXNpbmcgb3V0cHV0IGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBzcmNjYXBzKTsKLSAgfQotCisgIHNyY2NhcHMgPSBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoc3JjcGFkLCB0ZW1wbGF0ZV9jYXBzKTsKICAgc3JjY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKHNyY2NhcHMpOwogICBoYXNfYWxwaGEgPSBnc3RfdmlkZW9hZ2dyZWdhdG9yX2NhcHNfaGFzX2FscGhhIChzcmNjYXBzKTsKIApAQCAtOTgyLDkgKzk0Miw5IEBACiAgIGdib29sZWFuIGxpdmU7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAodmFnZywKLSAgICAgICJVcGRhdGluZyBRb1M6IHByb3BvcnRpb24gJWxmLCBkaWZmICVzJSIgR1NUX1RJTUVfRk9STUFUICIsIHRpbWVzdGFtcCAlIgotICAgICAgR1NUX1RJTUVfRk9STUFULCBwcm9wb3J0aW9uLCAoZGlmZiA8IDApID8gIi0iIDogIiIsCi0gICAgICBHU1RfVElNRV9BUkdTIChBQlMgKGRpZmYpKSwgR1NUX1RJTUVfQVJHUyAodGltZXN0YW1wKSk7CisgICAgICAiVXBkYXRpbmcgUW9TOiBwcm9wb3J0aW9uICVsZiwgZGlmZiAlIiBHU1RfU1RJTUVfRk9STUFUICIsIHRpbWVzdGFtcCAlIgorICAgICAgR1NUX1RJTUVfRk9STUFULCBwcm9wb3J0aW9uLCBHU1RfU1RJTUVfQVJHUyAoZGlmZiksCisgICAgICBHU1RfVElNRV9BUkdTICh0aW1lc3RhbXApKTsKIAogICBsaXZlID0KICAgICAgIEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChnc3RfYWdncmVnYXRvcl9nZXRfbGF0ZW5jeSAoR1NUX0FHR1JFR0FUT1IKQEAgLTE0MTQsMTAgKzEzNzQsNyBAQAogICAgICAgfHwgZ3N0X3BhZF9jaGVja19yZWNvbmZpZ3VyZSAoR1NUX0FHR1JFR0FUT1JfU1JDX1BBRCAodmFnZykpKSB7CiAgICAgZ2Jvb2xlYW4gcmV0OwogCi0gICAgcmV0ID0gZ3N0X3ZpZGVvYWdncmVnYXRvcl91cGRhdGVfY29udmVydGVycyAodmFnZyk7Ci0gICAgaWYgKHJldCkKLSAgICAgIHJldCA9IGdzdF92aWRlb2FnZ3JlZ2F0b3JfdXBkYXRlX3NyY19jYXBzICh2YWdnKTsKLQorICAgIHJldCA9IGdzdF92aWRlb2FnZ3JlZ2F0b3JfdXBkYXRlX3NyY19jYXBzICh2YWdnKTsKICAgICBpZiAoIXJldCkgewogICAgICAgaWYgKHRpbWVvdXQgJiYgZ3N0X3BhZF9uZWVkc19yZWNvbmZpZ3VyZSAoR1NUX0FHR1JFR0FUT1JfU1JDX1BBRCAodmFnZykpKSB7CiAgICAgICAgIGd1aW50NjQgZnJhbWVfZHVyYXRpb247CkBAIC0yMDk5LDYgKzIwNTYsOCBAQAogCiAgIGtsYXNzLT5maW5kX2Jlc3RfZm9ybWF0ID0gZ3N0X3ZpZGVvYWdncmVhZ2F0b3JfZmluZF9iZXN0X2Zvcm1hdDsKICAga2xhc3MtPmdldF9vdXRwdXRfYnVmZmVyID0gZ3N0X3ZpZGVvYWdncmVnYXRvcl9nZXRfb3V0cHV0X2J1ZmZlcjsKKyAga2xhc3MtPnVwZGF0ZV9jYXBzID0gZ3N0X3ZpZGVvYWdncmVnYXRvcl9kZWZhdWx0X3VwZGF0ZV9jYXBzOworICBrbGFzcy0+Zml4YXRlX2NhcHMgPSBnc3RfdmlkZW9hZ2dyZWdhdG9yX2RlZmF1bHRfZml4YXRlX2NhcHM7CiAKICAgLyogUmVnaXN0ZXIgdGhlIHBhZCBjbGFzcyAqLwogICBnX3R5cGVfY2xhc3NfcmVmIChHU1RfVFlQRV9WSURFT19BR0dSRUdBVE9SX1BBRCk7CmRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9hZ2dyZWdhdG9yLmggYi9nc3QtbGlicy9nc3QvdmlkZW8vZ3N0dmlkZW9hZ2dyZWdhdG9yLmgKaW5kZXggZjk1ZDBkMi4uODZkZjBiNiAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL2dzdHZpZGVvYWdncmVnYXRvci5oCisrKyBiL2dzdC1saWJzL2dzdC92aWRlby9nc3R2aWRlb2FnZ3JlZ2F0b3IuaApAQCAtNzMsNiArNzMsOSBAQAogICogQHVwZGF0ZV9jYXBzOiAgICAgICAgICAgICAgT3B0aW9uYWwuCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBMZXRzIHN1YmNsYXNzZXMgdXBkYXRlIHRoZSAjR3N0Q2FwcyByZXByZXNlbnRpbmcKICAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzcmMgcGFkIGNhcHMgYmVmb3JlIHVzYWdlLiAgUmV0dXJuICVOVUxMIHRvIGluZGljYXRlIGZhaWx1cmUuCisgKiBAZml4YXRlX2NhcHM6ICAgICAgICAgICAgICBGaXhhdGUgYW5kIHJldHVybiB0aGUgc3JjIHBhZCBjYXBzIHByb3ZpZGVkLiAgVGhlIGZ1bmN0aW9uIHRha2VzCisgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBvd25lcnNoaXAgb2YgQGNhcHMgYW5kIHJldHVybnMgYSBmaXhhdGVkIHZlcnNpb24gb2YKKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIEBjYXBzLiBAY2FwcyBpcyBub3QgZ3VhcmFudGVlZCB0byBiZSB3cml0YWJsZS4KICAqIEBhZ2dyZWdhdGVfZnJhbWVzOiAgICAgICAgIExldHMgc3ViY2xhc3NlcyBhZ2dyZWdhdGUgZnJhbWVzIHRoYXQgYXJlIHJlYWR5LiBTdWJjbGFzc2VzCiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaG91bGQgaXRlcmF0ZSB0aGUgR3N0RWxlbWVudC5zaW5rcGFkcyBhbmQgdXNlIHRoZSBhbHJlYWR5CiAgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBtYXBwZWQgI0dzdFZpZGVvRnJhbWUgZnJvbSBHc3RWaWRlb0FnZ3JlZ2F0b3JQYWQuYWdncmVnYXRlZF9mcmFtZQpAQCAtODYsOSArODksNiBAQAogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgTm90aWZpZXMgc3ViY2xhc3NlcyB3aGF0IGNhcHMgZm9ybWF0IGhhcyBiZWVuIG5lZ290aWF0ZWQKICAqIEBmaW5kX2Jlc3RfZm9ybWF0OiAgICAgICAgIE9wdGlvbmFsLgogICogICAgICAgICAgICAgICAgICAgICAgICAgICAgTGV0cyBzdWJjbGFzc2VzIGRlY2lkZSBvZiB0aGUgYmVzdCBjb21tb24gZm9ybWF0IHRvIHVzZS4KLSAqIEBwcmVzZXJ2ZV91cGRhdGVfY2Fwc19yZXN1bHQ6IFN1Yi1jbGFzc2VzIHNob3VsZCBzZXQgdGhpcyB0byB0cnVlIGlmIHRoZSByZXR1cm4gcmVzdWx0Ci0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgdXBkYXRlX2NhcHMoKSBtZXRob2Qgc2hvdWxkIG5vdCBiZSBmdXJ0aGVyIG1vZGlmaWVkCi0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSBHc3RWaWRlb0FnZ3JlZ2F0b3IgYnkgcmVtb3ZpbmcgZmllbGRzLgogICoqLwogc3RydWN0IF9Hc3RWaWRlb0FnZ3JlZ2F0b3JDbGFzcwogewpAQCAtOTcsNiArOTcsOSBAQAogCiAgIC8qPCBwdWJsaWMgPiovCiAgIEdzdENhcHMgKiAgICAgICAgICAoKnVwZGF0ZV9jYXBzKSAgICAgICAgICAgICAgIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiAgdmlkZW9hZ2dyZWdhdG9yLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0Q2FwcyAgICAgICAgICAgICogIGNhcHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RDYXBzICAgICAgICAgICAgKiAgZmlsdGVyX2NhcHMpOworICBHc3RDYXBzICogICAgICAgICAgKCpmaXhhdGVfY2FwcykgICAgICAgICAgICAgICAoR3N0VmlkZW9BZ2dyZWdhdG9yICogIHZpZGVvYWdncmVnYXRvciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdENhcHMgICAgICAgICAgICAqICBjYXBzKTsKICAgR3N0Rmxvd1JldHVybiAgICAgICgqYWdncmVnYXRlX2ZyYW1lcykgICAgICAgICAgKEdzdFZpZGVvQWdncmVnYXRvciAqICB2aWRlb2FnZ3JlZ2F0b3IsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgICAgICAgICAgKiAgb3V0YnVmZmVyKTsKQEAgLTEwOSw4ICsxMTIsNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICAgICAgICogIGJlc3RfaW5mbywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuICAgICAgICAgICAqICBhdF9sZWFzdF9vbmVfYWxwaGEpOwogCi0gIGdib29sZWFuICAgICAgICAgICBwcmVzZXJ2ZV91cGRhdGVfY2Fwc19yZXN1bHQ7Ci0KICAgR3N0Q2FwcyAgICAgICAgICAgKnNpbmtfbm9uX2FscGhhX2NhcHM7CiAKICAgLyogPCBwcml2YXRlID4gKi8KZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC93YXlsYW5kL01ha2VmaWxlLmluIGIvZ3N0LWxpYnMvZ3N0L3dheWxhbmQvTWFrZWZpbGUuaW4KaW5kZXggZGQ4NzQyMy4uZmQwYzM5ZSAxMDA2NDQKLS0tIGEvZ3N0LWxpYnMvZ3N0L3dheWxhbmQvTWFrZWZpbGUuaW4KKysrIGIvZ3N0LWxpYnMvZ3N0L3dheWxhbmQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QtcGx1Z2lucy1iYWQuZG9hcCBiL2dzdC1wbHVnaW5zLWJhZC5kb2FwCmluZGV4IDg4YjYxODAuLmUzNjk3OWEgMTAwNjQ0Ci0tLSBhL2dzdC1wbHVnaW5zLWJhZC5kb2FwCisrKyBiL2dzdC1wbHVnaW5zLWJhZC5kb2FwCkBAIC0zNSwxMSArMzUsNDEgQEAKIAogIDxyZWxlYXNlPgogICA8VmVyc2lvbj4KLSAgIDxyZXZpc2lvbj4xLjYuMzwvcmV2aXNpb24+Ci0gICA8YnJhbmNoPjEuNjwvYnJhbmNoPgorICAgPHJldmlzaW9uPjEuNy45MTwvcmV2aXNpb24+CisgICA8YnJhbmNoPm1hc3RlcjwvYnJhbmNoPgogICAgPG5hbWU+PC9uYW1lPgotICAgPGNyZWF0ZWQ+MjAxNi0wMS0yMDwvY3JlYXRlZD4KLSAgIDxmaWxlLXJlbGVhc2UgcmRmOnJlc291cmNlPSJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFkL2dzdC1wbHVnaW5zLWJhZC0xLjYuMy50YXIueHoiIC8+CisgICA8Y3JlYXRlZD4yMDE2LTAzLTE1PC9jcmVhdGVkPgorICAgPGZpbGUtcmVsZWFzZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLTEuNy45MS50YXIueHoiIC8+CisgIDwvVmVyc2lvbj4KKyA8L3JlbGVhc2U+CisKKyA8cmVsZWFzZT4KKyAgPFZlcnNpb24+CisgICA8cmV2aXNpb24+MS43LjkwPC9yZXZpc2lvbj4KKyAgIDxicmFuY2g+bWFzdGVyPC9icmFuY2g+CisgICA8bmFtZT48L25hbWU+CisgICA8Y3JlYXRlZD4yMDE2LTAzLTAxPC9jcmVhdGVkPgorICAgPGZpbGUtcmVsZWFzZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLTEuNy45MC50YXIueHoiIC8+CisgIDwvVmVyc2lvbj4KKyA8L3JlbGVhc2U+CisKKyA8cmVsZWFzZT4KKyAgPFZlcnNpb24+CisgICA8cmV2aXNpb24+MS43LjI8L3JldmlzaW9uPgorICAgPGJyYW5jaD5tYXN0ZXI8L2JyYW5jaD4KKyAgIDxuYW1lPjwvbmFtZT4KKyAgIDxjcmVhdGVkPjIwMTYtMDItMTk8L2NyZWF0ZWQ+CisgICA8ZmlsZS1yZWxlYXNlIHJkZjpyZXNvdXJjZT0iaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLWJhZC9nc3QtcGx1Z2lucy1iYWQtMS43LjIudGFyLnh6IiAvPgorICA8L1ZlcnNpb24+CisgPC9yZWxlYXNlPgorCisgPHJlbGVhc2U+CisgIDxWZXJzaW9uPgorICAgPHJldmlzaW9uPjEuNy4xPC9yZXZpc2lvbj4KKyAgIDxicmFuY2g+bWFzdGVyPC9icmFuY2g+CisgICA8bmFtZT48L25hbWU+CisgICA8Y3JlYXRlZD4yMDE1LTEyLTI0PC9jcmVhdGVkPgorICAgPGZpbGUtcmVsZWFzZSByZGY6cmVzb3VyY2U9Imh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLTEuNy4xLnRhci54eiIgLz4KICAgPC9WZXJzaW9uPgogIDwvcmVsZWFzZT4KIApkaWZmIC0tZ2l0IGEvZ3N0LXBsdWdpbnMtYmFkLnNwZWMgYi9nc3QtcGx1Z2lucy1iYWQuc3BlYwppbmRleCAxODBmMzU5Li4wYzYzNjc0IDEwMDY0NAotLS0gYS9nc3QtcGx1Z2lucy1iYWQuc3BlYworKysgYi9nc3QtcGx1Z2lucy1iYWQuc3BlYwpAQCAtNiw3ICs2LDcgQEAKIAogU3VtbWFyeTogR1N0cmVhbWVyIHN0cmVhbWluZyBtZWRpYSBmcmFtZXdvcmsgImJhZCIgcGx1Zy1pbnMKIE5hbWU6ICV7Z3N0cmVhbWVyfS1wbHVnaW5zLWJhZAotVmVyc2lvbjogMS42LjMKK1ZlcnNpb246IDEuNy45MQogUmVsZWFzZTogMS5nc3QKICMgVGhlIGZyZWV6ZSBhbmQgbmZzIHBsdWdpbnMgYXJlIExHUEx2MiAob25seSkKIExpY2Vuc2U6IExHUEx2MisgYW5kIExHUEx2MgpAQCAtMjIzLDcgKzIyMyw2IEBACiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGZyZWV2ZXJiLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGl2dGMuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0bWlkaS5zbwotJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RtcGcxMjMuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0cmZic3JjLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHNtb290aHN0cmVhbWluZy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3R2aWRlb2ZpbHRlcnNiYWQuc28KQEAgLTIzMSw3ICsyMzAsNyBAQAogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RzaXJlbi5zbwogCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGR2YnN1Ym92ZXJsYXkuc28KLSV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0ZnJhZ21lbnRlZC5zbworJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RobHMuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0dmlkZW9wYXJzZXJzYmFkLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHk0bWRlYy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzLnNvCmRpZmYgLS1naXQgYS9nc3QtcGx1Z2lucy1iYWQuc3BlYy5pbiBiL2dzdC1wbHVnaW5zLWJhZC5zcGVjLmluCmluZGV4IDkwN2M2MzIuLjRmYjE3ZDcgMTAwNjQ0Ci0tLSBhL2dzdC1wbHVnaW5zLWJhZC5zcGVjLmluCisrKyBiL2dzdC1wbHVnaW5zLWJhZC5zcGVjLmluCkBAIC0yMjMsNyArMjIzLDYgQEAKICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0ZnJlZXZlcmIuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0aXZ0Yy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RtaWRpLnNvCi0le19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdG1wZzEyMy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RyZmJzcmMuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0c21vb3Roc3RyZWFtaW5nLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHZpZGVvZmlsdGVyc2JhZC5zbwpAQCAtMjMxLDcgKzIzMCw3IEBACiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdHNpcmVuLnNvCiAKICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0ZHZic3Vib3ZlcmxheS5zbwotJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3RmcmFnbWVudGVkLnNvCisle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGhscy5zbwogJXtfbGliZGlyfS9nc3RyZWFtZXItJXttYWpvcm1pbm9yfS9saWJnc3R2aWRlb3BhcnNlcnNiYWQuc28KICV7X2xpYmRpcn0vZ3N0cmVhbWVyLSV7bWFqb3JtaW5vcn0vbGliZ3N0eTRtZGVjLnNvCiAle19saWJkaXJ9L2dzdHJlYW1lci0le21ham9ybWlub3J9L2xpYmdzdGF1ZGlvdmlzdWFsaXplcnMuc28KZGlmZiAtLWdpdCBhL2dzdC9NYWtlZmlsZS5pbiBiL2dzdC9NYWtlZmlsZS5pbgppbmRleCAzZTRiYTg4Li40NmFlOTk2IDEwMDY0NAotLS0gYS9nc3QvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L01ha2VmaWxlLmluCkBAIC0xMTksMTYgKzExOSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjUzLDYgKzI1Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjkwLDYgKzI5MSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjk4LDcgKzMwMSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxNyw4ICszMTksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzM1LDE2ICszMzgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzcwLDYgKzM3NCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5NSw2ICs0MDEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTYsNiArNTA0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwOSw4ICs1MTgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjYsNiArNTMzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU4MywxNiArNTkyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjQ0LDYgKzY1NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NTQsNiArNjY2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjYzLDYgKzY3Niw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MDAsNyArNzE1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvYWNjdXJpcC9NYWtlZmlsZS5pbiBiL2dzdC9hY2N1cmlwL01ha2VmaWxlLmluCmluZGV4IDRlZDZhYTguLmViODA2YTAgMTAwNjQ0Ci0tLSBhL2dzdC9hY2N1cmlwL01ha2VmaWxlLmluCisrKyBiL2dzdC9hY2N1cmlwL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2FkcGNtZGVjL01ha2VmaWxlLmluIGIvZ3N0L2FkcGNtZGVjL01ha2VmaWxlLmluCmluZGV4IGYxMDlkNjguLjk1OTk4NDkgMTAwNjQ0Ci0tLSBhL2dzdC9hZHBjbWRlYy9NYWtlZmlsZS5pbgorKysgYi9nc3QvYWRwY21kZWMvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzEsNiArMjcwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDgsNiArMzA5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTYsNyArMzE5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM1LDggKzMzNyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTMsMTYgKzM1NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODgsNiArMzkyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDEzLDYgKzQxOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNCw2ICs1MjIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI3LDggKzUzNiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0NCw2ICs1NTEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAxLDE2ICs2MTAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjIsNiArNjczLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Miw2ICs2ODQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODEsNiArNjk0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxOCw3ICs3MzMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9hZHBjbWVuYy9NYWtlZmlsZS5pbiBiL2dzdC9hZHBjbWVuYy9NYWtlZmlsZS5pbgppbmRleCBkMzAzZWQwLi42MDg3MmNiIDEwMDY0NAotLS0gYS9nc3QvYWRwY21lbmMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2FkcGNtZW5jL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjcxLDYgKzI3MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA4LDYgKzMwOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE2LDcgKzMxOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNSw4ICszMzcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzUzLDE2ICszNTYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg4LDYgKzM5Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxMyw2ICs0MTksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTQsNiArNTIyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyNyw4ICs1MzYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDQsNiArNTUxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMSwxNiArNjEwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjYyLDYgKzY3Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzIsNiArNjg0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgxLDYgKzY5NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTgsNyArNzMzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvYWlmZi9NYWtlZmlsZS5pbiBiL2dzdC9haWZmL01ha2VmaWxlLmluCmluZGV4IGRkNDI3ZjEuLmE0OGJmMjYgMTAwNjQ0Ci0tLSBhL2dzdC9haWZmL01ha2VmaWxlLmluCisrKyBiL2dzdC9haWZmL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2FpZmYvYWlmZnBhcnNlLmMgYi9nc3QvYWlmZi9haWZmcGFyc2UuYwppbmRleCA3ODg1NGFlLi41NjAwYTdlIDEwMDY0NAotLS0gYS9nc3QvYWlmZi9haWZmcGFyc2UuYworKysgYi9nc3QvYWlmZi9haWZmcGFyc2UuYwpAQCAtMzUsMTQgKzM1LDE0IEBACiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiA8cGFyYT4KICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1zaW5lLmFpZmYgISBhaWZmcGFyc2UgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luaworICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj1zaW5lLmFpZmYgISBhaWZmcGFyc2UgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luawogICogPC9wcm9ncmFtbGlzdGluZz4KICAqIFJlYWQgYSBhaWZmIGZpbGUgYW5kIG91dHB1dCB0byB0aGUgc291bmRjYXJkIHVzaW5nIHRoZSBBTFNBIGVsZW1lbnQuIFRoZQogICogYWlmZiBmaWxlIGlzIGFzc3VtZWQgdG8gY29udGFpbiByYXcgdW5jb21wcmVzc2VkIHNhbXBsZXMuCiAgKiA8L3BhcmE+CiAgKiA8cGFyYT4KICAqIDxwcm9ncmFtbGlzdGluZz4KLSAqIGdzdC1sYXVuY2ggc291cGhodHBzcmMgbG9jYXRpb249aHR0cDovL3d3dy5leGFtcGxlLm9yZy9zaW5lLmFpZmYgISBxdWV1ZSAhIGFpZmZwYXJzZSAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBzb3VwaHR0cHNyYyBsb2NhdGlvbj1odHRwOi8vd3d3LmV4YW1wbGUub3JnL3NpbmUuYWlmZiAhIHF1ZXVlICEgYWlmZnBhcnNlICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsKICAqIDwvcHJvZ3JhbWxpc3Rpbmc+CiAgKiBTdHJlYW0gZGF0YSBmcm9tIGEgbmV0d29yayB1cmwuCiAgKiA8L3BhcmE+CkBAIC04MTYsMTEgKzgxNiwxNCBAQAogCiB9CiAKKyNkZWZpbmUgX1AocG9zKSAoR19HVUlOVDY0X0NPTlNUQU5UICgxKSA8PCBHU1RfQVVESU9fQ0hBTk5FTF9QT1NJVElPTl8gIyNwb3MpCisKIHN0YXRpYyBHc3RDYXBzICoKIGdzdF9haWZmX3BhcnNlX2NyZWF0ZV9jYXBzIChHc3RBaWZmUGFyc2UgKiBhaWZmKQogewogICBHc3RDYXBzICpjYXBzID0gTlVMTDsKICAgY29uc3QgZ2NoYXIgKmZvcm1hdCA9IE5VTEw7CisgIGd1aW50NjQgY2hhbm5lbF9tYXNrOwogCiAgIGlmIChhaWZmLT5mbG9hdGluZ19wb2ludCkgewogICAgIGlmIChhaWZmLT5lbmRpYW5uZXNzID09IEdfQklHX0VORElBTikgewpAQCAtODU4LDYgKzg2MSw0NCBAQAogICAgICAgICAicmF0ZSIsIEdfVFlQRV9JTlQsIGFpZmYtPnJhdGUsIE5VTEwpOwogICB9CiAKKyAgaWYgKGFpZmYtPmNoYW5uZWxzID4gMikgeworICAgIEdTVF9GSVhNRV9PQkpFQ1QgKGFpZmYsICJ1c2luZyBmYWxsYmFjayBjaGFubmVsIGxheW91dCBmb3IgJWQgY2hhbm5lbHMiLAorICAgICAgICBhaWZmLT5jaGFubmVscyk7CisKKyAgICAvKiBiYXNlZCBvbiBBSUZGLTEuMy5wZGYgKi8KKyAgICBzd2l0Y2ggKGFpZmYtPmNoYW5uZWxzKSB7CisgICAgICBjYXNlIDE6CisgICAgICAgIGNoYW5uZWxfbWFzayA9IDA7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSAyOgorICAgICAgICBjaGFubmVsX21hc2sgPSBfUCAoRlJPTlRfTEVGVCkgfCBfUCAoRlJPTlRfUklHSFQpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgMzoKKyAgICAgICAgY2hhbm5lbF9tYXNrID0gX1AgKEZST05UX0xFRlQpIHwgX1AgKEZST05UX1JJR0hUKSB8IF9QIChGUk9OVF9DRU5URVIpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNDoKKyAgICAgICAgLyogbGlzdHMgYm90aCB0aGlzIGFuZCAncXVhZCcgYnV0IGRvZXNuJ3Qgc2F5IGhvdyB0byBkaXN0aW5ndWlzaCB0aGUgdHdvICovCisgICAgICAgIGNoYW5uZWxfbWFzayA9CisgICAgICAgICAgICBfUCAoRlJPTlRfTEVGVCkgfCBfUCAoRlJPTlRfUklHSFQpIHwgX1AgKFJFQVJfTEVGVCkgfAorICAgICAgICAgICAgX1AgKFJFQVJfUklHSFQpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNjoKKyAgICAgICAgY2hhbm5lbF9tYXNrID0KKyAgICAgICAgICAgIF9QIChGUk9OVF9MRUZUKSB8IF9QIChGUk9OVF9MRUZUX09GX0NFTlRFUikgfCBfUCAoRlJPTlRfQ0VOVEVSKSB8CisgICAgICAgICAgICBfUCAoRlJPTlRfUklHSFQpIHwgX1AgKEZST05UX1JJR0hUX09GX0NFTlRFUikgfCBfUCAoTEZFMSk7CisgICAgICAgIGJyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgY2hhbm5lbF9tYXNrID0gZ3N0X2F1ZGlvX2NoYW5uZWxfZ2V0X2ZhbGxiYWNrX21hc2sgKGFpZmYtPmNoYW5uZWxzKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisKKyAgICBpZiAoY2hhbm5lbF9tYXNrICE9IDApIHsKKyAgICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJjaGFubmVsLW1hc2siLCBHU1RfVFlQRV9CSVRNQVNLLCBjaGFubmVsX21hc2ssCisgICAgICAgICAgTlVMTCk7CisgICAgfQorICB9CisKICAgR1NUX0RFQlVHX09CSkVDVCAoYWlmZiwgIkNyZWF0ZWQgY2FwczogJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOwogCiAgIHJldHVybiBjYXBzOwpAQCAtMTA1MCw2ICsxMDkxLDExIEBACiAgICAgICAgIH0KICAgICAgICAgYnJlYWs7CiAgICAgICB9CisgICAgICBjYXNlIEdTVF9NQUtFX0ZPVVJDQyAoJ0MnLCAnSCcsICdBJywgJ04nKTp7CisgICAgICAgIEdTVF9GSVhNRV9PQkpFQ1QgKGFpZmYsICJIYW5kbGUgQ0hBTiBjaHVuayB3aXRoIGNoYW5uZWwgbGF5b3V0cyIpOworICAgICAgICBnc3RfYWlmZl9wYXJzZV9pZ25vcmVfY2h1bmsgKGFpZmYsIHRhZywgc2l6ZSk7CisgICAgICAgIGJyZWFrOworICAgICAgfQogICAgICAgZGVmYXVsdDoKICAgICAgICAgZ3N0X2FpZmZfcGFyc2VfaWdub3JlX2NodW5rIChhaWZmLCB0YWcsIHNpemUpOwogICAgIH0KZGlmZiAtLWdpdCBhL2dzdC9hc2ZtdXgvTWFrZWZpbGUuaW4gYi9nc3QvYXNmbXV4L01ha2VmaWxlLmluCmluZGV4IDA4Y2VlNGYuLjg0Y2RjYjkgMTAwNjQ0Ci0tLSBhL2dzdC9hc2ZtdXgvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2FzZm11eC9NYWtlZmlsZS5pbgpAQCAtMTE4LDE2ICsxMTgsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzksNiArMjc4LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTYsNiArMzE3LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjQsNyArMzI3LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQzLDggKzM0NSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjEsMTYgKzM2NCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTYsNiArNDAwLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIxLDYgKzQyNyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMiw2ICs1MzAsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM1LDggKzU0NCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Miw2ICs1NTksOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA5LDE2ICs2MTgsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzAsNiArNjgxLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4MCw2ICs2OTIsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODksNiArNzAyLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNiw3ICs3NDEsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9hc2ZtdXgvZ3N0YXNmbXV4LmMgYi9nc3QvYXNmbXV4L2dzdGFzZm11eC5jCmluZGV4IGM3N2Y4YjYuLjQ1NjE3YmUgMTAwNjQ0Ci0tLSBhL2dzdC9hc2ZtdXgvZ3N0YXNmbXV4LmMKKysrIGIvZ3N0L2FzZm11eC9nc3Rhc2ZtdXguYwpAQCAtMzUsMTEgKzM1LDExIEBACiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZXM8L3RpdGxlPgogICogPHBhcmE+KHdyaXRlIGV2ZXJ5dGhpbmcgaW4gb25lIGxpbmUsIHdpdGhvdXQgdGhlIGJhY2tzbGFzaCBjaGFyYWN0ZXJzKTwvcGFyYT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yNTAgXAotICogISAidmlkZW8veC1yYXcsZm9ybWF0PShzdHJpbmcpSTQyMCxmcmFtZXJhdGU9KGZyYWN0aW9uKTI1LzEiICEgZmZlbmNfd212MiBcCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MjUwIFwKKyAqICEgInZpZGVvL3gtcmF3LGZvcm1hdD0oc3RyaW5nKUk0MjAsZnJhbWVyYXRlPShmcmFjdGlvbikyNS8xIiAhIGF2ZW5jX3dtdjIgXAogICogISBhc2ZtdXggbmFtZT1tdXggISBmaWxlc2luayBsb2NhdGlvbj10ZXN0LmFzZiBcCiAgKiBhdWRpb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9NDQwICEgYXVkaW9jb252ZXJ0IFwKLSAqICEgImF1ZGlvL3gtcmF3LHJhdGU9NDQxMDAiICEgZmZlbmNfd21hdjIgISBtdXguCisgKiAhICJhdWRpby94LXJhdyxyYXRlPTQ0MTAwIiAhIGF2ZW5jX3dtYXYyICEgbXV4LgogICogXXwgVGhpcyBjcmVhdGVzIGFuIEFTRiBmaWxlIGNvbnRhaW5pbmcgYW4gV01WIHZpZGVvIHN0cmVhbQogICogd2l0aCBhIHRlc3QgcGljdHVyZSBhbmQgV01BIGF1ZGlvIHN0cmVhbSBvZiBhIHRlc3Qgc291bmQuCiAgKgpAQCAtNTQsMTMgKzU0LDEzIEBACiAgKiA8cGFyYT4od3JpdGUgZXZlcnl0aGluZyBpbiBvbmUgbGluZSwgd2l0aG91dCB0aGUgYmFja3NsYXNoIGNoYXJhY3RlcnMpPC9wYXJhPgogICogU2VydmVyIChzZW5kZXIpCiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdmUgdmlkZW90ZXN0c3JjICEgZmZlbmNfd212MiAhIGFzZm11eCBuYW1lPW11eCBzdHJlYW1hYmxlPXRydWUgXAorICogZ3N0LWxhdW5jaC0xLjAgLXZlIHZpZGVvdGVzdHNyYyAhIGF2ZW5jX3dtdjIgISBhc2ZtdXggbmFtZT1tdXggc3RyZWFtYWJsZT10cnVlIFwKICAqICEgcnRwYXNmcGF5ICEgdWRwc2luayBob3N0PTEyNy4wLjAuMSBwb3J0PTMzMzMgXAotICogYXVkaW90ZXN0c3JjICEgZmZlbmNfd21hdjIgISBtdXguCisgKiBhdWRpb3Rlc3RzcmMgISBhdmVuY193bWF2MiAhIG11eC4KICAqIF18CiAgKiBDbGllbnQgKHJlY2VpdmVyKQogICogfFsKLSAqIGdzdC1sYXVuY2ggdWRwc3JjIHBvcnQ9MzMzMyAhICJjYXBzX2Zyb21fcnRwYXNmcGF5X2F0X3NlbmRlciIgXAorICogZ3N0LWxhdW5jaC0xLjAgdWRwc3JjIHBvcnQ9MzMzMyAhICJjYXBzX2Zyb21fcnRwYXNmcGF5X2F0X3NlbmRlciIgXAogICogISBydHBhc2ZkZXBheSAhIGRlY29kZWJpbiBuYW1lPWQgISBxdWV1ZSBcCiAgKiAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsgXAogICogZC4gISBxdWV1ZSAhIGF1ZGlvY29udmVydCAhIGF1dG9hdWRpb3NpbmsKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb2Z4YmFkL01ha2VmaWxlLmluIGIvZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUuaW4KaW5kZXggYzU2MDgxZi4uMDI4ZDhjOSAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2F1ZGlvZnhiYWQvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzMsNiArMjcyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTAsNiArMzExLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTgsNyArMzIxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM3LDggKzMzOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTUsMTYgKzM1OCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTAsNiArMzk0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE1LDYgKzQyMSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNiw2ICs1MjQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI5LDggKzUzOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Niw2ICs1NTMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAzLDE2ICs2MTIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjQsNiArNjc1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NCw2ICs2ODYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODMsNiArNjk2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMCw3ICs3MzUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb2Z4YmFkL2dzdGF1ZGlvY2hhbm5lbG1peC5jIGIvZ3N0L2F1ZGlvZnhiYWQvZ3N0YXVkaW9jaGFubmVsbWl4LmMKaW5kZXggZmE0OGMyNi4uYWViZTg0YSAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvZnhiYWQvZ3N0YXVkaW9jaGFubmVsbWl4LmMKKysrIGIvZ3N0L2F1ZGlvZnhiYWQvZ3N0YXVkaW9jaGFubmVsbWl4LmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY2hhbm5lbG1peCAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY2hhbm5lbG1peCAhIGF1dG9hdWRpb3NpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvYXVkaW9taXhlci9NYWtlZmlsZS5hbSBiL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmFtCmluZGV4IGExMjZmOTAuLjkxMDRjMWIgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmFtCisrKyBiL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmFtCkBAIC00LDcgKzQsNyBAQAogaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9vcmMubWFrCiAKIAotbGliZ3N0YXVkaW9taXhlcl9sYV9TT1VSQ0VTID0gZ3N0YXVkaW9taXhlci5jIGdzdGF1ZGlvYWdncmVnYXRvci5jIGdzdGF1ZGlvaW50ZXJsZWF2ZS5jCitsaWJnc3RhdWRpb21peGVyX2xhX1NPVVJDRVMgPSBnc3RhdWRpb21peGVyLmMgZ3N0YXVkaW9pbnRlcmxlYXZlLmMKIG5vZGlzdF9saWJnc3RhdWRpb21peGVyX2xhX1NPVVJDRVMgPSAkKE9SQ19OT0RJU1RfU09VUkNFUykKIGxpYmdzdGF1ZGlvbWl4ZXJfbGFfQ0ZMQUdTID0gXAogCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCkBAIC0xNCw5ICsxNCwxMCBAQAogbGliZ3N0YXVkaW9taXhlcl9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RhdWRpb21peGVyX2xhX0xJQkFERCA9ICBcCiAJCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYmFzZS9saWJnc3RiYWRiYXNlLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYXVkaW8vbGliZ3N0YmFkYXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogCQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoT1JDX0xJQlMpCiBsaWJnc3RhdWRpb21peGVyX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKLW5vaW5zdF9IRUFERVJTID0gZ3N0YXVkaW9taXhlci5oIGdzdGF1ZGlvYWdncmVnYXRvci5oIGdzdGF1ZGlvaW50ZXJsZWF2ZS5oCitub2luc3RfSEVBREVSUyA9IGdzdGF1ZGlvbWl4ZXIuaCBnc3RhdWRpb2ludGVybGVhdmUuaAogCmRpZmYgLS1naXQgYS9nc3QvYXVkaW9taXhlci9NYWtlZmlsZS5pbiBiL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmluCmluZGV4IGE0ZWI3MTkuLjM4OWM0ZDIgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmluCisrKyBiL2dzdC9hdWRpb21peGVyL01ha2VmaWxlLmluCkBAIC0xMzgsMTYgKzEzOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE4NywxMCArMTg2LDEwIEBACiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KIGxpYmdzdGF1ZGlvbWl4ZXJfbGFfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9iYXNlL2xpYmdzdGJhZGJhc2UtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvL2xpYmdzdGJhZGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0YXVkaW9taXhlcl9sYV9PQkpFQ1RTID0gbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb21peGVyLmxvIFwKLQlsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbyBcCiAJbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2ludGVybGVhdmUubG8KIGFtX19vYmplY3RzXzEgPSBsaWJnc3RhdWRpb21peGVyX2xhLXRtcC1vcmMubG8KIG5vZGlzdF9saWJnc3RhdWRpb21peGVyX2xhX09CSkVDVFMgPSAkKGFtX19vYmplY3RzXzEpCkBAIC0zMDQsNiArMzAzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zNDEsNiArMzQyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNDksNyArMzUyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzY4LDggKzM3MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zODYsMTYgKzM4OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MjEsNiArNDI1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDQ2LDYgKzQ1Miw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU0Nyw2ICs1NTUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTYwLDggKzU2OSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU3Nyw2ICs1ODQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjM0LDE2ICs2NDMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02OTUsNiArNzA2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTcwNSw2ICs3MTcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MTQsNiArNzI3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc1MSw3ICs3NjYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTgwMiw3ICs4MTYsNyBAQAogY3Bfdl9nZW4gPSAkKGNwX3ZfZ2VuXyQoVikpCiBjcF92X2dlbl8gPSAkKGNwX3ZfZ2VuXyQoQU1fREVGQVVMVF9WRVJCT1NJVFkpKQogY3Bfdl9nZW5fMCA9IEBlY2hvICIgIENQICAgICAkQCI7Ci1saWJnc3RhdWRpb21peGVyX2xhX1NPVVJDRVMgPSBnc3RhdWRpb21peGVyLmMgZ3N0YXVkaW9hZ2dyZWdhdG9yLmMgZ3N0YXVkaW9pbnRlcmxlYXZlLmMKK2xpYmdzdGF1ZGlvbWl4ZXJfbGFfU09VUkNFUyA9IGdzdGF1ZGlvbWl4ZXIuYyBnc3RhdWRpb2ludGVybGVhdmUuYwogbm9kaXN0X2xpYmdzdGF1ZGlvbWl4ZXJfbGFfU09VUkNFUyA9ICQoT1JDX05PRElTVF9TT1VSQ0VTKQogbGliZ3N0YXVkaW9taXhlcl9sYV9DRkxBR1MgPSBcCiAJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKQEAgLTgxMywxMSArODI3LDEyIEBACiBsaWJnc3RhdWRpb21peGVyX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdGF1ZGlvbWl4ZXJfbGFfTElCQUREID0gXAogCQkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2Jhc2UvbGliZ3N0YmFkYmFzZS0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorCQkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvL2xpYmdzdGJhZGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIAkJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKE9SQ19MSUJTKQogCiBsaWJnc3RhdWRpb21peGVyX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGdzdGF1ZGlvbWl4ZXIuaCBnc3RhdWRpb2FnZ3JlZ2F0b3IuaCBnc3RhdWRpb2ludGVybGVhdmUuaAorbm9pbnN0X0hFQURFUlMgPSBnc3RhdWRpb21peGVyLmggZ3N0YXVkaW9pbnRlcmxlYXZlLmgKIGFsbDogJChCVUlMVF9TT1VSQ0VTKQogCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGFsbC1hbQogCkBAIC04OTgsNyArOTEzLDYgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9pbnRlcmxlYXZlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb21peGVyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXVkaW9taXhlcl9sYS10bXAtb3JjLlBsb0BhbV9fcXVvdGVACkBAIC05MzQsMTMgKzk0OCw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXVkaW9taXhlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhdWRpb21peGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9taXhlci5sbyBgdGVzdCAtZiAnZ3N0YXVkaW9taXhlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhdWRpb21peGVyLmMKIAotbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG86IGdzdGF1ZGlvYWdncmVnYXRvci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXVkaW9taXhlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhdWRpb21peGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvYWdncmVnYXRvci5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IuVHBvIC1jIC1vIGxpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLmxvIGB0ZXN0IC1mICdnc3RhdWRpb2FnZ3JlZ2F0b3IuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YXVkaW9hZ2dyZWdhdG9yLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9hZ2dyZWdhdG9yLlRwbyAkKERFUERJUikvbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0YXVkaW9hZ2dyZWdhdG9yLmMnIG9iamVjdD0nbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhdWRpb21peGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGF1ZGlvbWl4ZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2FnZ3JlZ2F0b3IubG8gYHRlc3QgLWYgJ2dzdGF1ZGlvYWdncmVnYXRvci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhdWRpb2FnZ3JlZ2F0b3IuYwotCiBsaWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvaW50ZXJsZWF2ZS5sbzogZ3N0YXVkaW9pbnRlcmxlYXZlLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhdWRpb21peGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGF1ZGlvbWl4ZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGF1ZGlvbWl4ZXJfbGEtZ3N0YXVkaW9pbnRlcmxlYXZlLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvaW50ZXJsZWF2ZS5UcG8gLWMgLW8gbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2ludGVybGVhdmUubG8gYHRlc3QgLWYgJ2dzdGF1ZGlvaW50ZXJsZWF2ZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhdWRpb2ludGVybGVhdmUuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YXVkaW9taXhlcl9sYS1nc3RhdWRpb2ludGVybGVhdmUuVHBvICQoREVQRElSKS9saWJnc3RhdWRpb21peGVyX2xhLWdzdGF1ZGlvaW50ZXJsZWF2ZS5QbG8KZGlmZiAtLWdpdCBhL2dzdC9hdWRpb21peGVyL2dzdGF1ZGlvaW50ZXJsZWF2ZS5oIGIvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9pbnRlcmxlYXZlLmgKaW5kZXggMDQ3M2I0NS4uNmRkODJkMyAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9pbnRlcmxlYXZlLmgKKysrIGIvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9pbnRlcmxlYXZlLmgKQEAgLTI3LDcgKzI3LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CiAKLSNpbmNsdWRlICJnc3RhdWRpb2FnZ3JlZ2F0b3IuaCIKKyNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9hZ2dyZWdhdG9yLmg+CiAKIEdfQkVHSU5fREVDTFMKIApkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9taXhlci5jIGIvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9taXhlci5jCmluZGV4IDM5NjZhOGYuLmIyMTFmN2QgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuYworKysgYi9nc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmMKQEAgLTQ0LDcgKzQ0LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1ZGlvdGVzdHNyYyBmcmVxPTEwMCAhIGF1ZGlvbWl4ZXIgbmFtZT1taXggISBhdWRpb2NvbnZlcnQgISBhbHNhc2luayBhdWRpb3Rlc3RzcmMgZnJlcT01MDAgISBtaXguCisgKiBnc3QtbGF1bmNoLTEuMCBhdWRpb3Rlc3RzcmMgZnJlcT0xMDAgISBhdWRpb21peGVyIG5hbWU9bWl4ICEgYXVkaW9jb252ZXJ0ICEgYWxzYXNpbmsgYXVkaW90ZXN0c3JjIGZyZXE9NTAwICEgbWl4LgogICogXXwgVGhpcyBwaXBlbGluZSBwcm9kdWNlcyB0d28gc2luZSB3YXZlcyBtaXhlZCB0b2dldGhlci4KICAqIDwvcmVmc2VjdDI+CiAgKgpAQCAtNzgxLDYgKzc4MSw5NyBAQAogICBpZmFjZS0+Z2V0X2NoaWxkcmVuX2NvdW50ID0gZ3N0X2F1ZGlvbWl4ZXJfY2hpbGRfcHJveHlfZ2V0X2NoaWxkcmVuX2NvdW50OwogfQogCisvKiBFbXB0eSBsaXZlYWRkZXIgYWxpYXMgd2l0aCBub24temVybyBsYXRlbmN5ICovCisKK3R5cGVkZWYgR3N0QXVkaW9NaXhlciBHc3RMaXZlQWRkZXI7Cit0eXBlZGVmIEdzdEF1ZGlvTWl4ZXJDbGFzcyBHc3RMaXZlQWRkZXJDbGFzczsKKworc3RhdGljIEdUeXBlIGdzdF9saXZlX2FkZGVyX2dldF90eXBlICh2b2lkKTsKKyNkZWZpbmUgR1NUX1RZUEVfTElWRV9BRERFUiBnc3RfbGl2ZV9hZGRlcl9nZXRfdHlwZSAoKQorCitHX0RFRklORV9UWVBFIChHc3RMaXZlQWRkZXIsIGdzdF9saXZlX2FkZGVyLCBHU1RfVFlQRV9BVURJT19NSVhFUik7CisKK2VudW0KK3sKKyAgTElWRUFEREVSX1BST1BfTEFURU5DWSA9IDEKK307CisKK3N0YXRpYyB2b2lkCitnc3RfbGl2ZV9hZGRlcl9pbml0IChHc3RMaXZlQWRkZXIgKiBzZWxmKQoreworfQorCitzdGF0aWMgdm9pZAorZ3N0X2xpdmVfYWRkZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgTElWRUFEREVSX1BST1BfTEFURU5DWToKKyAgICB7CisgICAgICBHUGFyYW1TcGVjICpwYXJlbnRfc3BlYyA9CisgICAgICAgICAgZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoR19PQkpFQ1RfQ0xBU1MKKyAgICAgICAgICAoZ3N0X2xpdmVfYWRkZXJfcGFyZW50X2NsYXNzKSwgImxhdGVuY3kiKTsKKyAgICAgIEdPYmplY3RDbGFzcyAqcHNwZWNfY2xhc3MgPSBnX3R5cGVfY2xhc3NfcGVlayAocGFyZW50X3NwZWMtPm93bmVyX3R5cGUpOworICAgICAgR1ZhbHVlIHYgPSB7IDAgfTsKKworICAgICAgZ192YWx1ZV9pbml0ICgmdiwgR19UWVBFX0lOVDY0KTsKKworICAgICAgZ192YWx1ZV9zZXRfaW50NjQgKCZ2LCBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSkgKiBHU1RfTVNFQ09ORCk7CisKKyAgICAgIEdfT0JKRUNUX0NMQVNTIChwc3BlY19jbGFzcyktPnNldF9wcm9wZXJ0eSAob2JqZWN0LAorICAgICAgICAgIHBhcmVudF9zcGVjLT5wYXJhbV9pZCwgJnYsIHBhcmVudF9zcGVjKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbGl2ZV9hZGRlcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLAorICAgIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBMSVZFQURERVJfUFJPUF9MQVRFTkNZOgorICAgIHsKKyAgICAgIEdQYXJhbVNwZWMgKnBhcmVudF9zcGVjID0KKyAgICAgICAgICBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChHX09CSkVDVF9DTEFTUworICAgICAgICAgIChnc3RfbGl2ZV9hZGRlcl9wYXJlbnRfY2xhc3MpLCAibGF0ZW5jeSIpOworICAgICAgR09iamVjdENsYXNzICpwc3BlY19jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrIChwYXJlbnRfc3BlYy0+b3duZXJfdHlwZSk7CisgICAgICBHVmFsdWUgdiA9IHsgMCB9OworCisgICAgICBnX3ZhbHVlX2luaXQgKCZ2LCBHX1RZUEVfSU5UNjQpOworCisgICAgICBHX09CSkVDVF9DTEFTUyAocHNwZWNfY2xhc3MpLT5nZXRfcHJvcGVydHkgKG9iamVjdCwKKyAgICAgICAgICBwYXJlbnRfc3BlYy0+cGFyYW1faWQsICZ2LCBwYXJlbnRfc3BlYyk7CisKKyAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBnX3ZhbHVlX2dldF9pbnQ2NCAoJnYpIC8gR1NUX01TRUNPTkQpOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworCitzdGF0aWMgdm9pZAorZ3N0X2xpdmVfYWRkZXJfY2xhc3NfaW5pdCAoR3N0TGl2ZUFkZGVyQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfbGl2ZV9hZGRlcl9zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9saXZlX2FkZGVyX2dldF9wcm9wZXJ0eTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBMSVZFQURERVJfUFJPUF9MQVRFTkNZLAorICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJsYXRlbmN5IiwgIkJ1ZmZlciBsYXRlbmN5IiwKKyAgICAgICAgICAiQWRkaXRpb25hbCBsYXRlbmN5IGluIGxpdmUgbW9kZSB0byBhbGxvdyB1cHN0cmVhbSAiCisgICAgICAgICAgInRvIHRha2UgbG9uZ2VyIHRvIHByb2R1Y2UgYnVmZmVycyBmb3IgdGhlIGN1cnJlbnQgIgorICAgICAgICAgICJwb3NpdGlvbiAoaW4gbWlsbGlzZWNvbmRzKSIsIDAsIEdfTUFYVUlOVCwKKyAgICAgICAgICAzMCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTIHwgR19QQVJBTV9DT05TVFJVQ1QpKTsKK30KKwogc3RhdGljIGdib29sZWFuCiBwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQogewpAQCAtNzkxLDYgKzg4MiwxMCBAQAogICAgICAgICAgIEdTVF9UWVBFX0FVRElPX01JWEVSKSkKICAgICByZXR1cm4gRkFMU0U7CiAKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAibGl2ZWFkZGVyIiwgR1NUX1JBTktfTk9ORSwKKyAgICAgICAgICBHU1RfVFlQRV9MSVZFX0FEREVSKSkKKyAgICByZXR1cm4gRkFMU0U7CisKICAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiYXVkaW9pbnRlcmxlYXZlIiwgR1NUX1JBTktfTk9ORSwKICAgICAgICAgICBHU1RfVFlQRV9BVURJT19JTlRFUkxFQVZFKSkKICAgICByZXR1cm4gRkFMU0U7CmRpZmYgLS1naXQgYS9nc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmggYi9nc3QvYXVkaW9taXhlci9nc3RhdWRpb21peGVyLmgKaW5kZXggYWRkNmUzMi4uMGU0MDk4ZCAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvbWl4ZXIvZ3N0YXVkaW9taXhlci5oCisrKyBiL2dzdC9hdWRpb21peGVyL2dzdGF1ZGlvbWl4ZXIuaApAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgogI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgotI2luY2x1ZGUgImdzdGF1ZGlvYWdncmVnYXRvci5oIgorI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb2FnZ3JlZ2F0b3IuaD4KIAogR19CRUdJTl9ERUNMUwogCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9NYWtlZmlsZS5hbSBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtCmluZGV4IGE2Njk5MDAuLmVjOWIwNWYgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmFtCkBAIC0xLDcgKzEsNiBAQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0YXVkaW92aXN1YWxpemVycy5sYQogCiBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX1NPVVJDRVMgPSBwbHVnaW4uYyBcCi0gICAgZ3N0YXVkaW92aXN1YWxpemVyLmMgZ3N0YXVkaW92aXN1YWxpemVyLmggXAogICAgIGdzdHNwYWNlc2NvcGUuYyBnc3RzcGFjZXNjb3BlLmggXAogICAgIGdzdHNwZWN0cmFzY29wZS5jIGdzdHNwZWN0cmFzY29wZS5oIFwKICAgICBnc3RzeW5hZXNjb3BlLmMgZ3N0c3luYWVzY29wZS5oIFwKQEAgLTEzLDkgKzEyLDEyIEBACiBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0xJQkFERCA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby0kKEdTVF9BUElfVkVSU0lPTikgXAogCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIC1sZ3N0ZmZ0LSQoR1NUX0FQSV9WRVJTSU9OKSBcCi0JJChHU1RfQkFTRV9MSUJTKSAgJChHU1RfTElCUykgJChMSUJNKQorCS1sZ3N0cGJ1dGlscy0kKEdTVF9BUElfVkVSU0lPTikgJChHU1RfQkFTRV9MSUJTKSAgJChHU1RfTElCUykgJChMSUJNKQogbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKLW5vaW5zdF9IRUFERVJTID0gZ3N0YXVkaW92aXN1YWxpemVyLmggZ3N0ZHJhd2hlbHBlcnMuaCBcCi0JZ3N0c3BhY2VzY29wZS5oIGdzdHNwZWN0cmFzY29wZS5oIGdzdHN5bmFlc2NvcGUuaCBnc3R3YXZlc2NvcGUuaAorbm9pbnN0X0hFQURFUlMgPSBnc3RkcmF3aGVscGVycy5oIFwKKwlnc3RzcGFjZXNjb3BlLmggXAorCWdzdHNwZWN0cmFzY29wZS5oIFwKKwlnc3RzeW5hZXNjb3BlLmggXAorCWdzdHdhdmVzY29wZS5oCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9NYWtlZmlsZS5pbiBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmluCmluZGV4IGM5MzAxNDEuLjRiZmRmOWUgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmluCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2OSw3ICsxNjgsNiBAQAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9PQkpFQ1RTID0gIFwKIAlsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLXBsdWdpbi5sbyBcCi0JbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIubG8gXAogCWxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3BhY2VzY29wZS5sbyBcCiAJbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RzcGVjdHJhc2NvcGUubG8gXAogCWxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3luYWVzY29wZS5sbyBcCkBAIC0yODMsNiArMjgxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjAsNiArMzIwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjgsNyArMzMwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ3LDggKzM0OCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjUsMTYgKzM2NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDAsNiArNDAzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI1LDYgKzQzMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNiw2ICs1MzMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM5LDggKzU0Nyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1Niw2ICs1NjIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEzLDE2ICs2MjEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzQsNiArNjg0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4NCw2ICs2OTUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTMsNiArNzA1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczMCw3ICs3NDQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc3Miw3ICs3ODUsNiBAQAogd2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGF1ZGlvdmlzdWFsaXplcnMubGEKIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfU09VUkNFUyA9IHBsdWdpbi5jIFwKLSAgICBnc3RhdWRpb3Zpc3VhbGl6ZXIuYyBnc3RhdWRpb3Zpc3VhbGl6ZXIuaCBcCiAgICAgZ3N0c3BhY2VzY29wZS5jIGdzdHNwYWNlc2NvcGUuaCBcCiAgICAgZ3N0c3BlY3RyYXNjb3BlLmMgZ3N0c3BlY3RyYXNjb3BlLmggXAogICAgIGdzdHN5bmFlc2NvcGUuYyBnc3RzeW5hZXNjb3BlLmggXApAQCAtNzg1LDEyICs3OTcsMTUgQEAKIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfTElCQUREID0gXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCiAJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgLWxnc3RmZnQtJChHU1RfQVBJX1ZFUlNJT04pIFwKLQkkKEdTVF9CQVNFX0xJQlMpICAkKEdTVF9MSUJTKSAkKExJQk0pCisJLWxnc3RwYnV0aWxzLSQoR1NUX0FQSV9WRVJTSU9OKSAkKEdTVF9CQVNFX0xJQlMpICAkKEdTVF9MSUJTKSAkKExJQk0pCiAKIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBnc3RhdWRpb3Zpc3VhbGl6ZXIuaCBnc3RkcmF3aGVscGVycy5oIFwKLQlnc3RzcGFjZXNjb3BlLmggZ3N0c3BlY3RyYXNjb3BlLmggZ3N0c3luYWVzY29wZS5oIGdzdHdhdmVzY29wZS5oCitub2luc3RfSEVBREVSUyA9IGdzdGRyYXdoZWxwZXJzLmggXAorCWdzdHNwYWNlc2NvcGUuaCBcCisJZ3N0c3BlY3RyYXNjb3BlLmggXAorCWdzdHN5bmFlc2NvcGUuaCBcCisJZ3N0d2F2ZXNjb3BlLmgKIAogYWxsOiBhbGwtYW0KIApAQCAtODcwLDcgKzg4NSw2IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwYWNlc2NvcGUuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwZWN0cmFzY29wZS5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3luYWVzY29wZS5QbG9AYW1fX3F1b3RlQApAQCAtOTA4LDEzICs5MjIsNiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLXBsdWdpbi5sbyBgdGVzdCAtZiAncGx1Z2luLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHBsdWdpbi5jCiAKLWxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0YXVkaW92aXN1YWxpemVyLmxvOiBnc3RhdWRpb3Zpc3VhbGl6ZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RhdWRpb3Zpc3VhbGl6ZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0YXVkaW92aXN1YWxpemVyLlRwbyAtYyAtbyBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdGF1ZGlvdmlzdWFsaXplci5sbyBgdGVzdCAtZiAnZ3N0YXVkaW92aXN1YWxpemVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGF1ZGlvdmlzdWFsaXplci5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdGF1ZGlvdmlzdWFsaXplci5UcG8gJChERVBESVIpL2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0YXVkaW92aXN1YWxpemVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGF1ZGlvdmlzdWFsaXplci5jJyBvYmplY3Q9J2xpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0YXVkaW92aXN1YWxpemVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXVkaW92aXN1YWxpemVyc19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0YXVkaW92aXN1YWxpemVyLmxvIGB0ZXN0IC1mICdnc3RhdWRpb3Zpc3VhbGl6ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YXVkaW92aXN1YWxpemVyLmMKLQogbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RzcGFjZXNjb3BlLmxvOiBnc3RzcGFjZXNjb3BlLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGF1ZGlvdmlzdWFsaXplcnNfbGEtZ3N0c3BhY2VzY29wZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXVkaW92aXN1YWxpemVyc19sYS1nc3RzcGFjZXNjb3BlLlRwbyAtYyAtbyBsaWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwYWNlc2NvcGUubG8gYHRlc3QgLWYgJ2dzdHNwYWNlc2NvcGUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0c3BhY2VzY29wZS5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwYWNlc2NvcGUuVHBvICQoREVQRElSKS9saWJnc3RhdWRpb3Zpc3VhbGl6ZXJzX2xhLWdzdHNwYWNlc2NvcGUuUGxvCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RhdWRpb3Zpc3VhbGl6ZXIuYyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdGF1ZGlvdmlzdWFsaXplci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzRhMTc3Li4wMDAwMDAwCi0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdGF1ZGlvdmlzdWFsaXplci5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQ1OSArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDIwMTE+IFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KLSAqIENvcHlyaWdodCAoQykgPDIwMTU+IEx1aXMgZGUgQmV0aGVuY291cnQgPGx1aXNAZGViZXRoZW5jb3VydC5jb20+Ci0gKgotICogZ3N0YXVkaW92aXN1YWxpemVyLmg6IGJhc2UgY2xhc3MgZm9yIGF1ZGlvIHZpc3VhbGlzYXRpb24gZWxlbWVudHMKLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotLyoqCi0gKiBTRUNUSU9OOmdzdGF1ZGlvdmlzdWFsaXplcgotICoKLSAqIEEgYmFzZWNsYXNzIGZvciBzY29wZXMgKHZpc3VhbGl6ZXJzKS4gSXQgdGFrZXMgY2FyZSBvZiByZS1maXR0aW5nIHRoZQotICogYXVkaW8tcmF0ZSB0byB2aWRlby1yYXRlIGFuZCBoYW5kbGVzIHJlbmVnb3RpYXRpb24gKGRvd25zdHJlYW0gdmlkZW8gc2l6ZQotICogY2hhbmdlcykuCi0gKiAKLSAqIEl0IGFsc28gcHJvdmlkZXMgc2V2ZXJhbCBiYWNrZ3JvdW5kIHNoYWRpbmcgZWZmZWN0cy4gVGhlc2UgZWZmZWN0cyBhcmUKLSAqIGFwcGxpZWQgdG8gYSBwcmV2aW91cyBwaWN0dXJlIGJlZm9yZSB0aGUgcmVuZGVyKCkgaW1wbGVtZW50YXRpb24gY2FuIGRyYXcgYQotICogbmV3IGZyYW1lLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgotI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KLQotI2luY2x1ZGUgImdzdGF1ZGlvdmlzdWFsaXplci5oIgotCi1HU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChhdWRpb192aXN1YWxpemVyX2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIChhdWRpb192aXN1YWxpemVyX2RlYnVnKQotCi0jZGVmaW5lIERFRkFVTFRfU0hBREVSIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFCi0jZGVmaW5lIERFRkFVTFRfU0hBREVfQU1PVU5UICAgMHgwMDBhMGEwYQotCi1lbnVtCi17Ci0gIFBST1BfMCwKLSAgUFJPUF9TSEFERVIsCi0gIFBST1BfU0hBREVfQU1PVU5UCi19OwotCi1zdGF0aWMgR3N0QmFzZVRyYW5zZm9ybUNsYXNzICpwYXJlbnRfY2xhc3MgPSBOVUxMOwotCi1zdGF0aWMgdm9pZCBnc3RfYXVkaW9fdmlzdWFsaXplcl9jbGFzc19pbml0IChHc3RBdWRpb1Zpc3VhbGl6ZXJDbGFzcyAqIGtsYXNzKTsKLXN0YXRpYyB2b2lkIGdzdF9hdWRpb192aXN1YWxpemVyX2luaXQgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzICogZ19jbGFzcyk7Ci1zdGF0aWMgdm9pZCBnc3RfYXVkaW9fdmlzdWFsaXplcl9zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgdm9pZCBnc3RfYXVkaW9fdmlzdWFsaXplcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci1zdGF0aWMgdm9pZCBnc3RfYXVkaW9fdmlzdWFsaXplcl9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfbmVnb3RpYXRlIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc3JjX3NldGNhcHMgKEdzdEF1ZGlvVmlzdWFsaXplciAqCi0gICAgc2NvcGUsIEdzdENhcHMgKiBjYXBzKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfYXVkaW9fdmlzdWFsaXplcl9zaW5rX3NldGNhcHMgKEdzdEF1ZGlvVmlzdWFsaXplciAqCi0gICAgc2NvcGUsIEdzdENhcHMgKiBjYXBzKTsKLQotc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfY2hhaW4gKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIGdib29sZWFuIGdzdF9hdWRpb192aXN1YWxpemVyX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKLSAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwotCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc3JjX3F1ZXJ5IChHc3RQYWQgKiBwYWQsCi0gICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RRdWVyeSAqIHF1ZXJ5KTsKLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIGdzdF9hdWRpb192aXN1YWxpemVyX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqCi0gICAgZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7Ci0KLXN0YXRpYyBnYm9vbGVhbiBnc3RfYXVkaW9fdmlzdWFsaXplcl9kb19idWZmZXJwb29sIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBHc3RDYXBzICogb3V0Y2Fwcyk7Ci0KLXN0YXRpYyBnYm9vbGVhbgotZGVmYXVsdF9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsIEdzdFF1ZXJ5ICogcXVlcnkpOwotCi0jZGVmaW5lIEdTVF9BVURJT19WSVNVQUxJWkVSX0dFVF9QUklWQVRFKG9iaikgIFwKLSAgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9QUklWQVRFICgob2JqKSwgR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUiwgR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSkpCi0KLXN0cnVjdCBfR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZQotewotICBnYm9vbGVhbiBuZWdvdGlhdGVkOwotCi0gIEdzdEJ1ZmZlclBvb2wgKnBvb2w7Ci0gIGdib29sZWFuIHBvb2xfYWN0aXZlOwotICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKLSAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7Ci0gIEdzdFF1ZXJ5ICpxdWVyeTsKLQotICAvKiBwYWRzICovCi0gIEdzdFBhZCAqc3JjcGFkLCAqc2lua3BhZDsKLQotICBHc3RBdWRpb1Zpc3VhbGl6ZXJTaGFkZXIgc2hhZGVyX3R5cGU7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplclNoYWRlckZ1bmMgc2hhZGVyOwotICBndWludDMyIHNoYWRlX2Ftb3VudDsKLQotICBHc3RBZGFwdGVyICphZGFwdGVyOwotCi0gIEdzdEJ1ZmZlciAqaW5idWY7Ci0gIEdzdEJ1ZmZlciAqdGVtcGJ1ZjsKLSAgR3N0VmlkZW9GcmFtZSB0ZW1wZnJhbWU7Ci0KLSAgZ3VpbnQgc3BmOyAgICAgICAgICAgICAgICAgICAgLyogc2FtcGxlcyBwZXIgdmlkZW8gZnJhbWUgKi8KLSAgZ3VpbnQ2NCBmcmFtZV9kdXJhdGlvbjsKLQotICAvKiBRb1Mgc3R1ZmYgKi8vKiB3aXRoIExPQ0sgKi8KLSAgZ2RvdWJsZSBwcm9wb3J0aW9uOwotICBHc3RDbG9ja1RpbWUgZWFybGllc3RfdGltZTsKLQotICBndWludCBkcm9wcGVkOyAgICAgICAgICAgICAgICAvKiBmcmFtZXMgZHJvcHBlZCAvIG5vdCBkcm9wcGVkICovCi0gIGd1aW50IHByb2Nlc3NlZDsKLQotICAvKiBjb25maWd1cmF0aW9uIG11dGV4ICovCi0gIEdNdXRleCBjb25maWdfbG9jazsKLQotICBHc3RTZWdtZW50IHNlZ21lbnQ7Ci19OwotCi0KLS8qIHNoYWRpbmcgZnVuY3Rpb25zICovCi0KLSNkZWZpbmUgR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUl9TSEFERVIgKGdzdF9hdWRpb192aXN1YWxpemVyX3NoYWRlcl9nZXRfdHlwZSgpKQotc3RhdGljIEdUeXBlCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zaGFkZXJfZ2V0X3R5cGUgKHZvaWQpCi17Ci0gIHN0YXRpYyBHVHlwZSBzaGFkZXJfdHlwZSA9IDA7Ci0gIHN0YXRpYyBjb25zdCBHRW51bVZhbHVlIHNoYWRlcnNbXSA9IHsKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX05PTkUsICJOb25lIiwgIm5vbmUifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREUsICJGYWRlIiwgImZhZGUifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVVAsICJGYWRlIGFuZCBtb3ZlIHVwIiwKLSAgICAgICAgImZhZGUtYW5kLW1vdmUtdXAifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfRE9XTiwgIkZhZGUgYW5kIG1vdmUgZG93biIsCi0gICAgICAgICJmYWRlLWFuZC1tb3ZlLWRvd24ifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfTEVGVCwgIkZhZGUgYW5kIG1vdmUgbGVmdCIsCi0gICAgICAgICJmYWRlLWFuZC1tb3ZlLWxlZnQifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfUklHSFQsCi0gICAgICAgICAgIkZhZGUgYW5kIG1vdmUgcmlnaHQiLAotICAgICAgICAiZmFkZS1hbmQtbW92ZS1yaWdodCJ9LAotICAgIHtHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9IT1JJWl9PVVQsCi0gICAgICAgICJGYWRlIGFuZCBtb3ZlIGhvcml6b250YWxseSBvdXQiLCAiZmFkZS1hbmQtbW92ZS1ob3Jpei1vdXQifSwKLSAgICB7R1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfSE9SSVpfSU4sCi0gICAgICAgICJGYWRlIGFuZCBtb3ZlIGhvcml6b250YWxseSBpbiIsICJmYWRlLWFuZC1tb3ZlLWhvcml6LWluIn0sCi0gICAge0dTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1ZFUlRfT1VULAotICAgICAgICAiRmFkZSBhbmQgbW92ZSB2ZXJ0aWNhbGx5IG91dCIsICJmYWRlLWFuZC1tb3ZlLXZlcnQtb3V0In0sCi0gICAge0dTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1ZFUlRfSU4sCi0gICAgICAgICJGYWRlIGFuZCBtb3ZlIHZlcnRpY2FsbHkgaW4iLCAiZmFkZS1hbmQtbW92ZS12ZXJ0LWluIn0sCi0gICAgezAsIE5VTEwsIE5VTEx9LAotICB9OwotCi0gIGlmIChHX1VOTElLRUxZIChzaGFkZXJfdHlwZSA9PSAwKSkgewotICAgIC8qIFRPRE86IHJlbmFtZSB3aGVuIGV4cG9ydGluZyBpdCBhcyBhIGxpYnJhcnkgKi8KLSAgICBzaGFkZXJfdHlwZSA9Ci0gICAgICAgIGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMKLSAgICAgICAgKCJHc3RBdWRpb1Zpc3VhbGl6ZXJTaGFkZXItQmFkR3N0QXVkaW9WaXN1YWxpemVycyIsIHNoYWRlcnMpOwotICB9Ci0gIHJldHVybiBzaGFkZXJfdHlwZTsKLX0KLQotLyogd2UncmUgb25seSBzdXBwb3J0aW5nIEdTVF9WSURFT19GT1JNQVRfeFJHQiByaWdodCBub3cpICovCi0jaWYgR19CWVRFX09SREVSID09IEdfTElUVExFX0VORElBTgotCi0jZGVmaW5lIFNIQURFKF9kLCBfcywgX2ksIF9yLCBfZywgX2IpICAgICAgICAgICAgICAgICAgICAgXAotR19TVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfZFtfaSAqIDQgKyAwXSA9IChfc1tfaSAqIDQgKyAwXSA+IF9iKSA/IF9zW19pICogNCArIDBdIC0gX2IgOiAwOyBcCi0gICAgX2RbX2kgKiA0ICsgMV0gPSAoX3NbX2kgKiA0ICsgMV0gPiBfZykgPyBfc1tfaSAqIDQgKyAxXSAtIF9nIDogMDsgXAotICAgIF9kW19pICogNCArIDJdID0gKF9zW19pICogNCArIDJdID4gX3IpID8gX3NbX2kgKiA0ICsgMl0gLSBfciA6IDA7IFwKLSAgICBfZFtfaSAqIDQgKyAzXSA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBHX1NUTVRfRU5ECi0KLSNlbHNlIC8qIEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4gKi8KLQotI2RlZmluZSBTSEFERShfZCwgX3MsIF9pLCBfciwgX2csIF9iKSAgICAgICAgICAgICAgICAgICAgIFwKLUdfU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgX2RbX2kgKiA0ICsgMF0gPSAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBfZFtfaSAqIDQgKyAxXSA9IChfc1tfaSAqIDQgKyAxXSA+IF9yKSA/IF9zW19pICogNCArIDFdIC0gX3IgOiAwOyBcCi0gICAgX2RbX2kgKiA0ICsgMl0gPSAoX3NbX2kgKiA0ICsgMl0gPiBfZykgPyBfc1tfaSAqIDQgKyAyXSAtIF9nIDogMDsgXAotICAgIF9kW19pICogNCArIDNdID0gKF9zW19pICogNCArIDNdID4gX2IpID8gX3NbX2kgKiA0ICsgM10gLSBfYiA6IDA7IFwKLX0gR19TVE1UX0VORAotCi0jZW5kaWYKLQotc3RhdGljIHZvaWQKLXNoYWRlcl9mYWRlIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwKLSAgICBHc3RWaWRlb0ZyYW1lICogZGZyYW1lKQotewotICBndWludCBpLCBqOwotICBndWludDMyIHNoYWRlX2Ftb3VudCA9IHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQ7Ci0gIGd1aW50IHIgPSAoc2hhZGVfYW1vdW50ID4+IDE2KSAmIDB4ZmY7Ci0gIGd1aW50IGcgPSAoc2hhZGVfYW1vdW50ID4+IDgpICYgMHhmZjsKLSAgZ3VpbnQgYiA9IChzaGFkZV9hbW91bnQgPj4gMCkgJiAweGZmOwotICBndWludDggKnMsICpkOwotICBnaW50IHNzLCBkcywgd2lkdGgsIGhlaWdodDsKLQotICBzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKHNmcmFtZSwgMCk7Ci0gIHNzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoc2ZyYW1lLCAwKTsKLSAgZCA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChkZnJhbWUsIDApOwotICBkcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKGRmcmFtZSwgMCk7Ci0KLSAgd2lkdGggPSBHU1RfVklERU9fRlJBTUVfV0lEVEggKHNmcmFtZSk7Ci0gIGhlaWdodCA9IEdTVF9WSURFT19GUkFNRV9IRUlHSFQgKHNmcmFtZSk7Ci0KLSAgZm9yIChqID0gMDsgaiA8IGhlaWdodDsgaisrKSB7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgcyArPSBzczsKLSAgICBkICs9IGRzOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1zaGFkZXJfZmFkZV9hbmRfbW92ZV91cCAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwgR3N0VmlkZW9GcmFtZSAqIGRmcmFtZSkKLXsKLSAgZ3VpbnQgaSwgajsKLSAgZ3VpbnQzMiBzaGFkZV9hbW91bnQgPSBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50OwotICBndWludCByID0gKHNoYWRlX2Ftb3VudCA+PiAxNikgJiAweGZmOwotICBndWludCBnID0gKHNoYWRlX2Ftb3VudCA+PiA4KSAmIDB4ZmY7Ci0gIGd1aW50IGIgPSAoc2hhZGVfYW1vdW50ID4+IDApICYgMHhmZjsKLSAgZ3VpbnQ4ICpzLCAqZDsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIGZvciAoaiA9IDE7IGogPCBoZWlnaHQ7IGorKykgewotICAgIHMgKz0gc3M7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgZCArPSBkczsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotc2hhZGVyX2ZhZGVfYW5kX21vdmVfZG93biAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwgR3N0VmlkZW9GcmFtZSAqIGRmcmFtZSkKLXsKLSAgZ3VpbnQgaSwgajsKLSAgZ3VpbnQzMiBzaGFkZV9hbW91bnQgPSBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50OwotICBndWludCByID0gKHNoYWRlX2Ftb3VudCA+PiAxNikgJiAweGZmOwotICBndWludCBnID0gKHNoYWRlX2Ftb3VudCA+PiA4KSAmIDB4ZmY7Ci0gIGd1aW50IGIgPSAoc2hhZGVfYW1vdW50ID4+IDApICYgMHhmZjsKLSAgZ3VpbnQ4ICpzLCAqZDsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIGZvciAoaiA9IDE7IGogPCBoZWlnaHQ7IGorKykgewotICAgIGQgKz0gZHM7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgcyArPSBzczsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotc2hhZGVyX2ZhZGVfYW5kX21vdmVfbGVmdCAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwgR3N0VmlkZW9GcmFtZSAqIGRmcmFtZSkKLXsKLSAgZ3VpbnQgaSwgajsKLSAgZ3VpbnQzMiBzaGFkZV9hbW91bnQgPSBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50OwotICBndWludCByID0gKHNoYWRlX2Ftb3VudCA+PiAxNikgJiAweGZmOwotICBndWludCBnID0gKHNoYWRlX2Ftb3VudCA+PiA4KSAmIDB4ZmY7Ci0gIGd1aW50IGIgPSAoc2hhZGVfYW1vdW50ID4+IDApICYgMHhmZjsKLSAgZ3VpbnQ4ICpzLCAqZDsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIHdpZHRoIC09IDE7Ci0gIHMgKz0gNDsKLQotICAvKiBtb3ZlIHRvIHRoZSBsZWZ0ICovCi0gIGZvciAoaiA9IDA7IGogPCBoZWlnaHQ7IGorKykgewotICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7Ci0gICAgICBTSEFERSAoZCwgcywgaSwgciwgZywgYik7Ci0gICAgfQotICAgIGQgKz0gZHM7Ci0gICAgcyArPSBzczsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotc2hhZGVyX2ZhZGVfYW5kX21vdmVfcmlnaHQgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIGNvbnN0IEdzdFZpZGVvRnJhbWUgKiBzZnJhbWUsIEdzdFZpZGVvRnJhbWUgKiBkZnJhbWUpCi17Ci0gIGd1aW50IGksIGo7Ci0gIGd1aW50MzIgc2hhZGVfYW1vdW50ID0gc2NvcGUtPnByaXYtPnNoYWRlX2Ftb3VudDsKLSAgZ3VpbnQgciA9IChzaGFkZV9hbW91bnQgPj4gMTYpICYgMHhmZjsKLSAgZ3VpbnQgZyA9IChzaGFkZV9hbW91bnQgPj4gOCkgJiAweGZmOwotICBndWludCBiID0gKHNoYWRlX2Ftb3VudCA+PiAwKSAmIDB4ZmY7Ci0gIGd1aW50OCAqcywgKmQ7Ci0gIGdpbnQgc3MsIGRzLCB3aWR0aCwgaGVpZ2h0OwotCi0gIHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoc2ZyYW1lLCAwKTsKLSAgc3MgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChzZnJhbWUsIDApOwotICBkID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKGRmcmFtZSwgMCk7Ci0gIGRzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoZGZyYW1lLCAwKTsKLQotICB3aWR0aCA9IEdTVF9WSURFT19GUkFNRV9XSURUSCAoc2ZyYW1lKTsKLSAgaGVpZ2h0ID0gR1NUX1ZJREVPX0ZSQU1FX0hFSUdIVCAoc2ZyYW1lKTsKLQotICB3aWR0aCAtPSAxOwotICBkICs9IDQ7Ci0KLSAgLyogbW92ZSB0byB0aGUgcmlnaHQgKi8KLSAgZm9yIChqID0gMDsgaiA8IGhlaWdodDsgaisrKSB7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgZCArPSBkczsKLSAgICBzICs9IHNzOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1zaGFkZXJfZmFkZV9hbmRfbW92ZV9ob3Jpel9vdXQgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIGNvbnN0IEdzdFZpZGVvRnJhbWUgKiBzZnJhbWUsIEdzdFZpZGVvRnJhbWUgKiBkZnJhbWUpCi17Ci0gIGd1aW50IGksIGo7Ci0gIGd1aW50MzIgc2hhZGVfYW1vdW50ID0gc2NvcGUtPnByaXYtPnNoYWRlX2Ftb3VudDsKLSAgZ3VpbnQgciA9IChzaGFkZV9hbW91bnQgPj4gMTYpICYgMHhmZjsKLSAgZ3VpbnQgZyA9IChzaGFkZV9hbW91bnQgPj4gOCkgJiAweGZmOwotICBndWludCBiID0gKHNoYWRlX2Ftb3VudCA+PiAwKSAmIDB4ZmY7Ci0gIGd1aW50OCAqcywgKmQ7Ci0gIGdpbnQgc3MsIGRzLCB3aWR0aCwgaGVpZ2h0OwotCi0gIHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoc2ZyYW1lLCAwKTsKLSAgc3MgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChzZnJhbWUsIDApOwotICBkID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKGRmcmFtZSwgMCk7Ci0gIGRzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoZGZyYW1lLCAwKTsKLQotICB3aWR0aCA9IEdTVF9WSURFT19GUkFNRV9XSURUSCAoc2ZyYW1lKTsKLSAgaGVpZ2h0ID0gR1NUX1ZJREVPX0ZSQU1FX0hFSUdIVCAoc2ZyYW1lKTsKLQotICAvKiBtb3ZlIHVwcGVyIGhhbGYgdXAgKi8KLSAgZm9yIChqID0gMDsgaiA8IGhlaWdodCAvIDI7IGorKykgewotICAgIHMgKz0gc3M7Ci0gICAgZm9yIChpID0gMDsgaSA8IHdpZHRoOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgZCArPSBkczsKLSAgfQotICAvKiBtb3ZlIGxvd2VyIGhhbGYgZG93biAqLwotICBmb3IgKGogPSAwOyBqIDwgaGVpZ2h0IC8gMjsgaisrKSB7Ci0gICAgZCArPSBkczsKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGg7IGkrKykgewotICAgICAgU0hBREUgKGQsIHMsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICBzICs9IHNzOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1zaGFkZXJfZmFkZV9hbmRfbW92ZV9ob3Jpel9pbiAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwgR3N0VmlkZW9GcmFtZSAqIGRmcmFtZSkKLXsKLSAgZ3VpbnQgaSwgajsKLSAgZ3VpbnQzMiBzaGFkZV9hbW91bnQgPSBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50OwotICBndWludCByID0gKHNoYWRlX2Ftb3VudCA+PiAxNikgJiAweGZmOwotICBndWludCBnID0gKHNoYWRlX2Ftb3VudCA+PiA4KSAmIDB4ZmY7Ci0gIGd1aW50IGIgPSAoc2hhZGVfYW1vdW50ID4+IDApICYgMHhmZjsKLSAgZ3VpbnQ4ICpzLCAqZDsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIC8qIG1vdmUgdXBwZXIgaGFsZiBkb3duICovCi0gIGZvciAoaiA9IDA7IGogPCBoZWlnaHQgLyAyOyBqKyspIHsKLSAgICBkICs9IGRzOwotICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7Ci0gICAgICBTSEFERSAoZCwgcywgaSwgciwgZywgYik7Ci0gICAgfQotICAgIHMgKz0gc3M7Ci0gIH0KLSAgLyogbW92ZSBsb3dlciBoYWxmIHVwICovCi0gIGZvciAoaiA9IDA7IGogPCBoZWlnaHQgLyAyOyBqKyspIHsKLSAgICBzICs9IHNzOwotICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aDsgaSsrKSB7Ci0gICAgICBTSEFERSAoZCwgcywgaSwgciwgZywgYik7Ci0gICAgfQotICAgIGQgKz0gZHM7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLXNoYWRlcl9mYWRlX2FuZF9tb3ZlX3ZlcnRfb3V0IChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBjb25zdCBHc3RWaWRlb0ZyYW1lICogc2ZyYW1lLCBHc3RWaWRlb0ZyYW1lICogZGZyYW1lKQotewotICBndWludCBpLCBqOwotICBndWludDMyIHNoYWRlX2Ftb3VudCA9IHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQ7Ci0gIGd1aW50IHIgPSAoc2hhZGVfYW1vdW50ID4+IDE2KSAmIDB4ZmY7Ci0gIGd1aW50IGcgPSAoc2hhZGVfYW1vdW50ID4+IDgpICYgMHhmZjsKLSAgZ3VpbnQgYiA9IChzaGFkZV9hbW91bnQgPj4gMCkgJiAweGZmOwotICBndWludDggKnMsICpzMSwgKmQsICpkMTsKLSAgZ2ludCBzcywgZHMsIHdpZHRoLCBoZWlnaHQ7Ci0KLSAgcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9EQVRBIChzZnJhbWUsIDApOwotICBzcyA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKHNmcmFtZSwgMCk7Ci0gIGQgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoZGZyYW1lLCAwKTsKLSAgZHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChkZnJhbWUsIDApOwotCi0gIHdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIIChzZnJhbWUpOwotICBoZWlnaHQgPSBHU1RfVklERU9fRlJBTUVfSEVJR0hUIChzZnJhbWUpOwotCi0gIGZvciAoaiA9IDA7IGogPCBoZWlnaHQ7IGorKykgewotICAgIC8qIG1vdmUgbGVmdCBoYWxmIHRvIHRoZSBsZWZ0ICovCi0gICAgczEgPSBzICsgMTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgd2lkdGggLyAyOyBpKyspIHsKLSAgICAgIFNIQURFIChkLCBzMSwgaSwgciwgZywgYik7Ci0gICAgfQotICAgIC8qIG1vdmUgcmlnaHQgaGFsZiB0byB0aGUgcmlnaHQgKi8KLSAgICBkMSA9IGQgKyAxOwotICAgIGZvciAoOyBpIDwgd2lkdGggLSAxOyBpKyspIHsKLSAgICAgIFNIQURFIChkMSwgcywgaSwgciwgZywgYik7Ci0gICAgfQotICAgIHMgKz0gc3M7Ci0gICAgZCArPSBkczsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotc2hhZGVyX2ZhZGVfYW5kX21vdmVfdmVydF9pbiAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsCi0gICAgY29uc3QgR3N0VmlkZW9GcmFtZSAqIHNmcmFtZSwgR3N0VmlkZW9GcmFtZSAqIGRmcmFtZSkKLXsKLSAgZ3VpbnQgaSwgajsKLSAgZ3VpbnQzMiBzaGFkZV9hbW91bnQgPSBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50OwotICBndWludCByID0gKHNoYWRlX2Ftb3VudCA+PiAxNikgJiAweGZmOwotICBndWludCBnID0gKHNoYWRlX2Ftb3VudCA+PiA4KSAmIDB4ZmY7Ci0gIGd1aW50IGIgPSAoc2hhZGVfYW1vdW50ID4+IDApICYgMHhmZjsKLSAgZ3VpbnQ4ICpzLCAqczEsICpkLCAqZDE7Ci0gIGdpbnQgc3MsIGRzLCB3aWR0aCwgaGVpZ2h0OwotCi0gIHMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoc2ZyYW1lLCAwKTsKLSAgc3MgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfU1RSSURFIChzZnJhbWUsIDApOwotICBkID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX0RBVEEgKGRmcmFtZSwgMCk7Ci0gIGRzID0gR1NUX1ZJREVPX0ZSQU1FX1BMQU5FX1NUUklERSAoZGZyYW1lLCAwKTsKLQotICB3aWR0aCA9IEdTVF9WSURFT19GUkFNRV9XSURUSCAoc2ZyYW1lKTsKLSAgaGVpZ2h0ID0gR1NUX1ZJREVPX0ZSQU1FX0hFSUdIVCAoc2ZyYW1lKTsKLQotICBmb3IgKGogPSAwOyBqIDwgaGVpZ2h0OyBqKyspIHsKLSAgICAvKiBtb3ZlIGxlZnQgaGFsZiB0byB0aGUgcmlnaHQgKi8KLSAgICBkMSA9IGQgKyAxOwotICAgIGZvciAoaSA9IDA7IGkgPCB3aWR0aCAvIDI7IGkrKykgewotICAgICAgU0hBREUgKGQxLCBzLCBpLCByLCBnLCBiKTsKLSAgICB9Ci0gICAgLyogbW92ZSByaWdodCBoYWxmIHRvIHRoZSBsZWZ0ICovCi0gICAgczEgPSBzICsgMTsKLSAgICBmb3IgKDsgaSA8IHdpZHRoIC0gMTsgaSsrKSB7Ci0gICAgICBTSEFERSAoZCwgczEsIGksIHIsIGcsIGIpOwotICAgIH0KLSAgICBzICs9IHNzOwotICAgIGQgKz0gZHM7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLWdzdF9hdWRpb192aXN1YWxpemVyX2NoYW5nZV9zaGFkZXIgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlKQotewotICBHc3RBdWRpb1Zpc3VhbGl6ZXJTaGFkZXJGdW5jIHNoYWRlcjsKLQotICBzd2l0Y2ggKHNjb3BlLT5wcml2LT5zaGFkZXJfdHlwZSkgewotICAgIGNhc2UgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX05PTkU6Ci0gICAgICBzaGFkZXIgPSBOVUxMOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERToKLSAgICAgIHNoYWRlciA9IHNoYWRlcl9mYWRlOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9VUDoKLSAgICAgIHNoYWRlciA9IHNoYWRlcl9mYWRlX2FuZF9tb3ZlX3VwOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9ET1dOOgotICAgICAgc2hhZGVyID0gc2hhZGVyX2ZhZGVfYW5kX21vdmVfZG93bjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfTEVGVDoKLSAgICAgIHNoYWRlciA9IHNoYWRlcl9mYWRlX2FuZF9tb3ZlX2xlZnQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1JJR0hUOgotICAgICAgc2hhZGVyID0gc2hhZGVyX2ZhZGVfYW5kX21vdmVfcmlnaHQ7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0hPUklaX09VVDoKLSAgICAgIHNoYWRlciA9IHNoYWRlcl9mYWRlX2FuZF9tb3ZlX2hvcml6X291dDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfSE9SSVpfSU46Ci0gICAgICBzaGFkZXIgPSBzaGFkZXJfZmFkZV9hbmRfbW92ZV9ob3Jpel9pbjsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9PVVQ6Ci0gICAgICBzaGFkZXIgPSBzaGFkZXJfZmFkZV9hbmRfbW92ZV92ZXJ0X291dDsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9JTjoKLSAgICAgIHNoYWRlciA9IHNoYWRlcl9mYWRlX2FuZF9tb3ZlX3ZlcnRfaW47Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR1NUX0VSUk9SICgiaW52YWxpZCBzaGFkZXIgZnVuY3Rpb24iKTsKLSAgICAgIHNoYWRlciA9IE5VTEw7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHNjb3BlLT5wcml2LT5zaGFkZXIgPSBzaGFkZXI7Ci19Ci0KLS8qIGJhc2UgY2xhc3MgKi8KLQotR1R5cGUKLWdzdF9hdWRpb192aXN1YWxpemVyX2dldF90eXBlICh2b2lkKQotewotICBzdGF0aWMgdm9sYXRpbGUgZ3NpemUgYXVkaW9fdmlzdWFsaXplcl90eXBlID0gMDsKLQotICBpZiAoZ19vbmNlX2luaXRfZW50ZXIgKCZhdWRpb192aXN1YWxpemVyX3R5cGUpKSB7Ci0gICAgc3RhdGljIGNvbnN0IEdUeXBlSW5mbyBhdWRpb192aXN1YWxpemVyX2luZm8gPSB7Ci0gICAgICBzaXplb2YgKEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzKSwKLSAgICAgIE5VTEwsCi0gICAgICBOVUxMLAotICAgICAgKEdDbGFzc0luaXRGdW5jKSBnc3RfYXVkaW9fdmlzdWFsaXplcl9jbGFzc19pbml0LAotICAgICAgTlVMTCwKLSAgICAgIE5VTEwsCi0gICAgICBzaXplb2YgKEdzdEF1ZGlvVmlzdWFsaXplciksCi0gICAgICAwLAotICAgICAgKEdJbnN0YW5jZUluaXRGdW5jKSBnc3RfYXVkaW9fdmlzdWFsaXplcl9pbml0LAotICAgIH07Ci0gICAgR1R5cGUgX3R5cGU7Ci0KLSAgICAvKiBUT0RPOiByZW5hbWUgd2hlbiBleHBvcnRpbmcgaXQgYXMgYSBsaWJyYXJ5ICovCi0gICAgX3R5cGUgPSBnX3R5cGVfcmVnaXN0ZXJfc3RhdGljIChHU1RfVFlQRV9FTEVNRU5ULAotICAgICAgICAiR3N0QXVkaW9WaXN1YWxpemVyLUJhZEdzdEF1ZGlvVmlzdWFsaXplcnMiLCAmYXVkaW9fdmlzdWFsaXplcl9pbmZvLAotICAgICAgICBHX1RZUEVfRkxBR19BQlNUUkFDVCk7Ci0gICAgZ19vbmNlX2luaXRfbGVhdmUgKCZhdWRpb192aXN1YWxpemVyX3R5cGUsIF90eXBlKTsKLSAgfQotICByZXR1cm4gKEdUeXBlKSBhdWRpb192aXN1YWxpemVyX3R5cGU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9jbGFzc19pbml0IChHc3RBdWRpb1Zpc3VhbGl6ZXJDbGFzcyAqIGtsYXNzKQotewotICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwotCi0gIGdfdHlwZV9jbGFzc19hZGRfcHJpdmF0ZSAoa2xhc3MsIHNpemVvZiAoR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSkpOwotCi0gIHBhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOwotCi0gIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChhdWRpb192aXN1YWxpemVyX2RlYnVnLCAiYmFzZWF1ZGlvdmlzdWFsaXplciIsCi0gICAgICAwLCAic2NvcGUgYXVkaW8gdmlzdWFsaXNhdGlvbiBiYXNlIGNsYXNzIik7Ci0KLSAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2V0X3Byb3BlcnR5OwotICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfYXVkaW9fdmlzdWFsaXplcl9nZXRfcHJvcGVydHk7Ci0gIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfZmluYWxpemU7Ci0KLSAgZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYXVkaW9fdmlzdWFsaXplcl9jaGFuZ2Vfc3RhdGUpOwotCi0gIGtsYXNzLT5kZWNpZGVfYWxsb2NhdGlvbiA9IEdTVF9ERUJVR19GVU5DUFRSIChkZWZhdWx0X2RlY2lkZV9hbGxvY2F0aW9uKTsKLQotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NIQURFUiwKLSAgICAgIGdfcGFyYW1fc3BlY19lbnVtICgic2hhZGVyIiwgInNoYWRlciB0eXBlIiwKLSAgICAgICAgICAiU2hhZGVyIGZ1bmN0aW9uIHRvIGFwcGx5IG9uIGVhY2ggZnJhbWUiLAotICAgICAgICAgIEdTVF9UWVBFX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSLCBERUZBVUxUX1NIQURFUiwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci0gIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfU0hBREVfQU1PVU5ULAotICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJzaGFkZS1hbW91bnQiLCAic2hhZGUgYW1vdW50IiwKLSAgICAgICAgICAiU2hhZGluZyBjb2xvciB0byB1c2UgKGJpZy1lbmRpYW4gQVJHQikiLCAwLCBHX01BWFVJTlQzMiwKLSAgICAgICAgICBERUZBVUxUX1NIQURFX0FNT1VOVCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdTVF9QQVJBTV9DT05UUk9MTEFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9pbml0IChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBHc3RBdWRpb1Zpc3VhbGl6ZXJDbGFzcyAqIGdfY2xhc3MpCi17Ci0gIEdzdFBhZFRlbXBsYXRlICpwYWRfdGVtcGxhdGU7Ci0KLSAgc2NvcGUtPnByaXYgPSBHU1RfQVVESU9fVklTVUFMSVpFUl9HRVRfUFJJVkFURSAoc2NvcGUpOwotCi0gIC8qIGNyZWF0ZSB0aGUgc2luayBhbmQgc3JjIHBhZHMgKi8KLSAgcGFkX3RlbXBsYXRlID0KLSAgICAgIGdzdF9lbGVtZW50X2NsYXNzX2dldF9wYWRfdGVtcGxhdGUgKEdTVF9FTEVNRU5UX0NMQVNTIChnX2NsYXNzKSwgInNpbmsiKTsKLSAgZ19yZXR1cm5faWZfZmFpbCAocGFkX3RlbXBsYXRlICE9IE5VTEwpOwotICBzY29wZS0+cHJpdi0+c2lua3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKHBhZF90ZW1wbGF0ZSwgInNpbmsiKTsKLSAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKHNjb3BlLT5wcml2LT5zaW5rcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdWRpb192aXN1YWxpemVyX2NoYWluKSk7Ci0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChzY29wZS0+cHJpdi0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYXVkaW9fdmlzdWFsaXplcl9zaW5rX2V2ZW50KSk7Ci0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzY29wZSksIHNjb3BlLT5wcml2LT5zaW5rcGFkKTsKLQotICBwYWRfdGVtcGxhdGUgPQotICAgICAgZ3N0X2VsZW1lbnRfY2xhc3NfZ2V0X3BhZF90ZW1wbGF0ZSAoR1NUX0VMRU1FTlRfQ0xBU1MgKGdfY2xhc3MpLCAic3JjIik7Ci0gIGdfcmV0dXJuX2lmX2ZhaWwgKHBhZF90ZW1wbGF0ZSAhPSBOVUxMKTsKLSAgc2NvcGUtPnByaXYtPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKHBhZF90ZW1wbGF0ZSwgInNyYyIpOwotICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoc2NvcGUtPnByaXYtPnNyY3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfZXZlbnQpKTsKLSAgZ3N0X3BhZF9zZXRfcXVlcnlfZnVuY3Rpb24gKHNjb3BlLT5wcml2LT5zcmNwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc3JjX3F1ZXJ5KSk7Ci0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChzY29wZSksIHNjb3BlLT5wcml2LT5zcmNwYWQpOwotCi0gIHNjb3BlLT5wcml2LT5hZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3ICgpOwotICBzY29wZS0+cHJpdi0+aW5idWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKLQotICAvKiBwcm9wZXJ0aWVzICovCi0gIHNjb3BlLT5wcml2LT5zaGFkZXJfdHlwZSA9IERFRkFVTFRfU0hBREVSOwotICBnc3RfYXVkaW9fdmlzdWFsaXplcl9jaGFuZ2Vfc2hhZGVyIChzY29wZSk7Ci0gIHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQgPSBERUZBVUxUX1NIQURFX0FNT1VOVDsKLQotICAvKiByZXNldCB0aGUgaW5pdGlhbCB2aWRlbyBzdGF0ZSAqLwotICBnc3RfdmlkZW9faW5mb19pbml0ICgmc2NvcGUtPnZpbmZvKTsKLSAgc2NvcGUtPnByaXYtPmZyYW1lX2R1cmF0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLQotICAvKiByZXNldCB0aGUgaW5pdGlhbCBzdGF0ZSAqLwotICBnc3RfYXVkaW9faW5mb19pbml0ICgmc2NvcGUtPmFpbmZvKTsKLSAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJnNjb3BlLT52aW5mbyk7Ci0KLSAgZ19tdXRleF9pbml0ICgmc2NvcGUtPnByaXYtPmNvbmZpZ19sb2NrKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9hdWRpb192aXN1YWxpemVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBHc3RBdWRpb1Zpc3VhbGl6ZXIgKnNjb3BlID0gR1NUX0FVRElPX1ZJU1VBTElaRVIgKG9iamVjdCk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1NIQURFUjoKLSAgICAgIHNjb3BlLT5wcml2LT5zaGFkZXJfdHlwZSA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKLSAgICAgIGdzdF9hdWRpb192aXN1YWxpemVyX2NoYW5nZV9zaGFkZXIgKHNjb3BlKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9TSEFERV9BTU9VTlQ6Ci0gICAgICBzY29wZS0+cHJpdi0+c2hhZGVfYW1vdW50ID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0gICAgICBicmVhazsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdEF1ZGlvVmlzdWFsaXplciAqc2NvcGUgPSBHU1RfQVVESU9fVklTVUFMSVpFUiAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfU0hBREVSOgotICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIHNjb3BlLT5wcml2LT5zaGFkZXJfdHlwZSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIFBST1BfU0hBREVfQU1PVU5UOgotICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIHNjb3BlLT5wcml2LT5zaGFkZV9hbW91bnQpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0gICAgICBicmVhazsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdEF1ZGlvVmlzdWFsaXplciAqc2NvcGUgPSBHU1RfQVVESU9fVklTVUFMSVpFUiAob2JqZWN0KTsKLSAgR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSAqcHJpdiA9IHNjb3BlLT5wcml2OwotCi0gIGlmIChwcml2LT5hZGFwdGVyKSB7Ci0gICAgZ19vYmplY3RfdW5yZWYgKHByaXYtPmFkYXB0ZXIpOwotICAgIHByaXYtPmFkYXB0ZXIgPSBOVUxMOwotICB9Ci0gIGlmIChwcml2LT5pbmJ1ZikgewotICAgIGdzdF9idWZmZXJfdW5yZWYgKHByaXYtPmluYnVmKTsKLSAgICBwcml2LT5pbmJ1ZiA9IE5VTEw7Ci0gIH0KLSAgaWYgKHByaXYtPnRlbXBidWYpIHsKLSAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZwcml2LT50ZW1wZnJhbWUpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKHByaXYtPnRlbXBidWYpOwotICAgIHByaXYtPnRlbXBidWYgPSBOVUxMOwotICB9Ci0KLSAgZ19tdXRleF9jbGVhciAoJnByaXYtPmNvbmZpZ19sb2NrKTsKLQotICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9yZXNldCAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUpCi17Ci0gIEdzdEF1ZGlvVmlzdWFsaXplclByaXZhdGUgKnByaXYgPSBzY29wZS0+cHJpdjsKLQotICBnc3RfYWRhcHRlcl9jbGVhciAocHJpdi0+YWRhcHRlcik7Ci0gIGdzdF9zZWdtZW50X2luaXQgKCZwcml2LT5zZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzY29wZSk7Ci0gIHByaXYtPnByb3BvcnRpb24gPSAxLjA7Ci0gIHByaXYtPmVhcmxpZXN0X3RpbWUgPSAtMTsKLSAgcHJpdi0+ZHJvcHBlZCA9IDA7Ci0gIHByaXYtPnByb2Nlc3NlZCA9IDA7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChzY29wZSk7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2lua19zZXRjYXBzIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdEF1ZGlvSW5mbyBpbmZvOwotCi0gIGlmICghZ3N0X2F1ZGlvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2FwcykpCi0gICAgZ290byB3cm9uZ19jYXBzOwotCi0gIHNjb3BlLT5haW5mbyA9IGluZm87Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJhdWRpbzogY2hhbm5lbHMgJWQsIHJhdGUgJWQiLAotICAgICAgR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMgKCZpbmZvKSwgR1NUX0FVRElPX0lORk9fUkFURSAoJmluZm8pKTsKLQotICBpZiAoIWdzdF9hdWRpb192aXN1YWxpemVyX3NyY19uZWdvdGlhdGUgKHNjb3BlKSkgewotICAgIGdvdG8gbm90X25lZ290aWF0ZWQ7Ci0gIH0KLQotICByZXR1cm4gVFJVRTsKLQotICAvKiBFcnJvcnMgKi8KLXdyb25nX2NhcHM6Ci0gIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNjb3BlLCAiY291bGQgbm90IHBhcnNlIGNhcHMiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLW5vdF9uZWdvdGlhdGVkOgotICB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzY29wZSwgImZhaWxlZCB0byBuZWdvdGlhdGUiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfc2V0Y2FwcyAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsIEdzdENhcHMgKiBjYXBzKQotewotICBHc3RWaWRlb0luZm8gaW5mbzsKLSAgR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MgKmtsYXNzOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlICpwcml2OwotICBnYm9vbGVhbiByZXM7Ci0KLSAgaWYgKCFnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZpbmZvLCBjYXBzKSkKLSAgICBnb3RvIHdyb25nX2NhcHM7Ci0KLSAga2xhc3MgPSBHU1RfQVVESU9fVklTVUFMSVpFUl9DTEFTUyAoR19PQkpFQ1RfR0VUX0NMQVNTIChzY29wZSkpOwotCi0gIHByaXYgPSBzY29wZS0+cHJpdjsKLQotICBzY29wZS0+dmluZm8gPSBpbmZvOwotCi0gIHByaXYtPmZyYW1lX2R1cmF0aW9uID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludCAoR1NUX1NFQ09ORCwKLSAgICAgIEdTVF9WSURFT19JTkZPX0ZQU19EICgmaW5mbyksIEdTVF9WSURFT19JTkZPX0ZQU19OICgmaW5mbykpOwotICBwcml2LT5zcGYgPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChHU1RfQVVESU9fSU5GT19SQVRFICgmc2NvcGUtPmFpbmZvKSwKLSAgICAgIEdTVF9WSURFT19JTkZPX0ZQU19EICgmaW5mbyksIEdTVF9WSURFT19JTkZPX0ZQU19OICgmaW5mbykpOwotICBzY29wZS0+cmVxX3NwZiA9IHByaXYtPnNwZjsKLQotICBpZiAocHJpdi0+dGVtcGJ1ZikgewotICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJnByaXYtPnRlbXBmcmFtZSk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAocHJpdi0+dGVtcGJ1Zik7Ci0gIH0KLSAgcHJpdi0+dGVtcGJ1ZiA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKGdfbWFsbG9jMCAoc2NvcGUtPnZpbmZvLnNpemUpLAotICAgICAgc2NvcGUtPnZpbmZvLnNpemUpOwotICBnc3RfdmlkZW9fZnJhbWVfbWFwICgmcHJpdi0+dGVtcGZyYW1lLCAmc2NvcGUtPnZpbmZvLCBwcml2LT50ZW1wYnVmLAotICAgICAgR1NUX01BUF9SRUFEV1JJVEUpOwotCi0gIGlmIChrbGFzcy0+c2V0dXAgJiYgIWtsYXNzLT5zZXR1cCAoc2NvcGUpKQotICAgIGdvdG8gc2V0dXBfZmFpbGVkOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAidmlkZW86IGRpbWVuc2lvbiAlZHglZCwgZnJhbWVyYXRlICVkLyVkIiwKLSAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmaW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmluZm8pLAotICAgICAgR1NUX1ZJREVPX0lORk9fRlBTX04gKCZpbmZvKSwgR1NUX1ZJREVPX0lORk9fRlBTX0QgKCZpbmZvKSk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiYmxvY2tzOiBzcGYgJXUsIHJlcV9zcGYgJXUiLCBwcml2LT5zcGYsCi0gICAgICBzY29wZS0+cmVxX3NwZik7Ci0KLSAgZ3N0X3BhZF9zZXRfY2FwcyAocHJpdi0+c3JjcGFkLCBjYXBzKTsKLQotICAvKiBmaW5kIGEgcG9vbCBmb3IgdGhlIG5lZ290aWF0ZWQgY2FwcyBub3cgKi8KLSAgcmVzID0gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfZG9fYnVmZmVycG9vbCAoc2NvcGUsIGNhcHMpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0KLSAgcmV0dXJuIHJlczsKLQotICAvKiBFUlJPUlMgKi8KLXdyb25nX2NhcHM6Ci0gIHsKLSAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJlcnJvciBwYXJzaW5nIGNhcHMiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotc2V0dXBfZmFpbGVkOgotICB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzY29wZSwgImZhaWxlZCB0byBzZXQgdXAiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfbmVnb3RpYXRlIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSkKLXsKLSAgR3N0Q2FwcyAqb3RoZXJjYXBzLCAqdGFyZ2V0OwotICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKLSAgR3N0Q2FwcyAqdGVtcGw7Ci0gIGdib29sZWFuIHJldDsKLQotICB0ZW1wbCA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChzY29wZS0+cHJpdi0+c3JjcGFkKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgInBlcmZvcm1pbmcgbmVnb3RpYXRpb24iKTsKLQotICAvKiBzZWUgd2hhdCB0aGUgcGVlciBjYW4gZG8gKi8KLSAgb3RoZXJjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKHNjb3BlLT5wcml2LT5zcmNwYWQsIE5VTEwpOwotICBpZiAob3RoZXJjYXBzKSB7Ci0gICAgdGFyZ2V0ID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChvdGhlcmNhcHMsIHRlbXBsKTsKLSAgICBnc3RfY2Fwc191bnJlZiAob3RoZXJjYXBzKTsKLSAgICBnc3RfY2Fwc191bnJlZiAodGVtcGwpOwotCi0gICAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5ICh0YXJnZXQpKQotICAgICAgZ290byBub19mb3JtYXQ7Ci0KLSAgICB0YXJnZXQgPSBnc3RfY2Fwc190cnVuY2F0ZSAodGFyZ2V0KTsKLSAgfSBlbHNlIHsKLSAgICB0YXJnZXQgPSB0ZW1wbDsKLSAgfQotCi0gIHRhcmdldCA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKHRhcmdldCk7Ci0gIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHRhcmdldCwgMCk7Ci0gIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzdHJ1Y3R1cmUsICJ3aWR0aCIsIDMyMCk7Ci0gIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzdHJ1Y3R1cmUsICJoZWlnaHQiLCAyMDApOwotICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChzdHJ1Y3R1cmUsICJmcmFtZXJhdGUiLCAyNSwgMSk7Ci0KLSAgdGFyZ2V0ID0gZ3N0X2NhcHNfZml4YXRlICh0YXJnZXQpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiZmluYWwgY2FwcyBhcmUgJSIgR1NUX1BUUl9GT1JNQVQsIHRhcmdldCk7Ci0KLSAgcmV0ID0gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc3JjX3NldGNhcHMgKHNjb3BlLCB0YXJnZXQpOwotCi0gIHJldHVybiByZXQ7Ci0KLW5vX2Zvcm1hdDoKLSAgewotICAgIGdzdF9jYXBzX3VucmVmICh0YXJnZXQpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQotfQotCi0vKiB0YWtlcyBvd25lcnNoaXAgb2YgdGhlIHBvb2wsIGFsbG9jYXRvciBhbmQgcXVlcnkgKi8KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2V0X2FsbG9jYXRpb24gKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLAotICAgIEdzdEJ1ZmZlclBvb2wgKiBwb29sLCBHc3RBbGxvY2F0b3IgKiBhbGxvY2F0b3IsCi0gICAgR3N0QWxsb2NhdGlvblBhcmFtcyAqIHBhcmFtcywgR3N0UXVlcnkgKiBxdWVyeSkKLXsKLSAgR3N0QWxsb2NhdG9yICpvbGRhbGxvYzsKLSAgR3N0QnVmZmVyUG9vbCAqb2xkcG9vbDsKLSAgR3N0UXVlcnkgKm9sZHF1ZXJ5OwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlICpwcml2ID0gc2NvcGUtPnByaXY7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChzY29wZSk7Ci0gIG9sZHBvb2wgPSBwcml2LT5wb29sOwotICBwcml2LT5wb29sID0gcG9vbDsKLSAgcHJpdi0+cG9vbF9hY3RpdmUgPSBGQUxTRTsKLQotICBvbGRhbGxvYyA9IHByaXYtPmFsbG9jYXRvcjsKLSAgcHJpdi0+YWxsb2NhdG9yID0gYWxsb2NhdG9yOwotCi0gIG9sZHF1ZXJ5ID0gcHJpdi0+cXVlcnk7Ci0gIHByaXYtPnF1ZXJ5ID0gcXVlcnk7Ci0KLSAgaWYgKHBhcmFtcykKLSAgICBwcml2LT5wYXJhbXMgPSAqcGFyYW1zOwotICBlbHNlCi0gICAgZ3N0X2FsbG9jYXRpb25fcGFyYW1zX2luaXQgKCZwcml2LT5wYXJhbXMpOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoc2NvcGUpOwotCi0gIGlmIChvbGRwb29sKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJkZWFjdGl2YXRpbmcgb2xkIHBvb2wgJXAiLCBvbGRwb29sKTsKLSAgICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2FjdGl2ZSAob2xkcG9vbCwgRkFMU0UpOwotICAgIGdzdF9vYmplY3RfdW5yZWYgKG9sZHBvb2wpOwotICB9Ci0gIGlmIChvbGRhbGxvYykgewotICAgIGdzdF9vYmplY3RfdW5yZWYgKG9sZGFsbG9jKTsKLSAgfQotICBpZiAob2xkcXVlcnkpIHsKLSAgICBnc3RfcXVlcnlfdW5yZWYgKG9sZHF1ZXJ5KTsKLSAgfQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9kb19idWZmZXJwb29sIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwKLSAgICBHc3RDYXBzICogb3V0Y2FwcykKLXsKLSAgR3N0UXVlcnkgKnF1ZXJ5OwotICBnYm9vbGVhbiByZXN1bHQgPSBUUlVFOwotICBHc3RCdWZmZXJQb29sICpwb29sID0gTlVMTDsKLSAgR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MgKmtsYXNzOwotICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKLSAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7Ci0KLSAgLyogbm90IHBhc3N0aHJvdWdoLCB3ZSBuZWVkIHRvIGFsbG9jYXRlICovCi0gIC8qIGZpbmQgYSBwb29sIGZvciB0aGUgbmVnb3RpYXRlZCBjYXBzIG5vdyAqLwotICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgImRvaW5nIGFsbG9jYXRpb24gcXVlcnkiKTsKLSAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X2FsbG9jYXRpb24gKG91dGNhcHMsIFRSVUUpOwotCi0gIGlmICghZ3N0X3BhZF9wZWVyX3F1ZXJ5IChzY29wZS0+cHJpdi0+c3JjcGFkLCBxdWVyeSkpIHsKLSAgICAvKiBub3QgYSBwcm9ibGVtLCB3ZSB1c2UgdGhlIHF1ZXJ5IGRlZmF1bHRzICovCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJhbGxvY2F0aW9uIHF1ZXJ5IGZhaWxlZCIpOwotICB9Ci0KLSAga2xhc3MgPSBHU1RfQVVESU9fVklTVUFMSVpFUl9HRVRfQ0xBU1MgKHNjb3BlKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgImNhbGxpbmcgZGVjaWRlX2FsbG9jYXRpb24iKTsKLSAgZ19hc3NlcnQgKGtsYXNzLT5kZWNpZGVfYWxsb2NhdGlvbiAhPSBOVUxMKTsKLSAgcmVzdWx0ID0ga2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uIChzY29wZSwgcXVlcnkpOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiQUxMT0NBVElPTiAoJWQpIHBhcmFtczogJSIgR1NUX1BUUl9GT1JNQVQsIHJlc3VsdCwKLSAgICAgIHF1ZXJ5KTsKLQotICBpZiAoIXJlc3VsdCkKLSAgICBnb3RvIG5vX2RlY2lkZV9hbGxvY2F0aW9uOwotCi0gIC8qIHdlIGdvdCBjb25maWd1cmF0aW9uIGZyb20gb3VyIHBlZXIgb3IgdGhlIGRlY2lkZV9hbGxvY2F0aW9uIG1ldGhvZCwKLSAgICogcGFyc2UgdGhlbSAqLwotICBpZiAoZ3N0X3F1ZXJ5X2dldF9uX2FsbG9jYXRpb25fcGFyYW1zIChxdWVyeSkgPiAwKSB7Ci0gICAgZ3N0X3F1ZXJ5X3BhcnNlX250aF9hbGxvY2F0aW9uX3BhcmFtIChxdWVyeSwgMCwgJmFsbG9jYXRvciwgJnBhcmFtcyk7Ci0gIH0gZWxzZSB7Ci0gICAgYWxsb2NhdG9yID0gTlVMTDsKLSAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnBhcmFtcyk7Ci0gIH0KLQotICBpZiAoZ3N0X3F1ZXJ5X2dldF9uX2FsbG9jYXRpb25fcG9vbHMgKHF1ZXJ5KSA+IDApCi0gICAgZ3N0X3F1ZXJ5X3BhcnNlX250aF9hbGxvY2F0aW9uX3Bvb2wgKHF1ZXJ5LCAwLCAmcG9vbCwgTlVMTCwgTlVMTCwgTlVMTCk7Ci0KLSAgLyogbm93IHN0b3JlICovCi0gIHJlc3VsdCA9Ci0gICAgICBnc3RfYXVkaW9fdmlzdWFsaXplcl9zZXRfYWxsb2NhdGlvbiAoc2NvcGUsIHBvb2wsIGFsbG9jYXRvciwgJnBhcmFtcywKLSAgICAgIHF1ZXJ5KTsKLQotICByZXR1cm4gcmVzdWx0OwotCi0gIC8qIEVycm9ycyAqLwotbm9fZGVjaWRlX2FsbG9jYXRpb246Ci0gIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNjb3BlLCAiU3ViY2xhc3MgZmFpbGVkIHRvIGRlY2lkZSBhbGxvY2F0aW9uIik7Ci0gICAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7Ci0KLSAgICByZXR1cm4gcmVzdWx0OwotICB9Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZGVmYXVsdF9kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsIEdzdFF1ZXJ5ICogcXVlcnkpCi17Ci0gIEdzdENhcHMgKm91dGNhcHM7Ci0gIEdzdEJ1ZmZlclBvb2wgKnBvb2w7Ci0gIGd1aW50IHNpemUsIG1pbiwgbWF4OwotICBHc3RBbGxvY2F0b3IgKmFsbG9jYXRvcjsKLSAgR3N0QWxsb2NhdGlvblBhcmFtcyBwYXJhbXM7Ci0gIEdzdFN0cnVjdHVyZSAqY29uZmlnOwotICBnYm9vbGVhbiB1cGRhdGVfYWxsb2NhdG9yOwotICBnYm9vbGVhbiB1cGRhdGVfcG9vbDsKLQotICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbiAocXVlcnksICZvdXRjYXBzLCBOVUxMKTsKLQotICAvKiB3ZSBnb3QgY29uZmlndXJhdGlvbiBmcm9tIG91ciBwZWVyIG9yIHRoZSBkZWNpZGVfYWxsb2NhdGlvbiBtZXRob2QsCi0gICAqIHBhcnNlIHRoZW0gKi8KLSAgaWYgKGdzdF9xdWVyeV9nZXRfbl9hbGxvY2F0aW9uX3BhcmFtcyAocXVlcnkpID4gMCkgewotICAgIC8qIHRyeSB0aGUgYWxsb2NhdG9yICovCi0gICAgZ3N0X3F1ZXJ5X3BhcnNlX250aF9hbGxvY2F0aW9uX3BhcmFtIChxdWVyeSwgMCwgJmFsbG9jYXRvciwgJnBhcmFtcyk7Ci0gICAgdXBkYXRlX2FsbG9jYXRvciA9IFRSVUU7Ci0gIH0gZWxzZSB7Ci0gICAgYWxsb2NhdG9yID0gTlVMTDsKLSAgICBnc3RfYWxsb2NhdGlvbl9wYXJhbXNfaW5pdCAoJnBhcmFtcyk7Ci0gICAgdXBkYXRlX2FsbG9jYXRvciA9IEZBTFNFOwotICB9Ci0KLSAgaWYgKGdzdF9xdWVyeV9nZXRfbl9hbGxvY2F0aW9uX3Bvb2xzIChxdWVyeSkgPiAwKSB7Ci0gICAgZ3N0X3F1ZXJ5X3BhcnNlX250aF9hbGxvY2F0aW9uX3Bvb2wgKHF1ZXJ5LCAwLCAmcG9vbCwgJnNpemUsICZtaW4sICZtYXgpOwotICAgIHVwZGF0ZV9wb29sID0gVFJVRTsKLSAgfSBlbHNlIHsKLSAgICBwb29sID0gTlVMTDsKLSAgICBzaXplID0gR1NUX1ZJREVPX0lORk9fU0laRSAoJnNjb3BlLT52aW5mbyk7Ci0gICAgbWluID0gbWF4ID0gMDsKLSAgICB1cGRhdGVfcG9vbCA9IEZBTFNFOwotICB9Ci0KLSAgaWYgKHBvb2wgPT0gTlVMTCkgewotICAgIC8qIHdlIGRpZCBub3QgZ2V0IGEgcG9vbCwgbWFrZSBvbmUgb3Vyc2VsdmVzIHRoZW4gKi8KLSAgICBwb29sID0gZ3N0X3ZpZGVvX2J1ZmZlcl9wb29sX25ldyAoKTsKLSAgfQotCi0gIGNvbmZpZyA9IGdzdF9idWZmZXJfcG9vbF9nZXRfY29uZmlnIChwb29sKTsKLSAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfcGFyYW1zIChjb25maWcsIG91dGNhcHMsIHNpemUsIG1pbiwgbWF4KTsKLSAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfYWxsb2NhdG9yIChjb25maWcsIGFsbG9jYXRvciwgJnBhcmFtcyk7Ci0gIGdzdF9idWZmZXJfcG9vbF9jb25maWdfYWRkX29wdGlvbiAoY29uZmlnLCBHU1RfQlVGRkVSX1BPT0xfT1BUSU9OX1ZJREVPX01FVEEpOwotICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAocG9vbCwgY29uZmlnKTsKLQotICBpZiAodXBkYXRlX2FsbG9jYXRvcikKLSAgICBnc3RfcXVlcnlfc2V0X250aF9hbGxvY2F0aW9uX3BhcmFtIChxdWVyeSwgMCwgYWxsb2NhdG9yLCAmcGFyYW1zKTsKLSAgZWxzZQotICAgIGdzdF9xdWVyeV9hZGRfYWxsb2NhdGlvbl9wYXJhbSAocXVlcnksIGFsbG9jYXRvciwgJnBhcmFtcyk7Ci0KLSAgaWYgKGFsbG9jYXRvcikKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChhbGxvY2F0b3IpOwotCi0gIGlmICh1cGRhdGVfcG9vbCkKLSAgICBnc3RfcXVlcnlfc2V0X250aF9hbGxvY2F0aW9uX3Bvb2wgKHF1ZXJ5LCAwLCBwb29sLCBzaXplLCBtaW4sIG1heCk7Ci0gIGVsc2UKLSAgICBnc3RfcXVlcnlfYWRkX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIHBvb2wsIHNpemUsIG1pbiwgbWF4KTsKLQotICBpZiAocG9vbCkKLSAgICBnc3Rfb2JqZWN0X3VucmVmIChwb29sKTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWRlZmF1bHRfcHJlcGFyZV9vdXRwdXRfYnVmZmVyIChHc3RBdWRpb1Zpc3VhbGl6ZXIgKiBzY29wZSwgR3N0QnVmZmVyICoqIG91dGJ1ZikKLXsKLSAgR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSAqcHJpdjsKLQotICBwcml2ID0gc2NvcGUtPnByaXY7Ci0KLSAgZ19hc3NlcnQgKHByaXYtPnBvb2wgIT0gTlVMTCk7Ci0KLSAgLyogd2UgY2FuJ3QgcmV1c2UgdGhlIGlucHV0IGJ1ZmZlciAqLwotICBpZiAoIXByaXYtPnBvb2xfYWN0aXZlKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJzZXR0aW5nIHBvb2wgJXAgYWN0aXZlIiwgcHJpdi0+cG9vbCk7Ci0gICAgaWYgKCFnc3RfYnVmZmVyX3Bvb2xfc2V0X2FjdGl2ZSAocHJpdi0+cG9vbCwgVFJVRSkpCi0gICAgICBnb3RvIGFjdGl2YXRlX2ZhaWxlZDsKLSAgICBwcml2LT5wb29sX2FjdGl2ZSA9IFRSVUU7Ci0gIH0KLSAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJ1c2luZyBwb29sIGFsbG9jIik7Ci0KLSAgcmV0dXJuIGdzdF9idWZmZXJfcG9vbF9hY3F1aXJlX2J1ZmZlciAocHJpdi0+cG9vbCwgb3V0YnVmLCBOVUxMKTsKLQotICAvKiBFUlJPUlMgKi8KLWFjdGl2YXRlX2ZhaWxlZDoKLSAgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzY29wZSwgUkVTT1VSQ0UsIFNFVFRJTkdTLAotICAgICAgICAoImZhaWxlZCB0byBhY3RpdmF0ZSBidWZmZXJwb29sIiksICgiZmFpbGVkIHRvIGFjdGl2YXRlIGJ1ZmZlcnBvb2wiKSk7Ci0gICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwotICB9Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgR3N0QnVmZmVyICogYnVmZmVyKQotewotICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXIgKnNjb3BlOwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJQcml2YXRlICpwcml2OwotICBHc3RBdWRpb1Zpc3VhbGl6ZXJDbGFzcyAqa2xhc3M7Ci0gIEdzdEJ1ZmZlciAqaW5idWY7Ci0gIGd1aW50NjQgZGlzdCwgdHM7Ci0gIGd1aW50IGF2YWlsLCBzYnBmOwotICBncG9pbnRlciBhZGF0YTsKLSAgZ2ludCBicHMsIGNoYW5uZWxzLCByYXRlOwotCi0gIHNjb3BlID0gR1NUX0FVRElPX1ZJU1VBTElaRVIgKHBhcmVudCk7Ci0gIHByaXYgPSBzY29wZS0+cHJpdjsKLSAga2xhc3MgPSBHU1RfQVVESU9fVklTVUFMSVpFUl9DTEFTUyAoR19PQkpFQ1RfR0VUX0NMQVNTIChzY29wZSkpOwotCi0gIEdTVF9MT0dfT0JKRUNUIChzY29wZSwgImNoYWluZnVuYyBjYWxsZWQiKTsKLQotICAvKiByZXN5bmMgb24gRElTQ09OVCAqLwotICBpZiAoR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoYnVmZmVyLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCkpIHsKLSAgICBnc3RfYWRhcHRlcl9jbGVhciAocHJpdi0+YWRhcHRlcik7Ci0gIH0KLQotICAvKiBNYWtlIHN1cmUgaGF2ZSBhbiBvdXRwdXQgZm9ybWF0ICovCi0gIGlmIChnc3RfcGFkX2NoZWNrX3JlY29uZmlndXJlIChwcml2LT5zcmNwYWQpKSB7Ci0gICAgaWYgKCFnc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfbmVnb3RpYXRlIChzY29wZSkpIHsKLSAgICAgIGdzdF9wYWRfbWFya19yZWNvbmZpZ3VyZSAocHJpdi0+c3JjcGFkKTsKLSAgICAgIGdvdG8gbm90X25lZ290aWF0ZWQ7Ci0gICAgfQotICB9Ci0KLSAgY2hhbm5lbHMgPSBHU1RfQVVESU9fSU5GT19DSEFOTkVMUyAoJnNjb3BlLT5haW5mbyk7Ci0gIHJhdGUgPSBHU1RfQVVESU9fSU5GT19SQVRFICgmc2NvcGUtPmFpbmZvKTsKLSAgYnBzID0gR1NUX0FVRElPX0lORk9fQlBTICgmc2NvcGUtPmFpbmZvKTsKLQotICBpZiAoYnBzID09IDApIHsKLSAgICByZXQgPSBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKLSAgICBnb3RvIGJlYWNoOwotICB9Ci0KLSAgZ3N0X2FkYXB0ZXJfcHVzaCAocHJpdi0+YWRhcHRlciwgYnVmZmVyKTsKLQotICBnX211dGV4X2xvY2sgKCZwcml2LT5jb25maWdfbG9jayk7Ci0KLSAgLyogdGhpcyBpcyB3aGF0IHdlIHdhbnQgKi8KLSAgc2JwZiA9IHNjb3BlLT5yZXFfc3BmICogY2hhbm5lbHMgKiBzaXplb2YgKGdpbnQxNik7Ci0KLSAgaW5idWYgPSBwcml2LT5pbmJ1ZjsKLSAgLyogRklYTUU6IHRoZSB0aW1lc3RhbXAgaW4gdGhlIGFkYXB0ZXIgd291bGQgYmUgZGlmZmVyZW50ICovCi0gIGdzdF9idWZmZXJfY29weV9pbnRvIChpbmJ1ZiwgYnVmZmVyLCBHU1RfQlVGRkVSX0NPUFlfTUVUQURBVEEsIDAsIC0xKTsKLQotICAvKiB0aGlzIGlzIHdoYXQgd2UgaGF2ZSAqLwotICBhdmFpbCA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAocHJpdi0+YWRhcHRlcik7Ci0gIEdTVF9MT0dfT0JKRUNUIChzY29wZSwgImF2YWlsOiAldSwgYnBmOiAldSIsIGF2YWlsLCBzYnBmKTsKLSAgd2hpbGUgKGF2YWlsID49IHNicGYpIHsKLSAgICBHc3RCdWZmZXIgKm91dGJ1ZjsKLSAgICBHc3RWaWRlb0ZyYW1lIG91dGZyYW1lOwotCi0gICAgLyogZ2V0IHRpbWVzdGFtcCBvZiB0aGUgY3VycmVudCBhZGFwdGVyIGNvbnRlbnQgKi8KLSAgICB0cyA9IGdzdF9hZGFwdGVyX3ByZXZfcHRzIChwcml2LT5hZGFwdGVyLCAmZGlzdCk7Ci0gICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEICh0cykpIHsKLSAgICAgIC8qIGNvbnZlcnQgYnl0ZXMgdG8gdGltZSAqLwotICAgICAgZGlzdCAvPSBicHM7Ci0gICAgICB0cyArPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChkaXN0LCBHU1RfU0VDT05ELCByYXRlKTsKLSAgICB9Ci0KLSAgICAvKiBjaGVjayBmb3IgUW9TLCBkb24ndCBjb21wdXRlIGJ1ZmZlcnMgdGhhdCBhcmUga25vd24gdG8gYmUgbGF0ZSAqLwotICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAodHMpKSB7Ci0gICAgICBHc3RDbG9ja1RpbWUgZWFybGllc3RfdGltZTsKLSAgICAgIGdkb3VibGUgcHJvcG9ydGlvbjsKLSAgICAgIGdpbnQ2NCBxb3N0aW1lOwotCi0gICAgICBxb3N0aW1lID0KLSAgICAgICAgICBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUgKCZwcml2LT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCi0gICAgICAgICAgdHMpICsgcHJpdi0+ZnJhbWVfZHVyYXRpb247Ci0KLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc2NvcGUpOwotICAgICAgZWFybGllc3RfdGltZSA9IHByaXYtPmVhcmxpZXN0X3RpbWU7Ci0gICAgICBwcm9wb3J0aW9uID0gcHJpdi0+cHJvcG9ydGlvbjsKLSAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzY29wZSk7Ci0KLSAgICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZWFybGllc3RfdGltZSkgJiYgcW9zdGltZSA8PSBlYXJsaWVzdF90aW1lKSB7Ci0gICAgICAgIEdzdENsb2NrVGltZSBzdHJlYW1fdGltZSwgaml0dGVyOwotICAgICAgICBHc3RNZXNzYWdlICpxb3NfbXNnOwotCi0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLAotICAgICAgICAgICAgIlFvUzogc2tpcCB0czogJSIgR1NUX1RJTUVfRk9STUFUICIsIGVhcmxpZXN0OiAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICAgICAgICBHU1RfVElNRV9BUkdTIChxb3N0aW1lKSwgR1NUX1RJTUVfQVJHUyAoZWFybGllc3RfdGltZSkpOwotCi0gICAgICAgICsrcHJpdi0+ZHJvcHBlZDsKLSAgICAgICAgc3RyZWFtX3RpbWUgPSBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSAoJnByaXYtPnNlZ21lbnQsCi0gICAgICAgICAgICBHU1RfRk9STUFUX1RJTUUsIHRzKTsKLSAgICAgICAgaml0dGVyID0gR1NUX0NMT0NLX0RJRkYgKHFvc3RpbWUsIGVhcmxpZXN0X3RpbWUpOwotICAgICAgICBxb3NfbXNnID0gZ3N0X21lc3NhZ2VfbmV3X3FvcyAoR1NUX09CSkVDVCAoc2NvcGUpLCBGQUxTRSwgcW9zdGltZSwKLSAgICAgICAgICAgIHN0cmVhbV90aW1lLCB0cywgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSk7Ci0gICAgICAgIGdzdF9tZXNzYWdlX3NldF9xb3NfdmFsdWVzIChxb3NfbXNnLCBqaXR0ZXIsIHByb3BvcnRpb24sIDEwMDAwMDApOwotICAgICAgICBnc3RfbWVzc2FnZV9zZXRfcW9zX3N0YXRzIChxb3NfbXNnLCBHU1RfRk9STUFUX0JVRkZFUlMsCi0gICAgICAgICAgICBwcml2LT5wcm9jZXNzZWQsIHByaXYtPmRyb3BwZWQpOwotICAgICAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChzY29wZSksIHFvc19tc2cpOwotCi0gICAgICAgIGdvdG8gc2tpcDsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICArK3ByaXYtPnByb2Nlc3NlZDsKLQotICAgIGdfbXV0ZXhfdW5sb2NrICgmcHJpdi0+Y29uZmlnX2xvY2spOwotICAgIHJldCA9IGRlZmF1bHRfcHJlcGFyZV9vdXRwdXRfYnVmZmVyIChzY29wZSwgJm91dGJ1Zik7Ci0gICAgZ19tdXRleF9sb2NrICgmcHJpdi0+Y29uZmlnX2xvY2spOwotICAgIC8qIHJlY2hlY2sgYXMgdGhlIHZhbHVlIGNvdWxkIGhhdmUgY2hhbmdlZCAqLwotICAgIHNicGYgPSBzY29wZS0+cmVxX3NwZiAqIGNoYW5uZWxzICogc2l6ZW9mIChnaW50MTYpOwotCi0gICAgLyogbm8gYnVmZmVyIGFsbG9jYXRlZCwgd2UgZG9uJ3QgY2FyZSB3aHkuICovCi0gICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKLSAgICAgIGJyZWFrOwotCi0gICAgLyogc3luYyBjb250cm9sbGVkIHByb3BlcnRpZXMgKi8KLSAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHRzKSkKLSAgICAgIGdzdF9vYmplY3Rfc3luY192YWx1ZXMgKEdTVF9PQkpFQ1QgKHNjb3BlKSwgdHMpOwotCi0gICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKG91dGJ1ZikgPSB0czsKLSAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChvdXRidWYpID0gcHJpdi0+ZnJhbWVfZHVyYXRpb247Ci0KLSAgICAvKiB0aGlzIGNhbiBmYWlsIGFzIHRoZSBkYXRhIHNpemUgd2UgbmVlZCBjb3VsZCBoYXZlIGNoYW5nZWQgKi8KLSAgICBpZiAoIShhZGF0YSA9IChncG9pbnRlcikgZ3N0X2FkYXB0ZXJfbWFwIChwcml2LT5hZGFwdGVyLCBzYnBmKSkpCi0gICAgICBicmVhazsKLQotICAgIGdzdF92aWRlb19mcmFtZV9tYXAgKCZvdXRmcmFtZSwgJnNjb3BlLT52aW5mbywgb3V0YnVmLCBHU1RfTUFQX1JFQURXUklURSk7Ci0KLSAgICBpZiAocHJpdi0+c2hhZGVyKSB7Ci0gICAgICBnc3RfdmlkZW9fZnJhbWVfY29weSAoJm91dGZyYW1lLCAmcHJpdi0+dGVtcGZyYW1lKTsKLSAgICB9IGVsc2UgewotICAgICAgLyogZ3N0X3ZpZGVvX2ZyYW1lX2NsZWFyKCkgb3IgaXMgb3V0cHV0IGZyYW1lIGFscmVhZHkgY2xlYXJlZCAqLwotICAgICAgZ2ludCBpOwotCi0gICAgICBmb3IgKGkgPSAwOyBpIDwgc2NvcGUtPnZpbmZvLmZpbmZvLT5uX3BsYW5lczsgaSsrKSB7Ci0gICAgICAgIG1lbXNldCAob3V0ZnJhbWUuZGF0YVtpXSwgMCwgb3V0ZnJhbWUubWFwW2ldLnNpemUpOwotICAgICAgfQotICAgIH0KLQotICAgIGdzdF9idWZmZXJfcmVwbGFjZV9hbGxfbWVtb3J5IChpbmJ1ZiwKLSAgICAgICAgZ3N0X21lbW9yeV9uZXdfd3JhcHBlZCAoR1NUX01FTU9SWV9GTEFHX1JFQURPTkxZLCBhZGF0YSwgc2JwZiwgMCwKLSAgICAgICAgICAgIHNicGYsIE5VTEwsIE5VTEwpKTsKLQotICAgIC8qIGNhbGwgY2xhc3MtPnJlbmRlcigpIHZtZXRob2QgKi8KLSAgICBpZiAoa2xhc3MtPnJlbmRlcikgewotICAgICAgaWYgKCFrbGFzcy0+cmVuZGVyIChzY29wZSwgaW5idWYsICZvdXRmcmFtZSkpIHsKLSAgICAgICAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7Ci0gICAgICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJm91dGZyYW1lKTsKLSAgICAgICAgZ290byBiZWFjaDsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIHJ1biB2YXJpb3VzIHBvc3QgcHJvY2Vzc2luZyAoc2hhZGluZyBhbmQgZ2VvbWV0cmljIHRyYW5zZm9ybWF0aW9uKSAqLwotICAgICAgICAvKiBGSVhNRTogU0hBREVSIGFzc3VtZXMgMzJicHAgKi8KLSAgICAgICAgaWYgKHByaXYtPnNoYWRlciAmJiBHU1RfVklERU9fSU5GT19DT01QX1BTVFJJREUgKCZzY29wZS0+dmluZm8sIDApID09IDQpIHsKLSAgICAgICAgICBwcml2LT5zaGFkZXIgKHNjb3BlLCAmb3V0ZnJhbWUsICZwcml2LT50ZW1wZnJhbWUpOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQotICAgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJm91dGZyYW1lKTsKLQotICAgIGdfbXV0ZXhfdW5sb2NrICgmcHJpdi0+Y29uZmlnX2xvY2spOwotICAgIHJldCA9IGdzdF9wYWRfcHVzaCAocHJpdi0+c3JjcGFkLCBvdXRidWYpOwotICAgIG91dGJ1ZiA9IE5VTEw7Ci0gICAgZ19tdXRleF9sb2NrICgmcHJpdi0+Y29uZmlnX2xvY2spOwotCi0gIHNraXA6Ci0gICAgLyogcmVjaGVjayBhcyB0aGUgdmFsdWUgY291bGQgaGF2ZSBjaGFuZ2VkICovCi0gICAgc2JwZiA9IHNjb3BlLT5yZXFfc3BmICogY2hhbm5lbHMgKiBzaXplb2YgKGdpbnQxNik7Ci0gICAgR1NUX0xPR19PQkpFQ1QgKHNjb3BlLCAiYXZhaWw6ICV1LCBicGY6ICV1IiwgYXZhaWwsIHNicGYpOwotICAgIC8qIHdlIHdhbnQgdG8gdGFrZSBsZXNzIG9yIG1vcmUsIGRlcGVuZGluZyBvbiBzcGYgOiByZXFfc3BmICovCi0gICAgaWYgKGF2YWlsIC0gc2JwZiA+PSBzYnBmKSB7Ci0gICAgICBnc3RfYWRhcHRlcl9mbHVzaCAocHJpdi0+YWRhcHRlciwgc2JwZik7Ci0gICAgICBnc3RfYWRhcHRlcl91bm1hcCAocHJpdi0+YWRhcHRlcik7Ci0gICAgfSBlbHNlIGlmIChhdmFpbCA+PSBzYnBmKSB7Ci0gICAgICAvKiBqdXN0IGZsdXNoIGEgYml0IGFuZCBzdG9wICovCi0gICAgICBnc3RfYWRhcHRlcl9mbHVzaCAocHJpdi0+YWRhcHRlciwgKGF2YWlsIC0gc2JwZikpOwotICAgICAgZ3N0X2FkYXB0ZXJfdW5tYXAgKHByaXYtPmFkYXB0ZXIpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGF2YWlsID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChwcml2LT5hZGFwdGVyKTsKLQotICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spCi0gICAgICBicmVhazsKLSAgfQotCi0gIGdfbXV0ZXhfdW5sb2NrICgmcHJpdi0+Y29uZmlnX2xvY2spOwotCi1iZWFjaDoKLSAgcmV0dXJuIHJldDsKLQotICAvKiBFUlJPUlMgKi8KLW5vdF9uZWdvdGlhdGVkOgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2NvcGUsICJGYWlsZWQgdG8gcmVuZWdvdGlhdGUiKTsKLSAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7Ci0gIH0KLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zcmNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIGdib29sZWFuIHJlczsKLSAgR3N0QXVkaW9WaXN1YWxpemVyICpzY29wZTsKLSAgR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZSAqcHJpdjsKLQotICBzY29wZSA9IEdTVF9BVURJT19WSVNVQUxJWkVSIChwYXJlbnQpOwotICBwcml2ID0gc2NvcGUtPnByaXY7Ci0KLSAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfUU9TOgotICAgIHsKLSAgICAgIGdkb3VibGUgcHJvcG9ydGlvbjsKLSAgICAgIEdzdENsb2NrVGltZURpZmYgZGlmZjsKLSAgICAgIEdzdENsb2NrVGltZSB0aW1lc3RhbXA7Ci0KLSAgICAgIGdzdF9ldmVudF9wYXJzZV9xb3MgKGV2ZW50LCBOVUxMLCAmcHJvcG9ydGlvbiwgJmRpZmYsICZ0aW1lc3RhbXApOwotCi0gICAgICAvKiBzYXZlIHN0dWZmIGZvciB0aGUgX2NoYWluKCkgZnVuY3Rpb24gKi8KLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoc2NvcGUpOwotICAgICAgcHJpdi0+cHJvcG9ydGlvbiA9IHByb3BvcnRpb247Ci0gICAgICBpZiAoZGlmZiA+PSAwKQotICAgICAgICAvKiB3ZSdyZSBsYXRlLCB0aGlzIGlzIGEgZ29vZCBlc3RpbWF0ZSBmb3IgbmV4dCBkaXNwbGF5YWJsZQotICAgICAgICAgKiBmcmFtZSAoc2VlIHBhcnQtcW9zLnR4dCkgKi8KLSAgICAgICAgcHJpdi0+ZWFybGllc3RfdGltZSA9IHRpbWVzdGFtcCArIDIgKiBkaWZmICsgcHJpdi0+ZnJhbWVfZHVyYXRpb247Ci0gICAgICBlbHNlCi0gICAgICAgIHByaXYtPmVhcmxpZXN0X3RpbWUgPSB0aW1lc3RhbXAgKyBkaWZmOwotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNjb3BlKTsKLQotICAgICAgcmVzID0gZ3N0X3BhZF9wdXNoX2V2ZW50IChwcml2LT5zaW5rcGFkLCBldmVudCk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgY2FzZSBHU1RfRVZFTlRfUkVDT05GSUdVUkU6Ci0gICAgICAvKiBkb250J3QgZm9yd2FyZCAqLwotICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7Ci0gICAgICByZXMgPSBUUlVFOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJlcyA9IGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfYXVkaW9fdmlzdWFsaXplcl9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KQotewotICBnYm9vbGVhbiByZXM7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplciAqc2NvcGU7Ci0KLSAgc2NvcGUgPSBHU1RfQVVESU9fVklTVUFMSVpFUiAocGFyZW50KTsKLQotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgotICAgIHsKLSAgICAgIEdzdENhcHMgKmNhcHM7Ci0KLSAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOwotICAgICAgcmVzID0gZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2lua19zZXRjYXBzIChzY29wZSwgY2Fwcyk7Ci0gICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgotICAgICAgZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfcmVzZXQgKHNjb3BlKTsKLSAgICAgIHJlcyA9IGdzdF9wYWRfcHVzaF9ldmVudCAoc2NvcGUtPnByaXYtPnNyY3BhZCwgZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKLSAgICB7Ci0gICAgICAvKiB0aGUgbmV3c2VnbWVudCB2YWx1ZXMgYXJlIHVzZWQgdG8gY2xpcCB0aGUgaW5wdXQgc2FtcGxlcwotICAgICAgICogYW5kIHRvIGNvbnZlcnQgdGhlIGluY29tbWluZyB0aW1lc3RhbXBzIHRvIHJ1bm5pbmcgdGltZSBzbwotICAgICAgICogd2UgY2FuIGRvIFFvUyAqLwotICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZzY29wZS0+cHJpdi0+c2VnbWVudCk7Ci0KLSAgICAgIHJlcyA9IGdzdF9wYWRfcHVzaF9ldmVudCAoc2NvcGUtPnByaXYtPnNyY3BhZCwgZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc3JjX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RRdWVyeSAqIHF1ZXJ5KQotewotICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKLSAgR3N0QXVkaW9WaXN1YWxpemVyICpzY29wZTsKLQotICBzY29wZSA9IEdTVF9BVURJT19WSVNVQUxJWkVSIChwYXJlbnQpOwotCi0gIHN3aXRjaCAoR1NUX1FVRVJZX1RZUEUgKHF1ZXJ5KSkgewotICAgIGNhc2UgR1NUX1FVRVJZX0xBVEVOQ1k6Ci0gICAgewotICAgICAgLyogV2UgbmVlZCB0byBzZW5kIHRoZSBxdWVyeSB1cHN0cmVhbSBhbmQgYWRkIHRoZSByZXR1cm5lZCBsYXRlbmN5IHRvIG91cgotICAgICAgICogb3duICovCi0gICAgICBHc3RDbG9ja1RpbWUgbWluX2xhdGVuY3ksIG1heF9sYXRlbmN5OwotICAgICAgZ2Jvb2xlYW4gdXNfbGl2ZTsKLSAgICAgIEdzdENsb2NrVGltZSBvdXJfbGF0ZW5jeTsKLSAgICAgIGd1aW50IG1heF9zYW1wbGVzOwotICAgICAgZ2ludCByYXRlID0gR1NUX0FVRElPX0lORk9fUkFURSAoJnNjb3BlLT5haW5mbyk7Ci0KLSAgICAgIGlmIChyYXRlID09IDApCi0gICAgICAgIGJyZWFrOwotCi0gICAgICBpZiAoKHJlcyA9IGdzdF9wYWRfcGVlcl9xdWVyeSAoc2NvcGUtPnByaXYtPnNpbmtwYWQsIHF1ZXJ5KSkpIHsKLSAgICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2xhdGVuY3kgKHF1ZXJ5LCAmdXNfbGl2ZSwgJm1pbl9sYXRlbmN5LCAmbWF4X2xhdGVuY3kpOwotCi0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNjb3BlLCAiUGVlciBsYXRlbmN5OiBtaW4gJSIKLSAgICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCAiIG1heCAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICAgICAgICBHU1RfVElNRV9BUkdTIChtaW5fbGF0ZW5jeSksIEdTVF9USU1FX0FSR1MgKG1heF9sYXRlbmN5KSk7Ci0KLSAgICAgICAgLyogdGhlIG1heCBzYW1wbGVzIHdlIG11c3QgYnVmZmVyIGJ1ZmZlciAqLwotICAgICAgICBtYXhfc2FtcGxlcyA9IE1BWCAoc2NvcGUtPnJlcV9zcGYsIHNjb3BlLT5wcml2LT5zcGYpOwotICAgICAgICBvdXJfbGF0ZW5jeSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKG1heF9zYW1wbGVzLCBHU1RfU0VDT05ELCByYXRlKTsKLQotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgIk91ciBsYXRlbmN5OiAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICAgICAgICBHU1RfVElNRV9BUkdTIChvdXJfbGF0ZW5jeSkpOwotCi0gICAgICAgIC8qIHdlIGFkZCBzb21lIGxhdGVuY3kgYnV0IG9ubHkgaWYgd2UgbmVlZCB0byBidWZmZXIgbW9yZSB0aGFuIHdoYXQKLSAgICAgICAgICogdXBzdHJlYW0gZ2l2ZXMgdXMgKi8KLSAgICAgICAgbWluX2xhdGVuY3kgKz0gb3VyX2xhdGVuY3k7Ci0gICAgICAgIGlmIChtYXhfbGF0ZW5jeSAhPSAtMSkKLSAgICAgICAgICBtYXhfbGF0ZW5jeSArPSBvdXJfbGF0ZW5jeTsKLQotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzY29wZSwgIkNhbGN1bGF0ZWQgdG90YWwgbGF0ZW5jeSA6IG1pbiAlIgotICAgICAgICAgICAgR1NUX1RJTUVfRk9STUFUICIgbWF4ICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKG1pbl9sYXRlbmN5KSwgR1NUX1RJTUVfQVJHUyAobWF4X2xhdGVuY3kpKTsKLQotICAgICAgICBnc3RfcXVlcnlfc2V0X2xhdGVuY3kgKHF1ZXJ5LCBUUlVFLCBtaW5fbGF0ZW5jeSwgbWF4X2xhdGVuY3kpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGRlZmF1bHQ6Ci0gICAgICByZXMgPSBnc3RfcGFkX3F1ZXJ5X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBxdWVyeSk7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXM7Ci19Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQ7Ci0gIEdzdEF1ZGlvVmlzdWFsaXplciAqc2NvcGU7Ci0KLSAgc2NvcGUgPSBHU1RfQVVESU9fVklTVUFMSVpFUiAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKLSAgICAgIGdzdF9hdWRpb192aXN1YWxpemVyX3Jlc2V0IChzY29wZSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlIChlbGVtZW50LCB0cmFuc2l0aW9uKTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgotICAgICAgZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfc2V0X2FsbG9jYXRpb24gKHNjb3BlLCBOVUxMLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19OVUxMOgotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJldDsKLX0KZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdGF1ZGlvdmlzdWFsaXplci5oIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4MWRlODEuLjAwMDAwMDAKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0YXVkaW92aXN1YWxpemVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDwyMDExPiBTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDE1PiBMdWlzIGRlIEJldGhlbmNvdXJ0IDxsdWlzQGRlYmV0aGVuY291cnQuY29tPgotICoKLSAqIGdzdGF1ZGlvdmlzdWFsaXplci5jOiBiYXNlIGNsYXNzIGZvciBhdWRpbyB2aXN1YWxpc2F0aW9uIGVsZW1lbnRzCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9BVURJT19WSVNVQUxJWkVSX0hfXwotI2RlZmluZSBfX0dTVF9BVURJT19WSVNVQUxJWkVSX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGJhc2V0cmFuc2Zvcm0uaD4KLQotI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgotI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGFkYXB0ZXIuaD4KLQotR19CRUdJTl9ERUNMUwotCi0jZGVmaW5lIEdTVF9UWVBFX0FVRElPX1ZJU1VBTElaRVIgICAgICAgICAgICAoZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgR1NUX0FVRElPX1ZJU1VBTElaRVIob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9BVURJT19WSVNVQUxJWkVSLEdzdEF1ZGlvVmlzdWFsaXplcikpCi0jZGVmaW5lIEdTVF9BVURJT19WSVNVQUxJWkVSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSxHU1RfVFlQRV9BVURJT19WSVNVQUxJWkVSLEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzKSkKLSNkZWZpbmUgR1NUX0FVRElPX1ZJU1VBTElaRVJfR0VUX0NMQVNTKG9iaikgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopLEdTVF9UWVBFX0FVRElPX1ZJU1VBTElaRVIsR3N0QXVkaW9WaXN1YWxpemVyQ2xhc3MpKQotI2RlZmluZSBHU1RfSVNfQVVESU9fVklTVUFMSVpFUihvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX0FVRElPX1ZJU1VBTElaRVIpKQotI2RlZmluZSBHU1RfSVNfQVVESU9fVklTVUFMSVpFUl9DTEFTUyhrbGFzcykgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUikpCi0KLXR5cGVkZWYgc3RydWN0IF9Hc3RBdWRpb1Zpc3VhbGl6ZXIgR3N0QXVkaW9WaXN1YWxpemVyOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEF1ZGlvVmlzdWFsaXplckNsYXNzIEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzOwotdHlwZWRlZiBzdHJ1Y3QgX0dzdEF1ZGlvVmlzdWFsaXplclByaXZhdGUgR3N0QXVkaW9WaXN1YWxpemVyUHJpdmF0ZTsKLQotdHlwZWRlZiB2b2lkICgqR3N0QXVkaW9WaXN1YWxpemVyU2hhZGVyRnVuYykoR3N0QXVkaW9WaXN1YWxpemVyICpzY29wZSwgY29uc3QgR3N0VmlkZW9GcmFtZSAqcywgR3N0VmlkZW9GcmFtZSAqZCk7Ci0KLS8qKgotICogR3N0QXVkaW9WaXN1YWxpemVyU2hhZGVyOgotICogQEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9OT05FOiBubyBzaGFkaW5nCi0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREU6IHBsYWluIGZhZGluZwotICogQEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1VQOiBmYWRlIGFuZCBtb3ZlIHVwCi0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfRE9XTjogZmFkZSBhbmQgbW92ZSBkb3duCi0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfTEVGVDogZmFkZSBhbmQgbW92ZSBsZWZ0Ci0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfUklHSFQ6IGZhZGUgYW5kIG1vdmUgcmlnaHQKLSAqIEBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9IT1JJWl9PVVQ6IGZhZGUgYW5kIG1vdmUgaG9yaXpvbnRhbGx5IG91dAotICogQEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX0hPUklaX0lOOiBmYWRlIGFuZCBtb3ZlIGhvcml6b250YWxseSBpbgotICogQEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1ZFUlRfT1VUOiBmYWRlIGFuZCBtb3ZlIHZlcnRpY2FsbHkgb3V0Ci0gKiBAR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9JTjogZmFkZSBhbmQgbW92ZSB2ZXJ0aWNhbGx5IGluCi0gKgotICogRGlmZmVyZW50IHR5cGVzIG9mIHN1cHBvcnRlZCBiYWNrZ3JvdW5kIHNoYWRpbmcgZnVuY3Rpb25zLgotICovCi10eXBlZGVmIGVudW0gewotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfTk9ORSwKLSAgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREUsCi0gIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1VQLAotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9ET1dOLAotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9MRUZULAotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9SSUdIVCwKLSAgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfSE9SSVpfT1VULAotICBHU1RfQVVESU9fVklTVUFMSVpFUl9TSEFERVJfRkFERV9BTkRfTU9WRV9IT1JJWl9JTiwKLSAgR1NUX0FVRElPX1ZJU1VBTElaRVJfU0hBREVSX0ZBREVfQU5EX01PVkVfVkVSVF9PVVQsCi0gIEdTVF9BVURJT19WSVNVQUxJWkVSX1NIQURFUl9GQURFX0FORF9NT1ZFX1ZFUlRfSU4KLX0gR3N0QXVkaW9WaXN1YWxpemVyU2hhZGVyOwotCi1zdHJ1Y3QgX0dzdEF1ZGlvVmlzdWFsaXplcgotewotICBHc3RFbGVtZW50IHBhcmVudDsKLQotICBndWludCByZXFfc3BmOyAgICAgICAgICAgICAgICAvKiBtaW4gc2FtcGxlcyBwZXIgZnJhbWUgd2FudGVkIGJ5IHRoZSBzdWJjbGFzcyAqLwotCi0gIC8qIHZpZGVvIHN0YXRlICovCi0gIEdzdFZpZGVvSW5mbyB2aW5mbzsKLQotICAvKiBhdWRpbyBzdGF0ZSAqLwotICBHc3RBdWRpb0luZm8gYWluZm87Ci0KLSAgLyogPHByaXZhdGU+ICovCi0gIEdzdEF1ZGlvVmlzdWFsaXplclByaXZhdGUgKnByaXY7Ci19OwotCi1zdHJ1Y3QgX0dzdEF1ZGlvVmlzdWFsaXplckNsYXNzCi17Ci0gIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7Ci0KLSAgLyogdmlydHVhbCBmdW5jdGlvbiwgY2FsbGVkIHdoZW5ldmVyIHRoZSBmb3JtYXQgY2hhbmdlcyAqLwotICBnYm9vbGVhbiAoKnNldHVwKSAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUpOwotCi0gIC8qIHZpcnR1YWwgZnVuY3Rpb24gZm9yIHJlbmRlcmluZyBhIGZyYW1lICovCi0gIGdib29sZWFuICgqcmVuZGVyKSAoR3N0QXVkaW9WaXN1YWxpemVyICogc2NvcGUsIEdzdEJ1ZmZlciAqIGF1ZGlvLCBHc3RWaWRlb0ZyYW1lICogdmlkZW8pOwotCi0gIGdib29sZWFuICgqZGVjaWRlX2FsbG9jYXRpb24pICAgKEdzdEF1ZGlvVmlzdWFsaXplciAqIHNjb3BlLCBHc3RRdWVyeSAqcXVlcnkpOwotfTsKLQotR1R5cGUgZ3N0X2F1ZGlvX3Zpc3VhbGl6ZXJfZ2V0X3R5cGUgKHZvaWQpOwotCi1HX0VORF9ERUNMUwotI2VuZGlmIC8qIF9fR1NUX0FVRElPX1ZJU1VBTElaRVJfSF9fICovCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmMgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmMKaW5kZXggYjA4MjhhOC4uNmNkZTA2NiAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BhY2VzY29wZS5jCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuYwpAQCAtMjgsNyArMjgsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgc3BhY2VzY29wZSAhIHhpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHNwYWNlc2NvcGUgISB4aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BhY2VzY29wZS5oIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BhY2VzY29wZS5oCmluZGV4IGEzMDVhYjUuLjEwNjU5ZmUgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwYWNlc2NvcGUuaAorKysgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGFjZXNjb3BlLmgKQEAgLTIyLDcgKzIyLDcgQEAKICNpZm5kZWYgX19HU1RfU1BBQ0VfU0NPUEVfSF9fCiAjZGVmaW5lIF9fR1NUX1NQQUNFX1NDT1BFX0hfXwogCi0jaW5jbHVkZSAiZ3N0YXVkaW92aXN1YWxpemVyLmgiCisjaW5jbHVkZSAiZ3N0L3BidXRpbHMvZ3N0YXVkaW92aXN1YWxpemVyLmgiCiAKIEdfQkVHSU5fREVDTFMKICNkZWZpbmUgR1NUX1RZUEVfU1BBQ0VfU0NPUEUgICAgICAgICAgICAoZ3N0X3NwYWNlX3Njb3BlX2dldF90eXBlKCkpCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuYyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5jCmluZGV4IGZmNDNjZmQuLjI5N2QzZWYgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5jCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHNwZWN0cmFzY29wZS5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISBzcGVjdHJhc2NvcGUgISB4aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISBzcGVjdHJhc2NvcGUgISB4aW1hZ2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3BlY3RyYXNjb3BlLmggYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuaAppbmRleCAwYjIxZDA4Li5kMDYzNzM0IDEwMDY0NAotLS0gYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuaAorKysgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzcGVjdHJhc2NvcGUuaApAQCAtMjIsNyArMjIsNyBAQAogI2lmbmRlZiBfX0dTVF9TUEVDVFJBX1NDT1BFX0hfXwogI2RlZmluZSBfX0dTVF9TUEVDVFJBX1NDT1BFX0hfXwogCi0jaW5jbHVkZSAiZ3N0YXVkaW92aXN1YWxpemVyLmgiCisjaW5jbHVkZSAiZ3N0L3BidXRpbHMvZ3N0YXVkaW92aXN1YWxpemVyLmgiCiAjaW5jbHVkZSA8Z3N0L2ZmdC9nc3RmZnRzMTYuaD4KIAogR19CRUdJTl9ERUNMUwpkaWZmIC0tZ2l0IGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5jIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5jCmluZGV4IDIzZDE1ZjAuLmRmYWRmMDkgMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuYworKysgYi9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzeW5hZXNjb3BlLmMKQEAgLTI4LDcgKzI4LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHN5bmFlc2NvcGUgISB4aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBhdWRpb3Rlc3RzcmMgISBhdWRpb2NvbnZlcnQgISBzeW5hZXNjb3BlICEgeGltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuaCBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHN5bmFlc2NvcGUuaAppbmRleCBhMzE0OGVkLi5mNmVjMjY0IDEwMDY0NAotLS0gYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3RzeW5hZXNjb3BlLmgKKysrIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0c3luYWVzY29wZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIF9fR1NUX1NZTkFFX1NDT1BFX0hfXwogI2RlZmluZSBfX0dTVF9TWU5BRV9TQ09QRV9IX18KIAotI2luY2x1ZGUgImdzdGF1ZGlvdmlzdWFsaXplci5oIgorI2luY2x1ZGUgImdzdC9wYnV0aWxzL2dzdGF1ZGlvdmlzdWFsaXplci5oIgogI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0czE2Lmg+CiAKIEdfQkVHSU5fREVDTFMKZGlmZiAtLWdpdCBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHdhdmVzY29wZS5jIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmMKaW5kZXggYjg3ZDA1Yy4uYWQxMjViMCAxMDA2NDQKLS0tIGEvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmMKKysrIGIvZ3N0L2F1ZGlvdmlzdWFsaXplcnMvZ3N0d2F2ZXNjb3BlLmMKQEAgLTI4LDcgKzI4LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHdhdmVzY29wZSAhIHhpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHdhdmVzY29wZSAhIHhpbWFnZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC0xNzYsOCArMTc2LDcgQEAKIHsKICAgR3N0V2F2ZVNjb3BlICpzY29wZSA9IEdTVF9XQVZFX1NDT1BFIChic2NvcGUpOwogCi0gIGlmIChzY29wZS0+Zmx0KQotICAgIGdfZnJlZSAoc2NvcGUtPmZsdCk7CisgIGdfZnJlZSAoc2NvcGUtPmZsdCk7CiAKICAgc2NvcGUtPmZsdCA9IGdfbmV3MCAoZ2RvdWJsZSwgNiAqIEdTVF9BVURJT19JTkZPX0NIQU5ORUxTICgmYnNjb3BlLT5haW5mbykpOwogCmRpZmYgLS1naXQgYS9nc3QvYXVkaW92aXN1YWxpemVycy9nc3R3YXZlc2NvcGUuaCBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHdhdmVzY29wZS5oCmluZGV4IDA4N2YxNzkuLmYzNjdmODggMTAwNjQ0Ci0tLSBhL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHdhdmVzY29wZS5oCisrKyBiL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdHdhdmVzY29wZS5oCkBAIC0yMiw3ICsyMiw3IEBACiAjaWZuZGVmIF9fR1NUX1dBVkVfU0NPUEVfSF9fCiAjZGVmaW5lIF9fR1NUX1dBVkVfU0NPUEVfSF9fCiAKLSNpbmNsdWRlICJnc3RhdWRpb3Zpc3VhbGl6ZXIuaCIKKyNpbmNsdWRlICJnc3QvcGJ1dGlscy9nc3RhdWRpb3Zpc3VhbGl6ZXIuaCIKIAogR19CRUdJTl9ERUNMUwogI2RlZmluZSBHU1RfVFlQRV9XQVZFX1NDT1BFICAgICAgICAgICAgKGdzdF93YXZlX3Njb3BlX2dldF90eXBlKCkpCmRpZmYgLS1naXQgYS9nc3QvYXV0b2NvbnZlcnQvTWFrZWZpbGUuaW4gYi9nc3QvYXV0b2NvbnZlcnQvTWFrZWZpbGUuaW4KaW5kZXggNGM5YjYxZC4uZWEyZTdmYSAxMDA2NDQKLS0tIGEvZ3N0L2F1dG9jb252ZXJ0L01ha2VmaWxlLmluCisrKyBiL2dzdC9hdXRvY29udmVydC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9hdXRvY29udmVydC9nc3RhdXRvY29udmVydC5jIGIvZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG9jb252ZXJ0LmMKaW5kZXggMjMwYTE1Yy4uYjVhMTAzNSAxMDA2NDQKLS0tIGEvZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG9jb252ZXJ0LmMKKysrIGIvZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG9jb252ZXJ0LmMKQEAgLTEwNiw2ICsxMDYsOCBAQAogICAgIEdzdENhcHMgKiBmaWx0ZXIsIEdzdFBhZERpcmVjdGlvbiBkaXIpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2F1dG9fY29udmVydF9zaW5rX2NoYWluIChHc3RQYWQgKiBwYWQsCiAgICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWZmZXIpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2F1dG9fY29udmVydF9zaW5rX2NoYWluX2xpc3QgKEdzdFBhZCAqIHBhZCwKKyAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlckxpc3QgKiBsaXN0KTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYXV0b19jb252ZXJ0X3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAogICAgIEdzdEV2ZW50ICogZXZlbnQpOwogc3RhdGljIGdib29sZWFuIGdzdF9hdXRvX2NvbnZlcnRfc2lua19xdWVyeSAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCkBAIC0xMTgsNiArMTIwLDggQEAKIAogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX2NoYWluIChHc3RQYWQgKiBwYWQsCiAgICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWZmZXIpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX2NoYWluX2xpc3QgKEdzdFBhZCAqIHBhZCwKKyAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlckxpc3QgKiBsaXN0KTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYXV0b19jb252ZXJ0X2ludGVybmFsX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKICAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOwogc3RhdGljIGdib29sZWFuIGdzdF9hdXRvX2NvbnZlcnRfaW50ZXJuYWxfc2lua19xdWVyeSAoR3N0UGFkICogcGFkLApAQCAtMTg4LDYgKzE5Miw4IEBACiAKICAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKGF1dG9jb252ZXJ0LT5zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdXRvX2NvbnZlcnRfc2lua19jaGFpbikpOworICBnc3RfcGFkX3NldF9jaGFpbl9saXN0X2Z1bmN0aW9uIChhdXRvY29udmVydC0+c2lua3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYXV0b19jb252ZXJ0X3NpbmtfY2hhaW5fbGlzdCkpOwogICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoYXV0b2NvbnZlcnQtPnNpbmtwYWQsCiAgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2F1dG9fY29udmVydF9zaW5rX2V2ZW50KSk7CiAgIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChhdXRvY29udmVydC0+c2lua3BhZCwKQEAgLTQ3OSw2ICs0ODUsOCBAQAogCiAgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChpbnRlcm5hbF9zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdXRvX2NvbnZlcnRfaW50ZXJuYWxfc2lua19jaGFpbikpOworICBnc3RfcGFkX3NldF9jaGFpbl9saXN0X2Z1bmN0aW9uIChpbnRlcm5hbF9zaW5rcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdXRvX2NvbnZlcnRfaW50ZXJuYWxfc2lua19jaGFpbl9saXN0KSk7CiAgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChpbnRlcm5hbF9zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hdXRvX2NvbnZlcnRfaW50ZXJuYWxfc2lua19ldmVudCkpOwogICBnc3RfcGFkX3NldF9xdWVyeV9mdW5jdGlvbiAoaW50ZXJuYWxfc2lua3BhZCwKQEAgLTkyMSw2ICs5MjksMjcgQEAKICAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9hdXRvX2NvbnZlcnRfc2lua19jaGFpbl9saXN0IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RCdWZmZXJMaXN0ICogbGlzdCkKK3sKKyAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgR3N0QXV0b0NvbnZlcnQgKmF1dG9jb252ZXJ0ID0gR1NUX0FVVE9fQ09OVkVSVCAocGFyZW50KTsKKworICBpZiAoYXV0b2NvbnZlcnQtPmN1cnJlbnRfaW50ZXJuYWxfc3JjcGFkKSB7CisgICAgcmV0ID0gZ3N0X3BhZF9wdXNoX2xpc3QgKGF1dG9jb252ZXJ0LT5jdXJyZW50X2ludGVybmFsX3NyY3BhZCwgbGlzdCk7CisgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGF1dG9jb252ZXJ0LAorICAgICAgICAgICJDaGlsZCBlbGVtZW50ICUiIEdTVF9QVFJfRk9STUFUICJyZXR1cm5lZCBmbG93ICVzIiwKKyAgICAgICAgICBhdXRvY29udmVydC0+Y3VycmVudF9zdWJlbGVtZW50LCBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CisgIH0gZWxzZSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoYXV0b2NvbnZlcnQsICJHb3QgYnVmZmVyIHdpdGhvdXQgYW4gbmVnb3RpYXRlZCBlbGVtZW50LCIKKyAgICAgICAgIiByZXR1cm5pbmcgbm90LW5lZ290aWF0ZWQiKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2F1dG9fY29udmVydF9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKIHsKQEAgLTEyMTIsNiArMTI0MSwxNyBAQAogICByZXR1cm4gZ3N0X3BhZF9wdXNoIChhdXRvY29udmVydC0+c3JjcGFkLCBidWZmZXIpOwogfQogCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X2F1dG9fY29udmVydF9pbnRlcm5hbF9zaW5rX2NoYWluX2xpc3QgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEJ1ZmZlckxpc3QgKiBsaXN0KQoreworICBHc3RBdXRvQ29udmVydCAqYXV0b2NvbnZlcnQgPQorICAgICAgR1NUX0FVVE9fQ09OVkVSVCAoZ19vYmplY3RfZ2V0X3FkYXRhIChHX09CSkVDVCAocGFkKSwKKyAgICAgICAgICBwYXJlbnRfcXVhcmspKTsKKworICByZXR1cm4gZ3N0X3BhZF9wdXNoX2xpc3QgKGF1dG9jb252ZXJ0LT5zcmNwYWQsIGxpc3QpOworfQorCiBzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hdXRvX2NvbnZlcnRfaW50ZXJuYWxfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCiAgICAgR3N0RXZlbnQgKiBldmVudCkKQEAgLTEyNDMsNyArMTI4MywzMSBAQAogICAgICAgR1NUX0FVVE9fQ09OVkVSVCAoZ19vYmplY3RfZ2V0X3FkYXRhIChHX09CSkVDVCAocGFkKSwKICAgICAgICAgICBwYXJlbnRfcXVhcmspKTsKIAotICByZXR1cm4gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChhdXRvY29udmVydC0+c3JjcGFkLCBxdWVyeSk7CisgIGlmICghZ3N0X3BhZF9wZWVyX3F1ZXJ5IChhdXRvY29udmVydC0+c3JjcGFkLCBxdWVyeSkpIHsKKyAgICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKKyAgICAgIGNhc2UgR1NUX1FVRVJZX0NBUFM6CisgICAgICB7CisgICAgICAgIEdzdENhcHMgKmZpbHRlcjsKKworICAgICAgICBnc3RfcXVlcnlfcGFyc2VfY2FwcyAocXVlcnksICZmaWx0ZXIpOworICAgICAgICBpZiAoZmlsdGVyKSB7CisgICAgICAgICAgZ3N0X3F1ZXJ5X3NldF9jYXBzX3Jlc3VsdCAocXVlcnksIGZpbHRlcik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZmlsdGVyID0gZ3N0X2NhcHNfbmV3X2FueSAoKTsKKyAgICAgICAgICBnc3RfcXVlcnlfc2V0X2NhcHNfcmVzdWx0IChxdWVyeSwgZmlsdGVyKTsKKyAgICAgICAgICBnc3RfY2Fwc191bnJlZiAoZmlsdGVyKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgIH0KKyAgICAgIGNhc2UgR1NUX1FVRVJZX0FDQ0VQVF9DQVBTOgorICAgICAgICBnc3RfcXVlcnlfc2V0X2FjY2VwdF9jYXBzX3Jlc3VsdCAocXVlcnksIFRSVUUpOworICAgICAgICByZXR1cm4gVFJVRTsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICByZXR1cm4gVFJVRTsKIH0KIAogc3RhdGljIGdib29sZWFuCmRpZmYgLS1naXQgYS9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b3ZpZGVvY29udmVydC5jIGIvZ3N0L2F1dG9jb252ZXJ0L2dzdGF1dG92aWRlb2NvbnZlcnQuYwppbmRleCAyNzFkNmY1Li4xMWZjOTc0IDEwMDY0NAotLS0gYS9nc3QvYXV0b2NvbnZlcnQvZ3N0YXV0b3ZpZGVvY29udmVydC5jCisrKyBiL2dzdC9hdXRvY29udmVydC9nc3RhdXRvdmlkZW9jb252ZXJ0LmMKQEAgLTIwLDExICsyMCwxMSBAQAogLyoKICAqIHRlc3QgYXV0b3ZpZGVvY29udmVydDoKICAqIGlmIHJnYjJiYXllciBpcyBwcmVzZW50Ci0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yICEgInZpZGVvL3gtcmF3LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGF1dG92aWRlb2NvbnZlcnQgISAidmlkZW8veC1yYXctYmF5ZXIsd2lkdGg9MTAwLGhlaWdodD0xMDAsZm9ybWF0PWJnZ3IsZnJhbWVyYXRlPTEwLzEiICEgZmFrZXNpbmsgLXYKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yICEgInZpZGVvL3gtcmF3LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGF1dG92aWRlb2NvbnZlcnQgISAidmlkZW8veC1iYXllcix3aWR0aD0xMDAsaGVpZ2h0PTEwMCxmb3JtYXQ9YmdncixmcmFtZXJhdGU9MTAvMSIgISBmYWtlc2luayAtdgogICogaWYgYmF5ZXIycmdiIGlzIHByZXNlbnQKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTIgISAidmlkZW8veC1yYXctYmF5ZXIsd2lkdGg9MTAwLGhlaWdodD0xMDAsZm9ybWF0PWJnZ3IsZnJhbWVyYXRlPTEwLzEiICEgYXV0b3ZpZGVvY29udmVydCAhICJ2aWRlby94LXJhdyx3aWR0aD0xMDAsaGVpZ2h0PTEwMCxmcmFtZXJhdGU9MTAvMSIgISBmYWtlc2luayAtdgorICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTIgISAidmlkZW8veC1iYXllcix3aWR0aD0xMDAsaGVpZ2h0PTEwMCxmb3JtYXQ9YmdncixmcmFtZXJhdGU9MTAvMSIgISBhdXRvdmlkZW9jb252ZXJ0ICEgInZpZGVvL3gtcmF3LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGZha2VzaW5rIC12CiAgKiB0ZXN0IHdpdGggdmlkZW9jb252ZXJ0Ci0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yICEgInZpZGVvL3gtcmF3LGZvcm1hdD1SR0J4LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGF1dG92aWRlb2NvbnZlcnQgISAidmlkZW8veC1yYXcsZm9ybWF0PVJHQjE2LHdpZHRoPTEwMCxoZWlnaHQ9MTAwLGZyYW1lcmF0ZT0xMC8xIiAhIGZha2VzaW5rIC12CisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MiAhICJ2aWRlby94LXJhdyxmb3JtYXQ9UkdCeCx3aWR0aD0xMDAsaGVpZ2h0PTEwMCxmcmFtZXJhdGU9MTAvMSIgISBhdXRvdmlkZW9jb252ZXJ0ICEgInZpZGVvL3gtcmF3LGZvcm1hdD1SR0IxNix3aWR0aD0xMDAsaGVpZ2h0PTEwMCxmcmFtZXJhdGU9MTAvMSIgISBmYWtlc2luayAtdgogICovCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogI2luY2x1ZGUgImNvbmZpZy5oIgpkaWZmIC0tZ2l0IGEvZ3N0L2JheWVyL01ha2VmaWxlLmluIGIvZ3N0L2JheWVyL01ha2VmaWxlLmluCmluZGV4IDA2NDE4ZDEuLjk3ZDUyYzcgMTAwNjQ0Ci0tLSBhL2dzdC9iYXllci9NYWtlZmlsZS5pbgorKysgYi9nc3QvYmF5ZXIvTWFrZWZpbGUuaW4KQEAgLTEzNywxNiArMTM3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yOTgsNiArMjk3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzUsNiArMzM2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiAKICMgb3JjLWdlbmVyYXRlZCBjb2RlIGNyZWF0ZXMgd2FybmluZ3MKQEAgLTM0NSw3ICszNDgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNjQsOCArMzY2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM4MiwxNiArMzg1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00NDIsNiArNDQ4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTQzLDYgKzU1MSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NTYsOCArNTY1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTczLDYgKzU4MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MzAsMTYgKzYzOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY5MSw2ICs3MDIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzAxLDYgKzcxMyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcxMCw2ICs3MjMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzQ3LDcgKzc2Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2NhbWVyYWJpbjIvTWFrZWZpbGUuaW4gYi9nc3QvY2FtZXJhYmluMi9NYWtlZmlsZS5pbgppbmRleCA4OTgxNGI3Li4zY2IwMzRkIDEwMDY0NAotLS0gYS9nc3QvY2FtZXJhYmluMi9NYWtlZmlsZS5pbgorKysgYi9nc3QvY2FtZXJhYmluMi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yODIsNiArMjgxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTksNiArMzIwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjcsNyArMzMwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ2LDggKzM0OCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjQsMTYgKzM2NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTksNiArNDAzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI0LDYgKzQzMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNSw2ICs1MzMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM4LDggKzU0Nyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NSw2ICs1NjIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEyLDE2ICs2MjEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzMsNiArNjg0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Myw2ICs2OTUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTIsNiArNzA1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOSw3ICs3NDQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9jYW1lcmFiaW4yL2dzdGNhbWVyYWJpbjIuYyBiL2dzdC9jYW1lcmFiaW4yL2dzdGNhbWVyYWJpbjIuYwppbmRleCA3NDU4Njc1Li5kMDg3NmQ1IDEwMDY0NAotLS0gYS9nc3QvY2FtZXJhYmluMi9nc3RjYW1lcmFiaW4yLmMKKysrIGIvZ3N0L2NhbWVyYWJpbjIvZ3N0Y2FtZXJhYmluMi5jCkBAIC0xMjEsMTEgKzEyMSwxMSBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogPHBhcmE+Ci0gKiBVbmZvcnR1bmF0ZWx5LCBjYW1lcmFiaW4gY2FuJ3QgYmUgcmVhbGx5IHVzZWQgZnJvbSBnc3QtbGF1bmNoLCBhcyB5b3UgbmVlZAorICogVW5mb3J0dW5hdGVseSwgY2FtZXJhYmluIGNhbid0IGJlIHJlYWxseSB1c2VkIGZyb20gZ3N0LWxhdW5jaC0xLjAsIGFzIHlvdSBuZWVkCiAgKiB0byBzZW5kIHNpZ25hbHMgdG8gY29udHJvbCBpdC4gVGhlIGZvbGxvd2luZyBwaXBlbGluZSBtaWdodCBiZSBhYmxlCiAgKiB0byBzaG93IHRoZSB2aWV3ZmluZGVyIHVzaW5nIGFsbCB0aGUgZGVmYXVsdCBlbGVtZW50cy4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIGNhbWVyYWJpbgorICogZ3N0LWxhdW5jaC0xLjAgLXYgLW0gY2FtZXJhYmluCiAgKiBdfAogICogPC9wYXJhPgogICogPC9yZWZzZWN0Mj4KZGlmZiAtLWdpdCBhL2dzdC9jYW1lcmFiaW4yL2dzdHZpZXdmaW5kZXJiaW4uYyBiL2dzdC9jYW1lcmFiaW4yL2dzdHZpZXdmaW5kZXJiaW4uYwppbmRleCA5NzMyMzQwLi4zYWU2YzMxIDEwMDY0NAotLS0gYS9nc3QvY2FtZXJhYmluMi9nc3R2aWV3ZmluZGVyYmluLmMKKysrIGIvZ3N0L2NhbWVyYWJpbjIvZ3N0dmlld2ZpbmRlcmJpbi5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISB2aWV3ZmluZGVyYmluCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISB2aWV3ZmluZGVyYmluCiAgKiBdfAogICogRmVlZHMgdGhlIHZpZXdmaW5kZXJiaW4gd2l0aCB2aWRlbyB0ZXN0IGRhdGEuCiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZ3N0L2NkeGFwYXJzZS9NYWtlZmlsZS5pbiBiL2dzdC9jZHhhcGFyc2UvTWFrZWZpbGUuaW4KaW5kZXggN2I3NzgyNy4uYzQzZWM4YSAxMDA2NDQKLS0tIGEvZ3N0L2NkeGFwYXJzZS9NYWtlZmlsZS5pbgorKysgYi9nc3QvY2R4YXBhcnNlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2NvbG9yZWZmZWN0cy9NYWtlZmlsZS5pbiBiL2dzdC9jb2xvcmVmZmVjdHMvTWFrZWZpbGUuaW4KaW5kZXggMWM1NDMyZi4uZjA0OWQ4MCAxMDA2NDQKLS0tIGEvZ3N0L2NvbG9yZWZmZWN0cy9NYWtlZmlsZS5pbgorKysgYi9nc3QvY29sb3JlZmZlY3RzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2NvbG9yZWZmZWN0cy9nc3RjaHJvbWFob2xkLmMgYi9nc3QvY29sb3JlZmZlY3RzL2dzdGNocm9tYWhvbGQuYwppbmRleCBmYTU3MDlkLi4wOTczMTJhIDEwMDY0NAotLS0gYS9nc3QvY29sb3JlZmZlY3RzL2dzdGNocm9tYWhvbGQuYworKysgYi9nc3QvY29sb3JlZmZlY3RzL2dzdGNocm9tYWhvbGQuYwpAQCAtMjksNyArMjksNyBAQAogICoKICAqIFNhbXBsZSBwaXBlbGluZToKICAqIHxbCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBwYXR0ZXJuPXNtcHRlNzUgISBcCisgKiBnc3QtbGF1bmNoLTEuMCB2aWRlb3Rlc3RzcmMgcGF0dGVybj1zbXB0ZTc1ICEgXAogICogICBjaHJvbWFob2xkIHRhcmdldC1yPTAgdGFyZ2V0LWc9MCB0YXJnZXQtYj0yNTUgISBcCiAgKiAgIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsgICAgIFwKICAqIF18IFRoaXMgcGlwZWxpbmUgb25seSBrZWVwcyB0aGUgcmVkIGNvbG9yLgpkaWZmIC0tZ2l0IGEvZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuYyBiL2dzdC9jb2xvcmVmZmVjdHMvZ3N0Y29sb3JlZmZlY3RzLmMKaW5kZXggMzM1NTg4ZC4uYTYyYTQ1ZCAxMDA2NDQKLS0tIGEvZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuYworKysgYi9nc3QvY29sb3JlZmZlY3RzL2dzdGNvbG9yZWZmZWN0cy5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISBjb2xvcmVmZmVjdHMgcHJlc2V0PWhlYXQgISB2aWRlb2NvbnZlcnQgIQorICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgY29sb3JlZmZlY3RzIHByZXNldD1oZWF0ICEgdmlkZW9jb252ZXJ0ICEKICAqICAgICBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHNob3dzIHRoZSBlZmZlY3Qgb2YgY29sb3JlZmZlY3RzIG9uIGEgdGVzdCBzdHJlYW0uCiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuaCBiL2dzdC9jb2xvcmVmZmVjdHMvZ3N0Y29sb3JlZmZlY3RzLmgKaW5kZXggMzJmMjIzMC4uNTBjOWFhMCAxMDA2NDQKLS0tIGEvZ3N0L2NvbG9yZWZmZWN0cy9nc3Rjb2xvcmVmZmVjdHMuaAorKysgYi9nc3QvY29sb3JlZmZlY3RzL2dzdGNvbG9yZWZmZWN0cy5oCkBAIC00NSw3ICs0NSw3IEBACiAgKiBAR1NUX0NMVVRfUFJFU0VUX1NFUElBOiBTZXBpYSB0b25pbmcgZmlsdGVyCiAgKiBAR1NUX0NMVVRfUFJFU0VUX1hSQVk6IEludmVydCBjb2xvcnMgYW5kIHNsaWdodGx5IHNoYWRlIHRvIGN5YW4KICAqIEBHU1RfQ0xVVF9QUkVTRVRfWFBSTzogQ3Jvc3MgUHJvY2Vzc2luZyBmaWx0ZXIKLSAqIEBHU1RfQ0xVVF9QUkVTRVRfWUVMTE9XQkxVRTogVmlzdWFsIG1hZ25pZmllciBoaWdoLWNvbnRyYXN0IGNvbG9yIGZpbHRlci4gU2luY2U6IDAuMTAuMjQKKyAqIEBHU1RfQ0xVVF9QUkVTRVRfWUVMTE9XQkxVRTogVmlzdWFsIG1hZ25pZmllciBoaWdoLWNvbnRyYXN0IGNvbG9yIGZpbHRlcgogICoKICAqIFRoZSBsb29rdXAgdGFibGUgdG8gdXNlIHRvIGNvbnZlcnQgaW5wdXQgY29sb3JzCiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9jb21wb3NpdG9yL01ha2VmaWxlLmluIGIvZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUuaW4KaW5kZXggNWQzODY4ZC4uMjg2ZmJhZCAxMDA2NDQKLS0tIGEvZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2NvbXBvc2l0b3IvTWFrZWZpbGUuaW4KQEAgLTEzOCwxNiArMTM4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMzA1LDYgKzMwNCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzQyLDYgKzM0Myw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzUwLDcgKzM1Myw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM2OSw4ICszNzEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzg3LDE2ICszOTAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDIyLDYgKzQyNiw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQ0Nyw2ICs0NTMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01NDgsNiArNTU2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU2MSw4ICs1NzAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NzgsNiArNTg1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYzNSwxNiArNjQ0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjk2LDYgKzcwNyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC03MDYsNiArNzE4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzE1LDYgKzcyOCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NTIsNyArNzY3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvY29tcG9zaXRvci9jb21wb3NpdG9yLmMgYi9nc3QvY29tcG9zaXRvci9jb21wb3NpdG9yLmMKaW5kZXggZDAxNWQ4NS4uYzViMWE5YSAxMDA2NDQKLS0tIGEvZ3N0L2NvbXBvc2l0b3IvY29tcG9zaXRvci5jCisrKyBiL2dzdC9jb21wb3NpdG9yL2NvbXBvc2l0b3IuYwpAQCAtMjE2LDkgKzIxNiw5IEBACiAKIHN0YXRpYyB2b2lkCiBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoR3N0Q29tcG9zaXRvciAqIGNvbXAsCi0gICAgR3N0Q29tcG9zaXRvclBhZCAqIGNvbXBfcGFkLCBnaW50ICogd2lkdGgsIGdpbnQgKiBoZWlnaHQpCisgICAgR3N0Q29tcG9zaXRvclBhZCAqIGNvbXBfcGFkLCBnaW50IG91dF9wYXJfbiwgZ2ludCBvdXRfcGFyX2QsIGdpbnQgKiB3aWR0aCwKKyAgICBnaW50ICogaGVpZ2h0KQogewotICBHc3RWaWRlb0FnZ3JlZ2F0b3IgKnZhZ2cgPSBHU1RfVklERU9fQUdHUkVHQVRPUiAoY29tcCk7CiAgIEdzdFZpZGVvQWdncmVnYXRvclBhZCAqdmFnZ19wYWQgPSBHU1RfVklERU9fQUdHUkVHQVRPUl9QQUQgKGNvbXBfcGFkKTsKICAgZ2ludCBwYWRfd2lkdGgsIHBhZF9oZWlnaHQ7CiAgIGd1aW50IGRhcl9uLCBkYXJfZDsKQEAgLTI0MSwxMyArMjQxLDEwIEBACiAKICAgZ3N0X3ZpZGVvX2NhbGN1bGF0ZV9kaXNwbGF5X3JhdGlvICgmZGFyX24sICZkYXJfZCwgcGFkX3dpZHRoLCBwYWRfaGVpZ2h0LAogICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnX3BhZC0+aW5mbyksCi0gICAgICBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2dfcGFkLT5pbmZvKSwKLSAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZy0+aW5mbyksIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZy0+aW5mbykKLSAgICAgICk7CisgICAgICBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2dfcGFkLT5pbmZvKSwgb3V0X3Bhcl9uLCBvdXRfcGFyX2QpOwogICBHU1RfTE9HX09CSkVDVCAoY29tcF9wYWQsICJzY2FsaW5nICV1eCV1IGJ5ICV1LyV1ICgldS8ldSAvICV1LyV1KSIsIHBhZF93aWR0aCwKICAgICAgIHBhZF9oZWlnaHQsIGRhcl9uLCBkYXJfZCwgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnX3BhZC0+aW5mbyksCi0gICAgICBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2dfcGFkLT5pbmZvKSwKLSAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZy0+aW5mbyksIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZy0+aW5mbykpOworICAgICAgR1NUX1ZJREVPX0lORk9fUEFSX0QgKCZ2YWdnX3BhZC0+aW5mbyksIG91dF9wYXJfbiwgb3V0X3Bhcl9kKTsKIAogICBpZiAocGFkX2hlaWdodCAlIGRhcl9uID09IDApIHsKICAgICBwYWRfd2lkdGggPSBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChwYWRfaGVpZ2h0LCBkYXJfbiwgZGFyX2QpOwpAQCAtMjkyLDcgKzI4OSw4IEBACiAgICAgICBnc3RfdmlkZW9fY29sb3JpbWV0cnlfdG9fc3RyaW5nICgmKHdhbnRlZF9pbmZvLT5jb2xvcmltZXRyeSkpOwogICBiZXN0X2Nocm9tYSA9IGdzdF92aWRlb19jaHJvbWFfdG9fc3RyaW5nICh3YW50ZWRfaW5mby0+Y2hyb21hX3NpdGUpOwogCi0gIF9taXhlcl9wYWRfZ2V0X291dHB1dF9zaXplIChjb21wLCBjcGFkLCAmd2lkdGgsICZoZWlnaHQpOworICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoY29tcCwgY3BhZCwgR1NUX1ZJREVPX0lORk9fUEFSX04gKCZ2YWdnLT5pbmZvKSwKKyAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZy0+aW5mbyksICZ3aWR0aCwgJmhlaWdodCk7CiAKICAgaWYgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAod2FudGVkX2luZm8pICE9CiAgICAgICBHU1RfVklERU9fSU5GT19GT1JNQVQgKGN1cnJlbnRfaW5mbykKQEAgLTMxMCw4ICszMDgsOCBAQAogICAgICAgICB3aWR0aCwgaGVpZ2h0KTsKICAgICB0bXBfaW5mby5jaHJvbWFfc2l0ZSA9IHdhbnRlZF9pbmZvLT5jaHJvbWFfc2l0ZTsKICAgICB0bXBfaW5mby5jb2xvcmltZXRyeSA9IHdhbnRlZF9pbmZvLT5jb2xvcmltZXRyeTsKLSAgICB0bXBfaW5mby5wYXJfbiA9IHZhZ2ctPmluZm8ucGFyX247Ci0gICAgdG1wX2luZm8ucGFyX2QgPSB2YWdnLT5pbmZvLnBhcl9kOworICAgIHRtcF9pbmZvLnBhcl9uID0gd2FudGVkX2luZm8tPnBhcl9uOworICAgIHRtcF9pbmZvLnBhcl9kID0gd2FudGVkX2luZm8tPnBhcl9kOwogICAgIHRtcF9pbmZvLmZwc19uID0gY3VycmVudF9pbmZvLT5mcHNfbjsKICAgICB0bXBfaW5mby5mcHNfZCA9IGN1cnJlbnRfaW5mby0+ZnBzX2Q7CiAgICAgdG1wX2luZm8uZmxhZ3MgPSBjdXJyZW50X2luZm8tPmZsYWdzOwpAQCAtNDAzLDcgKzQwMSw4IEBACiAgICAqICAgICB3aWR0aC9oZWlnaHQuIFNlZSAtPnNldF9pbmZvKCkKICAgICogKi8KIAotICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoY29tcCwgY3BhZCwgJndpZHRoLCAmaGVpZ2h0KTsKKyAgX21peGVyX3BhZF9nZXRfb3V0cHV0X3NpemUgKGNvbXAsIGNwYWQsIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZy0+aW5mbyksCisgICAgICBHU1RfVklERU9fSU5GT19QQVJfRCAoJnZhZ2ctPmluZm8pLCAmd2lkdGgsICZoZWlnaHQpOwogCiAgIC8qIFRoZSBvbmx5IHRoaW5nIHRoYXQgY2FuIGNoYW5nZSBoZXJlIGlzIHRoZSB3aWR0aAogICAgKiBhbmQgaGVpZ2h0LCBvdGhlcndpc2Ugc2V0X2luZm8gd291bGQndmUgYmVlbiBjYWxsZWQgKi8KQEAgLTQ5OCw3ICs0OTcsOCBAQAogICAgIEdzdENvbXBvc2l0b3JQYWQgKmNwYWQyID0gR1NUX0NPTVBPU0lUT1JfUEFEIChwYWQyKTsKICAgICBnaW50IHBhZDJfd2lkdGgsIHBhZDJfaGVpZ2h0OwogCi0gICAgX21peGVyX3BhZF9nZXRfb3V0cHV0X3NpemUgKGNvbXAsIGNwYWQyLCAmcGFkMl93aWR0aCwgJnBhZDJfaGVpZ2h0KTsKKyAgICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoY29tcCwgY3BhZDIsIEdTVF9WSURFT19JTkZPX1BBUl9OICgmdmFnZy0+aW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX1BBUl9EICgmdmFnZy0+aW5mbyksICZwYWQyX3dpZHRoLCAmcGFkMl9oZWlnaHQpOwogCiAgICAgLyogV2UgZG9uJ3QgbmVlZCB0byBjbGFtcCB0aGUgY29vcmRzIG9mIHRoZSBzZWNvbmQgcmVjdGFuZ2xlICovCiAgICAgZnJhbWUyX3JlY3QueCA9IGNwYWQyLT54cG9zOwpAQCAtODgzLDE3ICs4ODMsMjYgQEAKIH0KIAogc3RhdGljIEdzdENhcHMgKgotX3VwZGF0ZV9jYXBzIChHc3RWaWRlb0FnZ3JlZ2F0b3IgKiB2YWdnLCBHc3RDYXBzICogY2FwcykKK19maXhhdGVfY2FwcyAoR3N0VmlkZW9BZ2dyZWdhdG9yICogdmFnZywgR3N0Q2FwcyAqIGNhcHMpCiB7CiAgIEdMaXN0ICpsOwogICBnaW50IGJlc3Rfd2lkdGggPSAtMSwgYmVzdF9oZWlnaHQgPSAtMTsKLSAgR3N0VmlkZW9JbmZvIGluZm87CisgIGdpbnQgYmVzdF9mcHNfbiA9IC0xLCBiZXN0X2Zwc19kID0gLTE7CisgIGdpbnQgcGFyX24sIHBhcl9kOworICBnZG91YmxlIGJlc3RfZnBzID0gMC47CiAgIEdzdENhcHMgKnJldCA9IE5VTEw7CisgIEdzdFN0cnVjdHVyZSAqczsKIAotICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZpbmZvLCBjYXBzKTsKKyAgcmV0ID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoY2Fwcyk7CiAKLSAgLyogRklYTUU6IHRoaXMgZG9lc24ndCB3b3JrIGZvciBub24gMS8xIG91dHB1dCBwYXIncyBhcyB3ZSBkb24ndCBoYXZlIHRoYXQKLSAgICogaW5mb3JtYXRpb24gYXZhaWxhYmxlIGF0IHRoaXMgdGltZSAqLworICAvKiB3ZSBuZWVkIHRoaXMgdG8gY2FsY3VsYXRlIGhvdyBsYXJnZSB0byBtYWtlIHRoZSBvdXRwdXQgZnJhbWUgKi8KKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHJldCwgMCk7CisgIGlmIChnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIpKSB7CisgICAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9mcmFjdGlvbiAocywgInBpeGVsLWFzcGVjdC1yYXRpbyIsIDEsIDEpOworICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ZyYWN0aW9uIChzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgJnBhcl9uLCAmcGFyX2QpOworICB9IGVsc2UgeworICAgIHBhcl9uID0gcGFyX2QgPSAxOworICB9CiAKICAgR1NUX09CSkVDVF9MT0NLICh2YWdnKTsKICAgZm9yIChsID0gR1NUX0VMRU1FTlQgKHZhZ2cpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKQEAgLTkwMSw5ICs5MTAsMTMgQEAKICAgICBHc3RDb21wb3NpdG9yUGFkICpjb21wb3NpdG9yX3BhZCA9IEdTVF9DT01QT1NJVE9SX1BBRCAodmFnZ3BhZCk7CiAgICAgZ2ludCB0aGlzX3dpZHRoLCB0aGlzX2hlaWdodDsKICAgICBnaW50IHdpZHRoLCBoZWlnaHQ7CisgICAgZ2ludCBmcHNfbiwgZnBzX2Q7CisgICAgZ2RvdWJsZSBjdXJfZnBzOwogCi0gICAgX21peGVyX3BhZF9nZXRfb3V0cHV0X3NpemUgKEdTVF9DT01QT1NJVE9SICh2YWdnKSwgY29tcG9zaXRvcl9wYWQsICZ3aWR0aCwKLSAgICAgICAgJmhlaWdodCk7CisgICAgZnBzX24gPSBHU1RfVklERU9fSU5GT19GUFNfTiAoJnZhZ2dwYWQtPmluZm8pOworICAgIGZwc19kID0gR1NUX1ZJREVPX0lORk9fRlBTX0QgKCZ2YWdncGFkLT5pbmZvKTsKKyAgICBfbWl4ZXJfcGFkX2dldF9vdXRwdXRfc2l6ZSAoR1NUX0NPTVBPU0lUT1IgKHZhZ2cpLCBjb21wb3NpdG9yX3BhZCwgcGFyX24sCisgICAgICAgIHBhcl9kLCAmd2lkdGgsICZoZWlnaHQpOwogCiAgICAgaWYgKHdpZHRoID09IDAgfHwgaGVpZ2h0ID09IDApCiAgICAgICBjb250aW51ZTsKQEAgLTkxNSwxNyArOTI4LDQwIEBACiAgICAgICBiZXN0X3dpZHRoID0gdGhpc193aWR0aDsKICAgICBpZiAoYmVzdF9oZWlnaHQgPCB0aGlzX2hlaWdodCkKICAgICAgIGJlc3RfaGVpZ2h0ID0gdGhpc19oZWlnaHQ7CisKKyAgICBpZiAoZnBzX2QgPT0gMCkKKyAgICAgIGN1cl9mcHMgPSAwLjA7CisgICAgZWxzZQorICAgICAgZ3N0X3V0aWxfZnJhY3Rpb25fdG9fZG91YmxlIChmcHNfbiwgZnBzX2QsICZjdXJfZnBzKTsKKworICAgIGlmIChiZXN0X2ZwcyA8IGN1cl9mcHMpIHsKKyAgICAgIGJlc3RfZnBzID0gY3VyX2ZwczsKKyAgICAgIGJlc3RfZnBzX24gPSBmcHNfbjsKKyAgICAgIGJlc3RfZnBzX2QgPSBmcHNfZDsKKyAgICB9CiAgIH0KICAgR1NUX09CSkVDVF9VTkxPQ0sgKHZhZ2cpOwogCi0gIGlmIChiZXN0X3dpZHRoID4gMCAmJiBiZXN0X2hlaWdodCA+IDApIHsKLSAgICBpbmZvLndpZHRoID0gYmVzdF93aWR0aDsKLSAgICBpbmZvLmhlaWdodCA9IGJlc3RfaGVpZ2h0OwotICAgIGlmIChzZXRfZnVuY3Rpb25zIChHU1RfQ09NUE9TSVRPUiAodmFnZyksICZpbmZvKSkKLSAgICAgIHJldCA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZpbmZvKTsKKyAgaWYgKGJlc3RfZnBzX24gPD0gMCB8fCBiZXN0X2Zwc19kIDw9IDAgfHwgYmVzdF9mcHMgPT0gMC4wKSB7CisgICAgYmVzdF9mcHNfbiA9IDI1OworICAgIGJlc3RfZnBzX2QgPSAxOworICAgIGJlc3RfZnBzID0gMjUuMDsKKyAgfQogCi0gICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAocmV0LCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgR1NUX1RZUEVfRlJBQ1RJT05fUkFOR0UsCi0gICAgICAgIDEsIEdfTUFYSU5ULCBHX01BWElOVCwgMSwgTlVMTCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfaW50IChzLCAid2lkdGgiLCBiZXN0X3dpZHRoKTsKKyAgZ3N0X3N0cnVjdHVyZV9maXhhdGVfZmllbGRfbmVhcmVzdF9pbnQgKHMsICJoZWlnaHQiLCBiZXN0X2hlaWdodCk7CisgIGdzdF9zdHJ1Y3R1cmVfZml4YXRlX2ZpZWxkX25lYXJlc3RfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCBiZXN0X2Zwc19uLAorICAgICAgYmVzdF9mcHNfZCk7CisgIHJldCA9IGdzdF9jYXBzX2ZpeGF0ZSAocmV0KTsKKworICBpZiAoYmVzdF93aWR0aCA+IDAgJiYgYmVzdF9oZWlnaHQgPiAwKSB7CisgICAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKKworICAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJnZfaW5mbywgcmV0KTsKKyAgICBpZiAoIXNldF9mdW5jdGlvbnMgKEdTVF9DT01QT1NJVE9SICh2YWdnKSwgJnZfaW5mbykpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHZhZ2csICJGYWlsZWQgdG8gc2V0dXAgdmZ1bmNzIik7CisgICAgICByZXR1cm4gTlVMTDsKKyAgICB9CiAgIH0KIAogICByZXR1cm4gcmV0OwpAQCAtMTA1OSw3ICsxMDk1LDcgQEAKIAogICBhZ2dfY2xhc3MtPnNpbmtwYWRzX3R5cGUgPSBHU1RfVFlQRV9DT01QT1NJVE9SX1BBRDsKICAgYWdnX2NsYXNzLT5zaW5rX3F1ZXJ5ID0gX3NpbmtfcXVlcnk7Ci0gIHZpZGVvYWdncmVnYXRvcl9jbGFzcy0+dXBkYXRlX2NhcHMgPSBfdXBkYXRlX2NhcHM7CisgIHZpZGVvYWdncmVnYXRvcl9jbGFzcy0+Zml4YXRlX2NhcHMgPSBfZml4YXRlX2NhcHM7CiAgIHZpZGVvYWdncmVnYXRvcl9jbGFzcy0+YWdncmVnYXRlX2ZyYW1lcyA9IGdzdF9jb21wb3NpdG9yX2FnZ3JlZ2F0ZV9mcmFtZXM7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9CQUNLR1JPVU5ELApkaWZmIC0tZ2l0IGEvZ3N0L2RhdGF1cmlzcmMvTWFrZWZpbGUuaW4gYi9nc3QvZGF0YXVyaXNyYy9NYWtlZmlsZS5pbgppbmRleCBjODgxZDI5Li42MGMwOTQwIDEwMDY0NAotLS0gYS9nc3QvZGF0YXVyaXNyYy9NYWtlZmlsZS5pbgorKysgYi9nc3QvZGF0YXVyaXNyYy9NYWtlZmlsZS5pbgpAQCAtMTE1LDE2ICsxMTUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI3MSw2ICsyNzAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMwOCw2ICszMDksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxNiw3ICszMTksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzUsOCArMzM3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1MywxNiArMzU2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM4OCw2ICszOTIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTMsNiArNDE5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE0LDYgKzUyMiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MjcsOCArNTM2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ0LDYgKzU1MSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDEsMTYgKzYxMCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Miw2ICs2NzMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjcyLDYgKzY4NCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4MSw2ICs2OTQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzE4LDcgKzczMyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2RhdGF1cmlzcmMvZ3N0ZGF0YXVyaXNyYy5jIGIvZ3N0L2RhdGF1cmlzcmMvZ3N0ZGF0YXVyaXNyYy5jCmluZGV4IDFmZGUzNmQuLmZlMDE4YjAgMTAwNjQ0Ci0tLSBhL2dzdC9kYXRhdXJpc3JjL2dzdGRhdGF1cmlzcmMuYworKysgYi9nc3QvZGF0YXVyaXNyYy9nc3RkYXRhdXJpc3JjLmMKQEAgLTI3LDcgKzI3LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoLTAuMTAgLXYgZGF0YXVyaXNyYyB1cmk9ImRhdGE6aW1hZ2UvcG5nO2Jhc2U2NCxpVkJPUncwS0dnb0FBQUFOU1VoRVVnQUFBQkFBQUFBUUNBWUFBQUFmOC85aEFBQUFmRWxFUVZRNGplMk13UW5BSUF4Rmd6aUE0RW5jeklzTzRNRVJPby9nelpXYzR4ZFRiZTFSNkxHUlI3NGhlWVM3aUtFbHpmY01pUm50NGhmOGdrOEVheUI2bHVlZnVlL0h6bEpmQ0E1MFhzTmpZUnhwclptZW5YTklLU0dFc0MrUVVxSzFoaGdqNTIxQnpobldXaWlsVUd2ZEY1UlM0TDJITVFaQ0NKeThzSE1tMlRZZEpBQUFBQUJKUlU1RXJrSmdnZz09IiAhIHBuZ2RlYyAhIHZpZGVvY29udmVydCAhIGZyZWV6ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGRhdGF1cmlzcmMgdXJpPSJkYXRhOmltYWdlL3BuZztiYXNlNjQsaVZCT1J3MEtHZ29BQUFBTlNVaEVVZ0FBQUJBQUFBQVFDQVlBQUFBZjgvOWhBQUFBZkVsRVFWUTRqZTJNd1FuQUlBeEZnemlBNEVuY3pJc080TUVST28vZ3paV2M0eGRUYmUxUjZMR1JSNzRoZVlTN2lLRWx6ZmNNaVJudDRoZjhnazhFYXlCNmx1ZWZ1ZS9IemxKZkNBNTBYc05qWVJ4cHJabWVuWE5JS1NHRXNDK1FVcUsxaGhnajUyMUJ6aG5XV2lpbFVHdmRGNVJTNEwySE1RWkNDSnk4c0hNbTJUWWRKQUFBQUFCSlJVNUVya0pnZ2c9PSIgISBwbmdkZWMgISB2aWRlb2NvbnZlcnQgISBpbWFnZWZyZWV6ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgZGlzcGxheXMgYSBzbWFsbCAxNngxNiBQTkcgaW1hZ2UgZnJvbSB0aGUgZGF0YSBVUkkuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC0xNzcsOSArMTc3LDggQEAKICAgR3N0Q2FwcyAqY2FwczsKIAogICBHU1RfT0JKRUNUX0xPQ0sgKHNyYyk7Ci0gIGlmIChnc3RfcGFkX2hhc19jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1NSQ19QQUQgKGJhc2VzcmMpKSkKLSAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9TUkNfUEFEIChiYXNlc3JjKSk7Ci0gIGVsc2UKKyAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfU1JDX1BBRCAoYmFzZXNyYykpOworICBpZiAoIWNhcHMpCiAgICAgY2FwcyA9IGdzdF9jYXBzX25ld19hbnkgKCk7CiAgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOwogCmRpZmYgLS1naXQgYS9nc3QvZGNjcC9NYWtlZmlsZS5pbiBiL2dzdC9kY2NwL01ha2VmaWxlLmluCmluZGV4IGFlOTBmMWQuLjNiN2I1ZjcgMTAwNjQ0Ci0tLSBhL2dzdC9kY2NwL01ha2VmaWxlLmluCisrKyBiL2dzdC9kY2NwL01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4MSw2ICsyODAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOCw2ICszMTksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNiw3ICszMjksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDUsOCArMzQ3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MywxNiArMzY2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OCw2ICs0MDIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjMsNiArNDI5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI0LDYgKzUzMiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzcsOCArNTQ2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU0LDYgKzU2MSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTEsMTYgKzYyMCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Miw2ICs2ODMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgyLDYgKzY5NCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5MSw2ICs3MDQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI4LDcgKzc0Myw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2RlYnVndXRpbHMvTWFrZWZpbGUuYW0gYi9nc3QvZGVidWd1dGlscy9NYWtlZmlsZS5hbQppbmRleCBhZmY3OGEyLi43ODNhOWNlIDEwMDY0NAotLS0gYS9nc3QvZGVidWd1dGlscy9NYWtlZmlsZS5hbQorKysgYi9nc3QvZGVidWd1dGlscy9NYWtlZmlsZS5hbQpAQCAtMSwxNyArMSwzIEBACi1nbGliX2dlbl9wcmVmaXggPSBfX2dzdF9kZWJ1Z3V0aWxzCi1nbGliX2dlbl9iYXNlbmFtZSA9IGRlYnVndXRpbHMKLQotaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9nc3QtZ2xpYi1nZW4ubWFrCi0KLWJ1aWx0X3NvdXJjZXMgPSBkZWJ1Z3V0aWxzLW1hcnNoYWwuYwotYnVpbHRfaGVhZGVycyA9IGRlYnVndXRpbHMtbWFyc2hhbC5oCi0KLUJVSUxUX1NPVVJDRVMgPSAkKGJ1aWx0X3NvdXJjZXMpICQoYnVpbHRfaGVhZGVycykKLQotQ0xFQU5GSUxFUyA9ICQoQlVJTFRfU09VUkNFUykKLQotRVhUUkFfRElTVCA9IGRlYnVndXRpbHMtbWFyc2hhbC5saXN0Ci0KIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGRlYnVndXRpbHNiYWQubGEKIAogbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9TT1VSQ0VTID0gXApAQCAtMjQsNyArMTAsNiBAQAogCWdzdHdhdGNoZG9nLmMgXAogCWdzdGVycm9yaWdub3JlLmMKIAotbm9kaXN0X2xpYmdzdGRlYnVndXRpbHNiYWRfbGFfU09VUkNFUyA9ICQoQlVJTFRfU09VUkNFUykKIGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfQ0ZMQUdTID0gJChHU1RfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykKIGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfTElCQUREID0gJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCS1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKZGlmZiAtLWdpdCBhL2dzdC9kZWJ1Z3V0aWxzL01ha2VmaWxlLmluIGIvZ3N0L2RlYnVndXRpbHMvTWFrZWZpbGUuaW4KaW5kZXggNDhmYTVkZS4uZTQ5NjM2ZSAxMDA2NDQKLS0tIGEvZ3N0L2RlYnVndXRpbHMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2RlYnVndXRpbHMvTWFrZWZpbGUuaW4KQEAgLTE0LDE0ICsxNCw2IEBACiAKIEBTRVRfTUFLRUAKIAotIyB0aGVzZSBhcmUgdGhlIHZhcmlhYmxlcyB5b3VyIE1ha2VmaWxlLmFtIHNob3VsZCBzZXQKLSMgdGhlIGV4YW1wbGUgaXMgYmFzZWQgb24gdGhlIGNvbG9yYmFsYW5jZSBpbnRlcmZhY2UKLQotI2dsaWJfZW51bV9oZWFkZXJzPSQoY29sb3JiYWxhbmNlX2hlYWRlcnMpCi0jZ2xpYl9lbnVtX2RlZmluZT1HU1RfQ09MT1JfQkFMQU5DRQotI2dsaWJfZ2VuX3ByZWZpeD1nc3RfY29sb3JfYmFsYW5jZQotI2dsaWJfZ2VuX2Jhc2VuYW1lPWNvbG9yYmFsYW5jZQotCiAKIFZQQVRIID0gQHNyY2RpckAKIGFtX19pc19nbnVfbWFrZSA9IHsgXApAQCAtMTI0LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xODMsMTIgKzE3NCw3IEBACiAJbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1nc3Rjb21wYXJlLmxvIFwKIAlsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWdzdHdhdGNoZG9nLmxvIFwKIAlsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWdzdGVycm9yaWdub3JlLmxvCi1hbV9fb2JqZWN0c18xID0gbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwubG8KLWFtX19vYmplY3RzXzIgPQotYW1fX29iamVjdHNfMyA9ICQoYW1fX29iamVjdHNfMSkgJChhbV9fb2JqZWN0c18yKQotbm9kaXN0X2xpYmdzdGRlYnVndXRpbHNiYWRfbGFfT0JKRUNUUyA9ICQoYW1fX29iamVjdHNfMykKLWxpYmdzdGRlYnVndXRpbHNiYWRfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9PQkpFQ1RTKSBcCi0JJChub2Rpc3RfbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9PQkpFQ1RTKQorbGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CkBAIC0yMzEsOCArMjE3LDcgQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX1NPVVJDRVMpIFwKLQkkKG5vZGlzdF9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX1NPVVJDRVMpCitTT1VSQ0VTID0gJChsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX1NPVVJDRVMpCiBESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKQEAgLTI1OSw4ICsyNDQsNyBAQAogICBkb25lIHwgJChhbV9fdW5pcXVpZnlfaW5wdXQpYAogRVRBR1MgPSBldGFncwogQ1RBR1MgPSBjdGFncwotYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluIFwKLQkkKHRvcF9zcmNkaXIpL2NvbW1vbi9nc3QtZ2xpYi1nZW4ubWFrICQodG9wX3NyY2RpcikvZGVwY29tcAorYW1fX0RJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmluICQodG9wX3NyY2RpcikvZGVwY29tcAogRElTVEZJTEVTID0gJChESVNUX0NPTU1PTikgJChESVNUX1NPVVJDRVMpICQoVEVYSU5GT1MpICQoRVhUUkFfRElTVCkKIEFDTE9DQUwgPSBAQUNMT0NBTEAKIEFDTE9DQUxfQU1GTEFHUyA9IEBBQ0xPQ0FMX0FNRkxBR1NACkBAIC0yOTcsNiArMjgxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzQsNiArMzIwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNDIsNyArMzMwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzYxLDggKzM0OCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzksMTYgKzM2NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MTQsNiArNDAzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDM5LDYgKzQzMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU0MCw2ICs1MzMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTUzLDggKzU0Nyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU3MCw2ICs1NjIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjI3LDE2ICs2MjEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02ODgsNiArNjg0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY5OCw2ICs2OTUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MDcsNiArNzA1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc0NCw3ICs3NDQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc4NCwxNCArNzgzLDYgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotZ2xpYl9nZW5fcHJlZml4ID0gX19nc3RfZGVidWd1dGlscwotZ2xpYl9nZW5fYmFzZW5hbWUgPSBkZWJ1Z3V0aWxzCi1lbnVtX2hlYWRlcnMgPSAkKGZvcmVhY2ggaCwkKGdsaWJfZW51bV9oZWFkZXJzKSxcblwjaW5jbHVkZSBcIiQoaClcIikKLWJ1aWx0X3NvdXJjZXMgPSBkZWJ1Z3V0aWxzLW1hcnNoYWwuYwotYnVpbHRfaGVhZGVycyA9IGRlYnVndXRpbHMtbWFyc2hhbC5oCi1CVUlMVF9TT1VSQ0VTID0gJChidWlsdF9zb3VyY2VzKSAkKGJ1aWx0X2hlYWRlcnMpCi1DTEVBTkZJTEVTID0gJChCVUlMVF9TT1VSQ0VTKQotRVhUUkFfRElTVCA9IGRlYnVndXRpbHMtbWFyc2hhbC5saXN0CiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RkZWJ1Z3V0aWxzYmFkLmxhCiBsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX1NPVVJDRVMgPSBcCiAJZ3N0ZGVidWdzcHkuYyBcCkBAIC04MDMsNyArNzk0LDYgQEAKIAlnc3R3YXRjaGRvZy5jIFwKIAlnc3RlcnJvcmlnbm9yZS5jCiAKLW5vZGlzdF9saWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX1NPVVJDRVMgPSAkKEJVSUxUX1NPVVJDRVMpCiBsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX0NGTEFHUyA9ICQoR1NUX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpCiBsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX0xJQkFERCA9ICQoR1NUX0JBU0VfTElCUykgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCkBAIC04MTksMTIgKzgwOSwxMSBAQAogCWdzdHdhdGNoZG9nLmggXAogCWdzdGVycm9yaWdub3JlLmgKIAotYWxsOiAkKEJVSUxUX1NPVVJDRVMpCi0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYWxsLWFtCithbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CiAuU1VGRklYRVM6IC5jIC5sbyAubyAub2JqCi0kKHNyY2RpcikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFtICQodG9wX3NyY2RpcikvY29tbW9uL2dzdC1nbGliLWdlbi5tYWsgJChhbV9fY29uZmlndXJlX2RlcHMpCiskKHNyY2RpcikvTWFrZWZpbGUuaW46IEBNQUlOVEFJTkVSX01PREVfVFJVRUAgJChzcmNkaXIpL01ha2VmaWxlLmFtICAkKGFtX19jb25maWd1cmVfZGVwcykKIAlAZm9yIGRlcCBpbiAkPzsgZG8gXAogCSAgY2FzZSAnJChhbV9fY29uZmlndXJlX2RlcHMpJyBpbiBcCiAJICAgICokJGRlcCopIFwKQEAgLTg0NCw3ICs4MzMsNiBAQAogCSAgICBlY2hvICcgY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAgJChhbV9fZGVwZmlsZXNfbWF5YmUpJzsgXAogCSAgICBjZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQCAkKGFtX19kZXBmaWxlc19tYXliZSk7OyBcCiAJZXNhYzsKLSQodG9wX3NyY2RpcikvY29tbW9uL2dzdC1nbGliLWdlbi5tYWsgJChhbV9fZW1wdHkpOgogCiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1czogJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUgJChDT05GSUdfU1RBVFVTX0RFUEVOREVOQ0lFUykKIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChNQUtFKSAkKEFNX01BS0VGTEFHUykgYW0tLXJlZnJlc2gKQEAgLTg5OSw3ICs4ODcsNiBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGRlYnVndXRpbHNiYWRfbGEtZGVidWd1dGlscy1tYXJzaGFsLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzYmFkLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1mcHNkaXNwbGF5c2luay5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGRlYnVndXRpbHNiYWRfbGEtZ3N0Y2hlY2tzdW1zaW5rLlBsb0BhbV9fcXVvdGVACkBAIC05ODksMTMgKzk3Niw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGRlYnVndXRpbHNiYWRfbGEtZ3N0ZXJyb3JpZ25vcmUubG8gYHRlc3QgLWYgJ2dzdGVycm9yaWdub3JlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGVycm9yaWdub3JlLmMKIAotbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwubG86IGRlYnVndXRpbHMtbWFyc2hhbC5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0ZGVidWd1dGlsc2JhZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhLWRlYnVndXRpbHMtbWFyc2hhbC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwuVHBvIC1jIC1vIGxpYmdzdGRlYnVndXRpbHNiYWRfbGEtZGVidWd1dGlscy1tYXJzaGFsLmxvIGB0ZXN0IC1mICdkZWJ1Z3V0aWxzLW1hcnNoYWwuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZGVidWd1dGlscy1tYXJzaGFsLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGRlYnVndXRpbHNiYWRfbGEtZGVidWd1dGlscy1tYXJzaGFsLlRwbyAkKERFUERJUikvbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZGVidWd1dGlscy1tYXJzaGFsLmMnIG9iamVjdD0nbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RkZWJ1Z3V0aWxzYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGRlYnVndXRpbHNiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0ZGVidWd1dGlsc2JhZF9sYS1kZWJ1Z3V0aWxzLW1hcnNoYWwubG8gYHRlc3QgLWYgJ2RlYnVndXRpbHMtbWFyc2hhbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BkZWJ1Z3V0aWxzLW1hcnNoYWwuYwotCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCiAKQEAgLTEwODUsMTUgKzEwNjUsMTMgQEAKIAkgIGZpOyBcCiAJZG9uZQogY2hlY2stYW06IGFsbC1hbQotY2hlY2s6ICQoQlVJTFRfU09VUkNFUykKLQkkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBjaGVjay1hbQorY2hlY2s6IGNoZWNrLWFtCiBhbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKIGluc3RhbGxkaXJzOgogCWZvciBkaXIgaW4gIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBkbyBcCiAJICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCiAJZG9uZQotaW5zdGFsbDogJChCVUlMVF9TT1VSQ0VTKQotCSQoTUFLRSkgJChBTV9NQUtFRkxBR1MpIGluc3RhbGwtYW0KK2luc3RhbGw6IGluc3RhbGwtYW0KIGluc3RhbGwtZXhlYzogaW5zdGFsbC1leGVjLWFtCiBpbnN0YWxsLWRhdGE6IGluc3RhbGwtZGF0YS1hbQogdW5pbnN0YWxsOiB1bmluc3RhbGwtYW0KQEAgLTExMTUsNyArMTA5Myw2IEBACiBtb3N0bHljbGVhbi1nZW5lcmljOgogCiBjbGVhbi1nZW5lcmljOgotCS10ZXN0IC16ICIkKENMRUFORklMRVMpIiB8fCBybSAtZiAkKENMRUFORklMRVMpCiAKIGRpc3RjbGVhbi1nZW5lcmljOgogCS10ZXN0IC16ICIkKENPTkZJR19DTEVBTl9GSUxFUykiIHx8IHJtIC1mICQoQ09ORklHX0NMRUFOX0ZJTEVTKQpAQCAtMTEyNCw3ICsxMTAxLDYgQEAKIG1haW50YWluZXItY2xlYW4tZ2VuZXJpYzoKIAlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2UiCiAJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgotCS10ZXN0IC16ICIkKEJVSUxUX1NPVVJDRVMpIiB8fCBybSAtZiAkKEJVSUxUX1NPVVJDRVMpCiBjbGVhbjogY2xlYW4tYW0KIAogY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBcCkBAIC0xMTk2LDcgKzExNzIsNyBAQAogCiB1bmluc3RhbGwtYW06IHVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwogCi0uTUFLRTogYWxsIGNoZWNrIGluc3RhbGwgaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCisuTUFLRTogaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCiAKIC5QSE9OWTogQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgXAogCWNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgY3Njb3BlbGlzdC1hbSBjdGFncyBcCkBAIC0xMjE2LDQyICsxMTkyLDYgQEAKIC5QUkVDSU9VUzogTWFrZWZpbGUKIAogCi0jIHRoZXNlIGFyZSBhbGwgdGhlIHJ1bGVzIGdlbmVyYXRpbmcgdGhlIHJlbGV2YW50IGZpbGVzCi0kKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmg6ICQoZ2xpYl9nZW5fYmFzZW5hbWUpLW1hcnNoYWwubGlzdAotCSQoQU1fVl9HRU4pJChHTElCX0dFTk1BUlNIQUwpIC0taGVhZGVyIC0tcHJlZml4PSQoZ2xpYl9nZW5fcHJlZml4KV9tYXJzaGFsICReID4gJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5oLnRtcCAmJiBcCi0JbXYgJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5oLnRtcCAkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmgKLQotJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5jOiAkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmxpc3QKLQkkKEFNX1ZfR0VOKWVjaG8gIiNpbmNsdWRlIFwiJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5oXCIiID4+ICQoZ2xpYl9nZW5fYmFzZW5hbWUpLW1hcnNoYWwuYy50bXAgJiYgXAotCSQoR0xJQl9HRU5NQVJTSEFMKSAtLWJvZHkgLS1wcmVmaXg9JChnbGliX2dlbl9wcmVmaXgpX21hcnNoYWwgJF4gPj4gJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5jLnRtcCAmJiBcCi0JbXYgJChnbGliX2dlbl9iYXNlbmFtZSktbWFyc2hhbC5jLnRtcCAkKGdsaWJfZ2VuX2Jhc2VuYW1lKS1tYXJzaGFsLmMKLQotJChnbGliX2dlbl9iYXNlbmFtZSktZW51bXR5cGVzLmg6ICQoZ2xpYl9lbnVtX2hlYWRlcnMpCi0JJChBTV9WX0dFTikkKEdMSUJfTUtFTlVNUykgXAotCS0tZmhlYWQgIiNpZm5kZWYgX18kKGdsaWJfZW51bV9kZWZpbmUpX0VOVU1fVFlQRVNfSF9fXG4jZGVmaW5lIF9fJChnbGliX2VudW1fZGVmaW5lKV9FTlVNX1RZUEVTX0hfX1xuXG4jaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD5cblxuR19CRUdJTl9ERUNMU1xuIiBcCi0JLS1mcHJvZCAiXG4vKiBlbnVtZXJhdGlvbnMgZnJvbSBcIkBmaWxlbmFtZUBcIiAqL1xuIiBcCi0JLS12aGVhZCAiR1R5cGUgQGVudW1fbmFtZUBfZ2V0X3R5cGUgKHZvaWQpO1xuI2RlZmluZSBHU1RfVFlQRV9ARU5VTVNIT1JUQCAoQGVudW1fbmFtZUBfZ2V0X3R5cGUoKSlcbiIgICAgICAgICBcCi0JLS1mdGFpbCAiR19FTkRfREVDTFNcblxuI2VuZGlmIC8qIF9fJChnbGliX2VudW1fZGVmaW5lKV9FTlVNX1RZUEVTX0hfXyAqLyIgXAotCSReID4gJEAKLQotJChnbGliX2dlbl9iYXNlbmFtZSktZW51bXR5cGVzLmM6ICQoZ2xpYl9lbnVtX2hlYWRlcnMpCi0JQGlmIHRlc3QgIngkKGdsaWJfZW51bV9oZWFkZXJzKSIgPSAieCI7IHRoZW4gZWNobyAiRVJST1I6IGdsaWJfZW51bV9oZWFkZXJzIGlzIGVtcHR5LCBwbGVhc2UgZml4IE1ha2VmaWxlIjsgZXhpdCAxOyBmaQotCSQoQU1fVl9HRU4pJChHTElCX01LRU5VTVMpIFwKLQktLWZoZWFkICIjaW5jbHVkZSBcIiQoZ2xpYl9nZW5fYmFzZW5hbWUpLWVudW10eXBlcy5oXCJcbiQoZW51bV9oZWFkZXJzKSIgXAotCS0tZnByb2QgIlxuLyogZW51bWVyYXRpb25zIGZyb20gXCJAZmlsZW5hbWVAXCIgKi8iIFwKLQktLXZoZWFkICJHVHlwZVxuQGVudW1fbmFtZUBfZ2V0X3R5cGUgKHZvaWQpXG57XG4gIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBnX2RlZmluZV90eXBlX2lkX192b2xhdGlsZSA9IDA7XG4gIGlmIChnX29uY2VfaW5pdF9lbnRlciAoJmdfZGVmaW5lX3R5cGVfaWRfX3ZvbGF0aWxlKSkge1xuICAgIHN0YXRpYyBjb25zdCBHQFR5cGVAVmFsdWUgdmFsdWVzW10gPSB7IiAgICAgXAotCS0tdnByb2QgIiAgICAgIHsgQFZBTFVFTkFNRUAsIFwiQFZBTFVFTkFNRUBcIiwgXCJAdmFsdWVuaWNrQFwiIH0sIiBcCi0JLS12dGFpbCAiICAgICAgeyAwLCBOVUxMLCBOVUxMIH1cbiAgICB9O1xuICAgIEdUeXBlIGdfZGVmaW5lX3R5cGVfaWQgPSBnX0B0eXBlQF9yZWdpc3Rlcl9zdGF0aWMgKFwiQEVudW1OYW1lQFwiLCB2YWx1ZXMpO1xuICAgIGdfb25jZV9pbml0X2xlYXZlICgmZ19kZWZpbmVfdHlwZV9pZF9fdm9sYXRpbGUsIGdfZGVmaW5lX3R5cGVfaWQpO1xuICB9XG4gIHJldHVybiBnX2RlZmluZV90eXBlX2lkX192b2xhdGlsZTtcbn1cbiIgXAotCSReID4gJEAKLQotIyBhIGhhY2sgcnVsZSB0byBtYWtlIHN1cmUgLlBsbyBmaWxlcyBleGlzdCBiZWNhdXNlIHRoZXkgZ2V0IGluY2x1ZGUnZAotIyBmcm9tIE1ha2VmaWxlJ3MKLS5kZXBzLyUtbWFyc2hhbC5QbG86Ci0JQHRvdWNoICRACi0KLS5kZXBzLyUtZW51bXR5cGVzLlBsbzoKLQlAdG91Y2ggJEAKLQogIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIHRvIG5vdCBleHBvcnQgYWxsIHZhcmlhYmxlcy4KICMgT3RoZXJ3aXNlIGEgc3lzdGVtIGxpbWl0IChmb3IgU3lzViBhdCBsZWFzdCkgbWF5IGJlIGV4Y2VlZGVkLgogLk5PRVhQT1JUOgpkaWZmIC0tZ2l0IGEvZ3N0L2RlYnVndXRpbHMvZGVidWd1dGlscy1tYXJzaGFsLmxpc3QgYi9nc3QvZGVidWd1dGlscy9kZWJ1Z3V0aWxzLW1hcnNoYWwubGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA3M2ZkMy4uMDAwMDAwMAotLS0gYS9nc3QvZGVidWd1dGlscy9kZWJ1Z3V0aWxzLW1hcnNoYWwubGlzdAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotVk9JRDpET1VCTEUsRE9VQkxFLERPVUJMRQotCmRpZmYgLS1naXQgYS9nc3QvZGVidWd1dGlscy9mcHNkaXNwbGF5c2luay5jIGIvZ3N0L2RlYnVndXRpbHMvZnBzZGlzcGxheXNpbmsuYwppbmRleCBkY2VmNjc5Li45MmIzMjAxIDEwMDY0NAotLS0gYS9nc3QvZGVidWd1dGlscy9mcHNkaXNwbGF5c2luay5jCisrKyBiL2dzdC9kZWJ1Z3V0aWxzL2Zwc2Rpc3BsYXlzaW5rLmMKQEAgLTI1LDEwICsyNSwxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyAhIGZwc2Rpc3BsYXlzaW5rCi0gKiBnc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyAhIGZwc2Rpc3BsYXlzaW5rIHRleHQtb3ZlcmxheT1mYWxzZQotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPXZpZGVvLmF2aSAhIGRlY29kZWJpbiBuYW1lPWQgISBxdWV1ZSAhIGZwc2Rpc3BsYXlzaW5rIGQuICEgcXVldWUgISBmYWtlc2luayBzeW5jPXRydWUKLSAqIGdzdC1sYXVuY2ggcGxheWJpbiB1cmk9ZmlsZTovLy9wYXRoL3RvL3ZpZGVvLmF2aSB2aWRlby1zaW5rPSJmcHNkaXNwbGF5c2luayIgYXVkaW8tc2luaz1mYWtlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgZnBzZGlzcGxheXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyAhIGZwc2Rpc3BsYXlzaW5rIHRleHQtb3ZlcmxheT1mYWxzZQorICogZ3N0LWxhdW5jaC0xLjAgZmlsZXNyYyBsb2NhdGlvbj12aWRlby5hdmkgISBkZWNvZGViaW4gbmFtZT1kICEgcXVldWUgISBmcHNkaXNwbGF5c2luayBkLiAhIHF1ZXVlICEgZmFrZXNpbmsgc3luYz10cnVlCisgKiBnc3QtbGF1bmNoLTEuMCBwbGF5YmluIHVyaT1maWxlOi8vL3BhdGgvdG8vdmlkZW8uYXZpIHZpZGVvLXNpbms9ImZwc2Rpc3BsYXlzaW5rIiBhdWRpby1zaW5rPWZha2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNDcsNyArNDcsNiBAQAogI2luY2x1ZGUgImNvbmZpZy5oIgogI2VuZGlmCiAKLSNpbmNsdWRlICJkZWJ1Z3V0aWxzLW1hcnNoYWwuaCIKICNpbmNsdWRlICJmcHNkaXNwbGF5c2luay5oIgogCiAjZGVmaW5lIERFRkFVTFRfU0lHTkFMX0ZQU19NRUFTVVJFTUVOVFMgRkFMU0UKQEAgLTE5OCwxMyArMTk3LDEwIEBACiAgICAqIEBhdmdmcHM6IFRoZSBhdmVyYWdlIGZwcwogICAgKgogICAgKiBTaWduYWxzIHRoZSBhcHBsaWNhdGlvbiBhYm91dCB0aGUgbWVhc3VyZWQgZnBzCi0gICAqCi0gICAqIFNpbmNlOiAwLjEwLjIwCiAgICAqLwogICBmcHNkaXNwbGF5c2lua19zaWduYWxzW1NJR05BTF9GUFNfTUVBU1VSRU1FTlRTXSA9CiAgICAgICBnX3NpZ25hbF9uZXcgKCJmcHMtbWVhc3VyZW1lbnRzIiwgR19UWVBFX0ZST01fQ0xBU1MgKGtsYXNzKSwKLSAgICAgIEdfU0lHTkFMX1JVTl9MQVNULCAwLCBOVUxMLCBOVUxMLAotICAgICAgX19nc3RfZGVidWd1dGlsc19tYXJzaGFsX1ZPSURfX0RPVUJMRV9ET1VCTEVfRE9VQkxFLAorICAgICAgR19TSUdOQUxfUlVOX0xBU1QsIDAsIE5VTEwsIE5VTEwsIE5VTEwsCiAgICAgICBHX1RZUEVfTk9ORSwgMywgR19UWVBFX0RPVUJMRSwgR19UWVBFX0RPVUJMRSwgR19UWVBFX0RPVUJMRSk7CiAKICAgZ3N0ZWxlbWVudF9rbGFzcy0+Y2hhbmdlX3N0YXRlID0gZnBzX2Rpc3BsYXlfc2lua19jaGFuZ2Vfc3RhdGU7CmRpZmYgLS1naXQgYS9nc3QvZGVidWd1dGlscy9nc3RjaG9wbXlkYXRhLmMgYi9nc3QvZGVidWd1dGlscy9nc3RjaG9wbXlkYXRhLmMKaW5kZXggZTc4MDBkNS4uY2VmZjdlNSAxMDA2NDQKLS0tIGEvZ3N0L2RlYnVndXRpbHMvZ3N0Y2hvcG15ZGF0YS5jCisrKyBiL2dzdC9kZWJ1Z3V0aWxzL2dzdGNob3BteWRhdGEuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgYXVkaW90ZXN0c3JjIG51bS1idWZmZXJzPTEwICEgZ3N0Y2hvcG15ZGF0YSBtaW4tc2l6ZT0xMDAKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGF1ZGlvdGVzdHNyYyBudW0tYnVmZmVycz0xMCAhIGNob3BteWRhdGEgbWluLXNpemU9MTAwCiAgKiBtYXgtc2l6ZT0yMDAgc3RlcC1zaXplPTIgISBmYWtlc2luayAtdgogICogXXwKICAqIApkaWZmIC0tZ2l0IGEvZ3N0L2RlYnVndXRpbHMvZ3N0ZGVidWdzcHkuYyBiL2dzdC9kZWJ1Z3V0aWxzL2dzdGRlYnVnc3B5LmMKaW5kZXggYjc0NmI1MS4uMTllN2NmMiAxMDA2NDQKLS0tIGEvZ3N0L2RlYnVndXRpbHMvZ3N0ZGVidWdzcHkuYworKysgYi9nc3QvZGVidWd1dGlscy9nc3RkZWJ1Z3NweS5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtbSB2aWRlb3Rlc3RzcmMgISBkZWJ1Z3NweSAhIGZha2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtbSB2aWRlb3Rlc3RzcmMgISBkZWJ1Z3NweSAhIGZha2VzaW5rCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2RlYnVndXRpbHMvZ3N0d2F0Y2hkb2cuYyBiL2dzdC9kZWJ1Z3V0aWxzL2dzdHdhdGNoZG9nLmMKaW5kZXggMzI5MmI0My4uMGE0YzEyZSAxMDA2NDQKLS0tIGEvZ3N0L2RlYnVndXRpbHMvZ3N0d2F0Y2hkb2cuYworKysgYi9nc3QvZGVidWd1dGlscy9nc3R3YXRjaGRvZy5jCkBAIC0zNSw3ICszNSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmYWtlc3JjICEgd2F0Y2hkb2cgISBmYWtlc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmFrZXNyYyAhIHdhdGNoZG9nICEgZmFrZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZHZic3Vib3ZlcmxheS9NYWtlZmlsZS5pbiBiL2dzdC9kdmJzdWJvdmVybGF5L01ha2VmaWxlLmluCmluZGV4IGQ1MzJjNjMuLmYyZjBmMmUgMTAwNjQ0Ci0tLSBhL2dzdC9kdmJzdWJvdmVybGF5L01ha2VmaWxlLmluCisrKyBiL2dzdC9kdmJzdWJvdmVybGF5L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2R2YnN1Ym92ZXJsYXkvZHZiLXN1Yi5jIGIvZ3N0L2R2YnN1Ym92ZXJsYXkvZHZiLXN1Yi5jCmluZGV4IDY1YTQzYWIuLjc1OTY1NjMgMTAwNjQ0Ci0tLSBhL2dzdC9kdmJzdWJvdmVybGF5L2R2Yi1zdWIuYworKysgYi9nc3QvZHZic3Vib3ZlcmxheS9kdmItc3ViLmMKQEAgLTI3Nyw4ICsyNzcsNyBAQAogICAgIGR2Yl9zdWItPnJlZ2lvbl9saXN0ID0gcmVnaW9uLT5uZXh0OwogCiAgICAgZGVsZXRlX3JlZ2lvbl9kaXNwbGF5X2xpc3QgKGR2Yl9zdWIsIHJlZ2lvbik7Ci0gICAgaWYgKHJlZ2lvbi0+cGJ1ZikKLSAgICAgIGdfZnJlZSAocmVnaW9uLT5wYnVmKTsKKyAgICBnX2ZyZWUgKHJlZ2lvbi0+cGJ1Zik7CiAKICAgICBnX3NsaWNlX2ZyZWUgKERWQlN1YlJlZ2lvbiwgcmVnaW9uKTsKICAgfQpAQCAtNDcyLDggKzQ3MSw3IEBACiAgIGJ1ZiArPSAyOwogCiAgIGlmIChyZWdpb24tPndpZHRoICogcmVnaW9uLT5oZWlnaHQgIT0gcmVnaW9uLT5idWZfc2l6ZSkgeyAgICAgLyogRklYTUU6IFJlYWQgY2xvc2VyIGZyb20gc3BlYyB3aGF0IGhhcHBlbnMgd2hlbiBkaW1lbnNpb25zIGNoYW5nZSAqLwotICAgIGlmIChyZWdpb24tPnBidWYpCi0gICAgICBnX2ZyZWUgKHJlZ2lvbi0+cGJ1Zik7CisgICAgZ19mcmVlIChyZWdpb24tPnBidWYpOwogCiAgICAgcmVnaW9uLT5idWZfc2l6ZSA9IHJlZ2lvbi0+d2lkdGggKiByZWdpb24tPmhlaWdodDsKIApkaWZmIC0tZ2l0IGEvZ3N0L2R2YnN1Ym92ZXJsYXkvZ3N0ZHZic3Vib3ZlcmxheS5jIGIvZ3N0L2R2YnN1Ym92ZXJsYXkvZ3N0ZHZic3Vib3ZlcmxheS5jCmluZGV4IDYzNTk5ZGIuLjM2NTgyMDEgMTAwNjQ0Ci0tLSBhL2dzdC9kdmJzdWJvdmVybGF5L2dzdGR2YnN1Ym92ZXJsYXkuYworKysgYi9nc3QvZHZic3Vib3ZlcmxheS9nc3RkdmJzdWJvdmVybGF5LmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbIEZJWE1FCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249L3BhdGgvdG8vdHMgISBtcGVndHNkZW11eCBuYW1lPWQgISBxdWV1ZSAhIG1wM3BhcnNlICEgbWFkICEgYXVkaW9jb252ZXJ0ICEgYXV0b2F1ZGlvc2luayBcCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL3RzICEgbXBlZ3RzZGVtdXggbmFtZT1kICEgcXVldWUgISBtcGVnYXVkaW9wYXJzZSAhIG1hZCAhIGF1ZGlvY29udmVydCAhIGF1dG9hdWRpb3NpbmsgXAogICogICAgIGQuICEgcXVldWUgISBtcGVnMmRlYyAhIHZpZGVvY29udmVydCAhIHIuIFwKICAqICAgICBkLiAhIHF1ZXVlICEgInN1YnBpY3R1cmUveC1kdmIiICEgZHZic3Vib3ZlcmxheSBuYW1lPXIgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIGRlbXV4ZXMgYSBNUEVHLVRTIGZpbGUgd2l0aCBNUEVHMiB2aWRlbywgTVAzIGF1ZGlvIGFuZCBlbWJlZGRlZCBEVkIgc3VidGl0bGVzIGFuZCByZW5kZXJzIHRoZSBzdWJ0aXRsZXMgb24gdG9wIG9mIHRoZSB2aWRlby4KZGlmZiAtLWdpdCBhL2dzdC9kdmRzcHUvTWFrZWZpbGUuaW4gYi9nc3QvZHZkc3B1L01ha2VmaWxlLmluCmluZGV4IDUxYzc3N2MuLjExMzQ4OTQgMTAwNjQ0Ci0tLSBhL2dzdC9kdmRzcHUvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2R2ZHNwdS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzgsNiArMjc3LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTUsNiArMzE2LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjMsNyArMzI2LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQyLDggKzM0NCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjAsMTYgKzM2MywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTUsNiArMzk5LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDIwLDYgKzQyNiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMSw2ICs1MjksNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM0LDggKzU0Myw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MSw2ICs1NTgsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA4LDE2ICs2MTcsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjksNiArNjgwLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OSw2ICs2OTEsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODgsNiArNzAxLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNSw3ICs3NDAsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9kdmRzcHUvZ3N0ZHZkc3B1LmMgYi9nc3QvZHZkc3B1L2dzdGR2ZHNwdS5jCmluZGV4IDYyZWU1NDQuLjA0YTQzODcgMTAwNjQ0Ci0tLSBhL2dzdC9kdmRzcHUvZ3N0ZHZkc3B1LmMKKysrIGIvZ3N0L2R2ZHNwdS9nc3RkdmRzcHUuYwpAQCAtMjQsNyArMjQsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIEZJWE1FOiBnc3QtbGF1bmNoIC4uLgorICogRklYTUU6IGdzdC1sYXVuY2gtMS4wIC4uLgogICogXXwgRklYTUU6IGRlc2NyaXB0aW9uIGZvciB0aGUgc2FtcGxlIGxhdW5jaCBwaXBlbGluZQogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtOTAsNyArOTAsOCBAQAogCiBzdGF0aWMgR3N0Q2FwcyAqZ3N0X2R2ZF9zcHVfdmlkZW9fcHJveHlfZ2V0Y2FwcyAoR3N0UGFkICogcGFkLAogICAgIEdzdENhcHMgKiBmaWx0ZXIpOwotc3RhdGljIGdib29sZWFuIGdzdF9kdmRfc3B1X3ZpZGVvX3NldF9jYXBzIChHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfZHZkX3NwdV92aWRlb19zZXRfY2FwcyAoR3N0RFZEU3B1ICogZHZkc3B1LCBHc3RQYWQgKiBwYWQsCisgICAgR3N0Q2FwcyAqIGNhcHMpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2R2ZF9zcHVfdmlkZW9fY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAogICAgIEdzdEJ1ZmZlciAqIGJ1Zik7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2R2ZF9zcHVfdmlkZW9fZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LApAQCAtMTA0LDcgKzEwNSw4IEBACiAgICAgR3N0QnVmZmVyICogYnVmKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfZHZkX3NwdV9zdWJwaWNfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAogICAgIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIGdib29sZWFuIGdzdF9kdmRfc3B1X3N1YnBpY19zZXRfY2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2Fwcyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2R2ZF9zcHVfc3VicGljX3NldF9jYXBzIChHc3REVkRTcHUgKiBkdmRzcHUsIEdzdFBhZCAqIHBhZCwKKyAgICBHc3RDYXBzICogY2Fwcyk7CiAKIHN0YXRpYyB2b2lkIGdzdF9kdmRfc3B1X2NsZWFyIChHc3REVkRTcHUgKiBkdmRzcHUpOwogc3RhdGljIHZvaWQgZ3N0X2R2ZF9zcHVfZmx1c2hfc3B1X2luZm8gKEdzdERWRFNwdSAqIGR2ZHNwdSwKQEAgLTMxNSw5ICszMTcsOCBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF9kdmRfc3B1X3ZpZGVvX3NldF9jYXBzIChHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBjYXBzKQorZ3N0X2R2ZF9zcHVfdmlkZW9fc2V0X2NhcHMgKEdzdERWRFNwdSAqIGR2ZHNwdSwgR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKIHsKLSAgR3N0RFZEU3B1ICpkdmRzcHUgPSBHU1RfRFZEX1NQVSAoZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpKTsKICAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7CiAgIEdzdFZpZGVvSW5mbyBpbmZvOwogICBnaW50IGk7CkBAIC0zMzksNyArMzQwLDYgQEAKIAogICByZXMgPSBUUlVFOwogZG9uZToKLSAgZ3N0X29iamVjdF91bnJlZiAoZHZkc3B1KTsKICAgcmV0dXJuIHJlczsKIH0KIApAQCAtNDA1LDcgKzQwNSw3IEBACiAgICAgICBHc3RDYXBzICpjYXBzOwogCiAgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKLSAgICAgIHJlcyA9IGdzdF9kdmRfc3B1X3ZpZGVvX3NldF9jYXBzIChwYWQsIGNhcHMpOworICAgICAgcmVzID0gZ3N0X2R2ZF9zcHVfdmlkZW9fc2V0X2NhcHMgKGR2ZHNwdSwgcGFkLCBjYXBzKTsKICAgICAgIGlmIChyZXMpCiAgICAgICAgIHJlcyA9IGdzdF9wYWRfcHVzaF9ldmVudCAoZHZkc3B1LT5zcmNwYWQsIGV2ZW50KTsKICAgICAgIGVsc2UKQEAgLTEwNTcsNyArMTA1Nyw3IEBACiAgICAgICBHc3RDYXBzICpjYXBzOwogCiAgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKLSAgICAgIHJlcyA9IGdzdF9kdmRfc3B1X3N1YnBpY19zZXRfY2FwcyAocGFkLCBjYXBzKTsKKyAgICAgIHJlcyA9IGdzdF9kdmRfc3B1X3N1YnBpY19zZXRfY2FwcyAoZHZkc3B1LCBwYWQsIGNhcHMpOwogICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CiAgICAgICBicmVhazsKICAgICB9CkBAIC0xMDY2LDkgKzEwNjYsMTAgQEAKICAgICBjYXNlIEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0I6CiAgICAgewogICAgICAgY29uc3QgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfZXZlbnRfZ2V0X3N0cnVjdHVyZSAoZXZlbnQpOworICAgICAgY29uc3QgZ2NoYXIgKm5hbWUgPSBnc3Rfc3RydWN0dXJlX2dldF9uYW1lIChzdHJ1Y3R1cmUpOwogICAgICAgZ2Jvb2xlYW4gbmVlZF9wdXNoOwogCi0gICAgICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUgKHN0cnVjdHVyZSwgImFwcGxpY2F0aW9uL3gtZ3N0LWR2ZCIpKSB7CisgICAgICBpZiAoIWdfc3RyX2hhc19wcmVmaXggKG5hbWUsICJhcHBsaWNhdGlvbi94LWdzdC1kdmQiKSkgewogICAgICAgICByZXMgPSBnc3RfcGFkX2V2ZW50X2RlZmF1bHQgKHBhZCwgcGFyZW50LCBldmVudCk7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQpAQCAtMTE4NCw5ICsxMTg1LDggQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfZHZkX3NwdV9zdWJwaWNfc2V0X2NhcHMgKEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCitnc3RfZHZkX3NwdV9zdWJwaWNfc2V0X2NhcHMgKEdzdERWRFNwdSAqIGR2ZHNwdSwgR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKIHsKLSAgR3N0RFZEU3B1ICpkdmRzcHUgPSBHU1RfRFZEX1NQVSAoZ3N0X3BhZF9nZXRfcGFyZW50IChwYWQpKTsKICAgZ2Jvb2xlYW4gcmVzID0gRkFMU0U7CiAgIEdzdFN0cnVjdHVyZSAqczsKICAgU3B1SW5wdXRUeXBlIGlucHV0X3R5cGU7CkBAIC0xMjEyLDcgKzEyMTIsNiBAQAogICBEVkRfU1BVX1VOTE9DSyAoZHZkc3B1KTsKICAgcmVzID0gVFJVRTsKIGRvbmU6Ci0gIGdzdF9vYmplY3RfdW5yZWYgKGR2ZHNwdSk7CiAgIHJldHVybiByZXM7CiB9CiAKZGlmZiAtLWdpdCBhL2dzdC9kdmRzcHUvZ3N0c3B1LXBncy5jIGIvZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmMKaW5kZXggZmM1OTcxNi4uNjEwOGRlMCAxMDA2NDQKLS0tIGEvZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmMKKysrIGIvZ3N0L2R2ZHNwdS9nc3RzcHUtcGdzLmMKQEAgLTgxLDcgKzgxLDggQEAKIHN0YXRpYyB2b2lkCiBkdW1wX3JsZV9kYXRhIChHc3REVkRTcHUgKiBkdmRzcHUsIGd1aW50OCAqIGRhdGEsIGd1aW50MzIgbGVuKQogewotICBndWludDE2IG9ial9oIEdfR05VQ19VTlVTRUQ7CisjaWYgRFVNUF9GVUxMX0lNQUdFCisgIGd1aW50MTYgb2JqX2g7CiAgIGd1aW50MTYgb2JqX3c7CiAgIGd1aW50OCAqZW5kID0gZGF0YSArIGxlbjsKICAgZ3VpbnQgeCA9IDA7CkBAIC0xNDEsNyArMTQyLDYgQEAKICAgICAgIH0KICAgICB9CiAKLSNpZiBEVU1QX0ZVTExfSU1BR0UKICAgICB7CiAgICAgICBnaW50IGk7CiAjaWYgMQpAQCAtMTU5LDcgKzE1OSw2IEBACiAgICAgICBQR1NfRFVNUCAoIlJ1biB4OiAlZCBwaXg6ICVkIGNvbDogJWRcbiIsIHgsIHJ1bl9sZW4sIHBhbF9pZCk7CiAjZW5kaWYKICAgICB9Ci0jZW5kaWYKIAogICAgIHggKz0gcnVuX2xlbjsKICAgICBpZiAoIXJ1bl9sZW4gfHwgeCA+IG9ial93KQpAQCAtMTY3LDYgKzE2Niw3IEBACiAgIH07CiAKICAgUEdTX0RVTVAgKCJcbiIpOworI2VuZGlmCiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0zMTgsNiArMzE4LDggQEAKICAgICBndWludDggbl9vYmplY3RzKQogewogICBpZiAocHMtPm9iamVjdHMgPT0gTlVMTCkgeworICAgIGlmIChuX29iamVjdHMgPT0gMCkKKyAgICAgIHJldHVybjsKICAgICBwcy0+b2JqZWN0cyA9CiAgICAgICAgIGdfYXJyYXlfc2l6ZWRfbmV3IChGQUxTRSwgVFJVRSwgc2l6ZW9mIChQZ3NDb21wb3NpdGlvbk9iamVjdCksCiAgICAgICAgIG5fb2JqZWN0cyk7CmRpZmYgLS1naXQgYS9nc3QvZmFjZW92ZXJsYXkvTWFrZWZpbGUuaW4gYi9nc3QvZmFjZW92ZXJsYXkvTWFrZWZpbGUuaW4KaW5kZXggZjY1MWM5NS4uNWFiOGMxOCAxMDA2NDQKLS0tIGEvZ3N0L2ZhY2VvdmVybGF5L01ha2VmaWxlLmluCisrKyBiL2dzdC9mYWNlb3ZlcmxheS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9mZXN0aXZhbC9NYWtlZmlsZS5pbiBiL2dzdC9mZXN0aXZhbC9NYWtlZmlsZS5pbgppbmRleCA5OTU5MDY2Li41MzBiMGFlIDEwMDY0NAotLS0gYS9nc3QvZmVzdGl2YWwvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2Zlc3RpdmFsL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2Zlc3RpdmFsL2dzdGZlc3RpdmFsLmMgYi9nc3QvZmVzdGl2YWwvZ3N0ZmVzdGl2YWwuYwppbmRleCBjYjJkMWNiLi4wMGVmODJkIDEwMDY0NAotLS0gYS9nc3QvZmVzdGl2YWwvZ3N0ZmVzdGl2YWwuYworKysgYi9nc3QvZmVzdGl2YWwvZ3N0ZmVzdGl2YWwuYwpAQCAtNzEsNyArNzEsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmU8L3RpdGxlPgogICogfFsKLSAqIGVjaG8gJ0hlbGxvIEctU3RyZWFtZXIhJyB8IGdzdC1sYXVuY2ggZmRzcmMgZmQ9MCAhIGZlc3RpdmFsICEgd2F2cGFyc2UgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luaworICogZWNobyAnSGVsbG8gRy1TdHJlYW1lciEnIHwgZ3N0LWxhdW5jaC0xLjAgZmRzcmMgZmQ9MCAhIGZlc3RpdmFsICEgd2F2cGFyc2UgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9maWVsZGFuYWx5c2lzL01ha2VmaWxlLmluIGIvZ3N0L2ZpZWxkYW5hbHlzaXMvTWFrZWZpbGUuaW4KaW5kZXggMGQyZjM1OS4uNjNiNDgwZSAxMDA2NDQKLS0tIGEvZ3N0L2ZpZWxkYW5hbHlzaXMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2ZpZWxkYW5hbHlzaXMvTWFrZWZpbGUuaW4KQEAgLTEzOCwxNiArMTM4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMzAzLDYgKzMwMiw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzQwLDYgKzM0MSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzQ4LDcgKzM1MSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM2Nyw4ICszNjksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzg1LDE2ICszODgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDIwLDYgKzQyNCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQ0NSw2ICs0NTEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01NDYsNiArNTU0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU1OSw4ICs1NjgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NzYsNiArNTgzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYzMywxNiArNjQyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjk0LDYgKzcwNSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC03MDQsNiArNzE2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzEzLDYgKzcyNiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NTAsNyArNzY1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZmllbGRhbmFseXNpcy9nc3RmaWVsZGFuYWx5c2lzLmMgYi9nc3QvZmllbGRhbmFseXNpcy9nc3RmaWVsZGFuYWx5c2lzLmMKaW5kZXggYjdmZmQ4Ny4uMjYwZWFmMyAxMDA2NDQKLS0tIGEvZ3N0L2ZpZWxkYW5hbHlzaXMvZ3N0ZmllbGRhbmFseXNpcy5jCisrKyBiL2dzdC9maWVsZGFuYWx5c2lzL2dzdGZpZWxkYW5hbHlzaXMuYwpAQCAtNTEsNyArNTEsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdXJpZGVjb2RlYmluIHVyaT0vcGF0aC90by9mb28uYmFyICEgZmllbGRhbmFseXNpcyAhIGRlaW50ZXJsYWNlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdXJpZGVjb2RlYmluIHVyaT0vcGF0aC90by9mb28uYmFyICEgZmllbGRhbmFseXNpcyAhIGRlaW50ZXJsYWNlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhpcyBwaXBlbGluZSB3aWxsIGFuYWx5c2UgYSB2aWRlbyBzdHJlYW0gd2l0aCBkZWZhdWx0IG1ldHJpY3MgYW5kIHRocmVzaG9sZHMgYW5kIG91dHB1dCBwcm9ncmVzc2l2ZSBmcmFtZXMuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZnJlZXZlcmIvTWFrZWZpbGUuaW4gYi9nc3QvZnJlZXZlcmIvTWFrZWZpbGUuaW4KaW5kZXggM2EwOTk3ZS4uNzFmYjQ4NCAxMDA2NDQKLS0tIGEvZ3N0L2ZyZWV2ZXJiL01ha2VmaWxlLmluCisrKyBiL2dzdC9mcmVldmVyYi9NYWtlZmlsZS5pbgpAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzcsNiArMjc2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTQsNiArMzE1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjIsNyArMzI1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQxLDggKzM0Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTksMTYgKzM2MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTQsNiArMzk4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE5LDYgKzQyNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMCw2ICs1MjgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMzLDggKzU0Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MCw2ICs1NTcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA3LDE2ICs2MTYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjgsNiArNjc5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OCw2ICs2OTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODcsNiArNzAwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNCw3ICs3MzksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9mcmVldmVyYi9nc3RmcmVldmVyYi5jIGIvZ3N0L2ZyZWV2ZXJiL2dzdGZyZWV2ZXJiLmMKaW5kZXggNGVlMzc3OS4uOTUwMDMzNCAxMDA2NDQKLS0tIGEvZ3N0L2ZyZWV2ZXJiL2dzdGZyZWV2ZXJiLmMKKysrIGIvZ3N0L2ZyZWV2ZXJiL2dzdGZyZWV2ZXJiLmMKQEAgLTM2LDggKzM2LDggQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGF1ZGlvdGVzdHNyYyB3YXZlPXNhdyAhIGZyZWV2ZXJiICEgYXV0b2F1ZGlvc2luawotICogZ3N0LWxhdW5jaCBmaWxlc3JjIGxvY2F0aW9uPSJtZWxvMS5vZ2ciICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgZnJlZXZlcmIgISBhdXRvYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBhdWRpb3Rlc3RzcmMgd2F2ZT1zYXcgISBmcmVldmVyYiAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249Im1lbG8xLm9nZyIgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBmcmVldmVyYiAhIGF1dG9hdWRpb3NpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZnJlaTByL01ha2VmaWxlLmluIGIvZ3N0L2ZyZWkwci9NYWtlZmlsZS5pbgppbmRleCBiODI5ZDE2Li5iN2VmOTM4IDEwMDY0NAotLS0gYS9nc3QvZnJlaTByL01ha2VmaWxlLmluCisrKyBiL2dzdC9mcmVpMHIvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZnJlaTByL2dzdGZyZWkwcm1peGVyLmMgYi9nc3QvZnJlaTByL2dzdGZyZWkwcm1peGVyLmMKaW5kZXggOGQ1ZjU5Yi4uZjJjODQ1MyAxMDA2NDQKLS0tIGEvZ3N0L2ZyZWkwci9nc3RmcmVpMHJtaXhlci5jCisrKyBiL2dzdC9mcmVpMHIvZ3N0ZnJlaTBybWl4ZXIuYwpAQCAtMjE2LDggKzIxNiwxMiBAQAogICAgICAgfQogICAgIH0KICAgfSBlbHNlIGlmICghZ3N0X2NhcHNfaXNfZXF1YWwgKGNhcHMsIHNlbGYtPmNhcHMpKSB7Ci0gICAgaWYgKGdzdF9wYWRfcGVlcl9xdWVyeV9hY2NlcHRfY2FwcyAocGFkLCBzZWxmLT5jYXBzKSkKKyAgICBHc3RDYXBzICp1cHN0cmVhbV9jYXBzOworCisgICAgdXBzdHJlYW1fY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChwYWQsIE5VTEwpOworICAgIGlmIChnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChzZWxmLT5jYXBzLCB1cHN0cmVhbV9jYXBzKSkKICAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAocGFkLCBnc3RfZXZlbnRfbmV3X3JlY29uZmlndXJlICgpKTsKKyAgICBnc3RfY2Fwc191bnJlZiAodXBzdHJlYW1fY2Fwcyk7CiAgICAgcmV0ID0gRkFMU0U7CiAgIH0KIApkaWZmIC0tZ2l0IGEvZ3N0L2dhdWRpZWZmZWN0cy9NYWtlZmlsZS5pbiBiL2dzdC9nYXVkaWVmZmVjdHMvTWFrZWZpbGUuaW4KaW5kZXggZjgxZGI5Yi4uYTRlZGJlYSAxMDA2NDQKLS0tIGEvZ3N0L2dhdWRpZWZmZWN0cy9NYWtlZmlsZS5pbgorKysgYi9nc3QvZ2F1ZGllZmZlY3RzL01ha2VmaWxlLmluCkBAIC0xMzgsMTYgKzEzOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTMwOSw2ICszMDgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTM0Niw2ICszNDcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM1NCw3ICszNTcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNzMsOCArMzc1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM5MSwxNiArMzk0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQyNiw2ICs0MzAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00NTEsNiArNDU3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTUyLDYgKzU2MCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NjUsOCArNTc0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTgyLDYgKzU4OSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MzksMTYgKzY0OCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTcwMCw2ICs3MTEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzEwLDYgKzcyMiw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcxOSw2ICs3MzIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzU2LDcgKzc3MSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3RidXJuLmMgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGJ1cm4uYwppbmRleCBjODJjOGFmLi5hM2EzYzU1IDEwMDY0NAotLS0gYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGJ1cm4uYworKysgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGJ1cm4uYwpAQCAtNTIsNyArNTIsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgYnVybiAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGJ1cm4gISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHNob3dzIHRoZSBlZmZlY3Qgb2YgYnVybiBvbiBhIHRlc3Qgc3RyZWFtCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGNocm9taXVtLmMgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGNocm9taXVtLmMKaW5kZXggOGRhY2EzYS4uMjY0YmI2NSAxMDA2NDQKLS0tIGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3RjaHJvbWl1bS5jCisrKyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0Y2hyb21pdW0uYwpAQCAtNTIsNyArNTIsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgY2hyb21pdW0gISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBjaHJvbWl1bSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgc2hvd3MgdGhlIGVmZmVjdCBvZiBjaHJvbWl1bSBvbiBhIHRlc3Qgc3RyZWFtCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGRpbGF0ZS5jIGIvZ3N0L2dhdWRpZWZmZWN0cy9nc3RkaWxhdGUuYwppbmRleCA5OGZhMDUzLi44M2EzNTEzIDEwMDY0NAotLS0gYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdGRpbGF0ZS5jCisrKyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0ZGlsYXRlLmMKQEAgLTUyLDcgKzUyLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIGRpbGF0ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGRpbGF0ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgc2hvd3MgdGhlIGVmZmVjdCBvZiBkaWxhdGUgb24gYSB0ZXN0IHN0cmVhbQogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3Rkb2RnZS5jIGIvZ3N0L2dhdWRpZWZmZWN0cy9nc3Rkb2RnZS5jCmluZGV4IDhjZjhjNmUuLjk5NmQ4OTQgMTAwNjQ0Ci0tLSBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0ZG9kZ2UuYworKysgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGRvZGdlLmMKQEAgLTUyLDcgKzUyLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIGRvZGdlICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgZG9kZ2UgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHNob3dzIHRoZSBlZmZlY3Qgb2YgZG9kZ2Ugb24gYSB0ZXN0IHN0cmVhbQogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3RleGNsdXNpb24uYyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0ZXhjbHVzaW9uLmMKaW5kZXggODYwYzViNC4uYTcyM2Y2OSAxMDA2NDQKLS0tIGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3RleGNsdXNpb24uYworKysgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGV4Y2x1c2lvbi5jCkBAIC01Miw3ICs1Miw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgISBleGNsdXNpb24gISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBleGNsdXNpb24gISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIHNob3dzIHRoZSBlZmZlY3Qgb2YgZXhjbHVzaW9uIG9uIGEgdGVzdCBzdHJlYW0KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0Z2F1c3NibHVyLmMgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdGdhdXNzYmx1ci5jCmluZGV4IGJiZjIyYjYuLjZiYTliODQgMTAwNjQ0Ci0tLSBhL2dzdC9nYXVkaWVmZmVjdHMvZ3N0Z2F1c3NibHVyLmMKKysrIGIvZ3N0L2dhdWRpZWZmZWN0cy9nc3RnYXVzc2JsdXIuYwpAQCAtNTMsNyArNTMsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgZ2F1c3NpYW5ibHVyICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgZ2F1c3NpYW5ibHVyICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhpcyBwaXBlbGluZSBzaG93cyB0aGUgZWZmZWN0IG9mIGdhdXNzaWFuYmx1ciBvbiBhIHRlc3Qgc3RyZWFtCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZ2F1ZGllZmZlY3RzL2dzdHNvbGFyaXplLmMgYi9nc3QvZ2F1ZGllZmZlY3RzL2dzdHNvbGFyaXplLmMKaW5kZXggYTQ1ZmViMi4uZjVkOThiOCAxMDA2NDQKLS0tIGEvZ3N0L2dhdWRpZWZmZWN0cy9nc3Rzb2xhcml6ZS5jCisrKyBiL2dzdC9nYXVkaWVmZmVjdHMvZ3N0c29sYXJpemUuYwpAQCAtNTIsNyArNTIsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjICEgc29sYXJpemUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBzb2xhcml6ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18IFRoaXMgcGlwZWxpbmUgc2hvd3MgdGhlIGVmZmVjdCBvZiBzb2xhcml6ZSBvbiBhIHRlc3Qgc3RyZWFtCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvZ2RwL01ha2VmaWxlLmluIGIvZ3N0L2dkcC9NYWtlZmlsZS5pbgppbmRleCBhMzg5ZjkxLi43MjU1MzFmIDEwMDY0NAotLS0gYS9nc3QvZ2RwL01ha2VmaWxlLmluCisrKyBiL2dzdC9nZHAvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvZ2RwL1JFQURNRSBiL2dzdC9nZHAvUkVBRE1FCmluZGV4IDZiODRhZmMuLjEwNTY3MDMgMTAwNjQ0Ci0tLSBhL2dzdC9nZHAvUkVBRE1FCisrKyBiL2dzdC9nZHAvUkVBRE1FCkBAIC0yLDIxICsyLDIxIEBACiAtIHJlcGxhY2luZyB0Y3BzZXJ2ZXJzaW5rIHByb3RvY29sPWdkcCB3aXRoIGdkcHBheSAhIHRjcHNlcnZlcnNpbms6CiAgIC0gcmF3IGF1ZGlvOgogICAgIC0gc2VydmVyOgotICAgICAgZ3N0LWxhdW5jaCAtdiBhdWRpb3Rlc3RzcmMgISBnZHBwYXkgdmVyc2lvbj0wLjIgISB0Y3BzZXJ2ZXJzaW5rCisgICAgICBnc3QtbGF1bmNoLTEuMCAtdiBhdWRpb3Rlc3RzcmMgISBnZHBwYXkgdmVyc2lvbj0wLjIgISB0Y3BzZXJ2ZXJzaW5rCiAgICAgLSBjbGllbnQ6Ci0gICAgICBnc3QtbGF1bmNoIC12IHRjcGNsaWVudHNyYyBwcm90b2NvbD1nZHAgISBhbHNhc2luayBzeW5jPUZBTFNFCisgICAgICBnc3QtbGF1bmNoLTEuMCAtdiB0Y3BjbGllbnRzcmMgcHJvdG9jb2w9Z2RwICEgYWxzYXNpbmsgc3luYz1GQUxTRQogCiAgIC0gdm9yYmlzIHBhY2tldHM6CiAgICAgLSBzZXJ2ZXI6Ci0gICAgICBnc3QtbGF1bmNoIC12IGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHZvcmJpc2VuYyAhIGdkcHBheSB2ZXJzaW9uPTAuMiAhIHRjcHNlcnZlcnNpbmsKKyAgICAgIGdzdC1sYXVuY2gtMS4wIC12IGF1ZGlvdGVzdHNyYyAhIGF1ZGlvY29udmVydCAhIHZvcmJpc2VuYyAhIGdkcHBheSB2ZXJzaW9uPTAuMiAhIHRjcHNlcnZlcnNpbmsKICAgICAtIGNsaWVudDoKLSAgICAgIGdzdC1sYXVuY2ggLXYgdGNwY2xpZW50c3JjIHByb3RvY29sPWdkcCAhIHZvcmJpc2RlYyAhIGF1ZGlvY29udmVydCAhIGFsc2FzaW5rIHN5bmM9RkFMU0UKKyAgICAgIGdzdC1sYXVuY2gtMS4wIC12IHRjcGNsaWVudHNyYyBwcm90b2NvbD1nZHAgISB2b3JiaXNkZWMgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luayBzeW5jPUZBTFNFCiAKICAgLSBvZ2cgcGFja2V0czoKICAgICAtIHNlcnZlcjoKLSAgICAgIGdzdC1sYXVuY2ggLXYgYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgZ2RwcGF5IHZlcnNpb249MC4yICEgdGNwc2VydmVyc2luaworICAgICAgZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgZ2RwcGF5IHZlcnNpb249MC4yICEgdGNwc2VydmVyc2luawogICAgIC0gY2xpZW50OgotICAgICAgZ3N0LWxhdW5jaCAtdiB0Y3BjbGllbnRzcmMgcHJvdG9jb2w9Z2RwICEgb2dnZGVtdXggISB2b3JiaXNkZWMgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luayBzeW5jPUZBTFNFCisgICAgICBnc3QtbGF1bmNoLTEuMCAtdiB0Y3BjbGllbnRzcmMgcHJvdG9jb2w9Z2RwICEgb2dnZGVtdXggISB2b3JiaXNkZWMgISBhdWRpb2NvbnZlcnQgISBhbHNhc2luayBzeW5jPUZBTFNFCiAKICAgSW4gYWxsIHRoZSBjbGllbnQgcGlwZWxpbmVzLCB0Y3BjbGllbnRzcmMgcHJvdG9jb2w9Z2RwIGNhbiBiZSByZXBsYWNlZCB3aXRoCiAgIHRjcGNsaWVudHNyYyAhIGdkcGRlcGF5CmRpZmYgLS1naXQgYS9nc3QvZ2RwL2dzdGdkcGRlcGF5LmMgYi9nc3QvZ2RwL2dzdGdkcGRlcGF5LmMKaW5kZXggZmFhMzY0Mi4uYjc3OWE4NSAxMDA2NDQKLS0tIGEvZ3N0L2dkcC9nc3RnZHBkZXBheS5jCisrKyBiL2dzdC9nZHAvZ3N0Z2RwZGVwYXkuYwpAQCAtMjYsNyArMjYsNyBAQAogICoKICAqIDxyZWZzZWN0Mj4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIGZpbGVzcmMgbG9jYXRpb249dGVzdC5nZHAgISBnZHBkZXBheSAhIHh2aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiAtbSBmaWxlc3JjIGxvY2F0aW9uPXRlc3QuZ2RwICEgZ2RwZGVwYXkgISB4dmltYWdlc2luawogICogXXwgVGhpcyBwaXBlbGluZSBwbGF5cyBiYWNrIGEgc2VyaWFsaXplZCB2aWRlbyBzdHJlYW0gYXMgY3JlYXRlZCBpbiB0aGUKICAqIGV4YW1wbGUgZm9yIGdkcHBheS4KICAqIDwvcmVmc2VjdDI+CkBAIC00NSw2ICs0NSw3IEBACiBlbnVtCiB7CiAgIFBST1BfMCwKKyAgUFJPUF9UU19PRkZTRVQKIH07CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnZHBfZGVwYXlfc2lua190ZW1wbGF0ZSA9CkBAIC04MSw2ICs4MiwxMCBAQAogICAgIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOwogCiBzdGF0aWMgdm9pZCBnc3RfZ2RwX2RlcGF5X2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyB2b2lkIGdzdF9nZHBfZGVwYXlfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X2dkcF9kZXBheV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKIHN0YXRpYyB2b2lkCiBnc3RfZ2RwX2RlcGF5X2NsYXNzX2luaXQgKEdzdEdEUERlcGF5Q2xhc3MgKiBrbGFzcykKQEAgLTkxLDYgKzk2LDE1IEBACiAgIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwogICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKIAorICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfZ2RwX2RlcGF5X3NldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X2dkcF9kZXBheV9nZXRfcHJvcGVydHk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9UU19PRkZTRVQsCisgICAgICBnX3BhcmFtX3NwZWNfaW50NjQgKCJ0cy1vZmZzZXQiLCAiVGltZXN0YW1wIE9mZnNldCIsCisgICAgICAgICAgIlRpbWVzdGFtcCBPZmZzZXQiLAorICAgICAgICAgIEdfTUlOSU5UNjQsIEdfTUFYSU5UNjQsIDAsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywKICAgICAgICJHRFAgRGVwYXlsb2FkZXIiLCAiR0RQL0RlcGF5bG9hZGVyIiwKICAgICAgICJEZXBheWxvYWRzIEdTdHJlYW1lciBEYXRhIFByb3RvY29sIGJ1ZmZlcnMiLApAQCAtMTQzLDYgKzE1Nyw0MiBAQAogICBHU1RfQ0FMTF9QQVJFTlQgKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKGdvYmplY3QpKTsKIH0KIAorc3RhdGljIHZvaWQKK2dzdF9nZHBfZGVwYXlfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdEdEUERlcGF5ICp0aGlzOworCisgIHRoaXMgPSBHU1RfR0RQX0RFUEFZIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9UU19PRkZTRVQ6CisgICAgICB0aGlzLT50c19vZmZzZXQgPSBnX3ZhbHVlX2dldF9pbnQ2NCAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2dkcF9kZXBheV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0R0RQRGVwYXkgKnRoaXM7CisKKyAgdGhpcyA9IEdTVF9HRFBfREVQQVkgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX1RTX09GRlNFVDoKKyAgICAgIGdfdmFsdWVfc2V0X2ludDY0ICh2YWx1ZSwgdGhpcy0+dHNfb2Zmc2V0KTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfZ2RwX2RlcGF5X3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQogewpAQCAtMzE3LDYgKzM2NywxNiBAQAogICAgICAgICAgIGdzdF9hZGFwdGVyX2ZsdXNoICh0aGlzLT5hZGFwdGVyLCB0aGlzLT5wYXlsb2FkX2xlbmd0aCk7CiAgICAgICAgIH0KIAorICAgICAgICBpZiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPiAtdGhpcy0+dHNfb2Zmc2V0KQorICAgICAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpICs9IHRoaXMtPnRzX29mZnNldDsKKyAgICAgICAgZWxzZQorICAgICAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpID0gMDsKKworICAgICAgICBpZiAoR1NUX0JVRkZFUl9EVFMgKGJ1ZikgPiAtdGhpcy0+dHNfb2Zmc2V0KQorICAgICAgICAgIEdTVF9CVUZGRVJfRFRTIChidWYpICs9IHRoaXMtPnRzX29mZnNldDsKKyAgICAgICAgZWxzZQorICAgICAgICAgIEdTVF9CVUZGRVJfRFRTIChidWYpID0gMDsKKwogICAgICAgICAvKiBzZXQgY2FwcyBhbmQgcHVzaCAqLwogICAgICAgICBHU1RfTE9HX09CSkVDVCAodGhpcywgImRlc2VyaWFsaXplZCBidWZmZXIgJXAsIHB1c2hpbmcsIHRpbWVzdGFtcCAlIgogICAgICAgICAgICAgR1NUX1RJTUVfRk9STUFUICIsIGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVApkaWZmIC0tZ2l0IGEvZ3N0L2dkcC9nc3RnZHBkZXBheS5oIGIvZ3N0L2dkcC9nc3RnZHBkZXBheS5oCmluZGV4IGNhMjJjMDguLjQzYmJmOWQgMTAwNjQ0Ci0tLSBhL2dzdC9nZHAvZ3N0Z2RwZGVwYXkuaAorKysgYi9nc3QvZ2RwL2dzdGdkcGRlcGF5LmgKQEAgLTY2LDYgKzY2LDggQEAKICAgZ3VpbnQ4ICpoZWFkZXI7CiAgIGd1aW50MzIgcGF5bG9hZF9sZW5ndGg7CiAgIEdzdERQUGF5bG9hZFR5cGUgcGF5bG9hZF90eXBlOworCisgIGdpbnQ2NCB0c19vZmZzZXQ7CiB9OwogCiBzdHJ1Y3QgX0dzdEdEUERlcGF5Q2xhc3MKZGlmZiAtLWdpdCBhL2dzdC9nZHAvZ3N0Z2RwcGF5LmMgYi9nc3QvZ2RwL2dzdGdkcHBheS5jCmluZGV4IDMzYWM1OTEuLmI0Mjg0NjIgMTAwNjQ0Ci0tLSBhL2dzdC9nZHAvZ3N0Z2RwcGF5LmMKKysrIGIvZ3N0L2dkcC9nc3RnZHBwYXkuYwpAQCAtMjcsNyArMjcsNyBAQAogICoKICAqIDxyZWZzZWN0Mj4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz01MCAhIGdkcHBheSAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QuZ2RwCisgKiBnc3QtbGF1bmNoLTEuMCAtdiAtbSB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9NTAgISBnZHBwYXkgISBmaWxlc2luayBsb2NhdGlvbj10ZXN0LmdkcAogICogXXwgVGhpcyBwaXBlbGluZSBjcmVhdGVzIGEgc2VyaWFsaXplZCB2aWRlbyBzdHJlYW0gdGhhdCBjYW4gYmUgcGxheWVkIGJhY2sKICAqIHdpdGggdGhlIGV4YW1wbGUgc2hvd24gaW4gZ2RwZGVwYXkuCiAgKiA8L3JlZnNlY3QyPgpAQCAtNTc3LDYgKzU3Nyw4IEBACiAgICAgZmxvd3JldCA9IGdzdF9nZHBfcXVldWVfYnVmZmVyICh0aGlzLCBvdXRidWZmZXIpOwogICAgIGlmIChmbG93cmV0ICE9IEdTVF9GTE9XX09LKQogICAgICAgZ290byBwdXNoX2Vycm9yOworICB9IGVsc2UgeworICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1ZmZlcik7CiAgIH0KIAogZG9uZToKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vTWFrZWZpbGUuaW4gYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL01ha2VmaWxlLmluCmluZGV4IDRiZTg4NjcuLjk2MWUwMzcgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yOTcsNiArMjk2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMzQsNiArMzM1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNDIsNyArMzQ1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzYxLDggKzM2Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzksMTYgKzM4MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MTQsNiArNDE4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDM5LDYgKzQ0NSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU0MCw2ICs1NDgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTUzLDggKzU2Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU3MCw2ICs1NzcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjI3LDE2ICs2MzYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02ODgsNiArNjk5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY5OCw2ICs3MTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MDcsNiArNzIwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc0NCw3ICs3NTksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ2VvbWV0cmljbWF0aC5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nZW9tZXRyaWNtYXRoLmMKaW5kZXggMWNhNWE3OC4uNmM3OTQ5ZSAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nZW9tZXRyaWNtYXRoLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nZW9tZXRyaWNtYXRoLmMKQEAgLTU0LDcgKzU0LDcgQEAKICNkZWZpbmUgQiAgMHgxMDAKICNkZWZpbmUgQk0gMHhmZgogCi1zdHJ1Y3QgX05vaXNlCitzdHJ1Y3QgX0dzdEdNTm9pc2UKIHsKICAgZ2RvdWJsZSBwWzIgKiBCICsgMl07CiAgIGdkb3VibGUgZzJbMiAqIEIgKyAyXVsyXTsKQEAgLTY5LDEwICs2OSwxMCBAQAogICB2WzFdID0gdlsxXSAvIHM7CiB9CiAKLU5vaXNlICoKLW5vaXNlX25ldyAodm9pZCkKK0dzdEdNTm9pc2UgKgorZ3N0X2dtX25vaXNlX25ldyAodm9pZCkKIHsKLSAgTm9pc2UgKm5vaXNlID0gZ19uZXcwIChOb2lzZSwgMSk7CisgIEdzdEdNTm9pc2UgKm5vaXNlID0gZ19uZXcwIChHc3RHTU5vaXNlLCAxKTsKICAgZ2ludCBpLCBqLCBrOwogCiAgIGZvciAoaSA9IDA7IGkgPCBCOyBpKyspIHsKQEAgLTEwMiw3ICsxMDIsNyBAQAogfQogCiB2b2lkCi1ub2lzZV9mcmVlIChOb2lzZSAqIG5vaXNlKQorZ3N0X2dtX25vaXNlX2ZyZWUgKEdzdEdNTm9pc2UgKiBub2lzZSkKIHsKICAgZ19mcmVlIChub2lzZSk7CiB9CkBAIC0xMjAsNyArMTIwLDcgQEAKIH0KIAogZ2RvdWJsZQotbm9pc2VfMiAoTm9pc2UgKiBub2lzZSwgZ2RvdWJsZSB4LCBnZG91YmxlIHkpCitnc3RfZ21fbm9pc2VfMiAoR3N0R01Ob2lzZSAqIG5vaXNlLCBnZG91YmxlIHgsIGdkb3VibGUgeSkKIHsKICAgZ2ludCBieDAsIGJ4MSwgYnkwLCBieTEsIGIwMCwgYjEwLCBiMDEsIGIxMTsKICAgZ2RvdWJsZSByeDAsIHJ4MSwgcnkwLCByeTEsIHN4LCBzeSwgYSwgYiwgdCwgdSwgdjsKQEAgLTE2OSw3ICsxNjksNyBAQAogICogVGhpcyBkaWZmZXJzIGZyb20gdGhlICUgb3BlcmF0b3Igd2l0aCByZXNwZWN0IHRvIG5lZ2F0aXZlIG51bWJlcnMKICAqLwogZ2RvdWJsZQotbW9kX2Zsb2F0IChnZG91YmxlIGEsIGdkb3VibGUgYikKK2dzdF9nbV9tb2RfZmxvYXQgKGdkb3VibGUgYSwgZ2RvdWJsZSBiKQogewogICBnaW50IG4gPSAoZ2ludCkgKGEgLyBiKTsKIApAQCAtMTgzLDkgKzE4Myw5IEBACiAgKiBSZXR1cm5zIGEgcmVwZWF0aW5nIHRyaWFuZ2xlIHNoYXBlIGluIHRoZSByYW5nZSAwLi4xIHdpdGggd2F2ZWxlbmd0aCAxLjAKICAqLwogZ2RvdWJsZQotZ2VvbWV0cmljX21hdGhfdHJpYW5nbGUgKGdkb3VibGUgeCkKK2dzdF9nbV90cmlhbmdsZSAoZ2RvdWJsZSB4KQogewotICBnZG91YmxlIHIgPSBtb2RfZmxvYXQgKHgsIDEuMCk7CisgIGdkb3VibGUgciA9IGdzdF9nbV9tb2RfZmxvYXQgKHgsIDEuMCk7CiAKICAgcmV0dXJuIDIuMCAqIChyIDwgMC41ID8gciA6IDEgLSByKTsKIH0KQEAgLTE5NCw3ICsxOTQsNyBAQAogICogSGVybWl0ZSBpbnRlcnBvbGF0aW9uCiAgKi8KIGdkb3VibGUKLXNtb290aHN0ZXAgKGdkb3VibGUgZWRnZTAsIGdkb3VibGUgZWRnZTEsIGdkb3VibGUgeCkKK2dzdF9nbV9zbW9vdGhzdGVwIChnZG91YmxlIGVkZ2UwLCBnZG91YmxlIGVkZ2UxLCBnZG91YmxlIHgpCiB7CiAgIGdkb3VibGUgdCA9IENMQU1QICgoeCAtIGVkZ2UwKSAvIChlZGdlMSAtIGVkZ2UwKSwgMC4wLCAxLjApOwogICByZXR1cm4gdCAqIHQgKiAoMy4wIC0gMi4wICogdCk7CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dlb21ldHJpY21hdGguaCBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ2VvbWV0cmljbWF0aC5oCmluZGV4IDBjNmNjZGMuLjQwNDUxZDggMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ2VvbWV0cmljbWF0aC5oCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ2VvbWV0cmljbWF0aC5oCkBAIC01NCwxNiArNTQsMTYgQEAKIAogR19CRUdJTl9ERUNMUwogCi10eXBlZGVmIHN0cnVjdCBfTm9pc2UgTm9pc2U7Cit0eXBlZGVmIHN0cnVjdCBfR3N0R01Ob2lzZSBHc3RHTU5vaXNlOwogCi1Ob2lzZSAqIG5vaXNlX25ldyAodm9pZCk7Ci12b2lkIG5vaXNlX2ZyZWUgKE5vaXNlICogbm9pc2UpOwotZ2RvdWJsZSBub2lzZV8yIChOb2lzZSAqIG5vaXNlLCBnZG91YmxlIHgsIGdkb3VibGUgeSk7CitHc3RHTU5vaXNlICogZ3N0X2dtX25vaXNlX25ldyAodm9pZCk7Cit2b2lkIGdzdF9nbV9ub2lzZV9mcmVlIChHc3RHTU5vaXNlICogbm9pc2UpOworZ2RvdWJsZSBnc3RfZ21fbm9pc2VfMiAoR3N0R01Ob2lzZSAqIG5vaXNlLCBnZG91YmxlIHgsIGdkb3VibGUgeSk7CiAKLWdkb3VibGUgbW9kX2Zsb2F0IChnZG91YmxlIGEsIGdkb3VibGUgYik7Ci1nZG91YmxlIGdlb21ldHJpY19tYXRoX3RyaWFuZ2xlIChnZG91YmxlIHgpOworZ2RvdWJsZSBnc3RfZ21fbW9kX2Zsb2F0IChnZG91YmxlIGEsIGdkb3VibGUgYik7CitnZG91YmxlIGdzdF9nbV90cmlhbmdsZSAoZ2RvdWJsZSB4KTsKIAotZ2RvdWJsZSBzbW9vdGhzdGVwIChnZG91YmxlIGVkZ2UwLCBnZG91YmxlIGVkZ2UxLCBnZG91YmxlIHgpOworZ2RvdWJsZSBnc3RfZ21fc21vb3Roc3RlcCAoZ2RvdWJsZSBlZGdlMCwgZ2RvdWJsZSBlZGdlMSwgZ2RvdWJsZSB4KTsKIAogR19FTkRfREVDTFMKIApkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RidWxnZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RidWxnZS5jCmluZGV4IDU4NjRjODMuLjk4YTc4NDkgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0YnVsZ2UuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGJ1bGdlLmMKQEAgLTQxLDYgKzQxLDIxIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1idWxnZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBCdWdsZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgYWRkcyBhIHByb3R1YmVyYW5jZSBpbiB0aGUKKyAqIGNlbnRlciBwb2ludC4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgYnVsZ2UgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKQEAgLTE0MCw4ICsxNTUsOCBAQAogICAgKiB6b29tIGlzIGFjaGlldmVkIGRpdmlkaW5nICovCiAKICAgc2NhbGUgPQotICAgICAgMS4wIC8gKGJ1bGdlLT56b29tICsgKCgxLjAgLSBidWxnZS0+em9vbSkgKiBzbW9vdGhzdGVwICgwLCBjZ3QtPnJhZGl1cywKLSAgICAgICAgICAgICAgcikpKTsKKyAgICAgIDEuMCAvIChidWxnZS0+em9vbSArICgoMS4wIC0gYnVsZ2UtPnpvb20pICogZ3N0X2dtX3Ntb290aHN0ZXAgKDAsCisgICAgICAgICAgICAgIGNndC0+cmFkaXVzLCByKSkpOwogCiAgIG5vcm1feCAqPSBzY2FsZTsKICAgbm9ybV95ICo9IHNjYWxlOwpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RjaXJjbGUuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0Y2lyY2xlLmMKaW5kZXggY2JiZDQxNS4uZGE0ZjQ4YiAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RjaXJjbGUuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGNpcmNsZS5jCkBAIC00Nyw2ICs0NywyMCBAQAogICogaGlzIGNvZGUuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtY2lyY2xlCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIENpcmNsZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgd2FycHMgdGhlIHBpY3R1cmUgaW50byBhbgorICogYXJjIHNoYXBlZCBmb3JtLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBjaXJjbGUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CkBAIC0xNTgsNyArMTcyLDcgQEAKICAgZGlzdGFuY2UgPSBzcXJ0IChkeCAqIGR4ICsgZHkgKiBkeSk7CiAgIHRoZXRhID0gYXRhbjIgKC1keSwgLWR4KSArIGNpcmNsZS0+YW5nbGU7CiAKLSAgdGhldGEgPSBtb2RfZmxvYXQgKHRoZXRhLCAyICogR19QSSk7CisgIHRoZXRhID0gZ3N0X2dtX21vZF9mbG9hdCAodGhldGEsIDIgKiBHX1BJKTsKIAogICAqaW5feCA9IGd0LT53aWR0aCAqIHRoZXRhIC8gKGNpcmNsZS0+c3ByZWFkX2FuZ2xlICsgMC4wMDAxKTsKICAgKmluX3kgPQpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RkaWZmdXNlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGRpZmZ1c2UuYwppbmRleCA5NzIyNWMxLi4wMzAwOWM3IDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGRpZmZ1c2UuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGRpZmZ1c2UuYwpAQCAtNDcsNiArNDcsMjAgQEAKICAqIGhpcyBjb2RlLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LWRpZmZ1c2UKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogRGlmZnVzZSBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgZGlmZnVzZXMgdGhlIGltYWdlIGJ5CisgKiBtb3ZpbmcgaXRzIHBpeGVscyBpbiByYW5kb20gZGlyZWN0aW9ucy4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgZGlmZnVzZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0ZmlzaGV5ZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RmaXNoZXllLmMKaW5kZXggMGQ5ZjJiOS4uZDA4MDY5YyAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RmaXNoZXllLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RmaXNoZXllLmMKQEAgLTQxLDYgKzQxLDIxIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1maXNoZXllCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIEZpc2hleWUgaXMgYSBnZW9tZXRyaWMgaW1hZ2UgdHJhbnNmb3JtIGVsZW1lbnQuIEl0IHNpbXVsYXRlcyBhIGZpc2hleWUgbGVucworICogYnkgem9vbWluZyBvbiB0aGUgY2VudGVyIG9mIHRoZSBpbWFnZSBhbmQgY29tcHJlc3NpbmcgdGhlIGVkZ2VzLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBmaXNoZXllICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGdlb21ldHJpY3RyYW5zZm9ybS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RnZW9tZXRyaWN0cmFuc2Zvcm0uYwppbmRleCA3Y2ZhYWZkLi45NDkxMGVkIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGdlb21ldHJpY3RyYW5zZm9ybS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0Z2VvbWV0cmljdHJhbnNmb3JtLmMKQEAgLTE4MSw4ICsxODEsOCBAQAogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIEdTVF9HVF9PRkZfRURHRVNfUElYRUxTX1dSQVA6Ci0gICAgICBpbl94ID0gbW9kX2Zsb2F0IChpbl94LCBndC0+d2lkdGgpOwotICAgICAgaW5feSA9IG1vZF9mbG9hdCAoaW5feSwgZ3QtPmhlaWdodCk7CisgICAgICBpbl94ID0gZ3N0X2dtX21vZF9mbG9hdCAoaW5feCwgZ3QtPndpZHRoKTsKKyAgICAgIGluX3kgPSBnc3RfZ21fbW9kX2Zsb2F0IChpbl95LCBndC0+aGVpZ2h0KTsKICAgICAgIGlmIChpbl94IDwgMCkKICAgICAgICAgaW5feCArPSBndC0+d2lkdGg7CiAgICAgICBpZiAoaW5feSA8IDApCmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGthbGVpZG9zY29wZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RrYWxlaWRvc2NvcGUuYwppbmRleCA5Y2FmN2Y0Li5iYjFiZGZjIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdGthbGVpZG9zY29wZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0a2FsZWlkb3Njb3BlLmMKQEAgLTQ3LDYgKzQ3LDIwIEBACiAgKiBoaXMgY29kZS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1rYWxlaWRvc2NvcGUKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogVGhlIGthbGVpZHNjb3BlIGVsZW1lbnQgYXBwbGllcyAna2FsZWlkb3Njb3BlJyBnZW9tZXRyaWMgdHJhbnNmb3JtIHRvIHRoZQorICogaW1hZ2UuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIGthbGVpZG9zY29wZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KQEAgLTE1OCwxMiArMTcyLDEyIEBACiAgIGRpc3RhbmNlID0gc3FydCAoZHggKiBkeCArIGR5ICogZHkpOwogICB0aGV0YSA9IGF0YW4yIChkeSwgZHgpIC0ga2FsZWlkb3Njb3BlLT5hbmdsZSAtIGthbGVpZG9zY29wZS0+YW5nbGUyOwogCi0gIHRoZXRhID0gZ2VvbWV0cmljX21hdGhfdHJpYW5nbGUgKHRoZXRhIC8gR19QSSAqIGthbGVpZG9zY29wZS0+c2lkZXMgKiAwLjUpOworICB0aGV0YSA9IGdzdF9nbV90cmlhbmdsZSAodGhldGEgLyBHX1BJICoga2FsZWlkb3Njb3BlLT5zaWRlcyAqIDAuNSk7CiAKICAgaWYgKGNndC0+cHJlY2FsY19yYWRpdXMgIT0gMCkgewogICAgIGdkb3VibGUgcmFkaXVzYyA9IGNndC0+cHJlY2FsY19yYWRpdXMgLyBjb3MgKHRoZXRhKTsKIAotICAgIGRpc3RhbmNlID0gcmFkaXVzYyAqIGdlb21ldHJpY19tYXRoX3RyaWFuZ2xlIChkaXN0YW5jZSAvIHJhZGl1c2MpOworICAgIGRpc3RhbmNlID0gcmFkaXVzYyAqIGdzdF9nbV90cmlhbmdsZSAoZGlzdGFuY2UgLyByYWRpdXNjKTsKICAgfQogICB0aGV0YSArPSBrYWxlaWRvc2NvcGUtPmFuZ2xlOwogCmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdG1hcmJsZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuYwppbmRleCAwOGJiZDNjLi42ODk4NDUzIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdG1hcmJsZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmMKQEAgLTQ3LDYgKzQ3LDIwIEBACiAgKiBoaXMgY29kZS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1tYXJibGUKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogTWFyYmxlIGlzIGEgZ2VvbWV0cmljIGltYWdlIHRyYW5zZm9ybSBlbGVtZW50LiBJdCBhcHBsaWVzIGEgbWFyYmxpbmcgZWZmZWN0CisgKiB0byB0aGUgaW1hZ2UuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIG1hcmJsZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KQEAgLTE1OCw3ICsxNzIsNyBAQAogewogICBHc3RNYXJibGUgKm1hcmJsZSA9IEdTVF9NQVJCTEVfQ0FTVCAob2JqKTsKIAotICBub2lzZV9mcmVlIChtYXJibGUtPm5vaXNlKTsKKyAgZ3N0X2dtX25vaXNlX2ZyZWUgKG1hcmJsZS0+bm9pc2UpOwogICBnX2ZyZWUgKG1hcmJsZS0+c2luX3RhYmxlKTsKICAgZ19mcmVlIChtYXJibGUtPmNvc190YWJsZSk7CiAKQEAgLTE3Miw3ICsxODYsNyBAQAogICBnaW50IGk7CiAKICAgaWYgKCFtYXJibGUtPm5vaXNlKSB7Ci0gICAgbWFyYmxlLT5ub2lzZSA9IG5vaXNlX25ldyAoKTsKKyAgICBtYXJibGUtPm5vaXNlID0gZ3N0X2dtX25vaXNlX25ldyAoKTsKICAgfQogCiAgIGdfZnJlZSAobWFyYmxlLT5zaW5fdGFibGUpOwpAQCAtMTk3LDcgKzIxMSw3IEBACiAgIEdzdE1hcmJsZSAqbWFyYmxlID0gR1NUX01BUkJMRV9DQVNUIChndCk7CiAgIGdpbnQgZGlzcGxhY2VtZW50OwogCi0gIGRpc3BsYWNlbWVudCA9IDEyNyAqICgxICsgbm9pc2VfMiAobWFyYmxlLT5ub2lzZSwgeCAvIG1hcmJsZS0+eHNjYWxlLAorICBkaXNwbGFjZW1lbnQgPSAxMjcgKiAoMSArIGdzdF9nbV9ub2lzZV8yIChtYXJibGUtPm5vaXNlLCB4IC8gbWFyYmxlLT54c2NhbGUsCiAgICAgICAgICAgeSAvIG1hcmJsZS0+eHNjYWxlKSk7CiAgIGRpc3BsYWNlbWVudCA9IENMQU1QIChkaXNwbGFjZW1lbnQsIDAsIDI1NSk7CiAKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmggYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdG1hcmJsZS5oCmluZGV4IGI3NDc2OGYuLjI2NjU3NzUgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWFyYmxlLmgKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtYXJibGUuaApAQCAtNzYsNyArNzYsNyBAQAogICBnZG91YmxlIHR1cmJ1bGVuY2U7CiAgIGdkb3VibGUgYW1vdW50OwogCi0gIE5vaXNlICpub2lzZTsKKyAgR3N0R01Ob2lzZSAqbm9pc2U7CiAgIGdkb3VibGUgKnNpbl90YWJsZTsKICAgZ2RvdWJsZSAqY29zX3RhYmxlOwogfTsKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWlycm9yLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdG1pcnJvci5jCmluZGV4IGRiOGFmYmYuLmRmMTgyMzQgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0bWlycm9yLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RtaXJyb3IuYwpAQCAtNDEsNiArNDEsMjEgQEAKICAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LW1pcnJvcgorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBNaXJyb3IgaXMgYSBnZW9tZXRyaWMgdHJhbnNmb3JtIGVsZW1lbnQuIEl0IHNwbGl0cyB0aGUgaW1hZ2UgaW50byB0d28gaGFsdmVzCisgKiBhbmQgcmVmbGVjdHMgb25lIG92ZXIgZWFjaCBvdGhlci4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgbWlycm9yICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCkBAIC05NywyMyArMTEyLDIzIEBACiAKICAgc3dpdGNoIChwcm9wX2lkKSB7CiAgICAgY2FzZSBQUk9QX01PREU6Ci0gICAgICB7Ci0gICAgICAgIGdpbnQgbW9kZTsKKyAgICB7CisgICAgICBnaW50IG1vZGU7CiAKLSAgICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXIpOwotICAgICAgICBtb2RlID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworICAgICAgR1NUX09CSkVDVF9MT0NLIChmaWx0ZXIpOworICAgICAgbW9kZSA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKIAotICAgICAgICBpZiAobW9kZSAhPSBmaWx0ZXItPm1vZGUpIHsKLSAgICAgICAgICBHc3RHZW9tZXRyaWNUcmFuc2Zvcm0gKmd0OworICAgICAgaWYgKG1vZGUgIT0gZmlsdGVyLT5tb2RlKSB7CisgICAgICAgIEdzdEdlb21ldHJpY1RyYW5zZm9ybSAqZ3Q7CiAKLSAgICAgICAgICBndCA9IEdTVF9HRU9NRVRSSUNfVFJBTlNGT1JNX0NBU1QgKG9iamVjdCk7Ci0gICAgICAgICAgZmlsdGVyLT5tb2RlID0gbW9kZTsKLSAgICAgICAgICBnc3RfZ2VvbWV0cmljX3RyYW5zZm9ybV9zZXRfbmVlZF9yZW1hcCAoZ3QpOwotICAgICAgICB9Ci0KLSAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGZpbHRlcik7Ci0gICAgICAgIGJyZWFrOworICAgICAgICBndCA9IEdTVF9HRU9NRVRSSUNfVFJBTlNGT1JNX0NBU1QgKG9iamVjdCk7CisgICAgICAgIGZpbHRlci0+bW9kZSA9IG1vZGU7CisgICAgICAgIGdzdF9nZW9tZXRyaWNfdHJhbnNmb3JtX3NldF9uZWVkX3JlbWFwIChndCk7CiAgICAgICB9CisKKyAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChmaWx0ZXIpOworICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBlcnNwZWN0aXZlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBlcnNwZWN0aXZlLmMKaW5kZXggZTllZDIzMC4uYmFmYTFmYyAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RwZXJzcGVjdGl2ZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cGVyc3BlY3RpdmUuYwpAQCAtNDcsNiArNDcsMjAgQEAKICAqIGh0dHA6Ly9kb2NzLm9yYWNsZS5jb20vY2QvRTE3ODAyXzAxL3Byb2R1Y3RzL3Byb2R1Y3RzL2phdmEtbWVkaWEvamFpL2ZvckRldmVsb3BlcnMvamFpLWFwaWRvY3MvamF2YXgvbWVkaWEvamFpL1BlcnNwZWN0aXZlVHJhbnNmb3JtLmh0bWwKICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1wZXJzcGVjdGl2ZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUgcGVyc3BlY3RpdmUgZWxlbWVudCBhcHBsaWVzIGEgMkQgcGVyc3BlY3RpdmUgdHJhbnNmb3JtLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBwZXJzcGVjdGl2ZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCisKIC8qIEZJWE1FOiBzdXBwcmVzcyB3YXJuaW5ncyBmb3IgZGVwcmVjYXRlZCBBUEkgc3VjaCBhcyBHVmFsdWVBcnJheQogICogd2l0aCBuZXdlciBHTGliIHZlcnNpb25zICg+PSAyLjMxLjApCiAgKgpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RwaW5jaC5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RwaW5jaC5jCmluZGV4IDI5NmI4NGEuLmQ2OGRjZDEgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cGluY2guYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHBpbmNoLmMKQEAgLTQ3LDYgKzQ3LDE5IEBACiAgKiBoaXMgY29kZS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1waW5jaAorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBQaW5jaCBhcHBsaWVzIGEgJ3BpbmNoJyBnZW9tZXRyaWMgdHJhbnNmb3JtIHRvIHRoZSBpbWFnZS4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgcGluY2ggISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHJvdGF0ZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3Ryb3RhdGUuYwppbmRleCA2OTNjODk4Li4xZTAzMzM5IDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHJvdGF0ZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0cm90YXRlLmMKQEAgLTQ3LDYgKzQ3LDE5IEBACiAgKiBoaXMgY29kZS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1yb3RhdGUKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogVGhlIHJvdGF0ZSBlbGVtZW50IHRyYW5zZm9ybXMgdGhlIGltYWdlIGJ5IHJvdGF0aW5nIGl0IGJ5IGEgc3BlY2lmaWVkIGFuZ2xlLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISByb3RhdGUgYW5nbGU9MC43OCAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3BoZXJlLmMgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHNwaGVyZS5jCmluZGV4IGE0MjU0NzAuLjVmMzlhNDcgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3BoZXJlLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzcGhlcmUuYwpAQCAtNDcsNiArNDcsMTkgQEAKICAqIGhpcyBjb2RlLgogICovCiAKKy8qKgorICogU0VDVElPTjplbGVtZW50LXNwaGVyZQorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUgc3BoZXJlIGVsZW1lbnQgYXBwbGllcyBhICdzcGhlcmUnIGdlb21ldHJpYyB0cmFuc2Zvcm0gdG8gdGhlIGltYWdlLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBzcGhlcmUgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLwogCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHNxdWFyZS5jIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3RzcXVhcmUuYwppbmRleCA4ZTRjOTljLi40YjA0NGYxIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHNxdWFyZS5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3F1YXJlLmMKQEAgLTQxLDYgKzQxLDIwIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC1zcXVhcmUKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogVGhlIHNxdWFyZSBlbGVtZW50IGRpc3RvcnRzIHRoZSBjZW50ZXIgcGFydCBvZiB0aGUgaW1hZ2UgaW50byBhIHNxdWFyZS4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdmlkZW90ZXN0c3JjICEgc3F1YXJlIHpvb209MTAwICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luaworICogXXwKKyAqIDwvcmVmc2VjdDI+CisgKi8KKwogI2lmZGVmIEhBVkVfQ09ORklHX0gKICMgIGluY2x1ZGUgPGNvbmZpZy5oPgogI2VuZGlmCkBAIC0xNTcsMTIgKzE3MSwxMiBAQAogICAvKiB6b29tIGF0IHRoZSBjZW50ZXIsIHNtb290aHN0ZXAgYXJvdW5kIGhhbGYgcXVhZHJhbnQgYW5kIGdldCBiYWNrIHRvIG5vcm1hbCAqLwogICBub3JtX3ggKj0KICAgICAgICgxLjAgLyBzcXVhcmUtPnpvb20pICogKDEuMCArIChzcXVhcmUtPnpvb20gLQotICAgICAgICAgIDEuMCkgKiBzbW9vdGhzdGVwIChzcXVhcmUtPndpZHRoIC0gMC4xMjUsIHNxdWFyZS0+d2lkdGggKyAwLjEyNSwKLSAgICAgICAgICBBQlMgKG5vcm1feCkpKTsKKyAgICAgICAgICAxLjApICogZ3N0X2dtX3Ntb290aHN0ZXAgKHNxdWFyZS0+d2lkdGggLSAwLjEyNSwKKyAgICAgICAgICBzcXVhcmUtPndpZHRoICsgMC4xMjUsIEFCUyAobm9ybV94KSkpOwogICBub3JtX3kgKj0KICAgICAgICgxLjAgLyBzcXVhcmUtPnpvb20pICogKDEuMCArIChzcXVhcmUtPnpvb20gLQotICAgICAgICAgIDEuMCkgKiBzbW9vdGhzdGVwIChzcXVhcmUtPmhlaWdodCAtIDAuMTI1LCBzcXVhcmUtPmhlaWdodCArIDAuMTI1LAotICAgICAgICAgIEFCUyAobm9ybV95KSkpOworICAgICAgICAgIDEuMCkgKiBnc3RfZ21fc21vb3Roc3RlcCAoc3F1YXJlLT5oZWlnaHQgLSAwLjEyNSwKKyAgICAgICAgICBzcXVhcmUtPmhlaWdodCArIDAuMTI1LCBBQlMgKG5vcm1feSkpKTsKIAogICAvKiB1bm5vcm1hbGl6ZSAqLwogICAqaW5feCA9IDAuNSAqIChub3JtX3ggKyAxLjApICogd2lkdGg7CmRpZmYgLS1naXQgYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHN0cmV0Y2guYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3RyZXRjaC5jCmluZGV4IGY5YjMzNDQuLjYxZWVkMzcgMTAwNjQ0Ci0tLSBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3RyZXRjaC5jCisrKyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0c3RyZXRjaC5jCkBAIC00MSw2ICs0MSwyMCBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtc3RyZXRjaAorICogQHNlZV9hbHNvOiBnZW9tZXRyaWN0cmFuc2Zvcm0KKyAqCisgKiBUaGUgc3RyZXRjaCBlbGVtZW50IHN0cmV0Y2hlcyB0aGUgaW1hZ2UgaW4gYSBjaXJjbGUgYXJvdW5kIHRoZSBjZW50ZXIgcG9pbnQuCisgKgorICogPHJlZnNlY3QyPgorICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgorICogfFsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHN0cmV0Y2ggISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKQEAgLTE0NSw4ICsxNTksOCBAQAogICBhID0gMS4wICsgKE1BWF9TSFJJTktfQU1PVU5UIC0gMS4wKSAqIHN0cmV0Y2gtPmludGVuc2l0eTsKICAgYiA9IGEgLSAxLjA7CiAKLSAgbm9ybV94ICo9IGEgLSBiICogc21vb3Roc3RlcCAoMC4wLCBjZ3QtPnJhZGl1cywgcik7Ci0gIG5vcm1feSAqPSBhIC0gYiAqIHNtb290aHN0ZXAgKDAuMCwgY2d0LT5yYWRpdXMsIHIpOworICBub3JtX3ggKj0gYSAtIGIgKiBnc3RfZ21fc21vb3Roc3RlcCAoMC4wLCBjZ3QtPnJhZGl1cywgcik7CisgIG5vcm1feSAqPSBhIC0gYiAqIGdzdF9nbV9zbW9vdGhzdGVwICgwLjAsIGNndC0+cmFkaXVzLCByKTsKIAogICAvKiB1bm5vcm1hbGl6ZSAqLwogICAqaW5feCA9ICgwLjUgKiBub3JtX3ggKyBjZ3QtPnhfY2VudGVyKSAqIHdpZHRoOwpkaWZmIC0tZ2l0IGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R0dW5uZWwuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0dHVubmVsLmMKaW5kZXggYTcxZjBlZi4uOTRiNjA3MCAxMDA2NDQKLS0tIGEvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R0dW5uZWwuYworKysgYi9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHR1bm5lbC5jCkBAIC00MSw2ICs0MSwyMSBAQAogICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtdHVubmVsCisgKiBAc2VlX2Fsc286IGdlb21ldHJpY3RyYW5zZm9ybQorICoKKyAqIFR1bm5lbCBpcyBhIGdlb21ldHJpYyBpbWFnZSB0cmFuc2Zvcm0gZWxlbWVudC4gSXQgYXBwbGllcyBhIGxpZ2h0IHR1bm5lbAorICogZWZmZWN0LgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISB0dW5uZWwgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCiAjaWZkZWYgSEFWRV9DT05GSUdfSAogIyAgaW5jbHVkZSA8Y29uZmlnLmg+CiAjZW5kaWYKZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0dHdpcmwuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0dHdpcmwuYwppbmRleCAzMzIyMmM4Li45NjJkM2JhIDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHR3aXJsLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R0d2lybC5jCkBAIC00Nyw2ICs0NywxOSBAQAogICogaGlzIGNvZGUuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtdHdpcmwKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogVGhlIHR3aXJsIGVsZW1lbnQgdHdpc3RzIHRoZSBpbWFnZSBmcm9tIHRoZSBjZW50ZXIgb3V0LgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISB0d2lybCAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KZGlmZiAtLWdpdCBhL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0d2F0ZXJyaXBwbGUuYyBiL2dzdC9nZW9tZXRyaWN0cmFuc2Zvcm0vZ3N0d2F0ZXJyaXBwbGUuYwppbmRleCA0ZGFmZjJhLi45NmFmNmU4IDEwMDY0NAotLS0gYS9nc3QvZ2VvbWV0cmljdHJhbnNmb3JtL2dzdHdhdGVycmlwcGxlLmMKKysrIGIvZ3N0L2dlb21ldHJpY3RyYW5zZm9ybS9nc3R3YXRlcnJpcHBsZS5jCkBAIC00Nyw2ICs0NywxOSBAQAogICogaGlzIGNvZGUuCiAgKi8KIAorLyoqCisgKiBTRUNUSU9OOmVsZW1lbnQtd2F0ZXJyaXBwbGUKKyAqIEBzZWVfYWxzbzogZ2VvbWV0cmljdHJhbnNmb3JtCisgKgorICogVGhlIHdhdGVycmlwcGxlIGVsZW1lbnQgY3JlYXRlcyBhIHdhdGVyIHJpcHBsZSBlZmZlY3Qgb24gdGhlIGltYWdlLgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KKyAqIHxbCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISB3YXRlcnJpcHBsZSAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIF18CisgKiA8L3JlZnNlY3QyPgorICovCiAKICNpZmRlZiBIQVZFX0NPTkZJR19ICiAjICBpbmNsdWRlIDxjb25maWcuaD4KZGlmZiAtLWdpdCBhL2dzdC9oZHZwYXJzZS9NYWtlZmlsZS5pbiBiL2dzdC9oZHZwYXJzZS9NYWtlZmlsZS5pbgppbmRleCAyMDcyYjkwLi5jM2YzOTEwIDEwMDY0NAotLS0gYS9nc3QvaGR2cGFyc2UvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2hkdnBhcnNlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2lkM3RhZy9NYWtlZmlsZS5pbiBiL2dzdC9pZDN0YWcvTWFrZWZpbGUuaW4KaW5kZXggYmRiMTJkMi4uZDE4ODRhOCAxMDA2NDQKLS0tIGEvZ3N0L2lkM3RhZy9NYWtlZmlsZS5pbgorKysgYi9nc3QvaWQzdGFnL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2lkM3RhZy9nc3RpZDNtdXguYyBiL2dzdC9pZDN0YWcvZ3N0aWQzbXV4LmMKaW5kZXggODlhODEyNy4uNjQxNzUzOCAxMDA2NDQKLS0tIGEvZ3N0L2lkM3RhZy9nc3RpZDNtdXguYworKysgYi9nc3QvaWQzdGFnL2dzdGlkM211eC5jCkBAIC0zNywxMiArMzcsMTIgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZvby5vZ2cgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBsYW1lICEgaWQzbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Zm9vLm1wMworICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1mb28ub2dnICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgaWQzbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Zm9vLm1wMwogICogXXwgQSBwaXBlbGluZSB0aGF0IHRyYW5zY29kZXMgYSBmaWxlIGZyb20gT2dnL1ZvcmJpcyB0byBtcDMgZm9ybWF0IHdpdGgKICAqIElEMyB0YWdzIHRoYXQgY29udGFpbiB0aGUgc2FtZSBtZXRhZGF0YSBhcyB0aGUgdGhlIE9nZy9Wb3JiaXMgZmlsZS4KICAqIE1ha2Ugc3VyZSB0aGUgT2dnL1ZvcmJpcyBmaWxlIGFjdHVhbGx5IGhhcyBjb21tZW50cyB0byBwcmVzZXJ2ZS4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC1tIGZpbGVzcmMgbG9jYXRpb249Zm9vLm1wMyAhIGlkM2RlbXV4ICEgZmFrZXNpbmsgc2lsZW50PVRSVUUgMiZndDsgL2Rldi9udWxsIHwgZ3JlcCB0YWdsaXN0CisgKiBnc3QtbGF1bmNoLTEuMCAtbSBmaWxlc3JjIGxvY2F0aW9uPWZvby5tcDMgISBpZDNkZW11eCAhIGZha2VzaW5rIHNpbGVudD1UUlVFCiAgKiBdfCBWZXJpZnkgdGhhdCB0YWdzIGhhdmUgYmVlbiB3cml0dGVuLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2lkM3RhZy9pZDN0YWcuYyBiL2dzdC9pZDN0YWcvaWQzdGFnLmMKaW5kZXggYzEyYTc3Yy4uM2E2MDJkMSAxMDA2NDQKLS0tIGEvZ3N0L2lkM3RhZy9pZDN0YWcuYworKysgYi9nc3QvaWQzdGFnL2lkM3RhZy5jCkBAIC00NjIsNyArNDYyLDU4IEBACiAgIGdfZnJlZSAoc3RyaW5ncyk7CiB9CiAKLS8qIEZJWE1FOiBpZDN2Mi1wcml2YXRlIGZyYW1lcyBuZWVkIHRvIGJlIGV4dHJhY3RlZCBhcyBzYW1wbGVzICovCitzdGF0aWMgdm9pZAorYWRkX3ByaXZhdGVfZGF0YV90YWcgKEdzdElkM3YyVGFnICogaWQzdjJ0YWcsIGNvbnN0IEdzdFRhZ0xpc3QgKiBsaXN0LAorICAgIGNvbnN0IGdjaGFyICogdGFnLCBndWludCBudW1fdGFncywgY29uc3QgZ2NoYXIgKiBmcmFtZV9pZCkKK3sKKyAgZ2ludCBuOworCisgIGZvciAobiA9IDA7IG4gPCBudW1fdGFnczsgKytuKSB7CisgICAgR3N0SWQzdjJGcmFtZSBmcmFtZTsKKyAgICBHc3RTYW1wbGUgKnNhbXBsZSA9IE5VTEw7CisgICAgY29uc3QgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBOVUxMOworICAgIEdzdEJ1ZmZlciAqYmluYXJ5ID0gTlVMTDsKKyAgICBHc3RCdWZmZXIgKnByaXZfZnJhbWUgPSBOVUxMOworICAgIGNvbnN0IGdjaGFyICpvd25lcl9zdHIgPSBOVUxMOworICAgIGd1aW50IG93bmVyX2xlbiA9IDA7CisgICAgR3N0TWFwSW5mbyBtYXBpbmZvOworCisgICAgaWYgKCFnc3RfdGFnX2xpc3RfZ2V0X3NhbXBsZV9pbmRleCAobGlzdCwgdGFnLCBuLCAmc2FtcGxlKSkKKyAgICAgIGNvbnRpbnVlOworCisgICAgc3RydWN0dXJlID0gZ3N0X3NhbXBsZV9nZXRfaW5mbyAoc2FtcGxlKTsKKyAgICBpZiAoc3RydWN0dXJlICE9IE5VTEwKKyAgICAgICAgJiYgIXN0cmNtcCAoZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAoc3RydWN0dXJlKSwgIklEM1ByaXZhdGVGcmFtZSIpKSB7CisgICAgICBvd25lcl9zdHIgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0cnVjdHVyZSwgIm93bmVyIik7CisKKyAgICAgIGlmIChvd25lcl9zdHIgIT0gTlVMTCkgeworICAgICAgICBvd25lcl9sZW4gPSBzdHJsZW4gKG93bmVyX3N0cikgKyAxOworICAgICAgICBwcml2X2ZyYW1lID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChvd25lcl9sZW4pOworICAgICAgICBnc3RfYnVmZmVyX2ZpbGwgKHByaXZfZnJhbWUsIDAsIG93bmVyX3N0ciwgb3duZXJfbGVuKTsKKworICAgICAgICBiaW5hcnkgPSBnc3RfYnVmZmVyX3JlZiAoZ3N0X3NhbXBsZV9nZXRfYnVmZmVyIChzYW1wbGUpKTsKKyAgICAgICAgcHJpdl9mcmFtZSA9IGdzdF9idWZmZXJfYXBwZW5kIChwcml2X2ZyYW1lLCBiaW5hcnkpOworCisgICAgICAgIGlkM3YyX2ZyYW1lX2luaXQgKCZmcmFtZSwgZnJhbWVfaWQsIDApOworCisgICAgICAgIGlmIChnc3RfYnVmZmVyX21hcCAocHJpdl9mcmFtZSwgJm1hcGluZm8sIEdTVF9NQVBfUkVBRCkpIHsKKyAgICAgICAgICBpZDN2Ml9mcmFtZV93cml0ZV9ieXRlcyAoJmZyYW1lLCBtYXBpbmZvLmRhdGEsIG1hcGluZm8uc2l6ZSk7CisgICAgICAgICAgZ19hcnJheV9hcHBlbmRfdmFsIChpZDN2MnRhZy0+ZnJhbWVzLCBmcmFtZSk7CisgICAgICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAocHJpdl9mcmFtZSwgJm1hcGluZm8pOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIEdTVF9XQVJOSU5HICgiQ291bGRuJ3QgbWFwIHByaXYgZnJhbWUgdGFnIGJ1ZmZlciIpOworICAgICAgICAgIGlkM3YyX2ZyYW1lX3Vuc2V0ICgmZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAocHJpdl9mcmFtZSk7CisgICAgICAgIGdzdF9zYW1wbGVfdW5yZWYgKHNhbXBsZSk7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIEdTVF9XQVJOSU5HICgiQ291bGRuJ3QgZmluZCBJRDNQcml2YXRlRnJhbWUgc3RydWN0dXJlIik7CisgICAgfQorICB9Cit9CisKIHN0YXRpYyB2b2lkCiBhZGRfaWQzdjJmcmFtZV90YWcgKEdzdElkM3YyVGFnICogaWQzdjJ0YWcsIGNvbnN0IEdzdFRhZ0xpc3QgKiBsaXN0LAogICAgIGNvbnN0IGdjaGFyICogdGFnLCBndWludCBudW1fdGFncywgY29uc3QgZ2NoYXIgKiB1bnVzZWQpCkBAIC0xMDk1LDYgKzExNDYsNyBAQAogICBHU1RfVEFHX01VU0lDQUxfS0VZLCBhZGRfdGV4dF90YWcsICJUS0VZIn0sIHsKIAogICAgIC8qIFByaXZhdGUgZnJhbWVzICovCisgIEdTVF9UQUdfUFJJVkFURV9EQVRBLCBhZGRfcHJpdmF0ZV9kYXRhX3RhZywgIlBSSVYifSwgewogICBHU1RfSUQzX0RFTVVYX1RBR19JRDNWMl9GUkFNRSwgYWRkX2lkM3YyZnJhbWVfdGFnLCBOVUxMfSwgewogCiAgICAgLyogVHJhY2sgYW5kIGFsYnVtIG51bWJlcnMgKi8KZGlmZiAtLWdpdCBhL2dzdC9pbnRlci9NYWtlZmlsZS5pbiBiL2dzdC9pbnRlci9NYWtlZmlsZS5pbgppbmRleCA5Yjg5YjM3Li40N2Q3Y2NkIDEwMDY0NAotLS0gYS9nc3QvaW50ZXIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2ludGVyL01ha2VmaWxlLmluCkBAIC0xMTgsMTYgKzExOCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI5MSw2ICsyOTAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyOCw2ICszMjksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMzNiw3ICszMzksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNTUsOCArMzU3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM3MywxNiArMzc2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwOCw2ICs0MTIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MzMsNiArNDM5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTM0LDYgKzU0Miw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDcsOCArNTU2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTY0LDYgKzU3MSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MjEsMTYgKzYzMCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY4Miw2ICs2OTMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjkyLDYgKzcwNCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcwMSw2ICs3MTQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzM4LDcgKzc1Myw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2ludGVyL2dzdGludGVyYXVkaW9zaW5rLmMgYi9nc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NpbmsuYwppbmRleCA1OGU3ODMyLi4yNjFlZDI1IDEwMDY0NAotLS0gYS9nc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NpbmsuYworKysgYi9nc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NpbmsuYwpAQCAtMjYsMTAgKzI2LDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBhdWRpb3Rlc3RzcmMgISBxdWV1ZSAhIGludGVyYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBhdWRpb3Rlc3RzcmMgISBxdWV1ZSAhIGludGVyYXVkaW9zaW5rCiAgKiBdfAogICoKLSAqIFRoZSBpbnRlcmF1ZGlvc2luayBlbGVtZW50IGNhbm5vdCBiZSB1c2VkIGVmZmVjdGl2ZWx5IHdpdGggZ3N0LWxhdW5jaCwKKyAqIFRoZSBpbnRlcmF1ZGlvc2luayBlbGVtZW50IGNhbm5vdCBiZSB1c2VkIGVmZmVjdGl2ZWx5IHdpdGggZ3N0LWxhdW5jaC0xLjAsCiAgKiBhcyBpdCByZXF1aXJlcyBhIHNlY29uZCBwaXBlbGluZSBpbiB0aGUgYXBwbGljYXRpb24gdG8gcmVjZWl2ZSB0aGUKICAqIGF1ZGlvLgogICogU2VlIHRoZSBnc3RpbnRlcnRlc3QuYyBleGFtcGxlIGluIHRoZSBnc3QtcGx1Z2lucy1iYWQgc291cmNlIGNvZGUgZm9yCmRpZmYgLS1naXQgYS9nc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NyYy5jIGIvZ3N0L2ludGVyL2dzdGludGVyYXVkaW9zcmMuYwppbmRleCAyZWVmZjY1Li4xZDRiNjhiIDEwMDY0NAotLS0gYS9nc3QvaW50ZXIvZ3N0aW50ZXJhdWRpb3NyYy5jCisrKyBiL2dzdC9pbnRlci9nc3RpbnRlcmF1ZGlvc3JjLmMKQEAgLTI1LDEwICsyNSwxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgaW50ZXJhdWRpb3NyYyAhIHF1ZXVlICEgYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBpbnRlcmF1ZGlvc3JjICEgcXVldWUgISBhdXRvYXVkaW9zaW5rCiAgKiBdfAogICogCi0gKiBUaGUgaW50ZXJhdWRpb3NyYyBlbGVtZW50IGNhbm5vdCBiZSB1c2VkIGVmZmVjdGl2ZWx5IHdpdGggZ3N0LWxhdW5jaCwKKyAqIFRoZSBpbnRlcmF1ZGlvc3JjIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLTEuMCwKICAqIGFzIGl0IHJlcXVpcmVzIGEgc2Vjb25kIHBpcGVsaW5lIGluIHRoZSBhcHBsaWNhdGlvbiB0byBzZW5kIGF1ZGlvLgogICogU2VlIHRoZSBnc3RpbnRlcnRlc3QuYyBleGFtcGxlIGluIHRoZSBnc3QtcGx1Z2lucy1iYWQgc291cmNlIGNvZGUgZm9yCiAgKiBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9nc3QvaW50ZXIvZ3N0aW50ZXJzdWJzaW5rLmMgYi9nc3QvaW50ZXIvZ3N0aW50ZXJzdWJzaW5rLmMKaW5kZXggYjkwN2MwYS4uNzdiYzQ4NCAxMDA2NDQKLS0tIGEvZ3N0L2ludGVyL2dzdGludGVyc3Vic2luay5jCisrKyBiL2dzdC9pbnRlci9nc3RpbnRlcnN1YnNpbmsuYwpAQCAtMjUsMTAgKzI1LDEwIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiAuLi4gISBpbnRlcnN1YnNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IC4uLiAhIGludGVyc3Vic2luawogICogXXwKICAqIAotICogVGhlIGludGVyc3Vic2luayBlbGVtZW50IGNhbm5vdCBiZSB1c2VkIGVmZmVjdGl2ZWx5IHdpdGggZ3N0LWxhdW5jaCwKKyAqIFRoZSBpbnRlcnN1YnNpbmsgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gtMS4wLAogICogYXMgaXQgcmVxdWlyZXMgYSBzZWNvbmQgcGlwZWxpbmUgaW4gdGhlIGFwcGxpY2F0aW9uIHRvIHNlbmQgYXVkaW8uCiAgKiBTZWUgdGhlIGdzdGludGVydGVzdC5jIGV4YW1wbGUgaW4gdGhlIGdzdC1wbHVnaW5zLWJhZCBzb3VyY2UgY29kZSBmb3IKICAqIG1vcmUgZGV0YWlscy4KZGlmZiAtLWdpdCBhL2dzdC9pbnRlci9nc3RpbnRlcnN1YnNyYy5jIGIvZ3N0L2ludGVyL2dzdGludGVyc3Vic3JjLmMKaW5kZXggMjRlZmM5Zi4uNDgyYTIwZiAxMDA2NDQKLS0tIGEvZ3N0L2ludGVyL2dzdGludGVyc3Vic3JjLmMKKysrIGIvZ3N0L2ludGVyL2dzdGludGVyc3Vic3JjLmMKQEAgLTI2LDEwICsyNiwxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgaW50ZXJzdWJzcmMgISBrYXRlZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249b3V0Lm9ndgorICogZ3N0LWxhdW5jaC0xLjAgLXYgaW50ZXJzdWJzcmMgISBrYXRlZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249b3V0Lm9ndgogICogXXwKICAqIAotICogVGhlIGludGVyc3Vic3JjIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLAorICogVGhlIGludGVyc3Vic3JjIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLTEuMCwKICAqIGFzIGl0IHJlcXVpcmVzIGEgc2Vjb25kIHBpcGVsaW5lIGluIHRoZSBhcHBsaWNhdGlvbiB0byBzZW5kIHN1YnRpdGxlcy4KICAqIFNlZSB0aGUgZ3N0aW50ZXJ0ZXN0LmMgZXhhbXBsZSBpbiB0aGUgZ3N0LXBsdWdpbnMtYmFkIHNvdXJjZSBjb2RlIGZvcgogICogbW9yZSBkZXRhaWxzLgpkaWZmIC0tZ2l0IGEvZ3N0L2ludGVyL2dzdGludGVydGVzdC5jIGIvZ3N0L2ludGVyL2dzdGludGVydGVzdC5jCmluZGV4IGNmZjRmMGQuLjNiMWFiZGIgMTAwNjQ0Ci0tLSBhL2dzdC9pbnRlci9nc3RpbnRlcnRlc3QuYworKysgYi9nc3QvaW50ZXIvZ3N0aW50ZXJ0ZXN0LmMKQEAgLTg1LDYgKzg1LDggQEAKICAgZ19vcHRpb25fY29udGV4dF9hZGRfZ3JvdXAgKGNvbnRleHQsIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAgKCkpOwogICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGNvbnRleHQsICZhcmdjLCAmYXJndiwgJmVycm9yKSkgewogICAgIGdfcHJpbnQgKCJvcHRpb24gcGFyc2luZyBmYWlsZWQ6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgIGV4aXQgKDEpOwogICB9CiAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY29udGV4dCk7CkBAIC0xOTksNiArMjAxLDcgQEAKICAgaWYgKGVycm9yKSB7CiAgICAgZ19wcmludCAoInBpcGVsaW5lIHBhcnNpbmcgZXJyb3I6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CiAgICAgZ3N0X29iamVjdF91bnJlZiAocGlwZWxpbmUpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTIzNiw2ICsyMzksNyBAQAogICBpZiAoZXJyb3IpIHsKICAgICBnX3ByaW50ICgicGlwZWxpbmUgcGFyc2luZyBlcnJvcjogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKICAgICBnc3Rfb2JqZWN0X3VucmVmIChwaXBlbGluZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICByZXR1cm47CiAgIH0KIApAQCAtMzUyLDcgKzM1Niw3IEBACiAKICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yIChtZXNzYWdlLCAmZXJyb3IsICZkZWJ1Zyk7CiAgICAgICBnc3RfaW50ZXJfdGVzdF9oYW5kbGVfZXJyb3IgKGludGVydGVzdCwgZXJyb3IsIGRlYnVnKTsKLSAgICAgIGdfZXJyb3JfZnJlZSAoZXJyb3IpOworICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICAgIGdfZnJlZSAoZGVidWcpOwogICAgIH0KICAgICAgIGJyZWFrOwpAQCAtMzYzLDcgKzM2Nyw3IEBACiAKICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcgKG1lc3NhZ2UsICZlcnJvciwgJmRlYnVnKTsKICAgICAgIGdzdF9pbnRlcl90ZXN0X2hhbmRsZV93YXJuaW5nIChpbnRlcnRlc3QsIGVycm9yLCBkZWJ1Zyk7Ci0gICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKyAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgICBnX2ZyZWUgKGRlYnVnKTsKICAgICB9CiAgICAgICBicmVhazsKQEAgLTM3NCw3ICszNzgsNyBAQAogCiAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9pbmZvIChtZXNzYWdlLCAmZXJyb3IsICZkZWJ1Zyk7CiAgICAgICBnc3RfaW50ZXJfdGVzdF9oYW5kbGVfaW5mbyAoaW50ZXJ0ZXN0LCBlcnJvciwgZGVidWcpOwotICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgICAgZ19mcmVlIChkZWJ1Zyk7CiAgICAgfQogICAgICAgYnJlYWs7CmRpZmYgLS1naXQgYS9nc3QvaW50ZXIvZ3N0aW50ZXJ2aWRlb3NpbmsuYyBiL2dzdC9pbnRlci9nc3RpbnRlcnZpZGVvc2luay5jCmluZGV4IGFlYmNlMjguLmNhMzU3ZDYgMTAwNjQ0Ci0tLSBhL2dzdC9pbnRlci9nc3RpbnRlcnZpZGVvc2luay5jCisrKyBiL2dzdC9pbnRlci9nc3RpbnRlcnZpZGVvc2luay5jCkBAIC0yNiwxMCArMjYsMTAgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIGludGVydmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISBpbnRlcnZpZGVvc2luawogICogXXwKICAqIAotICogVGhlIGludGVydmlkZW9zaW5rIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLAorICogVGhlIGludGVydmlkZW9zaW5rIGVsZW1lbnQgY2Fubm90IGJlIHVzZWQgZWZmZWN0aXZlbHkgd2l0aCBnc3QtbGF1bmNoLTEuMCwKICAqIGFzIGl0IHJlcXVpcmVzIGEgc2Vjb25kIHBpcGVsaW5lIGluIHRoZSBhcHBsaWNhdGlvbiB0byBzZW5kIHZpZGVvIHRvLgogICogU2VlIHRoZSBnc3RpbnRlcnRlc3QuYyBleGFtcGxlIGluIHRoZSBnc3QtcGx1Z2lucy1iYWQgc291cmNlIGNvZGUgZm9yCiAgKiBtb3JlIGRldGFpbHMuCmRpZmYgLS1naXQgYS9nc3QvaW50ZXIvZ3N0aW50ZXJ2aWRlb3NyYy5jIGIvZ3N0L2ludGVyL2dzdGludGVydmlkZW9zcmMuYwppbmRleCA2NTUzZWQxLi44Y2FiNjQ4IDEwMDY0NAotLS0gYS9nc3QvaW50ZXIvZ3N0aW50ZXJ2aWRlb3NyYy5jCisrKyBiL2dzdC9pbnRlci9nc3RpbnRlcnZpZGVvc3JjLmMKQEAgLTI2LDEwICsyNiwxMCBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgaW50ZXJ2aWRlb3NyYyAhIHF1ZXVlICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGludGVydmlkZW9zcmMgISBxdWV1ZSAhIHh2aW1hZ2VzaW5rCiAgKiBdfAogICogCi0gKiBUaGUgaW50ZXJzdWJzcmMgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gsCisgKiBUaGUgaW50ZXJzdWJzcmMgZWxlbWVudCBjYW5ub3QgYmUgdXNlZCBlZmZlY3RpdmVseSB3aXRoIGdzdC1sYXVuY2gtMS4wLAogICogYXMgaXQgcmVxdWlyZXMgYSBzZWNvbmQgcGlwZWxpbmUgaW4gdGhlIGFwcGxpY2F0aW9uIHRvIHNlbmQgc3VidGl0bGVzLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L2ludGVybGFjZS9NYWtlZmlsZS5pbiBiL2dzdC9pbnRlcmxhY2UvTWFrZWZpbGUuaW4KaW5kZXggMzU2YjVhNi4uN2I4ZTk3NyAxMDA2NDQKLS0tIGEvZ3N0L2ludGVybGFjZS9NYWtlZmlsZS5pbgorKysgYi9nc3QvaW50ZXJsYWNlL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjcxLDYgKzI3MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA4LDYgKzMwOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE2LDcgKzMxOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNSw4ICszMzcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzUzLDE2ICszNTYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg4LDYgKzM5Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxMyw2ICs0MTksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTQsNiArNTIyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyNyw4ICs1MzYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDQsNiArNTUxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMSwxNiArNjEwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjYyLDYgKzY3Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzIsNiArNjg0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgxLDYgKzY5NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTgsNyArNzMzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvaW50ZXJsYWNlL2dzdGludGVybGFjZS5jIGIvZ3N0L2ludGVybGFjZS9nc3RpbnRlcmxhY2UuYwppbmRleCA2Y2QzNjliLi4yNjlhODQ3IDEwMDY0NAotLS0gYS9nc3QvaW50ZXJsYWNlL2dzdGludGVybGFjZS5jCisrKyBiL2dzdC9pbnRlcmxhY2UvZ3N0aW50ZXJsYWNlLmMKQEAgLTI4LDIzICsyOCwyMyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjIHBhdHRlcm49YmFsbCAhIGludGVybGFjZSAhIHh2aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgcGF0dGVybj1iYWxsICEgaW50ZXJsYWNlICEgeHZpbWFnZXNpbmsKICAqIF18CiAgKiBUaGlzIHBpcGVsaW5lIGlsbHVzdHJhdGVzIHRoZSBjb21iaW5nIGVmZmVjdHMgY2F1c2VkIGJ5IGRpc3BsYXlpbmcKICAqIHR3byBpbnRlcmxhY2VkIGZpZWxkcyBhcyBvbmUgcHJvZ3Jlc3NpdmUgZnJhbWUuCiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL2ZpbGUgISBkZWNvZGViaW4gISB2aWRlb3JhdGUgIQorICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj0vcGF0aC90by9maWxlICEgZGVjb2RlYmluICEgdmlkZW9yYXRlICEKICAqICAgdmlkZW9zY2FsZSAhIHZpZGVvL3gtcmF3LGZvcm1hdD1cKHN0cmluZ1wpSTQyMCx3aWR0aD03MjAsaGVpZ2h0PTQ4MCwKICAqICAgZnJhbWVyYXRlPTYwMDAwLzEwMDEscGl4ZWwtYXNwZWN0LXJhdGlvPTExLzEwICEgCi0gKiAgIGludGVybGFjZSB0b3AtZmllbGQtZmlyc3Q9ZmFsc2UgISAuLi4KKyAqICAgaW50ZXJsYWNlIHRvcC1maWVsZC1maXJzdD1mYWxzZSAhIGF1dG92aWRlb3NpbmsKICAqIF18CiAgKiBUaGlzIHBpcGVsaW5lIGNvbnZlcnRzIGEgcHJvZ3Jlc3NpdmUgdmlkZW8gc3RyZWFtIGludG8gYW4gaW50ZXJsYWNlZAogICogc3RyZWFtIHN1aXRhYmxlIGZvciBzdGFuZGFyZCBkZWZpbml0aW9uIE5UU0MuCiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiB2aWRlb3Rlc3RzcmMgcGF0dGVybj1iYWxsICEgdmlkZW8veC1yYXcsCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgcGF0dGVybj1iYWxsICEgdmlkZW8veC1yYXcsCiAgKiAgIGZvcm1hdD1cKHN0cmluZ1wpSTQyMCx3aWR0aD03MjAsaGVpZ2h0PTQ4MCxmcmFtZXJhdGU9MjQwMDAvMTAwMSwKLSAqICAgcGl4ZWwtYXNwZWN0LXJhdGlvPTExLzEwICEgaW50ZXJsYWNlIHBhdHRlcm49MjozICEKLSAqICAgLi4uCisgKiAgIHBpeGVsLWFzcGVjdC1yYXRpbz0xMS8xMCAhIGludGVybGFjZSAhCisgKiAgIGF1dG92aWRlb3NpbmsKICAqIF18CiAgKiBUaGlzIHBpcGVsaW5lIGNvbnZlcnRzIGEgMjQgZnJhbWVzIHBlciBzZWNvbmQgcHJvZ3Jlc3NpdmUgZmlsbSBzdHJlYW0gaW50byBhCiAgKiAzMDAwMC8xMDAxIDI6MzoyOjMuLi4gcGF0dGVybiB0ZWxlY2luZWQgc3RyZWFtIHN1aXRhYmxlIGZvciBkaXNwbGF5aW5nIGZpbG0KZGlmZiAtLWdpdCBhL2dzdC9pdmZwYXJzZS9NYWtlZmlsZS5pbiBiL2dzdC9pdmZwYXJzZS9NYWtlZmlsZS5pbgppbmRleCA0ZjQwODBmLi5hYWYyOWFiIDEwMDY0NAotLS0gYS9nc3QvaXZmcGFyc2UvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2l2ZnBhcnNlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2l2ZnBhcnNlL2dzdGl2ZnBhcnNlLmMgYi9nc3QvaXZmcGFyc2UvZ3N0aXZmcGFyc2UuYwppbmRleCA0ZTNlYThiLi5iZWExZTE5IDEwMDY0NAotLS0gYS9nc3QvaXZmcGFyc2UvZ3N0aXZmcGFyc2UuYworKysgYi9nc3QvaXZmcGFyc2UvZ3N0aXZmcGFyc2UuYwpAQCAtMzMxLDE1ICszMzEsMjAgQEAKIAogICAgIC8qIERldGVjdCByZXNvbHV0aW9uIGNoYW5nZXMgb24ga2V5IGZyYW1lcyAqLwogICAgIGlmIChnc3RfYnVmZmVyX21hcCAoZnJhbWUtPm91dF9idWZmZXIsICZtYXAsIEdTVF9NQVBfUkVBRCkpIHsKLSAgICAgIGd1aW50MzIgZnJhbWVfdGFnLCB3aWR0aCwgaGVpZ2h0OworICAgICAgZ3VpbnQzMiB3aWR0aCwgaGVpZ2h0OwogCi0gICAgICBmcmFtZV90YWcgPSBHU1RfUkVBRF9VSU5UMjRfTEUgKG1hcC5kYXRhKTsKLSAgICAgIGlmICghKGZyYW1lX3RhZyAmIDB4MDEpICYmIG1hcC5zaXplID49IDEwKSB7ICAgICAgLyoga2V5IGZyYW1lICovCi0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGl2ZiwgImtleSBmcmFtZSBkZXRlY3RlZCIpOworICAgICAgaWYgKGl2Zi0+Zm91cmNjID09IEdTVF9NQUtFX0ZPVVJDQyAoJ1YnLCAnUCcsICc4JywgJzAnKSkgeworICAgICAgICBndWludDMyIGZyYW1lX3RhZzsKKyAgICAgICAgZnJhbWVfdGFnID0gR1NUX1JFQURfVUlOVDI0X0xFIChtYXAuZGF0YSk7CisgICAgICAgIGlmICghKGZyYW1lX3RhZyAmIDB4MDEpICYmIG1hcC5zaXplID49IDEwKSB7ICAgIC8qIGtleSBmcmFtZSAqLworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGl2ZiwgImtleSBmcmFtZSBkZXRlY3RlZCIpOwogCi0gICAgICAgIHdpZHRoID0gR1NUX1JFQURfVUlOVDE2X0xFIChtYXAuZGF0YSArIDYpICYgMHgzZmZmOwotICAgICAgICBoZWlnaHQgPSBHU1RfUkVBRF9VSU5UMTZfTEUgKG1hcC5kYXRhICsgOCkgJiAweDNmZmY7Ci0gICAgICAgIGdzdF9pdmZfcGFyc2Vfc2V0X3NpemUgKGl2Ziwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgICAgd2lkdGggPSBHU1RfUkVBRF9VSU5UMTZfTEUgKG1hcC5kYXRhICsgNikgJiAweDNmZmY7CisgICAgICAgICAgaGVpZ2h0ID0gR1NUX1JFQURfVUlOVDE2X0xFIChtYXAuZGF0YSArIDgpICYgMHgzZmZmOworICAgICAgICAgIGdzdF9pdmZfcGFyc2Vfc2V0X3NpemUgKGl2Ziwgd2lkdGgsIGhlaWdodCk7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIC8qIEZpeG1lOiBBZGQgdnA5IGZyYW1lIGhlYWRlciBwYXJzaW5nPyAqLwogICAgICAgfQogICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoZnJhbWUtPm91dF9idWZmZXIsICZtYXApOwogICAgIH0KZGlmZiAtLWdpdCBhL2dzdC9pdnRjL01ha2VmaWxlLmluIGIvZ3N0L2l2dGMvTWFrZWZpbGUuaW4KaW5kZXggMWJiYmMzNy4uZmU5MjM1ZiAxMDA2NDQKLS0tIGEvZ3N0L2l2dGMvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L2l2dGMvTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzIsNiArMjcxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDksNiArMzEwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTcsNyArMzIwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM2LDggKzMzOCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTQsMTYgKzM1NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODksNiArMzkzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE0LDYgKzQyMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNSw2ICs1MjMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI4LDggKzUzNyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0NSw2ICs1NTIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAyLDE2ICs2MTEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjMsNiArNjc0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Myw2ICs2ODUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODIsNiArNjk1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxOSw3ICs3MzQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9pdnRjL2dzdGNvbWJkZXRlY3QuYyBiL2dzdC9pdnRjL2dzdGNvbWJkZXRlY3QuYwppbmRleCBmNjllNjU2Li4yMzU2Yjk2IDEwMDY0NAotLS0gYS9nc3QvaXZ0Yy9nc3Rjb21iZGV0ZWN0LmMKKysrIGIvZ3N0L2l2dGMvZ3N0Y29tYmRldGVjdC5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZpbGUubW92ICEgZGVjb2RlYmluICEgY29tYmRldGVjdCAhCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZpbGUubW92ICEgZGVjb2RlYmluICEgY29tYmRldGVjdCAhCiAgKiAgICAgeHZpbWFnZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgpAQCAtMTUzLDggKzE1Myw4IEBACiAgICAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG90aGVyY2FwcywgaSk7CiAgICAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAoc3RydWN0dXJlLCAiaW50ZXJsYWNlLW1vZGUiLCAmdmFsdWUpOwogICAgIH0KLSAgICBnX3ZhbHVlX3Jlc2V0ICgmdmFsdWUpOwotICAgIGdfdmFsdWVfcmVzZXQgKCZ2KTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsdWUpOworICAgIGdfdmFsdWVfdW5zZXQgKCZ2KTsKICAgfSBlbHNlIHsKICAgICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKG90aGVyY2Fwcyk7IGkrKykgewogICAgICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChvdGhlcmNhcHMsIGkpOwpkaWZmIC0tZ2l0IGEvZ3N0L2l2dGMvZ3N0aXZ0Yy5jIGIvZ3N0L2l2dGMvZ3N0aXZ0Yy5jCmluZGV4IDAyZjM4MmIuLjZkZDBjOGQgMTAwNjQ0Ci0tLSBhL2dzdC9pdnRjL2dzdGl2dGMuYworKysgYi9nc3QvaXZ0Yy9nc3RpdnRjLmMKQEAgLTI3LDggKzI3LDggQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWJhbGwgISB2aWRlby94LXJhdyxmcmFtZXJhdGU9MjQvMSAhCi0gKiAgICAgaW50ZXJsYWNlIGZpZWxkLXBhdHRlcm49MzoyICEKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWJhbGwgISB2aWRlby94LXJhdyxmcmFtZXJhdGU9MjQvMSAhCisgKiAgICAgaW50ZXJsYWNlICEKICAqICAgICBpdnRjICEgdmlkZW8veC1yYXcsZnJhbWVyYXRlPTI0LzEgISBmYWtlc2luawogICogXXwKICAqCkBAIC0xNjksOCArMTY5LDggQEAKICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0X3ZhbHVlIChzdHJ1Y3R1cmUsICJpbnRlcmxhY2UtbW9kZSIsICZ2YWx1ZSk7CiAgICAgICBnc3Rfc3RydWN0dXJlX3JlbW92ZV9maWVsZCAoc3RydWN0dXJlLCAiZnJhbWVyYXRlIik7CiAgICAgfQotICAgIGdfdmFsdWVfcmVzZXQgKCZ2YWx1ZSk7Ci0gICAgZ192YWx1ZV9yZXNldCAoJnYpOworICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7CisgICAgZ192YWx1ZV91bnNldCAoJnYpOwogICB9IGVsc2UgewogICAgIGZvciAoaSA9IDA7IGkgPCBnc3RfY2Fwc19nZXRfc2l6ZSAob3RoZXJjYXBzKTsgaSsrKSB7CiAgICAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG90aGVyY2FwcywgaSk7CmRpZmYgLS1naXQgYS9nc3QvanAya2RlY2ltYXRvci9NYWtlZmlsZS5pbiBiL2dzdC9qcDJrZGVjaW1hdG9yL01ha2VmaWxlLmluCmluZGV4IDA1ZDYwNzMuLjUwMGZiNTMgMTAwNjQ0Ci0tLSBhL2dzdC9qcDJrZGVjaW1hdG9yL01ha2VmaWxlLmluCisrKyBiL2dzdC9qcDJrZGVjaW1hdG9yL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2pwMmtkZWNpbWF0b3IvZ3N0anAya2RlY2ltYXRvci5jIGIvZ3N0L2pwMmtkZWNpbWF0b3IvZ3N0anAya2RlY2ltYXRvci5jCmluZGV4IDc4YzFmZDQuLmNiOTVjYzAgMTAwNjQ0Ci0tLSBhL2dzdC9qcDJrZGVjaW1hdG9yL2dzdGpwMmtkZWNpbWF0b3IuYworKysgYi9nc3QvanAya2RlY2ltYXRvci9nc3RqcDJrZGVjaW1hdG9yLmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xICEganAya2VuYyAhIFwKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xICEganAya2VuYyAhIFwKICAqICAgZ3N0anAya2RlY2ltYXRvciBtYXgtZGVjb21wb3NpdGlvbi1sZXZlbHM9MiAhIGpwMmtkZWMgISBcCiAgKiAgIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18CmRpZmYgLS1naXQgYS9nc3QvanBlZ2Zvcm1hdC9NYWtlZmlsZS5pbiBiL2dzdC9qcGVnZm9ybWF0L01ha2VmaWxlLmluCmluZGV4IGFjNjIwZmIuLjFjZjg4YzggMTAwNjQ0Ci0tLSBhL2dzdC9qcGVnZm9ybWF0L01ha2VmaWxlLmluCisrKyBiL2dzdC9qcGVnZm9ybWF0L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L2pwZWdmb3JtYXQvZ3N0amlmbXV4LmMgYi9nc3QvanBlZ2Zvcm1hdC9nc3RqaWZtdXguYwppbmRleCA3MTkwNjdhLi4zYTZiNmZkIDEwMDY0NAotLS0gYS9nc3QvanBlZ2Zvcm1hdC9nc3RqaWZtdXguYworKysgYi9nc3QvanBlZ2Zvcm1hdC9nc3RqaWZtdXguYwpAQCAtMzEsNyArMzEsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjIG51bS1idWZmZXJzPTEgISBqcGVnZW5jICEgamlmbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Li4uCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MSAhIGpwZWdlbmMgISBqaWZtdXggISBmaWxlc2luayBsb2NhdGlvbj0uLi4KICAqIF18CiAgKiBUaGUgYWJvdmUgcGlwZWxpbmUgcmVuZGVycyBhIGZyYW1lLCBlbmNvZGVzIHRvIGpwZWcsIGFkZHMgbWV0YWRhdGEgYW5kIHdyaXRlcwogICogaXQgdG8gZGlzay4KQEAgLTQ2LDggKzQ2LDggQEAKIGZpbGUgdHJhaWxlcjogRU9JCiAKIHRlc3RzOgotZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MSAhIGpwZWdlbmMgISBqaWZtdXggISBmaWxlc2luayBsb2NhdGlvbj10ZXN0MS5qcGVnCi1nc3QtbGF1bmNoIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xICEganBlZ2VuYyAhIHRhZ2luamVjdCB0YWdzPSJjb21tZW50PVwidGVzdCBpbWFnZVwiIiAhIGppZm11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QyLmpwZWcKK2dzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xICEganBlZ2VuYyAhIGppZm11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QxLmpwZWcKK2dzdC1sYXVuY2gtMS4wIHZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0xICEganBlZ2VuYyAhIHRhZ2luamVjdCB0YWdzPSJjb21tZW50PXRlc3QgaW1hZ2UiICEgamlmbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249dGVzdDIuanBlZwogKi8KIAogI2lmZGVmIEhBVkVfQ09ORklHX0gKZGlmZiAtLWdpdCBhL2dzdC9qcGVnZm9ybWF0L2dzdGpwZWdwYXJzZS5jIGIvZ3N0L2pwZWdmb3JtYXQvZ3N0anBlZ3BhcnNlLmMKaW5kZXggZDU1Yjg0Zi4uNzdlNTNhNiAxMDA2NDQKLS0tIGEvZ3N0L2pwZWdmb3JtYXQvZ3N0anBlZ3BhcnNlLmMKKysrIGIvZ3N0L2pwZWdmb3JtYXQvZ3N0anBlZ3BhcnNlLmMKQEAgLTMzLDcgKzMzLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHNvdXBodHRwc3JjIGxvY2F0aW9uPS4uLiAhIGpwZWdwYXJzZSAhIG1hdHJvc2thbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249Li4uCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBzb3VwaHR0cHNyYyBsb2NhdGlvbj0uLi4gISBqcGVncGFyc2UgISBtYXRyb3NrYW11eCAhIGZpbGVzaW5rIGxvY2F0aW9uPS4uLgogICogXXwKICAqIFRoZSBhYm92ZSBwaXBlbGluZSBmZXRjaGVzIGEgbW90aW9uIEpQRUcgc3RyZWFtIGZyb20gYW4gSVAgY2FtZXJhIG92ZXIKICAqIEhUVFAgYW5kIHN0b3JlcyBpdCBpbiBhIG1hdHJvc2thIGZpbGUuCmRpZmYgLS1naXQgYS9nc3QvbGlicmZiL01ha2VmaWxlLmluIGIvZ3N0L2xpYnJmYi9NYWtlZmlsZS5pbgppbmRleCAzOGExYWI5Li5mMmJjZjEwIDEwMDY0NAotLS0gYS9nc3QvbGlicmZiL01ha2VmaWxlLmluCisrKyBiL2dzdC9saWJyZmIvTWFrZWZpbGUuaW4KQEAgLTExOCwxNiArMTE4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjg0LDYgKzI4Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzIxLDYgKzMyMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI5LDcgKzMzMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0OCw4ICszNTAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY2LDE2ICszNjksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDAxLDYgKzQwNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNiw2ICs0MzIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjcsNiArNTM1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0MCw4ICs1NDksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTcsNiArNTY0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxNCwxNiArNjIzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODUsNiArNjk3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk0LDYgKzcwNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzEsNyArNzQ2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvbGlicmZiL3JmYmRlY29kZXIuYyBiL2dzdC9saWJyZmIvcmZiZGVjb2Rlci5jCmluZGV4IDg4ZjNiMDMuLmJkMjI1YWQgMTAwNjQ0Ci0tLSBhL2dzdC9saWJyZmIvcmZiZGVjb2Rlci5jCisrKyBiL2dzdC9saWJyZmIvcmZiZGVjb2Rlci5jCkBAIC04OSw4ICs4OSw3IEBACiAKICAgZ19jbGVhcl9lcnJvciAoJmRlY29kZXItPmVycm9yKTsKIAotICBpZiAoZGVjb2Rlci0+ZGF0YSkKLSAgICBnX2ZyZWUgKGRlY29kZXItPmRhdGEpOworICBnX2ZyZWUgKGRlY29kZXItPmRhdGEpOwogCiAgIGdfZnJlZSAoZGVjb2Rlcik7CiB9CkBAIC0yMzQsOCArMjMzLDcgQEAKICAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGxlbiA+IDAsIE5VTEwpOwogCiAgIGlmIChHX1VOTElLRUxZIChsZW4gPiBkZWNvZGVyLT5kYXRhX2xlbikpIHsKLSAgICBpZiAoZGVjb2Rlci0+ZGF0YSkKLSAgICAgIGdfZnJlZSAoZGVjb2Rlci0+ZGF0YSk7CisgICAgZ19mcmVlIChkZWNvZGVyLT5kYXRhKTsKICAgICBkZWNvZGVyLT5kYXRhID0gZ19tYWxsb2MgKGxlbik7CiAgICAgZGVjb2Rlci0+ZGF0YV9sZW4gPSBsZW47CiAgIH0KZGlmZiAtLWdpdCBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuYW0gYi9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmY1ZDQ0Li4wMDAwMDAwCi0tLSBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuYW0KKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1wbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RsaXZlYWRkZXIubGEKLQotbGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMgPSBsaXZlYWRkZXIuYwotbGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCA9IFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotCi1ub2luc3RfSEVBREVSUyA9IGxpdmVhZGRlci5oCmRpZmYgLS1naXQgYS9nc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5jIGIvZ3N0L2xpdmVhZGRlci9saXZlYWRkZXIuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY2MDQxOS4uMDAwMDAwMAotLS0gYS9nc3QvbGl2ZWFkZGVyL2xpdmVhZGRlci5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUzOCArMCwwIEBACi0vKgotICogR1N0cmVhbWVyCi0gKgotICogIENvcHlyaWdodCAyMDEyIENvbGxhYm9yYSBMdGQKLSAqICBDb3B5cmlnaHQgMjAwOCBOb2tpYSBDb3Jwb3JhdGlvbgotICogICBAYXV0aG9yOiBPbGl2aWVyIENyZXRlIDxvbGl2aWVyLmNyZXRlQGNvbGxhYm9yYS5jby51az4KLSAqCi0gKiBXaXRoIHBhcnRzIGNvcGllZCBmcm9tIHRoZSBhZGRlciBwbHVnaW4gd2hpY2ggaXMKLSAqIENvcHlyaWdodCAoQykgMTk5OSwyMDAwIEVyaWsgV2FsdGhpbnNlbiA8b21lZ2FAY3NlLm9naS5lZHU+Ci0gKiAgICAgICAgICAgICAgICAgICAgMjAwMSBUaG9tYXMgPHRob21hc0BhcGVzdGFhcnQub3JnPgotICogICAgICAgICAgICAgICAyMDA1LDIwMDYgV2ltIFRheW1hbnMgPHdpbUBmbHVlbmRvLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCi0gKgotICovCi0vKioKLSAqIFNFQ1RJT046ZWxlbWVudC1saXZlYWRkZXIKLSAqIEBzZWVfYWxzbzogYWRkZXIKLSAqCi0gKiBUaGUgbGl2ZSBhZGRlciBhbGxvd3MgdG8gbWl4IHNldmVyYWwgc3RyZWFtcyBpbnRvIG9uZSBieSBhZGRpbmcgdGhlIGRhdGEuCi0gKiBNaXhlZCBkYXRhIGlzIGNsYW1wZWQgdG8gdGhlIG1pbi9tYXggdmFsdWVzIG9mIHRoZSBkYXRhIGZvcm1hdC4KLSAqCi0gKiBVbmxpa2UgdGhlIGFkZGVyLCB0aGUgbGl2ZWFkZGVyIG1peGVzIHRoZSBzdHJlYW1zIGFjY29yZGluZyB0aGUgdGhlaXIKLSAqIHRpbWVzdGFtcHMgYW5kIHdhaXRzIGZvciBzb21lIG1pbGxpLXNlY29uZHMgYmVmb3JlIHRyeWluZyBkb2luZyB0aGUgbWl4aW5nLgotICovCi0KLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgImxpdmVhZGRlci5oIgotCi0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotI2RlZmluZSBERUZBVUxUX0xBVEVOQ1lfTVMgNjAKLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAobGl2ZV9hZGRlcl9kZWJ1Zyk7Ci0jZGVmaW5lIEdTVF9DQVRfREVGQVVMVCAobGl2ZV9hZGRlcl9kZWJ1ZykKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9saXZlX2FkZGVyX3NpbmtfdGVtcGxhdGUgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rXyV1IiwKLSAgICBHU1RfUEFEX1NJTkssCi0gICAgR1NUX1BBRF9SRVFVRVNULAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0FVRElPX0NBUFNfTUFLRSAoInsgUzgsIFU4LCAiCi0gICAgICAgICAgICBHU1RfQVVESU9fTkUgKFMxNikgIiwiIEdTVF9BVURJT19ORSAoVTE2KSAiLCIKLSAgICAgICAgICAgIEdTVF9BVURJT19ORSAoUzMyKSAiLCIgR1NUX0FVRElPX05FIChVMzIpICIsIgotICAgICAgICAgICAgR1NUX0FVRElPX05FIChGMzIpICIsIiBHU1RfQVVESU9fTkUgKEY2NCkgIn0iKSkKLSAgICApOwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2xpdmVfYWRkZXJfc3JjX3RlbXBsYXRlID0KLUdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9BVURJT19DQVBTX01BS0UgKCJ7IFM4LCBVOCwgIgotICAgICAgICAgICAgR1NUX0FVRElPX05FIChTMTYpICIsIiBHU1RfQVVESU9fTkUgKFUxNikgIiwiCi0gICAgICAgICAgICBHU1RfQVVESU9fTkUgKFMzMikgIiwiIEdTVF9BVURJT19ORSAoVTMyKSAiLCIKLSAgICAgICAgICAgIEdTVF9BVURJT19ORSAoRjMyKSAiLCIgR1NUX0FVRElPX05FIChGNjQpICJ9IikpCi0gICAgKTsKLQotLyogVmFsdmUgc2lnbmFscyBhbmQgYXJncyAqLwotZW51bQotewotICAvKiBGSUxMIE1FICovCi0gIExBU1RfU0lHTkFMCi19OwotCi1lbnVtCi17Ci0gIFBST1BfMCwKLSAgUFJPUF9MQVRFTkNZLAotfTsKLQotdHlwZWRlZiBzdHJ1Y3QgX0dzdExpdmVBZGRlclBhZFByaXZhdGUKLXsKLSAgR3N0U2VnbWVudCBzZWdtZW50OwotICBnYm9vbGVhbiBlb3M7Ci0KLSAgR3N0Q2xvY2tUaW1lIGV4cGVjdGVkX3RpbWVzdGFtcDsKLQotfSBHc3RMaXZlQWRkZXJQYWRQcml2YXRlOwotCi1HX0RFRklORV9UWVBFIChHc3RMaXZlQWRkZXIsIGdzdF9saXZlX2FkZGVyLCBHU1RfVFlQRV9FTEVNRU5UKTsKLQotc3RhdGljIHZvaWQgZ3N0X2xpdmVfYWRkZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwotc3RhdGljIHZvaWQKLWdzdF9saXZlX2FkZGVyX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSAgICBndWludCBwcm9wX2lkLCBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKLXN0YXRpYyB2b2lkCi1nc3RfbGl2ZV9hZGRlcl9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci0KLXN0YXRpYyBHc3RQYWQgKmdzdF9saXZlX2FkZGVyX3JlcXVlc3RfbmV3X3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCi0gICAgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lLCBjb25zdCBHc3RDYXBzICogY2Fwcyk7Ci1zdGF0aWMgdm9pZCBnc3RfbGl2ZV9hZGRlcl9yZWxlYXNlX3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFBhZCAqIHBhZCk7Ci1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9saXZlX2FkZGVyX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOwotCi1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2xpdmVfYWRkZXJfc2V0Y2FwcyAoR3N0TGl2ZUFkZGVyICogYWRkZXIsIEdzdFBhZCAqIHBhZCwKLSAgICBHc3RDYXBzICogY2Fwcyk7Ci1zdGF0aWMgR3N0Q2FwcyAqZ3N0X2xpdmVfYWRkZXJfc2lua19nZXRjYXBzIChHc3RMaXZlQWRkZXIgKiBhZGRlciwgR3N0UGFkICogcGFkLAotICAgIEdzdENhcHMgKiBmaWx0ZXIpOwotc3RhdGljIGdib29sZWFuIGdzdF9saXZlX2FkZGVyX3NyY19hY3RpdmF0ZV9tb2RlIChHc3RQYWQgKiBwYWQsCi0gICAgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RQYWRNb2RlIG1vZGUsIGdib29sZWFuIGFjdGl2ZSk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2xpdmVfYWRkZXJfc3JjX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KTsKLQotc3RhdGljIHZvaWQgZ3N0X2xpdmVfYWRkZXJfbG9vcCAoZ3BvaW50ZXIgZGF0YSk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X2xpdmVfYWRkZXJfc3JjX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfbGl2ZV9hZGRlcl9zaW5rX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfbGl2ZV9hZGRlcl9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKLSAgICBHc3RFdmVudCAqIGV2ZW50KTsKLQotCi1zdGF0aWMgdm9pZCByZXNldF9wYWRfcHJpdmF0ZSAoR3N0UGFkICogcGFkKTsKLQotLyogY2xpcHBpbmcgdmVyc2lvbnMgKi8KLSNkZWZpbmUgTUFLRV9GVU5DKG5hbWUsdHlwZSx0dHlwZSxtaW4sbWF4KSAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgdm9pZCBuYW1lICh0eXBlICpvdXQsIHR5cGUgKmluLCBnaW50IGJ5dGVzKSB7ICAgICAgICAgICAgXAotICBnaW50IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZm9yIChpID0gMDsgaSA8IGJ5dGVzIC8gc2l6ZW9mICh0eXBlKTsgaSsrKSAgICAgICAgICAgICAgICAgICBcCi0gICAgb3V0W2ldID0gQ0xBTVAgKCh0dHlwZSlvdXRbaV0gKyAodHR5cGUpaW5baV0sIG1pbiwgbWF4KTsgICAgXAotfQotCi0vKiBub24tY2xpcHBpbmcgdmVyc2lvbnMgKGZvciBmbG9hdCkgKi8KLSNkZWZpbmUgTUFLRV9GVU5DX05DKG5hbWUsdHlwZSx0dHlwZSkgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1zdGF0aWMgdm9pZCBuYW1lICh0eXBlICpvdXQsIHR5cGUgKmluLCBnaW50IGJ5dGVzKSB7ICAgICAgICAgICAgXAotICBnaW50IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZm9yIChpID0gMDsgaSA8IGJ5dGVzIC8gc2l6ZW9mICh0eXBlKTsgaSsrKSAgICAgICAgICAgICAgICAgICBcCi0gICAgb3V0W2ldID0gKHR0eXBlKW91dFtpXSArICh0dHlwZSlpbltpXTsgICAgICAgICAgICAgICAgICAgICAgXAotfQotCi0vKiAqSU5ERU5ULU9GRiogKi8KLU1BS0VfRlVOQyAoYWRkX2ludDMyLCBnaW50MzIsIGdpbnQ2NCwgR19NSU5JTlQzMiwgR19NQVhJTlQzMikKLU1BS0VfRlVOQyAoYWRkX2ludDE2LCBnaW50MTYsIGdpbnQzMiwgR19NSU5JTlQxNiwgR19NQVhJTlQxNikKLU1BS0VfRlVOQyAoYWRkX2ludDgsIGdpbnQ4LCBnaW50MTYsIEdfTUlOSU5UOCwgR19NQVhJTlQ4KQotTUFLRV9GVU5DIChhZGRfdWludDMyLCBndWludDMyLCBndWludDY0LCAwLCBHX01BWFVJTlQzMikKLU1BS0VfRlVOQyAoYWRkX3VpbnQxNiwgZ3VpbnQxNiwgZ3VpbnQzMiwgMCwgR19NQVhVSU5UMTYpCi1NQUtFX0ZVTkMgKGFkZF91aW50OCwgZ3VpbnQ4LCBndWludDE2LCAwLCBHX01BWFVJTlQ4KQotTUFLRV9GVU5DX05DIChhZGRfZmxvYXQ2NCwgZ2RvdWJsZSwgZ2RvdWJsZSkKLU1BS0VfRlVOQ19OQyAoYWRkX2Zsb2F0MzIsIGdmbG9hdCwgZ2Zsb2F0KQotLyogKklOREVOVC1PTiogKi8KLQotCi1zdGF0aWMgdm9pZAotZ3N0X2xpdmVfYWRkZXJfY2xhc3NfaW5pdCAoR3N0TGl2ZUFkZGVyQ2xhc3MgKiBrbGFzcykKLXsKLSAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKLQotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAobGl2ZV9hZGRlcl9kZWJ1ZywgImxpdmVhZGRlciIsIDAsICJMaXZlIEFkZGVyIik7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9saXZlX2FkZGVyX3NyY190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X2xpdmVfYWRkZXJfc2lua190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLCAiTGl2ZSBBZGRlciBlbGVtZW50IiwKLSAgICAgICJHZW5lcmljL0F1ZGlvIiwKLSAgICAgICJNaXhlcyBsaXZlL2Rpc2NvbnRpbnVvdXMgYXVkaW8gc3RyZWFtcyIsCi0gICAgICAiT2xpdmllciBDcmV0ZSA8b2xpdmllci5jcmV0ZUBjb2xsYWJvcmEuY28udWs+Iik7Ci0KLSAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfbGl2ZV9hZGRlcl9maW5hbGl6ZTsKLSAgZ29iamVjdF9jbGFzcy0+c2V0X3Byb3BlcnR5ID0gZ3N0X2xpdmVfYWRkZXJfc2V0X3Byb3BlcnR5OwotICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfbGl2ZV9hZGRlcl9nZXRfcHJvcGVydHk7Ci0KLSAgZ3N0ZWxlbWVudF9jbGFzcy0+cmVxdWVzdF9uZXdfcGFkID0gZ3N0X2xpdmVfYWRkZXJfcmVxdWVzdF9uZXdfcGFkOwotICBnc3RlbGVtZW50X2NsYXNzLT5yZWxlYXNlX3BhZCA9IGdzdF9saXZlX2FkZGVyX3JlbGVhc2VfcGFkOwotICBnc3RlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfbGl2ZV9hZGRlcl9jaGFuZ2Vfc3RhdGU7Ci0KLSAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9MQVRFTkNZLAotICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJsYXRlbmN5IiwgIkJ1ZmZlcmluZyBsYXRlbmN5IiwKLSAgICAgICAgICAiQW1vdW50IG9mIGRhdGEgdG8gYnVmZmVyIChpbiBtaWxsaXNlY29uZHMpIiwKLSAgICAgICAgICAwLCBHX01BWFVJTlQsIERFRkFVTFRfTEFURU5DWV9NUywKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9saXZlX2FkZGVyX2luaXQgKEdzdExpdmVBZGRlciAqIGFkZGVyKQotewotICBhZGRlci0+c3JjcGFkID0KLSAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmZ3N0X2xpdmVfYWRkZXJfc3JjX3RlbXBsYXRlLCAic3JjIik7Ci0gIGdzdF9wYWRfc2V0X3F1ZXJ5X2Z1bmN0aW9uIChhZGRlci0+c3JjcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9saXZlX2FkZGVyX3NyY19xdWVyeSkpOwotICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoYWRkZXItPnNyY3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbGl2ZV9hZGRlcl9zcmNfZXZlbnQpKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZhdGVtb2RlX2Z1bmN0aW9uIChhZGRlci0+c3JjcGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9saXZlX2FkZGVyX3NyY19hY3RpdmF0ZV9tb2RlKSk7Ci0gIGdzdF9lbGVtZW50X2FkZF9wYWQgKEdTVF9FTEVNRU5UIChhZGRlciksIGFkZGVyLT5zcmNwYWQpOwotCi0gIGFkZGVyLT5wYWRjb3VudCA9IDA7Ci0gIGFkZGVyLT5mdW5jID0gTlVMTDsKLSAgZ19jb25kX2luaXQgKCZhZGRlci0+bm90X2VtcHR5X2NvbmQpOwotCi0gIGFkZGVyLT5uZXh0X3RpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0KLSAgYWRkZXItPmxhdGVuY3lfbXMgPSBERUZBVUxUX0xBVEVOQ1lfTVM7Ci0KLSAgYWRkZXItPmJ1ZmZlcnMgPSBnX3F1ZXVlX25ldyAoKTsKLX0KLQotCi1zdGF0aWMgdm9pZAotZ3N0X2xpdmVfYWRkZXJfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXIgPSBHU1RfTElWRV9BRERFUiAob2JqZWN0KTsKLQotICBnX2NvbmRfY2xlYXIgKCZhZGRlci0+bm90X2VtcHR5X2NvbmQpOwotCi0gIGdfcXVldWVfZm9yZWFjaCAoYWRkZXItPmJ1ZmZlcnMsIChHRnVuYykgZ3N0X21pbmlfb2JqZWN0X3VucmVmLCBOVUxMKTsKLSAgd2hpbGUgKGdfcXVldWVfcG9wX2hlYWQgKGFkZGVyLT5idWZmZXJzKSkgewotICB9Ci0gIGdfcXVldWVfZnJlZSAoYWRkZXItPmJ1ZmZlcnMpOwotCi0gIGdfbGlzdF9mcmVlIChhZGRlci0+c2lua3BhZHMpOwotCi0gIEdfT0JKRUNUX0NMQVNTIChnc3RfbGl2ZV9hZGRlcl9wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKLX0KLQotCi1zdGF0aWMgdm9pZAotZ3N0X2xpdmVfYWRkZXJfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXIgPSBHU1RfTElWRV9BRERFUiAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBjYXNlIFBST1BfTEFURU5DWToKLSAgICB7Ci0gICAgICBndWludDY0IG5ld19sYXRlbmN5LCBvbGRfbGF0ZW5jeTsKLQotICAgICAgbmV3X2xhdGVuY3kgPSBnX3ZhbHVlX2dldF91aW50ICh2YWx1ZSk7Ci0KLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAgICAgb2xkX2xhdGVuY3kgPSBhZGRlci0+bGF0ZW5jeV9tczsKLSAgICAgIGFkZGVyLT5sYXRlbmN5X21zID0gbmV3X2xhdGVuY3k7Ci0gICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotCi0gICAgICAvKiBwb3N0IG1lc3NhZ2UgaWYgbGF0ZW5jeSBjaGFuZ2VkLCB0aGlzIHdpbGwgaW5mb3JtIHRoZSBwYXJlbnQgcGlwZWxpbmUKLSAgICAgICAqIHRoYXQgYSBsYXRlbmN5IHJlY29uZmlndXJhdGlvbiBpcyBwb3NzaWJsZS9uZWVkZWQuICovCi0gICAgICBpZiAobmV3X2xhdGVuY3kgIT0gb2xkX2xhdGVuY3kpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJsYXRlbmN5IGNoYW5nZWQgdG86ICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICAgIEdTVF9USU1FX0FSR1MgKG5ld19sYXRlbmN5KSk7Ci0KLSAgICAgICAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVF9DQVNUIChhZGRlciksCi0gICAgICAgICAgICBnc3RfbWVzc2FnZV9uZXdfbGF0ZW5jeSAoR1NUX09CSkVDVF9DQVNUIChhZGRlcikpKTsKLSAgICAgIH0KLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLQotc3RhdGljIHZvaWQKLWdzdF9saXZlX2FkZGVyX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKLSAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBHc3RMaXZlQWRkZXIgKmFkZGVyID0gR1NUX0xJVkVfQURERVIgKG9iamVjdCk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX0xBVEVOQ1k6Ci0gICAgICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLSAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBhZGRlci0+bGF0ZW5jeV9tcyk7Ci0gICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7Ci0gICAgICBicmVhazsKLSAgfQotfQotCi0KLS8qIHdlIGNhbiBvbmx5IGFjY2VwdCBjYXBzIHRoYXQgd2UgYW5kIGRvd25zdHJlYW0gY2FuIGhhbmRsZS4gKi8KLXN0YXRpYyBHc3RDYXBzICoKLWdzdF9saXZlX2FkZGVyX3NpbmtfZ2V0Y2FwcyAoR3N0TGl2ZUFkZGVyICogYWRkZXIsIEdzdFBhZCAqIHBhZCwKLSAgICBHc3RDYXBzICogZmlsdGVyKQotewotICBHc3RDYXBzICpyZXN1bHQsICpwZWVyY2FwcywgKnNpbmtjYXBzOwotCi0gIC8qIGdldCB0aGUgZG93bnN0cmVhbSBwb3NzaWJsZSBjYXBzICovCi0gIHBlZXJjYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKGFkZGVyLT5zcmNwYWQsIGZpbHRlcik7Ci0gIC8qIGdldCB0aGUgYWxsb3dlZCBjYXBzIG9uIHRoaXMgc2lua3BhZCwgd2UgdXNlIHRoZSBmaXhlZCBjYXBzIGZ1bmN0aW9uIHNvCi0gICAqIHRoYXQgaXQgZG9lcyBub3QgY2FsbCByZWN1cnNpdmVseSBpbiB0aGlzIGZ1bmN0aW9uLiAqLwotICBzaW5rY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAocGFkKTsKLSAgaWYgKCFzaW5rY2FwcykKLSAgICBzaW5rY2FwcyA9IGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChwYWQpOwotICBpZiAocGVlcmNhcHMpIHsKLSAgICAvKiBpZiB0aGUgcGVlciBoYXMgY2FwcywgaW50ZXJzZWN0ICovCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJpbnRlcnNlY3RpbmcgcGVlciBhbmQgdGVtcGxhdGUgY2FwcyIpOwotICAgIHJlc3VsdCA9IGdzdF9jYXBzX2ludGVyc2VjdCAocGVlcmNhcHMsIHNpbmtjYXBzKTsKLSAgICBnc3RfY2Fwc191bnJlZiAoc2lua2NhcHMpOwotICAgIGdzdF9jYXBzX3VucmVmIChwZWVyY2Fwcyk7Ci0gIH0gZWxzZSB7Ci0gICAgLyogdGhlIHBlZXIgaGFzIG5vIGNhcHMgKG9yIHRoZXJlIGlzIG5vIHBlZXIpLCBqdXN0IHVzZSB0aGUgYWxsb3dlZCBjYXBzCi0gICAgICogb2YgdGhpcyBzaW5rcGFkLiAqLwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAibm8gcGVlciBjYXBzLCB1c2luZyBzaW5rY2FwcyIpOwotICAgIHJlc3VsdCA9IHNpbmtjYXBzOwotICB9Ci0KLSAgcmV0dXJuIHJlc3VsdDsKLX0KLQotc3RydWN0IFNldENhcHNJdGVyQ3R4Ci17Ci0gIEdzdFBhZCAqcGFkOwotICBHc3RDYXBzICpjYXBzOwotICBnYm9vbGVhbiBhbGxfdmFsaWQ7Ci19OwotCi1zdGF0aWMgdm9pZAotY2hlY2tfb3RoZXJfY2FwcyAoY29uc3QgR1ZhbHVlICogaXRlbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBHc3RQYWQgKm90aGVycGFkID0gR1NUX1BBRCAoZ192YWx1ZV9nZXRfb2JqZWN0IChpdGVtKSk7Ci0gIHN0cnVjdCBTZXRDYXBzSXRlckN0eCAqY3R4ID0gdXNlcl9kYXRhOwotCi0gIGlmIChvdGhlcnBhZCA9PSBjdHgtPnBhZCkKLSAgICByZXR1cm47Ci0KLSAgaWYgKCFnc3RfcGFkX3BlZXJfcXVlcnlfYWNjZXB0X2NhcHMgKG90aGVycGFkLCBjdHgtPmNhcHMpKQotICAgIGN0eC0+YWxsX3ZhbGlkID0gRkFMU0U7Ci19Ci0KLXN0YXRpYyB2b2lkCi1zZXRfb3RoZXJfY2FwcyAoY29uc3QgR1ZhbHVlICogaXRlbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQotewotICBHc3RQYWQgKm90aGVycGFkID0gR1NUX1BBRCAoZ192YWx1ZV9nZXRfb2JqZWN0IChpdGVtKSk7Ci0gIHN0cnVjdCBTZXRDYXBzSXRlckN0eCAqY3R4ID0gdXNlcl9kYXRhOwotCi0gIGlmIChvdGhlcnBhZCA9PSBjdHgtPnBhZCkKLSAgICByZXR1cm47Ci0KLSAgaWYgKCFnc3RfcGFkX3NldF9jYXBzIChvdGhlcnBhZCwgY3R4LT5jYXBzKSkKLSAgICBjdHgtPmFsbF92YWxpZCA9IEZBTFNFOwotfQotCi0vKiB0aGUgZmlyc3QgY2FwcyB3ZSByZWNlaXZlIG9uIGFueSBvZiB0aGUgc2lua3BhZHMgd2lsbCBkZWZpbmUgdGhlIGNhcHMgZm9yIGFsbAotICogdGhlIG90aGVyIHNpbmtwYWRzIGJlY2F1c2Ugd2UgY2FuIG9ubHkgbWl4IHN0cmVhbXMgd2l0aCB0aGUgc2FtZSBjYXBzLgotICogKi8KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2xpdmVfYWRkZXJfc2V0Y2FwcyAoR3N0TGl2ZUFkZGVyICogYWRkZXIsIEdzdFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdEl0ZXJhdG9yICppdGVyOwotICBzdHJ1Y3QgU2V0Q2Fwc0l0ZXJDdHggY3R4OwotCi0gIEdTVF9MT0dfT0JKRUNUIChhZGRlciwgInNldHRpbmcgY2FwcyBvbiBwYWQgJXAsJXMgdG8gJSIgR1NUX1BUUl9GT1JNQVQsIHBhZCwKLSAgICAgIEdTVF9QQURfTkFNRSAocGFkKSwgY2Fwcyk7Ci0KLSAgLyogRklYTUUsIHNlZSBpZiB0aGUgb3RoZXIgcGFkcyBjYW4gYWNjZXB0IHRoZSBmb3JtYXQuIEFsc28gbG9jayB0aGUKLSAgICogZm9ybWF0IG9uIHRoZSBvdGhlciBwYWRzIHRvIHRoaXMgbmV3IGZvcm1hdC4gKi8KLSAgaXRlciA9IGdzdF9lbGVtZW50X2l0ZXJhdGVfc2lua19wYWRzIChHU1RfRUxFTUVOVCAoYWRkZXIpKTsKLSAgY3R4LnBhZCA9IHBhZDsKLSAgY3R4LmNhcHMgPSBjYXBzOwotICBjdHguYWxsX3ZhbGlkID0gVFJVRTsKLSAgd2hpbGUgKGdzdF9pdGVyYXRvcl9mb3JlYWNoIChpdGVyLCBjaGVja19vdGhlcl9jYXBzLCAmY3R4KSA9PQotICAgICAgR1NUX0lURVJBVE9SX1JFU1lOQykgewotICAgIGN0eC5hbGxfdmFsaWQgPSBUUlVFOwotICAgIGdzdF9pdGVyYXRvcl9yZXN5bmMgKGl0ZXIpOwotICB9Ci0gIGlmICghY3R4LmFsbF92YWxpZCkgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoYWRkZXIsICJDYXBzIGFyZSBub3QgYWNjZXB0YWJsZSBieSBvdGhlciBzaW5rcGFkcyIpOwotICAgIGdzdF9pdGVyYXRvcl9mcmVlIChpdGVyKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICB3aGlsZSAoZ3N0X2l0ZXJhdG9yX2ZvcmVhY2ggKGl0ZXIsIHNldF9vdGhlcl9jYXBzLCAmY3R4KSA9PQotICAgICAgR1NUX0lURVJBVE9SX1JFU1lOQykgewotICAgIGN0eC5hbGxfdmFsaWQgPSBUUlVFOwotICAgIGdzdF9pdGVyYXRvcl9yZXN5bmMgKGl0ZXIpOwotICB9Ci0gIGdzdF9pdGVyYXRvcl9mcmVlIChpdGVyKTsKLQotICBpZiAoIWN0eC5hbGxfdmFsaWQpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGFkZGVyLCAiQ291bGQgbm90IHNldCBjYXBzIG9uIHRoZSBvdGhlciBzaW5rIHBhZHMiKTsKLSAgICByZXR1cm4gRkFMU0U7Ci0gIH0KLQotICBpZiAoIWdzdF9wYWRfc2V0X2NhcHMgKGFkZGVyLT5zcmNwYWQsIGNhcHMpKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChhZGRlciwgIkNvdWxkIG5vdCBzZXQgY2FwcyBkb3duc3RyZWFtIik7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gIC8qIHBhcnNlIGNhcHMgbm93ICovCi0gIGlmICghZ3N0X2F1ZGlvX2luZm9fZnJvbV9jYXBzICgmYWRkZXItPmluZm8sIGNhcHMpKQotICAgIGdvdG8gbm90X3N1cHBvcnRlZDsKLQotICBpZiAoR1NUX0FVRElPX0lORk9fSVNfSU5URUdFUiAoJmFkZGVyLT5pbmZvKSkgewotICAgIHN3aXRjaCAoR1NUX0FVRElPX0lORk9fV0lEVEggKCZhZGRlci0+aW5mbykpIHsKLSAgICAgIGNhc2UgODoKLSAgICAgICAgYWRkZXItPmZ1bmMgPSBHU1RfQVVESU9fSU5GT19JU19TSUdORUQgKCZhZGRlci0+aW5mbykgPwotICAgICAgICAgICAgKEdzdExpdmVBZGRlckZ1bmN0aW9uKSBhZGRfaW50OCA6IChHc3RMaXZlQWRkZXJGdW5jdGlvbikgYWRkX3VpbnQ4OwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgMTY6Ci0gICAgICAgIGFkZGVyLT5mdW5jID0gR1NUX0FVRElPX0lORk9fSVNfU0lHTkVEICgmYWRkZXItPmluZm8pID8KLSAgICAgICAgICAgIChHc3RMaXZlQWRkZXJGdW5jdGlvbikgYWRkX2ludDE2IDogKEdzdExpdmVBZGRlckZ1bmN0aW9uKQotICAgICAgICAgICAgYWRkX3VpbnQxNjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDMyOgotICAgICAgICBhZGRlci0+ZnVuYyA9IEdTVF9BVURJT19JTkZPX0lTX1NJR05FRCAoJmFkZGVyLT5pbmZvKSA/Ci0gICAgICAgICAgICAoR3N0TGl2ZUFkZGVyRnVuY3Rpb24pIGFkZF9pbnQzMiA6IChHc3RMaXZlQWRkZXJGdW5jdGlvbikKLSAgICAgICAgICAgIGFkZF91aW50MzI7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgZ290byBub3Rfc3VwcG9ydGVkOwotICAgIH0KLSAgfSBlbHNlIGlmIChHU1RfQVVESU9fSU5GT19JU19GTE9BVCAoJmFkZGVyLT5pbmZvKSkgewotICAgIHN3aXRjaCAoR1NUX0FVRElPX0lORk9fV0lEVEggKCZhZGRlci0+aW5mbykpIHsKLSAgICAgIGNhc2UgMzI6Ci0gICAgICAgIGFkZGVyLT5mdW5jID0gKEdzdExpdmVBZGRlckZ1bmN0aW9uKSBhZGRfZmxvYXQzMjsKLSAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIDY0OgotICAgICAgICBhZGRlci0+ZnVuYyA9IChHc3RMaXZlQWRkZXJGdW5jdGlvbikgYWRkX2Zsb2F0NjQ7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgZ290byBub3Rfc3VwcG9ydGVkOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICBnb3RvIG5vdF9zdXBwb3J0ZWQ7Ci0gIH0KLQotICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICByZXR1cm4gVFJVRTsKLQotICAvKiBFUlJPUlMgKi8KLW5vdF9zdXBwb3J0ZWQ6Ci0gIHsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAidW5zdXBwb3J0ZWQgZm9ybWF0IHNldCBhcyBjYXBzIik7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfbGl2ZV9hZGRlcl9mbHVzaF9zdGFydCAoR3N0TGl2ZUFkZGVyICogYWRkZXIpCi17Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiRGlzYWJsaW5nIHBvcCBvbiBxdWV1ZSIpOwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAvKiBtYXJrIG91cnNlbHZlcyBhcyBmbHVzaGluZyAqLwotICBhZGRlci0+c3JjcmVzdWx0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7Ci0KLSAgLyogRW1wdHkgdGhlIHF1ZXVlICovCi0gIGdfcXVldWVfZm9yZWFjaCAoYWRkZXItPmJ1ZmZlcnMsIChHRnVuYykgZ3N0X21pbmlfb2JqZWN0X3VucmVmLCBOVUxMKTsKLSAgd2hpbGUgKGdfcXVldWVfcG9wX2hlYWQgKGFkZGVyLT5idWZmZXJzKSk7Ci0KLSAgLyogdW5sb2NrIGNsb2NrLCB3ZSBqdXN0IHVuc2NoZWR1bGUsIHRoZSBlbnRyeSB3aWxsIGJlIHJlbGVhc2VkIGJ5IHRoZQotICAgKiBsb2NraW5nIHN0cmVhbWluZyB0aHJlYWQuICovCi0gIGlmIChhZGRlci0+Y2xvY2tfaWQpCi0gICAgZ3N0X2Nsb2NrX2lkX3Vuc2NoZWR1bGUgKGFkZGVyLT5jbG9ja19pZCk7Ci0KLSAgZ19jb25kX2Jyb2FkY2FzdCAoJmFkZGVyLT5ub3RfZW1wdHlfY29uZCk7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2xpdmVfYWRkZXJfc3JjX2FjdGl2YXRlX21vZGUgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAotICAgIEdzdFBhZE1vZGUgbW9kZSwgZ2Jvb2xlYW4gYWN0aXZlKQotewotICBHc3RMaXZlQWRkZXIgKmFkZGVyID0gR1NUX0xJVkVfQURERVIgKHBhcmVudCk7Ci0gIGdib29sZWFuIHJlc3VsdCA9IFRSVUU7Ci0KLSAgaWYgKG1vZGUgPT0gR1NUX1BBRF9NT0RFX1BVTEwpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmIChhY3RpdmUpIHsKLSAgICAvKiBNYXJrIGFzIG5vbiBmbHVzaGluZyAqLwotICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAgIGFkZGVyLT5zcmNyZXN1bHQgPSBHU1RfRkxPV19PSzsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotCi0gICAgLyogc3RhcnQgcHVzaGluZyBvdXQgYnVmZmVycyAqLwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiU3RhcnRpbmcgdGFzayBvbiBzcmNwYWQiKTsKLSAgICBnc3RfcGFkX3N0YXJ0X3Rhc2sgKGFkZGVyLT5zcmNwYWQsCi0gICAgICAgIChHc3RUYXNrRnVuY3Rpb24pIGdzdF9saXZlX2FkZGVyX2xvb3AsIGFkZGVyLCBOVUxMKTsKLSAgfSBlbHNlIHsKLSAgICAvKiBtYWtlIHN1cmUgYWxsIGRhdGEgcHJvY2Vzc2luZyBzdG9wcyBBU0FQICovCi0gICAgZ3N0X2xpdmVfYWRkZXJfZmx1c2hfc3RhcnQgKGFkZGVyKTsKLQotICAgIC8qIE5PVEUgdGhpcyB3aWxsIGhhcmRsb2NrIGlmIHRoZSBzdGF0ZSBjaGFuZ2UgaXMgY2FsbGVkIGZyb20gdGhlIHNyYyBwYWQKLSAgICAgKiB0YXNrIHRocmVhZCBiZWNhdXNlIHdlIHdpbGwgX2pvaW4oKSB0aGUgdGhyZWFkLiAqLwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiU3RvcHBpbmcgdGFzayBvbiBzcmNwYWQiKTsKLSAgICByZXN1bHQgPSBnc3RfcGFkX3N0b3BfdGFzayAocGFkKTsKLSAgfQotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2xpdmVfYWRkZXJfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXIgPSBHU1RfTElWRV9BRERFUiAocGFyZW50KTsKLSAgR3N0TGl2ZUFkZGVyUGFkUHJpdmF0ZSAqcGFkcHJpdmF0ZSA9IE5VTEw7Ci0gIGdib29sZWFuIHJldCA9IFRSVUU7Ci0KLSAgcGFkcHJpdmF0ZSA9IGdzdF9wYWRfZ2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkKTsKLQotICBpZiAoIXBhZHByaXZhdGUpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIEdTVF9MT0dfT0JKRUNUIChhZGRlciwgInJlY2VpdmVkICVzIiwgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKLQotICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKLSAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOgotICAgIHsKLSAgICAgIEdzdENhcHMgKmNhcHM7Ci0KLSAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOwotICAgICAgcmV0ID0gZ3N0X2xpdmVfYWRkZXJfc2V0Y2FwcyAoYWRkZXIsIHBhZCwgY2Fwcyk7Ci0gICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgotICAgIHsKLSAgICAgIGNvbnN0IEdzdFNlZ21lbnQgKnNlZ21lbnQ7Ci0gICAgICBHc3RTZWdtZW50IGxpdmVzZWdtZW50OwotCi0gICAgICBnc3RfZXZlbnRfcGFyc2Vfc2VnbWVudCAoZXZlbnQsICZzZWdtZW50KTsKLQotICAgICAgLyogd2UgbmVlZCB0aW1lIGZvciBub3cgKi8KLSAgICAgIGlmIChzZWdtZW50LT5mb3JtYXQgIT0gR1NUX0ZPUk1BVF9USU1FKQotICAgICAgICBnb3RvIG5ld3NlZ193cm9uZ19mb3JtYXQ7Ci0KLSAgICAgIC8qIG5vdyBjb25maWd1cmUgdGhlIHZhbHVlcywgd2UgbmVlZCB0aGVzZSB0byB0aW1lIHRoZSByZWxlYXNlIG9mIHRoZQotICAgICAgICogYnVmZmVycyBvbiB0aGUgc3JjcGFkLiAqLwotICAgICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gICAgICBnc3Rfc2VnbWVudF9jb3B5X2ludG8gKHNlZ21lbnQsICZwYWRwcml2YXRlLT5zZWdtZW50KTsKLSAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKLQotICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJmxpdmVzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOwotICAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChhZGRlci0+c3JjcGFkLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZsaXZlc2VnbWVudCkpOwotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUQVJUOgotICAgICAgZ3N0X2xpdmVfYWRkZXJfZmx1c2hfc3RhcnQgKGFkZGVyKTsKLSAgICAgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoYWRkZXItPnNyY3BhZCwgZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAgICAgYWRkZXItPm5leHRfdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSAgICAgIHJlc2V0X3BhZF9wcml2YXRlIChwYWQpOwotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgICAgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoYWRkZXItPnNyY3BhZCwgZXZlbnQpOwotICAgICAgcmV0ICY9Ci0gICAgICAgICAgZ3N0X2xpdmVfYWRkZXJfc3JjX2FjdGl2YXRlX21vZGUgKGFkZGVyLT5zcmNwYWQsIEdTVF9PQkpFQ1QgKGFkZGVyKSwKLSAgICAgICAgICBHU1RfUEFEX01PREVfUFVTSCwgVFJVRSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9FVkVOVF9FT1M6Ci0gICAgewotICAgICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0KLSAgICAgIHJldCA9IGFkZGVyLT5zcmNyZXN1bHQgPT0gR1NUX0ZMT1dfT0s7Ci0gICAgICBpZiAocmV0ICYmICFwYWRwcml2YXRlLT5lb3MpIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJxdWV1aW5nIEVPUyIpOwotICAgICAgICBwYWRwcml2YXRlLT5lb3MgPSBUUlVFOwotICAgICAgICBnX2NvbmRfYnJvYWRjYXN0ICgmYWRkZXItPm5vdF9lbXB0eV9jb25kKTsKLSAgICAgIH0gZWxzZSBpZiAocGFkcHJpdmF0ZS0+ZW9zKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiZHJvcHBpbmcgRU9TLCB3ZSBhcmUgYWxyZWFkeSBFT1MiKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiZHJvcHBpbmcgRU9TLCByZWFzb24gJXMiLAotICAgICAgICAgICAgZ3N0X2Zsb3dfZ2V0X25hbWUgKGFkZGVyLT5zcmNyZXN1bHQpKTsKLSAgICAgIH0KLQotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLQotICAgICAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7Ci0gICAgICBicmVhazsKLSAgICB9Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJldCA9IGdzdF9wYWRfcHVzaF9ldmVudCAoYWRkZXItPnNyY3BhZCwgZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotZG9uZToKLQotICByZXR1cm4gcmV0OwotCi0gIC8qIEVSUk9SUyAqLwotbmV3c2VnX3dyb25nX2Zvcm1hdDoKLSAgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAicmVjZWl2ZWQgbm9uIFRJTUUgc2VnbWVudCIpOwotICAgIHJldCA9IEZBTFNFOwotICAgIGdvdG8gZG9uZTsKLSAgfQotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9saXZlX2FkZGVyX3F1ZXJ5X3Bvc19kdXIgKEdzdExpdmVBZGRlciAqIGFkZGVyLCBHc3RGb3JtYXQgZm9ybWF0LAotICAgIGdib29sZWFuIHBvc2l0aW9uLCBnaW50NjQgKiBvdXR2YWx1ZSkKLXsKLSAgR1ZhbHVlIGl0ZW0gPSB7IDAgfTsKLSAgZ2ludDY0IG1heCA9IEdfTUlOSU5UNjQ7Ci0gIGdib29sZWFuIHJlcyA9IFRSVUU7Ci0gIEdzdEl0ZXJhdG9yICppdDsKLSAgZ2Jvb2xlYW4gZG9uZSA9IEZBTFNFOwotCi0gIGl0ID0gZ3N0X2VsZW1lbnRfaXRlcmF0ZV9zaW5rX3BhZHMgKEdTVF9FTEVNRU5UX0NBU1QgKGFkZGVyKSk7Ci0gIHdoaWxlICghZG9uZSkgewotICAgIHN3aXRjaCAoZ3N0X2l0ZXJhdG9yX25leHQgKGl0LCAmaXRlbSkpIHsKLSAgICAgIGNhc2UgR1NUX0lURVJBVE9SX0RPTkU6Ci0gICAgICAgIGRvbmUgPSBUUlVFOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR1NUX0lURVJBVE9SX09LOgotICAgICAgewotICAgICAgICBHc3RQYWQgKnBhZCA9IEdTVF9QQURfQ0FTVCAoZ192YWx1ZV9nZXRfb2JqZWN0ICgmaXRlbSkpOwotICAgICAgICBnaW50NjQgdmFsdWU7Ci0gICAgICAgIGdib29sZWFuIGN1cnJlczsKLQotICAgICAgICAvKiBhc2sgc2luayBwZWVyIGZvciBkdXJhdGlvbiAqLwotICAgICAgICBpZiAocG9zaXRpb24pCi0gICAgICAgICAgY3VycmVzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X3Bvc2l0aW9uIChwYWQsIGZvcm1hdCwgJnZhbHVlKTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGN1cnJlcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9kdXJhdGlvbiAocGFkLCBmb3JtYXQsICZ2YWx1ZSk7Ci0KLSAgICAgICAgLyogdGFrZSBtYXggZnJvbSBhbGwgdmFsaWQgcmV0dXJuIHZhbHVlcyAqLwotICAgICAgICAvKiBPbmx5IGlmIHRoZSBmb3JtYXQgaXMgdGhlIG9uZSB3ZSByZXF1ZXN0ZWQsIG90aGVyd2lzZSBpZ25vcmUgaXQgPwotICAgICAgICAgKi8KLQotICAgICAgICBpZiAoY3VycmVzKSB7Ci0gICAgICAgICAgcmVzICY9IGN1cnJlczsKLQotICAgICAgICAgIC8qIHZhbGlkIHVua25vd24gbGVuZ3RoLCBzdG9wIHNlYXJjaGluZyAqLwotICAgICAgICAgIGlmICh2YWx1ZSA9PSAtMSkgewotICAgICAgICAgICAgbWF4ID0gdmFsdWU7Ci0gICAgICAgICAgICBkb25lID0gVFJVRTsKLSAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlID4gbWF4KSB7Ci0gICAgICAgICAgICBtYXggPSB2YWx1ZTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgZ192YWx1ZV9yZXNldCAoJml0ZW0pOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICAgIGNhc2UgR1NUX0lURVJBVE9SX1JFU1lOQzoKLSAgICAgICAgbWF4ID0gLTE7Ci0gICAgICAgIHJlcyA9IFRSVUU7Ci0gICAgICAgIGJyZWFrOwotICAgICAgZGVmYXVsdDoKLSAgICAgICAgcmVzID0gRkFMU0U7Ci0gICAgICAgIGRvbmUgPSBUUlVFOwotICAgICAgICBicmVhazsKLSAgICB9Ci0gIH0KLQotICBnX3ZhbHVlX3Vuc2V0ICgmaXRlbSk7Ci0gIGdzdF9pdGVyYXRvcl9mcmVlIChpdCk7Ci0KLSAgaWYgKHJlcykKLSAgICAqb3V0dmFsdWUgPSBtYXg7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotLyogRklYTUU6Ci0gKgotICogV2hlbiB3ZSBhZGQgYSBuZXcgc3RyZWFtIChvciByZW1vdmUgYSBzdHJlYW0pIHRoZSBkdXJhdGlvbiBtaWdodAotICogYWxzbyBiZWNvbWUgaW52YWxpZCBhZ2FpbiBhbmQgd2UgbmVlZCB0byBwb3N0IGEgbmV3IERVUkFUSU9OCi0gKiBtZXNzYWdlIHRvIG5vdGlmeSB0aGlzIGZhY3QgdG8gdGhlIHBhcmVudC4KLSAqIEZvciBub3cgd2UgdGFrZSB0aGUgbWF4IG9mIGFsbCB0aGUgdXBzdHJlYW0gZWxlbWVudHMgc28gdGhlIHNpbXBsZQotICogY2FzZXMgd29yayBhdCBsZWFzdCBzb21ld2hhdC4KLSAqLwotc3RhdGljIGdib29sZWFuCi1nc3RfbGl2ZV9hZGRlcl9xdWVyeV9kdXJhdGlvbiAoR3N0TGl2ZUFkZGVyICogYWRkZXIsIEdzdFF1ZXJ5ICogcXVlcnkpCi17Ci0gIEdzdEZvcm1hdCBmb3JtYXQ7Ci0gIGdpbnQ2NCBtYXg7Ci0gIGdib29sZWFuIHJlczsKLQotICAvKiBwYXJzZSBmb3JtYXQgKi8KLSAgZ3N0X3F1ZXJ5X3BhcnNlX2R1cmF0aW9uIChxdWVyeSwgJmZvcm1hdCwgTlVMTCk7Ci0KLSAgcmVzID0gZ3N0X2xpdmVfYWRkZXJfcXVlcnlfcG9zX2R1ciAoYWRkZXIsIGZvcm1hdCwgRkFMU0UsICZtYXgpOwotCi0gIGlmIChyZXMpIHsKLSAgICAvKiBhbmQgc3RvcmUgdGhlIG1heCAqLwotICAgIGdzdF9xdWVyeV9zZXRfZHVyYXRpb24gKHF1ZXJ5LCBmb3JtYXQsIG1heCk7Ci0gIH0KLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9saXZlX2FkZGVyX3F1ZXJ5X3Bvc2l0aW9uIChHc3RMaXZlQWRkZXIgKiBhZGRlciwgR3N0UXVlcnkgKiBxdWVyeSkKLXsKLSAgR3N0Rm9ybWF0IGZvcm1hdDsKLSAgZ2ludDY0IG1heDsKLSAgZ2Jvb2xlYW4gcmVzOwotCi0gIC8qIHBhcnNlIGZvcm1hdCAqLwotICBnc3RfcXVlcnlfcGFyc2VfcG9zaXRpb24gKHF1ZXJ5LCAmZm9ybWF0LCBOVUxMKTsKLQotICByZXMgPSBnc3RfbGl2ZV9hZGRlcl9xdWVyeV9wb3NfZHVyIChhZGRlciwgZm9ybWF0LCBUUlVFLCAmbWF4KTsKLQotICBpZiAocmVzKSB7Ci0gICAgLyogYW5kIHN0b3JlIHRoZSBtYXggKi8KLSAgICBnc3RfcXVlcnlfc2V0X3Bvc2l0aW9uIChxdWVyeSwgZm9ybWF0LCBtYXgpOwotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotCi0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X2xpdmVfYWRkZXJfc3JjX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0UXVlcnkgKiBxdWVyeSkKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlciA9IEdTVF9MSVZFX0FEREVSIChwYXJlbnQpOwotICBnYm9vbGVhbiByZXMgPSBGQUxTRTsKLQotICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKLSAgICBjYXNlIEdTVF9RVUVSWV9MQVRFTkNZOgotICAgIHsKLSAgICAgIC8qIFdlIG5lZWQgdG8gc2VuZCB0aGUgcXVlcnkgdXBzdHJlYW0gYW5kIGFkZCB0aGUgcmV0dXJuZWQgbGF0ZW5jeSB0byBvdXIKLSAgICAgICAqIG93biAqLwotICAgICAgcmVzID0gZ3N0X3BhZF9xdWVyeV9kZWZhdWx0IChwYWQsIHBhcmVudCwgcXVlcnkpOwotCi0gICAgICBpZiAocmVzKSB7Ci0gICAgICAgIEdzdENsb2NrVGltZSBteV9sYXRlbmN5ID0gYWRkZXItPmxhdGVuY3lfbXMgKiBHU1RfTVNFQ09ORDsKLSAgICAgICAgR3N0Q2xvY2tUaW1lIG1pbl9sYXRlbmN5LCBtYXhfbGF0ZW5jeTsKLSAgICAgICAgZ2Jvb2xlYW4gbGl2ZTsKLQotICAgICAgICBnc3RfcXVlcnlfcGFyc2VfbGF0ZW5jeSAocXVlcnksICZsaXZlLCAmbWluX2xhdGVuY3ksICZtYXhfbGF0ZW5jeSk7Ci0KLSAgICAgICAgR1NUX09CSkVDVF9MT0NLIChhZGRlcik7Ci0gICAgICAgIGFkZGVyLT5wZWVyX2xhdGVuY3kgPSBtaW5fbGF0ZW5jeTsKLSAgICAgICAgbWluX2xhdGVuY3kgKz0gbXlfbGF0ZW5jeTsKLSAgICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLQotICAgICAgICAvKiBNYWtlIHN1cmUgd2UgZG9uJ3QgcmlzayBhbiBvdmVyZmxvdyAqLwotICAgICAgICBpZiAobWF4X2xhdGVuY3kgPCBHX01BWFVJTlQ2NCAtIG15X2xhdGVuY3kpCi0gICAgICAgICAgbWF4X2xhdGVuY3kgKz0gbXlfbGF0ZW5jeTsKLSAgICAgICAgZWxzZQotICAgICAgICAgIG1heF9sYXRlbmN5ID0gR19NQVhVSU5UNjQ7Ci0gICAgICAgIGdzdF9xdWVyeV9zZXRfbGF0ZW5jeSAocXVlcnksIFRSVUUsIG1pbl9sYXRlbmN5LCBtYXhfbGF0ZW5jeSk7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiQ2FsY3VsYXRlZCB0b3RhbCBsYXRlbmN5IDogbWluICUiCi0gICAgICAgICAgICBHU1RfVElNRV9GT1JNQVQgIiBtYXggJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAobWluX2xhdGVuY3kpLCBHU1RfVElNRV9BUkdTIChtYXhfbGF0ZW5jeSkpOwotICAgICAgfQotICAgICAgYnJlYWs7Ci0gICAgfQotICAgIGNhc2UgR1NUX1FVRVJZX0RVUkFUSU9OOgotICAgICAgcmVzID0gZ3N0X2xpdmVfYWRkZXJfcXVlcnlfZHVyYXRpb24gKGFkZGVyLCBxdWVyeSk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9RVUVSWV9QT1NJVElPTjoKLSAgICAgIHJlcyA9IGdzdF9saXZlX2FkZGVyX3F1ZXJ5X3Bvc2l0aW9uIChhZGRlciwgcXVlcnkpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIHJlcyA9IGdzdF9wYWRfcXVlcnlfZGVmYXVsdCAocGFkLCBwYXJlbnQsIHF1ZXJ5KTsKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfbGl2ZV9hZGRlcl9zaW5rX3F1ZXJ5IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0UXVlcnkgKiBxdWVyeSkKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlciA9IEdTVF9MSVZFX0FEREVSIChwYXJlbnQpOwotICBnYm9vbGVhbiByZXM7Ci0KLSAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7Ci0gICAgY2FzZSBHU1RfUVVFUllfQ0FQUzoKLSAgICB7Ci0gICAgICBHc3RDYXBzICpmaWx0ZXI7Ci0gICAgICBHc3RDYXBzICpyZXN1bHQ7Ci0KLSAgICAgIGdzdF9xdWVyeV9wYXJzZV9jYXBzIChxdWVyeSwgJmZpbHRlcik7Ci0gICAgICByZXN1bHQgPSBnc3RfbGl2ZV9hZGRlcl9zaW5rX2dldGNhcHMgKGFkZGVyLCBwYWQsIGZpbHRlcik7Ci0gICAgICBnc3RfcXVlcnlfc2V0X2NhcHNfcmVzdWx0IChxdWVyeSwgcmVzdWx0KTsKLSAgICAgIGdzdF9jYXBzX3VucmVmIChyZXN1bHQpOwotICAgICAgcmVzID0gVFJVRTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBkZWZhdWx0OgotICAgICAgcmVzID0gZ3N0X3BhZF9xdWVyeV9kZWZhdWx0IChwYWQsIHBhcmVudCwgcXVlcnkpOwotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWZvcndhcmRfZXZlbnRfZnVuYyAoY29uc3QgR1ZhbHVlICogaXRlbSwgR1ZhbHVlICogcmV0LCBncG9pbnRlciB1c2VyX2RhdGEpCi17Ci0gIEdzdFBhZCAqcGFkID0gR1NUX1BBRCAoZ192YWx1ZV9nZXRfb2JqZWN0IChpdGVtKSk7Ci0gIEdzdEV2ZW50ICpldmVudCA9IHVzZXJfZGF0YTsKLQotICBnc3RfZXZlbnRfcmVmIChldmVudCk7Ci0gIEdTVF9MT0dfT0JKRUNUIChwYWQsICJBYm91dCB0byBzZW5kIGV2ZW50ICVzIiwgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKLSAgaWYgKCFnc3RfcGFkX3B1c2hfZXZlbnQgKHBhZCwgZXZlbnQpKSB7Ci0gICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAocmV0LCBGQUxTRSk7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChwYWQsICJTZW5kaW5nIGV2ZW50ICAlcCAoJXMpIGZhaWxlZC4iLAotICAgICAgICBldmVudCwgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfTE9HX09CSkVDVCAocGFkLCAiU2VudCBldmVudCAgJXAgKCVzKS4iLAotICAgICAgICBldmVudCwgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKLSAgfQotICByZXR1cm4gVFJVRTsKLX0KLQotLyogZm9yd2FyZHMgdGhlIGV2ZW50IHRvIGFsbCBzaW5rcGFkcywgdGFrZXMgb3duZXJzaGlwIG9mIHRoZQotICogZXZlbnQKLSAqCi0gKiBSZXR1cm5zOiBUUlVFIGlmIHRoZSBldmVudCBjb3VsZCBiZSBmb3J3YXJkZWQgb24gYWxsCi0gKiBzaW5rcGFkcy4KLSAqLwotc3RhdGljIGdib29sZWFuCi1mb3J3YXJkX2V2ZW50IChHc3RMaXZlQWRkZXIgKiBhZGRlciwgR3N0RXZlbnQgKiBldmVudCkKLXsKLSAgR3N0SXRlcmF0b3IgKml0OwotICBHVmFsdWUgdnJldCA9IHsgMCB9OwotCi0gIEdTVF9MT0dfT0JKRUNUIChhZGRlciwgIkZvcndhcmRpbmcgZXZlbnQgJXAgKCVzKSIsIGV2ZW50LAotICAgICAgR1NUX0VWRU5UX1RZUEVfTkFNRSAoZXZlbnQpKTsKLQotICBnX3ZhbHVlX2luaXQgKCZ2cmV0LCBHX1RZUEVfQk9PTEVBTik7Ci0gIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKCZ2cmV0LCBUUlVFKTsKLSAgaXQgPSBnc3RfZWxlbWVudF9pdGVyYXRlX3NpbmtfcGFkcyAoR1NUX0VMRU1FTlRfQ0FTVCAoYWRkZXIpKTsKLSAgZ3N0X2l0ZXJhdG9yX2ZvbGQgKGl0LCBmb3J3YXJkX2V2ZW50X2Z1bmMsICZ2cmV0LCBldmVudCk7Ci0gIGdzdF9pdGVyYXRvcl9mcmVlIChpdCk7Ci0KLSAgcmV0dXJuIGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKCZ2cmV0KTsKLX0KLQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9saXZlX2FkZGVyX3NyY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXIgPSBHU1RfTElWRV9BRERFUiAocGFyZW50KTsKLSAgZ2Jvb2xlYW4gcmVzdWx0OwotCi0gIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX1FPUzoKLSAgICAgIC8qIFRPRE8gOiBRb1MgbWlnaHQgYmUgdHJpY2t5ICovCi0gICAgICByZXN1bHQgPSBGQUxTRTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0VWRU5UX05BVklHQVRJT046Ci0gICAgICAvKiBUT0RPIDogbmF2aWdhdGlvbiBpcyByYXRoZXIgcG9pbnRsZXNzLiAqLwotICAgICAgcmVzdWx0ID0gRkFMU0U7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgLyoganVzdCBmb3J3YXJkIHRoZSByZXN0IGZvciBub3cgKi8KLSAgICAgIHJlc3VsdCA9IGZvcndhcmRfZXZlbnQgKGFkZGVyLCBldmVudCk7Ci0gICAgICBicmVhazsKLSAgfQotCi0gIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotCi0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLXN0YXRpYyBndWludAotZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX2Zyb21fZHVyYXRpb24gKEdzdExpdmVBZGRlciAqIGFkZGVyLAotICAgIEdzdENsb2NrVGltZSBkdXJhdGlvbikKLXsKLSAgZ3VpbnQ2NCByZXQgPSBHU1RfQVVESU9fSU5GT19CUEYgKCZhZGRlci0+aW5mbykgKgotICAgICAgZ3N0X3V0aWxfdWludDY0X3NjYWxlX2ludF9yb3VuZCAoZHVyYXRpb24sCi0gICAgICBHU1RfQVVESU9fSU5GT19SQVRFICgmYWRkZXItPmluZm8pLCBHU1RfU0VDT05EKTsKLQotICByZXR1cm4gKGd1aW50KSByZXQ7Ci19Ci0KLXN0YXRpYyBHc3RDbG9ja1RpbWUKLWdzdF9saXZlX2FkZGVyX2xlbmd0aF90b19kdXJhdGlvbiAoR3N0TGl2ZUFkZGVyICogYWRkZXIsIGd1aW50IHNpemUpCi17Ci0gIHJldHVybiBHU1RfRlJBTUVTX1RPX0NMT0NLX1RJTUUgKChzaXplIC8KLSAgICAgICAgICBHU1RfQVVESU9fSU5GT19CUEYgKCZhZGRlci0+aW5mbykpLAotICAgICAgR1NUX0FVRElPX0lORk9fUkFURSAoJmFkZGVyLT5pbmZvKSk7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfbGl2ZV9hZGRlcl9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLSAgR3N0TGl2ZUFkZGVyICphZGRlciA9IEdTVF9MSVZFX0FEREVSIChwYXJlbnQpOwotICBHc3RMaXZlQWRkZXJQYWRQcml2YXRlICpwYWRwcml2YXRlID0gTlVMTDsKLSAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKLSAgR0xpc3QgKml0ZW0gPSBOVUxMOwotICBHc3RDbG9ja1RpbWUgc2tpcCA9IDA7Ci0gIGdpbnQ2NCBkcmlmdCA9IDA7ICAgICAgICAgICAgIC8qIFBvc2l0aXZlIGlmIG5ldyBidWZmZXIgYWZ0ZXIgb2xkIGJ1ZmZlciAqLwotICBnc2l6ZSBidWZmZXJfc2l6ZSA9IDA7Ci0gIGdzaXplIHN1YmJ1ZmZlcl9zaXplID0gMDsKLSAgZ3NpemUgb2Zmc2V0ID0gMDsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLQotICByZXQgPSBhZGRlci0+c3JjcmVzdWx0OwotCi0gIEdTVF9ERUJVRyAoIkluY29taW5nIGJ1ZmZlciB0aW1lOiUiIEdTVF9USU1FX0ZPUk1BVCAiIGR1cmF0aW9uOiUiCi0gICAgICBHU1RfVElNRV9GT1JNQVQsIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpKSwKLSAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikpKTsKLQotICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJQYXNzaW5nIG5vbi1vayByZXN1bHQgZnJvbSBzcmM6ICVzIiwKLSAgICAgICAgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7Ci0gICAgZ290byBvdXQ7Ci0gIH0KLQotICBwYWRwcml2YXRlID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwotCi0gIGlmICghcGFkcHJpdmF0ZSkgewotICAgIHJldCA9IEdTVF9GTE9XX05PVF9MSU5LRUQ7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgICBnb3RvIG91dDsKLSAgfQotCi0gIGlmIChwYWRwcml2YXRlLT5lb3MpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgIlJlY2VpdmVkIGJ1ZmZlciBhZnRlciBFT1MiKTsKLSAgICByZXQgPSBHU1RfRkxPV19FT1M7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgICBnb3RvIG91dDsKLSAgfQotCi0gIGlmICghR1NUX0JVRkZFUl9USU1FU1RBTVBfSVNfVkFMSUQgKGJ1ZmZlcikpCi0gICAgZ290byBpbnZhbGlkX3RpbWVzdGFtcDsKLQotICBpZiAocGFkcHJpdmF0ZS0+c2VnbWVudC5mb3JtYXQgPT0gR1NUX0ZPUk1BVF9VTkRFRklORUQpIHsKLSAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGFkZGVyLCAiTm8gbmV3LXNlZ21lbnQgcmVjZWl2ZWQsIgotICAgICAgICAiIGluaXRpYWxpemluZyBzZWdtZW50IHdpdGggdGltZSAwLi4tMSIpOwotICAgIGdzdF9zZWdtZW50X2luaXQgKCZwYWRwcml2YXRlLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOwotICB9Ci0KLSAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChidWZmZXIpOwotCi0gIGRyaWZ0ID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgLSBwYWRwcml2YXRlLT5leHBlY3RlZF90aW1lc3RhbXA7Ci0KLSAgLyogSnVzdCBzZWUgaWYgd2UgcmVjZWl2ZSBpbnZhbGlkIHRpbWVzdGFtcC9kdXJhdGlvbnMgKi8KLSAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChwYWRwcml2YXRlLT5leHBlY3RlZF90aW1lc3RhbXApICYmCi0gICAgICAhR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoYnVmZmVyLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCkgJiYKLSAgICAgIChkcmlmdCAhPSAwKSkgewotICAgIEdTVF9MT0dfT0JKRUNUIChhZGRlciwKLSAgICAgICAgIlRpbWVzdGFtcCBkaXNjb250aW51aXR5IHdpdGhvdXQgdGhlIERJU0NPTlQgZmxhZyBzZXQiCi0gICAgICAgICIgKGV4cGVjdGVkICUiIEdTVF9USU1FX0ZPUk1BVCAiLCBnb3QgJSIgR1NUX1RJTUVfRk9STUFUCi0gICAgICAgICIgZHJpZnQ6JSIgR19HSU5UNjRfRk9STUFUICJtcykiLAotICAgICAgICBHU1RfVElNRV9BUkdTIChwYWRwcml2YXRlLT5leHBlY3RlZF90aW1lc3RhbXApLAotICAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSksIGRyaWZ0IC8gR1NUX01TRUNPTkQpOwotCi0gICAgLyogV2UgYWNjZXB0IGRyaWZ0cyBvZiAxMG1zICovCi0gICAgaWYgKEFCUyAoZHJpZnQpIDwgKDEwICogR1NUX01TRUNPTkQpKSB7Ci0gICAgICBHU1RfREVCVUcgKCJDb3JyZWN0aW5nIG1pbm9yIGRyaWZ0Iik7Ci0gICAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSA9IHBhZHByaXZhdGUtPmV4cGVjdGVkX3RpbWVzdGFtcDsKLSAgICB9Ci0gIH0KLQotCi0gIC8qIElmIHRoZXJlIGlzIG5vIGR1cmF0aW9uLCBsZXRzIHNldCBvbmUgKi8KLSAgaWYgKCFHU1RfQlVGRkVSX0RVUkFUSU9OX0lTX1ZBTElEIChidWZmZXIpKSB7Ci0gICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSA9IChnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpICogR1NUX1NFQ09ORCkgLwotICAgICAgICAoR1NUX0FVRElPX0lORk9fQlBGICgmYWRkZXItPmluZm8pICoKLSAgICAgICAgR1NUX0FVRElPX0lORk9fUkFURSAoJmFkZGVyLT5pbmZvKSk7Ci0gICAgcGFkcHJpdmF0ZS0+ZXhwZWN0ZWRfdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSAgfSBlbHNlIHsKLSAgICBwYWRwcml2YXRlLT5leHBlY3RlZF90aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArCi0gICAgICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcik7Ci0gIH0KLQotCi0gIC8qCi0gICAqIExldHMgY2xpcCB0aGUgYnVmZmVyIHRvIHRoZSBzZWdtZW50IChzbyB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5IGFib3V0Ci0gICAqIGNsaXBpbmcgYWZ0ZXJ3YXJkcykuCi0gICAqIFRoaXMgc2hvdWxkIGFsc28gZ3VhcmFudGVlIHVzIHRoYXQgd2UnbGwgaGF2ZSB2YWxpZCB0aW1lc3RhbXBzIGFuZAotICAgKiBkdXJhdGlvbnMgYWZ0ZXJ3YXJkcwotICAgKi8KLQotICBidWZmZXIgPSBnc3RfYXVkaW9fYnVmZmVyX2NsaXAgKGJ1ZmZlciwgJnBhZHByaXZhdGUtPnNlZ21lbnQsCi0gICAgICBHU1RfQVVESU9fSU5GT19SQVRFICgmYWRkZXItPmluZm8pLCBHU1RfQVVESU9fSU5GT19CUEYgKCZhZGRlci0+aW5mbykpOwotCi0gIC8qIGJ1ZmZlciBjYW4gYmUgTlVMTCBpZiBpdCdzIGNvbXBsZXRlbHkgb3V0c2lkZSBvZiB0aGUgc2VnbWVudCAqLwotICBpZiAoIWJ1ZmZlcikgewotICAgIEdTVF9ERUJVRyAoIkJ1ZmZlciBjb21wbGV0ZWx5IG91dHNpZGUgb2YgY29uZmlndXJlZCBzZWdtZW50LCBkcm9wcGluZyBpdCIpOwotICAgIGdvdG8gb3V0OwotICB9Ci0KLSAgLyoKLSAgICogTWFrZSBzdXJlIGFsbCBpbmNvbWluZyBidWZmZXJzIHNoYXJlIHRoZSBzYW1lIHRpbWVzdGFtcGluZwotICAgKi8KLSAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgPQotICAgICAgZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lICgmcGFkcHJpdmF0ZS0+c2VnbWVudCwKLSAgICAgIHBhZHByaXZhdGUtPnNlZ21lbnQuZm9ybWF0LCBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSk7Ci0KLQotICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKGFkZGVyLT5uZXh0X3RpbWVzdGFtcCkgJiYKLSAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpIDwgYWRkZXItPm5leHRfdGltZXN0YW1wKSB7Ci0gICAgaWYgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpICsgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSA8Ci0gICAgICAgIGFkZGVyLT5uZXh0X3RpbWVzdGFtcCkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJCdWZmZXIgaXMgbGF0ZSwgZHJvcHBpbmcgKHRzOiAlIiBHU1RfVElNRV9GT1JNQVQKLSAgICAgICAgICAiIGR1cmF0aW9uOiAlIiBHU1RfVElNRV9GT1JNQVQgIikiLAotICAgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpKSwKLSAgICAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpKSk7Ci0gICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwotICAgICAgZ290byBvdXQ7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHNraXAgPSBhZGRlci0+bmV4dF90aW1lc3RhbXAgLSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKTsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiQnVmZmVyIGlzIHBhcnRpYWxseSBsYXRlLCBza2lwcGluZyAlIgotICAgICAgICAgIEdTVF9USU1FX0ZPUk1BVCwgR1NUX1RJTUVfQVJHUyAoc2tpcCkpOwotICAgIH0KLSAgfQotCi0gIC8qIElmIG91ciBuZXcgYnVmZmVyJ3MgaGVhZCBpcyBoaWdoZXIgdGhhbiB0aGUgcXVldWUncyBoZWFkLCBsZXRzIHdha2UgdXAsCi0gICAqIHdlIG1heSBub3QgaGF2ZSB0byB3YWl0IGZvciBhcyBsb25nCi0gICAqLwotICBpZiAoYWRkZXItPmNsb2NrX2lkICYmCi0gICAgICBnX3F1ZXVlX3BlZWtfaGVhZCAoYWRkZXItPmJ1ZmZlcnMpICE9IE5VTEwgJiYKLSAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpICsgc2tpcCA8Ci0gICAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoZ19xdWV1ZV9wZWVrX2hlYWQgKGFkZGVyLT5idWZmZXJzKSkpCi0gICAgZ3N0X2Nsb2NrX2lkX3Vuc2NoZWR1bGUgKGFkZGVyLT5jbG9ja19pZCk7Ci0KLSAgZm9yIChpdGVtID0gZ19xdWV1ZV9wZWVrX2hlYWRfbGluayAoYWRkZXItPmJ1ZmZlcnMpOwotICAgICAgaXRlbTsgaXRlbSA9IGdfbGlzdF9uZXh0IChpdGVtKSkgewotICAgIEdzdEJ1ZmZlciAqb2xkYnVmZmVyID0gaXRlbS0+ZGF0YTsKLSAgICBHc3RDbG9ja1RpbWUgb2xkX3NraXAgPSAwOwotICAgIEdzdENsb2NrVGltZSBtaXhfZHVyYXRpb24gPSAwOwotICAgIEdzdENsb2NrVGltZSBtaXhfc3RhcnQgPSAwOwotICAgIEdzdENsb2NrVGltZSBtaXhfZW5kID0gMDsKLSAgICBHc3RNYXBJbmZvIG9sZG1hcCwgbWFwOwotCi0gICAgLyogV2UgaGF2ZW4ndCByZWFjaGVkIG91ciBwbGFjZSB5ZXQgKi8KLSAgICBpZiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBza2lwID49Ci0gICAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChvbGRidWZmZXIpICsgR1NUX0JVRkZFUl9EVVJBVElPTiAob2xkYnVmZmVyKSkKLSAgICAgIGNvbnRpbnVlOwotCi0gICAgLyogV2UncmUgcGFzdCBvdXIgcGxhY2UsIGxldHMgaW5zZXJ0IG91c2VsdmVzIGhlcmUgKi8KLSAgICBpZiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpIDw9Ci0gICAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChvbGRidWZmZXIpKQotICAgICAgYnJlYWs7Ci0KLSAgICAvKiBpZiB3ZSByZWFjaCB0aGlzIHNwb3QsIHdlIGhhdmUgb3ZlcmxhcCwgc28gd2UgbXVzdCBtaXggKi8KLQotICAgIC8qIEZpcnN0IG1ha2UgYSBzdWJidWZmZXIgd2l0aCB0aGUgbm9uLW92ZXJsYXBwaW5nIHBhcnQgKi8KLSAgICBpZiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBza2lwIDwgR1NUX0JVRkZFUl9USU1FU1RBTVAgKG9sZGJ1ZmZlcikpIHsKLSAgICAgIEdzdEJ1ZmZlciAqc3ViYnVmZmVyID0gTlVMTDsKLSAgICAgIEdzdENsb2NrVGltZSBzdWJidWZmZXJfZHVyYXRpb24gPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAob2xkYnVmZmVyKSAtCi0gICAgICAgICAgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpICsgc2tpcCk7Ci0KLSAgICAgIGJ1ZmZlcl9zaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKTsKLSAgICAgIG9mZnNldCA9IGdzdF9saXZlX2FkZGVyX2xlbmd0aF9mcm9tX2R1cmF0aW9uIChhZGRlciwgc2tpcCk7Ci0gICAgICBzdWJidWZmZXJfc2l6ZSA9IGdzdF9saXZlX2FkZGVyX2xlbmd0aF9mcm9tX2R1cmF0aW9uIChhZGRlciwKLSAgICAgICAgICBzdWJidWZmZXJfZHVyYXRpb24pOwotCi0gICAgICBpZiAob2Zmc2V0ICsgc3ViYnVmZmVyX3NpemUgPiBidWZmZXJfc2l6ZSkgewotICAgICAgICBzdWJidWZmZXJfc2l6ZSA9IGJ1ZmZlcl9zaXplIC0gb2Zmc2V0OwotICAgICAgICBzdWJidWZmZXJfZHVyYXRpb24gPSBnc3RfbGl2ZV9hZGRlcl9sZW5ndGhfdG9fZHVyYXRpb24gKGFkZGVyLAotICAgICAgICAgICAgc3ViYnVmZmVyX3NpemUpOwotICAgICAgfQotCi0gICAgICBzdWJidWZmZXIgPSBnc3RfYnVmZmVyX2NvcHlfcmVnaW9uIChidWZmZXIsIEdTVF9CVUZGRVJfQ09QWV9BTEwsCi0gICAgICAgICAgb2Zmc2V0LCBzdWJidWZmZXJfc2l6ZSk7Ci0KLSAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChzdWJidWZmZXIpID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBza2lwOwotICAgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoc3ViYnVmZmVyKSA9IHN1YmJ1ZmZlcl9kdXJhdGlvbjsKLQotICAgICAgc2tpcCArPSBzdWJidWZmZXJfZHVyYXRpb247Ci0KLSAgICAgIGdfcXVldWVfaW5zZXJ0X2JlZm9yZSAoYWRkZXItPmJ1ZmZlcnMsIGl0ZW0sIHN1YmJ1ZmZlcik7Ci0gICAgfQotCi0gICAgLyogTm93IHdlIGFyZSBvbiB0aGUgb3ZlcmxhcHBpbmcgcGFydCAqLwotICAgIG9sZGJ1ZmZlciA9IGdzdF9idWZmZXJfbWFrZV93cml0YWJsZSAob2xkYnVmZmVyKTsKLSAgICBpdGVtLT5kYXRhID0gb2xkYnVmZmVyOwotCi0gICAgb2xkX3NraXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSArIHNraXAgLQotICAgICAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAob2xkYnVmZmVyKTsKLQotICAgIG1peF9zdGFydCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChvbGRidWZmZXIpICsgb2xkX3NraXA7Ci0KLSAgICBpZiAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKyBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpIDwKLSAgICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKG9sZGJ1ZmZlcikgKyBHU1RfQlVGRkVSX0RVUkFUSU9OIChvbGRidWZmZXIpKQotICAgICAgbWl4X2VuZCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpICsgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICBtaXhfZW5kID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKG9sZGJ1ZmZlcikgKwotICAgICAgICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKG9sZGJ1ZmZlcik7Ci0KLSAgICBtaXhfZHVyYXRpb24gPSBtaXhfZW5kIC0gbWl4X3N0YXJ0OwotCi0gICAgaWYgKCFHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWZmZXIsIEdTVF9CVUZGRVJfRkxBR19HQVApKSB7Ci0gICAgICBHU1RfQlVGRkVSX0ZMQUdfVU5TRVQgKG9sZGJ1ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0dBUCk7Ci0gICAgICBnc3RfYnVmZmVyX21hcCAob2xkYnVmZmVyLCAmb2xkbWFwLCBHU1RfTUFQX1dSSVRFKTsKLSAgICAgIGdzdF9idWZmZXJfbWFwIChidWZmZXIsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgICBhZGRlci0+ZnVuYyAob2xkbWFwLmRhdGEgKwotICAgICAgICAgIGdzdF9saXZlX2FkZGVyX2xlbmd0aF9mcm9tX2R1cmF0aW9uIChhZGRlciwgb2xkX3NraXApLAotICAgICAgICAgIG1hcC5kYXRhICsKLSAgICAgICAgICBnc3RfbGl2ZV9hZGRlcl9sZW5ndGhfZnJvbV9kdXJhdGlvbiAoYWRkZXIsIHNraXApLAotICAgICAgICAgIGdzdF9saXZlX2FkZGVyX2xlbmd0aF9mcm9tX2R1cmF0aW9uIChhZGRlciwgbWl4X2R1cmF0aW9uKSk7Ci0gICAgICBnc3RfYnVmZmVyX3VubWFwIChvbGRidWZmZXIsICZvbGRtYXApOwotICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwKTsKLSAgICB9Ci0gICAgc2tpcCArPSBtaXhfZHVyYXRpb247Ci0gIH0KLQotICBnX2NvbmRfYnJvYWRjYXN0ICgmYWRkZXItPm5vdF9lbXB0eV9jb25kKTsKLQotICBpZiAoc2tpcCA9PSBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpKSB7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgfSBlbHNlIHsKLSAgICBpZiAoc2tpcCkgewotICAgICAgR3N0Q2xvY2tUaW1lIHN1YmJ1ZmZlcl9kdXJhdGlvbiA9IEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikgLSBza2lwOwotICAgICAgR3N0Q2xvY2tUaW1lIHN1YmJ1ZmZlcl90cyA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpICsgc2tpcDsKLSAgICAgIEdzdEJ1ZmZlciAqbmV3X2J1ZmZlcjsKLQotICAgICAgYnVmZmVyX3NpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpOwotICAgICAgb2Zmc2V0ID0gZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX2Zyb21fZHVyYXRpb24gKGFkZGVyLCBza2lwKTsKLSAgICAgIHN1YmJ1ZmZlcl9zaXplID0gZ3N0X2xpdmVfYWRkZXJfbGVuZ3RoX2Zyb21fZHVyYXRpb24gKGFkZGVyLAotICAgICAgICAgIHN1YmJ1ZmZlcl9kdXJhdGlvbik7Ci0KLSAgICAgIGlmIChvZmZzZXQgKyBzdWJidWZmZXJfc2l6ZSA+IGJ1ZmZlcl9zaXplKSB7Ci0gICAgICAgIHN1YmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemUgLSBvZmZzZXQ7Ci0gICAgICAgIHN1YmJ1ZmZlcl9kdXJhdGlvbiA9IGdzdF9saXZlX2FkZGVyX2xlbmd0aF90b19kdXJhdGlvbiAoYWRkZXIsCi0gICAgICAgICAgICBzdWJidWZmZXJfc2l6ZSk7Ci0gICAgICB9Ci0KLSAgICAgIG5ld19idWZmZXIgPSBnc3RfYnVmZmVyX2NvcHlfcmVnaW9uIChidWZmZXIsCi0gICAgICAgICAgR1NUX0JVRkZFUl9DT1BZX0FMTCwgb2Zmc2V0LCBzdWJidWZmZXJfc2l6ZSk7Ci0KLSAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7Ci0gICAgICBidWZmZXIgPSBuZXdfYnVmZmVyOwotICAgICAgR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikgPSBzdWJidWZmZXJfdHM7Ci0gICAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpID0gc3ViYnVmZmVyX2R1cmF0aW9uOwotICAgIH0KLQotICAgIGlmIChpdGVtKQotICAgICAgZ19xdWV1ZV9pbnNlcnRfYmVmb3JlIChhZGRlci0+YnVmZmVycywgaXRlbSwgYnVmZmVyKTsKLSAgICBlbHNlCi0gICAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoYWRkZXItPmJ1ZmZlcnMsIGJ1ZmZlcik7Ci0gIH0KLQotb3V0OgotCi0gIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0KLSAgcmV0dXJuIHJldDsKLQotaW52YWxpZF90aW1lc3RhbXA6Ci0KLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgR1NUX0VMRU1FTlRfRVJST1IgKGFkZGVyLCBTVFJFQU0sIEZBSUxFRCwKLSAgICAgICgiQnVmZmVyIHdpdGhvdXQgYSB2YWxpZCB0aW1lc3RhbXAgcmVjZWl2ZWQiKSwKLSAgICAgICgiSW52YWxpZCB0aW1lc3RhbXAgcmVjZWl2ZWQgb24gYnVmZmVyIikpOwotCi0gIHJldHVybiBHU1RfRkxPV19FUlJPUjsKLX0KLQotLyoKLSAqIFRoaXMgb25seSB3b3JrcyBiZWNhdXNlIHRoZSBHc3RPYmplY3QgbG9jayBpcyB0YWtlbgotICoKLSAqIEl0IGNoZWNrcyBpZiBhbGwgc2luayBwYWRzIGFyZSBFT1MKLSAqLwotc3RhdGljIGdib29sZWFuCi1jaGVja19lb3NfbG9ja2VkIChHc3RMaXZlQWRkZXIgKiBhZGRlcikKLXsKLSAgR0xpc3QgKml0ZW07Ci0KLSAgLyogV2UgY2FuJ3QgYmUgRU9TIGlmIHdlIGhhdmUgbm8gc2lua3BhZHMgKi8KLSAgaWYgKGFkZGVyLT5zaW5rcGFkcyA9PSBOVUxMKQotICAgIHJldHVybiBGQUxTRTsKLQotICBmb3IgKGl0ZW0gPSBhZGRlci0+c2lua3BhZHM7IGl0ZW07IGl0ZW0gPSBnX2xpc3RfbmV4dCAoaXRlbSkpIHsKLSAgICBHc3RQYWQgKnBhZCA9IGl0ZW0tPmRhdGE7Ci0gICAgR3N0TGl2ZUFkZGVyUGFkUHJpdmF0ZSAqcGFkcHJpdmF0ZSA9IGdzdF9wYWRfZ2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkKTsKLQotICAgIGlmIChwYWRwcml2YXRlICYmIHBhZHByaXZhdGUtPmVvcyAhPSBUUlVFKQotICAgICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfbGl2ZV9hZGRlcl9sb29wIChncG9pbnRlciBkYXRhKQotewotICBHc3RMaXZlQWRkZXIgKmFkZGVyID0gR1NUX0xJVkVfQURERVIgKGRhdGEpOwotICBHc3RDbG9ja1RpbWUgYnVmZmVyX3RpbWVzdGFtcCA9IDA7Ci0gIEdzdENsb2NrVGltZSBzeW5jX3RpbWUgPSAwOwotICBHc3RDbG9jayAqY2xvY2sgPSBOVUxMOwotICBHc3RDbG9ja0lEIGlkID0gTlVMTDsKLSAgR3N0Q2xvY2tSZXR1cm4gcmV0OwotICBHc3RCdWZmZXIgKmJ1ZmZlciA9IE5VTEw7Ci0gIEdzdEZsb3dSZXR1cm4gcmVzdWx0OwotCi0gIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotCi1hZ2FpbjoKLQotICBmb3IgKDs7KSB7Ci0gICAgaWYgKGFkZGVyLT5zcmNyZXN1bHQgIT0gR1NUX0ZMT1dfT0spCi0gICAgICBnb3RvIGZsdXNoaW5nOwotICAgIGlmICghZ19xdWV1ZV9pc19lbXB0eSAoYWRkZXItPmJ1ZmZlcnMpKQotICAgICAgYnJlYWs7Ci0gICAgaWYgKGNoZWNrX2Vvc19sb2NrZWQgKGFkZGVyKSkKLSAgICAgIGdvdG8gZW9zOwotICAgIGdfY29uZF93YWl0ICgmYWRkZXItPm5vdF9lbXB0eV9jb25kLCBHU1RfT0JKRUNUX0dFVF9MT0NLIChhZGRlcikpOwotICB9Ci0KLSAgYnVmZmVyX3RpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChnX3F1ZXVlX3BlZWtfaGVhZCAoYWRkZXItPmJ1ZmZlcnMpKTsKLQotICBjbG9jayA9IEdTVF9FTEVNRU5UX0NMT0NLIChhZGRlcik7Ci0KLSAgLyogSWYgd2UgaGF2ZSBubyBjbG9jaywgdGhlbiB3ZSBjYW4ndCBkbyBhbnl0aGluZy4uIGVycm9yICovCi0gIGlmICghY2xvY2spIHsKLSAgICBpZiAoYWRkZXItPnBsYXlpbmcpCi0gICAgICBnb3RvIG5vX2Nsb2NrOwotICAgIGVsc2UKLSAgICAgIGdvdG8gcHVzaF9idWZmZXI7Ci0gIH0KLQotICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgInN5bmMgdG8gdGltZXN0YW1wICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgIEdTVF9USU1FX0FSR1MgKGJ1ZmZlcl90aW1lc3RhbXApKTsKLQotICBzeW5jX3RpbWUgPSBidWZmZXJfdGltZXN0YW1wICsgR1NUX0VMRU1FTlRfQ0FTVCAoYWRkZXIpLT5iYXNlX3RpbWU7Ci0gIC8qIGFkZCBsYXRlbmN5LCB0aGlzIGluY2x1ZGVzIG91ciBvd24gbGF0ZW5jeSBhbmQgdGhlIHBlZXIgbGF0ZW5jeS4gKi8KLSAgc3luY190aW1lICs9IGFkZGVyLT5sYXRlbmN5X21zICogR1NUX01TRUNPTkQ7Ci0gIHN5bmNfdGltZSArPSBhZGRlci0+cGVlcl9sYXRlbmN5OwotCi0gIC8qIGNyZWF0ZSBhbiBlbnRyeSBmb3IgdGhlIGNsb2NrICovCi0gIGlkID0gYWRkZXItPmNsb2NrX2lkID0gZ3N0X2Nsb2NrX25ld19zaW5nbGVfc2hvdF9pZCAoY2xvY2ssIHN5bmNfdGltZSk7Ci0gIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0KLSAgcmV0ID0gZ3N0X2Nsb2NrX2lkX3dhaXQgKGlkLCBOVUxMKTsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLQotICAvKiBhbmQgZnJlZSB0aGUgZW50cnkgKi8KLSAgZ3N0X2Nsb2NrX2lkX3VucmVmIChpZCk7Ci0gIGFkZGVyLT5jbG9ja19pZCA9IE5VTEw7Ci0KLSAgLyogYXQgdGhpcyBwb2ludCwgdGhlIGNsb2NrIGNvdWxkIGhhdmUgYmVlbiB1bmxvY2tlZCBieSBhIHRpbWVvdXQsIGEgbmV3Ci0gICAqIGhlYWQgZWxlbWVudCB3YXMgYWRkZWQgdG8gdGhlIHF1ZXVlIG9yIGJlY2F1c2Ugd2UgYXJlIHNodXR0aW5nIGRvd24uIENoZWNrCi0gICAqIGZvciBzaHV0ZG93biBmaXJzdC4gKi8KLQotICBpZiAoYWRkZXItPnNyY3Jlc3VsdCAhPSBHU1RfRkxPV19PSykKLSAgICBnb3RvIGZsdXNoaW5nOwotCi0gIGlmIChyZXQgPT0gR1NUX0NMT0NLX1VOU0NIRURVTEVEKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsCi0gICAgICAgICJXYWl0IGdvdCB1bnNjaGVkdWxlZCwgd2lsbCByZXRyeSB0byBwdXNoIHdpdGggbmV3IGJ1ZmZlciIpOwotICAgIGdvdG8gYWdhaW47Ci0gIH0KLQotICBpZiAocmV0ICE9IEdTVF9DTE9DS19PSyAmJiByZXQgIT0gR1NUX0NMT0NLX0VBUkxZKQotICAgIGdvdG8gY2xvY2tfZXJyb3I7Ci0KLXB1c2hfYnVmZmVyOgotCi0gIGJ1ZmZlciA9IGdfcXVldWVfcG9wX2hlYWQgKGFkZGVyLT5idWZmZXJzKTsKLQotICBpZiAoIWJ1ZmZlcikKLSAgICBnb3RvIGFnYWluOwotCi0gIC8qCi0gICAqIFdlIG1ha2Ugc3VyZSB0aGUgdGltZXN0YW1wcyBhcmUgZXhhY3RseSBjb250aWd1b3VzCi0gICAqIElmIGl0cyBvbmx5IHNtYWxsIHNrZXcgKGR1ZSB0byByb3VuZGluZyBlcnJvcnMpLCB3ZSBjb3JyZWN0IGl0Ci0gICAqIHNpbGVudGx5LiBPdGhlcndpc2Ugd2UgcHV0IHRoZSBkaXNjb250IGZsYWcKLSAgICovCi0gIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoYWRkZXItPm5leHRfdGltZXN0YW1wKSAmJgotICAgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgIT0gYWRkZXItPm5leHRfdGltZXN0YW1wKSB7Ci0gICAgR3N0Q2xvY2tUaW1lRGlmZiBkaWZmID0gR1NUX0NMT0NLX0RJRkYgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpLAotICAgICAgICBhZGRlci0+bmV4dF90aW1lc3RhbXApOwotICAgIGlmIChkaWZmIDwgMCkKLSAgICAgIGRpZmYgPSAtZGlmZjsKLQotICAgIGlmIChkaWZmIDwgR1NUX1NFQ09ORCAvIEdTVF9BVURJT19JTkZPX1JBVEUgKCZhZGRlci0+aW5mbykpIHsKLSAgICAgIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpID0gYWRkZXItPm5leHRfdGltZXN0YW1wOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJDb3JyZWN0aW5nIHNsaWdodCBza2V3Iik7Ci0gICAgICBHU1RfQlVGRkVSX0ZMQUdfVU5TRVQgKGJ1ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwotICAgIH0gZWxzZSB7Ci0gICAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChidWZmZXIsIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKTsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAiRXhwZWN0ZWQgYnVmZmVyIGF0ICUiIEdTVF9USU1FX0ZPUk1BVAotICAgICAgICAgICIsIGJ1dCBpcyBhdCAlIiBHU1RfVElNRV9GT1JNQVQgIiwgc2V0dGluZyBkaXNjb250IiwKLSAgICAgICAgICBHU1RfVElNRV9BUkdTIChhZGRlci0+bmV4dF90aW1lc3RhbXApLAotICAgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpKSk7Ci0gICAgfQotICB9IGVsc2UgewotICAgIEdTVF9CVUZGRVJfRkxBR19VTlNFVCAoYnVmZmVyLCBHU1RfQlVGRkVSX0ZMQUdfRElTQ09OVCk7Ci0gIH0KLQotICBHU1RfQlVGRkVSX09GRlNFVCAoYnVmZmVyKSA9IEdTVF9CVUZGRVJfT0ZGU0VUX05PTkU7Ci0gIEdTVF9CVUZGRVJfT0ZGU0VUX0VORCAoYnVmZmVyKSA9IEdTVF9CVUZGRVJfT0ZGU0VUX05PTkU7Ci0KLSAgaWYgKEdTVF9CVUZGRVJfRFVSQVRJT05fSVNfVkFMSUQgKGJ1ZmZlcikpCi0gICAgYWRkZXItPm5leHRfdGltZXN0YW1wID0gR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZmZlcikgKwotICAgICAgICBHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpOwotICBlbHNlCi0gICAgYWRkZXItPm5leHRfdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLQotICBHU1RfTE9HX09CSkVDVCAoYWRkZXIsICJBYm91dCB0byBwdXNoIGJ1ZmZlciB0aW1lOiUiIEdTVF9USU1FX0ZPUk1BVAotICAgICAgIiBkdXJhdGlvbjolIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKSksCi0gICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX0RVUkFUSU9OIChidWZmZXIpKSk7Ci0KLSAgcmVzdWx0ID0gZ3N0X3BhZF9wdXNoIChhZGRlci0+c3JjcGFkLCBidWZmZXIpOwotICBpZiAocmVzdWx0ICE9IEdTVF9GTE9XX09LKQotICAgIGdvdG8gcGF1c2U7Ci0KLSAgcmV0dXJuOwotCi1mbHVzaGluZzoKLSAgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAid2UgYXJlIGZsdXNoaW5nIik7Ci0gICAgZ3N0X3BhZF9wYXVzZV90YXNrIChhZGRlci0+c3JjcGFkKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgIHJldHVybjsKLSAgfQotCi1jbG9ja19lcnJvcjoKLSAgewotICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoYWRkZXItPnNyY3BhZCk7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoYWRkZXIsIFNUUkVBTSwgTVVYLCAoIkVycm9yIHdpdGggdGhlIGNsb2NrIiksCi0gICAgICAgICgiRXJyb3Igd2l0aCB0aGUgY2xvY2s6ICVkIiwgcmV0KSk7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAoYWRkZXIsICJFcnJvciB3aXRoIHRoZSBjbG9jazogJWQiLCByZXQpOwotICAgIHJldHVybjsKLSAgfQotCi1ub19jbG9jazoKLSAgewotICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoYWRkZXItPnNyY3BhZCk7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgICBHU1RfRUxFTUVOVF9FUlJPUiAoYWRkZXIsIFNUUkVBTSwgTVVYLCAoIk5vIGF2YWlsYWJsZSBjbG9jayIpLAotICAgICAgICAoIk5vIGF2YWlsYWJsZSBjbG9jayIpKTsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChhZGRlciwgIk5vIGF2YWlsYWJsZSBjbG9jayIpOwotICAgIHJldHVybjsKLSAgfQotCi1wYXVzZToKLSAgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFkZGVyLCAicGF1c2luZyB0YXNrLCByZWFzb24gJXMiLAotICAgICAgICBnc3RfZmxvd19nZXRfbmFtZSAocmVzdWx0KSk7Ci0KLSAgICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLQotICAgIC8qIHN0b3JlIHJlc3VsdCAqLwotICAgIGFkZGVyLT5zcmNyZXN1bHQgPSByZXN1bHQ7Ci0gICAgLyogd2UgZG9uJ3QgcG9zdCBlcnJvcnMgb3IgYW55dGhpbmcgYmVjYXVzZSB1cHN0cmVhbSB3aWxsIGRvIHRoYXQgZm9yIHVzCi0gICAgICogd2hlbiB3ZSBwYXNzIHRoZSByZXR1cm4gdmFsdWUgdXBzdHJlYW0uICovCi0gICAgZ3N0X3BhZF9wYXVzZV90YXNrIChhZGRlci0+c3JjcGFkKTsKLSAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgIHJldHVybjsKLSAgfQotCi1lb3M6Ci0gIHsKLSAgICAvKiBzdG9yZSByZXN1bHQsIHdlIGFyZSBmbHVzaGluZyBub3cgKi8KLSAgICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgIldlIGFyZSBFT1MsIHB1c2hpbmcgRU9TIGRvd25zdHJlYW0iKTsKLSAgICBhZGRlci0+c3JjcmVzdWx0ID0gR1NUX0ZMT1dfRU9TOwotICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoYWRkZXItPnNyY3BhZCk7Ci0gICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKGFkZGVyLT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKLSAgICByZXR1cm47Ci0gIH0KLX0KLQotc3RhdGljIEdzdFBhZCAqCi1nc3RfbGl2ZV9hZGRlcl9yZXF1ZXN0X25ld19wYWQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RQYWRUZW1wbGF0ZSAqIHRlbXBsLAotICAgIGNvbnN0IGdjaGFyICogaWdub3JlZF9uYW1lLCBjb25zdCBHc3RDYXBzICogY2FwcykKLXsKLSAgZ2NoYXIgKm5hbWU7Ci0gIEdzdExpdmVBZGRlciAqYWRkZXI7Ci0gIEdzdFBhZCAqbmV3cGFkOwotICBnaW50IHBhZGNvdW50OwotICBHc3RMaXZlQWRkZXJQYWRQcml2YXRlICpwYWRwcml2YXRlID0gTlVMTDsKLQotICBpZiAodGVtcGwtPmRpcmVjdGlvbiAhPSBHU1RfUEFEX1NJTkspCi0gICAgZ290byBub3Rfc2luazsKLQotICBhZGRlciA9IEdTVF9MSVZFX0FEREVSIChlbGVtZW50KTsKLQotICAvKiBpbmNyZW1lbnQgcGFkIGNvdW50ZXIgKi8KLSAgcGFkY291bnQgPSBnX2F0b21pY19pbnRfYWRkICgmYWRkZXItPnBhZGNvdW50LCAxKTsKLQotICBuYW1lID0gZ19zdHJkdXBfcHJpbnRmICgic2lua18ldSIsIHBhZGNvdW50KTsKLSAgbmV3cGFkID0gZ3N0X3BhZF9uZXdfZnJvbV90ZW1wbGF0ZSAodGVtcGwsIG5hbWUpOwotICBHU1RfREVCVUdfT0JKRUNUIChhZGRlciwgInJlcXVlc3QgbmV3IHBhZCAlcyIsIG5hbWUpOwotICBnX2ZyZWUgKG5hbWUpOwotCi0gIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChuZXdwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2xpdmVfYWRkZXJfc2lua19ldmVudCkpOwotICBnc3RfcGFkX3NldF9xdWVyeV9mdW5jdGlvbiAobmV3cGFkLAotICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9saXZlX2FkZGVyX3NpbmtfcXVlcnkpKTsKLQotICBwYWRwcml2YXRlID0gZ19uZXcwIChHc3RMaXZlQWRkZXJQYWRQcml2YXRlLCAxKTsKLQotICBnc3Rfc2VnbWVudF9pbml0ICgmcGFkcHJpdmF0ZS0+c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOwotICBwYWRwcml2YXRlLT5lb3MgPSBGQUxTRTsKLSAgcGFkcHJpdmF0ZS0+ZXhwZWN0ZWRfdGltZXN0YW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLQotICBnc3RfcGFkX3NldF9lbGVtZW50X3ByaXZhdGUgKG5ld3BhZCwgcGFkcHJpdmF0ZSk7Ci0KLSAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKG5ld3BhZCwgZ3N0X2xpdmVfYWRkZXJfY2hhaW4pOwotCi0KLSAgaWYgKCFnc3RfcGFkX3NldF9hY3RpdmUgKG5ld3BhZCwgVFJVRSkpCi0gICAgZ290byBjb3VsZF9ub3RfYWN0aXZhdGU7Ci0KLSAgLyogdGFrZXMgb3duZXJzaGlwIG9mIHRoZSBwYWQgKi8KLSAgaWYgKCFnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoYWRkZXIpLCBuZXdwYWQpKQotICAgIGdvdG8gY291bGRfbm90X2FkZDsKLQotICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLSAgYWRkZXItPnNpbmtwYWRzID0gZ19saXN0X3ByZXBlbmQgKGFkZGVyLT5zaW5rcGFkcywgbmV3cGFkKTsKLSAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLQotICByZXR1cm4gbmV3cGFkOwotCi0gIC8qIGVycm9ycyAqLwotbm90X3Npbms6Ci0gIHsKLSAgICBnX3dhcm5pbmcgKCJnc3RhZGRlcjogcmVxdWVzdCBuZXcgcGFkIHRoYXQgaXMgbm90IGEgU0lOSyBwYWRcbiIpOwotICAgIHJldHVybiBOVUxMOwotICB9Ci1jb3VsZF9ub3RfYWRkOgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJjb3VsZCBub3QgYWRkIHBhZCIpOwotICAgIGdfZnJlZSAocGFkcHJpdmF0ZSk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAobmV3cGFkKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotY291bGRfbm90X2FjdGl2YXRlOgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJjb3VsZCBub3QgYWN0aXZhdGUgbmV3IHBhZCIpOwotICAgIGdfZnJlZSAocGFkcHJpdmF0ZSk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAobmV3cGFkKTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotfQotCi1zdGF0aWMgdm9pZAotZ3N0X2xpdmVfYWRkZXJfcmVsZWFzZV9wYWQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RQYWQgKiBwYWQpCi17Ci0gIEdzdExpdmVBZGRlciAqYWRkZXI7Ci0gIEdzdExpdmVBZGRlclBhZFByaXZhdGUgKnBhZHByaXZhdGU7Ci0KLSAgYWRkZXIgPSBHU1RfTElWRV9BRERFUiAoZWxlbWVudCk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAoYWRkZXIsICJyZWxlYXNlIHBhZCAlczolcyIsIEdTVF9ERUJVR19QQURfTkFNRSAocGFkKSk7Ci0KLSAgR1NUX09CSkVDVF9MT0NLIChlbGVtZW50KTsKLSAgcGFkcHJpdmF0ZSA9IGdzdF9wYWRfZ2V0X2VsZW1lbnRfcHJpdmF0ZSAocGFkKTsKLSAgZ3N0X3BhZF9zZXRfZWxlbWVudF9wcml2YXRlIChwYWQsIE5VTEwpOwotICBhZGRlci0+c2lua3BhZHMgPSBnX2xpc3RfcmVtb3ZlX2FsbCAoYWRkZXItPnNpbmtwYWRzLCBwYWQpOwotICBHU1RfT0JKRUNUX1VOTE9DSyAoZWxlbWVudCk7Ci0KLSAgZ19mcmVlIChwYWRwcml2YXRlKTsKLQotICBnc3RfZWxlbWVudF9yZW1vdmVfcGFkIChlbGVtZW50LCBwYWQpOwotfQotCi1zdGF0aWMgdm9pZAotcmVzZXRfcGFkX3ByaXZhdGUgKEdzdFBhZCAqIHBhZCkKLXsKLSAgR3N0TGl2ZUFkZGVyUGFkUHJpdmF0ZSAqcGFkcHJpdmF0ZTsKLQotICBwYWRwcml2YXRlID0gZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwotCi0gIGlmICghcGFkcHJpdmF0ZSkKLSAgICByZXR1cm47Ci0KLSAgZ3N0X3NlZ21lbnRfaW5pdCAoJnBhZHByaXZhdGUtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKLQotICBwYWRwcml2YXRlLT5leHBlY3RlZF90aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotICBwYWRwcml2YXRlLT5lb3MgPSBGQUxTRTsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfbGl2ZV9hZGRlcl9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RMaXZlQWRkZXIgKmFkZGVyOwotICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQ7Ci0KLSAgYWRkZXIgPSBHU1RfTElWRV9BRERFUiAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAgICAgYWRkZXItPnNlZ21lbnRfcGVuZGluZyA9IFRSVUU7Ci0gICAgICBhZGRlci0+cGVlcl9sYXRlbmN5ID0gMDsKLSAgICAgIGFkZGVyLT5uZXh0X3RpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0gICAgICBnX2xpc3RfZm9yZWFjaCAoYWRkZXItPnNpbmtwYWRzLCAoR0Z1bmMpIHJlc2V0X3BhZF9wcml2YXRlLCBOVUxMKTsKLSAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChhZGRlcik7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUExBWUlOR19UT19QQVVTRUQ6Ci0gICAgICBHU1RfT0JKRUNUX0xPQ0sgKGFkZGVyKTsKLSAgICAgIGFkZGVyLT5wbGF5aW5nID0gRkFMU0U7Ci0gICAgICBHU1RfT0JKRUNUX1VOTE9DSyAoYWRkZXIpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGdzdF9saXZlX2FkZGVyX3BhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwKLSAgICAgIHRyYW5zaXRpb24pOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKLSAgICAgIEdTVF9PQkpFQ1RfTE9DSyAoYWRkZXIpOwotICAgICAgYWRkZXItPnBsYXlpbmcgPSBUUlVFOwotICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKGFkZGVyKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLQotc3RhdGljIGdib29sZWFuCi1wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQotewotICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJsaXZlYWRkZXIiLCBHU1RfUkFOS19OT05FLAotICAgICAgICAgIEdTVF9UWVBFX0xJVkVfQURERVIpKSB7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLUdTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKLSAgICBHU1RfVkVSU0lPTl9NSU5PUiwKLSAgICBsaXZlYWRkZXIsCi0gICAgIkFkZHMgbXVsdGlwbGUgbGl2ZSBkaXNjb250aW51b3VzIHN0cmVhbXMiLAotICAgIHBsdWdpbl9pbml0LCBWRVJTSU9OLCBHU1RfTElDRU5TRSwgR1NUX1BBQ0tBR0VfTkFNRSwgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvZ3N0L2xpdmVhZGRlci9saXZlYWRkZXIuaCBiL2dzdC9saXZlYWRkZXIvbGl2ZWFkZGVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTVlZGYuLjAwMDAwMDAKLS0tIGEvZ3N0L2xpdmVhZGRlci9saXZlYWRkZXIuaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLS8qCi0gKiBHU3RyZWFtZXIKLSAqCi0gKiAgQ29weXJpZ2h0IDIwMDggQ29sbGFib3JhIEx0ZAotICogIENvcHlyaWdodCAyMDA4IE5va2lhIENvcnBvcmF0aW9uCi0gKiAgIEBhdXRob3I6IE9saXZpZXIgQ3JldGUgPG9saXZpZXIuY3JldGVAY29sbGFib3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICoKLSAqLwotCi0KLQotI2lmbmRlZiBfX0dTVF9MSVZFX0FEREVSX0hfXwotI2RlZmluZSBfX0dTVF9MSVZFX0FEREVSX0hfXwotCi0jaW5jbHVkZSA8Z3N0L2dzdC5oPgotI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgotCi1HX0JFR0lOX0RFQ0xTCi0jZGVmaW5lIEdTVF9UWVBFX0xJVkVfQURERVIgICAgICAgICAgICAoZ3N0X2xpdmVfYWRkZXJfZ2V0X3R5cGUoKSkKLSNkZWZpbmUgR1NUX0xJVkVfQURERVIob2JqKSAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9MSVZFX0FEREVSLEdzdExpdmVBZGRlcikpCi0jZGVmaW5lIEdTVF9JU19MSVZFX0FEREVSKG9iaikgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfTElWRV9BRERFUikpCi0jZGVmaW5lIEdTVF9MSVZFX0FEREVSX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSAsR1NUX1RZUEVfTElWRV9BRERFUixHc3RMaXZlQWRkZXJDbGFzcykpCi0jZGVmaW5lIEdTVF9JU19MSVZFX0FEREVSX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSAsR1NUX1RZUEVfTElWRV9BRERFUikpCi0jZGVmaW5lIEdTVF9MSVZFX0FEREVSX0dFVF9DTEFTUyhvYmopICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSAsR1NUX1RZUEVfTElWRV9BRERFUixHc3RMaXZlQWRkZXJDbGFzcykpCi10eXBlZGVmIHN0cnVjdCBfR3N0TGl2ZUFkZGVyIEdzdExpdmVBZGRlcjsKLXR5cGVkZWYgc3RydWN0IF9Hc3RMaXZlQWRkZXJDbGFzcyBHc3RMaXZlQWRkZXJDbGFzczsKLQotdHlwZWRlZiB2b2lkICgqR3N0TGl2ZUFkZGVyRnVuY3Rpb24pIChncG9pbnRlciBvdXQsIGdwb2ludGVyIGluLCBndWludCBzaXplKTsKLQotLyoqCi0gKiBHc3RMaXZlQWRkZXI6Ci0gKgotICogVGhlIGFkZGVyIG9iamVjdCBzdHJ1Y3R1cmUuCi0gKi8KLXN0cnVjdCBfR3N0TGl2ZUFkZGVyCi17Ci0gIC8qPCBwcml2YXRlID4qLwotICBHc3RFbGVtZW50IGVsZW1lbnQ7Ci0KLSAgR3N0UGFkICpzcmNwYWQ7Ci0gIC8qIHBhZCBjb3VudGVyLCB1c2VkIGZvciBjcmVhdGluZyB1bmlxdWUgcmVxdWVzdCBwYWRzICovCi0gIGdpbnQgcGFkY291bnQ7Ci0gIEdMaXN0ICpzaW5rcGFkczsKLQotICBHc3RGbG93UmV0dXJuIHNyY3Jlc3VsdDsKLSAgR3N0Q2xvY2tJRCBjbG9ja19pZDsKLQotICAvKiB0aGUgcXVldWUgaXMgb3JkZXJlZCBoZWFkIHRvIHRhaWwgKi8KLSAgR1F1ZXVlICpidWZmZXJzOwotICBHQ29uZCBub3RfZW1wdHlfY29uZDsKLQotICBHc3RDbG9ja1RpbWUgbmV4dF90aW1lc3RhbXA7Ci0KLSAgLyogdGhlIG5leHQgYXJlIHZhbGlkIGZvciBib3RoIGludCBhbmQgZmxvYXQgKi8KLSAgR3N0QXVkaW9JbmZvIGluZm87Ci0KLSAgLyogZnVuY3Rpb24gdG8gYWRkIHNhbXBsZXMgKi8KLSAgR3N0TGl2ZUFkZGVyRnVuY3Rpb24gZnVuYzsKLQotICBHc3RDbG9ja1RpbWUgbGF0ZW5jeV9tczsKLSAgR3N0Q2xvY2tUaW1lIHBlZXJfbGF0ZW5jeTsKLQotICBnYm9vbGVhbiBzZWdtZW50X3BlbmRpbmc7Ci0KLSAgZ2Jvb2xlYW4gcGxheWluZzsKLX07Ci0KLXN0cnVjdCBfR3N0TGl2ZUFkZGVyQ2xhc3MKLXsKLSAgR3N0RWxlbWVudENsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLUdUeXBlIGdzdF9saXZlX2FkZGVyX2dldF90eXBlICh2b2lkKTsKLQotR19FTkRfREVDTFMKLSNlbmRpZiAvKiBfX0dTVF9MSVZFX0FEREVSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0L21pZGkvTWFrZWZpbGUuaW4gYi9nc3QvbWlkaS9NYWtlZmlsZS5pbgppbmRleCBiM2VhMTQ0Li4xYjNjYzQ2IDEwMDY0NAotLS0gYS9nc3QvbWlkaS9NYWtlZmlsZS5pbgorKysgYi9nc3QvbWlkaS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzUsNiArMjc0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTIsNiArMzEzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjAsNyArMzIzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM5LDggKzM0MSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTcsMTYgKzM2MCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTIsNiArMzk2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE3LDYgKzQyMyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOCw2ICs1MjYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMxLDggKzU0MCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OCw2ICs1NTUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA1LDE2ICs2MTQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjYsNiArNjc3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Niw2ICs2ODgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODUsNiArNjk4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMiw3ICs3MzcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9tcGVnZGVtdXgvTWFrZWZpbGUuaW4gYi9nc3QvbXBlZ2RlbXV4L01ha2VmaWxlLmluCmluZGV4IDRkNTM3MGEuLjQ0ZjBkNGMgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVnZGVtdXgvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L21wZWdkZW11eC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9tcGVncHNtdXgvTWFrZWZpbGUuaW4gYi9nc3QvbXBlZ3BzbXV4L01ha2VmaWxlLmluCmluZGV4IDM2NGQyNmUuLmQ4YTJiMmQgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVncHNtdXgvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L21wZWdwc211eC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzcsNiArMjc2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTQsNiArMzE1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjIsNyArMzI1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQxLDggKzM0Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTksMTYgKzM2MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTQsNiArMzk4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE5LDYgKzQyNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyMCw2ICs1MjgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMzLDggKzU0Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1MCw2ICs1NTcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA3LDE2ICs2MTYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjgsNiArNjc5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3OCw2ICs2OTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODcsNiArNzAwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyNCw3ICs3MzksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC9NYWtlZmlsZS5hbSBiL2dzdC9tcGVndHNkZW11eC9NYWtlZmlsZS5hbQppbmRleCBiNGUwNTNjLi5mMDQ3NWM2IDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUuYW0KKysrIGIvZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmFtCkBAIC0xNSw4ICsxNSw4IEBACiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvbGliZ3N0bXBlZ3RzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbGliZ3N0Y29kZWNwYXJzZXJzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCi0JLWxnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCisJLWxnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05AIC1sZ3N0YXVkaW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTElCTSkKIGxpYmdzdG1wZWd0c2RlbXV4X2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdG1wZWd0c2RlbXV4X2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiAKZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC9NYWtlZmlsZS5pbiBiL2dzdC9tcGVndHNkZW11eC9NYWtlZmlsZS5pbgppbmRleCA4YTdmMjM1Li5jMjM1NDc2IDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzZGVtdXgvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L21wZWd0c2RlbXV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2Nyw3ICsxNjYsNyBAQAogbGliZ3N0bXBlZ3RzZGVtdXhfbGFfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9tcGVndHMvbGliZ3N0bXBlZ3RzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbGliZ3N0Y29kZWNwYXJzZXJzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0bXBlZ3RzZGVtdXhfbGFfT0JKRUNUUyA9ICBcCiAJbGliZ3N0bXBlZ3RzZGVtdXhfbGEtbXBlZ3RzcGFja2V0aXplci5sbyBcCiAJbGliZ3N0bXBlZ3RzZGVtdXhfbGEtbXBlZ3RzYmFzZS5sbyBcCkBAIC0yODIsNiArMjgxLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTksNiArMzIwLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjcsNyArMzMwLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQ2LDggKzM0OCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNjQsMTYgKzM2NywxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTksNiArNDAzLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDI0LDYgKzQzMCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUyNSw2ICs1MzMsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTM4LDggKzU0Nyw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU1NSw2ICs1NjIsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjEyLDE2ICs2MjEsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NzMsNiArNjg0LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY4Myw2ICs2OTUsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02OTIsNiArNzA1LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyOSw3ICs3NDQsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc4Niw4ICs4MDAsOCBAQAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvbXBlZ3RzL2xpYmdzdG1wZWd0cy0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2xpYmdzdGNvZGVjcGFyc2Vycy0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAotCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQorCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCAtbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExJQk0pCiAKIGxpYmdzdG1wZWd0c2RlbXV4X2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdG1wZWd0c2RlbXV4X2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzZGVtdXgvZ3N0bXBlZ2Rlc2MuaCBiL2dzdC9tcGVndHNkZW11eC9nc3RtcGVnZGVzYy5oCmluZGV4IGQxMjU2YTYuLmJkOTIzNWYgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNkZW11eC9nc3RtcGVnZGVzYy5oCisrKyBiL2dzdC9tcGVndHNkZW11eC9nc3RtcGVnZGVzYy5oCkBAIC0yMzIsNSArMjMyLDYgQEAKICNkZWZpbmUgRFJGX0lEX0VUVjEgICAgICAgMHg0NTU0NTYzMQogI2RlZmluZSBEUkZfSURfSEVWQyAgICAgICAweDQ4NDU1NjQzCiAjZGVmaW5lIERSRl9JRF9LTFZBICAgICAgIDB4NGI0YzU2NDEgICAvKiBkZWZpbmVkIGluIFJQMjE3ICovCisjZGVmaW5lIERSRl9JRF9PUFVTICAgICAgIDB4NGY3MDc1NzMKIAogI2VuZGlmIC8qIF9fR1NUX01QRUdfREVTQ19IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmMgYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jCmluZGV4IGQ0NmE0N2UuLmViMTZhYWMgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmMKKysrIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuYwpAQCAtNzQsNiArNzQsOCBAQAogICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogCiBzdGF0aWMgdm9pZCBtcGVndHNfYmFzZV9mcmVlX3Byb2dyYW0gKE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSk7CitzdGF0aWMgdm9pZCBtcGVndHNfYmFzZV9kZWFjdGl2YXRlX3Byb2dyYW0gKE1wZWdUU0Jhc2UgKiBiYXNlLAorICAgIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSk7CiBzdGF0aWMgZ2Jvb2xlYW4gbXBlZ3RzX2Jhc2Vfc2lua19hY3RpdmF0ZSAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQpOwogc3RhdGljIGdib29sZWFuIG1wZWd0c19iYXNlX3NpbmtfYWN0aXZhdGVfbW9kZSAoR3N0UGFkICogcGFkLAogICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0UGFkTW9kZSBtb2RlLCBnYm9vbGVhbiBhY3RpdmUpOwpAQCAtMTA1LDEyICsxMDcsMjEgQEAKIEdfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChNcGVnVFNCYXNlLCBtcGVndHNfYmFzZSwgR1NUX1RZUEVfRUxFTUVOVCwKICAgICBfZXh0cmFfaW5pdCAoKSk7CiAKKy8qIERlZmF1bHQgaW1wbGVtZW50YXRpb24gaXMgdGhhdCBtcGVndHNiYXNlIGNhbiByZW1vdmUgYW55IHByb2dyYW0gKi8KK3N0YXRpYyBnYm9vbGVhbgorbXBlZ3RzX2Jhc2VfY2FuX3JlbW92ZV9wcm9ncmFtIChNcGVnVFNCYXNlICogYmFzZSwgTXBlZ1RTQmFzZVByb2dyYW0gKiBwcm9ncmFtKQoreworICByZXR1cm4gVFJVRTsKK30KKwogc3RhdGljIHZvaWQKIG1wZWd0c19iYXNlX2NsYXNzX2luaXQgKE1wZWdUU0Jhc2VDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7CiAgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzczsKIAorICBrbGFzcy0+Y2FuX3JlbW92ZV9wcm9ncmFtID0gbXBlZ3RzX2Jhc2VfY2FuX3JlbW92ZV9wcm9ncmFtOworCiAgIGVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwogICBlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBtcGVndHNfYmFzZV9jaGFuZ2Vfc3RhdGU7CiAKQEAgLTQxMSw2ICs0MjIsMTYgQEAKIH0KIAogdm9pZAorbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9hbmRfZnJlZV9wcm9ncmFtIChNcGVnVFNCYXNlICogYmFzZSwKKyAgICBNcGVnVFNCYXNlUHJvZ3JhbSAqIHByb2dyYW0pCit7CisgIEdTVF9ERUJVR19PQkpFQ1QgKGJhc2UsICJwcm9ncmFtX251bWJlciA6ICVkIiwgcHJvZ3JhbS0+cHJvZ3JhbV9udW1iZXIpOworCisgIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfcHJvZ3JhbSAoYmFzZSwgcHJvZ3JhbSk7CisgIG1wZWd0c19iYXNlX2ZyZWVfcHJvZ3JhbSAocHJvZ3JhbSk7Cit9CisKK3N0YXRpYyB2b2lkCiBtcGVndHNfYmFzZV9yZW1vdmVfcHJvZ3JhbSAoTXBlZ1RTQmFzZSAqIGJhc2UsIGdpbnQgcHJvZ3JhbV9udW1iZXIpCiB7CiAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhc2UsICJwcm9ncmFtX251bWJlciA6ICVkIiwgcHJvZ3JhbV9udW1iZXIpOwpAQCAtNDcyLDcgKzQ5Myw3IEBACiAgIHJldHVybiBic3RyZWFtOwogfQogCi12b2lkCitzdGF0aWMgdm9pZAogbXBlZ3RzX2Jhc2VfcHJvZ3JhbV9yZW1vdmVfc3RyZWFtIChNcGVnVFNCYXNlICogYmFzZSwKICAgICBNcGVnVFNCYXNlUHJvZ3JhbSAqIHByb2dyYW0sIGd1aW50MTYgcGlkKQogewpAQCAtNzcxLDYgKzc5Miw3IEBACiAgIH0KIAogICBpZiAob2xkX3BhdCkgeworICAgIE1wZWdUU0Jhc2VDbGFzcyAqa2xhc3MgPSBHU1RfTVBFR1RTX0JBU0VfR0VUX0NMQVNTIChiYXNlKTsKICAgICAvKiBkZWFjdGl2YXRlIHRoZSBvbGQgdGFibGUgKi8KICAgICBHU1RfTE9HICgiRGVhY3RpdmF0aW5nIG9sZCBQcm9ncmFtIEFzc29jaWF0aW9uIFRhYmxlIik7CiAKQEAgLTc5MSw4ICs4MTMsMTUgQEAKICAgICAgIEdTVF9JTkZPX09CSkVDVCAoYmFzZSwgIlBBVCByZW1vdmluZyBwcm9ncmFtIDB4JTA0eCAweCUwNHgiLAogICAgICAgICAgIHBhdHAtPnByb2dyYW1fbnVtYmVyLCBwYXRwLT5uZXR3b3JrX29yX3Byb2dyYW1fbWFwX1BJRCk7CiAKLSAgICAgIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfcHJvZ3JhbSAoYmFzZSwgcHJvZ3JhbSk7Ci0gICAgICBtcGVndHNfYmFzZV9yZW1vdmVfcHJvZ3JhbSAoYmFzZSwgcGF0cC0+cHJvZ3JhbV9udW1iZXIpOworICAgICAgaWYgKGtsYXNzLT5jYW5fcmVtb3ZlX3Byb2dyYW0gKGJhc2UsIHByb2dyYW0pKSB7CisgICAgICAgIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfcHJvZ3JhbSAoYmFzZSwgcHJvZ3JhbSk7CisgICAgICAgIG1wZWd0c19iYXNlX3JlbW92ZV9wcm9ncmFtIChiYXNlLCBwYXRwLT5wcm9ncmFtX251bWJlcik7CisgICAgICB9IGVsc2UgeworICAgICAgICAvKiBzdWItY2xhc3Mgbm93IG93bnMgdGhlIHByb2dyYW0gYW5kIG11c3QgY2FsbAorICAgICAgICAgKiBtcGVndHNfYmFzZV9kZWFjdGl2YXRlX2FuZF9mcmVlX3Byb2dyYW0gbGF0ZXIgKi8KKyAgICAgICAgZ19oYXNoX3RhYmxlX3N0ZWFsIChiYXNlLT5wcm9ncmFtcywKKyAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKGdpbnQpIHBhdHAtPnByb2dyYW1fbnVtYmVyKSk7CisgICAgICB9CiAgICAgICAvKiBGSVhNRTogd2hlbiB0aGlzIGhhcHBlbnMgaXQgbWF5IHN0aWxsIGJlIHBtdCBwaWQgb2YgYW5vdGhlcgogICAgICAgICogcHJvZ3JhbSwgc28gc2V0dGluZyB0byBGYWxzZSBtYXkgbWFrZSBpdCBnbyB0aHJvdWdoIGV4cGVuc2l2ZQogICAgICAgICogcGF0aCBpbiBpc19wc2kgdW5uZWNlc3NhcmlseSAqLwpAQCAtODU0LDYgKzg4Myw3IEBACiAKICAgLyogSWYgdGhlIGN1cnJlbnQgcHJvZ3JhbSBpcyBhY3RpdmUsIHRoaXMgbWVhbnMgd2UgaGF2ZSBhIG5ldyBwcm9ncmFtICovCiAgIGlmIChvbGRfcHJvZ3JhbS0+YWN0aXZlKSB7CisgICAgTXBlZ1RTQmFzZUNsYXNzICprbGFzcyA9IEdTVF9NUEVHVFNfQkFTRV9HRVRfQ0xBU1MgKGJhc2UpOwogICAgIG9sZF9wcm9ncmFtID0gbXBlZ3RzX2Jhc2Vfc3RlYWxfcHJvZ3JhbSAoYmFzZSwgcHJvZ3JhbV9udW1iZXIpOwogICAgIHByb2dyYW0gPSBtcGVndHNfYmFzZV9uZXdfcHJvZ3JhbSAoYmFzZSwgcHJvZ3JhbV9udW1iZXIsIHNlY3Rpb24tPnBpZCk7CiAgICAgcHJvZ3JhbS0+cGF0Y291bnQgPSBvbGRfcHJvZ3JhbS0+cGF0Y291bnQ7CkBAIC04NjEsOCArODkxLDE3IEBACiAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAocHJvZ3JhbV9udW1iZXIpLCBwcm9ncmFtKTsKIAogICAgIC8qIERlc2FjdGl2YXRlIHRoZSBvbGQgcHJvZ3JhbSAqLwotICAgIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfcHJvZ3JhbSAoYmFzZSwgb2xkX3Byb2dyYW0pOwotICAgIG1wZWd0c19iYXNlX2ZyZWVfcHJvZ3JhbSAob2xkX3Byb2dyYW0pOworICAgIC8qIEZJWE1FIDogVEhJUyBJUyBCUkVBS0lORyBUSEUgU1RSRUFNIFNXSVRDSElORyBMT0dJQyAhCisgICAgICogICovCisgICAgaWYgKGtsYXNzLT5jYW5fcmVtb3ZlX3Byb2dyYW0gKGJhc2UsIG9sZF9wcm9ncmFtKSkgeworICAgICAgbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9wcm9ncmFtIChiYXNlLCBvbGRfcHJvZ3JhbSk7CisgICAgICBtcGVndHNfYmFzZV9mcmVlX3Byb2dyYW0gKG9sZF9wcm9ncmFtKTsKKyAgICB9IGVsc2UgeworICAgICAgLyogc3ViLWNsYXNzIG5vdyBvd25zIHRoZSBwcm9ncmFtIGFuZCBtdXN0IGNhbGwKKyAgICAgICAqIG1wZWd0c19iYXNlX2RlYWN0aXZhdGVfYW5kX2ZyZWVfcHJvZ3JhbSBsYXRlciAqLworICAgICAgZ19oYXNoX3RhYmxlX3N0ZWFsIChiYXNlLT5wcm9ncmFtcywKKyAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKChnaW50KSBvbGRfcHJvZ3JhbS0+cHJvZ3JhbV9udW1iZXIpKTsKKyAgICB9CiAgICAgaW5pdGlhbF9wcm9ncmFtID0gRkFMU0U7CiAgIH0gZWxzZQogICAgIHByb2dyYW0gPSBvbGRfcHJvZ3JhbTsKQEAgLTE0MDQsMTEgKzE0NDMsMjMgQEAKICAgICAgICAgfQogICAgICAgICBiYXNlLT5tb2RlID0gQkFTRV9NT0RFX1BVU0hJTkc7CiAgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIEdTVF9XQVJOSU5HICgic3ViY2xhc3MgaGFzIG5vIHNlZWsgaW1wbGVtZW50YXRpb24iKTsKICAgICB9CiAKICAgICByZXR1cm4gcmV0ID09IEdTVF9GTE9XX09LOwogICB9CiAKKyAgaWYgKCFrbGFzcy0+c2VlaykgeworICAgIEdTVF9XQVJOSU5HICgic3ViY2xhc3MgaGFzIG5vIHNlZWsgaW1wbGVtZW50YXRpb24iKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAocmF0ZSA8PSAwLjApIHsKKyAgICBHU1RfV0FSTklORyAoIk5lZ2F0aXZlIHJhdGUgbm90IHN1cHBvcnRlZCIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCiAgIEdTVF9ERUJVRyAoInNlZWsgZXZlbnQsIHJhdGU6ICVmIHN0YXJ0OiAlIiBHU1RfVElNRV9GT1JNQVQKICAgICAgICIgc3RvcDogJSIgR1NUX1RJTUVfRk9STUFULCByYXRlLCBHU1RfVElNRV9BUkdTIChzdGFydCksCiAgICAgICBHU1RfVElNRV9BUkdTIChzdG9wKSk7CkBAIC0xNDUwLDE2ICsxNTAxLDExIEBACiAKIAogICAvKiBJZiB0aGUgc3ViY2xhc3MgY2FuIHNlZWssIGRvIHRoYXQgKi8KLSAgaWYgKGtsYXNzLT5zZWVrKSB7Ci0gICAgcmV0ID0ga2xhc3MtPnNlZWsgKGJhc2UsIGV2ZW50KTsKLSAgICBpZiAoR19VTkxJS0VMWSAocmV0ICE9IEdTVF9GTE9XX09LKSkKLSAgICAgIEdTVF9XQVJOSU5HICgic2Vla2luZyBmYWlsZWQgJXMiLCBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7Ci0gICAgZWxzZQotICAgICAgYmFzZS0+bGFzdF9zZWVrX3NlcW51bSA9IEdTVF9FVkVOVF9TRVFOVU0gKGV2ZW50KTsKLSAgfSBlbHNlIHsKLSAgICAvKiBGSVhNRSA6IENoZWNrIHRoaXMgYmVmb3JlIHNvIHdlIGRvbid0IGRvIHNlZWtzIHdlIGNhbid0IGhhbmRsZSA/ICovCi0gICAgR1NUX1dBUk5JTkcgKCJzdWJjbGFzcyBoYXMgbm8gc2VlayBpbXBsZW1lbnRhdGlvbiIpOwotICB9CisgIHJldCA9IGtsYXNzLT5zZWVrIChiYXNlLCBldmVudCk7CisgIGlmIChHX1VOTElLRUxZIChyZXQgIT0gR1NUX0ZMT1dfT0spKQorICAgIEdTVF9XQVJOSU5HICgic2Vla2luZyBmYWlsZWQgJXMiLCBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CisgIGVsc2UKKyAgICBiYXNlLT5sYXN0X3NlZWtfc2VxbnVtID0gR1NUX0VWRU5UX1NFUU5VTSAoZXZlbnQpOwogCiAgIGlmIChmbHVzaF9ldmVudCkgewogICAgIC8qIGlmIHdlIHNlbnQgYSBGTFVTSF9TVEFSVCwgd2Ugbm93IHNlbmQgYSBGTFVTSF9TVE9QICovCmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5oIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuaAppbmRleCBjNDI3YmQ3Li5mYzBjNjUxIDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5oCisrKyBiL2dzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmgKQEAgLTE3NCw2ICsxNzQsMTAgQEAKICAgdm9pZCAoKnByb2dyYW1fc3RhcnRlZCkgKE1wZWdUU0Jhc2UgKmJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICpwcm9ncmFtKTsKICAgLyogcHJvZ3JhbV9zdG9wcGVkIGdldHMgY2FsbGVkIHdoZW4gcGF0IG5vIGxvbmdlciBoYXMgcHJvZ3JhbSdzIHBtdCAqLwogICB2b2lkICgqcHJvZ3JhbV9zdG9wcGVkKSAoTXBlZ1RTQmFzZSAqYmFzZSwgTXBlZ1RTQmFzZVByb2dyYW0gKnByb2dyYW0pOworICAvKiBXaGV0aGVyIG1wZWd0YmFzZSBjYW4gZGVhY3RpdmF0ZS9mcmVlIGEgcHJvZ3JhbSBvciB3aGV0aGVyIHRoZSBzdWJjbGFzcyB3aWxsIGRvIGl0CisgICAqIElmIHRoZSBzdWJjbGFzcyByZXNwb25kcyBUUlVFLCBpdCBzaG91bGQgY2FsbCBtcGVndHNfYmFzZV9kZWFjdGl2YXRlX2FuZF9mcmVlX3Byb2dyYW0oKQorICAgKiB3aGVuIGl0IHdhbnRzIHRvIHJlbW92ZSBpdCAqLworICBnYm9vbGVhbiAoKmNhbl9yZW1vdmVfcHJvZ3JhbSkgKE1wZWdUU0Jhc2UgKmJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICpwcm9ncmFtKTsKIAogICAvKiBzdHJlYW1fYWRkZWQgaXMgY2FsbGVkIHdoZW5ldmVyIGEgbmV3IHN0cmVhbSBoYXMgYmVlbiBpZGVudGlmaWVkICovCiAgIHZvaWQgKCpzdHJlYW1fYWRkZWQpIChNcGVnVFNCYXNlICpiYXNlLCBNcGVnVFNCYXNlU3RyZWFtICpzdHJlYW0sIE1wZWdUU0Jhc2VQcm9ncmFtICpwcm9ncmFtKTsKQEAgLTIyMiw5ICsyMjYsOCBAQAogCiBHX0dOVUNfSU5URVJOQUwgZ2Jvb2xlYW4gZ3N0X21wZWd0c2Jhc2VfcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbik7CiAKLUdfR05VQ19JTlRFUk5BTCB2b2lkIG1wZWd0c19iYXNlX3Byb2dyYW1fcmVtb3ZlX3N0cmVhbSAoTXBlZ1RTQmFzZSAqIGJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSwgZ3VpbnQxNiBwaWQpOworR19HTlVDX0lOVEVSTkFMIHZvaWQgbXBlZ3RzX2Jhc2VfZGVhY3RpdmF0ZV9hbmRfZnJlZV9wcm9ncmFtIChNcGVnVFNCYXNlICpiYXNlLCBNcGVnVFNCYXNlUHJvZ3JhbSAqcHJvZ3JhbSk7CiAKLUdfR05VQ19JTlRFUk5BTCB2b2lkIG1wZWd0c19iYXNlX3JlbW92ZV9wcm9ncmFtKE1wZWdUU0Jhc2UgKmJhc2UsIGdpbnQgcHJvZ3JhbV9udW1iZXIpOwogR19FTkRfREVDTFMKIAogI2VuZGlmIC8qIEdTVF9NUEVHX1RTX0JBU0VfSCAqLwpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhY2tldGl6ZXIuYyBiL2dzdC9tcGVndHNkZW11eC9tcGVndHNwYWNrZXRpemVyLmMKaW5kZXggMWNkYjllOS4uZGIzYjc0MSAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhY2tldGl6ZXIuYworKysgYi9nc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzcGFja2V0aXplci5jCkBAIC0yMTIsOCArMjEyLDcgQEAKICAgc3RyZWFtLT5zZWN0aW9uX2xlbmd0aCA9IDA7CiAgIHN0cmVhbS0+c2VjdGlvbl9vZmZzZXQgPSAwOwogICBzdHJlYW0tPnRhYmxlX2lkID0gVEFCTEVfSURfVU5TRVQ7Ci0gIGlmIChzdHJlYW0tPnNlY3Rpb25fZGF0YSkKLSAgICBnX2ZyZWUgKHN0cmVhbS0+c2VjdGlvbl9kYXRhKTsKKyAgZ19mcmVlIChzdHJlYW0tPnNlY3Rpb25fZGF0YSk7CiAgIHN0cmVhbS0+c2VjdGlvbl9kYXRhID0gTlVMTDsKIH0KIApAQCAtMjI4LDggKzIyNyw2IEBACiBtcGVndHNfcGFja2V0aXplcl9zdHJlYW1fZnJlZSAoTXBlZ1RTUGFja2V0aXplclN0cmVhbSAqIHN0cmVhbSkKIHsKICAgbXBlZ3RzX3BhY2tldGl6ZXJfY2xlYXJfc2VjdGlvbiAoc3RyZWFtKTsKLSAgaWYgKHN0cmVhbS0+c2VjdGlvbl9kYXRhKQotICAgIGdfZnJlZSAoc3RyZWFtLT5zZWN0aW9uX2RhdGEpOwogICBnX3NsaXN0X2ZvcmVhY2ggKHN0cmVhbS0+c3VidGFibGVzLAogICAgICAgKEdGdW5jKSBtcGVndHNfcGFja2V0aXplcl9zdHJlYW1fc3VidGFibGVfZnJlZSwgTlVMTCk7CiAgIGdfc2xpc3RfZnJlZSAoc3RyZWFtLT5zdWJ0YWJsZXMpOwpAQCAtOTg0LDYgKzk4MSw3IEBACiAgICAgICBHU1RfTE9HCiAgICAgICAgICAgKCJQSUQgMHglMDR4IFBVU0kgYW5kIHBvaW50ZXIgPT0gMCwgc2tpcHBpbmcgc3RyYWlnaHQgdG8gc2VjdGlvbl9zdGFydCBwYXJzaW5nIiwKICAgICAgICAgICBwYWNrZXQtPnBpZCk7CisgICAgICBtcGVndHNfcGFja2V0aXplcl9jbGVhcl9zZWN0aW9uIChzdHJlYW0pOwogICAgICAgZ290byBzZWN0aW9uX3N0YXJ0OwogICAgIH0KICAgfQpAQCAtMjI4NSw4ICsyMjgzLDEyIEBACiAgICAgICAgIEdTVF9ERUJVRyAoIlVzaW5nIGdyb3VwICEiKTsKICAgICAgICAgcmVmcGNyID0gZ3JvdXAtPmZpcnN0X3BjcjsKICAgICAgICAgcmVmcGNyb2Zmc2V0ID0gZ3JvdXAtPnBjcl9vZmZzZXQ7Ci0gICAgICAgIGlmIChwdHMgPCByZWZwY3IpCi0gICAgICAgICAgcmVmcGNyIC09IFBDUl9NQVhfVkFMVUU7CisgICAgICAgIGlmIChwdHMgPCBQQ1JUSU1FX1RPX0dTVFRJTUUgKHJlZnBjcikpIHsKKyAgICAgICAgICBpZiAoUENSVElNRV9UT19HU1RUSU1FIChyZWZwY3IpIC0gcHRzID4gR1NUX1NFQ09ORCkKKyAgICAgICAgICAgIHB0cyArPSBQQ1JfR1NUX01BWF9WQUxVRTsKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICByZWZwY3IgPSBHX01BWElOVDY0OworICAgICAgICB9CiAgICAgICB9CiAgICAgfQogICAgIGlmIChyZWZwY3IgIT0gR19NQVhJTlQ2NCkKZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC9tcGVndHNwYXJzZS5jIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmMKaW5kZXggNzQzZGE0Zi4uNmFiMmU3ZCAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmMKKysrIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmMKQEAgLTEyNSw2ICsxMjUsMTYgQEAKIGRyYWluX3BlbmRpbmdfYnVmZmVycyAoTXBlZ1RTUGFyc2UyICogcGFyc2UsIGdib29sZWFuIGRyYWluX2FsbCk7CiAKIHN0YXRpYyB2b2lkCittcGVndHNfcGFyc2VfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgTXBlZ1RTUGFyc2UyICpwYXJzZSA9IChNcGVnVFNQYXJzZTIgKikgb2JqZWN0OworCisgIGdzdF9mbG93X2NvbWJpbmVyX2ZyZWUgKHBhcnNlLT5mbG93Y29tYmluZXIpOworCisgIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bvc2UsIChvYmplY3QpKTsKK30KKworc3RhdGljIHZvaWQKIG1wZWd0c19wYXJzZV9jbGFzc19pbml0IChNcGVnVFNQYXJzZTJDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIChrbGFzcyk7CkBAIC0xMzMsNiArMTQzLDcgQEAKIAogICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBtcGVndHNfcGFyc2Vfc2V0X3Byb3BlcnR5OwogICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBtcGVndHNfcGFyc2VfZ2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0gbXBlZ3RzX3BhcnNlX2Rpc3Bvc2U7CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TRVRfVElNRVNUQU1QUywKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgic2V0LXRpbWVzdGFtcHMiLApAQCAtMTg3LDcgKzE5OCwxMCBAQAogCiAgIHBhcnNlLT51c2VyX3Bjcl9waWQgPSBwYXJzZS0+cGNyX3BpZCA9IC0xOwogCisgIHBhcnNlLT5mbG93Y29tYmluZXIgPSBnc3RfZmxvd19jb21iaW5lcl9uZXcgKCk7CisKICAgcGFyc2UtPnNyY3BhZCA9IGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmc3JjX3RlbXBsYXRlLCAic3JjIik7CisgIGdzdF9mbG93X2NvbWJpbmVyX2FkZF9wYWQgKHBhcnNlLT5mbG93Y29tYmluZXIsIHBhcnNlLT5zcmNwYWQpOwogICBwYXJzZS0+Zmlyc3QgPSBUUlVFOwogICBnc3RfcGFkX3NldF9xdWVyeV9mdW5jdGlvbiAocGFyc2UtPnNyY3BhZCwKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChtcGVndHNfcGFyc2Vfc3JjX3BhZF9xdWVyeSkpOwpAQCAtMzk2LDYgKzQxMCw3IEBACiAgIHRzcGFkLT5wdXNoZWQgPSBGQUxTRTsKICAgdHNwYWQtPmZsb3dfcmV0dXJuID0gR1NUX0ZMT1dfTk9UX0xJTktFRDsKICAgZ3N0X3BhZF9zZXRfZWxlbWVudF9wcml2YXRlIChwYWQsIHRzcGFkKTsKKyAgZ3N0X2Zsb3dfY29tYmluZXJfYWRkX3BhZCAocGFyc2UtPmZsb3djb21iaW5lciwgcGFkKTsKIAogICByZXR1cm4gdHNwYWQ7CiB9CkBAIC01MDQsOCArNTE5LDExIEBACiBzdGF0aWMgdm9pZAogbXBlZ3RzX3BhcnNlX3JlbGVhc2VfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0UGFkICogcGFkKQogeworICBNcGVnVFNQYXJzZTIgKnBhcnNlID0gKE1wZWdUU1BhcnNlMiAqKSBlbGVtZW50OworCiAgIGdzdF9wYWRfc2V0X2FjdGl2ZSAocGFkLCBGQUxTRSk7CiAgIC8qIHdlIGRvIHRoZSBjbGVhbnVwIGluIEdzdEVsZW1lbnQ6OnBhZC1yZW1vdmVkICovCisgIGdzdF9mbG93X2NvbWJpbmVyX3JlbW92ZV9wYWQgKHBhcnNlLT5mbG93Y29tYmluZXIsIHBhZCk7CiAgIGdzdF9lbGVtZW50X3JlbW92ZV9wYWQgKGVsZW1lbnQsIHBhZCk7CiB9CiAKQEAgLTUyNSw5ICs1NDMsMTAgQEAKICAgICAgICAgaWYgKHNlY3Rpb24tPnN1YnRhYmxlX2V4dGVuc2lvbiAhPSB0c3BhZC0+cHJvZ3JhbV9udW1iZXIpCiAgICAgICAgICAgdG9fcHVzaCA9IEZBTFNFOwogICAgICAgfQotICAgIH0gZWxzZSB7CisgICAgfSBlbHNlIGlmIChzZWN0aW9uLT50YWJsZV9pZCAhPSAweDAwKSB7CiAgICAgICAvKiB0aGVyZSdzIGEgcHJvZ3JhbSBmaWx0ZXIgb24gdGhlIHBhZCBidXQgdGhlIFBNVCBmb3IgdGhlIHByb2dyYW0gaGFzIG5vdAotICAgICAgICogYmVlbiBwYXJzZWQgeWV0LCBpZ25vcmUgdGhlIHBhZCB1bnRpbCB3ZSBnZXQgYSBQTVQgKi8KKyAgICAgICAqIGJlZW4gcGFyc2VkIHlldCwgaWdub3JlIHRoZSBwYWQgdW50aWwgd2UgZ2V0IGEgUE1ULgorICAgICAgICogQnV0IHdlIGFsd2F5cyBhbGxvdyBQQVQgdG8gZ28gdGhyb3VnaCAqLwogICAgICAgdG9fcHVzaCA9IEZBTFNFOwogICAgIH0KICAgfQpAQCAtNTQyLDggKzU2MSwxMCBAQAogICAgIGdzdF9idWZmZXJfZmlsbCAoYnVmLCAwLCBwYWNrZXQtPmRhdGFfc3RhcnQsCiAgICAgICAgIHBhY2tldC0+ZGF0YV9lbmQgLSBwYWNrZXQtPmRhdGFfc3RhcnQpOwogICAgIHJldCA9IGdzdF9wYWRfcHVzaCAodHNwYWQtPnBhZCwgYnVmKTsKKyAgICByZXQgPSBnc3RfZmxvd19jb21iaW5lcl91cGRhdGVfZmxvdyAocGFyc2UtPmZsb3djb21iaW5lciwgcmV0KTsKICAgfQogCisgIEdTVF9MT0dfT0JKRUNUIChwYXJzZSwgIlJldHVybmluZyAlcyIsIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtNTUyLDI5ICs1NzMsMzAgQEAKICAgICBNcGVnVFNQYWNrZXRpemVyUGFja2V0ICogcGFja2V0KQogewogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwotICBNcGVnVFNCYXNlU3RyZWFtICoqcGFkX3BpZHMgPSBOVUxMOworICBNcGVnVFNCYXNlUHJvZ3JhbSAqYnAgPSBOVUxMOwogCiAgIGlmICh0c3BhZC0+cHJvZ3JhbV9udW1iZXIgIT0gLTEpIHsKLSAgICBpZiAodHNwYWQtPnByb2dyYW0pIHsKLSAgICAgIE1wZWdUU0Jhc2VQcm9ncmFtICpicCA9IChNcGVnVFNCYXNlUHJvZ3JhbSAqKSB0c3BhZC0+cHJvZ3JhbTsKLSAgICAgIHBhZF9waWRzID0gYnAtPnN0cmVhbXM7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8qIHRoZXJlJ3MgYSBwcm9ncmFtIGZpbHRlciBvbiB0aGUgcGFkIGJ1dCB0aGUgUE1UIGZvciB0aGUgcHJvZ3JhbSBoYXMgbm90Ci0gICAgICAgKiBiZWVuIHBhcnNlZCB5ZXQsIGlnbm9yZSB0aGUgcGFkIHVudGlsIHdlIGdldCBhIFBNVCAqLwotICAgICAgZ290byBvdXQ7CisgICAgaWYgKHRzcGFkLT5wcm9ncmFtKQorICAgICAgYnAgPSAoTXBlZ1RTQmFzZVByb2dyYW0gKikgdHNwYWQtPnByb2dyYW07CisgICAgZWxzZQorICAgICAgYnAgPSBtcGVndHNfYmFzZV9nZXRfcHJvZ3JhbSAoKE1wZWdUU0Jhc2UgKikgcGFyc2UsCisgICAgICAgICAgdHNwYWQtPnByb2dyYW1fbnVtYmVyKTsKKyAgfQorCisgIGlmIChicCkgeworICAgIGlmIChwYWNrZXQtPnBpZCA9PSBicC0+cG10X3BpZCB8fCBicC0+c3RyZWFtcyA9PSBOVUxMCisgICAgICAgIHx8IGJwLT5zdHJlYW1zW3BhY2tldC0+cGlkXSkgeworICAgICAgR3N0QnVmZmVyICpidWYgPQorICAgICAgICAgIGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAocGFja2V0LT5kYXRhX2VuZCAtIHBhY2tldC0+ZGF0YV9zdGFydCk7CisgICAgICBnc3RfYnVmZmVyX2ZpbGwgKGJ1ZiwgMCwgcGFja2V0LT5kYXRhX3N0YXJ0LAorICAgICAgICAgIHBhY2tldC0+ZGF0YV9lbmQgLSBwYWNrZXQtPmRhdGFfc3RhcnQpOworICAgICAgLyogcHVzaCBpZiB0aGVyZSdzIG5vIGZpbHRlciBvciBpZiB0aGUgcGlkIGlzIGluIHRoZSBmaWx0ZXIgKi8KKyAgICAgIHJldCA9IGdzdF9wYWRfcHVzaCAodHNwYWQtPnBhZCwgYnVmKTsKKyAgICAgIHJldCA9IGdzdF9mbG93X2NvbWJpbmVyX3VwZGF0ZV9mbG93IChwYXJzZS0+Zmxvd2NvbWJpbmVyLCByZXQpOwogICAgIH0KICAgfQorICBHU1RfREVCVUdfT0JKRUNUIChwYXJzZSwgIlJldHVybmluZyAlcyIsIGdzdF9mbG93X2dldF9uYW1lIChyZXQpKTsKIAotICBpZiAocGFkX3BpZHMgPT0gTlVMTCB8fCBwYWRfcGlkc1twYWNrZXQtPnBpZF0pIHsKLSAgICBHc3RCdWZmZXIgKmJ1ZiA9Ci0gICAgICAgIGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAocGFja2V0LT5kYXRhX2VuZCAtIHBhY2tldC0+ZGF0YV9zdGFydCk7Ci0gICAgZ3N0X2J1ZmZlcl9maWxsIChidWYsIDAsIHBhY2tldC0+ZGF0YV9zdGFydCwKLSAgICAgICAgcGFja2V0LT5kYXRhX2VuZCAtIHBhY2tldC0+ZGF0YV9zdGFydCk7Ci0gICAgLyogcHVzaCBpZiB0aGVyZSdzIG5vIGZpbHRlciBvciBpZiB0aGUgcGlkIGlzIGluIHRoZSBmaWx0ZXIgKi8KLSAgICByZXQgPSBnc3RfcGFkX3B1c2ggKHRzcGFkLT5wYWQsIGJ1Zik7Ci0gIH0KLQotb3V0OgogICByZXR1cm4gcmV0OwogfQogCkBAIC04MTgsMTUgKzg0MCwxNSBAQAogCiAgICAgR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikgPSBvdXRfdHMgKyBwYXJzZS0+dHNfb2Zmc2V0OwogICAgIEdTVF9CVUZGRVJfRFRTIChidWZmZXIpID0gb3V0X3RzICsgcGFyc2UtPnRzX29mZnNldDsKLSAgICBpZiAocmV0ID09IEdTVF9GTE9XX09LKQorICAgIGlmIChyZXQgPT0gR1NUX0ZMT1dfT0spIHsKICAgICAgIHJldCA9IGdzdF9wYWRfcHVzaCAocGFyc2UtPnNyY3BhZCwgYnVmZmVyKTsKLSAgICBlbHNlCisgICAgICByZXQgPSBnc3RfZmxvd19jb21iaW5lcl91cGRhdGVfZmxvdyAocGFyc2UtPmZsb3djb21iaW5lciwgcmV0KTsKKyAgICB9IGVsc2UKICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAKICAgICAvKiBGcmVlIHRoaXMgbGlzdCBub2RlIGFuZCBtb3ZlIHRvIHRoZSBuZXh0ICovCiAgICAgcCA9IGdfbGlzdF9wcmV2aW91cyAobCk7Ci0gICAgcGFyc2UtPnBlbmRpbmdfYnVmZmVycyA9IGdfbGlzdF9yZW1vdmVfbGluayAocGFyc2UtPnBlbmRpbmdfYnVmZmVycywgbCk7Ci0gICAgZ19saXN0X2ZyZWVfMSAobCk7CisgICAgcGFyc2UtPnBlbmRpbmdfYnVmZmVycyA9IGdfbGlzdF9kZWxldGVfbGluayAocGFyc2UtPnBlbmRpbmdfYnVmZmVycywgbCk7CiAgICAgbCA9IHA7CiAgIH0KIApAQCAtODcyLDggKzg5NCwxMCBAQAogICAgIH0KICAgfQogCi0gIGlmIChidWZmZXIgIT0gTlVMTCkKKyAgaWYgKGJ1ZmZlciAhPSBOVUxMKSB7CiAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoIChwYXJzZS0+c3JjcGFkLCBidWZmZXIpOworICAgIHJldCA9IGdzdF9mbG93X2NvbWJpbmVyX3VwZGF0ZV9mbG93IChwYXJzZS0+Zmxvd2NvbWJpbmVyLCByZXQpOworICB9CiAKICAgcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC9tcGVndHNwYXJzZS5oIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmgKaW5kZXggZDNiYzZhMi4uZjg5YmQ0YyAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmgKKysrIGIvZ3N0L21wZWd0c2RlbXV4L21wZWd0c3BhcnNlLmgKQEAgLTI2LDYgKzI2LDcgQEAKICNkZWZpbmUgR1NUX01QRUdfVFNfUEFSU0VfSAogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGZsb3djb21iaW5lci5oPgogI2luY2x1ZGUgIm1wZWd0c2Jhc2UuaCIKICNpbmNsdWRlICJtcGVndHNwYWNrZXRpemVyLmgiCiAKQEAgLTYxLDggKzYyLDExIEBACiAgIC8qIEFsd2F5cyBwcmVzZW50IHNvdXJjZSBwYWQgKi8KICAgR3N0UGFkICpzcmNwYWQ7CiAKKyAgLyogUmVxdWVzdCBzb3VyY2UgKHNpbmdsZSBwcm9ncmFtKSBwYWRzICovCiAgIEdMaXN0ICpzcmNwYWRzOwogCisgIEdzdEZsb3dDb21iaW5lciAqZmxvd2NvbWJpbmVyOworICAKICAgLyogc3RhdGUgKi8KICAgZ2Jvb2xlYW4gZmlyc3Q7CiAgIGdib29sZWFuIHNldF90aW1lc3RhbXBzOwpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYyBiL2dzdC9tcGVndHNkZW11eC90c2RlbXV4LmMKaW5kZXggNTIzMWMwNS4uOGE0MWY5MCAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguYworKysgYi9nc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5jCkBAIC0zNyw2ICszNyw4IEBACiAjaW5jbHVkZSA8Z2xpYi5oPgogI2luY2x1ZGUgPGdzdC90YWcvdGFnLmg+CiAjaW5jbHVkZSA8Z3N0L3BidXRpbHMvcGJ1dGlscy5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2Jhc2UuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KIAogI2luY2x1ZGUgIm1wZWd0c2Jhc2UuaCIKICNpbmNsdWRlICJ0c2RlbXV4LmgiCkBAIC00Niw3ICs0OCwxMCBAQAogI2luY2x1ZGUgInBlc3BhcnNlLmgiCiAjaW5jbHVkZSA8Z3N0L2NvZGVjcGFyc2Vycy9nc3RoMjY0cGFyc2VyLmg+CiAjaW5jbHVkZSA8Z3N0L2NvZGVjcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZXIuaD4KLSNpbmNsdWRlIDxnc3QvYmFzZS9nc3RieXRld3JpdGVyLmg+CisKKyNpbmNsdWRlIDxtYXRoLmg+CisKKyNkZWZpbmUgX2dzdF9sb2cyKHgpIChsb2coeCkvbG9nKDIpKQogCiAvKgogICogdHNkZW11eApAQCAtMjA0LDYgKzIwOSw4IEBACiAgICAgICAic3lzdGVtc3RyZWFtID0gKGJvb2xlYW4pIEZBTFNFOyAiIFwKICAgICAidmlkZW8veC1oMjY0LHN0cmVhbS1mb3JtYXQ9KHN0cmluZylieXRlLXN0cmVhbSwiIFwKICAgICAgICJhbGlnbm1lbnQ9KHN0cmluZyluYWw7IiBcCisgICAgInZpZGVvL3gtaDI2NSxzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIiBcCisgICAgICAiYWxpZ25tZW50PShzdHJpbmcpbmFsOyIgXAogICAgICJ2aWRlby94LWRpcmFjOyIgXAogICAgICJ2aWRlby94LWNhdnM7IiBcCiAgICAgInZpZGVvL3gtd212LCIgXApAQCAtMjMwLDEyICsyMzcsMTMgQEAKICAgICAgICJtdXRlID0gKGJvb2xlYW4pIHsgRkFMU0UsIFRSVUUgfTsgIiBcCiAgICAgImF1ZGlvL3gtYWMzOyBhdWRpby94LWVhYzM7IiBcCiAgICAgImF1ZGlvL3gtZHRzOyIgXAorICAgICJhdWRpby94LW9wdXM7IiBcCiAgICAgImF1ZGlvL3gtcHJpdmF0ZS10cy1scGNtIiBcCiAgICkKIAogLyogQ2FuIGFsc28gdXNlIHRoZSBzdWJwaWN0dXJlIHBhZHMgZm9yIHRleHQgc3VidGl0bGVzPyAqLwogI2RlZmluZSBTVUJQSUNUVVJFX0NBUFMgXAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoInN1YnBpY3R1cmUveC1wZ3M7IHN1YnBpY3R1cmUveC1kdmQiKQorICAgIEdTVF9TVEFUSUNfQ0FQUyAoInN1YnBpY3R1cmUveC1wZ3M7IHN1YnBpY3R1cmUveC1kdmQ7IHN1YnBpY3R1cmUveC1kdmIiKQogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgdmlkZW9fdGVtcGxhdGUgPQogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJ2aWRlb18lMDR4IiwgR1NUX1BBRF9TUkMsCkBAIC0yNzYsNiArMjg0LDkgQEAKIGdzdF90c19kZW11eF9wcm9ncmFtX3N0YXJ0ZWQgKE1wZWdUU0Jhc2UgKiBiYXNlLCBNcGVnVFNCYXNlUHJvZ3JhbSAqIHByb2dyYW0pOwogc3RhdGljIHZvaWQKIGdzdF90c19kZW11eF9wcm9ncmFtX3N0b3BwZWQgKE1wZWdUU0Jhc2UgKiBiYXNlLCBNcGVnVFNCYXNlUHJvZ3JhbSAqIHByb2dyYW0pOworc3RhdGljIGdib29sZWFuCitnc3RfdHNfZGVtdXhfY2FuX3JlbW92ZV9wcm9ncmFtIChNcGVnVFNCYXNlICogYmFzZSwKKyAgICBNcGVnVFNCYXNlUHJvZ3JhbSAqIHByb2dyYW0pOwogc3RhdGljIHZvaWQgZ3N0X3RzX2RlbXV4X3Jlc2V0IChNcGVnVFNCYXNlICogYmFzZSk7CiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X3RzX2RlbXV4X3B1c2ggKE1wZWdUU0Jhc2UgKiBiYXNlLCBNcGVnVFNQYWNrZXRpemVyUGFja2V0ICogcGFja2V0LApAQCAtMzczLDYgKzM4NCw3IEBACiAgIHRzX2NsYXNzLT5wdXNoX2V2ZW50ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKHB1c2hfZXZlbnQpOwogICB0c19jbGFzcy0+cHJvZ3JhbV9zdGFydGVkID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90c19kZW11eF9wcm9ncmFtX3N0YXJ0ZWQpOwogICB0c19jbGFzcy0+cHJvZ3JhbV9zdG9wcGVkID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90c19kZW11eF9wcm9ncmFtX3N0b3BwZWQpOworICB0c19jbGFzcy0+Y2FuX3JlbW92ZV9wcm9ncmFtID0gZ3N0X3RzX2RlbXV4X2Nhbl9yZW1vdmVfcHJvZ3JhbTsKICAgdHNfY2xhc3MtPnN0cmVhbV9hZGRlZCA9IGdzdF90c19kZW11eF9zdHJlYW1fYWRkZWQ7CiAgIHRzX2NsYXNzLT5zdHJlYW1fcmVtb3ZlZCA9IGdzdF90c19kZW11eF9zdHJlYW1fcmVtb3ZlZDsKICAgdHNfY2xhc3MtPnNlZWsgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RzX2RlbXV4X2RvX3NlZWspOwpAQCAtMzk3LDYgKzQwOSwxMSBAQAogICAgIGRlbXV4LT5nbG9iYWxfdGFncyA9IE5VTEw7CiAgIH0KIAorICBpZiAoZGVtdXgtPnByZXZpb3VzX3Byb2dyYW0pIHsKKyAgICBtcGVndHNfYmFzZV9kZWFjdGl2YXRlX2FuZF9mcmVlX3Byb2dyYW0gKGJhc2UsIGRlbXV4LT5wcmV2aW91c19wcm9ncmFtKTsKKyAgICBkZW11eC0+cHJldmlvdXNfcHJvZ3JhbSA9IE5VTEw7CisgIH0KKwogICBkZW11eC0+aGF2ZV9ncm91cF9pZCA9IEZBTFNFOwogICBkZW11eC0+Z3JvdXBfaWQgPSBHX01BWFVJTlQ7CiAKQEAgLTg1MSw4ICs4NjgsOCBAQAogCiAgIGdzdF9zZWdtZW50X2RvX3NlZWsgKCZkZW11eC0+c2VnbWVudCwgcmF0ZSwgZm9ybWF0LCBmbGFncywgc3RhcnRfdHlwZSwKICAgICAgIHN0YXJ0LCBzdG9wX3R5cGUsIHN0b3AsIE5VTEwpOwotICBpZiAoIShmbGFncyAmIEdTVF9TRUVLX0ZMQUdfQUNDVVJBVEUpKQotICAgIGRlbXV4LT5yZXNldF9zZWdtZW50ID0gVFJVRTsKKyAgLyogUmVzZXQgc2VnbWVudCBpZiB3ZSdyZSBub3QgZG9pbmcgYW4gYWNjdXJhdGUgc2VlayAqLworICBkZW11eC0+cmVzZXRfc2VnbWVudCA9ICghKGZsYWdzICYgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSkpOwogCiAgIGlmIChkZW11eC0+c2VnbWVudF9ldmVudCkgewogICAgIGdzdF9ldmVudF91bnJlZiAoZGVtdXgtPnNlZ21lbnRfZXZlbnQpOwpAQCAtMTE3MSw3ICsxMTg4LDcgQEAKICAgICAgICAgICBHU1RfTVRTX0RFU0NfRFZCX1NVQlRJVExJTkcpOwogICAgICAgaWYgKGRlc2MpIHsKICAgICAgICAgR1NUX0xPRyAoInN1YnRpdGxpbmciKTsKLSAgICAgICAgaXNfcHJpdmF0ZSA9IFRSVUU7CisgICAgICAgIGlzX3N1YnBpY3R1cmUgPSBUUlVFOwogICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoInN1YnBpY3R1cmUveC1kdmIiKTsKICAgICAgICAgc3BhcnNlID0gVFJVRTsKICAgICAgICAgYnJlYWs7CkBAIC0xMTg5LDYgKzEyMDYsMTc5IEBACiAgICAgICAgICAgaXNfYXVkaW8gPSBUUlVFOwogICAgICAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgiYXVkaW8veC1zbXB0ZS0zMDJtIik7CiAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgRFJGX0lEX09QVVM6CisgICAgICAgICAgZGVzYyA9IG1wZWd0c19nZXRfZGVzY3JpcHRvcl9mcm9tX3N0cmVhbSAoYnN0cmVhbSwKKyAgICAgICAgICAgICAgR1NUX01UU19ERVNDX0RWQl9FWFRFTlNJT04pOworICAgICAgICAgIGlmIChkZXNjICE9IE5VTEwgJiYgZGVzYy0+dGFnX2V4dGVuc2lvbiA9PSAweDgwICYmIGRlc2MtPmxlbmd0aCA+PSAxKSB7ICAgICAgIC8qIFVzZXIgZGVmaW5lZCAocHJvdmlzaW9uYWwgT3B1cykgKi8KKyAgICAgICAgICAgIGd1aW50OCBjaGFubmVsX2NvbmZpZ19jb2RlOworICAgICAgICAgICAgR3N0Qnl0ZVJlYWRlciBicjsKKworICAgICAgICAgICAgLyogc2tpcCB0YWcsIGxlbmd0aCBhbmQgdGFnX2V4dGVuc2lvbiAqLworICAgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX2luaXQgKCZiciwgZGVzYy0+ZGF0YSArIDMsIGRlc2MtPmxlbmd0aCAtIDEpOworICAgICAgICAgICAgY2hhbm5lbF9jb25maWdfY29kZSA9IGdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDhfdW5jaGVja2VkICgmYnIpOworCisgICAgICAgICAgICBpZiAoKGNoYW5uZWxfY29uZmlnX2NvZGUgJiAweDhmKSA8PSA4KSB7CisgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBndWludDggY291cGxlZF9zdHJlYW1fY291bnRzWzldID0geworICAgICAgICAgICAgICAgIDEsIDAsIDEsIDEsIDIsIDIsIDIsIDMsIDMKKyAgICAgICAgICAgICAgfTsKKyAgICAgICAgICAgICAgc3RhdGljIGNvbnN0IGd1aW50OCBjaGFubmVsX21hcF9hWzhdWzhdID0geworICAgICAgICAgICAgICAgIHswfSwKKyAgICAgICAgICAgICAgICB7MCwgMX0sCisgICAgICAgICAgICAgICAgezAsIDIsIDF9LAorICAgICAgICAgICAgICAgIHswLCAxLCAyLCAzfSwKKyAgICAgICAgICAgICAgICB7MCwgNCwgMSwgMiwgM30sCisgICAgICAgICAgICAgICAgezAsIDQsIDEsIDIsIDMsIDV9LAorICAgICAgICAgICAgICAgIHswLCA0LCAxLCAyLCAzLCA1LCA2fSwKKyAgICAgICAgICAgICAgICB7MCwgNiwgMSwgMiwgMywgNCwgNSwgN30sCisgICAgICAgICAgICAgIH07CisgICAgICAgICAgICAgIHN0YXRpYyBjb25zdCBndWludDggY2hhbm5lbF9tYXBfYls4XVs4XSA9IHsKKyAgICAgICAgICAgICAgICB7MH0sCisgICAgICAgICAgICAgICAgezAsIDF9LAorICAgICAgICAgICAgICAgIHswLCAxLCAyfSwKKyAgICAgICAgICAgICAgICB7MCwgMSwgMiwgM30sCisgICAgICAgICAgICAgICAgezAsIDEsIDIsIDMsIDR9LAorICAgICAgICAgICAgICAgIHswLCAxLCAyLCAzLCA0LCA1fSwKKyAgICAgICAgICAgICAgICB7MCwgMSwgMiwgMywgNCwgNSwgNn0sCisgICAgICAgICAgICAgICAgezAsIDEsIDIsIDMsIDQsIDUsIDYsIDd9LAorICAgICAgICAgICAgICB9OworCisgICAgICAgICAgICAgIGdpbnQgY2hhbm5lbHMgPSAtMSwgc3RyZWFtX2NvdW50LCBjb3VwbGVkX2NvdW50LCBtYXBwaW5nX2ZhbWlseTsKKyAgICAgICAgICAgICAgZ3VpbnQ4ICpjaGFubmVsX21hcHBpbmcgPSBOVUxMOworCisgICAgICAgICAgICAgIGNoYW5uZWxzID0gY2hhbm5lbF9jb25maWdfY29kZSA/IChjaGFubmVsX2NvbmZpZ19jb2RlICYgMHgwZikgOiAyOworICAgICAgICAgICAgICBpZiAoY2hhbm5lbF9jb25maWdfY29kZSA9PSAwIHx8IGNoYW5uZWxfY29uZmlnX2NvZGUgPT0gMHg4MCkgeworICAgICAgICAgICAgICAgIC8qIER1YWwgTW9ubyAqLworICAgICAgICAgICAgICAgIG1hcHBpbmdfZmFtaWx5ID0gMjU1OworICAgICAgICAgICAgICAgIGlmIChjaGFubmVsX2NvbmZpZ19jb2RlID09IDApIHsKKyAgICAgICAgICAgICAgICAgIHN0cmVhbV9jb3VudCA9IDE7CisgICAgICAgICAgICAgICAgICBjb3VwbGVkX2NvdW50ID0gMTsKKyAgICAgICAgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgc3RyZWFtX2NvdW50ID0gMjsKKyAgICAgICAgICAgICAgICAgIGNvdXBsZWRfY291bnQgPSAwOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBjaGFubmVsX21hcHBpbmcgPSBnX25ldzAgKGd1aW50OCwgY2hhbm5lbHMpOworICAgICAgICAgICAgICAgIG1lbWNweSAoY2hhbm5lbF9tYXBwaW5nLCAmY2hhbm5lbF9tYXBfYVsxXSwgY2hhbm5lbHMpOworICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWxfY29uZmlnX2NvZGUgPD0gOCkgeworICAgICAgICAgICAgICAgIG1hcHBpbmdfZmFtaWx5ID0gKGNoYW5uZWxzID4gMikgPyAxIDogMDsKKyAgICAgICAgICAgICAgICBzdHJlYW1fY291bnQgPQorICAgICAgICAgICAgICAgICAgICBjaGFubmVsX2NvbmZpZ19jb2RlIC0KKyAgICAgICAgICAgICAgICAgICAgY291cGxlZF9zdHJlYW1fY291bnRzW2NoYW5uZWxfY29uZmlnX2NvZGVdOworICAgICAgICAgICAgICAgIGNvdXBsZWRfY291bnQgPSBjb3VwbGVkX3N0cmVhbV9jb3VudHNbY2hhbm5lbF9jb25maWdfY29kZV07CisgICAgICAgICAgICAgICAgaWYgKG1hcHBpbmdfZmFtaWx5ICE9IDApIHsKKyAgICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZyA9IGdfbmV3MCAoZ3VpbnQ4LCBjaGFubmVscyk7CisgICAgICAgICAgICAgICAgICBtZW1jcHkgKGNoYW5uZWxfbWFwcGluZywgJmNoYW5uZWxfbWFwX2FbY2hhbm5lbHMgLSAxXSwKKyAgICAgICAgICAgICAgICAgICAgICBjaGFubmVscyk7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICB9IGVsc2UgaWYgKGNoYW5uZWxfY29uZmlnX2NvZGUgPj0gMHg4MgorICAgICAgICAgICAgICAgICAgJiYgY2hhbm5lbF9jb25maWdfY29kZSA8PSAweDg4KSB7CisgICAgICAgICAgICAgICAgbWFwcGluZ19mYW1pbHkgPSAxOworICAgICAgICAgICAgICAgIHN0cmVhbV9jb3VudCA9IGNoYW5uZWxzOworICAgICAgICAgICAgICAgIGNvdXBsZWRfY291bnQgPSAwOworICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZyA9IGdfbmV3MCAoZ3VpbnQ4LCBjaGFubmVscyk7CisgICAgICAgICAgICAgICAgbWVtY3B5IChjaGFubmVsX21hcHBpbmcsICZjaGFubmVsX21hcF9iW2NoYW5uZWxzIC0gMV0sCisgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxzKTsKKyAgICAgICAgICAgICAgfSBlbHNlIGlmIChjaGFubmVsX2NvbmZpZ19jb2RlID09IDB4ODEpIHsKKyAgICAgICAgICAgICAgICBpZiAoZ3N0X2J5dGVfcmVhZGVyX2dldF9yZW1haW5pbmcgKCZicikgPCAyKSB7CisgICAgICAgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIE9wdXMgZGVzY3JpcHRvciB3aXRoIGV4dGVuZGVkIGNoYW5uZWwgY29uZmlndXJhdGlvbiIpOworICAgICAgICAgICAgICAgICAgY2hhbm5lbHMgPSAtMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGNoYW5uZWxzID0gZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50OF91bmNoZWNrZWQgKCZicik7CisgICAgICAgICAgICAgICAgbWFwcGluZ19mYW1pbHkgPSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQ4X3VuY2hlY2tlZCAoJmJyKTsKKworICAgICAgICAgICAgICAgIC8qIE92ZXJ3cml0ZSB2YWx1ZXMgZnJvbSBhYm92ZSAqLworICAgICAgICAgICAgICAgIGlmIChjaGFubmVscyA9PSAwKSB7CisgICAgICAgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIE9wdXMgZGVzY3JpcHRvciB3aXRoIGV4dGVuZGVkIGNoYW5uZWwgY29uZmlndXJhdGlvbiIpOworICAgICAgICAgICAgICAgICAgY2hhbm5lbHMgPSAtMTsKKyAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgIGlmIChtYXBwaW5nX2ZhbWlseSA9PSAwICYmIGNoYW5uZWxzIDw9IDIpIHsKKyAgICAgICAgICAgICAgICAgIHN0cmVhbV9jb3VudCA9IGNoYW5uZWxzIC0gY291cGxlZF9zdHJlYW1fY291bnRzW2NoYW5uZWxzXTsKKyAgICAgICAgICAgICAgICAgIGNvdXBsZWRfY291bnQgPSBjb3VwbGVkX3N0cmVhbV9jb3VudHNbY2hhbm5lbHNdOworICAgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICBHc3RCaXRSZWFkZXIgYnJlYWRlcjsKKyAgICAgICAgICAgICAgICAgIGd1aW50OCBzdHJlYW1fY291bnRfbWludXNfb25lLCBjb3VwbGVkX3N0cmVhbV9jb3VudDsKKyAgICAgICAgICAgICAgICAgIGdpbnQgc3RyZWFtX2NvdW50X21pbnVzX29uZV9sZW4sIGNvdXBsZWRfc3RyZWFtX2NvdW50X2xlbjsKKyAgICAgICAgICAgICAgICAgIGdpbnQgY2hhbm5lbF9tYXBwaW5nX2xlbiwgaTsKKworICAgICAgICAgICAgICAgICAgZ3N0X2JpdF9yZWFkZXJfaW5pdCAoJmJyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgZ3N0X2J5dGVfcmVhZGVyX2dldF9kYXRhX3VuY2hlY2tlZAorICAgICAgICAgICAgICAgICAgICAgICgmYnIsIGdzdF9ieXRlX3JlYWRlcl9nZXRfcmVtYWluaW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICgmYnIpKSwgZ3N0X2J5dGVfcmVhZGVyX2dldF9yZW1haW5pbmcgKCZicikpOworCisgICAgICAgICAgICAgICAgICBzdHJlYW1fY291bnRfbWludXNfb25lX2xlbiA9IGNlaWwgKF9nc3RfbG9nMiAoY2hhbm5lbHMpKTsKKyAgICAgICAgICAgICAgICAgIGlmICghZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDggKCZicmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmc3RyZWFtX2NvdW50X21pbnVzX29uZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc3RyZWFtX2NvdW50X21pbnVzX29uZV9sZW4pKSB7CisgICAgICAgICAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBPcHVzIGRlc2NyaXB0b3Igd2l0aCBleHRlbmRlZCBjaGFubmVsIGNvbmZpZ3VyYXRpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICB9CisKKyAgICAgICAgICAgICAgICAgIHN0cmVhbV9jb3VudCA9IHN0cmVhbV9jb3VudF9taW51c19vbmUgKyAxOworICAgICAgICAgICAgICAgICAgY291cGxlZF9zdHJlYW1fY291bnRfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICBjZWlsIChfZ3N0X2xvZzIgKHN0cmVhbV9jb3VudF9taW51c19vbmUgKyAyKSk7CisKKyAgICAgICAgICAgICAgICAgIGlmICghZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDggKCZicmVhZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAmY291cGxlZF9zdHJlYW1fY291bnQsIGNvdXBsZWRfc3RyZWFtX2NvdW50X2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAgICAgICAgICAgICAgICJJbnZhbGlkIE9wdXMgZGVzY3JpcHRvciB3aXRoIGV4dGVuZGVkIGNoYW5uZWwgY29uZmlndXJhdGlvbiIpOworICAgICAgICAgICAgICAgICAgICBjaGFubmVscyA9IC0xOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICAgICAgY291cGxlZF9jb3VudCA9IGNvdXBsZWRfc3RyZWFtX2NvdW50OworCisgICAgICAgICAgICAgICAgICBjaGFubmVsX21hcHBpbmdfbGVuID0KKyAgICAgICAgICAgICAgICAgICAgICBjZWlsIChfZ3N0X2xvZzIgKHN0cmVhbV9jb3VudF9taW51c19vbmUgKyAxICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY291cGxlZF9zdHJlYW1fY291bnQgKyAxKSk7CisgICAgICAgICAgICAgICAgICBjaGFubmVsX21hcHBpbmcgPSBnX25ldzAgKGd1aW50OCwgY2hhbm5lbHMpOworICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGNoYW5uZWxzOyBpKyspIHsKKyAgICAgICAgICAgICAgICAgICAgaWYgKCFnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OCAoJmJyZWFkZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmNoYW5uZWxfbWFwcGluZ1tpXSwgY2hhbm5lbF9tYXBwaW5nX2xlbikpIHsKKyAgICAgICAgICAgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICAgICAgICAgICAgICAgICAiSW52YWxpZCBPcHVzIGRlc2NyaXB0b3Igd2l0aCBleHRlbmRlZCBjaGFubmVsIGNvbmZpZ3VyYXRpb24iKTsKKyAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgfQorCisgICAgICAgICAgICAgICAgICAvKiBlcnJvciBhYm92ZSAqLworICAgICAgICAgICAgICAgICAgaWYgKGkgIT0gY2hhbm5lbHMpIHsKKyAgICAgICAgICAgICAgICAgICAgY2hhbm5lbHMgPSAtMTsKKyAgICAgICAgICAgICAgICAgICAgZ19mcmVlIChjaGFubmVsX21hcHBpbmcpOworICAgICAgICAgICAgICAgICAgICBjaGFubmVsX21hcHBpbmcgPSBOVUxMOworICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICAgICAgICAgIH0KKworICAgICAgICAgICAgICBpZiAoY2hhbm5lbHMgIT0gLTEpIHsKKyAgICAgICAgICAgICAgICBpc19hdWRpbyA9IFRSVUU7CisgICAgICAgICAgICAgICAgdGVtcGxhdGUgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZhdWRpb190ZW1wbGF0ZSk7CisgICAgICAgICAgICAgICAgbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoImF1ZGlvXyUwNHgiLCBic3RyZWFtLT5waWQpOworCisgICAgICAgICAgICAgICAgY2FwcyA9CisgICAgICAgICAgICAgICAgICAgIGdzdF9jb2RlY191dGlsc19vcHVzX2NyZWF0ZV9jYXBzICg0ODAwMCwgY2hhbm5lbHMsCisgICAgICAgICAgICAgICAgICAgIG1hcHBpbmdfZmFtaWx5LCBzdHJlYW1fY291bnQsIGNvdXBsZWRfY291bnQsCisgICAgICAgICAgICAgICAgICAgIGNoYW5uZWxfbWFwcGluZyk7CisKKyAgICAgICAgICAgICAgICBnX2ZyZWUgKGNoYW5uZWxfbWFwcGluZyk7CisgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBjaGFubmVsIGNvbmZpZyBjb2RlIDB4JTAyeCIsIGNoYW5uZWxfY29uZmlnX2NvZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGRlbXV4LCAiT3B1cywgYnV0IG5vIGV4dGVuc2lvbiBkZXNjcmlwdG9yIik7CisgICAgICAgICAgfQorICAgICAgICAgIGJyZWFrOwogICAgICAgICBjYXNlIERSRl9JRF9IRVZDOgogICAgICAgICAgIGlzX3ZpZGVvID0gVFJVRTsKICAgICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInZpZGVvL3gtaDI2NSIsCkBAIC0xNDAwLDggKzE1OTAsNyBAQAogICAgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChwYWQsIGdzdF90c19kZW11eF9zcmNwYWRfZXZlbnQpOwogICB9CiAKLSAgaWYgKG5hbWUpCi0gICAgZ19mcmVlIChuYW1lKTsKKyAgZ19mcmVlIChuYW1lKTsKICAgaWYgKHRlbXBsYXRlKQogICAgIGdzdF9vYmplY3RfdW5yZWYgKHRlbXBsYXRlKTsKICAgaWYgKGNhcHMpCkBAIC0xNDM2LDcgKzE2MjUsOCBAQAogICAgIHN0cmVhbS0+YWN0aXZlID0gRkFMU0U7CiAKICAgICBzdHJlYW0tPm5lZWRfbmV3c2VnbWVudCA9IFRSVUU7Ci0gICAgZGVtdXgtPnJlc2V0X3NlZ21lbnQgPSBUUlVFOworICAgIC8qIFJlc2V0IHNlZ21lbnQgaWYgd2UncmUgbm90IGRvaW5nIGFuIGFjY3VyYXRlIHNlZWsgKi8KKyAgICBkZW11eC0+cmVzZXRfc2VnbWVudCA9ICghKGRlbXV4LT5zZWdtZW50LmZsYWdzICYgR1NUX1NFRUtfRkxBR19BQ0NVUkFURSkpOwogICAgIHN0cmVhbS0+bmVlZHNfa2V5ZnJhbWUgPSBGQUxTRTsKICAgICBzdHJlYW0tPmRpc2NvbnQgPSBUUlVFOwogICAgIHN0cmVhbS0+cHRzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKQEAgLTE1MTMsMTYgKzE3MDMsOCBAQAogICAgIGdzdF9lbGVtZW50X2FkZF9wYWQgKChHc3RFbGVtZW50ICopIHRzZGVtdXgsIHN0cmVhbS0+cGFkKTsKICAgICBzdHJlYW0tPmFjdGl2ZSA9IFRSVUU7CiAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJkb25lIGFkZGluZyBwYWQiKTsKLSAgICAvKiBmb3JjZSBzZW5kaW5nIG9mIHBlbmRpbmcgc3RpY2t5IGV2ZW50cyB3aGljaCBoYXZlIGJlZW4gc3RvcmVkIG9uIHRoZQotICAgICAqIHBhZCBhbHJlYWR5IGFuZCB3aGljaCBvdGhlcndpc2Ugd291bGQgb25seSBiZSBzZW50IG9uIHRoZSBmaXJzdCBidWZmZXIKLSAgICAgKiBvciBzZXJpYWxpemVkIGV2ZW50ICh3aGljaCBtZWFucyB2ZXJ5IGxhdGUgaW4gY2FzZSBvZiBzdWJ0aXRsZSBzdHJlYW1zKSwKLSAgICAgKiBhbmQgcGxheXNpbmsgd2FpdHMgZm9yIHN0cmVhbS1zdGFydCBvciBhbm90aGVyIHNlcmlhbGl6ZWQgZXZlbnQgKi8KLSAgICBpZiAoc3RyZWFtLT5zcGFyc2UpIHsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLCAic3BhcnNlIHN0cmVhbSwgcHVzaGluZyBHQVAgZXZlbnQiKTsKLSAgICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoc3RyZWFtLT5wYWQsIGdzdF9ldmVudF9uZXdfZ2FwICgwLCAwKSk7Ci0gICAgfQogICB9IGVsc2UgaWYgKCgoTXBlZ1RTQmFzZVN0cmVhbSAqKSBzdHJlYW0pLT5zdHJlYW1fdHlwZSAhPSAweGZmKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUICh0c2RlbXV4LAorICAgIEdTVF9ERUJVR19PQkpFQ1QgKHRzZGVtdXgsCiAgICAgICAgICJzdHJlYW0gJXAgKHBpZCAweCUwNHgsIHR5cGU6MHglMDJ4KSBoYXMgbm8gcGFkIiwgc3RyZWFtLAogICAgICAgICAoKE1wZWdUU0Jhc2VTdHJlYW0gKikgc3RyZWFtKS0+cGlkLAogICAgICAgICAoKE1wZWdUU0Jhc2VTdHJlYW0gKikgc3RyZWFtKS0+c3RyZWFtX3R5cGUpOwpAQCAtMTUzNSw4ICsxNzE3LDcgQEAKIHsKICAgR1NUX0RFQlVHICgiZmx1c2hpbmcgc3RyZWFtICVwIiwgc3RyZWFtKTsKIAotICBpZiAoc3RyZWFtLT5kYXRhKQotICAgIGdfZnJlZSAoc3RyZWFtLT5kYXRhKTsKKyAgZ19mcmVlIChzdHJlYW0tPmRhdGEpOwogICBzdHJlYW0tPmRhdGEgPSBOVUxMOwogICBzdHJlYW0tPnN0YXRlID0gUEVORElOR19QQUNLRVRfRU1QVFk7CiAgIHN0cmVhbS0+ZXhwZWN0ZWRfc2l6ZSA9IDA7CkBAIC0xNTgzLDYgKzE3NjQsMjQgQEAKICAgICBnc3RfdHNfZGVtdXhfc3RyZWFtX2ZsdXNoICh3YWxrLT5kYXRhLCBkZW11eCwgaGFyZCk7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3RzX2RlbXV4X2Nhbl9yZW1vdmVfcHJvZ3JhbSAoTXBlZ1RTQmFzZSAqIGJhc2UsIE1wZWdUU0Jhc2VQcm9ncmFtICogcHJvZ3JhbSkKK3sKKyAgR3N0VFNEZW11eCAqZGVtdXggPSBHU1RfVFNfREVNVVggKGJhc2UpOworCisgIC8qIElmIGl0J3Mgb3VyIGN1cnJlbnQgYWN0aXZlIHByb2dyYW0sIHdlIHJldHVybiBGQUxTRSwgd2UnbGwgZGVhY3RpdmF0ZSBpdAorICAgKiBvdXJzZWx2ZXMgd2hlbiB0aGUgbmV4dCBwcm9ncmFtIGdldHMgYWN0aXZhdGVkICovCisgIGlmIChkZW11eC0+cHJvZ3JhbSA9PSBwcm9ncmFtKSB7CisgICAgR1NUX0RFQlVHCisgICAgICAgICgiQXR0ZW1wdGluZyB0byByZW1vdmUgY3VycmVudCBwcm9ncmFtLCBkZWxheWluZyB1bnRpbCBuZXcgcHJvZ3JhbSBnZXRzIGFjdGl2YXRlZCIpOworICAgIGRlbXV4LT5wcmV2aW91c19wcm9ncmFtID0gcHJvZ3JhbTsKKyAgICBkZW11eC0+cHJvZ3JhbV9udW1iZXIgPSAtMTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgcmV0dXJuIFRSVUU7Cit9CisKKwogc3RhdGljIHZvaWQKIGdzdF90c19kZW11eF9wcm9ncmFtX3N0YXJ0ZWQgKE1wZWdUU0Jhc2UgKiBiYXNlLCBNcGVnVFNCYXNlUHJvZ3JhbSAqIHByb2dyYW0pCiB7CkBAIC0xNjA3LDExICsxODA2LDQ1IEBACiAgICAgICBkZW11eC0+c2VnbWVudF9ldmVudCA9IE5VTEw7CiAgICAgfQogCisgICAgLyogRFJBSU4gQUxMIFNUUkVBTVMgRklSU1QgISAqLworICAgIGlmIChkZW11eC0+cHJldmlvdXNfcHJvZ3JhbSkgeworICAgICAgR0xpc3QgKnRtcDsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LCAiRHJhaW5pbmcgcHJldmlvdXMgcHJvZ3JhbSIpOworICAgICAgZm9yICh0bXAgPSBkZW11eC0+cHJldmlvdXNfcHJvZ3JhbS0+c3RyZWFtX2xpc3Q7IHRtcDsgdG1wID0gdG1wLT5uZXh0KSB7CisgICAgICAgIFRTRGVtdXhTdHJlYW0gKnN0cmVhbSA9IChUU0RlbXV4U3RyZWFtICopIHRtcC0+ZGF0YTsKKyAgICAgICAgaWYgKHN0cmVhbS0+cGFkKQorICAgICAgICAgIGdzdF90c19kZW11eF9wdXNoX3BlbmRpbmdfZGF0YSAoZGVtdXgsIHN0cmVhbSk7CisgICAgICB9CisgICAgfQorCiAgICAgLyogQWRkIGFsbCBzdHJlYW1zLCB0aGVuIGZpcmUgbm8tbW9yZS1wYWRzICovCiAgICAgZm9yICh0bXAgPSBwcm9ncmFtLT5zdHJlYW1fbGlzdDsgdG1wOyB0bXAgPSB0bXAtPm5leHQpIHsKICAgICAgIFRTRGVtdXhTdHJlYW0gKnN0cmVhbSA9IChUU0RlbXV4U3RyZWFtICopIHRtcC0+ZGF0YTsKICAgICAgIGFjdGl2YXRlX3BhZF9mb3Jfc3RyZWFtIChkZW11eCwgc3RyZWFtKTsKICAgICB9CisKKyAgICAvKiBJZiB0aGVyZSB3YXMgYSBwcmV2aW91cyBwcm9ncmFtLCBub3cgaXMgdGhlIHRpbWUgdG8gZGVhY3RpdmF0ZSBpdAorICAgICAqIGFuZCByZW1vdmUgb2xkIHBhZHMgKGluY2x1ZGluZyBwdXNoaW5nIEVPUykgKi8KKyAgICBpZiAoZGVtdXgtPnByZXZpb3VzX3Byb2dyYW0pIHsKKyAgICAgIEdTVF9ERUJVRyAoIkRlYWN0aXZhdGluZyBwcmV2aW91cyBwcm9ncmFtIik7CisgICAgICBtcGVndHNfYmFzZV9kZWFjdGl2YXRlX2FuZF9mcmVlX3Byb2dyYW0gKGJhc2UsIGRlbXV4LT5wcmV2aW91c19wcm9ncmFtKTsKKyAgICAgIGRlbXV4LT5wcmV2aW91c19wcm9ncmFtID0gTlVMTDsKKyAgICB9CisgICAgLyogSWYgYW55IG9mIHRoZSBzdHJlYW0gaXMgc3BhcnNlLCBwdXNoIGEgR0FQIGV2ZW50IGJlZm9yZSBhbnl0aGluZyBlbHNlCisgICAgICogVGhpcyBpcyBkb25lIGhlcmUsIGFuZCBub3QgaW4gYWN0aXZhdGVfcGFkX2Zvcl9zdHJlYW0oKSBiZWNhdXNlIHB1c2hpbmcKKyAgICAgKiBhIEdBUCBldmVudCAqaXMqIGNvbnNpZGVyaW5nIGRhdGEsIGFuZCB3ZSB3YW50IHRvIGVuc3VyZSB0aGUgKHBvdGVudGlhbCkKKyAgICAgKiBvbGQgcGFkcyBhcmUgYWxsIHJlbW92ZWQgYmVmb3JlIHdlIHB1c2ggYW55IGRhdGEgb24gdGhlIG5ldyBvbmVzICovCisgICAgZm9yICh0bXAgPSBwcm9ncmFtLT5zdHJlYW1fbGlzdDsgdG1wOyB0bXAgPSB0bXAtPm5leHQpIHsKKyAgICAgIFRTRGVtdXhTdHJlYW0gKnN0cmVhbSA9IChUU0RlbXV4U3RyZWFtICopIHRtcC0+ZGF0YTsKKyAgICAgIGlmIChzdHJlYW0tPnNwYXJzZSkgeworICAgICAgICAvKiBmb3JjZSBzZW5kaW5nIG9mIHBlbmRpbmcgc3RpY2t5IGV2ZW50cyB3aGljaCBoYXZlIGJlZW4gc3RvcmVkIG9uIHRoZQorICAgICAgICAgKiBwYWQgYWxyZWFkeSBhbmQgd2hpY2ggb3RoZXJ3aXNlIHdvdWxkIG9ubHkgYmUgc2VudCBvbiB0aGUgZmlyc3QgYnVmZmVyCisgICAgICAgICAqIG9yIHNlcmlhbGl6ZWQgZXZlbnQgKHdoaWNoIG1lYW5zIHZlcnkgbGF0ZSBpbiBjYXNlIG9mIHN1YnRpdGxlIHN0cmVhbXMpLAorICAgICAgICAgKiBhbmQgcGxheXNpbmsgd2FpdHMgZm9yIHN0cmVhbS1zdGFydCBvciBhbm90aGVyIHNlcmlhbGl6ZWQgZXZlbnQgKi8KKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJzcGFyc2Ugc3RyZWFtLCBwdXNoaW5nIEdBUCBldmVudCIpOworICAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKHN0cmVhbS0+cGFkLCBnc3RfZXZlbnRfbmV3X2dhcCAoMCwgMCkpOworICAgICAgfQorICAgIH0KICAgICBnc3RfZWxlbWVudF9ub19tb3JlX3BhZHMgKChHc3RFbGVtZW50ICopIGRlbXV4KTsKICAgfQogfQpAQCAtMjEzMiwxNCArMjM2NSwxMDYgQEAKICAgfQogfQogCitzdGF0aWMgR3N0QnVmZmVyTGlzdCAqCitwYXJzZV9vcHVzX2FjY2Vzc191bml0IChUU0RlbXV4U3RyZWFtICogc3RyZWFtKQoreworICBHc3RCeXRlUmVhZGVyIHJlYWRlcjsKKyAgR3N0QnVmZmVyTGlzdCAqYnVmZmVyX2xpc3QgPSBOVUxMOworCisgIGJ1ZmZlcl9saXN0ID0gZ3N0X2J1ZmZlcl9saXN0X25ldyAoKTsKKyAgZ3N0X2J5dGVfcmVhZGVyX2luaXQgKCZyZWFkZXIsIHN0cmVhbS0+ZGF0YSwgc3RyZWFtLT5jdXJyZW50X3NpemUpOworCisgIGRvIHsKKyAgICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKyAgICBndWludDE2IGlkOworICAgIGd1aW50IGF1X3NpemUgPSAwOworICAgIGd1aW50OCBiOworICAgIGdib29sZWFuIHN0YXJ0X3RyaW1fZmxhZywgZW5kX3RyaW1fZmxhZywgY29udHJvbF9leHRlbnNpb25fZmxhZzsKKyAgICBndWludDE2IHN0YXJ0X3RyaW0gPSAwLCBlbmRfdHJpbSA9IDA7CisgICAgZ3VpbnQ4ICpwYWNrZXRfZGF0YTsKKyAgICBndWludCBwYWNrZXRfc2l6ZTsKKworICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50MTZfYmUgKCZyZWFkZXIsICZpZCkpCisgICAgICBnb3RvIGVycm9yOworCisgICAgLyogTm8gY29udHJvbCBoZWFkZXIgKi8KKyAgICBpZiAoKGlkID4+IDUpICE9IDB4M2ZmKQorICAgICAgZ290byBlcnJvcjsKKworICAgIGRvIHsKKyAgICAgIGlmICghZ3N0X2J5dGVfcmVhZGVyX2dldF91aW50OCAoJnJlYWRlciwgJmIpKQorICAgICAgICBnb3RvIGVycm9yOworICAgICAgYXVfc2l6ZSArPSBiOworICAgIH0gd2hpbGUgKGIgPT0gMHhmZik7CisKKyAgICBzdGFydF90cmltX2ZsYWcgPSAoaWQgPj4gNCkgJiAweDE7CisgICAgZW5kX3RyaW1fZmxhZyA9IChpZCA+PiAzKSAmIDB4MTsKKyAgICBjb250cm9sX2V4dGVuc2lvbl9mbGFnID0gKGlkID4+IDIpICYgMHgxOworCisgICAgaWYgKHN0YXJ0X3RyaW1fZmxhZykgeworICAgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfZ2V0X3VpbnQxNl9iZSAoJnJlYWRlciwgJnN0YXJ0X3RyaW0pKQorICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChlbmRfdHJpbV9mbGFnKSB7CisgICAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDE2X2JlICgmcmVhZGVyLCAmZW5kX3RyaW0pKQorICAgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIGlmIChjb250cm9sX2V4dGVuc2lvbl9mbGFnKSB7CisgICAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9nZXRfdWludDggKCZyZWFkZXIsICZiKSkKKyAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgaWYgKCFnc3RfYnl0ZV9yZWFkZXJfc2tpcCAoJnJlYWRlciwgYikpCisgICAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorCisgICAgcGFja2V0X3NpemUgPSBhdV9zaXplOworCisgICAgLyogRklYTUU6IHRoaXMgc2hvdWxkIGJlCisgICAgICogICBwYWNrZXRfc2l6ZSA9IGF1X3NpemUgLSBnc3RfYnl0ZV9yZWFkZXJfZ2V0X3BvcyAoJnJlYWRlcik7CisgICAgICogYnV0IGZmbXBlZyBhbmQgdGhlIG9ubHkgYXZhaWxhYmxlIHNhbXBsZSBzdHJlYW0gZnJvbSBvYmUudHYKKyAgICAgKiBhcmUgbm90IGluY2x1ZGluZyB0aGUgY29udHJvbCBoZWFkZXIgc2l6ZSBpbiBhdV9zaXplCisgICAgICovCisgICAgaWYgKGdzdF9ieXRlX3JlYWRlcl9nZXRfcmVtYWluaW5nICgmcmVhZGVyKSA8IHBhY2tldF9zaXplKQorICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoIWdzdF9ieXRlX3JlYWRlcl9kdXBfZGF0YSAoJnJlYWRlciwgcGFja2V0X3NpemUsICZwYWNrZXRfZGF0YSkpCisgICAgICBnb3RvIGVycm9yOworCisgICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZCAocGFja2V0X2RhdGEsIHBhY2tldF9zaXplKTsKKworICAgIGlmIChzdGFydF90cmltICE9IDAgfHwgZW5kX3RyaW0gIT0gMCkgeworICAgICAgZ3N0X2J1ZmZlcl9hZGRfYXVkaW9fY2xpcHBpbmdfbWV0YSAoYnVmZmVyLCBHU1RfRk9STUFUX0RFRkFVTFQsCisgICAgICAgICAgc3RhcnRfdHJpbSwgZW5kX3RyaW0pOworICAgIH0KKworICAgIGdzdF9idWZmZXJfbGlzdF9hZGQgKGJ1ZmZlcl9saXN0LCBidWZmZXIpOworICB9IHdoaWxlIChnc3RfYnl0ZV9yZWFkZXJfZ2V0X3JlbWFpbmluZyAoJnJlYWRlcikgPiAwKTsKKworICBnX2ZyZWUgKHN0cmVhbS0+ZGF0YSk7CisgIHN0cmVhbS0+ZGF0YSA9IE5VTEw7CisgIHN0cmVhbS0+Y3VycmVudF9zaXplID0gMDsKKworICByZXR1cm4gYnVmZmVyX2xpc3Q7CisKK2Vycm9yOgorICB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIHBhcnNlIE9wdXMgYWNjZXNzIHVuaXQiKTsKKyAgICBnX2ZyZWUgKHN0cmVhbS0+ZGF0YSk7CisgICAgc3RyZWFtLT5kYXRhID0gTlVMTDsKKyAgICBzdHJlYW0tPmN1cnJlbnRfc2l6ZSA9IDA7CisgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmIChidWZmZXJfbGlzdCk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKwogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF90c19kZW11eF9wdXNoX3BlbmRpbmdfZGF0YSAoR3N0VFNEZW11eCAqIGRlbXV4LCBUU0RlbXV4U3RyZWFtICogc3RyZWFtKQogewogICBHc3RGbG93UmV0dXJuIHJlcyA9IEdTVF9GTE9XX09LOwotI2lmbmRlZiBHU1RfRElTQUJMRV9HU1RfREVCVUcKICAgTXBlZ1RTQmFzZVN0cmVhbSAqYnMgPSAoTXBlZ1RTQmFzZVN0cmVhbSAqKSBzdHJlYW07Ci0jZW5kaWYKICAgR3N0QnVmZmVyICpidWZmZXIgPSBOVUxMOworICBHc3RCdWZmZXJMaXN0ICpidWZmZXJfbGlzdCA9IE5VTEw7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsCiAgICAgICAic3RyZWFtOiVwLCBwaWQ6MHglMDR4IHN0cmVhbV90eXBlOiVkIHN0YXRlOiVkIiwgc3RyZWFtLCBicy0+cGlkLApAQCAtMjE3NCw3ICsyNDk5LDI0IEBACiAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwKICAgICAgICAgICAiR290IEtleWZyYW1lLCByZWFkeSB0byBnbyBhdCAlIiBHU1RfVElNRV9GT1JNQVQsCiAgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoc3RyZWFtLT5wdHMpKTsKLSAgICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKHN0cmVhbS0+ZGF0YSwgc3RyZWFtLT5jdXJyZW50X3NpemUpOworCisgICAgICBpZiAoYnMtPnN0cmVhbV90eXBlID09IEdTVF9NUEVHVFNfU1RSRUFNX1RZUEVfUFJJVkFURV9QRVNfUEFDS0VUUyAmJgorICAgICAgICAgIGJzLT5yZWdpc3RyYXRpb25faWQgPT0gRFJGX0lEX09QVVMpIHsKKyAgICAgICAgYnVmZmVyX2xpc3QgPSBwYXJzZV9vcHVzX2FjY2Vzc191bml0IChzdHJlYW0pOworICAgICAgICBpZiAoIWJ1ZmZlcl9saXN0KSB7CisgICAgICAgICAgcmVzID0gR1NUX0ZMT1dfRVJST1I7CisgICAgICAgICAgZ290byBiZWFjaDsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChnc3RfYnVmZmVyX2xpc3RfbGVuZ3RoIChidWZmZXJfbGlzdCkgPT0gMSkgeworICAgICAgICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfcmVmIChnc3RfYnVmZmVyX2xpc3RfZ2V0IChidWZmZXJfbGlzdCwgMCkpOworICAgICAgICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZiAoYnVmZmVyX2xpc3QpOworICAgICAgICAgIGJ1ZmZlcl9saXN0ID0gTlVMTDsKKyAgICAgICAgfQorICAgICAgfSBlbHNlIHsKKyAgICAgICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZCAoc3RyZWFtLT5kYXRhLCBzdHJlYW0tPmN1cnJlbnRfc2l6ZSk7CisgICAgICB9CisKICAgICAgIHN0cmVhbS0+c2Vla2VkX3B0cyA9IHN0cmVhbS0+cHRzOwogICAgICAgc3RyZWFtLT5zZWVrZWRfZHRzID0gc3RyZWFtLT5kdHM7CiAgICAgICBzdHJlYW0tPm5lZWRzX2tleWZyYW1lID0gRkFMU0U7CkBAIC0yMTkyLDE1ICsyNTM0LDQ1IEBACiAgICAgICBnb3RvIGJlYWNoOwogICAgIH0KICAgfSBlbHNlIHsKLSAgICBidWZmZXIgPSBnc3RfYnVmZmVyX25ld193cmFwcGVkIChzdHJlYW0tPmRhdGEsIHN0cmVhbS0+Y3VycmVudF9zaXplKTsKKyAgICBpZiAoYnMtPnN0cmVhbV90eXBlID09IEdTVF9NUEVHVFNfU1RSRUFNX1RZUEVfUFJJVkFURV9QRVNfUEFDS0VUUyAmJgorICAgICAgICBicy0+cmVnaXN0cmF0aW9uX2lkID09IERSRl9JRF9PUFVTKSB7CisgICAgICBidWZmZXJfbGlzdCA9IHBhcnNlX29wdXNfYWNjZXNzX3VuaXQgKHN0cmVhbSk7CisgICAgICBpZiAoIWJ1ZmZlcl9saXN0KSB7CisgICAgICAgIHJlcyA9IEdTVF9GTE9XX0VSUk9SOworICAgICAgICBnb3RvIGJlYWNoOworICAgICAgfQorCisgICAgICBpZiAoZ3N0X2J1ZmZlcl9saXN0X2xlbmd0aCAoYnVmZmVyX2xpc3QpID09IDEpIHsKKyAgICAgICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9yZWYgKGdzdF9idWZmZXJfbGlzdF9nZXQgKGJ1ZmZlcl9saXN0LCAwKSk7CisgICAgICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZiAoYnVmZmVyX2xpc3QpOworICAgICAgICBidWZmZXJfbGlzdCA9IE5VTEw7CisgICAgICB9CisgICAgfSBlbHNlIHsKKyAgICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKHN0cmVhbS0+ZGF0YSwgc3RyZWFtLT5jdXJyZW50X3NpemUpOworICAgIH0KIAogICAgIGlmIChHX1VOTElLRUxZIChzdHJlYW0tPnBlbmRpbmdfdHMgJiYgIWNoZWNrX3BlbmRpbmdfYnVmZmVycyAoZGVtdXgpKSkgewotICAgICAgUGVuZGluZ0J1ZmZlciAqcGVuZDsKLSAgICAgIHBlbmQgPSBnX3NsaWNlX25ldzAgKFBlbmRpbmdCdWZmZXIpOwotICAgICAgcGVuZC0+YnVmZmVyID0gYnVmZmVyOwotICAgICAgcGVuZC0+cHRzID0gc3RyZWFtLT5yYXdfcHRzOwotICAgICAgcGVuZC0+ZHRzID0gc3RyZWFtLT5yYXdfZHRzOwotICAgICAgc3RyZWFtLT5wZW5kaW5nID0gZ19saXN0X2FwcGVuZCAoc3RyZWFtLT5wZW5kaW5nLCBwZW5kKTsKKyAgICAgIGlmIChidWZmZXIpIHsKKyAgICAgICAgUGVuZGluZ0J1ZmZlciAqcGVuZDsKKyAgICAgICAgcGVuZCA9IGdfc2xpY2VfbmV3MCAoUGVuZGluZ0J1ZmZlcik7CisgICAgICAgIHBlbmQtPmJ1ZmZlciA9IGJ1ZmZlcjsKKyAgICAgICAgcGVuZC0+cHRzID0gc3RyZWFtLT5yYXdfcHRzOworICAgICAgICBwZW5kLT5kdHMgPSBzdHJlYW0tPnJhd19kdHM7CisgICAgICAgIHN0cmVhbS0+cGVuZGluZyA9IGdfbGlzdF9hcHBlbmQgKHN0cmVhbS0+cGVuZGluZywgcGVuZCk7CisgICAgICB9IGVsc2UgeworICAgICAgICBndWludCBpLCBuOworCisgICAgICAgIG4gPSBnc3RfYnVmZmVyX2xpc3RfbGVuZ3RoIChidWZmZXJfbGlzdCk7CisgICAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgICBQZW5kaW5nQnVmZmVyICpwZW5kOworICAgICAgICAgIHBlbmQgPSBnX3NsaWNlX25ldzAgKFBlbmRpbmdCdWZmZXIpOworICAgICAgICAgIHBlbmQtPmJ1ZmZlciA9IGdzdF9idWZmZXJfcmVmIChnc3RfYnVmZmVyX2xpc3RfZ2V0IChidWZmZXJfbGlzdCwgaSkpOworICAgICAgICAgIHBlbmQtPnB0cyA9IGkgPT0gMCA/IHN0cmVhbS0+cmF3X3B0cyA6IC0xOworICAgICAgICAgIHBlbmQtPmR0cyA9IGkgPT0gMCA/IHN0cmVhbS0+cmF3X2R0cyA6IC0xOworICAgICAgICAgIHN0cmVhbS0+cGVuZGluZyA9IGdfbGlzdF9hcHBlbmQgKHN0cmVhbS0+cGVuZGluZywgcGVuZCk7CisgICAgICAgIH0KKyAgICAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmIChidWZmZXJfbGlzdCk7CisgICAgICB9CiAgICAgICBHU1RfREVCVUcgKCJOb3QgZW5vdWdoIGluZm9ybWF0aW9uIHRvIHB1c2ggYnVmZmVycyB5ZXQsIHN0b3JpbmcgYnVmZmVyIik7CiAgICAgICBnb3RvIGJlYWNoOwogICAgIH0KQEAgLTIyNDIsMzQgKzI2MTQsNTIgQEAKICAgICAgICAgIihzZWVrZWQgUFRTOiAlIiBHU1RfVElNRV9GT1JNQVQgIiBEVFM6ICUiIEdTVF9USU1FX0ZPUk1BVCAiKSIsCiAgICAgICAgIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+cHRzKSwgR1NUX1RJTUVfQVJHUyAoc3RyZWFtLT5kdHMpLAogICAgICAgICBHU1RfVElNRV9BUkdTIChzdHJlYW0tPnNlZWtlZF9wdHMpLCBHU1RfVElNRV9BUkdTIChzdHJlYW0tPnNlZWtlZF9kdHMpKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOworICAgIGlmIChidWZmZXIpCisgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOworICAgIGlmIChidWZmZXJfbGlzdCkKKyAgICAgIGdzdF9idWZmZXJfbGlzdF91bnJlZiAoYnVmZmVyX2xpc3QpOwogICAgIGdvdG8gYmVhY2g7CiAgIH0KIAogICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgInN0cmVhbS0+cHRzICUiIEdTVF9USU1FX0ZPUk1BVCwKICAgICAgIEdTVF9USU1FX0FSR1MgKHN0cmVhbS0+cHRzKSk7CisKKyAgLyogRGVjb3JhdGUgYnVmZmVyIG9yIGZpcnN0IGJ1ZmZlciBvZiB0aGUgYnVmZmVyIGxpc3QgKi8KKyAgaWYgKGJ1ZmZlcl9saXN0KQorICAgIGJ1ZmZlciA9IGdzdF9idWZmZXJfbGlzdF9nZXQgKGJ1ZmZlcl9saXN0LCAwKTsKKwogICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHN0cmVhbS0+cHRzKSkKICAgICBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKSA9IHN0cmVhbS0+cHRzOwogICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHN0cmVhbS0+ZHRzKSkKICAgICBHU1RfQlVGRkVSX0RUUyAoYnVmZmVyKSA9IHN0cmVhbS0+ZHRzOwogCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHN0cmVhbS0+cGFkLAotICAgICAgIlB1c2hpbmcgYnVmZmVyIHdpdGggUFRTOiAlIiBHU1RfVElNRV9GT1JNQVQgIiAsIERUUzogJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikpLAotICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcikpKTsKLQogICBpZiAoc3RyZWFtLT5kaXNjb250KQogICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwogICBzdHJlYW0tPmRpc2NvbnQgPSBGQUxTRTsKIAotICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKEdTVF9CVUZGRVJfRFRTIChidWZmZXIpKSkKLSAgICBkZW11eC0+c2VnbWVudC5wb3NpdGlvbiA9IEdTVF9CVUZGRVJfRFRTIChidWZmZXIpOwotICBlbHNlIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikpKQotICAgIGRlbXV4LT5zZWdtZW50LnBvc2l0aW9uID0gR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcik7CisgIGlmIChidWZmZXJfbGlzdCkKKyAgICBidWZmZXIgPSBOVUxMOwogCi0gIHJlcyA9IGdzdF9wYWRfcHVzaCAoc3RyZWFtLT5wYWQsIGJ1ZmZlcik7Ci0gIC8qIFJlY29yZCB0aGF0IGEgYnVmZmVyIHdhcyBwdXNoZWQgKi8KLSAgc3RyZWFtLT5uYl9vdXRfYnVmZmVycyArPSAxOworICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwKKyAgICAgICJQdXNoaW5nIGJ1ZmZlciVzIHdpdGggUFRTOiAlIiBHU1RfVElNRV9GT1JNQVQgIiAsIERUUzogJSIKKyAgICAgIEdTVF9USU1FX0ZPUk1BVCwgKGJ1ZmZlcl9saXN0ID8gImxpc3QiIDogIiIpLCBHU1RfVElNRV9BUkdTIChzdHJlYW0tPnB0cyksCisgICAgICBHU1RfVElNRV9BUkdTIChzdHJlYW0tPmR0cykpOworCisgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoc3RyZWFtLT5kdHMpKQorICAgIGRlbXV4LT5zZWdtZW50LnBvc2l0aW9uID0gc3RyZWFtLT5kdHM7CisgIGVsc2UgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChzdHJlYW0tPnB0cykpCisgICAgZGVtdXgtPnNlZ21lbnQucG9zaXRpb24gPSBzdHJlYW0tPnB0czsKKworICBpZiAoYnVmZmVyKSB7CisgICAgcmVzID0gZ3N0X3BhZF9wdXNoIChzdHJlYW0tPnBhZCwgYnVmZmVyKTsKKyAgICAvKiBSZWNvcmQgdGhhdCBhIGJ1ZmZlciB3YXMgcHVzaGVkICovCisgICAgc3RyZWFtLT5uYl9vdXRfYnVmZmVycyArPSAxOworICB9IGVsc2UgeworICAgIGd1aW50IG4gPSBnc3RfYnVmZmVyX2xpc3RfbGVuZ3RoIChidWZmZXJfbGlzdCk7CisgICAgcmVzID0gZ3N0X3BhZF9wdXNoX2xpc3QgKHN0cmVhbS0+cGFkLCBidWZmZXJfbGlzdCk7CisgICAgLyogUmVjb3JkIHRoYXQgYSBidWZmZXIgd2FzIHB1c2hlZCAqLworICAgIHN0cmVhbS0+bmJfb3V0X2J1ZmZlcnMgKz0gbjsKKyAgfQogICBHU1RfREVCVUdfT0JKRUNUIChzdHJlYW0tPnBhZCwgIlJldHVybmVkICVzIiwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJlcykpOwogICByZXMgPSBnc3RfZmxvd19jb21iaW5lcl91cGRhdGVfZmxvdyAoZGVtdXgtPmZsb3djb21iaW5lciwgcmVzKTsKICAgR1NUX0RFQlVHX09CSkVDVCAoc3RyZWFtLT5wYWQsICJjb21iaW5lZCAlcyIsIGdzdF9mbG93X2dldF9uYW1lIChyZXMpKTsKZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNkZW11eC90c2RlbXV4LmggYi9nc3QvbXBlZ3RzZGVtdXgvdHNkZW11eC5oCmluZGV4IGI2ODk0MTIuLmI0MTY3MzMgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNkZW11eC90c2RlbXV4LmgKKysrIGIvZ3N0L21wZWd0c2RlbXV4L3RzZGVtdXguaApAQCAtNjUsNiArNjUsOCBAQAogCiAgIC8qPCBwcml2YXRlID4qLwogICBNcGVnVFNCYXNlUHJvZ3JhbSAqcHJvZ3JhbTsJLyogQ3VycmVudCBwcm9ncmFtICovCisgIE1wZWdUU0Jhc2VQcm9ncmFtICpwcmV2aW91c19wcm9ncmFtOyAvKiBQcmV2aW91cyBwcm9ncmFtLCB0byBkZWFjdGl2YXRlIG9uY2UKKwkJCQkJKiB0aGUgbmV3IHByb2dyYW0gYmVjb21lcyBhY3RpdmUgKi8KIAogICAvKiBzZWdtZW50cyB0byBiZSBzZW50ICovCiAgIEdzdFNlZ21lbnQgc2VnbWVudDsKZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNtdXgvTWFrZWZpbGUuYW0gYi9nc3QvbXBlZ3RzbXV4L01ha2VmaWxlLmFtCmluZGV4IDhlM2NkYmEuLjBmYTc4ZDcgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNtdXgvTWFrZWZpbGUuYW0KKysrIGIvZ3N0L21wZWd0c211eC9NYWtlZmlsZS5hbQpAQCAtNSwxNyArNSwyMSBAQAogbGliZ3N0bXBlZ3RzbXV4X2xhX1NPVVJDRVMgPSBcCiAJbXBlZ3RzbXV4LmMgXAogCW1wZWd0c211eF9hYWMuYyBcCi0JbXBlZ3RzbXV4X3R0eHQuYworCW1wZWd0c211eF90dHh0LmMgXAorCW1wZWd0c211eF9vcHVzLmMKIAogbGliZ3N0bXBlZ3RzbXV4X2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCQkJICAgICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCiBsaWJnc3RtcGVndHNtdXhfbGFfTElCQUREID0gJCh0b3BfYnVpbGRkaXIpL2dzdC9tcGVndHNtdXgvdHNtdXgvbGlidHNtdXgubGEgXAotCS1sZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQCAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgXAorCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgLWxnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAgXAorCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCisJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQogbGliZ3N0bXBlZ3RzbXV4X2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdG1wZWd0c211eF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogCiBub2luc3RfSEVBREVSUyA9IFwKIAltcGVndHNtdXguaCBcCiAJbXBlZ3RzbXV4X2FhYy5oIFwKLQltcGVndHNtdXhfdHR4dC5oCisJbXBlZ3RzbXV4X3R0eHQuaCBcCisJbXBlZ3RzbXV4X29wdXMuaApkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC9NYWtlZmlsZS5pbiBiL2dzdC9tcGVndHNtdXgvTWFrZWZpbGUuaW4KaW5kZXggNDdmNWRkYy4uODRmZTk0MiAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c211eC9NYWtlZmlsZS5pbgorKysgYi9nc3QvbXBlZ3RzbXV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE3MCw3ICsxNjksOCBAQAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0bXBlZ3RzbXV4X2xhX09CSkVDVFMgPSBsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4LmxvIFwKIAlsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X2FhYy5sbyBcCi0JbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF90dHh0LmxvCisJbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF90dHh0LmxvIFwKKwlsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMubG8KIGxpYmdzdG1wZWd0c211eF9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RtcGVndHNtdXhfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCkBAIC0zMjAsNiArMzIwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zNTcsNiArMzU5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zNjUsNyArMzY5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzg0LDggKzM4Nyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC00MDIsMTYgKzQwNiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MzcsNiArNDQyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDYyLDYgKzQ2OSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU2Myw2ICs1NzIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTc2LDggKzU4Niw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU5Myw2ICs2MDEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjUwLDE2ICs2NjAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC03MTEsNiArNzIzLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTcyMSw2ICs3MzQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MzAsNiArNzQ0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc2Nyw3ICs3ODMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTgxMiwyMSArODI3LDI1IEBACiBsaWJnc3RtcGVndHNtdXhfbGFfU09VUkNFUyA9IFwKIAltcGVndHNtdXguYyBcCiAJbXBlZ3RzbXV4X2FhYy5jIFwKLQltcGVndHNtdXhfdHR4dC5jCisJbXBlZ3RzbXV4X3R0eHQuYyBcCisJbXBlZ3RzbXV4X29wdXMuYwogCiBsaWJnc3RtcGVndHNtdXhfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJCQkgICAgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykKIAogbGliZ3N0bXBlZ3RzbXV4X2xhX0xJQkFERCA9ICQodG9wX2J1aWxkZGlyKS9nc3QvbXBlZ3RzbXV4L3RzbXV4L2xpYnRzbXV4LmxhIFwKLQktbGdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIC1sZ3N0dGFnLUBHU1RfQVBJX1ZFUlNJT05AIFwKKwktbGdzdHBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAgXAorCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKIAogbGliZ3N0bXBlZ3RzbXV4X2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdG1wZWd0c211eF9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogbm9pbnN0X0hFQURFUlMgPSBcCiAJbXBlZ3RzbXV4LmggXAogCW1wZWd0c211eF9hYWMuaCBcCi0JbXBlZ3RzbXV4X3R0eHQuaAorCW1wZWd0c211eF90dHh0LmggXAorCW1wZWd0c211eF9vcHVzLmgKIAogYWxsOiBhbGwtcmVjdXJzaXZlCiAKQEAgLTkwOCw2ICs5MjcsNyBAQAogCiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eC5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXhfYWFjLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9vcHVzLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF90dHh0LlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CkBAIC05NTUsNiArOTc1LDEzIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bXBlZ3RzbXV4X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG1wZWd0c211eF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X3R0eHQubG8gYHRlc3QgLWYgJ21wZWd0c211eF90dHh0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1wZWd0c211eF90dHh0LmMKIAorbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9vcHVzLmxvOiBtcGVndHNtdXhfb3B1cy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bXBlZ3RzbXV4X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG1wZWd0c211eF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9vcHVzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMuVHBvIC1jIC1vIGxpYmdzdG1wZWd0c211eF9sYS1tcGVndHNtdXhfb3B1cy5sbyBgdGVzdCAtZiAnbXBlZ3RzbXV4X29wdXMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbXBlZ3RzbXV4X29wdXMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9vcHVzLlRwbyAkKERFUERJUikvbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9vcHVzLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J21wZWd0c211eF9vcHVzLmMnIG9iamVjdD0nbGliZ3N0bXBlZ3RzbXV4X2xhLW1wZWd0c211eF9vcHVzLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bXBlZ3RzbXV4X2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG1wZWd0c211eF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RtcGVndHNtdXhfbGEtbXBlZ3RzbXV4X29wdXMubG8gYHRlc3QgLWYgJ21wZWd0c211eF9vcHVzLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1wZWd0c211eF9vcHVzLmMKKwogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwogCmRpZmYgLS1naXQgYS9nc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jIGIvZ3N0L21wZWd0c211eC9tcGVndHNtdXguYwppbmRleCBjZTAwMzMzLi5jZDA3MzM4IDEwMDY0NAotLS0gYS9nc3QvbXBlZ3RzbXV4L21wZWd0c211eC5jCisrKyBiL2dzdC9tcGVndHNtdXgvbXBlZ3RzbXV4LmMKQEAgLTkxLDExICs5MSwxMyBAQAogI2luY2x1ZGUgPGdzdC90YWcvdGFnLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8Z3N0L21wZWd0cy9tcGVndHMuaD4KKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+CiAKICNpbmNsdWRlICJtcGVndHNtdXguaCIKIAogI2luY2x1ZGUgIm1wZWd0c211eF9hYWMuaCIKICNpbmNsdWRlICJtcGVndHNtdXhfdHR4dC5oIgorI2luY2x1ZGUgIm1wZWd0c211eF9vcHVzLmgiCiAKIEdTVF9ERUJVR19DQVRFR09SWSAobXBlZ3RzbXV4X2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIG1wZWd0c211eF9kZWJ1ZwpAQCAtMTI1LDYgKzEyNyw4IEBACiAgICAgICAgICJ2aWRlby94LWRpcmFjOyIKICAgICAgICAgInZpZGVvL3gtaDI2NCxzdHJlYW0tZm9ybWF0PShzdHJpbmcpYnl0ZS1zdHJlYW0sIgogICAgICAgICAiYWxpZ25tZW50PShzdHJpbmcpe2F1LCBuYWx9OyAiCisgICAgICAgICJ2aWRlby94LWgyNjUsc3RyZWFtLWZvcm1hdD0oc3RyaW5nKWJ5dGUtc3RyZWFtLCIKKyAgICAgICAgImFsaWdubWVudD0oc3RyaW5nKXthdSwgbmFsfTsgIgogICAgICAgICAiYXVkaW8vbXBlZywgIgogICAgICAgICAicGFyc2VkID0gKGJvb2xlYW4pIFRSVUUsICIKICAgICAgICAgIm1wZWd2ZXJzaW9uID0gKGludCkgeyAxLCAyIH07IgpAQCAtMTQyLDYgKzE0Niw5IEBACiAgICAgICAgICJtdXRlID0gKGJvb2xlYW4pIHsgRkFMU0UsIFRSVUUgfTsgIgogICAgICAgICAiYXVkaW8veC1hYzMsIGZyYW1lZCA9IChib29sZWFuKSBUUlVFOyIKICAgICAgICAgImF1ZGlvL3gtZHRzLCBmcmFtZWQgPSAoYm9vbGVhbikgVFJVRTsiCisgICAgICAgICJhdWRpby94LW9wdXMsICIKKyAgICAgICAgImNoYW5uZWxzID0gKGludCkgWzEsIDhdLCAiCisgICAgICAgICJjaGFubmVsLW1hcHBpbmctZmFtaWx5ID0gKGludCkgezAsIDF9OyIKICAgICAgICAgInN1YnBpY3R1cmUveC1kdmI7IGFwcGxpY2F0aW9uL3gtdGVsZXRleHQ7IG1ldGEveC1rbHYsIHBhcnNlZD10cnVlIikpOwogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgbXBlZ3RzbXV4X3NyY19mYWN0b3J5ID0KQEAgLTU4MCw2ICs1ODcsNyBAQAogICBjb25zdCBnY2hhciAqbXQ7CiAgIGNvbnN0IEdWYWx1ZSAqdmFsdWUgPSBOVUxMOwogICBHc3RCdWZmZXIgKmNvZGVjX2RhdGEgPSBOVUxMOworICBndWludDggb3B1c19jaGFubmVsX2NvbmZpZ19jb2RlID0gMDsKIAogICBwYWQgPSB0c19kYXRhLT5jb2xsZWN0LnBhZDsKICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAocGFkKTsKQEAgLTYwNiw2ICs2MTQsOCBAQAogICAgIHN0ID0gVFNNVVhfU1RfUFNfQVVESU9fTFBDTTsKICAgfSBlbHNlIGlmIChzdHJjbXAgKG10LCAidmlkZW8veC1oMjY0IikgPT0gMCkgewogICAgIHN0ID0gVFNNVVhfU1RfVklERU9fSDI2NDsKKyAgfSBlbHNlIGlmIChzdHJjbXAgKG10LCAidmlkZW8veC1oMjY1IikgPT0gMCkgeworICAgIHN0ID0gVFNNVVhfU1RfVklERU9fSEVWQzsKICAgfSBlbHNlIGlmIChzdHJjbXAgKG10LCAiYXVkaW8vbXBlZyIpID09IDApIHsKICAgICBnaW50IG1wZWd2ZXJzaW9uOwogCkBAIC02NjcsNiArNjc3LDY2IEBACiAgICAgc3QgPSBUU01VWF9TVF9QU19URUxFVEVYVDsKICAgICAvKiBuZWVkcyBhIHBhcnRpY3VsYXJseSBzaXplZCBsYXlvdXQgKi8KICAgICB0c19kYXRhLT5wcmVwYXJlX2Z1bmMgPSBtcGVndHNtdXhfcHJlcGFyZV90ZWxldGV4dDsKKyAgfSBlbHNlIGlmIChzdHJjbXAgKG10LCAiYXVkaW8veC1vcHVzIikgPT0gMCkgeworICAgIGd1aW50OCBjaGFubmVscywgbWFwcGluZ19mYW1pbHksIHN0cmVhbV9jb3VudCwgY291cGxlZF9jb3VudDsKKyAgICBndWludDggY2hhbm5lbF9tYXBwaW5nWzI1Nl07CisKKyAgICBpZiAoIWdzdF9jb2RlY191dGlsc19vcHVzX3BhcnNlX2NhcHMgKGNhcHMsIE5VTEwsICZjaGFubmVscywKKyAgICAgICAgICAgICZtYXBwaW5nX2ZhbWlseSwgJnN0cmVhbV9jb3VudCwgJmNvdXBsZWRfY291bnQsIGNoYW5uZWxfbWFwcGluZykpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHBhZCwgIkluY29tcGxldGUgT3B1cyBjYXBzIik7CisgICAgICBnb3RvIG5vdF9uZWdvdGlhdGVkOworICAgIH0KKworICAgIGlmIChjaGFubmVscyA8PSAyICYmIG1hcHBpbmdfZmFtaWx5ID09IDApIHsKKyAgICAgIG9wdXNfY2hhbm5lbF9jb25maWdfY29kZSA9IGNoYW5uZWxzOworICAgIH0gZWxzZSBpZiAoY2hhbm5lbHMgPT0gMiAmJiBtYXBwaW5nX2ZhbWlseSA9PSAyNTUgJiYgc3RyZWFtX2NvdW50ID09IDEKKyAgICAgICAgJiYgY291cGxlZF9jb3VudCA9PSAxKSB7CisgICAgICAvKiBEdWFsIG1vbm8gKi8KKyAgICAgIG9wdXNfY2hhbm5lbF9jb25maWdfY29kZSA9IDA7CisgICAgfSBlbHNlIGlmIChjaGFubmVscyA+PSAyICYmIGNoYW5uZWxzIDw9IDggJiYgbWFwcGluZ19mYW1pbHkgPT0gMSkgeworICAgICAgc3RhdGljIGNvbnN0IGd1aW50OCBjb3VwbGVkX3N0cmVhbV9jb3VudHNbOV0gPSB7CisgICAgICAgIDEsIDAsIDEsIDEsIDIsIDIsIDIsIDMsIDMKKyAgICAgIH07CisgICAgICBzdGF0aWMgY29uc3QgZ3VpbnQ4IGNoYW5uZWxfbWFwX2FbOF1bOF0gPSB7CisgICAgICAgIHswfSwKKyAgICAgICAgezAsIDF9LAorICAgICAgICB7MCwgMiwgMX0sCisgICAgICAgIHswLCAxLCAyLCAzfSwKKyAgICAgICAgezAsIDQsIDEsIDIsIDN9LAorICAgICAgICB7MCwgNCwgMSwgMiwgMywgNX0sCisgICAgICAgIHswLCA0LCAxLCAyLCAzLCA1LCA2fSwKKyAgICAgICAgezAsIDYsIDEsIDIsIDMsIDQsIDUsIDd9LAorICAgICAgfTsKKyAgICAgIHN0YXRpYyBjb25zdCBndWludDggY2hhbm5lbF9tYXBfYls4XVs4XSA9IHsKKyAgICAgICAgezB9LAorICAgICAgICB7MCwgMX0sCisgICAgICAgIHswLCAxLCAyfSwKKyAgICAgICAgezAsIDEsIDIsIDN9LAorICAgICAgICB7MCwgMSwgMiwgMywgNH0sCisgICAgICAgIHswLCAxLCAyLCAzLCA0LCA1fSwKKyAgICAgICAgezAsIDEsIDIsIDMsIDQsIDUsIDZ9LAorICAgICAgICB7MCwgMSwgMiwgMywgNCwgNSwgNiwgN30sCisgICAgICB9OworCisgICAgICAvKiBWb3JiaXMgbWFwcGluZyAqLworICAgICAgaWYgKHN0cmVhbV9jb3VudCA9PSBjaGFubmVscyAtIGNvdXBsZWRfc3RyZWFtX2NvdW50c1tjaGFubmVsc10gJiYKKyAgICAgICAgICBjb3VwbGVkX2NvdW50ID09IGNvdXBsZWRfc3RyZWFtX2NvdW50c1tjaGFubmVsc10gJiYKKyAgICAgICAgICBtZW1jbXAgKGNoYW5uZWxfbWFwcGluZywgY2hhbm5lbF9tYXBfYVtjaGFubmVscyAtIDFdLAorICAgICAgICAgICAgICBjaGFubmVscykgPT0gMCkgeworICAgICAgICBvcHVzX2NoYW5uZWxfY29uZmlnX2NvZGUgPSBjaGFubmVsczsKKyAgICAgIH0gZWxzZSBpZiAoc3RyZWFtX2NvdW50ID09IGNoYW5uZWxzIC0gY291cGxlZF9zdHJlYW1fY291bnRzW2NoYW5uZWxzXSAmJgorICAgICAgICAgIGNvdXBsZWRfY291bnQgPT0gY291cGxlZF9zdHJlYW1fY291bnRzW2NoYW5uZWxzXSAmJgorICAgICAgICAgIG1lbWNtcCAoY2hhbm5lbF9tYXBwaW5nLCBjaGFubmVsX21hcF9iW2NoYW5uZWxzIC0gMV0sCisgICAgICAgICAgICAgIGNoYW5uZWxzKSA9PSAwKSB7CisgICAgICAgIG9wdXNfY2hhbm5lbF9jb25maWdfY29kZSA9IGNoYW5uZWxzIHwgMHg4MDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdTVF9GSVhNRV9PQkpFQ1QgKHBhZCwgIk9wdXMgY2hhbm5lbCBtYXBwaW5nIG5vdCBoYW5kbGVkIik7CisgICAgICAgIGdvdG8gbm90X25lZ290aWF0ZWQ7CisgICAgICB9CisgICAgfQorCisgICAgc3QgPSBUU01VWF9TVF9QU19PUFVTOworICAgIHRzX2RhdGEtPnByZXBhcmVfZnVuYyA9IG1wZWd0c211eF9wcmVwYXJlX29wdXM7CiAgIH0gZWxzZSBpZiAoc3RyY21wIChtdCwgIm1ldGEveC1rbHYiKSA9PSAwKSB7CiAgICAgc3QgPSBUU01VWF9TVF9QU19LTFY7CiAgIH0KQEAgLTY4Myw2ICs3NTMsOCBAQAogICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImNoYW5uZWxzIiwgJnRzX2RhdGEtPnN0cmVhbS0+YXVkaW9fY2hhbm5lbHMpOwogICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAocywgImJpdHJhdGUiLCAmdHNfZGF0YS0+c3RyZWFtLT5hdWRpb19iaXRyYXRlKTsKIAorICAgIHRzX2RhdGEtPnN0cmVhbS0+b3B1c19jaGFubmVsX2NvbmZpZ19jb2RlID0gb3B1c19jaGFubmVsX2NvbmZpZ19jb2RlOworCiAgICAgdHNtdXhfc3RyZWFtX3NldF9idWZmZXJfcmVsZWFzZV9mdW5jICh0c19kYXRhLT5zdHJlYW0sIHJlbGVhc2VfYnVmZmVyX2NiKTsKICAgICB0c211eF9wcm9ncmFtX2FkZF9zdHJlYW0gKHRzX2RhdGEtPnByb2csIHRzX2RhdGEtPnN0cmVhbSk7CiAKQEAgLTEwOTcsMTUgKzExNjksNiBAQAogICAgIHBhZF9kYXRhLT5kdHMgPSBHU1RfQ0xPQ0tfU1RJTUVfTk9ORTsKICAgfQogCi0gIGJ1ZiA9ICpvdXRidWY7Ci0gIGlmIChwYWRfZGF0YS0+cHJlcGFyZV9mdW5jKSB7Ci0gICAgTXBlZ1RzTXV4ICptdXggPSAoTXBlZ1RzTXV4ICopIHVzZXJfZGF0YTsKLQotICAgICpvdXRidWYgPSBwYWRfZGF0YS0+cHJlcGFyZV9mdW5jIChidWYsIHBhZF9kYXRhLCBtdXgpOwotICAgIGdfYXNzZXJ0ICgqb3V0YnVmKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotICB9Ci0KIGJlYWNoOgogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CkBAIC0xMTI2LDggKzExODksMTEgQEAKIAogICBpZiAoR19VTkxJS0VMWSAobXV4LT5maXJzdCkpIHsKICAgICByZXQgPSBtcGVndHNtdXhfY3JlYXRlX3N0cmVhbXMgKG11eCk7Ci0gICAgaWYgKEdfVU5MSUtFTFkgKHJldCAhPSBHU1RfRkxPV19PSykpCisgICAgaWYgKEdfVU5MSUtFTFkgKHJldCAhPSBHU1RfRkxPV19PSykpIHsKKyAgICAgIGlmIChidWYpCisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAgICAgICByZXR1cm4gcmV0OworICAgIH0KIAogICAgIG1wZWd0c211eF9wcmVwYXJlX3NyY3BhZCAobXV4KTsKIApAQCAtMTE0Miw2ICsxMjA4LDkgQEAKICAgICBtcGVndHNtdXhfcHVzaF9wYWNrZXRzIChtdXgsIFRSVUUpOwogICAgIGdzdF9wYWRfcHVzaF9ldmVudCAobXV4LT5zcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKIAorICAgIGlmIChidWYpCisgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworCiAgICAgcmV0dXJuIEdTVF9GTE9XX09LOwogICB9CiAKQEAgLTExNTEsNiArMTIyMCwxNSBAQAogCiAgIGdfYXNzZXJ0IChidWYgIT0gTlVMTCk7CiAKKyAgaWYgKGJlc3QtPnByZXBhcmVfZnVuYykgeworICAgIEdzdEJ1ZmZlciAqdG1wOworCisgICAgdG1wID0gYmVzdC0+cHJlcGFyZV9mdW5jIChidWYsIGJlc3QsIG11eCk7CisgICAgZ19hc3NlcnQgKHRtcCk7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgICBidWYgPSB0bXA7CisgIH0KKwogICBpZiAobXV4LT5mb3JjZV9rZXlfdW5pdF9ldmVudCAhPSBOVUxMICYmIGJlc3QtPnN0cmVhbS0+aXNfdmlkZW9fc3RyZWFtKSB7CiAgICAgR3N0RXZlbnQgKmV2ZW50OwogCkBAIC0xMjA3LDkgKzEyODUsOCBAQAogCiAgIGlmIChHU1RfQ0xPQ0tfU1RJTUVfSVNfVkFMSUQgKGJlc3QtPmR0cykpIHsKICAgICBkdHMgPSBHU1RUSU1FX1RPX01QRUdUSU1FIChiZXN0LT5kdHMpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKG11eCwgIkJ1ZmZlciBoYXMgRFRTICVzJSIgR1NUX1RJTUVfRk9STUFUICIgZHRzICUiCi0gICAgICAgIEdfR0lOVDY0X0ZPUk1BVCwgYmVzdC0+ZHRzID49IDAgPyAiICIgOiAiLSIsCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKEFCUyAoYmVzdC0+ZHRzKSksIGR0cyk7CisgICAgR1NUX0RFQlVHX09CSkVDVCAobXV4LCAiQnVmZmVyIGhhcyBEVFMgJSIgR1NUX1NUSU1FX0ZPUk1BVCAiIGR0cyAlIgorICAgICAgICBHX0dJTlQ2NF9GT1JNQVQsIEdTVF9TVElNRV9BUkdTIChiZXN0LT5kdHMpLCBkdHMpOwogICB9CiAKICAgLyogc2hvdWxkIG5vdCBoYXZlIGEgRFRTIHdpdGhvdXQgUFRTICovCkBAIC0xMjM1LDYgKzEzMTIsOCBAQAogCiAgIGlmIChiZXN0LT5zdHJlYW0tPmlzX21ldGEgJiYgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKSA+IChHX01BWFVJTlQxNiAtIDMpKSB7CiAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChtdXgsICJLTFYgbWV0YSB1bml0IHRvbyBiaWcsIHNwbGl0dGluZyBub3Qgc3VwcG9ydGVkIik7CisKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwogICAgIHJldHVybiBHU1RfRkxPV19PSzsKICAgfQogCkBAIC0xMjc0LDYgKzEzNTMsOCBAQAogICB9CiBub19wcm9ncmFtOgogICB7CisgICAgaWYgKGJ1ZikKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKG11eCwgU1RSRUFNLCBNVVgsCiAgICAgICAgICgiU3RyZWFtIG9uIHBhZCAlIiBHU1RfUFRSX0ZPUk1BVAogICAgICAgICAgICAgIiBpcyBub3QgYXNzb2NpYXRlZCB3aXRoIGFueSBwcm9ncmFtIiwgQ09MTEVDVF9EQVRBX1BBRCAoYmVzdCkpLApkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC9tcGVndHNtdXhfb3B1cy5jIGIvZ3N0L21wZWd0c211eC9tcGVndHNtdXhfb3B1cy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MTc2YjIKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QvbXBlZ3RzbXV4L21wZWd0c211eF9vcHVzLmMKQEAgLTAsMCArMSwxNDkgQEAKKy8qIAorICogQ29weXJpZ2h0IDIwMDYsIDIwMDcsIDIwMDggRmx1ZW5kbyBTLkEuIAorICogIEF1dGhvcnM6IEphbiBTY2htaWR0IDxqYW5AZmx1ZW5kby5jb20+CisgKiAgICAgICAgICAgS2FwaWwgQWdyYXdhbCA8a2FwaWxAZmx1ZW5kby5jb20+CisgKiAgICAgICAgICAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQGZsdWVuZG8uY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBsaWNlbnNlZCB1bmRlciA0IGRpZmZlcmVudCBsaWNlbnNlcyBhbmQgeW91CisgKiBjYW4gY2hvb3NlIHRvIHVzZSBpdCB1bmRlciB0aGUgdGVybXMgb2YgYW55IG9uZSBvZiB0aGVtLiBUaGUKKyAqIGZvdXIgbGljZW5zZXMgYXJlIHRoZSBNUEwgMS4xLCB0aGUgTEdQTCwgdGhlIEdQTCBhbmQgdGhlIE1JVAorICogbGljZW5zZS4KKyAqCisgKiBNUEw6CisgKiAKKyAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UKKyAqIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8uCisgKgorICogU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIgorICogYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICogTEdQTDoKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKiBHUEw6CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKiBNSVQ6CisgKgorICogVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIFNvdXJjZSBDb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIE1JVCBsaWNlbnNlLgorICogU2VlIGZ1cnRoZXIgZXhwbGFuYXRpb24gYXR0YWNoZWQgaW4gTGljZW5zZSBTdGF0ZW1lbnQgKGRpc3RyaWJ1dGVkIGluIHRoZSBmaWxlCisgKiBMSUNFTlNFKS4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCisgKiBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8KKyAqIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqIAorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICogCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgIm1wZWd0c211eF9vcHVzLmgiCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIG1wZWd0c211eF9kZWJ1ZworCitHc3RCdWZmZXIgKgorbXBlZ3RzbXV4X3ByZXBhcmVfb3B1cyAoR3N0QnVmZmVyICogYnVmLCBNcGVnVHNQYWREYXRhICogcGFkX2RhdGEsCisgICAgTXBlZ1RzTXV4ICogbXV4KQoreworICBnc3NpemUgaW5zaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKTsKKyAgZ3NpemUgb3V0c2l6ZTsKKyAgR3N0QnVmZmVyICpvdXRidWY7CisgIEdzdE1hcEluZm8gbWFwOworICBndWludCBuOworICBHc3RBdWRpb0NsaXBwaW5nTWV0YSAqY21ldGEgPSBnc3RfYnVmZmVyX2dldF9hdWRpb19jbGlwcGluZ19tZXRhIChidWYpOworCisgIGdfYXNzZXJ0ICghY21ldGEgfHwgY21ldGEtPmZvcm1hdCA9PSBHU1RfRk9STUFUX0RFRkFVTFQpOworCisgIG91dHNpemUgPSAyICsgaW5zaXplIC8gMjU1ICsgMTsKKyAgaWYgKGNtZXRhICYmIGNtZXRhLT5zdGFydCkKKyAgICBvdXRzaXplICs9IDI7CisgIGlmIChjbWV0YSAmJiBjbWV0YS0+ZW5kKQorICAgIG91dHNpemUgKz0gMjsKKworICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG91dHNpemUpOworICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0YnVmLCBidWYsCisgICAgICBHU1RfQlVGRkVSX0NPUFlfTUVUQURBVEEgfCBHU1RfQlVGRkVSX0NPUFlfVElNRVNUQU1QUywgMCwgMCk7CisgIGdzdF9idWZmZXJfbWFwIChvdXRidWYsICZtYXAsIEdTVF9NQVBfV1JJVEUpOworICBtYXAuZGF0YVswXSA9IDB4N2Y7CisgIG1hcC5kYXRhWzFdID0gMHhlMDsKKworICBpZiAoY21ldGEgJiYgY21ldGEtPnN0YXJ0KQorICAgIG1hcC5kYXRhWzFdIHw9IDB4MTA7CisgIGlmIChjbWV0YSAmJiBjbWV0YS0+ZW5kKQorICAgIG1hcC5kYXRhWzFdIHw9IDB4MDg7CisKKyAgbiA9IDI7CisgIGRvIHsKKyAgICBnX2Fzc2VydCAobiA8IG91dHNpemUpOworICAgIC8qIEZJWE1FOiB0aGlzIHNob3VsZCBiZSB1c2luZyBpbnNpemUgZm9yIHdyaXRpbmcgaGVyZSBidXQgZmZtcGVnIGFuZCB0aGUKKyAgICAgKiBvbmx5IGF2YWlsYWJsZSBzYW1wbGUgc3RyZWFtIGZyb20gb2JlLnR2IGFyZSBub3QgaW5jbHVkaW5nIHRoZSBjb250cm9sCisgICAgICogaGVhZGVyIHNpemUgaW4gYXVfc2l6ZQorICAgICAqLworICAgIG1hcC5kYXRhW25dID0gTUlOIChpbnNpemUsIDI1NSk7CisgICAgaW5zaXplIC09IDI1NTsKKyAgICBuKys7CisgIH0gd2hpbGUgKGluc2l6ZSA+PSAwKTsKKworICBpZiAoY21ldGEgJiYgY21ldGEtPnN0YXJ0KSB7CisgICAgR1NUX1dSSVRFX1VJTlQxNl9CRSAoJm1hcC5kYXRhW25dLCBjbWV0YS0+c3RhcnQpOworICAgIG4gKz0gMjsKKyAgfQorCisgIGlmIChjbWV0YSAmJiBjbWV0YS0+ZW5kKQorICAgIEdTVF9XUklURV9VSU5UMTZfQkUgKCZtYXAuZGF0YVtuXSwgY21ldGEtPmVuZCk7CisKKyAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0YnVmLCAmbWFwKTsKKworICBvdXRidWYgPSBnc3RfYnVmZmVyX2FwcGVuZCAob3V0YnVmLCBnc3RfYnVmZmVyX3JlZiAoYnVmKSk7CisKKyAgcmV0dXJuIG91dGJ1ZjsKK30KZGlmZiAtLWdpdCBhL2dzdC9tcGVndHNtdXgvbXBlZ3RzbXV4X29wdXMuaCBiL2dzdC9tcGVndHNtdXgvbXBlZ3RzbXV4X29wdXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGYyNWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0L21wZWd0c211eC9tcGVndHNtdXhfb3B1cy5oCkBAIC0wLDAgKzEsOTEgQEAKKy8qIAorICogQ29weXJpZ2h0IDIwMDYsIDIwMDcsIDIwMDggRmx1ZW5kbyBTLkEuIAorICogIEF1dGhvcnM6IEphbiBTY2htaWR0IDxqYW5AZmx1ZW5kby5jb20+CisgKiAgICAgICAgICAgS2FwaWwgQWdyYXdhbCA8a2FwaWxAZmx1ZW5kby5jb20+CisgKiAgICAgICAgICAgSnVsaWVuIE1vdXR0ZSA8anVsaWVuQGZsdWVuZG8uY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBsaWNlbnNlZCB1bmRlciA0IGRpZmZlcmVudCBsaWNlbnNlcyBhbmQgeW91CisgKiBjYW4gY2hvb3NlIHRvIHVzZSBpdCB1bmRlciB0aGUgdGVybXMgb2YgYW55IG9uZSBvZiB0aGVtLiBUaGUKKyAqIGZvdXIgbGljZW5zZXMgYXJlIHRoZSBNUEwgMS4xLCB0aGUgTEdQTCwgdGhlIEdQTCBhbmQgdGhlIE1JVAorICogbGljZW5zZS4KKyAqCisgKiBNUEw6CisgKiAKKyAqIFRoZSBjb250ZW50cyBvZiB0aGlzIGZpbGUgYXJlIHN1YmplY3QgdG8gdGhlIE1vemlsbGEgUHVibGljIExpY2Vuc2UKKyAqIFZlcnNpb24gMS4xICh0aGUgIkxpY2Vuc2UiKTsgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4KKyAqIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKiBodHRwOi8vd3d3Lm1vemlsbGEub3JnL01QTC8uCisgKgorICogU29mdHdhcmUgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIgorICogYmFzaXMsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuIFNlZSB0aGUKKyAqIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcmlnaHRzIGFuZCBsaW1pdGF0aW9ucworICogdW5kZXIgdGhlIExpY2Vuc2UuCisgKgorICogTEdQTDoKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKiBHUEw6CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorICogKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqCisgKiBNSVQ6CisgKgorICogVW5sZXNzIG90aGVyd2lzZSBpbmRpY2F0ZWQsIFNvdXJjZSBDb2RlIGlzIGxpY2Vuc2VkIHVuZGVyIE1JVCBsaWNlbnNlLgorICogU2VlIGZ1cnRoZXIgZXhwbGFuYXRpb24gYXR0YWNoZWQgaW4gTGljZW5zZSBTdGF0ZW1lbnQgKGRpc3RyaWJ1dGVkIGluIHRoZSBmaWxlCisgKiBMSUNFTlNFKS4KKyAqIAorICogUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgY29weSBvZgorICogdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksIHRvIGRlYWwgaW4KKyAqIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcgd2l0aG91dCBsaW1pdGF0aW9uIHRoZSByaWdodHMgdG8KKyAqIHVzZSwgY29weSwgbW9kaWZ5LCBtZXJnZSwgcHVibGlzaCwgZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzCisgKiBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZSBTb2Z0d2FyZSBpcyBmdXJuaXNoZWQgdG8gZG8KKyAqIHNvLCBzdWJqZWN0IHRvIHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKyAqIAorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsCisgKiBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICogCisgKiBUSEUgU09GVFdBUkUgSVMgUFJPVklERUQgIkFTIElTIiwgV0lUSE9VVCBXQVJSQU5UWSBPRiBBTlkgS0lORCwgRVhQUkVTUyBPUgorICogSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksCisgKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUKKyAqIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMgQkUgTElBQkxFIEZPUiBBTlkgQ0xBSU0sIERBTUFHRVMgT1IgT1RIRVIKKyAqIExJQUJJTElUWSwgV0hFVEhFUiBJTiBBTiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sCisgKiBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdTIElOIFRIRQorICogU09GVFdBUkUuCisgKgorICovCisgCisjaWZuZGVmIF9fTVBFR1RTTVVYX09QVVNfSF9fCisjZGVmaW5lIF9fTVBFR1RTTVVYX09QVVNfSF9fCisgCisjaW5jbHVkZSAibXBlZ3RzbXV4LmgiCisKK0dzdEJ1ZmZlciAqIG1wZWd0c211eF9wcmVwYXJlX29wdXMgKEdzdEJ1ZmZlciAqIGJ1ZiwgTXBlZ1RzUGFkRGF0YSAqIGRhdGEsCisgICAgTXBlZ1RzTXV4ICogbXV4KTsKKyAKKyNlbmRpZiAvKiBfX01QRUdUU01VWF9PUFVTX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC90c211eC9NYWtlZmlsZS5pbiBiL2dzdC9tcGVndHNtdXgvdHNtdXgvTWFrZWZpbGUuaW4KaW5kZXggY2EzNGE4ZC4uYmI1ODBkMyAxMDA2NDQKLS0tIGEvZ3N0L21wZWd0c211eC90c211eC9NYWtlZmlsZS5pbgorKysgYi9nc3QvbXBlZ3RzbXV4L3RzbXV4L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI0Niw2ICsyNDUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Myw2ICsyODQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5MSw3ICsyOTQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTAsOCArMzEyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyOCwxNiArMzMxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Myw2ICszNjcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODgsNiArMzk0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg5LDYgKzQ5Nyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDIsOCArNTExLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE5LDYgKzUyNiw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzYsMTYgKzU4NSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNyw2ICs2NDgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ3LDYgKzY1OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Niw2ICs2NjksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkzLDcgKzcwOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC90c211eC90c211eC5jIGIvZ3N0L21wZWd0c211eC90c211eC90c211eC5jCmluZGV4IGQ2OGY1MDEuLjYzOGRlMTUgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXguYworKysgYi9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4LmMKQEAgLTkzNCw4ICs5MzQsNyBAQAogICByZXR1cm4gVFJVRTsKIAogZmFpbDoKLSAgaWYgKHBhY2tldCkKLSAgICBnX2ZyZWUgKHBhY2tldCk7CisgIGdfZnJlZSAocGFja2V0KTsKICAgaWYgKHNlY3Rpb25fYnVmZmVyKQogICAgIGdzdF9idWZmZXJfdW5yZWYgKHNlY3Rpb25fYnVmZmVyKTsKICAgcmV0dXJuIEZBTFNFOwpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC90c211eC90c211eHN0cmVhbS5jIGIvZ3N0L21wZWd0c211eC90c211eC90c211eHN0cmVhbS5jCmluZGV4IDEwOTRjM2UuLjZiN2MxN2UgMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uYworKysgYi9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmMKQEAgLTEzOCw2ICsxMzgsNyBAQAogICAgIGNhc2UgVFNNVVhfU1RfVklERU9fTVBFRzI6CiAgICAgY2FzZSBUU01VWF9TVF9WSURFT19NUEVHNDoKICAgICBjYXNlIFRTTVVYX1NUX1ZJREVPX0gyNjQ6CisgICAgY2FzZSBUU01VWF9TVF9WSURFT19IRVZDOgogICAgICAgLyogRklYTUU6IEFzc2lnbiBzZXF1ZW50aWFsIElEcz8gKi8KICAgICAgIHN0cmVhbS0+aWQgPSAweEUwOwogICAgICAgc3RyZWFtLT5waS5mbGFncyB8PSBUU01VWF9QQUNLRVRfRkxBR19QRVNfRlVMTF9IRUFERVI7CkBAIC0yMDAsNiArMjAxLDEzIEBACiAgICAgICAgICAgVFNNVVhfUEFDS0VUX0ZMQUdfUEVTX0ZVTExfSEVBREVSIHwKICAgICAgICAgICBUU01VWF9QQUNLRVRfRkxBR19QRVNfREFUQV9BTElHTk1FTlQ7CiAgICAgICBicmVhazsKKyAgICBjYXNlIFRTTVVYX1NUX1BTX09QVVM6CisgICAgICAvKiBGSVhNRTogYXNzaWduIHNlcXVlbnRpYWwgZXh0ZW5kZWQgSURzPyAqLworICAgICAgc3RyZWFtLT5pZCA9IDB4QkQ7CisgICAgICBzdHJlYW0tPnN0cmVhbV90eXBlID0gVFNNVVhfU1RfUFJJVkFURV9EQVRBOworICAgICAgc3RyZWFtLT5pc19vcHVzID0gVFJVRTsKKyAgICAgIHN0cmVhbS0+cGkuZmxhZ3MgfD0gVFNNVVhfUEFDS0VUX0ZMQUdfUEVTX0ZVTExfSEVBREVSOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGdfY3JpdGljYWwgKCJTdHJlYW0gdHlwZSAweCUweCBub3QgeWV0IGltcGxlbWVudGVkIiwgc3RyZWFtX3R5cGUpOwogICAgICAgYnJlYWs7CkBAIC0zMDgsOCArMzE2LDEwIEBACiAgICAgLyogRklYTUU6IEFzIGEgaGFjaywgZm9yIHVuYm91bmRlZCBzdHJlYW1zLCBzdGFydCBhIG5ldyBQRVMgcGFja2V0IGZvciBlYWNoCiAgICAgICogaW5jb21pbmcgcGFja2V0IHdlIHJlY2VpdmUuIFRoaXMgYXNzdW1lcyB0aGF0IGluY29taW5nIGRhdGEgaXMgCiAgICAgICogcGFja2V0aXNlZCBzZW5zaWJseSAtIGllLCBldmVyeSB2aWRlbyBmcmFtZSAqLwotICAgIGlmIChzdHJlYW0tPmN1cl9wZXNfcGF5bG9hZF9zaXplID09IDApCisgICAgaWYgKHN0cmVhbS0+Y3VyX3Blc19wYXlsb2FkX3NpemUgPT0gMCkgewogICAgICAgc3RyZWFtLT5zdGF0ZSA9IFRTTVVYX1NUUkVBTV9TVEFURV9IRUFERVI7CisgICAgICBzdHJlYW0tPnBlc19ieXRlc193cml0dGVuID0gMDsKKyAgICB9CiAgIH0KIH0KIApAQCAtNDAxLDExICs0MTEsNiBAQAogICAgIHN0cmVhbS0+Y3VyX3Blc19wYXlsb2FkX3NpemUgPSBzdHJlYW0tPnBlc19wYXlsb2FkX3NpemU7CiAgICAgdHNtdXhfc3RyZWFtX2ZpbmRfcHRzX2R0c193aXRoaW4gKHN0cmVhbSwgc3RyZWFtLT5jdXJfcGVzX3BheWxvYWRfc2l6ZSwKICAgICAgICAgJnN0cmVhbS0+cHRzLCAmc3RyZWFtLT5kdHMpOwotICB9IGVsc2UgaWYgKHN0cmVhbS0+aXNfdmlkZW9fc3RyZWFtKSB7Ci0gICAgLyogVW5ib3VuZGVkIGZvciB2aWRlbyBzdHJlYW1zICovCi0gICAgc3RyZWFtLT5jdXJfcGVzX3BheWxvYWRfc2l6ZSA9IDA7Ci0gICAgdHNtdXhfc3RyZWFtX2ZpbmRfcHRzX2R0c193aXRoaW4gKHN0cmVhbSwgc3RyZWFtLT5ieXRlc19hdmFpbCwgJnN0cmVhbS0+cHRzLAotICAgICAgICAmc3RyZWFtLT5kdHMpOwogICB9IGVsc2UgewogICAgIC8qIE91dHB1dCBhIFBFUyBwYWNrZXQgb2YgYWxsIGN1cnJlbnRseSBhdmFpbGFibGUgYnl0ZXMgb3RoZXJ3aXNlICovCiAgICAgc3RyZWFtLT5jdXJfcGVzX3BheWxvYWRfc2l6ZSA9IHN0cmVhbS0+Ynl0ZXNfYXZhaWw7CkBAIC00MzMsNiArNDM4LDE2IEBACiAgICAgfQogICB9CiAKKyAgaWYgKHN0cmVhbS0+aXNfdmlkZW9fc3RyZWFtKSB7CisgICAgZ3VpbnQ4IGhkcl9sZW47CisKKyAgICBoZHJfbGVuID0gdHNtdXhfc3RyZWFtX3Blc19oZWFkZXJfbGVuZ3RoIChzdHJlYW0pOworCisgICAgLyogVW5ib3VuZGVkIGZvciB2aWRlbyBzdHJlYW1zIGlmIHBlcyBwYWNrZXQgbGVuZ3RoIGlzIG92ZXIgMTYgYml0ICovCisgICAgaWYgKChzdHJlYW0tPmN1cl9wZXNfcGF5bG9hZF9zaXplICsgaGRyX2xlbiAtIDYpID4gR19NQVhVSU5UMTYpCisgICAgICBzdHJlYW0tPmN1cl9wZXNfcGF5bG9hZF9zaXplID0gMDsKKyAgfQorCiAgIHJldHVybiBUUlVFOwogfQogCkBAIC05MTAsOSArOTI1LDIwIEBACiAgICAgICAgIGdfcHRyX2FycmF5X2FkZCAocG10X3N0cmVhbS0+ZGVzY3JpcHRvcnMsIGRlc2NyaXB0b3IpOwogICAgICAgICBicmVhazsKICAgICAgIH0KKyAgICAgIGlmIChzdHJlYW0tPmlzX29wdXMpIHsKKyAgICAgICAgZGVzY3JpcHRvciA9IGdzdF9tcGVndHNfZGVzY3JpcHRvcl9mcm9tX3JlZ2lzdHJhdGlvbiAoIk9wdXMiLCBOVUxMLCAwKTsKKyAgICAgICAgZ19wdHJfYXJyYXlfYWRkIChwbXRfc3RyZWFtLT5kZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CisKKyAgICAgICAgZGVzY3JpcHRvciA9CisgICAgICAgICAgICBnc3RfbXBlZ3RzX2Rlc2NyaXB0b3JfZnJvbV9jdXN0b21fd2l0aF9leHRlbnNpb24KKyAgICAgICAgICAgIChHU1RfTVRTX0RFU0NfRFZCX0VYVEVOU0lPTiwgMHg4MCwKKyAgICAgICAgICAgICZzdHJlYW0tPm9wdXNfY2hhbm5lbF9jb25maWdfY29kZSwgMSk7CisKKyAgICAgICAgZ19wdHJfYXJyYXlfYWRkIChwbXRfc3RyZWFtLT5kZXNjcmlwdG9ycywgZGVzY3JpcHRvcik7CisgICAgICB9CiAgICAgICBpZiAoc3RyZWFtLT5pc19tZXRhKSB7CiAgICAgICAgIGRlc2NyaXB0b3IgPSBnc3RfbXBlZ3RzX2Rlc2NyaXB0b3JfZnJvbV9yZWdpc3RyYXRpb24gKCJLTFZBIiwgTlVMTCwgMCk7Ci0gICAgICAgIEdTVF9FUlJPUiAoImFkZGluZyBLTFZBIHJlZ2lzdHJhdGlvbiBkZXNjcmlwdG9yISIpOworICAgICAgICBHU1RfREVCVUcgKCJhZGRpbmcgS0xWQSByZWdpc3RyYXRpb24gZGVzY3JpcHRvciIpOwogICAgICAgICBnX3B0cl9hcnJheV9hZGQgKHBtdF9zdHJlYW0tPmRlc2NyaXB0b3JzLCBkZXNjcmlwdG9yKTsKICAgICAgIH0KICAgICBkZWZhdWx0OgpkaWZmIC0tZ2l0IGEvZ3N0L21wZWd0c211eC90c211eC90c211eHN0cmVhbS5oIGIvZ3N0L21wZWd0c211eC90c211eC90c211eHN0cmVhbS5oCmluZGV4IGMzNTVhZTIuLjczYjJhODggMTAwNjQ0Ci0tLSBhL2dzdC9tcGVndHNtdXgvdHNtdXgvdHNtdXhzdHJlYW0uaAorKysgYi9nc3QvbXBlZ3RzbXV4L3RzbXV4L3RzbXV4c3RyZWFtLmgKQEAgLTEzMyw2ICsxMzMsNyBAQAogICBUU01VWF9TVF9BVURJT19BQUMgICAgICAgICAgICAgICAgICA9IDB4MGYsCiAgIFRTTVVYX1NUX1ZJREVPX01QRUc0ICAgICAgICAgICAgICAgID0gMHgxMCwKICAgVFNNVVhfU1RfVklERU9fSDI2NCAgICAgICAgICAgICAgICAgPSAweDFiLAorICBUU01VWF9TVF9WSURFT19IRVZDICAgICAgICAgICAgICAgICA9IDB4MjQsCiAKICAgLyogcHJpdmF0ZSBzdHJlYW0gdHlwZXMgKi8KICAgVFNNVVhfU1RfUFNfQVVESU9fQUMzICAgICAgICAgICAgICAgPSAweDgxLApAQCAtMTQxLDYgKzE0Miw3IEBACiAgIFRTTVVYX1NUX1BTX0RWQl9TVUJQSUNUVVJFICAgICAgICAgID0gMHg4YywKICAgVFNNVVhfU1RfUFNfVEVMRVRFWFQgICAgICAgICAgICAgICAgPSAweDhkLAogICBUU01VWF9TVF9QU19LTFYgICAgICAgICAgICAgICAgICAgICA9IDB4OGUsICAgIC8qIG9ubHkgdXNlZCBpbnRlcm5hbGx5ICovCisgIFRTTVVYX1NUX1BTX09QVVMgICAgICAgICAgICAgICAgICAgID0gMHg4ZiwgICAgLyogb25seSB1c2VkIGludGVybmFsbHkgKi8KICAgVFNNVVhfU1RfUFNfRFZEX1NVQlBJQ1RVUkUgICAgICAgICAgPSAweGZmLAogCiAgIC8qIE5vbi1zdGFuZGFyZCBkZWZpbml0aW9ucyAqLwpAQCAtMjA5LDYgKzIxMSwxMCBAQAogICBnY2hhciBsYW5ndWFnZVs0XTsKIAogICBnYm9vbGVhbiBpc19tZXRhOworCisgIC8qIE9wdXMgKi8KKyAgZ2Jvb2xlYW4gaXNfb3B1czsKKyAgZ3VpbnQ4IG9wdXNfY2hhbm5lbF9jb25maWdfY29kZTsKIH07CiAKIC8qIHN0cmVhbSBtYW5hZ2VtZW50ICovCmRpZmYgLS1naXQgYS9nc3QvbXZlL01ha2VmaWxlLmluIGIvZ3N0L212ZS9NYWtlZmlsZS5pbgppbmRleCBhYTI1NGNiLi40M2JhNDNjIDEwMDY0NAotLS0gYS9nc3QvbXZlL01ha2VmaWxlLmluCisrKyBiL2dzdC9tdmUvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvbXZlL2dzdG12ZW11eC5jIGIvZ3N0L212ZS9nc3RtdmVtdXguYwppbmRleCAwNDMyMTFjLi5hN2EzMmNiIDEwMDY0NAotLS0gYS9nc3QvbXZlL2dzdG12ZW11eC5jCisrKyBiL2dzdC9tdmUvZ3N0bXZlbXV4LmMKQEAgLTE4LDcgKzE4LDcgQEAKICAqLwogCiAvKgotZ3N0LWxhdW5jaC0wLjEwIGZpbGVzcmMgbG9jYXRpb249bW92aWUubXZlICEgbXZlZGVtdXggbmFtZT1kICEKK2dzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249bW92aWUubXZlICEgbXZlZGVtdXggbmFtZT1kICEKICAgICB2aWRlby94LXJhdy1yZ2IgISBtdmVtdXggcXVpY2s9dHJ1ZSBuYW1lPW0gIQogICAgIGZpbGVzaW5rIGxvY2F0aW9uPXRlc3QubXZlIGQuICEgYXVkaW8veC1yYXctaW50ICEgbS4KICovCmRpZmYgLS1naXQgYS9nc3QvbXhmL01ha2VmaWxlLmFtIGIvZ3N0L214Zi9NYWtlZmlsZS5hbQppbmRleCA2ZWM0YTc4Li4yZDg3OTA3IDEwMDY0NAotLS0gYS9nc3QvbXhmL01ha2VmaWxlLmFtCisrKyBiL2dzdC9teGYvTWFrZWZpbGUuYW0KQEAgLTE5LDEwICsxOSwxOSBAQAogCW14ZnZjMy5jIFwKIAlteGZkbXMxLmMKIAotbGliZ3N0bXhmX2xhX0NGTEFHUyA9ICQoR1NUX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpCi1saWJnc3RteGZfbGFfTElCQUREID0gJChHU1RfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAorbGliZ3N0bXhmX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9DRkxBR1MpCitsaWJnc3RteGZfbGFfTElCQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYmFzZS9saWJnc3RiYWRiYXNlLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAktbGdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ACisJLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCisJJChHU1RfQkFTRV9MSUJTKSBcCisJJChHU1RfTElCUykKIGxpYmdzdG14Zl9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RteGZfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKIApkaWZmIC0tZ2l0IGEvZ3N0L214Zi9NYWtlZmlsZS5pbiBiL2dzdC9teGYvTWFrZWZpbGUuaW4KaW5kZXggZmQ4NTExNS4uZjE2MWZjNyAxMDA2NDQKLS0tIGEvZ3N0L214Zi9NYWtlZmlsZS5pbgorKysgYi9nc3QvbXhmL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2NCw4ICsxNjMsOSBAQAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdG14Zl9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2xpYmdzdG14Zl9sYV9ERVBFTkRFTkNJRVMgPSAkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2Jhc2UvbGliZ3N0YmFkYmFzZS0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKQogYW1fbGliZ3N0bXhmX2xhX09CSkVDVFMgPSBsaWJnc3RteGZfbGEtbXhmLmxvIGxpYmdzdG14Zl9sYS1teGZ1bC5sbyBcCiAJbGliZ3N0bXhmX2xhLW14ZnR5cGVzLmxvIGxpYmdzdG14Zl9sYS1teGZtZXRhZGF0YS5sbyBcCiAJbGliZ3N0bXhmX2xhLW14ZmVzc2VuY2UubG8gbGliZ3N0bXhmX2xhLW14ZnF1YXJrLmxvIFwKQEAgLTI4Miw2ICsyODIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOSw2ICszMjEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNyw3ICszMzEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDYsOCArMzQ5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NCwxNiArMzY4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OSw2ICs0MDQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjQsNiArNDMxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI1LDYgKzUzNCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzgsOCArNTQ4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU1LDYgKzU2Myw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTIsMTYgKzYyMiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Myw2ICs2ODUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgzLDYgKzY5Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Miw2ICs3MDYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI5LDcgKzc0NSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzg5LDEwICs4MDQsMjAgQEAKIAlteGZ2YzMuYyBcCiAJbXhmZG1zMS5jCiAKLWxpYmdzdG14Zl9sYV9DRkxBR1MgPSAkKEdTVF9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKQotbGliZ3N0bXhmX2xhX0xJQkFERCA9ICQoR1NUX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKK2xpYmdzdG14Zl9sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQ0ZMQUdTKQorCitsaWJnc3RteGZfbGFfTElCQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYmFzZS9saWJnc3RiYWRiYXNlLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAktbGdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ACisJLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCisJJChHU1RfQkFTRV9MSUJTKSBcCisJJChHU1RfTElCUykKIAogbGliZ3N0bXhmX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKIGxpYmdzdG14Zl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQpkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGYuYyBiL2dzdC9teGYvbXhmLmMKaW5kZXggNjYzNGQxOC4uMzI0NDYyYiAxMDA2NDQKLS0tIGEvZ3N0L214Zi9teGYuYworKysgYi9nc3QvbXhmL214Zi5jCkBAIC03MSw4ICs3MSw5IEBACiAKICAgLyogbXhmbXV4IGlzIGRpc2FibGVkIGZvciBub3cgLSBpdCBjb21waWxlcyBidXQgaXMgY29tcGxldGVseSB1bnRlc3RlZCAqLwogICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJteGZkZW11eCIsIEdTVF9SQU5LX1BSSU1BUlksCi0gICAgICAgICAgR1NUX1RZUEVfTVhGX0RFTVVYKSkKLSAgICAvKiB8fCAhZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgIm14Zm11eCIsIEdTVF9SQU5LX1BSSU1BUlksIEdTVF9UWVBFX01YRl9NVVgpKSAqLworICAgICAgICAgIEdTVF9UWVBFX01YRl9ERU1VWCkKKyAgICAgIHx8ICFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAibXhmbXV4IiwgR1NUX1JBTktfUFJJTUFSWSwKKyAgICAgICAgICBHU1RfVFlQRV9NWEZfTVVYKSkKICAgICByZXR1cm4gRkFMU0U7CiAKICAgcmV0dXJuIFRSVUU7CmRpZmYgLS1naXQgYS9nc3QvbXhmL214ZmFlcy1id2YuYyBiL2dzdC9teGYvbXhmYWVzLWJ3Zi5jCmluZGV4IDc2NDk5NzMuLjYzM2YzYWYgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmYWVzLWJ3Zi5jCisrKyBiL2dzdC9teGYvbXhmYWVzLWJ3Zi5jCkBAIC0xMjY2LDcgKzEyNjYsOCBAQAogICAgICAgICAgIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQpIC8gODsKIAogICAgIGF1ZGlvX2Zvcm1hdCA9Ci0gICAgICAgIGdzdF9hdWRpb19mb3JtYXRfYnVpbGRfaW50ZWdlciAoYmxvY2tfYWxpZ24gIT0gMSwgR19MSVRUTEVfRU5ESUFOLAorICAgICAgICBnc3RfYXVkaW9fZm9ybWF0X2J1aWxkX2ludGVnZXIgKGJsb2NrX2FsaWduICE9CisgICAgICAgIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQsIEdfTElUVExFX0VORElBTiwKICAgICAgICAgKGJsb2NrX2FsaWduIC8gZGVzY3JpcHRvci0+Y2hhbm5lbF9jb3VudCkgKiA4LAogICAgICAgICAoYmxvY2tfYWxpZ24gLyBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAqIDgpOwogICAgIHJldCA9CkBAIC0xMjk3LDcgKzEyOTgsOCBAQAogICAgICAgICAgIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQpIC8gODsKIAogICAgIGF1ZGlvX2Zvcm1hdCA9Ci0gICAgICAgIGdzdF9hdWRpb19mb3JtYXRfYnVpbGRfaW50ZWdlciAoYmxvY2tfYWxpZ24gIT0gMSwgR19CSUdfRU5ESUFOLAorICAgICAgICBnc3RfYXVkaW9fZm9ybWF0X2J1aWxkX2ludGVnZXIgKGJsb2NrX2FsaWduICE9CisgICAgICAgIGRlc2NyaXB0b3ItPmNoYW5uZWxfY291bnQsIEdfQklHX0VORElBTiwKICAgICAgICAgKGJsb2NrX2FsaWduIC8gZGVzY3JpcHRvci0+Y2hhbm5lbF9jb3VudCkgKiA4LAogICAgICAgICAoYmxvY2tfYWxpZ24gLyBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAqIDgpOwogICAgIHJldCA9CkBAIC0xMzc0LDggKzEzNzYsOCBAQAogICAgICAgICBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAvIDg7CiAKICAgYXVkaW9fZm9ybWF0ID0KLSAgICAgIGdzdF9hdWRpb19mb3JtYXRfYnVpbGRfaW50ZWdlciAoYmxvY2tfYWxpZ24gIT0gMSwgR19MSVRUTEVfRU5ESUFOLAotICAgICAgKGJsb2NrX2FsaWduIC8gZGVzY3JpcHRvci0+Y2hhbm5lbF9jb3VudCkgKiA4LAorICAgICAgZ3N0X2F1ZGlvX2Zvcm1hdF9idWlsZF9pbnRlZ2VyIChibG9ja19hbGlnbiAhPSBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50LAorICAgICAgR19MSVRUTEVfRU5ESUFOLCAoYmxvY2tfYWxpZ24gLyBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAqIDgsCiAgICAgICAoYmxvY2tfYWxpZ24gLyBkZXNjcmlwdG9yLT5jaGFubmVsX2NvdW50KSAqIDgpOwogICByZXQgPQogICAgICAgbXhmX21ldGFkYXRhX2dlbmVyaWNfc291bmRfZXNzZW5jZV9kZXNjcmlwdG9yX2NyZWF0ZV9jYXBzIChkZXNjcmlwdG9yLApkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZkZW11eC5jIGIvZ3N0L214Zi9teGZkZW11eC5jCmluZGV4IGU0NWU0OWMuLmYxMWQ2MDQgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmZGVtdXguYworKysgYi9nc3QvbXhmL214ZmRlbXV4LmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249L3BhdGgvdG8vbXhmICEgbXhmZGVtdXggISBhdWRpb2NvbnZlcnQgISBhdXRvYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL214ZiAhIG14ZmRlbXV4ICEgYXVkaW9jb252ZXJ0ICEgYXV0b2F1ZGlvc2luawogICogXXwgVGhpcyBwaXBlbGluZSBkZW11eGVzIGFuIE1YRiBmaWxlIGFuZCBvdXRwdXRzIG9uZSBvZiB0aGUgY29udGFpbmVkIHJhdyBhdWRpbyBzdHJlYW1zLgogICogPC9yZWZzZWN0Mj4KICAqLwpAQCAtNzgsNiArNzgsOCBAQAogZ3N0X214Zl9kZW11eF9oYW5kbGVfaW5kZXhfdGFibGVfc2VnbWVudCAoR3N0TVhGRGVtdXggKiBkZW11eCwKICAgICBjb25zdCBNWEZVTCAqIGtleSwgR3N0QnVmZmVyICogYnVmZmVyLCBndWludDY0IG9mZnNldCk7CiAKK3N0YXRpYyB2b2lkIGNvbGxlY3RfaW5kZXhfdGFibGVfc2VnbWVudHMgKEdzdE1YRkRlbXV4ICogZGVtdXgpOworCiBHVHlwZSBnc3RfbXhmX2RlbXV4X3BhZF9nZXRfdHlwZSAodm9pZCk7CiBHX0RFRklORV9UWVBFIChHc3RNWEZEZW11eFBhZCwgZ3N0X214Zl9kZW11eF9wYWQsIEdTVF9UWVBFX1BBRCk7CiAKQEAgLTI3Nyw2ICsyNzksMTggQEAKICAgICBkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50cyA9IE5VTEw7CiAgIH0KIAorICBpZiAoZGVtdXgtPmluZGV4X3RhYmxlcykgeworICAgIEdMaXN0ICpsOworCisgICAgZm9yIChsID0gZGVtdXgtPmluZGV4X3RhYmxlczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICAgIEdzdE1YRkRlbXV4SW5kZXhUYWJsZSAqdCA9IGwtPmRhdGE7CisgICAgICBnX2FycmF5X2ZyZWUgKHQtPm9mZnNldHMsIFRSVUUpOworICAgICAgZ19mcmVlICh0KTsKKyAgICB9CisgICAgZ19saXN0X2ZyZWUgKGRlbXV4LT5pbmRleF90YWJsZXMpOworICAgIGRlbXV4LT5pbmRleF90YWJsZXMgPSBOVUxMOworICB9CisKICAgZGVtdXgtPmluZGV4X3RhYmxlX3NlZ21lbnRzX2NvbGxlY3RlZCA9IEZBTFNFOwogCiAgIGdzdF9teGZfZGVtdXhfcmVzZXRfbXhmX3N0YXRlIChkZW11eCk7CkBAIC03MTYsNiArNzMwLDcgQEAKIAogICAgICAgICBtZW1zZXQgKCZ0bXAsIDAsIHNpemVvZiAodG1wKSk7CiAgICAgICAgIHRtcC5ib2R5X3NpZCA9IGVkYXRhLT5ib2R5X3NpZDsKKyAgICAgICAgdG1wLmluZGV4X3NpZCA9IGVkYXRhLT5pbmRleF9zaWQ7CiAgICAgICAgIHRtcC50cmFja19udW1iZXIgPSB0cmFjay0+cGFyZW50LnRyYWNrX251bWJlcjsKICAgICAgICAgdG1wLnRyYWNrX2lkID0gdHJhY2stPnBhcmVudC50cmFja19pZDsKICAgICAgICAgbWVtY3B5ICgmdG1wLnNvdXJjZV9wYWNrYWdlX3VpZCwgJnBhY2thZ2UtPnBhcmVudC5wYWNrYWdlX3VpZCwgMzIpOwpAQCAtMTcxMyw2ICsxNzI4LDM2IEBACiAgIGlmIChvdXRidWYpCiAgICAga2V5ZnJhbWUgPSAhR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAob3V0YnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCk7CiAKKyAgLyogUHJlZmVyIGtleWZyYW1lIGluZm9ybWF0aW9uIGZyb20gaW5kZXggdGFibGVzIG92ZXIgZXZlcnl0aGluZyBlbHNlICovCisgIGlmIChkZW11eC0+aW5kZXhfdGFibGVzICYmIG91dGJ1ZikgeworICAgIEdMaXN0ICpsOworICAgIEdzdE1YRkRlbXV4SW5kZXhUYWJsZSAqaW5kZXhfdGFibGUgPSBOVUxMOworCisgICAgZm9yIChsID0gZGVtdXgtPmluZGV4X3RhYmxlczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICAgIEdzdE1YRkRlbXV4SW5kZXhUYWJsZSAqdG1wID0gbC0+ZGF0YTsKKworICAgICAgaWYgKHRtcC0+Ym9keV9zaWQgPT0gZXRyYWNrLT5ib2R5X3NpZAorICAgICAgICAgICYmIHRtcC0+aW5kZXhfc2lkID09IGV0cmFjay0+aW5kZXhfc2lkKSB7CisgICAgICAgIGluZGV4X3RhYmxlID0gdG1wOworICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICB9CisKKyAgICBpZiAoaW5kZXhfdGFibGUgJiYgaW5kZXhfdGFibGUtPm9mZnNldHMtPmxlbiA+IGV0cmFjay0+cG9zaXRpb24pIHsKKyAgICAgIEdzdE1YRkRlbXV4SW5kZXggKmluZGV4ID0KKyAgICAgICAgICAmZ19hcnJheV9pbmRleCAoaW5kZXhfdGFibGUtPm9mZnNldHMsIEdzdE1YRkRlbXV4SW5kZXgsCisgICAgICAgICAgZXRyYWNrLT5wb3NpdGlvbik7CisgICAgICBpZiAoaW5kZXgtPm9mZnNldCAhPSAwKSB7CisgICAgICAgIGtleWZyYW1lID0gaW5kZXgtPmtleWZyYW1lOworCisgICAgICAgIGlmIChrZXlmcmFtZSkKKyAgICAgICAgICBHU1RfQlVGRkVSX0ZMQUdfVU5TRVQgKG91dGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpOworICAgICAgICBlbHNlCisgICAgICAgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAob3V0YnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCk7CisgICAgICB9CisgICAgfQorICB9CisKICAgaWYgKCFldHJhY2stPm9mZnNldHMpCiAgICAgZXRyYWNrLT5vZmZzZXRzID0gZ19hcnJheV9uZXcgKEZBTFNFLCBUUlVFLCBzaXplb2YgKEdzdE1YRkRlbXV4SW5kZXgpKTsKIApAQCAtMTgyMSwxMCArMTg2NiwxMiBAQAogCiAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCiAgICAgICAgICJQdXNoaW5nIGJ1ZmZlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFUICIgZm9yIHRyYWNrICV1OiB0aW1lc3RhbXAgJSIKLSAgICAgICAgR1NUX1RJTUVfRk9STUFUICIgZHVyYXRpb24gJSIgR1NUX1RJTUVfRk9STUFULAotICAgICAgICBnc3RfYnVmZmVyX2dldF9zaXplIChvdXRidWYpLCBwYWQtPm1hdGVyaWFsX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsCisgICAgICAgIEdTVF9USU1FX0ZPUk1BVCAiIGR1cmF0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCAiIHBvc2l0aW9uICUiCisgICAgICAgIEdfR1VJTlQ2NF9GT1JNQVQsIGdzdF9idWZmZXJfZ2V0X3NpemUgKG91dGJ1ZiksCisgICAgICAgIHBhZC0+bWF0ZXJpYWxfdHJhY2stPnBhcmVudC50cmFja19pZCwKICAgICAgICAgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKG91dGJ1ZikpLAotICAgICAgICBHU1RfVElNRV9BUkdTIChHU1RfQlVGRkVSX0RVUkFUSU9OIChvdXRidWYpKSk7CisgICAgICAgIEdTVF9USU1FX0FSR1MgKEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1ZikpLAorICAgICAgICBwYWQtPmN1cnJlbnRfZXNzZW5jZV90cmFja19wb3NpdGlvbik7CiAKICAgICBpZiAocGFkLT5kaXNjb250KSB7CiAgICAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChvdXRidWYsIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKTsKQEAgLTE4OTYsMzMgKzE5NDMsNzQgQEAKIH0KIAogc3RhdGljIHZvaWQKLXJlYWRfcGFydGl0aW9uX2hlYWRlciAoR3N0TVhGRGVtdXggKiBkZW11eCwgZ3VpbnQ2NCBvZmZzZXQpCityZWFkX3BhcnRpdGlvbl9oZWFkZXIgKEdzdE1YRkRlbXV4ICogZGVtdXgpCiB7CiAgIEdzdEJ1ZmZlciAqYnVmOwogICBNWEZVTCBrZXk7CiAgIGd1aW50IHJlYWQ7CiAKLSAgaWYgKGdzdF9teGZfZGVtdXhfcHVsbF9rbHZfcGFja2V0IChkZW11eCwgb2Zmc2V0LCAma2V5LCAmYnVmLCAmcmVhZCkKKyAgaWYgKGdzdF9teGZfZGVtdXhfcHVsbF9rbHZfcGFja2V0IChkZW11eCwgZGVtdXgtPm9mZnNldCwgJmtleSwgJmJ1ZiwgJnJlYWQpCiAgICAgICAhPSBHU1RfRkxPV19PSykKICAgICByZXR1cm47Ci0gIG9mZnNldCArPSByZWFkOwogCiAgIGlmICghbXhmX2lzX3BhcnRpdGlvbl9wYWNrICgma2V5KSkgewogICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAgICAgcmV0dXJuOwogICB9CiAKLSAgZG8geworICBpZiAoZ3N0X214Zl9kZW11eF9oYW5kbGVfcGFydGl0aW9uX3BhY2sgKGRlbXV4LCAma2V5LCBidWYpICE9IEdTVF9GTE9XX09LKSB7CiAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKLSAgICBpZiAoZ3N0X214Zl9kZW11eF9wdWxsX2tsdl9wYWNrZXQgKGRlbXV4LCBvZmZzZXQsICZrZXksICZidWYsICZyZWFkKQorICAgIHJldHVybjsKKyAgfQorICBkZW11eC0+b2Zmc2V0ICs9IHJlYWQ7CisgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisKKyAgaWYgKGdzdF9teGZfZGVtdXhfcHVsbF9rbHZfcGFja2V0IChkZW11eCwgZGVtdXgtPm9mZnNldCwgJmtleSwgJmJ1ZiwgJnJlYWQpCisgICAgICAhPSBHU1RfRkxPV19PSykKKyAgICByZXR1cm47CisKKyAgd2hpbGUgKG14Zl9pc19maWxsICgma2V5KSkgeworICAgIGRlbXV4LT5vZmZzZXQgKz0gcmVhZDsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICAgIGlmIChnc3RfbXhmX2RlbXV4X3B1bGxfa2x2X3BhY2tldCAoZGVtdXgsIGRlbXV4LT5vZmZzZXQsICZrZXksICZidWYsICZyZWFkKQogICAgICAgICAhPSBHU1RfRkxPV19PSykKICAgICAgIHJldHVybjsKLSAgICBvZmZzZXQgKz0gcmVhZDsKICAgfQotICB3aGlsZSAobXhmX2lzX2ZpbGwgKCZrZXkpKTsKIAotICBpZiAobXhmX2lzX2luZGV4X3RhYmxlX3NlZ21lbnQgKCZrZXkpKSB7Ci0gICAgZ3N0X214Zl9kZW11eF9oYW5kbGVfaW5kZXhfdGFibGVfc2VnbWVudCAoZGVtdXgsICZrZXksIGJ1Ziwgb2Zmc2V0KTsKKyAgaWYgKCFteGZfaXNfaW5kZXhfdGFibGVfc2VnbWVudCAoJmtleSkKKyAgICAgICYmIGRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbi0+cGFydGl0aW9uLmhlYWRlcl9ieXRlX2NvdW50KSB7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgICBkZW11eC0+b2Zmc2V0ICs9IGRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbi0+cGFydGl0aW9uLmhlYWRlcl9ieXRlX2NvdW50OworICAgIGlmIChnc3RfbXhmX2RlbXV4X3B1bGxfa2x2X3BhY2tldCAoZGVtdXgsIGRlbXV4LT5vZmZzZXQsICZrZXksICZidWYsICZyZWFkKQorICAgICAgICAhPSBHU1RfRkxPV19PSykKKyAgICAgIHJldHVybjsKKyAgfQorCisgIHdoaWxlIChteGZfaXNfaW5kZXhfdGFibGVfc2VnbWVudCAoJmtleSkpIHsKKyAgICBnc3RfbXhmX2RlbXV4X2hhbmRsZV9pbmRleF90YWJsZV9zZWdtZW50IChkZW11eCwgJmtleSwgYnVmLCBkZW11eC0+b2Zmc2V0KTsKKyAgICBkZW11eC0+b2Zmc2V0ICs9IHJlYWQ7CisKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICAgIGlmIChnc3RfbXhmX2RlbXV4X3B1bGxfa2x2X3BhY2tldCAoZGVtdXgsIGRlbXV4LT5vZmZzZXQsICZrZXksICZidWYsICZyZWFkKQorICAgICAgICAhPSBHU1RfRkxPV19PSykKKyAgICAgIHJldHVybjsKKyAgfQorCisgIHdoaWxlIChteGZfaXNfZmlsbCAoJmtleSkpIHsKKyAgICBkZW11eC0+b2Zmc2V0ICs9IHJlYWQ7CisgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgICBpZiAoZ3N0X214Zl9kZW11eF9wdWxsX2tsdl9wYWNrZXQgKGRlbXV4LCBkZW11eC0+b2Zmc2V0LCAma2V5LCAmYnVmLCAmcmVhZCkKKyAgICAgICAgIT0gR1NUX0ZMT1dfT0spCisgICAgICByZXR1cm47CisgIH0KKworICBpZiAobXhmX2lzX2dlbmVyaWNfY29udGFpbmVyX3N5c3RlbV9pdGVtICgma2V5KSB8fAorICAgICAgbXhmX2lzX2dlbmVyaWNfY29udGFpbmVyX2Vzc2VuY2VfZWxlbWVudCAoJmtleSkgfHwKKyAgICAgIG14Zl9pc19hdmlkX2Vzc2VuY2VfY29udGFpbmVyX2Vzc2VuY2VfZWxlbWVudCAoJmtleSkpIHsKKyAgICBpZiAoZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uLT5lc3NlbmNlX2NvbnRhaW5lcl9vZmZzZXQgPT0gMCkKKyAgICAgIGRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbi0+ZXNzZW5jZV9jb250YWluZXJfb2Zmc2V0ID0KKyAgICAgICAgICBkZW11eC0+b2Zmc2V0IC0gZGVtdXgtPmN1cnJlbnRfcGFydGl0aW9uLT5wYXJ0aXRpb24udGhpc19wYXJ0aXRpb24gLQorICAgICAgICAgIGRlbXV4LT5ydW5faW47CiAgIH0KIAogICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwpAQCAtMjAwMSwxOSArMjA4OSw2IEBACiAgIHJldHVybiBHU1RfRkxPV19PSzsKIH0KIAotc3RhdGljIGdpbnQKLWNvbXBhcmVfaW5kZXhfdGFibGVfc2VnbWVudHMgKGdjb25zdHBvaW50ZXIgY29tcGFyZWUsIGdjb25zdHBvaW50ZXIgY29tcGFyZWQpCi17Ci0gIE1YRkluZGV4VGFibGVTZWdtZW50ICpjb21wYXJlZV9zZWdtZW50LCAqY29tcGFyZWRfc2VnbWVudDsKLQotICBjb21wYXJlZV9zZWdtZW50ID0gKE1YRkluZGV4VGFibGVTZWdtZW50ICopIGNvbXBhcmVlOwotICBjb21wYXJlZF9zZWdtZW50ID0gKE1YRkluZGV4VGFibGVTZWdtZW50ICopIGNvbXBhcmVkOwotCi0gIC8qIEZJWE1FIDogaXMgdGhhdCB0aGUgY29ycmVjdCBjb21wYXJpc29uID8gKi8KLSAgcmV0dXJuIGNvbXBhcmVlX3NlZ21lbnQtPmluZGV4X3N0YXJ0X3Bvc2l0aW9uIC0KLSAgICAgIGNvbXBhcmVkX3NlZ21lbnQtPmluZGV4X3N0YXJ0X3Bvc2l0aW9uOwotfQotCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X214Zl9kZW11eF9oYW5kbGVfaW5kZXhfdGFibGVfc2VnbWVudCAoR3N0TVhGRGVtdXggKiBkZW11eCwKICAgICBjb25zdCBNWEZVTCAqIGtleSwgR3N0QnVmZmVyICogYnVmZmVyLCBndWludDY0IG9mZnNldCkKQEAgLTIwMjEsMjEgKzIwOTYsMTUgQEAKICAgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZ21lbnQ7CiAgIEdzdE1hcEluZm8gbWFwOwogICBnYm9vbGVhbiByZXQ7Ci0gIEdMaXN0ICpsOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LAogICAgICAgIkhhbmRsaW5nIGluZGV4IHRhYmxlIHNlZ21lbnQgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCAiIGF0IG9mZnNldCAlIgogICAgICAgR19HVUlOVDY0X0ZPUk1BVCwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSwgb2Zmc2V0KTsKIAotICBpZiAoIWRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbi0+cHJpbWVyLm1hcHBpbmdzKSB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwgIkludmFsaWQgcHJpbWVyIHBhY2siKTsKLSAgfQotCiAgIHNlZ21lbnQgPSBnX25ldzAgKE1YRkluZGV4VGFibGVTZWdtZW50LCAxKTsKIAogICBnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmbWFwLCBHU1RfTUFQX1JFQUQpOwotICByZXQgPSBteGZfaW5kZXhfdGFibGVfc2VnbWVudF9wYXJzZSAoa2V5LCBzZWdtZW50LAotICAgICAgJmRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbi0+cHJpbWVyLCBtYXAuZGF0YSwgbWFwLnNpemUpOworICByZXQgPSBteGZfaW5kZXhfdGFibGVfc2VnbWVudF9wYXJzZSAoa2V5LCBzZWdtZW50LCBtYXAuZGF0YSwgbWFwLnNpemUpOwogICBnc3RfYnVmZmVyX3VubWFwIChidWZmZXIsICZtYXApOwogCiAgIGlmICghcmV0KSB7CkBAIC0yMDQzLDE4ICsyMTEyLDggQEAKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KIAotICBzZWdtZW50LT5zdHJlYW1fb2Zmc2V0ID0gb2Zmc2V0OwotICBsID0gZ19saXN0X2ZpbmRfY3VzdG9tIChkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50cywgc2VnbWVudCwKLSAgICAgIChHQ29tcGFyZUZ1bmMpIGNvbXBhcmVfaW5kZXhfdGFibGVfc2VnbWVudHMpOwotCi0gIC8qIFByZXZlbnQgZHVwbGljYXRlcyAqLwotICBpZiAobCA9PSBOVUxMKSB7Ci0gICAgZGVtdXgtPnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHMgPQotICAgICAgICBnX2xpc3RfcHJlcGVuZCAoZGVtdXgtPnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHMsIHNlZ21lbnQpOwotICB9IGVsc2UgewotICAgIG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3Jlc2V0IChzZWdtZW50KTsKLSAgICBnX2ZyZWUgKHNlZ21lbnQpOwotICB9CisgIGRlbXV4LT5wZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzID0KKyAgICAgIGdfbGlzdF9wcmVwZW5kIChkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50cywgc2VnbWVudCk7CiAKICAgcmV0dXJuIEdTVF9GTE9XX09LOwogfQpAQCAtMjE2Niw2ICsyMjI1LDcgQEAKICAgZ3VpbnQ2NCBvbGRfb2Zmc2V0ID0gZGVtdXgtPm9mZnNldDsKICAgTVhGVUwga2V5OwogICBHc3RNYXBJbmZvIG1hcDsKKyAgR3N0Rmxvd1JldHVybiBmbG93X3JldDsKIAogICBpZiAoIWdzdF9wYWRfcGVlcl9xdWVyeV9kdXJhdGlvbiAoZGVtdXgtPnNpbmtwYWQsIGZtdCwgJmZpbGVzaXplKSB8fAogICAgICAgZm10ICE9IEdTVF9GT1JNQVRfQllURVMgfHwgZmlsZXNpemUgPT0gLTEpIHsKQEAgLTIyMTksOSArMjI3OSwxNCBAQAogICAgIHJldHVybjsKICAgfQogCi0gIGdzdF9teGZfZGVtdXhfaGFuZGxlX3JhbmRvbV9pbmRleF9wYWNrIChkZW11eCwgJmtleSwgYnVmZmVyKTsKKyAgZmxvd19yZXQgPSBnc3RfbXhmX2RlbXV4X2hhbmRsZV9yYW5kb21faW5kZXhfcGFjayAoZGVtdXgsICZrZXksIGJ1ZmZlcik7CiAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAgIGRlbXV4LT5vZmZzZXQgPSBvbGRfb2Zmc2V0OworCisgIGlmIChmbG93X3JldCA9PSBHU1RfRkxPV19PSyAmJiAhZGVtdXgtPmluZGV4X3RhYmxlX3NlZ21lbnRzX2NvbGxlY3RlZCkgeworICAgIGNvbGxlY3RfaW5kZXhfdGFibGVfc2VnbWVudHMgKGRlbXV4KTsKKyAgICBkZW11eC0+aW5kZXhfdGFibGVfc2VnbWVudHNfY29sbGVjdGVkID0gVFJVRTsKKyAgfQogfQogCiBzdGF0aWMgdm9pZApAQCAtMjQ2MSw2ICsyNTI2LDEyIEBACiAgICAgICAgIGJ1ZmZlciwgcGVlayk7CiAgIH0gZWxzZSBpZiAobXhmX2lzX3JhbmRvbV9pbmRleF9wYWNrIChrZXkpKSB7CiAgICAgcmV0ID0gZ3N0X214Zl9kZW11eF9oYW5kbGVfcmFuZG9tX2luZGV4X3BhY2sgKGRlbXV4LCBrZXksIGJ1ZmZlcik7CisKKyAgICBpZiAocmV0ID09IEdTVF9GTE9XX09LICYmIGRlbXV4LT5yYW5kb21fYWNjZXNzCisgICAgICAgICYmICFkZW11eC0+aW5kZXhfdGFibGVfc2VnbWVudHNfY29sbGVjdGVkKSB7CisgICAgICBjb2xsZWN0X2luZGV4X3RhYmxlX3NlZ21lbnRzIChkZW11eCk7CisgICAgICBkZW11eC0+aW5kZXhfdGFibGVfc2VnbWVudHNfY29sbGVjdGVkID0gVFJVRTsKKyAgICB9CiAgIH0gZWxzZSBpZiAobXhmX2lzX2luZGV4X3RhYmxlX3NlZ21lbnQgKGtleSkpIHsKICAgICByZXQgPQogICAgICAgICBnc3RfbXhmX2RlbXV4X2hhbmRsZV9pbmRleF90YWJsZV9zZWdtZW50IChkZW11eCwga2V5LCBidWZmZXIsCkBAIC0yNTI0LDI4ICsyNTk1LDY2IEBACiB9CiAKIHN0YXRpYyBndWludDY0Ci1nZXRfb2Zmc2V0X2Zyb21faW5kZXhfdGFibGVfc2VnbWVudHMgKEdzdE1YRkRlbXV4ICogZGVtdXgsIGdpbnQ2NCBwb3NpdGlvbiwKLSAgICBnaW50NjQgKiBpbmRleF9zdGFydF9wb3NpdGlvbikKK2ZpbmRfb2Zmc2V0IChHQXJyYXkgKiBvZmZzZXRzLCBnaW50NjQgKiBwb3NpdGlvbiwgZ2Jvb2xlYW4ga2V5ZnJhbWUpCiB7Ci0gIEdMaXN0ICpsOwotICBnaW50NjQgc3RhcnQsIGVuZDsKLSAgZ2Jvb2xlYW4gcmV0dXJuX29mZnNldCA9IEZBTFNFOworICBHc3RNWEZEZW11eEluZGV4ICppZHg7CisgIGd1aW50NjQgY3VycmVudF9vZmZzZXQgPSAtMTsKKyAgZ2ludDY0IGN1cnJlbnRfcG9zaXRpb24gPSAqcG9zaXRpb247CiAKLSAgZm9yIChsID0gZGVtdXgtPnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHM7IGwgIT0gTlVMTDsgbCA9IGwtPm5leHQpIHsKLSAgICBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnbWVudCA9IChNWEZJbmRleFRhYmxlU2VnbWVudCAqKSBsLT5kYXRhOwotICAgIHN0YXJ0ID0gc2VnbWVudC0+aW5kZXhfc3RhcnRfcG9zaXRpb247Ci0gICAgZW5kID0gc3RhcnQgKyBzZWdtZW50LT5pbmRleF9kdXJhdGlvbjsKKyAgaWYgKCFvZmZzZXRzIHx8IG9mZnNldHMtPmxlbiA8PSAqcG9zaXRpb24pCisgICAgcmV0dXJuIC0xOwogCi0gICAgaWYgKHJldHVybl9vZmZzZXQpCi0gICAgICByZXR1cm4gc2VnbWVudC0+c3RyZWFtX29mZnNldDsKLQotICAgIGlmIChzdGFydCA8PSBwb3NpdGlvbiAmJiBwb3NpdGlvbiA8IGVuZCkgewotICAgICAgKmluZGV4X3N0YXJ0X3Bvc2l0aW9uID0gc2VnbWVudC0+aW5kZXhfc3RhcnRfcG9zaXRpb247Ci0gICAgICByZXR1cm5fb2Zmc2V0ID0gVFJVRTsKKyAgaWR4ID0gJmdfYXJyYXlfaW5kZXggKG9mZnNldHMsIEdzdE1YRkRlbXV4SW5kZXgsICpwb3NpdGlvbik7CisgIGlmIChpZHgtPm9mZnNldCAhPSAwICYmICgha2V5ZnJhbWUgfHwgaWR4LT5rZXlmcmFtZSkpIHsKKyAgICBjdXJyZW50X29mZnNldCA9IGlkeC0+b2Zmc2V0OworICB9IGVsc2UgaWYgKGlkeC0+b2Zmc2V0ICE9IDApIHsKKyAgICBjdXJyZW50X3Bvc2l0aW9uLS07CisgICAgd2hpbGUgKGN1cnJlbnRfcG9zaXRpb24gPj0gMCkgeworICAgICAgaWR4ID0gJmdfYXJyYXlfaW5kZXggKG9mZnNldHMsIEdzdE1YRkRlbXV4SW5kZXgsIGN1cnJlbnRfcG9zaXRpb24pOworICAgICAgaWYgKGlkeC0+b2Zmc2V0ID09IDApIHsKKyAgICAgICAgYnJlYWs7CisgICAgICB9IGVsc2UgaWYgKCFpZHgtPmtleWZyYW1lKSB7CisgICAgICAgIGN1cnJlbnRfcG9zaXRpb24tLTsKKyAgICAgICAgY29udGludWU7CisgICAgICB9IGVsc2UgeworICAgICAgICBjdXJyZW50X29mZnNldCA9IGlkeC0+b2Zmc2V0OworICAgICAgICBicmVhazsKKyAgICAgIH0KICAgICB9CiAgIH0KIAotICByZXR1cm4gMDsKKyAgaWYgKGN1cnJlbnRfb2Zmc2V0ID09IC0xKQorICAgIHJldHVybiAtMTsKKworICAqcG9zaXRpb24gPSBjdXJyZW50X3Bvc2l0aW9uOworICByZXR1cm4gY3VycmVudF9vZmZzZXQ7Cit9CisKK3N0YXRpYyBndWludDY0CitmaW5kX2Nsb3Nlc3Rfb2Zmc2V0IChHQXJyYXkgKiBvZmZzZXRzLCBnaW50NjQgKiBwb3NpdGlvbiwgZ2Jvb2xlYW4ga2V5ZnJhbWUpCit7CisgIEdzdE1YRkRlbXV4SW5kZXggKmlkeDsKKyAgZ2ludDY0IGN1cnJlbnRfcG9zaXRpb24gPSAqcG9zaXRpb247CisKKyAgaWYgKCFvZmZzZXRzIHx8IG9mZnNldHMtPmxlbiA9PSAwKQorICAgIHJldHVybiAtMTsKKworICBjdXJyZW50X3Bvc2l0aW9uID0gTUlOIChjdXJyZW50X3Bvc2l0aW9uLCBvZmZzZXRzLT5sZW4gLSAxKTsKKworICBpZHggPSAmZ19hcnJheV9pbmRleCAob2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwgY3VycmVudF9wb3NpdGlvbik7CisgIHdoaWxlIChpZHgtPm9mZnNldCA9PSAwIHx8IChrZXlmcmFtZSAmJiAhaWR4LT5rZXlmcmFtZSkpIHsKKyAgICBjdXJyZW50X3Bvc2l0aW9uLS07CisgICAgaWYgKGN1cnJlbnRfcG9zaXRpb24gPCAwKQorICAgICAgYnJlYWs7CisgICAgaWR4ID0gJmdfYXJyYXlfaW5kZXggKG9mZnNldHMsIEdzdE1YRkRlbXV4SW5kZXgsIGN1cnJlbnRfcG9zaXRpb24pOworICB9CisKKyAgaWYgKGlkeC0+b2Zmc2V0ICE9IDAgJiYgKCFrZXlmcmFtZSB8fCBpZHgtPmtleWZyYW1lKSkgeworICAgICpwb3NpdGlvbiA9IGN1cnJlbnRfcG9zaXRpb247CisgICAgcmV0dXJuIGlkeC0+b2Zmc2V0OworICB9CisKKyAgcmV0dXJuIC0xOwogfQogCiBzdGF0aWMgZ3VpbnQ2NApAQCAtMjU1NiwxMSArMjY2NSwyOCBAQAogICBndWludDY0IG9sZF9vZmZzZXQgPSBkZW11eC0+b2Zmc2V0OwogICBHc3RNWEZEZW11eFBhcnRpdGlvbiAqb2xkX3BhcnRpdGlvbiA9IGRlbXV4LT5jdXJyZW50X3BhcnRpdGlvbjsKICAgZ2ludCBpOworICBndWludDY0IG9mZnNldDsKKyAgZ2ludDY0IHJlcXVlc3RlZF9wb3NpdGlvbiA9ICpwb3NpdGlvbjsKKyAgR3N0TVhGRGVtdXhJbmRleFRhYmxlICppbmRleF90YWJsZSA9IE5VTEw7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJUcnlpbmcgdG8gZmluZCBlc3NlbmNlIGVsZW1lbnQgJSIgR19HSU5UNjRfRk9STUFUCiAgICAgICAiIG9mIHRyYWNrICV1IHdpdGggYm9keV9zaWQgJXUgKGtleWZyYW1lICVkKSIsICpwb3NpdGlvbiwKICAgICAgIGV0cmFjay0+dHJhY2tfbnVtYmVyLCBldHJhY2stPmJvZHlfc2lkLCBrZXlmcmFtZSk7CiAKKyAgaWYgKGRlbXV4LT5pbmRleF90YWJsZXMpIHsKKyAgICBHTGlzdCAqbDsKKworICAgIGZvciAobCA9IGRlbXV4LT5pbmRleF90YWJsZXM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgICBHc3RNWEZEZW11eEluZGV4VGFibGUgKnRtcCA9IGwtPmRhdGE7CisKKyAgICAgIGlmICh0bXAtPmJvZHlfc2lkID09IGV0cmFjay0+Ym9keV9zaWQKKyAgICAgICAgICAmJiB0bXAtPmluZGV4X3NpZCA9PSBldHJhY2stPmluZGV4X3NpZCkgeworICAgICAgICBpbmRleF90YWJsZSA9IHRtcDsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfQorICB9CisKIGZyb21faW5kZXg6CiAKICAgaWYgKGV0cmFjay0+ZHVyYXRpb24gPiAwICYmICpwb3NpdGlvbiA+PSBldHJhY2stPmR1cmF0aW9uKSB7CkBAIC0yNTY5LDg0ICsyNjk1LDY2IEBACiAgIH0KIAogICAvKiBGaXJzdCB0cnkgdG8gZmluZCBhbiBvZmZzZXQgaW4gb3VyIGluZGV4ICovCi0gIGlmIChldHJhY2stPm9mZnNldHMgJiYgZXRyYWNrLT5vZmZzZXRzLT5sZW4gPiAqcG9zaXRpb24pIHsKLSAgICBHc3RNWEZEZW11eEluZGV4ICppZHggPQotICAgICAgICAmZ19hcnJheV9pbmRleCAoZXRyYWNrLT5vZmZzZXRzLCBHc3RNWEZEZW11eEluZGV4LCAqcG9zaXRpb24pOwotICAgIGd1aW50NjQgY3VycmVudF9vZmZzZXQgPSAtMTsKLSAgICBnaW50NjQgY3VycmVudF9wb3NpdGlvbiA9ICpwb3NpdGlvbjsKLQotICAgIGlmIChpZHgtPm9mZnNldCAhPSAwICYmICgha2V5ZnJhbWUgfHwgaWR4LT5rZXlmcmFtZSkpIHsKLSAgICAgIGN1cnJlbnRfb2Zmc2V0ID0gaWR4LT5vZmZzZXQ7Ci0gICAgfSBlbHNlIGlmIChpZHgtPm9mZnNldCAhPSAwKSB7Ci0gICAgICBjdXJyZW50X3Bvc2l0aW9uLS07Ci0gICAgICB3aGlsZSAoY3VycmVudF9wb3NpdGlvbiA+PSAwKSB7Ci0gICAgICAgIGlkeCA9Ci0gICAgICAgICAgICAmZ19hcnJheV9pbmRleCAoZXRyYWNrLT5vZmZzZXRzLCBHc3RNWEZEZW11eEluZGV4LAotICAgICAgICAgICAgY3VycmVudF9wb3NpdGlvbik7Ci0gICAgICAgIGlmIChpZHgtPm9mZnNldCA9PSAwKSB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0gZWxzZSBpZiAoIWlkeC0+a2V5ZnJhbWUpIHsKLSAgICAgICAgICBjdXJyZW50X3Bvc2l0aW9uLS07Ci0gICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgY3VycmVudF9vZmZzZXQgPSBpZHgtPm9mZnNldDsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIGlmIChjdXJyZW50X29mZnNldCAhPSAtMSkgewotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsICJGb3VuZCBpbiBpbmRleCBhdCBvZmZzZXQgJSIgR19HVUlOVDY0X0ZPUk1BVCwKLSAgICAgICAgICBjdXJyZW50X29mZnNldCk7Ci0gICAgICAqcG9zaXRpb24gPSBjdXJyZW50X3Bvc2l0aW9uOwotICAgICAgcmV0dXJuIGN1cnJlbnRfb2Zmc2V0OwotICAgIH0KKyAgb2Zmc2V0ID0gZmluZF9vZmZzZXQgKGV0cmFjay0+b2Zmc2V0cywgcG9zaXRpb24sIGtleWZyYW1lKTsKKyAgaWYgKG9mZnNldCAhPSAtMSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAiRm91bmQgZWRpdCB1bml0ICUiIEdfR0lOVDY0X0ZPUk1BVCAiIGZvciAlIiBHX0dJTlQ2NF9GT1JNQVQKKyAgICAgICAgIiBpbiBnZW5lcmF0ZWQgaW5kZXggYXQgb2Zmc2V0ICUiIEdfR1VJTlQ2NF9GT1JNQVQsICpwb3NpdGlvbiwKKyAgICAgICAgcmVxdWVzdGVkX3Bvc2l0aW9uLCBvZmZzZXQpOworICAgIHJldHVybiBvZmZzZXQ7CiAgIH0KIAogICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwgIk5vdCBmb3VuZCBpbiBpbmRleCIpOwogICBpZiAoIWRlbXV4LT5yYW5kb21fYWNjZXNzKSB7Ci0gICAgZ3VpbnQ2NCBuZXdfb2Zmc2V0ID0gLTE7Ci0gICAgZ2ludDY0IG5ld19wb3NpdGlvbiA9IC0xOwotCi0gICAgaWYgKGV0cmFjay0+b2Zmc2V0cyAmJiBldHJhY2stPm9mZnNldHMtPmxlbikgewotICAgICAgZm9yIChpID0gZXRyYWNrLT5vZmZzZXRzLT5sZW4gLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBHc3RNWEZEZW11eEluZGV4ICppZHggPQotICAgICAgICAgICAgJmdfYXJyYXlfaW5kZXggKGV0cmFjay0+b2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwgaSk7Ci0KLSAgICAgICAgaWYgKGlkeC0+b2Zmc2V0ICE9IDAgJiYgaSA8PSAqcG9zaXRpb24gJiYgKCFrZXlmcmFtZSB8fCBpZHgtPmtleWZyYW1lKSkgewotICAgICAgICAgIG5ld19vZmZzZXQgPSBpZHgtPm9mZnNldDsKLSAgICAgICAgICBuZXdfcG9zaXRpb24gPSBpOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9CisgICAgb2Zmc2V0ID0gZmluZF9jbG9zZXN0X29mZnNldCAoZXRyYWNrLT5vZmZzZXRzLCBwb3NpdGlvbiwga2V5ZnJhbWUpOworICAgIGlmIChvZmZzZXQgIT0gLTEpIHsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICJTdGFydGluZyB3aXRoIGVkaXQgdW5pdCAlIiBHX0dJTlQ2NF9GT1JNQVQgIiBmb3IgJSIgR19HSU5UNjRfRk9STUFUCisgICAgICAgICAgIiBpbiBnZW5lcmF0ZWQgaW5kZXggYXQgb2Zmc2V0ICUiIEdfR1VJTlQ2NF9GT1JNQVQsICpwb3NpdGlvbiwKKyAgICAgICAgICByZXF1ZXN0ZWRfcG9zaXRpb24sIG9mZnNldCk7CisgICAgICByZXR1cm4gb2Zmc2V0OwogICAgIH0KIAotICAgIGlmIChuZXdfb2Zmc2V0ICE9IC0xKSB7Ci0gICAgICAqcG9zaXRpb24gPSBuZXdfcG9zaXRpb247Ci0gICAgICByZXR1cm4gbmV3X29mZnNldDsKKyAgICBpZiAoaW5kZXhfdGFibGUpIHsKKyAgICAgIG9mZnNldCA9IGZpbmRfY2xvc2VzdF9vZmZzZXQgKGluZGV4X3RhYmxlLT5vZmZzZXRzLCBwb3NpdGlvbiwga2V5ZnJhbWUpOworICAgICAgaWYgKG9mZnNldCAhPSAtMSkgeworICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChkZW11eCwKKyAgICAgICAgICAgICJTdGFydGluZyB3aXRoIGVkaXQgdW5pdCAlIiBHX0dJTlQ2NF9GT1JNQVQgIiBmb3IgJSIgR19HSU5UNjRfRk9STUFUCisgICAgICAgICAgICAiIGluIGluZGV4IGF0IG9mZnNldCAlIiBHX0dVSU5UNjRfRk9STUFULCAqcG9zaXRpb24sCisgICAgICAgICAgICByZXF1ZXN0ZWRfcG9zaXRpb24sIG9mZnNldCk7CisgICAgICAgIHJldHVybiBvZmZzZXQ7CisgICAgICB9CiAgICAgfQogICB9IGVsc2UgaWYgKGRlbXV4LT5yYW5kb21fYWNjZXNzKSB7Ci0gICAgZ2ludDY0IGluZGV4X3N0YXJ0X3Bvc2l0aW9uID0gLTE7Ci0gICAgZ3VpbnQ2NCBvZmZzZXQ7CisgICAgZ2ludDY0IGluZGV4X3N0YXJ0X3Bvc2l0aW9uID0gKnBvc2l0aW9uOwogCiAgICAgZGVtdXgtPm9mZnNldCA9IGRlbXV4LT5ydW5faW47Ci0gICAgaWYgKGV0cmFjay0+b2Zmc2V0cyAmJiBldHJhY2stPm9mZnNldHMtPmxlbikgewotICAgICAgZm9yIChpID0gZXRyYWNrLT5vZmZzZXRzLT5sZW4gLSAxOyBpID49IDA7IGktLSkgewotICAgICAgICBHc3RNWEZEZW11eEluZGV4ICppZHggPQotICAgICAgICAgICAgJmdfYXJyYXlfaW5kZXggKGV0cmFjay0+b2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwgaSk7Ci0KLSAgICAgICAgaWYgKGlkeC0+b2Zmc2V0ICE9IDAgJiYgaSA8PSAqcG9zaXRpb24pIHsKLSAgICAgICAgICBkZW11eC0+b2Zmc2V0ID0gaWR4LT5vZmZzZXQgKyBkZW11eC0+cnVuX2luOwotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgfQogCiAgICAgb2Zmc2V0ID0KLSAgICAgICAgZ2V0X29mZnNldF9mcm9tX2luZGV4X3RhYmxlX3NlZ21lbnRzIChkZW11eCwgKnBvc2l0aW9uLAotICAgICAgICAmaW5kZXhfc3RhcnRfcG9zaXRpb24pOworICAgICAgICBmaW5kX2Nsb3Nlc3Rfb2Zmc2V0IChldHJhY2stPm9mZnNldHMsICZpbmRleF9zdGFydF9wb3NpdGlvbiwgRkFMU0UpOworICAgIGlmIChvZmZzZXQgIT0gLTEpIHsKKyAgICAgIGRlbXV4LT5vZmZzZXQgPSBvZmZzZXQgKyBkZW11eC0+cnVuX2luOworICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgIlN0YXJ0aW5nIHdpdGggZWRpdCB1bml0ICUiIEdfR0lOVDY0X0ZPUk1BVCAiIGZvciAlIiBHX0dJTlQ2NF9GT1JNQVQKKyAgICAgICAgICAiIGluIGdlbmVyYXRlZCBpbmRleCBhdCBvZmZzZXQgJSIgR19HVUlOVDY0X0ZPUk1BVCwKKyAgICAgICAgICBpbmRleF9zdGFydF9wb3NpdGlvbiwgcmVxdWVzdGVkX3Bvc2l0aW9uLCBvZmZzZXQpOworICAgIH0gZWxzZSB7CisgICAgICBpbmRleF9zdGFydF9wb3NpdGlvbiA9IC0xOworICAgIH0KIAotICAgIGRlbXV4LT5vZmZzZXQgPSBvZmZzZXQ7CisgICAgaWYgKGluZGV4X3RhYmxlKSB7CisgICAgICBnaW50NjQgdG1wX3Bvc2l0aW9uID0gKnBvc2l0aW9uOworCisgICAgICBvZmZzZXQgPSBmaW5kX2Nsb3Nlc3Rfb2Zmc2V0IChpbmRleF90YWJsZS0+b2Zmc2V0cywgJnRtcF9wb3NpdGlvbiwgVFJVRSk7CisgICAgICBpZiAob2Zmc2V0ICE9IC0xICYmIHRtcF9wb3NpdGlvbiA+IGluZGV4X3N0YXJ0X3Bvc2l0aW9uKSB7CisgICAgICAgIGRlbXV4LT5vZmZzZXQgPSBvZmZzZXQgKyBkZW11eC0+cnVuX2luOworICAgICAgICBpbmRleF9zdGFydF9wb3NpdGlvbiA9IHRtcF9wb3NpdGlvbjsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVtdXgsCisgICAgICAgICAgICAiU3RhcnRpbmcgd2l0aCBlZGl0IHVuaXQgJSIgR19HSU5UNjRfRk9STUFUICIgZm9yICUiIEdfR0lOVDY0X0ZPUk1BVAorICAgICAgICAgICAgIiBpbiBpbmRleCBhdCBvZmZzZXQgJSIgR19HVUlOVDY0X0ZPUk1BVCwgaW5kZXhfc3RhcnRfcG9zaXRpb24sCisgICAgICAgICAgICByZXF1ZXN0ZWRfcG9zaXRpb24sIG9mZnNldCk7CisgICAgICB9CisgICAgfQogCiAgICAgZ3N0X214Zl9kZW11eF9zZXRfcGFydGl0aW9uX2Zvcl9vZmZzZXQgKGRlbXV4LCBkZW11eC0+b2Zmc2V0KTsKIApAQCAtMjY1NCw3ICsyNzYyLDcgQEAKICAgICAgIEdzdE1YRkRlbXV4RXNzZW5jZVRyYWNrICp0ID0KICAgICAgICAgICAmZ19hcnJheV9pbmRleCAoZGVtdXgtPmVzc2VuY2VfdHJhY2tzLCBHc3RNWEZEZW11eEVzc2VuY2VUcmFjaywgaSk7CiAKLSAgICAgIGlmIChpbmRleF9zdGFydF9wb3NpdGlvbiAhPSAtMSkKKyAgICAgIGlmIChpbmRleF9zdGFydF9wb3NpdGlvbiAhPSAtMSAmJiB0ID09IGV0cmFjaykKICAgICAgICAgdC0+cG9zaXRpb24gPSBpbmRleF9zdGFydF9wb3NpdGlvbjsKICAgICAgIGVsc2UKICAgICAgICAgdC0+cG9zaXRpb24gPSAoZGVtdXgtPm9mZnNldCA9PSBkZW11eC0+cnVuX2luKSA/IDAgOiAtMTsKQEAgLTM0MDAsMTQgKzM1MDgsMTUgQEAKIHN0YXRpYyB2b2lkCiBjb2xsZWN0X2luZGV4X3RhYmxlX3NlZ21lbnRzIChHc3RNWEZEZW11eCAqIGRlbXV4KQogewotICBndWludCBpOwogICBHTGlzdCAqbDsKKyAgZ3VpbnQgaTsKKyAgZ3VpbnQ2NCBvbGRfb2Zmc2V0ID0gZGVtdXgtPm9mZnNldDsKKyAgR3N0TVhGRGVtdXhQYXJ0aXRpb24gKm9sZF9wYXJ0aXRpb24gPSBkZW11eC0+Y3VycmVudF9wYXJ0aXRpb247CiAKICAgaWYgKCFkZW11eC0+cmFuZG9tX2luZGV4X3BhY2spCiAgICAgcmV0dXJuOwogCiAgIGZvciAoaSA9IDA7IGkgPCBkZW11eC0+cmFuZG9tX2luZGV4X3BhY2stPmxlbjsgaSsrKSB7Ci0gICAgR3N0TVhGRGVtdXhQYXJ0aXRpb24gKnAgPSBOVUxMOwogICAgIE1YRlJhbmRvbUluZGV4UGFja0VudHJ5ICplID0KICAgICAgICAgJmdfYXJyYXlfaW5kZXggKGRlbXV4LT5yYW5kb21faW5kZXhfcGFjaywgTVhGUmFuZG9tSW5kZXhQYWNrRW50cnksIGkpOwogCkBAIC0zNDE2LDE5ICszNTI1LDkyIEBACiAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgZm9yIChsID0gZGVtdXgtPnBhcnRpdGlvbnM7IGw7IGwgPSBsLT5uZXh0KSB7Ci0gICAgICBHc3RNWEZEZW11eFBhcnRpdGlvbiAqdG1wID0gbC0+ZGF0YTsKKyAgICBkZW11eC0+b2Zmc2V0ID0gZS0+b2Zmc2V0OworICAgIHJlYWRfcGFydGl0aW9uX2hlYWRlciAoZGVtdXgpOworICB9CiAKLSAgICAgIGlmICh0bXAtPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbiArIGRlbXV4LT5ydW5faW4gPT0gZS0+b2Zmc2V0KSB7Ci0gICAgICAgIHAgPSB0bXA7CisgIGRlbXV4LT5vZmZzZXQgPSBvbGRfb2Zmc2V0OworICBkZW11eC0+Y3VycmVudF9wYXJ0aXRpb24gPSBvbGRfcGFydGl0aW9uOworCisgIGZvciAobCA9IGRlbXV4LT5wZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzOyBsOyBsID0gbC0+bmV4dCkgeworICAgIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWdtZW50ID0gbC0+ZGF0YTsKKyAgICBHc3RNWEZEZW11eEluZGV4VGFibGUgKnQgPSBOVUxMOworICAgIEdMaXN0ICprOworICAgIGd1aW50NjQgc3RhcnQsIGVuZDsKKworICAgIGZvciAoayA9IGRlbXV4LT5pbmRleF90YWJsZXM7IGs7IGsgPSBrLT5uZXh0KSB7CisgICAgICBHc3RNWEZEZW11eEluZGV4VGFibGUgKnRtcCA9IGstPmRhdGE7CisKKyAgICAgIGlmICh0bXAtPmJvZHlfc2lkID09IHNlZ21lbnQtPmJvZHlfc2lkCisgICAgICAgICAgJiYgdG1wLT5pbmRleF9zaWQgPT0gc2VnbWVudC0+aW5kZXhfc2lkKSB7CisgICAgICAgIHQgPSB0bXA7CiAgICAgICAgIGJyZWFrOwogICAgICAgfQogICAgIH0KIAotICAgIGlmIChwKSB7Ci0gICAgICByZWFkX3BhcnRpdGlvbl9oZWFkZXIgKGRlbXV4LCBwLT5wYXJ0aXRpb24udGhpc19wYXJ0aXRpb24pOworICAgIGlmICghdCkgeworICAgICAgdCA9IGdfbmV3MCAoR3N0TVhGRGVtdXhJbmRleFRhYmxlLCAxKTsKKyAgICAgIHQtPmJvZHlfc2lkID0gc2VnbWVudC0+Ym9keV9zaWQ7CisgICAgICB0LT5pbmRleF9zaWQgPSBzZWdtZW50LT5pbmRleF9zaWQ7CisgICAgICB0LT5vZmZzZXRzID0gZ19hcnJheV9uZXcgKEZBTFNFLCBUUlVFLCBzaXplb2YgKEdzdE1YRkRlbXV4SW5kZXgpKTsKKyAgICAgIGRlbXV4LT5pbmRleF90YWJsZXMgPSBnX2xpc3RfcHJlcGVuZCAoZGVtdXgtPmluZGV4X3RhYmxlcywgdCk7CisgICAgfQorCisgICAgc3RhcnQgPSBzZWdtZW50LT5pbmRleF9zdGFydF9wb3NpdGlvbjsKKyAgICBlbmQgPSBzdGFydCArIHNlZ21lbnQtPmluZGV4X2R1cmF0aW9uOworCisgICAgaWYgKHQtPm9mZnNldHMtPmxlbiA8IGVuZCkKKyAgICAgIGdfYXJyYXlfc2V0X3NpemUgKHQtPm9mZnNldHMsIGVuZCk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzOyBpKyspIHsKKyAgICAgIEdzdE1YRkRlbXV4SW5kZXggKmluZGV4ID0KKyAgICAgICAgICAmZ19hcnJheV9pbmRleCAodC0+b2Zmc2V0cywgR3N0TVhGRGVtdXhJbmRleCwgc3RhcnQgKyBpKTsKKyAgICAgIGd1aW50NjQgb2Zmc2V0ID0gc2VnbWVudC0+aW5kZXhfZW50cmllc1tpXS5zdHJlYW1fb2Zmc2V0OworICAgICAgR0xpc3QgKm07CisgICAgICBHc3RNWEZEZW11eFBhcnRpdGlvbiAqb2Zmc2V0X3BhcnRpdGlvbiA9IE5VTEwsICpuZXh0X3BhcnRpdGlvbiA9IE5VTEw7CisKKyAgICAgIGZvciAobSA9IGRlbXV4LT5wYXJ0aXRpb25zOyBtOyBtID0gbS0+bmV4dCkgeworICAgICAgICBHc3RNWEZEZW11eFBhcnRpdGlvbiAqcGFydGl0aW9uID0gbS0+ZGF0YTsKKworICAgICAgICBpZiAoIW5leHRfcGFydGl0aW9uICYmIG9mZnNldF9wYXJ0aXRpb24pCisgICAgICAgICAgbmV4dF9wYXJ0aXRpb24gPSBwYXJ0aXRpb247CisKKyAgICAgICAgaWYgKHBhcnRpdGlvbi0+cGFydGl0aW9uLmJvZHlfc2lkICE9IHQtPmJvZHlfc2lkKQorICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICBpZiAocGFydGl0aW9uLT5wYXJ0aXRpb24uYm9keV9vZmZzZXQgPiBvZmZzZXQpCisgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgb2Zmc2V0X3BhcnRpdGlvbiA9IHBhcnRpdGlvbjsKKyAgICAgICAgbmV4dF9wYXJ0aXRpb24gPSBOVUxMOworICAgICAgfQorCisgICAgICBpZiAob2Zmc2V0X3BhcnRpdGlvbiAmJiBvZmZzZXQgPj0gb2Zmc2V0X3BhcnRpdGlvbi0+cGFydGl0aW9uLmJvZHlfb2Zmc2V0CisgICAgICAgICAgJiYgKG9mZnNldCAtIG9mZnNldF9wYXJ0aXRpb24tPnBhcnRpdGlvbi5ib2R5X29mZnNldCkpIHsKKyAgICAgICAgb2Zmc2V0ID0KKyAgICAgICAgICAgIG9mZnNldF9wYXJ0aXRpb24tPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbiArCisgICAgICAgICAgICBvZmZzZXRfcGFydGl0aW9uLT5lc3NlbmNlX2NvbnRhaW5lcl9vZmZzZXQgKyAob2Zmc2V0IC0KKyAgICAgICAgICAgIG9mZnNldF9wYXJ0aXRpb24tPnBhcnRpdGlvbi5ib2R5X29mZnNldCk7CisKKyAgICAgICAgaWYgKG5leHRfcGFydGl0aW9uCisgICAgICAgICAgICAmJiBvZmZzZXQgPj0gbmV4dF9wYXJ0aXRpb24tPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbikgeworICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRlbXV4LAorICAgICAgICAgICAgICAiSW52YWxpZCBpbmRleCB0YWJsZSBzZWdtZW50IGdvaW5nIGludG8gbmV4dCB1bnJlbGF0ZWQgcGFydGl0aW9uIik7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgaW5kZXgtPm9mZnNldCA9IG9mZnNldDsKKyAgICAgICAgICBpbmRleC0+a2V5ZnJhbWUgPSAhICEoc2VnbWVudC0+aW5kZXhfZW50cmllc1tpXS5mbGFncyAmIDB4ODApCisgICAgICAgICAgICAgIHx8IChzZWdtZW50LT5pbmRleF9lbnRyaWVzW2ldLmtleV9mcmFtZV9vZmZzZXQgPT0gMCk7CisgICAgICAgIH0KKyAgICAgIH0KICAgICB9CiAgIH0KKworICBmb3IgKGwgPSBkZW11eC0+cGVuZGluZ19pbmRleF90YWJsZV9zZWdtZW50czsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBNWEZJbmRleFRhYmxlU2VnbWVudCAqcyA9IGwtPmRhdGE7CisgICAgbXhmX2luZGV4X3RhYmxlX3NlZ21lbnRfcmVzZXQgKHMpOworICAgIGdfZnJlZSAocyk7CisgIH0KKyAgZ19saXN0X2ZyZWUgKGRlbXV4LT5wZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzKTsKKyAgZGVtdXgtPnBlbmRpbmdfaW5kZXhfdGFibGVfc2VnbWVudHMgPSBOVUxMOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTM5NDUsNiArNDEyNyw5IEBACiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZW11eCwKICAgICAgICAgICAgICAgIlNlZWsgdG8gcmVtYWluaW5nIHBhcnQgb2YgdGhlIGZpbGUgZmFpbGVkIik7CisgICAgICAgICAgcC0+ZW9zID0gVFJVRTsKKyAgICAgICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9QQURfQ0FTVCAocCksIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKKyAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgfQogICAgICAgfQogCmRpZmYgLS1naXQgYS9nc3QvbXhmL214ZmRlbXV4LmggYi9nc3QvbXhmL214ZmRlbXV4LmgKaW5kZXggMzMyNDA5My4uYjRkNzI0MiAxMDA2NDQKLS0tIGEvZ3N0L214Zi9teGZkZW11eC5oCisrKyBiL2dzdC9teGYvbXhmZGVtdXguaApAQCAtNjUsNiArNjUsNyBAQAogdHlwZWRlZiBzdHJ1Y3QKIHsKICAgZ3VpbnQzMiBib2R5X3NpZDsKKyAgZ3VpbnQzMiBpbmRleF9zaWQ7CiAgIGd1aW50MzIgdHJhY2tfbnVtYmVyOwogCiAgIGd1aW50MzIgdHJhY2tfaWQ7CkBAIC04Nyw2ICs4OCwxMyBAQAogICBHc3RDYXBzICpjYXBzOwogfSBHc3RNWEZEZW11eEVzc2VuY2VUcmFjazsKIAordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgZ3VpbnQzMiBib2R5X3NpZDsKKyAgZ3VpbnQzMiBpbmRleF9zaWQ7CisgIEdBcnJheSAqb2Zmc2V0czsKK30gR3N0TVhGRGVtdXhJbmRleFRhYmxlOworCiBzdHJ1Y3QgX0dzdE1YRkRlbXV4UGFkCiB7CiAgIEdzdFBhZCBwYXJlbnQ7CkBAIC0xNTMsOCArMTYxLDkgQEAKICAgR3N0TVhGRGVtdXhQYXJ0aXRpb24gKmN1cnJlbnRfcGFydGl0aW9uOwogCiAgIEdBcnJheSAqZXNzZW5jZV90cmFja3M7Ci0gIEdMaXN0ICpwZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzOwogCisgIEdMaXN0ICpwZW5kaW5nX2luZGV4X3RhYmxlX3NlZ21lbnRzOworICBHTGlzdCAqaW5kZXhfdGFibGVzOyAvKiBvbmUgcGVyIEJvZHlTSUQgLyBJbmRleFNJRCAqLwogICBnYm9vbGVhbiBpbmRleF90YWJsZV9zZWdtZW50c19jb2xsZWN0ZWQ7CiAKICAgR0FycmF5ICpyYW5kb21faW5kZXhfcGFjazsKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmanBlZzIwMDAuYyBiL2dzdC9teGYvbXhmanBlZzIwMDAuYwppbmRleCAxNjc5Mjc5Li4xN2RhZjdkIDEwMDY0NAotLS0gYS9nc3QvbXhmL214ZmpwZWcyMDAwLmMKKysrIGIvZ3N0L214Zi9teGZqcGVnMjAwMC5jCkBAIC0yMjEsNyArMjIxLDcgQEAKIAogICAvKiBUT0RPOiBXaGF0IGFib3V0IG90aGVyIGZpZWxkIHZhbHVlcz8gKi8KICAgY2FwcyA9Ci0gICAgICBnc3RfY2Fwc19uZXdfc2ltcGxlICgiaW1hZ2UveC1qcGMiLCAiZmllbGRzIiwgR19UWVBFX0lOVCwgMSwgImNvbG9yc3BhY2UiLAorICAgICAgZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImltYWdlL3gtanBjIiwgImNvbG9yc3BhY2UiLAogICAgICAgR19UWVBFX1NUUklORywgY29sb3JzcGFjZSwgTlVMTCk7CiAgIGlmIChwKSB7CiAgICAgbXhmX21ldGFkYXRhX2dlbmVyaWNfcGljdHVyZV9lc3NlbmNlX2Rlc2NyaXB0b3Jfc2V0X2NhcHMgKHAsIGNhcHMpOwpAQCAtMzYwLDcgKzM2MCw3IEBACiAgIG14Zl9qcGVnMjAwMF9lc3NlbmNlX2VsZW1lbnRfd3JpdGVyLnBhZF90ZW1wbGF0ZSA9CiAgICAgICBnc3RfcGFkX3RlbXBsYXRlX25ldyAoImpwZWcyMDAwX3ZpZGVvX3NpbmtfJXUiLCBHU1RfUEFEX1NJTkssCiAgICAgICBHU1RfUEFEX1JFUVVFU1QsCi0gICAgICBnc3RfY2Fwc19mcm9tX3N0cmluZyAoImltYWdlL3gtanBjLCBmaWVsZHMgPSAxLCB3aWR0aCA9ICIKKyAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nICgiaW1hZ2UveC1qcGMsIHdpZHRoID0gIgogICAgICAgICAgIEdTVF9WSURFT19TSVpFX1JBTkdFICIsIGhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UKICAgICAgICAgICAiLCBmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UKICAgICAgICAgICAiLCBjb2xvcnNwYWNlID0gKHN0cmluZykgeyBcInNSR0JcIiwgXCJzWVVWXCIgfSIpKTsKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmbWV0YWRhdGEuYyBiL2dzdC9teGYvbXhmbWV0YWRhdGEuYwppbmRleCBlMzA2YTU1Li42OWFhZGI1IDEwMDY0NAotLS0gYS9nc3QvbXhmL214Zm1ldGFkYXRhLmMKKysrIGIvZ3N0L214Zi9teGZtZXRhZGF0YS5jCkBAIC05MzIsMjAgKzkzMiwxOCBAQAogICB9CiAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCi0gIGlmIChzZWxmLT5kbV9zY2hlbWVzKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKERNX1NDSEVNRVMpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDggKyAxNiAqIHNlbGYtPm5fZG1fc2NoZW1lczsKLSAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYzAgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNiMGIsICZ0LT51bCk7Ci0gICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+bl9kbV9zY2hlbWVzKTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhICsgNCwgMTYpOwotICAgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5uX2RtX3NjaGVtZXM7IGkrKykgewotICAgICAgbWVtY3B5ICh0LT5kYXRhICsgOCArIDE2ICogaSwgJnNlbGYtPmRtX3NjaGVtZXNbaV0sIDE2KTsKLSAgICB9Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoRE1fU0NIRU1FUyksIDE2KTsKKyAgdC0+c2l6ZSA9IDggKyAxNiAqIHNlbGYtPm5fZG1fc2NoZW1lczsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MwICh0LT5zaXplKTsKKyAgdC0+Z19zbGljZSA9IFRSVUU7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNiMGIsICZ0LT51bCk7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPm5fZG1fc2NoZW1lcyk7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEgKyA0LCAxNik7CisgIGZvciAoaSA9IDA7IGkgPCBzZWxmLT5uX2RtX3NjaGVtZXM7IGkrKykgeworICAgIG1lbWNweSAodC0+ZGF0YSArIDggKyAxNiAqIGksICZzZWxmLT5kbV9zY2hlbWVzW2ldLCAxNik7CiAgIH0KKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKICAgcmV0dXJuIHJldDsKIH0KQEAgLTEyMzYsNiArMTIzNCwxNyBAQAogICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogICB9CiAKKyAgaWYgKCFteGZfdXVpZF9pc196ZXJvICgmc2VsZi0+dGhpc19nZW5lcmF0aW9uX3VpZCkpIHsKKyAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoVEhJU19HRU5FUkFUSU9OX1VJRCksIDE2KTsKKyAgICB0LT5zaXplID0gMTY7CisgICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICAgIHQtPmdfc2xpY2UgPSBUUlVFOworICAgIG1lbWNweSAodC0+ZGF0YSwgJnNlbGYtPnRoaXNfZ2VuZXJhdGlvbl91aWQsIDE2KTsKKyAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzYzA5LCAmdC0+dWwpOworICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOworICB9CisKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMTcxOCw3ICsxNzI3LDcgQEAKICAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAoNCk7CiAgICAgdC0+Z19zbGljZSA9IFRSVUU7CiAgICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+aW5kZXhfc2lkKTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzZjA3LCAmdC0+dWwpOworICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNmMDYsICZ0LT51bCk7CiAgICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAgIH0KIApAQCAtNDQyNCwxNSArNDQzMywyNSBAQAogICAgICAgaWYgKEdTVF9SRUFEX1VJTlQzMl9CRSAodGFnX2RhdGEpID09IDApCiAgICAgICAgIHJldHVybiBUUlVFOwogCi0gICAgICBpZiAoR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSkgIT0gMiAmJgotICAgICAgICAgIEdTVF9SRUFEX1VJTlQzMl9CRSAodGFnX2RhdGEgKyA0KSAhPSA0KQorICAgICAgaWYgKEdTVF9SRUFEX1VJTlQzMl9CRSAodGFnX2RhdGEgKyA0KSAhPSA0KQogICAgICAgICBnb3RvIGVycm9yOwogCi0gICAgICBpZiAodGFnX3NpemUgIT0gMTYpCisgICAgICBpZiAoR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSkgIT0gMSAmJgorICAgICAgICAgIEdTVF9SRUFEX1VJTlQzMl9CRSAodGFnX2RhdGEpICE9IDIpCisgICAgICAgIGdvdG8gZXJyb3I7CisKKyAgICAgIGlmICgoR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSkgPT0gMSAmJiB0YWdfc2l6ZSAhPSAxMikgfHwKKyAgICAgICAgICAoR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSkgPT0gMiAmJiB0YWdfc2l6ZSAhPSAxNikpCiAgICAgICAgIGdvdG8gZXJyb3I7CiAKICAgICAgIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdID0gR1NUX1JFQURfVUlOVDMyX0JFICh0YWdfZGF0YSArIDgpOwotICAgICAgc2VsZi0+dmlkZW9fbGluZV9tYXBbMV0gPSBHU1RfUkVBRF9VSU5UMzJfQkUgKHRhZ19kYXRhICsgMTIpOworCisgICAgICAvKiBXb3JrYXJvdW5kIGZvciBmaWxlcyBjcmVhdGVkIGJ5IGZmbXBlZyAqLworICAgICAgaWYgKEdTVF9SRUFEX1VJTlQzMl9CRSAodGFnX2RhdGEpID09IDEpCisgICAgICAgIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdID0gMDsKKyAgICAgIGVsc2UKKyAgICAgICAgc2VsZi0+dmlkZW9fbGluZV9tYXBbMV0gPSBHU1RfUkVBRF9VSU5UMzJfQkUgKHRhZ19kYXRhICsgMTIpOworCiAgICAgICBHU1RfREVCVUcgKCIgIHZpZGVvIGxpbmUgbWFwID0geyVpLCAlaX0iLCBzZWxmLT52aWRlb19saW5lX21hcFswXSwKICAgICAgICAgICBzZWxmLT52aWRlb19saW5lX21hcFsxXSk7CiAgICAgICBicmVhazsKQEAgLTQ1MTQsMTQgKzQ1MzMsMTIgQEAKICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChTSUdOQUxfU1RBTkRBUkQpLCBHX1RZUEVfVUNIQVIsCiAgICAgICBzZWxmLT5zaWduYWxfc3RhbmRhcmQsIE5VTEwpOwogCi0gIGlmIChzZWxmLT5mcmFtZV9sYXlvdXQgIT0gMjU1KQotICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoRlJBTUVfTEFZT1VUKSwgR19UWVBFX1VDSEFSLAotICAgICAgICBzZWxmLT5mcmFtZV9sYXlvdXQsIE5VTEwpOworICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKEZSQU1FX0xBWU9VVCksIEdfVFlQRV9VQ0hBUiwKKyAgICAgIHNlbGYtPmZyYW1lX2xheW91dCwgTlVMTCk7CiAKLSAgaWYgKHNlbGYtPnN0b3JlZF93aWR0aCAhPSAwICYmIHNlbGYtPnN0b3JlZF9oZWlnaHQgIT0gMCkKLSAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKFNUT1JFRF9XSURUSCksIEdfVFlQRV9VSU5ULAotICAgICAgICBzZWxmLT5zdG9yZWRfd2lkdGgsIE1YRl9RVUFSSyAoU1RPUkVEX0hFSUdIVCksIEdfVFlQRV9VSU5ULAotICAgICAgICBzZWxmLT5zdG9yZWRfaGVpZ2h0LCBOVUxMKTsKKyAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChTVE9SRURfV0lEVEgpLCBHX1RZUEVfVUlOVCwKKyAgICAgIHNlbGYtPnN0b3JlZF93aWR0aCwgTVhGX1FVQVJLIChTVE9SRURfSEVJR0hUKSwgR19UWVBFX1VJTlQsCisgICAgICBzZWxmLT5zdG9yZWRfaGVpZ2h0LCBOVUxMKTsKIAogICBpZiAoc2VsZi0+c3RvcmVkX2YyX29mZnNldCAhPSAwKQogICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoU1RPUkVEX0YyX09GRlNFVCksIEdfVFlQRV9JTlQsCkBAIC00NTY1LDEwICs0NTgyLDkgQEAKICAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKEFDVElWRV9GT1JNQVRfREVTQ1JJUFRPUiksCiAgICAgICAgIEdfVFlQRV9VQ0hBUiwgc2VsZi0+YWN0aXZlX2Zvcm1hdF9kZXNjcmlwdG9yLCBOVUxMKTsKIAotICBpZiAoc2VsZi0+dmlkZW9fbGluZV9tYXBbMF0gIT0gMCAmJiBzZWxmLT52aWRlb19saW5lX21hcFsxXSAhPSAwKQotICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoVklERU9fTElORV9NQVBfMCksIEdfVFlQRV9VSU5ULAotICAgICAgICBzZWxmLT52aWRlb19saW5lX21hcFswXSwgTVhGX1FVQVJLIChWSURFT19MSU5FX01BUF8xKSwgR19UWVBFX1VJTlQsCi0gICAgICAgIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzFdLCBOVUxMKTsKKyAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChWSURFT19MSU5FX01BUF8wKSwgR19UWVBFX1VJTlQsCisgICAgICBzZWxmLT52aWRlb19saW5lX21hcFswXSwgTVhGX1FVQVJLIChWSURFT19MSU5FX01BUF8xKSwgR19UWVBFX1VJTlQsCisgICAgICBzZWxmLT52aWRlb19saW5lX21hcFsxXSwgTlVMTCk7CiAKICAgaWYgKHNlbGYtPmFscGhhX3RyYW5zcGFyZW5jeSAhPSAwKQogICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoQUxQSEFfVFJBTlNQQVJFTkNZKSwgR19UWVBFX1VDSEFSLApAQCAtNDYyOCwzOCArNDY0NCwzMiBAQAogICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogICB9CiAKLSAgaWYgKHNlbGYtPmZyYW1lX2xheW91dCAhPSAyNTUpIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoRlJBTUVfTEFZT1VUKSwgMTYpOwotICAgIHQtPnNpemUgPSAxOwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKLSAgICBHU1RfV1JJVEVfVUlOVDggKHQtPmRhdGEsIHNlbGYtPmZyYW1lX2xheW91dCk7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzIwYywgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLSAgfQorICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKEZSQU1FX0xBWU9VVCksIDE2KTsKKyAgdC0+c2l6ZSA9IDE7CisgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKKyAgdC0+Z19zbGljZSA9IFRSVUU7CisgIEdTVF9XUklURV9VSU5UOCAodC0+ZGF0YSwgc2VsZi0+ZnJhbWVfbGF5b3V0KTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzIwYywgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKLSAgaWYgKHNlbGYtPnN0b3JlZF93aWR0aCAhPSAwKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKFNUT1JFRF9XSURUSCksIDE2KTsKLSAgICB0LT5zaXplID0gNDsKLSAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7Ci0gICAgdC0+Z19zbGljZSA9IFRSVUU7Ci0gICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+c3RvcmVkX3dpZHRoKTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMjAzLCAmdC0+dWwpOwotICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwotICB9CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoU1RPUkVEX1dJRFRIKSwgMTYpOworICB0LT5zaXplID0gNDsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+c3RvcmVkX3dpZHRoKTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzIwMywgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKLSAgaWYgKHNlbGYtPnN0b3JlZF9oZWlnaHQgIT0gMCkgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChTVE9SRURfSEVJR0hUKSwgMTYpOwotICAgIHQtPnNpemUgPSA0OwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5zdG9yZWRfaGVpZ2h0KTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMjAyLCAmdC0+dWwpOwotICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwotICB9CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoU1RPUkVEX0hFSUdIVCksIDE2KTsKKyAgdC0+c2l6ZSA9IDQ7CisgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKKyAgdC0+Z19zbGljZSA9IFRSVUU7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPnN0b3JlZF9oZWlnaHQpOworICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMjAyLCAmdC0+dWwpOworICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKIAogICBpZiAoc2VsZi0+c3RvcmVkX2YyX29mZnNldCAhPSAwKSB7CiAgICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwpAQCAtNDc3MSwxNyArNDc4MSwxNSBAQAogICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogICB9CiAKLSAgaWYgKHNlbGYtPmFzcGVjdF9yYXRpby5uICE9IDAgJiYgc2VsZi0+YXNwZWN0X3JhdGlvLmQgIT0gMCkgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChBU1BFQ1RfUkFUSU8pLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDg7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPmFzcGVjdF9yYXRpby5uKTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhICsgNCwgc2VsZi0+YXNwZWN0X3JhdGlvLmQpOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMyMGUsICZ0LT51bCk7Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7Ci0gIH0KKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChBU1BFQ1RfUkFUSU8pLCAxNik7CisgIHQtPnNpemUgPSA4OworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5hc3BlY3RfcmF0aW8ubik7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEgKyA0LCBzZWxmLT5hc3BlY3RfcmF0aW8uZCk7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMyMGUsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCiAgIGlmIChzZWxmLT5hY3RpdmVfZm9ybWF0X2Rlc2NyaXB0b3IgIT0gMCkgewogICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKQEAgLTQ3OTQsMTcgKzQ4MDIsMTcgQEAKICAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKICAgfQogCi0gIGlmIChzZWxmLT52aWRlb19saW5lX21hcFswXSAhPSAwIHx8IHNlbGYtPnZpZGVvX2xpbmVfbWFwWzFdICE9IDApIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoVklERU9fTElORV9NQVApLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDE2OwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKLSAgICBHU1RfV1JJVEVfVUlOVDY0X0JFICh0LT5kYXRhLCBzZWxmLT52aWRlb19saW5lX21hcFswXSk7Ci0gICAgR1NUX1dSSVRFX1VJTlQ2NF9CRSAodC0+ZGF0YSArIDgsIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzFdKTsKLSAgICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzMjBkLCAmdC0+dWwpOwotICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwotICB9CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoVklERU9fTElORV9NQVApLCAxNik7CisgIHQtPnNpemUgPSAxNjsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgMik7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEgKyA0LCA0KTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSArIDgsIHNlbGYtPnZpZGVvX2xpbmVfbWFwWzBdKTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSArIDEyLCBzZWxmLT52aWRlb19saW5lX21hcFsxXSk7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMyMGQsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCiAgIGlmIChzZWxmLT5hbHBoYV90cmFuc3BhcmVuY3kgIT0gMCkgewogICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKQEAgLTQ5NTIsMTYgKzQ5NjAsMTggQEAKICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgIndpZHRoIiwgR19UWVBFX0lOVCwgd2lkdGgsICJoZWlnaHQiLCBHX1RZUEVfSU5ULAogICAgICAgaGVpZ2h0LCBOVUxMKTsKIAotICBpZiAoc2VsZi0+YXNwZWN0X3JhdGlvLm4gPT0gMCB8fCBzZWxmLT5hc3BlY3RfcmF0aW8uZCA9PSAwKSB7CisgIGlmIChzZWxmLT5hc3BlY3RfcmF0aW8ubiA9PSAwICYmIHNlbGYtPmFzcGVjdF9yYXRpby5kID09IDApIHsKKyAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAicGl4ZWwtYXNwZWN0LXJhdGlvIiwgR1NUX1RZUEVfRlJBQ1RJT04sCisgICAgICAgIDEsIDEsIE5VTEwpOworICB9IGVsc2UgaWYgKHNlbGYtPmFzcGVjdF9yYXRpby5uID09IDAgfHwgc2VsZi0+YXNwZWN0X3JhdGlvLmQgPT0gMCkgewogICAgIEdTVF9FUlJPUiAoIkludmFsaWQgYXNwZWN0IHJhdGlvIik7Ci0gICAgcmV0dXJuOworICB9IGVsc2UgeworICAgIHBhcl9uID0gaGVpZ2h0ICogc2VsZi0+YXNwZWN0X3JhdGlvLm47CisgICAgcGFyX2QgPSB3aWR0aCAqIHNlbGYtPmFzcGVjdF9yYXRpby5kOworCisgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgInBpeGVsLWFzcGVjdC1yYXRpbyIsIEdTVF9UWVBFX0ZSQUNUSU9OLAorICAgICAgICBwYXJfbiwgcGFyX2QsIE5VTEwpOwogICB9Ci0KLSAgcGFyX24gPSBoZWlnaHQgKiBzZWxmLT5hc3BlY3RfcmF0aW8ubjsKLSAgcGFyX2QgPSB3aWR0aCAqIHNlbGYtPmFzcGVjdF9yYXRpby5kOwotCi0gIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTiwKLSAgICAgIHBhcl9uLCBwYXJfZCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBnaW50CkBAIC00OTg1LDcgKzQ5OTUsNyBAQAogICBnaW50IGZwc19uLCBmcHNfZDsKICAgTVhGTWV0YWRhdGFGaWxlRGVzY3JpcHRvciAqZiA9IChNWEZNZXRhZGF0YUZpbGVEZXNjcmlwdG9yICopIHNlbGY7CiAgIEdzdFN0cnVjdHVyZSAqczsKLSAgZ2Jvb2xlYW4gaW50ZXJsYWNlZDsKKyAgZ2Jvb2xlYW4gaW50ZXJsYWNlZCA9IEZBTFNFOwogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChNWEZfSVNfTUVUQURBVEFfR0VORVJJQ19QSUNUVVJFX0VTU0VOQ0VfREVTQ1JJUFRPUgogICAgICAgKHNlbGYpLCBGQUxTRSk7CkBAIC01MTM2LDEzICs1MTQ2LDExIEBACiAgICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChFTEVDVFJPX1NQQVRJQUxfRk9STVVMQVRJT04pLAogICAgICAgICBHX1RZUEVfVUNIQVIsIHNlbGYtPmVsZWN0cm9fc3BhdGlhbF9mb3JtdWxhdGlvbiwgTlVMTCk7CiAKLSAgaWYgKHNlbGYtPmNoYW5uZWxfY291bnQgIT0gMCkKLSAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKENIQU5ORUxfQ09VTlQpLCBHX1RZUEVfVUlOVCwKLSAgICAgICAgc2VsZi0+Y2hhbm5lbF9jb3VudCwgTlVMTCk7CisgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoQ0hBTk5FTF9DT1VOVCksIEdfVFlQRV9VSU5ULAorICAgICAgc2VsZi0+Y2hhbm5lbF9jb3VudCwgTlVMTCk7CiAKLSAgaWYgKHNlbGYtPnF1YW50aXphdGlvbl9iaXRzICE9IDApCi0gICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChRVUFOVElaQVRJT05fQklUUyksIEdfVFlQRV9VSU5ULAotICAgICAgICBzZWxmLT5xdWFudGl6YXRpb25fYml0cywgTlVMTCk7CisgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoUVVBTlRJWkFUSU9OX0JJVFMpLCBHX1RZUEVfVUlOVCwKKyAgICAgIHNlbGYtPnF1YW50aXphdGlvbl9iaXRzLCBOVUxMKTsKIAogICBpZiAoc2VsZi0+ZGlhbF9ub3JtICE9IDApCiAgICAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChESUFMX05PUk0pLCBHX1RZUEVfQ0hBUiwKQEAgLTUxNzEsMTcgKzUxNzksMTUgQEAKICAgICAgIChtLCBwcmltZXIpOwogICBNWEZMb2NhbFRhZyAqdDsKIAotICBpZiAoc2VsZi0+YXVkaW9fc2FtcGxpbmdfcmF0ZS5kICYmIHNlbGYtPmF1ZGlvX3NhbXBsaW5nX3JhdGUubikgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChBVURJT19TQU1QTElOR19SQVRFKSwgMTYpOwotICAgIHQtPnNpemUgPSA4OwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5hdWRpb19zYW1wbGluZ19yYXRlLm4pOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEgKyA0LCBzZWxmLT5hdWRpb19zYW1wbGluZ19yYXRlLmQpOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNkMDMsICZ0LT51bCk7Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7Ci0gIH0KKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChBVURJT19TQU1QTElOR19SQVRFKSwgMTYpOworICB0LT5zaXplID0gODsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+YXVkaW9fc2FtcGxpbmdfcmF0ZS5uKTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSArIDQsIHNlbGYtPmF1ZGlvX3NhbXBsaW5nX3JhdGUuZCk7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDNkMDMsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCiAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoTE9DS0VEKSwgMTYpOwpAQCAtNTIxNCwyNyArNTIyMCwyMyBAQAogICAgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogICB9CiAKLSAgaWYgKHNlbGYtPmNoYW5uZWxfY291bnQpIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoQ0hBTk5FTF9DT1VOVCksIDE2KTsKLSAgICB0LT5zaXplID0gNDsKLSAgICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7Ci0gICAgdC0+Z19zbGljZSA9IFRSVUU7Ci0gICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+Y2hhbm5lbF9jb3VudCk7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2QwNywgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLSAgfQorICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKENIQU5ORUxfQ09VTlQpLCAxNik7CisgIHQtPnNpemUgPSA0OworICB0LT5kYXRhID0gZ19zbGljZV9hbGxvYyAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5jaGFubmVsX2NvdW50KTsKKyAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2QwNywgJnQtPnVsKTsKKyAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7CiAKLSAgaWYgKHNlbGYtPnF1YW50aXphdGlvbl9iaXRzKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKFFVQU5USVpBVElPTl9CSVRTKSwgMTYpOwotICAgIHQtPnNpemUgPSA0OwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKLSAgICB0LT5nX3NsaWNlID0gVFJVRTsKLSAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICh0LT5kYXRhLCBzZWxmLT5xdWFudGl6YXRpb25fYml0cyk7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4M2QwMSwgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLSAgfQorICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKFFVQU5USVpBVElPTl9CSVRTKSwgMTYpOworICB0LT5zaXplID0gNDsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+cXVhbnRpemF0aW9uX2JpdHMpOworICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzZDAxLCAmdC0+dWwpOworICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKIAogICBpZiAoc2VsZi0+ZGlhbF9ub3JtICE9IDApIHsKICAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CkBAIC01MjY1LDcgKzUyNjcsNyBAQAogICAgIG14Zl9tZXRhZGF0YV9nZW5lcmljX3NvdW5kX2Vzc2VuY2VfZGVzY3JpcHRvcl9pbml0CiAgICAgKE1YRk1ldGFkYXRhR2VuZXJpY1NvdW5kRXNzZW5jZURlc2NyaXB0b3IgKiBzZWxmKQogewotICBzZWxmLT5hdWRpb19zYW1wbGluZ19yYXRlLm4gPSA0ODAwMDsKKyAgc2VsZi0+YXVkaW9fc2FtcGxpbmdfcmF0ZS5uID0gMDsKICAgc2VsZi0+YXVkaW9fc2FtcGxpbmdfcmF0ZS5kID0gMTsKICAgc2VsZi0+ZWxlY3Ryb19zcGF0aWFsX2Zvcm11bGF0aW9uID0gMjU1OwogfQpAQCAtNTQ3NiwxMyArNTQ3OCwxMSBAQAogICBNWEZNZXRhZGF0YUNEQ0lQaWN0dXJlRXNzZW5jZURlc2NyaXB0b3IgKnNlbGYgPQogICAgICAgTVhGX01FVEFEQVRBX0NEQ0lfUElDVFVSRV9FU1NFTkNFX0RFU0NSSVBUT1IgKG0pOwogCi0gIGlmIChzZWxmLT5jb21wb25lbnRfZGVwdGggIT0gMCkKLSAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKENPTVBPTkVOVF9ERVBUSCksIEdfVFlQRV9VSU5ULAotICAgICAgICBzZWxmLT5jb21wb25lbnRfZGVwdGgsIE5VTEwpOworICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKENPTVBPTkVOVF9ERVBUSCksIEdfVFlQRV9VSU5ULAorICAgICAgc2VsZi0+Y29tcG9uZW50X2RlcHRoLCBOVUxMKTsKIAotICBpZiAoc2VsZi0+aG9yaXpvbnRhbF9zdWJzYW1wbGluZyAhPSAwKQotICAgIGdzdF9zdHJ1Y3R1cmVfaWRfc2V0IChyZXQsIE1YRl9RVUFSSyAoSE9SSVpPTlRBTF9TVUJTQU1QTElORyksIEdfVFlQRV9VSU5ULAotICAgICAgICBzZWxmLT5ob3Jpem9udGFsX3N1YnNhbXBsaW5nLCBOVUxMKTsKKyAgZ3N0X3N0cnVjdHVyZV9pZF9zZXQgKHJldCwgTVhGX1FVQVJLIChIT1JJWk9OVEFMX1NVQlNBTVBMSU5HKSwgR19UWVBFX1VJTlQsCisgICAgICBzZWxmLT5ob3Jpem9udGFsX3N1YnNhbXBsaW5nLCBOVUxMKTsKIAogICBpZiAoc2VsZi0+dmVydGljYWxfc3Vic2FtcGxpbmcgIT0gMCkKICAgICBnc3Rfc3RydWN0dXJlX2lkX3NldCAocmV0LCBNWEZfUVVBUksgKFZFUlRJQ0FMX1NVQlNBTVBMSU5HKSwgR19UWVBFX1VJTlQsCkBAIC01NTMwLDI3ICs1NTMwLDIzIEBACiAgICAgICAobSwgcHJpbWVyKTsKICAgTVhGTG9jYWxUYWcgKnQ7CiAKLSAgaWYgKHNlbGYtPmNvbXBvbmVudF9kZXB0aCkgewotICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKLSAgICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChDT01QT05FTlRfREVQVEgpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDQ7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPmNvbXBvbmVudF9kZXB0aCk7Ci0gICAgbXhmX3ByaW1lcl9wYWNrX2FkZF9tYXBwaW5nIChwcmltZXIsIDB4MzMwMSwgJnQtPnVsKTsKLSAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKLSAgfQorICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CisgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKENPTVBPTkVOVF9ERVBUSCksIDE2KTsKKyAgdC0+c2l6ZSA9IDQ7CisgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jICh0LT5zaXplKTsKKyAgdC0+Z19zbGljZSA9IFRSVUU7CisgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPmNvbXBvbmVudF9kZXB0aCk7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMzMDEsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCi0gIGlmIChzZWxmLT5ob3Jpem9udGFsX3N1YnNhbXBsaW5nKSB7Ci0gICAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOwotICAgIG1lbWNweSAoJnQtPnVsLCBNWEZfVUwgKEhPUklaT05UQUxfU1VCU0FNUExJTkcpLCAxNik7Ci0gICAgdC0+c2l6ZSA9IDQ7Ci0gICAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOwotICAgIHQtPmdfc2xpY2UgPSBUUlVFOwotICAgIEdTVF9XUklURV9VSU5UMzJfQkUgKHQtPmRhdGEsIHNlbGYtPmhvcml6b250YWxfc3Vic2FtcGxpbmcpOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMzMDIsICZ0LT51bCk7Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7Ci0gIH0KKyAgdCA9IGdfc2xpY2VfbmV3MCAoTVhGTG9jYWxUYWcpOworICBtZW1jcHkgKCZ0LT51bCwgTVhGX1VMIChIT1JJWk9OVEFMX1NVQlNBTVBMSU5HKSwgMTYpOworICB0LT5zaXplID0gNDsKKyAgdC0+ZGF0YSA9IGdfc2xpY2VfYWxsb2MgKHQtPnNpemUpOworICB0LT5nX3NsaWNlID0gVFJVRTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAodC0+ZGF0YSwgc2VsZi0+aG9yaXpvbnRhbF9zdWJzYW1wbGluZyk7CisgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDMzMDIsICZ0LT51bCk7CisgIHJldCA9IGdfbGlzdF9wcmVwZW5kIChyZXQsIHQpOwogCiAgIGlmIChzZWxmLT52ZXJ0aWNhbF9zdWJzYW1wbGluZykgewogICAgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKQEAgLTU3MjgsNyArNTcyNCw3IEBACiAgICAgY2FzZSAweDM0MDE6ewogICAgICAgZ3VpbnQgaSwgbGVuOwogCi0gICAgICBpZiAodGFnX3NpemUgJSAyICE9IDApCisgICAgICBpZiAodGFnX3NpemUgJSAyICE9IDAgfHwgdGFnX3NpemUgPiAxNikKICAgICAgICAgZ290byBlcnJvcjsKIAogICAgICAgaSA9IDA7CkBAIC01NzQxLDcgKzU3MzcsNyBAQAogICAgICAgaWYgKGxlbiA9PSAwKQogICAgICAgICByZXR1cm4gVFJVRTsKIAotICAgICAgc2VsZi0+cGl4ZWxfbGF5b3V0ID0gZ19tYWxsb2MwICgyICogbGVuKTsKKyAgICAgIHNlbGYtPnBpeGVsX2xheW91dCA9IGdfbWFsbG9jMCAoMTYpOwogCiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbGVuOyBpKyspIHsKICAgICAgICAgc2VsZi0+cGl4ZWxfbGF5b3V0WzIgKiBpXSA9IHRhZ19kYXRhWzIgKiBpXTsKQEAgLTU4ODcsMTcgKzU4ODMsMTUgQEAKICAgICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKICAgfQogCi0gIGlmIChzZWxmLT5waXhlbF9sYXlvdXQpIHsKLSAgICB0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7Ci0gICAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoUElYRUxfTEFZT1VUKSwgMTYpOwotICAgIHQtPnNpemUgPSAyICogc2VsZi0+bl9waXhlbF9sYXlvdXQgKyAyOwotICAgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jMCAodC0+c2l6ZSk7Ci0gICAgdC0+Z19zbGljZSA9IFRSVUU7CisgIHQgPSBnX3NsaWNlX25ldzAgKE1YRkxvY2FsVGFnKTsKKyAgbWVtY3B5ICgmdC0+dWwsIE1YRl9VTCAoUElYRUxfTEFZT1VUKSwgMTYpOworICB0LT5zaXplID0gMTY7CisgIHQtPmRhdGEgPSBnX3NsaWNlX2FsbG9jMCAodC0+c2l6ZSk7CisgIHQtPmdfc2xpY2UgPSBUUlVFOworICBpZiAoc2VsZi0+cGl4ZWxfbGF5b3V0KQogICAgIG1lbWNweSAodC0+ZGF0YSwgc2VsZi0+cGl4ZWxfbGF5b3V0LCBzZWxmLT5uX3BpeGVsX2xheW91dCAqIDIpOwotICAgIG14Zl9wcmltZXJfcGFja19hZGRfbWFwcGluZyAocHJpbWVyLCAweDM0MDEsICZ0LT51bCk7Ci0gICAgcmV0ID0gZ19saXN0X3ByZXBlbmQgKHJldCwgdCk7Ci0KLSAgfQorICBteGZfcHJpbWVyX3BhY2tfYWRkX21hcHBpbmcgKHByaW1lciwgMHgzNDAxLCAmdC0+dWwpOworICByZXQgPSBnX2xpc3RfcHJlcGVuZCAocmV0LCB0KTsKIAogICByZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZtcGVnLmMgYi9nc3QvbXhmL214Zm1wZWcuYwppbmRleCBjMjZmYTk5Li4zMGJhOWNmIDEwMDY0NAotLS0gYS9nc3QvbXhmL214Zm1wZWcuYworKysgYi9nc3QvbXhmL214Zm1wZWcuYwpAQCAtNjAwLDcgKzYwMCw3IEBACiAgICAgMHgwMywgMHgwMiwgMHgwNCwgMHgwMH0KIH07CiAKLXN0YXRpYyBjb25zdCBNWEZVTCBzb3VuZF9lc3NlbmNlX2NvbXByZXNzaW9uX21wZWcxX2xheWVyMTIgPSB7IHsKK3N0YXRpYyBjb25zdCBNWEZVTCBzb3VuZF9lc3NlbmNlX2NvbXByZXNzaW9uX21wZWcxX2xheWVyMjMgPSB7IHsKICAgICAgICAgMHgwNiwgMHgwRSwgMHgyQiwgMHgzNCwgMHgwNCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwNCwgMHgwMiwgMHgwMiwgMHgwMiwKICAgICAweDAzLCAweDAyLCAweDA1LCAweDAwfQogfTsKQEAgLTcwMSw4ICs3MDEsOSBAQAogICAgIH0gZWxzZSBpZiAoKHAtPnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVsxM10gPj4gNCkgPT0gMHgwMykgewogICAgICAgLyogUlAgMjAwOCAqLwogCi0gICAgICAvKiBUT0RPOiBXaGF0IGFib3V0IGNvZGVjX2RhdGEgZm9yIEFWQzEgc3RyZWFtcz8gKi8KLSAgICAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgidmlkZW8veC1oMjY0Iik7CisgICAgICBjYXBzID0KKyAgICAgICAgICBnc3RfY2Fwc19uZXdfc2ltcGxlICgidmlkZW8veC1oMjY0IiwgInN0cmVhbS1mb3JtYXQiLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICAgICJieXRlLXN0cmVhbSIsIE5VTEwpOwogICAgICAgY29kZWNfbmFtZSA9ICJoLjI2NCBWaWRlbyI7CiAgICAgICB0ID0gTVhGX01QRUdfRVNTRU5DRV9UWVBFX1ZJREVPX0FWQzsKICAgICAgIG1lbWNweSAobWRhdGEsICZ0LCBzaXplb2YgKE1YRk1QRUdFc3NlbmNlVHlwZSkpOwpAQCAtNzMxLDcgKzczMiw3IEBACiAgICAgICAgICAgImxheWVyIiwgR19UWVBFX0lOVCwgMSwgTlVMTCk7CiAgICAgICBjb2RlY19uYW1lID0gIk1QRUctMSBMYXllciAxIEF1ZGlvIjsKICAgICB9IGVsc2UgaWYgKG14Zl91bF9pc19lcXVhbCAoJnMtPnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb24sCi0gICAgICAgICAgICAmc291bmRfZXNzZW5jZV9jb21wcmVzc2lvbl9tcGVnMV9sYXllcjEyKSkgeworICAgICAgICAgICAgJnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb25fbXBlZzFfbGF5ZXIyMykpIHsKICAgICAgIGNhcHMgPQogICAgICAgICAgIGdzdF9jYXBzX25ld19zaW1wbGUgKCJhdWRpby9tcGVnIiwgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwKICAgICAgICAgICBOVUxMKTsKQEAgLTg5MCwxNyArODkxLDE2IEBACiAgIH0gZWxzZSBpZiAoZi0+ZXNzZW5jZV9jb250YWluZXIudVsxM10gPT0gMHgwZikgewogICAgIEdTVF9ERUJVRyAoIkZvdW5kIGgyNjQgTkFMIHVuaXQgc3RyZWFtIik7CiAgICAgLyogUlAgMjAwOCAqLwotICAgIC8qIFRPRE86IFdoYXQgYWJvdXQgY29kZWNfZGF0YT8gKi8KICAgICBjYXBzID0KICAgICAgICAgZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInZpZGVvL3gtaDI2NCIsICJzdHJlYW0tZm9ybWF0IiwgR19UWVBFX1NUUklORywKLSAgICAgICAgImF2YyIsIE5VTEwpOworICAgICAgICAiYnl0ZS1zdHJlYW0iLCBOVUxMKTsKIAogICAgIGlmICghKnRhZ3MpCiAgICAgICAqdGFncyA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7CiAgICAgZ3N0X3RhZ19saXN0X2FkZCAoKnRhZ3MsIEdTVF9UQUdfTUVSR0VfQVBQRU5ELCBHU1RfVEFHX1ZJREVPX0NPREVDLAogICAgICAgICAiaC4yNjQgVmlkZW8iLCBOVUxMKTsKICAgfSBlbHNlIGlmIChmLT5lc3NlbmNlX2NvbnRhaW5lci51WzEzXSA9PSAweDEwKSB7Ci0gICAgR1NUX0RFQlVHICgiRm91bmQgaDI2NCBieXRlIHN0cmVhbSBzdHJlYW0iKTsKKyAgICBHU1RfREVCVUcgKCJGb3VuZCBoMjY0IGJ5dGUtc3RyZWFtIHN0cmVhbSIpOwogICAgIC8qIFJQIDIwMDggKi8KICAgICBjYXBzID0KICAgICAgICAgZ3N0X2NhcHNfbmV3X3NpbXBsZSAoInZpZGVvL3gtaDI2NCIsICJzdHJlYW0tZm9ybWF0IiwgR19UWVBFX1NUUklORywKQEAgLTk0MSw3ICs5NDEsNyBAQAogCiBzdGF0aWMgY29uc3QgZ3VpbnQ4IG1wZWdfZXNzZW5jZV9jb250YWluZXJfdWxbXSA9IHsKICAgMHgwNiwgMHgwZSwgMHgyYiwgMHgzNCwgMHgwNCwgMHgwMSwgMHgwMSwgMHgwMiwKLSAgMHgwZCwgMHgwMSwgMHgwMywgMHgwMSwgMHgwMiwgMHgwNCwgMHgwMSwgMHgwMQorICAweDBkLCAweDAxLCAweDAzLCAweDAxLCAweDAyLCAweDAwLCAweDAwLCAweDAxCiB9OwogCiBzdGF0aWMgTVhGTWV0YWRhdGFGaWxlRGVzY3JpcHRvciAqCkBAIC05NzksOSArOTc5LDkgQEAKICAgICAgIGlmIChtcGVnYXVkaW92ZXJzaW9uID09IDEgJiYgbGF5ZXIgPT0gMSkKICAgICAgICAgbWVtY3B5ICgmcmV0LT5zb3VuZF9lc3NlbmNlX2NvbXByZXNzaW9uLAogICAgICAgICAgICAgJnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb25fbXBlZzFfbGF5ZXIxLCAxNik7Ci0gICAgICBlbHNlIGlmIChtcGVnYXVkaW92ZXJzaW9uID09IDEgJiYgbGF5ZXIgPT0gMikKKyAgICAgIGVsc2UgaWYgKG1wZWdhdWRpb3ZlcnNpb24gPT0gMSAmJiAobGF5ZXIgPT0gMiB8fCBsYXllciA9PSAzKSkKICAgICAgICAgbWVtY3B5ICgmcmV0LT5zb3VuZF9lc3NlbmNlX2NvbXByZXNzaW9uLAotICAgICAgICAgICAgJnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb25fbXBlZzFfbGF5ZXIxMiwgMTYpOworICAgICAgICAgICAgJnNvdW5kX2Vzc2VuY2VfY29tcHJlc3Npb25fbXBlZzFfbGF5ZXIyMywgMTYpOwogICAgICAgZWxzZSBpZiAobXBlZ2F1ZGlvdmVyc2lvbiA9PSAyICYmIGxheWVyID09IDEpCiAgICAgICAgIG1lbWNweSAoJnJldC0+c291bmRfZXNzZW5jZV9jb21wcmVzc2lvbiwKICAgICAgICAgICAgICZzb3VuZF9lc3NlbmNlX2NvbXByZXNzaW9uX21wZWcyX2xheWVyMSwgMTYpOwpAQCAtMTAxNiw2ICsxMDE2LDkgQEAKIAogICBtZW1jcHkgKCZyZXQtPnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lciwgJm1wZWdfZXNzZW5jZV9jb250YWluZXJfdWwsIDE2KTsKIAorICByZXQtPnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lci51WzEzXSA9IDB4MDQ7CisgIHJldC0+cGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTRdID0gMHg0MDsKKwogICBpZiAoIW14Zl9tZXRhZGF0YV9nZW5lcmljX3NvdW5kX2Vzc2VuY2VfZGVzY3JpcHRvcl9mcm9tX2NhcHMgKHJldCwgY2FwcykpIHsKICAgICBnX29iamVjdF91bnJlZiAocmV0KTsKICAgICByZXR1cm4gTlVMTDsKQEAgLTEyNTcsNiArMTI2MCw3IEBACiAKICAgbWVtY3B5ICgmcmV0LT5wYXJlbnQucGFyZW50LnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lciwKICAgICAgICZtcGVnX2Vzc2VuY2VfY29udGFpbmVyX3VsLCAxNik7CisKICAgbWVtY3B5ICgmcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcsCiAgICAgICAmbXBlZ192aWRlb19waWN0dXJlX2Vzc2VuY2VfY29tcHJlc3Npb25fdWwsIDE2KTsKICAgaWYgKHN0cmNtcCAoZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAocyksICJ2aWRlby9tcGVnIikgPT0gMCkgewpAQCAtMTI3MywxMyArMTI3NywxOSBAQAogCiAgICAgICAqbWFwcGluZ19kYXRhID0gZ19uZXcwIChNWEZNUEVHRXNzZW5jZVR5cGUsIDEpOwogICAgICAgbWVtY3B5ICgqbWFwcGluZ19kYXRhLCAmdHlwZSwgc2l6ZW9mIChNWEZNUEVHRXNzZW5jZVR5cGUpKTsKKyAgICAgIHJldC0+cGFyZW50LnBhcmVudC5waWN0dXJlX2Vzc2VuY2VfY29kaW5nLnVbN10gPSAweDAzOwogICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVsxM10gPSAweDEwOworICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lci51WzEzXSA9IDB4MDQ7CisgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTRdID0gMHg2MDsKICAgICB9IGVsc2UgaWYgKG1wZWd2ZXJzaW9uID09IDIpIHsKICAgICAgIE1YRk1QRUdFc3NlbmNlVHlwZSB0eXBlID0gTVhGX01QRUdfRVNTRU5DRV9UWVBFX1ZJREVPX01QRUcyOwogCiAgICAgICAqbWFwcGluZ19kYXRhID0gZ19uZXcwIChNWEZNUEVHRXNzZW5jZVR5cGUsIDEpOwogICAgICAgbWVtY3B5ICgqbWFwcGluZ19kYXRhLCAmdHlwZSwgc2l6ZW9mIChNWEZNUEVHRXNzZW5jZVR5cGUpKTsKKyAgICAgIHJldC0+cGFyZW50LnBhcmVudC5waWN0dXJlX2Vzc2VuY2VfY29kaW5nLnVbN10gPSAweDAxOwogICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVsxM10gPSAweDAxOworICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lci51WzEzXSA9IDB4MDQ7CisgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTRdID0gMHg2MDsKICAgICB9IGVsc2UgewogICAgICAgY29uc3QgR1ZhbHVlICp2OwogICAgICAgY29uc3QgR3N0QnVmZmVyICpjb2RlY19kYXRhOwpAQCAtMTI4OCw3ICsxMjk4LDEwIEBACiAgICAgICAqbWFwcGluZ19kYXRhID0gZ19uZXcwIChNWEZNUEVHRXNzZW5jZVR5cGUsIDEpOwogICAgICAgbWVtY3B5ICgqbWFwcGluZ19kYXRhLCAmdHlwZSwgc2l6ZW9mIChNWEZNUEVHRXNzZW5jZVR5cGUpKTsKIAorICAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVs3XSA9IDB4MDM7CiAgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGljdHVyZV9lc3NlbmNlX2NvZGluZy51WzEzXSA9IDB4MjA7CisgICAgICByZXQtPnBhcmVudC5wYXJlbnQucGFyZW50LmVzc2VuY2VfY29udGFpbmVyLnVbMTNdID0gMHgwNDsKKyAgICAgIHJldC0+cGFyZW50LnBhcmVudC5wYXJlbnQuZXNzZW5jZV9jb250YWluZXIudVsxNF0gPSAweDYwOwogICAgICAgaWYgKCh2ID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKHMsICJjb2RlY19kYXRhIikpKSB7CiAgICAgICAgIE1YRkxvY2FsVGFnICp0ID0gZ19zbGljZV9uZXcwIChNWEZMb2NhbFRhZyk7CiAgICAgICAgIEdzdE1hcEluZm8gbWFwOwpAQCAtMTMwNyw3ICsxMzIwLDExIEBACiAKICAgICAqbWFwcGluZ19kYXRhID0gZ19uZXcwIChNWEZNUEVHRXNzZW5jZVR5cGUsIDEpOwogICAgIG1lbWNweSAoKm1hcHBpbmdfZGF0YSwgJnR5cGUsIHNpemVvZiAoTVhGTVBFR0Vzc2VuY2VUeXBlKSk7CisgICAgcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVs3XSA9IDB4MGE7CiAgICAgcmV0LT5wYXJlbnQucGFyZW50LnBpY3R1cmVfZXNzZW5jZV9jb2RpbmcudVsxM10gPSAweDMwOworICAgIHJldC0+cGFyZW50LnBhcmVudC5wYXJlbnQuZXNzZW5jZV9jb250YWluZXIudVs3XSA9IDB4MGE7CisgICAgcmV0LT5wYXJlbnQucGFyZW50LnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lci51WzEzXSA9IDB4MTA7CisgICAgcmV0LT5wYXJlbnQucGFyZW50LnBhcmVudC5lc3NlbmNlX2NvbnRhaW5lci51WzE0XSA9IDB4NjA7CiAgIH0gZWxzZSB7CiAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CiAgIH0KQEAgLTEzNjQsNiArMTM4MSw3IEBACiAiaGVpZ2h0ID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiIFwKICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIjsgIiBcCiAidmlkZW8veC1oMjY0LCAiIFwKKyJzdHJlYW0tZm9ybWF0ID0gKHN0cmluZykgYnl0ZS1zdHJlYW0sICIgXAogIndpZHRoID0gIiBHU1RfVklERU9fU0laRV9SQU5HRSAiLCAiIFwKICJoZWlnaHQgPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIgXAogImZyYW1lcmF0ZSA9ICIgR1NUX1ZJREVPX0ZQU19SQU5HRQpkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZtdXguYyBiL2dzdC9teGYvbXhmbXV4LmMKaW5kZXggMjczZDNiNi4uZDM2M2U3YSAxMDA2NDQKLS0tIGEvZ3N0L214Zi9teGZtdXguYworKysgYi9nc3QvbXhmL214Zm11eC5jCkBAIC0yNSw3ICsyNSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL2F1ZGlvICEgZGVjb2RlYmluICEgcXVldWUgISBteGZtdXggbmFtZT1tICEgZmlsZXNpbmsgbG9jYXRpb249ZmlsZS5teGYgICBmaWxlc3JjIGxvY2F0aW9uPS9wYXRoL3RvL3ZpZGVvICEgZGVjb2RlYmluICEgcXVldWUgISBtLgorICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj0vcGF0aC90by9hdWRpbyAhIGRlY29kZWJpbiAhIHF1ZXVlICEgbXhmbXV4IG5hbWU9bSAhIGZpbGVzaW5rIGxvY2F0aW9uPWZpbGUubXhmICAgZmlsZXNyYyBsb2NhdGlvbj0vcGF0aC90by92aWRlbyAhIGRlY29kZWJpbiAhIHF1ZXVlICEgbS4KICAqIF18IFRoaXMgcGlwZWxpbmUgbXV4ZXMgYW4gYXVkaW8gYW5kIHZpZGVvIGZpbGUgaW50byBhIHNpbmdsZSBNWEYgZmlsZS4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTQ2LDYgKzQ2LDY2IEBACiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChteGZtdXhfZGVidWcpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgbXhmbXV4X2RlYnVnCiAKKyNkZWZpbmUgR1NUX1RZUEVfTVhGX01VWF9QQUQgICAgICAgICAgICAoZ3N0X214Zl9tdXhfcGFkX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9NWEZfTVVYX1BBRChvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX01YRl9NVVhfUEFELCBHc3RNWEZNdXhQYWQpKQorI2RlZmluZSBHU1RfTVhGX01VWF9QQURfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX01YRl9NVVhfUEFELCBHc3RNWEZNdXhQYWRDbGFzcykpCisjZGVmaW5lIEdTVF9NWEZfTVVYX1BBRF9HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLEdTVF9UWVBFX01YRl9NVVhfUEFELCBHc3RNWEZNdXhQYWRDbGFzcykpCisjZGVmaW5lIEdTVF9JU19NWEZfTVVYX1BBRChvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX01YRl9NVVhfUEFEKSkKKyNkZWZpbmUgR1NUX0lTX01YRl9NVVhfUEFEX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9NWEZfTVVYX1BBRCkpCisKK3R5cGVkZWYgc3RydWN0Cit7CisgIEdzdEFnZ3JlZ2F0b3JQYWQgcGFyZW50OworCisgIGd1aW50NjQgcG9zOworICBHc3RDbG9ja1RpbWUgbGFzdF90aW1lc3RhbXA7CisKKyAgTVhGTWV0YWRhdGFGaWxlRGVzY3JpcHRvciAqZGVzY3JpcHRvcjsKKworICBHc3RBZGFwdGVyICphZGFwdGVyOworICBnYm9vbGVhbiBoYXZlX2NvbXBsZXRlX2VkaXRfdW5pdDsKKworICBncG9pbnRlciBtYXBwaW5nX2RhdGE7CisgIGNvbnN0IE1YRkVzc2VuY2VFbGVtZW50V3JpdGVyICp3cml0ZXI7CisgIE1YRkVzc2VuY2VFbGVtZW50V3JpdGVGdW5jIHdyaXRlX2Z1bmM7CisKKyAgTVhGTWV0YWRhdGFTb3VyY2VQYWNrYWdlICpzb3VyY2VfcGFja2FnZTsKKyAgTVhGTWV0YWRhdGFUaW1lbGluZVRyYWNrICpzb3VyY2VfdHJhY2s7Cit9IEdzdE1YRk11eFBhZDsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0QWdncmVnYXRvclBhZENsYXNzIHBhcmVudF9jbGFzczsKK30gR3N0TVhGTXV4UGFkQ2xhc3M7CisKK0dUeXBlIGdzdF9teGZfbXV4X3BhZF9nZXRfdHlwZSAodm9pZCk7CisKK0dfREVGSU5FX1RZUEUgKEdzdE1YRk11eFBhZCwgZ3N0X214Zl9tdXhfcGFkLCBHU1RfVFlQRV9BR0dSRUdBVE9SX1BBRCk7CisKK3N0YXRpYyB2b2lkCitnc3RfbXhmX211eF9wYWRfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdE1YRk11eFBhZCAqcGFkID0gR1NUX01YRl9NVVhfUEFEIChvYmplY3QpOworCisgIGdfb2JqZWN0X3VucmVmIChwYWQtPmFkYXB0ZXIpOworICBnX2ZyZWUgKHBhZC0+bWFwcGluZ19kYXRhKTsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X214Zl9tdXhfcGFkX3BhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X214Zl9tdXhfcGFkX2NsYXNzX2luaXQgKEdzdE1YRk11eFBhZENsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqb2JqZWN0X2NsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKworICBvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X214Zl9tdXhfcGFkX2ZpbmFsaXplOworfQorCitzdGF0aWMgdm9pZAorZ3N0X214Zl9tdXhfcGFkX2luaXQgKEdzdE1YRk11eFBhZCAqIHBhZCkKK3sKK30KKwogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY190ZW1wbCA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKQEAgLTU4LDI3ICsxMTgsMjAgQEAKIH07CiAKICNkZWZpbmUgZ3N0X214Zl9tdXhfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwotR19ERUZJTkVfVFlQRSAoR3N0TVhGTXV4LCBnc3RfbXhmX211eCwgR1NUX1RZUEVfRUxFTUVOVCk7CitHX0RFRklORV9UWVBFIChHc3RNWEZNdXgsIGdzdF9teGZfbXV4LCBHU1RfVFlQRV9BR0dSRUdBVE9SKTsKIAogc3RhdGljIHZvaWQgZ3N0X214Zl9tdXhfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwotc3RhdGljIHZvaWQgZ3N0X214Zl9tdXhfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotc3RhdGljIHZvaWQgZ3N0X214Zl9tdXhfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotICAgIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogCi1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfbXhmX211eF9jb2xsZWN0ZWQgKEdzdENvbGxlY3RQYWRzICogcGFkcywKLSAgICBncG9pbnRlciB1c2VyX2RhdGEpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X214Zl9tdXhfYWdncmVnYXRlIChHc3RBZ2dyZWdhdG9yICogYWdncmVnYXRvciwKKyAgICBnYm9vbGVhbiB0aW1lb3V0KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbXhmX211eF9zdG9wIChHc3RBZ2dyZWdhdG9yICogYWdncmVnYXRvcik7CiAKLXN0YXRpYyBnYm9vbGVhbiBnc3RfbXhmX211eF9oYW5kbGVfc3JjX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbXhmX211eF9zcmNfZXZlbnQgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2dyZWdhdG9yLAogICAgIEdzdEV2ZW50ICogZXZlbnQpOwotc3RhdGljIGdib29sZWFuIGdzdF9teGZfbXV4X2hhbmRsZV9zaW5rX2V2ZW50IChHc3RDb2xsZWN0UGFkcyAqIHBhZHMsCi0gICAgR3N0Q29sbGVjdERhdGEgKiBkYXRhLCBHc3RFdmVudCAqIGV2ZW50LCBncG9pbnRlciB1c2VyX2RhdGEpOwotc3RhdGljIEdzdFBhZCAqZ3N0X214Zl9tdXhfcmVxdWVzdF9uZXdfcGFkIChHc3RFbGVtZW50ICogZWxlbWVudCwKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbXhmX211eF9zaW5rX2V2ZW50IChHc3RBZ2dyZWdhdG9yICogYWdncmVnYXRvciwKKyAgICBHc3RBZ2dyZWdhdG9yUGFkICogYWdncGFkLCBHc3RFdmVudCAqIGV2ZW50KTsKK3N0YXRpYyBHc3RBZ2dyZWdhdG9yUGFkICpnc3RfbXhmX211eF9jcmVhdGVfbmV3X3BhZCAoR3N0QWdncmVnYXRvciAqIGFnZ3JlZ2F0b3IsCiAgICAgR3N0UGFkVGVtcGxhdGUgKiB0ZW1wbCwgY29uc3QgZ2NoYXIgKiBuYW1lLCBjb25zdCBHc3RDYXBzICogY2Fwcyk7Ci1zdGF0aWMgdm9pZCBnc3RfbXhmX211eF9yZWxlYXNlX3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFBhZCAqIHBhZCk7Ci0KLXN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgotZ3N0X214Zl9tdXhfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CiAKIHN0YXRpYyB2b2lkIGdzdF9teGZfbXV4X3Jlc2V0IChHc3RNWEZNdXggKiBtdXgpOwogCkBAIC04OCw3ICsxNDEsNyBAQAogICBndWludCBzaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKTsKICAgR3N0Rmxvd1JldHVybiByZXQ7CiAKLSAgcmV0ID0gZ3N0X3BhZF9wdXNoIChtdXgtPnNyY3BhZCwgYnVmKTsKKyAgcmV0ID0gZ3N0X2FnZ3JlZ2F0b3JfZmluaXNoX2J1ZmZlciAoR1NUX0FHR1JFR0FUT1IgKG11eCksIGJ1Zik7CiAgIG11eC0+b2Zmc2V0ICs9IHNpemU7CiAKICAgcmV0dXJuIHJldDsKQEAgLTk5LDIxICsxNTIsMjQgQEAKIHsKICAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOwogICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3M7CisgIEdzdEFnZ3JlZ2F0b3JDbGFzcyAqZ3N0YWdncmVnYXRvcl9jbGFzczsKICAgY29uc3QgR3N0UGFkVGVtcGxhdGUgKipwOwogCiAgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChteGZtdXhfZGVidWcsICJteGZtdXgiLCAwLCAiTVhGIG11eGVyIik7CiAKICAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7CiAgIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOworICBnc3RhZ2dyZWdhdG9yX2NsYXNzID0gKEdzdEFnZ3JlZ2F0b3JDbGFzcyAqKSBrbGFzczsKIAogICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9teGZfbXV4X2ZpbmFsaXplOwotICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfbXhmX211eF9zZXRfcHJvcGVydHk7Ci0gIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9teGZfbXV4X2dldF9wcm9wZXJ0eTsKIAotICBnc3RlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X214Zl9tdXhfY2hhbmdlX3N0YXRlKTsKLSAgZ3N0ZWxlbWVudF9jbGFzcy0+cmVxdWVzdF9uZXdfcGFkID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9yZXF1ZXN0X25ld19wYWQpOwotICBnc3RlbGVtZW50X2NsYXNzLT5yZWxlYXNlX3BhZCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9yZWxlYXNlX3BhZCk7CisgIGdzdGFnZ3JlZ2F0b3JfY2xhc3MtPmNyZWF0ZV9uZXdfcGFkID0KKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9jcmVhdGVfbmV3X3BhZCk7CisgIGdzdGFnZ3JlZ2F0b3JfY2xhc3MtPnNyY19ldmVudCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9zcmNfZXZlbnQpOworICBnc3RhZ2dyZWdhdG9yX2NsYXNzLT5zaW5rX2V2ZW50ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9teGZfbXV4X3NpbmtfZXZlbnQpOworICBnc3RhZ2dyZWdhdG9yX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9teGZfbXV4X3N0b3ApOworICBnc3RhZ2dyZWdhdG9yX2NsYXNzLT5hZ2dyZWdhdGUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X214Zl9tdXhfYWdncmVnYXRlKTsKKyAgZ3N0YWdncmVnYXRvcl9jbGFzcy0+c2lua3BhZHNfdHlwZSA9IEdTVF9UWVBFX01YRl9NVVhfUEFEOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZzcmNfdGVtcGwpKTsKQEAgLTEzNCwyMSArMTkwLDcgQEAKIHN0YXRpYyB2b2lkCiBnc3RfbXhmX211eF9pbml0IChHc3RNWEZNdXggKiBtdXgpCiB7Ci0gIEdzdENhcHMgKmNhcHM7Ci0KLSAgbXV4LT5zcmNwYWQgPSBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnNyY190ZW1wbCwgInNyYyIpOwotICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAobXV4LT5zcmNwYWQsIGdzdF9teGZfbXV4X2hhbmRsZV9zcmNfZXZlbnQpOwotICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoImFwcGxpY2F0aW9uL214ZiIpOwotICBnc3RfcGFkX3NldF9jYXBzIChtdXgtPnNyY3BhZCwgY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLSAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKG11eCksIG11eC0+c3JjcGFkKTsKLQotICBtdXgtPmNvbGxlY3QgPSBnc3RfY29sbGVjdF9wYWRzX25ldyAoKTsKLSAgZ3N0X2NvbGxlY3RfcGFkc19zZXRfZXZlbnRfZnVuY3Rpb24gKG11eC0+Y29sbGVjdCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbXhmX211eF9oYW5kbGVfc2lua19ldmVudCksIG11eCk7Ci0gIGdzdF9jb2xsZWN0X3BhZHNfc2V0X2Z1bmN0aW9uIChtdXgtPmNvbGxlY3QsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X214Zl9tdXhfY29sbGVjdGVkKSwgbXV4KTsKLQorICBtdXgtPmluZGV4X3RhYmxlID0gZ19hcnJheV9uZXcgKEZBTFNFLCBGQUxTRSwgc2l6ZW9mIChNWEZJbmRleFRhYmxlU2VnbWVudCkpOwogICBnc3RfbXhmX211eF9yZXNldCAobXV4KTsKIH0KIApAQCAtMTY2LDUwICsyMDgsMzAgQEAKICAgICBtdXgtPm1ldGFkYXRhX2xpc3QgPSBOVUxMOwogICB9CiAKLSAgZ3N0X29iamVjdF91bnJlZiAobXV4LT5jb2xsZWN0KTsKKyAgaWYgKG11eC0+aW5kZXhfdGFibGUpIHsKKyAgICBnX2FycmF5X2ZyZWUgKG11eC0+aW5kZXhfdGFibGUsIFRSVUUpOworICAgIG11eC0+aW5kZXhfdGFibGUgPSBOVUxMOworICB9CiAKICAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwogfQogCiBzdGF0aWMgdm9pZAotZ3N0X214Zl9tdXhfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAotICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIC8vR3N0TVhGTXV4ICptdXggPSBHU1RfTVhGX01VWCAob2JqZWN0KTsKLQotICBzd2l0Y2ggKHByb3BfaWQpIHsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfbXhmX211eF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsCi0gICAgZ3VpbnQgcHJvcF9pZCwgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKLXsKLSAgLy9Hc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKIGdzdF9teGZfbXV4X3Jlc2V0IChHc3RNWEZNdXggKiBtdXgpCiB7Ci0gIEdTTGlzdCAqc2w7CisgIEdMaXN0ICpsOwogCi0gIHdoaWxlICgoc2wgPSBtdXgtPmNvbGxlY3QtPmRhdGEpICE9IE5VTEwpIHsKLSAgICBHc3RNWEZNdXhQYWQgKmNwYWQgPSAoR3N0TVhGTXV4UGFkICopIHNsLT5kYXRhOworICBHU1RfT0JKRUNUX0xPQ0sgKG11eCk7CisgIHdoaWxlICgobCA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzKSAhPSBOVUxMKSB7CisgICAgR3N0UGFkICpwYWQgPSAoR3N0UGFkICopIGwtPmRhdGE7CiAKLSAgICBnX29iamVjdF91bnJlZiAoY3BhZC0+YWRhcHRlcik7Ci0gICAgZ19mcmVlIChjcGFkLT5tYXBwaW5nX2RhdGEpOwotCi0gICAgZ3N0X2NvbGxlY3RfcGFkc19yZW1vdmVfcGFkIChtdXgtPmNvbGxlY3QsIGNwYWQtPmNvbGxlY3QucGFkKTsKKyAgICBnc3Rfb2JqZWN0X3JlZiAocGFkKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKKyAgICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkIChHU1RfRUxFTUVOVF9DQVNUIChtdXgpLCBwYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHBhZCk7CisgICAgR1NUX09CSkVDVF9MT0NLIChtdXgpOwogICB9CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChtdXgpOwogCiAgIG11eC0+c3RhdGUgPSBHU1RfTVhGX01VWF9TVEFURV9IRUFERVI7CiAgIG11eC0+bl9wYWRzID0gMDsKQEAgLTIyOCwzNSArMjUwLDMyIEBACiAgIG11eC0+bGFzdF9nY190aW1lc3RhbXAgPSAwOwogICBtdXgtPmxhc3RfZ2NfcG9zaXRpb24gPSAwOwogICBtdXgtPm9mZnNldCA9IDA7CisKKyAgZ19hcnJheV9zZXRfc2l6ZSAobXV4LT5pbmRleF90YWJsZSwgMCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X214Zl9tdXhfaGFuZGxlX3NyY19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsCi0gICAgR3N0RXZlbnQgKiBldmVudCkKK2dzdF9teGZfbXV4X3NyY19ldmVudCAoR3N0QWdncmVnYXRvciAqIGFnZ3JlZ2F0b3IsIEdzdEV2ZW50ICogZXZlbnQpCiB7Ci0gIEdzdEV2ZW50VHlwZSB0eXBlOwotCi0gIHR5cGUgPSBldmVudCA/IEdTVF9FVkVOVF9UWVBFIChldmVudCkgOiBHU1RfRVZFTlRfVU5LTk9XTjsKLQotICBzd2l0Y2ggKHR5cGUpIHsKKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CiAgICAgY2FzZSBHU1RfRVZFTlRfU0VFSzoKICAgICAgIC8qIGRpc2FibGUgc2Vla2luZyBmb3Igbm93ICovCisgICAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKICAgICAgIHJldHVybiBGQUxTRTsKICAgICBkZWZhdWx0OgorICAgICAgcmV0dXJuIEdTVF9BR0dSRUdBVE9SX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zcmNfZXZlbnQgKGFnZ3JlZ2F0b3IsIGV2ZW50KTsKICAgICAgIGJyZWFrOwogICB9CiAKLSAgcmV0dXJuIGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKKyAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X214Zl9tdXhfZXZlbnRfY2FwcyAoR3N0UGFkICogcGFkLCBHc3RDYXBzICogY2FwcykKK2dzdF9teGZfbXV4X3NldF9jYXBzIChHc3RNWEZNdXggKiBtdXgsIEdzdE1YRk11eFBhZCAqIHBhZCwgR3N0Q2FwcyAqIGNhcHMpCiB7Ci0gIEdzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKGdzdF9wYWRfZ2V0X3BhcmVudCAocGFkKSk7Ci0gIEdzdE1YRk11eFBhZCAqY3BhZCA9IChHc3RNWEZNdXhQYWQgKikgZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwogICBnYm9vbGVhbiByZXQgPSBUUlVFOwogICBNWEZVVUlEIGRfaW5zdGFuY2VfdWlkID0geyB7MCx9IH07Ci0gIE1YRk1ldGFkYXRhRmlsZURlc2NyaXB0b3IgKm9sZF9kZXNjcmlwdG9yID0gY3BhZC0+ZGVzY3JpcHRvcjsKKyAgTVhGTWV0YWRhdGFGaWxlRGVzY3JpcHRvciAqb2xkX2Rlc2NyaXB0b3IgPSBwYWQtPmRlc2NyaXB0b3I7CiAgIEdMaXN0ICpsOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIlNldHRpbmcgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CkBAIC0yNjQsMjcgKzI4MywyNiBAQAogICBpZiAob2xkX2Rlc2NyaXB0b3IpIHsKICAgICBtZW1jcHkgKCZkX2luc3RhbmNlX3VpZCwgJk1YRl9NRVRBREFUQV9CQVNFIChvbGRfZGVzY3JpcHRvciktPmluc3RhbmNlX3VpZCwKICAgICAgICAgMTYpOwotICAgIGNwYWQtPmRlc2NyaXB0b3IgPSBOVUxMOwotICAgIGdfZnJlZSAoY3BhZC0+bWFwcGluZ19kYXRhKTsKLSAgICBjcGFkLT5tYXBwaW5nX2RhdGEgPSBOVUxMOworICAgIHBhZC0+ZGVzY3JpcHRvciA9IE5VTEw7CisgICAgZ19mcmVlIChwYWQtPm1hcHBpbmdfZGF0YSk7CisgICAgcGFkLT5tYXBwaW5nX2RhdGEgPSBOVUxMOwogICB9CiAKLSAgY3BhZC0+ZGVzY3JpcHRvciA9Ci0gICAgICBjcGFkLT53cml0ZXItPmdldF9kZXNjcmlwdG9yIChHU1RfUEFEX1BBRF9URU1QTEFURSAocGFkKSwgY2FwcywKLSAgICAgICZjcGFkLT53cml0ZV9mdW5jLCAmY3BhZC0+bWFwcGluZ19kYXRhKTsKKyAgcGFkLT5kZXNjcmlwdG9yID0KKyAgICAgIHBhZC0+d3JpdGVyLT5nZXRfZGVzY3JpcHRvciAoR1NUX1BBRF9QQURfVEVNUExBVEUgKHBhZCksIGNhcHMsCisgICAgICAmcGFkLT53cml0ZV9mdW5jLCAmcGFkLT5tYXBwaW5nX2RhdGEpOwogCi0gIGlmICghY3BhZC0+ZGVzY3JpcHRvcikgeworICBpZiAoIXBhZC0+ZGVzY3JpcHRvcikgewogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG11eCwKICAgICAgICAgIkNvdWxkbid0IGdldCBkZXNjcmlwdG9yIGZvciBwYWQgJyVzJyB3aXRoIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsCiAgICAgICAgIEdTVF9QQURfTkFNRSAocGFkKSwgY2Fwcyk7Ci0gICAgZ3N0X29iamVjdF91bnJlZiAobXV4KTsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KIAogICBpZiAobXhmX3V1aWRfaXNfemVybyAoJmRfaW5zdGFuY2VfdWlkKSkKICAgICBteGZfdXVpZF9pbml0ICgmZF9pbnN0YW5jZV91aWQsIG11eC0+bWV0YWRhdGEpOwogCi0gIG1lbWNweSAoJk1YRl9NRVRBREFUQV9CQVNFIChjcGFkLT5kZXNjcmlwdG9yKS0+aW5zdGFuY2VfdWlkLCAmZF9pbnN0YW5jZV91aWQsCisgIG1lbWNweSAoJk1YRl9NRVRBREFUQV9CQVNFIChwYWQtPmRlc2NyaXB0b3IpLT5pbnN0YW5jZV91aWQsICZkX2luc3RhbmNlX3VpZCwKICAgICAgIDE2KTsKIAogICBpZiAob2xkX2Rlc2NyaXB0b3IpIHsKQEAgLTI5MiwxNiArMzEwLDE2IEBACiAgICAgICBNWEZNZXRhZGF0YUJhc2UgKnRtcCA9IGwtPmRhdGE7CiAKICAgICAgIGlmIChteGZfdXVpZF9pc19lcXVhbCAoJmRfaW5zdGFuY2VfdWlkLCAmdG1wLT5pbnN0YW5jZV91aWQpKSB7Ci0gICAgICAgIGwtPmRhdGEgPSBjcGFkLT5kZXNjcmlwdG9yOworICAgICAgICBsLT5kYXRhID0gcGFkLT5kZXNjcmlwdG9yOwogICAgICAgICBicmVhazsKICAgICAgIH0KICAgICB9CiAgIH0gZWxzZSB7Ci0gICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3ByZXBlbmQgKG11eC0+bWV0YWRhdGFfbGlzdCwgY3BhZC0+ZGVzY3JpcHRvcik7CisgICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3ByZXBlbmQgKG11eC0+bWV0YWRhdGFfbGlzdCwgcGFkLT5kZXNjcmlwdG9yKTsKICAgfQogCiAgIGdfaGFzaF90YWJsZV9yZXBsYWNlIChtdXgtPm1ldGFkYXRhLAotICAgICAgJk1YRl9NRVRBREFUQV9CQVNFIChjcGFkLT5kZXNjcmlwdG9yKS0+aW5zdGFuY2VfdWlkLCBjcGFkLT5kZXNjcmlwdG9yKTsKKyAgICAgICZNWEZfTUVUQURBVEFfQkFTRSAocGFkLT5kZXNjcmlwdG9yKS0+aW5zdGFuY2VfdWlkLCBwYWQtPmRlc2NyaXB0b3IpOwogCiAgIGlmIChvbGRfZGVzY3JpcHRvcikgewogICAgIGlmIChtdXgtPnByZWZhY2UgJiYgbXV4LT5wcmVmYWNlLT5jb250ZW50X3N0b3JhZ2UgJiYKQEAgLTMzMCw1NSArMzQ4LDUyIEBACiAgICAgICAgICAgICBpZiAodG1wLT5zdWJfZGVzY3JpcHRvcnNbal0gPT0KICAgICAgICAgICAgICAgICBNWEZfTUVUQURBVEFfR0VORVJJQ19ERVNDUklQVE9SIChvbGRfZGVzY3JpcHRvcikpIHsKICAgICAgICAgICAgICAgdG1wLT5zdWJfZGVzY3JpcHRvcnNbal0gPQotICAgICAgICAgICAgICAgICAgTVhGX01FVEFEQVRBX0dFTkVSSUNfREVTQ1JJUFRPUiAoY3BhZC0+ZGVzY3JpcHRvcik7CisgICAgICAgICAgICAgICAgICBNWEZfTUVUQURBVEFfR0VORVJJQ19ERVNDUklQVE9SIChwYWQtPmRlc2NyaXB0b3IpOwogICAgICAgICAgICAgICBtZW1jcHkgKCZ0bXAtPnN1Yl9kZXNjcmlwdG9yc191aWRzW2pdLCAmZF9pbnN0YW5jZV91aWQsIDE2KTsKICAgICAgICAgICAgIH0KICAgICAgICAgICB9CiAgICAgICAgIH0gZWxzZSBpZiAocGFja2FnZS0+ZGVzY3JpcHRvciA9PQogICAgICAgICAgICAgTVhGX01FVEFEQVRBX0dFTkVSSUNfREVTQ1JJUFRPUiAob2xkX2Rlc2NyaXB0b3IpKSB7CiAgICAgICAgICAgcGFja2FnZS0+ZGVzY3JpcHRvciA9Ci0gICAgICAgICAgICAgIE1YRl9NRVRBREFUQV9HRU5FUklDX0RFU0NSSVBUT1IgKGNwYWQtPmRlc2NyaXB0b3IpOworICAgICAgICAgICAgICBNWEZfTUVUQURBVEFfR0VORVJJQ19ERVNDUklQVE9SIChwYWQtPmRlc2NyaXB0b3IpOwogICAgICAgICAgIG1lbWNweSAoJnBhY2thZ2UtPmRlc2NyaXB0b3JfdWlkLCAmZF9pbnN0YW5jZV91aWQsIDE2KTsKICAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfQogCi0gIGdzdF9vYmplY3RfdW5yZWYgKG11eCk7Ci0KICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfbXhmX211eF9oYW5kbGVfc2lua19ldmVudCAoR3N0Q29sbGVjdFBhZHMgKiBwYWRzLCBHc3RDb2xsZWN0RGF0YSAqIGRhdGEsCi0gICAgR3N0RXZlbnQgKiBldmVudCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQorZ3N0X214Zl9tdXhfc2lua19ldmVudCAoR3N0QWdncmVnYXRvciAqIGFnZ3JlZ2F0b3IsCisgICAgR3N0QWdncmVnYXRvclBhZCAqIGFnZ3BhZCwgR3N0RXZlbnQgKiBldmVudCkKIHsKLSAgR3N0Q2FwcyAqY2FwczsKKyAgR3N0TVhGTXV4ICptdXggPSBHU1RfTVhGX01VWCAoYWdncmVnYXRvcik7CiAgIGdib29sZWFuIHJldCA9IFRSVUU7CiAKICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CiAgICAgY2FzZSBHU1RfRVZFTlRfVEFHOgogICAgICAgLyogVE9ETzogZG8gc29tZXRoaW5nIHdpdGggdGhlIHRhZ3MgKi8KICAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0VWRU5UX1NFR01FTlQ6Ci0gICAgICAvKiBXZSBkb24ndCBzdXBwb3J0IFNFR01FTlQgZXZlbnRzICovCi0gICAgICByZXQgPSBGQUxTRTsKLSAgICAgIGdzdF9ldmVudF91bnJlZiAoZXZlbnQpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzoKKyAgICBjYXNlIEdTVF9FVkVOVF9DQVBTOnsKKyAgICAgIEdzdENhcHMgKmNhcHM7CisKICAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOwogCi0gICAgICBnc3RfbXhmX211eF9ldmVudF9jYXBzIChkYXRhLT5wYWQsIGNhcHMpOworICAgICAgcmV0ID0gZ3N0X214Zl9tdXhfc2V0X2NhcHMgKG11eCwgR1NUX01YRl9NVVhfUEFEIChhZ2dwYWQpLCBjYXBzKTsKIAotICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogICAgICAgYnJlYWs7CisgICAgfQogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKICAgfQogCi0gIC8qIG5vdyBHc3RDb2xsZWN0UGFkcyBjYW4gdGFrZSBjYXJlIG9mIHRoZSByZXN0LCBlLmcuIEVPUyAqLworICAvKiBub3cgR3N0QWdncmVnYXRvciBjYW4gdGFrZSBjYXJlIG9mIHRoZSByZXN0LCBlLmcuIEVPUyAqLwogICBpZiAocmV0KQotICAgIHJldCA9IGdzdF9jb2xsZWN0X3BhZHNfZXZlbnRfZGVmYXVsdCAocGFkcywgZGF0YSwgZXZlbnQsIEZBTFNFKTsKKyAgICByZXQgPQorICAgICAgICBHU1RfQUdHUkVHQVRPUl9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2lua19ldmVudCAoYWdncmVnYXRvciwgYWdncGFkLAorICAgICAgICBldmVudCk7CiAKICAgcmV0dXJuIHJldDsKIH0KQEAgLTM5NSwxMyArNDEwLDEyIEBACiAgIHJldHVybiBnX3N0cmluZ19mcmVlIChzdHJpbmcsIEZBTFNFKTsKIH0KIAotc3RhdGljIEdzdFBhZCAqCi1nc3RfbXhmX211eF9yZXF1ZXN0X25ld19wYWQgKEdzdEVsZW1lbnQgKiBlbGVtZW50LAorc3RhdGljIEdzdEFnZ3JlZ2F0b3JQYWQgKgorZ3N0X214Zl9tdXhfY3JlYXRlX25ld19wYWQgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2dyZWdhdG9yLAogICAgIEdzdFBhZFRlbXBsYXRlICogdGVtcGwsIGNvbnN0IGdjaGFyICogcGFkX25hbWUsIGNvbnN0IEdzdENhcHMgKiBjYXBzKQogewotICBHc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYIChlbGVtZW50KTsKLSAgR3N0TVhGTXV4UGFkICpjcGFkOwotICBHc3RQYWQgKnBhZCA9IE5VTEw7CisgIEdzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKGFnZ3JlZ2F0b3IpOworICBHc3RNWEZNdXhQYWQgKnBhZDsKICAgZ3VpbnQgcGFkX251bWJlcjsKICAgZ2NoYXIgKm5hbWUgPSBOVUxMOwogICBjb25zdCBNWEZFc3NlbmNlRWxlbWVudFdyaXRlciAqd3JpdGVyOwpAQCAtNDIwLDU4ICs0MzQsNTIgQEAKICAgbmFtZSA9IGdzdF9teGZfbXV4X2NyZWF0ZV9wYWRfbmFtZSAodGVtcGwsIHBhZF9udW1iZXIpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKG11eCwgIkNyZWF0aW5nIHBhZCAnJXMnIiwgbmFtZSk7Ci0gIHBhZCA9IGdzdF9wYWRfbmV3X2Zyb21fdGVtcGxhdGUgKHRlbXBsLCBuYW1lKTsKKyAgcGFkID0KKyAgICAgIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfTVhGX01VWF9QQUQsICJuYW1lIiwgbmFtZSwgImRpcmVjdGlvbiIsCisgICAgICBHU1RfUEFEX1NJTkssICJ0ZW1wbGF0ZSIsIHRlbXBsLCBOVUxMKTsKICAgZ19mcmVlIChuYW1lKTsKLSAgY3BhZCA9IChHc3RNWEZNdXhQYWQgKikKLSAgICAgIGdzdF9jb2xsZWN0X3BhZHNfYWRkX3BhZCAobXV4LT5jb2xsZWN0LCBwYWQsIHNpemVvZiAoR3N0TVhGTXV4UGFkKSwgTlVMTCwKLSAgICAgIFRSVUUpOwotICBjcGFkLT5sYXN0X3RpbWVzdGFtcCA9IDA7Ci0gIGNwYWQtPmFkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXcgKCk7Ci0gIGNwYWQtPndyaXRlciA9IHdyaXRlcjsKKyAgcGFkLT5sYXN0X3RpbWVzdGFtcCA9IDA7CisgIHBhZC0+YWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldyAoKTsKKyAgcGFkLT53cml0ZXIgPSB3cml0ZXI7CiAKLSAgZ3N0X3BhZF91c2VfZml4ZWRfY2FwcyAocGFkKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChwYWQsIFRSVUUpOwotICBnc3RfZWxlbWVudF9hZGRfcGFkIChlbGVtZW50LCBwYWQpOworICBnc3RfcGFkX3VzZV9maXhlZF9jYXBzIChHU1RfUEFEX0NBU1QgKHBhZCkpOwogCi0gIHJldHVybiBwYWQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfbXhmX211eF9yZWxlYXNlX3BhZCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFBhZCAqIHBhZCkKLXsKLSAgLypHc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYIChHU1RfUEFEX1BBUkVOVCAocGFkKSk7Ci0gICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IChHc3RNWEZNdXhQYWQgKikgZ3N0X3BhZF9nZXRfZWxlbWVudF9wcml2YXRlIChwYWQpOwotCi0gICAgIGdfb2JqZWN0X3VucmVmIChjcGFkLT5hZGFwdGVyKTsKLSAgICAgZ19mcmVlIChjcGFkLT5tYXBwaW5nX2RhdGEpOwotCi0gICAgIGdzdF9jb2xsZWN0X3BhZHNfcmVtb3ZlX3BhZCAobXV4LT5jb2xsZWN0LCBwYWQpOwotICAgICBnc3RfZWxlbWVudF9yZW1vdmVfcGFkIChlbGVtZW50LCBwYWQpOyAqLworICByZXR1cm4gR1NUX0FHR1JFR0FUT1JfUEFEIChwYWQpOwogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X214Zl9tdXhfY3JlYXRlX21ldGFkYXRhIChHc3RNWEZNdXggKiBtdXgpCiB7CiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7Ci0gIEdTTGlzdCAqbDsKKyAgR0xpc3QgKmw7CiAgIEdBcnJheSAqdG1wOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKG11eCwgIkNyZWF0aW5nIE1YRiBtZXRhZGF0YSIpOwogCi0gIGZvciAobCA9IG11eC0+Y29sbGVjdC0+ZGF0YTsgbDsgbCA9IGwtPm5leHQpIHsKLSAgICBHc3RNWEZNdXhQYWQgKmNwYWQgPSBsLT5kYXRhOworICBHU1RfT0JKRUNUX0xPQ0sgKG11eCk7CisKKyAgZm9yIChsID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0TVhGTXV4UGFkICpwYWQgPSBsLT5kYXRhOwogICAgIEdzdENhcHMgKmNhcHM7CisgICAgR3N0QnVmZmVyICpidWZmZXI7CiAKLSAgICBpZiAoIWNwYWQgfHwgIWNwYWQtPmRlc2NyaXB0b3IpCisgICAgaWYgKCFwYWQgfHwgIXBhZC0+ZGVzY3JpcHRvcikgeworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQogCi0gICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoY3BhZC0+Y29sbGVjdC5wYWQpOwotICAgIGlmICghY2FwcykKKyAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfUEFEX0NBU1QgKHBhZCkpOworICAgIGlmICghY2FwcykgeworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQogCi0gICAgaWYgKGNwYWQtPndyaXRlci0+dXBkYXRlX2Rlc2NyaXB0b3IpCi0gICAgICBjcGFkLT53cml0ZXItPnVwZGF0ZV9kZXNjcmlwdG9yIChjcGFkLT5kZXNjcmlwdG9yLAotICAgICAgICAgIGNhcHMsIGNwYWQtPm1hcHBpbmdfZGF0YSwgY3BhZC0+Y29sbGVjdC5idWZmZXIpOworICAgIGJ1ZmZlciA9IGdzdF9hZ2dyZWdhdG9yX3BhZF9nZXRfYnVmZmVyIChHU1RfQUdHUkVHQVRPUl9QQUQgKHBhZCkpOworICAgIGlmIChwYWQtPndyaXRlci0+dXBkYXRlX2Rlc2NyaXB0b3IpCisgICAgICBwYWQtPndyaXRlci0+dXBkYXRlX2Rlc2NyaXB0b3IgKHBhZC0+ZGVzY3JpcHRvciwKKyAgICAgICAgICBjYXBzLCBwYWQtPm1hcHBpbmdfZGF0YSwgYnVmZmVyKTsKKyAgICBpZiAoYnVmZmVyKQorICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CiAgIH0KIApAQCAtNDkyLDE3ICs1MDAsMTkgQEAKICAgICAgIFRSVUUsIEZBTFNFKTsKIAogICB0bXAgPSBnX2FycmF5X25ldyAoRkFMU0UsIEZBTFNFLCBzaXplb2YgKE1YRlVMKSk7Ci0gIGZvciAobCA9IG11eC0+Y29sbGVjdC0+ZGF0YTsgbDsgbCA9IGwtPm5leHQpIHsKLSAgICBHc3RNWEZNdXhQYWQgKmNwYWQgPSBsLT5kYXRhOworICBmb3IgKGwgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICBHc3RNWEZNdXhQYWQgKnBhZCA9IGwtPmRhdGE7CiAgICAgZ3VpbnQgaTsKICAgICBnYm9vbGVhbiBmb3VuZCA9IEZBTFNFOwogCi0gICAgaWYgKCFjcGFkIHx8ICFjcGFkLT5kZXNjcmlwdG9yIHx8Ci0gICAgICAgIG14Zl91bF9pc196ZXJvICgmY3BhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIpKQorICAgIGlmICghcGFkIHx8ICFwYWQtPmRlc2NyaXB0b3IgfHwKKyAgICAgICAgbXhmX3VsX2lzX3plcm8gKCZwYWQtPmRlc2NyaXB0b3ItPmVzc2VuY2VfY29udGFpbmVyKSkgeworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAgICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgICAgfQogCiAgICAgZm9yIChpID0gMDsgaSA8IHRtcC0+bGVuOyBpKyspIHsKLSAgICAgIGlmIChteGZfdWxfaXNfZXF1YWwgKCZjcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lciwKKyAgICAgIGlmIChteGZfdWxfaXNfZXF1YWwgKCZwYWQtPmRlc2NyaXB0b3ItPmVzc2VuY2VfY29udGFpbmVyLAogICAgICAgICAgICAgICAmZ19hcnJheV9pbmRleCAodG1wLCBNWEZVTCwgaSkpKSB7CiAgICAgICAgIGZvdW5kID0gVFJVRTsKICAgICAgICAgYnJlYWs7CkBAIC01MTIsNyArNTIyLDcgQEAKICAgICBpZiAoZm91bmQpCiAgICAgICBjb250aW51ZTsKIAotICAgIGdfYXJyYXlfYXBwZW5kX3ZhbCAodG1wLCBjcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lcik7CisgICAgZ19hcnJheV9hcHBlbmRfdmFsICh0bXAsIHBhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIpOwogICB9CiAgIG11eC0+cHJlZmFjZS0+bl9lc3NlbmNlX2NvbnRhaW5lcnMgPSB0bXAtPmxlbjsKICAgbXV4LT5wcmVmYWNlLT5lc3NlbmNlX2NvbnRhaW5lcnMgPSAoTVhGVUwgKikgZ19hcnJheV9mcmVlICh0bXAsIEZBTFNFKTsKQEAgLTYyMywxOCArNjMzLDE4IEBACiAgICAgICBtZW1jcHkgKCZwLT5wYXJlbnQucGFja2FnZV9tb2RpZmllZF9kYXRlLAogICAgICAgICAgICZtdXgtPnByZWZhY2UtPmxhc3RfbW9kaWZpZWRfZGF0ZSwgc2l6ZW9mIChNWEZUaW1lc3RhbXApKTsKIAotICAgICAgcC0+cGFyZW50Lm5fdHJhY2tzID0gZ19zbGlzdF9sZW5ndGggKG11eC0+Y29sbGVjdC0+ZGF0YSk7CisgICAgICBwLT5wYXJlbnQubl90cmFja3MgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5udW1zaW5rcGFkcyArIDE7CiAgICAgICBwLT5wYXJlbnQudHJhY2tzID0gZ19uZXcwIChNWEZNZXRhZGF0YVRyYWNrICosIHAtPnBhcmVudC5uX3RyYWNrcyk7CiAKLSAgICAgIGlmIChwLT5wYXJlbnQubl90cmFja3MgPiAxKSB7CisgICAgICBpZiAocC0+cGFyZW50Lm5fdHJhY2tzID4gMikgewogICAgICAgICBNWEZNZXRhZGF0YU11bHRpcGxlRGVzY3JpcHRvciAqZDsKIAogICAgICAgICBwLT5kZXNjcmlwdG9yID0gKE1YRk1ldGFkYXRhR2VuZXJpY0Rlc2NyaXB0b3IgKikKICAgICAgICAgICAgIGdfb2JqZWN0X25ldyAoTVhGX1RZUEVfTUVUQURBVEFfTVVMVElQTEVfREVTQ1JJUFRPUiwgTlVMTCk7CiAgICAgICAgIGQgPSAoTVhGTWV0YWRhdGFNdWx0aXBsZURlc2NyaXB0b3IgKikgcC0+ZGVzY3JpcHRvcjsKLSAgICAgICAgZC0+bl9zdWJfZGVzY3JpcHRvcnMgPSBwLT5wYXJlbnQubl90cmFja3M7CisgICAgICAgIGQtPm5fc3ViX2Rlc2NyaXB0b3JzID0gcC0+cGFyZW50Lm5fdHJhY2tzIC0gMTsKICAgICAgICAgZC0+c3ViX2Rlc2NyaXB0b3JzID0KLSAgICAgICAgICAgIGdfbmV3MCAoTVhGTWV0YWRhdGFHZW5lcmljRGVzY3JpcHRvciAqLCBwLT5wYXJlbnQubl90cmFja3MpOworICAgICAgICAgICAgZ19uZXcwIChNWEZNZXRhZGF0YUdlbmVyaWNEZXNjcmlwdG9yICosIHAtPnBhcmVudC5uX3RyYWNrcyAtIDEpOwogCiAgICAgICAgIG14Zl91dWlkX2luaXQgKCZNWEZfTUVUQURBVEFfQkFTRSAoZCktPmluc3RhbmNlX3VpZCwgbXV4LT5tZXRhZGF0YSk7CiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKG11eC0+bWV0YWRhdGEsCkBAIC02NDQsMTUgKzY1NCwxOCBAQAogCiAgICAgICAvKiBUcmFja3MgKi8KICAgICAgIHsKLSAgICAgICAgZ3VpbnQgbiA9IDA7CisgICAgICAgIGd1aW50IG47CisKKyAgICAgICAgbiA9IDE7CiAKICAgICAgICAgLyogRXNzZW5jZSB0cmFja3MgKi8KLSAgICAgICAgZm9yIChsID0gbXV4LT5jb2xsZWN0LT5kYXRhOyBsOyBsID0gbC0+bmV4dCkgewotICAgICAgICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IGwtPmRhdGE7CisgICAgICAgIGZvciAobCA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzOyBsOyBsID0gbC0+bmV4dCkgeworICAgICAgICAgIEdzdE1YRk11eFBhZCAqcGFkID0gbC0+ZGF0YTsKICAgICAgICAgICBNWEZNZXRhZGF0YVRpbWVsaW5lVHJhY2sgKnRyYWNrOwogICAgICAgICAgIE1YRk1ldGFkYXRhU2VxdWVuY2UgKnNlcXVlbmNlOwogICAgICAgICAgIE1YRk1ldGFkYXRhU291cmNlQ2xpcCAqY2xpcDsKICAgICAgICAgICBHc3RDYXBzICpjYXBzOworICAgICAgICAgIEdzdEJ1ZmZlciAqYnVmZmVyOwogCiAgICAgICAgICAgcC0+cGFyZW50LnRyYWNrc1tuXSA9IChNWEZNZXRhZGF0YVRyYWNrICopCiAgICAgICAgICAgICAgIGdfb2JqZWN0X25ldyAoTVhGX1RZUEVfTUVUQURBVEFfVElNRUxJTkVfVFJBQ0ssIE5VTEwpOwpAQCAtNjYzLDE1ICs2NzYsMjEgQEAKICAgICAgICAgICAgICAgJk1YRl9NRVRBREFUQV9CQVNFICh0cmFjayktPmluc3RhbmNlX3VpZCwgdHJhY2spOwogICAgICAgICAgIG11eC0+bWV0YWRhdGFfbGlzdCA9IGdfbGlzdF9wcmVwZW5kIChtdXgtPm1ldGFkYXRhX2xpc3QsIHRyYWNrKTsKIAotICAgICAgICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKGNwYWQtPmNvbGxlY3QucGFkKTsKKyAgICAgICAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfUEFEX0NBU1QgKHBhZCkpOworICAgICAgICAgIGJ1ZmZlciA9IGdzdF9hZ2dyZWdhdG9yX3BhZF9nZXRfYnVmZmVyIChHU1RfQUdHUkVHQVRPUl9QQUQgKHBhZCkpOwogICAgICAgICAgIHRyYWNrLT5wYXJlbnQudHJhY2tfaWQgPSBuICsgMTsKICAgICAgICAgICB0cmFjay0+cGFyZW50LnRyYWNrX251bWJlciA9Ci0gICAgICAgICAgICAgIGNwYWQtPndyaXRlci0+Z2V0X3RyYWNrX251bWJlcl90ZW1wbGF0ZSAoY3BhZC0+ZGVzY3JpcHRvciwKLSAgICAgICAgICAgICAgY2FwcywgY3BhZC0+bWFwcGluZ19kYXRhKTsKKyAgICAgICAgICAgICAgcGFkLT53cml0ZXItPmdldF90cmFja19udW1iZXJfdGVtcGxhdGUgKHBhZC0+ZGVzY3JpcHRvciwKKyAgICAgICAgICAgICAgY2FwcywgcGFkLT5tYXBwaW5nX2RhdGEpOwogCi0gICAgICAgICAgY3BhZC0+d3JpdGVyLT5nZXRfZWRpdF9yYXRlIChjcGFkLT5kZXNjcmlwdG9yLAotICAgICAgICAgICAgICBjYXBzLCBjcGFkLT5tYXBwaW5nX2RhdGEsCi0gICAgICAgICAgICAgIGNwYWQtPmNvbGxlY3QuYnVmZmVyLCBwLCB0cmFjaywgJnRyYWNrLT5lZGl0X3JhdGUpOworICAgICAgICAgIC8qIEZJWE1FOiBBbGwgdHJhY2tzIGluIGEgc291cmNlIHBhY2thZ2UgbXVzdCBoYXZlIHRoZSBzYW1lIGVkaXQKKyAgICAgICAgICAgKiByYXRlISBUaGlzIG1lYW5zIHRoYXQgaWYgd2UgaGF2ZSBkaWZmZXJlbnQgZWRpdCByYXRlcywgd2UgbmVlZCB0bworICAgICAgICAgICAqIG1ha2UgdGhlbSBkaWZmZXJlbnQgc291cmNlIHBhY2thZ2VzIGFuZCBlc3NlbmNlIGNvbnRhaW5lcnMgd2l0aAorICAgICAgICAgICAqIGEgZGlmZmVyZW50IEJvZHlTSUQgKi8KKyAgICAgICAgICBwYWQtPndyaXRlci0+Z2V0X2VkaXRfcmF0ZSAocGFkLT5kZXNjcmlwdG9yLAorICAgICAgICAgICAgICBjYXBzLCBwYWQtPm1hcHBpbmdfZGF0YSwgYnVmZmVyLCBwLCB0cmFjaywgJnRyYWNrLT5lZGl0X3JhdGUpOworICAgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwogICAgICAgICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKIAogICAgICAgICAgIHNlcXVlbmNlID0gdHJhY2stPnBhcmVudC5zZXF1ZW5jZSA9IChNWEZNZXRhZGF0YVNlcXVlbmNlICopCkBAIC02ODIsNyArNzAxLDcgQEAKICAgICAgICAgICAgICAgJk1YRl9NRVRBREFUQV9CQVNFIChzZXF1ZW5jZSktPmluc3RhbmNlX3VpZCwgc2VxdWVuY2UpOwogICAgICAgICAgIG11eC0+bWV0YWRhdGFfbGlzdCA9IGdfbGlzdF9wcmVwZW5kIChtdXgtPm1ldGFkYXRhX2xpc3QsIHNlcXVlbmNlKTsKIAotICAgICAgICAgIG1lbWNweSAoJnNlcXVlbmNlLT5kYXRhX2RlZmluaXRpb24sICZjcGFkLT53cml0ZXItPmRhdGFfZGVmaW5pdGlvbiwKKyAgICAgICAgICBtZW1jcHkgKCZzZXF1ZW5jZS0+ZGF0YV9kZWZpbml0aW9uLCAmcGFkLT53cml0ZXItPmRhdGFfZGVmaW5pdGlvbiwKICAgICAgICAgICAgICAgMTYpOwogCiAgICAgICAgICAgc2VxdWVuY2UtPm5fc3RydWN0dXJhbF9jb21wb25lbnRzID0gMTsKQEAgLTcwMywxNSArNzIyLDE1IEBACiAgICAgICAgICAgICAgIDE2KTsKICAgICAgICAgICBjbGlwLT5zdGFydF9wb3NpdGlvbiA9IDA7CiAKLSAgICAgICAgICBjcGFkLT5zb3VyY2VfcGFja2FnZSA9IHA7Ci0gICAgICAgICAgY3BhZC0+c291cmNlX3RyYWNrID0gdHJhY2s7Ci0gICAgICAgICAgY3BhZC0+ZGVzY3JpcHRvci0+bGlua2VkX3RyYWNrX2lkID0gbiArIDE7Ci0gICAgICAgICAgaWYgKHAtPnBhcmVudC5uX3RyYWNrcyA9PSAxKSB7Ci0gICAgICAgICAgICBwLT5kZXNjcmlwdG9yID0gKE1YRk1ldGFkYXRhR2VuZXJpY0Rlc2NyaXB0b3IgKikgY3BhZC0+ZGVzY3JpcHRvcjsKKyAgICAgICAgICBwYWQtPnNvdXJjZV9wYWNrYWdlID0gcDsKKyAgICAgICAgICBwYWQtPnNvdXJjZV90cmFjayA9IHRyYWNrOworICAgICAgICAgIHBhZC0+ZGVzY3JpcHRvci0+bGlua2VkX3RyYWNrX2lkID0gbiArIDE7CisgICAgICAgICAgaWYgKHAtPnBhcmVudC5uX3RyYWNrcyA9PSAyKSB7CisgICAgICAgICAgICBwLT5kZXNjcmlwdG9yID0gKE1YRk1ldGFkYXRhR2VuZXJpY0Rlc2NyaXB0b3IgKikgcGFkLT5kZXNjcmlwdG9yOwogICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICBNWEZfTUVUQURBVEFfTVVMVElQTEVfREVTQ1JJUFRPUiAocC0+Ci0gICAgICAgICAgICAgICAgZGVzY3JpcHRvciktPnN1Yl9kZXNjcmlwdG9yc1tuXSA9Ci0gICAgICAgICAgICAgICAgKE1YRk1ldGFkYXRhR2VuZXJpY0Rlc2NyaXB0b3IgKikgY3BhZC0+ZGVzY3JpcHRvcjsKKyAgICAgICAgICAgICAgICBkZXNjcmlwdG9yKS0+c3ViX2Rlc2NyaXB0b3JzW24gLSAxXSA9CisgICAgICAgICAgICAgICAgKE1YRk1ldGFkYXRhR2VuZXJpY0Rlc2NyaXB0b3IgKikgcGFkLT5kZXNjcmlwdG9yOwogICAgICAgICAgIH0KIAogICAgICAgICAgIG4rKzsKQEAgLTc0Myw3ICs3NjIsNyBAQAogICAgICAgbWVtY3B5ICgmcC0+cGFja2FnZV9tb2RpZmllZF9kYXRlLCAmbXV4LT5wcmVmYWNlLT5sYXN0X21vZGlmaWVkX2RhdGUsCiAgICAgICAgICAgc2l6ZW9mIChNWEZUaW1lc3RhbXApKTsKIAotICAgICAgcC0+bl90cmFja3MgPSBnX3NsaXN0X2xlbmd0aCAobXV4LT5jb2xsZWN0LT5kYXRhKSArIDE7CisgICAgICBwLT5uX3RyYWNrcyA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPm51bXNpbmtwYWRzICsgMTsKICAgICAgIHAtPnRyYWNrcyA9IGdfbmV3MCAoTVhGTWV0YWRhdGFUcmFjayAqLCBwLT5uX3RyYWNrcyk7CiAKICAgICAgIC8qIFRyYWNrcyAqLwpAQCAtNzUyLDkgKzc3MSwxMCBAQAogCiAgICAgICAgIG4gPSAxOwogICAgICAgICAvKiBFc3NlbmNlIHRyYWNrcyAqLwotICAgICAgICBmb3IgKGwgPSBtdXgtPmNvbGxlY3QtPmRhdGE7IGw7IGwgPSBsLT5uZXh0KSB7Ci0gICAgICAgICAgR3N0TVhGTXV4UGFkICpjcGFkID0gbC0+ZGF0YTsKKyAgICAgICAgZm9yIChsID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgICAgICAgR3N0TVhGTXV4UGFkICpwYWQgPSBsLT5kYXRhOwogICAgICAgICAgIEdzdENhcHMgKmNhcHM7CisgICAgICAgICAgR3N0QnVmZmVyICpidWZmZXI7CiAgICAgICAgICAgTVhGTWV0YWRhdGFTb3VyY2VQYWNrYWdlICpzb3VyY2VfcGFja2FnZTsKICAgICAgICAgICBNWEZNZXRhZGF0YVRpbWVsaW5lVHJhY2sgKnRyYWNrLCAqc291cmNlX3RyYWNrOwogICAgICAgICAgIE1YRk1ldGFkYXRhU2VxdWVuY2UgKnNlcXVlbmNlOwpAQCAtNzYyLDggKzc4Miw3IEBACiAKICAgICAgICAgICBzb3VyY2VfcGFja2FnZSA9IE1YRl9NRVRBREFUQV9TT1VSQ0VfUEFDS0FHRSAoY3N0b3JhZ2UtPnBhY2thZ2VzWzFdKTsKICAgICAgICAgICBzb3VyY2VfdHJhY2sgPQotICAgICAgICAgICAgICBNWEZfTUVUQURBVEFfVElNRUxJTkVfVFJBQ0sgKHNvdXJjZV9wYWNrYWdlLT5wYXJlbnQudHJhY2tzW24gLQotICAgICAgICAgICAgICAgICAgMV0pOworICAgICAgICAgICAgICBNWEZfTUVUQURBVEFfVElNRUxJTkVfVFJBQ0sgKHNvdXJjZV9wYWNrYWdlLT5wYXJlbnQudHJhY2tzW25dKTsKIAogICAgICAgICAgIHAtPnRyYWNrc1tuXSA9IChNWEZNZXRhZGF0YVRyYWNrICopCiAgICAgICAgICAgICAgIGdfb2JqZWN0X25ldyAoTVhGX1RZUEVfTUVUQURBVEFfVElNRUxJTkVfVFJBQ0ssIE5VTEwpOwpAQCAtNzc3LDExICs3OTYsMTMgQEAKICAgICAgICAgICB0cmFjay0+cGFyZW50LnRyYWNrX2lkID0gbiArIDE7CiAgICAgICAgICAgdHJhY2stPnBhcmVudC50cmFja19udW1iZXIgPSAwOwogCi0gICAgICAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoY3BhZC0+Y29sbGVjdC5wYWQpOwotICAgICAgICAgIGNwYWQtPndyaXRlci0+Z2V0X2VkaXRfcmF0ZSAoY3BhZC0+ZGVzY3JpcHRvciwKLSAgICAgICAgICAgICAgY2FwcywgY3BhZC0+bWFwcGluZ19kYXRhLAotICAgICAgICAgICAgICBjcGFkLT5jb2xsZWN0LmJ1ZmZlciwgc291cmNlX3BhY2thZ2UsIHNvdXJjZV90cmFjaywKLSAgICAgICAgICAgICAgJnRyYWNrLT5lZGl0X3JhdGUpOworICAgICAgICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9QQURfQ0FTVCAocGFkKSk7CisgICAgICAgICAgYnVmZmVyID0gZ3N0X2FnZ3JlZ2F0b3JfcGFkX2dldF9idWZmZXIgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CisgICAgICAgICAgcGFkLT53cml0ZXItPmdldF9lZGl0X3JhdGUgKHBhZC0+ZGVzY3JpcHRvciwKKyAgICAgICAgICAgICAgY2FwcywgcGFkLT5tYXBwaW5nX2RhdGEsCisgICAgICAgICAgICAgIGJ1ZmZlciwgc291cmNlX3BhY2thZ2UsIHNvdXJjZV90cmFjaywgJnRyYWNrLT5lZGl0X3JhdGUpOworICAgICAgICAgIGlmIChidWZmZXIpCisgICAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwogICAgICAgICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKIAogICAgICAgICAgIGlmICh0cmFjay0+ZWRpdF9yYXRlLm4gIT0gc291cmNlX3RyYWNrLT5lZGl0X3JhdGUubiB8fApAQCAtNzkyLDYgKzgxMyw3IEBACiAKICAgICAgICAgICBpZiAodHJhY2stPmVkaXRfcmF0ZS5kIDw9IDAgfHwgdHJhY2stPmVkaXRfcmF0ZS5uIDw9IDApIHsKICAgICAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG11eCwgIkludmFsaWQgZWRpdCByYXRlIik7CisgICAgICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKICAgICAgICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgICAgICAgICB9CiAKQEAgLTgxMCw3ICs4MzIsNyBAQAogICAgICAgICAgICAgICAmTVhGX01FVEFEQVRBX0JBU0UgKHNlcXVlbmNlKS0+aW5zdGFuY2VfdWlkLCBzZXF1ZW5jZSk7CiAgICAgICAgICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3ByZXBlbmQgKG11eC0+bWV0YWRhdGFfbGlzdCwgc2VxdWVuY2UpOwogCi0gICAgICAgICAgbWVtY3B5ICgmc2VxdWVuY2UtPmRhdGFfZGVmaW5pdGlvbiwgJmNwYWQtPndyaXRlci0+ZGF0YV9kZWZpbml0aW9uLAorICAgICAgICAgIG1lbWNweSAoJnNlcXVlbmNlLT5kYXRhX2RlZmluaXRpb24sICZwYWQtPndyaXRlci0+ZGF0YV9kZWZpbml0aW9uLAogICAgICAgICAgICAgICAxNik7CiAgICAgICAgICAgc2VxdWVuY2UtPm5fc3RydWN0dXJhbF9jb21wb25lbnRzID0gMTsKICAgICAgICAgICBzZXF1ZW5jZS0+c3RydWN0dXJhbF9jb21wb25lbnRzID0KQEAgLTgzMiw3ICs4NTQsNyBAQAogCiAgICAgICAgICAgbWVtY3B5ICgmY2xpcC0+c291cmNlX3BhY2thZ2VfaWQsICZjc3RvcmFnZS0+cGFja2FnZXNbMV0tPnBhY2thZ2VfdWlkLAogICAgICAgICAgICAgICAzMik7Ci0gICAgICAgICAgY2xpcC0+c291cmNlX3RyYWNrX2lkID0gbjsKKyAgICAgICAgICBjbGlwLT5zb3VyY2VfdHJhY2tfaWQgPSBuICsgMTsKIAogICAgICAgICAgIG4rKzsKICAgICAgICAgfQpAQCAtOTAyLDcgKzkyNCw3MSBAQAogICAgICAgfQogICAgIH0KIAotICAgIGZvciAoaSA9IDA7IGkgPCBjc3RvcmFnZS0+cGFja2FnZXNbMV0tPm5fdHJhY2tzOyBpKyspIHsKKyAgICAvKiBUaW1lY29kZSB0cmFjayAqLworICAgIHsKKyAgICAgIE1YRk1ldGFkYXRhU291cmNlUGFja2FnZSAqcDsKKyAgICAgIE1YRk1ldGFkYXRhVGltZWxpbmVUcmFjayAqdHJhY2s7CisgICAgICBNWEZNZXRhZGF0YVNlcXVlbmNlICpzZXF1ZW5jZTsKKyAgICAgIE1YRk1ldGFkYXRhVGltZWNvZGVDb21wb25lbnQgKmNvbXBvbmVudDsKKyAgICAgIGd1aW50IG4gPSAwOworCisgICAgICBwID0gKE1YRk1ldGFkYXRhU291cmNlUGFja2FnZSAqKSBjc3RvcmFnZS0+cGFja2FnZXNbMV07CisKKyAgICAgIHAtPnBhcmVudC50cmFja3Nbbl0gPSAoTVhGTWV0YWRhdGFUcmFjayAqKQorICAgICAgICAgIGdfb2JqZWN0X25ldyAoTVhGX1RZUEVfTUVUQURBVEFfVElNRUxJTkVfVFJBQ0ssIE5VTEwpOworICAgICAgdHJhY2sgPSAoTVhGTWV0YWRhdGFUaW1lbGluZVRyYWNrICopIHAtPnBhcmVudC50cmFja3Nbbl07CisgICAgICBteGZfdXVpZF9pbml0ICgmTVhGX01FVEFEQVRBX0JBU0UgKHRyYWNrKS0+aW5zdGFuY2VfdWlkLCBtdXgtPm1ldGFkYXRhKTsKKyAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKG11eC0+bWV0YWRhdGEsCisgICAgICAgICAgJk1YRl9NRVRBREFUQV9CQVNFICh0cmFjayktPmluc3RhbmNlX3VpZCwgdHJhY2spOworICAgICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3ByZXBlbmQgKG11eC0+bWV0YWRhdGFfbGlzdCwgdHJhY2spOworCisgICAgICB0cmFjay0+cGFyZW50LnRyYWNrX2lkID0gbiArIDE7CisgICAgICB0cmFjay0+cGFyZW50LnRyYWNrX251bWJlciA9IDA7CisgICAgICB0cmFjay0+cGFyZW50LnRyYWNrX25hbWUgPSBnX3N0cmR1cCAoIlRpbWVjb2RlIHRyYWNrIik7CisgICAgICAvKiBGSVhNRTogSXMgdGhpcyBjb3JyZWN0PyAqLworICAgICAgbWVtY3B5ICgmdHJhY2stPmVkaXRfcmF0ZSwgJm11eC0+bWluX2VkaXRfcmF0ZSwgc2l6ZW9mIChNWEZGcmFjdGlvbikpOworCisgICAgICBzZXF1ZW5jZSA9IHRyYWNrLT5wYXJlbnQuc2VxdWVuY2UgPSAoTVhGTWV0YWRhdGFTZXF1ZW5jZSAqKQorICAgICAgICAgIGdfb2JqZWN0X25ldyAoTVhGX1RZUEVfTUVUQURBVEFfU0VRVUVOQ0UsIE5VTEwpOworICAgICAgbXhmX3V1aWRfaW5pdCAoJk1YRl9NRVRBREFUQV9CQVNFIChzZXF1ZW5jZSktPmluc3RhbmNlX3VpZCwKKyAgICAgICAgICBtdXgtPm1ldGFkYXRhKTsKKyAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKG11eC0+bWV0YWRhdGEsCisgICAgICAgICAgJk1YRl9NRVRBREFUQV9CQVNFIChzZXF1ZW5jZSktPmluc3RhbmNlX3VpZCwgc2VxdWVuY2UpOworICAgICAgbXV4LT5tZXRhZGF0YV9saXN0ID0gZ19saXN0X3ByZXBlbmQgKG11eC0+bWV0YWRhdGFfbGlzdCwgc2VxdWVuY2UpOworCisgICAgICBtZW1jcHkgKCZzZXF1ZW5jZS0+ZGF0YV9kZWZpbml0aW9uLAorICAgICAgICAgIG14Zl9tZXRhZGF0YV90cmFja19pZGVudGlmaWVyX2dldAorICAgICAgICAgIChNWEZfTUVUQURBVEFfVFJBQ0tfVElNRUNPREVfMTJNX0lOQUNUSVZFKSwgMTYpOworCisgICAgICBzZXF1ZW5jZS0+bl9zdHJ1Y3R1cmFsX2NvbXBvbmVudHMgPSAxOworICAgICAgc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50cyA9CisgICAgICAgICAgZ19uZXcwIChNWEZNZXRhZGF0YVN0cnVjdHVyYWxDb21wb25lbnQgKiwgMSk7CisKKyAgICAgIGNvbXBvbmVudCA9IChNWEZNZXRhZGF0YVRpbWVjb2RlQ29tcG9uZW50ICopCisgICAgICAgICAgZ19vYmplY3RfbmV3IChNWEZfVFlQRV9NRVRBREFUQV9USU1FQ09ERV9DT01QT05FTlQsIE5VTEwpOworICAgICAgc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50c1swXSA9CisgICAgICAgICAgKE1YRk1ldGFkYXRhU3RydWN0dXJhbENvbXBvbmVudCAqKSBjb21wb25lbnQ7CisgICAgICBteGZfdXVpZF9pbml0ICgmTVhGX01FVEFEQVRBX0JBU0UgKGNvbXBvbmVudCktPmluc3RhbmNlX3VpZCwKKyAgICAgICAgICBtdXgtPm1ldGFkYXRhKTsKKyAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKG11eC0+bWV0YWRhdGEsCisgICAgICAgICAgJk1YRl9NRVRBREFUQV9CQVNFIChjb21wb25lbnQpLT5pbnN0YW5jZV91aWQsIGNvbXBvbmVudCk7CisgICAgICBtdXgtPm1ldGFkYXRhX2xpc3QgPSBnX2xpc3RfcHJlcGVuZCAobXV4LT5tZXRhZGF0YV9saXN0LCBjb21wb25lbnQpOworCisgICAgICBtZW1jcHkgKCZjb21wb25lbnQtPnBhcmVudC5kYXRhX2RlZmluaXRpb24sCisgICAgICAgICAgJnNlcXVlbmNlLT5kYXRhX2RlZmluaXRpb24sIDE2KTsKKworICAgICAgY29tcG9uZW50LT5zdGFydF90aW1lY29kZSA9IDA7CisgICAgICBpZiAodHJhY2stPmVkaXRfcmF0ZS5kID09IDApCisgICAgICAgIGNvbXBvbmVudC0+cm91bmRlZF90aW1lY29kZV9iYXNlID0gMTsKKyAgICAgIGVsc2UKKyAgICAgICAgY29tcG9uZW50LT5yb3VuZGVkX3RpbWVjb2RlX2Jhc2UgPQorICAgICAgICAgICAgKCgoZ2RvdWJsZSkgdHJhY2stPmVkaXRfcmF0ZS5uKSAvCisgICAgICAgICAgICAoKGdkb3VibGUpIHRyYWNrLT5lZGl0X3JhdGUuZCkgKyAwLjUpOworICAgICAgLyogVE9ETzogZHJvcCBmcmFtZSAqLworICAgIH0KKworCisgICAgZm9yIChpID0gMTsgaSA8IGNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+bl90cmFja3M7IGkrKykgewogICAgICAgTVhGTWV0YWRhdGFUcmFjayAqdHJhY2sgPSBjc3RvcmFnZS0+cGFja2FnZXNbMV0tPnRyYWNrc1tpXTsKICAgICAgIGd1aW50IGo7CiAgICAgICBndWludDMyIHRlbXBsOwpAQCAtOTE0LDcgKzEwMDAsNyBAQAogICAgICAgdGVtcGwgPSB0cmFjay0+dHJhY2tfbnVtYmVyOwogICAgICAgbl90eXBlID0gMDsKIAotICAgICAgZm9yIChqID0gMDsgaiA8IGNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+bl90cmFja3M7IGorKykgeworICAgICAgZm9yIChqID0gMTsgaiA8IGNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+bl90cmFja3M7IGorKykgewogICAgICAgICBNWEZNZXRhZGF0YVRyYWNrICp0bXAgPSBjc3RvcmFnZS0+cGFja2FnZXNbMV0tPnRyYWNrc1tqXTsKIAogICAgICAgICBpZiAodG1wLT50cmFja19udW1iZXIgPT0gdGVtcGwpIHsKQEAgLTkyMyw3ICsxMDA5LDcgQEAKICAgICAgIH0KIAogICAgICAgbiA9IDA7Ci0gICAgICBmb3IgKGogPSAwOyBqIDwgY3N0b3JhZ2UtPnBhY2thZ2VzWzFdLT5uX3RyYWNrczsgaisrKSB7CisgICAgICBmb3IgKGogPSAxOyBqIDwgY3N0b3JhZ2UtPnBhY2thZ2VzWzFdLT5uX3RyYWNrczsgaisrKSB7CiAgICAgICAgIE1YRk1ldGFkYXRhVHJhY2sgKnRtcCA9IGNzdG9yYWdlLT5wYWNrYWdlc1sxXS0+dHJhY2tzW2pdOwogCiAgICAgICAgIGlmICh0bXAtPnRyYWNrX251bWJlciA9PSB0ZW1wbCkgewpAQCAtOTQ5LDcgKzEwMzUsNyBAQAogCiAgICAgY3N0b3JhZ2UtPmVzc2VuY2VfY29udGFpbmVyX2RhdGFbMF0tPmxpbmtlZF9wYWNrYWdlID0KICAgICAgICAgTVhGX01FVEFEQVRBX1NPVVJDRV9QQUNLQUdFIChjc3RvcmFnZS0+cGFja2FnZXNbMV0pOwotICAgIGNzdG9yYWdlLT5lc3NlbmNlX2NvbnRhaW5lcl9kYXRhWzBdLT5pbmRleF9zaWQgPSAwOworICAgIGNzdG9yYWdlLT5lc3NlbmNlX2NvbnRhaW5lcl9kYXRhWzBdLT5pbmRleF9zaWQgPSAyOwogICAgIGNzdG9yYWdlLT5lc3NlbmNlX2NvbnRhaW5lcl9kYXRhWzBdLT5ib2R5X3NpZCA9IDE7CiAgIH0KIApAQCAtOTg4LDYgKzEwNzQsOCBAQAogICAgIH0KICAgfQogCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChtdXgpOworCiAgIG11eC0+bWV0YWRhdGFfbGlzdCA9IGdfbGlzdF9yZXZlcnNlIChtdXgtPm1ldGFkYXRhX2xpc3QpOwogCiAgIHJldHVybiByZXQ7CkBAIC05OTYsNyArMTA4NCw3IEBACiBzdGF0aWMgR3N0Rmxvd1JldHVybgogZ3N0X214Zl9tdXhfaW5pdF9wYXJ0aXRpb25fcGFjayAoR3N0TVhGTXV4ICogbXV4KQogewotICBHU0xpc3QgKmw7CisgIEdMaXN0ICpsOwogICBndWludCBpID0gMDsKIAogICBteGZfcGFydGl0aW9uX3BhY2tfcmVzZXQgKCZtdXgtPnBhcnRpdGlvbik7CkBAIC0xMDA0LDcgKzEwOTIsNyBAQAogICBtdXgtPnBhcnRpdGlvbi5jbG9zZWQgPSBtdXgtPnBhcnRpdGlvbi5jb21wbGV0ZSA9IEZBTFNFOwogICBtdXgtPnBhcnRpdGlvbi5tYWpvcl92ZXJzaW9uID0gMHgwMDAxOwogICBtdXgtPnBhcnRpdGlvbi5taW5vcl92ZXJzaW9uID0gMHgwMDAyOwotICBtdXgtPnBhcnRpdGlvbi5rYWdfc2l6ZSA9IDA7CisgIG11eC0+cGFydGl0aW9uLmthZ19zaXplID0gMTsKICAgbXV4LT5wYXJ0aXRpb24udGhpc19wYXJ0aXRpb24gPSAwOwogICBtdXgtPnBhcnRpdGlvbi5wcmV2X3BhcnRpdGlvbiA9IDA7CiAgIG11eC0+cGFydGl0aW9uLmZvb3Rlcl9wYXJ0aXRpb24gPSAwOwpAQCAtMTAxNywxNyArMTEwNSwxOCBAQAogICBtZW1jcHkgKCZtdXgtPnBhcnRpdGlvbi5vcGVyYXRpb25hbF9wYXR0ZXJuLAogICAgICAgJm11eC0+cHJlZmFjZS0+b3BlcmF0aW9uYWxfcGF0dGVybiwgMTYpOwogCi0gIG11eC0+cGFydGl0aW9uLm5fZXNzZW5jZV9jb250YWluZXJzID0gZ19zbGlzdF9sZW5ndGggKG11eC0+Y29sbGVjdC0+ZGF0YSk7CisgIEdTVF9PQkpFQ1RfTE9DSyAobXV4KTsKKyAgbXV4LT5wYXJ0aXRpb24ubl9lc3NlbmNlX2NvbnRhaW5lcnMgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5udW1zaW5rcGFkczsKICAgbXV4LT5wYXJ0aXRpb24uZXNzZW5jZV9jb250YWluZXJzID0KICAgICAgIGdfbmV3MCAoTVhGVUwsIG11eC0+cGFydGl0aW9uLm5fZXNzZW5jZV9jb250YWluZXJzKTsKIAotICBmb3IgKGwgPSBtdXgtPmNvbGxlY3QtPmRhdGE7IGw7IGwgPSBsLT5uZXh0KSB7Ci0gICAgR3N0TVhGTXV4UGFkICpjcGFkID0gbC0+ZGF0YTsKKyAgZm9yIChsID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0TVhGTXV4UGFkICpwYWQgPSBsLT5kYXRhOwogICAgIGd1aW50IGo7CiAgICAgZ2Jvb2xlYW4gZm91bmQgPSBGQUxTRTsKIAogICAgIGZvciAoaiA9IDA7IGogPD0gaTsgaisrKSB7Ci0gICAgICBpZiAobXhmX3VsX2lzX2VxdWFsICgmY3BhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIsCisgICAgICBpZiAobXhmX3VsX2lzX2VxdWFsICgmcGFkLT5kZXNjcmlwdG9yLT5lc3NlbmNlX2NvbnRhaW5lciwKICAgICAgICAgICAgICAgJm11eC0+cGFydGl0aW9uLmVzc2VuY2VfY29udGFpbmVyc1tqXSkpIHsKICAgICAgICAgZm91bmQgPSBUUlVFOwogICAgICAgICBicmVhazsKQEAgLTEwMzgsMTAgKzExMjcsMTEgQEAKICAgICAgIGNvbnRpbnVlOwogCiAgICAgbWVtY3B5ICgmbXV4LT5wYXJ0aXRpb24uZXNzZW5jZV9jb250YWluZXJzW2ldLAotICAgICAgICAmY3BhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIsIDE2KTsKKyAgICAgICAgJnBhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIsIDE2KTsKICAgICBpKys7CiAgIH0KICAgbXV4LT5wYXJ0aXRpb24ubl9lc3NlbmNlX2NvbnRhaW5lcnMgPSBpOworICBHU1RfT0JKRUNUX1VOTE9DSyAobXV4KTsKIAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CkBAIC0xMDk2LDkzICsxMTg2LDEzOCBAQAogfQogCiBzdGF0aWMgY29uc3QgZ3VpbnQ4IF9nY19lc3NlbmNlX2VsZW1lbnRfdWxbXSA9IHsKLSAgMHgwNiwgMHgwZSwgMHgyYiwgMHgzNCwgMHgwMSwgMHgwMiwgMHgwMSwgMHgwMCwKKyAgMHgwNiwgMHgwZSwgMHgyYiwgMHgzNCwgMHgwMSwgMHgwMiwgMHgwMSwgMHgwMSwKICAgMHgwZCwgMHgwMSwgMHgwMywgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMCwgMHgwMAogfTsKIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9teGZfbXV4X2hhbmRsZV9idWZmZXIgKEdzdE1YRk11eCAqIG11eCwgR3N0TVhGTXV4UGFkICogY3BhZCkKK2dzdF9teGZfbXV4X2hhbmRsZV9idWZmZXIgKEdzdE1YRk11eCAqIG11eCwgR3N0TVhGTXV4UGFkICogcGFkKQogewotICBHc3RCdWZmZXIgKmJ1ZiA9IE5VTEw7CisgIEdzdEJ1ZmZlciAqYnVmID0gZ3N0X2FnZ3JlZ2F0b3JfcGFkX2dldF9idWZmZXIgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CiAgIEdzdEJ1ZmZlciAqb3V0YnVmID0gTlVMTDsKLSAgR3N0QnVmZmVyICpwYWNrZXQ7CiAgIEdzdE1hcEluZm8gbWFwOwotICBHc3RNYXBJbmZvIHJlYWRtYXA7CisgIGdzaXplIGJ1Zl9zaXplOwogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwogICBndWludDggc2xlbiwgYmVyWzldOwotICBnYm9vbGVhbiBmbHVzaCA9ICgoY3BhZC0+Y29sbGVjdC5zdGF0ZSAmIEdTVF9DT0xMRUNUX1BBRFNfU1RBVEVfRU9TKQotICAgICAgJiYgIWNwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0ICYmIGNwYWQtPmNvbGxlY3QuYnVmZmVyID09IE5VTEwpOworICBnYm9vbGVhbiBmbHVzaCA9IGdzdF9hZ2dyZWdhdG9yX3BhZF9pc19lb3MgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSkKKyAgICAgICYmICFwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0ICYmIGJ1ZiA9PSBOVUxMOworICBnYm9vbGVhbiBpc19rZXlmcmFtZSA9IGJ1ZiA/CisgICAgICAhR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoYnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCkgOiBUUlVFOwogCi0gIGlmIChjcGFkLT5oYXZlX2NvbXBsZXRlX2VkaXRfdW5pdCkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGNwYWQtPmNvbGxlY3QucGFkLAorICBpZiAocGFkLT5oYXZlX2NvbXBsZXRlX2VkaXRfdW5pdCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwKICAgICAgICAgIkhhbmRsaW5nIHJlbWFpbmluZyBidWZmZXIgZm9yIHRyYWNrICV1IGF0IHBvc2l0aW9uICUiIEdfR0lOVDY0X0ZPUk1BVCwKLSAgICAgICAgY3BhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIGNwYWQtPnBvcyk7CisgICAgICAgIHBhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIHBhZC0+cG9zKTsKKyAgICBpZiAoYnVmKQorICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKICAgICBidWYgPSBOVUxMOwogICB9IGVsc2UgaWYgKCFmbHVzaCkgewotICAgIGJ1ZiA9IGdzdF9jb2xsZWN0X3BhZHNfcG9wIChtdXgtPmNvbGxlY3QsICZjcGFkLT5jb2xsZWN0KTsKKyAgICBpZiAoYnVmKQorICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgICBidWYgPSBnc3RfYWdncmVnYXRvcl9wYWRfc3RlYWxfYnVmZmVyIChHU1RfQUdHUkVHQVRPUl9QQUQgKHBhZCkpOwogICB9CiAKICAgaWYgKGJ1ZikgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGNwYWQtPmNvbGxlY3QucGFkLAorICAgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwKICAgICAgICAgIkhhbmRsaW5nIGJ1ZmZlciBvZiBzaXplICUiIEdfR1NJWkVfRk9STUFUICIgZm9yIHRyYWNrICV1IGF0IHBvc2l0aW9uICUiCiAgICAgICAgIEdfR0lOVDY0X0ZPUk1BVCwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKSwKLSAgICAgICAgY3BhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIGNwYWQtPnBvcyk7CisgICAgICAgIHBhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIHBhZC0+cG9zKTsKICAgfSBlbHNlIHsKICAgICBmbHVzaCA9IFRSVUU7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoY3BhZC0+Y29sbGVjdC5wYWQsCisgICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLAogICAgICAgICAiRmx1c2hpbmcgZm9yIHRyYWNrICV1IGF0IHBvc2l0aW9uICUiIEdfR0lOVDY0X0ZPUk1BVCwKLSAgICAgICAgY3BhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIGNwYWQtPnBvcyk7CisgICAgICAgIHBhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQsIHBhZC0+cG9zKTsKICAgfQogCi0gIHJldCA9IGNwYWQtPndyaXRlX2Z1bmMgKGJ1ZiwKLSAgICAgIGNwYWQtPm1hcHBpbmdfZGF0YSwgY3BhZC0+YWRhcHRlciwgJm91dGJ1ZiwgZmx1c2gpOworICByZXQgPSBwYWQtPndyaXRlX2Z1bmMgKGJ1ZiwgcGFkLT5tYXBwaW5nX2RhdGEsIHBhZC0+YWRhcHRlciwgJm91dGJ1ZiwgZmx1c2gpOwogICBpZiAocmV0ICE9IEdTVF9GTE9XX09LICYmIHJldCAhPSBHU1RfRkxPV19DVVNUT01fU1VDQ0VTUykgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNwYWQtPmNvbGxlY3QucGFkLAorICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHBhZCwKICAgICAgICAgIkZhaWxlZCBoYW5kbGluZyBidWZmZXIgZm9yIHRyYWNrICV1LCByZWFzb24gJXMiLAotICAgICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOworICAgICAgICBwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX2lkLCBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CiAgICAgcmV0dXJuIHJldDsKICAgfQogCiAgIGlmIChyZXQgPT0gR1NUX0ZMT1dfQ1VTVE9NX1NVQ0NFU1MpIHsKLSAgICBjcGFkLT5oYXZlX2NvbXBsZXRlX2VkaXRfdW5pdCA9IFRSVUU7CisgICAgcGFkLT5oYXZlX2NvbXBsZXRlX2VkaXRfdW5pdCA9IFRSVUU7CiAgICAgcmV0ID0gR1NUX0ZMT1dfT0s7CiAgIH0gZWxzZSB7Ci0gICAgY3BhZC0+aGF2ZV9jb21wbGV0ZV9lZGl0X3VuaXQgPSBGQUxTRTsKKyAgICBwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0ID0gRkFMU0U7CiAgIH0KIAogICBidWYgPSBvdXRidWY7CiAgIGlmIChidWYgPT0gTlVMTCkKICAgICByZXR1cm4gcmV0OwogCi0gIGdzdF9idWZmZXJfbWFwIChidWYsICZyZWFkbWFwLCBHU1RfTUFQX1JFQUQpOwotICBzbGVuID0gbXhmX2Jlcl9lbmNvZGVfc2l6ZSAocmVhZG1hcC5zaXplLCBiZXIpOwotICBwYWNrZXQgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKDE2ICsgc2xlbiArIHJlYWRtYXAuc2l6ZSk7Ci0gIGdzdF9idWZmZXJfbWFwIChwYWNrZXQsICZtYXAsIEdTVF9NQVBfV1JJVEUpOworICAvKiBXZSBjdXJyZW50bHkgb25seSBpbmRleCB0aGUgZmlyc3QgZXNzZW5jZSBzdHJlYW0gKi8KKyAgaWYgKHBhZCA9PSAoR3N0TVhGTXV4UGFkICopIEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzLT5kYXRhKSB7CisgICAgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZ21lbnQ7CisgICAgY29uc3QgZ2ludCBtYXhfc2VnbWVudF9zaXplID0gR19NQVhVSU5UMTYgLyAxMTsKKworICAgIGlmIChtdXgtPmluZGV4X3RhYmxlLT5sZW4gPT0gMCB8fAorICAgICAgICBnX2FycmF5X2luZGV4IChtdXgtPmluZGV4X3RhYmxlLCBNWEZJbmRleFRhYmxlU2VnbWVudCwKKyAgICAgICAgICAgIG11eC0+aW5kZXhfdGFibGUtPmxlbiAtIDEpLmluZGV4X2R1cmF0aW9uID49IG1heF9zZWdtZW50X3NpemUpIHsKKyAgICAgIE1YRkluZGV4VGFibGVTZWdtZW50IHM7CisKKyAgICAgIG1lbXNldCAoJnNlZ21lbnQsIDAsIHNpemVvZiAoc2VnbWVudCkpOworCisgICAgICBteGZfdXVpZF9pbml0ICgmcy5pbnN0YW5jZV9pZCwgbXV4LT5tZXRhZGF0YSk7CisgICAgICBtZW1jcHkgKCZzLmluZGV4X2VkaXRfcmF0ZSwgJnBhZC0+c291cmNlX3RyYWNrLT5lZGl0X3JhdGUsCisgICAgICAgICAgc2l6ZW9mIChzLmluZGV4X2VkaXRfcmF0ZSkpOworICAgICAgcy5pbmRleF9zdGFydF9wb3NpdGlvbiA9IHBhZC0+cG9zOworICAgICAgcy5pbmRleF9kdXJhdGlvbiA9IDA7CisgICAgICBzLmVkaXRfdW5pdF9ieXRlX2NvdW50ID0gMDsKKyAgICAgIHMuaW5kZXhfc2lkID0KKyAgICAgICAgICBtdXgtPnByZWZhY2UtPmNvbnRlbnRfc3RvcmFnZS0+ZXNzZW5jZV9jb250YWluZXJfZGF0YVswXS0+aW5kZXhfc2lkOworICAgICAgcy5ib2R5X3NpZCA9CisgICAgICAgICAgbXV4LT5wcmVmYWNlLT5jb250ZW50X3N0b3JhZ2UtPmVzc2VuY2VfY29udGFpbmVyX2RhdGFbMF0tPmJvZHlfc2lkOworICAgICAgcy5zbGljZV9jb3VudCA9IDA7CisgICAgICBzLnBvc190YWJsZV9jb3VudCA9IDA7CisgICAgICBzLm5fZGVsdGFfZW50cmllcyA9IDA7CisgICAgICBzLmRlbHRhX2VudHJpZXMgPSBOVUxMOworICAgICAgcy5uX2luZGV4X2VudHJpZXMgPSAwOworICAgICAgcy5pbmRleF9lbnRyaWVzID0gZ19uZXcwIChNWEZJbmRleEVudHJ5LCBtYXhfc2VnbWVudF9zaXplKTsKKyAgICAgIGdfYXJyYXlfYXBwZW5kX3ZhbCAobXV4LT5pbmRleF90YWJsZSwgcyk7CisgICAgfQorICAgIHNlZ21lbnQgPQorICAgICAgICAmZ19hcnJheV9pbmRleCAobXV4LT5pbmRleF90YWJsZSwgTVhGSW5kZXhUYWJsZVNlZ21lbnQsCisgICAgICAgIG11eC0+aW5kZXhfdGFibGUtPmxlbiAtIDEpOworCisgICAgc2VnbWVudC0+aW5kZXhfZW50cmllc1tzZWdtZW50LT5uX2luZGV4X2VudHJpZXNdLnRlbXBvcmFsX29mZnNldCA9IDA7CisgICAgc2VnbWVudC0+aW5kZXhfZW50cmllc1tzZWdtZW50LT5uX2luZGV4X2VudHJpZXNdLmtleV9mcmFtZV9vZmZzZXQgPSAwOworICAgIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzXS5mbGFncyA9IGlzX2tleWZyYW1lID8gMHg4MCA6IDB4MjA7IC8qIEZJWE1FOiBOZWVkIHRvIGRpc3Rpbmd1aXNoIGFsbCB0aGUgY2FzZXMgKi8KKyAgICBzZWdtZW50LT5pbmRleF9lbnRyaWVzW3NlZ21lbnQtPm5faW5kZXhfZW50cmllc10uc3RyZWFtX29mZnNldCA9CisgICAgICAgIG11eC0+cGFydGl0aW9uLmJvZHlfb2Zmc2V0OworCisgICAgc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzKys7CisgICAgc2VnbWVudC0+aW5kZXhfZHVyYXRpb24rKzsKKyAgfQorCisgIGJ1Zl9zaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmKTsKKyAgc2xlbiA9IG14Zl9iZXJfZW5jb2RlX3NpemUgKGJ1Zl9zaXplLCBiZXIpOworICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKDE2ICsgc2xlbik7CisgIGdzdF9idWZmZXJfbWFwIChvdXRidWYsICZtYXAsIEdTVF9NQVBfV1JJVEUpOwogICBtZW1jcHkgKG1hcC5kYXRhLCBfZ2NfZXNzZW5jZV9lbGVtZW50X3VsLCAxNik7Ci0gIG1hcC5kYXRhWzddID0gY3BhZC0+ZGVzY3JpcHRvci0+ZXNzZW5jZV9jb250YWluZXIudVs3XTsKLSAgR1NUX1dSSVRFX1VJTlQzMl9CRSAobWFwLmRhdGEgKyAxMiwgY3BhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfbnVtYmVyKTsKKyAgR1NUX1dSSVRFX1VJTlQzMl9CRSAobWFwLmRhdGEgKyAxMiwgcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19udW1iZXIpOwogICBtZW1jcHkgKG1hcC5kYXRhICsgMTYsIGJlciwgc2xlbik7Ci0gIG1lbWNweSAobWFwLmRhdGEgKyAxNiArIHNsZW4sIHJlYWRtYXAuZGF0YSwgcmVhZG1hcC5zaXplKTsKLSAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmcmVhZG1hcCk7CisgIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm1hcCk7CisgIG91dGJ1ZiA9IGdzdF9idWZmZXJfYXBwZW5kIChvdXRidWYsIGJ1Zik7CiAKLSAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgR1NUX0RFQlVHX09CSkVDVCAocGFkLAorICAgICAgIlB1c2hpbmcgYnVmZmVyIG9mIHNpemUgJSIgR19HU0laRV9GT1JNQVQgIiBmb3IgdHJhY2sgJXUiLAorICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAob3V0YnVmKSwgcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCk7CiAKLSAgR1NUX0RFQlVHX09CSkVDVCAoY3BhZC0+Y29sbGVjdC5wYWQsCi0gICAgICAiUHVzaGluZyBidWZmZXIgb2Ygc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCAiIGZvciB0cmFjayAldSIsIG1hcC5zaXplLAotICAgICAgY3BhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQudHJhY2tfaWQpOwotICBnc3RfYnVmZmVyX3VubWFwIChwYWNrZXQsICZtYXApOwotCi0gIGlmICgocmV0ID0gZ3N0X214Zl9tdXhfcHVzaCAobXV4LCBwYWNrZXQpKSAhPSBHU1RfRkxPV19PSykgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGNwYWQtPmNvbGxlY3QucGFkLAorICBtdXgtPnBhcnRpdGlvbi5ib2R5X29mZnNldCArPSBnc3RfYnVmZmVyX2dldF9zaXplIChvdXRidWYpOworICBpZiAoKHJldCA9IGdzdF9teGZfbXV4X3B1c2ggKG11eCwgb3V0YnVmKSkgIT0gR1NUX0ZMT1dfT0spIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChwYWQsCiAgICAgICAgICJGYWlsZWQgcHVzaGluZyBidWZmZXIgZm9yIHRyYWNrICV1LCByZWFzb24gJXMiLAotICAgICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCwgZ3N0X2Zsb3dfZ2V0X25hbWUgKHJldCkpOworICAgICAgICBwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX2lkLCBnc3RfZmxvd19nZXRfbmFtZSAocmV0KSk7CiAgICAgcmV0dXJuIHJldDsKICAgfQogCi0gIGNwYWQtPnBvcysrOwotICBjcGFkLT5sYXN0X3RpbWVzdGFtcCA9Ci0gICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGUgKEdTVF9TRUNPTkQgKiBjcGFkLT5wb3MsCi0gICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPmVkaXRfcmF0ZS5kLCBjcGFkLT5zb3VyY2VfdHJhY2stPmVkaXRfcmF0ZS5uKTsKKyAgcGFkLT5wb3MrKzsKKyAgcGFkLT5sYXN0X3RpbWVzdGFtcCA9CisgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGUgKEdTVF9TRUNPTkQgKiBwYWQtPnBvcywKKyAgICAgIHBhZC0+c291cmNlX3RyYWNrLT5lZGl0X3JhdGUuZCwgcGFkLT5zb3VyY2VfdHJhY2stPmVkaXRfcmF0ZS5uKTsKIAogICByZXR1cm4gcmV0OwogfQpAQCAtMTE5Myw2ICsxMzI4LDggQEAKICAgR3N0QnVmZmVyICpidWY7CiAKICAgbXV4LT5wYXJ0aXRpb24udHlwZSA9IE1YRl9QQVJUSVRJT05fUEFDS19CT0RZOworICBtdXgtPnBhcnRpdGlvbi5jbG9zZWQgPSBUUlVFOworICBtdXgtPnBhcnRpdGlvbi5jb21wbGV0ZSA9IFRSVUU7CiAgIG11eC0+cGFydGl0aW9uLnRoaXNfcGFydGl0aW9uID0gbXV4LT5vZmZzZXQ7CiAgIG11eC0+cGFydGl0aW9uLnByZXZfcGFydGl0aW9uID0gMDsKICAgbXV4LT5wYXJ0aXRpb24uZm9vdGVyX3BhcnRpdGlvbiA9IDA7CkBAIC0xMjEwLDcgKzEzNDcsNyBAQAogc3RhdGljIEdzdEZsb3dSZXR1cm4KIGdzdF9teGZfbXV4X2hhbmRsZV9lb3MgKEdzdE1YRk11eCAqIG11eCkKIHsKLSAgR1NMaXN0ICpsOworICBHTGlzdCAqbDsKICAgZ2Jvb2xlYW4gaGF2ZV9kYXRhID0gRkFMU0U7CiAgIEdzdEJ1ZmZlciAqcGFja2V0OwogCkBAIC0xMjE5LDMzICsxMzU2LDQwIEBACiAKICAgICBoYXZlX2RhdGEgPSBGQUxTRTsKIAotICAgIGZvciAobCA9IG11eC0+Y29sbGVjdC0+ZGF0YTsgbDsgbCA9IGwtPm5leHQpIHsKLSAgICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IGwtPmRhdGE7CisgICAgR1NUX09CSkVDVF9MT0NLIChtdXgpOworICAgIGZvciAobCA9IEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzOyBsOyBsID0gbC0+bmV4dCkgeworICAgICAgR3N0TVhGTXV4UGFkICpwYWQgPSBsLT5kYXRhOworICAgICAgR3N0QnVmZmVyICpidWZmZXIgPQorICAgICAgICAgIGdzdF9hZ2dyZWdhdG9yX3BhZF9nZXRfYnVmZmVyIChHU1RfQUdHUkVHQVRPUl9QQUQgKHBhZCkpOworCiAgICAgICBHc3RDbG9ja1RpbWUgbmV4dF9nY190aW1lc3RhbXAgPQogICAgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoKG11eC0+bGFzdF9nY19wb3NpdGlvbiArIDEpICogR1NUX1NFQ09ORCwKICAgICAgICAgICBtdXgtPm1pbl9lZGl0X3JhdGUuZCwgbXV4LT5taW5fZWRpdF9yYXRlLm4pOwogCi0gICAgICBiZXN0ID0gTlVMTDsKLQotICAgICAgaWYgKGNwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0IHx8Ci0gICAgICAgICAgZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChjcGFkLT5hZGFwdGVyKSA+IDAgfHwgY3BhZC0+Y29sbGVjdC5idWZmZXIpIHsKKyAgICAgIGlmIChwYWQtPmhhdmVfY29tcGxldGVfZWRpdF91bml0IHx8CisgICAgICAgICAgZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChwYWQtPmFkYXB0ZXIpID4gMCB8fCBidWZmZXIpIHsKICAgICAgICAgaGF2ZV9kYXRhID0gVFJVRTsKLSAgICAgICAgaWYgKGNwYWQtPmxhc3RfdGltZXN0YW1wIDwgbmV4dF9nY190aW1lc3RhbXApIHsKLSAgICAgICAgICBiZXN0ID0gY3BhZDsKKyAgICAgICAgaWYgKHBhZC0+bGFzdF90aW1lc3RhbXAgPCBuZXh0X2djX3RpbWVzdGFtcCkgeworICAgICAgICAgIGJlc3QgPSBnc3Rfb2JqZWN0X3JlZiAocGFkKTsKKyAgICAgICAgICBpZiAoYnVmZmVyKQorICAgICAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKICAgICAgICAgICBicmVhazsKICAgICAgICAgfQogICAgICAgfQorICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKIAogICAgICAgaWYgKGhhdmVfZGF0YSAmJiAhbC0+bmV4dCkgewogICAgICAgICBtdXgtPmxhc3RfZ2NfcG9zaXRpb24rKzsKICAgICAgICAgbXV4LT5sYXN0X2djX3RpbWVzdGFtcCA9IG5leHRfZ2NfdGltZXN0YW1wOwotICAgICAgICBiZXN0ID0gTlVMTDsKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgfQorICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChtdXgpOwogCiAgICAgaWYgKGJlc3QpIHsKICAgICAgIGdzdF9teGZfbXV4X2hhbmRsZV9idWZmZXIgKG11eCwgYmVzdCk7CisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChiZXN0KTsKICAgICAgIGhhdmVfZGF0YSA9IFRSVUU7CiAgICAgfQogICB9IHdoaWxlIChoYXZlX2RhdGEpOwpAQCAtMTI1NiwxNCArMTQwMCwxNSBAQAogICAgICAgbXV4LT5taW5fZWRpdF9yYXRlLmQsIG11eC0+bWluX2VkaXRfcmF0ZS5uKTsKIAogICAvKiBVcGRhdGUgZXNzZW5jZSB0cmFjayBkdXJhdGlvbnMgKi8KLSAgZm9yIChsID0gbXV4LT5jb2xsZWN0LT5kYXRhOyBsOyBsID0gbC0+bmV4dCkgewotICAgIEdzdE1YRk11eFBhZCAqY3BhZCA9IGwtPmRhdGE7CisgIEdTVF9PQkpFQ1RfTE9DSyAobXV4KTsKKyAgZm9yIChsID0gR1NUX0VMRU1FTlRfQ0FTVCAobXV4KS0+c2lua3BhZHM7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0TVhGTXV4UGFkICpwYWQgPSBsLT5kYXRhOwogICAgIGd1aW50IGk7CiAKICAgICAvKiBVcGRhdGUgZHVyYXRpb25zICovCi0gICAgY3BhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQuc2VxdWVuY2UtPmR1cmF0aW9uID0gY3BhZC0+cG9zOwotICAgIE1YRl9NRVRBREFUQV9TT1VSQ0VfQ0xJUCAoY3BhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQuCi0gICAgICAgIHNlcXVlbmNlLT5zdHJ1Y3R1cmFsX2NvbXBvbmVudHNbMF0pLT5wYXJlbnQuZHVyYXRpb24gPSBjcGFkLT5wb3M7CisgICAgcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC5zZXF1ZW5jZS0+ZHVyYXRpb24gPSBwYWQtPnBvczsKKyAgICBNWEZfTUVUQURBVEFfU09VUkNFX0NMSVAgKHBhZC0+c291cmNlX3RyYWNrLT5wYXJlbnQuCisgICAgICAgIHNlcXVlbmNlLT5zdHJ1Y3R1cmFsX2NvbXBvbmVudHNbMF0pLT5wYXJlbnQuZHVyYXRpb24gPSBwYWQtPnBvczsKICAgICBmb3IgKGkgPSAwOyBpIDwgbXV4LT5wcmVmYWNlLT5jb250ZW50X3N0b3JhZ2UtPnBhY2thZ2VzWzBdLT5uX3RyYWNrczsgaSsrKSB7CiAgICAgICBNWEZNZXRhZGF0YVRpbWVsaW5lVHJhY2sgKnRyYWNrOwogCkBAIC0xMjc5LDEyICsxNDI0LDEzIEBACiAgICAgICAgICAgY29udGVudF9zdG9yYWdlLT5wYWNrYWdlc1swXS0+dHJhY2tzW2ldKTsKICAgICAgIGlmIChNWEZfTUVUQURBVEFfU09VUkNFX0NMSVAgKHRyYWNrLT5wYXJlbnQuCiAgICAgICAgICAgICAgIHNlcXVlbmNlLT5zdHJ1Y3R1cmFsX2NvbXBvbmVudHNbMF0pLT5zb3VyY2VfdHJhY2tfaWQgPT0KLSAgICAgICAgICBjcGFkLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19pZCkgewotICAgICAgICB0cmFjay0+cGFyZW50LnNlcXVlbmNlLT5zdHJ1Y3R1cmFsX2NvbXBvbmVudHNbMF0tPmR1cmF0aW9uID0gY3BhZC0+cG9zOwotICAgICAgICB0cmFjay0+cGFyZW50LnNlcXVlbmNlLT5kdXJhdGlvbiA9IGNwYWQtPnBvczsKKyAgICAgICAgICBwYWQtPnNvdXJjZV90cmFjay0+cGFyZW50LnRyYWNrX2lkKSB7CisgICAgICAgIHRyYWNrLT5wYXJlbnQuc2VxdWVuY2UtPnN0cnVjdHVyYWxfY29tcG9uZW50c1swXS0+ZHVyYXRpb24gPSBwYWQtPnBvczsKKyAgICAgICAgdHJhY2stPnBhcmVudC5zZXF1ZW5jZS0+ZHVyYXRpb24gPSBwYWQtPnBvczsKICAgICAgIH0KICAgICB9CiAgIH0KKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAKICAgLyogVXBkYXRlIHRpbWVjb2RlIHRyYWNrIGR1cmF0aW9uICovCiAgIHsKQEAgLTEzMDAsNiArMTQ0NiwxOCBAQAogICB9CiAKICAgeworICAgIE1YRk1ldGFkYXRhVGltZWxpbmVUcmFjayAqdHJhY2sgPQorICAgICAgICBNWEZfTUVUQURBVEFfVElNRUxJTkVfVFJBQ0sgKG11eC0+cHJlZmFjZS0+CisgICAgICAgIGNvbnRlbnRfc3RvcmFnZS0+cGFja2FnZXNbMV0tPnRyYWNrc1swXSk7CisgICAgTVhGTWV0YWRhdGFTZXF1ZW5jZSAqc2VxdWVuY2UgPSB0cmFjay0+cGFyZW50LnNlcXVlbmNlOworICAgIE1YRk1ldGFkYXRhVGltZWNvZGVDb21wb25lbnQgKmNvbXBvbmVudCA9CisgICAgICAgIE1YRl9NRVRBREFUQV9USU1FQ09ERV9DT01QT05FTlQgKHNlcXVlbmNlLT5zdHJ1Y3R1cmFsX2NvbXBvbmVudHNbMF0pOworCisgICAgc2VxdWVuY2UtPmR1cmF0aW9uID0gbXV4LT5sYXN0X2djX3Bvc2l0aW9uOworICAgIGNvbXBvbmVudC0+cGFyZW50LmR1cmF0aW9uID0gbXV4LT5sYXN0X2djX3Bvc2l0aW9uOworICB9CisKKyAgewogICAgIGd1aW50NjQgYm9keV9wYXJ0aXRpb24gPSBtdXgtPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbjsKICAgICBndWludDMyIGJvZHlfc2lkID0gbXV4LT5wYXJ0aXRpb24uYm9keV9zaWQ7CiAgICAgZ3VpbnQ2NCBmb290ZXJfcGFydGl0aW9uID0gbXV4LT5vZmZzZXQ7CkBAIC0xMzA3LDYgKzE0NjUsMTkgQEAKICAgICBHc3RGbG93UmV0dXJuIHJldDsKICAgICBHc3RTZWdtZW50IHNlZ21lbnQ7CiAgICAgTVhGUmFuZG9tSW5kZXhQYWNrRW50cnkgZW50cnk7CisgICAgR0xpc3QgKmluZGV4X2VudHJpZXMgPSBOVUxMLCAqbDsKKyAgICBndWludCBpbmRleF9ieXRlX2NvdW50ID0gMDsKKyAgICBndWludCBpOworICAgIEdzdEJ1ZmZlciAqYnVmOworCisgICAgZm9yIChpID0gMDsgaSA8IG11eC0+aW5kZXhfdGFibGUtPmxlbjsgaSsrKSB7CisgICAgICBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnbWVudCA9CisgICAgICAgICAgJmdfYXJyYXlfaW5kZXggKG11eC0+aW5kZXhfdGFibGUsIE1YRkluZGV4VGFibGVTZWdtZW50LCBpKTsKKyAgICAgIEdzdEJ1ZmZlciAqc2VnbWVudF9idWZmZXIgPSBteGZfaW5kZXhfdGFibGVfc2VnbWVudF90b19idWZmZXIgKHNlZ21lbnQpOworCisgICAgICBpbmRleF9ieXRlX2NvdW50ICs9IGdzdF9idWZmZXJfZ2V0X3NpemUgKHNlZ21lbnRfYnVmZmVyKTsKKyAgICAgIGluZGV4X2VudHJpZXMgPSBnX2xpc3RfcHJlcGVuZCAoaW5kZXhfZW50cmllcywgc2VnbWVudF9idWZmZXIpOworICAgIH0KIAogICAgIG11eC0+cGFydGl0aW9uLnR5cGUgPSBNWEZfUEFSVElUSU9OX1BBQ0tfRk9PVEVSOwogICAgIG11eC0+cGFydGl0aW9uLmNsb3NlZCA9IFRSVUU7CkBAIC0xMzE1LDEzICsxNDg2LDIyIEBACiAgICAgbXV4LT5wYXJ0aXRpb24ucHJldl9wYXJ0aXRpb24gPSBib2R5X3BhcnRpdGlvbjsKICAgICBtdXgtPnBhcnRpdGlvbi5mb290ZXJfcGFydGl0aW9uID0gbXV4LT5vZmZzZXQ7CiAgICAgbXV4LT5wYXJ0aXRpb24uaGVhZGVyX2J5dGVfY291bnQgPSAwOwotICAgIG11eC0+cGFydGl0aW9uLmluZGV4X2J5dGVfY291bnQgPSAwOwotICAgIG11eC0+cGFydGl0aW9uLmluZGV4X3NpZCA9IDA7CisgICAgbXV4LT5wYXJ0aXRpb24uaW5kZXhfYnl0ZV9jb3VudCA9IGluZGV4X2J5dGVfY291bnQ7CisgICAgbXV4LT5wYXJ0aXRpb24uaW5kZXhfc2lkID0KKyAgICAgICAgbXV4LT5wcmVmYWNlLT5jb250ZW50X3N0b3JhZ2UtPmVzc2VuY2VfY29udGFpbmVyX2RhdGFbMF0tPmluZGV4X3NpZDsKICAgICBtdXgtPnBhcnRpdGlvbi5ib2R5X29mZnNldCA9IDA7CiAgICAgbXV4LT5wYXJ0aXRpb24uYm9keV9zaWQgPSAwOwogCiAgICAgZ3N0X214Zl9tdXhfd3JpdGVfaGVhZGVyX21ldGFkYXRhIChtdXgpOwogCisgICAgaW5kZXhfZW50cmllcyA9IGdfbGlzdF9yZXZlcnNlIChpbmRleF9lbnRyaWVzKTsKKyAgICBmb3IgKGwgPSBpbmRleF9lbnRyaWVzOyBsOyBsID0gbC0+bmV4dCkgeworICAgICAgaWYgKChyZXQgPSBnc3RfbXhmX211eF9wdXNoIChtdXgsIGwtPmRhdGEpKSAhPSBHU1RfRkxPV19PSykgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChtdXgsICJGYWlsZWQgcHVzaGluZyBpbmRleCB0YWJsZSBzZWdtZW50Iik7CisgICAgICB9CisgICAgfQorICAgIGdfbGlzdF9mcmVlIChpbmRleF9lbnRyaWVzKTsKKwogICAgIHJpcCA9IGdfYXJyYXlfc2l6ZWRfbmV3IChGQUxTRSwgRkFMU0UsIHNpemVvZiAoTVhGUmFuZG9tSW5kZXhQYWNrRW50cnkpLCAzKTsKICAgICBlbnRyeS5vZmZzZXQgPSAwOwogICAgIGVudHJ5LmJvZHlfc2lkID0gMDsKQEAgLTEzNDEsMTMgKzE1MjEsMTQgQEAKIAogICAgIC8qIFJld3JpdGUgaGVhZGVyIHBhcnRpdGlvbiB3aXRoIHVwZGF0ZWQgdmFsdWVzICovCiAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfQllURVMpOwotICAgIGlmIChnc3RfcGFkX3B1c2hfZXZlbnQgKG11eC0+c3JjcGFkLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSkpIHsKKyAgICBpZiAoZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQUdHUkVHQVRPUl9TUkNfUEFEIChtdXgpLAorICAgICAgICAgICAgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpKSB7CiAgICAgICBtdXgtPm9mZnNldCA9IDA7CiAgICAgICBtdXgtPnBhcnRpdGlvbi50eXBlID0gTVhGX1BBUlRJVElPTl9QQUNLX0hFQURFUjsKICAgICAgIG11eC0+cGFydGl0aW9uLmNsb3NlZCA9IFRSVUU7CiAgICAgICBtdXgtPnBhcnRpdGlvbi5jb21wbGV0ZSA9IFRSVUU7CiAgICAgICBtdXgtPnBhcnRpdGlvbi50aGlzX3BhcnRpdGlvbiA9IDA7Ci0gICAgICBtdXgtPnBhcnRpdGlvbi5wcmV2X3BhcnRpdGlvbiA9IGZvb3Rlcl9wYXJ0aXRpb247CisgICAgICBtdXgtPnBhcnRpdGlvbi5wcmV2X3BhcnRpdGlvbiA9IDA7CiAgICAgICBtdXgtPnBhcnRpdGlvbi5mb290ZXJfcGFydGl0aW9uID0gZm9vdGVyX3BhcnRpdGlvbjsKICAgICAgIG11eC0+cGFydGl0aW9uLmhlYWRlcl9ieXRlX2NvdW50ID0gMDsKICAgICAgIG11eC0+cGFydGl0aW9uLmluZGV4X2J5dGVfY291bnQgPSAwOwpAQCAtMTM2MCw2ICsxNTQxLDI4IEBACiAgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG11eCwgIlJld3JpdGluZyBoZWFkZXIgcGFydGl0aW9uIGZhaWxlZCIpOwogICAgICAgICByZXR1cm4gcmV0OwogICAgICAgfQorCisgICAgICBnX2Fzc2VydCAobXV4LT5vZmZzZXQgPT0gYm9keV9wYXJ0aXRpb24pOworCisgICAgICBtdXgtPnBhcnRpdGlvbi50eXBlID0gTVhGX1BBUlRJVElPTl9QQUNLX0JPRFk7CisgICAgICBtdXgtPnBhcnRpdGlvbi5jbG9zZWQgPSBUUlVFOworICAgICAgbXV4LT5wYXJ0aXRpb24uY29tcGxldGUgPSBUUlVFOworICAgICAgbXV4LT5wYXJ0aXRpb24udGhpc19wYXJ0aXRpb24gPSBtdXgtPm9mZnNldDsKKyAgICAgIG11eC0+cGFydGl0aW9uLnByZXZfcGFydGl0aW9uID0gMDsKKyAgICAgIG11eC0+cGFydGl0aW9uLmZvb3Rlcl9wYXJ0aXRpb24gPSBmb290ZXJfcGFydGl0aW9uOworICAgICAgbXV4LT5wYXJ0aXRpb24uaGVhZGVyX2J5dGVfY291bnQgPSAwOworICAgICAgbXV4LT5wYXJ0aXRpb24uaW5kZXhfYnl0ZV9jb3VudCA9IDA7CisgICAgICBtdXgtPnBhcnRpdGlvbi5pbmRleF9zaWQgPSAwOworICAgICAgbXV4LT5wYXJ0aXRpb24uYm9keV9vZmZzZXQgPSAwOworICAgICAgbXV4LT5wYXJ0aXRpb24uYm9keV9zaWQgPQorICAgICAgICAgIG11eC0+cHJlZmFjZS0+Y29udGVudF9zdG9yYWdlLT5lc3NlbmNlX2NvbnRhaW5lcl9kYXRhWzBdLT5ib2R5X3NpZDsKKworICAgICAgYnVmID0gbXhmX3BhcnRpdGlvbl9wYWNrX3RvX2J1ZmZlciAoJm11eC0+cGFydGl0aW9uKTsKKyAgICAgIHJldCA9IGdzdF9teGZfbXV4X3B1c2ggKG11eCwgYnVmKTsKKyAgICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKKyAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAobXV4LCAiUmV3cml0aW5nIGJvZHkgcGFydGl0aW9uIGZhaWxlZCIpOworICAgICAgICByZXR1cm4gcmV0OworICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKG11eCwgIkNhbid0IHJld3JpdGUgaGVhZGVyIHBhcnRpdGlvbiIpOwogICAgIH0KQEAgLTEzODQsMTYgKzE1ODcsMzMgQEAKICAgICAgIHBhLT5zb3VyY2VfdHJhY2stPnBhcmVudC50cmFja19udW1iZXI7CiB9CiAKLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfbXhmX211eF9jb2xsZWN0ZWQgKEdzdENvbGxlY3RQYWRzICogcGFkcywgZ3BvaW50ZXIgdXNlcl9kYXRhKQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9teGZfbXV4X3N0b3AgKEdzdEFnZ3JlZ2F0b3IgKiBhZ2dyZWdhdG9yKQogewotICBHc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYICh1c2VyX2RhdGEpOworICBHc3RNWEZNdXggKm11eCA9IEdTVF9NWEZfTVVYIChhZ2dyZWdhdG9yKTsKKworICBnc3RfbXhmX211eF9yZXNldCAobXV4KTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9teGZfbXV4X2FnZ3JlZ2F0ZSAoR3N0QWdncmVnYXRvciAqIGFnZ3JlZ2F0b3IsIGdib29sZWFuIHRpbWVvdXQpCit7CisgIEdzdE1YRk11eCAqbXV4ID0gR1NUX01YRl9NVVggKGFnZ3JlZ2F0b3IpOwogICBHc3RNWEZNdXhQYWQgKmJlc3QgPSBOVUxMOwogICBHc3RGbG93UmV0dXJuIHJldDsKLSAgR3N0U2VnbWVudCBzZWdtZW50OwotICBHU0xpc3QgKnNsOworICBHTGlzdCAqbDsKICAgZ2Jvb2xlYW4gZW9zID0gVFJVRTsKIAorICBpZiAodGltZW91dCkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChtdXgsIFNUUkVBTSwgTVVYLCAoTlVMTCksCisgICAgICAgICgiTGl2ZSBtaXhpbmcgYW5kIGdvdCBhIHRpbWVvdXQuIFRoaXMgaXMgbm90IHN1cHBvcnRlZCB5ZXQiKSk7CisgICAgcmV0ID0gR1NUX0ZMT1dfRVJST1I7CisgICAgZ290byBlcnJvcjsKKyAgfQorCiAgIGlmIChtdXgtPnN0YXRlID09IEdTVF9NWEZfTVVYX1NUQVRFX0VSUk9SKSB7CiAgICAgR1NUX0VSUk9SX09CSkVDVCAobXV4LCAiSGFkIGFuIGVycm9yIGJlZm9yZSAtLSByZXR1cm5pbmciKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CkBAIC0xNDAzLDMxICsxNjIzLDMzIEBACiAgIH0KIAogICBpZiAobXV4LT5zdGF0ZSA9PSBHU1RfTVhGX01VWF9TVEFURV9IRUFERVIpIHsKLSAgICBpZiAobXV4LT5jb2xsZWN0LT5kYXRhID09IE5VTEwpIHsKKyAgICBHc3RDYXBzICpjYXBzOworCisgICAgaWYgKEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzID09IE5VTEwpIHsKICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChtdXgsIFNUUkVBTSwgTVVYLCAoTlVMTCksCiAgICAgICAgICAgKCJObyBpbnB1dCBzdHJlYW1zIGNvbmZpZ3VyZWQiKSk7CiAgICAgICByZXQgPSBHU1RfRkxPV19FUlJPUjsKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfQllURVMpOwotICAgIGlmIChnc3RfcGFkX3B1c2hfZXZlbnQgKG11eC0+c3JjcGFkLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSkpIHsKLSAgICAgIGlmICgocmV0ID0gZ3N0X214Zl9tdXhfY3JlYXRlX21ldGFkYXRhIChtdXgpKSAhPSBHU1RfRkxPV19PSykKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoImFwcGxpY2F0aW9uL214ZiIpOworICAgIGdzdF9hZ2dyZWdhdG9yX3NldF9zcmNfY2FwcyAoR1NUX0FHR1JFR0FUT1IgKG11eCksIGNhcHMpOworICAgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKIAotICAgICAgaWYgKChyZXQgPSBnc3RfbXhmX211eF9pbml0X3BhcnRpdGlvbl9wYWNrIChtdXgpKSAhPSBHU1RfRkxPV19PSykKLSAgICAgICAgZ290byBlcnJvcjsKKyAgICBpZiAoKHJldCA9IGdzdF9teGZfbXV4X2NyZWF0ZV9tZXRhZGF0YSAobXV4KSkgIT0gR1NUX0ZMT1dfT0spCisgICAgICBnb3RvIGVycm9yOwogCi0gICAgICByZXQgPSBnc3RfbXhmX211eF93cml0ZV9oZWFkZXJfbWV0YWRhdGEgKG11eCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHJldCA9IEdTVF9GTE9XX0VSUk9SOwotICAgIH0KKyAgICBpZiAoKHJldCA9IGdzdF9teGZfbXV4X2luaXRfcGFydGl0aW9uX3BhY2sgKG11eCkpICE9IEdTVF9GTE9XX09LKQorICAgICAgZ290byBlcnJvcjsKIAotICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spCisgICAgaWYgKChyZXQgPSBnc3RfbXhmX211eF93cml0ZV9oZWFkZXJfbWV0YWRhdGEgKG11eCkpICE9IEdTVF9GTE9XX09LKQogICAgICAgZ290byBlcnJvcjsKIAogICAgIC8qIFNvcnQgcGFkcywgd2Ugd2lsbCBhbHdheXMgd3JpdGUgaW4gdGhhdCBvcmRlciAqLwotICAgIG11eC0+Y29sbGVjdC0+ZGF0YSA9IGdfc2xpc3Rfc29ydCAobXV4LT5jb2xsZWN0LT5kYXRhLCBfc29ydF9tdXhfcGFkcyk7CisgICAgR1NUX09CSkVDVF9MT0NLIChtdXgpOworICAgIEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzID0KKyAgICAgICAgZ19saXN0X3NvcnQgKEdTVF9FTEVNRU5UX0NBU1QgKG11eCktPnNpbmtwYWRzLCBfc29ydF9tdXhfcGFkcyk7CisgICAgR1NUX09CSkVDVF9VTkxPQ0sgKG11eCk7CiAKICAgICAvKiBXcml0ZSBib2R5IHBhcnRpdGlvbiAqLwogICAgIHJldCA9IGdzdF9teGZfbXV4X3dyaXRlX2JvZHlfcGFydGl0aW9uIChtdXgpOwpAQCAtMTQzOSw0MyArMTY2MSw1OSBAQAogICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ19oYXNoX3RhYmxlX3NpemUgKG11eC0+bWV0YWRhdGEpID4gMCwgR1NUX0ZMT1dfRVJST1IpOwogCiAgIGRvIHsKLSAgICBmb3IgKHNsID0gbXV4LT5jb2xsZWN0LT5kYXRhOyBzbDsgc2wgPSBzbC0+bmV4dCkgeworICAgIEdTVF9PQkpFQ1RfTE9DSyAobXV4KTsKKyAgICBmb3IgKGwgPSBHU1RfRUxFTUVOVF9DQVNUIChtdXgpLT5zaW5rcGFkczsgbDsgbCA9IGwtPm5leHQpIHsKICAgICAgIGdib29sZWFuIHBhZF9lb3M7Ci0gICAgICBHc3RNWEZNdXhQYWQgKmNwYWQgPSBzbC0+ZGF0YTsKKyAgICAgIEdzdE1YRk11eFBhZCAqcGFkID0gbC0+ZGF0YTsKKyAgICAgIEdzdEJ1ZmZlciAqYnVmZmVyOwogICAgICAgR3N0Q2xvY2tUaW1lIG5leHRfZ2NfdGltZXN0YW1wID0KICAgICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGUgKChtdXgtPmxhc3RfZ2NfcG9zaXRpb24gKyAxKSAqIEdTVF9TRUNPTkQsCiAgICAgICAgICAgbXV4LT5taW5fZWRpdF9yYXRlLmQsIG11eC0+bWluX2VkaXRfcmF0ZS5uKTsKIAotICAgICAgcGFkX2VvcyA9IGNwYWQtPmNvbGxlY3Quc3RhdGUgJiBHU1RfQ09MTEVDVF9QQURTX1NUQVRFX0VPUzsKKyAgICAgIHBhZF9lb3MgPSBnc3RfYWdncmVnYXRvcl9wYWRfaXNfZW9zIChHU1RfQUdHUkVHQVRPUl9QQUQgKHBhZCkpOwogICAgICAgaWYgKCFwYWRfZW9zKQogICAgICAgICBlb3MgPSBGQUxTRTsKIAotICAgICAgaWYgKCghcGFkX2VvcyB8fCBjcGFkLT5oYXZlX2NvbXBsZXRlX2VkaXRfdW5pdCB8fAotICAgICAgICAgICAgICBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKGNwYWQtPmFkYXB0ZXIpID4gMCB8fCBjcGFkLT5jb2xsZWN0LmJ1ZmZlcikKLSAgICAgICAgICAmJiBjcGFkLT5sYXN0X3RpbWVzdGFtcCA8IG5leHRfZ2NfdGltZXN0YW1wKSB7Ci0gICAgICAgIGJlc3QgPSBjcGFkOworICAgICAgYnVmZmVyID0gZ3N0X2FnZ3JlZ2F0b3JfcGFkX2dldF9idWZmZXIgKEdTVF9BR0dSRUdBVE9SX1BBRCAocGFkKSk7CisKKyAgICAgIGlmICgoIXBhZF9lb3MgfHwgcGFkLT5oYXZlX2NvbXBsZXRlX2VkaXRfdW5pdCB8fAorICAgICAgICAgICAgICBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHBhZC0+YWRhcHRlcikgPiAwIHx8IGJ1ZmZlcikKKyAgICAgICAgICAmJiBwYWQtPmxhc3RfdGltZXN0YW1wIDwgbmV4dF9nY190aW1lc3RhbXApIHsKKyAgICAgICAgaWYgKGJ1ZmZlcikKKyAgICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOworICAgICAgICBiZXN0ID0gZ3N0X29iamVjdF9yZWYgKHBhZCk7CiAgICAgICAgIGJyZWFrOwotICAgICAgfSBlbHNlIGlmICghZW9zICYmICFzbC0+bmV4dCkgeworICAgICAgfSBlbHNlIGlmICghZW9zICYmICFsLT5uZXh0KSB7CiAgICAgICAgIG11eC0+bGFzdF9nY19wb3NpdGlvbisrOwogICAgICAgICBtdXgtPmxhc3RfZ2NfdGltZXN0YW1wID0gbmV4dF9nY190aW1lc3RhbXA7CiAgICAgICAgIGVvcyA9IEZBTFNFOworICAgICAgICBpZiAoYnVmZmVyKQorICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAgICAgICAgIGJlc3QgPSBOVUxMOwogICAgICAgICBicmVhazsKICAgICAgIH0KKyAgICAgIGlmIChidWZmZXIpCisgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CiAgICAgfQorICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChtdXgpOwogICB9IHdoaWxlICghZW9zICYmIGJlc3QgPT0gTlVMTCk7CiAKICAgaWYgKCFlb3MgJiYgYmVzdCkgewogICAgIHJldCA9IGdzdF9teGZfbXV4X2hhbmRsZV9idWZmZXIgKG11eCwgYmVzdCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoYmVzdCk7CiAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKICAgICAgIGdvdG8gZXJyb3I7CiAgIH0gZWxzZSBpZiAoZW9zKSB7CiAgICAgR1NUX0RFQlVHX09CSkVDVCAobXV4LCAiSGFuZGxpbmcgRU9TIik7CiAKKyAgICBpZiAoYmVzdCkKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGJlc3QpOworCiAgICAgZ3N0X214Zl9tdXhfaGFuZGxlX2VvcyAobXV4KTsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKG11eC0+c3JjcGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7CiAgICAgbXV4LT5zdGF0ZSA9IEdTVF9NWEZfTVVYX1NUQVRFX0VPUzsKICAgICByZXR1cm4gR1NUX0ZMT1dfRU9TOworICB9IGVsc2UgeworICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOwogICB9CiAKICAgcmV0dXJuIEdTVF9GTE9XX09LOwpAQCAtMTQ4Myw0NSArMTcyMSw2IEBACiBlcnJvcjoKICAgewogICAgIG11eC0+c3RhdGUgPSBHU1RfTVhGX01VWF9TVEFURV9FUlJPUjsKLSAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKG11eC0+c3JjcGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSk7CiAgICAgcmV0dXJuIHJldDsKICAgfQogfQotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9teGZfbXV4X2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pCi17Ci0gIEdzdFN0YXRlQ2hhbmdlUmV0dXJuIHJldDsKLSAgR3N0TVhGTXV4ICptdXggPSBHU1RfTVhGX01VWCAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgotICAgICAgZ3N0X2NvbGxlY3RfcGFkc19zdGFydCAobXV4LT5jb2xsZWN0KTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUExBWUlORzoKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0gICAgICBnc3RfY29sbGVjdF9wYWRzX3N0b3AgKG11eC0+Y29sbGVjdCk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlIChlbGVtZW50LCB0cmFuc2l0aW9uKTsKLQotICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUExBWUlOR19UT19QQVVTRUQ6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgotICAgICAgZ3N0X214Zl9tdXhfcmVzZXQgKG11eCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19CmRpZmYgLS1naXQgYS9nc3QvbXhmL214Zm11eC5oIGIvZ3N0L214Zi9teGZtdXguaAppbmRleCA3YjgzNDI3Li5lODg3MzYyIDEwMDY0NAotLS0gYS9nc3QvbXhmL214Zm11eC5oCisrKyBiL2dzdC9teGYvbXhmbXV4LmgKQEAgLTIyLDcgKzIyLDcgQEAKIAogI2luY2x1ZGUgPGdzdC9nc3QuaD4KICNpbmNsdWRlIDxnc3QvYmFzZS9nc3RhZGFwdGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Y29sbGVjdHBhZHMuaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RhZ2dyZWdhdG9yLmg+CiAKICNpbmNsdWRlICJteGZlc3NlbmNlLmgiCiAKQEAgLTM5LDI2ICszOSw2IEBACiAjZGVmaW5lIEdTVF9JU19NWEZfTVVYX0NMQVNTKGtsYXNzKSBcCiAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfTVhGX01VWCkpCiAKLXR5cGVkZWYgc3RydWN0Ci17Ci0gIEdzdENvbGxlY3REYXRhIGNvbGxlY3Q7Ci0KLSAgZ3VpbnQ2NCBwb3M7Ci0gIEdzdENsb2NrVGltZSBsYXN0X3RpbWVzdGFtcDsKLQotICBNWEZNZXRhZGF0YUZpbGVEZXNjcmlwdG9yICpkZXNjcmlwdG9yOwotCi0gIEdzdEFkYXB0ZXIgKmFkYXB0ZXI7Ci0gIGdib29sZWFuIGhhdmVfY29tcGxldGVfZWRpdF91bml0OwotCi0gIGdwb2ludGVyIG1hcHBpbmdfZGF0YTsKLSAgY29uc3QgTVhGRXNzZW5jZUVsZW1lbnRXcml0ZXIgKndyaXRlcjsKLSAgTVhGRXNzZW5jZUVsZW1lbnRXcml0ZUZ1bmMgd3JpdGVfZnVuYzsKLQotICBNWEZNZXRhZGF0YVNvdXJjZVBhY2thZ2UgKnNvdXJjZV9wYWNrYWdlOwotICBNWEZNZXRhZGF0YVRpbWVsaW5lVHJhY2sgKnNvdXJjZV90cmFjazsKLX0gR3N0TVhGTXV4UGFkOwotCiB0eXBlZGVmIGVudW0KIHsKICAgR1NUX01YRl9NVVhfU1RBVEVfSEVBREVSLApAQCAtNjgsMTQgKzQ4LDkgQEAKIH0gR3N0TVhGTXV4U3RhdGU7CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RNWEZNdXggewotICBHc3RFbGVtZW50IGVsZW1lbnQ7Ci0KLSAgR3N0UGFkICpzcmNwYWQ7Ci0gIEdzdENvbGxlY3RQYWRzICpjb2xsZWN0OworICBHc3RBZ2dyZWdhdG9yIHBhcmVudDsKIAogICAvKiA8cHJpdmF0ZT4gKi8KLSAgR3N0UGFkRXZlbnRGdW5jdGlvbiBjb2xsZWN0X2V2ZW50OwotCiAgIEdzdE1YRk11eFN0YXRlIHN0YXRlOwogICBndWludCBuX3BhZHM7CiAKQEAgLTgzLDcgKzU4LDcgQEAKIAogICBNWEZQYXJ0aXRpb25QYWNrIHBhcnRpdGlvbjsKICAgTVhGUHJpbWVyUGFjayBwcmltZXI7Ci0gIAorCiAgIEdIYXNoVGFibGUgKm1ldGFkYXRhOwogICBHTGlzdCAqbWV0YWRhdGFfbGlzdDsKICAgTVhGTWV0YWRhdGFQcmVmYWNlICpwcmVmYWNlOwpAQCAtOTMsMTAgKzY4LDEyIEBACiAgIEdzdENsb2NrVGltZSBsYXN0X2djX3RpbWVzdGFtcDsKIAogICBnY2hhciAqYXBwbGljYXRpb247CisKKyAgR0FycmF5ICppbmRleF90YWJsZTsKIH0gR3N0TVhGTXV4OwogCiB0eXBlZGVmIHN0cnVjdCBfR3N0TVhGTXV4Q2xhc3MgewotICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50OworICBHc3RBZ2dyZWdhdG9yQ2xhc3MgcGFyZW50OwogfSBHc3RNWEZNdXhDbGFzczsKIAogR1R5cGUgZ3N0X214Zl9tdXhfZ2V0X3R5cGUgKHZvaWQpOwpkaWZmIC0tZ2l0IGEvZ3N0L214Zi9teGZ0eXBlcy5jIGIvZ3N0L214Zi9teGZ0eXBlcy5jCmluZGV4IGQ4NTdlZmUuLjE0ZTIzNjIgMTAwNjQ0Ci0tLSBhL2dzdC9teGYvbXhmdHlwZXMuYworKysgYi9nc3QvbXhmL214ZnR5cGVzLmMKQEAgLTIyLDYgKzIyLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGJ5dGV3cml0ZXIuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIAogI2luY2x1ZGUgIm14ZnR5cGVzLmgiCkBAIC0yMTUsNyArMjE2LDggQEAKICAgZG8gewogICAgIGZvciAoaSA9IDA7IGkgPCA0OyBpKyspCiAgICAgICBHU1RfV1JJVEVfVUlOVDMyX0JFICgmdXVpZC0+dVtpICogNF0sIGdfcmFuZG9tX2ludCAoKSk7Ci0KKyAgICB1dWlkLT51WzZdID0gMHg0MCB8ICh1dWlkLT51WzZdICYgMHgwZik7CisgICAgdXVpZC0+dVs4XSA9ICh1dWlkLT51WzhdICYgMHhiZikgfCAweDgwOwogICB9IHdoaWxlIChoYXNodGFibGUgJiYgKG14Zl91dWlkX2lzX3plcm8gKHV1aWQpIHx8CiAgICAgICAgICAgZ19oYXNoX3RhYmxlX2xvb2t1cF9leHRlbmRlZCAoaGFzaHRhYmxlLCB1dWlkLCBOVUxMLCBOVUxMKSkpOwogfQpAQCAtNzQ2LDEzICs3NDgsMTMgQEAKICAgZWxzZSBpZiAocGF0dGVybiA9PSBNWEZfT1BfMWMgfHwgcGF0dGVybiA9PSBNWEZfT1BfMmMgfHwgcGF0dGVybiA9PSBNWEZfT1BfM2MpCiAgICAgdWwtPnVbMTNdID0gMHgwMjsKIAotICB1bC0+dVsxNF0gPSAweDgwOworICB1bC0+dVsxNF0gPSAweDA4OwogICBpZiAoIWludGVybmFsX2Vzc2VuY2UpCi0gICAgdWwtPnVbMTRdIHw9IDB4NDA7CisgICAgdWwtPnVbMTRdIHw9IDB4MDQ7CiAgIGlmICghc3RyZWFtYWJsZSkKLSAgICB1bC0+dVsxNF0gfD0gMHgyMDsKKyAgICB1bC0+dVsxNF0gfD0gMHgwMjsKICAgaWYgKCFzaW5nbGVfdHJhY2spCi0gICAgdWwtPnVbMTRdIHw9IDB4MTA7CisgICAgdWwtPnVbMTRdIHw9IDB4MDE7CiAKICAgdWwtPnVbMTVdID0gMDsKIH0KQEAgLTEwNjEsOCArMTA2Myw3IEBACiAvKiBTTVBURSAzNzdNIDEwLjIuMyAqLwogZ2Jvb2xlYW4KIG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3BhcnNlIChjb25zdCBNWEZVTCAqIHVsLAotICAgIE1YRkluZGV4VGFibGVTZWdtZW50ICogc2VnbWVudCwgY29uc3QgTVhGUHJpbWVyUGFjayAqIHByaW1lciwKLSAgICBjb25zdCBndWludDggKiBkYXRhLCBndWludCBzaXplKQorICAgIE1YRkluZGV4VGFibGVTZWdtZW50ICogc2VnbWVudCwgY29uc3QgZ3VpbnQ4ICogZGF0YSwgZ3VpbnQgc2l6ZSkKIHsKICNpZm5kZWYgR1NUX0RJU0FCTEVfR1NUX0RFQlVHCiAgIGdjaGFyIHN0cls0OF07CkBAIC0xMDcyLDcgKzEwNzMsNiBAQAogCiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh1bCAhPSBOVUxMLCBGQUxTRSk7CiAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChkYXRhICE9IE5VTEwsIEZBTFNFKTsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHByaW1lciAhPSBOVUxMLCBGQUxTRSk7CiAKICAgbWVtc2V0IChzZWdtZW50LCAwLCBzaXplb2YgKE1YRkluZGV4VGFibGVTZWdtZW50KSk7CiAKQEAgLTEwODIsOCArMTA4MiwxMSBAQAogICBHU1RfREVCVUcgKCJQYXJzaW5nIGluZGV4IHRhYmxlIHNlZ21lbnQ6Iik7CiAKICAgd2hpbGUgKG14Zl9sb2NhbF90YWdfcGFyc2UgKGRhdGEsIHNpemUsICZ0YWcsICZ0YWdfc2l6ZSwgJnRhZ19kYXRhKSkgeworICAgIGRhdGEgKz0gNCArIHRhZ19zaXplOworICAgIHNpemUgLT0gNCArIHRhZ19zaXplOworCiAgICAgaWYgKHRhZ19zaXplID09IDAgfHwgdGFnID09IDB4MDAwMCkKLSAgICAgIGdvdG8gbmV4dDsKKyAgICAgIGNvbnRpbnVlOwogCiAgICAgc3dpdGNoICh0YWcpIHsKICAgICAgIGNhc2UgMHgzYzBhOgpAQCAtMTE1NCw3ICsxMTU3LDcgQEAKICAgICAgICAgc2VnbWVudC0+bl9kZWx0YV9lbnRyaWVzID0gbGVuOwogICAgICAgICBHU1RfREVCVUcgKCIgIG51bWJlciBvZiBkZWx0YSBlbnRyaWVzID0gJXUiLCBzZWdtZW50LT5uX2RlbHRhX2VudHJpZXMpOwogICAgICAgICBpZiAobGVuID09IDApCi0gICAgICAgICAgZ290byBuZXh0OworICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICB0YWdfZGF0YSArPSA0OwogICAgICAgICB0YWdfc2l6ZSAtPSA0OwogCkBAIC0xMjAyLDcgKzEyMDUsNyBAQAogICAgICAgICBzZWdtZW50LT5uX2luZGV4X2VudHJpZXMgPSBsZW47CiAgICAgICAgIEdTVF9ERUJVRyAoIiAgbnVtYmVyIG9mIGluZGV4IGVudHJpZXMgPSAldSIsIHNlZ21lbnQtPm5faW5kZXhfZW50cmllcyk7CiAgICAgICAgIGlmIChsZW4gPT0gMCkKLSAgICAgICAgICBnb3RvIG5leHQ7CisgICAgICAgICAgY29udGludWU7CiAgICAgICAgIHRhZ19kYXRhICs9IDQ7CiAgICAgICAgIHRhZ19zaXplIC09IDQ7CiAKQEAgLTEyNjUsMTggKzEyNjgsMTEgQEAKICAgICAgICAgYnJlYWs7CiAgICAgICB9CiAgICAgICBkZWZhdWx0OgotICAgICAgICBpZiAoIXByaW1lci0+bWFwcGluZ3MpIHsKLSAgICAgICAgICBHU1RfV0FSTklORyAoIk5vIHZhbGlkIHByaW1lciBwYWNrIGZvciB0aGlzIHBhcnRpdGlvbiIpOwotICAgICAgICB9IGVsc2UgaWYgKCFteGZfbG9jYWxfdGFnX2FkZF90b19oYXNoX3RhYmxlIChwcmltZXIsIHRhZywgdGFnX2RhdGEsCi0gICAgICAgICAgICAgICAgdGFnX3NpemUsICZzZWdtZW50LT5vdGhlcl90YWdzKSkgewotICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gICAgICAgIH0KKyAgICAgICAgR1NUX1dBUk5JTkcKKyAgICAgICAgICAgICgiVW5rbm93biBsb2NhbCB0YWcgMHglMDR4IG9mIHNpemUgJWQgaW4gaW5kZXggdGFibGUgc2VnbWVudCIsIHRhZywKKyAgICAgICAgICAgIHRhZ19zaXplKTsKICAgICAgICAgYnJlYWs7CiAgICAgfQotCi0gIG5leHQ6Ci0gICAgZGF0YSArPSA0ICsgdGFnX3NpemU7Ci0gICAgc2l6ZSAtPSA0ICsgdGFnX3NpemU7CiAgIH0KICAgcmV0dXJuIFRSVUU7CiAKQEAgLTEzMDEsMTIgKzEyOTcsMTI4IEBACiAgIGdfZnJlZSAoc2VnbWVudC0+aW5kZXhfZW50cmllcyk7CiAgIGdfZnJlZSAoc2VnbWVudC0+ZGVsdGFfZW50cmllcyk7CiAKLSAgaWYgKHNlZ21lbnQtPm90aGVyX3RhZ3MpCi0gICAgZ19oYXNoX3RhYmxlX2Rlc3Ryb3kgKHNlZ21lbnQtPm90aGVyX3RhZ3MpOwotCiAgIG1lbXNldCAoc2VnbWVudCwgMCwgc2l6ZW9mIChNWEZJbmRleFRhYmxlU2VnbWVudCkpOwogfQogCitHc3RCdWZmZXIgKgorbXhmX2luZGV4X3RhYmxlX3NlZ21lbnRfdG9fYnVmZmVyIChjb25zdCBNWEZJbmRleFRhYmxlU2VnbWVudCAqIHNlZ21lbnQpCit7CisgIGd1aW50IGxlbiwgc2xlbiwgaTsKKyAgZ3VpbnQ4IGJlcls5XTsKKyAgR3N0QnVmZmVyICpyZXQ7CisgIEdzdE1hcEluZm8gbWFwOworICBHc3RCeXRlV3JpdGVyIGJ3OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChzZWdtZW50ICE9IE5VTEwsIE5VTEwpOworICBnX3JldHVybl92YWxfaWZfZmFpbCAoc2VnbWVudC0+bl9kZWx0YV9lbnRyaWVzICogNiA8IEdfTUFYVUlOVDE2LCBOVUxMKTsKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKHNlZ21lbnQtPm5faW5kZXhfZW50cmllcyAqICgxMSArCisgICAgICAgICAgNCAqIHNlZ21lbnQtPnNsaWNlX2NvdW50ICsgOCAqIHNlZ21lbnQtPnBvc190YWJsZV9jb3VudCkgPAorICAgICAgR19NQVhVSU5UMTYsIE5VTEwpOworCisgIGxlbiA9CisgICAgICAxNiArIDQgKyA4ICsgNCArIDggKyA0ICsgOCArIDQgKyA0ICsgNCArIDQgKyA0ICsgNCArIDQgKyAxICsgNCArIDEgKyA0ICsKKyAgICAgIDQgKyA4ICsgc2VnbWVudC0+bl9kZWx0YV9lbnRyaWVzICogNiArIDQgKyA4ICsKKyAgICAgIHNlZ21lbnQtPm5faW5kZXhfZW50cmllcyAqICgxMSArIDQgKiBzZWdtZW50LT5zbGljZV9jb3VudCArCisgICAgICA4ICogc2VnbWVudC0+cG9zX3RhYmxlX2NvdW50KTsKKyAgc2xlbiA9IG14Zl9iZXJfZW5jb2RlX3NpemUgKGxlbiwgYmVyKTsKKworICByZXQgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKDE2ICsgc2xlbiArIGxlbik7CisgIGdzdF9idWZmZXJfbWFwIChyZXQsICZtYXAsIEdTVF9NQVBfV1JJVEUpOworCisgIGdzdF9ieXRlX3dyaXRlcl9pbml0X3dpdGhfZGF0YSAoJmJ3LCBtYXAuZGF0YSwgbWFwLnNpemUsIEZBTFNFKTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X2RhdGFfdW5jaGVja2VkICgmYncsCisgICAgICAoY29uc3QgZ3VpbnQ4ICopIE1YRl9VTCAoSU5ERVhfVEFCTEVfU0VHTUVOVCksIDE2KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF9kYXRhX3VuY2hlY2tlZCAoJmJ3LCBiZXIsIHNsZW4pOworCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAweDNjMGEpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMTYpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X2RhdGFfdW5jaGVja2VkICgmYncsCisgICAgICAoY29uc3QgZ3VpbnQ4ICopICZzZWdtZW50LT5pbnN0YW5jZV9pZCwgMTYpOworCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAweDNmMGIpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgOCk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LCBzZWdtZW50LT5pbmRleF9lZGl0X3JhdGUubik7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LCBzZWdtZW50LT5pbmRleF9lZGl0X3JhdGUuZCk7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDB4M2YwYyk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCA4KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50NjRfYmVfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPmluZGV4X3N0YXJ0X3Bvc2l0aW9uKTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjBkKTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDgpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ2NF9iZV91bmNoZWNrZWQgKCZidywgc2VnbWVudC0+aW5kZXhfZHVyYXRpb24pOworCisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCAweDNmMDUpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgNCk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LCBzZWdtZW50LT5lZGl0X3VuaXRfYnl0ZV9jb3VudCk7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDB4M2YwNik7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCA0KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPmluZGV4X3NpZCk7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDB4M2YwNyk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LCA0KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPmJvZHlfc2lkKTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjA4KTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDEpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4ICgmYncsIHNlZ21lbnQtPnNsaWNlX2NvdW50KTsKKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjBlKTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDEpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4ICgmYncsIHNlZ21lbnQtPnBvc190YWJsZV9jb3VudCk7CisKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsIDB4M2YwOSk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDE2X2JlX3VuY2hlY2tlZCAoJmJ3LAorICAgICAgOCArIHNlZ21lbnQtPm5fZGVsdGFfZW50cmllcyAqIDYpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywgc2VnbWVudC0+bl9kZWx0YV9lbnRyaWVzKTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsIDYpOworICBmb3IgKGkgPSAwOyBpIDwgc2VnbWVudC0+bl9kZWx0YV9lbnRyaWVzOyBpKyspIHsKKyAgICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4X3VuY2hlY2tlZCAoJmJ3LAorICAgICAgICBzZWdtZW50LT5kZWx0YV9lbnRyaWVzW2ldLnBvc190YWJsZV9pbmRleCk7CisgICAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50OF91bmNoZWNrZWQgKCZidywgc2VnbWVudC0+ZGVsdGFfZW50cmllc1tpXS5zbGljZSk7CisgICAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsCisgICAgICAgIHNlZ21lbnQtPmRlbHRhX2VudHJpZXNbaV0uZWxlbWVudF9kZWx0YSk7CisgIH0KKworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQxNl9iZV91bmNoZWNrZWQgKCZidywgMHgzZjBhKTsKKyAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MTZfYmVfdW5jaGVja2VkICgmYncsCisgICAgICA4ICsgc2VnbWVudC0+bl9pbmRleF9lbnRyaWVzICogKDExICsgNCAqIHNlZ21lbnQtPnNsaWNlX2NvdW50ICsKKyAgICAgICAgICA4ICogc2VnbWVudC0+cG9zX3RhYmxlX2NvdW50KSk7CisgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LCBzZWdtZW50LT5uX2luZGV4X2VudHJpZXMpOworICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywKKyAgICAgICgxMSArIDQgKiBzZWdtZW50LT5zbGljZV9jb3VudCArIDggKiBzZWdtZW50LT5wb3NfdGFibGVfY291bnQpKTsKKyAgZm9yIChpID0gMDsgaSA8IHNlZ21lbnQtPm5faW5kZXhfZW50cmllczsgaSsrKSB7CisgICAgZ3VpbnQgajsKKworICAgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDhfdW5jaGVja2VkICgmYncsCisgICAgICAgIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbaV0udGVtcG9yYWxfb2Zmc2V0KTsKKyAgICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQ4X3VuY2hlY2tlZCAoJmJ3LAorICAgICAgICBzZWdtZW50LT5pbmRleF9lbnRyaWVzW2ldLmtleV9mcmFtZV9vZmZzZXQpOworICAgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDhfdW5jaGVja2VkICgmYncsIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbaV0uZmxhZ3MpOworICAgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDY0X2JlX3VuY2hlY2tlZCAoJmJ3LAorICAgICAgICBzZWdtZW50LT5pbmRleF9lbnRyaWVzW2ldLnN0cmVhbV9vZmZzZXQpOworCisgICAgZm9yIChqID0gMDsgaiA8IHNlZ21lbnQtPnNsaWNlX2NvdW50OyBqKyspCisgICAgICBnc3RfYnl0ZV93cml0ZXJfcHV0X3VpbnQzMl9iZV91bmNoZWNrZWQgKCZidywKKyAgICAgICAgICBzZWdtZW50LT5pbmRleF9lbnRyaWVzW2ldLnNsaWNlX29mZnNldFtqXSk7CisKKyAgICBmb3IgKGogPSAwOyBqIDwgc2VnbWVudC0+cG9zX3RhYmxlX2NvdW50OyBqKyspIHsKKyAgICAgIGdzdF9ieXRlX3dyaXRlcl9wdXRfdWludDMyX2JlX3VuY2hlY2tlZCAoJmJ3LAorICAgICAgICAgIHNlZ21lbnQtPmluZGV4X2VudHJpZXNbaV0ucG9zX3RhYmxlW2pdLm4pOworICAgICAgZ3N0X2J5dGVfd3JpdGVyX3B1dF91aW50MzJfYmVfdW5jaGVja2VkICgmYncsCisgICAgICAgICAgc2VnbWVudC0+aW5kZXhfZW50cmllc1tpXS5wb3NfdGFibGVbal0uZCk7CisgICAgfQorICB9CisKKyAgZ19hc3NlcnQgKGdzdF9ieXRlX3dyaXRlcl9nZXRfcG9zICgmYncpID09IG1hcC5zaXplKTsKKworICBnc3RfYnVmZmVyX3VubWFwIChyZXQsICZtYXApOworCisgIHJldHVybiByZXQ7Cit9CisKIC8qIFNNUFRFIDM3N00gOC4yIFRhYmxlIDEgYW5kIDIgKi8KIAogc3RhdGljIHZvaWQKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmdHlwZXMuaCBiL2dzdC9teGYvbXhmdHlwZXMuaAppbmRleCAwYzMzOGU3Li5jOTY1OTBlIDEwMDY0NAotLS0gYS9nc3QvbXhmL214ZnR5cGVzLmgKKysrIGIvZ3N0L214Zi9teGZ0eXBlcy5oCkBAIC0xNDgsNyArMTQ4LDcgQEAKIAogICBndWludDggZmxhZ3M7CiAgIGd1aW50NjQgc3RyZWFtX29mZnNldDsKLSAgCisKICAgZ3VpbnQzMiAqc2xpY2Vfb2Zmc2V0OwogICBNWEZGcmFjdGlvbiAqcG9zX3RhYmxlOwogfSBNWEZJbmRleEVudHJ5OwpAQCAtMTY5LDkgKzE2OSw2IEBACiAKICAgZ3VpbnQzMiBuX2luZGV4X2VudHJpZXM7CiAgIE1YRkluZGV4RW50cnkgKmluZGV4X2VudHJpZXM7Ci0KLSAgR0hhc2hUYWJsZSAqb3RoZXJfdGFnczsKLSAgZ3VpbnQ2NCBzdHJlYW1fb2Zmc2V0OwogfSBNWEZJbmRleFRhYmxlU2VnbWVudDsKIAogI2RlZmluZSBHU1RfVEFHX01YRl9VTUlEICJteGYtdW1pZCIKQEAgLTI1NCw4ICsyNTEsOSBAQAogZ2Jvb2xlYW4gbXhmX3JhbmRvbV9pbmRleF9wYWNrX3BhcnNlIChjb25zdCBNWEZVTCAqdWwsIGNvbnN0IGd1aW50OCAqZGF0YSwgZ3VpbnQgc2l6ZSwgR0FycmF5ICoqYXJyYXkpOwogR3N0QnVmZmVyICogbXhmX3JhbmRvbV9pbmRleF9wYWNrX3RvX2J1ZmZlciAoY29uc3QgR0FycmF5ICphcnJheSk7CiAKLWdib29sZWFuIG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3BhcnNlIChjb25zdCBNWEZVTCAqdWwsIE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWdtZW50LCBjb25zdCBNWEZQcmltZXJQYWNrICpwcmltZXIsIGNvbnN0IGd1aW50OCAqZGF0YSwgZ3VpbnQgc2l6ZSk7CitnYm9vbGVhbiBteGZfaW5kZXhfdGFibGVfc2VnbWVudF9wYXJzZSAoY29uc3QgTVhGVUwgKnVsLCBNWEZJbmRleFRhYmxlU2VnbWVudCAqc2VnbWVudCwgY29uc3QgZ3VpbnQ4ICpkYXRhLCBndWludCBzaXplKTsKIHZvaWQgbXhmX2luZGV4X3RhYmxlX3NlZ21lbnRfcmVzZXQgKE1YRkluZGV4VGFibGVTZWdtZW50ICpzZWdtZW50KTsKK0dzdEJ1ZmZlciAqIG14Zl9pbmRleF90YWJsZV9zZWdtZW50X3RvX2J1ZmZlciAoY29uc3QgTVhGSW5kZXhUYWJsZVNlZ21lbnQgKnNlZ21lbnQpOwogCiBnYm9vbGVhbiBteGZfbG9jYWxfdGFnX3BhcnNlIChjb25zdCBndWludDggKiBkYXRhLCBndWludCBzaXplLCBndWludDE2ICogdGFnLAogICAgIGd1aW50MTYgKiB0YWdfc2l6ZSwgY29uc3QgZ3VpbnQ4ICoqIHRhZ19kYXRhKTsKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmdWwuYyBiL2dzdC9teGYvbXhmdWwuYwppbmRleCBiNTM4OWY2Li4zZDE4NmY5IDEwMDY0NAotLS0gYS9nc3QvbXhmL214ZnVsLmMKKysrIGIvZ3N0L214Zi9teGZ1bC5jCkBAIC0xMjEsNiArMTIxLDkgQEAKICAge3sweDA2LCAweDBFLCAweDJCLCAweDM0LCAweDAxLCAweDAxLCAweDAxLCAweDAyLAogICAgICAgICAgIDB4MDYsIDB4MDEsIDB4MDEsIDB4MDQsIDB4MDYsIDB4MDQsIDB4MDAsIDB4MDB9fSwKICAgLyogQ09OVEVOVF9TVE9SQUdFICovCisgIHt7MHgwNiwgMHgwRSwgMHgyQiwgMHgzNCwgMHgwMSwgMHgwMSwgMHgwMSwgMHgwMiwKKyAgICAgICAgICAweDA2LCAweDAxLCAweDAxLCAweDA0LCAweDAyLCAweDAxLCAweDAwLCAweDAwfX0sCisgIC8qIE9QRVJBVElPTkFMX1BBVFRFUk4gKi8KICAge3sweDA2LCAweDBFLCAweDJCLCAweDM0LCAweDAxLCAweDAxLCAweDAxLCAweDA1LAogICAgICAgICAgIDB4MDEsIDB4MDIsIDB4MDIsIDB4MDMsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDB9fSwKICAgLyogRVNTRU5DRV9DT05UQUlORVJTICovCkBAIC0xMzAsNiArMTMzLDkgQEAKICAge3sweDA2LCAweDBFLCAweDJCLCAweDM0LCAweDAxLCAweDAxLCAweDAxLCAweDA1LAogICAgICAgICAgIDB4MDEsIDB4MDIsIDB4MDIsIDB4MTAsIDB4MDIsIDB4MDIsIDB4MDAsIDB4MDB9fSwKICAgLyogSWRlbnRpZmljYXRpb24gKi8KKyAgLyogVEhJU19HRU5FUkFUSU9OX1VJRCAqLworICB7ezB4MDYsIDB4MEUsIDB4MkIsIDB4MzQsIDB4MDEsIDB4MDEsIDB4MDEsIDB4MDIsCisgICAgICAgICAgMHgwNSwgMHgyMCwgMHgwNywgMHgwMSwgMHgwMSwgMHgwMCwgMHgwMCwgMHgwMH19LAogICAvKiBDT01QQU5ZX05BTUUgKi8KICAge3sweDA2LCAweDBFLCAweDJCLCAweDM0LCAweDAxLCAweDAxLCAweDAxLCAweDAyLAogICAgICAgICAgIDB4MDUsIDB4MjAsIDB4MDcsIDB4MDEsIDB4MDIsIDB4MDEsIDB4MDAsIDB4MDB9fSwKZGlmZiAtLWdpdCBhL2dzdC9teGYvbXhmdWwuaCBiL2dzdC9teGYvbXhmdWwuaAppbmRleCA3Yjc2ZjQzLi43NmUzYmE2IDEwMDY0NAotLS0gYS9nc3QvbXhmL214ZnVsLmgKKysrIGIvZ3N0L214Zi9teGZ1bC5oCkBAIC02Myw2ICs2Myw3IEBACiAgIE1YRl9VTF9PUEVSQVRJT05BTF9QQVRURVJOLAogICBNWEZfVUxfRVNTRU5DRV9DT05UQUlORVJTLAogICBNWEZfVUxfRE1fU0NIRU1FUywKKyAgTVhGX1VMX1RISVNfR0VORVJBVElPTl9VSUQsCiAgIE1YRl9VTF9DT01QQU5ZX05BTUUsCiAgIE1YRl9VTF9QUk9EVUNUX05BTUUsCiAgIE1YRl9VTF9QUk9EVUNUX1ZFUlNJT04sCmRpZmYgLS1naXQgYS9nc3QvbXhmL214ZnZjMy5jIGIvZ3N0L214Zi9teGZ2YzMuYwppbmRleCBiZDJjYTI5Li4yZjJlNWIwIDEwMDY0NAotLS0gYS9nc3QvbXhmL214ZnZjMy5jCisrKyBiL2dzdC9teGYvbXhmdmMzLmMKQEAgLTEyMCw3ICsxMjAsNyBAQAogICAgICAgICAgICAgICAgIHBhcmVudC5kZXNjcmlwdG9yW2ldKSkpCiAgICAgICBjb250aW51ZTsKIAotICAgIHN3aXRjaCAodHJhY2stPnBhcmVudC5kZXNjcmlwdG9yW2ldLT5lc3NlbmNlX2NvbnRhaW5lci51WzE1XSkgeworICAgIHN3aXRjaCAodHJhY2stPnBhcmVudC5kZXNjcmlwdG9yW2ldLT5lc3NlbmNlX2NvbnRhaW5lci51WzE0XSkgewogICAgICAgY2FzZSAweDAxOgogICAgICAgICByZXR1cm4gTVhGX0VTU0VOQ0VfV1JBUFBJTkdfRlJBTUVfV1JBUFBJTkc7CiAgICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvZ3N0L25ldHNpbS9NYWtlZmlsZS5hbSBiL2dzdC9uZXRzaW0vTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzE0NTI4OQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC9uZXRzaW0vTWFrZWZpbGUuYW0KQEAgLTAsMCArMSw5IEBACitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RuZXRzaW0ubGEKKworbGliZ3N0bmV0c2ltX2xhX1NPVVJDRVMgPSBnc3RuZXRzaW0uYworbGliZ3N0bmV0c2ltX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCitsaWJnc3RuZXRzaW1fbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKK2xpYmdzdG5ldHNpbV9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3RuZXRzaW1fbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKKworbm9pbnN0X0hFQURFUlMgPSBnc3RuZXRzaW0uaApkaWZmIC0tZ2l0IGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbiBiL2dzdC9uZXRzaW0vTWFrZWZpbGUuaW4Kc2ltaWxhcml0eSBpbmRleCA5MCUKcmVuYW1lIGZyb20gZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgpyZW5hbWUgdG8gZ3N0L25ldHNpbS9NYWtlZmlsZS5pbgppbmRleCBiYTllNWEyLi44YjZlMzJmIDEwMDY0NAotLS0gYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluCisrKyBiL2dzdC9uZXRzaW0vTWFrZWZpbGUuaW4KQEAgLTkwLDcgKzkwLDcgQEAKIGJ1aWxkX3RyaXBsZXQgPSBAYnVpbGRACiBob3N0X3RyaXBsZXQgPSBAaG9zdEAKIHRhcmdldF90cmlwbGV0ID0gQHRhcmdldEAKLXN1YmRpciA9IGdzdC9saXZlYWRkZXIKK3N1YmRpciA9IGdzdC9uZXRzaW0KIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWF1dG8tYWx0Lm00IFwKQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTY0LDE4ICsxNjMsMTggQEAKIGFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChwbHVnaW5kaXIpIgogTFRMSUJSQVJJRVMgPSAkKHBsdWdpbl9MVExJQlJBUklFUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKK2xpYmdzdG5ldHNpbV9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbwotbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKQorYW1fbGliZ3N0bmV0c2ltX2xhX09CSkVDVFMgPSBsaWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLmxvCitsaWJnc3RuZXRzaW1fbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0bmV0c2ltX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RsaXZlYWRkZXJfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAotCSQoQ0NMRCkgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdG5ldHNpbV9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKGxpYmdzdG5ldHNpbV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayBcCisJJChDQ0xEKSAkKGxpYmdzdG5ldHNpbV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisJJChsaWJnc3RuZXRzaW1fbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxMCw4ICsyMDksOCBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQotRElTVF9TT1VSQ0VTID0gJChsaWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUykKK1NPVVJDRVMgPSAkKGxpYmdzdG5ldHNpbV9sYV9TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChsaWJnc3RuZXRzaW1fbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzYxLDE2ICs3NzUsMTMgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bGl2ZWFkZGVyLmxhCi1saWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUyA9IGxpdmVhZGRlci5jCi1saWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCi0KLWxpYmdzdGxpdmVhZGRlcl9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLW5vaW5zdF9IRUFERVJTID0gbGl2ZWFkZGVyLmgKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdG5ldHNpbS5sYQorbGliZ3N0bmV0c2ltX2xhX1NPVVJDRVMgPSBnc3RuZXRzaW0uYworbGliZ3N0bmV0c2ltX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCitsaWJnc3RuZXRzaW1fbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykKK2xpYmdzdG5ldHNpbV9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3RuZXRzaW1fbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK25vaW5zdF9IRUFERVJTID0gZ3N0bmV0c2ltLmgKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTc4NCw5ICs3OTUsOSBAQAogCSAgICAgIGV4aXQgMTs7IFwKIAkgIGVzYWM7IFwKIAlkb25lOyBcCi0JZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSc7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbmV0c2ltL01ha2VmaWxlJzsgXAogCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKLQkgICQoQVVUT01BS0UpIC0tZ251IGdzdC9saXZlYWRkZXIvTWFrZWZpbGUKKwkgICQoQVVUT01BS0UpIC0tZ251IGdzdC9uZXRzaW0vTWFrZWZpbGUKIE1ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAY2FzZSAnJD8nIGluIFwKIAkgICpjb25maWcuc3RhdHVzKikgXApAQCAtODQwLDggKzg1MSw4IEBACiAJICBybSAtZiAkJHtsb2NzfTsgXAogCX0KIAotbGliZ3N0bGl2ZWFkZGVyLmxhOiAkKGxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NDTEQpJChsaWJnc3RsaXZlYWRkZXJfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQpICQoTElCUykKK2xpYmdzdG5ldHNpbS5sYTogJChsaWJnc3RuZXRzaW1fbGFfT0JKRUNUUykgJChsaWJnc3RuZXRzaW1fbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdG5ldHNpbV9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0bmV0c2ltX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RuZXRzaW1fbGFfT0JKRUNUUykgJChsaWJnc3RuZXRzaW1fbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04NDksNyArODYwLDcgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bmV0c2ltX2xhLWdzdG5ldHNpbS5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtODc1LDEyICs4ODYsMTIgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbzogbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlRwbyAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpdmVhZGRlci5jJyBvYmplY3Q9J2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdG5ldHNpbV9sYS1nc3RuZXRzaW0ubG86IGdzdG5ldHNpbS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bmV0c2ltX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdG5ldHNpbV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0bmV0c2ltX2xhLWdzdG5ldHNpbS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0bmV0c2ltX2xhLWdzdG5ldHNpbS5UcG8gLWMgLW8gbGliZ3N0bmV0c2ltX2xhLWdzdG5ldHNpbS5sbyBgdGVzdCAtZiAnZ3N0bmV0c2ltLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG5ldHNpbS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLlRwbyAkKERFUERJUikvbGliZ3N0bmV0c2ltX2xhLWdzdG5ldHNpbS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RuZXRzaW0uYycgb2JqZWN0PSdsaWJnc3RuZXRzaW1fbGEtZ3N0bmV0c2ltLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RuZXRzaW1fbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bmV0c2ltX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdG5ldHNpbV9sYS1nc3RuZXRzaW0ubG8gYHRlc3QgLWYgJ2dzdG5ldHNpbS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RuZXRzaW0uYwogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCmRpZmYgLS1naXQgYS9nc3QvbmV0c2ltL2dzdG5ldHNpbS5jIGIvZ3N0L25ldHNpbS9nc3RuZXRzaW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZTE1YWMzCi0tLSAvZGV2L251bGwKKysrIGIvZ3N0L25ldHNpbS9nc3RuZXRzaW0uYwpAQCAtMCwwICsxLDQ3MiBAQAorLyoKKyAqIEdTdHJlYW1lcgorICoKKyAqICBDb3B5cmlnaHQgMjAwNiBDb2xsYWJvcmEgTHRkLAorICogIENvcHlyaWdodCAyMDA2IE5va2lhIENvcnBvcmF0aW9uCisgKiAgIEBhdXRob3I6IFBoaWxpcHBlIEthbGFmIDxwaGlsaXBwZS5rYWxhZkBjb2xsYWJvcmEuY28udWs+LgorICogIENvcHlyaWdodCAyMDEyLTIwMTUgUGV4aXAKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisjaW5jbHVkZSAiZ3N0bmV0c2ltLmgiCisKK0dTVF9ERUJVR19DQVRFR09SWSAobmV0c2ltX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIChuZXRzaW1fZGVidWcpCisKKworZW51bQoreworICBBUkdfMCwKKyAgQVJHX01JTl9ERUxBWSwKKyAgQVJHX01BWF9ERUxBWSwKKyAgQVJHX0RFTEFZX1BST0JBQklMSVRZLAorICBBUkdfRFJPUF9QUk9CQUJJTElUWSwKKyAgQVJHX0RVUExJQ0FURV9QUk9CQUJJTElUWSwKKyAgQVJHX0RST1BfUEFDS0VUUworfTsKKworc3RydWN0IF9Hc3ROZXRTaW1Qcml2YXRlCit7CisgIEdzdFBhZCAqc2lua3BhZCwgKnNyY3BhZDsKKworICBHTXV0ZXggbG9vcF9tdXRleDsKKyAgR0NvbmQgc3RhcnRfY29uZDsKKyAgR01haW5Mb29wICptYWluX2xvb3A7CisgIGdib29sZWFuIHJ1bm5pbmc7CisKKyAgR1JhbmQgKnJhbmRfc2VlZDsKKyAgZ2ludCBtaW5fZGVsYXk7CisgIGdpbnQgbWF4X2RlbGF5OworICBnZmxvYXQgZGVsYXlfcHJvYmFiaWxpdHk7CisgIGdmbG9hdCBkcm9wX3Byb2JhYmlsaXR5OworICBnZmxvYXQgZHVwbGljYXRlX3Byb2JhYmlsaXR5OworICBndWludCBkcm9wX3BhY2tldHM7Cit9OworCisvKiB0aGVzZSBudW1iZXJzIGFyZSBub3RoaW5nIGJ1dCB3aWxkIGd1ZXNzZXMgYW5kIGRvbnQgcmVmbGVjdCBhbnkgcmVhbGl0eSAqLworI2RlZmluZSBERUZBVUxUX01JTl9ERUxBWSAyMDAKKyNkZWZpbmUgREVGQVVMVF9NQVhfREVMQVkgNDAwCisjZGVmaW5lIERFRkFVTFRfREVMQVlfUFJPQkFCSUxJVFkgMC4wCisjZGVmaW5lIERFRkFVTFRfRFJPUF9QUk9CQUJJTElUWSAwLjAKKyNkZWZpbmUgREVGQVVMVF9EVVBMSUNBVEVfUFJPQkFCSUxJVFkgMC4wCisjZGVmaW5lIERFRkFVTFRfRFJPUF9QQUNLRVRTIDAKKworI2RlZmluZSBHU1RfTkVUX1NJTV9HRVRfUFJJVkFURShvKSBcCisgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX1BSSVZBVEUgKChvKSwgR1NUX1RZUEVfTkVUX1NJTSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3ROZXRTaW1Qcml2YXRlKSkKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9uZXRfc2ltX3NpbmtfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfbmV0X3NpbV9zcmNfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAorICAgIEdTVF9QQURfU1JDLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOworCitHX0RFRklORV9UWVBFIChHc3ROZXRTaW0sIGdzdF9uZXRfc2ltLCBHU1RfVFlQRV9FTEVNRU5UKTsKKworc3RhdGljIHZvaWQKK2dzdF9uZXRfc2ltX2xvb3AgKEdzdE5ldFNpbSAqIG5ldHNpbSkKK3sKKyAgR01haW5Mb29wICpsb29wOworCisgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIlRBU0s6IGJlZ2luIik7CisKKyAgZ19tdXRleF9sb2NrICgmbmV0c2ltLT5wcml2LT5sb29wX211dGV4KTsKKyAgbG9vcCA9IGdfbWFpbl9sb29wX3JlZiAobmV0c2ltLT5wcml2LT5tYWluX2xvb3ApOworICBuZXRzaW0tPnByaXYtPnJ1bm5pbmcgPSBUUlVFOworICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJUQVNLOiBzaWduYWwgc3RhcnQiKTsKKyAgZ19jb25kX3NpZ25hbCAoJm5ldHNpbS0+cHJpdi0+c3RhcnRfY29uZCk7CisgIGdfbXV0ZXhfdW5sb2NrICgmbmV0c2ltLT5wcml2LT5sb29wX211dGV4KTsKKworICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJUQVNLOiBydW4iKTsKKyAgZ19tYWluX2xvb3BfcnVuIChsb29wKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKGxvb3ApOworCisgIGdfbXV0ZXhfbG9jayAoJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIlRBU0s6IHBhdXNlIik7CisgIGdzdF9wYWRfcGF1c2VfdGFzayAobmV0c2ltLT5wcml2LT5zcmNwYWQpOworICBuZXRzaW0tPnByaXYtPnJ1bm5pbmcgPSBGQUxTRTsKKyAgR1NUX1RSQUNFX09CSkVDVCAobmV0c2ltLCAiVEFTSzogc2lnbmFsIGVuZCIpOworICBnX2NvbmRfc2lnbmFsICgmbmV0c2ltLT5wcml2LT5zdGFydF9jb25kKTsKKyAgZ19tdXRleF91bmxvY2sgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJUQVNLOiBlbmQiKTsKK30KKworc3RhdGljIGdib29sZWFuCitfbWFpbl9sb29wX3F1aXRfYW5kX3JlbW92ZV9zb3VyY2UgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR01haW5Mb29wICptYWluX2xvb3AgPSB1c2VyX2RhdGE7CisgIEdTVF9ERUJVRyAoIk1BSU5MT09QOiBRdWl0ICVwIiwgbWFpbl9sb29wKTsKKyAgZ19tYWluX2xvb3BfcXVpdCAobWFpbl9sb29wKTsKKyAgZ19hc3NlcnQgKCFnX21haW5fbG9vcF9pc19ydW5uaW5nIChtYWluX2xvb3ApKTsKKyAgcmV0dXJuIEZBTFNFOyAgICAgICAgICAgICAgICAgLyogUmVtb3ZlIHNvdXJjZSAqLworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9uZXRfc2ltX3NyY19hY3RpdmF0ZW1vZGUgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdFBhZE1vZGUgbW9kZSwgZ2Jvb2xlYW4gYWN0aXZlKQoreworICBHc3ROZXRTaW0gKm5ldHNpbSA9IEdTVF9ORVRfU0lNIChwYXJlbnQpOworICBnYm9vbGVhbiByZXN1bHQgPSBGQUxTRTsKKworICAodm9pZCkgcGFkOworICAodm9pZCkgbW9kZTsKKworICBnX211dGV4X2xvY2sgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworICBpZiAoYWN0aXZlKSB7CisgICAgaWYgKG5ldHNpbS0+cHJpdi0+bWFpbl9sb29wID09IE5VTEwpIHsKKyAgICAgIEdNYWluQ29udGV4dCAqbWFpbl9jb250ZXh0ID0gZ19tYWluX2NvbnRleHRfbmV3ICgpOworICAgICAgbmV0c2ltLT5wcml2LT5tYWluX2xvb3AgPSBnX21haW5fbG9vcF9uZXcgKG1haW5fY29udGV4dCwgRkFMU0UpOworICAgICAgZ19tYWluX2NvbnRleHRfdW5yZWYgKG1haW5fY29udGV4dCk7CisKKyAgICAgIEdTVF9UUkFDRV9PQkpFQ1QgKG5ldHNpbSwgIkFDVDogU3RhcnRpbmcgdGFzayBvbiBzcmNwYWQiKTsKKyAgICAgIHJlc3VsdCA9IGdzdF9wYWRfc3RhcnRfdGFzayAobmV0c2ltLT5wcml2LT5zcmNwYWQsCisgICAgICAgICAgKEdzdFRhc2tGdW5jdGlvbikgZ3N0X25ldF9zaW1fbG9vcCwgbmV0c2ltLCBOVUxMKTsKKworICAgICAgR1NUX1RSQUNFX09CSkVDVCAobmV0c2ltLCAiQUNUOiBXYWl0IGZvciB0YXNrIHRvIHN0YXJ0Iik7CisgICAgICBnX2Fzc2VydCAoIW5ldHNpbS0+cHJpdi0+cnVubmluZyk7CisgICAgICB3aGlsZSAoIW5ldHNpbS0+cHJpdi0+cnVubmluZykKKyAgICAgICAgZ19jb25kX3dhaXQgKCZuZXRzaW0tPnByaXYtPnN0YXJ0X2NvbmQsICZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworICAgICAgR1NUX1RSQUNFX09CSkVDVCAobmV0c2ltLCAiQUNUOiBUYXNrIG9uIHNyY3BhZCBzdGFydGVkIik7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCAhPSBOVUxMKSB7CisgICAgICBHU291cmNlICpzb3VyY2U7CisgICAgICBndWludCBpZDsKKworICAgICAgLyogQWRkcyBhbiBJZGxlIFNvdXJjZSB3aGljaCBxdWl0cyB0aGUgbWFpbiBsb29wIGZyb20gd2l0aGluLgorICAgICAgICogVGhpcyByZW1vdmVzIHRoZSBwb3NzaWJpbGl0eSBmb3IgcnVuL3F1aXQgcmFjZSBjb25kaXRpb25zLiAqLworICAgICAgR1NUX1RSQUNFX09CSkVDVCAobmV0c2ltLCAiREVBQ1Q6IFN0b3BwaW5nIG1haW4gbG9vcCBvbiBkZWFjdGl2YXRlIik7CisgICAgICBzb3VyY2UgPSBnX2lkbGVfc291cmNlX25ldyAoKTsKKyAgICAgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc291cmNlLCBfbWFpbl9sb29wX3F1aXRfYW5kX3JlbW92ZV9zb3VyY2UsCisgICAgICAgICAgZ19tYWluX2xvb3BfcmVmIChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCksCisgICAgICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnX21haW5fbG9vcF91bnJlZik7CisgICAgICBpZCA9IGdfc291cmNlX2F0dGFjaCAoc291cmNlLAorICAgICAgICAgIGdfbWFpbl9sb29wX2dldF9jb250ZXh0IChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCkpOworICAgICAgZ19zb3VyY2VfdW5yZWYgKHNvdXJjZSk7CisgICAgICBnX2Fzc2VydF9jbXB1aW50IChpZCwgPiwgMCk7CisgICAgICBnX21haW5fbG9vcF91bnJlZiAobmV0c2ltLT5wcml2LT5tYWluX2xvb3ApOworICAgICAgbmV0c2ltLT5wcml2LT5tYWluX2xvb3AgPSBOVUxMOworCisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJERUFDVDogV2FpdCBmb3IgbWFpbmxvb3AgYW5kIHRhc2sgdG8gcGF1c2UiKTsKKyAgICAgIGdfYXNzZXJ0IChuZXRzaW0tPnByaXYtPnJ1bm5pbmcpOworICAgICAgd2hpbGUgKG5ldHNpbS0+cHJpdi0+cnVubmluZykKKyAgICAgICAgZ19jb25kX3dhaXQgKCZuZXRzaW0tPnByaXYtPnN0YXJ0X2NvbmQsICZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworCisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJERUFDVDogU3RvcHBpbmcgdGFzayBvbiBzcmNwYWQiKTsKKyAgICAgIHJlc3VsdCA9IGdzdF9wYWRfc3RvcF90YXNrIChuZXRzaW0tPnByaXYtPnNyY3BhZCk7CisgICAgICBHU1RfVFJBQ0VfT0JKRUNUIChuZXRzaW0sICJERUFDVDogTWFpbmxvb3AgYW5kIEdzdFRhc2sgc3RvcHBlZCIpOworICAgIH0KKyAgfQorICBnX211dGV4X3VubG9jayAoJm5ldHNpbS0+cHJpdi0+bG9vcF9tdXRleCk7CisKKyAgcmV0dXJuIHJlc3VsdDsKK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0UGFkICpwYWQ7CisgIEdzdEJ1ZmZlciAqYnVmOworfSBQdXNoQnVmZmVyQ3R4OworCitHX0lOTElORV9GVU5DIFB1c2hCdWZmZXJDdHggKgorcHVzaF9idWZmZXJfY3R4X25ldyAoR3N0UGFkICogcGFkLCBHc3RCdWZmZXIgKiBidWYpCit7CisgIFB1c2hCdWZmZXJDdHggKmN0eCA9IGdfc2xpY2VfbmV3IChQdXNoQnVmZmVyQ3R4KTsKKyAgY3R4LT5wYWQgPSBnc3Rfb2JqZWN0X3JlZiAocGFkKTsKKyAgY3R4LT5idWYgPSBnc3RfYnVmZmVyX3JlZiAoYnVmKTsKKyAgcmV0dXJuIGN0eDsKK30KKworR19JTkxJTkVfRlVOQyB2b2lkCitwdXNoX2J1ZmZlcl9jdHhfZnJlZSAoUHVzaEJ1ZmZlckN0eCAqIGN0eCkKK3sKKyAgaWYgKEdfTElLRUxZIChjdHggIT0gTlVMTCkpIHsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChjdHgtPmJ1Zik7CisgICAgZ3N0X29iamVjdF91bnJlZiAoY3R4LT5wYWQpOworICAgIGdfc2xpY2VfZnJlZSAoUHVzaEJ1ZmZlckN0eCwgY3R4KTsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3B1c2hfYnVmZmVyX2N0eF9wdXNoIChQdXNoQnVmZmVyQ3R4ICogY3R4KQoreworICBHU1RfREVCVUdfT0JKRUNUIChjdHgtPnBhZCwgIlB1c2hpbmcgYnVmZmVyIG5vdyIpOworICBnc3RfcGFkX3B1c2ggKGN0eC0+cGFkLCBnc3RfYnVmZmVyX3JlZiAoY3R4LT5idWYpKTsKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X25ldF9zaW1fZGVsYXlfYnVmZmVyIChHc3ROZXRTaW0gKiBuZXRzaW0sIEdzdEJ1ZmZlciAqIGJ1ZikKK3sKKyAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKKworICBnX211dGV4X2xvY2sgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworICBpZiAobmV0c2ltLT5wcml2LT5tYWluX2xvb3AgIT0gTlVMTCAmJiBuZXRzaW0tPnByaXYtPmRlbGF5X3Byb2JhYmlsaXR5ID4gMCAmJgorICAgICAgZ19yYW5kX2RvdWJsZSAobmV0c2ltLT5wcml2LT5yYW5kX3NlZWQpIDwgbmV0c2ltLT5wcml2LT5kZWxheV9wcm9iYWJpbGl0eSkKKyAgeworICAgIFB1c2hCdWZmZXJDdHggKmN0eCA9IHB1c2hfYnVmZmVyX2N0eF9uZXcgKG5ldHNpbS0+cHJpdi0+c3JjcGFkLCBidWYpOworICAgIGdpbnQgZGVsYXkgPSBnX3JhbmRfaW50X3JhbmdlIChuZXRzaW0tPnByaXYtPnJhbmRfc2VlZCwKKyAgICAgICAgbmV0c2ltLT5wcml2LT5taW5fZGVsYXksIG5ldHNpbS0+cHJpdi0+bWF4X2RlbGF5KTsKKyAgICBHU291cmNlICpzb3VyY2UgPSBnX3RpbWVvdXRfc291cmNlX25ldyAoZGVsYXkpOworCisgICAgR1NUX0RFQlVHX09CSkVDVCAobmV0c2ltLCAiRGVsYXlpbmcgcGFja2V0IGJ5ICVkIiwgZGVsYXkpOworICAgIGdfc291cmNlX3NldF9jYWxsYmFjayAoc291cmNlLCAoR1NvdXJjZUZ1bmMpIHB1c2hfYnVmZmVyX2N0eF9wdXNoLAorICAgICAgICBjdHgsIChHRGVzdHJveU5vdGlmeSkgcHVzaF9idWZmZXJfY3R4X2ZyZWUpOworICAgIGdfc291cmNlX2F0dGFjaCAoc291cmNlLCBnX21haW5fbG9vcF9nZXRfY29udGV4dCAobmV0c2ltLT5wcml2LT5tYWluX2xvb3ApKTsKKyAgICBnX3NvdXJjZV91bnJlZiAoc291cmNlKTsKKyAgfSBlbHNlIHsKKyAgICByZXQgPSBnc3RfcGFkX3B1c2ggKG5ldHNpbS0+cHJpdi0+c3JjcGFkLCBnc3RfYnVmZmVyX3JlZiAoYnVmKSk7CisgIH0KKyAgZ19tdXRleF91bmxvY2sgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfbmV0X3NpbV9jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKK3sKKyAgR3N0TmV0U2ltICpuZXRzaW0gPSBHU1RfTkVUX1NJTSAocGFyZW50KTsKKyAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKKworICAodm9pZCkgcGFkOworCisgIGlmIChuZXRzaW0tPnByaXYtPmRyb3BfcGFja2V0cyA+IDApIHsKKyAgICBuZXRzaW0tPnByaXYtPmRyb3BfcGFja2V0cy0tOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKG5ldHNpbSwgIkRyb3BwaW5nIHBhY2tldCAoJWQgbGVmdCkiLAorICAgICAgICBuZXRzaW0tPnByaXYtPmRyb3BfcGFja2V0cyk7CisgIH0gZWxzZSBpZiAobmV0c2ltLT5wcml2LT5kcm9wX3Byb2JhYmlsaXR5ID4gMAorICAgICAgJiYgZ19yYW5kX2RvdWJsZSAobmV0c2ltLT5wcml2LT5yYW5kX3NlZWQpIDwKKyAgICAgIChnZG91YmxlKSBuZXRzaW0tPnByaXYtPmRyb3BfcHJvYmFiaWxpdHkpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChuZXRzaW0sICJEcm9wcGluZyBwYWNrZXQiKTsKKyAgfSBlbHNlIGlmIChuZXRzaW0tPnByaXYtPmR1cGxpY2F0ZV9wcm9iYWJpbGl0eSA+IDAgJiYKKyAgICAgIGdfcmFuZF9kb3VibGUgKG5ldHNpbS0+cHJpdi0+cmFuZF9zZWVkKSA8CisgICAgICAoZ2RvdWJsZSkgbmV0c2ltLT5wcml2LT5kdXBsaWNhdGVfcHJvYmFiaWxpdHkpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChuZXRzaW0sICJEdXBsaWNhdGluZyBwYWNrZXQiKTsKKyAgICBnc3RfbmV0X3NpbV9kZWxheV9idWZmZXIgKG5ldHNpbSwgYnVmKTsKKyAgICByZXQgPSBnc3RfbmV0X3NpbV9kZWxheV9idWZmZXIgKG5ldHNpbSwgYnVmKTsKKyAgfSBlbHNlIHsKKyAgICByZXQgPSBnc3RfbmV0X3NpbV9kZWxheV9idWZmZXIgKG5ldHNpbSwgYnVmKTsKKyAgfQorCisgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisKKyAgcmV0dXJuIHJldDsKK30KKworCitzdGF0aWMgdm9pZAorZ3N0X25ldF9zaW1fc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LAorICAgIGd1aW50IHByb3BfaWQsIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdE5ldFNpbSAqbmV0c2ltID0gR1NUX05FVF9TSU0gKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19NSU5fREVMQVk6CisgICAgICBuZXRzaW0tPnByaXYtPm1pbl9kZWxheSA9IGdfdmFsdWVfZ2V0X2ludCAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfTUFYX0RFTEFZOgorICAgICAgbmV0c2ltLT5wcml2LT5tYXhfZGVsYXkgPSBnX3ZhbHVlX2dldF9pbnQgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJHX0RFTEFZX1BST0JBQklMSVRZOgorICAgICAgbmV0c2ltLT5wcml2LT5kZWxheV9wcm9iYWJpbGl0eSA9IGdfdmFsdWVfZ2V0X2Zsb2F0ICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEFSR19EUk9QX1BST0JBQklMSVRZOgorICAgICAgbmV0c2ltLT5wcml2LT5kcm9wX3Byb2JhYmlsaXR5ID0gZ192YWx1ZV9nZXRfZmxvYXQgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJHX0RVUExJQ0FURV9QUk9CQUJJTElUWToKKyAgICAgIG5ldHNpbS0+cHJpdi0+ZHVwbGljYXRlX3Byb2JhYmlsaXR5ID0gZ192YWx1ZV9nZXRfZmxvYXQgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJHX0RST1BfUEFDS0VUUzoKKyAgICAgIG5ldHNpbS0+cHJpdi0+ZHJvcF9wYWNrZXRzID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9uZXRfc2ltX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwKKyAgICBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3ROZXRTaW0gKm5ldHNpbSA9IEdTVF9ORVRfU0lNIChvYmplY3QpOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfTUlOX0RFTEFZOgorICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgbmV0c2ltLT5wcml2LT5taW5fZGVsYXkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfTUFYX0RFTEFZOgorICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgbmV0c2ltLT5wcml2LT5tYXhfZGVsYXkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfREVMQVlfUFJPQkFCSUxJVFk6CisgICAgICBnX3ZhbHVlX3NldF9mbG9hdCAodmFsdWUsIG5ldHNpbS0+cHJpdi0+ZGVsYXlfcHJvYmFiaWxpdHkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfRFJPUF9QUk9CQUJJTElUWToKKyAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0ICh2YWx1ZSwgbmV0c2ltLT5wcml2LT5kcm9wX3Byb2JhYmlsaXR5KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgQVJHX0RVUExJQ0FURV9QUk9CQUJJTElUWToKKyAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0ICh2YWx1ZSwgbmV0c2ltLT5wcml2LT5kdXBsaWNhdGVfcHJvYmFiaWxpdHkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBBUkdfRFJPUF9QQUNLRVRTOgorICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIG5ldHNpbS0+cHJpdi0+ZHJvcF9wYWNrZXRzKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKKworc3RhdGljIHZvaWQKK2dzdF9uZXRfc2ltX2luaXQgKEdzdE5ldFNpbSAqIG5ldHNpbSkKK3sKKyAgbmV0c2ltLT5wcml2ID0gR1NUX05FVF9TSU1fR0VUX1BSSVZBVEUgKG5ldHNpbSk7CisKKyAgbmV0c2ltLT5wcml2LT5zcmNwYWQgPQorICAgICAgZ3N0X3BhZF9uZXdfZnJvbV9zdGF0aWNfdGVtcGxhdGUgKCZnc3RfbmV0X3NpbV9zcmNfdGVtcGxhdGUsICJzcmMiKTsKKyAgbmV0c2ltLT5wcml2LT5zaW5rcGFkID0KKyAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmZ3N0X25ldF9zaW1fc2lua190ZW1wbGF0ZSwgInNpbmsiKTsKKworICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAobmV0c2ltKSwgbmV0c2ltLT5wcml2LT5zcmNwYWQpOworICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAobmV0c2ltKSwgbmV0c2ltLT5wcml2LT5zaW5rcGFkKTsKKworICBnX211dGV4X2luaXQgKCZuZXRzaW0tPnByaXYtPmxvb3BfbXV0ZXgpOworICBnX2NvbmRfaW5pdCAoJm5ldHNpbS0+cHJpdi0+c3RhcnRfY29uZCk7CisgIG5ldHNpbS0+cHJpdi0+cmFuZF9zZWVkID0gZ19yYW5kX25ldyAoKTsKKyAgbmV0c2ltLT5wcml2LT5tYWluX2xvb3AgPSBOVUxMOworCisgIEdTVF9PQkpFQ1RfRkxBR19TRVQgKG5ldHNpbS0+cHJpdi0+c2lua3BhZCwKKyAgICAgIEdTVF9QQURfRkxBR19QUk9YWV9DQVBTIHwgR1NUX1BBRF9GTEFHX1BST1hZX0FMTE9DQVRJT04pOworCisgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChuZXRzaW0tPnByaXYtPnNpbmtwYWQsCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X25ldF9zaW1fY2hhaW4pKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZhdGVtb2RlX2Z1bmN0aW9uIChuZXRzaW0tPnByaXYtPnNyY3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbmV0X3NpbV9zcmNfYWN0aXZhdGVtb2RlKSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbmV0X3NpbV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0TmV0U2ltICpuZXRzaW0gPSBHU1RfTkVUX1NJTSAob2JqZWN0KTsKKworICBnX3JhbmRfZnJlZSAobmV0c2ltLT5wcml2LT5yYW5kX3NlZWQpOworICBnX211dGV4X2NsZWFyICgmbmV0c2ltLT5wcml2LT5sb29wX211dGV4KTsKKyAgZ19jb25kX2NsZWFyICgmbmV0c2ltLT5wcml2LT5zdGFydF9jb25kKTsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X25ldF9zaW1fcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbmV0X3NpbV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KQoreworICBHc3ROZXRTaW0gKm5ldHNpbSA9IEdTVF9ORVRfU0lNIChvYmplY3QpOworCisgIGdfYXNzZXJ0IChuZXRzaW0tPnByaXYtPm1haW5fbG9vcCA9PSBOVUxMKTsKKworICBHX09CSkVDVF9DTEFTUyAoZ3N0X25ldF9zaW1fcGFyZW50X2NsYXNzKS0+ZGlzcG9zZSAob2JqZWN0KTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9uZXRfc2ltX2NsYXNzX2luaXQgKEdzdE5ldFNpbUNsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisgIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisKKyAgZ190eXBlX2NsYXNzX2FkZF9wcml2YXRlIChrbGFzcywgc2l6ZW9mIChHc3ROZXRTaW1Qcml2YXRlKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9uZXRfc2ltX3NyY190ZW1wbGF0ZSkpOworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X25ldF9zaW1fc2lua190ZW1wbGF0ZSkpOworCisgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgICJOZXR3b3JrIFNpbXVsYXRvciIsCisgICAgICAiRmlsdGVyL05ldHdvcmsiLAorICAgICAgIkFuIGVsZW1lbnQgdGhhdCBzaW11bGF0ZXMgbmV0d29yayBqaXR0ZXIsICIKKyAgICAgICJwYWNrZXQgbG9zcyBhbmQgcGFja2V0IGR1cGxpY2F0aW9uIiwKKyAgICAgICJQaGlsaXBwZSBLYWxhZiA8cGhpbGlwcGUua2FsYWZAY29sbGFib3JhLmNvLnVrPiIpOworCisgIGdvYmplY3RfY2xhc3MtPmRpc3Bvc2UgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X25ldF9zaW1fZGlzcG9zZSk7CisgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9uZXRfc2ltX2ZpbmFsaXplKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfbmV0X3NpbV9zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9uZXRfc2ltX2dldF9wcm9wZXJ0eTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBBUkdfTUlOX0RFTEFZLAorICAgICAgZ19wYXJhbV9zcGVjX2ludCAoIm1pbi1kZWxheSIsICJNaW5pbXVtIGRlbGF5IChtcykiLAorICAgICAgICAgICJUaGUgbWluaW11bSBkZWxheSBpbiBtcyB0byBhcHBseSB0byBidWZmZXJzIiwKKyAgICAgICAgICBHX01JTklOVCwgR19NQVhJTlQsIERFRkFVTFRfTUlOX0RFTEFZLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgQVJHX01BWF9ERUxBWSwKKyAgICAgIGdfcGFyYW1fc3BlY19pbnQgKCJtYXgtZGVsYXkiLCAiTWF4aW11bSBkZWxheSAobXMpIiwKKyAgICAgICAgICAiVGhlIG1heGltdW0gZGVsYXkgaW4gbXMgdG8gYXBwbHkgdG8gYnVmZmVycyIsCisgICAgICAgICAgR19NSU5JTlQsIEdfTUFYSU5ULCBERUZBVUxUX01BWF9ERUxBWSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIEFSR19ERUxBWV9QUk9CQUJJTElUWSwKKyAgICAgIGdfcGFyYW1fc3BlY19mbG9hdCAoImRlbGF5LXByb2JhYmlsaXR5IiwgIkRlbGF5IFByb2JhYmlsaXR5IiwKKyAgICAgICAgICAiVGhlIFByb2JhYmlsaXR5IGEgYnVmZmVyIGlzIGRlbGF5ZWQiLAorICAgICAgICAgIDAuMCwgMS4wLCBERUZBVUxUX0RFTEFZX1BST0JBQklMSVRZLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9DT05TVFJVQ1QgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgQVJHX0RST1BfUFJPQkFCSUxJVFksCisgICAgICBnX3BhcmFtX3NwZWNfZmxvYXQgKCJkcm9wLXByb2JhYmlsaXR5IiwgIkRyb3AgUHJvYmFiaWxpdHkiLAorICAgICAgICAgICJUaGUgUHJvYmFiaWxpdHkgYSBidWZmZXIgaXMgZHJvcHBlZCIsCisgICAgICAgICAgMC4wLCAxLjAsIERFRkFVTFRfRFJPUF9QUk9CQUJJTElUWSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIEFSR19EVVBMSUNBVEVfUFJPQkFCSUxJVFksCisgICAgICBnX3BhcmFtX3NwZWNfZmxvYXQgKCJkdXBsaWNhdGUtcHJvYmFiaWxpdHkiLCAiRHVwbGljYXRlIFByb2JhYmlsaXR5IiwKKyAgICAgICAgICAiVGhlIFByb2JhYmlsaXR5IGEgYnVmZmVyIGlzIGR1cGxpY2F0ZWQiLAorICAgICAgICAgIDAuMCwgMS4wLCBERUZBVUxUX0RVUExJQ0FURV9QUk9CQUJJTElUWSwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIEFSR19EUk9QX1BBQ0tFVFMsCisgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImRyb3AtcGFja2V0cyIsICJEcm9wIFBhY2tldHMiLAorICAgICAgICAgICJEcm9wIHRoZSBuZXh0IG4gcGFja2V0cyIsCisgICAgICAgICAgMCwgR19NQVhVSU5ULCBERUZBVUxUX0RST1BfUEFDS0VUUywKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChuZXRzaW1fZGVidWcsICJuZXRzaW0iLCAwLCAiTmV0d29yayBzaW11bGF0b3IiKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbmV0X3NpbV9wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQoreworICByZXR1cm4gZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKHBsdWdpbiwgIm5ldHNpbSIsCisgICAgICBHU1RfUkFOS19NQVJHSU5BTCwgR1NUX1RZUEVfTkVUX1NJTSk7Cit9CisKK0dTVF9QTFVHSU5fREVGSU5FIChHU1RfVkVSU0lPTl9NQUpPUiwKKyAgICBHU1RfVkVSU0lPTl9NSU5PUiwKKyAgICBuZXRzaW0sCisgICAgIk5ldHdvcmsgU2ltdWxhdG9yIiwKKyAgICBnc3RfbmV0X3NpbV9wbHVnaW5faW5pdCwgUEFDS0FHRV9WRVJTSU9OLCAiTEdQTCIsIEdTVF9QQUNLQUdFX05BTUUsCisgICAgR1NUX1BBQ0tBR0VfT1JJR0lOKQpkaWZmIC0tZ2l0IGEvZ3N0L25ldHNpbS9nc3RuZXRzaW0uaCBiL2dzdC9uZXRzaW0vZ3N0bmV0c2ltLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRiNDM3ZQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC9uZXRzaW0vZ3N0bmV0c2ltLmgKQEAgLTAsMCArMSw3MiBAQAorLyoKKyAqIEZhcnNpZ2h0IFZvaWNlK1ZpZGVvIGxpYnJhcnkKKyAqCisgKiAgQ29weXJpZ2h0IDIwMDYgQ29sbGFib3JhIEx0ZCwKKyAqICBDb3B5cmlnaHQgMjAwNiBOb2tpYSBDb3Jwb3JhdGlvbgorICogICBAYXV0aG9yOiBQaGlsaXBwZSBLYWxhZiA8cGhpbGlwcGUua2FsYWZAY29sbGFib3JhLmNvLnVrPi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqCisgKi8KKworI2lmbmRlZiBfX0dTVF9ORVRfU0lNX0hfXworI2RlZmluZSBfX0dTVF9ORVRfU0lNX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorCitHX0JFR0lOX0RFQ0xTCisKKy8qICNkZWZpbmUncyBkb24ndCBsaWtlIHdoaXRlc3BhY2V5IGJpdHMgKi8KKyNkZWZpbmUgR1NUX1RZUEVfTkVUX1NJTSBcCisgIChnc3RfbmV0X3NpbV9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfTkVUX1NJTShvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLCBcCisgIEdTVF9UWVBFX05FVF9TSU0sR3N0TmV0U2ltKSkKKyNkZWZpbmUgR1NUX05FVF9TSU1fQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksIFwKKyAgR1NUX1RZUEVfTkVUX1NJTSxHc3ROZXRTaW1DbGFzcykpCisjZGVmaW5lIEdTVF9JU19ORVRfU0lNKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfTkVUX1NJTSkpCisjZGVmaW5lIEdTVF9JU19ORVRfU0lNX0NMQVNTKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9ORVRfU0lNKSkKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdE5ldFNpbSBHc3ROZXRTaW07Cit0eXBlZGVmIHN0cnVjdCBfR3N0TmV0U2ltQ2xhc3MgR3N0TmV0U2ltQ2xhc3M7Cit0eXBlZGVmIHN0cnVjdCBfR3N0TmV0U2ltUHJpdmF0ZSBHc3ROZXRTaW1Qcml2YXRlOworCitzdHJ1Y3QgX0dzdE5ldFNpbQoreworICBHc3RFbGVtZW50IHBhcmVudDsKKworICBHc3ROZXRTaW1Qcml2YXRlICpwcml2OworCisgIC8qPCBwcml2YXRlID4gKi8KKyAgZ3BvaW50ZXIgX2dzdF9yZXNlcnZlZFtHU1RfUEFERElOR107Cit9OworCitzdHJ1Y3QgX0dzdE5ldFNpbUNsYXNzCit7CisgIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgLyo8IHByaXZhdGUgPiAqLworICBncG9pbnRlciBfZ3N0X3Jlc2VydmVkW0dTVF9QQURESU5HXTsKK307CisKK0dUeXBlIGdzdF9uZXRfc2ltX2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX05FVF9TSU1fSF9fICovCmRpZmYgLS1naXQgYS9nc3QvbnV2ZGVtdXgvTWFrZWZpbGUuaW4gYi9nc3QvbnV2ZGVtdXgvTWFrZWZpbGUuaW4KaW5kZXggZDYyNWM2Yy4uZmM1OTcyMiAxMDA2NDQKLS0tIGEvZ3N0L251dmRlbXV4L01ha2VmaWxlLmluCisrKyBiL2dzdC9udXZkZW11eC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzMsNiArMjcyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTAsNiArMzExLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTgsNyArMzIxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM3LDggKzMzOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTUsMTYgKzM1OCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTAsNiArMzk0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE1LDYgKzQyMSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNiw2ICs1MjQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTI5LDggKzUzOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Niw2ICs1NTMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjAzLDE2ICs2MTIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjQsNiArNjc1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NCw2ICs2ODYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODMsNiArNjk2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMCw3ICs3MzUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9udXZkZW11eC9nc3RudXZkZW11eC5jIGIvZ3N0L251dmRlbXV4L2dzdG51dmRlbXV4LmMKaW5kZXggY2U0ZTk4ZC4uNzY1MDI1ZiAxMDA2NDQKLS0tIGEvZ3N0L251dmRlbXV4L2dzdG51dmRlbXV4LmMKKysrIGIvZ3N0L251dmRlbXV4L2dzdG51dmRlbXV4LmMKQEAgLTMxLDcgKzMxLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgdGVzdC5udXYgISBudXZkZW11eCBuYW1lPWRlbXV4ICBkZW11eC5hdWRpb18wMCAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rICAgZGVtdXgudmlkZW9fMDAgISBxdWV1ZSAhIGRlY29kZWJpbiAhIHZpZGVvY29udmVydCAhIHZpZGVvc2NhbGUgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIHRlc3QubnV2ICEgbnV2ZGVtdXggbmFtZT1kZW11eCAgZGVtdXguYXVkaW9fMDAgISBkZWNvZGViaW4gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYXV0b2F1ZGlvc2luayAgIGRlbXV4LnZpZGVvXzAwICEgcXVldWUgISBkZWNvZGViaW4gISB2aWRlb2NvbnZlcnQgISB2aWRlb3NjYWxlICEgYXV0b3ZpZGVvc2luawogICogXXwgUGxheSAocGFyc2UgYW5kIGRlY29kZSkgYW4gLm51diBmaWxlIGFuZCB0cnkgdG8gb3V0cHV0IGl0IHRvCiAgKiBhbiBhdXRvbWF0aWNhbGx5IGRldGVjdGVkIHNvdW5kY2FyZCBhbmQgdmlkZW9zaW5rLiBJZiB0aGUgTlVWIGZpbGUgY29udGFpbnMKICAqIGNvbXByZXNzZWQgYXVkaW8gb3IgdmlkZW8gZGF0YSwgdGhpcyB3aWxsIG9ubHkgd29yayBpZiB5b3UgaGF2ZSB0aGUKZGlmZiAtLWdpdCBhL2dzdC9vbnZpZi9NYWtlZmlsZS5pbiBiL2dzdC9vbnZpZi9NYWtlZmlsZS5pbgppbmRleCA2ZDViNDg2Li4wNjdhYmM3IDEwMDY0NAotLS0gYS9nc3Qvb252aWYvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L29udmlmL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjczLDYgKzI3Miw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEwLDYgKzMxMSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE4LDcgKzMyMSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNyw4ICszMzksOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU1LDE2ICszNTgsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkwLDYgKzM5NCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNSw2ICs0MjEsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTYsNiArNTI0LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyOSw4ICs1MzgsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDYsNiArNTUzLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMywxNiArNjEyLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY0LDYgKzY3NSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzQsNiArNjg2LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgzLDYgKzY5Niw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjAsNyArNzM1LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3Qvb252aWYvZ3N0cnRwb252aWZ0aW1lc3RhbXAuYyBiL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jCmluZGV4IDgxOGM4YWYuLjRhYmVjZTEgMTAwNjQ0Ci0tLSBhL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jCisrKyBiL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5jCkBAIC0zMCw2ICszMCw4IEBACiAKICNpbmNsdWRlICJnc3RydHBvbnZpZnRpbWVzdGFtcC5oIgogCisjZGVmaW5lIEdTVF9OVFBfT0ZGU0VUX0VWRU5UX05BTUUgIkdzdE50cE9mZnNldCIKKwogI2RlZmluZSBERUZBVUxUX05UUF9PRkZTRVQgR1NUX0NMT0NLX1RJTUVfTk9ORQogI2RlZmluZSBERUZBVUxUX0NTRVEgMAogI2RlZmluZSBERUZBVUxUX1NFVF9FX0JJVCBGQUxTRQpAQCAtNDIsNiArNDQsMTEgQEAKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9ydHBfb252aWZfdGltZXN0YW1wX2NoYWluX2xpc3QgKEdzdFBhZCAqIHBhZCwKICAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlckxpc3QgKiBsaXN0KTsKIAorc3RhdGljIEdzdEZsb3dSZXR1cm4gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlciAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLAorICAgIEdzdEJ1ZmZlciAqIGJ1Zik7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyX2xpc3QgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwKKyAgICBHc3RCdWZmZXJMaXN0ICogbGlzdCk7CisKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rX3RlbXBsYXRlX2ZhY3RvcnkgPQogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKICAgICBHU1RfUEFEX1NJTkssCkBAIC0xMTIsNiArMTE5LDY0IEBACiAgIH0KIH0KIAorLyogc2VuZCBjYWNoZWQgYnVmZmVyIG9yIGxpc3QsIGFuZCBldmVudHMsIGlmIHByZXNlbnQgKi8KK3N0YXRpYyBHc3RGbG93UmV0dXJuCitzZW5kX2NhY2hlZF9idWZmZXJfYW5kX2V2ZW50cyAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmKQoreworICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOworCisgIGdfYXNzZXJ0ICghKHNlbGYtPmJ1ZmZlciAmJiBzZWxmLT5saXN0KSk7CisKKyAgaWYgKHNlbGYtPmJ1ZmZlcikgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJwdXNoaW5nICUiIEdTVF9QVFJfRk9STUFULCBzZWxmLT5idWZmZXIpOworICAgIHJldCA9IGhhbmRsZV9hbmRfcHVzaF9idWZmZXIgKHNlbGYsIHNlbGYtPmJ1ZmZlcik7CisgICAgc2VsZi0+YnVmZmVyID0gTlVMTDsKKyAgfQorICBpZiAoc2VsZi0+bGlzdCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJwdXNoaW5nICUiIEdTVF9QVFJfRk9STUFULCBzZWxmLT5saXN0KTsKKyAgICByZXQgPSBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyX2xpc3QgKHNlbGYsIHNlbGYtPmxpc3QpOworICAgIHNlbGYtPmxpc3QgPSBOVUxMOworICB9CisKKyAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKKyAgICBnb3RvIG91dDsKKworICB3aGlsZSAoIWdfcXVldWVfaXNfZW1wdHkgKHNlbGYtPmV2ZW50X3F1ZXVlKSkgeworICAgIEdzdEV2ZW50ICpldmVudDsKKworICAgIGV2ZW50ID0gR1NUX0VWRU5UX0NBU1QgKGdfcXVldWVfcG9wX2hlYWQgKHNlbGYtPmV2ZW50X3F1ZXVlKSk7CisgICAgR1NUX0xPR19PQkpFQ1QgKHNlbGYtPnNpbmtwYWQsICJzZW5kaW5nICUiIEdTVF9QVFJfRk9STUFULCBldmVudCk7CisgICAgKHZvaWQpIGdzdF9wYWRfc2VuZF9ldmVudCAoc2VsZi0+c2lua3BhZCwgZXZlbnQpOworICB9CisKK291dDoKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK3B1cmdlX2NhY2hlZF9idWZmZXJfYW5kX2V2ZW50cyAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmKQoreworICBnX2Fzc2VydCAoIShzZWxmLT5idWZmZXIgJiYgc2VsZi0+bGlzdCkpOworCisgIGlmIChzZWxmLT5idWZmZXIpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAicHVyZ2luZyAlIiBHU1RfUFRSX0ZPUk1BVCwgc2VsZi0+YnVmZmVyKTsKKyAgICBnc3RfYnVmZmVyX3VucmVmIChzZWxmLT5idWZmZXIpOworICAgIHNlbGYtPmJ1ZmZlciA9IE5VTEw7CisgIH0KKyAgaWYgKHNlbGYtPmxpc3QpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAicHVyZ2luZyAlIiBHU1RfUFRSX0ZPUk1BVCwgc2VsZi0+bGlzdCk7CisgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmIChzZWxmLT5saXN0KTsKKyAgICBzZWxmLT5saXN0ID0gTlVMTDsKKyAgfQorCisgIHdoaWxlICghZ19xdWV1ZV9pc19lbXB0eSAoc2VsZi0+ZXZlbnRfcXVldWUpKSB7CisgICAgR3N0RXZlbnQgKmV2ZW50OworCisgICAgZXZlbnQgPSBHU1RfRVZFTlRfQ0FTVCAoZ19xdWV1ZV9wb3BfaGVhZCAoc2VsZi0+ZXZlbnRfcXVldWUpKTsKKyAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKKyAgfQorfQorCiBzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KIGdzdF9ydHBfb252aWZfdGltZXN0YW1wX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCiAgICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKQEAgLTEyMSw2ICsxODYsNyBAQAogCiAgIHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CisgICAgICBwdXJnZV9jYWNoZWRfYnVmZmVyX2FuZF9ldmVudHMgKHNlbGYpOwogICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlbGYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC0xMzUsMTkgKzIwMSwxMSBAQAogCiAgIHN3aXRjaCAodHJhbnNpdGlvbikgewogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9SRUFEWV9UT19QQVVTRUQ6Ci0gICAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHNlbGYtPnByb3BfbnRwX29mZnNldCkpCi0gICAgICAgIHNlbGYtPm50cF9vZmZzZXQgPSBzZWxmLT5wcm9wX250cF9vZmZzZXQ7Ci0gICAgICBlbHNlCi0gICAgICAgIHNlbGYtPm50cF9vZmZzZXQgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1BBVVNFRF9UT19QTEFZSU5HOgotICAgICAgaWYgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoc2VsZi0+cHJvcF9udHBfb2Zmc2V0KSAmJgotICAgICAgICAgIEdTVF9FTEVNRU5UX0NMT0NLIChlbGVtZW50KSA9PSBOVUxMKSB7Ci0gICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChlbGVtZW50LCBDT1JFLCBDTE9DSywgKCJNaXNzaW5nIE5UUCBvZmZzZXQiKSwKLSAgICAgICAgICAgICgiU2V0IHRoZSBcIm50cC1vZmZzZXRcIiBwcm9wZXJ0eSB0bywiCi0gICAgICAgICAgICAgICAgIiBjYW4ndCBndWVzcyBpdCB3aXRob3V0IGEgY2xvY2sgb24gdGhlIHBpcGVsaW5lLiIpKTsKLSAgICAgICAgcmV0dXJuIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRTsKLSAgICAgIH0KKyAgICAgIHNlbGYtPm50cF9vZmZzZXQgPSBzZWxmLT5wcm9wX250cF9vZmZzZXQ7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibnRwLW9mZnNldDogJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICAgIEdTVF9USU1FX0FSR1MgKHNlbGYtPm50cF9vZmZzZXQpKTsKKyAgICAgIHNlbGYtPnNldF9kX2JpdCA9IEZBTFNFOworICAgICAgc2VsZi0+c2V0X2VfYml0ID0gRkFMU0U7CiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgYnJlYWs7CkBAIC0xNjEsMTAgKzIxOSw3IEBACiB7CiAgIEdzdFJ0cE9udmlmVGltZXN0YW1wICpzZWxmID0gR1NUX1JUUF9PTlZJRl9USU1FU1RBTVAgKG9iamVjdCk7CiAKLSAgaWYgKHNlbGYtPmJ1ZmZlcikKLSAgICBnc3RfYnVmZmVyX3VucmVmIChzZWxmLT5idWZmZXIpOwotICBpZiAoc2VsZi0+bGlzdCkKLSAgICBnc3RfYnVmZmVyX2xpc3RfdW5yZWYgKHNlbGYtPmxpc3QpOworICBnX3F1ZXVlX2ZyZWUgKHNlbGYtPmV2ZW50X3F1ZXVlKTsKIAogICBHX09CSkVDVF9DTEFTUyAoZ3N0X3J0cF9vbnZpZl90aW1lc3RhbXBfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CiB9CkBAIC0yMTksNDIgKzI3NCwxMjggQEAKICAgICAgIDAsICJPTlZJRiBOVFAgdGltZXN0YW1wcyBSVFAgZXh0ZW5zaW9uIik7CiB9CiAKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGhhbmRsZV9hbmRfcHVzaF9idWZmZXIgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwKLSAgICBHc3RCdWZmZXIgKiBidWYsIGdib29sZWFuIGVuZF9jb250aWd1b3VzKTsKLXN0YXRpYyBHc3RGbG93UmV0dXJuIGhhbmRsZV9hbmRfcHVzaF9idWZmZXJfbGlzdCAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLAotICAgIEdzdEJ1ZmZlckxpc3QgKiBsaXN0LCBnYm9vbGVhbiBlbmRfY29udGlndW91cyk7CitzdGF0aWMgZ2Jvb2xlYW4KK3BhcnNlX2V2ZW50X250cF9vZmZzZXQgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwgR3N0RXZlbnQgKiBldmVudCwKKyAgICBHc3RDbG9ja1RpbWUgKiBvZmZzZXQsIGdib29sZWFuICogZGlzY29udCkKK3sKKyAgY29uc3QgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmUgPSBnc3RfZXZlbnRfZ2V0X3N0cnVjdHVyZSAoZXZlbnQpOworICBHc3RDbG9ja1RpbWUgZXZlbnRfb2Zmc2V0OworICBnYm9vbGVhbiBldmVudF9kaXNjb250OworCisgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfY2xvY2tfdGltZSAoc3RydWN0dXJlLCAibnRwLW9mZnNldCIsICZldmVudF9vZmZzZXQpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIm5vIG50cC1vZmZzZXQgaW4gJSIgR1NUX1BUUl9GT1JNQVQsIGV2ZW50KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgaWYgKCFnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzdHJ1Y3R1cmUsICJkaXNjb250IiwgJmV2ZW50X2Rpc2NvbnQpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIm5vIGRpc2NvbnRpbnVlIGluICUiIEdTVF9QVFJfRk9STUFULCBldmVudCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKG9mZnNldCkKKyAgICAqb2Zmc2V0ID0gZXZlbnRfb2Zmc2V0OworCisgIGlmIChkaXNjb250KQorICAgICpkaXNjb250ID0gZXZlbnRfZGlzY29udDsKKworICByZXR1cm4gVFJVRTsKK30KIAogc3RhdGljIGdib29sZWFuCiBnc3RfcnRwX29udmlmX3RpbWVzdGFtcF9zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKICAgICBHc3RFdmVudCAqIGV2ZW50KQogewogICBHc3RSdHBPbnZpZlRpbWVzdGFtcCAqc2VsZiA9IEdTVF9SVFBfT05WSUZfVElNRVNUQU1QIChwYXJlbnQpOworICBnYm9vbGVhbiBkcm9wID0gRkFMU0U7CisgIGdib29sZWFuIHJldCA9IFRSVUU7CiAKICAgR1NUX0RFQlVHX09CSkVDVCAocGFkLCAiaGFuZGxpbmcgZXZlbnQgJXMiLCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOwogCisgIC8qIGhhbmRsZSBzZXJpYWxpemVkIGV2ZW50cywgd2hpY2gsIHNob3VsZCBub3QgYmUgZW5xdWV1ZWQgKi8KICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKLSAgICAgIGdzdF9ldmVudF9jb3B5X3NlZ21lbnQgKGV2ZW50LCAmc2VsZi0+c2VnbWVudCk7Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgotICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlbGYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKKyAgICBjYXNlIEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTToKKyAgICAgIC8qIGlmIHRoZSAic2V0LWUtYml0IiBwcm9wZXJ0eSBpcyBzZXQsIGFuIG9mZnNldCBldmVudCBtaWdodCBtYXJrIHRoZQorICAgICAgICogc3RyZWFtIGFzIGRpc2NvbnRpbnVlZC4gV2UgbmVlZCB0byBjaGVjayBpZiB0aGUgY3VycmVudGx5IGNhY2hlZCBidWZmZXIKKyAgICAgICAqIG5lZWRzIHRoZSBlLWJpdCBiZWZvcmUgaXQncyBwdXNoZWQgKi8KKyAgICAgIGlmIChzZWxmLT5wcm9wX3NldF9lX2JpdCAmJgorICAgICAgICAgIGdzdF9ldmVudF9oYXNfbmFtZSAoZXZlbnQsIEdTVF9OVFBfT0ZGU0VUX0VWRU5UX05BTUUpKSB7CisgICAgICAgIGdib29sZWFuIGRpc2NvbnQ7CisgICAgICAgIGlmIChwYXJzZV9ldmVudF9udHBfb2Zmc2V0IChzZWxmLCBldmVudCwgTlVMTCwgJmRpc2NvbnQpKSB7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgInN0cmVhbSAlcyBkaXNjb250aW51ZWQiLAorICAgICAgICAgICAgICAoZGlzY29udCA/ICJpcyIgOiAiaXMgbm90IikpOworICAgICAgICAgIHNlbGYtPnNldF9lX2JpdCA9IGRpc2NvbnQ7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZHJvcCA9IFRSVUU7CisgICAgICAgICAgcmV0ID0gRkFMU0U7CisgICAgICAgICAgZ290byBvdXQ7CisgICAgICAgIH0KKyAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKKyAgICB7CisgICAgICBHc3RGbG93UmV0dXJuIHJlczsKICAgICAgIC8qIFB1c2ggcGVuZGluZyBidWZmZXJzLCBpZiBhbnkgKi8KLSAgICAgIGlmIChzZWxmLT5idWZmZXIpIHsKLSAgICAgICAgaGFuZGxlX2FuZF9wdXNoX2J1ZmZlciAoc2VsZiwgc2VsZi0+YnVmZmVyLCBUUlVFKTsKLSAgICAgICAgc2VsZi0+YnVmZmVyID0gTlVMTDsKKyAgICAgIHNlbGYtPnNldF9lX2JpdCA9IFRSVUU7CisgICAgICByZXMgPSBzZW5kX2NhY2hlZF9idWZmZXJfYW5kX2V2ZW50cyAoc2VsZik7CisgICAgICBpZiAocmVzICE9IEdTVF9GTE9XX09LKSB7CisgICAgICAgIGRyb3AgPSBUUlVFOworICAgICAgICByZXQgPSBGQUxTRTsKKyAgICAgICAgZ290byBvdXQ7CiAgICAgICB9Ci0gICAgICBpZiAoc2VsZi0+bGlzdCkgewotICAgICAgICBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyX2xpc3QgKHNlbGYsIHNlbGYtPmxpc3QsIFRSVUUpOwotICAgICAgICBzZWxmLT5saXN0ID0gTlVMTDsKLSAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgorICAgICAgcHVyZ2VfY2FjaGVkX2J1ZmZlcl9hbmRfZXZlbnRzIChzZWxmKTsKKyAgICAgIHNlbGYtPnNldF9kX2JpdCA9IEZBTFNFOworICAgICAgc2VsZi0+c2V0X2VfYml0ID0gRkFMU0U7CisgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOwogICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIGJyZWFrOwogICB9CiAKLSAgcmV0dXJuIGdzdF9wYWRfZXZlbnRfZGVmYXVsdCAocGFkLCBwYXJlbnQsIGV2ZW50KTsKKyAgLyogZW5xdWV1ZSBzZXJpYWxpemVkIGV2ZW50cyBpZiB0aGVyZSBpcyBhIGNhY2hlZCBidWZmZXIgKi8KKyAgaWYgKEdTVF9FVkVOVF9JU19TRVJJQUxJWkVEIChldmVudCkgJiYgKHNlbGYtPmJ1ZmZlciB8fCBzZWxmLT5saXN0KSkgeworICAgIEdTVF9ERUJVRyAoImVucXVldWVpbmcgc2VyaWFsaXplZCBldmVudCIpOworICAgIGdfcXVldWVfcHVzaF90YWlsIChzZWxmLT5ldmVudF9xdWV1ZSwgZXZlbnQpOworICAgIGV2ZW50ID0gTlVMTDsKKyAgICBnb3RvIG91dDsKKyAgfQorCisgIC8qIGhhbmRsZSByZXN0IG9mIHRoZSBldmVudHMgKi8KKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU06CisgICAgICAvKiB1cGRhdGUgdGhlIG50cC1vZmZzZXQgYWZ0ZXIgYW55IGNhY2hlZCBidWZmZXIvYnVmZmVyIGxpc3QgaGFzIGJlZW4KKyAgICAgICAqIHB1c2hlZC4gdGhlIGQtYml0IG9mIHRoZSBuZXh0IGJ1ZmZlci9idWZmZXIgbGlzdCBzaG91bGQgYmUgc2V0IGlmCisgICAgICAgKiB0aGUgc3RyZWFtIGlzIGRpc2NvbnRpbnVlZCAqLworICAgICAgaWYgKGdzdF9ldmVudF9oYXNfbmFtZSAoZXZlbnQsIEdTVF9OVFBfT0ZGU0VUX0VWRU5UX05BTUUpKSB7CisgICAgICAgIEdzdENsb2NrVGltZSBvZmZzZXQ7CisgICAgICAgIGdib29sZWFuIGRpc2NvbnQ7CisgICAgICAgIGlmIChwYXJzZV9ldmVudF9udHBfb2Zmc2V0IChzZWxmLCBldmVudCwgJm9mZnNldCwgJmRpc2NvbnQpKSB7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIm5ldyBudHAtb2Zmc2V0OiAlIiBHU1RfVElNRV9GT1JNQVQKKyAgICAgICAgICAgICAgIiwgc3RyZWFtICVzIGRpc2NvbnRpbnVlZCIsIEdTVF9USU1FX0FSR1MgKG9mZnNldCksCisgICAgICAgICAgICAgIChkaXNjb250ID8gImlzIiA6ICJpcyBub3QiKSk7CisgICAgICAgICAgc2VsZi0+bnRwX29mZnNldCA9IG9mZnNldDsKKyAgICAgICAgICBzZWxmLT5zZXRfZF9iaXQgPSBkaXNjb250OworICAgICAgICB9IGVsc2UgeworICAgICAgICAgIHJldCA9IEZBTFNFOworICAgICAgICB9CisgICAgICAgIGRyb3AgPSBUUlVFOworICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKKyAgICAgIGdzdF9ldmVudF9jb3B5X3NlZ21lbnQgKGV2ZW50LCAmc2VsZi0+c2VnbWVudCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworb3V0OgorICBpZiAoZHJvcCkKKyAgICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKKyAgZWxzZSBpZiAoZXZlbnQpCisgICAgcmV0ID0gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworCisgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yNzgsMTggKzQxOSwxOCBAQAogICBzZWxmLT5wcm9wX250cF9vZmZzZXQgPSBERUZBVUxUX05UUF9PRkZTRVQ7CiAgIHNlbGYtPnByb3Bfc2V0X2VfYml0ID0gREVGQVVMVF9TRVRfRV9CSVQ7CiAKKyAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlbGYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKKworICBzZWxmLT5ldmVudF9xdWV1ZSA9IGdfcXVldWVfbmV3ICgpOwogICBzZWxmLT5idWZmZXIgPSBOVUxMOwogICBzZWxmLT5saXN0ID0gTlVMTDsKLQotICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+c2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOwogfQogCiAjZGVmaW5lIEVYVEVOU0lPTl9JRCAweEFCQUMKICNkZWZpbmUgRVhURU5TSU9OX1NJWkUgMwogCiBzdGF0aWMgZ2Jvb2xlYW4KLWhhbmRsZV9idWZmZXIgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwgR3N0QnVmZmVyICogYnVmLAotICAgIGdib29sZWFuIGVuZF9jb250aWd1b3VzKQoraGFuZGxlX2J1ZmZlciAoR3N0UnRwT252aWZUaW1lc3RhbXAgKiBzZWxmLCBHc3RCdWZmZXIgKiBidWYpCiB7CiAgIEdzdFJUUEJ1ZmZlciBydHAgPSBHU1RfUlRQX0JVRkZFUl9JTklUOwogICBndWludDggKmRhdGE7CkBAIC0zMTUsMTIgKzQ1NiwxNyBAQAogCiAgICAgICBzZWxmLT5udHBfb2Zmc2V0ID0gcmVhbF90aW1lIC0gcnVubmluZ190aW1lOwogCisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAibmV3IG50cC1vZmZzZXQ6ICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgICAgICBHU1RfVElNRV9BUkdTIChzZWxmLT5udHBfb2Zmc2V0KSk7CisKICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGNsb2NrKTsKICAgICB9IGVsc2UgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFNUUkVBTSwgRkFJTEVELCAoIk5vIG50cC1vZmZzZXQgcHJlc2VudCIpLAorICAgICAgICAgICgiQ2FuIG5vdCBndWVzcyBudHAtb2Zmc2V0IHdpdGggbm8gY2xvY2suIikpOwogICAgICAgLyogUmVjZWl2ZWQgYSBidWZmZXIgaW4gUEFVU0VELCBzbyB3ZSBjYW4ndCBndWVzcyB0aGUgbWF0Y2gKICAgICAgICAqIGJldHdlZW4gdGhlIHJ1bm5pbmcgdGltZSBhbmQgdGhlIE5UUCBjbG9jayB5ZXQuCiAgICAgICAgKi8KLSAgICAgIHJldHVybiBUUlVFOworICAgICAgcmV0dXJuIEZBTFNFOwogICAgIH0KICAgfQogCkBAIC0zNTMsMTAgKzQ5OSwxMCBAQAogCiAgIC8qIE5UUCB0aW1lc3RhbXAgKi8KICAgaWYgKEdTVF9CVUZGRVJfRFRTX0lTX1ZBTElEIChidWYpKSB7Ci0gICAgdGltZSA9IGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSAoJnNlbGYtPnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKKyAgICB0aW1lID0gZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUgKCZzZWxmLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCiAgICAgICAgIEdTVF9CVUZGRVJfRFRTIChidWYpKTsKICAgfSBlbHNlIGlmIChHU1RfQlVGRkVSX1BUU19JU19WQUxJRCAoYnVmKSkgewotICAgIHRpbWUgPSBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUgKCZzZWxmLT5zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCisgICAgdGltZSA9IGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lICgmc2VsZi0+c2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAogICAgICAgICBHU1RfQlVGRkVSX1BUUyAoYnVmKSk7CiAgIH0gZWxzZSB7CiAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwKQEAgLTM2NSw3ICs1MTEsNyBAQAogICB9CiAKICAgaWYgKHRpbWUgPT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkgewotICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gZ2V0IHJ1bm5pbmcgdGltZSIpOworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gZ2V0IHN0cmVhbSB0aW1lIik7CiAgICAgZ290byBkb25lOwogICB9CiAKQEAgLTM5MSwxNSArNTM3LDE3IEBACiAgIH0KIAogICAvKiBTZXQgRSBpZiB0aGUgbmV4dCBidWZmZXIgaGFzIERJU0NPTlQgKi8KLSAgaWYgKGVuZF9jb250aWd1b3VzKSB7CisgIGlmIChzZWxmLT5zZXRfZV9iaXQpIHsKICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2V0IEUgZmxhZyIpOwogICAgIGZpZWxkIHw9ICgxIDw8IDYpOworICAgIHNlbGYtPnNldF9lX2JpdCA9IEZBTFNFOwogICB9CiAKICAgLyogU2V0IEQgaWYgdGhlIGJ1ZmZlciBoYXMgdGhlIERJU0NPTlQgZmxhZyAqLwotICBpZiAoR1NUX0JVRkZFUl9JU19ESVNDT05UIChidWYpKSB7CisgIGlmIChzZWxmLT5zZXRfZF9iaXQpIHsKICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2V0IEQgZmxhZyIpOwogICAgIGZpZWxkIHw9ICgxIDw8IDUpOworICAgIHNlbGYtPnNldF9kX2JpdCA9IEZBTFNFOwogICB9CiAKICAgR1NUX1dSSVRFX1VJTlQ4IChkYXRhICsgOCwgZmllbGQpOwpAQCAtNDE0LDEyICs1NjIsMTEgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKLS8qIEBidWY6ICh0cmFuc2ZlciBhbGwpICovCisvKiBAYnVmOiAodHJhbnNmZXIgZnVsbCkgKi8KIHN0YXRpYyBHc3RGbG93UmV0dXJuCi1oYW5kbGVfYW5kX3B1c2hfYnVmZmVyIChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYsIEdzdEJ1ZmZlciAqIGJ1ZiwKLSAgICBnYm9vbGVhbiBlbmRfY29udGlndW91cykKK2hhbmRsZV9hbmRfcHVzaF9idWZmZXIgKEdzdFJ0cE9udmlmVGltZXN0YW1wICogc2VsZiwgR3N0QnVmZmVyICogYnVmKQogewotICBpZiAoIWhhbmRsZV9idWZmZXIgKHNlbGYsIGJ1ZiwgZW5kX2NvbnRpZ3VvdXMpKSB7CisgIGlmICghaGFuZGxlX2J1ZmZlciAoc2VsZiwgYnVmKSkgewogICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9CkBAIC00MzYsMzIgKzU4MywyNiBAQAogCiAgIGlmICghc2VsZi0+cHJvcF9zZXRfZV9iaXQpIHsKICAgICAvKiBNb2RpZnkgYW5kIHB1c2ggdGhpcyBidWZmZXIgcmlnaHQgYXdheSAqLwotICAgIHJldHVybiBoYW5kbGVfYW5kX3B1c2hfYnVmZmVyIChzZWxmLCBidWYsIEZBTFNFKTsKKyAgICByZXR1cm4gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlciAoc2VsZiwgYnVmKTsKICAgfQogCi0gIC8qIFdlIGhhdmUgdG8gd2FpdCBmb3IgdGhlICpuZXh0KiBidWZmZXIgYmVmb3JlIHB1c2hpbmcgdGhpcyBvbmUgKi8KKyAgLyogc2VuZCBhbnkgcHJldmlvdXNseSBjYWNoZWQgaXRlbShzKSwgdGhpcyBsZWF2ZXMgYW4gZW1wdHkgcXVldWUgKi8KKyAgcmVzdWx0ID0gc2VuZF9jYWNoZWRfYnVmZmVyX2FuZF9ldmVudHMgKHNlbGYpOwogCi0gIGlmIChzZWxmLT5idWZmZXIpIHsKLSAgICAvKiBwdXNoIHRoZSAqcHJldmlvdXMqIGJ1ZmZlciByZWNlaXZlZCAqLwotICAgIHJlc3VsdCA9IGhhbmRsZV9hbmRfcHVzaF9idWZmZXIgKHNlbGYsIHNlbGYtPmJ1ZmZlciwKLSAgICAgICAgR1NUX0JVRkZFUl9JU19ESVNDT05UIChidWYpKTsKLSAgfQotCi0gIC8qIFRyYW5zZmVyIG93bmVyc2hpcCAqLworICAvKiBlbnF1ZXVlIHRoZSBuZXcgaXRlbSwgYXMgdGhlIG9ubHkgaXRlbSBpbiB0aGUgcXVldWUgKi8KICAgc2VsZi0+YnVmZmVyID0gYnVmOwogICByZXR1cm4gcmVzdWx0OwogfQogCi0vKiBAYnVmOiAodHJhbnNmZXIgYWxsKSAqLworLyogQGJ1ZjogKHRyYW5zZmVyIGZ1bGwpICovCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotaGFuZGxlX2FuZF9wdXNoX2J1ZmZlcl9saXN0IChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYsCi0gICAgR3N0QnVmZmVyTGlzdCAqIGxpc3QsIGdib29sZWFuIGVuZF9jb250aWd1b3VzKQoraGFuZGxlX2FuZF9wdXNoX2J1ZmZlcl9saXN0IChHc3RSdHBPbnZpZlRpbWVzdGFtcCAqIHNlbGYsIEdzdEJ1ZmZlckxpc3QgKiBsaXN0KQogewogICBHc3RCdWZmZXIgKmJ1ZjsKIAogICAvKiBTZXQgdGhlIGV4dGVuc2lvbiBvbiB0aGUgKmZpcnN0KiBidWZmZXIgKi8KICAgYnVmID0gZ3N0X2J1ZmZlcl9saXN0X2dldCAobGlzdCwgMCk7Ci0gIGlmICghaGFuZGxlX2J1ZmZlciAoc2VsZiwgYnVmLCBlbmRfY29udGlndW91cykpIHsKKyAgaWYgKCFoYW5kbGVfYnVmZmVyIChzZWxmLCBidWYpKSB7CiAgICAgZ3N0X2J1ZmZlcl9saXN0X3VucmVmIChsaXN0KTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KQEAgLTQ3OCwyMyArNjE5LDE1IEBACiB7CiAgIEdzdFJ0cE9udmlmVGltZXN0YW1wICpzZWxmID0gR1NUX1JUUF9PTlZJRl9USU1FU1RBTVAgKHBhcmVudCk7CiAgIEdzdEZsb3dSZXR1cm4gcmVzdWx0ID0gR1NUX0ZMT1dfT0s7Ci0gIEdzdEJ1ZmZlciAqYnVmOwogCiAgIGlmICghc2VsZi0+cHJvcF9zZXRfZV9iaXQpIHsKLSAgICByZXR1cm4gaGFuZGxlX2FuZF9wdXNoX2J1ZmZlcl9saXN0IChzZWxmLCBsaXN0LCBGQUxTRSk7CisgICAgcmV0dXJuIGhhbmRsZV9hbmRfcHVzaF9idWZmZXJfbGlzdCAoc2VsZiwgbGlzdCk7CiAgIH0KIAotICAvKiBXZSBoYXZlIHRvIHdhaXQgZm9yIHRoZSAqbmV4dCogbGlzdCBiZWZvcmUgcHVzaGluZyB0aGlzIG9uZSAqLworICAvKiBzZW5kIGFueSBwcmV2aW91c2x5IGNhY2hlZCBpdGVtKHMpLCB0aGlzIGxlYXZlcyBhbiBlbXB0eSBxdWV1ZSAqLworICByZXN1bHQgPSBzZW5kX2NhY2hlZF9idWZmZXJfYW5kX2V2ZW50cyAoc2VsZik7CiAKLSAgaWYgKHNlbGYtPmxpc3QpIHsKLSAgICAvKiBwdXNoIHRoZSAqcHJldmlvdXMqIGxpc3QgcmVjZWl2ZWQgKi8KLSAgICBidWYgPSBnc3RfYnVmZmVyX2xpc3RfZ2V0IChsaXN0LCAwKTsKLQotICAgIHJlc3VsdCA9IGhhbmRsZV9hbmRfcHVzaF9idWZmZXJfbGlzdCAoc2VsZiwgc2VsZi0+bGlzdCwKLSAgICAgICAgR1NUX0JVRkZFUl9JU19ESVNDT05UIChidWYpKTsKLSAgfQotCi0gIC8qIFRyYW5zZmVyIG93bmVyc2hpcCAqLworICAvKiBlbnF1ZXVlIHRoZSBuZXcgaXRlbSwgYXMgdGhlIG9ubHkgaXRlbSBpbiB0aGUgcXVldWUgKi8KICAgc2VsZi0+bGlzdCA9IGxpc3Q7CiAgIHJldHVybiByZXN1bHQ7CiB9CmRpZmYgLS1naXQgYS9nc3Qvb252aWYvZ3N0cnRwb252aWZ0aW1lc3RhbXAuaCBiL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5oCmluZGV4IDQwYWQ4ZDMuLjFmYjMxOTkgMTAwNjQ0Ci0tLSBhL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5oCisrKyBiL2dzdC9vbnZpZi9nc3RydHBvbnZpZnRpbWVzdGFtcC5oCkBAIC01MiwxMSArNTIsMTcgQEAKICAgZ3VpbnQgcHJvcF9jc2VxOwogICBnYm9vbGVhbiBwcm9wX3NldF9lX2JpdDsKIAorICAvKiBjdXJyZW50bHkgdXNlZCBudHAtb2Zmc2V0CisgICAqKGNhbiBiZSBjaGFuZ2VkIHJ1bnRpbWUgd2l0aCBhIEdzdE50cE9mZnNldCBldmVudCkKKyAgICovCiAgIEdzdENsb2NrVGltZSBudHBfb2Zmc2V0OworICAvKiBhIEdzdE50cE9mZnNldCBldmVudCBtaWdodCBtYXJrIHRoZSBzdHJlYW0gYXMgZGlzY29udGludWVkICovCisgIGdib29sZWFuIHNldF9kX2JpdDsKKyAgZ2Jvb2xlYW4gc2V0X2VfYml0OwogCiAgIEdzdFNlZ21lbnQgc2VnbWVudDsKLSAgZ2Jvb2xlYW4gcmVjZWl2ZWRfc2VnbWVudDsKICAgLyogQnVmZmVyIHdhaXRpbmcgdG8gYmUgaGFuZGxlZCwgb25seSB1c2VkIGlmIHByb3Bfc2V0X2VfYml0IGlzIFRSVUUgKi8KKyAgR1F1ZXVlICpldmVudF9xdWV1ZTsKICAgR3N0QnVmZmVyICpidWZmZXI7CiAgIEdzdEJ1ZmZlckxpc3QgKmxpc3Q7CiB9OwpkaWZmIC0tZ2l0IGEvZ3N0L3BhdGNoZGV0ZWN0L01ha2VmaWxlLmluIGIvZ3N0L3BhdGNoZGV0ZWN0L01ha2VmaWxlLmluCmluZGV4IGFmZTMwYzMuLmZhN2E1Y2MgMTAwNjQ0Ci0tLSBhL2dzdC9wYXRjaGRldGVjdC9NYWtlZmlsZS5pbgorKysgYi9nc3QvcGF0Y2hkZXRlY3QvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvcGNhcHBhcnNlL01ha2VmaWxlLmluIGIvZ3N0L3BjYXBwYXJzZS9NYWtlZmlsZS5pbgppbmRleCA0ZGY4MWJkLi43MWI0OThhIDEwMDY0NAotLS0gYS9nc3QvcGNhcHBhcnNlL01ha2VmaWxlLmluCisrKyBiL2dzdC9wY2FwcGFyc2UvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvcGNhcHBhcnNlL2dzdGlydHNwcGFyc2UuYyBiL2dzdC9wY2FwcGFyc2UvZ3N0aXJ0c3BwYXJzZS5jCmluZGV4IDhmNWY2ZjYuLjg4YTAwOTYgMTAwNjQ0Ci0tLSBhL2dzdC9wY2FwcGFyc2UvZ3N0aXJ0c3BwYXJzZS5jCisrKyBiL2dzdC9wY2FwcGFyc2UvZ3N0aXJ0c3BwYXJzZS5jCkBAIC0zMCw3ICszMCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaC0wLjEwIGZpbGVzcmMgbG9jYXRpb249aDI2NGNyYXNoZXIucGNhcCAhIHBjYXBwYXJzZSAhIGlydHNwcGFyc2UKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249aDI2NGNyYXNoZXIucGNhcCAhIHBjYXBwYXJzZSAhIGlydHNwcGFyc2UKICAqICEgcnRwaDI2NGRlcGF5ICEgZmZkZWNfaDI2NCAhIGZha2VzaW5rCiAgKiBdfCBSZWFkIGZyb20gYSBwY2FwIGR1bXAgZmlsZSB1c2luZyBmaWxlc3JjLCBleHRyYWN0IHRoZSByYXcgVENQIHBhY2tldHMsCiAgKiBkZXBheWxvYWQgYW5kIGRlY29kZSB0aGVtLgpkaWZmIC0tZ2l0IGEvZ3N0L3BjYXBwYXJzZS9nc3RwY2FwcGFyc2UuYyBiL2dzdC9wY2FwcGFyc2UvZ3N0cGNhcHBhcnNlLmMKaW5kZXggOWUyMGQ4Ni4uMjFlMGNhYiAxMDA2NDQKLS0tIGEvZ3N0L3BjYXBwYXJzZS9nc3RwY2FwcGFyc2UuYworKysgYi9nc3QvcGNhcHBhcnNlL2dzdHBjYXBwYXJzZS5jCkBAIC0yOCw3ICsyOCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2gtMC4xMCBmaWxlc3JjIGxvY2F0aW9uPWgyNjRjcmFzaGVyLnBjYXAgISBwY2FwcGFyc2UgISBydHBoMjY0ZGVwYXkKKyAqIGdzdC1sYXVuY2gtMS4wIGZpbGVzcmMgbG9jYXRpb249aDI2NGNyYXNoZXIucGNhcCAhIHBjYXBwYXJzZSAhIHJ0cGgyNjRkZXBheQogICogISBmZmRlY19oMjY0ICEgZmFrZXNpbmsKICAqIF18IFJlYWQgZnJvbSBhIHBjYXAgZHVtcCBmaWxlIHVzaW5nIGZpbGVzcmMsIGV4dHJhY3QgdGhlIHJhdyBVRFAgcGFja2V0cywKICAqIGRlcGF5bG9hZCBhbmQgZGVjb2RlIHRoZW0uCmRpZmYgLS1naXQgYS9nc3QvcG5tL01ha2VmaWxlLmluIGIvZ3N0L3BubS9NYWtlZmlsZS5pbgppbmRleCA0YmI5ZjJhLi4zYzkzNWIwIDEwMDY0NAotLS0gYS9nc3QvcG5tL01ha2VmaWxlLmluCisrKyBiL2dzdC9wbm0vTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc2LDYgKzI3NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEzLDYgKzMxNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIxLDcgKzMyNCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0MCw4ICszNDIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU4LDE2ICszNjEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkzLDYgKzM5Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxOCw2ICs0MjQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTksNiArNTI3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMiw4ICs1NDEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDksNiArNTU2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNiwxNiArNjE1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY3LDYgKzY3OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzcsNiArNjg5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg2LDYgKzY5OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjMsNyArNzM4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvcG5tL2dzdHBubWRlYy5jIGIvZ3N0L3BubS9nc3Rwbm1kZWMuYwppbmRleCA4YmNiMDk0Li45M2M0MTQwIDEwMDY0NAotLS0gYS9nc3QvcG5tL2dzdHBubWRlYy5jCisrKyBiL2dzdC9wbm0vZ3N0cG5tZGVjLmMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGZpbGVzcmMgbG9jYXRpb249dGVzdC5wbm0gISBwbm1kZWMgISB2aWRlb2NvbnZlcnQgISBhdXRvdmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPXRlc3QucG5tICEgcG5tZGVjICEgdmlkZW9jb252ZXJ0ICEgYXV0b3ZpZGVvc2luawogICogXXwgVGhlIGFib3ZlIHBpcGVsaW5lIHJlYWRzIGEgcG5tIGZpbGUgYW5kIHJlbmRlcnMgaXQgdG8gdGhlIHNjcmVlbi4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTEzOCw2ICsxMzgsMTAgQEAKICAgICBwbm1kZWMtPmlucHV0X3N0YXRlID0gTlVMTDsKICAgfQogCisgIGlmIChwbm1kZWMtPmJ1ZikgeworICAgIGdzdF9idWZmZXJfdW5yZWYgKHBubWRlYy0+YnVmKTsKKyAgICBwbm1kZWMtPmJ1ZiA9IE5VTEw7CisgIH0KICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTE4Niw2ICsxOTAsNyBAQAogICAgICAgY2FzZSBHX1RPS0VOX0lOVDoKICAgICAgICAgaWYgKGkgPT0gdGFyZ2V0KSB7CiAgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocywgIlBOTSBmaWxlIGNvbnRhaW5zIHRvbyBtdWNoIGRhdGEuIik7CisgICAgICAgICAgZ19zY2FubmVyX2Rlc3Ryb3kgKHNjYW5uZXIpOwogICAgICAgICAgIGdvdG8gZHJvcF9lcnJvcjsKICAgICAgICAgfQogICAgICAgICBvdXRkYXRhW2krK10gPSBzY2FubmVyLT52YWx1ZS52X2ludDsKZGlmZiAtLWdpdCBhL2dzdC9wbm0vZ3N0cG5tZW5jLmMgYi9nc3QvcG5tL2dzdHBubWVuYy5jCmluZGV4IDhhMDQ2MWMuLjMyZmQ2ZjYgMTAwNjQ0Ci0tLSBhL2dzdC9wbm0vZ3N0cG5tZW5jLmMKKysrIGIvZ3N0L3BubS9nc3Rwbm1lbmMuYwpAQCAtMjcsNyArMjcsNyBAQAogICogPHJlZnNlY3Q+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgbnVtX2J1ZmZlcnM9MSAhIHZpZGVvY29udmVydCAhICJ2aWRlby94LXJhdyxmb3JtYXQ9R1JBWTgiICEgcG5tZW5jIGFzY2lpPXRydWUgISBmaWxlc2luayBsb2NhdGlvbj10ZXN0LnBubQorICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIG51bV9idWZmZXJzPTEgISB2aWRlb2NvbnZlcnQgISAidmlkZW8veC1yYXcsZm9ybWF0PUdSQVk4IiAhIHBubWVuYyBhc2NpaT10cnVlICEgZmlsZXNpbmsgbG9jYXRpb249dGVzdC5wbm0KICAqIF18IFRoZSBhYm92ZSBwaXBlbGluZSB3cml0ZXMgYSB0ZXN0IHBubSBmaWxlIChBU0NJSSBlbmNvZGluZykuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC0xNzQsNyArMTc0LDcgQEAKICAgR3N0UG5tZW5jICpwbm1lbmM7CiAgIGd1aW50IHNpemUsIHBpeGVsczsKICAgR3N0TWFwSW5mbyBvbWFwLCBpbWFwOwotICBnY2hhciAqaGVhZGVyOworICBnY2hhciAqaGVhZGVyID0gTlVMTDsKICAgR3N0VmlkZW9JbmZvICppbmZvOwogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwogICBndWludCBpX3Jvd3N0cmlkZSwgb19yb3dzdHJpZGU7CkBAIC0yMDIsMTAgKzIwMiwxMCBAQAogCiAgIGlmIChwbm1lbmMtPmluZm8uZW5jb2RpbmcgPT0gR1NUX1BOTV9FTkNPRElOR19BU0NJSSkgewogICAgIC8qIFBlciBjb21wb25lbnQgNCBieXRlcyBhcmUgdXNlZCBpbiBjYXNlIG9mIEFTQ0lJIGVuY29kaW5nICovCi0gICAgc2l6ZSA9IHNpemUgKiA0OworICAgIHNpemUgPSBzaXplICogNCArIHNpemUgLyAyMDsKICAgICBzaXplICs9IHN0cmxlbiAoaGVhZGVyKTsKICAgICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9Ci0gICAgICAgIGdzdF92aWRlb19lbmNvZGVyX2FsbG9jYXRlX291dHB1dF9idWZmZXIgKGVuY29kZXIsIChzaXplICsgc2l6ZSAvIDIwKSk7CisgICAgICAgIGdzdF92aWRlb19lbmNvZGVyX2FsbG9jYXRlX291dHB1dF9idWZmZXIgKGVuY29kZXIsIChzaXplKSk7CiAgIH0gZWxzZSB7CiAgICAgc2l6ZSArPSBzdHJsZW4gKGhlYWRlcik7CiAgICAgZnJhbWUtPm91dHB1dF9idWZmZXIgPQpAQCAtMjg0LDYgKzI4NCw3IEBACiAgICAgZ290byBkb25lOwogCiBkb25lOgorICBnX2ZyZWUgKGhlYWRlcik7CiAgIHJldHVybiByZXQ7CiB9CiAKZGlmZiAtLWdpdCBhL2dzdC9yYXdwYXJzZS9NYWtlZmlsZS5pbiBiL2dzdC9yYXdwYXJzZS9NYWtlZmlsZS5pbgppbmRleCBkMTUzNTc2Li5iMzE0YTEwIDEwMDY0NAotLS0gYS9nc3QvcmF3cGFyc2UvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3Jhd3BhcnNlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3Jhd3BhcnNlL1JFQURNRSBiL2dzdC9yYXdwYXJzZS9SRUFETUUKaW5kZXggNDE3ZTkyNi4uOWUyMWJlMiAxMDA2NDQKLS0tIGEvZ3N0L3Jhd3BhcnNlL1JFQURNRQorKysgYi9nc3QvcmF3cGFyc2UvUkVBRE1FCkBAIC05LDcgKzksNyBAQAogQ3JlYXRpbmcgZXhhbXBsZSBkYXRhCiA9PT09PT09PT09PT09PT09PT09PT0KIAotZ3N0LWxhdW5jaCB2aWRlb3Rlc3RzcmMgbnVtX2J1ZmZlcnM9MzAwICEgXAorZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjIG51bV9idWZmZXJzPTMwMCAhIFwKICAgdmlkZW8veC1yYXcsZm9ybWF0PVwoc3RyaW5nXClJNDIwLHdpZHRoPTMyMCxoZWlnaHQ9MjQwICEgXAogICBmaWxlc2luayBsb2NhdGlvbj1yYXcKIApAQCAtMTcsNyArMTcsNyBAQAogUmVhZGluZyBleGFtcGxlIGRhdGEKID09PT09PT09PT09PT09PT09PT09CiAKLWdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj1yYXcgISBcCitnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPXJhdyAhIFwKICAgdmlkZW9wYXJzZSBmb3JtYXQ9STQyMCB3aWR0aD0zMjAgaGVpZ2h0PTI0MCBmcmFtZXJhdGU9MzAvMSAhIFwKICAgeHZpbWFnZXNpbmsKIApkaWZmIC0tZ2l0IGEvZ3N0L3Jhd3BhcnNlL2dzdHJhd3BhcnNlLmMgYi9nc3QvcmF3cGFyc2UvZ3N0cmF3cGFyc2UuYwppbmRleCAwMzA4ODkwLi5hNjQ2OGQ5IDEwMDY0NAotLS0gYS9nc3QvcmF3cGFyc2UvZ3N0cmF3cGFyc2UuYworKysgYi9nc3QvcmF3cGFyc2UvZ3N0cmF3cGFyc2UuYwpAQCAtMjIyLDYgKzIyMiwyMiBAQAogICB9CiAKICAgcnAtPm5lZ290aWF0ZWQgPSBnc3RfcGFkX3NldF9jYXBzIChycC0+c3JjcGFkLCBjYXBzKTsKKworICAvKiBpZiBzdWJjbGFzcyBpbnBsZW1lbnQgZGVjaWRlX2FsbG9jYXRpb24sIHNlbmQgYW4gYWxsb2NhdGlvbgorICAgKiBxdWVyeSwgcGFzcyByZXN1bHQgdG8gc3ViY2xhc3MgYW5kIGxldCBpdCBoYW5kbGUgYWxsb2NhdGlvbiBpZiBuZWVkZWQuICovCisgIGlmIChycF9jbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24pIHsKKyAgICBHc3RRdWVyeSAqcXVlcnk7CisKKyAgICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfYWxsb2NhdGlvbiAoY2FwcywgVFJVRSk7CisgICAgaWYgKCFnc3RfcGFkX3BlZXJfcXVlcnkgKHJwLT5zcmNwYWQsIHF1ZXJ5KSkgeworICAgICAgLyogbm90IGEgcHJvYmxlbSwganVzdCBkZWJ1ZyBhIGxpdHRsZSAqLworICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnAsICJwZWVyIEFMTE9DQVRJT04gcXVlcnkgZmFpbGVkIik7CisgICAgfQorCisgICAgcnBfY2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uIChycCwgcXVlcnkpOworICAgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworICB9CisKICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogCiAgIHJldHVybiBycC0+bmVnb3RpYXRlZDsKQEAgLTIzMywxMCArMjQ5LDEyIEBACiAgIEdzdEZsb3dSZXR1cm4gcmV0OwogICBnaW50IG5mcmFtZXM7CiAgIEdzdFJhd1BhcnNlQ2xhc3MgKnJwY2xhc3M7CisgIGdzaXplIHNpemU7CiAKICAgcnBjbGFzcyA9IEdTVF9SQVdfUEFSU0VfR0VUX0NMQVNTIChycCk7CiAKLSAgbmZyYW1lcyA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcikgLyBycC0+ZnJhbWVzaXplOworICBzaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKTsKKyAgbmZyYW1lcyA9IHNpemUgLyBycC0+ZnJhbWVzaXplOwogCiAgIGlmIChycC0+c2VnbWVudC5yYXRlIDwgMCkgewogICAgIHJwLT5uX2ZyYW1lcyAtPSBuZnJhbWVzOwpAQCAtMjU3LDggKzI3NSw4IEBACiAgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmZmVyKSA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIH0KIAotICBpZiAocnBjbGFzcy0+c2V0X2J1ZmZlcl9mbGFncykgewotICAgIHJwY2xhc3MtPnNldF9idWZmZXJfZmxhZ3MgKHJwLCBidWZmZXIpOworICBpZiAocnBjbGFzcy0+cHJlX3B1c2hfYnVmZmVyKSB7CisgICAgcnBjbGFzcy0+cHJlX3B1c2hfYnVmZmVyIChycCwgYnVmZmVyKTsKICAgfQogCiAgIGlmIChycC0+ZGlzY29udCkgewpAQCAtMjY3LDcgKzI4NSw3IEBACiAgIH0KIAogICBpZiAocnAtPnNlZ21lbnQucmF0ZSA+PSAwKSB7Ci0gICAgcnAtPm9mZnNldCArPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpOworICAgIHJwLT5vZmZzZXQgKz0gc2l6ZTsKICAgICBycC0+bl9mcmFtZXMgKz0gbmZyYW1lczsKICAgfQogCmRpZmYgLS1naXQgYS9nc3QvcmF3cGFyc2UvZ3N0cmF3cGFyc2UuaCBiL2dzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5oCmluZGV4IGY2MmJiOTguLjIzMjdkYzYgMTAwNjQ0Ci0tLSBhL2dzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5oCisrKyBiL2dzdC9yYXdwYXJzZS9nc3RyYXdwYXJzZS5oCkBAIC03Nyw3ICs3Nyw4IEBACiAgIEdzdEVsZW1lbnRDbGFzcyBwYXJlbnRfY2xhc3M7CiAKICAgR3N0Q2FwcyAqICgqZ2V0X2NhcHMpIChHc3RSYXdQYXJzZSAqcnApOwotICB2b2lkICgqc2V0X2J1ZmZlcl9mbGFncykgKEdzdFJhd1BhcnNlICpycCwgR3N0QnVmZmVyICpidWZmZXIpOworICB2b2lkICgqcHJlX3B1c2hfYnVmZmVyKSAoR3N0UmF3UGFyc2UgKnJwLCBHc3RCdWZmZXIgKmJ1ZmZlcik7CisgIHZvaWQgKCpkZWNpZGVfYWxsb2NhdGlvbikgKEdzdFJhd1BhcnNlICpycCwgR3N0UXVlcnkgKnF1ZXJ5KTsKIAogICBnYm9vbGVhbiBtdWx0aXBsZV9mcmFtZXNfcGVyX2J1ZmZlcjsKIH07CmRpZmYgLS1naXQgYS9nc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5jIGIvZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuYwppbmRleCBiOGJjN2QxLi43YjVlMDM3IDEwMDY0NAotLS0gYS9nc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5jCisrKyBiL2dzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmMKQEAgLTM3LDEwICszNywxNCBAQAogICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwogCiBzdGF0aWMgR3N0Q2FwcyAqZ3N0X3ZpZGVvX3BhcnNlX2dldF9jYXBzIChHc3RSYXdQYXJzZSAqIHJwKTsKLXN0YXRpYyB2b2lkIGdzdF92aWRlb19wYXJzZV9zZXRfYnVmZmVyX2ZsYWdzIChHc3RSYXdQYXJzZSAqIHJwLAorc3RhdGljIHZvaWQgZ3N0X3ZpZGVvX3BhcnNlX3ByZV9wdXNoX2J1ZmZlciAoR3N0UmF3UGFyc2UgKiBycCwKICAgICBHc3RCdWZmZXIgKiBidWZmZXIpOworc3RhdGljIHZvaWQgZ3N0X3ZpZGVvX3BhcnNlX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RSYXdQYXJzZSAqIHJwLAorICAgIEdzdFF1ZXJ5ICogcXVlcnkpOwogCi1zdGF0aWMgdm9pZCBnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX2ZyYW1lX3NpemUgKEdzdFZpZGVvUGFyc2UgKiB2cCk7CitzdGF0aWMgdm9pZCBnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX2luZm8gKEdzdFZpZGVvUGFyc2UgKiB2cCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3ZpZGVvX3BhcnNlX2Rlc2VyaWFsaXplX2ludF9hcnJheSAoY29uc3QgZ2NoYXIgKiBzdHIsCisgICAgZ2ludCAqIGRlc3QsIGd1aW50IG5fdmFsdWVzKTsKIAogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoZ3N0X3ZpZGVvX3BhcnNlX2RlYnVnKTsKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF92aWRlb19wYXJzZV9kZWJ1ZwpAQCAtNTQsNyArNTgsMTAgQEAKICAgUFJPUF9QQVIsCiAgIFBST1BfRlJBTUVSQVRFLAogICBQUk9QX0lOVEVSTEFDRUQsCi0gIFBST1BfVE9QX0ZJRUxEX0ZJUlNUCisgIFBST1BfVE9QX0ZJRUxEX0ZJUlNULAorICBQUk9QX1NUUklERVMsCisgIFBST1BfT0ZGU0VUUywKKyAgUFJPUF9GUkFNRVNJWkUKIH07CiAKICNkZWZpbmUgZ3N0X3ZpZGVvX3BhcnNlX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKQEAgLTcyLDcgKzc5LDggQEAKICAgZ29iamVjdF9jbGFzcy0+Z2V0X3Byb3BlcnR5ID0gZ3N0X3ZpZGVvX3BhcnNlX2dldF9wcm9wZXJ0eTsKIAogICBycF9jbGFzcy0+Z2V0X2NhcHMgPSBnc3RfdmlkZW9fcGFyc2VfZ2V0X2NhcHM7Ci0gIHJwX2NsYXNzLT5zZXRfYnVmZmVyX2ZsYWdzID0gZ3N0X3ZpZGVvX3BhcnNlX3NldF9idWZmZXJfZmxhZ3M7CisgIHJwX2NsYXNzLT5wcmVfcHVzaF9idWZmZXIgPSBnc3RfdmlkZW9fcGFyc2VfcHJlX3B1c2hfYnVmZmVyOworICBycF9jbGFzcy0+ZGVjaWRlX2FsbG9jYXRpb24gPSBnc3RfdmlkZW9fcGFyc2VfZGVjaWRlX2FsbG9jYXRpb247CiAKICAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GT1JNQVQsCiAgICAgICBnX3BhcmFtX3NwZWNfZW51bSAoImZvcm1hdCIsICJGb3JtYXQiLCAiRm9ybWF0IG9mIGltYWdlcyBpbiByYXcgc3RyZWFtIiwKQEAgLTEwMCw2ICsxMDgsMTggQEAKICAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgidG9wLWZpZWxkLWZpcnN0IiwgIlRvcCBmaWVsZCBmaXJzdCIsCiAgICAgICAgICAgIlRydWUgaWYgdG9wIGZpZWxkIGlzIGVhcmxpZXIgdGhhbiBib3R0b20gZmllbGQiLCBUUlVFLAogICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX1NUUklERVMsCisgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgic3RyaWRlcyIsICJTdHJpZGVzIiwKKyAgICAgICAgICAiU3RyaWRlIG9mIGVhY2ggcGxhbmVzIGluIGJ5dGVzIHVzaW5nIHN0cmluZyBmb3JtYXQ6ICdzMCxzMSxzMixzMyciLAorICAgICAgICAgIE5VTEwsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX09GRlNFVFMsCisgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgib2Zmc2V0cyIsICJPZmZzZXRzIiwKKyAgICAgICAgICAiT2Zmc2V0IG9mIGVhY2ggcGxhbmVzIGluIGJ5dGVzIHVzaW5nIHN0cmluZyBmb3JtYXQ6ICdvMCxvMSxvMixvMyciLAorICAgICAgICAgIE5VTEwsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0ZSQU1FU0laRSwKKyAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiZnJhbWVzaXplIiwgIkZyYW1lc2l6ZSIsCisgICAgICAgICAgIlNpemUgb2YgYW4gaW1hZ2UgaW4gcmF3IHN0cmVhbSAoMDogZGVmYXVsdCkiLCAwLCBHX01BWFVJTlQsIDAsCisgICAgICAgICAgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywgIlZpZGVvIFBhcnNlIiwKICAgICAgICJGaWx0ZXIvVmlkZW8iLApAQCAtMTI2LDggKzE0Niw4IEBACiAgIHZwLT5wYXJfbiA9IDE7CiAgIHZwLT5wYXJfZCA9IDE7CiAKLSAgZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9mcmFtZV9zaXplICh2cCk7CiAgIGdzdF9yYXdfcGFyc2Vfc2V0X2ZwcyAoR1NUX1JBV19QQVJTRSAodnApLCAyNSwgMSk7CisgIGdzdF92aWRlb19wYXJzZV91cGRhdGVfaW5mbyAodnApOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTYzLDEyICsxODMsMzUgQEAKICAgICBjYXNlIFBST1BfVE9QX0ZJRUxEX0ZJUlNUOgogICAgICAgdnAtPnRvcF9maWVsZF9maXJzdCA9IGdfdmFsdWVfZ2V0X2Jvb2xlYW4gKHZhbHVlKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TVFJJREVTOgorICAgICAgaWYgKGdzdF92aWRlb19wYXJzZV9kZXNlcmlhbGl6ZV9pbnRfYXJyYXkgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpLAorICAgICAgICAgICAgICB2cC0+c3RyaWRlLCBHU1RfVklERU9fTUFYX1BMQU5FUykpIHsKKyAgICAgICAgdnAtPnN0cmlkZV9zZXQgPSBUUlVFOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2cCwgImZhaWxlZCB0byBkZXNlcmlhbGl6ZSBnaXZlbiBzdHJpZGVzIik7CisgICAgICAgIHZwLT5zdHJpZGVfc2V0ID0gRkFMU0U7CisgICAgICB9CisKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9PRkZTRVRTOgorICAgICAgaWYgKGdzdF92aWRlb19wYXJzZV9kZXNlcmlhbGl6ZV9pbnRfYXJyYXkgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpLAorICAgICAgICAgICAgICB2cC0+b2Zmc2V0LCBHU1RfVklERU9fTUFYX1BMQU5FUykpIHsKKyAgICAgICAgdnAtPm9mZnNldF9zZXQgPSBUUlVFOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh2cCwgImZhaWxlZCB0byBkZXNlcmlhbGl6ZWQgZ2l2ZW4gb2Zmc2V0cyIpOworICAgICAgICB2cC0+b2Zmc2V0X3NldCA9IEZBTFNFOworICAgICAgfQorCisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRlJBTUVTSVpFOgorICAgICAgdnAtPmZyYW1lc2l6ZSA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CiAgIH0KIAotICBnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX2ZyYW1lX3NpemUgKHZwKTsKKyAgZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9pbmZvICh2cCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0yMDMsMjIgKzI0NiwyNTkgQEAKICAgICBjYXNlIFBST1BfVE9QX0ZJRUxEX0ZJUlNUOgogICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHZwLT50b3BfZmllbGRfZmlyc3QpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NUUklERVM6CisgICAgeworICAgICAgZ2NoYXIgKnRtcDsKKworICAgICAgdG1wID0gZ19zdHJkdXBfcHJpbnRmICgiJWQsJWQsJWQsJWQiLCB2cC0+aW5mby5zdHJpZGVbMF0sCisgICAgICAgICAgdnAtPmluZm8uc3RyaWRlWzFdLCB2cC0+aW5mby5zdHJpZGVbMl0sIHZwLT5pbmZvLnN0cmlkZVszXSk7CisgICAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKHZhbHVlLCB0bXApOworICAgICAgZ19mcmVlICh0bXApOworICAgICAgYnJlYWs7CisgICAgfQorICAgIGNhc2UgUFJPUF9PRkZTRVRTOgorICAgIHsKKyAgICAgIGdjaGFyICp0bXA7CisKKyAgICAgIHRtcCA9IGdfc3RyZHVwX3ByaW50ZiAoIiUiIEdfR1NJWkVfRk9STUFUICIsJSIgR19HU0laRV9GT1JNQVQKKyAgICAgICAgICAiLCUiIEdfR1NJWkVfRk9STUFUICIsJSIgR19HU0laRV9GT1JNQVQsIHZwLT5pbmZvLm9mZnNldFswXSwKKyAgICAgICAgICB2cC0+aW5mby5vZmZzZXRbMV0sIHZwLT5pbmZvLm9mZnNldFsyXSwgdnAtPmluZm8ub2Zmc2V0WzNdKTsKKyAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHRtcCk7CisgICAgICBnX2ZyZWUgKHRtcCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgY2FzZSBQUk9QX0ZSQU1FU0laRToKKyAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCB2cC0+aW5mby5zaXplKTsKKyAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwogICAgICAgYnJlYWs7CiAgIH0KIH0KIAotdm9pZAotZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9mcmFtZV9zaXplIChHc3RWaWRlb1BhcnNlICogdnApCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92aWRlb19wYXJzZV9kZXNlcmlhbGl6ZV9pbnRfYXJyYXkgKGNvbnN0IGdjaGFyICogc3RyLCBnaW50ICogZGVzdCwKKyAgICBndWludCBuX3ZhbHVlcykKIHsKKyAgZ2NoYXIgKipzdHJ2OworICBndWludCBsZW5ndGg7CisgIGd1aW50IGk7CisKKyAgc3RydiA9IGdfc3Ryc3BsaXQgKHN0ciwgIiwiLCBuX3ZhbHVlcyk7CisgIGlmIChzdHJ2ID09IE5VTEwpCisgICAgcmV0dXJuIEZBTFNFOworCisgIGxlbmd0aCA9IGdfc3Rydl9sZW5ndGggKHN0cnYpOworCisgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykgeworICAgIGdpbnQ2NCB2YWw7CisKKyAgICB2YWwgPSBnX2FzY2lpX3N0cnRvbGwgKHN0cnZbaV0sIE5VTEwsIDEwKTsKKyAgICBpZiAodmFsIDwgR19NSU5JTlQgfHwgdmFsID4gR19NQVhJTlQpIHsKKyAgICAgIGdfc3RyZnJlZXYgKHN0cnYpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKworICAgIGRlc3RbaV0gPSB2YWw7CisgIH0KKworICAvKiBmaWxsIHJlbWFpbmluZyB2YWx1ZXMgd2l0aCAwICovCisgIGZvciAoaSA9IGxlbmd0aDsgaSA8IG5fdmFsdWVzOyBpKyspCisgICAgZGVzdFtpXSA9IDA7CisKKyAgZ19zdHJmcmVldiAoc3Rydik7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbmxpbmUgZ3NpemUKK2dzdF92aWRlb19wYXJzZV9nZXRfcGxhbmVfc2l6ZSAoR3N0VmlkZW9JbmZvICogaW5mbywgZ3VpbnQgcGxhbmUpCit7CisgIGdzaXplIHNpemUgPSAwOworCisgIGlmIChHU1RfVklERU9fRk9STUFUX0lORk9fSVNfVElMRUQgKGluZm8tPmZpbmZvKSkgeworICAgIGdpbnQgdGlsZV93aWR0aCwgdGlsZV9oZWlnaHQsIHhfdGlsZXMsIHlfdGlsZXM7CisKKyAgICB0aWxlX3dpZHRoID0gMSA8PCBHU1RfVklERU9fRk9STUFUX0lORk9fVElMRV9XUyAoaW5mby0+ZmluZm8pOworICAgIHRpbGVfaGVpZ2h0ID0gMSA8PCBHU1RfVklERU9fRk9STUFUX0lORk9fVElMRV9IUyAoaW5mby0+ZmluZm8pOworICAgIHhfdGlsZXMgPSBHU1RfVklERU9fVElMRV9YX1RJTEVTIChpbmZvLT5zdHJpZGVbcGxhbmVdKTsKKyAgICB5X3RpbGVzID0gR1NUX1ZJREVPX1RJTEVfWV9USUxFUyAoaW5mby0+c3RyaWRlW3BsYW5lXSk7CisKKyAgICAvKiBwbGFuZSBzaXplIGlzIHRoZSBzaXplIG9mIG9uZSB0aWxlIG11bHRpcGxpZWQgYnkgdGhlIG51bWJlciBvZiB0aWxlcyAqLworICAgIHNpemUgPSB0aWxlX3dpZHRoICogdGlsZV9oZWlnaHQgKiB4X3RpbGVzICogeV90aWxlczsKKyAgfSBlbHNlIHsKKyAgICBzaXplID0gaW5mby0+c3RyaWRlW3BsYW5lXSAqCisgICAgICAgIEdTVF9WSURFT19GT1JNQVRfSU5GT19TQ0FMRV9IRUlHSFQgKGluZm8tPmZpbmZvLCBwbGFuZSwgaW5mby0+aGVpZ2h0KTsKKyAgfQorCisgIHJldHVybiBzaXplOworfQorCisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9zdHJpZGUgKEdzdFZpZGVvUGFyc2UgKiB2cCkKK3sKKyAgR3N0VmlkZW9JbmZvICppbmZvID0gJnZwLT5pbmZvOworICBndWludCBpOworCisgIC8qIDEuIGNoZWNrIHRoYXQgcHJvdmlkZWQgc3RyaWRlcyBhcmUgZ3JlYXRlciB0aGFuIHRoZSBkZWZhdWx0IG9uZXMgKi8KKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKTsgaSsrKSB7CisgICAgaWYgKEdTVF9WSURFT19GT1JNQVRfSU5GT19JU19USUxFRCAoaW5mby0+ZmluZm8pKSB7CisgICAgICAvKiBmb3IgdGlsZWQgZm9ybWF0LCBtYWtlIHN1cmUgdGhlcmUgaXMgbW9yZSB0aWxlcyB0aGFuIGRlZmF1bHQgKi8KKyAgICAgIGdpbnQgZGVmYXVsdF94X3RpbGVzLCBkZWZhdWx0X3lfdGlsZXMsIHhfdGlsZXMsIHlfdGlsZXM7CisKKyAgICAgIHhfdGlsZXMgPSBHU1RfVklERU9fVElMRV9YX1RJTEVTICh2cC0+c3RyaWRlW2ldKTsKKyAgICAgIHlfdGlsZXMgPSBHU1RfVklERU9fVElMRV9ZX1RJTEVTICh2cC0+c3RyaWRlW2ldKTsKKyAgICAgIGRlZmF1bHRfeF90aWxlcyA9IEdTVF9WSURFT19USUxFX1hfVElMRVMgKGluZm8tPnN0cmlkZVtpXSk7CisgICAgICBkZWZhdWx0X3lfdGlsZXMgPSBHU1RfVklERU9fVElMRV9ZX1RJTEVTIChpbmZvLT5zdHJpZGVbaV0pOworCisgICAgICBpZiAoeF90aWxlcyA8IGRlZmF1bHRfeF90aWxlcykgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHZwLAorICAgICAgICAgICAgInhfdGlsZXMgZm9yIHBsYW5lICV1IGlzIHRvbyBzbWFsbDogZ290ICVkLCBtaW4gJWQiLCBpLCB4X3RpbGVzLAorICAgICAgICAgICAgZGVmYXVsdF94X3RpbGVzKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgfQorCisgICAgICBpZiAoeV90aWxlcyA8IGRlZmF1bHRfeV90aWxlcykgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHZwLAorICAgICAgICAgICAgInlfdGlsZXMgZm9yIHBsYW5lICV1IGlzIHRvbyBzbWFsbDogZ290ICVkLCBtaW4gJWQiLCBpLCB5X3RpbGVzLAorICAgICAgICAgICAgZGVmYXVsdF95X3RpbGVzKTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgfQorICAgIH0gZWxzZSB7CisgICAgICBpZiAodnAtPnN0cmlkZVtpXSA8IGluZm8tPnN0cmlkZVtpXSkgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHZwLAorICAgICAgICAgICAgInN0cmlkZSBmb3IgcGxhbmUgJXUgaXMgdG9vIHNtYWxsOiBnb3QgJWQsIG1pbiAlZCIsIGksCisgICAgICAgICAgICB2cC0+c3RyaWRlW2ldLCBpbmZvLT5zdHJpZGVbaV0pOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisgICAgfQorICB9CisKKyAgLyogMi4gdXBkYXRlIHN0cmlkZSBhbmQgcGxhbmUgb2Zmc2V0cyAqLworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluZm8pOyBpKyspIHsKKyAgICBpZiAodnAtPnN0cmlkZVtpXSAhPSBpbmZvLT5zdHJpZGVbaV0pIHsKKyAgICAgIGluZm8tPnN0cmlkZVtpXSA9IHZwLT5zdHJpZGVbaV07CisKKyAgICAgIGlmIChpID4gMCkgeworICAgICAgICAvKiB1cGRhdGUgb2Zmc2V0IHRvIHJlZmxlY3Qgc3RyaWRlIGNoYW5nZSBmb3IgcGxhbmUgPiAwICovCisgICAgICAgIGluZm8tPm9mZnNldFtpXSA9IGluZm8tPm9mZnNldFtpIC0gMV0gKworICAgICAgICAgICAgZ3N0X3ZpZGVvX3BhcnNlX2dldF9wbGFuZV9zaXplIChpbmZvLCBpIC0gMSk7CisgICAgICB9CisKKyAgICAgIHZwLT5uZWVkX3ZpZGVvbWV0YSA9IFRSVUU7CisgICAgfQorICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9vZmZzZXQgKEdzdFZpZGVvUGFyc2UgKiB2cCkKK3sKKyAgR3N0VmlkZW9JbmZvICppbmZvID0gJnZwLT5pbmZvOworICBndWludCBpOworCisgIC8qIDEuIGNoZWNrIHRoYXQgcHJvdmlkZWQgb2Zmc2V0cyBhcmUgZ3JlYXRlcnMgdGhhbiB0aGUgZGVmYXVsdCBvbmVzIGFuZCBhcmUKKyAgICogY29uc2lzdGVudCB3aXRoIHBsYW5lIHNpemUgKi8KKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKTsgaSsrKSB7CisgICAgZ3NpemUgbWluX29mZnNldCA9IGluZm8tPm9mZnNldFtpXTsKKworICAgIGlmIChpID4gMCkKKyAgICAgIG1pbl9vZmZzZXQgPSBNQVggKG1pbl9vZmZzZXQsCisgICAgICAgICAgdnAtPm9mZnNldFtpIC0gMV0gKyBnc3RfdmlkZW9fcGFyc2VfZ2V0X3BsYW5lX3NpemUgKGluZm8sIGkgLSAxKSk7CisKKyAgICBpZiAodnAtPm9mZnNldFtpXSA8IG1pbl9vZmZzZXQpIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsCisgICAgICAgICAgIm9mZnNldCBmb3IgcGxhbmUgJXUgaXMgdG9vIHNtYWxsOiBnb3QgJWQsIG1pbiAlIiBHX0dTSVpFX0ZPUk1BVCwgaSwKKyAgICAgICAgICB2cC0+b2Zmc2V0W2ldLCBtaW5fb2Zmc2V0KTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICAvKiAyLiB1cGRhdGUgb2Zmc2V0cyAqLworICBmb3IgKGkgPSAwOyBpIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKGluZm8pOyBpKyspIHsKKyAgICBpZiAodnAtPm9mZnNldFtpXSAhPSBpbmZvLT5vZmZzZXRbaV0pIHsKKyAgICAgIGluZm8tPm9mZnNldFtpXSA9IHZwLT5vZmZzZXRbaV07CisgICAgICB2cC0+bmVlZF92aWRlb21ldGEgPSBUUlVFOworICAgIH0KKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9pbmZvIChHc3RWaWRlb1BhcnNlICogdnApCit7CisgIEdzdFZpZGVvSW5mbyAqaW5mbyA9ICZ2cC0+aW5mbzsKKyAgZ2ludCBmcHNfbiwgZnBzX2Q7CiAgIGdpbnQgZnJhbWVzaXplOwotICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgZ3VpbnQgaTsKKyAgZ2Jvb2xlYW4gdXBkYXRlX3NpemUgPSBGQUxTRTsKIAotICBnc3RfdmlkZW9faW5mb19pbml0ICgmaW5mbyk7Ci0gIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZpbmZvLCB2cC0+Zm9ybWF0LCB2cC0+d2lkdGgsIHZwLT5oZWlnaHQpOwotICBmcmFtZXNpemUgPSBHU1RfVklERU9fSU5GT19TSVpFICgmaW5mbyk7CisgIGdzdF9yYXdfcGFyc2VfZ2V0X2ZwcyAoR1NUX1JBV19QQVJTRSAodnApLCAmZnBzX24sICZmcHNfZCk7CiAKKyAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoaW5mbyk7CisgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKGluZm8sIHZwLT5mb3JtYXQsIHZwLT53aWR0aCwgdnAtPmhlaWdodCk7CisgIGluZm8tPmZwc19uID0gZnBzX247CisgIGluZm8tPmZwc19kID0gZnBzX2Q7CisgIGluZm8tPnBhcl9uID0gdnAtPnBhcl9uOworICBpbmZvLT5wYXJfZCA9IHZwLT5wYXJfZDsKKyAgaW5mby0+aW50ZXJsYWNlX21vZGUgPSB2cC0+aW50ZXJsYWNlZCA/CisgICAgICBHU1RfVklERU9fSU5URVJMQUNFX01PREVfSU5URVJMRUFWRUQgOgorICAgICAgR1NUX1ZJREVPX0lOVEVSTEFDRV9NT0RFX1BST0dSRVNTSVZFOworCisgIHZwLT5uZWVkX3ZpZGVvbWV0YSA9IEZBTFNFOworCisgIGlmICh2cC0+c3RyaWRlX3NldCkgeworICAgIGlmIChnc3RfdmlkZW9fcGFyc2VfdXBkYXRlX3N0cmlkZSAodnApKQorICAgICAgdXBkYXRlX3NpemUgPSBUUlVFOworICAgIGVsc2UKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsICJpbnZhbGlkIHN0cmlkZXMgc2V0LCB1c2UgZGVmYXVsdCBvbmVzIik7CisgIH0KKworICBpZiAodnAtPm9mZnNldF9zZXQpIHsKKyAgICBpZiAoZ3N0X3ZpZGVvX3BhcnNlX3VwZGF0ZV9vZmZzZXQgKHZwKSkKKyAgICAgIHVwZGF0ZV9zaXplID0gVFJVRTsKKyAgICBlbHNlCisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHZwLCAiaW52YWxpZCBvZmZzZXRzIHNldCwgdXNlIGRlZmF1bHQgb25lcyIpOworICB9CisKKyAgaWYgKHVwZGF0ZV9zaXplKSB7CisgICAgZnJhbWVzaXplID0gMDsKKworICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5mbyk7IGkrKykgeworICAgICAgZ2ludCBwbGFuZXNpemUgPSBpbmZvLT5vZmZzZXRbaV07CisgICAgICBwbGFuZXNpemUgKz0gZ3N0X3ZpZGVvX3BhcnNlX2dldF9wbGFuZV9zaXplIChpbmZvLCBpKTsKKworICAgICAgaWYgKHBsYW5lc2l6ZSA+IGZyYW1lc2l6ZSkKKyAgICAgICAgZnJhbWVzaXplID0gcGxhbmVzaXplOworICAgIH0KKworICAgIGluZm8tPnNpemUgPSBmcmFtZXNpemU7CisgIH0KKworICBpZiAodnAtPmZyYW1lc2l6ZSkgeworICAgIC8qIHVzZXIgcmVxdWlyZXMgYSBzcGVjaWZpYyBmcmFtZXNpemUsIGp1c3QgbWFrZSBzdXJlIGl0J3MgYmlnZ2VyIHRoYW4KKyAgICAgKiB0aGUgY3VycmVudCBvbmUgKi8KKworICAgIGlmICh2cC0+ZnJhbWVzaXplID4gdnAtPmluZm8uc2l6ZSkKKyAgICAgIHZwLT5pbmZvLnNpemUgPSB2cC0+ZnJhbWVzaXplOworICAgIGVsc2UKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnAsICJpbnZhbGlkIGZyYW1lc2l6ZSBzZXQ6IGdvdCAldSwgbWluOiAlIgorICAgICAgICAgIEdfR1NJWkVfRk9STUFULCB2cC0+ZnJhbWVzaXplLCB2cC0+aW5mby5zaXplKTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHZwLCAidmlkZW8gaW5mbzogJXV4JXUsIGZvcm1hdCAlcywgc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVAorICAgICAgIiwgc3RyaWRlIHslZCwlZCwlZCwlZH0sIG9mZnNldCB7JSIgR19HU0laRV9GT1JNQVQgIiwlIiBHX0dTSVpFX0ZPUk1BVAorICAgICAgIiwlIiBHX0dTSVpFX0ZPUk1BVCAiLCUiIEdfR1NJWkVfRk9STUFUICJ9IiwKKyAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIIChpbmZvKSwgR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKSwKKyAgICAgIEdTVF9WSURFT19JTkZPX05BTUUgKGluZm8pLCBHU1RfVklERU9fSU5GT19TSVpFIChpbmZvKSwKKyAgICAgIGluZm8tPnN0cmlkZVswXSwgaW5mby0+c3RyaWRlWzFdLCBpbmZvLT5zdHJpZGVbMl0sIGluZm8tPnN0cmlkZVszXSwKKyAgICAgIGluZm8tPm9mZnNldFswXSwgaW5mby0+b2Zmc2V0WzFdLCBpbmZvLT5vZmZzZXRbMl0sIGluZm8tPm9mZnNldFszXSk7CisKKyAgLyogdXBkYXRlIGJhc2UgY2xhc3MgZnJhbWVzaXplICovCisgIGZyYW1lc2l6ZSA9IEdTVF9WSURFT19JTkZPX1NJWkUgKGluZm8pOwogICBnc3RfcmF3X3BhcnNlX3NldF9mcmFtZXNpemUgKEdTVF9SQVdfUEFSU0UgKHZwKSwgZnJhbWVzaXplKTsKIH0KIApAQCAtMjI2LDMyICs1MDYsNzAgQEAKIGdzdF92aWRlb19wYXJzZV9nZXRfY2FwcyAoR3N0UmF3UGFyc2UgKiBycCkKIHsKICAgR3N0VmlkZW9QYXJzZSAqdnAgPSBHU1RfVklERU9fUEFSU0UgKHJwKTsKLSAgR3N0VmlkZW9JbmZvIGluZm87Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIGdpbnQgZnBzX24sIGZwc19kOwogCi0gIGdzdF9yYXdfcGFyc2VfZ2V0X2ZwcyAocnAsICZmcHNfbiwgJmZwc19kKTsKKyAgcmV0dXJuIGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZ2cC0+aW5mbyk7Cit9CiAKLSAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJmluZm8pOwotICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmaW5mbywgdnAtPmZvcm1hdCwgdnAtPndpZHRoLCB2cC0+aGVpZ2h0KTsKLSAgaW5mby5mcHNfbiA9IGZwc19uOwotICBpbmZvLmZwc19kID0gZnBzX2Q7Ci0gIGluZm8ucGFyX24gPSB2cC0+cGFyX247Ci0gIGluZm8ucGFyX2QgPSB2cC0+cGFyX2Q7Ci0gIGluZm8uaW50ZXJsYWNlX21vZGUgPSB2cC0+aW50ZXJsYWNlZCA/Ci0gICAgICBHU1RfVklERU9fSU5URVJMQUNFX01PREVfSU5URVJMRUFWRUQgOgotICAgICAgR1NUX1ZJREVPX0lOVEVSTEFDRV9NT0RFX1BST0dSRVNTSVZFOworc3RhdGljIGdib29sZWFuCitnc3RfdmlkZW9fcGFyc2VfY29weV9mcmFtZSAoR3N0VmlkZW9QYXJzZSAqIHZwLCBHc3RCdWZmZXIgKiBkZXN0LAorICAgIEdzdFZpZGVvSW5mbyAqIGRlc3RfaW5mbywgR3N0QnVmZmVyICogc3JjLCBHc3RWaWRlb0luZm8gKiBzcmNfaW5mbykKK3sKKyAgR3N0VmlkZW9GcmFtZSBzcmNfZnJhbWU7CisgIEdzdFZpZGVvRnJhbWUgZGVzdF9mcmFtZTsKKyAgZ2Jvb2xlYW4gcmV0OwogCi0gIGNhcHMgPSBnc3RfdmlkZW9faW5mb190b19jYXBzICgmaW5mbyk7CisgIGlmICghZ3N0X3ZpZGVvX2ZyYW1lX21hcCAoJnNyY19mcmFtZSwgc3JjX2luZm8sIHNyYywgR1NUX01BUF9SRUFEKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHZwLCAiZmFpbGVkIHRvIG1hcCBzcmMgZnJhbWUiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KIAotICByZXR1cm4gY2FwczsKKyAgaWYgKCFnc3RfdmlkZW9fZnJhbWVfbWFwICgmZGVzdF9mcmFtZSwgZGVzdF9pbmZvLCBkZXN0LCBHU1RfTUFQX1dSSVRFKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHZwLCAiZmFpbGVkIHRvIG1hcCBkZXN0IGZyYW1lIik7CisgICAgZ3N0X3ZpZGVvX2ZyYW1lX3VubWFwICgmc3JjX2ZyYW1lKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXQgPSBnc3RfdmlkZW9fZnJhbWVfY29weSAoJmRlc3RfZnJhbWUsICZzcmNfZnJhbWUpOworCisgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJnNyY19mcmFtZSk7CisgIGdzdF92aWRlb19mcmFtZV91bm1hcCAoJmRlc3RfZnJhbWUpOworCisgIHJldHVybiByZXQ7CiB9CiAKIHN0YXRpYyB2b2lkCi1nc3RfdmlkZW9fcGFyc2Vfc2V0X2J1ZmZlcl9mbGFncyAoR3N0UmF3UGFyc2UgKiBycCwgR3N0QnVmZmVyICogYnVmZmVyKQorZ3N0X3ZpZGVvX3BhcnNlX3ByZV9wdXNoX2J1ZmZlciAoR3N0UmF3UGFyc2UgKiBycCwgR3N0QnVmZmVyICogYnVmZmVyKQogewogICBHc3RWaWRlb1BhcnNlICp2cCA9IEdTVF9WSURFT19QQVJTRSAocnApOwogCisgIGlmICh2cC0+ZG9fY29weSkgeworICAgIEdzdFZpZGVvSW5mbyBpbmZvOworICAgIEdzdEJ1ZmZlciAqb3V0YnVmOworCisgICAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJmluZm8pOworICAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZpbmZvLCB2cC0+Zm9ybWF0LCB2cC0+d2lkdGgsIHZwLT5oZWlnaHQpOworCisgICAgR1NUX0RFQlVHX09CSkVDVCAodnAsICJjb3B5aW5nIGZyYW1lIHRvIHJlbW92ZSBwYWRkaW5nIik7CisKKyAgICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZSAoTlVMTCwgR1NUX1ZJREVPX0lORk9fU0laRSAoJmluZm8pLCBOVUxMKTsKKworICAgIGlmICghZ3N0X3ZpZGVvX3BhcnNlX2NvcHlfZnJhbWUgKHZwLCBvdXRidWYsICZpbmZvLCBidWZmZXIsICZ2cC0+aW5mbykpCisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHZwLCAiZmFpbGVkIHRvIGNvcHkgZnJhbWUiKTsKKworICAgIGdzdF9idWZmZXJfcmVwbGFjZV9hbGxfbWVtb3J5IChidWZmZXIsIGdzdF9idWZmZXJfZ2V0X2FsbF9tZW1vcnkgKG91dGJ1ZikpOworICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7CisgIH0gZWxzZSB7CisgICAgR3N0VmlkZW9JbmZvICppbmZvID0gJnZwLT5pbmZvOworICAgIEdzdFZpZGVvRnJhbWVGbGFncyBmbGFncyA9IEdTVF9WSURFT19GUkFNRV9GTEFHX05PTkU7CisKKyAgICBpZiAodnAtPmludGVybGFjZWQgJiYgdnAtPnRvcF9maWVsZF9maXJzdCkKKyAgICAgIGZsYWdzID0gR1NUX1ZJREVPX0ZSQU1FX0ZMQUdfVEZGOworCisgICAgZ3N0X2J1ZmZlcl9hZGRfdmlkZW9fbWV0YV9mdWxsIChidWZmZXIsIGZsYWdzLCBHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pLAorICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoaW5mbyksIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoaW5mbyksCisgICAgICAgIEdTVF9WSURFT19JTkZPX05fUExBTkVTIChpbmZvKSwgaW5mby0+b2Zmc2V0LCBpbmZvLT5zdHJpZGUpOworICB9CisKICAgaWYgKHZwLT5pbnRlcmxhY2VkKSB7CiAgICAgaWYgKHZwLT50b3BfZmllbGRfZmlyc3QpIHsKICAgICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZmZlciwgR1NUX1ZJREVPX0JVRkZFUl9GTEFHX1RGRik7CkBAIC0yNjAsMyArNTc4LDIwIEBACiAgICAgfQogICB9CiB9CisKK3N0YXRpYyB2b2lkCitnc3RfdmlkZW9fcGFyc2VfZGVjaWRlX2FsbG9jYXRpb24gKEdzdFJhd1BhcnNlICogcnAsIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIEdzdFZpZGVvUGFyc2UgKnZwID0gR1NUX1ZJREVPX1BBUlNFIChycCk7CisgIGdib29sZWFuIGhhc192aWRlb21ldGE7CisKKyAgaGFzX3ZpZGVvbWV0YSA9IGdzdF9xdWVyeV9maW5kX2FsbG9jYXRpb25fbWV0YSAocXVlcnksCisgICAgICBHU1RfVklERU9fTUVUQV9BUElfVFlQRSwgTlVMTCk7CisKKyAgLyogbm8gbmVlZCB0byBjb3B5IGlmIGRvd25zdHJlYW0gc3VwcG9ydHMgdmlkZW9tZXRhIG9yIGlmIHdlIGRvbid0IG5lZWQKKyAgICogdGhlbSAqLworICBpZiAoaGFzX3ZpZGVvbWV0YSB8fCAhdnAtPm5lZWRfdmlkZW9tZXRhKQorICAgIHJldHVybjsKKworICB2cC0+ZG9fY29weSA9IFRSVUU7Cit9CmRpZmYgLS1naXQgYS9nc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5oIGIvZ3N0L3Jhd3BhcnNlL2dzdHZpZGVvcGFyc2UuaAppbmRleCBiNDE3M2RmLi5kZDU0MGM1IDEwMDY0NAotLS0gYS9nc3QvcmF3cGFyc2UvZ3N0dmlkZW9wYXJzZS5oCisrKyBiL2dzdC9yYXdwYXJzZS9nc3R2aWRlb3BhcnNlLmgKQEAgLTQ4LDYgKzQ4LDEyIEBACiB7CiAgIEdzdFJhd1BhcnNlIHBhcmVudDsKIAorICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgZ2Jvb2xlYW4gZG9fY29weTsKKyAgZ2Jvb2xlYW4gbmVlZF92aWRlb21ldGE7CisgIGdib29sZWFuIHN0cmlkZV9zZXQ7CisgIGdib29sZWFuIG9mZnNldF9zZXQ7CisKICAgLyogcHJvcGVydGllcyAqLwogICBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQ7CiAgIGdpbnQgd2lkdGg7CkBAIC01NSw2ICs2MSw5IEBACiAgIGdpbnQgcGFyX24sIHBhcl9kOwogICBnYm9vbGVhbiBpbnRlcmxhY2VkOwogICBnYm9vbGVhbiB0b3BfZmllbGRfZmlyc3Q7CisgIGdpbnQgc3RyaWRlW0dTVF9WSURFT19NQVhfUExBTkVTXTsKKyAgZ2ludCBvZmZzZXRbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBndWludCBmcmFtZXNpemU7CiB9OwogCiBzdHJ1Y3QgX0dzdFZpZGVvUGFyc2VDbGFzcwpkaWZmIC0tZ2l0IGEvZ3N0L3JlbW92ZXNpbGVuY2UvTWFrZWZpbGUuaW4gYi9nc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZS5pbgppbmRleCAwZjgzNTI0Li42MzQwZGQ1IDEwMDY0NAotLS0gYS9nc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZS5pbgorKysgYi9nc3QvcmVtb3Zlc2lsZW5jZS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9yZW1vdmVzaWxlbmNlL2dzdHJlbW92ZXNpbGVuY2UuYyBiL2dzdC9yZW1vdmVzaWxlbmNlL2dzdHJlbW92ZXNpbGVuY2UuYwppbmRleCBkNjNjNjBhLi43NzA3ODE3IDEwMDY0NAotLS0gYS9nc3QvcmVtb3Zlc2lsZW5jZS9nc3RyZW1vdmVzaWxlbmNlLmMKKysrIGIvZ3N0L3JlbW92ZXNpbGVuY2UvZ3N0cmVtb3Zlc2lsZW5jZS5jCkBAIC0yNiw3ICsyNiw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiAtbSBmaWxlc3JjIGxvY2F0aW9uPSJhdWRpb2ZpbGUiICEgZGVjb2RlYmluICEgcmVtb3Zlc2lsZW5jZSByZW1vdmU9dHJ1ZSAhIHdhdmVuYyAhIGZpbGVzaW5rIGxvY2F0aW9uPXdpdGhvdXRfYXVkaW8ud2F2CisgKiBnc3QtbGF1bmNoLTEuMCAtdiAtbSBmaWxlc3JjIGxvY2F0aW9uPSJhdWRpb2ZpbGUiICEgZGVjb2RlYmluICEgcmVtb3Zlc2lsZW5jZSByZW1vdmU9dHJ1ZSAhIHdhdmVuYyAhIGZpbGVzaW5rIGxvY2F0aW9uPXdpdGhvdXRfYXVkaW8ud2F2CiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3J0cC9NYWtlZmlsZS5hbSBiL2dzdC9ydHAvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1NjZlZDAuLjAwMDAwMDAKLS0tIGEvZ3N0L3J0cC9NYWtlZmlsZS5hbQorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdHJ0cGJhZC5sYQotCi1saWJnc3RydHBiYWRfbGFfU09VUkNFUyA9IFwKLQlnc3RydHAuYyBcCi0JZ3N0cnRwaDI2NWRlcGF5LmMgXAotCWdzdHJ0cGgyNjVwYXkuYwotCi1saWJnc3RydHBiYWRfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgXAotCSQoR1NUX0NGTEFHUykKLQotbGliZ3N0cnRwYmFkX2xhX0xJQkFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSBcCi0JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbGliZ3N0Y29kZWNwYXJzZXJzLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCi0JLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JLWxnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JLWxnc3R0YWctQEdTVF9BUElfVkVSU0lPTkAgXAotCS1sZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdHBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAgXAotCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgXAotCSQoTElCTSkKLWxpYmdzdHJ0cGJhZF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCi1saWJnc3RydHBiYWRfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKLQotbm9pbnN0X0hFQURFUlMgPQkJCVwKLQlnc3RydHBoMjY1ZGVwYXkuaCBcCi0JZ3N0cnRwaDI2NXBheS5oCmRpZmYgLS1naXQgYS9nc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5jIGIvZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjMmUxMy4uMDAwMDAwMAotLS0gYS9nc3QvcnRwL2dzdHJ0cGgyNjVkZXBheS5jCisrKyAvZGV2L251bGwKQEAgLTEsMTU4MCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDIwMDY+IFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDE0PiBKdXJnZW4gU2xvd2FjayA8anVyZ2Vuc2xvd2Fja0BnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSMgIGluY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpbmNsdWRlIDxzdGRpby5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0Yml0cmVhZGVyLmg+Ci0jaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBidWZmZXIuaD4KLSNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KLSNpbmNsdWRlICJnc3RydHBoMjY1ZGVwYXkuaCIKLQotR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAocnRwaDI2NWRlcGF5X2RlYnVnKTsKLSNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIChydHBoMjY1ZGVwYXlfZGVidWcpCi0KLS8qIFRoaXMgaXMgd2hhdCB3ZSdsbCBkZWZhdWx0IHRvIHdoZW4gZG93bnN0cmVhbSBoYXNuJ3QKLSAqIGV4cHJlc3NlZCBhIHJlc3RyaWN0aW9uIG9yIHByZWZlcmVuY2UgdmlhIGNhcHMgKi8KLSNkZWZpbmUgREVGQVVMVF9CWVRFX1NUUkVBTSAgIFRSVUUKLSNkZWZpbmUgREVGQVVMVF9BQ0NFU1NfVU5JVCAgIEZBTFNFCi0KLS8qIDMgemVybyBieXRlcyBzeW5jd29yZCAqLwotc3RhdGljIGNvbnN0IGd1aW50OCBzeW5jX2J5dGVzW10gPSB7IDAsIDAsIDAsIDEgfTsKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGdzdF9ydHBfaDI2NV9kZXBheV9zcmNfdGVtcGxhdGUgPQotICAgIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKAotICAgICAgICAvKiBGSVhNRSAtIGh2YzEgYW5kIGhldjEgZm9ybWF0cyBhcmUgbm90IHN1cHBvcnRlZCB5ZXQgKi8KLSAgICAgICAgLyoidmlkZW8veC1oMjY1LCAiCi0gICAgICAgICAgICJzdHJlYW0tZm9ybWF0ID0gKHN0cmluZykgaHZjMSwgYWxpZ25tZW50ID0gKHN0cmluZykgYXU7ICIKLSAgICAgICAgICAgInZpZGVvL3gtaDI2NSwgIgotICAgICAgICAgICAic3RyZWFtLWZvcm1hdCA9IChzdHJpbmcpIGhldjEsIGFsaWdubWVudCA9IChzdHJpbmcpIGF1OyAiICovCi0gICAgICAgICJ2aWRlby94LWgyNjUsICIKLSAgICAgICAgInN0cmVhbS1mb3JtYXQgPSAoc3RyaW5nKSBieXRlLXN0cmVhbSwgYWxpZ25tZW50ID0gKHN0cmluZykgeyBuYWwsIGF1IH0iKQotICAgICk7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfcnRwX2gyNjVfZGVwYXlfc2lua190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhcHBsaWNhdGlvbi94LXJ0cCwgIgotICAgICAgICAibWVkaWEgPSAoc3RyaW5nKSBcInZpZGVvXCIsICIKLSAgICAgICAgImNsb2NrLXJhdGUgPSAoaW50KSA5MDAwMCwgIiAiZW5jb2RpbmctbmFtZSA9IChzdHJpbmcpIFwiSDI2NVwiIikKLSAgICAgICAgLyoqIG9wdGlvbmFsIHBhcmFtZXRlcnMgKiovCi0gICAgLyogInByb2ZpbGUtc3BhY2UgPSAoaW50KSBbIDAsIDMgXSwgIiAqLwotICAgIC8qICJwcm9maWxlLWlkID0gKGludCkgWyAwLCAzMSBdLCAiICovCi0gICAgLyogInRpZXItZmxhZyA9IChpbnQpIFsgMCwgMSBdLCAiICovCi0gICAgLyogImxldmVsLWlkID0gKGludCkgWyAwLCAyNTUgXSwgIiAqLwotICAgIC8qICJpbnRlcm9wLWNvbnN0cmFpbnRzID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogInByb2ZpbGUtY29tcGF0aWJpbGl0eS1pbmRpY2F0b3IgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAic3Byb3Atc3ViLWxheWVyLWlkID0gKGludCkgWyAwLCA2IF0sICIgKi8KLSAgICAvKiAicmVjdi1zdWItbGF5ZXItaWQgPSAoaW50KSBbIDAsIDYgXSwgIiAqLwotICAgIC8qICJtYXgtcmVjdi1sZXZlbC1pZCA9IChpbnQpIFsgMCwgMjU1IF0sICIgKi8KLSAgICAvKiAidHgtbW9kZSA9IChzdHJpbmcpIHtNU1QgLCBTU1R9LCAiICovCi0gICAgLyogInNwcm9wLXZwcyA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJzcHJvcC1zcHMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAic3Byb3AtcHBzID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogInNwcm9wLXNlaSA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJtYXgtbHNyID0gKGludCkgQU5ZLCAiICovLyogTVVTVCBiZSBpbiB0aGUgcmFuZ2Ugb2YgTWF4THVtYVNSIHRvIDE2ICogTWF4THVtYVNSLCBpbmNsdXNpdmUgKi8KLSAgICAvKiAibWF4LWxwcyA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heEx1bWFQUyB0byAxNiAqIE1heEx1bWFQUywgaW5jbHVzaXZlICovCi0gICAgLyogIm1heC1jcGIgPSAoaW50KSBBTlksICIgKi8vKiBNVVNUIGJlIGluIHRoZSByYW5nZSBvZiBNYXhDUEIgdG8gMTYgKiBNYXhDUEIsIGluY2x1c2l2ZSAqLwotICAgIC8qICJtYXgtZHBiID0gKGludCkgWzEsIDE2XSwgIiAqLwotICAgIC8qICJtYXgtYnIgPSAoaW50KSBBTlksICIgKi8vKiBNVVNUIGJlIGluIHRoZSByYW5nZSBvZiBNYXhCUiB0byAxNiAqIE1heEJSLCBpbmNsdXNpdmUsIGZvciB0aGUgaGlnaGVzdCBsZXZlbCAqLwotICAgIC8qICJtYXgtdHIgPSAoaW50KSBBTlksICIgKi8vKiBNVVNUIGJlIGluIHRoZSByYW5nZSBvZiBNYXhUaWxlUm93cyB0byAxNiAqIE1heFRpbGVSb3dzLCBpbmNsdXNpdmUsIGZvciB0aGUgaGlnaGVzdCBsZXZlbCAqLwotICAgIC8qICJtYXgtdGMgPSAoaW50KSBBTlksICIgKi8vKiBNVVNUIGJlIGluIHRoZSByYW5nZSBvZiBNYXhUaWxlQ29scyB0byAxNiAqIE1heFRpbGVDb2xzLCBpbmNsdXNpdmUsIGZvciB0aGUgaGlnaGVzdCBsZXZlbCAqLwotICAgIC8qICJtYXgtZnBzID0gKGludCkgQU5ZLCAiICovCi0gICAgLyogInNwcm9wLW1heC1kb24tZGlmZiA9IChpbnQpIFswLCAzMjc2N10sICIgKi8KLSAgICAvKiAic3Byb3AtZGVwYWNrLWJ1Zi1uYWx1cyA9IChpbnQpIFswLCAzMjc2N10sICIgKi8KLSAgICAvKiAic3Byb3AtZGVwYWNrLWJ1Zi1uYWx1cyA9IChpbnQpIFswLCA0Mjk0OTY3Mjk1XSwgIiAqLwotICAgIC8qICJkZXBhY2stYnVmLWNhcCA9IChpbnQpIFsxLCA0Mjk0OTY3Mjk1XSwgIiAqLwotICAgIC8qICJzcHJvcC1zZWdtZW50YXRpb24taWQgPSAoaW50KSBbMCwgM10sICIgKi8KLSAgICAvKiAic3Byb3Atc3BhdGlhbC1zZWdtZW50YXRpb24taWRjID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogImRlYy1wYXJhbGxlbC1jYXAgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICApOwotCi0jZGVmaW5lIGdzdF9ydHBfaDI2NV9kZXBheV9wYXJlbnRfY2xhc3MgcGFyZW50X2NsYXNzCi1HX0RFRklORV9UWVBFIChHc3RSdHBIMjY1RGVwYXksIGdzdF9ydHBfaDI2NV9kZXBheSwKLSAgICBHU1RfVFlQRV9SVFBfQkFTRV9ERVBBWUxPQUQpOwotCi1zdGF0aWMgdm9pZCBnc3RfcnRwX2gyNjVfZGVwYXlfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOwotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ3N0X3J0cF9oMjY1X2RlcGF5X2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqCi0gICAgZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7Ci0KLXN0YXRpYyBHc3RCdWZmZXIgKmdzdF9ydHBfaDI2NV9kZXBheV9wcm9jZXNzIChHc3RSVFBCYXNlRGVwYXlsb2FkICogZGVwYXlsb2FkLAotICAgIEdzdFJUUEJ1ZmZlciAqIHJ0cCk7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3J0cF9oMjY1X2RlcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBmaWx0ZXIsCi0gICAgR3N0Q2FwcyAqIGNhcHMpOwotc3RhdGljIGdib29sZWFuIGdzdF9ydHBfaDI2NV9kZXBheV9oYW5kbGVfZXZlbnQgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheSwKLSAgICBHc3RFdmVudCAqIGV2ZW50KTsKLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9kZXBheV9jbGFzc19pbml0IChHc3RSdHBIMjY1RGVwYXlDbGFzcyAqIGtsYXNzKQotewotICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKLSAgR3N0UlRQQmFzZURlcGF5bG9hZENsYXNzICpnc3RydHBiYXNlZGVwYXlsb2FkX2NsYXNzOwotCi0gIGdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOwotICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKLSAgZ3N0cnRwYmFzZWRlcGF5bG9hZF9jbGFzcyA9IChHc3RSVFBCYXNlRGVwYXlsb2FkQ2xhc3MgKikga2xhc3M7Ci0KLSAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfcnRwX2gyNjVfZGVwYXlfZmluYWxpemU7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9ydHBfaDI2NV9kZXBheV9zcmNfdGVtcGxhdGUpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9ydHBfaDI2NV9kZXBheV9zaW5rX3RlbXBsYXRlKSk7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywKLSAgICAgICJSVFAgSDI2NSBkZXBheWxvYWRlciIsICJDb2RlYy9EZXBheWxvYWRlci9OZXR3b3JrL1JUUCIsCi0gICAgICAiRXh0cmFjdHMgSDI2NSB2aWRlbyBmcm9tIFJUUCBwYWNrZXRzIChkcmFmdC1pZXRmLXBheWxvYWQtcnRwLWgyNjUtMDMudHh0KSIsCi0gICAgICAiSnVyZ2VuIFNsb3dhY2sgPGp1cmdlbnNsb3dhY2tAZ21haWwuY29tPiIpOwotICBnc3RlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfcnRwX2gyNjVfZGVwYXlfY2hhbmdlX3N0YXRlOwotCi0gIGdzdHJ0cGJhc2VkZXBheWxvYWRfY2xhc3MtPnByb2Nlc3NfcnRwX3BhY2tldCA9IGdzdF9ydHBfaDI2NV9kZXBheV9wcm9jZXNzOwotICBnc3RydHBiYXNlZGVwYXlsb2FkX2NsYXNzLT5zZXRfY2FwcyA9IGdzdF9ydHBfaDI2NV9kZXBheV9zZXRjYXBzOwotICBnc3RydHBiYXNlZGVwYXlsb2FkX2NsYXNzLT5oYW5kbGVfZXZlbnQgPSBnc3RfcnRwX2gyNjVfZGVwYXlfaGFuZGxlX2V2ZW50OwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X2RlcGF5X2luaXQgKEdzdFJ0cEgyNjVEZXBheSAqIHJ0cGgyNjVkZXBheSkKLXsKLSAgcnRwaDI2NWRlcGF5LT5hZGFwdGVyID0gZ3N0X2FkYXB0ZXJfbmV3ICgpOwotICBydHBoMjY1ZGVwYXktPnBpY3R1cmVfYWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldyAoKTsKLSAgcnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSA9IERFRkFVTFRfQllURV9TVFJFQU07Ci0gIHJ0cGgyNjVkZXBheS0+c3RyZWFtX2Zvcm1hdCA9IChnY2hhciAqKSBnX21hbGxvYyAoMTApOwotICBydHBoMjY1ZGVwYXktPm1lcmdlID0gREVGQVVMVF9BQ0NFU1NfVU5JVDsKLSAgcnRwaDI2NWRlcGF5LT52cHMgPSBnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMgKAotICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfYnVmZmVyX3VucmVmKTsKLSAgcnRwaDI2NWRlcGF5LT5zcHMgPSBnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMgKAotICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfYnVmZmVyX3VucmVmKTsKLSAgcnRwaDI2NWRlcGF5LT5wcHMgPSBnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMgKAotICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfYnVmZmVyX3VucmVmKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9kZXBheV9yZXNldCAoR3N0UnRwSDI2NURlcGF5ICogcnRwaDI2NWRlcGF5KQotewotICBnc3RfYWRhcHRlcl9jbGVhciAocnRwaDI2NWRlcGF5LT5hZGFwdGVyKTsKLSAgcnRwaDI2NWRlcGF5LT53YWl0X3N0YXJ0ID0gVFJVRTsKLSAgZ3N0X2FkYXB0ZXJfY2xlYXIgKHJ0cGgyNjVkZXBheS0+cGljdHVyZV9hZGFwdGVyKTsKLSAgcnRwaDI2NWRlcGF5LT5waWN0dXJlX3N0YXJ0ID0gRkFMU0U7Ci0gIHJ0cGgyNjVkZXBheS0+bGFzdF9rZXlmcmFtZSA9IEZBTFNFOwotICBydHBoMjY1ZGVwYXktPmxhc3RfdHMgPSAwOwotICBydHBoMjY1ZGVwYXktPmN1cnJlbnRfZnVfdHlwZSA9IDA7Ci0gIHJ0cGgyNjVkZXBheS0+bmV3X2NvZGVjX2RhdGEgPSBGQUxTRTsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKHJ0cGgyNjVkZXBheS0+dnBzLCAwKTsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKHJ0cGgyNjVkZXBheS0+c3BzLCAwKTsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKHJ0cGgyNjVkZXBheS0+cHBzLCAwKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9kZXBheV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKLXsKLSAgR3N0UnRwSDI2NURlcGF5ICpydHBoMjY1ZGVwYXk7Ci0KLSAgcnRwaDI2NWRlcGF5ID0gR1NUX1JUUF9IMjY1X0RFUEFZIChvYmplY3QpOwotCi0gIGlmIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEpCi0gICAgZ3N0X2J1ZmZlcl91bnJlZiAocnRwaDI2NWRlcGF5LT5jb2RlY19kYXRhKTsKLQotICBnX2ZyZWUgKHJ0cGgyNjVkZXBheS0+c3RyZWFtX2Zvcm1hdCk7Ci0KLSAgZ19vYmplY3RfdW5yZWYgKHJ0cGgyNjVkZXBheS0+YWRhcHRlcik7Ci0gIGdfb2JqZWN0X3VucmVmIChydHBoMjY1ZGVwYXktPnBpY3R1cmVfYWRhcHRlcik7Ci0KLSAgZ19wdHJfYXJyYXlfZnJlZSAocnRwaDI2NWRlcGF5LT52cHMsIFRSVUUpOwotICBnX3B0cl9hcnJheV9mcmVlIChydHBoMjY1ZGVwYXktPnNwcywgVFJVRSk7Ci0gIGdfcHRyX2FycmF5X2ZyZWUgKHJ0cGgyNjVkZXBheS0+cHBzLCBUUlVFKTsKLQotICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX2gyNjVfZGVwYXlfbmVnb3RpYXRlIChHc3RSdHBIMjY1RGVwYXkgKiBydHBoMjY1ZGVwYXkpCi17Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIGdpbnQgYnl0ZV9zdHJlYW0gPSAtMTsKLSAgZ2ludCBtZXJnZSA9IC0xOwotCi0gIGNhcHMgPQotICAgICAgZ3N0X3BhZF9nZXRfYWxsb3dlZF9jYXBzIChHU1RfUlRQX0JBU0VfREVQQVlMT0FEX1NSQ1BBRCAocnRwaDI2NWRlcGF5KSk7Ci0KLSAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiYWxsb3dlZCBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0KLSAgaWYgKGNhcHMpIHsKLSAgICBpZiAoZ3N0X2NhcHNfZ2V0X3NpemUgKGNhcHMpID4gMCkgewotICAgICAgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gICAgICBjb25zdCBnY2hhciAqc3RyID0gTlVMTDsKLQotICAgICAgaWYgKChzdHIgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJzdHJlYW0tZm9ybWF0IikpKSB7Ci0KLSAgICAgICAgc3RyY3B5IChydHBoMjY1ZGVwYXktPnN0cmVhbV9mb3JtYXQsIHN0cik7Ci0KLSAgICAgICAgaWYgKHN0cmNtcCAoc3RyLCAiaGV2MSIpID09IDApIHsKLSAgICAgICAgICBieXRlX3N0cmVhbSA9IEZBTFNFOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcCAoc3RyLCAiaHZjMSIpID09IDApIHsKLSAgICAgICAgICBieXRlX3N0cmVhbSA9IEZBTFNFOwotICAgICAgICB9IGVsc2UgaWYgKHN0cmNtcCAoc3RyLCAiYnl0ZS1zdHJlYW0iKSA9PSAwKSB7Ci0gICAgICAgICAgYnl0ZV9zdHJlYW0gPSBUUlVFOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgInVua25vd24gc3RyZWFtLWZvcm1hdDogJXMiLCBzdHIpOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIGlmICgoc3RyID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAiYWxpZ25tZW50IikpKSB7Ci0gICAgICAgIGlmIChzdHJjbXAgKHN0ciwgImF1IikgPT0gMCkgewotICAgICAgICAgIG1lcmdlID0gVFJVRTsKLSAgICAgICAgfSBlbHNlIGlmIChzdHJjbXAgKHN0ciwgIm5hbCIpID09IDApIHsKLSAgICAgICAgICBtZXJnZSA9IEZBTFNFOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgInVua25vd24gYWxpZ25tZW50OiAlcyIsIHN0cik7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICB9Ci0KLSAgaWYgKGJ5dGVfc3RyZWFtICE9IC0xKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiZG93bnN0cmVhbSByZXF1aXJlcyBieXRlLXN0cmVhbSAlZCIsCi0gICAgICAgIGJ5dGVfc3RyZWFtKTsKLSAgICBydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtID0gYnl0ZV9zdHJlYW07Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiZGVmYXVsdGluZyB0byBieXRlLXN0cmVhbSAlZCIsCi0gICAgICAgIERFRkFVTFRfQllURV9TVFJFQU0pOwotICAgIHN0cmNweSAocnRwaDI2NWRlcGF5LT5zdHJlYW1fZm9ybWF0LCAiYnl0ZS1zdHJlYW0iKTsKLSAgICBydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtID0gREVGQVVMVF9CWVRFX1NUUkVBTTsKLSAgfQotICBpZiAobWVyZ2UgIT0gLTEpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJkb3duc3RyZWFtIHJlcXVpcmVzIG1lcmdlICVkIiwgbWVyZ2UpOwotICAgIHJ0cGgyNjVkZXBheS0+bWVyZ2UgPSBtZXJnZTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJkZWZhdWx0aW5nIHRvIG1lcmdlICVkIiwKLSAgICAgICAgREVGQVVMVF9BQ0NFU1NfVU5JVCk7Ci0gICAgcnRwaDI2NWRlcGF5LT5tZXJnZSA9IERFRkFVTFRfQUNDRVNTX1VOSVQ7Ci0gIH0KLX0KLQotLyogU3RvbGVuIGZyb20gYmFkL2dzdC9tcGVndHNkZW11eC9wYXlsb2FkZXJfcGFyc2Vycy5jICovCi0vKiB2YXJpYWJsZSBsZW5ndGggRXhwLUdvbG9tYiBwYXJzaW5nIGFjY29yZGluZyB0byBILjI2NSBzcGVjIHNlY3Rpb24gOS4yKi8KLXN0YXRpYyBnYm9vbGVhbgotcmVhZF9nb2xvbWIgKEdzdEJpdFJlYWRlciAqIGJyLCBndWludDMyICogdmFsdWUpCi17Ci0gIGd1aW50OCBiLCBsZWFkaW5nX3plcm9zID0gLTE7Ci0gICp2YWx1ZSA9IDE7Ci0KLSAgZm9yIChiID0gMDsgIWI7IGxlYWRpbmdfemVyb3MrKykgewotICAgIGlmICghZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDggKGJyLCAmYiwgMSkpCi0gICAgICByZXR1cm4gRkFMU0U7Ci0gICAgKnZhbHVlICo9IDI7Ci0gIH0KLQotICAqdmFsdWUgPSAoKnZhbHVlID4+IDEpIC0gMTsKLSAgaWYgKGxlYWRpbmdfemVyb3MgPiAwKSB7Ci0gICAgZ3VpbnQzMiB0bXAgPSAwOwotICAgIGlmICghZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDMyIChiciwgJnRtcCwgbGVhZGluZ196ZXJvcykpCi0gICAgICByZXR1cm4gRkFMU0U7Ci0gICAgKnZhbHVlICs9IHRtcDsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLXBhcnNlX3NwcyAoR3N0TWFwSW5mbyAqIG1hcCwgZ3VpbnQzMiAqIHNwc19pZCkKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVG8gcGFyc2Ugc2VxX3BhcmFtZXRlcl9zZXRfaWQgKi8KLSAgR3N0Qml0UmVhZGVyIGJyID0gR1NUX0JJVF9SRUFERVJfSU5JVCAobWFwLT5kYXRhICsgMTUsCi0gICAgICBtYXAtPnNpemUgLSAxNSk7Ci0KLSAgaWYgKG1hcC0+c2l6ZSA8IDE2KQotICAgIHJldHVybiBGQUxTRTsKLQotICBpZiAoIXJlYWRfZ29sb21iICgmYnIsIHNwc19pZCkpCi0gICAgcmV0dXJuIEZBTFNFOwotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLXBhcnNlX3BwcyAoR3N0TWFwSW5mbyAqIG1hcCwgZ3VpbnQzMiAqIHNwc19pZCwgZ3VpbnQzMiAqIHBwc19pZCkKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogVG8gcGFyc2UgcGljdHVyZV9wYXJhbWV0ZXJfc2V0X2lkICovCi0gIEdzdEJpdFJlYWRlciBiciA9IEdTVF9CSVRfUkVBREVSX0lOSVQgKG1hcC0+ZGF0YSArIDIsCi0gICAgICBtYXAtPnNpemUgLSAyKTsKLQotICBpZiAobWFwLT5zaXplIDwgMykKLSAgICByZXR1cm4gRkFMU0U7Ci0KLSAgaWYgKCFyZWFkX2dvbG9tYiAoJmJyLCBwcHNfaWQpKQotICAgIHJldHVybiBGQUxTRTsKLSAgaWYgKCFyZWFkX2dvbG9tYiAoJmJyLCBzcHNfaWQpKQotICAgIHJldHVybiBGQUxTRTsKLQotICByZXR1cm4gVFJVRTsKLX0KLQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9ydHBfaDI2NV9zZXRfc3JjX2NhcHMgKEdzdFJ0cEgyNjVEZXBheSAqIHJ0cGgyNjVkZXBheSkKLXsKLSAgZ2Jvb2xlYW4gcmVzOwotICBHc3RDYXBzICpzcmNjYXBzOwotCi0gIGlmICghcnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSAmJgotICAgICAgKCFydHBoMjY1ZGVwYXktPm5ld19jb2RlY19kYXRhIHx8Ci0gICAgICAgICAgcnRwaDI2NWRlcGF5LT52cHMtPmxlbiA9PSAwIHx8IHJ0cGgyNjVkZXBheS0+c3BzLT5sZW4gPT0gMAotICAgICAgICAgIHx8IHJ0cGgyNjVkZXBheS0+cHBzLT5sZW4gPT0gMCkpCi0gICAgcmV0dXJuIFRSVUU7Ci0KLSAgc3JjY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJ2aWRlby94LWgyNjUiLAotICAgICAgInN0cmVhbS1mb3JtYXQiLCBHX1RZUEVfU1RSSU5HLAotICAgICAgcnRwaDI2NWRlcGF5LT5zdHJlYW1fZm9ybWF0LAotICAgICAgImFsaWdubWVudCIsIEdfVFlQRV9TVFJJTkcsIHJ0cGgyNjVkZXBheS0+bWVyZ2UgPyAiYXUiIDogIm5hbCIsIE5VTEwpOwotCi0gIGlmICghcnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSkgewotCi0gICAgR3N0QnVmZmVyICpjb2RlY19kYXRhOwotICAgIGdpbnQgaSA9IDA7Ci0gICAgZ2ludCBsZW47Ci0gICAgZ3VpbnQgbnVtX3ZwcyA9IHJ0cGgyNjVkZXBheS0+dnBzLT5sZW47Ci0gICAgZ3VpbnQgbnVtX3NwcyA9IHJ0cGgyNjVkZXBheS0+c3BzLT5sZW47Ci0gICAgZ3VpbnQgbnVtX3BwcyA9IHJ0cGgyNjVkZXBheS0+cHBzLT5sZW47Ci0gICAgR3N0TWFwSW5mbyBtYXAsIG5hbG1hcDsKLSAgICBndWludDggKmRhdGE7Ci0gICAgZ2ludCBubDsKLSAgICBndWludDggbnVtX2FycmF5cyA9IDA7Ci0gICAgZ3VpbnQgbmV3X3NpemU7Ci0gICAgR3N0Qml0UmVhZGVyIGJyOwotICAgIGd1aW50MzIgdG1wOwotICAgIGd1aW50OCB0bXA4ID0gMDsKLSAgICBndWludDMyIG1heF9zdWJfbGF5ZXJzX21pbnVzMSwgdGVtcG9yYWxfaWRfbmVzdGluZ19mbGFnLCBjaHJvbWFfZm9ybWF0X2lkYywKLSAgICAgICAgYml0X2RlcHRoX2x1bWFfbWludXM4LCBiaXRfZGVwdGhfY2hyb21hX21pbnVzOCwKLSAgICAgICAgbWluX3NwYXRpYWxfc2VnbWVudGF0aW9uX2lkYzsKLQotICAgIC8qIEZpeG1lOiBDdXJyZW50IGltcGxlbWVudGF0aW9uIGlzIG5vdCBlbWJlZGRpbmcgU0VJIGluIGNvZGVjX2RhdGEgKi8KLQotICAgIGlmIChudW1fc3BzID09IDApCi0gICAgICByZXR1cm4gRkFMU0U7Ci0KLSAgICAvKiBzdGFydCB3aXRoIDIzIGJ5dGVzIGhlYWRlciAqLwotICAgIGxlbiA9IDIzOwotCi0gICAgbnVtX2FycmF5cyA9IChudW1fdnBzID4gMCkgKyAobnVtX3NwcyA+IDApICsgKG51bV9wcHMgPiAwKTsKLSAgICBsZW4gKz0gbnVtX2FycmF5czsKLQotICAgIC8qIGFkZCBzaXplIG9mIHZwcywgc3BzICYgcHBzICovCi0gICAgZm9yIChpID0gMDsgaSA8IG51bV92cHM7IGkrKykKLSAgICAgIGxlbiArPSAyICsgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+dnBzLCBpKSk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bV9zcHM7IGkrKykKLSAgICAgIGxlbiArPSAyICsgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+c3BzLCBpKSk7Ci0gICAgZm9yIChpID0gMDsgaSA8IG51bV9wcHM7IGkrKykKLSAgICAgIGxlbiArPSAyICsgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+cHBzLCBpKSk7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksCi0gICAgICAgICJjb25zdHJ1Y3RpbmcgY29kZWNfZGF0YTogbnVtX3ZwcyA9JWQgbnVtX3Nwcz0lZCwgbnVtX3Bwcz0lZCIsIG51bV92cHMsCi0gICAgICAgIG51bV9zcHMsIG51bV9wcHMpOwotCi0gICAgY29kZWNfZGF0YSA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAobGVuKTsKLSAgICBnX2RlYnVnICgiYWxsb2NfbGVuOiAldSIsIGxlbik7Ci0gICAgZ3N0X2J1ZmZlcl9tYXAgKGNvZGVjX2RhdGEsICZtYXAsIEdTVF9NQVBfUkVBRFdSSVRFKTsKLSAgICBkYXRhID0gbWFwLmRhdGE7Ci0KLSAgICBtZW1zZXQgKGRhdGEsIDAsIG1hcC5zaXplKTsKLQotICAgIC8qIFBhcnNpbmcgc3BzIHRvIGdldCB0aGUgaW5mbyByZXF1aXJlZCBmdXJ0aGVyIG9uICovCi0KLSAgICBnc3RfYnVmZmVyX21hcCAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+c3BzLCAwKSwgJm5hbG1hcCwKLSAgICAgICAgR1NUX01BUF9SRUFEKTsKLQotICAgIG1heF9zdWJfbGF5ZXJzX21pbnVzMSA9ICgobmFsbWFwLmRhdGFbMl0pID4+IDEpICYgMHgwNzsKLSAgICB0ZW1wb3JhbF9pZF9uZXN0aW5nX2ZsYWcgPSBuYWxtYXAuZGF0YVsyXSAmIDB4MDE7Ci0KLSAgICBnc3RfYml0X3JlYWRlcl9pbml0ICgmYnIsIG5hbG1hcC5kYXRhICsgMTUsIG5hbG1hcC5zaXplIC0gMTUpOwotCi0gICAgcmVhZF9nb2xvbWIgKCZiciwgJnRtcCk7ICAgIC8qIHNwc19zZXFfcGFyYW1ldGVyX3NldF9pZCAqLwotICAgIHJlYWRfZ29sb21iICgmYnIsICZjaHJvbWFfZm9ybWF0X2lkYyk7ICAgICAgLyogY2hyb21hX2Zvcm1hdF9pZGMgKi8KLQotICAgIGlmIChjaHJvbWFfZm9ybWF0X2lkYyA9PSAzKQotCi0gICAgICBnc3RfYml0X3JlYWRlcl9nZXRfYml0c191aW50OCAoJmJyLCAmdG1wOCwgMSk7ICAgIC8qIHNlcGFyYXRlX2NvbG91cl9wbGFuZV9mbGFnICovCi0KLSAgICByZWFkX2dvbG9tYiAoJmJyLCAmdG1wKTsgICAgLyogcGljX3dpZHRoX2luX2x1bWFfc2FtcGxlcyAqLwotICAgIHJlYWRfZ29sb21iICgmYnIsICZ0bXApOyAgICAvKiBwaWNfaGVpZ2h0X2luX2x1bWFfc2FtcGxlcyAqLwotCi0gICAgZ3N0X2JpdF9yZWFkZXJfZ2V0X2JpdHNfdWludDggKCZiciwgJnRtcDgsIDEpOyAgICAgIC8qIGNvbmZvcm1hbmNlX3dpbmRvd19mbGFnICovCi0gICAgaWYgKHRtcDgpIHsKLSAgICAgIHJlYWRfZ29sb21iICgmYnIsICZ0bXApOyAgLyogY29uZl93aW5fbGVmdF9vZmZzZXQgKi8KLSAgICAgIHJlYWRfZ29sb21iICgmYnIsICZ0bXApOyAgLyogY29uZl93aW5fcmlnaHRfb2Zmc2V0ICovCi0gICAgICByZWFkX2dvbG9tYiAoJmJyLCAmdG1wKTsgIC8qIGNvbmZfd2luX3RvcF9vZmZzZXQgKi8KLSAgICAgIHJlYWRfZ29sb21iICgmYnIsICZ0bXApOyAgLyogY29uZl93aW5fYm90dG9tX29mZnNldCAqLwotICAgIH0KLQotICAgIHJlYWRfZ29sb21iICgmYnIsICZiaXRfZGVwdGhfbHVtYV9taW51czgpOyAgLyogYml0X2RlcHRoX2x1bWFfbWludXM4ICovCi0gICAgcmVhZF9nb2xvbWIgKCZiciwgJmJpdF9kZXB0aF9jaHJvbWFfbWludXM4KTsgICAgICAgIC8qIGJpdF9kZXB0aF9jaHJvbWFfbWludXM4ICovCi0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksCi0gICAgICAgICJJZ25vcmluZyBtaW5fc3BhdGlhbF9zZWdtZW50YXRpb24gZm9yIG5vdyAoYXNzdW1pbmcgemVybykiKTsKLQotICAgIG1pbl9zcGF0aWFsX3NlZ21lbnRhdGlvbl9pZGMgPSAwOyAgIC8qIE5PVEUgLSB3ZSBpZ25vcmUgdGhpcyBmb3Igbm93LCBidXQgaW4gYSBwZXJmZWN0IHdvcmxkLCB3ZSBzaG91bGQgY29udGludWUgcGFyc2luZyB0byBvYnRhaW4gdGhlIHJlYWwgdmFsdWUgKi8KLQotICAgIG5sID0gbmFsbWFwLnNpemU7Ci0KLSAgICBnc3RfYnVmZmVyX3VubWFwIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5zcHMsIDApLCAmbmFsbWFwKTsKLQotICAgIC8qIEhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblZlcnNpb24gPSAxICovCi0gICAgZGF0YVswXSA9IDE7Ci0KLSAgICAvKiBDb3B5IGZyb20gcHJvZmlsZV90aWVyX2xldmVsIChSZWMuIElUVS1UIEguMjY1ICgwNC8yMDEzKSBzZWN0aW9uIDcuMy4zCi0gICAgICoKLSAgICAgKiBwcm9maWxlX3NwYWNlIHwgdGllcl9mbGF0IHwgcHJvZmlsZV9pZGMgfAotICAgICAqIHByb2ZpbGVfY29tcGF0aWJpbGl0eV9mbGFncyB8IGNvbnN0cmFpbnRfaW5kaWNhdG9yX2ZsYWdzIHwKLSAgICAgKiBsZXZlbF9pZGMgfCBwcm9ncmVzc2l2ZV9zb3VyY2VfZmxhZyB8IGludGVybGFjZWRfc291cmNlX2ZsYWcKLSAgICAgKiBub25fcGFja2VkX2NvbnN0cmFpbnRfZmxhZyB8IGZyYW1lX29ubHlfY29uc3RyYWludF9mbGFnCi0gICAgICogcmVzZXJ2ZWRfemVyb180NGJpdHMgfCBsZXZlbF9pZGMgKi8KLSAgICBnc3RfYnVmZmVyX21hcCAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+c3BzLCAwKSwgJm5hbG1hcCwKLSAgICAgICAgR1NUX01BUF9SRUFEKTsKLSAgICBmb3IgKGkgPSAwOyBpIDwgMTI7IGkrKykKLSAgICAgIGRhdGFbaSArIDFdID0gbmFsbWFwLmRhdGFbaV07Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+c3BzLCAwKSwgJm5hbG1hcCk7Ci0KLSAgICAvKiBtaW5fc3BhdGlhbF9zZWdtZW50YXRpb25faWRjICovCi0gICAgR1NUX1dSSVRFX1VJTlQxNl9CRSAoZGF0YSArIDEzLCBtaW5fc3BhdGlhbF9zZWdtZW50YXRpb25faWRjKTsKLSAgICBkYXRhWzEzXSB8PSAweGYwOwotICAgIGRhdGFbMTVdID0gMHhmYzsgICAgICAgICAgICAvKiBrZWVwaW5nIHBhcnJhbGxlbGlzbVR5cGUgYXMgemVybyAodW5rbm93bikgKi8KLSAgICBkYXRhWzE2XSA9IDB4ZmMgfCBjaHJvbWFfZm9ybWF0X2lkYzsKLSAgICBkYXRhWzE3XSA9IDB4ZjggfCBiaXRfZGVwdGhfbHVtYV9taW51czg7Ci0gICAgZGF0YVsxOF0gPSAweGY4IHwgYml0X2RlcHRoX2Nocm9tYV9taW51czg7Ci0gICAgZGF0YVsxOV0gPSAweDAwOyAgICAgICAgICAgIC8qIGtlZXAgYXZnRnJhbWVSYXRlIGFzIHVuc3BlY2lmaWVkICovCi0gICAgZGF0YVsyMF0gPSAweDAwOyAgICAgICAgICAgIC8qIGtlZXAgYXZnRnJhbWVSYXRlIGFzIHVuc3BlY2lmaWVkICovCi0gICAgLyogY29uc3RGcmFtZVJhdGUoMiBiaXRzKTogMCwgc3RyZWFtIG1heSBvciBtYXkgbm90IGJlIG9mIGNvbnN0YW50IGZyYW1lcmF0ZQotICAgICAqIG51bVRlbXBvcmFsTGF5ZXJzICgzIGJpdHMpOiBudW1iZXIgb2YgdGVtcG9yYWwgbGF5ZXJzLCB2YWx1ZSBmcm9tIFNQUwotICAgICAqIFRlbXBvcmFsSWROZXN0ZWQgKDEgYml0KTogc3BzX3RlbXBvcmFsX2lkX25lc3RpbmdfZmxhZyBmcm9tIFNQUwotICAgICAqIGxlbmd0aFNpemVNaW51c09uZSAoMiBiaXRzKTogcGx1cyAxIGluZGljYXRlcyB0aGUgbGVuZ3RoIG9mIHRoZSBOQUxVbml0TGVuZ3RoICovCi0gICAgZGF0YVsyMV0gPQotICAgICAgICAweDAwIHwgKChtYXhfc3ViX2xheWVyc19taW51czEgKwotICAgICAgICAgICAgMSkgPDwgMykgfCAodGVtcG9yYWxfaWRfbmVzdGluZ19mbGFnIDw8IDIpIHwgKG5sIC0gMSk7Ci0gICAgR1NUX1dSSVRFX1VJTlQ4IChkYXRhICsgMjIsIG51bV9hcnJheXMpOyAgICAvKiBudW1PZkFycmF5cyAqLwotCi0gICAgZGF0YSArPSAyMzsKLQotICAgIC8qIGNvcHkgYWxsIFZQUyAqLwotICAgIGlmIChudW1fdnBzID4gMCkgewotICAgICAgLyogYXJyYXlfY29tcGxldGVuZXNzIHwgcmVzZXJ2ZWRfemVybyBiaXQgfCBuYWxfdW5pdF90eXBlICovCi0gICAgICBkYXRhWzBdID0gMHgwMCB8IDB4MjA7Ci0gICAgICBkYXRhKys7Ci0KLSAgICAgIEdTVF9XUklURV9VSU5UMTZfQkUgKGRhdGEsIG51bV92cHMpOwotICAgICAgZGF0YSArPSAyOwotCi0gICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZwczsgaSsrKSB7Ci0gICAgICAgIGdzaXplIG5hbF9zaXplID0KLSAgICAgICAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnZwcywgaSkpOwotICAgICAgICBHU1RfV1JJVEVfVUlOVDE2X0JFIChkYXRhLCBuYWxfc2l6ZSk7Ci0gICAgICAgIGdzdF9idWZmZXJfZXh0cmFjdCAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+dnBzLCBpKSwgMCwKLSAgICAgICAgICAgIGRhdGEgKyAyLCBuYWxfc2l6ZSk7Ci0gICAgICAgIGRhdGEgKz0gMiArIG5hbF9zaXplOwotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJDb3BpZWQgVlBTICVkIG9mIGxlbmd0aCAldSIsIGksCi0gICAgICAgICAgICAoZ3VpbnQpIG5hbF9zaXplKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICAvKiBjb3B5IGFsbCBTUFMgKi8KLSAgICBpZiAobnVtX3NwcyA+IDApIHsKLSAgICAgIC8qIGFycmF5X2NvbXBsZXRlbmVzcyB8IHJlc2VydmVkX3plcm8gYml0IHwgbmFsX3VuaXRfdHlwZSAqLwotICAgICAgZGF0YVswXSA9IDB4MDAgfCAweDIxOwotICAgICAgZGF0YSsrOwotCi0gICAgICBHU1RfV1JJVEVfVUlOVDE2X0JFIChkYXRhLCBudW1fc3BzKTsKLSAgICAgIGRhdGEgKz0gMjsKLQotICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9zcHM7IGkrKykgewotICAgICAgICBnc2l6ZSBuYWxfc2l6ZSA9Ci0gICAgICAgICAgICBnc3RfYnVmZmVyX2dldF9zaXplIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5zcHMsIGkpKTsKLSAgICAgICAgR1NUX1dSSVRFX1VJTlQxNl9CRSAoZGF0YSwgbmFsX3NpemUpOwotICAgICAgICBnc3RfYnVmZmVyX2V4dHJhY3QgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnNwcywgaSksIDAsCi0gICAgICAgICAgICBkYXRhICsgMiwgbmFsX3NpemUpOwotICAgICAgICBkYXRhICs9IDIgKyBuYWxfc2l6ZTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiQ29waWVkIFNQUyAlZCBvZiBsZW5ndGggJXUiLCBpLAotICAgICAgICAgICAgKGd1aW50KSBuYWxfc2l6ZSk7Ci0gICAgICB9Ci0gICAgfQotCi0gICAgLyogY29weSBhbGwgUFBTICovCi0gICAgaWYgKG51bV9wcHMgPiAwKSB7Ci0gICAgICAvKiBhcnJheV9jb21wbGV0ZW5lc3MgfCByZXNlcnZlZF96ZXJvIGJpdCB8IG5hbF91bml0X3R5cGUgKi8KLSAgICAgIGRhdGFbMF0gPSAweDAwIHwgMHgyMjsKLSAgICAgIGRhdGErKzsKLQotICAgICAgR1NUX1dSSVRFX1VJTlQxNl9CRSAoZGF0YSwgbnVtX3Bwcyk7Ci0gICAgICBkYXRhICs9IDI7Ci0KLSAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fcHBzOyBpKyspIHsKLSAgICAgICAgZ3NpemUgbmFsX3NpemUgPQotICAgICAgICAgICAgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+cHBzLCBpKSk7Ci0gICAgICAgIEdTVF9XUklURV9VSU5UMTZfQkUgKGRhdGEsIG5hbF9zaXplKTsKLSAgICAgICAgZ3N0X2J1ZmZlcl9leHRyYWN0IChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5wcHMsIGkpLCAwLAotICAgICAgICAgICAgZGF0YSArIDIsIG5hbF9zaXplKTsKLSAgICAgICAgZGF0YSArPSAyICsgbmFsX3NpemU7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgIkNvcGllZCBQUFMgJWQgb2YgbGVuZ3RoICV1IiwgaSwKLSAgICAgICAgICAgIChndWludCkgbmFsX3NpemUpOwotICAgICAgfQotICAgIH0KLQotICAgIG5ld19zaXplID0gZGF0YSAtIG1hcC5kYXRhOwotICAgIGdzdF9idWZmZXJfdW5tYXAgKGNvZGVjX2RhdGEsICZtYXApOwotICAgIGdzdF9idWZmZXJfc2V0X3NpemUgKGNvZGVjX2RhdGEsIG5ld19zaXplKTsKLQotICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKHNyY2NhcHMsCi0gICAgICAgICJjb2RlY19kYXRhIiwgR1NUX1RZUEVfQlVGRkVSLCBjb2RlY19kYXRhLCBOVUxMKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChjb2RlY19kYXRhKTsKLSAgfQotCi0gIGlmIChnc3RfcGFkX2hhc19jdXJyZW50X2NhcHMgKEdTVF9SVFBfQkFTRV9ERVBBWUxPQURfU1JDUEFEIChydHBoMjY1ZGVwYXkpKSkgewotICAgIEdzdENhcHMgKm9sZF9jYXBzID0KLSAgICAgICAgZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfUlRQX0JBU0VfREVQQVlMT0FEX1NSQ1BBRCAocnRwaDI2NWRlcGF5KSk7Ci0KLSAgICAvKiBPbmx5IHVwZGF0ZSB0aGUgY2FwcyBpZiB0aGV5IGFyZSBub3QgZXF1YWwuIEZvcgotICAgICAqIEFWQyB3ZSBkb24ndCB1cGRhdGUgY2FwcyBpZiBvbmx5IHRoZSBjb2RlY19kYXRhCi0gICAgICogY2hhbmdlcy4gVGhpcyBpcyB0aGUgc2FtZSBiZWhhdmlvdXIgYXMgaW4gaDI2NHBhcnNlCi0gICAgICogYW5kIGdzdHJ0cGgyNjRkZXBheQotICAgICAqLwotICAgIGlmIChydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtKSB7Ci0gICAgICBpZiAoIWdzdF9jYXBzX2lzX2VxdWFsIChzcmNjYXBzLCBvbGRfY2FwcykpCi0gICAgICAgIHJlcyA9Ci0gICAgICAgICAgICBnc3RfcGFkX3NldF9jYXBzIChHU1RfUlRQX0JBU0VfREVQQVlMT0FEX1NSQ1BBRCAocnRwaDI2NWRlcGF5KSwKLSAgICAgICAgICAgIHNyY2NhcHMpOwotICAgICAgZWxzZQotICAgICAgICByZXMgPSBUUlVFOwotICAgIH0gZWxzZSB7Ci0gICAgICBHc3RDYXBzICp0bXBfY2FwcyA9IGdzdF9jYXBzX2NvcHkgKHNyY2NhcHMpOwotICAgICAgR3N0U3RydWN0dXJlICpvbGRfcywgKnRtcF9zOwotCi0gICAgICBvbGRfcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKG9sZF9jYXBzLCAwKTsKLSAgICAgIHRtcF9zID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAodG1wX2NhcHMsIDApOwotICAgICAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChvbGRfcywgImNvZGVjX2RhdGEiKSkKLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXRfdmFsdWUgKHRtcF9zLCAiY29kZWNfZGF0YSIsCi0gICAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAob2xkX3MsICJjb2RlY19kYXRhIikpOwotCi0gICAgICBpZiAoIWdzdF9jYXBzX2lzX2VxdWFsIChvbGRfY2FwcywgdG1wX2NhcHMpKQotICAgICAgICByZXMgPQotICAgICAgICAgICAgZ3N0X3BhZF9zZXRfY2FwcyAoR1NUX1JUUF9CQVNFX0RFUEFZTE9BRF9TUkNQQUQgKHJ0cGgyNjVkZXBheSksCi0gICAgICAgICAgICBzcmNjYXBzKTsKLSAgICAgIGVsc2UKLSAgICAgICAgcmVzID0gVFJVRTsKLQotICAgICAgZ3N0X2NhcHNfdW5yZWYgKHRtcF9jYXBzKTsKLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgcmVzID0KLSAgICAgICAgZ3N0X3BhZF9zZXRfY2FwcyAoR1NUX1JUUF9CQVNFX0RFUEFZTE9BRF9TUkNQQUQgKHJ0cGgyNjVkZXBheSksCi0gICAgICAgIHNyY2NhcHMpOwotICB9Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKHNyY2NhcHMpOwotCi0gIC8qIEluc2VydCBTUFMgYW5kIFBQUyBpbnRvIHRoZSBzdHJlYW0gb24gbmV4dCBvcHBvcnR1bml0eSAqLwotICBpZiAocnRwaDI2NWRlcGF5LT5zcHMtPmxlbiA+IDAgfHwgcnRwaDI2NWRlcGF5LT5wcHMtPmxlbiA+IDApIHsKLSAgICBnaW50IGk7Ci0gICAgR3N0QnVmZmVyICpjb2RlY19kYXRhOwotICAgIEdzdE1hcEluZm8gbWFwOwotICAgIGd1aW50OCAqZGF0YTsKLSAgICBndWludCBsZW4gPSAwOwotCi0gICAgZm9yIChpID0gMDsgaSA8IHJ0cGgyNjVkZXBheS0+c3BzLT5sZW47IGkrKykgewotICAgICAgbGVuICs9IDQgKyBnc3RfYnVmZmVyX2dldF9zaXplIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NWRlcGF5LT5zcHMsIGkpKTsKLSAgICB9Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgcnRwaDI2NWRlcGF5LT5wcHMtPmxlbjsgaSsrKSB7Ci0gICAgICBsZW4gKz0gNCArIGdzdF9idWZmZXJfZ2V0X3NpemUgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnBwcywgaSkpOwotICAgIH0KLQotICAgIGNvZGVjX2RhdGEgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGxlbik7Ci0gICAgZ3N0X2J1ZmZlcl9tYXAgKGNvZGVjX2RhdGEsICZtYXAsIEdTVF9NQVBfV1JJVEUpOwotICAgIGRhdGEgPSBtYXAuZGF0YTsKLQotICAgIGZvciAoaSA9IDA7IGkgPCBydHBoMjY1ZGVwYXktPnNwcy0+bGVuOyBpKyspIHsKLSAgICAgIEdzdEJ1ZmZlciAqc3BzX2J1ZiA9IGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1ZGVwYXktPnNwcywgaSk7Ci0gICAgICBndWludCBzcHNfc2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKHNwc19idWYpOwotCi0gICAgICBpZiAocnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSkKLSAgICAgICAgbWVtY3B5IChkYXRhLCBzeW5jX2J5dGVzLCBzaXplb2YgKHN5bmNfYnl0ZXMpKTsKLSAgICAgIGVsc2UKLSAgICAgICAgR1NUX1dSSVRFX1VJTlQzMl9CRSAoZGF0YSwgc3BzX3NpemUpOwotICAgICAgZ3N0X2J1ZmZlcl9leHRyYWN0IChzcHNfYnVmLCAwLCBkYXRhICsgNCwgLTEpOwotICAgICAgZGF0YSArPSA0ICsgc3BzX3NpemU7Ci0gICAgfQotCi0gICAgZm9yIChpID0gMDsgaSA8IHJ0cGgyNjVkZXBheS0+cHBzLT5sZW47IGkrKykgewotICAgICAgR3N0QnVmZmVyICpwcHNfYnVmID0gZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVkZXBheS0+cHBzLCBpKTsKLSAgICAgIGd1aW50IHBwc19zaXplID0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAocHBzX2J1Zik7Ci0KLSAgICAgIGlmIChydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtKQotICAgICAgICBtZW1jcHkgKGRhdGEsIHN5bmNfYnl0ZXMsIHNpemVvZiAoc3luY19ieXRlcykpOwotICAgICAgZWxzZQotICAgICAgICBHU1RfV1JJVEVfVUlOVDMyX0JFIChkYXRhLCBwcHNfc2l6ZSk7Ci0gICAgICBnc3RfYnVmZmVyX2V4dHJhY3QgKHBwc19idWYsIDAsIGRhdGEgKyA0LCAtMSk7Ci0gICAgICBkYXRhICs9IDQgKyBwcHNfc2l6ZTsKLSAgICB9Ci0KLSAgICBnc3RfYnVmZmVyX3VubWFwIChjb2RlY19kYXRhLCAmbWFwKTsKLSAgICBpZiAocnRwaDI2NWRlcGF5LT5jb2RlY19kYXRhKQotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAocnRwaDI2NWRlcGF5LT5jb2RlY19kYXRhKTsKLSAgICBydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEgPSBjb2RlY19kYXRhOwotICB9Ci0KLSAgaWYgKHJlcykKLSAgICBydHBoMjY1ZGVwYXktPm5ld19jb2RlY19kYXRhID0gRkFMU0U7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9ydHBfaDI2NV9hZGRfdnBzX3Nwc19wcHMgKEdzdEVsZW1lbnQgKiBydHBoMjY1LCBHUHRyQXJyYXkgKiB2cHNfYXJyYXksCi0gICAgR1B0ckFycmF5ICogc3BzX2FycmF5LCBHUHRyQXJyYXkgKiBwcHNfYXJyYXksIEdzdEJ1ZmZlciAqIG5hbCkKLXsKLSAgR3N0TWFwSW5mbyBtYXA7Ci0gIGd1Y2hhciB0eXBlOwotICBndWludCBpOwotCi0gIGdzdF9idWZmZXJfbWFwIChuYWwsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0KLSAgdHlwZSA9IChtYXAuZGF0YVswXSA+PiAxKSAmIDB4M2Y7Ci0KLSAgaWYgKHR5cGUgPT0gR1NUX0gyNjVfVlBTX05VVCkgewotICAgIGd1aW50MzIgdnBzX2lkID0gKG1hcC5kYXRhWzJdID4+IDQpICYgMHgwZjsKLQotICAgIGZvciAoaSA9IDA7IGkgPCB2cHNfYXJyYXktPmxlbjsgaSsrKSB7Ci0gICAgICBHc3RCdWZmZXIgKnZwcyA9IGdfcHRyX2FycmF5X2luZGV4ICh2cHNfYXJyYXksIGkpOwotICAgICAgR3N0TWFwSW5mbyB2cHNtYXA7Ci0gICAgICBndWludDMyIHRtcF92cHNfaWQ7Ci0KLSAgICAgIGdzdF9idWZmZXJfbWFwICh2cHMsICZ2cHNtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgICB0bXBfdnBzX2lkID0gKHZwc21hcC5kYXRhWzJdID4+IDQpICYgMHgwZjsKLQotICAgICAgaWYgKHZwc19pZCA9PSB0bXBfdnBzX2lkKSB7Ci0gICAgICAgIGlmIChtYXAuc2l6ZSA9PSB2cHNtYXAuc2l6ZSAmJgotICAgICAgICAgICAgbWVtY21wIChtYXAuZGF0YSwgdnBzbWFwLmRhdGEsIHZwc21hcC5zaXplKSA9PSAwKSB7Ci0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjUsICJVbmNoYW5nZWQgVlBTICV1LCBub3QgdXBkYXRpbmciLCB2cHNfaWQpOwotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHZwcywgJnZwc21hcCk7Ci0gICAgICAgICAgZ290byBkcm9wOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKHZwcywgJnZwc21hcCk7Ci0gICAgICAgICAgZ19wdHJfYXJyYXlfcmVtb3ZlX2luZGV4X2Zhc3QgKHZwc19hcnJheSwgaSk7Ci0gICAgICAgICAgZ19wdHJfYXJyYXlfYWRkICh2cHNfYXJyYXksIG5hbCk7Ci0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjUsICJNb2RpZmllZCBWUFMgJXUsIHJlcGxhY2luZyIsIHZwc19pZCk7Ci0gICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBnc3RfYnVmZmVyX3VubWFwICh2cHMsICZ2cHNtYXApOwotICAgIH0KLSAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NSwgIkFkZGluZyBuZXcgVlBTICV1IiwgdnBzX2lkKTsKLSAgICBnX3B0cl9hcnJheV9hZGQgKHZwc19hcnJheSwgbmFsKTsKLSAgfSBlbHNlIGlmICh0eXBlID09IEdTVF9IMjY1X1NQU19OVVQpIHsKLSAgICBndWludDMyIHNwc19pZDsKLQotICAgIGlmICghcGFyc2Vfc3BzICgmbWFwLCAmc3BzX2lkKSkgewotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChydHBoMjY1LCAiSW52YWxpZCBTUFMsIgotICAgICAgICAgICIgY2FuJ3QgcGFyc2Ugc2VxX3BhcmFtZXRlcl9zZXRfaWQiKTsKLSAgICAgIGdvdG8gZHJvcDsKLSAgICB9Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgc3BzX2FycmF5LT5sZW47IGkrKykgewotICAgICAgR3N0QnVmZmVyICpzcHMgPSBnX3B0cl9hcnJheV9pbmRleCAoc3BzX2FycmF5LCBpKTsKLSAgICAgIEdzdE1hcEluZm8gc3BzbWFwOwotICAgICAgZ3VpbnQzMiB0bXBfc3BzX2lkOwotCi0gICAgICBnc3RfYnVmZmVyX21hcCAoc3BzLCAmc3BzbWFwLCBHU1RfTUFQX1JFQUQpOwotICAgICAgcGFyc2Vfc3BzICgmc3BzbWFwLCAmdG1wX3Nwc19pZCk7Ci0KLSAgICAgIGlmIChzcHNfaWQgPT0gdG1wX3Nwc19pZCkgewotICAgICAgICBpZiAobWFwLnNpemUgPT0gc3BzbWFwLnNpemUgJiYKLSAgICAgICAgICAgIG1lbWNtcCAobWFwLmRhdGEsIHNwc21hcC5kYXRhLCBzcHNtYXAuc2l6ZSkgPT0gMCkgewotICAgICAgICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1LCAiVW5jaGFuZ2VkIFNQUyAldSwgbm90IHVwZGF0aW5nIiwgc3BzX2lkKTsKLSAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChzcHMsICZzcHNtYXApOwotICAgICAgICAgIGdvdG8gZHJvcDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChzcHMsICZzcHNtYXApOwotICAgICAgICAgIGdfcHRyX2FycmF5X3JlbW92ZV9pbmRleF9mYXN0IChzcHNfYXJyYXksIGkpOwotICAgICAgICAgIGdfcHRyX2FycmF5X2FkZCAoc3BzX2FycmF5LCBuYWwpOwotICAgICAgICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1LCAiTW9kaWZpZWQgU1BTICV1LCByZXBsYWNpbmciLCBzcHNfaWQpOwotICAgICAgICAgIGdvdG8gZG9uZTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoc3BzLCAmc3BzbWFwKTsKLSAgICB9Ci0gICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjUsICJBZGRpbmcgbmV3IFNQUyAldSIsIHNwc19pZCk7Ci0gICAgZ19wdHJfYXJyYXlfYWRkIChzcHNfYXJyYXksIG5hbCk7Ci0gIH0gZWxzZSBpZiAodHlwZSA9PSBHU1RfSDI2NV9QUFNfTlVUKSB7Ci0gICAgZ3VpbnQzMiBzcHNfaWQ7Ci0gICAgZ3VpbnQzMiBwcHNfaWQ7Ci0KLSAgICBpZiAoIXBhcnNlX3BwcyAoJm1hcCwgJnNwc19pZCwgJnBwc19pZCkpIHsKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAocnRwaDI2NSwgIkludmFsaWQgUFBTLCIKLSAgICAgICAgICAiIGNhbid0IHBhcnNlIHNlcV9wYXJhbWV0ZXJfc2V0X2lkIG9yIHBpY19wYXJhbWV0ZXJfc2V0X2lkIik7Ci0gICAgICBnb3RvIGRyb3A7Ci0gICAgfQotCi0gICAgZm9yIChpID0gMDsgaSA8IHBwc19hcnJheS0+bGVuOyBpKyspIHsKLSAgICAgIEdzdEJ1ZmZlciAqcHBzID0gZ19wdHJfYXJyYXlfaW5kZXggKHBwc19hcnJheSwgaSk7Ci0gICAgICBHc3RNYXBJbmZvIHBwc21hcDsKLSAgICAgIGd1aW50MzIgdG1wX3Nwc19pZDsKLSAgICAgIGd1aW50MzIgdG1wX3Bwc19pZDsKLQotCi0gICAgICBnc3RfYnVmZmVyX21hcCAocHBzLCAmcHBzbWFwLCBHU1RfTUFQX1JFQUQpOwotICAgICAgcGFyc2VfcHBzICgmcHBzbWFwLCAmdG1wX3Nwc19pZCwgJnRtcF9wcHNfaWQpOwotCi0gICAgICBpZiAocHBzX2lkID09IHRtcF9wcHNfaWQpIHsKLSAgICAgICAgaWYgKG1hcC5zaXplID09IHBwc21hcC5zaXplICYmCi0gICAgICAgICAgICBtZW1jbXAgKG1hcC5kYXRhLCBwcHNtYXAuZGF0YSwgcHBzbWFwLnNpemUpID09IDApIHsKLSAgICAgICAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NSwgIlVuY2hhbmdlZCBQUFMgJXU6JXUsIG5vdCB1cGRhdGluZyIsIHNwc19pZCwKLSAgICAgICAgICAgICAgcHBzX2lkKTsKLSAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChwcHMsICZwcHNtYXApOwotICAgICAgICAgIGdvdG8gZHJvcDsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChwcHMsICZwcHNtYXApOwotICAgICAgICAgIGdfcHRyX2FycmF5X3JlbW92ZV9pbmRleF9mYXN0IChwcHNfYXJyYXksIGkpOwotICAgICAgICAgIGdfcHRyX2FycmF5X2FkZCAocHBzX2FycmF5LCBuYWwpOwotICAgICAgICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1LCAiTW9kaWZpZWQgUFBTICV1OiV1LCByZXBsYWNpbmciLAotICAgICAgICAgICAgICBzcHNfaWQsIHBwc19pZCk7Ci0gICAgICAgICAgZ290byBkb25lOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBnc3RfYnVmZmVyX3VubWFwIChwcHMsICZwcHNtYXApOwotICAgIH0KLSAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NSwgIkFkZGluZyBuZXcgUFBTICV1OiVpIiwgc3BzX2lkLCBwcHNfaWQpOwotICAgIGdfcHRyX2FycmF5X2FkZCAocHBzX2FycmF5LCBuYWwpOwotICB9IGVsc2UgewotICAgIGdvdG8gZHJvcDsKLSAgfQotCi1kb25lOgotICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZtYXApOwotCi0gIHJldHVybiBUUlVFOwotCi1kcm9wOgotICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZtYXApOwotICBnc3RfYnVmZmVyX3VucmVmIChuYWwpOwotCi0gIHJldHVybiBGQUxTRTsKLX0KLQotCi1zdGF0aWMgdm9pZAotZ3N0X3J0cF9oMjY1X2RlcGF5X2FkZF92cHNfc3BzX3BwcyAoR3N0UnRwSDI2NURlcGF5ICogcnRwaDI2NWRlcGF5LAotICAgIEdzdEJ1ZmZlciAqIG5hbCkKLXsKLSAgaWYgKGdzdF9ydHBfaDI2NV9hZGRfdnBzX3Nwc19wcHMgKEdTVF9FTEVNRU5UIChydHBoMjY1ZGVwYXkpLAotICAgICAgICAgIHJ0cGgyNjVkZXBheS0+dnBzLCBydHBoMjY1ZGVwYXktPnNwcywgcnRwaDI2NWRlcGF5LT5wcHMsIG5hbCkpCi0gICAgcnRwaDI2NWRlcGF5LT5uZXdfY29kZWNfZGF0YSA9IFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3J0cF9oMjY1X2RlcGF5X3NldGNhcHMgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheWxvYWQsIEdzdENhcHMgKiBjYXBzKQotewotICBnaW50IGNsb2NrX3JhdGU7Ci0gIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0gIEdzdFJ0cEgyNjVEZXBheSAqcnRwaDI2NWRlcGF5OwotICBjb25zdCBnY2hhciAqcHM7Ci0gIEdzdEJ1ZmZlciAqY29kZWNfZGF0YTsKLSAgR3N0TWFwSW5mbyBtYXA7Ci0gIGd1aW50OCAqcHRyOwotCi0gIHJ0cGgyNjVkZXBheSA9IEdTVF9SVFBfSDI2NV9ERVBBWSAoZGVwYXlsb2FkKTsKLQotICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiY2xvY2stcmF0ZSIsICZjbG9ja19yYXRlKSkKLSAgICBjbG9ja19yYXRlID0gOTAwMDA7Ci0gIGRlcGF5bG9hZC0+Y2xvY2tfcmF0ZSA9IGNsb2NrX3JhdGU7Ci0KLSAgLyogQmFzZTY0IGVuY29kZWQsIGNvbW1hIHNlcGFyYXRlZCBjb25maWcgTkFMcyAqLwotICBwcyA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RydWN0dXJlLCAic3Byb3AtcGFyYW1ldGVyLXNldHMiKTsKLQotICAvKiBuZWdvdGlhdGUgd2l0aCBkb3duc3RyZWFtIHcuci50LiBvdXRwdXQgZm9ybWF0IGFuZCBhbGlnbm1lbnQgKi8KLSAgZ3N0X3J0cF9oMjY1X2RlcGF5X25lZ290aWF0ZSAocnRwaDI2NWRlcGF5KTsKLQotICBpZiAocnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSAmJiBwcyAhPSBOVUxMKSB7Ci0gICAgLyogZm9yIGJ5dGVzdHJlYW0gd2Ugb25seSBuZWVkIHRoZSBwYXJhbWV0ZXIgc2V0cyBidXQgd2UgZG9uJ3QgZXJyb3Igb3V0Ci0gICAgICogd2hlbiB0aGV5IGFyZSBub3QgdGhlcmUsIHdlIGFzc3VtZSB0aGV5IGFyZSBpbiB0aGUgc3RyZWFtLiAqLwotICAgIGdjaGFyICoqcGFyYW1zOwotICAgIGd1aW50IGxlbiwgdG90YWw7Ci0gICAgZ2ludCBpOwotCi0gICAgcGFyYW1zID0gZ19zdHJzcGxpdCAocHMsICIsIiwgMCk7Ci0KLSAgICAvKiBjb3VudCB0b3RhbCBudW1iZXIgb2YgYnl0ZXMgaW4gYmFzZTY0LiBBbHNvIGluY2x1ZGUgdGhlIHN5bmMgYnl0ZXMgaW4KLSAgICAgKiBmcm9udCBvZiB0aGUgcGFyYW1zLiAqLwotICAgIGxlbiA9IDA7Ci0gICAgZm9yIChpID0gMDsgcGFyYW1zW2ldOyBpKyspIHsKLSAgICAgIGxlbiArPSBzdHJsZW4gKHBhcmFtc1tpXSk7Ci0gICAgICBsZW4gKz0gc2l6ZW9mIChzeW5jX2J5dGVzKTsKLSAgICB9Ci0gICAgLyogd2Ugc2VyaW91c2x5IG92ZXJzaG9vdCB0aGUgbGVuZ3RoLCBidXQgaXQncyBmaW5lLiAqLwotICAgIGNvZGVjX2RhdGEgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGxlbik7Ci0KLSAgICBnc3RfYnVmZmVyX21hcCAoY29kZWNfZGF0YSwgJm1hcCwgR1NUX01BUF9XUklURSk7Ci0gICAgcHRyID0gbWFwLmRhdGE7Ci0gICAgdG90YWwgPSAwOwotICAgIGZvciAoaSA9IDA7IHBhcmFtc1tpXTsgaSsrKSB7Ci0gICAgICBndWludCBzYXZlID0gMDsKLSAgICAgIGdpbnQgc3RhdGUgPSAwOwotCi0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheWxvYWQsICJkZWNvZGluZyBwYXJhbSAlZCAoJXMpIiwgaSwgcGFyYW1zW2ldKTsKLSAgICAgIG1lbWNweSAocHRyLCBzeW5jX2J5dGVzLCBzaXplb2YgKHN5bmNfYnl0ZXMpKTsKLSAgICAgIHB0ciArPSBzaXplb2YgKHN5bmNfYnl0ZXMpOwotICAgICAgbGVuID0KLSAgICAgICAgICBnX2Jhc2U2NF9kZWNvZGVfc3RlcCAocGFyYW1zW2ldLCBzdHJsZW4gKHBhcmFtc1tpXSksIHB0ciwgJnN0YXRlLAotICAgICAgICAgICZzYXZlKTsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5bG9hZCwgImRlY29kZWQgJWQgYnl0ZXMiLCBsZW4pOwotICAgICAgdG90YWwgKz0gbGVuICsgc2l6ZW9mIChzeW5jX2J5dGVzKTsKLSAgICAgIHB0ciArPSBsZW47Ci0gICAgfQotICAgIGdzdF9idWZmZXJfdW5tYXAgKGNvZGVjX2RhdGEsICZtYXApOwotICAgIGdzdF9idWZmZXJfcmVzaXplIChjb2RlY19kYXRhLCAwLCB0b3RhbCk7Ci0gICAgZ19zdHJmcmVldiAocGFyYW1zKTsKLQotICAgIC8qIGtlZXAgdGhlIGNvZGVjX2RhdGEsIHdlIG5lZWQgdG8gc2VuZCBpdCBhcyB0aGUgZmlyc3QgYnVmZmVyLiBXZSBjYW5ub3QKLSAgICAgKiBwdXNoIGl0IGluIHRoZSBhZGFwdGVyIGJlY2F1c2UgdGhlIGFkYXB0ZXIgbWlnaHQgYmUgZmx1c2hlZCBvbiBkaXNjb250LgotICAgICAqLwotICAgIGlmIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEpCi0gICAgICBnc3RfYnVmZmVyX3VucmVmIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEpOwotICAgIHJ0cGgyNjVkZXBheS0+Y29kZWNfZGF0YSA9IGNvZGVjX2RhdGE7Ci0gIH0gZWxzZSBpZiAoIXJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0pIHsKLSAgICBnY2hhciAqKnBhcmFtczsKLSAgICBnaW50IGk7Ci0KLSAgICBpZiAocHMgPT0gTlVMTCkKLSAgICAgIGdvdG8gaW5jb21wbGV0ZV9jYXBzOwotCi0gICAgcGFyYW1zID0gZ19zdHJzcGxpdCAocHMsICIsIiwgMCk7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheWxvYWQsICJ3ZSBoYXZlICVkIHBhcmFtcyIsIGdfc3Rydl9sZW5ndGggKHBhcmFtcykpOwotCi0gICAgLyogc3RhcnQgd2l0aCAyMyBieXRlcyBoZWFkZXIgKi8KLSAgICBmb3IgKGkgPSAwOyBwYXJhbXNbaV07IGkrKykgewotICAgICAgR3N0QnVmZmVyICpuYWw7Ci0gICAgICBHc3RNYXBJbmZvIG5hbG1hcDsKLSAgICAgIGdzaXplIG5hbF9sZW47Ci0gICAgICBndWludCBzYXZlID0gMDsKLSAgICAgIGdpbnQgc3RhdGUgPSAwOwotCi0gICAgICBuYWxfbGVuID0gc3RybGVuIChwYXJhbXNbaV0pOwotICAgICAgbmFsID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChuYWxfbGVuKTsKLSAgICAgIGdzdF9idWZmZXJfbWFwIChuYWwsICZuYWxtYXAsIEdTVF9NQVBfUkVBRFdSSVRFKTsKLQotICAgICAgbmFsX2xlbiA9Ci0gICAgICAgICAgZ19iYXNlNjRfZGVjb2RlX3N0ZXAgKHBhcmFtc1tpXSwgbmFsX2xlbiwgbmFsbWFwLmRhdGEsICZzdGF0ZSwgJnNhdmUpOwotCi0gICAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheWxvYWQsICJhZGRpbmcgcGFyYW0gJWQgYXMgJXMiLCBpLAotICAgICAgICAgICgoKG5hbG1hcC5kYXRhWzBdID4+IDEpICYgMHgzZikgPT0KLSAgICAgICAgICAgICAgMzIpID8gIlZQUyIgOiAoKChuYWxtYXAuZGF0YVswXSA+PiAxKSAmIDB4M2YpID09Ci0gICAgICAgICAgICAgIDMzKSA/ICJTUFMiIDogIlBQUyIpOwotCi0gICAgICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZuYWxtYXApOwotICAgICAgZ3N0X2J1ZmZlcl9zZXRfc2l6ZSAobmFsLCBuYWxfbGVuKTsKLQotICAgICAgZ3N0X3J0cF9oMjY1X2RlcGF5X2FkZF92cHNfc3BzX3BwcyAocnRwaDI2NWRlcGF5LCBuYWwpOwotICAgIH0KLSAgICBnX3N0cmZyZWV2IChwYXJhbXMpOwotCi0gICAgaWYgKHJ0cGgyNjVkZXBheS0+c3BzLT5sZW4gPT0gMCB8fCBydHBoMjY1ZGVwYXktPnBwcy0+bGVuID09IDApCi0gICAgICBnb3RvIGluY29tcGxldGVfY2FwczsKLSAgfQotCi0gIHJldHVybiBnc3RfcnRwX2gyNjVfc2V0X3NyY19jYXBzIChydHBoMjY1ZGVwYXkpOwotCi0gIC8qIEVSUk9SUyAqLwotaW5jb21wbGV0ZV9jYXBzOgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXlsb2FkLCAid2UgaGF2ZSBpbmNvbXBsZXRlIGNhcHMsIgotICAgICAgICAiIGRvaW5nIHNldGNhcHMgbGF0ZXIiKTsKLSAgICByZXR1cm4gVFJVRTsKLSAgfQotfQotCi1zdGF0aWMgR3N0QnVmZmVyICoKLWdzdF9ydHBfaDI2NV9jb21wbGV0ZV9hdSAoR3N0UnRwSDI2NURlcGF5ICogcnRwaDI2NWRlcGF5LAotICAgIEdzdENsb2NrVGltZSAqIG91dF90aW1lc3RhbXAsIGdib29sZWFuICogb3V0X2tleWZyYW1lKQotewotICBndWludCBvdXRzaXplOwotICBHc3RCdWZmZXIgKm91dGJ1ZjsKLQotICAvKiB3ZSBoYWQgYSBwaWN0dXJlIGluIHRoZSBhZGFwdGVyIGFuZCB3ZSBjb21wbGV0ZWQgaXQgKi8KLSAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAidGFraW5nIGNvbXBsZXRlZCBBVSIpOwotICBvdXRzaXplID0gZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChydHBoMjY1ZGVwYXktPnBpY3R1cmVfYWRhcHRlcik7Ci0gIG91dGJ1ZiA9IGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyIChydHBoMjY1ZGVwYXktPnBpY3R1cmVfYWRhcHRlciwgb3V0c2l6ZSk7Ci0KLSAgKm91dF90aW1lc3RhbXAgPSBydHBoMjY1ZGVwYXktPmxhc3RfdHM7Ci0gICpvdXRfa2V5ZnJhbWUgPSBydHBoMjY1ZGVwYXktPmxhc3Rfa2V5ZnJhbWU7Ci0KLSAgcnRwaDI2NWRlcGF5LT5sYXN0X2tleWZyYW1lID0gRkFMU0U7Ci0gIHJ0cGgyNjVkZXBheS0+cGljdHVyZV9zdGFydCA9IEZBTFNFOwotCi0gIHJldHVybiBvdXRidWY7Ci19Ci0KLS8qIFZQUy9TUFMvUFBTL1JBREwvVFNBL1JBU0wvSURSL0NSQSBpcyBjb25zaWRlcmVkIGtleSwgYWxsIG90aGVycyBERUxUQTsKLSAqIHNvIGRvd25zdHJlYW0gd2FpdGluZyBmb3Iga2V5ZnJhbWUgY2FuIHBpY2sgdXAgYXQgVlBTL1NQUy9QUFMvSURSICovCi0KLSNkZWZpbmUgTkFMX1RZUEVfSVNfUEFSQU1FVEVSX1NFVChudCkgKAkJKChudCkgPT0gR1NUX0gyNjVfVlBTX05VVClcCi0JCQkJCQkJCQkJfHwgICgobnQpID09IEdTVF9IMjY1X1NQU19OVVQpXAotCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9QUFNfTlVUKQkJCQkpCi0KLSNkZWZpbmUgTkFMX1RZUEVfSVNfQ09ERURfU0xJQ0VfU0VHTUVOVChudCkgKAkJKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1RSQUlMX04pXAotCQkJCQkJCQkJCQkJfHwgCSgobnQpID09IEdTVF9IMjY1X05BTF9TTElDRV9UUkFJTF9SKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfVFNBX04pXAotCQkJCQkJCQkJCQkJfHwgICgobnQpID09IEdTVF9IMjY1X05BTF9TTElDRV9UU0FfUilcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1NUU0FfTilcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1NUU0FfUilcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1JBU0xfTilcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1JBU0xfUilcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX0JMQV9XX0xQKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfQkxBX1dfUkFETClcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX0JMQV9OX0xQKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfSURSX1dfUkFETClcCi0JCQkJCQkJCQkJCQl8fCAgKChudCkgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX0lEUl9OX0xQKVwKLQkJCQkJCQkJCQkJCXx8ICAoKG50KSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfQ1JBX05VVCkJCSkKLQotI2RlZmluZSBOQUxfVFlQRV9JU19LRVkobnQpIChOQUxfVFlQRV9JU19QQVJBTUVURVJfU0VUKG50KSB8fCBOQUxfVFlQRV9JU19DT0RFRF9TTElDRV9TRUdNRU5UKG50KSkKLQotc3RhdGljIGdib29sZWFuCi1mb3JlYWNoX21ldGFkYXRhX2NvcHkgKEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RNZXRhICoqIG1ldGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgQ29weU1ldGFEYXRhICpkYXRhID0gdXNlcl9kYXRhOwotICBHc3RFbGVtZW50ICplbGVtZW50ID0gZGF0YS0+ZWxlbWVudDsKLSAgR3N0QnVmZmVyICpvdXRidWYgPSBkYXRhLT5vdXRidWY7Ci0gIGNvbnN0IEdzdE1ldGFJbmZvICppbmZvID0gKCptZXRhKS0+aW5mbzsKLSAgY29uc3QgZ2NoYXIgKmNvbnN0ICp0YWdzID0gZ3N0X21ldGFfYXBpX3R5cGVfZ2V0X3RhZ3MgKGluZm8tPmFwaSk7Ci0KLSAgaWYgKCF0YWdzIHx8IChnX3N0cnZfbGVuZ3RoICgoZ2NoYXIgKiopIHRhZ3MpID09IDEKLSAgICAgICAgICAmJiBnc3RfbWV0YV9hcGlfdHlwZV9oYXNfdGFnIChpbmZvLT5hcGksCi0gICAgICAgICAgICAgIGdfcXVhcmtfZnJvbV9zdHJpbmcgKEdTVF9NRVRBX1RBR19WSURFT19TVFIpKSkpIHsKLSAgICBHc3RNZXRhVHJhbnNmb3JtQ29weSBjb3B5X2RhdGEgPSB7IEZBTFNFLCAwLCAtMSB9OwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJjb3B5IG1ldGFkYXRhICVzIiwgZ190eXBlX25hbWUgKGluZm8tPmFwaSkpOwotICAgIC8qIHNpbXBseSBjb3B5IHRoZW4gKi8KLSAgICBpbmZvLT50cmFuc2Zvcm1fZnVuYyAob3V0YnVmLCAqbWV0YSwgaW5idWYsCi0gICAgICAgIF9nc3RfbWV0YV90cmFuc2Zvcm1fY29weSwgJmNvcHlfZGF0YSk7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgIm5vdCBjb3B5aW5nIG1ldGFkYXRhICVzIiwKLSAgICAgICAgZ190eXBlX25hbWUgKGluZm8tPmFwaSkpOwotICB9Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qIFRPRE86IFNob3VsZCBwcm9iYWJseSBtYWtlIGNvcHlfdGFnIGFuIGFycmF5IGF0IHNvbWUgcG9pbnQgKi8KLXZvaWQKLWdzdF9ydHBfY29weV9tZXRhIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0QnVmZmVyICogb3V0YnVmLCBHc3RCdWZmZXIgKiBpbmJ1ZiwKLSAgICBHUXVhcmsgY29weV90YWcpCi17Ci0gIENvcHlNZXRhRGF0YSBkYXRhID0geyBlbGVtZW50LCBvdXRidWYsIGNvcHlfdGFnIH07Ci0KLSAgZ3N0X2J1ZmZlcl9mb3JlYWNoX21ldGEgKGluYnVmLCBmb3JlYWNoX21ldGFkYXRhX2NvcHksICZkYXRhKTsKLX0KLQotc3RhdGljIGdib29sZWFuCi1mb3JlYWNoX21ldGFkYXRhX2Ryb3AgKEdzdEJ1ZmZlciAqIGluYnVmLCBHc3RNZXRhICoqIG1ldGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKLXsKLSAgR3N0UnRwSDI2NURlcGF5ICpkZXBheSA9IHVzZXJfZGF0YTsKLSAgY29uc3QgR3N0TWV0YUluZm8gKmluZm8gPSAoKm1ldGEpLT5pbmZvOwotICBjb25zdCBnY2hhciAqY29uc3QgKnRhZ3MgPSBnc3RfbWV0YV9hcGlfdHlwZV9nZXRfdGFncyAoaW5mby0+YXBpKTsKLQotICBpZiAoIXRhZ3MgfHwgKGdfc3Rydl9sZW5ndGggKChnY2hhciAqKikgdGFncykgPT0gMQotICAgICAgICAgICYmIGdzdF9tZXRhX2FwaV90eXBlX2hhc190YWcgKGluZm8tPmFwaSwKLSAgICAgICAgICAgICAgZ19xdWFya19mcm9tX3N0cmluZyAoR1NUX01FVEFfVEFHX1ZJREVPX1NUUikpKSkgewotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5LCAia2VlcGluZyBtZXRhZGF0YSAlcyIsIGdfdHlwZV9uYW1lIChpbmZvLT5hcGkpKTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChkZXBheSwgImRyb3BwaW5nIG1ldGFkYXRhICVzIiwgZ190eXBlX25hbWUgKGluZm8tPmFwaSkpOwotICAgICptZXRhID0gTlVMTDsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotfQotCi1zdGF0aWMgR3N0QnVmZmVyICoKLWdzdF9ydHBfaDI2NV9kZXBheV9oYW5kbGVfbmFsIChHc3RSdHBIMjY1RGVwYXkgKiBydHBoMjY1ZGVwYXksIEdzdEJ1ZmZlciAqIG5hbCwKLSAgICBHc3RDbG9ja1RpbWUgaW5fdGltZXN0YW1wLCBnYm9vbGVhbiBtYXJrZXIpCi17Ci0gIEdzdFJUUEJhc2VEZXBheWxvYWQgKmRlcGF5bG9hZCA9IEdTVF9SVFBfQkFTRV9ERVBBWUxPQUQgKHJ0cGgyNjVkZXBheSk7Ci0gIGdpbnQgbmFsX3R5cGU7Ci0gIEdzdE1hcEluZm8gbWFwOwotICBHc3RCdWZmZXIgKm91dGJ1ZiA9IE5VTEw7Ci0gIEdzdENsb2NrVGltZSBvdXRfdGltZXN0YW1wOwotICBnYm9vbGVhbiBrZXlmcmFtZSwgb3V0X2tleWZyYW1lOwotCi0gIGdzdF9idWZmZXJfbWFwIChuYWwsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gIGlmIChHX1VOTElLRUxZIChtYXAuc2l6ZSA8IDUpKQotICAgIGdvdG8gc2hvcnRfbmFsOwotCi0gIG5hbF90eXBlID0gKG1hcC5kYXRhWzRdID4+IDEpICYgMHgzZjsKLSAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiaGFuZGxlIE5BTCB0eXBlICVkIChSVFAgbWFya2VyIGJpdCAlZCkiLAotICAgICAgbmFsX3R5cGUsIG1hcmtlcik7Ci0KLSAga2V5ZnJhbWUgPSBOQUxfVFlQRV9JU19LRVkgKG5hbF90eXBlKTsKLQotICBvdXRfa2V5ZnJhbWUgPSBrZXlmcmFtZTsKLSAgb3V0X3RpbWVzdGFtcCA9IGluX3RpbWVzdGFtcDsKLQotICBpZiAoIXJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0pIHsKLSAgICBpZiAoTkFMX1RZUEVfSVNfUEFSQU1FVEVSX1NFVCAobmFsX3R5cGUpKSB7Ci0gICAgICBnc3RfcnRwX2gyNjVfZGVwYXlfYWRkX3Zwc19zcHNfcHBzIChydHBoMjY1ZGVwYXksCi0gICAgICAgICAgZ3N0X2J1ZmZlcl9jb3B5X3JlZ2lvbiAobmFsLCBHU1RfQlVGRkVSX0NPUFlfQUxMLAotICAgICAgICAgICAgICA0LCBnc3RfYnVmZmVyX2dldF9zaXplIChuYWwpIC0gNCkpOwotICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAobmFsLCAmbWFwKTsKLSAgICAgIGdzdF9idWZmZXJfdW5yZWYgKG5hbCk7Ci0gICAgICByZXR1cm4gTlVMTDsKLSAgICB9IGVsc2UgaWYgKHJ0cGgyNjVkZXBheS0+c3BzLT5sZW4gPT0gMCB8fCBydHBoMjY1ZGVwYXktPnBwcy0+bGVuID09IDApIHsKLSAgICAgIC8qIERvd24gcHVzaCBkb3duIGFueSBidWZmZXIgaW4gbm9uLWJ5dGVzdHJlYW0gbW9kZSBpZiB0aGUgU1BTL1BQUyBoYXZlbid0Ci0gICAgICAgKiBnbyB0aHJvdWdoIHlldAotICAgICAgICovCi0gICAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9SVFBfQkFTRV9ERVBBWUxPQURfU0lOS1BBRCAoZGVwYXlsb2FkKSwKLSAgICAgICAgICBnc3RfZXZlbnRfbmV3X2N1c3RvbSAoR1NUX0VWRU5UX0NVU1RPTV9VUFNUUkVBTSwKLSAgICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcgKCJHc3RGb3JjZUtleVVuaXQiLAotICAgICAgICAgICAgICAgICAgImFsbC1oZWFkZXJzIiwgR19UWVBFX0JPT0xFQU4sIFRSVUUsIE5VTEwpKSk7Ci0gICAgICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZtYXApOwotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAobmFsKTsKLSAgICAgIHJldHVybiBOVUxMOwotICAgIH0KLQotICAgIGlmIChydHBoMjY1ZGVwYXktPm5ld19jb2RlY19kYXRhICYmCi0gICAgICAgIHJ0cGgyNjVkZXBheS0+c3BzLT5sZW4gPiAwICYmIHJ0cGgyNjVkZXBheS0+cHBzLT5sZW4gPiAwKQotICAgICAgZ3N0X3J0cF9oMjY1X3NldF9zcmNfY2FwcyAocnRwaDI2NWRlcGF5KTsKLSAgfQotCi0gIGlmIChydHBoMjY1ZGVwYXktPm1lcmdlKSB7Ci0gICAgZ2Jvb2xlYW4gc3RhcnQgPSBGQUxTRSwgY29tcGxldGUgPSBGQUxTRTsKLQotICAgIC8qIG1hcmtlciBiaXQgaXNuJ3QgbWFuZGF0b3J5IHNvIGluIHRoZSBmb2xsb3dpbmcgY29kZSB3ZSB0cnkgdG8gZGV0ZWN0Ci0gICAgICogYW4gQVUgYm91bmRhcnkgKHNlZSBILjI2NSBzcGVjIHNlY3Rpb24gNy40LjIuNC40KSAqLwotICAgIGlmICghbWFya2VyKSB7Ci0KLSAgICAgIGlmIChOQUxfVFlQRV9JU19DT0RFRF9TTElDRV9TRUdNRU5UIChuYWxfdHlwZSkpIHsKLSAgICAgICAgLyogQSBOQUwgdW5pdCAoWCkgZW5kcyBhbiBhY2Nlc3MgdW5pdCBpZiB0aGUgbmV4dC1vY2N1cnJpbmcgVkNMIE5BTCB1bml0IChZKSBoYXMgdGhlIGhpZ2gtb3JkZXIgYml0IG9mIHRoZSBmaXJzdCBieXRlIGFmdGVyIGl0cyBOQUwgdW5pdCBoZWFkZXIgZXF1YWwgdG8gMSAqLwotICAgICAgICBzdGFydCA9IFRSVUU7Ci0gICAgICAgIGlmICgoKG1hcC5kYXRhWzZdID4+IDcpICYgMHgwMSkgPT0gMSkgewotICAgICAgICAgIGNvbXBsZXRlID0gVFJVRTsKLSAgICAgICAgfQotICAgICAgICBjb21wbGV0ZSA9IFRSVUU7Ci0gICAgICB9IGVsc2UgaWYgKChuYWxfdHlwZSA+PSAzMiAmJiBuYWxfdHlwZSA8PSAzNSkKLSAgICAgICAgICB8fCBuYWxfdHlwZSA9PSAzOSB8fCAobmFsX3R5cGUgPj0gNDEgJiYgbmFsX3R5cGUgPD0gNDQpCi0gICAgICAgICAgfHwgKG5hbF90eXBlID49IDQ4ICYmIG5hbF90eXBlIDw9IDU1KSkgewotICAgICAgICAvKiBWUFMsIFNQUywgUFBTLCBTRUksIC4uLiB0ZXJtaW5hdGUgYW4gYWNjZXNzIHVuaXQgKi8KLSAgICAgICAgY29tcGxldGUgPSBUUlVFOwotICAgICAgfQotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXlsb2FkLCAic3RhcnQgJWQsIGNvbXBsZXRlICVkIiwgc3RhcnQsIGNvbXBsZXRlKTsKLQotICAgICAgaWYgKGNvbXBsZXRlICYmIHJ0cGgyNjVkZXBheS0+cGljdHVyZV9zdGFydCkKLSAgICAgICAgb3V0YnVmID0gZ3N0X3J0cF9oMjY1X2NvbXBsZXRlX2F1IChydHBoMjY1ZGVwYXksICZvdXRfdGltZXN0YW1wLAotICAgICAgICAgICAgJm91dF9rZXlmcmFtZSk7Ci0gICAgfQotICAgIC8qIGFkZCB0byBhZGFwdGVyICovCi0gICAgZ3N0X2J1ZmZlcl91bm1hcCAobmFsLCAmbWFwKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5bG9hZCwgImFkZGluZyBOQUwgdG8gcGljdHVyZSBhZGFwdGVyIik7Ci0gICAgZ3N0X2FkYXB0ZXJfcHVzaCAocnRwaDI2NWRlcGF5LT5waWN0dXJlX2FkYXB0ZXIsIG5hbCk7Ci0gICAgcnRwaDI2NWRlcGF5LT5sYXN0X3RzID0gaW5fdGltZXN0YW1wOwotICAgIHJ0cGgyNjVkZXBheS0+bGFzdF9rZXlmcmFtZSB8PSBrZXlmcmFtZTsKLSAgICBydHBoMjY1ZGVwYXktPnBpY3R1cmVfc3RhcnQgfD0gc3RhcnQ7Ci0KLSAgICBpZiAobWFya2VyKQotICAgICAgb3V0YnVmID0gZ3N0X3J0cF9oMjY1X2NvbXBsZXRlX2F1IChydHBoMjY1ZGVwYXksICZvdXRfdGltZXN0YW1wLAotICAgICAgICAgICZvdXRfa2V5ZnJhbWUpOwotICB9IGVsc2UgewotICAgIC8qIG5vIG1lcmdlLCBvdXRwdXQgaXMgaW5wdXQgbmFsICovCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoZGVwYXlsb2FkLCAidXNpbmcgTkFMIGFzIG91dHB1dCIpOwotICAgIG91dGJ1ZiA9IG5hbDsKLSAgICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZtYXApOwotICB9Ci0KLSAgaWYgKG91dGJ1ZikgewotICAgIC8qIHByZXBlbmQgY29kZWNfZGF0YSAqLwotICAgIGlmIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEpIHsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGRlcGF5bG9hZCwgInByZXBlbmRpbmcgY29kZWNfZGF0YSIpOwotICAgICAgZ3N0X3J0cF9jb3B5X21ldGEgKEdTVF9FTEVNRU5UX0NBU1QgKHJ0cGgyNjVkZXBheSksCi0gICAgICAgICAgcnRwaDI2NWRlcGF5LT5jb2RlY19kYXRhLCBvdXRidWYsCi0gICAgICAgICAgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKEdTVF9NRVRBX1RBR19WSURFT19TVFIpKTsKLSAgICAgIG91dGJ1ZiA9IGdzdF9idWZmZXJfYXBwZW5kIChydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEsIG91dGJ1Zik7Ci0gICAgICBydHBoMjY1ZGVwYXktPmNvZGVjX2RhdGEgPSBOVUxMOwotICAgICAgb3V0X2tleWZyYW1lID0gVFJVRTsKLSAgICB9Ci0gICAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9tYWtlX3dyaXRhYmxlIChvdXRidWYpOwotCi0gICAgZ3N0X2J1ZmZlcl9mb3JlYWNoX21ldGEgKG91dGJ1ZiwgZm9yZWFjaF9tZXRhZGF0YV9kcm9wLCBkZXBheWxvYWQpOwotCi0gICAgR1NUX0JVRkZFUl9QVFMgKG91dGJ1ZikgPSBvdXRfdGltZXN0YW1wOwotCi0gICAgaWYgKG91dF9rZXlmcmFtZSkKLSAgICAgIEdTVF9CVUZGRVJfRkxBR19VTlNFVCAob3V0YnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCk7Ci0gICAgZWxzZQotICAgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAob3V0YnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCk7Ci0gIH0KLQotICByZXR1cm4gb3V0YnVmOwotCi0gIC8qIEVSUk9SUyAqLwotc2hvcnRfbmFsOgotICB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZXBheWxvYWQsICJkcm9wcGluZyBzaG9ydCBOQUwiKTsKLSAgICBnc3RfYnVmZmVyX3VubWFwIChuYWwsICZtYXApOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKG5hbCk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotc3RhdGljIEdzdEJ1ZmZlciAqCi1nc3RfcnRwX2gyNjVfcHVzaF9mcmFnbWVudGF0aW9uX3VuaXQgKEdzdFJ0cEgyNjVEZXBheSAqIHJ0cGgyNjVkZXBheSwKLSAgICBnYm9vbGVhbiBzZW5kKQotewotICBndWludCBvdXRzaXplOwotICBHc3RNYXBJbmZvIG1hcDsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0KLSAgb3V0c2l6ZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAocnRwaDI2NWRlcGF5LT5hZGFwdGVyKTsKLSAgb3V0YnVmID0gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIgKHJ0cGgyNjVkZXBheS0+YWRhcHRlciwgb3V0c2l6ZSk7Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm1hcCwgR1NUX01BUF9XUklURSk7Ci0gIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgIm91dHB1dCAlZCBieXRlcyIsIG91dHNpemUpOwotCi0gIGlmIChydHBoMjY1ZGVwYXktPmJ5dGVfc3RyZWFtKSB7Ci0gICAgbWVtY3B5IChtYXAuZGF0YSwgc3luY19ieXRlcywgc2l6ZW9mIChzeW5jX2J5dGVzKSk7Ci0gIH0gZWxzZSB7Ci0gICAgZ290byBub3RfaW1wbGVtZW50ZWQ7Ci0gIH0KLSAgZ3N0X2J1ZmZlcl91bm1hcCAob3V0YnVmLCAmbWFwKTsKLQotICBydHBoMjY1ZGVwYXktPmN1cnJlbnRfZnVfdHlwZSA9IDA7Ci0KLSAgb3V0YnVmID0gZ3N0X3J0cF9oMjY1X2RlcGF5X2hhbmRsZV9uYWwgKHJ0cGgyNjVkZXBheSwgb3V0YnVmLAotICAgICAgcnRwaDI2NWRlcGF5LT5mdV90aW1lc3RhbXAsIHJ0cGgyNjVkZXBheS0+ZnVfbWFya2VyKTsKLQotICBpZiAoc2VuZCAmJiBvdXRidWYpIHsKLSAgICBnc3RfcnRwX2Jhc2VfZGVwYXlsb2FkX3B1c2ggKEdTVF9SVFBfQkFTRV9ERVBBWUxPQUQgKHJ0cGgyNjVkZXBheSksIG91dGJ1Zik7Ci0gICAgb3V0YnVmID0gTlVMTDsKLSAgfQotICByZXR1cm4gb3V0YnVmOwotCi1ub3RfaW1wbGVtZW50ZWQ6Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChydHBoMjY1ZGVwYXksCi0gICAgICAgICgiT25seSBieXRlc3RyZWFtIGZvcm1hdCBpcyBjdXJyZW50bHkgc3VwcG9ydGVkLiIpKTsKLSAgICBnc3RfYnVmZmVyX3VubWFwIChvdXRidWYsICZtYXApOwotICAgIHJldHVybiBOVUxMOwotICB9Ci19Ci0KLXN0YXRpYyBHc3RCdWZmZXIgKgotZ3N0X3J0cF9oMjY1X2RlcGF5X3Byb2Nlc3MgKEdzdFJUUEJhc2VEZXBheWxvYWQgKiBkZXBheWxvYWQsIEdzdFJUUEJ1ZmZlciAqIHJ0cCkKLXsKLSAgR3N0UnRwSDI2NURlcGF5ICpydHBoMjY1ZGVwYXk7Ci0gIEdzdEJ1ZmZlciAqYnVmOwotICBHc3RCdWZmZXIgKm91dGJ1ZiA9IE5VTEw7Ci0gIGd1aW50OCBuYWxfdW5pdF90eXBlOwotCi0gIHJ0cGgyNjVkZXBheSA9IEdTVF9SVFBfSDI2NV9ERVBBWSAoZGVwYXlsb2FkKTsKLQotICAvKiBmbHVzaCByZW1haW5pbmcgZGF0YSBvbiBkaXNjb250ICovCi0gIGlmIChHU1RfQlVGRkVSX0lTX0RJU0NPTlQgKHJ0cC0+YnVmZmVyKSkgewotICAgIGdzdF9hZGFwdGVyX2NsZWFyIChydHBoMjY1ZGVwYXktPmFkYXB0ZXIpOwotICAgIHJ0cGgyNjVkZXBheS0+d2FpdF9zdGFydCA9IFRSVUU7Ci0gICAgcnRwaDI2NWRlcGF5LT5jdXJyZW50X2Z1X3R5cGUgPSAwOwotICB9Ci0KLSAgewotICAgIGdpbnQgcGF5bG9hZF9sZW47Ci0gICAgZ3VpbnQ4ICpwYXlsb2FkOwotICAgIGd1aW50IGhlYWRlcl9sZW47Ci0gICAgR3N0TWFwSW5mbyBtYXA7Ci0gICAgZ3VpbnQgb3V0c2l6ZSwgbmFsdV9zaXplOwotICAgIEdzdENsb2NrVGltZSB0aW1lc3RhbXA7Ci0gICAgZ2Jvb2xlYW4gbWFya2VyOwotICAgIGd1aW50OCBudWhfbGF5ZXJfaWQsIG51aF90ZW1wb3JhbF9pZF9wbHVzMTsKLSAgICBndWludDggUywgRTsKLSAgICBndWludDE2IG5hbF9oZWFkZXI7Ci0jaWYgMAotICAgIGdib29sZWFuIGRvbmxfcHJlc2VudCA9IEZBTFNFOwotI2VuZGlmCi0KLSAgICB0aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1BUUyAocnRwLT5idWZmZXIpOwotCi0gICAgcGF5bG9hZF9sZW4gPSBnc3RfcnRwX2J1ZmZlcl9nZXRfcGF5bG9hZF9sZW4gKHJ0cCk7Ci0gICAgcGF5bG9hZCA9IGdzdF9ydHBfYnVmZmVyX2dldF9wYXlsb2FkIChydHApOwotICAgIGJ1ZiA9IGdzdF9ydHBfYnVmZmVyX2dldF9wYXlsb2FkX2J1ZmZlciAocnRwKTsKLSAgICBtYXJrZXIgPSBnc3RfcnRwX2J1ZmZlcl9nZXRfbWFya2VyIChydHApOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAicmVjZWl2aW5nICVkIGJ5dGVzIiwgcGF5bG9hZF9sZW4pOwotCi0gICAgaWYgKHBheWxvYWRfbGVuID09IDApCi0gICAgICBnb3RvIGVtcHR5X3BhY2tldDsKLQotICAgIC8qICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tKwotICAgICAqIHwwfDF8MnwzfDR8NXw2fDd8MHwxfDJ8M3w0fDV8Nnw3fAotICAgICAqICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKwotICAgICAqIHxGfCAgIFR5cGUgICAgfCAgTGF5ZXJJZCAgfCBUSUQgfAotICAgICAqICstLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tKwotICAgICAqCi0gICAgICogRiBtdXN0IGJlIDAuCi0gICAgICoKLSAgICAgKi8KLSAgICBuYWxfdW5pdF90eXBlID0gKHBheWxvYWRbMF0gPj4gMSkgJiAweDNmOwotICAgIG51aF9sYXllcl9pZCA9ICgocGF5bG9hZFswXSAmIDB4MDEpIDw8IDUpIHwgKHBheWxvYWRbMV0gPj4gMyk7ICAgICAgLyogc2hvdWxkIGJlIHplcm8gZm9yIG5vdyBidXQgdGhpcyBjb3VsZCBjaGFuZ2UgaW4gZnV0dXJlIEhFVkMgZXh0ZW5zaW9ucyAqLwotICAgIG51aF90ZW1wb3JhbF9pZF9wbHVzMSA9IHBheWxvYWRbMV0gJiAweDAzOwotCi0gICAgLyogQXQgbGVhc3QgdHdvIGJ5dGUgaGVhZGVyIHdpdGggdHlwZSAqLwotICAgIGhlYWRlcl9sZW4gPSAyOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LAotICAgICAgICAiTkFMIGhlYWRlciBuYWxfdW5pdF90eXBlICVkLCBudWhfdGVtcG9yYWxfaWRfcGx1czEgJWQiLCBuYWxfdW5pdF90eXBlLAotICAgICAgICBudWhfdGVtcG9yYWxfaWRfcGx1czEpOwotCi0gICAgR1NUX0ZJWE1FX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiQXNzdW1pbmcgRE9OTCBmaWVsZCBpcyBub3QgcHJlc2VudCIpOwotCi0gICAgLyogRklYTUUgLSBhc3N1bWluZyBET05MIGZpZWxkIGlzIG5vdCBwcmVzZW50IGZvciBub3cgKi8KLSAgICAvKmRvbmxfcHJlc2VudCA9ICh0eC1tb2RlID09ICJNU1QiKSB8fCAoc3Byb3AtbWF4LWRvbi1kaWZmID4gMCk7ICovCi0KLSAgICAvKiBJZiBGVSB1bml0IHdhcyBiZWluZyBwcm9jZXNzZWQsIGJ1dCB0aGUgY3VycmVudCBuYWwgaXMgb2YgYSBkaWZmZXJlbnQKLSAgICAgKiB0eXBlLiAgQXNzdW1lIHRoYXQgdGhlIHJlbW90ZSBwYXlsb2FkZXIgaXMgYnVnZ3kgKGRpZG4ndCBzZXQgdGhlIGVuZCBiaXQKLSAgICAgKiB3aGVuIHRoZSBGVSBlbmRlZCkgYW5kIHNlbmQgb3V0IHdoYXQgd2UgZ2F0aGVyZWQgdGh1c2ZhciAqLwotICAgIGlmIChHX1VOTElLRUxZIChydHBoMjY1ZGVwYXktPmN1cnJlbnRfZnVfdHlwZSAhPSAwICYmCi0gICAgICAgICAgICBuYWxfdW5pdF90eXBlICE9IHJ0cGgyNjVkZXBheS0+Y3VycmVudF9mdV90eXBlKSkKLSAgICAgIGdzdF9ydHBfaDI2NV9wdXNoX2ZyYWdtZW50YXRpb25fdW5pdCAocnRwaDI2NWRlcGF5LCBUUlVFKTsKLQotICAgIHN3aXRjaCAobmFsX3VuaXRfdHlwZSkgewotICAgICAgY2FzZSA0ODoKLSAgICAgIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiUHJvY2Vzc2luZyBhZ2dyZWdhdGlvbiBwYWNrZXQiKTsKLQotICAgICAgICAvKiBBZ2dyZWdhdGlvbiBwYWNrZXQgKHNlY3Rpb24gNC43KSAqLwotCi0gICAgICAgIC8qICBBbiBleGFtcGxlIG9mIGFuIEFQIHBhY2tldCBjb250YWluaW5nIHR3byBhZ2dyZWdhdGlvbiB1bml0cwotICAgICAgICAgICB3aXRob3V0IHRoZSBET05MIGFuZCBET05EIGZpZWxkcwotCi0gICAgICAgICAgIDAgICAgICAgICAgICAgICAgICAgMSAgICAgICAgICAgICAgICAgICAyICAgICAgICAgICAgICAgICAgIDMKLSAgICAgICAgICAgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxCi0gICAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgIFJUUCBIZWFkZXIgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICAgIHwgICBQYXlsb2FkSGRyIChUeXBlPTQ4KSAgICAgICAgfCAgICAgICAgIE5BTFUgMSBTaXplICAgICAgICAgICB8Ci0gICAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICAgIHwgICAgICAgICAgTkFMVSAxIEhEUiAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKyAgICAgICAgIE5BTFUgMSBEYXRhICAgICAgICAgICB8Ci0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgLiAuIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgICsgICAgICAgICAgICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICAgIHwgIC4gLiAuICAgICAgICB8IE5BTFUgMiBTaXplICAgICAgICAgICAgICAgICAgIHwgTkFMVSAyIEhEUiAgICB8Ci0gICAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICAgIHwgTkFMVSAyIEhEUiAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgICstKy0rLSstKy0rLSstKy0rICAgICAgICAgICAgICBOQUxVIDIgRGF0YSAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgLiAuIC4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOi4uLk9QVElPTkFMIFJUUCBwYWRkaW5nICAgICAgICB8Ci0gICAgICAgICAgICstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICAqLwotCi0gICAgICAgIC8qIHN0cmlwIGhlYWRlcnMgKi8KLSAgICAgICAgcGF5bG9hZCArPSBoZWFkZXJfbGVuOwotICAgICAgICBwYXlsb2FkX2xlbiAtPSBoZWFkZXJfbGVuOwotCi0gICAgICAgIHJ0cGgyNjVkZXBheS0+d2FpdF9zdGFydCA9IEZBTFNFOwotCi0jaWYgMAotICAgICAgICBpZiAoZG9ubF9wcmVzZW50KQotICAgICAgICAgIGdvdG8gbm90X2ltcGxlbWVudGVkX2RvbmxfcHJlc2VudDsKLSNlbmRpZgotCi0gICAgICAgIHdoaWxlIChwYXlsb2FkX2xlbiA+IDIpIHsKLQotICAgICAgICAgIG5hbHVfc2l6ZSA9IChwYXlsb2FkWzBdIDw8IDgpIHwgcGF5bG9hZFsxXTsKLQotICAgICAgICAgIC8qIGRvbnQgaW5jbHVkZSBuYWx1X3NpemUgKi8KLSAgICAgICAgICBpZiAobmFsdV9zaXplID4gKHBheWxvYWRfbGVuIC0gMikpCi0gICAgICAgICAgICBuYWx1X3NpemUgPSBwYXlsb2FkX2xlbiAtIDI7Ci0KLSAgICAgICAgICBvdXRzaXplID0gbmFsdV9zaXplICsgc2l6ZW9mIChzeW5jX2J5dGVzKTsKLSAgICAgICAgICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG91dHNpemUpOwotCi0gICAgICAgICAgZ3N0X2J1ZmZlcl9tYXAgKG91dGJ1ZiwgJm1hcCwgR1NUX01BUF9XUklURSk7Ci0gICAgICAgICAgaWYgKHJ0cGgyNjVkZXBheS0+Ynl0ZV9zdHJlYW0pIHsKLSAgICAgICAgICAgIG1lbWNweSAobWFwLmRhdGEsIHN5bmNfYnl0ZXMsIHNpemVvZiAoc3luY19ieXRlcykpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBnb3RvIG5vdF9pbXBsZW1lbnRlZDsKLSAgICAgICAgICB9Ci0KLSAgICAgICAgICAvKiBzdHJpcCBOQUxVIHNpemUgKi8KLSAgICAgICAgICBwYXlsb2FkICs9IDI7Ci0gICAgICAgICAgcGF5bG9hZF9sZW4gLT0gMjsKLQotICAgICAgICAgIG1lbWNweSAobWFwLmRhdGEgKyBzaXplb2YgKHN5bmNfYnl0ZXMpLCBwYXlsb2FkLCBuYWx1X3NpemUpOwotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm1hcCk7Ci0KLSAgICAgICAgICBnc3RfcnRwX2NvcHlfbWV0YSAoR1NUX0VMRU1FTlRfQ0FTVCAocnRwaDI2NWRlcGF5KSwgb3V0YnVmLCBidWYsCi0gICAgICAgICAgICAgIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nIChHU1RfTUVUQV9UQUdfVklERU9fU1RSKSk7Ci0KLSAgICAgICAgICBvdXRidWYgPQotICAgICAgICAgICAgICBnc3RfcnRwX2gyNjVfZGVwYXlfaGFuZGxlX25hbCAocnRwaDI2NWRlcGF5LCBvdXRidWYsIHRpbWVzdGFtcCwKLSAgICAgICAgICAgICAgbWFya2VyKTsKLSAgICAgICAgICBpZiAob3V0YnVmKQotICAgICAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaCAocnRwaDI2NWRlcGF5LT5hZGFwdGVyLCBvdXRidWYpOwotCi0gICAgICAgICAgcGF5bG9hZCArPSBuYWx1X3NpemU7Ci0gICAgICAgICAgcGF5bG9hZF9sZW4gLT0gbmFsdV9zaXplOwotICAgICAgICB9Ci0KLSAgICAgICAgb3V0c2l6ZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAocnRwaDI2NWRlcGF5LT5hZGFwdGVyKTsKLSAgICAgICAgaWYgKG91dHNpemUgPiAwKSB7Ci0gICAgICAgICAgb3V0YnVmID0gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIgKHJ0cGgyNjVkZXBheS0+YWRhcHRlciwgb3V0c2l6ZSk7Ci0gICAgICAgICAgb3V0YnVmID0KLSAgICAgICAgICAgICAgZ3N0X3J0cF9oMjY1X2RlcGF5X2hhbmRsZV9uYWwgKHJ0cGgyNjVkZXBheSwgb3V0YnVmLCB0aW1lc3RhbXAsCi0gICAgICAgICAgICAgIG1hcmtlcik7Ci0gICAgICAgIH0KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0gICAgICBjYXNlIDQ5OgotICAgICAgewotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJQcm9jZXNzaW5nIEZyYWdtZW50YXRpb24gVW5pdCIpOwotCi0gICAgICAgIC8qIEZyYWdtZW50YXRpb24gdW5pdHMgKEZVcykgIFNlY3Rpb24gNC44ICovCi0KLSAgICAgICAgLyogICAgVGhlIHN0cnVjdHVyZSBvZiBhIEZyYWdtZW50YXRpb24gVW5pdCAoRlUpCi0gICAgICAgICAqCi0gICAgICAgICAqICAgIDAgMSAyIDMgNCA1IDYgNyA4IDkgMCAxIDIgMyA0IDUgNiA3IDggOSAwIDEgMiAzIDQgNSA2IDcgOCA5IDAgMQotICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgIHwgICAgUGF5bG9hZEhkciAoVHlwZT00OSkgICAgICAgfCAgIEZVIGhlYWRlciAgIHwgRE9OTCAoY29uZCkgICB8Ci0gICAgICAgICArLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstfAotICAgICAgICAgfCBET05MIChjb25kKSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgIHwtKy0rLSstKy0rLSstKy0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIEZVIHBheWxvYWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rCi0gICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDouLi5PUFRJT05BTCBSVFAgcGFkZGluZyAgICAgICAgfAotICAgICAgICAgKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSstKy0rLSsKLSAgICAgICAgICoKLSAgICAgICAgICoKLSAgICAgICAgICovCi0KLSAgICAgICAgLyogc3RyaXAgaGVhZGVycyAqLwotICAgICAgICBwYXlsb2FkICs9IGhlYWRlcl9sZW47Ci0gICAgICAgIHBheWxvYWRfbGVuIC09IGhlYWRlcl9sZW47Ci0KLSAgICAgICAgLyogcHJvY2Vzc2luZyBGVSBoZWFkZXIgKi8KLSAgICAgICAgUyA9IChwYXlsb2FkWzBdICYgMHg4MCkgPT0gMHg4MDsKLSAgICAgICAgRSA9IChwYXlsb2FkWzBdICYgMHg0MCkgPT0gMHg0MDsKLQotICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksCi0gICAgICAgICAgICAiRlUgaGVhZGVyIHdpdGggUyAlZCwgRSAlZCwgbmFsX3VuaXRfdHlwZSAlZCIsIFMsIEUsCi0gICAgICAgICAgICBwYXlsb2FkWzBdICYgMHgzZik7Ci0KLSAgICAgICAgaWYgKHJ0cGgyNjVkZXBheS0+d2FpdF9zdGFydCAmJiAhUykKLSAgICAgICAgICBnb3RvIHdhaXRpbmdfc3RhcnQ7Ci0KLSNpZiAwCi0gICAgICAgIGlmIChkb25sX3ByZXNlbnQpCi0gICAgICAgICAgZ290byBub3RfaW1wbGVtZW50ZWRfZG9ubF9wcmVzZW50OwotI2VuZGlmCi0KLSAgICAgICAgaWYgKFMpIHsKLQotICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgIlN0YXJ0IG9mIEZyYWdtZW50YXRpb24gVW5pdCIpOwotCi0gICAgICAgICAgLyogSWYgYSBuZXcgRlUgdW5pdCBzdGFydGVkLCB3aGlsZSBzdGlsbCBwcm9jZXNzaW5nIGFuIG9sZGVyIG9uZS4KLSAgICAgICAgICAgKiBBc3N1bWUgdGhhdCB0aGUgcmVtb3RlIHBheWxvYWRlciBpcyBidWdneSAoZG9lc24ndCBzZXQgdGhlIGVuZAotICAgICAgICAgICAqIGJpdCkgYW5kIHNlbmQgb3V0IHdoYXQgd2UndmUgZ2F0aGVyZWQgdGh1c2ZhciAqLwotICAgICAgICAgIGlmIChHX1VOTElLRUxZIChydHBoMjY1ZGVwYXktPmN1cnJlbnRfZnVfdHlwZSAhPSAwKSkKLSAgICAgICAgICAgIGdzdF9ydHBfaDI2NV9wdXNoX2ZyYWdtZW50YXRpb25fdW5pdCAocnRwaDI2NWRlcGF5LCBUUlVFKTsKLQotICAgICAgICAgIHJ0cGgyNjVkZXBheS0+Y3VycmVudF9mdV90eXBlID0gbmFsX3VuaXRfdHlwZTsKLSAgICAgICAgICBydHBoMjY1ZGVwYXktPmZ1X3RpbWVzdGFtcCA9IHRpbWVzdGFtcDsKLQotICAgICAgICAgIHJ0cGgyNjVkZXBheS0+d2FpdF9zdGFydCA9IEZBTFNFOwotCi0gICAgICAgICAgLyogcmVjb25zdHJ1Y3QgTkFMIGhlYWRlciAqLwotICAgICAgICAgIG5hbF9oZWFkZXIgPQotICAgICAgICAgICAgICAoKHBheWxvYWRbMF0gJiAweDNmKSA8PCA5KSB8IChudWhfbGF5ZXJfaWQgPDwgMykgfAotICAgICAgICAgICAgICBudWhfdGVtcG9yYWxfaWRfcGx1czE7Ci0KLSAgICAgICAgICAvKiBnbyBiYWNrIG9uZSBieXRlIHNvIHdlIGNhbiBjb3B5IHRoZSBwYXlsb2FkICsgdHdvIGJ5dGVzIG1vcmUgaW4gdGhlIGZyb250IHdoaWNoCi0gICAgICAgICAgICogd2lsbCBiZSBvdmVyd3JpdHRlbiBieSB0aGUgbmFsX2hlYWRlcgotICAgICAgICAgICAqLwotICAgICAgICAgIHBheWxvYWQgLT0gMTsKLSAgICAgICAgICBwYXlsb2FkX2xlbiArPSAxOwotCi0gICAgICAgICAgbmFsdV9zaXplID0gcGF5bG9hZF9sZW47Ci0gICAgICAgICAgb3V0c2l6ZSA9IG5hbHVfc2l6ZSArIHNpemVvZiAoc3luY19ieXRlcyk7Ci0gICAgICAgICAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChvdXRzaXplKTsKLQotICAgICAgICAgIGdzdF9idWZmZXJfbWFwIChvdXRidWYsICZtYXAsIEdTVF9NQVBfV1JJVEUpOwotICAgICAgICAgIG1lbWNweSAobWFwLmRhdGEgKyBzaXplb2YgKHN5bmNfYnl0ZXMpLCBwYXlsb2FkLCBuYWx1X3NpemUpOwotICAgICAgICAgIG1hcC5kYXRhW3NpemVvZiAoc3luY19ieXRlcyldID0gbmFsX2hlYWRlciA+PiA4OwotICAgICAgICAgIG1hcC5kYXRhW3NpemVvZiAoc3luY19ieXRlcykgKyAxXSA9IG5hbF9oZWFkZXIgJiAweGZmOwotICAgICAgICAgIGdzdF9idWZmZXJfdW5tYXAgKG91dGJ1ZiwgJm1hcCk7Ci0KLSAgICAgICAgICBnc3RfcnRwX2NvcHlfbWV0YSAoR1NUX0VMRU1FTlRfQ0FTVCAocnRwaDI2NWRlcGF5KSwgb3V0YnVmLCBidWYsCi0gICAgICAgICAgICAgIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nIChHU1RfTUVUQV9UQUdfVklERU9fU1RSKSk7Ci0KLSAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJxdWV1ZWluZyAlZCBieXRlcyIsIG91dHNpemUpOwotCi0gICAgICAgICAgLyogYW5kIGFzc2VtYmxlIGluIHRoZSBhZGFwdGVyICovCi0gICAgICAgICAgZ3N0X2FkYXB0ZXJfcHVzaCAocnRwaDI2NWRlcGF5LT5hZGFwdGVyLCBvdXRidWYpOwotICAgICAgICB9IGVsc2UgewotCi0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LAotICAgICAgICAgICAgICAiRm9sbG93aW5nIHBhcnQgb2YgRnJhZ21lbnRhdGlvbiBVbml0Iik7Ci0KLSAgICAgICAgICAvKiBzdHJpcCBvZmYgRlUgaGVhZGVyIGJ5dGUgKi8KLSAgICAgICAgICBwYXlsb2FkICs9IDE7Ci0gICAgICAgICAgcGF5bG9hZF9sZW4gLT0gMTsKLQotICAgICAgICAgIG91dHNpemUgPSBwYXlsb2FkX2xlbjsKLSAgICAgICAgICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG91dHNpemUpOwotICAgICAgICAgIGdzdF9idWZmZXJfZmlsbCAob3V0YnVmLCAwLCBwYXlsb2FkLCBvdXRzaXplKTsKLQotICAgICAgICAgIGdzdF9ydHBfY29weV9tZXRhIChHU1RfRUxFTUVOVF9DQVNUIChydHBoMjY1ZGVwYXkpLCBvdXRidWYsIGJ1ZiwKLSAgICAgICAgICAgICAgZ19xdWFya19mcm9tX3N0YXRpY19zdHJpbmcgKEdTVF9NRVRBX1RBR19WSURFT19TVFIpKTsKLQotICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVkZXBheSwgInF1ZXVlaW5nICVkIGJ5dGVzIiwgb3V0c2l6ZSk7Ci0KLSAgICAgICAgICAvKiBhbmQgYXNzZW1ibGUgaW4gdGhlIGFkYXB0ZXIgKi8KLSAgICAgICAgICBnc3RfYWRhcHRlcl9wdXNoIChydHBoMjY1ZGVwYXktPmFkYXB0ZXIsIG91dGJ1Zik7Ci0gICAgICAgIH0KLQotICAgICAgICBvdXRidWYgPSBOVUxMOwotICAgICAgICBydHBoMjY1ZGVwYXktPmZ1X21hcmtlciA9IG1hcmtlcjsKLQotICAgICAgICAvKiBpZiBOQUwgdW5pdCBlbmRzLCBmbHVzaCB0aGUgYWRhcHRlciAqLwotICAgICAgICBpZiAoRSkgewotICAgICAgICAgIG91dGJ1ZiA9IGdzdF9ydHBfaDI2NV9wdXNoX2ZyYWdtZW50YXRpb25fdW5pdCAocnRwaDI2NWRlcGF5LCBGQUxTRSk7Ci0gICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAiRW5kIG9mIEZyYWdtZW50YXRpb24gVW5pdCIpOwotICAgICAgICB9Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotICAgICAgY2FzZSA1MDoKLSAgICAgICAgZ290byBub3RfaW1wbGVtZW50ZWQ7ICAgLyogUEFDSSBwYWNrZXRzICBTZWN0aW9uIDQuOSAqLwotICAgICAgZGVmYXVsdDoKLSAgICAgIHsKLSAgICAgICAgcnRwaDI2NWRlcGF5LT53YWl0X3N0YXJ0ID0gRkFMU0U7Ci0KLSAgICAgICAgLyogQWxsIG90aGVyIGNhc2VzOiBTaW5nbGUgTkFMIHVuaXQgcGFja2V0ICAgU2VjdGlvbiA0LjYgKi8KLSAgICAgICAgLyogdGhlIGVudGlyZSBwYXlsb2FkIGlzIHRoZSBvdXRwdXQgYnVmZmVyICovCi0KLSNpZiAwCi0gICAgICAgIGlmIChkb25sX3ByZXNlbnQpCi0gICAgICAgICAgZ290byBub3RfaW1wbGVtZW50ZWRfZG9ubF9wcmVzZW50OwotI2VuZGlmCi0KLSAgICAgICAgbmFsdV9zaXplID0gcGF5bG9hZF9sZW47Ci0gICAgICAgIG91dHNpemUgPSBuYWx1X3NpemUgKyBzaXplb2YgKHN5bmNfYnl0ZXMpOwotICAgICAgICBvdXRidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG91dHNpemUpOwotCi0gICAgICAgIGdzdF9idWZmZXJfbWFwIChvdXRidWYsICZtYXAsIEdTVF9NQVBfV1JJVEUpOwotICAgICAgICBpZiAocnRwaDI2NWRlcGF5LT5ieXRlX3N0cmVhbSkgewotICAgICAgICAgIG1lbWNweSAobWFwLmRhdGEsIHN5bmNfYnl0ZXMsIHNpemVvZiAoc3luY19ieXRlcykpOwotICAgICAgICB9IGVsc2UgewotICAgICAgICAgIGdvdG8gbm90X2ltcGxlbWVudGVkOwotICAgICAgICB9Ci0gICAgICAgIG1lbWNweSAobWFwLmRhdGEgKyBzaXplb2YgKHN5bmNfYnl0ZXMpLCBwYXlsb2FkLCBuYWx1X3NpemUpOwotICAgICAgICBnc3RfYnVmZmVyX3VubWFwIChvdXRidWYsICZtYXApOwotCi0gICAgICAgIGdzdF9ydHBfY29weV9tZXRhIChHU1RfRUxFTUVOVF9DQVNUIChydHBoMjY1ZGVwYXkpLCBvdXRidWYsIGJ1ZiwKLSAgICAgICAgICAgIGdfcXVhcmtfZnJvbV9zdGF0aWNfc3RyaW5nIChHU1RfTUVUQV9UQUdfVklERU9fU1RSKSk7Ci0KLSAgICAgICAgb3V0YnVmID0gZ3N0X3J0cF9oMjY1X2RlcGF5X2hhbmRsZV9uYWwgKHJ0cGgyNjVkZXBheSwgb3V0YnVmLCB0aW1lc3RhbXAsCi0gICAgICAgICAgICBtYXJrZXIpOwotICAgICAgICBicmVhazsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotCi0gIHJldHVybiBvdXRidWY7Ci0KLSAgLyogRVJST1JTICovCi1lbXB0eV9wYWNrZXQ6Ci0gIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1ZGVwYXksICJlbXB0eSBwYWNrZXQiKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotICAgIHJldHVybiBOVUxMOwotICB9Ci13YWl0aW5nX3N0YXJ0OgotICB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NWRlcGF5LCAid2FpdGluZyBmb3Igc3RhcnQiKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOwotICAgIHJldHVybiBOVUxMOwotICB9Ci0jaWYgMAotbm90X2ltcGxlbWVudGVkX2RvbmxfcHJlc2VudDoKLSAgewotICAgIEdTVF9FTEVNRU5UX0VSUk9SIChydHBoMjY1ZGVwYXksIFNUUkVBTSwgRk9STUFULAotICAgICAgICAoTlVMTCksICgiRE9OTCBmaWVsZCBwcmVzZW50IG5vdCBzdXBwb3J0ZWQgeWV0IikpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLSNlbmRpZgotbm90X2ltcGxlbWVudGVkOgotICB7Ci0gICAgR1NUX0VMRU1FTlRfRVJST1IgKHJ0cGgyNjVkZXBheSwgU1RSRUFNLCBGT1JNQVQsCi0gICAgICAgIChOVUxMKSwgKCJOQUwgdW5pdCB0eXBlICVkIG5vdCBzdXBwb3J0ZWQgeWV0IiwgbmFsX3VuaXRfdHlwZSkpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KLX0KLQotc3RhdGljIGdib29sZWFuCi1nc3RfcnRwX2gyNjVfZGVwYXlfaGFuZGxlX2V2ZW50IChHc3RSVFBCYXNlRGVwYXlsb2FkICogZGVwYXksIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIEdzdFJ0cEgyNjVEZXBheSAqcnRwaDI2NWRlcGF5OwotCi0gIHJ0cGgyNjVkZXBheSA9IEdTVF9SVFBfSDI2NV9ERVBBWSAoZGVwYXkpOwotCi0gIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgewotICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6Ci0gICAgICBnc3RfcnRwX2gyNjVfZGVwYXlfcmVzZXQgKHJ0cGgyNjVkZXBheSk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLQotICByZXR1cm4KLSAgICAgIEdTVF9SVFBfQkFTRV9ERVBBWUxPQURfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmhhbmRsZV9ldmVudCAoZGVwYXksIGV2ZW50KTsKLX0KLQotc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCi1nc3RfcnRwX2gyNjVfZGVwYXlfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKLSAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKQotewotICBHc3RSdHBIMjY1RGVwYXkgKnJ0cGgyNjVkZXBheTsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0OwotCi0gIHJ0cGgyNjVkZXBheSA9IEdTVF9SVFBfSDI2NV9ERVBBWSAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fUEFVU0VEOgotICAgICAgZ3N0X3J0cF9oMjY1X2RlcGF5X3Jlc2V0IChydHBoMjY1ZGVwYXkpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwgdHJhbnNpdGlvbik7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgYnJlYWs7Ci0gIH0KLSAgcmV0dXJuIHJldDsKLX0KLQotZ2Jvb2xlYW4KLWdzdF9ydHBfaDI2NV9kZXBheV9wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQotewotICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAocnRwaDI2NWRlcGF5X2RlYnVnLCAicnRwaDI2NWRlcGF5IiwgMCwKLSAgICAgICJIMjY1IFZpZGVvIFJUUCBEZXBheWxvYWRlciIpOwotCi0gIHJldHVybiBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAicnRwaDI2NWRlcGF5IiwKLSAgICAgIEdTVF9SQU5LX1NFQ09OREFSWSwgR1NUX1RZUEVfUlRQX0gyNjVfREVQQVkpOwotfQpkaWZmIC0tZ2l0IGEvZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuaCBiL2dzdC9ydHAvZ3N0cnRwaDI2NWRlcGF5LmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmNTBhYzYuLjAwMDAwMDAKLS0tIGEvZ3N0L3J0cC9nc3RydHBoMjY1ZGVwYXkuaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNyArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDIwMDY+IFdpbSBUYXltYW5zIDx3aW0udGF5bWFuc0BnbWFpbC5jb20+Ci0gKiBDb3B5cmlnaHQgKEMpIDwyMDE0PiBKdXJnZW4gU2xvd2FjayA8anVyZ2Vuc2xvd2Fja0BnbWFpbC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmbmRlZiBfX0dTVF9SVFBfSDI2NV9ERVBBWV9IX18KLSNkZWZpbmUgX19HU1RfUlRQX0gyNjVfREVQQVlfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgotI2luY2x1ZGUgPGdzdC9ydHAvZ3N0cnRwYmFzZWRlcGF5bG9hZC5oPgotI2luY2x1ZGUgPGdzdC9jb2RlY3BhcnNlcnMvZ3N0aDI2NXBhcnNlci5oPgotCi1HX0JFR0lOX0RFQ0xTCi0jZGVmaW5lIEdTVF9UWVBFX1JUUF9IMjY1X0RFUEFZIFwKLSAgKGdzdF9ydHBfaDI2NV9kZXBheV9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfUlRQX0gyNjVfREVQQVkob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9SVFBfSDI2NV9ERVBBWSxHc3RSdHBIMjY1RGVwYXkpKQotI2RlZmluZSBHU1RfUlRQX0gyNjVfREVQQVlfQ0xBU1Moa2xhc3MpIFwKLSAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfUlRQX0gyNjVfREVQQVksR3N0UnRwSDI2NURlcGF5Q2xhc3MpKQotI2RlZmluZSBHU1RfSVNfUlRQX0gyNjVfREVQQVkob2JqKSBcCi0gIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9SVFBfSDI2NV9ERVBBWSkpCi0jZGVmaW5lIEdTVF9JU19SVFBfSDI2NV9ERVBBWV9DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9SVFBfSDI2NV9ERVBBWSkpCi10eXBlZGVmIHN0cnVjdCBfR3N0UnRwSDI2NURlcGF5IEdzdFJ0cEgyNjVEZXBheTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RSdHBIMjY1RGVwYXlDbGFzcyBHc3RSdHBIMjY1RGVwYXlDbGFzczsKLQotI2RlZmluZSBHU1RfSDI2NV9WUFNfTlVUIDMyCi0jZGVmaW5lIEdTVF9IMjY1X1NQU19OVVQgMzMKLSNkZWZpbmUgR1NUX0gyNjVfUFBTX05VVCAzNAotCi10eXBlZGVmIGVudW0KLXsKLSAgR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9VTktOT1dOLAotICBHU1RfSDI2NV9TVFJFQU1fRk9STUFUX0JZVEVTVFJFQU0sCi0gIEdTVF9IMjY1X1NUUkVBTV9GT1JNQVRfSFZDMSwKLSAgR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9IRVYxCi19IEdzdEgyNjVTdHJlYW1Gb3JtYXQ7Ci0KLXN0cnVjdCBfR3N0UnRwSDI2NURlcGF5Ci17Ci0gIEdzdFJUUEJhc2VEZXBheWxvYWQgZGVwYXlsb2FkOwotCi0gIGdjaGFyICpzdHJlYW1fZm9ybWF0OwotICBnYm9vbGVhbiBieXRlX3N0cmVhbTsKLQotICBHc3RCdWZmZXIgKmNvZGVjX2RhdGE7Ci0gIEdzdEFkYXB0ZXIgKmFkYXB0ZXI7Ci0gIGdib29sZWFuIHdhaXRfc3RhcnQ7Ci0KLSAgLyogbmFsIG1lcmdpbmcgKi8KLSAgZ2Jvb2xlYW4gbWVyZ2U7Ci0gIEdzdEFkYXB0ZXIgKnBpY3R1cmVfYWRhcHRlcjsKLSAgZ2Jvb2xlYW4gcGljdHVyZV9zdGFydDsKLSAgR3N0Q2xvY2tUaW1lIGxhc3RfdHM7Ci0gIGdib29sZWFuIGxhc3Rfa2V5ZnJhbWU7Ci0KLSAgLyogV29yayBhcm91bmQgYnJva2VuIHBheWxvYWRlcnMgd3J0LiBGcmFnbWVudGF0aW9uIFVuaXRzICovCi0gIGd1aW50OCBjdXJyZW50X2Z1X3R5cGU7Ci0gIEdzdENsb2NrVGltZSBmdV90aW1lc3RhbXA7Ci0gIGdib29sZWFuIGZ1X21hcmtlcjsKLQotICAvKiBtaXNjICovCi0gIEdQdHJBcnJheSAqdnBzOwotICBHUHRyQXJyYXkgKnNwczsKLSAgR1B0ckFycmF5ICpwcHM7Ci0gIGdib29sZWFuIG5ld19jb2RlY19kYXRhOwotfTsKLQotc3RydWN0IF9Hc3RSdHBIMjY1RGVwYXlDbGFzcwotewotICBHc3RSVFBCYXNlRGVwYXlsb2FkQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotdHlwZWRlZiBzdHJ1Y3QKLXsKLSAgR3N0RWxlbWVudCAqZWxlbWVudDsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIEdRdWFyayBjb3B5X3RhZzsKLX0gQ29weU1ldGFEYXRhOwotCi12b2lkIGdzdF9ydHBfY29weV9tZXRhIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0QnVmZmVyICpvdXRidWYsIEdzdEJ1ZmZlciAqaW5idWYsIEdRdWFyayBjb3B5X3RhZyk7Ci0KLUdUeXBlIGdzdF9ydHBfaDI2NV9kZXBheV9nZXRfdHlwZSAodm9pZCk7Ci0KLWdib29sZWFuIGdzdF9ydHBfaDI2NV9kZXBheV9wbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKTsKLQotZ2Jvb2xlYW4gZ3N0X3J0cF9oMjY1X2FkZF92cHNfc3BzX3BwcyAoR3N0RWxlbWVudCAqIHJ0cGgyNjUsIEdQdHJBcnJheSAqIHZwcywKLSAgICBHUHRyQXJyYXkgKiBzcHMsIEdQdHJBcnJheSAqIHBwcywgR3N0QnVmZmVyICogbmFsKTsKLQotR19FTkRfREVDTFMKLSNlbmRpZiAvKiBfX0dTVF9SVFBfSDI2NV9ERVBBWV9IX18gKi8KZGlmZiAtLWdpdCBhL2dzdC9ydHAvZ3N0cnRwaDI2NXBheS5jIGIvZ3N0L3J0cC9nc3RydHBoMjY1cGF5LmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxN2IwOTEuLjAwMDAwMDAKLS0tIGEvZ3N0L3J0cC9nc3RydHBoMjY1cGF5LmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNTAzICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICogQ29weXJpZ2h0IChDKSA8MjAwNj4gV2ltIFRheW1hbnMgPHdpbS50YXltYW5zQGdtYWlsLmNvbT4KLSAqIENvcHlyaWdodCAoQykgPDIwMTQ+IEp1cmdlbiBTbG93YWNrIDxqdXJnZW5zbG93YWNrQGdtYWlsLmNvbT4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0gKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotICoKLSAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCi0gKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSAqLwotCi0jaWZkZWYgSEFWRV9DT05GSUdfSAotIyAgaW5jbHVkZSAiY29uZmlnLmgiCi0jZW5kaWYKLQotI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgPHN0ZGxpYi5oPgotCi0jaW5jbHVkZSA8Z3N0L3J0cC9nc3RydHBidWZmZXIuaD4KLSNpbmNsdWRlIDxnc3QvcGJ1dGlscy9wYnV0aWxzLmg+Ci0jaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+Ci0KLS8qIEluY2x1ZGVkIHRvIG5vdCBkdXBsaWNhdGUgZ3N0X3J0cF9oMjY1X2FkZF92cHNfc3BzX3BwcyAoKSAqLwotI2luY2x1ZGUgImdzdHJ0cGgyNjVkZXBheS5oIgotCi0jaW5jbHVkZSAiZ3N0cnRwaDI2NXBheS5oIgotCi0KLUdTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKHJ0cGgyNjVwYXlfZGVidWcpOwotI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgKHJ0cGgyNjVwYXlfZGVidWcpCi0KLS8qIHJlZmVyZW5jZXM6Ci0gKgotICogSW50ZXJuZXQgRHJhZnQgUlRQIFBheWxvYWQgRm9ybWF0IGZvciBIaWdoIEVmZmljaWVuY3kgVmlkZW8gQ29kaW5nCi0gKgotICogICAgICAgICAgICAgICAgICAgZHJhZnQtaWV0Zi1wYXlsb2FkLXJ0cC1oMjY1LTAzLnR4dAotICoKLSAqIFRoaXMgZHJhZnQgd2lsbCBiZSByZXBsYWNlZCB3aXRoIGFuIFJGQywgc28gc29tZSBkZXRhaWxzIG1heSBjaGFuZ2UuCi0gKgotICovCi0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfcnRwX2gyNjVfcGF5X3NpbmtfdGVtcGxhdGUgPQotICAgIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoCi0gICAgICAgIC8qIE9ubHkgYnl0ZXN0cmVhbSBmb3JtYXQgc3VwcG9ydGVkIGZvciBub3cgKi8KLSAgICAgICAgLyogInZpZGVvL3gtaDI2NSwgIgotICAgICAgICAgICAic3RyZWFtLWZvcm1hdCA9IChzdHJpbmcpIGh2YzEsIGFsaWdubWVudCA9IChzdHJpbmcpIGF1OyAiCi0gICAgICAgICAgICJ2aWRlby94LWgyNjUsICIKLSAgICAgICAgICAgInN0cmVhbS1mb3JtYXQgPSAoc3RyaW5nKSBoZXYxLCBhbGlnbm1lbnQgPSAoc3RyaW5nKSBhdTsgIiAqLwotICAgICAgICAidmlkZW8veC1oMjY1LCAiCi0gICAgICAgICJzdHJlYW0tZm9ybWF0ID0gKHN0cmluZykgYnl0ZS1zdHJlYW0sIGFsaWdubWVudCA9IChzdHJpbmcpIHsgbmFsLCBhdSB9IikKLSAgICApOwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3J0cF9oMjY1X3BheV9zcmNfdGVtcGxhdGUgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwLCAiCi0gICAgICAgICJtZWRpYSA9IChzdHJpbmcpIFwidmlkZW9cIiwgIgotICAgICAgICAicGF5bG9hZCA9IChpbnQpICIgR1NUX1JUUF9QQVlMT0FEX0RZTkFNSUNfU1RSSU5HICIsICIKLSAgICAgICAgImNsb2NrLXJhdGUgPSAoaW50KSA5MDAwMCwgIiAiZW5jb2RpbmctbmFtZSA9IChzdHJpbmcpIFwiSDI2NVwiIikKLSAgICAgICAgICAgICAgICAvKiogb3B0aW9uYWwgcGFyYW1ldGVycyAqKi8KLSAgICAvKiAicHJvZmlsZS1zcGFjZSA9IChpbnQpIFsgMCwgMyBdLCAiICovCi0gICAgLyogInByb2ZpbGUtaWQgPSAoaW50KSBbIDAsIDMxIF0sICIgKi8KLSAgICAvKiAidGllci1mbGFnID0gKGludCkgWyAwLCAxIF0sICIgKi8KLSAgICAvKiAibGV2ZWwtaWQgPSAoaW50KSBbIDAsIDI1NSBdLCAiICovCi0gICAgLyogImludGVyb3AtY29uc3RyYWludHMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAicHJvZmlsZS1jb21wYXRpYmlsaXR5LWluZGljYXRvciA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJzcHJvcC1zdWItbGF5ZXItaWQgPSAoaW50KSBbIDAsIDYgXSwgIiAqLwotICAgIC8qICJyZWN2LXN1Yi1sYXllci1pZCA9IChpbnQpIFsgMCwgNiBdLCAiICovCi0gICAgLyogIm1heC1yZWN2LWxldmVsLWlkID0gKGludCkgWyAwLCAyNTUgXSwgIiAqLwotICAgIC8qICJ0eC1tb2RlID0gKHN0cmluZykge01TVCAsIFNTVH0sICIgKi8KLSAgICAvKiAic3Byb3AtdnBzID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogInNwcm9wLXNwcyA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgIC8qICJzcHJvcC1wcHMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAic3Byb3Atc2VpID0gKHN0cmluZykgQU5ZLCAiICovCi0gICAgLyogIm1heC1sc3IgPSAoaW50KSBBTlksICIgKi8vKiBNVVNUIGJlIGluIHRoZSByYW5nZSBvZiBNYXhMdW1hU1IgdG8gMTYgKiBNYXhMdW1hU1IsIGluY2x1c2l2ZSAqLwotICAgIC8qICJtYXgtbHBzID0gKGludCkgQU5ZLCAiICovLyogTVVTVCBiZSBpbiB0aGUgcmFuZ2Ugb2YgTWF4THVtYVBTIHRvIDE2ICogTWF4THVtYVBTLCBpbmNsdXNpdmUgKi8KLSAgICAvKiAibWF4LWNwYiA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heENQQiB0byAxNiAqIE1heENQQiwgaW5jbHVzaXZlICovCi0gICAgLyogIm1heC1kcGIgPSAoaW50KSBbMSwgMTZdLCAiICovCi0gICAgLyogIm1heC1iciA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heEJSIHRvIDE2ICogTWF4QlIsIGluY2x1c2l2ZSwgZm9yIHRoZSBoaWdoZXN0IGxldmVsICovCi0gICAgLyogIm1heC10ciA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heFRpbGVSb3dzIHRvIDE2ICogTWF4VGlsZVJvd3MsIGluY2x1c2l2ZSwgZm9yIHRoZSBoaWdoZXN0IGxldmVsICovCi0gICAgLyogIm1heC10YyA9IChpbnQpIEFOWSwgIiAqLy8qIE1VU1QgYmUgaW4gdGhlIHJhbmdlIG9mIE1heFRpbGVDb2xzIHRvIDE2ICogTWF4VGlsZUNvbHMsIGluY2x1c2l2ZSwgZm9yIHRoZSBoaWdoZXN0IGxldmVsICovCi0gICAgLyogIm1heC1mcHMgPSAoaW50KSBBTlksICIgKi8KLSAgICAvKiAic3Byb3AtbWF4LWRvbi1kaWZmID0gKGludCkgWzAsIDMyNzY3XSwgIiAqLwotICAgIC8qICJzcHJvcC1kZXBhY2stYnVmLW5hbHVzID0gKGludCkgWzAsIDMyNzY3XSwgIiAqLwotICAgIC8qICJzcHJvcC1kZXBhY2stYnVmLW5hbHVzID0gKGludCkgWzAsIDQyOTQ5NjcyOTVdLCAiICovCi0gICAgLyogImRlcGFjay1idWYtY2FwID0gKGludCkgWzEsIDQyOTQ5NjcyOTVdLCAiICovCi0gICAgLyogInNwcm9wLXNlZ21lbnRhdGlvbi1pZCA9IChpbnQpIFswLCAzXSwgIiAqLwotICAgIC8qICJzcHJvcC1zcGF0aWFsLXNlZ21lbnRhdGlvbi1pZGMgPSAoc3RyaW5nKSBBTlksICIgKi8KLSAgICAvKiAiZGVjLXBhcmFsbGVsLWNhcCA9IChzdHJpbmcpIEFOWSwgIiAqLwotICAgICk7Ci0KLSNkZWZpbmUgREVGQVVMVF9TUFJPUF9QQVJBTUVURVJfU0VUUyAgICBOVUxMCi0jZGVmaW5lIERFRkFVTFRfQ09ORklHX0lOVEVSVkFMCQkgICAgICAwCi0KLWVudW0KLXsKLSAgUFJPUF8wLAotICBQUk9QX1NQUk9QX1BBUkFNRVRFUl9TRVRTLAotICBQUk9QX0NPTkZJR19JTlRFUlZBTAotfTsKLQotI2RlZmluZSBJU19BQ0NFU1NfVU5JVCh4KSAoKCh4KSA+IDB4MDApICYmICgoeCkgPCAweDA2KSkKLQotc3RhdGljIHZvaWQgZ3N0X3J0cF9oMjY1X3BheV9maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7Ci0KLXN0YXRpYyB2b2lkIGdzdF9ydHBfaDI2NV9wYXlfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOwotc3RhdGljIHZvaWQgZ3N0X3J0cF9oMjY1X3BheV9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCi0gICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7Ci0KLXN0YXRpYyBHc3RDYXBzICpnc3RfcnRwX2gyNjVfcGF5X2dldGNhcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogcGF5bG9hZCwKLSAgICBHc3RQYWQgKiBwYWQsIEdzdENhcHMgKiBmaWx0ZXIpOwotc3RhdGljIGdib29sZWFuIGdzdF9ydHBfaDI2NV9wYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCwKLSAgICBHc3RDYXBzICogY2Fwcyk7Ci1zdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfcnRwX2gyNjVfcGF5X2hhbmRsZV9idWZmZXIgKEdzdFJUUEJhc2VQYXlsb2FkICogcGFkLAotICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlcik7Ci1zdGF0aWMgZ2Jvb2xlYW4gZ3N0X3J0cF9oMjY1X3BheV9zaW5rX2V2ZW50IChHc3RSVFBCYXNlUGF5bG9hZCAqIHBheWxvYWQsCi0gICAgR3N0RXZlbnQgKiBldmVudCk7Ci1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ3N0X3J0cF9oMjY1X3BheV9jaGFuZ2Vfc3RhdGUgKEdzdEVsZW1lbnQgKgotICAgIGVsZW1lbnQsIEdzdFN0YXRlQ2hhbmdlIHRyYW5zaXRpb24pOwotCi0jZGVmaW5lIGdzdF9ydHBfaDI2NV9wYXlfcGFyZW50X2NsYXNzIHBhcmVudF9jbGFzcwotR19ERUZJTkVfVFlQRSAoR3N0UnRwSDI2NVBheSwgZ3N0X3J0cF9oMjY1X3BheSwgR1NUX1RZUEVfUlRQX0JBU0VfUEFZTE9BRCk7Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX2gyNjVfcGF5X2NsYXNzX2luaXQgKEdzdFJ0cEgyNjVQYXlDbGFzcyAqIGtsYXNzKQotewotICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3M7Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZ3N0ZWxlbWVudF9jbGFzczsKLSAgR3N0UlRQQmFzZVBheWxvYWRDbGFzcyAqZ3N0cnRwYmFzZXBheWxvYWRfY2xhc3M7Ci0KLSAgZ29iamVjdF9jbGFzcyA9IChHT2JqZWN0Q2xhc3MgKikga2xhc3M7Ci0gIGdzdGVsZW1lbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGtsYXNzOwotICBnc3RydHBiYXNlcGF5bG9hZF9jbGFzcyA9IChHc3RSVFBCYXNlUGF5bG9hZENsYXNzICopIGtsYXNzOwotCi0gIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9ydHBfaDI2NV9wYXlfc2V0X3Byb3BlcnR5OwotICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfcnRwX2gyNjVfcGF5X2dldF9wcm9wZXJ0eTsKLQotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChHX09CSkVDVF9DTEFTUyAoa2xhc3MpLAotICAgICAgUFJPUF9TUFJPUF9QQVJBTUVURVJfU0VUUywgZ19wYXJhbV9zcGVjX3N0cmluZyAoInNwcm9wLXBhcmFtZXRlci1zZXRzIiwKLSAgICAgICAgICAic3Byb3AtcGFyYW1ldGVyLXNldHMiLAotICAgICAgICAgICJUaGUgYmFzZTY0IHNwcm9wLXBhcmFtZXRlci1zZXRzIHRvIHNldCBpbiBvdXQgY2FwcyAoc2V0IHRvIE5VTEwgdG8gIgotICAgICAgICAgICJleHRyYWN0IGZyb20gc3RyZWFtKSIsCi0gICAgICAgICAgREVGQVVMVF9TUFJPUF9QQVJBTUVURVJfU0VUUywKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKLQotICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChHX09CSkVDVF9DTEFTUyAoa2xhc3MpLAotICAgICAgUFJPUF9DT05GSUdfSU5URVJWQUwsCi0gICAgICBnX3BhcmFtX3NwZWNfdWludCAoImNvbmZpZy1pbnRlcnZhbCIsCi0gICAgICAgICAgIlZQUyBTUFMgUFBTIFNlbmQgSW50ZXJ2YWwiLAotICAgICAgICAgICJTZW5kIFZQUywgU1BTIGFuZCBQUFMgSW5zZXJ0aW9uIEludGVydmFsIGluIHNlY29uZHMgKHNwcm9wIHBhcmFtZXRlciBzZXRzICIKLSAgICAgICAgICAid2lsbCBiZSBtdWx0aXBsZXhlZCBpbiB0aGUgZGF0YSBzdHJlYW0gd2hlbiBkZXRlY3RlZC4pICgwID0gZGlzYWJsZWQpIiwKLSAgICAgICAgICAwLCAzNjAwLCBERUZBVUxUX0NPTkZJR19JTlRFUlZBTCwKLSAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpCi0gICAgICApOwotCi0gIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3J0cF9oMjY1X3BheV9maW5hbGl6ZTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3J0cF9oMjY1X3BheV9zcmNfdGVtcGxhdGUpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF9ydHBfaDI2NV9wYXlfc2lua190ZW1wbGF0ZSkpOwotCi0gIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGdzdGVsZW1lbnRfY2xhc3MsICJSVFAgSDI2NSBwYXlsb2FkZXIiLAotICAgICAgIkNvZGVjL1BheWxvYWRlci9OZXR3b3JrL1JUUCIsCi0gICAgICAiUGF5bG9hZC1lbmNvZGUgSDI2NSB2aWRlbyBpbnRvIFJUUCBwYWNrZXRzIChiYXNlZCBvbiBkcmFmdC1pZXRmLXBheWxvYWQtcnRwLWgyNjUtMDMudHh0KSIsCi0gICAgICAiSnVyZ2VuIFNsb3dhY2sgPGp1cmdlbnNsb3dhY2tAZ21haWwuY29tPiIpOwotCi0gIGdzdGVsZW1lbnRfY2xhc3MtPmNoYW5nZV9zdGF0ZSA9Ci0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3J0cF9oMjY1X3BheV9jaGFuZ2Vfc3RhdGUpOwotCi0gIGdzdHJ0cGJhc2VwYXlsb2FkX2NsYXNzLT5nZXRfY2FwcyA9IGdzdF9ydHBfaDI2NV9wYXlfZ2V0Y2FwczsKLSAgZ3N0cnRwYmFzZXBheWxvYWRfY2xhc3MtPnNldF9jYXBzID0gZ3N0X3J0cF9oMjY1X3BheV9zZXRjYXBzOwotICBnc3RydHBiYXNlcGF5bG9hZF9jbGFzcy0+aGFuZGxlX2J1ZmZlciA9IGdzdF9ydHBfaDI2NV9wYXlfaGFuZGxlX2J1ZmZlcjsKLSAgZ3N0cnRwYmFzZXBheWxvYWRfY2xhc3MtPnNpbmtfZXZlbnQgPSBnc3RfcnRwX2gyNjVfcGF5X3NpbmtfZXZlbnQ7Ci0KLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKHJ0cGgyNjVwYXlfZGVidWcsICJydHBoMjY1cGF5IiwgMCwKLSAgICAgICJIMjY1IFJUUCBQYXlsb2FkZXIiKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9wYXlfaW5pdCAoR3N0UnRwSDI2NVBheSAqIHJ0cGgyNjVwYXkpCi17Ci0gIHJ0cGgyNjVwYXktPnF1ZXVlID0gZ19hcnJheV9uZXcgKEZBTFNFLCBGQUxTRSwgc2l6ZW9mIChndWludCkpOwotICBydHBoMjY1cGF5LT5wcm9maWxlID0gMDsKLSAgcnRwaDI2NXBheS0+c3BzID0gZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jICgKLSAgICAgIChHRGVzdHJveU5vdGlmeSkgZ3N0X2J1ZmZlcl91bnJlZik7Ci0gIHJ0cGgyNjVwYXktPnBwcyA9IGdfcHRyX2FycmF5X25ld193aXRoX2ZyZWVfZnVuYyAoCi0gICAgICAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF9idWZmZXJfdW5yZWYpOwotICBydHBoMjY1cGF5LT52cHMgPSBnX3B0cl9hcnJheV9uZXdfd2l0aF9mcmVlX2Z1bmMgKAotICAgICAgKEdEZXN0cm95Tm90aWZ5KSBnc3RfYnVmZmVyX3VucmVmKTsKLSAgcnRwaDI2NXBheS0+bGFzdF92cHNfc3BzX3BwcyA9IC0xOwotICBydHBoMjY1cGF5LT52cHNfc3BzX3Bwc19pbnRlcnZhbCA9IERFRkFVTFRfQ09ORklHX0lOVEVSVkFMOwotCi0gIHJ0cGgyNjVwYXktPmFkYXB0ZXIgPSBnc3RfYWRhcHRlcl9uZXcgKCk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX2gyNjVfcGF5X2NsZWFyX3Zwc19zcHNfcHBzIChHc3RSdHBIMjY1UGF5ICogcnRwaDI2NXBheSkKLXsKLSAgZ19wdHJfYXJyYXlfc2V0X3NpemUgKHJ0cGgyNjVwYXktPnZwcywgMCk7Ci0gIGdfcHRyX2FycmF5X3NldF9zaXplIChydHBoMjY1cGF5LT5zcHMsIDApOwotICBnX3B0cl9hcnJheV9zZXRfc2l6ZSAocnRwaDI2NXBheS0+cHBzLCAwKTsKLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9wYXlfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCi17Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXk7Ci0KLSAgcnRwaDI2NXBheSA9IEdTVF9SVFBfSDI2NV9QQVkgKG9iamVjdCk7Ci0KLSAgZ19hcnJheV9mcmVlIChydHBoMjY1cGF5LT5xdWV1ZSwgVFJVRSk7Ci0KLSAgZ19wdHJfYXJyYXlfZnJlZSAocnRwaDI2NXBheS0+c3BzLCBUUlVFKTsKLSAgZ19wdHJfYXJyYXlfZnJlZSAocnRwaDI2NXBheS0+cHBzLCBUUlVFKTsKLSAgZ19wdHJfYXJyYXlfZnJlZSAocnRwaDI2NXBheS0+dnBzLCBUUlVFKTsKLQotICBnX2ZyZWUgKHJ0cGgyNjVwYXktPnNwcm9wX3BhcmFtZXRlcl9zZXRzKTsKLQotICBnX29iamVjdF91bnJlZiAocnRwaDI2NXBheS0+YWRhcHRlcik7Ci0KLSAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwotfQotCi1zdGF0aWMgY29uc3QgZ2NoYXIgYWxsX2xldmVsc1tdWzRdID0gewotICAiMSIsCi0gICIyIiwKLSAgIjIuMSIsCi0gICIzIiwKLSAgIjMuMSIsCi0gICI0IiwKLSAgIjQuMSIsCi0gICI1IiwKLSAgIjUuMSIsCi0gICI1LjIiLAotICAiNiIsCi0gICI2LjEiLAotICAiNi4yIgotfTsKLQotc3RhdGljIEdzdENhcHMgKgotZ3N0X3J0cF9oMjY1X3BheV9nZXRjYXBzIChHc3RSVFBCYXNlUGF5bG9hZCAqIHBheWxvYWQsIEdzdFBhZCAqIHBhZCwKLSAgICBHc3RDYXBzICogZmlsdGVyKQotewotICBHc3RDYXBzICp0ZW1wbGF0ZV9jYXBzOwotICBHc3RDYXBzICphbGxvd2VkX2NhcHM7Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIEdzdENhcHMgKmljYXBzOwotICBnYm9vbGVhbiBhcHBlbmRfdW5yZXN0cmljdGVkOwotICBndWludCBpOwotCi0gIGFsbG93ZWRfY2FwcyA9Ci0gICAgICBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoR1NUX1JUUF9CQVNFX1BBWUxPQURfU1JDUEFEIChwYXlsb2FkKSwgTlVMTCk7Ci0KLSAgaWYgKGFsbG93ZWRfY2FwcyA9PSBOVUxMKQotICAgIHJldHVybiBOVUxMOwotCi0gIHRlbXBsYXRlX2NhcHMgPQotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0X2NhcHMgKCZnc3RfcnRwX2gyNjVfcGF5X3NpbmtfdGVtcGxhdGUpOwotCi0gIGlmIChnc3RfY2Fwc19pc19hbnkgKGFsbG93ZWRfY2FwcykpIHsKLSAgICBjYXBzID0gZ3N0X2NhcHNfcmVmICh0ZW1wbGF0ZV9jYXBzKTsKLSAgICBnb3RvIGRvbmU7Ci0gIH0KLQotICBpZiAoZ3N0X2NhcHNfaXNfZW1wdHkgKGFsbG93ZWRfY2FwcykpIHsKLSAgICBjYXBzID0gZ3N0X2NhcHNfcmVmIChhbGxvd2VkX2NhcHMpOwotICAgIGdvdG8gZG9uZTsKLSAgfQotCi0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0KLSAgYXBwZW5kX3VucmVzdHJpY3RlZCA9IEZBTFNFOwotICBmb3IgKGkgPSAwOyBpIDwgZ3N0X2NhcHNfZ2V0X3NpemUgKGFsbG93ZWRfY2Fwcyk7IGkrKykgewotICAgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGFsbG93ZWRfY2FwcywgaSk7Ci0gICAgR3N0U3RydWN0dXJlICpuZXdfcyA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5ICgidmlkZW8veC1oMjY1Iik7Ci0gICAgY29uc3QgZ2NoYXIgKnByb2ZpbGVfbGV2ZWxfaWQ7Ci0KLSAgICBwcm9maWxlX2xldmVsX2lkID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAicHJvZmlsZS1sZXZlbC1pZCIpOwotCi0gICAgaWYgKHByb2ZpbGVfbGV2ZWxfaWQgJiYgc3RybGVuIChwcm9maWxlX2xldmVsX2lkKSA9PSA2KSB7ICAgLyogQ29kZSB0YWtlbiBmcm9tIGdzdHJ0cGgyNjRwYXkuYywgbmVlZHMgdG8gYmUgcmV2aXNlZCBmb3IgSC4yNjUgKi8KLSAgICAgIGNvbnN0IGdjaGFyICpwcm9maWxlOwotICAgICAgY29uc3QgZ2NoYXIgKmxldmVsOwotICAgICAgbG9uZyBpbnQgc3BzaW50OwotICAgICAgZ3VpbnQ4IHNwc1szXTsKLQotICAgICAgc3BzaW50ID0gc3RydG9sIChwcm9maWxlX2xldmVsX2lkLCBOVUxMLCAxNik7Ci0gICAgICBzcHNbMF0gPSBzcHNpbnQgPj4gMTY7Ci0gICAgICBzcHNbMV0gPSBzcHNpbnQgPj4gODsKLSAgICAgIHNwc1syXSA9IHNwc2ludDsKLQotICAgICAgcHJvZmlsZSA9IGdzdF9jb2RlY191dGlsc19oMjY1X2dldF9wcm9maWxlIChzcHMsIDMpOwotICAgICAgbGV2ZWwgPSBnc3RfY29kZWNfdXRpbHNfaDI2NV9nZXRfbGV2ZWwgKHNwcywgMyk7Ci0KLSAgICAgIGlmIChwcm9maWxlICYmIGxldmVsKSB7Ci0gICAgICAgIEdTVF9MT0dfT0JKRUNUIChwYXlsb2FkLCAiSW4gY2FwcywgaGF2ZSBwcm9maWxlICVzIGFuZCBsZXZlbCAlcyIsCi0gICAgICAgICAgICBwcm9maWxlLCBsZXZlbCk7Ci0KLSAgICAgICAgaWYgKCFzdHJjbXAgKHByb2ZpbGUsICJtYWluIikpCi0gICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKG5ld19zLCAicHJvZmlsZSIsIEdfVFlQRV9TVFJJTkcsIHByb2ZpbGUsIE5VTEwpOwotICAgICAgICBlbHNlIHsKLSAgICAgICAgICBHVmFsdWUgdmFsID0geyAwLCB9OwotICAgICAgICAgIEdWYWx1ZSBwcm9maWxlcyA9IHsgMCwgfTsKLQotICAgICAgICAgIGdfdmFsdWVfaW5pdCAoJnByb2ZpbGVzLCBHU1RfVFlQRV9MSVNUKTsKLSAgICAgICAgICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdfVFlQRV9TVFJJTkcpOwotCi0gICAgICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgcHJvZmlsZSk7Ci0gICAgICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmcHJvZmlsZXMsICZ2YWwpOwotCi0gICAgICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgIm1haW4iKTsKLSAgICAgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZwcm9maWxlcywgJnZhbCk7Ci0KLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX3Rha2VfdmFsdWUgKG5ld19zLCAicHJvZmlsZSIsICZwcm9maWxlcyk7Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoIXN0cmNtcCAobGV2ZWwsICIxIikpCi0gICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKG5ld19zLCAibGV2ZWwiLCBHX1RZUEVfU1RSSU5HLCBsZXZlbCwgTlVMTCk7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgIEdWYWx1ZSBsZXZlbHMgPSB7IDAsIH07Ci0gICAgICAgICAgR1ZhbHVlIHZhbCA9IHsgMCwgfTsKLSAgICAgICAgICBpbnQgajsKLQotICAgICAgICAgIGdfdmFsdWVfaW5pdCAoJmxldmVscywgR1NUX1RZUEVfTElTVCk7Ci0gICAgICAgICAgZ192YWx1ZV9pbml0ICgmdmFsLCBHX1RZUEVfU1RSSU5HKTsKLQotICAgICAgICAgIGZvciAoaiA9IDA7IGogPCBHX05fRUxFTUVOVFMgKGFsbF9sZXZlbHMpOyBqKyspIHsKLSAgICAgICAgICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsIGFsbF9sZXZlbHNbal0pOwotICAgICAgICAgICAgZ3N0X3ZhbHVlX2xpc3RfcHJlcGVuZF92YWx1ZSAoJmxldmVscywgJnZhbCk7Ci0gICAgICAgICAgICBpZiAoIXN0cmNtcCAobGV2ZWwsIGFsbF9sZXZlbHNbal0pKQotICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZ3N0X3N0cnVjdHVyZV90YWtlX3ZhbHVlIChuZXdfcywgImxldmVsIiwgJmxldmVscyk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIEludmFsaWQgcHJvZmlsZS1sZXZlbC1pZCBtZWFucyBtYWluICovCi0KLSAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKG5ld19zLCAicHJvZmlsZSIsIEdfVFlQRV9TVFJJTkcsICJtYWluIiwgTlVMTCk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8qIE5vIHByb2ZpbGUtbGV2ZWwtaWQgbWVhbnMgbWFpbiBvciB1bnJlc3RyaWN0ZWQgKi8KLQotICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKG5ld19zLCAicHJvZmlsZSIsIEdfVFlQRV9TVFJJTkcsICJtYWluIiwgTlVMTCk7Ci0gICAgICBhcHBlbmRfdW5yZXN0cmljdGVkID0gVFJVRTsKLSAgICB9Ci0KLSAgICBjYXBzID0gZ3N0X2NhcHNfbWVyZ2Vfc3RydWN0dXJlIChjYXBzLCBuZXdfcyk7Ci0gIH0KLQotICBpZiAoYXBwZW5kX3VucmVzdHJpY3RlZCkgewotICAgIGNhcHMgPQotICAgICAgICBnc3RfY2Fwc19tZXJnZV9zdHJ1Y3R1cmUgKGNhcHMsIGdzdF9zdHJ1Y3R1cmVfbmV3ICgidmlkZW8veC1oMjY1IiwgTlVMTCwKLSAgICAgICAgICAgIE5VTEwpKTsKLSAgfQotCi0gIGljYXBzID0gZ3N0X2NhcHNfaW50ZXJzZWN0IChjYXBzLCB0ZW1wbGF0ZV9jYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICBjYXBzID0gaWNhcHM7Ci0KLWRvbmU6Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsYXRlX2NhcHMpOwotICBnc3RfY2Fwc191bnJlZiAoYWxsb3dlZF9jYXBzKTsKLQotICBHU1RfTE9HX09CSkVDVCAocGF5bG9hZCwgInJldHVybmluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKLSAgcmV0dXJuIGNhcHM7Ci19Ci0KLS8qIHRha2UgdGhlIGN1cnJlbnRseSBjb25maWd1cmVkIFZQUywgU1BTIGFuZCBQUFMgbGlzdHMgYW5kIHNldCB0aGVtIG9uIHRoZSBjYXBzIGFzCi0gKiBzcHJvcC1wYXJhbWV0ZXItc2V0cyAqLwotc3RhdGljIGdib29sZWFuCi1nc3RfcnRwX2gyNjVfcGF5X3NldF92cHNfc3BzX3BwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCkKLXsKLSAgR3N0UnRwSDI2NVBheSAqcGF5bG9hZGVyID0gR1NUX1JUUF9IMjY1X1BBWSAoYmFzZXBheWxvYWQpOwotICBnY2hhciAqcHJvZmlsZTsKLSAgZ2NoYXIgKnNldDsKLSAgR1N0cmluZyAqc3Byb3BzOwotICBndWludCBjb3VudDsKLSAgZ2Jvb2xlYW4gcmVzOwotICBHc3RNYXBJbmZvIG1hcDsKLSAgZ3VpbnQgaTsKLQotICBzcHJvcHMgPSBnX3N0cmluZ19uZXcgKCIiKTsKLSAgY291bnQgPSAwOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHBheWxvYWRlciwKLSAgICAgICJFbnRlcmluZyBmdW5jdGlvbiBnc3RfcnRwX2gyNjVfcGF5X3NldF92cHNfc3BzX3BwcyIpOwotCi0gIC8qIGJ1aWxkIHRoZSBzcHJvcC1wYXJhbWV0ZXItc2V0cyAqLwotICBmb3IgKGkgPSAwOyBpIDwgcGF5bG9hZGVyLT52cHMtPmxlbjsgaSsrKSB7Ci0gICAgR3N0QnVmZmVyICp2cHNfYnVmID0KLSAgICAgICAgR1NUX0JVRkZFUl9DQVNUIChnX3B0cl9hcnJheV9pbmRleCAocGF5bG9hZGVyLT52cHMsIGkpKTsKLQotICAgIGdzdF9idWZmZXJfbWFwICh2cHNfYnVmLCAmbWFwLCBHU1RfTUFQX1JFQUQpOwotICAgIHNldCA9IGdfYmFzZTY0X2VuY29kZSAobWFwLmRhdGEsIG1hcC5zaXplKTsKLSAgICBnc3RfYnVmZmVyX3VubWFwICh2cHNfYnVmLCAmbWFwKTsKLQotICAgIGdfc3RyaW5nX2FwcGVuZF9wcmludGYgKHNwcm9wcywgIiVzJXMiLCBjb3VudCA/ICIsIiA6ICIiLCBzZXQpOwotICAgIGdfZnJlZSAoc2V0KTsKLSAgICBjb3VudCsrOwotICB9Ci0gIGZvciAoaSA9IDA7IGkgPCBwYXlsb2FkZXItPnNwcy0+bGVuOyBpKyspIHsKLSAgICBHc3RCdWZmZXIgKnNwc19idWYgPQotICAgICAgICBHU1RfQlVGRkVSX0NBU1QgKGdfcHRyX2FycmF5X2luZGV4IChwYXlsb2FkZXItPnNwcywgaSkpOwotCi0gICAgZ3N0X2J1ZmZlcl9tYXAgKHNwc19idWYsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgc2V0ID0gZ19iYXNlNjRfZW5jb2RlIChtYXAuZGF0YSwgbWFwLnNpemUpOwotICAgIGdzdF9idWZmZXJfdW5tYXAgKHNwc19idWYsICZtYXApOwotCi0gICAgZ19zdHJpbmdfYXBwZW5kX3ByaW50ZiAoc3Byb3BzLCAiJXMlcyIsIGNvdW50ID8gIiwiIDogIiIsIHNldCk7Ci0gICAgZ19mcmVlIChzZXQpOwotICAgIGNvdW50Kys7Ci0gIH0KLSAgZm9yIChpID0gMDsgaSA8IHBheWxvYWRlci0+cHBzLT5sZW47IGkrKykgewotICAgIEdzdEJ1ZmZlciAqcHBzX2J1ZiA9Ci0gICAgICAgIEdTVF9CVUZGRVJfQ0FTVCAoZ19wdHJfYXJyYXlfaW5kZXggKHBheWxvYWRlci0+cHBzLCBpKSk7Ci0KLSAgICBnc3RfYnVmZmVyX21hcCAocHBzX2J1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKLSAgICBzZXQgPSBnX2Jhc2U2NF9lbmNvZGUgKG1hcC5kYXRhLCBtYXAuc2l6ZSk7Ci0gICAgZ3N0X2J1ZmZlcl91bm1hcCAocHBzX2J1ZiwgJm1hcCk7Ci0KLSAgICBnX3N0cmluZ19hcHBlbmRfcHJpbnRmIChzcHJvcHMsICIlcyVzIiwgY291bnQgPyAiLCIgOiAiIiwgc2V0KTsKLSAgICBnX2ZyZWUgKHNldCk7Ci0gICAgY291bnQrKzsKLSAgfQotCi0gIGlmIChHX0xJS0VMWSAoY291bnQpKSB7Ci0gICAgLyogcHJvZmlsZSBpcyAyNCBiaXQuIEZvcmNlIGl0IHRvIHJlc3BlY3QgdGhlIGxpbWl0ICovCi0gICAgcHJvZmlsZSA9IGdfc3RyZHVwX3ByaW50ZiAoIiUwNngiLCBwYXlsb2FkZXItPnByb2ZpbGUgJiAweGZmZmZmZik7Ci0gICAgLyogY29tYmluZSBpbnRvIG91dHB1dCBjYXBzICovCi0gICAgcmVzID0gZ3N0X3J0cF9iYXNlX3BheWxvYWRfc2V0X291dGNhcHMgKGJhc2VwYXlsb2FkLAotICAgICAgICAic3Byb3AtcGFyYW1ldGVyLXNldHMiLCBHX1RZUEVfU1RSSU5HLCBzcHJvcHMtPnN0ciwgTlVMTCk7Ci0gICAgZ19mcmVlIChwcm9maWxlKTsKLSAgfSBlbHNlIHsKLSAgICByZXMgPSBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3V0Y2FwcyAoYmFzZXBheWxvYWQsIE5VTEwpOwotICB9Ci0gIGdfc3RyaW5nX2ZyZWUgKHNwcm9wcywgVFJVRSk7Ci0KLSAgcmV0dXJuIHJlczsKLX0KLQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdzdF9ydHBfaDI2NV9wYXlfc2V0Y2FwcyAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCwgR3N0Q2FwcyAqIGNhcHMpCi17Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXk7Ci0gIEdzdFN0cnVjdHVyZSAqc3RyOwotICBjb25zdCBHVmFsdWUgKnZhbHVlOwotICBHc3RNYXBJbmZvIG1hcDsKLSAgZ3VpbnQ4ICpkYXRhOwotICBnc2l6ZSBzaXplOwotICBHc3RCdWZmZXIgKmJ1ZmZlcjsKLSAgY29uc3QgZ2NoYXIgKmFsaWdubWVudCwgKnN0cmVhbV9mb3JtYXQ7Ci0gIGd1aW50OCBudW1fYXJyYXlzOwotCi0gIHJ0cGgyNjVwYXkgPSBHU1RfUlRQX0gyNjVfUEFZIChiYXNlcGF5bG9hZCk7Ci0KLSAgc3RyID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7Ci0KLSAgLyogd2UgY2FuIG9ubHkgc2V0IHRoZSBvdXRwdXQgY2FwcyB3aGVuIHdlIGZvdW5kIHRoZSBzcHJvcHMgYW5kIHByb2ZpbGUKLSAgICogTkFMcyAqLwotICBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9zZXRfb3B0aW9ucyAoYmFzZXBheWxvYWQsICJ2aWRlbyIsIFRSVUUsICJIMjY1IiwgOTAwMDApOwotCi0gIHJ0cGgyNjVwYXktPmFsaWdubWVudCA9IEdTVF9IMjY1X0FMSUdOTUVOVF9VTktOT1dOOwotICBhbGlnbm1lbnQgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHN0ciwgImFsaWdubWVudCIpOwotICBpZiAoYWxpZ25tZW50KSB7Ci0gICAgaWYgKGdfc3RyX2VxdWFsIChhbGlnbm1lbnQsICJhdSIpKQotICAgICAgcnRwaDI2NXBheS0+YWxpZ25tZW50ID0gR1NUX0gyNjVfQUxJR05NRU5UX0FVOwotICAgIGlmIChnX3N0cl9lcXVhbCAoYWxpZ25tZW50LCAibmFsIikpCi0gICAgICBydHBoMjY1cGF5LT5hbGlnbm1lbnQgPSBHU1RfSDI2NV9BTElHTk1FTlRfTkFMOwotICB9Ci0KLSAgcnRwaDI2NXBheS0+c3RyZWFtX2Zvcm1hdCA9IEdTVF9IMjY1X1NUUkVBTV9GT1JNQVRfVU5LTk9XTjsKLSAgc3RyZWFtX2Zvcm1hdCA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoc3RyLCAic3RyZWFtLWZvcm1hdCIpOwotICBpZiAoc3RyZWFtX2Zvcm1hdCkgewotICAgIGlmIChnX3N0cl9lcXVhbCAoc3RyZWFtX2Zvcm1hdCwgImh2YzEiKSkKLSAgICAgIHJ0cGgyNjVwYXktPnN0cmVhbV9mb3JtYXQgPSBHU1RfSDI2NV9TVFJFQU1fRk9STUFUX0hWQzE7Ci0gICAgaWYgKGdfc3RyX2VxdWFsIChzdHJlYW1fZm9ybWF0LCAiaGV2MSIpKQotICAgICAgcnRwaDI2NXBheS0+c3RyZWFtX2Zvcm1hdCA9IEdTVF9IMjY1X1NUUkVBTV9GT1JNQVRfSEVWMTsKLSAgICBpZiAoZ19zdHJfZXF1YWwgKHN0cmVhbV9mb3JtYXQsICJieXRlLXN0cmVhbSIpKQotICAgICAgcnRwaDI2NXBheS0+c3RyZWFtX2Zvcm1hdCA9IEdTVF9IMjY1X1NUUkVBTV9GT1JNQVRfQllURVNUUkVBTTsKLSAgfQotCi0gIC8qIHBhY2tldGl6ZWQgSEVWQyB2aWRlbyBoYXMgYSBjb2RlY19kYXRhICovCi0gIGlmICgodmFsdWUgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAoc3RyLCAiY29kZWNfZGF0YSIpKSkgewotICAgIGd1aW50IG51bV92cHMsIG51bV9zcHMsIG51bV9wcHM7Ci0gICAgZ2ludCBpLCBqLCBuYWxfc2l6ZTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJoYXZlIHBhY2tldGl6ZWQgaDI2NSIpOwotCi0gICAgYnVmZmVyID0gZ3N0X3ZhbHVlX2dldF9idWZmZXIgKHZhbHVlKTsKLQotICAgIGdzdF9idWZmZXJfbWFwIChidWZmZXIsICZtYXAsIEdTVF9NQVBfUkVBRCk7Ci0gICAgZGF0YSA9IG1hcC5kYXRhOwotICAgIHNpemUgPSBtYXAuc2l6ZTsKLQotICAgIC8qIHBhcnNlIHRoZSBoZXZjQyBkYXRhICovCi0gICAgaWYgKHNpemUgPCAyMykKLSAgICAgIGdvdG8gaGV2Y2NfdG9vX3NtYWxsOwotICAgIC8qIEhFVkNEZWNvZGVyQ29uZmlndXJhdGlvblZlcnNpb24gKG11c3QgYmUgMSkgKi8KLSAgICBpZiAoZGF0YVswXSAhPSAxKQotICAgICAgZ290byB3cm9uZ192ZXJzaW9uOwotCi0gICAgLyogcHJvZmlsZV9zcGFjZSB8IHRpZXJfZmxhZyB8IHByb2ZpbGVfaWRjICovCi0gICAgcnRwaDI2NXBheS0+cHJvZmlsZSA9IGRhdGFbMV07Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgInByb2ZpbGUgJTA2eCIsIHJ0cGgyNjVwYXktPnByb2ZpbGUpOwotCi0gICAgLyogcHJvZmlsZV9jb21wYXRpYmlsaXR5X2ZsYWdzICovCi0gICAgZm9yIChpID0gMjsgaSA8IDY7IGkrKykgewotICAgICAgZm9yIChqID0gNzsgaiA+PSAwOyBqLS0pIHsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgInByb2ZpbGVfY29tcGF0aWJpbGl0eV9mbGFnICUwNngiLAotICAgICAgICAgICAgKGRhdGFbaV0gPj4gaikgJiAxKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAicHJvZ3Jlc3NpdmVfc291cmNlX2ZsYWcgJTA2eCIsCi0gICAgICAgIChkYXRhWzZdID4+IDcpICYgMSk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImludGVybGFjZWRfc291cmNlX2ZsYWcgJTA2eCIsCi0gICAgICAgIChkYXRhWzZdID4+IDYpICYgMSk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgIm5vbl9wYWNrZWRfY29uc3RyYWludF9mbGFnICUwNngiLAotICAgICAgICAoZGF0YVs2XSA+PiA1KSAmIDEpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJmcmFtZV9vbmx5X2NvbnN0cmFpbnRfZmxhZyAlMDZ4IiwKLSAgICAgICAgKGRhdGFbNl0gPj4gNCkgJiAxKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJsZXZlbF9pZGMgJTA2eCIsIGRhdGFbMTJdKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJtaW5fc3BhdGlhbF9zZWdtZW50YXRpb25faWRjICUwNngiLAotICAgICAgICAoKGRhdGFbMTNdIF4gMHhmMCkgPDwgOCkgKyBkYXRhWzE0XSk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgInBhcnJhbGxlbGlzbVR5cGUgJTA2eCAoaWdub3JlZCBieSBwYWxvYWRlcikiLAotICAgICAgICBkYXRhWzE1XSk7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAic3BzX2Nocm9tYV9mb3JtYXRfaWRjICUwNngiLAotICAgICAgICBkYXRhWzE2XSBeIDB4ZmMpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJiaXRfZGVwdGhfbHVtYV9taW51czggJTA2eCIsCi0gICAgICAgIGRhdGFbMTddIF4gMHhmOCk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImJpdF9kZXB0aF9jaHJvbWFfbWludXM4ICUwNngiLAotICAgICAgICBkYXRhWzE4XSBeIDB4ZjgpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJhdmdGcmFtZVJhdGUgJTA2eCIsIGRhdGFbMTldKTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiYXZnRnJhbWVSYXRlICUwNngiLCBkYXRhWzIwXSk7Ci0KLSAgICAvKiBjb25zdEZyYW1lUmF0ZSgyIGJpdHMpOiAwLCBzdHJlYW0gbWF5IG9yIG1heSBub3QgYmUgb2YgY29uc3RhbnQgZnJhbWVyYXRlCi0gICAgICogbnVtVGVtcG9yYWxMYXllcnMgKDMgYml0cyk6IG51bWJlciBvZiB0ZW1wb3JhbCBsYXllcnMsIHZhbHVlIGZyb20gU1BTCi0gICAgICogVGVtcG9yYWxJZE5lc3RlZCAoMSBiaXQpOiBzcHNfdGVtcG9yYWxfaWRfbmVzdGluZ19mbGFnIGZyb20gU1BTCi0gICAgICogbGVuZ3RoU2l6ZU1pbnVzT25lICgyIGJpdHMpOiBwbHVzIDEgaW5kaWNhdGVzIHRoZSBsZW5ndGggb2YgdGhlIE5BTFVuaXRMZW5ndGggKi8KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiY29uc3RGcmFtZVJhdGUgJTA2eCIsCi0gICAgICAgIChkYXRhWzIxXSA+PiA2KSAmIDB4MDMpOwotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJudW1UZW1wb3JhbExheWVycyAlMDZ4IiwKLSAgICAgICAgKGRhdGFbMjFdID4+IDMpICYgMHgwNyk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgInRlbXBvcmFsX2lkX25lc3RpbmdfZmxhZyAlMDZ4IiwKLSAgICAgICAgKGRhdGFbMjFdID4+IDIpICYgMHgwMSk7Ci0KLSAgICBydHBoMjY1cGF5LT5uYWxfbGVuZ3RoX3NpemUgPSAoZGF0YVsyMV0gJiAweDMpICsgMTsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAibmFsIGxlbmd0aCAldSIsIHJ0cGgyNjVwYXktPm5hbF9sZW5ndGhfc2l6ZSk7Ci0KLSAgICBudW1fYXJyYXlzID0gR1NUX1JFQURfVUlOVDggKGRhdGEgKyAyMik7Ci0KLSAgICBkYXRhICs9IDIzOwotICAgIHNpemUgLT0gMjM7Ci0KLSAgICBpZiAobnVtX2FycmF5cyA+IDApIHsKLSAgICAgIGlmIChkYXRhWzBdID09ICgweDAwIHwgMHgyMCkpIHsgICAvKiBWUFMgKi8KLQotICAgICAgICBkYXRhKys7Ci0gICAgICAgIG51bV92cHMgPSBkYXRhWzBdIDw8IDggfCBkYXRhWzFdOwotICAgICAgICBkYXRhICs9IDI7Ci0gICAgICAgIHNpemUgLT0gMjsKLQotICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtX3ZwczsgaSsrKSB7Ci0KLSAgICAgICAgICBHc3RCdWZmZXIgKnZwc19idWY7Ci0KLSAgICAgICAgICBpZiAoc2l6ZSA8IDIpCi0gICAgICAgICAgICBnb3RvIGhldmNjX2Vycm9yOwotCi0gICAgICAgICAgbmFsX3NpemUgPSAoZGF0YVswXSA8PCA4KSB8IGRhdGFbMV07Ci0gICAgICAgICAgZGF0YSArPSAyOwotICAgICAgICAgIHNpemUgLT0gMjsKLQotICAgICAgICAgIEdTVF9MT0dfT0JKRUNUIChydHBoMjY1cGF5LCAiVlBTICVkIHNpemUgJWQiLCBpLCBuYWxfc2l6ZSk7Ci0KLSAgICAgICAgICBpZiAoc2l6ZSA8IG5hbF9zaXplKQotICAgICAgICAgICAgZ290byBoZXZjY19lcnJvcjsKLQotICAgICAgICAgIC8qIG1ha2UgYSBidWZmZXIgb3V0IG9mIGl0IGFuZCBhZGQgdG8gVlBTIGxpc3QgKi8KLSAgICAgICAgICB2cHNfYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChuYWxfc2l6ZSk7Ci0gICAgICAgICAgZ3N0X2J1ZmZlcl9maWxsICh2cHNfYnVmLCAwLCBkYXRhLCBuYWxfc2l6ZSk7Ci0gICAgICAgICAgZ3N0X3J0cF9oMjY1X2FkZF92cHNfc3BzX3BwcyAoR1NUX0VMRU1FTlQgKHJ0cGgyNjVwYXkpLAotICAgICAgICAgICAgICBydHBoMjY1cGF5LT52cHMsIHJ0cGgyNjVwYXktPnNwcywgcnRwaDI2NXBheS0+cHBzLCB2cHNfYnVmKTsKLSAgICAgICAgICBkYXRhICs9IG5hbF9zaXplOwotICAgICAgICAgIHNpemUgLT0gbmFsX3NpemU7Ci0gICAgICAgIH0KLSAgICAgIH0KLQotICAgICAgLS1udW1fYXJyYXlzOwotICAgIH0KLQotICAgIGlmIChudW1fYXJyYXlzID4gMCkgewotICAgICAgaWYgKGRhdGFbMF0gPT0gKDB4MDAgfCAweDIxKSkgeyAgIC8qIFNQUyAqLwotCi0gICAgICAgIGRhdGErKzsKLSAgICAgICAgbnVtX3NwcyA9IGRhdGFbMF0gPDwgOCB8IGRhdGFbMV07Ci0gICAgICAgIGRhdGEgKz0gMjsKLSAgICAgICAgc2l6ZSAtPSAyOwotCi0gICAgICAgIGZvciAoaSA9IDA7IGkgPCBudW1fc3BzOyBpKyspIHsKLQotICAgICAgICAgIEdzdEJ1ZmZlciAqc3BzX2J1ZjsKLQotICAgICAgICAgIGlmIChzaXplIDwgMikKLSAgICAgICAgICAgIGdvdG8gaGV2Y2NfZXJyb3I7Ci0KLSAgICAgICAgICBuYWxfc2l6ZSA9IChkYXRhWzBdIDw8IDgpIHwgZGF0YVsxXTsKLSAgICAgICAgICBkYXRhICs9IDI7Ci0gICAgICAgICAgc2l6ZSAtPSAyOwotCi0gICAgICAgICAgR1NUX0xPR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJTUFMgJWQgc2l6ZSAlZCIsIGksIG5hbF9zaXplKTsKLQotICAgICAgICAgIGlmIChzaXplIDwgbmFsX3NpemUpCi0gICAgICAgICAgICBnb3RvIGhldmNjX2Vycm9yOwotCi0gICAgICAgICAgLyogbWFrZSBhIGJ1ZmZlciBvdXQgb2YgaXQgYW5kIGFkZCB0byBTUFMgbGlzdCAqLwotICAgICAgICAgIHNwc19idWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG5hbF9zaXplKTsKLSAgICAgICAgICBnc3RfYnVmZmVyX2ZpbGwgKHNwc19idWYsIDAsIGRhdGEsIG5hbF9zaXplKTsKLSAgICAgICAgICBnc3RfcnRwX2gyNjVfYWRkX3Zwc19zcHNfcHBzIChHU1RfRUxFTUVOVCAocnRwaDI2NXBheSksCi0gICAgICAgICAgICAgIHJ0cGgyNjVwYXktPnZwcywgcnRwaDI2NXBheS0+c3BzLCBydHBoMjY1cGF5LT5wcHMsIHNwc19idWYpOwotICAgICAgICAgIGRhdGEgKz0gbmFsX3NpemU7Ci0gICAgICAgICAgc2l6ZSAtPSBuYWxfc2l6ZTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICAtLW51bV9hcnJheXM7Ci0gICAgfQotCi0gICAgaWYgKG51bV9hcnJheXMgPiAwKSB7Ci0gICAgICBpZiAoZGF0YVswXSA9PSAoMHgwMCB8IDB4MjIpKSB7ICAgLyogUFBTICovCi0KLSAgICAgICAgZGF0YSsrOwotICAgICAgICBudW1fcHBzID0gZGF0YVswXSA8PCA4IHwgZGF0YVsxXTsKLSAgICAgICAgZGF0YSArPSAyOwotICAgICAgICBzaXplIC09IDI7Ci0KLSAgICAgICAgZm9yIChpID0gMDsgaSA8IG51bV9wcHM7IGkrKykgewotCi0gICAgICAgICAgR3N0QnVmZmVyICpwcHNfYnVmOwotCi0gICAgICAgICAgaWYgKHNpemUgPCAyKQotICAgICAgICAgICAgZ290byBoZXZjY19lcnJvcjsKLQotICAgICAgICAgIG5hbF9zaXplID0gKGRhdGFbMF0gPDwgOCkgfCBkYXRhWzFdOwotICAgICAgICAgIGRhdGEgKz0gMjsKLSAgICAgICAgICBzaXplIC09IDI7Ci0KLSAgICAgICAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NXBheSwgIlBQUyAlZCBzaXplICVkIiwgaSwgbmFsX3NpemUpOwotCi0gICAgICAgICAgaWYgKHNpemUgPCBuYWxfc2l6ZSkKLSAgICAgICAgICAgIGdvdG8gaGV2Y2NfZXJyb3I7Ci0KLSAgICAgICAgICAvKiBtYWtlIGEgYnVmZmVyIG91dCBvZiBpdCBhbmQgYWRkIHRvIFBQUyBsaXN0ICovCi0gICAgICAgICAgcHBzX2J1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAobmFsX3NpemUpOwotICAgICAgICAgIGdzdF9idWZmZXJfZmlsbCAocHBzX2J1ZiwgMCwgZGF0YSwgbmFsX3NpemUpOwotICAgICAgICAgIGdzdF9ydHBfaDI2NV9hZGRfdnBzX3Nwc19wcHMgKEdTVF9FTEVNRU5UIChydHBoMjY1cGF5KSwKLSAgICAgICAgICAgICAgcnRwaDI2NXBheS0+dnBzLCBydHBoMjY1cGF5LT5zcHMsIHJ0cGgyNjVwYXktPnBwcywgcHBzX2J1Zik7Ci0gICAgICAgICAgZGF0YSArPSBuYWxfc2l6ZTsKLSAgICAgICAgICBzaXplIC09IG5hbF9zaXplOwotICAgICAgICB9Ci0gICAgICB9Ci0KLSAgICAgIC0tbnVtX2FycmF5czsKLSAgICB9Ci0KLSAgICAvKiBhbmQgdXBkYXRlIHRoZSBjYXBzIHdpdGggdGhlIGNvbGxlY3RlZCBkYXRhICovCi0gICAgaWYgKCFnc3RfcnRwX2gyNjVfcGF5X3NldF92cHNfc3BzX3BwcyAoYmFzZXBheWxvYWQpKQotICAgICAgZ290byBzZXRfdnBzX3Nwc19wcHNfZmFpbGVkOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgIkNhcHMgaGF2ZSBiZWVuIHNldCIpOwotCi0gICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwKTsKLSAgfSBlbHNlIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiaGF2ZSBieXRlc3RyZWFtIGgyNjUiKTsKLSAgfQotCi0gIHJldHVybiBUUlVFOwotCi1oZXZjY190b29fc21hbGw6Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChydHBoMjY1cGF5LCAiaGV2Y0Mgc2l6ZSAlIiBHX0dTSVpFX0ZPUk1BVCAiIDwgNyIsIHNpemUpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLXdyb25nX3ZlcnNpb246Ci0gIHsKLSAgICBHU1RfRVJST1JfT0JKRUNUIChydHBoMjY1cGF5LCAid3JvbmcgaGV2Y0MgdmVyc2lvbiIpOwotICAgIGdvdG8gZXJyb3I7Ci0gIH0KLWhldmNjX2Vycm9yOgotICB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAocnRwaDI2NXBheSwgImhldmNDIHRvbyBzbWFsbCAiKTsKLSAgICBnb3RvIGVycm9yOwotICB9Ci1zZXRfdnBzX3Nwc19wcHNfZmFpbGVkOgotICB7Ci0gICAgR1NUX0VSUk9SX09CSkVDVCAocnRwaDI2NXBheSwgImZhaWxlZCB0byBzZXQgdnBzL3Nwcy9wcHMiKTsKLSAgICBnb3RvIGVycm9yOwotICB9Ci1lcnJvcjoKLSAgewotICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJm1hcCk7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX2gyNjVfcGF5X3BhcnNlX3Nwcm9wX3BhcmFtZXRlcl9zZXRzIChHc3RSdHBIMjY1UGF5ICogcnRwaDI2NXBheSkKLXsKLSAgY29uc3QgZ2NoYXIgKnBzOwotICBnY2hhciAqKnBhcmFtczsKLSAgZ3VpbnQgbGVuOwotICBnaW50IGk7Ci0gIEdzdEJ1ZmZlciAqYnVmOwotCi0gIHBzID0gcnRwaDI2NXBheS0+c3Byb3BfcGFyYW1ldGVyX3NldHM7Ci0gIGlmIChwcyA9PSBOVUxMKQotICAgIHJldHVybjsKLQotICBnc3RfcnRwX2gyNjVfcGF5X2NsZWFyX3Zwc19zcHNfcHBzIChydHBoMjY1cGF5KTsKLQotICBwYXJhbXMgPSBnX3N0cnNwbGl0IChwcywgIiwiLCAwKTsKLSAgbGVuID0gZ19zdHJ2X2xlbmd0aCAocGFyYW1zKTsKLQotICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAid2UgaGF2ZSAlZCBwYXJhbXMiLCBsZW4pOwotCi0gIGZvciAoaSA9IDA7IHBhcmFtc1tpXTsgaSsrKSB7Ci0gICAgZ3NpemUgbmFsX2xlbjsKLSAgICBHc3RNYXBJbmZvIG1hcDsKLSAgICBndWludDggKm5hbHA7Ci0gICAgZ3VpbnQgc2F2ZSA9IDA7Ci0gICAgZ2ludCBzdGF0ZSA9IDA7Ci0KLSAgICBuYWxfbGVuID0gc3RybGVuIChwYXJhbXNbaV0pOwotICAgIGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FuZF9hbGxvYyAobmFsX2xlbik7Ci0KLSAgICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmbWFwLCBHU1RfTUFQX1dSSVRFKTsKLSAgICBuYWxwID0gbWFwLmRhdGE7Ci0gICAgbmFsX2xlbiA9IGdfYmFzZTY0X2RlY29kZV9zdGVwIChwYXJhbXNbaV0sIG5hbF9sZW4sIG5hbHAsICZzdGF0ZSwgJnNhdmUpOwotICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJm1hcCk7Ci0gICAgZ3N0X2J1ZmZlcl9yZXNpemUgKGJ1ZiwgMCwgbmFsX2xlbik7Ci0KLSAgICBpZiAoIW5hbF9sZW4pIHsKLSAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7Ci0gICAgICBjb250aW51ZTsKLSAgICB9Ci0KLSAgICBnc3RfcnRwX2gyNjVfYWRkX3Zwc19zcHNfcHBzIChHU1RfRUxFTUVOVCAocnRwaDI2NXBheSksIHJ0cGgyNjVwYXktPnZwcywKLSAgICAgICAgcnRwaDI2NXBheS0+c3BzLCBydHBoMjY1cGF5LT5wcHMsIGJ1Zik7Ci0gIH0KLSAgZ19zdHJmcmVldiAocGFyYW1zKTsKLX0KLQotc3RhdGljIGd1aW50Ci1uZXh0X3N0YXJ0X2NvZGUgKGNvbnN0IGd1aW50OCAqIGRhdGEsIGd1aW50IHNpemUpCi17Ci0gIC8qIEJveWVyLU1vb3JlIHN0cmluZyBtYXRjaGluZyBhbGdvcml0aG0sIGluIGEgZGVnZW5lcmF0aXZlCi0gICAqIHNlbnNlIGJlY2F1c2Ugb3VyIHNlYXJjaCAnYWxwaGFiZXQnIGlzIGJpbmFyeSAtIDAgJiAxIG9ubHkuCi0gICAqIFRoaXMgYWxsb3cgdXMgdG8gc2ltcGxpZnkgdGhlIGdlbmVyYWwgQk0gYWxnb3JpdGhtIHRvIGEgdmVyeQotICAgKiBzaW1wbGUgZm9ybS4gKi8KLSAgLyogYXNzdW1lIDEgaXMgaW4gdGhlIDN0aCBieXRlICovCi0gIGd1aW50IG9mZnNldCA9IDI7Ci0KLSAgd2hpbGUgKG9mZnNldCA8IHNpemUpIHsKLSAgICBpZiAoMSA9PSBkYXRhW29mZnNldF0pIHsKLSAgICAgIHVuc2lnbmVkIGludCBzaGlmdCA9IG9mZnNldDsKLQotICAgICAgaWYgKDAgPT0gZGF0YVstLXNoaWZ0XSkgewotICAgICAgICBpZiAoMCA9PSBkYXRhWy0tc2hpZnRdKSB7Ci0gICAgICAgICAgcmV0dXJuIHNoaWZ0OwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICAvKiBUaGUganVtcCBpcyBhbHdheXMgMyBiZWNhdXNlIG9mIHRoZSAxIHByZXZpb3VzbHkgbWF0Y2hlZC4KLSAgICAgICAqIEFsbCB0aGUgMCdzIG11c3QgYmUgYWZ0ZXIgdGhpcyAnMScgbWF0Y2hlZCBhdCBvZmZzZXQgKi8KLSAgICAgIG9mZnNldCArPSAzOwotICAgIH0gZWxzZSBpZiAoMCA9PSBkYXRhW29mZnNldF0pIHsKLSAgICAgIC8qIG1heWJlIG5leHQgYnl0ZSBpcyAxPyAqLwotICAgICAgb2Zmc2V0Kys7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8qIGNhbiBqdW1wIDMgYnl0ZXMgZm9yd2FyZCAqLwotICAgICAgb2Zmc2V0ICs9IDM7Ci0gICAgfQotICAgIC8qIGF0IGVhY2ggaXRlcmF0aW9uLCB3ZSByZXNjYW4gaW4gYSBiYWNrd2FyZCBtYW5uZXIgdW50aWwKLSAgICAgKiB3ZSBtYXRjaCAwLjAuMSBpbiByZXZlcnNlIG9yZGVyLiBTaW5jZSBvdXIgc2VhcmNoIHN0cmluZwotICAgICAqIGhhcyBvbmx5IDIgJ2FscGFiZXRzJyAoaS5lLiAwICYgMSksIHdlIGtub3cgdGhhdCBhbnkKLSAgICAgKiBtaXNtYXRjaCB3aWxsIGZvcmNlIHVzIHRvIHNoaWZ0IGEgZml4ZWQgbnVtYmVyIG9mIHN0ZXBzICovCi0gIH0KLSAgR1NUX0RFQlVHICgiQ2Fubm90IGZpbmQgbmV4dCBOQUwgc3RhcnQgY29kZS4gcmV0dXJuaW5nICV1Iiwgc2l6ZSk7Ci0KLSAgcmV0dXJuIHNpemU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3J0cF9oMjY1X3BheV9kZWNvZGVfbmFsIChHc3RSdHBIMjY1UGF5ICogcGF5bG9hZGVyLAotICAgIGNvbnN0IGd1aW50OCAqIGRhdGEsIGd1aW50IHNpemUsIEdzdENsb2NrVGltZSBkdHMsIEdzdENsb2NrVGltZSBwdHMpCi17Ci0gIGd1aW50OCBoZWFkZXIsIHR5cGU7Ci0gIGdib29sZWFuIHVwZGF0ZWQ7Ci0KLSAgLyogZGVmYXVsdCBpcyBubyB1cGRhdGUgKi8KLSAgdXBkYXRlZCA9IEZBTFNFOwotCi0gIEdTVF9ERUJVRyAoIk5BTCBwYXlsb2FkIGxlbj0ldSIsIHNpemUpOwotCi0gIGhlYWRlciA9IGRhdGFbMF07Ci0gIHR5cGUgPSBoZWFkZXIgJiAweDNmOwotCi0gIC8qIFdlIHJlY29yZCB0aGUgdGltZXN0YW1wIG9mIHRoZSBsYXN0IFNQUy9QUFMgc28KLSAgICogdGhhdCB3ZSBjYW4gaW5zZXJ0IHRoZW0gYXQgcmVndWxhciBpbnRlcnZhbHMgYW5kIHdoZW4gbmVlZGVkLiAqLwotICBpZiAoR1NUX0gyNjVfTkFMX1ZQUyA9PSB0eXBlIHx8IEdTVF9IMjY1X05BTF9TUFMgPT0gdHlwZQotICAgICAgfHwgR1NUX0gyNjVfTkFMX1BQUyA9PSB0eXBlKSB7Ci0gICAgR3N0QnVmZmVyICpuYWw7Ci0KLSAgICAvKiBlbmNvZGUgdGhlIGVudGlyZSBOQUwgaW4gYmFzZTY0ICovCi0gICAgR1NUX0RFQlVHICgiRm91bmQgJXMgJXggJXggJXggTGVuPSV1IiwKLSAgICAgICAgdHlwZSA9PSBHU1RfSDI2NV9OQUxfVlBTID8gIlZQUyIgOiB0eXBlID09Ci0gICAgICAgIEdTVF9IMjY1X05BTF9TUFMgPyAiU1BTIiA6ICJQUFMiLCAoaGVhZGVyID4+IDcpLCAoaGVhZGVyID4+IDUpICYgMywKLSAgICAgICAgdHlwZSwgc2l6ZSk7Ci0KLSAgICBuYWwgPSBnc3RfYnVmZmVyX25ld19hbGxvY2F0ZSAoTlVMTCwgc2l6ZSwgTlVMTCk7Ci0gICAgZ3N0X2J1ZmZlcl9maWxsIChuYWwsIDAsIGRhdGEsIHNpemUpOwotCi0gICAgdXBkYXRlZCA9IGdzdF9ydHBfaDI2NV9hZGRfdnBzX3Nwc19wcHMgKEdTVF9FTEVNRU5UIChwYXlsb2FkZXIpLAotICAgICAgICBwYXlsb2FkZXItPnZwcywgcGF5bG9hZGVyLT5zcHMsIHBheWxvYWRlci0+cHBzLCBuYWwpOwotCi0gICAgLyogcmVtZW1iZXIgd2hlbiB3ZSBsYXN0IHNhdyBWUFMgKi8KLSAgICBpZiAodXBkYXRlZCAmJiBwdHMgIT0gLTEpCi0gICAgICBwYXlsb2FkZXItPmxhc3RfdnBzX3Nwc19wcHMgPSBwdHM7Ci0gIH0gZWxzZSB7Ci0gICAgR1NUX0RFQlVHICgiTkFMOiAleCAleCAleCBMZW4gPSAldSIsIChoZWFkZXIgPj4gNyksCi0gICAgICAgIChoZWFkZXIgPj4gNSkgJiAzLCB0eXBlLCBzaXplKTsKLSAgfQotCi0gIHJldHVybiB1cGRhdGVkOwotfQotCi1zdGF0aWMgR3N0Rmxvd1JldHVybgotZ3N0X3J0cF9oMjY1X3BheV9wYXlsb2FkX25hbCAoR3N0UlRQQmFzZVBheWxvYWQgKiBiYXNlcGF5bG9hZCwKLSAgICBHc3RCdWZmZXIgKiBwYXlidWYsIEdzdENsb2NrVGltZSBkdHMsIEdzdENsb2NrVGltZSBwdHMsIGdib29sZWFuIGVuZF9vZl9hdSk7Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfcnRwX2gyNjVfcGF5X3NlbmRfdnBzX3Nwc19wcHMgKEdzdFJUUEJhc2VQYXlsb2FkICogYmFzZXBheWxvYWQsCi0gICAgR3N0UnRwSDI2NVBheSAqIHJ0cGgyNjVwYXksIEdzdENsb2NrVGltZSBkdHMsIEdzdENsb2NrVGltZSBwdHMpCi17Ci0gIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7Ci0gIGdib29sZWFuIHNlbnRfYWxsX3Zwc19zcHNfcHBzID0gVFJVRTsKLSAgZ3VpbnQgaTsKLQotICBmb3IgKGkgPSAwOyBpIDwgcnRwaDI2NXBheS0+dnBzLT5sZW47IGkrKykgewotICAgIEdzdEJ1ZmZlciAqdnBzX2J1ZiA9Ci0gICAgICAgIEdTVF9CVUZGRVJfQ0FTVCAoZ19wdHJfYXJyYXlfaW5kZXggKHJ0cGgyNjVwYXktPnZwcywgaSkpOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwgImluc2VydGluZyBWUFMgaW4gdGhlIHN0cmVhbSIpOwotICAgIC8qIHJlc2VuZCBWUFMgKi8KLSAgICByZXQgPSBnc3RfcnRwX2gyNjVfcGF5X3BheWxvYWRfbmFsIChiYXNlcGF5bG9hZCwgZ3N0X2J1ZmZlcl9yZWYgKHZwc19idWYpLAotICAgICAgICBkdHMsIHB0cywgRkFMU0UpOwotICAgIC8qIE5vdCBjcml0aWNhbCBoZXJlOyBidXQgdGhyb3cgYSB3YXJuaW5nICovCi0gICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgICAgc2VudF9hbGxfdnBzX3Nwc19wcHMgPSBGQUxTRTsKLSAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoYmFzZXBheWxvYWQsICJQcm9ibGVtIHB1c2hpbmcgVlBTIik7Ci0gICAgfQotICB9Ci0gIGZvciAoaSA9IDA7IGkgPCBydHBoMjY1cGF5LT5zcHMtPmxlbjsgaSsrKSB7Ci0gICAgR3N0QnVmZmVyICpzcHNfYnVmID0KLSAgICAgICAgR1NUX0JVRkZFUl9DQVNUIChnX3B0cl9hcnJheV9pbmRleCAocnRwaDI2NXBheS0+c3BzLCBpKSk7Ci0KLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LCAiaW5zZXJ0aW5nIFNQUyBpbiB0aGUgc3RyZWFtIik7Ci0gICAgLyogcmVzZW5kIFNQUyAqLwotICAgIHJldCA9IGdzdF9ydHBfaDI2NV9wYXlfcGF5bG9hZF9uYWwgKGJhc2VwYXlsb2FkLCBnc3RfYnVmZmVyX3JlZiAoc3BzX2J1ZiksCi0gICAgICAgIGR0cywgcHRzLCBGQUxTRSk7Ci0gICAgLyogTm90IGNyaXRpY2FsIGhlcmU7IGJ1dCB0aHJvdyBhIHdhcm5pbmcgKi8KLSAgICBpZiAocmV0ICE9IEdTVF9GTE9XX09LKSB7Ci0gICAgICBzZW50X2FsbF92cHNfc3BzX3BwcyA9IEZBTFNFOwotICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChiYXNlcGF5bG9hZCwgIlByb2JsZW0gcHVzaGluZyBTUFMiKTsKLSAgICB9Ci0gIH0KLSAgZm9yIChpID0gMDsgaSA8IHJ0cGgyNjVwYXktPnBwcy0+bGVuOyBpKyspIHsKLSAgICBHc3RCdWZmZXIgKnBwc19idWYgPQotICAgICAgICBHU1RfQlVGRkVSX0NBU1QgKGdfcHRyX2FycmF5X2luZGV4IChydHBoMjY1cGF5LT5wcHMsIGkpKTsKLQotICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJpbnNlcnRpbmcgUFBTIGluIHRoZSBzdHJlYW0iKTsKLSAgICAvKiByZXNlbmQgUFBTICovCi0gICAgcmV0ID0gZ3N0X3J0cF9oMjY1X3BheV9wYXlsb2FkX25hbCAoYmFzZXBheWxvYWQsIGdzdF9idWZmZXJfcmVmIChwcHNfYnVmKSwKLSAgICAgICAgZHRzLCBwdHMsIEZBTFNFKTsKLSAgICAvKiBOb3QgY3JpdGljYWwgaGVyZTsgYnV0IHRocm93IGEgd2FybmluZyAqLwotICAgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKLSAgICAgIHNlbnRfYWxsX3Zwc19zcHNfcHBzID0gRkFMU0U7Ci0gICAgICBHU1RfV0FSTklORyAoIlByb2JsZW0gcHVzaGluZyBQUFMiKTsKLSAgICB9Ci0gIH0KLQotICBpZiAocHRzICE9IC0xICYmIHNlbnRfYWxsX3Zwc19zcHNfcHBzKQotICAgIHJ0cGgyNjVwYXktPmxhc3RfdnBzX3Nwc19wcHMgPSBwdHM7Ci0KLSAgcmV0dXJuIHJldDsKLX0KLQotc3RhdGljIEdzdEZsb3dSZXR1cm4KLWdzdF9ydHBfaDI2NV9wYXlfcGF5bG9hZF9uYWwgKEdzdFJUUEJhc2VQYXlsb2FkICogYmFzZXBheWxvYWQsCi0gICAgR3N0QnVmZmVyICogcGF5YnVmLCBHc3RDbG9ja1RpbWUgZHRzLCBHc3RDbG9ja1RpbWUgcHRzLCBnYm9vbGVhbiBlbmRfb2ZfYXUpCi17Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXk7Ci0gIEdzdEZsb3dSZXR1cm4gcmV0OwotICBndWludDggbmFsSGVhZGVyWzJdOwotICBndWludDggbmFsVHlwZTsKLSAgZ3VpbnQgcGFja2V0X2xlbiwgcGF5bG9hZF9sZW4sIG10dTsKLSAgR3N0QnVmZmVyICpvdXRidWY7Ci0gIGd1aW50OCAqcGF5bG9hZDsKLSAgR3N0QnVmZmVyTGlzdCAqbGlzdCA9IE5VTEw7Ci0gIGdib29sZWFuIHNlbmRfdnBzX3Nwc19wcHM7Ci0gIEdzdFJUUEJ1ZmZlciBydHAgPSB7IE5VTEwgfTsKLSAgZ3VpbnQgc2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKHBheWJ1Zik7Ci0KLSAgcnRwaDI2NXBheSA9IEdTVF9SVFBfSDI2NV9QQVkgKGJhc2VwYXlsb2FkKTsKLSAgbXR1ID0gR1NUX1JUUF9CQVNFX1BBWUxPQURfTVRVIChydHBoMjY1cGF5KTsKLQotICBnc3RfYnVmZmVyX2V4dHJhY3QgKHBheWJ1ZiwgMCwgbmFsSGVhZGVyLCAyKTsKLSAgbmFsVHlwZSA9IChuYWxIZWFkZXJbMF0gPj4gMSkgJiAweDNmOwotCi0gIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJQcm9jZXNzaW5nIEJ1ZmZlciB3aXRoIE5BTCBUWVBFPSVkIiwgbmFsVHlwZSk7Ci0KLSAgLyogc2hvdWxkIHNldCBzcmMgY2FwcyBiZWZvcmUgcHVzaGluZyBzdHVmZiwKLSAgICogYW5kIGlmIHdlIGRpZCBub3Qgc2VlIGVub3VnaCBWUFMvU1BTL1BQUywgdGhhdCBtYXkgbm90IGJlIHRoZSBjYXNlICovCi0gIGlmIChHX1VOTElLRUxZICghZ3N0X3BhZF9oYXNfY3VycmVudF9jYXBzIChHU1RfUlRQX0JBU0VfUEFZTE9BRF9TUkNQQUQKLSAgICAgICAgICAgICAgKGJhc2VwYXlsb2FkKSkpKQotICAgIGdzdF9ydHBfaDI2NV9wYXlfc2V0X3Zwc19zcHNfcHBzIChiYXNlcGF5bG9hZCk7Ci0KLSAgc2VuZF92cHNfc3BzX3BwcyA9IEZBTFNFOwotCi0gIC8qIGNoZWNrIGlmIHdlIG5lZWQgdG8gZW1pdCBhbiBWUFMvU1BTL1BQUyBub3cgKi8KLSAgaWYgKCgobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfVFJBSUxfTikKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfVFJBSUxfUikKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfVFNBX04pCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1RTQV9SKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9TVFNBX04pCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX1NUU0FfUikKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfUkFTTF9OKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9SQVNMX1IpCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX0JMQV9XX0xQKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9CTEFfV19SQURMKQotICAgICAgICAgIHx8IChuYWxUeXBlID09IEdTVF9IMjY1X05BTF9TTElDRV9CTEFfTl9MUCkKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfSURSX1dfUkFETCkKLSAgICAgICAgICB8fCAobmFsVHlwZSA9PSBHU1RfSDI2NV9OQUxfU0xJQ0VfSURSX05fTFApCi0gICAgICAgICAgfHwgKG5hbFR5cGUgPT0gR1NUX0gyNjVfTkFMX1NMSUNFX0NSQV9OVVQpKQotICAgICAgJiYgcnRwaDI2NXBheS0+dnBzX3Nwc19wcHNfaW50ZXJ2YWwgPiAwKSB7Ci0KLSAgICBpZiAocnRwaDI2NXBheS0+bGFzdF92cHNfc3BzX3BwcyAhPSAtMSkgewotICAgICAgZ3VpbnQ2NCBkaWZmOwotCi0gICAgICBHU1RfTE9HX09CSkVDVCAocnRwaDI2NXBheSwKLSAgICAgICAgICAibm93ICUiIEdTVF9USU1FX0ZPUk1BVCAiLCBsYXN0IFZQUy9TUFMvUFBTICUiIEdTVF9USU1FX0ZPUk1BVCwKLSAgICAgICAgICBHU1RfVElNRV9BUkdTIChwdHMpLCBHU1RfVElNRV9BUkdTIChydHBoMjY1cGF5LT5sYXN0X3Zwc19zcHNfcHBzKSk7Ci0KLSAgICAgIC8qIGNhbGN1bGF0ZSBkaWZmIGJldHdlZW4gbGFzdCBTUFMvUFBTIGluIG1pbGxpc2Vjb25kcyAqLwotICAgICAgaWYgKHB0cyA+IHJ0cGgyNjVwYXktPmxhc3RfdnBzX3Nwc19wcHMpCi0gICAgICAgIGRpZmYgPSBwdHMgLSBydHBoMjY1cGF5LT5sYXN0X3Zwc19zcHNfcHBzOwotICAgICAgZWxzZQotICAgICAgICBkaWZmID0gMDsKLQotICAgICAgR1NUX0RFQlVHX09CSkVDVCAocnRwaDI2NXBheSwKLSAgICAgICAgICAiaW50ZXJ2YWwgc2luY2UgbGFzdCBWUFMvU1BTL1BQUyAlIiBHU1RfVElNRV9GT1JNQVQsCi0gICAgICAgICAgR1NUX1RJTUVfQVJHUyAoZGlmZikpOwotCi0gICAgICAvKiBiaWdnZXIgdGhhbiBpbnRlcnZhbCwgcXVldWUgU1BTL1BQUyAqLwotICAgICAgaWYgKEdTVF9USU1FX0FTX1NFQ09ORFMgKGRpZmYpID49IHJ0cGgyNjVwYXktPnZwc19zcHNfcHBzX2ludGVydmFsKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJ0aW1lIHRvIHNlbmQgVlBTL1NQUy9QUFMiKTsKLSAgICAgICAgc2VuZF92cHNfc3BzX3BwcyA9IFRSVUU7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8qIG5vIGtub3duIHByZXZpb3VzIFNQUy9QUFMgdGltZSwgc2VuZCBub3cgKi8KLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHJ0cGgyNjVwYXksICJubyBwcmV2aW91cyBWUFMvU1BTL1BQUyB0aW1lLCBzZW5kIG5vdyIpOwotICAgICAgc2VuZF92cHNfc3BzX3BwcyA9IFRSVUU7Ci0gICAgfQotICB9Ci0KLSAgaWYgKHNlbmRfdnBzX3Nwc19wcHMgfHwgcnRwaDI2NXBheS0+c2VuZF92cHNfc3BzX3BwcykgewotICAgIC8qIHdlIG5lZWQgdG8gc2VuZCBTUFMvUFBTIG5vdyBmaXJzdC4gRklYTUUsIGRvbid0IHVzZSB0aGUgcHRzIGZvcgotICAgICAqIGNoZWNraW5nIHdoZW4gd2UgbmVlZCB0byBzZW5kIFNQUy9QUFMgYnV0IGNvbnZlcnQgdG8gcnVubmluZ190aW1lIGZpcnN0LiAqLwotICAgIHJ0cGgyNjVwYXktPnNlbmRfdnBzX3Nwc19wcHMgPSBGQUxTRTsKLSAgICByZXQgPSBnc3RfcnRwX2gyNjVfcGF5X3NlbmRfdnBzX3Nwc19wcHMgKGJhc2VwYXlsb2FkLCBydHBoMjY1cGF5LCBkdHMsIHB0cyk7Ci0gICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAocGF5YnVmKTsKLSAgICAgIHJldHVybiByZXQ7Ci0gICAgfQotICB9Ci0KLSAgcGFja2V0X2xlbiA9IGdzdF9ydHBfYnVmZmVyX2NhbGNfcGFja2V0X2xlbiAoc2l6ZSwgMCwgMCk7Ci0KLSAgR1NUX0ZJWE1FX09CSkVDVCAocnRwaDI2NXBheSwgIlNldCBSVFAgbWFya2VyIGJpdCBhcHByb3ByaWF0ZWx5Iik7Ci0KLSAgaWYgKHBhY2tldF9sZW4gPCBtdHUpIHsKLSAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LAotICAgICAgICAiTkFMIFVuaXQgZml0IGluIG9uZSBwYWNrZXQgZGF0YXNpemU9JWQgbXR1PSVkIiwgc2l6ZSwgbXR1KTsKLSAgICAvKiB3aWxsIGZpdCBpbiBvbmUgcGFja2V0ICovCi0KLSAgICAvKiB1c2UgYnVmZmVyIGxpc3RzCi0gICAgICogY3JlYXRlIGJ1ZmZlciB3aXRob3V0IHBheWxvYWQgY29udGFpbmluZyBvbmx5IHRoZSBSVFAgaGVhZGVyCi0gICAgICogKG1lbW9yeSBibG9jayBhdCBpbmRleCAwKSAqLwotICAgIG91dGJ1ZiA9IGdzdF9ydHBfYnVmZmVyX25ld19hbGxvY2F0ZSAoMCwgMCwgMCk7Ci0KLSAgICBnc3RfcnRwX2J1ZmZlcl9tYXAgKG91dGJ1ZiwgR1NUX01BUF9XUklURSwgJnJ0cCk7Ci0KLSAgICAvKiBGSVhNRSA6IG9ubHkgc2V0IHRoZSBtYXJrZXIgYml0IG9uIHBhY2tldHMgY29udGFpbmluZyBhY2Nlc3MgdW5pdHMgKi8KLSAgICAvKiBpZiAoSVNfQUNDRVNTX1VOSVQgKG5hbFR5cGUpICYmIGVuZF9vZl9hdSkgewotICAgICAgIGdzdF9ydHBfYnVmZmVyX3NldF9tYXJrZXIgKCZydHAsIDEpOwotICAgICAgIH0gKi8KLQotICAgIC8qIHRpbWVzdGFtcCB0aGUgb3V0YnVmZmVyICovCi0gICAgR1NUX0JVRkZFUl9QVFMgKG91dGJ1ZikgPSBwdHM7Ci0gICAgR1NUX0JVRkZFUl9EVFMgKG91dGJ1ZikgPSBkdHM7Ci0KLSAgICAvKiBpbnNlcnQgcGF5bG9hZCBtZW1vcnkgYmxvY2sgKi8KLSAgICBnc3RfcnRwX2NvcHlfbWV0YSAoR1NUX0VMRU1FTlRfQ0FTVCAocnRwaDI2NXBheSksIG91dGJ1ZiwgcGF5YnVmLAotICAgICAgICBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoR1NUX01FVEFfVEFHX1ZJREVPX1NUUikpOwotICAgIG91dGJ1ZiA9IGdzdF9idWZmZXJfYXBwZW5kIChvdXRidWYsIHBheWJ1Zik7Ci0KLSAgICBsaXN0ID0gZ3N0X2J1ZmZlcl9saXN0X25ldyAoKTsKLQotICAgIC8qIGFkZCB0aGUgYnVmZmVyIHRvIHRoZSBidWZmZXIgbGlzdCAqLwotICAgIGdzdF9idWZmZXJfbGlzdF9hZGQgKGxpc3QsIG91dGJ1Zik7Ci0KLSAgICBnc3RfcnRwX2J1ZmZlcl91bm1hcCAoJnJ0cCk7Ci0KLSAgICAvKiBwdXNoIHRoZSBsaXN0IHRvIHRoZSBuZXh0IGVsZW1lbnQgaW4gdGhlIHBpcGUgKi8KLSAgICByZXQgPSBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9wdXNoX2xpc3QgKGJhc2VwYXlsb2FkLCBsaXN0KTsKLSAgfSBlbHNlIHsKLSAgICAvKiBmcmFnbWVudGF0aW9uIFVuaXRzICovCi0gICAgZ3VpbnQgbGltaXRlZFNpemU7Ci0gICAgaW50IGlpID0gMCwgc3RhcnQgPSAxLCBlbmQgPSAwLCBwb3MgPSAwOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsCi0gICAgICAgICJOQUwgVW5pdCBET0VTIE5PVCBmaXQgaW4gb25lIHBhY2tldCBkYXRhc2l6ZT0lZCBtdHU9JWQiLCBzaXplLCBtdHUpOwotCi0gICAgcG9zICs9IDI7Ci0gICAgc2l6ZSAtPSAyOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsICJVc2luZyBGVSBmcmFnbWVudGF0aW9uIGZvciBkYXRhIHNpemU9JWQiLAotICAgICAgICBzaXplKTsKLQotICAgIC8qIFdlIGtlZXAgMyBieXRlcyBmb3IgUGF5bG9hZEhkciBhbmQgRlUgSGVhZGVyICovCi0gICAgcGF5bG9hZF9sZW4gPSBnc3RfcnRwX2J1ZmZlcl9jYWxjX3BheWxvYWRfbGVuIChtdHUgLSAzLCAwLCAwKTsKLQotICAgIGxpc3QgPSBnc3RfYnVmZmVyX2xpc3RfbmV3ICgpOwotCi0gICAgd2hpbGUgKGVuZCA9PSAwKSB7Ci0gICAgICBsaW1pdGVkU2l6ZSA9IHNpemUgPCBwYXlsb2FkX2xlbiA/IHNpemUgOiBwYXlsb2FkX2xlbjsKLSAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhc2VwYXlsb2FkLAotICAgICAgICAgICJJbnNpZGUgIEZVIGZyYWdtZW50YXRpb24gbGltaXRlZFNpemU9JWQgaXRlcmF0aW9uPSVkIiwgbGltaXRlZFNpemUsCi0gICAgICAgICAgaWkpOwotCi0gICAgICAvKiB1c2UgYnVmZmVyIGxpc3RzCi0gICAgICAgKiBjcmVhdGUgYnVmZmVyIHdpdGhvdXQgcGF5bG9hZCBjb250YWluaW5nIG9ubHkgdGhlIFJUUCBoZWFkZXIKLSAgICAgICAqIChtZW1vcnkgYmxvY2sgYXQgaW5kZXggMCksIGFuZCB3aXRoIHNwYWNlIGZvciBQYXlsb2FkSGRyIGFuZCBGVSBoZWFkZXIgKi8KLSAgICAgIG91dGJ1ZiA9IGdzdF9ydHBfYnVmZmVyX25ld19hbGxvY2F0ZSAoMywgMCwgMCk7Ci0KLSAgICAgIGdzdF9ydHBfYnVmZmVyX21hcCAob3V0YnVmLCBHU1RfTUFQX1dSSVRFLCAmcnRwKTsKLQotICAgICAgR1NUX0JVRkZFUl9EVFMgKG91dGJ1ZikgPSBkdHM7Ci0gICAgICBHU1RfQlVGRkVSX1BUUyAob3V0YnVmKSA9IHB0czsKLSAgICAgIHBheWxvYWQgPSBnc3RfcnRwX2J1ZmZlcl9nZXRfcGF5bG9hZCAoJnJ0cCk7Ci0KLSAgICAgIGlmIChsaW1pdGVkU2l6ZSA9PSBzaXplKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhc2VwYXlsb2FkLCAiZW5kIHNpemU9JWQgaXRlcmF0aW9uPSVkIiwgc2l6ZSwgaWkpOwotICAgICAgICBlbmQgPSAxOwotICAgICAgfQotCi0gICAgICAvKiBQYXlsb2FkSGRyICh0eXBlID0gNDkpICovCi0gICAgICBwYXlsb2FkWzBdID0gKG5hbEhlYWRlclswXSAmIDB4ODEpIHwgKDQ5IDw8IDEpOwotICAgICAgcGF5bG9hZFsxXSA9IG5hbEhlYWRlclsxXTsKLQotICAgICAgLyogRklYTUUgLSBzZXQgUlRQIG1hcmtlciBiaXQgYXBwcm9wcmlhdGVseSAqLwotICAgICAgLyogaWYgKElTX0FDQ0VTU19VTklUIChuYWxUeXBlKSkgewotICAgICAgICAgZ3N0X3J0cF9idWZmZXJfc2V0X21hcmtlciAoJnJ0cCwgZW5kICYmIGVuZF9vZl9hdSk7Ci0gICAgICAgICB9ICovCi0KLSAgICAgIC8qIEZVIEhlYWRlciAqLwotICAgICAgcGF5bG9hZFsyXSA9IChzdGFydCA8PCA3KSB8IChlbmQgPDwgNikgfCAobmFsVHlwZSAmIDB4M2YpOwotCi0gICAgICBnc3RfcnRwX2J1ZmZlcl91bm1hcCAoJnJ0cCk7Ci0KLSAgICAgIC8qIGluc2VydCBwYXlsb2FkIG1lbW9yeSBibG9jayAqLwotICAgICAgZ3N0X3J0cF9jb3B5X21ldGEgKEdTVF9FTEVNRU5UX0NBU1QgKHJ0cGgyNjVwYXkpLCBvdXRidWYsIHBheWJ1ZiwKLSAgICAgICAgICBnX3F1YXJrX2Zyb21fc3RhdGljX3N0cmluZyAoR1NUX01FVEFfVEFHX1ZJREVPX1NUUikpOwotICAgICAgZ3N0X2J1ZmZlcl9jb3B5X2ludG8gKG91dGJ1ZiwgcGF5YnVmLCBHU1RfQlVGRkVSX0NPUFlfTUVNT1JZLCBwb3MsCi0gICAgICAgICAgbGltaXRlZFNpemUpOwotICAgICAgLyogYWRkIHRoZSBidWZmZXIgdG8gdGhlIGJ1ZmZlciBsaXN0ICovCi0gICAgICBnc3RfYnVmZmVyX2xpc3RfYWRkIChsaXN0LCBvdXRidWYpOwotCi0gICAgICBzaXplIC09IGxpbWl0ZWRTaXplOwotICAgICAgcG9zICs9IGxpbWl0ZWRTaXplOwotICAgICAgaWkrKzsKLSAgICAgIHN0YXJ0ID0gMDsKLSAgICB9Ci0KLSAgICByZXQgPSBnc3RfcnRwX2Jhc2VfcGF5bG9hZF9wdXNoX2xpc3QgKGJhc2VwYXlsb2FkLCBsaXN0KTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChwYXlidWYpOwotICB9Ci0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBHc3RGbG93UmV0dXJuCi1nc3RfcnRwX2gyNjVfcGF5X2hhbmRsZV9idWZmZXIgKEdzdFJUUEJhc2VQYXlsb2FkICogYmFzZXBheWxvYWQsCi0gICAgR3N0QnVmZmVyICogYnVmZmVyKQotewotICBHc3RSdHBIMjY1UGF5ICpydHBoMjY1cGF5OwotICBHc3RGbG93UmV0dXJuIHJldDsKLSAgZ3NpemUgc2l6ZTsKLSAgZ3VpbnQgbmFsX2xlbiwgaTsKLSAgR3N0TWFwSW5mbyBtYXA7Ci0gIGNvbnN0IGd1aW50OCAqZGF0YTsKLSAgR3N0Q2xvY2tUaW1lIGR0cywgcHRzOwotICBHQXJyYXkgKm5hbF9xdWV1ZTsKLSAgZ2Jvb2xlYW4gaGV2YzsKLSAgR3N0QnVmZmVyICpwYXlidWYgPSBOVUxMOwotICBnc2l6ZSBza2lwOwotCi0gIHJ0cGgyNjVwYXkgPSBHU1RfUlRQX0gyNjVfUEFZIChiYXNlcGF5bG9hZCk7Ci0KLSAgLyogdGhlIGlucHV0IGJ1ZmZlciBjb250YWlucyBvbmUgb3IgbW9yZSBOQUwgdW5pdHMgKi8KLQotICBoZXZjID0gKHJ0cGgyNjVwYXktPnN0cmVhbV9mb3JtYXQgPT0gR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9IRVYxKQotICAgICAgfHwgKHJ0cGgyNjVwYXktPnN0cmVhbV9mb3JtYXQgPT0gR1NUX0gyNjVfU1RSRUFNX0ZPUk1BVF9IVkMxKTsKLQotICBpZiAoaGV2YykgewotICAgIC8qIEluIGhldmMgbW9kZSwgdGhlcmUgaXMgbm8gYWRhcHRlciwgc28gbm90aGluZyB0byBmbHVzaCAqLwotICAgIGlmIChidWZmZXIgPT0gTlVMTCkKLSAgICAgIHJldHVybiBHU1RfRkxPV19PSzsKLSAgICBnc3RfYnVmZmVyX21hcCAoYnVmZmVyLCAmbWFwLCBHU1RfTUFQX1JFQUQpOwotICAgIGRhdGEgPSBtYXAuZGF0YTsKLSAgICBzaXplID0gbWFwLnNpemU7Ci0gICAgcHRzID0gR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcik7Ci0gICAgZHRzID0gR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcik7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsICJnb3QgJSIgR19HU0laRV9GT1JNQVQgIiBieXRlcyIsIHNpemUpOwotICB9IGVsc2UgewotICAgIGR0cyA9IGdzdF9hZGFwdGVyX3ByZXZfZHRzIChydHBoMjY1cGF5LT5hZGFwdGVyLCBOVUxMKTsKLSAgICBwdHMgPSBnc3RfYWRhcHRlcl9wcmV2X3B0cyAocnRwaDI2NXBheS0+YWRhcHRlciwgTlVMTCk7Ci0gICAgaWYgKGJ1ZmZlcikgewotICAgICAgaWYgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZHRzKSkKLSAgICAgICAgZHRzID0gR1NUX0JVRkZFUl9EVFMgKGJ1ZmZlcik7Ci0gICAgICBpZiAoIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChwdHMpKQotICAgICAgICBwdHMgPSBHU1RfQlVGRkVSX1BUUyAoYnVmZmVyKTsKLQotICAgICAgZ3N0X2FkYXB0ZXJfcHVzaCAocnRwaDI2NXBheS0+YWRhcHRlciwgYnVmZmVyKTsKLSAgICB9Ci0gICAgc2l6ZSA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAocnRwaDI2NXBheS0+YWRhcHRlcik7Ci0gICAgLyogTm90aGluZyB0byBkbyBoZXJlIGlmIHRoZSBhZGFwdGVyIGlzIGVtcHR5LCBlLmcuIG9uIEVPUyAqLwotICAgIGlmIChzaXplID09IDApCi0gICAgICByZXR1cm4gR1NUX0ZMT1dfT0s7Ci0gICAgZGF0YSA9IGdzdF9hZGFwdGVyX21hcCAocnRwaDI2NXBheS0+YWRhcHRlciwgc2l6ZSk7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsCi0gICAgICAgICJnb3QgJSIgR19HU0laRV9GT1JNQVQgIiBieXRlcyAoJSIgR19HU0laRV9GT1JNQVQgIikiLCBzaXplLAotICAgICAgICBidWZmZXIgPyBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpIDogMCk7Ci0gIH0KLQotICByZXQgPSBHU1RfRkxPV19PSzsKLQotICAvKiBub3cgbG9vcCBvdmVyIGFsbCBOQUwgdW5pdHMgYW5kIHB1dCB0aGVtIGluIGEgcGFja2V0Ci0gICAqIEZJWE1FLCB3ZSBzaG91bGQgcmVhbGx5IHRyeSB0byBwYWNrIG11bHRpcGxlIE5BTCB1bml0cyBpbnRvIG9uZSBSVFAgcGFja2V0Ci0gICAqIGlmIHdlIGNhbiwgZXNwZWNpYWxseSBmb3IgdGhlIGNvbmZpZyBwYWNrZXRzIHRoYXQgd29udCd0IGNhdXNlIGRlY29kZXIKLSAgICogbGF0ZW5jeS4gKi8KLSAgaWYgKGhldmMpIHsKLSAgICBndWludCBuYWxfbGVuZ3RoX3NpemU7Ci0gICAgZ3NpemUgb2Zmc2V0ID0gMDsKLQotICAgIG5hbF9sZW5ndGhfc2l6ZSA9IHJ0cGgyNjVwYXktPm5hbF9sZW5ndGhfc2l6ZTsKLQotICAgIHdoaWxlIChzaXplID4gbmFsX2xlbmd0aF9zaXplKSB7Ci0gICAgICBnaW50IGk7Ci0gICAgICBnYm9vbGVhbiBlbmRfb2ZfYXUgPSBGQUxTRTsKLQotICAgICAgbmFsX2xlbiA9IDA7Ci0gICAgICBmb3IgKGkgPSAwOyBpIDwgbmFsX2xlbmd0aF9zaXplOyBpKyspIHsKLSAgICAgICAgbmFsX2xlbiA9ICgobmFsX2xlbiA8PCA4KSArIGRhdGFbaV0pOwotICAgICAgfQotCi0gICAgICAvKiBza2lwIHRoZSBsZW5ndGggYnl0ZXMsIG1ha2Ugc3VyZSB3ZSBkb24ndCBydW4gcGFzdCB0aGUgYnVmZmVyIHNpemUgKi8KLSAgICAgIGRhdGEgKz0gbmFsX2xlbmd0aF9zaXplOwotICAgICAgb2Zmc2V0ICs9IG5hbF9sZW5ndGhfc2l6ZTsKLSAgICAgIHNpemUgLT0gbmFsX2xlbmd0aF9zaXplOwotCi0gICAgICBpZiAoc2l6ZSA+PSBuYWxfbGVuKSB7Ci0gICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKGJhc2VwYXlsb2FkLCAiZ290IE5BTCBvZiBzaXplICV1IiwgbmFsX2xlbik7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBuYWxfbGVuID0gc2l6ZTsKLSAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsICJnb3QgaW5jb21wbGV0ZSBOQUwgb2Ygc2l6ZSAldSIsCi0gICAgICAgICAgICBuYWxfbGVuKTsKLSAgICAgIH0KLQotICAgICAgLyogSWYgd2UncmUgYXQgdGhlIGVuZCBvZiB0aGUgYnVmZmVyLCB0aGVuIHdlJ3JlIGF0IHRoZSBlbmQgb2YgdGhlCi0gICAgICAgKiBhY2Nlc3MgdW5pdAotICAgICAgICovCi0gICAgICBpZiAocnRwaDI2NXBheS0+YWxpZ25tZW50ID09IEdTVF9IMjY1X0FMSUdOTUVOVF9BVQotICAgICAgICAgICYmIHNpemUgLSBuYWxfbGVuIDw9IG5hbF9sZW5ndGhfc2l6ZSkgewotICAgICAgICBlbmRfb2ZfYXUgPSBUUlVFOwotICAgICAgfQotCi0gICAgICBwYXlidWYgPSBnc3RfYnVmZmVyX2NvcHlfcmVnaW9uIChidWZmZXIsIEdTVF9CVUZGRVJfQ09QWV9BTEwsIG9mZnNldCwKLSAgICAgICAgICBuYWxfbGVuKTsKLQotICAgICAgcmV0ID0KLSAgICAgICAgICBnc3RfcnRwX2gyNjVfcGF5X3BheWxvYWRfbmFsIChiYXNlcGF5bG9hZCwgcGF5YnVmLCBkdHMsIHB0cywKLSAgICAgICAgICBlbmRfb2ZfYXUpOwotICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykKLSAgICAgICAgYnJlYWs7Ci0KLSAgICAgIGRhdGEgKz0gbmFsX2xlbjsKLSAgICAgIG9mZnNldCArPSBuYWxfbGVuOwotICAgICAgc2l6ZSAtPSBuYWxfbGVuOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICBndWludCBuZXh0OwotICAgIGdib29sZWFuIHVwZGF0ZSA9IEZBTFNFOwotCi0gICAgLyogZ2V0IG9mZnNldCBvZiBmaXJzdCBzdGFydCBjb2RlICovCi0gICAgbmV4dCA9IG5leHRfc3RhcnRfY29kZSAoZGF0YSwgc2l6ZSk7Ci0KLSAgICAvKiBza2lwIHRvIHN0YXJ0IGNvZGUsIGlmIG5vIHN0YXJ0IGNvZGUgaXMgZm91bmQsIG5leHQgd2lsbCBiZSBzaXplIGFuZCB3ZQotICAgICAqIHdpbGwgbm90IGNvbGxlY3QgZGF0YS4gKi8KLSAgICBkYXRhICs9IG5leHQ7Ci0gICAgc2l6ZSAtPSBuZXh0OwotICAgIG5hbF9xdWV1ZSA9IHJ0cGgyNjVwYXktPnF1ZXVlOwotICAgIHNraXAgPSBuZXh0OwotCi0gICAgLyogYXJyYXkgbXVzdCBiZSBlbXB0eSB3aGVuIHdlIGdldCBoZXJlICovCi0gICAgZ19hc3NlcnQgKG5hbF9xdWV1ZS0+bGVuID09IDApOwotCi0gICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsCi0gICAgICAgICJmb3VuZCBmaXJzdCBzdGFydCBhdCAldSwgYnl0ZXMgbGVmdCAlIiBHX0dTSVpFX0ZPUk1BVCwgbmV4dCwgc2l6ZSk7Ci0KLSAgICAvKiBmaXJzdCBwYXNzIHRvIGxvY2F0ZSBOQUxzIGFuZCBwYXJzZSBTUFMvUFBTICovCi0gICAgd2hpbGUgKHNpemUgPiA0KSB7Ci0gICAgICAvKiBza2lwIHN0YXJ0IGNvZGUgKi8KLSAgICAgIGRhdGEgKz0gMzsKLSAgICAgIHNpemUgLT0gMzsKLQotICAgICAgLyogdXNlIG5leHRfc3RhcnRfY29kZSgpIHRvIHNjYW4gYnVmZmVyLgotICAgICAgICogbmV4dF9zdGFydF9jb2RlKCkgcmV0dXJucyB0aGUgb2Zmc2V0IGluIGRhdGEsCi0gICAgICAgKiBzdGFydGluZyBmcm9tIHplcm8gdG8gdGhlIGZpcnN0IGJ5dGUgb2YgMC4wLjAuMQotICAgICAgICogSWYgbm8gc3RhcnQgY29kZSBpcyBmb3VuZCwgaXQgcmV0dXJucyB0aGUgdmFsdWUgb2YgdGhlCi0gICAgICAgKiAnc2l6ZScgcGFyYW1ldGVyLgotICAgICAgICogZGF0YSBpcyB1bmNoYW5nZWQgYnkgdGhlIGNhbGwgdG8gbmV4dF9zdGFydF9jb2RlKCkKLSAgICAgICAqLwotICAgICAgbmV4dCA9IG5leHRfc3RhcnRfY29kZSAoZGF0YSwgc2l6ZSk7Ci0KLSAgICAgIGlmIChuZXh0ID09IHNpemUgJiYgYnVmZmVyICE9IE5VTEwpIHsKLSAgICAgICAgLyogRGlkbid0IGZpbmQgdGhlIHN0YXJ0IG9mIG5leHQgTkFMIGFuZCBpdCdzIG5vdCBFT1MsCi0gICAgICAgICAqIGhhbmRsZSBpdCBuZXh0IHRpbWUgKi8KLSAgICAgICAgYnJlYWs7Ci0gICAgICB9Ci0KLSAgICAgIC8qIG5hbCBsZW5ndGggaXMgZGlzdGFuY2UgdG8gbmV4dCBzdGFydCBjb2RlICovCi0gICAgICBuYWxfbGVuID0gbmV4dDsKLQotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoYmFzZXBheWxvYWQsICJmb3VuZCBuZXh0IHN0YXJ0IGF0ICV1IG9mIHNpemUgJXUiLCBuZXh0LAotICAgICAgICAgIG5hbF9sZW4pOwotCi0gICAgICBpZiAocnRwaDI2NXBheS0+c3Byb3BfcGFyYW1ldGVyX3NldHMgIT0gTlVMTCkgewotICAgICAgICAvKiBleHBsaWNpdGx5IHNldCBwcm9maWxlIGFuZCBzcHJvcCwgdXNlIHRob3NlICovCi0gICAgICAgIGlmIChydHBoMjY1cGF5LT51cGRhdGVfY2FwcykgewotICAgICAgICAgIGlmICghZ3N0X3J0cF9iYXNlX3BheWxvYWRfc2V0X291dGNhcHMgKGJhc2VwYXlsb2FkLAotICAgICAgICAgICAgICAgICAgInNwcm9wLXBhcmFtZXRlci1zZXRzIiwgR19UWVBFX1NUUklORywKLSAgICAgICAgICAgICAgICAgIHJ0cGgyNjVwYXktPnNwcm9wX3BhcmFtZXRlcl9zZXRzLCBOVUxMKSkKLSAgICAgICAgICAgIGdvdG8gY2Fwc19yZWplY3RlZDsKLQotICAgICAgICAgIC8qIHBhcnNlIFNQUyBhbmQgUFBTIGZyb20gcHJvdmlkZWQgcGFyYW1ldGVyIHNldCAoZm9yIGluc2VydGlvbikgKi8KLSAgICAgICAgICBnc3RfcnRwX2gyNjVfcGF5X3BhcnNlX3Nwcm9wX3BhcmFtZXRlcl9zZXRzIChydHBoMjY1cGF5KTsKLQotICAgICAgICAgIHJ0cGgyNjVwYXktPnVwZGF0ZV9jYXBzID0gRkFMU0U7Ci0KLSAgICAgICAgICBHU1RfREVCVUcgKCJvdXRjYXBzIHVwZGF0ZTogc3Byb3AtcGFyYW1ldGVyLXNldHM9JXMiLAotICAgICAgICAgICAgICBydHBoMjY1cGF5LT5zcHJvcF9wYXJhbWV0ZXJfc2V0cyk7Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIC8qIFdlIGtub3cgb3VyIHN0cmVhbSBpcyBhIHZhbGlkIEgyNjUgTkFMIHBhY2tldCwKLSAgICAgICAgICogZ28gcGFyc2UgaXQgZm9yIFNQUy9QUFMgdG8gZW5yaWNoIHRoZSBjYXBzICovCi0gICAgICAgIC8qIG9yZGVyOiBtYWtlIHN1cmUgdG8gY2hlY2sgbmFsICovCi0gICAgICAgIHVwZGF0ZSA9Ci0gICAgICAgICAgICBnc3RfcnRwX2gyNjVfcGF5X2RlY29kZV9uYWwgKHJ0cGgyNjVwYXksIGRhdGEsIG5hbF9sZW4sIGR0cywgcHRzKQotICAgICAgICAgICAgfHwgdXBkYXRlOwotICAgICAgfQotICAgICAgLyogbW92ZSB0byBuZXh0IE5BTCBwYWNrZXQgKi8KLSAgICAgIGRhdGEgKz0gbmFsX2xlbjsKLSAgICAgIHNpemUgLT0gbmFsX2xlbjsKLQotICAgICAgZ19hcnJheV9hcHBlbmRfdmFsIChuYWxfcXVldWUsIG5hbF9sZW4pOwotICAgIH0KLQotICAgIC8qIGlmIGhhcyBuZXcgVlBTLCBTUFMgJiBQUFMsIHVwZGF0ZSB0aGUgb3V0cHV0IGNhcHMgKi8KLSAgICBpZiAoR19VTkxJS0VMWSAodXBkYXRlKSkKLSAgICAgIGlmICghZ3N0X3J0cF9oMjY1X3BheV9zZXRfdnBzX3Nwc19wcHMgKGJhc2VwYXlsb2FkKSkKLSAgICAgICAgZ290byBjYXBzX3JlamVjdGVkOwotCi0gICAgLyogc2Vjb25kIHBhc3MgdG8gcGF5bG9hZCBhbmQgcHVzaCAqLwotCi0gICAgaWYgKG5hbF9xdWV1ZS0+bGVuICE9IDApCi0gICAgICBnc3RfYWRhcHRlcl9mbHVzaCAocnRwaDI2NXBheS0+YWRhcHRlciwgc2tpcCk7Ci0KLSAgICBmb3IgKGkgPSAwOyBpIDwgbmFsX3F1ZXVlLT5sZW47IGkrKykgewotICAgICAgZ3VpbnQgc2l6ZTsKLSAgICAgIGdib29sZWFuIGVuZF9vZl9hdSA9IEZBTFNFOwotCi0gICAgICBuYWxfbGVuID0gZ19hcnJheV9pbmRleCAobmFsX3F1ZXVlLCBndWludCwgaSk7Ci0gICAgICAvKiBza2lwIHN0YXJ0IGNvZGUgKi8KLSAgICAgIGdzdF9hZGFwdGVyX2ZsdXNoIChydHBoMjY1cGF5LT5hZGFwdGVyLCAzKTsKLQotICAgICAgLyogVHJpbSB0aGUgZW5kIHVubGVzcyB3ZSdyZSB0aGUgbGFzdCBOQUwgaW4gdGhlIHN0cmVhbS4KLSAgICAgICAqIEluIGNhc2Ugd2UncmUgbm90IGF0IHRoZSBlbmQgb2YgdGhlIGJ1ZmZlciB3ZSBrbm93IHRoZSBuZXh0IGJsb2NrCi0gICAgICAgKiBzdGFydHMgd2l0aCAweDAwMDAwMSBzbyBhbGwgdGhlIDB4MDAgYnl0ZXMgYXQgdGhlIGVuZCBvZiB0aGlzIG9uZSBhcmUKLSAgICAgICAqIHRyYWlsaW5nIDB4MCB0aGF0IGNhbiBiZSBkaXNjYXJkZWQgKi8KLSAgICAgIHNpemUgPSBuYWxfbGVuOwotICAgICAgZGF0YSA9IGdzdF9hZGFwdGVyX21hcCAocnRwaDI2NXBheS0+YWRhcHRlciwgc2l6ZSk7Ci0gICAgICBpZiAoaSArIDEgIT0gbmFsX3F1ZXVlLT5sZW4gfHwgYnVmZmVyICE9IE5VTEwpCi0gICAgICAgIGZvciAoOyBzaXplID4gMSAmJiBkYXRhW3NpemUgLSAxXSA9PSAweDA7IHNpemUtLSkKLSAgICAgICAgICAvKiBza2lwICovIDsKLQotCi0gICAgICAvKiBJZiBpdCdzIHRoZSBsYXN0IG5hbCB1bml0IHdlIGhhdmUgaW4gbm9uLWJ5dGVzdHJlYW0gbW9kZSwgd2UgY2FuCi0gICAgICAgKiBhc3N1bWUgaXQncyB0aGUgZW5kIG9mIGFuIGFjY2Vzcy11bml0Ci0gICAgICAgKgotICAgICAgICogRklYTUU6IFdlIG5lZWQgdG8gd2FpdCB1bnRpbCB0aGUgbmV4dCBwYWNrZXQgb3IgRU9TIHRvCi0gICAgICAgKiBhY3R1YWxseSBwYXlsb2FkIHRoZSBOQUwgc28gd2UgY2FuIGtub3cgaWYgdGhlIGN1cnJlbnQgTkFMIGlzCi0gICAgICAgKiB0aGUgbGFzdCBvbmUgb2YgYW4gYWNjZXNzIHVuaXQgb3Igbm90IGlmIHdlIGFyZSBpbiBieXRlc3RyZWFtIG1vZGUKLSAgICAgICAqLwotICAgICAgaWYgKChydHBoMjY1cGF5LT5hbGlnbm1lbnQgPT0gR1NUX0gyNjVfQUxJR05NRU5UX0FVIHx8IGJ1ZmZlciA9PSBOVUxMKSAmJgotICAgICAgICAgIGkgPT0gbmFsX3F1ZXVlLT5sZW4gLSAxKQotICAgICAgICBlbmRfb2ZfYXUgPSBUUlVFOwotICAgICAgcGF5YnVmID0gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIgKHJ0cGgyNjVwYXktPmFkYXB0ZXIsIHNpemUpOwotICAgICAgZ19hc3NlcnQgKHBheWJ1Zik7Ci0KLSAgICAgIC8qIHB1dCB0aGUgZGF0YSBpbiBvbmUgb3IgbW9yZSBSVFAgcGFja2V0cyAqLwotICAgICAgcmV0ID0KLSAgICAgICAgICBnc3RfcnRwX2gyNjVfcGF5X3BheWxvYWRfbmFsIChiYXNlcGF5bG9hZCwgcGF5YnVmLCBkdHMsIHB0cywKLSAgICAgICAgICBlbmRfb2ZfYXUpOwotICAgICAgaWYgKHJldCAhPSBHU1RfRkxPV19PSykgewotICAgICAgICBicmVhazsKLSAgICAgIH0KLQotICAgICAgLyogbW92ZSB0byBuZXh0IE5BTCBwYWNrZXQgKi8KLSAgICAgIC8qIFNraXBzIHRoZSB0cmFpbGluZyB6ZXJvcyAqLwotICAgICAgZ3N0X2FkYXB0ZXJfZmx1c2ggKHJ0cGgyNjVwYXktPmFkYXB0ZXIsIG5hbF9sZW4gLSBzaXplKTsKLSAgICB9Ci0gICAgZ19hcnJheV9zZXRfc2l6ZSAobmFsX3F1ZXVlLCAwKTsKLSAgfQotCi1kb25lOgotICBpZiAoaGV2YykgewotICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJm1hcCk7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgfSBlbHNlIHsKLSAgICBnc3RfYWRhcHRlcl91bm1hcCAocnRwaDI2NXBheS0+YWRhcHRlcik7Ci0gIH0KLQotICByZXR1cm4gcmV0OwotCi1jYXBzX3JlamVjdGVkOgotICB7Ci0gICAgR1NUX1dBUk5JTkdfT0JKRUNUIChiYXNlcGF5bG9hZCwgIkNvdWxkIG5vdCBzZXQgb3V0Y2FwcyIpOwotICAgIGdfYXJyYXlfc2V0X3NpemUgKG5hbF9xdWV1ZSwgMCk7Ci0gICAgcmV0ID0gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7Ci0gICAgZ290byBkb25lOwotICB9Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3J0cF9oMjY1X3BheV9zaW5rX2V2ZW50IChHc3RSVFBCYXNlUGF5bG9hZCAqIHBheWxvYWQsIEdzdEV2ZW50ICogZXZlbnQpCi17Ci0gIGdib29sZWFuIHJlczsKLSAgY29uc3QgR3N0U3RydWN0dXJlICpzOwotICBHc3RSdHBIMjY1UGF5ICpydHBoMjY1cGF5ID0gR1NUX1JUUF9IMjY1X1BBWSAocGF5bG9hZCk7Ci0KLSAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7Ci0gICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKLSAgICAgIGdzdF9hZGFwdGVyX2NsZWFyIChydHBoMjY1cGF5LT5hZGFwdGVyKTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNOgotICAgICAgcyA9IGdzdF9ldmVudF9nZXRfc3RydWN0dXJlIChldmVudCk7Ci0gICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfbmFtZSAocywgIkdzdEZvcmNlS2V5VW5pdCIpKSB7Ci0gICAgICAgIGdib29sZWFuIHJlc2VuZF9jb2RlY19kYXRhOwotCi0gICAgICAgIGlmIChnc3Rfc3RydWN0dXJlX2dldF9ib29sZWFuIChzLCAiYWxsLWhlYWRlcnMiLAotICAgICAgICAgICAgICAgICZyZXNlbmRfY29kZWNfZGF0YSkgJiYgcmVzZW5kX2NvZGVjX2RhdGEpCi0gICAgICAgICAgcnRwaDI2NXBheS0+c2VuZF92cHNfc3BzX3BwcyA9IFRSVUU7Ci0gICAgICB9Ci0gICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9FVkVOVF9FT1M6Ci0gICAgewotICAgICAgLyogY2FsbCBoYW5kbGVfYnVmZmVyIHdpdGggTlVMTCB0byBmbHVzaCBsYXN0IE5BTCBmcm9tIGFkYXB0ZXIKLSAgICAgICAqIGluIGJ5dGUtc3RyZWFtIG1vZGUKLSAgICAgICAqLwotICAgICAgZ3N0X3J0cF9oMjY1X3BheV9oYW5kbGVfYnVmZmVyIChwYXlsb2FkLCBOVUxMKTsKLSAgICAgIGJyZWFrOwotICAgIH0KLSAgICBjYXNlIEdTVF9FVkVOVF9TVFJFQU1fU1RBUlQ6Ci0gICAgICBHU1RfREVCVUdfT0JKRUNUIChydHBoMjY1cGF5LAotICAgICAgICAgICJOZXcgc3RyZWFtIGRldGVjdGVkID0+IENsZWFyIFZQUywgU1BTIGFuZCBQUFMiKTsKLSAgICAgIGdzdF9ydHBfaDI2NV9wYXlfY2xlYXJfdnBzX3Nwc19wcHMgKHJ0cGgyNjVwYXkpOwotICAgICAgYnJlYWs7Ci0gICAgZGVmYXVsdDoKLSAgICAgIGJyZWFrOwotICB9Ci0KLSAgcmVzID0gR1NUX1JUUF9CQVNFX1BBWUxPQURfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNpbmtfZXZlbnQgKHBheWxvYWQsIGV2ZW50KTsKLQotICByZXR1cm4gcmVzOwotfQotCi1zdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4KLWdzdF9ydHBfaDI2NV9wYXlfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKLXsKLSAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0OwotICBHc3RSdHBIMjY1UGF5ICpydHBoMjY1cGF5ID0gR1NUX1JUUF9IMjY1X1BBWSAoZWxlbWVudCk7Ci0KLSAgc3dpdGNoICh0cmFuc2l0aW9uKSB7Ci0gICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKLSAgICAgIHJ0cGgyNjVwYXktPnNlbmRfdnBzX3Nwc19wcHMgPSBGQUxTRTsKLSAgICAgIGdzdF9hZGFwdGVyX2NsZWFyIChydHBoMjY1cGF5LT5hZGFwdGVyKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldCA9IEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5jaGFuZ2Vfc3RhdGUgKGVsZW1lbnQsIHRyYW5zaXRpb24pOwotCi0gIHN3aXRjaCAodHJhbnNpdGlvbikgewotICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6Ci0gICAgICBydHBoMjY1cGF5LT5sYXN0X3Zwc19zcHNfcHBzID0gLTE7Ci0gICAgICBnc3RfcnRwX2gyNjVfcGF5X2NsZWFyX3Zwc19zcHNfcHBzIChydHBoMjY1cGF5KTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBicmVhazsKLSAgfQotCi0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyB2b2lkCi1nc3RfcnRwX2gyNjVfcGF5X3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKLSAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQotewotICBHc3RSdHBIMjY1UGF5ICpydHBoMjY1cGF5OwotCi0gIHJ0cGgyNjVwYXkgPSBHU1RfUlRQX0gyNjVfUEFZIChvYmplY3QpOwotCi0gIHN3aXRjaCAocHJvcF9pZCkgewotICAgIGNhc2UgUFJPUF9TUFJPUF9QQVJBTUVURVJfU0VUUzoKLSAgICAgIGdfZnJlZSAocnRwaDI2NXBheS0+c3Byb3BfcGFyYW1ldGVyX3NldHMpOwotICAgICAgcnRwaDI2NXBheS0+c3Byb3BfcGFyYW1ldGVyX3NldHMgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKLSAgICAgIHJ0cGgyNjVwYXktPnVwZGF0ZV9jYXBzID0gVFJVRTsKLSAgICAgIGJyZWFrOwotICAgIGNhc2UgUFJPUF9DT05GSUdfSU5URVJWQUw6Ci0gICAgICBydHBoMjY1cGF5LT52cHNfc3BzX3Bwc19pbnRlcnZhbCA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKLSAgICAgIGJyZWFrOwotICAgIGRlZmF1bHQ6Ci0gICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOwotICAgICAgYnJlYWs7Ci0gIH0KLX0KLQotc3RhdGljIHZvaWQKLWdzdF9ydHBfaDI2NV9wYXlfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAotICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCi17Ci0gIEdzdFJ0cEgyNjVQYXkgKnJ0cGgyNjVwYXk7Ci0KLSAgcnRwaDI2NXBheSA9IEdTVF9SVFBfSDI2NV9QQVkgKG9iamVjdCk7Ci0KLSAgc3dpdGNoIChwcm9wX2lkKSB7Ci0gICAgY2FzZSBQUk9QX1NQUk9QX1BBUkFNRVRFUl9TRVRTOgotICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgcnRwaDI2NXBheS0+c3Byb3BfcGFyYW1ldGVyX3NldHMpOwotICAgICAgYnJlYWs7Ci0gICAgY2FzZSBQUk9QX0NPTkZJR19JTlRFUlZBTDoKLSAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBydHBoMjY1cGF5LT52cHNfc3BzX3Bwc19pbnRlcnZhbCk7Ci0gICAgICBicmVhazsKLSAgICBkZWZhdWx0OgotICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKLSAgICAgIGJyZWFrOwotICB9Ci19Ci0KLWdib29sZWFuCi1nc3RfcnRwX2gyNjVfcGF5X3BsdWdpbl9pbml0IChHc3RQbHVnaW4gKiBwbHVnaW4pCi17Ci0gIHJldHVybiBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAicnRwaDI2NXBheSIsCi0gICAgICBHU1RfUkFOS19TRUNPTkRBUlksIEdTVF9UWVBFX1JUUF9IMjY1X1BBWSk7Ci19CmRpZmYgLS1naXQgYS9nc3QvcnRwL2dzdHJ0cGgyNjVwYXkuaCBiL2dzdC9ydHAvZ3N0cnRwaDI2NXBheS5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzgyYzVlLi4wMDAwMDAwCi0tLSBhL2dzdC9ydHAvZ3N0cnRwaDI2NXBheS5oCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDwyMDA2PiBXaW0gVGF5bWFucyA8d2ltLnRheW1hbnNAZ21haWwuY29tPgotICogQ29weXJpZ2h0IChDKSA8MjAxND4gSnVyZ2VuIFNsb3dhY2sgPGp1cmdlbnNsb3dhY2tAZ21haWwuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpZm5kZWYgX19HU1RfUlRQX0gyNjVfUEFZX0hfXwotI2RlZmluZSBfX0dTVF9SVFBfSDI2NV9QQVlfSF9fCi0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+Ci0jaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0YWRhcHRlci5oPgotI2luY2x1ZGUgPGdzdC9ydHAvZ3N0cnRwYmFzZXBheWxvYWQuaD4KLSNpbmNsdWRlIDxnc3QvY29kZWNwYXJzZXJzL2dzdGgyNjVwYXJzZXIuaD4KLQotR19CRUdJTl9ERUNMUwotI2RlZmluZSBHU1RfVFlQRV9SVFBfSDI2NV9QQVkgXAotICAoZ3N0X3J0cF9oMjY1X3BheV9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfUlRQX0gyNjVfUEFZKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfUlRQX0gyNjVfUEFZLEdzdFJ0cEgyNjVQYXkpKQotI2RlZmluZSBHU1RfUlRQX0gyNjVfUEFZX0NMQVNTKGtsYXNzKSBcCi0gIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1JUUF9IMjY1X1BBWSxHc3RSdHBIMjY1UGF5Q2xhc3MpKQotI2RlZmluZSBHU1RfSVNfUlRQX0gyNjVfUEFZKG9iaikgXAotICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfUlRQX0gyNjVfUEFZKSkKLSNkZWZpbmUgR1NUX0lTX1JUUF9IMjY1X1BBWV9DTEFTUyhrbGFzcykgXAotICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9SVFBfSDI2NV9QQVkpKQotdHlwZWRlZiBzdHJ1Y3QgX0dzdFJ0cEgyNjVQYXkgR3N0UnRwSDI2NVBheTsKLXR5cGVkZWYgc3RydWN0IF9Hc3RSdHBIMjY1UGF5Q2xhc3MgR3N0UnRwSDI2NVBheUNsYXNzOwotCi10eXBlZGVmIGVudW0KLXsKLSAgR1NUX0gyNjVfQUxJR05NRU5UX1VOS05PV04sCi0gIEdTVF9IMjY1X0FMSUdOTUVOVF9OQUwsCi0gIEdTVF9IMjY1X0FMSUdOTUVOVF9BVQotfSBHc3RIMjY1QWxpZ25tZW50OwotCi1zdHJ1Y3QgX0dzdFJ0cEgyNjVQYXkKLXsKLSAgR3N0UlRQQmFzZVBheWxvYWQgcGF5bG9hZDsKLQotICBndWludCBwcm9maWxlOwotICBHUHRyQXJyYXkgKnNwcywgKnBwcywgKnZwczsKLQotICBHc3RIMjY1U3RyZWFtRm9ybWF0IHN0cmVhbV9mb3JtYXQ7Ci0gIEdzdEgyNjVBbGlnbm1lbnQgYWxpZ25tZW50OwotICBndWludCBuYWxfbGVuZ3RoX3NpemU7Ci0gIEdBcnJheSAqcXVldWU7Ci0KLSAgZ2NoYXIgKnNwcm9wX3BhcmFtZXRlcl9zZXRzOwotICBnYm9vbGVhbiB1cGRhdGVfY2FwczsKLQotICBHc3RBZGFwdGVyICphZGFwdGVyOwotCi0gIGd1aW50IHZwc19zcHNfcHBzX2ludGVydmFsOwotICBnYm9vbGVhbiBzZW5kX3Zwc19zcHNfcHBzOwotICBHc3RDbG9ja1RpbWUgbGFzdF92cHNfc3BzX3BwczsKLX07Ci0KLXN0cnVjdCBfR3N0UnRwSDI2NVBheUNsYXNzCi17Ci0gIEdzdFJUUEJhc2VQYXlsb2FkQ2xhc3MgcGFyZW50X2NsYXNzOwotfTsKLQotR1R5cGUgZ3N0X3J0cF9oMjY1X3BheV9nZXRfdHlwZSAodm9pZCk7Ci0KLWdib29sZWFuIGdzdF9ydHBfaDI2NV9wYXlfcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbik7Ci0KLUdfRU5EX0RFQ0xTCi0jZW5kaWYgLyogX19HU1RfUlRQX0gyNjVfUEFZX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3NkaS9NYWtlZmlsZS5pbiBiL2dzdC9zZGkvTWFrZWZpbGUuaW4KaW5kZXggMWNhZDlmYS4uNmQ3NDE5NiAxMDA2NDQKLS0tIGEvZ3N0L3NkaS9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc2RpL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3NkcC9NYWtlZmlsZS5pbiBiL2dzdC9zZHAvTWFrZWZpbGUuaW4KaW5kZXggMGU5YjA0OC4uMzViNmFkMiAxMDA2NDQKLS0tIGEvZ3N0L3NkcC9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc2RwL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3NkcC9nc3RzZHBkZW11eC5jIGIvZ3N0L3NkcC9nc3RzZHBkZW11eC5jCmluZGV4IDY3ZTRhZmQuLmFlM2JiZTQgMTAwNjQ0Ci0tLSBhL2dzdC9zZHAvZ3N0c2RwZGVtdXguYworKysgYi9nc3Qvc2RwL2dzdHNkcGRlbXV4LmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGdub21ldmZzc3JjIGxvY2F0aW9uPWh0dHA6Ly9zb21lLnNlcnZlci9zZXNzaW9uLnNkcCAhIHNkcGRlbXV4ICEgZmFrZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIHNvdXBodHRwc3JjIGxvY2F0aW9uPWh0dHA6Ly9zb21lLnNlcnZlci9zZXNzaW9uLnNkcCAhIHNkcGRlbXV4ICEgZmFrZXNpbmsKICAqIF18IEVzdGFibGlzaCBhIGNvbm5lY3Rpb24gdG8gYW4gSFRUUCBzZXJ2ZXIgdGhhdCBjb250YWlucyBhbiBTRFAgc2Vzc2lvbiBkZXNjcmlwdGlvbgogICogdGhhdCBnZXRzIHBhcnNlZCBieSBzZHBkZW11eCBhbmQgc2VuZCB0aGUgcmF3IFJUUCBwYWNrZXRzIHRvIGEgZmFrZXNpbmsuCiAgKiA8L3JlZnNlY3QyPgpAQCAtOTQsOSArOTQsNiBAQAogc3RhdGljIHZvaWQgZ3N0X3NkcF9kZW11eF9nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCiAgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CiAKLXN0YXRpYyBHc3RDYXBzICpnc3Rfc2RwX2RlbXV4X21lZGlhX3RvX2NhcHMgKGdpbnQgcHQsCi0gICAgY29uc3QgR3N0U0RQTWVkaWEgKiBtZWRpYSk7Ci0KIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3Rfc2RwX2RlbXV4X2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCiAgICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CiBzdGF0aWMgdm9pZCBnc3Rfc2RwX2RlbXV4X2hhbmRsZV9tZXNzYWdlIChHc3RCaW4gKiBiaW4sIEdzdE1lc3NhZ2UgKiBtZXNzYWdlKTsKQEAgLTM5Niw5ICszOTMsMTQgQEAKICAgLyogd2UgbXVzdCBoYXZlIGEgcGF5bG9hZC4gTm8gcGF5bG9hZCBtZWFucyB3ZSBjYW5ub3QgY3JlYXRlIGNhcHMgKi8KICAgLyogRklYTUUsIGhhbmRsZSBtdWx0aXBsZSBmb3JtYXRzLiAqLwogICBpZiAoKHBheWxvYWQgPSBnc3Rfc2RwX21lZGlhX2dldF9mb3JtYXQgKG1lZGlhLCAwKSkpIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnM7CisKICAgICBzdHJlYW0tPnB0ID0gYXRvaSAocGF5bG9hZCk7CiAgICAgLyogY29udmVydCBjYXBzICovCi0gICAgc3RyZWFtLT5jYXBzID0gZ3N0X3NkcF9kZW11eF9tZWRpYV90b19jYXBzIChzdHJlYW0tPnB0LCBtZWRpYSk7CisgICAgc3RyZWFtLT5jYXBzID0gZ3N0X3NkcF9tZWRpYV9nZXRfY2Fwc19mcm9tX21lZGlhIChtZWRpYSwgc3RyZWFtLT5wdCk7CisKKyAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3RyZWFtLT5jYXBzLCAwKTsKKyAgICBnc3Rfc3RydWN0dXJlX3NldF9uYW1lIChzLCAiYXBwbGljYXRpb24veC1ydHAiKTsKIAogICAgIGlmIChzdHJlYW0tPnB0ID49IDk2KSB7CiAgICAgICAvKiBJZiB3ZSBoYXZlIGEgZHluYW1pYyBwYXlsb2FkIHR5cGUsIHNlZSBpZiB3ZSBoYXZlIGEgc3RyZWFtIHdpdGggdGhlCkBAIC00ODIsMjU2ICs0ODQsMTIgQEAKICAgZGVtdXgtPm51bXN0cmVhbXMgPSAwOwogfQogCi0jZGVmaW5lIFBBUlNFX0lOVChwLCBkZWwsIHJlcykgICAgICAgICAgXAotR19TVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ2NoYXIgKnQgPSBwOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHAgPSBzdHJzdHIgKHAsIGRlbCk7ICAgICAgICAgICAgICAgICAgXAotICBpZiAocCA9PSBOVUxMKSAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXMgPSAtMTsgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIGVsc2UgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICpwID0gJ1wwJzsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBwKys7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcmVzID0gYXRvaSAodCk7ICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gR19TVE1UX0VORAotCi0jZGVmaW5lIFBBUlNFX1NUUklORyhwLCBkZWwsIHJlcykgICAgICAgXAotR19TVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ2NoYXIgKnQgPSBwOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIHAgPSBzdHJzdHIgKHAsIGRlbCk7ICAgICAgICAgICAgICAgICAgXAotICBpZiAocCA9PSBOVUxMKSB7ICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXMgPSBOVUxMOyAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgcCA9IHQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZWxzZSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKnAgPSAnXDAnOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgIHArKzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICByZXMgPSB0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotfSBHX1NUTVRfRU5ECi0KLSNkZWZpbmUgU0tJUF9TUEFDRVMocCkgICAgICAgICAgICAgICAgICBcCi0gIHdoaWxlICgqcCAmJiBnX2FzY2lpX2lzc3BhY2UgKCpwKSkgICAgXAotICAgIHArKzsKLQotLyogcnRwbWFwIGNvbnRhaW5zOgotICoKLSAqICA8cGF5bG9hZD4gPGVuY29kaW5nX25hbWU+LzxjbG9ja19yYXRlPlsvPGVuY29kaW5nX3BhcmFtcz5dCi0gKi8KLXN0YXRpYyBnYm9vbGVhbgotZ3N0X3NkcF9kZW11eF9wYXJzZV9ydHBtYXAgKGNvbnN0IGdjaGFyICogcnRwbWFwLCBnaW50ICogcGF5bG9hZCwgZ2NoYXIgKiogbmFtZSwKLSAgICBnaW50ICogcmF0ZSwgZ2NoYXIgKiogcGFyYW1zKQotewotICBnY2hhciAqcCwgKnQ7Ci0KLSAgcCA9IChnY2hhciAqKSBydHBtYXA7Ci0KLSAgUEFSU0VfSU5UIChwLCAiICIsICpwYXlsb2FkKTsKLSAgaWYgKCpwYXlsb2FkID09IC0xKQotICAgIHJldHVybiBGQUxTRTsKLQotICBTS0lQX1NQQUNFUyAocCk7Ci0gIGlmICgqcCA9PSAnXDAnKQotICAgIHJldHVybiBGQUxTRTsKLQotICBQQVJTRV9TVFJJTkcgKHAsICIvIiwgKm5hbWUpOwotICBpZiAoKm5hbWUgPT0gTlVMTCkgewotICAgIEdTVF9ERUJVRyAoIm5vIHJhdGUsIG5hbWUgJXMiLCBwKTsKLSAgICAvKiBubyByYXRlLCBhc3N1bWUgLTEgdGhlbiAqLwotICAgICpuYW1lID0gcDsKLSAgICAqcmF0ZSA9IC0xOwotICAgIHJldHVybiBUUlVFOwotICB9Ci0KLSAgdCA9IHA7Ci0gIHAgPSBzdHJzdHIgKHAsICIvIik7Ci0gIGlmIChwID09IE5VTEwpIHsKLSAgICAqcmF0ZSA9IGF0b2kgKHQpOwotICAgIHJldHVybiBUUlVFOwotICB9Ci0gICpwID0gJ1wwJzsKLSAgcCsrOwotICAqcmF0ZSA9IGF0b2kgKHQpOwotCi0gIHQgPSBwOwotICBpZiAoKnAgPT0gJ1wwJykKLSAgICByZXR1cm4gVFJVRTsKLSAgKnBhcmFtcyA9IHQ7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLS8qCi0gKiAgTWFwcGluZyBvZiBjYXBzIHRvIGFuZCBmcm9tIFNEUCBmaWVsZHM6Ci0gKgotICogICBtPTxtZWRpYT4gPFVEUCBwb3J0PiBSVFAvQVZQIDxwYXlsb2FkPiAKLSAqICAgYT1ydHBtYXA6PHBheWxvYWQ+IDxlbmNvZGluZ19uYW1lPi88Y2xvY2tfcmF0ZT5bLzxlbmNvZGluZ19wYXJhbXM+XQotICogICBhPWZtdHA6PHBheWxvYWQ+IDxwYXJhbT5bPTx2YWx1ZT5dOy4uLgotICovCi1zdGF0aWMgR3N0Q2FwcyAqCi1nc3Rfc2RwX2RlbXV4X21lZGlhX3RvX2NhcHMgKGdpbnQgcHQsIGNvbnN0IEdzdFNEUE1lZGlhICogbWVkaWEpCi17Ci0gIEdzdENhcHMgKmNhcHM7Ci0gIGNvbnN0IGdjaGFyICpydHBtYXA7Ci0gIGNvbnN0IGdjaGFyICpmbXRwOwotICBnY2hhciAqbmFtZSA9IE5VTEw7Ci0gIGdpbnQgcmF0ZSA9IC0xOwotICBnY2hhciAqcGFyYW1zID0gTlVMTDsKLSAgZ2NoYXIgKnRtcDsKLSAgR3N0U3RydWN0dXJlICpzOwotICBnaW50IHBheWxvYWQgPSAwOwotICBnYm9vbGVhbiByZXQ7Ci0KLSAgLyogZ2V0IGFuZCBwYXJzZSBydHBtYXAgKi8KLSAgaWYgKChydHBtYXAgPSBnc3Rfc2RwX21lZGlhX2dldF9hdHRyaWJ1dGVfdmFsIChtZWRpYSwgInJ0cG1hcCIpKSkgewotICAgIHJldCA9IGdzdF9zZHBfZGVtdXhfcGFyc2VfcnRwbWFwIChydHBtYXAsICZwYXlsb2FkLCAmbmFtZSwgJnJhdGUsICZwYXJhbXMpOwotICAgIGlmIChyZXQpIHsKLSAgICAgIGlmIChwYXlsb2FkICE9IHB0KSB7Ci0gICAgICAgIC8qIHdlIGlnbm9yZSB0aGUgcnRwbWFwIGlmIHRoZSBwYXlsb2FkIHR5cGUgaXMgZGlmZmVyZW50LiAqLwotICAgICAgICBnX3dhcm5pbmcgKCJydHBtYXAgb2Ygd3JvbmcgcGF5bG9hZCB0eXBlLCBpZ25vcmluZyIpOwotICAgICAgICBuYW1lID0gTlVMTDsKLSAgICAgICAgcmF0ZSA9IC0xOwotICAgICAgICBwYXJhbXMgPSBOVUxMOwotICAgICAgfQotICAgIH0gZWxzZSB7Ci0gICAgICAvKiBpZiB3ZSBmYWlsZWQgdG8gcGFyc2UgdGhlIHJ0cG1hcCBmb3IgYSBkeW5hbWljIHBheWxvYWQgdHlwZSwgd2UgaGF2ZSBhbgotICAgICAgICogZXJyb3IgKi8KLSAgICAgIGlmIChwdCA+PSA5NikKLSAgICAgICAgZ290byBub19ydHBtYXA7Ci0gICAgICAvKiBlbHNlIHdlIGNhbiBpZ25vcmUgKi8KLSAgICAgIGdfd2FybmluZyAoImVycm9yIHBhcnNpbmcgcnRwbWFwLCBpZ25vcmluZyIpOwotICAgIH0KLSAgfSBlbHNlIHsKLSAgICAvKiBkeW5hbWljIHBheWxvYWRzIG5lZWQgcnRwbWFwIG9yIHdlIGZhaWwgKi8KLSAgICBpZiAocHQgPj0gOTYpCi0gICAgICBnb3RvIG5vX3J0cG1hcDsKLSAgfQotICAvKiBjaGVjayBpZiB3ZSBoYXZlIGEgcmF0ZSwgaWYgbm90LCB3ZSBuZWVkIHRvIGxvb2sgdXAgdGhlIHJhdGUgZnJvbSB0aGUKLSAgICogZGVmYXVsdCByYXRlcyBiYXNlZCBvbiB0aGUgcGF5bG9hZCB0eXBlcy4gKi8KLSAgaWYgKHJhdGUgPT0gLTEpIHsKLSAgICBjb25zdCBHc3RSVFBQYXlsb2FkSW5mbyAqaW5mbzsKLQotICAgIGlmIChHU1RfUlRQX1BBWUxPQURfSVNfRFlOQU1JQyAocHQpKSB7Ci0gICAgICAvKiBkeW5hbWljIHR5cGVzLCB1c2UgbWVkaWEgYW5kIGVuY29kaW5nX25hbWUgKi8KLSAgICAgIHRtcCA9IGdfYXNjaWlfc3RyZG93biAobWVkaWEtPm1lZGlhLCAtMSk7Ci0gICAgICBpbmZvID0gZ3N0X3J0cF9wYXlsb2FkX2luZm9fZm9yX25hbWUgKHRtcCwgbmFtZSk7Ci0gICAgICBnX2ZyZWUgKHRtcCk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIC8qIHN0YXRpYyB0eXBlcywgdXNlIHBheWxvYWQgdHlwZSAqLwotICAgICAgaW5mbyA9IGdzdF9ydHBfcGF5bG9hZF9pbmZvX2Zvcl9wdCAocHQpOwotICAgIH0KLQotICAgIGlmIChpbmZvKSB7Ci0gICAgICBpZiAoKHJhdGUgPSBpbmZvLT5jbG9ja19yYXRlKSA9PSAwKQotICAgICAgICByYXRlID0gLTE7Ci0gICAgfQotICAgIC8qIHdlIGZhaWwgaWYgd2UgY2Fubm90IGZpbmQgb25lICovCi0gICAgaWYgKHJhdGUgPT0gLTEpCi0gICAgICBnb3RvIG5vX3JhdGU7Ci0gIH0KLQotICB0bXAgPSBnX2FzY2lpX3N0cmRvd24gKG1lZGlhLT5tZWRpYSwgLTEpOwotICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImFwcGxpY2F0aW9uL3gtcnRwIiwKLSAgICAgICJtZWRpYSIsIEdfVFlQRV9TVFJJTkcsIHRtcCwgInBheWxvYWQiLCBHX1RZUEVfSU5ULCBwdCwgTlVMTCk7Ci0gIGdfZnJlZSAodG1wKTsKLSAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwotCi0gIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAiY2xvY2stcmF0ZSIsIEdfVFlQRV9JTlQsIHJhdGUsIE5VTEwpOwotCi0gIC8qIGVuY29kaW5nIG5hbWUgbXVzdCBiZSB1cHBlciBjYXNlICovCi0gIGlmIChuYW1lICE9IE5VTEwpIHsKLSAgICB0bXAgPSBnX2FzY2lpX3N0cnVwIChuYW1lLCAtMSk7Ci0gICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJlbmNvZGluZy1uYW1lIiwgR19UWVBFX1NUUklORywgdG1wLCBOVUxMKTsKLSAgICBnX2ZyZWUgKHRtcCk7Ci0gIH0KLQotICAvKiBwYXJhbXMgbXVzdCBiZSBsb3dlciBjYXNlICovCi0gIGlmIChwYXJhbXMgIT0gTlVMTCkgewotICAgIHRtcCA9IGdfYXNjaWlfc3RyZG93biAocGFyYW1zLCAtMSk7Ci0gICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJlbmNvZGluZy1wYXJhbXMiLCBHX1RZUEVfU1RSSU5HLCB0bXAsIE5VTEwpOwotICAgIGdfZnJlZSAodG1wKTsKLSAgfQotCi0gIC8qIHBhcnNlIG9wdGlvbmFsIGZtdHA6IGZpZWxkICovCi0gIGlmICgoZm10cCA9IGdzdF9zZHBfbWVkaWFfZ2V0X2F0dHJpYnV0ZV92YWwgKG1lZGlhLCAiZm10cCIpKSkgewotICAgIGdjaGFyICpwOwotICAgIGdpbnQgcGF5bG9hZCA9IDA7Ci0KLSAgICBwID0gKGdjaGFyICopIGZtdHA7Ci0KLSAgICAvKiBwIGlzIG5vdyBvZiB0aGUgZm9ybWF0IDxwYXlsb2FkPiA8cGFyYW0+Wz08dmFsdWU+XTsuLi4gKi8KLSAgICBQQVJTRV9JTlQgKHAsICIgIiwgcGF5bG9hZCk7Ci0gICAgaWYgKHBheWxvYWQgIT0gLTEgJiYgcGF5bG9hZCA9PSBwdCkgewotICAgICAgZ2NoYXIgKipwYWlyczsKLSAgICAgIGdpbnQgaTsKLQotICAgICAgLyogPHBhcmFtPls9PHZhbHVlPl0gYXJlIHNlcGFyYXRlZCB3aXRoICc7JyAqLwotICAgICAgcGFpcnMgPSBnX3N0cnNwbGl0IChwLCAiOyIsIDApOwotICAgICAgZm9yIChpID0gMDsgcGFpcnNbaV07IGkrKykgewotICAgICAgICBnY2hhciAqdmFscG9zOwotICAgICAgICBjb25zdCBnY2hhciAqa2V5LCAqdmFsOwotICAgICAgICBnaW50IGo7Ci0gICAgICAgIGNvbnN0IGdjaGFyICpyZXNlcnZlZF9rZXlzW10gPQotICAgICAgICAgICAgeyAibWVkaWEiLCAicGF5bG9hZCIsICJjbG9jay1yYXRlIiwgImVuY29kaW5nLW5hbWUiLAotICAgICAgICAgICJlbmNvZGluZy1wYXJhbXMiCi0gICAgICAgIH07Ci0KLSAgICAgICAgLyogdGhlIGtleSBtYXkgbm90IGhhdmUgYSAnPScsIHRoZSB2YWx1ZSBjYW4gaGF2ZSBvdGhlciAnPSdzICovCi0gICAgICAgIHZhbHBvcyA9IHN0cnN0ciAocGFpcnNbaV0sICI9Iik7Ci0gICAgICAgIGlmICh2YWxwb3MpIHsKLSAgICAgICAgICAvKiB3ZSBoYXZlIGEgJz0nIGFuZCB0aHVzIGEgdmFsdWUsIHJlbW92ZSB0aGUgJz0nIHdpdGggXDAgKi8KLSAgICAgICAgICAqdmFscG9zID0gJ1wwJzsKLSAgICAgICAgICAvKiB2YWx1ZSBpcyBldmVyeXRoaW5nIGJldHdlZW4gJz0nIGFuZCAnOycuIEZJWE1FLCBzdHJpcD8gKi8KLSAgICAgICAgICB2YWwgPSBnX3N0cnN0cmlwICh2YWxwb3MgKyAxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAvKiBzaW1wbGUgPHBhcmFtPjsuLiBpcyB0cmFuc2xhdGVkIGludG8gPHBhcmFtPj0xOy4uLiAqLwotICAgICAgICAgIHZhbCA9ICIxIjsKLSAgICAgICAgfQotICAgICAgICAvKiBzdHJpcCB0aGUga2V5IG9mIHNwYWNlcywgY29udmVydCBrZXkgdG8gbG93ZXJjYXNlIGJ1dCBub3QgdGhlIHZhbHVlLiAqLwotICAgICAgICBrZXkgPSBnX3N0cnN0cmlwIChwYWlyc1tpXSk7Ci0KLSAgICAgICAgLyogc2tpcCBrZXlzIGZyb20gdGhlIGZtdHAsIHdoaWNoIHdlIGFscmVhZHkgdXNlIG91cnNlbHZlcyBmb3IgdGhlCi0gICAgICAgICAqIGNhcHMuIFNvbWUgc29mdHdhcmUgaXMgYWRkaW5nIHJhbmRvbSB0aGluZ3MgbGlrZSBjbG9jay1yYXRlIGludG8KLSAgICAgICAgICogdGhlIGZtdHAsIGFuZCB3ZSB3b3VsZCBvdGhlcndpc2UgaGVyZSBzZXQgYSBzdHJpbmctdHlwZWQgY2xvY2stcmF0ZQotICAgICAgICAgKiBpbiB0aGUgY2Fwcy4uLiBhbmQgdGh1cyBmYWlsIHRvIGNyZWF0ZSB2YWxpZCBSVFAgY2FwcwotICAgICAgICAgKi8KLSAgICAgICAgZm9yIChqID0gMDsgaiA8IEdfTl9FTEVNRU5UUyAocmVzZXJ2ZWRfa2V5cyk7IGorKykgewotICAgICAgICAgIGlmIChnX2FzY2lpX3N0cmNhc2VjbXAgKHJlc2VydmVkX2tleXNbal0sIGtleSkgPT0gMCkgewotICAgICAgICAgICAga2V5ID0gIiI7Ci0gICAgICAgICAgICBicmVhazsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAoc3RybGVuIChrZXkpID4gMSkgewotICAgICAgICAgIHRtcCA9IGdfYXNjaWlfc3RyZG93biAoa2V5LCAtMSk7Ci0gICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsIHRtcCwgR19UWVBFX1NUUklORywgdmFsLCBOVUxMKTsKLSAgICAgICAgICBnX2ZyZWUgKHRtcCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGdfc3RyZnJlZXYgKHBhaXJzKTsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIGNhcHM7Ci0KLSAgLyogRVJST1JTICovCi1ub19ydHBtYXA6Ci0gIHsKLSAgICBnX3dhcm5pbmcgKCJydHBtYXAgdHlwZSBub3QgZ2l2ZW4gZm9yIGR5bmFtaWMgcGF5bG9hZCAlZCIsIHB0KTsKLSAgICByZXR1cm4gTlVMTDsKLSAgfQotbm9fcmF0ZToKLSAgewotICAgIGdfd2FybmluZyAoInJhdGUgdW5rbm93biBmb3IgcGF5bG9hZCB0eXBlICVkIiwgcHQpOwotICAgIHJldHVybiBOVUxMOwotICB9Ci19Ci0KIC8qIHRoaXMgY2FsbGJhY2sgaXMgY2FsbGVkIHdoZW4gdGhlIHNlc3Npb24gbWFuYWdlciBnZW5lcmF0ZWQgYSBuZXcgc3JjIHBhZCB3aXRoCiAgKiBwYXlsb2FkZWQgUlRQIHBhY2tldHMuIFdlIHNpbXBseSBnaG9zdCB0aGUgcGFkIGhlcmUuICovCiBzdGF0aWMgdm9pZAogbmV3X3Nlc3Npb25fcGFkIChHc3RFbGVtZW50ICogc2Vzc2lvbiwgR3N0UGFkICogcGFkLCBHc3RTRFBEZW11eCAqIGRlbXV4KQogewotICBnY2hhciAqbmFtZTsKKyAgZ2NoYXIgKm5hbWUsICpwYWRfbmFtZTsKICAgR3N0UGFkVGVtcGxhdGUgKnRlbXBsYXRlOwogICBnaW50IGlkLCBzc3JjLCBwdDsKICAgR0xpc3QgKmxzdHJlYW07CkBAIC03NTYsMTEgKzUxNCwxMyBAQAogICAvKiBubyBuZWVkIGZvciBhIHRpbWVvdXQgYW55bW9yZSBub3cgKi8KICAgZ19vYmplY3Rfc2V0IChHX09CSkVDVCAoc3RyZWFtLT51ZHBzcmNbMF0pLCAidGltZW91dCIsIChndWludDY0KSAwLCBOVUxMKTsKIAorICBwYWRfbmFtZSA9IGdfc3RyZHVwX3ByaW50ZiAoInN0cmVhbV8ldSIsIHN0cmVhbS0+aWQpOwogICAvKiBjcmVhdGUgYSBuZXcgcGFkIHdlIHdpbGwgdXNlIHRvIHN0cmVhbSB0byAqLwogICB0ZW1wbGF0ZSA9IGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnJ0cHRlbXBsYXRlKTsKLSAgc3RyZWFtLT5zcmNwYWQgPSBnc3RfZ2hvc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlIChuYW1lLCBwYWQsIHRlbXBsYXRlKTsKKyAgc3RyZWFtLT5zcmNwYWQgPSBnc3RfZ2hvc3RfcGFkX25ld19mcm9tX3RlbXBsYXRlIChwYWRfbmFtZSwgcGFkLCB0ZW1wbGF0ZSk7CiAgIGdzdF9vYmplY3RfdW5yZWYgKHRlbXBsYXRlKTsKICAgZ19mcmVlIChuYW1lKTsKKyAgZ19mcmVlIChwYWRfbmFtZSk7CiAKICAgc3RyZWFtLT5hZGRlZCA9IFRSVUU7CiAgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3RyZWFtLT5zcmNwYWQsIFRSVUUpOwpkaWZmIC0tZ2l0IGEvZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlLmluIGIvZ3N0L3NlZ21lbnRjbGlwL01ha2VmaWxlLmluCmluZGV4IDM3MWFkMDIuLjc3MjRhM2UgMTAwNjQ0Ci0tLSBhL2dzdC9zZWdtZW50Y2xpcC9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc2VnbWVudGNsaXAvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc4LDYgKzI3Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE1LDYgKzMxNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIzLDcgKzMyNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Miw4ICszNDQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYwLDE2ICszNjMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk1LDYgKzM5OSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMCw2ICs0MjYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjEsNiArNTI5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNCw4ICs1NDMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTEsNiArNTU4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOCwxNiArNjE3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY5LDYgKzY4MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzksNiArNjkxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg4LDYgKzcwMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjUsNyArNzQwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3Qvc2VnbWVudGNsaXAvZ3N0dmlkZW9zZWdtZW50Y2xpcC5jIGIvZ3N0L3NlZ21lbnRjbGlwL2dzdHZpZGVvc2VnbWVudGNsaXAuYwppbmRleCA3NDMwYTY1Li4wYjE2OGU0IDEwMDY0NAotLS0gYS9nc3Qvc2VnbWVudGNsaXAvZ3N0dmlkZW9zZWdtZW50Y2xpcC5jCisrKyBiL2dzdC9zZWdtZW50Y2xpcC9nc3R2aWRlb3NlZ21lbnRjbGlwLmMKQEAgLTE2Nyw4ICsxNjcsOCBAQAogCiAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKIAotICByZXQgPSBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbiAocywgImZyYW1lcmF0ZSIsICZmcHNfbiwgJmZwc19kKTsKLSAgcmV0ID0gKGZwc19kICE9IDApOworICByZXQgPSBnc3Rfc3RydWN0dXJlX2dldF9mcmFjdGlvbiAocywgImZyYW1lcmF0ZSIsICZmcHNfbiwgJmZwc19kKQorICAgICAgJiYgKGZwc19kICE9IDApOwogCiAgIGlmIChyZXQpIHsKICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQ29uZmlndXJlZCBmcmFtZXJhdGUgJWQvJWQiLCBmcHNfbiwgZnBzX2QpOwpkaWZmIC0tZ2l0IGEvZ3N0L3NpcmVuL01ha2VmaWxlLmluIGIvZ3N0L3NpcmVuL01ha2VmaWxlLmluCmluZGV4IDZjOTliOTcuLjk4OTVmZjAgMTAwNjQ0Ci0tLSBhL2dzdC9zaXJlbi9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc2lyZW4vTWFrZWZpbGUuaW4KQEAgLTExNSwxNiArMTE1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9zbW9vdGgvTWFrZWZpbGUuaW4gYi9nc3Qvc21vb3RoL01ha2VmaWxlLmluCmluZGV4IGZlODJmYzEuLmFlNWI0NGIgMTAwNjQ0Ci0tLSBhL2dzdC9zbW9vdGgvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3Ntb290aC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC9zcGVlZC9NYWtlZmlsZS5pbiBiL2dzdC9zcGVlZC9NYWtlZmlsZS5pbgppbmRleCA2NGVlYzYyLi5kMzRlZTU2IDEwMDY0NAotLS0gYS9nc3Qvc3BlZWQvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3NwZWVkL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3NwZWVkL2dzdHNwZWVkLmMgYi9nc3Qvc3BlZWQvZ3N0c3BlZWQuYwppbmRleCA5ZmNkYWQzLi5jMGY5MTk4IDEwMDY0NAotLS0gYS9nc3Qvc3BlZWQvZ3N0c3BlZWQuYworKysgYi9nc3Qvc3BlZWQvZ3N0c3BlZWQuYwpAQCAtMzEsNyArMzEsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZmlsZXNyYyBsb2NhdGlvbj10ZXN0Lm9nZyAhIGRlY29kZWJpbiAhIGF1ZGlvY29udmVydCAhIHNwZWVkIHNwZWVkPTEuNSAhIGF1ZGlvY29udmVydCAhIGF1ZGlvcmVzYW1wbGUgISBhdXRvYXVkaW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBmaWxlc3JjIGxvY2F0aW9uPXRlc3Qub2dnICEgZGVjb2RlYmluICEgYXVkaW9jb252ZXJ0ICEgc3BlZWQgc3BlZWQ9MS41ICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGF1dG9hdWRpb3NpbmsKICAqIF18IFBsYXlzIGFuIC5vZ2cgZmlsZSBhdCAxLjV4IHNwZWVkLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3N0ZXJlby9NYWtlZmlsZS5pbiBiL2dzdC9zdGVyZW8vTWFrZWZpbGUuaW4KaW5kZXggYWNlMDgwYy4uNWI0Mzg4NiAxMDA2NDQKLS0tIGEvZ3N0L3N0ZXJlby9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc3RlcmVvL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3N0ZXJlby9nc3RzdGVyZW8uYyBiL2dzdC9zdGVyZW8vZ3N0c3RlcmVvLmMKaW5kZXggZWJhZGY5YS4uZjdlMDEzYiAxMDA2NDQKLS0tIGEvZ3N0L3N0ZXJlby9nc3RzdGVyZW8uYworKysgYi9nc3Qvc3RlcmVvL2dzdHN0ZXJlby5jCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj1zaW5lLm9nZyAhIG9nZ2RlbXV4ICEgdm9yYmlzZGVjICEgYXVkaW9jb252ZXJ0ICEgc3RlcmVvICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIGFsc2FzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPXNpbmUub2dnICEgb2dnZGVtdXggISB2b3JiaXNkZWMgISBhdWRpb2NvbnZlcnQgISBzdGVyZW8gISBhdWRpb2NvbnZlcnQgISBhdWRpb3Jlc2FtcGxlICEgYWxzYXNpbmsKICAqIF18IFBsYXkgYW4gT2dnL1ZvcmJpcyBmaWxlLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3N1YmVuYy9NYWtlZmlsZS5pbiBiL2dzdC9zdWJlbmMvTWFrZWZpbGUuaW4KaW5kZXggYzBkNTJlZi4uNTUxODA1ZCAxMDA2NDQKLS0tIGEvZ3N0L3N1YmVuYy9NYWtlZmlsZS5pbgorKysgYi9nc3Qvc3ViZW5jL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NCw2ICsyNzMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzU5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTM5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3R0YS9NYWtlZmlsZS5pbiBiL2dzdC90dGEvTWFrZWZpbGUuaW4KaW5kZXggMDA3MjI1ZC4uNjgyOTA1ZCAxMDA2NDQKLS0tIGEvZ3N0L3R0YS9NYWtlZmlsZS5pbgorKysgYi9nc3QvdHRhL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvZmlsdGVycy9NYWtlZmlsZS5pbiBiL2dzdC92aWRlb2ZpbHRlcnMvTWFrZWZpbGUuaW4KaW5kZXggNzljMDUzMC4uNzE0YWQxMiAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvZmlsdGVycy9NYWtlZmlsZS5pbgorKysgYi9nc3QvdmlkZW9maWx0ZXJzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4MCw2ICsyNzksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNyw2ICszMTgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNSw3ICszMjgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDQsOCArMzQ2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MiwxNiArMzY1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Nyw2ICs0MDEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjIsNiArNDI4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIzLDYgKzUzMSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzYsOCArNTQ1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUzLDYgKzU2MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTAsMTYgKzYxOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MSw2ICs2ODIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgxLDYgKzY5Myw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5MCw2ICs3MDMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI3LDcgKzc0Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvZmlsdGVycy9nc3RzY2VuZWNoYW5nZS5jIGIvZ3N0L3ZpZGVvZmlsdGVycy9nc3RzY2VuZWNoYW5nZS5jCmluZGV4IDdhYmZjOGIuLjVhZGYzY2UgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb2ZpbHRlcnMvZ3N0c2NlbmVjaGFuZ2UuYworKysgYi9nc3QvdmlkZW9maWx0ZXJzL2dzdHNjZW5lY2hhbmdlLmMKQEAgLTM1LDcgKzM1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249c29tZV9maWxlLm9ndiAhIGRlY29kZWJpbiAhIAorICogZ3N0LWxhdW5jaC0xLjAgLXYgZmlsZXNyYyBsb2NhdGlvbj1zb21lX2ZpbGUub2d2ICEgZGVjb2RlYmluICEKICAqICAgc2NlbmVjaGFuZ2UgISB0aGVvcmFlbmMgISBmYWtlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9maWx0ZXJzL2dzdHZpZGVvZGlmZi5jIGIvZ3N0L3ZpZGVvZmlsdGVycy9nc3R2aWRlb2RpZmYuYwppbmRleCBjNmNkYzg2Li42ZjViMzVlIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9maWx0ZXJzL2dzdHZpZGVvZGlmZi5jCisrKyBiL2dzdC92aWRlb2ZpbHRlcnMvZ3N0dmlkZW9kaWZmLmMKQEAgLTI0LDcgKzI0LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZha2VzcmMgISB2aWRlb2RpZmYgISBGSVhNRSAhIGZha2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmYWtlc3JjICEgdmlkZW9kaWZmICEgRklYTUUgISBmYWtlc2luawogICogXXwKICAqIEZJWE1FIERlc2NyaWJlIHdoYXQgdGhlIHBpcGVsaW5lIGRvZXMuCiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvZmlsdGVycy9nc3R6ZWJyYXN0cmlwZS5jIGIvZ3N0L3ZpZGVvZmlsdGVycy9nc3R6ZWJyYXN0cmlwZS5jCmluZGV4IDBiMDgxMDAuLjgxZjU4YjggMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb2ZpbHRlcnMvZ3N0emVicmFzdHJpcGUuYworKysgYi9nc3QvdmlkZW9maWx0ZXJzL2dzdHplYnJhc3RyaXBlLmMKQEAgLTMwLDcgKzMwLDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhIHplYnJhc3RyaXBlICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyAhIHplYnJhc3RyaXBlICEgeHZpbWFnZXNpbmsKICAqIF18CiAgKiBNYXJrcyBvdmVyZXhwb3NlZCBhcmVhcyBvZiB0aGUgdmlkZW8gd2l0aCB6ZWJyYSBzdHJpcGVzLgogICoKZGlmZiAtLWdpdCBhL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUuYW0gYi9nc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MTk3MjkKLS0tIC9kZXYvbnVsbAorKysgYi9nc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsOSBAQAorcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsLmxhCisKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9TT1VSQ0VTID0gZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xJQkFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSAkKEdTVF9CQVNFX0xJQlMpICQoTElCTSkKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKKworbm9pbnN0X0hFQURFUlMgPSBnc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuaApkaWZmIC0tZ2l0IGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbiBiL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUuaW4Kc2ltaWxhcml0eSBpbmRleCA4OCUKY29weSBmcm9tIGdzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KY29weSB0byBnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlLmluCmluZGV4IGJhOWU1YTIuLjQwNGZjN2EgMTAwNjQ0Ci0tLSBhL2dzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9NYWtlZmlsZS5pbgpAQCAtOTAsNyArOTAsNyBAQAogYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotc3ViZGlyID0gZ3N0L2xpdmVhZGRlcgorc3ViZGlyID0gZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbAogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYXV0by1hbHQubTQgXApAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjQsMTggKzE2MywyMSBAQAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvCi1saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpCithbV9saWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfT0JKRUNUUyA9ICBcCisJbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5sbworbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX09CSkVDVFMgPSAgXAorCSQoYW1fbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RsaXZlYWRkZXJfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAotCSQoQ0NMRCkgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSBcCisJLS1tb2RlPWxpbmsgJChDQ0xEKSAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9DRkxBR1MpIFwKKwkkKENGTEFHUykgJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTERGTEFHUykgJChMREZMQUdTKSBcCisJLW8gJEAKIEFNX1ZfUCA9ICQoYW1fX3ZfUF9AQU1fVkApCiBhbV9fdl9QXyA9ICQoYW1fX3ZfUF9AQU1fREVGQVVMVF9WQCkKIGFtX192X1BfMCA9IGZhbHNlCkBAIC0yMTAsOCArMjEyLDggQEAKIGFtX192X0NDTERfID0gJChhbV9fdl9DQ0xEX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfQ0NMRF8wID0gQGVjaG8gIiAgQ0NMRCAgICAiICRAOwogYW1fX3ZfQ0NMRF8xID0gCi1TT1VSQ0VTID0gJChsaWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUykKLURJU1RfU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCitTT1VSQ0VTID0gJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX1NPVVJDRVMpCiBhbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKICAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCiAgICAgbnxub3xOTykgZmFsc2U7OyBcCkBAIC0yNzQsNiArMjc2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzE1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzI1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0Myw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM2MiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyNSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzU0Miw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2OTAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNzAwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc2MSwxNiArNzc4LDEzIEBACiB0b3BfYnVpbGRkaXIgPSBAdG9wX2J1aWxkZGlyQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogd2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKLXBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGxpdmVhZGRlci5sYQotbGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMgPSBsaXZlYWRkZXIuYwotbGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCA9IFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKQotCi1saWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGxpdmVhZGRlci5oCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwubGEKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9TT1VSQ0VTID0gZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKQorbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xJQkFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLSQoR1NUX0FQSV9WRVJTSU9OKSAkKEdTVF9CQVNFX0xJQlMpICQoTElCTSkKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK25vaW5zdF9IRUFERVJTID0gZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmgKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTc4NCw5ICs3OTgsOSBAQAogCSAgICAgIGV4aXQgMTs7IFwKIAkgIGVzYWM7IFwKIAlkb25lOyBcCi0JZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSc7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL01ha2VmaWxlJzsgXAogCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKLQkgICQoQVVUT01BS0UpIC0tZ251IGdzdC9saXZlYWRkZXIvTWFrZWZpbGUKKwkgICQoQVVUT01BS0UpIC0tZ251IGdzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvTWFrZWZpbGUKIE1ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAY2FzZSAnJD8nIGluIFwKIAkgICpjb25maWcuc3RhdHVzKikgXApAQCAtODQwLDggKzg1NCw4IEBACiAJICBybSAtZiAkJHtsb2NzfTsgXAogCX0KIAotbGliZ3N0bGl2ZWFkZGVyLmxhOiAkKGxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NDTEQpJChsaWJnc3RsaXZlYWRkZXJfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJBREQpICQoTElCUykKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbC5sYTogJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfT0JKRUNUUykgJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9ERVBFTkRFTkNJRVMpIAorCSQoQU1fVl9DQ0xEKSQobGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfT0JKRUNUUykgJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElCQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04NDksNyArODYzLDcgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtODc1LDEyICs4ODksMTIgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbzogbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlRwbyAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvICQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpdmVhZGRlci5jJyBvYmplY3Q9J2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYS1nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwubG86IGdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5UcG8gLWMgLW8gbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5sbyBgdGVzdCAtZiAnZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLlRwbyAkKERFUERJUikvbGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhLWdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYycgb2JqZWN0PSdsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGEtZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvIGB0ZXN0IC1mICdsaXZlYWRkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGl2ZWFkZGVyLmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3R2aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sYS1nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwubG8gYHRlc3QgLWYgJ2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYwogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCmRpZmYgLS1naXQgYS9nc3QvdmlkZW9mcmFtZV9hdWRpb2xldmVsL2dzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jIGIvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZGU5OTY2Ci0tLSAvZGV2L251bGwKKysrIGIvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYwpAQCAtMCwwICsxLDc4OSBAQAorLyoKKyAqIEdTdHJlYW1lcgorICogQ29weXJpZ2h0IChDKSAyMDE1IFZpdmlhIE5pa29sYWlkb3UgPHZpdmlhQHRvb2xzb25haXIuY29tPgorICoKKyAqIEJhc2VkIG9uIGdzdGxldmVsLmM6CisgKiBDb3B5cmlnaHQgKEMpIDIwMDAsMjAwMSwyMDAyLDIwMDMsMjAwNQorICogICAgICAgICAgIFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hcyBhdCBhcGVzdGFhcnQgZG90IG9yZz4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisvKioKKyAqIFNFQ1RJT046ZWxlbWVudC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwKKyAqCisgKiBUaGlzIGVsZW1lbnQgYWN0cyBsaWtlIGEgc3luY2hyb25pemVkIGF1ZGlvL3ZpZGVvICJsZXZlbCIuIEl0IGdhdGhlcnMKKyAqIGFsbCBhdWRpbyBidWZmZXJzIHNlbnQgYmV0d2VlbiB0d28gdmlkZW8gZnJhbWVzLCBhbmQgdGhlbiBzZW5kcyBhIG1lc3NhZ2UKKyAqIHRoYXQgY29udGFpbnMgdGhlIFJNUyB2YWx1ZSBvZiBhbGwgc2FtcGxlcyBmb3IgdGhlc2UgYnVmZmVycy4KKyAqCisgKiA8cmVmc2VjdDI+CisgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLW0gZmlsZXNyYyBsb2NhdGlvbj0iZmlsZS5ta3YiICEgZGVjb2RlYmluIG5hbWU9ZCAhICJhdWRpby94LXJhdyIgISB2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwgbmFtZT1sICEgYXV0b2F1ZGlvc2luayBkLiAhICJ2aWRlby94LXJhdyIgISBsLiBsLiAhIHF1ZXVlICEgYXV0b3ZpZGVvc2luayBdfAorICogPC9yZWZzZWN0Mj4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKy8qIEZJWE1FIDIuMDogc3VwcHJlc3Mgd2FybmluZ3MgZm9yIGRlcHJlY2F0ZWQgQVBJIHN1Y2ggYXMgR1ZhbHVlQXJyYXkKKyAqIHdpdGggbmV3ZXIgR0xpYiB2ZXJzaW9ucyAoPj0gMi4zMS4wKSAqLworI2RlZmluZSBHTElCX0RJU0FCTEVfREVQUkVDQVRJT05fV0FSTklOR1MKKworI2luY2x1ZGUgImdzdHZpZGVvZnJhbWUtYXVkaW9sZXZlbC5oIgorI2luY2x1ZGUgPG1hdGguaD4KKworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9kZWJ1ZworI2lmIEdfQllURV9PUkRFUiA9PSBHX0xJVFRMRV9FTkRJQU4KKyMgZGVmaW5lIEZPUk1BVFMgInsgUzgsIFMxNkxFLCBTMzJMRSwgRjMyTEUsIEY2NExFIH0iCisjZWxzZQorIyBkZWZpbmUgRk9STUFUUyAieyBTOCwgUzE2QkUsIFMzMkJFLCBGMzJCRSwgRjY0QkUgfSIKKyNlbmRpZgorR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9ERUZBVUxUKTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGF1ZGlvX3NpbmtfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJhc2luayIsCisgICAgR1NUX1BBRF9TSU5LLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0FVRElPX0NBUFNfTUFLRSAoRk9STUFUUykpCisgICAgKTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGF1ZGlvX3NyY190ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoImFzcmMiLAorICAgIEdTVF9QQURfU1JDLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX0FVRElPX0NBUFNfTUFLRSAoRk9STUFUUykpCisgICAgKTsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHZpZGVvX3NpbmtfdGVtcGxhdGUgPQorR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJ2c2luayIsCisgICAgR1NUX1BBRF9TSU5LLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3IikKKyAgICApOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgdmlkZW9fc3JjX3RlbXBsYXRlID0KK0dTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgidnNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXciKQorICAgICk7CisKKyNkZWZpbmUgcGFyZW50X2NsYXNzIGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfcGFyZW50X2NsYXNzCitHX0RFRklORV9UWVBFIChHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCwgZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbCwKKyAgICBHU1RfVFlQRV9FTEVNRU5UKTsKKworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9hc2lua19jaGFpbiAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogaW5idWYpOworc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92c2lua19jaGFpbiAoR3N0UGFkICogcGFkLAorICAgIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogaW5idWYpOworc3RhdGljIGdib29sZWFuIGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYXNpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKKyAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOworc3RhdGljIGdib29sZWFuIGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdnNpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwKKyAgICBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpOworc3RhdGljIEdzdEl0ZXJhdG9yICpnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2l0ZXJhdGVfaW50ZXJuYWxfbGlua3MgKEdzdFBhZCAqCisgICAgcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQpOworCitzdGF0aWMgdm9pZCBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2ZpbmFsaXplIChHT2JqZWN0ICogZ29iamVjdCk7CisKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybiBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqCisgICAgZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbik7CisKK3N0YXRpYyB2b2lkCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NsYXNzX2luaXQgKEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsQ2xhc3MgKiBrbGFzcykKK3sKKyAgR3N0RWxlbWVudENsYXNzICpnc3RlbGVtZW50X2NsYXNzOworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSAoR09iamVjdENsYXNzICopIGtsYXNzOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2RlYnVnLAorICAgICAgInZpZGVvZnJhbWUtYXVkaW9sZXZlbCIsIDAsICJTeW5jaHJvbml6ZWQgYXVkaW8vdmlkZW8gbGV2ZWwiKTsKKworICBnc3RlbGVtZW50X2NsYXNzID0gKEdzdEVsZW1lbnRDbGFzcyAqKSBrbGFzczsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgIlZpZGVvLWZyYW1lIGF1ZGlvIGxldmVsIiwgIkZpbHRlci9BbmFseXplci9BdWRpbyIsCisgICAgICAiU3luY2hyb25pemVkIGF1ZGlvL3ZpZGVvIFJNUyBMZXZlbCBtZXNzZW5nZXIgZm9yIGF1ZGlvL3JhdyIsCisgICAgICAiVml2aWEgTmlrb2xhaWRvdSA8dml2aWFAdG9vbHNvbmFpci5jb20+Iik7CisKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2ZpbmFsaXplOworICBnc3RlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NoYW5nZV9zdGF0ZTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmYXVkaW9fc3JjX3RlbXBsYXRlKSk7CisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZhdWRpb19zaW5rX3RlbXBsYXRlKSk7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnZpZGVvX3NyY190ZW1wbGF0ZSkpOworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChnc3RlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmdmlkZW9fc2lua190ZW1wbGF0ZSkpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9pbml0IChHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCAqIHNlbGYpCit7CisgIHNlbGYtPmFzaW5rcGFkID0KKyAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmYXVkaW9fc2lua190ZW1wbGF0ZSwgImFzaW5rIik7CisgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChzZWxmLT5hc2lua3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2FzaW5rX2NoYWluKSk7CisgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uIChzZWxmLT5hc2lua3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2FzaW5rX2V2ZW50KSk7CisgIGdzdF9wYWRfc2V0X2l0ZXJhdGVfaW50ZXJuYWxfbGlua3NfZnVuY3Rpb24gKHNlbGYtPmFzaW5rcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfaXRlcmF0ZV9pbnRlcm5hbF9saW5rcykpOworICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoc2VsZiksIHNlbGYtPmFzaW5rcGFkKTsKKworICBzZWxmLT52c2lua3BhZCA9CisgICAgICBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJnZpZGVvX3NpbmtfdGVtcGxhdGUsICJ2c2luayIpOworICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoc2VsZi0+dnNpbmtwYWQsCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92c2lua19jaGFpbikpOworICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoc2VsZi0+dnNpbmtwYWQsCisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF92c2lua19ldmVudCkpOworICBnc3RfcGFkX3NldF9pdGVyYXRlX2ludGVybmFsX2xpbmtzX2Z1bmN0aW9uIChzZWxmLT52c2lua3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2l0ZXJhdGVfaW50ZXJuYWxfbGlua3MpKTsKKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKHNlbGYpLCBzZWxmLT52c2lua3BhZCk7CisKKyAgc2VsZi0+YXNyY3BhZCA9CisgICAgICBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJmF1ZGlvX3NyY190ZW1wbGF0ZSwgImFzcmMiKTsKKyAgZ3N0X3BhZF9zZXRfaXRlcmF0ZV9pbnRlcm5hbF9saW5rc19mdW5jdGlvbiAoc2VsZi0+YXNyY3BhZCwKKyAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2l0ZXJhdGVfaW50ZXJuYWxfbGlua3MpKTsKKyAgZ3N0X2VsZW1lbnRfYWRkX3BhZCAoR1NUX0VMRU1FTlQgKHNlbGYpLCBzZWxmLT5hc3JjcGFkKTsKKworICBzZWxmLT52c3JjcGFkID0KKyAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmdmlkZW9fc3JjX3RlbXBsYXRlLCAidnNyYyIpOworICBnc3RfcGFkX3NldF9pdGVyYXRlX2ludGVybmFsX2xpbmtzX2Z1bmN0aW9uIChzZWxmLT52c3JjcGFkLAorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfaXRlcmF0ZV9pbnRlcm5hbF9saW5rcykpOworICBnc3RfZWxlbWVudF9hZGRfcGFkIChHU1RfRUxFTUVOVCAoc2VsZiksIHNlbGYtPnZzcmNwYWQpOworCisgIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKHNlbGYtPmFzaW5rcGFkKTsKKyAgR1NUX1BBRF9TRVRfUFJPWFlfQUxMT0NBVElPTiAoc2VsZi0+YXNpbmtwYWQpOworCisgIEdTVF9QQURfU0VUX1BST1hZX0NBUFMgKHNlbGYtPmFzcmNwYWQpOworICBHU1RfUEFEX1NFVF9QUk9YWV9TQ0hFRFVMSU5HIChzZWxmLT5hc3JjcGFkKTsKKworICBHU1RfUEFEX1NFVF9QUk9YWV9DQVBTIChzZWxmLT52c2lua3BhZCk7CisgIEdTVF9QQURfU0VUX1BST1hZX0FMTE9DQVRJT04gKHNlbGYtPnZzaW5rcGFkKTsKKworICBHU1RfUEFEX1NFVF9QUk9YWV9DQVBTIChzZWxmLT52c3JjcGFkKTsKKyAgR1NUX1BBRF9TRVRfUFJPWFlfU0NIRURVTElORyAoc2VsZi0+dnNyY3BhZCk7CisKKyAgc2VsZi0+YWRhcHRlciA9IGdzdF9hZGFwdGVyX25ldyAoKTsKKworICBnX3F1ZXVlX2luaXQgKCZzZWxmLT52dGltZXEpOworICBzZWxmLT5maXJzdF90aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgc2VsZi0+dG90YWxfZnJhbWVzID0gMDsKKyAgLyogYWxpZ25tZW50X3RocmVzaG9sZCBhbmQgZGlzY29udF93YWl0IHNob3VsZCBiZWNvbWUgcHJvcGVydGllcyBpZiBuZWVkZWQgKi8KKyAgc2VsZi0+YWxpZ25tZW50X3RocmVzaG9sZCA9IDQwICogR1NUX01TRUNPTkQ7CisgIHNlbGYtPmRpc2NvbnRfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIHNlbGYtPm5leHRfb2Zmc2V0ID0gLTE7CisgIHNlbGYtPmRpc2NvbnRfd2FpdCA9IDEgKiBHU1RfU0VDT05EOworCisgIHNlbGYtPnZpZGVvX2Vvc19mbGFnID0gRkFMU0U7CisgIHNlbGYtPmF1ZGlvX2ZsdXNoX2ZsYWcgPSBGQUxTRTsKKyAgc2VsZi0+c2h1dGRvd25fZmxhZyA9IEZBTFNFOworCisgIGdfbXV0ZXhfaW5pdCAoJnNlbGYtPm11dGV4KTsKKyAgZ19jb25kX2luaXQgKCZzZWxmLT5jb25kKTsKK30KKworc3RhdGljIEdzdFN0YXRlQ2hhbmdlUmV0dXJuCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NoYW5nZV9zdGF0ZSAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKK3sKKyAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0OworICBHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCAqc2VsZiA9IEdTVF9WSURFT0ZSQU1FX0FVRElPTEVWRUwgKGVsZW1lbnQpOworCisgIHN3aXRjaCAodHJhbnNpdGlvbikgeworICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBzZWxmLT5zaHV0ZG93bl9mbGFnID0gVFJVRTsKKyAgICAgIGdfY29uZF9zaWduYWwgKCZzZWxmLT5jb25kKTsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX1BBVVNFRDoKKyAgICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIHNlbGYtPnNodXRkb3duX2ZsYWcgPSBGQUxTRTsKKyAgICAgIHNlbGYtPnZpZGVvX2Vvc19mbGFnID0gRkFMU0U7CisgICAgICBzZWxmLT5hdWRpb19mbHVzaF9mbGFnID0gRkFMU0U7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXQgPSBHU1RfRUxFTUVOVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+Y2hhbmdlX3N0YXRlIChlbGVtZW50LCB0cmFuc2l0aW9uKTsKKworICBzd2l0Y2ggKHRyYW5zaXRpb24pIHsKKyAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUEFVU0VEX1RPX1JFQURZOgorICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgc2VsZi0+Zmlyc3RfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgICBzZWxmLT50b3RhbF9mcmFtZXMgPSAwOworICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlbGYtPmFzZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7CisgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+dnNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKKyAgICAgIHNlbGYtPnZzZWdtZW50LnBvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgIGdzdF9hZGFwdGVyX2NsZWFyIChzZWxmLT5hZGFwdGVyKTsKKyAgICAgIGdfcXVldWVfZm9yZWFjaCAoJnNlbGYtPnZ0aW1lcSwgKEdGdW5jKSBnX2ZyZWUsIE5VTEwpOworICAgICAgZ19xdWV1ZV9jbGVhciAoJnNlbGYtPnZ0aW1lcSk7CisgICAgICBpZiAoc2VsZi0+Q1MpIHsKKyAgICAgICAgZ19mcmVlIChzZWxmLT5DUyk7CisgICAgICAgIHNlbGYtPkNTID0gTlVMTDsKKyAgICAgIH0KKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIHZvaWQKK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsICpzZWxmID0gR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTCAob2JqZWN0KTsKKworICBpZiAoc2VsZi0+YWRhcHRlcikgeworICAgIGdfb2JqZWN0X3VucmVmIChzZWxmLT5hZGFwdGVyKTsKKyAgICBzZWxmLT5hZGFwdGVyID0gTlVMTDsKKyAgfQorICBnX3F1ZXVlX2ZvcmVhY2ggKCZzZWxmLT52dGltZXEsIChHRnVuYykgZ19mcmVlLCBOVUxMKTsKKyAgZ19xdWV1ZV9jbGVhciAoJnNlbGYtPnZ0aW1lcSk7CisgIHNlbGYtPmZpcnN0X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICBzZWxmLT50b3RhbF9mcmFtZXMgPSAwOworICBpZiAoc2VsZi0+Q1MpIHsKKyAgICBnX2ZyZWUgKHNlbGYtPkNTKTsKKyAgICBzZWxmLT5DUyA9IE5VTEw7CisgIH0KKworICBnX211dGV4X2NsZWFyICgmc2VsZi0+bXV0ZXgpOworICBnX2NvbmRfY2xlYXIgKCZzZWxmLT5jb25kKTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKKyNkZWZpbmUgREVGSU5FX0lOVF9MRVZFTF9DQUxDVUxBVE9SKFRZUEUsIFJFU09MVVRJT04pICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3N0YXRpYyB2b2lkIGlubGluZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2FsY3VsYXRlXyMjVFlQRSAoZ3BvaW50ZXIgZGF0YSwgZ3VpbnQgbnVtLCBndWludCBjaGFubmVscywgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZG91YmxlICpOQ1MpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgVFlQRSAqIGluID0gKFRZUEUgKilkYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgcmVnaXN0ZXIgZ3VpbnQgajsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZ2RvdWJsZSBzcXVhcmVzdW0gPSAwLjA7ICAgICAgICAgICAvKiBzcXVhcmUgc3VtIG9mIHRoZSBpbnB1dCBzYW1wbGVzICovICAgIFwKKyAgcmVnaXN0ZXIgZ2RvdWJsZSBzcXVhcmUgPSAwLjA7ICAgICAvKiBTcXVhcmUgKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZ2RvdWJsZSBub3JtYWxpemVyOyAgICAgICAgICAgICAgICAvKiBkaXZpc29yIHRvIGdldCBhIFstMS4wLCAxLjBdIHJhbmdlICovIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLyogKk5DUyA9IDAuMDsgTm9ybWFsaXplZCBDdW11bGF0aXZlIFNxdWFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZm9yIChqID0gMDsgaiA8IG51bTsgaiArPSBjaGFubmVscykgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzcXVhcmUgPSAoKGdkb3VibGUpIGluW2pdKSAqIGluW2pdOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBzcXVhcmVzdW0gKz0gc3F1YXJlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbm9ybWFsaXplciA9IChnZG91YmxlKSAoR19HSU5UNjRfQ09OU1RBTlQoMSkgPDwgKFJFU09MVVRJT04gKiAyKSk7ICAgICAgICAgIFwKKyAgKk5DUyA9IHNxdWFyZXN1bSAvIG5vcm1hbGl6ZXI7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30KKworREVGSU5FX0lOVF9MRVZFTF9DQUxDVUxBVE9SIChnaW50MzIsIDMxKTsKK0RFRklORV9JTlRfTEVWRUxfQ0FMQ1VMQVRPUiAoZ2ludDE2LCAxNSk7CitERUZJTkVfSU5UX0xFVkVMX0NBTENVTEFUT1IgKGdpbnQ4LCA3KTsKKworI2RlZmluZSBERUZJTkVfRkxPQVRfTEVWRUxfQ0FMQ1VMQVRPUihUWVBFKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorc3RhdGljIHZvaWQgaW5saW5lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9jYWxjdWxhdGVfIyNUWVBFIChncG9pbnRlciBkYXRhLCBndWludCBudW0sIGd1aW50IGNoYW5uZWxzLCAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdkb3VibGUgKk5DUykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoreyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBUWVBFICogaW4gPSAoVFlQRSAqKWRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICByZWdpc3RlciBndWludCBqOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBnZG91YmxlIHNxdWFyZXN1bSA9IDAuMDsgICAgICAgICAgIC8qIHNxdWFyZSBzdW0gb2YgdGhlIGlucHV0IHNhbXBsZXMgKi8gICAgXAorICByZWdpc3RlciBnZG91YmxlIHNxdWFyZSA9IDAuMDsgICAgIC8qIFNxdWFyZSAqLyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAvKiAqTkNTID0gMC4wOyBOb3JtYWxpemVkIEN1bXVsYXRpdmUgU3F1YXJlICovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBmb3IgKGogPSAwOyBqIDwgbnVtOyBqICs9IGNoYW5uZWxzKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNxdWFyZSA9ICgoZ2RvdWJsZSkgaW5bal0pICogaW5bal07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHNxdWFyZXN1bSArPSBzcXVhcmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAqTkNTID0gc3F1YXJlc3VtOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorfQorCitERUZJTkVfRkxPQVRfTEVWRUxfQ0FMQ1VMQVRPUiAoZ2Zsb2F0KTsKK0RFRklORV9GTE9BVF9MRVZFTF9DQUxDVUxBVE9SIChnZG91YmxlKTsKKworc3RhdGljIGdib29sZWFuCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3ZzaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RFdmVudCAqIGV2ZW50KQoreworICBHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCAqc2VsZiA9IEdTVF9WSURFT0ZSQU1FX0FVRElPTEVWRUwgKHBhcmVudCk7CisgIEdTVF9MT0dfT0JKRUNUIChwYWQsICJHb3QgJXMgZXZlbnQiLCBHU1RfRVZFTlRfVFlQRV9OQU1FIChldmVudCkpOworCisgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgeworICAgIGNhc2UgR1NUX0VWRU5UX1NFR01FTlQ6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBnX3F1ZXVlX2ZvcmVhY2ggKCZzZWxmLT52dGltZXEsIChHRnVuYykgZ19mcmVlLCBOVUxMKTsKKyAgICAgIGdfcXVldWVfY2xlYXIgKCZzZWxmLT52dGltZXEpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBnc3RfZXZlbnRfY29weV9zZWdtZW50IChldmVudCwgJnNlbGYtPnZzZWdtZW50KTsKKyAgICAgIGlmIChzZWxmLT52c2VnbWVudC5mb3JtYXQgIT0gR1NUX0ZPUk1BVF9USU1FKQorICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICBzZWxmLT52c2VnbWVudC5wb3NpdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9HQVA6CisgICAgICByZXR1cm4gVFJVRTsKKyAgICBjYXNlIEdTVF9FVkVOVF9FT1M6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBzZWxmLT52aWRlb19lb3NfZmxhZyA9IFRSVUU7CisgICAgICBnX2NvbmRfc2lnbmFsICgmc2VsZi0+Y29uZCk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CisgICAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisgICAgICBnX3F1ZXVlX2ZvcmVhY2ggKCZzZWxmLT52dGltZXEsIChHRnVuYykgZ19mcmVlLCBOVUxMKTsKKyAgICAgIGdfcXVldWVfY2xlYXIgKCZzZWxmLT52dGltZXEpOworICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlbGYtPnZzZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7CisgICAgICBnX2NvbmRfc2lnbmFsICgmc2VsZi0+Y29uZCk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIHNlbGYtPnZzZWdtZW50LnBvc2l0aW9uID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorICByZXR1cm4gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfYXNpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LAorICAgIEdzdEV2ZW50ICogZXZlbnQpCit7CisgIEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsICpzZWxmID0gR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTCAocGFyZW50KTsKKyAgR1NUX0xPR19PQkpFQ1QgKHBhZCwgIkdvdCAlcyBldmVudCIsIEdTVF9FVkVOVF9UWVBFX05BTUUgKGV2ZW50KSk7CisKKyAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKKyAgICAgIHNlbGYtPmZpcnN0X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICAgICAgc2VsZi0+dG90YWxfZnJhbWVzID0gMDsKKyAgICAgIGdzdF9hZGFwdGVyX2NsZWFyIChzZWxmLT5hZGFwdGVyKTsKKyAgICAgIGdzdF9ldmVudF9jb3B5X3NlZ21lbnQgKGV2ZW50LCAmc2VsZi0+YXNlZ21lbnQpOworICAgICAgaWYgKHNlbGYtPmFzZWdtZW50LmZvcm1hdCAhPSBHU1RfRk9STUFUX1RJTUUpCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUQVJUOgorICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgc2VsZi0+YXVkaW9fZmx1c2hfZmxhZyA9IFRSVUU7CisgICAgICBnX2NvbmRfc2lnbmFsICgmc2VsZi0+Y29uZCk7CisgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CisgICAgICBzZWxmLT5hdWRpb19mbHVzaF9mbGFnID0gRkFMU0U7CisgICAgICBzZWxmLT50b3RhbF9mcmFtZXMgPSAwOworICAgICAgc2VsZi0+Zmlyc3RfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgICBnc3RfYWRhcHRlcl9jbGVhciAoc2VsZi0+YWRhcHRlcik7CisgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmc2VsZi0+YXNlZ21lbnQsIEdTVF9GT1JNQVRfVU5ERUZJTkVEKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6eworICAgICAgR3N0Q2FwcyAqY2FwczsKKyAgICAgIGdpbnQgY2hhbm5lbHM7CisgICAgICBnc3RfZXZlbnRfcGFyc2VfY2FwcyAoZXZlbnQsICZjYXBzKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJHb3QgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7CisgICAgICBpZiAoIWdzdF9hdWRpb19pbmZvX2Zyb21fY2FwcyAoJnNlbGYtPmFpbmZvLCBjYXBzKSkKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgc3dpdGNoIChHU1RfQVVESU9fSU5GT19GT1JNQVQgKCZzZWxmLT5haW5mbykpIHsKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1M4OgorICAgICAgICAgIHNlbGYtPnByb2Nlc3MgPSBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NhbGN1bGF0ZV9naW50ODsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1MxNjoKKyAgICAgICAgICBzZWxmLT5wcm9jZXNzID0gZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9jYWxjdWxhdGVfZ2ludDE2OworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzMyOgorICAgICAgICAgIHNlbGYtPnByb2Nlc3MgPSBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2NhbGN1bGF0ZV9naW50MzI7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX0FVRElPX0ZPUk1BVF9GMzI6CisgICAgICAgICAgc2VsZi0+cHJvY2VzcyA9IGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfY2FsY3VsYXRlX2dmbG9hdDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX0Y2NDoKKyAgICAgICAgICBzZWxmLT5wcm9jZXNzID0gZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9jYWxjdWxhdGVfZ2RvdWJsZTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBzZWxmLT5wcm9jZXNzID0gTlVMTDsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKyAgICAgIGdzdF9hZGFwdGVyX2NsZWFyIChzZWxmLT5hZGFwdGVyKTsKKyAgICAgIGNoYW5uZWxzID0gR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMgKCZzZWxmLT5haW5mbyk7CisgICAgICBzZWxmLT5maXJzdF90aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKyAgICAgIHNlbGYtPnRvdGFsX2ZyYW1lcyA9IDA7CisgICAgICBpZiAoc2VsZi0+Q1MpCisgICAgICAgIGdfZnJlZSAoc2VsZi0+Q1MpOworICAgICAgc2VsZi0+Q1MgPSBnX25ldzAgKGdkb3VibGUsIGNoYW5uZWxzKTsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gZ3N0X3BhZF9ldmVudF9kZWZhdWx0IChwYWQsIHBhcmVudCwgZXZlbnQpOworfQorCitzdGF0aWMgR3N0TWVzc2FnZSAqCit1cGRhdGVfcm1zX2Zyb21fYnVmZmVyIChHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbCAqIHNlbGYsIEdzdEJ1ZmZlciAqIGluYnVmKQoreworICBHc3RNYXBJbmZvIG1hcDsKKyAgZ3VpbnQ4ICppbl9kYXRhOworICBnc2l6ZSBpbl9zaXplOworICBnZG91YmxlIENTOworICBndWludCBpOworICBndWludCBudW1fZnJhbWVzLCBmcmFtZXM7CisgIGd1aW50IG51bV9pbnRfc2FtcGxlcyA9IDA7ICAgIC8qIG51bWJlciBvZiBpbnRlcmxlYXZlZCBzYW1wbGVzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIGllLiB0b3RhbCBjb3VudCBmb3IgYWxsIGNoYW5uZWxzIGNvbWJpbmVkICovCisgIGdpbnQgY2hhbm5lbHMsIHJhdGUsIGJwczsKKyAgR1ZhbHVlIHYgPSBHX1ZBTFVFX0lOSVQ7CisgIEdWYWx1ZSB2YSA9IEdfVkFMVUVfSU5JVDsKKyAgR1ZhbHVlQXJyYXkgKmE7CisgIEdzdFN0cnVjdHVyZSAqczsKKyAgR3N0TWVzc2FnZSAqbXNnOworICBHc3RDbG9ja1RpbWUgZHVyYXRpb24sIHJ1bm5pbmdfdGltZTsKKworICBjaGFubmVscyA9IEdTVF9BVURJT19JTkZPX0NIQU5ORUxTICgmc2VsZi0+YWluZm8pOworICBicHMgPSBHU1RfQVVESU9fSU5GT19CUFMgKCZzZWxmLT5haW5mbyk7CisgIHJhdGUgPSBHU1RfQVVESU9fSU5GT19SQVRFICgmc2VsZi0+YWluZm8pOworCisgIGdzdF9idWZmZXJfbWFwIChpbmJ1ZiwgJm1hcCwgR1NUX01BUF9SRUFEKTsKKyAgaW5fZGF0YSA9IG1hcC5kYXRhOworICBpbl9zaXplID0gbWFwLnNpemU7CisKKyAgbnVtX2ludF9zYW1wbGVzID0gaW5fc2l6ZSAvIGJwczsKKworICBHU1RfTE9HX09CSkVDVCAoc2VsZiwgImFuYWx5emluZyAldSBzYW1wbGUgZnJhbWVzIGF0IHRzICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgIG51bV9pbnRfc2FtcGxlcywgR1NUX1RJTUVfQVJHUyAoR1NUX0JVRkZFUl9USU1FU1RBTVAgKGluYnVmKSkpOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChudW1faW50X3NhbXBsZXMgJSBjaGFubmVscyA9PSAwLCBOVUxMKTsKKworICBudW1fZnJhbWVzID0gbnVtX2ludF9zYW1wbGVzIC8gY2hhbm5lbHM7CisgIGZyYW1lcyA9IG51bV9mcmFtZXM7CisgIGR1cmF0aW9uID0gR1NUX0ZSQU1FU19UT19DTE9DS19USU1FIChmcmFtZXMsIHJhdGUpOworICBpZiAobnVtX2ZyYW1lcyA+IDApIHsKKyAgICBmb3IgKGkgPSAwOyBpIDwgY2hhbm5lbHM7ICsraSkgeworICAgICAgc2VsZi0+cHJvY2VzcyAoaW5fZGF0YSArIChicHMgKiBpKSwgbnVtX2ludF9zYW1wbGVzLCBjaGFubmVscywgJkNTKTsKKyAgICAgIEdTVF9MT0dfT0JKRUNUIChzZWxmLAorICAgICAgICAgICJbJWRdOiBjdW11bGF0aXZlIHNxdWFyZXMgJWxmLCBvdmVyICVkIHNhbXBsZXMvJWQgY2hhbm5lbHMiLAorICAgICAgICAgIGksIENTLCBudW1faW50X3NhbXBsZXMsIGNoYW5uZWxzKTsKKyAgICAgIHNlbGYtPkNTW2ldICs9IENTOworICAgIH0KKyAgICBpbl9kYXRhICs9IG51bV9mcmFtZXMgKiBicHM7CisKKyAgICBzZWxmLT50b3RhbF9mcmFtZXMgKz0gbnVtX2ZyYW1lczsKKyAgfQorICBydW5uaW5nX3RpbWUgPQorICAgICAgc2VsZi0+Zmlyc3RfdGltZSArIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoc2VsZi0+dG90YWxfZnJhbWVzLCBHU1RfU0VDT05ELAorICAgICAgcmF0ZSk7CisKKyAgYSA9IGdfdmFsdWVfYXJyYXlfbmV3IChjaGFubmVscyk7CisgIHMgPSBnc3Rfc3RydWN0dXJlX25ldyAoInZpZGVvZnJhbWUtYXVkaW9sZXZlbCIsICJydW5uaW5nLXRpbWUiLCBHX1RZUEVfVUlOVDY0LAorICAgICAgcnVubmluZ190aW1lLCAiZHVyYXRpb24iLCBHX1RZUEVfVUlOVDY0LCBkdXJhdGlvbiwgTlVMTCk7CisKKyAgZ192YWx1ZV9pbml0ICgmdiwgR19UWVBFX0RPVUJMRSk7CisgIGdfdmFsdWVfaW5pdCAoJnZhLCBHX1RZUEVfVkFMVUVfQVJSQVkpOworICBmb3IgKGkgPSAwOyBpIDwgY2hhbm5lbHM7IGkrKykgeworICAgIGdkb3VibGUgcm1zOworICAgIGlmIChmcmFtZXMgPT0gMCB8fCBzZWxmLT5DU1tpXSA9PSAwKSB7CisgICAgICBybXMgPSAwOyAgICAgICAgICAgICAgICAgIC8qIGVtcHR5IGJ1ZmZlciAqLworICAgIH0gZWxzZSB7CisgICAgICBybXMgPSBzcXJ0IChzZWxmLT5DU1tpXSAvIGZyYW1lcyk7CisgICAgfQorICAgIHNlbGYtPkNTW2ldID0gMC4wOworICAgIGdfdmFsdWVfc2V0X2RvdWJsZSAoJnYsIHJtcyk7CisgICAgZ192YWx1ZV9hcnJheV9hcHBlbmQgKGEsICZ2KTsKKyAgfQorICBnX3ZhbHVlX3Rha2VfYm94ZWQgKCZ2YSwgYSk7CisgIGdzdF9zdHJ1Y3R1cmVfdGFrZV92YWx1ZSAocywgInJtcyIsICZ2YSk7CisgIG1zZyA9IGdzdF9tZXNzYWdlX25ld19lbGVtZW50IChHU1RfT0JKRUNUIChzZWxmKSwgcyk7CisKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoaW5idWYsICZtYXApOworCisgIHJldHVybiBtc2c7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3ZzaW5rX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RCdWZmZXIgKiBpbmJ1ZikKK3sKKyAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcDsKKyAgR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwgKnNlbGYgPSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMIChwYXJlbnQpOworICBHc3RDbG9ja1RpbWUgZHVyYXRpb247CisgIEdzdENsb2NrVGltZSAqcHRydGltZSA9IGdfbmV3IChHc3RDbG9ja1RpbWUsIDEpOworCisgIHRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChpbmJ1Zik7CisgICpwdHJ0aW1lID0KKyAgICAgIGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSAoJnNlbGYtPnZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsIHRpbWVzdGFtcCk7CisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPm11dGV4KTsKKyAgc2VsZi0+dnNlZ21lbnQucG9zaXRpb24gPSB0aW1lc3RhbXA7CisgIGR1cmF0aW9uID0gR1NUX0JVRkZFUl9EVVJBVElPTiAoaW5idWYpOworICBpZiAoZHVyYXRpb24gIT0gR1NUX0NMT0NLX1RJTUVfTk9ORSkKKyAgICBzZWxmLT52c2VnbWVudC5wb3NpdGlvbiArPSBkdXJhdGlvbjsKKyAgZ19xdWV1ZV9wdXNoX3RhaWwgKCZzZWxmLT52dGltZXEsIHB0cnRpbWUpOworICBnX2NvbmRfc2lnbmFsICgmc2VsZi0+Y29uZCk7CisgIEdTVF9ERUJVR19PQkpFQ1QgKHBhZCwgIlB1c2hlZCBhIGZyYW1lIik7CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICByZXR1cm4gZ3N0X3BhZF9wdXNoIChzZWxmLT52c3JjcGFkLCBpbmJ1Zik7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2FzaW5rX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwKKyAgICBHc3RCdWZmZXIgKiBpbmJ1ZikKK3sKKyAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCwgY3VyX3RpbWU7CisgIEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsICpzZWxmID0gR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTCAocGFyZW50KTsKKyAgR3N0QnVmZmVyICpidWY7CisgIGdzaXplIGluYnVmX3NpemU7CisgIGd1aW50NjQgc3RhcnRfb2Zmc2V0LCBlbmRfb2Zmc2V0OworICBHc3RDbG9ja1RpbWUgcnVubmluZ190aW1lOworICBnaW50IHJhdGUsIGJwZjsKKyAgZ2Jvb2xlYW4gZGlzY29udCA9IEZBTFNFOworCisgIHRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChpbmJ1Zik7CisgIHJ1bm5pbmdfdGltZSA9CisgICAgICBnc3Rfc2VnbWVudF90b19ydW5uaW5nX3RpbWUgKCZzZWxmLT5hc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLCB0aW1lc3RhbXApOworCisgIHJhdGUgPSBHU1RfQVVESU9fSU5GT19SQVRFICgmc2VsZi0+YWluZm8pOworICBicGYgPSBHU1RfQVVESU9fSU5GT19CUEYgKCZzZWxmLT5haW5mbyk7CisgIHN0YXJ0X29mZnNldCA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAodGltZXN0YW1wLCByYXRlLCBHU1RfU0VDT05EKTsKKyAgaW5idWZfc2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGluYnVmKTsKKyAgZW5kX29mZnNldCA9IHN0YXJ0X29mZnNldCArIGluYnVmX3NpemUgLyBicGY7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOworCisgIGlmIChHU1RfQlVGRkVSX0lTX0RJU0NPTlQgKGluYnVmKQorICAgICAgfHwgR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoaW5idWYsIEdTVF9CVUZGRVJfRkxBR19SRVNZTkMpCisgICAgICB8fCBzZWxmLT5maXJzdF90aW1lID09IEdTVF9DTE9DS19USU1FX05PTkUpIHsKKyAgICBkaXNjb250ID0gVFJVRTsKKyAgfSBlbHNlIHsKKyAgICBndWludDY0IGRpZmYsIG1heF9zYW1wbGVfZGlmZjsKKworICAgIC8qIENoZWNrIGRpc2NvbnQsIGJhc2VkIG9uIGF1ZGlvYmFzZXNpbmsgKi8KKyAgICBpZiAoc3RhcnRfb2Zmc2V0IDw9IHNlbGYtPm5leHRfb2Zmc2V0KQorICAgICAgZGlmZiA9IHNlbGYtPm5leHRfb2Zmc2V0IC0gc3RhcnRfb2Zmc2V0OworICAgIGVsc2UKKyAgICAgIGRpZmYgPSBzdGFydF9vZmZzZXQgLSBzZWxmLT5uZXh0X29mZnNldDsKKworICAgIG1heF9zYW1wbGVfZGlmZiA9CisgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKHNlbGYtPmFsaWdubWVudF90aHJlc2hvbGQsIHJhdGUsIEdTVF9TRUNPTkQpOworCisgICAgLyogRGlzY29udCEgKi8KKyAgICBpZiAoR19VTkxJS0VMWSAoZGlmZiA+PSBtYXhfc2FtcGxlX2RpZmYpKSB7CisgICAgICBpZiAoc2VsZi0+ZGlzY29udF93YWl0ID4gMCkgeworICAgICAgICBpZiAoc2VsZi0+ZGlzY29udF90aW1lID09IEdTVF9DTE9DS19USU1FX05PTkUpIHsKKyAgICAgICAgICBzZWxmLT5kaXNjb250X3RpbWUgPSB0aW1lc3RhbXA7CisgICAgICAgIH0gZWxzZSBpZiAodGltZXN0YW1wIC0gc2VsZi0+ZGlzY29udF90aW1lID49IHNlbGYtPmRpc2NvbnRfd2FpdCkgeworICAgICAgICAgIGRpc2NvbnQgPSBUUlVFOworICAgICAgICAgIHNlbGYtPmRpc2NvbnRfdGltZSA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgICAgIH0KKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGRpc2NvbnQgPSBUUlVFOworICAgICAgfQorICAgIH0gZWxzZSBpZiAoR19VTkxJS0VMWSAoc2VsZi0+ZGlzY29udF90aW1lICE9IEdTVF9DTE9DS19USU1FX05PTkUpKSB7CisgICAgICAvKiB3ZSBoYXZlIGhhZCBhIGRpc2NvbnQsIGJ1dCBhcmUgbm93IGJhY2sgb24gdHJhY2shICovCisgICAgICBzZWxmLT5kaXNjb250X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICAgIH0KKyAgfQorCisgIGlmIChkaXNjb250KSB7CisgICAgLyogSGF2ZSBkaXNjb250LCBuZWVkIHJlc3luYyAqLworICAgIGlmIChzZWxmLT5uZXh0X29mZnNldCAhPSAtMSkKKyAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFkLCAiSGF2ZSBkaXNjb250LiBFeHBlY3RlZCAlIgorICAgICAgICAgIEdfR1VJTlQ2NF9GT1JNQVQgIiwgZ290ICUiIEdfR1VJTlQ2NF9GT1JNQVQsCisgICAgICAgICAgc2VsZi0+bmV4dF9vZmZzZXQsIHN0YXJ0X29mZnNldCk7CisgICAgc2VsZi0+dG90YWxfZnJhbWVzID0gMDsKKyAgICBzZWxmLT5maXJzdF90aW1lID0gcnVubmluZ190aW1lOworICAgIHNlbGYtPm5leHRfb2Zmc2V0ID0gZW5kX29mZnNldDsKKyAgfSBlbHNlIHsKKyAgICBzZWxmLT5uZXh0X29mZnNldCArPSBpbmJ1Zl9zaXplIC8gYnBmOworICB9CisKKyAgZ3N0X2FkYXB0ZXJfcHVzaCAoc2VsZi0+YWRhcHRlciwgZ3N0X2J1ZmZlcl9yZWYgKGluYnVmKSk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlF1ZXVlIGxlbmd0aCAlaSIsCisgICAgICBnX3F1ZXVlX2dldF9sZW5ndGggKCZzZWxmLT52dGltZXEpKTsKKworICB3aGlsZSAoVFJVRSkgeworICAgIEdzdENsb2NrVGltZSAqdnQwLCAqdnQxOworICAgIEdzdENsb2NrVGltZSB2dGVtcDsKKyAgICBHc3RNZXNzYWdlICptc2c7CisgICAgZ3NpemUgYnl0ZXMsIGF2YWlsYWJsZV9ieXRlczsKKworICAgIHZ0ZW1wID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKKworICAgIHdoaWxlICghKGdfcXVldWVfZ2V0X2xlbmd0aCAoJnNlbGYtPnZ0aW1lcSkgPj0gMiB8fCBzZWxmLT52aWRlb19lb3NfZmxhZworICAgICAgICAgICAgfHwgc2VsZi0+YXVkaW9fZmx1c2hfZmxhZyB8fCBzZWxmLT5zaHV0ZG93bl9mbGFnKSkKKyAgICAgIGdfY29uZF93YWl0ICgmc2VsZi0+Y29uZCwgJnNlbGYtPm11dGV4KTsKKworICAgIGlmIChzZWxmLT5hdWRpb19mbHVzaF9mbGFnIHx8IHNlbGYtPnNodXRkb3duX2ZsYWcpIHsKKyAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWYpOworICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgIH0gZWxzZSBpZiAoc2VsZi0+dmlkZW9fZW9zX2ZsYWcpIHsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJWaWRlbyBFT1MgZmxhZyBhbGVydCIpOworICAgICAgLyogbm90aGluZyB0byBkbyBoZXJlIGlmIHF1ZXVlIGlzIGVtcHR5ICovCisgICAgICBpZiAoZ19xdWV1ZV9nZXRfbGVuZ3RoICgmc2VsZi0+dnRpbWVxKSA9PSAwKQorICAgICAgICBicmVhazsKKworICAgICAgaWYgKGdfcXVldWVfZ2V0X2xlbmd0aCAoJnNlbGYtPnZ0aW1lcSkgPCAyKSB7CisgICAgICAgIHZ0ZW1wID0gc2VsZi0+dnNlZ21lbnQucG9zaXRpb247CisgICAgICB9IGVsc2UgaWYgKHNlbGYtPnZzZWdtZW50LnBvc2l0aW9uID09IEdTVF9DTE9DS19USU1FX05PTkUpIHsKKyAgICAgICAgLyogZ19xdWV1ZV9nZXRfbGVuZ3RoIGlzIHN1cmVseSA+PSAyIGF0IHRoaXMgcG9pbnQKKyAgICAgICAgICogc28gdGhlIGFkYXB0ZXIgaXNuJ3QgZW1wdHkgKi8KKyAgICAgICAgYnVmID0KKyAgICAgICAgICAgIGdzdF9hZGFwdGVyX3Rha2VfYnVmZmVyIChzZWxmLT5hZGFwdGVyLAorICAgICAgICAgICAgZ3N0X2FkYXB0ZXJfYXZhaWxhYmxlIChzZWxmLT5hZGFwdGVyKSk7CisgICAgICAgIGlmIChidWYgIT0gTlVMTCkgeworICAgICAgICAgIEdzdE1lc3NhZ2UgKm1zZzsKKyAgICAgICAgICBtc2cgPSB1cGRhdGVfcm1zX2Zyb21fYnVmZmVyIChzZWxmLCBidWYpOworICAgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICAgICAgICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKHNlbGYpLCBtc2cpOworICAgICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisgICAgICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOyAgLyogd2UgdW5sb2NrIGFnYWluIGxhdGVyICovCisgICAgICAgIH0KKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgfSBlbHNlIGlmIChnX3F1ZXVlX2dldF9sZW5ndGggKCZzZWxmLT52dGltZXEpIDwgMikgeworICAgICAgY29udGludWU7CisgICAgfQorCisgICAgdnQwID0gZ19xdWV1ZV9wb3BfaGVhZCAoJnNlbGYtPnZ0aW1lcSk7CisgICAgaWYgKHZ0ZW1wID09IEdTVF9DTE9DS19USU1FX05PTkUpCisgICAgICB2dDEgPSBnX3F1ZXVlX3BlZWtfaGVhZCAoJnNlbGYtPnZ0aW1lcSk7CisgICAgZWxzZQorICAgICAgdnQxID0gJnZ0ZW1wOworCisgICAgY3VyX3RpbWUgPQorICAgICAgICBzZWxmLT5maXJzdF90aW1lICsgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChzZWxmLT50b3RhbF9mcmFtZXMsCisgICAgICAgIEdTVF9TRUNPTkQsIHJhdGUpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsCisgICAgICAgICJQcm9jZXNzaW5nOiBjdXJyZW50IHRpbWUgaXMgJSIgR1NUX1RJTUVfRk9STUFULAorICAgICAgICBHU1RfVElNRV9BUkdTIChjdXJfdGltZSkpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJUb3RhbCBmcmFtZXMgaXMgJWkgd2l0aCBhIHJhdGUgb2YgJWQiLAorICAgICAgICBzZWxmLT50b3RhbF9mcmFtZXMsIHJhdGUpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdGFydCB0aW1lIGlzICUiIEdTVF9USU1FX0ZPUk1BVCwKKyAgICAgICAgR1NUX1RJTUVfQVJHUyAoc2VsZi0+Zmlyc3RfdGltZSkpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJUaW1lIG9uIHRvcCBpcyAlIiBHU1RfVElNRV9GT1JNQVQsCisgICAgICAgIEdTVF9USU1FX0FSR1MgKCp2dDApKTsKKworICAgIGlmIChjdXJfdGltZSA8ICp2dDApIHsKKyAgICAgIGd1aW50IG51bV9mcmFtZXMgPQorICAgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoKnZ0MCAtIGN1cl90aW1lLCByYXRlLCBHU1RfU0VDT05EKTsKKyAgICAgIGJ5dGVzID0gbnVtX2ZyYW1lcyAqIEdTVF9BVURJT19JTkZPX0JQRiAoJnNlbGYtPmFpbmZvKTsKKyAgICAgIGF2YWlsYWJsZV9ieXRlcyA9IGdzdF9hZGFwdGVyX2F2YWlsYWJsZSAoc2VsZi0+YWRhcHRlcik7CisgICAgICBpZiAoYXZhaWxhYmxlX2J5dGVzID09IDApIHsKKyAgICAgICAgZ19xdWV1ZV9wdXNoX2hlYWQgKCZzZWxmLT52dGltZXEsIHZ0MCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgaWYgKGJ5dGVzID09IDApIHsKKyAgICAgICAgY3VyX3RpbWUgPSAqdnQwOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwKKyAgICAgICAgICAgICJGbHVzaGVkICUiIEdfR1NJWkVfRk9STUFUICIgb3V0IG9mICUiIEdfR1NJWkVfRk9STUFUICIgYnl0ZXMiLAorICAgICAgICAgICAgYnl0ZXMsIGF2YWlsYWJsZV9ieXRlcyk7CisgICAgICAgIGdzdF9hZGFwdGVyX2ZsdXNoIChzZWxmLT5hZGFwdGVyLCBNSU4gKGJ5dGVzLCBhdmFpbGFibGVfYnl0ZXMpKTsKKyAgICAgICAgc2VsZi0+dG90YWxfZnJhbWVzICs9IG51bV9mcmFtZXM7CisgICAgICAgIGlmIChhdmFpbGFibGVfYnl0ZXMgPD0gYnl0ZXMpIHsKKyAgICAgICAgICBnX3F1ZXVlX3B1c2hfaGVhZCAoJnNlbGYtPnZ0aW1lcSwgdnQwKTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgICAgICBjdXJfdGltZSA9CisgICAgICAgICAgICBzZWxmLT5maXJzdF90aW1lICsgZ3N0X3V0aWxfdWludDY0X3NjYWxlIChzZWxmLT50b3RhbF9mcmFtZXMsCisgICAgICAgICAgICBHU1RfU0VDT05ELCByYXRlKTsKKyAgICAgIH0KKyAgICB9CisgICAgaWYgKCp2dDEgPiBjdXJfdGltZSkgeworICAgICAgYnl0ZXMgPQorICAgICAgICAgIEdTVF9BVURJT19JTkZPX0JQRiAoJnNlbGYtPmFpbmZvKSAqIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoKnZ0MSAtCisgICAgICAgICAgY3VyX3RpbWUsIHJhdGUsIEdTVF9TRUNPTkQpOworICAgIH0gZWxzZSB7CisgICAgICBieXRlcyA9IDA7ICAgICAgICAgICAgICAgIC8qIFdlIGp1c3QgbmVlZCB0byBkaXNjYXJkIHZ0MCAqLworICAgIH0KKyAgICBhdmFpbGFibGVfYnl0ZXMgPSBnc3RfYWRhcHRlcl9hdmFpbGFibGUgKHNlbGYtPmFkYXB0ZXIpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsCisgICAgICAgICJBZGFwdGVyIGNvbnRhaW5zICUiIEdfR1NJWkVfRk9STUFUICIgb3V0IG9mICUiIEdfR1NJWkVfRk9STUFUICIgYnl0ZXMiLAorICAgICAgICBhdmFpbGFibGVfYnl0ZXMsIGJ5dGVzKTsKKworICAgIGlmIChhdmFpbGFibGVfYnl0ZXMgPCBieXRlcykgeworICAgICAgZ19xdWV1ZV9wdXNoX2hlYWQgKCZzZWxmLT52dGltZXEsIHZ0MCk7CisgICAgICBnb3RvIGRvbmU7CisgICAgfQorCisgICAgaWYgKGJ5dGVzID4gMCkgeworICAgICAgYnVmID0gZ3N0X2FkYXB0ZXJfdGFrZV9idWZmZXIgKHNlbGYtPmFkYXB0ZXIsIGJ5dGVzKTsKKyAgICAgIGdfYXNzZXJ0IChidWYgIT0gTlVMTCk7CisgICAgfSBlbHNlIHsKKyAgICAgIC8qIEp1c3QgYW4gZW1wdHkgYnVmZmVyICovCisgICAgICBidWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKKyAgICB9CisgICAgbXNnID0gdXBkYXRlX3Jtc19mcm9tX2J1ZmZlciAoc2VsZiwgYnVmKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKyAgICBnc3RfZWxlbWVudF9wb3N0X21lc3NhZ2UgKEdTVF9FTEVNRU5UIChzZWxmKSwgbXNnKTsKKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5tdXRleCk7CisKKyAgICBnc3RfYnVmZmVyX3VucmVmIChidWYpOworICAgIGdfZnJlZSAodnQwKTsKKyAgICBpZiAoYXZhaWxhYmxlX2J5dGVzID09IGJ5dGVzKQorICAgICAgYnJlYWs7CisgIH0KK2RvbmU6CisgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bXV0ZXgpOworICByZXR1cm4gZ3N0X3BhZF9wdXNoIChzZWxmLT5hc3JjcGFkLCBpbmJ1Zik7Cit9CisKK3N0YXRpYyBHc3RJdGVyYXRvciAqCitnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2l0ZXJhdGVfaW50ZXJuYWxfbGlua3MgKEdzdFBhZCAqIHBhZCwKKyAgICBHc3RPYmplY3QgKiBwYXJlbnQpCit7CisgIEdzdEl0ZXJhdG9yICppdCA9IE5VTEw7CisgIEdzdFBhZCAqb3BhZDsKKyAgR1ZhbHVlIHZhbCA9IHsgMCwgfTsKKyAgR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwgKnNlbGYgPSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMIChwYXJlbnQpOworCisgIGlmIChzZWxmLT5hc2lua3BhZCA9PSBwYWQpCisgICAgb3BhZCA9IGdzdF9vYmplY3RfcmVmIChzZWxmLT5hc3JjcGFkKTsKKyAgZWxzZSBpZiAoc2VsZi0+YXNyY3BhZCA9PSBwYWQpCisgICAgb3BhZCA9IGdzdF9vYmplY3RfcmVmIChzZWxmLT5hc2lua3BhZCk7CisgIGVsc2UgaWYgKHNlbGYtPnZzaW5rcGFkID09IHBhZCkKKyAgICBvcGFkID0gZ3N0X29iamVjdF9yZWYgKHNlbGYtPnZzcmNwYWQpOworICBlbHNlIGlmIChzZWxmLT52c3JjcGFkID09IHBhZCkKKyAgICBvcGFkID0gZ3N0X29iamVjdF9yZWYgKHNlbGYtPnZzaW5rcGFkKTsKKyAgZWxzZQorICAgIGdvdG8gb3V0OworCisgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR1NUX1RZUEVfUEFEKTsKKyAgZ192YWx1ZV9zZXRfb2JqZWN0ICgmdmFsLCBvcGFkKTsKKyAgaXQgPSBnc3RfaXRlcmF0b3JfbmV3X3NpbmdsZSAoR1NUX1RZUEVfUEFELCAmdmFsKTsKKyAgZ192YWx1ZV91bnNldCAoJnZhbCk7CisKKyAgZ3N0X29iamVjdF91bnJlZiAob3BhZCk7CisKK291dDoKKyAgcmV0dXJuIGl0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKK3sKKyAgcmV0dXJuIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJ2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwiLAorICAgICAgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfVklERU9GUkFNRV9BVURJT0xFVkVMKTsKK30KKworR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAorICAgIEdTVF9WRVJTSU9OX01JTk9SLAorICAgIHZpZGVvZnJhbWVfYXVkaW9sZXZlbCwKKyAgICAiVmlkZW8gZnJhbWUtc3luY2hyb25pemVkIGF1ZGlvIGxldmVsIiwKKyAgICBnc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3BsdWdpbl9pbml0LCBWRVJTSU9OLCBHU1RfTElDRU5TRSwKKyAgICBHU1RfUEFDS0FHRV9OQU1FLCBHU1RfUEFDS0FHRV9PUklHSU4pOwpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC9nc3R2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuaCBiL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODMzMzJlNQotLS0gL2Rldi9udWxsCisrKyBiL2dzdC92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwvZ3N0dmlkZW9mcmFtZS1hdWRpb2xldmVsLmgKQEAgLTAsMCArMSw3MyBAQAorLyogCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBWaXZpYSBOaWtvbGFpZG91IDx2aXZpYUB0b29sc29uYWlyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9IX18KKyNkZWZpbmUgX19HU1RfVklERU9GUkFNRV9BVURJT0xFVkVMX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPgorCitHX0JFR0lOX0RFQ0xTCisjZGVmaW5lIEdTVF9UWVBFX1ZJREVPRlJBTUVfQVVESU9MRVZFTCAgICAgICAgICAgICAgICAgICAgKGdzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTChvYmopICAgICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfVklERU9GUkFNRV9BVURJT0xFVkVMLEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsKSkKKyNkZWZpbmUgR1NUX0lTX1ZJREVPRlJBTUVfQVVESU9MRVZFTChvYmopICAgICAgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfVklERU9GUkFNRV9BVURJT0xFVkVMKSkKKyNkZWZpbmUgR1NUX1ZJREVPRlJBTUVfQVVESU9MRVZFTF9DTEFTUyhrbGFzcykgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QoKGtsYXNzKSAsR1NUX1RZUEVfVklERU9GUkFNRV9BVURJT0xFVkVMLEdzdFZpZGVvRnJhbWVBdWRpb0xldmVsQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVklERU9GUkFNRV9BVURJT0xFVkVMX0NMQVNTKGtsYXNzKSAgICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpICxHU1RfVFlQRV9WSURFT0ZSQU1FX0FVRElPTEVWRUwpKQorI2RlZmluZSBHU1RfVklERU9GUkFNRV9BVURJT0xFVkVMX0dFVF9DTEFTUyhvYmopICAgICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTKChvYmopICxHU1RfVFlQRV9WSURFT0ZSQU1FX0FVRElPTEVWRUwsR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWxDbGFzcykpCit0eXBlZGVmIHN0cnVjdCBfR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWwgR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWw7Cit0eXBlZGVmIHN0cnVjdCBfR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWxDbGFzcyBHc3RWaWRlb0ZyYW1lQXVkaW9MZXZlbENsYXNzOworCitzdHJ1Y3QgX0dzdFZpZGVvRnJhbWVBdWRpb0xldmVsCit7CisgIEdzdEVsZW1lbnQgcGFyZW50OworCisgIEdzdFBhZCAqYXNyY3BhZCwgKmFzaW5rcGFkLCAqdnNyY3BhZCwgKnZzaW5rcGFkOworCisgIEdzdEF1ZGlvSW5mbyBhaW5mbzsKKworICBnZG91YmxlICpDUzsgICAgICAgICAgICAgICAgICAvKiBub3JtYWxpemVkIEN1bXVsYXRpdmUgU3F1YXJlICovCisKKyAgR3N0U2VnbWVudCBhc2VnbWVudCwgdnNlZ21lbnQ7CisKKyAgdm9pZCAoKnByb2Nlc3MpIChncG9pbnRlciwgZ3VpbnQsIGd1aW50LCBnZG91YmxlICopOworCisgIEdRdWV1ZSB2dGltZXE7CisgIEdzdEFkYXB0ZXIgKmFkYXB0ZXI7CisgIEdzdENsb2NrVGltZSBmaXJzdF90aW1lOworICBndWludCB0b3RhbF9mcmFtZXM7CisgIGd1aW50NjQgbmV4dF9vZmZzZXQsIGFsaWdubWVudF90aHJlc2hvbGQsIGRpc2NvbnRfdGltZSwgZGlzY29udF93YWl0OworCisgIGdib29sZWFuIHZpZGVvX2Vvc19mbGFnOworICBnYm9vbGVhbiBhdWRpb19mbHVzaF9mbGFnOworICBnYm9vbGVhbiBzaHV0ZG93bl9mbGFnOworCisgIEdDb25kIGNvbmQ7CisgIEdNdXRleCBtdXRleDsKK307CisKK3N0cnVjdCBfR3N0VmlkZW9GcmFtZUF1ZGlvTGV2ZWxDbGFzcworeworICBHc3RFbGVtZW50Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworR1R5cGUgZ3N0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZXRfdHlwZSAodm9pZCk7CisKK0dfRU5EX0RFQ0xTCisjZW5kaWYgLyogX19HU1RfVklERU9GUkFNRV9BVURJT0xFVkVMX0hfXyAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvbWVhc3VyZS9NYWtlZmlsZS5pbiBiL2dzdC92aWRlb21lYXN1cmUvTWFrZWZpbGUuaW4KaW5kZXggNzBhZjM4Mi4uOGFjMjkyOCAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvbWVhc3VyZS9NYWtlZmlsZS5pbgorKysgYi9nc3QvdmlkZW9tZWFzdXJlL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvbWVhc3VyZS9nc3R2aWRlb21lYXN1cmVfc3NpbS5jIGIvZ3N0L3ZpZGVvbWVhc3VyZS9nc3R2aWRlb21lYXN1cmVfc3NpbS5jCmluZGV4IGU4NWQ2OGYuLjEzYmEwMzUgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb21lYXN1cmUvZ3N0dmlkZW9tZWFzdXJlX3NzaW0uYworKysgYi9nc3QvdmlkZW9tZWFzdXJlL2dzdHZpZGVvbWVhc3VyZV9zc2ltLmMKQEAgLTExNzYsMTEgKzExNzYsNyBAQAogICAgIGdvdG8gY291bGRfbm90X2FkZF9zaW5rOwogICBlbHNlCiAgICAgLyogaW5jcmVtZW50IHBhZCBjb3VudGVyICovCi0jaWYgR0xJQl9DSEVDS19WRVJTSU9OKDIsMjksNSkKICAgICBwYWRjb3VudCA9IGdfYXRvbWljX2ludF9hZGQgKCZzc2ltLT5wYWRjb3VudCwgMSk7Ci0jZWxzZQotICAgIHBhZGNvdW50ID0gZ19hdG9taWNfaW50X2V4Y2hhbmdlX2FuZF9hZGQgKCZzc2ltLT5wYWRjb3VudCwgMSk7Ci0jZW5kaWYKIAogICBpZiAobnVtICE9IC0xKSB7CiAgICAgR3N0U1NpbU91dHB1dENvbnRleHQgKmM7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL01ha2VmaWxlLmluIGIvZ3N0L3ZpZGVvcGFyc2Vycy9NYWtlZmlsZS5pbgppbmRleCBlOTI1MWQxLi4xYTBjNTdiIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9wYXJzZXJzL01ha2VmaWxlLmluCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjg3LDYgKzI4Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzI0LDYgKzMyNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzMyLDcgKzMzNSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM1MSw4ICszNTMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY5LDE2ICszNzIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDA0LDYgKzQwOCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyOSw2ICs0MzUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzAsNiArNTM4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0Myw4ICs1NTIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjAsNiArNTY3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxNywxNiArNjI2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc4LDYgKzY4OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODgsNiArNzAwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk3LDYgKzcxMCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzQsNyArNzQ5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL2dzdGRpcmFjcGFyc2UuYyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0ZGlyYWNwYXJzZS5jCmluZGV4IGVhM2NkOWQuLjkzZjAwYzYgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0ZGlyYWNwYXJzZS5jCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0ZGlyYWNwYXJzZS5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmYWtlc3JjICEgZ3N0ZGlyYWNwYXJzZSAhIEZJWE1FICEgZmFrZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZha2VzcmMgISBnc3RkaXJhY3BhcnNlICEgRklYTUUgISBmYWtlc2luawogICogXXwKICAqIEZJWE1FIERlc2NyaWJlIHdoYXQgdGhlIHBpcGVsaW5lIGRvZXMuCiAgKiA8L3JlZnNlY3QyPgpAQCAtMzk2LDEwICszOTYsMTkgQEAKICAgICBHc3RUYWdMaXN0ICp0YWdsaXN0OwogICAgIEdzdENhcHMgKmNhcHM7CiAKLSAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKLQogICAgIC8qIGNvZGVjIHRhZyAqLwogICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSk7CisgICAgaWYgKEdfVU5MSUtFTFkgKGNhcHMgPT0gTlVMTCkpIHsKKyAgICAgIGlmIChHU1RfUEFEX0lTX0ZMVVNISU5HIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpKSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIGZsdXNoaW5nIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIG5vdCBuZWdvdGlhdGVkISIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7CisgICAgICB9CisgICAgfQorCisgICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7CiAgICAgZ3N0X3BiX3V0aWxzX2FkZF9jb2RlY19kZXNjcmlwdGlvbl90b190YWdfbGlzdCAodGFnbGlzdCwKICAgICAgICAgR1NUX1RBR19WSURFT19DT0RFQywgY2Fwcyk7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjYzcGFyc2UuYyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0aDI2M3BhcnNlLmMKaW5kZXggZWI2MjkwYi4uMzcwY2JiMSAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjYzcGFyc2UuYworKysgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjNwYXJzZS5jCkBAIC00MzksMTAgKzQzOSwxOSBAQAogICAgIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7CiAgICAgR3N0Q2FwcyAqY2FwczsKIAotICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotCiAgICAgLyogY29kZWMgdGFnICovCiAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoY2FwcyA9PSBOVUxMKSkgeworICAgICAgaWYgKEdTVF9QQURfSVNfRkxVU0hJTkcgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSkpIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgZmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgbm90IG5lZ290aWF0ZWQhIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjRwYXJzZS5jIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY0cGFyc2UuYwppbmRleCA5MTVjMmQ3Li44OTA3ZWI0IDEwMDY0NAotLS0gYS9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjRwYXJzZS5jCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NHBhcnNlLmMKQEAgLTE0OTksMTEgKzE0OTksMjAgQEAKIHN0YXRpYyB2b2lkCiBlbnN1cmVfY2Fwc19wcm9maWxlIChHc3RIMjY0UGFyc2UgKiBoMjY0cGFyc2UsIEdzdENhcHMgKiBjYXBzLCBHc3RIMjY0U1BTICogc3BzKQogewotICBHc3RDYXBzICpmaWx0ZXJfY2FwcywgKnBlZXJfY2FwcywgKmNvbXBhdF9jYXBzOworICBHc3RDYXBzICpwZWVyX2NhcHMsICpjb21wYXRfY2FwczsKIAotICBmaWx0ZXJfY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUgKCJ2aWRlby94LWgyNjQiKTsKLSAgcGVlcl9jYXBzID0KLSAgICAgIGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChoMjY0cGFyc2UpLCBmaWx0ZXJfY2Fwcyk7CisgIHBlZXJfY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAoaDI2NHBhcnNlKSk7CisgIGlmICghcGVlcl9jYXBzIHx8ICFnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChjYXBzLCBwZWVyX2NhcHMpKSB7CisgICAgR3N0Q2FwcyAqZmlsdGVyX2NhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgidmlkZW8veC1oMjY0Iik7CisKKyAgICBpZiAocGVlcl9jYXBzKQorICAgICAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJfY2Fwcyk7CisgICAgcGVlcl9jYXBzID0KKyAgICAgICAgZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKGgyNjRwYXJzZSksCisgICAgICAgIGZpbHRlcl9jYXBzKTsKKworICAgIGdzdF9jYXBzX3VucmVmIChmaWx0ZXJfY2Fwcyk7CisgIH0KIAogICBpZiAocGVlcl9jYXBzICYmICFnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChjYXBzLCBwZWVyX2NhcHMpKSB7CiAgICAgR3N0U3RydWN0dXJlICpzdHJ1Y3R1cmU7CkBAIC0xNTM0LDcgKzE1NDMsNiBAQAogICB9CiAgIGlmIChwZWVyX2NhcHMpCiAgICAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJfY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChmaWx0ZXJfY2Fwcyk7CiB9CiAKIHN0YXRpYyBjb25zdCBnY2hhciAqCkBAIC0xNzkyLDggKzE4MDAsNiBAQAogICAgICAgLyogUGFzcyB0aHJvdWdoIG9yIHNldCBvdXRwdXQgc3RlcmVvL211bHRpdmlldyBjb25maWcgKi8KICAgICAgIGlmIChzICYmIGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkIChzLCAibXVsdGl2aWV3LW1vZGUiKSkgewogICAgICAgICBjYXBzX212aWV3X21vZGUgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJtdWx0aXZpZXctbW9kZSIpOwotICAgICAgICBtdmlld19tb2RlID0KLSAgICAgICAgICAgIGdzdF92aWRlb19tdWx0aXZpZXdfbW9kZV9mcm9tX2NhcHNfc3RyaW5nIChjYXBzX212aWV3X21vZGUpOwogICAgICAgICBnc3Rfc3RydWN0dXJlX2dldF9mbGFnc2V0IChzLCAibXVsdGl2aWV3LWZsYWdzIiwgJm12aWV3X2ZsYWdzLCBOVUxMKTsKICAgICAgIH0gZWxzZSBpZiAobXZpZXdfbW9kZSAhPSBHU1RfVklERU9fTVVMVElWSUVXX01PREVfTk9ORSkgewogICAgICAgICBpZiAoZ3N0X3ZpZGVvX211bHRpdmlld19ndWVzc19oYWxmX2FzcGVjdCAobXZpZXdfbW9kZSwKQEAgLTE4NTUsMTQgKzE4NjEsMjAgQEAKIAogICAgIHNyY19jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChoMjY0cGFyc2UpKTsKIAotICAgIGlmIChzcmNfY2FwcwotICAgICAgICAmJiBnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3JjX2NhcHMsIDApLAotICAgICAgICAgICAgImNvZGVjX2RhdGEiKSkgeworICAgIGlmIChzcmNfY2FwcykgewogICAgICAgLyogdXNlIGNvZGVjIGRhdGEgZnJvbSBvbGQgY2FwcyBmb3IgY29tcGFyaXNvbjsgd2UgZG9uJ3Qgd2FudCB0byByZXNlbmQgY2FwcwogICAgICAgICAgaWYgZXZlcnl0aGluZyBpcyBzYW1lIGV4Y2VwdCBjb2RlYyBkYXRhOyAqLwotICAgICAgZ3N0X2NhcHNfc2V0X3ZhbHVlIChjYXBzLCAiY29kZWNfZGF0YSIsCi0gICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHNyY19jYXBzLCAwKSwKLSAgICAgICAgICAgICAgImNvZGVjX2RhdGEiKSk7CisgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHNyY19jYXBzLCAwKSwKKyAgICAgICAgICAgICAgImNvZGVjX2RhdGEiKSkgeworICAgICAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKGNhcHMsICJjb2RlY19kYXRhIiwKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChzcmNfY2FwcywgMCksCisgICAgICAgICAgICAgICAgImNvZGVjX2RhdGEiKSk7CisgICAgICB9IGVsc2UgaWYgKCFidWYpIHsKKyAgICAgICAgR3N0U3RydWN0dXJlICpzOworICAgICAgICAvKiByZW1vdmUgYW55IGxlZnQtb3ZlciBjb2RlYy1kYXRhIGhhbmdpbmcgYXJvdW5kICovCisgICAgICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGQgKHMsICJjb2RlY19kYXRhIik7CisgICAgICB9CiAgICAgfQogCiAgICAgaWYgKCEoc3JjX2NhcHMgJiYgZ3N0X2NhcHNfaXNfc3RyaWN0bHlfZXF1YWwgKHNyY19jYXBzLCBjYXBzKSkpIHsKQEAgLTIxOTcsOCArMjIwOSw2IEBACiAgICAgR3N0VGFnTGlzdCAqdGFnbGlzdDsKICAgICBHc3RDYXBzICpjYXBzOwogCi0gICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7Ci0KICAgICAvKiBjb2RlYyB0YWcgKi8KICAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpOwogICAgIGlmIChjYXBzID09IE5VTEwpIHsKQEAgLTIyMTAsNiArMjIyMCw4IEBACiAgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKICAgICAgIH0KICAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CkBAIC0yMzU2LDYgKzIzNjgsMTIgQEAKICAgICB9CiAgIH0KIAorICAvKiBGaXhtZTogc2V0dGluZyBwYXNzdGhyb3VnaCBtb2RlIGNhc3VpbmcgbXVsdGlwbGUgaXNzdWVzOgorICAgKiBGb3IgbmFsIGFsaWduZWQgbXVsdGlyZXNvbHV0b24gc3RyZWFtcywgcGFzc3Rocm91Z2ggbW9kZSBtYWtlIGgyNjRwYXJzZQorICAgKiB1bmFibGUgdG8gYWR2ZXJ0aXNlIHRoZSBuZXcgcmVzb3VsdGlvbnMuIEFsc28gY2F1c2luZyBpc3N1ZXMgd2hpbGUKKyAgICogcGFyc2luZyBNVkMgc3RyZWFtcyB3aGVuIGl0IGhhcyB0d28gbGF5ZXJzLgorICAgKiBEaXNhYmluZyBwYXNzdGhvdXJnaCBtb2RlIGZvciBub3cgKi8KKyNpZiAwCiAgIC8qIElmIFNQUy9QUFMgYW5kIGEga2V5ZnJhbWUgaGF2ZSBiZWVuIHBhcnNlZCwgYW5kIHdlJ3JlIG5vdCBjb252ZXJ0aW5nLAogICAgKiB3ZSBtaWdodCBzd2l0Y2ggdG8gcGFzc3Rocm91Z2ggbW9kZSBub3cgb24gdGhlIGJhc2lzIHRoYXQgd2UndmUgc2VlbgogICAgKiB0aGUgU0VJIHBhY2tldHMgYW5kIGtub3cgb3B0aW9uYWwgY2FwcyBwYXJhbXMgKHN1Y2ggYXMgbXVsdGl2aWV3KS4KQEAgLTIzNjcsNiArMjM4NSw3IEBACiAgICAgICBnc3RfYmFzZV9wYXJzZV9zZXRfcGFzc3Rocm91Z2ggKHBhcnNlLCBUUlVFKTsKICAgICB9CiAgIH0KKyNlbmRpZgogCiAgIGdzdF9oMjY0X3BhcnNlX3Jlc2V0X2ZyYW1lIChoMjY0cGFyc2UpOwogCkBAIC0yNzAyLDYgKzI3MjEsNyBAQAogICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CiAgICAgICBoMjY0cGFyc2UtPmR0cyA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgICAgICBoMjY0cGFyc2UtPnRzX3Rybl9uYiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgICBoMjY0cGFyc2UtPnB1c2hfY29kZWMgPSBUUlVFOwogCiAgICAgICByZXMgPSBHU1RfQkFTRV9QQVJTRV9DTEFTUyAocGFyZW50X2NsYXNzKS0+c2lua19ldmVudCAocGFyc2UsIGV2ZW50KTsKICAgICAgIGJyZWFrOwpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY1cGFyc2UuYyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0aDI2NXBhcnNlLmMKaW5kZXggZDY0OTY4MS4uNWExOTg0ZCAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RoMjY1cGFyc2UuYworKysgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdGgyNjVwYXJzZS5jCkBAIC03NjIsMTIgKzc2MiwyMSBAQAogCiAgICAgLyogZGlzcGF0Y2ggcGVyIE5BTFUgaWYgbmVlZGVkICovCiAgICAgaWYgKGgyNjVwYXJzZS0+c3BsaXRfcGFja2V0aXplZCkgeworICAgICAgR3N0QmFzZVBhcnNlRnJhbWUgdG1wX2ZyYW1lOworCisgICAgICBnc3RfYmFzZV9wYXJzZV9mcmFtZV9pbml0ICgmdG1wX2ZyYW1lKTsKKyAgICAgIHRtcF9mcmFtZS5mbGFncyB8PSBmcmFtZS0+ZmxhZ3M7CisgICAgICB0bXBfZnJhbWUub2Zmc2V0ID0gZnJhbWUtPm9mZnNldDsKKyAgICAgIHRtcF9mcmFtZS5vdmVyaGVhZCA9IGZyYW1lLT5vdmVyaGVhZDsKKyAgICAgIHRtcF9mcmFtZS5idWZmZXIgPSBnc3RfYnVmZmVyX2NvcHlfcmVnaW9uIChidWZmZXIsIEdTVF9CVUZGRVJfQ09QWV9BTEwsCisgICAgICAgICAgbmFsdS5vZmZzZXQsIG5hbHUuc2l6ZSk7CisKICAgICAgIC8qIG5vdGUgd2UgZG9uJ3QgbmVlZCB0byBjb21lIHVwIHdpdGggYSBzdWItYnVmZmVyLCBzaW5jZQogICAgICAgICogc3Vic2VxdWVudCBjb2RlIG9ubHkgY29uc2lkZXJzIGlucHV0IGJ1ZmZlcidzIG1ldGFkYXRhLgogICAgICAgICogUmVhbCBkYXRhIGlzIGVpdGhlciB0YWtlbiBmcm9tIGlucHV0IGJ5IGJhc2VjbGFzcyBvcgogICAgICAgICogYSByZXBsYWNlbWVudCBvdXRwdXQgYnVmZmVyIGlzIHByb3ZpZGVkIGFueXdheS4gKi8KLSAgICAgIGdzdF9oMjY1X3BhcnNlX3BhcnNlX2ZyYW1lIChwYXJzZSwgZnJhbWUpOwotICAgICAgcmV0ID0gZ3N0X2Jhc2VfcGFyc2VfZmluaXNoX2ZyYW1lIChwYXJzZSwgZnJhbWUsIG5sICsgbmFsdS5zaXplKTsKKyAgICAgIGdzdF9oMjY1X3BhcnNlX3BhcnNlX2ZyYW1lIChwYXJzZSwgJnRtcF9mcmFtZSk7CisgICAgICByZXQgPSBnc3RfYmFzZV9wYXJzZV9maW5pc2hfZnJhbWUgKHBhcnNlLCAmdG1wX2ZyYW1lLCBubCArIG5hbHUuc2l6ZSk7CiAgICAgICBsZWZ0IC09IG5sICsgbmFsdS5zaXplOwogICAgIH0KIApAQCAtMTA3Myw2ICsxMDgyLDEwIEBACiAgIGlmICghZm91bmQpCiAgICAgcmV0dXJuIE5VTEw7CiAKKyAgc3BzID0gaDI2NXBhcnNlLT5uYWxwYXJzZXItPmxhc3Rfc3BzOworICBpZiAoIXNwcykKKyAgICByZXR1cm4gTlVMTDsKKwogICBidWYgPQogICAgICAgZ3N0X2J1ZmZlcl9uZXdfYWxsb2NhdGUgKE5VTEwsCiAgICAgICAyMyArIG51bV9hcnJheXMgKyAoMyAqIG51bV9hcnJheXMpICsgdnBzX3NpemUgKyBzcHNfc2l6ZSArIHBwc19zaXplLApAQCAtMTA4Miw5ICsxMDk1LDYgQEAKICAgbWVtc2V0IChkYXRhLCAwLCBtYXAuc2l6ZSk7CiAgIG5sID0gaDI2NXBhcnNlLT5uYWxfbGVuZ3RoX3NpemU7CiAKLSAgc3BzID0gaDI2NXBhcnNlLT5uYWxwYXJzZXItPmxhc3Rfc3BzOwotICBpZiAoIXNwcykKLSAgICByZXR1cm4gTlVMTDsKICAgcGZ0ID0gJnNwcy0+cHJvZmlsZV90aWVyX2xldmVsOwogICBpZiAoc3BzLT52dWlfcGFyYW1ldGVyc19wcmVzZW50X2ZsYWcpCiAgICAgbWluX3NwYXRpYWxfc2VnbWVudGF0aW9uX2lkYyA9IHNwcy0+dnVpX3BhcmFtcy5taW5fc3BhdGlhbF9zZWdtZW50YXRpb25faWRjOwpAQCAtMTM0MCwxMSArMTM1MCwyMCBAQAogc3RhdGljIHZvaWQKIGVuc3VyZV9jYXBzX3Byb2ZpbGUgKEdzdEgyNjVQYXJzZSAqIGgyNjVwYXJzZSwgR3N0Q2FwcyAqIGNhcHMsIEdzdEgyNjVTUFMgKiBzcHMpCiB7Ci0gIEdzdENhcHMgKmZpbHRlcl9jYXBzLCAqcGVlcl9jYXBzLCAqY29tcGF0X2NhcHM7CisgIEdzdENhcHMgKnBlZXJfY2FwcywgKmNvbXBhdF9jYXBzOwogCi0gIGZpbHRlcl9jYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoInZpZGVvL3gtaDI2NSIpOwotICBwZWVyX2NhcHMgPQotICAgICAgZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKGgyNjVwYXJzZSksIGZpbHRlcl9jYXBzKTsKKyAgcGVlcl9jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChoMjY1cGFyc2UpKTsKKyAgaWYgKCFwZWVyX2NhcHMgfHwgIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGNhcHMsIHBlZXJfY2FwcykpIHsKKyAgICBHc3RDYXBzICpmaWx0ZXJfY2FwcyA9IGdzdF9jYXBzX25ld19lbXB0eV9zaW1wbGUgKCJ2aWRlby94LWgyNjUiKTsKKworICAgIGlmIChwZWVyX2NhcHMpCisgICAgICBnc3RfY2Fwc191bnJlZiAocGVlcl9jYXBzKTsKKyAgICBwZWVyX2NhcHMgPQorICAgICAgICBnc3RfcGFkX3BlZXJfcXVlcnlfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAoaDI2NXBhcnNlKSwKKyAgICAgICAgZmlsdGVyX2NhcHMpOworCisgICAgZ3N0X2NhcHNfdW5yZWYgKGZpbHRlcl9jYXBzKTsKKyAgfQogCiAgIGlmIChwZWVyX2NhcHMgJiYgIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGNhcHMsIHBlZXJfY2FwcykpIHsKICAgICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKQEAgLTEzNzUsNyArMTM5NCw2IEBACiAgIH0KICAgaWYgKHBlZXJfY2FwcykKICAgICBnc3RfY2Fwc191bnJlZiAocGVlcl9jYXBzKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGZpbHRlcl9jYXBzKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE1NTcsMTUgKzE1NzUsMjIgQEAKIAogICAgIHNyY19jYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChoMjY1cGFyc2UpKTsKIAotICAgIGlmIChzcmNfY2FwcwotICAgICAgICAmJiBnc3Rfc3RydWN0dXJlX2hhc19maWVsZCAoZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoc3JjX2NhcHMsIDApLAotICAgICAgICAgICAgImNvZGVjX2RhdGEiKSkgeworICAgIGlmIChzcmNfY2FwcykgewogICAgICAgLyogdXNlIGNvZGVjIGRhdGEgZnJvbSBvbGQgY2FwcyBmb3IgY29tcGFyaXNvbjsgd2UgZG9uJ3Qgd2FudCB0byByZXNlbmQgY2FwcwogICAgICAgICAgaWYgZXZlcnl0aGluZyBpcyBzYW1lIGV4Y2VwdCBjb2RlYyBkYXRhOyAqLwotICAgICAgZ3N0X2NhcHNfc2V0X3ZhbHVlIChjYXBzLCAiY29kZWNfZGF0YSIsCi0gICAgICAgICAgZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHNyY19jYXBzLCAwKSwKLSAgICAgICAgICAgICAgImNvZGVjX2RhdGEiKSk7CisgICAgICBpZiAoZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGQgKGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKHNyY19jYXBzLCAwKSwKKyAgICAgICAgICAgICAgImNvZGVjX2RhdGEiKSkgeworICAgICAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKGNhcHMsICJjb2RlY19kYXRhIiwKKyAgICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X3ZhbHVlIChnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChzcmNfY2FwcywgMCksCisgICAgICAgICAgICAgICAgImNvZGVjX2RhdGEiKSk7CisgICAgICB9IGVsc2UgaWYgKCFidWYpIHsKKyAgICAgICAgR3N0U3RydWN0dXJlICpzOworICAgICAgICAvKiByZW1vdmUgYW55IGxlZnQtb3ZlciBjb2RlYy1kYXRhIGhhbmdpbmcgYXJvdW5kICovCisgICAgICAgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9yZW1vdmVfZmllbGQgKHMsICJjb2RlY19kYXRhIik7CisgICAgICB9CiAgICAgfQorCiAgICAgaWYgKCEoc3JjX2NhcHMgJiYgZ3N0X2NhcHNfaXNfc3RyaWN0bHlfZXF1YWwgKHNyY19jYXBzLCBjYXBzKSkpIHsKICAgICAgIC8qIHVwZGF0ZSBjb2RlYyBkYXRhIHRvIG5ldyB2YWx1ZSAqLwogICAgICAgaWYgKGJ1ZikgewpAQCAtMTc2NSwxMCArMTc5MCwxOSBAQAogICAgIEdzdFRhZ0xpc3QgKnRhZ2xpc3Q7CiAgICAgR3N0Q2FwcyAqY2FwczsKIAotICAgIHRhZ2xpc3QgPSBnc3RfdGFnX2xpc3RfbmV3X2VtcHR5ICgpOwotCiAgICAgLyogY29kZWMgdGFnICovCiAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoY2FwcyA9PSBOVUxMKSkgeworICAgICAgaWYgKEdTVF9QQURfSVNfRkxVU0hJTkcgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSkpIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgZmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgbm90IG5lZ290aWF0ZWQhIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CkBAIC0yMDIzLDcgKzIwNTcsNyBAQAogICAgICAgICBvZmYgPSBuYWx1Lm9mZnNldCArIG5hbHUuc2l6ZTsKICAgICAgIH0KICAgICB9Ci0KKyAgICBnc3RfYnVmZmVyX3VubWFwIChjb2RlY19kYXRhLCAmbWFwKTsKICAgfSBlbHNlIHsKICAgICBHU1RfREVCVUdfT0JKRUNUIChoMjY1cGFyc2UsICJoYXZlIGJ5dGVzdHJlYW0gaDI2NSIpOwogICAgIC8qIG5vdGhpbmcgdG8gcHJlLXByb2Nlc3MgKi8KQEAgLTIxODgsNyArMjIyMiw3IEBACiAgICAgICBicmVhazsKICAgICB9CiAgICAgY2FzZSBHU1RfRVZFTlRfRkxVU0hfU1RPUDoKLQorICAgICAgaDI2NXBhcnNlLT5wdXNoX2NvZGVjID0gVFJVRTsKICAgICAgIHJlcyA9IEdTVF9CQVNFX1BBUlNFX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zaW5rX2V2ZW50IChwYXJzZSwgZXZlbnQpOwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKZGlmZiAtLWdpdCBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0bXBlZzR2aWRlb3BhcnNlLmMgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdG1wZWc0dmlkZW9wYXJzZS5jCmluZGV4IDUzZGIyZDUuLmExZmQzYjIgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0bXBlZzR2aWRlb3BhcnNlLmMKKysrIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVnNHZpZGVvcGFyc2UuYwpAQCAtNzIyLDEwICs3MjIsMTkgQEAKICAgICBHc3RUYWdMaXN0ICp0YWdsaXN0OwogICAgIEdzdENhcHMgKmNhcHM7CiAKLSAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKLQogICAgIC8qIGNvZGVjIHRhZyAqLwogICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSk7CisgICAgaWYgKEdfVU5MSUtFTFkgKGNhcHMgPT0gTlVMTCkpIHsKKyAgICAgIGlmIChHU1RfUEFEX0lTX0ZMVVNISU5HIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpKSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIGZsdXNoaW5nIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIG5vdCBuZWdvdGlhdGVkISIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7CisgICAgICB9CisgICAgfQorCisgICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7CiAgICAgZ3N0X3BiX3V0aWxzX2FkZF9jb2RlY19kZXNjcmlwdGlvbl90b190YWdfbGlzdCAodGFnbGlzdCwKICAgICAgICAgR1NUX1RBR19WSURFT19DT0RFQywgY2Fwcyk7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZS5jIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RtcGVndmlkZW9wYXJzZS5jCmluZGV4IDU0ZWUxM2IuLmJmNzFhM2UgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0bXBlZ3ZpZGVvcGFyc2UuYworKysgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdG1wZWd2aWRlb3BhcnNlLmMKQEAgLTgxNSw2ICs4MTUsNyBAQAogICB9CiAKICAgaWYgKG1wdnBhcnNlLT5jb25maWdfZmxhZ3MgJiBGTEFHX1NFUVVFTkNFX0VYVCkgeworICAgIGd1aW50OCBlc2NhcGUgPSBtcHZwYXJzZS0+c2VxdWVuY2VleHQucHJvZmlsZV9sZXZlbF9lc2NhcGVfYml0OwogICAgIGNvbnN0IGd1aW50IHByb2ZpbGVfYyA9IG1wdnBhcnNlLT5zZXF1ZW5jZWV4dC5wcm9maWxlOwogICAgIGNvbnN0IGd1aW50IGxldmVsX2MgPSBtcHZwYXJzZS0+c2VxdWVuY2VleHQubGV2ZWw7CiAgICAgY29uc3QgZ2NoYXIgKnByb2ZpbGUgPSBOVUxMLCAqbGV2ZWwgPSBOVUxMOwpAQCAtODI0LDIwICs4MjUsMTQgQEAKICAgICAgKiA0OjI6MiBhbmQgTXVsdGktdmlldyBoYXZlIHByb2ZpbGUgPSAwLCB3aXRoIHRoZSBlc2NhcGUgYml0IHNldCB0byAxCiAgICAgICovCiAgICAgY29uc3QgZ2NoYXIgKmNvbnN0IHByb2ZpbGVzW10gPQotICAgICAgICB7ICJoaWdoIiwgInNwYXRpYWwiLCAic25yIiwgIm1haW4iLCAic2ltcGxlIiB9OworICAgICAgICB7ICI0OjI6MiIsICJoaWdoIiwgInNwYXRpYWwiLCAic25yIiwgIm1haW4iLCAic2ltcGxlIiB9OwogICAgIC8qCiAgICAgICogTGV2ZWwgaW5kaWNhdGlvbiAtIDQgPT4gSGlnaCwgNiA9PiBIaWdoLTE0NDAsIDggPT4gTWFpbiwgMTAgPT4gTG93LAogICAgICAqICAgICAgICAgICAgICAgICAgICBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgcHJvZmlsZSA9IDAKICAgICAgKi8KICAgICBjb25zdCBnY2hhciAqY29uc3QgbGV2ZWxzW10gPSB7ICJoaWdoIiwgImhpZ2gtMTQ0MCIsICJtYWluIiwgImxvdyIgfTsKIAotICAgIGlmIChwcm9maWxlX2MgPiAwICYmIHByb2ZpbGVfYyA8IDYpCi0gICAgICBwcm9maWxlID0gcHJvZmlsZXNbcHJvZmlsZV9jIC0gMV07Ci0KLSAgICBpZiAoKGxldmVsX2MgPiAzKSAmJiAobGV2ZWxfYyA8IDExKSAmJiAobGV2ZWxfYyAlIDIgPT0gMCkpCi0gICAgICBsZXZlbCA9IGxldmVsc1sobGV2ZWxfYyA+PiAxKSAtIDJdOwotCi0gICAgaWYgKHByb2ZpbGVfYyA9PSA4KSB7CisgICAgaWYgKGVzY2FwZSkgewogICAgICAgLyogTm9uLWhpZXJhcmNoaWNhbCBwcm9maWxlICovCiAgICAgICBzd2l0Y2ggKGxldmVsX2MpIHsKICAgICAgICAgY2FzZSAyOgpAQCAtODYzLDkgKzg1OCwxNCBAQAogICAgICAgICBkZWZhdWx0OgogICAgICAgICAgIGJyZWFrOwogICAgICAgfQotICAgIH0KIAotICAgIC8qIEZJWE1FIGRvZXMgaXQgbWFrZSBzZW5zZSB0byBleHBvc2UgcHJvZmlsZS9sZXZlbCBpbiB0aGUgY2FwcyA/ICovCisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChwcm9maWxlX2MgPCA2KQorICAgICAgICBwcm9maWxlID0gcHJvZmlsZXNbcHJvZmlsZV9jXTsKKworICAgICAgaWYgKChsZXZlbF9jID4gMykgJiYgKGxldmVsX2MgPCAxMSkgJiYgKGxldmVsX2MgJSAyID09IDApKQorICAgICAgICBsZXZlbCA9IGxldmVsc1sobGV2ZWxfYyA+PiAxKSAtIDJdOworICAgIH0KIAogICAgIEdTVF9ERUJVR19PQkpFQ1QgKG1wdnBhcnNlLCAicHJvZmlsZTonJXMnIGxldmVsOiclcyciLCBwcm9maWxlLCBsZXZlbCk7CiAKQEAgLTk0OCw4ICs5NDgsMTggQEAKICAgICBHc3RDYXBzICpjYXBzOwogCiAgICAgLyogY29kZWMgdGFnICovCi0gICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7CiAgICAgY2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoR1NUX0JBU0VfUEFSU0VfU1JDX1BBRCAocGFyc2UpKTsKKyAgICBpZiAoR19VTkxJS0VMWSAoY2FwcyA9PSBOVUxMKSkgeworICAgICAgaWYgKEdTVF9QQURfSVNfRkxVU0hJTkcgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSkpIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgZmx1c2hpbmciKTsKKyAgICAgICAgcmV0dXJuIEdTVF9GTE9XX0ZMVVNISU5HOworICAgICAgfSBlbHNlIHsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChwYXJzZSwgIlNyYyBwYWQgaXMgbm90IG5lZ290aWF0ZWQhIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICAgIH0KKyAgICB9CisKKyAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKICAgICBnc3RfcGJfdXRpbHNfYWRkX2NvZGVjX2Rlc2NyaXB0aW9uX3RvX3RhZ19saXN0ICh0YWdsaXN0LAogICAgICAgICBHU1RfVEFHX1ZJREVPX0NPREVDLCBjYXBzKTsKICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CmRpZmYgLS1naXQgYS9nc3QvdmlkZW9wYXJzZXJzL2dzdHBuZ3BhcnNlLmMgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdHBuZ3BhcnNlLmMKaW5kZXggZTA4ZmU3MS4uZTlkMDc2OCAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3RwbmdwYXJzZS5jCisrKyBiL2dzdC92aWRlb3BhcnNlcnMvZ3N0cG5ncGFyc2UuYwpAQCAtMjU5LDEwICsyNTksMTkgQEAKICAgICBHc3RUYWdMaXN0ICp0YWdsaXN0OwogICAgIEdzdENhcHMgKmNhcHM7CiAKLSAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKLQogICAgIC8qIGNvZGVjIHRhZyAqLwogICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSk7CisgICAgaWYgKEdfVU5MSUtFTFkgKGNhcHMgPT0gTlVMTCkpIHsKKyAgICAgIGlmIChHU1RfUEFEX0lTX0ZMVVNISU5HIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpKSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIGZsdXNoaW5nIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIG5vdCBuZWdvdGlhdGVkISIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7CisgICAgICB9CisgICAgfQorCisgICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7CiAgICAgZ3N0X3BiX3V0aWxzX2FkZF9jb2RlY19kZXNjcmlwdGlvbl90b190YWdfbGlzdCAodGFnbGlzdCwKICAgICAgICAgR1NUX1RBR19WSURFT19DT0RFQywgY2Fwcyk7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwpkaWZmIC0tZ2l0IGEvZ3N0L3ZpZGVvcGFyc2Vycy9nc3R2YzFwYXJzZS5jIGIvZ3N0L3ZpZGVvcGFyc2Vycy9nc3R2YzFwYXJzZS5jCmluZGV4IDYzZGU0ZTkuLmU3MmY0ZjYgMTAwNjQ0Ci0tLSBhL2dzdC92aWRlb3BhcnNlcnMvZ3N0dmMxcGFyc2UuYworKysgYi9nc3QvdmlkZW9wYXJzZXJzL2dzdHZjMXBhcnNlLmMKQEAgLTE3MDAsMTAgKzE3MDAsMTkgQEAKICAgICBHc3RUYWdMaXN0ICp0YWdsaXN0OwogICAgIEdzdENhcHMgKmNhcHM7CiAKLSAgICB0YWdsaXN0ID0gZ3N0X3RhZ19saXN0X25ld19lbXB0eSAoKTsKLQogICAgIC8qIGNvZGVjIHRhZyAqLwogICAgIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1BBUlNFX1NSQ19QQUQgKHBhcnNlKSk7CisgICAgaWYgKEdfVU5MSUtFTFkgKGNhcHMgPT0gTlVMTCkpIHsKKyAgICAgIGlmIChHU1RfUEFEX0lTX0ZMVVNISU5HIChHU1RfQkFTRV9QQVJTRV9TUkNfUEFEIChwYXJzZSkpKSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIGZsdXNoaW5nIik7CisgICAgICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAocGFyc2UsICJTcmMgcGFkIGlzIG5vdCBuZWdvdGlhdGVkISIpOworICAgICAgICByZXR1cm4gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7CisgICAgICB9CisgICAgfQorCisgICAgdGFnbGlzdCA9IGdzdF90YWdfbGlzdF9uZXdfZW1wdHkgKCk7CiAgICAgZ3N0X3BiX3V0aWxzX2FkZF9jb2RlY19kZXNjcmlwdGlvbl90b190YWdfbGlzdCAodGFnbGlzdCwKICAgICAgICAgR1NUX1RBR19WSURFT19DT0RFQywgY2Fwcyk7CiAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwpAQCAtMTk2Miw2ICsxOTcxLDcgQEAKICAgICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKICAgICAgICAgICBicmVhazsKICAgICAgIH0KKyAgICAgIGJyZWFrOwogCiAgICAgY2FzZSBWQzFfU1RSRUFNX0ZPUk1BVF9GUkFNRV9MQVlFUjoKICAgICAgIHN3aXRjaCAodmMxcGFyc2UtPmlucHV0X3N0cmVhbV9mb3JtYXQpIHsKZGlmZiAtLWdpdCBhL2dzdC92aWRlb3NpZ25hbC9NYWtlZmlsZS5pbiBiL2dzdC92aWRlb3NpZ25hbC9NYWtlZmlsZS5pbgppbmRleCAyMWQxOWRlLi45M2FlOWZmIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9zaWduYWwvTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3ZpZGVvc2lnbmFsL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjc1LDYgKzI3NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzEyLDYgKzMxMyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzIwLDcgKzMyMyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOSw4ICszNDEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU3LDE2ICszNjAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkyLDYgKzM5Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNyw2ICs0MjMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTgsNiArNTI2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMSw4ICs1NDAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDgsNiArNTU1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNSwxNiArNjE0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY2LDYgKzY3Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzYsNiArNjg4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg1LDYgKzY5OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjIsNyArNzM3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9nc3QvdmlkZW9zaWduYWwvZ3N0c2ltcGxldmlkZW9tYXJrLmMgYi9nc3QvdmlkZW9zaWduYWwvZ3N0c2ltcGxldmlkZW9tYXJrLmMKaW5kZXggOWQ1N2I1Mi4uMmE1MjdjMyAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvc2lnbmFsL2dzdHNpbXBsZXZpZGVvbWFyay5jCisrKyBiL2dzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmsuYwpAQCAtMzYsNyArMzYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgc2ltcGxldmlkZW9tYXJrICEgeGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgc2ltcGxldmlkZW9tYXJrICEgdmlkZW9jb252ZXJ0ICEgeGltYWdlc2luawogICogXXwgQWRkIHRoZSBkZWZhdWx0IGJsYWNrL3doaXRlIHNxdWFyZXMgYXQgdGhlIGJvdHRvbSBsZWZ0IG9mIHRoZSB2aWRlbyBmcmFtZXMuCiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QvdmlkZW9zaWduYWwvZ3N0c2ltcGxldmlkZW9tYXJrZGV0ZWN0LmMgYi9nc3QvdmlkZW9zaWduYWwvZ3N0c2ltcGxldmlkZW9tYXJrZGV0ZWN0LmMKaW5kZXggZDVmMDkzZi4uMWU5NWM4MSAxMDA2NDQKLS0tIGEvZ3N0L3ZpZGVvc2lnbmFsL2dzdHNpbXBsZXZpZGVvbWFya2RldGVjdC5jCisrKyBiL2dzdC92aWRlb3NpZ25hbC9nc3RzaW1wbGV2aWRlb21hcmtkZXRlY3QuYwpAQCAtODcsNyArODcsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggdmlkZW90ZXN0c3JjICEgc2ltcGxldmlkZW9tYXJrZGV0ZWN0ICEgdmlkZW9jb252ZXJ0ICEgeGltYWdlc2luaworICogZ3N0LWxhdW5jaC0xLjAgdmlkZW90ZXN0c3JjICEgc2ltcGxldmlkZW9tYXJrZGV0ZWN0ICEgdmlkZW9jb252ZXJ0ICEgeGltYWdlc2luawogICogXXwKICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL2dzdC92aWRlb3NpZ25hbC9nc3R2aWRlb2FuYWx5c2UuYyBiL2dzdC92aWRlb3NpZ25hbC9nc3R2aWRlb2FuYWx5c2UuYwppbmRleCAzY2E0ZDAzLi5iN2VkN2UxIDEwMDY0NAotLS0gYS9nc3QvdmlkZW9zaWduYWwvZ3N0dmlkZW9hbmFseXNlLmMKKysrIGIvZ3N0L3ZpZGVvc2lnbmFsL2dzdHZpZGVvYW5hbHlzZS5jCkBAIC03Miw3ICs3Miw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtbSB2aWRlb3Rlc3RzcmMgISB2aWRlb2FuYWx5c2UgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtbSB2aWRlb3Rlc3RzcmMgISB2aWRlb2FuYWx5c2UgISB2aWRlb2NvbnZlcnQgISB4aW1hZ2VzaW5rCiAgKiBdfCBUaGlzIHBpcGVsaW5lIGVtaXRzIG1lc3NhZ2VzIHRvIHRoZSBjb25zb2xlIGZvciBlYWNoIGZyYW1lIHRoYXQgaGFzIGJlZW4gYW5hbHlzZWQuIAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvZ3N0L3ZtbmMvTWFrZWZpbGUuaW4gYi9nc3Qvdm1uYy9NYWtlZmlsZS5pbgppbmRleCA3N2M2MGNjLi4zYWQ5NDFhIDEwMDY0NAotLS0gYS9nc3Qvdm1uYy9NYWtlZmlsZS5pbgorKysgYi9nc3Qvdm1uYy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC95NG0vTWFrZWZpbGUuaW4gYi9nc3QveTRtL01ha2VmaWxlLmluCmluZGV4IDBkNjY4NDQuLmEyM2I5NTYgMTAwNjQ0Ci0tLSBhL2dzdC95NG0vTWFrZWZpbGUuaW4KKysrIGIvZ3N0L3k0bS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL2dzdC95NG0vZ3N0eTRtZGVjLmMgYi9nc3QveTRtL2dzdHk0bWRlYy5jCmluZGV4IDZiZjI3YTguLmM2YjIwNjUgMTAwNjQ0Ci0tLSBhL2dzdC95NG0vZ3N0eTRtZGVjLmMKKysrIGIvZ3N0L3k0bS9nc3R5NG1kZWMuYwpAQCAtMjQsNyArMjQsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgZmlsZXNyYyBsb2NhdGlvbj1maWxlLnk0bSAhIHk0bWRlYyAhIHh2aW1hZ2VzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZpbGUueTRtICEgeTRtZGVjICEgeHZpbWFnZXNpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCmRpZmYgLS1naXQgYS9nc3QveWFkaWYvTWFrZWZpbGUuaW4gYi9nc3QveWFkaWYvTWFrZWZpbGUuaW4KaW5kZXggNTg2ZmQ3NC4uMjQ4ODNmNiAxMDA2NDQKLS0tIGEvZ3N0L3lhZGlmL01ha2VmaWxlLmluCisrKyBiL2dzdC95YWRpZi9NYWtlZmlsZS5pbgpAQCAtMTE1LDE2ICsxMTUsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI3Miw2ICsyNzEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMwOSw2ICszMTAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxNyw3ICszMjAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzYsOCArMzM4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NCwxNiArMzU3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM4OSw2ICszOTMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTQsNiArNDIwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE1LDYgKzUyMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MjgsOCArNTM3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ1LDYgKzU1Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDIsMTYgKzYxMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Myw2ICs2NzQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjczLDYgKzY4NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Miw2ICs2OTUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzE5LDcgKzczNCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvZ3N0L3lhZGlmL2dzdHlhZGlmLmMgYi9nc3QveWFkaWYvZ3N0eWFkaWYuYwppbmRleCBlNGZlZDYxLi4xZGNmMmNhIDEwMDY0NAotLS0gYS9nc3QveWFkaWYvZ3N0eWFkaWYuYworKysgYi9nc3QveWFkaWYvZ3N0eWFkaWYuYwpAQCAtMjksNyArMjksNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmU8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggLXYgdmlkZW90ZXN0c3JjIHBhdHRlcm49YmFsbCAhIGludGVybGFjZSAhIHlhZGlmICEgeHZpbWFnZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IHZpZGVvdGVzdHNyYyBwYXR0ZXJuPWJhbGwgISBpbnRlcmxhY2UgISB5YWRpZiAhIHh2aW1hZ2VzaW5rCiAgKiBdfAogICogVGhpcyBwaXBlbGluZSBjcmVhdGVzIGFuIGludGVybGFjZWQgdGVzdCBwYXR0ZXJuLCBhbmQgdGhlbiBkZWludGVybGFjZXMKICAqIGl0IHVzaW5nIHRoZSB5YWRpZiBmaWx0ZXIuCkBAIC0yNDMsOCArMjQzLDggQEAKICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZ2YWx1ZSwgJnYpOwogCiAgICAgZ3N0X2NhcHNfc2V0X3ZhbHVlIChvdGhlcmNhcHMsICJpbnRlcmxhY2UtbW9kZSIsICZ2YWx1ZSk7Ci0gICAgZ192YWx1ZV9yZXNldCAoJnZhbHVlKTsKLSAgICBnX3ZhbHVlX3Jlc2V0ICgmdik7CisgICAgZ192YWx1ZV91bnNldCAoJnZhbHVlKTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmdik7CiAgIH0gZWxzZSB7CiAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAob3RoZXJjYXBzLCAiaW50ZXJsYWNlLW1vZGUiLCBHX1RZUEVfU1RSSU5HLAogICAgICAgICAicHJvZ3Jlc3NpdmUiLCBOVUxMKTsKZGlmZiAtLWdpdCBhL2dzdC95YWRpZi92Zl95YWRpZi5jIGIvZ3N0L3lhZGlmL3ZmX3lhZGlmLmMKaW5kZXggODJlOWU5ZS4uYTBiZWM0YSAxMDA2NDQKLS0tIGEvZ3N0L3lhZGlmL3ZmX3lhZGlmLmMKKysrIGIvZ3N0L3lhZGlmL3ZmX3lhZGlmLmMKQEAgLTU2LDEyICs1NiwxNSBAQAogICAgICAgICBpbnQgdGVtcG9yYWxfZGlmZjIgPShGRkFCUyhuZXh0W21yZWZzXSAtIGMpICsgRkZBQlMobmV4dFtwcmVmc10gLSBlKSApPj4xOyBcCiAgICAgICAgIGludCBkaWZmID0gRkZNQVgzKHRlbXBvcmFsX2RpZmYwID4+IDEsIHRlbXBvcmFsX2RpZmYxLCB0ZW1wb3JhbF9kaWZmMik7IFwKICAgICAgICAgaW50IHNwYXRpYWxfcHJlZCA9IChjK2UpID4+IDE7IFwKLSAgICAgICAgaW50IHNwYXRpYWxfc2NvcmUgPSBGRkFCUyhjdXJbbXJlZnMgLSAxXSAtIGN1cltwcmVmcyAtIDFdKSArIEZGQUJTKGMtZSkgXAotICAgICAgICAgICAgICAgICAgICAgICAgICArIEZGQUJTKGN1clttcmVmcyArIDFdIC0gY3VyW3ByZWZzICsgMV0pIC0gMTsgXAorICAgICAgICBpbnQgc3BhdGlhbF9zY29yZSA9IC0xOyBcCiAgXAotICAgICAgICBDSEVDSygtMSkgQ0hFQ0soLTIpIH19IH19IFwKLSAgICAgICAgQ0hFQ0soIDEpIENIRUNLKCAyKSB9fSB9fSBcCisgICAgICAgIGlmIChtcmVmcyA+IDAgJiYgcHJlZnMgPiAwKSB7IFwKKyAgICAgICAgICAgIHNwYXRpYWxfc2NvcmUgPSBGRkFCUyhjdXJbbXJlZnMgLSAxXSAtIGN1cltwcmVmcyAtIDFdKSArIEZGQUJTKGMtZSkgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgRkZBQlMoY3VyW21yZWZzICsgMV0gLSBjdXJbcHJlZnMgKyAxXSkgLSAxOyBcCiAgXAorICAgICAgICAgICAgQ0hFQ0soLTEpIENIRUNLKC0yKSB9fSB9fSBcCisgICAgICAgICAgICBDSEVDSyggMSkgQ0hFQ0soIDIpIH19IH19IFwKKyAgICAgICAgfSBcCiAgICAgICAgIGlmIChtb2RlIDwgMikgeyBcCiAgICAgICAgICAgICBpbnQgYiA9IChwcmV2MlsyICogbXJlZnNdICsgbmV4dDJbMiAqIG1yZWZzXSk+PjE7IFwKICAgICAgICAgICAgIGludCBmID0gKHByZXYyWzIgKiBwcmVmc10gKyBuZXh0MlsyICogcHJlZnNdKT4+MTsgXApkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCmluZGV4IGJmZmRhNTQuLjE0N2Q3NTggMTAwNjQ0Ci0tLSBhL2x0bWFpbi5zaAorKysgYi9sdG1haW4uc2gKQEAgLTEsOSArMSwxMiBAQAorIyEgL2Jpbi9zaAorIyMgRE8gTk9UIEVESVQgLSBUaGlzIGZpbGUgZ2VuZXJhdGVkIGZyb20gLi9idWlsZC1hdXgvbHRtYWluLmluCisjIyAgICAgICAgICAgICAgIGJ5IGlubGluZS1zb3VyY2UgdjIwMTQtMDEtMDMuMDEKIAotIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40LjIKKyMgbGlidG9vbCAoR05VIGxpYnRvb2wpIDIuNC42CisjIFByb3ZpZGUgZ2VuZXJhbGl6ZWQgbGlicmFyeS1idWlsZGluZyBzdXBwb3J0IHNlcnZpY2VzLgogIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgogCi0jIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwgMjAwNiwKLSMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgQ29weXJpZ2h0IChDKSAxOTk2LTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCiAjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgogCkBAIC0yMywxNjYgKzI2LDY3MCBAQAogIyBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCiAjCiAjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggR05VIExpYnRvb2w7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLiAgSWYgbm90LCBhIGNvcHkKLSMgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSBodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvZ3BsLmh0bWwsCi0jIG9yIG9idGFpbmVkIGJ5IHdyaXRpbmcgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKLSMgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogCi0jIFVzYWdlOiAkcHJvZ25hbWUgW09QVElPTl0uLi4gW01PREUtQVJHXS4uLgotIwotIyBQcm92aWRlIGdlbmVyYWxpemVkIGxpYnJhcnktYnVpbGRpbmcgc3VwcG9ydCBzZXJ2aWNlcy4KLSMKLSMgICAgICAgLS1jb25maWcgICAgICAgICAgICAgc2hvdyBhbGwgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKLSMgICAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZwotIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcwotIyAgICAgICAtLWZlYXR1cmVzICAgICAgICAgICBkaXNwbGF5IGJhc2ljIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24gYW5kIGV4aXQKLSMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKLSMgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcwotIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0jICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50Ci0jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMgKGRlZmF1bHQpCi0jICAgICAgIC0tbm8td2FybiAgICAgICAgICAgIGRvbid0IGRpc3BsYXkgd2FybmluZyBtZXNzYWdlcwotIyAgICAgICAtLXRhZz1UQUcgICAgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCi0jICAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgIHByaW50IG1vcmUgaW5mb3JtYXRpb25hbCBtZXNzYWdlcyB0aGFuIGRlZmF1bHQKLSMgICAgICAgLS1uby12ZXJib3NlICAgICAgICAgZG9uJ3QgcHJpbnQgdGhlIGV4dHJhIGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKLSMgICAgICAgLS12ZXJzaW9uICAgICAgICAgICAgcHJpbnQgdmVyc2lvbiBpbmZvcm1hdGlvbgotIyAgIC1oLCAtLWhlbHAsIC0taGVscC1hbGwgICBwcmludCBzaG9ydCwgbG9uZywgb3IgZGV0YWlsZWQgaGVscCBtZXNzYWdlCi0jCi0jIE1PREUgbXVzdCBiZSBvbmUgb2YgdGhlIGZvbGxvd2luZzoKLSMKLSMgICAgICAgICBjbGVhbiAgICAgICAgICAgICAgcmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeQotIyAgICAgICAgIGNvbXBpbGUgICAgICAgICAgICBjb21waWxlIGEgc291cmNlIGZpbGUgaW50byBhIGxpYnRvb2wgb2JqZWN0Ci0jICAgICAgICAgZXhlY3V0ZSAgICAgICAgICAgIGF1dG9tYXRpY2FsbHkgc2V0IGxpYnJhcnkgcGF0aCwgdGhlbiBydW4gYSBwcm9ncmFtCi0jICAgICAgICAgZmluaXNoICAgICAgICAgICAgIGNvbXBsZXRlIHRoZSBpbnN0YWxsYXRpb24gb2YgbGlidG9vbCBsaWJyYXJpZXMKLSMgICAgICAgICBpbnN0YWxsICAgICAgICAgICAgaW5zdGFsbCBsaWJyYXJpZXMgb3IgZXhlY3V0YWJsZXMKLSMgICAgICAgICBsaW5rICAgICAgICAgICAgICAgY3JlYXRlIGEgbGlicmFyeSBvciBhbiBleGVjdXRhYmxlCi0jICAgICAgICAgdW5pbnN0YWxsICAgICAgICAgIHJlbW92ZSBsaWJyYXJpZXMgZnJvbSBhbiBpbnN0YWxsZWQgZGlyZWN0b3J5Ci0jCi0jIE1PREUtQVJHUyB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgTU9ERS4gIFdoZW4gcGFzc2VkIGFzIGZpcnN0IG9wdGlvbiwKLSMgYC0tbW9kZT1NT0RFJyBtYXkgYmUgYWJicmV2aWF0ZWQgYXMgYE1PREUnIG9yIGEgdW5pcXVlIGFiYnJldmlhdGlvbiBvZiB0aGF0LgotIyBUcnkgYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KLSMKLSMgV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCi0jIGluY2x1ZGUgdGhlIGZvbGxvd2luZyBpbmZvcm1hdGlvbjoKLSMKLSMgICAgICAgICBob3N0LXRyaXBsZXQ6CSRob3N0Ci0jICAgICAgICAgc2hlbGw6CQkkU0hFTEwKLSMgICAgICAgICBjb21waWxlcjoJCSRMVENDCi0jICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKLSMgICAgICAgICBsaW5rZXI6CQkkTEQgKGdudT8gJHdpdGhfZ251X2xkKQotIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sKSAyLjQuMiBEZWJpYW4tMi40LjItMS4xMQotIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgotIyAgICAgICAgIGF1dG9jb25mOgkkYXV0b2NvbmZfdmVyc2lvbgotIwotIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCi0jIEdOVSBsaWJ0b29sIGhvbWUgcGFnZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJ0b29sLz4uCi0jIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgogCiBQUk9HUkFNPWxpYnRvb2wKIFBBQ0tBR0U9bGlidG9vbAotVkVSU0lPTj0iMi40LjIgRGViaWFuLTIuNC4yLTEuMTEiCi1USU1FU1RBTVA9IiIKLXBhY2thZ2VfcmV2aXNpb249MS4zMzM3CitWRVJTSU9OPSIyLjQuNiBEZWJpYW4tMi40LjYtMC4xIgorcGFja2FnZV9yZXZpc2lvbj0yLjQuNgogCi0jIEJlIEJvdXJuZSBjb21wYXRpYmxlCi1pZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKworIyMgLS0tLS0tICMjCisjIyBVc2FnZS4gIyMKKyMjIC0tLS0tLSAjIworCisjIFJ1biAnLi9saWJ0b29sIC0taGVscCcgZm9yIGhlbHAgd2l0aCB1c2luZyB0aGlzIHNjcmlwdCBmcm9tIHRoZQorIyBjb21tYW5kIGxpbmUuCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgVXNlciBvdmVycmlkYWJsZSBjb21tYW5kIHBhdGhzLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIEFmdGVyIGNvbmZpZ3VyZSBjb21wbGV0ZXMsIGl0IGhhcyBhIGJldHRlciBpZGVhIG9mIHNvbWUgb2YgdGhlCisjIHNoZWxsIHRvb2xzIHdlIG5lZWQgdGhhbiB0aGUgZGVmYXVsdHMgdXNlZCBieSB0aGUgZnVuY3Rpb25zIHNoYXJlZAorIyB3aXRoIGJvb3RzdHJhcCwgc28gc2V0IHRob3NlIGhlcmUgd2hlcmUgdGhleSBjYW4gc3RpbGwgYmUgb3Zlci0KKyMgcmlkZGVuIGJ5IHRoZSB1c2VyLCBidXQgb3RoZXJ3aXNlIHRha2UgcHJlY2VkZW5jZS4KKworOiAke0FVVE9DT05GPSJhdXRvY29uZiJ9Cis6ICR7QVVUT01BS0U9ImF1dG9tYWtlIn0KKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgU291cmNlIGV4dGVybmFsIGxpYnJhcmllcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgTXVjaCBvZiBvdXIgbG93LWxldmVsIGZ1bmN0aW9uYWxpdHkgbmVlZHMgdG8gYmUgc291cmNlZCBmcm9tIGV4dGVybmFsCisjIGxpYnJhcmllcywgd2hpY2ggYXJlIGluc3RhbGxlZCB0byAkcGtnYXV4ZGlyLgorCisjIFNldCBhIHZlcnNpb24gc3RyaW5nIGZvciB0aGlzIHNjcmlwdC4KK3NjcmlwdHZlcnNpb249MjAxNS0wMS0yMC4xNzsgIyBVVEMKKworIyBHZW5lcmFsIHNoZWxsIHNjcmlwdCBib2lsZXIgcGxhdGUsIGFuZCBoZWxwZXIgZnVuY3Rpb25zLgorIyBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAwNAorCisjIENvcHlyaWdodCAoQykgMjAwNC0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTworIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UgZGlzdHJpYnV0ZQorIyB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gb3IgbGlicmFyeSB0aGF0IGlzIGJ1aWx0IHVzaW5nIEdOVSBMaWJ0b29sLAorIyB5b3UgbWF5IGluY2x1ZGUgdGhpcyBmaWxlIHVuZGVyIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UKKyMgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KKworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisjIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorCisjIFBsZWFzZSByZXBvcnQgYnVncyBvciBwcm9wb3NlIHBhdGNoZXMgdG8gZ2FyeUBnbnUub3JnLgorCisKKyMjIC0tLS0tLSAjIworIyMgVXNhZ2UuICMjCisjIyAtLS0tLS0gIyMKKworIyBFdmFsdWF0ZSB0aGlzIGZpbGUgbmVhciB0aGUgdG9wIG9mIHlvdXIgc2NyaXB0IHRvIGdhaW4gYWNjZXNzIHRvCisjIHRoZSBmdW5jdGlvbnMgYW5kIHZhcmlhYmxlcyBkZWZpbmVkIGhlcmU6CisjCisjICAgLiBgZWNobyAiJDAiIHwgJHtTRUQtc2VkfSAnc3xbXi9dKiR8fCdgL2J1aWxkLWF1eC9mdW5jbGliLnNoCisjCisjIElmIHlvdSBuZWVkIHRvIG92ZXJyaWRlIGFueSBvZiB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCB2YXJpYWJsZQorIyBzZXR0aW5ncywgZG8gdGhhdCBiZWZvcmUgZXZhbHVhdGluZyB0aGlzIGZpbGUuCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFNoZWxsIG5vcm1hbGlzYXRpb24uICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIFNvbWUgc2hlbGxzIG5lZWQgYSBsaXR0bGUgaGVscCB0byBiZSBhcyBCb3VybmUgY29tcGF0aWJsZSBhcyBwb3NzaWJsZS4KKyMgQmVmb3JlIGRvaW5nIGFueXRoaW5nIGVsc2UsIG1ha2Ugc3VyZSBhbGwgdGhhdCBoZWxwIGhhcyBiZWVuIHByb3ZpZGVkIQorCitEVUFMQ0FTRT0xOyBleHBvcnQgRFVBTENBU0UgIyBmb3IgTUtTIHNoCitpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iICYmIChlbXVsYXRlIHNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgogICBlbXVsYXRlIHNoCiAgIE5VTExDTUQ9OgotICAjIFpzaCAzLnggYW5kIDQueCBwZXJmb3JtcyB3b3JkIHNwbGl0dGluZyBvbiAkezErIiRAIn0sIHdoaWNoCisgICMgUHJlLTQuMiB2ZXJzaW9ucyBvZiBac2ggZG8gd29yZCBzcGxpdHRpbmcgb24gJHsxKyIkQCJ9LCB3aGljaAogICAjIGlzIGNvbnRyYXJ5IHRvIG91ciB1c2FnZS4gIERpc2FibGUgdGhpcyBmZWF0dXJlLgogICBhbGlhcyAtZyAnJHsxKyIkQCJ9Jz0nIiRAIicKICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKIGVsc2UKLSAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICpwb3NpeCopIHNldCAtbyBwb3NpeDs7IGVzYWMKKyAgY2FzZSBgKHNldCAtbykgMj4vZGV2L251bGxgIGluICpwb3NpeCopIHNldCAtbyBwb3NpeCA7OyBlc2FjCiBmaQotQklOX1NIPXhwZzQ7IGV4cG9ydCBCSU5fU0ggIyBmb3IgVHJ1NjQKLURVQUxDQVNFPTE7IGV4cG9ydCBEVUFMQ0FTRSAjIGZvciBNS1Mgc2gKIAotIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgotZnVuY19mYWxsYmFja19lY2hvICgpCi17Ci0gIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCi0kMQotX0xURUNIT19FT0YnCi19Ci0KLSMgTkxTIG51aXNhbmNlczogV2Ugc2F2ZSB0aGUgb2xkIHZhbHVlcyB0byByZXN0b3JlIGR1cmluZyBleGVjdXRlIG1vZGUuCi1sdF91c2VyX2xvY2FsZT0KLWx0X3NhZmVfbG9jYWxlPQotZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCisjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgaW4gY2FzZSB0aGV5IGFyZSByZXF1aXJlZCBsYXRlci4KK19HX3VzZXJfbG9jYWxlPQorX0dfc2FmZV9sb2NhbGU9Citmb3IgX0dfdmFyIGluIExBTkcgTEFOR1VBR0UgTENfQUxMIExDX0NUWVBFIExDX0NPTExBVEUgTENfTUVTU0FHRVMKIGRvCi0gIGV2YWwgImlmIHRlc3QgXCJcJHskbHRfdmFyK3NldH1cIiA9IHNldDsgdGhlbgotICAgICAgICAgIHNhdmVfJGx0X3Zhcj1cJCRsdF92YXIKLSAgICAgICAgICAkbHRfdmFyPUMKLQkgIGV4cG9ydCAkbHRfdmFyCi0JICBsdF91c2VyX2xvY2FsZT1cIiRsdF92YXI9XFxcJHNhdmVfXCRsdF92YXI7IFwkbHRfdXNlcl9sb2NhbGVcIgotCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgorICBldmFsICJpZiB0ZXN0IHNldCA9IFwiXCR7JF9HX3ZhcitzZXR9XCI7IHRoZW4KKyAgICAgICAgICBzYXZlXyRfR192YXI9XCQkX0dfdmFyCisgICAgICAgICAgJF9HX3Zhcj1DCisJICBleHBvcnQgJF9HX3ZhcgorCSAgX0dfdXNlcl9sb2NhbGU9XCIkX0dfdmFyPVxcXCRzYXZlX1wkX0dfdmFyOyBcJF9HX3VzZXJfbG9jYWxlXCIKKwkgIF9HX3NhZmVfbG9jYWxlPVwiJF9HX3Zhcj1DOyBcJF9HX3NhZmVfbG9jYWxlXCIKIAlmaSIKIGRvbmUKLUxDX0FMTD1DCi1MQU5HVUFHRT1DCi1leHBvcnQgTEFOR1VBR0UgTENfQUxMCiAKLSRsdF91bnNldCBDRFBBVEgKKyMgQ0RQQVRILgorKHVuc2V0IENEUEFUSCkgPi9kZXYvbnVsbCAyPiYxICYmIHVuc2V0IENEUEFUSAogCisjIE1ha2Ugc3VyZSBJRlMgaGFzIGEgc2Vuc2libGUgZGVmYXVsdAorc3A9JyAnCitubD0nCisnCitJRlM9IiRzcAkkbmwiCisKKyMgVGhlcmUgYXJlIGFwcGFyZW50bHkgc29tZSByZXRhcmRlZCBzeXN0ZW1zIHRoYXQgdXNlICc7JyBhcyBhIFBBVEggc2VwYXJhdG9yIQoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgUEFUSF9TRVBBUkFUT1I9OgorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSAmJiB7CisgICAgKFBBVEg9Jy9iaW46L2Jpbic7IEZQQVRIPSRQQVRIOyBzaCAtYyA6KSA+L2Rldi9udWxsIDI+JjEgfHwKKyAgICAgIFBBVEhfU0VQQVJBVE9SPSc7JworICB9CitmaQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgTG9jYXRlIGNvbW1hbmQgdXRpbGl0aWVzLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisKKyMgZnVuY19leGVjdXRhYmxlX3AgRklMRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHRoYXQgRklMRSBpcyBhbiBleGVjdXRhYmxlIHJlZ3VsYXIgZmlsZS4KK2Z1bmNfZXhlY3V0YWJsZV9wICgpCit7CisgICAgdGVzdCAtZiAiJDEiICYmIHRlc3QgLXggIiQxIgorfQorCisKKyMgZnVuY19wYXRoX3Byb2dzIFBST0dTX0xJU1QgQ0hFQ0tfRlVOQyBbUEFUSF0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2VhcmNoIGZvciBlaXRoZXIgYSBwcm9ncmFtIHRoYXQgcmVzcG9uZHMgdG8gLS12ZXJzaW9uIHdpdGggb3V0cHV0CisjIGNvbnRhaW5pbmcgIkdOVSIsIG9yIGVsc2UgcmV0dXJuZWQgYnkgQ0hFQ0tfRlVOQyBvdGhlcndpc2UsIGJ5CisjIHRyeWluZyBhbGwgdGhlIGRpcmVjdG9yaWVzIGluIFBBVEggd2l0aCBlYWNoIG9mIHRoZSBlbGVtZW50cyBvZgorIyBQUk9HU19MSVNULgorIworIyBDSEVDS19GVU5DIHNob3VsZCBhY2NlcHQgdGhlIHBhdGggdG8gYSBjYW5kaWRhdGUgcHJvZ3JhbSwgYW5kCisjIHNldCAkZnVuY19jaGVja19wcm9nX3Jlc3VsdCBpZiBpdCB0cnVuY2F0ZXMgaXRzIG91dHB1dCBsZXNzIHRoYW4KKyMgJF9HX3BhdGhfcHJvZ19tYXggY2hhcmFjdGVycy4KK2Z1bmNfcGF0aF9wcm9ncyAoKQoreworICAgIF9HX3Byb2dzX2xpc3Q9JDEKKyAgICBfR19jaGVja19mdW5jPSQyCisgICAgX0dfUEFUSD0kezMtIiRQQVRIIn0KKworICAgIF9HX3BhdGhfcHJvZ19tYXg9MAorICAgIF9HX3BhdGhfcHJvZ19mb3VuZD1mYWxzZQorICAgIF9HX3NhdmVfSUZTPSRJRlM7IElGUz0ke1BBVEhfU0VQQVJBVE9SLTp9CisgICAgZm9yIF9HX2RpciBpbiAkX0dfUEFUSDsgZG8KKyAgICAgIElGUz0kX0dfc2F2ZV9JRlMKKyAgICAgIHRlc3QgLXogIiRfR19kaXIiICYmIF9HX2Rpcj0uCisgICAgICBmb3IgX0dfcHJvZ19uYW1lIGluICRfR19wcm9nc19saXN0OyBkbworICAgICAgICBmb3IgX2V4ZWV4dCBpbiAnJyAuRVhFOyBkbworICAgICAgICAgIF9HX3BhdGhfcHJvZz0kX0dfZGlyLyRfR19wcm9nX25hbWUkX2V4ZWV4dAorICAgICAgICAgIGZ1bmNfZXhlY3V0YWJsZV9wICIkX0dfcGF0aF9wcm9nIiB8fCBjb250aW51ZQorICAgICAgICAgIGNhc2UgYCIkX0dfcGF0aF9wcm9nIiAtLXZlcnNpb24gMj4mMWAgaW4KKyAgICAgICAgICAgICpHTlUqKSBmdW5jX3BhdGhfcHJvZ3NfcmVzdWx0PSRfR19wYXRoX3Byb2cgX0dfcGF0aF9wcm9nX2ZvdW5kPTogOzsKKyAgICAgICAgICAgICopICAgICAkX0dfY2hlY2tfZnVuYyAkX0dfcGF0aF9wcm9nCisJCSAgIGZ1bmNfcGF0aF9wcm9nc19yZXN1bHQ9JGZ1bmNfY2hlY2tfcHJvZ19yZXN1bHQKKwkJICAgOzsKKyAgICAgICAgICBlc2FjCisgICAgICAgICAgJF9HX3BhdGhfcHJvZ19mb3VuZCAmJiBicmVhayAzCisgICAgICAgIGRvbmUKKyAgICAgIGRvbmUKKyAgICBkb25lCisgICAgSUZTPSRfR19zYXZlX0lGUworICAgIHRlc3QgLXogIiRmdW5jX3BhdGhfcHJvZ3NfcmVzdWx0IiAmJiB7CisgICAgICBlY2hvICJubyBhY2NlcHRhYmxlIHNlZCBjb3VsZCBiZSBmb3VuZCBpbiBcJFBBVEgiID4mMgorICAgICAgZXhpdCAxCisgICAgfQorfQorCisKKyMgV2Ugd2FudCB0byBiZSBhYmxlIHRvIHVzZSB0aGUgZnVuY3Rpb25zIGluIHRoaXMgZmlsZSBiZWZvcmUgY29uZmlndXJlCisjIGhhcyBmaWd1cmVkIG91dCB3aGVyZSB0aGUgYmVzdCBiaW5hcmllcyBhcmUga2VwdCwgd2hpY2ggbWVhbnMgd2UgaGF2ZQorIyB0byBzZWFyY2ggZm9yIHRoZW0gb3Vyc2VsdmVzIC0gZXhjZXB0IHdoZW4gdGhlIHJlc3VsdHMgYXJlIGFscmVhZHkgc2V0CisjIHdoZXJlIHdlIHNraXAgdGhlIHNlYXJjaGVzLgorCisjIFVubGVzcyB0aGUgdXNlciBvdmVycmlkZXMgYnkgc2V0dGluZyBTRUQsIHNlYXJjaCB0aGUgcGF0aCBmb3IgZWl0aGVyIEdOVQorIyBzZWQsIG9yIHRoZSBzZWQgdGhhdCB0cnVuY2F0ZXMgaXRzIG91dHB1dCB0aGUgbGVhc3QuCit0ZXN0IC16ICIkU0VEIiAmJiB7CisgIF9HX3NlZF9zY3JpcHQ9cy9hYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYWFhYS9iYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmJiYmIvCisgIGZvciBfR19pIGluIDEgMiAzIDQgNSA2IDc7IGRvCisgICAgX0dfc2VkX3NjcmlwdD0kX0dfc2VkX3NjcmlwdCRubCRfR19zZWRfc2NyaXB0CisgIGRvbmUKKyAgZWNobyAiJF9HX3NlZF9zY3JpcHQiIDI+L2Rldi9udWxsIHwgc2VkIDk5cSA+Y29uZnRlc3Quc2VkCisgIF9HX3NlZF9zY3JpcHQ9CisKKyAgZnVuY19jaGVja19wcm9nX3NlZCAoKQorICB7CisgICAgX0dfcGF0aF9wcm9nPSQxCisKKyAgICBfR19jb3VudD0wCisgICAgcHJpbnRmIDAxMjM0NTY3ODkgPmNvbmZ0ZXN0LmluCisgICAgd2hpbGUgOgorICAgIGRvCisgICAgICBjYXQgY29uZnRlc3QuaW4gY29uZnRlc3QuaW4gPmNvbmZ0ZXN0LnRtcAorICAgICAgbXYgY29uZnRlc3QudG1wIGNvbmZ0ZXN0LmluCisgICAgICBjcCBjb25mdGVzdC5pbiBjb25mdGVzdC5ubAorICAgICAgZWNobyAnJyA+PiBjb25mdGVzdC5ubAorICAgICAgIiRfR19wYXRoX3Byb2ciIC1mIGNvbmZ0ZXN0LnNlZCA8Y29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgICAgZGlmZiBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgICBfR19jb3VudD1gZXhwciAkX0dfY291bnQgKyAxYAorICAgICAgaWYgdGVzdCAiJF9HX2NvdW50IiAtZ3QgIiRfR19wYXRoX3Byb2dfbWF4IjsgdGhlbgorICAgICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKKyAgICAgICAgZnVuY19jaGVja19wcm9nX3Jlc3VsdD0kX0dfcGF0aF9wcm9nCisgICAgICAgIF9HX3BhdGhfcHJvZ19tYXg9JF9HX2NvdW50CisgICAgICBmaQorICAgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgICAgdGVzdCAxMCAtbHQgIiRfR19jb3VudCIgJiYgYnJlYWsKKyAgICBkb25lCisgICAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dAorICB9CisKKyAgZnVuY19wYXRoX3Byb2dzICJzZWQgZ3NlZCIgZnVuY19jaGVja19wcm9nX3NlZCAkUEFUSDovdXNyL3hwZzQvYmluCisgIHJtIC1mIGNvbmZ0ZXN0LnNlZAorICBTRUQ9JGZ1bmNfcGF0aF9wcm9nc19yZXN1bHQKK30KKworCisjIFVubGVzcyB0aGUgdXNlciBvdmVycmlkZXMgYnkgc2V0dGluZyBHUkVQLCBzZWFyY2ggdGhlIHBhdGggZm9yIGVpdGhlciBHTlUKKyMgZ3JlcCwgb3IgdGhlIGdyZXAgdGhhdCB0cnVuY2F0ZXMgaXRzIG91dHB1dCB0aGUgbGVhc3QuCit0ZXN0IC16ICIkR1JFUCIgJiYgeworICBmdW5jX2NoZWNrX3Byb2dfZ3JlcCAoKQorICB7CisgICAgX0dfcGF0aF9wcm9nPSQxCisKKyAgICBfR19jb3VudD0wCisgICAgX0dfcGF0aF9wcm9nX21heD0wCisgICAgcHJpbnRmIDAxMjM0NTY3ODkgPmNvbmZ0ZXN0LmluCisgICAgd2hpbGUgOgorICAgIGRvCisgICAgICBjYXQgY29uZnRlc3QuaW4gY29uZnRlc3QuaW4gPmNvbmZ0ZXN0LnRtcAorICAgICAgbXYgY29uZnRlc3QudG1wIGNvbmZ0ZXN0LmluCisgICAgICBjcCBjb25mdGVzdC5pbiBjb25mdGVzdC5ubAorICAgICAgZWNobyAnR1JFUCcgPj4gY29uZnRlc3QubmwKKyAgICAgICIkX0dfcGF0aF9wcm9nIiAtZSAnR1JFUCQnIC1lICctKGNhbm5vdCBtYXRjaCktJyA8Y29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCAyPi9kZXYvbnVsbCB8fCBicmVhaworICAgICAgZGlmZiBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgPi9kZXYvbnVsbCAyPiYxIHx8IGJyZWFrCisgICAgICBfR19jb3VudD1gZXhwciAkX0dfY291bnQgKyAxYAorICAgICAgaWYgdGVzdCAiJF9HX2NvdW50IiAtZ3QgIiRfR19wYXRoX3Byb2dfbWF4IjsgdGhlbgorICAgICAgICAjIEJlc3Qgb25lIHNvIGZhciwgc2F2ZSBpdCBidXQga2VlcCBsb29raW5nIGZvciBhIGJldHRlciBvbmUKKyAgICAgICAgZnVuY19jaGVja19wcm9nX3Jlc3VsdD0kX0dfcGF0aF9wcm9nCisgICAgICAgIF9HX3BhdGhfcHJvZ19tYXg9JF9HX2NvdW50CisgICAgICBmaQorICAgICAgIyAxMCooMl4xMCkgY2hhcnMgYXMgaW5wdXQgc2VlbXMgbW9yZSB0aGFuIGVub3VnaAorICAgICAgdGVzdCAxMCAtbHQgIiRfR19jb3VudCIgJiYgYnJlYWsKKyAgICBkb25lCisgICAgcm0gLWYgY29uZnRlc3QuaW4gY29uZnRlc3QudG1wIGNvbmZ0ZXN0Lm5sIGNvbmZ0ZXN0Lm91dAorICB9CisKKyAgZnVuY19wYXRoX3Byb2dzICJncmVwIGdncmVwIiBmdW5jX2NoZWNrX3Byb2dfZ3JlcCAkUEFUSDovdXNyL3hwZzQvYmluCisgIEdSRVA9JGZ1bmNfcGF0aF9wcm9nc19yZXN1bHQKK30KKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBVc2VyIG92ZXJyaWRhYmxlIGNvbW1hbmQgcGF0aHMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgQWxsIHVwcGVyY2FzZSB2YXJpYWJsZSBuYW1lcyBhcmUgdXNlZCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgVGhlc2UKKyMgdmFyaWFibGVzIGNhbiBiZSBvdmVycmlkZGVuIGJ5IHRoZSB1c2VyIGJlZm9yZSBjYWxsaW5nIGEgc2NyaXB0IHRoYXQKKyMgdXNlcyB0aGVtIGlmIGEgc3VpdGFibGUgY29tbWFuZCBvZiB0aGF0IG5hbWUgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlCisjIGluIHRoZSBjb21tYW5kIHNlYXJjaCBQQVRILgorCis6ICR7Q1A9ImNwIC1mIn0KKzogJHtFQ0hPPSJwcmludGYgJXNcbiJ9Cis6ICR7RUdSRVA9IiRHUkVQIC1FIn0KKzogJHtGR1JFUD0iJEdSRVAgLUYifQorOiAke0xOX1M9ImxuIC1zIn0KKzogJHtNQUtFPSJtYWtlIn0KKzogJHtNS0RJUj0ibWtkaXIifQorOiAke01WPSJtdiAtZiJ9Cis6ICR7Uk09InJtIC1mIn0KKzogJHtTSEVMTD0iJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0ifQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBVc2VmdWwgc2VkIHNuaXBwZXRzLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworc2VkX2Rpcm5hbWU9J3N8L1teL10qJHx8Jworc2VkX2Jhc2VuYW1lPSdzfF4uKi98fCcKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcworIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KK3NlZF9xdW90ZV9zdWJzdD0nc3xcKFtgIiRcXF1cKXxcXFwxfGcnCisKKyMgU2FtZSBhcyBhYm92ZSwgYnV0IGRvIG5vdCBxdW90ZSB2YXJpYWJsZSByZWZlcmVuY2VzLgorc2VkX2RvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKKworIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKKyMgc3RyaW5nIGxpdGVyYWxseS4KK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3N8W10uW14kXFwqXC9dfFxcJnxnJworCisjIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAorIyB0aGF0IGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucworIyAoZXNjYXBlZCkgYmFja3NsYXNoZXMuICBBIHZlcnkgbmFpdmUgaW1wbGVtZW50YXRpb24uCitzZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCisKKyMgUmUtJ1wnIHBhcmFtZXRlciBleHBhbnNpb25zIGluIG91dHB1dCBvZiBzZWRfZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQKKyMgd2VyZSAnXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mICdcJyBwcmVjZWRlZCBhCisjICckJyBpbiBpbnB1dCB0byBzZWRfZG91YmxlX3F1b3RlX3N1YnN0LCB0aGF0ICckJyB3YXMgcHJvdGVjdGVkIGZyb20KKyMgZXhwYW5zaW9uLiAgU2luY2UgZWFjaCBpbnB1dCAnXCcgaXMgbm93IHR3byAnXCdzLCBsb29rIGZvciBhbnkgbnVtYmVyCisjIG9mIHJ1bnMgb2YgZm91ciAnXCdzIGZvbGxvd2VkIGJ5IHR3byAnXCdzIGFuZCB0aGVuIGEgJyQnLiAgJ1wnIHRoYXQgJyQnLgorX0dfYnM9J1xcJworX0dfYnMyPSdcXFxcJworX0dfYnM0PSdcXFxcXFxcXCcKK19HX2RvbGxhcj0nXCQnCitzZWRfZG91YmxlX2JhY2tzbGFzaD0iXAorICBzLyRfR19iczQvJlxcCisvZworICBzL14kX0dfYnMyJF9HX2RvbGxhci8kX0dfYnMmLworICBzL1xcKFteJF9HX2JzXVxcKSRfR19iczIkX0dfZG9sbGFyL1xcMSRfR19iczIkX0dfYnMkX0dfZG9sbGFyL2cKKyAgcy9cbi8vZyIKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgR2xvYmFsIHZhcmlhYmxlcy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgRXhjZXB0IGZvciB0aGUgZ2xvYmFsIHZhcmlhYmxlcyBleHBsaWNpdGx5IGxpc3RlZCBiZWxvdywgdGhlIGZvbGxvd2luZworIyBmdW5jdGlvbnMgaW4gdGhlICdeZnVuY18nIG5hbWVzcGFjZSwgYW5kIHRoZSAnXnJlcXVpcmVfJyBuYW1lc3BhY2UKKyMgdmFyaWFibGVzIGluaXRpYWxpc2VkIGluIHRoZSAnUmVzb3VyY2UgbWFuYWdlbWVudCcgc2VjdGlvbiwgc291cmNpbmcKKyMgdGhpcyBmaWxlIHdpbGwgbm90IHBvbGx1dGUgeW91ciBnbG9iYWwgbmFtZXNwYWNlIHdpdGggYW55dGhpbmcKKyMgZWxzZS4gVGhlcmUncyBubyBwb3J0YWJsZSB3YXkgdG8gc2NvcGUgdmFyaWFibGVzIGluIEJvdXJuZSBzaGVsbAorIyB0aG91Z2gsIHNvIGFjdHVhbGx5IHJ1bm5pbmcgdGhlc2UgZnVuY3Rpb25zIHdpbGwgc29tZXRpbWVzIHBsYWNlCisjIHJlc3VsdHMgaW50byBhIHZhcmlhYmxlIG5hbWVkIGFmdGVyIHRoZSBmdW5jdGlvbiwgYW5kIG9mdGVuIHVzZQorIyB0ZW1wb3JhcnkgdmFyaWFibGVzIGluIHRoZSAnXl9HXycgbmFtZXNwYWNlLiBJZiB5b3UgYXJlIGNhcmVmdWwgdG8KKyMgYXZvaWQgdXNpbmcgdGhvc2UgbmFtZXNwYWNlcyBjYXN1YWxseSBpbiB5b3VyIHNvdXJjaW5nIHNjcmlwdCwgdGhpbmdzCisjIHNob3VsZCBjb250aW51ZSB0byB3b3JrIGFzIHlvdSBleHBlY3QuIEFuZCwgb2YgY291cnNlLCB5b3UgY2FuIGZyZWVseQorIyBvdmVyd3JpdGUgYW55IG9mIHRoZSBmdW5jdGlvbnMgb3IgdmFyaWFibGVzIGRlZmluZWQgaGVyZSBiZWZvcmUKKyMgY2FsbGluZyBhbnl0aGluZyB0byBjdXN0b21pemUgdGhlbS4KKworRVhJVF9TVUNDRVNTPTAKK0VYSVRfRkFJTFVSRT0xCitFWElUX01JU01BVENIPTYzICAjICQ/ID0gNjMgaXMgdXNlZCB0byBpbmRpY2F0ZSB2ZXJzaW9uIG1pc21hdGNoIHRvIG1pc3NpbmcuCitFWElUX1NLSVA9NzcJICAjICQ/ID0gNzcgaXMgdXNlZCB0byBpbmRpY2F0ZSBhIHNraXBwZWQgdGVzdCB0byBhdXRvbWFrZS4KKworIyBBbGxvdyBvdmVycmlkaW5nLCBlZyBhc3N1bWluZyB0aGF0IHlvdSBmb2xsb3cgdGhlIGNvbnZlbnRpb24gb2YKKyMgcHV0dGluZyAnJGRlYnVnX2NtZCcgYXQgdGhlIHN0YXJ0IG9mIGFsbCB5b3VyIGZ1bmN0aW9ucywgeW91IGNhbiBnZXQKKyMgYmFzaCB0byBzaG93IGZ1bmN0aW9uIGNhbGwgdHJhY2Ugd2l0aDoKKyMKKyMgICAgZGVidWdfY21kPSdldmFsIGVjaG8gIiR7RlVOQ05BTUVbMF19ICQqIiA+JjInIGJhc2ggeW91ci1zY3JpcHQtbmFtZQorZGVidWdfY21kPSR7ZGVidWdfY21kLSI6In0KK2V4aXRfY21kPToKKworIyBCeSBjb252ZW50aW9uLCBmaW5pc2ggeW91ciBzY3JpcHQgd2l0aDoKKyMKKyMgICAgZXhpdCAkZXhpdF9zdGF0dXMKKyMKKyMgc28gdGhhdCB5b3UgY2FuIHNldCBleGl0X3N0YXR1cyB0byBub24temVybyBpZiB5b3Ugd2FudCB0byBpbmRpY2F0ZQorIyBzb21ldGhpbmcgd2VudCB3cm9uZyBkdXJpbmcgZXhlY3V0aW9uIHdpdGhvdXQgYWN0dWFsbHkgYmFpbGluZyBvdXQgYXQKKyMgdGhlIHBvaW50IG9mIGZhaWx1cmUuCitleGl0X3N0YXR1cz0kRVhJVF9TVUNDRVNTCiAKICMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAogIyBpcyBrc2ggYnV0IHdoZW4gdGhlIHNoZWxsIGlzIGludm9rZWQgYXMgInNoIiBhbmQgdGhlIGN1cnJlbnQgdmFsdWUgb2YKICMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCiAjIHBvc2l0aW9uYWwgcGFyYW1ldGVyICQwLCB3aXRoaW4gYSBmdW5jdGlvbiBjYWxsLCBpcyB0aGUgbmFtZSBvZiB0aGUKICMgZnVuY3Rpb24uCi1wcm9ncGF0aD0iJDAiCitwcm9ncGF0aD0kMAorCisjIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbS4KK3Byb2duYW1lPWAkRUNITyAiJHByb2dwYXRoIiB8JFNFRCAiJHNlZF9iYXNlbmFtZSJgCisKKyMgTWFrZSBzdXJlIHdlIGhhdmUgYW4gYWJzb2x1dGUgcHJvZ3BhdGggZm9yIHJlZXhlY3V0aW9uOgorY2FzZSAkcHJvZ3BhdGggaW4KKyAgW1xcL10qfFtBLVphLXpdOlxcKikgOzsKKyAgKltcXC9dKikKKyAgICAgcHJvZ2Rpcj1gJEVDSE8gIiRwcm9ncGF0aCIgfCRTRUQgIiRzZWRfZGlybmFtZSJgCisgICAgIHByb2dkaXI9YGNkICIkcHJvZ2RpciIgJiYgcHdkYAorICAgICBwcm9ncGF0aD0kcHJvZ2Rpci8kcHJvZ25hbWUKKyAgICAgOzsKKyAgKikKKyAgICAgX0dfSUZTPSRJRlMKKyAgICAgSUZTPSR7UEFUSF9TRVBBUkFUT1ItOn0KKyAgICAgZm9yIHByb2dkaXIgaW4gJFBBVEg7IGRvCisgICAgICAgSUZTPSRfR19JRlMKKyAgICAgICB0ZXN0IC14ICIkcHJvZ2Rpci8kcHJvZ25hbWUiICYmIGJyZWFrCisgICAgIGRvbmUKKyAgICAgSUZTPSRfR19JRlMKKyAgICAgdGVzdCAtbiAiJHByb2dkaXIiIHx8IHByb2dkaXI9YHB3ZGAKKyAgICAgcHJvZ3BhdGg9JHByb2dkaXIvJHByb2duYW1lCisgICAgIDs7Citlc2FjCiAKIAorIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFN0YW5kYXJkIG9wdGlvbnMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIwogCi06ICR7Q1A9ImNwIC1mIn0KLXRlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQotOiAke01BS0U9Im1ha2UifQotOiAke01LRElSPSJta2RpciJ9Ci06ICR7TVY9Im12IC1mIn0KLTogJHtSTT0icm0gLWYifQotOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9Ci06ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KKyMgVGhlIGZvbGxvd2luZyBvcHRpb25zIGFmZmVjdCB0aGUgb3BlcmF0aW9uIG9mIHRoZSBmdW5jdGlvbnMgZGVmaW5lZAorIyBiZWxvdywgYW5kIHNob3VsZCBiZSBzZXQgYXBwcm9wcmlhdGVseSBkZXBlbmRpbmcgb24gcnVuLXRpbWUgcGFyYS0KKyMgbWV0ZXJzIHBhc3NlZCBvbiB0aGUgY29tbWFuZCBsaW5lLgogCi0jIEdsb2JhbCB2YXJpYWJsZXM6Ci1FWElUX1NVQ0NFU1M9MAotRVhJVF9GQUlMVVJFPTEKLUVYSVRfTUlTTUFUQ0g9NjMgICMgJD8gPSA2MyBpcyB1c2VkIHRvIGluZGljYXRlIHZlcnNpb24gbWlzbWF0Y2ggdG8gbWlzc2luZy4KLUVYSVRfU0tJUD03NwkgICMgJD8gPSA3NyBpcyB1c2VkIHRvIGluZGljYXRlIGEgc2tpcHBlZCB0ZXN0IHRvIGF1dG9tYWtlLgorb3B0X2RyeV9ydW49ZmFsc2UKK29wdF9xdWlldD1mYWxzZQorb3B0X3ZlcmJvc2U9ZmFsc2UKIAotZXhpdF9zdGF0dXM9JEVYSVRfU1VDQ0VTUworIyBDYXRlZ29yaWVzICdhbGwnIGFuZCAnbm9uZScgYXJlIGFsd2F5cyBhdmFpbGFibGUuICBBcHBlbmQgYW55IG90aGVycworIyB5b3Ugd2lsbCBwYXNzIGFzIHRoZSBmaXJzdCBhcmd1bWVudCB0byBmdW5jX3dhcm5pbmcgZnJvbSB5b3VyIG93bgorIyBjb2RlLgord2FybmluZ19jYXRlZ29yaWVzPQogCi0jIE1ha2Ugc3VyZSBJRlMgaGFzIGEgc2Vuc2libGUgZGVmYXVsdAotbHRfbmw9JwotJwotSUZTPSIgCSRsdF9ubCIKKyMgQnkgZGVmYXVsdCwgZGlzcGxheSB3YXJuaW5ncyBhY2NvcmRpbmcgdG8gJ29wdF93YXJuaW5nX3R5cGVzJy4gIFNldAorIyAnd2FybmluZ19mdW5jJyAgdG8gJzonIHRvIGVsaWRlIGFsbCB3YXJuaW5ncywgb3IgZnVuY19mYXRhbF9lcnJvciB0bworIyB0cmVhdCB0aGUgbmV4dCBkaXNwbGF5ZWQgd2FybmluZyBhcyBhIGZhdGFsIGVycm9yLgord2FybmluZ19mdW5jPWZ1bmNfd2Fybl9hbmRfY29udGludWUKIAotZGlybmFtZT0icywvW14vXSokLCwiCi1iYXNlbmFtZT0icyxeLiovLCwiCisjIFNldCB0byAnYWxsJyB0byBkaXNwbGF5IGFsbCB3YXJuaW5ncywgJ25vbmUnIHRvIHN1cHByZXNzIGFsbAorIyB3YXJuaW5ncywgb3IgYSBzcGFjZSBkZWxpbWl0ZWQgbGlzdCBvZiBzb21lIHN1YnNldCBvZgorIyAnd2FybmluZ19jYXRlZ29yaWVzJyB0byBkaXNwbGF5IG9ubHkgdGhlIGxpc3RlZCB3YXJuaW5ncy4KK29wdF93YXJuaW5nX3R5cGVzPWFsbAogCi0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIFJlc291cmNlIG1hbmFnZW1lbnQuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIFRoaXMgc2VjdGlvbiBjb250YWlucyBkZWZpbml0aW9ucyBmb3IgZnVuY3Rpb25zIHRoYXQgZWFjaCBlbnN1cmUgYQorIyBwYXJ0aWN1bGFyIHJlc291cmNlIChhIGZpbGUsIG9yIGEgbm9uLWVtcHR5IGNvbmZpZ3VyYXRpb24gdmFyaWFibGUgZm9yCisjIGV4YW1wbGUpIGlzIGF2YWlsYWJsZSwgYW5kIGlmIGFwcHJvcHJpYXRlIHRvIGV4dHJhY3QgZGVmYXVsdCB2YWx1ZXMKKyMgZnJvbSBwZXJ0aW5lbnQgcGFja2FnZSBmaWxlcy4gQ2FsbCB0aGVtIHVzaW5nIHRoZWlyIGFzc29jaWF0ZWQKKyMgJ3JlcXVpcmVfKicgdmFyaWFibGUgdG8gZW5zdXJlIHRoYXQgdGhleSBhcmUgZXhlY3V0ZWQsIGF0IG1vc3QsIG9uY2UuCisjCisjIEl0J3MgZW50aXJlbHkgZGVsaWJlcmF0ZSB0aGF0IGNhbGxpbmcgdGhlc2UgZnVuY3Rpb25zIGNhbiBzZXQKKyMgdmFyaWFibGVzIHRoYXQgZG9uJ3Qgb2JleSB0aGUgbmFtZXNwYWNlIGxpbWl0YXRpb25zIG9iZXllZCBieSB0aGUgcmVzdAorIyBvZiB0aGlzIGZpbGUsIGluIG9yZGVyIHRoYXQgdGhhdCB0aGV5IGJlIGFzIHVzZWZ1bCBhcyBwb3NzaWJsZSB0bworIyBjYWxsZXJzLgorCisKKyMgcmVxdWlyZV90ZXJtX2NvbG9ycworIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFsbG93IGRpc3BsYXkgb2YgYm9sZCB0ZXh0IG9uIHRlcm1pbmFscyB0aGF0IHN1cHBvcnQgaXQuCityZXF1aXJlX3Rlcm1fY29sb3JzPWZ1bmNfcmVxdWlyZV90ZXJtX2NvbG9ycworZnVuY19yZXF1aXJlX3Rlcm1fY29sb3JzICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgdGVzdCAtdCAxICYmIHsKKyAgICAgICMgQ09MT1JURVJNIGFuZCBVU0VfQU5TSV9DT0xPUlMgZW52aXJvbm1lbnQgdmFyaWFibGVzIHRha2UKKyAgICAgICMgcHJlY2VkZW5jZSwgYmVjYXVzZSBtb3N0IHRlcm1pbmZvIGRhdGFiYXNlcyBuZWdsZWN0IHRvIGRlc2NyaWJlCisgICAgICAjIHdoZXRoZXIgY29sb3Igc2VxdWVuY2VzIGFyZSBzdXBwb3J0ZWQuCisgICAgICB0ZXN0IC1uICIke0NPTE9SVEVSTStzZXR9IiAmJiA6ICR7VVNFX0FOU0lfQ09MT1JTPSIxIn0KKworICAgICAgaWYgdGVzdCAxID0gIiRVU0VfQU5TSV9DT0xPUlMiOyB0aGVuCisgICAgICAgICMgU3RhbmRhcmQgQU5TSSBlc2NhcGUgc2VxdWVuY2VzCisgICAgICAgIHRjX3Jlc2V0PScbWzBtJworICAgICAgICB0Y19ib2xkPScbWzFtJzsgICB0Y19zdGFuZG91dD0nG1s3bScKKyAgICAgICAgdGNfcmVkPScbWzMxbSc7ICAgdGNfZ3JlZW49JxtbMzJtJworICAgICAgICB0Y19ibHVlPScbWzM0bSc7ICB0Y19jeWFuPScbWzM2bScKKyAgICAgIGVsc2UKKyAgICAgICAgIyBPdGhlcndpc2UgdHJ1c3QgdGhlIHRlcm1pbmZvIGRhdGFiYXNlIGFmdGVyIGFsbC4KKyAgICAgICAgdGVzdCAtbiAiYHRwdXQgc2dyMCAyPi9kZXYvbnVsbGAiICYmIHsKKyAgICAgICAgICB0Y19yZXNldD1gdHB1dCBzZ3IwYAorICAgICAgICAgIHRlc3QgLW4gImB0cHV0IGJvbGQgMj4vZGV2L251bGxgIiAmJiB0Y19ib2xkPWB0cHV0IGJvbGRgCisgICAgICAgICAgdGNfc3RhbmRvdXQ9JHRjX2JvbGQKKyAgICAgICAgICB0ZXN0IC1uICJgdHB1dCBzbXNvIDI+L2Rldi9udWxsYCIgJiYgdGNfc3RhbmRvdXQ9YHRwdXQgc21zb2AKKyAgICAgICAgICB0ZXN0IC1uICJgdHB1dCBzZXRhZiAxIDI+L2Rldi9udWxsYCIgJiYgdGNfcmVkPWB0cHV0IHNldGFmIDFgCisgICAgICAgICAgdGVzdCAtbiAiYHRwdXQgc2V0YWYgMiAyPi9kZXYvbnVsbGAiICYmIHRjX2dyZWVuPWB0cHV0IHNldGFmIDJgCisgICAgICAgICAgdGVzdCAtbiAiYHRwdXQgc2V0YWYgNCAyPi9kZXYvbnVsbGAiICYmIHRjX2JsdWU9YHRwdXQgc2V0YWYgNGAKKyAgICAgICAgICB0ZXN0IC1uICJgdHB1dCBzZXRhZiA1IDI+L2Rldi9udWxsYCIgJiYgdGNfY3lhbj1gdHB1dCBzZXRhZiA1YAorICAgICAgICB9CisgICAgICBmaQorICAgIH0KKworICAgIHJlcXVpcmVfdGVybV9jb2xvcnM9OgorfQorCisKKyMjIC0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBGdW5jdGlvbiBsaWJyYXJ5LiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKworIyBUaGlzIHNlY3Rpb24gY29udGFpbnMgYSB2YXJpZXR5IG9mIHVzZWZ1bCBmdW5jdGlvbnMgdG8gY2FsbCBpbiB5b3VyCisjIHNjcmlwdHMuIFRha2Ugbm90ZSBvZiB0aGUgcG9ydGFibGUgd3JhcHBlcnMgZm9yIGZlYXR1cmVzIHByb3ZpZGVkIGJ5CisjIHNvbWUgbW9kZXJuIHNoZWxscywgd2hpY2ggd2lsbCBmYWxsIGJhY2sgdG8gc2xvd2VyIGVxdWl2YWxlbnRzIG9uCisjIGxlc3MgZmVhdHVyZWZ1bCBzaGVsbHMuCisKKworIyBmdW5jX2FwcGVuZCBWQVIgVkFMVUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFwcGVuZCBWQUxVRSBvbnRvIHRoZSBleGlzdGluZyBjb250ZW50cyBvZiBWQVIuCisKKyAgIyBXZSBzaG91bGQgdHJ5IHRvIG1pbmltaXNlIGZvcmtzLCBlc3BlY2lhbGx5IG9uIFdpbmRvd3Mgd2hlcmUgdGhleSBhcmUKKyAgIyB1bnJlYXNvbmFibHkgc2xvdywgc28gc2tpcCB0aGUgZmVhdHVyZSBwcm9iZXMgd2hlbiBiYXNoIG9yIHpzaCBhcmUKKyAgIyBiZWluZyB1c2VkOgorICBpZiB0ZXN0IHNldCA9ICIke0JBU0hfVkVSU0lPTitzZXR9JHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgorICAgIDogJHtfR19IQVZFX0FSSVRIX09QPSJ5ZXMifQorICAgIDogJHtfR19IQVZFX1hTSV9PUFM9InllcyJ9CisgICAgIyBUaGUgKz0gb3BlcmF0b3Igd2FzIGludHJvZHVjZWQgaW4gYmFzaCAzLjEKKyAgICBjYXNlICRCQVNIX1ZFUlNJT04gaW4KKyAgICAgIFsxMl0uKiB8IDMuMCB8IDMuMCopIDs7CisgICAgICAqKQorICAgICAgICA6ICR7X0dfSEFWRV9QTFVTRVFfT1A9InllcyJ9CisgICAgICAgIDs7CisgICAgZXNhYworICBmaQorCisgICMgX0dfSEFWRV9QTFVTRVFfT1AKKyAgIyBDYW4gYmUgZW1wdHksIGluIHdoaWNoIGNhc2UgdGhlIHNoZWxsIGlzIHByb2JlZCwgInllcyIgaWYgKz0gaXMKKyAgIyB1c2VhYmxlIG9yIGFueXRoaW5nIGVsc2UgaWYgaXQgZG9lcyBub3Qgd29yay4KKyAgdGVzdCAteiAiJF9HX0hBVkVfUExVU0VRX09QIiBcCisgICAgJiYgKGV2YWwgJ3g9YTsgeCs9IiBiIjsgdGVzdCAiYSBiIiA9ICIkeCInKSAyPi9kZXYvbnVsbCBcCisgICAgJiYgX0dfSEFWRV9QTFVTRVFfT1A9eWVzCisKK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX1BMVVNFUV9PUCIKK3RoZW4KKyAgIyBUaGlzIGlzIGFuIFhTSSBjb21wYXRpYmxlIHNoZWxsLCBhbGxvd2luZyBhIGZhc3RlciBpbXBsZW1lbnRhdGlvbi4uLgorICBldmFsICdmdW5jX2FwcGVuZCAoKQorICB7CisgICAgJGRlYnVnX2NtZAorCisgICAgZXZhbCAiJDErPVwkMiIKKyAgfScKK2Vsc2UKKyAgIyAuLi5vdGhlcndpc2UgZmFsbCBiYWNrIHRvIHVzaW5nIGV4cHIsIHdoaWNoIGlzIG9mdGVuIGEgc2hlbGwgYnVpbHRpbi4KKyAgZnVuY19hcHBlbmQgKCkKKyAgeworICAgICRkZWJ1Z19jbWQKKworICAgIGV2YWwgIiQxPVwkJDFcJDIiCisgIH0KK2ZpCisKKworIyBmdW5jX2FwcGVuZF9xdW90ZWQgVkFSIFZBTFVFCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCisjIGJ5IGEgc3BhY2UuCitpZiB0ZXN0IHllcyA9ICIkX0dfSEFWRV9QTFVTRVFfT1AiOyB0aGVuCisgIGV2YWwgJ2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQorICB7CisgICAgJGRlYnVnX2NtZAorCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJDIiCisgICAgZXZhbCAiJDErPVxcIFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgIH0nCitlbHNlCisgIGZ1bmNfYXBwZW5kX3F1b3RlZCAoKQorICB7CisgICAgJGRlYnVnX2NtZAorCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJDIiCisgICAgZXZhbCAiJDE9XCQkMVxcIFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgIH0KK2ZpCisKKworIyBmdW5jX2FwcGVuZF91bmlxIFZBUiBWQUxVRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBcHBlbmQgdW5pcXVlIFZBTFVFIG9udG8gdGhlIGV4aXN0aW5nIGNvbnRlbnRzIG9mIFZBUiwgYXNzdW1pbmcKKyMgZW50cmllcyBhcmUgZGVsaW1pdGVkIGJ5IHRoZSBmaXJzdCBjaGFyYWN0ZXIgb2YgVkFMVUUuICBGb3IgZXhhbXBsZToKKyMKKyMgICBmdW5jX2FwcGVuZF91bmlxIG9wdGlvbnMgIiAtLWFub3RoZXItb3B0aW9uIG9wdGlvbi1hcmd1bWVudCIKKyMKKyMgd2lsbCBvbmx5IGFwcGVuZCB0byAkb3B0aW9ucyBpZiAiIC0tYW5vdGhlci1vcHRpb24gb3B0aW9uLWFyZ3VtZW50ICIKKyMgaXMgbm90IGFscmVhZHkgcHJlc2VudCBzb21ld2hlcmUgaW4gJG9wdGlvbnMgYWxyZWFkeSAobm90ZSBzcGFjZXMgYXQKKyMgZWFjaCBlbmQgaW1wbGllZCBieSBsZWFkaW5nIHNwYWNlIGluIHNlY29uZCBhcmd1bWVudCkuCitmdW5jX2FwcGVuZF91bmlxICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgZXZhbCBfR19jdXJyZW50X3ZhbHVlPSdgJEVDSE8gJCckMSdgJworICAgIF9HX2RlbGltPWBleHByICIkMiIgOiAnXCguXCknYAorCisgICAgY2FzZSAkX0dfZGVsaW0kX0dfY3VycmVudF92YWx1ZSRfR19kZWxpbSBpbgorICAgICAgKiIkMiRfR19kZWxpbSIqKSA7OworICAgICAgKikgZnVuY19hcHBlbmQgIiRAIiA7OworICAgIGVzYWMKK30KKworCisjIGZ1bmNfYXJpdGggVEVSTS4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0IGZ1bmNfYXJpdGhfcmVzdWx0IHRvIHRoZSByZXN1bHQgb2YgZXZhbHVhdGluZyBURVJNcy4KKyAgdGVzdCAteiAiJF9HX0hBVkVfQVJJVEhfT1AiIFwKKyAgICAmJiAoZXZhbCAndGVzdCAyID0gJCgoIDEgKyAxICkpJykgMj4vZGV2L251bGwgXAorICAgICYmIF9HX0hBVkVfQVJJVEhfT1A9eWVzCisKK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX0FSSVRIX09QIjsgdGhlbgorICBldmFsICdmdW5jX2FyaXRoICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKyAgfScKK2Vsc2UKKyAgZnVuY19hcml0aCAoKQorICB7CisgICAgJGRlYnVnX2NtZAorCisgICAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKyAgfQorZmkKKworCisjIGZ1bmNfYmFzZW5hbWUgRklMRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0IGZ1bmNfYmFzZW5hbWVfcmVzdWx0IHRvIEZJTEUgd2l0aCBldmVyeXRoaW5nIHVwIHRvIGFuZCBpbmNsdWRpbmcKKyMgdGhlIGxhc3QgLyBzdHJpcHBlZC4KK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX1hTSV9PUFMiOyB0aGVuCisgICMgSWYgdGhpcyBzaGVsbCBzdXBwb3J0cyBzdWZmaXggcGF0dGVybiByZW1vdmFsLCB0aGVuIHVzZSBpdCB0byBhdm9pZAorICAjIGZvcmtpbmcuIEhpZGUgdGhlIGRlZmluaXRpb25zIHNpbmdsZSBxdW90ZXMgaW4gY2FzZSB0aGUgc2hlbGwgY2hva2VzCisgICMgb24gdW5zdXBwb3J0ZWQgc3ludGF4Li4uCisgIF9iPSdmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0kezEjIyovfScKKyAgX2Q9J2Nhc2UgJDEgaW4KKyAgICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSR7MSUvKn0kMiA7OworICAgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9JDMgICAgICAgIDs7CisgICAgICBlc2FjJworCitlbHNlCisgICMgLi4ub3RoZXJ3aXNlIGZhbGwgYmFjayB0byB1c2luZyBzZWQuCisgIF9iPSdmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiQxIiB8JFNFRCAiJHNlZF9iYXNlbmFtZSJgJworICBfZD0nZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiQxIiAgfCRTRUQgIiRzZWRfZGlybmFtZSJgCisgICAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkMSI7IHRoZW4KKyAgICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0kMworICAgICAgZWxzZQorICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2Rpcm5hbWVfcmVzdWx0ICIkMiIKKyAgICAgIGZpJworZmkKKworZXZhbCAnZnVuY19iYXNlbmFtZSAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgICciJF9iIicKK30nCisKKworIyBmdW5jX2Rpcm5hbWUgRklMRSBBUFBFTkQgTk9ORElSX1JFUExBQ0VNRU5UCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKICMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotZnVuY19kaXJuYW1lICgpCitldmFsICdmdW5jX2Rpcm5hbWUgKCkKIHsKLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0gICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLSAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0gICAgZWxzZQotICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotICAgIGZpCi19ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorICAgICRkZWJ1Z19jbWQKKworICAgICciJF9kIicKK30nCiAKIAotIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLWZ1bmNfYmFzZW5hbWUgKCkKLXsKLSAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLX0gIyBmdW5jX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotCi0KLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKyMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBGSUxFIEFQUEVORCBOT05ESVJfUkVQTEFDRU1FTlQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KICMgY2FsbDoKICMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCiAjICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKQEAgLTE5MCwyNjMgKzY5NywzMjcgQEAKICMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgogIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCiAjICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisjIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8gdGhlIGZ1bmN0aW9ucyBhYm92ZSBidXQgaW5zdGVhZAorIyBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KK2V2YWwgJ2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKIHsKLSAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKLSAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSAgICBlbHNlCi0gICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCisgICAgJGRlYnVnX2NtZAorCisgICAgJyIkX2IiJworICAgICciJF9kIicKK30nCisKKworIyBmdW5jX2VjaG8gQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZS4KK2Z1bmNfZWNobyAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIF9HX21lc3NhZ2U9JCoKKworICAgIGZ1bmNfZWNob19JRlM9JElGUworICAgIElGUz0kbmwKKyAgICBmb3IgX0dfbGluZSBpbiAkX0dfbWVzc2FnZTsgZG8KKyAgICAgIElGUz0kZnVuY19lY2hvX0lGUworICAgICAgJEVDSE8gIiRwcm9nbmFtZTogJF9HX2xpbmUiCisgICAgZG9uZQorICAgIElGUz0kZnVuY19lY2hvX0lGUworfQorCisKKyMgZnVuY19lY2hvX2FsbCBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgSW52b2tlICRFQ0hPIHdpdGggYWxsIGFyZ3MsIHNwYWNlLXNlcGFyYXRlZC4KK2Z1bmNfZWNob19hbGwgKCkKK3sKKyAgICAkRUNITyAiJCoiCit9CisKKworIyBmdW5jX2VjaG9faW5maXhfMSBJTkZJWCBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVjaG8gcHJvZ3JhbSBuYW1lLCBmb2xsb3dlZCBieSBJTkZJWCBvbiB0aGUgZmlyc3QgbGluZSwgd2l0aCBhbnkKKyMgYWRkaXRpb25hbCBsaW5lcyBub3Qgc2hvd2luZyBJTkZJWC4KK2Z1bmNfZWNob19pbmZpeF8xICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgJHJlcXVpcmVfdGVybV9jb2xvcnMKKworICAgIF9HX2luZml4PSQxOyBzaGlmdAorICAgIF9HX2luZGVudD0kX0dfaW5maXgKKyAgICBfR19wcmVmaXg9IiRwcm9nbmFtZTogJF9HX2luZml4OiAiCisgICAgX0dfbWVzc2FnZT0kKgorCisgICAgIyBTdHJpcCBjb2xvciBlc2NhcGUgc2VxdWVuY2VzIGJlZm9yZSBjb3VudGluZyBwcmludGFibGUgbGVuZ3RoCisgICAgZm9yIF9HX3RjIGluICIkdGNfcmVzZXQiICIkdGNfYm9sZCIgIiR0Y19zdGFuZG91dCIgIiR0Y19yZWQiICIkdGNfZ3JlZW4iICIkdGNfYmx1ZSIgIiR0Y19jeWFuIgorICAgIGRvCisgICAgICB0ZXN0IC1uICIkX0dfdGMiICYmIHsKKyAgICAgICAgX0dfZXNjX3RjPWAkRUNITyAiJF9HX3RjIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKKyAgICAgICAgX0dfaW5kZW50PWAkRUNITyAiJF9HX2luZGVudCIgfCAkU0VEICJzfCRfR19lc2NfdGN8fGciYAorICAgICAgfQorICAgIGRvbmUKKyAgICBfR19pbmRlbnQ9IiRwcm9nbmFtZTogImBlY2hvICIkX0dfaW5kZW50IiB8ICRTRUQgJ3N8LnwgfGcnYCIgICIgIyMgZXhjbHVkZSBmcm9tIHNjX3Byb2hpYml0X25lc3RlZF9xdW90ZXMKKworICAgIGZ1bmNfZWNob19pbmZpeF8xX0lGUz0kSUZTCisgICAgSUZTPSRubAorICAgIGZvciBfR19saW5lIGluICRfR19tZXNzYWdlOyBkbworICAgICAgSUZTPSRmdW5jX2VjaG9faW5maXhfMV9JRlMKKyAgICAgICRFQ0hPICIkX0dfcHJlZml4JHRjX2JvbGQkX0dfbGluZSR0Y19yZXNldCIgPiYyCisgICAgICBfR19wcmVmaXg9JF9HX2luZGVudAorICAgIGRvbmUKKyAgICBJRlM9JGZ1bmNfZWNob19pbmZpeF8xX0lGUworfQorCisKKyMgZnVuY19lcnJvciBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KK2Z1bmNfZXJyb3IgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICAkcmVxdWlyZV90ZXJtX2NvbG9ycworCisgICAgZnVuY19lY2hvX2luZml4XzEgIiAgJHRjX3N0YW5kb3V0JHt0Y19yZWR9ZXJyb3IkdGNfcmVzZXQiICIkKiIgPiYyCit9CisKKworIyBmdW5jX2ZhdGFsX2Vycm9yIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBhbmQgZXhpdC4KK2Z1bmNfZmF0YWxfZXJyb3IgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX2Vycm9yICIkKiIKKyAgICBleGl0ICRFWElUX0ZBSUxVUkUKK30KKworCisjIGZ1bmNfZ3JlcCBFWFBSRVNTSU9OIEZJTEVOQU1FCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIENoZWNrIHdoZXRoZXIgRVhQUkVTU0lPTiBtYXRjaGVzIGFueSBsaW5lIG9mIEZJTEVOQU1FLCB3aXRob3V0IG91dHB1dC4KK2Z1bmNfZ3JlcCAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgICRHUkVQICIkMSIgIiQyIiA+L2Rldi9udWxsIDI+JjEKK30KKworCisjIGZ1bmNfbGVuIFNUUklORworIyAtLS0tLS0tLS0tLS0tLS0KKyMgU2V0IGZ1bmNfbGVuX3Jlc3VsdCB0byB0aGUgbGVuZ3RoIG9mIFNUUklORy4gU1RSSU5HIG1heSBub3QKKyMgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKyAgdGVzdCAteiAiJF9HX0hBVkVfWFNJX09QUyIgXAorICAgICYmIChldmFsICd4PWEvYi9jOworICAgICAgdGVzdCA1YWEvYmIvY2MgPSAiJHsjeH0ke3glJS8qfSR7eCUvKn0ke3gjKi99JHt4IyMqL30iJykgMj4vZGV2L251bGwgXAorICAgICYmIF9HX0hBVkVfWFNJX09QUz15ZXMKKworaWYgdGVzdCB5ZXMgPSAiJF9HX0hBVkVfWFNJX09QUyI7IHRoZW4KKyAgZXZhbCAnZnVuY19sZW4gKCkKKyAgeworICAgICRkZWJ1Z19jbWQKKworICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorICB9JworZWxzZQorICBmdW5jX2xlbiAoKQorICB7CisgICAgJGRlYnVnX2NtZAorCisgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorICB9CitmaQorCisKKyMgZnVuY19ta2Rpcl9wIERJUkVDVE9SWS1QQVRICisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNYWtlIHN1cmUgdGhlIGVudGlyZSBwYXRoIHRvIERJUkVDVE9SWS1QQVRIIGlzIGF2YWlsYWJsZS4KK2Z1bmNfbWtkaXJfcCAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIF9HX2RpcmVjdG9yeV9wYXRoPSQxCisgICAgX0dfZGlyX2xpc3Q9CisKKyAgICBpZiB0ZXN0IC1uICIkX0dfZGlyZWN0b3J5X3BhdGgiICYmIHRlc3QgOiAhPSAiJG9wdF9kcnlfcnVuIjsgdGhlbgorCisgICAgICAjIFByb3RlY3QgZGlyZWN0b3J5IG5hbWVzIHN0YXJ0aW5nIHdpdGggJy0nCisgICAgICBjYXNlICRfR19kaXJlY3RvcnlfcGF0aCBpbgorICAgICAgICAtKikgX0dfZGlyZWN0b3J5X3BhdGg9Li8kX0dfZGlyZWN0b3J5X3BhdGggOzsKKyAgICAgIGVzYWMKKworICAgICAgIyBXaGlsZSBzb21lIHBvcnRpb24gb2YgRElSIGRvZXMgbm90IHlldCBleGlzdC4uLgorICAgICAgd2hpbGUgdGVzdCAhIC1kICIkX0dfZGlyZWN0b3J5X3BhdGgiOyBkbworICAgICAgICAjIC4uLm1ha2UgYSBsaXN0IGluIHRvcG1vc3QgZmlyc3Qgb3JkZXIuICBVc2UgYSBjb2xvbiBkZWxpbWl0ZWQKKwkjIGxpc3QgaW5jYXNlIHNvbWUgcG9ydGlvbiBvZiBwYXRoIGNvbnRhaW5zIHdoaXRlc3BhY2UuCisgICAgICAgIF9HX2Rpcl9saXN0PSRfR19kaXJlY3RvcnlfcGF0aDokX0dfZGlyX2xpc3QKKworICAgICAgICAjIElmIHRoZSBsYXN0IHBvcnRpb24gYWRkZWQgaGFzIG5vIHNsYXNoIGluIGl0LCB0aGUgbGlzdCBpcyBkb25lCisgICAgICAgIGNhc2UgJF9HX2RpcmVjdG9yeV9wYXRoIGluICovKikgOzsgKikgYnJlYWsgOzsgZXNhYworCisgICAgICAgICMgLi4ub3RoZXJ3aXNlIHRocm93IGF3YXkgdGhlIGNoaWxkIGRpcmVjdG9yeSBhbmQgbG9vcAorICAgICAgICBfR19kaXJlY3RvcnlfcGF0aD1gJEVDSE8gIiRfR19kaXJlY3RvcnlfcGF0aCIgfCAkU0VEIC1lICIkc2VkX2Rpcm5hbWUiYAorICAgICAgZG9uZQorICAgICAgX0dfZGlyX2xpc3Q9YCRFQ0hPICIkX0dfZGlyX2xpc3QiIHwgJFNFRCAnc3w6KiR8fCdgCisKKyAgICAgIGZ1bmNfbWtkaXJfcF9JRlM9JElGUzsgSUZTPToKKyAgICAgIGZvciBfR19kaXIgaW4gJF9HX2Rpcl9saXN0OyBkbworCUlGUz0kZnVuY19ta2Rpcl9wX0lGUworICAgICAgICAjIG1rZGlyIGNhbiBmYWlsIHdpdGggYSAnRmlsZSBleGlzdCcgZXJyb3IgaWYgdHdvIHByb2Nlc3NlcworICAgICAgICAjIHRyeSB0byBjcmVhdGUgb25lIG9mIHRoZSBkaXJlY3RvcmllcyBjb25jdXJyZW50bHkuICBEb24ndAorICAgICAgICAjIHN0b3AgaW4gdGhhdCBjYXNlIQorICAgICAgICAkTUtESVIgIiRfR19kaXIiIDI+L2Rldi9udWxsIHx8IDoKKyAgICAgIGRvbmUKKyAgICAgIElGUz0kZnVuY19ta2Rpcl9wX0lGUworCisgICAgICAjIEJhaWwgb3V0IGlmIHdlIChvciBzb21lIG90aGVyIHByb2Nlc3MpIGZhaWxlZCB0byBjcmVhdGUgYSBkaXJlY3RvcnkuCisgICAgICB0ZXN0IC1kICIkX0dfZGlyZWN0b3J5X3BhdGgiIHx8IFwKKyAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiRmFpbGVkIHRvIGNyZWF0ZSAnJDEnIgogICAgIGZpCi0gICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCi19ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KK30KIAogCi0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLWZ1bmNfc3RyaXBuYW1lICgpCisjIGZ1bmNfbWt0ZW1wZGlyIFtCQVNFTkFNRV0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBNYWtlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSB0aGF0IHdvbid0IGNsYXNoIHdpdGggb3RoZXIgcnVubmluZworIyBsaWJ0b29sIHByb2Nlc3NlcywgYW5kIGF2b2lkcyByYWNlIGNvbmRpdGlvbnMgaWYgcG9zc2libGUuICBJZgorIyBnaXZlbiwgQkFTRU5BTUUgaXMgdGhlIGJhc2VuYW1lIGZvciB0aGF0IGRpcmVjdG9yeS4KK2Z1bmNfbWt0ZW1wZGlyICgpCiB7Ci0gICAgY2FzZSAkezJ9IGluCi0gICAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotICAgIGVzYWMKLX0gIyBmdW5jX3N0cmlwbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKyAgICAkZGVidWdfY21kCiAKKyAgICBfR190ZW1wbGF0ZT0ke1RNUERJUi0vdG1wfS8kezEtJHByb2duYW1lfQogCi0jIFRoZXNlIFNFRCBzY3JpcHRzIHByZXN1cHBvc2UgYW4gYWJzb2x1dGUgcGF0aCB3aXRoIGEgdHJhaWxpbmcgc2xhc2guCi1wYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKLXBhdGhjZHI9J3MsXi9bXi9dKiwsJwotcmVtb3ZlZG90cGFydHM9Jzpkb3RzbAotCQlzQC9cLi9AL0BnCi0JCXQgZG90c2wKLQkJcywvXC4kLC8sJwotY29sbGFwc2VzbGFzaGVzPSdzQC9cezEsXH1AL0BnJwotZmluYWxzbGFzaD0ncywvKiQsLywnCisgICAgaWYgdGVzdCA6ID0gIiRvcHRfZHJ5X3J1biI7IHRoZW4KKyAgICAgICMgUmV0dXJuIGEgZGlyZWN0b3J5IG5hbWUsIGJ1dCBkb24ndCBjcmVhdGUgaXQgaW4gZHJ5LXJ1biBtb2RlCisgICAgICBfR190bXBkaXI9JF9HX3RlbXBsYXRlLSQkCisgICAgZWxzZQorCisgICAgICAjIElmIG1rdGVtcCB3b3JrcywgdXNlIHRoYXQgZmlyc3QgYW5kIGZvcmVtb3N0CisgICAgICBfR190bXBkaXI9YG1rdGVtcCAtZCAiJF9HX3RlbXBsYXRlLVhYWFhYWFhYIiAyPi9kZXYvbnVsbGAKKworICAgICAgaWYgdGVzdCAhIC1kICIkX0dfdG1wZGlyIjsgdGhlbgorICAgICAgICAjIEZhaWxpbmcgdGhhdCwgYXQgbGVhc3QgdHJ5IGFuZCB1c2UgJFJBTkRPTSB0byBhdm9pZCBhIHJhY2UKKyAgICAgICAgX0dfdG1wZGlyPSRfR190ZW1wbGF0ZS0ke1JBTkRPTS0wfSQkCisKKyAgICAgICAgZnVuY19ta3RlbXBkaXJfdW1hc2s9YHVtYXNrYAorICAgICAgICB1bWFzayAwMDc3CisgICAgICAgICRNS0RJUiAiJF9HX3RtcGRpciIKKyAgICAgICAgdW1hc2sgJGZ1bmNfbWt0ZW1wZGlyX3VtYXNrCisgICAgICBmaQorCisgICAgICAjIElmIHdlJ3JlIG5vdCBpbiBkcnktcnVuIG1vZGUsIGJvbWIgb3V0IG9uIGZhaWx1cmUKKyAgICAgIHRlc3QgLWQgIiRfR190bXBkaXIiIHx8IFwKKyAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGNyZWF0ZSB0ZW1wb3JhcnkgZGlyZWN0b3J5ICckX0dfdG1wZGlyJyIKKyAgICBmaQorCisgICAgJEVDSE8gIiRfR190bXBkaXIiCit9CisKIAogIyBmdW5jX25vcm1hbF9hYnNwYXRoIFBBVEgKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFJlbW92ZSBkb3VibGVkLXVwIGFuZCB0cmFpbGluZyBzbGFzaGVzLCAiLiIgcGF0aCBjb21wb25lbnRzLAogIyBhbmQgY2FuY2VsIG91dCBhbnkgIi4uIiBwYXRoIGNvbXBvbmVudHMgaW4gUEFUSCBhZnRlciBtYWtpbmcKICMgaXQgYW4gYWJzb2x1dGUgcGF0aC4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIKIGZ1bmNfbm9ybWFsX2Fic3BhdGggKCkKIHsKLSAgIyBTdGFydCBmcm9tIHJvb3QgZGlyIGFuZCByZWFzc2VtYmxlIHRoZSBwYXRoLgotICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0KLSAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD0kMQotICBmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZT0KLSAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCBpbgotICAgICIiKQotICAgICAgIyBFbXB0eSBwYXRoLCB0aGF0IGp1c3QgbWVhbnMgJGN3ZC4KLSAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiYHB3ZGAiCi0gICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gICAgICByZXR1cm4KLSAgICA7OwotICAgICMgVGhlIG5leHQgdGhyZWUgZW50cmllcyBhcmUgdXNlZCB0byBzcG90IGEgcnVuIG9mIHByZWNpc2VseQotICAgICMgdHdvIGxlYWRpbmcgc2xhc2hlcyB3aXRob3V0IHVzaW5nIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzZXM7Ci0gICAgIyB3ZSB0YWtlIGFkdmFudGFnZSBvZiBjYXNlJ3MgZmlyc3QtbWF0Y2ggYmVoYXZpb3VyLgotICAgIC8vLyopCi0gICAgICAjIFVudXN1YWwgZm9ybSBvZiBhYnNvbHV0ZSBwYXRoLCBkbyBub3RoaW5nLgotICAgIDs7Ci0gICAgLy8qKQotICAgICAgIyBOb3QgbmVjZXNzYXJpbHkgYW4gb3JkaW5hcnkgcGF0aDsgUE9TSVggcmVzZXJ2ZXMgbGVhZGluZyAnLy8nCi0gICAgICAjIGFuZCBmb3IgZXhhbXBsZSBDeWd3aW4gdXNlcyBpdCB0byBhY2Nlc3MgcmVtb3RlIGZpbGUgc2hhcmVzCi0gICAgICAjIG92ZXIgQ0lGUy9TTUIsIHNvIHdlIGNvbnNlcnZlIGEgbGVhZGluZyBkb3VibGUgc2xhc2ggaWYgZm91bmQuCi0gICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZT0vCi0gICAgOzsKLSAgICAvKikKLSAgICAgICMgQWJzb2x1dGUgcGF0aCwgZG8gbm90aGluZy4KLSAgICA7OwotICAgICopCi0gICAgICAjIFJlbGF0aXZlIHBhdGgsIHByZXBlbmQgJGN3ZC4KLSAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YHB3ZGAvJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgKLSAgICA7OwotICBlc2FjCi0gICMgQ2FuY2VsIG91dCBhbGwgdGhlIHNpbXBsZSBzdHVmZiB0byBzYXZlIGl0ZXJhdGlvbnMuICBXZSBhbHNvIHdhbnQKLSAgIyB0aGUgcGF0aCB0byBlbmQgd2l0aCBhIHNsYXNoIGZvciBlYXNlIG9mIHBhcnNpbmcsIHNvIG1ha2Ugc3VyZQotICAjIHRoZXJlIGlzIG9uZSAoYW5kIG9ubHkgb25lKSBoZXJlLgotICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCi0gICAgICAgIC1lICIkcmVtb3ZlZG90cGFydHMiIC1lICIkY29sbGFwc2VzbGFzaGVzIiAtZSAiJGZpbmFsc2xhc2giYAotICB3aGlsZSA6OyBkbwotICAgICMgUHJvY2Vzc2VkIGl0IGFsbCB5ZXQ/Ci0gICAgaWYgdGVzdCAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiID0gLyA7IHRoZW4KLSAgICAgICMgSWYgd2UgYXNjZW5kZWQgdG8gdGhlIHJvb3QgdXNpbmcgIi4uIiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eSBub3cuCi0gICAgICBpZiB0ZXN0IC16ICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiIDsgdGhlbgotICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0vCi0gICAgICBmaQotICAgICAgYnJlYWsKLSAgICBmaQotICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAotICAgICAgICAtZSAiJHBhdGhjYXIiYAotICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGg9YCRFQ0hPICIkZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aCIgfCAkU0VEIFwKLSAgICAgICAgLWUgIiRwYXRoY2RyImAKLSAgICAjIEZpZ3VyZSBvdXQgd2hhdCB0byBkbyB3aXRoIGl0Ci0gICAgY2FzZSAkZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50IGluCisgICAgJGRlYnVnX2NtZAorCisgICAgIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorICAgIF9HX3BhdGhjYXI9J3N8Xi9cKFteL10qXCkuKiR8XDF8JworICAgIF9HX3BhdGhjZHI9J3N8Xi9bXi9dKnx8JworICAgIF9HX3JlbW92ZWRvdHBhcnRzPSc6ZG90c2wKKwkJc3wvXC4vfC98ZworCQl0IGRvdHNsCisJCXN8L1wuJHwvfCcKKyAgICBfR19jb2xsYXBzZXNsYXNoZXM9J3N8L1x7MSxcfXwvfGcnCisgICAgX0dfZmluYWxzbGFzaD0nc3wvKiR8L3wnCisKKyAgICAjIFN0YXJ0IGZyb20gcm9vdCBkaXIgYW5kIHJlYXNzZW1ibGUgdGhlIHBhdGguCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9CisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD0kMQorICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPQorICAgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGggaW4KICAgICAgICIiKQotICAgICAgICAjIFRyYWlsaW5nIGVtcHR5IHBhdGggY29tcG9uZW50LCBpZ25vcmUgaXQuCi0gICAgICA7OwotICAgICAgLi4pCi0gICAgICAgICMgUGFyZW50IGRpcjsgc3RyaXAgbGFzdCBhc3NlbWJsZWQgY29tcG9uZW50IGZyb20gcmVzdWx0LgotICAgICAgICBmdW5jX2Rpcm5hbWUgIiRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdCIKLSAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfZGlybmFtZV9yZXN1bHQKLSAgICAgIDs7Ci0gICAgICAqKQotICAgICAgICAjIEFjdHVhbCBwYXRoIGNvbXBvbmVudCwgYXBwZW5kIGl0LgotICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdD0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQvJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudAotICAgICAgOzsKLSAgICBlc2FjCi0gIGRvbmUKLSAgIyBSZXN0b3JlIGxlYWRpbmcgZG91YmxlLXNsYXNoIGlmIG9uZSB3YXMgZm91bmQgb24gZW50cnkuCi0gIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotfQotCi0jIGZ1bmNfcmVsYXRpdmVfcGF0aCBTUkNESVIgRFNURElSCi0jIGdlbmVyYXRlcyBhIHJlbGF0aXZlIHBhdGggZnJvbSBTUkNESVIgdG8gRFNURElSLCB3aXRoIGEgdHJhaWxpbmcKLSMgc2xhc2ggaWYgbm9uLWVtcHR5LCBzdWl0YWJsZSBmb3IgaW1tZWRpYXRlbHkgYXBwZW5kaW5nIGEgZmlsZW5hbWUKLSMgd2l0aG91dCBuZWVkaW5nIHRvIGFwcGVuZCBhIHNlcGFyYXRvci4KLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IgotZnVuY19yZWxhdGl2ZV9wYXRoICgpCi17Ci0gIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Ci0gIGZ1bmNfbm9ybWFsX2Fic3BhdGggIiQxIgotICBmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcj0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKLSAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDIiCi0gIGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotCi0gICMgQXNjZW5kIHRoZSB0cmVlIHN0YXJ0aW5nIGZyb20gbGliZGlyCi0gIHdoaWxlIDo7IGRvCi0gICAgIyBjaGVjayBpZiB3ZSBoYXZlIGZvdW5kIGEgcHJlZml4IG9mIGJpbmRpcgotICAgIGNhc2UgJGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyIGluCi0gICAgICAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIpCi0gICAgICAgICMgZm91bmQgYW4gZXhhY3QgbWF0Y2gKLSAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9Ci0gICAgICAgIGJyZWFrCisgICAgICAgICMgRW1wdHkgcGF0aCwgdGhhdCBqdXN0IG1lYW5zICRjd2QuCisgICAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiYHB3ZGAiCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICAgICAgcmV0dXJuCiAgICAgICAgIDs7Ci0gICAgICAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIqKQotICAgICAgICAjIGZvdW5kIGEgbWF0Y2hpbmcgcHJlZml4Ci0gICAgICAgIGZ1bmNfc3RyaXBuYW1lICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIiICcnICIkZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIiCi0gICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiOyB0aGVuCi0gICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uCi0gICAgICAgIGZpCi0gICAgICAgIGJyZWFrCisgICAgICAjIFRoZSBuZXh0IHRocmVlIGVudHJpZXMgYXJlIHVzZWQgdG8gc3BvdCBhIHJ1biBvZiBwcmVjaXNlbHkKKyAgICAgICMgdHdvIGxlYWRpbmcgc2xhc2hlcyB3aXRob3V0IHVzaW5nIG5lZ2F0ZWQgY2hhcmFjdGVyIGNsYXNzZXM7CisgICAgICAjIHdlIHRha2UgYWR2YW50YWdlIG9mIGNhc2UncyBmaXJzdC1tYXRjaCBiZWhhdmlvdXIuCisgICAgICAvLy8qKQorICAgICAgICAjIFVudXN1YWwgZm9ybSBvZiBhYnNvbHV0ZSBwYXRoLCBkbyBub3RoaW5nLgorICAgICAgICA7OworICAgICAgLy8qKQorICAgICAgICAjIE5vdCBuZWNlc3NhcmlseSBhbiBvcmRpbmFyeSBwYXRoOyBQT1NJWCByZXNlcnZlcyBsZWFkaW5nICcvLycKKyAgICAgICAgIyBhbmQgZm9yIGV4YW1wbGUgQ3lnd2luIHVzZXMgaXQgdG8gYWNjZXNzIHJlbW90ZSBmaWxlIHNoYXJlcworICAgICAgICAjIG92ZXIgQ0lGUy9TTUIsIHNvIHdlIGNvbnNlcnZlIGEgbGVhZGluZyBkb3VibGUgc2xhc2ggaWYgZm91bmQuCisgICAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfYWx0bmFtZXNwYWNlPS8KKyAgICAgICAgOzsKKyAgICAgIC8qKQorICAgICAgICAjIEFic29sdXRlIHBhdGgsIGRvIG5vdGhpbmcuCiAgICAgICAgIDs7CiAgICAgICAqKQotICAgICAgICBmdW5jX2Rpcm5hbWUgJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyCi0gICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyPSR7ZnVuY19kaXJuYW1lX3Jlc3VsdH0KLSAgICAgICAgaWYgdGVzdCAieCRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciIgPSB4IDsgdGhlbgotICAgICAgICAgICMgSGF2ZSB0byBkZXNjZW5kIGFsbCB0aGUgd2F5IHRvIHRoZSByb290IQotICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9Li4vJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQKLSAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGNhbmNlbGxlZD0kZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXIKLSAgICAgICAgICBicmVhawotICAgICAgICBmaQotICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4uLyRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0CisgICAgICAgICMgUmVsYXRpdmUgcGF0aCwgcHJlcGVuZCAkY3dkLgorICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWBwd2RgLyRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoCiAgICAgICAgIDs7CiAgICAgZXNhYwotICBkb25lCiAKLSAgIyBOb3cgY2FsY3VsYXRlIHBhdGg7IHRha2UgY2FyZSB0byBhdm9pZCBkb3VibGluZy11cCBzbGFzaGVzLgotICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IgotICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAgZnVuY19zdHJpcG5hbWUgJy8nICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkIgotICBpZiB0ZXN0ICJ4JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIgIT0geCA7IHRoZW4KLSAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSR7ZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdH0vJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9Ci0gIGZpCi0KLSAgIyBOb3JtYWxpc2F0aW9uLiBJZiBiaW5kaXIgaXMgbGliZGlyLCByZXR1cm4gZW1wdHkgc3RyaW5nLAotICAjIGVsc2UgcmVsYXRpdmUgcGF0aCBlbmRpbmcgd2l0aCBhIHNsYXNoOyBlaXRoZXIgd2F5LCB0YXJnZXQKLSAgIyBmaWxlIG5hbWUgY2FuIGJlIGRpcmVjdGx5IGFwcGVuZGVkLgotICBpZiB0ZXN0ICEgLXogIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IjsgdGhlbgotICAgIGZ1bmNfc3RyaXBuYW1lICcuLycgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0LyIKLSAgICBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAgZmkKKyAgICAjIENhbmNlbCBvdXQgYWxsIHRoZSBzaW1wbGUgc3R1ZmYgdG8gc2F2ZSBpdGVyYXRpb25zLiAgV2UgYWxzbyB3YW50CisgICAgIyB0aGUgcGF0aCB0byBlbmQgd2l0aCBhIHNsYXNoIGZvciBlYXNlIG9mIHBhcnNpbmcsIHNvIG1ha2Ugc3VyZQorICAgICMgdGhlcmUgaXMgb25lIChhbmQgb25seSBvbmUpIGhlcmUuCisgICAgZnVuY19ub3JtYWxfYWJzcGF0aF90cGF0aD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAgIC1lICIkX0dfcmVtb3ZlZG90cGFydHMiIC1lICIkX0dfY29sbGFwc2VzbGFzaGVzIiAtZSAiJF9HX2ZpbmFsc2xhc2giYAorICAgIHdoaWxlIDo7IGRvCisgICAgICAjIFByb2Nlc3NlZCBpdCBhbGwgeWV0PworICAgICAgaWYgdGVzdCAvID0gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIjsgdGhlbgorICAgICAgICAjIElmIHdlIGFzY2VuZGVkIHRvIHRoZSByb290IHVzaW5nICIuLiIgdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkgbm93LgorICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiOyB0aGVuCisgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9LworICAgICAgICBmaQorICAgICAgICBicmVhaworICAgICAgZmkKKyAgICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudD1gJEVDSE8gIiRmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoIiB8ICRTRUQgXAorICAgICAgICAgIC1lICIkX0dfcGF0aGNhciJgCisgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoX3RwYXRoPWAkRUNITyAiJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdHBhdGgiIHwgJFNFRCBcCisgICAgICAgICAgLWUgIiRfR19wYXRoY2RyImAKKyAgICAgICMgRmlndXJlIG91dCB3aGF0IHRvIGRvIHdpdGggaXQKKyAgICAgIGNhc2UgJGZ1bmNfbm9ybWFsX2Fic3BhdGhfdGNvbXBvbmVudCBpbgorICAgICAgICAiIikKKyAgICAgICAgICAjIFRyYWlsaW5nIGVtcHR5IHBhdGggY29tcG9uZW50LCBpZ25vcmUgaXQuCisgICAgICAgICAgOzsKKyAgICAgICAgLi4pCisgICAgICAgICAgIyBQYXJlbnQgZGlyOyBzdHJpcCBsYXN0IGFzc2VtYmxlZCBjb21wb25lbnQgZnJvbSByZXN1bHQuCisgICAgICAgICAgZnVuY19kaXJuYW1lICIkZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQiCisgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQ9JGZ1bmNfZGlybmFtZV9yZXN1bHQKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgICMgQWN0dWFsIHBhdGggY29tcG9uZW50LCBhcHBlbmQgaXQuCisgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQgIi8kZnVuY19ub3JtYWxfYWJzcGF0aF90Y29tcG9uZW50IgorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgZG9uZQorICAgICMgUmVzdG9yZSBsZWFkaW5nIGRvdWJsZS1zbGFzaCBpZiBvbmUgd2FzIGZvdW5kIG9uIGVudHJ5LgorICAgIGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0PSRmdW5jX25vcm1hbF9hYnNwYXRoX2FsdG5hbWVzcGFjZSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAogfQogCi0jIFRoZSBuYW1lIG9mIHRoaXMgcHJvZ3JhbToKLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRwcm9ncGF0aCIKLXByb2duYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCi0jIE1ha2Ugc3VyZSB3ZSBoYXZlIGFuIGFic29sdXRlIHBhdGggZm9yIHJlZXhlY3V0aW9uOgotY2FzZSAkcHJvZ3BhdGggaW4KLSAgW1xcL10qfFtBLVphLXpdOlxcKikgOzsKLSAgKltcXC9dKikKLSAgICAgcHJvZ2Rpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAotICAgICBwcm9nZGlyPWBjZCAiJHByb2dkaXIiICYmIHB3ZGAKLSAgICAgcHJvZ3BhdGg9IiRwcm9nZGlyLyRwcm9nbmFtZSIKLSAgICAgOzsKLSAgKikKLSAgICAgc2F2ZV9JRlM9IiRJRlMiCi0gICAgIElGUz0ke1BBVEhfU0VQQVJBVE9SLTp9Ci0gICAgIGZvciBwcm9nZGlyIGluICRQQVRIOyBkbwotICAgICAgIElGUz0iJHNhdmVfSUZTIgotICAgICAgIHRlc3QgLXggIiRwcm9nZGlyLyRwcm9nbmFtZSIgJiYgYnJlYWsKLSAgICAgZG9uZQotICAgICBJRlM9IiRzYXZlX0lGUyIKLSAgICAgdGVzdCAtbiAiJHByb2dkaXIiIHx8IHByb2dkaXI9YHB3ZGAKLSAgICAgcHJvZ3BhdGg9IiRwcm9nZGlyLyRwcm9nbmFtZSIKLSAgICAgOzsKLWVzYWMKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgaGVscHMgdXMgZG8gcm9idXN0IHF1b3RpbmcuICBJdCBiYWNrc2xhc2hpZmllcwotIyBtZXRhY2hhcmFjdGVycyB0aGF0IGFyZSBzdGlsbCBhY3RpdmUgd2l0aGluIGRvdWJsZS1xdW90ZWQgc3RyaW5ncy4KLVhzZWQ9IiR7U0VEfSInIC1lIDFzL15YLy8nCi1zZWRfcXVvdGVfc3Vic3Q9J3MvXChbYCIkXFxdXCkvXFxcMS9nJwotCi0jIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KLWRvdWJsZV9xdW90ZV9zdWJzdD0ncy9cKFsiYFxcXVwpL1xcXDEvZycKLQotIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKLSMgc3RyaW5nIGxpdGVyYWxseS4KLXNlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJwotCi0jIFNlZCBzdWJzdGl0dXRpb24gdGhhdCBjb252ZXJ0cyBhIHczMiBmaWxlIG5hbWUgb3IgcGF0aAotIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKLSMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgotbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotCi0jIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQotIyBgXCctZWQgaW4gaW5wdXQgdG8gdGhlIHNhbWUuICBJZiBhbiBvZGQgbnVtYmVyIG9mIGBcJyBwcmVjZWRlZCBhICckJwotIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCi0jIFNpbmNlIGVhY2ggaW5wdXQgYFwnIGlzIG5vdyB0d28gYFwncywgbG9vayBmb3IgYW55IG51bWJlciBvZiBydW5zIG9mCi0jIGZvdXIgYFwncyBmb2xsb3dlZCBieSB0d28gYFwncyBhbmQgdGhlbiBhICckJy4gIGBcJyB0aGF0ICckJy4KLWJzPSdcXCcKLWJzMj0nXFxcXCcKLWJzND0nXFxcXFxcXFwnCi1kb2xsYXI9J1wkJwotc2VkX2RvdWJsZV9iYWNrc2xhc2g9IlwKLSAgcy8kYnM0LyZcXAotL2cKLSAgcy9eJGJzMiRkb2xsYXIvJGJzJi8KLSAgcy9cXChbXiRic11cXCkkYnMyJGRvbGxhci9cXDEkYnMyJGJzJGRvbGxhci9nCi0gIHMvXG4vL2ciCi0KLSMgU3RhbmRhcmQgb3B0aW9uczoKLW9wdF9kcnlfcnVuPWZhbHNlCi1vcHRfaGVscD1mYWxzZQotb3B0X3F1aWV0PWZhbHNlCi1vcHRfdmVyYm9zZT1mYWxzZQotb3B0X3dhcm5pbmc9OgotCi0jIGZ1bmNfZWNobyBhcmcuLi4KLSMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSwgYWxvbmcgd2l0aCB0aGUgY3VycmVudCBtb2RlCi0jIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KLWZ1bmNfZWNobyAoKQorIyBmdW5jX25vdHF1aWV0IEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIG9ubHkgd2hlbiBub3QgaW4gcXVpZXQgbW9kZS4KK2Z1bmNfbm90cXVpZXQgKCkKIHsKLSAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgotfQorICAgICRkZWJ1Z19jbWQKIAotIyBmdW5jX3ZlcmJvc2UgYXJnLi4uCi0jIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgaW4gdmVyYm9zZSBtb2RlIG9ubHkuCi1mdW5jX3ZlcmJvc2UgKCkKLXsKLSAgICAkb3B0X3ZlcmJvc2UgJiYgZnVuY19lY2hvICR7MSsiJEAifQorICAgICRvcHRfcXVpZXQgfHwgZnVuY19lY2hvICR7MSsiJEAifQogCiAgICAgIyBBIGJ1ZyBpbiBiYXNoIGhhbHRzIHRoZSBzY3JpcHQgaWYgdGhlIGxhc3QgbGluZSBvZiBhIGZ1bmN0aW9uCiAgICAgIyBmYWlscyB3aGVuIHNldCAtZSBpcyBpbiBmb3JjZSwgc28gd2UgbmVlZCBhbm90aGVyIGNvbW1hbmQgdG8KQEAgLTQ1NCw0NTAgKzEwMjUsMTExMyBAQAogICAgIDoKIH0KIAotIyBmdW5jX2VjaG9fYWxsIGFyZy4uLgotIyBJbnZva2UgJEVDSE8gd2l0aCBhbGwgYXJncywgc3BhY2Utc2VwYXJhdGVkLgotZnVuY19lY2hvX2FsbCAoKQotewotICAgICRFQ0hPICIkKiIKLX0KIAotIyBmdW5jX2Vycm9yIGFyZy4uLgotIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgotZnVuY19lcnJvciAoKQorIyBmdW5jX3JlbGF0aXZlX3BhdGggU1JDRElSIERTVERJUgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBTZXQgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCB0byB0aGUgcmVsYXRpdmUgcGF0aCBmcm9tIFNSQ0RJUiB0byBEU1RESVIuCitmdW5jX3JlbGF0aXZlX3BhdGggKCkKIHsKLSAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgotfQorICAgICRkZWJ1Z19jbWQKIAotIyBmdW5jX3dhcm5pbmcgYXJnLi4uCi0jIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KLWZ1bmNfd2FybmluZyAoKQotewotICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfXdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9CisgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDEiCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJDIiCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RiaW5kaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CiAKLSAgICAjIGJhc2ggYnVnIGFnYWluOgorICAgICMgQXNjZW5kIHRoZSB0cmVlIHN0YXJ0aW5nIGZyb20gbGliZGlyCisgICAgd2hpbGUgOjsgZG8KKyAgICAgICMgY2hlY2sgaWYgd2UgaGF2ZSBmb3VuZCBhIHByZWZpeCBvZiBiaW5kaXIKKyAgICAgIGNhc2UgJGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyIGluCisgICAgICAgICRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcikKKyAgICAgICAgICAjIGZvdW5kIGFuIGV4YWN0IG1hdGNoCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9CisgICAgICAgICAgYnJlYWsKKyAgICAgICAgICA7OworICAgICAgICAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIqKQorICAgICAgICAgICMgZm91bmQgYSBtYXRjaGluZyBwcmVmaXgKKyAgICAgICAgICBmdW5jX3N0cmlwbmFtZSAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90bGliZGlyIiAnJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyIgorICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICAgICAgICAgIGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQ9LgorICAgICAgICAgIGZpCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIGZ1bmNfZGlybmFtZSAkZnVuY19yZWxhdGl2ZV9wYXRoX3RsaWJkaXIKKyAgICAgICAgICBmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3JlbGF0aXZlX3BhdGhfdGxpYmRpciI7IHRoZW4KKyAgICAgICAgICAgICMgSGF2ZSB0byBkZXNjZW5kIGFsbCB0aGUgd2F5IHRvIHRoZSByb290IQorICAgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3RjYW5jZWxsZWQ9JGZ1bmNfcmVsYXRpdmVfcGF0aF90YmluZGlyCisgICAgICAgICAgICBicmVhaworICAgICAgICAgIGZpCisgICAgICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0uLi8kZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdAorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgZG9uZQorCisgICAgIyBOb3cgY2FsY3VsYXRlIHBhdGg7IHRha2UgY2FyZSB0byBhdm9pZCBkb3VibGluZy11cCBzbGFzaGVzLgorICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQiCisgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZnVuY19zdHJpcG5hbWUgJy8nICcvJyAiJGZ1bmNfcmVsYXRpdmVfcGF0aF90Y2FuY2VsbGVkIgorICAgIGlmIHRlc3QgLW4gIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCisgICAgICBmdW5jX2FwcGVuZCBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0ICIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKyAgICBmaQorCisgICAgIyBOb3JtYWxpc2F0aW9uLiBJZiBiaW5kaXIgaXMgbGliZGlyLCByZXR1cm4gJy4nIGVsc2UgcmVsYXRpdmUgcGF0aC4KKyAgICBpZiB0ZXN0IC1uICIkZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdCI7IHRoZW4KKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcuLycgJycgIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IgorICAgICAgZnVuY19yZWxhdGl2ZV9wYXRoX3Jlc3VsdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgICAgZmkKKworICAgIHRlc3QgLW4gIiRmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0IiB8fCBmdW5jX3JlbGF0aXZlX3BhdGhfcmVzdWx0PS4KKwogICAgIDoKIH0KIAotIyBmdW5jX2ZhdGFsX2Vycm9yIGFyZy4uLgotIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBhbmQgZXhpdC4KLWZ1bmNfZmF0YWxfZXJyb3IgKCkKLXsKLSAgICBmdW5jX2Vycm9yICR7MSsiJEAifQotICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotfQogCi0jIGZ1bmNfZmF0YWxfaGVscCBhcmcuLi4KLSMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKLSMgYSBoZWxwIGhpbnQsIGFuZCBleGl0LgotZnVuY19mYXRhbF9oZWxwICgpCi17Ci0gICAgZnVuY19lcnJvciAkezErIiRAIn0KLSAgICBmdW5jX2ZhdGFsX2Vycm9yICIkaGVscCIKLX0KLWhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIgICMjIGRlZmF1bHQKLQotCi0jIGZ1bmNfZ3JlcCBleHByZXNzaW9uIGZpbGVuYW1lCi0jIENoZWNrIHdoZXRoZXIgRVhQUkVTU0lPTiBtYXRjaGVzIGFueSBsaW5lIG9mIEZJTEVOQU1FLCB3aXRob3V0IG91dHB1dC4KLWZ1bmNfZ3JlcCAoKQotewotICAgICRHUkVQICIkMSIgIiQyIiA+L2Rldi9udWxsIDI+JjEKLX0KLQotCi0jIGZ1bmNfbWtkaXJfcCBkaXJlY3RvcnktcGF0aAotIyBNYWtlIHN1cmUgdGhlIGVudGlyZSBwYXRoIHRvIERJUkVDVE9SWS1QQVRIIGlzIGF2YWlsYWJsZS4KLWZ1bmNfbWtkaXJfcCAoKQotewotICAgIG15X2RpcmVjdG9yeV9wYXRoPSIkMSIKLSAgICBteV9kaXJfbGlzdD0KLQotICAgIGlmIHRlc3QgLW4gIiRteV9kaXJlY3RvcnlfcGF0aCIgJiYgdGVzdCAiJG9wdF9kcnlfcnVuIiAhPSAiOiI7IHRoZW4KLQotICAgICAgIyBQcm90ZWN0IGRpcmVjdG9yeSBuYW1lcyBzdGFydGluZyB3aXRoIGAtJwotICAgICAgY2FzZSAkbXlfZGlyZWN0b3J5X3BhdGggaW4KLSAgICAgICAgLSopIG15X2RpcmVjdG9yeV9wYXRoPSIuLyRteV9kaXJlY3RvcnlfcGF0aCIgOzsKLSAgICAgIGVzYWMKLQotICAgICAgIyBXaGlsZSBzb21lIHBvcnRpb24gb2YgRElSIGRvZXMgbm90IHlldCBleGlzdC4uLgotICAgICAgd2hpbGUgdGVzdCAhIC1kICIkbXlfZGlyZWN0b3J5X3BhdGgiOyBkbwotICAgICAgICAjIC4uLm1ha2UgYSBsaXN0IGluIHRvcG1vc3QgZmlyc3Qgb3JkZXIuICBVc2UgYSBjb2xvbiBkZWxpbWl0ZWQKLQkjIGxpc3QgaW5jYXNlIHNvbWUgcG9ydGlvbiBvZiBwYXRoIGNvbnRhaW5zIHdoaXRlc3BhY2UuCi0gICAgICAgIG15X2Rpcl9saXN0PSIkbXlfZGlyZWN0b3J5X3BhdGg6JG15X2Rpcl9saXN0IgotCi0gICAgICAgICMgSWYgdGhlIGxhc3QgcG9ydGlvbiBhZGRlZCBoYXMgbm8gc2xhc2ggaW4gaXQsIHRoZSBsaXN0IGlzIGRvbmUKLSAgICAgICAgY2FzZSAkbXlfZGlyZWN0b3J5X3BhdGggaW4gKi8qKSA7OyAqKSBicmVhayA7OyBlc2FjCi0KLSAgICAgICAgIyAuLi5vdGhlcndpc2UgdGhyb3cgYXdheSB0aGUgY2hpbGQgZGlyZWN0b3J5IGFuZCBsb29wCi0gICAgICAgIG15X2RpcmVjdG9yeV9wYXRoPWAkRUNITyAiJG15X2RpcmVjdG9yeV9wYXRoIiB8ICRTRUQgLWUgIiRkaXJuYW1lImAKLSAgICAgIGRvbmUKLSAgICAgIG15X2Rpcl9saXN0PWAkRUNITyAiJG15X2Rpcl9saXN0IiB8ICRTRUQgJ3MsOiokLCwnYAotCi0gICAgICBzYXZlX21rZGlyX3BfSUZTPSIkSUZTIjsgSUZTPSc6JwotICAgICAgZm9yIG15X2RpciBpbiAkbXlfZGlyX2xpc3Q7IGRvCi0JSUZTPSIkc2F2ZV9ta2Rpcl9wX0lGUyIKLSAgICAgICAgIyBta2RpciBjYW4gZmFpbCB3aXRoIGEgYEZpbGUgZXhpc3QnIGVycm9yIGlmIHR3byBwcm9jZXNzZXMKLSAgICAgICAgIyB0cnkgdG8gY3JlYXRlIG9uZSBvZiB0aGUgZGlyZWN0b3JpZXMgY29uY3VycmVudGx5LiAgRG9uJ3QKLSAgICAgICAgIyBzdG9wIGluIHRoYXQgY2FzZSEKLSAgICAgICAgJE1LRElSICIkbXlfZGlyIiAyPi9kZXYvbnVsbCB8fCA6Ci0gICAgICBkb25lCi0gICAgICBJRlM9IiRzYXZlX21rZGlyX3BfSUZTIgotCi0gICAgICAjIEJhaWwgb3V0IGlmIHdlIChvciBzb21lIG90aGVyIHByb2Nlc3MpIGZhaWxlZCB0byBjcmVhdGUgYSBkaXJlY3RvcnkuCi0gICAgICB0ZXN0IC1kICIkbXlfZGlyZWN0b3J5X3BhdGgiIHx8IFwKLSAgICAgICAgZnVuY19mYXRhbF9lcnJvciAiRmFpbGVkIHRvIGNyZWF0ZSBcYCQxJyIKLSAgICBmaQotfQotCi0KLSMgZnVuY19ta3RlbXBkaXIgW3N0cmluZ10KLSMgTWFrZSBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgdGhhdCB3b24ndCBjbGFzaCB3aXRoIG90aGVyIHJ1bm5pbmcKLSMgbGlidG9vbCBwcm9jZXNzZXMsIGFuZCBhdm9pZHMgcmFjZSBjb25kaXRpb25zIGlmIHBvc3NpYmxlLiAgSWYKLSMgZ2l2ZW4sIFNUUklORyBpcyB0aGUgYmFzZW5hbWUgZm9yIHRoYXQgZGlyZWN0b3J5LgotZnVuY19ta3RlbXBkaXIgKCkKLXsKLSAgICBteV90ZW1wbGF0ZT0iJHtUTVBESVItL3RtcH0vJHsxLSRwcm9nbmFtZX0iCi0KLSAgICBpZiB0ZXN0ICIkb3B0X2RyeV9ydW4iID0gIjoiOyB0aGVuCi0gICAgICAjIFJldHVybiBhIGRpcmVjdG9yeSBuYW1lLCBidXQgZG9uJ3QgY3JlYXRlIGl0IGluIGRyeS1ydW4gbW9kZQotICAgICAgbXlfdG1wZGlyPSIke215X3RlbXBsYXRlfS0kJCIKLSAgICBlbHNlCi0KLSAgICAgICMgSWYgbWt0ZW1wIHdvcmtzLCB1c2UgdGhhdCBmaXJzdCBhbmQgZm9yZW1vc3QKLSAgICAgIG15X3RtcGRpcj1gbWt0ZW1wIC1kICIke215X3RlbXBsYXRlfS1YWFhYWFhYWCIgMj4vZGV2L251bGxgCi0KLSAgICAgIGlmIHRlc3QgISAtZCAiJG15X3RtcGRpciI7IHRoZW4KLSAgICAgICAgIyBGYWlsaW5nIHRoYXQsIGF0IGxlYXN0IHRyeSBhbmQgdXNlICRSQU5ET00gdG8gYXZvaWQgYSByYWNlCi0gICAgICAgIG15X3RtcGRpcj0iJHtteV90ZW1wbGF0ZX0tJHtSQU5ET00tMH0kJCIKLQotICAgICAgICBzYXZlX21rdGVtcGRpcl91bWFzaz1gdW1hc2tgCi0gICAgICAgIHVtYXNrIDAwNzcKLSAgICAgICAgJE1LRElSICIkbXlfdG1wZGlyIgotICAgICAgICB1bWFzayAkc2F2ZV9ta3RlbXBkaXJfdW1hc2sKLSAgICAgIGZpCi0KLSAgICAgICMgSWYgd2UncmUgbm90IGluIGRyeS1ydW4gbW9kZSwgYm9tYiBvdXQgb24gZmFpbHVyZQotICAgICAgdGVzdCAtZCAiJG15X3RtcGRpciIgfHwgXAotICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgY3JlYXRlIHRlbXBvcmFyeSBkaXJlY3RvcnkgXGAkbXlfdG1wZGlyJyIKLSAgICBmaQotCi0gICAgJEVDSE8gIiRteV90bXBkaXIiCi19Ci0KLQotIyBmdW5jX3F1b3RlX2Zvcl9ldmFsIGFyZwotIyBBZXN0aGV0aWNhbGx5IHF1b3RlIEFSRyB0byBiZSBldmFsZWQgbGF0ZXIuCi0jIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB0d28gdmFsdWVzOiBGVU5DX1FVT1RFX0ZPUl9FVkFMX1JFU1VMVAotIyBpcyBkb3VibGUtcXVvdGVkLCBzdWl0YWJsZSBmb3IgYSBzdWJzZXF1ZW50IGV2YWwsIHdoZXJlYXMKLSMgRlVOQ19RVU9URV9GT1JfRVZBTF9VTlFVT1RFRF9SRVNVTFQgaGFzIG1lcmVseSBhbGwgY2hhcmFjdGVycwotIyB3aGljaCBhcmUgc3RpbGwgYWN0aXZlIHdpdGhpbiBkb3VibGUgcXVvdGVzIGJhY2tzbGFzaGlmaWVkLgorIyBmdW5jX3F1b3RlX2Zvcl9ldmFsIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBZXN0aGV0aWNhbGx5IHF1b3RlIEFSR3MgdG8gYmUgZXZhbGVkIGxhdGVyLgorIyBUaGlzIGZ1bmN0aW9uIHJldHVybnMgdHdvIHZhbHVlczoKKyMgICBpKSBmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorIyAgICAgIGRvdWJsZS1xdW90ZWQsIHN1aXRhYmxlIGZvciBhIHN1YnNlcXVlbnQgZXZhbAorIyAgaWkpIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0CisjICAgICAgaGFzIGFsbCBjaGFyYWN0ZXJzIHRoYXQgYXJlIHN0aWxsIGFjdGl2ZSB3aXRoaW4gZG91YmxlCisjICAgICAgcXVvdGVzIGJhY2tzbGFzaGlmaWVkLgogZnVuY19xdW90ZV9mb3JfZXZhbCAoKQogewotICAgIGNhc2UgJDEgaW4KLSAgICAgICpbXFxcYFwiXCRdKikKLQlmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfcXVvdGVfc3Vic3QiYCA7OwotICAgICAgKikKLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQ9IiQxIiA7OwotICAgIGVzYWMKKyAgICAkZGVidWdfY21kCiAKLSAgICBjYXNlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdCBpbgotICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHRvIGRlbGF5Ci0gICAgICAjIHdvcmQgc3BsaXR0aW5nLCBjb21tYW5kIHN1YnN0aXR1dGlvbiBhbmQgYW5kIHZhcmlhYmxlCi0gICAgICAjIGV4cGFuc2lvbiBmb3IgYSBzdWJzZXF1ZW50IGV2YWwuCi0gICAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQotICAgICAgIyBpbiBzY2FuIHNldHMsIHNvIHdlIHNwZWNpZnkgaXQgc2VwYXJhdGVseS4KLSAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdD0iXCIkZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHRcIiIKLSAgICAgICAgOzsKLSAgICAgICopCi0gICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0PSIkZnVuY19xdW90ZV9mb3JfZXZhbF91bnF1b3RlZF9yZXN1bHQiCi0gICAgZXNhYworICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0PQorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0PQorICAgIHdoaWxlIHRlc3QgMCAtbHQgJCM7IGRvCisgICAgICBjYXNlICQxIGluCisgICAgICAgICpbXFxcYFwiXCRdKikKKwkgIF9HX3VucXVvdGVkX2FyZz1gcHJpbnRmICclc1xuJyAiJDEiIHwkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICBfR191bnF1b3RlZF9hcmc9JDEgOzsKKyAgICAgIGVzYWMKKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdCI7IHRoZW4KKwlmdW5jX2FwcGVuZCBmdW5jX3F1b3RlX2Zvcl9ldmFsX3VucXVvdGVkX3Jlc3VsdCAiICRfR191bnF1b3RlZF9hcmciCisgICAgICBlbHNlCisgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0ICIkX0dfdW5xdW90ZWRfYXJnIgorICAgICAgZmkKKworICAgICAgY2FzZSAkX0dfdW5xdW90ZWRfYXJnIGluCisgICAgICAgICMgRG91YmxlLXF1b3RlIGFyZ3MgY29udGFpbmluZyBzaGVsbCBtZXRhY2hhcmFjdGVycyB0byBkZWxheQorICAgICAgICAjIHdvcmQgc3BsaXR0aW5nLCBjb21tYW5kIHN1YnN0aXR1dGlvbiBhbmQgdmFyaWFibGUgZXhwYW5zaW9uCisgICAgICAgICMgZm9yIGEgc3Vic2VxdWVudCBldmFsLgorICAgICAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQorICAgICAgICAjIGluIHNjYW4gc2V0cywgc28gd2Ugc3BlY2lmeSBpdCBzZXBhcmF0ZWx5LgorICAgICAgICAqW1xbXH5cI1xeXCZcKlwoXClce1x9XHxcO1w8XD5cP1wnXCBcCV0qfCpdKnwiIikKKyAgICAgICAgICBfR19xdW90ZWRfYXJnPVwiJF9HX3VucXVvdGVkX2FyZ1wiCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICBfR19xdW90ZWRfYXJnPSRfR191bnF1b3RlZF9hcmcKKwkgIDs7CisgICAgICBlc2FjCisKKyAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCI7IHRoZW4KKwlmdW5jX2FwcGVuZCBmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCAiICRfR19xdW90ZWRfYXJnIgorICAgICAgZWxzZQorICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCAiJF9HX3F1b3RlZF9hcmciCisgICAgICBmaQorICAgICAgc2hpZnQKKyAgICBkb25lCiB9CiAKIAotIyBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgYXJnCisjIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCBBUkcKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBBZXN0aGV0aWNhbGx5IHF1b3RlIEFSRyB0byBiZSBldmFsZWQgbGF0ZXI7IHNhbWUgYXMgYWJvdmUsCiAjIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAoKQogeworICAgICRkZWJ1Z19jbWQKKwogICAgIGNhc2UgJDEgaW4KICAgICAgICpbXFxcYFwiXSopCi0JbXlfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCBcCi0JICAgIC1lICIkZG91YmxlX3F1b3RlX3N1YnN0IiAtZSAiJHNlZF9kb3VibGVfYmFja3NsYXNoImAgOzsKKwlfR19hcmc9YCRFQ0hPICIkMSIgfCAkU0VEIFwKKwkgICAgLWUgIiRzZWRfZG91YmxlX3F1b3RlX3N1YnN0IiAtZSAiJHNlZF9kb3VibGVfYmFja3NsYXNoImAgOzsKICAgICAgICopCi0gICAgICAgIG15X2FyZz0iJDEiIDs7CisgICAgICAgIF9HX2FyZz0kMSA7OwogICAgIGVzYWMKIAotICAgIGNhc2UgJG15X2FyZyBpbgorICAgIGNhc2UgJF9HX2FyZyBpbgogICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIHNoZWxsIG1ldGFjaGFyYWN0ZXJzIHRvIGRlbGF5CiAgICAgICAjIHdvcmQgc3BsaXR0aW5nIGFuZCBjb21tYW5kIHN1YnN0aXR1dGlvbiBmb3IgYSBzdWJzZXF1ZW50IGV2YWwuCiAgICAgICAjIE1hbnkgQm91cm5lIHNoZWxscyBjYW5ub3QgaGFuZGxlIGNsb3NlIGJyYWNrZXRzIGNvcnJlY3RseQogICAgICAgIyBpbiBzY2FuIHNldHMsIHNvIHdlIHNwZWNpZnkgaXQgc2VwYXJhdGVseS4KICAgICAgICpbXFtcflwjXF5cJlwqXChcKVx7XH1cfFw7XDxcPlw/XCdcIFwJXSp8Kl0qfCIiKQotICAgICAgICBteV9hcmc9IlwiJG15X2FyZ1wiIgorICAgICAgICBfR19hcmc9XCIkX0dfYXJnXCIKICAgICAgICAgOzsKICAgICBlc2FjCiAKLSAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0PSIkbXlfYXJnIgorICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQ9JF9HX2FyZwogfQogCiAKLSMgZnVuY19zaG93X2V2YWwgY21kIFtmYWlsX2V4cF0KLSMgVW5sZXNzIG9wdF9zaWxlbnQgaXMgdHJ1ZSwgdGhlbiBvdXRwdXQgQ01ELiAgVGhlbiwgaWYgb3B0X2RyeXJ1biBpcworIyBmdW5jX3N0cmlwbmFtZSBQUkVGSVggU1VGRklYIE5BTUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIGZyb20gTkFNRSwgYW5kIHN0b3JlIGluIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4KKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX1hTSV9PUFMiOyB0aGVuCisgIGV2YWwgJ2Z1bmNfc3RyaXBuYW1lICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCisgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgdmFyaWFibGUgZmlyc3QuCisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSQzCisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkMSJ9CisgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkMiJ9CisgIH0nCitlbHNlCisgIGZ1bmNfc3RyaXBuYW1lICgpCisgIHsKKyAgICAkZGVidWdfY21kCisKKyAgICBjYXNlICQyIGluCisgICAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJDMiIHwgJFNFRCAtZSAicyVeJDElJSIgLWUgInMlXFxcXCQyXCQlJSJgOzsKKyAgICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkMyIgfCAkU0VEIC1lICJzJV4kMSUlIiAtZSAicyUkMlwkJSUiYDs7CisgICAgZXNhYworICB9CitmaQorCisKKyMgZnVuY19zaG93X2V2YWwgQ01EIFtGQUlMX0VYUF0KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVW5sZXNzIG9wdF9xdWlldCBpcyB0cnVlLCB0aGVuIG91dHB1dCBDTUQuICBUaGVuLCBpZiBvcHRfZHJ5cnVuIGlzCiAjIG5vdCB0cnVlLCBldmFsdWF0ZSBDTUQuICBJZiB0aGUgZXZhbHVhdGlvbiBvZiBDTUQgZmFpbHMsIGFuZCBGQUlMX0VYUAogIyBpcyBnaXZlbiwgdGhlbiBldmFsdWF0ZSBpdC4KIGZ1bmNfc2hvd19ldmFsICgpCiB7Ci0gICAgbXlfY21kPSIkMSIKLSAgICBteV9mYWlsX2V4cD0iJHsyLTp9IgorICAgICRkZWJ1Z19jbWQKIAotICAgICR7b3B0X3NpbGVudC1mYWxzZX0gfHwgewotICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkbXlfY21kIgotICAgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgotICAgIH0KKyAgICBfR19jbWQ9JDEKKyAgICBfR19mYWlsX2V4cD0kezItJzonfQogCi0gICAgaWYgJHtvcHRfZHJ5X3J1bi1mYWxzZX07IHRoZW4gOjsgZWxzZQotICAgICAgZXZhbCAiJG15X2NtZCIKLSAgICAgIG15X3N0YXR1cz0kPwotICAgICAgaWYgdGVzdCAiJG15X3N0YXR1cyIgLWVxIDA7IHRoZW4gOjsgZWxzZQotCWV2YWwgIihleGl0ICRteV9zdGF0dXMpOyAkbXlfZmFpbF9leHAiCisgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkX0dfY21kIgorICAgIGV2YWwgImZ1bmNfbm90cXVpZXQgJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCisKKyAgICAkb3B0X2RyeV9ydW4gfHwgeworICAgICAgZXZhbCAiJF9HX2NtZCIKKyAgICAgIF9HX3N0YXR1cz0kPworICAgICAgaWYgdGVzdCAwIC1uZSAiJF9HX3N0YXR1cyI7IHRoZW4KKwlldmFsICIoZXhpdCAkX0dfc3RhdHVzKTsgJF9HX2ZhaWxfZXhwIgogICAgICAgZmkKLSAgICBmaQorICAgIH0KIH0KIAogCi0jIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSBjbWQgW2ZhaWxfZXhwXQotIyBVbmxlc3Mgb3B0X3NpbGVudCBpcyB0cnVlLCB0aGVuIG91dHB1dCBDTUQuICBUaGVuLCBpZiBvcHRfZHJ5cnVuIGlzCisjIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSBDTUQgW0ZBSUxfRVhQXQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVW5sZXNzIG9wdF9xdWlldCBpcyB0cnVlLCB0aGVuIG91dHB1dCBDTUQuICBUaGVuLCBpZiBvcHRfZHJ5cnVuIGlzCiAjIG5vdCB0cnVlLCBldmFsdWF0ZSBDTUQuICBJZiB0aGUgZXZhbHVhdGlvbiBvZiBDTUQgZmFpbHMsIGFuZCBGQUlMX0VYUAogIyBpcyBnaXZlbiwgdGhlbiBldmFsdWF0ZSBpdC4gIFVzZSB0aGUgc2F2ZWQgbG9jYWxlIGZvciBldmFsdWF0aW9uLgogZnVuY19zaG93X2V2YWxfbG9jYWxlICgpCiB7Ci0gICAgbXlfY21kPSIkMSIKLSAgICBteV9mYWlsX2V4cD0iJHsyLTp9IgorICAgICRkZWJ1Z19jbWQKIAotICAgICR7b3B0X3NpbGVudC1mYWxzZX0gfHwgewotICAgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkbXlfY21kIgorICAgIF9HX2NtZD0kMQorICAgIF9HX2ZhaWxfZXhwPSR7Mi0nOid9CisKKyAgICAkb3B0X3F1aWV0IHx8IHsKKyAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJF9HX2NtZCIKICAgICAgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKICAgICB9CiAKLSAgICBpZiAke29wdF9kcnlfcnVuLWZhbHNlfTsgdGhlbiA6OyBlbHNlCi0gICAgICBldmFsICIkbHRfdXNlcl9sb2NhbGUKLQkgICAgJG15X2NtZCIKLSAgICAgIG15X3N0YXR1cz0kPwotICAgICAgZXZhbCAiJGx0X3NhZmVfbG9jYWxlIgotICAgICAgaWYgdGVzdCAiJG15X3N0YXR1cyIgLWVxIDA7IHRoZW4gOjsgZWxzZQotCWV2YWwgIihleGl0ICRteV9zdGF0dXMpOyAkbXlfZmFpbF9leHAiCisgICAgJG9wdF9kcnlfcnVuIHx8IHsKKyAgICAgIGV2YWwgIiRfR191c2VyX2xvY2FsZQorCSAgICAkX0dfY21kIgorICAgICAgX0dfc3RhdHVzPSQ/CisgICAgICBldmFsICIkX0dfc2FmZV9sb2NhbGUiCisgICAgICBpZiB0ZXN0IDAgLW5lICIkX0dfc3RhdHVzIjsgdGhlbgorCWV2YWwgIihleGl0ICRfR19zdGF0dXMpOyAkX0dfZmFpbF9leHAiCiAgICAgICBmaQotICAgIGZpCisgICAgfQogfQogCisKICMgZnVuY190cl9zaAorIyAtLS0tLS0tLS0tCiAjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgogIyBSZXN1bHQgaXMgc3RvcmVkIGluICRmdW5jX3RyX3NoX3Jlc3VsdC4gIEFsbCBjaGFyYWN0ZXJzCiAjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAogIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KIGZ1bmNfdHJfc2ggKCkKIHsKLSAgY2FzZSAkMSBpbgotICBbMC05XSogfCAqWyFhLXpBLVowLTlfXSopCi0gICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCi0gICAgOzsKLSAgKiApCi0gICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKLSAgICA7OwotICBlc2FjCisgICAgJGRlYnVnX2NtZAorCisgICAgY2FzZSAkMSBpbgorICAgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKKyAgICAgIGZ1bmNfdHJfc2hfcmVzdWx0PWAkRUNITyAiJDEiIHwgJFNFRCAtZSAncy9eXChbMC05XVwpL19cMS8nIC1lICdzL1teYS16QS1aMC05X10vXy9nJ2AKKyAgICAgIDs7CisgICAgKiApCisgICAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQorICAgICAgOzsKKyAgICBlc2FjCiB9CiAKIAotIyBmdW5jX3ZlcnNpb24KLSMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgotZnVuY192ZXJzaW9uICgpCisjIGZ1bmNfdmVyYm9zZSBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIGluIHZlcmJvc2UgbW9kZSBvbmx5LgorZnVuY192ZXJib3NlICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZworICAgICRkZWJ1Z19jbWQKIAotICAgICRTRUQgLW4gJy8oQykvIWIgZ28KLQk6bW9yZQotCS9cLi8hewotCSAgTgotCSAgcy9cbiMgLyAvCi0JICBiIG1vcmUKLQl9Ci0JOmdvCi0JL14jICckUFJPR1JBTScgKEdOVSAvLC8jIHdhcnJhbnR5OyAvIHsKLSAgICAgICAgcy9eIyAvLwotCXMvXiMgKiQvLwotICAgICAgICBzL1woKEMpXClbIDAtOSwtXSpcKCBbMS05XVswLTldKlwpL1wxXDIvCi0gICAgICAgIHAKLSAgICAgfScgPCAiJHByb2dwYXRoIgotICAgICBleGl0ICQ/CisgICAgJG9wdF92ZXJib3NlICYmIGZ1bmNfZWNobyAiJCoiCisKKyAgICA6CiB9CiAKLSMgZnVuY191c2FnZQotIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCi1mdW5jX3VzYWdlICgpCisKKyMgZnVuY193YXJuX2FuZF9jb250aW51ZSBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorZnVuY193YXJuX2FuZF9jb250aW51ZSAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCiAKLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8gewotICAgICAgICBzL14jIC8vCi0Jcy9eIyAqJC8vCi0Jcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLwotCXAKLSAgICB9JyA8ICIkcHJvZ3BhdGgiCi0gICAgZWNobwotICAgICRFQ0hPICJydW4gXGAkcHJvZ25hbWUgLS1oZWxwIHwgbW9yZScgZm9yIGZ1bGwgdXNhZ2UiCi0gICAgZXhpdCAkPworICAgICRyZXF1aXJlX3Rlcm1fY29sb3JzCisKKyAgICBmdW5jX2VjaG9faW5maXhfMSAiJHt0Y19yZWR9d2FybmluZyR0Y19yZXNldCIgIiQqIiA+JjIKIH0KIAotIyBmdW5jX2hlbHAgW05PRVhJVF0KLSMgRWNobyBsb25nIGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQsCi0jIHVubGVzcyAnbm9leGl0JyBpcyBwYXNzZWQgYXMgYXJndW1lbnQuCisKKyMgZnVuY193YXJuaW5nIENBVEVHT1JZIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4gV2FybmluZworIyBtZXNzYWdlcyBjYW4gYmUgZmlsdGVyZWQgYWNjb3JkaW5nIHRvIENBVEVHT1JZLCB3aGVyZSB0aGlzIGZ1bmN0aW9uCisjIGVsaWRlcyBtZXNzYWdlcyB3aGVyZSBDQVRFR09SWSBpcyBub3QgbGlzdGVkIGluIHRoZSBnbG9iYWwgdmFyaWFibGUKKyMgJ29wdF93YXJuaW5nX3R5cGVzJy4KK2Z1bmNfd2FybmluZyAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgICMgQ0FURUdPUlkgbXVzdCBiZSBpbiB0aGUgd2FybmluZ19jYXRlZ29yaWVzIGxpc3QhCisgICAgY2FzZSAiICR3YXJuaW5nX2NhdGVnb3JpZXMgIiBpbgorICAgICAgKiIgJDEgIiopIDs7CisgICAgICAqKSBmdW5jX2ludGVybmFsX2Vycm9yICJpbnZhbGlkIHdhcm5pbmcgY2F0ZWdvcnkgJyQxJyIgOzsKKyAgICBlc2FjCisKKyAgICBfR19jYXRlZ29yeT0kMQorICAgIHNoaWZ0CisKKyAgICBjYXNlICIgJG9wdF93YXJuaW5nX3R5cGVzICIgaW4KKyAgICAgICoiICRfR19jYXRlZ29yeSAiKikgJHdhcm5pbmdfZnVuYyAkezErIiRAIn0gOzsKKyAgICBlc2FjCit9CisKKworIyBmdW5jX3NvcnRfdmVyIFZFUjEgVkVSMgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyAnc29ydCAtVicgaXMgbm90IGdlbmVyYWxseSBhdmFpbGFibGUuCisjIE5vdGUgdGhpcyBkZXZpYXRlcyBmcm9tIHRoZSB2ZXJzaW9uIGNvbXBhcmlzb24gaW4gYXV0b21ha2UKKyMgaW4gdGhhdCBpdCB0cmVhdHMgMS41IDwgMS41LjAsIGFuZCB0cmVhdHMgMS40LjRhIDwgMS40LXAzYQorIyBidXQgdGhpcyBzaG91bGQgc3VmZmljZSBhcyB3ZSB3b24ndCBiZSBzcGVjaWZ5aW5nIG9sZAorIyB2ZXJzaW9uIGZvcm1hdHMgb3IgcmVkdW5kYW50IHRyYWlsaW5nIC4wIGluIGJvb3RzdHJhcC5jb25mLgorIyBJZiB3ZSBkaWQgd2FudCBmdWxsIGNvbXBhdGliaWxpdHkgdGhlbiB3ZSBzaG91bGQgcHJvYmFibHkKKyMgdXNlIG00X3ZlcnNpb25fY29tcGFyZSBmcm9tIGF1dG9jb25mLgorZnVuY19zb3J0X3ZlciAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIHByaW50ZiAnJXNcbiVzXG4nICIkMSIgIiQyIiBcCisgICAgICB8IHNvcnQgLXQuIC1rIDEsMW4gLWsgMiwybiAtayAzLDNuIC1rIDQsNG4gLWsgNSw1biAtayA2LDZuIC1rIDcsN24gLWsgOCw4biAtayA5LDluCit9CisKKyMgZnVuY19sdF92ZXIgUFJFViBDVVJSCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBSZXR1cm4gdHJ1ZSBpZiBQUkVWIGFuZCBDVVJSIGFyZSBpbiB0aGUgY29ycmVjdCBvcmRlciBhY2NvcmRpbmcgdG8KKyMgZnVuY19zb3J0X3Zlciwgb3RoZXJ3aXNlIGZhbHNlLiAgVXNlIGl0IGxpa2UgdGhpczoKKyMKKyMgIGZ1bmNfbHRfdmVyICIkcHJldl92ZXIiICIkcHJvcG9zZWRfdmVyIiB8fCBmdW5jX2ZhdGFsX2Vycm9yICIuLi4iCitmdW5jX2x0X3ZlciAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIHRlc3QgIngkMSIgPSB4YGZ1bmNfc29ydF92ZXIgIiQxIiAiJDIiIHwgJFNFRCAxcWAKK30KKworCisjIExvY2FsIHZhcmlhYmxlczoKKyMgbW9kZTogc2hlbGwtc2NyaXB0CisjIHNoLWluZGVudGF0aW9uOiAyCisjIGV2YWw6IChhZGQtaG9vayAnYmVmb3JlLXNhdmUtaG9vayAndGltZS1zdGFtcCkKKyMgdGltZS1zdGFtcC1wYXR0ZXJuOiAiMTAvc2NyaXB0dmVyc2lvbj0lOnktJTAybS0lMDJkLiUwMkg7ICMgVVRDIgorIyB0aW1lLXN0YW1wLXRpbWUtem9uZTogIlVUQyIKKyMgRW5kOgorIyEgL2Jpbi9zaAorCisjIFNldCBhIHZlcnNpb24gc3RyaW5nIGZvciB0aGlzIHNjcmlwdC4KK3NjcmlwdHZlcnNpb249MjAxNC0wMS0wNy4wMzsgIyBVVEMKKworIyBBIHBvcnRhYmxlLCBwbHVnZ2FibGUgb3B0aW9uIHBhcnNlciBmb3IgQm91cm5lIHNoZWxsLgorIyBXcml0dGVuIGJ5IEdhcnkgVi4gVmF1Z2hhbiwgMjAxMAorCisjIENvcHlyaWdodCAoQykgMjAxMC0yMDE1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTworIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKyMgUGxlYXNlIHJlcG9ydCBidWdzIG9yIHByb3Bvc2UgcGF0Y2hlcyB0byBnYXJ5QGdudS5vcmcuCisKKworIyMgLS0tLS0tICMjCisjIyBVc2FnZS4gIyMKKyMjIC0tLS0tLSAjIworCisjIFRoaXMgZmlsZSBpcyBhIGxpYnJhcnkgZm9yIHBhcnNpbmcgb3B0aW9ucyBpbiB5b3VyIHNoZWxsIHNjcmlwdHMgYWxvbmcKKyMgd2l0aCBhc3NvcnRlZCBvdGhlciB1c2VmdWwgc3VwcG9ydGluZyBmZWF0dXJlcyB0aGF0IHlvdSBjYW4gbWFrZSB1c2UKKyMgb2YgdG9vLgorIworIyBGb3IgdGhlIHNpbXBsZXN0IHNjcmlwdHMgeW91IG1pZ2h0IG5lZWQgb25seToKKyMKKyMgICAjIS9iaW4vc2gKKyMgICAuIHJlbGF0aXZlL3BhdGgvdG8vZnVuY2xpYi5zaAorIyAgIC4gcmVsYXRpdmUvcGF0aC90by9vcHRpb25zLXBhcnNlcgorIyAgIHNjcmlwdHZlcnNpb249MS4wCisjICAgZnVuY19vcHRpb25zICR7MSsiJEAifQorIyAgIGV2YWwgc2V0IGR1bW15ICIkZnVuY19vcHRpb25zX3Jlc3VsdCI7IHNoaWZ0CisjICAgLi4ucmVzdCBvZiB5b3VyIHNjcmlwdC4uLgorIworIyBJbiBvcmRlciBmb3IgdGhlICctLXZlcnNpb24nIG9wdGlvbiB0byB3b3JrLCB5b3Ugd2lsbCBuZWVkIHRvIGhhdmUgYQorIyBzdWl0YWJseSBmb3JtYXR0ZWQgY29tbWVudCBsaWtlIHRoZSBvbmUgYXQgdGhlIHRvcCBvZiB0aGlzIGZpbGUKKyMgc3RhcnRpbmcgd2l0aCAnIyBXcml0dGVuIGJ5ICcgYW5kIGVuZGluZyB3aXRoICcjIHdhcnJhbnR5OyAnLgorIworIyBGb3IgJy1oJyBhbmQgJy0taGVscCcgdG8gd29yaywgeW91IHdpbGwgYWxzbyBuZWVkIGEgb25lIGxpbmUKKyMgZGVzY3JpcHRpb24gb2YgeW91ciBzY3JpcHQncyBwdXJwb3NlIGluIGEgY29tbWVudCBkaXJlY3RseSBhYm92ZSB0aGUKKyMgJyMgV3JpdHRlbiBieSAnIGxpbmUsIGxpa2UgdGhlIG9uZSBhdCB0aGUgdG9wIG9mIHRoaXMgZmlsZS4KKyMKKyMgVGhlIGRlZmF1bHQgb3B0aW9ucyBhbHNvIHN1cHBvcnQgJy0tZGVidWcnLCB3aGljaCB3aWxsIHR1cm4gb24gc2hlbGwKKyMgZXhlY3V0aW9uIHRyYWNpbmcgKHNlZSB0aGUgY29tbWVudCBhYm92ZSBkZWJ1Z19jbWQgYmVsb3cgZm9yIGFub3RoZXIKKyMgdXNlKSwgYW5kICctLXZlcmJvc2UnIGFuZCB0aGUgZnVuY192ZXJib3NlIGZ1bmN0aW9uIHRvIGFsbG93IHlvdXIgc2NyaXB0CisjIHRvIGRpc3BsYXkgdmVyYm9zZSBtZXNzYWdlcyBvbmx5IHdoZW4geW91ciB1c2VyIGhhcyBzcGVjaWZpZWQKKyMgJy0tdmVyYm9zZScuCisjCisjIEFmdGVyIHNvdXJjaW5nIHRoaXMgZmlsZSwgeW91IGNhbiBwbHVnIHByb2Nlc3NpbmcgZm9yIGFkZGl0aW9uYWwKKyMgb3B0aW9ucyBieSBhbWVuZGluZyB0aGUgdmFyaWFibGVzIGZyb20gdGhlICdDb25maWd1cmF0aW9uJyBzZWN0aW9uCisjIGJlbG93LCBhbmQgZm9sbG93aW5nIHRoZSBpbnN0cnVjdGlvbnMgaW4gdGhlICdPcHRpb24gcGFyc2luZycKKyMgc2VjdGlvbiBmdXJ0aGVyIGRvd24uCisKKyMjIC0tLS0tLS0tLS0tLS0tICMjCisjIyBDb25maWd1cmF0aW9uLiAjIworIyMgLS0tLS0tLS0tLS0tLS0gIyMKKworIyBZb3Ugc2hvdWxkIG92ZXJyaWRlIHRoZXNlIHZhcmlhYmxlcyBpbiB5b3VyIHNjcmlwdCBhZnRlciBzb3VyY2luZyB0aGlzCisjIGZpbGUgc28gdGhhdCB0aGV5IHJlZmxlY3QgdGhlIGN1c3RvbWlzYXRpb25zIHlvdSBoYXZlIGFkZGVkIHRvIHRoZQorIyBvcHRpb24gcGFyc2VyLgorCisjIFRoZSB1c2FnZSBsaW5lIGZvciBvcHRpb24gcGFyc2luZyBlcnJvcnMgYW5kIHRoZSBzdGFydCBvZiAnLWgnIGFuZAorIyAnLS1oZWxwJyBvdXRwdXQgbWVzc2FnZXMuIFlvdSBjYW4gZW1iZWQgc2hlbGwgdmFyaWFibGVzIGZvciBkZWxheWVkCisjIGV4cGFuc2lvbiBhdCB0aGUgdGltZSB0aGUgbWVzc2FnZSBpcyBkaXNwbGF5ZWQsIGJ1dCB5b3Ugd2lsbCBuZWVkIHRvCisjIHF1b3RlIG90aGVyIHNoZWxsIG1ldGEtY2hhcmFjdGVycyBjYXJlZnVsbHkgdG8gcHJldmVudCB0aGVtIGJlaW5nCisjIGV4cGFuZGVkIHdoZW4gdGhlIGNvbnRlbnRzIGFyZSBldmFsZWQuCit1c2FnZT0nJHByb2dwYXRoIFtPUFRJT05dLi4uJworCisjIFNob3J0IGhlbHAgbWVzc2FnZSBpbiByZXNwb25zZSB0byAnLWgnIGFuZCAnLS1oZWxwJy4gIEFkZCB0byB0aGlzIG9yCisjIG92ZXJyaWRlIGl0IGFmdGVyIHNvdXJjaW5nIHRoaXMgbGlicmFyeSB0byByZWZsZWN0IHRoZSBmdWxsIHNldCBvZgorIyBvcHRpb25zIHlvdXIgc2NyaXB0IGFjY2VwdHMuCit1c2FnZV9tZXNzYWdlPSJcCisgICAgICAgLS1kZWJ1ZyAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworICAgLVcsIC0td2FybmluZ3M9Q0FURUdPUlkKKyAgICAgICAgICAgICAgICAgICAgICByZXBvcnQgdGhlIHdhcm5pbmdzIGZhbGxpbmcgaW4gQ0FURUdPUlkgW2FsbF0KKyAgIC12LCAtLXZlcmJvc2UgICAgICB2ZXJib3NlbHkgcmVwb3J0IHByb2Nlc3NpbmcKKyAgICAgICAtLXZlcnNpb24gICAgICBwcmludCB2ZXJzaW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgICAtaCwgLS1oZWxwICAgICAgICAgcHJpbnQgc2hvcnQgb3IgbG9uZyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQKKyIKKworIyBBZGRpdGlvbmFsIHRleHQgYXBwZW5kZWQgdG8gJ3VzYWdlX21lc3NhZ2UnIGluIHJlc3BvbnNlIHRvICctLWhlbHAnLgorbG9uZ19oZWxwX21lc3NhZ2U9IgorV2FybmluZyBjYXRlZ29yaWVzIGluY2x1ZGU6CisgICAgICAgJ2FsbCcgICAgICAgICAgc2hvdyBhbGwgd2FybmluZ3MKKyAgICAgICAnbm9uZScgICAgICAgICB0dXJuIG9mZiBhbGwgdGhlIHdhcm5pbmdzCisgICAgICAgJ2Vycm9yJyAgICAgICAgd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZmF0YWwgZXJyb3JzIgorCisjIEhlbHAgbWVzc2FnZSBwcmludGVkIGJlZm9yZSBmYXRhbCBvcHRpb24gcGFyc2luZyBlcnJvcnMuCitmYXRhbF9oZWxwPSJUcnkgJ1wkcHJvZ25hbWUgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCisKKworCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisjIyBIb29rIGZ1bmN0aW9uIG1hbmFnZW1lbnQuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICMjCisKKyMgVGhpcyBzZWN0aW9uIGNvbnRhaW5zIGZ1bmN0aW9ucyBmb3IgYWRkaW5nLCByZW1vdmluZywgYW5kIHJ1bm5pbmcgaG9va3MKKyMgdG8gdGhlIG1haW4gY29kZS4gIEEgaG9vayBpcyBqdXN0IGEgbmFtZWQgbGlzdCBvZiBvZiBmdW5jdGlvbiwgdGhhdCBjYW4KKyMgYmUgcnVuIGluIG9yZGVyIGxhdGVyIG9uLgorCisjIGZ1bmNfaG9va2FibGUgRlVOQ19OQU1FCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIERlY2xhcmUgdGhhdCBGVU5DX05BTUUgd2lsbCBydW4gaG9va3MgYWRkZWQgd2l0aAorIyAnZnVuY19hZGRfaG9vayBGVU5DX05BTUUgLi4uJy4KK2Z1bmNfaG9va2FibGUgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX2FwcGVuZCBob29rYWJsZV9mbnMgIiAkMSIKK30KKworCisjIGZ1bmNfYWRkX2hvb2sgRlVOQ19OQU1FIEhPT0tfRlVOQworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVxdWVzdCB0aGF0IEZVTkNfTkFNRSBjYWxsIEhPT0tfRlVOQyBiZWZvcmUgaXQgcmV0dXJucy4gIEZVTkNfTkFNRSBtdXN0CisjIGZpcnN0IGhhdmUgYmVlbiBkZWNsYXJlZCAiaG9va2FibGUiIGJ5IGEgY2FsbCB0byAnZnVuY19ob29rYWJsZScuCitmdW5jX2FkZF9ob29rICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgY2FzZSAiICRob29rYWJsZV9mbnMgIiBpbgorICAgICAgKiIgJDEgIiopIDs7CisgICAgICAqKSBmdW5jX2ZhdGFsX2Vycm9yICInJDEnIGRvZXMgbm90IGFjY2VwdCBob29rIGZ1bmN0aW9ucy4iIDs7CisgICAgZXNhYworCisgICAgZXZhbCBmdW5jX2FwcGVuZCAkezF9X2hvb2tzICciICQyIicKK30KKworCisjIGZ1bmNfcmVtb3ZlX2hvb2sgRlVOQ19OQU1FIEhPT0tfRlVOQworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUmVtb3ZlIEhPT0tfRlVOQyBmcm9tIHRoZSBsaXN0IG9mIGZ1bmN0aW9ucyBjYWxsZWQgYnkgRlVOQ19OQU1FLgorZnVuY19yZW1vdmVfaG9vayAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIGV2YWwgJHsxfV9ob29rcz0nYCRFQ0hPICJcJCckMSdfaG9va3MiIHwkU0VEICJzfCAnJDInfHwiYCcKK30KKworCisjIGZ1bmNfcnVuX2hvb2tzIEZVTkNfTkFNRSBbQVJHXS4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUnVuIGFsbCBob29rIGZ1bmN0aW9ucyByZWdpc3RlcmVkIHRvIEZVTkNfTkFNRS4KKyMgSXQgaXMgYXNzdW1lZCB0aGF0IHRoZSBsaXN0IG9mIGhvb2sgZnVuY3Rpb25zIGNvbnRhaW5zIG5vdGhpbmcgbW9yZQorIyB0aGFuIGEgd2hpdGVzcGFjZS1kZWxpbWl0ZWQgbGlzdCBvZiBsZWdhbCBzaGVsbCBmdW5jdGlvbiBuYW1lcywgYW5kCisjIG5vIGVmZm9ydCBpcyB3YXN0ZWQgdHJ5aW5nIHRvIGNhdGNoIHNoZWxsIG1ldGEtY2hhcmFjdGVycyBvciBwcmVzZXJ2ZQorIyB3aGl0ZXNwYWNlLgorZnVuY19ydW5faG9va3MgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBjYXNlICIgJGhvb2thYmxlX2ZucyAiIGluCisgICAgICAqIiAkMSAiKikgOzsKKyAgICAgICopIGZ1bmNfZmF0YWxfZXJyb3IgIickMScgZG9lcyBub3Qgc3VwcG9ydCBob29rIGZ1bmNpb25zLm4iIDs7CisgICAgZXNhYworCisgICAgZXZhbCBfR19ob29rX2Zucz1cJCQxX2hvb2tzOyBzaGlmdAorCisgICAgZm9yIF9HX2hvb2sgaW4gJF9HX2hvb2tfZm5zOyBkbworICAgICAgZXZhbCAkX0dfaG9vayAnIiRAIicKKworICAgICAgIyBzdG9yZSByZXR1cm5lZCBvcHRpb25zIGxpc3QgYmFjayBpbnRvIHBvc2l0aW9uYWwKKyAgICAgICMgcGFyYW1ldGVycyBmb3IgbmV4dCAnY21kJyBleGVjdXRpb24uCisgICAgICBldmFsIF9HX2hvb2tfcmVzdWx0PVwkJHtfR19ob29rfV9yZXN1bHQKKyAgICAgIGV2YWwgc2V0IGR1bW15ICIkX0dfaG9va19yZXN1bHQiOyBzaGlmdAorICAgIGRvbmUKKworICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgJHsxKyIkQCJ9CisgICAgZnVuY19ydW5faG9va3NfcmVzdWx0PSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorfQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tICMjCisjIyBPcHRpb24gcGFyc2luZy4gIyMKKyMjIC0tLS0tLS0tLS0tLS0tLSAjIworCisjIEluIG9yZGVyIHRvIGFkZCB5b3VyIG93biBvcHRpb24gcGFyc2luZyBob29rcywgeW91IG11c3QgYWNjZXB0IHRoZQorIyBmdWxsIHBvc2l0aW9uYWwgcGFyYW1ldGVyIGxpc3QgaW4geW91ciBob29rIGZ1bmN0aW9uLCByZW1vdmUgYW55CisjIG9wdGlvbnMgdGhhdCB5b3UgYWN0aW9uLCBhbmQgdGhlbiBwYXNzIGJhY2sgdGhlIHJlbWFpbmluZyB1bnByb2Nlc3NlZAorIyBvcHRpb25zIGluICc8aG9va2VkX2Z1bmN0aW9uX25hbWU+X3Jlc3VsdCcsIGVzY2FwZWQgc3VpdGFibHkgZm9yCisjICdldmFsJy4gIExpa2UgdGhpczoKKyMKKyMgICAgbXlfb3B0aW9uc19wcmVwICgpCisjICAgIHsKKyMgICAgICAgICRkZWJ1Z19jbWQKKyMKKyMgICAgICAgICMgRXh0ZW5kIHRoZSBleGlzdGluZyB1c2FnZSBtZXNzYWdlLgorIyAgICAgICAgdXNhZ2VfbWVzc2FnZT0kdXNhZ2VfbWVzc2FnZScKKyMgICAgICAtcywgLS1zaWxlbnQgICAgICAgZG9uJ1wnJ3QgcHJpbnQgaW5mb3JtYXRpb25hbCBtZXNzYWdlcworIyAgICAnCisjCisjICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICR7MSsiJEAifQorIyAgICAgICAgbXlfb3B0aW9uc19wcmVwX3Jlc3VsdD0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKKyMgICAgfQorIyAgICBmdW5jX2FkZF9ob29rIGZ1bmNfb3B0aW9uc19wcmVwIG15X29wdGlvbnNfcHJlcAorIworIworIyAgICBteV9zaWxlbnRfb3B0aW9uICgpCisjICAgIHsKKyMgICAgICAgICRkZWJ1Z19jbWQKKyMKKyMgICAgICAgICMgTm90ZSB0aGF0IGZvciBlZmZpY2llbmN5LCB3ZSBwYXJzZSBhcyBtYW55IG9wdGlvbnMgYXMgd2UgY2FuCisjICAgICAgICAjIHJlY29nbmlzZSBpbiBhIGxvb3AgYmVmb3JlIHBhc3NpbmcgdGhlIHJlbWFpbmRlciBiYWNrIHRvIHRoZQorIyAgICAgICAgIyBjYWxsZXIgb24gdGhlIGZpcnN0IHVucmVjb2duaXNlZCBhcmd1bWVudCB3ZSBlbmNvdW50ZXIuCisjICAgICAgICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbworIyAgICAgICAgICBvcHQ9JDE7IHNoaWZ0CisjICAgICAgICAgIGNhc2UgJG9wdCBpbgorIyAgICAgICAgICAgIC0tc2lsZW50fC1zKSBvcHRfc2lsZW50PTogOzsKKyMgICAgICAgICAgICAjIFNlcGFyYXRlIG5vbi1hcmd1bWVudCBzaG9ydCBvcHRpb25zOgorIyAgICAgICAgICAgIC1zKikgICAgICAgICBmdW5jX3NwbGl0X3Nob3J0X29wdCAiJF9HX29wdCIKKyMgICAgICAgICAgICAgICAgICAgICAgICAgc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgXAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIi0kZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIiAkezErIiRAIn0KKyMgICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQKKyMgICAgICAgICAgICAgICAgICAgICAgICAgOzsKKyMgICAgICAgICAgICAqKSAgICAgICAgICAgIHNldCBkdW1teSAiJF9HX29wdCIgIiQqIjsgc2hpZnQ7IGJyZWFrIDs7CisjICAgICAgICAgIGVzYWMKKyMgICAgICAgIGRvbmUKKyMKKyMgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgJHsxKyIkQCJ9CisjICAgICAgICBteV9zaWxlbnRfb3B0aW9uX3Jlc3VsdD0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKKyMgICAgfQorIyAgICBmdW5jX2FkZF9ob29rIGZ1bmNfcGFyc2Vfb3B0aW9ucyBteV9zaWxlbnRfb3B0aW9uCisjCisjCisjICAgIG15X29wdGlvbl92YWxpZGF0aW9uICgpCisjICAgIHsKKyMgICAgICAgICRkZWJ1Z19jbWQKKyMKKyMgICAgICAgICRvcHRfc2lsZW50ICYmICRvcHRfdmVyYm9zZSAmJiBmdW5jX2ZhdGFsX2hlbHAgIlwKKyMgICAgJy0tc2lsZW50JyBhbmQgJy0tdmVyYm9zZScgb3B0aW9ucyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLiIKKyMKKyMgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgJHsxKyIkQCJ9CisjICAgICAgICBteV9vcHRpb25fdmFsaWRhdGlvbl9yZXN1bHQ9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CisjICAgIH0KKyMgICAgZnVuY19hZGRfaG9vayBmdW5jX3ZhbGlkYXRlX29wdGlvbnMgbXlfb3B0aW9uX3ZhbGlkYXRpb24KKyMKKyMgWW91J2xsIGFsc2UgbmVlZCB0byBtYW51YWxseSBhbWVuZCAkdXNhZ2VfbWVzc2FnZSB0byByZWZsZWN0IHRoZSBleHRyYQorIyBvcHRpb25zIHlvdSBwYXJzZS4gIEl0J3MgcHJlZmVyYWJsZSB0byBhcHBlbmQgaWYgeW91IGNhbiwgc28gdGhhdAorIyBtdWx0aXBsZSBvcHRpb24gcGFyc2luZyBob29rcyBjYW4gYmUgYWRkZWQgc2FmZWx5LgorCisKKyMgZnVuY19vcHRpb25zIFtBUkddLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBBbGwgdGhlIGZ1bmN0aW9ucyBjYWxsZWQgaW5zaWRlIGZ1bmNfb3B0aW9ucyBhcmUgaG9va2FibGUuIFNlZSB0aGUKKyMgaW5kaXZpZHVhbCBpbXBsZW1lbnRhdGlvbnMgZm9yIGRldGFpbHMuCitmdW5jX2hvb2thYmxlIGZ1bmNfb3B0aW9ucworZnVuY19vcHRpb25zICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgZnVuY19vcHRpb25zX3ByZXAgJHsxKyIkQCJ9CisgICAgZXZhbCBmdW5jX3BhcnNlX29wdGlvbnMgXAorICAgICAgICAke2Z1bmNfb3B0aW9uc19wcmVwX3Jlc3VsdCsiJGZ1bmNfb3B0aW9uc19wcmVwX3Jlc3VsdCJ9CisgICAgZXZhbCBmdW5jX3ZhbGlkYXRlX29wdGlvbnMgXAorICAgICAgICAke2Z1bmNfcGFyc2Vfb3B0aW9uc19yZXN1bHQrIiRmdW5jX3BhcnNlX29wdGlvbnNfcmVzdWx0In0KKworICAgIGV2YWwgZnVuY19ydW5faG9va3MgZnVuY19vcHRpb25zIFwKKyAgICAgICAgJHtmdW5jX3ZhbGlkYXRlX29wdGlvbnNfcmVzdWx0KyIkZnVuY192YWxpZGF0ZV9vcHRpb25zX3Jlc3VsdCJ9CisKKyAgICAjIHNhdmUgbW9kaWZpZWQgcG9zaXRpb25hbCBwYXJhbWV0ZXJzIGZvciBjYWxsZXIKKyAgICBmdW5jX29wdGlvbnNfcmVzdWx0PSRmdW5jX3J1bl9ob29rc19yZXN1bHQKK30KKworCisjIGZ1bmNfb3B0aW9uc19wcmVwIFtBUkddLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEFsbCBpbml0aWFsaXNhdGlvbnMgcmVxdWlyZWQgYmVmb3JlIHN0YXJ0aW5nIHRoZSBvcHRpb24gcGFyc2UgbG9vcC4KKyMgTm90ZSB0aGF0IHdoZW4gY2FsbGluZyBob29rIGZ1bmN0aW9ucywgd2UgcGFzcyB0aHJvdWdoIHRoZSBsaXN0IG9mCisjIHBvc2l0aW9uYWwgcGFyYW1ldGVycy4gIElmIGEgaG9vayBmdW5jdGlvbiBtb2RpZmllcyB0aGF0IGxpc3QsIGFuZAorIyBuZWVkcyB0byBwcm9wb2dhdGUgdGhhdCBiYWNrIHRvIHJlc3Qgb2YgdGhpcyBzY3JpcHQsIHRoZW4gdGhlIGNvbXBsZXRlCisjIG1vZGlmaWVkIGxpc3QgbXVzdCBiZSBwdXQgaW4gJ2Z1bmNfcnVuX2hvb2tzX3Jlc3VsdCcgYmVmb3JlCisjIHJldHVybmluZy4KK2Z1bmNfaG9va2FibGUgZnVuY19vcHRpb25zX3ByZXAKK2Z1bmNfb3B0aW9uc19wcmVwICgpCit7CisgICAgJGRlYnVnX2NtZAorCisgICAgIyBPcHRpb24gZGVmYXVsdHM6CisgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKyAgICBvcHRfd2FybmluZ190eXBlcz0KKworICAgIGZ1bmNfcnVuX2hvb2tzIGZ1bmNfb3B0aW9uc19wcmVwICR7MSsiJEAifQorCisgICAgIyBzYXZlIG1vZGlmaWVkIHBvc2l0aW9uYWwgcGFyYW1ldGVycyBmb3IgY2FsbGVyCisgICAgZnVuY19vcHRpb25zX3ByZXBfcmVzdWx0PSRmdW5jX3J1bl9ob29rc19yZXN1bHQKK30KKworCisjIGZ1bmNfcGFyc2Vfb3B0aW9ucyBbQVJHXS4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGhlIG1haW4gb3B0aW9uIHBhcnNpbmcgbG9vcC4KK2Z1bmNfaG9va2FibGUgZnVuY19wYXJzZV9vcHRpb25zCitmdW5jX3BhcnNlX29wdGlvbnMgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBmdW5jX3BhcnNlX29wdGlvbnNfcmVzdWx0PQorCisgICAgIyB0aGlzIGp1c3QgZWFzZXMgZXhpdCBoYW5kbGluZworICAgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgICAjIERlZmVyIHRvIGhvb2sgZnVuY3Rpb25zIGZvciBpbml0aWFsIG9wdGlvbiBwYXJzaW5nLCBzbyB0aGV5CisgICAgICAjIGdldCBwcmlvcml0eSBpbiB0aGUgZXZlbnQgb2YgcmV1c2luZyBhbiBvcHRpb24gbmFtZS4KKyAgICAgIGZ1bmNfcnVuX2hvb2tzIGZ1bmNfcGFyc2Vfb3B0aW9ucyAkezErIiRAIn0KKworICAgICAgIyBBZGp1c3QgZnVuY19wYXJzZV9vcHRpb25zIHBvc2l0aW9uYWwgcGFyYW1ldGVycyB0byBtYXRjaAorICAgICAgZXZhbCBzZXQgZHVtbXkgIiRmdW5jX3J1bl9ob29rc19yZXN1bHQiOyBzaGlmdAorCisgICAgICAjIEJyZWFrIG91dCBvZiB0aGUgbG9vcCBpZiB3ZSBhbHJlYWR5IHBhcnNlZCBldmVyeSBvcHRpb24uCisgICAgICB0ZXN0ICQjIC1ndCAwIHx8IGJyZWFrCisKKyAgICAgIF9HX29wdD0kMQorICAgICAgc2hpZnQKKyAgICAgIGNhc2UgJF9HX29wdCBpbgorICAgICAgICAtLWRlYnVnfC14KSAgIGRlYnVnX2NtZD0nc2V0IC14JworICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKKyAgICAgICAgICAgICAgICAgICAgICAkZGVidWdfY21kCisgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLW5vLXdhcm5pbmdzfC0tbm8td2FybmluZ3wtLW5vLXdhcm4pCisgICAgICAgICAgICAgICAgICAgICAgc2V0IGR1bW15IC0td2FybmluZ3Mgbm9uZSAkezErIiRAIn0KKyAgICAgICAgICAgICAgICAgICAgICBzaGlmdAorCQkgICAgICA7OworCisgICAgICAgIC0td2FybmluZ3N8LS13YXJuaW5nfC1XKQorICAgICAgICAgICAgICAgICAgICAgIHRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJF9HX29wdCAmJiBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiAkd2FybmluZ19jYXRlZ29yaWVzICQxIiBpbgorICAgICAgICAgICAgICAgICAgICAgICAgKiIgJDEgIiopCisgICAgICAgICAgICAgICAgICAgICAgICAgICMgdHJhaWxpbmcgc3BhY2UgcHJldmVudHMgbWF0Y2hpbmcgbGFzdCAkMSBhYm92ZQorICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZF91bmlxIG9wdF93YXJuaW5nX3R5cGVzICIgJDEiCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgICAgICAqYWxsKQorICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRfd2FybmluZ190eXBlcz0kd2FybmluZ19jYXRlZ29yaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgICAgICAqbm9uZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3dhcm5pbmdfdHlwZXM9bm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuaW5nX2Z1bmM9OgorICAgICAgICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgICAgICAgKmVycm9yKQorICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRfd2FybmluZ190eXBlcz0kd2FybmluZ19jYXRlZ29yaWVzCisgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdfZnVuYz1mdW5jX2ZhdGFsX2Vycm9yCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2ZhdGFsX2Vycm9yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInVuc3VwcG9ydGVkIHdhcm5pbmcgY2F0ZWdvcnk6ICckMSciCisgICAgICAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLXZlcmJvc2V8LXYpIG9wdF92ZXJib3NlPTogOzsKKyAgICAgICAgLS12ZXJzaW9uKSAgICBmdW5jX3ZlcnNpb24gOzsKKyAgICAgICAgLVw/fC1oKSAgICAgICBmdW5jX3VzYWdlIDs7CisgICAgICAgIC0taGVscCkgICAgICAgZnVuY19oZWxwIDs7CisKKwkjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zIChwbHVnaW5zIG1heSBuZWVkIHRoaXMpOgorCS0tKj0qKSAgICAgICAgZnVuY19zcGxpdF9lcXVhbHMgIiRfR19vcHQiCisJICAgICAgICAgICAgICBzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2VxdWFsc19saHMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIiRmdW5jX3NwbGl0X2VxdWFsc19yaHMiICR7MSsiJEAifQorICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBzaG9ydCBvcHRpb25zOgorICAgICAgICAtVyopCisgICAgICAgICAgICAgICAgICAgICAgZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRfR19vcHQiCisgICAgICAgICAgICAgICAgICAgICAgc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9CisgICAgICAgICAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6CisgICAgICAgIC1cPyp8LWgqfC12KnwteCopCisgICAgICAgICAgICAgICAgICAgICAgZnVuY19zcGxpdF9zaG9ydF9vcHQgIiRfR19vcHQiCisgICAgICAgICAgICAgICAgICAgICAgc2V0IGR1bW15ICIkZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQorICAgICAgICAgICAgICAgICAgICAgIHNoaWZ0CisgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLSkgICAgICAgICAgIGJyZWFrIDs7CisgICAgICAgIC0qKSAgICAgICAgICAgZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbmlzZWQgb3B0aW9uOiAnJF9HX29wdCciIDs7CisgICAgICAgICopICAgICAgICAgICAgc2V0IGR1bW15ICIkX0dfb3B0IiAkezErIiRAIn07IHNoaWZ0OyBicmVhayA7OworICAgICAgZXNhYworICAgIGRvbmUKKworICAgICMgc2F2ZSBtb2RpZmllZCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGNhbGxlcgorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgJHsxKyIkQCJ9CisgICAgZnVuY19wYXJzZV9vcHRpb25zX3Jlc3VsdD0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKK30KKworCisjIGZ1bmNfdmFsaWRhdGVfb3B0aW9ucyBbQVJHXS4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGVyZm9ybSBhbnkgc2FuaXR5IGNoZWNrcyBvbiBvcHRpb24gc2V0dGluZ3MgYW5kL29yIHVuY29uc3VtZWQKKyMgYXJndW1lbnRzLgorZnVuY19ob29rYWJsZSBmdW5jX3ZhbGlkYXRlX29wdGlvbnMKK2Z1bmNfdmFsaWRhdGVfb3B0aW9ucyAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgICMgRGlzcGxheSBhbGwgd2FybmluZ3MgaWYgLVcgd2FzIG5vdCBnaXZlbi4KKyAgICB0ZXN0IC1uICIkb3B0X3dhcm5pbmdfdHlwZXMiIHx8IG9wdF93YXJuaW5nX3R5cGVzPSIgJHdhcm5pbmdfY2F0ZWdvcmllcyIKKworICAgIGZ1bmNfcnVuX2hvb2tzIGZ1bmNfdmFsaWRhdGVfb3B0aW9ucyAkezErIiRAIn0KKworICAgICMgQmFpbCBpZiB0aGUgb3B0aW9ucyB3ZXJlIHNjcmV3ZWQhCisgICAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKKworICAgICMgc2F2ZSBtb2RpZmllZCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGNhbGxlcgorICAgIGZ1bmNfdmFsaWRhdGVfb3B0aW9uc19yZXN1bHQ9JGZ1bmNfcnVuX2hvb2tzX3Jlc3VsdAorfQorCisKKworIyMgLS0tLS0tLS0tLS0tLS0tLS0gIyMKKyMjIEhlbHBlciBmdW5jdGlvbnMuICMjCisjIyAtLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIFRoaXMgc2VjdGlvbiBjb250YWlucyB0aGUgaGVscGVyIGZ1bmN0aW9ucyB1c2VkIGJ5IHRoZSByZXN0IG9mIHRoZQorIyBob29rYWJsZSBvcHRpb24gcGFyc2VyIGZyYW1ld29yayBpbiBhc2NpaS1iZXRpY2FsIG9yZGVyLgorCisKKyMgZnVuY19mYXRhbF9oZWxwIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CisjIGEgaGVscCBoaW50LCBhbmQgZXhpdC4KK2Z1bmNfZmF0YWxfaGVscCAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgIGV2YWwgXCRFQ0hPIFwiIlVzYWdlOiAkdXNhZ2UiXCIKKyAgICBldmFsIFwkRUNITyBcIiIkZmF0YWxfaGVscCJcIgorICAgIGZ1bmNfZXJyb3IgJHsxKyIkQCJ9CisgICAgZXhpdCAkRVhJVF9GQUlMVVJFCit9CisKKworIyBmdW5jX2hlbHAKKyMgLS0tLS0tLS0tCisjIEVjaG8gbG9uZyBoZWxwIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgogZnVuY19oZWxwICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZworICAgICRkZWJ1Z19jbWQKIAotICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC8jIFJlcG9ydCBidWdzIHRvLyB7Ci0JOnByaW50Ci0gICAgICAgIHMvXiMgLy8KLQlzL14jICokLy8KLQlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCi0JcypcJGhvc3QqJyIkaG9zdCInKgotCXMqXCRTSEVMTConIiRTSEVMTCInKgotCXMqXCRMVENDKiciJExUQ0MiJyoKLQlzKlwkTFRDRkxBR1MqJyIkTFRDRkxBR1MiJyoKLQlzKlwkTEQqJyIkTEQiJyoKLQlzL1wkd2l0aF9nbnVfbGQvJyIkd2l0aF9nbnVfbGQiJy8KLQlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoJHtBVVRPTUFLRS1hdXRvbWFrZX0gLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLQlzL1wkYXV0b2NvbmZfdmVyc2lvbi8nImAoJHtBVVRPQ09ORi1hdXRvY29uZn0gLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KLQlwCi0JZAotICAgICB9Ci0gICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKLSAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50Ci0gICAgICcgPCAiJHByb2dwYXRoIgotICAgIHJldD0kPwotICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgotICAgICAgZXhpdCAkcmV0Ci0gICAgZmkKKyAgICBmdW5jX3VzYWdlX21lc3NhZ2UKKyAgICAkRUNITyAiJGxvbmdfaGVscF9tZXNzYWdlIgorICAgIGV4aXQgMAogfQogCi0jIGZ1bmNfbWlzc2luZ19hcmcgYXJnbmFtZQorCisjIGZ1bmNfbWlzc2luZ19hcmcgQVJHTkFNRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciBhbmQgc2V0IGdsb2JhbAogIyBleGl0X2NtZC4KIGZ1bmNfbWlzc2luZ19hcmcgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAogCi0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgorICAgIGZ1bmNfZXJyb3IgIk1pc3NpbmcgYXJndW1lbnQgZm9yICckMScuIgogICAgIGV4aXRfY21kPWV4aXQKIH0KIAogCi0jIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0CisjIGZ1bmNfc3BsaXRfZXF1YWxzIFNUUklORworIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgU2V0IGZ1bmNfc3BsaXRfZXF1YWxzX2xocyBhbmQgZnVuY19zcGxpdF9lcXVhbHNfcmhzIHNoZWxsIHZhcmlhYmxlcyBhZnRlcgorIyBzcGxpdHRpbmcgU1RSSU5HIGF0IHRoZSAnPScgc2lnbi4KK3Rlc3QgLXogIiRfR19IQVZFX1hTSV9PUFMiIFwKKyAgICAmJiAoZXZhbCAneD1hL2IvYzsKKyAgICAgIHRlc3QgNWFhL2JiL2NjID0gIiR7I3h9JHt4JSUvKn0ke3glLyp9JHt4IyovfSR7eCMjKi99IicpIDI+L2Rldi9udWxsIFwKKyAgICAmJiBfR19IQVZFX1hTSV9PUFM9eWVzCisKK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX1hTSV9PUFMiCit0aGVuCisgICMgVGhpcyBpcyBhbiBYU0kgY29tcGF0aWJsZSBzaGVsbCwgYWxsb3dpbmcgYSBmYXN0ZXIgaW1wbGVtZW50YXRpb24uLi4KKyAgZXZhbCAnZnVuY19zcGxpdF9lcXVhbHMgKCkKKyAgeworICAgICAgJGRlYnVnX2NtZAorCisgICAgICBmdW5jX3NwbGl0X2VxdWFsc19saHM9JHsxJSU9Kn0KKyAgICAgIGZ1bmNfc3BsaXRfZXF1YWxzX3Jocz0kezEjKj19CisgICAgICB0ZXN0ICJ4JGZ1bmNfc3BsaXRfZXF1YWxzX2xocyIgPSAieCQxIiBcCisgICAgICAgICYmIGZ1bmNfc3BsaXRfZXF1YWxzX3Jocz0KKyAgfScKK2Vsc2UKKyAgIyAuLi5vdGhlcndpc2UgZmFsbCBiYWNrIHRvIHVzaW5nIGV4cHIsIHdoaWNoIGlzIG9mdGVuIGEgc2hlbGwgYnVpbHRpbi4KKyAgZnVuY19zcGxpdF9lcXVhbHMgKCkKKyAgeworICAgICAgJGRlYnVnX2NtZAorCisgICAgICBmdW5jX3NwbGl0X2VxdWFsc19saHM9YGV4cHIgIngkMSIgOiAneFwoW149XSpcKSdgCisgICAgICBmdW5jX3NwbGl0X2VxdWFsc19yaHM9CisgICAgICB0ZXN0ICJ4JGZ1bmNfc3BsaXRfZXF1YWxzX2xocyIgPSAieCQxIiBcCisgICAgICAgIHx8IGZ1bmNfc3BsaXRfZXF1YWxzX3Jocz1gZXhwciAieCQxIiA6ICd4W149XSo9XCguKlwpJCdgCisgIH0KK2ZpICNmdW5jX3NwbGl0X2VxdWFscworCisKKyMgZnVuY19zcGxpdF9zaG9ydF9vcHQgU0hPUlRPUFQKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAogIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgotZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkKK2lmIHRlc3QgeWVzID0gIiRfR19IQVZFX1hTSV9PUFMiCit0aGVuCisgICMgVGhpcyBpcyBhbiBYU0kgY29tcGF0aWJsZSBzaGVsbCwgYWxsb3dpbmcgYSBmYXN0ZXIgaW1wbGVtZW50YXRpb24uLi4KKyAgZXZhbCAnZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkKKyAgeworICAgICAgJGRlYnVnX2NtZAorCisgICAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQorICAgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifQorICB9JworZWxzZQorICAjIC4uLm90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdXNpbmcgZXhwciwgd2hpY2ggaXMgb2Z0ZW4gYSBzaGVsbCBidWlsdGluLgorICBmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQorICB7CisgICAgICAkZGVidWdfY21kCisKKyAgICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YGV4cHIgIngkMSIgOiAneC1cKC5cKSdgCisgICAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9YGV4cHIgIngkMSIgOiAneC0uXCguKlwpJCdgCisgIH0KK2ZpICNmdW5jX3NwbGl0X3Nob3J0X29wdAorCisKKyMgZnVuY191c2FnZQorIyAtLS0tLS0tLS0tCisjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KK2Z1bmNfdXNhZ2UgKCkKIHsKLSAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJwotICAgIG15X3NlZF9zaG9ydF9yZXN0PScxcy9eLi5cKC4qXCkkL1wxLztxJworICAgICRkZWJ1Z19jbWQKIAotICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCi0gICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKLX0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKyAgICBmdW5jX3VzYWdlX21lc3NhZ2UKKyAgICAkRUNITyAiUnVuICckcHJvZ25hbWUgLS1oZWxwIHwke1BBR0VSLW1vcmV9JyBmb3IgZnVsbCB1c2FnZSIKKyAgICBleGl0IDAKK30KIAogCi0jIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbG9uZ29wdAotIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAotIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgotZnVuY19zcGxpdF9sb25nX29wdCAoKQorIyBmdW5jX3VzYWdlX21lc3NhZ2UKKyMgLS0tLS0tLS0tLS0tLS0tLS0tCisjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dC4KK2Z1bmNfdXNhZ2VfbWVzc2FnZSAoKQogewotICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJwotICAgIG15X3NlZF9sb25nX2FyZz0nMXMvXi0tW149XSo9Ly8nCisgICAgJGRlYnVnX2NtZAogCi0gICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0gICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLX0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotCi1leGl0X2NtZD06CisgICAgZXZhbCBcJEVDSE8gXCIiVXNhZ2U6ICR1c2FnZSJcIgorICAgIGVjaG8KKyAgICAkU0VEIC1uICdzfF4jIHx8CisgICAgICAgIC9eV3JpdHRlbiBieS97CisgICAgICAgICAgeDtwO3gKKyAgICAgICAgfQorCWgKKwkvXldyaXR0ZW4gYnkvcScgPCAiJHByb2dwYXRoIgorICAgIGVjaG8KKyAgICBldmFsIFwkRUNITyBcIiIkdXNhZ2VfbWVzc2FnZSJcIgorfQogCiAKLQotCi0KLW1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKLW1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgotCi0jIEdsb2JhbCB2YXJpYWJsZXMuCi1ub25vcHQ9Ci1wcmVzZXJ2ZV9hcmdzPQotbG8ybz0icy9cXC5sb1wkLy4ke29iamV4dH0vIgotbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgotZXh0cmFjdGVkX2FyY2hpdmVzPQotZXh0cmFjdGVkX3NlcmlhbD0wCi0KLSMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAotIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCi0jIGxlZnQgb3ZlciBieSBzaGVsbHMuCi1leGVjX2NtZD0KLQotIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotZnVuY19hcHBlbmQgKCkKKyMgZnVuY192ZXJzaW9uCisjIC0tLS0tLS0tLS0tLQorIyBFY2hvIHZlcnNpb24gbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCitmdW5jX3ZlcnNpb24gKCkKIHsKLSAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgotfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorICAgICRkZWJ1Z19jbWQKIAotIyBmdW5jX2FwcGVuZF9xdW90ZWQgdmFyIHZhbHVlCi0jIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAotIyBieSBhIHNwYWNlLgotZnVuY19hcHBlbmRfcXVvdGVkICgpCisgICAgcHJpbnRmICclc1xuJyAiJHByb2duYW1lICRzY3JpcHR2ZXJzaW9uIgorICAgICRTRUQgLW4gJworICAgICAgICAvKEMpLyFiIGdvCisgICAgICAgIDptb3JlCisgICAgICAgIC9cLi8heworICAgICAgICAgIE4KKyAgICAgICAgICBzfFxuIyB8IHwKKyAgICAgICAgICBiIG1vcmUKKyAgICAgICAgfQorICAgICAgICA6Z28KKyAgICAgICAgL14jIFdyaXR0ZW4gYnkgLywvIyB3YXJyYW50eTsgLyB7CisgICAgICAgICAgc3xeIyB8fAorICAgICAgICAgIHN8XiMgKiR8fAorICAgICAgICAgIHN8XCgoQylcKVsgMC05LC1dKlsgLC1dXChbMS05XVswLTldKiBcKXxcMSBcMnwKKyAgICAgICAgICBwCisgICAgICAgIH0KKyAgICAgICAgL14jIFdyaXR0ZW4gYnkgLyB7CisgICAgICAgICAgc3xeIyB8fAorICAgICAgICAgIHAKKyAgICAgICAgfQorICAgICAgICAvXndhcnJhbnR5OyAvcScgPCAiJHByb2dwYXRoIgorCisgICAgZXhpdCAkPworfQorCisKKyMgTG9jYWwgdmFyaWFibGVzOgorIyBtb2RlOiBzaGVsbC1zY3JpcHQKKyMgc2gtaW5kZW50YXRpb246IDIKKyMgZXZhbDogKGFkZC1ob29rICdiZWZvcmUtc2F2ZS1ob29rICd0aW1lLXN0YW1wKQorIyB0aW1lLXN0YW1wLXBhdHRlcm46ICIxMC9zY3JpcHR2ZXJzaW9uPSU6eS0lMDJtLSUwMmQuJTAySDsgIyBVVEMiCisjIHRpbWUtc3RhbXAtdGltZS16b25lOiAiVVRDIgorIyBFbmQ6CisKKyMgU2V0IGEgdmVyc2lvbiBzdHJpbmcuCitzY3JpcHR2ZXJzaW9uPScoR05VIGxpYnRvb2wpIDIuNC42JworCisKKyMgZnVuY19lY2hvIEFSRy4uLgorIyAtLS0tLS0tLS0tLS0tLS0tCisjIExpYnRvb2wgYWxzbyBkaXNwbGF5cyB0aGUgY3VycmVudCBtb2RlIGluIG1lc3NhZ2VzLCBzbyBvdmVycmlkZQorIyBmdW5jbGliLnNoIGZ1bmNfZWNobyB3aXRoIHRoaXMgY3VzdG9tIGRlZmluaXRpb24uCitmdW5jX2VjaG8gKCkKIHsKLSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgotICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLX0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisgICAgJGRlYnVnX2NtZAorCisgICAgX0dfbWVzc2FnZT0kKgorCisgICAgZnVuY19lY2hvX0lGUz0kSUZTCisgICAgSUZTPSRubAorICAgIGZvciBfR19saW5lIGluICRfR19tZXNzYWdlOyBkbworICAgICAgSUZTPSRmdW5jX2VjaG9fSUZTCisgICAgICAkRUNITyAiJHByb2duYW1lJHtvcHRfbW9kZSs6ICRvcHRfbW9kZX06ICRfR19saW5lIgorICAgIGRvbmUKKyAgICBJRlM9JGZ1bmNfZWNob19JRlMKK30KIAogCi0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi1mdW5jX2FyaXRoICgpCisjIGZ1bmNfd2FybmluZyBBUkcuLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBMaWJ0b29sIHdhcm5pbmdzIGFyZSBub3QgY2F0ZWdvcml6ZWQsIHNvIG92ZXJyaWRlIGZ1bmNsaWIuc2gKKyMgZnVuY193YXJuaW5nIHdpdGggdGhpcyBzaW1wbGVyIGRlZmluaXRpb24uCitmdW5jX3dhcm5pbmcgKCkKIHsKLSAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCi19ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKyAgICAkZGVidWdfY21kCisKKyAgICAkd2FybmluZ19mdW5jICR7MSsiJEAifQorfQogCiAKLSMgZnVuY19sZW4gc3RyaW5nCi0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi1mdW5jX2xlbiAoKQorIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworIyMgT3B0aW9ucyBwYXJzaW5nLiAjIworIyMgLS0tLS0tLS0tLS0tLS0tLSAjIworCisjIEhvb2sgaW4gdGhlIGZ1bmN0aW9ucyB0byBtYWtlIHN1cmUgb3VyIG93biBvcHRpb25zIGFyZSBwYXJzZWQgZHVyaW5nCisjIHRoZSBvcHRpb24gcGFyc2luZyBsb29wLgorCit1c2FnZT0nJHByb2dwYXRoIFtPUFRJT05dLi4uIFtNT0RFLUFSR10uLi4nCisKKyMgU2hvcnQgaGVscCBtZXNzYWdlIGluIHJlc3BvbnNlIHRvICctaCcuCit1c2FnZV9tZXNzYWdlPSJPcHRpb25zOgorICAgICAgIC0tY29uZmlnICAgICAgICAgICAgIHNob3cgYWxsIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzCisgICAgICAgLS1kZWJ1ZyAgICAgICAgICAgICAgZW5hYmxlIHZlcmJvc2Ugc2hlbGwgdHJhY2luZworICAgLW4sIC0tZHJ5LXJ1biAgICAgICAgICAgIGRpc3BsYXkgY29tbWFuZHMgd2l0aG91dCBtb2RpZnlpbmcgYW55IGZpbGVzCisgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKKyAgICAgICAtLW5vLXdhcm5pbmdzICAgICAgICBlcXVpdmFsZW50IHRvICctV25vbmUnCisgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcyAgZG9uJ3QgcmVtb3ZlIGR1cGxpY2F0ZSBkZXBlbmRlbmN5IGxpYnJhcmllcworICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyAgICAgICAtLXRhZz1UQUcgICAgICAgICAgICB1c2UgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZnJvbSB0YWcgVEFHCisgICAtdiwgLS12ZXJib3NlICAgICAgICAgICAgcHJpbnQgbW9yZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzIHRoYW4gZGVmYXVsdAorICAgICAgIC0tdmVyc2lvbiAgICAgICAgICAgIHByaW50IHZlcnNpb24gaW5mb3JtYXRpb24KKyAgIC1XLCAtLXdhcm5pbmdzPUNBVEVHT1JZICByZXBvcnQgdGhlIHdhcm5pbmdzIGZhbGxpbmcgaW4gQ0FURUdPUlkgW2FsbF0KKyAgIC1oLCAtLWhlbHAsIC0taGVscC1hbGwgICBwcmludCBzaG9ydCwgbG9uZywgb3IgZGV0YWlsZWQgaGVscCBtZXNzYWdlCisiCisKKyMgQWRkaXRpb25hbCB0ZXh0IGFwcGVuZGVkIHRvICd1c2FnZV9tZXNzYWdlJyBpbiByZXNwb25zZSB0byAnLS1oZWxwJy4KK2Z1bmNfaGVscCAoKQogewotICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorICAgICRkZWJ1Z19jbWQKKworICAgIGZ1bmNfdXNhZ2VfbWVzc2FnZQorICAgICRFQ0hPICIkbG9uZ19oZWxwX21lc3NhZ2UKKworTU9ERSBtdXN0IGJlIG9uZSBvZiB0aGUgZm9sbG93aW5nOgorCisgICAgICAgY2xlYW4gICAgICAgICAgIHJlbW92ZSBmaWxlcyBmcm9tIHRoZSBidWlsZCBkaXJlY3RvcnkKKyAgICAgICBjb21waWxlICAgICAgICAgY29tcGlsZSBhIHNvdXJjZSBmaWxlIGludG8gYSBsaWJ0b29sIG9iamVjdAorICAgICAgIGV4ZWN1dGUgICAgICAgICBhdXRvbWF0aWNhbGx5IHNldCBsaWJyYXJ5IHBhdGgsIHRoZW4gcnVuIGEgcHJvZ3JhbQorICAgICAgIGZpbmlzaCAgICAgICAgICBjb21wbGV0ZSB0aGUgaW5zdGFsbGF0aW9uIG9mIGxpYnRvb2wgbGlicmFyaWVzCisgICAgICAgaW5zdGFsbCAgICAgICAgIGluc3RhbGwgbGlicmFyaWVzIG9yIGV4ZWN1dGFibGVzCisgICAgICAgbGluayAgICAgICAgICAgIGNyZWF0ZSBhIGxpYnJhcnkgb3IgYW4gZXhlY3V0YWJsZQorICAgICAgIHVuaW5zdGFsbCAgICAgICByZW1vdmUgbGlicmFyaWVzIGZyb20gYW4gaW5zdGFsbGVkIGRpcmVjdG9yeQorCitNT0RFLUFSR1MgdmFyeSBkZXBlbmRpbmcgb24gdGhlIE1PREUuICBXaGVuIHBhc3NlZCBhcyBmaXJzdCBvcHRpb24sCisnLS1tb2RlPU1PREUnIG1heSBiZSBhYmJyZXZpYXRlZCBhcyAnTU9ERScgb3IgYSB1bmlxdWUgYWJicmV2aWF0aW9uIG9mIHRoYXQuCitUcnkgJyRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPU1PREUnIGZvciBhIG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24gb2YgTU9ERS4KKworV2hlbiByZXBvcnRpbmcgYSBidWcsIHBsZWFzZSBkZXNjcmliZSBhIHRlc3QgY2FzZSB0byByZXByb2R1Y2UgaXQgYW5kCitpbmNsdWRlIHRoZSBmb2xsb3dpbmcgaW5mb3JtYXRpb246CisKKyAgICAgICBob3N0LXRyaXBsZXQ6ICAgJGhvc3QKKyAgICAgICBzaGVsbDogICAgICAgICAgJFNIRUxMCisgICAgICAgY29tcGlsZXI6ICAgICAgICRMVENDCisgICAgICAgY29tcGlsZXIgZmxhZ3M6ICRMVENGTEFHUworICAgICAgIGxpbmtlcjogICAgICAgICAkTEQgKGdudT8gJHdpdGhfZ251X2xkKQorICAgICAgIHZlcnNpb246ICAgICAgICAkcHJvZ25hbWUgKEdOVSBsaWJ0b29sKSAyLjQuNgorICAgICAgIGF1dG9tYWtlOiAgICAgICBgKCRBVVRPTUFLRSAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYAorICAgICAgIGF1dG9jb25mOiAgICAgICBgKCRBVVRPQ09ORiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYAorCitSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCitHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvcy9saWJ0b29sLz4uCitHZW5lcmFsIGhlbHAgdXNpbmcgR05VIHNvZnR3YXJlOiA8aHR0cDovL3d3dy5nbnUub3JnL2dldGhlbHAvPi4iCisgICAgZXhpdCAwCit9CiAKIAotIyBmdW5jX2xvMm8gb2JqZWN0Ci1mdW5jX2xvMm8gKCkKLXsKLSAgICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi19ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorIyBmdW5jX2xvMm8gT0JKRUNULU5BTUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFRyYW5zZm9ybSBPQkpFQ1QtTkFNRSBmcm9tIGEgJy5sbycgc3VmZml4IHRvIHRoZSBwbGF0Zm9ybSBzcGVjaWZpYworIyBvYmplY3Qgc3VmZml4LgorCitsbzJvPXMvXFwubG9cJC8uJG9iamV4dC8KK28ybG89cy9cXC4kb2JqZXh0XCQvLmxvLworCitpZiB0ZXN0IHllcyA9ICIkX0dfSEFWRV9YU0lfT1BTIjsgdGhlbgorICBldmFsICdmdW5jX2xvMm8gKCkKKyAgeworICAgIGNhc2UgJDEgaW4KKyAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJG9iamV4dCA7OworICAgICAgKiAgICkgZnVuY19sbzJvX3Jlc3VsdD0kMSAgICAgICAgICAgICAgIDs7CisgICAgZXNhYworICB9JworCisgICMgZnVuY194Zm9ybSBMSUJPQkotT1ItU09VUkNFCisgICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICMgVHJhbnNmb3JtIExJQk9CSi1PUi1TT1VSQ0UgZnJvbSBhICcubycgb3IgJy5jJyAob3Igb3RoZXJ3aXNlKQorICAjIHN1ZmZpeCB0byBhICcubG8nIGxpYnRvb2wtb2JqZWN0IHN1ZmZpeC4KKyAgZXZhbCAnZnVuY194Zm9ybSAoKQorICB7CisgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworICB9JworZWxzZQorICAjIC4uLm90aGVyd2lzZSBmYWxsIGJhY2sgdG8gdXNpbmcgc2VkLgorICBmdW5jX2xvMm8gKCkKKyAgeworICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICIkbG8ybyJgCisgIH0KKworICBmdW5jX3hmb3JtICgpCisgIHsKKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3N8XC5bXi5dKiR8LmxvfCdgCisgIH0KK2ZpCiAKIAotIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLWZ1bmNfeGZvcm0gKCkKLXsKLSAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLX0gIyBmdW5jX3hmb3JtIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotCi0KLSMgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uIGFyZy4uLgorIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gQVJHLi4uCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvciwgZm9sbG93ZWQgYnkKICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCiBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gKCkKIHsKLSAgICBmdW5jX2Vycm9yICR7MSsiJEAifQotICAgIGZ1bmNfZXJyb3IgIlNlZSB0aGUgJFBBQ0tBR0UgZG9jdW1lbnRhdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0gICAgZnVuY19mYXRhbF9lcnJvciAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4iCisgICAgZnVuY19fZmF0YWxfZXJyb3IgJHsxKyIkQCJ9IFwKKyAgICAgICJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uIiBcCisgICAgICAiRmF0YWwgY29uZmlndXJhdGlvbiBlcnJvci4iCiB9CiAKIAogIyBmdW5jX2NvbmZpZworIyAtLS0tLS0tLS0tLQogIyBEaXNwbGF5IHRoZSBjb25maWd1cmF0aW9uIGZvciBhbGwgdGhlIHRhZ3MgaW4gdGhpcyBzY3JpcHQuCiBmdW5jX2NvbmZpZyAoKQogewpAQCAtOTE1LDE3ICsyMTQ5LDE5IEBACiAgICAgZXhpdCAkPwogfQogCisKICMgZnVuY19mZWF0dXJlcworIyAtLS0tLS0tLS0tLS0tCiAjIERpc3BsYXkgdGhlIGZlYXR1cmVzIHN1cHBvcnRlZCBieSB0aGlzIHNjcmlwdC4KIGZ1bmNfZmVhdHVyZXMgKCkKIHsKICAgICBlY2hvICJob3N0OiAkaG9zdCIKLSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAgICAgICBlY2hvICJlbmFibGUgc2hhcmVkIGxpYnJhcmllcyIKICAgICBlbHNlCiAgICAgICBlY2hvICJkaXNhYmxlIHNoYXJlZCBsaWJyYXJpZXMiCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX29sZF9saWJzIjsgdGhlbgogICAgICAgZWNobyAiZW5hYmxlIHN0YXRpYyBsaWJyYXJpZXMiCiAgICAgZWxzZQogICAgICAgZWNobyAiZGlzYWJsZSBzdGF0aWMgbGlicmFyaWVzIgpAQCAtOTM0LDMxNCArMjE3MCwzNTAgQEAKICAgICBleGl0ICQ/CiB9CiAKLSMgZnVuY19lbmFibGVfdGFnIHRhZ25hbWUKKworIyBmdW5jX2VuYWJsZV90YWcgVEFHTkFNRQorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBWZXJpZnkgdGhhdCBUQUdOQU1FIGlzIHZhbGlkLCBhbmQgZWl0aGVyIGZsYWcgYW4gZXJyb3IgYW5kIGV4aXQsIG9yCiAjIGVuYWJsZSB0aGUgVEFHTkFNRSB0YWcuICBXZSBhbHNvIGFkZCBUQUdOQU1FIHRvIHRoZSBnbG9iYWwgJHRhZ2xpc3QKICMgdmFyaWFibGUgaGVyZS4KIGZ1bmNfZW5hYmxlX3RhZyAoKQogewotICAjIEdsb2JhbCB2YXJpYWJsZToKLSAgdGFnbmFtZT0iJDEiCisgICAgIyBHbG9iYWwgdmFyaWFibGU6CisgICAgdGFnbmFtZT0kMQogCi0gIHJlX2JlZ2luY2Y9Il4jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXCQiCi0gIHJlX2VuZGNmPSJeIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWVcJCIKLSAgc2VkX2V4dHJhY3RjZj0iLyRyZV9iZWdpbmNmLywvJHJlX2VuZGNmL3AiCisgICAgcmVfYmVnaW5jZj0iXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJHRhZ25hbWVcJCIKKyAgICByZV9lbmRjZj0iXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICR0YWduYW1lXCQiCisgICAgc2VkX2V4dHJhY3RjZj0vJHJlX2JlZ2luY2YvLC8kcmVfZW5kY2YvcAogCi0gICMgVmFsaWRhdGUgdGFnbmFtZS4KLSAgY2FzZSAkdGFnbmFtZSBpbgotICAgICpbIS1fQS1aYS16MC05LC9dKikKLSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgdGFnIG5hbWU6ICR0YWduYW1lIgotICAgICAgOzsKLSAgZXNhYworICAgICMgVmFsaWRhdGUgdGFnbmFtZS4KKyAgICBjYXNlICR0YWduYW1lIGluCisgICAgICAqWyEtX0EtWmEtejAtOSwvXSopCisgICAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgdGFnIG5hbWU6ICR0YWduYW1lIgorICAgICAgICA7OworICAgIGVzYWMKIAotICAjIERvbid0IHRlc3QgZm9yIHRoZSAiZGVmYXVsdCIgQyB0YWcsIGFzIHdlIGtub3cgaXQncwotICAjIHRoZXJlIGJ1dCBub3Qgc3BlY2lhbGx5IG1hcmtlZC4KLSAgY2FzZSAkdGFnbmFtZSBpbgotICAgIENDKSA7OworICAgICMgRG9uJ3QgdGVzdCBmb3IgdGhlICJkZWZhdWx0IiBDIHRhZywgYXMgd2Uga25vdyBpdCdzCisgICAgIyB0aGVyZSBidXQgbm90IHNwZWNpYWxseSBtYXJrZWQuCisgICAgY2FzZSAkdGFnbmFtZSBpbgorICAgICAgICBDQykgOzsKICAgICAqKQotICAgICAgaWYgJEdSRVAgIiRyZV9iZWdpbmNmIiAiJHByb2dwYXRoIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLQl0YWdsaXN0PSIkdGFnbGlzdCAkdGFnbmFtZSIKKyAgICAgICAgaWYgJEdSRVAgIiRyZV9iZWdpbmNmIiAiJHByb2dwYXRoIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKwkgIHRhZ2xpc3Q9IiR0YWdsaXN0ICR0YWduYW1lIgogCi0JIyBFdmFsdWF0ZSB0aGUgY29uZmlndXJhdGlvbi4gIEJlIGNhcmVmdWwgdG8gcXVvdGUgdGhlIHBhdGgKLQkjIGFuZCB0aGUgc2VkIHNjcmlwdCwgdG8gYXZvaWQgc3BsaXR0aW5nIG9uIHdoaXRlc3BhY2UsIGJ1dAotCSMgYWxzbyBkb24ndCB1c2Ugbm9uLXBvcnRhYmxlIHF1b3RlcyB3aXRoaW4gYmFja3F1b3RlcyB3aXRoaW4KLQkjIHF1b3RlcyB3ZSBoYXZlIHRvIGRvIGl0IGluIDIgc3RlcHM6Ci0JZXh0cmFjdGVkY2Y9YCRTRUQgLW4gLWUgIiRzZWRfZXh0cmFjdGNmIiA8ICIkcHJvZ3BhdGgiYAotCWV2YWwgIiRleHRyYWN0ZWRjZiIKLSAgICAgIGVsc2UKLQlmdW5jX2Vycm9yICJpZ25vcmluZyB1bmtub3duIHRhZyAkdGFnbmFtZSIKLSAgICAgIGZpCi0gICAgICA7OwotICBlc2FjCisJICAjIEV2YWx1YXRlIHRoZSBjb25maWd1cmF0aW9uLiAgQmUgY2FyZWZ1bCB0byBxdW90ZSB0aGUgcGF0aAorCSAgIyBhbmQgdGhlIHNlZCBzY3JpcHQsIHRvIGF2b2lkIHNwbGl0dGluZyBvbiB3aGl0ZXNwYWNlLCBidXQKKwkgICMgYWxzbyBkb24ndCB1c2Ugbm9uLXBvcnRhYmxlIHF1b3RlcyB3aXRoaW4gYmFja3F1b3RlcyB3aXRoaW4KKwkgICMgcXVvdGVzIHdlIGhhdmUgdG8gZG8gaXQgaW4gMiBzdGVwczoKKwkgIGV4dHJhY3RlZGNmPWAkU0VEIC1uIC1lICIkc2VkX2V4dHJhY3RjZiIgPCAiJHByb2dwYXRoImAKKwkgIGV2YWwgIiRleHRyYWN0ZWRjZiIKKyAgICAgICAgZWxzZQorCSAgZnVuY19lcnJvciAiaWdub3JpbmcgdW5rbm93biB0YWcgJHRhZ25hbWUiCisgICAgICAgIGZpCisgICAgICAgIDs7CisgICAgZXNhYwogfQogCisKICMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQogIyByZWxlYXNlIG9mIGxpYnRvb2wuCiBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKIHsKLSAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCi0gICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KLSAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorICAgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgorICAgICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisgICAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKICRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKICRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgogJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgogJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgogX0xUX0VPRgotICAgICAgZWxzZQotICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorICAgICAgICBlbHNlCisgICAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKICRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKICRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KICRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KICRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KIF9MVF9FT0YKLSAgICAgIGZpCi0gICAgZWxzZQotICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKyAgICAgICAgZmkKKyAgICAgIGVsc2UKKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKICRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAogJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgogJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgogJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgogX0xUX0VPRgotICAgIGZpCisgICAgICBmaQogCi0gICAgZXhpdCAkRVhJVF9NSVNNQVRDSAotICBmaQorICAgICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorICAgIGZpCiB9CiAKIAotIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci1jYXNlICQxIGluCi1jbGVhbnxjbGVhfGNsZXxjbCkKLSAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotICA7OwotY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKLSAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0gIDs7Ci1leGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQotICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLSAgOzsKLWZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQotICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotICA7OwotaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKLSAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0gIDs7Ci1saW5rfGxpbnxsaXxsKQotICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLSAgOzsKLXVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQotICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotICA7OwotZXNhYwotCi0KLQotIyBPcHRpb24gZGVmYXVsdHM6Ci1vcHRfZGVidWc9Ogotb3B0X2RyeV9ydW49ZmFsc2UKLW9wdF9jb25maWc9ZmFsc2UKLW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQotb3B0X2ZlYXR1cmVzPWZhbHNlCi1vcHRfZmluaXNoPWZhbHNlCi1vcHRfaGVscD1mYWxzZQotb3B0X2hlbHBfYWxsPWZhbHNlCi1vcHRfc2lsZW50PToKLW9wdF93YXJuaW5nPToKLW9wdF92ZXJib3NlPToKLW9wdF9zaWxlbnQ9ZmFsc2UKLW9wdF92ZXJib3NlPWZhbHNlCi0KLQotIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4gdGhlCi0jIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KKyMgbGlidG9vbF9vcHRpb25zX3ByZXAgW0FSR10uLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUHJlcGFyYXRpb24gZm9yIG9wdGlvbnMgcGFyc2VkIGJ5IGxpYnRvb2wuCitsaWJ0b29sX29wdGlvbnNfcHJlcCAoKQogewotICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCi0gIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCi0gICAgb3B0PSIkMSIKLSAgICBzaGlmdAotICAgIGNhc2UgJG9wdCBpbgotICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCi0JCQlmdW5jX2VjaG8gImVuYWJsaW5nIHNoZWxsIHRyYWNlIG1vZGUiCi0JCQkkb3B0X2RlYnVnCi0JCQk7OwotICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQotCQkJb3B0X2RyeV9ydW49OgotCQkJOzsKLSAgICAgIC0tY29uZmlnKQotCQkJb3B0X2NvbmZpZz06Ci1mdW5jX2NvbmZpZwotCQkJOzsKLSAgICAgIC0tZGxvcGVufC1kbG9wZW4pCi0JCQlvcHRhcmc9IiQxIgotCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCi19JG9wdGFyZyIKLQkJCXNoaWZ0Ci0JCQk7OwotICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKLQkJCW9wdF9wcmVzZXJ2ZV9kdXBfZGVwcz06Ci0JCQk7OwotICAgICAgLS1mZWF0dXJlcykKLQkJCW9wdF9mZWF0dXJlcz06Ci1mdW5jX2ZlYXR1cmVzCi0JCQk7OwotICAgICAgLS1maW5pc2gpCi0JCQlvcHRfZmluaXNoPToKLXNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLQkJCTs7Ci0gICAgICAtLWhlbHApCi0JCQlvcHRfaGVscD06Ci0JCQk7OwotICAgICAgLS1oZWxwLWFsbCkKLQkJCW9wdF9oZWxwX2FsbD06Ci1vcHRfaGVscD0nOiBoZWxwLWFsbCcKLQkJCTs7Ci0gICAgICAtLW1vZGUpCi0JCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKLQkJCW9wdGFyZz0iJDEiCi0JCQlvcHRfbW9kZT0iJG9wdGFyZyIKLWNhc2UgJG9wdGFyZyBpbgotICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgotICBjbGVhbnxjb21waWxlfGV4ZWN1dGV8ZmluaXNofGluc3RhbGx8bGlua3xyZWxpbmt8dW5pbnN0YWxsKSA7OworICAgICRkZWJ1Z19tb2RlCiAKLSAgIyBDYXRjaCBhbnl0aGluZyBlbHNlIGFzIGFuIGVycm9yCi0gICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCi0gICAgIGV4aXRfY21kPWV4aXQKLSAgICAgYnJlYWsKLSAgICAgOzsKLWVzYWMKLQkJCXNoaWZ0Ci0JCQk7OwotICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKLWZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotCQkJOzsKLSAgICAgIC0tbm8td2FybmluZ3wtLW5vLXdhcm4pCi0JCQlvcHRfd2FybmluZz1mYWxzZQotZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0JCQk7OwotICAgICAgLS1uby12ZXJib3NlKQotCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKLWZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotCQkJOzsKLSAgICAgIC0tc2lsZW50fC0tcXVpZXQpCi0JCQlvcHRfc2lsZW50PToKLWZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQotCQkJOzsKLSAgICAgIC0tdmVyYm9zZXwtdikKLQkJCW9wdF92ZXJib3NlPToKLWZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0Igotb3B0X3NpbGVudD1mYWxzZQotCQkJOzsKLSAgICAgIC0tdGFnKQotCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCi0JCQlvcHRhcmc9IiQxIgotCQkJb3B0X3RhZz0iJG9wdGFyZyIKLWZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCi1mdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCi0JCQlzaGlmdAotCQkJOzsKKyAgICAjIE9wdGlvbiBkZWZhdWx0czoKKyAgICBvcHRfY29uZmlnPWZhbHNlCisgICAgb3B0X2Rsb3Blbj0KKyAgICBvcHRfZHJ5X3J1bj1mYWxzZQorICAgIG9wdF9oZWxwPWZhbHNlCisgICAgb3B0X21vZGU9CisgICAgb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCisgICAgb3B0X3F1aWV0PWZhbHNlCiAKLSAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKLSAgICAgIC0taGVscCkJCWZ1bmNfaGVscAkJCQk7OwotICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKKyAgICBub25vcHQ9CisgICAgcHJlc2VydmVfYXJncz0KIAotICAgICAgIyBTZXBhcmF0ZSBvcHRhcmdzIHRvIGxvbmcgb3B0aW9uczoKLSAgICAgIC0tKj0qKQotCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKLQkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZSIgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyIgJHsxKyIkQCJ9Ci0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKLSAgICAgIC1cPyp8LWgqfC1uKnwtdiopCi0JCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKLQkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9Ci0JCQlzaGlmdAotCQkJOzsKLQotICAgICAgLS0pCQlicmVhawkJCQkJOzsKLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7Ci0gICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKKyAgICAjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKKyAgICBjYXNlICQxIGluCisgICAgY2xlYW58Y2xlYXxjbGV8Y2wpCisgICAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisgICAgICA7OworICAgIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCisgICAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKyAgICAgIDs7CisgICAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKyAgICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorICAgICAgOzsKKyAgICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKyAgICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisgICAgICA7OworICAgIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCisgICAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKyAgICAgIDs7CisgICAgbGlua3xsaW58bGl8bCkKKyAgICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorICAgICAgOzsKKyAgICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKyAgICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisgICAgICA7OwogICAgIGVzYWMKLSAgZG9uZQogCi0gICMgVmFsaWRhdGUgb3B0aW9uczoKLQotICAjIHNhdmUgZmlyc3Qgbm9uLW9wdGlvbiBhcmd1bWVudAotICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KLSAgICBub25vcHQ9IiRvcHQiCi0gICAgc2hpZnQKLSAgZmkKLQotICAjIHByZXNlcnZlIC0tZGVidWcKLSAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgotCi0gIGNhc2UgJGhvc3QgaW4KLSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqKQotICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKLSAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgotICAgICAgOzsKLSAgICAqKQotICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCi0gICAgICA7OwotICBlc2FjCi0KLSAgJG9wdF9oZWxwIHx8IHsKLSAgICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6Ci0gICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0KLSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKLSAgICBmaQotCi0gICAgIyBEYXJ3aW4gc3Vja3MKLSAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotCi0gICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KLSAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0gICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCi0gICAgICAkRUNITyAiJGhlbHAiIDE+JjIKLSAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotICAgIGZpCi0KLSAgICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCi0gICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLSAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKLSAgfQotCi0KLSAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAotICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorICAgICMgUGFzcyBiYWNrIHRoZSBsaXN0IG9mIG9wdGlvbnMuCisgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAkezErIiRAIn0KKyAgICBsaWJ0b29sX29wdGlvbnNfcHJlcF9yZXN1bHQ9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CiB9CitmdW5jX2FkZF9ob29rIGZ1bmNfb3B0aW9uc19wcmVwIGxpYnRvb2xfb3B0aW9uc19wcmVwCiAKIAorIyBsaWJ0b29sX3BhcnNlX29wdGlvbnMgW0FSR10uLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFByb3ZpZGUgaGFuZGxpbmcgZm9yIGxpYnRvb2wgc3BlY2lmaWMgb3B0aW9ucy4KK2xpYnRvb2xfcGFyc2Vfb3B0aW9ucyAoKQoreworICAgICRkZWJ1Z19jbWQKKworICAgICMgUGVyZm9ybSBvdXIgb3duIGxvb3AgdG8gY29uc3VtZSBhcyBtYW55IG9wdGlvbnMgYXMgcG9zc2libGUgaW4KKyAgICAjIGVhY2ggaXRlcmF0aW9uLgorICAgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgICBfR19vcHQ9JDEKKyAgICAgIHNoaWZ0CisgICAgICBjYXNlICRfR19vcHQgaW4KKyAgICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X2RyeV9ydW49OgorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLWNvbmZpZykgICAgICAgZnVuY19jb25maWcgOzsKKworICAgICAgICAtLWRsb3BlbnwtZGxvcGVuKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCit9JDEiCisgICAgICAgICAgICAgICAgICAgICAgICBzaGlmdAorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3ByZXNlcnZlX2R1cF9kZXBzPTogOzsKKworICAgICAgICAtLWZlYXR1cmVzKSAgICAgZnVuY19mZWF0dXJlcyA7OworCisgICAgICAgIC0tZmluaXNoKSAgICAgICBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0IDs7CisKKyAgICAgICAgLS1oZWxwKSAgICAgICAgIG9wdF9oZWxwPTogOzsKKworICAgICAgICAtLWhlbHAtYWxsKSAgICAgb3B0X2hlbHA9JzogaGVscC1hbGwnIDs7CisKKyAgICAgICAgLS1tb2RlKSAgICAgICAgIHRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJF9HX29wdCAmJiBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgb3B0X21vZGU9JDEKKyAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJDEgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKKworICAgICAgICAgICAgICAgICAgICAgICAgICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKKyAgICAgICAgICAgICAgICAgICAgICAgICAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJF9HX29wdCIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXhpdF9jbWQ9ZXhpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisKKyAgICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdF9xdWlldD1mYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRfR19vcHQiCisgICAgICAgICAgICAgICAgICAgICAgICA7OworCisgICAgICAgIC0tbm8td2FybmluZ3N8LS1uby13YXJuaW5nfC0tbm8td2FybikKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdF93YXJuaW5nPWZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJF9HX29wdCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisKKyAgICAgICAgLS1uby12ZXJib3NlKQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkX0dfb3B0IgorICAgICAgICAgICAgICAgICAgICAgICAgOzsKKworICAgICAgICAtLXNpbGVudHwtLXF1aWV0KQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3F1aWV0PToKKyAgICAgICAgICAgICAgICAgICAgICAgIG9wdF92ZXJib3NlPWZhbHNlCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJF9HX29wdCIKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisKKyAgICAgICAgLS10YWcpICAgICAgICAgIHRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJF9HX29wdCAmJiBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3RhZz0kMQorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRfR19vcHQgJDEiCisgICAgICAgICAgICAgICAgICAgICAgICBmdW5jX2VuYWJsZV90YWcgIiQxIgorICAgICAgICAgICAgICAgICAgICAgICAgc2hpZnQKKyAgICAgICAgICAgICAgICAgICAgICAgIDs7CisKKyAgICAgICAgLS12ZXJib3NlfC12KSAgIG9wdF9xdWlldD1mYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgb3B0X3ZlcmJvc2U9OgorICAgICAgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRfR19vcHQiCisgICAgICAgICAgICAgICAgICAgICAgICA7OworCisJIyBBbiBvcHRpb24gbm90IGhhbmRsZWQgYnkgdGhpcyBob29rIGZ1bmN0aW9uOgorICAgICAgICAqKQkJc2V0IGR1bW15ICIkX0dfb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisKKworICAgICMgc2F2ZSBtb2RpZmllZCBwb3NpdGlvbmFsIHBhcmFtZXRlcnMgZm9yIGNhbGxlcgorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgJHsxKyIkQCJ9CisgICAgbGlidG9vbF9wYXJzZV9vcHRpb25zX3Jlc3VsdD0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKK30KK2Z1bmNfYWRkX2hvb2sgZnVuY19wYXJzZV9vcHRpb25zIGxpYnRvb2xfcGFyc2Vfb3B0aW9ucworCisKKworIyBsaWJ0b29sX3ZhbGlkYXRlX29wdGlvbnMgW0FSR10uLi4KKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFBlcmZvcm0gYW55IHNhbml0eSBjaGVja3Mgb24gb3B0aW9uIHNldHRpbmdzIGFuZC9vciB1bmNvbnN1bWVkCisjIGFyZ3VtZW50cy4KK2xpYnRvb2xfdmFsaWRhdGVfb3B0aW9ucyAoKQoreworICAgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50CisgICAgaWYgdGVzdCAwIC1sdCAkIzsgdGhlbgorICAgICAgbm9ub3B0PSQxCisgICAgICBzaGlmdAorICAgIGZpCisKKyAgICAjIHByZXNlcnZlIC0tZGVidWcKKyAgICB0ZXN0IDogPSAiJGRlYnVnX2NtZCIgfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCisKKyAgICBjYXNlICRob3N0IGluCisgICAgICAjIFNvbGFyaXMyIGFkZGVkIHRvIGZpeCBodHRwOi8vZGViYnVncy5nbnUub3JnL2NnaS9idWdyZXBvcnQuY2dpP2J1Zz0xNjQ1MgorICAgICAgIyBzZWUgYWxzbzogaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD01OTc4OAorICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKnB3MzIqIHwgKmNlZ2NjKiB8ICpzb2xhcmlzMiogfCAqb3MyKikKKyAgICAgICAgIyBkb24ndCBlbGltaW5hdGUgZHVwbGljYXRpb25zIGluICRwb3N0ZGVwcyBhbmQgJHByZWRlcHMKKyAgICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06CisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKKyAgICAgICAgOzsKKyAgICBlc2FjCisKKyAgICAkb3B0X2hlbHAgfHwgeworICAgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorICAgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCisKKyAgICAgIHRlc3QgeWVzICE9ICIkYnVpbGRfbGlidG9vbF9saWJzIiBcCisgICAgICAgICYmIHRlc3QgeWVzICE9ICIkYnVpbGRfb2xkX2xpYnMiIFwKKyAgICAgICAgJiYgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJub3QgY29uZmlndXJlZCB0byBidWlsZCBhbnkga2luZCBvZiBsaWJyYXJ5IgorCisgICAgICAjIERhcndpbiBzdWNrcworICAgICAgZXZhbCBzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIKKworICAgICAgIyBPbmx5IGV4ZWN1dGUgbW9kZSBpcyBhbGxvd2VkIHRvIGhhdmUgLWRsb3BlbiBmbGFncy4KKyAgICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0IGV4ZWN1dGUgIT0gIiRvcHRfbW9kZSI7IHRoZW4KKyAgICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiAnLWRsb3BlbiciCisgICAgICAgICRFQ0hPICIkaGVscCIgMT4mMgorICAgICAgICBleGl0ICRFWElUX0ZBSUxVUkUKKyAgICAgIGZpCisKKyAgICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KKyAgICAgIGdlbmVyaWNfaGVscD0kaGVscAorICAgICAgaGVscD0iVHJ5ICckcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKyAgICB9CisKKyAgICAjIFBhc3MgYmFjayB0aGUgdW5wYXJzZWQgYXJndW1lbnQgbGlzdAorICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgJHsxKyIkQCJ9CisgICAgbGlidG9vbF92YWxpZGF0ZV9vcHRpb25zX3Jlc3VsdD0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKK30KK2Z1bmNfYWRkX2hvb2sgZnVuY192YWxpZGF0ZV9vcHRpb25zIGxpYnRvb2xfdmFsaWRhdGVfb3B0aW9ucworCisKKyMgUHJvY2VzcyBvcHRpb25zIGFzIGVhcmx5IGFzIHBvc3NpYmxlIHNvIHRoYXQgLS1oZWxwIGFuZCAtLXZlcnNpb24KKyMgY2FuIHJldHVybiBxdWlja2x5LgorZnVuY19vcHRpb25zICR7MSsiJEAifQorZXZhbCBzZXQgZHVtbXkgIiRmdW5jX29wdGlvbnNfcmVzdWx0Ijsgc2hpZnQKKwogCiAKICMjIC0tLS0tLS0tLS0tICMjCiAjIyAgICBNYWluLiAgICAjIwogIyMgLS0tLS0tLS0tLS0gIyMKIAorbWFnaWM9JyUlJU1BR0lDIHZhcmlhYmxlJSUlJworbWFnaWNfZXhlPSclJSVNQUdJQyBFWEUgdmFyaWFibGUlJSUnCisKKyMgR2xvYmFsIHZhcmlhYmxlcy4KK2V4dHJhY3RlZF9hcmNoaXZlcz0KK2V4dHJhY3RlZF9zZXJpYWw9MAorCisjIElmIHRoaXMgdmFyaWFibGUgaXMgc2V0IGluIGFueSBvZiB0aGUgYWN0aW9ucywgdGhlIGNvbW1hbmQgaW4gaXQKKyMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZworIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgorZXhlY19jbWQ9CisKKworIyBBIGZ1bmN0aW9uIHRoYXQgaXMgdXNlZCB3aGVuIHRoZXJlIGlzIG5vIHByaW50IGJ1aWx0aW4gb3IgcHJpbnRmLgorZnVuY19mYWxsYmFja19lY2hvICgpCit7CisgIGV2YWwgJ2NhdCA8PF9MVEVDSE9fRU9GCiskMQorX0xURUNIT19FT0YnCit9CisKKyMgZnVuY19nZW5lcmF0ZWRfYnlfbGlidG9vbAorIyBUcnVlIGlmZiBzdGRpbiBoYXMgYmVlbiBnZW5lcmF0ZWQgYnkgTGlidG9vbC4gVGhpcyBmdW5jdGlvbiBpcyBvbmx5CisjIGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCitmdW5jX2dlbmVyYXRlZF9ieV9saWJ0b29sX3AgKCkKK3sKKyAgJEdSRVAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIiA+IC9kZXYvbnVsbCAyPiYxCit9CisKICMgZnVuY19sYWxpYl9wIGZpbGUKLSMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgJy5sYScgbGlicmFyeSBvciAnLmxvJyBvYmplY3QgZmlsZS4KICMgVGhpcyBmdW5jdGlvbiBpcyBvbmx5IGEgYmFzaWMgc2FuaXR5IGNoZWNrOyBpdCB3aWxsIGhhcmRseSBmbHVzaCBvdXQKICMgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCiBmdW5jX2xhbGliX3AgKCkKIHsKICAgICB0ZXN0IC1mICIkMSIgJiYKLSAgICAgICRTRUQgLWUgNHEgIiQxIiAyPi9kZXYvbnVsbCBcCi0gICAgICAgIHwgJEdSRVAgIl4jIEdlbmVyYXRlZCBieSAuKiRQQUNLQUdFIiA+IC9kZXYvbnVsbCAyPiYxCisgICAgICAkU0VEIC1lIDRxICIkMSIgMj4vZGV2L251bGwgfCBmdW5jX2dlbmVyYXRlZF9ieV9saWJ0b29sX3AKIH0KIAogIyBmdW5jX2xhbGliX3Vuc2FmZV9wIGZpbGUKLSMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KKyMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgJy5sYScgbGlicmFyeSBvciAnLmxvJyBvYmplY3QgZmlsZS4KICMgVGhpcyBmdW5jdGlvbiBpbXBsZW1lbnRzIHRoZSBzYW1lIGNoZWNrIGFzIGZ1bmNfbGFsaWJfcCB3aXRob3V0CiAjIHJlc29ydGluZyB0byBleHRlcm5hbCBwcm9ncmFtcy4gIFRvIHRoaXMgZW5kLCBpdCByZWRpcmVjdHMgc3RkaW4gYW5kCiAjIGNsb3NlcyBpdCBhZnRlcndhcmRzLCB3aXRob3V0IHNhdmluZyB0aGUgb3JpZ2luYWwgZmlsZSBkZXNjcmlwdG9yLgogIyBBcyBhIHNhZmV0eSBtZWFzdXJlLCB1c2UgaXQgb25seSB3aGVyZSBhIG5lZ2F0aXZlIHJlc3VsdCB3b3VsZCBiZQotIyBmYXRhbCBhbnl3YXkuICBXb3JrcyBpZiBgZmlsZScgZG9lcyBub3QgZXhpc3QuCisjIGZhdGFsIGFueXdheS4gIFdvcmtzIGlmICdmaWxlJyBkb2VzIG5vdCBleGlzdC4KIGZ1bmNfbGFsaWJfdW5zYWZlX3AgKCkKIHsKICAgICBsYWxpYl9wPW5vCkBAIC0xMjQ5LDEzICsyNTIxLDEzIEBACiAJZm9yIGxhbGliX3BfbCBpbiAxIDIgMyA0CiAJZG8KIAkgICAgcmVhZCBsYWxpYl9wX2xpbmUKLQkgICAgY2FzZSAiJGxhbGliX3BfbGluZSIgaW4KKwkgICAgY2FzZSAkbGFsaWJfcF9saW5lIGluCiAJCVwjXCBHZW5lcmF0ZWRcIGJ5XCAqJFBBQ0tBR0UqICkgbGFsaWJfcD15ZXM7IGJyZWFrOzsKIAkgICAgZXNhYwogCWRvbmUKIAlleGVjIDA8JjUgNTwmLQogICAgIGZpCi0gICAgdGVzdCAiJGxhbGliX3AiID0geWVzCisgICAgdGVzdCB5ZXMgPSAiJGxhbGliX3AiCiB9CiAKICMgZnVuY19sdHdyYXBwZXJfc2NyaXB0X3AgZmlsZQpAQCAtMTI2NCw3ICsyNTM2LDggQEAKICMgZGV0ZXJtaW5lZCBpbXBvc3RlcnMuCiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAoKQogewotICAgIGZ1bmNfbGFsaWJfcCAiJDEiCisgICAgdGVzdCAtZiAiJDEiICYmCisgICAgICAkbHRfdHJ1bmNhdGVfYmluIDwgIiQxIiAyPi9kZXYvbnVsbCB8IGZ1bmNfZ2VuZXJhdGVkX2J5X2xpYnRvb2xfcAogfQogCiAjIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCBmaWxlCkBAIC0xMjg5LDcgKzI1NjIsNyBAQAogewogICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCisgICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9JGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIKIH0KIAogIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKQEAgLTEzMDgsMTEgKzI1ODEsMTMgQEAKICMgRkFJTF9DTUQgbWF5IHJlYWQtYWNjZXNzIHRoZSBjdXJyZW50IGNvbW1hbmQgaW4gdmFyaWFibGUgQ01EIQogZnVuY19leGVjdXRlX2NtZHMgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JwogICAgIGZvciBjbWQgaW4gJDE7IGRvCi0gICAgICBJRlM9JHNhdmVfaWZzCisgICAgICBJRlM9JHNwJG5sCiAgICAgICBldmFsIGNtZD1cIiRjbWRcIgorICAgICAgSUZTPSRzYXZlX2lmcwogICAgICAgZnVuY19zaG93X2V2YWwgIiRjbWQiICIkezItOn0iCiAgICAgZG9uZQogICAgIElGUz0kc2F2ZV9pZnMKQEAgLTEzMjQsMTAgKzI1OTksMTEgQEAKICMgTm90ZSB0aGF0IGl0IGlzIG5vdCBuZWNlc3Nhcnkgb24gY3lnd2luL21pbmd3IHRvIGFwcGVuZCBhIGRvdCB0bwogIyBGSUxFIGV2ZW4gaWYgYm90aCBGSUxFIGFuZCBGSUxFLmV4ZSBleGlzdDogYXV0b21hdGljLWFwcGVuZC0uZXhlCiAjIGJlaGF2aW9yIGhhcHBlbnMgb25seSBmb3IgZXhlYygzKSwgbm90IGZvciBvcGVuKDIpISAgQWxzbywgc291cmNpbmcKLSMgYEZJTEUuJyBkb2VzIG5vdCB3b3JrIG9uIGN5Z3dpbiBtYW5hZ2VkIG1vdW50cy4KKyMgJ0ZJTEUuJyBkb2VzIG5vdCB3b3JrIG9uIGN5Z3dpbiBtYW5hZ2VkIG1vdW50cy4KIGZ1bmNfc291cmNlICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZworICAgICRkZWJ1Z19jbWQKKwogICAgIGNhc2UgJDEgaW4KICAgICAqLyogfCAqXFwqKQkuICIkMSIgOzsKICAgICAqKQkJLiAiLi8kMSIgOzsKQEAgLTEzNTQsMTAgKzI2MzAsMTAgQEAKICMgc3RvcmUgdGhlIHJlc3VsdCBpbnRvIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdC4KIGZ1bmNfcmVwbGFjZV9zeXNyb290ICgpCiB7Ci0gIGNhc2UgIiRsdF9zeXNyb290OiQxIiBpbgorICBjYXNlICRsdF9zeXNyb290OiQxIGluCiAgID8qOiIkbHRfc3lzcm9vdCIqKQogICAgIGZ1bmNfc3RyaXBuYW1lICIkbHRfc3lzcm9vdCIgJycgIiQxIgotICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSc9JyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKICAgICA7OwogICAqKQogICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCkBAIC0xMzc0LDcgKzI2NTAsOCBAQAogIyBhcmcgaXMgdXN1YWxseSBvZiB0aGUgZm9ybSAnZ2NjIC4uLicKIGZ1bmNfaW5mZXJfdGFnICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZworICAgICRkZWJ1Z19jbWQKKwogICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCiAgICAgICBDQ19xdW90ZWQ9CiAgICAgICBmb3IgYXJnIGluICRDQzsgZG8KQEAgLTEzOTMsNyArMjY3MCw3IEBACiAJZm9yIHogaW4gJGF2YWlsYWJsZV90YWdzOyBkbwogCSAgaWYgJEdSRVAgIl4jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICR6JCIgPCAiJHByb2dwYXRoIiA+IC9kZXYvbnVsbDsgdGhlbgogCSAgICAjIEV2YWx1YXRlIHRoZSBjb25maWd1cmF0aW9uLgotCSAgICBldmFsICJgJHtTRUR9IC1uIC1lICcvXiMgIyMjIEJFR0lOIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvLC9eIyAjIyMgRU5EIExJQlRPT0wgVEFHIENPTkZJRzogJyR6JyQvcCcgPCAkcHJvZ3BhdGhgIgorCSAgICBldmFsICJgJFNFRCAtbiAtZSAnL14jICMjIyBCRUdJTiBMSUJUT09MIFRBRyBDT05GSUc6ICckeickLywvXiMgIyMjIEVORCBMSUJUT09MIFRBRyBDT05GSUc6ICckeickL3AnIDwgJHByb2dwYXRoYCIKIAkgICAgQ0NfcXVvdGVkPQogCSAgICBmb3IgYXJnIGluICRDQzsgZG8KIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCkBAIC0xNDE4LDcgKzI2OTUsNyBAQAogCSMgbGluZSBvcHRpb24gbXVzdCBiZSB1c2VkLgogCWlmIHRlc3QgLXogIiR0YWduYW1lIjsgdGhlbgogCSAgZnVuY19lY2hvICJ1bmFibGUgdG8gaW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24iCi0JICBmdW5jX2ZhdGFsX2Vycm9yICJzcGVjaWZ5IGEgdGFnIHdpdGggXGAtLXRhZyciCisJICBmdW5jX2ZhdGFsX2Vycm9yICJzcGVjaWZ5IGEgdGFnIHdpdGggJy0tdGFnJyIKICMJZWxzZQogIwkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgJHRhZ25hbWUgdGFnZ2VkIGNvbmZpZ3VyYXRpb24iCiAJZmkKQEAgLTE0MzQsMTUgKzI3MTEsMTUgQEAKICMgYnV0IGRvbid0IGNyZWF0ZSBpdCBpZiB3ZSdyZSBkb2luZyBhIGRyeSBydW4uCiBmdW5jX3dyaXRlX2xpYnRvb2xfb2JqZWN0ICgpCiB7Ci0gICAgd3JpdGVfbGlib2JqPSR7MX0KLSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgotICAgICAgd3JpdGVfbG9iaj1cJyR7Mn1cJworICAgIHdyaXRlX2xpYm9iaj0kMQorICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCisgICAgICB3cml0ZV9sb2JqPVwnJDJcJwogICAgIGVsc2UKICAgICAgIHdyaXRlX2xvYmo9bm9uZQogICAgIGZpCiAKLSAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCi0gICAgICB3cml0ZV9vbGRvYmo9XCckezN9XCcKKyAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCisgICAgICB3cml0ZV9vbGRvYmo9XCckM1wnCiAgICAgZWxzZQogICAgICAgd3JpdGVfb2xkb2JqPW5vbmUKICAgICBmaQpAQCAtMTQ1MCw3ICsyNzI3LDcgQEAKICAgICAkb3B0X2RyeV9ydW4gfHwgewogICAgICAgY2F0ID4ke3dyaXRlX2xpYm9ian1UIDw8RU9GCiAjICR3cml0ZV9saWJvYmogLSBhIGxpYnRvb2wgb2JqZWN0IGZpbGUKLSMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSkgJFZFUlNJT04KICMKICMgUGxlYXNlIERPIE5PVCBkZWxldGUgdGhpcyBmaWxlIQogIyBJdCBpcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgdGhlIGxpYnJhcnkuCkBAIC0xNDYyLDcgKzI3MzksNyBAQAogbm9uX3BpY19vYmplY3Q9JHdyaXRlX29sZG9iagogCiBFT0YKLSAgICAgICRNViAiJHt3cml0ZV9saWJvYmp9VCIgIiR7d3JpdGVfbGlib2JqfSIKKyAgICAgICRNViAiJHt3cml0ZV9saWJvYmp9VCIgIiR3cml0ZV9saWJvYmoiCiAgICAgfQogfQogCkBAIC0xNDgyLDggKzI3NTksOSBAQAogIyBiZSBlbXB0eSBvbiBlcnJvciAob3Igd2hlbiBBUkcgaXMgZW1wdHkpCiBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgorICAkZGVidWdfY21kCisKKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQogICAgICMgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2Ygc3Rkb3V0LiBPbiB0aGUgb3RoZXIgaGFuZCwgaWYgdGhlCkBAIC0xNDkxLDkgKzI3NjksOSBAQAogICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCiAgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcD1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKLSAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCisgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCI7IHRoZW4KICAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PWAkRUNITyAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wIiB8Ci0gICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICAgICAgJFNFRCAtZSAiJHNlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAogICAgIGVsc2UKICAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQogICAgIGZpCkBAIC0xNTE0LDE4ICsyNzkyLDE5IEBACiAjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgKCkKIHsKLSAgJG9wdF9kZWJ1ZworICAkZGVidWdfY21kCisKICAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcwotICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iIgorICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0KICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgb2xkSUZTPSRJRlMKICAgICBJRlM9OgogICAgIGZvciBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YgaW4gJDE7IGRvCiAgICAgICBJRlM9JG9sZElGUwogICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKLSAgICAgIGlmIHRlc3QgLW4gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIgOyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiOyB0aGVuCiAgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KLSAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorICAgICAgICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdAogICAgICAgICBlbHNlCiAgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCiAgICAgICAgIGZpCkBAIC0xNTU0LDcgKzI4MzMsOCBAQAogIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KIGZ1bmNfY3lncGF0aCAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCiAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKICAgICBpZiB0ZXN0ICIkPyIgLW5lIDA7IHRoZW4KQEAgLTE1NjMsNyArMjg0Myw3IEBACiAgICAgZmkKICAgZWxzZQogICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9Ci0gICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgorICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiAnJExUX0NZR1BBVEgnIgogICBmaQogfQogI2VuZDogZnVuY19jeWdwYXRoCkBAIC0xNTc0LDEwICsyODU0LDExIEBACiAjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAotICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCiB9CiAjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgogCkBAIC0xNTg4LDEzICsyODY5LDE0IEBACiAjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgaWYgdGVzdCAteiAiJDIiICYmIHRlc3QgLW4gIiQxIiA7IHRoZW4KKyAgJGRlYnVnX2NtZAorCisgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCi0gICAgZnVuY19lcnJvciAiICBcYCQxJyIKKyAgICBmdW5jX2Vycm9yICIgICckMSciCiAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCiAgICAgIyBGYWxsYmFjazoKLSAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0kMQogICBmaQogfQogIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKQEAgLTE2MDYsMTAgKzI4ODgsMTEgQEAKICMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IHRvIGEgc2ltcGxpc3RpYyBmYWxsYmFjayB2YWx1ZSAoc2VlIGJlbG93KS4KIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCiB7Ci0gICRvcHRfZGVidWcKKyAgJGRlYnVnX2NtZAorCiAgIGlmIHRlc3QgLXogIiQ0IiAmJiB0ZXN0IC1uICIkMyI7IHRoZW4KICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKLSAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgorICAgIGZ1bmNfZXJyb3IgIiAgJyQzJyIKICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKICAgICAjIEZhbGxiYWNrLiAgVGhpcyBpcyBhIGRlbGliZXJhdGVseSBzaW1wbGlzdGljICJjb252ZXJzaW9uIiBhbmQKICAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCkBAIC0xNjE4LDcgKzI5MDEsNyBAQAogICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBlY2hvICIkMyIgfAogICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKICAgICBlbHNlCi0gICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzIgorICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSQzCiAgICAgZmkKICAgZmkKIH0KQEAgLTE2MzAsOSArMjkxMywxMCBAQAogIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCiBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgKCkKIHsKLSAgJG9wdF9kZWJ1ZworICAkZGVidWdfY21kCisKICAgY2FzZSAkNCBpbgotICAkMSApIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorICAkMSApIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQKICAgICA7OwogICBlc2FjCiAgIGNhc2UgJDQgaW4KQEAgLTE2NDYsNyArMjkzMCw3IEBACiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0jIGludm9rZWQgdmlhIGAkdG9faG9zdF9maWxlX2NtZCBBUkcnCisjIGludm9rZWQgdmlhICckdG9faG9zdF9maWxlX2NtZCBBUkcnCiAjCiAjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCiAjIFJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgpAQCAtMTY1Nyw3ICsyOTQxLDggQEAKICMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY190b19ob3N0X2ZpbGUgKCkKIHsKLSAgJG9wdF9kZWJ1ZworICAkZGVidWdfY21kCisKICAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgogfQogIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKQEAgLTE2NjksNyArMjk1NCw4IEBACiAjIGluICh0aGUgY29tbWEgc2VwYXJhdGVkKSBMQVpZLCBubyBjb252ZXJzaW9uIHRha2VzIHBsYWNlLgogZnVuY190b190b29sX2ZpbGUgKCkKIHsKLSAgJG9wdF9kZWJ1ZworICAkZGVidWdfY21kCisKICAgY2FzZSAsJDIsIGluCiAgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCiAgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKQEAgLTE2ODcsNyArMjk3Myw3IEBACiAjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9maWxlX25vb3AgKCkKIHsKLSAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSQxCiB9CiAjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCiAKQEAgLTE2OTgsMTEgKzI5ODQsMTIgQEAKICMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICAkZGVidWdfY21kCisKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSQxCiAgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgogICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKLSAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQKICAgZmkKICAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKIH0KQEAgLTE3MTQsOCArMzAwMSw5IEBACiAjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorICAkZGVidWdfY21kCisKKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSQxCiAgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgogICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCiAgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KQEAgLTE3MzEsMTEgKzMwMTksMTIgQEAKICMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiAoKQogewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCi0gICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCisgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdAogICBmaQogICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgogfQpAQCAtMTc0NywxMiArMzAzNiwxMyBAQAogIyBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQogewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgogICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0kZnVuY19jeWdwYXRoX3Jlc3VsdAogICBmaQogICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgogfQpAQCAtMTc2NSwxMyArMzA1NSwxNCBAQAogIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCiBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKICAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0kZnVuY19jeWdwYXRoX3Jlc3VsdAogICBmaQogICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgogfQpAQCAtMTc4MSw3ICszMDcyLDcgQEAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSMgaW52b2tlZCB2aWEgYCR0b19ob3N0X3BhdGhfY21kIEFSRycKKyMgaW52b2tlZCB2aWEgJyR0b19ob3N0X3BhdGhfY21kIEFSRycKICMKICMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KICMgVGhlIHJlc3VsdCB3aWxsIGJlIGF2YWlsYWJsZSBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgpAQCAtMTgwNSwxMCArMzA5NiwxMSBAQAogdG9faG9zdF9wYXRoX2NtZD0KIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCiB7Ci0gICRvcHRfZGVidWcKKyAgJGRlYnVnX2NtZAorCiAgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgogICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKLSAgICB0b19ob3N0X3BhdGhfY21kPSJmdW5jX2NvbnZlcnRfcGF0aF8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH0iCisgICAgdG9faG9zdF9wYXRoX2NtZD1mdW5jX2NvbnZlcnRfcGF0aF8kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAgIGZpCiB9CiAKQEAgLTE4MTgsNyArMzExMCw4IEBACiAjIGluIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KIGZ1bmNfdG9faG9zdF9wYXRoICgpCiB7Ci0gICRvcHRfZGVidWcKKyAgJGRlYnVnX2NtZAorCiAgIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCiAgICR0b19ob3N0X3BhdGhfY21kICIkMSIKIH0KQEAgLTE4MjksNyArMzEyMiw3IEBACiAjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9wYXRoX25vb3AgKCkKIHsKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSQxCiB9CiAjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9ub29wCiAKQEAgLTE4NDAsOCArMzEzMyw5IEBACiAjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUwogICAgICMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmU7IGN5Z3BhdGggdHVybnMgdGhlbSBpbnRvICcuOycgYW5kICc7Lic7CkBAIC0xODQ5LDcgKzMxNDMsNyBAQAogICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCiAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdAogICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKICAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCiAgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgpAQCAtMTg2Myw4ICszMTU3LDkgQEAKICMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMiAoKQogewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CiAgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKQEAgLTE4ODMsMTQgKzMxNzgsMTUgQEAKICMgYSB3b3JraW5nIHdpbmVwYXRoLiAgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQogewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6CiAgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0CiAgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAogICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKICAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCkBAIC0xOTA0LDE1ICszMjAwLDE2IEBACiAjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCiB7Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyAgJGRlYnVnX2NtZAorCisgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kMQogICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KICAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKICAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgogICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAogICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKICAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0gICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JGZ1bmNfY3lncGF0aF9yZXN1bHQKICAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAogICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKICAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgpAQCAtMTkyNyw4ICszMjI0LDkgQEAKICMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgogZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQogewotICAkb3B0X2RlYnVnCi0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9JDEKICAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCiAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCiAgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQpAQCAtMTkzNyw3ICszMjM1LDcgQEAKICAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKICAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0kZnVuY19jeWdwYXRoX3Jlc3VsdAogICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogOiBcCiAgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgogICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCkBAIC0xOTQ2LDEzICszMjQ0LDMxIEBACiAjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCiAKIAorIyBmdW5jX2RsbF9kZWZfcCBGSUxFCisjIFRydWUgaWZmIEZJTEUgaXMgYSBXaW5kb3dzIERMTCAnLmRlZicgZmlsZS4KKyMgS2VlcCBpbiBzeW5jIHdpdGggX0xUX0RMTF9ERUZfUCBpbiBsaWJ0b29sLm00CitmdW5jX2RsbF9kZWZfcCAoKQoreworICAkZGVidWdfY21kCisKKyAgZnVuY19kbGxfZGVmX3BfdG1wPWAkU0VEIC1uIFwKKyAgICAtZSAncy9eWwkgXSovLycgXAorICAgIC1lICcvXlwoOy4qXCkqJC9kJyBcCisgICAgLWUgJ3MvXlwoRVhQT1JUU1x8TElCUkFSWVwpXChbCSBdLipcKSokL0RFRi9wJyBcCisgICAgLWUgcSBcCisgICAgIiQxImAKKyAgdGVzdCBERUYgPSAiJGZ1bmNfZGxsX2RlZl9wX3RtcCIKK30KKworCiAjIGZ1bmNfbW9kZV9jb21waWxlIGFyZy4uLgogZnVuY19tb2RlX2NvbXBpbGUgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgIyBHZXQgdGhlIGNvbXBpbGF0aW9uIGNvbW1hbmQgYW5kIHRoZSBzb3VyY2UgZmlsZS4KICAgICBiYXNlX2NvbXBpbGU9Ci0gICAgc3JjZmlsZT0iJG5vbm9wdCIgICMgIGFsd2F5cyBrZWVwIGEgbm9uLWVtcHR5IHZhbHVlIGluICJzcmNmaWxlIgorICAgIHNyY2ZpbGU9JG5vbm9wdCAgIyAgYWx3YXlzIGtlZXAgYSBub24tZW1wdHkgdmFsdWUgaW4gInNyY2ZpbGUiCiAgICAgc3VwcHJlc3Nfb3B0PXllcwogICAgIHN1cHByZXNzX291dHB1dD0KICAgICBhcmdfbW9kZT1ub3JtYWwKQEAgLTE5NjUsMTIgKzMyODEsMTIgQEAKICAgICAgIGNhc2UgJGFyZ19tb2RlIGluCiAgICAgICBhcmcgICkKIAkjIGRvIG5vdCAiY29udGludWUiLiAgSW5zdGVhZCwgYWRkIHRoaXMgdG8gYmFzZV9jb21waWxlCi0JbGFzdGFyZz0iJGFyZyIKKwlsYXN0YXJnPSRhcmcKIAlhcmdfbW9kZT1ub3JtYWwKIAk7OwogCiAgICAgICB0YXJnZXQgKQotCWxpYm9iaj0iJGFyZyIKKwlsaWJvYmo9JGFyZwogCWFyZ19tb2RlPW5vcm1hbAogCWNvbnRpbnVlCiAJOzsKQEAgLTE5ODAsNyArMzI5Niw3IEBACiAJY2FzZSAkYXJnIGluCiAJLW8pCiAJICB0ZXN0IC1uICIkbGlib2JqIiAmJiBcCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgInlvdSBjYW5ub3Qgc3BlY2lmeSBcYC1vJyBtb3JlIHRoYW4gb25jZSIKKwkgICAgZnVuY19mYXRhbF9lcnJvciAieW91IGNhbm5vdCBzcGVjaWZ5ICctbycgbW9yZSB0aGFuIG9uY2UiCiAJICBhcmdfbW9kZT10YXJnZXQKIAkgIGNvbnRpbnVlCiAJICA7OwpAQCAtMjAwOSwxMiArMzMyNSwxMiBAQAogCSAgZnVuY19zdHJpcG5hbWUgJy1XYywnICcnICIkYXJnIgogCSAgYXJncz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJICBsYXN0YXJnPQotCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisJICBzYXZlX2lmcz0kSUZTOyBJRlM9LAogCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KLQkgICAgSUZTPSIkc2F2ZV9pZnMiCisJICAgIElGUz0kc2F2ZV9pZnMKIAkgICAgZnVuY19hcHBlbmRfcXVvdGVkIGxhc3RhcmcgIiRhcmciCiAJICBkb25lCi0JICBJRlM9IiRzYXZlX2lmcyIKKwkgIElGUz0kc2F2ZV9pZnMKIAkgIGZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGxhc3RhcmciCiAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKIApAQCAtMjAyNyw4ICszMzQzLDggQEAKIAkgICMgQWNjZXB0IHRoZSBjdXJyZW50IGFyZ3VtZW50IGFzIHRoZSBzb3VyY2UgZmlsZS4KIAkgICMgVGhlIHByZXZpb3VzICJzcmNmaWxlIiBiZWNvbWVzIHRoZSBjdXJyZW50IGFyZ3VtZW50LgogCSAgIwotCSAgbGFzdGFyZz0iJHNyY2ZpbGUiCi0JICBzcmNmaWxlPSIkYXJnIgorCSAgbGFzdGFyZz0kc3JjZmlsZQorCSAgc3JjZmlsZT0kYXJnCiAJICA7OwogCWVzYWMgICMgIGNhc2UgJGFyZwogCTs7CkBAIC0yMDQzLDEzICszMzU5LDEzIEBACiAgICAgICBmdW5jX2ZhdGFsX2Vycm9yICJ5b3UgbXVzdCBzcGVjaWZ5IGFuIGFyZ3VtZW50IGZvciAtWGNvbXBpbGUiCiAgICAgICA7OwogICAgIHRhcmdldCkKLSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgInlvdSBtdXN0IHNwZWNpZnkgYSB0YXJnZXQgd2l0aCBcYC1vJyIKKyAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgInlvdSBtdXN0IHNwZWNpZnkgYSB0YXJnZXQgd2l0aCAnLW8nIgogICAgICAgOzsKICAgICAqKQogICAgICAgIyBHZXQgdGhlIG5hbWUgb2YgdGhlIGxpYnJhcnkgb2JqZWN0LgogICAgICAgdGVzdCAteiAiJGxpYm9iaiIgJiYgewogCWZ1bmNfYmFzZW5hbWUgIiRzcmNmaWxlIgotCWxpYm9iaj0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorCWxpYm9iaj0kZnVuY19iYXNlbmFtZV9yZXN1bHQKICAgICAgIH0KICAgICAgIDs7CiAgICAgZXNhYwpAQCAtMjA2OSw3ICszMzg1LDcgQEAKICAgICBjYXNlICRsaWJvYmogaW4KICAgICAqLmxvKSBmdW5jX2xvMm8gIiRsaWJvYmoiOyBvYmo9JGZ1bmNfbG8yb19yZXN1bHQgOzsKICAgICAqKQotICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGRldGVybWluZSBuYW1lIG9mIGxpYnJhcnkgb2JqZWN0IGZyb20gXGAkbGlib2JqJyIKKyAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBkZXRlcm1pbmUgbmFtZSBvZiBsaWJyYXJ5IG9iamVjdCBmcm9tICckbGlib2JqJyIKICAgICAgIDs7CiAgICAgZXNhYwogCkBAIC0yMDc4LDggKzMzOTQsOCBAQAogICAgIGZvciBhcmcgaW4gJGxhdGVyOyBkbwogICAgICAgY2FzZSAkYXJnIGluCiAgICAgICAtc2hhcmVkKQotCXRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBcCi0JICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gImNhbiBub3QgYnVpbGQgYSBzaGFyZWQgbGlicmFyeSIKKwl0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIiBcCisJICB8fCBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gImNhbm5vdCBidWlsZCBhIHNoYXJlZCBsaWJyYXJ5IgogCWJ1aWxkX29sZF9saWJzPW5vCiAJY29udGludWUKIAk7OwpAQCAtMjEwNSwxNyArMzQyMSwxNyBAQAogICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRsaWJvYmoiCiAgICAgdGVzdCAiWCRsaWJvYmoiICE9ICJYJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IiBcCiAgICAgICAmJiAkRUNITyAiWCRsaWJvYmoiIHwgJEdSRVAgJ1tdfiNeKnt9Ozw+PyInIiciJwkgJigpfGAkW10nIFwKLSAgICAgICYmIGZ1bmNfd2FybmluZyAibGlib2JqIG5hbWUgXGAkbGlib2JqJyBtYXkgbm90IGNvbnRhaW4gc2hlbGwgc3BlY2lhbCBjaGFyYWN0ZXJzLiIKKyAgICAgICYmIGZ1bmNfd2FybmluZyAibGlib2JqIG5hbWUgJyRsaWJvYmonIG1heSBub3QgY29udGFpbiBzaGVsbCBzcGVjaWFsIGNoYXJhY3RlcnMuIgogICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRvYmoiICIvIiAiIgotICAgIG9iam5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICB4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSAgICBsb2JqPSR7eGRpcn0kb2JqZGlyLyRvYmpuYW1lCisgICAgb2JqbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKyAgICB4ZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgICAgbG9iaj0keGRpciRvYmpkaXIvJG9iam5hbWUKIAogICAgIHRlc3QgLXogIiRiYXNlX2NvbXBpbGUiICYmIFwKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIGNvbXBpbGF0aW9uIGNvbW1hbmQiCiAKICAgICAjIERlbGV0ZSBhbnkgbGVmdG92ZXIgbGlicmFyeSBvYmplY3RzLgotICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCiAgICAgICByZW1vdmVsaXN0PSIkb2JqICRsb2JqICRsaWJvYmogJHtsaWJvYmp9VCIKICAgICBlbHNlCiAgICAgICByZW1vdmVsaXN0PSIkbG9iaiAkbGlib2JqICR7bGlib2JqfVQiCkBAIC0yMTI3LDE2ICszNDQzLDE2IEBACiAgICAgICBwaWNfbW9kZT1kZWZhdWx0CiAgICAgICA7OwogICAgIGVzYWMKLSAgICBpZiB0ZXN0ICIkcGljX21vZGUiID0gbm8gJiYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgorICAgIGlmIHRlc3Qgbm8gPSAiJHBpY19tb2RlIiAmJiB0ZXN0IHBhc3NfYWxsICE9ICIkZGVwbGlic19jaGVja19tZXRob2QiOyB0aGVuCiAgICAgICAjIG5vbi1QSUMgY29kZSBpbiBzaGFyZWQgbGlicmFyaWVzIGlzIG5vdCBzdXBwb3J0ZWQKICAgICAgIHBpY19tb2RlPWRlZmF1bHQKICAgICBmaQogCiAgICAgIyBDYWxjdWxhdGUgdGhlIGZpbGVuYW1lIG9mIHRoZSBvdXRwdXQgb2JqZWN0IGlmIGNvbXBpbGVyIGRvZXMKICAgICAjIG5vdCBzdXBwb3J0IC1vIHdpdGggLWMKLSAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IG5vOyB0aGVuCi0gICAgICBvdXRwdXRfb2JqPWAkRUNITyAiJHNyY2ZpbGUiIHwgJFNFRCAncyVeLiovJSU7IHMlXC5bXi5dKiQlJSdgLiR7b2JqZXh0fQotICAgICAgbG9ja2ZpbGU9IiRvdXRwdXRfb2JqLmxvY2siCisgICAgaWYgdGVzdCBubyA9ICIkY29tcGlsZXJfY19vIjsgdGhlbgorICAgICAgb3V0cHV0X29iaj1gJEVDSE8gIiRzcmNmaWxlIiB8ICRTRUQgJ3MlXi4qLyUlOyBzJVwuW14uXSokJSUnYC4kb2JqZXh0CisgICAgICBsb2NrZmlsZT0kb3V0cHV0X29iai5sb2NrCiAgICAgZWxzZQogICAgICAgb3V0cHV0X29iaj0KICAgICAgIG5lZWRfbG9ja3M9bm8KQEAgLTIxNDUsMTIgKzM0NjEsMTIgQEAKIAogICAgICMgTG9jayB0aGlzIGNyaXRpY2FsIHNlY3Rpb24gaWYgaXQgaXMgbmVlZGVkCiAgICAgIyBXZSB1c2UgdGhpcyBzY3JpcHQgZmlsZSB0byBtYWtlIHRoZSBsaW5rLCBpdCBhdm9pZHMgY3JlYXRpbmcgYSBuZXcgZmlsZQotICAgIGlmIHRlc3QgIiRuZWVkX2xvY2tzIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRuZWVkX2xvY2tzIjsgdGhlbgogICAgICAgdW50aWwgJG9wdF9kcnlfcnVuIHx8IGxuICIkcHJvZ3BhdGgiICIkbG9ja2ZpbGUiIDI+L2Rldi9udWxsOyBkbwogCWZ1bmNfZWNobyAiV2FpdGluZyBmb3IgJGxvY2tmaWxlIHRvIGJlIHJlbW92ZWQiCiAJc2xlZXAgMgogICAgICAgZG9uZQotICAgIGVsaWYgdGVzdCAiJG5lZWRfbG9ja3MiID0gd2FybjsgdGhlbgorICAgIGVsaWYgdGVzdCB3YXJuID0gIiRuZWVkX2xvY2tzIjsgdGhlbgogICAgICAgaWYgdGVzdCAtZiAiJGxvY2tmaWxlIjsgdGhlbgogCSRFQ0hPICJcCiAqKiogRVJST1IsICRsb2NrZmlsZSBleGlzdHMgYW5kIGNvbnRhaW5zOgpAQCAtMjE1OCw3ICszNDc0LDcgQEAKIAogVGhpcyBpbmRpY2F0ZXMgdGhhdCBhbm90aGVyIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHVzZSB0aGUgc2FtZQogdGVtcG9yYXJ5IG9iamVjdCBmaWxlLCBhbmQgbGlidG9vbCBjb3VsZCBub3Qgd29yayBhcm91bmQgaXQgYmVjYXVzZQoteW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IFxgLWMnIGFuZCBcYC1vJyB0b2dldGhlci4gIElmIHlvdQoreW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0ICctYycgYW5kICctbycgdG9nZXRoZXIuICBJZiB5b3UKIHJlcGVhdCB0aGlzIGNvbXBpbGF0aW9uLCBpdCBtYXkgc3VjY2VlZCwgYnkgY2hhbmNlLCBidXQgeW91IGhhZCBiZXR0ZXIKIGF2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCiBjb21waWxlci4iCkBAIC0yMTgwLDExICszNDk2LDExIEBACiAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CiAKICAgICAjIE9ubHkgYnVpbGQgYSBQSUMgb2JqZWN0IGlmIHdlIGFyZSBidWlsZGluZyBsaWJ0b29sIGxpYnJhcmllcy4KLSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAgICAgICAjIFdpdGhvdXQgdGhpcyBhc3NpZ25tZW50LCBiYXNlX2NvbXBpbGUgZ2V0cyBlbXB0aWVkLgogICAgICAgZmJzZF9oaWRlb3VzX3NoX2J1Zz0kYmFzZV9jb21waWxlCiAKLSAgICAgIGlmIHRlc3QgIiRwaWNfbW9kZSIgIT0gbm87IHRoZW4KKyAgICAgIGlmIHRlc3Qgbm8gIT0gIiRwaWNfbW9kZSI7IHRoZW4KIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCiAgICAgICBlbHNlCiAJIyBEb24ndCBidWlsZCBQSUMgY29kZQpAQCAtMjIwMSw3ICszNTE3LDcgQEAKICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKICAgICAgICAgICAndGVzdCAtbiAiJG91dHB1dF9vYmoiICYmICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJwogCi0gICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgPSB3YXJuICYmCisgICAgICBpZiB0ZXN0IHdhcm4gPSAiJG5lZWRfbG9ja3MiICYmCiAJIHRlc3QgIlhgY2F0ICRsb2NrZmlsZSAyPi9kZXYvbnVsbGAiICE9ICJYJHNyY2ZpbGUiOyB0aGVuCiAJJEVDSE8gIlwKICoqKiBFUlJPUiwgJGxvY2tmaWxlIGNvbnRhaW5zOgpAQCAtMjIxMiw3ICszNTI4LDcgQEAKIAogVGhpcyBpbmRpY2F0ZXMgdGhhdCBhbm90aGVyIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHVzZSB0aGUgc2FtZQogdGVtcG9yYXJ5IG9iamVjdCBmaWxlLCBhbmQgbGlidG9vbCBjb3VsZCBub3Qgd29yayBhcm91bmQgaXQgYmVjYXVzZQoteW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IFxgLWMnIGFuZCBcYC1vJyB0b2dldGhlci4gIElmIHlvdQoreW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0ICctYycgYW5kICctbycgdG9nZXRoZXIuICBJZiB5b3UKIHJlcGVhdCB0aGlzIGNvbXBpbGF0aW9uLCBpdCBtYXkgc3VjY2VlZCwgYnkgY2hhbmNlLCBidXQgeW91IGhhZCBiZXR0ZXIKIGF2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCiBjb21waWxlci4iCkBAIC0yMjI4LDIwICszNTQ0LDIwIEBACiAgICAgICBmaQogCiAgICAgICAjIEFsbG93IGVycm9yIG1lc3NhZ2VzIG9ubHkgZnJvbSB0aGUgZmlyc3QgY29tcGlsYXRpb24uCi0gICAgICBpZiB0ZXN0ICIkc3VwcHJlc3Nfb3B0IiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJHN1cHByZXNzX29wdCI7IHRoZW4KIAlzdXBwcmVzc19vdXRwdXQ9JyA+L2Rldi9udWxsIDI+JjEnCiAgICAgICBmaQogICAgIGZpCiAKICAgICAjIE9ubHkgYnVpbGQgYSBwb3NpdGlvbi1kZXBlbmRlbnQgb2JqZWN0IGlmIHdlIGJ1aWxkIG9sZCBsaWJyYXJpZXMuCi0gICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgotICAgICAgaWYgdGVzdCAiJHBpY19tb2RlIiAhPSB5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCisgICAgICBpZiB0ZXN0IHllcyAhPSAiJHBpY19tb2RlIjsgdGhlbgogCSMgRG9uJ3QgYnVpbGQgUElDIGNvZGUKIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSRwaWVfZmxhZyIKICAgICAgIGVsc2UKIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCiAgICAgICBmaQotICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRjb21waWxlcl9jX28iOyB0aGVuCiAJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCiAgICAgICBmaQogCkBAIC0yMjUwLDcgKzM1NjYsNyBAQAogICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIgXAogICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJwogCi0gICAgICBpZiB0ZXN0ICIkbmVlZF9sb2NrcyIgPSB3YXJuICYmCisgICAgICBpZiB0ZXN0IHdhcm4gPSAiJG5lZWRfbG9ja3MiICYmCiAJIHRlc3QgIlhgY2F0ICRsb2NrZmlsZSAyPi9kZXYvbnVsbGAiICE9ICJYJHNyY2ZpbGUiOyB0aGVuCiAJJEVDSE8gIlwKICoqKiBFUlJPUiwgJGxvY2tmaWxlIGNvbnRhaW5zOgpAQCAtMjI2MSw3ICszNTc3LDcgQEAKIAogVGhpcyBpbmRpY2F0ZXMgdGhhdCBhbm90aGVyIHByb2Nlc3MgaXMgdHJ5aW5nIHRvIHVzZSB0aGUgc2FtZQogdGVtcG9yYXJ5IG9iamVjdCBmaWxlLCBhbmQgbGlidG9vbCBjb3VsZCBub3Qgd29yayBhcm91bmQgaXQgYmVjYXVzZQoteW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0IFxgLWMnIGFuZCBcYC1vJyB0b2dldGhlci4gIElmIHlvdQoreW91ciBjb21waWxlciBkb2VzIG5vdCBzdXBwb3J0ICctYycgYW5kICctbycgdG9nZXRoZXIuICBJZiB5b3UKIHJlcGVhdCB0aGlzIGNvbXBpbGF0aW9uLCBpdCBtYXkgc3VjY2VlZCwgYnkgY2hhbmNlLCBidXQgeW91IGhhZCBiZXR0ZXIKIGF2b2lkIHBhcmFsbGVsIGJ1aWxkcyAobWFrZSAtaikgaW4gdGhpcyBwbGF0Zm9ybSwgb3IgZ2V0IGEgYmV0dGVyCiBjb21waWxlci4iCkBAIC0yMjgxLDcgKzM1OTcsNyBAQAogICAgICAgZnVuY193cml0ZV9saWJ0b29sX29iamVjdCAiJGxpYm9iaiIgIiRvYmpkaXIvJG9iam5hbWUiICIkb2JqbmFtZSIKIAogICAgICAgIyBVbmxvY2sgdGhlIGNyaXRpY2FsIHNlY3Rpb24gaWYgaXQgd2FzIGxvY2tlZAotICAgICAgaWYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0aGVuCisgICAgICBpZiB0ZXN0IG5vICE9ICIkbmVlZF9sb2NrcyI7IHRoZW4KIAlyZW1vdmVsaXN0PSRsb2NrZmlsZQogICAgICAgICAkUk0gIiRsb2NrZmlsZSIKICAgICAgIGZpCkBAIC0yMjkxLDcgKzM2MDcsNyBAQAogfQogCiAkb3B0X2hlbHAgfHwgewotICB0ZXN0ICIkb3B0X21vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KKyAgdGVzdCBjb21waWxlID0gIiRvcHRfbW9kZSIgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CiB9CiAKIGZ1bmNfbW9kZV9oZWxwICgpCkBAIC0yMzExLDcgKzM2MjcsNyBAQAogUmVtb3ZlIGZpbGVzIGZyb20gdGhlIGJ1aWxkIGRpcmVjdG9yeS4KIAogUk0gaXMgdGhlIG5hbWUgb2YgdGhlIHByb2dyYW0gdG8gdXNlIHRvIGRlbGV0ZSBmaWxlcyBhc3NvY2lhdGVkIHdpdGggZWFjaCBGSUxFCi0odHlwaWNhbGx5IFxgL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyBcYC1mJykgdG8gYmUgcGFzc2VkCisodHlwaWNhbGx5ICcvYmluL3JtJykuICBSTS1PUFRJT05TIGFyZSBvcHRpb25zIChzdWNoIGFzICctZicpIHRvIGJlIHBhc3NlZAogdG8gUk0uCiAKIElmIEZJTEUgaXMgYSBsaWJ0b29sIGxpYnJhcnksIG9iamVjdCBvciBwcm9ncmFtLCBhbGwgdGhlIGZpbGVzIGFzc29jaWF0ZWQKQEAgLTIzMzAsMTYgKzM2NDYsMTYgQEAKICAgLW5vLXN1cHByZXNzICAgICAgZG8gbm90IHN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBmb3IgbXVsdGlwbGUgcGFzc2VzCiAgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5CiAgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQotICAtc2hhcmVkICAgICAgICAgICBkbyBub3QgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwotICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgJy5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgJy5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZwogICAtV2MsRkxBRyAgICAgICAgICBwYXNzIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGNvbXBpbGVyCiAKLUNPTVBJTEUtQ09NTUFORCBpcyBhIGNvbW1hbmQgdG8gYmUgdXNlZCBpbiBjcmVhdGluZyBhIFxgc3RhbmRhcmQnIG9iamVjdCBmaWxlCitDT01QSUxFLUNPTU1BTkQgaXMgYSBjb21tYW5kIHRvIGJlIHVzZWQgaW4gY3JlYXRpbmcgYSAnc3RhbmRhcmQnIG9iamVjdCBmaWxlCiBmcm9tIHRoZSBnaXZlbiBTT1VSQ0VGSUxFLgogCiBUaGUgb3V0cHV0IGZpbGUgbmFtZSBpcyBkZXRlcm1pbmVkIGJ5IHJlbW92aW5nIHRoZSBkaXJlY3RvcnkgY29tcG9uZW50IGZyb20KLVNPVVJDRUZJTEUsIHRoZW4gc3Vic3RpdHV0aW5nIHRoZSBDIHNvdXJjZSBjb2RlIHN1ZmZpeCBcYC5jJyB3aXRoIHRoZQotbGlicmFyeSBvYmplY3Qgc3VmZml4LCBcYC5sbycuIgorU09VUkNFRklMRSwgdGhlbiBzdWJzdGl0dXRpbmcgdGhlIEMgc291cmNlIGNvZGUgc3VmZml4ICcuYycgd2l0aCB0aGUKK2xpYnJhcnkgb2JqZWN0IHN1ZmZpeCwgJy5sbycuIgogICAgICAgICA7OwogCiAgICAgICBleGVjdXRlKQpAQCAtMjM1Miw3ICszNjY4LDcgQEAKIAogICAtZGxvcGVuIEZJTEUgICAgICBhZGQgdGhlIGRpcmVjdG9yeSBjb250YWluaW5nIEZJTEUgdG8gdGhlIGxpYnJhcnkgcGF0aAogCi1UaGlzIG1vZGUgc2V0cyB0aGUgbGlicmFyeSBwYXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGFjY29yZGluZyB0byBcYC1kbG9wZW4nCitUaGlzIG1vZGUgc2V0cyB0aGUgbGlicmFyeSBwYXRoIGVudmlyb25tZW50IHZhcmlhYmxlIGFjY29yZGluZyB0byAnLWRsb3BlbicKIGZsYWdzLgogCiBJZiBhbnkgb2YgdGhlIEFSR1MgYXJlIGxpYnRvb2wgZXhlY3V0YWJsZSB3cmFwcGVycywgdGhlbiB0aGV5IGFyZSB0cmFuc2xhdGVkCkBAIC0yMzcxLDcgKzM2ODcsNyBAQAogRWFjaCBMSUJESVIgaXMgYSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyBsaWJ0b29sIGxpYnJhcmllcy4KIAogVGhlIGNvbW1hbmRzIHRoYXQgdGhpcyBtb2RlIGV4ZWN1dGVzIG1heSByZXF1aXJlIHN1cGVydXNlciBwcml2aWxlZ2VzLiAgVXNlCi10aGUgXGAtLWRyeS1ydW4nIG9wdGlvbiBpZiB5b3UganVzdCB3YW50IHRvIHNlZSB3aGF0IHdvdWxkIGJlIGV4ZWN1dGVkLiIKK3RoZSAnLS1kcnktcnVuJyBvcHRpb24gaWYgeW91IGp1c3Qgd2FudCB0byBzZWUgd2hhdCB3b3VsZCBiZSBleGVjdXRlZC4iCiAgICAgICAgIDs7CiAKICAgICAgIGluc3RhbGwpCkBAIC0yMzgxLDcgKzM2OTcsNyBAQAogSW5zdGFsbCBleGVjdXRhYmxlcyBvciBsaWJyYXJpZXMuCiAKIElOU1RBTEwtQ09NTUFORCBpcyB0aGUgaW5zdGFsbGF0aW9uIGNvbW1hbmQuICBUaGUgZmlyc3QgY29tcG9uZW50IHNob3VsZCBiZQotZWl0aGVyIHRoZSBcYGluc3RhbGwnIG9yIFxgY3AnIHByb2dyYW0uCitlaXRoZXIgdGhlICdpbnN0YWxsJyBvciAnY3AnIHByb2dyYW0uCiAKIFRoZSBmb2xsb3dpbmcgY29tcG9uZW50cyBvZiBJTlNUQUxMLUNPTU1BTkQgYXJlIHRyZWF0ZWQgc3BlY2lhbGx5OgogCkBAIC0yNDA3LDcgKzM3MjMsNyBAQAogICAtYXZvaWQtdmVyc2lvbiAgICBkbyBub3QgYWRkIGEgdmVyc2lvbiBzdWZmaXggaWYgcG9zc2libGUKICAgLWJpbmRpciBCSU5ESVIgICAgc3BlY2lmeSBwYXRoIHRvIGJpbmFyaWVzIGRpcmVjdG9yeSAoZm9yIHN5c3RlbXMgd2hlcmUKICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzIG11c3QgYmUgZm91bmQgaW4gdGhlIFBBVEggc2V0dGluZyBhdCBydW50aW1lKQotICAtZGxvcGVuIEZJTEUgICAgICBcYC1kbHByZW9wZW4nIEZJTEUgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkIGF0IHJ1bnRpbWUKKyAgLWRsb3BlbiBGSUxFICAgICAgJy1kbHByZW9wZW4nIEZJTEUgaWYgaXQgY2Fubm90IGJlIGRsb3BlbmVkIGF0IHJ1bnRpbWUKICAgLWRscHJlb3BlbiBGSUxFICAgbGluayBpbiBGSUxFIGFuZCBhZGQgaXRzIHN5bWJvbHMgdG8gbHRfcHJlbG9hZGVkX3N5bWJvbHMKICAgLWV4cG9ydC1keW5hbWljICAgYWxsb3cgc3ltYm9scyBmcm9tIE9VVFBVVC1GSUxFIHRvIGJlIHJlc29sdmVkIHdpdGggZGxzeW0oMykKICAgLWV4cG9ydC1zeW1ib2xzIFNZTUZJTEUKQEAgLTI0MjEsNyArMzczNyw4IEBACiAgIC1uby1pbnN0YWxsICAgICAgIGxpbmsgYSBub3QtaW5zdGFsbGFibGUgZXhlY3V0YWJsZQogICAtbm8tdW5kZWZpbmVkICAgICBkZWNsYXJlIHRoYXQgYSBsaWJyYXJ5IGRvZXMgbm90IHJlZmVyIHRvIGV4dGVybmFsIHN5bWJvbHMKICAgLW8gT1VUUFVULUZJTEUgICAgY3JlYXRlIE9VVFBVVC1GSUxFIGZyb20gdGhlIHNwZWNpZmllZCBvYmplY3RzCi0gIC1vYmplY3RsaXN0IEZJTEUgIFVzZSBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGZvdW5kIGluIEZJTEUgdG8gc3BlY2lmeSBvYmplY3RzCisgIC1vYmplY3RsaXN0IEZJTEUgIHVzZSBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGZvdW5kIGluIEZJTEUgdG8gc3BlY2lmeSBvYmplY3RzCisgIC1vczJkbGxuYW1lIE5BTUUgIGZvcmNlIGEgc2hvcnQgRExMIG5hbWUgb24gT1MvMiAobm8gZWZmZWN0IG9uIG90aGVyIE9TZXMpCiAgIC1wcmVjaW91cy1maWxlcy1yZWdleCBSRUdFWAogICAgICAgICAgICAgICAgICAgICBkb24ndCByZW1vdmUgb3V0cHV0IGZpbGVzIG1hdGNoaW5nIFJFR0VYCiAgIC1yZWxlYXNlIFJFTEVBU0UgIHNwZWNpZnkgcGFja2FnZSByZWxlYXNlIGluZm9ybWF0aW9uCkBAIC0yNDQxLDIwICszNzU4LDIwIEBACiAgIC1YbGlua2VyIEZMQUcgICAgIHBhc3MgbGlua2VyLXNwZWNpZmljIEZMQUcgZGlyZWN0bHkgdG8gdGhlIGxpbmtlcgogICAtWENDbGlua2VyIEZMQUcgICBwYXNzIGxpbmstc3BlY2lmaWMgRkxBRyB0byB0aGUgY29tcGlsZXIgZHJpdmVyIChDQykKIAotQWxsIG90aGVyIG9wdGlvbnMgKGFyZ3VtZW50cyBiZWdpbm5pbmcgd2l0aCBcYC0nKSBhcmUgaWdub3JlZC4KK0FsbCBvdGhlciBvcHRpb25zIChhcmd1bWVudHMgYmVnaW5uaW5nIHdpdGggJy0nKSBhcmUgaWdub3JlZC4KIAotRXZlcnkgb3RoZXIgYXJndW1lbnQgaXMgdHJlYXRlZCBhcyBhIGZpbGVuYW1lLiAgRmlsZXMgZW5kaW5nIGluIFxgLmxhJyBhcmUKK0V2ZXJ5IG90aGVyIGFyZ3VtZW50IGlzIHRyZWF0ZWQgYXMgYSBmaWxlbmFtZS4gIEZpbGVzIGVuZGluZyBpbiAnLmxhJyBhcmUKIHRyZWF0ZWQgYXMgdW5pbnN0YWxsZWQgbGlidG9vbCBsaWJyYXJpZXMsIG90aGVyIGZpbGVzIGFyZSBzdGFuZGFyZCBvciBsaWJyYXJ5CiBvYmplY3QgZmlsZXMuCiAKLUlmIHRoZSBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmxhJywgdGhlbiBhIGxpYnRvb2wgbGlicmFyeSBpcyBjcmVhdGVkLAotb25seSBsaWJyYXJ5IG9iamVjdHMgKFxgLmxvJyBmaWxlcykgbWF5IGJlIHNwZWNpZmllZCwgYW5kIFxgLXJwYXRoJyBpcworSWYgdGhlIE9VVFBVVC1GSUxFIGVuZHMgaW4gJy5sYScsIHRoZW4gYSBsaWJ0b29sIGxpYnJhcnkgaXMgY3JlYXRlZCwKK29ubHkgbGlicmFyeSBvYmplY3RzICgnLmxvJyBmaWxlcykgbWF5IGJlIHNwZWNpZmllZCwgYW5kICctcnBhdGgnIGlzCiByZXF1aXJlZCwgZXhjZXB0IHdoZW4gY3JlYXRpbmcgYSBjb252ZW5pZW5jZSBsaWJyYXJ5LgogCi1JZiBPVVRQVVQtRklMRSBlbmRzIGluIFxgLmEnIG9yIFxgLmxpYicsIHRoZW4gYSBzdGFuZGFyZCBsaWJyYXJ5IGlzIGNyZWF0ZWQKLXVzaW5nIFxgYXInIGFuZCBcYHJhbmxpYicsIG9yIG9uIFdpbmRvd3MgdXNpbmcgXGBsaWInLgorSWYgT1VUUFVULUZJTEUgZW5kcyBpbiAnLmEnIG9yICcubGliJywgdGhlbiBhIHN0YW5kYXJkIGxpYnJhcnkgaXMgY3JlYXRlZAordXNpbmcgJ2FyJyBhbmQgJ3JhbmxpYicsIG9yIG9uIFdpbmRvd3MgdXNpbmcgJ2xpYicuCiAKLUlmIE9VVFBVVC1GSUxFIGVuZHMgaW4gXGAubG8nIG9yIFxgLiR7b2JqZXh0fScsIHRoZW4gYSByZWxvYWRhYmxlIG9iamVjdCBmaWxlCitJZiBPVVRQVVQtRklMRSBlbmRzIGluICcubG8nIG9yICcuJG9iamV4dCcsIHRoZW4gYSByZWxvYWRhYmxlIG9iamVjdCBmaWxlCiBpcyBjcmVhdGVkLCBvdGhlcndpc2UgYW4gZXhlY3V0YWJsZSBwcm9ncmFtIGlzIGNyZWF0ZWQuIgogICAgICAgICA7OwogCkBAIC0yNDY1LDcgKzM3ODIsNyBAQAogUmVtb3ZlIGxpYnJhcmllcyBmcm9tIGFuIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCiAKIFJNIGlzIHRoZSBuYW1lIG9mIHRoZSBwcm9ncmFtIHRvIHVzZSB0byBkZWxldGUgZmlsZXMgYXNzb2NpYXRlZCB3aXRoIGVhY2ggRklMRQotKHR5cGljYWxseSBcYC9iaW4vcm0nKS4gIFJNLU9QVElPTlMgYXJlIG9wdGlvbnMgKHN1Y2ggYXMgXGAtZicpIHRvIGJlIHBhc3NlZAorKHR5cGljYWxseSAnL2Jpbi9ybScpLiAgUk0tT1BUSU9OUyBhcmUgb3B0aW9ucyAoc3VjaCBhcyAnLWYnKSB0byBiZSBwYXNzZWQKIHRvIFJNLgogCiBJZiBGSUxFIGlzIGEgbGlidG9vbCBsaWJyYXJ5LCBhbGwgdGhlIGZpbGVzIGFzc29jaWF0ZWQgd2l0aCBpdCBhcmUgZGVsZXRlZC4KQEAgLTI0NzMsMTcgKzM3OTAsMTcgQEAKICAgICAgICAgOzsKIAogICAgICAgKikKLSAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlIFxgJG9wdF9tb2RlJyIKKyAgICAgICAgZnVuY19mYXRhbF9oZWxwICJpbnZhbGlkIG9wZXJhdGlvbiBtb2RlICckb3B0X21vZGUnIgogICAgICAgICA7OwogICAgIGVzYWMKIAogICAgIGVjaG8KLSAgICAkRUNITyAiVHJ5IFxgJHByb2duYW1lIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgb3RoZXIgbW9kZXMuIgorICAgICRFQ0hPICJUcnkgJyRwcm9nbmFtZSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uIGFib3V0IG90aGVyIG1vZGVzLiIKIH0KIAogIyBOb3cgdGhhdCB3ZSd2ZSBjb2xsZWN0ZWQgYSBwb3NzaWJsZSAtLW1vZGUgYXJnLCBzaG93IGhlbHAgaWYgbmVjZXNzYXJ5CiBpZiAkb3B0X2hlbHA7IHRoZW4KLSAgaWYgdGVzdCAiJG9wdF9oZWxwIiA9IDo7IHRoZW4KKyAgaWYgdGVzdCA6ID0gIiRvcHRfaGVscCI7IHRoZW4KICAgICBmdW5jX21vZGVfaGVscAogICBlbHNlCiAgICAgewpAQCAtMjQ5MSw3ICszODA4LDcgQEAKICAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCiAJZnVuY19tb2RlX2hlbHAKICAgICAgIGRvbmUKLSAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJworICAgIH0gfCAkU0VEIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJwogICAgIHsKICAgICAgIGZ1bmNfaGVscCBub2V4aXQKICAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCkBAIC0yNDk5LDcgKzM4MTYsNyBAQAogCWZ1bmNfbW9kZV9oZWxwCiAgICAgICBkb25lCiAgICAgfSB8Ci0gICAgc2VkICcxZAorICAgICRTRUQgJzFkCiAgICAgICAvXldoZW4gcmVwb3J0aW5nLywvXlJlcG9ydC97CiAJSAogCWQKQEAgLTI1MTYsMTYgKzM4MzMsMTcgQEAKICMgZnVuY19tb2RlX2V4ZWN1dGUgYXJnLi4uCiBmdW5jX21vZGVfZXhlY3V0ZSAoKQogewotICAgICRvcHRfZGVidWcKKyAgICAkZGVidWdfY21kCisKICAgICAjIFRoZSBmaXJzdCBhcmd1bWVudCBpcyB0aGUgY29tbWFuZCBuYW1lLgotICAgIGNtZD0iJG5vbm9wdCIKKyAgICBjbWQ9JG5vbm9wdAogICAgIHRlc3QgLXogIiRjbWQiICYmIFwKICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCiAKICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgogICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbwogICAgICAgdGVzdCAtZiAiJGZpbGUiIFwKLQl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCisJfHwgZnVuY19mYXRhbF9oZWxwICInJGZpbGUnIGlzIG5vdCBhIGZpbGUiCiAKICAgICAgIGRpcj0KICAgICAgIGNhc2UgJGZpbGUgaW4KQEAgLTI1MzUsNyArMzg1Myw3IEBACiAKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgogCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCi0JICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCSAgfHwgZnVuY19mYXRhbF9oZWxwICInJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgogCiAJIyBSZWFkIHRoZSBsaWJ0b29sIGxpYnJhcnkuCiAJZGxuYW1lPQpAQCAtMjU0NiwxOCArMzg2NCwxOCBAQAogCWlmIHRlc3QgLXogIiRkbG5hbWUiOyB0aGVuCiAJICAjIFdhcm4gaWYgaXQgd2FzIGEgc2hhcmVkIGxpYnJhcnkuCiAJICB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyIgJiYgXAotCSAgICBmdW5jX3dhcm5pbmcgIlxgJGZpbGUnIHdhcyBub3QgbGlua2VkIHdpdGggXGAtZXhwb3J0LWR5bmFtaWMnIgorCSAgICBmdW5jX3dhcm5pbmcgIickZmlsZScgd2FzIG5vdCBsaW5rZWQgd2l0aCAnLWV4cG9ydC1keW5hbWljJyIKIAkgIGNvbnRpbnVlCiAJZmkKIAogCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgotCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAKIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KIAkgIGZ1bmNfYXBwZW5kIGRpciAiLyRvYmpkaXIiCiAJZWxzZQogCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIFxgJGRsbmFtZScgaW4gXGAkZGlyJyBvciBcYCRkaXIvJG9iamRpciciCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kICckZGxuYW1lJyBpbiAnJGRpcicgb3IgJyRkaXIvJG9iamRpciciCiAJICBmaQogCWZpCiAJOzsKQEAgLTI1NjUsMTggKzM4ODMsMTggQEAKICAgICAgICoubG8pCiAJIyBKdXN0IGFkZCB0aGUgZGlyZWN0b3J5IGNvbnRhaW5pbmcgdGhlIC5sbyBmaWxlLgogCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgotCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAJOzsKIAogICAgICAgKikKLQlmdW5jX3dhcm5pbmcgIlxgLWRsb3BlbicgaXMgaWdub3JlZCBmb3Igbm9uLWxpYnRvb2wgbGlicmFyaWVzIGFuZCBvYmplY3RzIgorCWZ1bmNfd2FybmluZyAiJy1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG5vbi1saWJ0b29sIGxpYnJhcmllcyBhbmQgb2JqZWN0cyIKIAljb250aW51ZQogCTs7CiAgICAgICBlc2FjCiAKICAgICAgICMgR2V0IHRoZSBhYnNvbHV0ZSBwYXRobmFtZS4KICAgICAgIGFic2Rpcj1gY2QgIiRkaXIiICYmIHB3ZGAKLSAgICAgIHRlc3QgLW4gIiRhYnNkaXIiICYmIGRpcj0iJGFic2RpciIKKyAgICAgIHRlc3QgLW4gIiRhYnNkaXIiICYmIGRpcj0kYWJzZGlyCiAKICAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCiAgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgpAQCAtMjU4OCw3ICszOTA2LDcgQEAKIAogICAgICMgVGhpcyB2YXJpYWJsZSB0ZWxscyB3cmFwcGVyIHNjcmlwdHMganVzdCB0byBzZXQgc2hsaWJwYXRoX3ZhcgogICAgICMgcmF0aGVyIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KLSAgICBsaWJ0b29sX2V4ZWN1dGVfbWFnaWM9IiRtYWdpYyIKKyAgICBsaWJ0b29sX2V4ZWN1dGVfbWFnaWM9JG1hZ2ljCiAKICAgICAjIENoZWNrIGlmIGFueSBvZiB0aGUgYXJndW1lbnRzIGlzIGEgd3JhcHBlciBzY3JpcHQuCiAgICAgYXJncz0KQEAgLTI2MDEsMTIgKzM5MTksMTIgQEAKIAlpZiBmdW5jX2x0d3JhcHBlcl9zY3JpcHRfcCAiJGZpbGUiOyB0aGVuCiAJICBmdW5jX3NvdXJjZSAiJGZpbGUiCiAJICAjIFRyYW5zZm9ybSBhcmcgdG8gd3JhcHBlZCBuYW1lLgotCSAgZmlsZT0iJHByb2dkaXIvJHByb2dyYW0iCisJICBmaWxlPSRwcm9nZGlyLyRwcm9ncmFtCiAJZWxpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiRmaWxlIjsgdGhlbgogCSAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAiJGZpbGUiCiAJICBmdW5jX3NvdXJjZSAiJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0IgogCSAgIyBUcmFuc2Zvcm0gYXJnIHRvIHdyYXBwZWQgbmFtZS4KLQkgIGZpbGU9IiRwcm9nZGlyLyRwcm9ncmFtIgorCSAgZmlsZT0kcHJvZ2Rpci8kcHJvZ3JhbQogCWZpCiAJOzsKICAgICAgIGVzYWMKQEAgLTI2MTQsNyArMzkzMiwxNSBAQAogICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgogICAgIGRvbmUKIAotICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCisgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCisgICAgICAjIERpc3BsYXkgd2hhdCB3b3VsZCBiZSBkb25lLgorICAgICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCisJZXZhbCAiXCRFQ0hPIFwiXCRzaGxpYnBhdGhfdmFyPVwkJHNobGlicGF0aF92YXJcIiIKKwllY2hvICJleHBvcnQgJHNobGlicGF0aF92YXIiCisgICAgICBmaQorICAgICAgJEVDSE8gIiRjbWQkYXJncyIKKyAgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworICAgIGVsc2UKICAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgogCSMgRXhwb3J0IHRoZSBzaGxpYnBhdGhfdmFyLgogCWV2YWwgImV4cG9ydCAkc2hsaWJwYXRoX3ZhciIKQEAgLTI2MzEsMjUgKzM5NTcsMTggQEAKICAgICAgIGRvbmUKIAogICAgICAgIyBOb3cgcHJlcGFyZSB0byBhY3R1YWxseSBleGVjIHRoZSBjb21tYW5kLgotICAgICAgZXhlY19jbWQ9IlwkY21kJGFyZ3MiCi0gICAgZWxzZQotICAgICAgIyBEaXNwbGF5IHdoYXQgd291bGQgYmUgZG9uZS4KLSAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotCWV2YWwgIlwkRUNITyBcIlwkc2hsaWJwYXRoX3Zhcj1cJCRzaGxpYnBhdGhfdmFyXCIiCi0JZWNobyAiZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgotICAgICAgZmkKLSAgICAgICRFQ0hPICIkY21kJGFyZ3MiCi0gICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAgIGV4ZWNfY21kPVwkY21kJGFyZ3MKICAgICBmaQogfQogCi10ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KK3Rlc3QgZXhlY3V0ZSA9ICIkb3B0X21vZGUiICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQogCiAKICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KIGZ1bmNfbW9kZV9maW5pc2ggKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgbGlicz0KICAgICBsaWJkaXJzPQogICAgIGFkbWluY21kcz0KQEAgLTI2NjMsMTEgKzM5ODIsMTEgQEAKIAlpZiBmdW5jX2xhbGliX3Vuc2FmZV9wICIkb3B0IjsgdGhlbgogCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCiAJZWxzZQotCSAgZnVuY193YXJuaW5nICJcYCRvcHQnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwkgIGZ1bmNfd2FybmluZyAiJyRvcHQnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAlmaQogCiAgICAgICBlbHNlCi0JZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgorCWZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgYXJndW1lbnQgJyRvcHQnIgogICAgICAgZmkKICAgICBkb25lCiAKQEAgLTI2ODIsMTIgKzQwMDEsMTIgQEAKICAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcwogICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCiAgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCi0gICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCisgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgJz0nIHByZWZpeGVzIGZyb20gJGxpYiIKICAgICAgICAgZG9uZQogICAgICAgZWxzZQogICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAogICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbwotCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAorCSAgJFNFRCAtZSAiJHN5c3Jvb3RfY21kIHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCiAJICAgID4gJHRtcGRpci90bXAtbGEKIAkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKIAlkb25lCkBAIC0yNzEyLDcgKzQwMzEsNyBAQAogICAgIGZpCiAKICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KLSAgICAkb3B0X3NpbGVudCAmJiBleGl0ICRFWElUX1NVQ0NFU1MKKyAgICAkb3B0X3F1aWV0ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwogCiAgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KICAgICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCkBAIC0yNzIzLDI3ICs0MDQyLDI3IEBACiAgICAgICBlY2hvCiAgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKICAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgotICAgICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgJy1MTElCRElSJyIKICAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKICAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgotCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkc2hsaWJwYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSAnJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgogCWVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0JZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRydW5wYXRoX3ZhcicgZW52aXJvbm1lbnQgdmFyaWFibGUiCisJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSAnJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKIAllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgogICAgICAgZmkKICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCWxpYmRpcj1MSUJESVIKIAlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCiAKLQkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgorCSRFQ0hPICIgICAtIHVzZSB0aGUgJyRmbGFnJyBsaW5rZXIgZmxhZyIKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgogCSRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKICAgICAgIGZpCiAgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgotCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorCWVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gJy9ldGMvbGQuc28uY29uZiciCiAgICAgICBmaQogICAgICAgZWNobwogCkBAIC0yNzYyLDE4ICs0MDgxLDIwIEBACiAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiB9CiAKLXRlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KK3Rlc3QgZmluaXNoID0gIiRvcHRfbW9kZSIgJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KIAogCiAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgogZnVuY19tb2RlX2luc3RhbGwgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgIyBUaGVyZSBtYXkgYmUgYW4gb3B0aW9uYWwgc2goMSkgYXJndW1lbnQgYXQgdGhlIGJlZ2lubmluZyBvZgogICAgICMgaW5zdGFsbF9wcm9nIChlc3BlY2lhbGx5IG9uIFdpbmRvd3MgTlQpLgotICAgIGlmIHRlc3QgIiRub25vcHQiID0gIiRTSEVMTCIgfHwgdGVzdCAiJG5vbm9wdCIgPSAvYmluL3NoIHx8CisgICAgaWYgdGVzdCAiJFNIRUxMIiA9ICIkbm9ub3B0IiB8fCB0ZXN0IC9iaW4vc2ggPSAiJG5vbm9wdCIgfHwKICAgICAgICAjIEFsbG93IHRoZSB1c2Ugb2YgR05VIHNodG9vbCdzIGluc3RhbGwgY29tbWFuZC4KLSAgICAgICBjYXNlICRub25vcHQgaW4gKnNodG9vbCopIDo7OyAqKSBmYWxzZTs7IGVzYWM7IHRoZW4KKyAgICAgICBjYXNlICRub25vcHQgaW4gKnNodG9vbCopIDo7OyAqKSBmYWxzZTs7IGVzYWMKKyAgICB0aGVuCiAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCiAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbm9ub3B0IgogICAgICAgaW5zdGFsbF9wcm9nPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQgIgpAQCAtMjgwMCw3ICs0MTIxLDcgQEAKICAgICBvcHRzPQogICAgIHByZXY9CiAgICAgaW5zdGFsbF90eXBlPQotICAgIGlzZGlyPW5vCisgICAgaXNkaXI9ZmFsc2UKICAgICBzdHJpcG1lPQogICAgIG5vX21vZGU9OgogICAgIGZvciBhcmcKQEAgLTI4MTMsNyArNDEzNCw3IEBACiAgICAgICBmaQogCiAgICAgICBjYXNlICRhcmcgaW4KLSAgICAgIC1kKSBpc2Rpcj15ZXMgOzsKKyAgICAgIC1kKSBpc2Rpcj06IDs7CiAgICAgICAtZikKIAlpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCiAJICBwcmV2PSRhcmcKQEAgLTI4MzEsNyArNDE1Miw3IEBACiAgICAgICAqKQogCSMgSWYgdGhlIHByZXZpb3VzIG9wdGlvbiBuZWVkZWQgYW4gYXJndW1lbnQsIHRoZW4gc2tpcCBpdC4KIAlpZiB0ZXN0IC1uICIkcHJldiI7IHRoZW4KLQkgIGlmIHRlc3QgIngkcHJldiIgPSB4LW0gJiYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSI7IHRoZW4KKwkgIGlmIHRlc3QgWC1tID0gIlgkcHJldiIgJiYgdGVzdCAtbiAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSI7IHRoZW4KIAkgICAgYXJnMj0kaW5zdGFsbF9vdmVycmlkZV9tb2RlCiAJICAgIG5vX21vZGU9ZmFsc2UKIAkgIGZpCkBAIC0yODU2LDcgKzQxNzcsNyBAQAogICAgICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGFuIGluc3RhbGwgcHJvZ3JhbSIKIAogICAgIHRlc3QgLW4gIiRwcmV2IiAmJiBcCi0gICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSBcYCRwcmV2JyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCisgICAgICBmdW5jX2ZhdGFsX2hlbHAgInRoZSAnJHByZXYnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKIAogICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCiAgICAgICBpZiAkaW5zdGFsbF9jcDsgdGhlbiA6OyBlbHNlCkBAIC0yODc4LDE5ICs0MTk5LDE5IEBACiAgICAgZGVzdD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAKICAgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBkZXN0aW5hdGlvbiBpcyBhIGRpcmVjdG9yeS4KLSAgICB0ZXN0IC1kICIkZGVzdCIgJiYgaXNkaXI9eWVzCi0gICAgaWYgdGVzdCAiJGlzZGlyIiA9IHllczsgdGhlbgotICAgICAgZGVzdGRpcj0iJGRlc3QiCisgICAgdGVzdCAtZCAiJGRlc3QiICYmIGlzZGlyPToKKyAgICBpZiAkaXNkaXI7IHRoZW4KKyAgICAgIGRlc3RkaXI9JGRlc3QKICAgICAgIGRlc3RuYW1lPQogICAgIGVsc2UKICAgICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiRkZXN0IiAiIiAiLiIKLSAgICAgIGRlc3RkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotICAgICAgZGVzdG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICAgIGRlc3RkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKKyAgICAgIGRlc3RuYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCiAgICAgICAjIE5vdCBhIGRpcmVjdG9yeSwgc28gY2hlY2sgdG8gc2VlIHRoYXQgdGhlcmUgaXMgb25seSBvbmUgZmlsZSBzcGVjaWZpZWQuCiAgICAgICBzZXQgZHVtbXkgJGZpbGVzOyBzaGlmdAogICAgICAgdGVzdCAiJCMiIC1ndCAxICYmIFwKLQlmdW5jX2ZhdGFsX2hlbHAgIlxgJGRlc3QnIGlzIG5vdCBhIGRpcmVjdG9yeSIKKwlmdW5jX2ZhdGFsX2hlbHAgIickZGVzdCcgaXMgbm90IGEgZGlyZWN0b3J5IgogICAgIGZpCiAgICAgY2FzZSAkZGVzdGRpciBpbgogICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKQEAgLTI4OTksNyArNDIyMCw3IEBACiAJY2FzZSAkZmlsZSBpbgogCSoubG8pIDs7CiAJKikKLQkgIGZ1bmNfZmF0YWxfaGVscCAiXGAkZGVzdGRpcicgbXVzdCBiZSBhbiBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSIKKwkgIGZ1bmNfZmF0YWxfaGVscCAiJyRkZXN0ZGlyJyBtdXN0IGJlIGFuIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIgogCSAgOzsKIAllc2FjCiAgICAgICBkb25lCkBAIC0yOTA4LDcgKzQyMjksNyBAQAogCiAgICAgIyBUaGlzIHZhcmlhYmxlIHRlbGxzIHdyYXBwZXIgc2NyaXB0cyBqdXN0IHRvIHNldCB2YXJpYWJsZXMgcmF0aGVyCiAgICAgIyB0aGFuIHJ1bm5pbmcgdGhlaXIgcHJvZ3JhbXMuCi0gICAgbGlidG9vbF9pbnN0YWxsX21hZ2ljPSIkbWFnaWMiCisgICAgbGlidG9vbF9pbnN0YWxsX21hZ2ljPSRtYWdpYwogCiAgICAgc3RhdGljbGlicz0KICAgICBmdXR1cmVfbGliZGlycz0KQEAgLTI5MjgsNyArNDI0OSw3IEBACiAKIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgogCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCi0JICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiJyRmaWxlJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCiAKIAlsaWJyYXJ5X25hbWVzPQogCW9sZF9saWJyYXJ5PQpAQCAtMjk1MCw3ICs0MjcxLDcgQEAKIAlmaQogCiAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCi0JZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwlkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCiAKIAlpZiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCkBAIC0yOTY0LDcgKzQyODUsNyBAQAogCSAgIyBhcmUgaW5zdGFsbGVkIGludG8gJGxpYmRpci8uLi9iaW4gKGN1cnJlbnRseSwgdGhhdCB3b3JrcyBmaW5lKQogCSAgIyBidXQgaXQncyBzb21ldGhpbmcgdG8ga2VlcCBhbiBleWUgb24uCiAJICB0ZXN0ICIkaW5zdF9wcmVmaXhfZGlyIiA9ICIkZGVzdGRpciIgJiYgXAotCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogY2Fubm90IGluc3RhbGwgXGAkZmlsZScgdG8gYSBkaXJlY3Rvcnkgbm90IGVuZGluZyBpbiAkbGliZGlyIgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogY2Fubm90IGluc3RhbGwgJyRmaWxlJyB0byBhIGRpcmVjdG9yeSBub3QgZW5kaW5nIGluICRsaWJkaXIiCiAKIAkgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJICAgICMgU3RpY2sgdGhlIGluc3RfcHJlZml4X2RpciBkYXRhIGludG8gdGhlIGxpbmsgY29tbWFuZC4KQEAgLTI5NzMsMjkgKzQyOTQsMzYgQEAKIAkgICAgcmVsaW5rX2NvbW1hbmQ9YCRFQ0hPICIkcmVsaW5rX2NvbW1hbmQiIHwgJFNFRCAicyVAaW5zdF9wcmVmaXhfZGlyQCUlImAKIAkgIGZpCiAKLQkgIGZ1bmNfd2FybmluZyAicmVsaW5raW5nIFxgJGZpbGUnIgorCSAgZnVuY193YXJuaW5nICJyZWxpbmtpbmcgJyRmaWxlJyIKIAkgIGZ1bmNfc2hvd19ldmFsICIkcmVsaW5rX2NvbW1hbmQiIFwKLQkgICAgJ2Z1bmNfZmF0YWxfZXJyb3IgImVycm9yOiByZWxpbmsgXGAkZmlsZSdcJycgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCInCisJICAgICdmdW5jX2ZhdGFsX2Vycm9yICJlcnJvcjogcmVsaW5rICdcJyckZmlsZSdcJycgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdCInCiAJZmkKIAogCSMgU2VlIHRoZSBuYW1lcyBvZiB0aGUgc2hhcmVkIGxpYnJhcnkuCiAJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzOyBzaGlmdAogCWlmIHRlc3QgLW4gIiQxIjsgdGhlbgotCSAgcmVhbG5hbWU9IiQxIgorCSAgcmVhbG5hbWU9JDEKIAkgIHNoaWZ0CiAKLQkgIHNyY25hbWU9IiRyZWFsbmFtZSIKLQkgIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCIgJiYgc3JjbmFtZT0iJHJlYWxuYW1lIlQKKwkgIHNyY25hbWU9JHJlYWxuYW1lCisJICB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiICYmIHNyY25hbWU9JHtyZWFsbmFtZX1UCiAKIAkgICMgSW5zdGFsbCB0aGUgc2hhcmVkIGxpYnJhcnkgYW5kIGJ1aWxkIHRoZSBzeW1saW5rcy4KIAkgIGZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9zaGFyZWRfcHJvZyAkZGlyLyRzcmNuYW1lICRkZXN0ZGlyLyRyZWFsbmFtZSIgXAogCSAgICAgICdleGl0ICQ/JwotCSAgdHN0cmlwbWU9IiRzdHJpcG1lIgorCSAgdHN0cmlwbWU9JHN0cmlwbWUKIAkgIGNhc2UgJGhvc3Rfb3MgaW4KIAkgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKIAkgICAgY2FzZSAkcmVhbG5hbWUgaW4KIAkgICAgKi5kbGwuYSkKLQkgICAgICB0c3RyaXBtZT0iIgorCSAgICAgIHRzdHJpcG1lPQorCSAgICAgIDs7CisJICAgIGVzYWMKKwkgICAgOzsKKwkgIG9zMiopCisJICAgIGNhc2UgJHJlYWxuYW1lIGluCisJICAgICpfZGxsLmEpCisJICAgICAgdHN0cmlwbWU9CiAJICAgICAgOzsKIAkgICAgZXNhYwogCSAgICA7OwpAQCAtMzAwNiw3ICs0MzM0LDcgQEAKIAogCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCiAJICAgICMgRGVsZXRlIHRoZSBvbGQgc3ltbGlua3MsIGFuZCBjcmVhdGUgbmV3IG9uZXMuCi0JICAgICMgVHJ5IGBsbiAtc2YnIGZpcnN0LCBiZWNhdXNlIHRoZSBgbG4nIGJpbmFyeSBtaWdodCBkZXBlbmQgb24KKwkgICAgIyBUcnkgJ2xuIC1zZicgZmlyc3QsIGJlY2F1c2UgdGhlICdsbicgYmluYXJ5IG1pZ2h0IGRlcGVuZCBvbgogCSAgICAjIHRoZSBzeW1saW5rIHdlIHJlcGxhY2UhICBTb2xhcmlzIC9iaW4vbG4gZG9lcyBub3QgdW5kZXJzdGFuZCAtZiwKIAkgICAgIyBzbyB3ZSBhbHNvIG5lZWQgdG8gdHJ5IHJtICYmIGxuIC1zLgogCSAgICBmb3IgbGlua25hbWUKQEAgLTMwMTcsMTQgKzQzNDUsMTQgQEAKIAkgIGZpCiAKIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBwb3N0aW5zdGFsbCBjb21tYW5kcy4KLQkgIGxpYj0iJGRlc3RkaXIvJHJlYWxuYW1lIgorCSAgbGliPSRkZXN0ZGlyLyRyZWFsbmFtZQogCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0aW5zdGFsbF9jbWRzIiAnZXhpdCAkPycKIAlmaQogCiAJIyBJbnN0YWxsIHRoZSBwc2V1ZG8tbGlicmFyeSBmb3IgaW5mb3JtYXRpb24gcHVycG9zZXMuCiAJZnVuY19iYXNlbmFtZSAiJGZpbGUiCi0JbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCWluc3RuYW1lPSIkZGlyLyRuYW1lImkKKwluYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCWluc3RuYW1lPSRkaXIvJHtuYW1lfWkKIAlmdW5jX3Nob3dfZXZhbCAiJGluc3RhbGxfcHJvZyAkaW5zdG5hbWUgJGRlc3RkaXIvJG5hbWUiICdleGl0ICQ/JwogCiAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgpAQCAtMzAzNiwxMSArNDM2NCwxMSBAQAogCiAJIyBGaWd1cmUgb3V0IGRlc3RpbmF0aW9uIGZpbGUgbmFtZSwgaWYgaXQgd2Fzbid0IGFscmVhZHkgc3BlY2lmaWVkLgogCWlmIHRlc3QgLW4gIiRkZXN0bmFtZSI7IHRoZW4KLQkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdG5hbWUiCisJICBkZXN0ZmlsZT0kZGVzdGRpci8kZGVzdG5hbWUKIAllbHNlCiAJICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKLQkgIGRlc3RmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JICBkZXN0ZmlsZT0iJGRlc3RkaXIvJGRlc3RmaWxlIgorCSAgZGVzdGZpbGU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJICBkZXN0ZmlsZT0kZGVzdGRpci8kZGVzdGZpbGUKIAlmaQogCiAJIyBEZWR1Y2UgdGhlIG5hbWUgb2YgdGhlIGRlc3RpbmF0aW9uIG9sZC1zdHlsZSBvYmplY3QgZmlsZS4KQEAgLTMwNTAsMTEgKzQzNzgsMTEgQEAKIAkgIHN0YXRpY2Rlc3Q9JGZ1bmNfbG8yb19yZXN1bHQKIAkgIDs7CiAJKi4kb2JqZXh0KQotCSAgc3RhdGljZGVzdD0iJGRlc3RmaWxlIgorCSAgc3RhdGljZGVzdD0kZGVzdGZpbGUKIAkgIGRlc3RmaWxlPQogCSAgOzsKIAkqKQotCSAgZnVuY19mYXRhbF9oZWxwICJjYW5ub3QgY29weSBhIGxpYnRvb2wgb2JqZWN0IHRvIFxgJGRlc3RmaWxlJyIKKwkgIGZ1bmNfZmF0YWxfaGVscCAiY2Fubm90IGNvcHkgYSBsaWJ0b29sIG9iamVjdCB0byAnJGRlc3RmaWxlJyIKIAkgIDs7CiAJZXNhYwogCkBAIC0zMDYzLDcgKzQzOTEsNyBAQAogCSAgZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGZpbGUgJGRlc3RmaWxlIiAnZXhpdCAkPycKIAogCSMgSW5zdGFsbCB0aGUgb2xkIG9iamVjdCBpZiBlbmFibGVkLgotCWlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCiAJICAjIERlZHVjZSB0aGUgbmFtZSBvZiB0aGUgb2xkLXN0eWxlIG9iamVjdCBmaWxlLgogCSAgZnVuY19sbzJvICIkZmlsZSIKIAkgIHN0YXRpY29iaj0kZnVuY19sbzJvX3Jlc3VsdApAQCAtMzA3NSwyMyArNDQwMywyMyBAQAogICAgICAgKikKIAkjIEZpZ3VyZSBvdXQgZGVzdGluYXRpb24gZmlsZSBuYW1lLCBpZiBpdCB3YXNuJ3QgYWxyZWFkeSBzcGVjaWZpZWQuCiAJaWYgdGVzdCAtbiAiJGRlc3RuYW1lIjsgdGhlbgotCSAgZGVzdGZpbGU9IiRkZXN0ZGlyLyRkZXN0bmFtZSIKKwkgIGRlc3RmaWxlPSRkZXN0ZGlyLyRkZXN0bmFtZQogCWVsc2UKIAkgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgotCSAgZGVzdGZpbGU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLQkgIGRlc3RmaWxlPSIkZGVzdGRpci8kZGVzdGZpbGUiCisJICBkZXN0ZmlsZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKwkgIGRlc3RmaWxlPSRkZXN0ZGlyLyRkZXN0ZmlsZQogCWZpCiAKIAkjIElmIHRoZSBmaWxlIGlzIG1pc3NpbmcsIGFuZCB0aGVyZSBpcyBhIC5leGUgb24gdGhlIGVuZCwgc3RyaXAgaXQKIAkjIGJlY2F1c2UgaXQgaXMgbW9zdCBsaWtlbHkgYSBsaWJ0b29sIHNjcmlwdCB3ZSBhY3R1YWxseSB3YW50IHRvCiAJIyBpbnN0YWxsCi0Jc3RyaXBwZWRfZXh0PSIiCisJc3RyaXBwZWRfZXh0PQogCWNhc2UgJGZpbGUgaW4KIAkgICouZXhlKQogCSAgICBpZiB0ZXN0ICEgLWYgIiRmaWxlIjsgdGhlbgogCSAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZpbGUiCiAJICAgICAgZmlsZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0JICAgICAgc3RyaXBwZWRfZXh0PSIuZXhlIgorCSAgICAgIHN0cmlwcGVkX2V4dD0uZXhlCiAJICAgIGZpCiAJICAgIDs7CiAJZXNhYwpAQCAtMzExOSwxOSArNDQ0NywxOSBAQAogCiAJICAjIENoZWNrIHRoZSB2YXJpYWJsZXMgdGhhdCBzaG91bGQgaGF2ZSBiZWVuIHNldC4KIAkgIHRlc3QgLXogIiRnZW5lcmF0ZWRfYnlfbGlidG9vbF92ZXJzaW9uIiAmJiBcCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgImludmFsaWQgbGlidG9vbCB3cmFwcGVyIHNjcmlwdCBcYCR3cmFwcGVyJyIKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBsaWJ0b29sIHdyYXBwZXIgc2NyaXB0ICckd3JhcHBlciciCiAKLQkgIGZpbmFsaXplPXllcworCSAgZmluYWxpemU9OgogCSAgZm9yIGxpYiBpbiAkbm90aW5zdF9kZXBsaWJzOyBkbwogCSAgICAjIENoZWNrIHRvIHNlZSB0aGF0IGVhY2ggbGlicmFyeSBpcyBpbnN0YWxsZWQuCiAJICAgIGxpYmRpcj0KIAkgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KIAkgICAgICBmdW5jX3NvdXJjZSAiJGxpYiIKIAkgICAgZmkKLQkgICAgbGliZmlsZT0iJGxpYmRpci8iYCRFQ0hPICIkbGliIiB8ICRTRUQgJ3MlXi4qLyUlZydgICMjIyB0ZXN0c3VpdGU6IHNraXAgbmVzdGVkIHF1b3RpbmcgdGVzdAorCSAgICBsaWJmaWxlPSRsaWJkaXIvYCRFQ0hPICIkbGliIiB8ICRTRUQgJ3MlXi4qLyUlZydgCiAJICAgIGlmIHRlc3QgLW4gIiRsaWJkaXIiICYmIHRlc3QgISAtZiAiJGxpYmZpbGUiOyB0aGVuCi0JICAgICAgZnVuY193YXJuaW5nICJcYCRsaWInIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gXGAkbGliZGlyJyIKLQkgICAgICBmaW5hbGl6ZT1ubworCSAgICAgIGZ1bmNfd2FybmluZyAiJyRsaWInIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gJyRsaWJkaXInIgorCSAgICAgIGZpbmFsaXplPWZhbHNlCiAJICAgIGZpCiAJICBkb25lCiAKQEAgLTMxMzksMjkgKzQ0NjcsMjkgQEAKIAkgIGZ1bmNfc291cmNlICIkd3JhcHBlciIKIAogCSAgb3V0cHV0bmFtZT0KLQkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0gbm8gJiYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorCSAgaWYgdGVzdCBubyA9ICIkZmFzdF9pbnN0YWxsIiAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCiAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0JICAgICAgaWYgdGVzdCAiJGZpbmFsaXplIiA9IHllczsgdGhlbgorCSAgICAgIGlmICRmaW5hbGl6ZTsgdGhlbgogCSAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKIAkJZnVuY19iYXNlbmFtZSAiJGZpbGUkc3RyaXBwZWRfZXh0IgotCQlmaWxlPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JICAgICAgICBvdXRwdXRuYW1lPSIkdG1wZGlyLyRmaWxlIgorCQlmaWxlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCSAgICAgICAgb3V0cHV0bmFtZT0kdG1wZGlyLyRmaWxlCiAJICAgICAgICAjIFJlcGxhY2UgdGhlIG91dHB1dCBmaWxlIHNwZWNpZmljYXRpb24uCiAJICAgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICdzJUBPVVRQVVRAJSciJG91dHB1dG5hbWUiJyVnJ2AKIAotCSAgICAgICAgJG9wdF9zaWxlbnQgfHwgeworCSAgICAgICAgJG9wdF9xdWlldCB8fCB7CiAJICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJHJlbGlua19jb21tYW5kIgogCQkgIGV2YWwgImZ1bmNfZWNobyAkZnVuY19xdW90ZV9mb3JfZXhwYW5kX3Jlc3VsdCIKIAkgICAgICAgIH0KIAkgICAgICAgIGlmIGV2YWwgIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4gOgogCSAgICAgICAgICBlbHNlCi0JCSAgZnVuY19lcnJvciAiZXJyb3I6IHJlbGluayBcYCRmaWxlJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0IgorCQkgIGZ1bmNfZXJyb3IgImVycm9yOiByZWxpbmsgJyRmaWxlJyB3aXRoIHRoZSBhYm92ZSBjb21tYW5kIGJlZm9yZSBpbnN0YWxsaW5nIGl0IgogCQkgICRvcHRfZHJ5X3J1biB8fCAke1JNfXIgIiR0bXBkaXIiCiAJCSAgY29udGludWUKIAkgICAgICAgIGZpCi0JICAgICAgICBmaWxlPSIkb3V0cHV0bmFtZSIKKwkgICAgICAgIGZpbGU9JG91dHB1dG5hbWUKIAkgICAgICBlbHNlCi0JICAgICAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCByZWxpbmsgXGAkZmlsZSciCisJICAgICAgICBmdW5jX3dhcm5pbmcgImNhbm5vdCByZWxpbmsgJyRmaWxlJyIKIAkgICAgICBmaQogCSAgICB9CiAJICBlbHNlCkBAIC0zMTk4LDEwICs0NTI2LDEwIEBACiAKICAgICBmb3IgZmlsZSBpbiAkc3RhdGljbGliczsgZG8KICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgotICAgICAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorICAgICAgbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAogICAgICAgIyBTZXQgdXAgdGhlIHJhbmxpYiBwYXJhbWV0ZXJzLgotICAgICAgb2xkbGliPSIkZGVzdGRpci8kbmFtZSIKKyAgICAgIG9sZGxpYj0kZGVzdGRpci8kbmFtZQogICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvbGRsaWIiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCiAgICAgICB0b29sX29sZGxpYj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAKQEAgLTMyMTYsMTggKzQ1NDQsMTggQEAKICAgICBkb25lCiAKICAgICB0ZXN0IC1uICIkZnV0dXJlX2xpYmRpcnMiICYmIFwKLSAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKKyAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuICckcHJvZ25hbWUgLS1maW5pc2gkZnV0dXJlX2xpYmRpcnMnIgogCiAgICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KICAgICAgICMgTWF5YmUganVzdCBkbyBhIGRyeSBydW4uCiAgICAgICAkb3B0X2RyeV9ydW4gJiYgY3VycmVudF9saWJkaXJzPSIgLW4kY3VycmVudF9saWJkaXJzIgotICAgICAgZXhlY19jbWQ9JyRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1maW5pc2gkY3VycmVudF9saWJkaXJzJworICAgICAgZXhlY19jbWQ9JyRTSEVMTCAiJHByb2dwYXRoIiAkcHJlc2VydmVfYXJncyAtLWZpbmlzaCRjdXJyZW50X2xpYmRpcnMnCiAgICAgZWxzZQogICAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCiAgICAgZmkKIH0KIAotdGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9Cit0ZXN0IGluc3RhbGwgPSAiJG9wdF9tb2RlIiAmJiBmdW5jX21vZGVfaW5zdGFsbCAkezErIiRAIn0KIAogCiAjIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zIG91dHB1dG5hbWUgb3JpZ2luYXRvciBwaWNfcApAQCAtMzIzNSwxNiArNDU2MywxNyBAQAogIyBhIGRscHJlb3BlbiBzeW1ib2wgdGFibGUuCiBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAoKQogewotICAgICRvcHRfZGVidWcKLSAgICBteV9vdXRwdXRuYW1lPSIkMSIKLSAgICBteV9vcmlnaW5hdG9yPSIkMiIKLSAgICBteV9waWNfcD0iJHszLW5vfSIKLSAgICBteV9wcmVmaXg9YCRFQ0hPICIkbXlfb3JpZ2luYXRvciIgfCBzZWQgJ3MlW15hLXpBLVowLTldJV8lZydgCisgICAgJGRlYnVnX2NtZAorCisgICAgbXlfb3V0cHV0bmFtZT0kMQorICAgIG15X29yaWdpbmF0b3I9JDIKKyAgICBteV9waWNfcD0kezMtZmFsc2V9CisgICAgbXlfcHJlZml4PWAkRUNITyAiJG15X29yaWdpbmF0b3IiIHwgJFNFRCAncyVbXmEtekEtWjAtOV0lXyVnJ2AKICAgICBteV9kbHN5bXM9CiAKLSAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0ICIkZGxzZWxmIiAhPSBubzsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3Qgbm8gIT0gIiRkbHNlbGYiOyB0aGVuCiAgICAgICBpZiB0ZXN0IC1uICIkTk0iICYmIHRlc3QgLW4gIiRnbG9iYWxfc3ltYm9sX3BpcGUiOyB0aGVuCi0JbXlfZGxzeW1zPSIke215X291dHB1dG5hbWV9Uy5jIgorCW15X2Rsc3ltcz0ke215X291dHB1dG5hbWV9Uy5jCiAgICAgICBlbHNlCiAJZnVuY19lcnJvciAibm90IGNvbmZpZ3VyZWQgdG8gZXh0cmFjdCBnbG9iYWwgc3ltYm9scyBmcm9tIGRscHJlb3BlbmVkIGZpbGVzIgogICAgICAgZmkKQEAgLTMyNTUsNyArNDU4NCw3IEBACiAgICAgICAiIikgOzsKICAgICAgICouYykKIAkjIERpc2NvdmVyIHRoZSBubGlzdCBvZiBlYWNoIG9mIHRoZSBkbGZpbGVzLgotCW5saXN0PSIkb3V0cHV0X29iamRpci8ke215X291dHB1dG5hbWV9Lm5tIgorCW5saXN0PSRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLm5tCiAKIAlmdW5jX3Nob3dfZXZhbCAiJFJNICRubGlzdCAke25saXN0fVMgJHtubGlzdH1UIgogCkBAIC0zMjYzLDM0ICs0NTkyLDM2IEBACiAJZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgogCiAJJG9wdF9kcnlfcnVuIHx8ICRFQ0hPID4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCi0vKiAkbXlfZGxzeW1zIC0gc3ltYm9sIHJlc29sdXRpb24gdGFibGUgZm9yIFxgJG15X291dHB1dG5hbWUnIGRsc3ltIGVtdWxhdGlvbi4gKi8KLS8qIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04gKi8KKy8qICRteV9kbHN5bXMgLSBzeW1ib2wgcmVzb2x1dGlvbiB0YWJsZSBmb3IgJyRteV9vdXRwdXRuYW1lJyBkbHN5bSBlbXVsYXRpb24uICovCisvKiBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSkgJFZFUlNJT04gKi8KIAogI2lmZGVmIF9fY3BsdXNwbHVzCiBleHRlcm4gXCJDXCIgewogI2VuZGlmCiAKLSNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSA0KSAmJiAoX19HTlVDX01JTk9SX18gPj0gNCkpIHx8IChfX0dOVUNfXyA+IDQpKQorI2lmIGRlZmluZWQgX19HTlVDX18gJiYgKCgoX19HTlVDX18gPT0gNCkgJiYgKF9fR05VQ19NSU5PUl9fID49IDQpKSB8fCAoX19HTlVDX18gPiA0KSkKICNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1Xc3RyaWN0LXByb3RvdHlwZXNcIgogI2VuZGlmCiAKIC8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19DWUdXSU5fXyB8fCBkZWZpbmVkIF9XSU4zMl9XQ0UKKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY2FuJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQogICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwogIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSNlbGlmIGRlZmluZWQoX19vc2ZfXykKKyNlbGlmIGRlZmluZWQgX19vc2ZfXwogLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCiAjIGRlZmluZSBMVF9ETFNZTV9DT05TVAogI2Vsc2UKICMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CiAjZW5kaWYKIAorI2RlZmluZSBTVFJFUShzMSwgczIpIChzdHJjbXAgKChzMSksIChzMikpID09IDApCisKIC8qIEV4dGVybmFsIHN5bWJvbCBkZWNsYXJhdGlvbnMgZm9yIHRoZSBjb21waWxlci4gKi9cCiAiCiAKLQlpZiB0ZXN0ICIkZGxzZWxmIiA9IHllczsgdGhlbgotCSAgZnVuY192ZXJib3NlICJnZW5lcmF0aW5nIHN5bWJvbCBsaXN0IGZvciBcYCRvdXRwdXQnIgorCWlmIHRlc3QgeWVzID0gIiRkbHNlbGYiOyB0aGVuCisJICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yICckb3V0cHV0JyIKIAogCSAgJG9wdF9kcnlfcnVuIHx8IGVjaG8gJzogQFBST0dSQU1AICcgPiAiJG5saXN0IgogCkBAIC0zMjk4LDcgKzQ2MjksNyBAQAogCSAgcHJvZ2ZpbGVzPWAkRUNITyAiJG9ianMkb2xkX2RlcGxpYnMiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCiAJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKKwkgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSAnJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCiAJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCiAJICBkb25lCiAKQEAgLTMzMTgsMTAgKzQ2NDksMTAgQEAKIAogCSAgIyBQcmVwYXJlIHRoZSBsaXN0IG9mIGV4cG9ydGVkIHN5bWJvbHMKIAkgIGlmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9scyI7IHRoZW4KLQkgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKKwkgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwCiAJICAgICRvcHRfZHJ5X3J1biB8fCB7CiAJICAgICAgJFJNICRleHBvcnRfc3ltYm9scwotCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJworCSAgICAgIGV2YWwgIiRTRUQgLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKIAkgICAgICBjYXNlICRob3N0IGluCiAJICAgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCiAgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKQEAgLTMzMzEsNyArNDY2Miw3IEBACiAJICAgIH0KIAkgIGVsc2UKIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLQkgICAgICBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKKwkgICAgICBldmFsICIkU0VEIC1lICdzL1woW10uWypeJF1cKS9cXFxcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCInCiAJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKIAkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KQEAgLTMzNDUsMjIgKzQ2NzYsMjIgQEAKIAlmaQogCiAJZm9yIGRscHJlZmlsZSBpbiAkZGxwcmVmaWxlczsgZG8KLQkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKKwkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gJyRkbHByZWZpbGUnIgogCSAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZSIKLQkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgIG5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAgICAgICAgICAgY2FzZSAkaG9zdCBpbgogCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgICAgICAjIGlmIGFuIGltcG9ydCBsaWJyYXJ5LCB3ZSBuZWVkIHRvIG9idGFpbiBkbG5hbWUKIAkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KIAkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCiAJICAgICAgICBldmFsICJjdXJyX2xhZmlsZT1cJGxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0IgotCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKKwkgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPQogCSAgICAgICAgaWYgdGVzdCAtbiAiJGN1cnJfbGFmaWxlIiAmJiBmdW5jX2xhbGliX3AgIiRjdXJyX2xhZmlsZSI7IHRoZW4KIAkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKIAkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAotCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsbmFtZSIgOyB0aGVuCisJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIjsgdGhlbgogCSAgICAgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGVfZGxuYW1lIgotCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAJICAgICAgICAgIGVsc2UKIAkgICAgICAgICAgICAjIG5vIGxhZmlsZS4gdXNlciBleHBsaWNpdGx5IHJlcXVlc3RlZCAtZGxwcmVvcGVuIDxpbXBvcnQgbGlicmFyeT4uCiAJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgpAQCAtMzM2OCw3ICs0Njk5LDcgQEAKIAkgICAgICAgICAgZmkKIAkgICAgICAgIGZpCiAJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgewotCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgorCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiOyB0aGVuCiAJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKIAkgICAgICAgICAgZWxzZQogCSAgICAgICAgICAgIGZ1bmNfd2FybmluZyAiQ291bGQgbm90IGNvbXB1dGUgRExMIG5hbWUgZnJvbSAkbmFtZSIKQEAgLTM0MjQsNiArNDc1NSwxMSBAQAogCSAgICBlY2hvICcvKiBOT05FICovJyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIKIAkgIGZpCiAKKwkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiR7bmxpc3R9SSInCisJICBpZiB0ZXN0IC1uICIkZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQiOyB0aGVuCisJICAgIGV2YWwgIiRnbG9iYWxfc3ltYm9sX3RvX2ltcG9ydCInIDwgIiRubGlzdCJTID4gIiRubGlzdCJJJworCSAgZmkKKwogCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKIAogLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwpAQCAtMzQzMiwxMSArNDc2OCwzMCBAQAogICB2b2lkICphZGRyZXNzOwogfSBsdF9kbHN5bWxpc3Q7CiBleHRlcm4gTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0Ci1sdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107CitsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107XAorIgorCisJICBpZiB0ZXN0IC1zICIkbmxpc3QiSTsgdGhlbgorCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorc3RhdGljIHZvaWQgbHRfc3ltaW5pdCh2b2lkKQoreworICBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QgKnN5bWJvbCA9IGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHM7CisgIGZvciAoOyBzeW1ib2wtPm5hbWU7ICsrc3ltYm9sKQorICAgIHsiCisJICAgICRTRUQgJ3MvLiovICAgICAgaWYgKFNUUkVRIChzeW1ib2wtPm5hbWUsIFwiJlwiKSkgc3ltYm9sLT5hZGRyZXNzID0gKHZvaWQgKikgXCYmOy8nIDwgIiRubGlzdCJJID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIgorCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorICAgIH0KK30iCisJICBmaQorCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAogbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KLXtcCi0gIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgoreyB7XCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwfSwiCisKKwkgIGlmIHRlc3QgLXMgIiRubGlzdCJJOyB0aGVuCisJICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCisgIHtcIkBJTklUQFwiLCAodm9pZCAqKSAmbHRfc3ltaW5pdH0sIgorCSAgZmkKIAogCSAgY2FzZSAkbmVlZF9saWJfcHJlZml4IGluCiAJICBubykKQEAgLTM0NzgsOSArNDgzMyw3IEBACiAJICAqLSotaHB1eCopCiAJICAgIHBpY19mbGFnX2Zvcl9zeW10YWJsZT0iICRwaWNfZmxhZyIgIDs7CiAJICAqKQotCSAgICBpZiB0ZXN0ICJYJG15X3BpY19wIiAhPSBYbm87IHRoZW4KLQkgICAgICBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWciCi0JICAgIGZpCisJICAgICRteV9waWNfcCAmJiBwaWNfZmxhZ19mb3Jfc3ltdGFibGU9IiAkcGljX2ZsYWciCiAJICAgIDs7CiAJICBlc2FjCiAJICA7OwpAQCAtMzQ5NywxMCArNDg1MCwxMCBAQAogCWZ1bmNfc2hvd19ldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJExUQ0Mkc3ltdGFiX2NmbGFncyAtYyRub19idWlsdGluX2ZsYWckcGljX2ZsYWdfZm9yX3N5bXRhYmxlICIkbXlfZGxzeW1zIiknICdleGl0ICQ/JwogCiAJIyBDbGVhbiB1cCB0aGUgZ2VuZXJhdGVkIGZpbGVzLgotCWZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICIkbmxpc3QiICIke25saXN0fVMiICIke25saXN0fVQiJworCWZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICIkbmxpc3QiICIke25saXN0fVMiICIke25saXN0fVQiICIke25saXN0fUkiJwogCiAJIyBUcmFuc2Zvcm0gdGhlIHN5bWJvbCBmaWxlIGludG8gdGhlIGNvcnJlY3QgbmFtZS4KLQlzeW1maWxlb2JqPSIkb3V0cHV0X29iamRpci8ke215X291dHB1dG5hbWV9Uy4kb2JqZXh0IgorCXN5bWZpbGVvYmo9JG91dHB1dF9vYmpkaXIvJHtteV9vdXRwdXRuYW1lfVMuJG9iamV4dAogCWNhc2UgJGhvc3QgaW4KIAkqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKIAkgIGlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyRteV9vdXRwdXRuYW1lLmRlZiI7IHRoZW4KQEAgLTM1MTgsNyArNDg3MSw3IEBACiAJZXNhYwogCTs7CiAgICAgICAqKQotCWZ1bmNfZmF0YWxfZXJyb3IgInVua25vd24gc3VmZml4IGZvciBcYCRteV9kbHN5bXMnIgorCWZ1bmNfZmF0YWxfZXJyb3IgInVua25vd24gc3VmZml4IGZvciAnJG15X2Rsc3ltcyciCiAJOzsKICAgICAgIGVzYWMKICAgICBlbHNlCkBAIC0zNTMyLDYgKzQ4ODUsMzIgQEAKICAgICBmaQogfQogCisjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisjIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCisjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCitmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCit7CisgICRkZWJ1Z19jbWQKKworICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAorICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfdG1wIgorfQorCisjIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCBBUkcKKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgorIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKyMgd2l0aCBub256ZXJvIHN0YXR1cyAoRkFMU0UpIG90aGVyd2lzZS4KK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQoreworICAkZGVidWdfY21kCisKKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorICBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEdSRVAgJ19OVUxMX0lNUE9SVF9ERVNDUklQVE9SJ2AKKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgorfQorCiAjIGZ1bmNfd2luMzJfbGliaWQgYXJnCiAjIHJldHVybiB0aGUgbGlicmFyeSB0eXBlIG9mIGZpbGUgJ2FyZycKICMKQEAgLTM1NDEsOCArNDkyMCw5IEBACiAjIERlc3BpdGUgdGhlIG5hbWUsIGFsc28gZGVhbCB3aXRoIDY0IGJpdCBiaW5hcmllcy4KIGZ1bmNfd2luMzJfbGliaWQgKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICB3aW4zMl9saWJpZF90eXBlPSJ1bmtub3duIgorICAkZGVidWdfY21kCisKKyAgd2luMzJfbGliaWRfdHlwZT11bmtub3duCiAgIHdpbjMyX2ZpbGVyZXM9YGZpbGUgLUwgJDEgMj4vZGV2L251bGxgCiAgIGNhc2UgJHdpbjMyX2ZpbGVyZXMgaW4KICAgKmFyXCBhcmNoaXZlXCBpbXBvcnRcIGxpYnJhcnkqKSAjIGRlZmluaXRlbHkgaW1wb3J0CkBAIC0zNTUyLDE2ICs0OTMyLDI5IEBACiAgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCiAgICAgaWYgZXZhbCAkT0JKRFVNUCAtZiAkMSB8ICRTRUQgLWUgJzEwcScgMj4vZGV2L251bGwgfAogICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCi0gICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0gICAgICB3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAotCSRTRUQgLW4gLWUgJworICAgICAgY2FzZSAkbm1faW50ZXJmYWNlIGluCisgICAgICAiTVMgZHVtcGJpbiIpCisJaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgfHwKKwkgICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIKKwl0aGVuCisJICB3aW4zMl9ubXJlcz1pbXBvcnQKKwllbHNlCisJICB3aW4zMl9ubXJlcz0KKwlmaQorCTs7CisgICAgICAqKQorCWZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKwl3aW4zMl9ubXJlcz1gZXZhbCAkTk0gLWYgcG9zaXggLUEgXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgfAorCSAgJFNFRCAtbiAtZSAnCiAJICAgIDEsMTAwewogCQkvIEkgL3sKLQkJICAgIHMsLiosaW1wb3J0LAorCQkgICAgc3wuKnxpbXBvcnR8CiAJCSAgICBwCiAJCSAgICBxCiAJCX0KIAkgICAgfSdgCisJOzsKKyAgICAgIGVzYWMKICAgICAgIGNhc2UgJHdpbjMyX25tcmVzIGluCiAgICAgICBpbXBvcnQqKSAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0Ijs7CiAgICAgICAqKSAgICAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgc3RhdGljIjs7CkBAIC0zNTkzLDcgKzQ5ODYsOCBAQAogIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAogfQogCkBAIC0zNjEwLDcgKzUwMDQsOCBAQAogIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCiBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAoKQogewotICAkb3B0X2RlYnVnCisgICRkZWJ1Z19jbWQKKwogICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAogICAkT0JKRFVNUCAtcyAtLXNlY3Rpb24gIiQxIiAiJDIiIDI+L2Rldi9udWxsIHwKICAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97CkBAIC0zNjQ2LDggKzUwNDEsOCBAQAogICAgICAgLy4vcCcgfAogICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAogICAgICMgY29udGVudHMgb2YgdGhlIGFwcHJvcHJpYXRlIHNlY3Rpb24gb2YgYWxsIG1lbWJlcnMgb2YgdGhlCi0gICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQotICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKKyAgICAjIGFyY2hpdmUgdGhhdCBwb3NzZXNzIHRoYXQgc2VjdGlvbi4gSGV1cmlzdGljOiBlbGltaW5hdGUKKyAgICAjIGFsbCB0aG9zZSB0aGF0IGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKICAgICAjIGEgJy4nICh0aGF0IGlzLCBvYmpkdW1wJ3MgcmVwcmVzZW50YXRpb24gb2YgYW4gdW5wcmludGFibGUKICAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgogICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5CkBAIC0zNjU4LDMwICs1MDUzLDYgQEAKICAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJwogfQogCi0jIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCi0jIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKLSMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCi0jIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi1mdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICgpCi17Ci0gICRvcHRfZGVidWcKLSAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKLSAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKLX0KLQotIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCi0jIFRoaXMgcHJlZGljYXRlIHJldHVybnMgd2l0aCB6ZXJvIHN0YXR1cyAoVFJVRSkgaWYKLSMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCi0jIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCi1mdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgKCkKLXsKLSAgJG9wdF9kZWJ1ZwotICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0gIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAotICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCi19Ci0KICMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRwogIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQogIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKQEAgLTM2OTUsMTYgKzUwNjYsMTcgQEAKICMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0CiBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKIHsKLSAgJG9wdF9kZWJ1ZwotICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCisgICRkZWJ1Z19jbWQKKworICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSI7IHRoZW4KICAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5CiAgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKLSAgZWxpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIiA7IHRoZW4KKyAgZWxpZiBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgIiQxIjsgdGhlbgogICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CiAgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNicgIiQxImAKICAgZWxzZQogICAgICMgdW5rbm93bgotICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PSIiCisgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9CiAgIGZpCiB9CiAKQEAgLTM3MTIsMTAgKzUwODQsMTEgQEAKICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgogZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgKCkKIHsKLSAgICAkb3B0X2RlYnVnCi0gICAgZl9leF9hbl9hcl9kaXI9IiQxIjsgc2hpZnQKLSAgICBmX2V4X2FuX2FyX29sZGxpYj0iJDEiCi0gICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICAkZGVidWdfY21kCisKKyAgICBmX2V4X2FuX2FyX2Rpcj0kMTsgc2hpZnQKKyAgICBmX2V4X2FuX2FyX29sZGxpYj0kMQorICAgIGlmIHRlc3QgeWVzID0gIiRsb2NrX29sZF9hcmNoaXZlX2V4dHJhY3Rpb24iOyB0aGVuCiAgICAgICBsb2NrZmlsZT0kZl9leF9hbl9hcl9vbGRsaWIubG9jawogICAgICAgdW50aWwgJG9wdF9kcnlfcnVuIHx8IGxuICIkcHJvZ3BhdGgiICIkbG9ja2ZpbGUiIDI+L2Rldi9udWxsOyBkbwogCWZ1bmNfZWNobyAiV2FpdGluZyBmb3IgJGxvY2tmaWxlIHRvIGJlIHJlbW92ZWQiCkBAIC0zNzI0LDcgKzUwOTcsNyBAQAogICAgIGZpCiAgICAgZnVuY19zaG93X2V2YWwgIihjZCBcJGZfZXhfYW5fYXJfZGlyICYmICRBUiB4IFwiXCRmX2V4X2FuX2FyX29sZGxpYlwiKSIgXAogCQkgICAnc3RhdD0kPzsgcm0gLWYgIiRsb2NrZmlsZSI7IGV4aXQgJHN0YXQnCi0gICAgaWYgdGVzdCAiJGxvY2tfb2xkX2FyY2hpdmVfZXh0cmFjdGlvbiIgPSB5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkbG9ja19vbGRfYXJjaGl2ZV9leHRyYWN0aW9uIjsgdGhlbgogICAgICAgJG9wdF9kcnlfcnVuIHx8IHJtIC1mICIkbG9ja2ZpbGUiCiAgICAgZmkKICAgICBpZiAoJEFSIHQgIiRmX2V4X2FuX2FyX29sZGxpYiIgfCBzb3J0IHwgc29ydCAtdWMgPi9kZXYvbnVsbCAyPiYxKTsgdGhlbgpAQCAtMzczOCwyMiArNTExMSwyMyBAQAogIyBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgZ2VudG9wIG9sZGxpYiAuLi4KIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQogewotICAgICRvcHRfZGVidWcKLSAgICBteV9nZW50b3A9IiQxIjsgc2hpZnQKKyAgICAkZGVidWdfY21kCisKKyAgICBteV9nZW50b3A9JDE7IHNoaWZ0CiAgICAgbXlfb2xkbGlicz0kezErIiRAIn0KLSAgICBteV9vbGRvYmpzPSIiCi0gICAgbXlfeGxpYj0iIgotICAgIG15X3hhYnM9IiIKLSAgICBteV94ZGlyPSIiCisgICAgbXlfb2xkb2Jqcz0KKyAgICBteV94bGliPQorICAgIG15X3hhYnM9CisgICAgbXlfeGRpcj0KIAogICAgIGZvciBteV94bGliIGluICRteV9vbGRsaWJzOyBkbwogICAgICAgIyBFeHRyYWN0IHRoZSBvYmplY3RzLgogICAgICAgY2FzZSAkbXlfeGxpYiBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgbXlfeGFicz0iJG15X3hsaWIiIDs7CisJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBteV94YWJzPSRteV94bGliIDs7CiAJKikgbXlfeGFicz1gcHdkYCIvJG15X3hsaWIiIDs7CiAgICAgICBlc2FjCiAgICAgICBmdW5jX2Jhc2VuYW1lICIkbXlfeGxpYiIKLSAgICAgIG15X3hsaWI9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKyAgICAgIG15X3hsaWI9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAgICAgICBteV94bGliX3U9JG15X3hsaWIKICAgICAgIHdoaWxlIDo7IGRvCiAgICAgICAgIGNhc2UgIiAkZXh0cmFjdGVkX2FyY2hpdmVzICIgaW4KQEAgLTM3NjUsNyArNTEzOSw3IEBACiAJZXNhYwogICAgICAgZG9uZQogICAgICAgZXh0cmFjdGVkX2FyY2hpdmVzPSIkZXh0cmFjdGVkX2FyY2hpdmVzICRteV94bGliX3UiCi0gICAgICBteV94ZGlyPSIkbXlfZ2VudG9wLyRteV94bGliX3UiCisgICAgICBteV94ZGlyPSRteV9nZW50b3AvJG15X3hsaWJfdQogCiAgICAgICBmdW5jX21rZGlyX3AgIiRteV94ZGlyIgogCkBAIC0zNzc4LDIyICs1MTUyLDIzIEBACiAJICBjZCAkbXlfeGRpciB8fCBleGl0ICQ/CiAJICBkYXJ3aW5fYXJjaGl2ZT0kbXlfeGFicwogCSAgZGFyd2luX2N1cmRpcj1gcHdkYAotCSAgZGFyd2luX2Jhc2VfYXJjaGl2ZT1gYmFzZW5hbWUgIiRkYXJ3aW5fYXJjaGl2ZSJgCisJICBmdW5jX2Jhc2VuYW1lICIkZGFyd2luX2FyY2hpdmUiCisJICBkYXJ3aW5fYmFzZV9hcmNoaXZlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCSAgZGFyd2luX2FyY2hlcz1gJExJUE8gLWluZm8gIiRkYXJ3aW5fYXJjaGl2ZSIgMj4vZGV2L251bGwgfCAkR1JFUCBBcmNoaXRlY3R1cmVzIDI+L2Rldi9udWxsIHx8IHRydWVgCiAJICBpZiB0ZXN0IC1uICIkZGFyd2luX2FyY2hlcyI7IHRoZW4KIAkgICAgZGFyd2luX2FyY2hlcz1gJEVDSE8gIiRkYXJ3aW5fYXJjaGVzIiB8ICRTRUQgLWUgJ3MvLiphcmU6Ly8nYAogCSAgICBkYXJ3aW5fYXJjaD0KIAkgICAgZnVuY192ZXJib3NlICIkZGFyd2luX2Jhc2VfYXJjaGl2ZSBoYXMgbXVsdGlwbGUgYXJjaGl0ZWN0dXJlcyAkZGFyd2luX2FyY2hlcyIKLQkgICAgZm9yIGRhcndpbl9hcmNoIGluICAkZGFyd2luX2FyY2hlcyA7IGRvCi0JICAgICAgZnVuY19ta2Rpcl9wICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9IgotCSAgICAgICRMSVBPIC10aGluICRkYXJ3aW5fYXJjaCAtb3V0cHV0ICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9LyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iICIke2Rhcndpbl9hcmNoaXZlfSIKLQkgICAgICBjZCAidW5mYXQtJCQvJHtkYXJ3aW5fYmFzZV9hcmNoaXZlfS0ke2Rhcndpbl9hcmNofSIKLQkgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiYHB3ZGAiICIke2Rhcndpbl9iYXNlX2FyY2hpdmV9IgorCSAgICBmb3IgZGFyd2luX2FyY2ggaW4gICRkYXJ3aW5fYXJjaGVzOyBkbworCSAgICAgIGZ1bmNfbWtkaXJfcCAidW5mYXQtJCQvJGRhcndpbl9iYXNlX2FyY2hpdmUtJGRhcndpbl9hcmNoIgorCSAgICAgICRMSVBPIC10aGluICRkYXJ3aW5fYXJjaCAtb3V0cHV0ICJ1bmZhdC0kJC8kZGFyd2luX2Jhc2VfYXJjaGl2ZS0kZGFyd2luX2FyY2gvJGRhcndpbl9iYXNlX2FyY2hpdmUiICIkZGFyd2luX2FyY2hpdmUiCisJICAgICAgY2QgInVuZmF0LSQkLyRkYXJ3aW5fYmFzZV9hcmNoaXZlLSRkYXJ3aW5fYXJjaCIKKwkgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiYHB3ZGAiICIkZGFyd2luX2Jhc2VfYXJjaGl2ZSIKIAkgICAgICBjZCAiJGRhcndpbl9jdXJkaXIiCi0JICAgICAgJFJNICJ1bmZhdC0kJC8ke2Rhcndpbl9iYXNlX2FyY2hpdmV9LSR7ZGFyd2luX2FyY2h9LyR7ZGFyd2luX2Jhc2VfYXJjaGl2ZX0iCisJICAgICAgJFJNICJ1bmZhdC0kJC8kZGFyd2luX2Jhc2VfYXJjaGl2ZS0kZGFyd2luX2FyY2gvJGRhcndpbl9iYXNlX2FyY2hpdmUiCiAJICAgIGRvbmUgIyAkZGFyd2luX2FyY2hlcwogICAgICAgICAgICAgIyMgT2theSBub3cgd2UndmUgYSBidW5jaCBvZiB0aGluIG9iamVjdHMsIGdvdHRhIGZhdHRlbiB0aGVtIHVwIDopCi0JICAgIGRhcndpbl9maWxlbGlzdD1gZmluZCB1bmZhdC0kJCAtdHlwZSBmIC1uYW1lIFwqLm8gLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICRTRUQgLWUgIiRiYXNlbmFtZSIgfCBzb3J0IC11YAorCSAgICBkYXJ3aW5fZmlsZWxpc3Q9YGZpbmQgdW5mYXQtJCQgLXR5cGUgZiAtbmFtZSBcKi5vIC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCAkU0VEIC1lICIkc2VkX2Jhc2VuYW1lIiB8IHNvcnQgLXVgCiAJICAgIGRhcndpbl9maWxlPQogCSAgICBkYXJ3aW5fZmlsZXM9CiAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbwpAQCAtMzgxNSw3ICs1MTkwLDcgQEAKICAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAogICAgIGRvbmUKIAotICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgorICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9JG15X29sZG9ianMKIH0KIAogCkBAIC0zODMwLDcgKzUyMDUsNyBAQAogIwogIyBBUkcgaXMgdGhlIHZhbHVlIHRoYXQgdGhlIFdSQVBQRVJfU0NSSVBUX0JFTE9OR1NfSU5fT0JKRElSCiAjIHZhcmlhYmxlIHdpbGwgdGFrZS4gIElmICd5ZXMnLCB0aGVuIHRoZSBlbWl0dGVkIHNjcmlwdAotIyB3aWxsIGFzc3VtZSB0aGF0IHRoZSBkaXJlY3RvcnkgaW4gd2hpY2ggaXQgaXMgc3RvcmVkIGlzCisjIHdpbGwgYXNzdW1lIHRoYXQgdGhlIGRpcmVjdG9yeSB3aGVyZSBpdCBpcyBzdG9yZWQgaXMKICMgdGhlICRvYmpkaXIgZGlyZWN0b3J5LiAgVGhpcyBpcyBhIGN5Z3dpbi9taW5ndy1zcGVjaWZpYwogIyBiZWhhdmlvci4KIGZ1bmNfZW1pdF93cmFwcGVyICgpCkBAIC0zODQxLDcgKzUyMTYsNyBAQAogIyEgJFNIRUxMCiAKICMgJG91dHB1dCAtIHRlbXBvcmFyeSB3cmFwcGVyIHNjcmlwdCBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQotIyBHZW5lcmF0ZWQgYnkgJFBST0dSQU0gKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OCisjIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFKSAkVkVSU0lPTgogIwogIyBUaGUgJG91dHB1dCBwcm9ncmFtIGNhbm5vdCBiZSBkaXJlY3RseSBleGVjdXRlZCB1bnRpbCBhbGwgdGhlIGxpYnRvb2wKICMgbGlicmFyaWVzIHRoYXQgaXQgZGVwZW5kcyBvbiBhcmUgaW5zdGFsbGVkLgpAQCAtMzg5OCw5ICs1MjczLDkgQEAKIAogIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KICMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgotIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHdoaWNoIGlzIHVzZWQgb25seSBvbgorIyAvc2NyaXB0LyBhbmQgdGhlIHdyYXBwZXIgL2V4ZWN1dGFibGUvIHRoYXQgaXMgdXNlZCBvbmx5IG9uCiAjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgotIyAoYXBwbGljYXRpb24gcHJvZ3JhbXMgYXJlIHVubGlrZWx5IHRvIGhhdmUgb3B0aW9ucyB3aGljaCBtYXRjaAorIyAoYXBwbGljYXRpb24gcHJvZ3JhbXMgYXJlIHVubGlrZWx5IHRvIGhhdmUgb3B0aW9ucyB0aGF0IG1hdGNoCiAjIHRoaXMgcGF0dGVybikuCiAjCiAjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKQEAgLTM5MzMsNyArNTMwOCw3IEBACiAKICAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgogICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgotICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgorICAgIGVjaG8gXCIkb3V0cHV0bmFtZTokb3V0cHV0OlwkTElORU5POiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSkgJFZFUlNJT05cIiAxPiYyCiAgIGZpCiB9CiAKQEAgLTM5NDQsNyArNTMxOSw3IEBACiAgIGx0X2R1bXBfYXJnc19OPTE7CiAgIGZvciBsdF9hcmcKICAgZG8KLSAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCisgICAgXCRFQ0hPIFwiJG91dHB1dG5hbWU6JG91dHB1dDpcJExJTkVOTzogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgogICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCiAgIGRvbmUKIH0KQEAgLTM5NTgsNyArNTMzMyw3IEBACiAgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCiAgICAgJEVDSE8gIlwKICAgICAgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0gICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCisgICAgICAgIFwkRUNITyBcIiRvdXRwdXRuYW1lOiRvdXRwdXQ6XCRMSU5FTk86IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCiAgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgogICAgICAgZmkKICAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQpAQCAtMzk2OCw3ICs1MzQzLDcgQEAKICAgKikKICAgICAkRUNITyAiXAogICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKyAgICAgICAgXCRFQ0hPIFwiJG91dHB1dG5hbWU6JG91dHB1dDpcJExJTkVOTzogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKICAgICAgICAgZnVuY19sdF9kdW1wX2FyZ3MgXCR7MStcIlwkQFwifSAxPiYyCiAgICAgICBmaQogICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CkBAIC00MDQzLDEzICs1NDE4LDEzIEBACiAgIHRlc3QgLW4gXCJcJGFic2RpclwiICYmIHRoaXNkaXI9XCJcJGFic2RpclwiCiAiCiAKLQlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllczsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiRmYXN0X2luc3RhbGwiOyB0aGVuCiAJICAkRUNITyAiXAogICBwcm9ncmFtPWx0LSckb3V0cHV0bmFtZSckZXhlZXh0CiAgIHByb2dkaXI9XCJcJHRoaXNkaXIvJG9iamRpclwiCiAKICAgaWYgdGVzdCAhIC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIHx8Ci0gICAgIHsgZmlsZT1cYGxzIC0xZHQgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCJcJHByb2dkaXIvLi4vXCRwcm9ncmFtXCIgMj4vZGV2L251bGwgfCAke1NFRH0gMXFcYDsgXFwKKyAgICAgeyBmaWxlPVxgbHMgLTFkdCBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcIlwkcHJvZ2Rpci8uLi9cJHByb2dyYW1cIiAyPi9kZXYvbnVsbCB8ICRTRUQgMXFcYDsgXFwKICAgICAgICB0ZXN0IFwiWFwkZmlsZVwiICE9IFwiWFwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgfTsgdGhlbgogCiAgICAgZmlsZT1cIlwkXCQtXCRwcm9ncmFtXCIKQEAgLTQwNjYsNyArNTQ0MSw3IEBACiAgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgogICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcJHJlbGlua19jb21tYW5kIDI+JjFcYDsgdGhlbiA6CiAgICAgICBlbHNlCi0JJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgorCVwkRUNITyBcIlwkcmVsaW5rX2NvbW1hbmRfb3V0cHV0XCIgPiYyCiAJJFJNIFwiXCRwcm9nZGlyL1wkZmlsZVwiCiAJZXhpdCAxCiAgICAgICBmaQpAQCAtNDEwMSw3ICs1NDc2LDcgQEAKIAlmaQogCiAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCi0JaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KIAkgICRFQ0hPICJcCiAgICAgIyBBZGQgb3VyIG93biBsaWJyYXJ5IHBhdGggdG8gJHNobGlicGF0aF92YXIKICAgICAkc2hsaWJwYXRoX3Zhcj1cIiR0ZW1wX3JwYXRoXCQkc2hsaWJwYXRoX3ZhclwiCkBAIC00MTIxLDcgKzU0OTYsNyBAQAogICAgIGZpCiAgIGVsc2UKICAgICAjIFRoZSBwcm9ncmFtIGRvZXNuJ3QgZXhpc3QuCi0gICAgXCRFQ0hPIFwiXCQwOiBlcnJvcjogXFxcYFwkcHJvZ2Rpci9cJHByb2dyYW0nIGRvZXMgbm90IGV4aXN0XCIgMT4mMgorICAgIFwkRUNITyBcIlwkMDogZXJyb3I6ICdcJHByb2dkaXIvXCRwcm9ncmFtJyBkb2VzIG5vdCBleGlzdFwiIDE+JjIKICAgICBcJEVDSE8gXCJUaGlzIHNjcmlwdCBpcyBqdXN0IGEgd3JhcHBlciBmb3IgXCRwcm9ncmFtLlwiIDE+JjIKICAgICBcJEVDSE8gXCJTZWUgdGhlICRQQUNLQUdFIGRvY3VtZW50YXRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24uXCIgMT4mMgogICAgIGV4aXQgMQpAQCAtNDE0MCw3ICs1NTE1LDcgQEAKIAljYXQgPDxFT0YKIAogLyogJGN3cmFwcGVyc291cmNlIC0gdGVtcG9yYXJ5IHdyYXBwZXIgZXhlY3V0YWJsZSBmb3IgJG9iamRpci8kb3V0cHV0bmFtZQotICAgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorICAgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UpICRWRVJTSU9OCiAKICAgIFRoZSAkb3V0cHV0IHByb2dyYW0gY2Fubm90IGJlIGRpcmVjdGx5IGV4ZWN1dGVkIHVudGlsIGFsbCB0aGUgbGlidG9vbAogICAgbGlicmFyaWVzIHRoYXQgaXQgZGVwZW5kcyBvbiBhcmUgaW5zdGFsbGVkLgpAQCAtNDE3NSw0NyArNTU1MCw0NSBAQAogI2luY2x1ZGUgPGZjbnRsLmg+CiAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KIAorI2RlZmluZSBTVFJFUShzMSwgczIpIChzdHJjbXAgKChzMSksIChzMikpID09IDApCisKIC8qIGRlY2xhcmF0aW9ucyBvZiBub24tQU5TSSBmdW5jdGlvbnMgKi8KLSNpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorI2lmIGRlZmluZWQgX19NSU5HVzMyX18KICMgaWZkZWYgX19TVFJJQ1RfQU5TSV9fCiBpbnQgX3B1dGVudiAoY29uc3QgY2hhciAqKTsKICMgZW5kaWYKLSNlbGlmIGRlZmluZWQoX19DWUdXSU5fXykKKyNlbGlmIGRlZmluZWQgX19DWUdXSU5fXwogIyBpZmRlZiBfX1NUUklDVF9BTlNJX18KIGNoYXIgKnJlYWxwYXRoIChjb25zdCBjaGFyICosIGNoYXIgKik7CiBpbnQgcHV0ZW52IChjaGFyICopOwogaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CiAjIGVuZGlmCi0vKiAjZWxpZiBkZWZpbmVkIChvdGhlciBwbGF0Zm9ybXMpIC4uLiAqLworLyogI2VsaWYgZGVmaW5lZCBvdGhlcl9wbGF0Zm9ybSB8fCBkZWZpbmVkIC4uLiAqLwogI2VuZGlmCiAKIC8qIHBvcnRhYmlsaXR5IGRlZmluZXMsIGV4Y2x1ZGluZyBwYXRoIGhhbmRsaW5nIG1hY3JvcyAqLwotI2lmIGRlZmluZWQoX01TQ19WRVIpCisjaWYgZGVmaW5lZCBfTVNDX1ZFUgogIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQogIyBkZWZpbmUgc3RhdCAgICBfc3RhdAogIyBkZWZpbmUgY2htb2QgICBfY2htb2QKICMgZGVmaW5lIGdldGN3ZCAgX2dldGN3ZAogIyBkZWZpbmUgcHV0ZW52ICBfcHV0ZW52CiAjIGRlZmluZSBTX0lYVVNSIF9TX0lFWEVDCi0jIGlmbmRlZiBfSU5UUFRSX1RfREVGSU5FRAotIyAgZGVmaW5lIF9JTlRQVFJfVF9ERUZJTkVECi0jICBkZWZpbmUgaW50cHRyX3QgaW50Ci0jIGVuZGlmCi0jZWxpZiBkZWZpbmVkKF9fTUlOR1czMl9fKQorI2VsaWYgZGVmaW5lZCBfX01JTkdXMzJfXwogIyBkZWZpbmUgc2V0bW9kZSBfc2V0bW9kZQogIyBkZWZpbmUgc3RhdCAgICBfc3RhdAogIyBkZWZpbmUgY2htb2QgICBfY2htb2QKICMgZGVmaW5lIGdldGN3ZCAgX2dldGN3ZAogIyBkZWZpbmUgcHV0ZW52ICBfcHV0ZW52Ci0jZWxpZiBkZWZpbmVkKF9fQ1lHV0lOX18pCisjZWxpZiBkZWZpbmVkIF9fQ1lHV0lOX18KICMgZGVmaW5lIEhBVkVfU0VURU5WCiAjIGRlZmluZSBGT1BFTl9XQiAid2IiCi0vKiAjZWxpZiBkZWZpbmVkIChvdGhlciBwbGF0Zm9ybXMpIC4uLiAqLworLyogI2VsaWYgZGVmaW5lZCBvdGhlciBwbGF0Zm9ybXMgLi4uICovCiAjZW5kaWYKIAotI2lmIGRlZmluZWQoUEFUSF9NQVgpCisjaWYgZGVmaW5lZCBQQVRIX01BWAogIyBkZWZpbmUgTFRfUEFUSE1BWCBQQVRIX01BWAotI2VsaWYgZGVmaW5lZChNQVhQQVRITEVOKQorI2VsaWYgZGVmaW5lZCBNQVhQQVRITEVOCiAjIGRlZmluZSBMVF9QQVRITUFYIE1BWFBBVEhMRU4KICNlbHNlCiAjIGRlZmluZSBMVF9QQVRITUFYIDEwMjQKQEAgLTQyMzQsOCArNTYwNyw4IEBACiAjIGRlZmluZSBQQVRIX1NFUEFSQVRPUiAnOicKICNlbmRpZgogCi0jaWYgZGVmaW5lZCAoX1dJTjMyKSB8fCBkZWZpbmVkIChfX01TRE9TX18pIHx8IGRlZmluZWQgKF9fREpHUFBfXykgfHwgXAotICBkZWZpbmVkIChfX09TMl9fKQorI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19NU0RPU19fIHx8IGRlZmluZWQgX19ESkdQUF9fIHx8IFwKKyAgZGVmaW5lZCBfX09TMl9fCiAjIGRlZmluZSBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQogIyBkZWZpbmUgRk9QRU5fV0IgIndiIgogIyBpZm5kZWYgRElSX1NFUEFSQVRPUl8yCkBAIC00MjY4LDEwICs1NjQxLDEwIEBACiAKICNkZWZpbmUgWE1BTExPQyh0eXBlLCBudW0pICAgICAgKCh0eXBlICopIHhtYWxsb2MgKChudW0pICogc2l6ZW9mKHR5cGUpKSkKICNkZWZpbmUgWEZSRUUoc3RhbGUpIGRvIHsgXAotICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAorICBpZiAoc3RhbGUpIHsgZnJlZSAoc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAogfSB3aGlsZSAoMCkKIAotI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQorI2lmIGRlZmluZWQgTFRfREVCVUdXUkFQUEVSCiBzdGF0aWMgaW50IGx0X2RlYnVnID0gMTsKICNlbHNlCiBzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKQEAgLTQzMDAsMTEgKzU2NzMsMTYgQEAKIEVPRgogCiAJICAgIGNhdCA8PEVPRgotdm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKKyNpZiBfX0dOVUNfXyA8IDQgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KQorIyBkZWZpbmUgZXh0ZXJuYWxseV92aXNpYmxlIHZvbGF0aWxlCisjZWxzZQorIyBkZWZpbmUgZXh0ZXJuYWxseV92aXNpYmxlIF9fYXR0cmlidXRlX18oKGV4dGVybmFsbHlfdmlzaWJsZSkpIHZvbGF0aWxlCisjZW5kaWYKK2V4dGVybmFsbHlfdmlzaWJsZSBjb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwogY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOwogRU9GCiAKLQkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCiAgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKIAkgICAgICBjYXQgPDxFT0YKIGNvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwpAQCAtNDMyOCw3ICs1NzA2LDcgQEAKIEVPRgogCSAgICBmaQogCi0JICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCisJICAgIGlmIHRlc3QgeWVzID0gIiRmYXN0X2luc3RhbGwiOyB0aGVuCiAJICAgICAgY2F0IDw8RU9GCiBjb25zdCBjaGFyICogVEFSR0VUX1BST0dSQU1fTkFNRSA9ICJsdC0kb3V0cHV0bmFtZSI7IC8qIGhvcGVmdWxseSwgbm8gLmV4ZSAqLwogRU9GCkBAIC00MzU3LDEyICs1NzM1LDEyIEBACiAgIGNoYXIgKmFjdHVhbF9jd3JhcHBlcl9uYW1lOwogICBjaGFyICp0YXJnZXRfbmFtZTsKICAgY2hhciAqbHRfYXJndl96ZXJvOwotICBpbnRwdHJfdCBydmFsID0gMTI3OworICBpbnQgcnZhbCA9IDEyNzsKIAogICBpbnQgaTsKIAogICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCAoc2l6ZV90KSBhcmdjICsgMSk7CiAKICAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQKICAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0CkBAIC00MzcxLDEwICs1NzQ5LDEwIEBACiAgIG5ld2FyZ2M9MDsKICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKICAgICB7Ci0gICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKKyAgICAgIGlmIChTVFJFUSAoYXJndltpXSwgZHVtcHNjcmlwdF9vcHQpKQogCXsKIEVPRgotCSAgICBjYXNlICIkaG9zdCIgaW4KKwkgICAgY2FzZSAkaG9zdCBpbgogCSAgICAgICptaW5ndyogfCAqY3lnd2luKiApCiAJCSMgbWFrZSBzdGRvdXQgdXNlICJ1bml4IiBsaW5lIGVuZGluZ3MKIAkJZWNobyAiICAgICAgICAgIHNldG1vZGUoMSxfT19CSU5BUlkpOyIKQEAgLTQzODUsMTIgKzU3NjMsMTIgQEAKIAkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOwogCSAgcmV0dXJuIDA7CiAJfQotICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQorICAgICAgaWYgKFNUUkVRIChhcmd2W2ldLCBkZWJ1Z19vcHQpKQogCXsKICAgICAgICAgICBsdF9kZWJ1ZyA9IDE7CiAgICAgICAgICAgY29udGludWU7CiAJfQotICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgpID09IDApCisgICAgICBpZiAoU1RSRVEgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSkKICAgICAgICAgewogICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKICAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCkBAIC00NDEzLDcgKzU3OTEsNyBAQAogRU9GCiAJICAgIGNhdCA8PEVPRgogICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLwotICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7CisgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICJsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSkgJFZFUlNJT05cbiIpOwogRU9GCiAJICAgIGNhdCA8PCJFT0YiCiAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOwpAQCAtNDUyNCw3ICs1OTAyLDcgQEAKIAkJY2F0IDw8IkVPRiIKICAgLyogZXhlY3YgZG9lc24ndCBhY3R1YWxseSB3b3JrIG9uIG1pbmd3IGFzIGV4cGVjdGVkIG9uIHVuaXggKi8KICAgbmV3YXJneiA9IHByZXBhcmVfc3Bhd24gKG5ld2FyZ3opOwotICBydmFsID0gX3NwYXdudiAoX1BfV0FJVCwgbHRfYXJndl96ZXJvLCAoY29uc3QgY2hhciAqIGNvbnN0ICopIG5ld2FyZ3opOworICBydmFsID0gKGludCkgX3NwYXdudiAoX1BfV0FJVCwgbHRfYXJndl96ZXJvLCAoY29uc3QgY2hhciAqIGNvbnN0ICopIG5ld2FyZ3opOwogICBpZiAocnZhbCA9PSAtMSkKICAgICB7CiAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLwpAQCAtNDU2OSw3ICs1OTQ3LDcgQEAKIHsKICAgY29uc3QgY2hhciAqYmFzZTsKIAotI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQorI2lmIGRlZmluZWQgSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0KICAgLyogU2tpcCBvdmVyIHRoZSBkaXNrIG5hbWUgaW4gTVNET1MgcGF0aG5hbWVzLiAqLwogICBpZiAoaXNhbHBoYSAoKHVuc2lnbmVkIGNoYXIpIG5hbWVbMF0pICYmIG5hbWVbMV0gPT0gJzonKQogICAgIG5hbWUgKz0gMjsKQEAgLTQ2MjgsNyArNjAwNiw3IEBACiAgIGNvbnN0IGNoYXIgKnBfbmV4dDsKICAgLyogc3RhdGljIGJ1ZmZlciBmb3IgZ2V0Y3dkICovCiAgIGNoYXIgdG1wW0xUX1BBVEhNQVggKyAxXTsKLSAgaW50IHRtcF9sZW47CisgIHNpemVfdCB0bXBfbGVuOwogICBjaGFyICpjb25jYXRfbmFtZTsKIAogICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLApAQCAtNDYzOCw3ICs2MDE2LDcgQEAKICAgICByZXR1cm4gTlVMTDsKIAogICAvKiBBYnNvbHV0ZSBwYXRoPyAqLwotI2lmIGRlZmluZWQgKEhBVkVfRE9TX0JBU0VEX0ZJTEVfU1lTVEVNKQorI2lmIGRlZmluZWQgSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0KICAgaWYgKGlzYWxwaGEgKCh1bnNpZ25lZCBjaGFyKSB3cmFwcGVyWzBdKSAmJiB3cmFwcGVyWzFdID09ICc6JykKICAgICB7CiAgICAgICBjb25jYXRfbmFtZSA9IHhzdHJkdXAgKHdyYXBwZXIpOwpAQCAtNDY1Niw3ICs2MDM0LDcgQEAKIAkgICAgcmV0dXJuIGNvbmNhdF9uYW1lOwogCSAgWEZSRUUgKGNvbmNhdF9uYW1lKTsKIAl9Ci0jaWYgZGVmaW5lZCAoSEFWRV9ET1NfQkFTRURfRklMRV9TWVNURU0pCisjaWYgZGVmaW5lZCBIQVZFX0RPU19CQVNFRF9GSUxFX1NZU1RFTQogICAgIH0KICNlbmRpZgogCkBAIC00Njc5LDcgKzYwNTcsNyBAQAogCSAgICAgIGZvciAocSA9IHA7ICpxOyBxKyspCiAJCWlmIChJU19QQVRIX1NFUEFSQVRPUiAoKnEpKQogCQkgIGJyZWFrOwotCSAgICAgIHBfbGVuID0gcSAtIHA7CisJICAgICAgcF9sZW4gPSAoc2l6ZV90KSAocSAtIHApOwogCSAgICAgIHBfbmV4dCA9ICgqcSA9PSAnXDAnID8gcSA6IHEgKyAxKTsKIAkgICAgICBpZiAocF9sZW4gPT0gMCkKIAkJewpAQCAtNDc5OCw3ICs2MTc2LDcgQEAKICAgaWYgKHBhdGxlbiA8PSBsZW4pCiAgICAgewogICAgICAgc3RyICs9IGxlbiAtIHBhdGxlbjsKLSAgICAgIGlmIChzdHJjbXAgKHN0ciwgcGF0KSA9PSAwKQorICAgICAgaWYgKFNUUkVRIChzdHIsIHBhdCkpCiAJKnN0ciA9ICdcMCc7CiAgICAgfQogICByZXR1cm4gc3RyOwpAQCAtNDg2Myw3ICs2MjQxLDcgQEAKICAgICBjaGFyICpzdHIgPSB4c3RyZHVwICh2YWx1ZSk7CiAgICAgc2V0ZW52IChuYW1lLCBzdHIsIDEpOwogI2Vsc2UKLSAgICBpbnQgbGVuID0gc3RybGVuIChuYW1lKSArIDEgKyBzdHJsZW4gKHZhbHVlKSArIDE7CisgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmFtZSkgKyAxICsgc3RybGVuICh2YWx1ZSkgKyAxOwogICAgIGNoYXIgKnN0ciA9IFhNQUxMT0MgKGNoYXIsIGxlbik7CiAgICAgc3ByaW50ZiAoc3RyLCAiJXM9JXMiLCBuYW1lLCB2YWx1ZSk7CiAgICAgaWYgKHB1dGVudiAoc3RyKSAhPSBFWElUX1NVQ0NFU1MpCkBAIC00ODgwLDggKzYyNTgsOCBAQAogICBjaGFyICpuZXdfdmFsdWU7CiAgIGlmIChvcmlnX3ZhbHVlICYmICpvcmlnX3ZhbHVlKQogICAgIHsKLSAgICAgIGludCBvcmlnX3ZhbHVlX2xlbiA9IHN0cmxlbiAob3JpZ192YWx1ZSk7Ci0gICAgICBpbnQgYWRkX2xlbiA9IHN0cmxlbiAoYWRkKTsKKyAgICAgIHNpemVfdCBvcmlnX3ZhbHVlX2xlbiA9IHN0cmxlbiAob3JpZ192YWx1ZSk7CisgICAgICBzaXplX3QgYWRkX2xlbiA9IHN0cmxlbiAoYWRkKTsKICAgICAgIG5ld192YWx1ZSA9IFhNQUxMT0MgKGNoYXIsIGFkZF9sZW4gKyBvcmlnX3ZhbHVlX2xlbiArIDEpOwogICAgICAgaWYgKHRvX2VuZCkKICAgICAgICAgewpAQCAtNDkxMiwxMCArNjI5MCwxMCBAQAogICAgIHsKICAgICAgIGNoYXIgKm5ld192YWx1ZSA9IGx0X2V4dGVuZF9zdHIgKGdldGVudiAobmFtZSksIHZhbHVlLCAwKTsKICAgICAgIC8qIHNvbWUgc3lzdGVtcyBjYW4ndCBjb3BlIHdpdGggYSAnOictdGVybWluYXRlZCBwYXRoICMnICovCi0gICAgICBpbnQgbGVuID0gc3RybGVuIChuZXdfdmFsdWUpOwotICAgICAgd2hpbGUgKCgobGVuID0gc3RybGVuIChuZXdfdmFsdWUpKSA+IDApICYmIElTX1BBVEhfU0VQQVJBVE9SIChuZXdfdmFsdWVbbGVuLTFdKSkKKyAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKG5ld192YWx1ZSk7CisgICAgICB3aGlsZSAoKGxlbiA+IDApICYmIElTX1BBVEhfU0VQQVJBVE9SIChuZXdfdmFsdWVbbGVuLTFdKSkKICAgICAgICAgewotICAgICAgICAgIG5ld192YWx1ZVtsZW4tMV0gPSAnXDAnOworICAgICAgICAgIG5ld192YWx1ZVstLWxlbl0gPSAnXDAnOwogICAgICAgICB9CiAgICAgICBsdF9zZXRlbnYgKG5hbWUsIG5ld192YWx1ZSk7CiAgICAgICBYRlJFRSAobmV3X3ZhbHVlKTsKQEAgLTUwODIsMjcgKzY0NjAsNDcgQEAKICMgVHJ1ZSBpZiBBUkcgaXMgYW4gaW1wb3J0IGxpYiwgYXMgaW5kaWNhdGVkIGJ5ICRmaWxlX21hZ2ljX2NtZAogZnVuY193aW4zMl9pbXBvcnRfbGliX3AgKCkKIHsKLSAgICAkb3B0X2RlYnVnCisgICAgJGRlYnVnX2NtZAorCiAgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgogICAgICppbXBvcnQqKSA6IDs7CiAgICAgKikgZmFsc2UgOzsKICAgICBlc2FjCiB9CiAKKyMgZnVuY19zdW5jY19jc3RkX2FiaQorIyAhIU9OTFkgQ0FMTCBUSElTIEZPUiBTVU4gQ0MgQUZURVIgJGNvbXBpbGVfY29tbWFuZCBJUyBGVUxMWSBFWFBBTkRFRCEhCisjIFNldmVyYWwgY29tcGlsZXIgZmxhZ3Mgc2VsZWN0IGFuIEFCSSB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIHRoZQorIyBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcgaXQgaWYgYW55IGFyZSBpbiBDWFhGTEFHUy4KK2Z1bmNfc3VuY2NfY3N0ZF9hYmkgKCkKK3sKKyAgICAkZGVidWdfY21kCisKKyAgICBjYXNlICIgJGNvbXBpbGVfY29tbWFuZCAiIGluCisgICAgKiIgLWNvbXBhdD1nICIqfCpcIC1zdGQ9YysrWzAtOV1bMC05XVwgKnwqIiAtbGlicmFyeT1zdGRjeHg0ICIqfCoiIC1saWJyYXJ5PXN0bHBvcnQ0ICIqKQorICAgICAgc3VuY2NfdXNlX2NzdGRfYWJpPW5vCisgICAgICA7OworICAgICopCisgICAgICBzdW5jY191c2VfY3N0ZF9hYmk9eWVzCisgICAgICA7OworICAgIGVzYWMKK30KKwogIyBmdW5jX21vZGVfbGluayBhcmcuLi4KIGZ1bmNfbW9kZV9saW5rICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZworICAgICRkZWJ1Z19jbWQKKwogICAgIGNhc2UgJGhvc3QgaW4KICAgICAqLSotY3lnd2luKiB8ICotKi1taW5ndyogfCAqLSotcHczMiogfCAqLSotb3MyKiB8ICotY2VnY2MqKQogICAgICAgIyBJdCBpcyBpbXBvc3NpYmxlIHRvIGxpbmsgYSBkbGwgd2l0aG91dCB0aGlzIHNldHRpbmcsIGFuZAogICAgICAgIyB3ZSBzaG91bGRuJ3QgZm9yY2UgdGhlIG1ha2VmaWxlIG1haW50YWluZXIgdG8gZmlndXJlIG91dAotICAgICAgIyB3aGljaCBzeXN0ZW0gd2UgYXJlIGNvbXBpbGluZyBmb3IgaW4gb3JkZXIgdG8gcGFzcyBhbiBleHRyYQorICAgICAgIyB3aGF0IHN5c3RlbSB3ZSBhcmUgY29tcGlsaW5nIGZvciBpbiBvcmRlciB0byBwYXNzIGFuIGV4dHJhCiAgICAgICAjIGZsYWcgZm9yIGV2ZXJ5IGxpYnRvb2wgaW52b2NhdGlvbi4KICAgICAgICMgYWxsb3dfdW5kZWZpbmVkPW5vCiAKICAgICAgICMgRklYTUU6IFVuZm9ydHVuYXRlbHksIHRoZXJlIGFyZSBwcm9ibGVtcyB3aXRoIHRoZSBhYm92ZSB3aGVuIHRyeWluZwotICAgICAgIyB0byBtYWtlIGEgZGxsIHdoaWNoIGhhcyB1bmRlZmluZWQgc3ltYm9scywgaW4gd2hpY2ggY2FzZSBub3QKKyAgICAgICMgdG8gbWFrZSBhIGRsbCB0aGF0IGhhcyB1bmRlZmluZWQgc3ltYm9scywgaW4gd2hpY2ggY2FzZSBub3QKICAgICAgICMgZXZlbiBhIHN0YXRpYyBsaWJyYXJ5IGlzIGJ1aWx0LiAgRm9yIG5vdywgd2UgbmVlZCB0byBzcGVjaWZ5CiAgICAgICAjIC1uby11bmRlZmluZWQgb24gdGhlIGxpYnRvb2wgbGluayBsaW5lIHdoZW4gd2UgY2FuIGJlIGNlcnRhaW4KICAgICAgICMgdGhhdCBhbGwgc3ltYm9scyBhcmUgc2F0aXNmaWVkLCBvdGhlcndpc2Ugd2UgZ2V0IGEgc3RhdGljIGxpYnJhcnkuCkBAIC01MTQ2LDEwICs2NTQ0LDExIEBACiAgICAgbW9kdWxlPW5vCiAgICAgbm9faW5zdGFsbD1ubwogICAgIG9ianM9CisgICAgb3MyZGxsbmFtZT0KICAgICBub25fcGljX29iamVjdHM9CiAgICAgcHJlY2lvdXNfZmlsZXNfcmVnZXg9CiAgICAgcHJlZmVyX3N0YXRpY19saWJzPW5vCi0gICAgcHJlbG9hZD1ubworICAgIHByZWxvYWQ9ZmFsc2UKICAgICBwcmV2PQogICAgIHByZXZhcmc9CiAgICAgcmVsZWFzZT0KQEAgLTUxNjEsNyArNjU2MCw3IEBACiAgICAgdmluZm89CiAgICAgdmluZm9fbnVtYmVyPW5vCiAgICAgd2Vha19saWJzPQotICAgIHNpbmdsZV9tb2R1bGU9IiR7d2x9LXNpbmdsZV9tb2R1bGUiCisgICAgc2luZ2xlX21vZHVsZT0kd2wtc2luZ2xlX21vZHVsZQogICAgIGZ1bmNfaW5mZXJfdGFnICRiYXNlX2NvbXBpbGUKIAogICAgICMgV2UgbmVlZCB0byBrbm93IC1zdGF0aWMsIHRvIGdldCB0aGUgcmlnaHQgb3V0cHV0IGZpbGVuYW1lcy4KQEAgLTUxNjksMTUgKzY1NjgsMTUgQEAKICAgICBkbwogICAgICAgY2FzZSAkYXJnIGluCiAgICAgICAtc2hhcmVkKQotCXRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBcCi0JICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gImNhbiBub3QgYnVpbGQgYSBzaGFyZWQgbGlicmFyeSIKKwl0ZXN0IHllcyAhPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgXAorCSAgJiYgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJjYW5ub3QgYnVpbGQgYSBzaGFyZWQgbGlicmFyeSIKIAlidWlsZF9vbGRfbGlicz1ubwogCWJyZWFrCiAJOzsKICAgICAgIC1hbGwtc3RhdGljIHwgLXN0YXRpYyB8IC1zdGF0aWMtbGlidG9vbC1saWJzKQogCWNhc2UgJGFyZyBpbgogCS1hbGwtc3RhdGljKQotCSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAteiAiJGxpbmtfc3RhdGljX2ZsYWciOyB0aGVuCisJICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIiAmJiB0ZXN0IC16ICIkbGlua19zdGF0aWNfZmxhZyI7IHRoZW4KIAkgICAgZnVuY193YXJuaW5nICJjb21wbGV0ZSBzdGF0aWMgbGlua2luZyBpcyBpbXBvc3NpYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbiIKIAkgIGZpCiAJICBpZiB0ZXN0IC1uICIkbGlua19zdGF0aWNfZmxhZyI7IHRoZW4KQEAgLTUyMTAsNyArNjYwOSw3IEBACiAKICAgICAjIEdvIHRocm91Z2ggdGhlIGFyZ3VtZW50cywgdHJhbnNmb3JtaW5nIHRoZW0gb24gdGhlIHdheS4KICAgICB3aGlsZSB0ZXN0ICIkIyIgLWd0IDA7IGRvCi0gICAgICBhcmc9IiQxIgorICAgICAgYXJnPSQxCiAgICAgICBzaGlmdAogICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKICAgICAgIHFhcmc9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfdW5xdW90ZWRfcmVzdWx0CkBAIC01MjI3LDIxICs2NjI2LDIxIEBACiAKIAljYXNlICRwcmV2IGluCiAJYmluZGlyKQotCSAgYmluZGlyPSIkYXJnIgorCSAgYmluZGlyPSRhcmcKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKIAlkbGZpbGVzfGRscHJlZmlsZXMpCi0JICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSBubzsgdGhlbgorCSAgJHByZWxvYWQgfHwgewogCSAgICAjIEFkZCB0aGUgc3ltYm9sIG9iamVjdCBpbnRvIHRoZSBsaW5raW5nIGNvbW1hbmRzLgogCSAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiBAU1lNRklMRUAiCiAJICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiBAU1lNRklMRUAiCi0JICAgIHByZWxvYWQ9eWVzCi0JICBmaQorCSAgICBwcmVsb2FkPToKKwkgIH0KIAkgIGNhc2UgJGFyZyBpbgogCSAgKi5sYSB8ICoubG8pIDs7ICAjIFdlIGhhbmRsZSB0aGVzZSBjYXNlcyBiZWxvdy4KIAkgIGZvcmNlKQotCSAgICBpZiB0ZXN0ICIkZGxzZWxmIiA9IG5vOyB0aGVuCisJICAgIGlmIHRlc3Qgbm8gPSAiJGRsc2VsZiI7IHRoZW4KIAkgICAgICBkbHNlbGY9bmVlZGxlc3MKIAkgICAgICBleHBvcnRfZHluYW1pYz15ZXMKIAkgICAgZmkKQEAgLTUyNDksOSArNjY0OCw5IEBACiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICBzZWxmKQotCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisJICAgIGlmIHRlc3QgZGxwcmVmaWxlcyA9ICIkcHJldiI7IHRoZW4KIAkgICAgICBkbHNlbGY9eWVzCi0JICAgIGVsaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlcyAmJiB0ZXN0ICIkZGxvcGVuX3NlbGYiICE9IHllczsgdGhlbgorCSAgICBlbGlmIHRlc3QgZGxmaWxlcyA9ICIkcHJldiIgJiYgdGVzdCB5ZXMgIT0gIiRkbG9wZW5fc2VsZiI7IHRoZW4KIAkgICAgICBkbHNlbGY9eWVzCiAJICAgIGVsc2UKIAkgICAgICBkbHNlbGY9bmVlZGxlc3MKQEAgLTUyNjEsNyArNjY2MCw3IEBACiAJICAgIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqKQotCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbGZpbGVzOyB0aGVuCisJICAgIGlmIHRlc3QgZGxmaWxlcyA9ICIkcHJldiI7IHRoZW4KIAkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKIAkgICAgZWxzZQogCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkYXJnIgpAQCAtNTI3MiwxNCArNjY3MSwxNCBAQAogCSAgZXNhYwogCSAgOzsKIAlleHBzeW1zKQotCSAgZXhwb3J0X3N5bWJvbHM9IiRhcmciCisJICBleHBvcnRfc3ltYm9scz0kYXJnCiAJICB0ZXN0IC1mICIkYXJnIiBcCi0JICAgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgInN5bWJvbCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCisJICAgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgInN5bWJvbCBmaWxlICckYXJnJyBkb2VzIG5vdCBleGlzdCIKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKIAlleHBzeW1zX3JlZ2V4KQotCSAgZXhwb3J0X3N5bWJvbHNfcmVnZXg9IiRhcmciCisJICBleHBvcnRfc3ltYm9sc19yZWdleD0kYXJnCiAJICBwcmV2PQogCSAgY29udGludWUKIAkgIDs7CkBAIC01Mjk3LDcgKzY2OTYsMTMgQEAKIAkgIGNvbnRpbnVlCiAJICA7OwogCWluc3RfcHJlZml4KQotCSAgaW5zdF9wcmVmaXhfZGlyPSIkYXJnIgorCSAgaW5zdF9wcmVmaXhfZGlyPSRhcmcKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKKwltbGx2bSkKKwkgICMgQ2xhbmcgZG9lcyBub3QgdXNlIExMVk0gdG8gbGluaywgc28gd2UgY2FuIHNpbXBseSBkaXNjYXJkIGFueQorCSAgIyAnLW1sbHZtICRhcmcnIG9wdGlvbnMgd2hlbiBkb2luZyB0aGUgbGluayBzdGVwLgogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwpAQCAtNTMyMSwyMSArNjcyNiwyMSBAQAogCiAJCWlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fAogCQkgICB0ZXN0IC16ICIkbm9uX3BpY19vYmplY3QiIHx8Ci0JCSAgIHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgJiYKLQkJICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiA9IG5vbmU7IHRoZW4KLQkJICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIG9iamVjdCBmb3IgXGAkYXJnJyIKKwkJICAgdGVzdCBub25lID0gIiRwaWNfb2JqZWN0IiAmJgorCQkgICB0ZXN0IG5vbmUgPSAiJG5vbl9waWNfb2JqZWN0IjsgdGhlbgorCQkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2Ygb2JqZWN0IGZvciAnJGFyZyciCiAJCWZpCiAKIAkJIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KIAkJZnVuY19kaXJuYW1lICIkYXJnIiAiLyIgIiIKLQkJeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJCXhkaXI9JGZ1bmNfZGlybmFtZV9yZXN1bHQKIAotCQlpZiB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCQlpZiB0ZXN0IG5vbmUgIT0gIiRwaWNfb2JqZWN0IjsgdGhlbgogCQkgICMgUHJlcGVuZCB0aGUgc3ViZGlyZWN0b3J5IHRoZSBvYmplY3QgaXMgZm91bmQgaW4uCi0JCSAgcGljX29iamVjdD0iJHhkaXIkcGljX29iamVjdCIKKwkJICBwaWNfb2JqZWN0PSR4ZGlyJHBpY19vYmplY3QKIAotCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLQkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KKwkJICBpZiB0ZXN0IGRsZmlsZXMgPSAiJHByZXYiOyB0aGVuCisJCSAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIiAmJiB0ZXN0IHllcyA9ICIkZGxvcGVuX3N1cHBvcnQiOyB0aGVuCiAJCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKIAkJICAgICAgcHJldj0KIAkJICAgICAgY29udGludWUKQEAgLTUzNDYsNyArNjc1MSw3IEBACiAJCSAgZmkKIAogCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCi0JCSAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgorCQkgIGlmIHRlc3QgZGxwcmVmaWxlcyA9ICIkcHJldiI7IHRoZW4KIAkJICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KIAkJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKIAkJICAgIHByZXY9CkBAIC01MzU0LDIzICs2NzU5LDIzIEBACiAKIAkJICAjIEEgUElDIG9iamVjdC4KIAkJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCi0JCSAgYXJnPSIkcGljX29iamVjdCIKKwkJICBhcmc9JHBpY19vYmplY3QKIAkJZmkKIAogCQkjIE5vbi1QSUMgb2JqZWN0LgotCQlpZiB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKwkJaWYgdGVzdCBub25lICE9ICIkbm9uX3BpY19vYmplY3QiOyB0aGVuCiAJCSAgIyBQcmVwZW5kIHRoZSBzdWJkaXJlY3RvcnkgdGhlIG9iamVjdCBpcyBmb3VuZCBpbi4KLQkJICBub25fcGljX29iamVjdD0iJHhkaXIkbm9uX3BpY19vYmplY3QiCisJCSAgbm9uX3BpY19vYmplY3Q9JHhkaXIkbm9uX3BpY19vYmplY3QKIAogCQkgICMgQSBzdGFuZGFyZCBub24tUElDIG9iamVjdAogCQkgIGZ1bmNfYXBwZW5kIG5vbl9waWNfb2JqZWN0cyAiICRub25fcGljX29iamVjdCIKLQkJICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwgdGVzdCAiJHBpY19vYmplY3QiID0gbm9uZSA7IHRoZW4KLQkJICAgIGFyZz0iJG5vbl9waWNfb2JqZWN0IgorCQkgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCB0ZXN0IG5vbmUgPSAiJHBpY19vYmplY3QiOyB0aGVuCisJCSAgICBhcmc9JG5vbl9waWNfb2JqZWN0CiAJCSAgZmkKIAkJZWxzZQogCQkgICMgSWYgdGhlIFBJQyBvYmplY3QgZXhpc3RzLCB1c2UgaXQgaW5zdGVhZC4KIAkJICAjICR4ZGlyIHdhcyBwcmVwZW5kZWQgdG8gJHBpY19vYmplY3QgYWJvdmUuCi0JCSAgbm9uX3BpY19vYmplY3Q9IiRwaWNfb2JqZWN0IgorCQkgIG5vbl9waWNfb2JqZWN0PSRwaWNfb2JqZWN0CiAJCSAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgogCQlmaQogCSAgICAgIGVsc2UKQEAgLTUzNzgsNyArNjc4Myw3IEBACiAJCWlmICRvcHRfZHJ5X3J1bjsgdGhlbgogCQkgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCiAJCSAgZnVuY19kaXJuYW1lICIkYXJnIiAiLyIgIiIKLQkJICB4ZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwkJICB4ZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAKIAkJICBmdW5jX2xvMm8gIiRhcmciCiAJCSAgcGljX29iamVjdD0keGRpciRvYmpkaXIvJGZ1bmNfbG8yb19yZXN1bHQKQEAgLTUzODYsMjQgKzY3OTEsMjkgQEAKIAkJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHBpY19vYmplY3QiCiAJCSAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgogCSAgICAgICAgZWxzZQotCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGFyZycgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBvYmplY3QiCisJCSAgZnVuY19mYXRhbF9lcnJvciAiJyRhcmcnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgb2JqZWN0IgogCQlmaQogCSAgICAgIGZpCiAJICAgIGRvbmUKIAkgIGVsc2UKLQkgICAgZnVuY19mYXRhbF9lcnJvciAibGluayBpbnB1dCBmaWxlIFxgJGFyZycgZG9lcyBub3QgZXhpc3QiCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgImxpbmsgaW5wdXQgZmlsZSAnJGFyZycgZG9lcyBub3QgZXhpc3QiCiAJICBmaQogCSAgYXJnPSRzYXZlX2FyZwogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OworCW9zMmRsbG5hbWUpCisJICBvczJkbGxuYW1lPSRhcmcKKwkgIHByZXY9CisJICBjb250aW51ZQorCSAgOzsKIAlwcmVjaW91c19yZWdleCkKLQkgIHByZWNpb3VzX2ZpbGVzX3JlZ2V4PSIkYXJnIgorCSAgcHJlY2lvdXNfZmlsZXNfcmVnZXg9JGFyZwogCSAgcHJldj0KIAkgIGNvbnRpbnVlCiAJICA7OwogCXJlbGVhc2UpCi0JICByZWxlYXNlPSItJGFyZyIKKwkgIHJlbGVhc2U9LSRhcmcKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKQEAgLTU0MTUsNyArNjgyNSw3IEBACiAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgogCSAgICA7OwogCSAgZXNhYwotCSAgaWYgdGVzdCAiJHByZXYiID0gcnBhdGg7IHRoZW4KKwkgIGlmIHRlc3QgcnBhdGggPSAiJHByZXYiOyB0aGVuCiAJICAgIGNhc2UgIiRycGF0aCAiIGluCiAJICAgICoiICRhcmcgIiopIDs7CiAJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKQEAgLTU0MzAsNyArNjg0MCw3IEBACiAJICBjb250aW51ZQogCSAgOzsKIAlzaHJleHQpCi0JICBzaHJleHRfY21kcz0iJGFyZyIKKwkgIHNocmV4dF9jbWRzPSRhcmcKIAkgIHByZXY9CiAJICBjb250aW51ZQogCSAgOzsKQEAgLTU0NzAsNyArNjg4MCw3IEBACiAJZXNhYwogICAgICAgZmkgIyB0ZXN0IC1uICIkcHJldiIKIAotICAgICAgcHJldmFyZz0iJGFyZyIKKyAgICAgIHByZXZhcmc9JGFyZwogCiAgICAgICBjYXNlICRhcmcgaW4KICAgICAgIC1hbGwtc3RhdGljKQpAQCAtNTQ4NCw3ICs2ODk0LDcgQEAKIAogICAgICAgLWFsbG93LXVuZGVmaW5lZCkKIAkjIEZJWE1FOiByZW1vdmUgdGhpcyBmbGFnIHNvbWV0aW1lIGluIHRoZSBmdXR1cmUuCi0JZnVuY19mYXRhbF9lcnJvciAiXGAtYWxsb3ctdW5kZWZpbmVkJyBtdXN0IG5vdCBiZSB1c2VkIGJlY2F1c2UgaXQgaXMgdGhlIGRlZmF1bHQiCisJZnVuY19mYXRhbF9lcnJvciAiJy1hbGxvdy11bmRlZmluZWQnIG11c3Qgbm90IGJlIHVzZWQgYmVjYXVzZSBpdCBpcyB0aGUgZGVmYXVsdCIKIAk7OwogCiAgICAgICAtYXZvaWQtdmVyc2lvbikKQEAgLTU1MTYsNyArNjkyNiw3IEBACiAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiB8fCB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiOyB0aGVuCiAJICBmdW5jX2ZhdGFsX2Vycm9yICJtb3JlIHRoYW4gb25lIC1leHBvcnRlZC1zeW1ib2xzIGFyZ3VtZW50IGlzIG5vdCBhbGxvd2VkIgogCWZpCi0JaWYgdGVzdCAiWCRhcmciID0gIlgtZXhwb3J0LXN5bWJvbHMiOyB0aGVuCisJaWYgdGVzdCBYLWV4cG9ydC1zeW1ib2xzID0gIlgkYXJnIjsgdGhlbgogCSAgcHJldj1leHBzeW1zCiAJZWxzZQogCSAgcHJldj1leHBzeW1zX3JlZ2V4CkBAIC01NTUwLDkgKzY5NjAsOSBAQAogCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCiAJaWYgdGVzdCAteiAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7IHRoZW4KIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgorCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gJy1MJyBhbmQgJyQxJyIKIAkgIGVsc2UKLQkgICAgZnVuY19mYXRhbF9lcnJvciAibmVlZCBwYXRoIGZvciBcYC1MJyBvcHRpb24iCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgJy1MJyBvcHRpb24iCiAJICBmaQogCWZpCiAJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCkBAIC01NTYzLDggKzY5NzMsOCBAQAogCSopCiAJICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCiAJICB0ZXN0IC16ICIkYWJzZGlyIiAmJiBcCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBkZXRlcm1pbmUgYWJzb2x1dGUgZGlyZWN0b3J5IG5hbWUgb2YgXGAkZGlyJyIKLQkgIGRpcj0iJGFic2RpciIKKwkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiAnJGRpciciCisJICBkaXI9JGFic2RpcgogCSAgOzsKIAllc2FjCiAJY2FzZSAiJGRlcGxpYnMgIiBpbgpAQCAtNTU5OSw3ICs3MDA5LDcgQEAKIAk7OwogCiAgICAgICAtbCopCi0JaWYgdGVzdCAiWCRhcmciID0gIlgtbGMiIHx8IHRlc3QgIlgkYXJnIiA9ICJYLWxtIjsgdGhlbgorCWlmIHRlc3QgWC1sYyA9ICJYJGFyZyIgfHwgdGVzdCBYLWxtID0gIlgkYXJnIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgogCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLWJlb3MqIHwgKi1jZWdjYyogfCAqLSotaGFpa3UqKQogCSAgICAjIFRoZXNlIHN5c3RlbXMgZG9uJ3QgYWN0dWFsbHkgaGF2ZSBhIEMgb3IgbWF0aCBsaWJyYXJ5IChhcyBzdWNoKQpAQCAtNTYwNywxMSArNzAxNywxMSBAQAogCSAgICA7OwogCSAgKi0qLW9zMiopCiAJICAgICMgVGhlc2Ugc3lzdGVtcyBkb24ndCBhY3R1YWxseSBoYXZlIGEgQyBsaWJyYXJ5IChhcyBzdWNoKQotCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKwkgICAgdGVzdCBYLWxjID0gIlgkYXJnIiAmJiBjb250aW51ZQogCSAgICA7OwotCSAgKi0qLW9wZW5ic2QqIHwgKi0qLWZyZWVic2QqIHwgKi0qLWRyYWdvbmZseSopCisJICAqLSotb3BlbmJzZCogfCAqLSotZnJlZWJzZCogfCAqLSotZHJhZ29uZmx5KiB8ICotKi1iaXRyaWcqKQogCSAgICAjIERvIG5vdCBpbmNsdWRlIGxpYmMgZHVlIHRvIHVzIGhhdmluZyBsaWJjL2xpYmNfci4KLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCisJICAgIHRlc3QgWC1sYyA9ICJYJGFyZyIgJiYgY29udGludWUKIAkgICAgOzsKIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKQEAgLTU2MjAsMTYgKzcwMzAsMTYgQEAKIAkgICAgOzsKIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKIAkgICAgIyBDYXVzZXMgcHJvYmxlbXMgd2l0aCBfX2N0eXBlCi0JICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQorCSAgICB0ZXN0IFgtbGMgPSAiWCRhcmciICYmIGNvbnRpbnVlCiAJICAgIDs7CiAJICAqLSotc3lzdjQuMnV3MiogfCAqLSotc3lzdjUqIHwgKi0qLXVuaXh3YXJlKiB8ICotKi1PcGVuVU5JWCopCiAJICAgICMgQ29tcGlsZXIgaW5zZXJ0cyBsaWJjIGluIHRoZSBjb3JyZWN0IHBsYWNlIGZvciB0aHJlYWRzIHRvIHdvcmsKLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCisJICAgIHRlc3QgWC1sYyA9ICJYJGFyZyIgJiYgY29udGludWUKIAkgICAgOzsKIAkgIGVzYWMKLQllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCisJZWxpZiB0ZXN0IFgtbGNfciA9ICJYJGFyZyI7IHRoZW4KIAkgY2FzZSAkaG9zdCBpbgotCSAqLSotb3BlbmJzZCogfCAqLSotZnJlZWJzZCogfCAqLSotZHJhZ29uZmx5KikKKwkgKi0qLW9wZW5ic2QqIHwgKi0qLWZyZWVic2QqIHwgKi0qLWRyYWdvbmZseSogfCAqLSotYml0cmlnKikKIAkgICAjIERvIG5vdCBpbmNsdWRlIGxpYmNfciBkaXJlY3RseSwgdXNlIC1wdGhyZWFkIGZsYWcuCiAJICAgY29udGludWUKIAkgICA7OwpAQCAtNTYzOSw2ICs3MDQ5LDExIEBACiAJY29udGludWUKIAk7OwogCisgICAgICAtbWxsdm0pCisJcHJldj1tbGx2bQorCWNvbnRpbnVlCisJOzsKKwogICAgICAgLW1vZHVsZSkKIAltb2R1bGU9eWVzCiAJY29udGludWUKQEAgLTU2NjgsNyArNzA4Myw3IEBACiAJOzsKIAogICAgICAgLW11bHRpX21vZHVsZSkKLQlzaW5nbGVfbW9kdWxlPSIke3dsfS1tdWx0aV9tb2R1bGUiCisJc2luZ2xlX21vZHVsZT0kd2wtbXVsdGlfbW9kdWxlCiAJY29udGludWUKIAk7OwogCkBAIC01NjgyLDggKzcwOTcsOCBAQAogCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi0qLWRhcndpbiogfCAqLWNlZ2NjKikKIAkgICMgVGhlIFBBVEggaGFja2VyeSBpbiB3cmFwcGVyIHNjcmlwdHMgaXMgcmVxdWlyZWQgb24gV2luZG93cwogCSAgIyBhbmQgRGFyd2luIGluIG9yZGVyIGZvciB0aGUgbG9hZGVyIHRvIGZpbmQgYW55IGRsbHMgaXQgbmVlZHMuCi0JICBmdW5jX3dhcm5pbmcgIlxgLW5vLWluc3RhbGwnIGlzIGlnbm9yZWQgZm9yICRob3N0IgotCSAgZnVuY193YXJuaW5nICJhc3N1bWluZyBcYC1uby1mYXN0LWluc3RhbGwnIGluc3RlYWQiCisJICBmdW5jX3dhcm5pbmcgIictbm8taW5zdGFsbCcgaXMgaWdub3JlZCBmb3IgJGhvc3QiCisJICBmdW5jX3dhcm5pbmcgImFzc3VtaW5nICctbm8tZmFzdC1pbnN0YWxsJyBpbnN0ZWFkIgogCSAgZmFzdF9pbnN0YWxsPW5vCiAJICA7OwogCSopIG5vX2luc3RhbGw9eWVzIDs7CkBAIC01NzAxLDYgKzcxMTYsMTEgQEAKIAljb250aW51ZQogCTs7CiAKKyAgICAgIC1vczJkbGxuYW1lKQorCXByZXY9b3MyZGxsbmFtZQorCWNvbnRpbnVlCisJOzsKKwogICAgICAgLW8pIHByZXY9b3V0cHV0IDs7CiAKICAgICAgIC1wcmVjaW91cy1maWxlcy1yZWdleCkKQEAgLTU3ODgsMTQgKzcyMDgsMTQgQEAKIAlmdW5jX3N0cmlwbmFtZSAnLVdjLCcgJycgIiRhcmciCiAJYXJncz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJYXJnPQotCXNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJworCXNhdmVfaWZzPSRJRlM7IElGUz0sCiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCi0JICBJRlM9IiRzYXZlX2lmcyIKKwkgIElGUz0kc2F2ZV9pZnMKICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKIAkgIGZ1bmNfYXBwZW5kIGFyZyAiICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKLQlJRlM9IiRzYXZlX2lmcyIKKwlJRlM9JHNhdmVfaWZzCiAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgogCWFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJOzsKQEAgLTU4MDQsMTUgKzcyMjQsMTUgQEAKIAlmdW5jX3N0cmlwbmFtZSAnLVdsLCcgJycgIiRhcmciCiAJYXJncz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJYXJnPQotCXNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJworCXNhdmVfaWZzPSRJRlM7IElGUz0sCiAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCi0JICBJRlM9IiRzYXZlX2lmcyIKKwkgIElGUz0kc2F2ZV9pZnMKICAgICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmxhZyIKIAkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHdsJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgogCWRvbmUKLQlJRlM9IiRzYXZlX2lmcyIKKwlJRlM9JHNhdmVfaWZzCiAJZnVuY19zdHJpcG5hbWUgJyAnICcnICIkYXJnIgogCWFyZz0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAJOzsKQEAgLTU4MzUsNyArNzI1NSw3IEBACiAgICAgICAjIC1tc2dfKiBmb3Igb3NmIGNjCiAgICAgICAtbXNnXyopCiAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwlhcmc9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CiAJOzsKIAogICAgICAgIyBGbGFncyB0byBiZSBwYXNzZWQgdGhyb3VnaCB1bmNoYW5nZWQsIHdpdGggcmF0aW9uYWxlOgpAQCAtNTg0NywyNSArNzI2Nyw0OSBAQAogICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQwogICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KICAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogIHByb2ZpbGluZyBmbGFncyBmb3IgR0NDCisgICAgICAjIC1mc3RhY2stcHJvdGVjdG9yKiAgIHN0YWNrIHByb3RlY3RvciBmbGFncyBmb3IgR0NDCiAgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcwogICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCiAgICAgICAjIC0tc3lzcm9vdD0qICAgICAgICAgIGZvciBzeXNyb290IHN1cHBvcnQKLSAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCisgICAgICAjIC1PKiwgLWcqLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCisgICAgICAjIC1zcGVjcz0qICAgICAgICAgICAgIEdDQyBzcGVjcyBmaWxlcworICAgICAgIyAtc3RkbGliPSogICAgICAgICAgICBzZWxlY3QgYysrIHN0ZCBsaWIgd2l0aCBjbGFuZworICAgICAgIyAtZnNhbml0aXplPSogICAgICAgICBDbGFuZy9HQ0MgbWVtb3J5IGFuZCBhZGRyZXNzIHNhbml0aXplcgogICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCiAgICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSp8LS1zeXNyb290PSp8IFwKLSAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKKyAgICAgIC1PKnwtZyp8LWZsdG8qfC1md2hvcHIqfC1mdXNlLWxpbmtlci1wbHVnaW58LWZzdGFjay1wcm90ZWN0b3IqfC1zdGRsaWI9KnwgXAorICAgICAgLXNwZWNzPSp8LWZzYW5pdGl6ZT0qKQogICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorCWFyZz0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCiAgICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKICAgICAgICAgY29udGludWUKICAgICAgICAgOzsKIAorICAgICAgLVoqKQorICAgICAgICBpZiB0ZXN0IG9zMiA9ICJgZXhwciAkaG9zdCA6ICcuKlwob3MyXCknYCI7IHRoZW4KKyAgICAgICAgICAjIE9TLzIgdXNlcyAtWnh4eCB0byBzcGVjaWZ5IE9TLzItc3BlY2lmaWMgb3B0aW9ucworCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKwkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorCSAgY2FzZSAkYXJnIGluCisJICAtWmxpbmtlciB8IC1ac3RhY2spCisJICAgIHByZXY9eGNvbXBpbGVyCisJICAgIDs7CisJICBlc2FjCisJICBjb250aW51ZQorICAgICAgICBlbHNlCisJICAjIE90aGVyd2lzZSB0cmVhdCBsaWtlICdTb21lIG90aGVyIGNvbXBpbGVyIGZsYWcnIGJlbG93CisJICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorCSAgYXJnPSRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdAorICAgICAgICBmaQorCTs7CisKICAgICAgICMgU29tZSBvdGhlciBjb21waWxlciBmbGFnLgogICAgICAgLSogfCArKikKICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwlhcmc9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CiAJOzsKIAogICAgICAgKi4kb2JqZXh0KQpAQCAtNTg4NiwyMSArNzMzMCwyMSBAQAogCiAJICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwKIAkgICAgIHRlc3QgLXogIiRub25fcGljX29iamVjdCIgfHwKLQkgICAgIHRlc3QgIiRwaWNfb2JqZWN0IiA9IG5vbmUgJiYKLQkgICAgIHRlc3QgIiRub25fcGljX29iamVjdCIgPSBub25lOyB0aGVuCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2Ygb2JqZWN0IGZvciBcYCRhcmcnIgorCSAgICAgdGVzdCBub25lID0gIiRwaWNfb2JqZWN0IiAmJgorCSAgICAgdGVzdCBub25lID0gIiRub25fcGljX29iamVjdCI7IHRoZW4KKwkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBvYmplY3QgZm9yICckYXJnJyIKIAkgIGZpCiAKIAkgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCiAJICBmdW5jX2Rpcm5hbWUgIiRhcmciICIvIiAiIgotCSAgeGRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJICB4ZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAKLQkgIGlmIHRlc3QgIiRwaWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCisJICB0ZXN0IG5vbmUgPSAiJHBpY19vYmplY3QiIHx8IHsKIAkgICAgIyBQcmVwZW5kIHRoZSBzdWJkaXJlY3RvcnkgdGhlIG9iamVjdCBpcyBmb3VuZCBpbi4KLQkgICAgcGljX29iamVjdD0iJHhkaXIkcGljX29iamVjdCIKKwkgICAgcGljX29iamVjdD0keGRpciRwaWNfb2JqZWN0CiAKLQkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgotCSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KKwkgICAgaWYgdGVzdCBkbGZpbGVzID0gIiRwcmV2IjsgdGhlbgorCSAgICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiICYmIHRlc3QgeWVzID0gIiRkbG9wZW5fc3VwcG9ydCI7IHRoZW4KIAkJZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgogCQlwcmV2PQogCQljb250aW51ZQpAQCAtNTkxMSw3ICs3MzU1LDcgQEAKIAkgICAgZmkKIAogCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQotCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisJICAgIGlmIHRlc3QgZGxwcmVmaWxlcyA9ICIkcHJldiI7IHRoZW4KIAkgICAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCiAJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgogCSAgICAgIHByZXY9CkBAIC01OTE5LDIzICs3MzYzLDIzIEBACiAKIAkgICAgIyBBIFBJQyBvYmplY3QuCiAJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkcGljX29iamVjdCIKLQkgICAgYXJnPSIkcGljX29iamVjdCIKLQkgIGZpCisJICAgIGFyZz0kcGljX29iamVjdAorCSAgfQogCiAJICAjIE5vbi1QSUMgb2JqZWN0LgotCSAgaWYgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCisJICBpZiB0ZXN0IG5vbmUgIT0gIiRub25fcGljX29iamVjdCI7IHRoZW4KIAkgICAgIyBQcmVwZW5kIHRoZSBzdWJkaXJlY3RvcnkgdGhlIG9iamVjdCBpcyBmb3VuZCBpbi4KLQkgICAgbm9uX3BpY19vYmplY3Q9IiR4ZGlyJG5vbl9waWNfb2JqZWN0IgorCSAgICBub25fcGljX29iamVjdD0keGRpciRub25fcGljX29iamVjdAogCiAJICAgICMgQSBzdGFuZGFyZCBub24tUElDIG9iamVjdAogCSAgICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCi0JICAgIGlmIHRlc3QgLXogIiRwaWNfb2JqZWN0IiB8fCB0ZXN0ICIkcGljX29iamVjdCIgPSBub25lIDsgdGhlbgotCSAgICAgIGFyZz0iJG5vbl9waWNfb2JqZWN0IgorCSAgICBpZiB0ZXN0IC16ICIkcGljX29iamVjdCIgfHwgdGVzdCBub25lID0gIiRwaWNfb2JqZWN0IjsgdGhlbgorCSAgICAgIGFyZz0kbm9uX3BpY19vYmplY3QKIAkgICAgZmkKIAkgIGVsc2UKIAkgICAgIyBJZiB0aGUgUElDIG9iamVjdCBleGlzdHMsIHVzZSBpdCBpbnN0ZWFkLgogCSAgICAjICR4ZGlyIHdhcyBwcmVwZW5kZWQgdG8gJHBpY19vYmplY3QgYWJvdmUuCi0JICAgIG5vbl9waWNfb2JqZWN0PSIkcGljX29iamVjdCIKKwkgICAgbm9uX3BpY19vYmplY3Q9JHBpY19vYmplY3QKIAkgICAgZnVuY19hcHBlbmQgbm9uX3BpY19vYmplY3RzICIgJG5vbl9waWNfb2JqZWN0IgogCSAgZmkKIAllbHNlCkBAIC01OTQzLDcgKzczODcsNyBAQAogCSAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCiAJICAgICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCiAJICAgIGZ1bmNfZGlybmFtZSAiJGFyZyIgIi8iICIiCi0JICAgIHhkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorCSAgICB4ZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAKIAkgICAgZnVuY19sbzJvICIkYXJnIgogCSAgICBwaWNfb2JqZWN0PSR4ZGlyJG9iamRpci8kZnVuY19sbzJvX3Jlc3VsdApAQCAtNTk1MSw3ICs3Mzk1LDcgQEAKIAkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRwaWNfb2JqZWN0IgogCSAgICBmdW5jX2FwcGVuZCBub25fcGljX29iamVjdHMgIiAkbm9uX3BpY19vYmplY3QiCiAJICBlbHNlCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGFyZycgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBvYmplY3QiCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIickYXJnJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIG9iamVjdCIKIAkgIGZpCiAJZmkKIAk7OwpAQCAtNTk2NywxMSArNzQxMSwxMSBAQAogCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KIAogCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkYXJnIgotCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KKwlpZiB0ZXN0IGRsZmlsZXMgPSAiJHByZXYiOyB0aGVuCiAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KIAkgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgcHJldj0KLQllbGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKwllbGlmIHRlc3QgZGxwcmVmaWxlcyA9ICIkcHJldiI7IHRoZW4KIAkgICMgVGhlIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCiAJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIHByZXY9CkBAIC01OTg2LDcgKzc0MzAsNyBAQAogCSMgVW5rbm93biBhcmd1bWVudHMgaW4gYm90aCBmaW5hbGl6ZV9jb21tYW5kIGFuZCBjb21waWxlX2NvbW1hbmQgbmVlZAogCSMgdG8gYmUgYWVzdGhldGljYWxseSBxdW90ZWQgYmVjYXVzZSB0aGV5IGFyZSBldmFsZWQgbGF0ZXIuCiAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLQlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKwlhcmc9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0CiAJOzsKICAgICAgIGVzYWMgIyBhcmcKIApAQCAtNTk5OCw5ICs3NDQyLDkgQEAKICAgICBkb25lICMgYXJndW1lbnQgcGFyc2luZyBsb29wCiAKICAgICB0ZXN0IC1uICIkcHJldiIgJiYgXAotICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgorICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgJyRwcmV2YXJnJyBvcHRpb24gcmVxdWlyZXMgYW4gYXJndW1lbnQiCiAKLSAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJGV4cG9ydF9keW5hbWljIiAmJiB0ZXN0IC1uICIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIjsgdGhlbgogICAgICAgZXZhbCBhcmc9XCIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjXCIKICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCiAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKQEAgLTYwMDksMjAgKzc0NTMsMjMgQEAKICAgICBvbGRsaWJzPQogICAgICMgY2FsY3VsYXRlIHRoZSBuYW1lIG9mIHRoZSBmaWxlLCB3aXRob3V0IGl0cyBkaXJlY3RvcnkKICAgICBmdW5jX2Jhc2VuYW1lICIkb3V0cHV0IgotICAgIG91dHB1dG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLSAgICBsaWJvYmpzX3NhdmU9IiRsaWJvYmpzIgorICAgIG91dHB1dG5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisgICAgbGlib2Jqc19zYXZlPSRsaWJvYmpzCiAKICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KICAgICAgICMgZ2V0IHRoZSBkaXJlY3RvcmllcyBsaXN0ZWQgaW4gJHNobGlicGF0aF92YXIKLSAgICAgIGV2YWwgc2hsaWJfc2VhcmNoX3BhdGg9XGBcJEVDSE8gXCJcJHskc2hsaWJwYXRoX3Zhcn1cIiBcfCBcJFNFRCBcJ3MvOi8gL2dcJ1xgCisgICAgICBldmFsIHNobGliX3NlYXJjaF9wYXRoPVxgXCRFQ0hPIFwiXCQkc2hsaWJwYXRoX3ZhclwiIFx8IFwkU0VEIFwncy86LyAvZ1wnXGAKICAgICBlbHNlCiAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KICAgICBmaQogICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgogICAgIGV2YWwgc3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIKIAorICAgICMgRGVmaW5pdGlvbiBpcyBpbmplY3RlZCBieSBMVF9DT05GSUcgZHVyaW5nIGxpYnRvb2wgZ2VuZXJhdGlvbi4KKyAgICBmdW5jX211bmdlX3BhdGhfbGlzdCBzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiRMVF9TWVNfTElCUkFSWV9QQVRIIgorCiAgICAgZnVuY19kaXJuYW1lICIkb3V0cHV0IiAiLyIgIiIKLSAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCisgICAgb3V0cHV0X29iamRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIKICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvIgogICAgIHRvb2xfb3V0cHV0X29iamRpcj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CiAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCkBAIC02MDQ1LDcgKzc0OTIsNyBAQAogICAgICMgRmluZCBhbGwgaW50ZXJkZXBlbmRlbnQgZGVwbGlicyBieSBzZWFyY2hpbmcgZm9yIGxpYnJhcmllcwogICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQogICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCi0gICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwczsgdGhlbgogCWNhc2UgIiRsaWJzICIgaW4KIAkqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwpAQCAtNjA1Myw3ICs3NTAwLDcgQEAKICAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgogICAgIGRvbmUKIAotICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KKyAgICBpZiB0ZXN0IGxpYiA9ICIkbGlua21vZGUiOyB0aGVuCiAgICAgICBsaWJzPSIkcHJlZGVwcyAkbGlicyAkY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoICRwb3N0ZGVwcyIKIAogICAgICAgIyBDb21wdXRlIGxpYnJhcmllcyB0aGF0IGFyZSBsaXN0ZWQgbW9yZSB0aGFuIG9uY2UgaW4gJHByZWRlcHMKQEAgLTYwODUsNyArNzUzMiw3IEBACiAJICBjYXNlICRmaWxlIGluCiAJICAqLmxhKSA7OwogCSAgKikKLQkgICAgZnVuY19mYXRhbF9oZWxwICJsaWJyYXJpZXMgY2FuIFxgLWRsb3Blbicgb25seSBsaWJ0b29sIGxpYnJhcmllczogJGZpbGUiCisJICAgIGZ1bmNfZmF0YWxfaGVscCAibGlicmFyaWVzIGNhbiAnLWRsb3Blbicgb25seSBsaWJ0b29sIGxpYnJhcmllczogJGZpbGUiCiAJICAgIDs7CiAJICBlc2FjCiAJZG9uZQpAQCAtNjA5Myw3ICs3NTQwLDcgQEAKICAgICBwcm9nKQogCWNvbXBpbGVfZGVwbGlicz0KIAlmaW5hbGl6ZV9kZXBsaWJzPQotCWFsbGRlcGxpYnM9bm8KKwlhbGxkZXBsaWJzPWZhbHNlCiAJbmV3ZGxmaWxlcz0KIAluZXdkbHByZWZpbGVzPQogCXBhc3Nlcz0iY29udiBzY2FuIGRsb3BlbiBkbHByZW9wZW4gbGluayIKQEAgLTYxMDUsMzIgKzc1NTIsMzIgQEAKICAgICBmb3IgcGFzcyBpbiAkcGFzc2VzOyBkbwogICAgICAgIyBUaGUgcHJlb3BlbiBwYXNzIGluIGxpYiBtb2RlIHJldmVyc2VzICRkZXBsaWJzOyBwdXQgaXQgYmFjayBoZXJlCiAgICAgICAjIHNvIHRoYXQgLUwgY29tZXMgYmVmb3JlIGxpYnMgdGhhdCBuZWVkIGl0IGZvciBpbnN0YW5jZS4uLgotICAgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayI7IHRoZW4KKyAgICAgIGlmIHRlc3QgbGliLGxpbmsgPSAiJGxpbmttb2RlLCRwYXNzIjsgdGhlbgogCSMjIEZJWE1FOiBGaW5kIHRoZSBwbGFjZSB3aGVyZSB0aGUgbGlzdCBpcyByZWJ1aWx0IGluIHRoZSB3cm9uZwogCSMjICAgICAgICBvcmRlciwgYW5kIGZpeCBpdCB0aGVyZSBwcm9wZXJseQogICAgICAgICB0bXBfZGVwbGlicz0KIAlmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwogCSAgdG1wX2RlcGxpYnM9IiRkZXBsaWIgJHRtcF9kZXBsaWJzIgogCWRvbmUKLQlkZXBsaWJzPSIkdG1wX2RlcGxpYnMiCisJZGVwbGlicz0kdG1wX2RlcGxpYnMKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8Ci0JIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIjsgdGhlbgotCWxpYnM9IiRkZXBsaWJzIgorICAgICAgaWYgdGVzdCBsaWIsbGluayA9ICIkbGlua21vZGUsJHBhc3MiIHx8CisJIHRlc3QgcHJvZyxzY2FuID0gIiRsaW5rbW9kZSwkcGFzcyI7IHRoZW4KKwlsaWJzPSRkZXBsaWJzCiAJZGVwbGlicz0KICAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorICAgICAgaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSI7IHRoZW4KIAljYXNlICRwYXNzIGluCi0JZGxvcGVuKSBsaWJzPSIkZGxmaWxlcyIgOzsKLQlkbHByZW9wZW4pIGxpYnM9IiRkbHByZWZpbGVzIiA7OworCWRsb3BlbikgbGlicz0kZGxmaWxlcyA7OworCWRscHJlb3BlbikgbGlicz0kZGxwcmVmaWxlcyA7OwogCWxpbmspCiAJICBsaWJzPSIkZGVwbGlicyAlREVQTElCUyUiCiAJICB0ZXN0ICJYJGxpbmtfYWxsX2RlcGxpYnMiICE9IFhubyAmJiBsaWJzPSIkbGlicyAkZGVwZW5kZW5jeV9saWJzIgogCSAgOzsKIAllc2FjCiAgICAgICBmaQotICAgICAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsZGxwcmVvcGVuIjsgdGhlbgorICAgICAgaWYgdGVzdCBsaWIsZGxwcmVvcGVuID0gIiRsaW5rbW9kZSwkcGFzcyI7IHRoZW4KIAkjIENvbGxlY3QgYW5kIGZvcndhcmQgZGVwbGlicyBvZiBwcmVvcGVuZWQgbGlidG9vbCBsaWJzCiAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KIAkgICMgSWdub3JlIG5vbi1saWJ0b29sLWxpYnMKQEAgLTYxNTEsMjYgKzc1OTgsMjYgQEAKIAkgICAgZXNhYwogCSAgZG9uZQogCWRvbmUKLQlsaWJzPSIkZGxwcmVmaWxlcyIKKwlsaWJzPSRkbHByZWZpbGVzCiAgICAgICBmaQotICAgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxvcGVuOyB0aGVuCisgICAgICBpZiB0ZXN0IGRsb3BlbiA9ICIkcGFzcyI7IHRoZW4KIAkjIENvbGxlY3QgZGxwcmVvcGVuZWQgbGlicmFyaWVzCi0Jc2F2ZV9kZXBsaWJzPSIkZGVwbGlicyIKKwlzYXZlX2RlcGxpYnM9JGRlcGxpYnMKIAlkZXBsaWJzPQogICAgICAgZmkKIAogICAgICAgZm9yIGRlcGxpYiBpbiAkbGliczsgZG8KIAlsaWI9Ci0JZm91bmQ9bm8KKwlmb3VuZD1mYWxzZQogCWNhc2UgJGRlcGxpYiBpbgogCS1tdHwtbXRocmVhZHN8LWt0aHJlYWR8LUt0aHJlYWR8LXB0aHJlYWR8LXB0aHJlYWRzfC0tdGhyZWFkLXNhZmUgXAogICAgICAgICB8LXRocmVhZHN8LWZvcGVubXB8LW9wZW5tcHwtbXB8LXhvcGVubXB8LW9tcHwtcXNtcD0qKQotCSAgaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJwcm9nLGxpbmsiOyB0aGVuCisJICBpZiB0ZXN0IHByb2csbGluayA9ICIkbGlua21vZGUsJHBhc3MiOyB0aGVuCiAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZWxzZQogCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCi0JICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCisJICAgIGlmIHRlc3QgbGliID0gIiRsaW5rbW9kZSI7IHRoZW4KIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KIAkJICAgICoiICRkZXBsaWIgIiopIDs7CiAJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwpAQCAtNjE4MCwxMyArNzYyNywxMyBAQAogCSAgY29udGludWUKIAkgIDs7CiAJLWwqKQotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWIgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nOyB0aGVuCi0JICAgIGZ1bmNfd2FybmluZyAiXGAtbCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKKwkgIGlmIHRlc3QgbGliICE9ICIkbGlua21vZGUiICYmIHRlc3QgcHJvZyAhPSAiJGxpbmttb2RlIjsgdGhlbgorCSAgICBmdW5jX3dhcm5pbmcgIictbCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKIAkgICAgY29udGludWUKIAkgIGZpCiAJICBmdW5jX3N0cmlwbmFtZSAnLWwnICcnICIkZGVwbGliIgogCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCisJICBpZiB0ZXN0IGxpYiA9ICIkbGlua21vZGUiOyB0aGVuCiAJICAgIHNlYXJjaGRpcnM9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGxpYl9zZWFyY2hfcGF0aCAkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aCIKIAkgIGVsc2UKIAkgICAgc2VhcmNoZGlycz0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aCIKQEAgLTYxOTQsMzEgKzc2NDEsMjIgQEAKIAkgIGZvciBzZWFyY2hkaXIgaW4gJHNlYXJjaGRpcnM7IGRvCiAJICAgIGZvciBzZWFyY2hfZXh0IGluIC5sYSAkc3RkX3NocmV4dCAuc28gLmE7IGRvCiAJICAgICAgIyBTZWFyY2ggdGhlIGxpYnRvb2wgbGlicmFyeQotCSAgICAgIGxpYj0iJHNlYXJjaGRpci9saWIke25hbWV9JHtzZWFyY2hfZXh0fSIKKwkgICAgICBsaWI9JHNlYXJjaGRpci9saWIkbmFtZSRzZWFyY2hfZXh0CiAJICAgICAgaWYgdGVzdCAtZiAiJGxpYiI7IHRoZW4KLQkJaWYgdGVzdCAiJHNlYXJjaF9leHQiID0gIi5sYSI7IHRoZW4KLQkJICBmb3VuZD15ZXMKKwkJaWYgdGVzdCAubGEgPSAiJHNlYXJjaF9leHQiOyB0aGVuCisJCSAgZm91bmQ9OgogCQllbHNlCi0JCSAgZm91bmQ9bm8KKwkJICBmb3VuZD1mYWxzZQogCQlmaQogCQlicmVhayAyCiAJICAgICAgZmkKIAkgICAgZG9uZQogCSAgZG9uZQotCSAgaWYgdGVzdCAiJGZvdW5kIiAhPSB5ZXM7IHRoZW4KLQkgICAgIyBkZXBsaWIgZG9lc24ndCBzZWVtIHRvIGJlIGEgbGlidG9vbCBsaWJyYXJ5Ci0JICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgotCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgotCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0JICAgIGVsc2UKLQkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCSAgICAgIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0JICAgIGZpCi0JICAgIGNvbnRpbnVlCi0JICBlbHNlICMgZGVwbGliIGlzIGEgbGlidG9vbCBsaWJyYXJ5CisJICBpZiAkZm91bmQ7IHRoZW4KKwkgICAgIyBkZXBsaWIgaXMgYSBsaWJ0b29sIGxpYnJhcnkKIAkgICAgIyBJZiAkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzICYmICRkZXBsaWIgaXMgYSBzdGRsaWIsCiAJICAgICMgV2UgbmVlZCB0byBkbyBzb21lIHNwZWNpYWwgdGhpbmdzIGhlcmUsIGFuZCBub3QgbGF0ZXIuCi0JICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKwkgICAgaWYgdGVzdCB5ZXMgPSAiJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyI7IHRoZW4KIAkgICAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKQogCQlpZiBmdW5jX2xhbGliX3AgIiRsaWIiOyB0aGVuCkBAIC02MjI2LDE5ICs3NjY0LDE5IEBACiAJCSAgb2xkX2xpYnJhcnk9CiAJCSAgZnVuY19zb3VyY2UgIiRsaWIiCiAJCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotCQkgICAgbGw9IiRsIgorCQkgICAgbGw9JGwKIAkJICBkb25lCi0JCSAgaWYgdGVzdCAiWCRsbCIgPSAiWCRvbGRfbGlicmFyeSIgOyB0aGVuICMgb25seSBzdGF0aWMgdmVyc2lvbiBhdmFpbGFibGUKLQkJICAgIGZvdW5kPW5vCisJCSAgaWYgdGVzdCAiWCRsbCIgPSAiWCRvbGRfbGlicmFyeSI7IHRoZW4gIyBvbmx5IHN0YXRpYyB2ZXJzaW9uIGF2YWlsYWJsZQorCQkgICAgZm91bmQ9ZmFsc2UKIAkJICAgIGZ1bmNfZGlybmFtZSAiJGxpYiIgIiIgIi4iCi0JCSAgICBsYWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCisJCSAgICBsYWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAogCQkgICAgbGliPSRsYWRpci8kb2xkX2xpYnJhcnkKLQkJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgorCQkgICAgaWYgdGVzdCBwcm9nLGxpbmsgPSAiJGxpbmttb2RlLCRwYXNzIjsgdGhlbgogCQkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkJICAgIGVsc2UKIAkJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkJICAgICAgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKwkJICAgICAgdGVzdCBsaWIgPSAiJGxpbmttb2RlIiAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKIAkJICAgIGZpCiAJCSAgICBjb250aW51ZQogCQkgIGZpCkBAIC02MjQ3LDE1ICs3Njg1LDI1IEBACiAJICAgICAgKikgOzsKIAkgICAgICBlc2FjCiAJICAgIGZpCisJICBlbHNlCisJICAgICMgZGVwbGliIGRvZXNuJ3Qgc2VlbSB0byBiZSBhIGxpYnRvb2wgbGlicmFyeQorCSAgICBpZiB0ZXN0IHByb2csbGluayA9ICIkbGlua21vZGUsJHBhc3MiOyB0aGVuCisJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCisJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKwkgICAgZWxzZQorCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisJICAgICAgdGVzdCBsaWIgPSAiJGxpbmttb2RlIiAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKwkgICAgZmkKKwkgICAgY29udGludWUKIAkgIGZpCiAJICA7OyAjIC1sCiAJKi5sdGZyYW1ld29yaykKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgorCSAgaWYgdGVzdCBwcm9nLGxpbmsgPSAiJGxpbmttb2RlLCRwYXNzIjsgdGhlbgogCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKIAkgIGVsc2UKIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKwkgICAgaWYgdGVzdCBsaWIgPSAiJGxpbmttb2RlIjsgdGhlbgogCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgogCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKIAkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CkBAIC02MjY4LDE4ICs3NzE2LDE4IEBACiAJICBjYXNlICRsaW5rbW9kZSBpbgogCSAgbGliKQogCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCisJICAgIHRlc3QgY29udiA9ICIkcGFzcyIgJiYgY29udGludWUKIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCiAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCiAJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgogCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgogCSAgICA7OwogCSAgcHJvZykKLQkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorCSAgICBpZiB0ZXN0IGNvbnYgPSAiJHBhc3MiOyB0aGVuCiAJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgICAgICBjb250aW51ZQogCSAgICBmaQotCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBzY2FuOyB0aGVuCisJICAgIGlmIHRlc3Qgc2NhbiA9ICIkcGFzcyI7IHRoZW4KIAkgICAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCSAgICBlbHNlCiAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCkBAIC02MjkwLDEzICs3NzM4LDEzIEBACiAJICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCiAJICAgIDs7CiAJICAqKQotCSAgICBmdW5jX3dhcm5pbmcgIlxgLUwnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzL29iamVjdHMiCisJICAgIGZ1bmNfd2FybmluZyAiJy1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgogCSAgICA7OwogCSAgZXNhYyAjIGxpbmttb2RlCiAJICBjb250aW51ZQogCSAgOzsgIyAtTAogCS1SKikKLQkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKwkgIGlmIHRlc3QgbGluayA9ICIkcGFzcyI7IHRoZW4KIAkgICAgZnVuY19zdHJpcG5hbWUgJy1SJyAnJyAiJGRlcGxpYiIKIAkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCiAJICAgIGRpcj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CkBAIC02MzE0LDcgKzc3NjIsNyBAQAogCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKIAkgIDs7CiAJKi4kbGliZXh0KQotCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorCSAgaWYgdGVzdCBjb252ID0gIiRwYXNzIjsgdGhlbgogCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCSAgICBjb250aW51ZQogCSAgZmkKQEAgLTYzMjUsMjEgKzc3NzMsMjYgQEAKIAkgICAgY2FzZSAiICRkbHByZWNvbnZlbmllbmNlbGlicyAiIGluCiAJICAgICoiICRkZXBsaWIgIiopIDs7CiAJICAgICopCi0JICAgICAgdmFsaWRfYV9saWI9bm8KKwkgICAgICB2YWxpZF9hX2xpYj1mYWxzZQogCSAgICAgIGNhc2UgJGRlcGxpYnNfY2hlY2tfbWV0aG9kIGluCiAJCW1hdGNoX3BhdHRlcm4qKQogCQkgIHNldCBkdW1teSAkZGVwbGlic19jaGVja19tZXRob2Q7IHNoaWZ0CiAJCSAgbWF0Y2hfcGF0dGVybl9yZWdleD1gZXhwciAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiA6ICIkMSBcKC4qXCkiYAogCQkgIGlmIGV2YWwgIlwkRUNITyBcIiRkZXBsaWJcIiIgMj4vZGV2L251bGwgfCAkU0VEIDEwcSBcCiAJCSAgICB8ICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0JCSAgICB2YWxpZF9hX2xpYj15ZXMKKwkJICAgIHZhbGlkX2FfbGliPToKIAkJICBmaQogCQk7OwogCQlwYXNzX2FsbCkKLQkJICB2YWxpZF9hX2xpYj15ZXMKKwkJICB2YWxpZF9hX2xpYj06CiAJCTs7CiAJICAgICAgZXNhYwotCSAgICAgIGlmIHRlc3QgIiR2YWxpZF9hX2xpYiIgIT0geWVzOyB0aGVuCisJICAgICAgaWYgJHZhbGlkX2FfbGliOyB0aGVuCisJCWVjaG8KKwkJJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIgorCQkkRUNITyAiKioqIHN0YXRpYyBsaWJyYXJ5ICRkZXBsaWIgaXMgbm90IHBvcnRhYmxlISIKKwkJZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKKwkgICAgICBlbHNlCiAJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBUcnlpbmcgdG8gbGluayB3aXRoIHN0YXRpYyBsaWIgYXJjaGl2ZSAkZGVwbGliLiIKIAkJZWNobyAiKioqIEkgaGF2ZSB0aGUgY2FwYWJpbGl0eSB0byBtYWtlIHRoYXQgbGlicmFyeSBhdXRvbWF0aWNhbGx5IGxpbmsgaW4gd2hlbiIKQEAgLTYzNDcsMTggKzc4MDAsMTMgQEAKIAkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgogCQllY2hvICIqKiogYmVjYXVzZSB0aGUgZmlsZSBleHRlbnNpb25zIC4kbGliZXh0IG9mIHRoaXMgYXJndW1lbnQgbWFrZXMgbWUgYmVsaWV2ZSIKIAkJZWNobyAiKioqIHRoYXQgaXQgaXMganVzdCBhIHN0YXRpYyBhcmNoaXZlIHRoYXQgSSBzaG91bGQgbm90IHVzZSBoZXJlLiIKLQkgICAgICBlbHNlCi0JCWVjaG8KLQkJJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIgotCQkkRUNITyAiKioqIHN0YXRpYyBsaWJyYXJ5ICRkZXBsaWIgaXMgbm90IHBvcnRhYmxlISIKLQkJZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgICAgICBmaQogCSAgICAgIDs7CiAJICAgIGVzYWMKIAkgICAgY29udGludWUKIAkgICAgOzsKIAkgIHByb2cpCi0JICAgIGlmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCisJICAgIGlmIHRlc3QgbGluayAhPSAiJHBhc3MiOyB0aGVuCiAJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKIAkgICAgZWxzZQogCSAgICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgpAQCAtNjM2OSwxMCArNzgxNywxMCBAQAogCSAgZXNhYyAjIGxpbmttb2RlCiAJICA7OyAjICouJGxpYmV4dAogCSoubG8gfCAqLiRvYmpleHQpCi0JICBpZiB0ZXN0ICIkcGFzcyIgPSBjb252OyB0aGVuCisJICBpZiB0ZXN0IGNvbnYgPSAiJHBhc3MiOyB0aGVuCiAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi0JICBlbGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi0JICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbiB8fCB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG5vOyB0aGVuCisJICBlbGlmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiOyB0aGVuCisJICAgIGlmIHRlc3QgZGxwcmVvcGVuID0gIiRwYXNzIiB8fCB0ZXN0IHllcyAhPSAiJGRsb3Blbl9zdXBwb3J0IiB8fCB0ZXN0IG5vID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCiAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCiAJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkZXBsaWIiCkBAIC02Mzg1LDIyICs3ODMzLDIwIEBACiAJICBjb250aW51ZQogCSAgOzsKIAklREVQTElCUyUpCi0JICBhbGxkZXBsaWJzPXllcworCSAgYWxsZGVwbGlicz06CiAJICBjb250aW51ZQogCSAgOzsKIAllc2FjICMgY2FzZSAkZGVwbGliCiAKLQlpZiB0ZXN0ICIkZm91bmQiID0geWVzIHx8IHRlc3QgLWYgIiRsaWIiOyB0aGVuIDoKLQllbHNlCi0JICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCB0aGUgbGlicmFyeSBcYCRsaWInIG9yIHVuaGFuZGxlZCBhcmd1bWVudCBcYCRkZXBsaWInIgotCWZpCisJJGZvdW5kIHx8IHRlc3QgLWYgIiRsaWIiIFwKKwkgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIHRoZSBsaWJyYXJ5ICckbGliJyBvciB1bmhhbmRsZWQgYXJndW1lbnQgJyRkZXBsaWInIgogCiAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkbGliIiBcCi0JICB8fCBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKwkgIHx8IGZ1bmNfZmF0YWxfZXJyb3IgIickbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCiAKIAlmdW5jX2Rpcm5hbWUgIiRsaWIiICIiICIuIgotCWxhZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKwlsYWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAogCiAJZGxuYW1lPQogCWRsb3Blbj0KQEAgLTY0MzAsMTkgKzc4NzYsMTkgQEAKIAkgIGRvbmUKIAlmaQogCWRlcGVuZGVuY3lfbGlicz1gJEVDSE8gIiAkZGVwZW5kZW5jeV9saWJzIiB8ICRTRUQgJ3MlIFwoW14gJF0qXCkubHRmcmFtZXdvcmslIC1mcmFtZXdvcmsgXDElZydgCi0JaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiA9ICJsaWIsbGluayIgfHwKLQkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKLQkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgorCWlmIHRlc3QgbGliLGxpbmsgPSAiJGxpbmttb2RlLCRwYXNzIiB8fAorCSAgIHRlc3QgcHJvZyxzY2FuID0gIiRsaW5rbW9kZSwkcGFzcyIgfHwKKwkgICB7IHRlc3QgcHJvZyAhPSAiJGxpbmttb2RlIiAmJiB0ZXN0IGxpYiAhPSAiJGxpbmttb2RlIjsgfTsgdGhlbgogCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCiAJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKIAlmaQogCi0JaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorCWlmIHRlc3QgY29udiA9ICIkcGFzcyI7IHRoZW4KIAkgICMgT25seSBjaGVjayBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzCiAJICBkZXBsaWJzPSIkbGliICRkZXBsaWJzIgogCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KIAkgICAgaWYgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgorCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciAnJGxpYiciCiAJICAgIGZpCiAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KIAkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCkBAIC02NDUwLDE1ICs3ODk2LDE1IEBACiAJICAgIHRtcF9saWJzPQogCSAgICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCiAJICAgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKLQkgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorCSAgICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHM7IHRoZW4KIAkJY2FzZSAiJHRtcF9saWJzICIgaW4KIAkJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwogCQllc2FjCiAJICAgICAgZmkKIAkgICAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCiAJICAgIGRvbmUKLQkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKKwkgIGVsaWYgdGVzdCBwcm9nICE9ICIkbGlua21vZGUiICYmIHRlc3QgbGliICE9ICIkbGlua21vZGUiOyB0aGVuCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIickbGliJyBpcyBub3QgYSBjb252ZW5pZW5jZSBsaWJyYXJ5IgogCSAgZmkKIAkgIGNvbnRpbnVlCiAJZmkgIyAkcGFzcyA9IGNvbnYKQEAgLTY0NjcsMjYgKzc5MTMsMjYgQEAKIAkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCiAJbGlua2xpYj0KIAlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCi0JICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAotCSAgICAgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIiA9ICJidWlsdCxubyI7IH07IHRoZW4KKwkgICB7IHRlc3QgeWVzID0gIiRwcmVmZXJfc3RhdGljX2xpYnMiIHx8CisJICAgICB0ZXN0IGJ1aWx0LG5vID0gIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCI7IH07IHRoZW4KIAkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5CiAJZWxzZQogCSAgZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbwotCSAgICBsaW5rbGliPSIkbCIKKwkgICAgbGlua2xpYj0kbAogCSAgZG9uZQogCWZpCiAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCi0JICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBuYW1lIG9mIGxpbmsgbGlicmFyeSBmb3IgXGAkbGliJyIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciAnJGxpYiciCiAJZmkKIAogCSMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgotCWlmIHRlc3QgIiRwYXNzIiA9IGRsb3BlbjsgdGhlbgotCSAgaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLQkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IC1kbG9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgotCSAgZmkKKwlpZiB0ZXN0IGRsb3BlbiA9ICIkcGFzcyI7IHRoZW4KKwkgIHRlc3QgLXogIiRsaWJkaXIiIFwKKwkgICAgJiYgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IC1kbG9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiAnJGxpYiciCiAJICBpZiB0ZXN0IC16ICIkZGxuYW1lIiB8fAotCSAgICAgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwKLQkgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KKwkgICAgIHRlc3QgeWVzICE9ICIkZGxvcGVuX3N1cHBvcnQiIHx8CisJICAgICB0ZXN0IG5vID0gIiRidWlsZF9saWJ0b29sX2xpYnMiCisJICB0aGVuCiAJICAgICMgSWYgdGhlcmUgaXMgbm8gZGxuYW1lLCBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nCiAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55CiAJICAgICMgZGVwZW5kZW50IGxpYnJhcmllcyBzbyBsaWJsdGRsJ3MgZGVwbGliIHByZWxvYWRlciBkb2Vzbid0CkBAIC02NTAwLDQwICs3OTQ2LDQwIEBACiAKIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KIAljYXNlICRsYWRpciBpbgotCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzX2xhZGlyPSIkbGFkaXIiIDs7CisJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNfbGFkaXI9JGxhZGlyIDs7CiAJKikKIAkgIGFic19sYWRpcj1gY2QgIiRsYWRpciIgJiYgcHdkYAogCSAgaWYgdGVzdCAteiAiJGFic19sYWRpciI7IHRoZW4KLQkgICAgZnVuY193YXJuaW5nICJjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mIFxgJGxhZGlyJyIKKwkgICAgZnVuY193YXJuaW5nICJjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mICckbGFkaXInIgogCSAgICBmdW5jX3dhcm5pbmcgInBhc3NpbmcgaXQgbGl0ZXJhbGx5IHRvIHRoZSBsaW5rZXIsIGFsdGhvdWdoIGl0IG1pZ2h0IGZhaWwiCi0JICAgIGFic19sYWRpcj0iJGxhZGlyIgorCSAgICBhYnNfbGFkaXI9JGxhZGlyCiAJICBmaQogCSAgOzsKIAllc2FjCiAJZnVuY19iYXNlbmFtZSAiJGxpYiIKLQlsYW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwlsYW5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CiAKIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KLQlpZiB0ZXN0ICJYJGluc3RhbGxlZCIgPSBYeWVzOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJGluc3RhbGxlZCI7IHRoZW4KIAkgIGlmIHRlc3QgISAtZiAiJGx0X3N5c3Jvb3QkbGliZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgotCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgotCSAgICBkaXI9IiRsYWRpciIKLQkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgotCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSAnJGxpYicgd2FzIG1vdmVkLiIKKwkgICAgZGlyPSRsYWRpcgorCSAgICBhYnNkaXI9JGFic19sYWRpcgorCSAgICBsaWJkaXI9JGFic19sYWRpcgogCSAgZWxzZQotCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKLQkgICAgYWJzZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCisJICAgIGRpcj0kbHRfc3lzcm9vdCRsaWJkaXIKKwkgICAgYWJzZGlyPSRsdF9zeXNyb290JGxpYmRpcgogCSAgZmkKLQkgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9IFh5ZXMgJiYgYXZvaWR0ZW1wcnBhdGg9eWVzCisJICB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfYXV0b21hdGljIiAmJiBhdm9pZHRlbXBycGF0aD15ZXMKIAllbHNlCiAJICBpZiB0ZXN0ICEgLWYgIiRsYWRpci8kb2JqZGlyLyRsaW5rbGliIiAmJiB0ZXN0IC1mICIkYWJzX2xhZGlyLyRsaW5rbGliIjsgdGhlbgotCSAgICBkaXI9IiRsYWRpciIKLQkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgorCSAgICBkaXI9JGxhZGlyCisJICAgIGFic2Rpcj0kYWJzX2xhZGlyCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKIAkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKIAkgIGVsc2UKLQkgICAgZGlyPSIkbGFkaXIvJG9iamRpciIKLQkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCisJICAgIGRpcj0kbGFkaXIvJG9iamRpcgorCSAgICBhYnNkaXI9JGFic19sYWRpci8kb2JqZGlyCiAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKIAkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKIAkgIGZpCkBAIC02NTQyLDExICs3OTg4LDExIEBACiAJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CiAKIAkjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KLQlpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW47IHRoZW4KLQkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi0JICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogXGAkbGliJyIKKwlpZiB0ZXN0IGRscHJlb3BlbiA9ICIkcGFzcyI7IHRoZW4KKwkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiOyB0aGVuCisJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgbGlicmFyaWVzIG1heSAtZGxwcmVvcGVuIGEgY29udmVuaWVuY2UgbGlicmFyeTogJyRsaWInIgogCSAgZmkKLQkgIGNhc2UgIiRob3N0IiBpbgorCSAgY2FzZSAkaG9zdCBpbgogCSAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHBsYXRmb3JtcyB3aXRoIFBFLURMTHMuCiAJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQogCSAgICAgICMgTGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBsaW5rIGFnYWluc3Qgc2hhcmVkIGxpYnJhcnkgaWYgYm90aApAQCAtNjU5MCw5ICs4MDM2LDkgQEAKIAogCWlmIHRlc3QgLXogIiRsaWJkaXIiOyB0aGVuCiAJICAjIExpbmsgdGhlIGNvbnZlbmllbmNlIGxpYnJhcnkKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KKwkgIGlmIHRlc3QgbGliID0gIiRsaW5rbW9kZSI7IHRoZW4KIAkgICAgZGVwbGlicz0iJGRpci8kb2xkX2xpYnJhcnkgJGRlcGxpYnMiCi0JICBlbGlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgorCSAgZWxpZiB0ZXN0IHByb2csbGluayA9ICIkbGlua21vZGUsJHBhc3MiOyB0aGVuCiAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRpci8kb2xkX2xpYnJhcnkgJGNvbXBpbGVfZGVwbGlicyIKIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRpci8kb2xkX2xpYnJhcnkgJGZpbmFsaXplX2RlcGxpYnMiCiAJICBlbHNlCkBAIC02NjAyLDE0ICs4MDQ4LDE0IEBACiAJZmkKIAogCi0JaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgJiYgdGVzdCAiJHBhc3MiICE9IGxpbms7IHRoZW4KKwlpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIiAmJiB0ZXN0IGxpbmsgIT0gIiRwYXNzIjsgdGhlbgogCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgogCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKIAotCSAgbGlua2FsbGRlcGxpYnM9bm8KLQkgIGlmIHRlc3QgIiRsaW5rX2FsbF9kZXBsaWJzIiAhPSBubyB8fCB0ZXN0IC16ICIkbGlicmFyeV9uYW1lcyIgfHwKLQkgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KLQkgICAgbGlua2FsbGRlcGxpYnM9eWVzCisJICBsaW5rYWxsZGVwbGlicz1mYWxzZQorCSAgaWYgdGVzdCBubyAhPSAiJGxpbmtfYWxsX2RlcGxpYnMiIHx8IHRlc3QgLXogIiRsaWJyYXJ5X25hbWVzIiB8fAorCSAgICAgdGVzdCBubyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIjsgdGhlbgorCSAgICBsaW5rYWxsZGVwbGlicz06CiAJICBmaQogCiAJICB0bXBfbGlicz0KQEAgLTY2MjEsMTQgKzgwNjcsMTQgQEAKIAkJIDs7CiAJICAgIGVzYWMKIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPwotCSAgICBpZiB0ZXN0ICIkbGlua2FsbGRlcGxpYnMiID0geWVzOyB0aGVuCisJICAgIGlmICRsaW5rYWxsZGVwbGliczsgdGhlbgogCSAgICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCiAJICAgIGVsc2UKIAkgICAgICAjIE5lZWQgdG8gaGFyZGNvZGUgc2hhcmVkIGxpYnJhcnkgcGF0aHMKIAkgICAgICAjIG9yL2FuZCBsaW5rIGFnYWluc3Qgc3RhdGljIGxpYnJhcmllcwogCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgICBmaQotCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzOyB0aGVuCiAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KIAkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CiAJICAgICAgZXNhYwpAQCAtNjYzOCwxNSArODA4NCwxNSBAQAogCSAgY29udGludWUKIAlmaSAjICRsaW5rbW9kZSA9IHByb2cuLi4KIAotCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxsaW5rIjsgdGhlbgorCWlmIHRlc3QgcHJvZyxsaW5rID0gIiRsaW5rbW9kZSwkcGFzcyI7IHRoZW4KIAkgIGlmIHRlc3QgLW4gIiRsaWJyYXJ5X25hbWVzIiAmJgotCSAgICAgeyB7IHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMiID0gbm8gfHwKLQkgICAgICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LHllcyI7IH0gfHwKKwkgICAgIHsgeyB0ZXN0IG5vID0gIiRwcmVmZXJfc3RhdGljX2xpYnMiIHx8CisJICAgICAgICAgdGVzdCBidWlsdCx5ZXMgPSAiJHByZWZlcl9zdGF0aWNfbGlicywkaW5zdGFsbGVkIjsgfSB8fAogCSAgICAgICB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB9OyB0aGVuCiAJICAgICMgV2UgbmVlZCB0byBoYXJkY29kZSB0aGUgbGlicmFyeSBwYXRoCi0JICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC16ICIkYXZvaWR0ZW1wcnBhdGgiIDsgdGhlbgorCSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAteiAiJGF2b2lkdGVtcHJwYXRoIjsgdGhlbgogCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KLQkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCisJICAgICAgY2FzZSAkdGVtcF9ycGF0aDogaW4KIAkgICAgICAqIiRhYnNkaXI6IiopIDs7CiAJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7CiAJICAgICAgZXNhYwpAQCAtNjY3NSw5ICs4MTIxLDkgQEAKIAkgICAgZXNhYwogCSAgZmkgIyAkbGlua21vZGUsJHBhc3MgPSBwcm9nLGxpbmsuLi4KIAotCSAgaWYgdGVzdCAiJGFsbGRlcGxpYnMiID0geWVzICYmCi0JICAgICB7IHRlc3QgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSBwYXNzX2FsbCB8fAotCSAgICAgICB7IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmCisJICBpZiAkYWxsZGVwbGlicyAmJgorCSAgICAgeyB0ZXN0IHBhc3NfYWxsID0gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfHwKKwkgICAgICAgeyB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIiAmJgogCQkgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB9OyB9OyB0aGVuCiAJICAgICMgV2Ugb25seSBuZWVkIHRvIHNlYXJjaCBmb3Igc3RhdGljIGxpYnJhcmllcwogCSAgICBjb250aW51ZQpAQCAtNjY4NiwxOSArODEzMiwxOSBAQAogCiAJbGlua19zdGF0aWM9bm8gIyBXaGV0aGVyIHRoZSBkZXBsaWIgd2lsbCBiZSBsaW5rZWQgc3RhdGljYWxseQogCXVzZV9zdGF0aWNfbGlicz0kcHJlZmVyX3N0YXRpY19saWJzCi0JaWYgdGVzdCAiJHVzZV9zdGF0aWNfbGlicyIgPSBidWlsdCAmJiB0ZXN0ICIkaW5zdGFsbGVkIiA9IHllczsgdGhlbgorCWlmIHRlc3QgYnVpbHQgPSAiJHVzZV9zdGF0aWNfbGlicyIgJiYgdGVzdCB5ZXMgPSAiJGluc3RhbGxlZCI7IHRoZW4KIAkgIHVzZV9zdGF0aWNfbGlicz1ubwogCWZpCiAJaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiICYmCi0JICAgeyB0ZXN0ICIkdXNlX3N0YXRpY19saWJzIiA9IG5vIHx8IHRlc3QgLXogIiRvbGRfbGlicmFyeSI7IH07IHRoZW4KKwkgICB7IHRlc3Qgbm8gPSAiJHVzZV9zdGF0aWNfbGlicyIgfHwgdGVzdCAteiAiJG9sZF9saWJyYXJ5IjsgfTsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgotCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKikKKwkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogfCAqb3MyKikKIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCiAJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz1ubwogCSAgICA7OwogCSAgKikKLQkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgorCSAgICBpZiB0ZXN0IG5vID0gIiRpbnN0YWxsZWQiOyB0aGVuCiAJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKIAkgICAgICBuZWVkX3JlbGluaz15ZXMKIAkgICAgZmkKQEAgLTY3MDgsMjQgKzgxNTQsMjQgQEAKIAogCSAgIyBXYXJuIGFib3V0IHBvcnRhYmlsaXR5LCBjYW4ndCBsaW5rIGFnYWluc3QgLW1vZHVsZSdzIG9uIHNvbWUKIAkgICMgc3lzdGVtcyAoZGFyd2luKS4gIERvbid0IGJsZWF0IGFib3V0IGRsb3BlbmVkIG1vZHVsZXMgdGhvdWdoIQotCSAgZGxvcGVubW9kdWxlPSIiCisJICBkbG9wZW5tb2R1bGU9CiAJICBmb3IgZGxwcmVtb2R1bGV0ZXN0IGluICRkbHByZWZpbGVzOyBkbwogCSAgICBpZiB0ZXN0ICJYJGRscHJlbW9kdWxldGVzdCIgPSAiWCRsaWIiOyB0aGVuCi0JICAgICAgZGxvcGVubW9kdWxlPSIkZGxwcmVtb2R1bGV0ZXN0IgorCSAgICAgIGRsb3Blbm1vZHVsZT0kZGxwcmVtb2R1bGV0ZXN0CiAJICAgICAgYnJlYWsKIAkgICAgZmkKIAkgIGRvbmUKLQkgIGlmIHRlc3QgLXogIiRkbG9wZW5tb2R1bGUiICYmIHRlc3QgIiRzaG91bGRub3RsaW5rIiA9IHllcyAmJiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCisJICBpZiB0ZXN0IC16ICIkZGxvcGVubW9kdWxlIiAmJiB0ZXN0IHllcyA9ICIkc2hvdWxkbm90bGluayIgJiYgdGVzdCBsaW5rID0gIiRwYXNzIjsgdGhlbgogCSAgICBlY2hvCi0JICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisJICAgIGlmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiOyB0aGVuCiAJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBleGVjdXRhYmxlICRvdXRwdXQgYWdhaW5zdCB0aGUgbG9hZGFibGUgbW9kdWxlIgogCSAgICBlbHNlCiAJICAgICAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIGxvYWRhYmxlIG1vZHVsZSIKIAkgICAgZmkKIAkgICAgJEVDSE8gIioqKiAkbGlua2xpYiBpcyBub3QgcG9ydGFibGUhIgogCSAgZmkKLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgJiYKLQkgICAgIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiID0geWVzOyB0aGVuCisJICBpZiB0ZXN0IGxpYiA9ICIkbGlua21vZGUiICYmCisJICAgICB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfaW50b19saWJzIjsgdGhlbgogCSAgICAjIEhhcmRjb2RlIHRoZSBsaWJyYXJ5IHBhdGguCiAJICAgICMgU2tpcCBkaXJlY3RvcmllcyB0aGF0IGFyZSBpbiB0aGUgc3lzdGVtIGRlZmF1bHQgcnVuLXRpbWUKIAkgICAgIyBzZWFyY2ggcGF0aC4KQEAgLTY3NTMsNDMgKzgxOTksNDMgQEAKIAkgICAgIyBmaWd1cmUgb3V0IHRoZSBzb25hbWUKIAkgICAgc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCiAJICAgIHNoaWZ0Ci0JICAgIHJlYWxuYW1lPSIkMSIKKwkgICAgcmVhbG5hbWU9JDEKIAkgICAgc2hpZnQKIAkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCiAJICAgICMgdXNlIGRsbmFtZSBpZiB3ZSBnb3QgaXQuIGl0J3MgcGVyZmVjdGx5IGdvb2QsIG5vPwogCSAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgotCSAgICAgIHNvbmFtZT0iJGRsbmFtZSIKKwkgICAgICBzb25hbWU9JGRsbmFtZQogCSAgICBlbGlmIHRlc3QgLW4gIiRzb25hbWVfc3BlYyI7IHRoZW4KIAkgICAgICAjIGJsZWggd2luZG93cwogCSAgICAgIGNhc2UgJGhvc3QgaW4KLQkgICAgICAqY3lnd2luKiB8IG1pbmd3KiB8ICpjZWdjYyopCisJICAgICAgKmN5Z3dpbiogfCBtaW5ndyogfCAqY2VnY2MqIHwgKm9zMiopCiAJICAgICAgICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQogCQltYWpvcj0kZnVuY19hcml0aF9yZXN1bHQKLQkJdmVyc3VmZml4PSItJG1ham9yIgorCQl2ZXJzdWZmaXg9LSRtYWpvcgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCiAJICAgIGVsc2UKLQkgICAgICBzb25hbWU9IiRyZWFsbmFtZSIKKwkgICAgICBzb25hbWU9JHJlYWxuYW1lCiAJICAgIGZpCiAKIAkgICAgIyBNYWtlIGEgbmV3IG5hbWUgZm9yIHRoZSBleHRyYWN0X2V4cHN5bXNfY21kcyB0byB1c2UKLQkgICAgc29yb290PSIkc29uYW1lIgorCSAgICBzb3Jvb3Q9JHNvbmFtZQogCSAgICBmdW5jX2Jhc2VuYW1lICIkc29yb290IgotCSAgICBzb25hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICAgc29uYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCSAgICBmdW5jX3N0cmlwbmFtZSAnbGliJyAnLmRsbCcgIiRzb25hbWUiCiAJICAgIG5ld2xpYj1saWJpbXAtJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC5hCiAKIAkgICAgIyBJZiB0aGUgbGlicmFyeSBoYXMgbm8gZXhwb3J0IGxpc3QsIHRoZW4gY3JlYXRlIG9uZSBub3cKIAkgICAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHNvbmFtZS1kZWYiOyB0aGVuIDoKIAkgICAgZWxzZQotCSAgICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBleHBvcnRlZCBzeW1ib2wgbGlzdCBmcm9tIFxgJHNvbmFtZSciCisJICAgICAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGV4cG9ydGVkIHN5bWJvbCBsaXN0IGZyb20gJyRzb25hbWUnIgogCSAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkZXh0cmFjdF9leHBzeW1zX2NtZHMiICdleGl0ICQ/JwogCSAgICBmaQogCiAJICAgICMgQ3JlYXRlICRuZXdsaWIKIAkgICAgaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJG5ld2xpYiI7IHRoZW4gOjsgZWxzZQotCSAgICAgIGZ1bmNfdmVyYm9zZSAiZ2VuZXJhdGluZyBpbXBvcnQgbGlicmFyeSBmb3IgXGAkc29uYW1lJyIKKwkgICAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgaW1wb3J0IGxpYnJhcnkgZm9yICckc29uYW1lJyIKIAkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJG9sZF9hcmNoaXZlX2Zyb21fZXhwc3ltc19jbWRzIiAnZXhpdCAkPycKIAkgICAgZmkKIAkgICAgIyBtYWtlIHN1cmUgdGhlIGxpYnJhcnkgdmFyaWFibGVzIGFyZSBwb2ludGluZyB0byB0aGUgbmV3IGxpYnJhcnkKQEAgLTY3OTcsNTggKzgyNDMsNTggQEAKIAkgICAgbGlua2xpYj0kbmV3bGliCiAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKIAotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKwkgIGlmIHRlc3QgcHJvZyA9ICIkbGlua21vZGUiIHx8IHRlc3QgcmVsaW5rICE9ICIkb3B0X21vZGUiOyB0aGVuCiAJICAgIGFkZF9zaGxpYnBhdGg9CiAJICAgIGFkZF9kaXI9CiAJICAgIGFkZD0KIAkgICAgbGliX2xpbmtlZD15ZXMKIAkgICAgY2FzZSAkaGFyZGNvZGVfYWN0aW9uIGluCiAJICAgIGltbWVkaWF0ZSB8IHVuc3VwcG9ydGVkKQotCSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0gbm87IHRoZW4KLQkJYWRkPSIkZGlyLyRsaW5rbGliIgorCSAgICAgIGlmIHRlc3Qgbm8gPSAiJGhhcmRjb2RlX2RpcmVjdCI7IHRoZW4KKwkJYWRkPSRkaXIvJGxpbmtsaWIKIAkJY2FzZSAkaG9zdCBpbgotCQkgICotKi1zY28zLjJ2NS4wLlswMjRdKikgYWRkX2Rpcj0iLUwkZGlyIiA7OwotCQkgICotKi1zeXN2NCp1dzIqKSBhZGRfZGlyPSItTCRkaXIiIDs7CisJCSAgKi0qLXNjbzMuMnY1LjAuWzAyNF0qKSBhZGRfZGlyPS1MJGRpciA7OworCQkgICotKi1zeXN2NCp1dzIqKSBhZGRfZGlyPS1MJGRpciA7OwogCQkgICotKi1zeXN2NU9wZW5VTklYKiB8ICotKi1zeXN2NVVuaXhXYXJlNy5bMDFdLlsxMF0qIHwgXAotCQkgICAgKi0qLXVuaXh3YXJlNyopIGFkZF9kaXI9Ii1MJGRpciIgOzsKKwkJICAgICotKi11bml4d2FyZTcqKSBhZGRfZGlyPS1MJGRpciA7OwogCQkgICotKi1kYXJ3aW4qICkKLQkJICAgICMgaWYgdGhlIGxpYiBpcyBhIChub24tZGxvcGVuZWQpIG1vZHVsZSB0aGVuIHdlIGNhbiBub3QKKwkJICAgICMgaWYgdGhlIGxpYiBpcyBhIChub24tZGxvcGVuZWQpIG1vZHVsZSB0aGVuIHdlIGNhbm5vdAogCQkgICAgIyBsaW5rIGFnYWluc3QgaXQsIHNvbWVvbmUgaXMgaWdub3JpbmcgdGhlIGVhcmxpZXIgd2FybmluZ3MKIAkJICAgIGlmIC91c3IvYmluL2ZpbGUgLUwgJGFkZCAyPiAvZGV2L251bGwgfAotCQkJICRHUkVQICI6IFteOl0qIGJ1bmRsZSIgPi9kZXYvbnVsbCA7IHRoZW4KKwkJCSAkR1JFUCAiOiBbXjpdKiBidW5kbGUiID4vZGV2L251bGw7IHRoZW4KIAkJICAgICAgaWYgdGVzdCAiWCRkbG9wZW5tb2R1bGUiICE9ICJYJGxpYiI7IHRoZW4KIAkJCSRFQ0hPICIqKiogV2FybmluZzogbGliICRsaW5rbGliIGlzIGEgbW9kdWxlLCBub3QgYSBzaGFyZWQgbGlicmFyeSIKLQkJCWlmIHRlc3QgLXogIiRvbGRfbGlicmFyeSIgOyB0aGVuCisJCQlpZiB0ZXN0IC16ICIkb2xkX2xpYnJhcnkiOyB0aGVuCiAJCQkgIGVjaG8KIAkJCSAgZWNobyAiKioqIEFuZCB0aGVyZSBkb2Vzbid0IHNlZW0gdG8gYmUgYSBzdGF0aWMgYXJjaGl2ZSBhdmFpbGFibGUiCiAJCQkgIGVjaG8gIioqKiBUaGUgbGluayB3aWxsIHByb2JhYmx5IGZhaWwsIHNvcnJ5IgogCQkJZWxzZQotCQkJICBhZGQ9IiRkaXIvJG9sZF9saWJyYXJ5IgorCQkJICBhZGQ9JGRpci8kb2xkX2xpYnJhcnkKIAkJCWZpCiAJCSAgICAgIGVsaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotCQkJYWRkPSIkZGlyLyRvbGRfbGlicmFyeSIKKwkJCWFkZD0kZGlyLyRvbGRfbGlicmFyeQogCQkgICAgICBmaQogCQkgICAgZmkKIAkJZXNhYwotCSAgICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0gbm87IHRoZW4KKwkgICAgICBlbGlmIHRlc3Qgbm8gPSAiJGhhcmRjb2RlX21pbnVzX0wiOyB0aGVuCiAJCWNhc2UgJGhvc3QgaW4KLQkJKi0qLXN1bm9zKikgYWRkX3NobGlicGF0aD0iJGRpciIgOzsKKwkJKi0qLXN1bm9zKikgYWRkX3NobGlicGF0aD0kZGlyIDs7CiAJCWVzYWMKLQkJYWRkX2Rpcj0iLUwkZGlyIgotCQlhZGQ9Ii1sJG5hbWUiCi0JICAgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSBubzsgdGhlbgotCQlhZGRfc2hsaWJwYXRoPSIkZGlyIgotCQlhZGQ9Ii1sJG5hbWUiCisJCWFkZF9kaXI9LUwkZGlyCisJCWFkZD0tbCRuYW1lCisJICAgICAgZWxpZiB0ZXN0IG5vID0gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIjsgdGhlbgorCQlhZGRfc2hsaWJwYXRoPSRkaXIKKwkJYWRkPS1sJG5hbWUKIAkgICAgICBlbHNlCiAJCWxpYl9saW5rZWQ9bm8KIAkgICAgICBmaQogCSAgICAgIDs7CiAJICAgIHJlbGluaykKLQkgICAgICBpZiB0ZXN0ICIkaGFyZGNvZGVfZGlyZWN0IiA9IHllcyAmJgotCSAgICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KLQkJYWRkPSIkZGlyLyRsaW5rbGliIgotCSAgICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCi0JCWFkZF9kaXI9Ii1MJGFic2RpciIKKwkgICAgICBpZiB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfZGlyZWN0IiAmJgorCSAgICAgICAgIHRlc3Qgbm8gPSAiJGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSI7IHRoZW4KKwkJYWRkPSRkaXIvJGxpbmtsaWIKKwkgICAgICBlbGlmIHRlc3QgeWVzID0gIiRoYXJkY29kZV9taW51c19MIjsgdGhlbgorCQlhZGRfZGlyPS1MJGFic2RpcgogCQkjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCiAJCWlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCiAJCSAgY2FzZSAkbGliZGlyIGluCkBAIC02ODU3LDEwICs4MzAzLDEwIEBACiAJCSAgICAgIDs7CiAJCSAgZXNhYwogCQlmaQotCQlhZGQ9Ii1sJG5hbWUiCi0JICAgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KLQkJYWRkX3NobGlicGF0aD0iJGRpciIKLQkJYWRkPSItbCRuYW1lIgorCQlhZGQ9LWwkbmFtZQorCSAgICAgIGVsaWYgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiOyB0aGVuCisJCWFkZF9zaGxpYnBhdGg9JGRpcgorCQlhZGQ9LWwkbmFtZQogCSAgICAgIGVsc2UKIAkJbGliX2xpbmtlZD1ubwogCSAgICAgIGZpCkBAIC02ODY4LDcgKzgzMTQsNyBAQAogCSAgICAqKSBsaWJfbGlua2VkPW5vIDs7CiAJICAgIGVzYWMKIAotCSAgICBpZiB0ZXN0ICIkbGliX2xpbmtlZCIgIT0geWVzOyB0aGVuCisJICAgIGlmIHRlc3QgeWVzICE9ICIkbGliX2xpbmtlZCI7IHRoZW4KIAkgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gInVuc3VwcG9ydGVkIGhhcmRjb2RlIHByb3BlcnRpZXMiCiAJICAgIGZpCiAKQEAgLTY4NzgsMTUgKzgzMjQsMTUgQEAKIAkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3NobGlicGF0aCAiJGFkZF9zaGxpYnBhdGg6IiA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKLQkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2c7IHRoZW4KKwkgICAgaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSI7IHRoZW4KIAkgICAgICB0ZXN0IC1uICIkYWRkX2RpciIgJiYgY29tcGlsZV9kZXBsaWJzPSIkYWRkX2RpciAkY29tcGlsZV9kZXBsaWJzIgogCSAgICAgIHRlc3QgLW4gIiRhZGQiICYmIGNvbXBpbGVfZGVwbGlicz0iJGFkZCAkY29tcGlsZV9kZXBsaWJzIgogCSAgICBlbHNlCiAJICAgICAgdGVzdCAtbiAiJGFkZF9kaXIiICYmIGRlcGxpYnM9IiRhZGRfZGlyICRkZXBsaWJzIgogCSAgICAgIHRlc3QgLW4gIiRhZGQiICYmIGRlcGxpYnM9IiRhZGQgJGRlcGxpYnMiCi0JICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgIT0geWVzICYmCi0JCSB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgIT0geWVzICYmCi0JCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KKwkgICAgICBpZiB0ZXN0IHllcyAhPSAiJGhhcmRjb2RlX2RpcmVjdCIgJiYKKwkJIHRlc3QgeWVzICE9ICIkaGFyZGNvZGVfbWludXNfTCIgJiYKKwkJIHRlc3QgeWVzID0gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIjsgdGhlbgogCQljYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgogCQkqIjokbGliZGlyOiIqKSA7OwogCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwpAQCAtNjg5NSwzMyArODM0MSwzMyBAQAogCSAgICBmaQogCSAgZmkKIAotCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorCSAgaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSIgfHwgdGVzdCByZWxpbmsgPSAiJG9wdF9tb2RlIjsgdGhlbgogCSAgICBhZGRfc2hsaWJwYXRoPQogCSAgICBhZGRfZGlyPQogCSAgICBhZGQ9CiAJICAgICMgRmluYWxpemUgY29tbWFuZCBmb3IgYm90aCBpcyBzaW1wbGU6IGp1c3QgaGFyZGNvZGUgaXQuCi0JICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzICYmCi0JICAgICAgIHRlc3QgIiRoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUiID0gbm87IHRoZW4KLQkgICAgICBhZGQ9IiRsaWJkaXIvJGxpbmtsaWIiCi0JICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiID0geWVzOyB0aGVuCi0JICAgICAgYWRkX2Rpcj0iLUwkbGliZGlyIgotCSAgICAgIGFkZD0iLWwkbmFtZSIKLQkgICAgZWxpZiB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KKwkgICAgaWYgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX2RpcmVjdCIgJiYKKwkgICAgICAgdGVzdCBubyA9ICIkaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlIjsgdGhlbgorCSAgICAgIGFkZD0kbGliZGlyLyRsaW5rbGliCisJICAgIGVsaWYgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX21pbnVzX0wiOyB0aGVuCisJICAgICAgYWRkX2Rpcj0tTCRsaWJkaXIKKwkgICAgICBhZGQ9LWwkbmFtZQorCSAgICBlbGlmIHRlc3QgeWVzID0gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIjsgdGhlbgogCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCiAJICAgICAgKiI6JGxpYmRpcjoiKikgOzsKIAkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwogCSAgICAgIGVzYWMKLQkgICAgICBhZGQ9Ii1sJG5hbWUiCi0JICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KKwkgICAgICBhZGQ9LWwkbmFtZQorCSAgICBlbGlmIHRlc3QgeWVzID0gIiRoYXJkY29kZV9hdXRvbWF0aWMiOyB0aGVuCiAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciIgJiYKLQkJIHRlc3QgLWYgIiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIiA7IHRoZW4KLQkJYWRkPSIkaW5zdF9wcmVmaXhfZGlyJGxpYmRpci8kbGlua2xpYiIKKwkJIHRlc3QgLWYgIiRpbnN0X3ByZWZpeF9kaXIkbGliZGlyLyRsaW5rbGliIjsgdGhlbgorCQlhZGQ9JGluc3RfcHJlZml4X2RpciRsaWJkaXIvJGxpbmtsaWIKIAkgICAgICBlbHNlCi0JCWFkZD0iJGxpYmRpci8kbGlua2xpYiIKKwkJYWRkPSRsaWJkaXIvJGxpbmtsaWIKIAkgICAgICBmaQogCSAgICBlbHNlCiAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KLQkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCisJICAgICAgYWRkX2Rpcj0tTCRsaWJkaXIKIAkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCiAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KIAkJY2FzZSAkbGliZGlyIGluCkBAIC02OTMwLDEwICs4Mzc2LDEwIEBACiAJCSAgICA7OwogCQllc2FjCiAJICAgICAgZmkKLQkgICAgICBhZGQ9Ii1sJG5hbWUiCisJICAgICAgYWRkPS1sJG5hbWUKIAkgICAgZmkKIAotCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCSAgICBpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIjsgdGhlbgogCSAgICAgIHRlc3QgLW4gIiRhZGRfZGlyIiAmJiBmaW5hbGl6ZV9kZXBsaWJzPSIkYWRkX2RpciAkZmluYWxpemVfZGVwbGlicyIKIAkgICAgICB0ZXN0IC1uICIkYWRkIiAmJiBmaW5hbGl6ZV9kZXBsaWJzPSIkYWRkICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgICBlbHNlCkBAIC02OTQxLDQzICs4Mzg3LDQzIEBACiAJICAgICAgdGVzdCAtbiAiJGFkZCIgJiYgZGVwbGlicz0iJGFkZCAkZGVwbGlicyIKIAkgICAgZmkKIAkgIGZpCi0JZWxpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgorCWVsaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSI7IHRoZW4KIAkgICMgSGVyZSB3ZSBhc3N1bWUgdGhhdCBvbmUgb2YgaGFyZGNvZGVfZGlyZWN0IG9yIGhhcmRjb2RlX21pbnVzX0wKIAkgICMgaXMgbm90IHVuc3VwcG9ydGVkLiAgVGhpcyBpcyB2YWxpZCBvbiBhbGwga25vd24gc3RhdGljIGFuZAogCSAgIyBzaGFyZWQgcGxhdGZvcm1zLgotCSAgaWYgdGVzdCAiJGhhcmRjb2RlX2RpcmVjdCIgIT0gdW5zdXBwb3J0ZWQ7IHRoZW4KLQkgICAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBsaW5rbGliPSIkb2xkX2xpYnJhcnkiCisJICBpZiB0ZXN0IHVuc3VwcG9ydGVkICE9ICIkaGFyZGNvZGVfZGlyZWN0IjsgdGhlbgorCSAgICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGxpbmtsaWI9JG9sZF9saWJyYXJ5CiAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRpci8kbGlua2xpYiAkY29tcGlsZV9kZXBsaWJzIgogCSAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGlyLyRsaW5rbGliICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZWxzZQogCSAgICBjb21waWxlX2RlcGxpYnM9Ii1sJG5hbWUgLUwkZGlyICRjb21waWxlX2RlcGxpYnMiCiAJICAgIGZpbmFsaXplX2RlcGxpYnM9Ii1sJG5hbWUgLUwkZGlyICRmaW5hbGl6ZV9kZXBsaWJzIgogCSAgZmkKLQllbGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzOyB0aGVuCisJZWxpZiB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIjsgdGhlbgogCSAgIyBOb3QgYSBzaGFyZWQgbGlicmFyeQotCSAgaWYgdGVzdCAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAhPSBwYXNzX2FsbDsgdGhlbgorCSAgaWYgdGVzdCBwYXNzX2FsbCAhPSAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIjsgdGhlbgogCSAgICAjIFdlJ3JlIHRyeWluZyBsaW5rIGEgc2hhcmVkIGxpYnJhcnkgYWdhaW5zdCBhIHN0YXRpYyBvbmUKIAkgICAgIyBidXQgdGhlIHN5c3RlbSBkb2Vzbid0IHN1cHBvcnQgaXQuCiAKIAkgICAgIyBKdXN0IHByaW50IGEgd2FybmluZyBhbmQgYWRkIHRoZSBsaWJyYXJ5IHRvIGRlcGVuZGVuY3lfbGlicyBzbwogCSAgICAjIHRoYXQgdGhlIHByb2dyYW0gY2FuIGJlIGxpbmtlZCBhZ2FpbnN0IHRoZSBzdGF0aWMgbGlicmFyeS4KIAkgICAgZWNobwotCSAgICAkRUNITyAiKioqIFdhcm5pbmc6IFRoaXMgc3lzdGVtIGNhbiBub3QgbGluayB0byBzdGF0aWMgbGliIGFyY2hpdmUgJGxpYi4iCisJICAgICRFQ0hPICIqKiogV2FybmluZzogVGhpcyBzeXN0ZW0gY2Fubm90IGxpbmsgdG8gc3RhdGljIGxpYiBhcmNoaXZlICRsaWIuIgogCSAgICBlY2hvICIqKiogSSBoYXZlIHRoZSBjYXBhYmlsaXR5IHRvIG1ha2UgdGhhdCBsaWJyYXJ5IGF1dG9tYXRpY2FsbHkgbGluayBpbiB3aGVuIgogCSAgICBlY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgogCSAgICBlY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUuIgotCSAgICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllczsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkbW9kdWxlIjsgdGhlbgogCSAgICAgIGVjaG8gIioqKiBCdXQgYXMgeW91IHRyeSB0byBidWlsZCBhIG1vZHVsZSBsaWJyYXJ5LCBsaWJ0b29sIHdpbGwgc3RpbGwgY3JlYXRlICIKIAkgICAgICBlY2hvICIqKiogYSBzdGF0aWMgbW9kdWxlLCB0aGF0IHNob3VsZCB3b3JrIGFzIGxvbmcgYXMgdGhlIGRsb3BlbmluZyBhcHBsaWNhdGlvbiIKIAkgICAgICBlY2hvICIqKiogaXMgbGlua2VkIHdpdGggdGhlIC1kbG9wZW4gZmxhZyB0byByZXNvbHZlIHN5bWJvbHMgYXQgcnVudGltZS4iCiAJICAgICAgaWYgdGVzdCAteiAiJGdsb2JhbF9zeW1ib2xfcGlwZSI7IHRoZW4KIAkJZWNobwogCQllY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkJZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyBcYG5tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKKwkJZWNobyAiKioqIGxpc3RzIGZyb20gYSBwcm9ncmFtLCB1c2luZyAnbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgogCQllY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JCWVjaG8gIioqKiBcYG5tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgorCQllY2hvICIqKiogJ25tJyBmcm9tIEdOVSBiaW51dGlscyBhbmQgYSBmdWxsIHJlYnVpbGQgbWF5IGhlbHAuIgogCSAgICAgIGZpCi0JICAgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCisJICAgICAgaWYgdGVzdCBubyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKIAkJYnVpbGRfb2xkX2xpYnM9eWVzCiAJICAgICAgZWxzZQpAQCAtNjk5MCwxMSArODQzNiwxMSBAQAogCSAgZmkKIAlmaSAjIGxpbmsgc2hhcmVkL3N0YXRpYyBsaWJyYXJ5PwogCi0JaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgorCWlmIHRlc3QgbGliID0gIiRsaW5rbW9kZSI7IHRoZW4KIAkgIGlmIHRlc3QgLW4gIiRkZXBlbmRlbmN5X2xpYnMiICYmCi0JICAgICB7IHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fAotCSAgICAgICB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzIHx8Ci0JICAgICAgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSB5ZXM7IH07IHRoZW4KKwkgICAgIHsgdGVzdCB5ZXMgIT0gIiRoYXJkY29kZV9pbnRvX2xpYnMiIHx8CisJICAgICAgIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyIgfHwKKwkgICAgICAgdGVzdCB5ZXMgPSAiJGxpbmtfc3RhdGljIjsgfTsgdGhlbgogCSAgICAjIEV4dHJhY3QgLVIgZnJvbSBkZXBlbmRlbmN5X2xpYnMKIAkgICAgdGVtcF9kZXBsaWJzPQogCSAgICBmb3IgbGliZGlyIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCkBAIC03MDA4LDEyICs4NDU0LDEyIEBACiAJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQotCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCisJICAgIGRlcGVuZGVuY3lfbGlicz0kdGVtcF9kZXBsaWJzCiAJICBmaQogCiAJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgogCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5Ci0JICB0ZXN0ICIkbGlua19zdGF0aWMiID0gbm8gJiYgbmV3ZGVwZW5kZW5jeV9saWJzPSIkYWJzX2xhZGlyLyRsYW5hbWUgJG5ld2RlcGVuZGVuY3lfbGlicyIKKwkgIHRlc3Qgbm8gPSAiJGxpbmtfc3RhdGljIiAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgogCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKIAkgIHRtcF9saWJzPQogCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwpAQCAtNzAyMyw3ICs4NDY5LDcgQEAKICAgICAgICAgICAgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCI7OwogICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKICAgICAgICAgICAgIGVzYWMKLQkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwczsgdGhlbgogCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCiAJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiIDs7CkBAIC03MDMyLDEyICs4NDc4LDEyIEBACiAJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKIAkgIGRvbmUKIAotCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCisJICBpZiB0ZXN0IG5vICE9ICIkbGlua19hbGxfZGVwbGlicyI7IHRoZW4KIAkgICAgIyBBZGQgdGhlIHNlYXJjaCBwYXRocyBvZiBhbGwgZGVwZW5kZW5jeSBsaWJyYXJpZXMKIAkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICAgIHBhdGg9CiAJICAgICAgY2FzZSAkZGVwbGliIGluCi0JICAgICAgLUwqKSBwYXRoPSIkZGVwbGliIiA7OworCSAgICAgIC1MKikgcGF0aD0kZGVwbGliIDs7CiAJICAgICAgKi5sYSkKIAkgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgogCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKQEAgLTcwNDUsMTIgKzg0OTEsMTIgQEAKIAkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CiAJCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgogCQljYXNlICRkaXIgaW4KLQkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CisJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSRkaXIgOzsKIAkJKikKIAkJICBhYnNkaXI9YGNkICIkZGlyIiAmJiBwd2RgCiAJCSAgaWYgdGVzdCAteiAiJGFic2RpciI7IHRoZW4KLQkJICAgIGZ1bmNfd2FybmluZyAiY2Fubm90IGRldGVybWluZSBhYnNvbHV0ZSBkaXJlY3RvcnkgbmFtZSBvZiBcYCRkaXInIgotCQkgICAgYWJzZGlyPSIkZGlyIgorCQkgICAgZnVuY193YXJuaW5nICJjYW5ub3QgZGV0ZXJtaW5lIGFic29sdXRlIGRpcmVjdG9yeSBuYW1lIG9mICckZGlyJyIKKwkJICAgIGFic2Rpcj0kZGlyCiAJCSAgZmkKIAkJICA7OwogCQllc2FjCkBAIC03MDU4LDM1ICs4NTA0LDM1IEBACiAJCWNhc2UgJGhvc3QgaW4KIAkJKi0qLWRhcndpbiopCiAJCSAgZGVwZGVwbD0KLQkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0JCSAgaWYgdGVzdCAtbiAiJGRlcGxpYnJhcnlfbmFtZXMiIDsgdGhlbgotCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCisJCSAgZXZhbCBkZXBsaWJyYXJ5X25hbWVzPWAkU0VEIC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKwkJICBpZiB0ZXN0IC1uICIkZGVwbGlicmFyeV9uYW1lcyI7IHRoZW4KKwkJICAgIGZvciB0bXAgaW4gJGRlcGxpYnJhcnlfbmFtZXM7IGRvCiAJCSAgICAgIGRlcGRlcGw9JHRtcAogCQkgICAgZG9uZQotCQkgICAgaWYgdGVzdCAtZiAiJGFic2Rpci8kb2JqZGlyLyRkZXBkZXBsIiA7IHRoZW4KLQkJICAgICAgZGVwZGVwbD0iJGFic2Rpci8kb2JqZGlyLyRkZXBkZXBsIgotCQkgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MfSAtTCAkZGVwZGVwbCB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKKwkJICAgIGlmIHRlc3QgLWYgIiRhYnNkaXIvJG9iamRpci8kZGVwZGVwbCI7IHRoZW4KKwkJICAgICAgZGVwZGVwbD0kYWJzZGlyLyRvYmpkaXIvJGRlcGRlcGwKKwkJICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJE9UT09MIC1MICRkZXBkZXBsIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAogICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICBkYXJ3aW5faW5zdGFsbF9uYW1lPWAke09UT09MNjR9IC1MICRkZXBkZXBsICB8IGF3ayAne2lmIChOUiA9PSAyKSB7cHJpbnQgJDE7ZXhpdH19J2AKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJE9UT09MNjQgLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAogICAgICAgICAgICAgICAgICAgICAgIGZpCi0JCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLQkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorCQkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bC1keWxpYl9maWxlICR3bCRkYXJ3aW5faW5zdGFsbF9uYW1lOiRkZXBkZXBsIgorCQkgICAgICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAtZHlsaWJfZmlsZSAkZGFyd2luX2luc3RhbGxfbmFtZTokZGVwZGVwbCIKIAkJICAgICAgcGF0aD0KIAkJICAgIGZpCiAJCSAgZmkKIAkJICA7OwogCQkqKQotCQkgIHBhdGg9Ii1MJGFic2Rpci8kb2JqZGlyIgorCQkgIHBhdGg9LUwkYWJzZGlyLyRvYmpkaXIKIAkJICA7OwogCQllc2FjCiAJCWVsc2UKLQkJICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorCQkgIGV2YWwgbGliZGlyPWAkU0VEIC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAogCQkgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLQkJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCQkgICAgZnVuY19mYXRhbF9lcnJvciAiJyRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAkJICB0ZXN0ICIkYWJzZGlyIiAhPSAiJGxpYmRpciIgJiYgXAotCQkgICAgZnVuY193YXJuaW5nICJcYCRkZXBsaWInIHNlZW1zIHRvIGJlIG1vdmVkIgorCQkgICAgZnVuY193YXJuaW5nICInJGRlcGxpYicgc2VlbXMgdG8gYmUgbW92ZWQiCiAKLQkJICBwYXRoPSItTCRhYnNkaXIiCisJCSAgcGF0aD0tTCRhYnNkaXIKIAkJZmkKIAkJOzsKIAkgICAgICBlc2FjCkBAIC03MDk4LDIzICs4NTQ0LDIzIEBACiAJICBmaSAjIGxpbmtfYWxsX2RlcGxpYnMgIT0gbm8KIAlmaSAjIGxpbmttb2RlID0gbGliCiAgICAgICBkb25lICMgZm9yIGRlcGxpYiBpbiAkbGlicwotICAgICAgaWYgdGVzdCAiJHBhc3MiID0gbGluazsgdGhlbgotCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSAicHJvZyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgbGluayA9ICIkcGFzcyI7IHRoZW4KKwlpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIjsgdGhlbgogCSAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGNvbXBpbGVfZGVwbGlicyIKIAkgIGZpbmFsaXplX2RlcGxpYnM9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZmluYWxpemVfZGVwbGlicyIKIAllbHNlCiAJICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICJgJEVDSE8gIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MiIHwgJFNFRCAncyUgXChbXiAkXSpcKS5sdGZyYW1ld29yayUgLWZyYW1ld29yayBcMSVnJ2AKIAlmaQogICAgICAgZmkKLSAgICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKLSAgICAgIGlmIHRlc3QgIiRwYXNzIiA9IGRscHJlb3BlbjsgdGhlbgorICAgICAgZGVwZW5kZW5jeV9saWJzPSRuZXdkZXBlbmRlbmN5X2xpYnMKKyAgICAgIGlmIHRlc3QgZGxwcmVvcGVuID0gIiRwYXNzIjsgdGhlbgogCSMgTGluayB0aGUgZGxwcmVvcGVuZWQgbGlicmFyaWVzIGJlZm9yZSBvdGhlciBsaWJyYXJpZXMKIAlmb3IgZGVwbGliIGluICRzYXZlX2RlcGxpYnM7IGRvCiAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgogCWRvbmUKICAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkcGFzcyIgIT0gZGxvcGVuOyB0aGVuCi0JaWYgdGVzdCAiJHBhc3MiICE9IGNvbnY7IHRoZW4KKyAgICAgIGlmIHRlc3QgZGxvcGVuICE9ICIkcGFzcyI7IHRoZW4KKwl0ZXN0IGNvbnYgPSAiJHBhc3MiIHx8IHsKIAkgICMgTWFrZSBzdXJlIGxpYl9zZWFyY2hfcGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KIAkgIGxpYl9zZWFyY2hfcGF0aD0KIAkgIGZvciBkaXIgaW4gJG5ld2xpYl9zZWFyY2hfcGF0aDsgZG8KQEAgLTcxMjQsMTIgKzg1NzAsMTIgQEAKIAkgICAgZXNhYwogCSAgZG9uZQogCSAgbmV3bGliX3NlYXJjaF9wYXRoPQotCWZpCisJfQogCi0JaWYgdGVzdCAiJGxpbmttb2RlLCRwYXNzIiAhPSAicHJvZyxsaW5rIjsgdGhlbgotCSAgdmFycz0iZGVwbGlicyIKLQllbHNlCisJaWYgdGVzdCBwcm9nLGxpbmsgPSAiJGxpbmttb2RlLCRwYXNzIjsgdGhlbgogCSAgdmFycz0iY29tcGlsZV9kZXBsaWJzIGZpbmFsaXplX2RlcGxpYnMiCisJZWxzZQorCSAgdmFycz1kZXBsaWJzCiAJZmkKIAlmb3IgdmFyIGluICR2YXJzIGRlcGVuZGVuY3lfbGliczsgZG8KIAkgICMgQWRkIGxpYnJhcmllcyB0byAkdmFyIGluIHJldmVyc2Ugb3JkZXIKQEAgLTcxODcsNjIgKzg2MzMsOTMgQEAKIAkgIGV2YWwgJHZhcj1cIiR0bXBfbGlic1wiCiAJZG9uZSAjIGZvciB2YXIKICAgICAgIGZpCisKKyAgICAgICMgQWRkIFN1biBDQyBwb3N0ZGVwcyBpZiByZXF1aXJlZDoKKyAgICAgIHRlc3QgQ1hYID0gIiR0YWduYW1lIiAmJiB7CisgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgICAgbGludXgqKQorICAgICAgICAgIGNhc2UgYCRDQyAtViAyPiYxIHwgc2VkIDVxYCBpbgorICAgICAgICAgICpTdW5cIEMqKSAjIFN1biBDKysgNS45CisgICAgICAgICAgICBmdW5jX3N1bmNjX2NzdGRfYWJpCisKKyAgICAgICAgICAgIGlmIHRlc3Qgbm8gIT0gIiRzdW5jY191c2VfY3N0ZF9hYmkiOyB0aGVuCisgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHBvc3RkZXBzICcgLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJworICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIDs7CisKKyAgICAgICAgc29sYXJpcyopCisgICAgICAgICAgZnVuY19jY19iYXNlbmFtZSAiJENDIgorICAgICAgICAgIGNhc2UgJGZ1bmNfY2NfYmFzZW5hbWVfcmVzdWx0IGluCisgICAgICAgICAgQ0MqIHwgc3VuQ0MqKQorICAgICAgICAgICAgZnVuY19zdW5jY19jc3RkX2FiaQorCisgICAgICAgICAgICBpZiB0ZXN0IG5vICE9ICIkc3VuY2NfdXNlX2NzdGRfYWJpIjsgdGhlbgorICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBwb3N0ZGVwcyAnIC1saWJyYXJ5PUNzdGQgLWxpYnJhcnk9Q3J1bicKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICB9CisKICAgICAgICMgTGFzdCBzdGVwOiByZW1vdmUgcnVudGltZSBsaWJzIGZyb20gZGVwZW5kZW5jeV9saWJzCiAgICAgICAjICh0aGV5IHN0YXkgaW4gZGVwbGlicykKICAgICAgIHRtcF9saWJzPQotICAgICAgZm9yIGkgaW4gJGRlcGVuZGVuY3lfbGlicyA7IGRvCisgICAgICBmb3IgaSBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgJGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCAiIGluCiAJKiIgJGkgIiopCi0JICBpPSIiCisJICBpPQogCSAgOzsKIAllc2FjCi0JaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorCWlmIHRlc3QgLW4gIiRpIjsgdGhlbgogCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKIAlmaQogICAgICAgZG9uZQogICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicwogICAgIGRvbmUgIyBmb3IgcGFzcwotICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCi0gICAgICBkbGZpbGVzPSIkbmV3ZGxmaWxlcyIKKyAgICBpZiB0ZXN0IHByb2cgPSAiJGxpbmttb2RlIjsgdGhlbgorICAgICAgZGxmaWxlcz0kbmV3ZGxmaWxlcwogICAgIGZpCi0gICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJGxpbmttb2RlIiA9IGxpYjsgdGhlbgotICAgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCisgICAgaWYgdGVzdCBwcm9nID0gIiRsaW5rbW9kZSIgfHwgdGVzdCBsaWIgPSAiJGxpbmttb2RlIjsgdGhlbgorICAgICAgZGxwcmVmaWxlcz0kbmV3ZGxwcmVmaWxlcwogICAgIGZpCiAKICAgICBjYXNlICRsaW5rbW9kZSBpbgogICAgIG9sZGxpYikKLSAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCi0JZnVuY193YXJuaW5nICJcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgorICAgICAgaWYgdGVzdCAtbiAiJGRsZmlsZXMkZGxwcmVmaWxlcyIgfHwgdGVzdCBubyAhPSAiJGRsc2VsZiI7IHRoZW4KKwlmdW5jX3dhcm5pbmcgIictZGxvcGVuJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKICAgICAgIGZpCiAKICAgICAgIGNhc2UgIiAkZGVwbGlicyIgaW4KICAgICAgICpcIC1sKiB8ICpcIC1MKikKLQlmdW5jX3dhcm5pbmcgIlxgLWwnIGFuZCBcYC1MJyBhcmUgaWdub3JlZCBmb3IgYXJjaGl2ZXMiIDs7CisJZnVuY193YXJuaW5nICInLWwnIGFuZCAnLUwnIGFyZSBpZ25vcmVkIGZvciBhcmNoaXZlcyIgOzsKICAgICAgIGVzYWMKIAogICAgICAgdGVzdCAtbiAiJHJwYXRoIiAmJiBcCi0JZnVuY193YXJuaW5nICJcYC1ycGF0aCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCisJZnVuY193YXJuaW5nICInLXJwYXRoJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAogICAgICAgdGVzdCAtbiAiJHhycGF0aCIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtUicgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCisJZnVuY193YXJuaW5nICInLVInIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgogCiAgICAgICB0ZXN0IC1uICIkdmluZm8iICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLXZlcnNpb24taW5mby8tdmVyc2lvbi1udW1iZXInIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgorCWZ1bmNfd2FybmluZyAiJy12ZXJzaW9uLWluZm8vLXZlcnNpb24tbnVtYmVyJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAogICAgICAgdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGFyY2hpdmVzIgorCWZ1bmNfd2FybmluZyAiJy1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAogICAgICAgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAmJiBcCi0JZnVuY193YXJuaW5nICJcYC1leHBvcnQtc3ltYm9scycgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMiCisJZnVuY193YXJuaW5nICInLWV4cG9ydC1zeW1ib2xzJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcyIKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCiAgICAgICBidWlsZF9saWJ0b29sX2xpYnM9bm8KLSAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCisgICAgICBvbGRsaWJzPSRvdXRwdXQKICAgICAgIGZ1bmNfYXBwZW5kIG9ianMgIiRvbGRfZGVwbGlicyIKICAgICAgIDs7CiAKICAgICBsaWIpCi0gICAgICAjIE1ha2Ugc3VyZSB3ZSBvbmx5IGdlbmVyYXRlIGxpYnJhcmllcyBvZiB0aGUgZm9ybSBgbGliTkFNRS5sYScuCisgICAgICAjIE1ha2Ugc3VyZSB3ZSBvbmx5IGdlbmVyYXRlIGxpYnJhcmllcyBvZiB0aGUgZm9ybSAnbGliTkFNRS5sYScuCiAgICAgICBjYXNlICRvdXRwdXRuYW1lIGluCiAgICAgICBsaWIqKQogCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKQEAgLTcyNTEsMTAgKzg3MjgsMTAgQEAKIAlldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKIAk7OwogICAgICAgKikKLQl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKLQkgIGZ1bmNfZmF0YWxfaGVscCAibGlidG9vbCBsaWJyYXJ5IFxgJG91dHB1dCcgbXVzdCBiZWdpbiB3aXRoIFxgbGliJyIKKwl0ZXN0IG5vID0gIiRtb2R1bGUiIFwKKwkgICYmIGZ1bmNfZmF0YWxfaGVscCAibGlidG9vbCBsaWJyYXJ5ICckb3V0cHV0JyBtdXN0IGJlZ2luIHdpdGggJ2xpYiciCiAKLQlpZiB0ZXN0ICIkbmVlZF9saWJfcHJlZml4IiAhPSBubzsgdGhlbgorCWlmIHRlc3Qgbm8gIT0gIiRuZWVkX2xpYl9wcmVmaXgiOyB0aGVuCiAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCiAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCiAJICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKQEAgLTcyNjgsOCArODc0NSw4IEBACiAgICAgICBlc2FjCiAKICAgICAgIGlmIHRlc3QgLW4gIiRvYmpzIjsgdGhlbgotCWlmIHRlc3QgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgIT0gcGFzc19hbGw7IHRoZW4KLQkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBidWlsZCBsaWJ0b29sIGxpYnJhcnkgXGAkb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMgb24gdGhpcyBob3N0OiRvYmpzIgorCWlmIHRlc3QgcGFzc19hbGwgIT0gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCI7IHRoZW4KKwkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBidWlsZCBsaWJ0b29sIGxpYnJhcnkgJyRvdXRwdXQnIGZyb20gbm9uLWxpYnRvb2wgb2JqZWN0cyBvbiB0aGlzIGhvc3Q6JG9ianMiCiAJZWxzZQogCSAgZWNobwogCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgpAQCAtNzI3OCwyMSArODc1NSwyMSBAQAogCWZpCiAgICAgICBmaQogCi0gICAgICB0ZXN0ICIkZGxzZWxmIiAhPSBubyAmJiBcCi0JZnVuY193YXJuaW5nICJcYC1kbG9wZW4gc2VsZicgaXMgaWdub3JlZCBmb3IgbGlidG9vbCBsaWJyYXJpZXMiCisgICAgICB0ZXN0IG5vID0gIiRkbHNlbGYiIFwKKwl8fCBmdW5jX3dhcm5pbmcgIictZGxvcGVuIHNlbGYnIGlzIGlnbm9yZWQgZm9yIGxpYnRvb2wgbGlicmFyaWVzIgogCiAgICAgICBzZXQgZHVtbXkgJHJwYXRoCiAgICAgICBzaGlmdAotICAgICAgdGVzdCAiJCMiIC1ndCAxICYmIFwKLQlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgorICAgICAgdGVzdCAxIC1sdCAiJCMiIFwKKwkmJiBmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlICctcnBhdGgncyBmb3IgYSBsaWJ0b29sIGxpYnJhcnkiCiAKLSAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKKyAgICAgIGluc3RhbGxfbGliZGlyPSQxCiAKICAgICAgIG9sZGxpYnM9CiAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCi0JaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIjsgdGhlbgogCSAgIyBCdWlsZGluZyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeS4KLQkgICMgU29tZSBjb21waWxlcnMgaGF2ZSBwcm9ibGVtcyB3aXRoIGEgYC5hbCcgZXh0ZW5zaW9uIHNvCisJICAjIFNvbWUgY29tcGlsZXJzIGhhdmUgcHJvYmxlbXMgd2l0aCBhICcuYWwnIGV4dGVuc2lvbiBzbwogCSAgIyBjb252ZW5pZW5jZSBsaWJyYXJpZXMgc2hvdWxkIGhhdmUgdGhlIHNhbWUgZXh0ZW5zaW9uIGFuCiAJICAjIGFyY2hpdmUgbm9ybWFsbHkgd291bGQuCiAJICBvbGRsaWJzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0ICRvbGRsaWJzIgpAQCAtNzMwMSwyMCArODc3OCwyMCBAQAogCWZpCiAKIAl0ZXN0IC1uICIkdmluZm8iICYmIFwKLQkgIGZ1bmNfd2FybmluZyAiXGAtdmVyc2lvbi1pbmZvLy12ZXJzaW9uLW51bWJlcicgaXMgaWdub3JlZCBmb3IgY29udmVuaWVuY2UgbGlicmFyaWVzIgorCSAgZnVuY193YXJuaW5nICInLXZlcnNpb24taW5mby8tdmVyc2lvbi1udW1iZXInIGlzIGlnbm9yZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcyIKIAogCXRlc3QgLW4gIiRyZWxlYXNlIiAmJiBcCi0JICBmdW5jX3dhcm5pbmcgIlxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIGNvbnZlbmllbmNlIGxpYnJhcmllcyIKKwkgIGZ1bmNfd2FybmluZyAiJy1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBjb252ZW5pZW5jZSBsaWJyYXJpZXMiCiAgICAgICBlbHNlCiAKIAkjIFBhcnNlIHRoZSB2ZXJzaW9uIGluZm9ybWF0aW9uIGFyZ3VtZW50LgotCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSc6JworCXNhdmVfaWZzPSRJRlM7IElGUz06CiAJc2V0IGR1bW15ICR2aW5mbyAwIDAgMAogCXNoaWZ0Ci0JSUZTPSIkc2F2ZV9pZnMiCisJSUZTPSRzYXZlX2lmcwogCiAJdGVzdCAtbiAiJDciICYmIFwKLQkgIGZ1bmNfZmF0YWxfaGVscCAidG9vIG1hbnkgcGFyYW1ldGVycyB0byBcYC12ZXJzaW9uLWluZm8nIgorCSAgZnVuY19mYXRhbF9oZWxwICJ0b28gbWFueSBwYXJhbWV0ZXJzIHRvICctdmVyc2lvbi1pbmZvJyIKIAogCSMgY29udmVydCBhYnNvbHV0ZSB2ZXJzaW9uIG51bWJlcnMgdG8gbGlidG9vbCBhZ2VzCiAJIyB0aGlzIHJldGFpbnMgY29tcGF0aWJpbGl0eSB3aXRoIC5sYSBmaWxlcyBhbmQgYXR0ZW1wdHMKQEAgLTczMjIsNDUgKzg3OTksNDUgQEAKIAogCWNhc2UgJHZpbmZvX251bWJlciBpbgogCXllcykKLQkgIG51bWJlcl9tYWpvcj0iJDEiCi0JICBudW1iZXJfbWlub3I9IiQyIgotCSAgbnVtYmVyX3JldmlzaW9uPSIkMyIKKwkgIG51bWJlcl9tYWpvcj0kMQorCSAgbnVtYmVyX21pbm9yPSQyCisJICBudW1iZXJfcmV2aXNpb249JDMKIAkgICMKIAkgICMgVGhlcmUgYXJlIHJlYWxseSBvbmx5IHR3byBraW5kcyAtLSB0aG9zZSB0aGF0CiAJICAjIHVzZSB0aGUgY3VycmVudCByZXZpc2lvbiBhcyB0aGUgbWFqb3IgdmVyc2lvbgogCSAgIyBhbmQgdGhvc2UgdGhhdCBzdWJ0cmFjdCBhZ2UgYW5kIHVzZSBhZ2UgYXMKIAkgICMgYSBtaW5vciB2ZXJzaW9uLiAgQnV0LCB0aGVuIHRoZXJlIGlzIGlyaXgKLQkgICMgd2hpY2ggaGFzIGFuIGV4dHJhIDEgYWRkZWQganVzdCBmb3IgZnVuCisJICAjIHRoYXQgaGFzIGFuIGV4dHJhIDEgYWRkZWQganVzdCBmb3IgZnVuCiAJICAjCiAJICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KIAkgICMgY29ycmVjdCBsaW51eCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotCSAgZGFyd2lufGxpbnV4fG9zZnx3aW5kb3dzfG5vbmUpCisJICBkYXJ3aW58ZnJlZWJzZC1lbGZ8bGludXh8b3NmfHdpbmRvd3N8bm9uZSkKIAkgICAgZnVuY19hcml0aCAkbnVtYmVyX21ham9yICsgJG51bWJlcl9taW5vcgogCSAgICBjdXJyZW50PSRmdW5jX2FyaXRoX3Jlc3VsdAotCSAgICBhZ2U9IiRudW1iZXJfbWlub3IiCi0JICAgIHJldmlzaW9uPSIkbnVtYmVyX3JldmlzaW9uIgorCSAgICBhZ2U9JG51bWJlcl9taW5vcgorCSAgICByZXZpc2lvbj0kbnVtYmVyX3JldmlzaW9uCiAJICAgIDs7Ci0JICBmcmVlYnNkLWFvdXR8ZnJlZWJzZC1lbGZ8cW54fHN1bm9zKQotCSAgICBjdXJyZW50PSIkbnVtYmVyX21ham9yIgotCSAgICByZXZpc2lvbj0iJG51bWJlcl9taW5vciIKLQkgICAgYWdlPSIwIgorCSAgZnJlZWJzZC1hb3V0fHFueHxzdW5vcykKKwkgICAgY3VycmVudD0kbnVtYmVyX21ham9yCisJICAgIHJldmlzaW9uPSRudW1iZXJfbWlub3IKKwkgICAgYWdlPTAKIAkgICAgOzsKIAkgIGlyaXh8bm9uc3RvcHV4KQogCSAgICBmdW5jX2FyaXRoICRudW1iZXJfbWFqb3IgKyAkbnVtYmVyX21pbm9yCiAJICAgIGN1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0Ci0JICAgIGFnZT0iJG51bWJlcl9taW5vciIKLQkgICAgcmV2aXNpb249IiRudW1iZXJfbWlub3IiCisJICAgIGFnZT0kbnVtYmVyX21pbm9yCisJICAgIHJldmlzaW9uPSRudW1iZXJfbWlub3IKIAkgICAgbHRfaXJpeF9pbmNyZW1lbnQ9bm8KIAkgICAgOzsKIAkgICopCi0JICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiJG1vZGVuYW1lOiB1bmtub3duIGxpYnJhcnkgdmVyc2lvbiB0eXBlIFxgJHZlcnNpb25fdHlwZSciCisJICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAiJG1vZGVuYW1lOiB1bmtub3duIGxpYnJhcnkgdmVyc2lvbiB0eXBlICckdmVyc2lvbl90eXBlJyIKIAkgICAgOzsKIAkgIGVzYWMKIAkgIDs7CiAJbm8pCi0JICBjdXJyZW50PSIkMSIKLQkgIHJldmlzaW9uPSIkMiIKLQkgIGFnZT0iJDMiCisJICBjdXJyZW50PSQxCisJICByZXZpc2lvbj0kMgorCSAgYWdlPSQzCiAJICA7OwogCWVzYWMKIApAQCAtNzM2OCwzMCArODg0NSwzMCBAQAogCWNhc2UgJGN1cnJlbnQgaW4KIAkwfFsxLTldfFsxLTldWzAtOV18WzEtOV1bMC05XVswLTldfFsxLTldWzAtOV1bMC05XVswLTldfFsxLTldWzAtOV1bMC05XVswLTldWzAtOV0pIDs7CiAJKikKLQkgIGZ1bmNfZXJyb3IgIkNVUlJFTlQgXGAkY3VycmVudCcgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCi0JICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCisJICBmdW5jX2Vycm9yICJDVVJSRU5UICckY3VycmVudCcgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCisJICBmdW5jX2ZhdGFsX2Vycm9yICInJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKIAkgIDs7CiAJZXNhYwogCiAJY2FzZSAkcmV2aXNpb24gaW4KIAkwfFsxLTldfFsxLTldWzAtOV18WzEtOV1bMC05XVswLTldfFsxLTldWzAtOV1bMC05XVswLTldfFsxLTldWzAtOV1bMC05XVswLTldWzAtOV0pIDs7CiAJKikKLQkgIGZ1bmNfZXJyb3IgIlJFVklTSU9OIFxgJHJldmlzaW9uJyBtdXN0IGJlIGEgbm9ubmVnYXRpdmUgaW50ZWdlciIKLQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKKwkgIGZ1bmNfZXJyb3IgIlJFVklTSU9OICckcmV2aXNpb24nIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIgorCSAgZnVuY19mYXRhbF9lcnJvciAiJyR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJICA7OwogCWVzYWMKIAogCWNhc2UgJGFnZSBpbgogCTB8WzEtOV18WzEtOV1bMC05XXxbMS05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV18WzEtOV1bMC05XVswLTldWzAtOV1bMC05XSkgOzsKIAkqKQotCSAgZnVuY19lcnJvciAiQUdFIFxgJGFnZScgbXVzdCBiZSBhIG5vbm5lZ2F0aXZlIGludGVnZXIiCi0JICBmdW5jX2ZhdGFsX2Vycm9yICJcYCR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCisJICBmdW5jX2Vycm9yICJBR0UgJyRhZ2UnIG11c3QgYmUgYSBub25uZWdhdGl2ZSBpbnRlZ2VyIgorCSAgZnVuY19mYXRhbF9lcnJvciAiJyR2aW5mbycgaXMgbm90IHZhbGlkIHZlcnNpb24gaW5mb3JtYXRpb24iCiAJICA7OwogCWVzYWMKIAogCWlmIHRlc3QgIiRhZ2UiIC1ndCAiJGN1cnJlbnQiOyB0aGVuCi0JICBmdW5jX2Vycm9yICJBR0UgXGAkYWdlJyBpcyBncmVhdGVyIHRoYW4gdGhlIGN1cnJlbnQgaW50ZXJmYWNlIG51bWJlciBcYCRjdXJyZW50JyIKLQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJHZpbmZvJyBpcyBub3QgdmFsaWQgdmVyc2lvbiBpbmZvcm1hdGlvbiIKKwkgIGZ1bmNfZXJyb3IgIkFHRSAnJGFnZScgaXMgZ3JlYXRlciB0aGFuIHRoZSBjdXJyZW50IGludGVyZmFjZSBudW1iZXIgJyRjdXJyZW50JyIKKwkgIGZ1bmNfZmF0YWxfZXJyb3IgIickdmluZm8nIGlzIG5vdCB2YWxpZCB2ZXJzaW9uIGluZm9ybWF0aW9uIgogCWZpCiAKIAkjIENhbGN1bGF0ZSB0aGUgdmVyc2lvbiB2YXJpYWJsZXMuCkBAIC03NDA2LDI2ICs4ODgzLDM2IEBACiAJICAjIHZlcnN0cmluZyBmb3IgY29kaW5nIGl0IGludG8gdGhlIGxpYnJhcnkgaGVhZGVyCiAJICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGFnZQogCSAgbWFqb3I9LiRmdW5jX2FyaXRoX3Jlc3VsdAotCSAgdmVyc3VmZml4PSIkbWFqb3IuJGFnZS4kcmV2aXNpb24iCisJICB2ZXJzdWZmaXg9JG1ham9yLiRhZ2UuJHJldmlzaW9uCiAJICAjIERhcndpbiBsZCBkb2Vzbid0IGxpa2UgMCBmb3IgdGhlc2Ugb3B0aW9ucy4uLgogCSAgZnVuY19hcml0aCAkY3VycmVudCArIDEKIAkgIG1pbm9yX2N1cnJlbnQ9JGZ1bmNfYXJpdGhfcmVzdWx0Ci0JICB4bGN2ZXJzdHJpbmc9IiR7d2x9LWNvbXBhdGliaWxpdHlfdmVyc2lvbiAke3dsfSRtaW5vcl9jdXJyZW50ICR7d2x9LWN1cnJlbnRfdmVyc2lvbiAke3dsfSRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKKwkgIHhsY3ZlcnN0cmluZz0iJHdsLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkd2wkbWlub3JfY3VycmVudCAkd2wtY3VycmVudF92ZXJzaW9uICR3bCRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKIAkgIHZlcnN0cmluZz0iLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkbWlub3JfY3VycmVudCAtY3VycmVudF92ZXJzaW9uICRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKKyAgICAgICAgICAjIE9uIERhcndpbiBvdGhlciBjb21waWxlcnMKKyAgICAgICAgICBjYXNlICRDQyBpbgorICAgICAgICAgICAgICBuYWdmb3IqKQorICAgICAgICAgICAgICAgICAgdmVyc3RyaW5nPSIkd2wtY29tcGF0aWJpbGl0eV92ZXJzaW9uICR3bCRtaW5vcl9jdXJyZW50ICR3bC1jdXJyZW50X3ZlcnNpb24gJHdsJG1pbm9yX2N1cnJlbnQuJHJldmlzaW9uIgorICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgKikKKyAgICAgICAgICAgICAgICAgIHZlcnN0cmluZz0iLWNvbXBhdGliaWxpdHlfdmVyc2lvbiAkbWlub3JfY3VycmVudCAtY3VycmVudF92ZXJzaW9uICRtaW5vcl9jdXJyZW50LiRyZXZpc2lvbiIKKyAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYwogCSAgOzsKIAogCWZyZWVic2QtYW91dCkKLQkgIG1ham9yPSIuJGN1cnJlbnQiCi0JICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kcmV2aXNpb24iOworCSAgbWFqb3I9LiRjdXJyZW50CisJICB2ZXJzdWZmaXg9LiRjdXJyZW50LiRyZXZpc2lvbgogCSAgOzsKIAogCWZyZWVic2QtZWxmKQotCSAgbWFqb3I9Ii4kY3VycmVudCIKLQkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50IgorCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKKwkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKKwkgIHZlcnN1ZmZpeD0kbWFqb3IuJGFnZS4kcmV2aXNpb24KIAkgIDs7CiAKIAlpcml4IHwgbm9uc3RvcHV4KQotCSAgaWYgdGVzdCAiWCRsdF9pcml4X2luY3JlbWVudCIgPSAiWG5vIjsgdGhlbgorCSAgaWYgdGVzdCBubyA9ICIkbHRfaXJpeF9pbmNyZW1lbnQiOyB0aGVuCiAJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCiAJICBlbHNlCiAJICAgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlICsgMQpAQCAtNzQzNiw2OSArODkyMyw3NCBAQAogCSAgICBub25zdG9wdXgpIHZlcnN0cmluZ19wcmVmaXg9bm9uc3RvcHV4IDs7CiAJICAgICopICAgICAgICAgdmVyc3RyaW5nX3ByZWZpeD1zZ2kgOzsKIAkgIGVzYWMKLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZ19wcmVmaXgkbWFqb3IuJHJldmlzaW9uIgorCSAgdmVyc3RyaW5nPSR2ZXJzdHJpbmdfcHJlZml4JG1ham9yLiRyZXZpc2lvbgogCiAJICAjIEFkZCBpbiBhbGwgdGhlIGludGVyZmFjZXMgdGhhdCB3ZSBhcmUgY29tcGF0aWJsZSB3aXRoLgogCSAgbG9vcD0kcmV2aXNpb24KLQkgIHdoaWxlIHRlc3QgIiRsb29wIiAtbmUgMDsgZG8KKwkgIHdoaWxlIHRlc3QgMCAtbmUgIiRsb29wIjsgZG8KIAkgICAgZnVuY19hcml0aCAkcmV2aXNpb24gLSAkbG9vcAogCSAgICBpZmFjZT0kZnVuY19hcml0aF9yZXN1bHQKIAkgICAgZnVuY19hcml0aCAkbG9vcCAtIDEKIAkgICAgbG9vcD0kZnVuY19hcml0aF9yZXN1bHQKLQkgICAgdmVyc3RyaW5nPSIkdmVyc3RyaW5nX3ByZWZpeCRtYWpvci4kaWZhY2U6JHZlcnN0cmluZyIKKwkgICAgdmVyc3RyaW5nPSR2ZXJzdHJpbmdfcHJlZml4JG1ham9yLiRpZmFjZTokdmVyc3RyaW5nCiAJICBkb25lCiAKLQkgICMgQmVmb3JlIHRoaXMgcG9pbnQsICRtYWpvciBtdXN0IG5vdCBjb250YWluIGAuJy4KKwkgICMgQmVmb3JlIHRoaXMgcG9pbnQsICRtYWpvciBtdXN0IG5vdCBjb250YWluICcuJy4KIAkgIG1ham9yPS4kbWFqb3IKLQkgIHZlcnN1ZmZpeD0iJG1ham9yLiRyZXZpc2lvbiIKKwkgIHZlcnN1ZmZpeD0kbWFqb3IuJHJldmlzaW9uCiAJICA7OwogCiAJbGludXgpICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKIAkgIG1ham9yPS4kZnVuY19hcml0aF9yZXN1bHQKLQkgIHZlcnN1ZmZpeD0iJG1ham9yLiRhZ2UuJHJldmlzaW9uIgorCSAgdmVyc3VmZml4PSRtYWpvci4kYWdlLiRyZXZpc2lvbgogCSAgOzsKIAogCW9zZikKIAkgIGZ1bmNfYXJpdGggJGN1cnJlbnQgLSAkYWdlCiAJICBtYWpvcj0uJGZ1bmNfYXJpdGhfcmVzdWx0Ci0JICB2ZXJzdWZmaXg9Ii4kY3VycmVudC4kYWdlLiRyZXZpc2lvbiIKLQkgIHZlcnN0cmluZz0iJGN1cnJlbnQuJGFnZS4kcmV2aXNpb24iCisJICB2ZXJzdWZmaXg9LiRjdXJyZW50LiRhZ2UuJHJldmlzaW9uCisJICB2ZXJzdHJpbmc9JGN1cnJlbnQuJGFnZS4kcmV2aXNpb24KIAogCSAgIyBBZGQgaW4gYWxsIHRoZSBpbnRlcmZhY2VzIHRoYXQgd2UgYXJlIGNvbXBhdGlibGUgd2l0aC4KIAkgIGxvb3A9JGFnZQotCSAgd2hpbGUgdGVzdCAiJGxvb3AiIC1uZSAwOyBkbworCSAgd2hpbGUgdGVzdCAwIC1uZSAiJGxvb3AiOyBkbwogCSAgICBmdW5jX2FyaXRoICRjdXJyZW50IC0gJGxvb3AKIAkgICAgaWZhY2U9JGZ1bmNfYXJpdGhfcmVzdWx0CiAJICAgIGZ1bmNfYXJpdGggJGxvb3AgLSAxCiAJICAgIGxvb3A9JGZ1bmNfYXJpdGhfcmVzdWx0Ci0JICAgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2lmYWNlfS4wIgorCSAgICB2ZXJzdHJpbmc9JHZlcnN0cmluZzokaWZhY2UuMAogCSAgZG9uZQogCiAJICAjIE1ha2UgZXhlY3V0YWJsZXMgZGVwZW5kIG9uIG91ciBjdXJyZW50IHZlcnNpb24uCi0JICBmdW5jX2FwcGVuZCB2ZXJzdHJpbmcgIjoke2N1cnJlbnR9LjAiCisJICBmdW5jX2FwcGVuZCB2ZXJzdHJpbmcgIjokY3VycmVudC4wIgogCSAgOzsKIAogCXFueCkKLQkgIG1ham9yPSIuJGN1cnJlbnQiCi0JICB2ZXJzdWZmaXg9Ii4kY3VycmVudCIKKwkgIG1ham9yPS4kY3VycmVudAorCSAgdmVyc3VmZml4PS4kY3VycmVudAorCSAgOzsKKworCXNjbykKKwkgIG1ham9yPS4kY3VycmVudAorCSAgdmVyc3VmZml4PS4kY3VycmVudAogCSAgOzsKIAogCXN1bm9zKQotCSAgbWFqb3I9Ii4kY3VycmVudCIKLQkgIHZlcnN1ZmZpeD0iLiRjdXJyZW50LiRyZXZpc2lvbiIKKwkgIG1ham9yPS4kY3VycmVudAorCSAgdmVyc3VmZml4PS4kY3VycmVudC4kcmV2aXNpb24KIAkgIDs7CiAKIAl3aW5kb3dzKQogCSAgIyBVc2UgJy0nIHJhdGhlciB0aGFuICcuJywgc2luY2Ugd2Ugb25seSB3YW50IG9uZQotCSAgIyBleHRlbnNpb24gb24gRE9TIDguMyBmaWxlc3lzdGVtcy4KKwkgICMgZXh0ZW5zaW9uIG9uIERPUyA4LjMgZmlsZSBzeXN0ZW1zLgogCSAgZnVuY19hcml0aCAkY3VycmVudCAtICRhZ2UKIAkgIG1ham9yPSRmdW5jX2FyaXRoX3Jlc3VsdAotCSAgdmVyc3VmZml4PSItJG1ham9yIgorCSAgdmVyc3VmZml4PS0kbWFqb3IKIAkgIDs7CiAKIAkqKQotCSAgZnVuY19mYXRhbF9jb25maWd1cmF0aW9uICJ1bmtub3duIGxpYnJhcnkgdmVyc2lvbiB0eXBlIFxgJHZlcnNpb25fdHlwZSciCisJICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gInVua25vd24gbGlicmFyeSB2ZXJzaW9uIHR5cGUgJyR2ZXJzaW9uX3R5cGUnIgogCSAgOzsKIAllc2FjCiAKQEAgLTc1MTIsNDIgKzkwMDQsNDUgQEAKIAkgICAgdmVyc3RyaW5nPQogCSAgICA7OwogCSAgKikKLQkgICAgdmVyc3RyaW5nPSIwLjAiCisJICAgIHZlcnN0cmluZz0wLjAKIAkgICAgOzsKIAkgIGVzYWMKLQkgIGlmIHRlc3QgIiRuZWVkX3ZlcnNpb24iID0gbm87IHRoZW4KKwkgIGlmIHRlc3Qgbm8gPSAiJG5lZWRfdmVyc2lvbiI7IHRoZW4KIAkgICAgdmVyc3VmZml4PQogCSAgZWxzZQotCSAgICB2ZXJzdWZmaXg9Ii4wLjAiCisJICAgIHZlcnN1ZmZpeD0uMC4wCiAJICBmaQogCWZpCiAKIAkjIFJlbW92ZSB2ZXJzaW9uIGluZm8gZnJvbSBuYW1lIGlmIHZlcnNpb25pbmcgc2hvdWxkIGJlIGF2b2lkZWQKLQlpZiB0ZXN0ICIkYXZvaWRfdmVyc2lvbiIgPSB5ZXMgJiYgdGVzdCAiJG5lZWRfdmVyc2lvbiIgPSBubzsgdGhlbgorCWlmIHRlc3QgeWVzLG5vID0gIiRhdm9pZF92ZXJzaW9uLCRuZWVkX3ZlcnNpb24iOyB0aGVuCiAJICBtYWpvcj0KIAkgIHZlcnN1ZmZpeD0KLQkgIHZlcnN0cmluZz0iIgorCSAgdmVyc3RyaW5nPQogCWZpCiAKIAkjIENoZWNrIHRvIHNlZSBpZiB0aGUgYXJjaGl2ZSB3aWxsIGhhdmUgdW5kZWZpbmVkIHN5bWJvbHMuCi0JaWYgdGVzdCAiJGFsbG93X3VuZGVmaW5lZCIgPSB5ZXM7IHRoZW4KLQkgIGlmIHRlc3QgIiRhbGxvd191bmRlZmluZWRfZmxhZyIgPSB1bnN1cHBvcnRlZDsgdGhlbgotCSAgICBmdW5jX3dhcm5pbmcgInVuZGVmaW5lZCBzeW1ib2xzIG5vdCBhbGxvd2VkIGluICRob3N0IHNoYXJlZCBsaWJyYXJpZXMiCi0JICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwotCSAgICBidWlsZF9vbGRfbGlicz15ZXMKKwlpZiB0ZXN0IHllcyA9ICIkYWxsb3dfdW5kZWZpbmVkIjsgdGhlbgorCSAgaWYgdGVzdCB1bnN1cHBvcnRlZCA9ICIkYWxsb3dfdW5kZWZpbmVkX2ZsYWciOyB0aGVuCisJICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KKwkgICAgICBmdW5jX3dhcm5pbmcgInVuZGVmaW5lZCBzeW1ib2xzIG5vdCBhbGxvd2VkIGluICRob3N0IHNoYXJlZCBsaWJyYXJpZXM7IGJ1aWxkaW5nIHN0YXRpYyBvbmx5IgorCSAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubworCSAgICBlbHNlCisJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2FuJ3QgYnVpbGQgJGhvc3Qgc2hhcmVkIGxpYnJhcnkgdW5sZXNzIC1uby11bmRlZmluZWQgaXMgc3BlY2lmaWVkIgorCSAgICBmaQogCSAgZmkKIAllbHNlCiAJICAjIERvbid0IGFsbG93IHVuZGVmaW5lZCBzeW1ib2xzLgotCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9IiRub191bmRlZmluZWRfZmxhZyIKKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnPSRub191bmRlZmluZWRfZmxhZwogCWZpCiAKICAgICAgIGZpCiAKLSAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkbGlibmFtZSIgIiRsaWJuYW1lIiAieWVzIgorICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiIDoKICAgICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkc3ltZmlsZW9iaiIKLSAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CisgICAgICB0ZXN0ICIgIiA9ICIkbGlib2JqcyIgJiYgbGlib2Jqcz0KIAotICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKyAgICAgIGlmIHRlc3QgcmVsaW5rICE9ICIkb3B0X21vZGUiOyB0aGVuCiAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKIAkjIG1heSBoYXZlIGJlZW4gY3JlYXRlZCB3aGVuIGNvbXBpbGluZyBQSUMgb2JqZWN0cy4KIAlyZW1vdmVsaXN0PQpAQCAtNzU1Niw4ICs5MDUxLDggQEAKIAkgIGNhc2UgJHAgaW4KIAkgICAgKi4kb2JqZXh0IHwgKi5nY25vKQogCSAgICAgICA7OwotCSAgICAkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSB8ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiogfCAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9JHtyZWxlYXNlfS4qKQotCSAgICAgICBpZiB0ZXN0ICJYJHByZWNpb3VzX2ZpbGVzX3JlZ2V4IiAhPSAiWCI7IHRoZW4KKwkgICAgJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUgfCAkb3V0cHV0X29iamRpci8kbGlibmFtZS4qIHwgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS4qKQorCSAgICAgICBpZiB0ZXN0IC1uICIkcHJlY2lvdXNfZmlsZXNfcmVnZXgiOyB0aGVuCiAJCSBpZiAkRUNITyAiJHAiIHwgJEVHUkVQIC1lICIkcHJlY2lvdXNfZmlsZXNfcmVnZXgiID4vZGV2L251bGwgMj4mMQogCQkgdGhlbgogCQkgICBjb250aW51ZQpAQCAtNzU3MywxMSArOTA2OCwxMSBAQAogICAgICAgZmkKIAogICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCi0gICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJGJ1aWxkX29sZF9saWJzIiAmJiB0ZXN0IGNvbnZlbmllbmNlICE9ICIkYnVpbGRfbGlidG9vbF9saWJzIjsgdGhlbgogCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgogCiAJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgotCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAorCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiRsaWJleHQkL2Q7ICRsbzJvIiB8ICROTDJTUGAKICAgICAgIGZpCiAKICAgICAgICMgRWxpbWluYXRlIGFsbCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMuCkBAIC03NTk4LDEzICs5MDkzLDEzIEBACiAJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CiAJICBlc2FjCiAJZG9uZQotCWlmIHRlc3QgIiRoYXJkY29kZV9pbnRvX2xpYnMiICE9IHllcyB8fCB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzOyB0aGVuCisJaWYgdGVzdCB5ZXMgIT0gIiRoYXJkY29kZV9pbnRvX2xpYnMiIHx8IHRlc3QgeWVzID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KIAkgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfeHJwYXRoICRkZXBlbmRlbmN5X2xpYnMiCiAJZmkKICAgICAgIGZpCiAKICAgICAgICMgTWFrZSBzdXJlIGRsZmlsZXMgY29udGFpbnMgb25seSB1bmlxdWUgZmlsZXMgdGhhdCB3b24ndCBiZSBkbHByZW9wZW5lZAotICAgICAgb2xkX2RsZmlsZXM9IiRkbGZpbGVzIgorICAgICAgb2xkX2RsZmlsZXM9JGRsZmlsZXMKICAgICAgIGRsZmlsZXM9CiAgICAgICBmb3IgbGliIGluICRvbGRfZGxmaWxlczsgZG8KIAljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgpAQCAtNzYxNCw3ICs5MTA5LDcgQEAKICAgICAgIGRvbmUKIAogICAgICAgIyBNYWtlIHN1cmUgZGxwcmVmaWxlcyBjb250YWlucyBvbmx5IHVuaXF1ZSBmaWxlcwotICAgICAgb2xkX2RscHJlZmlsZXM9IiRkbHByZWZpbGVzIgorICAgICAgb2xkX2RscHJlZmlsZXM9JGRscHJlZmlsZXMKICAgICAgIGRscHJlZmlsZXM9CiAgICAgICBmb3IgbGliIGluICRvbGRfZGxwcmVmaWxlczsgZG8KIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCkBAIC03NjIzLDcgKzkxMTgsNyBAQAogCWVzYWMKICAgICAgIGRvbmUKIAotICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAJaWYgdGVzdCAtbiAiJHJwYXRoIjsgdGhlbgogCSAgY2FzZSAkaG9zdCBpbgogCSAgKi0qLWN5Z3dpbiogfCAqLSotbWluZ3cqIHwgKi0qLXB3MzIqIHwgKi0qLW9zMiogfCAqLSotYmVvcyogfCAqLWNlZ2NjKiB8ICotKi1oYWlrdSopCkBAIC03NjQ3LDcgKzkxNDIsNyBAQAogCSAgICA7OwogCSAgKikKIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KLQkgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbmVlZF9sYyIgPSAieWVzIjsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIjsgdGhlbgogCSAgICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtbGMiCiAJICAgIGZpCiAJICAgIDs7CkBAIC03NjYzLDkgKzkxNTgsOSBAQAogCSMgSSdtIG5vdCBzdXJlIGlmIEknbSB0cmVhdGluZyB0aGUgcmVsZWFzZSBjb3JyZWN0bHkuICBJIHRoaW5rCiAJIyByZWxlYXNlIHNob3VsZCBzaG93IHVwIGluIHRoZSAtbCAoaWUgLWxnbXA1KSBzbyB3ZSBkb24ndCB3YW50IHRvCiAJIyBhZGQgaXQgaW4gdHdpY2UuICBJcyB0aGF0IGNvcnJlY3Q/Ci0JcmVsZWFzZT0iIgotCXZlcnN1ZmZpeD0iIgotCW1ham9yPSIiCisJcmVsZWFzZT0KKwl2ZXJzdWZmaXg9CisJbWFqb3I9CiAJbmV3ZGVwbGlicz0KIAlkcm9wcGVkZGVwcz1ubwogCWNhc2UgJGRlcGxpYnNfY2hlY2tfbWV0aG9kIGluCkBAIC03Njk0LDIwICs5MTg5LDIwIEBACiAJICAgICAgLWwqKQogCQlmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGkiCiAJCW5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisJCWlmIHRlc3QgeWVzID0gIiRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiOyB0aGVuCiAJCSAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgKiIgJGkgIiopCiAJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0JCSAgICBpPSIiCisJCSAgICBpPQogCQkgICAgOzsKIAkJICBlc2FjCiAJCWZpCi0JCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KKwkJaWYgdGVzdCAtbiAiJGkiOyB0aGVuCiAJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCiAJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAogCQkgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CiAJCSAgZGVwbGliX21hdGNoPSQxCi0JCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMDsgdGhlbgogCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgogCQkgIGVsc2UKIAkJICAgIGRyb3BwZWRkZXBzPXllcwpAQCAtNzczNywyMCArOTIzMiwyMCBAQAogCQkkb3B0X2RyeV9ydW4gfHwgJFJNIGNvbmZ0ZXN0CiAJCWlmICRMVENDICRMVENGTEFHUyAtbyBjb25mdGVzdCBjb25mdGVzdC5jICRpOyB0aGVuCiAJCSAgbGRkX291dHB1dD1gbGRkIGNvbmZ0ZXN0YAotCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKwkJICBpZiB0ZXN0IHllcyA9ICIkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIjsgdGhlbgogCQkgICAgY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSAgICAqIiAkaSAiKikKIAkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotCQkgICAgICBpPSIiCisJCSAgICAgIGk9CiAJCSAgICAgIDs7CiAJCSAgICBlc2FjCiAJCSAgZmkKLQkJICBpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCisJCSAgaWYgdGVzdCAtbiAiJGkiOyB0aGVuCiAJCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKIAkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CiAJCSAgICBkZXBsaWJfbWF0Y2g9JDEKLQkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KKwkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMDsgdGhlbgogCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCiAJCSAgICBlbHNlCiAJCSAgICAgIGRyb3BwZWRkZXBzPXllcwpAQCAtNzc4NywyNCArOTI4MiwyNCBAQAogCSAgICAtbCopCiAJICAgICAgZnVuY19zdHJpcG5hbWUgLWwgJycgIiRhX2RlcGxpYiIKIAkgICAgICBuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLQkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisJICAgICAgaWYgdGVzdCB5ZXMgPSAiJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyI7IHRoZW4KIAkJY2FzZSAiICRwcmVkZXBzICRwb3N0ZGVwcyAiIGluCiAJCSoiICRhX2RlcGxpYiAiKikKIAkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotCQkgIGFfZGVwbGliPSIiCisJCSAgYV9kZXBsaWI9CiAJCSAgOzsKIAkJZXNhYwogCSAgICAgIGZpCi0JICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIiA7IHRoZW4KKwkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiOyB0aGVuCiAJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAogCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgogCQkgIGxpYm5hbWVnbG9iPWBmdW5jX2VjaG9fYWxsICIkbGlibmFtZSIgfCAkU0VEIC1lICRmaWxlX21hZ2ljX2dsb2JgCiAJCWVsc2UKIAkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQogCQlmaQotCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAorCQl0ZXN0IHllcyA9ICIkd2FudF9ub2Nhc2VnbG9iIiAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAogCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KLQkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgorCQkgIGlmIHRlc3QgeWVzID0gIiR3YW50X25vY2FzZWdsb2IiOyB0aGVuCiAJCSAgICBzaG9wdCAtcyBub2Nhc2VnbG9iCiAJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCiAJCSAgICAkbm9jYXNlZ2xvYgpAQCAtNzgyMiwyNSArOTMxNywyNSBAQAogCQkgICAgICAjIFdlIG1pZ2h0IHN0aWxsIGVudGVyIGFuIGVuZGxlc3MgbG9vcCwgc2luY2UgYSBsaW5rCiAJCSAgICAgICMgbG9vcCBjYW4gYmUgY2xvc2VkIHdoaWxlIHdlIGZvbGxvdyBsaW5rcywKIAkJICAgICAgIyBidXQgc28gd2hhdD8KLQkJICAgICAgcG90bGliPSIkcG90ZW50X2xpYiIKKwkJICAgICAgcG90bGliPSRwb3RlbnRfbGliCiAJCSAgICAgIHdoaWxlIHRlc3QgLWggIiRwb3RsaWIiIDI+L2Rldi9udWxsOyBkbwotCQkJcG90bGlibGluaz1gbHMgLWxkICRwb3RsaWIgfCAke1NFRH0gJ3MvLiogLT4gLy8nYAorCQkJcG90bGlibGluaz1gbHMgLWxkICRwb3RsaWIgfCAkU0VEICdzLy4qIC0+IC8vJ2AKIAkJCWNhc2UgJHBvdGxpYmxpbmsgaW4KLQkJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcG90bGliPSIkcG90bGlibGluayI7OwotCQkJKikgcG90bGliPWAkRUNITyAiJHBvdGxpYiIgfCAkU0VEICdzLFteL10qJCwsJ2AiJHBvdGxpYmxpbmsiOzsKKwkJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgcG90bGliPSRwb3RsaWJsaW5rOzsKKwkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAnc3xbXi9dKiR8fCdgIiRwb3RsaWJsaW5rIjs7CiAJCQllc2FjCiAJCSAgICAgIGRvbmUKIAkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKIAkJCSAkU0VEIC1lIDEwcSB8CiAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KIAkJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0JCQlhX2RlcGxpYj0iIgorCQkJYV9kZXBsaWI9CiAJCQlicmVhayAyCiAJCSAgICAgIGZpCiAJCSAgZG9uZQogCQlkb25lCiAJICAgICAgZmkKLQkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiI7IHRoZW4KIAkJZHJvcHBlZGRlcHM9eWVzCiAJCWVjaG8KIAkJJEVDSE8gIioqKiBXYXJuaW5nOiBsaW5rZXIgcGF0aCBkb2VzIG5vdCBoYXZlIHJlYWwgZmlsZSBmb3IgbGlicmFyeSAkYV9kZXBsaWIuIgpAQCAtNzg0OCw3ICs5MzQzLDcgQEAKIAkJZWNobyAiKioqIHlvdSBsaW5rIHRvIHRoaXMgbGlicmFyeS4gIEJ1dCBJIGNhbiBvbmx5IGRvIHRoaXMgaWYgeW91IGhhdmUgYSIKIAkJZWNobyAiKioqIHNoYXJlZCB2ZXJzaW9uIG9mIHRoZSBsaWJyYXJ5LCB3aGljaCB5b3UgZG8gbm90IGFwcGVhciB0byBoYXZlIgogCQllY2hvICIqKiogYmVjYXVzZSBJIGRpZCBjaGVjayB0aGUgbGlua2VyIHBhdGggbG9va2luZyBmb3IgYSBmaWxlIHN0YXJ0aW5nIgotCQlpZiB0ZXN0IC16ICIkcG90bGliIiA7IHRoZW4KKwkJaWYgdGVzdCAteiAiJHBvdGxpYiI7IHRoZW4KIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYnV0IG5vIGNhbmRpZGF0ZXMgd2VyZSBmb3VuZC4gKC4uLmZvciBmaWxlIG1hZ2ljIHRlc3QpIgogCQllbHNlCiAJCSAgJEVDSE8gIioqKiB3aXRoICRsaWJuYW1lIGFuZCBub25lIG9mIHRoZSBjYW5kaWRhdGVzIHBhc3NlZCBhIGZpbGUgZm9ybWF0IHRlc3QiCkBAIC03ODcxLDMwICs5MzY2LDMwIEBACiAJICAgIC1sKikKIAkgICAgICBmdW5jX3N0cmlwbmFtZSAtbCAnJyAiJGFfZGVwbGliIgogCSAgICAgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKwkgICAgICBpZiB0ZXN0IHllcyA9ICIkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIjsgdGhlbgogCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KIAkJKiIgJGFfZGVwbGliICIqKQogCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0JCSAgYV9kZXBsaWI9IiIKKwkJICBhX2RlcGxpYj0KIAkJICA7OwogCQllc2FjCiAJICAgICAgZmkKLQkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgorCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiI7IHRoZW4KIAkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCiAJCWZvciBpIGluICRsaWJfc2VhcmNoX3BhdGggJHN5c19saWJfc2VhcmNoX3BhdGggJHNobGliX3NlYXJjaF9wYXRoOyBkbwogCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAogCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KLQkJICAgIHBvdGxpYj0iJHBvdGVudF9saWIiICMgc2VlIHN5bWxpbmstY2hlY2sgYWJvdmUgaW4gZmlsZV9tYWdpYyB0ZXN0CisJCSAgICBwb3RsaWI9JHBvdGVudF9saWIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKIAkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCiAJCSAgICAgICAkRUdSRVAgIiRtYXRjaF9wYXR0ZXJuX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgogCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotCQkgICAgICBhX2RlcGxpYj0iIgorCQkgICAgICBhX2RlcGxpYj0KIAkJICAgICAgYnJlYWsgMgogCQkgICAgZmkKIAkJICBkb25lCiAJCWRvbmUKIAkgICAgICBmaQotCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCisJICAgICAgaWYgdGVzdCAtbiAiJGFfZGVwbGliIjsgdGhlbgogCQlkcm9wcGVkZGVwcz15ZXMKIAkJZWNobwogCQkkRUNITyAiKioqIFdhcm5pbmc6IGxpbmtlciBwYXRoIGRvZXMgbm90IGhhdmUgcmVhbCBmaWxlIGZvciBsaWJyYXJ5ICRhX2RlcGxpYi4iCkBAIC03OTAyLDcgKzkzOTcsNyBAQAogCQllY2hvICIqKiogeW91IGxpbmsgdG8gdGhpcyBsaWJyYXJ5LiAgQnV0IEkgY2FuIG9ubHkgZG8gdGhpcyBpZiB5b3UgaGF2ZSBhIgogCQllY2hvICIqKiogc2hhcmVkIHZlcnNpb24gb2YgdGhlIGxpYnJhcnksIHdoaWNoIHlvdSBkbyBub3QgYXBwZWFyIHRvIGhhdmUiCiAJCWVjaG8gIioqKiBiZWNhdXNlIEkgZGlkIGNoZWNrIHRoZSBsaW5rZXIgcGF0aCBsb29raW5nIGZvciBhIGZpbGUgc3RhcnRpbmciCi0JCWlmIHRlc3QgLXogIiRwb3RsaWIiIDsgdGhlbgorCQlpZiB0ZXN0IC16ICIkcG90bGliIjsgdGhlbgogCQkgICRFQ0hPICIqKiogd2l0aCAkbGlibmFtZSBidXQgbm8gY2FuZGlkYXRlcyB3ZXJlIGZvdW5kLiAoLi4uZm9yIHJlZ2V4IHBhdHRlcm4gdGVzdCkiCiAJCWVsc2UKIAkJICAkRUNITyAiKioqIHdpdGggJGxpYm5hbWUgYW5kIG5vbmUgb2YgdGhlIGNhbmRpZGF0ZXMgcGFzc2VkIGEgZmlsZSBmb3JtYXQgdGVzdCIKQEAgLTc5MTgsMTggKzk0MTMsMTggQEAKIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCiAJICA7OwogCW5vbmUgfCB1bmtub3duIHwgKikKLQkgIG5ld2RlcGxpYnM9IiIKKwkgIG5ld2RlcGxpYnM9CiAJICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkZGVwbGlicyIgfCAkU0VEICdzLyAtbGMkLy87IHMvIC1bTFJdW14gXSovL2cnYAotCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotCSAgICBmb3IgaSBpbiAkcHJlZGVwcyAkcG9zdGRlcHMgOyBkbworCSAgaWYgdGVzdCB5ZXMgPSAiJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyI7IHRoZW4KKwkgICAgZm9yIGkgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbwogCSAgICAgICMgY2FuJ3QgdXNlIFhzZWQgYmVsb3csIGJlY2F1c2UgJGkgbWlnaHQgY29udGFpbiAnLycKLQkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkdG1wX2RlcGxpYnMiIHwgJFNFRCAicywkaSwsImAKKwkgICAgICB0bXBfZGVwbGlicz1gJEVDSE8gIiAkdG1wX2RlcGxpYnMiIHwgJFNFRCAic3wkaXx8ImAKIAkgICAgZG9uZQogCSAgZmkKIAkgIGNhc2UgJHRtcF9kZXBsaWJzIGluCiAJICAqWyFcCVwgXSopCiAJICAgIGVjaG8KLQkgICAgaWYgdGVzdCAiWCRkZXBsaWJzX2NoZWNrX21ldGhvZCIgPSAiWG5vbmUiOyB0aGVuCisJICAgIGlmIHRlc3Qgbm9uZSA9ICIkZGVwbGlic19jaGVja19tZXRob2QiOyB0aGVuCiAJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcGxhdGZvcm0uIgogCSAgICBlbHNlCiAJICAgICAgZWNobyAiKioqIFdhcm5pbmc6IGludGVyLWxpYnJhcnkgZGVwZW5kZW5jaWVzIGFyZSBub3Qga25vd24gdG8gYmUgc3VwcG9ydGVkLiIKQEAgLTc5NTMsOCArOTQ0OCw4IEBACiAJICA7OwogCWVzYWMKIAotCWlmIHRlc3QgIiRkcm9wcGVkZGVwcyIgPSB5ZXM7IHRoZW4KLQkgIGlmIHRlc3QgIiRtb2R1bGUiID0geWVzOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJGRyb3BwZWRkZXBzIjsgdGhlbgorCSAgaWYgdGVzdCB5ZXMgPSAiJG1vZHVsZSI7IHRoZW4KIAkgICAgZWNobwogCSAgICBlY2hvICIqKiogV2FybmluZzogbGlidG9vbCBjb3VsZCBub3Qgc2F0aXNmeSBhbGwgZGVjbGFyZWQgaW50ZXItbGlicmFyeSIKIAkgICAgJEVDSE8gIioqKiBkZXBlbmRlbmNpZXMgb2YgbW9kdWxlICRsaWJuYW1lLiAgVGhlcmVmb3JlLCBsaWJ0b29sIHdpbGwgY3JlYXRlIgpAQCAtNzk2MywxMiArOTQ1OCwxMiBAQAogCSAgICBpZiB0ZXN0IC16ICIkZ2xvYmFsX3N5bWJvbF9waXBlIjsgdGhlbgogCSAgICAgIGVjaG8KIAkgICAgICBlY2hvICIqKiogSG93ZXZlciwgdGhpcyB3b3VsZCBvbmx5IHdvcmsgaWYgbGlidG9vbCB3YXMgYWJsZSB0byBleHRyYWN0IHN5bWJvbCIKLQkgICAgICBlY2hvICIqKiogbGlzdHMgZnJvbSBhIHByb2dyYW0sIHVzaW5nIFxgbm0nIG9yIGVxdWl2YWxlbnQsIGJ1dCBsaWJ0b29sIGNvdWxkIgorCSAgICAgIGVjaG8gIioqKiBsaXN0cyBmcm9tIGEgcHJvZ3JhbSwgdXNpbmcgJ25tJyBvciBlcXVpdmFsZW50LCBidXQgbGlidG9vbCBjb3VsZCIKIAkgICAgICBlY2hvICIqKiogbm90IGZpbmQgc3VjaCBhIHByb2dyYW0uICBTbywgdGhpcyBtb2R1bGUgaXMgcHJvYmFibHkgdXNlbGVzcy4iCi0JICAgICAgZWNobyAiKioqIFxgbm0nIGZyb20gR05VIGJpbnV0aWxzIGFuZCBhIGZ1bGwgcmVidWlsZCBtYXkgaGVscC4iCisJICAgICAgZWNobyAiKioqICdubScgZnJvbSBHTlUgYmludXRpbHMgYW5kIGEgZnVsbCByZWJ1aWxkIG1heSBoZWxwLiIKIAkgICAgZmkKLQkgICAgaWYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IG5vOyB0aGVuCi0JICAgICAgb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKwkgICAgaWYgdGVzdCBubyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCisJICAgICAgb2xkbGlicz0kb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0CiAJICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW1vZHVsZQogCSAgICAgIGJ1aWxkX29sZF9saWJzPXllcwogCSAgICBlbHNlCkBAIC03OTc5LDE0ICs5NDc0LDE0IEBACiAJICAgIGVjaG8gIioqKiBhdXRvbWF0aWNhbGx5IGFkZGVkIHdoZW5ldmVyIGEgcHJvZ3JhbSBpcyBsaW5rZWQgd2l0aCB0aGlzIGxpYnJhcnkiCiAJICAgIGVjaG8gIioqKiBvciBpcyBkZWNsYXJlZCB0byAtZGxvcGVuIGl0LiIKIAotCSAgICBpZiB0ZXN0ICIkYWxsb3dfdW5kZWZpbmVkIiA9IG5vOyB0aGVuCisJICAgIGlmIHRlc3Qgbm8gPSAiJGFsbG93X3VuZGVmaW5lZCI7IHRoZW4KIAkgICAgICBlY2hvCiAJICAgICAgZWNobyAiKioqIFNpbmNlIHRoaXMgbGlicmFyeSBtdXN0IG5vdCBjb250YWluIHVuZGVmaW5lZCBzeW1ib2xzLCIKIAkgICAgICBlY2hvICIqKiogYmVjYXVzZSBlaXRoZXIgdGhlIHBsYXRmb3JtIGRvZXMgbm90IHN1cHBvcnQgdGhlbSBvciIKIAkgICAgICBlY2hvICIqKiogaXQgd2FzIGV4cGxpY2l0bHkgcmVxdWVzdGVkIHdpdGggLW5vLXVuZGVmaW5lZCwiCiAJICAgICAgZWNobyAiKioqIGxpYnRvb2wgd2lsbCBvbmx5IGNyZWF0ZSBhIHN0YXRpYyB2ZXJzaW9uIG9mIGl0LiIKLQkgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0gbm87IHRoZW4KLQkJb2xkbGlicz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKKwkgICAgICBpZiB0ZXN0IG5vID0gIiRidWlsZF9vbGRfbGlicyI7IHRoZW4KKwkJb2xkbGlicz0kb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0CiAJCWJ1aWxkX2xpYnRvb2xfbGlicz1tb2R1bGUKIAkJYnVpbGRfb2xkX2xpYnM9eWVzCiAJICAgICAgZWxzZQpAQCAtODAzMiw3ICs5NTI3LDcgQEAKIAkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQotICAgICAgZGVwbGlicz0iJG5ld19saWJzIgorICAgICAgZGVwbGlicz0kbmV3X2xpYnMKIAogICAgICAgIyBBbGwgdGhlIGxpYnJhcnktc3BlY2lmaWMgdmFyaWFibGVzIChpbnN0YWxsX2xpYmRpciBpcyBzZXQgYWJvdmUpLgogICAgICAgbGlicmFyeV9uYW1lcz0KQEAgLTgwNDAsMjUgKzk1MzUsMjUgQEAKICAgICAgIGRsbmFtZT0KIAogICAgICAgIyBUZXN0IGFnYWluLCB3ZSBtYXkgaGF2ZSBkZWNpZGVkIG5vdCB0byBidWlsZCBpdCBhbnkgbW9yZQotICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXM7IHRoZW4KLQkjIFJlbW92ZSAke3dsfSBpbnN0YW5jZXMgd2hlbiBsaW5raW5nIHdpdGggbGQuCisgICAgICBpZiB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIjsgdGhlbgorCSMgUmVtb3ZlICR3bCBpbnN0YW5jZXMgd2hlbiBsaW5raW5nIHdpdGggbGQuCiAJIyBGSVhNRTogc2hvdWxkIHRlc3QgdGhlIHJpZ2h0IF9jbWRzIHZhcmlhYmxlLgogCWNhc2UgJGFyY2hpdmVfY21kcyBpbgogCSAgKlwkTERcICopIHdsPSA7OwogICAgICAgICBlc2FjCi0JaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkaGFyZGNvZGVfaW50b19saWJzIjsgdGhlbgogCSAgIyBIYXJkY29kZSB0aGUgbGlicmFyeSBwYXRocwogCSAgaGFyZGNvZGVfbGliZGlycz0KIAkgIGRlcF9ycGF0aD0KLQkgIHJwYXRoPSIkZmluYWxpemVfcnBhdGgiCi0JICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCisJICBycGF0aD0kZmluYWxpemVfcnBhdGgKKwkgIHRlc3QgcmVsaW5rID0gIiRvcHRfbW9kZSIgfHwgcnBhdGg9JGNvbXBpbGVfcnBhdGgkcnBhdGgKIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwogCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KIAkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCiAJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CiAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisJCSAgaGFyZGNvZGVfbGliZGlycz0kbGliZGlyCiAJCWVsc2UKIAkJICAjIEp1c3QgYWNjdW11bGF0ZSB0aGUgdW5pcXVlIGxpYmRpcnMuCiAJCSAgY2FzZSAkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgaW4KQEAgLTgwODMsNyArOTU3OCw3IEBACiAJICAjIFN1YnN0aXR1dGUgdGhlIGhhcmRjb2RlZCBsaWJkaXJzIGludG8gdGhlIHJwYXRoLgogCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCiAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLQkgICAgbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKwkgICAgbGliZGlyPSRoYXJkY29kZV9saWJkaXJzCiAJICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCiAJICBmaQogCSAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkcGVybV9ycGF0aCI7IHRoZW4KQEAgLTgwOTcsOCArOTU5Miw4IEBACiAJICB0ZXN0IC1uICIkZGVwX3JwYXRoIiAmJiBkZXBsaWJzPSIkZGVwX3JwYXRoICRkZXBsaWJzIgogCWZpCiAKLQlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCi0JdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorCXNobGlicGF0aD0kZmluYWxpemVfc2hsaWJwYXRoCisJdGVzdCByZWxpbmsgPSAiJG9wdF9tb2RlIiB8fCBzaGxpYnBhdGg9JGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aAogCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCiAJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCiAJZmkKQEAgLTgxMDgsMTkgKzk2MDMsMTkgQEAKIAlldmFsIGxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIKIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKIAlzaGlmdAotCXJlYWxuYW1lPSIkMSIKKwlyZWFsbmFtZT0kMQogCXNoaWZ0CiAKIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCiAJICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCiAJZWxzZQotCSAgc29uYW1lPSIkcmVhbG5hbWUiCisJICBzb25hbWU9JHJlYWxuYW1lCiAJZmkKIAlpZiB0ZXN0IC16ICIkZGxuYW1lIjsgdGhlbgogCSAgZGxuYW1lPSRzb25hbWUKIAlmaQogCi0JbGliPSIkb3V0cHV0X29iamRpci8kcmVhbG5hbWUiCisJbGliPSRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZQogCWxpbmtuYW1lcz0KIAlmb3IgbGluawogCWRvCkBAIC04MTM0LDcgKzk2MjksNyBAQAogCWRlbGZpbGVzPQogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKLQkgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS51ZXhwIgorCSAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cAogCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCiAJZmkKIApAQCAtODE0MywzMSArOTYzOCwzMSBAQAogCWN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCiAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLXogIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KIAkgICAgIyBleHBvcnRpbmcgdXNpbmcgdXNlciBzdXBwbGllZCBzeW1maWxlCi0JICAgIGlmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiAhPSB4RVhQT1JUUzsgdGhlbgorCSAgICBmdW5jX2RsbF9kZWZfcCAiJGV4cG9ydF9zeW1ib2xzIiB8fCB7CiAJICAgICAgIyBhbmQgaXQncyBOT1QgYWxyZWFkeSBhIC5kZWYgZmlsZS4gTXVzdCBmaWd1cmUgb3V0CiAJICAgICAgIyB3aGljaCBvZiB0aGUgZ2l2ZW4gc3ltYm9scyBhcmUgZGF0YSBzeW1ib2xzIGFuZCB0YWcKIAkgICAgICAjIHRoZW0gYXMgc3VjaC4gU28sIHRyaWdnZXIgdXNlIG9mIGV4cG9ydF9zeW1ib2xzX2NtZHMuCiAJICAgICAgIyBleHBvcnRfc3ltYm9scyBnZXRzIHJlYXNzaWduZWQgaW5zaWRlIHRoZSAicHJlcGFyZQogCSAgICAgICMgdGhlIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scyIgaWYgc3RhdGVtZW50LCBzbyB0aGUKIAkgICAgICAjIGluY2x1ZGVfZXhwc3ltcyBsb2dpYyBzdGlsbCB3b3Jrcy4KLQkgICAgICBvcmlnX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCisJICAgICAgb3JpZ19leHBvcnRfc3ltYm9scz0kZXhwb3J0X3N5bWJvbHMKIAkgICAgICBleHBvcnRfc3ltYm9scz0KIAkgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0JICAgIGZpCisJICAgIH0KIAkgIGZpCiAJICA7OwogCWVzYWMKIAogCSMgUHJlcGFyZSB0aGUgbGlzdCBvZiBleHBvcnRlZCBzeW1ib2xzCiAJaWYgdGVzdCAteiAiJGV4cG9ydF9zeW1ib2xzIjsgdGhlbgotCSAgaWYgdGVzdCAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgPSB5ZXMgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgotCSAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgotCSAgICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZXhwIgorCSAgaWYgdGVzdCB5ZXMgPSAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfHwgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorCSAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yICckbGlibmFtZS5sYSciCisJICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmV4cAogCSAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRleHBvcnRfc3ltYm9scwogCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCi0JICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworCSAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCiAJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbwotCSAgICAgIElGUz0iJHNhdmVfaWZzIgorCSAgICAgIElGUz0kc2F2ZV9pZnMKIAkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAogCSAgICAgICMgZG9lc24ndCB3b3JrIG9yIGlmIHRvb2wgY29udmVyc2lvbiBpcyBub3QgbmVlZGVkLgogCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCkBAIC04MTgxLDcgKzk2NzYsNyBAQAogCQkgIHRyeV9ub3JtYWxfYnJhbmNoPW5vCiAJCSAgOzsKIAkgICAgICBlc2FjCi0JICAgICAgaWYgdGVzdCAiJHRyeV9ub3JtYWxfYnJhbmNoIiA9IHllcyBcCisJICAgICAgaWYgdGVzdCB5ZXMgPSAiJHRyeV9ub3JtYWxfYnJhbmNoIiBcCiAJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCiAJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9CiAJICAgICAgdGhlbgpAQCAtODE5Miw3ICs5Njg3LDcgQEAKIAkJb3V0cHV0X2xhPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKIAkJc2F2ZV9vdXRwdXQ9JG91dHB1dAotCQlvdXRwdXQ9JHtvdXRwdXRfb2JqZGlyfS8ke291dHB1dF9sYX0ubm0KKwkJb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEubm0KIAkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCiAJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAogCQlmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCkBAIC04MjE1LDggKzk3MTAsOCBAQAogCQlicmVhawogCSAgICAgIGZpCiAJICAgIGRvbmUKLQkgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IjsgdGhlbgorCSAgICBJRlM9JHNhdmVfaWZzCisJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgdGVzdCA6ICE9ICIkc2tpcHBlZF9leHBvcnQiOyB0aGVuCiAJICAgICAgZnVuY19zaG93X2V2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJGV4cG9ydF9zeW1ib2xzIiA+ICIke2V4cG9ydF9zeW1ib2xzfVQiJwogCSAgICAgIGZ1bmNfc2hvd19ldmFsICckTVYgIiR7ZXhwb3J0X3N5bWJvbHN9VCIgIiRleHBvcnRfc3ltYm9scyInCiAJICAgIGZpCkBAIC04MjI0LDE2ICs5NzE5LDE2IEBACiAJZmkKIAogCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLQkgIHRtcF9leHBvcnRfc3ltYm9scz0iJGV4cG9ydF9zeW1ib2xzIgotCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCisJICB0bXBfZXhwb3J0X3N5bWJvbHM9JGV4cG9ydF9zeW1ib2xzCisJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSRvcmlnX2V4cG9ydF9zeW1ib2xzCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKIAlmaQogCi0JaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KKwlpZiB0ZXN0IDogIT0gIiRza2lwcGVkX2V4cG9ydCIgJiYgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiOyB0aGVuCiAJICAjIFRoZSBnaXZlbiBleHBvcnRzX3N5bWJvbHMgZmlsZSBoYXMgdG8gYmUgZmlsdGVyZWQsIHNvIGZpbHRlciBpdC4KLQkgIGZ1bmNfdmVyYm9zZSAiZmlsdGVyIHN5bWJvbCBsaXN0IGZvciBcYCRsaWJuYW1lLmxhJyB0byB0YWcgREFUQSBleHBvcnRzIgorCSAgZnVuY192ZXJib3NlICJmaWx0ZXIgc3ltYm9sIGxpc3QgZm9yICckbGlibmFtZS5sYScgdG8gdGFnIERBVEEgZXhwb3J0cyIKIAkgICMgRklYTUU6ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciBwb3RlbnRpYWxseSBjb250YWlucyBsb3RzIG9mCi0JICAjICdzJyBjb21tYW5kcyB3aGljaCBub3QgYWxsIHNlZHMgY2FuIGhhbmRsZS4gR05VIHNlZCBzaG91bGQgYmUgZmluZQorCSAgIyAncycgY29tbWFuZHMsIHdoaWNoIG5vdCBhbGwgc2VkcyBjYW4gaGFuZGxlLiBHTlUgc2VkIHNob3VsZCBiZSBmaW5lCiAJICAjIHRob3VnaC4gQWxzbywgdGhlIGZpbHRlciBzY2FsZXMgc3VwZXJsaW5lYXJseSB3aXRoIHRoZSBudW1iZXIgb2YKIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CiAJICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgpAQCAtODI1MiwxMSArOTc0NywxMSBAQAogCSAgICA7OwogCSAgZXNhYwogCWRvbmUKLQlkZXBsaWJzPSIkdG1wX2RlcGxpYnMiCisJZGVwbGlicz0kdG1wX2RlcGxpYnMKIAogCWlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KIAkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyIgJiYKLQkgICAgdGVzdCAiJGNvbXBpbGVyX25lZWRzX29iamVjdCIgPSB5ZXMgJiYKKwkgICAgdGVzdCB5ZXMgPSAiJGNvbXBpbGVyX25lZWRzX29iamVjdCIgJiYKIAkgICAgdGVzdCAteiAiJGxpYm9ianMiOyB0aGVuCiAJICAgICMgZXh0cmFjdCB0aGUgYXJjaGl2ZXMsIHNvIHdlIGhhdmUgb2JqZWN0cyB0byBsaXN0LgogCSAgICAjIFRPRE86IGNvdWxkIG9wdGltaXplIHRoaXMgdG8ganVzdCBleHRyYWN0IG9uZSBhcmNoaXZlLgpAQCAtODI2Nyw3ICs5NzYyLDcgQEAKIAkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCiAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJICBlbHNlCi0JICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCisJICAgIGdlbnRvcD0kb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eAogCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQpAQCAtODI3NiwxOCArOTc3MSwxOCBAQAogCSAgZmkKIAlmaQogCi0JaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiR0aHJlYWRfc2FmZSIgJiYgdGVzdCAtbiAiJHRocmVhZF9zYWZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgogCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCiAJZmkKIAogCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZwotCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0IHJlbGluayA9ICIkb3B0X21vZGUiOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/CiAJZmkKIAogCSMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KLQlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgorCWlmIHRlc3QgeWVzID0gIiRtb2R1bGUiICYmIHRlc3QgLW4gIiRtb2R1bGVfY21kcyI7IHRoZW4KIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KIAkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIKIAkgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCkBAIC04MzA1LDcgKzk4MDAsNyBAQAogCSAgZmkKIAlmaQogCi0JaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJgorCWlmIHRlc3QgOiAhPSAiJHNraXBwZWRfZXhwb3J0IiAmJgogCSAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIgJiYKIAkgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdCAmJgogCSAgIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgpAQCAtODMzOCw4ICs5ODMzLDggQEAKIAkgIGxhc3Rfcm9iaj0KIAkgIGs9MQogCi0JICBpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLQkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lmxua3NjcmlwdAorCSAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyIgJiYgdGVzdCA6ICE9ICIkc2tpcHBlZF9leHBvcnQiICYmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKwkgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEubG5rc2NyaXB0CiAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgR05VIGxkIHNjcmlwdDogJG91dHB1dCIKIAkgICAgZWNobyAnSU5QVVQgKCcgPiAkb3V0cHV0CiAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcwpAQCAtODM1MSwxNCArOTg0NiwxNCBAQAogCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCiAJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgogCSAgICBvdXRwdXQ9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KLQkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuaworCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0IDogIT0gIiRza2lwcGVkX2V4cG9ydCIgJiYgdGVzdCAtbiAiJGZpbGVfbGlzdF9zcGVjIjsgdGhlbgorCSAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS5sbmsKIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgogCSAgICA6ID4gJG91dHB1dAogCSAgICBzZXQgeCAkc2F2ZV9saWJvYmpzCiAJICAgIHNoaWZ0CiAJICAgIGZpcnN0b2JqPQotCSAgICBpZiB0ZXN0ICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IiA9IHllczsgdGhlbgorCSAgICBpZiB0ZXN0IHllcyA9ICIkY29tcGlsZXJfbmVlZHNfb2JqZWN0IjsgdGhlbgogCSAgICAgIGZpcnN0b2JqPSIkMSAiCiAJICAgICAgc2hpZnQKIAkgICAgZmkKQEAgLTgzNzMsNyArOTg2OCw3IEBACiAJICBlbHNlCiAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCiAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKLQkgICAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKwkgICAgICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0kay4kb2JqZXh0CiAJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgogCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKIAkgICAgICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKQEAgLTgzODUsMTMgKzk4ODAsMTMgQEAKIAkJZnVuY19sZW4gIiAkb2JqIgogCQlmdW5jX2FyaXRoICRsZW4gKyAkZnVuY19sZW5fcmVzdWx0CiAJCWxlbj0kZnVuY19hcml0aF9yZXN1bHQKLQkJaWYgdGVzdCAiWCRvYmpsaXN0IiA9IFggfHwKKwkJaWYgdGVzdCAteiAiJG9iamxpc3QiIHx8CiAJCSAgIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIjsgdGhlbgogCQkgIGZ1bmNfYXBwZW5kIG9iamxpc3QgIiAkb2JqIgogCQllbHNlCiAJCSAgIyBUaGUgY29tbWFuZCAkdGVzdF9jbWRzIGlzIGFsbW9zdCB0b28gbG9uZywgYWRkIGEKIAkJICAjIGNvbW1hbmQgdG8gdGhlIHF1ZXVlLgotCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KKwkJICBpZiB0ZXN0IDEgLWVxICIkayI7IHRoZW4KIAkJICAgICMgVGhlIGZpcnN0IGZpbGUgZG9lc24ndCBoYXZlIGEgcHJldmlvdXMgY29tbWFuZCB0byBhZGQuCiAJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAogCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCkBAIC04NDAxLDEwICs5ODk2LDEwIEBACiAJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKIAkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgogCQkgIGZpCi0JCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CisJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJGsuJG9iamV4dAogCQkgIGZ1bmNfYXJpdGggJGsgKyAxCiAJCSAgaz0kZnVuY19hcml0aF9yZXN1bHQKLQkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKwkJICBvdXRwdXQ9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0kay4kb2JqZXh0CiAJCSAgb2JqbGlzdD0iICRvYmoiCiAJCSAgZnVuY19sZW4gIiAkbGFzdF9yb2JqIgogCQkgIGZ1bmNfYXJpdGggJGxlbjAgKyAkZnVuY19sZW5fcmVzdWx0CkBAIC04NDE2LDkgKzk5MTEsOSBAQAogCSAgICAgICMgZmlsZXMgd2lsbCBsaW5rIGluIHRoZSBsYXN0IG9uZSBjcmVhdGVkLgogCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgogCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgotCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIgorCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJHJlbG9hZF9jbWRzXCIKIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgotCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgorCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKIAkgICAgICBmaQogCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKIApAQCAtODQyNiw5ICs5OTIxLDkgQEAKIAkgICAgICBvdXRwdXQ9CiAJICAgIGZpCiAKLQkgICAgaWYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KLQkgICAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yIFxgJGxpYm5hbWUubGEnIgotCSAgICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kbGlibmFtZS5leHAiCisJICAgICR7c2tpcHBlZF9leHBvcnQtZmFsc2V9ICYmIHsKKwkgICAgICBmdW5jX3ZlcmJvc2UgImdlbmVyYXRpbmcgc3ltYm9sIGxpc3QgZm9yICckbGlibmFtZS5sYSciCisJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZXhwCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKIAkgICAgICBsaWJvYmpzPSRvdXRwdXQKIAkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgpAQCAtODQzNywxNiArOTkzMiwxNiBAQAogCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCiAJCWV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiCiAJICAgICAgZmkKLQkgICAgZmkKKwkgICAgfQogCiAJICAgIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmCiAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBhIHRlbXBvcmFyeSByZWxvYWRhYmxlIG9iamVjdCBmaWxlOiAkb3V0cHV0IgogCiAJICAgICMgTG9vcCB0aHJvdWdoIHRoZSBjb21tYW5kcyBnZW5lcmF0ZWQgYWJvdmUgYW5kIGV4ZWN1dGUgdGhlbS4KLQkgICAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCisJICAgIHNhdmVfaWZzPSRJRlM7IElGUz0nficKIAkgICAgZm9yIGNtZCBpbiAkY29uY2F0X2NtZHM7IGRvCi0JICAgICAgSUZTPSIkc2F2ZV9pZnMiCi0JICAgICAgJG9wdF9zaWxlbnQgfHwgeworCSAgICAgIElGUz0kc2F2ZV9pZnMKKwkgICAgICAkb3B0X3F1aWV0IHx8IHsKIAkJICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRjbWQiCiAJCSAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgogCSAgICAgIH0KQEAgLTg0NTQsNyArOTk0OSw3IEBACiAJCWx0X2V4aXQ9JD8KIAogCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorCQlpZiB0ZXN0IHJlbGluayA9ICIkb3B0X21vZGUiOyB0aGVuCiAJCSAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQpAQCAtODQ2Myw3ICs5OTU4LDcgQEAKIAkJZXhpdCAkbHRfZXhpdAogCSAgICAgIH0KIAkgICAgZG9uZQotCSAgICBJRlM9IiRzYXZlX2lmcyIKKwkgICAgSUZTPSRzYXZlX2lmcwogCiAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCIgJiYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KIAkgICAgICBmdW5jX3Nob3dfZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkZXhwb3J0X3N5bWJvbHMiID4gIiR7ZXhwb3J0X3N5bWJvbHN9VCInCkBAIC04NDcxLDE4ICs5OTY2LDE4IEBACiAJICAgIGZpCiAJICBmaQogCi0gICAgICAgICAgaWYgJHtza2lwcGVkX2V4cG9ydC1mYWxzZX07IHRoZW4KKyAgICAgICAgICAke3NraXBwZWRfZXhwb3J0LWZhbHNlfSAmJiB7CiAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLQkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKLQkgICAgICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKwkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9JGV4cG9ydF9zeW1ib2xzCisJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0kb3JpZ19leHBvcnRfc3ltYm9scwogCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJwogCSAgICBmaQogCiAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgogCSAgICAgICMgVGhlIGdpdmVuIGV4cG9ydHNfc3ltYm9scyBmaWxlIGhhcyB0byBiZSBmaWx0ZXJlZCwgc28gZmlsdGVyIGl0LgotCSAgICAgIGZ1bmNfdmVyYm9zZSAiZmlsdGVyIHN5bWJvbCBsaXN0IGZvciBcYCRsaWJuYW1lLmxhJyB0byB0YWcgREFUQSBleHBvcnRzIgorCSAgICAgIGZ1bmNfdmVyYm9zZSAiZmlsdGVyIHN5bWJvbCBsaXN0IGZvciAnJGxpYm5hbWUubGEnIHRvIHRhZyBEQVRBIGV4cG9ydHMiCiAJICAgICAgIyBGSVhNRTogJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIHBvdGVudGlhbGx5IGNvbnRhaW5zIGxvdHMgb2YKLQkgICAgICAjICdzJyBjb21tYW5kcyB3aGljaCBub3QgYWxsIHNlZHMgY2FuIGhhbmRsZS4gR05VIHNlZCBzaG91bGQgYmUgZmluZQorCSAgICAgICMgJ3MnIGNvbW1hbmRzLCB3aGljaCBub3QgYWxsIHNlZHMgY2FuIGhhbmRsZS4gR05VIHNlZCBzaG91bGQgYmUgZmluZQogCSAgICAgICMgdGhvdWdoLiBBbHNvLCB0aGUgZmlsdGVyIHNjYWxlcyBzdXBlcmxpbmVhcmx5IHdpdGggdGhlIG51bWJlciBvZgogCSAgICAgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CiAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KQEAgLTg0OTEsNyArOTk4Niw3IEBACiAJICAgICAgZXhwb3J0X3N5bWJvbHM9JG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmCiAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKIAkgICAgZmkKLQkgIGZpCisJICB9CiAKIAkgIGxpYm9ianM9JG91dHB1dAogCSAgIyBSZXN0b3JlIHRoZSB2YWx1ZSBvZiBvdXRwdXQuCkBAIC04NTA1LDcgKzEwMDAwLDcgQEAKIAkgICMgdmFsdWUgb2YgJGxpYm9ianMgZm9yIHBpZWNld2lzZSBsaW5raW5nLgogCiAJICAjIERvIGVhY2ggb2YgdGhlIGFyY2hpdmUgY29tbWFuZHMuCi0JICBpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgorCSAgaWYgdGVzdCB5ZXMgPSAiJG1vZHVsZSIgJiYgdGVzdCAtbiAiJG1vZHVsZV9jbWRzIjsgdGhlbgogCSAgICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCiAJICAgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCiAJICAgIGVsc2UKQEAgLTg1MjcsNyArMTAwMjIsNyBAQAogCiAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCiAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCi0JICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorCSAgZ2VudG9wPSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14CiAJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwpAQCAtODUzNSwxMSArMTAwMzAsMTIgQEAKIAkgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9CiAJZmkKIAotCXNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworCXNhdmVfaWZzPSRJRlM7IElGUz0nficKIAlmb3IgY21kIGluICRjbWRzOyBkbwotCSAgSUZTPSIkc2F2ZV9pZnMiCisJICBJRlM9JHNwJG5sCiAJICBldmFsIGNtZD1cIiRjbWRcIgotCSAgJG9wdF9zaWxlbnQgfHwgeworCSAgSUZTPSRzYXZlX2lmcworCSAgJG9wdF9xdWlldCB8fCB7CiAJICAgIGZ1bmNfcXVvdGVfZm9yX2V4cGFuZCAiJGNtZCIKIAkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgogCSAgfQpAQCAtODU0Nyw3ICsxMDA0Myw3IEBACiAJICAgIGx0X2V4aXQ9JD8KIAogCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLQkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorCSAgICBpZiB0ZXN0IHJlbGluayA9ICIkb3B0X21vZGUiOyB0aGVuCiAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCiAJCSRNViAiJHtyZWFsbmFtZX1VIiAiJHJlYWxuYW1lIiApCkBAIC04NTU2LDEwICsxMDA1MiwxMCBAQAogCSAgICBleGl0ICRsdF9leGl0CiAJICB9CiAJZG9uZQotCUlGUz0iJHNhdmVfaWZzIgorCUlGUz0kc2F2ZV9pZnMKIAogCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KKwlpZiB0ZXN0IHJlbGluayA9ICIkb3B0X21vZGUiOyB0aGVuCiAJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpJyB8fCBleGl0ICQ/CiAKIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KQEAgLTg1NzksMzkgKzEwMDc1LDM5IEBACiAJZG9uZQogCiAJIyBJZiAtbW9kdWxlIG9yIC1leHBvcnQtZHluYW1pYyB3YXMgc3BlY2lmaWVkLCBzZXQgdGhlIGRsbmFtZS4KLQlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyB8fCB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzOyB0aGVuCisJaWYgdGVzdCB5ZXMgPSAiJG1vZHVsZSIgfHwgdGVzdCB5ZXMgPSAiJGV4cG9ydF9keW5hbWljIjsgdGhlbgogCSAgIyBPbiBhbGwga25vd24gb3BlcmF0aW5nIHN5c3RlbXMsIHRoZXNlIGFyZSBpZGVudGljYWwuCi0JICBkbG5hbWU9IiRzb25hbWUiCisJICBkbG5hbWU9JHNvbmFtZQogCWZpCiAgICAgICBmaQogICAgICAgOzsKIAogICAgIG9iaikKLSAgICAgIGlmIHRlc3QgLW4gIiRkbGZpbGVzJGRscHJlZmlsZXMiIHx8IHRlc3QgIiRkbHNlbGYiICE9IG5vOyB0aGVuCi0JZnVuY193YXJuaW5nICJcYC1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCisgICAgICBpZiB0ZXN0IC1uICIkZGxmaWxlcyRkbHByZWZpbGVzIiB8fCB0ZXN0IG5vICE9ICIkZGxzZWxmIjsgdGhlbgorCWZ1bmNfd2FybmluZyAiJy1kbG9wZW4nIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCiAgICAgICBmaQogCiAgICAgICBjYXNlICIgJGRlcGxpYnMiIGluCiAgICAgICAqXCAtbCogfCAqXCAtTCopCi0JZnVuY193YXJuaW5nICJcYC1sJyBhbmQgXGAtTCcgYXJlIGlnbm9yZWQgZm9yIG9iamVjdHMiIDs7CisJZnVuY193YXJuaW5nICInLWwnIGFuZCAnLUwnIGFyZSBpZ25vcmVkIGZvciBvYmplY3RzIiA7OwogICAgICAgZXNhYwogCiAgICAgICB0ZXN0IC1uICIkcnBhdGgiICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLXJwYXRoJyBpcyBpZ25vcmVkIGZvciBvYmplY3RzIgorCWZ1bmNfd2FybmluZyAiJy1ycGF0aCcgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKIAogICAgICAgdGVzdCAtbiAiJHhycGF0aCIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtUicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKKwlmdW5jX3dhcm5pbmcgIictUicgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKIAogICAgICAgdGVzdCAtbiAiJHZpbmZvIiAmJiBcCi0JZnVuY193YXJuaW5nICJcYC12ZXJzaW9uLWluZm8nIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCisJZnVuY193YXJuaW5nICInLXZlcnNpb24taW5mbycgaXMgaWdub3JlZCBmb3Igb2JqZWN0cyIKIAogICAgICAgdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCisJZnVuY193YXJuaW5nICInLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIG9iamVjdHMiCiAKICAgICAgIGNhc2UgJG91dHB1dCBpbgogICAgICAgKi5sbykKIAl0ZXN0IC1uICIkb2JqcyRvbGRfZGVwbGlicyIgJiYgXAotCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnJhcnkgb2JqZWN0IFxgJG91dHB1dCcgZnJvbSBub24tbGlidG9vbCBvYmplY3RzIgorCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGJ1aWxkIGxpYnJhcnkgb2JqZWN0ICckb3V0cHV0JyBmcm9tIG5vbi1saWJ0b29sIG9iamVjdHMiCiAKIAlsaWJvYmo9JG91dHB1dAogCWZ1bmNfbG8ybyAiJGxpYm9iaiIKQEAgLTg2MTksNyArMTAxMTUsNyBAQAogCTs7CiAgICAgICAqKQogCWxpYm9iaj0KLQlvYmo9IiRvdXRwdXQiCisJb2JqPSRvdXRwdXQKIAk7OwogICAgICAgZXNhYwogCkBAIC04NjMyLDE3ICsxMDEyOCwxOSBAQAogICAgICAgIyB0aGUgZXh0cmFjdGlvbi4KICAgICAgIHJlbG9hZF9jb252X29ianM9CiAgICAgICBnZW50b3A9Ci0gICAgICAjIHJlbG9hZF9jbWRzIHJ1bnMgJExEIGRpcmVjdGx5LCBzbyBsZXQgdXMgZ2V0IHJpZCBvZgotICAgICAgIyAtV2wgZnJvbSB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyBhbmQgaG9wZSB3ZSBjYW4gZ2V0IGJ5IHdpdGgKLSAgICAgICMgdHVybmluZyBjb21tYSBpbnRvIHNwYWNlLi4KLSAgICAgIHdsPQotCisgICAgICAjIGlmIHJlbG9hZF9jbWRzIHJ1bnMgJExEIGRpcmVjdGx5LCBnZXQgcmlkIG9mIC1XbCBmcm9tCisgICAgICAjIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIGFuZCBob3BlIHdlIGNhbiBnZXQgYnkgd2l0aCB0dXJuaW5nIGNvbW1hCisgICAgICAjIGludG8gc3BhY2UuCisgICAgICBjYXNlICRyZWxvYWRfY21kcyBpbgorICAgICAgICAqXCRMRFtcIFwkXSopIHdsPSA7OworICAgICAgZXNhYwogICAgICAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIjsgdGhlbgogCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAorCSAgdGVzdCAtbiAiJHdsIiB8fCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1gJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKKwkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCAkdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3MKIAllbHNlCi0JICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b2JqfXgiCisJICBnZW50b3A9JG91dHB1dF9vYmpkaXIvJHtvYmp9eAogCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAogCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCkBAIC04NjUxLDEyICsxMDE0OSwxMiBAQAogICAgICAgZmkKIAogICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKLSAgICAgIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiBsaWJvYmpzPSIkbm9uX3BpY19vYmplY3RzIgorICAgICAgdGVzdCB5ZXMgPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgfHwgbGlib2Jqcz0kbm9uX3BpY19vYmplY3RzCiAKICAgICAgICMgQ3JlYXRlIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0CisgICAgICByZWxvYWRfb2Jqcz0kb2JqcyRvbGRfZGVwbGlicycgJ2AkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJGxpYmV4dCQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgJyAnJHJlbG9hZF9jb252X29ianMKIAotICAgICAgb3V0cHV0PSIkb2JqIgorICAgICAgb3V0cHV0PSRvYmoKICAgICAgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcmVsb2FkX2NtZHMiICdleGl0ICQ/JwogCiAgICAgICAjIEV4aXQgaWYgd2UgYXJlbid0IGRvaW5nIGEgbGlicmFyeSBvYmplY3QgZmlsZS4KQEAgLTg2NjgsNyArMTAxNjYsNyBAQAogCWV4aXQgJEVYSVRfU1VDQ0VTUwogICAgICAgZmkKIAotICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzOyB0aGVuCisgICAgICB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIiB8fCB7CiAJaWYgdGVzdCAtbiAiJGdlbnRvcCI7IHRoZW4KIAkgIGZ1bmNfc2hvd19ldmFsICcke1JNfXIgIiRnZW50b3AiJwogCWZpCkBAIC04Njc4LDEyICsxMDE3NiwxMiBAQAogCSMgJHNob3cgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIKIAkjICRvcHRfZHJ5X3J1biB8fCBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiIHx8IGV4aXQgJD8KIAlleGl0ICRFWElUX1NVQ0NFU1MKLSAgICAgIGZpCisgICAgICB9CiAKLSAgICAgIGlmIHRlc3QgLW4gIiRwaWNfZmxhZyIgfHwgdGVzdCAiJHBpY19tb2RlIiAhPSBkZWZhdWx0OyB0aGVuCisgICAgICBpZiB0ZXN0IC1uICIkcGljX2ZsYWciIHx8IHRlc3QgZGVmYXVsdCAhPSAiJHBpY19tb2RlIjsgdGhlbgogCSMgT25seSBkbyBjb21tYW5kcyBpZiB3ZSByZWFsbHkgaGF2ZSBkaWZmZXJlbnQgUElDIG9iamVjdHMuCiAJcmVsb2FkX29ianM9IiRsaWJvYmpzICRyZWxvYWRfY29udl9vYmpzIgotCW91dHB1dD0iJGxpYm9iaiIKKwlvdXRwdXQ9JGxpYm9iagogCWZ1bmNfZXhlY3V0ZV9jbWRzICIkcmVsb2FkX2NtZHMiICdleGl0ICQ/JwogICAgICAgZmkKIApAQCAtODcwMCwxNiArMTAxOTgsMTQgQEAKIAkgICAgICAgICAgb3V0cHV0PSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuZXhlOzsKICAgICAgIGVzYWMKICAgICAgIHRlc3QgLW4gIiR2aW5mbyIgJiYgXAotCWZ1bmNfd2FybmluZyAiXGAtdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBwcm9ncmFtcyIKKwlmdW5jX3dhcm5pbmcgIictdmVyc2lvbi1pbmZvJyBpcyBpZ25vcmVkIGZvciBwcm9ncmFtcyIKIAogICAgICAgdGVzdCAtbiAiJHJlbGVhc2UiICYmIFwKLQlmdW5jX3dhcm5pbmcgIlxgLXJlbGVhc2UnIGlzIGlnbm9yZWQgZm9yIHByb2dyYW1zIgorCWZ1bmNfd2FybmluZyAiJy1yZWxlYXNlJyBpcyBpZ25vcmVkIGZvciBwcm9ncmFtcyIKIAotICAgICAgdGVzdCAiJHByZWxvYWQiID0geWVzIFwKLSAgICAgICAgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHVua25vd24gXAotCSYmIHRlc3QgIiRkbG9wZW5fc2VsZiIgPSB1bmtub3duIFwKLQkmJiB0ZXN0ICIkZGxvcGVuX3NlbGZfc3RhdGljIiA9IHVua25vd24gJiYgXAotCSAgZnVuY193YXJuaW5nICJcYExUX0lOSVQoW2Rsb3Blbl0pJyBub3QgdXNlZC4gQXNzdW1pbmcgbm8gZGxvcGVuIHN1cHBvcnQuIgorICAgICAgJHByZWxvYWQgXAorCSYmIHRlc3QgdW5rbm93bix1bmtub3duLHVua25vd24gPSAiJGRsb3Blbl9zdXBwb3J0LCRkbG9wZW5fc2VsZiwkZGxvcGVuX3NlbGZfc3RhdGljIiBcCisJJiYgZnVuY193YXJuaW5nICInTFRfSU5JVChbZGxvcGVuXSknIG5vdCB1c2VkLiBBc3N1bWluZyBubyBkbG9wZW4gc3VwcG9ydC4iCiAKICAgICAgIGNhc2UgJGhvc3QgaW4KICAgICAgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKQEAgLTg3MjMsMTEgKzEwMjE5LDExIEBACiAgICAgICAqLSotZGFyd2luKikKIAkjIERvbid0IGFsbG93IGxhenkgbGlua2luZywgaXQgYnJlYWtzIEMrKyBnbG9iYWwgY29uc3RydWN0b3JzCiAJIyBCdXQgaXMgc3VwcG9zZWRseSBmaXhlZCBvbiAxMC40IG9yIGxhdGVyICh5YXkhKS4KLQlpZiB0ZXN0ICIkdGFnbmFtZSIgPSBDWFggOyB0aGVuCisJaWYgdGVzdCBDWFggPSAiJHRhZ25hbWUiOyB0aGVuCiAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCiAJICAgIDEwLlswMTIzXSkKLQkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCi0JICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR7d2x9LWJpbmRfYXRfbG9hZCIKKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkd2wtYmluZF9hdF9sb2FkIgorCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wtYmluZF9hdF9sb2FkIgogCSAgICA7OwogCSAgZXNhYwogCWZpCkBAIC04NzYzLDcgKzEwMjU5LDcgQEAKIAkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CiAJZXNhYwogICAgICAgZG9uZQotICAgICAgY29tcGlsZV9kZXBsaWJzPSIkbmV3X2xpYnMiCisgICAgICBjb21waWxlX2RlcGxpYnM9JG5ld19saWJzCiAKIAogICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGNvbXBpbGVfZGVwbGlicyIKQEAgLTg3ODcsNyArMTAyODMsNyBAQAogCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgogCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCiAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgotCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCisJICAgICAgaGFyZGNvZGVfbGliZGlycz0kbGliZGlyCiAJICAgIGVsc2UKIAkgICAgICAjIEp1c3QgYWNjdW11bGF0ZSB0aGUgdW5pcXVlIGxpYmRpcnMuCiAJICAgICAgY2FzZSAkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgaW4KQEAgLTg4MTAsNyArMTAzMDYsNyBAQAogCWZpCiAJY2FzZSAkaG9zdCBpbgogCSotKi1jeWd3aW4qIHwgKi0qLW1pbmd3KiB8ICotKi1wdzMyKiB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0JICB0ZXN0YmluZGlyPWAke0VDSE99ICIkbGliZGlyIiB8ICR7U0VEfSAtZSAncyovbGliJCovYmluKidgCisJICB0ZXN0YmluZGlyPWAkRUNITyAiJGxpYmRpciIgfCAkU0VEIC1lICdzKi9saWIkKi9iaW4qJ2AKIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgogCSAgKiI6JGxpYmRpcjoiKikgOzsKIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OwpAQCAtODgyNywxMCArMTAzMjMsMTAgQEAKICAgICAgICMgU3Vic3RpdHV0ZSB0aGUgaGFyZGNvZGVkIGxpYmRpcnMgaW50byB0aGUgcnBhdGguCiAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0JbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKwlsaWJkaXI9JGhhcmRjb2RlX2xpYmRpcnMKIAlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKICAgICAgIGZpCi0gICAgICBjb21waWxlX3JwYXRoPSIkcnBhdGgiCisgICAgICBjb21waWxlX3JwYXRoPSRycGF0aAogCiAgICAgICBycGF0aD0KICAgICAgIGhhcmRjb2RlX2xpYmRpcnM9CkBAIC04ODM4LDcgKzEwMzM0LDcgQEAKIAlpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KIAkgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgogCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLQkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgorCSAgICAgIGhhcmRjb2RlX2xpYmRpcnM9JGxpYmRpcgogCSAgICBlbHNlCiAJICAgICAgIyBKdXN0IGFjY3VtdWxhdGUgdGhlIHVuaXF1ZSBsaWJkaXJzLgogCSAgICAgIGNhc2UgJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIGluCkBAIC04ODYzLDQ1ICsxMDM1OSw0MyBAQAogICAgICAgIyBTdWJzdGl0dXRlIHRoZSBoYXJkY29kZWQgbGliZGlycyBpbnRvIHRoZSBycGF0aC4KICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgogCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLQlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorCWxpYmRpcj0kaGFyZGNvZGVfbGliZGlycwogCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgogICAgICAgZmkKLSAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCisgICAgICBmaW5hbGl6ZV9ycGF0aD0kcnBhdGgKIAotICAgICAgaWYgdGVzdCAtbiAiJGxpYm9ianMiICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgLW4gIiRsaWJvYmpzIiAmJiB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiOyB0aGVuCiAJIyBUcmFuc2Zvcm0gYWxsIHRoZSBsaWJyYXJ5IG9iamVjdHMgaW50byBzdGFuZGFyZCBvYmplY3RzLgogCWNvbXBpbGVfY29tbWFuZD1gJEVDSE8gIiRjb21waWxlX2NvbW1hbmQiIHwgJFNQMk5MIHwgJFNFRCAiJGxvMm8iIHwgJE5MMlNQYAogCWZpbmFsaXplX2NvbW1hbmQ9YCRFQ0hPICIkZmluYWxpemVfY29tbWFuZCIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCiAgICAgICBmaQogCi0gICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJG91dHB1dG5hbWUiICJAUFJPR1JBTUAiICJubyIKKyAgICAgIGZ1bmNfZ2VuZXJhdGVfZGxzeW1zICIkb3V0cHV0bmFtZSIgIkBQUk9HUkFNQCIgZmFsc2UKIAogICAgICAgIyB0ZW1wbGF0ZSBwcmVsaW5raW5nIHN0ZXAKICAgICAgIGlmIHRlc3QgLW4gIiRwcmVsaW5rX2NtZHMiOyB0aGVuCiAJZnVuY19leGVjdXRlX2NtZHMgIiRwcmVsaW5rX2NtZHMiICdleGl0ICQ/JwogICAgICAgZmkKIAotICAgICAgd3JhcHBlcnNfcmVxdWlyZWQ9eWVzCisgICAgICB3cmFwcGVyc19yZXF1aXJlZD06CiAgICAgICBjYXNlICRob3N0IGluCiAgICAgICAqY2VnY2MqIHwgKm1pbmd3MzJjZSopCiAgICAgICAgICMgRGlzYWJsZSB3cmFwcGVycyBmb3IgY2VnY2MgYW5kIG1pbmd3MzJjZSBob3N0cywgd2UgYXJlIGNyb3NzIGNvbXBpbGluZyBhbnl3YXkuCi0gICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPWZhbHNlCiAgICAgICAgIDs7CiAgICAgICAqY3lnd2luKiB8ICptaW5ndyogKQotICAgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1ubwotICAgICAgICBmaQorICAgICAgICB0ZXN0IHllcyA9ICIkYnVpbGRfbGlidG9vbF9saWJzIiB8fCB3cmFwcGVyc19yZXF1aXJlZD1mYWxzZQogICAgICAgICA7OwogICAgICAgKikKLSAgICAgICAgaWYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IG5vIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllczsgdGhlbgotICAgICAgICAgIHdyYXBwZXJzX3JlcXVpcmVkPW5vCisgICAgICAgIGlmIHRlc3Qgbm8gPSAiJG5lZWRfcmVsaW5rIiB8fCB0ZXN0IHllcyAhPSAiJGJ1aWxkX2xpYnRvb2xfbGlicyI7IHRoZW4KKyAgICAgICAgICB3cmFwcGVyc19yZXF1aXJlZD1mYWxzZQogICAgICAgICBmaQogICAgICAgICA7OwogICAgICAgZXNhYwotICAgICAgaWYgdGVzdCAiJHdyYXBwZXJzX3JlcXVpcmVkIiA9IG5vOyB0aGVuCisgICAgICAkd3JhcHBlcnNfcmVxdWlyZWQgfHwgewogCSMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KIAljb21waWxlX2NvbW1hbmQ9YCRFQ0hPICIkY29tcGlsZV9jb21tYW5kIiB8ICRTRUQgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZydgCi0JbGlua19jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCisJbGlua19jb21tYW5kPSRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aAogCiAJIyBXZSBoYXZlIG5vIHVuaW5zdGFsbGVkIGxpYnJhcnkgZGVwZW5kZW5jaWVzLCBzbyBmaW5hbGl6ZSByaWdodCBub3cuCiAJZXhpdF9zdGF0dXM9MApAQCAtODkxNCwxMiArMTA0MDgsMTIgQEAKIAlmaQogCiAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KLQlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCi0JICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iJworCWlmIHRlc3QgLWYgIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiRvYmpleHQiOyB0aGVuCisJICBmdW5jX3Nob3dfZXZhbCAnJFJNICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4kb2JqZXh0IicKIAlmaQogCiAJZXhpdCAkZXhpdF9zdGF0dXMKLSAgICAgIGZpCisgICAgICB9CiAKICAgICAgIGlmIHRlc3QgLW4gIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGgiOyB0aGVuCiAJY29tcGlsZV9jb21tYW5kPSIkc2hsaWJwYXRoX3Zhcj1cIiRjb21waWxlX3NobGlicGF0aCRmaW5hbGl6ZV9zaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyXCIgJGNvbXBpbGVfY29tbWFuZCIKQEAgLTg5NDksOSArMTA0NDMsOSBAQAogCWZpCiAgICAgICBmaQogCi0gICAgICBpZiB0ZXN0ICIkbm9faW5zdGFsbCIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRub19pbnN0YWxsIjsgdGhlbgogCSMgV2UgZG9uJ3QgbmVlZCB0byBjcmVhdGUgYSB3cmFwcGVyIHNjcmlwdC4KLQlsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKKwlsaW5rX2NvbW1hbmQ9JGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoCiAJIyBSZXBsYWNlIHRoZSBvdXRwdXQgZmlsZSBzcGVjaWZpY2F0aW9uLgogCWxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJ2AKIAkjIERlbGV0ZSB0aGUgb2xkIG91dHB1dCBmaWxlLgpAQCAtODk2OCwyNyArMTA0NjIsMjggQEAKIAlleGl0ICRFWElUX1NVQ0NFU1MKICAgICAgIGZpCiAKLSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9hY3Rpb24iID0gcmVsaW5rOyB0aGVuCi0JIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCi0JbGlua19jb21tYW5kPSIkY29tcGlsZV92YXIkY29tcGlsZV9jb21tYW5kJGNvbXBpbGVfcnBhdGgiCi0JcmVsaW5rX2NvbW1hbmQ9IiRmaW5hbGl6ZV92YXIkZmluYWxpemVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKKyAgICAgIGNhc2UgJGhhcmRjb2RlX2FjdGlvbiwkZmFzdF9pbnN0YWxsIGluCisgICAgICAgIHJlbGluaywqKQorCSAgIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCisJICBsaW5rX2NvbW1hbmQ9JGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoCisJICByZWxpbmtfY29tbWFuZD0kZmluYWxpemVfdmFyJGZpbmFsaXplX2NvbW1hbmQkZmluYWxpemVfcnBhdGgKIAotCWZ1bmNfd2FybmluZyAidGhpcyBwbGF0Zm9ybSBkb2VzIG5vdCBsaWtlIHVuaW5zdGFsbGVkIHNoYXJlZCBsaWJyYXJpZXMiCi0JZnVuY193YXJuaW5nICJcYCRvdXRwdXQnIHdpbGwgYmUgcmVsaW5rZWQgZHVyaW5nIGluc3RhbGxhdGlvbiIKLSAgICAgIGVsc2UKLQlpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiAhPSBubzsgdGhlbgotCSAgbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGNvbXBpbGVfY29tbWFuZCRmaW5hbGl6ZV9ycGF0aCIKLQkgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzOyB0aGVuCi0JICAgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRTRUQgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJ2AKLQkgIGVsc2UKLQkgICAgIyBmYXN0X2luc3RhbGwgaXMgc2V0IHRvIG5lZWRsZXNzCi0JICAgIHJlbGlua19jb21tYW5kPQotCSAgZmkKLQllbHNlCi0JICBsaW5rX2NvbW1hbmQ9IiRjb21waWxlX3ZhciRjb21waWxlX2NvbW1hbmQkY29tcGlsZV9ycGF0aCIKLQkgIHJlbGlua19jb21tYW5kPSIkZmluYWxpemVfdmFyJGZpbmFsaXplX2NvbW1hbmQkZmluYWxpemVfcnBhdGgiCi0JZmkKLSAgICAgIGZpCisJICBmdW5jX3dhcm5pbmcgInRoaXMgcGxhdGZvcm0gZG9lcyBub3QgbGlrZSB1bmluc3RhbGxlZCBzaGFyZWQgbGlicmFyaWVzIgorCSAgZnVuY193YXJuaW5nICInJG91dHB1dCcgd2lsbCBiZSByZWxpbmtlZCBkdXJpbmcgaW5zdGFsbGF0aW9uIgorCSAgOzsKKyAgICAgICAgKix5ZXMpCisJICBsaW5rX2NvbW1hbmQ9JGZpbmFsaXplX3ZhciRjb21waWxlX2NvbW1hbmQkZmluYWxpemVfcnBhdGgKKwkgIHJlbGlua19jb21tYW5kPWAkRUNITyAiJGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoIiB8ICRTRUQgJ3MlQE9VVFBVVEAlXCRwcm9nZGlyL1wkZmlsZSVnJ2AKKyAgICAgICAgICA7OworCSosbm8pCisJICBsaW5rX2NvbW1hbmQ9JGNvbXBpbGVfdmFyJGNvbXBpbGVfY29tbWFuZCRjb21waWxlX3JwYXRoCisJICByZWxpbmtfY29tbWFuZD0kZmluYWxpemVfdmFyJGZpbmFsaXplX2NvbW1hbmQkZmluYWxpemVfcnBhdGgKKyAgICAgICAgICA7OworCSosbmVlZGxlc3MpCisJICBsaW5rX2NvbW1hbmQ9JGZpbmFsaXplX3ZhciRjb21waWxlX2NvbW1hbmQkZmluYWxpemVfcnBhdGgKKwkgIHJlbGlua19jb21tYW5kPQorICAgICAgICAgIDs7CisgICAgICBlc2FjCiAKICAgICAgICMgUmVwbGFjZSB0aGUgb3V0cHV0IGZpbGUgc3BlY2lmaWNhdGlvbi4KICAgICAgIGxpbmtfY29tbWFuZD1gJEVDSE8gIiRsaW5rX2NvbW1hbmQiIHwgJFNFRCAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZydgCkBAIC05MDQ1LDggKzEwNTQwLDggQEAKIAkgICAgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJG91dHB1dCIgIiIgIi4iCiAJICAgIG91dHB1dF9uYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAogCSAgICBvdXRwdXRfcGF0aD0kZnVuY19kaXJuYW1lX3Jlc3VsdAotCSAgICBjd3JhcHBlcnNvdXJjZT0iJG91dHB1dF9wYXRoLyRvYmpkaXIvbHQtJG91dHB1dF9uYW1lLmMiCi0JICAgIGN3cmFwcGVyPSIkb3V0cHV0X3BhdGgvJG91dHB1dF9uYW1lLmV4ZSIKKwkgICAgY3dyYXBwZXJzb3VyY2U9JG91dHB1dF9wYXRoLyRvYmpkaXIvbHQtJG91dHB1dF9uYW1lLmMKKwkgICAgY3dyYXBwZXI9JG91dHB1dF9wYXRoLyRvdXRwdXRfbmFtZS5leGUKIAkgICAgJFJNICRjd3JhcHBlcnNvdXJjZSAkY3dyYXBwZXIKIAkgICAgdHJhcCAiJFJNICRjd3JhcHBlcnNvdXJjZSAkY3dyYXBwZXI7IGV4aXQgJEVYSVRfRkFJTFVSRSIgMSAyIDE1CiAKQEAgLTkwNjcsNyArMTA1NjIsNyBAQAogCSAgICB0cmFwICIkUk0gJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0OyBleGl0ICRFWElUX0ZBSUxVUkUiIDEgMiAxNQogCSAgICAkb3B0X2RyeV9ydW4gfHwgewogCSAgICAgICMgbm90ZTogdGhpcyBzY3JpcHQgd2lsbCBub3QgYmUgZXhlY3V0ZWQsIHNvIGRvIG5vdCBjaG1vZC4KLQkgICAgICBpZiB0ZXN0ICJ4JGJ1aWxkIiA9ICJ4JGhvc3QiIDsgdGhlbgorCSAgICAgIGlmIHRlc3QgIngkYnVpbGQiID0gIngkaG9zdCI7IHRoZW4KIAkJJGN3cmFwcGVyIC0tbHQtZHVtcC1zY3JpcHQgPiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQKIAkgICAgICBlbHNlCiAJCWZ1bmNfZW1pdF93cmFwcGVyIG5vID4gJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CkBAIC05MDkwLDI1ICsxMDU4NSwyNyBAQAogICAgICMgU2VlIGlmIHdlIG5lZWQgdG8gYnVpbGQgYW4gb2xkLWZhc2hpb25lZCBhcmNoaXZlLgogICAgIGZvciBvbGRsaWIgaW4gJG9sZGxpYnM7IGRvCiAKLSAgICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gY29udmVuaWVuY2U7IHRoZW4KLQlvbGRvYmpzPSIkbGlib2Jqc19zYXZlICRzeW1maWxlb2JqIgotCWFkZGxpYnM9IiRjb252ZW5pZW5jZSIKLQlidWlsZF9saWJ0b29sX2xpYnM9bm8KLSAgICAgIGVsc2UKLQlpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IG1vZHVsZTsgdGhlbgotCSAgb2xkb2Jqcz0iJGxpYm9ianNfc2F2ZSIKKyAgICAgIGNhc2UgJGJ1aWxkX2xpYnRvb2xfbGlicyBpbgorICAgICAgICBjb252ZW5pZW5jZSkKKwkgIG9sZG9ianM9IiRsaWJvYmpzX3NhdmUgJHN5bWZpbGVvYmoiCisJICBhZGRsaWJzPSRjb252ZW5pZW5jZQogCSAgYnVpbGRfbGlidG9vbF9saWJzPW5vCi0JZWxzZQorCSAgOzsKKwltb2R1bGUpCisJICBvbGRvYmpzPSRsaWJvYmpzX3NhdmUKKwkgIGFkZGxpYnM9JG9sZF9jb252ZW5pZW5jZQorCSAgYnVpbGRfbGlidG9vbF9saWJzPW5vCisgICAgICAgICAgOzsKKwkqKQogCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCi0JICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCi0JICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKLQkgIGZpCi0JZmkKLQlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgotICAgICAgZmkKKwkgICRwcmVsb2FkICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIiBcCisJICAgICYmIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKKwkgIGFkZGxpYnM9JG9sZF9jb252ZW5pZW5jZQorCSAgOzsKKyAgICAgIGVzYWMKIAogICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCi0JZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKwlnZW50b3A9JG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgKIAlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKQEAgLTkxMTYsMTMgKzEwNjEzLDEzIEBACiAgICAgICBmaQogCiAgICAgICAjIERvIGVhY2ggY29tbWFuZCBpbiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KLSAgICAgIGlmIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzIiAmJiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCAtbiAiJG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMiICYmIHRlc3QgeWVzID0gIiRidWlsZF9saWJ0b29sX2xpYnMiOyB0aGVuCiAJY21kcz0kb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcwogICAgICAgZWxzZQogCiAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCiAJaWYgdGVzdCAtbiAiJGRscHJlZmlsZXMiOyB0aGVuCi0JICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgorCSAgZ2VudG9wPSRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14CiAJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgogCiAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcwpAQCAtOTE0Myw3ICsxMDY0MCw3IEBACiAJICA6CiAJZWxzZQogCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgotCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKwkgIGdlbnRvcD0kb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eAogCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKIAkgIHNhdmVfb2xkb2Jqcz0kb2xkb2JqcwpAQCAtOTE1Miw3ICsxMDY0OSw3IEBACiAJICBmb3Igb2JqIGluICRzYXZlX29sZG9ianMKIAkgIGRvCiAJICAgIGZ1bmNfYmFzZW5hbWUgIiRvYmoiCi0JICAgIG9iamJhc2U9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkgICAgb2JqYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAkgICAgY2FzZSAiICRvbGRvYmpzICIgaW4KIAkgICAgIiAiKSBvbGRvYmpzPSRvYmogOzsKIAkgICAgKltcIC9dIiRvYmpiYXNlICIqKQpAQCAtOTIyMSwxOCArMTA3MTgsMTggQEAKIAkgICAgZWxzZQogCSAgICAgICMgdGhlIGFib3ZlIGNvbW1hbmQgc2hvdWxkIGJlIHVzZWQgYmVmb3JlIGl0IGdldHMgdG9vIGxvbmcKIAkgICAgICBvbGRvYmpzPSRvYmpsaXN0Ci0JICAgICAgaWYgdGVzdCAiJG9iaiIgPSAiJGxhc3Rfb2xkb2JqIiA7IHRoZW4KKwkgICAgICBpZiB0ZXN0ICIkb2JqIiA9ICIkbGFzdF9vbGRvYmoiOyB0aGVuCiAJCVJBTkxJQj0kc2F2ZV9SQU5MSUIKIAkgICAgICBmaQogCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiCisJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkb2xkX2FyY2hpdmVfY21kc1wiCiAJICAgICAgb2JqbGlzdD0KIAkgICAgICBsZW49JGxlbjAKIAkgICAgZmkKIAkgIGRvbmUKIAkgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKIAkgIG9sZG9ianM9JG9iamxpc3QKLQkgIGlmIHRlc3QgIlgkb2xkb2JqcyIgPSAiWCIgOyB0aGVuCisJICBpZiB0ZXN0IC16ICIkb2xkb2JqcyI7IHRoZW4KIAkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc1wiCiAJICBlbHNlCiAJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKQEAgLTkyNDksNyArMTA3NDYsNyBAQAogICAgIGNhc2UgJG91dHB1dCBpbgogICAgICoubGEpCiAgICAgICBvbGRfbGlicmFyeT0KLSAgICAgIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgb2xkX2xpYnJhcnk9IiRsaWJuYW1lLiRsaWJleHQiCisgICAgICB0ZXN0IHllcyA9ICIkYnVpbGRfb2xkX2xpYnMiICYmIG9sZF9saWJyYXJ5PSRsaWJuYW1lLiRsaWJleHQKICAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJG91dHB1dCIKIAogICAgICAgIyBQcmVzZXJ2ZSBhbnkgdmFyaWFibGVzIHRoYXQgbWF5IGFmZmVjdCBjb21waWxlciBiZWhhdmlvcgpAQCAtOTI2NCwzMSArMTA3NjEsMzEgQEAKIAlmaQogICAgICAgZG9uZQogICAgICAgIyBRdW90ZSB0aGUgbGluayBjb21tYW5kIGZvciBzaGlwcGluZy4KLSAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1tb2RlPXJlbGluayAkbGlidG9vbF9hcmdzIEBpbnN0X3ByZWZpeF9kaXJAKSIKKyAgICAgIHJlbGlua19jb21tYW5kPSIoY2QgYHB3ZGA7ICRTSEVMTCBcIiRwcm9ncGF0aFwiICRwcmVzZXJ2ZV9hcmdzIC0tbW9kZT1yZWxpbmsgJGxpYnRvb2xfYXJncyBAaW5zdF9wcmVmaXhfZGlyQCkiCiAgICAgICByZWxpbmtfY29tbWFuZD1gJEVDSE8gIiRyZWxpbmtfY29tbWFuZCIgfCAkU0VEICIkc2VkX3F1b3RlX3N1YnN0ImAKLSAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzIDsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJGhhcmRjb2RlX2F1dG9tYXRpYyI7IHRoZW4KIAlyZWxpbmtfY29tbWFuZD0KICAgICAgIGZpCiAKICAgICAgICMgT25seSBjcmVhdGUgdGhlIG91dHB1dCBpZiBub3QgYSBkcnkgcnVuLgogICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKIAlmb3IgaW5zdGFsbGVkIGluIG5vIHllczsgZG8KLQkgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0geWVzOyB0aGVuCisJICBpZiB0ZXN0IHllcyA9ICIkaW5zdGFsbGVkIjsgdGhlbgogCSAgICBpZiB0ZXN0IC16ICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCiAJICAgICAgYnJlYWsKIAkgICAgZmkKLQkgICAgb3V0cHV0PSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSJpCisJICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9aQogCSAgICAjIFJlcGxhY2UgYWxsIHVuaW5zdGFsbGVkIGxpYnRvb2wgbGlicmFyaWVzIHdpdGggdGhlIGluc3RhbGxlZCBvbmVzCiAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0KIAkgICAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwogCSAgICAgIGNhc2UgJGRlcGxpYiBpbgogCSAgICAgICoubGEpCiAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCi0JCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKwkJbmFtZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKIAkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0JCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisJCWV2YWwgbGliZGlyPWAkU0VEIC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0JCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCSAgZnVuY19mYXRhbF9lcnJvciAiJyRkZXBsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCiAJCTs7CiAJICAgICAgLUwqKQpAQCAtOTMwNCwyMyArMTA4MDEsMjMgQEAKIAkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAkZGVwbGliIiA7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQotCSAgICBkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMiCisJICAgIGRlcGVuZGVuY3lfbGlicz0kbmV3ZGVwZW5kZW5jeV9saWJzCiAJICAgIG5ld2RsZmlsZXM9CiAKIAkgICAgZm9yIGxpYiBpbiAkZGxmaWxlczsgZG8KIAkgICAgICBjYXNlICRsaWIgaW4KIAkgICAgICAqLmxhKQogCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKLQkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorCQluYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorCQlldmFsIGxpYmRpcj1gJFNFRCAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIickbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCiAJCWZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKIAkJOzsKIAkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKLQkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisJICAgIGRsZmlsZXM9JG5ld2RsZmlsZXMKIAkgICAgbmV3ZGxwcmVmaWxlcz0KIAkgICAgZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KIAkgICAgICBjYXNlICRsaWIgaW4KQEAgLTkzMzAsMzQgKzEwODI3LDM0IEBACiAJCSMgZGlkbid0IGFscmVhZHkgbGluayB0aGUgcHJlb3BlbmVkIG9iamVjdHMgZGlyZWN0bHkgaW50bwogCQkjIHRoZSBsaWJyYXJ5OgogCQlmdW5jX2Jhc2VuYW1lICIkbGliIgotCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0JCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCisJCW5hbWU9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0CisJCWV2YWwgbGliZGlyPWAkU0VEIC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAogCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0JCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisJCSAgZnVuY19mYXRhbF9lcnJvciAiJyRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKIAkJZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgogCQk7OwogCSAgICAgIGVzYWMKIAkgICAgZG9uZQotCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKKwkgICAgZGxwcmVmaWxlcz0kbmV3ZGxwcmVmaWxlcwogCSAgZWxzZQogCSAgICBuZXdkbGZpbGVzPQogCSAgICBmb3IgbGliIGluICRkbGZpbGVzOyBkbwogCSAgICAgIGNhc2UgJGxpYiBpbgotCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKKwkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9JGxpYiA7OwogCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CiAJICAgICAgZXNhYwogCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgogCSAgICBkb25lCi0JICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgorCSAgICBkbGZpbGVzPSRuZXdkbGZpbGVzCiAJICAgIG5ld2RscHJlZmlsZXM9CiAJICAgIGZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCiAJICAgICAgY2FzZSAkbGliIGluCi0JCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0kbGliIDs7CiAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKIAkgICAgICBlc2FjCiAJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCiAJICAgIGRvbmUKLQkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCisJICAgIGRscHJlZmlsZXM9JG5ld2RscHJlZmlsZXMKIAkgIGZpCiAJICAkUk0gJG91dHB1dAogCSAgIyBwbGFjZSBkbG5hbWUgaW4gY29ycmVjdCBwb3NpdGlvbiBmb3IgY3lnd2luCkBAIC05MzczLDEwICsxMDg3MCw5IEBACiAJICBjYXNlICRob3N0LCRvdXRwdXQsJGluc3RhbGxlZCwkbW9kdWxlLCRkbG5hbWUgaW4KIAkgICAgKmN5Z3dpbiosKmxhaSx5ZXMsbm8sKi5kbGwgfCAqbWluZ3cqLCpsYWkseWVzLG5vLCouZGxsIHwgKmNlZ2NjKiwqbGFpLHllcyxubywqLmRsbCkKIAkgICAgICAjIElmIGEgLWJpbmRpciBhcmd1bWVudCB3YXMgc3VwcGxpZWQsIHBsYWNlIHRoZSBkbGwgdGhlcmUuCi0JICAgICAgaWYgdGVzdCAieCRiaW5kaXIiICE9IHggOwotCSAgICAgIHRoZW4KKwkgICAgICBpZiB0ZXN0IC1uICIkYmluZGlyIjsgdGhlbgogCQlmdW5jX3JlbGF0aXZlX3BhdGggIiRpbnN0YWxsX2xpYmRpciIgIiRiaW5kaXIiCi0JCXRkbG5hbWU9JGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQkZGxuYW1lCisJCXRkbG5hbWU9JGZ1bmNfcmVsYXRpdmVfcGF0aF9yZXN1bHQvJGRsbmFtZQogCSAgICAgIGVsc2UKIAkJIyBPdGhlcndpc2UgZmFsbCBiYWNrIG9uIGhldXJpc3RpYy4KIAkJdGRsbmFtZT0uLi9iaW4vJGRsbmFtZQpAQCAtOTM4NSw3ICsxMDg4MSw3IEBACiAJICBlc2FjCiAJICAkRUNITyA+ICRvdXRwdXQgIlwKICMgJG91dHB1dG5hbWUgLSBhIGxpYnRvb2wgbGlicmFyeSBmaWxlCi0jIEdlbmVyYXRlZCBieSAkUFJPR1JBTSAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT04KKyMgR2VuZXJhdGVkIGJ5ICRQUk9HUkFNIChHTlUgJFBBQ0tBR0UpICRWRVJTSU9OCiAjCiAjIFBsZWFzZSBETyBOT1QgZGVsZXRlIHRoaXMgZmlsZSEKICMgSXQgaXMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHRoZSBsaWJyYXJ5LgpAQCAtOTM5OSw3ICsxMDg5NSw3IEBACiAjIFRoZSBuYW1lIG9mIHRoZSBzdGF0aWMgYXJjaGl2ZS4KIG9sZF9saWJyYXJ5PSckb2xkX2xpYnJhcnknCiAKLSMgTGlua2VyIGZsYWdzIHRoYXQgY2FuIG5vdCBnbyBpbiBkZXBlbmRlbmN5X2xpYnMuCisjIExpbmtlciBmbGFncyB0aGF0IGNhbm5vdCBnbyBpbiBkZXBlbmRlbmN5X2xpYnMuCiBpbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSckbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MnCiAKICMgTGlicmFyaWVzIHRoYXQgdGhpcyBvbmUgZGVwZW5kcyB1cG9uLgpAQCAtOTQyNSw3ICsxMDkyMSw3IEBACiAKICMgRGlyZWN0b3J5IHRoYXQgdGhpcyBsaWJyYXJ5IG5lZWRzIHRvIGJlIGluc3RhbGxlZCBpbjoKIGxpYmRpcj0nJGluc3RhbGxfbGliZGlyJyIKLQkgIGlmIHRlc3QgIiRpbnN0YWxsZWQiID0gbm8gJiYgdGVzdCAiJG5lZWRfcmVsaW5rIiA9IHllczsgdGhlbgorCSAgaWYgdGVzdCBubyx5ZXMgPSAiJGluc3RhbGxlZCwkbmVlZF9yZWxpbmsiOyB0aGVuCiAJICAgICRFQ0hPID4+ICRvdXRwdXQgIlwKIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCiAJICBmaQpAQCAtOTQ0MCwyNyArMTA5MzYsMjkgQEAKICAgICBleGl0ICRFWElUX1NVQ0NFU1MKIH0KIAoteyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCi0gICAgZnVuY19tb2RlX2xpbmsgJHsxKyIkQCJ9CitpZiB0ZXN0IGxpbmsgPSAiJG9wdF9tb2RlIiB8fCB0ZXN0IHJlbGluayA9ICIkb3B0X21vZGUiOyB0aGVuCisgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQorZmkKIAogCiAjIGZ1bmNfbW9kZV91bmluc3RhbGwgYXJnLi4uCiBmdW5jX21vZGVfdW5pbnN0YWxsICgpCiB7Ci0gICAgJG9wdF9kZWJ1ZwotICAgIFJNPSIkbm9ub3B0IgorICAgICRkZWJ1Z19jbWQKKworICAgIFJNPSRub25vcHQKICAgICBmaWxlcz0KLSAgICBybWZvcmNlPQorICAgIHJtZm9yY2U9ZmFsc2UKICAgICBleGl0X3N0YXR1cz0wCiAKICAgICAjIFRoaXMgdmFyaWFibGUgdGVsbHMgd3JhcHBlciBzY3JpcHRzIGp1c3QgdG8gc2V0IHZhcmlhYmxlcyByYXRoZXIKICAgICAjIHRoYW4gcnVubmluZyB0aGVpciBwcm9ncmFtcy4KLSAgICBsaWJ0b29sX2luc3RhbGxfbWFnaWM9IiRtYWdpYyIKKyAgICBsaWJ0b29sX2luc3RhbGxfbWFnaWM9JG1hZ2ljCiAKICAgICBmb3IgYXJnCiAgICAgZG8KICAgICAgIGNhc2UgJGFyZyBpbgotICAgICAgLWYpIGZ1bmNfYXBwZW5kIFJNICIgJGFyZyI7IHJtZm9yY2U9eWVzIDs7CisgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT06IDs7CiAgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OwogICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OwogICAgICAgZXNhYwpAQCAtOTQ3MywxOCArMTA5NzEsMTggQEAKIAogICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KICAgICAgIGZ1bmNfZGlybmFtZSAiJGZpbGUiICIiICIuIgotICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCi0Jb2Rpcj0iJG9iamRpciIKKyAgICAgIGRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAorICAgICAgaWYgdGVzdCAuID0gIiRkaXIiOyB0aGVuCisJb2Rpcj0kb2JqZGlyCiAgICAgICBlbHNlCi0Jb2Rpcj0iJGRpci8kb2JqZGlyIgorCW9kaXI9JGRpci8kb2JqZGlyCiAgICAgICBmaQogICAgICAgZnVuY19iYXNlbmFtZSAiJGZpbGUiCi0gICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0gICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCisgICAgICBuYW1lPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorICAgICAgdGVzdCB1bmluc3RhbGwgPSAiJG9wdF9tb2RlIiAmJiBvZGlyPSRkaXIKIAogICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLSAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgorICAgICAgaWYgdGVzdCBjbGVhbiA9ICIkb3B0X21vZGUiOyB0aGVuCiAJY2FzZSAiICRybWRpcnMgIiBpbgogCSAgKiIgJG9kaXIgIiopIDs7CiAJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKQEAgLTk0OTksMTEgKzEwOTk3LDExIEBACiAgICAgICBlbGlmIHRlc3QgLWQgIiRmaWxlIjsgdGhlbgogCWV4aXRfc3RhdHVzPTEKIAljb250aW51ZQotICAgICAgZWxpZiB0ZXN0ICIkcm1mb3JjZSIgPSB5ZXM7IHRoZW4KKyAgICAgIGVsaWYgJHJtZm9yY2U7IHRoZW4KIAljb250aW51ZQogICAgICAgZmkKIAotICAgICAgcm1maWxlcz0iJGZpbGUiCisgICAgICBybWZpbGVzPSRmaWxlCiAKICAgICAgIGNhc2UgJG5hbWUgaW4KICAgICAgICoubGEpCkBAIC05NTE3LDcgKzExMDE1LDcgQEAKIAkgIGRvbmUKIAkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKIAotCSAgY2FzZSAiJG9wdF9tb2RlIiBpbgorCSAgY2FzZSAkb3B0X21vZGUgaW4KIAkgIGNsZWFuKQogCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgogCSAgICAqIiAkZGxuYW1lICIqKSA7OwpAQCAtOTUyOCwxMiArMTEwMjYsMTIgQEAKIAkgIHVuaW5zdGFsbCkKIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCiAJICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIHBvc3R1bmluc3RhbGwgY29tbWFuZHMuCi0JICAgICAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0dW5pbnN0YWxsX2NtZHMiICd0ZXN0ICIkcm1mb3JjZSIgPSB5ZXMgfHwgZXhpdF9zdGF0dXM9MScKKwkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3R1bmluc3RhbGxfY21kcyIgJyRybWZvcmNlIHx8IGV4aXRfc3RhdHVzPTEnCiAJICAgIGZpCiAKIAkgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgogCSAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBvbGRfcG9zdHVuaW5zdGFsbCBjb21tYW5kcy4KLQkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMiICd0ZXN0ICIkcm1mb3JjZSIgPSB5ZXMgfHwgZXhpdF9zdGF0dXM9MScKKwkgICAgICBmdW5jX2V4ZWN1dGVfY21kcyAiJG9sZF9wb3N0dW5pbnN0YWxsX2NtZHMiICckcm1mb3JjZSB8fCBleGl0X3N0YXR1cz0xJwogCSAgICBmaQogCSAgICAjIEZJWE1FOiBzaG91bGQgcmVpbnN0YWxsIHRoZSBiZXN0IHJlbWFpbmluZyBzaGFyZWQgbGlicmFyeS4KIAkgICAgOzsKQEAgLTk1NDksMjEgKzExMDQ3LDE5IEBACiAJICBmdW5jX3NvdXJjZSAkZGlyLyRuYW1lCiAKIAkgICMgQWRkIFBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCi0JICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmIHRlc3Qgbm9uZSAhPSAiJHBpY19vYmplY3QiOyB0aGVuCiAJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgogCSAgZmkKIAogCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgotCSAgaWYgdGVzdCAtbiAiJG5vbl9waWNfb2JqZWN0IiAmJgotCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCisJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmIHRlc3Qgbm9uZSAhPSAiJG5vbl9waWNfb2JqZWN0IjsgdGhlbgogCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kbm9uX3BpY19vYmplY3QiCiAJICBmaQogCWZpCiAJOzsKIAogICAgICAgKikKLQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCisJaWYgdGVzdCBjbGVhbiA9ICIkb3B0X21vZGUiOyB0aGVuCiAJICBub2V4ZW5hbWU9JG5hbWUKIAkgIGNhc2UgJGZpbGUgaW4KIAkgICouZXhlKQpAQCAtOTU5MCwxMiArMTEwODYsMTIgQEAKIAogCSAgICAjIG5vdGUgJG5hbWUgc3RpbGwgY29udGFpbnMgLmV4ZSBpZiBpdCB3YXMgaW4gJGZpbGUgb3JpZ2luYWxseQogCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwotCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG5hbWUgJG9kaXIvJHtuYW1lfVMuJHtvYmpleHR9IgotCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCisJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4kb2JqZXh0IgorCSAgICBpZiB0ZXN0IHllcyA9ICIkZmFzdF9pbnN0YWxsIiAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCiAJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgogCSAgICBmaQotCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCi0JICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSI7IHRoZW4KKwkgICAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvbHQtJG5vZXhlbmFtZS5jIgogCSAgICBmaQogCSAgZmkKIAlmaQpAQCAtOTYwNCw3ICsxMTEwMCw3IEBACiAgICAgICBmdW5jX3Nob3dfZXZhbCAiJFJNICRybWZpbGVzIiAnZXhpdF9zdGF0dXM9MScKICAgICBkb25lCiAKLSAgICAjIFRyeSB0byByZW1vdmUgdGhlICR7b2JqZGlyfXMgaW4gdGhlIGRpcmVjdG9yaWVzIHdoZXJlIHdlIGRlbGV0ZWQgZmlsZXMKKyAgICAjIFRyeSB0byByZW1vdmUgdGhlICRvYmpkaXIncyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwogICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KICAgICAgIGlmIHRlc3QgLWQgIiRkaXIiOyB0aGVuCiAJZnVuY19zaG93X2V2YWwgInJtZGlyICRkaXIgPi9kZXYvbnVsbCAyPiYxIgpAQCAtOTYxNCwxNiArMTExMTAsMTcgQEAKICAgICBleGl0ICRleGl0X3N0YXR1cwogfQogCi17IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCi0gICAgZnVuY19tb2RlX3VuaW5zdGFsbCAkezErIiRAIn0KK2lmIHRlc3QgdW5pbnN0YWxsID0gIiRvcHRfbW9kZSIgfHwgdGVzdCBjbGVhbiA9ICIkb3B0X21vZGUiOyB0aGVuCisgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CitmaQogCiB0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKLSAgaGVscD0iJGdlbmVyaWNfaGVscCIKKyAgaGVscD0kZ2VuZXJpY19oZWxwCiAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIE1PREUiCiB9CiAKIHRlc3QgLXogIiRleGVjX2NtZCIgJiYgXAotICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgorICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgJyRvcHRfbW9kZSciCiAKIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KICAgZXZhbCBleGVjICIkZXhlY19jbWQiCkBAIC05NjM0LDcgKzExMTMxLDcgQEAKIAogCiAjIFRoZSBUQUdzIGJlbG93IGFyZSBkZWZpbmVkIHN1Y2ggdGhhdCB3ZSBuZXZlciBnZXQgaW50byBhIHNpdHVhdGlvbgotIyBpbiB3aGljaCB3ZSBkaXNhYmxlIGJvdGgga2luZHMgb2YgbGlicmFyaWVzLiAgR2l2ZW4gY29uZmxpY3RpbmcKKyMgd2hlcmUgd2UgZGlzYWJsZSBib3RoIGtpbmRzIG9mIGxpYnJhcmllcy4gIEdpdmVuIGNvbmZsaWN0aW5nCiAjIGNob2ljZXMsIHdlIGdvIGZvciBhIHN0YXRpYyBsaWJyYXJ5LCB0aGF0IGlzIHRoZSBtb3N0IHBvcnRhYmxlLAogIyBzaW5jZSB3ZSBjYW4ndCB0ZWxsIHdoZXRoZXIgc2hhcmVkIGxpYnJhcmllcyB3ZXJlIGRpc2FibGVkIGJlY2F1c2UKICMgdGhlIHVzZXIgYXNrZWQgZm9yIHRoYXQgb3IgYmVjYXVzZSB0aGUgcGxhdGZvcm0gZG9lc24ndCBzdXBwb3J0CkBAIC05NjU3LDUgKzExMTU0LDMgQEAKICMgbW9kZTpzaGVsbC1zY3JpcHQKICMgc2gtaW5kZW50YXRpb246MgogIyBFbmQ6Ci0jIHZpOnN3PTIKLQpkaWZmIC0tZ2l0IGEvbTQvTWFrZWZpbGUuYW0gYi9tNC9NYWtlZmlsZS5hbQppbmRleCBkNGU3ODkzLi45NWE2NjQxIDEwMDY0NAotLS0gYS9tNC9NYWtlZmlsZS5hbQorKysgYi9tNC9NYWtlZmlsZS5hbQpAQCAtMTgsNyArMTgsNiBAQAogCWludHR5cGVzX2gubTQgXAogCWludHR5cGVzLXByaS5tNCBcCiAJbGNtZXNzYWdlLm00IFwKLQlsaWJmYW1lLm00IFwKIAlsaWItbGQubTQgXAogCWxpYi1saW5rLm00IFwKIAlsaWJtaWttb2QubTQgXApkaWZmIC0tZ2l0IGEvbTQvTWFrZWZpbGUuaW4gYi9tNC9NYWtlZmlsZS5pbgppbmRleCA2OTQxZDg2Li40M2RmYzUzIDEwMDY0NAotLS0gYS9tNC9NYWtlZmlsZS5pbgorKysgYi9tNC9NYWtlZmlsZS5pbgpAQCAtMTE0LDE2ICsxMTQsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTE4OCw2ICsxODcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTIyNSw2ICsyMjYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTIzMyw3ICsyMzYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0yNTIsOCArMjU0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTI3MCwxNiArMjczLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTMwNSw2ICszMDksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zMzAsNiArMzM2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDMxLDYgKzQzOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00NDQsOCArNDUzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNDYxLDYgKzQ2OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01MTgsMTYgKzUyNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTU3OSw2ICs1OTAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNTg5LDYgKzYwMSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTU5OCw2ICs2MTEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjM1LDcgKzY1MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNjk1LDcgKzcwOSw2IEBACiAJaW50dHlwZXNfaC5tNCBcCiAJaW50dHlwZXMtcHJpLm00IFwKIAlsY21lc3NhZ2UubTQgXAotCWxpYmZhbWUubTQgXAogCWxpYi1sZC5tNCBcCiAJbGliLWxpbmsubTQgXAogCWxpYm1pa21vZC5tNCBcCmRpZmYgLS1naXQgYS9tNC9nc2V0dGluZ3MubTQgYi9tNC9nc2V0dGluZ3MubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyOWQwNGIuLjAwMDAwMDAKLS0tIGEvbTQvZ3NldHRpbmdzLm00CisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotZG5sIEdMSUJfR1NFVFRJTkdTCi1kbmwgRGVmaW5lcyBHU0VUVElOR1NfU0NIRU1BU19JTlNUQUxMIHdoaWNoIGNvbnRyb2xzIHdoZXRoZXIKLWRubCB0aGUgc2NoZW1hIHNob3VsZCBiZSBjb21waWxlZAotZG5sCi0KLUFDX0RFRlVOKFtHTElCX0dTRVRUSU5HU10sCi1bCi0gIG00X3BhdHRlcm5fYWxsb3coW0FNX1ZfR0VOXSkKLSAgQUNfQVJHX0VOQUJMRShzY2hlbWFzLWNvbXBpbGUsCi0gICAgICAgICAgICAgICAgQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1zY2hlbWFzLWNvbXBpbGVdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtEaXNhYmxlIHJlZ2VuZXJhdGlvbiBvZiBnc2NoZW1hcy5jb21waWxlZCBvbiBpbnN0YWxsXSksCi0gICAgICAgICAgICAgICAgW2Nhc2UgJHtlbmFibGV2YWx9IGluCi0gICAgICAgICAgICAgICAgICB5ZXMpIEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRT0iIiAgOzsKLSAgICAgICAgICAgICAgICAgIG5vKSAgR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFPSIxIiA7OwotICAgICAgICAgICAgICAgICAgKikgQUNfTVNHX0VSUk9SKFtiYWQgdmFsdWUgJHtlbmFibGV2YWx9IGZvciAtLWVuYWJsZS1zY2hlbWFzLWNvbXBpbGVdKSA7OwotICAgICAgICAgICAgICAgICBlc2FjXSkKLSAgQUNfU1VCU1QoW0dTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRV0pCi0gIFBLR19QUk9HX1BLR19DT05GSUcoWzAuMTZdKQotICBBQ19TVUJTVChnc2V0dGluZ3NzY2hlbWFkaXIsIFske2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXNdKQotICBpZiB0ZXN0IHgkY3Jvc3NfY29tcGlsaW5nICE9IHh5ZXM7IHRoZW4KLSAgICBHTElCX0NPTVBJTEVfU0NIRU1BUz1gJFBLR19DT05GSUcgLS12YXJpYWJsZSBnbGliX2NvbXBpbGVfc2NoZW1hcyBnaW8tMi4wYAotICBlbHNlCi0gICAgQUNfUEFUSF9QUk9HKEdMSUJfQ09NUElMRV9TQ0hFTUFTLCBnbGliLWNvbXBpbGUtc2NoZW1hcykKLSAgZmkKLSAgQUNfU1VCU1QoR0xJQl9DT01QSUxFX1NDSEVNQVMpCi0gIGlmIHRlc3QgIngkR0xJQl9DT01QSUxFX1NDSEVNQVMiID0gIngiOyB0aGVuCi0gICAgaWZlbHNlKFskMl0sLFtBQ19NU0dfRVJST1IoW2dsaWItY29tcGlsZS1zY2hlbWFzIG5vdCBmb3VuZC5dKV0sWyQyXSkKLSAgZWxzZQotICAgIGlmZWxzZShbJDFdLCxbOl0sWyQxXSkKLSAgZmkKLQotICBHU0VUVElOR1NfUlVMRVM9JwotLlBIT05ZIDogdW5pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzIGluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXMgY2xlYW4tZ3NldHRpbmdzLXNjaGVtYXMKLQotbW9zdGx5Y2xlYW4tYW06IGNsZWFuLWdzZXR0aW5ncy1zY2hlbWFzCi0KLWdzZXR0aW5nc19fZW51bV9maWxlID0gJChhZGRzdWZmaXggLmVudW1zLnhtbCwkKGdzZXR0aW5nc19FTlVNX05BTUVTUEFDRSkpCi0KLSUuZ3NjaGVtYS52YWxpZDogJS5nc2NoZW1hLnhtbCAkKGdzZXR0aW5nc19fZW51bV9maWxlKQotCSQoQU1fVl9HRU4pIGlmIHRlc3QgLWYgIiQ8IjsgdGhlbiBkPTsgZWxzZSBkPSIkKHNyY2RpcikvIjsgZmk7ICQoR0xJQl9DT01QSUxFX1NDSEVNQVMpIC0tc3RyaWN0IC0tZHJ5LXJ1biAkKGFkZHByZWZpeCAtLXNjaGVtYS1maWxlPSwkKGdzZXR0aW5nc19fZW51bV9maWxlKSkgLS1zY2hlbWEtZmlsZT0kJHtkfSQ8ICYmIHRvdWNoIFskXUAKLQotYWxsLWFtOiAkKGdzZXR0aW5nc19TQ0hFTUFTOi54bWw9LnZhbGlkKQotdW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXMKLWluc3RhbGwtZGF0YS1hbTogaW5zdGFsbC1nc2V0dGluZ3Mtc2NoZW1hcwotCi0uU0VDT05EQVJZOiAkKGdzZXR0aW5nc19TQ0hFTUFTKQotCi1pbnN0YWxsLWdzZXR0aW5ncy1zY2hlbWFzOiAkKGdzZXR0aW5nc19TQ0hFTUFTKSAkKGdzZXR0aW5nc19fZW51bV9maWxlKQotCUAkKE5PUk1BTF9JTlNUQUxMKQotCWlmIHRlc3QgLW4gIiReIjsgdGhlbiBcCi0JCXRlc3QgLXogIiQoZ3NldHRpbmdzc2NoZW1hZGlyKSIgfHwgJChNS0RJUl9QKSAiJChERVNURElSKSQoZ3NldHRpbmdzc2NoZW1hZGlyKSI7IFwKLQkJJChJTlNUQUxMX0RBVEEpICReICIkKERFU1RESVIpJChnc2V0dGluZ3NzY2hlbWFkaXIpIjsgXAotCQl0ZXN0IC1uICIkKEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSkkKERFU1RESVIpIiB8fCAkKEdMSUJfQ09NUElMRV9TQ0hFTUFTKSAkKGdzZXR0aW5nc3NjaGVtYWRpcik7IFwKLQlmaQotCi11bmluc3RhbGwtZ3NldHRpbmdzLXNjaGVtYXM6Ci0JQCQoTk9STUFMX1VOSU5TVEFMTCkKLQlAbGlzdD0nXCcnJChnc2V0dGluZ3NfU0NIRU1BUykgJChnc2V0dGluZ3NfX2VudW1fZmlsZSknXCcnOyB0ZXN0IC1uICIkKGdzZXR0aW5nc3NjaGVtYWRpcikiIHx8IGxpc3Q9OyBcCi0JZmlsZXM9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAkJHA7IGRvbmUgfCBzZWQgLWUgJ1wnJ3N8Xi4qL3x8J1wnJ2A7IFwKLQl0ZXN0IC1uICIkJGZpbGVzIiB8fCBleGl0IDA7IFwKLQllY2hvICIgKCBjZCAnXCcnJChERVNURElSKSQoZ3NldHRpbmdzc2NoZW1hZGlyKSdcJycgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0JY2QgIiQoREVTVERJUikkKGdzZXR0aW5nc3NjaGVtYWRpcikiICYmIHJtIC1mICQkZmlsZXMKLQl0ZXN0IC1uICIkKEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSkkKERFU1RESVIpIiB8fCAkKEdMSUJfQ09NUElMRV9TQ0hFTUFTKSAkKGdzZXR0aW5nc3NjaGVtYWRpcikKLQotY2xlYW4tZ3NldHRpbmdzLXNjaGVtYXM6Ci0Jcm0gLWYgJChnc2V0dGluZ3NfU0NIRU1BUzoueG1sPS52YWxpZCkgJChnc2V0dGluZ3NfX2VudW1fZmlsZSkKLQotaWZkZWYgZ3NldHRpbmdzX0VOVU1fTkFNRVNQQUNFCi0kKGdzZXR0aW5nc19fZW51bV9maWxlKTogJChnc2V0dGluZ3NfRU5VTV9GSUxFUykKLQkkKEFNX1ZfR0VOKSBnbGliLW1rZW51bXMgLS1jb21tZW50cyAnXCcnPCEtLSBAY29tbWVudEAgLS0+J1wnJyAtLWZoZWFkICI8c2NoZW1hbGlzdD4iIC0tdmhlYWQgIiAgPEB0eXBlQCBpZD0nXCcnJChnc2V0dGluZ3NfRU5VTV9OQU1FU1BBQ0UpLkBFbnVtTmFtZUAnXCcnPiIgLS12cHJvZCAiICAgIDx2YWx1ZSBuaWNrPSdcJydAdmFsdWVuaWNrQCdcJycgdmFsdWU9J1wnJ0B2YWx1ZW51bUAnXCcnLz4iIC0tdnRhaWwgIiAgPC9AdHlwZUA+IiAtLWZ0YWlsICI8L3NjaGVtYWxpc3Q+IiBbJF1eID4gWyRdQC50bXAgJiYgbXYgWyRdQC50bXAgWyRdQAotZW5kaWYKLScKLSAgX0dTRVRUSU5HU19TVUJTVChHU0VUVElOR1NfUlVMRVMpCi1dKQotCi1kbmwgX0dTRVRUSU5HU19TVUJTVChWQVJJQUJMRSkKLWRubCBBYnN0cmFjdCBtYWNybyB0byBkbyBlaXRoZXIgX0FNX1NVQlNUX05PVE1BS0Ugb3IgQUNfU1VCU1QKLUFDX0RFRlVOKFtfR1NFVFRJTkdTX1NVQlNUXSwKLVsKLUFDX1NVQlNUKFskMV0pCi1tNF9pZmRlZihbX0FNX1NVQlNUX05PVE1BS0VdLCBbX0FNX1NVQlNUX05PVE1BS0UoWyQxXSldKQotXQotKQpkaWZmIC0tZ2l0IGEvbTQvbGliZmFtZS5tNCBiL200L2xpYmZhbWUubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1NzA1ODQuLjAwMDAwMDAKLS0tIGEvbTQvbGliZmFtZS5tNAorKysgL2Rldi9udWxsCkBAIC0xLDE4MiArMCwwIEBACi1kbmwgQU1fUEFUSF9MSUJGQU1FKFtNSU5JTVVNLVZFUlNJT04sIFtBQ1RJT04tSUYtRk9VTkQgWywgQUNUSU9OLUlGLU5PVC1GT1VORCBbLCBNT0RVTEVTXV1dXSkKLWRubCBUZXN0IGZvciBsaWJmYW1lLCBhbmQgZGVmaW5lIExJQkZBTUVfQ0ZMQUdTIGFuZCBMSUJGQU1FX0xJQlMKLWRubCBWaXZpZW4gQ2hhcHBlbGllciAxMi8xMS8wMAotZG5sIHN0b2xlbiBmcm9tIE9SQml0IGF1dG9jb25mCi1kbmwKLUFDX0RFRlVOKFtBTV9QQVRIX0xJQkZBTUVdLAotW2RubCAKLWRubCBHZXQgdGhlIGNmbGFncyBhbmQgbGlicmFyaWVzIGZyb20gdGhlIGxpYmZhbWUtY29uZmlnIHNjcmlwdAotZG5sCi1BQ19BUkdfV0lUSChsaWJmYW1lLXByZWZpeCxbICAtLXdpdGgtbGliZmFtZS1wcmVmaXg9UEZYICAgUHJlZml4IHdoZXJlIGxpYmZhbWUgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldLAotICAgICAgICAgICAgbGliZmFtZV9jb25maWdfcHJlZml4PSIkd2l0aHZhbCIsIGxpYmZhbWVfY29uZmlnX3ByZWZpeD0iIikKLUFDX0FSR19XSVRIKGxpYmZhbWUtZXhlYy1wcmVmaXgsWyAgLS13aXRoLWxpYmZhbWUtZXhlYy1wcmVmaXg9UEZYIEV4ZWMgcHJlZml4IHdoZXJlIGxpYmZhbWUgaXMgaW5zdGFsbGVkIChvcHRpb25hbCldLAotICAgICAgICAgICAgbGliZmFtZV9jb25maWdfZXhlY19wcmVmaXg9IiR3aXRodmFsIiwgbGliZmFtZV9jb25maWdfZXhlY19wcmVmaXg9IiIpCi1BQ19BUkdfRU5BQkxFKGxpYmZhbWV0ZXN0LCBbICAtLWRpc2FibGUtbGliZmFtZXRlc3QgICAgICAgRG8gbm90IHRyeSB0byBjb21waWxlIGFuZCBydW4gYSB0ZXN0IGxpYmZhbWUgcHJvZ3JhbV0sCi0JCSAgICAsIGVuYWJsZV9saWJmYW1ldGVzdD15ZXMpCi0KLSAgaWYgdGVzdCB4JGxpYmZhbWVfY29uZmlnX2V4ZWNfcHJlZml4ICE9IHggOyB0aGVuCi0gICAgIGxpYmZhbWVfY29uZmlnX2FyZ3M9IiRsaWJmYW1lX2NvbmZpZ19hcmdzIC0tZXhlYy1wcmVmaXg9JGxpYmZhbWVfY29uZmlnX2V4ZWNfcHJlZml4IgotICAgICBpZiB0ZXN0IHgke0xJQkZBTUVfQ09ORklHK3NldH0gIT0geHNldCA7IHRoZW4KLSAgICAgICAgTElCRkFNRV9DT05GSUc9JGxpYmZhbWVfY29uZmlnX2V4ZWNfcHJlZml4L2Jpbi9saWJmYW1lLWNvbmZpZwotICAgICBmaQotICBmaQotICBpZiB0ZXN0IHgkbGliZmFtZV9jb25maWdfcHJlZml4ICE9IHggOyB0aGVuCi0gICAgIGxpYmZhbWVfY29uZmlnX2FyZ3M9IiRsaWJmYW1lX2NvbmZpZ19hcmdzIC0tcHJlZml4PSRsaWJmYW1lX2NvbmZpZ19wcmVmaXgiCi0gICAgIGlmIHRlc3QgeCR7TElCRkFNRV9DT05GSUcrc2V0fSAhPSB4c2V0IDsgdGhlbgotICAgICAgICBMSUJGQU1FX0NPTkZJRz0kbGliZmFtZV9jb25maWdfcHJlZml4L2Jpbi9saWJmYW1lLWNvbmZpZwotICAgICBmaQotICBmaQotCi0gIEFDX1BBVEhfUFJPRyhMSUJGQU1FX0NPTkZJRywgbGliZmFtZS1jb25maWcsIG5vKQotICBtaW5fbGliZmFtZV92ZXJzaW9uPWlmZWxzZShbJDFdLCAsIDAuOS4wLCAkMSkKLSAgQUNfTVNHX0NIRUNLSU5HKGZvciBsaWJmYW1lIC0gdmVyc2lvbiA+PSAkbWluX2xpYmZhbWVfdmVyc2lvbikKLSAgbm9fbGliZmFtZT0iIgotICBpZiB0ZXN0ICIkTElCRkFNRV9DT05GSUciID0gIm5vIiA7IHRoZW4KLSAgICBub19saWJmYW1lPXllcwotICBlbHNlCi0gICAgTElCRkFNRV9DRkxBR1M9YCRMSUJGQU1FX0NPTkZJRyAkbGliZmFtZV9jb25maWdfYXJncyAtLWNmbGFnc2AKLSAgICBMSUJGQU1FX0xJQlM9YCRMSUJGQU1FX0NPTkZJRyAkbGliZmFtZV9jb25maWdfYXJncyAtLWxpYnNgCi0gICAgbGliZmFtZV9jb25maWdfbWFqb3JfdmVyc2lvbj1gJExJQkZBTUVfQ09ORklHICRsaWJmYW1lX2NvbmZpZ19hcmdzIC0tdmVyc2lvbiB8IFwKLQkgICBzZWQgLWUgJ3MsW1teMC05Ll1dLCxnJyAtZSAncy9cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS9cMS8nYAotICAgIGxpYmZhbWVfY29uZmlnX21pbm9yX3ZlcnNpb249YCRMSUJGQU1FX0NPTkZJRyAkbGliZmFtZV9jb25maWdfYXJncyAtLXZlcnNpb24gfCBcCi0JICAgc2VkIC1lICdzLFtbXjAtOS5dXSwsZycgLWUgJ3MvXChbWzAtOV1dKlwpLlwoW1swLTldXSpcKS5cKFtbMC05XV0qXCkvXDIvJ2AKLSAgICBsaWJmYW1lX2NvbmZpZ19taWNyb192ZXJzaW9uPWAkTElCRkFNRV9DT05GSUcgJGxpYmZhbWVfY29uZmlnX2FyZ3MgLS12ZXJzaW9uIHwgXAotCSAgIHNlZCAtZSAncyxbW14wLTkuXV0sLGcnIC1lICdzL1woW1swLTldXSpcKS5cKFtbMC05XV0qXCkuXChbWzAtOV1dKlwpL1wzLydgCi0gICAgaWYgdGVzdCAieCRlbmFibGVfbGliZmFtZXRlc3QiID0gInh5ZXMiIDsgdGhlbgotICAgICAgYWNfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0gICAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgotICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRMSUJGQU1FX0NGTEFHUyIKLSAgICAgIExJQlM9IiRMSUJGQU1FX0xJQlMgJExJQlMiCi1kbmwKLWRubCBOb3cgY2hlY2sgaWYgdGhlIGluc3RhbGxlZCBMSUJGQU1FIGlzIHN1ZmZpY2llbnRseSBuZXcuIChBbHNvIHNhbml0eQotZG5sIGNoZWNrcyB0aGUgcmVzdWx0cyBvZiBsaWJmYW1lLWNvbmZpZyB0byBzb21lIGV4dGVudAotZG5sCi0gICAgICBybSAtZiBjb25mLmxpYmZhbWV0ZXN0Ci0gICAgICBBQ19UUllfUlVOKFsKLSNpbmNsdWRlIDxmYW1lLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdGRsaWIuaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLQotaW50IAotbWFpbiAoKQotewotICBpbnQgbWFqb3IsIG1pbm9yLCBtaWNybzsKLSAgY2hhciAqdG1wX3ZlcnNpb247Ci0KLSAgc3lzdGVtICgidG91Y2ggY29uZi5saWJmYW1ldGVzdCIpOwotCi0gIC8qIEhQL1VYIDkgKCVAIyEpIHdyaXRlcyB0byBzc2NhbmYgc3RyaW5ncyAqLwotICB0bXBfdmVyc2lvbiA9IHN0cmR1cCgiJG1pbl9saWJmYW1lX3ZlcnNpb24iKTsKLSAgaWYgKHNzY2FuZih0bXBfdmVyc2lvbiwgIiVkLiVkLiVkIiwgJm1ham9yLCAmbWlub3IsICZtaWNybykgIT0gMykgewotICAgICBwcmludGYoIiVzLCBiYWQgdmVyc2lvbiBzdHJpbmdcbiIsICIkbWluX2xpYmZhbWVfdmVyc2lvbiIpOwotICAgICBleGl0KDEpOwotICAgfQotCi0gIGlmICgobGliZmFtZV9tYWpvcl92ZXJzaW9uICE9ICRsaWJmYW1lX2NvbmZpZ19tYWpvcl92ZXJzaW9uKSB8fAotICAgICAgKGxpYmZhbWVfbWlub3JfdmVyc2lvbiAhPSAkbGliZmFtZV9jb25maWdfbWlub3JfdmVyc2lvbikgfHwKLSAgICAgIChsaWJmYW1lX21pY3JvX3ZlcnNpb24gIT0gJGxpYmZhbWVfY29uZmlnX21pY3JvX3ZlcnNpb24pKQotICAgIHsKLSAgICAgIHByaW50ZigiXG4qKiogJ2xpYmZhbWUtY29uZmlnIC0tdmVyc2lvbicgcmV0dXJuZWQgJWQuJWQuJWQsIGJ1dCBMaWJmYW1lICglZC4lZC4lZClcbiIsIAotICAgICAgICAgICAgICRsaWJmYW1lX2NvbmZpZ19tYWpvcl92ZXJzaW9uLCAkbGliZmFtZV9jb25maWdfbWlub3JfdmVyc2lvbiwgJGxpYmZhbWVfY29uZmlnX21pY3JvX3ZlcnNpb24sCi0gICAgICAgICAgICAgbGliZmFtZV9tYWpvcl92ZXJzaW9uLCBsaWJmYW1lX21pbm9yX3ZlcnNpb24sIGxpYmZhbWVfbWljcm9fdmVyc2lvbik7Ci0gICAgICBwcmludGYgKCIqKiogd2FzIGZvdW5kISBJZiBsaWJmYW1lLWNvbmZpZyB3YXMgY29ycmVjdCwgdGhlbiBpdCBpcyBiZXN0XG4iKTsKLSAgICAgIHByaW50ZiAoIioqKiB0byByZW1vdmUgdGhlIG9sZCB2ZXJzaW9uIG9mIGxpYmZhbWUuIFlvdSBtYXkgYWxzbyBiZSBhYmxlIHRvIGZpeCB0aGUgZXJyb3JcbiIpOwotICAgICAgcHJpbnRmKCIqKiogYnkgbW9kaWZ5aW5nIHlvdXIgTERfTElCUkFSWV9QQVRIIGVudmlyb21lbnQgdmFyaWFibGUsIG9yIGJ5IGVkaXRpbmdcbiIpOwotICAgICAgcHJpbnRmKCIqKiogL2V0Yy9sZC5zby5jb25mLiBNYWtlIHN1cmUgeW91IGhhdmUgcnVuIGxkY29uZmlnIGlmIHRoYXQgaXNcbiIpOwotICAgICAgcHJpbnRmKCIqKiogcmVxdWlyZWQgb24geW91ciBzeXN0ZW0uXG4iKTsKLSAgICAgIHByaW50ZigiKioqIElmIGxpYmZhbWUtY29uZmlnIHdhcyB3cm9uZywgc2V0IHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMSUJGQU1FX0NPTkZJR1xuIik7Ci0gICAgICBwcmludGYoIioqKiB0byBwb2ludCB0byB0aGUgY29ycmVjdCBjb3B5IG9mIGxpYmZhbWUtY29uZmlnLCBhbmQgcmVtb3ZlIHRoZSBmaWxlIGNvbmZpZy5jYWNoZVxuIik7Ci0gICAgICBwcmludGYoIioqKiBiZWZvcmUgcmUtcnVubmluZyBjb25maWd1cmVcbiIpOwotICAgIH0gCi0jaWYgZGVmaW5lZCAoTElCRkFNRV9NQUpPUl9WRVJTSU9OKSAmJiBkZWZpbmVkIChMSUJGQU1FX01JTk9SX1ZFUlNJT04pICYmIGRlZmluZWQgKExJQkZBTUVfTUlDUk9fVkVSU0lPTikKLSAgZWxzZSBpZiAoKGxpYmZhbWVfbWFqb3JfdmVyc2lvbiAhPSBMSUJGQU1FX01BSk9SX1ZFUlNJT04pIHx8Ci0JICAgKGxpYmZhbWVfbWlub3JfdmVyc2lvbiAhPSBMSUJGQU1FX01JTk9SX1ZFUlNJT04pIHx8Ci0gICAgICAgICAgIChsaWJmYW1lX21pY3JvX3ZlcnNpb24gIT0gTElCRkFNRV9NSUNST19WRVJTSU9OKSkKLSAgICB7Ci0gICAgICBwcmludGYoIioqKiBsaWJmYW1lIGhlYWRlciBmaWxlcyAodmVyc2lvbiAlZC4lZC4lZCkgZG8gbm90IG1hdGNoXG4iLAotCSAgICAgTElCRkFNRV9NQUpPUl9WRVJTSU9OLCBMSUJGQU1FX01JTk9SX1ZFUlNJT04sIExJQkZBTUVfTUlDUk9fVkVSU0lPTik7Ci0gICAgICBwcmludGYoIioqKiBsaWJyYXJ5ICh2ZXJzaW9uICVkLiVkLiVkKVxuIiwKLQkgICAgIGxpYmZhbWVfbWFqb3JfdmVyc2lvbiwgbGliZmFtZV9taW5vcl92ZXJzaW9uLCBsaWJmYW1lX21pY3JvX3ZlcnNpb24pOwotICAgIH0KLSNlbmRpZiAvKiBkZWZpbmVkIChMSUJGQU1FX01BSk9SX1ZFUlNJT04pIC4uLiAqLwotICBlbHNlCi0gICAgewotICAgICAgaWYgKChsaWJmYW1lX21ham9yX3ZlcnNpb24gPiBtYWpvcikgfHwKLSAgICAgICAgKChsaWJmYW1lX21ham9yX3ZlcnNpb24gPT0gbWFqb3IpICYmIChsaWJmYW1lX21pbm9yX3ZlcnNpb24gPiBtaW5vcikpIHx8Ci0gICAgICAgICgobGliZmFtZV9tYWpvcl92ZXJzaW9uID09IG1ham9yKSAmJiAobGliZmFtZV9taW5vcl92ZXJzaW9uID09IG1pbm9yKSAmJiAobGliZmFtZV9taWNyb192ZXJzaW9uID49IG1pY3JvKSkpCi0gICAgICB7Ci0gICAgICAgIHJldHVybiAwOwotICAgICAgIH0KLSAgICAgZWxzZQotICAgICAgewotICAgICAgICBwcmludGYoIlxuKioqIEFuIG9sZCB2ZXJzaW9uIG9mIGxpYmZhbWUgKCVkLiVkLiVkKSB3YXMgZm91bmQuXG4iLAotICAgICAgICAgICAgICAgbGliZmFtZV9tYWpvcl92ZXJzaW9uLCBsaWJmYW1lX21pbm9yX3ZlcnNpb24sIGxpYmZhbWVfbWljcm9fdmVyc2lvbik7Ci0gICAgICAgIHByaW50ZigiKioqIFlvdSBuZWVkIGEgdmVyc2lvbiBvZiBsaWJmYW1lIG5ld2VyIHRoYW4gJWQuJWQuJWQuIFRoZSBsYXRlc3QgdmVyc2lvbiBvZlxuIiwKLQkgICAgICAgbWFqb3IsIG1pbm9yLCBtaWNybyk7Ci0gICAgICAgIHByaW50ZigiKioqIGxpYmZhbWUgaXMgYWx3YXlzIGF2YWlsYWJsZSBmcm9tIGh0dHA6Ly93d3ctZWxldmVzLmVuc3QtYnJldGFnbmUuZnIvfmNoYXBwZWxpL2ZhbWVcbiIpOwotICAgICAgICBwcmludGYoIioqKlxuIik7Ci0gICAgICAgIHByaW50ZigiKioqIElmIHlvdSBoYXZlIGFscmVhZHkgaW5zdGFsbGVkIGEgc3VmZmljaWVudGx5IG5ldyB2ZXJzaW9uLCB0aGlzIGVycm9yXG4iKTsKLSAgICAgICAgcHJpbnRmKCIqKiogcHJvYmFibHkgbWVhbnMgdGhhdCB0aGUgd3JvbmcgY29weSBvZiB0aGUgbGliZmFtZS1jb25maWcgc2hlbGwgc2NyaXB0IGlzXG4iKTsKLSAgICAgICAgcHJpbnRmKCIqKiogYmVpbmcgZm91bmQuIFRoZSBlYXNpZXN0IHdheSB0byBmaXggdGhpcyBpcyB0byByZW1vdmUgdGhlIG9sZCB2ZXJzaW9uXG4iKTsKLSAgICAgICAgcHJpbnRmKCIqKiogb2YgbGliZmFtZSwgYnV0IHlvdSBjYW4gYWxzbyBzZXQgdGhlIExJQkZBTUVfQ09ORklHIGVudmlyb25tZW50IHRvIHBvaW50IHRvIHRoZVxuIik7Ci0gICAgICAgIHByaW50ZigiKioqIGNvcnJlY3QgY29weSBvZiBsaWJmYW1lLWNvbmZpZy4gKEluIHRoaXMgY2FzZSwgeW91IHdpbGwgaGF2ZSB0b1xuIik7Ci0gICAgICAgIHByaW50ZigiKioqIG1vZGlmeSB5b3VyIExEX0xJQlJBUllfUEFUSCBlbnZpcm9tZW50IHZhcmlhYmxlLCBvciBlZGl0IC9ldGMvbGQuc28uY29uZlxuIik7Ci0gICAgICAgIHByaW50ZigiKioqIHNvIHRoYXQgdGhlIGNvcnJlY3QgbGlicmFyaWVzIGFyZSBmb3VuZCBhdCBydW4tdGltZSkpXG4iKTsKLSAgICAgIH0KLSAgICB9Ci0gIHJldHVybiAxOwotfQotXSwsIG5vX2xpYmZhbWU9eWVzLFtlY2hvICRhY19uICJjcm9zcyBjb21waWxpbmc7IGFzc3VtZWQgT0suLi4gJGFjX2MiXSkKLSAgICAgICBDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyIKLSAgICAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgotICAgICBmaQotICBmaQotICBpZiB0ZXN0ICJ4JG5vX2xpYmZhbWUiID0geCA7IHRoZW4KLSAgICAgQUNfTVNHX1JFU1VMVCh5ZXMpCi0gICAgIGlmZWxzZShbJDJdLCAsIDosIFskMl0pICAgICAKLSAgZWxzZQotICAgICBBQ19NU0dfUkVTVUxUKG5vKQotICAgICBpZiB0ZXN0ICIkTElCRkFNRV9DT05GSUciID0gIm5vIiA7IHRoZW4KLSAgICAgICBlY2hvICIqKiogVGhlIGxpYmZhbWUtY29uZmlnIHNjcmlwdCBpbnN0YWxsZWQgYnkgbGliZmFtZSBjb3VsZCBub3QgYmUgZm91bmQiCi0gICAgICAgZWNobyAiKioqIElmIGxpYmZhbWUgd2FzIGluc3RhbGxlZCBpbiBQUkVGSVgsIG1ha2Ugc3VyZSBQUkVGSVgvYmluIGlzIGluIgotICAgICAgIGVjaG8gIioqKiB5b3VyIHBhdGgsIG9yIHNldCB0aGUgTElCRkFNRV9DT05GSUcgZW52aXJvbm1lbnQgdmFyaWFibGUgdG8gdGhlIgotICAgICAgIGVjaG8gIioqKiBmdWxsIHBhdGggdG8gbGliZmFtZS1jb25maWcuIgotICAgICBlbHNlCi0gICAgICAgaWYgdGVzdCAtZiBjb25mLmxpYmZhbWV0ZXN0IDsgdGhlbgotICAgICAgICA6Ci0gICAgICAgZWxzZQotICAgICAgICAgIGVjaG8gIioqKiBDb3VsZCBub3QgcnVuIGxpYmZhbWUgdGVzdCBwcm9ncmFtLCBjaGVja2luZyB3aHkuLi4iCi0gICAgICAgICAgQ0ZMQUdTPSIkQ0ZMQUdTICRMSUJGQU1FX0NGTEFHUyIKLSAgICAgICAgICBMSUJTPSIkTElCUyAkTElCRkFNRV9MSUJTIgotICAgICAgICAgIEFDX1RSWV9MSU5LKFsKLSNpbmNsdWRlIDxmYW1lLmg+Ci0jaW5jbHVkZSA8c3RkaW8uaD4KLV0sICAgICAgWyByZXR1cm4gKChsaWJmYW1lX21ham9yX3ZlcnNpb24pIHx8IChsaWJmYW1lX21pbm9yX3ZlcnNpb24pIHx8IChsaWJmYW1lX21pY3JvX3ZlcnNpb24pKTsgXSwKLSAgICAgICAgWyBlY2hvICIqKiogVGhlIHRlc3QgcHJvZ3JhbSBjb21waWxlZCwgYnV0IGRpZCBub3QgcnVuLiBUaGlzIHVzdWFsbHkgbWVhbnMiCi0gICAgICAgICAgZWNobyAiKioqIHRoYXQgdGhlIHJ1bi10aW1lIGxpbmtlciBpcyBub3QgZmluZGluZyBsaWJmYW1lIG9yIGZpbmRpbmcgdGhlIHdyb25nIgotICAgICAgICAgIGVjaG8gIioqKiB2ZXJzaW9uIG9mIExJQkZBTUUuIElmIGl0IGlzIG5vdCBmaW5kaW5nIGxpYmZhbWUsIHlvdSdsbCBuZWVkIHRvIHNldCB5b3VyIgotICAgICAgICAgIGVjaG8gIioqKiBMRF9MSUJSQVJZX1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUsIG9yIGVkaXQgL2V0Yy9sZC5zby5jb25mIHRvIHBvaW50IgotICAgICAgICAgIGVjaG8gIioqKiB0byB0aGUgaW5zdGFsbGVkIGxvY2F0aW9uICBBbHNvLCBtYWtlIHN1cmUgeW91IGhhdmUgcnVuIGxkY29uZmlnIGlmIHRoYXQiCi0gICAgICAgICAgZWNobyAiKioqIGlzIHJlcXVpcmVkIG9uIHlvdXIgc3lzdGVtIgotCSAgZWNobyAiKioqIgotICAgICAgICAgIGVjaG8gIioqKiBJZiB5b3UgaGF2ZSBhbiBvbGQgdmVyc2lvbiBpbnN0YWxsZWQsIGl0IGlzIGJlc3QgdG8gcmVtb3ZlIGl0LCBhbHRob3VnaCIKLSAgICAgICAgICBlY2hvICIqKiogeW91IG1heSBhbHNvIGJlIGFibGUgdG8gZ2V0IHRoaW5ncyB0byB3b3JrIGJ5IG1vZGlmeWluZyBMRF9MSUJSQVJZX1BBVEgiCi0gICAgICAgICAgZWNobyAiKioqIiBdLAotICAgICAgICBbIGVjaG8gIioqKiBUaGUgdGVzdCBwcm9ncmFtIGZhaWxlZCB0byBjb21waWxlIG9yIGxpbmsuIFNlZSB0aGUgZmlsZSBjb25maWcubG9nIGZvciB0aGUiCi0gICAgICAgICAgZWNobyAiKioqIGV4YWN0IGVycm9yIHRoYXQgb2NjdXJlZC4gVGhpcyB1c3VhbGx5IG1lYW5zIGxpYmZhbWUgd2FzIGluY29ycmVjdGx5IGluc3RhbGxlZCIKLSAgICAgICAgICBlY2hvICIqKiogb3IgdGhhdCB5b3UgaGF2ZSBtb3ZlZCBsaWJmYW1lIHNpbmNlIGl0IHdhcyBpbnN0YWxsZWQuIEluIHRoZSBsYXR0ZXIgY2FzZSwgeW91IgotICAgICAgICAgIGVjaG8gIioqKiBtYXkgd2FudCB0byBlZGl0IHRoZSBsaWJmYW1lLWNvbmZpZyBzY3JpcHQ6ICRMSUJGQU1FX0NPTkZJRyIgXSkKLSAgICAgICAgICBDRkxBR1M9IiRhY19zYXZlX0NGTEFHUyIKLSAgICAgICAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgotICAgICAgIGZpCi0gICAgIGZpCi0gICAgIExJQkZBTUVfQ0ZMQUdTPSIiCi0gICAgIExJQkZBTUVfTElCUz0iIgotICAgICBpZmVsc2UoWyQzXSwgLCA6LCBbJDNdKQotICBmaQotCi0gIEFDX1NVQlNUKExJQkZBTUVfQ0ZMQUdTKQotICBBQ19TVUJTVChMSUJGQU1FX0xJQlMpCi0gIHJtIC1mIGNvbmYubGliZmFtZXRlc3QKLV0pCmRpZmYgLS1naXQgYS9tNC9saWJ0b29sLm00IGIvbTQvbGlidG9vbC5tNAppbmRleCBkN2MwNDNmLi4xMGFiMjg0IDEwMDY0NAotLS0gYS9tNC9saWJ0b29sLm00CisrKyBiL200L2xpYnRvb2wubTQKQEAgLTEsOCArMSw2IEBACiAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQogIwotIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEgRnJlZSBTb2Z0d2FyZQotIyAgICAgICAgICAgICAgICAgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLCAyMDAzLTIwMTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgogIwogIyBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwpAQCAtMTAsMzYgKzgsMzAgQEAKICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCiAKIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCi0jICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSBGcmVlIFNvZnR3YXJlCi0jICAgICAgICAgICAgICAgICBGb3VuZGF0aW9uLCBJbmMuCi0jICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorIyBDb3B5cmlnaHQgKEMpIDIwMTQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCisjIHdhcnJhbnR5OyBub3QgZXZlbiBmb3IgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLgorCisjIEdOVSBMaWJ0b29sIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKyMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKyMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiBvZiB0aGUgTGljZW5zZSwgb3IKKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KICMKLSMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KKyMgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGlmIHlvdQorIyBkaXN0cmlidXRlIHRoaXMgZmlsZSBhcyBwYXJ0IG9mIGEgcHJvZ3JhbSBvciBsaWJyYXJ5IHRoYXQgaXMgYnVpbHQKKyMgdXNpbmcgR05VIExpYnRvb2wsIHlvdSBtYXkgaW5jbHVkZSB0aGlzIGZpbGUgdW5kZXIgdGhlICBzYW1lCisjIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KICMKLSMgR05VIExpYnRvb2wgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0jIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0jIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0jIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotIwotIyBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwKLSMgaWYgeW91IGRpc3RyaWJ1dGUgdGhpcyBmaWxlIGFzIHBhcnQgb2YgYSBwcm9ncmFtIG9yIGxpYnJhcnkgdGhhdAotIyBpcyBidWlsdCB1c2luZyBHTlUgTGlidG9vbCwgeW91IG1heSBpbmNsdWRlIHRoaXMgZmlsZSB1bmRlciB0aGUKLSMgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgdGhhdCB5b3UgdXNlIGZvciB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0jCi0jIEdOVSBMaWJ0b29sIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIEdOVSBMaWJ0b29sIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsIGJ1dAorIyBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCiAjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKICMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KICMKICMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSMgYWxvbmcgd2l0aCBHTlUgTGlidG9vbDsgc2VlIHRoZSBmaWxlIENPUFlJTkcuICBJZiBub3QsIGEgY29weQotIyBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy9ncGwuaHRtbCwgb3IKLSMgb2J0YWluZWQgYnkgd3JpdGluZyB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCiBdKQogCi0jIHNlcmlhbCA1NyBMVF9JTklUCisjIHNlcmlhbCA1OCBMVF9JTklUCiAKIAogIyBMVF9QUkVSRVEoVkVSU0lPTikKQEAgLTY3LDcgKzU5LDcgQEAKICMgTFRfSU5JVChbT1BUSU9OU10pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLQogQUNfREVGVU4oW0xUX0lOSVRdLAotW0FDX1BSRVJFUShbMi41OF0pZG5sIFdlIHVzZSBBQ19JTkNMVURFU19ERUZBVUxUCitbQUNfUFJFUkVRKFsyLjYyXSlkbmwgV2UgdXNlIEFDX1BBVEhfUFJPR1NfRkVBVFVSRV9DSEVDSwogQUNfUkVRVUlSRShbQUNfQ09ORklHX0FVWF9ESVJfREVGQVVMVF0pZG5sCiBBQ19CRUZPUkUoWyQwXSwgW0xUX0xBTkddKWRubAogQUNfQkVGT1JFKFskMF0sIFtMVF9PVVRQVVRdKWRubApAQCAtOTEsNyArODMsNyBAQAogX0xUX1NFVF9PUFRJT05TKFskMF0sIFskMV0pCiAKICMgVGhpcyBjYW4gYmUgdXNlZCB0byByZWJ1aWxkIGxpYnRvb2wgd2hlbiBuZWVkZWQKLUxJQlRPT0xfREVQUz0iJGx0bWFpbiIKK0xJQlRPT0xfREVQUz0kbHRtYWluCiAKICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCiBMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKQEAgLTExMSwyNiArMTAzLDQzIEBACiBkbmwgQUNfREVGVU4oW0FNX1BST0dfTElCVE9PTF0sIFtdKQogCiAKKyMgX0xUX1BSRVBBUkVfQ0NfQkFTRU5BTUUKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK200X2RlZnVuKFtfTFRfUFJFUEFSRV9DQ19CQVNFTkFNRV0sIFsKKyMgQ2FsY3VsYXRlIGNjX2Jhc2VuYW1lLiAgU2tpcCBrbm93biBjb21waWxlciB3cmFwcGVycyBhbmQgY3Jvc3MtcHJlZml4LgorZnVuY19jY19iYXNlbmFtZSAoKQoreworICAgIGZvciBjY190ZW1wIGluIEBTfEAqIiI7IGRvCisgICAgICBjYXNlICRjY190ZW1wIGluCisgICAgICAgIGNvbXBpbGUgfCAqW1tcXC9dXWNvbXBpbGUgfCBjY2FjaGUgfCAqW1tcXC9dXWNjYWNoZSApIDs7CisgICAgICAgIGRpc3RjYyB8ICpbW1xcL11dZGlzdGNjIHwgcHVyaWZ5IHwgKltbXFwvXV1wdXJpZnkgKSA7OworICAgICAgICBcLSopIDs7CisgICAgICAgICopIGJyZWFrOzsKKyAgICAgIGVzYWMKKyAgICBkb25lCisgICAgZnVuY19jY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkY2NfdGVtcCIgfCAkU0VEICJzJS4qLyUlOyBzJV4kaG9zdF9hbGlhcy0lJSJgCit9CitdKSMgX0xUX1BSRVBBUkVfQ0NfQkFTRU5BTUUKKworCiAjIF9MVF9DQ19CQVNFTkFNRShDQykKICMgLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBDYWxjdWxhdGUgY2NfYmFzZW5hbWUuICBTa2lwIGtub3duIGNvbXBpbGVyIHdyYXBwZXJzIGFuZCBjcm9zcy1wcmVmaXguCisjIEl0IHdvdWxkIGJlIGNsZWFyZXIgdG8gY2FsbCBBQ19SRVFVSVJFcyBmcm9tIF9MVF9QUkVQQVJFX0NDX0JBU0VOQU1FLAorIyBidXQgdGhhdCBtYWNybyBpcyBhbHNvIGV4cGFuZGVkIGludG8gZ2VuZXJhdGVkIGxpYnRvb2wgc2NyaXB0LCB3aGljaAorIyBhcnJhbmdlcyBmb3IgJFNFRCBhbmQgJEVDSE8gdG8gYmUgc2V0IGJ5IGRpZmZlcmVudCBtZWFucy4KIG00X2RlZnVuKFtfTFRfQ0NfQkFTRU5BTUVdLAotW2ZvciBjY190ZW1wIGluICQxIiI7IGRvCi0gIGNhc2UgJGNjX3RlbXAgaW4KLSAgICBjb21waWxlIHwgKltbXFwvXV1jb21waWxlIHwgY2NhY2hlIHwgKltbXFwvXV1jY2FjaGUgKSA7OwotICAgIGRpc3RjYyB8ICpbW1xcL11dZGlzdGNjIHwgcHVyaWZ5IHwgKltbXFwvXV1wdXJpZnkgKSA7OwotICAgIFwtKikgOzsKLSAgICAqKSBicmVhazs7Ci0gIGVzYWMKLWRvbmUKLWNjX2Jhc2VuYW1lPWAkRUNITyAiJGNjX3RlbXAiIHwgJFNFRCAicyUuKi8lJTsgcyVeJGhvc3RfYWxpYXMtJSUiYAorW200X3JlcXVpcmUoW19MVF9QUkVQQVJFX0NDX0JBU0VOQU1FXSlkbmwKK0FDX1JFUVVJUkUoW19MVF9ERUNMX1NFRF0pZG5sCitBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pZG5sCitmdW5jX2NjX2Jhc2VuYW1lICQxCitjY19iYXNlbmFtZT0kZnVuY19jY19iYXNlbmFtZV9yZXN1bHQKIF0pCiAKIAogIyBfTFRfRklMRVVUSUxTX0RFRkFVTFRTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgSXQgaXMgb2theSB0byB1c2UgdGhlc2UgZmlsZSBjb21tYW5kcyBhbmQgYXNzdW1lIHRoZXkgaGF2ZSBiZWVuIHNldAotIyBzZW5zaWJseSBhZnRlciBgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pJy4KKyMgc2Vuc2libHkgYWZ0ZXIgJ200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKScuCiBtNF9kZWZ1bihbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10sCiBbOiAke0NQPSJjcCAtZiJ9CiA6ICR7TVY9Im12IC1mIn0KQEAgLTE3NywxNSArMTg2LDE2IEBACiBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKIG00X3JlcXVpcmUoW19MVF9DTURfR0xPQkFMX1NZTUJPTFNdKWRubAogbTRfcmVxdWlyZShbX0xUX1dJVEhfU1lTUk9PVF0pZG5sCittNF9yZXF1aXJlKFtfTFRfQ01EX1RSVU5DQVRFXSlkbmwKIAogX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoWwotIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHRoYXQgYWxsb3cgb3VyCiAjIGNvbW1hbmRzIHRocm91Z2ggd2l0aG91dCByZW1vdmFsIG9mIFwgZXNjYXBlcyBJTklULgotaWYgdGVzdCAtbiAiXCR7WlNIX1ZFUlNJT04rc2V0fSIgOyB0aGVuCitpZiB0ZXN0IC1uICJcJHtaU0hfVkVSU0lPTitzZXR9IjsgdGhlbgogICAgc2V0b3B0IE5PX0dMT0JfU1VCU1QKIGZpCiBdKQotaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiA7IHRoZW4KK2lmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSI7IHRoZW4KICAgIHNldG9wdCBOT19HTE9CX1NVQlNUCiBmaQogCkBAIC0xOTgsNyArMjA4LDcgQEAKICAgIyBBSVggc29tZXRpbWVzIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBHQ0MgY29sbGVjdDIgcHJvZ3JhbS4gIEZvciBzb21lCiAgICMgcmVhc29uLCBpZiB3ZSBzZXQgdGhlIENPTExFQ1RfTkFNRVMgZW52aXJvbm1lbnQgdmFyaWFibGUsIHRoZSBwcm9ibGVtcwogICAjIHZhbmlzaCBpbiBhIHB1ZmYgb2Ygc21va2UuCi0gIGlmIHRlc3QgIlgke0NPTExFQ1RfTkFNRVMrc2V0fSIgIT0gWHNldDsgdGhlbgorICBpZiB0ZXN0IHNldCAhPSAiJHtDT0xMRUNUX05BTUVTK3NldH0iOyB0aGVuCiAgICAgQ09MTEVDVF9OQU1FUz0KICAgICBleHBvcnQgQ09MTEVDVF9OQU1FUwogICBmaQpAQCAtMjA5LDE0ICsyMTksMTQgQEAKIG9maWxlPWxpYnRvb2wKIGNhbl9idWlsZF9zaGFyZWQ9eWVzCiAKLSMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgJy5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCiAjIHdoaWNoIG5lZWRzICcubGliJykuCiBsaWJleHQ9YQogCi13aXRoX2dudV9sZD0iJGx0X2N2X3Byb2dfZ251X2xkIgord2l0aF9nbnVfbGQ9JGx0X2N2X3Byb2dfZ251X2xkCiAKLW9sZF9DQz0iJENDIgotb2xkX0NGTEFHUz0iJENGTEFHUyIKK29sZF9DQz0kQ0MKK29sZF9DRkxBR1M9JENGTEFHUwogCiAjIFNldCBzYW5lIGRlZmF1bHRzIGZvciB2YXJpb3VzIHZhcmlhYmxlcwogdGVzdCAteiAiJENDIiAmJiBDQz1jYwpAQCAtMjY5LDE0ICsyNzksMTQgQEAKIAogIyBfTFRfUFJPR19MVE1BSU4KICMgLS0tLS0tLS0tLS0tLS0tCi0jIE5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgY2FsbGVkIGJvdGggZnJvbSBgY29uZmlndXJlJywgYW5kIGBjb25maWcuc3RhdHVzJworIyBOb3RlIHRoYXQgdGhpcyBjb2RlIGlzIGNhbGxlZCBib3RoIGZyb20gJ2NvbmZpZ3VyZScsIGFuZCAnY29uZmlnLnN0YXR1cycKICMgbm93IHRoYXQgd2UgdXNlIEFDX0NPTkZJR19DT01NQU5EUyB0byBnZW5lcmF0ZSBsaWJ0b29sLiAgTm90YWJseSwKLSMgYGNvbmZpZy5zdGF0dXMnIGhhcyBubyB2YWx1ZSBmb3IgYWNfYXV4X2RpciB1bmxlc3Mgd2UgYXJlIHVzaW5nIEF1dG9tYWtlLAorIyAnY29uZmlnLnN0YXR1cycgaGFzIG5vIHZhbHVlIGZvciBhY19hdXhfZGlyIHVubGVzcyB3ZSBhcmUgdXNpbmcgQXV0b21ha2UsCiAjIHNvIHdlIHBhc3MgYSBjb3B5IGFsb25nIHRvIG1ha2Ugc3VyZSBpdCBoYXMgYSBzZW5zaWJsZSB2YWx1ZSBhbnl3YXkuCiBtNF9kZWZ1bihbX0xUX1BST0dfTFRNQUlOXSwKIFttNF9pZmRlZihbQUNfUkVRVUlSRV9BVVhfRklMRV0sIFtBQ19SRVFVSVJFX0FVWF9GSUxFKFtsdG1haW4uc2hdKV0pZG5sCiBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbYWNfYXV4X2Rpcj0nJGFjX2F1eF9kaXInXSkKLWx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorbHRtYWluPSRhY19hdXhfZGlyL2x0bWFpbi5zaAogXSkjIF9MVF9QUk9HX0xUTUFJTgogCiAKQEAgLTI4Niw3ICsyOTYsNyBAQAogCiAjIFNvIHRoYXQgd2UgY2FuIHJlY3JlYXRlIGEgZnVsbCBsaWJ0b29sIHNjcmlwdCBpbmNsdWRpbmcgYWRkaXRpb25hbAogIyB0YWdzLCB3ZSBhY2N1bXVsYXRlIHRoZSBjaHVua3Mgb2YgY29kZSB0byBzZW5kIHRvIEFDX0NPTkZJR19DT01NQU5EUwotIyBpbiBtYWNyb3MgYW5kIHRoZW4gbWFrZSBhIHNpbmdsZSBjYWxsIGF0IHRoZSBlbmQgdXNpbmcgdGhlIGBsaWJ0b29sJworIyBpbiBtYWNyb3MgYW5kIHRoZW4gbWFrZSBhIHNpbmdsZSBjYWxsIGF0IHRoZSBlbmQgdXNpbmcgdGhlICdsaWJ0b29sJwogIyBsYWJlbC4KIAogCkBAIC00MjEsOCArNDMxLDggQEAKIAogIyBfTFRfQ09ORklHX1NUQVRVU19ERUNMQVJFKFtWQVJOQU1FXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFF1b3RlIGEgdmFyaWFibGUgdmFsdWUsIGFuZCBmb3J3YXJkIGl0IHRvIGBjb25maWcuc3RhdHVzJyBzbyB0aGF0IGl0cwotIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gYGNvbmZpZ3VyZScuICBWQVJOQU1FCisjIFF1b3RlIGEgdmFyaWFibGUgdmFsdWUsIGFuZCBmb3J3YXJkIGl0IHRvICdjb25maWcuc3RhdHVzJyBzbyB0aGF0IGl0cworIyBkZWNsYXJhdGlvbiB0aGVyZSB3aWxsIGhhdmUgdGhlIHNhbWUgdmFsdWUgYXMgaW4gJ2NvbmZpZ3VyZScuICBWQVJOQU1FCiAjIG11c3QgaGF2ZSBhIHNpbmdsZSBxdW90ZSBkZWxpbWl0ZWQgdmFsdWUgZm9yIHRoaXMgdG8gd29yay4KIG00X2RlZmluZShbX0xUX0NPTkZJR19TVEFUVVNfREVDTEFSRV0sCiBbJDE9J2AkRUNITyAiJF1bJDEiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJ10pCkBAIC00NDYsNyArNDU2LDcgQEAKICMgT3V0cHV0IGNvbW1lbnQgYW5kIGxpc3Qgb2YgdGFncyBzdXBwb3J0ZWQgYnkgdGhlIHNjcmlwdAogbTRfZGVmdW4oW19MVF9MSUJUT09MX1RBR1NdLAogW19MVF9GT1JNQVRfQ09NTUVOVChbVGhlIG5hbWVzIG9mIHRoZSB0YWdnZWQgY29uZmlndXJhdGlvbnMgc3VwcG9ydGVkIGJ5IHRoaXMgc2NyaXB0XSlkbmwKLWF2YWlsYWJsZV90YWdzPSJfTFRfVEFHUyJkbmwKK2F2YWlsYWJsZV90YWdzPSdfTFRfVEFHUydkbmwKIF0pCiAKIApAQCAtNDc0LDcgKzQ4NCw3IEBACiAjIF9MVF9MSUJUT09MX0NPTkZJR19WQVJTCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIFByb2R1Y2UgY29tbWVudGVkIGRlY2xhcmF0aW9ucyBvZiBub24tdGFnZ2VkIGxpYnRvb2wgY29uZmlnIHZhcmlhYmxlcwotIyBzdWl0YWJsZSBmb3IgaW5zZXJ0aW9uIGluIHRoZSBMSUJUT09MIENPTkZJRyBzZWN0aW9uIG9mIHRoZSBgbGlidG9vbCcKKyMgc3VpdGFibGUgZm9yIGluc2VydGlvbiBpbiB0aGUgTElCVE9PTCBDT05GSUcgc2VjdGlvbiBvZiB0aGUgJ2xpYnRvb2wnCiAjIHNjcmlwdC4gIFRhZ2dlZCBsaWJ0b29sIGNvbmZpZyB2YXJpYWJsZXMgKGV2ZW4gZm9yIHRoZSBMSUJUT09MIENPTkZJRwogIyBzZWN0aW9uKSBhcmUgcHJvZHVjZWQgYnkgX0xUX0xJQlRPT0xfVEFHX1ZBUlMuCiBtNF9kZWZ1bihbX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlNdLApAQCAtNTAwLDggKzUxMCw4IEBACiAjIFNlbmQgYWNjdW11bGF0ZWQgb3V0cHV0IHRvICRDT05GSUdfU1RBVFVTLiAgVGhhbmtzIHRvIHRoZSBsaXN0cyBvZgogIyB2YXJpYWJsZXMgZm9yIHNpbmdsZSBhbmQgZG91YmxlIHF1b3RlIGVzY2FwaW5nIHdlIHNhdmVkIGZyb20gY2FsbHMKICMgdG8gX0xUX0RFQ0wsIHdlIGNhbiBwdXQgcXVvdGUgZXNjYXBlZCB2YXJpYWJsZXMgZGVjbGFyYXRpb25zCi0jIGludG8gYGNvbmZpZy5zdGF0dXMnLCBhbmQgdGhlbiB0aGUgc2hlbGwgY29kZSB0byBxdW90ZSBlc2NhcGUgdGhlbSBpbgotIyBmb3IgbG9vcHMgaW4gYGNvbmZpZy5zdGF0dXMnLiAgRmluYWxseSwgYW55IGFkZGl0aW9uYWwgY29kZSBhY2N1bXVsYXRlZAorIyBpbnRvICdjb25maWcuc3RhdHVzJywgYW5kIHRoZW4gdGhlIHNoZWxsIGNvZGUgdG8gcXVvdGUgZXNjYXBlIHRoZW0gaW4KKyMgZm9yIGxvb3BzIGluICdjb25maWcuc3RhdHVzJy4gIEZpbmFsbHksIGFueSBhZGRpdGlvbmFsIGNvZGUgYWNjdW11bGF0ZWQKICMgZnJvbSBjYWxscyB0byBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVCBpcyBleHBhbmRlZC4KIG00X2RlZnVuKFtfTFRfQ09ORklHX0NPTU1BTkRTXSwKIFtBQ19QUk9WSURFX0lGRUxTRShbTFRfT1VUUFVUXSwKQEAgLTU0Nyw3ICs1NTcsNyBAQAogXV0sIGx0X2RlY2xfcXVvdGVfdmFybmFtZXMpOyBkbwogICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgogICAgICpbW1xcXFxcXFxgXFwiXFxcJF1dKikKLSAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCBcXCJcXFwkc2VkX3F1b3RlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCisgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcYFxcXCRFQ0hPIFxcIlxcXCRcJHZhclxcIiB8IFxcXCRTRUQgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIlxcXGBcXFxcXFwiIiAjIyBleGNsdWRlIGZyb20gc2NfcHJvaGliaXRfbmVzdGVkX3F1b3RlcwogICAgICAgOzsKICAgICAqKQogICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXCRcJHZhclxcXFxcXCIiCkBAIC01NjAsNyArNTcwLDcgQEAKIF1dLCBsdF9kZWNsX2RxdW90ZV92YXJuYW1lcyk7IGRvCiAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCiAgICAgKltbXFxcXFxcXGBcXCJcXFwkXV0qKQotICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKKyAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiICMjIGV4Y2x1ZGUgZnJvbSBzY19wcm9oaWJpdF9uZXN0ZWRfcXVvdGVzCiAgICAgICA7OwogICAgICopCiAgICAgICBldmFsICJsdF9cJHZhcj1cXFxcXFwiXFxcJFwkdmFyXFxcXFxcIiIKQEAgLTU3Niw3ICs1ODYsNyBAQAogIyBHZW5lcmF0ZSBhIGNoaWxkIHNjcmlwdCBGSUxFIHdpdGggYWxsIGluaXRpYWxpemF0aW9uIG5lY2Vzc2FyeSB0bwogIyByZXVzZSB0aGUgZW52aXJvbm1lbnQgbGVhcm5lZCBieSB0aGUgcGFyZW50IHNjcmlwdCwgYW5kIG1ha2UgdGhlCiAjIGZpbGUgZXhlY3V0YWJsZS4gIElmIENPTU1FTlQgaXMgc3VwcGxpZWQsIGl0IGlzIGluc2VydGVkIGFmdGVyIHRoZQotIyBgIyEnIHNlcXVlbmNlIGJ1dCBiZWZvcmUgaW5pdGlhbGl6YXRpb24gdGV4dCBiZWdpbnMuICBBZnRlciB0aGlzCisjICcjIScgc2VxdWVuY2UgYnV0IGJlZm9yZSBpbml0aWFsaXphdGlvbiB0ZXh0IGJlZ2lucy4gIEFmdGVyIHRoaXMKICMgbWFjcm8sIGFkZGl0aW9uYWwgdGV4dCBjYW4gYmUgYXBwZW5kZWQgdG8gRklMRSB0byBmb3JtIHRoZSBib2R5IG9mCiAjIHRoZSBjaGlsZCBzY3JpcHQuICBUaGUgbWFjcm8gZW5kcyB3aXRoIG5vbi16ZXJvIHN0YXR1cyBpZiB0aGUKICMgZmlsZSBjb3VsZCBub3QgYmUgZnVsbHkgd3JpdHRlbiAoc3VjaCBhcyBpZiB0aGUgZGlzayBpcyBmdWxsKS4KQEAgLTU5OCw3ICs2MDgsNyBAQAogX0FTX1BSRVBBUkUKIGV4ZWMgQVNfTUVTU0FHRV9GRD4mMQogX0FTRU9GCi10ZXN0ICRsdF93cml0ZV9mYWlsID0gMCAmJiBjaG1vZCAreCAkMVtdZG5sCit0ZXN0IDAgPSAiJGx0X3dyaXRlX2ZhaWwiICYmIGNobW9kICt4ICQxW11kbmwKIG00X3BvcGRlZihbQVNfTUVTU0FHRV9MT0dfRkRdKV0pXSkjIF9MVF9HRU5FUkFURURfRklMRV9JTklUCiAKICMgTFRfT1VUUFVUCkBAIC02MjEsNyArNjMxLDcgQEAKIH0gPiZBU19NRVNTQUdFX0xPR19GRAogCiBsdF9jbF9oZWxwPSJcCi1cYCRhc19tZScgY3JlYXRlcyBhIGxvY2FsIGxpYnRvb2wgc3R1YiBmcm9tIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24sCisnJGFzX21lJyBjcmVhdGVzIGEgbG9jYWwgbGlidG9vbCBzdHViIGZyb20gdGhlIGN1cnJlbnQgY29uZmlndXJhdGlvbiwKIGZvciB1c2UgaW4gZnVydGhlciBjb25maWd1cmUgdGltZSB0ZXN0cyBiZWZvcmUgdGhlIHJlYWwgbGlidG9vbCBpcwogZ2VuZXJhdGVkLgogCkBAIC02NDMsNyArNjUzLDcgQEAKIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCiBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzaW9uIHRvIGNvcHksIGRpc3RyaWJ1dGUgYW5kIG1vZGlmeSBpdC4iCiAKLXdoaWxlIHRlc3QgJFsjXSAhPSAwCit3aGlsZSB0ZXN0IDAgIT0gJFsjXQogZG8KICAgY2FzZSAkWzFdIGluCiAgICAgLS12ZXJzaW9uIHwgLS12KiB8IC1WICkKQEAgLTY1NiwxMCArNjY2LDEwIEBACiAgICAgICBsdF9jbF9zaWxlbnQ9OiA7OwogCiAgICAgLSopIEFDX01TR19FUlJPUihbdW5yZWNvZ25pemVkIG9wdGlvbjogJFsxXQotVHJ5IFxgJFswXSAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLl0pIDs7CitUcnkgJyRbMF0gLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5dKSA7OwogCiAgICAgKikgQUNfTVNHX0VSUk9SKFt1bnJlY29nbml6ZWQgYXJndW1lbnQ6ICRbMV0KLVRyeSBcYCRbMF0gLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5dKSA7OworVHJ5ICckWzBdIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXSkgOzsKICAgZXNhYwogICBzaGlmdAogZG9uZQpAQCAtNjg1LDcgKzY5NSw3IEBACiAjIG9wZW4gYnkgY29uZmlndXJlLiAgSGVyZSB3ZSBleGVjIHRoZSBGRCB0byAvZGV2L251bGwsIGVmZmVjdGl2ZWx5IGNsb3NpbmcKICMgY29uZmlnLmxvZywgc28gaXQgY2FuIGJlIHByb3Blcmx5IChyZSlvcGVuZWQgYW5kIGFwcGVuZGVkIHRvIGJ5IGNvbmZpZy5sdC4KIGx0X2NsX3N1Y2Nlc3M9OgotdGVzdCAiJHNpbGVudCIgPSB5ZXMgJiYKK3Rlc3QgeWVzID0gIiRzaWxlbnQiICYmCiAgIGx0X2NvbmZpZ19sdF9hcmdzPSIkbHRfY29uZmlnX2x0X2FyZ3MgLS1xdWlldCIKIGV4ZWMgQVNfTUVTU0FHRV9MT0dfRkQ+L2Rldi9udWxsCiAkU0hFTEwgIiRDT05GSUdfTFQiICRsdF9jb25maWdfbHRfYXJncyB8fCBsdF9jbF9zdWNjZXNzPWZhbHNlCkBAIC03MDUsMjcgKzcxNSwzMSBAQAogX0xUX0NPTkZJR19TQVZFX0NPTU1BTkRTKFsKICAgbTRfZGVmaW5lKFtfTFRfVEFHXSwgbTRfaWYoWyQxXSwgW10sIFtDXSwgWyQxXSkpZG5sCiAgIG00X2lmKF9MVF9UQUcsIFtDXSwgWwotICAgICMgU2VlIGlmIHdlIGFyZSBydW5uaW5nIG9uIHpzaCwgYW5kIHNldCB0aGUgb3B0aW9ucyB3aGljaCBhbGxvdyBvdXIKKyAgICAjIFNlZSBpZiB3ZSBhcmUgcnVubmluZyBvbiB6c2gsIGFuZCBzZXQgdGhlIG9wdGlvbnMgdGhhdCBhbGxvdyBvdXIKICAgICAjIGNvbW1hbmRzIHRocm91Z2ggd2l0aG91dCByZW1vdmFsIG9mIFwgZXNjYXBlcy4KLSAgICBpZiB0ZXN0IC1uICIke1pTSF9WRVJTSU9OK3NldH0iIDsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSI7IHRoZW4KICAgICAgIHNldG9wdCBOT19HTE9CX1NVQlNUCiAgICAgZmkKIAotICAgIGNmZ2ZpbGU9IiR7b2ZpbGV9VCIKKyAgICBjZmdmaWxlPSR7b2ZpbGV9VAogICAgIHRyYXAgIiRSTSBcIiRjZmdmaWxlXCI7IGV4aXQgMSIgMSAyIDE1CiAgICAgJFJNICIkY2ZnZmlsZSIKIAogICAgIGNhdCA8PF9MVF9FT0YgPj4gIiRjZmdmaWxlIgogIyEgJFNIRUxMCi0KLSMgYCRFQ0hPICIkb2ZpbGUiIHwgc2VkICdzJV4uKi8lJSdgIC0gUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCi0jIEdlbmVyYXRlZCBhdXRvbWF0aWNhbGx5IGJ5ICRhc19tZSAoJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTgorIyBHZW5lcmF0ZWQgYXV0b21hdGljYWxseSBieSAkYXNfbWUgKCRQQUNLQUdFKSAkVkVSU0lPTgogIyBMaWJ0b29sIHdhcyBjb25maWd1cmVkIG9uIGhvc3QgYChob3N0bmFtZSB8fCB1bmFtZSAtbikgMj4vZGV2L251bGwgfCBzZWQgMXFgOgogIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0jCisKKyMgUHJvdmlkZSBnZW5lcmFsaXplZCBsaWJyYXJ5LWJ1aWxkaW5nIHN1cHBvcnQgc2VydmljZXMuCisjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKwogX0xUX0NPUFlJTkcKIF9MVF9MSUJUT09MX1RBR1MKIAorIyBDb25maWd1cmVkIGRlZmF1bHRzIGZvciBzeXNfbGliX2Rsc2VhcmNoX3BhdGggbXVuZ2luZy4KKzogXCR7TFRfU1lTX0xJQlJBUllfUEFUSD0iJGNvbmZpZ3VyZV90aW1lX2x0X3N5c19saWJyYXJ5X3BhdGgifQorCiAjICMjIyBCRUdJTiBMSUJUT09MIENPTkZJRwogX0xUX0xJQlRPT0xfQ09ORklHX1ZBUlMKIF9MVF9MSUJUT09MX1RBR19WQVJTCkBAIC03MzMsMTMgKzc0NywyNCBAQAogCiBfTFRfRU9GCiAKKyAgICBjYXQgPDwnX0xUX0VPRicgPj4gIiRjZmdmaWxlIgorCisjICMjIyBCRUdJTiBGVU5DVElPTlMgU0hBUkVEIFdJVEggQ09ORklHVVJFCisKK19MVF9QUkVQQVJFX01VTkdFX1BBVEhfTElTVAorX0xUX1BSRVBBUkVfQ0NfQkFTRU5BTUUKKworIyAjIyMgRU5EIEZVTkNUSU9OUyBTSEFSRUQgV0lUSCBDT05GSUdVUkUKKworX0xUX0VPRgorCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgYWl4MyopCiAgICAgY2F0IDw8XF9MVF9FT0YgPj4gIiRjZmdmaWxlIgogIyBBSVggc29tZXRpbWVzIGhhcyBwcm9ibGVtcyB3aXRoIHRoZSBHQ0MgY29sbGVjdDIgcHJvZ3JhbS4gIEZvciBzb21lCiAjIHJlYXNvbiwgaWYgd2Ugc2V0IHRoZSBDT0xMRUNUX05BTUVTIGVudmlyb25tZW50IHZhcmlhYmxlLCB0aGUgcHJvYmxlbXMKICMgdmFuaXNoIGluIGEgcHVmZiBvZiBzbW9rZS4KLWlmIHRlc3QgIlgke0NPTExFQ1RfTkFNRVMrc2V0fSIgIT0gWHNldDsgdGhlbgoraWYgdGVzdCBzZXQgIT0gIiR7Q09MTEVDVF9OQU1FUytzZXR9IjsgdGhlbgogICBDT0xMRUNUX05BTUVTPQogICBleHBvcnQgQ09MTEVDVF9OQU1FUwogZmkKQEAgLTc1Niw4ICs3ODEsNiBAQAogICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCiAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCiAKLSAgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwotCiAgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CiAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKICAgY2htb2QgK3ggIiRvZmlsZSIKQEAgLTc3NSw3ICs3OTgsNiBAQAogW200X2lmKFskMV0sIFtdLCBbCiAgICAgUEFDS0FHRT0nJFBBQ0tBR0UnCiAgICAgVkVSU0lPTj0nJFZFUlNJT04nCi0gICAgVElNRVNUQU1QPSckVElNRVNUQU1QJwogICAgIFJNPSckUk0nCiAgICAgb2ZpbGU9JyRvZmlsZSddLCBbXSkKIF0pZG5sIC9fTFRfQ09ORklHX1NBVkVfQ09NTUFORFMKQEAgLTk3NCw3ICs5OTYsNyBAQAogCiAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciAtc2luZ2xlX21vZHVsZSBsaW5rZXIgZmxhZ10sW2x0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2RdLAogICAgICAgW2x0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9bm8KLSAgICAgIGlmIHRlc3QgLXogIiR7TFRfTVVMVElfTU9EVUxFfSI7IHRoZW4KKyAgICAgIGlmIHRlc3QgLXogIiRMVF9NVUxUSV9NT0RVTEUiOyB0aGVuCiAJIyBCeSBkZWZhdWx0IHdlIHdpbGwgYWRkIHRoZSAtc2luZ2xlX21vZHVsZSBmbGFnLiBZb3UgY2FuIG92ZXJyaWRlCiAJIyBieSBlaXRoZXIgc2V0dGluZyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgTFRfTVVMVElfTU9EVUxFCiAJIyBub24tZW1wdHkgYXQgY29uZmlndXJlIHRpbWUsIG9yIGJ5IGFkZGluZyAtbXVsdGlfbW9kdWxlIHRvIHRoZQpAQCAtOTkyLDcgKzEwMTQsNyBAQAogCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECiAJIyBPdGhlcndpc2UsIGlmIHRoZSBvdXRwdXQgd2FzIGNyZWF0ZWQgd2l0aCBhIDAgZXhpdCBjb2RlIGZyb20KIAkjIHRoZSBjb21waWxlciwgaXQgd29ya2VkLgotCWVsaWYgdGVzdCAtZiBsaWJjb25mdGVzdC5keWxpYiAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwOyB0aGVuCisJZWxpZiB0ZXN0IC1mIGxpYmNvbmZ0ZXN0LmR5bGliICYmIHRlc3QgMCA9ICIkX2x0X3Jlc3VsdCI7IHRoZW4KIAkgIGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2Q9eWVzCiAJZWxzZQogCSAgY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECkBAIC0xMDEwLDcgKzEwMzIsNyBAQAogICAgICAgQUNfTElOS19JRkVMU0UoW0FDX0xBTkdfUFJPR1JBTShbXSxbXSldLAogCVtsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3Q9eWVzXSwKIAlbbHRfY3ZfbGRfZXhwb3J0ZWRfc3ltYm9sc19saXN0PW5vXSkKLQlMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorCUxERkxBR1M9JHNhdmVfTERGTEFHUwogICAgIF0pCiAKICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIC1mb3JjZV9sb2FkIGxpbmtlciBmbGFnXSxbbHRfY3ZfbGRfZm9yY2VfbG9hZF0sCkBAIC0xMDMyLDcgKzEwNTQsNyBAQAogICAgICAgX2x0X3Jlc3VsdD0kPwogICAgICAgaWYgdGVzdCAtcyBjb25mdGVzdC5lcnIgJiYgJEdSRVAgZm9yY2VfbG9hZCBjb25mdGVzdC5lcnI7IHRoZW4KIAljYXQgY29uZnRlc3QuZXJyID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0ICRfbHRfcmVzdWx0IC1lcSAwICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMSA7IHRoZW4KKyAgICAgIGVsaWYgdGVzdCAtZiBjb25mdGVzdCAmJiB0ZXN0IDAgPSAiJF9sdF9yZXN1bHQiICYmICRHUkVQIGZvcmNlZF9sb2FkIGNvbmZ0ZXN0ID4vZGV2L251bGwgMj4mMTsgdGhlbgogCWx0X2N2X2xkX2ZvcmNlX2xvYWQ9eWVzCiAgICAgICBlbHNlCiAJY2F0IGNvbmZ0ZXN0LmVyciA+JkFTX01FU1NBR0VfTE9HX0ZECkBAIC0xMDQyLDMyICsxMDY0LDMyIEBACiAgICAgXSkKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgcmhhcHNvZHkqIHwgZGFyd2luMS5bWzAxMl1dKQotICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR7d2x9LXVuZGVmaW5lZCAke3dsfXN1cHByZXNzJyA7OworICAgICAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR3bC11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKICAgICBkYXJ3aW4xLiopCi0gICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisgICAgICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLWZsYXRfbmFtZXNwYWNlICR3bC11bmRlZmluZWQgJHt3bH1zdXBwcmVzcycgOzsKICAgICBkYXJ3aW4qKSAjIGRhcndpbiA1Lnggb24KICAgICAgICMgaWYgcnVubmluZyBvbiAxMC41IG9yIGxhdGVyLCB0aGUgZGVwbG95bWVudCB0YXJnZXQgZGVmYXVsdHMKICAgICAgICMgdG8gdGhlIE9TIHZlcnNpb24sIGlmIG9uIHg4NiwgYW5kIDEwLjQsIHRoZSBkZXBsb3ltZW50CiAgICAgICAjIHRhcmdldCBkZWZhdWx0cyB0byAxMC40LiBEb24ndCB5b3UgbG92ZSBpdD8KICAgICAgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0sJGhvc3QgaW4KIAkxMC4wLCo4NiotZGFyd2luOCp8MTAuMCwqLWRhcndpbltbOTFdXSopCi0JICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7Ci0JMTAuW1swMTJdXSopCi0JICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHt3bH0tZmxhdF9uYW1lc3BhY2UgJHt3bH0tdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CisJICBfbHRfZGFyX2FsbG93X3VuZGVmaW5lZD0nJHdsLXVuZGVmaW5lZCAke3dsfWR5bmFtaWNfbG9va3VwJyA7OworCTEwLltbMDEyXV1bWywuXV0qKQorCSAgX2x0X2Rhcl9hbGxvd191bmRlZmluZWQ9JyR3bC1mbGF0X25hbWVzcGFjZSAkd2wtdW5kZWZpbmVkICR7d2x9c3VwcHJlc3MnIDs7CiAJMTAuKikKLQkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPScke3dsfS11bmRlZmluZWQgJHt3bH1keW5hbWljX2xvb2t1cCcgOzsKKwkgIF9sdF9kYXJfYWxsb3dfdW5kZWZpbmVkPSckd2wtdW5kZWZpbmVkICR7d2x9ZHluYW1pY19sb29rdXAnIDs7CiAgICAgICBlc2FjCiAgICAgOzsKICAgZXNhYwotICAgIGlmIHRlc3QgIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIiA9ICJ5ZXMiOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QiOyB0aGVuCiAgICAgICBfbHRfZGFyX3NpbmdsZV9tb2Q9JyRzaW5nbGVfbW9kdWxlJwogICAgIGZpCi0gICAgaWYgdGVzdCAiJGx0X2N2X2xkX2V4cG9ydGVkX3N5bWJvbHNfbGlzdCIgPSAieWVzIjsgdGhlbgotICAgICAgX2x0X2Rhcl9leHBvcnRfc3ltcz0nICR7d2x9LWV4cG9ydGVkX3N5bWJvbHNfbGlzdCwkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltJworICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9sZF9leHBvcnRlZF9zeW1ib2xzX2xpc3QiOyB0aGVuCisgICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPScgJHdsLWV4cG9ydGVkX3N5bWJvbHNfbGlzdCwkb3V0cHV0X29iamRpci8kbGlibmFtZS1zeW1ib2xzLmV4cHN5bScKICAgICBlbHNlCi0gICAgICBfbHRfZGFyX2V4cG9ydF9zeW1zPSd+JE5NRURJVCAtcyAkb3V0cHV0X29iamRpci8ke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltICR7bGlifScKKyAgICAgIF9sdF9kYXJfZXhwb3J0X3N5bXM9J34kTk1FRElUIC1zICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLXN5bWJvbHMuZXhwc3ltICRsaWInCiAgICAgZmkKLSAgICBpZiB0ZXN0ICIkRFNZTVVUSUwiICE9ICI6IiAmJiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAibm8iOyB0aGVuCisgICAgaWYgdGVzdCA6ICE9ICIkRFNZTVVUSUwiICYmIHRlc3Qgbm8gPSAiJGx0X2N2X2xkX2ZvcmNlX2xvYWQiOyB0aGVuCiAgICAgICBfbHRfZHN5bXV0aWw9J34kRFNZTVVUSUwgJGxpYiB8fCA6JwogICAgIGVsc2UKICAgICAgIF9sdF9kc3ltdXRpbD0KQEAgLTEwODcsMjkgKzExMDksMjkgQEAKICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX2F1dG9tYXRpYywgJDEpPXllcwogICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT11bnN1cHBvcnRlZAotICBpZiB0ZXN0ICIkbHRfY3ZfbGRfZm9yY2VfbG9hZCIgPSAieWVzIjsgdGhlbgotICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR7d2x9LWZvcmNlX2xvYWQsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAnCisgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9sZF9mb3JjZV9sb2FkIjsgdGhlbgorICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nYGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgIC1uIFwiJGNvbnZcIiAmJiBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlICR3bC1mb3JjZV9sb2FkLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgJwogICAgIG00X2Nhc2UoWyQxXSwgW0Y3N10sIFtfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllc10sCiAgICAgICAgICAgICAgICAgICBbRkNdLCAgW19MVF9UQUdWQVIoY29tcGlsZXJfbmVlZHNfb2JqZWN0LCAkMSk9eWVzXSkKICAgZWxzZQogICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJwogICBmaQogICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPSIkX2x0X2Rhcl9hbGxvd191bmRlZmluZWQiCisgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0kX2x0X2Rhcl9hbGxvd191bmRlZmluZWQKICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgaWZvcnQqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9eWVzIDs7CisgICAgIGlmb3J0KnxuYWdmb3IqKSBfbHRfZGFyX2Nhbl9zaGFyZWQ9eWVzIDs7CiAgICAgICopIF9sdF9kYXJfY2FuX3NoYXJlZD0kR0NDIDs7CiAgIGVzYWMKLSAgaWYgdGVzdCAiJF9sdF9kYXJfY2FuX3NoYXJlZCIgPSAieWVzIjsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkX2x0X2Rhcl9jYW5fc2hhcmVkIjsgdGhlbgogICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPWZ1bmNfZWNob19hbGwKLSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyAkX2x0X2Rhcl9zaW5nbGVfbW9kJHtfbHRfZHN5bXV0aWx9IgotICAgIF9MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJHtfbHRfZHN5bXV0aWx9IgotICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJzZWQgJ3MsXixfLCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wke2xpYm5hbWV9LXN5bWJvbHMuZXhwc3ltflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICR7X2x0X2Rhcl9zaW5nbGVfbW9kfSR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCi0gICAgX0xUX1RBR1ZBUihtb2R1bGVfZXhwc3ltX2NtZHMsICQxKT0ic2VkIC1lICdzLF4sXywnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJHtsaWJuYW1lfS1zeW1ib2xzLmV4cHN5bX5cJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3Mke19sdF9kYXJfZXhwb3J0X3N5bXN9JHtfbHRfZHN5bXV0aWx9IgorICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9IlwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nICRfbHRfZGFyX3NpbmdsZV9tb2QkX2x0X2RzeW11dGlsIgorICAgIF9MVF9UQUdWQVIobW9kdWxlX2NtZHMsICQxKT0iXCRDQyBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIC1idW5kbGUgXCRsaWJvYmpzIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzJF9sdF9kc3ltdXRpbCIKKyAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ic2VkICdzfF58X3wnIDwgXCRleHBvcnRfc3ltYm9scyA+IFwkb3V0cHV0X29iamRpci9cJGxpYm5hbWUtc3ltYm9scy5leHBzeW1+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwkbGlib2JqcyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmcgJF9sdF9kYXJfc2luZ2xlX21vZCRfbHRfZGFyX2V4cG9ydF9zeW1zJF9sdF9kc3ltdXRpbCIKKyAgICBfTFRfVEFHVkFSKG1vZHVsZV9leHBzeW1fY21kcywgJDEpPSJzZWQgLWUgJ3N8XnxffCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wkbGlibmFtZS1zeW1ib2xzLmV4cHN5bX5cJENDIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgLWJ1bmRsZSBcJGxpYm9ianMgXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MkX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCiAgICAgbTRfaWYoWyQxXSwgW0NYWF0sCi1bICAgaWYgdGVzdCAiJGx0X2N2X2FwcGxlX2NjX3NpbmdsZV9tb2QiICE9ICJ5ZXMiOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSJcJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCR7bGlifS1tYXN0ZXIubyBcJGxpYm9ianN+XCRDQyAtZHluYW1pY2xpYiBcJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1vIFwkbGliIFwke2xpYn0tbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJHtfbHRfZHN5bXV0aWx9IgotICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9InNlZCAncyxeLF8sJyA8IFwkZXhwb3J0X3N5bWJvbHMgPiBcJG91dHB1dF9vYmpkaXIvXCR7bGlibmFtZX0tc3ltYm9scy5leHBzeW1+XCRDQyAtciAta2VlcF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vIFwke2xpYn0tbWFzdGVyLm8gXCRsaWJvYmpzflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJHtsaWJ9LW1hc3Rlci5vIFwkZGVwbGlicyBcJGNvbXBpbGVyX2ZsYWdzIC1pbnN0YWxsX25hbWUgXCRycGF0aC9cJHNvbmFtZSBcJHZlcnN0cmluZyR7X2x0X2Rhcl9leHBvcnRfc3ltc30ke19sdF9kc3ltdXRpbH0iCitbICAgaWYgdGVzdCB5ZXMgIT0gIiRsdF9jdl9hcHBsZV9jY19zaW5nbGVfbW9kIjsgdGhlbgorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0iXCRDQyAtciAta2VlcF9wcml2YXRlX2V4dGVybnMgLW5vc3RkbGliIC1vIFwkbGliLW1hc3Rlci5vIFwkbGlib2Jqc35cJENDIC1keW5hbWljbGliIFwkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLW8gXCRsaWIgXCRsaWItbWFzdGVyLm8gXCRkZXBsaWJzIFwkY29tcGlsZXJfZmxhZ3MgLWluc3RhbGxfbmFtZSBcJHJwYXRoL1wkc29uYW1lIFwkdmVyc3RyaW5nJF9sdF9kc3ltdXRpbCIKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSJzZWQgJ3N8XnxffCcgPCBcJGV4cG9ydF9zeW1ib2xzID4gXCRvdXRwdXRfb2JqZGlyL1wkbGlibmFtZS1zeW1ib2xzLmV4cHN5bX5cJENDIC1yIC1rZWVwX3ByaXZhdGVfZXh0ZXJucyAtbm9zdGRsaWIgLW8gXCRsaWItbWFzdGVyLm8gXCRsaWJvYmpzflwkQ0MgLWR5bmFtaWNsaWIgXCRhbGxvd191bmRlZmluZWRfZmxhZyAtbyBcJGxpYiBcJGxpYi1tYXN0ZXIubyBcJGRlcGxpYnMgXCRjb21waWxlcl9mbGFncyAtaW5zdGFsbF9uYW1lIFwkcnBhdGgvXCRzb25hbWUgXCR2ZXJzdHJpbmckX2x0X2Rhcl9leHBvcnRfc3ltcyRfbHRfZHN5bXV0aWwiCiAgICAgZmkKIF0sW10pCiAgIGVsc2UKQEAgLTExMjksNyArMTE1MSw3IEBACiAjIEFsbG93IHRvIG92ZXJyaWRlIHRoZW0gZm9yIGFsbCB0YWdzIHRocm91Z2ggbHRfY3ZfYWl4X2xpYnBhdGguCiBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAogW200X3JlcXVpcmUoW19MVF9ERUNMX1NFRF0pZG5sCi1pZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCitpZiB0ZXN0IHNldCA9ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iOyB0aGVuCiAgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAogZWxzZQogICBBQ19DQUNIRV9WQUwoW19MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pXSwKQEAgLTExNDcsNyArMTE2OSw3IEBACiAgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCiAgIGZpXSxbXSkKICAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgotICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPSIvdXNyL2xpYjovbGliIgorICAgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPS91c3IvbGliOi9saWIKICAgZmkKICAgXSkKICAgYWl4X2xpYnBhdGg9JF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pCkBAIC0xMTY3LDggKzExODksOCBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBGaW5kIGhvdyB3ZSBjYW4gZmFrZSBhbiBlY2hvIGNvbW1hbmQgdGhhdCBkb2VzIG5vdCBpbnRlcnByZXQgYmFja3NsYXNoLgogIyBJbiBwYXJ0aWN1bGFyLCB3aXRoIEF1dG9jb25mIDIuNjAgb3IgbGF0ZXIgd2UgYWRkIHNvbWUgY29kZSB0byB0aGUgc3RhcnQKLSMgb2YgdGhlIGdlbmVyYXRlZCBjb25maWd1cmUgc2NyaXB0IHdoaWNoIHdpbGwgZmluZCBhIHNoZWxsIHdpdGggYSBidWlsdGluCi0jIHByaW50ZiAod2hpY2ggd2UgY2FuIHVzZSBhcyBhbiBlY2hvIGNvbW1hbmQpLgorIyBvZiB0aGUgZ2VuZXJhdGVkIGNvbmZpZ3VyZSBzY3JpcHQgdGhhdCB3aWxsIGZpbmQgYSBzaGVsbCB3aXRoIGEgYnVpbHRpbgorIyBwcmludGYgKHRoYXQgd2UgY2FuIHVzZSBhcyBhbiBlY2hvIGNvbW1hbmQpLgogbTRfZGVmdW4oW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSwKIFtFQ0hPPSdcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcXFxcJwogRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCkBAIC0xMTk2LDEwICsxMjE4LDEwIEBACiAjIEludm9rZSAkRUNITyB3aXRoIGFsbCBhcmdzLCBzcGFjZS1zZXBhcmF0ZWQuCiBmdW5jX2VjaG9fYWxsICgpCiB7Ci0gICAgJEVDSE8gIiQqIiAKKyAgICAkRUNITyAiJCoiCiB9CiAKLWNhc2UgIiRFQ0hPIiBpbgorY2FzZSAkRUNITyBpbgogICBwcmludGYqKSBBQ19NU0dfUkVTVUxUKFtwcmludGZdKSA7OwogICBwcmludCopIEFDX01TR19SRVNVTFQoW3ByaW50IC1yXSkgOzsKICAgKikgQUNfTVNHX1JFU1VMVChbY2F0XSkgOzsKQEAgLTEyMjUsMTYgKzEyNDcsMTcgQEAKIEFDX0RFRlVOKFtfTFRfV0lUSF9TWVNST09UXSwKIFtBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXNyb290XSkKIEFDX0FSR19XSVRIKFtzeXNyb290XSwKLVsgIC0td2l0aC1zeXNyb290Wz1ESVJdIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0gICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS5dLAorW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzcm9vdEA8OkA9RElSQDo+QF0sCisgIFtTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUiAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdAorICAgaWYgbm90IHNwZWNpZmllZCkuXSldLAogW10sIFt3aXRoX3N5c3Jvb3Q9bm9dKQogCiBkbmwgbHRfc3lzcm9vdCB3aWxsIGFsd2F5cyBiZSBwYXNzZWQgdW5xdW90ZWQuICBXZSBxdW90ZSBpdCBoZXJlCiBkbmwgaW4gY2FzZSB0aGUgdXNlciBwYXNzZWQgYSBkaXJlY3RvcnkgbmFtZS4KIGx0X3N5c3Jvb3Q9Ci1jYXNlICR7d2l0aF9zeXNyb290fSBpbiAjKAorY2FzZSAkd2l0aF9zeXNyb290IGluICMoCiAgeWVzKQotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCiAgICBmaQogICAgOzsgIygKQEAgLTEyNDQsMTQgKzEyNjcsMTQgQEAKICBub3wnJykKICAgIDs7ICMoCiAgKikKLSAgIEFDX01TR19SRVNVTFQoWyR7d2l0aF9zeXNyb290fV0pCisgICBBQ19NU0dfUkVTVUxUKFskd2l0aF9zeXNyb290XSkKICAgIEFDX01TR19FUlJPUihbVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLl0pCiAgICA7OwogZXNhYwogCiAgQUNfTVNHX1JFU1VMVChbJHtsdF9zeXNyb290Oi1ub31dKQogX0xUX0RFQ0woW10sIFtsdF9zeXNyb290XSwgWzBdLCBbVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBdZG5sCi1bZGVwZW5kZW50IGxpYnJhcmllcywgYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC5dKV0pCitbZGVwZW5kZW50IGxpYnJhcmllcywgYW5kIHdoZXJlIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC5dKV0pCiAKICMgX0xUX0VOQUJMRV9MT0NLCiAjIC0tLS0tLS0tLS0tLS0tLQpAQCAtMTI1OSwzMSArMTI4MiwzMyBAQAogW0FDX0FSR19FTkFCTEUoW2xpYnRvb2wtbG9ja10sCiAgIFtBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLWxpYnRvb2wtbG9ja10sCiAgICAgW2F2b2lkIGxvY2tpbmcgKG1pZ2h0IGJyZWFrIHBhcmFsbGVsIGJ1aWxkcyldKV0pCi10ZXN0ICJ4JGVuYWJsZV9saWJ0b29sX2xvY2siICE9IHhubyAmJiBlbmFibGVfbGlidG9vbF9sb2NrPXllcwordGVzdCBubyA9ICIkZW5hYmxlX2xpYnRvb2xfbG9jayIgfHwgZW5hYmxlX2xpYnRvb2xfbG9jaz15ZXMKIAogIyBTb21lIGZsYWdzIG5lZWQgdG8gYmUgcHJvcGFnYXRlZCB0byB0aGUgY29tcGlsZXIgb3IgbGlua2VyIGZvciBnb29kCiAjIGxpYnRvb2wgc3VwcG9ydC4KIGNhc2UgJGhvc3QgaW4KIGlhNjQtKi1ocHV4KikKLSAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICAjIEZpbmQgb3V0IHdoYXQgQUJJIGlzIGJlaW5nIHByb2R1Y2VkIGJ5IGFjX2NvbXBpbGUsIGFuZCBzZXQgbW9kZQorICAjIG9wdGlvbnMgYWNjb3JkaW5nbHkuCiAgIGVjaG8gJ2ludCBpOycgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCiAgICAgY2FzZSBgL3Vzci9iaW4vZmlsZSBjb25mdGVzdC4kYWNfb2JqZXh0YCBpbgogICAgICAgKkVMRi0zMiopCi0JSFBVWF9JQTY0X01PREU9IjMyIgorCUhQVVhfSUE2NF9NT0RFPTMyCiAJOzsKICAgICAgICpFTEYtNjQqKQotCUhQVVhfSUE2NF9NT0RFPSI2NCIKKwlIUFVYX0lBNjRfTU9ERT02NAogCTs7CiAgICAgZXNhYwogICBmaQogICBybSAtcmYgY29uZnRlc3QqCiAgIDs7CiAqLSotaXJpeDYqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgogICBlY2hvICdbI11saW5lICckTElORU5PJyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CiAgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gICAgaWYgdGVzdCAiJGx0X2N2X3Byb2dfZ251X2xkIiA9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzID0gIiRsdF9jdl9wcm9nX2dudV9sZCI7IHRoZW4KICAgICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KIAkqMzItYml0KikKIAkgIExEPSIke0xELWxkfSAtbWVsZjMyYnNtaXAiCkBAIC0xMzEyLDkgKzEzMzcsNDYgQEAKICAgcm0gLXJmIGNvbmZ0ZXN0KgogICA7OwogCittaXBzNjQqLSpsaW51eCopCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LgorICBlY2hvICdbI11saW5lICckTElORU5PJyAiY29uZmlndXJlIicgPiBjb25mdGVzdC4kYWNfZXh0CisgIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgZW11bD1lbGYKKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqMzItYml0KikKKwllbXVsPSIke2VtdWx9MzIiCisJOzsKKyAgICAgICo2NC1iaXQqKQorCWVtdWw9IiR7ZW11bH02NCIKKwk7OworICAgIGVzYWMKKyAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0LiRhY19vYmpleHRgIGluCisgICAgICAqTVNCKikKKwllbXVsPSIke2VtdWx9YnRzbWlwIgorCTs7CisgICAgICAqTFNCKikKKwllbXVsPSIke2VtdWx9bHRzbWlwIgorCTs7CisgICAgZXNhYworICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3QuJGFjX29iamV4dGAgaW4KKyAgICAgICpOMzIqKQorCWVtdWw9IiR7ZW11bH1uMzIiCisJOzsKKyAgICBlc2FjCisgICAgTEQ9IiR7TEQtbGR9IC1tICRlbXVsIgorICBmaQorICBybSAtcmYgY29uZnRlc3QqCisgIDs7CisKIHg4Nl82NC0qa2ZyZWVic2QqLWdudXx4ODZfNjQtKmxpbnV4Knxwb3dlcnBjKi0qbGludXgqfCBcCiBzMzkwKi0qbGludXgqfHMzOTAqLSp0cGYqfHNwYXJjKi0qbGludXgqKQotICAjIEZpbmQgb3V0IHdoaWNoIEFCSSB3ZSBhcmUgdXNpbmcuCisgICMgRmluZCBvdXQgd2hhdCBBQkkgaXMgYmVpbmcgcHJvZHVjZWQgYnkgYWNfY29tcGlsZSwgYW5kIHNldCBsaW5rZXIKKyAgIyBvcHRpb25zIGFjY29yZGluZ2x5LiAgTm90ZSB0aGF0IHRoZSBsaXN0ZWQgY2FzZXMgb25seSBjb3ZlciB0aGUKKyAgIyBzaXR1YXRpb25zIHdoZXJlIGFkZGl0aW9uYWwgbGlua2VyIG9wdGlvbnMgYXJlIG5lZWRlZCAoc3VjaCBhcyB3aGVuCisgICMgZG9pbmcgMzItYml0IGNvbXBpbGF0aW9uIGZvciBhIGhvc3Qgd2hlcmUgbGQgZGVmYXVsdHMgdG8gNjQtYml0LCBvcgorICAjIHZpY2UgdmVyc2EpOyB0aGUgY29tbW9uIGNhc2VzIHdoZXJlIG5vIGxpbmtlciBvcHRpb25zIGFyZSBuZWVkZWQgZG8KKyAgIyBub3QgYXBwZWFyIGluIHRoZSBsaXN0LgogICBlY2hvICdpbnQgaTsnID4gY29uZnRlc3QuJGFjX2V4dAogICBpZiBBQ19UUllfRVZBTChhY19jb21waWxlKTsgdGhlbgogICAgIGNhc2UgYC91c3IvYmluL2ZpbGUgY29uZnRlc3Qub2AgaW4KQEAgLTEzMzMsMTAgKzEzOTUsMTAgQEAKIAkJOzsKIAkgICAgZXNhYwogCSAgICA7OwotCSAgcG93ZXJwYzY0bGUtKikKKwkgIHBvd2VycGM2NGxlLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMmxwcGNsaW51eCIKIAkgICAgOzsKLQkgIHBvd2VycGM2NC0qKQorCSAgcG93ZXJwYzY0LSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGYzMnBwY2xpbnV4IgogCSAgICA7OwogCSAgczM5MHgtKmxpbnV4KikKQEAgLTEzNTUsMTAgKzE0MTcsMTAgQEAKIAkgIHg4Nl82NC0qbGludXgqKQogCSAgICBMRD0iJHtMRC1sZH0gLW0gZWxmX3g4Nl82NCIKIAkgICAgOzsKLQkgIHBvd2VycGNsZS0qKQorCSAgcG93ZXJwY2xlLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NGxwcGMiCiAJICAgIDs7Ci0JICBwb3dlcnBjLSopCisJICBwb3dlcnBjLSpsaW51eCopCiAJICAgIExEPSIke0xELWxkfSAtbSBlbGY2NHBwYyIKIAkgICAgOzsKIAkgIHMzOTAqLSpsaW51eCp8czM5MCotKnRwZiopCkBAIC0xMzc2LDE5ICsxNDM4LDIwIEBACiAKICotKi1zY28zLjJ2NSopCiAgICMgT24gU0NPIE9wZW5TZXJ2ZXIgNSwgd2UgbmVlZCAtYmVsZiB0byBnZXQgZnVsbC1mZWF0dXJlZCBiaW5hcmllcy4KLSAgU0FWRV9DRkxBR1M9IiRDRkxBR1MiCisgIFNBVkVfQ0ZMQUdTPSRDRkxBR1MKICAgQ0ZMQUdTPSIkQ0ZMQUdTIC1iZWxmIgogICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgQyBjb21waWxlciBuZWVkcyAtYmVsZl0sIGx0X2N2X2NjX25lZWRzX2JlbGYsCiAgICAgW0FDX0xBTkdfUFVTSChDKQogICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNKFtbXV0sW1tdXSldLFtsdF9jdl9jY19uZWVkc19iZWxmPXllc10sW2x0X2N2X2NjX25lZWRzX2JlbGY9bm9dKQogICAgICBBQ19MQU5HX1BPUF0pCi0gIGlmIHRlc3QgeCIkbHRfY3ZfY2NfbmVlZHNfYmVsZiIgIT0geCJ5ZXMiOyB0aGVuCisgIGlmIHRlc3QgeWVzICE9ICIkbHRfY3ZfY2NfbmVlZHNfYmVsZiI7IHRoZW4KICAgICAjIHRoaXMgaXMgcHJvYmFibHkgZ2NjIDIuOC4wLCBlZ2NzIDEuMCBvciBuZXdlcjsgbm8gbmVlZCBmb3IgLWJlbGYKLSAgICBDRkxBR1M9IiRTQVZFX0NGTEFHUyIKKyAgICBDRkxBR1M9JFNBVkVfQ0ZMQUdTCiAgIGZpCiAgIDs7CiAqLSpzb2xhcmlzKikKLSAgIyBGaW5kIG91dCB3aGljaCBBQkkgd2UgYXJlIHVzaW5nLgorICAjIEZpbmQgb3V0IHdoYXQgQUJJIGlzIGJlaW5nIHByb2R1Y2VkIGJ5IGFjX2NvbXBpbGUsIGFuZCBzZXQgbGlua2VyCisgICMgb3B0aW9ucyBhY2NvcmRpbmdseS4KICAgZWNobyAnaW50IGk7JyA+IGNvbmZ0ZXN0LiRhY19leHQKICAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KICAgICBjYXNlIGAvdXNyL2Jpbi9maWxlIGNvbmZ0ZXN0Lm9gIGluCkBAIC0xMzk2LDcgKzE0NTksNyBAQAogICAgICAgY2FzZSAkbHRfY3ZfcHJvZ19nbnVfbGQgaW4KICAgICAgIHllcyopCiAgICAgICAgIGNhc2UgJGhvc3QgaW4KLSAgICAgICAgaT84Ni0qLXNvbGFyaXMqKQorICAgICAgICBpPzg2LSotc29sYXJpcyp8eDg2XzY0LSotc29sYXJpcyopCiAgICAgICAgICAgTEQ9IiR7TEQtbGR9IC1tIGVsZl94ODZfNjQiCiAgICAgICAgICAgOzsKICAgICAgICAgc3BhcmMqLSotc29sYXJpcyopCkBAIC0xNDA1LDcgKzE0NjgsNyBAQAogICAgICAgICBlc2FjCiAgICAgICAgICMgR05VIGxkIDIuMjEgaW50cm9kdWNlZCBfc29sMiBlbXVsYXRpb25zLiAgVXNlIHRoZW0gaWYgYXZhaWxhYmxlLgogICAgICAgICBpZiAke0xELWxkfSAtViB8IGdyZXAgX3NvbDIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0gICAgICAgICAgTEQ9IiR7TEQtbGR9X3NvbDIiCisgICAgICAgICAgTEQ9JHtMRC1sZH1fc29sMgogICAgICAgICBmaQogICAgICAgICA7OwogICAgICAgKikKQEAgLTE0MjEsNyArMTQ4NCw3IEBACiAgIDs7CiBlc2FjCiAKLW5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorbmVlZF9sb2Nrcz0kZW5hYmxlX2xpYnRvb2xfbG9jawogXSkjIF9MVF9FTkFCTEVfTE9DSwogCiAKQEAgLTE0NDAsMTEgKzE1MDMsMTEgQEAKICAgICAgW2VjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAogICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JkFTX01FU1NBR0VfTE9HX0ZEJwogICAgICAgQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCi0gICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorICAgICAgaWYgdGVzdCAwIC1lcSAiJGFjX3N0YXR1cyI7IHRoZW4KIAkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgogCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQogCUFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQotCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisJaWYgdGVzdCAwIC1uZSAiJGFjX3N0YXR1cyI7IHRoZW4KICAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKICAgICAgICAgZmkKICAgICAgIGZpCkBAIC0xNDUyLDcgKzE1MTUsNyBAQAogICAgICBdKQogICBdKQogCi1pZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCitpZiB0ZXN0IG5vID0gIiRsdF9jdl9hcl9hdF9maWxlIjsgdGhlbgogICBhcmNoaXZlcl9saXN0X3NwZWM9CiBlbHNlCiAgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQpAQCAtMTQ4Myw3ICsxNTQ2LDcgQEAKIAogaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgY2FzZSAkaG9zdF9vcyBpbgotICBvcGVuYnNkKikKKyAgYml0cmlnKiB8IG9wZW5ic2QqKQogICAgIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSIkb2xkX3Bvc3RpbnN0YWxsX2NtZHN+XCRSQU5MSUIgLXQgXCR0b29sX29sZGxpYiIKICAgICA7OwogICAqKQpAQCAtMTUxOSw3ICsxNTgyLDcgQEAKICAgWyQyPW5vCiAgICBtNF9pZihbJDRdLCAsIFthY19vdXRmaWxlPWNvbmZ0ZXN0LiRhY19vYmpleHRdLCBbYWNfb3V0ZmlsZT0kNF0pCiAgICBlY2hvICIkbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKLSAgIGx0X2NvbXBpbGVyX2ZsYWc9IiQzIgorICAgbHRfY29tcGlsZXJfZmxhZz0iJDMiICAjIyBleGNsdWRlIGZyb20gc2NfdXNlbGVzc19xdW90ZXNfaW5fYXNzaWdubWVudAogICAgIyBJbnNlcnQgdGhlIG9wdGlvbiBlaXRoZXIgKDEpIGFmdGVyIHRoZSBsYXN0ICpGTEFHUyB2YXJpYWJsZSwgb3IKICAgICMgKDIpIGJlZm9yZSBhIHdvcmQgY29udGFpbmluZyAiY29uZnRlc3QuIiwgb3IgKDMpIGF0IHRoZSBlbmQuCiAgICAjIE5vdGUgdGhhdCAkYWNfY29tcGlsZSBpdHNlbGYgZG9lcyBub3QgY29udGFpbiBiYWNrc2xhc2hlcyBhbmQgYmVnaW5zCkBAIC0xNTQ2LDcgKzE2MDksNyBAQAogICAgJFJNIGNvbmZ0ZXN0KgogXSkKIAotaWYgdGVzdCB4IlskXSQyIiA9IHh5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIlskXSQyIjsgdGhlbgogICAgIG00X2lmKFskNV0sICwgOiwgWyQ1XSkKIGVsc2UKICAgICBtNF9pZihbJDZdLCAsIDosIFskNl0pCkBAIC0xNTY4LDcgKzE2MzEsNyBAQAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfU0VEXSlkbmwKIEFDX0NBQ0hFX0NIRUNLKFskMV0sIFskMl0sCiAgIFskMj1ubwotICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKyAgIHNhdmVfTERGTEFHUz0kTERGTEFHUwogICAgTERGTEFHUz0iJExERkxBR1MgJDMiCiAgICBlY2hvICIkbHRfc2ltcGxlX2xpbmtfdGVzdF9jb2RlIiA+IGNvbmZ0ZXN0LiRhY19leHQKICAgIGlmIChldmFsICRhY19saW5rIDI+Y29uZnRlc3QuZXJyKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JGFjX2V4ZWV4dDsgdGhlbgpAQCAtMTU4NywxMCArMTY1MCwxMCBAQAogICAgICBmaQogICAgZmkKICAgICRSTSAtciBjb25mdGVzdCoKLSAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisgICBMREZMQUdTPSRzYXZlX0xERkxBR1MKIF0pCiAKLWlmIHRlc3QgeCJbJF0kMiIgPSB4eWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICJbJF0kMiI7IHRoZW4KICAgICBtNF9pZihbJDRdLCAsIDosIFskNF0pCiBlbHNlCiAgICAgbTRfaWYoWyQ1XSwgLCA6LCBbJDVdKQpAQCAtMTYxMSw3ICsxNjc0LDcgQEAKIEFDX01TR19DSEVDS0lORyhbdGhlIG1heGltdW0gbGVuZ3RoIG9mIGNvbW1hbmQgbGluZSBhcmd1bWVudHNdKQogQUNfQ0FDSEVfVkFMKFtsdF9jdl9zeXNfbWF4X2NtZF9sZW5dLCBbZG5sCiAgIGk9MAotICB0ZXN0c3RyaW5nPSJBQkNEIgorICB0ZXN0c3RyaW5nPUFCQ0QKIAogICBjYXNlICRidWlsZF9vcyBpbgogICBtc2Rvc2RqZ3BwKikKQEAgLTE2NTEsNyArMTcxNCw3IEBACiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPTgxOTI7CiAgICAgOzsKIAotICBuZXRic2QqIHwgZnJlZWJzZCogfCBvcGVuYnNkKiB8IGRhcndpbiogfCBkcmFnb25mbHkqKQorICBiaXRyaWcqIHwgZGFyd2luKiB8IGRyYWdvbmZseSogfCBmcmVlYnNkKiB8IG5ldGJzZCogfCBvcGVuYnNkKikKICAgICAjIFRoaXMgaGFzIGJlZW4gYXJvdW5kIHNpbmNlIDM4NkJTRCwgYXQgbGVhc3QuICBMaWtlbHkgZnVydGhlci4KICAgICBpZiB0ZXN0IC14IC9zYmluL3N5c2N0bDsgdGhlbgogICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAvc2Jpbi9zeXNjdGwgLW4ga2Vybi5hcmdtYXhgCkBAIC0xNzAyLDIyICsxNzY1LDIyIEBACiAgICopCiAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWAoZ2V0Y29uZiBBUkdfTUFYKSAyPiAvZGV2L251bGxgCiAgICAgaWYgdGVzdCAtbiAiJGx0X2N2X3N5c19tYXhfY21kX2xlbiIgJiYgXAotCXRlc3QgdW5kZWZpbmVkICE9ICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgorICAgICAgIHRlc3QgdW5kZWZpbmVkICE9ICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgogICAgICAgbHRfY3Zfc3lzX21heF9jbWRfbGVuPWBleHByICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gXC8gNGAKICAgICAgIGx0X2N2X3N5c19tYXhfY21kX2xlbj1gZXhwciAkbHRfY3Zfc3lzX21heF9jbWRfbGVuIFwqIDNgCiAgICAgZWxzZQogICAgICAgIyBNYWtlIHRlc3RzdHJpbmcgYSBsaXR0bGUgYmlnZ2VyIGJlZm9yZSB3ZSBkbyBhbnl0aGluZyB3aXRoIGl0LgogICAgICAgIyBhIDFLIHN0cmluZyBzaG91bGQgYmUgYSByZWFzb25hYmxlIHN0YXJ0LgotICAgICAgZm9yIGkgaW4gMSAyIDMgNCA1IDYgNyA4IDsgZG8KKyAgICAgIGZvciBpIGluIDEgMiAzIDQgNSA2IDcgODsgZG8KICAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCiAgICAgICBkb25lCiAgICAgICBTSEVMTD0ke1NIRUxMLSR7Q09ORklHX1NIRUxMLS9iaW4vc2h9fQogICAgICAgIyBJZiB0ZXN0IGlzIG5vdCBhIHNoZWxsIGJ1aWx0LWluLCB3ZSdsbCBwcm9iYWJseSBlbmQgdXAgY29tcHV0aW5nIGEKICAgICAgICMgbWF4aW11bSBsZW5ndGggdGhhdCBpcyBvbmx5IGhhbGYgb2YgdGhlIGFjdHVhbCBtYXhpbXVtIGxlbmd0aCwgYnV0CiAgICAgICAjIHdlIGNhbid0IHRlbGwuCi0gICAgICB3aGlsZSB7IHRlc3QgIlgiYGVudiBlY2hvICIkdGVzdHN0cmluZyR0ZXN0c3RyaW5nIiAyPi9kZXYvbnVsbGAgXAorICAgICAgd2hpbGUgeyB0ZXN0IFhgZW52IGVjaG8gIiR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciIDI+L2Rldi9udWxsYCBcCiAJICAgICAgICAgPSAiWCR0ZXN0c3RyaW5nJHRlc3RzdHJpbmciOyB9ID4vZGV2L251bGwgMj4mMSAmJgotCSAgICAgIHRlc3QgJGkgIT0gMTcgIyAxLzIgTUIgc2hvdWxkIGJlIGVub3VnaAorCSAgICAgIHRlc3QgMTcgIT0gIiRpIiAjIDEvMiBNQiBzaG91bGQgYmUgZW5vdWdoCiAgICAgICBkbwogICAgICAgICBpPWBleHByICRpICsgMWAKICAgICAgICAgdGVzdHN0cmluZz0kdGVzdHN0cmluZyR0ZXN0c3RyaW5nCkBAIC0xNzMzLDcgKzE3OTYsNyBAQAogICAgIDs7CiAgIGVzYWMKIF0pCi1pZiB0ZXN0IC1uICRsdF9jdl9zeXNfbWF4X2NtZF9sZW4gOyB0aGVuCitpZiB0ZXN0IC1uICIkbHRfY3Zfc3lzX21heF9jbWRfbGVuIjsgdGhlbgogICBBQ19NU0dfUkVTVUxUKCRsdF9jdl9zeXNfbWF4X2NtZF9sZW4pCiBlbHNlCiAgIEFDX01TR19SRVNVTFQobm9uZSkKQEAgLTE3NjEsNyArMTgyNCw3IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIG00X2RlZnVuKFtfTFRfVFJZX0RMT1BFTl9TRUxGXSwKIFttNF9yZXF1aXJlKFtfTFRfSEVBREVSX0RMRkNOXSlkbmwKLWlmIHRlc3QgIiRjcm9zc19jb21waWxpbmciID0geWVzOyB0aGVuIDoKK2lmIHRlc3QgeWVzID0gIiRjcm9zc19jb21waWxpbmciOyB0aGVuIDoKICAgWyQ0XQogZWxzZQogICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCkBAIC0xODA4LDkgKzE4NzEsOSBAQAogIyAgZW5kaWYKICNlbmRpZgogCi0vKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisvKiBXaGVuIC1mdmlzaWJpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAogICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCisjaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQogaW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwogI2VuZGlmCiAKQEAgLTE4MzYsNyArMTg5OSw3IEBACiAgIHJldHVybiBzdGF0dXM7CiB9XQogX0xUX0VPRgotICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9IDI+L2Rldi9udWxsOyB0aGVuCisgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgImNvbmZ0ZXN0JGFjX2V4ZWV4dCIgMj4vZGV2L251bGw7IHRoZW4KICAgICAoLi9jb25mdGVzdDsgZXhpdDsgKSA+JkFTX01FU1NBR0VfTE9HX0ZEIDI+L2Rldi9udWxsCiAgICAgbHRfc3RhdHVzPSQ/CiAgICAgY2FzZSB4JGx0X3N0YXR1cyBpbgpAQCAtMTg1Nyw3ICsxOTIwLDcgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tCiBBQ19ERUZVTihbTFRfU1lTX0RMT1BFTl9TRUxGXSwKIFttNF9yZXF1aXJlKFtfTFRfSEVBREVSX0RMRkNOXSlkbmwKLWlmIHRlc3QgIngkZW5hYmxlX2Rsb3BlbiIgIT0geHllczsgdGhlbgoraWYgdGVzdCB5ZXMgIT0gIiRlbmFibGVfZGxvcGVuIjsgdGhlbgogICBlbmFibGVfZGxvcGVuPXVua25vd24KICAgZW5hYmxlX2Rsb3Blbl9zZWxmPXVua25vd24KICAgZW5hYmxlX2Rsb3Blbl9zZWxmX3N0YXRpYz11bmtub3duCkBAIC0xODY3LDQ0ICsxOTMwLDUyIEBACiAKICAgY2FzZSAkaG9zdF9vcyBpbgogICBiZW9zKikKLSAgICBsdF9jdl9kbG9wZW49ImxvYWRfYWRkX29uIgorICAgIGx0X2N2X2Rsb3Blbj1sb2FkX2FkZF9vbgogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIGx0X2N2X2Rsb3Blbl9zZWxmPXllcwogICAgIDs7CiAKICAgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgbHRfY3ZfZGxvcGVuPSJMb2FkTGlicmFyeSIKKyAgICBsdF9jdl9kbG9wZW49TG9hZExpYnJhcnkKICAgICBsdF9jdl9kbG9wZW5fbGlicz0KICAgICA7OwogCiAgIGN5Z3dpbiopCi0gICAgbHRfY3ZfZGxvcGVuPSJkbG9wZW4iCisgICAgbHRfY3ZfZGxvcGVuPWRsb3BlbgogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIDs7CiAKICAgZGFyd2luKikKLSAgIyBpZiBsaWJkbCBpcyBpbnN0YWxsZWQgd2UgbmVlZCB0byBsaW5rIGFnYWluc3QgaXQKKyAgICAjIGlmIGxpYmRsIGlzIGluc3RhbGxlZCB3ZSBuZWVkIHRvIGxpbmsgYWdhaW5zdCBpdAogICAgIEFDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKLQkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLFsKLSAgICBsdF9jdl9kbG9wZW49ImR5bGQiCisJCVtsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sZGxdLFsKKyAgICBsdF9jdl9kbG9wZW49ZHlsZAogICAgIGx0X2N2X2Rsb3Blbl9saWJzPQogICAgIGx0X2N2X2Rsb3Blbl9zZWxmPXllcwogICAgIF0pCiAgICAgOzsKIAorICB0cGYqKQorICAgICMgRG9uJ3QgdHJ5IHRvIHJ1biBhbnkgbGluayB0ZXN0cyBmb3IgVFBGLiAgV2Uga25vdyBpdCdzIGltcG9zc2libGUKKyAgICAjIGJlY2F1c2UgVFBGIGlzIGEgY3Jvc3MtY29tcGlsZXIsIGFuZCB3ZSBrbm93IGhvdyB3ZSBvcGVuIERTT3MuCisgICAgbHRfY3ZfZGxvcGVuPWRsb3BlbgorICAgIGx0X2N2X2Rsb3Blbl9saWJzPQorICAgIGx0X2N2X2Rsb3Blbl9zZWxmPW5vCisgICAgOzsKKwogICAqKQogICAgIEFDX0NIRUNLX0ZVTkMoW3NobF9sb2FkXSwKLQkgIFtsdF9jdl9kbG9wZW49InNobF9sb2FkIl0sCisJICBbbHRfY3ZfZGxvcGVuPXNobF9sb2FkXSwKICAgICAgIFtBQ19DSEVDS19MSUIoW2RsZF0sIFtzaGxfbG9hZF0sCi0JICAgIFtsdF9jdl9kbG9wZW49InNobF9sb2FkIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiXSwKKwkgICAgW2x0X2N2X2Rsb3Blbj1zaGxfbG9hZCBsdF9jdl9kbG9wZW5fbGlicz0tbGRsZF0sCiAJW0FDX0NIRUNLX0ZVTkMoW2Rsb3Blbl0sCi0JICAgICAgW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIl0sCisJICAgICAgW2x0X2N2X2Rsb3Blbj1kbG9wZW5dLAogCSAgW0FDX0NIRUNLX0xJQihbZGxdLCBbZGxvcGVuXSwKLQkJW2x0X2N2X2Rsb3Blbj0iZGxvcGVuIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbCJdLAorCQlbbHRfY3ZfZGxvcGVuPWRsb3BlbiBsdF9jdl9kbG9wZW5fbGlicz0tbGRsXSwKIAkgICAgW0FDX0NIRUNLX0xJQihbc3ZsZF0sIFtkbG9wZW5dLAotCQkgIFtsdF9jdl9kbG9wZW49ImRsb3BlbiIgbHRfY3ZfZGxvcGVuX2xpYnM9Ii1sc3ZsZCJdLAorCQkgIFtsdF9jdl9kbG9wZW49ZGxvcGVuIGx0X2N2X2Rsb3Blbl9saWJzPS1sc3ZsZF0sCiAJICAgICAgW0FDX0NIRUNLX0xJQihbZGxkXSwgW2RsZF9saW5rXSwKLQkJICAgIFtsdF9jdl9kbG9wZW49ImRsZF9saW5rIiBsdF9jdl9kbG9wZW5fbGlicz0iLWxkbGQiXSkKKwkJICAgIFtsdF9jdl9kbG9wZW49ZGxkX2xpbmsgbHRfY3ZfZGxvcGVuX2xpYnM9LWxkbGRdKQogCSAgICAgIF0pCiAJICAgIF0pCiAJICBdKQpAQCAtMTkxMywyMSArMTk4NCwyMSBAQAogICAgIDs7CiAgIGVzYWMKIAotICBpZiB0ZXN0ICJ4JGx0X2N2X2Rsb3BlbiIgIT0geG5vOyB0aGVuCi0gICAgZW5hYmxlX2Rsb3Blbj15ZXMKLSAgZWxzZQorICBpZiB0ZXN0IG5vID0gIiRsdF9jdl9kbG9wZW4iOyB0aGVuCiAgICAgZW5hYmxlX2Rsb3Blbj1ubworICBlbHNlCisgICAgZW5hYmxlX2Rsb3Blbj15ZXMKICAgZmkKIAogICBjYXNlICRsdF9jdl9kbG9wZW4gaW4KICAgZGxvcGVuKQotICAgIHNhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSAgICB0ZXN0ICJ4JGFjX2N2X2hlYWRlcl9kbGZjbl9oIiA9IHh5ZXMgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtREhBVkVfRExGQ05fSCIKKyAgICBzYXZlX0NQUEZMQUdTPSRDUFBGTEFHUworICAgIHRlc3QgeWVzID0gIiRhY19jdl9oZWFkZXJfZGxmY25faCIgJiYgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtREhBVkVfRExGQ05fSCIKIAotICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisgICAgc2F2ZV9MREZMQUdTPSRMREZMQUdTCiAgICAgd2w9JGx0X3Byb2dfY29tcGlsZXJfd2wgZXZhbCBMREZMQUdTPVwiXCRMREZMQUdTICRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgogCi0gICAgc2F2ZV9MSUJTPSIkTElCUyIKKyAgICBzYXZlX0xJQlM9JExJQlMKICAgICBMSUJTPSIkbHRfY3ZfZGxvcGVuX2xpYnMgJExJQlMiCiAKICAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBhIHByb2dyYW0gY2FuIGRsb3BlbiBpdHNlbGZdLApAQCAtMTkzNyw3ICsyMDA4LDcgQEAKIAkgICAgbHRfY3ZfZGxvcGVuX3NlbGY9bm8sIGx0X2N2X2Rsb3Blbl9zZWxmPWNyb3NzKQogICAgIF0pCiAKLSAgICBpZiB0ZXN0ICJ4JGx0X2N2X2Rsb3Blbl9zZWxmIiA9IHh5ZXM7IHRoZW4KKyAgICBpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfZGxvcGVuX3NlbGYiOyB0aGVuCiAgICAgICB3bD0kbHRfcHJvZ19jb21waWxlcl93bCBldmFsIExERkxBR1M9XCJcJExERkxBR1MgJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljXCIKICAgICAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGEgc3RhdGljYWxseSBsaW5rZWQgcHJvZ3JhbSBjYW4gZGxvcGVuIGl0c2VsZl0sCiAJICBsdF9jdl9kbG9wZW5fc2VsZl9zdGF0aWMsIFtkbmwKQEAgLTE5NDcsOSArMjAxOCw5IEBACiAgICAgICBdKQogICAgIGZpCiAKLSAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0gICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSAgICBMSUJTPSIkc2F2ZV9MSUJTIgorICAgIENQUEZMQUdTPSRzYXZlX0NQUEZMQUdTCisgICAgTERGTEFHUz0kc2F2ZV9MREZMQUdTCisgICAgTElCUz0kc2F2ZV9MSUJTCiAgICAgOzsKICAgZXNhYwogCkBAIC0yMDQxLDggKzIxMTIsOCBAQAogbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBfTFRfQ09NUElMRVJfQ19PKFskMV0pCiAKLWhhcmRfbGlua3M9Im5vdHRlc3RlZCIKLWlmIHRlc3QgIiRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfY19vLCAkMSkiID0gbm8gJiYgdGVzdCAiJG5lZWRfbG9ja3MiICE9IG5vOyB0aGVuCitoYXJkX2xpbmtzPW5vdHRlc3RlZAoraWYgdGVzdCBubyA9ICIkX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbywgJDEpIiAmJiB0ZXN0IG5vICE9ICIkbmVlZF9sb2NrcyI7IHRoZW4KICAgIyBkbyBub3Qgb3ZlcndyaXRlIHRoZSB2YWx1ZSBvZiBuZWVkX2xvY2tzIHByb3ZpZGVkIGJ5IHRoZSB1c2VyCiAgIEFDX01TR19DSEVDS0lORyhbaWYgd2UgY2FuIGxvY2sgd2l0aCBoYXJkIGxpbmtzXSkKICAgaGFyZF9saW5rcz15ZXMKQEAgLTIwNTIsOCArMjEyMyw4IEBACiAgIGxuIGNvbmZ0ZXN0LmEgY29uZnRlc3QuYiAyPiY1IHx8IGhhcmRfbGlua3M9bm8KICAgbG4gY29uZnRlc3QuYSBjb25mdGVzdC5iIDI+L2Rldi9udWxsICYmIGhhcmRfbGlua3M9bm8KICAgQUNfTVNHX1JFU1VMVChbJGhhcmRfbGlua3NdKQotICBpZiB0ZXN0ICIkaGFyZF9saW5rcyIgPSBubzsgdGhlbgotICAgIEFDX01TR19XQVJOKFtgJENDJyBkb2VzIG5vdCBzdXBwb3J0IGAtYyAtbycsIHNvIGBtYWtlIC1qJyBtYXkgYmUgdW5zYWZlXSkKKyAgaWYgdGVzdCBubyA9ICIkaGFyZF9saW5rcyI7IHRoZW4KKyAgICBBQ19NU0dfV0FSTihbJyRDQycgZG9lcyBub3Qgc3VwcG9ydCAnLWMgLW8nLCBzbyAnbWFrZSAtaicgbWF5IGJlIHVuc2FmZV0pCiAgICAgbmVlZF9sb2Nrcz13YXJuCiAgIGZpCiBlbHNlCkBAIC0yMDgwLDggKzIxNTEsOCBAQAogX0xUX0RFQ0woW10sIFtvYmpkaXJdLCBbMF0sCiAgICAgICAgICBbVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzXSlkbmwKIG00X3BhdHRlcm5fYWxsb3coW0xUX09CSkRJUl0pZG5sCi1BQ19ERUZJTkVfVU5RVU9URUQoTFRfT0JKRElSLCAiJGx0X2N2X29iamRpci8iLAotICBbRGVmaW5lIHRvIHRoZSBzdWItZGlyZWN0b3J5IGluIHdoaWNoIGxpYnRvb2wgc3RvcmVzIHVuaW5zdGFsbGVkIGxpYnJhcmllcy5dKQorQUNfREVGSU5FX1VOUVVPVEVEKFtMVF9PQkpESVJdLCAiJGx0X2N2X29iamRpci8iLAorICBbRGVmaW5lIHRvIHRoZSBzdWItZGlyZWN0b3J5IHdoZXJlIGxpYnRvb2wgc3RvcmVzIHVuaW5zdGFsbGVkIGxpYnJhcmllcy5dKQogXSkjIF9MVF9DSEVDS19PQkpESVIKIAogCkBAIC0yMDkzLDE1ICsyMTY0LDE1IEBACiBfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpPQogaWYgdGVzdCAtbiAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIiB8fAogICAgdGVzdCAtbiAiJF9MVF9UQUdWQVIocnVucGF0aF92YXIsICQxKSIgfHwKLSAgIHRlc3QgIlgkX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKSIgPSAiWHllcyIgOyB0aGVuCisgICB0ZXN0IHllcyA9ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9hdXRvbWF0aWMsICQxKSI7IHRoZW4KIAogICAjIFdlIGNhbiBoYXJkY29kZSBub24tZXhpc3RlbnQgZGlyZWN0b3JpZXMuCi0gIGlmIHRlc3QgIiRfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpIiAhPSBubyAmJgorICBpZiB0ZXN0IG5vICE9ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKSIgJiYKICAgICAgIyBJZiB0aGUgb25seSBtZWNoYW5pc20gdG8gYXZvaWQgaGFyZGNvZGluZyBpcyBzaGxpYnBhdGhfdmFyLCB3ZQogICAgICAjIGhhdmUgdG8gcmVsaW5rLCBvdGhlcndpc2Ugd2UgbWlnaHQgbGluayB3aXRoIGFuIGluc3RhbGxlZCBsaWJyYXJ5CiAgICAgICMgd2hlbiB3ZSBzaG91bGQgYmUgbGlua2luZyB3aXRoIGEgeWV0LXRvLWJlLWluc3RhbGxlZCBvbmUKLSAgICAgIyMgdGVzdCAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpIiAhPSBubyAmJgotICAgICB0ZXN0ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSkiICE9IG5vOyB0aGVuCisgICAgICMjIHRlc3Qgbm8gIT0gIiRfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKSIgJiYKKyAgICAgdGVzdCBubyAhPSAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpIjsgdGhlbgogICAgICMgTGlua2luZyBhbHdheXMgaGFyZGNvZGVzIHRoZSB0ZW1wb3JhcnkgbGlicmFyeSBkaXJlY3RvcnkuCiAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKT1yZWxpbmsKICAgZWxzZQpAQCAtMjExNSwxMiArMjE4NiwxMiBAQAogZmkKIEFDX01TR19SRVNVTFQoWyRfTFRfVEFHVkFSKGhhcmRjb2RlX2FjdGlvbiwgJDEpXSkKIAotaWYgdGVzdCAiJF9MVF9UQUdWQVIoaGFyZGNvZGVfYWN0aW9uLCAkMSkiID0gcmVsaW5rIHx8Ci0gICB0ZXN0ICIkX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSkiID0geWVzOyB0aGVuCitpZiB0ZXN0IHJlbGluayA9ICIkX0xUX1RBR1ZBUihoYXJkY29kZV9hY3Rpb24sICQxKSIgfHwKKyAgIHRlc3QgeWVzID0gIiRfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKSI7IHRoZW4KICAgIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3Qgc3VwcG9ydGVkCiAgIGVuYWJsZV9mYXN0X2luc3RhbGw9bm8KLWVsaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgfHwKLSAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0gbm87IHRoZW4KK2VsaWYgdGVzdCB5ZXMgPSAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgfHwKKyAgICAgdGVzdCBubyA9ICIkZW5hYmxlX3NoYXJlZCI7IHRoZW4KICAgIyBGYXN0IGluc3RhbGxhdGlvbiBpcyBub3QgbmVjZXNzYXJ5CiAgIGVuYWJsZV9mYXN0X2luc3RhbGw9bmVlZGxlc3MKIGZpCkBAIC0yMTQ0LDcgKzIyMTUsNyBAQAogIyBGSVhNRSAtIGluc2VydCBzb21lIHJlYWwgdGVzdHMsIGhvc3Rfb3MgaXNuJ3QgcmVhbGx5IGdvb2QgZW5vdWdoCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgZGFyd2luKikKLSAgICBpZiB0ZXN0IC1uICIkU1RSSVAiIDsgdGhlbgorICAgIGlmIHRlc3QgLW4gIiRTVFJJUCI7IHRoZW4KICAgICAgIHN0cmlwbGliPSIkU1RSSVAgLXgiCiAgICAgICBvbGRfc3RyaXBsaWI9IiRTVFJJUCAtUyIKICAgICAgIEFDX01TR19SRVNVTFQoW3llc10pCkBAIC0yMTYyLDYgKzIyMzMsNDcgQEAKIF0pIyBfTFRfQ01EX1NUUklQTElCCiAKIAorIyBfTFRfUFJFUEFSRV9NVU5HRV9QQVRIX0xJU1QKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIE1ha2Ugc3VyZSBmdW5jX211bmdlX3BhdGhfbGlzdCgpIGlzIGRlZmluZWQgY29ycmVjdGx5LgorbTRfZGVmdW4oW19MVF9QUkVQQVJFX01VTkdFX1BBVEhfTElTVF0sCitbWyMgZnVuY19tdW5nZV9wYXRoX2xpc3QgVkFSSUFCTEUgUEFUSAorIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBWQVJJQUJMRSBpcyBuYW1lIG9mIHZhcmlhYmxlIGNvbnRhaW5pbmcgX3NwYWNlXyBzZXBhcmF0ZWQgbGlzdCBvZgorIyBkaXJlY3RvcmllcyB0byBiZSBtdW5nZWQgYnkgdGhlIGNvbnRlbnRzIG9mIFBBVEgsIHdoaWNoIGlzIHN0cmluZworIyBoYXZpbmcgYSBmb3JtYXQ6CisjICJESVJbOkRJUl06IgorIyAgICAgICBzdHJpbmcgIkRJUlsgRElSXSIgd2lsbCBiZSBwcmVwZW5kZWQgdG8gVkFSSUFCTEUKKyMgIjpESVJbOkRJUl0iCisjICAgICAgIHN0cmluZyAiRElSWyBESVJdIiB3aWxsIGJlIGFwcGVuZGVkIHRvIFZBUklBQkxFCisjICJESVJQWzpESVJQXTo6W0RJUkE6XURJUkEiCisjICAgICAgIHN0cmluZyAiRElSUFsgRElSUF0iIHdpbGwgYmUgcHJlcGVuZGVkIHRvIFZBUklBQkxFIGFuZCBzdHJpbmcKKyMgICAgICAgIkRJUkFbIERJUkFdIiB3aWxsIGJlIGFwcGVuZGVkIHRvIFZBUklBQkxFCisjICJESVJbOkRJUl0iCisjICAgICAgIFZBUklBQkxFIHdpbGwgYmUgcmVwbGFjZWQgYnkgIkRJUlsgRElSXSIKK2Z1bmNfbXVuZ2VfcGF0aF9saXN0ICgpCit7CisgICAgY2FzZSB4QFN8QDIgaW4KKyAgICB4KQorICAgICAgICA7OworICAgICo6KQorICAgICAgICBldmFsIEBTfEAxPVwiYCRFQ0hPIEBTfEAyIHwgJFNFRCAncy86LyAvZydgIFxAU3xAQFN8QDFcIgorICAgICAgICA7OworICAgIHg6KikKKyAgICAgICAgZXZhbCBAU3xAMT1cIlxAU3xAQFN8QDEgYCRFQ0hPIEBTfEAyIHwgJFNFRCAncy86LyAvZydgXCIKKyAgICAgICAgOzsKKyAgICAqOjoqKQorICAgICAgICBldmFsIEBTfEAxPVwiXEBTfEBAU3xAMVwgYCRFQ0hPIEBTfEAyIHwgJFNFRCAtZSAncy8uKjo6Ly8nIC1lICdzLzovIC9nJ2BcIgorICAgICAgICBldmFsIEBTfEAxPVwiYCRFQ0hPIEBTfEAyIHwgJFNFRCAtZSAncy86Oi4qLy8nIC1lICdzLzovIC9nJ2BcIFxAU3xAQFN8QDFcIgorICAgICAgICA7OworICAgICopCisgICAgICAgIGV2YWwgQFN8QDE9XCJgJEVDSE8gQFN8QDIgfCAkU0VEICdzLzovIC9nJ2BcIgorICAgICAgICA7OworICAgIGVzYWMKK30KK11dKSMgX0xUX1BSRVBBUkVfUEFUSF9MSVNUCisKKwogIyBfTFRfU1lTX0RZTkFNSUNfTElOS0VSKFtUQUddKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBQT1JUTUUgRmlsbCBpbiB5b3VyIGxkLnNvIGNoYXJhY3RlcmlzdGljcwpAQCAtMjE3MiwxNyArMjI4NCwxOCBAQAogbTRfcmVxdWlyZShbX0xUX0RFQ0xfT0JKRFVNUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAogbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKK200X3JlcXVpcmUoW19MVF9QUkVQQVJFX01VTkdFX1BBVEhfTElTVF0pZG5sCiBBQ19NU0dfQ0hFQ0tJTkcoW2R5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljc10pCiBtNF9pZihbJDFdLAogCVtdLCBbCi1pZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgoraWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KICAgY2FzZSAkaG9zdF9vcyBpbgotICAgIGRhcndpbiopIGx0X2F3a19hcmc9Ii9ebGlicmFyaWVzOi8sL0xSLyIgOzsKLSAgICAqKSBsdF9hd2tfYXJnPSIvXmxpYnJhcmllczovIiA7OworICAgIGRhcndpbiopIGx0X2F3a19hcmc9Jy9ebGlicmFyaWVzOi8sL0xSLycgOzsKKyAgICAqKSBsdF9hd2tfYXJnPScvXmxpYnJhcmllczovJyA7OwogICBlc2FjCiAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0icyw9XChbW0EtWmEtel1dOlwpLFwxLGciIDs7Ci0gICAgKikgbHRfc2VkX3N0cmlwX2VxPSJzLD0vLC8sZyIgOzsKKyAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlZF9zdHJpcF9lcT0nc3w9XChbW0EtWmEtel1dOlwpfFwxfGcnIDs7CisgICAgKikgbHRfc2VkX3N0cmlwX2VxPSdzfD0vfC98ZycgOzsKICAgZXNhYwogICBsdF9zZWFyY2hfcGF0aF9zcGVjPWAkQ0MgLXByaW50LXNlYXJjaC1kaXJzIHwgYXdrICRsdF9hd2tfYXJnIHwgJFNFRCAtZSAicy9ebGlicmFyaWVzOi8vIiAtZSAkbHRfc2VkX3N0cmlwX2VxYAogICBjYXNlICRsdF9zZWFyY2hfcGF0aF9zcGVjIGluCkBAIC0yMTk4LDI4ICsyMzExLDM1IEBACiAgICAgOzsKICAgZXNhYwogICAjIE9rLCBub3cgd2UgaGF2ZSB0aGUgcGF0aCwgc2VwYXJhdGVkIGJ5IHNwYWNlcywgd2UgY2FuIHN0ZXAgdGhyb3VnaCBpdAotICAjIGFuZCBhZGQgbXVsdGlsaWIgZGlyIGlmIG5lY2Vzc2FyeS4KKyAgIyBhbmQgYWRkIG11bHRpbGliIGRpciBpZiBuZWNlc3NhcnkuLi4KICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9Ci0gIGx0X211bHRpX29zX2Rpcj1gJENDICRDUFBGTEFHUyAkQ0ZMQUdTICRMREZMQUdTIC1wcmludC1tdWx0aS1vcy1kaXJlY3RvcnkgMj4vZGV2L251bGxgCisgIGx0X211bHRpX29zX2Rpcj0vYCRDQyAkQ1BQRkxBR1MgJENGTEFHUyAkTERGTEFHUyAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5IDI+L2Rldi9udWxsYAorICAjIC4uLmJ1dCBpZiBzb21lIHBhdGggY29tcG9uZW50IGFscmVhZHkgZW5kcyB3aXRoIHRoZSBtdWx0aWxpYiBkaXIgd2UgYXNzdW1lCisgICMgdGhhdCBhbGwgaXMgZmluZSBhbmQgdHJ1c3QgLXByaW50LXNlYXJjaC1kaXJzIGFzIGlzIChHQ0MgNC4yPyBvciBuZXdlcikuCisgIGNhc2UgIiRsdF9tdWx0aV9vc19kaXI7ICRsdF9zZWFyY2hfcGF0aF9zcGVjICIgaW4KKyAgIi87ICIqIHwgIi8uOyAiKiB8ICIvLi87ICIqIHwgKiIkbHRfbXVsdGlfb3NfZGlyICIqIHwgKiIkbHRfbXVsdGlfb3NfZGlyLyAiKikKKyAgICBsdF9tdWx0aV9vc19kaXI9CisgICAgOzsKKyAgZXNhYwogICBmb3IgbHRfc3lzX3BhdGggaW4gJGx0X3NlYXJjaF9wYXRoX3NwZWM7IGRvCi0gICAgaWYgdGVzdCAtZCAiJGx0X3N5c19wYXRoLyRsdF9tdWx0aV9vc19kaXIiOyB0aGVuCi0gICAgICBsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYz0iJGx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjICRsdF9zeXNfcGF0aC8kbHRfbXVsdGlfb3NfZGlyIgotICAgIGVsc2UKKyAgICBpZiB0ZXN0IC1kICIkbHRfc3lzX3BhdGgkbHRfbXVsdGlfb3NfZGlyIjsgdGhlbgorICAgICAgbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWM9IiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyAkbHRfc3lzX3BhdGgkbHRfbXVsdGlfb3NfZGlyIgorICAgIGVsaWYgdGVzdCAtbiAiJGx0X211bHRpX29zX2RpciI7IHRoZW4KICAgICAgIHRlc3QgLWQgIiRsdF9zeXNfcGF0aCIgJiYgXAogCWx0X3RtcF9sdF9zZWFyY2hfcGF0aF9zcGVjPSIkbHRfdG1wX2x0X3NlYXJjaF9wYXRoX3NwZWMgJGx0X3N5c19wYXRoIgogICAgIGZpCiAgIGRvbmUKICAgbHRfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRsdF90bXBfbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCBhd2sgJwotQkVHSU4ge1JTPSIgIjsgRlM9Ii98XG4iO30gewotICBsdF9mb289IiI7Ci0gIGx0X2NvdW50PTA7CitCRUdJTiB7UlMgPSAiICI7IEZTID0gIi98XG4iO30geworICBsdF9mb28gPSAiIjsKKyAgbHRfY291bnQgPSAwOwogICBmb3IgKGx0X2kgPSBORjsgbHRfaSA+IDA7IGx0X2ktLSkgewogICAgIGlmICgkbHRfaSAhPSAiIiAmJiAkbHRfaSAhPSAiLiIpIHsKICAgICAgIGlmICgkbHRfaSA9PSAiLi4iKSB7CiAgICAgICAgIGx0X2NvdW50Kys7CiAgICAgICB9IGVsc2UgewogICAgICAgICBpZiAobHRfY291bnQgPT0gMCkgewotICAgICAgICAgIGx0X2Zvbz0iLyIgJGx0X2kgbHRfZm9vOworICAgICAgICAgIGx0X2ZvbyA9ICIvIiAkbHRfaSBsdF9mb287CiAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgbHRfY291bnQtLTsKICAgICAgICAgfQpAQCAtMjIzMyw3ICsyMzUzLDcgQEAKICAgIyBmb3IgdGhlc2UgaG9zdHMuCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBtaW5ndyogfCBjZWdjYyopIGx0X3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfFwKLSAgICAgICRTRUQgJ3MsL1woW1tBLVphLXpdXTpcKSxcMSxnJ2AgOzsKKyAgICAgICRTRUQgJ3N8L1woW1tBLVphLXpdXTpcKXxcMXxnJ2AgOzsKICAgZXNhYwogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkbHRfc2VhcmNoX3BhdGhfc3BlYyIgfCAkbHRfTkwyU1BgCiBlbHNlCkBAIC0yMjQyLDcgKzIzNjIsNyBAQAogbGlicmFyeV9uYW1lc19zcGVjPQogbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKIHNvbmFtZV9zcGVjPQotc2hyZXh0X2NtZHM9Ii5zbyIKK3NocmV4dF9jbWRzPS5zbwogcG9zdGluc3RhbGxfY21kcz0KIHBvc3R1bmluc3RhbGxfY21kcz0KIGZpbmlzaF9jbWRzPQpAQCAtMjI1OSwxNCArMjM3OSwxNyBAQAogIyBmbGFncyB0byBiZSBsZWZ0IHdpdGhvdXQgYXJndW1lbnRzCiBuZWVkX3ZlcnNpb249dW5rbm93bgogCitBQ19BUkdfVkFSKFtMVF9TWVNfTElCUkFSWV9QQVRIXSwKK1tVc2VyLWRlZmluZWQgcnVuLXRpbWUgbGlicmFyeSBzZWFyY2ggcGF0aC5dKQorCiBjYXNlICRob3N0X29zIGluCiBhaXgzKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUuYScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lLmEnCiAgIHNobGlicGF0aF92YXI9TElCUEFUSAogCiAgICMgQUlYIDMgaGFzIG5vIHZlcnNpb25pbmcgc3VwcG9ydCwgc28gd2UgYXBwZW5kIGEgbWFqb3IgdmVyc2lvbiB0byB0aGUgbmFtZS4KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgOzsKIAogYWl4W1s0LTldXSopCkBAIC0yMjc0LDQxICsyMzk3LDkxIEBACiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogICAgICMgQUlYIDUgc3VwcG9ydHMgSUE2NAotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkc2hhcmVkX2V4dCcKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBlbHNlCiAgICAgIyBXaXRoIEdDQyB1cCB0byAyLjk1LngsIGNvbGxlY3QyIHdvdWxkIGNyZWF0ZSBhbiBpbXBvcnQgZmlsZQogICAgICMgZm9yIGRlcGVuZGVuY2UgbGlicmFyaWVzLiAgVGhlIGltcG9ydCBmaWxlIHdvdWxkIHN0YXJ0IHdpdGgKLSAgICAjIHRoZSBsaW5lIGAjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCi0gICAgIyBkZXBlbmQgb24gYC4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KKyAgICAjIHRoZSBsaW5lICcjISAuJy4gIFRoaXMgd291bGQgY2F1c2UgdGhlIGdlbmVyYXRlZCBsaWJyYXJ5IHRvCisgICAgIyBkZXBlbmQgb24gJy4nLCBhbHdheXMgYW4gaW52YWxpZCBsaWJyYXJ5LiAgVGhpcyB3YXMgZml4ZWQgaW4KICAgICAjIGRldmVsb3BtZW50IHNuYXBzaG90cyBvZiBHQ0MgcHJpb3IgdG8gMy4wLgogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeDQgfCBhaXg0LltbMDFdXSB8IGFpeDQuW1swMV1dLiopCiAgICAgICBpZiB7IGVjaG8gJyNpZiBfX0dOVUNfXyA+IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPj0gOTcpJwogCSAgIGVjaG8gJyB5ZXMgJwotCSAgIGVjaG8gJyNlbmRpZic7IH0gfCAke0NDfSAtRSAtIHwgJEdSRVAgeWVzID4gL2Rldi9udWxsOyB0aGVuCisJICAgZWNobyAnI2VuZGlmJzsgfSB8ICRDQyAtRSAtIHwgJEdSRVAgeWVzID4gL2Rldi9udWxsOyB0aGVuCiAJOgogICAgICAgZWxzZQogCWNhbl9idWlsZF9zaGFyZWQ9bm8KICAgICAgIGZpCiAgICAgICA7OwogICAgIGVzYWMKLSAgICAjIEFJWCAob24gUG93ZXIqKSBoYXMgbm8gdmVyc2lvbmluZyBzdXBwb3J0LCBzbyBjdXJyZW50bHkgd2UgY2FuIG5vdCBoYXJkY29kZSBjb3JyZWN0CisgICAgIyBVc2luZyBJbXBvcnQgRmlsZXMgYXMgYXJjaGl2ZSBtZW1iZXJzLCBpdCBpcyBwb3NzaWJsZSB0byBzdXBwb3J0CisgICAgIyBmaWxlbmFtZS1iYXNlZCB2ZXJzaW9uaW5nIG9mIHNoYXJlZCBsaWJyYXJ5IGFyY2hpdmVzIG9uIEFJWC4gV2hpbGUKKyAgICAjIHRoaXMgd291bGQgd29yayBmb3IgYm90aCB3aXRoIGFuZCB3aXRob3V0IHJ1bnRpbWUgbGlua2luZywgaXQgd2lsbAorICAgICMgcHJldmVudCBzdGF0aWMgbGlua2luZyBvZiBzdWNoIGFyY2hpdmVzLiBTbyB3ZSBkbyBmaWxlbmFtZS1iYXNlZAorICAgICMgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyB3aXRoIC5zbyBleHRlbnNpb24gb25seSwgd2hpY2ggaXMgdXNlZAorICAgICMgd2hlbiBib3RoIHJ1bnRpbWUgbGlua2luZyBhbmQgc2hhcmVkIGxpbmtpbmcgaXMgZW5hYmxlZC4KKyAgICAjIFVuZm9ydHVuYXRlbHksIHJ1bnRpbWUgbGlua2luZyBtYXkgaW1wYWN0IHBlcmZvcm1hbmNlLCBzbyB3ZSBkbworICAgICMgbm90IHdhbnQgdGhpcyB0byBiZSB0aGUgZGVmYXVsdCBldmVudHVhbGx5LiBBbHNvLCB3ZSB1c2UgdGhlCisgICAgIyB2ZXJzaW9uZWQgLnNvIGxpYnMgZm9yIGV4ZWN1dGFibGVzIG9ubHkgaWYgdGhlcmUgaXMgdGhlIC1icnRsCisgICAgIyBsaW5rZXIgZmxhZyBpbiBMREZMQUdTIGFzIHdlbGwsIG9yIC0td2l0aC1haXgtc29uYW1lPXN2cjQgb25seS4KKyAgICAjIFRvIGFsbG93IGZvciBmaWxlbmFtZS1iYXNlZCB2ZXJzaW9uaW5nIHN1cHBvcnQsIHdlIG5lZWQgdG8gY3JlYXRlCisgICAgIyBsaWJOQU1FLnNvLlYgYXMgYW4gYXJjaGl2ZSBmaWxlLCBjb250YWluaW5nOgorICAgICMgKikgYW4gSW1wb3J0IEZpbGUsIHJlZmVycmluZyB0byB0aGUgdmVyc2lvbmVkIGZpbGVuYW1lIG9mIHRoZQorICAgICMgICAgYXJjaGl2ZSBhcyB3ZWxsIGFzIHRoZSBzaGFyZWQgYXJjaGl2ZSBtZW1iZXIsIHRlbGxpbmcgdGhlCisgICAgIyAgICBiaXR3aWR0aCAoMzIgb3IgNjQpIG9mIHRoYXQgc2hhcmVkIG9iamVjdCwgYW5kIHByb3ZpZGluZyB0aGUKKyAgICAjICAgIGxpc3Qgb2YgZXhwb3J0ZWQgc3ltYm9scyBvZiB0aGF0IHNoYXJlZCBvYmplY3QsIGV2ZW50dWFsbHkKKyAgICAjICAgIGRlY29yYXRlZCB3aXRoIHRoZSAnd2Vhaycga2V5d29yZAorICAgICMgKikgdGhlIHNoYXJlZCBvYmplY3Qgd2l0aCB0aGUgRl9MT0FET05MWSBmbGFnIHNldCwgdG8gcmVhbGx5IGF2b2lkCisgICAgIyAgICBpdCBiZWluZyBzZWVuIGJ5IHRoZSBsaW5rZXIuCisgICAgIyBBdCBydW4gdGltZSB3ZSBiZXR0ZXIgdXNlIHRoZSByZWFsIGZpbGUgcmF0aGVyIHRoYW4gYW5vdGhlciBzeW1saW5rLAorICAgICMgYnV0IGZvciBsaW5rIHRpbWUgd2UgY3JlYXRlIHRoZSBzeW1saW5rIGxpYk5BTUUuc28gLT4gbGliTkFNRS5zby5WCisKKyAgICBjYXNlICR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmcgaW4KKyAgICAjIEFJWCAob24gUG93ZXIqKSBoYXMgbm8gdmVyc2lvbmluZyBzdXBwb3J0LCBzbyBjdXJyZW50bHkgd2UgY2Fubm90IGhhcmRjb2RlIGNvcnJlY3QKICAgICAjIHNvbmFtZSBpbnRvIGV4ZWN1dGFibGUuIFByb2JhYmx5IHdlIGNhbiBhZGQgdmVyc2lvbmluZyBzdXBwb3J0IHRvCiAgICAgIyBjb2xsZWN0Miwgc28gYWRkaXRpb25hbCBsaW5rcyBjYW4gYmUgdXNlZnVsIGluIGZ1dHVyZS4KLSAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICBhaXgseWVzKSAjIHRyYWRpdGlvbmFsIGxpYnRvb2wKKyAgICAgIGR5bmFtaWNfbGlua2VyPSdBSVggdW52ZXJzaW9uYWJsZSBsaWIuc28nCiAgICAgICAjIElmIHVzaW5nIHJ1biB0aW1lIGxpbmtpbmcgKG9uIEFJWCA0LjIgb3IgbGF0ZXIpIHVzZSBsaWI8bmFtZT4uc28KICAgICAgICMgaW5zdGVhZCBvZiBsaWI8bmFtZT4uYSB0byBsZXQgcGVvcGxlIGtub3cgdGhhdCB0aGVzZSBhcmUgbm90CiAgICAgICAjIHR5cGljYWwgQUlYIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBlbHNlCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgICA7OworICAgIGFpeCxubykgIyB0cmFkaXRpb25hbCBBSVggb25seQorICAgICAgZHluYW1pY19saW5rZXI9J0FJWCBsaWIuYVsoXWxpYi5zby5WWyldJwogICAgICAgIyBXZSBwcmVzZXJ2ZSAuYSBhcyBleHRlbnNpb24gZm9yIHNoYXJlZCBsaWJyYXJpZXMgdGhyb3VnaCBBSVg0LjIKICAgICAgICMgYW5kIGxhdGVyIHdoZW4gd2UgYXJlIG5vdCBkb2luZyBydW4gdGltZSBsaW5raW5nLgotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfS5hICRsaWJuYW1lLmEnCi0gICAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgIGZpCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2UuYSAkbGlibmFtZS5hJworICAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgICAgIDs7CisgICAgc3ZyNCwqKSAjIGZ1bGwgc3ZyNCBvbmx5CisgICAgICBkeW5hbWljX2xpbmtlcj0iQUlYIGxpYi5zby5WWyhdJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm9bKV0iCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgICAgIyBXZSBkbyBub3Qgc3BlY2lmeSBhIHBhdGggaW4gSW1wb3J0IEZpbGVzLCBzbyBMSUJQQVRIIGZpcmVzLgorICAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworICAgICAgOzsKKyAgICAqLHllcykgIyBib3RoLCBwcmVmZXIgc3ZyNAorICAgICAgZHluYW1pY19saW5rZXI9IkFJWCBsaWIuc28uVlsoXSRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vWyldLCBsaWIuYVsoXWxpYi5zby5WWyldIgorICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgICMgdW5wcmVmZXJyZWQgc2hhcmVkbGliIGxpYk5BTUUuYSBuZWVkcyBleHRyYSBoYW5kbGluZworICAgICAgcG9zdGluc3RhbGxfY21kcz0ndGVzdCAtbiAiJGxpbmtuYW1lIiB8fCBsaW5rbmFtZT0iJHJlYWxuYW1lIn5mdW5jX3N0cmlwbmFtZSAiIiAiLnNvIiAiJGxpbmtuYW1lIn4kaW5zdGFsbF9zaGFyZWRfcHJvZyAiJGRpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LiRsaWJleHQiICIkZGVzdGRpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LiRsaWJleHQifnRlc3QgLXogIiR0c3RyaXBtZSIgfHwgdGVzdCAteiAiJHN0cmlwbGliIiB8fCAkc3RyaXBsaWIgIiRkZXN0ZGlyLyRmdW5jX3N0cmlwbmFtZV9yZXN1bHQuJGxpYmV4dCInCisgICAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2ZvciBuIGluICRsaWJyYXJ5X25hbWVzICRvbGRfbGlicmFyeTsgZG8gOjsgZG9uZX5mdW5jX3N0cmlwbmFtZSAiIiAiLnNvIiAiJG4ifnRlc3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiID0gIiRuIiB8fCBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC4kbGliZXh0IicKKyAgICAgICMgV2UgZG8gbm90IHNwZWNpZnkgYSBwYXRoIGluIEltcG9ydCBGaWxlcywgc28gTElCUEFUSCBmaXJlcy4KKyAgICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKyAgICAgIDs7CisgICAgKixubykgIyBib3RoLCBwcmVmZXIgYWl4CisgICAgICBkeW5hbWljX2xpbmtlcj0iQUlYIGxpYi5hWyhdbGliLnNvLlZbKV0sIGxpYi5zby5WWyhdJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm9bKV0iCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2UuYSAkbGlibmFtZS5hJworICAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgICAgICMgdW5wcmVmZXJyZWQgc2hhcmVkbGliIGxpYk5BTUUuc28uViBhbmQgc3ltbGluayBsaWJOQU1FLnNvIG5lZWQgZXh0cmEgaGFuZGxpbmcKKyAgICAgIHBvc3RpbnN0YWxsX2NtZHM9J3Rlc3QgLXogIiRkbG5hbWUiIHx8ICRpbnN0YWxsX3NoYXJlZF9wcm9nICRkaXIvJGRsbmFtZSAkZGVzdGRpci8kZGxuYW1lfnRlc3QgLXogIiR0c3RyaXBtZSIgfHwgdGVzdCAteiAiJHN0cmlwbGliIiB8fCAkc3RyaXBsaWIgJGRlc3RkaXIvJGRsbmFtZX50ZXN0IC1uICIkbGlua25hbWUiIHx8IGxpbmtuYW1lPSRyZWFsbmFtZX5mdW5jX3N0cmlwbmFtZSAiIiAiLmEiICIkbGlua25hbWUifihjZCAiJGRlc3RkaXIiICYmICRMTl9TIC1mICRkbG5hbWUgJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdC5zbyknCisgICAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J3Rlc3QgLXogIiRkbG5hbWUiIHx8IGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIn5mb3IgbiBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvIDo7IGRvbmV+ZnVuY19zdHJpcG5hbWUgIiIgIi5hIiAiJG4ifmZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZnVuY19zdHJpcG5hbWVfcmVzdWx0LnNvIicKKyAgICAgIDs7CisgICAgZXNhYwogICAgIHNobGlicGF0aF92YXI9TElCUEFUSAogICBmaQogICA7OwpAQCAtMjMxOCwxOCArMjQ5MSwxOCBAQAogICBwb3dlcnBjKQogICAgICMgU2luY2UgSnVseSAyMDA3IEFtaWdhT1M0IG9mZmljaWFsbHkgc3VwcG9ydHMgLnNvIGxpYnJhcmllcy4KICAgICAjIFdoZW4gY29tcGlsaW5nIHRoZSBleGVjdXRhYmxlLCBhZGQgLXVzZS1keW5sZCAtTHNvYmpzOiB0byB0aGUgY29tcGlsZWxpbmUuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICAgIDs7CiAgIG02OGspCiAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5peGxpYnJhcnkgJGxpYm5hbWUuYScKICAgICAjIENyZWF0ZSAke2xpYm5hbWV9X2l4bGlicmFyeS5hIGVudHJpZXMgaW4gL3N5cy9saWJzLgotICAgIGZpbmlzaF9ldmFsPSdmb3IgbGliIGluIGBscyAkbGliZGlyLyouaXhsaWJyYXJ5IDI+L2Rldi9udWxsYDsgZG8gbGlibmFtZT1gZnVuY19lY2hvX2FsbCAiJGxpYiIgfCAkU0VEICdcJydzJV4uKi9cKFtbXi9dXSpcKVwuaXhsaWJyYXJ5JCVcMSUnXCcnYDsgdGVzdCAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCisgICAgZmluaXNoX2V2YWw9J2ZvciBsaWIgaW4gYGxzICRsaWJkaXIvKi5peGxpYnJhcnkgMj4vZGV2L251bGxgOyBkbyBsaWJuYW1lPWBmdW5jX2VjaG9fYWxsICIkbGliIiB8ICRTRUQgJ1wnJ3MlXi4qL1woW1teL11dKlwpXC5peGxpYnJhcnkkJVwxJSdcJydgOyAkUk0gL3N5cy9saWJzLyR7bGlibmFtZX1faXhsaWJyYXJ5LmE7ICRzaG93ICJjZCAvc3lzL2xpYnMgJiYgJExOX1MgJGxpYiAke2xpYm5hbWV9X2l4bGlicmFyeS5hIjsgY2QgL3N5cy9saWJzICYmICRMTl9TICRsaWIgJHtsaWJuYW1lfV9peGxpYnJhcnkuYSB8fCBleGl0IDE7IGRvbmUnCiAgICAgOzsKICAgZXNhYwogICA7OwogCiBiZW9zKikKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaGFyZWRfZXh0JwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgbGQuc28iCiAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICiAgIDs7CkBAIC0yMzM3LDggKzI1MTAsOCBAQAogYnNkaVtbNDVdXSopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJGxpYm5hbWUke3NoYXJlZF9leHR9JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnICRsaWJkaXInCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL3NobGliIC91c3IvbGliIC91c3IvWDExL2xpYiAvdXNyL2NvbnRyaWIvbGliIC9saWIgL3Vzci9sb2NhbC9saWIiCkBAIC0yMzUwLDcgKzI1MjMsNyBAQAogCiBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCiAgIHZlcnNpb25fdHlwZT13aW5kb3dzCi0gIHNocmV4dF9jbWRzPSIuZGxsIgorICBzaHJleHRfY21kcz0uZGxsCiAgIG5lZWRfdmVyc2lvbj1ubwogICBuZWVkX2xpYl9wcmVmaXg9bm8KIApAQCAtMjM1OSw4ICsyNTMyLDggQEAKICAgICAjIGdjYwogICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCiAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wkYmFzZV9maWxlJ1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KICAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KICAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgogICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lfgpAQCAtMjM3NiwxNyArMjU0OSwxNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICBjeWd3aW4qKQogICAgICAgIyBDeWd3aW4gRExMcyB1c2UgJ2N5ZycgcHJlZml4IHJhdGhlciB0aGFuICdsaWInCi0gICAgICBzb25hbWVfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgIHNvbmFtZV9zcGVjPSdgZWNobyAkbGlibmFtZSB8IHNlZCAtZSAncy9ebGliL2N5Zy8nYGBlY2hvICRyZWxlYXNlIHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCcKIG00X2lmKFskMV0sIFtdLFsKICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAvdXNyL2xpYi93MzJhcGkiXSkKICAgICAgIDs7CiAgICAgbWluZ3cqIHwgY2VnY2MqKQogICAgICAgIyBNaW5HVyBETExzIHVzZSB0cmFkaXRpb25hbCAnbGliJyBwcmVmaXgKLSAgICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JwogICAgICAgOzsKICAgICBwdzMyKikKICAgICAgICMgcHczMiBETExzIHVzZSAncHcnIHByZWZpeCByYXRoZXIgdGhhbiAnbGliJwotICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICRsaWJuYW1lIHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAkcmVsZWFzZSB8ICRTRUQgLWUgJ3MvW1suXV0vLS9nJ2AkdmVyc3VmZml4JHNoYXJlZF9leHQnCiAgICAgICA7OwogICAgIGVzYWMKICAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwpAQCAtMjM5NSw4ICsyNTY4LDggQEAKICAgKixjbCopCiAgICAgIyBOYXRpdmUgTVNWQwogICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0gICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lYGVjaG8gJHJlbGVhc2UgfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHZlcnN1ZmZpeCRzaGFyZWRfZXh0JworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmxpYicKIAogICAgIGNhc2UgJGJ1aWxkX29zIGluCiAgICAgbWluZ3cqKQpAQCAtMjQyMyw3ICsyNTk2LDcgQEAKICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCiAgICAgICA7OwogICAgICopCi0gICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9JExJQgogICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgWyRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbF07IHRoZW4KICAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KICAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKQEAgLTI0MzYsOCArMjYwOSw4IEBACiAgICAgZXNhYwogCiAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wkYmFzZV9maWxlJ1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KICAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KICAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgogICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwpAQCAtMjQ1MCw3ICsyNjIzLDcgQEAKIAogICAqKQogICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZWBlY2hvICRyZWxlYXNlIHwgJFNFRCAtZSAncy9bWy5dXS8tL2cnYCR2ZXJzdWZmaXgkc2hhcmVkX2V4dCAkbGlibmFtZS5saWInCiAgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKICAgICA7OwogICBlc2FjCkBAIC0yNDYzLDggKzI2MzYsOCBAQAogICB2ZXJzaW9uX3R5cGU9ZGFyd2luCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7bWFqb3J9JHNoYXJlZF9leHQgJHtsaWJuYW1lfSRzaGFyZWRfZXh0JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke21ham9yfSRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2UkbWFqb3Ikc2hhcmVkX2V4dCAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRtYWpvciRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgIHNobGlicGF0aF92YXI9RFlMRF9MSUJSQVJZX1BBVEgKICAgc2hyZXh0X2NtZHM9J2B0ZXN0IC4kbW9kdWxlID0gLnllcyAmJiBlY2hvIC5zbyB8fCBlY2hvIC5keWxpYmAnCkBAIC0yNDc3LDggKzI2NTAsOCBAQAogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIDs7CiAKQEAgLTI0OTYsMTIgKzI2NjksMTMgQEAKICAgdmVyc2lvbl90eXBlPWZyZWVic2QtJG9iamZvcm1hdAogICBjYXNlICR2ZXJzaW9uX3R5cGUgaW4KICAgICBmcmVlYnNkLWVsZiopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3InCiAgICAgICBuZWVkX3ZlcnNpb249bm8KICAgICAgIG5lZWRfbGliX3ByZWZpeD1ubwogICAgICAgOzsKICAgICBmcmVlYnNkLSopCi0gICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJGxpYm5hbWUke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCcKKyAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgICAgIG5lZWRfdmVyc2lvbj15ZXMKICAgICAgIDs7CiAgIGVzYWMKQEAgLTI1MzEsMTAgKzI3MDUsMTAgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBkeW5hbWljX2xpbmtlcj0iJGhvc3Rfb3MgcnVudGltZV9sb2FkZXIiCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0ke21ham9yfSAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwogICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICA7OwpAQCAtMjU1MiwxNCArMjcyNiwxNSBAQAogICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc28iCiAgICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgICBpZiB0ZXN0ICJYJEhQVVhfSUE2NF9NT0RFIiA9IFgzMjsgdGhlbgorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICAgIGlmIHRlc3QgMzIgPSAiJEhQVVhfSUE2NF9NT0RFIjsgdGhlbgogICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYi9ocHV4MzIgL3Vzci9sb2NhbC9saWIvaHB1eDMyIC91c3IvbG9jYWwvbGliIgorICAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9L3Vzci9saWIvaHB1eDMyCiAgICAgZWxzZQogICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYi9ocHV4NjQgL3Vzci9sb2NhbC9saWIvaHB1eDY0IgorICAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9L3Vzci9saWIvaHB1eDY0CiAgICAgZmkKLSAgICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjCiAgICAgOzsKICAgaHBwYSo2NCopCiAgICAgc2hyZXh0X2NtZHM9Jy5zbCcKQEAgLTI1NjcsOCArMjc0Miw4IEBACiAgICAgZHluYW1pY19saW5rZXI9IiRob3N0X29zIGRsZC5zbCIKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSCAjIEhvdyBzaG91bGQgd2UgaGFuZGxlIFNITElCX1BBVEgKICAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzICMgVW5sZXNzICtub2VudnZhciBpcyBzcGVjaWZpZWQuCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHNoYXJlZF9leHQnCisgICAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliL3BhMjBfNjQgL3Vzci9jY3MvbGliL3BhMjBfNjQiCiAgICAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICAgIDs7CkBAIC0yNTc3LDggKzI3NTIsOCBAQAogICAgIGR5bmFtaWNfbGlua2VyPSIkaG9zdF9vcyBkbGQuc2wiCiAgICAgc2hsaWJwYXRoX3Zhcj1TSExJQl9QQVRICiAgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vICMgK3MgaXMgcmVxdWlyZWQgdG8gZW5hYmxlIFNITElCX1BBVEgKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIDs7CiAgIGVzYWMKICAgIyBIUC1VWCBydW5zICpyZWFsbHkqIHNsb3dseSB1bmxlc3Mgc2hhcmVkIGxpYnJhcmllcyBhcmUgbW9kZSA1NTUsIC4uLgpAQCAtMjU5MSw4ICsyNzY2LDggQEAKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgogICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgbmVlZF92ZXJzaW9uPW5vCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3IgJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgZHluYW1pY19saW5rZXI9J0ludGVyaXggMy54IGxkLnNvLjEgKFBFLCBsaWtlIEVMRiknCiAgIHNobGlicGF0aF92YXI9TERfTElCUkFSWV9QQVRICiAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD1ubwpAQCAtMjYwMyw3ICsyNzc4LDcgQEAKICAgY2FzZSAkaG9zdF9vcyBpbgogICAgIG5vbnN0b3B1eCopIHZlcnNpb25fdHlwZT1ub25zdG9wdXggOzsKICAgICAqKQotCWlmIHRlc3QgIiRsdF9jdl9wcm9nX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwlpZiB0ZXN0IHllcyA9ICIkbHRfY3ZfcHJvZ19nbnVfbGQiOyB0aGVuCiAJCXZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKIAllbHNlCiAJCXZlcnNpb25fdHlwZT1pcml4CkBAIC0yNjExLDggKzI3ODYsOCBAQAogICBlc2FjCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUke3NoYXJlZF9leHR9JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCR2ZXJzdWZmaXggJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBjYXNlICRob3N0X29zIGluCiAgIGlyaXg1KiB8IG5vbnN0b3B1eCopCiAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQpAQCAtMjYzMSw4ICsyODA2LDggQEAKICAgZXNhYwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUlkke3NobGlic3VmZn1fUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KLSAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiR7bGlic3VmZn0gL2xpYiR7bGlic3VmZn0gL3Vzci9sb2NhbC9saWIke2xpYnN1ZmZ9IgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iL3Vzci9saWIke2xpYnN1ZmZ9IC9saWIke2xpYnN1ZmZ9IgorICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliJGxpYnN1ZmYgL2xpYiRsaWJzdWZmIC91c3IvbG9jYWwvbGliJGxpYnN1ZmYiCisgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvdXNyL2xpYiRsaWJzdWZmIC9saWIkbGlic3VmZiIKICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICA7OwogCkBAIC0yNjQxLDEzICsyODE2LDMzIEBACiAgIGR5bmFtaWNfbGlua2VyPW5vCiAgIDs7CiAKK2xpbnV4KmFuZHJvaWQqKQorICB2ZXJzaW9uX3R5cGU9bm9uZSAjIEFuZHJvaWQgZG9lc24ndCBzdXBwb3J0IHZlcnNpb25lZCBsaWJyYXJpZXMuCisgIG5lZWRfbGliX3ByZWZpeD1ubworICBuZWVkX3ZlcnNpb249bm8KKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQnCisgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQnCisgIGZpbmlzaF9jbWRzPQorICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAorICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisKKyAgIyBUaGlzIGltcGxpZXMgbm8gZmFzdF9pbnN0YWxsLCB3aGljaCBpcyB1bmFjY2VwdGFibGUuCisgICMgU29tZSByZXdvcmsgd2lsbCBiZSBuZWVkZWQgdG8gYWxsb3cgZm9yIGZhc3RfaW5zdGFsbAorICAjIGJlZm9yZSB0aGlzIGNhbiBiZSBlbmFibGVkLgorICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisKKyAgZHluYW1pY19saW5rZXI9J0FuZHJvaWQgbGlua2VyJworICAjIERvbid0IGVtYmVkIC1ycGF0aCBkaXJlY3RvcmllcyBzaW5jZSB0aGUgbGlua2VyIGRvZXNuJ3Qgc3VwcG9ydCB0aGVtLgorICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLUwkbGliZGlyJworICA7OworCiAjIFRoaXMgbXVzdCBiZSBnbGliYy9FTEYuCiBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUgfCBnbnUqKQogICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCiAgIG5lZWRfbGliX3ByZWZpeD1ubwogICBuZWVkX3ZlcnNpb249bm8KLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovc2JpbiIgbGRjb25maWcgLW4gJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCkBAIC0yNjcyLDcgKzI4NjcsMTIgQEAKICAgIyBiZWZvcmUgdGhpcyBjYW4gYmUgZW5hYmxlZC4KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogCi0gICMgQXBwZW5kIGxkLnNvLmNvbmYgY29udGVudHMgdG8gdGhlIHNlYXJjaCBwYXRoCisgICMgSWRlYWxseSwgd2UgY291bGQgdXNlIGxkY29uZmlnIHRvIHJlcG9ydCAqYWxsKiBkaXJlY3RvcmVzIHdoaWNoIGFyZQorICAjIHNlYXJjaGVkIGZvciBsaWJyYXJpZXMsIGhvd2V2ZXIgdGhpcyBpcyBzdGlsbCBub3QgcG9zc2libGUuICBBc2lkZSBmcm9tIG5vdAorICAjIGJlaW5nIGNlcnRhaW4gL3NiaW4vbGRjb25maWcgaXMgYXZhaWxhYmxlLCBjb21tYW5kCisgICMgJ2xkY29uZmlnIC1OIC1YIC12IHwgZ3JlcCBeLycgb24gNjRiaXQgRmVkb3JhIGRvZXMgbm90IHJlcG9ydCAvdXNyL2xpYjY0LAorICAjIGV2ZW4gdGhvdWdoIGl0IGlzIHNlYXJjaGVkIGF0IHJ1bi10aW1lLiAgVHJ5IHRvIGRvIHRoZSBiZXN0IGd1ZXNzIGJ5CisgICMgYXBwZW5kaW5nIGxkLnNvLmNvbmYgY29udGVudHMgKGFuZCBpbmNsdWRlcykgdG8gdGhlIHNlYXJjaCBwYXRoLgogICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgogICAgIGx0X2xkX2V4dHJhPWBhd2sgJy9eaW5jbHVkZSAvIHsgc3lzdGVtKHNwcmludGYoImNkIC9ldGM7IGNhdCAlcyAyPi9kZXYvbnVsbCIsIFxbJF0yKSk7IHNraXAgPSAxOyB9IHsgaWYgKCFza2lwKSBwcmludCBcWyRdMDsgc2tpcCA9IDA7IH0nIDwgL2V0Yy9sZC5zby5jb25mIHwgJFNFRCAtZSAncy8jLiovLzsvXlsJIF0qaHdjYXBbCSBdL2Q7cy9bOiwJXS8gL2c7cy89W149XSokLy87cy89W149IF0qIC8gL2c7cy8iLy9nOy9eJC9kJyB8IHRyICdcbicgJyAnYAogICAgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPSIvbGliIC91c3IvbGliICRsdF9sZF9leHRyYSIKQEAgLTI3MDQsMTIgKzI5MDQsMTIgQEAKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwogICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICAgIGZpbmlzaF9jbWRzPSdQQVRIPSJcJFBBVEg6L3NiaW4iIGxkY29uZmlnIC1tICRsaWJkaXInCiAgICAgZHluYW1pY19saW5rZXI9J05ldEJTRCAoYS5vdXQpIGxkLnNvJwogICBlbHNlCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICAgIGR5bmFtaWNfbGlua2VyPSdOZXRCU0QgbGQuZWxmX3NvJwogICBmaQogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSApAQCAtMjcxOSw3ICsyOTE5LDcgQEAKIAogbmV3c29zNikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgIDs7CkBAIC0yNzI4LDU4ICsyOTI4LDY4IEBACiAgIHZlcnNpb25fdHlwZT1xbngKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwogICBkeW5hbWljX2xpbmtlcj0nbGRxbnguc28nCiAgIDs7CiAKLW9wZW5ic2QqKQorb3BlbmJzZCogfCBiaXRyaWcqKQogICB2ZXJzaW9uX3R5cGU9c3Vub3MKLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Ii91c3IvbGliIgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0vdXNyL2xpYgogICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAgIyBTb21lIG9sZGVyIHZlcnNpb25zIG9mIE9wZW5CU0QgKDMuMyBhdCBsZWFzdCkgKmRvKiBuZWVkIHZlcnNpb25lZCBsaWJzLgotICBjYXNlICRob3N0X29zIGluCi0gICAgb3BlbmJzZDMuMyB8IG9wZW5ic2QzLjMuKikJbmVlZF92ZXJzaW9uPXllcyA7OwotICAgICopCQkJCW5lZWRfdmVyc2lvbj1ubyAgOzsKLSAgZXNhYwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4JworICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCI7IHRoZW4KKyAgICBuZWVkX3ZlcnNpb249bm8KKyAgZWxzZQorICAgIG5lZWRfdmVyc2lvbj15ZXMKKyAgZmkKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHNoYXJlZF9leHQkdmVyc3VmZml4JwogICBmaW5pc2hfY21kcz0nUEFUSD0iXCRQQVRIOi9zYmluIiBsZGNvbmZpZyAtbSAkbGliZGlyJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAotICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCi0gICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICAgb3BlbmJzZDIuW1s4OV1dIHwgb3BlbmJzZDIuW1s4OV1dLiopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPW5vCi0JOzsKLSAgICAgICopCi0Jc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotCTs7Ci0gICAgICBlc2FjCi0gIGVsc2UKLSAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0gIGZpCisgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKICAgOzsKIAogb3MyKikKICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisgIHZlcnNpb25fdHlwZT13aW5kb3dzCisgIHNocmV4dF9jbWRzPS5kbGwKKyAgbmVlZF92ZXJzaW9uPW5vCiAgIG5lZWRfbGliX3ByZWZpeD1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHtzaGFyZWRfZXh0fSAkbGlibmFtZS5hJworICAjIE9TLzIgY2FuIG9ubHkgbG9hZCBhIERMTCB3aXRoIGEgYmFzZSBuYW1lIG9mIDggY2hhcmFjdGVycyBvciBsZXNzLgorICBzb25hbWVfc3BlYz0nYHRlc3QgLW4gIiRvczJkbGxuYW1lIiAmJiBsaWJuYW1lPSIkb3MyZGxsbmFtZSI7CisgICAgdj0kKCRFQ0hPICRyZWxlYXNlJHZlcnN1ZmZpeCB8IHRyIC1kIC4tKTsKKyAgICBuPSQoJEVDSE8gJGxpYm5hbWUgfCBjdXQgLWIgLSQoKDggLSAkeyN2fSkpIHwgdHIgLiBfKTsKKyAgICAkRUNITyAkbiR2YCRzaGFyZWRfZXh0JworICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1fZGxsLiRsaWJleHQnCiAgIGR5bmFtaWNfbGlua2VyPSdPUy8yIGxkLmV4ZScKLSAgc2hsaWJwYXRoX3Zhcj1MSUJQQVRICisgIHNobGlicGF0aF92YXI9QkVHSU5MSUJQQVRICisgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iL2xpYiAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYworICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwkZmlsZWB+CisgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJGJhc2VfZmlsZSdcJydpOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKyAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKyAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWV+CisgICAgY2htb2QgYSt4IFwkZGxkaXIvJGRsbmFtZX4KKyAgICBpZiB0ZXN0IC1uICdcJyckc3RyaXBtZSdcJycgJiYgdGVzdCAtbiAnXCcnJHN0cmlwbGliJ1wnJzsgdGhlbgorICAgICAgZXZhbCAnXCcnJHN0cmlwbGliIFwkZGxkaXIvJGRsbmFtZSdcJycgfHwgZXhpdCBcJD87CisgICAgZmknCisgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyAkRUNITyBcJGRsbmFtZSdcJydgfgorICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisgICAgJFJNIFwkZGxwYXRoJwogICA7OwogCiBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCiAgIHZlcnNpb25fdHlwZT1vc2YKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ii91c3Ivc2hsaWIgL3Vzci9jY3MvbGliIC91c3IvbGliL2NtcGxycy9jYyAvdXNyL2xpYiAvdXNyL2xvY2FsL2xpYiAvdmFyL3NobGliIgotICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIKKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9JHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogICA7OwogCiByZG9zKikKQEAgLTI3OTAsOCArMzAwMCw4IEBACiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKQEAgLTI4MDEsMTEgKzMwMTEsMTEgQEAKIAogc3Vub3M0KikKICAgdmVyc2lvbl90eXBlPXN1bm9zCi0gIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JHZlcnN1ZmZpeCAke2xpYm5hbWV9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXgnCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCcKICAgZmluaXNoX2NtZHM9J1BBVEg9IlwkUEFUSDovdXNyL2V0YyIgbGRjb25maWcgJGxpYmRpcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBuZWVkX2xpYl9wcmVmaXg9bm8KICAgZmkKICAgbmVlZF92ZXJzaW9uPXllcwpAQCAtMjgxMyw4ICszMDIzLDggQEAKIAogc3lzdjQgfCBzeXN2NC4zKikKICAgdmVyc2lvbl90eXBlPWxpbnV4ICMgY29ycmVjdCB0byBnbnUvbGludXggZHVyaW5nIHRoZSBuZXh0IGJpZyByZWZhY3RvcgotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBjYXNlICRob3N0X3ZlbmRvciBpbgogICAgIHNuaSkKQEAgLTI4MzUsMjQgKzMwNDUsMjQgQEAKICAgOzsKIAogc3lzdjQqTVAqKQotICBpZiB0ZXN0IC1kIC91c3IvbmVjIDt0aGVuCisgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KICAgICB2ZXJzaW9uX3R5cGU9bGludXggIyBjb3JyZWN0IHRvIGdudS9saW51eCBkdXJpbmcgdGhlIG5leHQgYmlnIHJlZmFjdG9yCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSR7c2hhcmVkX2V4dH0uJHZlcnN1ZmZpeCAkbGlibmFtZSR7c2hhcmVkX2V4dH0uJG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgICBzb25hbWVfc3BlYz0nJGxpYm5hbWUke3NoYXJlZF9leHR9LiRtYWpvcicKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNoYXJlZF9leHQuJHZlcnN1ZmZpeCAkbGlibmFtZSRzaGFyZWRfZXh0LiRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JworICAgIHNvbmFtZV9zcGVjPSckbGlibmFtZSRzaGFyZWRfZXh0LiRtYWpvcicKICAgICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBmaQogICA7OwogCiBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKLSAgdmVyc2lvbl90eXBlPWZyZWVic2QtZWxmCisgIHZlcnNpb25fdHlwZT1zY28KICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9ICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKLSAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCAkbGlibmFtZSRzaGFyZWRfZXh0JworICBzb25hbWVfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JG1ham9yJwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCiAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPScvdXNyL2xvY2FsL2xpYiAvdXNyL2dudS9saWIgL3Vzci9jY3MvbGliIC91c3IvbGliIC9saWInCiAgIGVsc2UKICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Jy91c3IvY2NzL2xpYiAvdXNyL2xpYicKQEAgLTI4NzAsNyArMzA4MCw3IEBACiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKICAgbmVlZF9saWJfcHJlZml4PW5vCiAgIG5lZWRfdmVyc2lvbj1ubwotICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSR2ZXJzdWZmaXggJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yICRsaWJuYW1lJHtzaGFyZWRfZXh0fScKKyAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkdmVyc3VmZml4ICRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvciAkbGlibmFtZSRzaGFyZWRfZXh0JwogICBzaGxpYnBhdGhfdmFyPUxEX0xJQlJBUllfUEFUSAogICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9bm8KICAgaGFyZGNvZGVfaW50b19saWJzPXllcwpAQCAtMjg3OCw4ICszMDg4LDggQEAKIAogdXRzNCopCiAgIHZlcnNpb25fdHlwZT1saW51eCAjIGNvcnJlY3QgdG8gZ251L2xpbnV4IGR1cmluZyB0aGUgbmV4dCBiaWcgcmVmYWN0b3IKLSAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kdmVyc3VmZml4ICR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvciAkbGlibmFtZSR7c2hhcmVkX2V4dH0nCi0gIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkcmVsZWFzZSRzaGFyZWRfZXh0JHZlcnN1ZmZpeCAkbGlibmFtZSRyZWxlYXNlJHNoYXJlZF9leHQkbWFqb3IgJGxpYm5hbWUkc2hhcmVkX2V4dCcKKyAgc29uYW1lX3NwZWM9JyRsaWJuYW1lJHJlbGVhc2Ukc2hhcmVkX2V4dCRtYWpvcicKICAgc2hsaWJwYXRoX3Zhcj1MRF9MSUJSQVJZX1BBVEgKICAgOzsKIApAQCAtMjg4OCwyMCArMzA5OCwzMCBAQAogICA7OwogZXNhYwogQUNfTVNHX1JFU1VMVChbJGR5bmFtaWNfbGlua2VyXSkKLXRlc3QgIiRkeW5hbWljX2xpbmtlciIgPSBubyAmJiBjYW5fYnVpbGRfc2hhcmVkPW5vCit0ZXN0IG5vID0gIiRkeW5hbWljX2xpbmtlciIgJiYgY2FuX2J1aWxkX3NoYXJlZD1ubwogCiB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0iUEFUSCAkc2hsaWJwYXRoX3ZhciAkcnVucGF0aF92YXIiCi1pZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgoraWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KICAgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9IiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayBHQ0NfRVhFQ19QUkVGSVggQ09NUElMRVJfUEFUSCBMSUJSQVJZX1BBVEgiCiBmaQogCi1pZiB0ZXN0ICIke2x0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYytzZXR9IiA9IHNldDsgdGhlbgotICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRsdF9jdl9zeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiCitpZiB0ZXN0IHNldCA9ICIke2x0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYytzZXR9IjsgdGhlbgorICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9JGx0X2N2X3N5c19saWJfc2VhcmNoX3BhdGhfc3BlYwogZmkKLWlmIHRlc3QgIiR7bHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMrc2V0fSIgPSBzZXQ7IHRoZW4KLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiRsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyIKKworaWYgdGVzdCBzZXQgPSAiJHtsdF9jdl9zeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYytzZXR9IjsgdGhlbgorICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0kbHRfY3Zfc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWMKIGZpCiAKKyMgcmVtZW1iZXIgdW5hdWdtZW50ZWQgc3lzX2xpYl9kbHNlYXJjaF9wYXRoIGNvbnRlbnQgZm9yIGxpYnRvb2wgc2NyaXB0IGRlY2xzLi4uCitjb25maWd1cmVfdGltZV9kbHNlYXJjaF9wYXRoPSRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYworCisjIC4uLiBidXQgaXQgbmVlZHMgTFRfU1lTX0xJQlJBUllfUEFUSCBtdW5naW5nIGZvciBvdGhlciBjb25maWd1cmUtdGltZSBjb2RlCitmdW5jX211bmdlX3BhdGhfbGlzdCBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYyAiJExUX1NZU19MSUJSQVJZX1BBVEgiCisKKyMgdG8gYmUgdXNlZCBhcyBkZWZhdWx0IExUX1NZU19MSUJSQVJZX1BBVEggdmFsdWUgaW4gZ2VuZXJhdGVkIGxpYnRvb2wKK2NvbmZpZ3VyZV90aW1lX2x0X3N5c19saWJyYXJ5X3BhdGg9JExUX1NZU19MSUJSQVJZX1BBVEgKKwogX0xUX0RFQ0woW10sIFt2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGlua10sIFsxXSwKICAgICBbVmFyaWFibGVzIHdob3NlIHZhbHVlcyBzaG91bGQgYmUgc2F2ZWQgaW4gbGlidG9vbCB3cmFwcGVyIHNjcmlwdHMgYW5kCiAgICAgcmVzdG9yZWQgYXQgbGluayB0aW1lXSkKQEAgLTI5MzQsMzkgKzMxNTQsNDEgQEAKICAgICBbV2hldGhlciB3ZSBzaG91bGQgaGFyZGNvZGUgbGlicmFyeSBwYXRocyBpbnRvIGxpYnJhcmllc10pCiBfTFRfREVDTChbXSwgW3N5c19saWJfc2VhcmNoX3BhdGhfc3BlY10sIFsyXSwKICAgICBbQ29tcGlsZS10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzXSkKLV9MVF9ERUNMKFtdLCBbc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNdLCBbMl0sCi0gICAgW1J1bi10aW1lIHN5c3RlbSBzZWFyY2ggcGF0aCBmb3IgbGlicmFyaWVzXSkKK19MVF9ERUNMKFtzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY10sIFtjb25maWd1cmVfdGltZV9kbHNlYXJjaF9wYXRoXSwgWzJdLAorICAgIFtEZXRlY3RlZCBydW4tdGltZSBzeXN0ZW0gc2VhcmNoIHBhdGggZm9yIGxpYnJhcmllc10pCitfTFRfREVDTChbXSwgW2NvbmZpZ3VyZV90aW1lX2x0X3N5c19saWJyYXJ5X3BhdGhdLCBbMl0sCisgICAgW0V4cGxpY2l0IExUX1NZU19MSUJSQVJZX1BBVEggc2V0IGR1cmluZyAuL2NvbmZpZ3VyZSB0aW1lXSkKIF0pIyBfTFRfU1lTX0RZTkFNSUNfTElOS0VSCiAKIAogIyBfTFRfUEFUSF9UT09MX1BSRUZJWChUT09MKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBmaW5kIGEgZmlsZSBwcm9ncmFtIHdoaWNoIGNhbiByZWNvZ25pemUgc2hhcmVkIGxpYnJhcnkKKyMgZmluZCBhIGZpbGUgcHJvZ3JhbSB0aGF0IGNhbiByZWNvZ25pemUgc2hhcmVkIGxpYnJhcnkKIEFDX0RFRlVOKFtfTFRfUEFUSF9UT09MX1BSRUZJWF0sCiBbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAogQUNfTVNHX0NIRUNLSU5HKFtmb3IgJDFdKQogQUNfQ0FDSEVfVkFMKGx0X2N2X3BhdGhfTUFHSUNfQ01ELAogW2Nhc2UgJE1BR0lDX0NNRCBpbgogW1tcXC8qXSB8ICA/OltcXC9dKl0pCi0gIGx0X2N2X3BhdGhfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9JE1BR0lDX0NNRCAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KICAgOzsKICopCi0gIGx0X3NhdmVfTUFHSUNfQ01EPSIkTUFHSUNfQ01EIgotICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKKyAgbHRfc2F2ZV9NQUdJQ19DTUQ9JE1BR0lDX0NNRAorICBsdF9zYXZlX2lmcz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiBkbmwgJGFjX2R1bW15IGZvcmNlcyBzcGxpdHRpbmcgb24gY29uc3RhbnQgdXNlci1zdXBwbGllZCBwYXRocy4KIGRubCBQT1NJWC4yIHdvcmQgc3BsaXR0aW5nIGlzIGRvbmUgb25seSBvbiB0aGUgb3V0cHV0IG9mIHdvcmQgZXhwYW5zaW9ucywKIGRubCBub3QgZXZlcnkgd29yZC4gIFRoaXMgY2xvc2VzIGEgbG9uZ3N0YW5kaW5nIHNoIHNlY3VyaXR5IGhvbGUuCiAgIGFjX2R1bW15PSJtNF9pZihbJDJdLCAsICRQQVRILCBbJDJdKSIKICAgZm9yIGFjX2RpciBpbiAkYWNfZHVtbXk7IGRvCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgaWYgdGVzdCAtZiAkYWNfZGlyLyQxOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX01BR0lDX0NNRD0iJGFjX2Rpci8kMSIKKyAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyQxIjsgdGhlbgorICAgICAgbHRfY3ZfcGF0aF9NQUdJQ19DTUQ9JGFjX2Rpci8iJDEiCiAgICAgICBpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY190ZXN0X2ZpbGUiOyB0aGVuCiAJY2FzZSAkZGVwbGlic19jaGVja19tZXRob2QgaW4KIAkiZmlsZV9tYWdpYyAiKikKIAkgIGZpbGVfbWFnaWNfcmVnZXg9YGV4cHIgIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgOiAiZmlsZV9tYWdpYyBcKC4qXCkiYAotCSAgTUFHSUNfQ01EPSIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiCisJICBNQUdJQ19DTUQ9JGx0X2N2X3BhdGhfTUFHSUNfQ01ECiAJICBpZiBldmFsICRmaWxlX21hZ2ljX2NtZCBcJGZpbGVfbWFnaWNfdGVzdF9maWxlIDI+IC9kZXYvbnVsbCB8CiAJICAgICRFR1JFUCAiJGZpbGVfbWFnaWNfcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCiAJICAgIDoKQEAgLTI5ODksMTEgKzMyMTEsMTEgQEAKICAgICAgIGJyZWFrCiAgICAgZmkKICAgZG9uZQotICBJRlM9IiRsdF9zYXZlX2lmcyIKLSAgTUFHSUNfQ01EPSIkbHRfc2F2ZV9NQUdJQ19DTUQiCisgIElGUz0kbHRfc2F2ZV9pZnMKKyAgTUFHSUNfQ01EPSRsdF9zYXZlX01BR0lDX0NNRAogICA7OwogZXNhY10pCi1NQUdJQ19DTUQ9IiRsdF9jdl9wYXRoX01BR0lDX0NNRCIKK01BR0lDX0NNRD0kbHRfY3ZfcGF0aF9NQUdJQ19DTUQKIGlmIHRlc3QgLW4gIiRNQUdJQ19DTUQiOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoJE1BR0lDX0NNRCkKIGVsc2UKQEAgLTMwMTEsNyArMzIzMyw3IEBACiAKICMgX0xUX1BBVEhfTUFHSUMKICMgLS0tLS0tLS0tLS0tLS0KLSMgZmluZCBhIGZpbGUgcHJvZ3JhbSB3aGljaCBjYW4gcmVjb2duaXplIGEgc2hhcmVkIGxpYnJhcnkKKyMgZmluZCBhIGZpbGUgcHJvZ3JhbSB0aGF0IGNhbiByZWNvZ25pemUgYSBzaGFyZWQgbGlicmFyeQogbTRfZGVmdW4oW19MVF9QQVRIX01BR0lDXSwKIFtfTFRfUEFUSF9UT09MX1BSRUZJWCgke2FjX3Rvb2xfcHJlZml4fWZpbGUsIC91c3IvYmluJFBBVEhfU0VQQVJBVE9SJFBBVEgpCiBpZiB0ZXN0IC16ICIkbHRfY3ZfcGF0aF9NQUdJQ19DTUQiOyB0aGVuCkBAIC0zMDM4LDE2ICszMjYwLDE2IEBACiBBQ19BUkdfV0lUSChbZ251LWxkXSwKICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1nbnUtbGRdLAogCVthc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgQDw6QGRlZmF1bHQ9bm9AOj5AXSldLAotICAgIFt0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXNdLAorICAgIFt0ZXN0IG5vID0gIiR3aXRodmFsIiB8fCB3aXRoX2dudV9sZD15ZXNdLAogICAgIFt3aXRoX2dudV9sZD1ub10pZG5sCiAKIGFjX3Byb2c9bGQKLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgogICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgbGQgdXNlZCBieSAkQ0NdKQogICBjYXNlICRob3N0IGluCiAgICotKi1taW5ndyopCi0gICAgIyBnY2MgbGVhdmVzIGEgdHJhaWxpbmcgY2FycmlhZ2UgcmV0dXJuIHdoaWNoIHVwc2V0cyBtaW5ndworICAgICMgZ2NjIGxlYXZlcyBhIHRyYWlsaW5nIGNhcnJpYWdlIHJldHVybiwgd2hpY2ggdXBzZXRzIG1pbmd3CiAgICAgYWNfcHJvZz1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OwogICAqKQogICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKQEAgLTMwNjEsNyArMzI4Myw3IEBACiAgICAgICB3aGlsZSAkRUNITyAiJGFjX3Byb2ciIHwgJEdSRVAgIiRyZV9kaXJlbHQiID4gL2Rldi9udWxsIDI+JjE7IGRvCiAJYWNfcHJvZz1gJEVDSE8gJGFjX3Byb2d8ICRTRUQgInMlJHJlX2RpcmVsdCUvJSJgCiAgICAgICBkb25lCi0gICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJvZyIKKyAgICAgIHRlc3QgLXogIiRMRCIgJiYgTEQ9JGFjX3Byb2cKICAgICAgIDs7CiAgICIiKQogICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgpAQCAtMzA3MiwzNyArMzI5NCwzNyBAQAogICAgIHdpdGhfZ251X2xkPXVua25vd24KICAgICA7OwogICBlc2FjCi1lbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KK2VsaWYgdGVzdCB5ZXMgPSAiJHdpdGhfZ251X2xkIjsgdGhlbgogICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBHTlUgbGRdKQogZWxzZQogICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBub24tR05VIGxkXSkKIGZpCiBBQ19DQUNIRV9WQUwobHRfY3ZfcGF0aF9MRCwKIFtpZiB0ZXN0IC16ICIkTEQiOyB0aGVuCi0gIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICBsdF9zYXZlX2lmcz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCiAgIGZvciBhY19kaXIgaW4gJFBBVEg7IGRvCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCiAgICAgaWYgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyIgfHwgdGVzdCAtZiAiJGFjX2Rpci8kYWNfcHJvZyRhY19leGVleHQiOyB0aGVuCi0gICAgICBsdF9jdl9wYXRoX0xEPSIkYWNfZGlyLyRhY19wcm9nIgorICAgICAgbHRfY3ZfcGF0aF9MRD0kYWNfZGlyLyRhY19wcm9nCiAgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUgcHJvZ3JhbSBpcyBHTlUgbGQuICBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24sCiAgICAgICAjIGJ1dCBhcHBhcmVudGx5IHNvbWUgdmFyaWFudHMgb2YgR05VIGxkIG9ubHkgYWNjZXB0IC12LgogICAgICAgIyBCcmVhayBvbmx5IGlmIGl0IHdhcyB0aGUgR05VL25vbi1HTlUgbGQgdGhhdCB3ZSBwcmVmZXIuCiAgICAgICBjYXNlIGAiJGx0X2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KICAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQotCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJlYWsKKwl0ZXN0IG5vICE9ICIkd2l0aF9nbnVfbGQiICYmIGJyZWFrCiAJOzsKICAgICAgICopCi0JdGVzdCAiJHdpdGhfZ251X2xkIiAhPSB5ZXMgJiYgYnJlYWsKKwl0ZXN0IHllcyAhPSAiJHdpdGhfZ251X2xkIiAmJiBicmVhawogCTs7CiAgICAgICBlc2FjCiAgICAgZmkKICAgZG9uZQotICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgSUZTPSRsdF9zYXZlX2lmcwogZWxzZQotICBsdF9jdl9wYXRoX0xEPSIkTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICBsdF9jdl9wYXRoX0xEPSRMRCAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KIGZpXSkKLUxEPSIkbHRfY3ZfcGF0aF9MRCIKK0xEPSRsdF9jdl9wYXRoX0xECiBpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCiAgIEFDX01TR19SRVNVTFQoJExEKQogZWxzZQpAQCAtMzE1NiwxMyArMzM3OCwxMyBAQAogcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogY2FzZSAkaG9zdF9vcyBpbgogICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgIT0gIiRHQ0MiOyB0aGVuCiAgICAgICByZWxvYWRfY21kcz1mYWxzZQogICAgIGZpCiAgICAgOzsKICAgZGFyd2luKikKLSAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAkd2wtciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwogICAgIGVsc2UKICAgICAgIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKICAgICBmaQpAQCAtMzE3Myw2ICszMzk1LDQzIEBACiBdKSMgX0xUX0NNRF9SRUxPQUQKIAogCisjIF9MVF9QQVRIX0RECisjIC0tLS0tLS0tLS0tCisjIGZpbmQgYSB3b3JraW5nIGRkCittNF9kZWZ1bihbX0xUX1BBVEhfRERdLAorW0FDX0NBQ0hFX0NIRUNLKFtmb3IgYSB3b3JraW5nIGRkXSwgW2FjX2N2X3BhdGhfbHRfRERdLAorW3ByaW50ZiAwMTIzNDU2Nzg5YWJjZGVmMDEyMzQ1Njc4OWFiY2RlZiA+Y29uZnRlc3QuaQorY2F0IGNvbmZ0ZXN0LmkgY29uZnRlc3QuaSA+Y29uZnRlc3QyLmkKKzogJHtsdF9ERDo9JEREfQorQUNfUEFUSF9QUk9HU19GRUFUVVJFX0NIRUNLKFtsdF9ERF0sIFtkZF0sCitbaWYgIiRhY19wYXRoX2x0X0REIiBicz0zMiBjb3VudD0xIDxjb25mdGVzdDIuaSA+Y29uZnRlc3Qub3V0IDI+L2Rldi9udWxsOyB0aGVuCisgIGNtcCAtcyBjb25mdGVzdC5pIGNvbmZ0ZXN0Lm91dCBcCisgICYmIGFjX2N2X3BhdGhfbHRfREQ9IiRhY19wYXRoX2x0X0REIiBhY19wYXRoX2x0X0REX2ZvdW5kPToKK2ZpXSkKK3JtIC1mIGNvbmZ0ZXN0LmkgY29uZnRlc3QyLmkgY29uZnRlc3Qub3V0XSkKK10pIyBfTFRfUEFUSF9ERAorCisKKyMgX0xUX0NNRF9UUlVOQ0FURQorIyAtLS0tLS0tLS0tLS0tLS0tCisjIGZpbmQgY29tbWFuZCB0byB0cnVuY2F0ZSBhIGJpbmFyeSBwaXBlCittNF9kZWZ1bihbX0xUX0NNRF9UUlVOQ0FURV0sCitbbTRfcmVxdWlyZShbX0xUX1BBVEhfRERdKQorQUNfQ0FDSEVfQ0hFQ0soW2hvdyB0byB0cnVuY2F0ZSBiaW5hcnkgcGlwZXNdLCBbbHRfY3ZfdHJ1bmNhdGVfYmluXSwKK1twcmludGYgMDEyMzQ1Njc4OWFiY2RlZjAxMjM0NTY3ODlhYmNkZWYgPmNvbmZ0ZXN0LmkKK2NhdCBjb25mdGVzdC5pIGNvbmZ0ZXN0LmkgPmNvbmZ0ZXN0Mi5pCitsdF9jdl90cnVuY2F0ZV9iaW49CitpZiAiJGFjX2N2X3BhdGhfbHRfREQiIGJzPTMyIGNvdW50PTEgPGNvbmZ0ZXN0Mi5pID5jb25mdGVzdC5vdXQgMj4vZGV2L251bGw7IHRoZW4KKyAgY21wIC1zIGNvbmZ0ZXN0LmkgY29uZnRlc3Qub3V0IFwKKyAgJiYgbHRfY3ZfdHJ1bmNhdGVfYmluPSIkYWNfY3ZfcGF0aF9sdF9ERCBicz00MDk2IGNvdW50PTEiCitmaQorcm0gLWYgY29uZnRlc3QuaSBjb25mdGVzdDIuaSBjb25mdGVzdC5vdXQKK3Rlc3QgLXogIiRsdF9jdl90cnVuY2F0ZV9iaW4iICYmIGx0X2N2X3RydW5jYXRlX2Jpbj0iJFNFRCAtZSA0cSJdKQorX0xUX0RFQ0woW2x0X3RydW5jYXRlX2Jpbl0sIFtsdF9jdl90cnVuY2F0ZV9iaW5dLCBbMV0sCisgIFtDb21tYW5kIHRvIHRydW5jYXRlIGEgYmluYXJ5IHBpcGVdKQorXSkjIF9MVF9DTURfVFJVTkNBVEUKKworCiAjIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBob3cgdG8gY2hlY2sgZm9yIGxpYnJhcnkgZGVwZW5kZW5jaWVzCkBAIC0zMTg4LDEzICszNDQ3LDEzIEBACiAjIE5lZWQgdG8gc2V0IHRoZSBwcmVjZWRpbmcgdmFyaWFibGUgb24gYWxsIHBsYXRmb3JtcyB0aGF0IHN1cHBvcnQKICMgaW50ZXJsaWJyYXJ5IGRlcGVuZGVuY2llcy4KICMgJ25vbmUnIC0tIGRlcGVuZGVuY2llcyBub3Qgc3VwcG9ydGVkLgotIyBgdW5rbm93bicgLS0gc2FtZSBhcyBub25lLCBidXQgZG9jdW1lbnRzIHRoYXQgd2UgcmVhbGx5IGRvbid0IGtub3cuCisjICd1bmtub3duJyAtLSBzYW1lIGFzIG5vbmUsIGJ1dCBkb2N1bWVudHMgdGhhdCB3ZSByZWFsbHkgZG9uJ3Qga25vdy4KICMgJ3Bhc3NfYWxsJyAtLSBhbGwgZGVwZW5kZW5jaWVzIHBhc3NlZCB3aXRoIG5vIGNoZWNrcy4KICMgJ3Rlc3RfY29tcGlsZScgLS0gY2hlY2sgYnkgbWFraW5nIHRlc3QgcHJvZ3JhbS4KICMgJ2ZpbGVfbWFnaWMgW1tyZWdleF1dJyAtLSBjaGVjayBieSBsb29raW5nIGZvciBmaWxlcyBpbiBsaWJyYXJ5IHBhdGgKLSMgd2hpY2ggcmVzcG9uZHMgdG8gdGhlICRmaWxlX21hZ2ljX2NtZCB3aXRoIGEgZ2l2ZW4gZXh0ZW5kZWQgcmVnZXguCi0jIElmIHlvdSBoYXZlIGBmaWxlJyBvciBlcXVpdmFsZW50IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3UncmUgbm90IHN1cmUKLSMgd2hldGhlciBgcGFzc19hbGwnIHdpbGwgKmFsd2F5cyogd29yaywgeW91IHByb2JhYmx5IHdhbnQgdGhpcyBvbmUuCisjIHRoYXQgcmVzcG9uZHMgdG8gdGhlICRmaWxlX21hZ2ljX2NtZCB3aXRoIGEgZ2l2ZW4gZXh0ZW5kZWQgcmVnZXguCisjIElmIHlvdSBoYXZlICdmaWxlJyBvciBlcXVpdmFsZW50IG9uIHlvdXIgc3lzdGVtIGFuZCB5b3UncmUgbm90IHN1cmUKKyMgd2hldGhlciAncGFzc19hbGwnIHdpbGwgKmFsd2F5cyogd29yaywgeW91IHByb2JhYmx5IHdhbnQgdGhpcyBvbmUuCiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGFpeFtbNC05XV0qKQpAQCAtMzIyMSw4ICszNDgwLDcgQEAKICAgIyBCYXNlIE1TWVMvTWluR1cgZG8gbm90IHByb3ZpZGUgdGhlICdmaWxlJyBjb21tYW5kIG5lZWRlZCBieQogICAjIGZ1bmNfd2luMzJfbGliaWQgc2hlbGwgZnVuY3Rpb24sIHNvIHVzZSBhIHdlYWtlciB0ZXN0IGJhc2VkIG9uICdvYmpkdW1wJywKICAgIyB1bmxlc3Mgd2UgZmluZCAnZmlsZScsIGZvciBleGFtcGxlIGJlY2F1c2Ugd2UgYXJlIGNyb3NzLWNvbXBpbGluZy4KLSAgIyBmdW5jX3dpbjMyX2xpYmlkIGFzc3VtZXMgQlNEIG5tLCBzbyBkaXNhbGxvdyBpdCBpZiB1c2luZyBNUyBkdW1wYmluLgotICBpZiAoIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIkJTRCBubSIgJiYgZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisgIGlmICggZmlsZSAvICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKICAgZWxzZQpAQCAtMzMxOCw4ICszNTc2LDggQEAKICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKICAgOzsKIAotb3BlbmJzZCopCi0gIGlmIHRlc3QgLXogImBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KK29wZW5ic2QqIHwgYml0cmlnKikKKyAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb1wuW1swLTldXStcLltbMC05XV0rfFwuc298X3BpY1wuYSkkJwogICBlbHNlCiAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYltbXi9dXSsoXC5zb1wuW1swLTldXStcLltbMC05XV0rfF9waWNcLmEpJCcKQEAgLTMzNzIsNiArMzYzMCw5IEBACiB0cGYqKQogICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAogICA7Oworb3MyKikKKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKKyAgOzsKIGVzYWMKIF0pCiAKQEAgLTM0MTIsMzMgKzM2NzMsMzggQEAKIEFDX0NBQ0hFX0NIRUNLKFtmb3IgQlNELSBvciBNUy1jb21wYXRpYmxlIG5hbWUgbGlzdGVyIChubSldLCBsdF9jdl9wYXRoX05NLAogW2lmIHRlc3QgLW4gIiROTSI7IHRoZW4KICAgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0gIGx0X2N2X3BhdGhfTk09IiROTSIKKyAgbHRfY3ZfcGF0aF9OTT0kTk0KIGVsc2UKLSAgbHRfbm1fdG9fY2hlY2s9IiR7YWNfdG9vbF9wcmVmaXh9bm0iCisgIGx0X25tX3RvX2NoZWNrPSR7YWNfdG9vbF9wcmVmaXh9bm0KICAgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IiAmJiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgogICAgIGx0X25tX3RvX2NoZWNrPSIkbHRfbm1fdG9fY2hlY2sgbm0iCiAgIGZpCiAgIGZvciBsdF90bXBfbm0gaW4gJGx0X25tX3RvX2NoZWNrOyBkbwotICAgIGx0X3NhdmVfaWZzPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICAgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKICAgICBmb3IgYWNfZGlyIGluICRQQVRIIC91c3IvY2NzL2Jpbi9lbGYgL3Vzci9jY3MvYmluIC91c3IvdWNiIC9iaW47IGRvCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCi0gICAgICB0bXBfbm09IiRhY19kaXIvJGx0X3RtcF9ubSIKLSAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IiA7IHRoZW4KKyAgICAgIHRtcF9ubT0kYWNfZGlyLyRsdF90bXBfbm0KKyAgICAgIGlmIHRlc3QgLWYgIiR0bXBfbm0iIHx8IHRlc3QgLWYgIiR0bXBfbm0kYWNfZXhlZXh0IjsgdGhlbgogCSMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBubSBhY2NlcHRzIGEgQlNELWNvbXBhdCBmbGFnLgotCSMgQWRkaW5nIHRoZSBgc2VkIDFxJyBwcmV2ZW50cyBmYWxzZSBwb3NpdGl2ZXMgb24gSFAtVVgsIHdoaWNoIHNheXM6CisJIyBBZGRpbmcgdGhlICdzZWQgMXEnIHByZXZlbnRzIGZhbHNlIHBvc2l0aXZlcyBvbiBIUC1VWCwgd2hpY2ggc2F5czoKIAkjICAgbm06IHVua25vd24gb3B0aW9uICJCIiBpZ25vcmVkCiAJIyBUcnU2NCdzIG5tIGNvbXBsYWlucyB0aGF0IC9kZXYvbnVsbCBpcyBhbiBpbnZhbGlkIG9iamVjdCBmaWxlCi0JY2FzZSBgIiR0bXBfbm0iIC1CIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCi0JKi9kZXYvbnVsbCogfCAqJ0ludmFsaWQgZmlsZSBvciBvYmplY3QgdHlwZScqKQorCSMgTVNZUyBjb252ZXJ0cyAvZGV2L251bGwgdG8gTlVMLCBNaW5HVyBubSB0cmVhdHMgTlVMIGFzIGVtcHR5CisJY2FzZSAkYnVpbGRfb3MgaW4KKwltaW5ndyopIGx0X2JhZF9maWxlPWNvbmZ0ZXN0Lm5tL25vZmlsZSA7OworCSopIGx0X2JhZF9maWxlPS9kZXYvbnVsbCA7OworCWVzYWMKKwljYXNlIGAiJHRtcF9ubSIgLUIgJGx0X2JhZF9maWxlIDI+JjEgfCBzZWQgJzFxJ2AgaW4KKwkqJGx0X2JhZF9maWxlKiB8IConSW52YWxpZCBmaWxlIG9yIG9iamVjdCB0eXBlJyopCiAJICBsdF9jdl9wYXRoX05NPSIkdG1wX25tIC1CIgotCSAgYnJlYWsKKwkgIGJyZWFrIDIKIAkgIDs7CiAJKikKIAkgIGNhc2UgYCIkdG1wX25tIiAtcCAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgogCSAgKi9kZXYvbnVsbCopCiAJICAgIGx0X2N2X3BhdGhfTk09IiR0bXBfbm0gLXAiCi0JICAgIGJyZWFrCisJICAgIGJyZWFrIDIKIAkgICAgOzsKIAkgICopCiAJICAgIGx0X2N2X3BhdGhfTk09JHtsdF9jdl9wYXRoX05NPSIkdG1wX25tIn0gIyBrZWVwIHRoZSBmaXJzdCBtYXRjaCwgYnV0CkBAIC0zNDQ5LDIxICszNzE1LDIxIEBACiAJZXNhYwogICAgICAgZmkKICAgICBkb25lCi0gICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgSUZTPSRsdF9zYXZlX2lmcwogICBkb25lCiAgIDogJHtsdF9jdl9wYXRoX05NPW5vfQogZmldKQotaWYgdGVzdCAiJGx0X2N2X3BhdGhfTk0iICE9ICJubyI7IHRoZW4KLSAgTk09IiRsdF9jdl9wYXRoX05NIgoraWYgdGVzdCBubyAhPSAiJGx0X2N2X3BhdGhfTk0iOyB0aGVuCisgIE5NPSRsdF9jdl9wYXRoX05NCiBlbHNlCiAgICMgRGlkbid0IGZpbmQgYW55IEJTRCBjb21wYXRpYmxlIG5hbWUgbGlzdGVyLCBsb29rIGZvciBkdW1wYmluLgogICBpZiB0ZXN0IC1uICIkRFVNUEJJTiI7IHRoZW4gOgogICAgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgogICBlbHNlCiAgICAgQUNfQ0hFQ0tfVE9PTFMoRFVNUEJJTiwgW2R1bXBiaW4gImxpbmsgLWR1bXAiXSwgOikKLSAgICBjYXNlIGAkRFVNUEJJTiAtc3ltYm9scyAvZGV2L251bGwgMj4mMSB8IHNlZCAnMXEnYCBpbgorICAgIGNhc2UgYCREVU1QQklOIC1zeW1ib2xzIC1oZWFkZXJzIC9kZXYvbnVsbCAyPiYxIHwgc2VkICcxcSdgIGluCiAgICAgKkNPRkYqKQotICAgICAgRFVNUEJJTj0iJERVTVBCSU4gLXN5bWJvbHMiCisgICAgICBEVU1QQklOPSIkRFVNUEJJTiAtc3ltYm9scyAtaGVhZGVycyIKICAgICAgIDs7CiAgICAgKikKICAgICAgIERVTVBCSU49OgpAQCAtMzQ3MSw4ICszNzM3LDggQEAKICAgICBlc2FjCiAgIGZpCiAgIEFDX1NVQlNUKFtEVU1QQklOXSkKLSAgaWYgdGVzdCAiJERVTVBCSU4iICE9ICI6IjsgdGhlbgotICAgIE5NPSIkRFVNUEJJTiIKKyAgaWYgdGVzdCA6ICE9ICIkRFVNUEJJTiI7IHRoZW4KKyAgICBOTT0kRFVNUEJJTgogICBmaQogZmkKIHRlc3QgLXogIiROTSIgJiYgTk09bm0KQEAgLTM1MTgsOCArMzc4NCw4IEBACiAKIGNhc2UgJGhvc3Rfb3MgaW4KIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2g7CisgICMgZGVjaWRlIHdoaWNoIG9uZSB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCiAgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgogICAqLS1pZGVudGlmeS1zdHJpY3QqKQogICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgpAQCAtMzUzMSw3ICszNzk3LDcgQEAKICAgOzsKICopCiAgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCiAgIDs7CiBlc2FjCiBdKQpAQCAtMzU1OCwxMyArMzgyNCwyOCBAQAogICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKICAgZmkKICAgcm0gLWYgY29uZnRlc3QqXSkKLWlmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCitpZiB0ZXN0IHllcyAhPSAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCI7IHRoZW4KICAgTUFOSUZFU1RfVE9PTD06CiBmaQogX0xUX0RFQ0woW10sIFtNQU5JRkVTVF9UT09MXSwgWzFdLCBbTWFuaWZlc3QgdG9vbF0pZG5sCiBdKSMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAogCiAKKyMgX0xUX0RMTF9ERUZfUChbRklMRV0pCisjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUcnVlIGlmZiBGSUxFIGlzIGEgV2luZG93cyBETEwgJy5kZWYnIGZpbGUuCisjIEtlZXAgaW4gc3luYyB3aXRoIGZ1bmNfZGxsX2RlZl9wIGluIHRoZSBsaWJ0b29sIHNjcmlwdAorQUNfREVGVU4oW19MVF9ETExfREVGX1BdLAorW2RubAorICB0ZXN0IERFRiA9ICJgJFNFRCAtbiBkbmwKKyAgICAtZSAnXCcncy9eW1sJIF1dKi8vJ1wnJyBkbmwgU3RyaXAgbGVhZGluZyB3aGl0ZXNwYWNlCisgICAgLWUgJ1wnJy9eXCg7LipcKSokL2QnXCcnIGRubCAgICAgIERlbGV0ZSBlbXB0eSBsaW5lcyBhbmQgY29tbWVudHMKKyAgICAtZSAnXCcncy9eXChFWFBPUlRTXHxMSUJSQVJZXClcKFtbCSBdXS4qXCkqJC9ERUYvcCdcJycgZG5sCisgICAgLWUgcSBkbmwgICAgICAgICAgICAgICAgICAgICAgICAgIE9ubHkgY29uc2lkZXIgdGhlIGZpcnN0ICJyZWFsIiBsaW5lCisgICAgJDFgIiBkbmwKK10pIyBfTFRfRExMX0RFRl9QCisKKwogIyBMVF9MSUJfTQogIyAtLS0tLS0tLQogIyBjaGVjayBmb3IgbWF0aCBsaWJyYXJ5CkBAIC0zNTc2LDExICszODU3LDExIEBACiAgICMgVGhlc2Ugc3lzdGVtIGRvbid0IGhhdmUgbGlibSwgb3IgZG9uJ3QgbmVlZCBpdAogICA7OwogKi1uY3Itc3lzdjQuMyopCi0gIEFDX0NIRUNLX0xJQihtdywgX213dmFsaWRjaGVja2wsIExJQk09Ii1sbXciKQorICBBQ19DSEVDS19MSUIobXcsIF9td3ZhbGlkY2hlY2tsLCBMSUJNPS1sbXcpCiAgIEFDX0NIRUNLX0xJQihtLCBjb3MsIExJQk09IiRMSUJNIC1sbSIpCiAgIDs7CiAqKQotICBBQ19DSEVDS19MSUIobSwgY29zLCBMSUJNPSItbG0iKQorICBBQ19DSEVDS19MSUIobSwgY29zLCBMSUJNPS1sbSkKICAgOzsKIGVzYWMKIEFDX1NVQlNUKFtMSUJNXSkKQEAgLTM1OTksNyArMzg4MCw3IEBACiAKIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0KIAotaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCiAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCiAgIG52Y2MqKQogICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1YY29tcGlsZXIgLWZuby1idWlsdGluJyA7OwpAQCAtMzY1MSw3ICszOTMyLDcgQEAKICAgc3ltY29kZT0nW1tBQkNER0lTVFddXScKICAgOzsKIGhwdXgqKQotICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogICAgIHN5bWNvZGU9J1tbQUJDREVHUlNUXV0nCiAgIGZpCiAgIDs7CkBAIC0zNjg0LDE0ICszOTY1LDQ0IEBACiAgIHN5bWNvZGU9J1tbQUJDREdJUlNUV11dJyA7OwogZXNhYwogCitpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorICAjIEdldHMgbGlzdCBvZiBkYXRhIHN5bWJvbHMgdG8gaW1wb3J0LgorICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19pbXBvcnQ9InNlZCAtbiAtZSAncy9eSSAuKiBcKC4qXCkkL1wxL3AnIgorICAjIEFkanVzdCB0aGUgYmVsb3cgZ2xvYmFsIHN5bWJvbCB0cmFuc2Zvcm1zIHRvIGZpeHVwIGltcG9ydGVkIHZhcmlhYmxlcy4KKyAgbHRfY2RlY2xfaG9vaz0iIC1lICdzL15JIC4qIFwoLipcKSQvZXh0ZXJuIF9fZGVjbHNwZWMoZGxsaW1wb3J0KSBjaGFyIFwxOy9wJyIKKyAgbHRfY19uYW1lX2hvb2s9IiAtZSAncy9eSSAuKiBcKC4qXCkkLyAge1wiXDFcIiwgKHZvaWQgKikgMH0sL3AnIgorICBsdF9jX25hbWVfbGliX2hvb2s9IlwKKyAgLWUgJ3MvXkkgLiogXChsaWIuKlwpJC8gIHtcIlwxXCIsICh2b2lkICopIDB9LC9wJ1wKKyAgLWUgJ3MvXkkgLiogXCguKlwpJC8gIHtcImxpYlwxXCIsICh2b2lkICopIDB9LC9wJyIKK2Vsc2UKKyAgIyBEaXNhYmxlIGhvb2tzIGJ5IGRlZmF1bHQuCisgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2ltcG9ydD0KKyAgbHRfY2RlY2xfaG9vaz0KKyAgbHRfY19uYW1lX2hvb2s9CisgIGx0X2NfbmFtZV9saWJfaG9vaz0KK2ZpCisKICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIGEgcHJvcGVyIEMgZGVjbGFyYXRpb24uCiAjIFNvbWUgc3lzdGVtcyAoZXNwLiBvbiBpYTY0KSBsaW5rIGRhdGEgYW5kIGNvZGUgc3ltYm9scyBkaWZmZXJlbnRseSwKICMgc28gdXNlIHRoaXMgZ2VuZXJhbCBhcHByb2FjaC4KLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIlwKKyRsdF9jZGVjbF9ob29rXAorIiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCciXAorIiAtZSAncy9eJHN5bWNvZGUkc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCiAKICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW1teIF1dKlwpW1sgXV0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCitsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIlwKKyRsdF9jX25hbWVfaG9va1wKKyIgLWUgJ3MvXjogXCguKlwpIC4qJC8gIHtcIlwxXCIsICh2b2lkICopIDB9LC9wJyJcCisiIC1lICdzL14kc3ltY29kZSRzeW1jb2RlKiAuKiBcKC4qXCkkLyAge1wiXDFcIiwgKHZvaWQgKikgXCZcMX0sL3AnIgorCisjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSB3aXRoIGxpYiBwcmVmaXggYW5kCisjIHN5bWJvbCBhZGRyZXNzLgorbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIlwKKyRsdF9jX25hbWVfbGliX2hvb2tcCisiIC1lICdzL146IFwoLipcKSAuKiQvICB7XCJcMVwiLCAodm9pZCAqKSAwfSwvcCciXAorIiAtZSAncy9eJHN5bWNvZGUkc3ltY29kZSogLiogXChsaWIuKlwpJC8gIHtcIlwxXCIsICh2b2lkICopIFwmXDF9LC9wJyJcCisiIC1lICdzL14kc3ltY29kZSRzeW1jb2RlKiAuKiBcKC4qXCkkLyAge1wibGliXDFcIiwgKHZvaWQgKikgXCZcMX0sL3AnIgogCiAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KIG9wdF9jcj0KQEAgLTM3MDksMjEgKzQwMjAsMjQgQEAKIAogICAjIFdyaXRlIHRoZSByYXcgYW5kIEMgaWRlbnRpZmllcnMuCiAgIGlmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0gICAgIyBGYWtlIGl0IGZvciBkdW1wYmluIGFuZCBzYXkgVCBmb3IgYW55IG5vbi1zdGF0aWMgZnVuY3Rpb24KLSAgICAjIGFuZCBEIGZvciBhbnkgZ2xvYmFsIHZhcmlhYmxlLgorICAgICMgRmFrZSBpdCBmb3IgZHVtcGJpbiBhbmQgc2F5IFQgZm9yIGFueSBub24tc3RhdGljIGZ1bmN0aW9uLAorICAgICMgRCBmb3IgYW55IGdsb2JhbCB2YXJpYWJsZSBhbmQgSSBmb3IgYW55IGltcG9ydGVkIHZhcmlhYmxlLgogICAgICMgQWxzbyBmaW5kIEMrKyBhbmQgX19mYXN0Y2FsbCBzeW1ib2xzIGZyb20gTVNWQysrLAogICAgICMgd2hpY2ggc3RhcnQgd2l0aCBAIG9yID8uCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJEFXSyBbJyJcCiAiICAgICB7bGFzdF9zZWN0aW9uPXNlY3Rpb247IHNlY3Rpb249XCQgM307IlwKICIgICAgIC9eQ09GRiBTWU1CT0wgVEFCTEUve2ZvcihpIGluIGhpZGUpIGRlbGV0ZSBoaWRlW2ldfTsiXAogIiAgICAgL1NlY3Rpb24gbGVuZ3RoIC4qI3JlbG9jcy4qKHBpY2sgYW55KS97aGlkZVtsYXN0X3NlY3Rpb25dPTF9OyJcCisiICAgICAvXiAqU3ltYm9sIG5hbWUgKjogL3tzcGxpdChcJCAwLHNuLFwiOlwiKTsgc2k9c3Vic3RyKHNuWzJdLDIpfTsiXAorIiAgICAgL14gKlR5cGUgKjogY29kZS97cHJpbnQgXCJUXCIsc2ksc3Vic3RyKHNpLGxlbmd0aChwcmZ4KSl9OyJcCisiICAgICAvXiAqVHlwZSAqOiBkYXRhL3twcmludCBcIklcIixzaSxzdWJzdHIoc2ksbGVuZ3RoKHByZngpKX07IlwKICIgICAgIFwkIDAhfi9FeHRlcm5hbCAqXHwve25leHR9OyJcCiAiICAgICAvIDArIFVOREVGIC97bmV4dH07IC8gVU5ERUYgXChbXnxdXCkqKCkve25leHR9OyJcCiAiICAgICB7aWYoaGlkZVtzZWN0aW9uXSkgbmV4dH07IlwKLSIgICAgIHtmPTB9OyBcJCAwfi9cKFwpLipcfC97Zj0xfTsge3ByaW50ZiBmID8gXCJUIFwiIDogXCJEIFwifTsiXAotIiAgICAge3NwbGl0KFwkIDAsIGEsIC9cfHxcci8pOyBzcGxpdChhWzJdLCBzKX07IlwKLSIgICAgIHNbMV1+L15bQD9dL3twcmludCBzWzFdLCBzWzFdOyBuZXh0fTsiXAotIiAgICAgc1sxXX5wcmZ4IHtzcGxpdChzWzFdLHQsXCJAXCIpOyBwcmludCB0WzFdLCBzdWJzdHIodFsxXSxsZW5ndGgocHJmeCkpfSJcCisiICAgICB7Zj1cIkRcIn07IFwkIDB+L1woXCkuKlx8L3tmPVwiVFwifTsiXAorIiAgICAge3NwbGl0KFwkIDAsYSwvXHx8XHIvKTsgc3BsaXQoYVsyXSxzKX07IlwKKyIgICAgIHNbMV1+L15bQD9dL3twcmludCBmLHNbMV0sc1sxXTsgbmV4dH07IlwKKyIgICAgIHNbMV1+cHJmeCB7c3BsaXQoc1sxXSx0LFwiQFwiKTsgcHJpbnQgZix0WzFdLHN1YnN0cih0WzFdLGxlbmd0aChwcmZ4KSl9IlwKICIgICAgICcgcHJmeD1eJGFjX3N5bXByZnhdIgogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKltbCSBdXVwoJHN5bWNvZGUkc3ltY29kZSpcKVtbCSBdXVtbCSBdXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKQEAgLTM3NjMsMTEgKzQwNzcsMTEgQEAKIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CiAvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fQ1lHV0lOX18gfHwgZGVmaW5lZCBfV0lOMzJfV0NFCisvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNhbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKICAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KICMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAotI2VsaWYgZGVmaW5lZChfX29zZl9fKQorI2VsaWYgZGVmaW5lZCBfX29zZl9fCiAvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KICMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAogI2Vsc2UKQEAgLTM3OTMsNyArNDEwNyw3IEBACiB7CiAgIHsgIkBQUk9HUkFNQCIsICh2b2lkICopIDAgfSwKIF9MVF9FT0YKLQkgICRTRUQgInMvXiRzeW1jb2RlJHN5bWNvZGUqIFwoLipcKSBcKC4qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sLyIgPCAiJG5saXN0IiB8ICRHUkVQIC12IG1haW4gPj4gY29uZnRlc3QuJGFjX2V4dAorCSAgJFNFRCAicy9eJHN5bWNvZGUkc3ltY29kZSogLiogXCguKlwpJC8gIHtcIlwxXCIsICh2b2lkICopIFwmXDF9LC8iIDwgIiRubGlzdCIgfCAkR1JFUCAtdiBtYWluID4+IGNvbmZ0ZXN0LiRhY19leHQKIAkgIGNhdCA8PFxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKICAgezAsICh2b2lkICopIDB9CiB9OwpAQCAtMzgxMyw5ICs0MTI3LDkgQEAKIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAogCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKIAkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKwkgIExJQlM9Y29uZnRzdG0uJGFjX29iamV4dAogCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKLQkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKwkgIGlmIEFDX1RSWV9FVkFMKGFjX2xpbmspICYmIHRlc3QgLXMgY29uZnRlc3QkYWNfZXhlZXh0OyB0aGVuCiAJICAgIHBpcGVfd29ya3M9eWVzCiAJICBmaQogCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKQEAgLTM4MzYsNyArNDE1MCw3IEBACiAgIHJtIC1yZiBjb25mdGVzdCogY29uZnRzdCoKIAogICAjIERvIG5vdCB1c2UgdGhlIGdsb2JhbF9zeW1ib2xfcGlwZSB1bmxlc3MgaXQgd29ya3MuCi0gIGlmIHRlc3QgIiRwaXBlX3dvcmtzIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyA9ICIkcGlwZV93b3JrcyI7IHRoZW4KICAgICBicmVhawogICBlbHNlCiAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0KQEAgLTM4NjMsMTIgKzQxNzcsMTYgQEAKICAgICBbVGFrZSB0aGUgb3V0cHV0IG9mIG5tIGFuZCBwcm9kdWNlIGEgbGlzdGluZyBvZiByYXcgc3ltYm9scyBhbmQgQyBuYW1lc10pCiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFsxXSwKICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBwcm9wZXIgQyBkZWNsYXJhdGlvbl0pCitfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19pbXBvcnRdLCBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9faW1wb3J0XSwgWzFdLAorICAgIFtUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbnRvIGEgbGlzdCBvZiBzeW1ib2xzIHRvIG1hbnVhbGx5IHJlbG9jYXRlXSkKIF9MVF9ERUNMKFtnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzXSwKICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NdLCBbMV0sCiAgICAgW1RyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpcl0pCiBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwKICAgICBbbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sIFsxXSwKICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWRdKQorX0xUX0RFQ0woW25tX2ludGVyZmFjZV0sIFtsdF9jdl9ubV9pbnRlcmZhY2VdLCBbMV0sCisgICAgW1RoZSBuYW1lIGxpc3RlciBpbnRlcmZhY2VdKQogX0xUX0RFQ0woW10sIFtubV9maWxlX2xpc3Rfc3BlY10sIFsxXSwKICAgICBbU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciAkTk1dKQogXSkgIyBfTFRfQ01EX0dMT0JBTF9TWU1CT0xTCkBAIC0zODg0LDE3ICs0MjAyLDE4IEBACiAKIG00X2lmKFskMV0sIFtDWFhdLCBbCiAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCiAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgYWl4KikKICAgICAgICMgQWxsIEFJWCBjb2RlIGlzIFBJQy4KLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSMgQUlYIDUgbm93IHN1cHBvcnRzIElBNjQgcHJvY2Vzc29yCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKICAgICAgIGZpCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1mUElDJwogICAgICAgOzsKIAogICAgIGFtaWdhb3MqKQpAQCAtMzkwNSw4ICs0MjI0LDggQEAKICAgICAgICAgOzsKICAgICAgIG02OGspCiAgICAgICAgICAgICAjIEZJWE1FOiB3ZSBuZWVkIGF0IGxlYXN0IDY4MDIwIGNvZGUgdG8gYnVpbGQgc2hhcmVkIGxpYnJhcmllcywgYnV0Ci0gICAgICAgICAgICAjIGFkZGluZyB0aGUgYC1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKLSAgICAgICAgICAgICMgbGlrZSBgLW02ODA0MCcuCisgICAgICAgICAgICAjIGFkZGluZyB0aGUgJy1tNjgwMjAnIGZsYWcgdG8gR0NDIHByZXZlbnRzIGJ1aWxkaW5nIGFueXRoaW5nIGJldHRlciwKKyAgICAgICAgICAgICMgbGlrZSAnLW02ODA0MCcuCiAgICAgICAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1tNjgwMjAgLXJlc2lkZW50MzIgLW1hbHdheXMtcmVzdG9yZS1hNCcKICAgICAgICAgOzsKICAgICAgIGVzYWMKQEAgLTM5MjIsNiArNDI0MSwxMSBAQAogICAgICAgIyAoLS1kaXNhYmxlLWF1dG8taW1wb3J0KSBsaWJyYXJpZXMKICAgICAgIG00X2lmKFskMV0sIFtHQ0pdLCBbXSwKIAlbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKyAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIG9zMiopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSckd2wtc3RhdGljJworCTs7CisgICAgICBlc2FjCiAgICAgICA7OwogICAgIGRhcndpbiogfCByaGFwc29keSopCiAgICAgICAjIFBJQyBpcyB0aGUgZGVmYXVsdCBvbiB0aGlzIHBsYXRmb3JtCkBAIC0zOTcxLDcgKzQyOTUsNyBAQAogICAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgICAgIGFpeFtbNC05XV0qKQogCSMgQWxsIEFJWCBjb2RlIGlzIFBJQy4KLQlpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorCWlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJICAjIEFJWCA1IG5vdyBzdXBwb3J0cyBJQTY0IHByb2Nlc3NvcgogCSAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKIAllbHNlCkBAIC00MDEyLDE0ICs0MzM2LDE0IEBACiAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KIAkgIENDKikKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Jy1XbCwnCi0JICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHt3bH0tYSAke3dsfWFyY2hpdmUnCi0JICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR3bC1hICR7d2x9YXJjaGl2ZScKKwkgICAgaWYgdGVzdCBpYTY0ICE9ICIkaG9zdF9jcHUiOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPScrWicKIAkgICAgZmkKIAkgICAgOzsKIAkgIGFDQyopCiAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR7d2x9LWEgJHt3bH1hcmNoaXZlJworCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR3bC1hICR7d2x9YXJjaGl2ZScKIAkgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkgICAgaHBwYSo2NCp8aWE2NCopCiAJICAgICAgIyArWiB0aGUgZGVmYXVsdApAQCAtNDA1Niw3ICs0MzgwLDcgQEAKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZlBJQycKIAkgICAgOzsKIAkgIGVjcGMqICkKLQkgICAgIyBvbGQgSW50ZWwgQysrIGZvciB4ODZfNjQgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgorCSAgICAjIG9sZCBJbnRlbCBDKysgZm9yIHg4Nl82NCwgd2hpY2ggc3RpbGwgc3VwcG9ydGVkIC1LUElDLgogCSAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJwpAQCAtNDIwMSwxNyArNDUyNSwxOCBAQAogICBmaQogXSwKIFsKLSAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCcKICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1zdGF0aWMnCiAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXgqKQogICAgICAgIyBBbGwgQUlYIGNvZGUgaXMgUElDLgotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgZmkKKyAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCiAgICAgICA7OwogCiAgICAgYW1pZ2FvcyopCkBAIC00MjIyLDggKzQ1NDcsOCBAQAogICAgICAgICA7OwogICAgICAgbTY4aykKICAgICAgICAgICAgICMgRklYTUU6IHdlIG5lZWQgYXQgbGVhc3QgNjgwMjAgY29kZSB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzLCBidXQKLSAgICAgICAgICAgICMgYWRkaW5nIHRoZSBgLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAotICAgICAgICAgICAgIyBsaWtlIGAtbTY4MDQwJy4KKyAgICAgICAgICAgICMgYWRkaW5nIHRoZSAnLW02ODAyMCcgZmxhZyB0byBHQ0MgcHJldmVudHMgYnVpbGRpbmcgYW55dGhpbmcgYmV0dGVyLAorICAgICAgICAgICAgIyBsaWtlICctbTY4MDQwJy4KICAgICAgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLW02ODAyMCAtcmVzaWRlbnQzMiAtbWFsd2F5cy1yZXN0b3JlLWE0JwogICAgICAgICA7OwogICAgICAgZXNhYwpAQCAtNDI0MCw2ICs0NTY1LDExIEBACiAgICAgICAjICgtLWRpc2FibGUtYXV0by1pbXBvcnQpIGxpYnJhcmllcwogICAgICAgbTRfaWYoWyQxXSwgW0dDSl0sIFtdLAogCVtfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1ERExMX0VYUE9SVCddKQorICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgb3MyKikKKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR3bC1zdGF0aWMnCisJOzsKKyAgICAgIGVzYWMKICAgICAgIDs7CiAKICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQpAQCAtNDMxMCw3ICs0NjQwLDcgQEAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgYWl4KikKICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwotICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCiAJIyBBSVggNSBub3cgc3VwcG9ydHMgSUE2NCBwcm9jZXNzb3IKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgZWxzZQpAQCAtNDMxOCwxMSArNDY0OCwzMCBAQAogICAgICAgZmkKICAgICAgIDs7CiAKKyAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgICAgIyBQSUMgaXMgdGhlIGRlZmF1bHQgb24gdGhpcyBwbGF0Zm9ybQorICAgICAgIyBDb21tb24gc3ltYm9scyBub3QgYWxsb3dlZCBpbiBNSF9EWUxJQiBmaWxlcworICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctZm5vLWNvbW1vbicKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICBuYWdmb3IqKQorICAgICAgICAjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsLVdsLCwnCisgICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLVBJQycKKyAgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKICAgICBtaW5ndyogfCBjeWd3aW4qIHwgcHczMiogfCBvczIqIHwgY2VnY2MqKQogICAgICAgIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZwogICAgICAgIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KICAgICAgIG00X2lmKFskMV0sIFtHQ0pdLCBbXSwKIAlbX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctRERMTF9FWFBPUlQnXSkKKyAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgIG9zMiopCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSckd2wtc3RhdGljJworCTs7CisgICAgICBlc2FjCiAgICAgICA7OwogCiAgICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCkBAIC00MzM4LDcgKzQ2ODcsNyBAQAogCTs7CiAgICAgICBlc2FjCiAgICAgICAjIElzIHRoZXJlIGEgYmV0dGVyIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIHRoYXQgd29ya3Mgd2l0aCB0aGUgYnVuZGxlZCBDQz8KLSAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nJHt3bH0tYSAke3dsfWFyY2hpdmUnCisgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9JyR3bC1hICR7d2x9YXJjaGl2ZScKICAgICAgIDs7CiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQpAQCAtNDM0OSw3ICs0Njk4LDcgQEAKIAogICAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSB8IGdudSopCiAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgIyBvbGQgSW50ZWwgZm9yIHg4Nl82NCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCisgICAgICAjIG9sZCBJbnRlbCBmb3IgeDg2XzY0LCB3aGljaCBzdGlsbCBzdXBwb3J0ZWQgLUtQSUMuCiAgICAgICBlY2MqKQogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJwogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCkBAIC00Mzc0LDYgKzQ3MjMsMTIgQEAKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1QSUMnCiAJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKIAk7OworICAgICAgdGNjKikKKwkjIEZhYnJpY2UgQmVsbGFyZCBldCBhbCdzIFRpbnkgQyBDb21waWxlcgorCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctV2wsJworCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLWZQSUMnCisJX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctc3RhdGljJworCTs7CiAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCiAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCiAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKQEAgLTQ0NzEsNyArNDgyNiw3IEBACiAgICAgICA7OwogCiAgICAgc3lzdjQqTVAqKQotICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYyA7dGhlbgorICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgogCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtjb25mb3JtX3BpYycKIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfc3RhdGljLCAkMSk9Jy1Cc3RhdGljJwogICAgICAgZmkKQEAgLTQ1MDAsNyArNDg1NSw3IEBACiAgIGZpCiBdKQogY2FzZSAkaG9zdF9vcyBpbgotICAjIEZvciBwbGF0Zm9ybXMgd2hpY2ggZG8gbm90IHN1cHBvcnQgUElDLCAtRFBJQyBpcyBtZWFuaW5nbGVzczoKKyAgIyBGb3IgcGxhdGZvcm1zIHRoYXQgZG8gbm90IHN1cHBvcnQgUElDLCAtRFBJQyBpcyBtZWFuaW5nbGVzczoKICAgKmRqZ3BwKikKICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9CiAgICAgOzsKQEAgLTQ1NjYsMTcgKzQ5MjEsMjEgQEAKICAgY2FzZSAkaG9zdF9vcyBpbgogICBhaXhbWzQtOV1dKikKICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLSAgICAjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEFJWCBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHdpdGggR05VIG5tCi0gICAgIyBBbHNvLCBBSVggbm0gdHJlYXRzIHdlYWsgZGVmaW5lZCBzeW1ib2xzIGxpa2Ugb3RoZXIgZ2xvYmFsIGRlZmluZWQKLSAgICAjIHN5bWJvbHMsIHdoZXJlYXMgR05VIG5tIG1hcmtzIHRoZW0gYXMgIlciLgorICAgICMgLUMgbWVhbnMgZGVtYW5nbGUgdG8gR05VIG5tLCBidXQgbWVhbnMgZG9uJ3QgZGVtYW5nbGUgdG8gQUlYIG5tLgorICAgICMgV2l0aG91dCB0aGUgIi1sIiBvcHRpb24sIG9yIHdpdGggdGhlICItQiIgb3B0aW9uLCBBSVggbm0gdHJlYXRzCisgICAgIyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbCBkZWZpbmVkIHN5bWJvbHMsIHdoZXJlYXMKKyAgICAjIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KKyAgICAjIFdoaWxlIHRoZSAnd2Vhaycga2V5d29yZCBpcyBpZ25vcmVkIGluIHRoZSBFeHBvcnQgRmlsZSwgd2UgbmVlZAorICAgICMgaXQgaW4gdGhlIEltcG9ydCBGaWxlIGZvciB0aGUgJ2FpeC1zb25hbWUnIGZlYXR1cmUsIHNvIHdlIGhhdmUKKyAgICAjIHRvIHJlcGxhY2UgdGhlICItQiIgb3B0aW9uIHdpdGggIi1QIiBmb3IgQUlYIG5tLgogICAgIGlmICROTSAtViAyPiYxIHwgJEdSRVAgJ0dOVScgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgcHJpbnQgXCQgMyB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSB8fCAoXCQgMiA9PSAiVyIpKSAmJiAoW3N1YnN0cl0oXCQgMywxLDEpICE9ICIuIikpIHsgaWYgKFwkIDIgPT0gIlciKSB7IHByaW50IFwkIDMgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAzIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAgICAgZWxzZQotICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAtQkNwZyAkbGlib2JqcyAkY29udmVuaWVuY2UgfCBhd2sgJ1wnJ3sgaWYgKCgoXCQgMiA9PSAiVCIpIHx8IChcJCAyID09ICJEIikgfHwgKFwkIDIgPT0gIkIiKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nYGZ1bmNfZWNob19hbGwgJE5NIHwgJFNFRCAtZSAnXCcncy9CXChbW15CXV0qXCkkL1BcMS8nXCcnYCAtUENwZ2wgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpICYmIChbc3Vic3RyXShcJCAxLDEsMSkgIT0gIi4iKSkgeyBpZiAoKFwkIDIgPT0gIlciKSB8fCAoXCQgMiA9PSAiViIpIHx8IChcJCAyID09ICJaIikpIHsgcHJpbnQgXCQgMSAiIHdlYWsiIH0gZWxzZSB7IHByaW50IFwkIDEgfSB9IH0nXCcnIHwgc29ydCAtdSA+ICRleHBvcnRfc3ltYm9scycKICAgICBmaQogICAgIDs7CiAgIHB3MzIqKQotICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSIkbHRkbGxfY21kcyIKKyAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0kbHRkbGxfY21kcwogICAgIDs7CiAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCiAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KQEAgLTQ2MjUsOSArNDk4NCw5IEBACiAgICMgaW5jbHVkZWQgaW4gdGhlIHN5bWJvbCBsaXN0CiAgIF9MVF9UQUdWQVIoaW5jbHVkZV9leHBzeW1zLCAkMSk9CiAgICMgZXhjbHVkZV9leHBzeW1zIGNhbiBiZSBhbiBleHRlbmRlZCByZWdleHAgb2Ygc3ltYm9scyB0byBleGNsdWRlCi0gICMgaXQgd2lsbCBiZSB3cmFwcGVkIGJ5IGAgKCcgYW5kIGApJCcsIHNvIG9uZSBtdXN0IG5vdCBtYXRjaCBiZWdpbm5pbmcgb3IKLSAgIyBlbmQgb2YgbGluZS4gIEV4YW1wbGU6IGBhfGJjfC4qZC4qJyB3aWxsIGV4Y2x1ZGUgdGhlIHN5bWJvbHMgYGEnIGFuZCBgYmMnLAotICAjIGFzIHdlbGwgYXMgYW55IHN5bWJvbCB0aGF0IGNvbnRhaW5zIGBkJy4KKyAgIyBpdCB3aWxsIGJlIHdyYXBwZWQgYnkgJyAoJyBhbmQgJykkJywgc28gb25lIG11c3Qgbm90IG1hdGNoIGJlZ2lubmluZyBvcgorICAjIGVuZCBvZiBsaW5lLiAgRXhhbXBsZTogJ2F8YmN8LipkLionIHdpbGwgZXhjbHVkZSB0aGUgc3ltYm9scyAnYScgYW5kICdiYycsCisgICMgYXMgd2VsbCBhcyBhbnkgc3ltYm9sIHRoYXQgY29udGFpbnMgJ2QnLgogICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJ10KICAgIyBBbHRob3VnaCBfR0xPQkFMX09GRlNFVF9UQUJMRV8gaXMgYSB2YWxpZCBzeW1ib2wgQyBuYW1lLCBtb3N0IGEub3V0CiAgICMgcGxhdGZvcm1zIChhYil1c2UgaXQgaW4gUElDIGNvZGUsIGJ1dCB0aGVpciBsaW5rZXJzIGdldCBjb25mdXNlZCBpZgpAQCAtNDY0Myw3ICs1MDAyLDcgQEAKICAgICAjIEZJWE1FOiB0aGUgTVNWQysrIHBvcnQgaGFzbid0IGJlZW4gdGVzdGVkIGluIGEgbG9vb29uZyB0aW1lCiAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorICAgIGlmIHRlc3QgeWVzICE9ICIkR0NDIjsgdGhlbgogICAgICAgd2l0aF9nbnVfbGQ9bm8KICAgICBmaQogICAgIDs7CkBAIC00NjUxLDcgKzUwMTAsNyBAQAogICAgICMgd2UganVzdCBob3BlL2Fzc3VtZSB0aGlzIGlzIGdjYyBhbmQgbm90IGM4OSAoPSBNU1ZDKyspCiAgICAgd2l0aF9nbnVfbGQ9eWVzCiAgICAgOzsKLSAgb3BlbmJzZCopCisgIG9wZW5ic2QqIHwgYml0cmlnKikKICAgICB3aXRoX2dudV9sZD1ubwogICAgIDs7CiAgIGxpbnV4KiB8IGsqYnNkKi1nbnUgfCBnbnUqKQpAQCAtNDY2NCw3ICs1MDIzLDcgQEAKICAgIyBPbiBzb21lIHRhcmdldHMsIEdOVSBsZCBpcyBjb21wYXRpYmxlIGVub3VnaCB3aXRoIHRoZSBuYXRpdmUgbGlua2VyCiAgICMgdGhhdCB3ZSdyZSBiZXR0ZXIgb2ZmIHVzaW5nIHRoZSBuYXRpdmUgaW50ZXJmYWNlIGZvciBib3RoLgogICBsdF91c2VfZ251X2xkX2ludGVyZmFjZT1ubwotICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXgqKQogCSMgVGhlIEFJWCBwb3J0IG9mIEdOVSBsZCBoYXMgYWx3YXlzIGFzcGlyZWQgdG8gY29tcGF0aWJpbGl0eQpAQCAtNDY4NiwyNCArNTA0NSwyNCBAQAogICAgIGVzYWMKICAgZmkKIAotICBpZiB0ZXN0ICIkbHRfdXNlX2dudV9sZF9pbnRlcmZhY2UiID0geWVzOyB0aGVuCisgIGlmIHRlc3QgeWVzID0gIiRsdF91c2VfZ251X2xkX2ludGVyZmFjZSI7IHRoZW4KICAgICAjIElmIGFyY2hpdmVfY21kcyBydW5zIExELCBub3QgQ0MsIHdsYXJjIHNob3VsZCBiZSBlbXB0eQotICAgIHdsYXJjPScke3dsfScKKyAgICB3bGFyYz0nJHdsJwogCiAgICAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKICAgICAjIGFyZSByZXNldCBsYXRlciBpZiBzaGFyZWQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBQdXR0aW5nIHRoZW0KICAgICAjIGhlcmUgYWxsb3dzIHRoZW0gdG8gYmUgb3ZlcnJpZGRlbiBpZiBuZWNlc3NhcnkuCiAgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKLSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCisgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLS1leHBvcnQtZHluYW1pYycKICAgICAjIGFuY2llbnQgR05VIGxkIGRpZG4ndCBzdXBwb3J0IC0td2hvbGUtYXJjaGl2ZSBldC4gYWwuCiAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9IiR3bGFyYyInLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICciJHdsYXJjIictLW5vLXdob2xlLWFyY2hpdmUnCisgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JHdsYXJjJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnJHdsYXJjJy0tbm8td2hvbGUtYXJjaGl2ZScKICAgICBlbHNlCiAgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9CiAgICAgZmkKICAgICBzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmc9bm8KLSAgICBjYXNlIGAkTEQgLXYgMj4mMWAgaW4KKyAgICBjYXNlIGAkTEQgLXYgfCAkU0VEIC1lICdzLyhbXildXCspXHNcKy8vJyAyPiYxYCBpbgogICAgICAgKkdOVVwgZ29sZCopIHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZz15ZXMgOzsKICAgICAgICpcIFtbMDFdXS4qIHwgKlwgMi5bWzAtOV1dLiogfCAqXCAyLjEwLiopIDs7ICMgY2F0Y2ggdmVyc2lvbnMgPCAyLjExCiAgICAgICAqXCAyLjExLjkzLjAuMlwgKikgc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nPXllcyA7OyAjIFJINy4zIC4uLgpAQCAtNDcxNiw3ICs1MDc1LDcgQEAKICAgICBjYXNlICRob3N0X29zIGluCiAgICAgYWl4W1szLTldXSopCiAgICAgICAjIE9uIEFJWC9QUEMsIHRoZSBHTlUgbGlua2VyIGlzIHZlcnkgYnJva2VuCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiICE9IGlhNjQ7IHRoZW4KKyAgICAgIGlmIHRlc3QgaWE2NCAhPSAiJGhvc3RfY3B1IjsgdGhlbgogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KIAljYXQgPDxfTFRfRU9GIDE+JjIKIApAQCAtNDczNSw3ICs1MDk0LDcgQEAKICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICBwb3dlcnBjKQogICAgICAgICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBBbWlnYU9TNCAuc28gc3VwcG9ydAotICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJwogICAgICAgICA7OwogICAgICAgbTY4aykKQEAgLTQ3NTEsNyArNTExMCw3IEBACiAJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCiAJIyBKb3NlcGggQmVja2VuYmFjaCA8anJiM0BiZXN0LmNvbT4gc2F5cyBzb21lIHJlbGVhc2VzIG9mIGdjYwogCSMgc3VwcG9ydCAtLXVuZGVmaW5lZC4gIFRoaXMgZGVzZXJ2ZXMgc29tZSBpbnZlc3RpZ2F0aW9uLiAgRklYTUUKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1ub3N0YXJ0ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQpAQCAtNDc2MSw3ICs1MTIwLDcgQEAKICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCiAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1hbGwtc3ltYm9scycKICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAogICAgICAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT1ubwogICAgICAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCkBAIC00NzY5LDYxICs1MTI4LDg5IEBACiAgICAgICBfTFRfVEFHVkFSKGV4Y2x1ZGVfZXhwc3ltcywgJDEpPVsnW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJ10KIAogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLQkjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCi0JIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQllbHNlCi0JICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JZml+Ci0JJENDIC1zaGFyZWQgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR3bC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKwkjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUsIHVzZSBpdCBhcworCSMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZCBFWFBPUlRTLi4uCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIF9MVF9ETExfREVGX1AoWyRleHBvcnRfc3ltYm9sc10pOyB0aGVuCisgICAgICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICBlbHNlCisgICAgICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgZml+CisgICAgICAgICRDQyAtc2hhcmVkICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR3bC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICBmaQogICAgICAgOzsKIAogICAgIGhhaWt1KikKLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogICAgICAgX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCiAgICAgICA7OwogCisgICAgb3MyKikKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKKyAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgc2hyZXh0X2NtZHM9LmRsbAorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREFUQSBNVUxUSVBMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwllbXhleHAgJGxpYm9ianMgfCAkU0VEIC8iX0RMTF9Jbml0VGVybSIvZCA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJENDIC1aZGxsIC1aY3J0ZGxsIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwllbXhpbXAgLW8gJGxpYiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREFUQSBNVUxUSVBMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwlwcmVmaXhfY21kcz0iJFNFRCJ+CisJaWYgdGVzdCBFWFBPUlRTID0gImAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiOyB0aGVuCisJICBwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIDFkIjsKKwlmaX4KKwlwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIFwicy9eXCguKlwpJC9fXDEvZ1wiIn4KKwljYXQgJGV4cG9ydF9zeW1ib2xzIHwgJHByZWZpeF9jbWRzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfRnJvbV9uZXdfY21kcywgJDEpPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfV9kbGwuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKyAgICAgIDs7CisKICAgICBpbnRlcml4W1szLTldXSopCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCwkbGliZGlyJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUUnCiAgICAgICAjIEhhY2s6IE9uIEludGVyaXggMy54LCB3ZSBjYW5ub3QgY29tcGlsZSBQSUMgYmVjYXVzZSBvZiBhIGJyb2tlbiBnY2MuCiAgICAgICAjIEluc3RlYWQsIHNoYXJlZCBsaWJyYXJpZXMgYXJlIGxvYWRlZCBhdCBhbiBpbWFnZSBiYXNlICgweDEwMDAwMDAwIGJ5CiAgICAgICAjIGRlZmF1bHQpIGFuZCByZWxvY2F0ZWQgaWYgdGhleSBjb25mbGljdCwgd2hpY2ggaXMgYSBzbG93IHZlcnkgbWVtb3J5CiAgICAgICAjIGNvbnN1bWluZyBhbmQgZnJhZ21lbnRpbmcgcHJvY2Vzcy4gIFRvIGF2b2lkIHRoaXMsIHdlIHBpY2sgYSByYW5kb20sCiAgICAgICAjIDI1NiBLaUItYWxpZ25lZCBpbWFnZSBiYXNlIGJldHdlZW4gMHg1MDAwMDAwMCBhbmQgMHg2RkZDMDAwMCBhdCBsaW5rCiAgICAgICAjIHRpbWUuICBNb3ZpbmcgdXAgZnJvbSAweDEwMDAwMDAwIGFsc28gYWxsb3dzIG1vcmUgc2JyaygyKSBzcGFjZS4KLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCwkc29uYW1lICR7d2x9LS1pbWFnZS1iYXNlLGBleHByICR7UkFORE9NLSQkfSAlIDQwOTYgLyAyIFwqIDI2MjE0NCArIDEzNDIxNzcyODBgIC1vICRsaWInCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkICJzLF4sXywiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1oLCRzb25hbWUgJHt3bH0tLXJldGFpbi1zeW1ib2xzLWZpbGUsJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW0gJHt3bH0tLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLWgsJHNvbmFtZSAkd2wtLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKyAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInN8XnxffCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oLCRzb25hbWUgJHdsLS1yZXRhaW4tc3ltYm9scy1maWxlLCRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwc3ltICR3bC0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwogICAgICAgOzsKIAogICAgIGdudSogfCBsaW51eCogfCB0cGYqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQogICAgICAgdG1wX2RpZXQ9bm8KLSAgICAgIGlmIHRlc3QgIiRob3N0X29zIiA9IGxpbnV4LWRpZXRsaWJjOyB0aGVuCisgICAgICBpZiB0ZXN0IGxpbnV4LWRpZXRsaWJjID0gIiRob3N0X29zIjsgdGhlbgogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCiAJICBkaWV0XCAqKSB0bXBfZGlldD15ZXM7OwkjIGxpbnV4LWRpZXRsaWJjIHdpdGggc3RhdGljIGxpbmtpbmcgKCFkaWV0LWR5bikKIAllc2FjCiAgICAgICBmaQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEVHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGwgXAotCSAmJiB0ZXN0ICIkdG1wX2RpZXQiID0gbm8KKwkgJiYgdGVzdCBubyA9ICIkdG1wX2RpZXQiCiAgICAgICB0aGVuCiAJdG1wX2FkZGZsYWc9JyAkcGljX2ZsYWcnCiAJdG1wX3NoYXJlZGZsYWc9Jy1zaGFyZWQnCiAJY2FzZSAkY2NfYmFzZW5hbWUsJGhvc3RfY3B1IGluCiAgICAgICAgIHBnY2MqKQkJCQkjIFBvcnRsYW5kIEdyb3VwIEMgY29tcGlsZXIKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZycKIAkgIDs7CiAJcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKIAkJCQkJIyBQb3J0bGFuZCBHcm91cCBmNzcgYW5kIGY5MCBjb21waWxlcnMKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICB0bXBfYWRkZmxhZz0nICRwaWNfZmxhZyAtTW5vbWFpbicgOzsKIAllY2MqLGlhNjQqIHwgaWNjKixpYTY0KikJIyBJbnRlbCBDIGNvbXBpbGVyIG9uIGlhNjQKIAkgIHRtcF9hZGRmbGFnPScgLWlfZHluYW1pYycgOzsKQEAgLTQ4MzQsNDIgKzUyMjEsNDcgQEAKIAlsZjk1KikJCQkJIyBMYWhleSBGb3J0cmFuIDguMQogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogCSAgdG1wX3NoYXJlZGZsYWc9Jy0tc2hhcmVkJyA7OworICAgICAgICBuYWdmb3IqKSAgICAgICAgICAgICAgICAgICAgICAgICMgTkFHRk9SIDUuMworICAgICAgICAgIHRtcF9zaGFyZWRmbGFnPSctV2wsLXNoYXJlZCcgOzsKIAl4bFtbY0NdXSogfCBiZ3hsW1tjQ11dKiB8IG1waXhsW1tjQ11dKikgIyBJQk0gWEwgQyA4LjAgb24gUFBDIChkZWFsIHdpdGggeGxmIGJlbG93KQogCSAgdG1wX3NoYXJlZGZsYWc9Jy1xbWtzaHJvYmonCiAJICB0bXBfYWRkZmxhZz0gOzsKIAludmNjKikJIyBDdWRhIENvbXBpbGVyIERyaXZlciAyLjIKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAkd2wtLW5vLXdob2xlLWFyY2hpdmUnCiAJICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCSAgOzsKIAllc2FjCiAJY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCiAJKlN1blwgQyopCQkJIyBTdW4gQyA1LjkKLQkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHdsLS13aG9sZS1hcmNoaXZlYG5ld19jb252ZW5pZW5jZT07IGZvciBjb252IGluICRjb252ZW5pZW5jZVwiXCI7IGRvIHRlc3QgLXogXCIkY29udlwiIHx8IG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogCSAgX0xUX1RBR1ZBUihjb21waWxlcl9uZWVkc19vYmplY3QsICQxKT15ZXMKIAkgIHRtcF9zaGFyZWRmbGFnPSctRycgOzsKIAkqU3VuXCBGKikJCQkjIFN1biBGb3J0cmFuIDguMwogCSAgdG1wX3NoYXJlZGZsYWc9Jy1HJyA7OwogCWVzYWMKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgJyIkdG1wX3NoYXJlZGZsYWciIiR0bXBfYWRkZmxhZyInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAnIiR0bXBfc2hhcmVkZmxhZyIiJHRtcF9hZGRmbGFnIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogCi0gICAgICAgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAgICAgICAgaWYgdGVzdCB5ZXMgPSAiJHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyI7IHRoZW4KICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotCSAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tdmVyc2lvbi1zY3JpcHQgJHt3bH0kb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAgICAgICAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorICAgICAgICAgICAgJENDICciJHRtcF9zaGFyZWRmbGFnIiIkdG1wX2FkZGZsYWciJyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC12ZXJzaW9uLXNjcmlwdCAkd2wkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKICAgICAgICAgZmkKIAogCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisJdGNjKikKKwkgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9Jy1yZHluYW1pYycKKwkgIDs7CiAJeGxmKiB8IGJnZiogfCBiZ3hsZiogfCBtcGl4bGYqKQogCSAgIyBJQk0gWEwgRm9ydHJhbiAxMC4xIG9uIFBQQyBjYW5ub3QgY3JlYXRlIHNoYXJlZCBsaWJzIGl0c2VsZgogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0JICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisJICBpZiB0ZXN0IHllcyA9ICIkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIjsgdGhlbgogCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworICAgICAgICAgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgICAgICAgICAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorICAgICAgICAgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCiAJICBmaQogCSAgOzsKIAllc2FjCkBAIC00ODgzLDggKzUyNzUsOCBAQAogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCiAJd2xhcmM9CiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgOzsKIApAQCAtNDkwMiw4ICs1Mjk0LDggQEAKIAogX0xUX0VPRgogICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgZmkKQEAgLTQ5MTUsNyArNTMwNyw3IEBACiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCWNhdCA8PF9MVF9FT0YgMT4mMgogCi0qKiogV2FybmluZzogUmVsZWFzZXMgb2YgdGhlIEdOVSBsaW5rZXIgcHJpb3IgdG8gMi4xNi45MS4wLjMgY2FuIG5vdAorKioqIFdhcm5pbmc6IFJlbGVhc2VzIG9mIHRoZSBHTlUgbGlua2VyIHByaW9yIHRvIDIuMTYuOTEuMC4zIGNhbm5vdAogKioqIHJlbGlhYmx5IGNyZWF0ZSBzaGFyZWQgbGlicmFyaWVzIG9uIFNDTyBzeXN0ZW1zLiAgVGhlcmVmb3JlLCBsaWJ0b29sCiAqKiogaXMgZGlzYWJsaW5nIHNoYXJlZCBsaWJyYXJpZXMgc3VwcG9ydC4gIFdlIHVyZ2UgeW91IHRvIHVwZ3JhZGUgR05VCiAqKiogYmludXRpbHMgdG8gcmVsZWFzZSAyLjE2LjkxLjAuMyBvciBuZXdlci4gIEFub3RoZXIgb3B0aW9uIGlzIHRvIG1vZGlmeQpAQCAtNDkzMCw5ICs1MzIyLDkgQEAKIAkgICMgRFRfUlVOUEFUSCB0YWcgZnJvbSBleGVjdXRhYmxlcyBhbmQgbGlicmFyaWVzLiAgQnV0IGRvaW5nIHNvCiAJICAjIHJlcXVpcmVzIHRoYXQgeW91IGNvbXBpbGUgZXZlcnl0aGluZyB0d2ljZSwgd2hpY2ggaXMgYSBwYWluLgogCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICBlbHNlCiAJICAgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KIAkgIGZpCkBAIC00OTQ5LDE1ICs1MzQxLDE1IEBACiAKICAgICAqKQogICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KICAgICAgIGZpCiAgICAgICA7OwogICAgIGVzYWMKIAotICAgIGlmIHRlc3QgIiRfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpIiA9IG5vOyB0aGVuCisgICAgaWYgdGVzdCBubyA9ICIkX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKSI7IHRoZW4KICAgICAgIHJ1bnBhdGhfdmFyPQogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9CiAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPQpAQCAtNDk3Myw3ICs1MzY1LDcgQEAKICAgICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVzIHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCiAgICAgICAjIGFyZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX21pbnVzX0wsICQxKT15ZXMKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgLXogIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyI7IHRoZW4KKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiICYmIHRlc3QgLXogIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyI7IHRoZW4KIAkjIE5laXRoZXIgZGlyZWN0IGhhcmRjb2Rpbmcgbm9yIHN0YXRpYyBsaW5raW5nIGlzIHN1cHBvcnRlZCB3aXRoIGEKIAkjIGJyb2tlbiBjb2xsZWN0Mi4KIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXVuc3VwcG9ydGVkCkBAIC00OTgxLDM0ICs1MzczLDU3IEBACiAgICAgICA7OwogCiAgICAgYWl4W1s0LTldXSopCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgorICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0CiAJIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCiAJYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwogCWV4cF9zeW1fZmxhZz0nLUJleHBvcnQnCi0Jbm9fZW50cnlfZmxhZz0iIgorCW5vX2VudHJ5X2ZsYWc9CiAgICAgICBlbHNlCiAJIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCi0JIyAtQyBtZWFucyBkZW1hbmdsZSB0byBBSVggbm0sIGJ1dCBtZWFucyBkb24ndCBkZW1hbmdsZSB3aXRoIEdOVSBubQotCSMgQWxzbywgQUlYIG5tIHRyZWF0cyB3ZWFrIGRlZmluZWQgc3ltYm9scyBsaWtlIG90aGVyIGdsb2JhbAotCSMgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzIEdOVSBubSBtYXJrcyB0aGVtIGFzICJXIi4KKwkjIC1DIG1lYW5zIGRlbWFuZ2xlIHRvIEdOVSBubSwgYnV0IG1lYW5zIGRvbid0IGRlbWFuZ2xlIHRvIEFJWCBubS4KKwkjIFdpdGhvdXQgdGhlICItbCIgb3B0aW9uLCBvciB3aXRoIHRoZSAiLUIiIG9wdGlvbiwgQUlYIG5tIHRyZWF0cworCSMgd2VhayBkZWZpbmVkIHN5bWJvbHMgbGlrZSBvdGhlciBnbG9iYWwgZGVmaW5lZCBzeW1ib2xzLCB3aGVyZWFzCisJIyBHTlUgbm0gbWFya3MgdGhlbSBhcyAiVyIuCisJIyBXaGlsZSB0aGUgJ3dlYWsnIGtleXdvcmQgaXMgaWdub3JlZCBpbiB0aGUgRXhwb3J0IEZpbGUsIHdlIG5lZWQKKwkjIGl0IGluIHRoZSBJbXBvcnQgRmlsZSBmb3IgdGhlICdhaXgtc29uYW1lJyBmZWF0dXJlLCBzbyB3ZSBoYXZlCisJIyB0byByZXBsYWNlIHRoZSAiLUIiIG9wdGlvbiB3aXRoICItUCIgZm9yIEFJWCBubS4KIAlpZiAkTk0gLVYgMj4mMSB8ICRHUkVQICdHTlUnID4gL2Rldi9udWxsOyB0aGVuCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IHByaW50IFwkIDMgfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCisJICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NIC1CcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikgfHwgKFwkIDIgPT0gIlciKSkgJiYgKFtzdWJzdHJdKFwkIDMsMSwxKSAhPSAiLiIpKSB7IGlmIChcJCAyID09ICJXIikgeyBwcmludCBcJCAzICIgd2VhayIgfSBlbHNlIHsgcHJpbnQgXCQgMyB9IH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJwogCWVsc2UKLQkgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gLUJDcGcgJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgYXdrICdcJyd7IGlmICgoKFwkIDIgPT0gIlQiKSB8fCAoXCQgMiA9PSAiRCIpIHx8IChcJCAyID09ICJCIikpICYmIChbc3Vic3RyXShcJCAzLDEsMSkgIT0gIi4iKSkgeyBwcmludCBcJCAzIH0gfSdcJycgfCBzb3J0IC11ID4gJGV4cG9ydF9zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9J2BmdW5jX2VjaG9fYWxsICROTSB8ICRTRUQgLWUgJ1wnJ3MvQlwoW1teQl1dKlwpJC9QXDEvJ1wnJ2AgLVBDcGdsICRsaWJvYmpzICRjb252ZW5pZW5jZSB8IGF3ayAnXCcneyBpZiAoKChcJCAyID09ICJUIikgfHwgKFwkIDIgPT0gIkQiKSB8fCAoXCQgMiA9PSAiQiIpIHx8IChcJCAyID09ICJXIikgfHwgKFwkIDIgPT0gIlYiKSB8fCAoXCQgMiA9PSAiWiIpKSAmJiAoW3N1YnN0cl0oXCQgMSwxLDEpICE9ICIuIikpIHsgaWYgKChcJCAyID09ICJXIikgfHwgKFwkIDIgPT0gIlYiKSB8fCAoXCQgMiA9PSAiWiIpKSB7IHByaW50IFwkIDEgIiB3ZWFrIiB9IGVsc2UgeyBwcmludCBcJCAxIH0gfSB9J1wnJyB8IHNvcnQgLXUgPiAkZXhwb3J0X3N5bWJvbHMnCiAJZmkKIAlhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAKIAkjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKIAkjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLQkjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorCSMgaGF2ZSBydW50aW1lIGxpbmtpbmcgZW5hYmxlZCwgYW5kIHVzZSBpdCBmb3IgZXhlY3V0YWJsZXMuCisJIyBGb3Igc2hhcmVkIGxpYnJhcmllcywgd2UgZW5hYmxlL2Rpc2FibGUgcnVudGltZSBsaW5raW5nCisJIyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGNyZWF0ZWQgLQorCSMgd2hlbiAid2l0aF9haXhfc29uYW1lLGFpeF91c2VfcnVudGltZWxpbmtpbmciIGlzOgorCSMgImFpeCxubyIgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8sICBmb3IgZXhlY3V0YWJsZXMKKwkjICJhaXgseWVzIiAgbGliLnNvICAgICAgICAgIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisJIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQorCSMgImJvdGgsbm8iICBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzCisJIyAgICAgICAgICAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworCSMgImJvdGgseWVzIiBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKwkjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vCisJIyAic3ZyNCwqIiAgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworCSMgICAgICAgICAgICBsaWIuYSAgICAgICAgICAgc3RhdGljIGFyY2hpdmUKIAljYXNlICRob3N0X29zIGluIGFpeDQuW1syM11dfGFpeDQuW1syM11dLip8YWl4W1s1LTldXSopCiAJICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KLQkgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCisJICBpZiAodGVzdCB4LWJydGwgPSAieCRsZF9mbGFnIiB8fCB0ZXN0IHgtV2wsLWJydGwgPSAieCRsZF9mbGFnIik7IHRoZW4KIAkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKIAkgICAgYnJlYWsKIAkgIGZpCiAJICBkb25lCisJICBpZiB0ZXN0IHN2cjQsbm8gPSAiJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyI7IHRoZW4KKwkgICAgIyBXaXRoIGFpeC1zb25hbWU9c3ZyNCwgd2UgY3JlYXRlIHRoZSBsaWIuc28uViBzaGFyZWQgYXJjaGl2ZXMgb25seSwKKwkgICAgIyBzbyB3ZSBkb24ndCBoYXZlIGxpYi5hIHNoYXJlZCBsaWJzIHRvIGxpbmsgb3VyIGV4ZWN1dGFibGVzLgorCSAgICAjIFdlIGhhdmUgdG8gZm9yY2UgcnVudGltZSBsaW5raW5nIGluIHRoaXMgY2FzZS4KKwkgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKwkgICAgTERGTEFHUz0iJExERkxBR1MgLVdsLC1icnRsIgorCSAgZmkKIAkgIDs7CiAJZXNhYwogCkBAIC01MDI3LDEzICs1NDQyLDIxIEBACiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCiAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLSAgICAgIF9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nJHt3bH0tZiwnCisgICAgICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9JyR3bC1mLCcKKyAgICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICAgYWl4LCopIDs7ICMgdHJhZGl0aW9uYWwsIG5vIGltcG9ydCBmaWxlCisgICAgICBzdnI0LCogfCAqLHllcykgIyB1c2UgaW1wb3J0IGZpbGUKKwkjIFRoZSBJbXBvcnQgRmlsZSBkZWZpbmVzIHdoYXQgdG8gaGFyZGNvZGUuCisJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KKwk7OworICAgICAgZXNhYwogCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KIAljYXNlICRob3N0X29zIGluIGFpeDQuW1swMTJdXXxhaXg0LltbMDEyXV0uKikKIAkjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKIAkjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKLQkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGNvbGxlY3QybmFtZT1gJENDIC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCiAJICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJgogCSAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgJEdSRVAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCiAJICB0aGVuCkBAIC01MDUyLDYyICs1NDc1LDgwIEBACiAJICA7OwogCWVzYWMKIAlzaGFyZWRfZmxhZz0nLXNoYXJlZCcKLQlpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgIHNoYXJlZF9mbGFnPSIkc2hhcmVkX2ZsYWcgIicke3dsfS1HJworCWlmIHRlc3QgeWVzID0gIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIjsgdGhlbgorCSAgc2hhcmVkX2ZsYWc9IiRzaGFyZWRfZmxhZyAiJyR3bC1HJwogCWZpCi0JX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9bm8KKwkjIE5lZWQgdG8gZW5zdXJlIHJ1bnRpbWUgbGlua2luZyBpcyBkaXNhYmxlZCBmb3IgdGhlIHRyYWRpdGlvbmFsCisJIyBzaGFyZWQgbGlicmFyeSwgb3IgdGhlIGxpbmtlciBtYXkgZXZlbnR1YWxseSBmaW5kIHNoYXJlZCBsaWJyYXJpZXMKKwkjIC93aXRoLyBJbXBvcnQgRmlsZSAtIHdlIGRvIG5vdCB3YW50IHRvIG1peCB0aGVtLgorCXNoYXJlZF9mbGFnX2FpeD0nLXNoYXJlZCcKKwlzaGFyZWRfZmxhZ19zdnI0PSctc2hhcmVkICR3bC1HJwogICAgICAgZWxzZQogCSMgbm90IHVzaW5nIGdjYwotCWlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisJaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KIAkjIFZpc3VhbEFnZSBDKyssIFZlcnNpb24gNS41IGZvciBBSVggNUwgZm9yIElBLTY0LCBCZXRhIDMgUmVsZWFzZQogCSMgY2hva2VzIG9uIC1XbCwtRy4gVGhlIGZvbGxvd2luZyBsaW5lIGlzIGNvcnJlY3Q6CiAJICBzaGFyZWRfZmxhZz0nLUcnCiAJZWxzZQotCSAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0JICAgIHNoYXJlZF9mbGFnPScke3dsfS1HJworCSAgaWYgdGVzdCB5ZXMgPSAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCisJICAgIHNoYXJlZF9mbGFnPSckd2wtRycKIAkgIGVsc2UKLQkgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LWJNOlNSRScKKwkgICAgc2hhcmVkX2ZsYWc9JyR3bC1iTTpTUkUnCiAJICBmaQorCSAgc2hhcmVkX2ZsYWdfYWl4PSckd2wtYk06U1JFJworCSAgc2hhcmVkX2ZsYWdfc3ZyND0nJHdsLUcnCiAJZmkKICAgICAgIGZpCiAKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJleHBhbGwnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtYmV4cGFsbCcKICAgICAgICMgSXQgc2VlbXMgdGhhdCAtYmV4cGFsbCBkb2VzIG5vdCBleHBvcnQgc3ltYm9scyBiZWdpbm5pbmcgd2l0aAogICAgICAgIyB1bmRlcnNjb3JlIChfKSwgc28gaXQgaXMgYmV0dGVyIHRvIGdlbmVyYXRlIGEgbGlzdCBvZiBzeW1ib2xzIHRvIGV4cG9ydC4KICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCi0gICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KKyAgICAgIGlmIHRlc3QgYWl4LHllcyA9ICIkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIjsgdGhlbgogCSMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1bnRpbWUgbG9hZGluZyBmbGFncyAoLWJydGwpLAogCSMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wnJG5vX2VudHJ5X2ZsYWcnICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAtbiAiJGFsbG93X3VuZGVmaW5lZF9mbGFnIjsgdGhlbiBmdW5jX2VjaG9fYWxsICIkd2wkYWxsb3dfdW5kZWZpbmVkX2ZsYWciOyBlbHNlIDo7IGZpYCAkd2wnJGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzJyAnJHNoYXJlZF9mbGFnCiAgICAgICBlbHNlCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKKwlpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgorCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1SICRsaWJkaXI6L3Vzci9saWI6L2xpYicKIAkgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30gJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR3bCRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzICR3bCRhbGxvd191bmRlZmluZWRfZmxhZyAnIlwkd2wkZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMiCiAJZWxzZQogCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KIAkgIyBlbXB0eSBleGVjdXRhYmxlLgogCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotCSBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKwkgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgogCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLQkgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWJlcm5vdG9rJwotCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0geWVzOyB0aGVuCisJICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAkd2wtYmVybm90b2snCisJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAkd2wtYmVyb2snCisJICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCiAJICAgICMgV2Ugb25seSB1c2UgdGhpcyBjb2RlIGZvciBHTlUgbGRzIHRoYXQgc3VwcG9ydCAtLXdob2xlLWFyY2hpdmUuCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHdsLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGVsc2UKIAkgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCiAJICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJGNvbnZlbmllbmNlJwogCSAgZmkKIAkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLQkgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRSTSAtciAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZH4kTUtESVIgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQnCisJICAjIC1icnRsIGFmZmVjdHMgbXVsdGlwbGUgbGlua2VyIHNldHRpbmdzLCAtYmVyb2sgZG9lcyBub3QgYW5kIGlzIG92ZXJyaWRkZW4gbGF0ZXIKKwkgIGNvbXBpbGVyX2ZsYWdzX2ZpbHRlcmVkPSdgZnVuY19lY2hvX2FsbCAiJGNvbXBpbGVyX2ZsYWdzICIgfCAkU0VEIC1lICJzJS1icnRsXFwoW1ssIF1dXFwpJS1iZXJva1xcMSVnImAnCisJICBpZiB0ZXN0IHN2cjQgIT0gIiR3aXRoX2FpeF9zb25hbWUiOyB0aGVuCisJICAgICMgVGhpcyBpcyBzaW1pbGFyIHRvIGhvdyBBSVggdHJhZGl0aW9uYWxseSBidWlsZHMgaXRzIHNoYXJlZCBsaWJyYXJpZXMuCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSIkX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkiJ34kQ0MgJyRzaGFyZWRfZmxhZ19haXgnIC1vICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHdsLWJub2VudHJ5ICckY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQnJHdsLWJFOiRleHBvcnRfc3ltYm9scyRhbGxvd191bmRlZmluZWRfZmxhZ34kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc29uYW1lJworCSAgZmkKKwkgIGlmIHRlc3QgYWl4ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iJF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIid+JENDICckc2hhcmVkX2ZsYWdfc3ZyNCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8gJGxpYm9ianMgJGRlcGxpYnMgJHdsLWJub2VudHJ5ICckY29tcGlsZXJfZmxhZ3NfZmlsdGVyZWQnJHdsLWJFOiRleHBvcnRfc3ltYm9scyRhbGxvd191bmRlZmluZWRfZmxhZ34kU1RSSVAgLWUgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm9+KCBmdW5jX2VjaG9fYWxsICIjISAkc29uYW1lKCRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vKSI7IGlmIHRlc3Qgc2hyXzY0ID0gIiRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYyI7IHRoZW4gZnVuY19lY2hvX2FsbCAiIyA2NCI7IGVsc2UgZnVuY19lY2hvX2FsbCAiIyAzMiI7IGZpOyBjYXQgJGV4cG9ydF9zeW1ib2xzICkgPiAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMuaW1wfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMuaW1wJworCSAgZWxzZQorCSAgICAjIHVzZWQgYnkgLWRscHJlb3BlbiB0byBnZXQgdGhlIHN5bWJvbHMKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IiRfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKSInfiRNViAgJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZSAkb3V0cHV0X29iamRpcicKKwkgIGZpCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iJF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIid+JFJNIC1yICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kJwogCWZpCiAgICAgICBmaQogICAgICAgOzsKQEAgLTUxMTYsNyArNTU1Nyw3IEBACiAgICAgICBjYXNlICRob3N0X2NwdSBpbgogICAgICAgcG93ZXJwYykKICAgICAgICAgICAgICMgc2VlIGNvbW1lbnQgYWJvdXQgQW1pZ2FPUzQgLnNvIHN1cHBvcnQKLSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JycKICAgICAgICAgOzsKICAgICAgIG02OGspCkBAIC01MTQ2LDE2ICs1NTg3LDE3IEBACiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KIAlsaWJleHQ9bGliCiAJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0Jc2hyZXh0X2NtZHM9Ii5kbGwiCisJc2hyZXh0X2NtZHM9LmRsbAogCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLQkgIGVsc2UKLQkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLQkgIGZpfgotCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotCSAgbGlua25hbWVzPScKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifmxpbmtuYW1lcz0nCisJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIF9MVF9ETExfREVGX1AoWyRleHBvcnRfc3ltYm9sc10pOyB0aGVuCisgICAgICAgICAgICBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYiOworICAgICAgICAgICAgZWNobyAiJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZGVmIiA+ICIkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cCI7CisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgJFNFRCAtZSAnXCcncy9eLy1saW5rIC1FWFBPUlQ6LydcJycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKyAgICAgICAgICBmaX4KKyAgICAgICAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisgICAgICAgICAgbGlua25hbWVzPScKIAkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCiAJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKIAlfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKQEAgLTUxNjQsMTggKzU2MDYsMTggQEAKIAkjIERvbid0IHVzZSByYW5saWIKIAlfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJwogCV9MVF9UQUdWQVIocG9zdGxpbmtfY21kcywgJDEpPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0JICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotCSAgICAqLmV4ZXwqLkVYRSkgOzsKLQkgICAgKikKLQkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0JICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLQkgICAgICA7OwotCSAgZXNhY34KLQkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0JICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0JICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotCSAgZmknCisgICAgICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKyAgICAgICAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisgICAgICAgICAgICAqLmV4ZXwqLkVYRSkgOzsKKyAgICAgICAgICAgICopCisgICAgICAgICAgICAgIGx0X291dHB1dGZpbGU9JGx0X291dHB1dGZpbGUuZXhlCisgICAgICAgICAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0kbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZQorICAgICAgICAgICAgICA7OworICAgICAgICAgIGVzYWN+CisgICAgICAgICAgaWYgdGVzdCA6ICE9ICIkTUFOSUZFU1RfVE9PTCIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisgICAgICAgICAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworICAgICAgICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisgICAgICAgICAgZmknCiAJOzsKICAgICAgICopCiAJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCkBAIC01MTg0LDcgKzU2MjYsNyBAQAogCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCiAJbGliZXh0PWxpYgogCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotCXNocmV4dF9jbWRzPSIuZGxsIgorCXNocmV4dF9jbWRzPS5kbGwKIAkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCiAJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KQEAgLTUyMzQsMzMgKzU2NzYsMzMgQEAKICAgICAgIDs7CiAKICAgICBocHV4OSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZWxzZQotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgZmkKLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wrYiAkd2wkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKIAogICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCi0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUUnCiAgICAgICA7OwogCiAgICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdDQywkd2l0aF9nbnVfbGQiOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBmaQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgaWYgdGVzdCBubyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bCtiICR3bCRsaWJkaXInCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogCV9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKLQlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCV9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1FJwogCSMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCiAJIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCkBAIC01MjY4LDI1ICs1NzEwLDI1IEBACiAgICAgICA7OwogCiAgICAgaHB1eDExKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorICAgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdDQywkd2l0aF9nbnVfbGQiOyB0aGVuCiAJY2FzZSAkaG9zdF9jcHUgaW4KIAlocHBhKjY0KikKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHdsK2ggJHdsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsK2ggJHdsJHNvbmFtZSAkd2wrbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtiICR3bCRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJZXNhYwogICAgICAgZWxzZQogCWNhc2UgJGhvc3RfY3B1IGluCiAJaHBwYSo2NCopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHdsK2ggJHdsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKIAkgIDs7CiAJaWE2NCopCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHdsK2ggJHdsJHNvbmFtZSAkd2wrbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogCSopCiAJbTRfaWYoJDEsIFtdLCBbCkBAIC01Mjk0LDE0ICs1NzM2LDE0IEBACiAJICAjIChIUDkyNDUzLTAxIEEuMTEuMDEuMjAgZG9lc24ndCwgSFA5MjQ1My0wMSBCLjExLlguMzUxNzUtMzUxNzYuR1AgZG9lcykKIAkgIF9MVF9MSU5LRVJfT1BUSU9OKFtpZiAkQ0MgdW5kZXJzdGFuZHMgLWJdLAogCSAgICBfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfX2IsICQxKSwgWy1iXSwKLQkgICAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJ10sCisJICAgIFtfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLWIgJHdsK2ggJHdsJHNvbmFtZSAkd2wrYiAkd2wkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnXSwKIAkgICAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnXSldLAotCSAgW19MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJ10pCisJICBbX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJ10pCiAJICA7OwogCWVzYWMKICAgICAgIGZpCi0gICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLQlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICBpZiB0ZXN0IG5vID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsK2IgJHdsJGxpYmRpcicKIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CiAKIAljYXNlICRob3N0X2NwdSBpbgpAQCAtNTMxMiw3ICs1NzU0LDcgQEAKIAkqKQogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUUnCiAKIAkgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCiAJICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KQEAgLTUzMjMsMTYgKzU3NjUsMTYgQEAKICAgICAgIDs7CiAKICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHdsJHZlcnN0cmluZyJgICR3bC11cGRhdGVfcmVnaXN0cnkgJHdsJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCiAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KIAkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgogCUFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sXSwKIAkgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbF0sCi0JICBbc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLQkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisJICBbc2F2ZV9MREZMQUdTPSRMREZMQUdTCisJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAkd2wtZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR3bC11cGRhdGVfcmVnaXN0cnkgJHdsL2Rldi9udWxsIgogCSAgIEFDX0xJTktfSUZFTFNFKAogCSAgICAgW0FDX0xBTkdfU09VUkNFKAogCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLApAQCAtNTM0NSwyMSArNTc4NywzMiBAQAogICAgICAgZW5kXV0pXSldLAogCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXNdLAogCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ub10pCi0gICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiXSkKLQlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgICAgIExERkxBR1M9JHNhdmVfTERGTEFHU10pCisJaWYgdGVzdCB5ZXMgPSAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIjsgdGhlbgorICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAkd2wtZXhwb3J0c19maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCWZpCisJX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9bm8KICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAgICAgICBmaQogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPSdubycKLSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsICQxKT06CiAgICAgICBfTFRfVEFHVkFSKGluaGVyaXRfcnBhdGgsICQxKT15ZXMKICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogICAgICAgOzsKIAorICAgIGxpbnV4KikKKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICB0Y2MqKQorCSMgRmFicmljZSBCZWxsYXJkIGV0IGFsJ3MgVGlueSBDIENvbXBpbGVyCisJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT15ZXMKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisKICAgICBuZXRic2QqIHwgbmV0YnNkZWxmKi1nbnUpCiAgICAgICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPi9kZXYvbnVsbDsgdGhlbgogCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnICAjIGEub3V0CkBAIC01Mzc0LDcgKzU4MjcsNyBAQAogICAgIG5ld3NvczYpCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCiAgICAgICA7OwpAQCAtNTM4MiwyNyArNTgzNSwxOSBAQAogICAgICpudG8qIHwgKnFueCopCiAgICAgICA7OwogCi0gICAgb3BlbmJzZCopCisgICAgb3BlbmJzZCogfCBiaXRyaWcqKQogICAgICAgaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KIAlfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3RfYWJzb2x1dGUsICQxKT15ZXMKLQlpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCAkR1JFUCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCisJaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgJEdSRVAgX19FTEZfX2AiOyB0aGVuCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzJwotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1FJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMnCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoLCRsaWJkaXInCisJICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtRScKIAllbHNlCi0JICBjYXNlICRob3N0X29zIGluCi0JICAgb3BlbmJzZFtbMDFdXS4qIHwgb3BlbmJzZDIuW1swLTddXSB8IG9wZW5ic2QyLltbMC03XV0uKikKLQkgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0JICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgICAgOzsKLQkgICAqKQotCSAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICAgICA7OwotCSAgZXNhYworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCwkbGliZGlyJwogCWZpCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwpAQCAtNTQxMywzMyArNTg1OCw1MyBAQAogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcwogICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAkbGlibmFtZSBJTklUSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lY2hvIERBVEEgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfmVjaG8gIiBTSU5HTEUgTk9OU0hBUkVEIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+ZWNobyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn5lbXhleHAgJGxpYm9ianMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfiRDQyAtWmRsbCAtWmNydGRsbCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCi0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworICAgICAgc2hyZXh0X2NtZHM9LmRsbAorICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREFUQSBNVUxUSVBMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwllbXhleHAgJGxpYm9ianMgfCAkU0VEIC8iX0RMTF9Jbml0VGVybSIvZCA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJJENDIC1aZGxsIC1aY3J0ZGxsIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwllbXhpbXAgLW8gJGxpYiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJEVDSE8gIkxJQlJBUlkgJHtzb25hbWUlJHNoYXJlZF9leHR9IElOSVRJTlNUQU5DRSBURVJNSU5TVEFOQ0UiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyAiREFUQSBNVUxUSVBMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkRUNITyBFWFBPUlRTID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwlwcmVmaXhfY21kcz0iJFNFRCJ+CisJaWYgdGVzdCBFWFBPUlRTID0gImAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiOyB0aGVuCisJICBwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIDFkIjsKKwlmaX4KKwlwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIFwicy9eXCguKlwpJC9fXDEvZ1wiIn4KKwljYXQgJGV4cG9ydF9zeW1ib2xzIHwgJHByZWZpeF9jbWRzID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCWVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKyAgICAgIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfRnJvbV9uZXdfY21kcywgJDEpPSdlbXhpbXAgLW8gJG91dHB1dF9vYmpkaXIvJHtsaWJuYW1lfV9kbGwuYSAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYnCisgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKICAgICAgIDs7CiAKICAgICBvc2YzKikKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAkd2wtZXhwZWN0X3VucmVzb2x2ZWQgJHdsXConCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogICAgICAgZWxzZQogCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJGFsbG93X3VuZGVmaW5lZF9mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKICAgICAgIGZpCiAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9J25vJwotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKICAgICAgIDs7CiAKICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0JX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkR0NDIjsgdGhlbgorCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR3bC1leHBlY3RfdW5yZXNvbHZlZCAkd2xcKicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1tc3ltICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJworCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGggJHdsJGxpYmRpcicKICAgICAgIGVsc2UKIAlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2ZvciBpIGluIGBjYXQgJGV4cG9ydF9zeW1ib2xzYDsgZG8gcHJpbnRmICIlcyAlc1xcbiIgLWV4cG9ydGVkX3N5bWJvbCAiXCRpIiA+PiAkbGliLmV4cDsgZG9uZTsgcHJpbnRmICIlc1xcbiIgIi1oaWRkZW4iPj4gJGxpYi5leHB+Ci0JJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAke3dsfS1pbnB1dCAke3dsfSRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYn4kUk0gJGxpYi5leHAnCisgICAgICAgICAgJENDIC1zaGFyZWQkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHdsLWlucHV0ICR3bCRsaWIuZXhwICRjb21waWxlcl9mbGFncyAkbGlib2JqcyAkZGVwbGlicyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWJ+JFJNICRsaWIuZXhwJwogCiAJIyBCb3RoIGMgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQogCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctcnBhdGggJGxpYmRpcicKQEAgLTU0NTAsMjQgKzU5MTUsMjQgQEAKIAogICAgIHNvbGFyaXMqKQogICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0Jd2xhcmM9JyR7d2x9JwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJd2xhcmM9JyR3bCcKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHdsLXogJHt3bH10ZXh0ICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgICAgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAkd2wteiAke3dsfXRleHQgJHdsLU0gJHdsJGxpYi5leHAgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAgICAgICBlbHNlCiAJY2FzZSBgJENDIC1WIDI+JjFgIGluCiAJKiJDb21waWxlcnMgNS4wIiopCiAJICB3bGFyYz0nJwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJExEIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLU0gJGxpYi5leHAgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgICAgICAgJExEIC1HJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1NICRsaWIuZXhwIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfiRSTSAkbGliLmV4cCcKIAkgIDs7CiAJKikKLQkgIHdsYXJjPScke3dsfScKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICB3bGFyYz0nJHdsJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJGFsbG93X3VuZGVmaW5lZF9mbGFnIC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCSAgJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLU0gJGxpYi5leHAgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAkQ0MgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLU0gJGxpYi5leHAgLWggJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAJICA7OwogCWVzYWMKICAgICAgIGZpCkBAIC01NDc3LDExICs1OTQyLDExIEBACiAgICAgICBzb2xhcmlzMi5bWzAtNV1dIHwgc29sYXJpczIuW1swLTVdXS4qKSA7OwogICAgICAgKikKIAkjIFRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBjb21iaW5lIGFuZCByZW9yZGVyIGxpbmtlciBvcHRpb25zLAotCSMgYnV0IHVuZGVyc3RhbmRzIGAteiBsaW5rZXJfZmxhZycuICBHQ0MgZGlzY2FyZHMgaXQgd2l0aG91dCBgJHdsJywKKwkjIGJ1dCB1bmRlcnN0YW5kcyAnLXogbGlua2VyX2ZsYWcnLiAgR0NDIGRpc2NhcmRzIGl0IHdpdGhvdXQgJyR3bCcsCiAJIyBidXQgaXMgY2FyZWZ1bCBlbm91Z2ggbm90IHRvIHJlb3JkZXIuCiAJIyBTdXBwb3J0ZWQgc2luY2UgU29sYXJpcyAyLjYgKG1heWJlIDIuNS4xPykKLQlpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCisJaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwkgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHdsLXogJHt3bH1hbGxleHRyYWN0JGNvbnZlbmllbmNlICR3bC16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCiAJZWxzZQogCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScteiBhbGxleHRyYWN0JGNvbnZlbmllbmNlIC16IGRlZmF1bHRleHRyYWN0JwogCWZpCkBAIC01NDkxLDEwICs1OTU2LDEwIEBACiAgICAgICA7OwogCiAgICAgc3Vub3M0KikKLSAgICAgIGlmIHRlc3QgIngkaG9zdF92ZW5kb3IiID0geHNlcXVlbnQ7IHRoZW4KKyAgICAgIGlmIHRlc3Qgc2VxdWVudCA9ICIkaG9zdF92ZW5kb3IiOyB0aGVuCiAJIyBVc2UgJENDIHRvIGxpbmsgdW5kZXIgc2VxdWVudCwgYmVjYXVzZSBpdCB0aHJvd3MgaW4gc29tZSBleHRyYSAubwogCSMgZmlsZXMgdGhhdCBtYWtlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucyB3b3JrLgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR3bC1oICRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCiAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1hc3NlcnQgcHVyZS10ZXh0IC1Cc3RhdGljIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKICAgICAgIGZpCkBAIC01NTQzLDQzICs2MDA4LDQzIEBACiAgICAgICA7OwogCiAgICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuW1swMV1dLltbMTBdXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bWzAyNF1dKikKLSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JworICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPSckd2wteix0ZXh0JwogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwogICAgICAgcnVucGF0aF92YXI9J0xEX1JVTl9QQVRIJwogCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdDQyI7IHRoZW4KKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wtQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKICAgICAgIGVsc2UKLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBmaQogICAgICAgOzsKIAogICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCi0gICAgICAjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorICAgICAgIyBOb3RlOiBXZSBDQU5OT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAogICAgICAgIyBsaW5rIHdpdGggLWxjLCBhbmQgdGhhdCB3b3VsZCBjYXVzZSBhbnkgc3ltYm9scyB1c2VkIGZyb20gbGliYyB0bwogICAgICAgIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCiAgICAgICAjIGV2ZXIgbGluayBjb3JyZWN0bHkuICBJZiB3ZSdyZSBub3QgdXNpbmcgR05VIGxkIHdlIHVzZSAteiB0ZXh0CiAgICAgICAjIHRob3VnaCwgd2hpY2ggZG9lcyBjYXRjaCBzb21lIGJhZCBzeW1ib2xzIGJ1dCBpc24ndCBhcyBoZWF2eS1oYW5kZWQKICAgICAgICMgYXMgLXogZGVmcy4KLSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHt3bH0teix0ZXh0JwotICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScke3dsfS16LG5vZGVmcycKKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHdsLXosdGV4dCcKKyAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHdsLXosbm9kZWZzJwogICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCiAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIsJGxpYmRpcicKKyAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtUiwkbGliZGlyJwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCiAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLSAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LUJleHBvcnQnCisgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtQmV4cG9ydCcKICAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKIAotICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgIGlmIHRlc3QgeWVzID0gIiRHQ0MiOyB0aGVuCisJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAgICAgICBlbHNlCi0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgJHdsLWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogICAgICAgZmkKICAgICAgIDs7CiAKQEAgLTU1OTQsMTcgKzYwNTksMTcgQEAKICAgICAgIDs7CiAgICAgZXNhYwogCi0gICAgaWYgdGVzdCB4JGhvc3RfdmVuZG9yID0geHNuaTsgdGhlbgorICAgIGlmIHRlc3Qgc25pID0gIiRob3N0X3ZlbmRvciI7IHRoZW4KICAgICAgIGNhc2UgJGhvc3QgaW4KICAgICAgIHN5c3Y0IHwgc3lzdjQuMnV3MiogfCBzeXN2NC4zKiB8IHN5c3Y1KikKLQlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS1CbGFyZ2VkeW5zeW0nCisJX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUJsYXJnZWR5bnN5bScKIAk7OwogICAgICAgZXNhYwogICAgIGZpCiAgIGZpCiBdKQogQUNfTVNHX1JFU1VMVChbJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSldKQotdGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubwordGVzdCBubyA9ICIkX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKSIgJiYgY2FuX2J1aWxkX3NoYXJlZD1ubwogCiBfTFRfVEFHVkFSKHdpdGhfZ251X2xkLCAkMSk9JHdpdGhfZ251X2xkCiAKQEAgLTU2MjEsNyArNjA4Niw3IEBACiAgICMgQXNzdW1lIC1sYyBzaG91bGQgYmUgYWRkZWQKICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPXllcwogCi0gIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICBpZiB0ZXN0IHllcyx5ZXMgPSAiJEdDQywkZW5hYmxlX3NoYXJlZCI7IHRoZW4KICAgICBjYXNlICRfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpIGluCiAgICAgKid+JyopCiAgICAgICAjIEZJWE1FOiB3ZSBtYXkgaGF2ZSB0byBkZWFsIHdpdGggbXVsdGktY29tbWFuZCBzZXF1ZW5jZXMuCkBAIC01NzAxLDEyICs2MTY2LDEyIEBACiBfTFRfVEFHREVDTChbXSwgW2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JdLCBbMV0sCiAgICAgW1doZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAiLXJwYXRoIiBmbGFnIHdpdGggYSBzZXBhcmF0ZWQgYXJndW1lbnRdKQogX0xUX1RBR0RFQ0woW10sIFtoYXJkY29kZV9kaXJlY3RdLCBbMF0sCi0gICAgW1NldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRSR7c2hhcmVkX2V4dH0gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzCisgICAgW1NldCB0byAieWVzIiBpZiB1c2luZyBESVIvbGliTkFNRSRzaGFyZWRfZXh0IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcwogICAgIERJUiBpbnRvIHRoZSByZXN1bHRpbmcgYmluYXJ5XSkKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlXSwgWzBdLAotICAgIFtTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUUke3NoYXJlZF9leHR9IGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcworICAgIFtTZXQgdG8gInllcyIgaWYgdXNpbmcgRElSL2xpYk5BTUUkc2hhcmVkX2V4dCBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMKICAgICBESVIgaW50byB0aGUgcmVzdWx0aW5nIGJpbmFyeSBhbmQgdGhlIHJlc3VsdGluZyBsaWJyYXJ5IGRlcGVuZGVuY3kgaXMKLSAgICAiYWJzb2x1dGUiLCBpLmUgaW1wb3NzaWJsZSB0byBjaGFuZ2UgYnkgc2V0dGluZyAke3NobGlicGF0aF92YXJ9IGlmIHRoZQorICAgICJhYnNvbHV0ZSIsIGkuZSBpbXBvc3NpYmxlIHRvIGNoYW5nZSBieSBzZXR0aW5nICRzaGxpYnBhdGhfdmFyIGlmIHRoZQogICAgIGxpYnJhcnkgaXMgcmVsb2NhdGVkXSkKIF9MVF9UQUdERUNMKFtdLCBbaGFyZGNvZGVfbWludXNfTF0sIFswXSwKICAgICBbU2V0IHRvICJ5ZXMiIGlmIHVzaW5nIHRoZSAtTERJUiBmbGFnIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIKQEAgLTU3NDcsMTAgKzYyMTIsMTAgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDIGNvbXBpbGVyIGFyZSBzdWl0YWJseQogIyBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHIHRvIHdyaXRlCi0jIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KKyMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gJ2xpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0NfQ09ORklHXSwKIFttNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCi1sdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0NDPSRDQwogQUNfTEFOR19QVVNIKEMpCiAKICMgU291cmNlIGZpbGUgZXh0ZW5zaW9uIGZvciBDIHRlc3Qgc291cmNlcy4KQEAgLTU3OTAsMTggKzYyNTUsMTggQEAKICAgTFRfU1lTX0RMT1BFTl9TRUxGCiAgIF9MVF9DTURfU1RSSVBMSUIKIAotICAjIFJlcG9ydCB3aGljaCBsaWJyYXJ5IHR5cGVzIHdpbGwgYWN0dWFsbHkgYmUgYnVpbHQKKyAgIyBSZXBvcnQgd2hhdCBsaWJyYXJ5IHR5cGVzIHdpbGwgYWN0dWFsbHkgYmUgYnVpbHQKICAgQUNfTVNHX0NIRUNLSU5HKFtpZiBsaWJ0b29sIHN1cHBvcnRzIHNoYXJlZCBsaWJyYXJpZXNdKQogICBBQ19NU0dfUkVTVUxUKFskY2FuX2J1aWxkX3NoYXJlZF0pCiAKICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQotICB0ZXN0ICIkY2FuX2J1aWxkX3NoYXJlZCIgPSAibm8iICYmIGVuYWJsZV9zaGFyZWQ9bm8KKyAgdGVzdCBubyA9ICIkY2FuX2J1aWxkX3NoYXJlZCIgJiYgZW5hYmxlX3NoYXJlZD1ubwogCiAgICMgT24gQUlYLCBzaGFyZWQgbGlicmFyaWVzIGFuZCBzdGF0aWMgbGlicmFyaWVzIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UsIGFuZAogICAjIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCiAgIGNhc2UgJGhvc3Rfb3MgaW4KICAgYWl4MyopCi0gICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgICB0ZXN0IHllcyA9ICIkZW5hYmxlX3NoYXJlZCIgJiYgZW5hYmxlX3N0YXRpYz1ubwogICAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCiAgICAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCiAgICAgICBwb3N0aW5zdGFsbF9jbWRzPSckUkFOTElCICRsaWInCkBAIC01ODA5LDggKzYyNzQsMTIgQEAKICAgICA7OwogCiAgIGFpeFtbNC05XV0qKQotICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KLSAgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgaWYgdGVzdCBpYTY0ICE9ICIkaG9zdF9jcHUiOyB0aGVuCisgICAgICBjYXNlICRlbmFibGVfc2hhcmVkLCR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmcgaW4KKyAgICAgIHllcyxhaXgseWVzKSA7OwkJCSMgc2hhcmVkIG9iamVjdCBhcyBsaWIuc28gZmlsZSBvbmx5CisgICAgICB5ZXMsc3ZyNCwqKSA7OwkJCSMgc2hhcmVkIG9iamVjdCBhcyBsaWIuc28gYXJjaGl2ZSBtZW1iZXIgb25seQorICAgICAgeWVzLCopIGVuYWJsZV9zdGF0aWM9bm8gOzsJIyBzaGFyZWQgb2JqZWN0IGluIGxpYi5hIGFyY2hpdmUgYXMgd2VsbAorICAgICAgZXNhYwogICAgIGZpCiAgICAgOzsKICAgZXNhYwpAQCAtNTgxOCwxMyArNjI4NywxMyBAQAogCiAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKICAgIyBNYWtlIHN1cmUgZWl0aGVyIGVuYWJsZV9zaGFyZWQgb3IgZW5hYmxlX3N0YXRpYyBpcyB5ZXMuCi0gIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcworICB0ZXN0IHllcyA9ICIkZW5hYmxlX3NoYXJlZCIgfHwgZW5hYmxlX3N0YXRpYz15ZXMKICAgQUNfTVNHX1JFU1VMVChbJGVuYWJsZV9zdGF0aWNdKQogCiAgIF9MVF9DT05GSUcoJDEpCiBmaQogQUNfTEFOR19QT1AKLUNDPSIkbHRfc2F2ZV9DQyIKK0NDPSRsdF9zYXZlX0NDCiBdKSMgX0xUX0xBTkdfQ19DT05GSUcKIAogCkBAIC01ODMyLDE0ICs2MzAxLDE0IEBACiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBDKysgY29tcGlsZXIgYXJlIHN1aXRhYmx5CiAjIGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcgdG8gd3JpdGUKLSMgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorIyB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byAnbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfQ1hYX0NPTkZJR10sCiBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCiBtNF9yZXF1aXJlKFtfTFRfREVDTF9FR1JFUF0pZG5sCiBtNF9yZXF1aXJlKFtfTFRfUEFUSF9NQU5JRkVTVF9UT09MXSlkbmwKLWlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCi0gICAgKCAodGVzdCAiWCRDWFgiID0gIlhnKysiICYmIGBnKysgLXYgPi9kZXYvbnVsbCAyPiYxYCApIHx8Ci0gICAgKHRlc3QgIlgkQ1hYIiAhPSAiWGcrKyIpKSkgOyB0aGVuCitpZiB0ZXN0IC1uICIkQ1hYIiAmJiAoIHRlc3Qgbm8gIT0gIiRDWFgiICYmCisgICAgKCAodGVzdCBnKysgPSAiJENYWCIgJiYgYGcrKyAtdiA+L2Rldi9udWxsIDI+JjFgICkgfHwKKyAgICAodGVzdCBnKysgIT0gIiRDWFgiKSkpOyB0aGVuCiAgIEFDX1BST0dfQ1hYQ1BQCiBlbHNlCiAgIF9sdF9jYXVnaHRfQ1hYX2Vycm9yPXllcwpAQCAtNTg4MSw3ICs2MzUwLDcgQEAKICMgdGhlIENYWCBjb21waWxlciBpc24ndCB3b3JraW5nLiAgU29tZSB2YXJpYWJsZXMgKGxpa2UgZW5hYmxlX3NoYXJlZCkKICMgYXJlIGN1cnJlbnRseSBhc3N1bWVkIHRvIGFwcGx5IHRvIGFsbCBjb21waWxlcnMgb24gdGhpcyBwbGF0Zm9ybSwKICMgYW5kIHdpbGwgYmUgY29ycnVwdGVkIGJ5IHNldHRpbmcgdGhlbSBiYXNlZCBvbiBhIG5vbi13b3JraW5nIGNvbXBpbGVyLgotaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiOyB0aGVuCiAgICMgQ29kZSB0byBiZSB1c2VkIGluIHNpbXBsZSBjb21waWxlIHRlc3RzCiAgIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0iaW50IHNvbWVfdmFyaWFibGUgPSAwOyIKIApAQCAtNTkyMywzNSArNjM5MiwzNSBAQAogICBpZiB0ZXN0IC1uICIkY29tcGlsZXIiOyB0aGVuCiAgICAgIyBXZSBkb24ndCB3YW50IC1mbm8tZXhjZXB0aW9uIHdoZW4gY29tcGlsaW5nIEMrKyBjb2RlLCBzbyBzZXQgdGhlCiAgICAgIyBub19idWlsdGluX2ZsYWcgc2VwYXJhdGVseQotICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKT0nIC1mbm8tYnVpbHRpbicKICAgICBlbHNlCiAgICAgICBfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnLCAkMSk9CiAgICAgZmkKIAotICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCisgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KICAgICAgICMgU2V0IHVwIGRlZmF1bHQgR05VIEMrKyBjb25maWd1cmF0aW9uCiAKICAgICAgIExUX1BBVEhfTEQKIAogICAgICAgIyBDaGVjayBpZiBHTlUgQysrIHVzZXMgR05VIGxkIGFzIHRoZSB1bmRlcmx5aW5nIGxpbmtlciwgc2luY2UgdGhlCiAgICAgICAjIGFyY2hpdmluZyBjb21tYW5kcyBiZWxvdyBhc3N1bWUgdGhhdCBHTlUgbGQgaXMgYmVpbmcgdXNlZC4KLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICBpZiB0ZXN0IHllcyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAkcGljX2ZsYWcgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDICRwaWNfZmxhZyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCi0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCAkd2wkbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1keW5hbWljJwogCiAgICAgICAgICMgSWYgYXJjaGl2ZV9jbWRzIHJ1bnMgTEQsIG5vdCBDQywgd2xhcmMgc2hvdWxkIGJlIGVtcHR5CiAgICAgICAgICMgWFhYIEkgdGhpbmsgd2xhcmMgY2FuIGJlIGVsaW1pbmF0ZWQgaW4gbHRjZi1jeHgsIGJ1dCBJIG5lZWQgdG8KICAgICAgICAgIyAgICAgaW52ZXN0aWdhdGUgaXQgYSBsaXR0bGUgYml0IG1vcmUuIChNTSkKLSAgICAgICAgd2xhcmM9JyR7d2x9JworICAgICAgICB3bGFyYz0nJHdsJwogCiAgICAgICAgICMgYW5jaWVudCBHTlUgbGQgZGlkbid0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlIGV0LiBhbC4KICAgICAgICAgaWYgZXZhbCAiYCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkYCAtLWhlbHAgMj4mMSIgfAogCSAgJEdSRVAgJ25vLXdob2xlLWFyY2hpdmUnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworICAgICAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0kd2xhcmMnLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlICckd2xhcmMnLS1uby13aG9sZS1hcmNoaXZlJwogICAgICAgICBlbHNlCiAgICAgICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPQogICAgICAgICBmaQpAQCAtNTk4NywxOCArNjQ1NiwzMCBAQAogICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCiAgICAgICAgIDs7CiAgICAgICBhaXhbWzQtOV1dKikKLSAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgaWYgdGVzdCBpYTY0ID0gIiRob3N0X2NwdSI7IHRoZW4KICAgICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0CiAgICAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCiAgICAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwogICAgICAgICAgIGV4cF9zeW1fZmxhZz0nLUJleHBvcnQnCi0gICAgICAgICAgbm9fZW50cnlfZmxhZz0iIgorICAgICAgICAgIG5vX2VudHJ5X2ZsYWc9CiAgICAgICAgIGVsc2UKICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCiAKICAgICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKICAgICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLSAgICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgorICAgICAgICAgICMgaGF2ZSBydW50aW1lIGxpbmtpbmcgZW5hYmxlZCwgYW5kIHVzZSBpdCBmb3IgZXhlY3V0YWJsZXMuCisgICAgICAgICAgIyBGb3Igc2hhcmVkIGxpYnJhcmllcywgd2UgZW5hYmxlL2Rpc2FibGUgcnVudGltZSBsaW5raW5nCisgICAgICAgICAgIyBkZXBlbmRpbmcgb24gdGhlIGtpbmQgb2YgdGhlIHNoYXJlZCBsaWJyYXJ5IGNyZWF0ZWQgLQorICAgICAgICAgICMgd2hlbiAid2l0aF9haXhfc29uYW1lLGFpeF91c2VfcnVudGltZWxpbmtpbmciIGlzOgorICAgICAgICAgICMgImFpeCxubyIgICBsaWIuYShsaWIuc28uVikgc2hhcmVkLCBydGw6bm8sICBmb3IgZXhlY3V0YWJsZXMKKyAgICAgICAgICAjICJhaXgseWVzIiAgbGliLnNvICAgICAgICAgIHNoYXJlZCwgcnRsOnllcywgZm9yIGV4ZWN1dGFibGVzCisgICAgICAgICAgIyAgICAgICAgICAgIGxpYi5hICAgICAgICAgICBzdGF0aWMgYXJjaGl2ZQorICAgICAgICAgICMgImJvdGgsbm8iICBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzCisgICAgICAgICAgIyAgICAgICAgICAgIGxpYi5hKGxpYi5zby5WKSBzaGFyZWQsIHJ0bDpubywgIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgImJvdGgseWVzIiBsaWIuc28uVihzaHIubykgc2hhcmVkLCBydGw6eWVzLCBmb3IgZXhlY3V0YWJsZXMKKyAgICAgICAgICAjICAgICAgICAgICAgbGliLmEobGliLnNvLlYpIHNoYXJlZCwgcnRsOm5vCisgICAgICAgICAgIyAic3ZyNCwqIiAgIGxpYi5zby5WKHNoci5vKSBzaGFyZWQsIHJ0bDp5ZXMsIGZvciBleGVjdXRhYmxlcworICAgICAgICAgICMgICAgICAgICAgICBsaWIuYSAgICAgICAgICAgc3RhdGljIGFyY2hpdmUKICAgICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuW1syM11dfGFpeDQuW1syM11dLip8YWl4W1s1LTldXSopCiAJICAgIGZvciBsZF9mbGFnIGluICRMREZMQUdTOyBkbwogCSAgICAgIGNhc2UgJGxkX2ZsYWcgaW4KQEAgLTYwMDgsNiArNjQ4OSwxMyBAQAogCSAgICAgICAgOzsKIAkgICAgICBlc2FjCiAJICAgIGRvbmUKKwkgICAgaWYgdGVzdCBzdnI0LG5vID0gIiR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCisJICAgICAgIyBXaXRoIGFpeC1zb25hbWU9c3ZyNCwgd2UgY3JlYXRlIHRoZSBsaWIuc28uViBzaGFyZWQgYXJjaGl2ZXMgb25seSwKKwkgICAgICAjIHNvIHdlIGRvbid0IGhhdmUgbGliLmEgc2hhcmVkIGxpYnMgdG8gbGluayBvdXIgZXhlY3V0YWJsZXMuCisJICAgICAgIyBXZSBoYXZlIHRvIGZvcmNlIHJ1bnRpbWUgbGlua2luZyBpbiB0aGlzIGNhc2UuCisJICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz15ZXMKKwkgICAgICBMREZMQUdTPSIkTERGTEFHUyAtV2wsLWJydGwiCisJICAgIGZpCiAJICAgIDs7CiAgICAgICAgICAgZXNhYwogCkBAIC02MDI2LDEzICs2NTE0LDIxIEBACiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9eWVzCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPSc6JwogICAgICAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKLSAgICAgICAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPScke3dsfS1mLCcKKyAgICAgICAgX0xUX1RBR1ZBUihmaWxlX2xpc3Rfc3BlYywgJDEpPSckd2wtZiwnCisgICAgICAgIGNhc2UgJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorICAgICAgICBhaXgsKikgOzsJIyBubyBpbXBvcnQgZmlsZQorICAgICAgICBzdnI0LCogfCAqLHllcykgIyB1c2UgaW1wb3J0IGZpbGUKKyAgICAgICAgICAjIFRoZSBJbXBvcnQgRmlsZSBkZWZpbmVzIHdoYXQgdG8gaGFyZGNvZGUuCisgICAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubworICAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0X2Fic29sdXRlLCAkMSk9bm8KKyAgICAgICAgICA7OworICAgICAgICBlc2FjCiAKLSAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKyAgICAgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KICAgICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuW1swMTJdXXxhaXg0LltbMDEyXV0uKikKICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBkbyB0aGlzIG9uIEFJWCA0LjIgYW5kIGxvd2VyLCB0aGUgY2hlY2sKICAgICAgICAgICAjIGJlbG93IGZvciBicm9rZW4gY29sbGVjdDIgZG9lc24ndCB3b3JrIHVuZGVyIDQuMysKLQkgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKKwkgIGNvbGxlY3QybmFtZT1gJENDIC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCiAJICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJgogCSAgICAgc3RyaW5ncyAiJGNvbGxlY3QybmFtZSIgfCAkR1JFUCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKIAkgIHRoZW4KQEAgLTYwNTAsNjQgKzY1NDYsODQgQEAKIAkgIGZpCiAgICAgICAgICAgZXNhYwogICAgICAgICAgIHNoYXJlZF9mbGFnPSctc2hhcmVkJwotCSAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCi0JICAgIHNoYXJlZF9mbGFnPSIkc2hhcmVkX2ZsYWcgIicke3dsfS1HJworCSAgaWYgdGVzdCB5ZXMgPSAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCisJICAgIHNoYXJlZF9mbGFnPSRzaGFyZWRfZmxhZycgJHdsLUcnCiAJICBmaQorCSAgIyBOZWVkIHRvIGVuc3VyZSBydW50aW1lIGxpbmtpbmcgaXMgZGlzYWJsZWQgZm9yIHRoZSB0cmFkaXRpb25hbAorCSAgIyBzaGFyZWQgbGlicmFyeSwgb3IgdGhlIGxpbmtlciBtYXkgZXZlbnR1YWxseSBmaW5kIHNoYXJlZCBsaWJyYXJpZXMKKwkgICMgL3dpdGgvIEltcG9ydCBGaWxlIC0gd2UgZG8gbm90IHdhbnQgdG8gbWl4IHRoZW0uCisJICBzaGFyZWRfZmxhZ19haXg9Jy1zaGFyZWQnCisJICBzaGFyZWRfZmxhZ19zdnI0PSctc2hhcmVkICR3bC1HJwogICAgICAgICBlbHNlCiAgICAgICAgICAgIyBub3QgdXNpbmcgZ2NjCi0gICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IGlhNjQgPSAiJGhvc3RfY3B1IjsgdGhlbgogCSAgIyBWaXN1YWxBZ2UgQysrLCBWZXJzaW9uIDUuNSBmb3IgQUlYIDVMIGZvciBJQS02NCwgQmV0YSAzIFJlbGVhc2UKIAkgICMgY2hva2VzIG9uIC1XbCwtRy4gVGhlIGZvbGxvd2luZyBsaW5lIGlzIGNvcnJlY3Q6CiAJICBzaGFyZWRfZmxhZz0nLUcnCiAgICAgICAgICAgZWxzZQotCSAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLQkgICAgICBzaGFyZWRfZmxhZz0nJHt3bH0tRycKKwkgICAgaWYgdGVzdCB5ZXMgPSAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciOyB0aGVuCisJICAgICAgc2hhcmVkX2ZsYWc9JyR3bC1HJwogCSAgICBlbHNlCi0JICAgICAgc2hhcmVkX2ZsYWc9JyR7d2x9LWJNOlNSRScKKwkgICAgICBzaGFyZWRfZmxhZz0nJHdsLWJNOlNSRScKIAkgICAgZmkKKwkgICAgc2hhcmVkX2ZsYWdfYWl4PSckd2wtYk06U1JFJworCSAgICBzaGFyZWRfZmxhZ19zdnI0PSckd2wtRycKICAgICAgICAgICBmaQogICAgICAgICBmaQogCi0gICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJleHBhbGwnCisgICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1iZXhwYWxsJwogICAgICAgICAjIEl0IHNlZW1zIHRoYXQgLWJleHBhbGwgZG9lcyBub3QgZXhwb3J0IHN5bWJvbHMgYmVnaW5uaW5nIHdpdGgKICAgICAgICAgIyB1bmRlcnNjb3JlIChfKSwgc28gaXQgaXMgYmV0dGVyIHRvIGdlbmVyYXRlIGEgbGlzdCBvZiBzeW1ib2xzIHRvCiAJIyBleHBvcnQuCiAgICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCi0gICAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgorCWlmIHRlc3QgYWl4LHllcyA9ICIkd2l0aF9haXhfc29uYW1lLCRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIjsgdGhlbgogICAgICAgICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1bnRpbWUgbG9hZGluZyBmbGFncyAoLWJydGwpLAogICAgICAgICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLSAgICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJvaycKKyAgICAgICAgICAjIFRoZSAiLUciIGxpbmtlciBmbGFnIGFsbG93cyB1bmRlZmluZWQgc3ltYm9scy4KKyAgICAgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9Jy1iZXJub3RvaycKICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKICAgICAgICAgICAjIGV4ZWN1dGFibGUuCiAgICAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCiAKLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKKyAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJHdsJyRub19lbnRyeV9mbGFnJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgLW4gIiRhbGxvd191bmRlZmluZWRfZmxhZyI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHdsJGFsbG93X3VuZGVmaW5lZF9mbGFnIjsgZWxzZSA6OyBmaWAgJHdsJyRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scycgJyRzaGFyZWRfZmxhZwogICAgICAgICBlbHNlCi0gICAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLQkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJworICAgICAgICAgIGlmIHRlc3QgaWE2NCA9ICIkaG9zdF9jcHUiOyB0aGVuCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtUiAkbGliZGlyOi91c3IvbGliOi9saWInCiAJICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0iLXogbm9kZWZzIgotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyIKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IlwkQ0MgJHNoYXJlZF9mbGFnIicgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwkd2wkbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyAkd2wkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJyJcJHdsJGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzIgogICAgICAgICAgIGVsc2UKIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCiAJICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KIAkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLQkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKIAkgICAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS1iZXJub3RvaycKLQkgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tYmVyb2snCi0JICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHdsLWJlcm5vdG9rJworCSAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAkd2wtYmVyb2snCisJICAgIGlmIHRlc3QgeWVzID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KIAkgICAgICAjIFdlIG9ubHkgdXNlIHRoaXMgY29kZSBmb3IgR05VIGxkcyB0aGF0IHN1cHBvcnQgLS13aG9sZS1hcmNoaXZlLgotCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckd2wtLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogCSAgICBlbHNlCiAJICAgICAgIyBFeHBvcnRlZCBzeW1ib2xzIGNhbiBiZSBwdWxsZWQgaW50byBzaGFyZWQgb2JqZWN0cyBmcm9tIGFyY2hpdmVzCiAJICAgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckY29udmVuaWVuY2UnCiAJICAgIGZpCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT15ZXMKLQkgICAgIyBUaGlzIGlzIHNpbWlsYXIgdG8gaG93IEFJWCB0cmFkaXRpb25hbGx5IGJ1aWxkcyBpdHMgc2hhcmVkCi0JICAgICMgbGlicmFyaWVzLgotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iXCRDQyAkc2hhcmVkX2ZsYWciJyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICR7d2x9LWJub2VudHJ5ICRjb21waWxlcl9mbGFncyAke3dsfS1iRTokZXhwb3J0X3N5bWJvbHMke2FsbG93X3VuZGVmaW5lZF9mbGFnfX4kQVIgJEFSX0ZMQUdTICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lJHJlbGVhc2UuYSAkb3V0cHV0X29iamRpci8kc29uYW1lJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJFJNIC1yICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kfiRNS0RJUiAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZCcKKwkgICAgIyAtYnJ0bCBhZmZlY3RzIG11bHRpcGxlIGxpbmtlciBzZXR0aW5ncywgLWJlcm9rIGRvZXMgbm90IGFuZCBpcyBvdmVycmlkZGVuIGxhdGVyCisJICAgIGNvbXBpbGVyX2ZsYWdzX2ZpbHRlcmVkPSdgZnVuY19lY2hvX2FsbCAiJGNvbXBpbGVyX2ZsYWdzICIgfCAkU0VEIC1lICJzJS1icnRsXFwoW1ssIF1dXFwpJS1iZXJva1xcMSVnImAnCisJICAgIGlmIHRlc3Qgc3ZyNCAhPSAiJHdpdGhfYWl4X3NvbmFtZSI7IHRoZW4KKwkgICAgICAjIFRoaXMgaXMgc2ltaWxhciB0byBob3cgQUlYIHRyYWRpdGlvbmFsbHkgYnVpbGRzIGl0cyBzaGFyZWQKKwkgICAgICAjIGxpYnJhcmllcy4gTmVlZCAtYm5vcnRsIGxhdGUsIHdlIG1heSBoYXZlIC1icnRsIGluIExERkxBR1MuCisJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9IiRfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKSInfiRDQyAnJHNoYXJlZF9mbGFnX2FpeCcgLW8gJG91dHB1dF9vYmpkaXIvJHJlYWxuYW1lLmQvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRBUiAkQVJfRkxBR1MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUkcmVsZWFzZS5hICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzb25hbWUnCisJICAgIGZpCisJICAgIGlmIHRlc3QgYWl4ICE9ICIkd2l0aF9haXhfc29uYW1lIjsgdGhlbgorCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSIkX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSkiJ34kQ0MgJyRzaGFyZWRfZmxhZ19zdnI0JyAtbyAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMubyAkbGlib2JqcyAkZGVwbGlicyAkd2wtYm5vZW50cnkgJyRjb21waWxlcl9mbGFnc19maWx0ZXJlZCckd2wtYkU6JGV4cG9ydF9zeW1ib2xzJGFsbG93X3VuZGVmaW5lZF9mbGFnfiRTVFJJUCAtZSAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWMub34oIGZ1bmNfZWNob19hbGwgIiMhICRzb25hbWUoJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjLm8pIjsgaWYgdGVzdCBzaHJfNjQgPSAiJHNoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjIjsgdGhlbiBmdW5jX2VjaG9fYWxsICIjIDY0IjsgZWxzZSBmdW5jX2VjaG9fYWxsICIjIDMyIjsgZmk7IGNhdCAkZXhwb3J0X3N5bWJvbHMgKSA+ICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXB+JEFSICRBUl9GTEFHUyAkb3V0cHV0X29iamRpci8kc29uYW1lICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5vICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kLyRzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlYy5pbXAnCisJICAgIGVsc2UKKwkgICAgICAjIHVzZWQgYnkgLWRscHJlb3BlbiB0byBnZXQgdGhlIHN5bWJvbHMKKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iJF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIid+JE1WICAkb3V0cHV0X29iamRpci8kcmVhbG5hbWUuZC8kc29uYW1lICRvdXRwdXRfb2JqZGlyJworCSAgICBmaQorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0iJF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpIid+JFJNIC1yICRvdXRwdXRfb2JqZGlyLyRyZWFsbmFtZS5kJwogICAgICAgICAgIGZpCiAgICAgICAgIGZpCiAgICAgICAgIDs7CkBAIC02MTE3LDcgKzY2MzMsNyBAQAogCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCiAJICAjIEpvc2VwaCBCZWNrZW5iYWNoIDxqcmIzQGJlc3QuY29tPiBzYXlzIHNvbWUgcmVsZWFzZXMgb2YgZ2NjCiAJICAjIHN1cHBvcnQgLS11bmRlZmluZWQuICBUaGlzIGRlc2VydmVzIHNvbWUgaW52ZXN0aWdhdGlvbi4gIEZJWE1FCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW5vc3RhcnQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogCWVsc2UKIAkgIF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KIAlmaQpAQCAtNjE0NSw1NyArNjY2MSw1OCBAQAogCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KIAkgIGxpYmV4dD1saWIKIAkgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisJICBzaHJleHRfY21kcz0uZGxsCiAJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotCSAgICBlbHNlCi0JICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0JICAgIGZpfgotCSAgICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0JICAgIGxpbmtuYW1lcz0nCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifmxpbmtuYW1lcz0nCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgX0xUX0RMTF9ERUZfUChbJGV4cG9ydF9zeW1ib2xzXSk7IHRoZW4KKyAgICAgICAgICAgICAgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmIjsKKyAgICAgICAgICAgICAgZWNobyAiJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZGVmIiA+ICIkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cCI7CisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICRTRUQgLWUgJ1wnJ3MvXi8tbGluayAtRVhQT1JUOi8nXCcnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisgICAgICAgICAgICBmaX4KKyAgICAgICAgICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKyAgICAgICAgICAgIGxpbmtuYW1lcz0nCiAJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCiAJICAjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgJDEpPSd0cnVlJwogCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCiAJICAjIERvbid0IHVzZSByYW5saWIKIAkgIF9MVF9UQUdWQVIob2xkX3Bvc3RpbnN0YWxsX2NtZHMsICQxKT0nY2htb2QgNjQ0ICRvbGRsaWInCiAJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotCSAgICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0JICAgICAgKi5leGV8Ki5FWEUpIDs7Ci0JICAgICAgKikKLQkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotCQk7OwotCSAgICBlc2FjfgotCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgotCSAgICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0JICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0JICAgIGZpJworICAgICAgICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKyAgICAgICAgICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKyAgICAgICAgICAgICAgKi5leGV8Ki5FWEUpIDs7CisgICAgICAgICAgICAgICopCisgICAgICAgICAgICAgICAgbHRfb3V0cHV0ZmlsZT0kbHRfb3V0cHV0ZmlsZS5leGUKKyAgICAgICAgICAgICAgICBsdF90b29sX291dHB1dGZpbGU9JGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgZXNhY34KKyAgICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkbHRfb3V0cHV0ZmlsZSJ+CisgICAgICAgICAgICBpZiB0ZXN0IDogIT0gIiRNQU5JRkVTVF9UT09MIiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKyAgICAgICAgICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKyAgICAgICAgICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisgICAgICAgICAgICBmaScKIAkgIDs7CiAJKikKIAkgICMgZysrCiAJICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAogCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0JICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLS1leHBvcnQtYWxsLXN5bWJvbHMnCiAJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKIAkgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KIAkgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwogCiAJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLQkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLQkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0JICAgIGVsc2UKLQkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLQkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotCSAgICBmaX4KLQkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHdsLS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUsIHVzZSBpdCBhcworCSAgICAjIGlzOyBvdGhlcndpc2UsIHByZXBlbmQgRVhQT1JUUy4uLgorCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0naWYgX0xUX0RMTF9ERUZfUChbJGV4cG9ydF9zeW1ib2xzXSk7IHRoZW4KKyAgICAgICAgICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKyAgICAgICAgICAgIGZpfgorICAgICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR3bC0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKIAkgIGVsc2UKIAkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogCSAgZmkKQEAgLTYyMDYsNiArNjcyMywzNCBAQAogICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKIAk7OwogCisgICAgICBvczIqKQorCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisJX0xUX1RBR1ZBUihoYXJkY29kZV9taW51c19MLCAkMSk9eWVzCisJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisJc2hyZXh0X2NtZHM9LmRsbAorCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRFQ0hPICJMSUJSQVJZICR7c29uYW1lJSRzaGFyZWRfZXh0fSBJTklUSU5TVEFOQ0UgVEVSTUlOU1RBTkNFIiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJERVNDUklQVElPTiBcIiRsaWJuYW1lXCIiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPICJEQVRBIE1VTFRJUExFIE5PTlNIQVJFRCIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJEVDSE8gRVhQT1JUUyA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICBlbXhleHAgJGxpYm9ianMgfCAkU0VEIC8iX0RMTF9Jbml0VGVybSIvZCA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkQ0MgLVpkbGwgLVpjcnRkbGwgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgZW14aW1wIC1vICRsaWIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckRUNITyAiTElCUkFSWSAke3NvbmFtZSUkc2hhcmVkX2V4dH0gSU5JVElOU1RBTkNFIFRFUk1JTlNUQU5DRSIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkRUNITyAiREVTQ1JJUFRJT04gXCIkbGlibmFtZVwiIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWZ+CisJICAkRUNITyAiREFUQSBNVUxUSVBMRSBOT05TSEFSRUQiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgICRFQ0hPIEVYUE9SVFMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgcHJlZml4X2NtZHM9IiRTRUQifgorCSAgaWYgdGVzdCBFWFBPUlRTID0gImAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiOyB0aGVuCisJICAgIHByZWZpeF9jbWRzPSIkcHJlZml4X2NtZHMgLWUgMWQiOworCSAgZml+CisJICBwcmVmaXhfY21kcz0iJHByZWZpeF9jbWRzIC1lIFwicy9eXCguKlwpJC9fXDEvZ1wiIn4KKwkgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkcHJlZml4X2NtZHMgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmfgorCSAgJENDIC1aZGxsIC1aY3J0ZGxsIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZn4KKwkgIGVteGltcCAtbyAkbGliICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZicKKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX0Zyb21fbmV3X2NtZHMsICQxKT0nZW14aW1wIC1vICRvdXRwdXRfb2JqZGlyLyR7bGlibmFtZX1fZGxsLmEgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZGVmJworCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworCTs7CisKICAgICAgIGRndXgqKQogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIGVjKysqKQpAQCAtNjI0MSwxNCArNjc4NiwxNCBAQAogICAgICAgICA7OwogCiAgICAgICBoYWlrdSopCi0gICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCiAgICAgICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwogICAgICAgICA7OwogCiAgICAgICBocHV4OSopCi0gICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bCtiICR3bCRsaWJkaXInCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKLSAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKyAgICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUUnCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfZGlyZWN0LCAkMSk9eWVzCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbWludXNfTCwgJDEpPXllcyAjIE5vdCBpbiB0aGUgc2VhcmNoIFBBVEgsCiAJCQkJICAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0CkBAIC02MjYwLDcgKzY4MDUsNyBAQAogICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwogICAgICAgICAgICAgOzsKICAgICAgICAgICBhQ0MqKQotICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1iICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLWIgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cwogICAgICAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAgICAgICAgICAgICAjIGxpbmtpbmcgYSBzaGFyZWQgbGlicmFyeS4KQEAgLTYyNjksMTEgKzY4MTQsMTEgQEAKICAgICAgICAgICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAgICAgICAgICAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAgICAgICAgICAgICAjIGRlcGVuZGVuY2llcy4KLSAgICAgICAgICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkRUdSRVAgIlwtTCJgOyBsaXN0PSIiOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJworICAgICAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAoJENDIC1iICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxKSB8ICRFR1JFUCAiXC1MImA7IGxpc3Q9IDsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKICAgICAgICAgICAgIDs7CiAgICAgICAgICAgKikKLSAgICAgICAgICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICAgICAgIGlmIHRlc3QgeWVzID0gIiRHWFgiOyB0aGVuCisgICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgIngkb3V0cHV0X29iamRpci8kc29uYW1lIiA9ICJ4JGxpYiIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwogICAgICAgICAgICAgZWxzZQogICAgICAgICAgICAgICAjIEZJWE1FOiBpbnNlcnQgcHJvcGVyIEMrKyBsaWJyYXJ5IHN1cHBvcnQKICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwpAQCAtNjI4MywxNSArNjgyOCwxNSBAQAogICAgICAgICA7OwogCiAgICAgICBocHV4MTAqfGhwdXgxMSopCi0gICAgICAgIGlmIHRlc3QgJHdpdGhfZ251X2xkID0gbm87IHRoZW4KLQkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfStiICR7d2x9JGxpYmRpcicKKyAgICAgICAgaWYgdGVzdCBubyA9ICIkd2l0aF9nbnVfbGQiOyB0aGVuCisJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsK2IgJHdsJGxpYmRpcicKIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKIAogICAgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICAgICAgICBocHBhKjY0KnxpYTY0KikKICAgICAgICAgICAgICAgOzsKICAgICAgICAgICAgICopCi0JICAgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwkgICAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtRScKICAgICAgICAgICAgICAgOzsKICAgICAgICAgICBlc2FjCiAgICAgICAgIGZpCkBAIC02MzE3LDEzICs2ODYyLDEzIEBACiAgICAgICAgICAgYUNDKikKIAkgICAgY2FzZSAkaG9zdF9jcHUgaW4KIAkgICAgICBocHBhKjY0KikKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgOzsKIAkgICAgICBpYTY0KikKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAkd2wraCAkd2wkc29uYW1lICR3bCtub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgIDs7CiAJICAgICAgKikKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtYiAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1iICR3bCtoICR3bCRzb25hbWUgJHdsK2IgJHdsJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICAgICAgOzsKIAkgICAgZXNhYwogCSAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCkBAIC02MzM0LDIwICs2ODc5LDIwIEBACiAJICAgICMgZXhwbGljaXRseSBsaW5raW5nIHN5c3RlbSBvYmplY3QgZmlsZXMgc28gd2UgbmVlZCB0byBzdHJpcCB0aGVtCiAJICAgICMgZnJvbSB0aGUgb3V0cHV0IHNvIHRoYXQgdGhleSBkb24ndCBnZXQgaW5jbHVkZWQgaW4gdGhlIGxpYnJhcnkKIAkgICAgIyBkZXBlbmRlbmNpZXMuCi0JICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gKCRDQyAtYiAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSkgfCAkR1JFUCAiXC1MImA7IGxpc3Q9IDsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKIAkgICAgOzsKICAgICAgICAgICAqKQotCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotCSAgICAgIGlmIHRlc3QgJHdpdGhfZ251X2xkID0gbm87IHRoZW4KKwkgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KKwkgICAgICBpZiB0ZXN0IG5vID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KIAkgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCiAJICAgICAgICAgIGhwcGEqNjQqKQotCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHdsK2ggJHdsJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgICBpYTY0KikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHdsK2ggJHdsJHNvbmFtZSAkd2wrbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgICAgICAgICAgOzsKIAkgICAgICAgICAgKikKLQkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAkd2wraCAkd2wkc29uYW1lICR3bCtiICR3bCRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKIAkgICAgICAgICAgICA7OwogCSAgICAgICAgZXNhYwogCSAgICAgIGZpCkBAIC02MzYyLDIyICs2OTA3LDIyIEBACiAgICAgICBpbnRlcml4W1szLTldXSopCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT1ubwogCV9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi0JX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoLCRsaWJkaXInCisJX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLUUnCiAJIyBIYWNrOiBPbiBJbnRlcml4IDMueCwgd2UgY2Fubm90IGNvbXBpbGUgUElDIGJlY2F1c2Ugb2YgYSBicm9rZW4gZ2NjLgogCSMgSW5zdGVhZCwgc2hhcmVkIGxpYnJhcmllcyBhcmUgbG9hZGVkIGF0IGFuIGltYWdlIGJhc2UgKDB4MTAwMDAwMDAgYnkKIAkjIGRlZmF1bHQpIGFuZCByZWxvY2F0ZWQgaWYgdGhleSBjb25mbGljdCwgd2hpY2ggaXMgYSBzbG93IHZlcnkgbWVtb3J5CiAJIyBjb25zdW1pbmcgYW5kIGZyYWdtZW50aW5nIHByb2Nlc3MuICBUbyBhdm9pZCB0aGlzLCB3ZSBwaWNrIGEgcmFuZG9tLAogCSMgMjU2IEtpQi1hbGlnbmVkIGltYWdlIGJhc2UgYmV0d2VlbiAweDUwMDAwMDAwIGFuZCAweDZGRkMwMDAwIGF0IGxpbmsKIAkjIHRpbWUuICBNb3ZpbmcgdXAgZnJvbSAweDEwMDAwMDAwIGFsc28gYWxsb3dzIG1vcmUgc2JyaygyKSBzcGFjZS4KLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJwotCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdzZWQgInMsXixfLCIgJGV4cG9ydF9zeW1ib2xzID4kb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWgsJHNvbmFtZSAke3dsfS0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAke3dsfS0taW1hZ2UtYmFzZSxgZXhwciAke1JBTkRPTS0kJH0gJSA0MDk2IC8gMiBcKiAyNjIxNDQgKyAxMzQyMTc3MjgwYCAtbyAkbGliJworCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLWgsJHNvbmFtZSAkd2wtLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nc2VkICJzfF58X3wiICRleHBvcnRfc3ltYm9scyA+JG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHBzeW1+JENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtaCwkc29uYW1lICR3bC0tcmV0YWluLXN5bWJvbHMtZmlsZSwkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cHN5bSAkd2wtLWltYWdlLWJhc2UsYGV4cHIgJHtSQU5ET00tJCR9ICUgNDA5NiAvIDIgXCogMjYyMTQ0ICsgMTM0MjE3NzI4MGAgLW8gJGxpYicKIAk7OwogICAgICAgaXJpeDUqIHwgaXJpeDYqKQogICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIENDKikKIAkgICAgIyBTR0kgQysrCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1hbGwgLW11bHRpZ290ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtYWxsIC1tdWx0aWdvdCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAKIAkgICAgIyBBcmNoaXZlcyBjb250YWluaW5nIEMrKyBvYmplY3QgZmlsZXMgbXVzdCBiZSBjcmVhdGVkIHVzaW5nCiAJICAgICMgIkNDIC1hciIsIHdoZXJlICJDQyIgaXMgdGhlIElSSVggQysrIGNvbXBpbGVyLiAgVGhpcyBpcwpAQCAtNjM4NiwxNyArNjkzMSwxNyBAQAogCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1hciAtV1IsLXUgLW8gJG9sZGxpYiAkb2xkb2JqcycKIAkgICAgOzsKICAgICAgICAgICAqKQotCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKwkgICAgaWYgdGVzdCB5ZXMgPSAiJEdYWCI7IHRoZW4KKwkgICAgICBpZiB0ZXN0IG5vID0gIiR3aXRoX2dudV9sZCI7IHRoZW4KKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCSAgICAgIGVsc2UKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgLW8gJGxpYicKIAkgICAgICBmaQogCSAgICBmaQogCSAgICBfTFRfVEFHVkFSKGxpbmtfYWxsX2RlcGxpYnMsICQxKT15ZXMKIAkgICAgOzsKICAgICAgICAgZXNhYwotICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCiAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKICAgICAgICAgX0xUX1RBR1ZBUihpbmhlcml0X3JwYXRoLCAkMSk9eWVzCiAgICAgICAgIDs7CkBAIC02NDA5LDggKzY5NTQsOCBAQAogCSAgICAjIEtDQyB3aWxsIG9ubHkgY3JlYXRlIGEgc2hhcmVkIGxpYnJhcnkgaWYgdGhlIG91dHB1dCBmaWxlCiAJICAgICMgZW5kcyB3aXRoICIuc28iIChvciAiLnNsIiBmb3IgSFAtVVgpLCBzbyByZW5hbWUgdGhlIGxpYnJhcnkKIAkgICAgIyB0byBpdHMgcHJvcGVyIG5hbWUgKHdpdGggdmVyc2lvbikgYWZ0ZXIgbGlua2luZy4KLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWIgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHM7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gJGxpYiB8ICRTRUQgLWUgInMvXCR0ZW1wZXh0XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndGVtcGV4dD1gZWNobyAkc2hhcmVkX2V4dCB8ICRTRUQgLWUgJ1wnJ3MvXChbW14oKTAtOUEtWmEtent9XV1cKS9cXFxcXDEvZydcJydgOyB0ZW1wbGliPWBlY2hvICRsaWIgfCAkU0VEIC1lICJzL1wkdGVtcGV4dFwuLiovLnNvLyJgOyAkQ0MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC0tc29uYW1lICRzb25hbWUgLW8gXCR0ZW1wbGliICR3bC1yZXRhaW4tc3ltYm9scy1maWxlLCRleHBvcnRfc3ltYm9sczsgbXYgXCR0ZW1wbGliICRsaWInCiAJICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCiAJICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgpAQCAtNjQxOSwxMCArNjk2NCwxMCBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgLW8gbGliY29uZnRlc3Qkc2hhcmVkX2V4dCAyPiYxIHwgJEdSRVAgImxkImA7IHJtIC1mIGxpYmNvbmZ0ZXN0JHNoYXJlZF9leHQ7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICIkbGlzdCInCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAtbyBsaWJjb25mdGVzdCRzaGFyZWRfZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgcm0gLWYgbGliY29uZnRlc3Qkc2hhcmVkX2V4dDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCi0JICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLS1leHBvcnQtZHluYW1pYycKIAogCSAgICAjIEFyY2hpdmVzIGNvbnRhaW5pbmcgQysrIG9iamVjdCBmaWxlcyBtdXN0IGJlIGNyZWF0ZWQgdXNpbmcKIAkgICAgIyAiQ0MgLUJzdGF0aWMiLCB3aGVyZSAiQ0MiIGlzIHRoZSBLQUkgQysrIGNvbXBpbGVyLgpAQCAtNjQzNiw1OSArNjk4MSw1OSBAQAogCSAgICAjIGVhcmxpZXIgZG8gbm90IGFkZCB0aGUgb2JqZWN0cyB0aGVtc2VsdmVzLgogCSAgICBjYXNlIGAkQ0MgLVYgMj4mMWAgaW4KIAkgICAgICAqIlZlcnNpb24gNy4iKikKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotCQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwogCQk7OwogCSAgICAgICopICAjIFZlcnNpb24gOC4wIG9yIG5ld2VyCiAJICAgICAgICB0bXBfaWR5bj0KIAkgICAgICAgIGNhc2UgJGhvc3RfY3B1IGluCiAJCSAgaWE2NCopIHRtcF9pZHluPScgLWlfZHluYW1pYyc7OwogCQllc2FjCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCciJHRtcF9pZHluIicgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCQlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQnIiR0bXBfaWR5biInICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJCTs7CiAJICAgIGVzYWMKIAkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywgJDEpPW5vCi0JICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCwkbGliZGlyJwotCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPScke3dsfS0tZXhwb3J0LWR5bmFtaWMnCi0JICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHt3bH0tLW5vLXdob2xlLWFyY2hpdmUnCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGgsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLS1leHBvcnQtZHluYW1pYycKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckd2wtLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogCSAgICA7OwogICAgICAgICAgIHBnQ0MqIHwgcGdjcHAqKQogICAgICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBDKysgY29tcGlsZXIKIAkgICAgY2FzZSBgJENDIC1WYCBpbgogCSAgICAqcGdDQ1wgW1sxLTVdXS4qIHwgKnBnY3BwXCBbWzEtNV1dLiopCiAJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLQkJcm0gLXJmICR0cGxkaXJ+Ci0JCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9ianMgJGxpYm9ianMgJGNvbXBpbGVfZGVwbGlic34KLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKKyAgICAgICAgICAgICAgIHJtIC1yZiAkdHBsZGlyfgorICAgICAgICAgICAgICAgJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgorICAgICAgICAgICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKIAkgICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLQkJcm0gLXJmICR0cGxkaXJ+Ci0JCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgfgotCQkkUkFOTElCICRvbGRsaWInCisgICAgICAgICAgICAgICAgcm0gLXJmICR0cGxkaXJ+CisgICAgICAgICAgICAgICAgJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KKyAgICAgICAgICAgICAgICAkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KKyAgICAgICAgICAgICAgICAkUkFOTElCICRvbGRsaWInCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLQkJcm0gLXJmICR0cGxkaXJ+Ci0JCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKyAgICAgICAgICAgICAgICBybSAtcmYgJHRwbGRpcn4KKyAgICAgICAgICAgICAgICAkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KKyAgICAgICAgICAgICAgICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwogCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotCQlybSAtcmYgJHRwbGRpcn4KLQkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgICAgICAgICAgcm0gLXJmICR0cGxkaXJ+CisgICAgICAgICAgICAgICAgJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CisgICAgICAgICAgICAgICAgJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtc29uYW1lICR3bCRzb25hbWUgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCiAJICAgICAgOzsKIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKLQkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLQkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKIAkgICAgICA7OwogCSAgICBlc2FjCiAKLQkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1ycGF0aCAke3dsfSRsaWJkaXInCi0JICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS0td2hvbGUtYXJjaGl2ZWBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0ICAtbiBcIiRjb252XCIgJiYgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC0tcnBhdGggJHdsJGxpYmRpcicKKwkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHdsLS1leHBvcnQtZHluYW1pYycKKwkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckd2wtLXdob2xlLWFyY2hpdmVgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAgLW4gXCIkY29udlwiICYmIG5ld19jb252ZW5pZW5jZT1cIiRuZXdfY29udmVuaWVuY2UsJGNvbnZcIjsgZG9uZTsgZnVuY19lY2hvX2FsbCBcIiRuZXdfY29udmVuaWVuY2VcImAgJHdsLS1uby13aG9sZS1hcmNoaXZlJwogICAgICAgICAgICAgOzsKIAkgIGN4eCopCiAJICAgICMgQ29tcGFxIEMrKwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAgLW8gJGxpYiAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scycKKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSAgLW8gJGxpYiAkd2wtcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMnCiAKIAkgICAgcnVucGF0aF92YXI9TERfUlVOX1BBVEgKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1ycGF0aCAkbGliZGlyJwpAQCAtNjUwMiwxOCArNzA0NywxOCBAQAogCSAgICAjIGV4cGxpY2l0bHkgbGlua2luZyBzeXN0ZW0gb2JqZWN0IGZpbGVzIHNvIHdlIG5lZWQgdG8gc3RyaXAgdGhlbQogCSAgICAjIGZyb20gdGhlIG91dHB1dCBzbyB0aGF0IHRoZXkgZG9uJ3QgZ2V0IGluY2x1ZGVkIGluIHRoZSBsaWJyYXJ5CiAJICAgICMgZGVwZW5kZW5jaWVzLgotCSAgICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD0ndGVtcGxpc3Q9YCRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgImxkImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQgLiokXCkvXDEvImA7IGxpc3Q9IiI7IGZvciB6IGluICR0ZW1wbGlzdDsgZG8gY2FzZSAkeiBpbiBjb25mdGVzdC4kb2JqZXh0KSBsaXN0PSIkbGlzdCAkeiI7OyAqLiRvYmpleHQpOzsgKikgbGlzdD0iJGxpc3QgJHoiOztlc2FjOyBkb25lOyBmdW5jX2VjaG9fYWxsICJYJGxpc3QiIHwgJFhzZWQnCisJICAgIG91dHB1dF92ZXJib3NlX2xpbmtfY21kPSd0ZW1wbGlzdD1gJENDIC1zaGFyZWQgJENGTEFHUyAtdiBjb25mdGVzdC4kb2JqZXh0IDI+JjEgfCAkR1JFUCAibGQiYDsgdGVtcGxpc3Q9YGZ1bmNfZWNob19hbGwgIiR0ZW1wbGlzdCIgfCAkU0VEICJzL1woXi4qbGQuKlwpXCggLipsZCAuKiRcKS9cMS8iYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiWCRsaXN0IiB8ICRYc2VkJwogCSAgICA7OwogCSAgeGwqIHwgbXBpeGwqIHwgYmd4bCopCiAJICAgICMgSUJNIFhMIDguMCBvbiBQUEMsIHdpdGggR05VIGxkCi0JICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0JICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtZHluYW1pYycKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1xbWtzaHJvYmogJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0JICAgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCAkd2wkbGliZGlyJworCSAgICBfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtLWV4cG9ydC1keW5hbWljJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXFta3Nocm9iaiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisJICAgIGlmIHRlc3QgeWVzID0gIiRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciOyB0aGVuCiAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JCWNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLQkJZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0JCSRDQyAtcW1rc2hyb2JqICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS12ZXJzaW9uLXNjcmlwdCAke3dsfSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworICAgICAgICAgICAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAgICAgICAgICAgICAgICAkQ0MgLXFta3Nocm9iaiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkd2wkc29uYW1lICR3bC12ZXJzaW9uLXNjcmlwdCAkd2wkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKIAkgICAgZmkKIAkgICAgOzsKIAkgICopCkBAIC02NTIxLDEwICs3MDY2LDEwIEBACiAJICAgICpTdW5cIEMqKQogCSAgICAgICMgU3VuIEMrKyA1LjkKIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCi0JICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scycKKwkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUckYWxsb3dfdW5kZWZpbmVkX2ZsYWcgLWgkc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scycKIAkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLVIkbGliZGlyJwotCSAgICAgIF9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nJHt3bH0tLXdob2xlLWFyY2hpdmVgbmV3X2NvbnZlbmllbmNlPTsgZm9yIGNvbnYgaW4gJGNvbnZlbmllbmNlXCJcIjsgZG8gdGVzdCAteiBcIiRjb252XCIgfHwgbmV3X2NvbnZlbmllbmNlPVwiJG5ld19jb252ZW5pZW5jZSwkY29udlwiOyBkb25lOyBmdW5jX2VjaG9fYWxsIFwiJG5ld19jb252ZW5pZW5jZVwiYCAke3dsfS0tbm8td2hvbGUtYXJjaGl2ZScKKwkgICAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JyR3bC0td2hvbGUtYXJjaGl2ZWBuZXdfY29udmVuaWVuY2U9OyBmb3IgY29udiBpbiAkY29udmVuaWVuY2VcIlwiOyBkbyB0ZXN0IC16IFwiJGNvbnZcIiB8fCBuZXdfY29udmVuaWVuY2U9XCIkbmV3X2NvbnZlbmllbmNlLCRjb252XCI7IGRvbmU7IGZ1bmNfZWNob19hbGwgXCIkbmV3X2NvbnZlbmllbmNlXCJgICR3bC0tbm8td2hvbGUtYXJjaGl2ZScKIAkgICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX25lZWRzX29iamVjdCwgJDEpPXllcwogCiAJICAgICAgIyBOb3Qgc3VyZSB3aGV0aGVyIHNvbWV0aGluZyBiYXNlZCBvbgpAQCAtNjU4MiwyMiArNzEyNywxNyBAQAogICAgICAgICBfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPXllcwogCTs7CiAKLSAgICAgIG9wZW5ic2QyKikKLSAgICAgICAgIyBDKysgc2hhcmVkIGxpYnJhcmllcyBhcmUgZmFpcmx5IGJyb2tlbgotCV9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSk9bm8KLQk7OwotCi0gICAgICBvcGVuYnNkKikKKyAgICAgIG9wZW5ic2QqIHwgYml0cmlnKikKIAlpZiB0ZXN0IC1mIC91c3IvbGliZXhlYy9sZC5zbzsgdGhlbgogCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9kaXJlY3QsICQxKT15ZXMKIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCiAJICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdF9hYnNvbHV0ZSwgJDEpPXllcwogCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkbGliJwotCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0JICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSwkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLQkgICAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tRScKLQkgICAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSIkd2xhcmMiJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnIiR3bGFyYyInLS1uby13aG9sZS1hcmNoaXZlJworCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCwkbGliZGlyJworCSAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCI7IHRoZW4KKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXJldGFpbi1zeW1ib2xzLWZpbGUsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisJICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR3bC1FJworCSAgICBfTFRfVEFHVkFSKHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjLCAkMSk9JHdsYXJjJy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAnJHdsYXJjJy0tbm8td2hvbGUtYXJjaGl2ZScKIAkgIGZpCiAJICBvdXRwdXRfdmVyYm9zZV9saW5rX2NtZD1mdW5jX2VjaG9fYWxsCiAJZWxzZQpAQCAtNjYxMyw5ICs3MTUzLDkgQEAKIAkgICAgIyBLQ0Mgd2lsbCBvbmx5IGNyZWF0ZSBhIHNoYXJlZCBsaWJyYXJ5IGlmIHRoZSBvdXRwdXQgZmlsZQogCSAgICAjIGVuZHMgd2l0aCAiLnNvIiAob3IgIi5zbCIgZm9yIEhQLVVYKSwgc28gcmVuYW1lIHRoZSBsaWJyYXJ5CiAJICAgICMgdG8gaXRzIHByb3BlciBuYW1lICh3aXRoIHZlcnNpb24pIGFmdGVyIGxpbmtpbmcuCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RlbXBleHQ9YGVjaG8gJHNoYXJlZF9leHQgfCAkU0VEIC1lICdcJydzL1woW1teKCkwLTlBLVphLXp7fV1dXCkvXFxcXFwxL2cnXCcnYDsgdGVtcGxpYj1gZWNobyAiJGxpYiIgfCAkU0VEIC1lICJzL1wke3RlbXBleHR9XC4uKi8uc28vImA7ICRDQyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLS1zb25hbWUgJHNvbmFtZSAtbyBcJHRlbXBsaWI7IG12IFwkdGVtcGxpYiAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSd0ZW1wZXh0PWBlY2hvICRzaGFyZWRfZXh0IHwgJFNFRCAtZSAnXCcncy9cKFtbXigpMC05QS1aYS16e31dXVwpL1xcXFxcMS9nJ1wnJ2A7IHRlbXBsaWI9YGVjaG8gIiRsaWIiIHwgJFNFRCAtZSAicy9cJHRlbXBleHRcLi4qLy5zby8iYDsgJENDICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtLXNvbmFtZSAkc29uYW1lIC1vIFwkdGVtcGxpYjsgbXYgXCR0ZW1wbGliICRsaWInCiAKLQkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoLCRsaWJkaXInCisJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSckd2wtcnBhdGgsJGxpYmRpcicKIAkgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9OgogCiAJICAgICMgQXJjaGl2ZXMgY29udGFpbmluZyBDKysgb2JqZWN0IGZpbGVzIG11c3QgYmUgY3JlYXRlZCB1c2luZwpAQCAtNjYzMywxNyArNzE3MywxNyBAQAogICAgICAgICAgIGN4eCopCiAJICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICBvc2YzKikKLQkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLQkgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAkd2wtZXhwZWN0X3VucmVzb2x2ZWQgJHdsXConCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIkd2wtc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLXJwYXRoICR3bCRsaWJkaXInCiAJCTs7CiAJICAgICAgKikKIAkgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1tc3ltIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZm9yIGkgaW4gYGNhdCAkZXhwb3J0X3N5bWJvbHNgOyBkbyBwcmludGYgIiVzICVzXFxuIiAtZXhwb3J0ZWRfc3ltYm9sICJcJGkiID4+ICRsaWIuZXhwOyBkb25lfgotCSAgICAgICAgICBlY2hvICItaGlkZGVuIj4+ICRsaWIuZXhwfgotCSAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lICR7d2x9LWlucHV0ICR7d2x9JGxpYi5leHAgIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiAkRUNITyAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWJ+Ci0JICAgICAgICAgICRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICAgICAgIGVjaG8gIi1oaWRkZW4iPj4gJGxpYi5leHB+CisgICAgICAgICAgICAgICAgICAkQ0MgLXNoYXJlZCRhbGxvd191bmRlZmluZWRfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW1zeW0gLXNvbmFtZSAkc29uYW1lICR3bC1pbnB1dCAkd2wkbGliLmV4cCAgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmICRFQ0hPICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJG91dHB1dF9vYmpkaXIvc29fbG9jYXRpb25zIC1vICRsaWJ+CisgICAgICAgICAgICAgICAgICAkUk0gJGxpYi5leHAnCiAJICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nLXJwYXRoICRsaWJkaXInCiAJCTs7CiAJICAgIGVzYWMKQEAgLTY2NTgsMjEgKzcxOTgsMjEgQEAKIAkgICAgIyBleHBsaWNpdGx5IGxpbmtpbmcgc3lzdGVtIG9iamVjdCBmaWxlcyBzbyB3ZSBuZWVkIHRvIHN0cmlwIHRoZW0KIAkgICAgIyBmcm9tIHRoZSBvdXRwdXQgc28gdGhhdCB0aGV5IGRvbid0IGdldCBpbmNsdWRlZCBpbiB0aGUgbGlicmFyeQogCSAgICAjIGRlcGVuZGVuY2llcy4KLQkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0iIjsgZm9yIHogaW4gJHRlbXBsaXN0OyBkbyBjYXNlICR6IGluIGNvbmZ0ZXN0LiRvYmpleHQpIGxpc3Q9IiRsaXN0ICR6Ijs7ICouJG9iamV4dCk7OyAqKSBsaXN0PSIkbGlzdCAkeiI7O2VzYWM7IGRvbmU7IGZ1bmNfZWNob19hbGwgIiRsaXN0IicKKwkgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9J3RlbXBsaXN0PWAkQ0MgLXNoYXJlZCAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQICJsZCIgfCAkR1JFUCAtdiAibGQ6ImA7IHRlbXBsaXN0PWBmdW5jX2VjaG9fYWxsICIkdGVtcGxpc3QiIHwgJFNFRCAicy9cKF4uKmxkLipcKVwoIC4qbGQuKiRcKS9cMS8iYDsgbGlzdD0gOyBmb3IgeiBpbiAkdGVtcGxpc3Q7IGRvIGNhc2UgJHogaW4gY29uZnRlc3QuJG9iamV4dCkgbGlzdD0iJGxpc3QgJHoiOzsgKi4kb2JqZXh0KTs7ICopIGxpc3Q9IiRsaXN0ICR6Ijs7ZXNhYzsgZG9uZTsgZnVuY19lY2hvX2FsbCAiJGxpc3QiJwogCSAgICA7OwogCSAgKikKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKwkgICAgaWYgdGVzdCB5ZXMsbm8gPSAiJEdYWCwkd2l0aF9nbnVfbGQiOyB0aGVuCisJICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPScgJHdsLWV4cGVjdF91bnJlc29sdmVkICR3bFwqJwogCSAgICAgIGNhc2UgJGhvc3QgaW4KIAkgICAgICAgIG9zZjMqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkYWxsb3dfdW5kZWZpbmVkX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1zb25hbWUgJHdsJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHdsLXNldF92ZXJzaW9uICR3bCR2ZXJzdHJpbmciYCAkd2wtdXBkYXRlX3JlZ2lzdHJ5ICR3bCRvdXRwdXRfb2JqZGlyL3NvX2xvY2F0aW9ucyAtbyAkbGliJwogCQkgIDs7CiAJICAgICAgICAqKQotCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJGFsbG93X3VuZGVmaW5lZF9mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtbXN5bSAkd2wtc29uYW1lICR3bCRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR3bC1zZXRfdmVyc2lvbiAkd2wkdmVyc3RyaW5nImAgJHdsLXVwZGF0ZV9yZWdpc3RyeSAkd2wkb3V0cHV0X29iamRpci9zb19sb2NhdGlvbnMgLW8gJGxpYicKIAkJICA7OwogCSAgICAgIGVzYWMKIAotCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisJICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1ycGF0aCAkd2wkbGliZGlyJwogCSAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciwgJDEpPToKIAogCSAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKQEAgLTY3MTgsOSArNzI1OCw5IEBACiAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsJDEpPXllcwogCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCi0JICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JICAgICAgJENDIC1HJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHt3bH0tTSAke3dsfSRsaWIuZXhwIC1oJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICRDQyAtRyRhbGxvd191bmRlZmluZWRfZmxhZyAkd2wtTSAkd2wkbGliLmV4cCAtaCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctUiRsaWJkaXInCiAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCkBAIC02NzI4LDcgKzcyNjgsNyBAQAogCSAgICAgIHNvbGFyaXMyLltbMC01XV0gfCBzb2xhcmlzMi5bWzAtNV1dLiopIDs7CiAJICAgICAgKikKIAkJIyBUaGUgY29tcGlsZXIgZHJpdmVyIHdpbGwgY29tYmluZSBhbmQgcmVvcmRlciBsaW5rZXIgb3B0aW9ucywKLQkJIyBidXQgdW5kZXJzdGFuZHMgYC16IGxpbmtlcl9mbGFnJy4KKwkJIyBidXQgdW5kZXJzdGFuZHMgJy16IGxpbmtlcl9mbGFnJy4KIAkgICAgICAgICMgU3VwcG9ydGVkIHNpbmNlIFNvbGFyaXMgMi42IChtYXliZSAyLjUuMT8pCiAJCV9MVF9UQUdWQVIod2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMsICQxKT0nLXogYWxsZXh0cmFjdCRjb252ZW5pZW5jZSAteiBkZWZhdWx0ZXh0cmFjdCcKIAkgICAgICAgIDs7CkBAIC02NzQ1LDMwICs3Mjg1LDMwIEBACiAJICAgIDs7CiAgICAgICAgICAgZ2N4KikKIAkgICAgIyBHcmVlbiBIaWxscyBDKysgQ29tcGlsZXIKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliJwogCiAJICAgICMgVGhlIEMrKyBjb21waWxlciBtdXN0IGJlIHVzZWQgdG8gY3JlYXRlIHRoZSBhcmNoaXZlLgogCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDICRMREZMQUdTIC1hcmNoaXZlIC1vICRvbGRsaWIgJG9sZG9ianMnCiAJICAgIDs7CiAgICAgICAgICAgKikKIAkgICAgIyBHTlUgQysrIGNvbXBpbGVyIHdpdGggU29sYXJpcyBsaW5rZXIKLQkgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0JICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgJHt3bH0teiAke3dsfWRlZnMnCisJICAgIGlmIHRlc3QgeWVzLG5vID0gIiRHWFgsJHdpdGhfZ251X2xkIjsgdGhlbgorCSAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR3bC16ICR7d2x9ZGVmcycKIAkgICAgICBpZiAkQ0MgLS12ZXJzaW9uIHwgJEdSRVAgLXYgJ14yXC43JyA+IC9kZXYvbnVsbDsgdGhlbgotCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkTERGTEFHUyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0taCAkd2wkc29uYW1lIC1vICRsaWInCisJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAkd2wtaCAkd2wkc29uYW1lIC1vICRsaWInCiAJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgICAgICAgICAgICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR3bC1NICR3bCRsaWIuZXhwICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwogCiAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCiAJICAgICAgICAjIHdoYXQgImhpZGRlbiIgbGlicmFyaWVzLCBvYmplY3QgZmlsZXMgYW5kIGZsYWdzIGFyZSB1c2VkIHdoZW4KIAkgICAgICAgICMgbGlua2luZyBhIHNoYXJlZCBsaWJyYXJ5LgogCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtc2hhcmVkICRDRkxBR1MgLXYgY29uZnRlc3QuJG9iamV4dCAyPiYxIHwgJEdSRVAgLXYgIl5Db25maWd1cmVkIHdpdGg6IiB8ICRHUkVQICJcLUwiJwogCSAgICAgIGVsc2UKLQkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgYC1HJyBOT1QgYC1zaGFyZWQnIG9uIHRoaXMKKwkgICAgICAgICMgZysrIDIuNyBhcHBlYXJzIHRvIHJlcXVpcmUgJy1HJyBOT1QgJy1zaGFyZWQnIG9uIHRoaXMKIAkgICAgICAgICMgcGxhdGZvcm0uCi0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLUcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR3bC1oICR3bCRzb25hbWUgLW8gJGxpYicKIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0JCSAgJENDIC1HIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICAgICAgICAgICAgICRDQyAtRyAtbm9zdGRsaWIgJHdsLU0gJHdsJGxpYi5leHAgJHdsLWggJHdsJHNvbmFtZSAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCiAKIAkgICAgICAgICMgQ29tbWFuZHMgdG8gbWFrZSBjb21waWxlciBwcm9kdWNlIHZlcmJvc2Ugb3V0cHV0IHRoYXQgbGlzdHMKIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgpAQCAtNjc3NiwxMSArNzMxNiwxMSBAQAogCSAgICAgICAgb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQ9JyRDQyAtRyAkQ0ZMQUdTIC12IGNvbmZ0ZXN0LiRvYmpleHQgMj4mMSB8ICRHUkVQIC12ICJeQ29uZmlndXJlZCB3aXRoOiIgfCAkR1JFUCAiXC1MIicKIAkgICAgICBmaQogCi0JICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LVIgJHdsJGxpYmRpcicKKwkgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHdsLVIgJHdsJGxpYmRpcicKIAkgICAgICBjYXNlICRob3N0X29zIGluCiAJCXNvbGFyaXMyLltbMC01XV0gfCBzb2xhcmlzMi5bWzAtNV1dLiopIDs7CiAJCSopCi0JCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPScke3dsfS16ICR7d2x9YWxsZXh0cmFjdCRjb252ZW5pZW5jZSAke3dsfS16ICR7d2x9ZGVmYXVsdGV4dHJhY3QnCisJCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSckd2wteiAke3dsfWFsbGV4dHJhY3QkY29udmVuaWVuY2UgJHdsLXogJHt3bH1kZWZhdWx0ZXh0cmFjdCcKIAkJICA7OwogCSAgICAgIGVzYWMKIAkgICAgZmkKQEAgLTY3ODksNTIgKzczMjksNTIgQEAKICAgICAgICAgOzsKIAogICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LltbMDFdXS5bWzEwXV0qIHwgdW5peHdhcmU3KiB8IHNjbzMuMnY1LjAuW1swMjRdXSopCi0gICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKKyAgICAgIF9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHdsLXosdGV4dCcKICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzX25lZWRfbGMsICQxKT1ubwogICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9zaGxpYnBhdGhfdmFyLCAkMSk9bm8KICAgICAgIHJ1bnBhdGhfdmFyPSdMRF9SVU5fUEFUSCcKIAogICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KICAgICAgICAgQ0MqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLUcgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgOzsKIAkqKQotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICA7OwogICAgICAgZXNhYwogICAgICAgOzsKIAogICAgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKLQkjIE5vdGU6IFdlIGNhbiBOT1QgdXNlIC16IGRlZnMgYXMgd2UgbWlnaHQgZGVzaXJlLCBiZWNhdXNlIHdlIGRvIG5vdAorCSMgTm90ZTogV2UgQ0FOTk9UIHVzZSAteiBkZWZzIGFzIHdlIG1pZ2h0IGRlc2lyZSwgYmVjYXVzZSB3ZSBkbyBub3QKIAkjIGxpbmsgd2l0aCAtbGMsIGFuZCB0aGF0IHdvdWxkIGNhdXNlIGFueSBzeW1ib2xzIHVzZWQgZnJvbSBsaWJjIHRvCiAJIyBhbHdheXMgYmUgdW5yZXNvbHZlZCwgd2hpY2ggbWVhbnMganVzdCBhYm91dCBubyBsaWJyYXJ5IHdvdWxkCiAJIyBldmVyIGxpbmsgY29ycmVjdGx5LiAgSWYgd2UncmUgbm90IHVzaW5nIEdOVSBsZCB3ZSB1c2UgLXogdGV4dAogCSMgdGhvdWdoLCB3aGljaCBkb2VzIGNhdGNoIHNvbWUgYmFkIHN5bWJvbHMgYnV0IGlzbid0IGFzIGhlYXZ5LWhhbmRlZAogCSMgYXMgLXogZGVmcy4KLQlfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosdGV4dCcKLQlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR7d2x9LXosbm9kZWZzJworCV9MVF9UQUdWQVIobm9fdW5kZWZpbmVkX2ZsYWcsICQxKT0nJHdsLXosdGV4dCcKKwlfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9JyR3bC16LG5vZGVmcycKIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kc19uZWVkX2xjLCAkMSk9bm8KIAlfTFRfVEFHVkFSKGhhcmRjb2RlX3NobGlicGF0aF92YXIsICQxKT1ubwotCV9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1SLCRsaWJkaXInCisJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR3bC1SLCRsaWJkaXInCiAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yLCAkMSk9JzonCiAJX0xUX1RBR1ZBUihsaW5rX2FsbF9kZXBsaWJzLCAkMSk9eWVzCi0JX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tQmV4cG9ydCcKKwlfTFRfVEFHVkFSKGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlYywgJDEpPSckd2wtQmV4cG9ydCcKIAlydW5wYXRoX3Zhcj0nTERfUlVOX1BBVEgnCiAKIAljYXNlICRjY19iYXNlbmFtZSBpbgogICAgICAgICAgIENDKikKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1HICR7d2x9LWgsJHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtRyAke3dsfS1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAke3dsfS1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtRyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1HICR3bC1CZXhwb3J0OiRleHBvcnRfc3ltYm9scyAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwogCSAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nJENDIC1UcHJlbGlua19vYmplY3RzICRvbGRvYmpzfgotCSAgICAgICciJF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfY21kcywgJDEpIgorICAgICAgICAgICAgICAnIiRfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKSIKIAkgICAgX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpPSckQ0MgLVRwcmVsaW5rX29iamVjdHMgJHJlbG9hZF9vYmpzfgotCSAgICAgICciJF9MVF9UQUdWQVIocmVsb2FkX2NtZHMsICQxKSIKKyAgICAgICAgICAgICAgJyIkX0xUX1RBR1ZBUihyZWxvYWRfY21kcywgJDEpIgogCSAgICA7OwogCSAgKikKLQkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0tQmV4cG9ydDokZXhwb3J0X3N5bWJvbHMgJHt3bH0taCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkd2wtaCwkc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHdsLUJleHBvcnQ6JGV4cG9ydF9zeW1ib2xzICR3bC1oLCRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCiAJICAgIDs7CiAJZXNhYwogICAgICAgOzsKQEAgLTY4NjUsMTAgKzc0MDUsMTAgQEAKICAgICBlc2FjCiAKICAgICBBQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKV0pCi0gICAgdGVzdCAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiID0gbm8gJiYgY2FuX2J1aWxkX3NoYXJlZD1ubworICAgIHRlc3Qgbm8gPSAiJF9MVF9UQUdWQVIobGRfc2hsaWJzLCAkMSkiICYmIGNhbl9idWlsZF9zaGFyZWQ9bm8KIAotICAgIF9MVF9UQUdWQVIoR0NDLCAkMSk9IiRHWFgiCi0gICAgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCisgICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0kR1hYCisgICAgX0xUX1RBR1ZBUihMRCwgJDEpPSRMRAogCiAgICAgIyMgQ0FWRUFUIEVNUFRPUjoKICAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtNjg5NSw3ICs3NDM1LDcgQEAKICAgbHRfY3ZfcGF0aF9MRD0kbHRfc2F2ZV9wYXRoX0xECiAgIGx0X2N2X3Byb2dfZ251X2xkY3h4PSRsdF9jdl9wcm9nX2dudV9sZAogICBsdF9jdl9wcm9nX2dudV9sZD0kbHRfc2F2ZV93aXRoX2dudV9sZAotZmkgIyB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllcworZmkgIyB0ZXN0IHllcyAhPSAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIgogCiBBQ19MQU5HX1BPUAogXSkjIF9MVF9MQU5HX0NYWF9DT05GSUcKQEAgLTY5MTcsMTMgKzc0NTcsMTQgQEAKIEFDX1JFUVVJUkUoW19MVF9QUk9HX0VDSE9fQkFDS1NMQVNIXSkKIGZ1bmNfc3RyaXBuYW1lX2NuZiAoKQogewotICBjYXNlICR7Mn0gaW4KLSAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworICBjYXNlIEBTfEAyIGluCisgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJAU3xAMyIgfCAkU0VEICJzJV5AU3xAMSUlOyBzJVxcXFxAU3xAMlwkJSUiYDs7CisgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICJAU3xAMyIgfCAkU0VEICJzJV5AU3xAMSUlOyBzJUBTfEAyXCQlJSJgOzsKICAgZXNhYwogfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgogXSkjIF9MVF9GVU5DX1NUUklQTkFNRV9DTkYKIAorCiAjIF9MVF9TWVNfSElEREVOX0xJQkRFUFMoW1RBR05BTUVdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRmlndXJlIG91dCAiaGlkZGVuIiBsaWJyYXJ5IGRlcGVuZGVuY2llcyBmcm9tIHZlcmJvc2UKQEAgLTcwMDcsMTMgKzc1NDgsMTMgQEAKICAgcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZT1ubwogCiAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLSAgICBjYXNlICR7cHJldn0ke3B9IGluCisgICAgY2FzZSAkcHJldiRwIGluCiAKICAgICAtTCogfCAtUiogfCAtbCopCiAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KICAgICAgICAjIFJlbW92ZSB0aGUgc3BhY2UuCi0gICAgICAgaWYgdGVzdCAkcCA9ICItTCIgfHwKLSAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgorICAgICAgIGlmIHRlc3QgeC1MID0gIiRwIiB8fAorICAgICAgICAgIHRlc3QgeC1SID0gIiRwIjsgdGhlbgogCSBwcmV2PSRwCiAJIGNvbnRpbnVlCiAgICAgICAgZmkKQEAgLTcwMjksMTYgKzc1NzAsMTYgQEAKICAgICAgICBjYXNlICRwIGluCiAgICAgICAgPSopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnPScgJycgIiRwIjsgcD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKICAgICAgICBlc2FjCi0gICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLQkgY2FzZSAke3ByZXZ9IGluCisgICAgICAgaWYgdGVzdCBubyA9ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSI7IHRoZW4KKwkgY2FzZSAkcHJldiBpbgogCSAtTCB8IC1SKQogCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQogCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQogCSAgICMgdXNlciBzdXBwbGllZCBsaWJzIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcHJvY2VzcyB0aGVtLgogCSAgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpIjsgdGhlbgotCSAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKT0iJHtwcmV2fSR7cH0iCisJICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSRwcmV2JHAKIAkgICBlbHNlCi0JICAgICBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpPSIke19MVF9UQUdWQVIoY29tcGlsZXJfbGliX3NlYXJjaF9wYXRoLCAkMSl9ICR7cHJldn0ke3B9IgorCSAgICAgX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKT0iJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSAkcHJldiRwIgogCSAgIGZpCiAJICAgOzsKIAkgIyBUaGUgIi1sIiBjYXNlIHdvdWxkIG5ldmVyIGNvbWUgYmVmb3JlIHRoZSBvYmplY3QgYmVpbmcKQEAgLTcwNDYsOSArNzU4Nyw5IEBACiAJIGVzYWMKICAgICAgICBlbHNlCiAJIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSkiOyB0aGVuCi0JICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke3ByZXZ9JHtwfSIKKwkgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCAkMSk9JHByZXYkcAogCSBlbHNlCi0JICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCisJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHByZXYkcCIKIAkgZmkKICAgICAgICBmaQogICAgICAgIHByZXY9CkBAIC03MDYzLDE1ICs3NjA0LDE1IEBACiAJIGNvbnRpbnVlCiAgICAgICAgZmkKIAotICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCisgICAgICAgaWYgdGVzdCBubyA9ICIkcHJlX3Rlc3Rfb2JqZWN0X2RlcHNfZG9uZSI7IHRoZW4KIAkgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKSI7IHRoZW4KLQkgICBfTFRfVEFHVkFSKHByZWRlcF9vYmplY3RzLCAkMSk9IiRwIgorCSAgIF9MVF9UQUdWQVIocHJlZGVwX29iamVjdHMsICQxKT0kcAogCSBlbHNlCiAJICAgX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPSIkX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpICRwIgogCSBmaQogICAgICAgIGVsc2UKIAkgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkiOyB0aGVuCi0JICAgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0iJHAiCisJICAgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0kcAogCSBlbHNlCiAJICAgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsICQxKT0iJF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSkgJHAiCiAJIGZpCkBAIC03MTAyLDUxICs3NjQzLDYgQEAKICAgX0xUX1RBR1ZBUihwb3N0ZGVwX29iamVjdHMsJDEpPQogICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0KICAgOzsKLQotbGludXgqKQotICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KLSAgKlN1blwgQyopCi0gICAgIyBTdW4gQysrIDUuOQotCi0gICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgIyBpbmNvbXBhdGlibGUgd2l0aCB0aGUgQ3N0ZCBsaWJyYXJ5LiBBdm9pZCBzcGVjaWZ5aW5nCi0gICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotICAgICMgLWxpYnJhcnk9c3RscG9ydDQgZGVwZW5kcyBvbiBpdC4KLSAgICBjYXNlICIgJENYWCAkQ1hYRkxBR1MgIiBpbgotICAgICoiIC1saWJyYXJ5PXN0bHBvcnQ0ICIqKQotICAgICAgc29sYXJpc191c2Vfc3RscG9ydDQ9eWVzCi0gICAgICA7OwotICAgIGVzYWMKLQotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwotCi1zb2xhcmlzKikKLSAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgQ0MqIHwgc3VuQ0MqKQotICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICMgaXQgaWYgaXQncyBpbiBDWFhGTEFHUy4gSWdub3JlIGxpYkNydW4gYXMKLSAgICAjIC1saWJyYXJ5PXN0bHBvcnQ0IGRlcGVuZHMgb24gaXQuCi0gICAgY2FzZSAiICRDWFggJENYWEZMQUdTICIgaW4KLSAgICAqIiAtbGlicmFyeT1zdGxwb3J0NCAiKikKLSAgICAgIHNvbGFyaXNfdXNlX3N0bHBvcnQ0PXllcwotICAgICAgOzsKLSAgICBlc2FjCi0KLSAgICAjIEFkZGluZyB0aGlzIHJlcXVpcmVzIGEga25vd24tZ29vZCBzZXR1cCBvZiBzaGFyZWQgbGlicmFyaWVzIGZvcgotICAgICMgU3VuIGNvbXBpbGVyIHZlcnNpb25zIGJlZm9yZSA1LjYsIGVsc2UgUElDIG9iamVjdHMgZnJvbSBhbiBvbGQKLSAgICAjIGFyY2hpdmUgd2lsbCBiZSBsaW5rZWQgaW50byB0aGUgb3V0cHV0LCBsZWFkaW5nIHRvIHN1YnRsZSBidWdzLgotICAgIGlmIHRlc3QgIiRzb2xhcmlzX3VzZV9zdGxwb3J0NCIgIT0geWVzOyB0aGVuCi0gICAgICBfTFRfVEFHVkFSKHBvc3RkZXBzLCQxKT0nLWxpYnJhcnk9Q3N0ZCAtbGlicmFyeT1DcnVuJwotICAgIGZpCi0gICAgOzsKLSAgZXNhYwotICA7OwogZXNhYwogXSkKIApAQCAtNzE1NSw3ICs3NjUxLDcgQEAKIGVzYWMKICBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPQogaWYgdGVzdCAtbiAiJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSI7IHRoZW4KLSBfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfZGlycywgJDEpPWBlY2hvICIgJHtfTFRfVEFHVkFSKGNvbXBpbGVyX2xpYl9zZWFyY2hfcGF0aCwgJDEpfSIgfCAke1NFRH0gLWUgJ3MhIC1MISAhZycgLWUgJ3MhXiAhISdgCisgX0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX2RpcnMsICQxKT1gZWNobyAiICR7X0xUX1RBR1ZBUihjb21waWxlcl9saWJfc2VhcmNoX3BhdGgsICQxKX0iIHwgJFNFRCAtZSAncyEgLUwhICFnJyAtZSAncyFeICEhJ2AKIGZpCiBfTFRfVEFHREVDTChbXSwgW2NvbXBpbGVyX2xpYl9zZWFyY2hfZGlyc10sIFsxXSwKICAgICBbVGhlIGRpcmVjdG9yaWVzIHNlYXJjaGVkIGJ5IHRoaXMgY29tcGlsZXIgd2hlbiBjcmVhdGluZyBhIHNoYXJlZCBsaWJyYXJ5XSkKQEAgLTcxNzUsMTAgKzc2NzEsMTAgQEAKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICMgRW5zdXJlIHRoYXQgdGhlIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBhIEZvcnRyYW4gNzcgY29tcGlsZXIgYXJlCiAjIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKLSMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byAnbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfRjc3X0NPTkZJR10sCiBbQUNfTEFOR19QVVNIKEZvcnRyYW4gNzcpCi1pZiB0ZXN0IC16ICIkRjc3IiB8fCB0ZXN0ICJYJEY3NyIgPSAiWG5vIjsgdGhlbgoraWYgdGVzdCAteiAiJEY3NyIgfHwgdGVzdCBubyA9ICIkRjc3IjsgdGhlbgogICBfbHRfZGlzYWJsZV9GNzc9eWVzCiBmaQogCkBAIC03MjE1LDcgKzc3MTEsNyBAQAogIyB0aGUgRjc3IGNvbXBpbGVyIGlzbid0IHdvcmtpbmcuICBTb21lIHZhcmlhYmxlcyAobGlrZSBlbmFibGVfc2hhcmVkKQogIyBhcmUgY3VycmVudGx5IGFzc3VtZWQgdG8gYXBwbHkgdG8gYWxsIGNvbXBpbGVycyBvbiB0aGlzIHBsYXRmb3JtLAogIyBhbmQgd2lsbCBiZSBjb3JydXB0ZWQgYnkgc2V0dGluZyB0aGVtIGJhc2VkIG9uIGEgbm9uLXdvcmtpbmcgY29tcGlsZXIuCi1pZiB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXM7IHRoZW4KK2lmIHRlc3QgeWVzICE9ICIkX2x0X2Rpc2FibGVfRjc3IjsgdGhlbgogICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cwogICBsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9IlwKICAgICAgIHN1YnJvdXRpbmUgdApAQCAtNzIzNyw3ICs3NzMzLDcgQEAKICAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQogCiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gIGx0X3NhdmVfQ0M9IiRDQyIKKyAgbHRfc2F2ZV9DQz0kQ0MKICAgbHRfc2F2ZV9HQ0M9JEdDQwogICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7Rjc3LSJmNzcifQpAQCAtNzI1MSwyMSArNzc0NywyNSBAQAogICAgIEFDX01TR19SRVNVTFQoWyRjYW5fYnVpbGRfc2hhcmVkXSkKIAogICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzaGFyZWQgbGlicmFyaWVzXSkKLSAgICB0ZXN0ICIkY2FuX2J1aWxkX3NoYXJlZCIgPSAibm8iICYmIGVuYWJsZV9zaGFyZWQ9bm8KKyAgICB0ZXN0IG5vID0gIiRjYW5fYnVpbGRfc2hhcmVkIiAmJiBlbmFibGVfc2hhcmVkPW5vCiAKICAgICAjIE9uIEFJWCwgc2hhcmVkIGxpYnJhcmllcyBhbmQgc3RhdGljIGxpYnJhcmllcyB1c2UgdGhlIHNhbWUgbmFtZXNwYWNlLCBhbmQKICAgICAjIGFyZSBhbGwgYnVpbHQgZnJvbSBQSUMuCiAgICAgY2FzZSAkaG9zdF9vcyBpbgogICAgICAgYWl4MyopCi0gICAgICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisgICAgICAgIHRlc3QgeWVzID0gIiRlbmFibGVfc2hhcmVkIiAmJiBlbmFibGVfc3RhdGljPW5vCiAgICAgICAgIGlmIHRlc3QgLW4gIiRSQU5MSUIiOyB0aGVuCiAgICAgICAgICAgYXJjaGl2ZV9jbWRzPSIkYXJjaGl2ZV9jbWRzflwkUkFOTElCIFwkbGliIgogICAgICAgICAgIHBvc3RpbnN0YWxsX2NtZHM9JyRSQU5MSUIgJGxpYicKICAgICAgICAgZmkKICAgICAgICAgOzsKICAgICAgIGFpeFtbNC05XV0qKQotCWlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NCAmJiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSBubyA7IHRoZW4KLQkgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyAmJiBlbmFibGVfc3RhdGljPW5vCisJaWYgdGVzdCBpYTY0ICE9ICIkaG9zdF9jcHUiOyB0aGVuCisJICBjYXNlICRlbmFibGVfc2hhcmVkLCR3aXRoX2FpeF9zb25hbWUsJGFpeF91c2VfcnVudGltZWxpbmtpbmcgaW4KKwkgIHllcyxhaXgseWVzKSA7OwkJIyBzaGFyZWQgb2JqZWN0IGFzIGxpYi5zbyBmaWxlIG9ubHkKKwkgIHllcyxzdnI0LCopIDs7CQkjIHNoYXJlZCBvYmplY3QgYXMgbGliLnNvIGFyY2hpdmUgbWVtYmVyIG9ubHkKKwkgIHllcywqKSBlbmFibGVfc3RhdGljPW5vIDs7CSMgc2hhcmVkIG9iamVjdCBpbiBsaWIuYSBhcmNoaXZlIGFzIHdlbGwKKwkgIGVzYWMKIAlmaQogICAgICAgICA7OwogICAgIGVzYWMKQEAgLTcyNzMsMTEgKzc3NzMsMTEgQEAKIAogICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0byBidWlsZCBzdGF0aWMgbGlicmFyaWVzXSkKICAgICAjIE1ha2Ugc3VyZSBlaXRoZXIgZW5hYmxlX3NoYXJlZCBvciBlbmFibGVfc3RhdGljIGlzIHllcy4KLSAgICB0ZXN0ICIkZW5hYmxlX3NoYXJlZCIgPSB5ZXMgfHwgZW5hYmxlX3N0YXRpYz15ZXMKKyAgICB0ZXN0IHllcyA9ICIkZW5hYmxlX3NoYXJlZCIgfHwgZW5hYmxlX3N0YXRpYz15ZXMKICAgICBBQ19NU0dfUkVTVUxUKFskZW5hYmxlX3N0YXRpY10pCiAKLSAgICBfTFRfVEFHVkFSKEdDQywgJDEpPSIkRzc3IgotICAgIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorICAgIF9MVF9UQUdWQVIoR0NDLCAkMSk9JEc3NworICAgIF9MVF9UQUdWQVIoTEQsICQxKT0kTEQKIAogICAgICMjIENBVkVBVCBFTVBUT1I6CiAgICAgIyMgVGhlcmUgaXMgbm8gZW5jYXBzdWxhdGlvbiB3aXRoaW4gdGhlIGZvbGxvd2luZyBtYWNyb3MsIGRvIG5vdCBjaGFuZ2UKQEAgLTcyOTQsOSArNzc5NCw5IEBACiAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgogCiAgIEdDQz0kbHRfc2F2ZV9HQ0MKLSAgQ0M9IiRsdF9zYXZlX0NDIgotICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLWZpICMgdGVzdCAiJF9sdF9kaXNhYmxlX0Y3NyIgIT0geWVzCisgIENDPSRsdF9zYXZlX0NDCisgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKK2ZpICMgdGVzdCB5ZXMgIT0gIiRfbHRfZGlzYWJsZV9GNzciCiAKIEFDX0xBTkdfUE9QCiBdKSMgX0xUX0xBTkdfRjc3X0NPTkZJRwpAQCAtNzMwNiwxMSArNzgwNiwxMSBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgYSBGb3J0cmFuIGNvbXBpbGVyIGFyZQogIyBzdWl0YWJseSBkZWZpbmVkLiAgVGhlc2UgdmFyaWFibGVzIGFyZSBzdWJzZXF1ZW50bHkgdXNlZCBieSBfTFRfQ09ORklHCi0jIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvIGBsaWJ0b29sJy4KKyMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gJ2xpYnRvb2wnLgogbTRfZGVmdW4oW19MVF9MQU5HX0ZDX0NPTkZJR10sCiBbQUNfTEFOR19QVVNIKEZvcnRyYW4pCiAKLWlmIHRlc3QgLXogIiRGQyIgfHwgdGVzdCAiWCRGQyIgPSAiWG5vIjsgdGhlbgoraWYgdGVzdCAteiAiJEZDIiB8fCB0ZXN0IG5vID0gIiRGQyI7IHRoZW4KICAgX2x0X2Rpc2FibGVfRkM9eWVzCiBmaQogCkBAIC03MzQ3LDcgKzc4NDcsNyBAQAogIyB0aGUgRkMgY29tcGlsZXIgaXNuJ3Qgd29ya2luZy4gIFNvbWUgdmFyaWFibGVzIChsaWtlIGVuYWJsZV9zaGFyZWQpCiAjIGFyZSBjdXJyZW50bHkgYXNzdW1lZCB0byBhcHBseSB0byBhbGwgY29tcGlsZXJzIG9uIHRoaXMgcGxhdGZvcm0sCiAjIGFuZCB3aWxsIGJlIGNvcnJ1cHRlZCBieSBzZXR0aW5nIHRoZW0gYmFzZWQgb24gYSBub24td29ya2luZyBjb21waWxlci4KLWlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCitpZiB0ZXN0IHllcyAhPSAiJF9sdF9kaXNhYmxlX0ZDIjsgdGhlbgogICAjIENvZGUgdG8gYmUgdXNlZCBpbiBzaW1wbGUgY29tcGlsZSB0ZXN0cwogICBsdF9zaW1wbGVfY29tcGlsZV90ZXN0X2NvZGU9IlwKICAgICAgIHN1YnJvdXRpbmUgdApAQCAtNzM2OSw3ICs3ODY5LDcgQEAKICAgX0xUX0xJTktFUl9CT0lMRVJQTEFURQogCiAgICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi0gIGx0X3NhdmVfQ0M9IiRDQyIKKyAgbHRfc2F2ZV9DQz0kQ0MKICAgbHRfc2F2ZV9HQ0M9JEdDQwogICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCiAgIENDPSR7RkMtImY5NSJ9CkBAIC03Mzg1LDIxICs3ODg1LDI1IEBACiAgICAgQUNfTVNHX1JFU1VMVChbJGNhbl9idWlsZF9zaGFyZWRdKQogCiAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHNoYXJlZCBsaWJyYXJpZXNdKQotICAgIHRlc3QgIiRjYW5fYnVpbGRfc2hhcmVkIiA9ICJubyIgJiYgZW5hYmxlX3NoYXJlZD1ubworICAgIHRlc3Qgbm8gPSAiJGNhbl9idWlsZF9zaGFyZWQiICYmIGVuYWJsZV9zaGFyZWQ9bm8KIAogICAgICMgT24gQUlYLCBzaGFyZWQgbGlicmFyaWVzIGFuZCBzdGF0aWMgbGlicmFyaWVzIHVzZSB0aGUgc2FtZSBuYW1lc3BhY2UsIGFuZAogICAgICMgYXJlIGFsbCBidWlsdCBmcm9tIFBJQy4KICAgICBjYXNlICRob3N0X29zIGluCiAgICAgICBhaXgzKikKLSAgICAgICAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKyAgICAgICAgdGVzdCB5ZXMgPSAiJGVuYWJsZV9zaGFyZWQiICYmIGVuYWJsZV9zdGF0aWM9bm8KICAgICAgICAgaWYgdGVzdCAtbiAiJFJBTkxJQiI7IHRoZW4KICAgICAgICAgICBhcmNoaXZlX2NtZHM9IiRhcmNoaXZlX2NtZHN+XCRSQU5MSUIgXCRsaWIiCiAgICAgICAgICAgcG9zdGluc3RhbGxfY21kcz0nJFJBTkxJQiAkbGliJwogICAgICAgICBmaQogICAgICAgICA7OwogICAgICAgYWl4W1s0LTldXSopCi0JaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0ICYmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IG5vIDsgdGhlbgotCSAgdGVzdCAiJGVuYWJsZV9zaGFyZWQiID0geWVzICYmIGVuYWJsZV9zdGF0aWM9bm8KKwlpZiB0ZXN0IGlhNjQgIT0gIiRob3N0X2NwdSI7IHRoZW4KKwkgIGNhc2UgJGVuYWJsZV9zaGFyZWQsJHdpdGhfYWl4X3NvbmFtZSwkYWl4X3VzZV9ydW50aW1lbGlua2luZyBpbgorCSAgeWVzLGFpeCx5ZXMpIDs7CQkjIHNoYXJlZCBvYmplY3QgYXMgbGliLnNvIGZpbGUgb25seQorCSAgeWVzLHN2cjQsKikgOzsJCSMgc2hhcmVkIG9iamVjdCBhcyBsaWIuc28gYXJjaGl2ZSBtZW1iZXIgb25seQorCSAgeWVzLCopIGVuYWJsZV9zdGF0aWM9bm8gOzsJIyBzaGFyZWQgb2JqZWN0IGluIGxpYi5hIGFyY2hpdmUgYXMgd2VsbAorCSAgZXNhYwogCWZpCiAgICAgICAgIDs7CiAgICAgZXNhYwpAQCAtNzQwNywxMSArNzkxMSwxMSBAQAogCiAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIGJ1aWxkIHN0YXRpYyBsaWJyYXJpZXNdKQogICAgICMgTWFrZSBzdXJlIGVpdGhlciBlbmFibGVfc2hhcmVkIG9yIGVuYWJsZV9zdGF0aWMgaXMgeWVzLgotICAgIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9IHllcyB8fCBlbmFibGVfc3RhdGljPXllcworICAgIHRlc3QgeWVzID0gIiRlbmFibGVfc2hhcmVkIiB8fCBlbmFibGVfc3RhdGljPXllcwogICAgIEFDX01TR19SRVNVTFQoWyRlbmFibGVfc3RhdGljXSkKIAotICAgIF9MVF9UQUdWQVIoR0NDLCAkMSk9IiRhY19jdl9mY19jb21waWxlcl9nbnUiCi0gICAgX0xUX1RBR1ZBUihMRCwgJDEpPSIkTEQiCisgICAgX0xUX1RBR1ZBUihHQ0MsICQxKT0kYWNfY3ZfZmNfY29tcGlsZXJfZ251CisgICAgX0xUX1RBR1ZBUihMRCwgJDEpPSRMRAogCiAgICAgIyMgQ0FWRUFUIEVNUFRPUjoKICAgICAjIyBUaGVyZSBpcyBubyBlbmNhcHN1bGF0aW9uIHdpdGhpbiB0aGUgZm9sbG93aW5nIG1hY3JvcywgZG8gbm90IGNoYW5nZQpAQCAtNzQzMSw3ICs3OTM1LDcgQEAKICAgR0NDPSRsdF9zYXZlX0dDQwogICBDQz0kbHRfc2F2ZV9DQwogICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi1maSAjIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzCitmaSAjIHRlc3QgeWVzICE9ICIkX2x0X2Rpc2FibGVfRkMiCiAKIEFDX0xBTkdfUE9QCiBdKSMgX0xUX0xBTkdfRkNfQ09ORklHCkBAIC03NDQxLDcgKzc5NDUsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBHTlUgSmF2YSBDb21waWxlciBjb21waWxlcgogIyBhcmUgc3VpdGFibHkgZGVmaW5lZC4gIFRoZXNlIHZhcmlhYmxlcyBhcmUgc3Vic2VxdWVudGx5IHVzZWQgYnkgX0xUX0NPTkZJRwotIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byBgbGlidG9vbCcuCisjIHRvIHdyaXRlIHRoZSBjb21waWxlciBjb25maWd1cmF0aW9uIHRvICdsaWJ0b29sJy4KIG00X2RlZnVuKFtfTFRfTEFOR19HQ0pfQ09ORklHXSwKIFtBQ19SRVFVSVJFKFtMVF9QUk9HX0dDSl0pZG5sCiBBQ19MQU5HX1NBVkUKQEAgLTc0NzUsNyArNzk3OSw3IEBACiBDRkxBR1M9JEdDSkZMQUdTCiBjb21waWxlcj0kQ0MKIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLV9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorX0xUX1RBR1ZBUihMRCwgJDEpPSRMRAogX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQogCiAjIEdDSiBkaWQgbm90IGV4aXN0IGF0IHRoZSB0aW1lIEdDQyBkaWRuJ3QgaW1wbGljaXRseSBsaW5rIGxpYmMgaW4uCkBAIC03NTEyLDcgKzgwMTYsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogIyBFbnN1cmUgdGhhdCB0aGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMgZm9yIHRoZSBHTlUgR28gY29tcGlsZXIKICMgYXJlIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKLSMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byAnbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfR09fQ09ORklHXSwKIFtBQ19SRVFVSVJFKFtMVF9QUk9HX0dPXSlkbmwKIEFDX0xBTkdfU0FWRQpAQCAtNzU0Niw3ICs4MDUwLDcgQEAKIENGTEFHUz0kR09GTEFHUwogY29tcGlsZXI9JENDCiBfTFRfVEFHVkFSKGNvbXBpbGVyLCAkMSk9JENDCi1fTFRfVEFHVkFSKExELCAkMSk9IiRMRCIKK19MVF9UQUdWQVIoTEQsICQxKT0kTEQKIF9MVF9DQ19CQVNFTkFNRShbJGNvbXBpbGVyXSkKIAogIyBHbyBkaWQgbm90IGV4aXN0IGF0IHRoZSB0aW1lIEdDQyBkaWRuJ3QgaW1wbGljaXRseSBsaW5rIGxpYmMgaW4uCkBAIC03NTgzLDcgKzgwODcsNyBAQAogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAjIEVuc3VyZSB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcyBmb3IgdGhlIFdpbmRvd3MgcmVzb3VyY2UgY29tcGlsZXIKICMgYXJlIHN1aXRhYmx5IGRlZmluZWQuICBUaGVzZSB2YXJpYWJsZXMgYXJlIHN1YnNlcXVlbnRseSB1c2VkIGJ5IF9MVF9DT05GSUcKLSMgdG8gd3JpdGUgdGhlIGNvbXBpbGVyIGNvbmZpZ3VyYXRpb24gdG8gYGxpYnRvb2wnLgorIyB0byB3cml0ZSB0aGUgY29tcGlsZXIgY29uZmlndXJhdGlvbiB0byAnbGlidG9vbCcuCiBtNF9kZWZ1bihbX0xUX0xBTkdfUkNfQ09ORklHXSwKIFtBQ19SRVFVSVJFKFtMVF9QUk9HX1JDXSlkbmwKIEFDX0xBTkdfU0FWRQpAQCAtNzU5OSw3ICs4MTAzLDcgQEAKIGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZT0nc2FtcGxlIE1FTlUgeyBNRU5VSVRFTSAiJlNvdXAiLCAxMDAsIENIRUNLRUQgfScKIAogIyBDb2RlIHRvIGJlIHVzZWQgaW4gc2ltcGxlIGxpbmsgdGVzdHMKLWx0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0iJGx0X3NpbXBsZV9jb21waWxlX3Rlc3RfY29kZSIKK2x0X3NpbXBsZV9saW5rX3Rlc3RfY29kZT0kbHRfc2ltcGxlX2NvbXBpbGVfdGVzdF9jb2RlCiAKICMgbHRtYWluIG9ubHkgdXNlcyAkQ0MgZm9yIHRhZ2dlZCBjb25maWd1cmF0aW9ucyBzbyBtYWtlIHN1cmUgJENDIGlzIHNldC4KIF9MVF9UQUdfQ09NUElMRVIKQEAgLTc2MDksNyArODExMyw3IEBACiBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCiAKICMgQWxsb3cgQ0MgdG8gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmd1bWVudHMuCi1sdF9zYXZlX0NDPSIkQ0MiCitsdF9zYXZlX0NDPSRDQwogbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwogbHRfc2F2ZV9HQ0M9JEdDQwogR0NDPQpAQCAtNzYzOCw3ICs4MTQyLDcgQEAKIFttNF9pZmRlZihbQUNfUFJPR19HQ0pdLCBbQUNfUFJPR19HQ0pdLAogICBbbTRfaWZkZWYoW0FdW01fUFJPR19HQ0pdLCBbQV1bTV9QUk9HX0dDSl0sCiAgICAgW0FDX0NIRUNLX1RPT0woR0NKLCBnY2osKQotICAgICAgdGVzdCAieCR7R0NKRkxBR1Mrc2V0fSIgPSB4c2V0IHx8IEdDSkZMQUdTPSItZyAtTzIiCisgICAgICB0ZXN0IHNldCA9ICIke0dDSkZMQUdTK3NldH0iIHx8IEdDSkZMQUdTPSItZyAtTzIiCiAgICAgICBBQ19TVUJTVChHQ0pGTEFHUyldKV0pW11kbmwKIF0pCiAKQEAgLTc3NDksNyArODI1Myw3IEBACiAjIEFkZCAvdXNyL3hwZzQvYmluL3NlZCBhcyBpdCBpcyB0eXBpY2FsbHkgZm91bmQgb24gU29sYXJpcwogIyBhbG9uZyB3aXRoIC9iaW4vc2VkIHRoYXQgdHJ1bmNhdGVzIG91dHB1dC4KIGZvciBsdF9hY19zZWQgaW4gJGx0X2FjX3NlZF9saXN0IC91c3IveHBnNC9iaW4vc2VkOyBkbwotICB0ZXN0ICEgLWYgJGx0X2FjX3NlZCAmJiBjb250aW51ZQorICB0ZXN0ICEgLWYgIiRsdF9hY19zZWQiICYmIGNvbnRpbnVlCiAgIGNhdCAvZGV2L251bGwgPiBjb25mdGVzdC5pbgogICBsdF9hY19jb3VudD0wCiAgIGVjaG8gJEVDSE9fTiAiMDEyMzQ1Njc4OSRFQ0hPX0MiID5jb25mdGVzdC5pbgpAQCAtNzc2Niw5ICs4MjcwLDkgQEAKICAgICAkbHRfYWNfc2VkIC1lICdzL2EkLy8nIDwgY29uZnRlc3QubmwgPmNvbmZ0ZXN0Lm91dCB8fCBicmVhawogICAgIGNtcCAtcyBjb25mdGVzdC5vdXQgY29uZnRlc3QubmwgfHwgYnJlYWsKICAgICAjIDEwMDAwIGNoYXJzIGFzIGlucHV0IHNlZW1zIG1vcmUgdGhhbiBlbm91Z2gKLSAgICB0ZXN0ICRsdF9hY19jb3VudCAtZ3QgMTAgJiYgYnJlYWsKKyAgICB0ZXN0IDEwIC1sdCAiJGx0X2FjX2NvdW50IiAmJiBicmVhawogICAgIGx0X2FjX2NvdW50PWBleHByICRsdF9hY19jb3VudCArIDFgCi0gICAgaWYgdGVzdCAkbHRfYWNfY291bnQgLWd0ICRsdF9hY19tYXg7IHRoZW4KKyAgICBpZiB0ZXN0ICIkbHRfYWNfY291bnQiIC1ndCAiJGx0X2FjX21heCI7IHRoZW4KICAgICAgIGx0X2FjX21heD0kbHRfYWNfY291bnQKICAgICAgIGx0X2N2X3BhdGhfU0VEPSRsdF9hY19zZWQKICAgICBmaQpAQCAtNzc5MiwyNyArODI5Niw3IEBACiAjIEZpbmQgb3V0IHdoZXRoZXIgdGhlIHNoZWxsIGlzIEJvdXJuZSBvciBYU0kgY29tcGF0aWJsZSwKICMgb3IgaGFzIHNvbWUgb3RoZXIgdXNlZnVsIGZlYXR1cmVzLgogbTRfZGVmdW4oW19MVF9DSEVDS19TSEVMTF9GRUFUVVJFU10sCi1bQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzXSkKLSMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi14c2lfc2hlbGw9bm8KLSggX2x0X2R1bW15PSJhL2IvYyIKLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICYmIHhzaV9zaGVsbD15ZXMKLUFDX01TR19SRVNVTFQoWyR4c2lfc2hlbGxdKQotX0xUX0NPTkZJR19MSUJUT09MX0lOSVQoW3hzaV9zaGVsbD0nJHhzaV9zaGVsbCddKQotCi1BQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzICIrPSJdKQotbHRfc2hlbGxfYXBwZW5kPW5vCi0oIGZvbz1iYXI7IHNldCBmb28gYmF6OyBldmFsICIkWzFdKz1cJFsyXSIgJiYgdGVzdCAiJGZvbyIgPSBiYXJiYXogKSBcCi0gICAgPi9kZXYvbnVsbCAyPiYxIFwKLSAgJiYgbHRfc2hlbGxfYXBwZW5kPXllcwotQUNfTVNHX1JFU1VMVChbJGx0X3NoZWxsX2FwcGVuZF0pCi1fTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbbHRfc2hlbGxfYXBwZW5kPSckbHRfc2hlbGxfYXBwZW5kJ10pCi0KLWlmICggKE1BSUw9NjA7IHVuc2V0IE1BSUwpIHx8IGV4aXQpID4vZGV2L251bGwgMj4mMTsgdGhlbgorW2lmICggKE1BSUw9NjA7IHVuc2V0IE1BSUwpIHx8IGV4aXQpID4vZGV2L251bGwgMj4mMTsgdGhlbgogICBsdF91bnNldD11bnNldAogZWxzZQogICBsdF91bnNldD1mYWxzZQpAQCAtNzgzNiwxMDIgKzgzMjAsOSBAQAogXSkjIF9MVF9DSEVDS19TSEVMTF9GRUFUVVJFUwogCiAKLSMgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRSAoRlVOQ05BTUUsIFJFUExBQ0VNRU5ULUJPRFkpCi0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBJbiBgJGNmZ2ZpbGUnLCBsb29rIGZvciBmdW5jdGlvbiBGVU5DTkFNRSBkZWxpbWl0ZWQgYnkgYF5GVU5DTkFNRSAoKSQnIGFuZAotIyAnXn0gRlVOQ05BTUUgJywgYW5kIHJlcGxhY2UgaXRzIGJvZHkgd2l0aCBSRVBMQUNFTUVOVC1CT0RZLgotbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAotW2RubCB7Ci1zZWQgLWUgJy9eJDEgKCkkLywvXn0gIyAkMSAvY1wKLSQxICgpXAote1wKLW00X2JwYXRzdWJzdHMoWyQyXSwgWyRdLCBbXFxdLCBbXlwoWwkgXVwpXSwgW1xcXDFdKQotfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLXRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci1dKQotCi0KLSMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwotIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIFJlcGxhY2UgZXhpc3RpbmcgcG9ydGFibGUgaW1wbGVtZW50YXRpb25zIG9mIHNldmVyYWwgc2hlbGwgZnVuY3Rpb25zIHdpdGgKLSMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCi1tNF9kZWZ1bihbX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOU10sCi1baWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCi0gICAgY2FzZSAkezF9IGluCi0gICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotICAgIGVzYWNdKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCi0gICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKLSAgICBjYXNlICR7MX0gaW4KLSAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0gICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0gICAgZXNhYwotICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3RyaXBuYW1lXSwgW2RubAotICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLSAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0gICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLSAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XSkKLQotICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX3NwbGl0X2xvbmdfb3B0XSwgW2RubAotICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfQotICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAotICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99Ci0gICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifV0pCi0KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19sbzJvXSwgW2RubAotICAgIGNhc2UgJHsxfSBpbgotICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLSAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotICAgIGVzYWNdKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfeGZvcm1dLCBbICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9dKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKLQotICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2xlbl0sIFsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XSkKLWZpCi0KLWlmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19hcHBlbmRdLCBbICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJdKQotCi0gIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKLSAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IgotZG5sIG00IGV4cGFuc2lvbiB0dXJucyBcXFxcIGludG8gXFwsIGFuZCB0aGVuIHRoZSBzaGVsbCBldmFsIHR1cm5zIHRoYXQgaW50byBcCi0gICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQotCi0gICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0gIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci1lbHNlCi0gICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0gIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFtbYS16QS1aX11dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0gIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci1maQotCi1pZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCi1maQotXSkKLQogIyBfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OUwogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CisjIERldGVybWluZSB3aGF0IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyBzaG91bGQgYmUgdXNlZCBieQogIyBmdW5jX3RvX2hvc3RfZmlsZSAoYW5kLCBpbXBsaWNpdGx5LCBieSBmdW5jX3RvX2hvc3RfcGF0aCkuICBUaGVzZSBhcmUgbmVlZGVkCiAjIGZvciBjZXJ0YWluIGNyb3NzLWNvbXBpbGUgY29uZmlndXJhdGlvbnMgYW5kIG5hdGl2ZSBtaW5ndy4KIG00X2RlZnVuKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10sCmRpZmYgLS1naXQgYS9tNC9sdG9wdGlvbnMubTQgYi9tNC9sdG9wdGlvbnMubTQKaW5kZXggNWQ5YWNkOC4uOTRiMDgyOSAxMDA2NDQKLS0tIGEvbTQvbHRvcHRpb25zLm00CisrKyBiL200L2x0b3B0aW9ucy5tNApAQCAtMSwxNCArMSwxNCBAQAogIyBIZWxwZXIgZnVuY3Rpb25zIGZvciBvcHRpb24gaGFuZGxpbmcuICAgICAgICAgICAgICAgICAgICAtKi0gQXV0b2NvbmYgLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSMgICBJbmMuCisjICAgQ29weXJpZ2h0IChDKSAyMDA0LTIwMDUsIDIwMDctMjAwOSwgMjAxMS0yMDE1IEZyZWUgU29mdHdhcmUKKyMgICBGb3VuZGF0aW9uLCBJbmMuCiAjICAgV3JpdHRlbiBieSBHYXJ5IFYuIFZhdWdoYW4sIDIwMDQKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CiAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgogCi0jIHNlcmlhbCA3IGx0b3B0aW9ucy5tNAorIyBzZXJpYWwgOCBsdG9wdGlvbnMubTQKIAogIyBUaGlzIGlzIHRvIGhlbHAgYWNsb2NhbCBmaW5kIHRoZXNlIG1hY3JvcywgYXMgaXQgY2FuJ3Qgc2VlIG00X2RlZmluZS4KIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKQEAgLTI5LDcgKzI5LDcgQEAKIFttNF9kZWZpbmUoX0xUX01BTkdMRV9PUFRJT04oWyQxXSwgWyQyXSkpZG5sCiBtNF9pZmRlZihfTFRfTUFOR0xFX0RFRlVOKFskMV0sIFskMl0pLAogICAgICAgICBfTFRfTUFOR0xFX0RFRlVOKFskMV0sIFskMl0pLAotICAgIFttNF93YXJuaW5nKFtVbmtub3duICQxIG9wdGlvbiBgJDInXSldKVtdZG5sCisgICAgW200X3dhcm5pbmcoW1Vua25vd24gJDEgb3B0aW9uICckMiddKV0pW11kbmwKIF0pCiAKIApAQCAtNzUsMTMgKzc1LDE1IEBACiAgIGRubAogICBkbmwgSWYgbm8gcmVmZXJlbmNlIHdhcyBtYWRlIHRvIHZhcmlvdXMgcGFpcnMgb2Ygb3Bwb3Npbmcgb3B0aW9ucywgdGhlbgogICBkbmwgd2UgcnVuIHRoZSBkZWZhdWx0IG1vZGUgaGFuZGxlciBmb3IgdGhlIHBhaXIuICBGb3IgZXhhbXBsZSwgaWYgbmVpdGhlcgotICBkbmwgYHNoYXJlZCcgbm9yIGBkaXNhYmxlLXNoYXJlZCcgd2FzIHBhc3NlZCwgd2UgZW5hYmxlIGJ1aWxkaW5nIG9mIHNoYXJlZAorICBkbmwgJ3NoYXJlZCcgbm9yICdkaXNhYmxlLXNoYXJlZCcgd2FzIHBhc3NlZCwgd2UgZW5hYmxlIGJ1aWxkaW5nIG9mIHNoYXJlZAogICBkbmwgYXJjaGl2ZXMgYnkgZGVmYXVsdDoKICAgX0xUX1VOTEVTU19PUFRJT05TKFtMVF9JTklUXSwgW3NoYXJlZCBkaXNhYmxlLXNoYXJlZF0sIFtfTFRfRU5BQkxFX1NIQVJFRF0pCiAgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtzdGF0aWMgZGlzYWJsZS1zdGF0aWNdLCBbX0xUX0VOQUJMRV9TVEFUSUNdKQogICBfTFRfVU5MRVNTX09QVElPTlMoW0xUX0lOSVRdLCBbcGljLW9ubHkgbm8tcGljXSwgW19MVF9XSVRIX1BJQ10pCiAgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFtmYXN0LWluc3RhbGwgZGlzYWJsZS1mYXN0LWluc3RhbGxdLAotICAJCSAgIFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF0pCisJCSAgIFtfTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF0pCisgIF9MVF9VTkxFU1NfT1BUSU9OUyhbTFRfSU5JVF0sIFthaXgtc29uYW1lPWFpeCBhaXgtc29uYW1lPWJvdGggYWl4LXNvbmFtZT1zdnI0XSwKKwkJICAgW19MVF9XSVRIX0FJWF9TT05BTUUoW2FpeF0pXSkKICAgXSkKIF0pIyBfTFRfU0VUX09QVElPTlMKIApAQCAtMTEyLDcgKzExNCw3IEBACiBbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbZGxvcGVuXSkKIEFDX0RJQUdOT1NFKFtvYnNvbGV0ZV0sCiBbJDA6IFJlbW92ZSB0aGlzIHdhcm5pbmcgYW5kIHRoZSBjYWxsIHRvIF9MVF9TRVRfT1BUSU9OIHdoZW4geW91Ci1wdXQgdGhlIGBkbG9wZW4nIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK3B1dCB0aGUgJ2Rsb3Blbicgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQogXSkKIAogZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgpAQCAtMTQ4LDcgKzE1MCw3IEBACiBfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFt3aW4zMi1kbGxdKQogQUNfRElBR05PU0UoW29ic29sZXRlXSwKIFskMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UKLXB1dCB0aGUgYHdpbjMyLWRsbCcgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQorcHV0IHRoZSAnd2luMzItZGxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCiBdKQogCiBkbmwgYWNsb2NhbC0xLjQgYmFja3dhcmRzIGNvbXBhdGliaWxpdHk6CkBAIC0xNTcsOSArMTU5LDkgQEAKIAogIyBfTFRfRU5BQkxFX1NIQVJFRChbREVGQVVMVF0pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zaGFyZWQgZmxhZywgYW5kIHN1cHBvcnRzIHRoZSBgc2hhcmVkJyBhbmQKLSMgYGRpc2FibGUtc2hhcmVkJyBMVF9JTklUIG9wdGlvbnMuCi0jIERFRkFVTFQgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgeWVzJy4KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zaGFyZWQgZmxhZywgYW5kIHN1cHBvcnRzIHRoZSAnc2hhcmVkJyBhbmQKKyMgJ2Rpc2FibGUtc2hhcmVkJyBMVF9JTklUIG9wdGlvbnMuCisjIERFRkFVTFQgaXMgZWl0aGVyICd5ZXMnIG9yICdubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAneWVzJy4KIG00X2RlZmluZShbX0xUX0VOQUJMRV9TSEFSRURdLAogW200X2RlZmluZShbX0xUX0VOQUJMRV9TSEFSRURfREVGQVVMVF0sIFttNF9pZigkMSwgbm8sIG5vLCB5ZXMpXSlkbmwKIEFDX0FSR19FTkFCTEUoW3NoYXJlZF0sCkBAIC0xNzIsMTQgKzE3NCwxNCBAQAogICAgICopCiAgICAgICBlbmFibGVfc2hhcmVkPW5vCiAgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCi0gICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kSUZTJFBBVEhfU0VQQVJBVE9SLAogICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgorCUlGUz0kbHRfc2F2ZV9pZnMKIAlpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgogCSAgZW5hYmxlX3NoYXJlZD15ZXMKIAlmaQogICAgICAgZG9uZQotICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgICA7OwogICAgIGVzYWNdLAogICAgIFtlbmFibGVfc2hhcmVkPV1fTFRfRU5BQkxFX1NIQVJFRF9ERUZBVUxUKQpAQCAtMjExLDkgKzIxMyw5IEBACiAKICMgX0xUX0VOQUJMRV9TVEFUSUMoW0RFRkFVTFRdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGltcGxlbWVudCB0aGUgLS1lbmFibGUtc3RhdGljIGZsYWcsIGFuZCBzdXBwb3J0IHRoZSBgc3RhdGljJyBhbmQKLSMgYGRpc2FibGUtc3RhdGljJyBMVF9JTklUIG9wdGlvbnMuCi0jIERFRkFVTFQgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgeWVzJy4KKyMgaW1wbGVtZW50IHRoZSAtLWVuYWJsZS1zdGF0aWMgZmxhZywgYW5kIHN1cHBvcnQgdGhlICdzdGF0aWMnIGFuZAorIyAnZGlzYWJsZS1zdGF0aWMnIExUX0lOSVQgb3B0aW9ucy4KKyMgREVGQVVMVCBpcyBlaXRoZXIgJ3llcycgb3IgJ25vJy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvICd5ZXMnLgogbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NUQVRJQ10sCiBbbTRfZGVmaW5lKFtfTFRfRU5BQkxFX1NUQVRJQ19ERUZBVUxUXSwgW200X2lmKCQxLCBubywgbm8sIHllcyldKWRubAogQUNfQVJHX0VOQUJMRShbc3RhdGljXSwKQEAgLTIyNiwxNCArMjI4LDE0IEBACiAgICAgKikKICAgICAgZW5hYmxlX3N0YXRpYz1ubwogICAgICAgIyBMb29rIGF0IHRoZSBhcmd1bWVudCB3ZSBnb3QuICBXZSB1c2UgYWxsIHRoZSBjb21tb24gbGlzdCBzZXBhcmF0b3JzLgotICAgICAgbHRfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSRQQVRIX1NFUEFSQVRPUiwiCisgICAgICBsdF9zYXZlX2lmcz0kSUZTOyBJRlM9JElGUyRQQVRIX1NFUEFSQVRPUiwKICAgICAgIGZvciBwa2cgaW4gJGVuYWJsZXZhbDsgZG8KLQlJRlM9IiRsdF9zYXZlX2lmcyIKKwlJRlM9JGx0X3NhdmVfaWZzCiAJaWYgdGVzdCAiWCRwa2ciID0gIlgkcCI7IHRoZW4KIAkgIGVuYWJsZV9zdGF0aWM9eWVzCiAJZmkKICAgICAgIGRvbmUKLSAgICAgIElGUz0iJGx0X3NhdmVfaWZzIgorICAgICAgSUZTPSRsdF9zYXZlX2lmcwogICAgICAgOzsKICAgICBlc2FjXSwKICAgICBbZW5hYmxlX3N0YXRpYz1dX0xUX0VOQUJMRV9TVEFUSUNfREVGQVVMVCkKQEAgLTI2NSw5ICsyNjcsOSBAQAogCiAjIF9MVF9FTkFCTEVfRkFTVF9JTlNUQUxMKFtERUZBVUxUXSkKICMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIyBpbXBsZW1lbnQgdGhlIC0tZW5hYmxlLWZhc3QtaW5zdGFsbCBmbGFnLCBhbmQgc3VwcG9ydCB0aGUgYGZhc3QtaW5zdGFsbCcKLSMgYW5kIGBkaXNhYmxlLWZhc3QtaW5zdGFsbCcgTFRfSU5JVCBvcHRpb25zLgotIyBERUZBVUxUIGlzIGVpdGhlciBgeWVzJyBvciBgbm8nLiAgSWYgb21pdHRlZCwgaXQgZGVmYXVsdHMgdG8gYHllcycuCisjIGltcGxlbWVudCB0aGUgLS1lbmFibGUtZmFzdC1pbnN0YWxsIGZsYWcsIGFuZCBzdXBwb3J0IHRoZSAnZmFzdC1pbnN0YWxsJworIyBhbmQgJ2Rpc2FibGUtZmFzdC1pbnN0YWxsJyBMVF9JTklUIG9wdGlvbnMuCisjIERFRkFVTFQgaXMgZWl0aGVyICd5ZXMnIG9yICdubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAneWVzJy4KIG00X2RlZmluZShbX0xUX0VOQUJMRV9GQVNUX0lOU1RBTExdLAogW200X2RlZmluZShbX0xUX0VOQUJMRV9GQVNUX0lOU1RBTExfREVGQVVMVF0sIFttNF9pZigkMSwgbm8sIG5vLCB5ZXMpXSlkbmwKIEFDX0FSR19FTkFCTEUoW2Zhc3QtaW5zdGFsbF0sCkBAIC0yODAsMTQgKzI4MiwxNCBAQAogICAgICopCiAgICAgICBlbmFibGVfZmFzdF9pbnN0YWxsPW5vCiAgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCi0gICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kSUZTJFBBVEhfU0VQQVJBVE9SLAogICAgICAgZm9yIHBrZyBpbiAkZW5hYmxldmFsOyBkbwotCUlGUz0iJGx0X3NhdmVfaWZzIgorCUlGUz0kbHRfc2F2ZV9pZnMKIAlpZiB0ZXN0ICJYJHBrZyIgPSAiWCRwIjsgdGhlbgogCSAgZW5hYmxlX2Zhc3RfaW5zdGFsbD15ZXMKIAlmaQogICAgICAgZG9uZQotICAgICAgSUZTPSIkbHRfc2F2ZV9pZnMiCisgICAgICBJRlM9JGx0X3NhdmVfaWZzCiAgICAgICA7OwogICAgIGVzYWNdLAogICAgIFtlbmFibGVfZmFzdF9pbnN0YWxsPV1fTFRfRU5BQkxFX0ZBU1RfSU5TVEFMTF9ERUZBVUxUKQpAQCAtMzA0LDE0ICszMDYsMTQgQEAKIFtfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIG00X2lmKFskMV0sIFtub10sIFtkaXNhYmxlLV0pW2Zhc3QtaW5zdGFsbF0pCiBBQ19ESUFHTk9TRShbb2Jzb2xldGVdLAogWyQwOiBSZW1vdmUgdGhpcyB3YXJuaW5nIGFuZCB0aGUgY2FsbCB0byBfTFRfU0VUX09QVElPTiB3aGVuIHlvdSBwdXQKLXRoZSBgZmFzdC1pbnN0YWxsJyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCit0aGUgJ2Zhc3QtaW5zdGFsbCcgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQogXSkKIAogQVVfREVGVU4oW0FDX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSwKIFtfTFRfU0VUX09QVElPTihbTFRfSU5JVF0sIFtkaXNhYmxlLWZhc3QtaW5zdGFsbF0pCiBBQ19ESUFHTk9TRShbb2Jzb2xldGVdLAogWyQwOiBSZW1vdmUgdGhpcyB3YXJuaW5nIGFuZCB0aGUgY2FsbCB0byBfTFRfU0VUX09QVElPTiB3aGVuIHlvdSBwdXQKLXRoZSBgZGlzYWJsZS1mYXN0LWluc3RhbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKK3RoZSAnZGlzYWJsZS1mYXN0LWluc3RhbGwnIG9wdGlvbiBpbnRvIExUX0lOSVQncyBmaXJzdCBwYXJhbWV0ZXIuXSkKIF0pCiAKIGRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKQEAgLTMxOSwxMSArMzIxLDY0IEBACiBkbmwgQUNfREVGVU4oW0FNX0RJU0FCTEVfRkFTVF9JTlNUQUxMXSwgW10pCiAKIAorIyBfTFRfV0lUSF9BSVhfU09OQU1FKFtERUZBVUxUXSkKKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBpbXBsZW1lbnQgdGhlIC0td2l0aC1haXgtc29uYW1lIGZsYWcsIGFuZCBzdXBwb3J0IHRoZSBgYWl4LXNvbmFtZT1haXgnCisjIGFuZCBgYWl4LXNvbmFtZT1ib3RoJyBhbmQgYGFpeC1zb25hbWU9c3ZyNCcgTFRfSU5JVCBvcHRpb25zLiBERUZBVUxUCisjIGlzIGVpdGhlciBgYWl4JywgYGJvdGgnIG9yIGBzdnI0Jy4gIElmIG9taXR0ZWQsIGl0IGRlZmF1bHRzIHRvIGBhaXgnLgorbTRfZGVmaW5lKFtfTFRfV0lUSF9BSVhfU09OQU1FXSwKK1ttNF9kZWZpbmUoW19MVF9XSVRIX0FJWF9TT05BTUVfREVGQVVMVF0sIFttNF9pZigkMSwgc3ZyNCwgc3ZyNCwgbTRfaWYoJDEsIGJvdGgsIGJvdGgsIGFpeCkpXSlkbmwKK3NoYXJlZF9hcmNoaXZlX21lbWJlcl9zcGVjPQorY2FzZSAkaG9zdCwkZW5hYmxlX3NoYXJlZCBpbgorcG93ZXIqLSotYWl4W1s1LTldXSoseWVzKQorICBBQ19NU0dfQ0hFQ0tJTkcoW3doaWNoIHZhcmlhbnQgb2Ygc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyB0byBwcm92aWRlXSkKKyAgQUNfQVJHX1dJVEgoW2FpeC1zb25hbWVdLAorICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWFpeC1zb25hbWU9YWl4fHN2cjR8Ym90aF0sCisgICAgICBbc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyAoYWthICJTT05BTUUiKSB2YXJpYW50IHRvIHByb3ZpZGUgb24gQUlYLCBAPDpAZGVmYXVsdD1dX0xUX1dJVEhfQUlYX1NPTkFNRV9ERUZBVUxUW0A6PkAuXSldLAorICAgIFtjYXNlICR3aXRodmFsIGluCisgICAgYWl4fHN2cjR8Ym90aCkKKyAgICAgIDs7CisgICAgKikKKyAgICAgIEFDX01TR19FUlJPUihbVW5rbm93biBhcmd1bWVudCB0byAtLXdpdGgtYWl4LXNvbmFtZV0pCisgICAgICA7OworICAgIGVzYWMKKyAgICBsdF9jdl93aXRoX2FpeF9zb25hbWU9JHdpdGhfYWl4X3NvbmFtZV0sCisgICAgW0FDX0NBQ0hFX1ZBTChbbHRfY3Zfd2l0aF9haXhfc29uYW1lXSwKKyAgICAgIFtsdF9jdl93aXRoX2FpeF9zb25hbWU9XV9MVF9XSVRIX0FJWF9TT05BTUVfREVGQVVMVCkKKyAgICB3aXRoX2FpeF9zb25hbWU9JGx0X2N2X3dpdGhfYWl4X3NvbmFtZV0pCisgIEFDX01TR19SRVNVTFQoWyR3aXRoX2FpeF9zb25hbWVdKQorICBpZiB0ZXN0IGFpeCAhPSAiJHdpdGhfYWl4X3NvbmFtZSI7IHRoZW4KKyAgICAjIEZvciB0aGUgQUlYIHdheSBvZiBtdWx0aWxpYiwgd2UgbmFtZSB0aGUgc2hhcmVkIGFyY2hpdmUgbWVtYmVyCisgICAgIyBiYXNlZCBvbiB0aGUgYml0d2lkdGggdXNlZCwgdHJhZGl0aW9uYWxseSAnc2hyLm8nIG9yICdzaHJfNjQubycsCisgICAgIyBhbmQgJ3Noci5pbXAnIG9yICdzaHJfNjQuaW1wJywgcmVzcGVjdGl2ZWx5LCBmb3IgdGhlIEltcG9ydCBGaWxlLgorICAgICMgRXZlbiB3aGVuIEdOVSBjb21waWxlcnMgaWdub3JlIE9CSkVDVF9NT0RFIGJ1dCBuZWVkICctbWFpeDY0JyBmbGFnLAorICAgICMgdGhlIEFJWCB0b29sY2hhaW4gd29ya3MgYmV0dGVyIHdpdGggT0JKRUNUX01PREUgc2V0IChkZWZhdWx0IDMyKS4KKyAgICBpZiB0ZXN0IDY0ID0gIiR7T0JKRUNUX01PREUtMzJ9IjsgdGhlbgorICAgICAgc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWM9c2hyXzY0CisgICAgZWxzZQorICAgICAgc2hhcmVkX2FyY2hpdmVfbWVtYmVyX3NwZWM9c2hyCisgICAgZmkKKyAgZmkKKyAgOzsKKyopCisgIHdpdGhfYWl4X3NvbmFtZT1haXgKKyAgOzsKK2VzYWMKKworX0xUX0RFQ0woW10sIFtzaGFyZWRfYXJjaGl2ZV9tZW1iZXJfc3BlY10sIFswXSwKKyAgICBbU2hhcmVkIGFyY2hpdmUgbWVtYmVyIGJhc2VuYW1lLCBmb3IgZmlsZW5hbWUgYmFzZWQgc2hhcmVkIGxpYnJhcnkgdmVyc2lvbmluZyBvbiBBSVhdKWRubAorXSkjIF9MVF9XSVRIX0FJWF9TT05BTUUKKworTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFthaXgtc29uYW1lPWFpeF0sIFtfTFRfV0lUSF9BSVhfU09OQU1FKFthaXhdKV0pCitMVF9PUFRJT05fREVGSU5FKFtMVF9JTklUXSwgW2FpeC1zb25hbWU9Ym90aF0sIFtfTFRfV0lUSF9BSVhfU09OQU1FKFtib3RoXSldKQorTFRfT1BUSU9OX0RFRklORShbTFRfSU5JVF0sIFthaXgtc29uYW1lPXN2cjRdLCBbX0xUX1dJVEhfQUlYX1NPTkFNRShbc3ZyNF0pXSkKKworCiAjIF9MVF9XSVRIX1BJQyhbTU9ERV0pCiAjIC0tLS0tLS0tLS0tLS0tLS0tLS0tCi0jIGltcGxlbWVudCB0aGUgLS13aXRoLXBpYyBmbGFnLCBhbmQgc3VwcG9ydCB0aGUgYHBpYy1vbmx5JyBhbmQgYG5vLXBpYycKKyMgaW1wbGVtZW50IHRoZSAtLXdpdGgtcGljIGZsYWcsIGFuZCBzdXBwb3J0IHRoZSAncGljLW9ubHknIGFuZCAnbm8tcGljJwogIyBMVF9JTklUIG9wdGlvbnMuCi0jIE1PREUgaXMgZWl0aGVyIGB5ZXMnIG9yIGBubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byBgYm90aCcuCisjIE1PREUgaXMgZWl0aGVyICd5ZXMnIG9yICdubycuICBJZiBvbWl0dGVkLCBpdCBkZWZhdWx0cyB0byAnYm90aCcuCiBtNF9kZWZpbmUoW19MVF9XSVRIX1BJQ10sCiBbQUNfQVJHX1dJVEgoW3BpY10sCiAgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtcGljQDw6QD1QS0dTQDo+QF0sCkBAIC0zMzQsMTkgKzM4OSwxNyBAQAogICAgICopCiAgICAgICBwaWNfbW9kZT1kZWZhdWx0CiAgICAgICAjIExvb2sgYXQgdGhlIGFyZ3VtZW50IHdlIGdvdC4gIFdlIHVzZSBhbGwgdGhlIGNvbW1vbiBsaXN0IHNlcGFyYXRvcnMuCi0gICAgICBsdF9zYXZlX2lmcz0iJElGUyI7IElGUz0iJHtJRlN9JFBBVEhfU0VQQVJBVE9SLCIKKyAgICAgIGx0X3NhdmVfaWZzPSRJRlM7IElGUz0kSUZTJFBBVEhfU0VQQVJBVE9SLAogICAgICAgZm9yIGx0X3BrZyBpbiAkd2l0aHZhbDsgZG8KLQlJRlM9IiRsdF9zYXZlX2lmcyIKKwlJRlM9JGx0X3NhdmVfaWZzCiAJaWYgdGVzdCAiWCRsdF9wa2ciID0gIlgkbHRfcCI7IHRoZW4KIAkgIHBpY19tb2RlPXllcwogCWZpCiAgICAgICBkb25lCi0gICAgICBJRlM9IiRsdF9zYXZlX2lmcyIKKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKICAgICAgIDs7CiAgICAgZXNhY10sCi0gICAgW3BpY19tb2RlPWRlZmF1bHRdKQotCi10ZXN0IC16ICIkcGljX21vZGUiICYmIHBpY19tb2RlPW00X2RlZmF1bHQoWyQxXSwgW2RlZmF1bHRdKQorICAgIFtwaWNfbW9kZT1tNF9kZWZhdWx0KFskMV0sIFtkZWZhdWx0XSldKQogCiBfTFRfREVDTChbXSwgW3BpY19tb2RlXSwgWzBdLCBbV2hhdCB0eXBlIG9mIG9iamVjdHMgdG8gYnVpbGRdKWRubAogXSkjIF9MVF9XSVRIX1BJQwpAQCAtMzU5LDcgKzQxMiw3IEBACiBbX0xUX1NFVF9PUFRJT04oW0xUX0lOSVRdLCBbcGljLW9ubHldKQogQUNfRElBR05PU0UoW29ic29sZXRlXSwKIFskMDogUmVtb3ZlIHRoaXMgd2FybmluZyBhbmQgdGhlIGNhbGwgdG8gX0xUX1NFVF9PUFRJT04gd2hlbiB5b3UKLXB1dCB0aGUgYHBpYy1vbmx5JyBvcHRpb24gaW50byBMVF9JTklUJ3MgZmlyc3QgcGFyYW1ldGVyLl0pCitwdXQgdGhlICdwaWMtb25seScgb3B0aW9uIGludG8gTFRfSU5JVCdzIGZpcnN0IHBhcmFtZXRlci5dKQogXSkKIAogZG5sIGFjbG9jYWwtMS40IGJhY2t3YXJkcyBjb21wYXRpYmlsaXR5OgpkaWZmIC0tZ2l0IGEvbTQvbHRzdWdhci5tNCBiL200L2x0c3VnYXIubTQKaW5kZXggOTAwMGEwNS4uNDhiYzkzNCAxMDA2NDQKLS0tIGEvbTQvbHRzdWdhci5tNAorKysgYi9tNC9sdHN1Z2FyLm00CkBAIC0xLDYgKzEsNyBAQAogIyBsdHN1Z2FyLm00IC0tIGxpYnRvb2wgbTQgYmFzZSBsYXllci4gICAgICAgICAgICAgICAgICAgICAgICAgLSotQXV0b2NvbmYtKi0KICMKLSMgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyBDb3B5cmlnaHQgKEMpIDIwMDQtMjAwNSwgMjAwNy0yMDA4LCAyMDExLTIwMTUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuCiAjIFdyaXR0ZW4gYnkgR2FyeSBWLiBWYXVnaGFuLCAyMDA0CiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCkBAIC0zMyw3ICszNCw3IEBACiAjIC0tLS0tLS0tLS0tLQogIyBNYW5pcHVsYXRlIG00IGxpc3RzLgogIyBUaGVzZSBtYWNyb3MgYXJlIG5lY2Vzc2FyeSBhcyBsb25nIGFzIHdpbGwgc3RpbGwgbmVlZCB0byBzdXBwb3J0Ci0jIEF1dG9jb25mLTIuNTkgd2hpY2ggcXVvdGVzIGRpZmZlcmVudGx5LgorIyBBdXRvY29uZi0yLjU5LCB3aGljaCBxdW90ZXMgZGlmZmVyZW50bHkuCiBtNF9kZWZpbmUoW2x0X2Nhcl0sIFtbJDFdXSkKIG00X2RlZmluZShbbHRfY2RyXSwKIFttNF9pZihbJCNdLCAwLCBbbTRfZmF0YWwoWyQwOiBjYW5ub3QgYmUgY2FsbGVkIHdpdGhvdXQgYXJndW1lbnRzXSldLApAQCAtNDQsNyArNDUsNyBAQAogCiAjIGx0X2FwcGVuZChNQUNSTy1OQU1FLCBTVFJJTkcsIFtTRVBBUkFUT1JdKQogIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSMgUmVkZWZpbmUgTUFDUk8tTkFNRSB0byBob2xkIGl0cyBmb3JtZXIgY29udGVudCBwbHVzIGBTRVBBUkFUT1InYFNUUklORycuCisjIFJlZGVmaW5lIE1BQ1JPLU5BTUUgdG8gaG9sZCBpdHMgZm9ybWVyIGNvbnRlbnQgcGx1cyAnU0VQQVJBVE9SJydTVFJJTkcnLgogIyBOb3RlIHRoYXQgbmVpdGhlciBTRVBBUkFUT1Igbm9yIFNUUklORyBhcmUgZXhwYW5kZWQ7IHRoZXkgYXJlIGFwcGVuZGVkCiAjIHRvIE1BQ1JPLU5BTUUgYXMgaXMgKGxlYXZpbmcgdGhlIGV4cGFuc2lvbiBmb3Igd2hlbiBNQUNSTy1OQU1FIGlzIGludm9rZWQpLgogIyBObyBTRVBBUkFUT1IgaXMgb3V0cHV0IGlmIE1BQ1JPLU5BTUUgd2FzIHByZXZpb3VzbHkgdW5kZWZpbmVkIChkaWZmZXJlbnQKZGlmZiAtLWdpdCBhL200L2x0dmVyc2lvbi5tNCBiL200L2x0dmVyc2lvbi5tNAppbmRleCAwN2E4NjAyLi5mYTA0YjUyIDEwMDY0NAotLS0gYS9tNC9sdHZlcnNpb24ubTQKKysrIGIvbTQvbHR2ZXJzaW9uLm00CkBAIC0xLDYgKzEsNiBAQAogIyBsdHZlcnNpb24ubTQgLS0gdmVyc2lvbiBudW1iZXJzCQkJLSotIEF1dG9jb25mIC0qLQogIwotIyAgIENvcHlyaWdodCAoQykgMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMgICBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMTEtMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IFNjb3R0IEphbWVzIFJlbW5hbnQsIDIwMDQKICMKICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKQEAgLTksMTUgKzksMTUgQEAKIAogIyBAY29uZmlndXJlX2lucHV0QAogCi0jIHNlcmlhbCAzMzM3IGx0dmVyc2lvbi5tNAorIyBzZXJpYWwgNDE3OSBsdHZlcnNpb24ubTQKICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKIAotbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1ZFUlNJT05dLCBbMi40LjJdKQotbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzMzN10pCittNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjQuNl0pCittNF9kZWZpbmUoW0xUX1BBQ0tBR0VfUkVWSVNJT05dLCBbMi40LjZdKQogCiBBQ19ERUZVTihbTFRWRVJTSU9OX1ZFUlNJT05dLAotW21hY3JvX3ZlcnNpb249JzIuNC4yJwotbWFjcm9fcmV2aXNpb249JzEuMzMzNycKK1ttYWNyb192ZXJzaW9uPScyLjQuNicKK21hY3JvX3JldmlzaW9uPScyLjQuNicKIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQogX0xUX0RFQ0woLCBtYWNyb19yZXZpc2lvbiwgMCkKIF0pCmRpZmYgLS1naXQgYS9tNC9sdH5vYnNvbGV0ZS5tNCBiL200L2x0fm9ic29sZXRlLm00CmluZGV4IGM1NzNkYTkuLmM2YjI2ZjggMTAwNjQ0Ci0tLSBhL200L2x0fm9ic29sZXRlLm00CisrKyBiL200L2x0fm9ic29sZXRlLm00CkBAIC0xLDYgKzEsNyBAQAogIyBsdH5vYnNvbGV0ZS5tNCAtLSBhY2xvY2FsIHNhdGlzZnlpbmcgb2Jzb2xldGUgZGVmaW5pdGlvbnMuICAgIC0qLUF1dG9jb25mLSotCiAjCi0jICAgQ29weXJpZ2h0IChDKSAyMDA0LCAyMDA1LCAyMDA3LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIENvcHlyaWdodCAoQykgMjAwNC0yMDA1LCAyMDA3LCAyMDA5LCAyMDExLTIwMTUgRnJlZSBTb2Z0d2FyZQorIyAgIEZvdW5kYXRpb24sIEluYy4KICMgICBXcml0dGVuIGJ5IFNjb3R0IEphbWVzIFJlbW5hbnQsIDIwMDQuCiAjCiAjIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCkBAIC0xMSw3ICsxMiw3IEBACiAKICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgogIwotIyBJbiB0aGUgcGFzdCBsaWJ0b29sLm00IGhhcyBwcm92aWRlZCBtYWNyb3MgdmlhIEFDX0RFRlVOIChvciBBVV9ERUZVTikKKyMgSW4gdGhlIHBhc3QgbGlidG9vbC5tNCBoYXMgcHJvdmlkZWQgbWFjcm9zIHZpYSBBQ19ERUZVTiAob3IgQVVfREVGVU4pLAogIyB3aGljaCBoYXZlIGxhdGVyIGJlZW4gY2hhbmdlZCB0byBtNF9kZWZpbmUgYXMgdGhleSBhcmVuJ3QgcGFydCBvZiB0aGUKICMgZXhwb3J0ZWQgQVBJLCBvciBtb3ZlZCB0byBBdXRvY29uZiBvciBBdXRvbWFrZSB3aGVyZSB0aGV5IGJlbG9uZy4KICMKQEAgLTI1LDcgKzI2LDcgQEAKICMgaW5jbHVkZWQgYWZ0ZXIgZXZlcnl0aGluZyBlbHNlLiAgVGhpcyBwcm92aWRlcyBhY2xvY2FsIHdpdGggdGhlCiAjIEFDX0RFRlVOcyBpdCB3YW50cywgYnV0IHdoZW4gbTQgcHJvY2Vzc2VzIGl0LCBpdCBkb2Vzbid0IGRvIGFueXRoaW5nCiAjIGJlY2F1c2UgdGhvc2UgbWFjcm9zIGFscmVhZHkgZXhpc3QsIG9yIHdpbGwgYmUgb3ZlcndyaXR0ZW4gbGF0ZXIuCi0jIFdlIHVzZSBBQ19ERUZVTiBvdmVyIEFVX0RFRlVOIGZvciBjb21wYXRpYmlsaXR5IHdpdGggYWNsb2NhbC0xLjYuIAorIyBXZSB1c2UgQUNfREVGVU4gb3ZlciBBVV9ERUZVTiBmb3IgY29tcGF0aWJpbGl0eSB3aXRoIGFjbG9jYWwtMS42LgogIwogIyBBbnl0aW1lIHdlIHdpdGhkcmF3IGFuIEFDX0RFRlVOIG9yIEFVX0RFRlVOLCByZW1lbWJlciB0byBhZGQgaXQgaGVyZS4KICMgWWVzLCB0aGF0IG1lYW5zIGV2ZXJ5IG5hbWUgb25jZSB0YWtlbiB3aWxsIG5lZWQgdG8gcmVtYWluIGhlcmUgdW50aWwKZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9NYWtlZmlsZS5hbSBiL3BrZ2NvbmZpZy9NYWtlZmlsZS5hbQppbmRleCAzZTUzYTZlLi44OGM3ZTUyIDEwMDY0NAotLS0gYS9wa2djb25maWcvTWFrZWZpbGUuYW0KKysrIGIvcGtnY29uZmlnL01ha2VmaWxlLmFtCkBAIC00LDEzICs0LDIxIEBACiAJZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKIAlnc3RyZWFtZXItY29kZWNwYXJzZXJzLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKIAlnc3RyZWFtZXItaW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKLQlnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALnBjCisJZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC5wYyBcCisJZ3N0cmVhbWVyLXBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5wYyBcCisJZ3N0cmVhbWVyLWJhZC1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKKwlnc3RyZWFtZXItYmFkLWF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKKwlnc3RyZWFtZXItYmFkLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALnBjCiAKIHBjdmVyZmlsZXNfdW5pbnN0YWxsZWQgPSBcCiAJZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKIAlnc3RyZWFtZXItY29kZWNwYXJzZXJzLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKIAlnc3RyZWFtZXItaW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKLQlnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjCisJZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCisJZ3N0cmVhbWVyLXBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCisJZ3N0cmVhbWVyLWJhZC1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKKwlnc3RyZWFtZXItYmFkLWF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjIFwKKwlnc3RyZWFtZXItYmFkLXZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALXVuaW5zdGFsbGVkLnBjCiAKIGlmIEhBVkVfR1NUX0dMCiBwY3ZlcmZpbGVzICs9IGdzdHJlYW1lci1nbC1AR1NUX0FQSV9WRVJTSU9OQC5wYwpAQCAtMzgsNyArNDYsMTEgQEAKICAgICAgICAgICAgZ3N0cmVhbWVyLWNvZGVjcGFyc2Vycy5wYy5pbiBnc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluIFwKICAgICAgICAgICAgZ3N0cmVhbWVyLWdsLnBjLmluIGdzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbiBcCiAgICAgICAgICAgIGdzdHJlYW1lci1pbnNlcnRiaW4ucGMuaW4gZ3N0cmVhbWVyLWluc2VydGJpbi11bmluc3RhbGxlZC5wYy5pbiBcCi0gICAgICAgICAgIGdzdHJlYW1lci1tcGVndHMucGMuaW4gZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYy5pbgorICAgICAgICAgICBnc3RyZWFtZXItbXBlZ3RzLnBjLmluIGdzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItcGxheWVyLnBjLmluIGdzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluIGdzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItYmFkLXZpZGVvLnBjLmluIGdzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItYmFkLWJhc2UucGMuaW4gZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjLmluCiAKIERJU1RDTEVBTkZJTEVTID0gJChwY2luZmlsZXM6LmluPSkKIEVYVFJBX0RJU1QgPSAkKHBjaW5maWxlcykKZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9NYWtlZmlsZS5pbiBiL3BrZ2NvbmZpZy9NYWtlZmlsZS5pbgppbmRleCA2Y2M5MjhlLi41NzFlMTE5IDEwMDY0NAotLS0gYS9wa2djb25maWcvTWFrZWZpbGUuaW4KKysrIGIvcGtnY29uZmlnL01ha2VmaWxlLmluCkBAIC0xMTcsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTM3LDEwICsxMzYsMTIgQEAKIAlnc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjIGdzdHJlYW1lci1pbnNlcnRiaW4ucGMgXAogCWdzdHJlYW1lci1pbnNlcnRiaW4tdW5pbnN0YWxsZWQucGMgZ3N0cmVhbWVyLWdsLnBjIFwKIAlnc3RyZWFtZXItZ2wtdW5pbnN0YWxsZWQucGMgZ3N0cmVhbWVyLW1wZWd0cy5wYyBcCi0JZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYyBnc3RyZWFtZXItd2F5bGFuZC5wYyBcCisJZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYyBnc3RyZWFtZXItcGxheWVyLnBjIFwKKwlnc3RyZWFtZXItcGxheWVyLXVuaW5zdGFsbGVkLnBjIGdzdHJlYW1lci13YXlsYW5kLnBjIFwKIAlnc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYyBnc3RyZWFtZXItYmFkLWJhc2UucGMgXAogCWdzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYyBnc3RyZWFtZXItYmFkLXZpZGVvLnBjIFwKLQlnc3RyZWFtZXItYmFkLXZpZGVvLXVuaW5zdGFsbGVkLnBjCisJZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYyBnc3RyZWFtZXItYmFkLWF1ZGlvLnBjIFwKKwlnc3RyZWFtZXItYmFkLWF1ZGlvLXVuaW5zdGFsbGVkLnBjCiBDT05GSUdfQ0xFQU5fVlBBVEhfRklMRVMgPQogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQpAQCAtMTkyLDYgKzE5Myw4IEBACiBEQVRBID0gJChwa2djb25maWdfREFUQSkKIGFtX190YWdnZWRfZmlsZXMgPSAkKEhFQURFUlMpICQoU09VUkNFUykgJChUQUdTX0ZJTEVTKSAkKExJU1ApCiBhbV9fRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuaW4gXAorCSQoc3JjZGlyKS9nc3RyZWFtZXItYmFkLWF1ZGlvLXVuaW5zdGFsbGVkLnBjLmluIFwKKwkkKHNyY2RpcikvZ3N0cmVhbWVyLWJhZC1hdWRpby5wYy5pbiBcCiAJJChzcmNkaXIpL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYy5pbiBcCiAJJChzcmNkaXIpL2dzdHJlYW1lci1iYWQtYmFzZS5wYy5pbiBcCiAJJChzcmNkaXIpL2dzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMuaW4gXApAQCAtMjA0LDYgKzIwNyw4IEBACiAJJChzcmNkaXIpL2dzdHJlYW1lci1pbnNlcnRiaW4ucGMuaW4gXAogCSQoc3JjZGlyKS9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjLmluIFwKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLW1wZWd0cy5wYy5pbiBcCisJJChzcmNkaXIpL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMuaW4gXAorCSQoc3JjZGlyKS9nc3RyZWFtZXItcGxheWVyLnBjLmluIFwKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjLmluIFwKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLnBjLmluIFwKIAkkKHNyY2RpcikvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMuaW4gXApAQCAtMjQ0LDYgKzI0OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgxLDYgKzI4OCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjg5LDcgKzI5OCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwOCw4ICszMTYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI2LDE2ICszMzUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYxLDYgKzM3MSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4Niw2ICszOTgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODcsNiArNTAxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMCw4ICs1MTUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTcsNiArNTMwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NCwxNiArNTg5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM1LDYgKzY1Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDUsNiArNjYzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU0LDYgKzY3Myw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTEsNyArNzEyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03MzYsMTIgKzc1NiwyMCBAQAogcGN2ZXJmaWxlcyA9IGdzdHJlYW1lci1wbHVnaW5zLWJhZC1AR1NUX0FQSV9WRVJTSU9OQC5wYyBcCiAJZ3N0cmVhbWVyLWNvZGVjcGFyc2Vycy1AR1NUX0FQSV9WRVJTSU9OQC5wYyBcCiAJZ3N0cmVhbWVyLWluc2VydGJpbi1AR1NUX0FQSV9WRVJTSU9OQC5wYyBcCi0JZ3N0cmVhbWVyLW1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQC5wYyAkKGFtX19hcHBlbmRfMSkKKwlnc3RyZWFtZXItbXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKKwlnc3RyZWFtZXItcGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALnBjIFwKKwlnc3RyZWFtZXItYmFkLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAucGMgXAorCWdzdHJlYW1lci1iYWQtYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAucGMgXAorCWdzdHJlYW1lci1iYWQtdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAucGMgJChhbV9fYXBwZW5kXzEpCiBwY3ZlcmZpbGVzX3VuaW5zdGFsbGVkID0gIFwKIAlnc3RyZWFtZXItcGx1Z2lucy1iYWQtQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAogCWdzdHJlYW1lci1jb2RlY3BhcnNlcnMtQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAogCWdzdHJlYW1lci1pbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAogCWdzdHJlYW1lci1tcGVndHMtQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAorCWdzdHJlYW1lci1wbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAtdW5pbnN0YWxsZWQucGMgXAorCWdzdHJlYW1lci1iYWQtYmFzZS1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCisJZ3N0cmVhbWVyLWJhZC1hdWRpby1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCisJZ3N0cmVhbWVyLWJhZC12aWRlby1AR1NUX0FQSV9WRVJTSU9OQC11bmluc3RhbGxlZC5wYyBcCiAJJChhbV9fYXBwZW5kXzIpCiBjcF92ZXJib3NlID0gJChjcF92ZXJib3NlXyQoVikpCiBjcF92ZXJib3NlXyA9ICQoY3BfdmVyYm9zZV8kKEFNX0RFRkFVTFRfVkVSQk9TSVRZKSkKQEAgLTc1NCw3ICs3ODIsMTEgQEAKICAgICAgICAgICAgZ3N0cmVhbWVyLWNvZGVjcGFyc2Vycy5wYy5pbiBnc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluIFwKICAgICAgICAgICAgZ3N0cmVhbWVyLWdsLnBjLmluIGdzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbiBcCiAgICAgICAgICAgIGdzdHJlYW1lci1pbnNlcnRiaW4ucGMuaW4gZ3N0cmVhbWVyLWluc2VydGJpbi11bmluc3RhbGxlZC5wYy5pbiBcCi0gICAgICAgICAgIGdzdHJlYW1lci1tcGVndHMucGMuaW4gZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYy5pbgorICAgICAgICAgICBnc3RyZWFtZXItbXBlZ3RzLnBjLmluIGdzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItcGxheWVyLnBjLmluIGdzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluIGdzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItYmFkLXZpZGVvLnBjLmluIGdzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGMuaW4gXAorICAgICAgICAgICBnc3RyZWFtZXItYmFkLWJhc2UucGMuaW4gZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjLmluCiAKIERJU1RDTEVBTkZJTEVTID0gJChwY2luZmlsZXM6LmluPSkKIEVYVFJBX0RJU1QgPSAkKHBjaW5maWxlcykKQEAgLTgxMCw2ICs4NDIsMTAgQEAKIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAogZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci1tcGVndHMtdW5pbnN0YWxsZWQucGMuaW4KIAljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAorZ3N0cmVhbWVyLXBsYXllci5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci1wbGF5ZXIucGMuaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAorZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMuaW4KKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzICQoc3ViZGlyKS8kQAogZ3N0cmVhbWVyLXdheWxhbmQucGM6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9nc3RyZWFtZXItd2F5bGFuZC5wYy5pbgogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRACiBnc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYzogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMgJChzcmNkaXIpL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjLmluCkBAIC04MjIsNiArODU4LDEwIEBACiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAKIGdzdHJlYW1lci1iYWQtdmlkZW8tdW5pbnN0YWxsZWQucGM6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9nc3RyZWFtZXItYmFkLXZpZGVvLXVuaW5zdGFsbGVkLnBjLmluCiAJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAKK2dzdHJlYW1lci1iYWQtYXVkaW8ucGM6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAKK2dzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGM6ICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzICQoc3JjZGlyKS9nc3RyZWFtZXItYmFkLWF1ZGlvLXVuaW5zdGFsbGVkLnBjLmluCisJY2QgJCh0b3BfYnVpbGRkaXIpICYmICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cyAkKHN1YmRpcikvJEAKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwpkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby11bmluc3RhbGxlZC5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Yjk1MzY0Ci0tLSAvZGV2L251bGwKKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYXVkaW8tdW5pbnN0YWxsZWQucGMuaW4KQEAgLTAsMCArMSwxMiBAQAorcHJlZml4PQorZXhlY19wcmVmaXg9CitsaWJkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9hdWRpby8ubGlicworaW5jbHVkZWRpcj1AYWJzX3RvcF9zcmNkaXJAL2dzdC1saWJzCisKK05hbWU6IEdTdHJlYW1lciBiYWQgYXVkaW8gbGlicmFyeSwgdW5pbnN0YWxsZWQKK0Rlc2NyaXB0aW9uOiBCYWQgYXVkaW8gbGlicmFyeSBmb3IgR1N0cmVhbWVyLCBOb3QgSW5zdGFsbGVkCitWZXJzaW9uOiBAVkVSU0lPTkAKK1JlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLWJhZC1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ACisKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0YmFkYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAKK0NmbGFnczogLUlAYWJzX3RvcF9zcmNkaXJAL2dzdC1saWJzIC1JQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWF1ZGlvLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlOTBkNjcKLS0tIC9kZXYvbnVsbAorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1hdWRpby5wYy5pbgpAQCAtMCwwICsxLDEzIEBACitwcmVmaXg9QHByZWZpeEAKK2V4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKK2xpYmRpcj1AbGliZGlyQAoraW5jbHVkZWRpcj1AaW5jbHVkZWRpckAvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACitwbHVnaW5zZGlyPUBsaWJkaXJAL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorCitOYW1lOiBHU3RyZWFtZXIgYmFkIGF1ZGlvIGxpYnJhcnksIHVuaW5zdGFsbGVkCitEZXNjcmlwdGlvbjogQmFkIGF1ZGlvIGxpYnJhcnkgZm9yIEdTdHJlYW1lciBlbGVtZW50cywgTm90IEluc3RhbGxlZAorVmVyc2lvbjogQFZFUlNJT05ACitSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYWQtYmFzZS1AR1NUX0FQSV9WRVJTSU9OQAorCitMaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0YmFkYXVkaW8tQEdTVF9BUElfVkVSU0lPTkAubGEKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS11bmluc3RhbGxlZC5wYy5pbgppbmRleCA1NjBlYjEzLi5lMTFhMDFiIDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLXVuaW5zdGFsbGVkLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UtdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEsMTUgKzEsMTQgQEAKIHByZWZpeD0KIGV4ZWNfcHJlZml4PQotbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvYmFzZQotaW5jbHVkZWRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMKLXBsdWdpbnNkaXI9JHtwY2ZpbGVkaXJ9Ly4uCitsaWJkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9iYXNlLy5saWJzCitpbmNsdWRlZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicworZ2lyZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvYmFzZQordHlwZWxpYmRpcj1AYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2Jhc2UKIAogTmFtZTogR1N0cmVhbWVyIGJhZCBiYXNlIGNsYXNzZXMsIHVuaW5zdGFsbGVkCiBEZXNjcmlwdGlvbjogQmFkIGJhc2UgY2xhc3NlcyBmb3IgR1N0cmVhbWVyIGVsZW1lbnRzLCBOb3QgSW5zdGFsbGVkCiBWZXJzaW9uOiBAVkVSU0lPTkAKIFJlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKIAotTGliczogLUwke2xpYmRpcn0gJHtsaWJkaXJ9L2xpYmdzdGJhZGJhc2UtQEdTVF9BUElfVkVSU0lPTkAubGEgQEJBREJBU0VfTElCU0AKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JQHNyY2RpckAvLi4gQEJBREJBU0VfQ0ZMQUdTQAotCi1saWJyYXJpZXM9YmFkYmFzZQorTGliczogLUwke2xpYmRpcn0gLWxnc3RiYWRiYXNlLUBHU1RfQVBJX1ZFUlNJT05ACitDZmxhZ3M6IC1JQGFic190b3Bfc3JjZGlyQC9nc3QtbGlicyAtSUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicwpkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLWJhc2UucGMuaW4KaW5kZXggYTAzMDEzYi4uMTBhZmUwZSAxMDA2NDQKLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtYmFzZS5wYy5pbgorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC1iYXNlLnBjLmluCkBAIC0yLDE0ICsyLDE1IEBACiBleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACiBsaWJkaXI9QGxpYmRpckAKIGluY2x1ZGVkaXI9QGluY2x1ZGVkaXJAL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotcGx1Z2luc2Rpcj1AbGliZGlyQC9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKK2RhdGFyb290ZGlyPSR7cHJlZml4fS9zaGFyZQorZGF0YWRpcj0ke2RhdGFyb290ZGlyfQorZ2lyZGlyPSR7ZGF0YWRpcn0vZ2lyLTEuMAordHlwZWxpYmRpcj0ke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMAogCi1OYW1lOiBHU3RyZWFtZXIgYmFkIGJhc2UgY2xhc3NlcywgdW5pbnN0YWxsZWQKLURlc2NyaXB0aW9uOiBCYWQgYmFzZSBjbGFzc2VzIGZvciBHU3RyZWFtZXIgZWxlbWVudHMsIE5vdCBJbnN0YWxsZWQKK05hbWU6IEdTdHJlYW1lciBiYWQgYmFzZSBjbGFzc2VzCitEZXNjcmlwdGlvbjogQmFkIGJhc2UgY2xhc3NlcyBmb3IgR1N0cmVhbWVyIGVsZW1lbnRzCiBWZXJzaW9uOiBAVkVSU0lPTkAKIFJlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKIAotTGliczogLUwke2xpYmRpcn0gJHtsaWJkaXJ9L2xpYmdzdGJhZGJhc2UtQEdTVF9BUElfVkVSU0lPTkAubGEgQEJBREJBU0VfTElCU0AKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JQHNyY2RpckAvLi4gQEJBREJBU0VfQ0ZMQUdTQAotCi1saWJyYXJpZXM9YmFkYmFzZQorTGliczogLUwke2xpYmRpcn0gJHtsaWJkaXJ9L2xpYmdzdGJhZGJhc2UtQEdTVF9BUElfVkVSU0lPTkAubGEKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby11bmluc3RhbGxlZC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLXVuaW5zdGFsbGVkLnBjLmluCmluZGV4IDZhMmEyMDYuLmY5YWU3YmYgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLXVuaW5zdGFsbGVkLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItYmFkLXZpZGVvLXVuaW5zdGFsbGVkLnBjLmluCkBAIC0xLDE1ICsxLDE0IEBACiBwcmVmaXg9CiBleGVjX3ByZWZpeD0KLWxpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L3ZpZGVvCi1pbmNsdWRlZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicwotcGx1Z2luc2Rpcj0ke3BjZmlsZWRpcn0vLi4KK2xpYmRpcj1AYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L3ZpZGVvLy5saWJzCitpbmNsdWRlZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicworZ2lyZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvdmlkZW8KK3R5cGVsaWJkaXI9QGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC92aWRlbwogCiBOYW1lOiBHU3RyZWFtZXIgYmFkIHZpZGVvIGxpYnJhcnksIHVuaW5zdGFsbGVkCi1EZXNjcmlwdGlvbjogQmFkIHZpZGVvIGxpYnJhcnkgZm9yIEdTdHJlYW1lciwgTm90IEluc3RhbGxlZAorRGVzY3JpcHRpb246IEJhZCB2aWRlbyBsaWJyYXJ5IGZvciBHU3RyZWFtZXIgZWxlbWVudHMsIE5vdCBJbnN0YWxsZWQKIFZlcnNpb246IEBWRVJTSU9OQAotUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItYmFkLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAKIAotTGliczogLUwke2xpYmRpcn0gJHtsaWJkaXJ9L2xpYmdzdGJhZHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIEBCQURCQVNFX0xJQlNACi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSUBzcmNkaXJALy4uIEBCQURCQVNFX0NGTEFHU0AKLQotbGlicmFyaWVzPWJhZHZpZGVvCitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGJhZHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ACitDZmxhZ3M6IC1JQGFic190b3Bfc3JjZGlyQC9nc3QtbGlicyAtSUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicwpkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1iYWQtdmlkZW8ucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYy5pbgppbmRleCA0ZmRmODg5Li40MDEyN2JlIDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYy5pbgorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWJhZC12aWRlby5wYy5pbgpAQCAtMiwxNCArMiwxNSBAQAogZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAogbGliZGlyPUBsaWJkaXJACiBpbmNsdWRlZGlyPUBpbmNsdWRlZGlyQC9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKLXBsdWdpbnNkaXI9QGxpYmRpckAvZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACitkYXRhcm9vdGRpcj0ke3ByZWZpeH0vc2hhcmUKK2RhdGFkaXI9JHtkYXRhcm9vdGRpcn0KK2dpcmRpcj0ke2RhdGFkaXJ9L2dpci0xLjAKK3R5cGVsaWJkaXI9JHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0xLjAKIAotTmFtZTogR1N0cmVhbWVyIGJhZCB2aWRlbyBsaWJyYXJ5LCB1bmluc3RhbGxlZAotRGVzY3JpcHRpb246IEJhZCB2aWRlbyBsaWJyYXJ5IGZvciBHU3RyZWFtZXIgZWxlbWVudHMsIE5vdCBJbnN0YWxsZWQKK05hbWU6IEdTdHJlYW1lciBiYWQgdmlkZW8gbGlicmFyeQorRGVzY3JpcHRpb246IEJhZCB2aWRlbyBsaWJyYXJ5IGZvciBHU3RyZWFtZXIgZWxlbWVudHMKIFZlcnNpb246IEBWRVJTSU9OQAotUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItYmFkLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAKIAotTGliczogLUwke2xpYmRpcn0gJHtsaWJkaXJ9L2xpYmdzdGJhZHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmxhIEBCQURCQVNFX0xJQlNACi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSUBzcmNkaXJALy4uIEBCQURCQVNFX0NGTEFHU0AKLQotbGlicmFyaWVzPWJhZHZpZGVvCitMaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0YmFkdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAubGEKK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWNvZGVjcGFyc2Vycy11bmluc3RhbGxlZC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluCmluZGV4IGQxYmI5YjAuLjcxZWQ3NzEgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItY29kZWNwYXJzZXJzLXVuaW5zdGFsbGVkLnBjLmluCkBAIC0xLDEyICsxLDEyIEBACiBwcmVmaXg9CiBleGVjX3ByZWZpeD0KLWxpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2VycworbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzLy5saWJzCiBpbmNsdWRlZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicwogCiBOYW1lOiBHU3RyZWFtZXIgY29kZWMgcGFyc2VycywgVW5pbnN0YWxsZWQKIERlc2NyaXB0aW9uOiBCaXRzdHJlYW0gcGFyc2VycyBmb3IgR1N0cmVhbWVyIGVsZW1lbnRzLCB1bmluc3RhbGxlZAogUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQAogVmVyc2lvbjogQFZFUlNJT05ACi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0Y29kZWNwYXJzZXJzLUBHU1RfQVBJX1ZFUlNJT05ALmxhCitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGNvZGVjcGFyc2Vycy1AR1NUX0FQSV9WRVJTSU9OQAogQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KIApkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wtdW5pbnN0YWxsZWQucGMuaW4KaW5kZXggNzZlZWZiOS4uZGFjNGNkYSAxMDA2NDQKLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC11bmluc3RhbGxlZC5wYy5pbgorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWdsLXVuaW5zdGFsbGVkLnBjLmluCkBAIC0xLDE1ICsxLDE1IEBACiBwcmVmaXg9CiBleGVjX3ByZWZpeD0KLWxpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L2dsCi1pbmNsdWRlZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicwotcGx1Z2luc2Rpcj0ke3BjZmlsZWRpcn0vLi4KK2xpYmRpcj1AYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2dsLy5saWJzCitpbmNsdWRlZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicworZ2lyZGlyPUBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvYmFzZQordHlwZWxpYmRpcj1AYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2Jhc2UKIAogTmFtZTogR1N0cmVhbWVyIE9wZW5HTCBQbHVnaW5zIExpYnJhcmllcywgVW5pbnN0YWxsZWQKIERlc2NyaXB0aW9uOiBTdHJlYW1pbmcgbWVkaWEgZnJhbWV3b3JrLCBPcGVuR0wgcGx1Z2lucyBsaWJyYXJpZXMsIHVuaW5zdGFsbGVkCiBWZXJzaW9uOiBAVkVSU0lPTkAKLVJlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKK1JlcXVpcmVzOiBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKIAotTGliczogLUwke2xpYmRpcn0gJHtsaWJkaXJ9L2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIEBHTF9MSUJTQAotQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUlAc3JjZGlyQC8uLiBAR0xfQ0ZMQUdTQAorTGliczogLUwke2xpYmRpcn0gLWxnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQCBAR0xfTElCU0AKK0NmbGFnczogLUlAYWJzX3RvcF9zcmNkaXJAL2dzdC1saWJzIC1JQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzCiAKLWxpYnJhcmllcz1nbApkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KaW5kZXggMWI5ODc2Mi4uNTU4OWUyYSAxMDA2NDQKLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgorKysgYi9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluCkBAIC02LDggKzYsOCBAQAogCiBOYW1lOiBHU3RyZWFtZXIgT3BlbkdMIFBsdWdpbnMgTGlicmFyaWVzCiBEZXNjcmlwdGlvbjogU3RyZWFtaW5nIG1lZGlhIGZyYW1ld29yaywgT3BlbkdMIHBsdWdpbnMgbGlicmFyaWVzCi1SZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05ACiBWZXJzaW9uOiBAVkVSU0lPTkAKLUxpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAgQEdMX0xJQlNACi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSAtSSR7bGliZGlyfS9nc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAvaW5jbHVkZSBAR0xfQ0ZMQUdTQAorUmVxdWlyZXM6IGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAogCitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdGdsLUBHU1RfQVBJX1ZFUlNJT05AIEBHTF9MSUJTQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gQEdMX0NGTEFHU0AKZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItaW5zZXJ0YmluLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1pbnNlcnRiaW4tdW5pbnN0YWxsZWQucGMuaW4KaW5kZXggMGEwMWU3OS4uMWE1MzVhYSAxMDA2NDQKLS0tIGEvcGtnY29uZmlnL2dzdHJlYW1lci1pbnNlcnRiaW4tdW5pbnN0YWxsZWQucGMuaW4KKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1pbnNlcnRiaW4tdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEsMTIgKzEsMTIgQEAKIHByZWZpeD0KIGV4ZWNfcHJlZml4PQotbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvaW5zZXJ0YmluCitsaWJkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzL2dzdC9pbnNlcnRiaW4vLmxpYnMKIGluY2x1ZGVkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzCiAKIE5hbWU6IEdTdHJlYW1lciBJbnNlcnQgQmluLCBVbmluc3RhbGxlZAogRGVzY3JpcHRpb246IEJpbiB0byBhdXRvbWF0aWNhbGx5IGFuZCBpbnNlcnRhbGx5IGxpbmsgZWxlbWVudHMsIHVuaW5zdGFsbGVkCiBSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACiBWZXJzaW9uOiBAVkVSU0lPTkAKLUxpYnM6IC1MJHtsaWJkaXJ9ICR7bGliZGlyfS9saWJnc3RpbnNlcnRiaW4tQEdTVF9BUElfVkVSU0lPTkAubGEKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0aW5zZXJ0YmluLUBHU1RfQVBJX1ZFUlNJT05ACiBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQogCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLW1wZWd0cy11bmluc3RhbGxlZC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjLmluCmluZGV4IGU5YWEyNjEuLjE3OTk5NmMgMTAwNjQ0Ci0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItbXBlZ3RzLXVuaW5zdGFsbGVkLnBjLmluCkBAIC0xLDEyICsxLDEyIEBACiBwcmVmaXg9CiBleGVjX3ByZWZpeD0KLWxpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L21wZWd0cworbGliZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicy9nc3QvbXBlZ3RzLy5saWJzCiBpbmNsdWRlZGlyPSR7cGNmaWxlZGlyfS8uLi9nc3QtbGlicwogCiBOYW1lOiBHU3RyZWFtZXIgTVBFRy1UUywgVW5pbnN0YWxsZWQKIERlc2NyaXB0aW9uOiBHU3RyZWFtZXIgTVBFRy1UUyBzdXBwb3J0LCB1bmluc3RhbGxlZAogUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQCBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQAogVmVyc2lvbjogQFZFUlNJT05ACi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0bXBlZ3RzLUBHU1RfQVBJX1ZFUlNJT05ALmxhCitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdG1wZWd0cy1AR1NUX0FQSV9WRVJTSU9OQAogQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KIApkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci11bmluc3RhbGxlZC5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTQ5NWY0Ci0tLSAvZGV2L251bGwKKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXItdW5pbnN0YWxsZWQucGMuaW4KQEAgLTAsMCArMSwxMiBAQAorcHJlZml4PQorZXhlY19wcmVmaXg9CitsaWJkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzL2dzdC9wbGF5ZXIvLmxpYnMKK2luY2x1ZGVkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzCisKK05hbWU6IEdTdHJlYW1lciBQbGF5ZXIsIFVuaW5zdGFsbGVkCitEZXNjcmlwdGlvbjogR1N0cmVhbWVyIFBsYXllciBjb252ZW5pZW5jZSBsaWJyYXJ5LCB1bmluc3RhbGxlZAorUmVxdWlyZXM6IGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorVmVyc2lvbjogQFZFUlNJT05ACitMaWJzOiAtTCR7bGliZGlyfSAtbGdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQAorQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KKwpkaWZmIC0tZ2l0IGEvcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXIucGMuaW4gYi9wa2djb25maWcvZ3N0cmVhbWVyLXBsYXllci5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjk2ZTdmCi0tLSAvZGV2L251bGwKKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci1wbGF5ZXIucGMuaW4KQEAgLTAsMCArMSwxMiBAQAorcHJlZml4PUBwcmVmaXhACitleGVjX3ByZWZpeD1AZXhlY19wcmVmaXhACitsaWJkaXI9QGxpYmRpckAKK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJAL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAorCitOYW1lOiBHU3RyZWFtZXIgUGxheWVyCitEZXNjcmlwdGlvbjogR1N0cmVhbWVyIFBsYXllciBjb252ZW5pZW5jZSBsaWJyYXJ5CitSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACitWZXJzaW9uOiBAVkVSU0lPTkAKK0xpYnM6IC1MJHtsaWJkaXJ9IC1sZ3N0cGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ACitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQorCmRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1wbHVnaW5zLWJhZC11bmluc3RhbGxlZC5wYy5pbgppbmRleCA2ZmNmNzczLi5kZjlhOWM1IDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLXBsdWdpbnMtYmFkLXVuaW5zdGFsbGVkLnBjLmluCisrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItcGx1Z2lucy1iYWQtdW5pbnN0YWxsZWQucGMuaW4KQEAgLTEwLDUgKzEwLDUgQEAKIERlc2NyaXB0aW9uOiBTdHJlYW1pbmcgbWVkaWEgZnJhbWV3b3JrLCBiYWQgcGx1Z2lucyBsaWJyYXJpZXMsIHVuaW5zdGFsbGVkCiBWZXJzaW9uOiBAVkVSU0lPTkAKIFJlcXVpcmVzOiBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkAKLUxpYnM6IC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9iYXNlY2FtZXJhYmluc3JjIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L2VnbCAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvaW5zZXJ0YmluIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9tcGVndHMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L3NpZ25hbHByb2Nlc3NvciAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvdmlkZW8KK0xpYnM6IC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9hdWRpby8ubGlicyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvYmFzZWNhbWVyYWJpbnNyYy8ubGlicyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9nbC8ubGlicyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3QvaW5zZXJ0YmluLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC9tcGVndHMvLmxpYnMgLUxAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMvZ3N0L3BsYXllci8ubGlicyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3Qvc2lnbmFscHJvY2Vzc29yLy5saWJzIC1MQGFic190b3BfYnVpbGRkaXJAL2dzdC1saWJzL2dzdC92aWRlby8ubGlicyAtTEBhYnNfdG9wX2J1aWxkZGlyQC9nc3QtbGlicy9nc3Qvd2F5bGFuZC8ubGlicwogQ2ZsYWdzOiAtSUBhYnNfdG9wX3NyY2RpckAvZ3N0LWxpYnMgLUlAYWJzX3RvcF9idWlsZGRpckAvZ3N0LWxpYnMKZGlmZiAtLWdpdCBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYy5pbiBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItd2F5bGFuZC11bmluc3RhbGxlZC5wYy5pbgppbmRleCBmZTAxZGU2Li44MGQ2ZTFiIDEwMDY0NAotLS0gYS9wa2djb25maWcvZ3N0cmVhbWVyLXdheWxhbmQtdW5pbnN0YWxsZWQucGMuaW4KKysrIGIvcGtnY29uZmlnL2dzdHJlYW1lci13YXlsYW5kLXVuaW5zdGFsbGVkLnBjLmluCkBAIC0xLDEyICsxLDEyIEBACiBwcmVmaXg9CiBleGVjX3ByZWZpeD0KLWxpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L3dheWxhbmQKK2xpYmRpcj0ke3BjZmlsZWRpcn0vLi4vZ3N0LWxpYnMvZ3N0L3dheWxhbmQvLmxpYnMKIGluY2x1ZGVkaXI9JHtwY2ZpbGVkaXJ9Ly4uL2dzdC1saWJzCiAKIE5hbWU6IEdTdHJlYW1lciBXYXlsYW5kLCBVbmluc3RhbGxlZAogRGVzY3JpcHRpb246IEdTdHJlYW1lciBXYXlsYW5kIHN1cHBvcnQsIHVuaW5zdGFsbGVkCiBSZXF1aXJlczogZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIGdzdHJlYW1lci12aWRlby1AR1NUX0FQSV9WRVJTSU9OQAogVmVyc2lvbjogQFZFUlNJT05ACi1MaWJzOiAtTCR7bGliZGlyfSAke2xpYmRpcn0vbGliZ3N0d2F5bGFuZC1AR1NUX0FQSV9WRVJTSU9OQC5sYQorTGliczogLUwke2xpYmRpcn0gLWxnc3R3YXlsYW5kLUBHU1RfQVBJX1ZFUlNJT05ACiBDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQogCmRpZmYgLS1naXQgYS9wby9QT1RGSUxFUy5pbiBiL3BvL1BPVEZJTEVTLmluCmluZGV4IGFkNDIzMTguLjAzZDYwM2YgMTAwNjQ0Ci0tLSBhL3BvL1BPVEZJTEVTLmluCisrKyBiL3BvL1BPVEZJTEVTLmluCkBAIC0xLDcgKzEsNiBAQAogZXh0L2Rhc2gvZ3N0ZGFzaGRlbXV4LmMKIGV4dC9nbC9nc3RnbHRlc3RzcmMuYwotZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW4KLWV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jCitleHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guY3BwCiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYwogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jCiBleHQvc25kZmlsZS9nc3RzZmRlYy5jCmRpZmYgLS1naXQgYS9wby9hZi5nbW8gYi9wby9hZi5nbW8KaW5kZXggNzQ0N2E2My4uNmNjMGYwZiAxMDA2NDQKLS0tIGEvcG8vYWYuZ21vCisrKyBiL3BvL2FmLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9hZi5wbyBiL3BvL2FmLnBvCmluZGV4IGIxOTRlZGYuLjVjYjU0NzMgMTAwNjQ0Ci0tLSBhL3BvL2FmLnBvCisrKyBiL3BvL2FmLnBvCkBAIC03LDcgKzcsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucyAwLjcuNlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwNC0wMy0xOCAxNDoxNiswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBQZXRyaSBKb29zdGUgPHJrd2pwakBwdWsuYWMuemE+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQWZyaWthYW5zIDxpMThuQGFmLm9yZy56YT5cbiIKQEAgLTE5LDk1ICsxOSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9hei5nbW8gYi9wby9hei5nbW8KaW5kZXggMDg3YTBmNC4uOTkxNzdiMyAxMDA2NDQKLS0tIGEvcG8vYXouZ21vCisrKyBiL3BvL2F6LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9hei5wbyBiL3BvL2F6LnBvCmluZGV4IGU3MTFhYzYuLmRmMTQwZWMgMTAwNjQ0Ci0tLSBhL3BvL2F6LnBvCisrKyBiL3BvL2F6LnBvCkBAIC03LDcgKzcsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy0wLjguMFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwNC0wMy0xOSAxODoyOSswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBNZXRpbiBBbWlyb2ZmIDxtZXRpbkBrYXJlZ2VuLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBBemVyYmFpamFuaSA8dHJhbnNsYXRpb24tdGVhbS1hekBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yMCw5NSArMjAsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vYmcuZ21vIGIvcG8vYmcuZ21vCmluZGV4IDBjOGRiMzkuLjY5ODExOTMgMTAwNjQ0Ci0tLSBhL3BvL2JnLmdtbworKysgYi9wby9iZy5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vYmcucG8gYi9wby9iZy5wbwppbmRleCAyMGFjOTk4Li43YmUyZjYxIDEwMDY0NAotLS0gYS9wby9iZy5wbworKysgYi9wby9iZy5wbwpAQCAtMSwxMTcgKzEsMjggQEAKICMgQnVsZ2FyaWFuIHRyYW5zbGF0aW9uIG9mIGdzdC1wbHVnaW5zLWJhZC4KLSMgQ29weXJpZ2h0IChDKSAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwLCAyMDExIEZyZWUgU29mdHdhcmUgRm9uZGF0aW9uLCBJbmMuCisjIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCwgMjAxMSwgMjAxNiBGcmVlIFNvZnR3YXJlIEZvbmRhdGlvbiwgSW5jLgogIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgZ3N0LXBsdWdpbnMtYmFkIHBhY2thZ2UuCi0jIEFsZXhhbmRlciBTaG9wb3YgPGFzaEBrYW1iYW5hcmlhLm9yZz4sIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEuCisjIEFsZXhhbmRlciBTaG9wb3YgPGFzaEBrYW1iYW5hcmlhLm9yZz4sIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAsIDIwMTEsIDIwMTYuCiAjCiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4yMS4yXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS43LjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAxMS0wNC0yNiAyMjozMCswMzAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTYtMDItMjEgMjE6MDMrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogQWxleGFuZGVyIFNob3BvdiA8YXNoQGthbWJhbmFyaWEub3JnPlxuIgotIkxhbmd1YWdlLVRlYW06IEJ1bGdhcmlhbiA8ZGljdEBmc2EtYmcub3JnPlxuIgotIkxhbmd1YWdlOiBcbiIKKyJMYW5ndWFnZS1UZWFtOiBCdWxnYXJpYW4gPGRpY3RAbHVkb3N0Lm5ldD5cbiIKKyJMYW5ndWFnZTogYmdcbiIKICJNSU1FLVZlcnNpb246IDEuMFxuIgogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgogIkNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXRcbiIKICJQbHVyYWwtRm9ybXM6IG5wbHVyYWxzPTI7IHBsdXJhbD1uICE9IDE7XG4iCiAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgorbXNnc3RyICLRhNC+0YDQvNCw0YLRitGCINC90LUg0LUg0LHQuNC7INGD0YLQvtGH0L3QtdC9INC/0YDQtdC00Lgg0LjQt9Cy0LjQutCy0LDQvdC1INC90LAg0YTRg9C90LrRhtC40Y/RgtCwINC30LAg0L/QvtC70YPRh9Cw0LLQsNC90LUiCiAKIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCi1tc2dzdHIgIiIKK21zZ3N0ciAiT3BlbkNWINC90LUg0YPRgdC/0Y8g0LTQsCDQt9Cw0YDQtdC00Lgg0LjQt9C+0LHRgNCw0LbQtdC90LjQtdGC0L4t0YjQsNCx0LvQvtC9IgogCiBtc2dpZCAiQ291bGQgbm90IHJlYWQgdGl0bGUgaW5mb3JtYXRpb24gZm9yIERWRC4iCiBtc2dzdHIgItCY0L3RhNC+0YDQvNCw0YbQuNGP0YLQsCDQt9CwINC30LDQs9C70LDQstC90LjRgtC1INGH0LDRgdGC0Lgg0L3QsCBEVkQt0YLQviDQvdC1INC80L7QttC1INC00LAg0LHRitC00LUg0L/RgNC+0YfQtdGC0LXQvdCwLiIKQEAgLTEzNCw1MyArNDUsNTIgQEAKIG1zZ3N0ciAiRFZELdGC0L4g0L3QtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1INC/0YDQvtGH0LXRgtC10L3Qvi4iCiAKIG1zZ2lkICJUaGlzIGZpbGUgY29udGFpbnMgbm8gcGxheWFibGUgc3RyZWFtcy4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi0KTQsNC50LvRitGCINC90LUg0YHRitC00YrRgNC20LAg0L/QvtGC0L7RhtC4INC30LAg0LjQt9C/0YrQu9C90LXQvdC40LUuIgogCi0jLCBmdXp6eQogbXNnaWQgIkNvdWxkIG5vdCBvcGVuIHNuZGZpbGUgc3RyZWFtIGZvciByZWFkaW5nLiIKLW1zZ3N0ciAi0KTQsNC50LvRitGCIOKAniVz4oCcINC90LUg0LzQvtC20LUg0LTQsCDRgdC1INC+0YLQstC+0YDQuCDQt9CwINGH0LXRgtC10L3QtS4iCittc2dzdHIgItCf0L7RgtC+0LrRitGCIHNuZGZpbGUg0L3QtSDQvNC+0LbQtSDQtNCwINGB0LUg0L7RgtCy0L7RgNC4INC30LAg0YfQtdGC0LXQvdC1LiIKIAogbXNnaWQgIkNvdWxkIG5vdCBlc3RhYmxpc2ggY29ubmVjdGlvbiB0byBzbmRpbyIKLW1zZ3N0ciAiIgorbXNnc3RyICLQndC1INC80L7QttC1INC00LAg0YHQtSDRg9GB0YLQsNC90L7QstC4INCy0YDRitC30LrQsCDQutGK0Lwgc25kaW8iCiAKIG1zZ2lkICJGYWlsZWQgdG8gcXVlcnkgc25kaW8gY2FwYWJpbGl0aWVzIgotbXNnc3RyICIiCittc2dzdHIgItCd0LXRg9GB0L/QtdGI0L3QviDQt9Cw0L/QuNGC0LLQsNC90LUg0LfQsCDQstGK0LfQvNC+0LbQvdC+0YHRgtC40YLQtSDQvdCwIHNuZGlvIgogCi0jLCBmdXp6eQogbXNnaWQgIkNvdWxkIG5vdCBjb25maWd1cmUgc25kaW8iCi1tc2dzdHIgItCk0LDQudC70YrRgiDigJ4lc+KAnCDQvdC1INC80L7QttC1INC00LAg0YHQtSDQvtGC0LLQvtGA0Lgg0LfQsCDRh9C10YLQtdC90LUuIgorbXNnc3RyICLQndC1INC80L7QttC1INC00LAg0YHQtSDQvdCw0YHRgtGA0L7QuCBzbmRpbyIKIAotIywgZnV6enkKIG1zZ2lkICJDb3VsZCBub3Qgc3RhcnQgc25kaW8iCi1tc2dzdHIgIkRWRC3RgtC+INC90LUg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDQv9GA0L7Rh9C10YLQtdC90L4uIgorbXNnc3RyICLQndC1INC80L7QttC1INC00LAg0YHQtSDRgdGC0LDRgNGC0LjRgNCwIHNuZGlvIgogCiBtc2dpZCAiSW50ZXJuYWwgZGF0YSBmbG93IGVycm9yLiIKIG1zZ3N0ciAi0JLRitGC0YDQtdGI0L3QsCDQs9GA0LXRiNC60LAg0LIg0L/QvtGC0L7QutCwINC90LAg0LTQsNC90L3QuC4iCiAKIG1zZ2lkICJHZW5lcmF0ZWQgZmlsZSBoYXMgYSBsYXJnZXIgcHJlcm9sbCB0aW1lIHRoYW4gaXRzIHN0cmVhbXMgZHVyYXRpb24iCiBtc2dzdHIgIiIKKyLQk9C10L3QtdGA0LjRgNCw0L3QuNGP0YIg0YTQsNC50Lsg0LUg0YEg0L/Qvi3QtNGK0LvQs9C+INCy0YDQtdC80LUg0LfQsCDQsdGD0YTQtdGA0LjRgNCw0L3QtSDQvtGC0LrQvtC70LrQvtGC0L4g0LUg0YHQsNC80LDRgtCwINC80YMgIgorItC/0YDQvtC00YrQu9C20LjRgtC10LvQvdC+0YHRgiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJNaXNzaW5nIGVsZW1lbnQgJyVzJyAtIGNoZWNrIHlvdXIgR1N0cmVhbWVyIGluc3RhbGxhdGlvbi4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi0JXQu9C10LzQtdC90YLRitGCIOKAniVz4oCcINC70LjQv9GB0LLQsCwg0L/RgNC+0LLQtdGA0LXRgtC1INC40L3RgdGC0LDQu9Cw0YbQuNGP0YLQsCDQvdCwIEdTdHJlYW1lci4iCiAKIG1zZ2lkICJGaWxlIGxvY2F0aW9uIGlzIHNldCB0byBOVUxMLCBwbGVhc2Ugc2V0IGl0IHRvIGEgdmFsaWQgZmlsZW5hbWUiCi1tc2dzdHIgIiIKK21zZ3N0ciAi0JzQtdGB0YLQvtC/0L7Qu9C+0LbQtdC90LjQtdGC0L4g0L3QsCDRhNCw0LnQu9CwINC1IE5VTEwuINCX0LDQtNCw0LnRgtC1INC40LzQtSDQvdCwINGE0LDQudC7IgogCiBtc2dpZCAiRGlnaXRhbHpvb20gZWxlbWVudCBjb3VsZG4ndCBiZSBjcmVhdGVkIgotbXNnc3RyICIiCittc2dzdHIgItCV0LvQtdC80LXQvdGC0YrRgiDQt9CwINGG0LjRhNGA0L7QstC+INGD0LLQtdC70LjRh9C10L3QuNC1INC90LUg0LzQvtC20LUg0LTQsCDQsdGK0LTQtSDRgdGK0LfQtNCw0LTQtdC9IgogCiBtc2dpZCAiU3VicGljdHVyZSBmb3JtYXQgd2FzIG5vdCBjb25maWd1cmVkIGJlZm9yZSBkYXRhIGZsb3ciCi1tc2dzdHIgIiIKK21zZ3N0ciAi0KTQvtGA0LzQsNGC0YrRgiDQvdCwINC/0L7QtNC60LDRgNGC0LjQvdCw0YLQsCDQvdC1INC1INCx0LjQuyDRg9GC0L7Rh9C90LXQvSDQv9GA0LXQtNC4INC90LDRh9Cw0LvQvtGC0L4g0L3QsCDQv9C+0YLQvtC60LAiCiAKIG1zZ2lkICJGYWlsZWQgdG8gZ2V0IGZyYWdtZW50IFVSTC4iCi1tc2dzdHIgIiIKK21zZ3N0ciAi0J3QtdGD0YHQv9C10YjQvdC+INC/0L7Qu9GD0YfQsNCy0LDQvdC1INC90LAg0LDQtNGA0LXRgdCwINC90LAg0YTRgNCw0LPQvNC10L3RgtCwLiIKIAogbXNnaWQgIkludGVybmFsIGRhdGEgc3RyZWFtIGVycm9yLiIKIG1zZ3N0ciAi0JLRitGC0YDQtdGI0L3QsCDQs9GA0LXRiNC60LAg0LIg0L/QvtGC0L7QutCwINC90LAg0LTQsNC90L3QuC4iCiAKIG1zZ2lkICJDb3VsZG4ndCBkb3dubG9hZCBmcmFnbWVudHMiCi1tc2dzdHIgIiIKK21zZ3N0ciAi0KTRgNCw0LPQvNC10L3RgtC40YLQtSDQvdC1INC80L7Qs9Cw0YIg0LTQsCDQsdGK0LTQsNGCINGB0LLQsNC70LXQvdC4IgogCiBtc2dpZCAiTm8gZmlsZSBuYW1lIHNwZWNpZmllZCBmb3Igd3JpdGluZy4iCiBtc2dzdHIgItCd0LUg0LUg0YPQutCw0LfQsNC90L4g0LjQvNC1INC90LAg0YTQsNC50Lsg0LfQsCDQt9Cw0L/QuNGBLiIKQEAgLTE4OCw2ICs5OCw4IEBACiAjLCBjLWZvcm1hdAogbXNnaWQgIkdpdmVuIGZpbGUgbmFtZSBcIiVzXCIgY2FuJ3QgYmUgY29udmVydGVkIHRvIGxvY2FsIGZpbGUgbmFtZSBlbmNvZGluZy4iCiBtc2dzdHIgIiIKKyLQl9Cw0LTQsNC00LXQvdC+0YLQviDQuNC80LUg0L3QsCDRhNCw0LnQuyDigJ4lc+KAnCDQvdC1INC80L7QttC1INC00LAg0LHRitC00LUg0L/RgNC10YXQstGK0YDQu9C10L3QviDQsiDQu9C+0LrQsNC70L3QvtGC0L4g0LrQvtC00LjRgNCw0L3QtSAiCisi0L3QsCDQuNC80LXQvdCwINC90LAg0YTQsNC50LvQvtCy0LUuIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciB3cml0aW5nLiIKQEAgLTIwNSw5ICsxMTcsOSBAQAogbXNnaWQgIkNvdWxkIG5vdCBnZXQgc2V0dGluZ3MgZnJvbSBmcm9udGVuZCBkZXZpY2UgXCIlc1wiLiIKIG1zZ3N0ciAi0J3QsNGB0YLRgNC+0LnQutC40YLQtSDQvdCwINGD0YHRgtGA0L7QudGB0YLQstC+0YLQviDigJ4lc+KAnCDQvdC1INC80L7Qs9Cw0YIg0LTQsCDQsdGK0LTQsNGCINC/0L7Qu9GD0YfQtdC90LguIgogCi0jLCBmdXp6eSwgYy1mb3JtYXQKKyMsIGMtZm9ybWF0CiBtc2dpZCAiQ2Fubm90IGVudW1lcmF0ZSBkZWxpdmVyeSBzeXN0ZW1zIGZyb20gZnJvbnRlbmQgZGV2aWNlIFwiJXNcIi4iCi1tc2dzdHIgItCd0LDRgdGC0YDQvtC50LrQuNGC0LUg0L3QsCDRg9GB0YLRgNC+0LnRgdGC0LLQvtGC0L4g4oCeJXPigJwg0L3QtSDQvNC+0LPQsNGCINC00LAg0LHRitC00LDRgiDQv9C+0LvRg9GH0LXQvdC4LiIKK21zZ3N0ciAi0KHQuNGB0YLQtdC80LjRgtC1INC30LAg0LTQvtGB0YLQsNCy0LrQsCDQvtGCINGD0YHRgtGA0L7QudGB0YLQstC+0YLQviDigJ4lc+KAnCDQvdC1INC80L7Qs9Cw0YIg0LTQsCDQsdGK0LTQsNGCINC40LfQsdGA0L7QtdC90LguIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nLiIKQEAgLTIxNSwxNyArMTI3LDIwIEBACiAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIERWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZSIKIG1zZ3N0ciAiIgorItCk0LDQudC70YrRgiDRgSDQvdCw0YHRgtGA0L7QudC60LjRgtC1INC90LAg0YbQuNGE0YDQvtCy0L7RgtC+INCy0LjQtNC10L7RgNGK0LfQv9GA0YrRgdC60LLQsNC90LUgKERWQikg0L3QtSDQvNC+0LbQtSDQtNCwINCx0YrQtNC1ICIKKyLQvtGC0LrRgNC40YIiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgbG9hZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGU6ICVzIgogbXNnc3RyICIiCisi0KTQsNC50LvRitGCINGBINC90LDRgdGC0YDQvtC50LrQuNGC0LUg0L3QsCDRhtC40YTRgNC+0LLQvtGC0L4g0LLQuNC00LXQvtGA0YrQt9C/0YDRitGB0LrQstCw0L3QtSAoRFZCKSDigJ4lc+KAnCDQvdC1INC80L7QttC1INC00LAgIgorItCx0YrQtNC1INC/0YDQvtGH0LXRgtC10L0iCiAKIG1zZ2lkICJEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUgZG9lc24ndCBjb250YWluIGFueSBjaGFubmVscyIKIG1zZ3N0ciAiIgorItCk0LDQudC70YrRgiDRgSDQvdCw0YHRgtGA0L7QudC60LjRgtC1INC90LAg0YbQuNGE0YDQvtCy0L7RgtC+INCy0LjQtNC10L7RgNGK0LfQv9GA0YrRgdC60LLQsNC90LUgKERWQikg0L3QtSDRgdGK0LTRitGA0LbQsCDQvdC40LrQsNC60LLQuCAiCisi0LrQsNC90LDQu9C4IgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCi1tc2dzdHIgIiIKLQotI34gbXNnaWQgIkNvdWxkIG5vdCB3cml0ZSB0byBmaWxlIFwiJXNcIi4iCi0jfiBtc2dzdHIgItCd0LUg0LzQvtC20LUg0LTQsCDRgdC1INC30LDQv9C40YHQstCwINCy0YrQsiDRhNCw0LnQu9CwIOKAniVz4oCcLiIKK21zZ3N0ciAi0JvQuNC/0YHQstCw0YIg0LTQsNC90L3QuCDQt9CwINC60LDQvdCw0LvQsCDQt9CwINGG0LjRhNGA0L7QstC+INCy0LjQtNC10L7RgNGK0LfQv9GA0YrRgdC60LLQsNC90LUgKERWQikg4oCeJXPigJwiCmRpZmYgLS1naXQgYS9wby9jYS5nbW8gYi9wby9jYS5nbW8KaW5kZXggZTA5NDU4MC4uOThiZDM5NSAxMDA2NDQKLS0tIGEvcG8vY2EuZ21vCisrKyBiL3BvL2NhLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9jYS5wbyBiL3BvL2NhLnBvCmluZGV4IDA4ZGUyNzEuLjQ3YmZiMWIgMTAwNjQ0Ci0tLSBhL3BvL2NhLnBvCisrKyBiL3BvL2NhLnBvCkBAIC05LDcgKzksNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4yMS4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDEyLTAxLTAxIDE0OjE5KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEdpbCBGb3JjYWRhIDxnZm9yY2FkYUBnbm9tZS5vcmc+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQ2F0YWxhbiA8Y2FAZG9kZHMubmV0PlxuIgpAQCAtMjIsOTUgKzIyLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2NzLmdtbyBiL3BvL2NzLmdtbwppbmRleCAwYWE3MjFmLi5kZDMzNzQzIDEwMDY0NAotLS0gYS9wby9jcy5nbW8KKysrIGIvcG8vY3MuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2NzLnBvIGIvcG8vY3MucG8KaW5kZXggZmU4YzcyMi4uYjAyZmQxNCAxMDA2NDQKLS0tIGEvcG8vY3MucG8KKysrIGIvcG8vY3MucG8KQEAgLTExLDcgKzExLDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEwLTE1IDIwOjU0KzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1hcmVrIMSMZXJub2Nrw70gPG1hcmVrQG1hbmV0LmN6PlxuIgogIkxhbmd1YWdlLVRlYW06IEN6ZWNoIDx0cmFuc2xhdGlvbi10ZWFtLWNzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTI1LDExMyArMjUsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJmb3Jtw6F0IG5lYnlsIHZ5amVkbsOhbiBwxZllZCB6w61za8OhbsOtbSBmdW5rY2UiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJ2w71jaG96w60genZ1a292w70gY8OtbCBHU3RyZWFtZXIgcHJvIHp2dWtvdsOpIHVkw6Fsb3N0aSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciB1bcOtIHDFmWVocsOhdmF0IHp2dWsgcG9tb2PDrSBtbm9oYSB2w71zdHVwbsOtY2ggcHJ2a8WvLiBNb8W+bsOpIHZvbGJ5IGpzb3UgIgotIm9zc3NpbmssIHB1bHNlc2luayBhIGFsc2FzaW5rLiBadnVrb3bDvW0gY8OtbGVtIG3Fr8W+ZSBiw710IG5hbcOtc3RvIGplZG5vaG8gIgotImVsZW1lbnR1IGkgxI3DoXN0ZcSNbsOhIHJvdXJhLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJwb3BpcyB2w71jaG96w61obyB6dnVrb3bDqWhvIGPDrWxlIHBybyB6dnVrb3bDqSB1ZMOhbG9zdGkgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IGVsZW1lbnQgc2xvdcW+w61jw60gamFrbyBjw61sIHBybyB6dnVrLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJ2w71jaG96w60genZ1a292w70gY8OtbCBHU3RyZWFtZXIgcHJvIGhsYXNvdsOpIGtvbmZlcmVuY2UgYSB2aWRlb2tvbmZlcmVuY2UiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0icG9waXMgdsO9Y2hvesOtaG8genZ1a292w6lobyBjw61sZSBHU3RyZWFtZXIgcHJvIGhsYXNvdsOpIGtvbmZlcmVuY2UgYSAiCi0idmlkZW9rb25mZXJlbmNlIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJ2w71jaG96w60genZ1a292w70gY8OtbCBHU3RyZWFtZXIgcHJvIGh1ZGJ1IGEgZmlsbXkiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJwb3BpcyB2w71jaG96w61obyB6dnVrb3bDqWhvIGPDrWxlIEdTdHJlYW1lciBwcm8gaHVkYnUgYSBmaWxteSIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAidsO9Y2hvesOtIGPDrWwgdmlkZWEgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgdW3DrSBwxZllaHLDoXZhdCB2aWRlbyBwb21vY8OtIG1ub2hhIHbDvXN0dXBuw61jaCBwcnZrxa8uIE1vxb5uw6kgdm9sYnkgIgotImpzb3UgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhIGFhc2luay4gQ8OtbGVtIHZpZGVhIG3Fr8W+ZSBiw710ICIKLSJuYW3DrXN0byBwcsOhdsSbIGplZG5vaG8gZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAicG9waXMgdsO9Y2hvesOtaG8gY8OtbGUgdmlkZWEgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IGVsZW1lbnQgc2xvdcW+w61jw60gamFrbyBjw61sIHBybyB2aWRlby4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAidsO9Y2hvesOtIHpkcm9qIHp2dWt1IEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgdW3DrSBuYWhyw6F2YXQgenZ1ayBwb21vY8OtIG1ub2hhIHZzdHVwbsOtY2ggcHJ2a8WvLiBNb8W+bsOpIHZvbGJ5IGpzb3UgIgotIm9zc3NyYywgcHVsc2VzcmMgYSBhbHNhc3JjLiBadnVrb3bDvW0gemRyb2plbSBtxa/FvmUgYsO9dCBuYW3DrXN0byBwcsOhdsSbIGplZG5vaG8gIgotImVsZW1lbnR1IGkgxI3DoXN0ZcSNbsOhIHJvdXJhLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAicG9waXMgcHJvIHbDvWNob3rDrSB6ZHJvaiB6dnVrdSBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJQb3Bpc3VqZSB2eWJyYW7DvSBlbGVtZW50IHNsb3XFvsOtY8OtIGpha28gemRyb2ogenZ1a3UuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgInbDvWNob3rDrSB6ZHJvaiB2aWRlYSBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIHVtw60gbmFocsOhdmF0IHZpZGVvIHBvbW9jw60gbW5vaGEgdnN0dXBuw61jaCBwcnZrxa8uIE1vxb5uw6kgdm9sYnkganNvdSAiCi0idjRsc3JjLCB2NGwyc3JjIGEgdmlkZW90ZXN0c3JjLiBaZHJvamVtIHZpZGVhIG3Fr8W+ZSBiw710IG5hbcOtc3RvIHByw6F2xJsgamVkbm9obyAiCi0iZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJwb3BpcyBwcm8gdsO9Y2hvesOtIHpkcm9qIHZpZGVhIEdTdHJlYW1lciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IGVsZW1lbnQgc2xvdcW+w61jw60gamFrbyB6ZHJvaiB2aWRlYS4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJ2w71jaG96w60gdml6dWFsaXphY2UgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgdW3DrSBkbyByb3VyeSB2bG/Fvml0IHZpenVhbGl6YcSNbsOtIHrDoXN1dm7DvSBtb2R1bCwgYWJ5IHByb3bDoWTEm2wgem3Em255ICIKLSJ6dnVrb3bDvWNoIHByb3Vkxa8gdmUgc27DrW1jw61jaCB2aWRlYS4gTW/Fvm7DqSB2b2xieSBqc291IGdvb20sIGdvb20yazEgYSAiCi0ic3luYWVzdGhlc2lhLiBWaXp1YWxpemHEjW7DrW0gesOhc3V2bsO9bSBtb2R1bGVtIG3Fr8W+ZSBiw710IG5hbcOtc3RvIHByw6F2xJsgamVkbm9obyAiCi0iZWxlbWVudHUgaSDEjcOhc3RlxI1uw6Egcm91cmEuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgInBvcGlzIHBybyB2w71jaG96w60gdml6dWFsaXphY2kgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICJQb3Bpc3VqZSB2eWJyYW7DvSB2aXp1YWxpemHEjW7DrSBlbGVtZW50LiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiT3BlbkNWIHNlbGhhbG8gcMWZaSBuYcSNw610w6Fuw60gb2JyYXp1IMWhYWJsb255IgogCkBAIC0yNTEsMyArMTQ0LDExMSBAQAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICJOZWx6ZSBuYWrDrXQgcG9kcm9ibm9zdGkga2Uga2Fuw6FsdSBEVkIgJXMiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJ2w71jaG96w60genZ1a292w70gY8OtbCBHU3RyZWFtZXIgcHJvIHp2dWtvdsOpIHVkw6Fsb3N0aSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciB1bcOtIHDFmWVocsOhdmF0IHp2dWsgcG9tb2PDrSBtbm9oYSB2w71zdHVwbsOtY2ggcHJ2a8WvLiBNb8W+bsOpIHZvbGJ5ICIKKyN+ICJqc291IG9zc3NpbmssIHB1bHNlc2luayBhIGFsc2FzaW5rLiBadnVrb3bDvW0gY8OtbGVtIG3Fr8W+ZSBiw710IG5hbcOtc3RvICIKKyN+ICJqZWRub2hvIGVsZW1lbnR1IGkgxI3DoXN0ZcSNbsOhIHJvdXJhLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJwb3BpcyB2w71jaG96w61obyB6dnVrb3bDqWhvIGPDrWxlIHBybyB6dnVrb3bDqSB1ZMOhbG9zdGkgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIlBvcGlzdWplIHZ5YnJhbsO9IGVsZW1lbnQgc2xvdcW+w61jw60gamFrbyBjw61sIHBybyB6dnVrLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAidsO9Y2hvesOtIHp2dWtvdsO9IGPDrWwgR1N0cmVhbWVyIHBybyBobGFzb3bDqSBrb25mZXJlbmNlIGEgdmlkZW9rb25mZXJlbmNlIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gInBvcGlzIHbDvWNob3rDrWhvIHp2dWtvdsOpaG8gY8OtbGUgR1N0cmVhbWVyIHBybyBobGFzb3bDqSBrb25mZXJlbmNlIGEgIgorI34gInZpZGVva29uZmVyZW5jZSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAidsO9Y2hvesOtIHp2dWtvdsO9IGPDrWwgR1N0cmVhbWVyIHBybyBodWRidSBhIGZpbG15IgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAicG9waXMgdsO9Y2hvesOtaG8genZ1a292w6lobyBjw61sZSBHU3RyZWFtZXIgcHJvIGh1ZGJ1IGEgZmlsbXkiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgInbDvWNob3rDrSBjw61sIHZpZGVhIEdTdHJlYW1lciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHVtw60gcMWZZWhyw6F2YXQgdmlkZW8gcG9tb2PDrSBtbm9oYSB2w71zdHVwbsOtY2ggcHJ2a8WvLiBNb8W+bsOpIHZvbGJ5ICIKKyN+ICJqc291IHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYSBhYXNpbmsuIEPDrWxlbSB2aWRlYSBtxa/FvmUgYsO9dCAiCisjfiAibmFtw61zdG8gcHLDoXbEmyBqZWRub2hvIGVsZW1lbnR1IGkgxI3DoXN0ZcSNbsOhIHJvdXJhLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgInBvcGlzIHbDvWNob3rDrWhvIGPDrWxlIHZpZGVhIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJQb3Bpc3VqZSB2eWJyYW7DvSBlbGVtZW50IHNsb3XFvsOtY8OtIGpha28gY8OtbCBwcm8gdmlkZW8uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgInbDvWNob3rDrSB6ZHJvaiB6dnVrdSBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHVtw60gbmFocsOhdmF0IHp2dWsgcG9tb2PDrSBtbm9oYSB2c3R1cG7DrWNoIHBydmvFry4gTW/Fvm7DqSB2b2xieSAiCisjfiAianNvdSBvc3NzcmMsIHB1bHNlc3JjIGEgYWxzYXNyYy4gWnZ1a292w71tIHpkcm9qZW0gbcWvxb5lIGLDvXQgbmFtw61zdG8gcHLDoXbEmyAiCisjfiAiamVkbm9obyBlbGVtZW50dSBpIMSNw6FzdGXEjW7DoSByb3VyYS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgInBvcGlzIHBybyB2w71jaG96w60gemRyb2ogenZ1a3UgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiUG9waXN1amUgdnlicmFuw70gZWxlbWVudCBzbG91xb7DrWPDrSBqYWtvIHpkcm9qIHp2dWt1LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJ2w71jaG96w60gemRyb2ogdmlkZWEgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciB1bcOtIG5haHLDoXZhdCB2aWRlbyBwb21vY8OtIG1ub2hhIHZzdHVwbsOtY2ggcHJ2a8WvLiBNb8W+bsOpIHZvbGJ5ICIKKyN+ICJqc291IHY0bHNyYywgdjRsMnNyYyBhIHZpZGVvdGVzdHNyYy4gWmRyb2plbSB2aWRlYSBtxa/FvmUgYsO9dCBuYW3DrXN0byBwcsOhdsSbICIKKyN+ICJqZWRub2hvIGVsZW1lbnR1IGkgxI3DoXN0ZcSNbsOhIHJvdXJhLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAicG9waXMgcHJvIHbDvWNob3rDrSB6ZHJvaiB2aWRlYSBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJQb3Bpc3VqZSB2eWJyYW7DvSBlbGVtZW50IHNsb3XFvsOtY8OtIGpha28gemRyb2ogdmlkZWEuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAidsO9Y2hvesOtIHZpenVhbGl6YWNlIEdTdHJlYW1lciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHVtw60gZG8gcm91cnkgdmxvxb5pdCB2aXp1YWxpemHEjW7DrSB6w6FzdXZuw70gbW9kdWwsIGFieSBwcm92w6FkxJtsICIKKyN+ICJ6bcSbbnkgenZ1a292w71jaCBwcm91ZMWvIHZlIHNuw61tY8OtY2ggdmlkZWEuIE1vxb5uw6kgdm9sYnkganNvdSBnb29tLCBnb29tMmsxICIKKyN+ICJhIHN5bmFlc3RoZXNpYS4gVml6dWFsaXphxI1uw61tIHrDoXN1dm7DvW0gbW9kdWxlbSBtxa/FvmUgYsO9dCBuYW3DrXN0byBwcsOhdsSbICIKKyN+ICJqZWRub2hvIGVsZW1lbnR1IGkgxI3DoXN0ZcSNbsOhIHJvdXJhLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJwb3BpcyBwcm8gdsO9Y2hvesOtIHZpenVhbGl6YWNpIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiUG9waXN1amUgdnlicmFuw70gdml6dWFsaXphxI1uw60gZWxlbWVudC4iCmRpZmYgLS1naXQgYS9wby9kYS5nbW8gYi9wby9kYS5nbW8KaW5kZXggMmYyMDVhZS4uNjU0ZDZmMyAxMDA2NDQKLS0tIGEvcG8vZGEuZ21vCisrKyBiL3BvL2RhLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9kYS5wbyBiL3BvL2RhLnBvCmluZGV4IDU2ODM5MzkuLjA1NjFiOTkgMTAwNjQ0Ci0tLSBhL3BvL2RhLnBvCisrKyBiL3BvL2RhLnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQtMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTItMDUgMTE6MjgrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogSm9lIEhhbnNlbiA8am9lZGFsdG9uMkB5YWhvby5kaz5cbiIKICJMYW5ndWFnZS1UZWFtOiBEYW5pc2ggPGRhbnNrQGRhbnNrLWdydXBwZW4uZGs+XG4iCkBAIC0yMCwxMTEgKzIwLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiZm9ybWF0IGJsZXYgaWtrZSBmb3JoYW5kbGV0IGbDuHIgaGVudCBmdW5rdGlvbiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgZm9yIEdTdHJlYW1lcnMgbHlkaMOmbmRlbHNlciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gYWZzcGlsbGUgbHlkIHZpYSBldCBhbnRhbCB1ZGdhbmdzZWxlbWVudGVyLiBOb2dsZSBtdWxpZ2UgdmFsZyAiCi0iZXIgb3Nzc2luaywgcHVsc2VzaW5rIG9nIGFsc2FzaW5rLiBMeWR1ZGdhbmdlbiBrYW4gdsOmcmUgZW4gZGVsdmlzIGRhdGFrYW5hbCAiCi0iaSBzdGVkZXQgZm9yIGJhcmUgZXQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgYWYgc3RhbmRhcmRseWRrYW5hbCBmb3IgR1N0cmVhbWVycyBseWRow6ZuZGVsc2VyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ2UgbHlka2FuYWxlbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJzdGFuZGFyZGx5ZGthbmFsIHRpbCBHU3RyZWFtZXJzIGx5ZC92aWRlby1rb25mZXJlbmNlIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkbHlka2FuYWwgdGlsIEdTdHJlYW1lcnMgbHlkL3ZpZGVvLWtvbmZlcmVuY2UiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgdGlsIEdTdHJlYW1lcnMgbXVzaWsgb2cgZmlsbSIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZGx5ZGthbmFsIHRpbCBHU3RyZWFtZXJzIG11c2lrIG9nIGZpbG0iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgZm9yIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBhZnNwaWxsZSB2aWRlbyB2aWEgZXQgYW50YWwgdWRnYW5nc2VsZW1lbnRlci4gTm9nbGUgbXVsaWdlICIKLSJ2YWxnIGVyIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3Npbmsgb2cgYWFzaW5rLiBWaWRlb3VkZ2FuZ2VuIGthbiAiCi0idsOmcmUgZW4gZGVsdmlzIGRhdGFrYW5hbCBpIHN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZHZpZGVva2FuYWwgZm9yIEdTdHJlYW1lciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGVuIHZhbGd0ZSB2aWRlb2thbmFsc2VsZW1lbnQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgInN0YW5kYXJkbHlkb3B0YWdlbHNlIGZvciBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBvcHRhZ2UgbHlkIHZpYSBldCBhbnRhbCBpbmRnYW5nc2VsZW1lbnRlci4gTm9nbGUgbXVsaWdlIHZhbGcgIgotImVyIG9zc3NyYywgcHVsc2VzcmMgb2cgYWxzYXNyYy4gTHlka2lsZGVuIGthbiB2w6ZyZSBlbiBkZWx2aXMgZGF0YWthbmFsIGkgIgotInN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkbHlkb3B0YWdlbHNlbiB0aWwgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgbHlkb3B0YWdlbHNlc2VsZW1lbnQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgInN0YW5kYXJkdmlkZW9vcHRhZ2VyIGZvciBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBvcHRhZ2UgdmlkZW8gdmlhIGV0IGFudGFsIGluZGdhbmdzZWxlbWVudGVyLiBOb2dsZSBtdWxpZ2UgdmFsZyAiCi0iZXIgdjRsc3JjLCB2NGwyc3JjIG9nIHZpZGVvdGVzdHNyYy4gVmlkZW9raWxkZW4ga2FuIHbDpnJlIGVuIGRlbHZpcyBkYXRha2FuYWwgIgotImkgc3RlZGV0IGZvciBiYXJlIGV0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmR2aWRlb29wdGFnZXJlbiB0aWwgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgdmlkZW9vcHRhZ2VyZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJTdGFuZGFyZHZpc3VhbGlzZXJpbmcgZm9yIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBwbGFjZXJlIHZpc3VhbGlzZXJpbmdzdWR2aWRlbHNlc21vZHVsZXIgaSBlbiBkYXRha2FuYWwgZm9yIGF0ICIKLSJ0cmFuc2Zvcm1lcmUgbHlkc3Ryw7htbWUgaSB2aWRlb2JpbGxlZGVyLiBOb2dsZSBtdWxpZ2UgdmFsZyBlciBnb29tLCBnb29tMmsxICIKLSJvZyBzeW5hZXN0aGVzaWEuIFZpc3VhbGlzZXJpbmdzdWR2aWRlbHNlc21vZHVsZXJuZSBrYW4gdsOmcmUgZW4gZGVsdmlzICIKLSJkYXRha2FuYWwgaSBzdGVkZXQgZm9yIGJhcmUgZXQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkdmlzdWFsaXNlcmluZyB0aWwgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSB2aXN1YWxpc2VyaW5nc2VsZW1lbnQuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1YgbWlzbHlra2VkZXMgaSBhdCBpbmRsw6ZzZSBza2FiZWxvbmFmdHJ5ayIKIApAQCAtMjQyLDYgKzEzNywxMTIgQEAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICJLdW5uZSBpa2tlIGZpbmRlIGRldGFsamVyIGZvciBEVkIta2FuYWxlbiAlcyIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgInN0YW5kYXJkbHlka2FuYWwgZm9yIEdTdHJlYW1lcnMgbHlkaMOmbmRlbHNlciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gYWZzcGlsbGUgbHlkIHZpYSBldCBhbnRhbCB1ZGdhbmdzZWxlbWVudGVyLiBOb2dsZSBtdWxpZ2UgIgorI34gInZhbGcgZXIgb3Nzc2luaywgcHVsc2VzaW5rIG9nIGFsc2FzaW5rLiBMeWR1ZGdhbmdlbiBrYW4gdsOmcmUgZW4gZGVsdmlzICIKKyN+ICJkYXRha2FuYWwgaSBzdGVkZXQgZm9yIGJhcmUgZXQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgYWYgc3RhbmRhcmRseWRrYW5hbCBmb3IgR1N0cmVhbWVycyBseWRow6ZuZGVsc2VyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ2UgbHlka2FuYWxlbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICJzdGFuZGFyZGx5ZGthbmFsIHRpbCBHU3RyZWFtZXJzIGx5ZC92aWRlby1rb25mZXJlbmNlIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZGx5ZGthbmFsIHRpbCBHU3RyZWFtZXJzIGx5ZC92aWRlby1rb25mZXJlbmNlIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJzdGFuZGFyZGx5ZGthbmFsIHRpbCBHU3RyZWFtZXJzIG11c2lrIG9nIGZpbG0iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmRseWRrYW5hbCB0aWwgR1N0cmVhbWVycyBtdXNpayBvZyBmaWxtIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJzdGFuZGFyZGx5ZGthbmFsIGZvciBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gYWZzcGlsbGUgdmlkZW8gdmlhIGV0IGFudGFsIHVkZ2FuZ3NlbGVtZW50ZXIuIE5vZ2xlIG11bGlnZSAiCisjfiAidmFsZyBlciB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIG9nIGFhc2luay4gVmlkZW91ZGdhbmdlbiAiCisjfiAia2FuIHbDpnJlIGVuIGRlbHZpcyBkYXRha2FuYWwgaSBzdGVkZXQgZm9yIGJhcmUgZXQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmR2aWRlb2thbmFsIGZvciBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRlbiB2YWxndGUgdmlkZW9rYW5hbHNlbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJzdGFuZGFyZGx5ZG9wdGFnZWxzZSBmb3IgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gb3B0YWdlIGx5ZCB2aWEgZXQgYW50YWwgaW5kZ2FuZ3NlbGVtZW50ZXIuIE5vZ2xlIG11bGlnZSAiCisjfiAidmFsZyBlciBvc3NzcmMsIHB1bHNlc3JjIG9nIGFsc2FzcmMuIEx5ZGtpbGRlbiBrYW4gdsOmcmUgZW4gZGVsdmlzICIKKyN+ICJkYXRha2FuYWwgaSBzdGVkZXQgZm9yIGJhcmUgZXQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZGx5ZG9wdGFnZWxzZW4gdGlsIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ3RlIGx5ZG9wdGFnZWxzZXNlbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJzdGFuZGFyZHZpZGVvb3B0YWdlciBmb3IgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gb3B0YWdlIHZpZGVvIHZpYSBldCBhbnRhbCBpbmRnYW5nc2VsZW1lbnRlci4gTm9nbGUgbXVsaWdlICIKKyN+ICJ2YWxnIGVyIHY0bHNyYywgdjRsMnNyYyBvZyB2aWRlb3Rlc3RzcmMuIFZpZGVva2lsZGVuIGthbiB2w6ZyZSBlbiBkZWx2aXMgIgorI34gImRhdGFrYW5hbCBpIHN0ZWRldCBmb3IgYmFyZSBldCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkdmlkZW9vcHRhZ2VyZW4gdGlsIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ3RlIHZpZGVvb3B0YWdlcmVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiU3RhbmRhcmR2aXN1YWxpc2VyaW5nIGZvciBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gcGxhY2VyZSB2aXN1YWxpc2VyaW5nc3VkdmlkZWxzZXNtb2R1bGVyIGkgZW4gZGF0YWthbmFsIGZvciAiCisjfiAiYXQgdHJhbnNmb3JtZXJlIGx5ZHN0csO4bW1lIGkgdmlkZW9iaWxsZWRlci4gTm9nbGUgbXVsaWdlIHZhbGcgZXIgZ29vbSwgIgorI34gImdvb20yazEgb2cgc3luYWVzdGhlc2lhLiBWaXN1YWxpc2VyaW5nc3VkdmlkZWxzZXNtb2R1bGVybmUga2FuIHbDpnJlIGVuICIKKyN+ICJkZWx2aXMgZGF0YWthbmFsIGkgc3RlZGV0IGZvciBiYXJlIGV0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZHZpc3VhbGlzZXJpbmcgdGlsIEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgdmlzdWFsaXNlcmluZ3NlbGVtZW50LiIKKwogI34gbXNnaWQgIkNvdWxkbid0IGdldCB0aGUgTWFuaWZlc3QncyBVUkkiCiAjfiBtc2dzdHIgIkt1bm5lIGlra2UgaW5kaGVudGUgTWFuaWZlc3RlbnMgYWRyZXNzZSIKIApkaWZmIC0tZ2l0IGEvcG8vZGUuZ21vIGIvcG8vZGUuZ21vCmluZGV4IGNkZWVkZWUuLmFmMzNkODggMTAwNjQ0Ci0tLSBhL3BvL2RlLmdtbworKysgYi9wby9kZS5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vZGUucG8gYi9wby9kZS5wbwppbmRleCBhMTBjNzJiLi40Yzg1YTE3IDEwMDY0NAotLS0gYS9wby9kZS5wbworKysgYi9wby9kZS5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEwLTIxIDAwOjE1KzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IENocmlzdGlhbiBLaXJiYWNoIDxjaHJpc3RpYW4ua2lyYmFjaEBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogR2VybWFuIDx0cmFuc2xhdGlvbi10ZWFtLWRlQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIyLDExOCArMjIsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJkYXMgRm9ybWF0IHd1cmRlIHZvciBkZXIgZ2V0LUZ1bmt0aW9uIG5pY2h0IGF1c2dlaGFuZGVsdCIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZSBHU3RyZWFtZXIgVG9uZXJlaWduaXMtQXVkaW96aWVsIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbm4gVG9uIG1pdCBlaW5lciBiZWxpZWJpZ2VuIEFuemFobCBhbiBBdXNnYWJlZWxlbWVudGVuICIKLSJ3aWVkZXJnZWJlbi4gRWluaWdlIFdhaGxtw7ZnbGljaGtlaXRlbiBzaW5kIMK7b3Nzc2lua8KrLCDCu3B1bHNlc2lua8KrIHVuZCAiCi0iwrthbHNhc2lua8KrLiBEYXMgQXVkaW96aWVsIGthbm4gZWluZSB0ZWlsd2Vpc2UgV2VpdGVybGVpdHVuZyBhbnN0ZWxsZSBudXIgIgotImVpbmVzIGVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXIgVG9uZXJlaWduaXMtQXVkaW96aWVsIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2NocmVpYnQgZGFzIGdld8OkaGx0ZSBBdWRpb3ppZWwtRWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlcyBHU3RyZWFtZXItQXVkaW96aWVsIGbDvHIgVG9uLSB1bmQgVmlkZW9rb25mZXJlbnplbiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLSJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLUF1ZGlvemllbCBmw7xyIFRvbi0gdW5kICIKLSJWaWRlb2tvbmZlcmVuemVuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGVzIEdTdHJlYW1lci1BdWRpb3ppZWwgZsO8ciBNdXNpayB1bmQgRmlsbWUiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0iQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lci1BdWRpb3ppZWwgZsO8ciBNdXNpayB1bmQgRmlsbWUiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZXMgR1N0cmVhbWVyLVZpZGVvemllbCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbm4gVmlkZW8gbWl0IGVpbmVyIGJlbGllYmlnZW4gQW56YWhsIGFuIEF1c2dhYmVlbGVtZW50ZW4gIgotIndpZWRlcmdlYmVuLiBFaW5pZ2UgV2FobG3DtmdsaWNoa2VpdGVuIHNpbmQgwrt4dmltYWdlc2lua8KrLCDCu3hpbWFnZXNpbmvCqywgIgotIsK7c2RsdmlkZW9zaW5rwqsgdW5kIMK7YWFzaW5rwqsuIERhcyBWaWRlb3ppZWwga2FubiBlaW5lIGFudGVpbGlnZSBXZWl0ZXJsZWl0dW5nICIKLSJhbnN0ZWxsZSBlaW5lcyBlaW56aWdlbiBFbGVtZW50cyBzZWluLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItVmlkZW96aWVsIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2NocmVpYnQgZGFzIGdld8OkaGx0ZSBWaWRlb3ppZWwtRWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlcyBHU3RyZWFtZXItYXVkaW9zcmMiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbm4gVG9uIG1pdCBlaW5lciBiZWxpZWJpZ2VuIEFuemFobCBhbiBFaW5nYWJlZWxlbWVudGVuICIKLSJhdWZ6ZWljaG5lbi4gRWluaWdlIFdhaGxtw7ZnbGljaGtlaXRlbiBzaW5kIMK7b3Nzc3JjwqssIMK7cHVsc2VzcmPCqyB1bmQgIgotIsK7YWxzYXNyY8KrLiBEaWUgQXVkaW9xdWVsbGUga2FubiBlaW5lIGFudGVpbGlnZSBXZWl0ZXJsZWl0dW5nIGFuc3RlbGxlIGVpbmVzICIKLSJlaW56aWdlbiBFbGVtZW50cyBzZWluLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lci1hdWRpb3NyYyIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2NocmVpYnQgZGFzIGdld8OkaGx0ZSBhdWRpb3NyYy1FbGVtZW50LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGVzIEdTdHJlYW1lci12aWRlb3NyYyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FubiBWaWRlbyBtaXQgZWluZXIgYmVsaWViaWdlbiBBbnphaGwgYW4gRWluZ2FiZWVsZW1lbnRlbiAiCi0iYXVmemVpY2huZW4uIEVpbmlnZSBXYWhsbcO2Z2xpY2hrZWl0ZW4gc2luZCDCu3Y0bHNyY8KrLCDCu3Y0bDJzcmPCqyB1bmQgIgotIsK7dmlkZW90ZXN0c3JjwqsuIERpZSBWaWRlb3F1ZWxsZSBrYW5uIGVpbmUgYW50ZWlsaWdlIFdlaXRlcmxlaXR1bmcgYW5zdGVsbGUgIgotImVpbmVzIGVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLXZpZGVvc3JjIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIHZpZGVvc3JjLUVsZW1lbnQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlIEdTdHJlYW1lci1WaXN1YWxpc2llcnVuZyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbm4gVmlzdWFsaXNpZXJ1bmdzLVBsdWdpbnMgaW4gZWluZSBXZWl0ZXJsZWl0dW5nIGludGVncmllcmVuLCB1bSAiCi0iQXVkaW9zdHLDtm1lIGluIFZpZGVvYmlsZGVyIHVtenV3YW5kZWxuLiBFaW5pZ2UgV2FobG3DtmdsaWNoa2VpdGVuIHNpbmQgIgotIsK7Z29vbcKrLCDCu2dvb20yazHCqyB1bmQgwrtzeW5hZXN0aGVzaWHCqy4gRGFzIFZpc3VhbGlzaWVydW5ncy1QbHVnaW4ga2FubiBlaW5lICIKLSJhbnRlaWxpZ2UgV2VpdGVybGVpdHVuZyBhbnN0ZWxsZSBlaW5lcyBlaW56aWdlbiBFbGVtZW50cyBzZWluLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJCZXNjaHJlaWJ1bmcgZGVyIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLVZpc3VhbGlzaWVydW5nIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICJCZXNjaHJlaWJ0IGRhcyBnZXfDpGhsdGUgVmlzdWFsaXNpZXJ1bmdzZWxlbWVudC4iCi0KICMgT3BlbkNWIGlzdCBlaW5lIGZyZWllIFByb2dyYW1tYmlibGlvdGhlayBtaXQgQWxnb3JpdGhtZW4gZsO8ciBkaWUgQmlsZHZlcmFyYmVpdHVuZyB1bmQgbWFzY2hpbmVsbGVzIFNlaGVuLgogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiT3BlbkNWIGtvbm50ZSBuaWNodCBkaWUgQmlsZHZvcmxhZ2UgbGFkZW4iCkBAIC0yNTksNiArMTQ3LDExOCBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIkRldGFpbHMgenUgRFZCLUthbmFsICVzIGtvbm50ZW4gbmljaHQgZ2VmdW5kZW4gd2VyZGVuIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlIEdTdHJlYW1lciBUb25lcmVpZ25pcy1BdWRpb3ppZWwiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FubiBUb24gbWl0IGVpbmVyIGJlbGllYmlnZW4gQW56YWhsIGFuIEF1c2dhYmVlbGVtZW50ZW4gIgorI34gIndpZWRlcmdlYmVuLiBFaW5pZ2UgV2FobG3DtmdsaWNoa2VpdGVuIHNpbmQgwrtvc3NzaW5rwqssIMK7cHVsc2VzaW5rwqsgdW5kICIKKyN+ICLCu2Fsc2FzaW5rwqsuIERhcyBBdWRpb3ppZWwga2FubiBlaW5lIHRlaWx3ZWlzZSBXZWl0ZXJsZWl0dW5nIGFuc3RlbGxlIG51ciAiCisjfiAiZWluZXMgZWluemlnZW4gRWxlbWVudHMgc2Vpbi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lciBUb25lcmVpZ25pcy1BdWRpb3ppZWwiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIEF1ZGlvemllbC1FbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGVzIEdTdHJlYW1lci1BdWRpb3ppZWwgZsO8ciBUb24tIHVuZCBWaWRlb2tvbmZlcmVuemVuIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItQXVkaW96aWVsIGbDvHIgVG9uLSB1bmQgIgorI34gIlZpZGVva29uZmVyZW56ZW4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZXMgR1N0cmVhbWVyLUF1ZGlvemllbCBmw7xyIE11c2lrIHVuZCBGaWxtZSIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgIiIKKyN+ICJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLUF1ZGlvemllbCBmw7xyIE11c2lrIHVuZCBGaWxtZSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiVm9yZWluZ2VzdGVsbHRlcyBHU3RyZWFtZXItVmlkZW96aWVsIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FubiBWaWRlbyBtaXQgZWluZXIgYmVsaWViaWdlbiBBbnphaGwgYW4gQXVzZ2FiZWVsZW1lbnRlbiAiCisjfiAid2llZGVyZ2ViZW4uIEVpbmlnZSBXYWhsbcO2Z2xpY2hrZWl0ZW4gc2luZCDCu3h2aW1hZ2VzaW5rwqssIMK7eGltYWdlc2lua8KrLCAiCisjfiAiwrtzZGx2aWRlb3NpbmvCqyB1bmQgwrthYXNpbmvCqy4gRGFzIFZpZGVvemllbCBrYW5uIGVpbmUgYW50ZWlsaWdlICIKKyN+ICJXZWl0ZXJsZWl0dW5nIGFuc3RlbGxlIGVpbmVzIGVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidW5nIGRlcyB2b3JlaW5nZXN0ZWxsdGVuIEdTdHJlYW1lci1WaWRlb3ppZWwiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIFZpZGVvemllbC1FbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGVzIEdTdHJlYW1lci1hdWRpb3NyYyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FubiBUb24gbWl0IGVpbmVyIGJlbGllYmlnZW4gQW56YWhsIGFuIEVpbmdhYmVlbGVtZW50ZW4gIgorI34gImF1ZnplaWNobmVuLiBFaW5pZ2UgV2FobG3DtmdsaWNoa2VpdGVuIHNpbmQgwrtvc3NzcmPCqywgwrtwdWxzZXNyY8KrIHVuZCAiCisjfiAiwrthbHNhc3JjwqsuIERpZSBBdWRpb3F1ZWxsZSBrYW5uIGVpbmUgYW50ZWlsaWdlIFdlaXRlcmxlaXR1bmcgYW5zdGVsbGUgIgorI34gImVpbmVzIGVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJCZXNjaHJlaWJ1bmcgZGVzIHZvcmVpbmdlc3RlbGx0ZW4gR1N0cmVhbWVyLWF1ZGlvc3JjIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyZWlidCBkYXMgZ2V3w6RobHRlIGF1ZGlvc3JjLUVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgIlZvcmVpbmdlc3RlbGx0ZXMgR1N0cmVhbWVyLXZpZGVvc3JjIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW5uIFZpZGVvIG1pdCBlaW5lciBiZWxpZWJpZ2VuIEFuemFobCBhbiBFaW5nYWJlZWxlbWVudGVuICIKKyN+ICJhdWZ6ZWljaG5lbi4gRWluaWdlIFdhaGxtw7ZnbGljaGtlaXRlbiBzaW5kIMK7djRsc3JjwqssIMK7djRsMnNyY8KrIHVuZCAiCisjfiAiwrt2aWRlb3Rlc3RzcmPCqy4gRGllIFZpZGVvcXVlbGxlIGthbm4gZWluZSBhbnRlaWxpZ2UgV2VpdGVybGVpdHVuZyAiCisjfiAiYW5zdGVsbGUgZWluZXMgZWluemlnZW4gRWxlbWVudHMgc2Vpbi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgIkJlc2NocmVpYnVuZyBkZXMgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItdmlkZW9zcmMiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNjaHJlaWJ0IGRhcyBnZXfDpGhsdGUgdmlkZW9zcmMtRWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJWb3JlaW5nZXN0ZWxsdGUgR1N0cmVhbWVyLVZpc3VhbGlzaWVydW5nIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FubiBWaXN1YWxpc2llcnVuZ3MtUGx1Z2lucyBpbiBlaW5lIFdlaXRlcmxlaXR1bmcgaW50ZWdyaWVyZW4sICIKKyN+ICJ1bSBBdWRpb3N0csO2bWUgaW4gVmlkZW9iaWxkZXIgdW16dXdhbmRlbG4uIEVpbmlnZSBXYWhsbcO2Z2xpY2hrZWl0ZW4gc2luZCAiCisjfiAiwrtnb29twqssIMK7Z29vbTJrMcKrIHVuZCDCu3N5bmFlc3RoZXNpYcKrLiBEYXMgVmlzdWFsaXNpZXJ1bmdzLVBsdWdpbiBrYW5uICIKKyN+ICJlaW5lIGFudGVpbGlnZSBXZWl0ZXJsZWl0dW5nIGFuc3RlbGxlIGVpbmVzIGVpbnppZ2VuIEVsZW1lbnRzIHNlaW4uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgIkJlc2NocmVpYnVuZyBkZXIgdm9yZWluZ2VzdGVsbHRlbiBHU3RyZWFtZXItVmlzdWFsaXNpZXJ1bmciCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2NocmVpYnQgZGFzIGdld8OkaGx0ZSBWaXN1YWxpc2llcnVuZ3NlbGVtZW50LiIKKwogI34gbXNnaWQgIkNvdWxkbid0IGdldCB0aGUgTWFuaWZlc3QncyBVUkkiCiAjfiBtc2dzdHIgIkFkcmVzc2UgZGVyIEZyYWNodGxpc3RlIGtvbm50ZSBuaWNodCBlcm1pdHRlbHQgd2VyZGVuIgogCmRpZmYgLS1naXQgYS9wby9lbC5nbW8gYi9wby9lbC5nbW8KaW5kZXggOTIyYmYzZC4uZDk3ZWFkNyAxMDA2NDQKLS0tIGEvcG8vZWwuZ21vCisrKyBiL3BvL2VsLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9lbC5wbyBiL3BvL2VsLnBvCmluZGV4IGMyMDMyMTcuLmUyZGE2NWYgMTAwNjQ0Ci0tLSBhL3BvL2VsLnBvCisrKyBiL3BvL2VsLnBvCkBAIC05LDcgKzksNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4yMS4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDEyLTA1LTA1IDE5OjE3KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFNhdnZhcyBSYWRldmljIDx2aWNlZGFyQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBHcmVlayA8dGVhbUBsaXN0cy5nbm9tZS5ncj5cbiIKQEAgLTIyLDk1ICsyMiw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9lbl9HQi5nbW8gYi9wby9lbl9HQi5nbW8KaW5kZXggMWNmMmU5MC4uZDNiYmU1ZSAxMDA2NDQKLS0tIGEvcG8vZW5fR0IuZ21vCisrKyBiL3BvL2VuX0dCLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9lbl9HQi5wbyBiL3BvL2VuX0dCLnBvCmluZGV4IDMyYzJiNWEuLmE1MzMzZTEgMTAwNjQ0Ci0tLSBhL3BvL2VuX0dCLnBvCisrKyBiL3BvL2VuX0dCLnBvCkBAIC02LDcgKzYsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucyAwLjguMVxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwNC0wNC0yNiAxMDo0MS0wNDAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBHYXJldGggT3dlbiA8Z293ZW43MkB5YWhvby5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogRW5nbGlzaCAoQnJpdGlzaCkgPGVuX2diQGxpLm9yZz5cbiIKQEAgLTE4LDk1ICsxOCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9lby5nbW8gYi9wby9lby5nbW8KaW5kZXggZGFlMjkyMS4uZDQwY2Y0YiAxMDA2NDQKLS0tIGEvcG8vZW8uZ21vCisrKyBiL3BvL2VvLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9lby5wbyBiL3BvL2VvLnBvCmluZGV4IDMwNWEwODQuLmZmM2M2NDkgMTAwNjQ0Ci0tLSBhL3BvL2VvLnBvCisrKyBiL3BvL2VvLnBvCkBAIC03LDcgKzcsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4yMS4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDExLTA2LTA0IDIyOjE4KzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEtyaXN0amFuIFNDSE1JRFQgPGtyaXN0amFuLnNjaG1pZHRAZ29vZ2xlbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogRXNwZXJhbnRvIDx0cmFuc2xhdGlvbi10ZWFtLWVvQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9lcy5nbW8gYi9wby9lcy5nbW8KaW5kZXggM2NkOTdiNy4uNzUzMjRhZSAxMDA2NDQKLS0tIGEvcG8vZXMuZ21vCisrKyBiL3BvL2VzLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9lcy5wbyBiL3BvL2VzLnBvCmluZGV4IDQ3N2FhZTEuLmM3MzNhZTQgMTAwNjQ0Ci0tLSBhL3BvL2VzLnBvCisrKyBiL3BvL2VzLnBvCkBAIC03LDcgKzcsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4yMS4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDExLTEwLTAyIDE1OjQ3KzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEpvcmdlIEdvbnrDoWxleiBHb256w6FsZXogPGFsb3JpZWxAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFNwYW5pc2ggPGVzQGxpLm9yZz5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9ldS5nbW8gYi9wby9ldS5nbW8KaW5kZXggZDI4YTdhMS4uMTc3NGRkYiAxMDA2NDQKLS0tIGEvcG8vZXUuZ21vCisrKyBiL3BvL2V1LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9ldS5wbyBiL3BvL2V1LnBvCmluZGV4IGFkMjc4ZTYuLjcyNWFkMmQgMTAwNjQ0Ci0tLSBhL3BvL2V1LnBvCisrKyBiL3BvL2V1LnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQtMC4xMC4xNy4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDEwLTAzLTI1IDEyOjMwKzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1pa2VsIE9sYXNhZ2FzdGkgVXJhbmdhIDxoZXlfbmVrZW5AbXVuZHVyYXQubmV0PlxuIgogIkxhbmd1YWdlLVRlYW06IEJhc3F1ZSA8dHJhbnNsYXRpb24tdGVhbS1ldUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yMiw5NSArMjIsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vZmkuZ21vIGIvcG8vZmkuZ21vCmluZGV4IDYyZDllZTIuLjk3ODQ4YTAgMTAwNjQ0Ci0tLSBhL3BvL2ZpLmdtbworKysgYi9wby9maS5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vZmkucG8gYi9wby9maS5wbwppbmRleCAzYjIwYTMwLi42MDgzMDZmIDEwMDY0NAotLS0gYS9wby9maS5wbworKysgYi9wby9maS5wbwpAQCAtMTEsNyArMTEsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4xMy4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA5LTA4LTEyIDIyOjEzKzAzMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFRvbW1pIFZhaW5pa2FpbmVuIDxUb21taS5WYWluaWthaW5lbkBpa2kuZmk+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogRmlubmlzaCA8dHJhbnNsYXRpb24tdGVhbS1maUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yNSw5NSArMjUsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vZnIuZ21vIGIvcG8vZnIuZ21vCmluZGV4IDExNTE3ZWUuLjY5NmZiNDIgMTAwNjQ0Ci0tLSBhL3BvL2ZyLmdtbworKysgYi9wby9mci5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vZnIucG8gYi9wby9mci5wbwppbmRleCBjNzk0YjJlLi5kNDZiOGU5IDEwMDY0NAotLS0gYS9wby9mci5wbworKysgYi9wby9mci5wbwpAQCAtNywxMCArNywxMCBAQAogIwogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNC4xXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS43LjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0wNC0yNiAxOToyNCswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTYtMDItMjAgMTY6MjcrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogU3TDqXBoYW5lIEF1bGVyeSA8bGtwcG9AZnJlZS5mcj5cbiIKICJMYW5ndWFnZS1UZWFtOiBGcmVuY2ggPHRyYWR1Y0B0cmFkdWMub3JnPlxuIgogIkxhbmd1YWdlOiBmclxuIgpAQCAtMjEsMTA0ICsyMSwxNSBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJGb3JtYXQgbm9uIG7DqWdvY2nDqSBhdmFudCBsJ2FwcGVsIGRlIGxhIGZvbmN0aW9uIGdldCIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgInNvbnMgcGFyIGTDqWZhdXQgYXVkaW9zaW5rIGRlcyDDqXbDqW5lbWVudHMgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiZGVzY3JpcHRpb24gZGVzIHNvbnMgcGFyIGTDqWZhdXQgYXVkaW9zaW5rIGRlcyDDqXbDqW5lbWVudHMgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAidmlkZW9zaW5rIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgImF1ZGlvc3JjIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgInZpZGVvc3JjIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiYXBlcsOndSBHU3RyZWFtZXIgcGFyIGTDqWZhdXQiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgImRlc2NyaXB0aW9uIGRlIGzigJlhcGVyw6d1IEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgotbXNnc3RyICIiCittc2dzdHIgIk9wZW5DViBu4oCZYSBwYXMgcHUgY2hhcmdlciBs4oCZaW1hZ2UgbW9kw6hsZSIKIAogbXNnaWQgIkNvdWxkIG5vdCByZWFkIHRpdGxlIGluZm9ybWF0aW9uIGZvciBEVkQuIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIGxpcmUgbGVzIGluZm9ybWF0aW9ucyBkZSB0aXRyZSBkdSBEVkQuIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkZhaWxlZCB0byBvcGVuIERWRCBkZXZpY2UgJyVzJy4iCi1tc2dzdHIgIkltcG9zc2libGUgZCdvdXZyaXIgbGUgcMOpcmlwaMOpcmlxdWUgZHUgRFZEIMKrwqAlc8KgwrsuIgorbXNnc3RyICJJbXBvc3NpYmxlIGTigJlvdXZyaXIgbGUgcMOpcmlwaMOpcmlxdWUgZHUgRFZEIMKrwqAlc8KgwrsuIgogCiBtc2dpZCAiRmFpbGVkIHRvIHNldCBQR0MgYmFzZWQgc2Vla2luZy4iCiBtc2dzdHIgIkltcG9zc2libGUgZGUgZMOpZmluaXIgbGEgcmVjaGVyY2hlIGJhc8OpZSBzdXIgUEdDLiIKQEAgLTEyNywyMyArMzgsMjMgQEAKICJDb3VsZCBub3QgcmVhZCBEVkQuIFRoaXMgbWF5IGJlIGJlY2F1c2UgdGhlIERWRCBpcyBlbmNyeXB0ZWQgYW5kIGEgRFZEICIKICJkZWNyeXB0aW9uIGxpYnJhcnkgaXMgbm90IGluc3RhbGxlZC4iCiBtc2dzdHIgIiIKLSJJbXBvc3NpYmxlIGRlIGxpcmUgbGUgRFZELiBJbCBzZSBwZXV0IHF1ZSBsZSBEVkQgc29pdCBjaGlmZnLDqSBldCBxdSdhdWN1bmUgIgotImJpYmxpb3Row6hxdWUgZGUgZMOpY2hpZmZyZW1lbnQgRFZEIG5lIHNvaXQgZGlzcG9uaWJsZS4iCisiSW1wb3NzaWJsZSBkZSBsaXJlIGxlIERWRC4gSWwgc2UgcGV1dCBxdeKAmWlsIHNvaXQgY2hpZmZyw6kgZXQgcXXigJlhdWN1bmUgIgorImJpYmxpb3Row6hxdWUgZGUgZMOpY2hpZmZyZW1lbnQgRFZEIG5lIHNvaXQgaW5zdGFsbMOpZS4iCiAKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCBEVkQuIgogbXNnc3RyICJJbXBvc3NpYmxlIGRlIGxpcmUgbGUgRFZELiIKIAogbXNnaWQgIlRoaXMgZmlsZSBjb250YWlucyBubyBwbGF5YWJsZSBzdHJlYW1zLiIKLW1zZ3N0ciAiIgorbXNnc3RyICJDZSBmaWNoaWVyIG5lIGNvbnRpZW50IGF1Y3VuIGZsdXggZXhwbG9pdGFibGUuIgogCiBtc2dpZCAiQ291bGQgbm90IG9wZW4gc25kZmlsZSBzdHJlYW0gZm9yIHJlYWRpbmcuIgotbXNnc3RyICJJbXBvc3NpYmxlIGQnb3V2cmlyIGxlIGZpY2hpZXIgc25kIGVuIGxlY3R1cmUuIgorbXNnc3RyICJJbXBvc3NpYmxlIGTigJlvdXZyaXIgbGUgZmljaGllciBzbmQgZW4gbGVjdHVyZS4iCiAKIG1zZ2lkICJDb3VsZCBub3QgZXN0YWJsaXNoIGNvbm5lY3Rpb24gdG8gc25kaW8iCiBtc2dzdHIgIkltcG9zc2libGUgZGUgc2UgY29ubmVjdGVyIMOgIHNuZGlvIgogCiBtc2dpZCAiRmFpbGVkIHRvIHF1ZXJ5IHNuZGlvIGNhcGFiaWxpdGllcyIKLW1zZ3N0ciAiSW1wb3NzaWJsZSBk4oCZaW50ZXJyb2dlciBsZXMgY2FwYWNpdMOpcyBzbmRpbyIKK21zZ3N0ciAiSW1wb3NzaWJsZSBk4oCZaW50ZXJyb2dlciBsZXMgY2FwYWNpdMOpcyBkZSBzbmRpbyIKIAogbXNnaWQgIkNvdWxkIG5vdCBjb25maWd1cmUgc25kaW8iCiBtc2dzdHIgIkltcG9zc2libGUgZGUgY29uZmlndXJlciBzbmRpbyIKQEAgLTE1MiwyNiArNjMsMjkgQEAKIG1zZ3N0ciAiSW1wb3NzaWJsZSBkZSBkw6ltYXJyZXIgc25kaW8iCiAKIG1zZ2lkICJJbnRlcm5hbCBkYXRhIGZsb3cgZXJyb3IuIgotbXNnc3RyICJFcnJldXIgaW50ZXJuZSBkZSBmbHV4IGRlIGRvbm7DqWVzLiIKK21zZ3N0ciAiRXJyZXVyIGR1IGZsdXggZGUgZG9ubsOpZXMgaW50ZXJuZS4iCiAKIG1zZ2lkICJHZW5lcmF0ZWQgZmlsZSBoYXMgYSBsYXJnZXIgcHJlcm9sbCB0aW1lIHRoYW4gaXRzIHN0cmVhbXMgZHVyYXRpb24iCiBtc2dzdHIgIiIKKyJMZSBmaWNoaWVyIGfDqW7DqXLDqSBhIHVuIHRlbXBzIGRlIGxhbmNlbWVudCBwbHVzIGxvbmcgcXVlIGxhIGR1csOpZSBkdSBmbHV4IgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIk1pc3NpbmcgZWxlbWVudCAnJXMnIC0gY2hlY2sgeW91ciBHU3RyZWFtZXIgaW5zdGFsbGF0aW9uLiIKLW1zZ3N0ciAiIgorbXNnc3RyICLDiWzDqW1lbnQgwqsgJXMgwrsgbWFucXVhbnQg4oCUIFbDqXJpZmlleiB2b3RyZSBpbnN0YWxsYXRpb24gZGUgR1N0cmVhbWVyLiIKIAogbXNnaWQgIkZpbGUgbG9jYXRpb24gaXMgc2V0IHRvIE5VTEwsIHBsZWFzZSBzZXQgaXQgdG8gYSB2YWxpZCBmaWxlbmFtZSIKIG1zZ3N0ciAiIgorIkzigJllbXBsYWNlbWVudCBkdSBmaWNoaWVyIGVzdCBpbmNvbm51IChOVUxMKSwgdmV1aWxsZXogY2hvaXNpciB1biBub20gZGUgIgorImZpY2hpZXIgdmFsaWRlIgogCiBtc2dpZCAiRGlnaXRhbHpvb20gZWxlbWVudCBjb3VsZG4ndCBiZSBjcmVhdGVkIgotbXNnc3RyICIiCittc2dzdHIgIkzigJnDqWzDqW1lbnQgRGlnaXRhbHpvb20gbuKAmWEgcHUgw6p0cmUgY3LDqcOpIgogCiBtc2dpZCAiU3VicGljdHVyZSBmb3JtYXQgd2FzIG5vdCBjb25maWd1cmVkIGJlZm9yZSBkYXRhIGZsb3ciCi1tc2dzdHIgIiIKK21zZ3N0ciAiTGUgZm9ybWF0IGRlIHNvdXMtaW1hZ2UgbuKAmcOpdGFpdCBwYXMgY29uZmlndXLDqSBhdmFudCBsZSBmbHV4IGRlIGRvbm7DqWVzIgogCiBtc2dpZCAiRmFpbGVkIHRvIGdldCBmcmFnbWVudCBVUkwuIgotbXNnc3RyICIiCittc2dzdHIgIsOJY2hlYyBkZSBsYSByw6ljdXDDqXJhdGlvbiBkZSBs4oCZVVJMIGRlIGZyYWdtZW50LiIKIAogbXNnaWQgIkludGVybmFsIGRhdGEgc3RyZWFtIGVycm9yLiIKIG1zZ3N0ciAiRXJyZXVyIGludGVybmUgZGUgZmx1eCBkZSBkb25uw6llcy4iCkBAIC0xODAsNDkgKzk0LDE2NCBAQAogbXNnc3RyICJJbXBvc3NpYmxlIGRlIHTDqWzDqWNoYXJnZXIgbGVzIGZyYWdtZW50cyIKIAogbXNnaWQgIk5vIGZpbGUgbmFtZSBzcGVjaWZpZWQgZm9yIHdyaXRpbmcuIgotbXNnc3RyICJBdWN1biBub20gZGUgZmljaGllciBpbmRpcXXDqSBwb3VyIGwnw6ljcml0dXJlLiIKK21zZ3N0ciAiQXVjdW4gbm9tIGRlIGZpY2hpZXIgaW5kaXF1w6kgZW4gw6ljcml0dXJlLiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJHaXZlbiBmaWxlIG5hbWUgXCIlc1wiIGNhbid0IGJlIGNvbnZlcnRlZCB0byBsb2NhbCBmaWxlIG5hbWUgZW5jb2RpbmcuIgogbXNnc3RyICIiCisiTGUgbm9tIGRlIGZpY2hpZXIgaW5kaXF1w6kgwqvCoCVzwqDCuyBuZSBwZXV0IHBhcyDDqnRyZSBjb252ZXJ0aSBkYW5zIGzigJllbmNvZGFnZSAiCisibG9jYWwgYXUgc3lzdMOobWUgZGUgZmljaGllci4iCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmcuIgotbXNnc3RyICJJbXBvc3NpYmxlIGQnb3V2cmlyIGxlIGZpY2hpZXIgwqvCoCVzwqDCuyBwb3VyIGwnw6ljcml0dXJlLiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBk4oCZb3V2cmlyIGxlIGZpY2hpZXIgwqvCoCVzwqDCuyBlbiDDqWNyaXR1cmUuIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkRldmljZSBcIiVzXCIgZG9lcyBub3QgZXhpc3QuIgotbXNnc3RyICJMZSBww6lyaXBow6lyaXF1ZSDCq8KgJXPCoMK7IG4nZXhpc3RlIHBhcy4iCittc2dzdHIgIkxlIHDDqXJpcGjDqXJpcXVlIMKrwqAlc8KgwrsgbuKAmWV4aXN0ZSBwYXMuIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuIGZyb250ZW5kIGRldmljZSBcIiVzXCIuIgotbXNnc3RyICJJbXBvc3NpYmxlIGQnb3V2cmlyIGxlIHDDqXJpcGjDqXJpcXVlIGZyb250YWwgwqvCoCVzwqDCuy4iCittc2dzdHIgIkltcG9zc2libGUgZOKAmW91dnJpciBsZSBww6lyaXBow6lyaXF1ZSBmcm9udGFsIMKrwqAlc8KgwrsuIgogCiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBnZXQgc2V0dGluZ3MgZnJvbSBmcm9udGVuZCBkZXZpY2UgXCIlc1wiLiIKLW1zZ3N0ciAiSW1wb3NzaWJsZSBkJ29idGVuaXIgbGVzIHBhcmFtw6h0cmVzIGR1IHDDqXJpcGjDqXJpcXVlIGZyb250YWwgwqvCoCVzwqDCuy4iCittc2dzdHIgIkltcG9zc2libGUgZOKAmW9idGVuaXIgbGVzIHBhcmFtw6h0cmVzIGR1IHDDqXJpcGjDqXJpcXVlIGZyb250YWwgwqvCoCVzwqDCuy4iCiAKLSMsIGZ1enp5LCBjLWZvcm1hdAorIywgYy1mb3JtYXQKIG1zZ2lkICJDYW5ub3QgZW51bWVyYXRlIGRlbGl2ZXJ5IHN5c3RlbXMgZnJvbSBmcm9udGVuZCBkZXZpY2UgXCIlc1wiLiIKLW1zZ3N0ciAiSW1wb3NzaWJsZSBkJ29idGVuaXIgbGVzIHBhcmFtw6h0cmVzIGR1IHDDqXJpcGjDqXJpcXVlIGZyb250YWwgwqvCoCVzwqDCuy4iCittc2dzdHIgIiIKKyJJbXBvc3NpYmxlIGQnw6ludW3DqXJlciBsZXMgc3lzdMOobWVzIGTigJnDqW1pc3Npb24gZHUgcMOpcmlwaMOpcmlxdWUgZnJvbnRhbCDCq8KgJXPCoMK7LiIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZCBub3Qgb3BlbiBmaWxlIFwiJXNcIiBmb3IgcmVhZGluZy4iCi1tc2dzdHIgIkltcG9zc2libGUgZCdvdXZyaXIgbGUgZmljaGllciDCq8KgJXPCoMK7IGVuIGxlY3R1cmUuIgorbXNnc3RyICJJbXBvc3NpYmxlIGTigJlvdXZyaXIgbGUgZmljaGllciDCq8KgJXPCoMK7IGVuIGxlY3R1cmUuIgogCiBtc2dpZCAiQ291bGRuJ3QgZmluZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUiCi1tc2dzdHIgIiIKK21zZ3N0ciAiSW1wb3NzaWJsZSBkZSB0cm91dmVyIGxlIGZpY2hpZXIgZGUgY29uZmlndXJhdGlvbiBkZSBjYW5hbCBEVkIiCiAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgbG9hZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGU6ICVzIgotbXNnc3RyICIiCittc2dzdHIgIkltcG9zc2libGUgZGUgY2hhcmdlciBsZSBmaWNoaWVyIGRlIGNvbmZpZ3VyYXRpb24gZGUgY2FuYWwgRFZCwqA6ICVzIgogCiBtc2dpZCAiRFZCIGNoYW5uZWwgY29uZmlndXJhdGlvbiBmaWxlIGRvZXNuJ3QgY29udGFpbiBhbnkgY2hhbm5lbHMiCi1tc2dzdHIgIiIKK21zZ3N0ciAiTGUgZmljaGllciBkZSBjb25maWd1cmF0aW9uIGRlIGNhbmFsIERWQiBuZSBjb250aWVudCBhdWN1biBjYW5hbCIKIAogIywgYy1mb3JtYXQKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgotbXNnc3RyICIiCittc2dzdHIgIkltcG9zc2libGUgZGUgdHJvdXZlciBkZXMgaW5mb3JtYXRpb25zIHN1ciBsZSBjYW5hbCBEVkIgJXMiCiAKLSN+IG1zZ2lkICJDb3VsZCBub3Qgd3JpdGUgdG8gZmlsZSBcIiVzXCIuIgotI34gbXNnc3RyICJJbXBvc3NpYmxlIGQnw6ljcmlyZSBkYW5zIGxlIGZpY2hpZXIgwqvCoCVzwqDCuy4iCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAicsOpY2VwdGV1ciBhdWRpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQgcG91ciBsZXMgw6l2w6luZW1lbnRzIHNvbm9yZXMiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgcGV1dCBsaXJlIGRlcyBzb25zIGRlcHVpcyB1biBub21icmUgcXVlbGNvbnF1ZSBk4oCZw6lsw6ltZW50cyBlbiAiCisjfiAiZW50csOpZS4gTGVzIGNob2l4IHBvc3NpYmxlcyBzb250IG9zc3NpbmssIHB1bHNlc2luayBldCBhbHNhc2luay4gTGUgIgorI34gInNvdXJjZSBhdWRpbyBwZXV0IMOqdHJlIHVuIHBpcGVsaW5lIHBhcnRpZWwgYXUgbGlldSBk4oCZdW4gw6lsw6ltZW50IHVuaXF1ZS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiIgorI34gImRlc2NyaXB0aW9uIGR1IHLDqWNlcHRldXIgYXVkaW8gR1N0cmVhbWVyIHBhciBkw6lmYXV0IHBvdXIgbGVzIMOpdsOpbmVtZW50cyAiCisjfiAic29ub3JlcyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJEw6ljcml0IGxlIHLDqWNlcHRldXIgYXVkaW8gc8OpbGVjdGlvbm7DqS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gInLDqWNlcHRldXIgYXVkaW8gR1N0cmVhbWVyIHBhciBkw6lmYXV0IHBvdXIgbGVzIGNvbmbDqHJlbmNlcyBhdWRpb3Zpc3VlbGxlcyIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICJkZXNjcmlwdGlvbiBkdSByw6ljZXB0ZXVyIGF1ZGlvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCBwb3VyIGxlcyBjb25mw6hyZW5jZXMgIgorI34gImF1ZGlvdmlzdWVsbGVzIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJyw6ljZXB0ZXVyIGF1ZGlvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCBwb3VyIGxhIG11c2lxdWUgZXQgbGVzIGZpbG1zIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiIgorI34gImRlc2NyaXB0aW9uIGR1IHLDqWNlcHRldXIgYXVkaW8gR1N0cmVhbWVyIHBhciBkw6lmYXV0IHBvdXIgbGEgbXVzaXF1ZSBldCAiCisjfiAibGVzIGZpbG1zIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJyw6ljZXB0ZXVyIHZpZMOpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBwZXV0IGxpcmUgdW5lIHZpZMOpbyBkZXB1aXMgdW4gbm9tYnJlIHF1ZWxjb25xdWUgZOKAmcOpbMOpbWVudHMgZW4gIgorI34gImVudHLDqWUuIExlcyBjaG9peCBwb3NzaWJsZXMgc29udCB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGV0ICIKKyN+ICJhYXNpbmsuIExlIHNvdXJjZSB2aWTDqW8gcGV1dCDDqnRyZSB1biBwaXBlbGluZSBwYXJ0aWVsIGF1IGxpZXUgZOKAmXVuICIKKyN+ICLDqWzDqW1lbnQgdW5pcXVlLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgImRlc2NyaXB0aW9uIGR1IHLDqWNlcHRldXIgdmlkw6lvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJEw6ljcml0IGxlIHLDqWNlcHRldXIgdmlkw6lvIHPDqWxlY3Rpb25uw6kuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgInNvdXJjZSBhdWRpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHBldXQgZW5yZWdpc3RyZXIgZGVzIHNvbnMgZGVwdWlzIHVuIG5vbWJyZSBxdWVsY29ucXVlICIKKyN+ICJk4oCZw6lsw6ltZW50cyBlbiBlbnRyw6llLiBMZXMgY2hvaXggcG9zc2libGVzIHNvbnQgb3Nzc3JjLCBwdWxzZXNyYyBldCAiCisjfiAiYWxzYXNyYy4gTGUgc291cmNlIGF1ZGlvIHBldXQgw6p0cmUgdW4gcGlwZWxpbmUgcGFydGllbCBhdSBsaWV1IGTigJl1biAiCisjfiAiw6lsw6ltZW50IHVuaXF1ZS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgImRlc2NyaXB0aW9uIGRlIGxhIHNvdXJjZSBhdWRpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJEw6ljcml0IGxhIHNvdXJjZSBhdWRpbyBzw6lsZWN0aW9ubsOpZS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAic291cmNlIHZpZMOpbyBHU3RyZWFtZXIgcGFyIGTDqWZhdXQiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHBldXQgZW5yZWdpc3RyZXIgdW5lIHZpZMOpbyBkZXB1aXMgdW4gbm9tYnJlIHF1ZWxjb25xdWUgIgorI34gImTigJnDqWzDqW1lbnRzIGVuIGVudHLDqWUuIExlcyBjaG9peCBwb3NzaWJsZXMgc29udCB2NGxzcmMsIHY0bDJzcmMgZXQgIgorI34gInZpZGVvdGVzdHNyYy4gTGUgc291cmNlIHZpZMOpbyBwZXV0IMOqdHJlIHVuIHBpcGVsaW5lIHBhcnRpZWwgYXUgbGlldSBk4oCZdW4gIgorI34gIsOpbMOpbWVudCB1bmlxdWUuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJkZXNjcmlwdGlvbiBkZSBsYSBzb3VyY2Ugdmlkw6lvIEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkTDqWNyaXQgbGEgc291cmNlIHZpZMOpbyBzw6lsZWN0aW9ubsOpZS4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJhcGVyw6d1IEdTdHJlYW1lciBwYXIgZMOpZmF1dCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIHBldXQgbWV0dHJlIGxlcyBleHRlbnNpb25zIGTigJlhcGVyw6d1IGRhbnMgdW4gcGlwZWxpbmUgcG91ciAiCisjfiAidHJhbnNmb3JtZXIgbGVzIGZsdXggYXVkaW9zIGVuIGZyYW1lcyB2aWTDqW8uIExlcyBjaG9peCBwb3NzaWJsZXMgc29udCAiCisjfiAiZ29vbSwgZ29vbTJrMSBldCBzeW5hZXN0aGVzaWEuIEzigJlleHRlbnNpb24gZOKAmWFwZXLDp3UgcGV1dCDDqnRyZSB1biBwaXBlbGluZSAiCisjfiAicGFydGllbCBhdSBsaWV1IGTigJl1biDDqWzDqW1lbnQgdW5pcXVlLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJkZXNjcmlwdGlvbiBkZSBs4oCZYXBlcsOndSBHU3RyZWFtZXIgcGFyIGTDqWZhdXQiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIkTDqWNyaXQgbOKAmcOpbMOpbWVudCBk4oCZYXBlcsOndSBzw6lsZWN0aW9ubsOpLiIKZGlmZiAtLWdpdCBhL3BvL2dsLmdtbyBiL3BvL2dsLmdtbwppbmRleCAxZGE1NGU0Li5mNTM0YTBiIDEwMDY0NAotLS0gYS9wby9nbC5nbW8KKysrIGIvcG8vZ2wuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2dsLnBvIGIvcG8vZ2wucG8KaW5kZXggMTBhNDA2OC4uYTBkZTc4ZCAxMDA2NDQKLS0tIGEvcG8vZ2wucG8KKysrIGIvcG8vZ2wucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTEtMDktMDUgMTI6NTArMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogRnJhbiBEaWVndWV6IDxmcmFuZGllZ3VlekB1YnVudHUuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEdhbGljaWFuIDxwcm94ZWN0b0B0cmFzbm8ubmV0PlxuIgpAQCAtMjIsOTUgKzIyLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2dzdC1wbHVnaW5zLWJhZC0xLjAucG90IGIvcG8vZ3N0LXBsdWdpbnMtYmFkLTEuMC5wb3QKaW5kZXggMDYwMDI4MC4uZTlhYTdlYSAxMDA2NDQKLS0tIGEvcG8vZ3N0LXBsdWdpbnMtYmFkLTEuMC5wb3QKKysrIGIvcG8vZ3N0LXBsdWdpbnMtYmFkLTEuMC5wb3QKQEAgLTUsOSArNSw5IEBACiAjLCBmdXp6eQogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4zXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS43LjkxXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiBZRUFSLU1PLURBIEhPOk1JK1pPTkVcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKICJMYW5ndWFnZS1UZWFtOiBMQU5HVUFHRSA8TExAbGkub3JnPlxuIgpAQCAtMTYsMTI4ICsxNiwxMSBAQAogIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1DSEFSU0VUXG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgogCi0jOiBleHQvZ2wvZ3N0Z2x0ZXN0c3JjLmM6NjczCisjOiBleHQvZ2wvZ3N0Z2x0ZXN0c3JjLmM6NjgwCiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NgotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MTkKLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjMyCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjEzCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MTQKLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjI3Ci0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo0MAotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjE4Ci1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46MjYKLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjMxCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjM5Ci1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo0NAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo0NQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjUyCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo1MwotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjU3Ci1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46NTgKLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjY1Ci1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjY2Ci1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo3MAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjcxCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo3NwotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo3OAotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46ODIKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLSM6IGV4dC9nc2V0dGluZ3Mvb3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5kZWZhdWx0LWVsZW1lbnRzLmdzY2hlbWEueG1sLmluOjgzCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotIzogZXh0L2dzZXR0aW5ncy9vcmcuZnJlZWRlc2t0b3AuZ3N0cmVhbWVyLmRlZmF1bHQtZWxlbWVudHMuZ3NjaGVtYS54bWwuaW46OTAKLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi0jOiBleHQvZ3NldHRpbmdzL29yZy5mcmVlZGVza3RvcC5nc3RyZWFtZXIuZGVmYXVsdC1lbGVtZW50cy5nc2NoZW1hLnhtbC5pbjo5MQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi0jOiBleHQvb3BlbmN2L2dzdHRlbXBsYXRlbWF0Y2guYzo0NDIKKyM6IGV4dC9vcGVuY3YvZ3N0dGVtcGxhdGVtYXRjaC5jcHA6MTg4CiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKQEAgLTE1NCwxOCArMzcsMTggQEAKIG1zZ2lkICJGYWlsZWQgdG8gc2V0IFBHQyBiYXNlZCBzZWVraW5nLiIKIG1zZ3N0ciAiIgogCi0jOiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYzoxMTY2CisjOiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYzoxMTY1CiBtc2dpZCAiIgogIkNvdWxkIG5vdCByZWFkIERWRC4gVGhpcyBtYXkgYmUgYmVjYXVzZSB0aGUgRFZEIGlzIGVuY3J5cHRlZCBhbmQgYSBEVkQgIgogImRlY3J5cHRpb24gbGlicmFyeSBpcyBub3QgaW5zdGFsbGVkLiIKIG1zZ3N0ciAiIgogCi0jOiBleHQvcmVzaW5kdmQvcmVzaW5kdmRzcmMuYzoxMTcxIGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jOjExODAKKyM6IGV4dC9yZXNpbmR2ZC9yZXNpbmR2ZHNyYy5jOjExNzAgZXh0L3Jlc2luZHZkL3Jlc2luZHZkc3JjLmM6MTE3OQogbXNnaWQgIkNvdWxkIG5vdCByZWFkIERWRC4iCiBtc2dzdHIgIiIKIAotIzogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOjM4MQotIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjUyNQorIzogZXh0L3Ntb290aHN0cmVhbWluZy9nc3Rtc3NkZW11eC5jOjQwNQorIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjYzMwogbXNnaWQgIlRoaXMgZmlsZSBjb250YWlucyBubyBwbGF5YWJsZSBzdHJlYW1zLiIKIG1zZ3N0ciAiIgogCkBAIC0xODksNyArNzIsNyBAQAogbXNnaWQgIkNvdWxkIG5vdCBzdGFydCBzbmRpbyIKIG1zZ3N0ciAiIgogCi0jOiBnc3QvYWlmZi9haWZmcGFyc2UuYzoxNDU4CisjOiBnc3QvYWlmZi9haWZmcGFyc2UuYzoxNTA0CiBtc2dpZCAiSW50ZXJuYWwgZGF0YSBmbG93IGVycm9yLiIKIG1zZ3N0ciAiIgogCkBAIC0yMTUsMTggKzk4LDE4IEBACiBtc2dpZCAiU3VicGljdHVyZSBmb3JtYXQgd2FzIG5vdCBjb25maWd1cmVkIGJlZm9yZSBkYXRhIGZsb3ciCiBtc2dzdHIgIiIKIAotIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjIwODEKKyM6IGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoyNjU2CiBtc2dpZCAiRmFpbGVkIHRvIGdldCBmcmFnbWVudCBVUkwuIgogbXNnc3RyICIiCiAKLSM6IGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzoyMjgyCi0jOiBnc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9nc3RhZGFwdGl2ZWRlbXV4LmM6MjQ0NgotIzogZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuYzoxMzQyIGdzdC9tcGVndHNkZW11eC9tcGVndHNiYXNlLmM6MTM0NgorIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjI4OTEKKyM6IGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzozMDg1CisjOiBnc3QvbXBlZ3RzZGVtdXgvbXBlZ3RzYmFzZS5jOjEzODEgZ3N0L21wZWd0c2RlbXV4L21wZWd0c2Jhc2UuYzoxMzg1CiAjOiBnc3QvbnV2ZGVtdXgvZ3N0bnV2ZGVtdXguYzo3MzYKIG1zZ2lkICJJbnRlcm5hbCBkYXRhIHN0cmVhbSBlcnJvci4iCiBtc2dzdHIgIiIKIAotIzogZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvZ3N0YWRhcHRpdmVkZW11eC5jOjIzODMKKyM6IGdzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2dzdGFkYXB0aXZlZGVtdXguYzozMDAzCiBtc2dpZCAiQ291bGRuJ3QgZG93bmxvYWQgZnJhZ21lbnRzIgogbXNnc3RyICIiCiAKQEAgLTI0NCw0NSArMTI3LDQ1IEBACiBtc2dpZCAiQ291bGQgbm90IG9wZW4gZmlsZSBcIiVzXCIgZm9yIHdyaXRpbmcuIgogbXNnc3RyICIiCiAKLSM6IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTU2NSBzeXMvZHZiL2dzdGR2YnNyYy5jOjE3NTQKKyM6IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTU2NCBzeXMvZHZiL2dzdGR2YnNyYy5jOjE3NTMKICMsIGMtZm9ybWF0CiBtc2dpZCAiRGV2aWNlIFwiJXNcIiBkb2VzIG5vdCBleGlzdC4iCiBtc2dzdHIgIiIKIAotIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNTY5CisjOiBzeXMvZHZiL2dzdGR2YnNyYy5jOjE1NjgKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IG9wZW4gZnJvbnRlbmQgZGV2aWNlIFwiJXNcIi4iCiBtc2dzdHIgIiIKIAotIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNTgzCisjOiBzeXMvZHZiL2dzdGR2YnNyYy5jOjE1ODIKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGQgbm90IGdldCBzZXR0aW5ncyBmcm9tIGZyb250ZW5kIGRldmljZSBcIiVzXCIuIgogbXNnc3RyICIiCiAKLSM6IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTYwMAorIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNTk5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNhbm5vdCBlbnVtZXJhdGUgZGVsaXZlcnkgc3lzdGVtcyBmcm9tIGZyb250ZW5kIGRldmljZSBcIiVzXCIuIgogbXNnc3RyICIiCiAKLSM6IHN5cy9kdmIvZ3N0ZHZic3JjLmM6MTc1OAorIzogc3lzL2R2Yi9nc3RkdmJzcmMuYzoxNzU3CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkIG5vdCBvcGVuIGZpbGUgXCIlc1wiIGZvciByZWFkaW5nLiIKIG1zZ3N0ciAiIgogCi0jOiBzeXMvZHZiL3BhcnNlY2hhbm5lbHMuYzoxNjgKKyM6IHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOjE2NQogbXNnaWQgIkNvdWxkbid0IGZpbmQgRFZCIGNoYW5uZWwgY29uZmlndXJhdGlvbiBmaWxlIgogbXNnc3RyICIiCiAKLSM6IHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOjE3MQorIzogc3lzL2R2Yi9wYXJzZWNoYW5uZWxzLmM6MTY4CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGxvYWQgRFZCIGNoYW5uZWwgY29uZmlndXJhdGlvbiBmaWxlOiAlcyIKIG1zZ3N0ciAiIgogCi0jOiBzeXMvZHZiL3BhcnNlY2hhbm5lbHMuYzoxODAKKyM6IHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOjE3NQogbXNnaWQgIkRWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZSBkb2Vzbid0IGNvbnRhaW4gYW55IGNoYW5uZWxzIgogbXNnc3RyICIiCiAKLSM6IHN5cy9kdmIvcGFyc2VjaGFubmVscy5jOjQ1NgorIzogc3lzL2R2Yi9wYXJzZWNoYW5uZWxzLmM6NDQ5CiAjLCBjLWZvcm1hdAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIiIKZGlmZiAtLWdpdCBhL3BvL2hyLmdtbyBiL3BvL2hyLmdtbwppbmRleCBkMTA5ODg3Li5jYTJlYWMxIDEwMDY0NAotLS0gYS9wby9oci5nbW8KKysrIGIvcG8vaHIuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2hyLnBvIGIvcG8vaHIucG8KaW5kZXggNTU5MWQ4ZS4uNTM1ZWMxMCAxMDA2NDQKLS0tIGEvcG8vaHIucG8KKysrIGIvcG8vaHIucG8KQEAgLTYsNyArNiw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTItMDQtMTYgMDI6MDYrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogVG9taXNsYXYgS3J6bmFyIDx0b21pc2xhdi5rcnpuYXJAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IENyb2F0aWFuIDxsb2thbGl6YWNpamFAbGludXguaHI+XG4iCkBAIC0yMCw5NSArMjAsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vaHUuZ21vIGIvcG8vaHUuZ21vCmluZGV4IDFmZGY5YWMuLmNkOTQxMWYgMTAwNjQ0Ci0tLSBhL3BvL2h1LmdtbworKysgYi9wby9odS5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vaHUucG8gYi9wby9odS5wbwppbmRleCBhZjcxZTk0Li45ZWFhYzRkIDEwMDY0NAotLS0gYS9wby9odS5wbworKysgYi9wby9odS5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTExLTIwIDIzOjQ2KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEJhbMOhenMgw5pyIDx1cmJhbGF6c0BnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogSHVuZ2FyaWFuIDx0cmFuc2xhdGlvbi10ZWFtLWh1QGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIyLDExNyArMjIsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJhIGZvcm3DoXR1bSBuZW0gbGV0dCBlZ3llenRldHZlIGEgZsO8Z2d2w6lueSBsZWvDqXLDqXNlIGVsxZF0dCIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGhhbmdlc2Vtw6lueWVrIGF1ZGlvc2luayIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkEgR1N0cmVhbWVyIGvDqXBlcyBoYW5nb3QgbGVqw6F0c3phbmkgYsOhcm1pbHllbiBzesOhbcO6IGtpbWVuZXRpIGVsZW0gIgotImhhc3puw6FsYXTDoXZhbC4gTsOpaMOhbnkgbGVoZXRzw6lnZXMgdsOhbGFzenTDoXMgYSBrw7Z2ZXRrZXrFkSBsZWhldDogb3Nzc2luaywgIgotInB1bHNlc2luayDDqXMgYWxzYXNpbmsuIEF6IGF1ZGlvc2luayBsZWhldCBlZ3kgcsOpc3psZWdlcyBhZGF0Y3NhdG9ybmEgaXMgIgotImVneWV0bGVuIGVsZW0gaGVseWV0dC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgaGFuZ2VzZW3DqW55ZWsgYXVkaW9zaW5rIGxlw61yw6FzYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCBhdWRpb3NpbmsgZWxlbWV0LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NpbmsgYSBoYW5nL3ZpZGXDsyBrb25mZXJlbmNpw6Fob3oiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0iYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgYXVkaW9zaW5rIGxlw61yw6FzYSBhIGhhbmcvdmlkZcOzIGtvbmZlcmVuY2nDoWhveiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgYXVkaW9zaW5rIHplbsOpa2hleiDDqXMgZmlsbWVraGV6IgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgYXVkaW9zaW5rIGxlw61yw6FzYSB6ZW7DqWtoZXogw6lzIGZpbG1la2hleiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJBIEdTdHJlYW1lciBrw6lwZXMgdmlkZcOzdCBsZWrDoXRzemFuaSBiw6FybWlseWVuIHN6w6Ftw7oga2ltZW5ldGkgZWxlbSAiCi0iaGFzem7DoWxhdMOhdmFsLiBOw6low6FueSBsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiB4dmltYWdlc2luaywgIgotInhpbWFnZXNpbmssIHNkbHZpZGVvc2luayDDqXMgYWFzaW5rLiBBeiB2aWRlb3NpbmsgbGVoZXQgZWd5IHLDqXN6bGVnZXMgIgotImFkYXRjc2F0b3JuYSBpcyBlZ3lldGxlbiBlbGVtIGhlbHlldHQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgdmlkZW9zaW5rIGxlw61yw6FzYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCB2aWRlb3NpbmsgZWxlbWV0LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NyYyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJBIEdTdHJlYW1lciBrw6lwZXMgaGFuZ290IGZlbHZlbm5pIGLDoXJtaWx5ZW4gc3rDoW3DuiBiZW1lbmV0aSBlbGVtICIKLSJoYXN6bsOhbGF0w6F2YWwuIE7DqWjDoW55IGxlaGV0c8OpZ2VzIHbDoWxhc3p0w6FzIGEga8O2dmV0a2V6xZEgbGVoZXQ6IG9zc3NyYywgIgotInB1bHNlc3JjIMOpcyBhbHNhc3JjLiBBIGhhbmdmb3Jyw6FzIGxlaGV0IGVneSByw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSBpcyAiCi0iZWd5ZXRsZW4gZWxlbSBoZWx5ZXR0LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgYXVkaW9zcmMgbGXDrXLDoXNhIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiTGXDrXJqYSBhIGtpdsOhbGFzenRvdHQgYXVkaW9zcmMgZWxlbWV0LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NyYyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJBIEdTdHJlYW1lciBrw6lwZXMgdmlkZcOzdCBmZWx2ZW5uaSBiw6FybWlseWVuIHN6w6Ftw7ogYmVtZW5ldGkgZWxlbSAiCi0iaGFzem7DoWxhdMOhdmFsLiBOw6low6FueSBsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiB2NGxzcmMsICIKLSJ2NGwyc3JjIMOpcyB2aWRlb3Rlc3RzcmMuIEEgdmlkZW9mb3Jyw6FzIGxlaGV0IGVneSByw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSBpcyAiCi0iZWd5ZXRsZW4gZWxlbSBoZWx5ZXR0LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgdmlkZW9zcmMgbGXDrXLDoXNhIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiTGXDrXJqYSBhIGtpdsOhbGFzenRvdHQgdmlkZW9zcmMgZWxlbWV0LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGvDqXBpIG1lZ2plbGVuw610w6lzIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJBIEdTdHJlYW1lciBrw6lwZXMga8OpcGkgbWVnamVsZW7DrXTFkSBixZF2w610bcOpbnlla2V0IGVsaGVseWV6bmkgZWd5ICIKLSJhZGF0Y3NhdG9ybsOhYmEgYSB2aWRlb2vDqXBrb2Nrw6FrYmFuIGzDqXbFkSBoYW5nZm9seWFtb2sgw6F0YWxha8OtdMOhc8OhaG96LiBOw6low6FueSAiCi0ibGVoZXRzw6lnZXMgdsOhbGFzenTDoXMgYSBrw7Z2ZXRrZXrFkSBsZWhldDogZ29vbSwgZ29vbTJrMSDDqXMgc3luYWVzdGhlc2lhLiBBICIKLSJrw6lwaSBtZWdqZWxlbsOtdMWRIGLFkXbDrXRtw6lueSBsZWhldCBlZ3kgcsOpc3psZWdlcyBhZGF0Y3NhdG9ybmEgaXMgZWd5ZXRsZW4gZWxlbSAiCi0iaGVseWV0dC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIga8OpcGkgbWVnamVsZW7DrXTDqXMgbGXDrXLDoXNhIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCBrw6lwaSBtZWdqZWxlbsOtdMOpcyBlbGVtZXQuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJBeiBPcGVuQ1YtbmVrIG5lbSBzaWtlcsO8bHQgYmV0w7ZsdGVuaWUgYSBzYWJsb25rw6lwZXQiCiAKQEAgLTI1Myw2ICsxNDIsMTE4IEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAiTmVtIHRhbMOhbGhhdMOzayBhKHopICVzIERWQi1jc2F0b3JuYSByw6lzemxldGVpIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgaGFuZ2VzZW3DqW55ZWsgYXVkaW9zaW5rIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiQSBHU3RyZWFtZXIga8OpcGVzIGhhbmdvdCBsZWrDoXRzemFuaSBiw6FybWlseWVuIHN6w6Ftw7oga2ltZW5ldGkgZWxlbSAiCisjfiAiaGFzem7DoWxhdMOhdmFsLiBOw6low6FueSBsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiBvc3NzaW5rLCAiCisjfiAicHVsc2VzaW5rIMOpcyBhbHNhc2luay4gQXogYXVkaW9zaW5rIGxlaGV0IGVneSByw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSBpcyAiCisjfiAiZWd5ZXRsZW4gZWxlbSBoZWx5ZXR0LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBoYW5nZXNlbcOpbnllayBhdWRpb3NpbmsgbGXDrXLDoXNhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkxlw61yamEgYSBraXbDoWxhc3p0b3R0IGF1ZGlvc2luayBlbGVtZXQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGF1ZGlvc2luayBhIGhhbmcvdmlkZcOzIGtvbmZlcmVuY2nDoWhveiIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICJheiBhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NpbmsgbGXDrXLDoXNhIGEgaGFuZy92aWRlw7Mga29uZmVyZW5jacOhaG96IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NpbmsgemVuw6lraGV6IMOpcyBmaWxtZWtoZXoiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICIiCisjfiAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgYXVkaW9zaW5rIGxlw61yw6FzYSB6ZW7DqWtoZXogw6lzIGZpbG1la2hleiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJBIEdTdHJlYW1lciBrw6lwZXMgdmlkZcOzdCBsZWrDoXRzemFuaSBiw6FybWlseWVuIHN6w6Ftw7oga2ltZW5ldGkgZWxlbSAiCisjfiAiaGFzem7DoWxhdMOhdmFsLiBOw6low6FueSBsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiAiCisjfiAieHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayDDqXMgYWFzaW5rLiBBeiB2aWRlb3NpbmsgbGVoZXQgZWd5ICIKKyN+ICJyw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSBpcyBlZ3lldGxlbiBlbGVtIGhlbHlldHQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgdmlkZW9zaW5rIGxlw61yw6FzYSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCB2aWRlb3NpbmsgZWxlbWV0LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciBhdWRpb3NyYyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJBIEdTdHJlYW1lciBrw6lwZXMgaGFuZ290IGZlbHZlbm5pIGLDoXJtaWx5ZW4gc3rDoW3DuiBiZW1lbmV0aSBlbGVtICIKKyN+ICJoYXN6bsOhbGF0w6F2YWwuIE7DqWjDoW55IGxlaGV0c8OpZ2VzIHbDoWxhc3p0w6FzIGEga8O2dmV0a2V6xZEgbGVoZXQ6IG9zc3NyYywgIgorI34gInB1bHNlc3JjIMOpcyBhbHNhc3JjLiBBIGhhbmdmb3Jyw6FzIGxlaGV0IGVneSByw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSBpcyAiCisjfiAiZWd5ZXRsZW4gZWxlbSBoZWx5ZXR0LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgYXVkaW9zcmMgbGXDrXLDoXNhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiTGXDrXJqYSBhIGtpdsOhbGFzenRvdHQgYXVkaW9zcmMgZWxlbWV0LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJhbGFww6lydGVsbWV6ZXR0IEdTdHJlYW1lciB2aWRlb3NyYyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJBIEdTdHJlYW1lciBrw6lwZXMgdmlkZcOzdCBmZWx2ZW5uaSBiw6FybWlseWVuIHN6w6Ftw7ogYmVtZW5ldGkgZWxlbSAiCisjfiAiaGFzem7DoWxhdMOhdmFsLiBOw6low6FueSBsZWhldHPDqWdlcyB2w6FsYXN6dMOhcyBhIGvDtnZldGtlesWRIGxlaGV0OiB2NGxzcmMsICIKKyN+ICJ2NGwyc3JjIMOpcyB2aWRlb3Rlc3RzcmMuIEEgdmlkZW9mb3Jyw6FzIGxlaGV0IGVneSByw6lzemxlZ2VzIGFkYXRjc2F0b3JuYSAiCisjfiAiaXMgZWd5ZXRsZW4gZWxlbSBoZWx5ZXR0LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIgdmlkZW9zcmMgbGXDrXLDoXNhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiTGXDrXJqYSBhIGtpdsOhbGFzenRvdHQgdmlkZW9zcmMgZWxlbWV0LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImFsYXDDqXJ0ZWxtZXpldHQgR1N0cmVhbWVyIGvDqXBpIG1lZ2plbGVuw610w6lzIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJBIEdTdHJlYW1lciBrw6lwZXMga8OpcGkgbWVnamVsZW7DrXTFkSBixZF2w610bcOpbnlla2V0IGVsaGVseWV6bmkgZWd5ICIKKyN+ICJhZGF0Y3NhdG9ybsOhYmEgYSB2aWRlb2vDqXBrb2Nrw6FrYmFuIGzDqXbFkSBoYW5nZm9seWFtb2sgw6F0YWxha8OtdMOhc8OhaG96LiAiCisjfiAiTsOpaMOhbnkgbGVoZXRzw6lnZXMgdsOhbGFzenTDoXMgYSBrw7Z2ZXRrZXrFkSBsZWhldDogZ29vbSwgZ29vbTJrMSDDqXMgIgorI34gInN5bmFlc3RoZXNpYS4gQSBrw6lwaSBtZWdqZWxlbsOtdMWRIGLFkXbDrXRtw6lueSBsZWhldCBlZ3kgcsOpc3psZWdlcyAiCisjfiAiYWRhdGNzYXRvcm5hIGlzIGVneWV0bGVuIGVsZW0gaGVseWV0dC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiYXogYWxhcMOpcnRlbG1lemV0dCBHU3RyZWFtZXIga8OpcGkgbWVnamVsZW7DrXTDqXMgbGXDrXLDoXNhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICJMZcOtcmphIGEga2l2w6FsYXN6dG90dCBrw6lwaSBtZWdqZWxlbsOtdMOpcyBlbGVtZXQuIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAiTmVtIGvDqXJoZXTFkSBsZSBhIE1hbmlmZXN0IFVSTC1lIgogCmRpZmYgLS1naXQgYS9wby9pZC5nbW8gYi9wby9pZC5nbW8KaW5kZXggMTAzMjZhZi4uYTM2NDY3NyAxMDA2NDQKLS0tIGEvcG8vaWQuZ21vCisrKyBiL3BvL2lkLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9pZC5wbyBiL3BvL2lkLnBvCmluZGV4IDg2MDA5MGEuLmMwMjhhYTcgMTAwNjQ0Ci0tLSBhL3BvL2lkLnBvCisrKyBiL3BvL2lkLnBvCkBAIC03LDcgKzcsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS4zLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTQtMDUtMzEgMjI6MTYrMDcwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogQW5kaGlrYSBQYWRtYXdhbiA8YW5kaGlrYS5wYWRtYXdhbkBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogSW5kb25lc2lhbiA8dHJhbnNsYXRpb24tdGVhbS1pZEBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yMCw5NSArMjAsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vaXQuZ21vIGIvcG8vaXQuZ21vCmluZGV4IGM1YzM2NjUuLjUzMmFlNTAgMTAwNjQ0Ci0tLSBhL3BvL2l0LmdtbworKysgYi9wby9pdC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vaXQucG8gYi9wby9pdC5wbwppbmRleCA1MmMwNzI0Li45YWM2ZGYzIDEwMDY0NAotLS0gYS9wby9pdC5wbworKysgYi9wby9pdC5wbwpAQCAtNyw3ICs3LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDAuMTAuMTMuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwOS0wOC0xNCAwMDoxMiswMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBMdWNhIEZlcnJldHRpIDxlbGxlLnVjYUBpbmZpbml0by5pdD5cbiIKICJMYW5ndWFnZS1UZWFtOiBJdGFsaWFuIDx0cEBsaXN0cy5saW51eC5pdD5cbiIKQEAgLTE5LDk1ICsxOSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9qYS5nbW8gYi9wby9qYS5nbW8KaW5kZXggZmI2YmU2YS4uOTNkM2IzMyAxMDA2NDQKLS0tIGEvcG8vamEuZ21vCisrKyBiL3BvL2phLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9qYS5wbyBiL3BvL2phLnBvCmluZGV4IGEyNzM0ODAuLjcwYTg4ZGIgMTAwNjQ0Ci0tLSBhL3BvL2phLnBvCisrKyBiL3BvL2phLnBvCkBAIC02LDcgKzYsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC4yMS4yXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDExLTA0LTI2IDE5OjM4KzA5MDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IE1ha290byBLYXRvIDxtYWtvdG8ua3RAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEphcGFuZXNlIDx0cmFuc2xhdGlvbi10ZWFtLWphQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIwLDk1ICsyMCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9reS5nbW8gYi9wby9reS5nbW8KaW5kZXggZjM1NDFkOC4uZjBlZGE5OSAxMDA2NDQKLS0tIGEvcG8va3kuZ21vCisrKyBiL3BvL2t5LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9reS5wbyBiL3BvL2t5LnBvCmluZGV4IDZmNDlmMzAuLjlhZTI1N2MgMTAwNjQ0Ci0tLSBhL3BvL2t5LnBvCisrKyBiL3BvL2t5LnBvCkBAIC02LDcgKzYsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC41XG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA3LTExLTEzIDE3OjE2KzA2MDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IElseWFzIEJha2lyb3YgPGp1c3RfaWx5YXNAeWFob28uY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IEtpcmdoaXogPGkxOG4tdGVhbS1reS1reXJneXpAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjAsOTUgKzIwLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL2x0LmdtbyBiL3BvL2x0LmdtbwppbmRleCBjNGUxNmYxLi40YWZkYmI5IDEwMDY0NAotLS0gYS9wby9sdC5nbW8KKysrIGIvcG8vbHQuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL2x0LnBvIGIvcG8vbHQucG8KaW5kZXggOThlNzM1NC4uNWVmOTUyMyAxMDA2NDQKLS0tIGEvcG8vbHQucG8KKysrIGIvcG8vbHQucG8KQEAgLTYsNyArNiw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZC0wLjEwLjYuM1xuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAwOC0wNS0xNCAwMjoxMyswMzAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBHaW50YXV0YXMgTWlsaWF1c2thcyA8Z2ludGFzQGFrbC5sdD5cbiIKICJMYW5ndWFnZS1UZWFtOiBMaXRodWFuaWFuIDxrb21wX2x0QGtvbmZlcmVuY2lqb3MubHQ+XG4iCkBAIC0yMSw5NSArMjEsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vbHYuZ21vIGIvcG8vbHYuZ21vCmluZGV4IGUwNDI3NjAuLmZmYzMyMjIgMTAwNjQ0Ci0tLSBhL3BvL2x2LmdtbworKysgYi9wby9sdi5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vbHYucG8gYi9wby9sdi5wbwppbmRleCBlMDNkYzY3Li45Y2Y5NDJhIDEwMDY0NAotLS0gYS9wby9sdi5wbworKysgYi9wby9sdi5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuMi4xXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE0LTA0LTIwIDE1OjUyKzAzMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFJpaGFyZHMgUHJpZWRpdGlzIDxycHJpZWRpdGlzQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBMYXR2aWFuIDx0cmFuc2xhdGlvbi10ZWFtLWx2QGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTI1LDk1ICsyNSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9tdC5nbW8gYi9wby9tdC5nbW8KaW5kZXggMmI4ODY4Ny4uOTc5OWM3ZCAxMDA2NDQKLS0tIGEvcG8vbXQuZ21vCisrKyBiL3BvL210LmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9tdC5wbyBiL3BvL210LnBvCmluZGV4IDUzNDJlMTEuLjY1MGNiNDQgMTAwNjQ0Ci0tLSBhL3BvL210LnBvCisrKyBiL3BvL210LnBvCkBAIC01LDcgKzUsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQtMC4xMC44LjNcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMTAtMjYgMjA6MjcrMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTWljaGVsIEJ1Z2VqYSA8bWljaGVsYnVnZWphQHJhYmF0bWFsdGEuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IE1hbHRlc2UgPHRyYW5zbGF0aW9uLXRlYW0tbXRAbGlzdHMuc291cmNlZm9yZ2UubmV0PlxuIgpAQCAtMjEsOTUgKzIxLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL25iLmdtbyBiL3BvL25iLmdtbwppbmRleCA3NDhmODFkLi42NTA4NWQ3IDEwMDY0NAotLS0gYS9wby9uYi5nbW8KKysrIGIvcG8vbmIuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL25iLnBvIGIvcG8vbmIucG8KaW5kZXggYmU0M2RhYS4uODY3OThkYSAxMDA2NDQKLS0tIGEvcG8vbmIucG8KKysrIGIvcG8vbmIucG8KQEAgLTYsMTI2ICs2LDIxIEBACiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS41LjFcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjYuMFxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTA3LTExIDAxOjE1KzAxMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0xMi0yMiAyMTowOCswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBKb2hubnkgQS4gU29sYnUgPGpvaG5ueUBzb2xidS5uZXQ+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogTm9yd2VnaWFuIEJva21hYWwgPGkxOG4tbmJAbGlzdGVyLnBpbmcudWlvLm5vPlxuIgogIkxhbmd1YWdlOiBuYl9OT1xuIgogIk1JTUUtVmVyc2lvbjogMS4wXG4iCiAiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04XG4iCiAiQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdFxuIgotIlgtR2VuZXJhdG9yOiBQb2VkaXQgMS41LjdcbiIKKyJYLUdlbmVyYXRvcjogUG9lZGl0IDEuNi45XG4iCiAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiZm9ybWF0ZXQgYmxlIGlra2UgZm9yaGFuZGxldCBmw7hyIGdldC1mdW5rc2pvbiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lciBseWRoZW5kZWxzZXItYXVkaW9zaW5rIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBzcGlsbGUgYXYgbHlkIHZlZCBoamVscCBhdiBlbiByZWtrZSB1dGdhbmdzZWxlbWVudGVyLiBOb2VuICIKLSJtdWxpZ2UgdmFsZyBlciBvc3NzaW5rLCBwdWxzZXNpbmsgb2cgYWxzYXNpbmsuIEF1ZGlvc2lua2VuIGthbiB2w6ZyZSBlbiAiCi0iZGVsdmlzIGtvbW1hbmRva8O4IGkgc3RlZGV0IGZvciBiYXJlIGV0dCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyIGx5ZGhlbmRlbHNlci1hdWRpb3NpbmsiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiYmVza3JpdmVyIHN0YW5kYXJkIGF1ZGlvc2lua2VsZW1lbnQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIlN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NpbmsgZm9yIEx5ZC9WaWRlby1rb25mZXJhbnNlciIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zaW5rIGZvciBtdXNpa2sgb2cgZmlsbWVyIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zaW5rIGZvciBtdXNpa2sgb2cgZmlsbWVyIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NpbmsgZm9yIG11c2lrayBvZyBmaWxtZXIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3NpbmsiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBrYW4gc3BpbGxlIHZpZGVvIHZlZCBoamVscCBhdiBlbiByZWtrZSB1dGdhbmdzZWxlbWVudGVyLiBOb2VuICIKLSJtdWxpZ2UgdmFsZyBlciB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIG9nIGFhc2luay4gVmlkZW9zaW5rZW4gIgotImthbiB2w6ZyZSBlbiBkZWx2aXMga29tbWFuZG9rw7ggaSBzdGVkZXQgZm9yIGJhcmUgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3NpbmsiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgdmlkZW9zaW5rLWVsZW1lbnQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NyYyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHRhIG9wcCBseWQgdmVkIGhqZWxwIGF2IGVuIHJla2tlIGRhdGFvYmpla3Rlci4gTm9lbiBtdWxpZ2UgIgotInZhbGcgZXIgb3Nzc3JjLCBwdWxzZXNyYyBvZyBhbHNhc3JjLiBMeWRraWxkZW4ga2FuIHbDpnJlIGVuIGRlbHZpcyBrb21tYW5kb2vDuCAiCi0iaSBzdGVkZXQgZm9yIGJhcmUgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLWF1ZGlvc3JjIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgYXVkaW9zcmMtZWxlbWVudGV0IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3NyYyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHRhIG9wcCB2aWRlbyBmcmEgZW4gcmVra2UgZGF0YW9iamVrdGVyLiBOb2VuIG11bGlnZSB2YWxnIGVyICIKLSJ2NGxzcmMsIHY0bDJzcmMgb2cgdmlkZW90ZXN0c3JjLiBWaWRlb2tpbGRlbiBrYW4gdsOmcmUgZW4gZGVsdmlzIGtvbW1hbmRva8O4IGkgIgotInN0ZWRldCBmb3IgYmFyZSBldHQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW9zcmMiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGd0ZSB2aWRlb3NyYy1lbGVtZW50ZXQiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItdmlzdWFsaXNlcmluZyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBzZXR0ZSB2aXN1YWxpc2VyaW5nc3BsdWdpbnMgaSBlbiByw7hybGVkbmluZyB0aWwgw6UgZm9ydmFuZGxlICIKLSJseWRzdHLDuG1tZXIgaSB2aWRlb2JpbGRlci4gTm9lbiBtdWxpZ2UgdmFsZyBlciBnb29tLCBnb29tMmsxIG9nICIKLSJzeW5hZXN0aGVzaWEuIFZpc3VhbGlzZXJpbmdzcGx1Z2luIGthbiB2w6ZyZSBlbiBkZWx2aXMga29tbWFuZG9rw7ggaSBzdGVkZXQgIgotImZvciBiYXJlIGV0dCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLXZpc3VhbGlzZXJpbmciCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciB2YWxndCB2aXN1YWxpc2VyaW5nc2VsZW1lbnQuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1Yga3VubmUgaWtrZSBsYXN0ZSBtYWwtYmlsZGUiCiAKQEAgLTE4MSw5ICs3Niw4IEBACiBtc2dzdHIgIiIKICJGaWxwbGFzc2VyaW5nIGVyIHNhdHQgdGlsIE5VTEwsIHZlbm5saWdzdCBzZXR0IGRlbiB0aWwgZXQgZ3lsZGlnIGZpbG5hdm4iCiAKLSMsIGZ1enp5CiBtc2dpZCAiRGlnaXRhbHpvb20gZWxlbWVudCBjb3VsZG4ndCBiZSBjcmVhdGVkIgotbXNnc3RyICJEaWdpdGFsem9vbSBlbGVtZW50IGt1bm5lIGlra2Ugb3BwcmV0dGVzIgorbXNnc3RyICJEaWdpdGFsem9vbS1lbGVtZW50IGt1bm5lIGlra2Ugb3BwcmV0dGVzIgogCiBtc2dpZCAiU3VicGljdHVyZSBmb3JtYXQgd2FzIG5vdCBjb25maWd1cmVkIGJlZm9yZSBkYXRhIGZsb3ciCiBtc2dzdHIgIlVuZGVyYmlsZGVmb3JtYXQgZXIgaWtrZSBrb25maWd1cmVydCBmw7hyIGRhdGFmbHl0IgpAQCAtMjQyLDYgKzEzNiwxMTEgQEAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICJLdW5uZSBpa2tlIGZpbm5lIGRldGFsamVyIGZvciBEVkIta2FuYWwgJXMiCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXIgbHlkaGVuZGVsc2VyLWF1ZGlvc2luayIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gc3BpbGxlIGF2IGx5ZCB2ZWQgaGplbHAgYXYgZW4gcmVra2UgdXRnYW5nc2VsZW1lbnRlci4gTm9lbiAiCisjfiAibXVsaWdlIHZhbGcgZXIgb3Nzc2luaywgcHVsc2VzaW5rIG9nIGFsc2FzaW5rLiBBdWRpb3NpbmtlbiBrYW4gdsOmcmUgZW4gIgorI34gImRlbHZpcyBrb21tYW5kb2vDuCBpIHN0ZWRldCBmb3IgYmFyZSBldHQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lciBseWRoZW5kZWxzZXItYXVkaW9zaW5rIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgImJlc2tyaXZlciBzdGFuZGFyZCBhdWRpb3NpbmtlbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICJTdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zaW5rIGZvciBMeWQvVmlkZW8ta29uZmVyYW5zZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLWF1ZGlvc2luayBmb3IgbXVzaWtrIG9nIGZpbG1lciIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWF1ZGlvc2luayBmb3IgbXVzaWtrIG9nIGZpbG1lciIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zaW5rIGZvciBtdXNpa2sgb2cgZmlsbWVyIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW9zaW5rIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIHNwaWxsZSB2aWRlbyB2ZWQgaGplbHAgYXYgZW4gcmVra2UgdXRnYW5nc2VsZW1lbnRlci4gTm9lbiAiCisjfiAibXVsaWdlIHZhbGcgZXIgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBvZyBhYXNpbmsuICIKKyN+ICJWaWRlb3NpbmtlbiBrYW4gdsOmcmUgZW4gZGVsdmlzIGtvbW1hbmRva8O4IGkgc3RlZGV0IGZvciBiYXJlIGV0dCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgImJlc2tyaXZlbHNlIGZvciBzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW9zaW5rIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ3RlIHZpZGVvc2luay1lbGVtZW50LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItYXVkaW9zcmMiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiB0YSBvcHAgbHlkIHZlZCBoamVscCBhdiBlbiByZWtrZSBkYXRhb2JqZWt0ZXIuIE5vZW4gbXVsaWdlICIKKyN+ICJ2YWxnIGVyIG9zc3NyYywgcHVsc2VzcmMgb2cgYWxzYXNyYy4gTHlka2lsZGVuIGthbiB2w6ZyZSBlbiBkZWx2aXMgIgorI34gImtvbW1hbmRva8O4IGkgc3RlZGV0IGZvciBiYXJlIGV0dCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci1hdWRpb3NyYyIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZ3RlIGF1ZGlvc3JjLWVsZW1lbnRldCIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW9zcmMiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiB0YSBvcHAgdmlkZW8gZnJhIGVuIHJla2tlIGRhdGFvYmpla3Rlci4gTm9lbiBtdWxpZ2UgdmFsZyBlciAiCisjfiAidjRsc3JjLCB2NGwyc3JjIG9nIHZpZGVvdGVzdHNyYy4gVmlkZW9raWxkZW4ga2FuIHbDpnJlIGVuIGRlbHZpcyAiCisjfiAia29tbWFuZG9rw7ggaSBzdGVkZXQgZm9yIGJhcmUgZXR0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJiZXNrcml2ZWxzZSBmb3Igc3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVvc3JjIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxndGUgdmlkZW9zcmMtZWxlbWVudGV0IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpc3VhbGlzZXJpbmciCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gc2V0dGUgdmlzdWFsaXNlcmluZ3NwbHVnaW5zIGkgZW4gcsO4cmxlZG5pbmcgdGlsIMOlIGZvcnZhbmRsZSAiCisjfiAibHlkc3Ryw7htbWVyIGkgdmlkZW9iaWxkZXIuIE5vZW4gbXVsaWdlIHZhbGcgZXIgZ29vbSwgZ29vbTJrMSBvZyAiCisjfiAic3luYWVzdGhlc2lhLiBWaXN1YWxpc2VyaW5nc3BsdWdpbiBrYW4gdsOmcmUgZW4gZGVsdmlzIGtvbW1hbmRva8O4IGkgc3RlZGV0ICIKKyN+ICJmb3IgYmFyZSBldHQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAiYmVza3JpdmVsc2UgZm9yIHN0YW5kYXJkIEdTdHJlYW1lci12aXN1YWxpc2VyaW5nIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNrcml2ZXIgdmFsZ3QgdmlzdWFsaXNlcmluZ3NlbGVtZW50LiIKKwogI34gbXNnaWQgIkNvdWxkbid0IGdldCB0aGUgTWFuaWZlc3QncyBVUkkiCiAjfiBtc2dzdHIgIkt1bm5lIGlra2UgaGVudGUgTWFuaWZlc3QtbmV0dGFkcmVzc2VuLiIKIApkaWZmIC0tZ2l0IGEvcG8vbmwuZ21vIGIvcG8vbmwuZ21vCmluZGV4IDM0NTU2NDguLmQyNzcwMmMgMTAwNjQ0Ci0tLSBhL3BvL25sLmdtbworKysgYi9wby9ubC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vbmwucG8gYi9wby9ubC5wbwppbmRleCAwZGM5M2RjLi5mN2NiZTRmIDEwMDY0NAotLS0gYS9wby9ubC5wbworKysgYi9wby9ubC5wbwpAQCAtMiwxMyArMiwxMyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMDQsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAjCiAjIFRoaXMgZmlsZSBpcyBkaXN0cmlidXRlZCB1bmRlciB0aGUgc2FtZSBsaWNlbnNlIGFzIHRoZSBnc3QtcGx1Z2lucy1iYWQgcGFja2FnZS4KLSMgRnJlZWsgZGUgS3J1aWpmIDxmLmRlLmtydWlqZkBnbWFpbC5jb20+LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDExLCAyMDEzLCAyMDE0LCAyMDE1LgorIyBGcmVlayBkZSBLcnVpamYgPGYuZGUua3J1aWpmQGdtYWlsLmNvbT4sIDIwMDcsIDIwMDgsIDIwMDksIDIwMTEsIDIwMTMsIDIwMTQsIDIwMTUsIDIwMTYuCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjcuMlxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEwLTE3IDEyOjM1KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNi0wMi0yMCAxMjozNSswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBGcmVlayBkZSBLcnVpamYgPGYuZGUua3J1aWpmQGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBEdXRjaCA8dmVydGFsaW5nQHZyaWpzY2hyaWZ0Lm9yZz5cbiIKICJMYW5ndWFnZTogbmxcbiIKQEAgLTIxLDExMyArMjEsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJmb3JtYWF0IGlzIG5pZXQgb25kZXJoYW5kZWxkIHbDs8OzciBnZXQtZnVuY3RpZSIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgInN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgZ2VsdWlkc2dlYmV1cnRlbmlzc2VuIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBnZWx1aWQgYWZzcGVsZW4gbWV0IGVsayBhYW50YWwgdWl0dm9lcmVsZW1lbnRlbi4gRW5pZ2UgIgotIm1vZ2VsaWprZSBrZXV6ZXMgemlqbiBvc3NzaW5rLCBwdWxzZXNpbmsgZW4gYWxzYXNpbmsuIERlIGF1ZGlvc2luayBrYW4gZWVuICIKLSJnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gaW4gcGxhYXRzIHZhbiBnZXdvb24gw6nDqW4gZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBnZWx1aWRzZ2ViZXVydGVuaXNzZW4iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSBhdWRpb3NpbmstZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBhdWRpby92aWRlb2NvbmZlcmVudGllcyIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLSJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgYXVkaW8vdmlkZW9jb25mZXJlbnRpZXMiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgInN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgbXV6aWVrIGVuIGZpbG0iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgbXV6aWVrIGVuIGZpbG0iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgInN0YW5kYWFyZCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHZpZGVvIGFmc3BlbGVuIG1ldCBlbGsgYWFudGFsIHVpdHZvZXJlbGVtZW50ZW4gRW5pZ2UgbW9nZWxpamtlICIKLSJrZXV6ZXMgemlqbiB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGVuIGFhc2luay4gRGUgdmlkZW9zaW5rICIKLSJrYW4gZWVuIGdlZGVlbHRlbGlqa2UgcGlwZWxpbmUgemlqbiBpbiBwbGFhdHMgdmFuIGdld29vbiDDqcOpbiBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb3NpbmsiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSB2aWRlb3NpbmstZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb2Jyb24iCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBnZWx1aWQgb3BuZW1lbiBtZXQgZWxrIGFhbnRhbCBpbnZvZXJlbGVtZW50ZW4uIEVuaWdlIG1vZ2VsaWprZSAiCi0ia2V1emVzIHppam4gb3Nzc3JjLCBwdWxzZXNyYyBlbiBhbHNhc3JjLiBEZSBhdWRpb2Jyb24ga2FuIGVlbiBnZWRlZWx0ZWxpamtlICIKLSJwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9icm9uIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSBhdWRpb2Jyb24tZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb2Jyb24iCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiB2aWRlbyBvcG5lbWVuIG1ldCBlbGsgYWFudGFsIGludm9lcmVsZW1lbnRlbi4gRW5pZ2UgbW9nZWxpamtlICIKLSJrZXV6ZXMgemlqbiB2NGxzcmMsIHY0bDJzcmMgZW4gdmlkZW90ZXN0c3JjLiBEZSB2aWRlb2Jyb24ga2FuIGVlbiAiCi0iZ2VkZWVsdGVsaWprZSBwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgdmlkZW9icm9uIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSB2aWRlb2Jyb24tZWxlbWVudC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIHZpc3VhbGlzYXRpZSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiB2aXN1YWxpc2F0aWVwbHVnLWlucyBpbiBlZW4gcGlwZWxpbmUgc3RvcHBlbiBvbSBhdWRpb3N0cmVhbXMgIgotInRlIHRyYW5zZm9ybWVyZW4gaW4gdmlkZW9mcmFtZXMuIEVuaWdlIG1vZ2VsaWprZSBrZXV6ZXMgemlqbiBnb29tLCBnb29tMmsxICIKLSJlbiBzeW5hZXN0aGVzaWEuIERlIHZpc3VhbGlzYXRpZXBsdWctaW4ga2FuIGVlbiBnZWRlZWx0ZWxpamtlIHBpcGVsaW5lIHppam4gIgotImluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciB2aXN1YWxpc2F0aWUiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIkJlc2NocmlqZnQgaGV0IGdlc2VsZWN0ZWVyZGUgdmlzdWFsaXNhdGllLWVsZW1lbnQuIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICJPcGVuQ1Yga29uIHNqYWJsb29uYWZiZWVsZGluZyBuaWV0IGxhZGVuIgogCkBAIC0yNDgsNiArMTQxLDExNSBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIktvbiBkZSBkZXRhaWxzIHZvb3IgaGV0IERWQi1rYW5hYWwgJXMgbmlldCB2aW5kZW4iCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvc2luayB2b29yIGdlbHVpZHNnZWJldXJ0ZW5pc3NlbiIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gZ2VsdWlkIGFmc3BlbGVuIG1ldCBlbGsgYWFudGFsIHVpdHZvZXJlbGVtZW50ZW4uIEVuaWdlICIKKyN+ICJtb2dlbGlqa2Uga2V1emVzIHppam4gb3Nzc2luaywgcHVsc2VzaW5rIGVuIGFsc2FzaW5rLiBEZSBhdWRpb3Npbmsga2FuICIKKyN+ICJlZW4gZ2VkZWVsdGVsaWprZSBwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgIiIKKyN+ICJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgZ2VsdWlkc2dlYmV1cnRlbmlzc2VuIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2NocmlqZnQgaGV0IGdlc2VsZWN0ZWVyZGUgYXVkaW9zaW5rLWVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgInN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9zaW5rIHZvb3IgYXVkaW8vdmlkZW9jb25mZXJlbnRpZXMiCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAiYmVzY2hyaWp2aW5nIHZhbiBzdGFuZGFhcmQgR1N0cmVhbWVyIGF1ZGlvc2luayB2b29yIGF1ZGlvLyIKKyN+ICJ2aWRlb2NvbmZlcmVudGllcyIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBtdXppZWsgZW4gZmlsbSIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb3Npbmsgdm9vciBtdXppZWsgZW4gZmlsbSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb3NpbmsiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gdmlkZW8gYWZzcGVsZW4gbWV0IGVsayBhYW50YWwgdWl0dm9lcmVsZW1lbnRlbiBFbmlnZSAiCisjfiAibW9nZWxpamtlIGtldXplcyB6aWpuIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgZW4gYWFzaW5rLiBEZSAiCisjfiAidmlkZW9zaW5rIGthbiBlZW4gZ2VkZWVsdGVsaWprZSBwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luICIKKyN+ICJlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb3NpbmsiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSB2aWRlb3NpbmstZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciBhdWRpb2Jyb24iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiBnZWx1aWQgb3BuZW1lbiBtZXQgZWxrIGFhbnRhbCBpbnZvZXJlbGVtZW50ZW4uIEVuaWdlICIKKyN+ICJtb2dlbGlqa2Uga2V1emVzIHppam4gb3Nzc3JjLCBwdWxzZXNyYyBlbiBhbHNhc3JjLiBEZSBhdWRpb2Jyb24ga2FuIGVlbiAiCisjfiAiZ2VkZWVsdGVsaWprZSBwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgYXVkaW9icm9uIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSBhdWRpb2Jyb24tZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAic3RhbmRhYXJkIEdTdHJlYW1lciB2aWRlb2Jyb24iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiB2aWRlbyBvcG5lbWVuIG1ldCBlbGsgYWFudGFsIGludm9lcmVsZW1lbnRlbi4gRW5pZ2UgIgorI34gIm1vZ2VsaWprZSBrZXV6ZXMgemlqbiB2NGxzcmMsIHY0bDJzcmMgZW4gdmlkZW90ZXN0c3JjLiBEZSB2aWRlb2Jyb24ga2FuICIKKyN+ICJlZW4gZ2VkZWVsdGVsaWprZSBwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJiZXNjaHJpanZpbmcgdmFuIHN0YW5kYWFyZCBHU3RyZWFtZXIgdmlkZW9icm9uIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVzY2hyaWpmdCBoZXQgZ2VzZWxlY3RlZXJkZSB2aWRlb2Jyb24tZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJzdGFuZGFhcmQgR1N0cmVhbWVyIHZpc3VhbGlzYXRpZSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGthbiB2aXN1YWxpc2F0aWVwbHVnLWlucyBpbiBlZW4gcGlwZWxpbmUgc3RvcHBlbiBvbSAiCisjfiAiYXVkaW9zdHJlYW1zIHRlIHRyYW5zZm9ybWVyZW4gaW4gdmlkZW9mcmFtZXMuIEVuaWdlIG1vZ2VsaWprZSBrZXV6ZXMgemlqbiAiCisjfiAiZ29vbSwgZ29vbTJrMSBlbiBzeW5hZXN0aGVzaWEuIERlIHZpc3VhbGlzYXRpZXBsdWctaW4ga2FuIGVlbiAiCisjfiAiZ2VkZWVsdGVsaWprZSBwaXBlbGluZSB6aWpuIGluIHBsYWF0cyB2YW4gZ2V3b29uIMOpw6luIGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImJlc2NocmlqdmluZyB2YW4gc3RhbmRhYXJkIEdTdHJlYW1lciB2aXN1YWxpc2F0aWUiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2NocmlqZnQgaGV0IGdlc2VsZWN0ZWVyZGUgdmlzdWFsaXNhdGllLWVsZW1lbnQuIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAiRGUgVVJJIHZhbiBoZXQgbWFuaWZlc3QgdmVya3JpamdlbiBsdWt0IG5pZXQiCiAKZGlmZiAtLWdpdCBhL3BvL29yLmdtbyBiL3BvL29yLmdtbwppbmRleCAzY2RiNjc1Li42ZDViNThmIDEwMDY0NAotLS0gYS9wby9vci5nbW8KKysrIGIvcG8vb3IuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL29yLnBvIGIvcG8vb3IucG8KaW5kZXggNDE4ZGM5OS4uZjFlNWQ3ZiAxMDA2NDQKLS0tIGEvcG8vb3IucG8KKysrIGIvcG8vb3IucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLTAuOC4zXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDA0LTA5LTI3IDEzOjMyKzA1MzBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEdvcmEgTW9oYW50eSA8Z29yYV9tb2hhbnR5QHlhaG9vLmNvLmluPlxuIgogIkxhbmd1YWdlLVRlYW06IE9yaXlhIDxnb3JhX21vaGFudHlAeWFob28uY28uaW4+XG4iCkBAIC0yMCw5NSArMjAsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vcGwuZ21vIGIvcG8vcGwuZ21vCmluZGV4IGU4YTQ5MDYuLmI5MTFiYjQgMTAwNjQ0Ci0tLSBhL3BvL3BsLmdtbworKysgYi9wby9wbC5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vcGwucG8gYi9wby9wbC5wbwppbmRleCA0YjVkYWQ4Li44Mjc5ZGViIDEwMDY0NAotLS0gYS9wby9wbC5wbworKysgYi9wby9wbC5wbwpAQCAtNiw3ICs2LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEwLTE1IDIwOjUwKzAyMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IEpha3ViIEJvZ3VzeiA8cWJvb3NoQHBsZC1saW51eC5vcmc+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogUG9saXNoIDx0cmFuc2xhdGlvbi10ZWFtLXBsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTE4LDExNyArMTgsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJmb3JtYXQgbmllIHpvc3RhxYIgd3luZWdvY2pvd2FueSBwcnplZCBmdW5rY2rEhSBwb2JyYW5pYSIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgImRvbXnFm2xueSBlbGVtZW50IEdTdHJlYW1lcmEgcG9jaMWCYW5pYWrEhWN5IHpkYXJ6ZW5pYSBkxbp3acSZa293ZSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBtb8W8ZSBvZHR3YXJ6YcSHIGTFundpxJlrIHByenkgdcW8eWNpdSBkb3dvbG5laiBsaWN6YnkgZWxlbWVudMOzdyAiCi0id3lqxZtjaW93eWNoLiBOaWVrdMOzcmUgeiBtb8W8bGl3b8WbY2kgdG8gb3Nzc2luaywgcHVsc2VzaW5rIG9yYXogYWxzYXNpbmsuICIKLSJXeWrFm2NpZSBkxbp3acSZa3UgbW/FvGUgYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCBwb2plZHluY3plZ28gZWxlbWVudHUuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLSJvcGlzIGRvbXnFm2xuZWdvIGVsZW1lbnR1IEdTdHJlYW1lcmEgcG9jaMWCYW5pYWrEhWNlZ28gemRhcnplbmlhIGTFundpxJlrb3dlIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIk9waXN1amUgd3licmFueSBlbGVtZW50IHd5asWbY2lvd3kgZMW6d2nEmWt1LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0iZG9tecWbbG55IGVsZW1lbnQgR1N0cmVhbWVyYSBwb2NoxYJhbmlhasSFY3kgZMW6d2nEmWsgZGxhIGtvbmZlcmVuY2ppIGF1ZGlvL3ZpZGVvIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotIm9waXMgZG9tecWbbG5lZ28gZWxlbWVudHUgd3lqxZtjaW93ZWdvIGTFundpxJlrdSBHU3RyZWFtZXJhIGRsYSBrb25mZXJlbmNqaSAiCi0iYXVkaW8vdmlkZW8iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgImRvbXnFm2xueSBlbGVtZW50IHd5asWbY2lvd3kgZMW6d2nEmWt1IEdTdHJlYW1lcmEgZGxhIG11enlraSBpIGZpbG3Ds3ciCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0ib3BpcyBkb215xZtsbmVnbyBlbGVtZW50dSB3eWrFm2Npb3dlZ28gZMW6d2nEmWt1IEdTdHJlYW1lcmEgZGxhIG11enlraSBpIGZpbG3Ds3ciCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgImRvbXnFm2xueSBlbGVtZW50IEdTdHJlYW1lcmEgcG9jaMWCYW5pYWrEhWN5IG9icmF6IgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgbW/FvGUgb2R0d2FyemHEhyBvYnJheiBwcnp5IHXFvHljaXUgZG93b2xuZWogbGljemJ5IGVsZW1lbnTDs3cgIgotInd5asWbY2lvd3ljaC4gTmlla3TDs3JlIHogbW/FvGxpd2/Fm2NpIHRvIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgIgotIm9yYXogYWFzaW5rLiBXeWrFm2NpZSBvYnJhenUgbW/FvGUgYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCAiCi0icG9qZWR5bmN6ZWdvIGVsZW1lbnR1LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIm9waXMgZG9tecWbbG5lZ28gZWxlbWVudHUgR1N0cmVhbWVyYSBwb2NoxYJhbmlhasSFY2VnbyBvYnJheiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICJPcGlzdWplIHd5YnJhbnkgZWxlbWVudCB3eWrFm2Npb3d5IG9icmF6dS4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiZG9tecWbbG5lIMW6csOzZMWCbyBkxbp3acSZa3UgR1N0cmVhbWVyYSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgbW/FvGUgbmFncnl3YcSHIGTFundpxJlrIHogZG93b2xuZWogbGljemJ5IGVsZW1lbnTDs3cgd2VqxZtjaW93eWNoLiAiCi0iTmlla3TDs3JlIG1vxbxsaXdvxZtjaSB0byBvc3NzcmMsIHB1bHNlc3JjIG9yYXogYWxzYXNyYy4gxblyw7NkxYJvIGTFundpxJlrdSBtb8W8ZSAiCi0iYnnEhyBjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCBwb2plZHluY3plZ28gZWxlbWVudHUuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJvcGlzIGRvbXnFm2xuZWdvIMW6csOzZMWCYSBkxbp3acSZa3UgR1N0cmVhbWVyYSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIk9waXN1amUgd3licmFueSBlbGVtZW50IMW6csOzZMWCb3d5IGTFundpxJlrdS4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiZG9tecWbbG5lIMW6csOzZMWCbyBvYnJhenUgR1N0cmVhbWVyYSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgbW/FvGUgbmFncnl3YcSHIG9icmF6IHogZG93b2xuZWogbGljemJ5IGVsZW1lbnTDs3cgd2VqxZtjaW93eWNoLiAiCi0iTmlla3TDs3JlIG1vxbxsaXdvxZtjaSB0byB2NGxzcmMsIHY0bDJzcmMgb3JheiB2aWRlb3Rlc3RzcmMuIMW5csOzZMWCbyBvYnJhenUgbW/FvGUgIgotImJ5xIcgY3rEmcWbY2lvd3ltIHBvdG9raWVtIHphbWlhc3QgcG9qZWR5bmN6ZWdvIGVsZW1lbnR1LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAib3BpcyBkb215xZtsbmVnbyDFunLDs2TFgmEgb2JyYXp1IEdTdHJlYW1lcmEiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJPcGlzdWplIHd5YnJhbnkgZWxlbWVudCDFunLDs2TFgm93eSBvYnJhenUuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiZG9tecWbbG5hIHdpenVhbGl6YWNqYSBHU3RyZWFtZXJhIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgbW/FvGUgdW1pZXN6Y3phxIcgd3R5Y3praSB3aXp1YWxpenVqxIVjZSB3IHBvdG9rdSB3IGNlbHUgIgotInByemVrc3p0YcWCY2FuaWEgc3RydW1pZW5pIGTFundpxJlrb3d5Y2ggbmEga2xhdGtpIG9icmF6dS4gTmlla3TDs3JlIG1vxbxsaXdvxZtjaSAiCi0idG8gZ29vbSwgZ29vbTJrMSBvcmF6IHN5bmFlc3RoZXNpYS4gV3R5Y3prYSB3aXp1YWxpenVqxIVjYSBtb8W8ZSBiecSHICIKLSJjesSZxZtjaW93eW0gcG90b2tpZW0gemFtaWFzdCBwb2plZHluY3plZ28gZWxlbWVudHUuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIm9waXMgZG9tecWbbGVnbyBlbGVtZW50dSB3aXp1YWxpenVqxIVjZWdvIEdTdHJlYW1lcmEiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIk9waXN1amUgd3licmFueSBlbGVtZW50IHdpenVhbGl6dWrEhWN5LiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiT2Rjenl0IG9icmF6dSB3em9yY2EgcHJ6ZXogT3BlbkNWIG5pZSBwb3dpw7NkxYIgc2nEmSIKIApAQCAtMjQ3LDMgKzEzNiwxMTcgQEAKICMsIGMtZm9ybWF0CiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAiTmllIHVkYcWCbyBzacSZIG9kbmFsZcW6xIcgc3pjemVnw7PFgsOzdyBkbGEga2FuYcWCdSBEVkIgJXMiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJkb215xZtsbnkgZWxlbWVudCBHU3RyZWFtZXJhIHBvY2jFgmFuaWFqxIVjeSB6ZGFyemVuaWEgZMW6d2nEmWtvd2UiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgbW/FvGUgb2R0d2FyemHEhyBkxbp3acSZayBwcnp5IHXFvHljaXUgZG93b2xuZWogbGljemJ5IGVsZW1lbnTDs3cgIgorI34gInd5asWbY2lvd3ljaC4gTmlla3TDs3JlIHogbW/FvGxpd2/Fm2NpIHRvIG9zc3NpbmssIHB1bHNlc2luayBvcmF6IGFsc2FzaW5rLiAiCisjfiAiV3lqxZtjaWUgZMW6d2nEmWt1IG1vxbxlIGJ5xIcgY3rEmcWbY2lvd3ltIHBvdG9raWVtIHphbWlhc3QgcG9qZWR5bmN6ZWdvICIKKyN+ICJlbGVtZW50dS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiIgorI34gIm9waXMgZG9tecWbbG5lZ28gZWxlbWVudHUgR1N0cmVhbWVyYSBwb2NoxYJhbmlhasSFY2VnbyB6ZGFyemVuaWEgZMW6d2nEmWtvd2UiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiT3Bpc3VqZSB3eWJyYW55IGVsZW1lbnQgd3lqxZtjaW93eSBkxbp3acSZa3UuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICJkb215xZtsbnkgZWxlbWVudCBHU3RyZWFtZXJhIHBvY2jFgmFuaWFqxIVjeSBkxbp3acSZayBkbGEga29uZmVyZW5jamkgYXVkaW8vIgorI34gInZpZGVvIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gIm9waXMgZG9tecWbbG5lZ28gZWxlbWVudHUgd3lqxZtjaW93ZWdvIGTFundpxJlrdSBHU3RyZWFtZXJhIGRsYSBrb25mZXJlbmNqaSAiCisjfiAiYXVkaW8vdmlkZW8iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgImRvbXnFm2xueSBlbGVtZW50IHd5asWbY2lvd3kgZMW6d2nEmWt1IEdTdHJlYW1lcmEgZGxhIG11enlraSBpIGZpbG3Ds3ciCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICIiCisjfiAib3BpcyBkb215xZtsbmVnbyBlbGVtZW50dSB3eWrFm2Npb3dlZ28gZMW6d2nEmWt1IEdTdHJlYW1lcmEgZGxhIG11enlraSBpICIKKyN+ICJmaWxtw7N3IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJkb215xZtsbnkgZWxlbWVudCBHU3RyZWFtZXJhIHBvY2jFgmFuaWFqxIVjeSBvYnJheiIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIG1vxbxlIG9kdHdhcnphxIcgb2JyYXogcHJ6eSB1xbx5Y2l1IGRvd29sbmVqIGxpY3pieSBlbGVtZW50w7N3ICIKKyN+ICJ3eWrFm2Npb3d5Y2guIE5pZWt0w7NyZSB6IG1vxbxsaXdvxZtjaSB0byB4dmltYWdlc2luaywgeGltYWdlc2luaywgIgorI34gInNkbHZpZGVvc2luayBvcmF6IGFhc2luay4gV3lqxZtjaWUgb2JyYXp1IG1vxbxlIGJ5xIcgY3rEmcWbY2lvd3ltIHBvdG9raWVtICIKKyN+ICJ6YW1pYXN0IHBvamVkeW5jemVnbyBlbGVtZW50dS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJvcGlzIGRvbXnFm2xuZWdvIGVsZW1lbnR1IEdTdHJlYW1lcmEgcG9jaMWCYW5pYWrEhWNlZ28gb2JyYXoiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiT3Bpc3VqZSB3eWJyYW55IGVsZW1lbnQgd3lqxZtjaW93eSBvYnJhenUuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgImRvbXnFm2xuZSDFunLDs2TFgm8gZMW6d2nEmWt1IEdTdHJlYW1lcmEiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIG1vxbxlIG5hZ3J5d2HEhyBkxbp3acSZayB6IGRvd29sbmVqIGxpY3pieSBlbGVtZW50w7N3IHdlasWbY2lvd3ljaC4gIgorI34gIk5pZWt0w7NyZSBtb8W8bGl3b8WbY2kgdG8gb3Nzc3JjLCBwdWxzZXNyYyBvcmF6IGFsc2FzcmMuIMW5csOzZMWCbyBkxbp3acSZa3UgbW/FvGUgIgorI34gImJ5xIcgY3rEmcWbY2lvd3ltIHBvdG9raWVtIHphbWlhc3QgcG9qZWR5bmN6ZWdvIGVsZW1lbnR1LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAib3BpcyBkb215xZtsbmVnbyDFunLDs2TFgmEgZMW6d2nEmWt1IEdTdHJlYW1lcmEiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJPcGlzdWplIHd5YnJhbnkgZWxlbWVudCDFunLDs2TFgm93eSBkxbp3acSZa3UuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgImRvbXnFm2xuZSDFunLDs2TFgm8gb2JyYXp1IEdTdHJlYW1lcmEiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIG1vxbxlIG5hZ3J5d2HEhyBvYnJheiB6IGRvd29sbmVqIGxpY3pieSBlbGVtZW50w7N3IHdlasWbY2lvd3ljaC4gIgorI34gIk5pZWt0w7NyZSBtb8W8bGl3b8WbY2kgdG8gdjRsc3JjLCB2NGwyc3JjIG9yYXogdmlkZW90ZXN0c3JjLiDFuXLDs2TFgm8gb2JyYXp1ICIKKyN+ICJtb8W8ZSBiecSHIGN6xJnFm2Npb3d5bSBwb3Rva2llbSB6YW1pYXN0IHBvamVkeW5jemVnbyBlbGVtZW50dS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgIm9waXMgZG9tecWbbG5lZ28gxbpyw7NkxYJhIG9icmF6dSBHU3RyZWFtZXJhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiT3Bpc3VqZSB3eWJyYW55IGVsZW1lbnQgxbpyw7NkxYJvd3kgb2JyYXp1LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImRvbXnFm2xuYSB3aXp1YWxpemFjamEgR1N0cmVhbWVyYSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIG1vxbxlIHVtaWVzemN6YcSHIHd0eWN6a2kgd2l6dWFsaXp1asSFY2UgdyBwb3Rva3UgdyBjZWx1ICIKKyN+ICJwcnpla3N6dGHFgmNhbmlhIHN0cnVtaWVuaSBkxbp3acSZa293eWNoIG5hIGtsYXRraSBvYnJhenUuIE5pZWt0w7NyZSAiCisjfiAibW/FvGxpd2/Fm2NpIHRvIGdvb20sIGdvb20yazEgb3JheiBzeW5hZXN0aGVzaWEuIFd0eWN6a2Egd2l6dWFsaXp1asSFY2EgbW/FvGUgIgorI34gImJ5xIcgY3rEmcWbY2lvd3ltIHBvdG9raWVtIHphbWlhc3QgcG9qZWR5bmN6ZWdvIGVsZW1lbnR1LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICJvcGlzIGRvbXnFm2xlZ28gZWxlbWVudHUgd2l6dWFsaXp1asSFY2VnbyBHU3RyZWFtZXJhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICJPcGlzdWplIHd5YnJhbnkgZWxlbWVudCB3aXp1YWxpenVqxIVjeS4iCmRpZmYgLS1naXQgYS9wby9wdF9CUi5nbW8gYi9wby9wdF9CUi5nbW8KaW5kZXggZjBhMzA2ZC4uZjNiYmRjNiAxMDA2NDQKLS0tIGEvcG8vcHRfQlIuZ21vCisrKyBiL3BvL3B0X0JSLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9wdF9CUi5wbyBiL3BvL3B0X0JSLnBvCmluZGV4IGUwMjJlMzMuLmJjMzBkY2UgMTAwNjQ0Ci0tLSBhL3BvL3B0X0JSLnBvCisrKyBiL3BvL3B0X0JSLnBvCkBAIC02LDEwICs2LDEwIEBACiAjCiBtc2dpZCAiIgogbXNnc3RyICIiCi0iUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQtMS40LjFcbiIKKyJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZC0xLjcuMVxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKLSJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTAyLTAxIDE4OjI0LTAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCisiUE8tUmV2aXNpb24tRGF0ZTogMjAxNS0xMi0yOCAxNzowMy0wMjAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBGYWJyw61jaW8gR29kb3kgPHNrYXJsbG90QGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBCcmF6aWxpYW4gUG9ydHVndWVzZSA8bGRwYnItdHJhbnNsYXRpb25AbGlzdHMuc291cmNlZm9yZ2UuIgogIm5ldD5cbiIKQEAgLTIyLDEyMiArMjIsOCBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICJPIGZvcm1hdG8gbsOjbyBmb2kgbmVnb2NpYWRvIGFudGVzIGRhIGNoYW1hZGEgZGEgZnVuw6fDo28iCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICJhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBldmVudG9zIGRlIHNvbSIKLQotIywgZnV6enkKLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJPIEdTdHJlYW1lciBwb2RlIHJlcHJvZHV6aXIgw6F1ZGlvIHV0aWxpemFuZG8gcXVhbHF1ZXIgcXVhbnRpZGFkZSBkZSAiCi0iZWxlbWVudG9zIGRlIHNhw61kYS4gQWxndW1hcyBkYXMgb3DDp8O1ZXMgcG9zc8OtdmVpcyBzw6NvIG9zc3NpbmssIHB1bHNlc2luayBlICIKLSJhbHNhc2luay4gTyBhdWRpb3NpbmsgcG9kZSBzZXIgdW1hIGZpbGEgZGUgcHJvY2Vzc2FtZW50byBwYXJjaWFsIGVtIHZleiBkZSAiCi0iYXBlbmFzIHVtIGVsZW1lbnRvLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0iZGVzY3Jpw6fDo28gcGFyYSBvIGF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIGV2ZW50b3MgZGUgc29tIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkRlc2NyZXZlIG8gZWxlbWVudG8gYXVkaW9zaW5rIHNlbGVjaW9uYWRvLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICJhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBDb25mZXLDqm5jaWEgZGUgw4F1ZGlvIGUgVsOtZGVvIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotImRlc2NyacOnw6NvIGRvIGF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIENvbmZlcsOqbmNpYSBkZSDDgXVkaW8gZSAiCi0iVsOtZGVvIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBNw7pzaWNhcyBlIEZpbG1lcyIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLSJkZXNjcmnDp8OjbyBwYXJhIG8gYXVkaW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIHBhcmEgTcO6c2ljYXMgZSBGaWxtZXMiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgInZpZGVvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iTyBHU3RyZWFtZXIgcG9kZSByZXByb2R1emlyIHbDrWRlbyB1dGlsaXphbmRvIHF1YWxxdWVyIHF1YW50aWRhZGUgZGUgIgotImVsZW1lbnRvcyBkZSBzYcOtZGEuIEFsZ3VtYXMgZGFzIG9ww6fDtWVzIHBvc3PDrXZlaXMgc8OjbyB4dmltYWdlc2luaywgIgotInhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBlIGFhc2luay4gTyB2aWRlb3NpbmsgcG9kZSBzZXIgdW1hIGZpbGEgZGUgIgotInByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgYXBlbmFzIHVtIGVsZW1lbnRvLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgImRlc2NyacOnw6NvIHBhcmEgbyB2aWRlb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiRGVzY3JldmUgbyBlbGVtZW50byB2aWRlb3Npbmsgc2VsZWNpb25hZG8uIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgImF1ZGlvc3JjIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIk8gR1N0cmVhbWVyIHBvZGUgZ3JhdmFyIMOhdWRpbyB1dGlsaXphbmRvIHF1YWxxdWVyIHF1YW50aWRhZGUgZGUgZWxlbWVudG9zIGRlICIKLSJlbnRyYWRhLiBBbGd1bWFzIGRhcyBvcMOnw7VlcyBwb3Nzw612ZWlzIHPDo28gb3Nzc3JjLCBwdWxzZXNyYyBlIGFsc2FzcmMuIEEgIgotImZvbnRlIGRlIMOhdWRpbyBwb2RlIHNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6IGRlIGFwZW5hcyAiCi0idW0gZWxlbWVudG8uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICJkZXNjcmnDp8OjbyBwYXJhIG8gYXVkaW9zcmMgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIGF1ZGlvc3JjIHNlbGVjaW9uYWRvLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJ2aWRlb3NyYyBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJPIEdTdHJlYW1lciBwb2RlIGdyYXZhciB2w61kZW8gZGUgcXVhbHF1ZXIgcXVhbnRpZGFkZSBkZSBlbGVtZW50b3MgZGUgIgotImVudHJhZGEuIEFsZ3VtYXMgZGFzIG9ww6fDtWVzIHBvc3PDrXZlaXMgc8OjbyB2NGxzcmMsIHY0bDJzcmMgZSB2aWRlb3Rlc3RzcmMuIEEgIgotImZvbnRlIGRlIHbDrWRlbyBwb2RlIHNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6IGRlIGFwZW5hcyAiCi0idW0gZWxlbWVudG8uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJkZXNjcmnDp8OjbyBwYXJhIG8gdmlkZW9zcmMgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIHZpZGVvc3JjIHNlbGVjaW9uYWRvLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgInZpc3VhbGl6YcOnw6NvIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRhIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJPIEdTdHJlYW1lciBwb2RlIGNvbG9jYXIgcGx1Z2lucyBkZSB2aXN1YWxpemHDp8OjbyBudW1hIGZpbGEgZGUgcHJvY2Vzc2FtZW50byAiCi0icGFyYSB0cmFuc2Zvcm1hciBmbHV4b3MgZGUgw6F1ZGlvIGVtIHF1YWRyb3MgZGUgdsOtZGVvLiBBbGd1bWFzIGRhcyBvcMOnw7VlcyAiCi0icG9zc8OtdmVpcyBzw6NvIGdvb20sIGdvb20yazEgZSBzeW5hZXN0aGVzaWEuIE8gcGx1Z2luIGRlIHZpc3VhbGl6YcOnw6NvIHBvZGUgIgotInNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6IGRlIGFwZW5hcyB1bSBlbGVtZW50by4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiZGVzY3Jpw6fDo28gZGEgdmlzdWFsaXphw6fDo28gZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZGEiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIkRlc2NyZXZlIG8gZWxlbWVudG8gZGUgdmlzdWFsaXphw6fDo28gc2VsZWNpb25hZG8uIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgotbXNnc3RyICIiCittc2dzdHIgIk8gT3BlbkNWIGZhbGhvdSBhbyBjYXJyZWdhciBhIGltYWdlbSBtb2RlbG8iCiAKIG1zZ2lkICJDb3VsZCBub3QgcmVhZCB0aXRsZSBpbmZvcm1hdGlvbiBmb3IgRFZELiIKIG1zZ3N0ciAiTsOjbyBmb2kgcG9zc8OtdmVsIGxlciBhcyBpbmZvcm1hw6fDtWVzIGRlIHTDrXR1bG8gZG8gRFZELiIKQEAgLTE5NCw3ICs4MCw3IEBACiAiQSBsb2NhbGl6YcOnw6NvIGRvIGFycXVpdm8gZXN0w6EgTlVMQSwgZmF2b3IgZGVmaW5pciB1bSBub21lIGRlIGFycXVpdm8gdsOhbGlkbyIKIAogbXNnaWQgIkRpZ2l0YWx6b29tIGVsZW1lbnQgY291bGRuJ3QgYmUgY3JlYXRlZCIKLW1zZ3N0ciAiIgorbXNnc3RyICJPIGVsZW1lbnRvIERpZ2l0YWx6b29tIG7Do28gcMO0ZGUgc2VyIGNyaWFkbyIKIAogbXNnaWQgIlN1YnBpY3R1cmUgZm9ybWF0IHdhcyBub3QgY29uZmlndXJlZCBiZWZvcmUgZGF0YSBmbG93IgogbXNnc3RyICJPIGZvcm1hdG8gZGUgc3ViaW1hZ2VtIG7Do28gZm9pIGNvbmZpZ3VyYWRvIGFudGVzIGRvIGZsdXhvIGRlIGRhZG9zIgpAQCAtMjU4LDYgKzE0NCwxMjEgQEAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICJOw6NvIGZvaSBwb3Nzw612ZWwgZW5jb250cmFyIGRldGFsaGVzIHBhcmEgbyBjYW5hbCBEVkIgJXMiCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICJhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBldmVudG9zIGRlIHNvbSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIk8gR1N0cmVhbWVyIHBvZGUgcmVwcm9kdXppciDDoXVkaW8gdXRpbGl6YW5kbyBxdWFscXVlciBxdWFudGlkYWRlIGRlICIKKyN+ICJlbGVtZW50b3MgZGUgc2HDrWRhLiBBbGd1bWFzIGRhcyBvcMOnw7VlcyBwb3Nzw612ZWlzIHPDo28gb3Nzc2luaywgcHVsc2VzaW5rIGUgIgorI34gImFsc2FzaW5rLiBPIGF1ZGlvc2luayBwb2RlIHNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6ICIKKyN+ICJkZSBhcGVuYXMgdW0gZWxlbWVudG8uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgIiIKKyN+ICJkZXNjcmnDp8OjbyBwYXJhIG8gYXVkaW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIHBhcmEgZXZlbnRvcyBkZSBzb20iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiRGVzY3JldmUgbyBlbGVtZW50byBhdWRpb3Npbmsgc2VsZWNpb25hZG8uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICJhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBDb25mZXLDqm5jaWEgZGUgw4F1ZGlvIGUgVsOtZGVvIgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gImRlc2NyacOnw6NvIGRvIGF1ZGlvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyBwYXJhIENvbmZlcsOqbmNpYSBkZSAiCisjfiAiw4F1ZGlvIGUgVsOtZGVvIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJhdWRpb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8gcGFyYSBNw7pzaWNhcyBlIEZpbG1lcyIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgIiIKKyN+ICJkZXNjcmnDp8OjbyBwYXJhIG8gYXVkaW9zaW5rIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIHBhcmEgTcO6c2ljYXMgZSBGaWxtZXMiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgInZpZGVvc2luayBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiTyBHU3RyZWFtZXIgcG9kZSByZXByb2R1emlyIHbDrWRlbyB1dGlsaXphbmRvIHF1YWxxdWVyIHF1YW50aWRhZGUgZGUgIgorI34gImVsZW1lbnRvcyBkZSBzYcOtZGEuIEFsZ3VtYXMgZGFzIG9ww6fDtWVzIHBvc3PDrXZlaXMgc8OjbyB4dmltYWdlc2luaywgIgorI34gInhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBlIGFhc2luay4gTyB2aWRlb3NpbmsgcG9kZSBzZXIgdW1hIGZpbGEgZGUgIgorI34gInByb2Nlc3NhbWVudG8gcGFyY2lhbCBlbSB2ZXogZGUgYXBlbmFzIHVtIGVsZW1lbnRvLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgImRlc2NyacOnw6NvIHBhcmEgbyB2aWRlb3NpbmsgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiRGVzY3JldmUgbyBlbGVtZW50byB2aWRlb3Npbmsgc2VsZWNpb25hZG8uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgImF1ZGlvc3JjIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRvIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIk8gR1N0cmVhbWVyIHBvZGUgZ3JhdmFyIMOhdWRpbyB1dGlsaXphbmRvIHF1YWxxdWVyIHF1YW50aWRhZGUgZGUgZWxlbWVudG9zICIKKyN+ICJkZSBlbnRyYWRhLiBBbGd1bWFzIGRhcyBvcMOnw7VlcyBwb3Nzw612ZWlzIHPDo28gb3Nzc3JjLCBwdWxzZXNyYyBlIGFsc2FzcmMuICIKKyN+ICJBIGZvbnRlIGRlIMOhdWRpbyBwb2RlIHNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6IGRlICIKKyN+ICJhcGVuYXMgdW0gZWxlbWVudG8uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJkZXNjcmnDp8OjbyBwYXJhIG8gYXVkaW9zcmMgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIGF1ZGlvc3JjIHNlbGVjaW9uYWRvLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJ2aWRlb3NyYyBkbyBHU3RyZWFtZXIgcHLDqS1kZWZpbmlkbyIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJPIEdTdHJlYW1lciBwb2RlIGdyYXZhciB2w61kZW8gZGUgcXVhbHF1ZXIgcXVhbnRpZGFkZSBkZSBlbGVtZW50b3MgZGUgIgorI34gImVudHJhZGEuIEFsZ3VtYXMgZGFzIG9ww6fDtWVzIHBvc3PDrXZlaXMgc8OjbyB2NGxzcmMsIHY0bDJzcmMgZSB2aWRlb3Rlc3RzcmMuICIKKyN+ICJBIGZvbnRlIGRlIHbDrWRlbyBwb2RlIHNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6IGRlICIKKyN+ICJhcGVuYXMgdW0gZWxlbWVudG8uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJkZXNjcmnDp8OjbyBwYXJhIG8gdmlkZW9zcmMgZG8gR1N0cmVhbWVyIHByw6ktZGVmaW5pZG8iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIHZpZGVvc3JjIHNlbGVjaW9uYWRvLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgInZpc3VhbGl6YcOnw6NvIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRhIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJPIEdTdHJlYW1lciBwb2RlIGNvbG9jYXIgcGx1Z2lucyBkZSB2aXN1YWxpemHDp8OjbyBudW1hIGZpbGEgZGUgIgorI34gInByb2Nlc3NhbWVudG8gcGFyYSB0cmFuc2Zvcm1hciBmbHV4b3MgZGUgw6F1ZGlvIGVtIHF1YWRyb3MgZGUgdsOtZGVvLiAiCisjfiAiQWxndW1hcyBkYXMgb3DDp8O1ZXMgcG9zc8OtdmVpcyBzw6NvIGdvb20sIGdvb20yazEgZSBzeW5hZXN0aGVzaWEuIE8gcGx1Z2luICIKKyN+ICJkZSB2aXN1YWxpemHDp8OjbyBwb2RlIHNlciB1bWEgZmlsYSBkZSBwcm9jZXNzYW1lbnRvIHBhcmNpYWwgZW0gdmV6IGRlICIKKyN+ICJhcGVuYXMgdW0gZWxlbWVudG8uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImRlc2NyacOnw6NvIGRhIHZpc3VhbGl6YcOnw6NvIGRvIEdTdHJlYW1lciBwcsOpLWRlZmluaWRhIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICJEZXNjcmV2ZSBvIGVsZW1lbnRvIGRlIHZpc3VhbGl6YcOnw6NvIHNlbGVjaW9uYWRvLiIKKwogI34gbXNnaWQgIkNvdWxkbid0IGdldCB0aGUgTWFuaWZlc3QncyBVUkkiCiAjfiBtc2dzdHIgIk7Do28gZm9pIHBvc3PDrXZlbCBvYnRlciBhIFVSSSBkbyBtYW5pZmVzdG8iCiAKZGlmZiAtLWdpdCBhL3BvL3JvLmdtbyBiL3BvL3JvLmdtbwppbmRleCA5MDkxMDRjLi5iNDI4MmFkIDEwMDY0NAotLS0gYS9wby9yby5nbW8KKysrIGIvcG8vcm8uZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3JvLnBvIGIvcG8vcm8ucG8KaW5kZXggNzlkNDQ4Zi4uNTdjMDU4MCAxMDA2NDQKLS0tIGEvcG8vcm8ucG8KKysrIGIvcG8vcm8ucG8KQEAgLTUsNyArNSw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjE4LjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTAtMDgtMTYgMDM6MTErMDMwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTHVjaWFuIEFkcmlhbiBHcmlqaW5jdSA8bHVjaWFuLmdyaWppbmN1QGdtYWlsLmNvbT5cbiIKICJMYW5ndWFnZS1UZWFtOiBSb21hbmlhbiA8dHJhbnNsYXRpb24tdGVhbS1yb0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yMCw5NSArMjAsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICIiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KIG1zZ2lkICJPcGVuQ1YgZmFpbGVkIHRvIGxvYWQgdGVtcGxhdGUgaW1hZ2UiCiBtc2dzdHIgIiIKIApkaWZmIC0tZ2l0IGEvcG8vcnUuZ21vIGIvcG8vcnUuZ21vCmluZGV4IDgyNmNhYjguLjY5OGIxYmYgMTAwNjQ0Ci0tLSBhL3BvL3J1LmdtbworKysgYi9wby9ydS5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vcnUucG8gYi9wby9ydS5wbwppbmRleCA2YTE2MGQ0Li5kNmY5ODM0IDEwMDY0NAotLS0gYS9wby9ydS5wbworKysgYi9wby9ydS5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEwLTE4IDEzOjQwKzAzMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFl1cmkgS296bG92IDx5dXJheUBrb215YWtpbm8ucnU+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogUnVzc2lhbiA8Z251QGQwNy5ydT5cbiIKQEAgLTIzLDExMCArMjMsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICLQv9C10YDQtdC0INGE0YPQvdC60YbQuNC10Lkg0L/QvtC70YPRh9C10L3QuNGPINC90LUg0LHRi9C7INGB0L7Qs9C70LDRgdC+0LLQsNC9INGE0L7RgNC80LDRgiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIkdTdHJlYW1lciBhdWRpb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINC30LLRg9C60L7QstGL0YUg0YHQvtCx0YvRgtC40LkiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIg0LzQvtC20LXRgiDQstC+0YHQv9GA0L7QuNC30LLQvtC00LjRgtGMINCw0YPQtNC40L4g0YfQtdGA0LXQtyDQu9GO0LHQvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INCy0YvRhdC+0LTQvdGL0YUgIgotItGN0LvQtdC80LXQvdGC0L7Qsi4g0J3QtdC60L7RgtC+0YDRi9C1INCy0LDRgNC40LDQvdGC0Ys6IG9zc3NpbmssIHB1bHNlc2luayDQuCBhbHNhc2luay4gQXVkaW9zaW5rICIKLSLQvNC+0LbQtdGCINCx0YvRgtGMINC60L7QvdCy0LXQudC10YDQvtC8LCDQsCDQvdC1INC+0LTQuNC90L7Rh9C90YvQvCDRjdC70LXQvNC10L3RgtC+0LwuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LfQstGD0LrQvtCy0YvRhSDRgdC+0LHRi9GC0LjQuSIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIGF1ZGlvc2luay4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LDRg9C00LjQvi3QstC40LTQtdC+INC60L7QvdGE0LXRgNC10L3RhtC40LkiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciBhdWRpb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINCw0YPQtNC40L4t0LLQuNC00LXQviDQutC+0L3RhNC10YDQtdC90YbQuNC5IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQvNGD0LfRi9C60Lgg0Lgg0YTQuNC70YzQvNC+0LIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciBhdWRpb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINC80YPQt9GL0LrQuCDQuCDRhNC40LvRjNC80L7QsiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiR1N0cmVhbWVyIHZpZGVvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyINC80L7QttC10YIg0LLQvtGB0L/RgNC+0LjQt9Cy0L7QtNC40YLRjCDQstC40LTQtdC+INGH0LXRgNC10Lcg0LvRjtCx0L7QuSDQstGL0YXQvtC00L3QvtC5INGN0LvQtdC80LXQvdGCLiDQndC10LrQvtGC0L7RgNGL0LUgIgotItCy0LDRgNC40LDQvdGC0Ys6IHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3Npbmsg0LggYWFzaW5rLiBWaWRlb3Npbmsg0LzQvtC20LXRgiAiCi0i0LHRi9GC0Ywg0LrQvtC90LLQtdC50LXRgNC+0LwsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C8INGN0LvQtdC80LXQvdGC0L7QvC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciB2aWRlb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRi9Cy0LDQtdGCINCy0YvQsdGA0LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiB2aWRlb3NpbmsuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIkdTdHJlYW1lciBhdWRpb3NyYyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIg0LzQvtC20LXRgiDQt9Cw0L/QuNGB0YvQstCw0YLRjCDQsNGD0LTQuNC+INGBINC70Y7QsdC+0LPQviDQstGF0L7QtNC90L7Qs9C+INGN0LvQtdC80LXQvdGC0LAuINCd0LXQutC+0YLQvtGA0YvQtSAiCi0i0LLQsNGA0LjQsNC90YLRizogb3Nzc3JjLCBwdWxzZXNyYyDQuCBhbHNhc3JjLiDQmNGB0YLQvtGH0L3QuNC60L7QvCDQsNGD0LTQuNC+INC80L7QttC10YIg0LHRi9GC0Ywg0LrQvtC90LLQtdC50LXRgCwgIgotItCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C5INGN0LvQtdC80LXQvdGCLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgYXVkaW9zcmMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIGF1ZGlvc3JjLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJHU3RyZWFtZXIgdmlkZW9zcmMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyINC80L7QttC10YIg0LfQsNC/0LjRgdGL0LLQsNGC0Ywg0LLQuNC00LXQviDRgSDQu9GO0LHQvtCz0L4g0LLRhdC+0LTQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwLiDQndC10LrQvtGC0L7RgNGL0LUgIgotItCy0LDRgNC40LDQvdGC0Ys6IHY0bHNyYywgdjRsMnNyYyDQuCB2aWRlb3Rlc3RzcmMuINCY0YHRgtC+0YfQvdC40LrQvtC8INCy0LjQtNC10L4g0LzQvtC20LXRgiDQsdGL0YLRjCAiCi0i0LrQvtC90LLQtdC50LXRgCwg0LAg0L3QtSDQvtC00LjQvdC+0YfQvdGL0Lkg0Y3Qu9C10LzQtdC90YIuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciB2aWRlb3NyYyDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YvQstCw0LXRgiDQstGL0LHRgNCw0L3QvdGL0Lkg0Y3Qu9C10LzQtdC90YIgdmlkZW9zcmMuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24g0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciDQvNC+0LbQtdGCINC/0L7QvNC10YnQsNGC0Ywg0LzQvtC00YPQu9C4INCy0LjQt9GD0LDQu9C40LfQsNGG0LjQuCDQtNC70Y8g0L/RgNC10L7QsdGA0LDQt9C+0LLQsNC90LjRjyDQsNGD0LTQuNC+ICIKLSLQv9C+0YLQvtC60L7QsiDQstC40LTQtdC+INGE0YDQsNCz0LzQtdC90YLQvtCyLiDQndC10LrQvtGC0L7RgNGL0LUg0LLQsNGA0LjQsNC90YLRizogZ29vbSwgZ29vbTJrMSDQuCBzeW5hZXN0aGVzaWEuICIKLSLQnNC+0LTRg9C70Ywg0LLQuNC30YPQsNC70LjQt9Cw0YbQuNC4INC80L7QttC10YIg0LHRi9GC0Ywg0LrQvtC90LLQtdC50LXRgNC+0LwsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C8INGN0LvQtdC80LXQvdGC0L7QvC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiDQv9C+INGD0LzQvtC70YfQsNC90LjRjiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRi9Cy0LDQtdGCINCy0YvQsdGA0LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiB2aXN1YWxpemF0aW9uLiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAi0J7RiNC40LHQutCwIE9wZW5DViDQv9GA0Lgg0LfQsNCz0YDRg9C30LrQtSDRiNCw0LHQu9C+0L3QsCDQuNC30L7QsdGA0LDQttC10L3QuNGPIgogCkBAIC0yNDUsNiArMTQxLDExMiBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgItCd0LUg0YPQtNCw0LvQvtGB0Ywg0L3QsNC50YLQuCDQvdCw0YHRgtGA0L7QudC60LggRFZCLdC60LDQvdCw0LvQsCAlcyIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgIkdTdHJlYW1lciBhdWRpb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4g0LTQu9GPINC30LLRg9C60L7QstGL0YUg0YHQvtCx0YvRgtC40LkiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIg0LzQvtC20LXRgiDQstC+0YHQv9GA0L7QuNC30LLQvtC00LjRgtGMINCw0YPQtNC40L4g0YfQtdGA0LXQtyDQu9GO0LHQvtC1INC60L7Qu9C40YfQtdGB0YLQstC+INCy0YvRhdC+0LTQvdGL0YUgIgorI34gItGN0LvQtdC80LXQvdGC0L7Qsi4g0J3QtdC60L7RgtC+0YDRi9C1INCy0LDRgNC40LDQvdGC0Ys6IG9zc3NpbmssIHB1bHNlc2luayDQuCBhbHNhc2luay4gQXVkaW9zaW5rICIKKyN+ICLQvNC+0LbQtdGCINCx0YvRgtGMINC60L7QvdCy0LXQudC10YDQvtC8LCDQsCDQvdC1INC+0LTQuNC90L7Rh9C90YvQvCDRjdC70LXQvNC10L3RgtC+0LwuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LfQstGD0LrQvtCy0YvRhSDRgdC+0LHRi9GC0LjQuSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIGF1ZGlvc2luay4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LDRg9C00LjQvi3QstC40LTQtdC+INC60L7QvdGE0LXRgNC10L3RhtC40LkiCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICIiCisjfiAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQsNGD0LTQuNC+LdCy0LjQtNC10L4g0LrQvtC90YTQtdGA0LXQvdGG0LjQuSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIGF1ZGlvc2luayDQv9C+INGD0LzQvtC70YfQsNC90LjRjiDQtNC70Y8g0LzRg9C30YvQutC4INC4INGE0LjQu9GM0LzQvtCyIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgYXVkaW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOINC00LvRjyDQvNGD0LfRi9C60Lgg0Lgg0YTQuNC70YzQvNC+0LIiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgIkdTdHJlYW1lciB2aWRlb3Npbmsg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciDQvNC+0LbQtdGCINCy0L7RgdC/0YDQvtC40LfQstC+0LTQuNGC0Ywg0LLQuNC00LXQviDRh9C10YDQtdC3INC70Y7QsdC+0Lkg0LLRi9GF0L7QtNC90L7QuSDRjdC70LXQvNC10L3Rgi4gIgorI34gItCd0LXQutC+0YLQvtGA0YvQtSDQstCw0YDQuNCw0L3RgtGLOiB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rINC4IGFhc2luay4gIgorI34gIlZpZGVvc2luayDQvNC+0LbQtdGCINCx0YvRgtGMINC60L7QvdCy0LXQudC10YDQvtC8LCDQsCDQvdC1INC+0LTQuNC90L7Rh9C90YvQvCDRjdC70LXQvNC10L3RgtC+0LwuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgdmlkZW9zaW5rINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YvQstCw0LXRgiDQstGL0LHRgNCw0L3QvdGL0Lkg0Y3Qu9C10LzQtdC90YIgdmlkZW9zaW5rLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJHU3RyZWFtZXIgYXVkaW9zcmMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gIgorI34gImJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyINC80L7QttC10YIg0LfQsNC/0LjRgdGL0LLQsNGC0Ywg0LDRg9C00LjQviDRgSDQu9GO0LHQvtCz0L4g0LLRhdC+0LTQvdC+0LPQviDRjdC70LXQvNC10L3RgtCwLiDQndC10LrQvtGC0L7RgNGL0LUgIgorI34gItCy0LDRgNC40LDQvdGC0Ys6IG9zc3NyYywgcHVsc2VzcmMg0LggYWxzYXNyYy4g0JjRgdGC0L7Rh9C90LjQutC+0Lwg0LDRg9C00LjQviDQvNC+0LbQtdGCINCx0YvRgtGMICIKKyN+ICLQutC+0L3QstC10LnQtdGALCDQsCDQvdC1INC+0LTQuNC90L7Rh9C90YvQuSDRjdC70LXQvNC10L3Rgi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgItC+0L/QuNGB0LDQvdC40LUgR1N0cmVhbWVyIGF1ZGlvc3JjINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRi9Cy0LDQtdGCINCy0YvQsdGA0LDQvdC90YvQuSDRjdC70LXQvNC10L3RgiBhdWRpb3NyYy4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIHZpZGVvc3JjINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciDQvNC+0LbQtdGCINC30LDQv9C40YHRi9Cy0LDRgtGMINCy0LjQtNC10L4g0YEg0LvRjtCx0L7Qs9C+INCy0YXQvtC00L3QvtCz0L4g0Y3Qu9C10LzQtdC90YLQsC4g0J3QtdC60L7RgtC+0YDRi9C1ICIKKyN+ICLQstCw0YDQuNCw0L3RgtGLOiB2NGxzcmMsIHY0bDJzcmMg0LggdmlkZW90ZXN0c3JjLiDQmNGB0YLQvtGH0L3QuNC60L7QvCDQstC40LTQtdC+INC80L7QttC10YIg0LHRi9GC0YwgIgorI34gItC60L7QvdCy0LXQudC10YAsINCwINC90LUg0L7QtNC40L3QvtGH0L3Ri9C5INGN0LvQtdC80LXQvdGCLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YHQsNC90LjQtSBHU3RyZWFtZXIgdmlkZW9zcmMg0L/QviDRg9C80L7Qu9GH0LDQvdC40Y4iCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIHZpZGVvc3JjLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgIkdTdHJlYW1lciB2aXN1YWxpemF0aW9uINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIg0LzQvtC20LXRgiDQv9C+0LzQtdGJ0LDRgtGMINC80L7QtNGD0LvQuCDQstC40LfRg9Cw0LvQuNC30LDRhtC40Lgg0LTQu9GPINC/0YDQtdC+0LHRgNCw0LfQvtCy0LDQvdC40Y8g0LDRg9C00LjQviAiCisjfiAi0L/QvtGC0L7QutC+0LIg0LLQuNC00LXQviDRhNGA0LDQs9C80LXQvdGC0L7Qsi4g0J3QtdC60L7RgtC+0YDRi9C1INCy0LDRgNC40LDQvdGC0Ys6IGdvb20sIGdvb20yazEg0LggIgorI34gInN5bmFlc3RoZXNpYS4g0JzQvtC00YPQu9GMINCy0LjQt9GD0LDQu9C40LfQsNGG0LjQuCDQvNC+0LbQtdGCINCx0YvRgtGMINC60L7QvdCy0LXQudC10YDQvtC8LCDQsCDQvdC1INC+0LTQuNC90L7Rh9C90YvQvCAiCisjfiAi0Y3Qu9C10LzQtdC90YLQvtC8LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICLQvtC/0LjRgdCw0L3QuNC1IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uINC/0L4g0YPQvNC+0LvRh9Cw0L3QuNGOIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGL0LLQsNC10YIg0LLRi9Cx0YDQsNC90L3Ri9C5INGN0LvQtdC80LXQvdGCIHZpc3VhbGl6YXRpb24uIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAi0J3QtSDRg9C00LDQu9C+0YHRjCDQv9C+0LvRg9GH0LjRgtGMIFVSSSDQvNCw0L3QuNGE0LXRgdGC0LAiCiAKZGlmZiAtLWdpdCBhL3BvL3NrLmdtbyBiL3BvL3NrLmdtbwppbmRleCBhZTYwY2Q4Li40NTdmNWUwIDEwMDY0NAotLS0gYS9wby9zay5nbW8KKysrIGIvcG8vc2suZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3NrLnBvIGIvcG8vc2sucG8KaW5kZXggYzZkOGMzNC4uMzJlNTEwMSAxMDA2NDQKLS0tIGEvcG8vc2sucG8KKysrIGIvcG8vc2sucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAxLjIuMVxuIgogIlJlcG9ydC1Nc2dpZC1CdWdzLVRvOiBodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL1xuIgotIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAxLTIwIDE0OjE3KzAyMDBcbiIKKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMy0xNSAxMTo0MSswMjAwXG4iCiAiUE8tUmV2aXNpb24tRGF0ZTogMjAxNC0wMS0zMCAxMDo0NCswMTAwXG4iCiAiTGFzdC1UcmFuc2xhdG9yOiBQZXRlciBUdWhhcnNreSA8dHVoYXJza3lAbWlzYmIuc2s+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU2xvdmFrIDxzay1pMThuQGxpc3RzLmxpbnV4LnNrPlxuIgpAQCAtMjQsOTUgKzI0LDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAiIgogCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCiBtc2dpZCAiT3BlbkNWIGZhaWxlZCB0byBsb2FkIHRlbXBsYXRlIGltYWdlIgogbXNnc3RyICIiCiAKZGlmZiAtLWdpdCBhL3BvL3NsLmdtbyBiL3BvL3NsLmdtbwppbmRleCBiY2NiZTE4Li5lYzBhZGZiIDEwMDY0NAotLS0gYS9wby9zbC5nbW8KKysrIGIvcG8vc2wuZ21vCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3BvL3NsLnBvIGIvcG8vc2wucG8KaW5kZXggNzBkMDI3Yi4uODMwMjM3MCAxMDA2NDQKLS0tIGEvcG8vc2wucG8KKysrIGIvcG8vc2wucG8KQEAgLTgsNyArOCw3IEBACiBtc2dzdHIgIiIKICJQcm9qZWN0LUlkLVZlcnNpb246IGdzdC1wbHVnaW5zLWJhZCAwLjEwLjIxLjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTEtMDQtMjYgMTU6MjErMDEwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogS2xlbWVuIEtvxaFpciA8a2xlbWVuLmtvc2lyQGdteC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU2xvdmVuaWFuIDx0cmFuc2xhdGlvbi10ZWFtLXNsQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTI1LDk1ICsyNSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9zcS5nbW8gYi9wby9zcS5nbW8KaW5kZXggNTE3ODIyNi4uOWJmZWMzOCAxMDA2NDQKLS0tIGEvcG8vc3EuZ21vCisrKyBiL3BvL3NxLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9zcS5wbyBiL3BvL3NxLnBvCmluZGV4IGU0NWUxOTIuLjA2Nzg5NGMgMTAwNjQ0Ci0tLSBhL3BvL3NxLnBvCisrKyBiL3BvL3NxLnBvCkBAIC02LDcgKzYsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMC4xMC43LjJcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMDgtMDgtMTUgMTY6MDcrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogTGF1cmVudCBEaGltYSA8bGF1cmVudGlAYWxibGludXgubmV0PlxuIgogIkxhbmd1YWdlLVRlYW06IEFsYmFuaWFuIDx0cmFuc2xhdGlvbi10ZWFtLXNxQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTE4LDk1ICsxOCw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgIiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby9zci5nbW8gYi9wby9zci5nbW8KaW5kZXggM2U1ZTIzMS4uZjQwNjU0NSAxMDA2NDQKLS0tIGEvcG8vc3IuZ21vCisrKyBiL3BvL3NyLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby9zci5wbyBiL3BvL3NyLnBvCmluZGV4IGQwNTAxODguLjAzODI4NWUgMTAwNjQ0Ci0tLSBhL3BvL3NyLnBvCisrKyBiL3BvL3NyLnBvCkBAIC0yLDEzICsyLDEzIEBACiAjIENvcHlyaWdodCAoQykgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KICMgVGhpcyBmaWxlIGlzIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBzYW1lIGxpY2Vuc2UgYXMgdGhlIGdzdC1wbHVnaW5zLWJhZCBwYWNrYWdlLgogIyBEYW5pbG8gU2VnYW4gPGRzZWdhbkBnbXgubmV0PiwgMjAwNC4KLSMg0JzQuNGA0L7RgdC70LDQsiDQndC40LrQvtC70LjRmyA8bWlyb3NsYXZuaWtvbGljQHJvY2tldG1haWwuY29tPiwgMjAxMeKAlDIwMTQuCisjINCc0LjRgNC+0YHQu9Cw0LIg0J3QuNC60L7Qu9C40ZsgPG1pcm9zbGF2bmlrb2xpY0Byb2NrZXRtYWlsLmNvbT4sIDIwMTHigJQyMDE1LgogbXNnaWQgIiIKIG1zZ3N0ciAiIgotIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkLTEuNC4xXG4iCisiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQtMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCi0iUE8tUmV2aXNpb24tRGF0ZTogMjAxNC0wOS0xMyAxMDozOSswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgorIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTItMjQgMTE6MzQrMDIwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjog0JzQuNGA0L7RgdC70LDQsiDQndC40LrQvtC70LjRmyA8bWlyb3NsYXZuaWtvbGljQHJvY2tldG1haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFNlcmJpYW4gPChub3RoaW5nKT5cbiIKICJMYW5ndWFnZTogc3JcbiIKQEAgLTIxLDExNSArMjEsOCBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICLQt9Cw0L/QuNGBINC90LjRmNC1INC00L7Qs9C+0LLQvtGA0LXQvSDQv9GA0LUg0YTRg9C90LrRhtC40ZjQtSDQtNC+0LHQsNCy0ZnQsNGa0LAgKGdldCkiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGHINC30LLRg9GH0L3QuNGFINC00L7Qs9Cw0ZLQsNGY0LAg0JPRgdGC0YDQuNC80LXRgNCwIgotCi0jLCBmdXp6eQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDQv9GD0YjRgtCwINCw0YPQtNC40L4g0LrQvtGA0LjRgdGC0LXRm9C4INCx0LjQu9C+INC60L7RmNC4INCx0YDQvtGYINC40LfQu9Cw0LfQvdC40YUg0LXQu9C10LzQtdC90LDRgtCwLiAiCi0i0J3QtdC60Lgg0LzQvtCz0YPRm9C4INC40LfQsdC+0YDQuCDRgdGDIOKAnm9zc3NpbmvigJwsIOKAnnB1bHNlc2lua+KAnCDQuCDigJ5hbHNhc2lua+KAnC4g0JDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyAiCi0i0LzQvtC20LUg0LHQuNGC0Lgg0LTQtdC70LjQvNC40YfQvdCwINGB0L/QvtGY0LrQsCDRg9C80LXRgdGC0L4g0YHQsNC80L4g0ZjQtdC00L3QvtCzINC10LvQtdC80LXQvdGC0LAuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRh9CwINC30LLRg9GH0L3QuNGFINC00L7Qs9Cw0ZLQsNGY0LAg0JPRgdGC0YDQuNC80LXRgNCwIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YPRmNC1INC40LfQsNCx0YDQsNC90Lgg0LXQu9C10LzQtdC90YIg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRh9CwLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGHINCT0YHRgtGA0LjQvNC10YDQsCDQt9CwINCw0YPQtNC40L4v0LLQuNC00LXQviDRgdCw0YHRgtCw0L3Rh9C10ZrQtSIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyDQk9GB0YLRgNC40LzQtdGA0LAg0LfQsCDQsNGD0LTQuNC+L9Cy0LjQtNC10L4g0YHQsNGB0YLQsNC90YfQtdGa0LUiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgItC+0YHQvdC+0LLQvdC4INCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0JPRgdGC0YDQuNC80LXRgNCwINC30LAg0LzRg9C30LjQutGDINC4INGE0LjQu9C80L7QstC1IgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGH0LAg0JPRgdGC0YDQuNC80LXRgNCwINC30LAg0LzRg9C30LjQutGDINC4INGE0LjQu9C80L7QstC1IgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQstC40LTQtdC+INGD0YHQutC70LDRktC40LLQsNGHINCT0YHRgtGA0LjQvNC10YDQsCIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0JPRgdGC0YDQuNC80LXRgCDQvNC+0LbQtSDQtNCwINC/0YPRiNGC0LAg0LLQuNC00LXQviDQutC+0YDQuNGB0YLQtdGb0Lgg0LHQuNC70L4g0LrQvtGY0Lgg0LHRgNC+0Zgg0LjQt9C70LDQt9C90LjRhSDQtdC70LXQvNC10L3QsNGC0LAuICIKLSLQndC10LrQuCDQvNC+0LPRg9Gb0Lgg0LjQt9Cx0L7RgNC4INGB0YMg4oCeeHZpbWFnZXNpbmvigJwsIOKAnnhpbWFnZXNpbmvigJwsIOKAnnNkbHZpZGVvc2lua+KAnCDQuCAiCi0i4oCeYWFzaW5r4oCcLiDQktC40LTQtdC+INGD0YHQutC70LDRktC40LLQsNGHINC80L7QttC1INCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+INGB0LDQvNC+INGY0LXQtNC90L7QsyAiCi0i0LXQu9C10LzQtdC90YLQsC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCy0LjQtNC10L4g0YPRgdC60LvQsNGS0LjQstCw0YfQsCDQk9GB0YLRgNC40LzQtdGA0LAiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRg9GY0LUg0LjQt9Cw0LHRgNCw0L3QuCDQtdC70LXQvNC10L3RgiDQstC40LTQtdC+INGD0YHQutC70LDRktC40LLQsNGH0LAuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgItC+0YHQvdC+0LLQvdC4INCw0YPQtNC40L4g0LjQt9Cy0L7RgCDQk9GB0YLRgNC40LzQtdGA0LAiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0JPRgdGC0YDQuNC80LXRgCDQvNC+0LbQtSDQtNCwINGB0L3QuNC80LAg0LDRg9C00LjQviDQutC+0YDQuNGB0YLQtdGb0Lgg0LHQuNC70L4g0LrQvtGY0Lgg0LHRgNC+0Zgg0LjQt9C70LDQt9C90LjRhSDQtdC70LXQvNC10L3QsNGC0LAuICIKLSLQndC10LrQuCDQvNC+0LPRg9Gb0Lgg0LjQt9Cx0L7RgNC4INGB0YMg4oCeb3Nzc3Jj4oCcLCDigJ5wdWxzZXNyY+KAnCDQuCDigJ5hbHNhc3Jj4oCcLiDQmNC30LLQvtGAINC30LLRg9C60LAg0LzQvtC20LUgIgotItCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+INGB0LDQvNC+INGY0LXQtNC90L7QsyDQtdC70LXQvNC10L3RgtCwLiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQsNGD0LTQuNC+INC40LfQstC+0YDQsCDQk9GB0YLRgNC40LzQtdGA0LAiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZjQtSDQuNC30LDQsdGA0LDQvdC4INC10LvQtdC80LXQvdGCINCw0YPQtNC40L4g0LjQt9Cy0L7RgNCwLiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQstC40LTQtdC+INC40LfQstC+0YAg0JPRgdGC0YDQuNC80LXRgNCwIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgY2FuIGJlIGEgIgotInBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDRgdC90LjQvNCwINCy0LjQtNC10L4g0LrQvtGA0LjRgdGC0LXRm9C4INCx0LjQu9C+INC60L7RmNC4INCx0YDQvtGYINC40LfQu9Cw0LfQvdC40YUg0LXQu9C10LzQtdC90LDRgtCwLiAiCi0i0J3QtdC60Lgg0LzQvtCz0YPRm9C4INC40LfQsdC+0YDQuCDRgdGDIOKAnnY0bHNyY+KAnCwg4oCedjRsMnNyY+KAnCDQuCDigJx2aWRlb3Rlc3RzcmPigJwuINCY0LfQstC+0YAg0LLQuNC00LXQsCDQvNC+0LbQtSAiCi0i0LHQuNGC0Lgg0LTQtdC70LjQvNC40YfQvdCwINGB0L/QvtGY0LrQsCDRg9C80LXRgdGC0L4g0YHQsNC80L4g0ZjQtdC00L3QvtCzINC10LvQtdC80LXQvdGC0LAuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCy0LjQtNC10L4g0LjQt9Cy0L7RgNCwINCT0YHRgtGA0LjQvNC10YDQsCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgItCe0L/QuNGB0YPRmNC1INC40LfQsNCx0YDQsNC90Lgg0LXQu9C10LzQtdC90YIg0LLQuNC00LXQviDQuNC30LLQvtGA0LAuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAi0L7RgdC90L7QstC90L4g0L/RgNC40LrQsNC30LjQstCw0ZrQtSDQk9GB0YLRgNC40LzQtdGA0LAiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKLSJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCi0ic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mICIKLSJqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDRgdGC0LDQstC4INC/0YDQuNC60ZnRg9GH0LrQtSDQv9GA0LjQutCw0LfQuNCy0LDRmtCwINGDINGB0L/QvtGY0LrRgyDQtNCwINC/0YDQtdGC0LLQvtGA0Lgg0LDRg9C00LjQviAiCi0i0YLQvtC60L7QstC1INGDINCy0LjQtNC10L4g0LrQsNC00YDQvtCy0LUuINCd0LXQutC4INC80L7Qs9GD0ZvQuCDQuNC30LHQvtGA0Lgg0YHRgyDigJ5nb29t4oCcLCDigJ5nb29tMmsx4oCcINC4ICIKLSLigJ5zeW5hZXN0aGVzaWHigJwuINCf0YDQuNC60ZnRg9GH0LDQuiDQv9GA0LjQutCw0LfQuNCy0LDRmtCwINC80L7QttC1INCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+INGB0LDQvNC+ICIKLSLRmNC10LTQvdC+0LMg0LXQu9C10LzQtdC90YLQsC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQv9GA0LjQutCw0LfQuNCy0LDRmtCwINCT0YHRgtGA0LjQvNC10YDQsCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRg9GY0LUg0LjQt9Cw0LHRgNCw0L3QuCDQtdC70LXQvNC10L3RgiDQv9GA0LjQutCw0LfQuNCy0LDRmtCwLiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKLW1zZ3N0ciAiIgorbXNnc3RyICLQntGC0LLQvtGA0LXQvdC40KbQkiDQvdC40ZjQtSDRg9GB0L/QtdC+INC00LAg0YPRh9C40YLQsCDRgdC70LjQutGDINGI0LDQsdC70L7QvdCwIgogCiBtc2dpZCAiQ291bGQgbm90IHJlYWQgdGl0bGUgaW5mb3JtYXRpb24gZm9yIERWRC4iCiBtc2dzdHIgItCd0LUg0LzQvtCz0YMg0LTQsCDQv9GA0L7Rh9C40YLQsNC8INC40L3RhNC+0YDQvNCw0YbQuNGY0LUg0L4g0L3QsNGB0LvQvtCy0YMg0JTQktCULdCwLiIKQEAgLTE4NCw3ICs3Nyw3IEBACiAi0JzQtdGB0YLQviDQtNCw0YLQvtGC0LXQutC1INGY0LUg0L/QvtC00LXRiNC10L3QviDQvdCwINCd0JjQqNCi0JAsINC/0L7QtNC10YHQuNGC0LUg0LPQsCDQvdCwINC40YHQv9GA0LDQstCw0L0g0L3QsNC30LjQsiDQtNCw0YLQvtGC0LXQutC1IgogCiBtc2dpZCAiRGlnaXRhbHpvb20gZWxlbWVudCBjb3VsZG4ndCBiZSBjcmVhdGVkIgotbXNnc3RyICIiCittc2dzdHIgItCV0LvQtdC80LXQvdGCINC00LjQs9C40YLQsNC70L3QvtCzINC30YPQvNCwINC90LUg0LzQvtC20LUg0LHQuNGC0Lgg0L3QsNC/0YDQsNCy0ZnQtdC9IgogCiBtc2dpZCAiU3VicGljdHVyZSBmb3JtYXQgd2FzIG5vdCBjb25maWd1cmVkIGJlZm9yZSBkYXRhIGZsb3ciCiBtc2dzdHIgItCX0LDQv9C40YEg0L/QvtC00YHQu9C40LrQtSDQvdC40ZjQtSDQv9C+0LTQtdGI0LXQvSDQv9GA0LUg0L/RgNC+0YLQvtC60LAg0L/QvtC00LDRgtCw0LrQsCIKQEAgLTI0NSw2ICsxMzgsMTEyIEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAi0J3QtSDQvNC+0LPRgyDQtNCwINC/0YDQvtC90LDRktC10Lwg0L/QvtC00LDRgtC60LUg0LfQsCDQlNCS0JEg0LrQsNC90LDQuyDigJ4lc+KAnCIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgItC+0YHQvdC+0LLQvdC4INCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0LfQstGD0YfQvdC40YUg0LTQvtCz0LDRktCw0ZjQsCDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICLQk9GB0YLRgNC40LzQtdGAINC80L7QttC1INC00LAg0L/Rg9GI0YLQsCDQsNGD0LTQuNC+INC60L7RgNC40YHRgtC10ZvQuCDQsdC40LvQviDQutC+0ZjQuCDQsdGA0L7RmCDQuNC30LvQsNC30L3QuNGFINC10LvQtdC80LXQvdCw0YLQsC4gIgorI34gItCd0LXQutC4INC80L7Qs9GD0ZvQuCDQuNC30LHQvtGA0Lgg0YHRgyDigJ5vc3NzaW5r4oCcLCDigJ5wdWxzZXNpbmvigJwg0Lgg4oCeYWxzYXNpbmvigJwuINCQ0YPQtNC40L4gIgorI34gItGD0YHQutC70LDRktC40LLQsNGHINC80L7QttC1INCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+INGB0LDQvNC+INGY0LXQtNC90L7QsyDQtdC70LXQvNC10L3RgtCwLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0YfQsCDQt9Cy0YPRh9C90LjRhSDQtNC+0LPQsNGS0LDRmNCwINCT0YHRgtGA0LjQvNC10YDQsCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGD0ZjQtSDQuNC30LDQsdGA0LDQvdC4INC10LvQtdC80LXQvdGCINCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0YfQsC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAi0L7RgdC90L7QstC90Lgg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyDQk9GB0YLRgNC40LzQtdGA0LAg0LfQsCDQsNGD0LTQuNC+L9Cy0LjQtNC10L4g0YHQsNGB0YLQsNC90YfQtdGa0LUiCisKKyN+IG1zZ2lkICIiCisjfiAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICLQvtC/0LjRgSDQvtGB0L3QvtCy0L3QvtCzINCw0YPQtNC40L4g0YPRgdC60LvQsNGS0LjQstCw0Ycg0JPRgdGC0YDQuNC80LXRgNCwINC30LAg0LDRg9C00LjQvi/QstC40LTQtdC+INGB0LDRgdGC0LDQvdGH0LXRmtC1IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQsNGD0LTQuNC+INGD0YHQutC70LDRktC40LLQsNGHINCT0YHRgtGA0LjQvNC10YDQsCDQt9CwINC80YPQt9C40LrRgyDQuCDRhNC40LvQvNC+0LLQtSIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LDRg9C00LjQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRh9CwINCT0YHRgtGA0LjQvNC10YDQsCDQt9CwINC80YPQt9C40LrRgyDQuCDRhNC40LvQvNC+0LLQtSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAi0L7RgdC90L7QstC90Lgg0LLQuNC00LXQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDQv9GD0YjRgtCwINCy0LjQtNC10L4g0LrQvtGA0LjRgdGC0LXRm9C4INCx0LjQu9C+INC60L7RmNC4INCx0YDQvtGYINC40LfQu9Cw0LfQvdC40YUg0LXQu9C10LzQtdC90LDRgtCwLiAiCisjfiAi0J3QtdC60Lgg0LzQvtCz0YPRm9C4INC40LfQsdC+0YDQuCDRgdGDIOKAnnh2aW1hZ2VzaW5r4oCcLCDigJ54aW1hZ2VzaW5r4oCcLCDigJ5zZGx2aWRlb3NpbmvigJwg0LggIgorI34gIuKAnmFhc2lua+KAnC4g0JLQuNC00LXQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRhyDQvNC+0LbQtSDQsdC40YLQuCDQtNC10LvQuNC80LjRh9C90LAg0YHQv9C+0ZjQutCwINGD0LzQtdGB0YLQviDRgdCw0LzQviDRmNC10LTQvdC+0LMgIgorI34gItC10LvQtdC80LXQvdGC0LAuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQstC40LTQtdC+INGD0YHQutC70LDRktC40LLQsNGH0LAg0JPRgdGC0YDQuNC80LXRgNCwIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRmNC1INC40LfQsNCx0YDQsNC90Lgg0LXQu9C10LzQtdC90YIg0LLQuNC00LXQviDRg9GB0LrQu9Cw0ZLQuNCy0LDRh9CwLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICLQvtGB0L3QvtCy0L3QuCDQsNGD0LTQuNC+INC40LfQstC+0YAg0JPRgdGC0YDQuNC80LXRgNCwIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCT0YHRgtGA0LjQvNC10YAg0LzQvtC20LUg0LTQsCDRgdC90LjQvNCwINCw0YPQtNC40L4g0LrQvtGA0LjRgdGC0LXRm9C4INCx0LjQu9C+INC60L7RmNC4INCx0YDQvtGYINC40LfQu9Cw0LfQvdC40YUg0LXQu9C10LzQtdC90LDRgtCwLiAiCisjfiAi0J3QtdC60Lgg0LzQvtCz0YPRm9C4INC40LfQsdC+0YDQuCDRgdGDIOKAnm9zc3NyY+KAnCwg4oCecHVsc2VzcmPigJwg0Lgg4oCeYWxzYXNyY+KAnC4g0JjQt9Cy0L7RgCDQt9Cy0YPQutCwINC80L7QttC1ICIKKyN+ICLQsdC40YLQuCDQtNC10LvQuNC80LjRh9C90LAg0YHQv9C+0ZjQutCwINGD0LzQtdGB0YLQviDRgdCw0LzQviDRmNC10LTQvdC+0LMg0LXQu9C10LzQtdC90YLQsC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0LDRg9C00LjQviDQuNC30LLQvtGA0LAg0JPRgdGC0YDQuNC80LXRgNCwIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRg9GY0LUg0LjQt9Cw0LHRgNCw0L3QuCDQtdC70LXQvNC10L3RgiDQsNGD0LTQuNC+INC40LfQstC+0YDQsC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAi0L7RgdC90L7QstC90Lgg0LLQuNC00LXQviDQuNC30LLQvtGAINCT0YHRgtGA0LjQvNC10YDQsCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlICIKKyN+ICJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICLQk9GB0YLRgNC40LzQtdGAINC80L7QttC1INC00LAg0YHQvdC40LzQsCDQstC40LTQtdC+INC60L7RgNC40YHRgtC10ZvQuCDQsdC40LvQviDQutC+0ZjQuCDQsdGA0L7RmCDQuNC30LvQsNC30L3QuNGFINC10LvQtdC80LXQvdCw0YLQsC4gIgorI34gItCd0LXQutC4INC80L7Qs9GD0ZvQuCDQuNC30LHQvtGA0Lgg0YHRgyDigJ52NGxzcmPigJwsIOKAnnY0bDJzcmPigJwg0Lgg4oCcdmlkZW90ZXN0c3Jj4oCcLiDQmNC30LLQvtGAINCy0LjQtNC10LAgIgorI34gItC80L7QttC1INCx0LjRgtC4INC00LXQu9C40LzQuNGH0L3QsCDRgdC/0L7RmNC60LAg0YPQvNC10YHRgtC+INGB0LDQvNC+INGY0LXQtNC90L7QsyDQtdC70LXQvNC10L3RgtCwLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0L7RgdC90L7QstC90L7QsyDQstC40LTQtdC+INC40LfQstC+0YDQsCDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGD0ZjQtSDQuNC30LDQsdGA0LDQvdC4INC10LvQtdC80LXQvdGCINCy0LjQtNC10L4g0LjQt9Cy0L7RgNCwLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgItC+0YHQvdC+0LLQvdC+INC/0YDQuNC60LDQt9C40LLQsNGa0LUg0JPRgdGC0YDQuNC80LXRgNCwIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICLQk9GB0YLRgNC40LzQtdGAINC80L7QttC1INC00LAg0YHRgtCw0LLQuCDQv9GA0LjQutGZ0YPRh9C60LUg0L/RgNC40LrQsNC30LjQstCw0ZrQsCDRgyDRgdC/0L7RmNC60YMg0LTQsCDQv9GA0LXRgtCy0L7RgNC4INCw0YPQtNC40L4gIgorI34gItGC0L7QutC+0LLQtSDRgyDQstC40LTQtdC+INC60LDQtNGA0L7QstC1LiDQndC10LrQuCDQvNC+0LPRg9Gb0Lgg0LjQt9Cx0L7RgNC4INGB0YMg4oCeZ29vbeKAnCwg4oCeZ29vbTJrMeKAnCDQuCAiCisjfiAi4oCec3luYWVzdGhlc2lh4oCcLiDQn9GA0LjQutGZ0YPRh9Cw0Log0L/RgNC40LrQsNC30LjQstCw0ZrQsCDQvNC+0LbQtSDQsdC40YLQuCDQtNC10LvQuNC80LjRh9C90LAg0YHQv9C+0ZjQutCwINGD0LzQtdGB0YLQviAiCisjfiAi0YHQsNC80L4g0ZjQtdC00L3QvtCzINC10LvQtdC80LXQvdGC0LAuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgItC+0L/QuNGBINC+0YHQvdC+0LLQvdC+0LMg0L/RgNC40LrQsNC30LjQstCw0ZrQsCDQk9GB0YLRgNC40LzQtdGA0LAiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRmNC1INC40LfQsNCx0YDQsNC90Lgg0LXQu9C10LzQtdC90YIg0L/RgNC40LrQsNC30LjQstCw0ZrQsC4iCisKICN+IG1zZ2lkICJDb3VsZG4ndCBnZXQgdGhlIE1hbmlmZXN0J3MgVVJJIgogI34gbXNnc3RyICLQndC1INC80L7Qs9GDINC00LAg0LTQvtCx0LDQstC40Lwg0L/Rg9GC0LDRmtGDINCc0LDQvdC40YTQtdGB0YLQsCIKIApkaWZmIC0tZ2l0IGEvcG8vc3YuZ21vIGIvcG8vc3YuZ21vCmluZGV4IDk3NzhiMGYuLjRjYWYyMTQgMTAwNjQ0Ci0tLSBhL3BvL3N2LmdtbworKysgYi9wby9zdi5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vc3YucG8gYi9wby9zdi5wbwppbmRleCBjZTE2OGUxLi4yN2FkN2JlIDEwMDY0NAotLS0gYS9wby9zdi5wbworKysgYi9wby9zdi5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTExLTAxIDAwOjQ4KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFNlYmFzdGlhbiBSYXNtdXNzZW4gPHNlYnJhc0BnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogU3dlZGlzaCA8dHAtc3ZAbGlzdG9yLnRwLXN2LnNlPlxuIgpAQCAtMjEsMTEyICsyMSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgImZvcm1hdGV0IGbDtnJoYW5kbGFkZXMgaW50ZSBmcmFtIGlubmFuIGjDpG10ZnVua3Rpb25lbiIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIGxqdWRow6RuZGVsc2VyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBzcGVsYSB1cHAgbGp1ZCB2aWEgZXR0IGFudGFsIHV0Z8OlbmdzZWxlbWVudC4gTsOlZ3JhIG3DtmpsaWdhIHZhbCAiCi0iw6RyIG9zc3NpbmssIHB1bHNlc2luayBvY2ggYWxzYXNpbmsuIExqdWR1dGfDpW5nZW4ga2FuIHZhcmEgZW4gZGVscsO2cmxlZG5pbmcgIgotImlzdMOkbGxldCBmw7ZyIGJhcmEgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbGp1ZGjDpG5kZWxzZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxkYSBsanVkdXRnw6VuZ3NlbGVtZW50ZXQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIGxqdWQvdmlkZW8ta29uZmVyZW5zZXIiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0iYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZHV0Z8OlbmcgZsO2ciBsanVkL3ZpZGVvLWtvbmZlcmVuc2VyIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZHV0Z8OlbmcgZsO2ciBtdXNpayBvY2ggZmlsbWVyIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZHV0Z8OlbmcgZsO2ciBtdXNpayBvY2ggZmlsbWVyIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW91dGfDpW5nIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHNwZWxhIHVwcCB2aWRlbyB2aWEgZXR0IGFudGFsIHV0Z8OlbmdzZWxlbWVudC4gTsOlZ3JhIG3DtmpsaWdhICIKLSJ2YWwgw6RyIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3Npbmsgb2NoIGFhc2luay4gVmlkZW91dGfDpW5nZW4ga2FuICIKLSJ2YXJhIGVuIGRlbHLDtnJsZWRuaW5nIGlzdMOkbGxldCBmw7ZyIGJhcmEgZXR0IGVsZW1lbnQuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW91dGfDpW5nIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgdmlkZW91dGfDpW5nc2VsZW1lbnRldC4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWxqdWRrw6RsbGEiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGthbiBzcGVsYSBpbiBsanVkIGZyw6VuIGV0dCBhbnRhbCBpbmfDpW5nc2VsZW1lbnQuIE7DpWdyYSBtw7ZqbGlnYSB2YWwgIgotIsOkciBvc3NzcmMsIHB1bHNlc3JjIG9jaCBhbHNhc3JjLiBManVka8OkbGxhbiBrYW4gdmFyYSBlbiBkZWxyw7ZybGVkbmluZyAiCi0iaXN0w6RsbGV0IGbDtnIgYmFyYSBldHQgZWxlbWVudC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLWxqdWRrw6RsbGEiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGRhIGxqdWRrw6RsbHNlbGVtZW50ZXQuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aWRlb2vDpGxsYSIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIHNwZWxhIGluIHZpZGVvIGZyw6VuIGV0dCBhbnRhbCBpbmfDpW5nc2VsZW1lbnQuIE7DpWdyYSBtw7ZqbGlnYSAiCi0idmFsIMOkciB2NGxzcmMsIHY0bDJzcmMgb2NoIHZpZGVvdGVzdHNyYy4gVmlkZW9rw6RsbGFuIGthbiB2YXJhIGVuICIKLSJkZWxyw7ZybGVkbmluZyBpc3TDpGxsZXQgZsO2ciBiYXJhIGV0dCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItdmlkZW9rw6RsbGEiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGRhIHZpZGVva8OkbGxzZWxlbWVudGV0LiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aXN1YWxpc2VyaW5nIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIga2FuIGzDpGdnYSBpbiBpbnN0aWNrc21vZHVsZXIgZsO2ciB2aXN1YWxpc2VyaW5nIGkgZW4gcGlwZWxpbmUgZsO2ciAiCi0iYXR0IHRyYW5zZm9ybWVyYSBsanVkc3Ryw7ZtbWFyIHRpbGwgdmlkZW9iaWxkZXIuIE7DpWdyYSBtw7ZqbGlnYSB2YWwgw6RyIGdvb20sICIKLSJnb29tMmsxIG9jaCBzeW5hZXN0aGVzaWEuIFZpc3VhbGlzZXJpbmdzaW5zdGlja3Ntb2R1bGVuIGthbiB2YXJhIGVuICIKLSJkZWxyw7ZybGVkbmluZyBpc3TDpGxsZXQgZsO2ciBiYXJhIGV0dCBlbGVtZW50LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci12aXN1YWxpc2VyaW5nIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgotbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGRhIHZpc3VhbGlzZXJpbmdzZWxlbWVudGV0LiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiT3BlbkNWIG1pc3NseWNrYWRlcyBtZWQgYXR0IGzDpHNhIGluIG1hbGxiaWxkIgogCkBAIC0yNDIsNiArMTM2LDExMiBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIkt1bmRlIGVqIGhpdHRhIGRldGFsamVyIGbDtnIgRFZCLWthbmFsICVzIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbGp1ZGjDpG5kZWxzZXIiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIHNwZWxhIHVwcCBsanVkIHZpYSBldHQgYW50YWwgdXRnw6VuZ3NlbGVtZW50LiBOw6VncmEgbcO2amxpZ2EgIgorI34gInZhbCDDpHIgb3Nzc2luaywgcHVsc2VzaW5rIG9jaCBhbHNhc2luay4gTGp1ZHV0Z8OlbmdlbiBrYW4gdmFyYSBlbiAiCisjfiAiZGVscsO2cmxlZG5pbmcgaXN0w6RsbGV0IGbDtnIgYmFyYSBldHQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZHV0Z8OlbmcgZsO2ciBsanVkaMOkbmRlbHNlciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJCZXNrcml2ZXIgZGV0IHZhbGRhIGxqdWR1dGfDpW5nc2VsZW1lbnRldC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLWxqdWR1dGfDpW5nIGbDtnIgbGp1ZC92aWRlby1rb25mZXJlbnNlciIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIiIKKyN+ICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIGxqdWQvdmlkZW8ta29uZmVyZW5zZXIiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIG11c2lrIG9jaCBmaWxtZXIiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci1sanVkdXRnw6VuZyBmw7ZyIG11c2lrIG9jaCBmaWxtZXIiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgInN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3V0Z8OlbmciCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuICIKKyN+ICJUaGUgdmlkZW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gc3BlbGEgdXBwIHZpZGVvIHZpYSBldHQgYW50YWwgdXRnw6VuZ3NlbGVtZW50LiBOw6VncmEgbcO2amxpZ2EgIgorI34gInZhbCDDpHIgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBvY2ggYWFzaW5rLiBWaWRlb3V0Z8OlbmdlbiAiCisjfiAia2FuIHZhcmEgZW4gZGVscsO2cmxlZG5pbmcgaXN0w6RsbGV0IGbDtnIgYmFyYSBldHQgZWxlbWVudC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgorI34gbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci12aWRlb3V0Z8OlbmciCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiQmVza3JpdmVyIGRldCB2YWxkYSB2aWRlb3V0Z8OlbmdzZWxlbWVudGV0LiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZGvDpGxsYSIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIga2FuIHNwZWxhIGluIGxqdWQgZnLDpW4gZXR0IGFudGFsIGluZ8OlbmdzZWxlbWVudC4gTsOlZ3JhIG3DtmpsaWdhICIKKyN+ICJ2YWwgw6RyIG9zc3NyYywgcHVsc2VzcmMgb2NoIGFsc2FzcmMuIExqdWRrw6RsbGFuIGthbiB2YXJhIGVuIGRlbHLDtnJsZWRuaW5nICIKKyN+ICJpc3TDpGxsZXQgZsO2ciBiYXJhIGV0dCBlbGVtZW50LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAiYmVza3Jpdm5pbmcgZsO2ciBzdGFuZGFyZCBHU3RyZWFtZXItbGp1ZGvDpGxsYSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgbGp1ZGvDpGxsc2VsZW1lbnRldC4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpZGVva8OkbGxhIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gc3BlbGEgaW4gdmlkZW8gZnLDpW4gZXR0IGFudGFsIGluZ8OlbmdzZWxlbWVudC4gTsOlZ3JhIG3DtmpsaWdhICIKKyN+ICJ2YWwgw6RyIHY0bHNyYywgdjRsMnNyYyBvY2ggdmlkZW90ZXN0c3JjLiBWaWRlb2vDpGxsYW4ga2FuIHZhcmEgZW4gIgorI34gImRlbHLDtnJsZWRuaW5nIGlzdMOkbGxldCBmw7ZyIGJhcmEgZXR0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJiZXNrcml2bmluZyBmw7ZyIHN0YW5kYXJkIEdTdHJlYW1lci12aWRlb2vDpGxsYSIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgdmlkZW9rw6RsbHNlbGVtZW50ZXQuIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKKyN+IG1zZ3N0ciAic3RhbmRhcmQgR1N0cmVhbWVyLXZpc3VhbGlzZXJpbmciCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwdXQgdmlzdWFsaXphdGlvbiBwbHVnaW5zIGluIGEgcGlwZWxpbmUgdG8gdHJhbnNmb3JtIGF1ZGlvICIKKyN+ICJzdHJlYW1zIGluIHZpZGVvIGZyYW1lcy4gU29tZSBwb3NzaWJsZSBjaG9pY2VzIGFyZSBnb29tLCBnb29tMmsxIGFuZCAiCisjfiAic3luYWVzdGhlc2lhLiBUaGUgdmlzdWFsaXphdGlvbiBwbHVnaW4gY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkICIKKyN+ICJvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBrYW4gbMOkZ2dhIGluIGluc3RpY2tzbW9kdWxlciBmw7ZyIHZpc3VhbGlzZXJpbmcgaSBlbiBwaXBlbGluZSAiCisjfiAiZsO2ciBhdHQgdHJhbnNmb3JtZXJhIGxqdWRzdHLDtm1tYXIgdGlsbCB2aWRlb2JpbGRlci4gTsOlZ3JhIG3DtmpsaWdhIHZhbCDDpHIgIgorI34gImdvb20sIGdvb20yazEgb2NoIHN5bmFlc3RoZXNpYS4gVmlzdWFsaXNlcmluZ3NpbnN0aWNrc21vZHVsZW4ga2FuIHZhcmEgZW4gIgorI34gImRlbHLDtnJsZWRuaW5nIGlzdMOkbGxldCBmw7ZyIGJhcmEgZXR0IGVsZW1lbnQuIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImJlc2tyaXZuaW5nIGbDtnIgc3RhbmRhcmQgR1N0cmVhbWVyLXZpc3VhbGlzZXJpbmciCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIkJlc2tyaXZlciBkZXQgdmFsZGEgdmlzdWFsaXNlcmluZ3NlbGVtZW50ZXQuIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAiS3VuZGUgZWogaMOkbXRhIG1hbmlmZXN0ZXRzIFVSSSIKIApkaWZmIC0tZ2l0IGEvcG8vdHIuZ21vIGIvcG8vdHIuZ21vCmluZGV4IGVhNjI3NDUuLjNlYTlhYTcgMTAwNjQ0Ci0tLSBhL3BvL3RyLmdtbworKysgYi9wby90ci5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vdHIucG8gYi9wby90ci5wbwppbmRleCA0OTI4ZjYzLi4yN2MxNWRkIDEwMDY0NAotLS0gYS9wby90ci5wbworKysgYi9wby90ci5wbwpAQCAtNyw3ICs3LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkLTEuNC4xXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTAxLTEwIDIxOjA3KzAxMDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFZvbGthbiBHZXplciA8dm9sa2FuZ2V6ZXJAZ21haWwuY29tPlxuIgogIkxhbmd1YWdlLVRlYW06IFR1cmtpc2ggPGdudS10ci11MTJhQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIxLDk1ICsyMSw2IEBACiBtc2dpZCAiZm9ybWF0IHdhc24ndCBuZWdvdGlhdGVkIGJlZm9yZSBnZXQgZnVuY3Rpb24iCiBtc2dzdHIgImdldCBmb25rc2l5b251bmRhbiDDtm5jZSBiacOnaW0gZ8O2csO8xZ/DvGxlbWVkaSIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gVGhlIHZpZGVvc2luayAiCi0iY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiIgogCmRpZmYgLS1naXQgYS9wby91ay5nbW8gYi9wby91ay5nbW8KaW5kZXggMjNmNDE5MC4uZTYyNThkOSAxMDA2NDQKLS0tIGEvcG8vdWsuZ21vCisrKyBiL3BvL3VrLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby91ay5wbyBiL3BvL3VrLnBvCmluZGV4IDUxNzZjOWIuLjA0YmM5MzUgMTAwNjQ0Ci0tLSBhL3BvL3VrLnBvCisrKyBiL3BvL3VrLnBvCkBAIC04LDcgKzgsNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMTUgMjA6NDQrMDMwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogWXVyaSBDaG9ybm9pdmFuIDx5dXJjaG9yQHVrci5uZXQ+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogVWtyYWluaWFuIDx0cmFuc2xhdGlvbi10ZWFtLXVrQGxpc3RzLnNvdXJjZWZvcmdlLm5ldD5cbiIKQEAgLTIzLDExNiArMjMsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICLRhNC+0YDQvNCw0YIg0L3QtSDQsdGD0LvQviDRg9C30LPQvtC00LbQtdC90L4g0LTQviDQstC40LrQu9C40LrRgyDRhNGD0L3QutGG0ZbRlyBnZXQiCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICLRgtC40L/QvtCy0LjQuSDQv9GA0LjQudC80LDRhyDQt9Cy0YPQutC+0LLQuNGFINC/0L7QtNGW0LkgR1N0cmVhbWVyIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc2luaywgcHVsc2VzaW5rIGFuZCBhbHNhc2luay4gVGhlIGF1ZGlvc2luayBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0KMgR1N0cmVhbWVyINC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LzQvtC20LvQuNCy0ZbRgdGC0Ywg0LLRltC00YLQstC+0YDQtdC90L3RjyDQt9Cy0YPQutC+0LLQuNGFINC00LDQvdC40YUg0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4gIgotItC00L7QstGW0LvRjNC90L7RlyDQutGW0LvRjNC60L7RgdGC0ZYg0LXQu9C10LzQtdC90YLRltCyINCy0LjQstC10LTQtdC90L3Rjy4g0KHQtdGA0LXQtCDQvNC+0LbQu9C40LLQuNGFINCy0LDRgNGW0LDQvdGC0ZbQsiBvc3NzaW5rLCAiCi0icHVsc2VzaW5rINGC0LAgYWxzYXNpbmsuINCX0LLRg9C60L7QstC40Lkg0L/RgNC40LnQvNCw0Ycg0LzQvtC20LUg0LHRg9GC0Lgg0L7QutGA0LXQvNC40Lwg0LrQsNC90LDQu9C+0LwsINCwINC90LUgIgotItC+0LTQvdC40Lwg0LXQu9C10LzQtdC90YLQvtC8LiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7Qs9C+INC/0YDQuNC50LzQsNGH0LAg0LfQstGD0LrQvtCy0LjRhSDQv9C+0LTRltC5IEdTdHJlYW1lciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiBhdWRpb3NpbmsuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgItGC0LjQv9C+0LLQuNC5INC30LLRg9C60L7QstC40Lkg0L/RgNC40LnQvNCw0YcgR1N0cmVhbWVyINC00LvRjyDQt9Cy0YPQutC+0LLQuNGFINGC0LAg0LLRltC00LXQvtC60L7QvdGE0LXRgNC10L3RhtGW0LkiCi0KLW1zZ2lkICIiCi0iZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgotbXNnc3RyICIiCi0i0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQt9Cy0YPQutC+0LLQvtCz0L4g0L/RgNC40LnQvNCw0YfQsCBHU3RyZWFtZXIg0LTQu9GPINC30LLRg9C60L7QstC40YUg0YLQsCDQstGW0LTQtdC+0LrQvtC90YTQtdGA0LXQvdGG0ZbQuSIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKLW1zZ3N0ciAi0YLQuNC/0L7QstC40Lkg0LfQstGD0LrQvtCy0LjQuSDQv9GA0LjQudC80LDRhyBHU3RyZWFtZXIg0LTQu9GPINC80YPQt9C40LrQuCDRliDRhNGW0LvRjNC80ZbQsiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0LfQstGD0LrQvtCy0L7Qs9C+INC/0YDQuNC50LzQsNGH0LAgR1N0cmVhbWVyINC00LvRjyDQvNGD0LfQuNC60Lgg0ZYg0YTRltC70YzQvNGW0LIiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgItGC0LjQv9C+0LLQuNC5INCy0ZbQtNC10L7Qv9GA0LjQudC80LDRhyBHU3RyZWFtZXIiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotItCjIEdTdHJlYW1lciDQv9C10YDQtdC00LHQsNGH0LXQvdC+INCy0ZbQtNGC0LLQvtGA0LXQvdC90Y8g0LLRltC00LXQviDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiDQtNC+0LLRltC70YzQvdC+0Zcg0LrRltC70YzQutC+0YHRgtGWICIKLSLQtdC70LXQvNC10L3RgtGW0LIg0LLQuNCy0LXQtNC10L3QvdGPLiDQodC10YDQtdC0INC80L7QttC70LjQstC40YUg0LLQsNGA0ZbQsNC90YLRltCyIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCAiCi0ic2RsdmlkZW9zaW5rINGC0LAgYWFzaW5rLiDQn9GA0LjQudC80LDRhyDQstGW0LTQtdC+0LTQsNC90LjRhSDQvNC+0LbQtSDQsdGD0YLQuCDQvtC60YDQtdC80LjQvCDQutCw0L3QsNC70L7QvCDQtyAiCi0i0LTQtdC60ZbQu9GM0LrQvtGFINC+0LHRgNC+0LHQvdC40LrRltCyLCDQsCDQvdC1INC/0YDQvtGB0YLQviDQvtC00L3QuNC8INC10LvQtdC80LXQvdGC0L7QvC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7Qs9C+INCy0ZbQtNC10L7Qv9GA0LjQudC80LDRh9CwIEdTdHJlYW1lciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiB2aWRlb3NpbmsuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgItGC0LjQv9C+0LLQtSDQtNC20LXRgNC10LvQviDQt9Cy0YPQutGDIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCBhdWRpbyB1c2luZyBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzcmMsIHB1bHNlc3JjIGFuZCBhbHNhc3JjLiBUaGUgYXVkaW8gc291cmNlIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSLQoyBHU3RyZWFtZXIg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQvNC+0LbQu9C40LLRltGB0YLRjCDQt9Cw0L/QuNGB0YMg0LfQstGD0LrQvtCy0LjRhSDQtNCw0L3QuNGFINC30LAg0LTQvtC/0L7QvNC+0LPQvtGOICIKLSLQtNC+0LLRltC70YzQvdC+0Zcg0LrRltC70YzQutC+0YHRgtGWINC10LvQtdC80LXQvdGC0ZbQsiDQstGF0ZbQtNC90LjRhSDQtNCw0L3QuNGFLiDQodC10YDQtdC0INC80L7QttC70LjQstC40YUg0LLQsNGA0ZbQsNC90YLRltCyICIKLSJvc3NzcmMsIHB1bHNlc3JjINGC0LAgYWxzYXNyYy4g0JTQttC10YDQtdC70L7QvCDQt9Cy0YPQutC+0LLQuNGFINC00LDQvdC40YUg0LzQvtC20LUg0LHRg9GC0Lgg0L7QutGA0LXQvNC40Lkg0LrQsNC90LDQuyAiCi0i0Lcg0LTQtdC60ZbQu9GM0LrQvtGFINC10LvQtdC80LXQvdGC0ZbQsiwg0LAg0L3QtSDQv9GA0L7RgdGC0L4g0L7QtNC40L0g0LXQu9C10LzQtdC90YIuIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgotbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7Qs9C+INC00LbQtdGA0LXQu9CwINC30LLRg9C60YMgR1N0cmVhbWVyIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRg9GUINCy0LjQsdGA0LDQvdC40Lkg0LXQu9C10LzQtdC90YIgYXVkaW9zcmMuIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgItGC0LjQv9C+0LLQtSDQtNC20LXRgNC10LvQviDQstGW0LTQtdC+IEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHJlY29yZCB2aWRlbyBmcm9tIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIHY0bHNyYywgdjRsMnNyYyBhbmQgdmlkZW90ZXN0c3JjLiBUaGUgdmlkZW8gc291cmNlIGNhbiBiZSBhICIKLSJwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSLQoyBHU3RyZWFtZXIg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQvNC+0LbQu9C40LLRltGB0YLRjCDQt9Cw0L/QuNGB0YMg0LLRltC00LXQvtC00LDQvdC40YUg0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4g0LTQvtCy0ZbQu9GM0L3QvtGXICIKLSLQutGW0LvRjNC60L7RgdGC0ZYg0LXQu9C10LzQtdC90YLRltCyINCy0YXRltC00L3QuNGFINC00LDQvdC40YUuINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSDQstCw0YDRltCw0L3RgtGW0LIgdjRsc3JjLCB2NGwyc3JjICIKLSLRgtCwIHZpZGVvdGVzdHNyYy4g0JTQttC10YDQtdC70L7QvCDQstGW0LTQtdC+0LTQsNC90LjRhSDQvNC+0LbQtSDQsdGD0YLQuCDQvtC60YDQtdC80LjQuSDQutCw0L3QsNC7INC3INC00LXQutGW0LvRjNC60L7RhSAiCi0i0LXQu9C10LzQtdC90YLRltCyLCDQsCDQvdC1INC/0YDQvtGB0YLQviDQvtC00LjQvSDQtdC70LXQvNC10L3Rgi4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0LTQttC10YDQtdC70LAg0LLRltC00LXQviBHU3RyZWFtZXIiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgotbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiB2aWRlb3NyYy4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICLRgtC40L/QvtCy0LAg0LLRltC30YPQsNC70ZbQt9Cw0YbRltGPIEdTdHJlYW1lciIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0i0KMgR1N0cmVhbWVyINC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LTQvtC00LDQstCw0L3QvdGPINC00L4g0LrQsNC90LDQu9GDINC+0LHRgNC+0LHQutC4INC00L7QtNCw0YLQutGW0LIg0LLRltC30YPQsNC70ZbQt9Cw0YbRltGXICIKLSLQtNC70Y8g0L7QsdGA0L7QsdC60Lgg0L/QvtGC0L7QutGW0LIg0LfQstGD0LrQvtCy0LjRhSDQtNCw0L3QuNGFINGDINC60LDQtNGA0LDRhSDQstGW0LTQtdC+LiDQodC10YDQtdC0INC80L7QttC70LjQstC40YUg0LLQsNGA0ZbQsNC90YLRltCyICIKLSJnb29tLCBnb29tMmsxINGC0LAgc3luYWVzdGhlc2lhLiDQlNC+0LTQsNGC0L7QuiDQstGW0LfRg9Cw0LvRltC30LDRhtGW0Zcg0LzQvtC20LUg0LHRg9GC0Lgg0L7QutGA0LXQvNC40LwgIgotItC60LDQvdCw0LvQvtC8LCDQsCDQvdC1INC/0YDQvtGB0YLQviDQvtC00L3QuNC8INC10LvQtdC80LXQvdGC0L7QvC4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0Zcg0LLRltC30YPQsNC70ZbQt9Cw0YbRltGXIEdTdHJlYW1lciIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlzdWFsaXphdGlvbiBlbGVtZW50LiIKLW1zZ3N0ciAi0J7Qv9C40YHRg9GUINCy0LjQsdGA0LDQvdC40Lkg0LXQu9C10LzQtdC90YIg0LLRltC30YPQsNC70ZbQt9Cw0YbRltGXLiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiT3BlbkNWINC90LUg0LLQtNCw0LvQvtGB0Y8g0LfQsNCy0LDQvdGC0LDQttC40YLQuCDQt9C+0LHRgNCw0LbQtdC90L3RjyDRiNCw0LHQu9C+0L3RgyIKIApAQCAtMjU2LDYgKzE0NiwxMTcgQEAKIG1zZ2lkICJDb3VsZG4ndCBmaW5kIGRldGFpbHMgZm9yIERWQiBjaGFubmVsICVzIgogbXNnc3RyICLQndC1INCy0LTQsNC70L7RgdGPINC30L3QsNC50YLQuCDQv9Cw0YDQsNC80LXRgtGA0ZbQsiDQutCw0L3QsNC70YMgRFZCICVzIgogCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAi0YLQuNC/0L7QstC40Lkg0L/RgNC40LnQvNCw0Ycg0LfQstGD0LrQvtCy0LjRhSDQv9C+0LTRltC5IEdTdHJlYW1lciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NpbmssIHB1bHNlc2luayBhbmQgYWxzYXNpbmsuIFRoZSBhdWRpb3NpbmsgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCjIEdTdHJlYW1lciDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC80L7QttC70LjQstGW0YHRgtGMINCy0ZbQtNGC0LLQvtGA0LXQvdC90Y8g0LfQstGD0LrQvtCy0LjRhSDQtNCw0L3QuNGFINC30LAgIgorI34gItC00L7Qv9C+0LzQvtCz0L7RjiDQtNC+0LLRltC70YzQvdC+0Zcg0LrRltC70YzQutC+0YHRgtGWINC10LvQtdC80LXQvdGC0ZbQsiDQstC40LLQtdC00LXQvdC90Y8uINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSAiCisjfiAi0LLQsNGA0ZbQsNC90YLRltCyIG9zc3NpbmssIHB1bHNlc2luayDRgtCwIGFsc2FzaW5rLiDQl9Cy0YPQutC+0LLQuNC5INC/0YDQuNC50LzQsNGHINC80L7QttC1INCx0YPRgtC4ICIKKyN+ICLQvtC60YDQtdC80LjQvCDQutCw0L3QsNC70L7QvCwg0LAg0L3QtSDQvtC00L3QuNC8INC10LvQtdC80LXQvdGC0L7QvC4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQv9GA0LjQudC80LDRh9CwINC30LLRg9C60L7QstC40YUg0L/QvtC00ZbQuSBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKKyN+IG1zZ3N0ciAi0J7Qv9C40YHRg9GUINCy0LjQsdGA0LDQvdC40Lkg0LXQu9C10LzQtdC90YIgYXVkaW9zaW5rLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICLRgtC40L/QvtCy0LjQuSDQt9Cy0YPQutC+0LLQuNC5INC/0YDQuNC50LzQsNGHIEdTdHJlYW1lciDQtNC70Y8g0LfQstGD0LrQvtCy0LjRhSDRgtCwINCy0ZbQtNC10L7QutC+0L3RhNC10YDQtdC90YbRltC5IgorCisjfiBtc2dpZCAiIgorI34gImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAiIgorI34gItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0LfQstGD0LrQvtCy0L7Qs9C+INC/0YDQuNC50LzQsNGH0LAgR1N0cmVhbWVyINC00LvRjyDQt9Cy0YPQutC+0LLQuNGFINGC0LAgIgorI34gItCy0ZbQtNC10L7QutC+0L3RhNC10YDQtdC90YbRltC5IgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgorI34gbXNnc3RyICLRgtC40L/QvtCy0LjQuSDQt9Cy0YPQutC+0LLQuNC5INC/0YDQuNC50LzQsNGHIEdTdHJlYW1lciDQtNC70Y8g0LzRg9C30LjQutC4INGWINGE0ZbQu9GM0LzRltCyIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQt9Cy0YPQutC+0LLQvtCz0L4g0L/RgNC40LnQvNCw0YfQsCBHU3RyZWFtZXIg0LTQu9GPINC80YPQt9C40LrQuCDRliDRhNGW0LvRjNC80ZbQsiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAi0YLQuNC/0L7QstC40Lkg0LLRltC00LXQvtC/0YDQuNC50LzQsNGHIEdTdHJlYW1lciIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHBsYXkgdmlkZW8gdXNpbmcgYW55IG51bWJlciBvZiBvdXRwdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIHh2aW1hZ2VzaW5rLCB4aW1hZ2VzaW5rLCBzZGx2aWRlb3NpbmsgYW5kIGFhc2luay4gIgorI34gIlRoZSB2aWRlb3NpbmsgY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAi0KMgR1N0cmVhbWVyINC/0LXRgNC10LTQsdCw0YfQtdC90L4g0LLRltC00YLQstC+0YDQtdC90L3RjyDQstGW0LTQtdC+INC30LAg0LTQvtC/0L7QvNC+0LPQvtGOINC00L7QstGW0LvRjNC90L7RlyAiCisjfiAi0LrRltC70YzQutC+0YHRgtGWINC10LvQtdC80LXQvdGC0ZbQsiDQstC40LLQtdC00LXQvdC90Y8uINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSDQstCw0YDRltCw0L3RgtGW0LIgeHZpbWFnZXNpbmssICIKKyN+ICJ4aW1hZ2VzaW5rLCBzZGx2aWRlb3Npbmsg0YLQsCBhYXNpbmsuINCf0YDQuNC50LzQsNGHINCy0ZbQtNC10L7QtNCw0L3QuNGFINC80L7QttC1INCx0YPRgtC4INC+0LrRgNC10LzQuNC8ICIKKyN+ICLQutCw0L3QsNC70L7QvCDQtyDQtNC10LrRltC70YzQutC+0YUg0L7QsdGA0L7QsdC90LjQutGW0LIsINCwINC90LUg0L/RgNC+0YHRgtC+INC+0LTQvdC40Lwg0LXQu9C10LzQtdC90YLQvtC8LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0LLRltC00LXQvtC/0YDQuNC50LzQsNGH0LAgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRlCDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCIHZpZGVvc2luay4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAi0YLQuNC/0L7QstC1INC00LbQtdGA0LXQu9C+INC30LLRg9C60YMgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCjIEdTdHJlYW1lciDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC80L7QttC70LjQstGW0YHRgtGMINC30LDQv9C40YHRgyDQt9Cy0YPQutC+0LLQuNGFINC00LDQvdC40YUg0LfQsCDQtNC+0L/QvtC80L7Qs9C+0Y4gIgorI34gItC00L7QstGW0LvRjNC90L7RlyDQutGW0LvRjNC60L7RgdGC0ZYg0LXQu9C10LzQtdC90YLRltCyINCy0YXRltC00L3QuNGFINC00LDQvdC40YUuINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSDQstCw0YDRltCw0L3RgtGW0LIgIgorI34gIm9zc3NyYywgcHVsc2VzcmMg0YLQsCBhbHNhc3JjLiDQlNC20LXRgNC10LvQvtC8INC30LLRg9C60L7QstC40YUg0LTQsNC90LjRhSDQvNC+0LbQtSDQsdGD0YLQuCDQvtC60YDQtdC80LjQuSAiCisjfiAi0LrQsNC90LDQuyDQtyDQtNC10LrRltC70YzQutC+0YUg0LXQu9C10LzQtdC90YLRltCyLCDQsCDQvdC1INC/0YDQvtGB0YLQviDQvtC00LjQvSDQtdC70LXQvNC10L3Rgi4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgItC+0L/QuNGBINGC0LjQv9C+0LLQvtCz0L4g0LTQttC10YDQtdC70LAg0LfQstGD0LrRgyBHU3RyZWFtZXIiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiBhdWRpb3NyYy4iCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAi0YLQuNC/0L7QstC1INC00LbQtdGA0LXQu9C+INCy0ZbQtNC10L4gR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gItCjIEdTdHJlYW1lciDQv9C10YDQtdC00LHQsNGH0LXQvdC+INC80L7QttC70LjQstGW0YHRgtGMINC30LDQv9C40YHRgyDQstGW0LTQtdC+0LTQsNC90LjRhSDQt9CwINC00L7Qv9C+0LzQvtCz0L7RjiAiCisjfiAi0LTQvtCy0ZbQu9GM0L3QvtGXINC60ZbQu9GM0LrQvtGB0YLRliDQtdC70LXQvNC10L3RgtGW0LIg0LLRhdGW0LTQvdC40YUg0LTQsNC90LjRhS4g0KHQtdGA0LXQtCDQvNC+0LbQu9C40LLQuNGFINCy0LDRgNGW0LDQvdGC0ZbQsiAiCisjfiAidjRsc3JjLCB2NGwyc3JjINGC0LAgdmlkZW90ZXN0c3JjLiDQlNC20LXRgNC10LvQvtC8INCy0ZbQtNC10L7QtNCw0L3QuNGFINC80L7QttC1INCx0YPRgtC4INC+0LrRgNC10LzQuNC5ICIKKyN+ICLQutCw0L3QsNC7INC3INC00LXQutGW0LvRjNC60L7RhSDQtdC70LXQvNC10L3RgtGW0LIsINCwINC90LUg0L/RgNC+0YHRgtC+INC+0LTQuNC9INC10LvQtdC80LXQvdGCLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAi0L7Qv9C40YEg0YLQuNC/0L7QstC+0LPQviDQtNC20LXRgNC10LvQsCDQstGW0LTQtdC+IEdTdHJlYW1lciIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgItCe0L/QuNGB0YPRlCDQstC40LHRgNCw0L3QuNC5INC10LvQtdC80LXQvdGCIHZpZGVvc3JjLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgItGC0LjQv9C+0LLQsCDQstGW0LfRg9Cw0LvRltC30LDRhtGW0Y8gR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCisjfiAic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgorI34gInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCAiCisjfiAib2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICLQoyBHU3RyZWFtZXIg0L/QtdGA0LXQtNCx0LDRh9C10L3QviDQtNC+0LTQsNCy0LDQvdC90Y8g0LTQviDQutCw0L3QsNC70YMg0L7QsdGA0L7QsdC60Lgg0LTQvtC00LDRgtC60ZbQsiDQstGW0LfRg9Cw0LvRltC30LDRhtGW0ZcgIgorI34gItC00LvRjyDQvtCx0YDQvtCx0LrQuCDQv9C+0YLQvtC60ZbQsiDQt9Cy0YPQutC+0LLQuNGFINC00LDQvdC40YUg0YMg0LrQsNC00YDQsNGFINCy0ZbQtNC10L4uINCh0LXRgNC10LQg0LzQvtC20LvQuNCy0LjRhSAiCisjfiAi0LLQsNGA0ZbQsNC90YLRltCyIGdvb20sIGdvb20yazEg0YLQsCBzeW5hZXN0aGVzaWEuINCU0L7QtNCw0YLQvtC6INCy0ZbQt9GD0LDQu9GW0LfQsNGG0ZbRlyDQvNC+0LbQtSDQsdGD0YLQuCAiCisjfiAi0L7QutGA0LXQvNC40Lwg0LrQsNC90LDQu9C+0LwsINCwINC90LUg0L/RgNC+0YHRgtC+INC+0LTQvdC40Lwg0LXQu9C10LzQtdC90YLQvtC8LiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICLQvtC/0LjRgSDRgtC40L/QvtCy0L7RlyDQstGW0LfRg9Cw0LvRltC30LDRhtGW0ZcgR1N0cmVhbWVyIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICLQntC/0LjRgdGD0ZQg0LLQuNCx0YDQsNC90LjQuSDQtdC70LXQvNC10L3RgiDQstGW0LfRg9Cw0LvRltC30LDRhtGW0ZcuIgorCiAjfiBtc2dpZCAiQ291bGRuJ3QgZ2V0IHRoZSBNYW5pZmVzdCdzIFVSSSIKICN+IG1zZ3N0ciAi0J3QtSDQstC00LDQu9C+0YHRjyDQvtGC0YDQuNC80LDRgtC4INCw0LTRgNC10YHQuCBNYW5pZmVzdCIKIApkaWZmIC0tZ2l0IGEvcG8vdmkuZ21vIGIvcG8vdmkuZ21vCmluZGV4IDJmMTMwNDMuLjAyYmE0NzkgMTAwNjQ0Ci0tLSBhL3BvL3ZpLmdtbworKysgYi9wby92aS5nbW8KQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG8vdmkucG8gYi9wby92aS5wbwppbmRleCBjMWQ4ZjljLi5kOTU4MTE0IDEwMDY0NAotLS0gYS9wby92aS5wbworKysgYi9wby92aS5wbwpAQCAtOCw3ICs4LDcgQEAKIG1zZ3N0ciAiIgogIlByb2plY3QtSWQtVmVyc2lvbjogZ3N0LXBsdWdpbnMtYmFkIDEuNi4wXG4iCiAiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IGh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmcvXG4iCi0iUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDEtMjAgMTQ6MTcrMDIwMFxuIgorIlBPVC1DcmVhdGlvbi1EYXRlOiAyMDE2LTAzLTE1IDExOjQxKzAyMDBcbiIKICJQTy1SZXZpc2lvbi1EYXRlOiAyMDE1LTEwLTE2IDA4OjI3KzA3MDBcbiIKICJMYXN0LVRyYW5zbGF0b3I6IFRy4bqnbiBOZ+G7jWMgUXXDom4gPHZud2lsZG1hbkBnbWFpbC5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogVmlldG5hbWVzZSA8dHJhbnNsYXRpb24tdGVhbS12aUBsaXN0cy5zb3VyY2Vmb3JnZS5uZXQ+XG4iCkBAIC0yMywxMTEgKzIzLDYgQEAKIG1zZ2lkICJmb3JtYXQgd2Fzbid0IG5lZ290aWF0ZWQgYmVmb3JlIGdldCBmdW5jdGlvbiIKIG1zZ3N0ciAixJHhu4tuaCBk4bqhbmcga2jDtG5nIMSRxrDhu6NjIGTDoG4geOG6v3AgdHLGsOG7m2MgaMOgbSIKIAotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgImPDoWMgc+G7sSBraeG7h24gw6JtIHRoYW5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIGNobyDigJxhdWRpb3NpbmvigJ0iCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgY8OzIHRo4buDIHBow6F0IG5o4bqhYyB24bubaSBi4bqldCBr4buzIHPhu5EgbMaw4bujbmcgcGjhuqduIHThu60gxJHhuqd1IHJhIG7DoG8uIE3hu5l0IHPhu5EgY8OzICIKLSJ0aOG7gyBjaOG7jW4gbOG7sWEgbMOgIG9zc3NpbmssIHB1bHNlc2luayB2w6AgYWxzYXNpbmsuIOKAnGF1ZGlvc2lua+KAnSBjw7MgdGjhu4MgbMOgIMSRxrDhu51uZyAiCi0i4buRbmcgxJHhurdjIGJp4buHdCB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKLW1zZ3N0ciAibcO0IHThuqMgY2hvIGPDoWMgc+G7sSBraeG7h24gw6JtIHRoYW5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIGTDoG5oIGNobyDigJxhdWRpb3NpbmvigJ0iCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIGF1ZGlvc2luayBlbGVtZW50LiIKLW1zZ3N0ciAiTcO0IHThuqMgduG7gSBwaOG6p24gdOG7rSDigJxhdWRpb3NpbmvigJ0gxJHDoyBjaOG7jW4uIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIuKAnEdTdHJlYW1lciBhdWRpb3NpbmvigJ0gbeG6t2MgxJHhu4tuaCBkw6BuaCBjaG8gSOG7mWkgbmdo4buLIE5o4bqhYy9QaGltIgotCi1tc2dpZCAiIgotImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAibcO0IHThuqMgY2hvIEdTdHJlYW1lciBhdWRpb3NpbmsgbeG6t2MgxJHhu4tuaCBkw6BuaCBjaG8gSOG7mWkgbmdo4buLIE5o4bqhYy9QaGltIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJHU3RyZWFtZXIgYXVkaW9zaW5rIG3hurdjIMSR4buLbmggZMOgbmggY2hvIMOCbSBuaOG6oWMgdsOgIFBoaW0iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBNdXNpYyBhbmQgTW92aWVzIgotbXNnc3RyICJtw7QgdOG6oyBjaG8gR1N0cmVhbWVyIGF1ZGlvc2luayBt4bq3YyDEkeG7i25oIGTDoG5oIGNobyDDgm0gbmjhuqFjIHbDoCBQaGltIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJHU3RyZWFtZXIgdmlkZW9zaW5rIG3hurdjIMSR4buLbmgiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IHZpZGVvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIGFuZCBhYXNpbmsuIFRoZSB2aWRlb3NpbmsgIgotImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lciBjw7MgdGjhu4MgY2jhuqF5IHBoaW0gduG7m2kgYuG6pXQga+G7syBz4buRIGzGsOG7o25nIHBo4bqnbiB04butIMSR4bqndSByYSBuw6BvLiBN4buZdCBz4buRIGPDsyAiCi0idGjhu4MgY2jhu41uIGzhu7FhIGzDoCB4dmltYWdlc2luaywgeGltYWdlc2luaywgc2RsdmlkZW9zaW5rIHbDoCBhYXNpbmsuIOKAnHZpZGVvc2lua+KAnSAiCi0iY8OzIHRo4buDIGzDoCDEkcaw4budbmcg4buRbmcgxJHhurdjIGJp4buHdCB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zaW5rIgotbXNnc3RyICJtw7QgdOG6oyBwaOG6p24gdOG7rSBuZ3Xhu5NuIGjDrG5oIOG6o25oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aWRlb3NpbmsgZWxlbWVudC4iCi1tc2dzdHIgIk3DtCB04bqjIHBo4bqnbiB04butIHZpZGVvc2luayDEkcOjIGNo4buNbi4iCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAibmd14buTbiDDom0gdGhhbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgYXVkaW8gdXNpbmcgYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgb3Nzc3JjLCBwdWxzZXNyYyBhbmQgYWxzYXNyYy4gVGhlIGF1ZGlvIHNvdXJjZSBjYW4gYmUgYSBwYXJ0aWFsICIKLSJwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGPDsyB0aOG7gyBnaGkgw6JtIHRoYW5oIGTDuW5nIGJhbyBuaGnDqnUgcGjhuqduIHThu60gxJHhuqd1IHbDoG8gY8WpbmcgxJHGsOG7o2MuIE3hu5l0ICIKLSJz4buRIGzhu7FhIGNo4buNbiBsw6Agb3Nzc3JjLCBwbHVzZXNyYyB2w6AgYWxzYXNyYy4gTmd14buTbiDDom0gdGhhbmggY8OzIHRo4buDIGzDoCBjw6FjICIKLSLEkcaw4budbmcg4buRbmcgY+G7pWMgYuG7mSBuw6BvIMSRw7MgdGhheSB2w6wgY2jhu4kgbeG7mXQgcGjhuqduIHThu60gbmd14buTbi4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIm3DtCB04bqjIHBo4bqnbiB04butIG5ndeG7k24gw6JtIHRoYW5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgotCi1tc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NyYyBlbGVtZW50LiIKLW1zZ3N0ciAiTcO0IHThuqMgcGjhuqduIHThu60gbmd14buTbiDDom0gdGhhbmggxJHDoyBjaOG7jW4uIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIm5ndeG7k24gaMOsbmgg4bqjbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVyIGPDsyB0aOG7gyBjaOG6oXkgcGhpbSB24bubaSBi4bqldCBr4buzIHPhu5EgbMaw4bujbmcgcGjhuqduIHThu60gxJHhuqd1IHbDoG8gbsOgby4gTeG7mXQgc+G7kSAiCi0iY8OzIHRo4buDIGNo4buNbiBs4buxYSBsw6AgdjRsc3JjLCB2NGwyc3JjIHbDoCB2aWRlb3Rlc3RzcmMuIE5ndeG7k24gaMOsbmggY8OzIHRo4buDIGzDoCAiCi0ixJHGsOG7nW5nIOG7kW5nIMSR4bq3YyBiaeG7h3QgdGhheSB2w6wgY2jhu4kgbeG7mXQgcGjhuqduIHThu60uIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICJtw7QgdOG6oyBjaG8gbmd14buTbiBow6xuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIk3DtCB04bqjIHBo4bqnbiB04butIG5ndeG7k24gaMOsbmgg4bqjbmggxJHDoyBjaOG7jW4uIgotCi1tc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAiaGnhu4duIGjDrG5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcHV0IHZpc3VhbGl6YXRpb24gcGx1Z2lucyBpbiBhIHBpcGVsaW5lIHRvIHRyYW5zZm9ybSBhdWRpbyAiCi0ic3RyZWFtcyBpbiB2aWRlbyBmcmFtZXMuIFNvbWUgcG9zc2libGUgY2hvaWNlcyBhcmUgZ29vbSwgZ29vbTJrMSBhbmQgIgotInN5bmFlc3RoZXNpYS4gVGhlIHZpc3VhbGl6YXRpb24gcGx1Z2luIGNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiAiCi0ianVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXIgY8OzIHRo4buDIMSR4bq3dCBwaOG6p24gYuG7lSB4dW5nIGhp4buHbiBow6xuaCB0cm9uZyBt4buZdCDEkcaw4budbmcg4buRbmcgxJHhu4MgbcOgIGNodXnhu4NuICIKLSJk4bqhbmcgbHXhu5NuZyBk4buvIGxp4buHdSDDom0gdGhhbmggdHJvbmcga2h1bmcgaMOsbmggcGhpbS4gTeG7mXQgc+G7kSBjw7MgdGjhu4MgY2jhu41uIGzhu7FhIGzDoCAiCi0iZ29vbSwgZ29vbTJrMSB2w6Agc3luYWVzdGhlc2lhLiBQaOG6p24gYuG7lSB4dW5nIGhp4buHbiBow6xuaCBjw7MgdGjhu4MgbMOgIMSRxrDhu51uZyDhu5FuZyAiCi0ixJHhurdjIGJp4buHdCB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rS4iCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlzdWFsaXphdGlvbiIKLW1zZ3N0ciAibcO0IHThuqMgduG7gSBoaeG7h24gaMOsbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIk3DtCB04bqjIHbhu4EgcGjhuqduIHThu60gaGnhu4duIGjDrG5oIMSRw6MgY2jhu41uLiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiT3BlbkNWIGfhurdwIGzhu5dpIGtoaSB04bqjaSDhuqNuaCB04bqhbSB0aOG7nWkiCiAKQEAgLTI0Nyw2ICsxNDIsMTEyIEBACiBtc2dpZCAiQ291bGRuJ3QgZmluZCBkZXRhaWxzIGZvciBEVkIgY2hhbm5lbCAlcyIKIG1zZ3N0ciAiS2jDtG5nIHRo4buDIHTDrG0gdGjhuqV5IGNoaSB0aeG6v3QgY2hvIGvDqm5oIERWQiAlcyIKIAorI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgImPDoWMgc+G7sSBraeG7h24gw6JtIHRoYW5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIGNobyDigJxhdWRpb3NpbmvigJ0iCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgY8OzIHRo4buDIHBow6F0IG5o4bqhYyB24bubaSBi4bqldCBr4buzIHPhu5EgbMaw4bujbmcgcGjhuqduIHThu60gxJHhuqd1IHJhIG7DoG8uIE3hu5l0IHPhu5EgIgorI34gImPDsyB0aOG7gyBjaOG7jW4gbOG7sWEgbMOgIG9zc3NpbmssIHB1bHNlc2luayB2w6AgYWxzYXNpbmsuIOKAnGF1ZGlvc2lua+KAnSBjw7MgdGjhu4MgbMOgICIKKyN+ICLEkcaw4budbmcg4buRbmcgxJHhurdjIGJp4buHdCB0aGF5IHbDrCBjaOG7iSBt4buZdCBwaOG6p24gdOG7rS4iCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgc291bmQgZXZlbnRzIGF1ZGlvc2luayIKKyN+IG1zZ3N0ciAiIgorI34gIm3DtCB04bqjIGNobyBjw6FjIHPhu7Ega2nhu4duIMOibSB0aGFuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCBkw6BuaCBjaG8g4oCcYXVkaW9zaW5r4oCdIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCBhdWRpb3NpbmsgZWxlbWVudC4iCisjfiBtc2dzdHIgIk3DtCB04bqjIHbhu4EgcGjhuqduIHThu60g4oCcYXVkaW9zaW5r4oCdIMSRw6MgY2jhu41uLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgQXVkaW8vVmlkZW8gQ29uZmVyZW5jaW5nIgorI34gbXNnc3RyICLigJxHU3RyZWFtZXIgYXVkaW9zaW5r4oCdIG3hurdjIMSR4buLbmggZMOgbmggY2hvIEjhu5lpIG5naOG7iyBOaOG6oWMvUGhpbSIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIm3DtCB04bqjIGNobyBHU3RyZWFtZXIgYXVkaW9zaW5rIG3hurdjIMSR4buLbmggZMOgbmggY2hvIEjhu5lpIG5naOG7iyBOaOG6oWMvUGhpbSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIGF1ZGlvc2luayBt4bq3YyDEkeG7i25oIGTDoG5oIGNobyDDgm0gbmjhuqFjIHbDoCBQaGltIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc2luayBmb3IgTXVzaWMgYW5kIE1vdmllcyIKKyN+IG1zZ3N0ciAibcO0IHThuqMgY2hvIEdTdHJlYW1lciBhdWRpb3NpbmsgbeG6t2MgxJHhu4tuaCBkw6BuaCBjaG8gw4JtIG5o4bqhYyB2w6AgUGhpbSIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAiR1N0cmVhbWVyIHZpZGVvc2luayBt4bq3YyDEkeG7i25oIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXIgY8OzIHRo4buDIGNo4bqheSBwaGltIHbhu5tpIGLhuqV0IGvhu7Mgc+G7kSBsxrDhu6NuZyBwaOG6p24gdOG7rSDEkeG6p3UgcmEgbsOgby4gTeG7mXQgc+G7kSAiCisjfiAiY8OzIHRo4buDIGNo4buNbiBs4buxYSBsw6AgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayB2w6AgYWFzaW5rLiAiCisjfiAi4oCcdmlkZW9zaW5r4oCdIGPDsyB0aOG7gyBsw6AgxJHGsOG7nW5nIOG7kW5nIMSR4bq3YyBiaeG7h3QgdGhheSB2w6wgY2jhu4kgbeG7mXQgcGjhuqduIHThu60uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAibcO0IHThuqMgcGjhuqduIHThu60gbmd14buTbiBow6xuaCDhuqNuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICJNw7QgdOG6oyBwaOG6p24gdOG7rSB2aWRlb3NpbmsgxJHDoyBjaOG7jW4uIgorCisjfiBtc2dpZCAiZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgIm5ndeG7k24gw6JtIHRoYW5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBjw7MgdGjhu4MgZ2hpIMOibSB0aGFuaCBkw7luZyBiYW8gbmhpw6p1IHBo4bqnbiB04butIMSR4bqndSB2w6BvIGPFqW5nIMSRxrDhu6NjLiAiCisjfiAiTeG7mXQgc+G7kSBs4buxYSBjaOG7jW4gbMOgIG9zc3NyYywgcGx1c2VzcmMgdsOgIGFsc2FzcmMuIE5ndeG7k24gw6JtIHRoYW5oIGPDsyB0aOG7gyBsw6AgIgorI34gImPDoWMgxJHGsOG7nW5nIOG7kW5nIGPhu6VjIGLhu5kgbsOgbyDEkcOzIHRoYXkgdsOsIGNo4buJIG3hu5l0IHBo4bqnbiB04butIG5ndeG7k24uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIGF1ZGlvc3JjIgorI34gbXNnc3RyICJtw7QgdOG6oyBwaOG6p24gdOG7rSBuZ3Xhu5NuIMOibSB0aGFuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIk3DtCB04bqjIHBo4bqnbiB04butIG5ndeG7k24gw6JtIHRoYW5oIMSRw6MgY2jhu41uLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICJuZ3Xhu5NuIGjDrG5oIOG6o25oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIHZpZGVvIGZyb20gYW55IG51bWJlciBvZiBpbnB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgdjRsc3JjLCB2NGwyc3JjIGFuZCB2aWRlb3Rlc3RzcmMuIFRoZSB2aWRlbyBzb3VyY2UgIgorI34gImNhbiBiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lciBjw7MgdGjhu4MgY2jhuqF5IHBoaW0gduG7m2kgYuG6pXQga+G7syBz4buRIGzGsOG7o25nIHBo4bqnbiB04butIMSR4bqndSB2w6BvIG7DoG8uIE3hu5l0ICIKKyN+ICJz4buRIGPDsyB0aOG7gyBjaOG7jW4gbOG7sWEgbMOgIHY0bHNyYywgdjRsMnNyYyB2w6AgdmlkZW90ZXN0c3JjLiBOZ3Xhu5NuIGjDrG5oIGPDsyB0aOG7gyAiCisjfiAibMOgIMSRxrDhu51uZyDhu5FuZyDEkeG6t2MgYmnhu4d0IHRoYXkgdsOsIGNo4buJIG3hu5l0IHBo4bqnbiB04butLiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NyYyIKKyN+IG1zZ3N0ciAibcO0IHThuqMgY2hvIG5ndeG7k24gaMOsbmggR1N0cmVhbWVyIG3hurdjIMSR4buLbmgiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpZGVvc3JjIGVsZW1lbnQuIgorI34gbXNnc3RyICJNw7QgdOG6oyBwaOG6p24gdOG7rSBuZ3Xhu5NuIGjDrG5oIOG6o25oIMSRw6MgY2jhu41uLiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgImhp4buHbiBow6xuaCBHU3RyZWFtZXIgbeG6t2MgxJHhu4tuaCIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVyIGPDsyB0aOG7gyDEkeG6t3QgcGjhuqduIGLhu5UgeHVuZyBoaeG7h24gaMOsbmggdHJvbmcgbeG7mXQgxJHGsOG7nW5nIOG7kW5nIMSR4buDIG3DoCAiCisjfiAiY2h1eeG7g24gZOG6oW5nIGx14buTbmcgZOG7ryBsaeG7h3Ugw6JtIHRoYW5oIHRyb25nIGtodW5nIGjDrG5oIHBoaW0uIE3hu5l0IHPhu5EgY8OzIHRo4buDICIKKyN+ICJjaOG7jW4gbOG7sWEgbMOgIGdvb20sIGdvb20yazEgdsOgIHN5bmFlc3RoZXNpYS4gUGjhuqduIGLhu5UgeHVuZyBoaeG7h24gaMOsbmggY8OzIHRo4buDICIKKyN+ICJsw6AgxJHGsOG7nW5nIOG7kW5nIMSR4bq3YyBiaeG7h3QgdGhheSB2w6wgY2jhu4kgbeG7mXQgcGjhuqduIHThu60uIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgIm3DtCB04bqjIHbhu4EgaGnhu4duIGjDrG5oIEdTdHJlYW1lciBt4bq3YyDEkeG7i25oIgorCisjfiBtc2dpZCAiRGVzY3JpYmVzIHRoZSBzZWxlY3RlZCB2aXN1YWxpemF0aW9uIGVsZW1lbnQuIgorI34gbXNnc3RyICJNw7QgdOG6oyB24buBIHBo4bqnbiB04butIGhp4buHbiBow6xuaCDEkcOjIGNo4buNbi4iCisKICN+IG1zZ2lkICJDb3VsZG4ndCBnZXQgdGhlIE1hbmlmZXN0J3MgVVJJIgogI34gbXNnc3RyICJLaMO0bmcgdGjhu4MgbOG6pXkgVVJJIGPhu6dhIE1hbmlmZXN0IgogCmRpZmYgLS1naXQgYS9wby96aF9DTi5nbW8gYi9wby96aF9DTi5nbW8KaW5kZXggZWQwZDEwZi4uZDAyZGQ0NCAxMDA2NDQKLS0tIGEvcG8vemhfQ04uZ21vCisrKyBiL3BvL3poX0NOLmdtbwpCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9wby96aF9DTi5wbyBiL3BvL3poX0NOLnBvCmluZGV4IGRkYjAwZmMuLjkxOWM1ODIgMTAwNjQ0Ci0tLSBhL3BvL3poX0NOLnBvCisrKyBiL3BvL3poX0NOLnBvCkBAIC05LDcgKzksNyBAQAogbXNnc3RyICIiCiAiUHJvamVjdC1JZC1WZXJzaW9uOiBnc3QtcGx1Z2lucy1iYWQgMS42LjBcbiIKICJSZXBvcnQtTXNnaWQtQnVncy1UbzogaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9cbiIKLSJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxNi0wMS0yMCAxNDoxNyswMjAwXG4iCisiUE9ULUNyZWF0aW9uLURhdGU6IDIwMTYtMDMtMTUgMTE6NDErMDIwMFxuIgogIlBPLVJldmlzaW9uLURhdGU6IDIwMTUtMTAtMTYgMTk6MjcrMDgwMFxuIgogIkxhc3QtVHJhbnNsYXRvcjogVGlhbnplIFdhbmcgPHp3cHdqd3R6QDEyNi5jb20+XG4iCiAiTGFuZ3VhZ2UtVGVhbTogQ2hpbmVzZSAoc2ltcGxpZmllZCkgPGkxOG4temhAZ29vZ2xlZ3JvdXBzLmNvbT5cbiIKQEAgLTIyLDEwNyArMjIsNiBAQAogbXNnaWQgImZvcm1hdCB3YXNuJ3QgbmVnb3RpYXRlZCBiZWZvcmUgZ2V0IGZ1bmN0aW9uIgogbXNnc3RyICLlnKjosIPnlKhnZXTlh73mlbDkuYvliY3mnKrnoa7lrprlkIjpgILnmoTmoLzlvI8iCiAKLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgotbXNnc3RyICLpu5jorqRHU3RyZWFtZXLlo7Dpn7Pkuovku7bnmoTpn7PpopHmsYciCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiBiZSBhIHBhcnRpYWwgIgotInBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXLlj6/ku6Xkvb/nlKjku7vmhI/mlbDph4/nmoTovpPlh7rnu4Tku7bmkq3mlL7pn7PpopHjgILlj6/og73nmoTpgInmi6nmnIlvc3NzaW5r44CBcHVsc2VzaW5r5ZKMIgotImFsc2FzaW5r44CC6Z+z6aKR5rGH5Y+v5Lul5piv566h6YGT55qE5LiA6YOo5YiG77yM6ICM5LiN5LuF5LuF5Li65LiA5Liq57uE5Lu244CCIgotCi1tc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCi1tc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcuWjsOmfs+S6i+S7tueahOmfs+mikeaxh+eahOivtOaYjiIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICLmj4/ov7DpgInlrprnmoTpn7PpopHmsYfnu4Tku7YiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKLW1zZ3N0ciAi55So5LqO6Z+zL+inhumikeS8muiurueahOm7mOiupEdzdHJlYW1lcumfs+mikeaxhyIKLQotbXNnaWQgIiIKLSJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCi1tc2dzdHIgIuacieWFs+eUqOS6jumfsy/op4bpopHkvJrorq7nmoTpu5jorqRHc3RyZWFtZXLpn7PpopHmsYfnmoTmj4/ov7AiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIueUqOS6jumfs+S5kOWSjOeUteW9seeahOm7mOiupEdzdHJlYW1lcumfs+mikeaxhyIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCi1tc2dzdHIgIuacieWFs+mfs+S5kOWSjOeUteW9seeahOm7mOiupEdzdHJlYW1lcumfs+mikeaxh+eahOaPj+i/sCIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKLW1zZ3N0ciAi6buY6K6kR1N0cmVhbWVy55qE6KeG6aKR5rGHIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSBwb3NzaWJsZSAiCi0iY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiBUaGUgdmlkZW9zaW5rICIKLSJjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCi1tc2dzdHIgIiIKLSJHU3RyZWFtZXLlj6/ku6Xkvb/nlKjku7vmhI/mlbDph4/nmoTovpPlh7rnu4Tku7bmkq3mlL7op4bpopHjgILlj6/og73nmoTpgInmi6nmnIl4dmltYWdlc2lua+OAgSIKLSJ4aW1hZ2VzaW5r44CBc2RsdmlkZW9zaW5r5ZKMYWFzaW5r44CC6KeG6aKR5rGH5Y+v5Lul5piv566h6YGT55qE5LiA6YOo5YiG77yM6ICM5LiN5LuF5LuF5Li65LiA5Liq57uEIgotIuS7tuOAgiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCi1tc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcuinhumikeaxh+eahOaPj+i/sCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgotbXNnc3RyICLmj4/ov7DpgInlrprnmoTop4bpopHmsYfnu4Tku7YiCi0KLW1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKLW1zZ3N0ciAi6buY6K6kR1N0cmVhbWVy6Z+z6aKR5rqQIgotCi1tc2dpZCAiIgotIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgcG9zc2libGUgIgotImNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuIGJlIGEgcGFydGlhbCAiCi0icGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKLW1zZ3N0ciAiIgotIkdTdHJlYW1lcuWPr+S7peS9v+eUqOS7u+aEj+aVsOmHj+eahOi+k+WFpee7hOS7tuadpeiusOW9lemfs+mikeOAguWPr+iDveeahOmAieaLqeaciW9zc3NyY+OAgXB1bHNlc3Jj5ZKMIgotImFsc2FzcmPjgILpn7PpopHmupDlj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4Tku7bjgIIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCi1tc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcumfs+mikea6kOeahOaPj+i/sCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIuaPj+i/sOmAieWumueahOmfs+mikea6kOe7hOS7tiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgotbXNnc3RyICLpu5jorqRHU3RyZWFtZXLop4bpopHmupAiCi0KLW1zZ2lkICIiCi0iR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lIHBvc3NpYmxlICIKLSJjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSBjYW4gYmUgYSAiCi0icGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVy5Y+v5Lul5L2/55So5Lu75oSP5pWw6YeP55qE6L6T5Ye657uE5Lu25pKt5pS+6KeG6aKR44CC5Y+v6IO955qE6YCJ5oup5pyJdjRsc3Jj44CBdjRsMnNyY+WSjCIKLSJ2aWRlb3Rlc3RzcmPjgILop4bpopHmupDlj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4Tku7bjgIIiCi0KLW1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCi1tc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcuinhumikea6kOeahOaPj+i/sCIKLQotbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCi1tc2dzdHIgIuaPj+i/sOmAieWumueahOinhumikea6kOe7hOS7tiIKLQotbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCi1tc2dzdHIgIum7mOiupEdzdHJlYW1lcuWPr+inhuWMlue7hOS7tiIKLQotbXNnaWQgIiIKLSJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgotInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKLSJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YgIgotImp1c3Qgb25lIGVsZW1lbnQuIgotbXNnc3RyICIiCi0iR1N0cmVhbWVy5Y+v5Lul5bCG5Y+v6KeG5YyW5o+S5Lu25Yqg6L295LqO566h6YGT5Lit77yM5bm25Zyo6KeG6aKR5bin5Lit5Lyg6YCS6Z+z6aKR5rWB44CC5Y+v6IO955qE6YCJ5oup5pyJIgotImdvb23jgIFnb29tMmsx5ZKMc3luYWVzdGhlc2lh44CC5Y+v6KeG5YyW5o+S5Lu25Y+v5Lul5piv566h6YGT55qE5LiA6YOo5YiG77yM6ICM5LiN5LuF5LuF5Li65LiA5Liq57uEIgotIuS7tuOAgiIKLQotbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgotbXNnc3RyICLmnInlhbPpu5jorqRHc3RyZWFtZXLlj6/op4bljJbnu4Tku7bnmoTmj4/ov7AiCi0KLW1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCi1tc2dzdHIgIuaPj+i/sOmAieWumueahOWPr+inhuWMlue7hOS7tiIKLQogbXNnaWQgIk9wZW5DViBmYWlsZWQgdG8gbG9hZCB0ZW1wbGF0ZSBpbWFnZSIKIG1zZ3N0ciAiT3BlbkNW5Yqg6L295qih54mI5Zu+54mH5aSx6LSlIgogCkBAIC0yMzUsNiArMTM0LDEwNyBAQAogbXNnaWQgIkNvdWxkbid0IGZpbmQgZGV0YWlscyBmb3IgRFZCIGNoYW5uZWwgJXMiCiBtc2dzdHIgIuaXoOazleiOt+WPlkRWQumAmumBkyAlcyDnmoTor6bnu4bkv6Hmga8iCiAKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBzb3VuZCBldmVudHMgYXVkaW9zaW5rIgorI34gbXNnc3RyICLpu5jorqRHU3RyZWFtZXLlo7Dpn7Pkuovku7bnmoTpn7PpopHmsYciCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiBwbGF5IGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2Ygb3V0cHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSBvc3NzaW5rLCBwdWxzZXNpbmsgYW5kIGFsc2FzaW5rLiBUaGUgYXVkaW9zaW5rIGNhbiAiCisjfiAiYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXLlj6/ku6Xkvb/nlKjku7vmhI/mlbDph4/nmoTovpPlh7rnu4Tku7bmkq3mlL7pn7PpopHjgILlj6/og73nmoTpgInmi6nmnIlvc3NzaW5r44CBIgorI34gInB1bHNlc2lua+WSjGFsc2FzaW5r44CC6Z+z6aKR5rGH5Y+v5Lul5piv566h6YGT55qE5LiA6YOo5YiG77yM6ICM5LiN5LuF5LuF5Li65LiA5Liq57uE5Lu244CCIgorCisjfiBtc2dpZCAiZGVzY3JpcHRpb24gZm9yIGRlZmF1bHQgR1N0cmVhbWVyIHNvdW5kIGV2ZW50cyBhdWRpb3NpbmsiCisjfiBtc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcuWjsOmfs+S6i+S7tueahOmfs+mikeaxh+eahOivtOaYjiIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICLmj4/ov7DpgInlrprnmoTpn7PpopHmsYfnu4Tku7YiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIEF1ZGlvL1ZpZGVvIENvbmZlcmVuY2luZyIKKyN+IG1zZ3N0ciAi55So5LqO6Z+zL+inhumikeS8muiurueahOm7mOiupEdzdHJlYW1lcumfs+mikeaxhyIKKworI34gbXNnaWQgIiIKKyN+ICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zaW5rIGZvciBBdWRpby9WaWRlbyBDb25mZXJlbmNpbmciCisjfiBtc2dzdHIgIuacieWFs+eUqOS6jumfsy/op4bpopHkvJrorq7nmoTpu5jorqRHc3RyZWFtZXLpn7PpopHmsYfnmoTmj4/ov7AiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgIueUqOS6jumfs+S5kOWSjOeUteW9seeahOm7mOiupEdzdHJlYW1lcumfs+mikeaxhyIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NpbmsgZm9yIE11c2ljIGFuZCBNb3ZpZXMiCisjfiBtc2dzdHIgIuacieWFs+mfs+S5kOWSjOeUteW9seeahOm7mOiupEdzdHJlYW1lcumfs+mikeaxh+eahOaPj+i/sCIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc2luayIKKyN+IG1zZ3N0ciAi6buY6K6kR1N0cmVhbWVy55qE6KeG6aKR5rGHIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcGxheSB2aWRlbyB1c2luZyBhbnkgbnVtYmVyIG9mIG91dHB1dCBlbGVtZW50cy4gU29tZSAiCisjfiAicG9zc2libGUgY2hvaWNlcyBhcmUgeHZpbWFnZXNpbmssIHhpbWFnZXNpbmssIHNkbHZpZGVvc2luayBhbmQgYWFzaW5rLiAiCisjfiAiVGhlIHZpZGVvc2luayBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgb2YganVzdCBvbmUgZWxlbWVudC4iCisjfiBtc2dzdHIgIiIKKyN+ICJHU3RyZWFtZXLlj6/ku6Xkvb/nlKjku7vmhI/mlbDph4/nmoTovpPlh7rnu4Tku7bmkq3mlL7op4bpopHjgILlj6/og73nmoTpgInmi6nmnIl4dmltYWdlc2lua+OAgSIKKyN+ICJ4aW1hZ2VzaW5r44CBc2RsdmlkZW9zaW5r5ZKMYWFzaW5r44CC6KeG6aKR5rGH5Y+v5Lul5piv566h6YGT55qE5LiA6YOo5YiG77yM6ICM5LiN5LuF5LuF5Li65LiA5LiqIgorI34gIue7hOS7tuOAgiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aWRlb3NpbmsiCisjfiBtc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcuinhumikeaxh+eahOaPj+i/sCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zaW5rIGVsZW1lbnQuIgorI34gbXNnc3RyICLmj4/ov7DpgInlrprnmoTop4bpopHmsYfnu4Tku7YiCisKKyN+IG1zZ2lkICJkZWZhdWx0IEdTdHJlYW1lciBhdWRpb3NyYyIKKyN+IG1zZ3N0ciAi6buY6K6kR1N0cmVhbWVy6Z+z6aKR5rqQIgorCisjfiBtc2dpZCAiIgorI34gIkdTdHJlYW1lciBjYW4gcmVjb3JkIGF1ZGlvIHVzaW5nIGFueSBudW1iZXIgb2YgaW5wdXQgZWxlbWVudHMuIFNvbWUgIgorI34gInBvc3NpYmxlIGNob2ljZXMgYXJlIG9zc3NyYywgcHVsc2VzcmMgYW5kIGFsc2FzcmMuIFRoZSBhdWRpbyBzb3VyY2UgY2FuICIKKyN+ICJiZSBhIHBhcnRpYWwgcGlwZWxpbmUgaW5zdGVhZCBvZiBqdXN0IG9uZSBlbGVtZW50LiIKKyN+IG1zZ3N0ciAiIgorI34gIkdTdHJlYW1lcuWPr+S7peS9v+eUqOS7u+aEj+aVsOmHj+eahOi+k+WFpee7hOS7tuadpeiusOW9lemfs+mikeOAguWPr+iDveeahOmAieaLqeaciW9zc3NyY+OAgSIKKyN+ICJwdWxzZXNyY+WSjGFsc2FzcmPjgILpn7PpopHmupDlj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4Tku7bjgIIiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgYXVkaW9zcmMiCisjfiBtc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcumfs+mikea6kOeahOaPj+i/sCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgYXVkaW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIuaPj+i/sOmAieWumueahOmfs+mikea6kOe7hOS7tiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpZGVvc3JjIgorI34gbXNnc3RyICLpu5jorqRHU3RyZWFtZXLop4bpopHmupAiCisKKyN+IG1zZ2lkICIiCisjfiAiR1N0cmVhbWVyIGNhbiByZWNvcmQgdmlkZW8gZnJvbSBhbnkgbnVtYmVyIG9mIGlucHV0IGVsZW1lbnRzLiBTb21lICIKKyN+ICJwb3NzaWJsZSBjaG9pY2VzIGFyZSB2NGxzcmMsIHY0bDJzcmMgYW5kIHZpZGVvdGVzdHNyYy4gVGhlIHZpZGVvIHNvdXJjZSAiCisjfiAiY2FuIGJlIGEgcGFydGlhbCBwaXBlbGluZSBpbnN0ZWFkIG9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVy5Y+v5Lul5L2/55So5Lu75oSP5pWw6YeP55qE6L6T5Ye657uE5Lu25pKt5pS+6KeG6aKR44CC5Y+v6IO955qE6YCJ5oup5pyJdjRsc3Jj44CBdjRsMnNyY+WSjCIKKyN+ICJ2aWRlb3Rlc3RzcmPjgILop4bpopHmupDlj6/ku6XmmK/nrqHpgZPnmoTkuIDpg6jliIbvvIzogIzkuI3ku4Xku4XkuLrkuIDkuKrnu4Tku7bjgIIiCisKKyN+IG1zZ2lkICJkZXNjcmlwdGlvbiBmb3IgZGVmYXVsdCBHU3RyZWFtZXIgdmlkZW9zcmMiCisjfiBtc2dzdHIgIuacieWFs+m7mOiupEdTdHJlYW1lcuinhumikea6kOeahOaPj+i/sCIKKworI34gbXNnaWQgIkRlc2NyaWJlcyB0aGUgc2VsZWN0ZWQgdmlkZW9zcmMgZWxlbWVudC4iCisjfiBtc2dzdHIgIuaPj+i/sOmAieWumueahOinhumikea6kOe7hOS7tiIKKworI34gbXNnaWQgImRlZmF1bHQgR1N0cmVhbWVyIHZpc3VhbGl6YXRpb24iCisjfiBtc2dzdHIgIum7mOiupEdzdHJlYW1lcuWPr+inhuWMlue7hOS7tiIKKworI34gbXNnaWQgIiIKKyN+ICJHU3RyZWFtZXIgY2FuIHB1dCB2aXN1YWxpemF0aW9uIHBsdWdpbnMgaW4gYSBwaXBlbGluZSB0byB0cmFuc2Zvcm0gYXVkaW8gIgorI34gInN0cmVhbXMgaW4gdmlkZW8gZnJhbWVzLiBTb21lIHBvc3NpYmxlIGNob2ljZXMgYXJlIGdvb20sIGdvb20yazEgYW5kICIKKyN+ICJzeW5hZXN0aGVzaWEuIFRoZSB2aXN1YWxpemF0aW9uIHBsdWdpbiBjYW4gYmUgYSBwYXJ0aWFsIHBpcGVsaW5lIGluc3RlYWQgIgorI34gIm9mIGp1c3Qgb25lIGVsZW1lbnQuIgorI34gbXNnc3RyICIiCisjfiAiR1N0cmVhbWVy5Y+v5Lul5bCG5Y+v6KeG5YyW5o+S5Lu25Yqg6L295LqO566h6YGT5Lit77yM5bm25Zyo6KeG6aKR5bin5Lit5Lyg6YCS6Z+z6aKR5rWB44CC5Y+v6IO955qE6YCJ5oupIgorI34gIuaciWdvb23jgIFnb29tMmsx5ZKMc3luYWVzdGhlc2lh44CC5Y+v6KeG5YyW5o+S5Lu25Y+v5Lul5piv566h6YGT55qE5LiA6YOo5YiG77yM6ICM5LiN5LuF5LuF5Li65LiAIgorI34gIuS4que7hOS7tuOAgiIKKworI34gbXNnaWQgImRlc2NyaXB0aW9uIGZvciBkZWZhdWx0IEdTdHJlYW1lciB2aXN1YWxpemF0aW9uIgorI34gbXNnc3RyICLmnInlhbPpu5jorqRHc3RyZWFtZXLlj6/op4bljJbnu4Tku7bnmoTmj4/ov7AiCisKKyN+IG1zZ2lkICJEZXNjcmliZXMgdGhlIHNlbGVjdGVkIHZpc3VhbGl6YXRpb24gZWxlbWVudC4iCisjfiBtc2dzdHIgIuaPj+i/sOmAieWumueahOWPr+inhuWMlue7hOS7tiIKKwogI34gbXNnaWQgIkludGVybmFsIGNsb2NrIGVycm9yLiIKICN+IG1zZ3N0ciAi5YaF6YOo5pe26ZKf6ZSZ6K+v44CCIgogCmRpZmYgLS1naXQgYS9zeXMvTWFrZWZpbGUuYW0gYi9zeXMvTWFrZWZpbGUuYW0KaW5kZXggMTA1MWNlNS4uMzJmNzlmYiAxMDA2NDQKLS0tIGEvc3lzL01ha2VmaWxlLmFtCisrKyBiL3N5cy9NYWtlZmlsZS5hbQpAQCAtMjgsMTIgKzI4LDYgQEAKIEJMVUVaX0RJUj0KIGVuZGlmCiAKLSMgaWYgVVNFX0NEUk9NCi0jICBDRFJPTV9ESVI9Y2Ryb20KLSMgZWxzZQotIyBDRFJPTV9ESVI9Ci0jIGVuZGlmCi0KIGlmIFVTRV9XQVNBUEkKIFdBU0FQSV9ESVI9d2FzYXBpCiBlbHNlCkBAIC0xNDIsOSArMTM2LDIyIEBACiBVVkNIMjY0X0RJUj0KIGVuZGlmCiAKLVNVQkRJUlMgPSAkKEFDTV9ESVIpICQoQU5EUk9JRF9NRURJQV9ESVIpICQoQVBQTEVfTUVESUFfRElSKSAkKEFWQ19ESVIpICQoQkxVRVpfRElSKSAkKEQzRFZJREVPU0lOS19ESVIpICQoREVDS0xJTktfRElSKSAkKERJUkVDVFNPVU5EX0RJUikgJChXSU5LU19ESVIpICQoRFZCX0RJUikgJChGQkRFVl9ESVIpICQoTElOU1lTX0RJUikgJChPUEVOU0xFU19ESVIpICQoUFZSX0RJUikgJChTSE1fRElSKSAkKFVWQ0gyNjRfRElSKSAkKFZDRF9ESVIpICQoVkRQQVVfRElSKSAkKFdJTklORVRfRElSKSAkKFdJTlNDUkVFTkNBUF9ESVIpICQoV0FTQVBJX0RJUikKK2lmIFVTRV9OVkVOQworTlZFTkNfRElSPW52ZW5jCitlbHNlCitOVkVOQ19ESVI9CitlbmRpZgorCitpZiBVU0VfVElOWUFMU0EKK1RJTllBTFNBX0RJUj10aW55YWxzYQorZWxzZQorVElOWUFMU0FfRElSPQorZW5kaWYKKworU1VCRElSUyA9ICQoQUNNX0RJUikgJChBTkRST0lEX01FRElBX0RJUikgJChBUFBMRV9NRURJQV9ESVIpICQoQVZDX0RJUikgJChCTFVFWl9ESVIpICQoRDNEVklERU9TSU5LX0RJUikgJChERUNLTElOS19ESVIpICQoRElSRUNUU09VTkRfRElSKSAkKFdJTktTX0RJUikgJChEVkJfRElSKSAkKEZCREVWX0RJUikgJChMSU5TWVNfRElSKSAkKE9QRU5TTEVTX0RJUikgJChQVlJfRElSKSAkKFNITV9ESVIpICQoVVZDSDI2NF9ESVIpICQoVkNEX0RJUikgJChWRFBBVV9ESVIpICQoV0lOSU5FVF9ESVIpICQoV0lOU0NSRUVOQ0FQX0RJUikgJChXQVNBUElfRElSKSAkKE5WRU5DX0RJUikgJChUSU5ZQUxTQV9ESVIpCiAKIERJU1RfU1VCRElSUyA9IGFjbWVuYyBhY21tcDNkZWMgYW5kcm9pZG1lZGlhIGFwcGxlbWVkaWEgYXBwbGVtZWRpYS1ub25wdWJsaWMgYXZjIGJsdWV6IGQzZHZpZGVvc2luayBkZWNrbGluayBkaXJlY3Rzb3VuZCBkdmIgbGluc3lzIGZiZGV2IGRzaG93ZGVjd3JhcHBlciBkc2hvd3NyY3dyYXBwZXIgZHNob3d2aWRlb3NpbmsgXAotCQlvcGVuc2xlcyBwdnIyZCBzaG0gdXZjaDI2NCB2Y2QgdmRwYXUgd2FzYXBpIHdpbmluZXQgd2lua3Mgd2luc2NyZWVuY2FwCisJCW9wZW5zbGVzIHB2cjJkIHNobSB1dmNoMjY0IHZjZCB2ZHBhdSB3YXNhcGkgd2luaW5ldCB3aW5rcyB3aW5zY3JlZW5jYXAgXAorCQludmVuYyB0aW55YWxzYQogCiBpbmNsdWRlICQodG9wX3NyY2RpcikvY29tbW9uL3BhcmFsbGVsLXN1YmRpcnMubWFrCmRpZmYgLS1naXQgYS9zeXMvTWFrZWZpbGUuaW4gYi9zeXMvTWFrZWZpbGUuaW4KaW5kZXggNDY0NGZhNy4uYWQ2OWNlNyAxMDA2NDQKLS0tIGEvc3lzL01ha2VmaWxlLmluCisrKyBiL3N5cy9NYWtlZmlsZS5pbgpAQCAtMTE5LDE2ICsxMTksMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI1Myw2ICsyNTIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI5MCw2ICsyOTEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5OCw3ICszMDEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTcsOCArMzE5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMzNSwxNiArMzM4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM3MCw2ICszNzQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zOTUsNiArNDAxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDk2LDYgKzUwNCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDksOCArNTE4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTI2LDYgKzUzMyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01ODMsMTYgKzU5MiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY0NCw2ICs2NTUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjU0LDYgKzY2Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY2Myw2ICs2NzYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzAwLDcgKzcxNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzUxLDEyICs3NjUsNiBAQAogQFVTRV9CTFVFWl9GQUxTRUBCTFVFWl9ESVIgPSAKIEBVU0VfQkxVRVpfVFJVRUBCTFVFWl9ESVIgPSBibHVlegogQFVTRV9XQVNBUElfRkFMU0VAV0FTQVBJX0RJUiA9IAotCi0jIGlmIFVTRV9DRFJPTQotIyAgQ0RST01fRElSPWNkcm9tCi0jIGVsc2UKLSMgQ0RST01fRElSPQotIyBlbmRpZgogQFVTRV9XQVNBUElfVFJVRUBXQVNBUElfRElSID0gd2FzYXBpCiBAVVNFX0RJUkVDVDNEX0ZBTFNFQEQzRFZJREVPU0lOS19ESVIgPSAKIEBVU0VfRElSRUNUM0RfVFJVRUBEM0RWSURFT1NJTktfRElSID0gZDNkdmlkZW9zaW5rCkBAIC04MDAsOSArODA4LDE0IEBACiBAVVNFX1dJTlNDUkVFTkNBUF9UUlVFQFdJTlNDUkVFTkNBUF9ESVIgPSB3aW5zY3JlZW5jYXAKIEBVU0VfVVZDSDI2NF9GQUxTRUBVVkNIMjY0X0RJUiA9IAogQFVTRV9VVkNIMjY0X1RSVUVAVVZDSDI2NF9ESVIgPSB1dmNoMjY0Ci1TVUJESVJTID0gJChBQ01fRElSKSAkKEFORFJPSURfTUVESUFfRElSKSAkKEFQUExFX01FRElBX0RJUikgJChBVkNfRElSKSAkKEJMVUVaX0RJUikgJChEM0RWSURFT1NJTktfRElSKSAkKERFQ0tMSU5LX0RJUikgJChESVJFQ1RTT1VORF9ESVIpICQoV0lOS1NfRElSKSAkKERWQl9ESVIpICQoRkJERVZfRElSKSAkKExJTlNZU19ESVIpICQoT1BFTlNMRVNfRElSKSAkKFBWUl9ESVIpICQoU0hNX0RJUikgJChVVkNIMjY0X0RJUikgJChWQ0RfRElSKSAkKFZEUEFVX0RJUikgJChXSU5JTkVUX0RJUikgJChXSU5TQ1JFRU5DQVBfRElSKSAkKFdBU0FQSV9ESVIpCitAVVNFX05WRU5DX0ZBTFNFQE5WRU5DX0RJUiA9IAorQFVTRV9OVkVOQ19UUlVFQE5WRU5DX0RJUiA9IG52ZW5jCitAVVNFX1RJTllBTFNBX0ZBTFNFQFRJTllBTFNBX0RJUiA9IAorQFVTRV9USU5ZQUxTQV9UUlVFQFRJTllBTFNBX0RJUiA9IHRpbnlhbHNhCitTVUJESVJTID0gJChBQ01fRElSKSAkKEFORFJPSURfTUVESUFfRElSKSAkKEFQUExFX01FRElBX0RJUikgJChBVkNfRElSKSAkKEJMVUVaX0RJUikgJChEM0RWSURFT1NJTktfRElSKSAkKERFQ0tMSU5LX0RJUikgJChESVJFQ1RTT1VORF9ESVIpICQoV0lOS1NfRElSKSAkKERWQl9ESVIpICQoRkJERVZfRElSKSAkKExJTlNZU19ESVIpICQoT1BFTlNMRVNfRElSKSAkKFBWUl9ESVIpICQoU0hNX0RJUikgJChVVkNIMjY0X0RJUikgJChWQ0RfRElSKSAkKFZEUEFVX0RJUikgJChXSU5JTkVUX0RJUikgJChXSU5TQ1JFRU5DQVBfRElSKSAkKFdBU0FQSV9ESVIpICQoTlZFTkNfRElSKSAkKFRJTllBTFNBX0RJUikKIERJU1RfU1VCRElSUyA9IGFjbWVuYyBhY21tcDNkZWMgYW5kcm9pZG1lZGlhIGFwcGxlbWVkaWEgYXBwbGVtZWRpYS1ub25wdWJsaWMgYXZjIGJsdWV6IGQzZHZpZGVvc2luayBkZWNrbGluayBkaXJlY3Rzb3VuZCBkdmIgbGluc3lzIGZiZGV2IGRzaG93ZGVjd3JhcHBlciBkc2hvd3NyY3dyYXBwZXIgZHNob3d2aWRlb3NpbmsgXAotCQlvcGVuc2xlcyBwdnIyZCBzaG0gdXZjaDI2NCB2Y2QgdmRwYXUgd2FzYXBpIHdpbmluZXQgd2lua3Mgd2luc2NyZWVuY2FwCisJCW9wZW5zbGVzIHB2cjJkIHNobSB1dmNoMjY0IHZjZCB2ZHBhdSB3YXNhcGkgd2luaW5ldCB3aW5rcyB3aW5zY3JlZW5jYXAgXAorCQludmVuYyB0aW55YWxzYQogCiBhbGw6IGFsbC1yZWN1cnNpdmUKIApkaWZmIC0tZ2l0IGEvc3lzL2FjbWVuYy9NYWtlZmlsZS5pbiBiL3N5cy9hY21lbmMvTWFrZWZpbGUuaW4KaW5kZXggMWZjZjNlOC4uMDY5Y2RiZSAxMDA2NDQKLS0tIGEvc3lzL2FjbWVuYy9NYWtlZmlsZS5pbgorKysgYi9zeXMvYWNtZW5jL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjcxLDYgKzI3MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA4LDYgKzMwOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE2LDcgKzMxOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNSw4ICszMzcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzUzLDE2ICszNTYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg4LDYgKzM5Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxMyw2ICs0MTksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTQsNiArNTIyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyNyw4ICs1MzYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDQsNiArNTUxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMSwxNiArNjEwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjYyLDYgKzY3Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzIsNiArNjg0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgxLDYgKzY5NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTgsNyArNzMzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvYWNtZW5jL2FjbWVuYy5jIGIvc3lzL2FjbWVuYy9hY21lbmMuYwppbmRleCA5OWEwODA0Li43YTFjMWZmIDEwMDY0NAotLS0gYS9zeXMvYWNtZW5jL2FjbWVuYy5jCisrKyBiL3N5cy9hY21lbmMvYWNtZW5jLmMKQEAgLTUwLDcgKzUwLDcgQEAKIAogc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIGFjbWVuY19zaW5rX3RlbXBsYXRlID0KIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLCBHU1RfUEFEX0FMV0FZUywgR1NUX1NUQVRJQ19DQVBTICgiYXVkaW8veC1yYXctaW50LCAiCisgICAgR1NUX1BBRF9TSU5LLCBHU1RfUEFEX0FMV0FZUywgR1NUX1NUQVRJQ19DQVBTICgiYXVkaW8veC1yYXcsICIKICAgICAgICAgImRlcHRoID0gKGludCkxNiwgIgogICAgICAgICAid2lkdGggPSAoaW50KTE2LCAiCiAgICAgICAgICJlbmRpYW5uZXNzID0gKGludCkiIEdfU1RSSU5HSUZZIChHX0JZVEVfT1JERVIpICIsICIKQEAgLTEwNiw3ICsxMDYsNyBAQAogYWNtZW5jX2NhcHNfZnJvbV9mb3JtYXQgKFdBVkVGT1JNQVRFWCAqIGZtdCkKIHsKICAgcmV0dXJuIGdzdF9yaWZmX2NyZWF0ZV9hdWRpb19jYXBzIChmbXQtPndGb3JtYXRUYWcsIE5VTEwsCi0gICAgICAoZ3N0X3JpZmZfc3RyZl9hdWRzICopIGZtdCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICAoZ3N0X3JpZmZfc3RyZl9hdWRzICopIGZtdCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMjYxLDEwICsyNjEsOCBAQAogICAgIGdzdF9jYXBzX3VucmVmIChlbmMtPm91dHB1dF9jYXBzKTsKICAgICBlbmMtPm91dHB1dF9jYXBzID0gTlVMTDsKICAgfQotICBpZiAoZW5jLT5oZWFkZXIucGJTcmMpCi0gICAgZ19mcmVlIChlbmMtPmhlYWRlci5wYlNyYyk7Ci0gIGlmIChlbmMtPmhlYWRlci5wYkRzdCkKLSAgICBnX2ZyZWUgKGVuYy0+aGVhZGVyLnBiRHN0KTsKKyAgZ19mcmVlIChlbmMtPmhlYWRlci5wYlNyYyk7CisgIGdfZnJlZSAoZW5jLT5oZWFkZXIucGJEc3QpOwogICBtZW1zZXQgKCZlbmMtPmhlYWRlciwgMCwgc2l6ZW9mIChlbmMtPmhlYWRlcikpOwogICBpZiAoZW5jLT5zdHJlYW0pIHsKICAgICBhY21TdHJlYW1DbG9zZSAoZW5jLT5zdHJlYW0sIDApOwpAQCAtMzAwLDggKzI5OCwxOCBAQAogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwogICBpZiAoZW5jLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkID4gMCkgewogICAgIEdzdEJ1ZmZlciAqb3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChlbmMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQpOwotICAgIG1lbWNweSAoR1NUX0JVRkZFUl9EQVRBIChvdXRidWYpLCBlbmMtPmhlYWRlci5wYkRzdCwKLSAgICAgICAgZW5jLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkKTsKKyAgICBpZiAoIW91dGJ1ZikgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsICJjYW5ub3QgYWxsb2NhdGUgYSBuZXcgR3N0QnVmZmVyIik7CisgICAgICBnb3RvIGRvbmVfcHVzaF9vdXRwdXQ7CisgICAgfQorCisgICAgaWYgKGdzdF9idWZmZXJfZmlsbCAob3V0YnVmLCAwLCBlbmMtPmhlYWRlci5wYkRzdCwKKyAgICAgICAgICAgIGVuYy0+aGVhZGVyLmNiRHN0TGVuZ3RoVXNlZCkgIT0gZW5jLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkKSB7CisgICAgICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWYpOworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsICJ1bmFibGUgdG8gZmlsbCBvdXRwdXQgYnVmZmVyIik7CisgICAgICBnb3RvIGRvbmVfcHVzaF9vdXRwdXQ7CisgICAgfQorCiAgICAgaWYgKGVuYy0+b3V0Zm10LT5uQXZnQnl0ZXNQZXJTZWMgPiAwKSB7CiAKICAgICAgIC8qIFdlIGhhdmUgYSBiaXRyYXRlLCBzbyB3ZSBjYW4gY3JlYXRlIGEgdGltZXN0YW1wLCBob3BlZnVsbHkgKi8KQEAgLTMxNCwxOCArMzIyLDI0IEBACiAgICAgICAgIGVuYy0+aGVhZGVyLmNiRHN0TGVuZ3RoVXNlZCk7CiAgICAgcmV0ID0gZ3N0X3BhZF9wdXNoIChlbmMtPnNyY3BhZCwgb3V0YnVmKTsKICAgfQorCitkb25lX3B1c2hfb3V0cHV0OgogICByZXR1cm4gcmV0OwogfQogCiBzdGF0aWMgR3N0Rmxvd1JldHVybgotYWNtZW5jX2NoYWluIChHc3RQYWQgKiBwYWQsIEdzdEJ1ZmZlciAqIGJ1ZikKK2FjbWVuY19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZikKIHsKICAgTU1SRVNVTFQgcmVzOwogICBBQ01FbmMgKmVuYyA9IChBQ01FbmMgKikgR1NUX1BBRF9QQVJFTlQgKHBhZCk7Ci0gIGd1Y2hhciAqZGF0YSA9IEdTVF9CVUZGRVJfREFUQSAoYnVmKTsKLSAgZ2ludCBsZW4gPSBHU1RfQlVGRkVSX1NJWkUgKGJ1Zik7CisgIEdzdE1hcEluZm8gbWFwOworICBndWNoYXIgKmRhdGE7CisgIGdpbnQgbGVuOwogICBpbnQgY2h1bmtsZW47CiAgIEdzdEZsb3dSZXR1cm4gcmV0ID0gR1NUX0ZMT1dfT0s7CisgIGdzdF9idWZmZXJfbWFwIChidWYsICZtYXAsIEdTVF9NQVBfUkVBRCk7CisgIGxlbiA9IG1hcC5zaXplOworICBkYXRhID0gbWFwLmRhdGE7CiAgIHdoaWxlIChsZW4pIHsKICAgICBjaHVua2xlbiA9IE1JTiAobGVuLCBBQ01fQlVGRkVSX1NJWkUgLSBlbmMtPm9mZnNldCk7CiAgICAgbWVtY3B5IChlbmMtPmhlYWRlci5wYlNyYyArIGVuYy0+b2Zmc2V0LCBkYXRhLCBjaHVua2xlbik7CkBAIC0zNTgsNiArMzcyLDcgQEAKICAgICAvKiBXcml0ZSBvdXQgYW55IGRhdGEgcHJvZHVjZWQgKi8KICAgICBhY21lbmNfcHVzaF9vdXRwdXQgKGVuYyk7CiAgIH0KKyAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKICAgcmV0dXJuIHJldDsKIH0KIApAQCAtMzgzLDExICszOTgsMTYgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1hY21lbmNfc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RFdmVudCAqIGV2ZW50KQorYWNtZW5jX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQogewogICBBQ01FbmMgKmVuYyA9IChBQ01FbmMgKikgR1NUX1BBRF9QQVJFTlQgKHBhZCk7CiAgIGdib29sZWFuIHJlczsKICAgc3dpdGNoIChHU1RfRVZFTlRfVFlQRSAoZXZlbnQpKSB7CisgICAgY2FzZSBHU1RfRVZFTlRfQ0FQUzp7CisgICAgICBHc3RDYXBzICpjYXBzOworICAgICAgZ3N0X2V2ZW50X3BhcnNlX2NhcHMgKGV2ZW50LCAmY2Fwcyk7CisgICAgICByZXR1cm4gYWNtZW5jX3Npbmtfc2V0Y2FwcyAocGFkLCBjYXBzKTsKKyAgICB9CiAgICAgY2FzZSBHU1RfRVZFTlRfRU9TOgogICAgICAgYWNtZW5jX2ZpbmlzaF9zdHJlYW0gKGVuYyk7CiAgICAgICByZXMgPSBnc3RfcGFkX3B1c2hfZXZlbnQgKGVuYy0+c3JjcGFkLCBldmVudCk7CkBAIC00MTEsOCArNDMxLDYgQEAKIHsKICAgZW5jLT5zaW5rcGFkID0KICAgICAgIGdzdF9wYWRfbmV3X2Zyb21fc3RhdGljX3RlbXBsYXRlICgmYWNtZW5jX3NpbmtfdGVtcGxhdGUsICJzaW5rIik7Ci0gIGdzdF9wYWRfc2V0X3NldGNhcHNfZnVuY3Rpb24gKGVuYy0+c2lua3BhZCwKLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChhY21lbmNfc2lua19zZXRjYXBzKSk7CiAgIGdzdF9wYWRfc2V0X2NoYWluX2Z1bmN0aW9uIChlbmMtPnNpbmtwYWQsIEdTVF9ERUJVR19GVU5DUFRSIChhY21lbmNfY2hhaW4pKTsKICAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKGVuYy0+c2lua3BhZCwKICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChhY21lbmNfc2lua19ldmVudCkpOwpAQCAtNDUzLDYgKzQ3MSwxMiBAQAogYWNtZW5jX2NsYXNzX2luaXQgKEFDTUVuY0NsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdGNsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKKyAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgQUNNRW5jUGFyYW1zICpwYXJhbXM7CisgIEFDTURSSVZFUkRFVEFJTFMgZHJpdmVyZGV0YWlsczsKKyAgZ2NoYXIgKnNob3J0bmFtZSwgKmxvbmduYW1lLCAqZGV0YWlsLCAqZGVzY3JpcHRpb247CisgIE1NUkVTVUxUIHJlczsKKwogICBwYXJlbnRfY2xhc3MgPSAoR3N0RWxlbWVudENsYXNzICopIGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOwogICBnb2JqZWN0Y2xhc3MtPmRpc3Bvc2UgPSBhY21lbmNfZGlzcG9zZTsKICAgZ29iamVjdGNsYXNzLT5zZXRfcHJvcGVydHkgPSBhY21lbmNfc2V0X3Byb3BlcnR5OwpAQCAtNDYwLDE1ICs0ODQsNiBAQAogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0Y2xhc3MsIEFSR19CSVRSQVRFLAogICAgICAgZ19wYXJhbV9zcGVjX2ludCAoImJpdHJhdGUiLCAiQml0cmF0ZSIsICJCaXRyYXRlIHRvIGVuY29kZSBhdCAoaW4gYnBzKSIsCiAgICAgICAgICAgMCwgMTAwMDAwMCwgREVGQVVMVF9CSVRSQVRFLCBHX1BBUkFNX1JFQURXUklURSkpOwotfSBzdGF0aWMgdm9pZAotCi1hY21lbmNfYmFzZV9pbml0IChBQ01FbmNDbGFzcyAqIGtsYXNzKQotewotICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwotICBBQ01FbmNQYXJhbXMgKnBhcmFtczsKLSAgQUNNRFJJVkVSREVUQUlMUyBkcml2ZXJkZXRhaWxzOwotICBnY2hhciAqc2hvcnRuYW1lLCAqbG9uZ25hbWUsICpkZXRhaWwsICpkZXNjcmlwdGlvbjsKLSAgTU1SRVNVTFQgcmVzOwogCiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCiAgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZhY21lbmNfc2lua190ZW1wbGF0ZSkpOwpAQCAtNTQ3LDcgKzU2Miw3IEBACiAgIEdUeXBlIHR5cGU7CiAgIEdUeXBlSW5mbyB0eXBlaW5mbyA9IHsKICAgICBzaXplb2YgKEFDTUVuY0NsYXNzKSwKLSAgICAoR0Jhc2VJbml0RnVuYykgYWNtZW5jX2Jhc2VfaW5pdCwgTlVMTCwKKyAgICBOVUxMLCBOVUxMLAogICAgIChHQ2xhc3NJbml0RnVuYykgYWNtZW5jX2NsYXNzX2luaXQsIE5VTEwsIE5VTEwsIHNpemVvZiAoQUNNRW5jKSwKICAgICAwLCAoR0luc3RhbmNlSW5pdEZ1bmMpIGFjbWVuY19pbml0LAogICB9OwpkaWZmIC0tZ2l0IGEvc3lzL2FjbW1wM2RlYy9NYWtlZmlsZS5pbiBiL3N5cy9hY21tcDNkZWMvTWFrZWZpbGUuaW4KaW5kZXggZWM0YmU1NC4uYWVhNjYzOSAxMDA2NDQKLS0tIGEvc3lzL2FjbW1wM2RlYy9NYWtlZmlsZS5pbgorKysgYi9zeXMvYWNtbXAzZGVjL01ha2VmaWxlLmluCkBAIC0xMTUsMTYgKzExNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjcxLDYgKzI3MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA4LDYgKzMwOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE2LDcgKzMxOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzNSw4ICszMzcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzUzLDE2ICszNTYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg4LDYgKzM5Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxMyw2ICs0MTksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTQsNiArNTIyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyNyw4ICs1MzYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDQsNiArNTUxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwMSwxNiArNjEwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjYyLDYgKzY3Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzIsNiArNjg0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjgxLDYgKzY5NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTgsNyArNzMzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvYWNtbXAzZGVjL2FjbW1wM2RlYy5jIGIvc3lzL2FjbW1wM2RlYy9hY21tcDNkZWMuYwppbmRleCBlNmQzNGJhLi43NTM3NjkxIDEwMDY0NAotLS0gYS9zeXMvYWNtbXAzZGVjL2FjbW1wM2RlYy5jCisrKyBiL3N5cy9hY21tcDNkZWMvYWNtbXAzZGVjLmMKQEAgLTM2LDYgKzM2LDEyIEBACiAgICAgICAoYWNtbXAzZGVjX2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9BQ01fTVAzX0RFQyhvYmopIFwKICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9BQ01fTVAzX0RFQyxBQ01NUDNEZWMpKQorI2RlZmluZSBHU1RfQUNNX01QM19ERUNfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfQUNNX01QM19ERUMsQUNNTVAzRGVjQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfQUNNX01QM19ERUMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9BQ01fTVAzX0RFQykpCisjZGVmaW5lIEdTVF9JU19BQ01fTVAzX0RFQ19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9BQ01fTVAzX0RFQykpCiAKICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGFjbW1wM2RlY19kZWJ1ZwogR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoYWNtbXAzZGVjX2RlYnVnKTsKQEAgLTQ0LDcgKzUwLDcgQEAKIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKICAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdy1pbnQsICIKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgIgogICAgICAgICAiZGVwdGggPSAoaW50KTE2LCAiCiAgICAgICAgICJ3aWR0aCA9IChpbnQpMTYsICIKICAgICAgICAgImVuZGlhbm5lc3MgPSAoaW50KSIgR19TVFJJTkdJRlkgKEdfQllURV9PUkRFUikgIiwgIgpAQCAtOTYsMTMgKzEwMiwxNCBAQAogCiBHVHlwZSBhY21tcDNkZWNfZ2V0X3R5cGUgKHZvaWQpOwogCi1HU1RfQk9JTEVSUExBVEUgKEFDTU1QM0RlYywgYWNtbXAzZGVjLCBHc3RFbGVtZW50LCBHU1RfVFlQRV9FTEVNRU5UKTsKKyNkZWZpbmUgYWNtbXAzZGVjX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEUgKEFDTU1QM0RlYywgYWNtbXAzZGVjLCBHU1RfVFlQRV9FTEVNRU5UKTsKIAogc3RhdGljIEdzdENhcHMgKgogYWNtbXAzZGVjX2NhcHNfZnJvbV9mb3JtYXQgKFdBVkVGT1JNQVRFWCAqIGZtdCkKIHsKICAgcmV0dXJuIGdzdF9yaWZmX2NyZWF0ZV9hdWRpb19jYXBzIChmbXQtPndGb3JtYXRUYWcsCi0gICAgICBOVUxMLCAoZ3N0X3JpZmZfc3RyZl9hdWRzICopIGZtdCwgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgICBOVUxMLCAoZ3N0X3JpZmZfc3RyZl9hdWRzICopIGZtdCwgTlVMTCwgTlVMTCwgTlVMTCwgTlVMTCk7CiB9CiAKIHN0YXRpYyBnYm9vbGVhbgpAQCAtMjAxLDEwICsyMDgsOCBAQAogCiAgIGlmIChkZWMtPmhlYWRlci5mZHdTdGF0dXMgJiBBQ01TVFJFQU1IRUFERVJfU1RBVFVTRl9QUkVQQVJFRCkKICAgICBhY21TdHJlYW1VbnByZXBhcmVIZWFkZXIgKGRlYy0+c3RyZWFtLCAmZGVjLT5oZWFkZXIsIDApOwotICBpZiAoZGVjLT5oZWFkZXIucGJTcmMpCi0gICAgZ19mcmVlIChkZWMtPmhlYWRlci5wYlNyYyk7Ci0gIGlmIChkZWMtPmhlYWRlci5wYkRzdCkKLSAgICBnX2ZyZWUgKGRlYy0+aGVhZGVyLnBiRHN0KTsKKyAgZ19mcmVlIChkZWMtPmhlYWRlci5wYlNyYyk7CisgIGdfZnJlZSAoZGVjLT5oZWFkZXIucGJEc3QpOwogICBtZW1zZXQgKCZkZWMtPmhlYWRlciwgMCwgc2l6ZW9mIChkZWMtPmhlYWRlcikpOwogCiAgIGlmIChkZWMtPnN0cmVhbSkgewpAQCAtMjQxLDIxICsyNDYsMjggQEAKIAogICBpZiAoZGVjLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkID4gMCkgewogICAgIEdzdEJ1ZmZlciAqb3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChkZWMtPmhlYWRlci5jYkRzdExlbmd0aFVzZWQpOwotICAgIG1lbWNweSAoR1NUX0JVRkZFUl9EQVRBIChvdXRidWYpLCBkZWMtPmhlYWRlci5wYkRzdCwKLSAgICAgICAgZGVjLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkKTsKKyAgICBpZiAoIW91dGJ1ZikgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZWMsICJjYW5ub3QgYWxsb2NhdGUgYSBuZXcgR3N0QnVmZmVyIik7CisgICAgICBnb3RvIGRvbmVfcHVzaF9vdXRwdXQ7CisgICAgfQorCisgICAgaWYgKGdzdF9idWZmZXJfZmlsbCAob3V0YnVmLCAwLCBkZWMtPmhlYWRlci5wYkRzdCwKKyAgICAgICAgICAgIGRlYy0+aGVhZGVyLmNiRHN0TGVuZ3RoVXNlZCkgIT0gZGVjLT5oZWFkZXIuY2JEc3RMZW5ndGhVc2VkKSB7CisgICAgICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWYpOworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZWMsICJ1bmFibGUgdG8gZmlsbCBvdXRwdXQgYnVmZmVyIik7CisgICAgICBnb3RvIGRvbmVfcHVzaF9vdXRwdXQ7CisgICAgfQogCiAgICAgaWYgKGRlYy0+dGltZXN0YW1wICE9IEdTVF9DTE9DS19USU1FX05PTkUpCiAgICAgICBHU1RfQlVGRkVSX1RJTUVTVEFNUCAob3V0YnVmKSA9IGRlYy0+dGltZXN0YW1wOwogICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKG91dGJ1ZikgPQotICAgICAgICBnc3RfdXRpbF91aW50NjRfc2NhbGVfaW50IChHU1RfQlVGRkVSX1NJWkUgKG91dGJ1ZiksIEdTVF9TRUNPTkQsCisgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZV9pbnQgKGRlYy0+aGVhZGVyLmNiRHN0TGVuZ3RoVXNlZCwgR1NUX1NFQ09ORCwKICAgICAgICAgZGVjLT5yYXRlICogZGVjLT5jaGFubmVscyAqIDIpOwogCiAgICAgR1NUX0RFQlVHX09CSkVDVCAoZGVjLCAiZGVjb2RlZCBidWZmZXIgaGFzIHRzICVkLCBkdXJhdGlvbiAlZCIsCiAgICAgICAgIChpbnQpIChHU1RfQlVGRkVSX1RJTUVTVEFNUCAob3V0YnVmKSksCiAgICAgICAgIChpbnQpIChHU1RfQlVGRkVSX0RVUkFUSU9OIChvdXRidWYpKSk7CiAKLSAgICBnc3RfYnVmZmVyX3NldF9jYXBzIChvdXRidWYsIGRlYy0+b3V0cHV0X2NhcHMpOwotCiAgICAgaWYgKGRlYy0+dGltZXN0YW1wICE9IEdTVF9DTE9DS19USU1FX05PTkUpCiAgICAgICBkZWMtPnRpbWVzdGFtcCArPSBHU1RfQlVGRkVSX0RVUkFUSU9OIChvdXRidWYpOwogCkBAIC0yNjUsMjAgKzI3NywyMSBAQAogICB9IGVsc2UKICAgICBHU1RfREVCVUdfT0JKRUNUIChkZWMsICJOb3QgcHVzaGluZyBkZWNvZGVkIGJ1ZmZlciwgbm8gb3V0cHV0Iik7CiAKLQorZG9uZV9wdXNoX291dHB1dDoKICAgcmV0dXJuIHJldDsKIH0KIAogc3RhdGljIEdzdEZsb3dSZXR1cm4KLWFjbW1wM2RlY19jaGFpbiAoR3N0UGFkICogcGFkLCBHc3RCdWZmZXIgKiBidWYpCithY21tcDNkZWNfY2hhaW4gKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RCdWZmZXIgKiBidWYpCiB7CiAgIE1NUkVTVUxUIHJlczsKICAgQUNNTVAzRGVjICpkZWMgPSAoQUNNTVAzRGVjICopIEdTVF9QQURfUEFSRU5UIChwYWQpOwotICBndWNoYXIgKmRhdGEgPSBHU1RfQlVGRkVSX0RBVEEgKGJ1Zik7Ci0gIGdpbnQgbGVuID0gR1NUX0JVRkZFUl9TSVpFIChidWYpOworICBHc3RNYXBJbmZvIG1hcDsKICAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKIAotICBpZiAobGVuID4gQUNNX0JVRkZFUl9TSVpFKSB7CisgIGdzdF9idWZmZXJfbWFwIChidWYsICZtYXAsIEdTVF9NQVBfUkVBRCk7CisKKyAgaWYgKG1hcC5zaXplID4gQUNNX0JVRkZFUl9TSVpFKSB7CiAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZWMsICJJbXBvc3NpYmx5IGxhcmdlIG1wMyBmcmFtZSEiKTsKICAgICByZXQgPSBHU1RfRkxPV19FUlJPUjsKICAgICBnb3RvIGRvbmU7CkBAIC0yOTAsOCArMzAzLDggQEAKICAgICBkZWMtPnRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOwogICB9CiAKLSAgbWVtY3B5IChkZWMtPmhlYWRlci5wYlNyYywgZGF0YSwgbGVuKTsKLSAgZGVjLT5oZWFkZXIuY2JTcmNMZW5ndGggPSBsZW47CisgIG1lbWNweSAoZGVjLT5oZWFkZXIucGJTcmMsIG1hcC5kYXRhLCBtYXAuc2l6ZSk7CisgIGRlYy0+aGVhZGVyLmNiU3JjTGVuZ3RoID0gbWFwLnNpemU7CiAKICAgLyogTm93IHdlIGhhdmUgYSBidWZmZXIgcmVhZHkgdG8gZ28gKi8KICAgcmVzID0gYWNtU3RyZWFtQ29udmVydCAoZGVjLT5zdHJlYW0sICZkZWMtPmhlYWRlciwKQEAgLTMxNiw2ICszMjksNyBAQAogICB9CiAKIGRvbmU6CisgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJm1hcCk7CiAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CiAKICAgcmV0dXJuIHJldDsKQEAgLTM0MiwxMSArMzU2LDE2IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotYWNtbXAzZGVjX3NpbmtfZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0RXZlbnQgKiBldmVudCkKK2FjbW1wM2RlY19zaW5rX2V2ZW50IChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0RXZlbnQgKiBldmVudCkKIHsKICAgQUNNTVAzRGVjICpkZWMgPSAoQUNNTVAzRGVjICopIEdTVF9QQURfUEFSRU5UIChwYWQpOwogCiAgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgeworICAgIGNhc2UgR1NUX0VWRU5UX0NBUFM6eworICAgICAgR3N0Q2FwcyAqY2FwczsKKyAgICAgIGdzdF9ldmVudF9wYXJzZV9jYXBzIChldmVudCwgJmNhcHMpOworICAgICAgcmV0dXJuIGFjbW1wM2RlY19zaW5rX3NldGNhcHMgKHBhZCwgY2Fwcyk7CisgICAgfQogICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKICAgICAgIGFjbW1wM2RlY19maW5pc2hfc3RyZWFtIChkZWMpOwogICAgICAgYnJlYWs7CkBAIC0zNzUsMTIgKzM5NCwxMCBAQAogfQogCiBzdGF0aWMgdm9pZAotYWNtbXAzZGVjX2luaXQgKEFDTU1QM0RlYyAqIGRlYywgQUNNTVAzRGVjQ2xhc3MgKiBkZWNjbGFzcykKK2FjbW1wM2RlY19pbml0IChBQ01NUDNEZWMgKiBkZWMpCiB7CiAgIGRlYy0+c2lua3BhZCA9CiAgICAgICBnc3RfcGFkX25ld19mcm9tX3N0YXRpY190ZW1wbGF0ZSAoJmFjbW1wM2RlY19zaW5rX3RlbXBsYXRlLCAic2luayIpOwotICBnc3RfcGFkX3NldF9zZXRjYXBzX2Z1bmN0aW9uIChkZWMtPnNpbmtwYWQsCi0gICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoYWNtbXAzZGVjX3Npbmtfc2V0Y2FwcykpOwogICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoZGVjLT5zaW5rcGFkLAogICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGFjbW1wM2RlY19jaGFpbikpOwogICBnc3RfcGFkX3NldF9ldmVudF9mdW5jdGlvbiAoZGVjLT5zaW5rcGFkLApAQCAtMzk3LDEzICs0MTQsOCBAQAogYWNtbXAzZGVjX2NsYXNzX2luaXQgKEFDTU1QM0RlY0NsYXNzICoga2xhc3MpCiB7CiAgIEdPYmplY3RDbGFzcyAqZ29iamVjdGNsYXNzID0gKEdPYmplY3RDbGFzcyAqKSBrbGFzczsKLSAgZ29iamVjdGNsYXNzLT5kaXNwb3NlID0gYWNtbXAzZGVjX2Rpc3Bvc2U7Ci19Ci0KLXN0YXRpYyB2b2lkCi1hY21tcDNkZWNfYmFzZV9pbml0IChncG9pbnRlciBrbGFzcykKLXsKICAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgZ29iamVjdGNsYXNzLT5kaXNwb3NlID0gYWNtbXAzZGVjX2Rpc3Bvc2U7CiAKICAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKICAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmFjbW1wM2RlY19zaW5rX3RlbXBsYXRlKSk7CmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmFtIGIvc3lzL2FuZHJvaWRtZWRpYS9NYWtlZmlsZS5hbQppbmRleCA1ZmNmYjhmLi43YWQ5YjZlIDEwMDY0NAotLS0gYS9zeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmFtCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuYW0KQEAgLTEsMjYgKzEsNDQgQEAKIHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdGFuZHJvaWRtZWRpYS5sYQogCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGFfU09VUkNFUyA9IFwKLQlnc3RhbWMuYyBcCisJZ3N0YWhjc3JjLmMgXAogCWdzdGFtY2F1ZGlvZGVjLmMgXAorCWdzdGFtYy5jIFwKKwlnc3RhbWNzdXJmYWNlLmMgXAorCWdzdGFtY3N1cmZhY2V0ZXh0dXJlLmMgXAogCWdzdGFtY3ZpZGVvZGVjLmMgXAogCWdzdGFtY3ZpZGVvZW5jLmMgXAorCWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMgXAorCWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMgXAorCWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jIFwKIAlnc3Rqbml1dGlscy5jCiAKIG5vaW5zdF9IRUFERVJTID0gXAotCWdzdGFtYy5oIFwKLQlnc3RhbWMtY29uc3RhbnRzLmggXAorCWdzdGFoY3NyYy5oIFwKIAlnc3RhbWNhdWRpb2RlYy5oIFwKKwlnc3RhbWMtY29uc3RhbnRzLmggXAorCWdzdGFtYy5oIFwKKwlnc3RhbWNzdXJmYWNlLmggXAorCWdzdGFtY3N1cmZhY2V0ZXh0dXJlLmggXAogCWdzdGFtY3ZpZGVvZGVjLmggXAogCWdzdGFtY3ZpZGVvZW5jLmggXAorCWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmggXAorCWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmggXAorCWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oIFwKIAlnc3Rqbml1dGlscy5oCiAKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQ0ZMQUdTKSBcCi0JJChPUkNfQ0ZMQUdTKQorCSQoT1JDX0NGTEFHUykgXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkKKwogbGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQkFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2ludGVyZmFjZXMvbGliZ3N0cGhvdG9ncmFwaHktJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKIAktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKIAktbGdzdHBidXRpbHMtQEdTVF9BUElfVkVSU0lPTkAgXApAQCAtMzAsMyArNDgsOCBAQAogCSQoT1JDX0xJQlMpCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQogbGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCisKK2FuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIgPSAkKGRhdGFkaXIpL2dzdC1hbmRyb2lkL25kay1idWlsZC9hbmRyb2lkbWVkaWEvCithbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzX0RBVEEgPSBcCisJb3JnL2ZyZWVkZXNrdG9wL2dzdHJlYW1lci9hbmRyb2lkbWVkaWEvR3N0QWhjQ2FsbGJhY2suamF2YSBcCisJb3JnL2ZyZWVkZXNrdG9wL2dzdHJlYW1lci9hbmRyb2lkbWVkaWEvR3N0QW1jT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyLmphdmEKZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuaW4gYi9zeXMvYW5kcm9pZG1lZGlhL01ha2VmaWxlLmluCmluZGV4IGNhZDc0ODQuLjk0NmEyYjYgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvTWFrZWZpbGUuaW4KKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9NYWtlZmlsZS5pbgpAQCAtMTUsNiArMTUsNyBAQAogQFNFVF9NQUtFQAogCiAKKwogVlBBVEggPSBAc3JjZGlyQAogYW1fX2lzX2dudV9tYWtlID0geyBcCiAgIGlmIHRlc3QgLXogJyQoTUFLRUxFVkVMKSc7IHRoZW4gXApAQCAtMTE2LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjEsMTYgKzE2MSwyNCBAQAogICAgIHx8IHsgZWNobyAiICggY2QgJyQkZGlyJyAmJiBybSAtZiIgJCRmaWxlcyAiKSI7IFwKICAgICAgICAgICQoYW1fX2NkKSAiJCRkaXIiICYmIHJtIC1mICQkZmlsZXM7IH07IFwKICAgfQotYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCithbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIgXAorCSIkKERFU1RESVIpJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSIKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0YW5kcm9pZG1lZGlhX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitsaWJnc3RhbmRyb2lkbWVkaWFfbGFfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9pbnRlcmZhY2VzL2xpYmdzdHBob3RvZ3JhcGh5LSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC0kKEdTVF9BUElfVkVSU0lPTikubGEgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0YW5kcm9pZG1lZGlhX2xhX09CSkVDVFMgPSBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLmxvIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpCithbV9saWJnc3RhbmRyb2lkbWVkaWFfbGFfT0JKRUNUUyA9IGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMubG8gXAogCWxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNhdWRpb2RlYy5sbyBcCisJbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbyBcCisJbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UubG8gXAorCWxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5sbyBcCiAJbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3ZpZGVvZGVjLmxvIFwKIAlsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9lbmMubG8gXAorCWxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5sbyBcCisJbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmxvIFwKKwlsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmxvIFwKIAlsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0am5pdXRpbHMubG8KIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RhbmRyb2lkbWVkaWFfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKQEAgLTIyMiw2ICsyMzAsNyBAQAogICAgIG58bm98Tk8pIGZhbHNlOzsgXAogICAgICopIChpbnN0YWxsLWluZm8gLS12ZXJzaW9uKSA+L2Rldi9udWxsIDI+JjE7OyBcCiAgIGVzYWMKK0RBVEEgPSAkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNfREFUQSkKIEhFQURFUlMgPSAkKG5vaW5zdF9IRUFERVJTKQogYW1fX3RhZ2dlZF9maWxlcyA9ICQoSEVBREVSUykgJChTT1VSQ0VTKSAkKFRBR1NfRklMRVMpICQoTElTUCkKICMgUmVhZCBhIGxpc3Qgb2YgbmV3bGluZS1zZXBhcmF0ZWQgc3RyaW5ncyBmcm9tIHRoZSBzdGFuZGFyZCBpbnB1dCwKQEAgLTI3OSw2ICsyODgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNiw2ICszMjcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNCw3ICszMzcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDMsOCArMzU1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MSwxNiArMzc0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Niw2ICs0MTAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjEsNiArNDM3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIyLDYgKzU0MCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzUsOCArNTU0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUyLDYgKzU2OSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDksMTYgKzYyOCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MCw2ICs2OTEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgwLDYgKzcwMiw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OSw2ICs3MTIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI2LDcgKzc1MSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzY4LDI3ICs3OTIsNDQgQEAKIHdheWxhbmRfc2Nhbm5lciA9IEB3YXlsYW5kX3NjYW5uZXJACiBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3RhbmRyb2lkbWVkaWEubGEKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9TT1VSQ0VTID0gXAotCWdzdGFtYy5jIFwKKwlnc3RhaGNzcmMuYyBcCiAJZ3N0YW1jYXVkaW9kZWMuYyBcCisJZ3N0YW1jLmMgXAorCWdzdGFtY3N1cmZhY2UuYyBcCisJZ3N0YW1jc3VyZmFjZXRleHR1cmUuYyBcCiAJZ3N0YW1jdmlkZW9kZWMuYyBcCiAJZ3N0YW1jdmlkZW9lbmMuYyBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYyBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYyBcCisJZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMgXAogCWdzdGpuaXV0aWxzLmMKIAogbm9pbnN0X0hFQURFUlMgPSBcCi0JZ3N0YW1jLmggXAotCWdzdGFtYy1jb25zdGFudHMuaCBcCisJZ3N0YWhjc3JjLmggXAogCWdzdGFtY2F1ZGlvZGVjLmggXAorCWdzdGFtYy1jb25zdGFudHMuaCBcCisJZ3N0YW1jLmggXAorCWdzdGFtY3N1cmZhY2UuaCBcCisJZ3N0YW1jc3VyZmFjZXRleHR1cmUuaCBcCiAJZ3N0YW1jdmlkZW9kZWMuaCBcCiAJZ3N0YW1jdmlkZW9lbmMuaCBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaCBcCisJZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaCBcCisJZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmggXAogCWdzdGpuaXV0aWxzLmgKIAogbGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9DRkxBR1MpIFwKLQkkKE9SQ19DRkxBR1MpCisJJChPUkNfQ0ZMQUdTKSBcCisJLURHU1RfVVNFX1VOU1RBQkxFX0FQSQogCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvaW50ZXJmYWNlcy9saWJnc3RwaG90b2dyYXBoeS0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgXAogCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgXAogCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCkBAIC03OTksNiArODQwLDExIEBACiAKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTID0gJChHU1RfUExVR0lOX0xJQlRPT0xGTEFHUykKK2FuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNkaXIgPSAkKGRhdGFkaXIpL2dzdC1hbmRyb2lkL25kay1idWlsZC9hbmRyb2lkbWVkaWEvCithbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzX0RBVEEgPSBcCisJb3JnL2ZyZWVkZXNrdG9wL2dzdHJlYW1lci9hbmRyb2lkbWVkaWEvR3N0QWhjQ2FsbGJhY2suamF2YSBcCisJb3JnL2ZyZWVkZXNrdG9wL2dzdHJlYW1lci9hbmRyb2lkbWVkaWEvR3N0QW1jT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyLmphdmEKKwogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtODc3LDggKzkyMywxNCBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YWhjc3JjLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNhdWRpb2RlYy5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNlLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2V0ZXh0dXJlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3ZpZGVvZGVjLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3ZpZGVvZW5jLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGpuaXV0aWxzLlBsb0BhbV9fcXVvdGVACkBAIC05MDcsMTIgKzk1OSwxMiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLmxvOiBnc3RhbWMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG8gYHRlc3QgLWYgJ2dzdGFtYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWMuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0YW1jLmMnIG9iamVjdD0nbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFoY3NyYy5sbzogZ3N0YWhjc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YWhjc3JjLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YWhjc3JjLlRwbyAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YWhjc3JjLmxvIGB0ZXN0IC1mICdnc3RhaGNzcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YWhjc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMuVHBvICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YWhjc3JjLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdGFoY3NyYy5jJyBvYmplY3Q9J2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhaGNzcmMubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG8gYHRlc3QgLWYgJ2dzdGFtYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWMuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFoY3NyYy5sbyBgdGVzdCAtZiAnZ3N0YWhjc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFoY3NyYy5jCiAKIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNhdWRpb2RlYy5sbzogZ3N0YW1jYXVkaW9kZWMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNhdWRpb2RlYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY2F1ZGlvZGVjLlRwbyAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jYXVkaW9kZWMubG8gYHRlc3QgLWYgJ2dzdGFtY2F1ZGlvZGVjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtY2F1ZGlvZGVjLmMKQEAgLTkyMSw2ICs5NzMsMjcgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNhdWRpb2RlYy5sbyBgdGVzdCAtZiAnZ3N0YW1jYXVkaW9kZWMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YW1jYXVkaW9kZWMuYwogCitsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jLmxvOiBnc3RhbWMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMubG8gYHRlc3QgLWYgJ2dzdGFtYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0YW1jLmMnIG9iamVjdD0nbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtYy5sbyBgdGVzdCAtZiAnZ3N0YW1jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtYy5jCisKK2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNlLmxvOiBnc3RhbWNzdXJmYWNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNlLmxvIGB0ZXN0IC1mICdnc3RhbWNzdXJmYWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtY3N1cmZhY2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UuVHBvICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3RhbWNzdXJmYWNlLmMnIG9iamVjdD0nbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2UubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNlLmxvIGB0ZXN0IC1mICdnc3RhbWNzdXJmYWNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdGFtY3N1cmZhY2UuYworCitsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZXRleHR1cmUubG86IGdzdGFtY3N1cmZhY2V0ZXh0dXJlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZXRleHR1cmUubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5UcG8gLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3N1cmZhY2V0ZXh0dXJlLmxvIGB0ZXN0IC1mICdnc3RhbWNzdXJmYWNldGV4dHVyZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWNzdXJmYWNldGV4dHVyZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZXRleHR1cmUuVHBvICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZXRleHR1cmUuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0YW1jc3VyZmFjZXRleHR1cmUuYycgb2JqZWN0PSdsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jc3VyZmFjZXRleHR1cmUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWNzdXJmYWNldGV4dHVyZS5sbyBgdGVzdCAtZiAnZ3N0YW1jc3VyZmFjZXRleHR1cmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0YW1jc3VyZmFjZXRleHR1cmUuYworCiBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9kZWMubG86IGdzdGFtY3ZpZGVvZGVjLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9kZWMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3RhbWN2aWRlb2RlYy5UcG8gLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3ZpZGVvZGVjLmxvIGB0ZXN0IC1mICdnc3RhbWN2aWRlb2RlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWN2aWRlb2RlYy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9kZWMuVHBvICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0YW1jdmlkZW9kZWMuUGxvCkBAIC05MzUsNiArMTAwOCwyNyBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGFtY3ZpZGVvZW5jLmxvIGB0ZXN0IC1mICdnc3RhbWN2aWRlb2VuYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RhbWN2aWRlb2VuYy5jCiAKK2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5sbzogZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LlRwbyAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQubG8gYHRlc3QgLWYgJ2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jJyBvYmplY3Q9J2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmxvIGB0ZXN0IC1mICdnc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jCisKK2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5sbzogZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLlRwbyAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUubG8gYHRlc3QgLWYgJ2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5UcG8gJChERVBESVIpL2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jJyBvYmplY3Q9J2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhbmRyb2lkbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmxvIGB0ZXN0IC1mICdnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jCisKK2xpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEubG86IGdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5UcG8gLWMgLW8gbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5sbyBgdGVzdCAtZiAnZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLlRwbyAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYycgb2JqZWN0PSdsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmxvIGB0ZXN0IC1mICdnc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMKKwogbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGpuaXV0aWxzLmxvOiBnc3Rqbml1dGlscy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YW5kcm9pZG1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFuZHJvaWRtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGpuaXV0aWxzLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RhbmRyb2lkbWVkaWFfbGEtZ3N0am5pdXRpbHMuVHBvIC1jIC1vIGxpYmdzdGFuZHJvaWRtZWRpYV9sYS1nc3Rqbml1dGlscy5sbyBgdGVzdCAtZiAnZ3N0am5pdXRpbHMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0am5pdXRpbHMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGpuaXV0aWxzLlRwbyAkKERFUERJUikvbGliZ3N0YW5kcm9pZG1lZGlhX2xhLWdzdGpuaXV0aWxzLlBsbwpAQCAtOTQ3LDYgKzEwNDEsMjcgQEAKIAogY2xlYW4tbGlidG9vbDoKIAktcm0gLXJmIC5saWJzIF9saWJzCitpbnN0YWxsLWFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNEQVRBOiAkKGFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNfREFUQSkKKwlAJChOT1JNQUxfSU5TVEFMTCkKKwlAbGlzdD0nJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzX0RBVEEpJzsgdGVzdCAtbiAiJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSIgfHwgbGlzdD07IFwKKwlpZiB0ZXN0IC1uICIkJGxpc3QiOyB0aGVuIFwKKwkgIGVjaG8gIiAkKE1LRElSX1ApICckKERFU1RESVIpJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSciOyBcCisJICAkKE1LRElSX1ApICIkKERFU1RESVIpJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSIgfHwgZXhpdCAxOyBcCisJZmk7IFwKKwlmb3IgcCBpbiAkJGxpc3Q7IGRvIFwKKwkgIGlmIHRlc3QgLWYgIiQkcCI7IHRoZW4gZD07IGVsc2UgZD0iJChzcmNkaXIpLyI7IGZpOyBcCisJICBlY2hvICIkJGQkJHAiOyBcCisJZG9uZSB8ICQoYW1fX2Jhc2VfbGlzdCkgfCBcCisJd2hpbGUgcmVhZCBmaWxlczsgZG8gXAorCSAgZWNobyAiICQoSU5TVEFMTF9EQVRBKSAkJGZpbGVzICckKERFU1RESVIpJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSciOyBcCisJICAkKElOU1RBTExfREFUQSkgJCRmaWxlcyAiJChERVNURElSKSQoYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc2RpcikiIHx8IGV4aXQgJCQ/OyBcCisJZG9uZQorCit1bmluc3RhbGwtYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc0RBVEE6CisJQCQoTk9STUFMX1VOSU5TVEFMTCkKKwlAbGlzdD0nJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzX0RBVEEpJzsgdGVzdCAtbiAiJChhbmRyb2lkbWVkaWFfamF2YV9jbGFzc2VzZGlyKSIgfHwgbGlzdD07IFwKKwlmaWxlcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IHNlZCAtZSAnc3xeLiovfHwnYDsgXAorCWRpcj0nJChERVNURElSKSQoYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc2RpciknOyAkKGFtX191bmluc3RhbGxfZmlsZXNfZnJvbV9kaXIpCiAKIElEOiAkKGFtX190YWdnZWRfZmlsZXMpCiAJJChhbV9fZGVmaW5lX3VuaXFfdGFnZ2VkX2ZpbGVzKTsgbWtpZCAtZklEICQkdW5pcXVlCkBAIC0xMDMyLDkgKzExNDcsOSBAQAogCWRvbmUKIGNoZWNrLWFtOiBhbGwtYW0KIGNoZWNrOiBjaGVjay1hbQotYWxsLWFtOiBNYWtlZmlsZSAkKExUTElCUkFSSUVTKSAkKEhFQURFUlMpCithbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoREFUQSkgJChIRUFERVJTKQogaW5zdGFsbGRpcnM6Ci0JZm9yIGRpciBpbiAiJChERVNURElSKSQocGx1Z2luZGlyKSI7IGRvIFwKKwlmb3IgZGlyIGluICIkKERFU1RESVIpJChwbHVnaW5kaXIpIiAiJChERVNURElSKSQoYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc2RpcikiOyBkbyBcCiAJICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCiAJZG9uZQogaW5zdGFsbDogaW5zdGFsbC1hbQpAQCAtMTA5MCw3ICsxMjA1LDggQEAKIAogaW5mby1hbToKIAotaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCitpbnN0YWxsLWRhdGEtYW06IGluc3RhbGwtYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc0RBVEEgXAorCWluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKIAogaW5zdGFsbC1kdmk6IGluc3RhbGwtZHZpLWFtCiAKQEAgLTExMzYsNyArMTI1Miw4IEBACiAKIHBzLWFtOgogCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwordW5pbnN0YWxsLWFtOiB1bmluc3RhbGwtYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc0RBVEEgXAorCXVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwogCiAuTUFLRTogaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCiAKQEAgLTExNDQsNyArMTI2MSw4IEBACiAJY2xlYW4tbGlidG9vbCBjbGVhbi1wbHVnaW5MVExJQlJBUklFUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKIAljdGFncy1hbSBkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAogCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIFwKLQlodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIFwKKwlodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gXAorCWluc3RhbGwtYW5kcm9pZG1lZGlhX2phdmFfY2xhc3Nlc0RBVEEgaW5zdGFsbC1kYXRhIFwKIAlpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIFwKIAlpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gXAogCWluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBcCkBAIC0xMTUzLDYgKzEyNzEsNyBAQAogCW1haW50YWluZXItY2xlYW4gbWFpbnRhaW5lci1jbGVhbi1nZW5lcmljIG1vc3RseWNsZWFuIFwKIAltb3N0bHljbGVhbi1jb21waWxlIG1vc3RseWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4tbGlidG9vbCBcCiAJcGRmIHBkZi1hbSBwcyBwcy1hbSB0YWdzIHRhZ3MtYW0gdW5pbnN0YWxsIHVuaW5zdGFsbC1hbSBcCisJdW5pbnN0YWxsLWFuZHJvaWRtZWRpYV9qYXZhX2NsYXNzZXNEQVRBIFwKIAl1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKIAogLlBSRUNJT1VTOiBNYWtlZmlsZQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViNzZmY2QKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmMKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENpc2NvIFN5c3RlbXMsIEluYy4KKyAqICAgQXV0aG9yOiBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3Rqbml1dGlscy5oIgorCisjaW5jbHVkZSAiZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaCIKKworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGdldF9iaXRzX3Blcl9waXhlbDsKKyAgamludCBKUEVHOworICBqaW50IE5WMTY7CisgIGppbnQgTlYyMTsKKyAgamludCBSR0JfNTY1OworICBqaW50IFVOS05PV047CisgIGppbnQgWVVZMjsKKyAgamludCBZVjEyOworfSBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0ID0geworMH07CisKK2dpbnQgSW1hZ2VGb3JtYXRfSlBFRzsKK2dpbnQgSW1hZ2VGb3JtYXRfTlYxNjsKK2dpbnQgSW1hZ2VGb3JtYXRfTlYyMTsKK2dpbnQgSW1hZ2VGb3JtYXRfUkdCXzU2NTsKK2dpbnQgSW1hZ2VGb3JtYXRfVU5LTk9XTjsKK2dpbnQgSW1hZ2VGb3JtYXRfWVVZMjsKK2dpbnQgSW1hZ2VGb3JtYXRfWVYxMjsKKworc3RhdGljIGdib29sZWFuCitfaW5pdF9jbGFzc2VzICh2b2lkKQoreworICBKTklFbnYgKmVudjsKKworICBqZmllbGRJRCBmaWVsZElEOworICBqY2xhc3Mga2xhc3M7CisKKyAgR0Vycm9yICplcnIgPSBOVUxMOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgLyogYW5kcm9pZC5ncmFwaGljcy5JbWFnZUZvcm1hdCAqLworICBrbGFzcyA9IGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJhbmRyb2lkL2dyYXBoaWNzL0ltYWdlRm9ybWF0Iik7CisKKyAgaWYgKGVycikKKyAgICBnb3RvIGZhaWxlZDsKKworICBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LmdldF9iaXRzX3Blcl9waXhlbCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJnZXRCaXRzUGVyUGl4ZWwiLCAiKEkpSSIpOworCisgIGlmIChlcnIpCisgICAgZ290byBmYWlsZWQ7CisKKyAgZmllbGRJRCA9IGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJKUEVHIiwgIkkiKTsKKyAgaWYgKGVycikKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ludF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5KUEVHKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgSW1hZ2VGb3JtYXRfSlBFRyA9IGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuSlBFRzsKKworICBmaWVsZElEID0gZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIk5WMTYiLCAiSSIpOworICBpZiAoZXJyKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfaW50X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0Lk5WMTYpKQorICAgIGdvdG8gZmFpbGVkOworICBJbWFnZUZvcm1hdF9OVjE2ID0gYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5OVjE2OworCisgIGZpZWxkSUQgPSBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiTlYyMSIsICJJIik7CisgIGlmIChlcnIpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19pbnRfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuTlYyMSkpCisgICAgZ290byBmYWlsZWQ7CisgIEltYWdlRm9ybWF0X05WMjEgPSBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0Lk5WMjE7CisKKyAgZmllbGRJRCA9IGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJSR0JfNTY1IiwgIkkiKTsKKyAgaWYgKGVycikKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ludF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5SR0JfNTY1KSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgSW1hZ2VGb3JtYXRfUkdCXzU2NSA9IGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuUkdCXzU2NTsKKworICBmaWVsZElEID0gZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlVOS05PV04iLCAiSSIpOworICBpZiAoZXJyKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfaW50X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LlVOS05PV04pKQorICAgIGdvdG8gZmFpbGVkOworICBJbWFnZUZvcm1hdF9VTktOT1dOID0gYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5VTktOT1dOOworCisgIGZpZWxkSUQgPSBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiWVVZMiIsICJJIik7CisgIGlmIChlcnIpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19pbnRfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuWVVZMikpCisgICAgZ290byBmYWlsZWQ7CisgIEltYWdlRm9ybWF0X1lVWTIgPSBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LllVWTI7CisKKyAgZmllbGRJRCA9IGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJZVjEyIiwgIkkiKTsKKyAgaWYgKGVycikKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ludF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5ZVjEyKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgSW1hZ2VGb3JtYXRfWVYxMiA9IGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQuWVYxMjsKKworICByZXR1cm4gVFJVRTsKKworZmFpbGVkOgorICBpZiAoZXJyKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGdldCBhbmRyb2lkLmdyYXBoaWNzLkltYWdlRm9ybWF0IGNsYXNzOiAlcyIsCisgICAgICAgIGVyci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgIH0KKworICByZXR1cm4gRkFMU0U7Cit9CisKK2dib29sZWFuCitnc3RfYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdF9pbml0ICh2b2lkKQoreworICBpZiAoIV9pbml0X2NsYXNzZXMgKCkpIHsKKyAgICBnc3RfYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdF9kZWluaXQgKCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3ZvaWQKK2dzdF9hbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0X2RlaW5pdCAodm9pZCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGlmIChhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LmtsYXNzKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGFuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQua2xhc3MpOworICBhbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0LmtsYXNzID0gTlVMTDsKK30KKworLyogYW5kcm9pZC5ncmFwaGljcy5JbWFnZUZvcm1hdCAqLworZ2ludAorZ3N0X2FnX2ltYWdlZm9ybWF0X2dldF9iaXRzX3Blcl9waXhlbCAoZ2ludCBmb3JtYXQpCit7CisgIEpOSUVudiAqZW52OworICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgamNsYXNzIGtsYXNzID0gYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5rbGFzczsKKworICBqaW50IGJwcCA9IDA7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBpZiAoIWdzdF9hbWNfam5pX2NhbGxfc3RhdGljX2ludF9tZXRob2QgKGVudiwgJmVyciwKKyAgICAgICAgICBrbGFzcywgYW5kcm9pZF9ncmFwaGljc19pbWFnZWZvcm1hdC5nZXRfYml0c19wZXJfcGl4ZWwsICZicHAsCisgICAgICAgICAgZm9ybWF0KSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBnZXQgYW5kcm9pZC5ncmFwaGljcy5JbWFnZUZvcm1hdCBjbGFzczogJXMiLAorICAgICAgICBlcnItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICB9CisKKyAgcmV0dXJuIGJwcDsKK30KZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaCBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3MtaW1hZ2Vmb3JtYXQuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZmYyMThiCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1pbWFnZWZvcm1hdC5oCkBAIC0wLDAgKzEsNDkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENpc2NvIFN5c3RlbXMsIEluYy4KKyAqICAgQXV0aG9yOiBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZuZGVmIF9fR1NUX0FORFJPSURfR1JBUEhJQ1NfSU1BR0VGT1JNQVRfSF9fCisjZGVmaW5lIF9fR1NUX0FORFJPSURfR1JBUEhJQ1NfSU1BR0VGT1JNQVRfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworLyogYW5kcm9pZC5ncmFwaGljcy5JbWFnZUZvcm1hdCAqLworZXh0ZXJuIGdpbnQgSW1hZ2VGb3JtYXRfSlBFRzsKK2V4dGVybiBnaW50IEltYWdlRm9ybWF0X05WMTY7CitleHRlcm4gZ2ludCBJbWFnZUZvcm1hdF9OVjIxOworZXh0ZXJuIGdpbnQgSW1hZ2VGb3JtYXRfUkdCXzU2NTsKK2V4dGVybiBnaW50IEltYWdlRm9ybWF0X1VOS05PV047CitleHRlcm4gZ2ludCBJbWFnZUZvcm1hdF9ZVVkyOworZXh0ZXJuIGdpbnQgSW1hZ2VGb3JtYXRfWVYxMjsKKworZ2Jvb2xlYW4gZ3N0X2FuZHJvaWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXRfaW5pdCAodm9pZCk7Cit2b2lkIGdzdF9hbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0X2RlaW5pdCAodm9pZCk7CisKK2dpbnQgZ3N0X2FnX2ltYWdlZm9ybWF0X2dldF9iaXRzX3Blcl9waXhlbCAoZ2ludCBmb3JtYXQpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfQU5EUk9JRF9HUkFQSElDU19JTUFHRUZPUk1BVF9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg0OTkzYTgKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmMKQEAgLTAsMCArMSwxNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENvbGxhYm9yYSBMdGQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENpc2NvIFN5c3RlbXMsIEluYy4KKyAqICAgQXV0aG9yOiBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBKdXN0aW4gS2ltIDxqdXN0aW4ua2ltQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BICAwMjExMC0xMzAxIFVTQQorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJnc3Rqbml1dGlscy5oIgorCisjaW5jbHVkZSAiZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaCIKKworc3RhdGljIHN0cnVjdAoreworICBqY2xhc3Mga2xhc3M7CisgIGptZXRob2RJRCBjb25zdHJ1Y3RvcjsKKyAgam1ldGhvZElEIHJlbGVhc2U7Cit9IGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUgPSB7CiswfTsKKworc3RhdGljIGdib29sZWFuCitfaW5pdF9jbGFzc2VzICh2b2lkKQoreworICBKTklFbnYgKmVudjsKKyAgR0Vycm9yICplcnIgPSBOVUxMOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgLyogYW5kcm9pZC5ncmFwaGljcy5TdXJmYWNlVGV4dHVyZSAqLworICBhbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlLmtsYXNzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9jbGFzcyAoZW52LCAmZXJyLCAiYW5kcm9pZC9ncmFwaGljcy9TdXJmYWNlVGV4dHVyZSIpOworCisgIGlmICghYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5rbGFzcykgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBnZXQgYW5kcm9pZC5ncmFwaGljcy5TdXJmYWNlVGV4dHVyZSBjbGFzczogJXMiLAorICAgICAgICBlcnItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUuY29uc3RydWN0b3IgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLAorICAgICAgYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5rbGFzcywgIjxpbml0PiIsICIoSSlWIik7CisgIGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUucmVsZWFzZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsCisgICAgICBhbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlLmtsYXNzLCAicmVsZWFzZSIsICIoKVYiKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9hbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlX2luaXQgKHZvaWQpCit7CisgIGlmICghX2luaXRfY2xhc3NlcyAoKSkgeworICAgIGdzdF9hbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlX2RlaW5pdCAoKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKwordm9pZAorZ3N0X2FuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmVfZGVpbml0ICh2b2lkKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgaWYgKGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUua2xhc3MpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5rbGFzcyk7CisgIGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUua2xhc3MgPSBOVUxMOworfQorCisvKiBhbmRyb2lkLmdyYXBoaWNzLlN1cmZhY2VUZXh0dXJlICovCitHc3RBR1N1cmZhY2VUZXh0dXJlICoKK2dzdF9hZ19zdXJmYWNldGV4dHVyZV9uZXcgKGdpbnQgdGV4dHVyZV9pZCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IG9iamVjdCA9IE5VTEw7CisgIEdzdEFHU3VyZmFjZVRleHR1cmUgKnRleCA9IE5VTEw7CisKKyAgb2JqZWN0ID0gKCplbnYpLT5OZXdPYmplY3QgKGVudiwKKyAgICAgIGFuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmUua2xhc3MsCisgICAgICBhbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlLmNvbnN0cnVjdG9yLCB0ZXh0dXJlX2lkKTsKKyAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikgfHwgIW9iamVjdCkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjYWxsIEphdmEgbWV0aG9kIik7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHRleCA9IGdfc2xpY2VfbmV3MCAoR3N0QUdTdXJmYWNlVGV4dHVyZSk7CisgIHRleC0+b2JqZWN0ID0gKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgb2JqZWN0KTsKKyAgaWYgKCF0ZXgtPm9iamVjdCkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjcmVhdGUgZ2xvYmFsIHJlZmVyZW5jZSIpOworICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgZ19zbGljZV9mcmVlIChHc3RBR1N1cmZhY2VUZXh0dXJlLCB0ZXgpOworICAgIHRleCA9IE5VTEw7CisgIH0KKyAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBvYmplY3QpOworCisgIHJldHVybiB0ZXg7Cit9CisKK3ZvaWQKK2dzdF9hZ19zdXJmYWNldGV4dHVyZV9yZWxlYXNlIChHc3RBR1N1cmZhY2VUZXh0dXJlICogc2VsZikKK3sKKyAgSk5JRW52ICplbnY7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGlmICghZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCAmZXJyLCBzZWxmLT5vYmplY3QsCisgICAgICAgICAgYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZS5yZWxlYXNlKSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjYWxsIHJlbGVhc2U6ICVzIiwgZXJyLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKKyAgfQorCit9CisKK3ZvaWQKK2dzdF9hZ19zdXJmYWNldGV4dHVyZV9mcmVlIChHc3RBR1N1cmZhY2VUZXh0dXJlICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIHNlbGYtPm9iamVjdCk7CisgIGdfc2xpY2VfZnJlZSAoR3N0QUdTdXJmYWNlVGV4dHVyZSwgc2VsZik7Cit9CmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmggYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWdyYXBoaWNzLXN1cmZhY2V0ZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JiODBjYQotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtZ3JhcGhpY3Mtc3VyZmFjZXRleHR1cmUuaApAQCAtMCwwICsxLDU0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBDaXNjbyBTeXN0ZW1zLCBJbmMuCisgKiAgIEF1dGhvcjogWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIENvbGxhYm9yYSBMdGQuCisgKiAgIEF1dGhvcjogSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBfX0dTVF9BTkRST0lEX0dSQVBISUNTX1NVUkZBQ0VURVhUVVJFX0hfXworI2RlZmluZSBfX0dTVF9BTkRST0lEX0dSQVBISUNTX1NVUkZBQ0VURVhUVVJFX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGpuaS5oPgorCisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFHU3VyZmFjZVRleHR1cmUgR3N0QUdTdXJmYWNlVGV4dHVyZTsKKworLyogYW5kcm9pZC5ncmFwaGljcy5TdXJmYWNlVGV4dHVyZSAqLworc3RydWN0IF9Hc3RBR1N1cmZhY2VUZXh0dXJlIHsKKyAgLyogPCBwcml2YXRlID4gKi8KKyAgam9iamVjdCBvYmplY3Q7IC8qIGdsb2JhbCByZWZlcmVuY2UgKi8KK307CisKKworZ2Jvb2xlYW4gZ3N0X2FuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmVfaW5pdCAodm9pZCk7Cit2b2lkIGdzdF9hbmRyb2lkX2dyYXBoaWNzX3N1cmZhY2V0ZXh0dXJlX2RlaW5pdCAodm9pZCk7CisKKy8qIGFuZHJvaWQuZ3JhcGhpY3MuU3VyZmFjZVRleHR1cmUgKi8KK0dzdEFHU3VyZmFjZVRleHR1cmUgKmdzdF9hZ19zdXJmYWNldGV4dHVyZV9uZXcgKGdpbnQgdGV4dHVyZV9pZCk7Cit2b2lkIGdzdF9hZ19zdXJmYWNldGV4dHVyZV9yZWxlYXNlIChHc3RBR1N1cmZhY2VUZXh0dXJlICpzZWxmKTsKK3ZvaWQgZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX2ZyZWUgKEdzdEFHU3VyZmFjZVRleHR1cmUgKnNlbGYpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfQU5EUk9JRF9HUkFQSElDU19TVVJGQUNFVEVYVFVSRV9IX18gKi8KKwpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3QtYW5kcm9pZC1oYXJkd2FyZS1jYW1lcmEuYyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ2NjAzMwotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmMKQEAgLTAsMCArMSwzODg0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBDaXNjbyBTeXN0ZW1zLCBJbmMuCisgKiAgIEF1dGhvcjogWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIENvbGxhYm9yYSBMdGQuCisgKiAgIEF1dGhvcjogSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKKyAqCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0am5pdXRpbHMuaCIKKworI2luY2x1ZGUgImdzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oIgorCitHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChhaGNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgYWhjX2RlYnVnCisKKyNkZWZpbmUgR1NUX0RWTV9TVEFUSUNfQ0FMTChlcnJvcl9zdGF0ZW1lbnQsIHR5cGUsIGssIG1ldGhvZCwgLi4uKSAgICAgIFwKKyAgKCplbnYpLT5DYWxsU3RhdGljIyN0eXBlIyNNZXRob2QgKGVudiwgay5rbGFzcywgay5tZXRob2QsICMjIF9fVkFfQVJHU19fKTsgXAorICBpZiAoKCplbnYpLT5FeGNlcHRpb25DaGVjayAoZW52KSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjYWxsIEphdmEgbWV0aG9kIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgqZW52KS0+RXhjZXB0aW9uRGVzY3JpYmUgKGVudik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIGVycm9yX3N0YXRlbWVudDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKyNkZWZpbmUgR1NUX0RWTV9DQUxMKGVycm9yX3N0YXRlbWVudCwgb2JqLCB0eXBlLCBrLCBtZXRob2QsIC4uLikgICAgICAgIFwKKyAgKCplbnYpLT5DYWxsIyN0eXBlIyNNZXRob2QgKGVudiwgb2JqLCBrLm1ldGhvZCwgIyMgX19WQV9BUkdTX18pOyAgICAgIFwKKyAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY2FsbCBKYXZhIG1ldGhvZCIpOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKmVudiktPkV4Y2VwdGlvbkRlc2NyaWJlIChlbnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICBlcnJvcl9zdGF0ZW1lbnQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgfQorCisKKworc3RhdGljIHN0cnVjdAoreworICBqY2xhc3Mga2xhc3M7CisgIGptZXRob2RJRCBhZGRDYWxsYmFja0J1ZmZlcjsKKyAgam1ldGhvZElEIGF1dG9Gb2N1czsKKyAgam1ldGhvZElEIGNhbmNlbEF1dG9Gb2N1czsKKyAgam1ldGhvZElEIGdldENhbWVyYUluZm87CisgIGptZXRob2RJRCBnZXROdW1iZXJPZkNhbWVyYXM7CisgIGptZXRob2RJRCBnZXRQYXJhbWV0ZXJzOworICBqbWV0aG9kSUQgbG9jazsKKyAgam1ldGhvZElEIG9wZW47CisgIGptZXRob2RJRCByZWNvbm5lY3Q7CisgIGptZXRob2RJRCByZWxlYXNlOworICBqbWV0aG9kSUQgc2V0RXJyb3JDYWxsYmFjazsKKyAgam1ldGhvZElEIHNldFBhcmFtZXRlcnM7CisgIGptZXRob2RJRCBzZXRQcmV2aWV3Q2FsbGJhY2tXaXRoQnVmZmVyOworICBqbWV0aG9kSUQgc2V0UHJldmlld1RleHR1cmU7CisgIGptZXRob2RJRCBzdGFydFByZXZpZXc7CisgIGptZXRob2RJRCBzdGFydFNtb290aFpvb207CisgIGptZXRob2RJRCBzdG9wUHJldmlldzsKKyAgam1ldGhvZElEIHN0b3BTbW9vdGhab29tOworICBqbWV0aG9kSUQgdW5sb2NrOworfSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYSA9IHsKKzB9OworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGNvbnN0cnVjdG9yOworICBqZmllbGRJRCBmYWNpbmc7CisgIGpmaWVsZElEIG9yaWVudGF0aW9uOworICBqaW50IENBTUVSQV9GQUNJTkdfQkFDSzsKKyAgamludCBDQU1FUkFfRkFDSU5HX0ZST05UOworfSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvID0geworMH07CisKK2dpbnQgQ2FtZXJhSW5mb19DQU1FUkFfRkFDSU5HX0JBQ0s7CitnaW50IENhbWVyYUluZm9fQ0FNRVJBX0ZBQ0lOR19GUk9OVDsKKworc3RhdGljIHN0cnVjdAoreworICBqY2xhc3Mga2xhc3M7CisgIGpmaWVsZElEIHdpZHRoOworICBqZmllbGRJRCBoZWlnaHQ7Cit9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3NpemUgPSB7CiswfTsKKworc3RhdGljIHN0cnVjdAoreworICBqY2xhc3Mga2xhc3M7CisgIGptZXRob2RJRCBmbGF0dGVuOworICBqbWV0aG9kSUQgZ2V0QW50aWJhbmRpbmc7CisgIGptZXRob2RJRCBnZXRDb2xvckVmZmVjdDsKKyAgam1ldGhvZElEIGdldEV4cG9zdXJlQ29tcGVuc2F0aW9uOworICBqbWV0aG9kSUQgZ2V0RXhwb3N1cmVDb21wZW5zYXRpb25TdGVwOworICBqbWV0aG9kSUQgZ2V0Rmxhc2hNb2RlOworICBqbWV0aG9kSUQgZ2V0Rm9jYWxMZW5ndGg7CisgIGptZXRob2RJRCBnZXRGb2N1c01vZGU7CisgIGptZXRob2RJRCBnZXRIb3Jpem9udGFsVmlld0FuZ2xlOworICBqbWV0aG9kSUQgZ2V0TWF4RXhwb3N1cmVDb21wZW5zYXRpb247CisgIGptZXRob2RJRCBnZXRNYXhab29tOworICBqbWV0aG9kSUQgZ2V0TWluRXhwb3N1cmVDb21wZW5zYXRpb247CisgIGptZXRob2RJRCBnZXRQcmV2aWV3Rm9ybWF0OworICBqbWV0aG9kSUQgZ2V0UHJldmlld0Zwc1JhbmdlOworICBqbWV0aG9kSUQgZ2V0UHJldmlld1NpemU7CisgIGptZXRob2RJRCBnZXRTY2VuZU1vZGU7CisgIGptZXRob2RJRCBnZXRTdXBwb3J0ZWRBbnRpYmFuZGluZzsKKyAgam1ldGhvZElEIGdldFN1cHBvcnRlZENvbG9yRWZmZWN0czsKKyAgam1ldGhvZElEIGdldFN1cHBvcnRlZEZsYXNoTW9kZXM7CisgIGptZXRob2RJRCBnZXRTdXBwb3J0ZWRGb2N1c01vZGVzOworICBqbWV0aG9kSUQgZ2V0U3VwcG9ydGVkUHJldmlld0Zvcm1hdHM7CisgIGptZXRob2RJRCBnZXRTdXBwb3J0ZWRQcmV2aWV3RnBzUmFuZ2U7CisgIGptZXRob2RJRCBnZXRTdXBwb3J0ZWRQcmV2aWV3U2l6ZXM7CisgIGptZXRob2RJRCBnZXRTdXBwb3J0ZWRTY2VuZU1vZGVzOworICBqbWV0aG9kSUQgZ2V0U3VwcG9ydGVkV2hpdGVCYWxhbmNlOworICBqbWV0aG9kSUQgZ2V0VmVydGljYWxWaWV3QW5nbGU7CisgIGptZXRob2RJRCBnZXRWaWRlb1N0YWJpbGl6YXRpb247CisgIGptZXRob2RJRCBnZXRXaGl0ZUJhbGFuY2U7CisgIGptZXRob2RJRCBnZXRab29tOworICBqbWV0aG9kSUQgZ2V0Wm9vbVJhdGlvczsKKyAgam1ldGhvZElEIGlzU21vb3RoWm9vbVN1cHBvcnRlZDsKKyAgam1ldGhvZElEIGlzVmlkZW9TdGFiaWxpemF0aW9uU3VwcG9ydGVkOworICBqbWV0aG9kSUQgaXNab29tU3VwcG9ydGVkOworICBqbWV0aG9kSUQgc2V0QW50aWJhbmRpbmc7CisgIGptZXRob2RJRCBzZXRDb2xvckVmZmVjdDsKKyAgam1ldGhvZElEIHNldEV4cG9zdXJlQ29tcGVuc2F0aW9uOworICBqbWV0aG9kSUQgc2V0Rmxhc2hNb2RlOworICBqbWV0aG9kSUQgc2V0Rm9jdXNNb2RlOworICBqbWV0aG9kSUQgc2V0UHJldmlld0Zvcm1hdDsKKyAgam1ldGhvZElEIHNldFByZXZpZXdGcHNSYW5nZTsKKyAgam1ldGhvZElEIHNldFByZXZpZXdTaXplOworICBqbWV0aG9kSUQgc2V0U2NlbmVNb2RlOworICBqbWV0aG9kSUQgc2V0VmlkZW9TdGFiaWxpemF0aW9uOworICBqbWV0aG9kSUQgc2V0V2hpdGVCYWxhbmNlOworICBqbWV0aG9kSUQgc2V0Wm9vbTsKKyAgam1ldGhvZElEIHVuZmxhdHRlbjsKKyAganN0cmluZyBXSElURV9CQUxBTkNFX0FVVE87CisgIGpzdHJpbmcgV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQ7CisgIGpzdHJpbmcgV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVDsKKyAganN0cmluZyBXSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQ7CisgIGpzdHJpbmcgV0hJVEVfQkFMQU5DRV9EQVlMSUdIVDsKKyAganN0cmluZyBXSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVDsKKyAganN0cmluZyBXSElURV9CQUxBTkNFX1RXSUxJR0hUOworICBqc3RyaW5nIFdISVRFX0JBTEFOQ0VfU0hBREU7CisgIGpzdHJpbmcgRUZGRUNUX05PTkU7CisgIGpzdHJpbmcgRUZGRUNUX01PTk87CisgIGpzdHJpbmcgRUZGRUNUX05FR0FUSVZFOworICBqc3RyaW5nIEVGRkVDVF9TT0xBUklaRTsKKyAganN0cmluZyBFRkZFQ1RfU0VQSUE7CisgIGpzdHJpbmcgRUZGRUNUX1BPU1RFUklaRTsKKyAganN0cmluZyBFRkZFQ1RfV0hJVEVCT0FSRDsKKyAganN0cmluZyBFRkZFQ1RfQkxBQ0tCT0FSRDsKKyAganN0cmluZyBFRkZFQ1RfQVFVQTsKKyAganN0cmluZyBBTlRJQkFORElOR19BVVRPOworICBqc3RyaW5nIEFOVElCQU5ESU5HXzUwSFo7CisgIGpzdHJpbmcgQU5USUJBTkRJTkdfNjBIWjsKKyAganN0cmluZyBBTlRJQkFORElOR19PRkY7CisgIGpzdHJpbmcgRkxBU0hfTU9ERV9PRkY7CisgIGpzdHJpbmcgRkxBU0hfTU9ERV9BVVRPOworICBqc3RyaW5nIEZMQVNIX01PREVfT047CisgIGpzdHJpbmcgRkxBU0hfTU9ERV9SRURfRVlFOworICBqc3RyaW5nIEZMQVNIX01PREVfVE9SQ0g7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9BVVRPOworICBqc3RyaW5nIFNDRU5FX01PREVfQUNUSU9OOworICBqc3RyaW5nIFNDRU5FX01PREVfUE9SVFJBSVQ7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9MQU5EU0NBUEU7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9OSUdIVDsKKyAganN0cmluZyBTQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUOworICBqc3RyaW5nIFNDRU5FX01PREVfVEhFQVRSRTsKKyAganN0cmluZyBTQ0VORV9NT0RFX0JFQUNIOworICBqc3RyaW5nIFNDRU5FX01PREVfU05PVzsKKyAganN0cmluZyBTQ0VORV9NT0RFX1NVTlNFVDsKKyAganN0cmluZyBTQ0VORV9NT0RFX1NURUFEWVBIT1RPOworICBqc3RyaW5nIFNDRU5FX01PREVfRklSRVdPUktTOworICBqc3RyaW5nIFNDRU5FX01PREVfU1BPUlRTOworICBqc3RyaW5nIFNDRU5FX01PREVfUEFSVFk7CisgIGpzdHJpbmcgU0NFTkVfTU9ERV9DQU5ETEVMSUdIVDsKKyAganN0cmluZyBTQ0VORV9NT0RFX0JBUkNPREU7CisgIGpzdHJpbmcgRk9DVVNfTU9ERV9BVVRPOworICBqc3RyaW5nIEZPQ1VTX01PREVfSU5GSU5JVFk7CisgIGpzdHJpbmcgRk9DVVNfTU9ERV9NQUNSTzsKKyAganN0cmluZyBGT0NVU19NT0RFX0ZJWEVEOworICBqc3RyaW5nIEZPQ1VTX01PREVfRURPRjsKKyAganN0cmluZyBGT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU87CisgIGpzdHJpbmcgRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkU7Cit9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMgPSB7CiswfTsKKworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9EQVlMSUdIVDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfU0hBREU7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfTk9ORTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9NT05POworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX05FR0FUSVZFOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX1NFUElBOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX1BPU1RFUklaRTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfQVFVQTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE87Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19BTlRJQkFORElOR181MEhaOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNjBIWjsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRjsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT0ZGOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRkxBU0hfTU9ERV9BVVRPOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTjsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZMQVNIX01PREVfVE9SQ0g7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FVVE87Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTjsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfUE9SVFJBSVQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQ7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfU05PVzsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVEVBRFlQSE9UTzsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfRklSRVdPUktTOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFM7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9DQU5ETEVMSUdIVDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERTsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTzsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfSU5GSU5JVFk7Citjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPOworY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRDsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfRURPRjsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTzsKK2NvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFOworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGl0ZXJhdG9yOworfSBqYXZhX3V0aWxfbGlzdCA9IHsKKzB9OworCitzdGF0aWMgc3RydWN0Cit7CisgIGpjbGFzcyBrbGFzczsKKyAgam1ldGhvZElEIGhhc05leHQ7CisgIGptZXRob2RJRCBuZXh0OworfSBqYXZhX3V0aWxfaXRlcmF0b3IgPSB7CiswfTsKKworc3RhdGljIHN0cnVjdAoreworICBqY2xhc3Mga2xhc3M7CisgIGptZXRob2RJRCBpbnRWYWx1ZTsKK30gamF2YV9sYW5nX2ludGVnZXIgPSB7CiswfTsKKworc3RhdGljIHN0cnVjdAoreworICBqY2xhc3Mga2xhc3M7CisgIGptZXRob2RJRCBlcXVhbHM7Cit9IGphdmFfbGFuZ19zdHJpbmcgPSB7CiswfTsKKworc3RhdGljIHN0cnVjdAoreworICBqY2xhc3Mga2xhc3M7CisgIGptZXRob2RJRCBjb25zdHJ1Y3RvcjsKK30gb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sgPSB7CiswfTsKKworc3RhdGljIHZvaWQKK2dzdF9haF9jYW1lcmFfb25fcHJldmlld19mcmFtZSAoSk5JRW52ICogZW52LCBqY2xhc3Mga2xhc3MsIGpieXRlQXJyYXkgZGF0YSwKKyAgICBqb2JqZWN0IGNhbWVyYSwgamxvbmcgY2FsbGJhY2ssIGpsb25nIHVzZXJfZGF0YSkKK3sKKyAgR3N0QUhDUHJldmlld0NhbGxiYWNrIGNiID0gKEdzdEFIQ1ByZXZpZXdDYWxsYmFjaykgKGdzaXplKSBjYWxsYmFjazsKKworICBpZiAoY2IpCisgICAgY2IgKGRhdGEsIChncG9pbnRlcikgKGdzaXplKSB1c2VyX2RhdGEpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoX2NhbWVyYV9vbl9lcnJvciAoSk5JRW52ICogZW52LCBqY2xhc3Mga2xhc3MsIGppbnQgZXJyb3IsCisgICAgam9iamVjdCBjYW1lcmEsIGpsb25nIGNhbGxiYWNrLCBqbG9uZyB1c2VyX2RhdGEpCit7CisgIEdzdEFIQ0Vycm9yQ2FsbGJhY2sgY2IgPSAoR3N0QUhDRXJyb3JDYWxsYmFjaykgKGdzaXplKSBjYWxsYmFjazsKKworICBpZiAoY2IpCisgICAgY2IgKGVycm9yLCAoZ3BvaW50ZXIpIChnc2l6ZSkgdXNlcl9kYXRhKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9haF9jYW1lcmFfb25fYXV0b19mb2N1cyAoSk5JRW52ICogZW52LCBqY2xhc3Mga2xhc3MsIGpib29sZWFuIHN1Y2Nlc3MsCisgICAgam9iamVjdCBjYW1lcmEsIGpsb25nIGNhbGxiYWNrLCBqbG9uZyB1c2VyX2RhdGEpCit7CisgIEdzdEFIQ0F1dG9Gb2N1c0NhbGxiYWNrIGNiID0gKEdzdEFIQ0F1dG9Gb2N1c0NhbGxiYWNrKSAoZ3NpemUpIGNhbGxiYWNrOworCisgIGlmIChjYikKKyAgICBjYiAoc3VjY2VzcywgKGdwb2ludGVyKSAoZ3NpemUpIHVzZXJfZGF0YSk7Cit9CisKK3N0YXRpYyBKTklOYXRpdmVNZXRob2QgbmF0aXZlX21ldGhvZHNbXSA9IHsKKyAgeyhnY2hhciAqKSAiZ3N0X2FoX2NhbWVyYV9vbl9wcmV2aWV3X2ZyYW1lIiwKKyAgICAgICAgKGdjaGFyICopICIoW0JMYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmE7SkopViIsCisgICAgICAodm9pZCAqKSBnc3RfYWhfY2FtZXJhX29uX3ByZXZpZXdfZnJhbWV9LAorICB7KGdjaGFyICopICJnc3RfYWhfY2FtZXJhX29uX2Vycm9yIiwKKyAgICAgICAgKGdjaGFyICopICIoSUxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYTtKSilWIiwKKyAgICAgICh2b2lkICopIGdzdF9haF9jYW1lcmFfb25fZXJyb3J9LAorLy8gIHsoZ2NoYXIgKikgImdzdF9haF9jYW1lcmFfb25fYXV0b19mb2N1cyIsCisvLyAgICAgICAgKGdjaGFyICopICIoWkxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYTtKSilWIiwKKy8vICAgICAgKHZvaWQgKikgZ3N0X2FoX2NhbWVyYV9vbl9hdXRvX2ZvY3VzfQorfTsKKworc3RhdGljIGdib29sZWFuCitfaW5pdF9jbGFzc2VzICh2b2lkKQoreworICBKTklFbnYgKmVudjsKKyAgR0Vycm9yICplcnIgPSBOVUxMOworCisgIGpjbGFzcyBrbGFzczsKKyAgamZpZWxkSUQgZmllbGRJRDsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIC8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhICovCisgIGtsYXNzID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSIpOworICBpZiAoIWtsYXNzKQorICAgIGdvdG8gZmFpbGVkOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmFkZENhbGxiYWNrQnVmZmVyID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiYWRkQ2FsbGJhY2tCdWZmZXIiLCAiKFtCKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5hdXRvRm9jdXMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJhdXRvRm9jdXMiLCAiKExhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRBdXRvRm9jdXNDYWxsYmFjazspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmNhbmNlbEF1dG9Gb2N1cyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiY2FuY2VsQXV0b0ZvY3VzIiwgIigpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmdldENhbWVyYUluZm8gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiZ2V0Q2FtZXJhSW5mbyIsICIoSUxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRDYW1lcmFJbmZvOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuZ2V0TnVtYmVyT2ZDYW1lcmFzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgImdldE51bWJlck9mQ2FtZXJhcyIsICIoKUkiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5nZXRQYXJhbWV0ZXJzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiZ2V0UGFyYW1ldGVycyIsICIoKUxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRQYXJhbWV0ZXJzOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmxvY2sgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImxvY2siLCAiKClWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEub3BlbiA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJvcGVuIiwgIihJKUxhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYTsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5yZWNvbm5lY3QgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInJlY29ubmVjdCIsICIoKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5yZWxlYXNlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJyZWxlYXNlIiwgIigpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnNldEVycm9yQ2FsbGJhY2sgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldEVycm9yQ2FsbGJhY2siLAorICAgICAgIihMYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEkRXJyb3JDYWxsYmFjazspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnNldFBhcmFtZXRlcnMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldFBhcmFtZXRlcnMiLAorICAgICAgIihMYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEkUGFyYW1ldGVyczspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnNldFByZXZpZXdDYWxsYmFja1dpdGhCdWZmZXIgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJzZXRQcmV2aWV3Q2FsbGJhY2tXaXRoQnVmZmVyIiwKKyAgICAgICIoTGFuZHJvaWQvaGFyZHdhcmUvQ2FtZXJhJFByZXZpZXdDYWxsYmFjazspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnNldFByZXZpZXdUZXh0dXJlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAic2V0UHJldmlld1RleHR1cmUiLCAiKExhbmRyb2lkL2dyYXBoaWNzL1N1cmZhY2VUZXh0dXJlOylWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuc3RhcnRQcmV2aWV3ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzdGFydFByZXZpZXciLCAiKClWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEuc3RhcnRTbW9vdGhab29tID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzdGFydFNtb290aFpvb20iLCAiKEkpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLnN0b3BQcmV2aWV3ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzdG9wUHJldmlldyIsICIoKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5zdG9wUHJldmlldyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic3RvcFByZXZpZXciLCAiKClWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEudW5sb2NrID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJ1bmxvY2siLCAiKClWIik7CisKKyAgLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuQ2FtZXJhSW5mbyAqLworICBrbGFzcyA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8ua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRDYW1lcmFJbmZvIik7CisgIGlmICgha2xhc3MpCisgICAgZ290byBmYWlsZWQ7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5jb25zdHJ1Y3RvciA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiPGluaXQ+IiwgIigpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8uZmFjaW5nID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImZhY2luZyIsICJJIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5vcmllbnRhdGlvbiA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJvcmllbnRhdGlvbiIsICJJIik7CisKKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJDQU1FUkFfRkFDSU5HX0JBQ0siLAorICAgICAgIkkiKTsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ludF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5DQU1FUkFfRkFDSU5HX0JBQ0spKQorICAgIGdvdG8gZmFpbGVkOworICBDYW1lcmFJbmZvX0NBTUVSQV9GQUNJTkdfQkFDSyA9CisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLkNBTUVSQV9GQUNJTkdfQkFDSzsKKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJDQU1FUkFfRkFDSU5HX0ZST05UIiwKKyAgICAgICJJIik7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19pbnRfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8uQ0FNRVJBX0ZBQ0lOR19GUk9OVCkpCisgICAgZ290byBmYWlsZWQ7CisgIENhbWVyYUluZm9fQ0FNRVJBX0ZBQ0lOR19GUk9OVCA9CisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLkNBTUVSQV9GQUNJTkdfRlJPTlQ7CisKKyAgLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2l6ZSAqLworICBrbGFzcyA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3NpemUua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRTaXplIik7CisgIGlmICgha2xhc3MpCisgICAgZ290byBmYWlsZWQ7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS53aWR0aCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJ3aWR0aCIsICJJIik7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3NpemUuaGVpZ2h0ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImhlaWdodCIsICJJIik7CisKKyAgLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUGFyYW1ldGVycyAqLworICBrbGFzcyA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJhbmRyb2lkL2hhcmR3YXJlL0NhbWVyYSRQYXJhbWV0ZXJzIik7CisgIGlmICgha2xhc3MpCisgICAgZ290byBmYWlsZWQ7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5mbGF0dGVuID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJmbGF0dGVuIiwKKyAgICAgICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0QW50aWJhbmRpbmcgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldEFudGliYW5kaW5nIiwKKyAgICAgICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0Q29sb3JFZmZlY3QgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldENvbG9yRWZmZWN0IiwKKyAgICAgICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0RXhwb3N1cmVDb21wZW5zYXRpb24gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldEV4cG9zdXJlQ29tcGVuc2F0aW9uIiwKKyAgICAgICIoKUkiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldEV4cG9zdXJlQ29tcGVuc2F0aW9uU3RlcCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgImdldEV4cG9zdXJlQ29tcGVuc2F0aW9uU3RlcCIsICIoKUYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldEZsYXNoTW9kZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0Rmxhc2hNb2RlIiwKKyAgICAgICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0Rm9jYWxMZW5ndGggPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldEZvY2FsTGVuZ3RoIiwgIigpRiIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0Rm9jdXNNb2RlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRGb2N1c01vZGUiLAorICAgICAgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRIb3Jpem9udGFsVmlld0FuZ2xlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRIb3Jpem9udGFsVmlld0FuZ2xlIiwKKyAgICAgICIoKUYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldE1heEV4cG9zdXJlQ29tcGVuc2F0aW9uID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRNYXhFeHBvc3VyZUNvbXBlbnNhdGlvbiIsCisgICAgICAiKClJIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRNYXhab29tID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRNYXhab29tIiwgIigpSSIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0TWluRXhwb3N1cmVDb21wZW5zYXRpb24gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldE1pbkV4cG9zdXJlQ29tcGVuc2F0aW9uIiwKKyAgICAgICIoKUkiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFByZXZpZXdGb3JtYXQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFByZXZpZXdGb3JtYXQiLCAiKClJIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRQcmV2aWV3RnBzUmFuZ2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFByZXZpZXdGcHNSYW5nZSIsCisgICAgICAiKFtJKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFByZXZpZXdTaXplID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRQcmV2aWV3U2l6ZSIsCisgICAgICAiKClMYW5kcm9pZC9oYXJkd2FyZS9DYW1lcmEkU2l6ZTsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFNjZW5lTW9kZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U2NlbmVNb2RlIiwKKyAgICAgICIoKUxqYXZhL2xhbmcvU3RyaW5nOyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U3VwcG9ydGVkQW50aWJhbmRpbmcgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFN1cHBvcnRlZEFudGliYW5kaW5nIiwKKyAgICAgICIoKUxqYXZhL3V0aWwvTGlzdDsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFN1cHBvcnRlZENvbG9yRWZmZWN0cyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U3VwcG9ydGVkQ29sb3JFZmZlY3RzIiwKKyAgICAgICIoKUxqYXZhL3V0aWwvTGlzdDsiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmdldFN1cHBvcnRlZEZsYXNoTW9kZXMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFN1cHBvcnRlZEZsYXNoTW9kZXMiLAorICAgICAgIigpTGphdmEvdXRpbC9MaXN0OyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U3VwcG9ydGVkRm9jdXNNb2RlcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U3VwcG9ydGVkRm9jdXNNb2RlcyIsCisgICAgICAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRTdXBwb3J0ZWRQcmV2aWV3Rm9ybWF0cyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U3VwcG9ydGVkUHJldmlld0Zvcm1hdHMiLAorICAgICAgIigpTGphdmEvdXRpbC9MaXN0OyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U3VwcG9ydGVkUHJldmlld0Zwc1JhbmdlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiZ2V0U3VwcG9ydGVkUHJldmlld0Zwc1JhbmdlIiwgIigpTGphdmEvdXRpbC9MaXN0OyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U3VwcG9ydGVkUHJldmlld1NpemVzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRTdXBwb3J0ZWRQcmV2aWV3U2l6ZXMiLAorICAgICAgIigpTGphdmEvdXRpbC9MaXN0OyIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0U3VwcG9ydGVkU2NlbmVNb2RlcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0U3VwcG9ydGVkU2NlbmVNb2RlcyIsCisgICAgICAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRTdXBwb3J0ZWRXaGl0ZUJhbGFuY2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImdldFN1cHBvcnRlZFdoaXRlQmFsYW5jZSIsCisgICAgICAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRWZXJ0aWNhbFZpZXdBbmdsZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0VmVydGljYWxWaWV3QW5nbGUiLAorICAgICAgIigpRiIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0VmlkZW9TdGFiaWxpemF0aW9uID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRWaWRlb1N0YWJpbGl6YXRpb24iLAorICAgICAgIigpWiIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0V2hpdGVCYWxhbmNlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRXaGl0ZUJhbGFuY2UiLAorICAgICAgIigpTGphdmEvbGFuZy9TdHJpbmc7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5nZXRab29tID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJnZXRab29tIiwgIigpSSIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuZ2V0Wm9vbVJhdGlvcyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiZ2V0Wm9vbVJhdGlvcyIsCisgICAgICAiKClMamF2YS91dGlsL0xpc3Q7Iik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5pc1Ntb290aFpvb21TdXBwb3J0ZWQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImlzU21vb3RoWm9vbVN1cHBvcnRlZCIsCisgICAgICAiKClaIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5pc1ZpZGVvU3RhYmlsaXphdGlvblN1cHBvcnRlZCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgImlzVmlkZW9TdGFiaWxpemF0aW9uU3VwcG9ydGVkIiwgIigpWiIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuaXNab29tU3VwcG9ydGVkID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJpc1pvb21TdXBwb3J0ZWQiLCAiKClaIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRBbnRpYmFuZGluZyA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic2V0QW50aWJhbmRpbmciLAorICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0Q29sb3JFZmZlY3QgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldENvbG9yRWZmZWN0IiwKKyAgICAgICIoTGphdmEvbGFuZy9TdHJpbmc7KVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLnNldEV4cG9zdXJlQ29tcGVuc2F0aW9uID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRFeHBvc3VyZUNvbXBlbnNhdGlvbiIsCisgICAgICAiKEkpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0Rmxhc2hNb2RlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRGbGFzaE1vZGUiLAorICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0Rm9jdXNNb2RlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRGb2N1c01vZGUiLAorICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0UHJldmlld0Zvcm1hdCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAic2V0UHJldmlld0Zvcm1hdCIsICIoSSlWIik7CisKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5zZXRQcmV2aWV3RnBzUmFuZ2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldFByZXZpZXdGcHNSYW5nZSIsCisgICAgICAiKElJKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLnNldFByZXZpZXdTaXplID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRQcmV2aWV3U2l6ZSIsICIoSUkpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0U2NlbmVNb2RlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRTY2VuZU1vZGUiLAorICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0V2hpdGVCYWxhbmNlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRXaGl0ZUJhbGFuY2UiLAorICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuc2V0VmlkZW9TdGFiaWxpemF0aW9uID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJzZXRWaWRlb1N0YWJpbGl6YXRpb24iLAorICAgICAgIihaKVYiKTsKKworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLnNldFpvb20gPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgInNldFpvb20iLCAiKEkpViIpOworCisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMudW5mbGF0dGVuID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJ1bmZsYXR0ZW4iLAorICAgICAgIihMamF2YS9sYW5nL1N0cmluZzspViIpOworCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIldISVRFX0JBTEFOQ0VfQVVUTyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE8pKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9BVVRPLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQVVUTzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9BVVRPID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgIldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UIiwgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0KKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9CisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywKKyAgICAgICJXSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQiLCAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5ULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPQorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgIldISVRFX0JBTEFOQ0VfREFZTElHSFQiLCAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0RBWUxJR0hUKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0RBWUxJR0hULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfREFZTElHSFQ7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfREFZTElHSFQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQiLCAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCkpCisgICAgZ290byBmYWlsZWQ7CisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0KKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQpKQorICAgIGdvdG8gZmFpbGVkOworICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfVFdJTElHSFQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1RXSUxJR0hULCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQ7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJXSElURV9CQUxBTkNFX1NIQURFIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREUpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9TSEFERTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9TSEFERSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkVGRkVDVF9OT05FIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9OT05FKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0VGRkVDVF9OT05FID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05PTkUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05PTkU7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9OT05FID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRUZGRUNUX01PTk8iLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX01PTk8pKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRUZGRUNUX01PTk8gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX01PTk8gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJFRkZFQ1RfTkVHQVRJVkUiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05FR0FUSVZFKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0VGRkVDVF9ORUdBVElWRSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTkVHQVRJVkU7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkVGRkVDVF9TT0xBUklaRSIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU09MQVJJWkUpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NPTEFSSVpFLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TT0xBUklaRTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NPTEFSSVpFID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRUZGRUNUX1NFUElBIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TRVBJQSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19FRkZFQ1RfU0VQSUEgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUEsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NFUElBOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUEgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJFRkZFQ1RfUE9TVEVSSVpFIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9QT1NURVJJWkUpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRUZGRUNUX1BPU1RFUklaRSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9QT1NURVJJWkUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkVGRkVDVF9XSElURUJPQVJEIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9XSElURUJPQVJEKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQ7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9XSElURUJPQVJEID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRUZGRUNUX0JMQUNLQk9BUkQiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0JMQUNLQk9BUkQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0JMQUNLQk9BUkQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJFRkZFQ1RfQVFVQSIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19FRkZFQ1RfQVFVQSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9BUVVBLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9BUVVBOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkFOVElCQU5ESU5HX0FVVE8iLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfQVVUTykpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19BTlRJQkFORElOR19BVVRPID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfQVVUTywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiQU5USUJBTkRJTkdfNTBIWiIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR181MEhaKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFogPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR181MEhaLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFo7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFogPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJBTlRJQkFORElOR182MEhaIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzYwSFopKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNjBIWiA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzYwSFosIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWjsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWiA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkFOVElCQU5ESU5HX09GRiIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19PRkYpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfT0ZGID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfT0ZGLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRjsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfT0ZGID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRkxBU0hfTU9ERV9PRkYiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PRkYpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkYgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRiwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRjsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PRkYgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJGTEFTSF9NT0RFX0FVVE8iLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9BVVRPKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTyA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfQVVUTywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX0FVVE87CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfQVVUTyA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkZMQVNIX01PREVfT04iLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PTikpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX09OID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PTiwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRkxBU0hfTU9ERV9SRURfRVlFIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfUkVEX0VZRSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX1JFRF9FWUUgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1JFRF9FWUUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9SRURfRVlFOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1JFRF9FWUUgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJGTEFTSF9NT0RFX1RPUkNIIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfVE9SQ0gpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfVE9SQ0gsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9UT1JDSDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9UT1JDSCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfQVVUTyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8pKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BVVRPID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BVVRPLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQVVUTzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BVVRPID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9BQ1RJT04iLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BQ1RJT04pKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BQ1RJT04gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FDVElPTiwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FDVElPTjsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BQ1RJT04gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX1BPUlRSQUlUIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QT1JUUkFJVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QT1JUUkFJVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfTEFORFNDQVBFIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRSA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0xBTkRTQ0FQRSA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfTklHSFQiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVCkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgIlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQiLCAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUKSkKKyAgICBnb3RvIGZhaWxlZDsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0KKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfVEhFQVRSRSIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1RIRUFUUkUpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfVEhFQVRSRTsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9CRUFDSCIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JFQUNIKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkVBQ0ggPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JFQUNILCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0g7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0ggPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX1NOT1ciLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TTk9XKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU05PVyA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU05PVywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1c7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU05PVyA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIlNDRU5FX01PREVfU1VOU0VUIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VUKSkKKyAgICBnb3RvIGZhaWxlZDsKKworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVU5TRVQgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NVTlNFVCwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NVTlNFVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVU5TRVQgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiU0NFTkVfTU9ERV9TVEVBRFlQSE9UTyIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE8pKQorICAgIGdvdG8gZmFpbGVkOworCisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NURUFEWVBIT1RPID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVEVBRFlQSE9UTywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NURUFEWVBIT1RPOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NURUFEWVBIT1RPID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9GSVJFV09SS1MiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9GSVJFV09SS1MpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1MgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUzsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9GSVJFV09SS1MgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJTQ0VORV9NT0RFX1NQT1JUUyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUykpCisgICAgZ290byBmYWlsZWQ7CisKKworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1BPUlRTID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TUE9SVFMsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TUE9SVFM7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1BPUlRTID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9QQVJUWSIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BBUlRZKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfUEFSVFkgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BBUlRZLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUEFSVFk7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUEFSVFkgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQ0FORExFTElHSFQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQ0FORExFTElHSFQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiU0NFTkVfTU9ERV9CQVJDT0RFIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JBUkNPREUgPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JBUkNPREUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CQVJDT0RFOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JBUkNPREUgPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJGT0NVU19NT0RFX0FVVE8iLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTyA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTywgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0FVVE87CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTyA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkZPQ1VTX01PREVfSU5GSU5JVFkiLAorICAgICAgIkxqYXZhL2xhbmcvU3RyaW5nOyIpOworICBpZiAoIWZpZWxkSUQpCisgICAgZ290byBmYWlsZWQ7CisgIGlmICghZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19vYmplY3RfZmllbGQgKGVudiwgJmVyciwga2xhc3MsIGZpZWxkSUQsCisgICAgICAgICAgJmFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9JTkZJTklUWSkpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9JTkZJTklUWSwgTlVMTCk7CisgIHsKKyAgICBqb2JqZWN0IGxvY2FsID0gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0lORklOSVRZOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0lORklOSVRZID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiRk9DVVNfTU9ERV9NQUNSTyIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX01BQ1JPKSkKKyAgICBnb3RvIGZhaWxlZDsKKworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfTUFDUk8gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX01BQ1JPLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk87CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsICJGT0NVU19NT0RFX0ZJWEVEIiwKKyAgICAgICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRklYRUQpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRCA9CisgICAgICAoKmVudiktPkdldFN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRklYRUQsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9IGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRDsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRCA9CisgICAgICAgICgqZW52KS0+TmV3R2xvYmFsUmVmIChlbnYsIGxvY2FsKTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxvY2FsKTsKKyAgfQorCisgIGZpZWxkSUQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X3N0YXRpY19maWVsZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgIkZPQ1VTX01PREVfRURPRiIsCisgICAgICAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0VET0YpKQorICAgIGdvdG8gZmFpbGVkOworCisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GLCBOVUxMKTsKKyAgeworICAgIGpvYmplY3QgbG9jYWwgPSBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRURPRjsKKworICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgZmllbGRJRCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfc3RhdGljX2ZpZWxkX2lkIChlbnYsICZlcnIsIGtsYXNzLAorICAgICAgIkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTyIsICJMamF2YS9sYW5nL1N0cmluZzsiKTsKKyAgaWYgKCFmaWVsZElEKQorICAgIGdvdG8gZmFpbGVkOworICBpZiAoIWdzdF9hbWNfam5pX2dldF9zdGF0aWNfb2JqZWN0X2ZpZWxkIChlbnYsICZlcnIsIGtsYXNzLCBmaWVsZElELAorICAgICAgICAgICZhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTykpCisgICAgZ290byBmYWlsZWQ7CisKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8gPQorICAgICAgKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8sIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9CisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPOworCisgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8gPQorICAgICAgICAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBsb2NhbCk7CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsb2NhbCk7CisgIH0KKworICBmaWVsZElEID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9zdGF0aWNfZmllbGRfaWQgKGVudiwgJmVyciwga2xhc3MsCisgICAgICAiRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUiLCAiTGphdmEvbGFuZy9TdHJpbmc7Iik7CisgIGlmICghZmllbGRJRCkKKyAgICBnb3RvIGZhaWxlZDsKKyAgaWYgKCFnc3RfYW1jX2puaV9nZXRfc3RhdGljX29iamVjdF9maWVsZCAoZW52LCAmZXJyLCBrbGFzcywgZmllbGRJRCwKKyAgICAgICAgICAmYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSkpCisgICAgZ290byBmYWlsZWQ7CisKKworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFID0KKyAgICAgICgqZW52KS0+R2V0U3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUsIE5VTEwpOworICB7CisgICAgam9iamVjdCBsb2NhbCA9CisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkU7CisKKyAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFID0KKyAgICAgICAgKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgbG9jYWwpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbG9jYWwpOworICB9CisKKyAgLyogamF2YS5sYW5nLlN0cmluZyAqLworICBrbGFzcyA9IGphdmFfbGFuZ19zdHJpbmcua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJqYXZhL2xhbmcvU3RyaW5nIik7CisgIGphdmFfbGFuZ19zdHJpbmcuZXF1YWxzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJlcXVhbHMiLAorICAgICAgIihMamF2YS9sYW5nL09iamVjdDspWiIpOworCisgIC8qIGphdmEudXRpbC5MaXN0ICovCisgIGtsYXNzID0gamF2YV91dGlsX2xpc3Qua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJqYXZhL3V0aWwvTGlzdCIpOworICBqYXZhX3V0aWxfbGlzdC5pdGVyYXRvciA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiaXRlcmF0b3IiLAorICAgICAgIigpTGphdmEvdXRpbC9JdGVyYXRvcjsiKTsKKworICAvKiBqYXZhLnV0aWwuSXRlcmF0b3IgKi8KKyAga2xhc3MgPSBqYXZhX3V0aWxfaXRlcmF0b3Iua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJqYXZhL3V0aWwvSXRlcmF0b3IiKTsKKyAgamF2YV91dGlsX2l0ZXJhdG9yLmhhc05leHQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLCBrbGFzcywgImhhc05leHQiLCAiKClaIik7CisgIGphdmFfdXRpbF9pdGVyYXRvci5uZXh0ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgJmVyciwga2xhc3MsICJuZXh0IiwKKyAgICAgICIoKUxqYXZhL2xhbmcvT2JqZWN0OyIpOworCisgIC8qIGphdmEubGFuZy5JbnRlZ2VyICovCisgIGtsYXNzID0gamF2YV9sYW5nX2ludGVnZXIua2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsICJqYXZhL2xhbmcvSW50ZWdlciIpOworICBqYXZhX2xhbmdfaW50ZWdlci5pbnRWYWx1ZSA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsICZlcnIsIGtsYXNzLCAiaW50VmFsdWUiLCAiKClJIik7CisKKyAgaWYgKCFvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcykgeworICAgIG9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmtsYXNzID0KKyAgICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsICZlcnIsCisgICAgICAgICJvcmcvZnJlZWRlc2t0b3AvZ3N0cmVhbWVyL2FuZHJvaWRtZWRpYS9Hc3RBaGNDYWxsYmFjayIpOworICB9CisgIGlmICghb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MpCisgICAgZ290byBmYWlsZWQ7CisKKyAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2suY29uc3RydWN0b3IgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCAmZXJyLAorICAgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MsICI8aW5pdD4iLAorICAgICAgIihKSilWIik7CisKKyAgaWYgKCgqZW52KS0+UmVnaXN0ZXJOYXRpdmVzIChlbnYsCisgICAgICAgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MsCisgICAgICAgICAgbmF0aXZlX21ldGhvZHMsIEdfTl9FTEVNRU5UUyAobmF0aXZlX21ldGhvZHMpKSkgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byByZWdpc3RlciBuYXRpdmUgbWV0aG9kcyBmb3IgR3N0QWhjQ2FsbGJhY2siKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKKworZmFpbGVkOgorICBpZiAoZXJyKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGluaXRpYWxpemUgYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEgY2xhc3NlczogJXMiLAorICAgICAgICBlcnItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICB9CisKKyAgcmV0dXJuIEZBTFNFOworCit9CisKKworZ2Jvb2xlYW4KK2dzdF9hbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9pbml0ICh2b2lkKQoreworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoYWhjX2RlYnVnLCAiYWhjIiwgMCwKKyAgICAgICJBbmRyb2lkIEdzdHJlYW1lciBIYXJkd2FyZSBDYW1lcmEiKTsKKyAgaWYgKCFfaW5pdF9jbGFzc2VzICgpKSB7CisgICAgZ3N0X2FuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2RlaW5pdCAoKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICByZXR1cm4gVFJVRTsKK30KKwordm9pZAorZ3N0X2FuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2RlaW5pdCAodm9pZCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5rbGFzcykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYS5rbGFzcyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhLmtsYXNzID0gTlVMTDsKKworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5rbGFzcykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLmtsYXNzKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfY2FtZXJhaW5mby5rbGFzcyA9IE5VTEw7CisKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3NpemUua2xhc3MpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS5rbGFzcyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3NpemUua2xhc3MgPSBOVUxMOworCisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmtsYXNzKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMua2xhc3MpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLmtsYXNzID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9BVVRPLAorICAgICAgICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQVVUTyk7CisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9BVVRPKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9BVVRPKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE8gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5ULAorICAgICAgICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQsCisgICAgICAgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCk7CisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5ULAorICAgICAgICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVCk7CisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0RBWUxJR0hUKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCwKKyAgICAgICAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0RBWUxJR0hUKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0RBWUxJR0hUID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfREFZTElHSFQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfREFZTElHSFQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hULAorICAgICAgICBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUKTsKKyAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9DTE9VRFlfREFZTElHSFQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQsCisgICAgICAgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCk7CisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1RXSUxJR0hUKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1RXSUxJR0hUID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREUsCisgICAgICAgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERSk7CisgIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREUpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1NIQURFKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1NIQURFID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRUZGRUNUX05PTkUpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTk9ORSwgUGFyYW1ldGVyc19FRkZFQ1RfTk9ORSk7CisgIFBhcmFtZXRlcnNfRUZGRUNUX05PTkUgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTk9ORSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9OT05FKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTk9ORSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0VGRkVDVF9NT05PKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX01PTk8sIFBhcmFtZXRlcnNfRUZGRUNUX01PTk8pOworICBQYXJhbWV0ZXJzX0VGRkVDVF9NT05PID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX01PTk8pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX01PTk8gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkUpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTkVHQVRJVkUsCisgICAgICAgIFBhcmFtZXRlcnNfRUZGRUNUX05FR0FUSVZFKTsKKyAgUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkUgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTkVHQVRJVkUpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTkVHQVRJVkUpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0VGRkVDVF9TT0xBUklaRSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TT0xBUklaRSwKKyAgICAgICAgUGFyYW1ldGVyc19FRkZFQ1RfU09MQVJJWkUpOworICBQYXJhbWV0ZXJzX0VGRkVDVF9TT0xBUklaRSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TT0xBUklaRSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TT0xBUklaRSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NPTEFSSVpFID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRUZGRUNUX1NFUElBKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NFUElBLAorICAgICAgICBQYXJhbWV0ZXJzX0VGRkVDVF9TRVBJQSk7CisgIFBhcmFtZXRlcnNfRUZGRUNUX1NFUElBID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NFUElBKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NFUElBKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU0VQSUEgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19FRkZFQ1RfUE9TVEVSSVpFKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSwKKyAgICAgICAgUGFyYW1ldGVyc19FRkZFQ1RfUE9TVEVSSVpFKTsKKyAgUGFyYW1ldGVyc19FRkZFQ1RfUE9TVEVSSVpFID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1BPU1RFUklaRSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9QT1NURVJJWkUpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9QT1NURVJJWkUgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19FRkZFQ1RfV0hJVEVCT0FSRCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9XSElURUJPQVJELAorICAgICAgICBQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEKTsKKyAgUGFyYW1ldGVyc19FRkZFQ1RfV0hJVEVCT0FSRCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9XSElURUJPQVJEKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9XSElURUJPQVJEID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRCwKKyAgICAgICAgUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRCk7CisgIFBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9CTEFDS0JPQVJEKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQkxBQ0tCT0FSRCA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0VGRkVDVF9BUVVBKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0FRVUEsIFBhcmFtZXRlcnNfRUZGRUNUX0FRVUEpOworICBQYXJhbWV0ZXJzX0VGRkVDVF9BUVVBID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0FRVUEpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0FRVUEgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19BTlRJQkFORElOR19BVVRPKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfQVVUTywKKyAgICAgICAgUGFyYW1ldGVyc19BTlRJQkFORElOR19BVVRPKTsKKyAgUGFyYW1ldGVyc19BTlRJQkFORElOR19BVVRPID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfQVVUTykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX0FVVE8pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX0FVVE8gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19BTlRJQkFORElOR181MEhaKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNTBIWiwKKyAgICAgICAgUGFyYW1ldGVyc19BTlRJQkFORElOR181MEhaKTsKKyAgUGFyYW1ldGVyc19BTlRJQkFORElOR181MEhaID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNTBIWikKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFopOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFogPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWiwKKyAgICAgICAgUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaKTsKKyAgUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWikKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzYwSFopOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzYwSFogPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19BTlRJQkFORElOR19PRkYpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19PRkYsCisgICAgICAgIFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfT0ZGKTsKKyAgUGFyYW1ldGVyc19BTlRJQkFORElOR19PRkYgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19PRkYpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19PRkYpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRiA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT0ZGKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PRkYsCisgICAgICAgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkYpOworICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT0ZGID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PRkYpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09GRik7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PRkYgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19GTEFTSF9NT0RFX0FVVE8pCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX0FVVE8sCisgICAgICAgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9BVVRPKTsKKyAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX0FVVE8gPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX0FVVE8pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX0FVVE8pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfQVVUTyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT04pCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OLAorICAgICAgICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT04pOworICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT04gPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PTik7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PTiA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfUkVEX0VZRSwKKyAgICAgICAgUGFyYW1ldGVyc19GTEFTSF9NT0RFX1JFRF9FWUUpOworICBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfUkVEX0VZRSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfUkVEX0VZRSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9SRURfRVlFID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfVE9SQ0gsCisgICAgICAgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSCk7CisgIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfVE9SQ0gpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1RPUkNIKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1RPUkNIID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BVVRPKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BVVRPLAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQVVUTyk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BVVRPID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BVVRPKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BVVRPKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE8gPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTikKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQUNUSU9OLAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQUNUSU9OKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FDVElPTiA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQUNUSU9OKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BQ1RJT04pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQUNUSU9OID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQsCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVCk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BPUlRSQUlUKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BPUlRSQUlUID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9MQU5EU0NBUEUpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0xBTkRTQ0FQRSwKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRSk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9MQU5EU0NBUEUgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0xBTkRTQ0FQRSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0xBTkRTQ0FQRSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hULAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVCA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlULAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfVEhFQVRSRSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfVEhFQVRSRSwKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1RIRUFUUkUpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfVEhFQVRSRSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfVEhFQVRSRSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfVEhFQVRSRSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9USEVBVFJFID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0gsCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSCk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0gpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JFQUNIKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JFQUNIID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TTk9XLAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU05PVyk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TTk9XKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TTk9XKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1cgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NVTlNFVCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VULAorICAgICAgICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NVTlNFVCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VUKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TVU5TRVQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VUID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVEVBRFlQSE9UTykKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE8sCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVEVBRFlQSE9UTyk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TVEVBRFlQSE9UTyA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE8pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NURUFEWVBIT1RPKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NURUFEWVBIT1RPID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1MpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUywKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0ZJUkVXT1JLUyk7CisgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1MgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfRklSRVdPUktTKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1BPUlRTKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TUE9SVFMsCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFMpOworICBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1BPUlRTID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TUE9SVFMpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TUE9SVFMgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QQVJUWSwKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QQVJUWSkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUEFSVFkpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUEFSVFkgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCwKKyAgICAgICAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCkKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQ0FORExFTElHSFQpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQ0FORExFTElHSFQgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JBUkNPREUpCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JBUkNPREUsCisgICAgICAgIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CQVJDT0RFKTsKKyAgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JBUkNPREUgPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JBUkNPREUpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JBUkNPREUpOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTykKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTywKKyAgICAgICAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0FVVE8pOworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTyA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTyk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9BVVRPID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9JTkZJTklUWSkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFksCisgICAgICAgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9JTkZJTklUWSk7CisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9JTkZJTklUWSA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFkpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0lORklOSVRZKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0lORklOSVRZID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9NQUNSTykKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8sCisgICAgICAgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9NQUNSTyk7CisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9NQUNSTyA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk8pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX01BQ1JPKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX01BQ1JPID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRCkKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LAorICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRklYRUQsCisgICAgICAgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRCk7CisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRCA9IE5VTEw7CisgIGlmIChhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRklYRUQpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0ZJWEVEKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0ZJWEVEID0gTlVMTDsKKyAgaWYgKFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GLAorICAgICAgICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfRURPRik7CisgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9FRE9GKTsKKyAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0VET0YgPSBOVUxMOworICBpZiAoUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8pCisgICAgKCplbnYpLT5SZWxlYXNlU3RyaW5nVVRGQ2hhcnMgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8sCisgICAgICAgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPKTsKKyAgUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8gPSBOVUxMOworICBpZiAoYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8pCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8pOworICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTyA9IE5VTEw7CisgIGlmIChQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFKQorICAgICgqZW52KS0+UmVsZWFzZVN0cmluZ1VURkNoYXJzIChlbnYsCisgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUsCisgICAgICAgIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUpOworICBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFID0gTlVMTDsKKyAgaWYgKGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwKKyAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSk7CisgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUgPSBOVUxMOworCisgIGlmIChqYXZhX2xhbmdfc3RyaW5nLmtsYXNzKQorICAgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGphdmFfbGFuZ19zdHJpbmcua2xhc3MpOworICBqYXZhX2xhbmdfc3RyaW5nLmtsYXNzID0gTlVMTDsKKworICBpZiAoamF2YV91dGlsX2xpc3Qua2xhc3MpCisgICAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgamF2YV91dGlsX2xpc3Qua2xhc3MpOworICBqYXZhX3V0aWxfbGlzdC5rbGFzcyA9IE5VTEw7CisKKyAgaWYgKGphdmFfdXRpbF9pdGVyYXRvci5rbGFzcykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBqYXZhX3V0aWxfaXRlcmF0b3Iua2xhc3MpOworICBqYXZhX3V0aWxfaXRlcmF0b3Iua2xhc3MgPSBOVUxMOworCisgIGlmIChqYXZhX2xhbmdfaW50ZWdlci5rbGFzcykKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBqYXZhX2xhbmdfaW50ZWdlci5rbGFzcyk7CisgIGphdmFfbGFuZ19pbnRlZ2VyLmtsYXNzID0gTlVMTDsKKworICBpZiAob3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MpIHsKKyAgICAoKmVudiktPlVucmVnaXN0ZXJOYXRpdmVzIChlbnYsCisgICAgICAgIG9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmtsYXNzKTsKKyAgICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LAorICAgICAgICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcyk7CisgIH0KKyAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MgPSBOVUxMOworfQorCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSAqLworI2RlZmluZSBBSENfQ0FMTChlcnJvcl9zdGF0ZW1lbnQsIHR5cGUsIG1ldGhvZCwgLi4uKSAgICAgICAgICAgICAgICAgICAgXAorICBHU1RfRFZNX0NBTEwgKGVycm9yX3N0YXRlbWVudCwgc2VsZi0+b2JqZWN0LCB0eXBlLCBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYSwgXAorICAgICAgbWV0aG9kLCAjIyBfX1ZBX0FSR1NfXyk7CisjZGVmaW5lIEFIQ19TVEFUSUNfQ0FMTChlcnJvcl9zdGF0ZW1lbnQsIHR5cGUsIG1ldGhvZCwgLi4uKSAgICAgICAgICAgICBcCisgIEdTVF9EVk1fU1RBVElDX0NBTEwgKGVycm9yX3N0YXRlbWVudCwgdHlwZSwgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmEsICBcCisgICAgICBtZXRob2QsICMjIF9fVkFfQVJHU19fKTsKKwordm9pZAorZ3N0X2FoX2NhbWVyYV9hZGRfY2FsbGJhY2tfYnVmZmVyIChHc3RBSENhbWVyYSAqIHNlbGYsIGpieXRlQXJyYXkgYnVmZmVyKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgR1NUX0RFQlVHICgiYWRkIGNhbGxiYWNrX2J1ZmZlciAlcCIsIGJ1ZmZlcik7CisKKyAgQUhDX0NBTEwgKCwgVm9pZCwgYWRkQ2FsbGJhY2tCdWZmZXIsIGJ1ZmZlcik7Cit9CisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX2F1dG9fZm9jdXMgKEdzdEFIQ2FtZXJhICogc2VsZiwKKyAgICBHc3RBSENBdXRvRm9jdXNDYWxsYmFjayBjYiwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3Qgb2JqZWN0ID0gTlVMTDsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKGNiKSB7CisgICAgb2JqZWN0ID0gKCplbnYpLT5OZXdPYmplY3QgKGVudiwKKyAgICAgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2sua2xhc3MsCisgICAgICAgIG9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmNvbnN0cnVjdG9yLAorICAgICAgICAqKChqbG9uZyAqKSAmIGNiKSwgKigoamxvbmcgKikgJiB1c2VyX2RhdGEpKTsKKyAgICBpZiAoIW9iamVjdCkgeworICAgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNyZWF0ZSBjYWxsYmFjayBvYmplY3QiKTsKKyAgICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgICBnb3RvIGRvbmU7CisgICAgfQorICB9CisKKyAgQUhDX0NBTEwgKGdvdG8gZG9uZSwgVm9pZCwgYXV0b0ZvY3VzLCBvYmplY3QpOworCisgIHJldCA9IFRSVUU7Citkb25lOgorICBpZiAob2JqZWN0KQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgb2JqZWN0KTsKKworICByZXR1cm4gcmV0OworfQorCitnYm9vbGVhbgorZ3N0X2FoX2NhbWVyYV9jYW5jZWxfYXV0b19mb2N1cyAoR3N0QUhDYW1lcmEgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgQUhDX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgY2FuY2VsQXV0b0ZvY3VzKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfZ2V0X2NhbWVyYV9pbmZvIChnaW50IGNhbWVyYV9pZCwgR3N0QUhDQ2FtZXJhSW5mbyAqIGNhbWVyYV9pbmZvKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QgamNhbWVyYV9pbmZvID0gTlVMTDsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgamNhbWVyYV9pbmZvID0gKCplbnYpLT5OZXdPYmplY3QgKGVudiwKKyAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX2NhbWVyYWluZm8ua2xhc3MsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLmNvbnN0cnVjdG9yKTsKKyAgaWYgKCFqY2FtZXJhX2luZm8pIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY2FsbCBKYXZhIG1ldGhvZCIpOworICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgZ290byBkb25lOworICB9CisKKyAgQUhDX1NUQVRJQ19DQUxMIChnb3RvIGRvbmUsIFZvaWQsIGdldENhbWVyYUluZm8sIGNhbWVyYV9pZCwgamNhbWVyYV9pbmZvKTsKKworICBjYW1lcmFfaW5mby0+ZmFjaW5nID0gKCplbnYpLT5HZXRJbnRGaWVsZCAoZW52LCBqY2FtZXJhX2luZm8sCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLmZhY2luZyk7CisgIGlmICgoKmVudiktPkV4Y2VwdGlvbkNoZWNrIChlbnYpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGdldCBDYW1lcmFJbmZvLmZhY2luZyBmaWVsZCIpOworICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgZ290byBkb25lOworICB9CisKKyAgY2FtZXJhX2luZm8tPm9yaWVudGF0aW9uID0gKCplbnYpLT5HZXRJbnRGaWVsZCAoZW52LCBqY2FtZXJhX2luZm8sCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9jYW1lcmFpbmZvLm9yaWVudGF0aW9uKTsKKyAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZ2V0IENhbWVyYUluZm8ub3JpZW50YXRpb24gZmllbGQiKTsKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIHJldCA9IFRSVUU7Citkb25lOgorICBpZiAoamNhbWVyYV9pbmZvKQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgamNhbWVyYV9pbmZvKTsKKworICByZXR1cm4gcmV0OworfQorCitnaW50Citnc3RfYWhfY2FtZXJhX2dldF9udW1iZXJfb2ZfY2FtZXJhcyAodm9pZCkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnaW50IG51bV9jYW1lcmFzOworCisgIG51bV9jYW1lcmFzID0gQUhDX1NUQVRJQ19DQUxMIChyZXR1cm4gLTEsIEludCwgZ2V0TnVtYmVyT2ZDYW1lcmFzKTsKKworICByZXR1cm4gbnVtX2NhbWVyYXM7Cit9CisKK0dzdEFIQ1BhcmFtZXRlcnMgKgorZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoR3N0QUhDYW1lcmEgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3Qgb2JqZWN0ID0gTlVMTDsKKyAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zID0gTlVMTDsKKworICBvYmplY3QgPSBBSENfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0UGFyYW1ldGVycyk7CisgIGlmIChvYmplY3QpIHsKKyAgICBwYXJhbXMgPSBnX3NsaWNlX25ldzAgKEdzdEFIQ1BhcmFtZXRlcnMpOworICAgIHBhcmFtcy0+b2JqZWN0ID0gKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgb2JqZWN0KTsKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIG9iamVjdCk7CisgICAgaWYgKCFwYXJhbXMtPm9iamVjdCkgeworICAgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNyZWF0ZSBnbG9iYWwgcmVmZXJlbmNlIik7CisgICAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgICAgZ19zbGljZV9mcmVlIChHc3RBSENQYXJhbWV0ZXJzLCBwYXJhbXMpOworICAgICAgcmV0dXJuIE5VTEw7CisgICAgfQorICB9CisKKyAgR1NUX0RFQlVHICgicmV0dXJuIHBhcmFtZXRlcnMgJXAiLCBwYXJhbXMtPm9iamVjdCk7CisKKyAgcmV0dXJuIHBhcmFtczsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfbG9jayAoR3N0QUhDYW1lcmEgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgQUhDX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgbG9jayk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK0dzdEFIQ2FtZXJhICoKK2dzdF9haF9jYW1lcmFfb3BlbiAoZ2ludCBjYW1lcmFfaWQpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBvYmplY3QgPSBOVUxMOworICBHc3RBSENhbWVyYSAqY2FtZXJhID0gTlVMTDsKKworICBvYmplY3QgPSBBSENfU1RBVElDX0NBTEwgKGdvdG8gZG9uZSwgT2JqZWN0LCBvcGVuLCBjYW1lcmFfaWQpOworICBpZiAob2JqZWN0KSB7CisgICAgY2FtZXJhID0gZ19zbGljZV9uZXcwIChHc3RBSENhbWVyYSk7CisgICAgY2FtZXJhLT5vYmplY3QgPSAoKmVudiktPk5ld0dsb2JhbFJlZiAoZW52LCBvYmplY3QpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgb2JqZWN0KTsKKyAgICBpZiAoIWNhbWVyYS0+b2JqZWN0KSB7CisgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY3JlYXRlIGdsb2JhbCByZWZlcmVuY2UiKTsKKyAgICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgICBnX3NsaWNlX2ZyZWUgKEdzdEFIQ2FtZXJhLCBjYW1lcmEpOworICAgICAgY2FtZXJhID0gTlVMTDsKKyAgICB9CisgIH0KKworZG9uZToKKyAgcmV0dXJuIGNhbWVyYTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfcmVjb25uZWN0IChHc3RBSENhbWVyYSAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCByZWNvbm5lY3QpOworCisgIHJldHVybiBUUlVFOworfQorCit2b2lkCitnc3RfYWhfY2FtZXJhX3JlbGVhc2UgKEdzdEFIQ2FtZXJhICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMICgsIFZvaWQsIHJlbGVhc2UpOworfQorCit2b2lkCitnc3RfYWhfY2FtZXJhX2ZyZWUgKEdzdEFIQ2FtZXJhICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIHNlbGYtPm9iamVjdCk7CisgIGdfc2xpY2VfZnJlZSAoR3N0QUhDYW1lcmEsIHNlbGYpOworfQorCisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChHc3RBSENhbWVyYSAqIHNlbGYsIEdzdEFIQ1BhcmFtZXRlcnMgKiBwYXJhbXMpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRQYXJhbWV0ZXJzLCBwYXJhbXMtPm9iamVjdCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX3NldF9lcnJvcl9jYWxsYmFjayAoR3N0QUhDYW1lcmEgKiBzZWxmLCBHc3RBSENFcnJvckNhbGxiYWNrIGNiLAorICAgIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IG9iamVjdCA9IE5VTEw7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChjYikgeworICAgIG9iamVjdCA9ICgqZW52KS0+TmV3T2JqZWN0IChlbnYsCisgICAgICAgIG9yZ19mcmVlZGVza3RvcF9nc3RyZWFtZXJfYW5kcm9pZG1lZGlhX2dzdGFoY2NhbGxiYWNrLmtsYXNzLAorICAgICAgICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5jb25zdHJ1Y3RvciwKKyAgICAgICAgKigoamxvbmcgKikgJiBjYiksICooKGpsb25nICopICYgdXNlcl9kYXRhKSk7CisgICAgaWYgKCFvYmplY3QpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjcmVhdGUgY2FsbGJhY2sgb2JqZWN0Iik7CisgICAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgICAgZ290byBkb25lOworICAgIH0KKyAgfQorCisgIEFIQ19DQUxMIChnb3RvIGRvbmUsIFZvaWQsIHNldEVycm9yQ2FsbGJhY2ssIG9iamVjdCk7CisKKyAgcmV0ID0gVFJVRTsKK2RvbmU6CisgIGlmIChvYmplY3QpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBvYmplY3QpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX3NldF9wcmV2aWV3X2NhbGxiYWNrX3dpdGhfYnVmZmVyIChHc3RBSENhbWVyYSAqIHNlbGYsCisgICAgR3N0QUhDUHJldmlld0NhbGxiYWNrIGNiLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBvYmplY3QgPSBOVUxMOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoY2IpIHsKKyAgICBvYmplY3QgPSAoKmVudiktPk5ld09iamVjdCAoZW52LAorICAgICAgICBvcmdfZnJlZWRlc2t0b3BfZ3N0cmVhbWVyX2FuZHJvaWRtZWRpYV9nc3RhaGNjYWxsYmFjay5rbGFzcywKKyAgICAgICAgb3JnX2ZyZWVkZXNrdG9wX2dzdHJlYW1lcl9hbmRyb2lkbWVkaWFfZ3N0YWhjY2FsbGJhY2suY29uc3RydWN0b3IsCisgICAgICAgICooKGpsb25nICopICYgY2IpLCAqKChqbG9uZyAqKSAmIHVzZXJfZGF0YSkpOworICAgIGlmICghb2JqZWN0KSB7CisgICAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gY3JlYXRlIGNhbGxiYWNrIG9iamVjdCIpOworICAgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisgIH0KKworICBBSENfQ0FMTCAoZ290byBkb25lLCBWb2lkLCBzZXRQcmV2aWV3Q2FsbGJhY2tXaXRoQnVmZmVyLCBvYmplY3QpOworCisgIHJldCA9IFRSVUU7Citkb25lOgorICBpZiAob2JqZWN0KQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgb2JqZWN0KTsKKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhfY2FtZXJhX3NldF9wcmV2aWV3X3RleHR1cmUgKEdzdEFIQ2FtZXJhICogc2VsZiwKKyAgICBHc3RBR1N1cmZhY2VUZXh0dXJlICogc3VyZmFjZVRleHR1cmUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAoLCBWb2lkLCBzZXRQcmV2aWV3VGV4dHVyZSwgc3VyZmFjZVRleHR1cmUtPm9iamVjdCk7Cit9CisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX3N0YXJ0X3ByZXZpZXcgKEdzdEFIQ2FtZXJhICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHN0YXJ0UHJldmlldyk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX3N0YXJ0X3Ntb290aF96b29tIChHc3RBSENhbWVyYSAqIHNlbGYsIGdpbnQgdmFsdWUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzdGFydFNtb290aFpvb20sIHZhbHVlKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfc3RvcF9wcmV2aWV3IChHc3RBSENhbWVyYSAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzdG9wUHJldmlldyk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhfY2FtZXJhX3N0b3Bfc21vb3RoX3pvb20gKEdzdEFIQ2FtZXJhICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ19DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHN0b3BTbW9vdGhab29tKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haF9jYW1lcmFfdW5sb2NrIChHc3RBSENhbWVyYSAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCB1bmxvY2spOworCisgIHJldHVybiBUUlVFOworfQorCisjdW5kZWYgQUhDX0NBTEwKKyN1bmRlZiBBSENfU1RBVElDX0NBTEwKKworLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuU2l6ZSAqLworR3N0QUhDU2l6ZSAqCitnc3RfYWhjX3NpemVfbmV3IChnaW50IHdpZHRoLCBnaW50IGhlaWdodCkKK3sKKyAgR3N0QUhDU2l6ZSAqc2VsZiA9IGdfc2xpY2VfbmV3MCAoR3N0QUhDU2l6ZSk7CisKKyAgc2VsZi0+d2lkdGggPSB3aWR0aDsKKyAgc2VsZi0+aGVpZ2h0ID0gaGVpZ2h0OworCisgIHJldHVybiBzZWxmOworfQorCit2b2lkCitnc3RfYWhjX3NpemVfZnJlZSAoR3N0QUhDU2l6ZSAqIHNlbGYpCit7CisgIGdfc2xpY2VfZnJlZSAoR3N0QUhDU2l6ZSwgc2VsZik7Cit9CisKKy8qIGphdmEubGFuZy5TdHJpbmcgKi8KK3N0YXRpYyBqYm9vbGVhbgoramF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKEpOSUVudiAqIGVudiwganN0cmluZyBzdHIsIGpzdHJpbmcgb2JqKQoreworICByZXR1cm4gKCplbnYpLT5DYWxsQm9vbGVhbk1ldGhvZCAoZW52LCBzdHIsIGphdmFfbGFuZ19zdHJpbmcuZXF1YWxzLCBvYmopOworfQorCisvKiBqYXZhLnV0aWwuTGlzdCAqLworc3RhdGljIGpvYmplY3QKK2phdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChKTklFbnYgKiBlbnYsIGpvYmplY3Qgb2JqKQoreworICByZXR1cm4gKCplbnYpLT5DYWxsT2JqZWN0TWV0aG9kIChlbnYsIG9iaiwgamF2YV91dGlsX2xpc3QuaXRlcmF0b3IpOworfQorCisvKiBqYXZhLnV0aWwuSXRlcmF0b3IgKi8KK3N0YXRpYyBqb2JqZWN0CitqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgcmV0dXJuICgqZW52KS0+Q2FsbE9iamVjdE1ldGhvZCAoZW52LCBvYmosIGphdmFfdXRpbF9pdGVyYXRvci5uZXh0KTsKK30KKworc3RhdGljIGpib29sZWFuCitqYXZhX3V0aWxfaXRlcmF0b3JfaGFzX25leHQgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmopCit7CisgIHJldHVybiAoKmVudiktPkNhbGxCb29sZWFuTWV0aG9kIChlbnYsIG9iaiwgamF2YV91dGlsX2l0ZXJhdG9yLmhhc05leHQpOworfQorCisvKiBqYXZhLmxhbmcuSW50ZWdlciAqLworc3RhdGljIGppbnQKK2phdmFfbGFuZ19pbnRlZ2VyX2ludF92YWx1ZSAoSk5JRW52ICogZW52LCBqb2JqZWN0IG9iaikKK3sKKyAgcmV0dXJuICgqZW52KS0+Q2FsbEludE1ldGhvZCAoZW52LCBvYmosIGphdmFfbGFuZ19pbnRlZ2VyLmludFZhbHVlKTsKK30KKworCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5QYXJhbWV0ZXJzICovCisjZGVmaW5lIEFIQ1BfQ0FMTChlcnJvcl9zdGF0ZW1lbnQsIHR5cGUsIG1ldGhvZCwgLi4uKSAgICAgICAgICAgICAgICAgICBcCisgIEdTVF9EVk1fQ0FMTCAoZXJyb3Jfc3RhdGVtZW50LCBzZWxmLT5vYmplY3QsIHR5cGUsICAgICAgICAgICAgICAgICAgICBcCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLCBtZXRob2QsICMjIF9fVkFfQVJHU19fKTsKKworI2RlZmluZSBBSENQX1NUQVRJQ19DQUxMKGVycm9yX3N0YXRlbWVudCwgdHlwZSwgbWV0aG9kLCAuLi4pICAgICAgICAgICAgXAorICBHU1RfRFZNX1NUQVRJQ19DQUxMIChlcnJvcl9zdGF0ZW1lbnQsIHR5cGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycywgbWV0aG9kLCAjIyBfX1ZBX0FSR1NfXyk7CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCitfd2hpdGVfYmFsYW5jZV90b19nY2hhciAoSk5JRW52ICogZW52LCBqc3RyaW5nIHdoaXRlX2JhbGFuY2UpCit7CisgIGlmICghd2hpdGVfYmFsYW5jZSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgd2hpdGVfYmFsYW5jZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQVVUTykpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCB3aGl0ZV9iYWxhbmNlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCB3aGl0ZV9iYWxhbmNlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgd2hpdGVfYmFsYW5jZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCB3aGl0ZV9iYWxhbmNlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuV0hJVEVfQkFMQU5DRV9EQVlMSUdIVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9EQVlMSUdIVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgd2hpdGVfYmFsYW5jZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgd2hpdGVfYmFsYW5jZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfVFdJTElHSFQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfVFdJTElHSFQ7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHdoaXRlX2JhbGFuY2UsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1NIQURFKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1NIQURFOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMganN0cmluZworX3doaXRlX2JhbGFuY2VfdG9fanN0cmluZyAoY29uc3QgZ2NoYXIgKiB3aGl0ZV9iYWxhbmNlKQoreworICBpZiAoIXdoaXRlX2JhbGFuY2UpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKCFnX3N0cmNtcDAgKHdoaXRlX2JhbGFuY2UsIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0FVVE87CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHdoaXRlX2JhbGFuY2UsIFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9JTkNBTkRFU0NFTlQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UOworICBlbHNlIGlmICghZ19zdHJjbXAwICh3aGl0ZV9iYWxhbmNlLCBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHdoaXRlX2JhbGFuY2UsCisgICAgICAgICAgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAod2hpdGVfYmFsYW5jZSwgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0RBWUxJR0hUKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0RBWUxJR0hUOworICBlbHNlIGlmICghZ19zdHJjbXAwICh3aGl0ZV9iYWxhbmNlLCBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX0NMT1VEWV9EQVlMSUdIVDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAod2hpdGVfYmFsYW5jZSwgUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1RXSUxJR0hUKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5XSElURV9CQUxBTkNFX1RXSUxJR0hUOworICBlbHNlIGlmICghZ19zdHJjbXAwICh3aGl0ZV9iYWxhbmNlLCBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfU0hBREUpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLldISVRFX0JBTEFOQ0VfU0hBREU7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCitfY29sb3JfZWZmZWN0X3RvX2djaGFyIChKTklFbnYgKiBlbnYsIGpzdHJpbmcgY29sb3JfZWZmZWN0KQoreworICBpZiAoIWNvbG9yX2VmZmVjdCkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgY29sb3JfZWZmZWN0LAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05PTkUpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0VGRkVDVF9OT05FOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBjb2xvcl9lZmZlY3QsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTykpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRUZGRUNUX01PTk87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGNvbG9yX2VmZmVjdCwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9ORUdBVElWRSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRUZGRUNUX05FR0FUSVZFOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBjb2xvcl9lZmZlY3QsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU09MQVJJWkUpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0VGRkVDVF9TT0xBUklaRTsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgY29sb3JfZWZmZWN0LAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1NFUElBKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19FRkZFQ1RfU0VQSUE7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGNvbG9yX2VmZmVjdCwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9QT1NURVJJWkUpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0VGRkVDVF9QT1NURVJJWkU7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGNvbG9yX2VmZmVjdCwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9XSElURUJPQVJEKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19FRkZFQ1RfV0hJVEVCT0FSRDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgY29sb3JfZWZmZWN0LAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0JMQUNLQk9BUkQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0VGRkVDVF9CTEFDS0JPQVJEOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBjb2xvcl9lZmZlY3QsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfQVFVQSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRUZGRUNUX0FRVUE7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBqc3RyaW5nCitfY29sb3JfZWZmZWN0X3RvX2pzdHJpbmcgKGNvbnN0IGdjaGFyICogY29sb3JfZWZmZWN0KQoreworICBpZiAoIWNvbG9yX2VmZmVjdCkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9OT05FKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTk9ORTsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9NT05PKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfTU9OTzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9ORUdBVElWRSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX05FR0FUSVZFOworICBlbHNlIGlmICghZ19zdHJjbXAwIChjb2xvcl9lZmZlY3QsIFBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5FRkZFQ1RfU09MQVJJWkU7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGNvbG9yX2VmZmVjdCwgUGFyYW1ldGVyc19FRkZFQ1RfU0VQSUEpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9TRVBJQTsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoY29sb3JfZWZmZWN0LCBQYXJhbWV0ZXJzX0VGRkVDVF9QT1NURVJJWkUpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkVGRkVDVF9QT1NURVJJWkU7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGNvbG9yX2VmZmVjdCwgUGFyYW1ldGVyc19FRkZFQ1RfV0hJVEVCT0FSRCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX1dISVRFQk9BUkQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGNvbG9yX2VmZmVjdCwgUGFyYW1ldGVyc19FRkZFQ1RfQkxBQ0tCT0FSRCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0JMQUNLQk9BUkQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGNvbG9yX2VmZmVjdCwgUGFyYW1ldGVyc19FRkZFQ1RfQVFVQSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRUZGRUNUX0FRVUE7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCitfYW50aWJhbmRpbmdfdG9fZ2NoYXIgKEpOSUVudiAqIGVudiwganN0cmluZyBhbnRpYmFuZGluZykKK3sKKyAgaWYgKCFhbnRpYmFuZGluZykKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgYW50aWJhbmRpbmcsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19BTlRJQkFORElOR19BVVRPOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBhbnRpYmFuZGluZywKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HXzUwSFopKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFo7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGFudGliYW5kaW5nLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuQU5USUJBTkRJTkdfNjBIWikpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNjBIWjsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgYW50aWJhbmRpbmcsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19PRkYpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRjsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGpzdHJpbmcKK19hbnRpYmFuZGluZ190b19qc3RyaW5nIChjb25zdCBnY2hhciAqIGFudGliYW5kaW5nKQoreworICBpZiAoIWFudGliYW5kaW5nKQorICAgIHJldHVybiBOVUxMOworCisgIGlmICghZ19zdHJjbXAwIChhbnRpYmFuZGluZywgUGFyYW1ldGVyc19BTlRJQkFORElOR19BVVRPKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR19BVVRPOworICBlbHNlIGlmICghZ19zdHJjbXAwIChhbnRpYmFuZGluZywgUGFyYW1ldGVyc19BTlRJQkFORElOR181MEhaKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR181MEhaOworICBlbHNlIGlmICghZ19zdHJjbXAwIChhbnRpYmFuZGluZywgUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5BTlRJQkFORElOR182MEhaOworICBlbHNlIGlmICghZ19zdHJjbXAwIChhbnRpYmFuZGluZywgUGFyYW1ldGVyc19BTlRJQkFORElOR19PRkYpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkFOVElCQU5ESU5HX09GRjsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyICoKK19mbGFzaF9tb2RlX3RvX2djaGFyIChKTklFbnYgKiBlbnYsIGpzdHJpbmcgZmxhc2hfbW9kZSkKK3sKKyAgaWYgKCFmbGFzaF9tb2RlKQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBmbGFzaF9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9PRkYpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT0ZGOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBmbGFzaF9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9BVVRPKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GTEFTSF9NT0RFX0FVVE87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZsYXNoX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX09OKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GTEFTSF9NT0RFX09OOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBmbGFzaF9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9SRURfRVlFKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GTEFTSF9NT0RFX1JFRF9FWUU7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZsYXNoX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1RPUkNIKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMganN0cmluZworX2ZsYXNoX21vZGVfdG9fanN0cmluZyAoY29uc3QgZ2NoYXIgKiBmbGFzaF9tb2RlKQoreworICBpZiAoIWZsYXNoX21vZGUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKCFnX3N0cmNtcDAgKGZsYXNoX21vZGUsIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PRkYpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT0ZGOworICBlbHNlIGlmICghZ19zdHJjbXAwIChmbGFzaF9tb2RlLCBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTykpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9BVVRPOworICBlbHNlIGlmICghZ19zdHJjbXAwIChmbGFzaF9tb2RlLCBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT04pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZMQVNIX01PREVfT047CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGZsYXNoX21vZGUsIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9SRURfRVlFKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GTEFTSF9NT0RFX1JFRF9FWUU7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGZsYXNoX21vZGUsIFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRkxBU0hfTU9ERV9UT1JDSDsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyICoKK19zY2VuZV9tb2RlX3RvX2djaGFyIChKTklFbnYgKiBlbnYsIGpzdHJpbmcgc2NlbmVfbW9kZSkKK3sKKyAgaWYgKCFzY2VuZV9tb2RlKQorICAgIHJldHVybiBOVUxMOworCisgIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9BVVRPKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FVVE87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FDVElPTikpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BQ1RJT047CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BPUlRSQUlUKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9MQU5EU0NBUEUpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTEFORFNDQVBFOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFRfUE9SVFJBSVQpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1RIRUFUUkUpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfVEhFQVRSRTsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkVBQ0gpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkVBQ0g7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NOT1cpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU05PVzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1VOU0VUKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NVTlNFVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfU1RFQURZUEhPVE8pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1RFQURZUEhPVE87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUykpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1M7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NQT1JUUykpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFM7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIHNjZW5lX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1BBUlRZKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BBUlRZOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBzY2VuZV9tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9DQU5ETEVMSUdIVCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9DQU5ETEVMSUdIVDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgc2NlbmVfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQkFSQ09ERSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CQVJDT0RFOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3QganN0cmluZworX3NjZW5lX21vZGVfdG9fanN0cmluZyAoY29uc3QgZ2NoYXIgKiBzY2VuZV9tb2RlKQoreworICBpZiAoIXNjZW5lX21vZGUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BVVRPKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0FVVE87CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BQ1RJT04pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfQUNUSU9OOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfUE9SVFJBSVQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfUE9SVFJBSVQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9MQU5EU0NBUEUpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTEFORFNDQVBFOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfTklHSFQ7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9OSUdIVF9QT1JUUkFJVDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1RIRUFUUkUpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLlNDRU5FX01PREVfVEhFQVRSRTsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JFQUNIKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0JFQUNIOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU05PVykpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TTk9XOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NVTlNFVDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NURUFEWVBIT1RPKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX1NURUFEWVBIT1RPOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfRklSRVdPUktTKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0ZJUkVXT1JLUzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NQT1JUUykpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9TUE9SVFM7CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKHNjZW5lX21vZGUsIFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QQVJUWSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9QQVJUWTsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoc2NlbmVfbW9kZSwgUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworICBlbHNlIGlmICghZ19zdHJjbXAwIChzY2VuZV9tb2RlLCBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuU0NFTkVfTU9ERV9CQVJDT0RFOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgY29uc3QgZ2NoYXIgKgorX2ZvY3VzX21vZGVfdG9fZ2NoYXIgKEpOSUVudiAqIGVudiwganN0cmluZyBmb2N1c19tb2RlKQoreworICBpZiAoIWZvY3VzX21vZGUpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZvY3VzX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0FVVE8pKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgZm9jdXNfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfSU5GSU5JVFkpKQorICAgIHJldHVybiBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfSU5GSU5JVFk7CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZvY3VzX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX01BQ1JPKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBmb2N1c19tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRCkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRDsKKyAgZWxzZSBpZiAoamF2YV9sYW5nX3N0cmluZ19lcXVhbHMgKGVudiwgZm9jdXNfbW9kZSwKKyAgICAgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRURPRikpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GOworICBlbHNlIGlmIChqYXZhX2xhbmdfc3RyaW5nX2VxdWFscyAoZW52LCBmb2N1c19tb2RlLAorICAgICAgICAgIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1ZJREVPKSkKKyAgICByZXR1cm4gUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU87CisgIGVsc2UgaWYgKGphdmFfbGFuZ19zdHJpbmdfZXF1YWxzIChlbnYsIGZvY3VzX21vZGUsCisgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSkpCisgICAgcmV0dXJuIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkU7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBqc3RyaW5nCitfZm9jdXNfbW9kZV90b19qc3RyaW5nIChjb25zdCBnY2hhciAqIGZvY3VzX21vZGUpCit7CisgIGlmICghZm9jdXNfbW9kZSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAoIWdfc3RyY21wMCAoZm9jdXNfbW9kZSwgUGFyYW1ldGVyc19GT0NVU19NT0RFX0FVVE8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoZm9jdXNfbW9kZSwgUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZKSkKKyAgICByZXR1cm4gYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfcGFyYW1ldGVycy5GT0NVU19NT0RFX0lORklOSVRZOworICBlbHNlIGlmICghZ19zdHJjbXAwIChmb2N1c19tb2RlLCBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfTUFDUk8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfTUFDUk87CisgIGVsc2UgaWYgKCFnX3N0cmNtcDAgKGZvY3VzX21vZGUsIFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9GSVhFRCkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9GSVhFRDsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoZm9jdXNfbW9kZSwgUGFyYW1ldGVyc19GT0NVU19NT0RFX0VET0YpKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfRURPRjsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoZm9jdXNfbW9kZSwgUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfVklERU8pKQorICAgIHJldHVybiBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9wYXJhbWV0ZXJzLkZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTzsKKyAgZWxzZSBpZiAoIWdfc3RyY21wMCAoZm9jdXNfbW9kZSwgUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRSkpCisgICAgcmV0dXJuIGFuZHJvaWRfaGFyZHdhcmVfY2FtZXJhX3BhcmFtZXRlcnMuRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkU7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK2djaGFyICoKK2dzdF9haGNfcGFyYW1ldGVyc19mbGF0dGVuIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqc3RyaW5nIHZfc3RyID0gTlVMTDsKKyAgY29uc3QgZ2NoYXIgKnYgPSBOVUxMOworICBnY2hhciAqcmV0ID0gTlVMTDsKKworICB2X3N0ciA9IEFIQ1BfQ0FMTCAoZ290byBkb25lLCBPYmplY3QsIGZsYXR0ZW4pOworICB2ID0gKCplbnYpLT5HZXRTdHJpbmdVVEZDaGFycyAoZW52LCB2X3N0ciwgTlVMTCk7CisgIGlmICghdikgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBjb252ZXJ0IHN0cmluZyB0byBVVEY4Iik7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICByZXQgPSBnX3N0cmR1cCAodik7Citkb25lOgorICBpZiAodikKKyAgICAoKmVudiktPlJlbGVhc2VTdHJpbmdVVEZDaGFycyAoZW52LCB2X3N0ciwgdik7CisgIGlmICh2X3N0cikKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHZfc3RyKTsKKworICByZXR1cm4gcmV0OworfQorCitjb25zdCBnY2hhciAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2FudGliYW5kaW5nIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBjb25zdCBnY2hhciAqcmV0ID0gTlVMTDsKKyAganN0cmluZyBhbnRpYmFuZGluZzsKKworICBhbnRpYmFuZGluZyA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0QW50aWJhbmRpbmcpOworCisgIHJldCA9IF9hbnRpYmFuZGluZ190b19nY2hhciAoZW52LCBhbnRpYmFuZGluZyk7CisKKyAgaWYgKGFudGliYW5kaW5nKQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgYW50aWJhbmRpbmcpOworCisgIHJldHVybiByZXQ7Cit9CisKK2NvbnN0IGdjaGFyICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfY29sb3JfZWZmZWN0IChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBjb25zdCBnY2hhciAqcmV0ID0gTlVMTDsKKyAganN0cmluZyBjb2xvcl9lZmZlY3Q7CisKKyAgY29sb3JfZWZmZWN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRDb2xvckVmZmVjdCk7CisKKyAgcmV0ID0gX2NvbG9yX2VmZmVjdF90b19nY2hhciAoZW52LCBjb2xvcl9lZmZlY3QpOworCisgIGlmIChjb2xvcl9lZmZlY3QpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBjb2xvcl9lZmZlY3QpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dpbnQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnaW50IGV2OworCisgIGV2ID0gQUhDUF9DQUxMIChyZXR1cm4gLTEsIEludCwgZ2V0RXhwb3N1cmVDb21wZW5zYXRpb24pOworCisgIHJldHVybiBldjsKK30KKworZ2Zsb2F0Citnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2V4cG9zdXJlX2NvbXBlbnNhdGlvbl9zdGVwIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnZmxvYXQgc3RlcDsKKworICBzdGVwID0gQUhDUF9DQUxMIChyZXR1cm4gMC4wLCBGbG9hdCwgZ2V0RXhwb3N1cmVDb21wZW5zYXRpb25TdGVwKTsKKworICByZXR1cm4gc3RlcDsKK30KKworY29uc3QgZ2NoYXIgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9mbGFzaF9tb2RlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBjb25zdCBnY2hhciAqcmV0ID0gTlVMTDsKKyAganN0cmluZyBmbGFzaF9tb2RlOworCisgIGZsYXNoX21vZGUgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldEZsYXNoTW9kZSk7CisKKyAgcmV0ID0gX2ZsYXNoX21vZGVfdG9fZ2NoYXIgKGVudiwgZmxhc2hfbW9kZSk7CisKKyAgaWYgKGZsYXNoX21vZGUpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBmbGFzaF9tb2RlKTsKKworICByZXR1cm4gcmV0OworfQorCitnZmxvYXQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfZm9jYWxfbGVuZ3RoIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnZmxvYXQgbGVuZ3RoOworCisgIGxlbmd0aCA9IEFIQ1BfQ0FMTCAocmV0dXJuIDAuMCwgRmxvYXQsIGdldEZvY2FsTGVuZ3RoKTsKKworICByZXR1cm4gbGVuZ3RoOworfQorCitjb25zdCBnY2hhciAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZvY3VzX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGNvbnN0IGdjaGFyICpyZXQgPSBOVUxMOworICBqc3RyaW5nIGZvY3VzX21vZGU7CisKKyAgZm9jdXNfbW9kZSA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0Rm9jdXNNb2RlKTsKKworICByZXQgPSBfZm9jdXNfbW9kZV90b19nY2hhciAoZW52LCBmb2N1c19tb2RlKTsKKworICBpZiAoZm9jdXNfbW9kZSkKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGZvY3VzX21vZGUpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dmbG9hdAorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9ob3Jpem9udGFsX3ZpZXdfYW5nbGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdmbG9hdCBhbmdsZTsKKworICBhbmdsZSA9IEFIQ1BfQ0FMTCAocmV0dXJuIDAuMCwgRmxvYXQsIGdldEhvcml6b250YWxWaWV3QW5nbGUpOworCisgIHJldHVybiBhbmdsZTsKK30KKworZ2ludAorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9tYXhfZXhwb3N1cmVfY29tcGVuc2F0aW9uIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnaW50IG1heDsKKworICBtYXggPSBBSENQX0NBTEwgKHJldHVybiAwLCBJbnQsIGdldE1heEV4cG9zdXJlQ29tcGVuc2F0aW9uKTsKKworICByZXR1cm4gbWF4OworfQorCitnaW50Citnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF96b29tIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnaW50IG1heDsKKworICBtYXggPSBBSENQX0NBTEwgKHJldHVybiAtMSwgSW50LCBnZXRNYXhab29tKTsKKworICByZXR1cm4gbWF4OworfQorCitnaW50Citnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21pbl9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdpbnQgbWluOworCisgIG1pbiA9IEFIQ1BfQ0FMTCAocmV0dXJuIDAsIEludCwgZ2V0TWluRXhwb3N1cmVDb21wZW5zYXRpb24pOworCisgIHJldHVybiBtaW47Cit9CisKK2dpbnQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfcHJldmlld19mb3JtYXQgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdpbnQgZm9ybWF0OworCisgIGZvcm1hdCA9IEFIQ1BfQ0FMTCAocmV0dXJuIDAsIEludCwgZ2V0UHJldmlld0Zvcm1hdCk7CisKKyAgcmV0dXJuIGZvcm1hdDsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfcHJldmlld19mcHNfcmFuZ2UgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGdpbnQgKiBtaW4sIGdpbnQgKiBtYXgpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisgIGppbnRBcnJheSByYW5nZSA9IE5VTEw7CisgIGppbnQgKmZwcyA9IE5VTEw7CisKKyAgcmFuZ2UgPSAoKmVudiktPk5ld0ludEFycmF5IChlbnYsIDIpOworICBpZiAoIWZwcykgeworICAgICgqZW52KS0+RXhjZXB0aW9uQ2xlYXIgKGVudik7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNyZWF0ZSBhcnJheSIpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIEFIQ1BfQ0FMTCAoZ290byBkb25lLCBWb2lkLCBnZXRQcmV2aWV3RnBzUmFuZ2UsIHJhbmdlKTsKKworICBmcHMgPSAoKmVudiktPkdldEludEFycmF5RWxlbWVudHMgKGVudiwgcmFuZ2UsIE5VTEwpOworICBpZiAoKCplbnYpLT5FeGNlcHRpb25DaGVjayAoZW52KSB8fCAhZnBzKSB7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZ2V0IGFycmF5IGVsZW1lbnRzIik7CisgICAgZ290byBkb25lOworICB9CisgIGlmIChtaW4pCisgICAgKm1pbiA9IGZwc1swXTsKKyAgaWYgKG1heCkKKyAgICAqbWF4ID0gZnBzWzFdOworCisgIHJldCA9IFRSVUU7Citkb25lOgorICBpZiAoZnBzKQorICAgICgqZW52KS0+UmVsZWFzZUludEFycmF5RWxlbWVudHMgKGVudiwgcmFuZ2UsIGZwcywgSk5JX0FCT1JUKTsKKyAgaWYgKHJhbmdlKQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgcmFuZ2UpOworCisgIHJldHVybiByZXQ7Cit9CisKK0dzdEFIQ1NpemUgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9wcmV2aWV3X3NpemUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QganNpemUgPSBOVUxMOworICBHc3RBSENTaXplICpzaXplID0gTlVMTDsKKworICBqc2l6ZSA9IEFIQ1BfQ0FMTCAoZ290byBkb25lLCBPYmplY3QsIGdldFByZXZpZXdTaXplKTsKKworICBzaXplID0gZ19zbGljZV9uZXcwIChHc3RBSENTaXplKTsKKworICBzaXplLT53aWR0aCA9ICgqZW52KS0+R2V0SW50RmllbGQgKGVudiwganNpemUsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9zaXplLndpZHRoKTsKKyAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gZ2V0IENhbWVyYS5TaXplLndpZHRoIGZpZWxkIik7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBnX3NsaWNlX2ZyZWUgKEdzdEFIQ1NpemUsIHNpemUpOworICAgIHNpemUgPSBOVUxMOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIHNpemUtPmhlaWdodCA9ICgqZW52KS0+R2V0SW50RmllbGQgKGVudiwganNpemUsCisgICAgICBhbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9zaXplLmhlaWdodCk7CisgIGlmICgoKmVudiktPkV4Y2VwdGlvbkNoZWNrIChlbnYpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGdldCBDYW1lcmEuU2l6ZS5oZWlnaHQgZmllbGQiKTsKKyAgICAoKmVudiktPkV4Y2VwdGlvbkNsZWFyIChlbnYpOworICAgIGdfc2xpY2VfZnJlZSAoR3N0QUhDU2l6ZSwgc2l6ZSk7CisgICAgc2l6ZSA9IE5VTEw7CisgICAgZ290byBkb25lOworICB9CisKK2RvbmU6CisgIGlmIChqc2l6ZSkKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGpzaXplKTsKKworICByZXR1cm4gc2l6ZTsKK30KKworY29uc3QgZ2NoYXIgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zY2VuZV9tb2RlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBjb25zdCBnY2hhciAqcmV0ID0gTlVMTDsKKyAganN0cmluZyBzY2VuZV9tb2RlOworCisgIHNjZW5lX21vZGUgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldFNjZW5lTW9kZSk7CisKKyAgcmV0ID0gX3NjZW5lX21vZGVfdG9fZ2NoYXIgKGVudiwgc2NlbmVfbW9kZSk7CisKKyAgaWYgKHNjZW5lX21vZGUpCisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBzY2VuZV9tb2RlKTsKKworICByZXR1cm4gcmV0OworfQorCitHTGlzdCAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9hbnRpYmFuZGluZyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBsaXN0ID0gTlVMTDsKKyAgR0xpc3QgKnJldCA9IE5VTEw7CisKKyAgbGlzdCA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0U3VwcG9ydGVkQW50aWJhbmRpbmcpOworCisgIGlmIChsaXN0KSB7CisgICAgam9iamVjdCBpdGVyYXRvciA9IE5VTEw7CisKKyAgICBpdGVyYXRvciA9IGphdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChlbnYsIGxpc3QpOworICAgIGlmIChpdGVyYXRvcikgeworICAgICAgd2hpbGUgKGphdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoZW52LCBpdGVyYXRvcikpIHsKKyAgICAgICAgam9iamVjdCBzdHIgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKHN0cikgeworICAgICAgICAgIGNvbnN0IGdjaGFyICp2YWx1ZSA9IF9hbnRpYmFuZGluZ190b19nY2hhciAoZW52LCBzdHIpOworCisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCAoZ2NoYXIgKikgdmFsdWUpOworICAgICAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgc3RyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpdGVyYXRvcik7CisgICAgfQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbGlzdCk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX2FudGliYW5kaW5nX2ZyZWUgKEdMaXN0ICogbGlzdCkKK3sKKyAgZ19saXN0X2ZyZWUgKGxpc3QpOworfQorCitHTGlzdCAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9jb2xvcl9lZmZlY3RzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRTdXBwb3J0ZWRDb2xvckVmZmVjdHMpOworCisgIGlmIChsaXN0KSB7CisgICAgam9iamVjdCBpdGVyYXRvciA9IE5VTEw7CisKKyAgICBpdGVyYXRvciA9IGphdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChlbnYsIGxpc3QpOworICAgIGlmIChpdGVyYXRvcikgeworICAgICAgd2hpbGUgKGphdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoZW52LCBpdGVyYXRvcikpIHsKKyAgICAgICAgam9iamVjdCBzdHIgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKHN0cikgeworICAgICAgICAgIGNvbnN0IGdjaGFyICp2YWx1ZSA9IF9jb2xvcl9lZmZlY3RfdG9fZ2NoYXIgKGVudiwgc3RyKTsKKworICAgICAgICAgIHJldCA9IGdfbGlzdF9hcHBlbmQgKHJldCwgKGdjaGFyICopIHZhbHVlKTsKKyAgICAgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHN0cik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaXRlcmF0b3IpOworICAgIH0KKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxpc3QpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9jb2xvcl9lZmZlY3RzX2ZyZWUgKEdMaXN0ICogbGlzdCkKK3sKKyAgZ19saXN0X2ZyZWUgKGxpc3QpOworfQorCitHTGlzdCAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9mbGFzaF9tb2RlcyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBsaXN0ID0gTlVMTDsKKyAgR0xpc3QgKnJldCA9IE5VTEw7CisKKyAgbGlzdCA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0U3VwcG9ydGVkRmxhc2hNb2Rlcyk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IHN0ciA9IGphdmFfdXRpbF9pdGVyYXRvcl9uZXh0IChlbnYsIGl0ZXJhdG9yKTsKKworICAgICAgICBpZiAoc3RyKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKnZhbHVlID0gX2ZsYXNoX21vZGVfdG9fZ2NoYXIgKGVudiwgc3RyKTsKKworICAgICAgICAgIHJldCA9IGdfbGlzdF9hcHBlbmQgKHJldCwgKGdjaGFyICopIHZhbHVlKTsKKyAgICAgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHN0cik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaXRlcmF0b3IpOworICAgIH0KKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxpc3QpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9mbGFzaF9tb2Rlc19mcmVlIChHTGlzdCAqIGxpc3QpCit7CisgIGdfbGlzdF9mcmVlIChsaXN0KTsKK30KKworR0xpc3QgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfZm9jdXNfbW9kZXMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QgbGlzdCA9IE5VTEw7CisgIEdMaXN0ICpyZXQgPSBOVUxMOworCisgIGxpc3QgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldFN1cHBvcnRlZEZvY3VzTW9kZXMpOworCisgIGlmIChsaXN0KSB7CisgICAgam9iamVjdCBpdGVyYXRvciA9IE5VTEw7CisKKyAgICBpdGVyYXRvciA9IGphdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChlbnYsIGxpc3QpOworICAgIGlmIChpdGVyYXRvcikgeworICAgICAgd2hpbGUgKGphdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoZW52LCBpdGVyYXRvcikpIHsKKyAgICAgICAgam9iamVjdCBzdHIgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKHN0cikgeworICAgICAgICAgIGNvbnN0IGdjaGFyICp2YWx1ZSA9IF9mb2N1c19tb2RlX3RvX2djaGFyIChlbnYsIHN0cik7CisKKyAgICAgICAgICByZXQgPSBnX2xpc3RfYXBwZW5kIChyZXQsIChnY2hhciAqKSB2YWx1ZSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBzdHIpOworICAgICAgICB9CisgICAgICB9CisgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGl0ZXJhdG9yKTsKKyAgICB9CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsaXN0KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfZm9jdXNfbW9kZXNfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfZm9ybWF0cyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBsaXN0ID0gTlVMTDsKKyAgR0xpc3QgKnJldCA9IE5VTEw7CisKKyAgbGlzdCA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0U3VwcG9ydGVkUHJldmlld0Zvcm1hdHMpOworCisgIGlmIChsaXN0KSB7CisgICAgam9iamVjdCBpdGVyYXRvciA9IE5VTEw7CisKKyAgICBpdGVyYXRvciA9IGphdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChlbnYsIGxpc3QpOworICAgIGlmIChpdGVyYXRvcikgeworICAgICAgd2hpbGUgKGphdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoZW52LCBpdGVyYXRvcikpIHsKKyAgICAgICAgam9iamVjdCBpbnRlZ2VyID0gamF2YV91dGlsX2l0ZXJhdG9yX25leHQgKGVudiwgaXRlcmF0b3IpOworCisgICAgICAgIGlmIChpbnRlZ2VyKSB7CisgICAgICAgICAgamludCB2YWx1ZSA9IGphdmFfbGFuZ19pbnRlZ2VyX2ludF92YWx1ZSAoZW52LCBpbnRlZ2VyKTsKKworICAgICAgICAgIHJldCA9IGdfbGlzdF9hcHBlbmQgKHJldCwgR0lOVF9UT19QT0lOVEVSICh2YWx1ZSkpOworICAgICAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaW50ZWdlcik7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaXRlcmF0b3IpOworICAgIH0KKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxpc3QpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X2Zvcm1hdHNfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfZnBzX3JhbmdlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRTdXBwb3J0ZWRQcmV2aWV3RnBzUmFuZ2UpOworCisgIGlmIChsaXN0KSB7CisgICAgam9iamVjdCBpdGVyYXRvciA9IE5VTEw7CisKKyAgICBpdGVyYXRvciA9IGphdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChlbnYsIGxpc3QpOworICAgIGlmIChpdGVyYXRvcikgeworICAgICAgd2hpbGUgKGphdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoZW52LCBpdGVyYXRvcikpIHsKKyAgICAgICAgamludEFycmF5IHJhbmdlID0gamF2YV91dGlsX2l0ZXJhdG9yX25leHQgKGVudiwgaXRlcmF0b3IpOworCisgICAgICAgIGlmIChyYW5nZSkgeworICAgICAgICAgIGppbnQgKmZwcyA9IGdfbmV3IChqaW50LCAyKTsKKworICAgICAgICAgICgqZW52KS0+R2V0SW50QXJyYXlSZWdpb24gKGVudiwgcmFuZ2UsIDAsIDIsIGZwcyk7CisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCBmcHMpOworICAgICAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgcmFuZ2UpOworICAgICAgICB9CisgICAgICB9CisgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGl0ZXJhdG9yKTsKKyAgICB9CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsaXN0KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfcHJldmlld19mcHNfcmFuZ2VfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZm9yZWFjaCAobGlzdCwgKEdGdW5jKSBnX2ZyZWUsIE5VTEwpOworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfc2l6ZXMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpvYmplY3QgbGlzdCA9IE5VTEw7CisgIEdMaXN0ICpyZXQgPSBOVUxMOworCisgIGxpc3QgPSBBSENQX0NBTEwgKHJldHVybiBOVUxMLCBPYmplY3QsIGdldFN1cHBvcnRlZFByZXZpZXdTaXplcyk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IGpzaXplID0gamF2YV91dGlsX2l0ZXJhdG9yX25leHQgKGVudiwgaXRlcmF0b3IpOworCisgICAgICAgIGlmIChqc2l6ZSkgeworICAgICAgICAgIGppbnQgd2lkdGgsIGhlaWdodDsKKworICAgICAgICAgIHdpZHRoID0gKCplbnYpLT5HZXRJbnRGaWVsZCAoZW52LCBqc2l6ZSwKKyAgICAgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS53aWR0aCk7CisgICAgICAgICAgaGVpZ2h0ID0gKCplbnYpLT5HZXRJbnRGaWVsZCAoZW52LCBqc2l6ZSwKKyAgICAgICAgICAgICAgYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfc2l6ZS5oZWlnaHQpOworCisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCBnc3RfYWhjX3NpemVfbmV3ICh3aWR0aCwgaGVpZ2h0KSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBqc2l6ZSk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgaXRlcmF0b3IpOworICAgIH0KKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGxpc3QpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X3NpemVzX2ZyZWUgKEdMaXN0ICogbGlzdCkKK3sKKyAgZ19saXN0X2ZvcmVhY2ggKGxpc3QsIChHRnVuYykgZ3N0X2FoY19zaXplX2ZyZWUsIE5VTEwpOworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK0dMaXN0ICoKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3NjZW5lX21vZGVzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRTdXBwb3J0ZWRTY2VuZU1vZGVzKTsKKworICBpZiAobGlzdCkgeworICAgIGpvYmplY3QgaXRlcmF0b3IgPSBOVUxMOworCisgICAgaXRlcmF0b3IgPSBqYXZhX3V0aWxfbGlzdF9pdGVyYXRvciAoZW52LCBsaXN0KTsKKyAgICBpZiAoaXRlcmF0b3IpIHsKKyAgICAgIHdoaWxlIChqYXZhX3V0aWxfaXRlcmF0b3JfaGFzX25leHQgKGVudiwgaXRlcmF0b3IpKSB7CisgICAgICAgIGpvYmplY3Qgc3RyID0gamF2YV91dGlsX2l0ZXJhdG9yX25leHQgKGVudiwgaXRlcmF0b3IpOworCisgICAgICAgIGlmIChzdHIpIHsKKyAgICAgICAgICBjb25zdCBnY2hhciAqdmFsdWUgPSBfc2NlbmVfbW9kZV90b19nY2hhciAoZW52LCBzdHIpOworCisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCAoZ2NoYXIgKikgdmFsdWUpOworICAgICAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgc3RyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpdGVyYXRvcik7CisgICAgfQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbGlzdCk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3NjZW5lX21vZGVzX2ZyZWUgKEdMaXN0ICogbGlzdCkKK3sKKyAgZ19saXN0X2ZyZWUgKGxpc3QpOworfQorCitHTGlzdCAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF93aGl0ZV9iYWxhbmNlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqb2JqZWN0IGxpc3QgPSBOVUxMOworICBHTGlzdCAqcmV0ID0gTlVMTDsKKworICBsaXN0ID0gQUhDUF9DQUxMIChyZXR1cm4gTlVMTCwgT2JqZWN0LCBnZXRTdXBwb3J0ZWRXaGl0ZUJhbGFuY2UpOworCisgIGlmIChsaXN0KSB7CisgICAgam9iamVjdCBpdGVyYXRvciA9IE5VTEw7CisKKyAgICBpdGVyYXRvciA9IGphdmFfdXRpbF9saXN0X2l0ZXJhdG9yIChlbnYsIGxpc3QpOworICAgIGlmIChpdGVyYXRvcikgeworICAgICAgd2hpbGUgKGphdmFfdXRpbF9pdGVyYXRvcl9oYXNfbmV4dCAoZW52LCBpdGVyYXRvcikpIHsKKyAgICAgICAgam9iamVjdCBzdHIgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKHN0cikgeworICAgICAgICAgIGNvbnN0IGdjaGFyICp2YWx1ZSA9IF93aGl0ZV9iYWxhbmNlX3RvX2djaGFyIChlbnYsIHN0cik7CisKKyAgICAgICAgICByZXQgPSBnX2xpc3RfYXBwZW5kIChyZXQsIChnY2hhciAqKSB2YWx1ZSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBzdHIpOworICAgICAgICB9CisgICAgICB9CisgICAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIGl0ZXJhdG9yKTsKKyAgICB9CisgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBsaXN0KTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3ZvaWQKK2dzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfd2hpdGVfYmFsYW5jZV9mcmVlIChHTGlzdCAqIGxpc3QpCit7CisgIGdfbGlzdF9mcmVlIChsaXN0KTsKK30KKworZ2Zsb2F0Citnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ZlcnRpY2FsX3ZpZXdfYW5nbGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdmbG9hdCBhbmdsZTsKKworICBhbmdsZSA9IEFIQ1BfQ0FMTCAocmV0dXJuIDAuMCwgRmxvYXQsIGdldFZlcnRpY2FsVmlld0FuZ2xlKTsKKworICByZXR1cm4gYW5nbGU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ZpZGVvX3N0YWJpbGl6YXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGdib29sZWFuIHJldDsKKworICByZXQgPSBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgQm9vbGVhbiwgZ2V0VmlkZW9TdGFiaWxpemF0aW9uKTsKKworICByZXR1cm4gcmV0OworfQorCitjb25zdCBnY2hhciAqCitnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3doaXRlX2JhbGFuY2UgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGNvbnN0IGdjaGFyICpyZXQgPSBOVUxMOworICBqc3RyaW5nIHdoaXRlX2JhbGFuY2U7CisKKyAgd2hpdGVfYmFsYW5jZSA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0V2hpdGVCYWxhbmNlKTsKKworICByZXQgPSBfd2hpdGVfYmFsYW5jZV90b19nY2hhciAoZW52LCB3aGl0ZV9iYWxhbmNlKTsKKworICBpZiAod2hpdGVfYmFsYW5jZSkKKyAgICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIHdoaXRlX2JhbGFuY2UpOworCisgIHJldHVybiByZXQ7Cit9CisKK2dpbnQKK2dzdF9haGNfcGFyYW1ldGVyc19nZXRfem9vbSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2ludCB6b29tOworCisgIHpvb20gPSBBSENQX0NBTEwgKHJldHVybiAtMSwgSW50LCBnZXRab29tKTsKKworICByZXR1cm4gem9vbTsKK30KKworR0xpc3QgKgorZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF96b29tX3JhdGlvcyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgam9iamVjdCBsaXN0ID0gTlVMTDsKKyAgR0xpc3QgKnJldCA9IE5VTEw7CisKKyAgbGlzdCA9IEFIQ1BfQ0FMTCAocmV0dXJuIE5VTEwsIE9iamVjdCwgZ2V0Wm9vbVJhdGlvcyk7CisKKyAgaWYgKGxpc3QpIHsKKyAgICBqb2JqZWN0IGl0ZXJhdG9yID0gTlVMTDsKKworICAgIGl0ZXJhdG9yID0gamF2YV91dGlsX2xpc3RfaXRlcmF0b3IgKGVudiwgbGlzdCk7CisgICAgaWYgKGl0ZXJhdG9yKSB7CisgICAgICB3aGlsZSAoamF2YV91dGlsX2l0ZXJhdG9yX2hhc19uZXh0IChlbnYsIGl0ZXJhdG9yKSkgeworICAgICAgICBqb2JqZWN0IGludGVnZXIgPSBqYXZhX3V0aWxfaXRlcmF0b3JfbmV4dCAoZW52LCBpdGVyYXRvcik7CisKKyAgICAgICAgaWYgKGludGVnZXIpIHsKKyAgICAgICAgICBqaW50IHZhbHVlID0gamF2YV9sYW5nX2ludGVnZXJfaW50X3ZhbHVlIChlbnYsIGludGVnZXIpOworCisgICAgICAgICAgcmV0ID0gZ19saXN0X2FwcGVuZCAocmV0LCBHSU5UX1RPX1BPSU5URVIgKHZhbHVlKSk7CisgICAgICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpbnRlZ2VyKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCBpdGVyYXRvcik7CisgICAgfQorICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgbGlzdCk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfYWhjX3BhcmFtZXRlcnNfem9vbV9yYXRpb3NfZnJlZSAoR0xpc3QgKiBsaXN0KQoreworICBnX2xpc3RfZnJlZSAobGlzdCk7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfaXNfc21vb3RoX3pvb21fc3VwcG9ydGVkIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZikKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBnYm9vbGVhbiBzdXBwb3J0ZWQ7CisKKyAgc3VwcG9ydGVkID0gQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIEJvb2xlYW4sIGlzU21vb3RoWm9vbVN1cHBvcnRlZCk7CisKKyAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19pc192aWRlb19zdGFiaWxpemF0aW9uX3N1cHBvcnRlZCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2Jvb2xlYW4gc3VwcG9ydGVkOworCisgIHN1cHBvcnRlZCA9IEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBCb29sZWFuLCBpc1ZpZGVvU3RhYmlsaXphdGlvblN1cHBvcnRlZCk7CisKKyAgcmV0dXJuIHN1cHBvcnRlZDsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19pc196b29tX3N1cHBvcnRlZCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgZ2Jvb2xlYW4gc3VwcG9ydGVkOworCisgIHN1cHBvcnRlZCA9IEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBCb29sZWFuLCBpc1pvb21TdXBwb3J0ZWQpOworCisgIHJldHVybiBzdXBwb3J0ZWQ7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2FudGliYW5kaW5nIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIHZhbHVlKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpzdHJpbmcgYW50aWJhbmRpbmc7CisKKyAgYW50aWJhbmRpbmcgPSBfYW50aWJhbmRpbmdfdG9fanN0cmluZyAodmFsdWUpOworICBpZiAoIWFudGliYW5kaW5nKQorICAgIHJldHVybiBGQUxTRTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0QW50aWJhbmRpbmcsIGFudGliYW5kaW5nKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19zZXRfY29sb3JfZWZmZWN0IChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIHZhbHVlKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpzdHJpbmcgY29sb3JfZWZmZWN0OworCisgIGNvbG9yX2VmZmVjdCA9IF9jb2xvcl9lZmZlY3RfdG9fanN0cmluZyAodmFsdWUpOworICBpZiAoIWNvbG9yX2VmZmVjdCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHNldENvbG9yRWZmZWN0LCBjb2xvcl9lZmZlY3QpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGdpbnQgdmFsdWUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0RXhwb3N1cmVDb21wZW5zYXRpb24sIHZhbHVlKTsKKworICByZXR1cm4gVFJVRTsKK30KKworZ2Jvb2xlYW4KK2dzdF9haGNfcGFyYW1ldGVyc19zZXRfZmxhc2hfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsIGNvbnN0IGdjaGFyICogdmFsdWUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAganN0cmluZyBmbGFzaF9tb2RlOworCisgIGZsYXNoX21vZGUgPSBfZmxhc2hfbW9kZV90b19qc3RyaW5nICh2YWx1ZSk7CisgIGlmICghZmxhc2hfbW9kZSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHNldEZsYXNoTW9kZSwgZmxhc2hfbW9kZSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2ZvY3VzX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLCBjb25zdCBnY2hhciAqIHZhbHVlKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpzdHJpbmcgZm9jdXNfbW9kZTsKKworICBmb2N1c19tb2RlID0gX2ZvY3VzX21vZGVfdG9fanN0cmluZyAodmFsdWUpOworICBpZiAoIWZvY3VzX21vZGUpCisgICAgcmV0dXJuIEZBTFNFOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRGb2N1c01vZGUsIGZvY3VzX21vZGUpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9wcmV2aWV3X2Zvcm1hdCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsIGdpbnQgZm9ybWF0KQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgQUhDUF9DQUxMIChyZXR1cm4gRkFMU0UsIFZvaWQsIHNldFByZXZpZXdGb3JtYXQsIGZvcm1hdCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ByZXZpZXdfZnBzX3JhbmdlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnaW50IG1pbiwgZ2ludCBtYXgpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0UHJldmlld0Zwc1JhbmdlLCBtaW4sIG1heCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ByZXZpZXdfc2l6ZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0UHJldmlld1NpemUsIHdpZHRoLCBoZWlnaHQpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9zY2VuZV9tb2RlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwgY29uc3QgZ2NoYXIgKiB2YWx1ZSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBqc3RyaW5nIHNjZW5lX21vZGU7CisKKyAgc2NlbmVfbW9kZSA9IF9zY2VuZV9tb2RlX3RvX2pzdHJpbmcgKHZhbHVlKTsKKyAgaWYgKCFzY2VuZV9tb2RlKQorICAgIHJldHVybiBGQUxTRTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0U2NlbmVNb2RlLCBzY2VuZV9tb2RlKTsKKworICByZXR1cm4gVFJVRTsKK30KKworCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF92aWRlb19zdGFiaWxpemF0aW9uIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnYm9vbGVhbiB0b2dnbGUpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBBSENQX0NBTEwgKHJldHVybiBGQUxTRSwgVm9pZCwgc2V0VmlkZW9TdGFiaWxpemF0aW9uLCB0b2dnbGUpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF93aGl0ZV9iYWxhbmNlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIHZhbHVlKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGpzdHJpbmcgd2hpdGVfYmFsYW5jZTsKKworICB3aGl0ZV9iYWxhbmNlID0gX3doaXRlX2JhbGFuY2VfdG9fanN0cmluZyAodmFsdWUpOworICBpZiAoIXdoaXRlX2JhbGFuY2UpCisgICAgcmV0dXJuIEZBTFNFOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRXaGl0ZUJhbGFuY2UsIHdoaXRlX2JhbGFuY2UpOworCisgIHJldHVybiBUUlVFOworfQorCitnYm9vbGVhbgorZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF96b29tIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwgZ2ludCB2YWx1ZSkKK3sKKyAgSk5JRW52ICplbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIEFIQ1BfQ0FMTCAocmV0dXJuIEZBTFNFLCBWb2lkLCBzZXRab29tLCB2YWx1ZSk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK2dib29sZWFuCitnc3RfYWhjX3BhcmFtZXRlcnNfdW5mbGF0dGVuIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwgY29uc3QgZ2NoYXIgKiBmbGF0dGVuZWQpCit7CisgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAganN0cmluZyB2X3N0ciA9IE5VTEw7CisgIGdib29sZWFuIHJldCA9IFRSVUU7CisKKyAgdl9zdHIgPSAoKmVudiktPk5ld1N0cmluZ1VURiAoZW52LCBmbGF0dGVuZWQpOworICBpZiAodl9zdHIgPT0gTlVMTCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgQUhDUF9DQUxMIChyZXQgPSBGQUxTRSwgVm9pZCwgdW5mbGF0dGVuLCB2X3N0cik7CisKKyAgKCplbnYpLT5EZWxldGVMb2NhbFJlZiAoZW52LCB2X3N0cik7CisKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKQoreworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoc2VsZiAhPSBOVUxMKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAoc2VsZi0+b2JqZWN0ICE9IE5VTEwpOworCisgIEdTVF9ERUJVRyAoImZyZWVpbmcgcGFyYW1ldGVycyAlcCIsIHNlbGYtPm9iamVjdCk7CisKKyAgKCplbnYpLT5EZWxldGVHbG9iYWxSZWYgKGVudiwgc2VsZi0+b2JqZWN0KTsKKyAgZ19zbGljZV9mcmVlIChHc3RBSENQYXJhbWV0ZXJzLCBzZWxmKTsKK30KZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmggYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0ZTc4NDIKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdC1hbmRyb2lkLWhhcmR3YXJlLWNhbWVyYS5oCkBAIC0wLDAgKzEsMjUyIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBDb2xsYWJvcmEgTHRkLgorICogQ29weXJpZ2h0IChDKSAyMDEyLCBDaXNjbyBTeXN0ZW1zLCBJbmMuCisgKiAgIEF1dGhvcjogWW91bmVzcyBBbGFvdWkgPHlvdW5lc3MuYWxhb3VpQGNvbGxhYm9yYS5jby51az4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIENvbGxhYm9yYSBMdGQuCisgKiAgIEF1dGhvcjogSnVzdGluIEtpbSA8anVzdGluLmtpbUBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBfX0dTVF9BTkRST0lEX0hBUkRXQVJFX0NBTUVSQV9IX18KKyNkZWZpbmUgX19HU1RfQU5EUk9JRF9IQVJEV0FSRV9DQU1FUkFfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8am5pLmg+CisKKyNpbmNsdWRlICJnc3QtYW5kcm9pZC1ncmFwaGljcy1zdXJmYWNldGV4dHVyZS5oIgorI2luY2x1ZGUgImdzdC1hbmRyb2lkLWdyYXBoaWNzLWltYWdlZm9ybWF0LmgiCisKK0dfQkVHSU5fREVDTFMKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFIQ2FtZXJhIEdzdEFIQ2FtZXJhOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFIQ0NhbWVyYUluZm8gR3N0QUhDQ2FtZXJhSW5mbzsKK3R5cGVkZWYgc3RydWN0IF9Hc3RBSENTaXplIEdzdEFIQ1NpemU7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QUhDUGFyYW1ldGVycyBHc3RBSENQYXJhbWV0ZXJzOworCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSAqLworc3RydWN0IF9Hc3RBSENhbWVyYQoreworICAvKiA8IHByaXZhdGUgPiAqLworICBqb2JqZWN0IG9iamVjdDsgICAgICAgICAgICAgICAvKiBnbG9iYWwgcmVmZXJlbmNlICovCit9OworCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5DYW1lcmFJbmZvICovCitzdHJ1Y3QgX0dzdEFIQ0NhbWVyYUluZm8KK3sKKyAgZ2ludCBmYWNpbmc7CisgIGdpbnQgb3JpZW50YXRpb247Cit9OworZXh0ZXJuIGdpbnQgQ2FtZXJhSW5mb19DQU1FUkFfRkFDSU5HX0JBQ0s7CitleHRlcm4gZ2ludCBDYW1lcmFJbmZvX0NBTUVSQV9GQUNJTkdfRlJPTlQ7CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNpemUgKi8KK3N0cnVjdCBfR3N0QUhDU2l6ZQoreworICBnaW50IHdpZHRoOworICBnaW50IGhlaWdodDsKK307CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlBhcmFtZXRlcnMgKi8KK3N0cnVjdCBfR3N0QUhDUGFyYW1ldGVycworeworICAvKiA8IHByaXZhdGUgPiAqLworICBqb2JqZWN0IG9iamVjdDsgICAgICAgICAgICAgICAvKiBnbG9iYWwgcmVmZXJlbmNlICovCit9OworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQVVUTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0ZMVU9SRVNDRU5UOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfV0FSTV9GTFVPUkVTQ0VOVDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0RBWUxJR0hUOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfVFdJTElHSFQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfTk9ORTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfTU9OTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfTkVHQVRJVkU7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9TRVBJQTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19FRkZFQ1RfUE9TVEVSSVpFOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9XSElURUJPQVJEOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9CTEFDS0JPQVJEOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0VGRkVDVF9BUVVBOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE87CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNTBIWjsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19BTlRJQkFORElOR182MEhaOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX09GRjsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GTEFTSF9NT0RFX09GRjsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GTEFTSF9NT0RFX0FVVE87CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTjsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GTEFTSF9NT0RFX1JFRF9FWUU7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0FVVE87CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BQ1RJT047CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVDsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0xBTkRTQ0FQRTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkVBQ0g7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1VOU0VUOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1RFQURZUEhPVE87CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9GSVJFV09SS1M7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TUE9SVFM7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QQVJUWTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19TQ0VORV9NT0RFX0NBTkRMRUxJR0hUOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX1NDRU5FX01PREVfQkFSQ09ERTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GT0NVU19NT0RFX0FVVE87CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9JTkZJTklUWTsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfRklYRUQ7CitleHRlcm4gY29uc3QgZ2NoYXIgKlBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GOworZXh0ZXJuIGNvbnN0IGdjaGFyICpQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTzsKK2V4dGVybiBjb25zdCBnY2hhciAqUGFyYW1ldGVyc19GT0NVU19NT0RFX0NPTlRJTlVPVVNfUElDVFVSRTsKKworLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuRXJyb3JDYWxsYmFjayAqLwordHlwZWRlZiB2b2lkICgqR3N0QUhDRXJyb3JDYWxsYmFjaykgKGdpbnQgZXJyb3IsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlByZXZpZXdDYWxsYmFjayAqLwordHlwZWRlZiB2b2lkICgqR3N0QUhDUHJldmlld0NhbGxiYWNrKSAoamJ5dGVBcnJheSBkYXRhLCBncG9pbnRlciB1c2VyX2RhdGEpOworCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYS5BdXRvRm9jdXNDYWxsYmFjayAqLwordHlwZWRlZiB2b2lkICgqR3N0QUhDQXV0b0ZvY3VzQ2FsbGJhY2spIChnYm9vbGVhbiBzdWNjZXNzLCBncG9pbnRlciB1c2VyX2RhdGEpOworCitnYm9vbGVhbiBnc3RfYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfaW5pdCAodm9pZCk7Cit2b2lkIGdzdF9hbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9kZWluaXQgKHZvaWQpOworCisvKiBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSAqLwordm9pZCBnc3RfYWhfY2FtZXJhX2FkZF9jYWxsYmFja19idWZmZXIgKEdzdEFIQ2FtZXJhICogc2VsZiwgamJ5dGVBcnJheSBidWZmZXIpOworZ2Jvb2xlYW4gZ3N0X2FoX2NhbWVyYV9hdXRvX2ZvY3VzIChHc3RBSENhbWVyYSAqIHNlbGYsCisgICAgR3N0QUhDQXV0b0ZvY3VzQ2FsbGJhY2sgY2IsIGdwb2ludGVyIHVzZXJfZGF0YSk7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX2NhbmNlbF9hdXRvX2ZvY3VzIChHc3RBSENhbWVyYSAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoX2NhbWVyYV9nZXRfY2FtZXJhX2luZm8gKGdpbnQgY2FtZXJhX2lkLAorICAgIEdzdEFIQ0NhbWVyYUluZm8gKiBjYW1lcmFfaW5mbyk7CitnaW50IGdzdF9haF9jYW1lcmFfZ2V0X251bWJlcl9vZl9jYW1lcmFzICh2b2lkKTsKK0dzdEFIQ1BhcmFtZXRlcnMgKmdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKEdzdEFIQ2FtZXJhICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX2xvY2sgKEdzdEFIQ2FtZXJhICogc2VsZik7CitHc3RBSENhbWVyYSAqZ3N0X2FoX2NhbWVyYV9vcGVuIChnaW50IGNhbWVyYV9pZCk7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3JlY29ubmVjdCAoR3N0QUhDYW1lcmEgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoX2NhbWVyYV9yZWxlYXNlIChHc3RBSENhbWVyYSAqIHNlbGYpOwordm9pZCBnc3RfYWhfY2FtZXJhX2ZyZWUgKEdzdEFIQ2FtZXJhICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChHc3RBSENhbWVyYSAqIHNlbGYsCisgICAgR3N0QUhDUGFyYW1ldGVycyAqIHBhcmFtcyk7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3NldF9lcnJvcl9jYWxsYmFjayAoR3N0QUhDYW1lcmEgKiBzZWxmLAorICAgIEdzdEFIQ0Vycm9yQ2FsbGJhY2sgY2IsIGdwb2ludGVyIHVzZXJfZGF0YSk7CitnYm9vbGVhbiBnc3RfYWhfY2FtZXJhX3NldF9wcmV2aWV3X2NhbGxiYWNrX3dpdGhfYnVmZmVyIChHc3RBSENhbWVyYSAqIHNlbGYsCisgICAgR3N0QUhDUHJldmlld0NhbGxiYWNrIGNiLCBncG9pbnRlciB1c2VyX2RhdGEpOwordm9pZCBnc3RfYWhfY2FtZXJhX3NldF9wcmV2aWV3X3RleHR1cmUgKEdzdEFIQ2FtZXJhICogc2VsZiwKKyAgICBHc3RBR1N1cmZhY2VUZXh0dXJlICogc3VyZmFjZVRleHR1cmUpOworZ2Jvb2xlYW4gZ3N0X2FoX2NhbWVyYV9zdGFydF9wcmV2aWV3IChHc3RBSENhbWVyYSAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoX2NhbWVyYV9zdGFydF9zbW9vdGhfem9vbSAoR3N0QUhDYW1lcmEgKiBzZWxmLCBnaW50IHZhbHVlKTsKK2dib29sZWFuIGdzdF9haF9jYW1lcmFfc3RvcF9wcmV2aWV3IChHc3RBSENhbWVyYSAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoX2NhbWVyYV9zdG9wX3Ntb290aF96b29tIChHc3RBSENhbWVyYSAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoX2NhbWVyYV91bmxvY2sgKEdzdEFIQ2FtZXJhICogc2VsZik7CisKKy8qIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhLlNpemUgKi8KK0dzdEFIQ1NpemUgKmdzdF9haGNfc2l6ZV9uZXcgKGdpbnQgd2lkdGgsIGdpbnQgaGVpZ2h0KTsKK3ZvaWQgZ3N0X2FoY19zaXplX2ZyZWUgKEdzdEFIQ1NpemUgKiBzZWxmKTsKKworLyogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEuUGFyYW1ldGVycyAqLworZ2NoYXIgKmdzdF9haGNfcGFyYW1ldGVyc19mbGF0dGVuIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Citjb25zdCBnY2hhciAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9hbnRpYmFuZGluZyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworY29uc3QgZ2NoYXIgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfY29sb3JfZWZmZWN0IChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnaW50IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnZmxvYXQgZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9leHBvc3VyZV9jb21wZW5zYXRpb25fc3RlcCAoR3N0QUhDUGFyYW1ldGVycworICAgICogc2VsZik7Citjb25zdCBnY2hhciAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9mbGFzaF9tb2RlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnZmxvYXQgZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9mb2NhbF9sZW5ndGggKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2NvbnN0IGdjaGFyICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZvY3VzX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dmbG9hdCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2hvcml6b250YWxfdmlld19hbmdsZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2ludCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dpbnQgZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9tYXhfem9vbSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2ludCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21pbl9leHBvc3VyZV9jb21wZW5zYXRpb24gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dpbnQgZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9wcmV2aWV3X2Zvcm1hdCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9wcmV2aWV3X2Zwc19yYW5nZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgZ2ludCAqIG1pbiwgZ2ludCAqIG1heCk7CitHc3RBSENTaXplICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ByZXZpZXdfc2l6ZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworY29uc3QgZ2NoYXIgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfc2NlbmVfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworLyogR0xpc3QgPGNvbnN0IGdjaGFyICo+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfYW50aWJhbmRpbmcgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9hbnRpYmFuZGluZ19mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPGNvbnN0IGdjaGFyICo+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfY29sb3JfZWZmZWN0cyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX2NvbG9yX2VmZmVjdHNfZnJlZSAoR0xpc3QgKiBsaXN0KTsKKy8qIEdMaXN0IDxjb25zdCBnY2hhciAqPiAqLworR0xpc3QgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX2ZsYXNoX21vZGVzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Cit2b2lkIGdzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfZmxhc2hfbW9kZXNfZnJlZSAoR0xpc3QgKiBsaXN0KTsKKy8qIEdMaXN0IDxjb25zdCBnY2hhciAqPiAqLworR0xpc3QgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX2ZvY3VzX21vZGVzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Cit2b2lkIGdzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfZm9jdXNfbW9kZXNfZnJlZSAoR0xpc3QgKiBsaXN0KTsKKy8qIEdMaXN0IDxpbnQ+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfcHJldmlld19mb3JtYXRzIChHc3RBSENQYXJhbWV0ZXJzCisgICAgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X2Zvcm1hdHNfZnJlZSAoR0xpc3QgKiBsaXN0KTsKKy8qIEdMaXN0IDxpbnQgWzJdPiAqLworR0xpc3QgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfZnBzX3JhbmdlIChHc3RBSENQYXJhbWV0ZXJzCisgICAgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X2Zwc19yYW5nZV9mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPEdzdEFIQ1NpemUgKj4gKi8KK0dMaXN0ICpnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9wcmV2aWV3X3NpemVzIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7Cit2b2lkIGdzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfcHJldmlld19zaXplc19mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPGNvbnN0IGdjaGFyICo+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfc2NlbmVfbW9kZXMgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK3ZvaWQgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9zY2VuZV9tb2Rlc19mcmVlIChHTGlzdCAqIGxpc3QpOworLyogR0xpc3QgPGNvbnN0IGdjaGFyICo+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9zdXBwb3J0ZWRfd2hpdGVfYmFsYW5jZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfc3VwcG9ydGVkX3doaXRlX2JhbGFuY2VfZnJlZSAoR0xpc3QgKiBsaXN0KTsKK2dmbG9hdCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3ZlcnRpY2FsX3ZpZXdfYW5nbGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19nZXRfdmlkZW9fc3RhYmlsaXphdGlvbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworY29uc3QgZ2NoYXIgKmdzdF9haGNfcGFyYW1ldGVyc19nZXRfd2hpdGVfYmFsYW5jZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2ludCBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3pvb20gKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKKy8qIEdMaXN0IDxpbnQ+ICovCitHTGlzdCAqZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF96b29tX3JhdGlvcyAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfem9vbV9yYXRpb3NfZnJlZSAoR0xpc3QgKiBsaXN0KTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19pc19zbW9vdGhfem9vbV9zdXBwb3J0ZWQgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19pc192aWRlb19zdGFiaWxpemF0aW9uX3N1cHBvcnRlZCAoCisgICAgR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX2lzX3pvb21fc3VwcG9ydGVkIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZik7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2FudGliYW5kaW5nIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIGFudGliYW5kaW5nKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfY29sb3JfZWZmZWN0IChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIHZhbHVlKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnaW50IHZhbHVlKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfZmxhc2hfbW9kZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgY29uc3QgZ2NoYXIgKiB2YWx1ZSk7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2ZvY3VzX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogdmFsdWUpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9wcmV2aWV3X2Zvcm1hdCAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgZ2ludCBmb3JtYXQpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9wcmV2aWV3X2Zwc19yYW5nZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgZ2ludCBtaW4sIGdpbnQgbWF4KTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfcHJldmlld19zaXplIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBnaW50IHdpZHRoLCBnaW50IGhlaWdodCk7CitnYm9vbGVhbiBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3NjZW5lX21vZGUgKEdzdEFIQ1BhcmFtZXRlcnMgKiBzZWxmLAorICAgIGNvbnN0IGdjaGFyICogdmFsdWUpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF93aGl0ZV9iYWxhbmNlIChHc3RBSENQYXJhbWV0ZXJzICogc2VsZiwKKyAgICBjb25zdCBnY2hhciAqIHZhbHVlKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfdmlkZW9fc3RhYmlsaXphdGlvbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgZ2Jvb2xlYW4gdG9nZ2xlKTsKK2dib29sZWFuIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfem9vbSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsIGdpbnQgdmFsdWUpOworZ2Jvb2xlYW4gZ3N0X2FoY19wYXJhbWV0ZXJzX3VuZmxhdHRlbiAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYsCisgICAgY29uc3QgZ2NoYXIgKiBmbGF0dGVuZWQpOwordm9pZCBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAoR3N0QUhDUGFyYW1ldGVycyAqIHNlbGYpOworCitHX0VORF9ERUNMUworCisjZW5kaWYgLyogX19HU1RfQU5EUk9JRF9IQVJEV0FSRV9DQU1FUkFfSF9fICovCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFoY3NyYy5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YjdkMjc2Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuYwpAQCAtMCwwICsxLDI1MTMgQEAKKy8qIEdTdHJlYW1lciBhbmRyb2lkLmhhcmR3YXJlLkNhbWVyYSBTb3VyY2UKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTIsIENpc2NvIFN5c3RlbXMsIEluYy4KKyAqICAgQXV0aG9yOiBZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKKyAqIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjplbGVtZW50LWFoY3NyYworICoKKyAqIGFoY3NyYyBjYW4gYmUgdXNlZCB0byBjYXB0dXJlIHZpZGVvIGZyb20gYW5kcm9pZCBkZXZpY2VzLiBJdCB1c2VzIHRoZQorICogYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEgSmF2YSBBUEkgdG8gY2FwdHVyZSBmcm9tIHRoZSBzeXN0ZW0ncyBjYW1lcmFzLgorICoKKyAqIEluIG9yZGVyIGZvciB0aGUgcGx1Z2luIHRvIGdldCByZWdpc3RlcmVkLCBpdCBtdXN0IGJlIGFibGUgdG8gZmluZCBpdHMKKyAqIEphdmEgY2FsbGJhY2tzIGNsYXNzLiBUaGF0IGNsYXNzIGlzIGVtYmVkZGVkIGFzIGEgamFyIGZpbGUgaW5zaWRlIHRoZSBzb3VyY2UKKyAqIGVsZW1lbnQgKGlmIHByb3Blcmx5IGNvbXBpbGVkKSBhbmQgd2lsbCBiZSB3cml0dGVuIHRvIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeQorICogc28gaXQgY2FuIGJlIGxvYWRlZCBpbnRvIHRoZSB2aXJ0dWFsIG1hY2hpbmUuCisgKiBJbiBvcmRlciBmb3IgaXQgdG8gd29yaywgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgbXVzdCBiZSBzZXQgdG8gYSB3cml0YWJsZQorICogZGlyZWN0b3J5LgorICogVGhlIHNvdXJjZSB3aWxsIGxvb2sgZm9yIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSDigJxUTVDigJ0gd2hpY2ggbXVzdCBjb250YWluCisgKiB0aGUgYWJzb2x1dGUgcGF0aCB0byBhIHdyaXRhYmxlIGRpcmVjdG9yeS4KKyAqIEl0IGNhbiBiZSByZXRyZWl2ZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBKYXZhIGNvZGUgOgorICogfFsKKyAqICAgY29udGV4dC5nZXRDYWNoZURpcigpLmdldEFic29sdXRlUGF0aCgpOworICogXXwKKyAqIFdoZXJlIHRoZSBAY29udGV4dCB2YXJpYWJsZSBpcyBhbiBvYmplY3Qgb2YgdHlwZSBhbmRyb2lkLmNvbnRlbnQuQ29udGV4dAorICogKGluY2x1ZGluZyBpdHMgc3ViY2xhc3NlcyBhbmRyb2lkLmFwcC5BY3Rpdml0eSBvciBhbmRyb2lkLmFwcC5BcHBsaWNhdGlvbikuCisgKiBBbm90aGVyIG9wdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSBzZXQgZm9yIHBvaW50aW5nIHRvIHRoZQorICogb3B0aW1pemVkIGRleCBjbGFzc2VzIGRpcmVjdG9yeS4gSWYgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIOKAnERFWOKAnSBpcworICogYXZhaWxhYmxlLCBpdCB3aWxsIGJlIHVzZWQsIG90aGVyd2lzZSwgdGhlIGRpcmVjdG9yeSBpbiB0aGUg4oCcVE1Q4oCdIGVudmlyb25tZW50CisgKiB2YXJpYWJsZSB3aWxsIGJlIHVzZWQgZm9yIHRoZSBvcHRpbWl6ZWQgZGV4IGRpcmVjdG9yeS4KKyAqIFRoZSBzeXN0ZW0gZGV4IGRpcmVjdG9yeSBjYW4gYmUgb2J0YWluZWQgdXNpbmcgdGhlIGZvbGxvd2luZyBKYXZhIGNvZGUgOgorICogfFsKKyAqICAgY29udGV4dC5nZXREaXIo4oCcZGV44oCdLCAwKS5nZXRBYnNvbHV0ZVBhdGgoKTsKKyAqIF18CisgKgorICogPG5vdGU+CisgKiBUaG9zZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBtdXN0IGJlIHNldCBiZWZvcmUgZ3N0X2luaXQgaXMgY2FsbGVkIGZyb20KKyAqIHRoZSBuYXRpdmUgY29kZS4KKyAqIDwvbm90ZT4KKyAqCisgKiA8bm90ZT4KKyAqIElmIHRoZSDigJxUTVDigJ0gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGF2YWlsYWJsZSBvciB0aGUgZGlyZWN0b3J5IGlzIG5vdAorICogd3JpdGFibGUgb3IgYW55IG90aGVyIGlzc3VlIGhhcHBlbnMgd2hpbGUgdHJ5aW5nIHRvIGxvYWQgdGhlIGVtYmVkZGVkIGphcgorICogZmlsZSwgdGhlbiB0aGUgc291cmNlIHdpbGwgZmFsbGJhY2sgb24gdHJ5aW5nIHRvIGxvYWQgdGhlIGNsYXNzIGRpcmVjdGx5CisgKiBmcm9tIHRoZSBydW5uaW5nIGFwcGxpY2F0aW9uLgorICogVGhlIGZpbGUgY29tL2dzdHJlYW1lci9Hc3RBaGNDYWxsYmFjay5qYXZhIGluIHRoZSBzb3VyY2UncyBkaXJlY3RvcnkgY2FuIGJlCisgKiBjb3BpZWQgaW50byB0aGUgQW5kcm9pZCBhcHBsaWNhdGlvbiBzbyBpdCBjYW4gYmUgbG9hZGVkIGF0IHJ1bnRpbWUKKyAqIGFzIGEgZmFsbGJhY2sgbWVjaGFuaXNtLgorICogPC9ub3RlPgorICoKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyAgaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorI2luY2x1ZGUgPGdzdC9pbnRlcmZhY2VzL3Bob3RvZ3JhcGh5Lmg+CisKKyNpbmNsdWRlICJnc3Rqbml1dGlscy5oIgorCisjaW5jbHVkZSAiZ3N0YWhjc3JjLmgiCisKKy8qIEdPYmplY3QgKi8KK3N0YXRpYyB2b2lkIGdzdF9haGNfc3JjX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9haGNfc3JjX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9haGNfc3JjX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpOworCisvKiBHc3RFbGVtZW50ICovCitzdGF0aWMgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gZ3N0X2FoY19zcmNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKKworLyogR3N0QmFzZVNyYyAqLworc3RhdGljIEdzdENhcHMgKmdzdF9haGNfc3JjX2dldGNhcHMgKEdzdEJhc2VTcmMgKiBzcmMsIEdzdENhcHMgKiBmaWx0ZXIpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldGNhcHMgKEdzdEJhc2VTcmMgKiBzcmMsIEdzdENhcHMgKiBjYXBzKTsKK3N0YXRpYyBHc3RDYXBzICpnc3RfYWhjX3NyY19maXhhdGUgKEdzdEJhc2VTcmMgKiBiYXNlc3JjLCBHc3RDYXBzICogY2Fwcyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfc3RhcnQgKEdzdEJhc2VTcmMgKiBic3JjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zdG9wIChHc3RCYXNlU3JjICogYnNyYyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfdW5sb2NrIChHc3RCYXNlU3JjICogYnNyYyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfdW5sb2NrX3N0b3AgKEdzdEJhc2VTcmMgKiBic3JjKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9haGNfc3JjX2NyZWF0ZSAoR3N0UHVzaFNyYyAqIHNyYywgR3N0QnVmZmVyICoqIGJ1ZmZlcik7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfcXVlcnkgKEdzdEJhc2VTcmMgKiBic3JjLCBHc3RRdWVyeSAqIHF1ZXJ5KTsKKworLyogR3N0UGhvdG9ncmFwaHkgICovCitzdGF0aWMgdm9pZCBnc3RfYWhjX3NyY19waG90b2dyYXBoeV9pbml0IChncG9pbnRlciBnX2lmYWNlLAorICAgIGdwb2ludGVyIGlmYWNlX2RhdGEpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX2dldF9ldl9jb21wZW5zYXRpb24gKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgZ2Zsb2F0ICogZXZfY29tcCk7CitzdGF0aWMgZ2Jvb2xlYW4gX3doaXRlX2JhbGFuY2VfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiB3aGl0ZV9iYWxhbmNlLAorICAgIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSAqIG1vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX2dldF93aGl0ZV9iYWxhbmNlX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlICogd2JfbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gX2NvbG9yX2VmZmVjdHNfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiBjb2xvcl9lZmZlY3QsCisgICAgR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlICogbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfZ2V0X2NvbG91cl90b25lX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlICogdG9uZV9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBfc2NlbmVfbW9kZXNfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiBzY2VuZSwKKyAgICBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSAqIG1vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX2dldF9zY2VuZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlICogc2NlbmVfbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gX2ZsYXNoX21vZGVzX3RvX2VudW0gKGNvbnN0IGdjaGFyICogZmxhc2gsCisgICAgR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGUgKiBtb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19nZXRfZmxhc2hfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSAqIGZsYXNoX21vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX2dldF96b29tIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLCBnZmxvYXQgKiB6b29tKTsKK3N0YXRpYyBnYm9vbGVhbiBfYW50aWJhbmRpbmdfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiBhbnRpYmFuZGluZywKKyAgICBHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlICogbW9kZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FoY19zcmNfZ2V0X2ZsaWNrZXJfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlICogZmxpY2tlcl9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBfZm9jdXNfbW9kZXNfdG9fZW51bSAoY29uc3QgZ2NoYXIgKiBmb2N1cywKKyAgICBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSAqIG1vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX2dldF9mb2N1c19tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlICogZm9jdXNfbW9kZSk7CisKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zZXRfZXZfY29tcGVuc2F0aW9uIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIGdmbG9hdCBldl9jb21wKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zZXRfd2hpdGVfYmFsYW5jZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSB3Yl9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zZXRfY29sb3VyX3RvbmVfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUgdG9uZV9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zZXRfc2NlbmVfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSBzY2VuZV9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zZXRfZmxhc2hfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSBmbGFzaF9tb2RlKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYWhjX3NyY19zZXRfem9vbSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywgZ2Zsb2F0IHpvb20pOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF9mbGlja2VyX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSBmbGlja2VyX21vZGUpOworc3RhdGljIGdib29sZWFuIGdzdF9haGNfc3JjX3NldF9mb2N1c19tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIGZvY3VzX21vZGUpOworCitzdGF0aWMgR3N0UGhvdG9ncmFwaHlDYXBzIGdzdF9haGNfc3JjX2dldF9jYXBhYmlsaXRpZXMgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8pOworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfc2V0X2F1dG9mb2N1cyAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywgZ2Jvb2xlYW4gb24pOworCisvKiBHc3RBSENTcmMgKi8KK3N0YXRpYyB2b2lkIGdzdF9haGNfc3JjX2Nsb3NlIChHc3RBSENTcmMgKiBzZWxmKTsKK3N0YXRpYyB2b2lkIGdzdF9haGNfc3JjX29uX3ByZXZpZXdfZnJhbWUgKGpieXRlQXJyYXkgZGF0YSwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKK3N0YXRpYyB2b2lkIGdzdF9haGNfc3JjX29uX2Vycm9yIChnaW50IGVycm9yLCBncG9pbnRlciB1c2VyX2RhdGEpOworc3RhdGljIHZvaWQgZ3N0X2FoY19zcmNfb25fYXV0b19mb2N1cyAoZ2Jvb2xlYW4gc3VjY2VzcywgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworI2RlZmluZSBOVU1fQ0FMTEJBQ0tfQlVGRkVSUyA1CisKKyNkZWZpbmUgR1NUX0FIQ19TUkNfQ0FQU19TVFIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUygiQU5ZIiwgIiB7IFlWMTIsIFlVWTIsIE5WMjEsIE5WMTYsIFJHQjE2IH0iKQorCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2FoY19zcmNfcGFkX3RlbXBsYXRlID0KK0dTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKEdTVF9BSENfU1JDX0NBUFNfU1RSKSk7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF9haGNfc3JjX2RlYnVnKTsKKyNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9haGNfc3JjX2RlYnVnCisKKyNkZWZpbmUgcGFyZW50X2NsYXNzIGdzdF9haGNfc3JjX3BhcmVudF9jbGFzcworCitlbnVtCit7CisgIFBST1BfMCwKKyAgUFJPUF9ERVZJQ0UsCisgIFBST1BfREVWSUNFX05BTUUsCisgIFBST1BfREVWSUNFX0ZBQ0lORywKKyAgUFJPUF9ERVZJQ0VfT1JJRU5UQVRJT04sCisgIFBST1BfRk9DQUxfTEVOR1RILAorICBQUk9QX0hPUklaT05UQUxfVklFV19BTkdMRSwKKyAgUFJPUF9WRVJUSUNBTF9WSUVXX0FOR0xFLAorICBQUk9QX1ZJREVPX1NUQUJJTElaQVRJT04sCisgIFBST1BfV0JfTU9ERSwKKyAgUFJPUF9DT0xPVVJfVE9ORSwKKyAgUFJPUF9TQ0VORV9NT0RFLAorICBQUk9QX0ZMQVNIX01PREUsCisgIFBST1BfTk9JU0VfUkVEVUNUSU9OLAorICBQUk9QX0NBUEFCSUxJVElFUywKKyAgUFJPUF9FVl9DT01QLAorICBQUk9QX0lTT19TUEVFRCwKKyAgUFJPUF9BUEVSVFVSRSwKKyAgUFJPUF9FWFBPU1VSRV9NT0RFLAorICBQUk9QX0lNQUdFX0NBUFRVUkVfU1VQUE9SVEVEX0NBUFMsCisgIFBST1BfSU1BR0VfUFJFVklFV19TVVBQT1JURURfQ0FQUywKKyAgUFJPUF9GTElDS0VSX01PREUsCisgIFBST1BfRk9DVVNfTU9ERSwKKyAgUFJPUF9aT09NLAorICBQUk9QX1NNT09USF9aT09NLAorICBQUk9QX1dISVRFX1BPSU5ULAorICBQUk9QX01JTl9FWFBPU1VSRV9USU1FLAorICBQUk9QX01BWF9FWFBPU1VSRV9USU1FLAorICBQUk9QX0xFTlNfRk9DVVMsCisgIFBST1BfRVhQT1NVUkVfVElNRSwKKyAgUFJPUF9DT0xPUl9URU1QRVJBVFVSRSwKKyAgUFJPUF9BTkFMT0dfR0FJTiwKKyAgUFJPUF9MQVNUCit9OworCitzdGF0aWMgR1BhcmFtU3BlYyAqcHJvcGVydGllc1tQUk9QX0xBU1RdOworCisjZGVmaW5lIERFRkFVTFRfREVWSUNFICIwIgorCitHX0RFRklORV9UWVBFX1dJVEhfQ09ERSAoR3N0QUhDU3JjLCBnc3RfYWhjX3NyYywgR1NUX1RZUEVfUFVTSF9TUkMsCisgICAgR19JTVBMRU1FTlRfSU5URVJGQUNFIChHU1RfVFlQRV9QSE9UT0dSQVBIWSwgZ3N0X2FoY19zcmNfcGhvdG9ncmFwaHlfaW5pdCkpOworCisjZGVmaW5lIENBTUVSQV9GQUNJTkdfQkFDSyAwCisjZGVmaW5lIENBTUVSQV9GQUNJTkdfRlJPTlQgMQorCitzdGF0aWMgR1R5cGUKK2dzdF9haGNfc3JjX2ZhY2luZ19nZXRfdHlwZSAodm9pZCkKK3sKKyAgc3RhdGljIEdUeXBlIHR5cGUgPSAwOworICBzdGF0aWMgY29uc3QgR0VudW1WYWx1ZSB0eXBlc1tdID0geworICAgIHtDQU1FUkFfRkFDSU5HX0JBQ0ssICJCYWNrIiwgImJhY2sifSwKKyAgICB7Q0FNRVJBX0ZBQ0lOR19GUk9OVCwgIkZyb250IiwgImZyb250In0sCisgICAgezAsIE5VTEwsIE5VTEx9CisgIH07CisKKyAgaWYgKCF0eXBlKSB7CisgICAgdHlwZSA9IGdfZW51bV9yZWdpc3Rlcl9zdGF0aWMgKCJHc3RBSENTcmNGYWNpbmciLCB0eXBlcyk7CisgIH0KKyAgcmV0dXJuIHR5cGU7Cit9CisKKyNkZWZpbmUgR1NUX0FIQ19TUkNfRkFDSU5HX1RZUEUgKGdzdF9haGNfc3JjX2ZhY2luZ19nZXRfdHlwZSgpKQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfcGhvdG9ncmFwaHlfaW5pdCAoZ3BvaW50ZXIgZ19pZmFjZSwgZ3BvaW50ZXIgaWZhY2VfZGF0YSkKK3sKKyAgR3N0UGhvdG9ncmFwaHlJbnRlcmZhY2UgKmlmYWNlID0gZ19pZmFjZTsKKworICBpZmFjZS0+Z2V0X2V2X2NvbXBlbnNhdGlvbiA9IGdzdF9haGNfc3JjX2dldF9ldl9jb21wZW5zYXRpb247CisgIGlmYWNlLT5nZXRfd2hpdGVfYmFsYW5jZV9tb2RlID0gZ3N0X2FoY19zcmNfZ2V0X3doaXRlX2JhbGFuY2VfbW9kZTsKKyAgaWZhY2UtPmdldF9jb2xvcl90b25lX21vZGUgPSBnc3RfYWhjX3NyY19nZXRfY29sb3VyX3RvbmVfbW9kZTsKKyAgaWZhY2UtPmdldF9zY2VuZV9tb2RlID0gZ3N0X2FoY19zcmNfZ2V0X3NjZW5lX21vZGU7CisgIGlmYWNlLT5nZXRfZmxhc2hfbW9kZSA9IGdzdF9haGNfc3JjX2dldF9mbGFzaF9tb2RlOworICBpZmFjZS0+Z2V0X3pvb20gPSBnc3RfYWhjX3NyY19nZXRfem9vbTsKKyAgaWZhY2UtPmdldF9mbGlja2VyX21vZGUgPSBnc3RfYWhjX3NyY19nZXRfZmxpY2tlcl9tb2RlOworICBpZmFjZS0+Z2V0X2ZvY3VzX21vZGUgPSBnc3RfYWhjX3NyY19nZXRfZm9jdXNfbW9kZTsKKworICBpZmFjZS0+c2V0X2V2X2NvbXBlbnNhdGlvbiA9IGdzdF9haGNfc3JjX3NldF9ldl9jb21wZW5zYXRpb247CisgIGlmYWNlLT5zZXRfd2hpdGVfYmFsYW5jZV9tb2RlID0gZ3N0X2FoY19zcmNfc2V0X3doaXRlX2JhbGFuY2VfbW9kZTsKKyAgaWZhY2UtPnNldF9jb2xvcl90b25lX21vZGUgPSBnc3RfYWhjX3NyY19zZXRfY29sb3VyX3RvbmVfbW9kZTsKKyAgaWZhY2UtPnNldF9zY2VuZV9tb2RlID0gZ3N0X2FoY19zcmNfc2V0X3NjZW5lX21vZGU7CisgIGlmYWNlLT5zZXRfZmxhc2hfbW9kZSA9IGdzdF9haGNfc3JjX3NldF9mbGFzaF9tb2RlOworICBpZmFjZS0+c2V0X3pvb20gPSBnc3RfYWhjX3NyY19zZXRfem9vbTsKKyAgaWZhY2UtPnNldF9mbGlja2VyX21vZGUgPSBnc3RfYWhjX3NyY19zZXRfZmxpY2tlcl9tb2RlOworICBpZmFjZS0+c2V0X2ZvY3VzX21vZGUgPSBnc3RfYWhjX3NyY19zZXRfZm9jdXNfbW9kZTsKKworICBpZmFjZS0+Z2V0X2NhcGFiaWxpdGllcyA9IGdzdF9haGNfc3JjX2dldF9jYXBhYmlsaXRpZXM7CisgIGlmYWNlLT5zZXRfYXV0b2ZvY3VzID0gZ3N0X2FoY19zcmNfc2V0X2F1dG9mb2N1czsKK30KKworc3RhdGljIHZvaWQKK2dzdF9haGNfc3JjX2NsYXNzX2luaXQgKEdzdEFIQ1NyY0NsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisgIEdzdFB1c2hTcmNDbGFzcyAqZ3N0cHVzaHNyY19jbGFzcyA9IEdTVF9QVVNIX1NSQ19DTEFTUyAoa2xhc3MpOworICBHc3RCYXNlU3JjQ2xhc3MgKmdzdGJhc2VzcmNfY2xhc3MgPSBHU1RfQkFTRV9TUkNfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfYWhjX3NyY19zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF9haGNfc3JjX2dldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+ZGlzcG9zZSA9IGdzdF9haGNfc3JjX2Rpc3Bvc2U7CisKKyAgZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0gZ3N0X2FoY19zcmNfY2hhbmdlX3N0YXRlOworCisgIGdzdGJhc2VzcmNfY2xhc3MtPmdldF9jYXBzID0gZ3N0X2FoY19zcmNfZ2V0Y2FwczsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+c2V0X2NhcHMgPSBnc3RfYWhjX3NyY19zZXRjYXBzOworICBnc3RiYXNlc3JjX2NsYXNzLT5maXhhdGUgPSBnc3RfYWhjX3NyY19maXhhdGU7CisgIGdzdGJhc2VzcmNfY2xhc3MtPnN0YXJ0ID0gZ3N0X2FoY19zcmNfc3RhcnQ7CisgIGdzdGJhc2VzcmNfY2xhc3MtPnN0b3AgPSBnc3RfYWhjX3NyY19zdG9wOworICBnc3RiYXNlc3JjX2NsYXNzLT51bmxvY2sgPSBnc3RfYWhjX3NyY191bmxvY2s7CisgIGdzdGJhc2VzcmNfY2xhc3MtPnVubG9ja19zdG9wID0gZ3N0X2FoY19zcmNfdW5sb2NrX3N0b3A7CisgIGdzdGJhc2VzcmNfY2xhc3MtPnF1ZXJ5ID0gZ3N0X2FoY19zcmNfcXVlcnk7CisKKyAgZ3N0cHVzaHNyY19jbGFzcy0+Y3JlYXRlID0gZ3N0X2FoY19zcmNfY3JlYXRlOworCisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfYWhjX3NyY19wYWRfdGVtcGxhdGUpKTsKKworICAvKioKKyAgICogR3N0QUhDU3JjOmRldmljZToKKyAgICoKKyAgICogVGhlIERldmljZSBJRCBvZiB0aGUgY2FtZXJhIHRvIGNhcHR1cmUgZnJvbQorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX0RFVklDRV0gPSBnX3BhcmFtX3NwZWNfc3RyaW5nICgiZGV2aWNlIiwKKyAgICAgICJEZXZpY2UiLCAiRGV2aWNlIElEIiwgREVGQVVMVF9ERVZJQ0UsCisgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fQ09OU1RSVUNUIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfREVWSUNFLAorICAgICAgcHJvcGVydGllc1tQUk9QX0RFVklDRV0pOworCisgIC8qKgorICAgKiBHc3RBSENTcmM6ZGV2aWNlLW5hbWU6CisgICAqCisgICAqIEEgdXNlci1mcmllbmRseSBuYW1lIGZvciB0aGUgY2FtZXJhIGRldmljZQorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX0RFVklDRV9OQU1FXSA9IGdfcGFyYW1fc3BlY19zdHJpbmcgKCJkZXZpY2UtbmFtZSIsCisgICAgICAiRGV2aWNlIG5hbWUiLCAiRGV2aWNlIG5hbWUiLCBOVUxMLAorICAgICAgR19QQVJBTV9SRUFEQUJMRSB8IEdfUEFSQU1fQ09OU1RSVUNUIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfREVWSUNFX05BTUUsCisgICAgICBwcm9wZXJ0aWVzW1BST1BfREVWSUNFX05BTUVdKTsKKworICAvKioKKyAgICogR3N0QUhDU3JjOmRldmljZS1vcmllbnRhdGlvbjoKKyAgICoKKyAgICogVGhlIG9yaWVudGF0aW9uIG9mIHRoZSBjdXJyZW50bHkgc2V0IGNhbWVyYSBAZGV2aWNlLgorICAgKiBUaGUgdmFsdWUgaXMgdGhlIGFuZ2xlIHRoYXQgdGhlIGNhbWVyYSBpbWFnZSBuZWVkcyB0byBiZSByb3RhdGVkIGNsb2Nrd2lzZQorICAgKiBzbyBpdCBzaG93cyBjb3JyZWN0bHkgb24gdGhlIGRpc3BsYXkgaW4gaXRzIG5hdHVyYWwgb3JpZW50YXRpb24uCisgICAqIEl0IHNob3VsZCBiZSAwLCA5MCwgMTgwLCBvciAyNzAuCisgICAqLworICBwcm9wZXJ0aWVzW1BST1BfREVWSUNFX09SSUVOVEFUSU9OXSA9IGdfcGFyYW1fc3BlY19pbnQgKCJkZXZpY2Utb3JpZW50YXRpb24iLAorICAgICAgIkRldmljZSBvcmllbnRhdGlvbiIsICJUaGUgb3JpZW50YXRpb24gb2YgdGhlIGNhbWVyYSBpbWFnZSIsCisgICAgICAwLCAzNjAsIDAsIEdfUEFSQU1fUkVBREFCTEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ERVZJQ0VfT1JJRU5UQVRJT04sCisgICAgICBwcm9wZXJ0aWVzW1BST1BfREVWSUNFX09SSUVOVEFUSU9OXSk7CisKKyAgLyoqCisgICAqIEdzdEFIQ1NyYzpkZXZpY2UtZmFjaW5nOgorICAgKgorICAgKiBUaGUgZGlyZWN0aW9uIHRoYXQgdGhlIGN1cnJlbnRseSBzZWxlY3QgY2FtZXJhIEBkZXZpY2UgZmFjZXMuCisgICAqCisgICAqIEEgdmFsdWUgb2YgMCBtZWFucyB0aGUgY2FtZXJhIGlzIGZhY2luZyB0aGUgb3Bwb3NpdGUgZGlyZWN0aW9uIGFzIHRoZQorICAgKiBzY3JlZW4gd2hpbGUgYSB2YWx1ZSBvZiAxIG1lYW5zIHRoZSBjYW1lcmEgaXMgZmFjaW5nIHRoZSBzYW1lIGRpcmVjdGlvbgorICAgKiBhcyB0aGUgc2NyZWVuLgorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX0RFVklDRV9GQUNJTkddID0gZ19wYXJhbV9zcGVjX2VudW0gKCJkZXZpY2UtZmFjaW5nIiwKKyAgICAgICJEZXZpY2UgZmFjaW5nIiwgIlRoZSBkaXJlY3Rpb24gdGhhdCB0aGUgY2FtZXJhIGZhY2VzIiwKKyAgICAgIEdTVF9BSENfU1JDX0ZBQ0lOR19UWVBFLCBDQU1FUkFfRkFDSU5HX0JBQ0ssCisgICAgICBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfREVWSUNFX0ZBQ0lORywKKyAgICAgIHByb3BlcnRpZXNbUFJPUF9ERVZJQ0VfRkFDSU5HXSk7CisKKyAgLyoqCisgICAqIEdzdEFIQ1NyYzpmb2NhbC1sZW5ndGg6CisgICAqCisgICAqIEdldHMgdGhlIGZvY2FsIGxlbmd0aCAoaW4gbWlsbGltZXRlcikgb2YgdGhlIGNhbWVyYS4KKyAgICovCisgIHByb3BlcnRpZXNbUFJPUF9GT0NBTF9MRU5HVEhdID0gZ19wYXJhbV9zcGVjX2Zsb2F0ICgiZm9jYWwtbGVuZ3RoIiwKKyAgICAgICJGb2NhbCBsZW5ndGgiLCAiR2V0cyB0aGUgZm9jYWwgbGVuZ3RoIChpbiBtaWxsaW1ldGVyKSBvZiB0aGUgY2FtZXJhIiwKKyAgICAgIC1HX01BWEZMT0FULCBHX01BWEZMT0FULCAwLCBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRk9DQUxfTEVOR1RILAorICAgICAgcHJvcGVydGllc1tQUk9QX0ZPQ0FMX0xFTkdUSF0pOworCisgIC8qKgorICAgKiBHc3RBSENTcmM6aG9yaXpvbnRhbC12aWV3LWFuZ2xlOgorICAgKgorICAgKiBHZXRzIHRoZSBob3Jpem9udGFsIGFuZ2xlIG9mIHZpZXcgaW4gZGVncmVlcy4KKyAgICovCisgIHByb3BlcnRpZXNbUFJPUF9IT1JJWk9OVEFMX1ZJRVdfQU5HTEVdID0KKyAgICAgIGdfcGFyYW1fc3BlY19mbG9hdCAoImhvcml6b250YWwtdmlldy1hbmdsZSIsICJIb3Jpem9udGFsIHZpZXcgYW5nbGUiLAorICAgICAgIkdldHMgdGhlIGhvcml6b250YWwgYW5nbGUgb2YgdmlldyBpbiBkZWdyZWVzIiwKKyAgICAgIC1HX01BWEZMT0FULCBHX01BWEZMT0FULCAwLCBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfSE9SSVpPTlRBTF9WSUVXX0FOR0xFLAorICAgICAgcHJvcGVydGllc1tQUk9QX0hPUklaT05UQUxfVklFV19BTkdMRV0pOworCisgIC8qKgorICAgKiBHc3RBSENTcmM6dmVydGljYWwtdmlldy1hbmdsZToKKyAgICoKKyAgICogR2V0cyB0aGUgdmVydGljYWwgYW5nbGUgb2YgdmlldyBpbiBkZWdyZWVzLgorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX1ZFUlRJQ0FMX1ZJRVdfQU5HTEVdID0KKyAgICAgIGdfcGFyYW1fc3BlY19mbG9hdCAoInZlcnRpY2FsLXZpZXctYW5nbGUiLCAiVmVydGljYWwgdmlldyBhbmdsZSIsCisgICAgICAiR2V0cyB0aGUgdmVydGljYWwgYW5nbGUgb2YgdmlldyBpbiBkZWdyZWVzIiwKKyAgICAgIC1HX01BWEZMT0FULCBHX01BWEZMT0FULCAwLCBHX1BBUkFNX1JFQURBQkxFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUyk7CisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfVkVSVElDQUxfVklFV19BTkdMRSwKKyAgICAgIHByb3BlcnRpZXNbUFJPUF9WRVJUSUNBTF9WSUVXX0FOR0xFXSk7CisKKyAgLyoqCisgICAqIEdzdEFIQ1NyYzp2aWRlby1zdGFiaWxpemF0aW86CisgICAqCisgICAqIFZpZGVvIHN0YWJpbGl6YXRpb24gcmVkdWNlcyB0aGUgc2hha2luZyBkdWUgdG8gdGhlIG1vdGlvbiBvZiB0aGUgY2FtZXJhLgorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX1ZJREVPX1NUQUJJTElaQVRJT05dID0KKyAgICAgIGdfcGFyYW1fc3BlY19ib29sZWFuICgidmlkZW8tc3RhYmlsaXphdGlvbiIsICJWaWRlbyBzdGFiaWxpemF0aW9uIiwKKyAgICAgICJWaWRlbyBzdGFiaWxpemF0aW9uIHJlZHVjZXMgdGhlIHNoYWtpbmcgZHVlIHRvIHRoZSBtb3Rpb24gb2YgdGhlIGNhbWVyYSIsCisgICAgICBGQUxTRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9WSURFT19TVEFCSUxJWkFUSU9OLAorICAgICAgcHJvcGVydGllc1tQUk9QX1ZJREVPX1NUQUJJTElaQVRJT05dKTsKKworICAvKioKKyAgICogR3N0QUhDU3JjOnNtb290aC16b29tOgorICAgKgorICAgKiBJZiBlbmFibGVkLCB0aGVuIHNtb290aCB6b29taW5nIHdpbGwgYmUgdXNlZCB3aGVuIHRoZSBAem9vbSBwcm9wZXJ0eSBpcworICAgKiBjaGFuZ2VkLiBJbiB0aGF0IGNhc2UsIHRoZSBAem9vbSBwcm9wZXJ0eSBjYW4gYmUgcXVlcmllZCB0byBrbm93IHRoZQorICAgKiBjdXJyZW50IHpvb20gbGV2ZWwgd2hpbGUgdGhlIHNtb290aCB6b29tIGlzIGluIHByb2dyZXNzLgorICAgKi8KKyAgcHJvcGVydGllc1tQUk9QX1NNT09USF9aT09NXSA9IGdfcGFyYW1fc3BlY19ib29sZWFuICgic21vb3RoLXpvb20iLAorICAgICAgIlNtb290aCBab29tIiwgIlVzZSBzbW9vdGggem9vbSB3aGVuIGF2YWlsYWJsZSIsCisgICAgICBGQUxTRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKTsKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TTU9PVEhfWk9PTSwKKyAgICAgIHByb3BlcnRpZXNbUFJPUF9TTU9PVEhfWk9PTV0pOworCisgIC8qIE92ZXJyaWRlIEdzdFBob3RvZ3JhcGh5IHByb3BlcnRpZXMgKi8KKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfV0JfTU9ERSwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX1dCX01PREUpOworICBwcm9wZXJ0aWVzW1BST1BfV0JfTU9ERV0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfV0JfTU9ERSk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQ09MT1VSX1RPTkUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9DT0xPUl9UT05FKTsKKyAgcHJvcGVydGllc1tQUk9QX0NPTE9VUl9UT05FXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9DT0xPUl9UT05FKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9TQ0VORV9NT0RFLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfU0NFTkVfTU9ERSk7CisgIHByb3BlcnRpZXNbUFJPUF9TQ0VORV9NT0RFXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9TQ0VORV9NT0RFKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GTEFTSF9NT0RFLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRkxBU0hfTU9ERSk7CisgIHByb3BlcnRpZXNbUFJPUF9GTEFTSF9NT0RFXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9GTEFTSF9NT0RFKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9OT0lTRV9SRURVQ1RJT04sCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9OT0lTRV9SRURVQ1RJT04pOworICBwcm9wZXJ0aWVzW1BST1BfTk9JU0VfUkVEVUNUSU9OXSA9CisgICAgICBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfTk9JU0VfUkVEVUNUSU9OKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9DQVBBQklMSVRJRVMsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9DQVBBQklMSVRJRVMpOworICBwcm9wZXJ0aWVzW1BST1BfQ0FQQUJJTElUSUVTXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9DQVBBQklMSVRJRVMpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0VWX0NPTVAsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9FVl9DT01QKTsKKyAgcHJvcGVydGllc1tQUk9QX0VWX0NPTVBdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0VWX0NPTVApOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0lTT19TUEVFRCwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0lTT19TUEVFRCk7CisgIHByb3BlcnRpZXNbUFJPUF9JU09fU1BFRURdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0lTT19TUEVFRCk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQVBFUlRVUkUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9BUEVSVFVSRSk7CisgIHByb3BlcnRpZXNbUFJPUF9BUEVSVFVSRV0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfQVBFUlRVUkUpOworCisjaWYgMAorICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9FWFBPU1VSRV9NT0RFLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRVhQT1NVUkVfTU9ERSk7CisgIHByb3BlcnRpZXNbUFJPUF9FWFBPU1VSRV0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRVhQT1NVUkVfTU9ERSk7CisjZW5kaWYKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfSU1BR0VfQ0FQVFVSRV9TVVBQT1JURURfQ0FQUywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0lNQUdFX0NBUFRVUkVfU1VQUE9SVEVEX0NBUFMpOworICBwcm9wZXJ0aWVzW1BST1BfSU1BR0VfQ0FQVFVSRV9TVVBQT1JURURfQ0FQU10gPQorICAgICAgZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0lNQUdFX0NBUFRVUkVfU1VQUE9SVEVEX0NBUFMpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9JTUFHRV9QUkVWSUVXX1NVUFBPUlRFRF9DQVBTLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfSU1BR0VfUFJFVklFV19TVVBQT1JURURfQ0FQUyk7CisgIHByb3BlcnRpZXNbUFJPUF9JTUFHRV9QUkVWSUVXX1NVUFBPUlRFRF9DQVBTXSA9CisgICAgICBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfSU1BR0VfUFJFVklFV19TVVBQT1JURURfQ0FQUyk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRkxJQ0tFUl9NT0RFLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRkxJQ0tFUl9NT0RFKTsKKyAgcHJvcGVydGllc1tQUk9QX0ZMSUNLRVJfTU9ERV0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRkxJQ0tFUl9NT0RFKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9GT0NVU19NT0RFLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfRk9DVVNfTU9ERSk7CisgIHByb3BlcnRpZXNbUFJPUF9GT0NVU19NT0RFXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9GT0NVU19NT0RFKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9aT09NLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfWk9PTSk7CisgIHByb3BlcnRpZXNbUFJPUF9aT09NXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9aT09NKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9XSElURV9QT0lOVCwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX1dISVRFX1BPSU5UKTsKKyAgcHJvcGVydGllc1tQUk9QX1dISVRFX1BPSU5UXSA9IGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9XSElURV9QT0lOVCk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUlOX0VYUE9TVVJFX1RJTUUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9NSU5fRVhQT1NVUkVfVElNRSk7CisgIHByb3BlcnRpZXNbUFJPUF9NSU5fRVhQT1NVUkVfVElNRV0gPQorICAgICAgZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX01JTl9FWFBPU1VSRV9USU1FKTsKKworICBnX29iamVjdF9jbGFzc19vdmVycmlkZV9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9NQVhfRVhQT1NVUkVfVElNRSwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX01BWF9FWFBPU1VSRV9USU1FKTsKKyAgcHJvcGVydGllc1tQUk9QX01BWF9FWFBPU1VSRV9USU1FXSA9CisgICAgICBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfTUFYX0VYUE9TVVJFX1RJTUUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0xFTlNfRk9DVVMsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9MRU5TX0ZPQ1VTKTsKKyAgcHJvcGVydGllc1tQUk9QX0xFTlNfRk9DVVNdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0xFTlNfRk9DVVMpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0VYUE9TVVJFX1RJTUUsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9FWFBPU1VSRV9USU1FKTsKKyAgcHJvcGVydGllc1tQUk9QX0VYUE9TVVJFX1RJTUVdID0gZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9QUk9QX0VYUE9TVVJFX1RJTUUpOworCisgIGdfb2JqZWN0X2NsYXNzX292ZXJyaWRlX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTE9SX1RFTVBFUkFUVVJFLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfQ09MT1JfVEVNUEVSQVRVUkUpOworICBwcm9wZXJ0aWVzW1BST1BfQ09MT1JfVEVNUEVSQVRVUkVdID0KKyAgICAgIGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9DT0xPUl9URU1QRVJBVFVSRSk7CisKKyAgZ19vYmplY3RfY2xhc3Nfb3ZlcnJpZGVfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfQU5BTE9HX0dBSU4sCisgICAgICBHU1RfUEhPVE9HUkFQSFlfUFJPUF9BTkFMT0dfR0FJTik7CisgIHByb3BlcnRpZXNbUFJPUF9BTkFMT0dfR0FJTl0gPSBnX29iamVjdF9jbGFzc19maW5kX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgR1NUX1BIT1RPR1JBUEhZX1BST1BfQU5BTE9HX0dBSU4pOworCisKKworICBrbGFzcy0+cHJvYmVfcHJvcGVydGllcyA9IE5VTEw7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X3N0YXRpY19tZXRhZGF0YSAoZWxlbWVudF9jbGFzcywKKyAgICAgICJBbmRyb2lkIENhbWVyYSBTb3VyY2UiLAorICAgICAgIlNvdXJjZS9WaWRlbyIsCisgICAgICAiUmVhZHMgZnJhbWVzIGZyb20gYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEgY2xhc3MgaW50byBidWZmZXJzIiwKKyAgICAgICJZb3VuZXNzIEFsYW91aSA8eW91bmVzcy5hbGFvdWlAY29sbGFib3JhLmNvLnVrPiIpOworCisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChnc3RfYWhjX3NyY19kZWJ1ZywgImFoY3NyYyIsIDAsCisgICAgICAiYW5kcm9pZC5oYXJkd2FyZS5DYW1lcmEgc291cmNlIGVsZW1lbnQiKTsKK30KKworc3RhdGljIGdib29sZWFuCitfZGF0YV9xdWV1ZV9jaGVja19mdWxsIChHc3REYXRhUXVldWUgKiBxdWV1ZSwgZ3VpbnQgdmlzaWJsZSwKKyAgICBndWludCBieXRlcywgZ3VpbnQ2NCB0aW1lLCBncG9pbnRlciBjaGVja2RhdGEpCit7CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9haGNfc3JjX2luaXQgKEdzdEFIQ1NyYyAqIHNlbGYpCit7CisgIGdzdF9iYXNlX3NyY19zZXRfbGl2ZSAoR1NUX0JBU0VfU1JDIChzZWxmKSwgVFJVRSk7CisgIGdzdF9iYXNlX3NyY19zZXRfZm9ybWF0IChHU1RfQkFTRV9TUkMgKHNlbGYpLCBHU1RfRk9STUFUX1RJTUUpOworICBnc3RfYmFzZV9zcmNfc2V0X2RvX3RpbWVzdGFtcCAoR1NUX0JBU0VfU1JDIChzZWxmKSwgRkFMU0UpOworCisgIHNlbGYtPmNhbWVyYSA9IE5VTEw7CisgIHNlbGYtPnRleHR1cmUgPSBOVUxMOworICBzZWxmLT5kYXRhID0gTlVMTDsKKyAgc2VsZi0+cXVldWUgPSBnc3RfZGF0YV9xdWV1ZV9uZXcgKF9kYXRhX3F1ZXVlX2NoZWNrX2Z1bGwsIE5VTEwsIE5VTEwsIE5VTEwpOworICBzZWxmLT5zdGFydCA9IEZBTFNFOworICBzZWxmLT5wcmV2aW91c190cyA9IEdTVF9DTE9DS19USU1FX05PTkU7CisKKyAgZ19tdXRleF9pbml0ICgmc2VsZi0+bXV0ZXgpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKG9iamVjdCk7CisKKyAgaWYgKHNlbGYtPnF1ZXVlKQorICAgIGdfb2JqZWN0X3VucmVmIChzZWxmLT5xdWV1ZSk7CisgIHNlbGYtPnF1ZXVlID0gTlVMTDsKKworICBnX211dGV4X2NsZWFyICgmc2VsZi0+bXV0ZXgpOworCisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kaXNwb3NlIChvYmplY3QpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChvYmplY3QpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJzZXQgcHJvcHMgJWQiLCBwcm9wX2lkKTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfREVWSUNFOnsKKyAgICAgIGNvbnN0IGdjaGFyICpkZXYgPSBnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKTsKKyAgICAgIGdjaGFyICplbmRwdHIgPSBOVUxMOworICAgICAgZ3VpbnQ2NCBkZXZpY2U7CisKKyAgICAgIGRldmljZSA9IGdfYXNjaWlfc3RydG9sbCAoZGV2LCAmZW5kcHRyLCAxMCk7CisgICAgICBpZiAoZW5kcHRyICE9IGRldiAmJiBlbmRwdHJbMF0gPT0gMCAmJiBkZXZpY2UgPCBHX01BWElOVCkKKyAgICAgICAgc2VsZi0+ZGV2aWNlID0gKGdpbnQpIGRldmljZTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfVklERU9fU1RBQklMSVpBVElPTjoKKyAgICAgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICAgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgICAgIGlmIChwYXJhbXMpIHsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X3ZpZGVvX3N0YWJpbGl6YXRpb24gKHBhcmFtcywKKyAgICAgICAgICAgICAgZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpKTsKKyAgICAgICAgICBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcyk7CisgICAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TTU9PVEhfWk9PTToKKyAgICAgIHNlbGYtPnNtb290aF96b29tID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1dCX01PREU6eworICAgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIHdiID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworCisgICAgICBnc3RfYWhjX3NyY19zZXRfd2hpdGVfYmFsYW5jZV9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCB3Yik7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NPTE9VUl9UT05FOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSB0b25lID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworCisgICAgICBnc3RfYWhjX3NyY19zZXRfY29sb3VyX3RvbmVfbW9kZSAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSwgdG9uZSk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1NDRU5FX01PREU6eworICAgICAgR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUgc2NlbmUgPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisKKyAgICAgIGdzdF9haGNfc3JjX3NldF9zY2VuZV9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCBzY2VuZSk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0ZMQVNIX01PREU6eworICAgICAgR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGUgZmxhc2ggPSBnX3ZhbHVlX2dldF9lbnVtICh2YWx1ZSk7CisKKyAgICAgIGdzdF9haGNfc3JjX3NldF9mbGFzaF9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCBmbGFzaCk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VWX0NPTVA6eworICAgICAgZ2Zsb2F0IGV2ID0gZ192YWx1ZV9nZXRfZmxvYXQgKHZhbHVlKTsKKworICAgICAgZ3N0X2FoY19zcmNfc2V0X2V2X2NvbXBlbnNhdGlvbiAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSwgZXYpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GTElDS0VSX01PREU6eworICAgICAgR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSBmbGlja2VyID0gZ192YWx1ZV9nZXRfZW51bSAodmFsdWUpOworCisgICAgICBnc3RfYWhjX3NyY19zZXRfZmxpY2tlcl9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCBmbGlja2VyKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRk9DVVNfTU9ERTp7CisgICAgICBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSBmb2N1cyA9IGdfdmFsdWVfZ2V0X2VudW0gKHZhbHVlKTsKKworICAgICAgZ3N0X2FoY19zcmNfc2V0X2ZvY3VzX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksIGZvY3VzKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfWk9PTTp7CisgICAgICBnZmxvYXQgem9vbSA9IGdfdmFsdWVfZ2V0X2Zsb2F0ICh2YWx1ZSk7CisKKyAgICAgIGdzdF9haGNfc3JjX3NldF96b29tIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCB6b29tKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTk9JU0VfUkVEVUNUSU9OOgorICAgIGNhc2UgUFJPUF9JU09fU1BFRUQ6CisgICAgY2FzZSBQUk9QX0FQRVJUVVJFOgorICAgIGNhc2UgUFJPUF9FWFBPU1VSRV9NT0RFOgorICAgIGNhc2UgUFJPUF9JTUFHRV9DQVBUVVJFX1NVUFBPUlRFRF9DQVBTOgorICAgIGNhc2UgUFJPUF9JTUFHRV9QUkVWSUVXX1NVUFBPUlRFRF9DQVBTOgorICAgIGNhc2UgUFJPUF9XSElURV9QT0lOVDoKKyAgICBjYXNlIFBST1BfTUlOX0VYUE9TVVJFX1RJTUU6CisgICAgY2FzZSBQUk9QX01BWF9FWFBPU1VSRV9USU1FOgorICAgIGNhc2UgUFJPUF9MRU5TX0ZPQ1VTOgorICAgIGNhc2UgUFJPUF9FWFBPU1VSRV9USU1FOgorICAgIGNhc2UgUFJPUF9DT0xPUl9URU1QRVJBVFVSRToKKyAgICBjYXNlIFBST1BfQU5BTE9HX0dBSU46CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKG9iamVjdCk7CisgICh2b2lkKSBzZWxmOworCisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGNhc2UgUFJPUF9ERVZJQ0U6eworICAgICAgZ2NoYXIgKmRldiA9IGdfc3RyZHVwX3ByaW50ZiAoIiVkIiwgc2VsZi0+ZGV2aWNlKTsKKworICAgICAgZ192YWx1ZV90YWtlX3N0cmluZyAodmFsdWUsIGRldik7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFVklDRV9OQU1FOnsKKyAgICAgIEdzdEFIQ0NhbWVyYUluZm8gaW5mbzsKKyAgICAgIGdjaGFyICpkZXY7CisKKyAgICAgIGlmIChnc3RfYWhfY2FtZXJhX2dldF9jYW1lcmFfaW5mbyAoc2VsZi0+ZGV2aWNlLCAmaW5mbykpCisgICAgICAgIGRldiA9IGdfc3RyZHVwX3ByaW50ZiAoIiMlZCAlcyIsIHNlbGYtPmRldmljZSwKKyAgICAgICAgICAgIGluZm8uZmFjaW5nID09IENhbWVyYUluZm9fQ0FNRVJBX0ZBQ0lOR19CQUNLID8gIkJhY2siIDogIkZyb250Iik7CisgICAgICBlbHNlCisgICAgICAgIGRldiA9IGdfc3RyZHVwX3ByaW50ZiAoIiMlZCIsIHNlbGYtPmRldmljZSk7CisKKyAgICAgIGdfdmFsdWVfdGFrZV9zdHJpbmcgKHZhbHVlLCBkZXYpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERVZJQ0VfRkFDSU5HOnsKKyAgICAgIEdzdEFIQ0NhbWVyYUluZm8gaW5mbzsKKworICAgICAgaWYgKGdzdF9haF9jYW1lcmFfZ2V0X2NhbWVyYV9pbmZvIChzZWxmLT5kZXZpY2UsICZpbmZvKSkKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGluZm8uZmFjaW5nID09IENhbWVyYUluZm9fQ0FNRVJBX0ZBQ0lOR19CQUNLID8KKyAgICAgICAgICAgIENBTUVSQV9GQUNJTkdfQkFDSyA6IENBTUVSQV9GQUNJTkdfRlJPTlQpOworICAgICAgZWxzZQorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgQ0FNRVJBX0ZBQ0lOR19CQUNLKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfREVWSUNFX09SSUVOVEFUSU9OOnsKKyAgICAgIEdzdEFIQ0NhbWVyYUluZm8gaW5mbzsKKworICAgICAgaWYgKGdzdF9haF9jYW1lcmFfZ2V0X2NhbWVyYV9pbmZvIChzZWxmLT5kZXZpY2UsICZpbmZvKSkKKyAgICAgICAgZ192YWx1ZV9zZXRfaW50ICh2YWx1ZSwgaW5mby5vcmllbnRhdGlvbik7CisgICAgICBlbHNlCisgICAgICAgIGdfdmFsdWVfc2V0X2ludCAodmFsdWUsIDApOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GT0NBTF9MRU5HVEg6CisgICAgICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgICAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgICAgICBpZiAocGFyYW1zKSB7CisgICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQgKHZhbHVlLAorICAgICAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZvY2FsX2xlbmd0aCAocGFyYW1zKSk7CisgICAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9IT1JJWk9OVEFMX1ZJRVdfQU5HTEU6CisgICAgICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgICAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgICAgICBpZiAocGFyYW1zKSB7CisgICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQgKHZhbHVlLAorICAgICAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2hvcml6b250YWxfdmlld19hbmdsZSAocGFyYW1zKSk7CisgICAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9WRVJUSUNBTF9WSUVXX0FOR0xFOgorICAgICAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgICAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICAgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICAgICAgaWYgKHBhcmFtcykgeworICAgICAgICAgIGdfdmFsdWVfc2V0X2Zsb2F0ICh2YWx1ZSwKKyAgICAgICAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF92ZXJ0aWNhbF92aWV3X2FuZ2xlIChwYXJhbXMpKTsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICAgICAgfQorICAgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1ZJREVPX1NUQUJJTElaQVRJT046CisgICAgICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgICAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgICAgICBpZiAocGFyYW1zKSB7CisgICAgICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsCisgICAgICAgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19nZXRfdmlkZW9fc3RhYmlsaXphdGlvbiAocGFyYW1zKSk7CisgICAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9TTU9PVEhfWk9PTToKKyAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBzZWxmLT5zbW9vdGhfem9vbSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfV0JfTU9ERTp7CisgICAgICBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUgd2I7CisKKyAgICAgIGlmIChnc3RfYWhjX3NyY19nZXRfd2hpdGVfYmFsYW5jZV9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCAmd2IpKQorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgd2IpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9DT0xPVVJfVE9ORTp7CisgICAgICBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUgdG9uZTsKKworICAgICAgaWYgKGdzdF9haGNfc3JjX2dldF9jb2xvdXJfdG9uZV9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCAmdG9uZSkpCisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCB0b25lKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfU0NFTkVfTU9ERTp7CisgICAgICBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSBzY2VuZTsKKworICAgICAgaWYgKGdzdF9haGNfc3JjX2dldF9zY2VuZV9tb2RlIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCAmc2NlbmUpKQorICAgICAgICBnX3ZhbHVlX3NldF9lbnVtICh2YWx1ZSwgc2NlbmUpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GTEFTSF9NT0RFOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Rmxhc2hNb2RlIGZsYXNoOworCisgICAgICBpZiAoZ3N0X2FoY19zcmNfZ2V0X2ZsYXNoX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksICZmbGFzaCkpCisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBmbGFzaCk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0NBUEFCSUxJVElFUzp7CisgICAgICBHc3RQaG90b2dyYXBoeUNhcHMgY2FwczsKKworICAgICAgY2FwcyA9IGdzdF9haGNfc3JjX2dldF9jYXBhYmlsaXRpZXMgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZikpOworICAgICAgZ192YWx1ZV9zZXRfdWxvbmcgKHZhbHVlLCBjYXBzKTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRVZfQ09NUDp7CisgICAgICBnZmxvYXQgZXY7CisKKyAgICAgIGlmIChnc3RfYWhjX3NyY19nZXRfZXZfY29tcGVuc2F0aW9uIChHU1RfUEhPVE9HUkFQSFkgKHNlbGYpLCAmZXYpKQorICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCAodmFsdWUsIGV2KTsKKyAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRkxJQ0tFUl9NT0RFOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUgZmxpY2tlcjsKKworICAgICAgaWYgKGdzdF9haGNfc3JjX2dldF9mbGlja2VyX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksICZmbGlja2VyKSkKKyAgICAgICAgZ192YWx1ZV9zZXRfZW51bSAodmFsdWUsIGZsaWNrZXIpOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9GT0NVU19NT0RFOnsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlIGZvY3VzOworCisgICAgICBpZiAoZ3N0X2FoY19zcmNfZ2V0X2ZvY3VzX21vZGUgKEdTVF9QSE9UT0dSQVBIWSAoc2VsZiksICZmb2N1cykpCisgICAgICAgIGdfdmFsdWVfc2V0X2VudW0gKHZhbHVlLCBmb2N1cyk7CisgICAgfQorICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX1pPT006eworICAgICAgZ2Zsb2F0IHpvb207CisKKyAgICAgIGlmIChnc3RfYWhjX3NyY19nZXRfem9vbSAoR1NUX1BIT1RPR1JBUEhZIChzZWxmKSwgJnpvb20pKQorICAgICAgICBnX3ZhbHVlX3NldF9mbG9hdCAodmFsdWUsIHpvb20pOworICAgIH0KKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9JTUFHRV9DQVBUVVJFX1NVUFBPUlRFRF9DQVBTOgorICAgIGNhc2UgUFJPUF9JTUFHRV9QUkVWSUVXX1NVUFBPUlRFRF9DQVBTOgorICAgIGNhc2UgUFJPUF9OT0lTRV9SRURVQ1RJT046CisgICAgY2FzZSBQUk9QX0lTT19TUEVFRDoKKyAgICBjYXNlIFBST1BfQVBFUlRVUkU6CisgICAgY2FzZSBQUk9QX0VYUE9TVVJFX01PREU6CisgICAgY2FzZSBQUk9QX1dISVRFX1BPSU5UOgorICAgIGNhc2UgUFJPUF9NSU5fRVhQT1NVUkVfVElNRToKKyAgICBjYXNlIFBST1BfTUFYX0VYUE9TVVJFX1RJTUU6CisgICAgY2FzZSBQUk9QX0xFTlNfRk9DVVM6CisgICAgY2FzZSBQUk9QX0VYUE9TVVJFX1RJTUU6CisgICAgY2FzZSBQUk9QX0NPTE9SX1RFTVBFUkFUVVJFOgorICAgIGNhc2UgUFJPUF9BTkFMT0dfR0FJTjoKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworI2lmIDAKK3N0YXRpYyBjb25zdCBHTGlzdCAqCitnc3RfYWhjX3NyY19wcm9iZV9nZXRfcHJvcGVydGllcyAoR3N0UHJvcGVydHlQcm9iZSAqIHByb2JlKQoreworICBHc3RBSENTcmNDbGFzcyAqYWhjX2NsYXNzID0gR1NUX0FIQ19TUkNfQ0xBU1MgKHByb2JlKTsKKyAgR0xpc3QgKipsaXN0ID0gJmFoY19jbGFzcy0+cHJvYmVfcHJvcGVydGllczsKKworICBpZiAoISpsaXN0KSB7CisgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgcHJvcGVydGllc1tQUk9QX0RFVklDRV0pOworICAgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIHByb3BlcnRpZXNbUFJPUF9FVl9DT01QXSk7CisgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgcHJvcGVydGllc1tQUk9QX1pPT01dKTsKKyAgICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBwcm9wZXJ0aWVzW1BST1BfV0JfTU9ERV0pOworICAgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIHByb3BlcnRpZXNbUFJPUF9DT0xPVVJfVE9ORV0pOworICAgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIHByb3BlcnRpZXNbUFJPUF9GTEFTSF9NT0RFXSk7CisgICAgKmxpc3QgPSBnX2xpc3RfYXBwZW5kICgqbGlzdCwgcHJvcGVydGllc1tQUk9QX0ZPQ1VTX01PREVdKTsKKyAgICAqbGlzdCA9IGdfbGlzdF9hcHBlbmQgKCpsaXN0LCBwcm9wZXJ0aWVzW1BST1BfU0NFTkVfTU9ERV0pOworICAgICpsaXN0ID0gZ19saXN0X2FwcGVuZCAoKmxpc3QsIHByb3BlcnRpZXNbUFJPUF9GTElDS0VSX01PREVdKTsKKyAgfQorCisgIHJldHVybiAqbGlzdDsKK30KKworI2RlZmluZSBQUk9CRV9HRVRfRU5VTV9WQUxVRVMobmFtZSwgdHlwZSwgc3RydWN0X25hbWUpICAgICAgICAgICAgICAgICAgXAorICBpZiAoc2VsZi0+Y2FtZXJhKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7ICAgICAgICAgICAgICAgXAorICAgIGlmIChwYXJhbXMpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgR0xpc3QgKmxpc3QgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF8jI25hbWUgKHBhcmFtcyk7ICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgaWYgKGxpc3QpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEdWYWx1ZSB2YWx1ZSA9IHsgMCB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIEdMaXN0ICppOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGFycmF5ID0gZ192YWx1ZV9hcnJheV9uZXcgKGdfbGlzdF9sZW5ndGggKGxpc3QpKTsgICAgICAgICAgICAgXAorICAgICAgICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlLCB0eXBlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGZvciAoaSA9IGxpc3Q7IGk7IGkgPSBpLT5uZXh0KSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgc3RydWN0X25hbWUgbW9kZTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgY29uc3QgZ2NoYXIgKm5hbWUgPSBpLT5kYXRhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgaWYgKF8jI25hbWUjI190b19lbnVtIChuYW1lLCAmbW9kZSkpIHsgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBnX3ZhbHVlX3NldF9lbnVtICgmdmFsdWUsIG1vZGUpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICBnX3ZhbHVlX2FycmF5X2FwcGVuZCAoYXJyYXksICZ2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF8jI25hbWUjI19mcmVlIChsaXN0KTsgICAgICAgICAgICAgICAgXAorICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICB9CisKKworc3RhdGljIEdWYWx1ZUFycmF5ICoKK2dzdF9haGNfc3JjX3Byb2JlX2dldF92YWx1ZXMgKEdzdFByb3BlcnR5UHJvYmUgKiBwcm9iZSwKKyAgICBndWludCBwcm9wX2lkLCBjb25zdCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwcm9iZSk7CisgIEdWYWx1ZUFycmF5ICphcnJheSA9IE5VTEw7CisKKyAgLyogZ19vYmplY3RfY2xhc3NfZmluZF9wcm9wZXJ0eSByZXR1cm5zIG92ZXJyaWRlbiBwcm9wZXJ0eSB3aXRoCisgICAqIHBhcmFtX2lkID09IDAsIHNvIHdlIGNhbid0IHN3aXRjaC9jYXNlIHRoZSBwcm9wX2lkIGFuZAorICAgKiB3ZSBuZWVkIHRvIGNoZWNrIHRoZSBwc3BlYyBpbnN0ZWFkICovCisgIGlmIChwc3BlYyA9PSBwcm9wZXJ0aWVzW1BST1BfREVWSUNFXSkgeworICAgIEdWYWx1ZSB2YWx1ZSA9IHsgMCB9OworICAgIGdpbnQgbnVtX2NhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9udW1iZXJfb2ZfY2FtZXJhcyAoKTsKKyAgICBnaW50IGk7CisKKyAgICBhcnJheSA9IGdfdmFsdWVfYXJyYXlfbmV3IChudW1fY2Ftcyk7CisgICAgZ192YWx1ZV9pbml0ICgmdmFsdWUsIEdfVFlQRV9TVFJJTkcpOworICAgIGZvciAoaSA9IDA7IGkgPCBudW1fY2FtczsgaSsrKSB7CisgICAgICBnX3ZhbHVlX3Rha2Vfc3RyaW5nICgmdmFsdWUsIGdfc3RyZHVwX3ByaW50ZiAoIiVkIiwgaSkpOworICAgICAgZ192YWx1ZV9hcnJheV9hcHBlbmQgKGFycmF5LCAmdmFsdWUpOworICAgIH0KKyAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsdWUpOworICB9IGVsc2UgaWYgKHBzcGVjID09IHByb3BlcnRpZXNbUFJPUF9FVl9DT01QXSkgeworICAgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICAgIGlmIChwYXJhbXMpIHsKKyAgICAgICAgZ2ludCBtaW4sIG1heDsKKyAgICAgICAgZ2Zsb2F0IHN0ZXA7CisKKyAgICAgICAgbWluID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9taW5fZXhwb3N1cmVfY29tcGVuc2F0aW9uIChwYXJhbXMpOworICAgICAgICBtYXggPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICAgIHN0ZXAgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2V4cG9zdXJlX2NvbXBlbnNhdGlvbl9zdGVwIChwYXJhbXMpOworCisgICAgICAgIGlmIChzdGVwICE9IDAuMCAmJiBtaW4gIT0gbWF4KSB7CisgICAgICAgICAgR1ZhbHVlIHZhbHVlID0geyAwIH07CisgICAgICAgICAgZ2ludCBpOworCisgICAgICAgICAgLyogTWluIGFuZCBNYXggYXJlIGluY2x1c2l2ZSAqLworICAgICAgICAgIGFycmF5ID0gZ192YWx1ZV9hcnJheV9uZXcgKG1heCAtIG1pbiArIDEpOworICAgICAgICAgIGdfdmFsdWVfaW5pdCAoJnZhbHVlLCBHX1RZUEVfRkxPQVQpOworICAgICAgICAgIGZvciAoaSA9IG1pbjsgaSA8PSBtYXg7IGkrKykgeworICAgICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQgKCZ2YWx1ZSwgc3RlcCAqIGkpOworICAgICAgICAgICAgZ192YWx1ZV9hcnJheV9hcHBlbmQgKGFycmF5LCAmdmFsdWUpOworICAgICAgICAgIH0KKyAgICAgICAgICBnX3ZhbHVlX3Vuc2V0ICgmdmFsdWUpOworICAgICAgICB9CisKKyAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgICB9CisgICAgfQorICB9IGVsc2UgaWYgKHBzcGVjID09IHByb3BlcnRpZXNbUFJPUF9aT09NXSkgeworICAgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICAgIGlmIChwYXJhbXMpIHsKKyAgICAgICAgR0xpc3QgKnpvb21fcmF0aW9zID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF96b29tX3JhdGlvcyAocGFyYW1zKTsKKyAgICAgICAgZ2ludCBtYXhfem9vbSA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWF4X3pvb20gKHBhcmFtcyk7CisKKyAgICAgICAgaWYgKHpvb21fcmF0aW9zICYmIGdfbGlzdF9sZW5ndGggKHpvb21fcmF0aW9zKSA9PSAobWF4X3pvb20gKyAxKSkgeworICAgICAgICAgIEdWYWx1ZSB2YWx1ZSA9IHsgMCB9OworICAgICAgICAgIEdMaXN0ICppOworCisgICAgICAgICAgYXJyYXkgPSBnX3ZhbHVlX2FycmF5X25ldyAobWF4X3pvb20gKyAxKTsKKyAgICAgICAgICBnX3ZhbHVlX2luaXQgKCZ2YWx1ZSwgR19UWVBFX0ZMT0FUKTsKKyAgICAgICAgICBmb3IgKGkgPSB6b29tX3JhdGlvczsgaTsgaSA9IGktPm5leHQpIHsKKyAgICAgICAgICAgIGdpbnQgem9vbV92YWx1ZSA9IEdQT0lOVEVSX1RPX0lOVCAoaS0+ZGF0YSk7CisgICAgICAgICAgICBnZmxvYXQgem9vbSA9IChnZmxvYXQpIHpvb21fdmFsdWUgLyAxMDAuMDsKKworICAgICAgICAgICAgZ192YWx1ZV9zZXRfZmxvYXQgKCZ2YWx1ZSwgem9vbSk7CisgICAgICAgICAgICBnX3ZhbHVlX2FycmF5X2FwcGVuZCAoYXJyYXksICZ2YWx1ZSk7CisgICAgICAgICAgfQorICAgICAgICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWx1ZSk7CisgICAgICAgIH0KKworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfem9vbV9yYXRpb3NfZnJlZSAoem9vbV9yYXRpb3MpOworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICAgIH0KKyAgICB9CisgIH0gZWxzZSBpZiAocHNwZWMgPT0gcHJvcGVydGllc1tQUk9QX1dCX01PREVdKSB7CisgICAgUFJPQkVfR0VUX0VOVU1fVkFMVUVTICh3aGl0ZV9iYWxhbmNlLCBHU1RfVFlQRV9XSElURV9CQUxBTkNFX01PREUsCisgICAgICAgIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSk7CisgIH0gZWxzZSBpZiAocHNwZWMgPT0gcHJvcGVydGllc1tQUk9QX0NPTE9VUl9UT05FXSkgeworICAgIFBST0JFX0dFVF9FTlVNX1ZBTFVFUyAoY29sb3JfZWZmZWN0cywgR1NUX1RZUEVfQ09MT1VSX1RPTkVfTU9ERSwKKyAgICAgICAgR3N0UGhvdG9ncmFwaHlDb2xvclRvbmVNb2RlKTsKKyAgfSBlbHNlIGlmIChwc3BlYyA9PSBwcm9wZXJ0aWVzW1BST1BfRkxBU0hfTU9ERV0pIHsKKyAgICBQUk9CRV9HRVRfRU5VTV9WQUxVRVMgKGZsYXNoX21vZGVzLCBHU1RfVFlQRV9GTEFTSF9NT0RFLAorICAgICAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSk7CisgIH0gZWxzZSBpZiAocHNwZWMgPT0gcHJvcGVydGllc1tQUk9QX0ZPQ1VTX01PREVdKSB7CisgICAgUFJPQkVfR0VUX0VOVU1fVkFMVUVTIChmb2N1c19tb2RlcywgR1NUX1RZUEVfRk9DVVNfTU9ERSwKKyAgICAgICAgR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUpOworICB9IGVsc2UgaWYgKHBzcGVjID09IHByb3BlcnRpZXNbUFJPUF9TQ0VORV9NT0RFXSkgeworICAgIFBST0JFX0dFVF9FTlVNX1ZBTFVFUyAoc2NlbmVfbW9kZXMsIEdTVF9UWVBFX1NDRU5FX01PREUsCisgICAgICAgIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlKTsKKyAgfSBlbHNlIGlmIChwc3BlYyA9PSBwcm9wZXJ0aWVzW1BST1BfRkxJQ0tFUl9NT0RFXSkgeworICAgIFBST0JFX0dFVF9FTlVNX1ZBTFVFUyAoYW50aWJhbmRpbmcsIEdTVF9UWVBFX0ZMSUNLRVJfUkVEVUNUSU9OX01PREUsCisgICAgICAgIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUpOworICB9IGVsc2UgeworICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAocHJvYmUsIHByb3BfaWQsIHBzcGVjKTsKKyAgfQorCisgIHJldHVybiBhcnJheTsKK30KKyNlbmRpZgorCitzdGF0aWMgZ2Jvb2xlYW4KK19hbnRpYmFuZGluZ190b19lbnVtIChjb25zdCBnY2hhciAqIGFudGliYW5kaW5nLAorICAgIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUgKiBtb2RlKQoreworICBpZiAoYW50aWJhbmRpbmcgPT0gUGFyYW1ldGVyc19BTlRJQkFORElOR19BVVRPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMSUNLRVJfUkVEVUNUSU9OX0FVVE87CisgIGVsc2UgaWYgKGFudGliYW5kaW5nID09IFBhcmFtZXRlcnNfQU5USUJBTkRJTkdfNTBIWikKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GTElDS0VSX1JFRFVDVElPTl81MEhaOworICBlbHNlIGlmIChhbnRpYmFuZGluZyA9PSBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzYwSFopCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fNjBIWjsKKyAgZWxzZSBpZiAoYW50aWJhbmRpbmcgPT0gUGFyYW1ldGVyc19BTlRJQkFORElOR19PRkYpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fT0ZGOworICBlbHNlCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK193aGl0ZV9iYWxhbmNlX3RvX2VudW0gKGNvbnN0IGdjaGFyICogd2hpdGVfYmFsYW5jZSwKKyAgICBHc3RQaG90b2dyYXBoeVdoaXRlQmFsYW5jZU1vZGUgKiBtb2RlKQoreworICBpZiAod2hpdGVfYmFsYW5jZSA9PSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQVVUTykKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX0FVVE87CisgIGVsc2UgaWYgKHdoaXRlX2JhbGFuY2UgPT0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX0lOQ0FOREVTQ0VOVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX1RVTkdTVEVOOworICBlbHNlIGlmICh3aGl0ZV9iYWxhbmNlID09IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9GTFVPUkVTQ0VOVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX0ZMVU9SRVNDRU5UOworICBlbHNlIGlmICh3aGl0ZV9iYWxhbmNlID09IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9XQVJNX0ZMVU9SRVNDRU5UKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfV0FSTV9GTFVPUkVTQ0VOVDsKKyAgZWxzZSBpZiAod2hpdGVfYmFsYW5jZSA9PSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9EQVlMSUdIVDsKKyAgZWxzZSBpZiAod2hpdGVfYmFsYW5jZSA9PSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfQ0xPVURZOworICBlbHNlIGlmICh3aGl0ZV9iYWxhbmNlID09IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9UV0lMSUdIVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX1NVTlNFVDsKKyAgZWxzZSBpZiAod2hpdGVfYmFsYW5jZSA9PSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfU0hBREUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9TSEFERTsKKyAgZWxzZQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitfY29sb3JfZWZmZWN0c190b19lbnVtIChjb25zdCBnY2hhciAqIGNvbG9yX2VmZmVjdCwKKyAgICBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUgKiBtb2RlKQoreworICBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX05PTkUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX05PUk1BTDsKKyAgZWxzZSBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX01PTk8pCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX0dSQVlTQ0FMRTsKKyAgZWxzZSBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX05FR0FUSVZFKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9ORUdBVElWRTsKKyAgZWxzZSBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX1NPTEFSSVpFKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9TT0xBUklaRTsKKyAgZWxzZSBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX1NFUElBKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9TRVBJQTsKKyAgZWxzZSBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX1BPU1RFUklaRSkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfUE9TVEVSSVpFOworICBlbHNlIGlmIChjb2xvcl9lZmZlY3QgPT0gUGFyYW1ldGVyc19FRkZFQ1RfV0hJVEVCT0FSRCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfV0hJVEVCT0FSRDsKKyAgZWxzZSBpZiAoY29sb3JfZWZmZWN0ID09IFBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX0JMQUNLQk9BUkQ7CisgIGVsc2UgaWYgKGNvbG9yX2VmZmVjdCA9PSBQYXJhbWV0ZXJzX0VGRkVDVF9BUVVBKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9BUVVBOworICBlbHNlCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19zY2VuZV9tb2Rlc190b19lbnVtIChjb25zdCBnY2hhciAqIHNjZW5lLCBHc3RQaG90b2dyYXBoeVNjZW5lTW9kZSAqIG1vZGUpCit7CisgIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQVVUTykKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0FVVE87CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9BQ1RJT04pCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9BQ1RJT047CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QT1JUUkFJVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1BPUlRSQUlUOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTEFORFNDQVBFKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfTEFORFNDQVBFOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfTklHSFQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9OSUdIVDsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfTklHSFRfUE9SVFJBSVQ7CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9USEVBVFJFKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfVEhFQVRSRTsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JFQUNIKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfQkVBQ0g7CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9TTk9XKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfU05PVzsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NVTlNFVCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1NVTlNFVDsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NURUFEWVBIT1RPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfU1RFQURZX1BIT1RPOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfRklSRVdPUktTKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfRklSRVdPUktTOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1BPUlRTKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfU1BPUlQ7CisgIGVsc2UgaWYgKHNjZW5lID09IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QQVJUWSkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1BBUlRZOworICBlbHNlIGlmIChzY2VuZSA9PSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQ0FORExFTElHSFQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9DQU5ETEVMSUdIVDsKKyAgZWxzZSBpZiAoc2NlbmUgPT0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JBUkNPREUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9CQVJDT0RFOworICBlbHNlCisgICAgcmV0dXJuIEZBTFNFOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19mbGFzaF9tb2Rlc190b19lbnVtIChjb25zdCBnY2hhciAqIGZsYXNoLCBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSAqIG1vZGUpCit7CisgIGlmIChmbGFzaCA9PSBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfT0ZGKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfT0ZGOworICBlbHNlIGlmIChmbGFzaCA9PSBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfQVVUTykKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX0FVVE87CisgIGVsc2UgaWYgKGZsYXNoID09IFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTikKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX09OOworICBlbHNlIGlmIChmbGFzaCA9PSBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRSkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX1JFRF9FWUU7CisgIGVsc2UgaWYgKGZsYXNoID09IFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9UT1JDSCkKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX0ZJTExfSU47CisgIGVsc2UKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2ZvY3VzX21vZGVzX3RvX2VudW0gKGNvbnN0IGdjaGFyICogZm9jdXMsIEdzdFBob3RvZ3JhcGh5Rm9jdXNNb2RlICogbW9kZSkKK3sKKyAgaWYgKGZvY3VzID09IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9BVVRPKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfQVVUTzsKKyAgZWxzZSBpZiAoZm9jdXMgPT0gUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZKQorICAgICptb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfSU5GSU5JVFk7CisgIGVsc2UgaWYgKGZvY3VzID09IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9NQUNSTykKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX01BQ1JPOworICBlbHNlIGlmIChmb2N1cyA9PSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfRklYRUQpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9IWVBFUkZPQ0FMOworICBlbHNlIGlmIChmb2N1cyA9PSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfRURPRikKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0VYVEVOREVEOworICBlbHNlIGlmIChmb2N1cyA9PSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTykKKyAgICAqbW9kZSA9IEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0NPTlRJTlVPVVNfRVhURU5ERUQ7CisgIGVsc2UgaWYgKGZvY3VzID09IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9DT05USU5VT1VTX1BJQ1RVUkUpCisgICAgKm1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9DT05USU5VT1VTX05PUk1BTDsKKyAgZWxzZQorICAgIHJldHVybiBGQUxTRTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19nZXRfZXZfY29tcGVuc2F0aW9uIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLCBnZmxvYXQgKiBldl9jb21wKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBnaW50IGV2LCBtaW4sIG1heDsKKyAgICAgIGdmbG9hdCBzdGVwOworCisgICAgICBldiA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uIChwYXJhbXMpOworICAgICAgbWluID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9taW5fZXhwb3N1cmVfY29tcGVuc2F0aW9uIChwYXJhbXMpOworICAgICAgbWF4ID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9tYXhfZXhwb3N1cmVfY29tcGVuc2F0aW9uIChwYXJhbXMpOworICAgICAgc3RlcCA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfZXhwb3N1cmVfY29tcGVuc2F0aW9uX3N0ZXAgKHBhcmFtcyk7CisKKyAgICAgIGlmIChzdGVwICE9IDAuMCAmJiBtaW4gIT0gbWF4ICYmIG1pbiA8PSBldiAmJiBldiA8PSBtYXgpIHsKKyAgICAgICAgaWYgKGV2X2NvbXApCisgICAgICAgICAgKmV2X2NvbXAgPSBldiAqIHN0ZXA7CisgICAgICAgIHJldCA9IFRSVUU7CisgICAgICB9CisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX2dldF93aGl0ZV9iYWxhbmNlX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlICogd2JfbW9kZSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKndiID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF93aGl0ZV9iYWxhbmNlIChwYXJhbXMpOworICAgICAgR3N0UGhvdG9ncmFwaHlXaGl0ZUJhbGFuY2VNb2RlIG1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfV0JfTU9ERV9BVVRPOworCisgICAgICBpZiAoX3doaXRlX2JhbGFuY2VfdG9fZW51bSAod2IsICZtb2RlKSkgeworICAgICAgICByZXQgPSBUUlVFOworCisgICAgICAgIGlmICh3Yl9tb2RlKQorICAgICAgICAgICp3Yl9tb2RlID0gbW9kZTsKKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19nZXRfY29sb3VyX3RvbmVfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUNvbG9yVG9uZU1vZGUgKiB0b25lX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICplZmZlY3QgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2NvbG9yX2VmZmVjdCAocGFyYW1zKTsKKyAgICAgIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSBtb2RlID0gR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9OT1JNQUw7CisKKyAgICAgIGlmIChfY29sb3JfZWZmZWN0c190b19lbnVtIChlZmZlY3QsICZtb2RlKSkgeworICAgICAgICByZXQgPSBUUlVFOworCisgICAgICAgIGlmICh0b25lX21vZGUpCisgICAgICAgICAgKnRvbmVfbW9kZSA9IG1vZGU7CisgICAgICB9CisKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfZ2V0X3NjZW5lX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlTY2VuZU1vZGUgKiBzY2VuZV9tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2NlbmVfbW9kZSAmJiBzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpzY2VuZSA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfc2NlbmVfbW9kZSAocGFyYW1zKTsKKyAgICAgIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIG1vZGUgPSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9BVVRPOworCisgICAgICBpZiAoX3NjZW5lX21vZGVzX3RvX2VudW0gKHNjZW5lLCAmbW9kZSkpIHsKKyAgICAgICAgcmV0ID0gVFJVRTsKKworICAgICAgICBpZiAoc2NlbmVfbW9kZSkKKyAgICAgICAgICAqc2NlbmVfbW9kZSA9IG1vZGU7CisgICAgICB9CisKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfZ2V0X2ZsYXNoX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlGbGFzaE1vZGUgKiBmbGFzaF9tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqZmxhc2ggPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZsYXNoX21vZGUgKHBhcmFtcyk7CisgICAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSBtb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfT0ZGOworCisgICAgICBpZiAoX2ZsYXNoX21vZGVzX3RvX2VudW0gKGZsYXNoLCAmbW9kZSkpIHsKKyAgICAgICAgcmV0ID0gVFJVRTsKKworICAgICAgICBpZiAoZmxhc2hfbW9kZSkKKyAgICAgICAgICAqZmxhc2hfbW9kZSA9IG1vZGU7CisgICAgICB9CisKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfZ2V0X3pvb20gKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sIGdmbG9hdCAqIHpvb20pCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIEdMaXN0ICp6b29tX3JhdGlvcyA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfem9vbV9yYXRpb3MgKHBhcmFtcyk7CisgICAgICBnaW50IHpvb21faWR4ID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF96b29tIChwYXJhbXMpOworICAgICAgZ2ludCBtYXhfem9vbSA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfbWF4X3pvb20gKHBhcmFtcyk7CisKKyAgICAgIGlmICh6b29tX3JhdGlvcyAmJiBnX2xpc3RfbGVuZ3RoICh6b29tX3JhdGlvcykgPT0gKG1heF96b29tICsgMSkgJiYKKyAgICAgICAgICB6b29tX2lkeCA+PSAwICYmIHpvb21faWR4IDwgbWF4X3pvb20pIHsKKyAgICAgICAgZ2ludCB6b29tX3ZhbHVlOworCisgICAgICAgIHpvb21fdmFsdWUgPSBHUE9JTlRFUl9UT19JTlQgKGdfbGlzdF9udGhfZGF0YSAoem9vbV9yYXRpb3MsIHpvb21faWR4KSk7CisgICAgICAgIGlmICh6b29tKQorICAgICAgICAgICp6b29tID0gKGdmbG9hdCkgem9vbV92YWx1ZSAvIDEwMC4wOworCisgICAgICAgIHJldCA9IFRSVUU7CisgICAgICB9CisKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc196b29tX3JhdGlvc19mcmVlICh6b29tX3JhdGlvcyk7CisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX2dldF9mbGlja2VyX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlGbGlja2VyUmVkdWN0aW9uTW9kZSAqIGZsaWNrZXJfbW9kZSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKmFudGliYW5kaW5nID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9hbnRpYmFuZGluZyAocGFyYW1zKTsKKyAgICAgIEdzdFBob3RvZ3JhcGh5RmxpY2tlclJlZHVjdGlvbk1vZGUgbW9kZSA9CisgICAgICAgICAgR1NUX1BIT1RPR1JBUEhZX0ZMSUNLRVJfUkVEVUNUSU9OX0FVVE87CisKKyAgICAgIGlmIChfYW50aWJhbmRpbmdfdG9fZW51bSAoYW50aWJhbmRpbmcsICZtb2RlKSkgeworICAgICAgICByZXQgPSBUUlVFOworCisgICAgICAgIGlmIChmbGlja2VyX21vZGUpCisgICAgICAgICAgKmZsaWNrZXJfbW9kZSA9IG1vZGU7CisgICAgICB9CisKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfZ2V0X2ZvY3VzX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUgKiBmb2N1c19tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqZm9jdXMgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X2ZvY3VzX21vZGUgKHBhcmFtcyk7CisgICAgICBHc3RQaG90b2dyYXBoeUZvY3VzTW9kZSBtb2RlID0gR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfQVVUTzsKKworICAgICAgaWYgKF9mb2N1c19tb2Rlc190b19lbnVtIChmb2N1cywgJm1vZGUpKSB7CisgICAgICAgIHJldCA9IFRSVUU7CisKKyAgICAgICAgaWYgKGZvY3VzX21vZGUpCisgICAgICAgICAgKmZvY3VzX21vZGUgPSBtb2RlOworICAgICAgfQorCisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfc2V0X2V2X2NvbXBlbnNhdGlvbiAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywgZ2Zsb2F0IGV2X2NvbXApCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGdpbnQgZXYsIG1pbiwgbWF4OworICAgICAgZ2Zsb2F0IHN0ZXA7CisKKyAgICAgIGV2ID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICBtaW4gPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21pbl9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICBtYXggPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF9leHBvc3VyZV9jb21wZW5zYXRpb24gKHBhcmFtcyk7CisgICAgICBzdGVwID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF9leHBvc3VyZV9jb21wZW5zYXRpb25fc3RlcCAocGFyYW1zKTsKKyAgICAgIGlmIChzdGVwICE9IDAuMCAmJiBtaW4gIT0gbWF4ICYmCisgICAgICAgICAgKG1pbiAqIHN0ZXApIDw9IGV2X2NvbXAgJiYgZXZfY29tcCA8PSAobWF4ICogc3RlcCkpIHsKKyAgICAgICAgZXYgPSBldl9jb21wIC8gc3RlcDsKKyAgICAgICAgaWYgKChldiAqIHN0ZXApID09IGV2X2NvbXApIHsKKyAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2V4cG9zdXJlX2NvbXBlbnNhdGlvbiAocGFyYW1zLCBldik7CisgICAgICAgICAgcmV0ID0gZ3N0X2FoX2NhbWVyYV9zZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhLCBwYXJhbXMpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19zZXRfd2hpdGVfYmFsYW5jZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5V2hpdGVCYWxhbmNlTW9kZSB3Yl9tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqd2hpdGVfYmFsYW5jZSA9IE5VTEw7CisKKyAgICAgIHN3aXRjaCAod2JfbW9kZSkgeworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX0FVVE86CisgICAgICAgICAgd2hpdGVfYmFsYW5jZSA9IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9BVVRPOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX0RBWUxJR0hUOgorICAgICAgICAgIHdoaXRlX2JhbGFuY2UgPSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfREFZTElHSFQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfQ0xPVURZOgorICAgICAgICAgIHdoaXRlX2JhbGFuY2UgPSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfQ0xPVURZX0RBWUxJR0hUOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX1NVTlNFVDoKKyAgICAgICAgICB3aGl0ZV9iYWxhbmNlID0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1RXSUxJR0hUOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX1RVTkdTVEVOOgorICAgICAgICAgIHdoaXRlX2JhbGFuY2UgPSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfSU5DQU5ERVNDRU5UOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9XQl9NT0RFX0ZMVU9SRVNDRU5UOgorICAgICAgICAgIHdoaXRlX2JhbGFuY2UgPSBQYXJhbWV0ZXJzX1dISVRFX0JBTEFOQ0VfRkxVT1JFU0NFTlQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfV0FSTV9GTFVPUkVTQ0VOVDoKKyAgICAgICAgICB3aGl0ZV9iYWxhbmNlID0gUGFyYW1ldGVyc19XSElURV9CQUxBTkNFX1dBUk1fRkxVT1JFU0NFTlQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1dCX01PREVfU0hBREU6CisgICAgICAgICAgd2hpdGVfYmFsYW5jZSA9IFBhcmFtZXRlcnNfV0hJVEVfQkFMQU5DRV9TSEFERTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICB3aGl0ZV9iYWxhbmNlID0gTlVMTDsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgaWYgKHdoaXRlX2JhbGFuY2UpIHsKKyAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF93aGl0ZV9iYWxhbmNlIChwYXJhbXMsIHdoaXRlX2JhbGFuY2UpOworICAgICAgICByZXQgPSBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcyk7CisgICAgICB9CisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3NldF9jb2xvdXJfdG9uZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5Q29sb3JUb25lTW9kZSB0b25lX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpjb2xvcl9lZmZlY3QgPSBOVUxMOworCisgICAgICBzd2l0Y2ggKHRvbmVfbW9kZSkgeworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfTk9STUFMOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX05PTkU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9TRVBJQToKKyAgICAgICAgICBjb2xvcl9lZmZlY3QgPSBQYXJhbWV0ZXJzX0VGRkVDVF9TRVBJQTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX05FR0FUSVZFOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX05FR0FUSVZFOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfR1JBWVNDQUxFOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX01PTk87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9TT0xBUklaRToKKyAgICAgICAgICBjb2xvcl9lZmZlY3QgPSBQYXJhbWV0ZXJzX0VGRkVDVF9TT0xBUklaRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX1BPU1RFUklaRToKKyAgICAgICAgICBjb2xvcl9lZmZlY3QgPSBQYXJhbWV0ZXJzX0VGRkVDVF9QT1NURVJJWkU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9XSElURUJPQVJEOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX1dISVRFQk9BUkQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9CTEFDS0JPQVJEOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX0JMQUNLQk9BUkQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9BUVVBOgorICAgICAgICAgIGNvbG9yX2VmZmVjdCA9IFBhcmFtZXRlcnNfRUZGRUNUX0FRVUE7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9OQVRVUkFMOgorICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfVklWSUQ6CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9DT0xPUlNXQVA6CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9PVVRfT0ZfRk9DVVM6CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0NPTE9SX1RPTkVfTU9ERV9TS1lfQkxVRToKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfQ09MT1JfVE9ORV9NT0RFX0dSQVNTX0dSRUVOOgorICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9DT0xPUl9UT05FX01PREVfU0tJTl9XSElURU46CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgY29sb3JfZWZmZWN0ID0gTlVMTDsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgaWYgKGNvbG9yX2VmZmVjdCkgeworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2NvbG9yX2VmZmVjdCAocGFyYW1zLCBjb2xvcl9lZmZlY3QpOworICAgICAgICByZXQgPSBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcyk7CisgICAgICB9CisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3NldF9zY2VuZV9tb2RlIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLAorICAgIEdzdFBob3RvZ3JhcGh5U2NlbmVNb2RlIHNjZW5lX21vZGUpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIGNvbnN0IGdjaGFyICpzY2VuZSA9IE5VTEw7CisKKyAgICAgIHN3aXRjaCAoc2NlbmVfbW9kZSkgeworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1BPUlRSQUlUOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1BPUlRSQUlUOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0xBTkRTQ0FQRToKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9MQU5EU0NBUEU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfU1BPUlQ6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1BPUlRTOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX05JR0hUOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0FVVE86CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQVVUTzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9BQ1RJT046CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfQUNUSU9OOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX05JR0hUX1BPUlRSQUlUOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX1RIRUFUUkU6CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfVEhFQVRSRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9CRUFDSDoKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9CRUFDSDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9TTk9XOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NOT1c7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfU1VOU0VUOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX1NVTlNFVDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9TVEVBRFlfUEhPVE86CisgICAgICAgICAgc2NlbmUgPSBQYXJhbWV0ZXJzX1NDRU5FX01PREVfU1RFQURZUEhPVE87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfRklSRVdPUktTOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0ZJUkVXT1JLUzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9QQVJUWToKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9QQVJUWTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9DQU5ETEVMSUdIVDoKKyAgICAgICAgICBzY2VuZSA9IFBhcmFtZXRlcnNfU0NFTkVfTU9ERV9DQU5ETEVMSUdIVDsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfU0NFTkVfTU9ERV9CQVJDT0RFOgorICAgICAgICAgIHNjZW5lID0gUGFyYW1ldGVyc19TQ0VORV9NT0RFX0JBUkNPREU7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX1NDRU5FX01PREVfTUFOVUFMOgorICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9TQ0VORV9NT0RFX0NMT1NFVVA6CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgc2NlbmUgPSBOVUxMOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAoc2NlbmUpIHsKKyAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9zY2VuZV9tb2RlIChwYXJhbXMsIHNjZW5lKTsKKyAgICAgICAgcmV0ID0gZ3N0X2FoX2NhbWVyYV9zZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhLCBwYXJhbXMpOworICAgICAgfQorICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX2ZyZWUgKHBhcmFtcyk7CisgICAgfQorICB9CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19zZXRfZmxhc2hfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsYXNoTW9kZSBmbGFzaF9tb2RlKQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAocGhvdG8pOworICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKKworICBpZiAoc2VsZi0+Y2FtZXJhKSB7CisgICAgR3N0QUhDUGFyYW1ldGVycyAqcGFyYW1zOworCisgICAgcGFyYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfcGFyYW1ldGVycyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocGFyYW1zKSB7CisgICAgICBjb25zdCBnY2hhciAqZmxhc2ggPSBOVUxMOworCisgICAgICBzd2l0Y2ggKGZsYXNoX21vZGUpIHsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxBU0hfTU9ERV9BVVRPOgorICAgICAgICAgIGZsYXNoID0gUGFyYW1ldGVyc19GTEFTSF9NT0RFX0FVVE87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZMQVNIX01PREVfT0ZGOgorICAgICAgICAgIGZsYXNoID0gUGFyYW1ldGVyc19GTEFTSF9NT0RFX09GRjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxBU0hfTU9ERV9PTjoKKyAgICAgICAgICBmbGFzaCA9IFBhcmFtZXRlcnNfRkxBU0hfTU9ERV9PTjsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxBU0hfTU9ERV9GSUxMX0lOOgorICAgICAgICAgIGZsYXNoID0gUGFyYW1ldGVyc19GTEFTSF9NT0RFX1RPUkNIOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GTEFTSF9NT0RFX1JFRF9FWUU6CisgICAgICAgICAgZmxhc2ggPSBQYXJhbWV0ZXJzX0ZMQVNIX01PREVfUkVEX0VZRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICBmbGFzaCA9IE5VTEw7CisgICAgICAgICAgYnJlYWs7CisgICAgICB9CisKKyAgICAgIGlmIChmbGFzaCkgeworICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfc2V0X2ZsYXNoX21vZGUgKHBhcmFtcywgZmxhc2gpOworICAgICAgICByZXQgPSBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcyk7CisgICAgICB9CisgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfZnJlZSAocGFyYW1zKTsKKyAgICB9CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3NldF96b29tIChHc3RQaG90b2dyYXBoeSAqIHBob3RvLCBnZmxvYXQgem9vbSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgR0xpc3QgKnpvb21fcmF0aW9zID0gZ3N0X2FoY19wYXJhbWV0ZXJzX2dldF96b29tX3JhdGlvcyAocGFyYW1zKTsKKyAgICAgIGdpbnQgbWF4X3pvb20gPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X21heF96b29tIChwYXJhbXMpOworICAgICAgZ2ludCB6b29tX2lkeCA9IC0xOworCisgICAgICBpZiAoem9vbV9yYXRpb3MgJiYgZ19saXN0X2xlbmd0aCAoem9vbV9yYXRpb3MpID09IChtYXhfem9vbSArIDEpKSB7CisgICAgICAgIGdpbnQgaTsKKyAgICAgICAgZ2ludCB2YWx1ZSA9IHpvb20gKiAxMDA7CisKKyAgICAgICAgZm9yIChpID0gMDsgaSA8IG1heF96b29tICsgMTsgaSsrKSB7CisgICAgICAgICAgZ2ludCB6b29tX3ZhbHVlID0gR1BPSU5URVJfVE9fSU5UIChnX2xpc3RfbnRoX2RhdGEgKHpvb21fcmF0aW9zLCBpKSk7CisKKyAgICAgICAgICBpZiAodmFsdWUgPT0gem9vbV92YWx1ZSkKKyAgICAgICAgICAgIHpvb21faWR4ID0gaTsKKyAgICAgICAgfQorICAgICAgfQorCisgICAgICBpZiAoem9vbV9pZHggIT0gLTEpIHsKKyAgICAgICAgaWYgKHNlbGYtPnNtb290aF96b29tICYmCisgICAgICAgICAgICBnc3RfYWhjX3BhcmFtZXRlcnNfaXNfc21vb3RoX3pvb21fc3VwcG9ydGVkIChwYXJhbXMpKSB7CisgICAgICAgICAgLy8gRmlyc3QsIHdlIG5lZWQgdG8gY2FuY2VsIGFueSBwcmV2aW91cyBzbW9vdGggem9vbSBvcGVyYXRpb24KKyAgICAgICAgICBnc3RfYWhfY2FtZXJhX3N0b3Bfc21vb3RoX3pvb20gKHNlbGYtPmNhbWVyYSk7CisgICAgICAgICAgcmV0ID0gZ3N0X2FoX2NhbWVyYV9zdGFydF9zbW9vdGhfem9vbSAoc2VsZi0+Y2FtZXJhLCB6b29tX2lkeCk7CisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF96b29tIChwYXJhbXMsIHpvb21faWR4KTsKKyAgICAgICAgICByZXQgPSBnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcyk7CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3pvb21fcmF0aW9zX2ZyZWUgKHpvb21fcmF0aW9zKTsKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfc2V0X2ZsaWNrZXJfbW9kZSAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywKKyAgICBHc3RQaG90b2dyYXBoeUZsaWNrZXJSZWR1Y3Rpb25Nb2RlIGZsaWNrZXJfbW9kZSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKmFudGliYW5kaW5nID0gTlVMTDsKKworICAgICAgc3dpdGNoIChmbGlja2VyX21vZGUpIHsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRkxJQ0tFUl9SRURVQ1RJT05fT0ZGOgorICAgICAgICAgIGFudGliYW5kaW5nID0gUGFyYW1ldGVyc19BTlRJQkFORElOR19PRkY7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZMSUNLRVJfUkVEVUNUSU9OXzUwSFo6CisgICAgICAgICAgYW50aWJhbmRpbmcgPSBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzUwSFo7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZMSUNLRVJfUkVEVUNUSU9OXzYwSFo6CisgICAgICAgICAgYW50aWJhbmRpbmcgPSBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HXzYwSFo7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZMSUNLRVJfUkVEVUNUSU9OX0FVVE86CisgICAgICAgICAgYW50aWJhbmRpbmcgPSBQYXJhbWV0ZXJzX0FOVElCQU5ESU5HX0FVVE87CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGRlZmF1bHQ6CisgICAgICAgICAgYW50aWJhbmRpbmcgPSBOVUxMOworICAgICAgICAgIGJyZWFrOworICAgICAgfQorCisgICAgICBpZiAoYW50aWJhbmRpbmcpIHsKKyAgICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9hbnRpYmFuZGluZyAocGFyYW1zLCBhbnRpYmFuZGluZyk7CisgICAgICAgIHJldCA9IGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKTsKKyAgICAgIH0KKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfc2V0X2ZvY3VzX21vZGUgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8sCisgICAgR3N0UGhvdG9ncmFwaHlGb2N1c01vZGUgZm9jdXNfbW9kZSkKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHBob3RvKTsKKyAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdEFIQ1BhcmFtZXRlcnMgKnBhcmFtczsKKworICAgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgICAgaWYgKHBhcmFtcykgeworICAgICAgY29uc3QgZ2NoYXIgKmZvY3VzID0gTlVMTDsKKworICAgICAgc3dpdGNoIChmb2N1c19tb2RlKSB7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfQVVUTzoKKyAgICAgICAgICBmb2N1cyA9IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9BVVRPOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX01BQ1JPOgorICAgICAgICAgIGZvY3VzID0gUGFyYW1ldGVyc19GT0NVU19NT0RFX01BQ1JPOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0lORklOSVRZOgorICAgICAgICAgIGZvY3VzID0gUGFyYW1ldGVyc19GT0NVU19NT0RFX0lORklOSVRZOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0hZUEVSRk9DQUw6CisgICAgICAgICAgZm9jdXMgPSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfRklYRUQ7CisgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1BIT1RPR1JBUEhZX0ZPQ1VTX01PREVfQ09OVElOVU9VU19OT1JNQUw6CisgICAgICAgICAgZm9jdXMgPSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19QSUNUVVJFOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX0NPTlRJTlVPVVNfRVhURU5ERUQ6CisgICAgICAgICAgZm9jdXMgPSBQYXJhbWV0ZXJzX0ZPQ1VTX01PREVfQ09OVElOVU9VU19WSURFTzsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgY2FzZSBHU1RfUEhPVE9HUkFQSFlfRk9DVVNfTU9ERV9FWFRFTkRFRDoKKyAgICAgICAgICBmb2N1cyA9IFBhcmFtZXRlcnNfRk9DVVNfTU9ERV9FRE9GOworICAgICAgICAgIGJyZWFrOworICAgICAgICBjYXNlIEdTVF9QSE9UT0dSQVBIWV9GT0NVU19NT0RFX1BPUlRSQUlUOgorICAgICAgICBkZWZhdWx0OgorICAgICAgICAgIGZvY3VzID0gTlVMTDsKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgaWYgKGZvY3VzKSB7CisgICAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfZm9jdXNfbW9kZSAocGFyYW1zLCBmb2N1cyk7CisgICAgICAgIHJldCA9IGdzdF9haF9jYW1lcmFfc2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSwgcGFyYW1zKTsKKyAgICAgIH0KKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBHc3RQaG90b2dyYXBoeUNhcHMKK2dzdF9haGNfc3JjX2dldF9jYXBhYmlsaXRpZXMgKEdzdFBob3RvZ3JhcGh5ICogcGhvdG8pCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisKKyAgR3N0UGhvdG9ncmFwaHlDYXBzIGNhcHMgPSBHU1RfUEhPVE9HUkFQSFlfQ0FQU19FVl9DT01QIHwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9DQVBTX1dCX01PREUgfCBHU1RfUEhPVE9HUkFQSFlfQ0FQU19UT05FIHwKKyAgICAgIEdTVF9QSE9UT0dSQVBIWV9DQVBTX1NDRU5FIHwgR1NUX1BIT1RPR1JBUEhZX0NBUFNfRkxBU0ggfAorICAgICAgR1NUX1BIT1RPR1JBUEhZX0NBUFNfRk9DVVMgfCBHU1RfUEhPVE9HUkFQSFlfQ0FQU19aT09NOworCisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmICghZ3N0X2FoY19wYXJhbWV0ZXJzX2lzX3pvb21fc3VwcG9ydGVkIChwYXJhbXMpKQorICAgICAgY2FwcyAmPSB+R1NUX1BIT1RPR1JBUEhZX0NBUFNfWk9PTTsKKworICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICB9CisKKyAgcmV0dXJuIGNhcHM7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19vbl9hdXRvX2ZvY3VzIChnYm9vbGVhbiBzdWNjZXNzLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDICh1c2VyX2RhdGEpOworCisgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2VsZiwgIkF1dG8gZm9jdXMgY29tcGxldGVkIDogJWQiLCBzdWNjZXNzKTsKKyAgZ3N0X2VsZW1lbnRfcG9zdF9tZXNzYWdlIChHU1RfRUxFTUVOVCAoc2VsZiksCisgICAgICBnc3RfbWVzc2FnZV9uZXdfY3VzdG9tIChHU1RfTUVTU0FHRV9FTEVNRU5ULCBHU1RfT0JKRUNUIChzZWxmKSwKKyAgICAgICAgICBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSAoR1NUX1BIT1RPR1JBUEhZX0FVVE9GT0NVU19ET05FKSkpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfc2V0X2F1dG9mb2N1cyAoR3N0UGhvdG9ncmFwaHkgKiBwaG90bywgZ2Jvb2xlYW4gb24pCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChwaG90byk7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIGlmIChvbikKKyAgICAgIGdzdF9haF9jYW1lcmFfYXV0b19mb2N1cyAoc2VsZi0+Y2FtZXJhLCBnc3RfYWhjX3NyY19vbl9hdXRvX2ZvY3VzLCBzZWxmKTsKKyAgICBlbHNlCisgICAgICBnc3RfYWhfY2FtZXJhX2NhbmNlbF9hdXRvX2ZvY3VzIChzZWxmLT5jYW1lcmEpOworICB9CisKK30KKworc3RhdGljIGdpbnQKK19jb21wYXJlX2Zvcm1hdHMgKGludCBmMSwgaW50IGYyKQoreworICBpZiAoZjEgPT0gZjIpCisgICAgcmV0dXJuIDA7CisgIC8qIFlWMTIgaGFzIHByaW9yaXR5ICovCisgIGlmIChmMSA9PSBJbWFnZUZvcm1hdF9ZVjEyKQorICAgIHJldHVybiAtMTsKKyAgaWYgKGYyID09IEltYWdlRm9ybWF0X1lWMTIpCisgICAgcmV0dXJuIDE7CisgIC8qIFRoZW4gTlYyMSAqLworICBpZiAoZjEgPT0gSW1hZ2VGb3JtYXRfTlYyMSkKKyAgICByZXR1cm4gLTE7CisgIGlmIChmMiA9PSBJbWFnZUZvcm1hdF9OVjIxKQorICAgIHJldHVybiAxOworICAvKiBUaGVuIHdlIGRvbid0IGNhcmUgKi8KKyAgcmV0dXJuIGYyIC0gZjE7Cit9CisKK3N0YXRpYyBnaW50CitfY29tcGFyZV9zaXplcyAoR3N0QUhDU2l6ZSAqIHMxLCBHc3RBSENTaXplICogczIpCit7CisgIHJldHVybiAoKHMyLT53aWR0aCAqIHMyLT5oZWlnaHQpIC0gKHMxLT53aWR0aCAqIHMxLT5oZWlnaHQpKTsKK30KKworCitzdGF0aWMgZ2ludAorX2NvbXBhcmVfcmFuZ2VzIChpbnQgKnIxLCBpbnQgKnIyKQoreworICBpZiAocjFbMV0gPT0gcjJbMV0pCisgICAgLyogU21hbGxlc3QgcmFuZ2UgKi8KKyAgICByZXR1cm4gKHIxWzFdIC0gcjFbMF0pIC0gKHIyWzFdIC0gcjJbMF0pOworICBlbHNlCisgICAgLyogSGlnaGVzdCBmcHMgKi8KKyAgICByZXR1cm4gcjJbMV0gLSByMVsxXTsKK30KKworc3RhdGljIEdzdENhcHMgKgorZ3N0X2FoY19zcmNfZ2V0Y2FwcyAoR3N0QmFzZVNyYyAqIHNyYywgR3N0Q2FwcyAqIGZpbHRlcikKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHNyYyk7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdzdENhcHMgKnJldCA9IGdzdF9jYXBzX25ld19lbXB0eSAoKTsKKyAgICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXM7CisKKyAgICBwYXJhbXMgPSBnc3RfYWhfY2FtZXJhX2dldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEpOworICAgIGlmIChwYXJhbXMpIHsKKyAgICAgIEdMaXN0ICpmb3JtYXRzLCAqc2l6ZXMsICpyYW5nZXM7CisgICAgICBHTGlzdCAqaSwgKmosICprOworICAgICAgaW50IHByZXZpb3VzX2Zvcm1hdCA9IEltYWdlRm9ybWF0X1VOS05PV047CisKKyAgICAgIGZvcm1hdHMgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9wcmV2aWV3X2Zvcm1hdHMgKHBhcmFtcyk7CisgICAgICBmb3JtYXRzID0gZ19saXN0X3NvcnQgKGZvcm1hdHMsIChHQ29tcGFyZUZ1bmMpIF9jb21wYXJlX2Zvcm1hdHMpOworICAgICAgc2l6ZXMgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9wcmV2aWV3X3NpemVzIChwYXJhbXMpOworICAgICAgc2l6ZXMgPSBnX2xpc3Rfc29ydCAoc2l6ZXMsIChHQ29tcGFyZUZ1bmMpIF9jb21wYXJlX3NpemVzKTsKKyAgICAgIHJhbmdlcyA9IGdzdF9haGNfcGFyYW1ldGVyc19nZXRfc3VwcG9ydGVkX3ByZXZpZXdfZnBzX3JhbmdlIChwYXJhbXMpOworICAgICAgcmFuZ2VzID0gZ19saXN0X3NvcnQgKHJhbmdlcywgKEdDb21wYXJlRnVuYykgX2NvbXBhcmVfcmFuZ2VzKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdXBwb3J0ZWQgcHJldmlldyBmb3JtYXRzOiIpOworCisgICAgICBmb3IgKGkgPSBmb3JtYXRzOyBpOyBpID0gaS0+bmV4dCkgeworICAgICAgICBpbnQgZiA9IEdQT0lOVEVSX1RPX0lOVCAoaS0+ZGF0YSk7CisgICAgICAgIGdjaGFyICpmb3JtYXRfc3RyaW5nID0gTlVMTDsKKyAgICAgICAgR3N0U3RydWN0dXJlICpmb3JtYXQgPSBOVUxMOworCisgICAgICAgIC8qIElnbm9yZSBkdXBsaWNhdGVzICovCisgICAgICAgIGlmIChmID09IHByZXZpb3VzX2Zvcm1hdCkKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICAvKiBDYW4ndCB1c2Ugc3dpdGNoL2Nhc2UgYmVjYXVzZSB0aGUgdmFsdWVzIGFyZSBub3QgY29uc3RhbnRzICovCisgICAgICAgIGlmIChmID09IEltYWdlRm9ybWF0X05WMTYpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiICAgIE5WMTYgKCVkKSIsIGYpOworICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSBnX3N0cmR1cCAoIk5WMTYiKTsKKyAgICAgICAgfSBlbHNlIGlmIChmID09IEltYWdlRm9ybWF0X05WMjEpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiICAgIE5WMjEgKCVkKSIsIGYpOworICAgICAgICAgIGZvcm1hdF9zdHJpbmcgPSBnX3N0cmR1cCAoIk5WMjEiKTsKKyAgICAgICAgfSBlbHNlIGlmIChmID09IEltYWdlRm9ybWF0X1JHQl81NjUpIHsKKyAgICAgICAgICBHc3RWaWRlb0Zvcm1hdCB2Zm9ybWF0OworICAgICAgICAgIHZmb3JtYXQgPSBnc3RfdmlkZW9fZm9ybWF0X2Zyb21fbWFza3MgKDE2LCAxNiwgR19MSVRUTEVfRU5ESUFOLAorICAgICAgICAgICAgICAweGY4MDAsIDB4MDdlMCwgMHgwMDFmLCAweDApOworICAgICAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICIgICAgUkdCNTY1ICglZCkiLCBmKTsKKyAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gZ19zdHJkdXAgKGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nICh2Zm9ybWF0KSk7CisgICAgICAgIH0gZWxzZSBpZiAoZiA9PSBJbWFnZUZvcm1hdF9ZVVkyKSB7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIiAgICBZVVkyICglZCkiLCBmKTsKKyAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gZ19zdHJkdXAgKCJZVVkyIik7CisgICAgICAgIH0gZWxzZSBpZiAoZiA9PSBJbWFnZUZvcm1hdF9ZVjEyKSB7CisgICAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIiAgICBZVjEyICglZCkiLCBmKTsKKyAgICAgICAgICBmb3JtYXRfc3RyaW5nID0gZ19zdHJkdXAgKCJZVjEyIik7CisgICAgICAgIH0KKyAgICAgICAgcHJldmlvdXNfZm9ybWF0ID0gZjsKKworICAgICAgICBpZiAoZm9ybWF0X3N0cmluZykgeworICAgICAgICAgIGZvcm1hdCA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgidmlkZW8veC1yYXciLAorICAgICAgICAgICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgZm9ybWF0X3N0cmluZywgTlVMTCk7CisgICAgICAgICAgZ19mcmVlIChmb3JtYXRfc3RyaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmIChmb3JtYXQpIHsKKyAgICAgICAgICBmb3IgKGogPSBzaXplczsgajsgaiA9IGotPm5leHQpIHsKKyAgICAgICAgICAgIEdzdEFIQ1NpemUgKnMgPSBqLT5kYXRhOworICAgICAgICAgICAgR3N0U3RydWN0dXJlICpzaXplOworCisgICAgICAgICAgICBzaXplID0gZ3N0X3N0cnVjdHVyZV9jb3B5IChmb3JtYXQpOworICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHNpemUsICJ3aWR0aCIsIEdfVFlQRV9JTlQsIHMtPndpZHRoLAorICAgICAgICAgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBzLT5oZWlnaHQsCisgICAgICAgICAgICAgICAgImludGVybGFjZWQiLCBHX1RZUEVfQk9PTEVBTiwgRkFMU0UsCisgICAgICAgICAgICAgICAgInBpeGVsLWFzcGVjdC1yYXRpbyIsIEdTVF9UWVBFX0ZSQUNUSU9OLCAxLCAxLCBOVUxMKTsKKworICAgICAgICAgICAgZm9yIChrID0gcmFuZ2VzOyBrOyBrID0gay0+bmV4dCkgeworICAgICAgICAgICAgICBpbnQgKnJhbmdlID0gay0+ZGF0YTsKKyAgICAgICAgICAgICAgR3N0U3RydWN0dXJlICpzOworCisgICAgICAgICAgICAgIHMgPSBnc3Rfc3RydWN0dXJlX2NvcHkgKHNpemUpOworICAgICAgICAgICAgICBpZiAocmFuZ2VbMF0gPT0gcmFuZ2VbMV0pIHsKKyAgICAgICAgICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OLAorICAgICAgICAgICAgICAgICAgICByYW5nZVswXSwgMTAwMCwgTlVMTCk7CisgICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJmcmFtZXJhdGUiLCBHU1RfVFlQRV9GUkFDVElPTl9SQU5HRSwKKyAgICAgICAgICAgICAgICAgICAgcmFuZ2VbMF0sIDEwMDAsIHJhbmdlWzFdLCAxMDAwLCBOVUxMKTsKKyAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlIChyZXQsIHMpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChzaXplKTsKKyAgICAgICAgICB9CisgICAgICAgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChmb3JtYXQpOworICAgICAgICB9CisgICAgICB9CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU3VwcG9ydGVkIHByZXZpZXcgc2l6ZXM6Iik7CisgICAgICBmb3IgKGkgPSBzaXplczsgaTsgaSA9IGktPm5leHQpIHsKKyAgICAgICAgR3N0QUhDU2l6ZSAqcyA9IGktPmRhdGE7CisKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIiAgICAlZHglZCIsIHMtPndpZHRoLCBzLT5oZWlnaHQpOworICAgICAgfQorICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlN1cHBvcnRlZCBwcmV2aWV3IGZwcyByYW5nZToiKTsKKyAgICAgIGZvciAoaSA9IHJhbmdlczsgaTsgaSA9IGktPm5leHQpIHsKKyAgICAgICAgaW50ICpyYW5nZSA9IGktPmRhdGE7CisKKyAgICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIiAgICBbJWQsICVkXSIsIHJhbmdlWzBdLCByYW5nZVsxXSk7CisgICAgICB9CisKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfcHJldmlld19mb3JtYXRzX2ZyZWUgKGZvcm1hdHMpOworICAgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X3NpemVzX2ZyZWUgKHNpemVzKTsKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19zdXBwb3J0ZWRfcHJldmlld19mcHNfcmFuZ2VfZnJlZSAocmFuZ2VzKTsKKyAgICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworICAgIH0KKworICAgIHJldHVybiByZXQ7CisgIH0gZWxzZSB7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KK30KKworc3RhdGljIEdzdENhcHMgKgorZ3N0X2FoY19zcmNfZml4YXRlIChHc3RCYXNlU3JjICogc3JjLCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHNyYyk7CisgIEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJGaXhhdGluZyA6ICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKworICBjYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAoY2Fwcyk7CisKKyAgLyogV2lkdGgvaGVpZ2h0IHdpbGwgYmUgZml4ZWQgYWxyZWFkeSBoZXJlLCBmb3JtYXQgd2lsbAorICAgKiBiZSBsZWZ0IGZvciBmaXhhdGlvbiBieSB0aGUgZGVmYXVsdCBoYW5kbGVyLgorICAgKiBXZSBvbmx5IGhhdmUgdG8gZml4YXRlIGZyYW1lcmF0ZSBoZXJlLCB0byB0aGUKKyAgICogaGlnaGVzdCBwb3NzaWJsZSBmcmFtZXJhdGUuCisgICAqLworICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChzLCAiZnJhbWVyYXRlIiwgR19NQVhJTlQsIDEpOworCisgIGNhcHMgPSBHU1RfQkFTRV9TUkNfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpeGF0ZSAoc3JjLCBjYXBzKTsKKworICByZXR1cm4gY2FwczsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19zZXRjYXBzIChHc3RCYXNlU3JjICogc3JjLCBHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHNyYyk7CisgIGdib29sZWFuIHJldCA9IEZBTFNFOworICBHc3RBSENQYXJhbWV0ZXJzICpwYXJhbXMgPSBOVUxMOworCisgIGlmICghc2VsZi0+Y2FtZXJhKSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLCAic2V0Y2FwcyBjYWxsZWQgd2l0aG91dCBhIGNhbWVyYSBhdmFpbGFibGUiKTsKKyAgICBnb3RvIGVuZDsKKyAgfQorCisgIHBhcmFtcyA9IGdzdF9haF9jYW1lcmFfZ2V0X3BhcmFtZXRlcnMgKHNlbGYtPmNhbWVyYSk7CisgIGlmIChwYXJhbXMpIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgY29uc3QgZ2NoYXIgKmZvcm1hdF9zdHIgPSBOVUxMOworICAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKKyAgICBnaW50IGZtdDsKKyAgICBnaW50IHdpZHRoLCBoZWlnaHQsIGZwc19uLCBmcHNfZCwgYnVmZmVyX3NpemU7CisgICAgR0xpc3QgKnJhbmdlcywgKmw7CisgICAgZ2ludCByYW5nZV9zaXplID0gR19NQVhJTlQ7CisKKyAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoY2FwcywgMCk7CisKKyAgICBmb3JtYXRfc3RyID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAiZm9ybWF0Iik7CisgICAgZm9ybWF0ID0gZ3N0X3ZpZGVvX2Zvcm1hdF9mcm9tX3N0cmluZyAoZm9ybWF0X3N0cik7CisKKyAgICBnc3Rfc3RydWN0dXJlX2dldF9pbnQgKHMsICJ3aWR0aCIsICZ3aWR0aCk7CisgICAgZ3N0X3N0cnVjdHVyZV9nZXRfaW50IChzLCAiaGVpZ2h0IiwgJmhlaWdodCk7CisgICAgZ3N0X3N0cnVjdHVyZV9nZXRfZnJhY3Rpb24gKHMsICJmcmFtZXJhdGUiLCAmZnBzX24sICZmcHNfZCk7CisKKyAgICBmcHNfbiAqPSAxMDAwIC8gZnBzX2Q7CisKKyAgICAvKiBTZWxlY3QgdGhlIGJlc3QgcmFuZ2UgdGhhdCBjb250YWlucyBvdXIgZnJhbWVyYXRlLgorICAgICAqIFdlICptdXN0KiBzZXQgYSByYW5nZSBvZiB0aG9zZSByZXR1cm5lZCBieSB0aGUgY2FtZXJhCisgICAgICogYWNjb3JkaW5nIHRvIHRoZSBBUEkgZG9jcyBhbmQgY2FuJ3QgdXNlIGEgc3Vic2V0IG9mIGFueQorICAgICAqIG9mIHRob3NlIHJhbmdlcy4KKyAgICAgKiBXZSBjaG9zZSB0aGUgc21hbGxlc3QgcmFuZ2UgdGhhdCBjb250YWlucyB0aGUgdGFyZ2V0CisgICAgICogZnJhbWVyYXRlLgorICAgICAqLworICAgIHNlbGYtPmZwc19tYXggPSBzZWxmLT5mcHNfbWluID0gMDsKKyAgICByYW5nZXMgPSBnc3RfYWhjX3BhcmFtZXRlcnNfZ2V0X3N1cHBvcnRlZF9wcmV2aWV3X2Zwc19yYW5nZSAocGFyYW1zKTsKKyAgICByYW5nZXMgPSBnX2xpc3Rfc29ydCAocmFuZ2VzLCAoR0NvbXBhcmVGdW5jKSBfY29tcGFyZV9yYW5nZXMpOworICAgIGZvciAobCA9IHJhbmdlczsgbDsgbCA9IGwtPm5leHQpIHsKKyAgICAgIGludCAqcmFuZ2UgPSBsLT5kYXRhOworCisgICAgICBpZiAoZnBzX24gPj0gcmFuZ2VbMF0gJiYgZnBzX24gPD0gcmFuZ2VbMV0gJiYKKyAgICAgICAgICByYW5nZV9zaXplID4gKHJhbmdlWzFdIC0gcmFuZ2VbMF0pKSB7CisgICAgICAgIHNlbGYtPmZwc19taW4gPSByYW5nZVswXTsKKyAgICAgICAgc2VsZi0+ZnBzX21heCA9IHJhbmdlWzFdOworICAgICAgICByYW5nZV9zaXplID0gcmFuZ2VbMV0gLSByYW5nZVswXTsKKyAgICAgIH0KKyAgICB9CisgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3N1cHBvcnRlZF9wcmV2aWV3X2Zwc19yYW5nZV9mcmVlIChyYW5nZXMpOworICAgIGlmIChzZWxmLT5mcHNfbWF4ID09IDApIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJDb3VsZG4ndCBmaW5kIGFuIGFwcGxpY2FibGUgRlBTIHJhbmdlIik7CisgICAgICBnb3RvIGVuZDsKKyAgICB9CisKKyAgICBzd2l0Y2ggKGZvcm1hdCkgeworICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1lWMTI6CisgICAgICAgIGZtdCA9IEltYWdlRm9ybWF0X1lWMTI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMjE6CisgICAgICAgIGZtdCA9IEltYWdlRm9ybWF0X05WMjE7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1lVWTI6CisgICAgICAgIGZtdCA9IEltYWdlRm9ybWF0X1lVWTI7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjE2OgorICAgICAgICBmbXQgPSBJbWFnZUZvcm1hdF9SR0JfNTY1OworICAgICAgICBicmVhazsKKyAgICAgICAgLyogR1NUX1ZJREVPX0ZPUk1BVF9OVjE2IGRvZXNuJ3QgZXhpc3QgKi8KKyAgICAgICAgLy9jYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxNjoKKyAgICAgICAgLy9mbXQgPSBJbWFnZUZvcm1hdF9OVjE2OworICAgICAgICAvL2JyZWFrOworICAgICAgZGVmYXVsdDoKKyAgICAgICAgZm10ID0gSW1hZ2VGb3JtYXRfVU5LTk9XTjsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCisgICAgaWYgKGZtdCA9PSBJbWFnZUZvcm1hdF9VTktOT1dOKSB7CisgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsICJ1bnN1cHBvcnRlZCB2aWRlbyBmb3JtYXQgKCVzKSIsIGZvcm1hdF9zdHIpOworICAgICAgZ290byBlbmQ7CisgICAgfQorCisgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9wcmV2aWV3X3NpemUgKHBhcmFtcywgd2lkdGgsIGhlaWdodCk7CisgICAgZ3N0X2FoY19wYXJhbWV0ZXJzX3NldF9wcmV2aWV3X2Zvcm1hdCAocGFyYW1zLCBmbXQpOworICAgIGdzdF9haGNfcGFyYW1ldGVyc19zZXRfcHJldmlld19mcHNfcmFuZ2UgKHBhcmFtcywgc2VsZi0+ZnBzX21pbiwKKyAgICAgICAgc2VsZi0+ZnBzX21heCk7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU2V0dGluZyBjYW1lcmEgcGFyYW1ldGVycyA6ICVkICVkeCVkIEAgWyVmLCAlZl0iLAorICAgICAgICBmbXQsIHdpZHRoLCBoZWlnaHQsIHNlbGYtPmZwc19taW4gLyAxMDAwLjAsIHNlbGYtPmZwc19tYXggLyAxMDAwLjApOworCisgICAgaWYgKCFnc3RfYWhfY2FtZXJhX3NldF9wYXJhbWV0ZXJzIChzZWxmLT5jYW1lcmEsIHBhcmFtcykpIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2VsZiwgIlVuYWJsZSB0byBzZXQgdmlkZW8gcGFyYW1ldGVycyIpOworICAgICAgZ290byBlbmQ7CisgICAgfQorCisgICAgc2VsZi0+d2lkdGggPSB3aWR0aDsKKyAgICBzZWxmLT5oZWlnaHQgPSBoZWlnaHQ7CisgICAgc2VsZi0+Zm9ybWF0ID0gZm10OworICAgIGJ1ZmZlcl9zaXplID0gd2lkdGggKiBoZWlnaHQgKgorICAgICAgICAoKGRvdWJsZSkgZ3N0X2FnX2ltYWdlZm9ybWF0X2dldF9iaXRzX3Blcl9waXhlbCAoZm10KSAvIDgpOworCisgICAgaWYgKGJ1ZmZlcl9zaXplID4gc2VsZi0+YnVmZmVyX3NpemUpIHsKKyAgICAgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgICAgIGdpbnQgaTsKKworICAgICAgZm9yIChpID0gMDsgaSA8IE5VTV9DQUxMQkFDS19CVUZGRVJTOyBpKyspIHsKKyAgICAgICAgamJ5dGVBcnJheSBhcnJheSA9ICgqZW52KS0+TmV3Qnl0ZUFycmF5IChlbnYsIGJ1ZmZlcl9zaXplKTsKKworICAgICAgICBpZiAoYXJyYXkpIHsKKyAgICAgICAgICBnc3RfYWhfY2FtZXJhX2FkZF9jYWxsYmFja19idWZmZXIgKHNlbGYtPmNhbWVyYSwgYXJyYXkpOworICAgICAgICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgYXJyYXkpOworICAgICAgICB9CisgICAgICB9CisgICAgfQorICAgIHNlbGYtPmJ1ZmZlcl9zaXplID0gYnVmZmVyX3NpemU7CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAic2V0dGluZyBidWZmZXIgdzolZCBoOiVkIGJ1ZmZlcl9zaXplOiAlZCIsCisgICAgICAgIHNlbGYtPndpZHRoLCBzZWxmLT5oZWlnaHQsIHNlbGYtPmJ1ZmZlcl9zaXplKTsKKworICAgIHJldCA9IFRSVUU7CisgIH0KKworZW5kOgorICBpZiAocGFyYW1zKQorICAgIGdzdF9haGNfcGFyYW1ldGVyc19mcmVlIChwYXJhbXMpOworCisgIGlmIChyZXQgJiYgc2VsZi0+c3RhcnQpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU3RhcnRpbmcgcHJldmlldyIpOworICAgIHJldCA9IGdzdF9haF9jYW1lcmFfc3RhcnRfcHJldmlldyAoc2VsZi0+Y2FtZXJhKTsKKyAgICBpZiAocmV0KSB7CisgICAgICAvKiBOZWVkIHRvIHJlc2V0IGNhbGxiYWNrcyBhZnRlciBldmVyeSBzdGFydFByZXZpZXcgKi8KKyAgICAgIGdzdF9haF9jYW1lcmFfc2V0X3ByZXZpZXdfY2FsbGJhY2tfd2l0aF9idWZmZXIgKHNlbGYtPmNhbWVyYSwKKyAgICAgICAgICBnc3RfYWhjX3NyY19vbl9wcmV2aWV3X2ZyYW1lLCBzZWxmKTsKKyAgICAgIGdzdF9haF9jYW1lcmFfc2V0X2Vycm9yX2NhbGxiYWNrIChzZWxmLT5jYW1lcmEsIGdzdF9haGNfc3JjX29uX2Vycm9yLAorICAgICAgICAgIHNlbGYpOworICAgICAgc2VsZi0+c3RhcnQgPSBGQUxTRTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIHJldDsKK30KKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3N0QUhDU3JjICpzZWxmOworICBqYnl0ZUFycmF5IGFycmF5OworICBqYnl0ZSAqZGF0YTsKK30gRnJlZUZ1bmNCdWZmZXI7CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19idWZmZXJfZnJlZV9mdW5jIChncG9pbnRlciBwcml2KQoreworICBGcmVlRnVuY0J1ZmZlciAqZGF0YSA9IChGcmVlRnVuY0J1ZmZlciAqKSBwcml2OworICBHc3RBSENTcmMgKnNlbGYgPSBkYXRhLT5zZWxmOworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJyZWxlYXNlICVwLT4lcCIsIGRhdGEsIGRhdGEtPmFycmF5KTsKKworICAoKmVudiktPlJlbGVhc2VCeXRlQXJyYXlFbGVtZW50cyAoZW52LCBkYXRhLT5hcnJheSwgZGF0YS0+ZGF0YSwgSk5JX0FCT1JUKTsKKyAgaWYgKHNlbGYtPmNhbWVyYSkKKyAgICBnc3RfYWhfY2FtZXJhX2FkZF9jYWxsYmFja19idWZmZXIgKHNlbGYtPmNhbWVyYSwgZGF0YS0+YXJyYXkpOworCisgICgqZW52KS0+RGVsZXRlR2xvYmFsUmVmIChlbnYsIGRhdGEtPmFycmF5KTsKKworICBnX3NsaWNlX2ZyZWUgKEZyZWVGdW5jQnVmZmVyLCBkYXRhKTsKKworICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKyAgZ3N0X29iamVjdF91bnJlZiAoc2VsZik7Cit9CisKK3N0YXRpYyB2b2lkCitfZGF0YV9xdWV1ZV9pdGVtX2ZyZWUgKEdzdERhdGFRdWV1ZUl0ZW0gKiBpdGVtKQoreworICBHU1RfREVCVUcgKCJyZWxlYXNlICAlcCIsIGl0ZW0tPm9iamVjdCk7CisKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoR1NUX0JVRkZFUiAoaXRlbS0+b2JqZWN0KSk7CisgIGdfc2xpY2VfZnJlZSAoR3N0RGF0YVF1ZXVlSXRlbSwgaXRlbSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWhjX3NyY19vbl9wcmV2aWV3X2ZyYW1lIChqYnl0ZUFycmF5IGFycmF5LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDICh1c2VyX2RhdGEpOworICBKTklFbnYgKmVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIEdzdEJ1ZmZlciAqYnVmZmVyOworICBHc3REYXRhUXVldWVJdGVtICppdGVtID0gTlVMTDsKKyAgRnJlZUZ1bmNCdWZmZXIgKm1hbGxvY19kYXRhID0gTlVMTDsKKyAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgIEdzdENsb2NrVGltZSBkdXJhdGlvbiA9IDA7CisgIEdzdENsb2NrICpjbG9jazsKKyAgZ2Jvb2xlYW4gcXVldWVkID0gRkFMU0U7CisKKyAgZ19tdXRleF9sb2NrICgmc2VsZi0+bXV0ZXgpOworCisgIGlmIChhcnJheSA9PSBOVUxMKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIlNpemUgb2YgYXJyYXkgaW4gcXVldWUgaXMgdG9vIHNtYWxsLCBkcm9wcGluZyBpdCIpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIGlmICgoY2xvY2sgPSBHU1RfRUxFTUVOVF9DTE9DSyAoc2VsZikpKSB7CisgICAgR3N0Q2xvY2tUaW1lIGJhc2VfdGltZSA9IEdTVF9FTEVNRU5UX0NBU1QgKHNlbGYpLT5iYXNlX3RpbWU7CisgICAgR3N0Q2xvY2tUaW1lIGN1cnJlbnRfdHM7CisKKyAgICBnc3Rfb2JqZWN0X3JlZiAoY2xvY2spOworICAgIGN1cnJlbnRfdHMgPSBnc3RfY2xvY2tfZ2V0X3RpbWUgKGNsb2NrKSAtIGJhc2VfdGltZTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChjbG9jayk7CisgICAgaWYgKEdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChzZWxmLT5wcmV2aW91c190cykpIHsKKyAgICAgIHRpbWVzdGFtcCA9IHNlbGYtPnByZXZpb3VzX3RzOworICAgICAgZHVyYXRpb24gPSBjdXJyZW50X3RzIC0gc2VsZi0+cHJldmlvdXNfdHM7CisgICAgICBzZWxmLT5wcmV2aW91c190cyA9IGN1cnJlbnRfdHM7CisgICAgfSBlbHNlIHsKKyAgICAgIC8qIERyb3AgdGhlIGZpcnN0IGJ1ZmZlciAqLworICAgICAgc2VsZi0+cHJldmlvdXNfdHMgPSBjdXJyZW50X3RzOworICAgICAgZ3N0X2FoX2NhbWVyYV9hZGRfY2FsbGJhY2tfYnVmZmVyIChzZWxmLT5jYW1lcmEsIGFycmF5KTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJkcm9wcGluZyB0aGUgZmlyc3QgYnVmZmVyIik7CisgICAgICBnb3RvIGRvbmU7CisgICAgfQorICB9IGVsc2UgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJlbGVtZW50IGNsb2NrIGhhc24ndCBjcmVhdGVkIHlldC4iKTsKKyAgICBnc3RfYWhfY2FtZXJhX2FkZF9jYWxsYmFja19idWZmZXIgKHNlbGYtPmNhbWVyYSwgYXJyYXkpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJSZWNlaXZlZCBkYXRhIGJ1ZmZlciAlcCIsIGFycmF5KTsKKworICBtYWxsb2NfZGF0YSA9IGdfc2xpY2VfbmV3MCAoRnJlZUZ1bmNCdWZmZXIpOworICBtYWxsb2NfZGF0YS0+c2VsZiA9IGdzdF9vYmplY3RfcmVmIChzZWxmKTsKKyAgbWFsbG9jX2RhdGEtPmFycmF5ID0gKCplbnYpLT5OZXdHbG9iYWxSZWYgKGVudiwgYXJyYXkpOworICBtYWxsb2NfZGF0YS0+ZGF0YSA9ICgqZW52KS0+R2V0Qnl0ZUFycmF5RWxlbWVudHMgKGVudiwgYXJyYXksIE5VTEwpOworCisgIGJ1ZmZlciA9CisgICAgICBnc3RfYnVmZmVyX25ld193cmFwcGVkX2Z1bGwgKEdTVF9NRU1PUllfRkxBR19SRUFET05MWSwgbWFsbG9jX2RhdGEtPmRhdGEsCisgICAgICBzZWxmLT5idWZmZXJfc2l6ZSwgMCwgc2VsZi0+YnVmZmVyX3NpemUsIG1hbGxvY19kYXRhLAorICAgICAgZ3N0X2FoY19zcmNfYnVmZmVyX2ZyZWVfZnVuYyk7CisgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcikgPSBkdXJhdGlvbjsKKyAgR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcikgPSB0aW1lc3RhbXA7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImNyZWF0aW5nIHdyYXBwZWQgYnVmZmVyIChzaXplOiAlZCkiLAorICAgICAgc2VsZi0+YnVmZmVyX3NpemUpOworCisgIGl0ZW0gPSBnX3NsaWNlX25ldzAgKEdzdERhdGFRdWV1ZUl0ZW0pOworICBpdGVtLT5vYmplY3QgPSBHU1RfTUlOSV9PQkpFQ1QgKGJ1ZmZlcik7CisgIGl0ZW0tPnNpemUgPSBnc3RfYnVmZmVyX2dldF9zaXplIChidWZmZXIpOworICBpdGVtLT5kdXJhdGlvbiA9IEdTVF9CVUZGRVJfRFVSQVRJT04gKGJ1ZmZlcik7CisgIGl0ZW0tPnZpc2libGUgPSBUUlVFOworICBpdGVtLT5kZXN0cm95ID0gKEdEZXN0cm95Tm90aWZ5KSBfZGF0YV9xdWV1ZV9pdGVtX2ZyZWU7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIndyYXBwaW5nIGpuaSBhcnJheSAlcC0+JXAgJXAtPiVwIiwgaXRlbSwKKyAgICAgIGl0ZW0tPm9iamVjdCwgbWFsbG9jX2RhdGEsIG1hbGxvY19kYXRhLT5hcnJheSk7CisKKyAgcXVldWVkID0gZ3N0X2RhdGFfcXVldWVfcHVzaCAoc2VsZi0+cXVldWUsIGl0ZW0pOworCitkb25lOgorICBnX211dGV4X3VubG9jayAoJnNlbGYtPm11dGV4KTsKKworICBpZiAoaXRlbSAmJiAhcXVldWVkKSB7CisgICAgR1NUX0lORk9fT0JKRUNUIChzZWxmLCAiY291bGQgbm90IGFkZCBidWZmZXIgdG8gcXVldWUiKTsKKyAgICAvKiBDYW4ndCBhZGQgYnVmZmVyIHRvIHF1ZXVlLiBNdXN0IGJlIGZsdXNoaW5nLiAqLworICAgIF9kYXRhX3F1ZXVlX2l0ZW1fZnJlZSAoaXRlbSk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9haGNfc3JjX29uX2Vycm9yIChnaW50IGVycm9yLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDICh1c2VyX2RhdGEpOworCisgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2VsZiwgIlJlY2VpdmVkIGVycm9yIGNvZGUgOiAlZCIsIGVycm9yKTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19vcGVuIChHc3RBSENTcmMgKiBzZWxmKQoreworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiT3BlbmluZyBjYW1lcmEiKTsKKworICBzZWxmLT5jYW1lcmEgPSBnc3RfYWhfY2FtZXJhX29wZW4gKHNlbGYtPmRldmljZSk7CisKKyAgaWYgKHNlbGYtPmNhbWVyYSkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJPcGVuZWQgY2FtZXJhIik7CisKKyAgICBzZWxmLT50ZXh0dXJlID0gZ3N0X2FnX3N1cmZhY2V0ZXh0dXJlX25ldyAoMCk7CisgICAgZ3N0X2FoX2NhbWVyYV9zZXRfcHJldmlld190ZXh0dXJlIChzZWxmLT5jYW1lcmEsIHNlbGYtPnRleHR1cmUpOworICAgIHNlbGYtPmJ1ZmZlcl9zaXplID0gMDsKKyAgfSBlbHNlIHsKKyAgICBnaW50IG51bV9jYW1zID0gZ3N0X2FoX2NhbWVyYV9nZXRfbnVtYmVyX29mX2NhbWVyYXMgKCk7CisgICAgaWYgKG51bV9jYW1zID4gMCAmJiBzZWxmLT5kZXZpY2UgPCBudW1fY2FtcykgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgKCJVbmFibGUgdG8gb3BlbiBkZXZpY2UgJyVkJy4iLCBzZWxmLT5kZXZpY2UpLCBHU1RfRVJST1JfU1lTVEVNKTsKKyAgICB9IGVsc2UgaWYgKG51bV9jYW1zID4gMCkgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgKCJEZXZpY2UgJyVkJyBkb2VzIG5vdCBleGlzdC4iLCBzZWxmLT5kZXZpY2UpLCBHU1RfRVJST1JfU1lTVEVNKTsKKyAgICB9IGVsc2UgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFJFU09VUkNFLCBOT1RfRk9VTkQsCisgICAgICAgICAgKCJUaGVyZSBhcmUgbm8gY2FtZXJhcyBhdmFpbGFibGUgb24gdGhpcyBkZXZpY2UuIiksIEdTVF9FUlJPUl9TWVNURU0pOworICAgIH0KKyAgfQorCisgIHJldHVybiAoc2VsZi0+Y2FtZXJhICE9IE5VTEwpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FoY19zcmNfY2xvc2UgKEdzdEFIQ1NyYyAqIHNlbGYpCit7CisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBnc3RfYWhfY2FtZXJhX3NldF9lcnJvcl9jYWxsYmFjayAoc2VsZi0+Y2FtZXJhLCBOVUxMLCBOVUxMKTsKKyAgICBnc3RfYWhfY2FtZXJhX3NldF9wcmV2aWV3X2NhbGxiYWNrX3dpdGhfYnVmZmVyIChzZWxmLT5jYW1lcmEsIE5VTEwsIE5VTEwpOworICAgIGdzdF9haF9jYW1lcmFfcmVsZWFzZSAoc2VsZi0+Y2FtZXJhKTsKKyAgICBnc3RfYWhfY2FtZXJhX2ZyZWUgKHNlbGYtPmNhbWVyYSk7CisgIH0KKyAgc2VsZi0+Y2FtZXJhID0gTlVMTDsKKworICBpZiAoc2VsZi0+dGV4dHVyZSkgeworICAgIGdzdF9hZ19zdXJmYWNldGV4dHVyZV9yZWxlYXNlIChzZWxmLT50ZXh0dXJlKTsKKyAgICBnc3RfYWdfc3VyZmFjZXRleHR1cmVfZnJlZSAoc2VsZi0+dGV4dHVyZSk7CisgIH0KKyAgc2VsZi0+dGV4dHVyZSA9IE5VTEw7Cit9CisKK3N0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgorZ3N0X2FoY19zcmNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKK3sKKyAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0ID0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTOworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoZWxlbWVudCk7CisKKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6CisgICAgICBpZiAoIWdzdF9haGNfc3JjX29wZW4gKHNlbGYpKQorICAgICAgICByZXR1cm4gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0ID0gR1NUX0VMRU1FTlRfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmNoYW5nZV9zdGF0ZSAoZWxlbWVudCwgdHJhbnNpdGlvbik7CisKKyAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CisgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX1JFQURZX1RPX05VTEw6CisgICAgICBnc3RfYWhjX3NyY19jbG9zZSAoc2VsZik7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3N0YXJ0IChHc3RCYXNlU3JjICogYnNyYykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKGJzcmMpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdGFydGluZyBwcmV2aWV3Iik7CisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBzZWxmLT5wcmV2aW91c190cyA9IEdTVF9DTE9DS19USU1FX05PTkU7CisgICAgc2VsZi0+ZnBzX21pbiA9IHNlbGYtPmZwc19tYXggPSBzZWxmLT53aWR0aCA9IHNlbGYtPmhlaWdodCA9IDA7CisgICAgc2VsZi0+Zm9ybWF0ID0gSW1hZ2VGb3JtYXRfVU5LTk9XTjsKKyAgICBzZWxmLT5zdGFydCA9IFRSVUU7CisKKyAgICByZXR1cm4gVFJVRTsKKyAgfSBlbHNlIHsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY19zdG9wIChHc3RCYXNlU3JjICogYnNyYykKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKGJzcmMpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdG9wcGluZyBwcmV2aWV3Iik7CisgIGlmIChzZWxmLT5jYW1lcmEpIHsKKyAgICBnc3RfZGF0YV9xdWV1ZV9mbHVzaCAoc2VsZi0+cXVldWUpOworICAgIHNlbGYtPnN0YXJ0ID0gRkFMU0U7CisgICAgZ3N0X2FoX2NhbWVyYV9zZXRfZXJyb3JfY2FsbGJhY2sgKHNlbGYtPmNhbWVyYSwgTlVMTCwgTlVMTCk7CisgICAgcmV0dXJuIGdzdF9haF9jYW1lcmFfc3RvcF9wcmV2aWV3IChzZWxmLT5jYW1lcmEpOworICB9CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9haGNfc3JjX3VubG9jayAoR3N0QmFzZVNyYyAqIGJzcmMpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChic3JjKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiVW5sb2NraW5nIGNyZWF0ZSIpOworICBnc3RfZGF0YV9xdWV1ZV9zZXRfZmx1c2hpbmcgKHNlbGYtPnF1ZXVlLCBUUlVFKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYWhjX3NyY191bmxvY2tfc3RvcCAoR3N0QmFzZVNyYyAqIGJzcmMpCit7CisgIEdzdEFIQ1NyYyAqc2VsZiA9IEdTVF9BSENfU1JDIChic3JjKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiU3RvcHBpbmcgdW5sb2NrIik7CisgIGdzdF9kYXRhX3F1ZXVlX3NldF9mbHVzaGluZyAoc2VsZi0+cXVldWUsIEZBTFNFKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9haGNfc3JjX2NyZWF0ZSAoR3N0UHVzaFNyYyAqIHNyYywgR3N0QnVmZmVyICoqIGJ1ZmZlcikKK3sKKyAgR3N0QUhDU3JjICpzZWxmID0gR1NUX0FIQ19TUkMgKHNyYyk7CisgIEdzdERhdGFRdWV1ZUl0ZW0gKml0ZW07CisKKyAgaWYgKCFnc3RfZGF0YV9xdWV1ZV9wb3AgKHNlbGYtPnF1ZXVlLCAmaXRlbSkpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKHNlbGYsICJlbXB0eSBxdWV1ZSIpOworICAgIHJldHVybiBHU1RfRkxPV19GTFVTSElORzsKKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJjcmVhdGluZyBidWZmZXIgJXAtPiVwIiwgaXRlbSwgaXRlbS0+b2JqZWN0KTsKKworICAqYnVmZmVyID0gR1NUX0JVRkZFUiAoaXRlbS0+b2JqZWN0KTsKKyAgZ19zbGljZV9mcmVlIChHc3REYXRhUXVldWVJdGVtLCBpdGVtKTsKKworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FoY19zcmNfcXVlcnkgKEdzdEJhc2VTcmMgKiBic3JjLCBHc3RRdWVyeSAqIHF1ZXJ5KQoreworICBHc3RBSENTcmMgKnNlbGYgPSBHU1RfQUhDX1NSQyAoYnNyYyk7CisKKyAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CisgICAgY2FzZSBHU1RfUVVFUllfTEFURU5DWTp7CisgICAgICBHc3RDbG9ja1RpbWUgbWluOworCisgICAgICAvKiBBbGxvdyBvZiAxIGZyYW1lIGxhdGVuY3kgYmFzZSBvbiB0aGUgbG9uZ2VyIGZyYW1lIGR1cmF0aW9uICovCisgICAgICBnc3RfcXVlcnlfcGFyc2VfbGF0ZW5jeSAocXVlcnksIE5VTEwsICZtaW4sIE5VTEwpOworICAgICAgbWluID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlIChHU1RfU0VDT05ELCAxMDAwLCBzZWxmLT5mcHNfbWluKTsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsCisgICAgICAgICAgIlJlcG9ydGluZyBsYXRlbmN5IG1pbjogJSIgR1NUX1RJTUVfRk9STUFULCBHU1RfVElNRV9BUkdTIChtaW4pKTsKKyAgICAgIGdzdF9xdWVyeV9zZXRfbGF0ZW5jeSAocXVlcnksIFRSVUUsIG1pbiwgbWluKTsKKworICAgICAgcmV0dXJuIFRSVUU7CisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIHJldHVybiBHU1RfQkFTRV9TUkNfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnF1ZXJ5IChic3JjLCBxdWVyeSk7CisgICAgICBicmVhazsKKyAgfQorCisgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhaGNzcmMuaCBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMyNDk4OQotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YWhjc3JjLmgKQEAgLTAsMCArMSw4OSBAQAorLyogR1N0cmVhbWVyIGFuZHJvaWQuaGFyZHdhcmUuQ2FtZXJhIFNvdXJjZQorICoKKyAqIENvcHlyaWdodCAoQykgMjAxMiwgQ2lzY28gU3lzdGVtcywgSW5jLgorICogICBBdXRob3I6IFlvdW5lc3MgQWxhb3VpIDx5b3VuZXNzLmFsYW91aUBjb2xsYWJvcmEuY28udWs+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBDb2xsYWJvcmEgTHRkLgorICogICBBdXRob3I6IEp1c3RpbiBLaW0gPGp1c3Rpbi5raW1AY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCisgKiBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX0FIQ19TUkNfSF9fCisjZGVmaW5lIF9fR1NUX0FIQ19TUkNfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2Jhc2UvZ3N0cHVzaHNyYy5oPgorI2luY2x1ZGUgPGdzdC9iYXNlL2dzdGRhdGFxdWV1ZS5oPgorCisjaW5jbHVkZSAiZ3N0LWFuZHJvaWQtaGFyZHdhcmUtY2FtZXJhLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9BSENfU1JDIFwKKyAgKGdzdF9haGNfc3JjX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9BSENfU1JDKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksIEdTVF9UWVBFX0FIQ19TUkMsIEdzdEFIQ1NyYykpCisjZGVmaW5lIEdTVF9BSENfU1JDX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBHU1RfVFlQRV9BSENfU1JDLCBHc3RBSENTcmNDbGFzcykpCisjZGVmaW5lIEdTVF9JU19BSENfU1JDKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksIEdTVF9UWVBFX0FIQ19TUkMpKQorI2RlZmluZSBHU1RfSVNfQUhDX1NSQ19DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgR1NUX1RZUEVfQUhDX1NSQykpCisKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFIQ1NyYyBHc3RBSENTcmM7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QUhDU3JjQ2xhc3MgR3N0QUhDU3JjQ2xhc3M7CisKKy8qKgorICogR3N0QUhDU3JjOgorICoKKyAqIE9wYXF1ZSBkYXRhIHN0cnVjdHVyZS4KKyAqLworc3RydWN0IF9Hc3RBSENTcmMKK3sKKyAgLyo8IHByaXZhdGUgPiovCisgIEdzdFB1c2hTcmMgcGFyZW50OworCisgIEdzdEFIQ2FtZXJhICpjYW1lcmE7CisgIEdzdEFHU3VyZmFjZVRleHR1cmUgKnRleHR1cmU7CisgIEdMaXN0ICpkYXRhOworICBHc3REYXRhUXVldWUgKnF1ZXVlOworICBnaW50IGJ1ZmZlcl9zaXplOworICBHc3RDbG9ja1RpbWUgcHJldmlvdXNfdHM7CisgIGdpbnQgZm9ybWF0OworICBnaW50IHdpZHRoOworICBnaW50IGhlaWdodDsKKyAgZ2ludCBmcHNfbWluOworICBnaW50IGZwc19tYXg7CisgIGdib29sZWFuIHN0YXJ0OworICBnYm9vbGVhbiBzbW9vdGhfem9vbTsKKyAgR011dGV4IG11dGV4OworCisgIC8qIFByb3BlcnRpZXMgKi8KKyAgZ2ludCBkZXZpY2U7Cit9OworCitzdHJ1Y3QgX0dzdEFIQ1NyY0NsYXNzCit7CisgIEdzdFB1c2hTcmNDbGFzcyBwYXJlbnRfY2xhc3M7CisgIEdMaXN0ICpwcm9iZV9wcm9wZXJ0aWVzOworfTsKKworR1R5cGUgZ3N0X2FoY19zcmNfZ2V0X3R5cGUgKHZvaWQpOworCitHX0VORF9ERUNMUworI2VuZGlmIC8qIF9fR1NUX0FIQ19TUkNfSF9fICovCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuYwppbmRleCAwNzhlMjhhLi5jODZlNTE5IDEwMDY0NAotLS0gYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5jCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmMKQEAgLTI5LDYgKzI5LDggQEAKICNkZWZpbmUgb3JjX21lbWNweSBtZW1jcHkKICNlbmRpZgogCisjaW5jbHVkZSAiZ3N0YWhjc3JjLmgiCisKICNpbmNsdWRlICJnc3RhbWMuaCIKICNpbmNsdWRlICJnc3RhbWMtY29uc3RhbnRzLmgiCiAKQEAgLTE4NSw4ICsxODcsOCBAQAogfQogCiBnYm9vbGVhbgotZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKEdzdEFtY0NvZGVjICogY29kZWMsIEdzdEFtY0Zvcm1hdCAqIGZvcm1hdCwgZ2ludCBmbGFncywKLSAgICBHRXJyb3IgKiogZXJyKQorZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKEdzdEFtY0NvZGVjICogY29kZWMsIEdzdEFtY0Zvcm1hdCAqIGZvcm1hdCwKKyAgICBqb2JqZWN0IHN1cmZhY2UsIGdpbnQgZmxhZ3MsIEdFcnJvciAqKiBlcnIpCiB7CiAgIEpOSUVudiAqZW52OwogCkBAIC0xOTUsNyArMTk3LDcgQEAKIAogICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOwogICByZXR1cm4gZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCBlcnIsIGNvZGVjLT5vYmplY3QsCi0gICAgICBtZWRpYV9jb2RlYy5jb25maWd1cmUsIGZvcm1hdC0+b2JqZWN0LCBOVUxMLCBOVUxMLCBmbGFncyk7CisgICAgICBtZWRpYV9jb2RlYy5jb25maWd1cmUsIGZvcm1hdC0+b2JqZWN0LCBzdXJmYWNlLCBOVUxMLCBmbGFncyk7CiB9CiAKIEdzdEFtY0Zvcm1hdCAqCkBAIC0zNjAsMjggKzM2MiwzMyBAQAogCiAgIGlmICghbWVkaWFfY29kZWMuZ2V0X291dHB1dF9idWZmZXIpIHsKICAgICBnX3JldHVybl92YWxfaWZfZmFpbCAoaW5kZXggPCBjb2RlYy0+bl9vdXRwdXRfYnVmZmVycyAmJiBpbmRleCA+PSAwLCBOVUxMKTsKLSAgICByZXR1cm4gZ3N0X2FtY19idWZmZXJfY29weSAoJmNvZGVjLT5vdXRwdXRfYnVmZmVyc1tpbmRleF0pOworICAgIGlmIChjb2RlYy0+b3V0cHV0X2J1ZmZlcnNbaW5kZXhdLm9iamVjdCkKKyAgICAgIHJldHVybiBnc3RfYW1jX2J1ZmZlcl9jb3B5ICgmY29kZWMtPm91dHB1dF9idWZmZXJzW2luZGV4XSk7CisgICAgZWxzZQorICAgICAgcmV0dXJuIE5VTEw7CiAgIH0KIAogICBpZiAoIWdzdF9hbWNfam5pX2NhbGxfb2JqZWN0X21ldGhvZCAoZW52LCBlcnIsIGNvZGVjLT5vYmplY3QsCiAgICAgICAgICAgbWVkaWFfY29kZWMuZ2V0X291dHB1dF9idWZmZXIsICZidWZmZXIsIGluZGV4KSkKICAgICBnb3RvIGRvbmU7CiAKLSAgcmV0ID0gZ19uZXcwIChHc3RBbWNCdWZmZXIsIDEpOwotICByZXQtPm9iamVjdCA9IGdzdF9hbWNfam5pX29iamVjdF9tYWtlX2dsb2JhbCAoZW52LCBidWZmZXIpOwotICBpZiAoIXJldC0+b2JqZWN0KSB7Ci0gICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCi0gICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBjcmVhdGUgZ2xvYmFsIGJ1ZmZlciByZWZlcmVuY2UiKTsKLSAgICBnb3RvIGVycm9yOwotICB9CisgIGlmIChidWZmZXIgIT0gTlVMTCkgeworICAgIHJldCA9IGdfbmV3MCAoR3N0QW1jQnVmZmVyLCAxKTsKKyAgICByZXQtPm9iamVjdCA9IGdzdF9hbWNfam5pX29iamVjdF9tYWtlX2dsb2JhbCAoZW52LCBidWZmZXIpOworICAgIGlmICghcmV0LT5vYmplY3QpIHsKKyAgICAgIGdzdF9hbWNfam5pX3NldF9lcnJvciAoZW52LCBlcnIsIEdTVF9MSUJSQVJZX0VSUk9SLAorICAgICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBjcmVhdGUgZ2xvYmFsIGJ1ZmZlciByZWZlcmVuY2UiKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogCi0gIHJldC0+ZGF0YSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQWRkcmVzcyAoZW52LCByZXQtPm9iamVjdCk7Ci0gIGlmICghcmV0LT5kYXRhKSB7Ci0gICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCi0gICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBnZXQgYnVmZmVyIGFkZHJlc3MiKTsKLSAgICBnb3RvIGVycm9yOworICAgIHJldC0+ZGF0YSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQWRkcmVzcyAoZW52LCByZXQtPm9iamVjdCk7CisgICAgaWYgKCFyZXQtPmRhdGEpIHsKKyAgICAgIGdzdF9hbWNfam5pX3NldF9lcnJvciAoZW52LCBlcnIsIEdTVF9MSUJSQVJZX0VSUk9SLAorICAgICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBnZXQgYnVmZmVyIGFkZHJlc3MiKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJldC0+c2l6ZSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQ2FwYWNpdHkgKGVudiwgcmV0LT5vYmplY3QpOwogICB9Ci0gIHJldC0+c2l6ZSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQ2FwYWNpdHkgKGVudiwgcmV0LT5vYmplY3QpOwogCiBkb25lOgogCkBAIC00MzYsMjggKzQ0MywzMyBAQAogCiAgIGlmICghbWVkaWFfY29kZWMuZ2V0X2lucHV0X2J1ZmZlcikgewogICAgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpbmRleCA8IGNvZGVjLT5uX2lucHV0X2J1ZmZlcnMgJiYgaW5kZXggPj0gMCwgTlVMTCk7Ci0gICAgcmV0dXJuIGdzdF9hbWNfYnVmZmVyX2NvcHkgKCZjb2RlYy0+aW5wdXRfYnVmZmVyc1tpbmRleF0pOworICAgIGlmIChjb2RlYy0+aW5wdXRfYnVmZmVyc1tpbmRleF0ub2JqZWN0KQorICAgICAgcmV0dXJuIGdzdF9hbWNfYnVmZmVyX2NvcHkgKCZjb2RlYy0+aW5wdXRfYnVmZmVyc1tpbmRleF0pOworICAgIGVsc2UKKyAgICAgIHJldHVybiBOVUxMOwogICB9CiAKICAgaWYgKCFnc3RfYW1jX2puaV9jYWxsX29iamVjdF9tZXRob2QgKGVudiwgZXJyLCBjb2RlYy0+b2JqZWN0LAogICAgICAgICAgIG1lZGlhX2NvZGVjLmdldF9pbnB1dF9idWZmZXIsICZidWZmZXIsIGluZGV4KSkKICAgICBnb3RvIGRvbmU7CiAKLSAgcmV0ID0gZ19uZXcwIChHc3RBbWNCdWZmZXIsIDEpOwotICByZXQtPm9iamVjdCA9IGdzdF9hbWNfam5pX29iamVjdF9tYWtlX2dsb2JhbCAoZW52LCBidWZmZXIpOwotICBpZiAoIXJldC0+b2JqZWN0KSB7Ci0gICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCi0gICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBjcmVhdGUgZ2xvYmFsIGJ1ZmZlciByZWZlcmVuY2UiKTsKLSAgICBnb3RvIGVycm9yOwotICB9CisgIGlmIChidWZmZXIgIT0gTlVMTCkgeworICAgIHJldCA9IGdfbmV3MCAoR3N0QW1jQnVmZmVyLCAxKTsKKyAgICByZXQtPm9iamVjdCA9IGdzdF9hbWNfam5pX29iamVjdF9tYWtlX2dsb2JhbCAoZW52LCBidWZmZXIpOworICAgIGlmICghcmV0LT5vYmplY3QpIHsKKyAgICAgIGdzdF9hbWNfam5pX3NldF9lcnJvciAoZW52LCBlcnIsIEdTVF9MSUJSQVJZX0VSUk9SLAorICAgICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBjcmVhdGUgZ2xvYmFsIGJ1ZmZlciByZWZlcmVuY2UiKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQogCi0gIHJldC0+ZGF0YSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQWRkcmVzcyAoZW52LCByZXQtPm9iamVjdCk7Ci0gIGlmICghcmV0LT5kYXRhKSB7Ci0gICAgZ3N0X2FtY19qbmlfc2V0X2Vycm9yIChlbnYsIGVyciwgR1NUX0xJQlJBUllfRVJST1IsCi0gICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBnZXQgYnVmZmVyIGFkZHJlc3MiKTsKLSAgICBnb3RvIGVycm9yOworICAgIHJldC0+ZGF0YSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQWRkcmVzcyAoZW52LCByZXQtPm9iamVjdCk7CisgICAgaWYgKCFyZXQtPmRhdGEpIHsKKyAgICAgIGdzdF9hbWNfam5pX3NldF9lcnJvciAoZW52LCBlcnIsIEdTVF9MSUJSQVJZX0VSUk9SLAorICAgICAgICAgIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwgIkZhaWxlZCB0byBnZXQgYnVmZmVyIGFkZHJlc3MiKTsKKyAgICAgIGdvdG8gZXJyb3I7CisgICAgfQorICAgIHJldC0+c2l6ZSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQ2FwYWNpdHkgKGVudiwgcmV0LT5vYmplY3QpOwogICB9Ci0gIHJldC0+c2l6ZSA9ICgqZW52KS0+R2V0RGlyZWN0QnVmZmVyQ2FwYWNpdHkgKGVudiwgcmV0LT5vYmplY3QpOwogCiBkb25lOgogCkBAIC01OTEsNyArNjAzLDcgQEAKIAogZ2Jvb2xlYW4KIGdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChHc3RBbWNDb2RlYyAqIGNvZGVjLCBnaW50IGluZGV4LAotICAgIEdFcnJvciAqKiBlcnIpCisgICAgZ2Jvb2xlYW4gcmVuZGVyLCBHRXJyb3IgKiogZXJyKQogewogICBKTklFbnYgKmVudjsKIApAQCAtNTk5LDcgKzYxMSw3IEBACiAKICAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKICAgcmV0dXJuIGdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgZXJyLCBjb2RlYy0+b2JqZWN0LAotICAgICAgbWVkaWFfY29kZWMucmVsZWFzZV9vdXRwdXRfYnVmZmVyLCBpbmRleCwgSk5JX0ZBTFNFKTsKKyAgICAgIG1lZGlhX2NvZGVjLnJlbGVhc2Vfb3V0cHV0X2J1ZmZlciwgaW5kZXgsIHJlbmRlcik7CiB9CiAKIEdzdEFtY0Zvcm1hdCAqCkBAIC0xNTY3LDYgKzE1NzksNyBAQAogICAgICAgZ290byBuZXh0X2NvZGVjOwogICAgIH0KICAgICBnc3RfY29kZWNfaW5mby0+aXNfZW5jb2RlciA9IGlzX2VuY29kZXI7CisgICAgZ3N0X2NvZGVjX2luZm8tPmdsX291dHB1dF9vbmx5ID0gRkFMU0U7CiAKICAgICBzdXBwb3J0ZWRfdHlwZXMgPQogICAgICAgICAoKmVudiktPkNhbGxPYmplY3RNZXRob2QgKGVudiwgY29kZWNfaW5mbywgZ2V0X3N1cHBvcnRlZF90eXBlc19pZCk7CkBAIC0xNzEwLDEyICsxNzIzLDEzIEBACiAgICAgICAgICAgZ290byBuZXh0X3N1cHBvcnRlZF90eXBlOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKCFpZ25vcmVfdW5rbm93bl9jb2xvcl9mb3JtYXRzCi0gICAgICAgICAgICAmJiAhYWNjZXB0ZWRfY29sb3JfZm9ybWF0cyAoZ3N0X2NvZGVjX3R5cGUsIGlzX2VuY29kZXIpKSB7Ci0gICAgICAgICAgR1NUX0VSUk9SICgiJXMgY29kZWMgaGFzIHVua25vd24gY29sb3IgZm9ybWF0cywgaWdub3JpbmciLAotICAgICAgICAgICAgICBpc19lbmNvZGVyID8gIkVuY29kZXIiIDogIkRlY29kZXIiKTsKLSAgICAgICAgICB2YWxpZF9jb2RlYyA9IEZBTFNFOwotICAgICAgICAgIGdvdG8gbmV4dF9zdXBwb3J0ZWRfdHlwZTsKKyAgICAgICAgaWYgKCFhY2NlcHRlZF9jb2xvcl9mb3JtYXRzIChnc3RfY29kZWNfdHlwZSwgaXNfZW5jb2RlcikpIHsKKyAgICAgICAgICBpZiAoIWlnbm9yZV91bmtub3duX2NvbG9yX2Zvcm1hdHMpIHsKKyAgICAgICAgICAgIGdzdF9jb2RlY19pbmZvLT5nbF9vdXRwdXRfb25seSA9IFRSVUU7CisgICAgICAgICAgICBHU1RfV0FSTklORworICAgICAgICAgICAgICAgICgiJXMgJXMgaGFzIHVua25vd24gY29sb3IgZm9ybWF0cywgb25seSBkaXJlY3QgcmVuZGVyaW5nIHdpbGwgYmUgc3VwcG9ydGVkIiwKKyAgICAgICAgICAgICAgICBnc3RfY29kZWNfdHlwZS0+bWltZSwgaXNfZW5jb2RlciA/ICJlbmNvZGVyIiA6ICJkZWNvZGVyIik7CisgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICB9CiAKQEAgLTIwMDQsOCArMjAxOCwxMCBAQAogICBmb3IgKGkgPSAwOyBpIDwgdHlwZS0+bl9jb2xvcl9mb3JtYXRzOyBpKyspIHsKICAgICBnYm9vbGVhbiBmb3VuZCA9IEZBTFNFOwogICAgIC8qIFdlIGlnbm9yZSB0aGlzIG9uZSAqLwotICAgIGlmICh0eXBlLT5jb2xvcl9mb3JtYXRzW2ldID09IENPTE9SX0Zvcm1hdEFuZHJvaWRPcGFxdWUpCisgICAgaWYgKHR5cGUtPmNvbG9yX2Zvcm1hdHNbaV0gPT0gQ09MT1JfRm9ybWF0QW5kcm9pZE9wYXF1ZSkgewogICAgICAgYWxsLS07CisgICAgICBjb250aW51ZTsKKyAgICB9CiAKICAgICBmb3IgKGogPSAwOyBqIDwgR19OX0VMRU1FTlRTIChjb2xvcl9mb3JtYXRfbWFwcGluZ190YWJsZSk7IGorKykgewogICAgICAgaWYgKGNvbG9yX2Zvcm1hdF9tYXBwaW5nX3RhYmxlW2pdLmNvbG9yX2Zvcm1hdCA9PSB0eXBlLT5jb2xvcl9mb3JtYXRzW2ldKSB7CkBAIC0yMDE2LDcgKzIwMzIsNyBAQAogICAgIH0KIAogICAgIGlmICghZm91bmQpIHsKLSAgICAgIEdTVF9ERUJVRyAoIlVua25vd24gY29sb3IgZm9ybWF0IDB4JXgsIGlnbm9yaW5nIiwgdHlwZS0+Y29sb3JfZm9ybWF0c1tpXSk7CisgICAgICBHU1RfRVJST1IgKCJVbmtub3duIGNvbG9yIGZvcm1hdCAweCV4LCBpZ25vcmluZyIsIHR5cGUtPmNvbG9yX2Zvcm1hdHNbaV0pOwogICAgIH0KICAgfQogCkBAIC0yMjkyLDggKzIzMDgsOSBAQAogICAgIGdvdG8gZG9uZTsKICAgfQogCi0gIEdTVF9ERUJVRyAoIlNpemVzIG5vdCBlcXVhbCAoJWQgdnMgJWQpLCBkb2luZyBzbG93IGxpbmUtYnktbGluZSBjb3B5aW5nIiwKLSAgICAgIGNidWZmZXJfaW5mby0+c2l6ZSwgZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAodmJ1ZmZlcikpOworICBHU1RfREVCVUcgKCJTaXplcyBub3QgZXF1YWwgKCVkIHZzICUiIEdfR1NJWkVfRk9STUFUCisgICAgICAiKSwgZG9pbmcgc2xvdyBsaW5lLWJ5LWxpbmUgY29weWluZyIsIGNidWZmZXJfaW5mby0+c2l6ZSwKKyAgICAgIGdzdF9idWZmZXJfZ2V0X3NpemUgKHZidWZmZXIpKTsKIAogICAvKiBEaWZmZXJlbnQgdmlkZW8gZm9ybWF0LCB0cnkgdG8gY29udmVydCAqLwogICBzd2l0Y2ggKGNpbmZvLT5jb2xvcl9mb3JtYXQpIHsKQEAgLTMzMTEsNyArMzMyOCwzNCBAQAogICBpZiAoIXJlZ2lzdGVyX2NvZGVjcyAocGx1Z2luKSkKICAgICByZXR1cm4gRkFMU0U7CiAKKyAgaWYgKCFnc3RfYW5kcm9pZF9ncmFwaGljc19zdXJmYWNldGV4dHVyZV9pbml0ICgpKSB7CisgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGluaXQgYW5kcm9pZCBzdXJmYWNlIHRleHR1cmUiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoIWdzdF9hbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0X2luaXQgKCkpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gaW5pdCBhbmRyb2lkIGltYWdlIGZvcm1hdCIpOworICAgIGdvdG8gZmFpbGVkX3N1cmZhY2V0ZXh0dXJlOworICB9CisKKyAgaWYgKCFnc3RfYW5kcm9pZF9oYXJkd2FyZV9jYW1lcmFfaW5pdCAoKSkgeworICAgIGdvdG8gZmFpbGVkX2dyYXBoaWNzX2ltYWdlZm9ybWF0OworICB9CisKKyAgaWYgKCFnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiYWhjc3JjIiwgR1NUX1JBTktfTk9ORSwgR1NUX1RZUEVfQUhDX1NSQykpIHsKKyAgICBHU1RfRVJST1IgKCJGYWlsZWQgdG8gcmVnaXN0ZXIgYW5kcm9pZCBjYW1lcmEgc291cmNlIik7CisgICAgZ290byBmYWlsZWRfaGFyZHdhcmVfY2FtZXJhOworICB9CisKICAgcmV0dXJuIFRSVUU7CisKK2ZhaWxlZF9oYXJkd2FyZV9jYW1lcmE6CisgIGdzdF9hbmRyb2lkX2hhcmR3YXJlX2NhbWVyYV9kZWluaXQgKCk7CitmYWlsZWRfZ3JhcGhpY3NfaW1hZ2Vmb3JtYXQ6CisgIGdzdF9hbmRyb2lkX2dyYXBoaWNzX2ltYWdlZm9ybWF0X2RlaW5pdCAoKTsKK2ZhaWxlZF9zdXJmYWNldGV4dHVyZToKKyAgZ3N0X2FuZHJvaWRfZ3JhcGhpY3Nfc3VyZmFjZXRleHR1cmVfZGVpbml0ICgpOworICByZXR1cm4gRkFMU0U7CiB9CiAKIHZvaWQKQEAgLTM0NTgsNyArMzUwMiw4IEBACiAgICAgICAgICAgICAgIGdzdF9hbWNfY29sb3JfZm9ybWF0X3RvX3ZpZGVvX2Zvcm1hdCAoY29kZWNfaW5mbywKICAgICAgICAgICAgICAgdHlwZS0+bWltZSwgdHlwZS0+Y29sb3JfZm9ybWF0c1tqXSk7CiAgICAgICAgICAgaWYgKGZvcm1hdCA9PSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pIHsKLSAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiVW5rbm93biBjb2xvciBmb3JtYXQgMHglMDh4IiwgdHlwZS0+Y29sb3JfZm9ybWF0c1tqXSk7CisgICAgICAgICAgICBHU1RfV0FSTklORyAoIlVua25vd24gY29sb3IgZm9ybWF0IDB4JTA4eCBmb3IgY29kZWMgJXMiLAorICAgICAgICAgICAgICAgIHR5cGUtPmNvbG9yX2Zvcm1hdHNbal0sIHR5cGUtPm1pbWUpOwogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgfQogCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5oIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWMuaAppbmRleCBhM2ZiOWJjLi4zODNlYjQyIDEwMDY0NAotLS0gYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtYy5oCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jLmgKQEAgLTUzLDYgKzUzLDcgQEAKIHN0cnVjdCBfR3N0QW1jQ29kZWNJbmZvIHsKICAgZ2NoYXIgKm5hbWU7CiAgIGdib29sZWFuIGlzX2VuY29kZXI7CisgIGdib29sZWFuIGdsX291dHB1dF9vbmx5OwogICBHc3RBbWNDb2RlY1R5cGUgKnN1cHBvcnRlZF90eXBlczsKICAgZ2ludCBuX3N1cHBvcnRlZF90eXBlczsKIH07CkBAIC04Miw3ICs4Myw3IEBACiBHc3RBbWNDb2RlYyAqIGdzdF9hbWNfY29kZWNfbmV3IChjb25zdCBnY2hhciAqbmFtZSwgR0Vycm9yICoqZXJyKTsKIHZvaWQgZ3N0X2FtY19jb2RlY19mcmVlIChHc3RBbWNDb2RlYyAqIGNvZGVjKTsKIAotZ2Jvb2xlYW4gZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKEdzdEFtY0NvZGVjICogY29kZWMsIEdzdEFtY0Zvcm1hdCAqIGZvcm1hdCwgZ2ludCBmbGFncywgR0Vycm9yICoqZXJyKTsKK2dib29sZWFuIGdzdF9hbWNfY29kZWNfY29uZmlndXJlIChHc3RBbWNDb2RlYyAqIGNvZGVjLCBHc3RBbWNGb3JtYXQgKiBmb3JtYXQsIGpvYmplY3Qgc3VyZmFjZSwgZ2ludCBmbGFncywgR0Vycm9yICoqZXJyKTsKIEdzdEFtY0Zvcm1hdCAqIGdzdF9hbWNfY29kZWNfZ2V0X291dHB1dF9mb3JtYXQgKEdzdEFtY0NvZGVjICogY29kZWMsIEdFcnJvciAqKmVycik7CiAKIGdib29sZWFuIGdzdF9hbWNfY29kZWNfc3RhcnQgKEdzdEFtY0NvZGVjICogY29kZWMsIEdFcnJvciAqKmVycik7CkBAIC05Nyw3ICs5OCw3IEBACiBnaW50IGdzdF9hbWNfY29kZWNfZGVxdWV1ZV9vdXRwdXRfYnVmZmVyIChHc3RBbWNDb2RlYyAqIGNvZGVjLCBHc3RBbWNCdWZmZXJJbmZvICppbmZvLCBnaW50NjQgdGltZW91dFVzLCBHRXJyb3IgKiplcnIpOwogCiBnYm9vbGVhbiBnc3RfYW1jX2NvZGVjX3F1ZXVlX2lucHV0X2J1ZmZlciAoR3N0QW1jQ29kZWMgKiBjb2RlYywgZ2ludCBpbmRleCwgY29uc3QgR3N0QW1jQnVmZmVySW5mbyAqaW5mbywgR0Vycm9yICoqZXJyKTsKLWdib29sZWFuIGdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChHc3RBbWNDb2RlYyAqIGNvZGVjLCBnaW50IGluZGV4LCBHRXJyb3IgKiplcnIpOworZ2Jvb2xlYW4gZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKEdzdEFtY0NvZGVjICogY29kZWMsIGdpbnQgaW5kZXgsIGdib29sZWFuIHJlbmRlciwgR0Vycm9yICoqZXJyKTsKIAogCiBHc3RBbWNGb3JtYXQgKiBnc3RfYW1jX2Zvcm1hdF9uZXdfYXVkaW8gKGNvbnN0IGdjaGFyICptaW1lLCBnaW50IHNhbXBsZV9yYXRlLCBnaW50IGNoYW5uZWxzLCBHRXJyb3IgKiplcnIpOwpAQCAtMTY2LDggKzE2NywxMCBAQAogZ3VpbnQzMiBnc3RfYW1jX2F1ZGlvX2NoYW5uZWxfbWFza19mcm9tX3Bvc2l0aW9ucyAoR3N0QXVkaW9DaGFubmVsUG9zaXRpb24gKnBvc2l0aW9ucywgZ2ludCBjaGFubmVscyk7CiB2b2lkIGdzdF9hbWNfY29kZWNfaW5mb190b19jYXBzIChjb25zdCBHc3RBbWNDb2RlY0luZm8gKiBjb2RlY19pbmZvLCBHc3RDYXBzICoqc2lua19jYXBzLCBHc3RDYXBzICoqc3JjX2NhcHMpOwogCi0jZGVmaW5lIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IoZWwsIGVycikgR19TVE1UX1NUQVJUIHsgXAotICBnY2hhciAqX19kYmcgPSBnX3N0cmR1cCAoZXJyLT5tZXNzYWdlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorI2RlZmluZSBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SKGVsLCBlcnIpIEdfU1RNVF9TVEFSVCB7ICAgICAgICAgICAgXAorICBnY2hhciAqX19kYmc7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBnX2Fzc2VydCAoZXJyICE9IE5VTEwpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBfX2RiZyA9IGdfc3RyZHVwIChlcnItPm1lc3NhZ2UpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBHU1RfV0FSTklOR19PQkpFQ1QgKGVsLCAiZXJyb3I6ICVzIiwgX19kYmcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgXAogICBnc3RfZWxlbWVudF9tZXNzYWdlX2Z1bGwgKEdTVF9FTEVNRU5UKGVsKSwgR1NUX01FU1NBR0VfRVJST1IsICAgICAgICAgXAogICAgIGVyci0+ZG9tYWluLCBlcnItPmNvZGUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXApAQCAtMTc1LDggKzE3OCwxMCBAQAogICBnX2NsZWFyX2Vycm9yICgmZXJyKTsgXAogfSBHX1NUTVRfRU5ECiAKLSNkZWZpbmUgR1NUX0VMRU1FTlRfV0FSTklOR19GUk9NX0VSUk9SKGVsLCBlcnIpIEdfU1RNVF9TVEFSVCB7IFwKLSAgZ2NoYXIgKl9fZGJnID0gZ19zdHJkdXAgKGVyci0+bWVzc2FnZSk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyNkZWZpbmUgR1NUX0VMRU1FTlRfV0FSTklOR19GUk9NX0VSUk9SKGVsLCBlcnIpIEdfU1RNVF9TVEFSVCB7ICAgICAgICAgIFwKKyAgZ2NoYXIgKl9fZGJnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZ19hc3NlcnQgKGVyciAhPSBOVUxMKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgX19kYmcgPSBnX3N0cmR1cCAoZXJyLT5tZXNzYWdlKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbCwgImVycm9yOiAlcyIsIF9fZGJnKTsgICAgICAgICAgICAgICAgICAgICAgICAgIFwKICAgZ3N0X2VsZW1lbnRfbWVzc2FnZV9mdWxsIChHU1RfRUxFTUVOVChlbCksIEdTVF9NRVNTQUdFX1dBUk5JTkcsICAgICAgIFwKICAgICBlcnItPmRvbWFpbiwgZXJyLT5jb2RlLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKQEAgLTE4NCw2ICsxODksOCBAQAogICBnX2NsZWFyX2Vycm9yICgmZXJyKTsgXAogfSBHX1NUTVRfRU5ECiAKK0dTVF9ERUJVR19DQVRFR09SWV9FWFRFUk4gKGdzdF9hbWNfZGVidWcpOworCiBHX0VORF9ERUNMUwogCiAjZW5kaWYgLyogX19HU1RfQU1DX0hfXyAqLwpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNhdWRpb2RlYy5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNhdWRpb2RlYy5jCmluZGV4IGJjODE5MDcuLjlhMzRjMzcgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jYXVkaW9kZWMuYworKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY2F1ZGlvZGVjLmMKQEAgLTQ5Myw4ICs0OTMsMTAgQEAKICAgaXNfZW9zID0gISAhKGJ1ZmZlcl9pbmZvLmZsYWdzICYgQlVGRkVSX0ZMQUdfRU5EX09GX1NUUkVBTSk7CiAKICAgYnVmID0gZ3N0X2FtY19jb2RlY19nZXRfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycik7Ci0gIGlmICghYnVmKQorICBpZiAoZXJyKQogICAgIGdvdG8gZmFpbGVkX3RvX2dldF9vdXRwdXRfYnVmZmVyOworICBlbHNlIGlmICghYnVmKQorICAgIGdvdG8gZ290X251bGxfb3V0cHV0X2J1ZmZlcjsKIAogICBpZiAoYnVmZmVyX2luZm8uc2l6ZSA+IDApIHsKICAgICBHc3RCdWZmZXIgKm91dGJ1ZjsKQEAgLTU3Myw3ICs1NzUsNyBAQAogICAgIH0KICAgfQogCi0gIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpKSB7CisgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsIEZBTFNFLCAmZXJyKSkgewogICAgIGlmIChzZWxmLT5mbHVzaGluZykgewogICAgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CiAgICAgICBnb3RvIGZsdXNoaW5nOwpAQCAtNjk5LDExICs3MDEsMjcgQEAKICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmRyYWluX2xvY2spOwogICAgIHJldHVybjsKICAgfQorCitnb3RfbnVsbF9vdXRwdXRfYnVmZmVyOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCisgICAgICAgICgiR290IG5vIG91dHB1dCBidWZmZXIiKSk7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfQVVESU9fREVDT0RFUl9TUkNfUEFEIChzZWxmKSwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoR1NUX0FVRElPX0RFQ09ERVJfU1JDX1BBRCAoc2VsZikpOworICAgIHNlbGYtPmRvd25zdHJlYW1fZmxvd19yZXQgPSBHU1RfRkxPV19FUlJPUjsKKyAgICBHU1RfQVVESU9fREVDT0RFUl9TVFJFQU1fVU5MT0NLIChzZWxmKTsKKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKKyAgICBzZWxmLT5kcmFpbmluZyA9IEZBTFNFOworICAgIGdfY29uZF9icm9hZGNhc3QgKCZzZWxmLT5kcmFpbl9jb25kKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmRyYWluX2xvY2spOworICAgIHJldHVybjsKKyAgfQorCiBpbnZhbGlkX2J1ZmZlcl9zaXplOgogICB7CiAgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIExJQlJBUlksIEZBSUxFRCwgKE5VTEwpLAogICAgICAgICAoIkludmFsaWQgYnVmZmVyIHNpemUgJXUgKGJmcCAlZCkiLCBidWZmZXJfaW5mby5zaXplLCBzZWxmLT5pbmZvLmJwZikpOwotICAgIGdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKTsKKyAgICBnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgRkFMU0UsICZlcnIpOwogICAgIGlmIChlcnIgJiYgIXNlbGYtPmZsdXNoaW5nKQogICAgICAgR1NUX0VMRU1FTlRfV0FSTklOR19GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwogICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwpAQCAtNzIyLDcgKzc0MCw3IEBACiAgIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKICAgICAgICAgKCJGYWlsZWQgdG8gYWxsb2NhdGUgb3V0cHV0IGJ1ZmZlciIpKTsKLSAgICBnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycik7CisgICAgZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsIEZBTFNFLCAmZXJyKTsKICAgICBpZiAoZXJyICYmICFzZWxmLT5mbHVzaGluZykKICAgICAgIEdTVF9FTEVNRU5UX1dBUk5JTkdfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKICAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKQEAgLTkyNyw3ICs5NDUsNyBAQAogICAgICAgR1NUX1NUUl9OVUxMIChmb3JtYXRfc3RyaW5nKSk7CiAgIGdfZnJlZSAoZm9ybWF0X3N0cmluZyk7CiAKLSAgaWYgKCFnc3RfYW1jX2NvZGVjX2NvbmZpZ3VyZSAoc2VsZi0+Y29kZWMsIGZvcm1hdCwgMCwgJmVycikpIHsKKyAgaWYgKCFnc3RfYW1jX2NvZGVjX2NvbmZpZ3VyZSAoc2VsZi0+Y29kZWMsIGZvcm1hdCwgTlVMTCwgMCwgJmVycikpIHsKICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBjb2RlYyIpOwogICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIGVycik7CiAgICAgcmV0dXJuIEZBTFNFOwpAQCAtMTExMCw4ICsxMTI4LDEwIEBACiAgICAgLyogQ29weSB0aGUgYnVmZmVyIGNvbnRlbnQgaW4gY2h1bmtzIG9mIHNpemUgYXMgcmVxdWVzdGVkCiAgICAgICogYnkgdGhlIHBvcnQgKi8KICAgICBidWYgPSBnc3RfYW1jX2NvZGVjX2dldF9pbnB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpOwotICAgIGlmICghYnVmKQorICAgIGlmIChlcnIpCiAgICAgICBnb3RvIGZhaWxlZF90b19nZXRfaW5wdXRfYnVmZmVyOworICAgIGVsc2UgaWYgKCFidWYpCisgICAgICBnb3RvIGdvdF9udWxsX2lucHV0X2J1ZmZlcjsKIAogICAgIG1lbXNldCAoJmJ1ZmZlcl9pbmZvLCAwLCBzaXplb2YgKGJ1ZmZlcl9pbmZvKSk7CiAgICAgYnVmZmVyX2luZm8ub2Zmc2V0ID0gMDsKQEAgLTExODIsNiArMTIwMiwxNiBAQAogICAgICAgZ3N0X2J1ZmZlcl91bnJlZiAoaW5idWYpOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQorZ290X251bGxfaW5wdXRfYnVmZmVyOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCisgICAgICAgICgiR290IG5vIGlucHV0IGJ1ZmZlciIpKTsKKyAgICBpZiAobWluZm8uZGF0YSkKKyAgICAgIGdzdF9idWZmZXJfdW5tYXAgKGluYnVmLCAmbWluZm8pOworICAgIGlmIChpbmJ1ZikKKyAgICAgIGdzdF9idWZmZXJfdW5yZWYgKGluYnVmKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KIGRlcXVldWVfZXJyb3I6CiAgIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNlLmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2UuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2RjNmE3Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNlLmMKQEAgLTAsMCArMSwxOTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIEZsdWVuZG8gUy5BLgorICogICBBdXRob3I6IEFuZG9uaSBNb3JhbGVzIDxhbW9yYWxlc0BmbHVlbmRvLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIENvbGxhYm9yYSBMdGQuCisgKiAgIEF1dGhvcjogTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdGpuaXV0aWxzLmgiCisjaW5jbHVkZSAiZ3N0YW1jc3VyZmFjZS5oIgorCitHX0RFRklORV9UWVBFIChHc3RBbWNTdXJmYWNlLCBnc3RfYW1jX3N1cmZhY2UsIEdfVFlQRV9PQkpFQ1QpOworCitzdGF0aWMgZ3BvaW50ZXIgcGFyZW50X2NsYXNzID0gTlVMTDsKK3N0YXRpYyB2b2lkIGdzdF9hbWNfc3VyZmFjZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KTsKKworc3RhdGljIGdib29sZWFuCitfY2FjaGVfamF2YV9jbGFzcyAoR3N0QW1jU3VyZmFjZUNsYXNzICoga2xhc3MsIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworCisgIGdzdF9hbWNfam5pX2luaXRpYWxpemUgKCk7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBrbGFzcy0+amtsYXNzID0gZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsIGVyciwgImFuZHJvaWQvdmlldy9TdXJmYWNlIik7CisgIGlmICgha2xhc3MtPmprbGFzcykgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIGtsYXNzLT5jb25zdHJ1Y3RvciA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwga2xhc3MtPmprbGFzcywgIjxpbml0PiIsCisgICAgICAiKExhbmRyb2lkL2dyYXBoaWNzL1N1cmZhY2VUZXh0dXJlOylWIik7CisgIGlmICgha2xhc3MtPmNvbnN0cnVjdG9yKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGtsYXNzLT5pc192YWxpZCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwga2xhc3MtPmprbGFzcywgImlzVmFsaWQiLCAiKClaIik7CisgIGlmICgha2xhc3MtPmlzX3ZhbGlkKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGtsYXNzLT5yZWxlYXNlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAicmVsZWFzZSIsICIoKVYiKTsKKyAgaWYgKCFrbGFzcy0+cmVsZWFzZSkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBrbGFzcy0+ZGVzY3JpYmVfY29udGVudHMgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICJkZXNjcmliZUNvbnRlbnRzIiwKKyAgICAgICIoKUkiKTsKKyAgaWYgKCFrbGFzcy0+ZGVzY3JpYmVfY29udGVudHMpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgcmV0dXJuIFRSVUU7CisKK2Vycm9yOgorICBnc3RfYW1jX2puaV9vYmplY3RfdW5yZWYgKGVudiwga2xhc3MtPmprbGFzcyk7CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hbWNfc3VyZmFjZV9jbGFzc19pbml0IChHc3RBbWNTdXJmYWNlQ2xhc3MgKiBrbGFzcykKK3sKKyAgR0Vycm9yICplcnIgPSBOVUxMOworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworCisgIHBhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOworICBnb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0gZ3N0X2FtY19zdXJmYWNlX2Rpc3Bvc2U7CisKKyAgaWYgKCFfY2FjaGVfamF2YV9jbGFzcyAoa2xhc3MsICZlcnIpKSB7CisgICAgZ19sb2cgKEdfTE9HX0RPTUFJTiwgR19MT0dfTEVWRUxfQ1JJVElDQUwsCisgICAgICAgICJDb3VsZCBub3QgY2FjaGUgamF2YSBjbGFzcyBhbmRyb2lkL3ZpZXcvU3VyZmFjZTogJXMiLCBlcnItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYW1jX3N1cmZhY2VfaW5pdCAoR3N0QW1jU3VyZmFjZSAqIHNlbGYpCit7CisgIC8qIGluaXRpYWxpemUgdGhlIG9iamVjdCAqLworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FtY19zdXJmYWNlX2Rpc3Bvc2UgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdEFtY1N1cmZhY2UgKnNlbGY7CisgIEpOSUVudiAqZW52OworICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgc2VsZiA9IEdTVF9BTUNfU1VSRkFDRSAob2JqZWN0KTsKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKworICBpZiAoIWdzdF9hbWNfc3VyZmFjZV9yZWxlYXNlIChzZWxmLCAmZXJyKSkgeworICAgIGlmIChlcnIpIHsKKyAgICAgIEdTVF9FUlJPUiAoIkVycm9yOiAlcyIsIGVyci0+bWVzc2FnZSk7CisgICAgfQorICB9CisKKyAgaWYgKHNlbGYtPmpvYmplY3QpIHsKKyAgICBnc3RfYW1jX2puaV9vYmplY3RfdW5yZWYgKGVudiwgc2VsZi0+am9iamVjdCk7CisgIH0KKworICBpZiAoc2VsZi0+dGV4dHVyZSAhPSBOVUxMKSB7CisgICAgZ19vYmplY3RfdW5yZWYgKHNlbGYtPnRleHR1cmUpOworICAgIHNlbGYtPnRleHR1cmUgPSBOVUxMOworICB9CisKKyAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmRpc3Bvc2UgKG9iamVjdCk7Cit9CisKK0dzdEFtY1N1cmZhY2UgKgorZ3N0X2FtY19zdXJmYWNlX25ldyAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiB0ZXh0dXJlLCBHRXJyb3IgKiogZXJyKQoreworICBHc3RBbWNTdXJmYWNlICpzdXJmYWNlOworICBHc3RBbWNTdXJmYWNlQ2xhc3MgKmtsYXNzOworICBKTklFbnYgKmVudjsKKworICBzdXJmYWNlID0gZ19vYmplY3RfbmV3IChHU1RfVFlQRV9BTUNfU1VSRkFDRSwgTlVMTCk7CisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX0dFVF9DTEFTUyAoc3VyZmFjZSk7CisKKyAgc3VyZmFjZS0+am9iamVjdCA9IGdzdF9hbWNfam5pX25ld19vYmplY3QgKGVudiwgZXJyLCBUUlVFLCBrbGFzcy0+amtsYXNzLAorICAgICAga2xhc3MtPmNvbnN0cnVjdG9yLCB0ZXh0dXJlLT5qb2JqZWN0KTsKKyAgaWYgKHN1cmZhY2UtPmpvYmplY3QgPT0gTlVMTCkgeworICAgIGdfb2JqZWN0X3VucmVmIChzdXJmYWNlKTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIHN1cmZhY2UtPnRleHR1cmUgPSBnX29iamVjdF9yZWYgKHRleHR1cmUpOworICByZXR1cm4gc3VyZmFjZTsKK30KKworZ2Jvb2xlYW4KK2dzdF9hbWNfc3VyZmFjZV9pc192YWxpZCAoR3N0QW1jU3VyZmFjZSAqIHNlbGYsIGdib29sZWFuICogcmVzdWx0LAorICAgIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBHc3RBbWNTdXJmYWNlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX0dFVF9DTEFTUyAoc2VsZik7CisKKyAgcmV0dXJuIGdzdF9hbWNfam5pX2NhbGxfYm9vbGVhbl9tZXRob2QgKGVudiwgZXJyLCBzZWxmLT5qb2JqZWN0LAorICAgICAga2xhc3MtPmlzX3ZhbGlkLCByZXN1bHQpOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3JlbGVhc2UgKEdzdEFtY1N1cmZhY2UgKiBzZWxmLCBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKyAgR3N0QW1jU3VyZmFjZUNsYXNzICprbGFzczsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBrbGFzcyA9IEdTVF9BTUNfU1VSRkFDRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldHVybiBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwga2xhc3MtPnJlbGVhc2UpOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX2Rlc2NyaWJlX2NvbnRlbnRzIChHc3RBbWNTdXJmYWNlICogc2VsZiwgZ2ludCAqIHJlc3VsdCwKKyAgICBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKyAgR3N0QW1jU3VyZmFjZUNsYXNzICprbGFzczsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBrbGFzcyA9IEdTVF9BTUNfU1VSRkFDRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldHVybiBnc3RfYW1jX2puaV9jYWxsX2ludF9tZXRob2QgKGVudiwgZXJyLCBzZWxmLT5qb2JqZWN0LAorICAgICAga2xhc3MtPmRlc2NyaWJlX2NvbnRlbnRzLCByZXN1bHQpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNlLmggYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2UuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWY5OTY5Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNlLmgKQEAgLTAsMCArMSw4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgRmx1ZW5kbyBTLkEuCisgKiAgIEF1dGhvcjogQW5kb25pIE1vcmFsZXMgPGFtb3JhbGVzQGZsdWVuZG8uY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBNYXR0aGlldSBCb3Vyb24gPG1hdHRoaWV1LmJvdXJvbkBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBfX0dTVF9BTUNfU1VSRkFDRV9IX18KKyNkZWZpbmUgX19HU1RfQU1DX1NVUkZBQ0VfSF9fCisKKyNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorI2luY2x1ZGUgPGpuaS5oPgorI2luY2x1ZGUgImdzdGFtY3N1cmZhY2V0ZXh0dXJlLmgiCisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9BTUNfU1VSRkFDRSAgICAgICAgICAgICAgICAgIChnc3RfYW1jX3N1cmZhY2VfZ2V0X3R5cGUgKCkpCisjZGVmaW5lIEdTVF9BTUNfU1VSRkFDRShvYmopICAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0UsIEdzdEFtY1N1cmZhY2UpKQorI2RlZmluZSBHU1RfSVNfQU1DX1NVUkZBQ0Uob2JqKSAgICAgICAgICAgICAgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSAoKG9iaiksIEdTVF9UWVBFX0FNQ19TVVJGQUNFKSkKKyNkZWZpbmUgR1NUX0FNQ19TVVJGQUNFX0NMQVNTKGtsYXNzKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0FNQ19TVVJGQUNFLCBHc3RBbWNTdXJmYWNlQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfQU1DX1NVUkZBQ0VfQ0xBU1Moa2xhc3MpICAgICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0UpKQorI2RlZmluZSBHU1RfQU1DX1NVUkZBQ0VfR0VUX0NMQVNTKG9iaikgICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0UsIEdzdEFtY1N1cmZhY2VDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBbWNTdXJmYWNlICAgICAgICBHc3RBbWNTdXJmYWNlOwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFtY1N1cmZhY2VDbGFzcyAgIEdzdEFtY1N1cmZhY2VDbGFzczsKKworc3RydWN0IF9Hc3RBbWNTdXJmYWNlCit7CisgIEdPYmplY3QgcGFyZW50X2luc3RhbmNlOworCisgIC8qIGluc3RhbmNlIG1lbWJlcnMgKi8KKyAgam9iamVjdCBqb2JqZWN0OworICBHc3RBbWNTdXJmYWNlVGV4dHVyZSAqdGV4dHVyZTsKK307CisKK3N0cnVjdCBfR3N0QW1jU3VyZmFjZUNsYXNzCit7CisgIEdPYmplY3RDbGFzcyBwYXJlbnRfY2xhc3M7CisKKyAgLyogY2xhc3MgbWVtYmVycyAqLworICBqY2xhc3MgamtsYXNzOworICBqbWV0aG9kSUQgY29uc3RydWN0b3I7CisgIGptZXRob2RJRCBpc192YWxpZDsKKyAgam1ldGhvZElEIHJlbGVhc2U7CisgIGptZXRob2RJRCBkZXNjcmliZV9jb250ZW50czsKK307CisKK0dUeXBlIGdzdF9hbWNfc3VyZmFjZV9nZXRfdHlwZSAodm9pZCk7CisKK0dzdEFtY1N1cmZhY2UgKiBnc3RfYW1jX3N1cmZhY2VfbmV3ICAgICAgICAgICAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKK2dib29sZWFuIGdzdF9hbWNfc3VyZmFjZV9pc192YWxpZCAgICAgICAgICAgICAoR3N0QW1jU3VyZmFjZSAqc3VyZmFjZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnYm9vbGVhbiAqIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX3JlbGVhc2UgICAgICAgICAgICAgIChHc3RBbWNTdXJmYWNlICpzdXJmYWNlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitnYm9vbGVhbiBnc3RfYW1jX3N1cmZhY2VfZGVzY3JpYmVfY29udGVudHMgICAgKEdzdEFtY1N1cmZhY2UgKnN1cmZhY2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludCAqIHJlc3VsdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworR19FTkRfREVDTFMKKyNlbmRpZgpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNldGV4dHVyZS5jIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWNzdXJmYWNldGV4dHVyZS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYzMxNDIKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmMKQEAgLTAsMCArMSwzMTggQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTMsIEZsdWVuZG8gUy5BLgorICogICBBdXRob3I6IEFuZG9uaSBNb3JhbGVzIDxhbW9yYWxlc0BmbHVlbmRvLmNvbT4KKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQsIENvbGxhYm9yYSBMdGQuCisgKiAgIEF1dGhvcjogTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AY29sbGFib3JhLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZS4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUgR05VCisgKiBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgIDAyMTEwLTEzMDEgVVNBCisgKgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjaW5jbHVkZSAiY29uZmlnLmgiCisjZW5kaWYKKworI2luY2x1ZGUgImdzdGpuaXV0aWxzLmgiCisjaW5jbHVkZSAiZ3N0YW1jc3VyZmFjZXRleHR1cmUuaCIKKworR19ERUZJTkVfVFlQRSAoR3N0QW1jU3VyZmFjZVRleHR1cmUsIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlLCBHX1RZUEVfT0JKRUNUKTsKKworc3RhdGljIGdwb2ludGVyIHBhcmVudF9jbGFzcyA9IE5VTEw7CitzdGF0aWMgdm9pZCBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KTsKKworc3RhdGljIGdib29sZWFuCitfY2FjaGVfamF2YV9jbGFzcyAoR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqIGtsYXNzLCBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKworICBnc3RfYW1jX2puaV9pbml0aWFsaXplICgpOworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGtsYXNzLT5qa2xhc3MgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X2NsYXNzIChlbnYsIGVyciwgImFuZHJvaWQvZ3JhcGhpY3MvU3VyZmFjZVRleHR1cmUiKTsKKyAgaWYgKCFrbGFzcy0+amtsYXNzKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAga2xhc3MtPmNvbnN0cnVjdG9yID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAiPGluaXQ+IiwgIihJKVYiKTsKKyAgaWYgKCFrbGFzcy0+Y29uc3RydWN0b3IpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPnNldF9vbl9mcmFtZV9hdmFpbGFibGVfbGlzdGVuZXIgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsCisgICAgICAic2V0T25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyIiwKKyAgICAgICIoTGFuZHJvaWQvZ3JhcGhpY3MvU3VyZmFjZVRleHR1cmUkT25GcmFtZUF2YWlsYWJsZUxpc3RlbmVyOylWIik7CisKKyAga2xhc3MtPnNldF9kZWZhdWx0X2J1ZmZlcl9zaXplID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLAorICAgICAgInNldERlZmF1bHRCdWZmZXJTaXplIiwgIihJSSlWIik7CisgIGlmICgha2xhc3MtPnNldF9kZWZhdWx0X2J1ZmZlcl9zaXplKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGtsYXNzLT51cGRhdGVfdGV4X2ltYWdlID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAidXBkYXRlVGV4SW1hZ2UiLAorICAgICAgIigpViIpOworICBpZiAoIWtsYXNzLT51cGRhdGVfdGV4X2ltYWdlKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGtsYXNzLT5kZXRhY2hfZnJvbV9nbF9jb250ZXh0ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAiZGV0YWNoRnJvbUdMQ29udGV4dCIsCisgICAgICAiKClWIik7CisgIGlmICgha2xhc3MtPmRldGFjaF9mcm9tX2dsX2NvbnRleHQpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPmF0dGFjaF90b19nbF9jb250ZXh0ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAiYXR0YWNoVG9HTENvbnRleHQiLAorICAgICAgIihJKVYiKTsKKyAgaWYgKCFrbGFzcy0+YXR0YWNoX3RvX2dsX2NvbnRleHQpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPmdldF90cmFuc2Zvcm1fbWF0cml4ID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9tZXRob2RfaWQgKGVudiwgZXJyLCBrbGFzcy0+amtsYXNzLCAiZ2V0VHJhbnNmb3JtTWF0cml4IiwKKyAgICAgICIoW0YpViIpOworICBpZiAoIWtsYXNzLT5nZXRfdHJhbnNmb3JtX21hdHJpeCkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBrbGFzcy0+Z2V0X3RpbWVzdGFtcCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwga2xhc3MtPmprbGFzcywgImdldFRpbWVzdGFtcCIsCisgICAgICAiKClKIik7CisgIGlmICgha2xhc3MtPmdldF90aW1lc3RhbXApIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAga2xhc3MtPnJlbGVhc2UgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGtsYXNzLT5qa2xhc3MsICJyZWxlYXNlIiwgIigpViIpOworICBpZiAoIWtsYXNzLT5yZWxlYXNlKSB7CisgICAgZ290byBlcnJvcjsKKyAgfQorCisgIHJldHVybiBUUlVFOworCitlcnJvcjoKKyAgZ3N0X2FtY19qbmlfb2JqZWN0X3VucmVmIChlbnYsIGtsYXNzLT5jb25zdHJ1Y3Rvcik7CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2luaXQgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICogc2VsZikKK3sKK30KKworc3RhdGljIHZvaWQKK2dzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2NsYXNzX2luaXQgKEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKiBrbGFzcykKK3sKKyAgR0Vycm9yICplcnIgPSBOVUxMOworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworCisgIHBhcmVudF9jbGFzcyA9IGdfdHlwZV9jbGFzc19wZWVrX3BhcmVudCAoa2xhc3MpOworICBnb2JqZWN0X2NsYXNzLT5kaXNwb3NlID0gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZGlzcG9zZTsKKworICBpZiAoIV9jYWNoZV9qYXZhX2NsYXNzIChrbGFzcywgJmVycikpIHsKKyAgICBnX2xvZyAoR19MT0dfRE9NQUlOLCBHX0xPR19MRVZFTF9DUklUSUNBTCwKKyAgICAgICAgIkNvdWxkIG5vdCBjYWNoZSBqYXZhIGNsYXNzIGFuZHJvaWQvZ3JhcGhpY3MvU3VyZmFjZVRleHR1cmU6ICVzIiwKKyAgICAgICAgZXJyLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmUgKnNlbGY7CisgIEpOSUVudiAqZW52OworICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgc2VsZiA9IEdTVF9BTUNfU1VSRkFDRV9URVhUVVJFIChvYmplY3QpOworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworCisgIGlmICghZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfcmVsZWFzZSAoc2VsZiwgJmVycikpIHsKKyAgICBHU1RfRVJST1IgKCJDb3VsZCBub3QgcmVsZWFzZSBzdXJmYWNlIHRleHR1cmU6ICVzIiwgZXJyLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKKyAgfQorCisgIGlmIChzZWxmLT5qb2JqZWN0KSB7CisgICAgZ3N0X2FtY19qbmlfb2JqZWN0X3VucmVmIChlbnYsIHNlbGYtPmpvYmplY3QpOworICB9CisgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kaXNwb3NlIChvYmplY3QpOworfQorCitHc3RBbWNTdXJmYWNlVGV4dHVyZSAqCitnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9uZXcgKEdFcnJvciAqKiBlcnIpCit7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlID0gTlVMTDsKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqa2xhc3M7CisgIEpOSUVudiAqZW52OworCisgIHRleHR1cmUgPSBnX29iamVjdF9uZXcgKEdTVF9UWVBFX0FNQ19TVVJGQUNFX1RFWFRVUkUsIE5VTEwpOworICBrbGFzcyA9IEdTVF9BTUNfU1VSRkFDRV9URVhUVVJFX0dFVF9DTEFTUyAodGV4dHVyZSk7CisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisKKyAgdGV4dHVyZS0+dGV4dHVyZV9pZCA9IDA7CisKKyAgdGV4dHVyZS0+am9iamVjdCA9IGdzdF9hbWNfam5pX25ld19vYmplY3QgKGVudiwgZXJyLCBUUlVFLCBrbGFzcy0+amtsYXNzLAorICAgICAga2xhc3MtPmNvbnN0cnVjdG9yLCB0ZXh0dXJlLT50ZXh0dXJlX2lkKTsKKyAgaWYgKHRleHR1cmUtPmpvYmplY3QgPT0gTlVMTCkgeworICAgIGdvdG8gZXJyb3I7CisgIH0KKworICBpZiAoIWdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2RldGFjaF9mcm9tX2dsX2NvbnRleHQgKHRleHR1cmUsIGVycikpIHsKKyAgICBnb3RvIGVycm9yOworICB9CisKKyAgcmV0dXJuIHRleHR1cmU7CisKK2Vycm9yOgorICBpZiAodGV4dHVyZSkKKyAgICBnX29iamVjdF91bnJlZiAodGV4dHVyZSk7CisgIHJldHVybiBOVUxMOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfc2V0X2RlZmF1bHRfYnVmZmVyX3NpemUgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICogc2VsZiwKKyAgICBnaW50IHdpZHRoLCBnaW50IGhlaWdodCwgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTIChzZWxmKTsKKworICByZXR1cm4gZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsCisgICAgICBrbGFzcy0+c2V0X2RlZmF1bHRfYnVmZmVyX3NpemUsIHdpZHRoLCBoZWlnaHQpOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfdXBkYXRlX3RleF9pbWFnZSAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiBzZWxmLAorICAgIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBHc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzICprbGFzczsKKworICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICBrbGFzcyA9IEdTVF9BTUNfU1VSRkFDRV9URVhUVVJFX0dFVF9DTEFTUyAoc2VsZik7CisKKyAgcmV0dXJuIGdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgZXJyLCBzZWxmLT5qb2JqZWN0LAorICAgICAga2xhc3MtPnVwZGF0ZV90ZXhfaW1hZ2UpOworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZGV0YWNoX2Zyb21fZ2xfY29udGV4dCAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiBzZWxmLAorICAgIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBnYm9vbGVhbiByZXQ7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTIChzZWxmKTsKKworICByZXQgPQorICAgICAgZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsCisgICAgICBrbGFzcy0+ZGV0YWNoX2Zyb21fZ2xfY29udGV4dCk7CisgIHNlbGYtPnRleHR1cmVfaWQgPSAwOworICByZXR1cm4gcmV0OworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfYXR0YWNoX3RvX2dsX2NvbnRleHQgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICogc2VsZiwKKyAgICBnaW50IHRleHR1cmVfaWQsIEdFcnJvciAqKiBlcnIpCit7CisgIEpOSUVudiAqZW52OworICBnYm9vbGVhbiByZXQ7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTIChzZWxmKTsKKworICByZXQgPQorICAgICAgZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsCisgICAgICBrbGFzcy0+YXR0YWNoX3RvX2dsX2NvbnRleHQsIHRleHR1cmVfaWQpOworICBzZWxmLT50ZXh0dXJlX2lkID0gdGV4dHVyZV9pZDsKKyAgcmV0dXJuIHJldDsKK30KKworZ2Jvb2xlYW4KK2dzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2dldF90cmFuc2Zvcm1fbWF0cml4IChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqIHNlbGYsCisgICAgY29uc3QgZ2Zsb2F0ICogbWF0cml4LCBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RBbWNTdXJmYWNlVGV4dHVyZUNsYXNzICprbGFzczsKKyAgLyogNHg0IE1hdHJpeCAqLworICBqc2l6ZSBzaXplID0gMTY7CisgIGpmbG9hdEFycmF5IGZsb2F0YXJyYXk7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIGZsb2F0YXJyYXkgPSAoKmVudiktPk5ld0Zsb2F0QXJyYXkgKGVudiwgc2l6ZSk7CisgIHJldCA9CisgICAgICBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwKKyAgICAgIGtsYXNzLT5nZXRfdHJhbnNmb3JtX21hdHJpeCwgZmxvYXRhcnJheSk7CisgIGlmIChyZXQpIHsKKyAgICAoKmVudiktPkdldEZsb2F0QXJyYXlSZWdpb24gKGVudiwgZmxvYXRhcnJheSwgMCwgc2l6ZSwgKGpmbG9hdCAqKSBtYXRyaXgpOworICAgICgqZW52KS0+RGVsZXRlTG9jYWxSZWYgKGVudiwgZmxvYXRhcnJheSk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitnYm9vbGVhbgorZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3RpbWVzdGFtcCAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKiBzZWxmLAorICAgIGdpbnQ2NCAqIHJlc3VsdCwgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTIChzZWxmKTsKKworICByZXR1cm4gZ3N0X2FtY19qbmlfY2FsbF9sb25nX21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsCisgICAgICBrbGFzcy0+Z2V0X3RpbWVzdGFtcCwgcmVzdWx0KTsKK30KKworZ2Jvb2xlYW4KK2dzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3JlbGVhc2UgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICogc2VsZiwgR0Vycm9yICoqIGVycikKK3sKKyAgSk5JRW52ICplbnY7CisgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MgKmtsYXNzOworCisgIGVudiA9IGdzdF9hbWNfam5pX2dldF9lbnYgKCk7CisgIGtsYXNzID0gR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTIChzZWxmKTsKKworICByZXR1cm4gZ3N0X2FtY19qbmlfY2FsbF92b2lkX21ldGhvZCAoZW52LCBlcnIsIHNlbGYtPmpvYmplY3QsIGtsYXNzLT5yZWxlYXNlKTsKK30KKworZ2Jvb2xlYW4KK2dzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3NldF9vbl9mcmFtZV9hdmFpbGFibGVfbGlzdGVuZXIgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICoKKyAgICBzZWxmLCBqb2JqZWN0IGxpc3RlbmVyLCBHRXJyb3IgKiogZXJyKQoreworICBKTklFbnYgKmVudjsKKyAgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAqa2xhc3M7CisKKyAgZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAga2xhc3MgPSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRV9HRVRfQ0xBU1MgKHNlbGYpOworCisgIHJldHVybiBnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgc2VsZi0+am9iamVjdCwKKyAgICAgIGtsYXNzLT5zZXRfb25fZnJhbWVfYXZhaWxhYmxlX2xpc3RlbmVyLCBsaXN0ZW5lcik7Cit9CmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmggYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3N1cmZhY2V0ZXh0dXJlLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ2ZWJmMQotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jc3VyZmFjZXRleHR1cmUuaApAQCAtMCwwICsxLDEwNiBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMywgRmx1ZW5kbyBTLkEuCisgKiAgIEF1dGhvcjogQW5kb25pIE1vcmFsZXMgPGFtb3JhbGVzQGZsdWVuZG8uY29tPgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCwgQ29sbGFib3JhIEx0ZC4KKyAqICAgQXV0aG9yOiBNYXR0aGlldSBCb3Vyb24gPG1hdHRoaWV1LmJvdXJvbkBjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyAqIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAgMDIxMTAtMTMwMSBVU0EKKyAqCisgKi8KKworI2lmbmRlZiBfX0dTVF9BTUNfU1VSRkFDRV9URVhUVVJFX0hfXworI2RlZmluZSBfX0dTVF9BTUNfU1VSRkFDRV9URVhUVVJFX0hfXworCisjaW5jbHVkZSA8Z2xpYi5oPgorI2luY2x1ZGUgPGdsaWItb2JqZWN0Lmg+CisjaW5jbHVkZSA8am5pLmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9BTUNfU1VSRkFDRV9URVhUVVJFICAgICAgICAgICAgICAgICAgKGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2dldF90eXBlICgpKQorI2RlZmluZSBHU1RfQU1DX1NVUkZBQ0VfVEVYVFVSRShvYmopICAgICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0VfVEVYVFVSRSwgR3N0QW1jU3VyZmFjZVRleHR1cmUpKQorI2RlZmluZSBHU1RfSVNfQU1DX1NVUkZBQ0VfVEVYVFVSRShvYmopICAgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0VfVEVYVFVSRSkpCisjZGVmaW5lIEdTVF9BTUNfU1VSRkFDRV9URVhUVVJFX0NMQVNTKGtsYXNzKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX0FNQ19TVVJGQUNFX1RFWFRVUkUsIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfQU1DX1NVUkZBQ0VfVEVYVFVSRV9DTEFTUyhrbGFzcykgICAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFICgoa2xhc3MpLCBHU1RfVFlQRV9BTUNfU1VSRkFDRV9URVhUVVJFKSkKKyNkZWZpbmUgR1NUX0FNQ19TVVJGQUNFX1RFWFRVUkVfR0VUX0NMQVNTKG9iaikgICAgICAgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfQU1DX1NVUkZBQ0VfVEVYVFVSRSwgR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcykpCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBbWNTdXJmYWNlVGV4dHVyZSAgICAgICAgR3N0QW1jU3VyZmFjZVRleHR1cmU7Cit0eXBlZGVmIHN0cnVjdCBfR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcyAgIEdzdEFtY1N1cmZhY2VUZXh0dXJlQ2xhc3M7CisKK3N0cnVjdCBfR3N0QW1jU3VyZmFjZVRleHR1cmUKK3sKKyAgR09iamVjdCBwYXJlbnRfaW5zdGFuY2U7CisKKyAgLyogaW5zdGFuY2UgbWVtYmVycyAqLworICBnaW50IHRleHR1cmVfaWQ7CisgIGpvYmplY3Qgam9iamVjdDsKK307CisKK3N0cnVjdCBfR3N0QW1jU3VyZmFjZVRleHR1cmVDbGFzcworeworICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworCisgIC8qIGNsYXNzIG1lbWJlcnMgKi8KKyAgZ2ludCB0ZXh0dXJlX2lkOworCisgIGpjbGFzcyBqa2xhc3M7CisgIGptZXRob2RJRCBjb25zdHJ1Y3RvcjsKKyAgam1ldGhvZElEIHNldF9vbl9mcmFtZV9hdmFpbGFibGVfbGlzdGVuZXI7CisgIGptZXRob2RJRCBzZXRfZGVmYXVsdF9idWZmZXJfc2l6ZTsKKyAgam1ldGhvZElEIHVwZGF0ZV90ZXhfaW1hZ2U7CisgIGptZXRob2RJRCBkZXRhY2hfZnJvbV9nbF9jb250ZXh0OworICBqbWV0aG9kSUQgYXR0YWNoX3RvX2dsX2NvbnRleHQ7CisgIGptZXRob2RJRCBnZXRfdHJhbnNmb3JtX21hdHJpeDsKKyAgam1ldGhvZElEIGdldF90aW1lc3RhbXA7CisgIGptZXRob2RJRCByZWxlYXNlOworfTsKKworR1R5cGUgZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3R5cGUgICAgICAgICAgICAgICAgICAgKHZvaWQpOworCitHc3RBbWNTdXJmYWNlVGV4dHVyZSAqIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX25ldyAgICAgICAoR0Vycm9yICoqIGVycik7CisKK2dib29sZWFuIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3NldF9kZWZhdWx0X2J1ZmZlcl9zaXplIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgd2lkdGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnaW50IGhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitnYm9vbGVhbiBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV91cGRhdGVfdGV4X2ltYWdlICAgICAgICAoR3N0QW1jU3VyZmFjZVRleHR1cmUgKnRleHR1cmUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZGV0YWNoX2Zyb21fZ2xfY29udGV4dCAgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKK2dib29sZWFuIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2F0dGFjaF90b19nbF9jb250ZXh0ICAgIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpbnQgaW5kZXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3RyYW5zZm9ybV9tYXRyaXggICAgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2Zsb2F0ICptYXRyaXgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHRXJyb3IgKiogZXJyKTsKKworZ2Jvb2xlYW4gZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3RpbWVzdGFtcCAgICAgICAgICAgKEdzdEFtY1N1cmZhY2VUZXh0dXJlICp0ZXh0dXJlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2ludDY0ICogcmVzdWx0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKK2dib29sZWFuIGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3JlbGVhc2UgICAgICAgICAgICAgICAgIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqdGV4dHVyZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitnYm9vbGVhbiBnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9zZXRfb25fZnJhbWVfYXZhaWxhYmxlX2xpc3RlbmVyIChHc3RBbWNTdXJmYWNlVGV4dHVyZSAqIHNlbGYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpvYmplY3QgbGlzdGVuZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAqKiBlcnIpOworCitHX0VORF9ERUNMUworI2VuZGlmCmRpZmYgLS1naXQgYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmMgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmMKaW5kZXggNDhiMGRjZC4uN2M5OWJlMCAxMDA2NDQKLS0tIGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5jCisrKyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuYwpAQCAtMTEsNiArMTEsMTQgQEAKICAqCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTUsIFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CiAgKgorICogQ29weXJpZ2h0IChDKSAyMDE0LTIwMTUsIENvbGxhYm9yYSBMdGQuCisgKiAgIEF1dGhvcjogTWF0dGhpZXUgQm91cm9uIDxtYXR0aGlldS5ib3Vyb25AZ2NvbGxhYm9yYS5jb20+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBFZHdhcmQgSGVydmV5CisgKiAgIEF1dGhvcjogRWR3YXJkIEhlcnZleSA8YmlsYm9lZEBnbWFpbC5jb20+CisgKgorICogQ29weXJpZ2h0IChDKSAyMDE1LCBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwogICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgpAQCAtMzIsNyArNDAsOSBAQAogI2VuZGlmCiAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgorI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb2FmZmluZXRyYW5zZm9ybWF0aW9ubWV0YS5oPgogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb3Bvb2wuaD4KICNpbmNsdWRlIDxzdHJpbmcuaD4KIApAQCAtNTgsMTIgKzY4LDE0NiBAQAogICBnX2NsZWFyX2Vycm9yICgmZXJyKTsgXAogfSBHX1NUTVRfRU5ECiAKKyNpZiBHTElCX1NJWkVPRl9WT0lEX1AgPT0gOAorI2RlZmluZSBKTE9OR19UT19HU1RfQU1DX1ZJREVPX0RFQyh2YWx1ZSkgKEdzdEFtY1ZpZGVvRGVjICopKHZhbHVlKQorI2RlZmluZSBHU1RfQU1DX1ZJREVPX0RFQ19UT19KTE9ORyh2YWx1ZSkgKGpsb25nKSh2YWx1ZSkKKyNlbHNlCisjZGVmaW5lIEpMT05HX1RPX0dTVF9BTUNfVklERU9fREVDKHZhbHVlKSAoR3N0QW1jVmlkZW9EZWMgKikoamludCkodmFsdWUpCisjZGVmaW5lIEdTVF9BTUNfVklERU9fREVDX1RPX0pMT05HKHZhbHVlKSAoamxvbmcpKGppbnQpKHZhbHVlKQorI2VuZGlmCisKIHR5cGVkZWYgc3RydWN0IF9CdWZmZXJJZGVudGlmaWNhdGlvbiBCdWZmZXJJZGVudGlmaWNhdGlvbjsKIHN0cnVjdCBfQnVmZmVySWRlbnRpZmljYXRpb24KIHsKICAgZ3VpbnQ2NCB0aW1lc3RhbXA7CiB9OwogCitzdHJ1Y3QgZ2xfc3luY19yZXN1bHQKK3sKKyAgZ2ludCByZWZjb3VudDsKKyAgZ2ludDY0IGZyYW1lX2F2YWlsYWJsZV90czsKKyAgZ2Jvb2xlYW4gdXBkYXRlZDsgICAgICAgICAgICAgLyogb25seSBldmVyeSBjYWxsIHVwZGF0ZV90ZXhfaW1hZ2Ugb25jZSAqLworICBnYm9vbGVhbiByZWxlYXNlZDsgICAgICAgICAgICAvKiBvbmx5IGV2ZXJ5IGNhbGwgcmVsZWFzZV9vdXRwdXRfYnVmZmVyIG9uY2UgKi8KKyAgZ2Jvb2xlYW4gcmVuZGVyZWQ7ICAgICAgICAgICAgLyogd2hldGhlciB0aGUgcmVsZWFzZSByZXN1bHRlZCBpbiBhIHJlbmRlciAqLworfTsKKworc3RhdGljIHN0cnVjdCBnbF9zeW5jX3Jlc3VsdCAqCitfZ2xfc3luY19yZXN1bHRfcmVmIChzdHJ1Y3QgZ2xfc3luY19yZXN1bHQgKnJlc3VsdCkKK3sKKyAgZ19hc3NlcnQgKHJlc3VsdCAhPSBOVUxMKTsKKworICBnX2F0b21pY19pbnRfaW5jICgmcmVzdWx0LT5yZWZjb3VudCk7CisKKyAgR1NUX1RSQUNFICgiZ2xfc3luYyByZXN1bHQgJXAgcmVmIiwgcmVzdWx0KTsKKworICByZXR1cm4gcmVzdWx0OworfQorCitzdGF0aWMgdm9pZAorX2dsX3N5bmNfcmVzdWx0X3VucmVmIChzdHJ1Y3QgZ2xfc3luY19yZXN1bHQgKnJlc3VsdCkKK3sKKyAgZ19hc3NlcnQgKHJlc3VsdCAhPSBOVUxMKTsKKworICBHU1RfVFJBQ0UgKCJnbF9zeW5jIHJlc3VsdCAlcCB1bnJlZiIsIHJlc3VsdCk7CisKKyAgaWYgKGdfYXRvbWljX2ludF9kZWNfYW5kX3Rlc3QgKCZyZXN1bHQtPnJlZmNvdW50KSkgeworICAgIEdTVF9UUkFDRSAoImZyZWVpbmcgZ2xfc3luYyByZXN1bHQgJXAiLCByZXN1bHQpOworICAgIGdfZnJlZSAocmVzdWx0KTsKKyAgfQorfQorCitzdHJ1Y3QgZ2xfc3luYworeworICBnaW50IHJlZmNvdW50OworICBHc3RBbWNWaWRlb0RlYyAqc2luazsgICAgICAgICAvKiBiYWNrIHJlZmVyZW5jZSBmb3Igc3RhdGlzdGljcywgbG9jaywgY29uZCwgZXRjICovCisgIGdpbnQgYnVmZmVyX2lkeDsgICAgICAgICAgICAgIC8qIGlkeCBvZiB0aGUgQU1DIGJ1ZmZlciB3ZSBzaG91bGQgcmVuZGVyICovCisgIEdzdEJ1ZmZlciAqYnVmZmVyOyAgICAgICAgICAgIC8qIGJhY2sgcmVmZXJlbmNlIHRvIHRoZSBidWZmZXIgKi8KKyAgR3N0R0xNZW1vcnkgKm9lc19tZW07ICAgICAgICAgLyogd2hlcmUgYW1jIGlzIHJlbmRlcmluZyBpbnRvLiBUaGUgc2FtZSBmb3IgZXZlcnkgZ2xfc3luYyAqLworICBHc3RBbWNTdXJmYWNlICpzdXJmYWNlOyAgICAgICAvKiBqYXZhIHdyYXBwZXIgZm9yIHdoZXJlIGFtYyBpcyByZW5kZXJpbmcgaW50byAqLworICBndWludCBnbF9mcmFtZV9ubzsgICAgICAgICAgICAvKiBlZmZlY3RpdmVseSB0aGUgZnJhbWUgaWQgKi8KKyAgZ2ludDY0IHJlbGVhc2VkX3RzOyAgICAgICAgICAgLyogbWljcm9zZWNvbmRzIGZyb20gZ19nZXRfbW9ub3RvbmljX3RpbWUoKSAqLworICBzdHJ1Y3QgZ2xfc3luY19yZXN1bHQgKnJlc3VsdDsKK307CisKK3N0YXRpYyBzdHJ1Y3QgZ2xfc3luYyAqCitfZ2xfc3luY19yZWYgKHN0cnVjdCBnbF9zeW5jICpzeW5jKQoreworICBnX2Fzc2VydCAoc3luYyAhPSBOVUxMKTsKKworICBnX2F0b21pY19pbnRfaW5jICgmc3luYy0+cmVmY291bnQpOworCisgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgcmVmIiwgc3luYyk7CisKKyAgcmV0dXJuIHN5bmM7Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfc3luY191bnJlZiAoc3RydWN0IGdsX3N5bmMgKnN5bmMpCit7CisgIGdfYXNzZXJ0IChzeW5jICE9IE5VTEwpOworCisgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgdW5yZWYiLCBzeW5jKTsKKworICBpZiAoZ19hdG9taWNfaW50X2RlY19hbmRfdGVzdCAoJnN5bmMtPnJlZmNvdW50KSkgeworICAgIEdTVF9UUkFDRSAoImZyZWVpbmcgZ2xfc3luYyAlcCIsIHN5bmMpOworCisgICAgX2dsX3N5bmNfcmVzdWx0X3VucmVmIChzeW5jLT5yZXN1bHQpOworCisgICAgZ19vYmplY3RfdW5yZWYgKHN5bmMtPnN1cmZhY2UpOworICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgc3luYy0+b2VzX21lbSk7CisKKyAgICBnX2ZyZWUgKHN5bmMpOworICB9Cit9CisKK3N0YXRpYyBnaW50CitfcXVldWVfY29tcGFyZV9nbF9zeW5jIChnY29uc3Rwb2ludGVyIGEsIGdjb25zdHBvaW50ZXIgYikKK3sKKyAgY29uc3Qgc3RydWN0IGdsX3N5bmMgKnN5bmMgPSBhOworICBndWludCBmcmFtZSA9IEdQT0lOVEVSX1RPX0lOVCAoYik7CisKKyAgcmV0dXJuIHN5bmMtPmdsX2ZyYW1lX25vIC0gZnJhbWU7Cit9CisKK3N0YXRpYyBHTGlzdCAqCitfZmluZF9nbF9zeW5jX2Zvcl9mcmFtZSAoR3N0QW1jVmlkZW9EZWMgKiBkZWMsIGd1aW50IGZyYW1lKQoreworICByZXR1cm4gZ19xdWV1ZV9maW5kX2N1c3RvbSAoZGVjLT5nbF9xdWV1ZSwgR0lOVF9UT19QT0lOVEVSIChmcmFtZSksCisgICAgICAoR0NvbXBhcmVGdW5jKSBfcXVldWVfY29tcGFyZV9nbF9zeW5jKTsKK30KKworc3RhdGljIHZvaWQKK19hdHRhY2hfbWVtX3RvX2NvbnRleHQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEFtY1ZpZGVvRGVjICogc2VsZikKK3sKKyAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgImF0dGFjaGluZyB0ZXh0dXJlICVwIGlkICV1IHRvIGN1cnJlbnQgY29udGV4dCIsCisgICAgICBzZWxmLT5zdXJmYWNlLT50ZXh0dXJlLCBzZWxmLT5vZXNfbWVtLT50ZXhfaWQpOworICBpZiAoIWdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX2F0dGFjaF90b19nbF9jb250ZXh0IChzZWxmLT5zdXJmYWNlLT50ZXh0dXJlLAorICAgICAgICAgIHNlbGYtPm9lc19tZW0tPnRleF9pZCwgJnNlbGYtPmdsX2Vycm9yKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gYXR0YWNoIHRleHR1cmUgdG8gdGhlIEdMIGNvbnRleHQiKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBzZWxmLT5nbF9lcnJvcik7CisgIH0gZWxzZSB7CisgICAgc2VsZi0+Z2xfbWVtX2F0dGFjaGVkID0gVFJVRTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorX2RldHRhY2hfbWVtX2Zyb21fY29udGV4dCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgR3N0QW1jVmlkZW9EZWMgKiBzZWxmKQoreworICBpZiAoc2VsZi0+c3VyZmFjZSkgeworICAgIGd1aW50IHRleF9pZCA9IHNlbGYtPm9lc19tZW0gPyBzZWxmLT5vZXNfbWVtLT50ZXhfaWQgOiAwOworCisgICAgR1NUX1RSQUNFX09CSkVDVCAoc2VsZiwgImRldGFjaGluZyB0ZXh0dXJlICVwIGlkICV1IGZyb20gY3VycmVudCBjb250ZXh0IiwKKyAgICAgICAgc2VsZi0+c3VyZmFjZS0+dGV4dHVyZSwgdGV4X2lkKTsKKworICAgIGlmICghZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZGV0YWNoX2Zyb21fZ2xfY29udGV4dCAoc2VsZi0+c3VyZmFjZS0+dGV4dHVyZSwKKyAgICAgICAgICAgICZzZWxmLT5nbF9lcnJvcikpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gYXR0YWNoIHRleHR1cmUgdG8gdGhlIEdMIGNvbnRleHQiKTsKKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIHNlbGYtPmdsX2Vycm9yKTsKKyAgICB9CisgIH0KKyAgc2VsZi0+Z2xfbWVtX2F0dGFjaGVkID0gRkFMU0U7Cit9CisKIHN0YXRpYyBCdWZmZXJJZGVudGlmaWNhdGlvbiAqCiBidWZmZXJfaWRlbnRpZmljYXRpb25fbmV3IChHc3RDbG9ja1RpbWUgdGltZXN0YW1wKQogewpAQCAtODYsNiArMjMwLDggQEAKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgogZ3N0X2FtY192aWRlb19kZWNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwKICAgICBHc3RTdGF0ZUNoYW5nZSB0cmFuc2l0aW9uKTsKK3N0YXRpYyB2b2lkIGdzdF9hbWNfdmlkZW9fZGVjX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RDb250ZXh0ICogY29udGV4dCk7CiAKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYW1jX3ZpZGVvX2RlY19vcGVuIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYW1jX3ZpZGVvX2RlY19jbG9zZSAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2Rlcik7CkBAIC05OSw4ICsyNDUsMTQgQEAKIHN0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9hbWNfdmlkZW9fZGVjX2ZpbmlzaCAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2Rlcik7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FtY192aWRlb19kZWNfZGVjaWRlX2FsbG9jYXRpb24gKEdzdFZpZGVvRGVjb2RlciAqIGJkZWMsCiAgICAgR3N0UXVlcnkgKiBxdWVyeSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2FtY192aWRlb19kZWNfc3JjX3F1ZXJ5IChHc3RWaWRlb0RlY29kZXIgKiBiZGVjLAorICAgIEdzdFF1ZXJ5ICogcXVlcnkpOwogCiBzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfYW1jX3ZpZGVvX2RlY19kcmFpbiAoR3N0QW1jVmlkZW9EZWMgKiBzZWxmKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYW1jX3ZpZGVvX2RlY19jaGVja19jb2RlY19jb25maWcgKEdzdEFtY1ZpZGVvRGVjICogc2VsZik7CitzdGF0aWMgdm9pZAorZ3N0X2FtY192aWRlb19kZWNfb25fZnJhbWVfYXZhaWxhYmxlIChKTklFbnYgKiBlbnYsIGpvYmplY3QgdGhpeiwKKyAgICBsb25nIGxvbmcgY29udGV4dCwgam9iamVjdCBzdXJmYWNlVGV4dHVyZSk7CiAKIGVudW0KIHsKQEAgLTE5MCw3ICszNDIsNyBAQAogICBHc3RBbWNWaWRlb0RlY0NsYXNzICphbWN2aWRlb2RlY19jbGFzcyA9IEdTVF9BTUNfVklERU9fREVDX0NMQVNTIChnX2NsYXNzKTsKICAgY29uc3QgR3N0QW1jQ29kZWNJbmZvICpjb2RlY19pbmZvOwogICBHc3RQYWRUZW1wbGF0ZSAqdGVtcGw7Ci0gIEdzdENhcHMgKnNpbmtfY2FwcywgKnNyY19jYXBzOworICBHc3RDYXBzICpzaW5rX2NhcHMsICpzcmNfY2FwcywgKmFsbF9zcmNfY2FwczsKICAgZ2NoYXIgKmxvbmduYW1lOwogCiAgIGNvZGVjX2luZm8gPQpAQCAtMjAyLDE1ICszNTQsMjcgQEAKICAgYW1jdmlkZW9kZWNfY2xhc3MtPmNvZGVjX2luZm8gPSBjb2RlY19pbmZvOwogCiAgIGdzdF9hbWNfY29kZWNfaW5mb190b19jYXBzIChjb2RlY19pbmZvLCAmc2lua19jYXBzLCAmc3JjX2NhcHMpOworCisgIGFsbF9zcmNfY2FwcyA9CisgICAgICBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3gtcmF3KCIgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZCisgICAgICAiKSwgZm9ybWF0ID0gKHN0cmluZykgUkdCQSwgdGV4dHVyZS10YXJnZXQgPSAoc3RyaW5nKSBleHRlcm5hbC1vZXMiKTsKKworICBpZiAoY29kZWNfaW5mby0+Z2xfb3V0cHV0X29ubHkpIHsKKyAgICBnc3RfY2Fwc191bnJlZiAoc3JjX2NhcHMpOworICB9IGVsc2UgeworICAgIGdzdF9jYXBzX2FwcGVuZCAoYWxsX3NyY19jYXBzLCBzcmNfY2Fwcyk7CisgIH0KKwogICAvKiBBZGQgcGFkIHRlbXBsYXRlcyAqLwogICB0ZW1wbCA9CiAgICAgICBnc3RfcGFkX3RlbXBsYXRlX25ldyAoInNpbmsiLCBHU1RfUEFEX1NJTkssIEdTVF9QQURfQUxXQVlTLCBzaW5rX2NhcHMpOwogICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLCB0ZW1wbCk7CiAgIGdzdF9jYXBzX3VucmVmIChzaW5rX2NhcHMpOwogCi0gIHRlbXBsID0gZ3N0X3BhZF90ZW1wbGF0ZV9uZXcgKCJzcmMiLCBHU1RfUEFEX1NSQywgR1NUX1BBRF9BTFdBWVMsIHNyY19jYXBzKTsKKyAgdGVtcGwgPQorICAgICAgZ3N0X3BhZF90ZW1wbGF0ZV9uZXcgKCJzcmMiLCBHU1RfUEFEX1NSQywgR1NUX1BBRF9BTFdBWVMsIGFsbF9zcmNfY2Fwcyk7CiAgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGVsZW1lbnRfY2xhc3MsIHRlbXBsKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKHNyY19jYXBzKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGFsbF9zcmNfY2Fwcyk7CiAKICAgbG9uZ25hbWUgPSBnX3N0cmR1cF9wcmludGYgKCJBbmRyb2lkIE1lZGlhQ29kZWMgJXMiLCBjb2RlY19pbmZvLT5uYW1lKTsKICAgZ3N0X2VsZW1lbnRfY2xhc3Nfc2V0X21ldGFkYXRhIChlbGVtZW50X2NsYXNzLApAQCAtMjMzLDYgKzM5Nyw4IEBACiAKICAgZWxlbWVudF9jbGFzcy0+Y2hhbmdlX3N0YXRlID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYW1jX3ZpZGVvX2RlY19jaGFuZ2Vfc3RhdGUpOworICBlbGVtZW50X2NsYXNzLT5zZXRfY29udGV4dCA9CisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2FtY192aWRlb19kZWNfc2V0X2NvbnRleHQpOwogCiAgIHZpZGVvZGVjX2NsYXNzLT5zdGFydCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYW1jX3ZpZGVvX2RlY19zdGFydCk7CiAgIHZpZGVvZGVjX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9hbWNfdmlkZW9fZGVjX3N0b3ApOwpAQCAtMjQ1LDYgKzQxMSw3IEBACiAgIHZpZGVvZGVjX2NsYXNzLT5maW5pc2ggPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2FtY192aWRlb19kZWNfZmluaXNoKTsKICAgdmlkZW9kZWNfY2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uID0KICAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfYW1jX3ZpZGVvX2RlY19kZWNpZGVfYWxsb2NhdGlvbik7CisgIHZpZGVvZGVjX2NsYXNzLT5zcmNfcXVlcnkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X2FtY192aWRlb19kZWNfc3JjX3F1ZXJ5KTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTI1NSw2ICs0MjIsMTEgQEAKIAogICBnX211dGV4X2luaXQgKCZzZWxmLT5kcmFpbl9sb2NrKTsKICAgZ19jb25kX2luaXQgKCZzZWxmLT5kcmFpbl9jb25kKTsKKworICBnX211dGV4X2luaXQgKCZzZWxmLT5nbF9sb2NrKTsKKyAgZ19jb25kX2luaXQgKCZzZWxmLT5nbF9jb25kKTsKKworICBzZWxmLT5nbF9xdWV1ZSA9IGdfcXVldWVfbmV3ICgpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTI3MSw2ICs0NDMsOCBAQAogICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIGVycik7CiAgICAgcmV0dXJuIEZBTFNFOwogICB9CisgIHNlbGYtPmNvZGVjX2NvbmZpZyA9IEFNQ19DT0RFQ19DT05GSUdfTk9ORTsKKwogICBzZWxmLT5zdGFydGVkID0gRkFMU0U7CiAgIHNlbGYtPmZsdXNoaW5nID0gVFJVRTsKIApAQCAtMjg2LDYgKzQ2MCw0NiBAQAogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJDbG9zaW5nIGRlY29kZXIiKTsKIAorICBpZiAoc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbAorICAgICAgJiYgc2VsZi0+Y29kZWNfY29uZmlnID09IEFNQ19DT0RFQ19DT05GSUdfV0lUSF9TVVJGQUNFKSB7CisgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+Z2xfbG9jayk7CisgICAgR1NUX0lORk9fT0JKRUNUIChzZWxmLCAic2h1dHRpbmcgZG93biBnbCBxdWV1ZSBwdXNoZWQgJXUgcmVhZHkgJXUgIgorICAgICAgICAicmVsZWFzZWQgJXUiLCBzZWxmLT5nbF9wdXNoZWRfZnJhbWVfY291bnQsIHNlbGYtPmdsX3JlYWR5X2ZyYW1lX2NvdW50LAorICAgICAgICBzZWxmLT5nbF9yZWxlYXNlZF9mcmFtZV9jb3VudCk7CisKKyAgICBnX3F1ZXVlX2ZyZWVfZnVsbCAoc2VsZi0+Z2xfcXVldWUsIChHRGVzdHJveU5vdGlmeSkgX2dsX3N5bmNfdW5yZWYpOworICAgIHNlbGYtPmdsX3F1ZXVlID0gZ19xdWV1ZV9uZXcgKCk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5nbF9sb2NrKTsKKworICAgIGlmIChzZWxmLT5nbF9tZW1fYXR0YWNoZWQpCisgICAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChzZWxmLT5nbF9jb250ZXh0LAorICAgICAgICAgIChHc3RHTENvbnRleHRUaHJlYWRGdW5jKSBfZGV0dGFjaF9tZW1fZnJvbV9jb250ZXh0LCBzZWxmKTsKKyAgfQorICBzZWxmLT5nbF9wdXNoZWRfZnJhbWVfY291bnQgPSAwOworICBzZWxmLT5nbF9yZWFkeV9mcmFtZV9jb3VudCA9IDA7CisgIHNlbGYtPmdsX3JlbGVhc2VkX2ZyYW1lX2NvdW50ID0gMDsKKyAgc2VsZi0+Z2xfbGFzdF9yZW5kZXJlZF9mcmFtZSA9IDA7CisKKyAgaWYgKHNlbGYtPnN1cmZhY2UpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT5zdXJmYWNlKTsKKyAgICBzZWxmLT5zdXJmYWNlID0gTlVMTDsKKyAgfQorCisgIGlmIChzZWxmLT5saXN0ZW5lcikgeworICAgIEpOSUVudiAqZW52ID0gZ3N0X2FtY19qbmlfZ2V0X2VudiAoKTsKKyAgICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgICBpZiAoIWdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgJmVyciwgc2VsZi0+bGlzdGVuZXIsCisgICAgICAgICAgICBzZWxmLT5zZXRfY29udGV4dF9pZCwgR1NUX0FNQ19WSURFT19ERUNfVE9fSkxPTkcgKE5VTEwpKSkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byB1bnNldCBiYWNrIHBvaW50ZXIgb24gdGhlIGxpc3RlbmVyLiAiCisgICAgICAgICAgImNyYXNoZXMvaGFuZ3MgbWF5IGVuc3VlOiAlcyIsIGVyciA/IGVyci0+bWVzc2FnZSA6ICJVbmtub3duIik7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBlcnIpOworICAgIH0KKworICAgIGdzdF9hbWNfam5pX29iamVjdF91bnJlZiAoZW52LCBzZWxmLT5saXN0ZW5lcik7CisgIH0KKyAgc2VsZi0+bGlzdGVuZXIgPSBOVUxMOworCiAgIGlmIChzZWxmLT5jb2RlYykgewogICAgIEdFcnJvciAqZXJyID0gTlVMTDsKIApAQCAtMjk1LDEwICs1MDksMzUgQEAKIAogICAgIGdzdF9hbWNfY29kZWNfZnJlZSAoc2VsZi0+Y29kZWMpOwogICB9Ci0gIHNlbGYtPmNvZGVjID0gTlVMTDsKIAogICBzZWxmLT5zdGFydGVkID0gRkFMU0U7CiAgIHNlbGYtPmZsdXNoaW5nID0gVFJVRTsKKyAgc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCA9IEZBTFNFOworCisgIHNlbGYtPmNvZGVjID0gTlVMTDsKKyAgc2VsZi0+Y29kZWNfY29uZmlnID0gQU1DX0NPREVDX0NPTkZJR19OT05FOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJGcmVlaW5nIEdMIGNvbnRleHQ6ICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgc2VsZi0+Z2xfY29udGV4dCk7CisgIGlmIChzZWxmLT5nbF9jb250ZXh0KSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc2VsZi0+Z2xfY29udGV4dCk7CisgICAgc2VsZi0+Z2xfY29udGV4dCA9IE5VTEw7CisgIH0KKworICBpZiAoc2VsZi0+b2VzX21lbSkgeworICAgIGdzdF9tZW1vcnlfdW5yZWYgKChHc3RNZW1vcnkgKikgc2VsZi0+b2VzX21lbSk7CisgICAgc2VsZi0+b2VzX21lbSA9IE5VTEw7CisgIH0KKworICBpZiAoc2VsZi0+Z2xfZGlzcGxheSkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNlbGYtPmdsX2Rpc3BsYXkpOworICAgIHNlbGYtPmdsX2Rpc3BsYXkgPSBOVUxMOworICB9CisKKyAgaWYgKHNlbGYtPm90aGVyX2dsX2NvbnRleHQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzZWxmLT5vdGhlcl9nbF9jb250ZXh0KTsKKyAgICBzZWxmLT5vdGhlcl9nbF9jb250ZXh0ID0gTlVMTDsKKyAgfQogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJDbG9zZWQgZGVjb2RlciIpOwogCkBAIC0zMTMsOSArNTUyLDI4IEBACiAgIGdfbXV0ZXhfY2xlYXIgKCZzZWxmLT5kcmFpbl9sb2NrKTsKICAgZ19jb25kX2NsZWFyICgmc2VsZi0+ZHJhaW5fY29uZCk7CiAKKyAgZ19tdXRleF9jbGVhciAoJnNlbGYtPmdsX2xvY2spOworICBnX2NvbmRfY2xlYXIgKCZzZWxmLT5nbF9jb25kKTsKKworICBpZiAoc2VsZi0+Z2xfcXVldWUpIHsKKyAgICBnX3F1ZXVlX2ZyZWVfZnVsbCAoc2VsZi0+Z2xfcXVldWUsIChHRGVzdHJveU5vdGlmeSkgX2dsX3N5bmNfdW5yZWYpOworICAgIHNlbGYtPmdsX3F1ZXVlID0gTlVMTDsKKyAgfQorCiAgIEdfT0JKRUNUX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqZWN0KTsKIH0KIAorc3RhdGljIHZvaWQKK2dzdF9hbWNfdmlkZW9fZGVjX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpCit7CisgIEdzdEFtY1ZpZGVvRGVjICpzZWxmID0gR1NUX0FNQ19WSURFT19ERUMgKGVsZW1lbnQpOworCisgIGdzdF9nbF9oYW5kbGVfc2V0X2NvbnRleHQgKGVsZW1lbnQsIGNvbnRleHQsICZzZWxmLT5nbF9kaXNwbGF5LAorICAgICAgJnNlbGYtPm90aGVyX2dsX2NvbnRleHQpOworCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7Cit9CisKIHN0YXRpYyBHc3RTdGF0ZUNoYW5nZVJldHVybgogZ3N0X2FtY192aWRlb19kZWNfY2hhbmdlX3N0YXRlIChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0U3RhdGVDaGFuZ2UgdHJhbnNpdGlvbikKIHsKQEAgLTMyNyw2ICs1ODUsMTAgQEAKICAgICAgIEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSk7CiAgIHNlbGYgPSBHU1RfQU1DX1ZJREVPX0RFQyAoZWxlbWVudCk7CiAKKyAgR1NUX0RFQlVHX09CSkVDVCAoZWxlbWVudCwgImNoYW5naW5nIHN0YXRlOiAlcyA9PiAlcyIsCisgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAoR1NUX1NUQVRFX1RSQU5TSVRJT05fQ1VSUkVOVCAodHJhbnNpdGlvbikpLAorICAgICAgZ3N0X2VsZW1lbnRfc3RhdGVfZ2V0X25hbWUgKEdTVF9TVEFURV9UUkFOU0lUSU9OX05FWFQgKHRyYW5zaXRpb24pKSk7CisKICAgc3dpdGNoICh0cmFuc2l0aW9uKSB7CiAgICAgY2FzZSBHU1RfU1RBVEVfQ0hBTkdFX05VTExfVE9fUkVBRFk6CiAgICAgICBicmVhazsKQEAgLTMzOSw5ICs2MDEsMTEgQEAKICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX1NUQVRFX0NIQU5HRV9QQVVTRURfVE9fUkVBRFk6CiAgICAgICBzZWxmLT5mbHVzaGluZyA9IFRSVUU7Ci0gICAgICBnc3RfYW1jX2NvZGVjX2ZsdXNoIChzZWxmLT5jb2RlYywgJmVycik7Ci0gICAgICBpZiAoZXJyKQotICAgICAgICBHU1RfRUxFTUVOVF9XQVJOSU5HX0ZST01fRVJST1IgKHNlbGYsIGVycik7CisgICAgICBpZiAoc2VsZi0+c3RhcnRlZCkgeworICAgICAgICBnc3RfYW1jX2NvZGVjX2ZsdXNoIChzZWxmLT5jb2RlYywgJmVycik7CisgICAgICAgIGlmIChlcnIpCisgICAgICAgICAgR1NUX0VMRU1FTlRfV0FSTklOR19GUk9NX0VSUk9SIChzZWxmLCBlcnIpOworICAgICAgfQogICAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CiAgICAgICBzZWxmLT5kcmFpbmluZyA9IEZBTFNFOwogICAgICAgZ19jb25kX2Jyb2FkY2FzdCAoJnNlbGYtPmRyYWluX2NvbmQpOwpAQCAtMzY2LDggKzYzMCw2IEBACiAgICAgICBzZWxmLT5kb3duc3RyZWFtX2Zsb3dfcmV0ID0gR1NUX0ZMT1dfRkxVU0hJTkc7CiAgICAgICBzZWxmLT5zdGFydGVkID0gRkFMU0U7CiAgICAgICBicmVhazsKLSAgICBjYXNlIEdTVF9TVEFURV9DSEFOR0VfUkVBRFlfVE9fTlVMTDoKLSAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CiAgICAgICBicmVhazsKICAgfQpAQCAtNDY0LDYgKzcyNiwyNSBAQAogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9hbWNfdmlkZW9fZGVjX2NoZWNrX2NvZGVjX2NvbmZpZyAoR3N0QW1jVmlkZW9EZWMgKiBzZWxmKQoreworICBnYm9vbGVhbiByZXQgPSAoc2VsZi0+Y29kZWNfY29uZmlnID09IEFNQ19DT0RFQ19DT05GSUdfTk9ORQorICAgICAgfHwgKHNlbGYtPmNvZGVjX2NvbmZpZyA9PSBBTUNfQ09ERUNfQ09ORklHX1dJVEhfU1VSRkFDRQorICAgICAgICAgICYmIHNlbGYtPmRvd25zdHJlYW1fc3VwcG9ydHNfZ2wpCisgICAgICB8fCAoc2VsZi0+Y29kZWNfY29uZmlnID09IEFNQ19DT0RFQ19DT05GSUdfV0lUSE9VVF9TVVJGQUNFCisgICAgICAgICAgJiYgIXNlbGYtPmRvd25zdHJlYW1fc3VwcG9ydHNfZ2wpKTsKKworICBpZiAoIXJldCkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QKKyAgICAgICAgKHNlbGYsCisgICAgICAgICJDb2RlYyBjb25maWd1cmF0aW9uICglZCkgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBkb3duc3RyZWFtIHdoaWNoICVzIHN1cHBvcnQgR0wgb3V0cHV0IiwKKyAgICAgICAgc2VsZi0+Y29kZWNfY29uZmlnLCBzZWxmLT5kb3duc3RyZWFtX3N1cHBvcnRzX2dsID8gImRvZXMiIDogImRvZXMgbm90Iik7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hbWNfdmlkZW9fZGVjX3NldF9zcmNfY2FwcyAoR3N0QW1jVmlkZW9EZWMgKiBzZWxmLCBHc3RBbWNGb3JtYXQgKiBmb3JtYXQpCiB7CiAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqb3V0cHV0X3N0YXRlOwpAQCAtNTI0LDkgKzgwNSwxMyBAQAogICAgIHJldHVybiBGQUxTRTsKICAgfQogCi0gIGdzdF9mb3JtYXQgPQotICAgICAgZ3N0X2FtY19jb2xvcl9mb3JtYXRfdG9fdmlkZW9fZm9ybWF0IChrbGFzcy0+Y29kZWNfaW5mbywgbWltZSwKLSAgICAgIGNvbG9yX2Zvcm1hdCk7CisgIGlmIChzZWxmLT5jb2RlY19jb25maWcgPT0gQU1DX0NPREVDX0NPTkZJR19XSVRIX1NVUkZBQ0UpIHsKKyAgICBnc3RfZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9SR0JBOworICB9IGVsc2UgeworICAgIGdzdF9mb3JtYXQgPQorICAgICAgICBnc3RfYW1jX2NvbG9yX2Zvcm1hdF90b192aWRlb19mb3JtYXQgKGtsYXNzLT5jb2RlY19pbmZvLCBtaW1lLAorICAgICAgICBjb2xvcl9mb3JtYXQpOworICB9CiAKICAgaWYgKGdzdF9mb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9VTktOT1dOKSB7CiAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIlVua25vd24gY29sb3IgZm9ybWF0IDB4JTA4eCIsIGNvbG9yX2Zvcm1hdCk7CkBAIC01NDIsNyArODI3LDM1IEBACiAgICAgICAgIEdTVF9WSURFT19NVUxUSVZJRVdfTU9ERV9UT1BfQk9UVE9NLCBHU1RfVklERU9fTVVMVElWSUVXX0ZMQUdTX05PTkUpOwogICB9CiAKKyAgbWVtc2V0ICgmc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8sIDAsIHNpemVvZiAoc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8pKTsKKyAgaWYgKHNlbGYtPmNvZGVjX2NvbmZpZyA9PSBBTUNfQ09ERUNfQ09ORklHX1dJVEhfU1VSRkFDRSkgeworICAgIGlmIChvdXRwdXRfc3RhdGUtPmNhcHMpCisgICAgICBnc3RfY2Fwc191bnJlZiAob3V0cHV0X3N0YXRlLT5jYXBzKTsKKyAgICBvdXRwdXRfc3RhdGUtPmNhcHMgPSBnc3RfdmlkZW9faW5mb190b19jYXBzICgmb3V0cHV0X3N0YXRlLT5pbmZvKTsKKyAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKG91dHB1dF9zdGF0ZS0+Y2FwcywgMCwKKyAgICAgICAgZ3N0X2NhcHNfZmVhdHVyZXNfbmV3IChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksIE5VTEwpKTsKKyAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChvdXRwdXRfc3RhdGUtPmNhcHMsICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcsCisgICAgICAgICJleHRlcm5hbC1vZXMiLCBOVUxMKTsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiQ29uZmlndXJpbmcgZm9yIFN1cmZhY2Ugb3V0cHV0Iik7CisKKyAgICAvKiBUaGUgd2lkdGgvaGVpZ2h0IHZhbHVlcyBhcmUgdXNlZCBpbiBvdGhlciBwbGFjZXMgZm9yCisgICAgICogY2hlY2tpbmcgaWYgdGhlIHJlc29sdXRpb24gY2hhbmdlZC4gU2V0IGV2ZXJ5dGhpbmcKKyAgICAgKiB0aGF0IG1ha2VzIHNlbnNlIGhlcmUKKyAgICAgKi8KKyAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5jb2xvcl9mb3JtYXQgPSBDT0xPUl9Gb3JtYXRBbmRyb2lkT3BhcXVlOworICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLndpZHRoID0gd2lkdGg7CisgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uaGVpZ2h0ID0gaGVpZ2h0OworICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNyb3BfbGVmdCA9IGNyb3BfbGVmdDsKKyAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5jcm9wX3JpZ2h0ID0gY3JvcF9yaWdodDsKKyAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5jcm9wX3RvcCA9IGNyb3BfdG9wOworICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNyb3BfYm90dG9tID0gY3JvcF9ib3R0b207CisKKyAgICBnb3RvIG91dDsKKyAgfQorCiAgIHNlbGYtPmZvcm1hdCA9IGdzdF9mb3JtYXQ7CisgIHNlbGYtPndpZHRoID0gd2lkdGg7CisgIHNlbGYtPmhlaWdodCA9IGhlaWdodDsKICAgaWYgKCFnc3RfYW1jX2NvbG9yX2Zvcm1hdF9pbmZvX3NldCAoJnNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLAogICAgICAgICAgIGtsYXNzLT5jb2RlY19pbmZvLCBtaW1lLCBjb2xvcl9mb3JtYXQsIHdpZHRoLCBoZWlnaHQsIHN0cmlkZSwKICAgICAgICAgICBzbGljZV9oZWlnaHQsIGNyb3BfbGVmdCwgY3JvcF9yaWdodCwgY3JvcF90b3AsIGNyb3BfYm90dG9tKSkgewpAQCAtNTUxLDE2ICs4NjQsMTkgQEAKICAgfQogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsCi0gICAgICAiQ29sb3IgZm9ybWF0IGluZm86IHtjb2xvcl9mb3JtYXQ9JWQsIHdpZHRoPSVkLCBoZWlnaHQ9JWQsICIKKyAgICAgICJDb2xvciBmb3JtYXQgaW5mbzoge2NvbG9yX2Zvcm1hdD0lZCAoMHglMDh4KSwgd2lkdGg9JWQsIGhlaWdodD0lZCwgIgogICAgICAgInN0cmlkZT0lZCwgc2xpY2UtaGVpZ2h0PSVkLCBjcm9wLWxlZnQ9JWQsIGNyb3AtdG9wPSVkLCAiCiAgICAgICAiY3JvcC1yaWdodD0lZCwgY3JvcC1ib3R0b209JWQsIGZyYW1lLXNpemU9JWR9IiwKKyAgICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNvbG9yX2Zvcm1hdCwKICAgICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNvbG9yX2Zvcm1hdCwgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8ud2lkdGgsCiAgICAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5oZWlnaHQsIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLnN0cmlkZSwKICAgICAgIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLnNsaWNlX2hlaWdodCwgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY3JvcF9sZWZ0LAogICAgICAgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY3JvcF90b3AsIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmNyb3BfcmlnaHQsCiAgICAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5jcm9wX2JvdHRvbSwgc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uZnJhbWVfc2l6ZSk7CiAKK291dDoKICAgcmV0ID0gZ3N0X3ZpZGVvX2RlY29kZXJfbmVnb3RpYXRlIChHU1RfVklERU9fREVDT0RFUiAoc2VsZikpOworCiAgIGdzdF92aWRlb19jb2RlY19zdGF0ZV91bnJlZiAob3V0cHV0X3N0YXRlKTsKICAgc2VsZi0+aW5wdXRfc3RhdGVfY2hhbmdlZCA9IEZBTFNFOwogCkBAIC01NzYsNiArODkyLDkgQEAKICAgR3N0VmlkZW9JbmZvICppbmZvID0gJnN0YXRlLT5pbmZvOwogICBnYm9vbGVhbiByZXQgPSBGQUxTRTsKIAorICBpZiAoc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8uY29sb3JfZm9ybWF0ID09IENPTE9SX0Zvcm1hdEFuZHJvaWRPcGFxdWUpCisgICAgcmV0dXJuIEZBTFNFOworCiAgIHJldCA9CiAgICAgICBnc3RfYW1jX2NvbG9yX2Zvcm1hdF9jb3B5ICgmc2VsZi0+Y29sb3JfZm9ybWF0X2luZm8sIGJ1ZiwgYnVmZmVyX2luZm8sCiAgICAgICBpbmZvLCBvdXRidWYsIENPTE9SX0ZPUk1BVF9DT1BZX09VVCk7CkBAIC01ODQsNiArOTAzLDMyMSBAQAogICByZXR1cm4gcmV0OwogfQogCitzdGF0aWMgY29uc3QgZ2Zsb2F0IHlmbGlwX21hdHJpeFsxNl0gPSB7CisgIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCisgIDAuMGYsIC0xLjBmLCAwLjBmLCAwLjBmLAorICAwLjBmLCAwLjBmLCAxLjBmLCAwLjBmLAorICAwLjBmLCAxLjBmLCAwLjBmLCAxLjBmCit9OworCitzdGF0aWMgdm9pZAorX2FtY19nbF9zZXRfc3luYyAoR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSwgR3N0R0xDb250ZXh0ICogY29udGV4dCkKK3sKK30KKworc3RhdGljIHZvaWQKK19nbF9zeW5jX3JlbGVhc2VfYnVmZmVyIChzdHJ1Y3QgZ2xfc3luYyAqc3luYywgZ2Jvb2xlYW4gcmVuZGVyKQoreworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBpZiAoIXN5bmMtPnJlc3VsdC0+cmVsZWFzZWQpIHsKKyAgICBzeW5jLT5yZWxlYXNlZF90cyA9IGdfZ2V0X21vbm90b25pY190aW1lICgpOworCisgICAgaWYgKChnaW50KSAoc3luYy0+c2luay0+Z2xfcmVsZWFzZWRfZnJhbWVfY291bnQgLQorICAgICAgICAgICAgc3luYy0+c2luay0+Z2xfcmVhZHlfZnJhbWVfY291bnQpID4gMCkgeworICAgICAgZ3VpbnQgZGlmZiA9CisgICAgICAgICAgc3luYy0+c2luay0+Z2xfcmVsZWFzZWRfZnJhbWVfY291bnQgLQorICAgICAgICAgIHN5bmMtPnNpbmstPmdsX3JlYWR5X2ZyYW1lX2NvdW50IC0gMXU7CisgICAgICBzeW5jLT5zaW5rLT5nbF9yZWFkeV9mcmFtZV9jb3VudCArPSBkaWZmOworICAgICAgR1NUX0xPRyAoImdsX3N5bmMgJXAgcG9zc2libGUgXCdvbl9mcmFtZV9hdmFpbGFibGVcJyBsaXN0ZW5lciBtaXNzICIKKyAgICAgICAgICAiZGV0ZWN0ZWQsIGF0dGVtcHRpbmcgdG8gd29yayBhcm91bmQuICBKdW1waW5nIGZvcndhcmQgJXUgIgorICAgICAgICAgICJmcmFtZXMgZm9yIGZyYW1lICV1Iiwgc3luYywgZGlmZiwgc3luYy0+Z2xfZnJhbWVfbm8pOworICAgIH0KKworICAgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgcmVsZWFzZV9vdXRwdXRfYnVmZmVyIGlkeCAldSBmcmFtZSAldSByZW5kZXIgJXMiLAorICAgICAgICBzeW5jLCBzeW5jLT5idWZmZXJfaWR4LCBzeW5jLT5nbF9mcmFtZV9ubywgcmVuZGVyID8gIlRSVUUiIDogIkZBTFNFIik7CisKKyAgICAvKiBSZWxlYXNlIHRoZSBmcmFtZSBpbnRvIHRoZSBzdXJmYWNlICovCisgICAgc3luYy0+c2luay0+Z2xfcmVsZWFzZWRfZnJhbWVfY291bnQrKzsKKyAgICBpZiAoIXJlbmRlcikgeworICAgICAgLyogQWR2YW5jZSB0aGUgcmVhZHkgY291bnRlciBvdXJzZWx2ZXMgaWYgd2UgYXJlbid0IGdvaW5nIHRvIHJlbmRlcgorICAgICAgICogYW5kIHRoZXJlZm9yZSByZWNlaXZlIGEgbGlzdGVuZXIgY2FsbGJhY2sgKi8KKyAgICAgIHN5bmMtPnNpbmstPmdsX3JlYWR5X2ZyYW1lX2NvdW50Kys7CisgICAgfQorCisgICAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc3luYy0+c2luay0+Y29kZWMsCisgICAgICAgICAgICBzeW5jLT5idWZmZXJfaWR4LCByZW5kZXIsICZlcnJvcikpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN5bmMtPnNpbmssCisgICAgICAgICAgImdsX3N5bmMgJXAgRmFpbGVkIHRvIHJlbmRlciBidWZmZXIsIGluZGV4ICVkIGZyYW1lICV1Iiwgc3luYywKKyAgICAgICAgICBzeW5jLT5idWZmZXJfaWR4LCBzeW5jLT5nbF9mcmFtZV9ubyk7CisgICAgICBnb3RvIG91dDsKKyAgICB9CisgICAgc3luYy0+cmVzdWx0LT5yZWxlYXNlZCA9IFRSVUU7CisgICAgc3luYy0+cmVzdWx0LT5yZW5kZXJlZCA9IHJlbmRlcjsKKyAgfQorCitvdXQ6CisgIGlmIChlcnJvcikgeworICAgIGlmIChzeW5jLT5zaW5rLT5nbF9lcnJvciA9PSBOVUxMKQorICAgICAgc3luYy0+c2luay0+Z2xfZXJyb3IgPSBlcnJvcjsKKyAgICBlbHNlCisgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfZ2xfc3luY19yZWxlYXNlX25leHRfYnVmZmVyIChzdHJ1Y3QgZ2xfc3luYyAqc3luYywgZ2Jvb2xlYW4gcmVuZGVyKQoreworICBHTGlzdCAqbDsKKworICBpZiAoKGwgPSBfZmluZF9nbF9zeW5jX2Zvcl9mcmFtZSAoc3luYy0+c2luaywgc3luYy0+Z2xfZnJhbWVfbm8gKyAxKSkpIHsKKyAgICBzdHJ1Y3QgZ2xfc3luYyAqbmV4dCA9IGwtPmRhdGE7CisKKyAgICBfZ2xfc3luY19yZWxlYXNlX2J1ZmZlciAobmV4dCwgcmVuZGVyKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfVFJBQ0UgKCJnbF9zeW5jICVwIG5vIG5leHQgZnJhbWUgYXZhaWxhYmxlIiwgc3luYyk7CisgIH0KK30KKworLyogY2FsbGVyIHNob3VsZCByZW1vdmUgZnJvbSB0aGUgZ2xfcXVldWUgYWZ0ZXIgY2FsbGluZyB0aGlzIGZ1bmN0aW9uLgorICogX2dsX3N5bmNfcmVsZWFzZV9idWZmZXIgbXVzdCBiZSBjYWxsZWQgYmVmb3JlIHRoaXMgZnVuY3Rpb24gKi8KK3N0YXRpYyB2b2lkCitfZ2xfc3luY19yZW5kZXJfdW5sb2NrZWQgKHN0cnVjdCBnbF9zeW5jICpzeW5jKQoreworICBHc3RWaWRlb0FmZmluZVRyYW5zZm9ybWF0aW9uTWV0YSAqYWZfbWV0YTsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgIGdmbG9hdCBtYXRyaXhbMTZdOworICBnaW50NjQgdHMgPSAwOworCisgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgcmVzdWx0ICVwIHJlbmRlciAodXBkYXRlZDoldSkiLCBzeW5jLCBzeW5jLT5yZXN1bHQsCisgICAgICBzeW5jLT5yZXN1bHQtPnVwZGF0ZWQpOworCisgIGlmIChzeW5jLT5yZXN1bHQtPnVwZGF0ZWQgfHwgIXN5bmMtPnJlc3VsdC0+cmVuZGVyZWQpCisgICAgcmV0dXJuOworCisgIC8qIEZJWE1FOiBpZiB0aGlzIGV2ZXIgc3RhcnRzIHJldHVybmluZyB2YWxpZCB2YWx1ZXMgd2Ugc2hvdWxkIGF0dGVtcHQKKyAgICogdG8gdXNlIGl0ICovCisgIGlmICghZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3RpbWVzdGFtcCAoc3luYy0+c3VyZmFjZS0+dGV4dHVyZSwgJnRzLAorICAgICAgICAgICZlcnJvcikpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzeW5jLT5zaW5rLCAiRmFpbGVkIHRvIHVwZGF0ZSB0ZXh0dXJlIGltYWdlIik7CisgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc3luYy0+c2luaywgZXJyb3IpOworICAgIGdvdG8gb3V0OworICB9CisgIEdTVF9UUkFDRSAoImdsX3N5bmMgJXAgcmVuZGVyaW5nIHRpbWVzdGFtcCBiZWZvcmUgdXBkYXRlICUiIEdfR0lOVDY0X0ZPUk1BVCwKKyAgICAgIHN5bmMsIHRzKTsKKworICBHU1RfVFJBQ0UgKCJnbF9zeW5jICVwIHVwZGF0ZV90ZXhfaW1hZ2UiLCBzeW5jKTsKKyAgaWYgKCFnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV91cGRhdGVfdGV4X2ltYWdlIChzeW5jLT5zdXJmYWNlLT50ZXh0dXJlLAorICAgICAgICAgICZlcnJvcikpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzeW5jLT5zaW5rLCAiRmFpbGVkIHRvIHVwZGF0ZSB0ZXh0dXJlIGltYWdlIik7CisgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc3luYy0+c2luaywgZXJyb3IpOworICAgIGdvdG8gb3V0OworICB9CisgIEdTVF9UUkFDRSAoImdsX3N5bmMgcmVzdWx0ICVwIHVwZGF0ZWQiLCBzeW5jLT5yZXN1bHQpOworICBzeW5jLT5yZXN1bHQtPnVwZGF0ZWQgPSBUUlVFOworICBzeW5jLT5zaW5rLT5nbF9sYXN0X3JlbmRlcmVkX2ZyYW1lID0gc3luYy0+Z2xfZnJhbWVfbm87CisKKyAgaWYgKCFnc3RfYW1jX3N1cmZhY2VfdGV4dHVyZV9nZXRfdGltZXN0YW1wIChzeW5jLT5zdXJmYWNlLT50ZXh0dXJlLCAmdHMsCisgICAgICAgICAgJmVycm9yKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHN5bmMtPnNpbmssICJGYWlsZWQgdG8gdXBkYXRlIHRleHR1cmUgaW1hZ2UiKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzeW5jLT5zaW5rLCBlcnJvcik7CisgICAgZ290byBvdXQ7CisgIH0KKyAgR1NUX1RSQUNFICgiZ2xfc3luYyAlcCByZW5kZXJpbmcgdGltZXN0YW1wIGFmdGVyIHVwZGF0ZSAlIiBHX0dJTlQ2NF9GT1JNQVQsCisgICAgICBzeW5jLCB0cyk7CisKKyAgYWZfbWV0YSA9IGdzdF9idWZmZXJfZ2V0X3ZpZGVvX2FmZmluZV90cmFuc2Zvcm1hdGlvbl9tZXRhIChzeW5jLT5idWZmZXIpOworICBpZiAoIWFmX21ldGEpIHsKKyAgICBHU1RfV0FSTklORyAoIkZhaWxlZCB0byByZXRyZWl2ZSB0aGUgdHJhbnNmb3JtYXRpb24gbWV0YSBmcm9tIHRoZSAiCisgICAgICAgICJnbF9zeW5jICVwIGJ1ZmZlciAlcCIsIHN5bmMsIHN5bmMtPmJ1ZmZlcik7CisgIH0gZWxzZSBpZiAoZ3N0X2FtY19zdXJmYWNlX3RleHR1cmVfZ2V0X3RyYW5zZm9ybV9tYXRyaXggKHN5bmMtPgorICAgICAgICAgIHN1cmZhY2UtPnRleHR1cmUsIG1hdHJpeCwgJmVycm9yKSkgeworCisgICAgZ3N0X3ZpZGVvX2FmZmluZV90cmFuc2Zvcm1hdGlvbl9tZXRhX2FwcGx5X21hdHJpeCAoYWZfbWV0YSwgbWF0cml4KTsKKyAgICBnc3RfdmlkZW9fYWZmaW5lX3RyYW5zZm9ybWF0aW9uX21ldGFfYXBwbHlfbWF0cml4IChhZl9tZXRhLCB5ZmxpcF9tYXRyaXgpOworICB9CisKKyAgR1NUX0xPRyAoImdsX3N5bmMgJXAgc3VjY2Vzc2Z1bGx5IHVwZGF0ZWQgU3VyZmFjZVRleHR1cmUgJXAgaW50byAiCisgICAgICAiT0VTIHRleHR1cmUgJXUiLCBzeW5jLCBzeW5jLT5zdXJmYWNlLT50ZXh0dXJlLCBzeW5jLT5vZXNfbWVtLT50ZXhfaWQpOworCitvdXQ6CisgIGlmIChlcnJvcikgeworICAgIGlmIChzeW5jLT5zaW5rLT5nbF9lcnJvciA9PSBOVUxMKQorICAgICAgc3luYy0+c2luay0+Z2xfZXJyb3IgPSBlcnJvcjsKKyAgICBlbHNlCisgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOworICB9CisKKyAgX2dsX3N5bmNfcmVsZWFzZV9uZXh0X2J1ZmZlciAoc3luYywgVFJVRSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2FtY19nbF9wb3NzaWJseV93YWl0X2Zvcl9nbF9zeW5jIChzdHJ1Y3QgZ2xfc3luYyAqc3luYywgZ2ludDY0IGVuZF90aW1lKQoreworICBHU1RfVFJBQ0UgKCJnbF9zeW5jICVwIHdhaXRpbmcgZm9yIGZyYW1lICV1IGN1cnJlbnQgJXUgdXBkYXRlZCAldSAiLCBzeW5jLAorICAgICAgc3luYy0+Z2xfZnJhbWVfbm8sIHN5bmMtPnNpbmstPmdsX3JlYWR5X2ZyYW1lX2NvdW50LAorICAgICAgc3luYy0+cmVzdWx0LT51cGRhdGVkKTsKKworICBpZiAoKGdpbnQpIChzeW5jLT5zaW5rLT5nbF9sYXN0X3JlbmRlcmVkX2ZyYW1lIC0gc3luYy0+Z2xfZnJhbWVfbm8pID4gMCkgeworICAgIEdTVF9FUlJPUiAoImdsX3N5bmMgJXAgdW5zdWNjZXNzZnVsbHkgd2FpdGVkIGZvciBmcmFtZSAldS4gb3V0IG9mIG9yZGVyICIKKyAgICAgICAgIndhaXQgZGV0ZWN0ZWQiLCBzeW5jLCBzeW5jLT5nbF9mcmFtZV9ubyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgLyogVGhlIG51bWJlciBvZiBmcmFtZSBjYWxsYmFja3MgKGdsX3JlYWR5X2ZyYW1lX2NvdW50KSBpcyBub3QgYSBkaXJlY3QKKyAgICogcmVsYXRpb25zaGlwIHdpdGggdGhlIG51bWJlciBvZiBwdXNoZWQgYnVmZmVycyAoZ2xfcHVzaGVkX2ZyYW1lX2NvdW50KQorICAgKiBvciBldmVuLCB0aGUgbnVtYmVyIG9mIHJlbGVhc2VkIGJ1ZmZlcnMgKGdsX3JlbGVhc2VkX2ZyYW1lX2NvdW50KQorICAgKiBhcywgZnJvbSB0aGUgZnJhbWV3b3Jrcy9uYXRpdmUvaW5jbHVkZS9ndWkvQ29uc3VtZXJCYXNlLmggZmlsZSwKKyAgICoKKyAgICogICAgIi4uLmZyYW1lcyB0aGF0IGFyZSBxdWV1ZWQgd2hpbGUgaW4gYXN5bmNocm9ub3VzIG1vZGUgb25seSB0cmlnZ2VyIHRoZQorICAgKiAgICBjYWxsYmFjayBpZiBubyBwcmV2aW91cyBmcmFtZXMgYXJlIHBlbmRpbmcuIgorICAgKgorICAgKiBBcyBhIHJlc3VsdCwgd2UgbmVlZCB0byBhZHZhbmNlIHRoZSByZWFkeSBjb3VudGVyIHNvbWVob3cgb3Vyc2VsdmVzIHdoZW4KKyAgICogc3VjaCBldmVudHMgaGFwcGVuLiBUaGVyZSBpcyBubyByZWxpYWJsZSB3YXkgb2Yga25vd2luZyB3aGVuL2lmIHRoZSBmcmFtZQorICAgKiBsaXN0ZW5lciBpcyBnb2luZyB0byBmaXJlLiAgVGhlIG9ubHkgdW5pcXVldSBpZGVudGlmaWVyLAorICAgKiBTdXJmYWNlVGV4dHVyZTo6Z2V0X3RpbWVzdGFtcCBzZWVtcyB0byBhbHdheXMgcmV0dXJuIDAuCisgICAqCisgICAqIFRoZSBtYXhpbXVtIHF1ZXVlIHNpemUgYXMgZGVmaW5lZCBpbgorICAgKiBmcmFtZXdvcmtzL25hdGl2ZS9pbmNsdWRlL2d1aS9CdWZmZXJRdWV1ZS5oCisgICAqIGlzIDMyIG9mIHdoaWNoIGEgbWF4aW11bSBvZiAzMCBjYW4gYmUgYWNxdWlyZWQgYXQgYSB0aW1lIHNvIHdlIHBpY2tlZCBhCisgICAqIG51bWJlciBsZXNzIHRoYW4gdGhhdCB0byB3YWl0IGZvciBiZWZvcmUgdXBkYXRpbmcgdGhlIHJlYWR5IGZyYW1lIGNvdW50LgorICAgKi8KKworICB3aGlsZSAoIXN5bmMtPnJlc3VsdC0+dXBkYXRlZAorICAgICAgJiYgKGdpbnQpIChzeW5jLT5zaW5rLT5nbF9yZWFkeV9mcmFtZV9jb3VudCAtIHN5bmMtPmdsX2ZyYW1lX25vKSA8IDApIHsKKyAgICAvKiBUaGUgdGltZSBsaW1pdCBpcyBuZWVkIG90aGVyd2lzZSB3aGVuIGFtYyBkZWNpZGVzIHRvIG5vdCBlbWl0IHRoZQorICAgICAqIGZyYW1lIGxpc3RlbmVyIChzYXksIG9uIG9yaWVudGF0aW9uIGNoYW5nZXMpIHdlIGRvbid0IHdhaXQgZm9yZWV2ZXIgKi8KKyAgICBpZiAoZW5kX3RpbWUgPT0gLTEgfHwgIWdfY29uZF93YWl0X3VudGlsICgmc3luYy0+c2luay0+Z2xfY29uZCwKKyAgICAgICAgICAgICZzeW5jLT5zaW5rLT5nbF9sb2NrLCBlbmRfdGltZSkpIHsKKyAgICAgIEdTVF9MT0cgKCJnbF9zeW5jICVwIHVuc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3IgZnJhbWUgJXUiLCBzeW5jLAorICAgICAgICAgIHN5bmMtPmdsX2ZyYW1lX25vKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKyAgR1NUX0xPRyAoImdsX3N5bmMgJXAgc3VjY2Vzc2Z1bGx5IHdhaXRlZCBmb3IgZnJhbWUgJXUiLCBzeW5jLAorICAgICAgc3luYy0+Z2xfZnJhbWVfbm8pOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19hbWNfZ2xfaXRlcmF0ZV9xdWV1ZV91bmxvY2tlZCAoR3N0R0xTeW5jTWV0YSAqIHN5bmNfbWV0YSwgZ2Jvb2xlYW4gd2FpdCkKK3sKKyAgc3RydWN0IGdsX3N5bmMgKnN5bmMgPSBzeW5jX21ldGEtPmRhdGE7CisgIHN0cnVjdCBnbF9zeW5jICp0bXA7CisgIGdib29sZWFuIHJldCA9IFRSVUU7CisgIGdpbnQ2NCBlbmRfdGltZTsKKworICB3aGlsZSAoKHRtcCA9IGdfcXVldWVfcGVla19oZWFkIChzeW5jLT5zaW5rLT5nbF9xdWV1ZSkpKSB7CisgICAgLyogc2tpcCBmcmFtZXMgdGhhdCBhcmUgYWhlYWQgb2YgdGhlIGN1cnJlbnQgd2FpdCBmcmFtZSAqLworICAgIGlmICgoZ2ludCkgKHN5bmMtPmdsX2ZyYW1lX25vIC0gdG1wLT5nbF9mcmFtZV9ubykgPCAwKSB7CisgICAgICBHU1RfVFJBQ0UgKCJnbF9zeW5jICVwIGZyYW1lICV1IGlzIGFoZWFkIG9mIGdsX3N5bmMgJXAgZnJhbWUgJXUiLCB0bXAsCisgICAgICAgICAgdG1wLT5nbF9mcmFtZV9ubywgc3luYywgc3luYy0+Z2xfZnJhbWVfbm8pOworICAgICAgYnJlYWs7CisgICAgfQorCisgICAgX2dsX3N5bmNfcmVsZWFzZV9idWZmZXIgKHRtcCwgd2FpdCk7CisKKyAgICAvKiBGcmFtZXMgYXJlIGN1cnJlbnRseSBwdXNoZWQgaW4gb3JkZXIgYW5kIHdhaXRzIG5lZWQgdG8gYmUgcGVyZm9ybWVkCisgICAgICogaW4gdGhlIHNhbWUgb3JkZXIgKi8KKworICAgIGVuZF90aW1lID0gd2FpdCA/IDMwICogR19USU1FX1NQQU5fTUlMTElTRUNPTkQgKyB0bXAtPnJlbGVhc2VkX3RzIDogLTE7CisgICAgaWYgKCFfYW1jX2dsX3Bvc3NpYmx5X3dhaXRfZm9yX2dsX3N5bmMgKHRtcCwgZW5kX3RpbWUpKQorICAgICAgcmV0ID0gRkFMU0U7CisKKyAgICBfZ2xfc3luY19yZW5kZXJfdW5sb2NrZWQgKHRtcCk7CisKKyAgICBnX3F1ZXVlX3BvcF9oZWFkICh0bXAtPnNpbmstPmdsX3F1ZXVlKTsKKyAgICBfZ2xfc3luY191bnJlZiAodG1wKTsKKyAgfQorCisgIHJldHVybiByZXQ7Cit9CisKK3N0cnVjdCBnbF93YWl0Cit7CisgIEdzdEdMU3luY01ldGEgKnN5bmNfbWV0YTsKKyAgZ2Jvb2xlYW4gcmV0OworfTsKKworc3RhdGljIHZvaWQKK19hbWNfZ2xfd2FpdF9nbCAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgc3RydWN0IGdsX3dhaXQgKndhaXQpCit7CisgIHN0cnVjdCBnbF9zeW5jICpzeW5jID0gd2FpdC0+c3luY19tZXRhLT5kYXRhOworCisgIGdfbXV0ZXhfbG9jayAoJnN5bmMtPnNpbmstPmdsX2xvY2spOworICB3YWl0LT5yZXQgPSBfYW1jX2dsX2l0ZXJhdGVfcXVldWVfdW5sb2NrZWQgKHdhaXQtPnN5bmNfbWV0YSwgVFJVRSk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3luYy0+c2luay0+Z2xfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lkCitfYW1jX2dsX3dhaXQgKEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIHN0cnVjdCBnbF9zeW5jICpzeW5jID0gc3luY19tZXRhLT5kYXRhOworICBzdHJ1Y3QgZ2xfd2FpdCB3YWl0OworCisgIHdhaXQuc3luY19tZXRhID0gc3luY19tZXRhOworICB3YWl0LnJldCA9IEZBTFNFOworICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9hbWNfZ2xfd2FpdF9nbCwgJndhaXQpOworCisgIGlmICghd2FpdC5yZXQpCisgICAgR1NUX1dBUk5JTkcgKCJnbF9zeW5jICVwIGNvdWxkIG5vdCB3YWl0IGZvciBmcmFtZSwgdG9vayB0b28gbG9uZyIsIHN5bmMpOworfQorCitzdGF0aWMgdm9pZAorX2FtY19nbF9jb3B5IChHc3RHTFN5bmNNZXRhICogc3JjLCBHc3RCdWZmZXIgKiBzYnVmZmVyLCBHc3RHTFN5bmNNZXRhICogZGVzdCwKKyAgICBHc3RCdWZmZXIgKiBkYnVmZmVyKQoreworICBzdHJ1Y3QgZ2xfc3luYyAqc3luYyA9IHNyYy0+ZGF0YTsKKyAgc3RydWN0IGdsX3N5bmMgKnRtcDsKKworICB0bXAgPSBnX25ldzAgKHN0cnVjdCBnbF9zeW5jLCAxKTsKKworICBHU1RfVFJBQ0UgKCJjb3B5aW5nIGdsX3N5bmMgJXAgdG8gJXAiLCBzeW5jLCB0bXApOworCisgIGdfbXV0ZXhfbG9jayAoJnN5bmMtPnNpbmstPmdsX2xvY2spOworCisgIHRtcC0+cmVmY291bnQgPSAxOworICB0bXAtPnNpbmsgPSBzeW5jLT5zaW5rOworICB0bXAtPmJ1ZmZlciA9IGRidWZmZXI7CisgIHRtcC0+b2VzX21lbSA9IChHc3RHTE1lbW9yeSAqKSBnc3RfbWVtb3J5X3JlZiAoKEdzdE1lbW9yeSAqKSBzeW5jLT5vZXNfbWVtKTsKKyAgdG1wLT5zdXJmYWNlID0gZ19vYmplY3RfcmVmIChzeW5jLT5zdXJmYWNlKTsKKyAgdG1wLT5nbF9mcmFtZV9ubyA9IHN5bmMtPmdsX2ZyYW1lX25vOworICB0bXAtPnJlbGVhc2VkX3RzID0gc3luYy0+cmVsZWFzZWRfdHM7CisgIHRtcC0+cmVzdWx0ID0gc3luYy0+cmVzdWx0OworICBfZ2xfc3luY19yZXN1bHRfcmVmICh0bXAtPnJlc3VsdCk7CisgIGRlc3QtPmRhdGEgPSB0bXA7CisKKyAgZ19tdXRleF91bmxvY2sgKCZzeW5jLT5zaW5rLT5nbF9sb2NrKTsKK30KKworc3RhdGljIHZvaWQKK19hbWNfZ2xfcmVuZGVyX29uX2ZyZWUgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEpCit7CisgIHN0cnVjdCBnbF9zeW5jICpzeW5jID0gc3luY19tZXRhLT5kYXRhOworCisgIGdfbXV0ZXhfbG9jayAoJnN5bmMtPnNpbmstPmdsX2xvY2spOworICAvKiBqdXN0IHJlbmRlciBhcyBtYW55IGZyYW1lcyBhcyB3ZSBoYXZlICovCisgIF9hbWNfZ2xfaXRlcmF0ZV9xdWV1ZV91bmxvY2tlZCAoc3luY19tZXRhLCBGQUxTRSk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3luYy0+c2luay0+Z2xfbG9jayk7Cit9CisKK3N0YXRpYyB2b2lkCitfYW1jX2dsX2ZyZWUgKEdzdEdMU3luY01ldGEgKiBzeW5jX21ldGEsIEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIHN0cnVjdCBnbF9zeW5jICpzeW5jID0gc3luY19tZXRhLT5kYXRhOworCisgIC8qIFRoZSB3YWl0IHJlbmRlciBxdWV1ZSBpbnNpZGUgYW5kcm9pZCBpcyBub3QgdmVyeSBkZWVwIHNvIHdoZW4gd2UgZHJvcAorICAgKiBmcmFtZXMgd2UgbmVlZCB0byBzaWduYWwgdGhhdCB3ZSBoYXZlIHJlbmRlcmVkIHRoZW0gaWYgd2UgaGF2ZSBhbnkgY2hhbmNlCisgICAqIG9mIGtlZXBpbmcgdXAgYmV0d2VlbiB0aGUgZGVjb2RlciwgdGhlIGFuZHJvaWQgR0wgcXVldWUgYW5kIGRvd25zdHJlYW0KKyAgICogT3BlbkdMLiBJZiB3ZSBkb24ndCBkbyB0aGlzLCBvbmNlIHdlIHN0YXJ0IGRyb3BwaW5nIGZyYW1lcyBkb3duc3RyZWFtLAorICAgKiBpdCBpcyB2ZXJ5IG5lYXIgdG8gaW1wb3NzaWJsZSBmb3IgdGhlIHBpcGVsaW5lIHRvIGNhdGNoIHVwLiAqLworICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9hbWNfZ2xfcmVuZGVyX29uX2ZyZWUsIHN5bmNfbWV0YSk7CisgIF9nbF9zeW5jX3VucmVmIChzeW5jKTsKK30KKwogc3RhdGljIHZvaWQKIGdzdF9hbWNfdmlkZW9fZGVjX2xvb3AgKEdzdEFtY1ZpZGVvRGVjICogc2VsZikKIHsKQEAgLTU5NSw2ICsxMjI5LDcgQEAKICAgR3N0QW1jQnVmZmVySW5mbyBidWZmZXJfaW5mbzsKICAgZ2ludCBpZHg7CiAgIEdFcnJvciAqZXJyID0gTlVMTDsKKyAgZ2Jvb2xlYW4gcmVsZWFzZV9idWZmZXIgPSBUUlVFOwogCiAgIEdTVF9WSURFT19ERUNPREVSX1NUUkVBTV9MT0NLIChzZWxmKTsKIApAQCAtNjEyLDYgKzEyNDcsOCBAQAogICBHU1RfVklERU9fREVDT0RFUl9TVFJFQU1fTE9DSyAoc2VsZik7CiAgIC8qfSAqLwogCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJkZXF1ZXVlT3V0cHV0QnVmZmVyKCkgcmV0dXJuZWQgJWQgKDB4JXgpIiwgaWR4LCBpZHgpOworCiAgIGlmIChpZHggPCAwKSB7CiAgICAgaWYgKHNlbGYtPmZsdXNoaW5nKSB7CiAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKQEAgLTY3NSwxOCArMTMxMiwxMTYgQEAKICAgaXNfZW9zID0gISAhKGJ1ZmZlcl9pbmZvLmZsYWdzICYgQlVGRkVSX0ZMQUdfRU5EX09GX1NUUkVBTSk7CiAKICAgYnVmID0gZ3N0X2FtY19jb2RlY19nZXRfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycik7Ci0gIGlmICghYnVmKQorICBpZiAoZXJyKQogICAgIGdvdG8gZmFpbGVkX3RvX2dldF9vdXRwdXRfYnVmZmVyOwogCisgIGlmIChzZWxmLT5jb2RlY19jb25maWcgIT0gQU1DX0NPREVDX0NPTkZJR19XSVRIX1NVUkZBQ0UgJiYgIWJ1ZikKKyAgICBnb3RvIGdvdF9udWxsX291dHB1dF9idWZmZXI7CisKICAgaWYgKGZyYW1lCiAgICAgICAmJiAoZGVhZGxpbmUgPQogICAgICAgICAgIGdzdF92aWRlb19kZWNvZGVyX2dldF9tYXhfZGVjb2RlX3RpbWUgKEdTVF9WSURFT19ERUNPREVSIChzZWxmKSwKICAgICAgICAgICAgICAgZnJhbWUpKSA8IDApIHsKICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKHNlbGYsCi0gICAgICAgICJGcmFtZSBpcyB0b28gbGF0ZSwgZHJvcHBpbmcgKGRlYWRsaW5lICUiIEdTVF9USU1FX0ZPUk1BVCAiKSIsCi0gICAgICAgIEdTVF9USU1FX0FSR1MgKC1kZWFkbGluZSkpOworICAgICAgICAiRnJhbWUgaXMgdG9vIGxhdGUsIGRyb3BwaW5nIChkZWFkbGluZSAlIiBHU1RfU1RJTUVfRk9STUFUICIpIiwKKyAgICAgICAgR1NUX1NUSU1FX0FSR1MgKGRlYWRsaW5lKSk7CiAgICAgZmxvd19yZXQgPSBnc3RfdmlkZW9fZGVjb2Rlcl9kcm9wX2ZyYW1lIChHU1RfVklERU9fREVDT0RFUiAoc2VsZiksIGZyYW1lKTsKLSAgfSBlbHNlIGlmICghZnJhbWUgJiYgYnVmZmVyX2luZm8uc2l6ZSA+IDApIHsKKyAgfSBlbHNlIGlmIChmcmFtZSAmJiBzZWxmLT5jb2RlY19jb25maWcgPT0gQU1DX0NPREVDX0NPTkZJR19XSVRIX1NVUkZBQ0UpIHsKKyAgICBHc3RCdWZmZXIgKm91dGJ1ZjsKKyAgICBHc3RHTFN5bmNNZXRhICpzeW5jX21ldGE7CisgICAgR3N0VmlkZW9Db2RlY1N0YXRlICpzdGF0ZTsKKyAgICBzdHJ1Y3QgZ2xfc3luYyAqc3luYzsKKyAgICBnYm9vbGVhbiBmaXJzdF9idWZmZXIgPSBGQUxTRTsKKworICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmdsX2xvY2spOworICAgIGlmIChzZWxmLT5nbF9lcnJvcikgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgc2VsZi0+Z2xfZXJyb3IpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5nbF9sb2NrKTsKKyAgICAgIGdvdG8gZ2xfb3V0cHV0X2Vycm9yOworICAgIH0KKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmdsX2xvY2spOworCisgICAgb3V0YnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7CisKKyAgICBzdGF0ZSA9IGdzdF92aWRlb19kZWNvZGVyX2dldF9vdXRwdXRfc3RhdGUgKEdTVF9WSURFT19ERUNPREVSIChzZWxmKSk7CisKKyAgICBpZiAoIXNlbGYtPm9lc19tZW0pIHsKKyAgICAgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9tZW1fYWxsb2M7CisgICAgICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOworCisgICAgICBiYXNlX21lbV9hbGxvYyA9CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X2FsbG9jYXRvcl9maW5kCisgICAgICAgICAgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUpKTsKKworICAgICAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoc2VsZi0+Z2xfY29udGV4dCwgTlVMTCwKKyAgICAgICAgICAmc3RhdGUtPmluZm8sIDAsIE5VTEwsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9FWFRFUk5BTF9PRVMpOworCisgICAgICBzZWxmLT5vZXNfbWVtID0gKEdzdEdMTWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2MsCisgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGJhc2VfbWVtX2FsbG9jKTsKKworICAgICAgZ3N0X2dsX2NvbnRleHRfdGhyZWFkX2FkZCAoc2VsZi0+Z2xfY29udGV4dCwKKyAgICAgICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2F0dGFjaF9tZW1fdG9fY29udGV4dCwgc2VsZik7CisKKyAgICAgIGZpcnN0X2J1ZmZlciA9IFRSVUU7CisgICAgfQorCisgICAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmIChzdGF0ZSk7CisKKyAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKG91dGJ1ZiwKKyAgICAgICAgZ3N0X21lbW9yeV9yZWYgKChHc3RNZW1vcnkgKikgc2VsZi0+b2VzX21lbSkpOworCisgICAgc3luYyA9IGdfbmV3MCAoc3RydWN0IGdsX3N5bmMsIDEpOworICAgIHN5bmMtPnJlZmNvdW50ID0gMTsKKyAgICBzeW5jLT5zaW5rID0gc2VsZjsKKyAgICBzeW5jLT5idWZmZXIgPSBvdXRidWY7CisgICAgc3luYy0+c3VyZmFjZSA9IGdfb2JqZWN0X3JlZiAoc2VsZi0+c3VyZmFjZSk7CisgICAgc3luYy0+b2VzX21lbSA9CisgICAgICAgIChHc3RHTE1lbW9yeSAqKSBnc3RfbWVtb3J5X3JlZiAoKEdzdE1lbW9yeSAqKSBzZWxmLT5vZXNfbWVtKTsKKyAgICBzeW5jLT5idWZmZXJfaWR4ID0gaWR4OworICAgIHN5bmMtPnJlc3VsdCA9IGdfbmV3MCAoc3RydWN0IGdsX3N5bmNfcmVzdWx0LCAxKTsKKyAgICBzeW5jLT5yZXN1bHQtPnJlZmNvdW50ID0gMTsKKyAgICBzeW5jLT5yZXN1bHQtPnVwZGF0ZWQgPSBGQUxTRTsKKworICAgIEdTVF9UUkFDRSAoIm5ldyBnbF9zeW5jICVwIHJlc3VsdCAlcCIsIHN5bmMsIHN5bmMtPnJlc3VsdCk7CisKKyAgICBzeW5jX21ldGEgPSBnc3RfYnVmZmVyX2FkZF9nbF9zeW5jX21ldGFfZnVsbCAoc2VsZi0+Z2xfY29udGV4dCwgb3V0YnVmLAorICAgICAgICBzeW5jKTsKKyAgICBzeW5jX21ldGEtPnNldF9zeW5jID0gX2FtY19nbF9zZXRfc3luYzsKKyAgICBzeW5jX21ldGEtPndhaXQgPSBfYW1jX2dsX3dhaXQ7CisgICAgc3luY19tZXRhLT53YWl0X2NwdSA9IF9hbWNfZ2xfd2FpdDsKKyAgICBzeW5jX21ldGEtPmNvcHkgPSBfYW1jX2dsX2NvcHk7CisgICAgc3luY19tZXRhLT5mcmVlID0gX2FtY19nbF9mcmVlOworCisgICAgLyogVGhlIG1ldGEgbmVlZHMgdG8gYmUgY3JlYXRlZCBub3c6CisgICAgICogTGF0ZXIgKGluIF9nbF9zeW5jX3JlbmRlcl91bmxvY2tlZCkgdGhlIGJ1ZmZlciB3aWxsIGJlIGxvY2tlZC4KKyAgICAgKi8KKyAgICBnc3RfYnVmZmVyX2FkZF92aWRlb19hZmZpbmVfdHJhbnNmb3JtYXRpb25fbWV0YSAob3V0YnVmKTsKKworICAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmdsX2xvY2spOworCisgICAgc2VsZi0+Z2xfcHVzaGVkX2ZyYW1lX2NvdW50Kys7CisgICAgc3luYy0+Z2xfZnJhbWVfbm8gPSBzZWxmLT5nbF9wdXNoZWRfZnJhbWVfY291bnQ7CisgICAgZ19xdWV1ZV9wdXNoX3RhaWwgKHNlbGYtPmdsX3F1ZXVlLCBfZ2xfc3luY19yZWYgKHN5bmMpKTsKKworICAgIGlmIChmaXJzdF9idWZmZXIpIHsKKyAgICAgIF9nbF9zeW5jX3JlbGVhc2VfYnVmZmVyIChzeW5jLCBUUlVFKTsKKyAgICAgIGlmIChzZWxmLT5nbF9lcnJvcikgeworICAgICAgICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWYpOworICAgICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmdsX2xvY2spOworICAgICAgICBnb3RvIGdsX291dHB1dF9lcnJvcjsKKyAgICAgIH0KKyAgICB9CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5nbF9sb2NrKTsKKworICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJwdXNoIEdMIGZyYW1lICV1Iiwgc3luYy0+Z2xfZnJhbWVfbm8pOworICAgIGZyYW1lLT5vdXRwdXRfYnVmZmVyID0gb3V0YnVmOworICAgIGZsb3dfcmV0ID0gZ3N0X3ZpZGVvX2RlY29kZXJfZmluaXNoX2ZyYW1lIChHU1RfVklERU9fREVDT0RFUiAoc2VsZiksIGZyYW1lKTsKKworICAgIHJlbGVhc2VfYnVmZmVyID0gRkFMU0U7CisgIH0gZWxzZSBpZiAoc2VsZi0+Y29kZWNfY29uZmlnID09IEFNQ19DT0RFQ19DT05GSUdfV0lUSE9VVF9TVVJGQUNFICYmICFmcmFtZQorICAgICAgJiYgYnVmZmVyX2luZm8uc2l6ZSA+IDApIHsKICAgICBHc3RCdWZmZXIgKm91dGJ1ZjsKIAogICAgIC8qIFRoaXMgc29tZXRpbWVzIGhhcHBlbnMgYXQgRU9TIG9yIGlmIHRoZSBpbnB1dCBpcyBub3QgcHJvcGVybHkgZnJhbWVkLApAQCAtNzAwLDcgKzE0MzUsNyBAQAogCiAgICAgaWYgKCFnc3RfYW1jX3ZpZGVvX2RlY19maWxsX2J1ZmZlciAoc2VsZiwgYnVmLCAmYnVmZmVyX2luZm8sIG91dGJ1ZikpIHsKICAgICAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7Ci0gICAgICBpZiAoIWdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKSkKKyAgICAgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsIEZBTFNFLCAmZXJyKSkKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byByZWxlYXNlIG91dHB1dCBidWZmZXIgaW5kZXggJWQiLAogICAgICAgICAgICAgaWR4KTsKICAgICAgIGlmIChlcnIgJiYgIXNlbGYtPmZsdXNoaW5nKQpAQCAtNzE1LDExICsxNDUwLDEzIEBACiAgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoYnVmZmVyX2luZm8ucHJlc2VudGF0aW9uX3RpbWVfdXMsIEdTVF9VU0VDT05ELAogICAgICAgICAxKTsKICAgICBmbG93X3JldCA9IGdzdF9wYWRfcHVzaCAoR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAoc2VsZiksIG91dGJ1Zik7Ci0gIH0gZWxzZSBpZiAoYnVmZmVyX2luZm8uc2l6ZSA+IDApIHsKLSAgICBpZiAoKGZsb3dfcmV0ID0gZ3N0X3ZpZGVvX2RlY29kZXJfYWxsb2NhdGVfb3V0cHV0X2ZyYW1lIChHU1RfVklERU9fREVDT0RFUgotICAgICAgICAgICAgICAgIChzZWxmKSwgZnJhbWUpKSAhPSBHU1RfRkxPV19PSykgeworICB9IGVsc2UgaWYgKHNlbGYtPmNvZGVjX2NvbmZpZyA9PSBBTUNfQ09ERUNfQ09ORklHX1dJVEhPVVRfU1VSRkFDRSAmJiBmcmFtZQorICAgICAgJiYgYnVmZmVyX2luZm8uc2l6ZSA+IDApIHsKKyAgICBpZiAoKGZsb3dfcmV0ID0KKyAgICAgICAgICAgIGdzdF92aWRlb19kZWNvZGVyX2FsbG9jYXRlX291dHB1dF9mcmFtZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHNlbGYpLAorICAgICAgICAgICAgICAgIGZyYW1lKSkgIT0gR1NUX0ZMT1dfT0spIHsKICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gYWxsb2NhdGUgYnVmZmVyIik7Ci0gICAgICBpZiAoIWdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKSkKKyAgICAgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsIEZBTFNFLCAmZXJyKSkKICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2VsZiwgIkZhaWxlZCB0byByZWxlYXNlIG91dHB1dCBidWZmZXIgaW5kZXggJWQiLAogICAgICAgICAgICAgaWR4KTsKICAgICAgIGlmIChlcnIgJiYgIXNlbGYtPmZsdXNoaW5nKQpAQCAtNzM0LDcgKzE0NzEsNyBAQAogICAgICAgICAgICAgZnJhbWUtPm91dHB1dF9idWZmZXIpKSB7CiAgICAgICBnc3RfYnVmZmVyX3JlcGxhY2UgKCZmcmFtZS0+b3V0cHV0X2J1ZmZlciwgTlVMTCk7CiAgICAgICBnc3RfdmlkZW9fZGVjb2Rlcl9kcm9wX2ZyYW1lIChHU1RfVklERU9fREVDT0RFUiAoc2VsZiksIGZyYW1lKTsKLSAgICAgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpKQorICAgICAgaWYgKCFnc3RfYW1jX2NvZGVjX3JlbGVhc2Vfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgRkFMU0UsICZlcnIpKQogICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiRmFpbGVkIHRvIHJlbGVhc2Ugb3V0cHV0IGJ1ZmZlciBpbmRleCAlZCIsCiAgICAgICAgICAgICBpZHgpOwogICAgICAgaWYgKGVyciAmJiAhc2VsZi0+Zmx1c2hpbmcpCkBAIC03NTAsMTUgKzE0ODcsMTkgQEAKICAgICBmbG93X3JldCA9IGdzdF92aWRlb19kZWNvZGVyX2Ryb3BfZnJhbWUgKEdTVF9WSURFT19ERUNPREVSIChzZWxmKSwgZnJhbWUpOwogICB9CiAKLSAgZ3N0X2FtY19idWZmZXJfZnJlZSAoYnVmKTsKLSAgYnVmID0gTlVMTDsKKyAgaWYgKGJ1ZikgeworICAgIGdzdF9hbWNfYnVmZmVyX2ZyZWUgKGJ1Zik7CisgICAgYnVmID0gTlVMTDsKKyAgfQogCi0gIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsICZlcnIpKSB7Ci0gICAgaWYgKHNlbGYtPmZsdXNoaW5nKSB7Ci0gICAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKLSAgICAgIGdvdG8gZmx1c2hpbmc7CisgIGlmIChyZWxlYXNlX2J1ZmZlcikgeworICAgIGlmICghZ3N0X2FtY19jb2RlY19yZWxlYXNlX291dHB1dF9idWZmZXIgKHNlbGYtPmNvZGVjLCBpZHgsIEZBTFNFLCAmZXJyKSkgeworICAgICAgaWYgKHNlbGYtPmZsdXNoaW5nKSB7CisgICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOworICAgICAgICBnb3RvIGZsdXNoaW5nOworICAgICAgfQorICAgICAgZ290byBmYWlsZWRfcmVsZWFzZTsKICAgICB9Ci0gICAgZ290byBmYWlsZWRfcmVsZWFzZTsKICAgfQogCiAgIGlmIChpc19lb3MgfHwgZmxvd19yZXQgPT0gR1NUX0ZMT1dfRU9TKSB7CkBAIC04ODAsNiArMTYyMSwyMSBAQAogICAgIHJldHVybjsKICAgfQogCitnb3RfbnVsbF9vdXRwdXRfYnVmZmVyOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCisgICAgICAgICgiR290IG5vIG91dHB1dCBidWZmZXIiKSk7CisgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfVklERU9fREVDT0RFUl9TUkNfUEFEIChzZWxmKSwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAoc2VsZikpOworICAgIHNlbGYtPmRvd25zdHJlYW1fZmxvd19yZXQgPSBHU1RfRkxPV19FUlJPUjsKKyAgICBHU1RfVklERU9fREVDT0RFUl9TVFJFQU1fVU5MT0NLIChzZWxmKTsKKyAgICBnX211dGV4X2xvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKKyAgICBzZWxmLT5kcmFpbmluZyA9IEZBTFNFOworICAgIGdfY29uZF9icm9hZGNhc3QgKCZzZWxmLT5kcmFpbl9jb25kKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmRyYWluX2xvY2spOworICAgIHJldHVybjsKKyAgfQorCiBpbnZhbGlkX2J1ZmZlcjoKICAgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzZWxmLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLApAQCAtODk0LDYgKzE2NTAsMjIgQEAKICAgICBnX211dGV4X3VubG9jayAoJnNlbGYtPmRyYWluX2xvY2spOwogICAgIHJldHVybjsKICAgfQorZ2xfb3V0cHV0X2Vycm9yOgorICB7CisgICAgaWYgKGJ1ZikgeworICAgICAgZ3N0X2FtY19idWZmZXJfZnJlZSAoYnVmKTsKKyAgICAgIGJ1ZiA9IE5VTEw7CisgICAgfQorICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX1ZJREVPX0RFQ09ERVJfU1JDX1BBRCAoc2VsZiksIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKKyAgICBnc3RfcGFkX3BhdXNlX3Rhc2sgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKHNlbGYpKTsKKyAgICBzZWxmLT5kb3duc3RyZWFtX2Zsb3dfcmV0ID0gR1NUX0ZMT1dfTk9UX05FR09USUFURUQ7CisgICAgR1NUX1ZJREVPX0RFQ09ERVJfU1RSRUFNX1VOTE9DSyAoc2VsZik7CisgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CisgICAgc2VsZi0+ZHJhaW5pbmcgPSBGQUxTRTsKKyAgICBnX2NvbmRfYnJvYWRjYXN0ICgmc2VsZi0+ZHJhaW5fY29uZCk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKKyAgICByZXR1cm47CisgIH0KIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC05NDYsMTEgKzE3MTgsNzAgQEAKICAgcmV0dXJuIFRSVUU7CiB9CiAKK3N0YXRpYyBqb2JqZWN0Citnc3RfYW1jX3ZpZGVvX2RlY19uZXdfb25fZnJhbWVfYXZhaWxhYmxlX2xpc3RlbmVyIChHc3RBbWNWaWRlb0RlYyAqIGRlY29kZXIsCisgICAgSk5JRW52ICogZW52LCBHRXJyb3IgKiogZXJyKQoreworICBqb2JqZWN0IGxpc3RlbmVyID0gTlVMTDsKKyAgamNsYXNzIGxpc3RlbmVyX2NscyA9IE5VTEw7CisgIGptZXRob2RJRCBjb25zdHJ1Y3Rvcl9pZCA9IDA7CisKKyAgSk5JTmF0aXZlTWV0aG9kIGFtY09uRnJhbWVBdmFpbGFibGVMaXN0ZW5lciA9IHsKKyAgICAibmF0aXZlX29uRnJhbWVBdmFpbGFibGUiLAorICAgICIoSkxhbmRyb2lkL2dyYXBoaWNzL1N1cmZhY2VUZXh0dXJlOylWIiwKKyAgICAodm9pZCAqKSBnc3RfYW1jX3ZpZGVvX2RlY19vbl9mcmFtZV9hdmFpbGFibGUsCisgIH07CisKKyAgbGlzdGVuZXJfY2xzID0KKyAgICAgIGdzdF9hbWNfam5pX2dldF9hcHBsaWNhdGlvbl9jbGFzcyAoZW52LAorICAgICAgIm9yZy9mcmVlZGVza3RvcC9nc3RyZWFtZXIvYW5kcm9pZG1lZGlhL0dzdEFtY09uRnJhbWVBdmFpbGFibGVMaXN0ZW5lciIsCisgICAgICBlcnIpOworICBpZiAoIWxpc3RlbmVyX2NscykgeworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgICgqZW52KS0+UmVnaXN0ZXJOYXRpdmVzIChlbnYsIGxpc3RlbmVyX2NscywgJmFtY09uRnJhbWVBdmFpbGFibGVMaXN0ZW5lciwgMSk7CisgIGlmICgoKmVudiktPkV4Y2VwdGlvbkNoZWNrIChlbnYpKSB7CisgICAgKCplbnYpLT5FeGNlcHRpb25DbGVhciAoZW52KTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBjb25zdHJ1Y3Rvcl9pZCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwgbGlzdGVuZXJfY2xzLCAiPGluaXQ+IiwgIigpViIpOworICBpZiAoIWNvbnN0cnVjdG9yX2lkKSB7CisgICAgZ290byBkb25lOworICB9CisKKyAgZGVjb2Rlci0+c2V0X2NvbnRleHRfaWQgPQorICAgICAgZ3N0X2FtY19qbmlfZ2V0X21ldGhvZF9pZCAoZW52LCBlcnIsIGxpc3RlbmVyX2NscywgInNldENvbnRleHQiLCAiKEopViIpOworICBpZiAoIWRlY29kZXItPnNldF9jb250ZXh0X2lkKSB7CisgICAgZ290byBkb25lOworICB9CisKKyAgbGlzdGVuZXIgPQorICAgICAgZ3N0X2FtY19qbmlfbmV3X29iamVjdCAoZW52LCBlcnIsIFRSVUUsIGxpc3RlbmVyX2NscywgY29uc3RydWN0b3JfaWQpOworICBpZiAoIWxpc3RlbmVyKSB7CisgICAgZ290byBkb25lOworICB9CisKKyAgaWYgKCFnc3RfYW1jX2puaV9jYWxsX3ZvaWRfbWV0aG9kIChlbnYsIGVyciwgbGlzdGVuZXIsCisgICAgICAgICAgZGVjb2Rlci0+c2V0X2NvbnRleHRfaWQsIEdTVF9BTUNfVklERU9fREVDX1RPX0pMT05HIChkZWNvZGVyKSkpIHsKKyAgICBnc3RfYW1jX2puaV9vYmplY3RfdW5yZWYgKGVudiwgbGlzdGVuZXIpOworICAgIGxpc3RlbmVyID0gTlVMTDsKKyAgfQorCitkb25lOgorICBnc3RfYW1jX2puaV9vYmplY3RfdW5yZWYgKGVudiwgbGlzdGVuZXJfY2xzKTsKKworICByZXR1cm4gbGlzdGVuZXI7Cit9CisKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X2FtY192aWRlb19kZWNfc2V0X2Zvcm1hdCAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2RlciwKICAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKiBzdGF0ZSkKIHsKICAgR3N0QW1jVmlkZW9EZWMgKnNlbGY7CisgIEdzdEFtY1ZpZGVvRGVjQ2xhc3MgKmtsYXNzOwogICBHc3RBbWNGb3JtYXQgKmZvcm1hdDsKICAgY29uc3QgZ2NoYXIgKm1pbWU7CiAgIGdib29sZWFuIGlzX2Zvcm1hdF9jaGFuZ2UgPSBGQUxTRTsKQEAgLTk1OSw4ICsxNzkwLDEwIEBACiAgIGd1aW50OCAqY29kZWNfZGF0YSA9IE5VTEw7CiAgIGdzaXplIGNvZGVjX2RhdGFfc2l6ZSA9IDA7CiAgIEdFcnJvciAqZXJyID0gTlVMTDsKKyAgam9iamVjdCBqc3VyZmFjZSA9IE5VTEw7CiAKICAgc2VsZiA9IEdTVF9BTUNfVklERU9fREVDIChkZWNvZGVyKTsKKyAga2xhc3MgPSBHU1RfQU1DX1ZJREVPX0RFQ19HRVRfQ0xBU1MgKHNlbGYpOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTZXR0aW5nIG5ldyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBzdGF0ZS0+Y2Fwcyk7CiAKQEAgLTEwNTIsNiArMTg4NSwxNDcgQEAKICAgICAgIEdTVF9FTEVNRU5UX1dBUk5JTkdfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKICAgfQogCisgIHsKKyAgICBnYm9vbGVhbiBkb3duc3RyZWFtX3N1cHBvcnRzX2dsID0gRkFMU0U7CisgICAgR3N0VmlkZW9EZWNvZGVyICpkZWNvZGVyID0gR1NUX1ZJREVPX0RFQ09ERVIgKHNlbGYpOworICAgIEdzdFBhZCAqc3JjX3BhZCA9IEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKGRlY29kZXIpOworICAgIEdzdENhcHMgKnRlbXBsX2NhcHMgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAoc3JjX3BhZCk7CisgICAgR3N0Q2FwcyAqZG93bnN0cmVhbV9jYXBzID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5X2NhcHMgKHNyY19wYWQsIHRlbXBsX2NhcHMpOworCisgICAgZ3N0X2NhcHNfdW5yZWYgKHRlbXBsX2NhcHMpOworCisgICAgaWYgKGRvd25zdHJlYW1fY2FwcykgeworICAgICAgZ3VpbnQgaSwgbjsKKyAgICAgIEdzdFN0YXRpY0NhcHMgc3RhdGljX2NhcHMgPQorICAgICAgICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCisgICAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwgIlJHQkEiKSk7CisgICAgICBHc3RDYXBzICpnbF9tZW1vcnlfY2FwcyA9IGdzdF9zdGF0aWNfY2Fwc19nZXQgKCZzdGF0aWNfY2Fwcyk7CisKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJBdmFpbGFibGUgZG93bnN0cmVhbSBjYXBzOiAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICAgICBkb3duc3RyZWFtX2NhcHMpOworCisgICAgICAvKiBDaGVjayBpZiBkb3duc3RyZWFtIGNhcHMgc3VwcG9ydHMKKyAgICAgICAqIHZpZGVvL3gtcmF3KG1lbW9yeTpHTE1lbW9yeSksZm9ybWF0PVJHQkEgKi8KKyAgICAgIG4gPSBnc3RfY2Fwc19nZXRfc2l6ZSAoZG93bnN0cmVhbV9jYXBzKTsKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBuOyBpKyspIHsKKyAgICAgICAgR3N0Q2FwcyAqY2FwcyA9IE5VTEw7CisgICAgICAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoZG93bnN0cmVhbV9jYXBzLCBpKTsKKyAgICAgICAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoZG93bnN0cmVhbV9jYXBzLCBpKTsKKworICAgICAgICBjYXBzID0gZ3N0X2NhcHNfbmV3X2Z1bGwgKGdzdF9zdHJ1Y3R1cmVfY29weSAoc3RydWN0dXJlKSwgTlVMTCk7CisgICAgICAgIGlmICghY2FwcykKKyAgICAgICAgICBjb250aW51ZTsKKworICAgICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKGNhcHMsIDAsIGdzdF9jYXBzX2ZlYXR1cmVzX2NvcHkgKGZlYXR1cmVzKSk7CisKKyAgICAgICAgaWYgKGdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGNhcHMsIGdsX21lbW9yeV9jYXBzKSkgeworICAgICAgICAgIGRvd25zdHJlYW1fc3VwcG9ydHNfZ2wgPSBUUlVFOworICAgICAgICB9CisKKyAgICAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICAgICAgICBpZiAoZG93bnN0cmVhbV9zdXBwb3J0c19nbCkKKyAgICAgICAgICBicmVhazsKKyAgICAgIH0KKworICAgICAgZ3N0X2NhcHNfdW5yZWYgKGdsX21lbW9yeV9jYXBzKTsKKworICAgICAgLyogSWYgdmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSxmb3JtYXQ9UkdCQSBpcyBzdXBwb3J0ZWQsCisgICAgICAgKiB1cGRhdGUgdGhlIHZpZGVvIGRlY29kZXIgb3V0cHV0IHN0YXRlIGFjY29yZGluZ2x5IGFuZCBuZWdvdGlhdGUgKi8KKyAgICAgIGlmIChkb3duc3RyZWFtX3N1cHBvcnRzX2dsKSB7CisgICAgICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqb3V0cHV0X3N0YXRlID0gTlVMTDsKKyAgICAgICAgR3N0VmlkZW9Db2RlY1N0YXRlICpwcmV2X291dHB1dF9zdGF0ZSA9IE5VTEw7CisKKyAgICAgICAgcHJldl9vdXRwdXRfc3RhdGUgPSBnc3RfdmlkZW9fZGVjb2Rlcl9nZXRfb3V0cHV0X3N0YXRlIChkZWNvZGVyKTsKKworICAgICAgICBvdXRwdXRfc3RhdGUgPQorICAgICAgICAgICAgZ3N0X3ZpZGVvX2RlY29kZXJfc2V0X291dHB1dF9zdGF0ZSAoZGVjb2RlciwgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLAorICAgICAgICAgICAgc3RhdGUtPmluZm8ud2lkdGgsIHN0YXRlLT5pbmZvLmhlaWdodCwgc3RhdGUpOworCisgICAgICAgIGlmIChvdXRwdXRfc3RhdGUtPmNhcHMpIHsKKyAgICAgICAgICBnc3RfY2Fwc191bnJlZiAob3V0cHV0X3N0YXRlLT5jYXBzKTsKKyAgICAgICAgfQorCisgICAgICAgIG91dHB1dF9zdGF0ZS0+Y2FwcyA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZvdXRwdXRfc3RhdGUtPmluZm8pOworICAgICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKG91dHB1dF9zdGF0ZS0+Y2FwcywgMCwKKyAgICAgICAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX25ldyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBOVUxMKSk7CisKKyAgICAgICAgLyogZ3N0X2FtY192aWRlb19kZWNfZGVjaWRlX2FsbG9jYXRpb24gd2lsbCB1cGRhdGUKKyAgICAgICAgICogc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCAqLworICAgICAgICBpZiAoIWdzdF92aWRlb19kZWNvZGVyX25lZ290aWF0ZSAoZGVjb2RlcikpIHsKKyAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLCAiRmFpbGVkIHRvIG5lZ290aWF0ZSIpOworCisgICAgICAgICAgLyogUm9sbGJhY2sgb3V0cHV0IHN0YXRlIGNoYW5nZXMgKi8KKyAgICAgICAgICBpZiAocHJldl9vdXRwdXRfc3RhdGUpIHsKKyAgICAgICAgICAgIG91dHB1dF9zdGF0ZS0+aW5mbyA9IHByZXZfb3V0cHV0X3N0YXRlLT5pbmZvOworICAgICAgICAgICAgZ3N0X2NhcHNfcmVwbGFjZSAoJm91dHB1dF9zdGF0ZS0+Y2FwcywgcHJldl9vdXRwdXRfc3RhdGUtPmNhcHMpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnc3RfdmlkZW9faW5mb19pbml0ICgmb3V0cHV0X3N0YXRlLT5pbmZvKTsKKyAgICAgICAgICAgIGdzdF9jYXBzX3JlcGxhY2UgKCZvdXRwdXRfc3RhdGUtPmNhcHMsIE5VTEwpOworICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBpZiAocHJldl9vdXRwdXRfc3RhdGUpIHsKKyAgICAgICAgICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKHByZXZfb3V0cHV0X3N0YXRlKTsKKyAgICAgICAgfQorICAgICAgfQorICAgIH0KKyAgfQorCisgIEdTVF9JTkZPX09CSkVDVCAoc2VsZiwgIkdMIG91dHB1dDogJXMiLAorICAgICAgc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCA/ICJlbmFibGVkIiA6ICJkaXNhYmxlZCIpOworCisgIGlmIChrbGFzcy0+Y29kZWNfaW5mby0+Z2xfb3V0cHV0X29ubHkgJiYgIXNlbGYtPmRvd25zdHJlYW1fc3VwcG9ydHNfZ2wpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzZWxmLAorICAgICAgICAiQ29kZWMgb25seSBzdXBwb3J0cyBHTCBvdXRwdXQgYnV0IGRvd25zdHJlYW0gZG9lcyBub3QiKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCAmJiBzZWxmLT5zdXJmYWNlKSB7CisgICAganN1cmZhY2UgPSBzZWxmLT5zdXJmYWNlLT5qb2JqZWN0OworICB9IGVsc2UgaWYgKHNlbGYtPmRvd25zdHJlYW1fc3VwcG9ydHNfZ2wgJiYgIXNlbGYtPnN1cmZhY2UpIHsKKyAgICBpbnQgcmV0ID0gVFJVRTsKKyAgICBKTklFbnYgKmVudiA9IE5VTEw7CisgICAgR3N0QW1jU3VyZmFjZVRleHR1cmUgKnN1cmZhY2VfdGV4dHVyZSA9IE5VTEw7CisKKyAgICBlbnYgPSBnc3RfYW1jX2puaV9nZXRfZW52ICgpOworICAgIHN1cmZhY2VfdGV4dHVyZSA9IGdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX25ldyAoJmVycik7CisgICAgaWYgKCFzdXJmYWNlX3RleHR1cmUpIHsKKyAgICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIGVycik7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorCisgICAgaWYgKHNlbGYtPmxpc3RlbmVyKSB7CisgICAgICBpZiAoIWdzdF9hbWNfam5pX2NhbGxfdm9pZF9tZXRob2QgKGVudiwgJmVyciwgc2VsZi0+bGlzdGVuZXIsCisgICAgICAgICAgICAgIHNlbGYtPnNldF9jb250ZXh0X2lkLCBHU1RfQU1DX1ZJREVPX0RFQ19UT19KTE9ORyAoTlVMTCkpKSB7CisgICAgICAgIHJldCA9IEZBTFNFOworICAgICAgICBnb3RvIGRvbmU7CisgICAgICB9CisKKyAgICAgIGdzdF9hbWNfam5pX29iamVjdF91bnJlZiAoZW52LCBzZWxmLT5saXN0ZW5lcik7CisgICAgfQorICAgIHNlbGYtPmxpc3RlbmVyID0KKyAgICAgICAgZ3N0X2FtY192aWRlb19kZWNfbmV3X29uX2ZyYW1lX2F2YWlsYWJsZV9saXN0ZW5lciAoc2VsZiwgZW52LCAmZXJyKTsKKyAgICBpZiAoIXNlbGYtPmxpc3RlbmVyKSB7CisgICAgICByZXQgPSBGQUxTRTsKKyAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBpZiAoIWdzdF9hbWNfc3VyZmFjZV90ZXh0dXJlX3NldF9vbl9mcmFtZV9hdmFpbGFibGVfbGlzdGVuZXIKKyAgICAgICAgKHN1cmZhY2VfdGV4dHVyZSwgc2VsZi0+bGlzdGVuZXIsICZlcnIpKSB7CisgICAgICByZXQgPSBGQUxTRTsKKyAgICAgIGdvdG8gZG9uZTsKKyAgICB9CisKKyAgICBzZWxmLT5zdXJmYWNlID0gZ3N0X2FtY19zdXJmYWNlX25ldyAoc3VyZmFjZV90ZXh0dXJlLCAmZXJyKTsKKyAgICBqc3VyZmFjZSA9IHNlbGYtPnN1cmZhY2UtPmpvYmplY3Q7CisKKyAgZG9uZToKKyAgICBnX29iamVjdF91bnJlZiAoc3VyZmFjZV90ZXh0dXJlKTsKKyAgICBpZiAoIXJldCkgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKwogICBmb3JtYXRfc3RyaW5nID0gZ3N0X2FtY19mb3JtYXRfdG9fc3RyaW5nIChmb3JtYXQsICZlcnIpOwogICBpZiAoZXJyKQogICAgIEdTVF9FTEVNRU5UX1dBUk5JTkdfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKQEAgLTEwNTksMTEgKzIwMzMsMTYgQEAKICAgICAgIEdTVF9TVFJfTlVMTCAoZm9ybWF0X3N0cmluZykpOwogICBnX2ZyZWUgKGZvcm1hdF9zdHJpbmcpOwogCi0gIGlmICghZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKHNlbGYtPmNvZGVjLCBmb3JtYXQsIDAsICZlcnIpKSB7CisgIGlmICghZ3N0X2FtY19jb2RlY19jb25maWd1cmUgKHNlbGYtPmNvZGVjLCBmb3JtYXQsIGpzdXJmYWNlLCAwLCAmZXJyKSkgewogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gY29uZmlndXJlIGNvZGVjIik7CiAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKICAgICByZXR1cm4gRkFMU0U7CiAgIH0KKyAgaWYgKGpzdXJmYWNlKSB7CisgICAgc2VsZi0+Y29kZWNfY29uZmlnID0gQU1DX0NPREVDX0NPTkZJR19XSVRIX1NVUkZBQ0U7CisgIH0gZWxzZSB7CisgICAgc2VsZi0+Y29kZWNfY29uZmlnID0gQU1DX0NPREVDX0NPTkZJR19XSVRIT1VUX1NVUkZBQ0U7CisgIH0KIAogICBnc3RfYW1jX2Zvcm1hdF9mcmVlIChmb3JtYXQpOwogCkBAIC0xMjE0LDggKzIxOTMsMTAgQEAKICAgICAvKiBDb3B5IHRoZSBidWZmZXIgY29udGVudCBpbiBjaHVua3Mgb2Ygc2l6ZSBhcyByZXF1ZXN0ZWQKICAgICAgKiBieSB0aGUgcG9ydCAqLwogICAgIGJ1ZiA9IGdzdF9hbWNfY29kZWNfZ2V0X2lucHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycik7Ci0gICAgaWYgKCFidWYpCisgICAgaWYgKGVycikKICAgICAgIGdvdG8gZmFpbGVkX3RvX2dldF9pbnB1dF9idWZmZXI7CisgICAgZWxzZSBpZiAoIWJ1ZikKKyAgICAgIGdvdG8gZ290X251bGxfaW5wdXRfYnVmZmVyOwogCiAgICAgbWVtc2V0ICgmYnVmZmVyX2luZm8sIDAsIHNpemVvZiAoYnVmZmVyX2luZm8pKTsKICAgICBidWZmZXJfaW5mby5vZmZzZXQgPSAwOwpAQCAtMTI1Myw5ICsyMjM0LDkgQEAKIAogICAgIG9mZnNldCArPSBidWZmZXJfaW5mby5zaXplOwogICAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsCi0gICAgICAgICJRdWV1ZWluZyBidWZmZXIgJWQ6IHNpemUgJWQgdGltZSAlIiBHX0dJTlQ2NF9GT1JNQVQgIiBmbGFncyAweCUwOHgiLAotICAgICAgICBpZHgsIGJ1ZmZlcl9pbmZvLnNpemUsIGJ1ZmZlcl9pbmZvLnByZXNlbnRhdGlvbl90aW1lX3VzLAotICAgICAgICBidWZmZXJfaW5mby5mbGFncyk7CisgICAgICAgICJRdWV1ZWluZyBidWZmZXIgJWQ6IHNpemUgJWQgdGltZSAlIiBHX0dJTlQ2NF9GT1JNQVQKKyAgICAgICAgIiBmbGFncyAweCUwOHgiLCBpZHgsIGJ1ZmZlcl9pbmZvLnNpemUsCisgICAgICAgIGJ1ZmZlcl9pbmZvLnByZXNlbnRhdGlvbl90aW1lX3VzLCBidWZmZXJfaW5mby5mbGFncyk7CiAgICAgaWYgKCFnc3RfYW1jX2NvZGVjX3F1ZXVlX2lucHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmJ1ZmZlcl9pbmZvLAogICAgICAgICAgICAgJmVycikpIHsKICAgICAgIGlmIChzZWxmLT5mbHVzaGluZykgewpAQCAtMTI4OSw2ICsyMjcwLDE1IEBACiAgICAgZ3N0X3ZpZGVvX2NvZGVjX2ZyYW1lX3VucmVmIChmcmFtZSk7CiAgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOwogICB9Citnb3RfbnVsbF9pbnB1dF9idWZmZXI6CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc2VsZiwgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKKyAgICAgICAgKCJHb3Qgbm8gaW5wdXQgYnVmZmVyIikpOworICAgIGlmIChtaW5mby5kYXRhKQorICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoZnJhbWUtPmlucHV0X2J1ZmZlciwgJm1pbmZvKTsKKyAgICBnc3RfdmlkZW9fY29kZWNfZnJhbWVfdW5yZWYgKGZyYW1lKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KIGRlcXVldWVfZXJyb3I6CiAgIHsKICAgICBHU1RfRUxFTUVOVF9FUlJPUl9GUk9NX0VSUk9SIChzZWxmLCBlcnIpOwpAQCAtMTQxMywyNSArMjQwMywxODAgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCitnc3RfYW1jX3ZpZGVvX2RlY19zcmNfcXVlcnkgKEdzdFZpZGVvRGVjb2RlciAqIGJkZWMsIEdzdFF1ZXJ5ICogcXVlcnkpCit7CisgIEdzdEFtY1ZpZGVvRGVjICpzZWxmID0gR1NUX0FNQ19WSURFT19ERUMgKGJkZWMpOworICBnYm9vbGVhbiByZXQ7CisKKyAgc3dpdGNoIChHU1RfUVVFUllfVFlQRSAocXVlcnkpKSB7CisgICAgY2FzZSBHU1RfUVVFUllfQ09OVEVYVDoKKyAgICB7CisgICAgICBjb25zdCBnY2hhciAqY29udGV4dF90eXBlOworICAgICAgR3N0Q29udGV4dCAqY29udGV4dCwgKm9sZF9jb250ZXh0OworCisgICAgICByZXQgPSBnc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnkgKChHc3RFbGVtZW50ICopIHNlbGYsIHF1ZXJ5LAorICAgICAgICAgICZzZWxmLT5nbF9kaXNwbGF5LCAmc2VsZi0+b3RoZXJfZ2xfY29udGV4dCk7CisgICAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dF90eXBlIChxdWVyeSwgJmNvbnRleHRfdHlwZSk7CisKKyAgICAgIGlmIChnX3N0cmNtcDAgKGNvbnRleHRfdHlwZSwgImdzdC5nbC5sb2NhbF9jb250ZXh0IikgPT0gMCkgeworICAgICAgICBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgICAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmb2xkX2NvbnRleHQpOworCisgICAgICAgIGlmIChvbGRfY29udGV4dCkKKyAgICAgICAgICBjb250ZXh0ID0gZ3N0X2NvbnRleHRfY29weSAob2xkX2NvbnRleHQpOworICAgICAgICBlbHNlCisgICAgICAgICAgY29udGV4dCA9IGdzdF9jb250ZXh0X25ldyAoImdzdC5nbC5sb2NhbF9jb250ZXh0IiwgRkFMU0UpOworCisgICAgICAgIHMgPSBnc3RfY29udGV4dF93cml0YWJsZV9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImNvbnRleHQiLCBHU1RfR0xfVFlQRV9DT05URVhULCBzZWxmLT5nbF9jb250ZXh0LAorICAgICAgICAgICAgTlVMTCk7CisgICAgICAgIGdzdF9xdWVyeV9zZXRfY29udGV4dCAocXVlcnksIGNvbnRleHQpOworICAgICAgICBnc3RfY29udGV4dF91bnJlZiAoY29udGV4dCk7CisKKyAgICAgICAgcmV0ID0gc2VsZi0+Z2xfY29udGV4dCAhPSBOVUxMOworICAgICAgfQorICAgICAgR1NUX0xPR19PQkpFQ1QgKHNlbGYsICJjb250ZXh0IHF1ZXJ5IG9mIHR5cGUgJXMgJWkiLCBjb250ZXh0X3R5cGUsIHJldCk7CisKKyAgICAgIGlmIChyZXQpCisgICAgICAgIHJldHVybiByZXQ7CisKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gR1NUX1ZJREVPX0RFQ09ERVJfQ0xBU1MgKHBhcmVudF9jbGFzcyktPnNyY19xdWVyeSAoYmRlYywgcXVlcnkpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19jYXBzX2FyZV9yZ2JhX3dpdGhfZ2xfbWVtb3J5IChHc3RDYXBzICogY2FwcykKK3sKKyAgR3N0VmlkZW9JbmZvIGluZm87CisgIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7CisKKyAgaWYgKCFjYXBzKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoIWdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluZm8sIGNhcHMpKQorICAgIHJldHVybiBGQUxTRTsKKworICBpZiAoaW5mby5maW5mby0+Zm9ybWF0ICE9IEdTVF9WSURFT19GT1JNQVRfUkdCQSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgaWYgKCEoZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGNhcHMsIDApKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgcmV0dXJuIGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywKKyAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2ZpbmRfbG9jYWxfZ2xfY29udGV4dCAoR3N0QW1jVmlkZW9EZWMgKiBzZWxmKQoreworICBHc3RRdWVyeSAqcXVlcnk7CisgIEdzdENvbnRleHQgKmNvbnRleHQ7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqczsKKworICBpZiAoc2VsZi0+Z2xfY29udGV4dCkKKyAgICByZXR1cm4gVFJVRTsKKworICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfY29udGV4dCAoImdzdC5nbC5sb2NhbF9jb250ZXh0Iik7CisgIGlmICghc2VsZi0+Z2xfY29udGV4dAorICAgICAgJiYgZ3N0X2dsX3J1bl9xdWVyeSAoR1NUX0VMRU1FTlQgKHNlbGYpLCBxdWVyeSwgR1NUX1BBRF9TUkMpKSB7CisgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NvbnRleHQgKHF1ZXJ5LCAmY29udGV4dCk7CisgICAgaWYgKGNvbnRleHQpIHsKKyAgICAgIHMgPSBnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlIChjb250ZXh0KTsKKyAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCAiY29udGV4dCIsIEdTVF9HTF9UWVBFX0NPTlRFWFQsICZzZWxmLT5nbF9jb250ZXh0LAorICAgICAgICAgIE5VTEwpOworICAgIH0KKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJmb3VuZCBsb2NhbCBjb250ZXh0ICVwIiwgc2VsZi0+Z2xfY29udGV4dCk7CisKKyAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisKKyAgaWYgKHNlbGYtPmdsX2NvbnRleHQpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hbWNfdmlkZW9fZGVjX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RWaWRlb0RlY29kZXIgKiBiZGVjLCBHc3RRdWVyeSAqIHF1ZXJ5KQogewotICBHc3RCdWZmZXJQb29sICpwb29sOwotICBHc3RTdHJ1Y3R1cmUgKmNvbmZpZzsKKyAgR3N0QW1jVmlkZW9EZWMgKnNlbGYgPSBHU1RfQU1DX1ZJREVPX0RFQyAoYmRlYyk7CisgIGdib29sZWFuIG5lZWRfcG9vbCA9IEZBTFNFOworICBHc3RDYXBzICpjYXBzID0gTlVMTDsKKy8vICBHRXJyb3IgKmVycm9yID0gTlVMTDsKIAogICBpZiAoIUdTVF9WSURFT19ERUNPREVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5kZWNpZGVfYWxsb2NhdGlvbiAoYmRlYywgcXVlcnkpKQogICAgIHJldHVybiBGQUxTRTsKIAotICBnX2Fzc2VydCAoZ3N0X3F1ZXJ5X2dldF9uX2FsbG9jYXRpb25fcG9vbHMgKHF1ZXJ5KSA+IDApOwotICBnc3RfcXVlcnlfcGFyc2VfbnRoX2FsbG9jYXRpb25fcG9vbCAocXVlcnksIDAsICZwb29sLCBOVUxMLCBOVUxMLCBOVUxMKTsKLSAgZ19hc3NlcnQgKHBvb2wgIT0gTlVMTCk7CisgIHNlbGYtPmRvd25zdHJlYW1fc3VwcG9ydHNfZ2wgPSBGQUxTRTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2FsbG9jYXRpb24gKHF1ZXJ5LCAmY2FwcywgJm5lZWRfcG9vbCk7CisgIGlmIChfY2Fwc19hcmVfcmdiYV93aXRoX2dsX21lbW9yeSAoY2FwcykpIHsKIAotICBjb25maWcgPSBnc3RfYnVmZmVyX3Bvb2xfZ2V0X2NvbmZpZyAocG9vbCk7Ci0gIGlmIChnc3RfcXVlcnlfZmluZF9hbGxvY2F0aW9uX21ldGEgKHF1ZXJ5LCBHU1RfVklERU9fTUVUQV9BUElfVFlQRSwgTlVMTCkpIHsKLSAgICBnc3RfYnVmZmVyX3Bvb2xfY29uZmlnX2FkZF9vcHRpb24gKGNvbmZpZywKLSAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9WSURFT19NRVRBKTsKKyAgICBpZiAoIWdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhIChzZWxmLCAmc2VsZi0+Z2xfZGlzcGxheSwKKyAgICAgICAgICAgICZzZWxmLT5vdGhlcl9nbF9jb250ZXh0KSkKKyAgICAgIHJldHVybiBGQUxTRTsKKworICAgIGlmICghX2ZpbmRfbG9jYWxfZ2xfY29udGV4dCAoc2VsZikpCisgICAgICBnb3RvIG91dDsKKyNpZiAwCisgICAgaWYgKCFzZWxmLT5nbF9jb250ZXh0KSB7CisgICAgICBHU1RfT0JKRUNUX0xPQ0sgKHNlbGYtPmdsX2Rpc3BsYXkpOworICAgICAgZG8geworICAgICAgICBpZiAoc2VsZi0+Z2xfY29udGV4dCkgeworICAgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKHNlbGYtPmdsX2NvbnRleHQpOworICAgICAgICAgIHNlbGYtPmdsX2NvbnRleHQgPSBOVUxMOworICAgICAgICB9CisgICAgICAgIC8qIGp1c3QgZ2V0IGEgR0wgY29udGV4dC4gIHdlIGRvbid0IGNhcmUgKi8KKyAgICAgICAgc2VsZi0+Z2xfY29udGV4dCA9CisgICAgICAgICAgICBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkIChzZWxmLT5nbF9kaXNwbGF5LCBOVUxMKTsKKyAgICAgICAgaWYgKCFzZWxmLT5nbF9jb250ZXh0KSB7CisgICAgICAgICAgaWYgKCFnc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dCAoc2VsZi0+Z2xfZGlzcGxheSwKKyAgICAgICAgICAgICAgICAgIHNlbGYtPm90aGVyX2dsX2NvbnRleHQsICZzZWxmLT5nbF9jb250ZXh0LCAmZXJyb3IpKSB7CisgICAgICAgICAgICBHU1RfT0JKRUNUX1VOTE9DSyAobWl4LT5kaXNwbGF5KTsKKyAgICAgICAgICAgIGdvdG8gY29udGV4dF9lcnJvcjsKKyAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgIH0gd2hpbGUgKCFnc3RfZ2xfZGlzcGxheV9hZGRfY29udGV4dCAoc2VsZi0+Z2xfZGlzcGxheSwKKyAgICAgICAgICAgICAgc2VsZi0+Z2xfY29udGV4dCkpOworICAgICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYtPmdsX2Rpc3BsYXkpOworICAgIH0KKyNlbmRpZgorCisgICAgc2VsZi0+ZG93bnN0cmVhbV9zdXBwb3J0c19nbCA9IFRSVUU7CiAgIH0KLSAgZ3N0X2J1ZmZlcl9wb29sX3NldF9jb25maWcgKHBvb2wsIGNvbmZpZyk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKHBvb2wpOwogCi0gIHJldHVybiBUUlVFOworb3V0OgorICByZXR1cm4gZ3N0X2FtY192aWRlb19kZWNfY2hlY2tfY29kZWNfY29uZmlnIChzZWxmKTsKKyNpZiAwCitjb250ZXh0X2Vycm9yOgorICB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNlbGYsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLCBlcnJvci0+bWVzc2FnZSksCisgICAgICAgIChOVUxMKSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyNlbmRpZgorfQorCitzdGF0aWMgdm9pZAorZ3N0X2FtY192aWRlb19kZWNfb25fZnJhbWVfYXZhaWxhYmxlIChKTklFbnYgKiBlbnYsIGpvYmplY3QgdGhpeiwKKyAgICBsb25nIGxvbmcgY29udGV4dCwgam9iamVjdCBzdXJmYWNlVGV4dHVyZSkKK3sKKyAgR3N0QW1jVmlkZW9EZWMgKnNlbGYgPSBKTE9OR19UT19HU1RfQU1DX1ZJREVPX0RFQyAoY29udGV4dCk7CisKKyAgLyogYXBwYXJlbnRseSB3ZSBjYW4gYmUgY2FsbGVkIGFmdGVyIHRoZSBkZWNvZGVyIGhhcyBiZWVuIGNsb3NlZCAqLworICBpZiAoIXNlbGYpCisgICAgcmV0dXJuOworCisgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmdsX2xvY2spOworICBzZWxmLT5nbF9yZWFkeV9mcmFtZV9jb3VudCsrOworICBHU1RfTE9HX09CSkVDVCAoc2VsZiwgImZyYW1lICV1IGF2YWlsYWJsZSIsIHNlbGYtPmdsX3JlYWR5X2ZyYW1lX2NvdW50KTsKKyAgZ19jb25kX2Jyb2FkY2FzdCAoJnNlbGYtPmdsX2NvbmQpOworICBnX211dGV4X3VubG9jayAoJnNlbGYtPmdsX2xvY2spOwogfQpkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2RlYy5oCmluZGV4IGM2YzJiNGYuLjAzOWE3ODUgMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9kZWMuaAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZGVjLmgKQEAgLTIyLDEwICsyMiwxMiBAQAogI2RlZmluZSBfX0dTVF9BTUNfVklERU9fREVDX0hfXwogCiAjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgogCiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5oPgogCiAjaW5jbHVkZSAiZ3N0YW1jLmgiCisjaW5jbHVkZSAiZ3N0YW1jc3VyZmFjZS5oIgogCiBHX0JFR0lOX0RFQ0xTCiAKQEAgLTQ0LDYgKzQ2LDE0IEBACiAKIHR5cGVkZWYgc3RydWN0IF9Hc3RBbWNWaWRlb0RlYyBHc3RBbWNWaWRlb0RlYzsKIHR5cGVkZWYgc3RydWN0IF9Hc3RBbWNWaWRlb0RlY0NsYXNzIEdzdEFtY1ZpZGVvRGVjQ2xhc3M7Cit0eXBlZGVmIGVudW0gX0dzdEFtY0NvZGVjQ29uZmlnIEdzdEFtY0NvZGVjQ29uZmlnOworCitlbnVtIF9Hc3RBbWNDb2RlY0NvbmZpZworeworICBBTUNfQ09ERUNfQ09ORklHX05PTkUsCisgIEFNQ19DT0RFQ19DT05GSUdfV0lUSF9TVVJGQUNFLAorICBBTUNfQ09ERUNfQ09ORklHX1dJVEhPVVRfU1VSRkFDRSwKK307CiAKIHN0cnVjdCBfR3N0QW1jVmlkZW9EZWMKIHsKQEAgLTUxLDYgKzYxLDcgQEAKIAogICAvKiA8IHByaXZhdGUgPiAqLwogICBHc3RBbWNDb2RlYyAqY29kZWM7CisgIEdzdEFtY0NvZGVjQ29uZmlnIGNvZGVjX2NvbmZpZzsKIAogICBHc3RWaWRlb0NvZGVjU3RhdGUgKmlucHV0X3N0YXRlOwogICBnYm9vbGVhbiBpbnB1dF9zdGF0ZV9jaGFuZ2VkOwpAQCAtNTksNiArNzAsMTAgQEAKICAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OwogICBHc3RBbWNDb2xvckZvcm1hdEluZm8gY29sb3JfZm9ybWF0X2luZm87CiAKKyAgLyogT3V0cHV0IGRpbWVuc2lvbnMgKi8KKyAgZ3VpbnQgd2lkdGg7CisgIGd1aW50IGhlaWdodDsKKwogICBndWludDggKmNvZGVjX2RhdGE7CiAgIGdzaXplIGNvZGVjX2RhdGFfc2l6ZTsKICAgLyogVFJVRSBpZiB0aGUgY29tcG9uZW50IGlzIGNvbmZpZ3VyZWQgYW5kIHNhdwpAQCAtNzYsNyArOTEsMjggQEAKICAgLyogVFJVRSBpZiB0aGUgY29tcG9uZW50IGlzIGRyYWluZWQgY3VycmVudGx5ICovCiAgIGdib29sZWFuIGRyYWluZWQ7CiAKKyAgR3N0QW1jU3VyZmFjZSAqc3VyZmFjZTsKKworICBHc3RHTERpc3BsYXkgKmdsX2Rpc3BsYXk7CisgIEdzdEdMQ29udGV4dCAqZ2xfY29udGV4dDsKKyAgR3N0R0xDb250ZXh0ICpvdGhlcl9nbF9jb250ZXh0OworCisgIGdib29sZWFuIGRvd25zdHJlYW1fc3VwcG9ydHNfZ2w7CiAgIEdzdEZsb3dSZXR1cm4gZG93bnN0cmVhbV9mbG93X3JldDsKKworICBqb2JqZWN0IGxpc3RlbmVyOworICBqbWV0aG9kSUQgc2V0X2NvbnRleHRfaWQ7CisKKyAgZ2Jvb2xlYW4gZ2xfbWVtX2F0dGFjaGVkOworICBHc3RHTE1lbW9yeSAqb2VzX21lbTsKKyAgR0Vycm9yICpnbF9lcnJvcjsKKyAgR011dGV4IGdsX2xvY2s7CisgIEdDb25kIGdsX2NvbmQ7CisgIGd1aW50IGdsX2xhc3RfcmVuZGVyZWRfZnJhbWU7CisgIGd1aW50IGdsX3B1c2hlZF9mcmFtZV9jb3VudDsgLyogbiBidWZmZXJzIHB1c2hlZCAqLworICBndWludCBnbF9yZWFkeV9mcmFtZV9jb3VudDsgIC8qIG4gYnVmZmVycyByZWFkeSBmb3IgR0wgYWNjZXNzICovCisgIGd1aW50IGdsX3JlbGVhc2VkX2ZyYW1lX2NvdW50OyAgLyogbiBidWZmZXJzIHJlbGVhc2VkICovCisgIEdRdWV1ZSAqZ2xfcXVldWU7CiB9OwogCiBzdHJ1Y3QgX0dzdEFtY1ZpZGVvRGVjQ2xhc3MKZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9lbmMuYyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0YW1jdmlkZW9lbmMuYwppbmRleCA0YTQyYTMwLi41ZWY0ODBiIDEwMDY0NAotLS0gYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGFtY3ZpZGVvZW5jLmMKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3RhbWN2aWRlb2VuYy5jCkBAIC0xMDIzLDggKzEwMjMsMTAgQEAKICAgaXNfZW9zID0gISAhKGJ1ZmZlcl9pbmZvLmZsYWdzICYgQlVGRkVSX0ZMQUdfRU5EX09GX1NUUkVBTSk7CiAKICAgYnVmID0gZ3N0X2FtY19jb2RlY19nZXRfb3V0cHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycik7Ci0gIGlmICghYnVmKQorICBpZiAoZXJyKQogICAgIGdvdG8gZmFpbGVkX3RvX2dldF9vdXRwdXRfYnVmZmVyOworICBlbHNlIGlmICghYnVmKQorICAgIGdvdG8gZ290X251bGxfb3V0cHV0X2J1ZmZlcjsKIAogICBmbG93X3JldCA9CiAgICAgICBnc3RfYW1jX3ZpZGVvX2VuY19oYW5kbGVfb3V0cHV0X2ZyYW1lIChzZWxmLCBidWYsICZidWZmZXJfaW5mbywgZnJhbWUpOwpAQCAtMTAzMiw3ICsxMDM0LDcgQEAKICAgZ3N0X2FtY19idWZmZXJfZnJlZSAoYnVmKTsKICAgYnVmID0gTlVMTDsKIAotICBpZiAoIWdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCAmZXJyKSkgeworICBpZiAoIWdzdF9hbWNfY29kZWNfcmVsZWFzZV9vdXRwdXRfYnVmZmVyIChzZWxmLT5jb2RlYywgaWR4LCBGQUxTRSwgJmVycikpIHsKICAgICBpZiAoc2VsZi0+Zmx1c2hpbmcpIHsKICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwogICAgICAgZ290byBmbHVzaGluZzsKQEAgLTExNDcsNyArMTE0OSwyMiBAQAogICAgIEdTVF9FTEVNRU5UX0VSUk9SX0ZST01fRVJST1IgKHNlbGYsIGVycik7CiAgICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChHU1RfVklERU9fRU5DT0RFUl9TUkNfUEFEIChzZWxmKSwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOwogICAgIGdzdF9wYWRfcGF1c2VfdGFzayAoR1NUX1ZJREVPX0VOQ09ERVJfU1JDX1BBRCAoc2VsZikpOwotICAgIHNlbGYtPmRvd25zdHJlYW1fZmxvd19yZXQgPSBHU1RfRkxPV19OT1RfTkVHT1RJQVRFRDsKKyAgICBzZWxmLT5kb3duc3RyZWFtX2Zsb3dfcmV0ID0gR1NUX0ZMT1dfRVJST1I7CisgICAgR1NUX1ZJREVPX0VOQ09ERVJfU1RSRUFNX1VOTE9DSyAoc2VsZik7CisgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CisgICAgc2VsZi0+ZHJhaW5pbmcgPSBGQUxTRTsKKyAgICBnX2NvbmRfYnJvYWRjYXN0ICgmc2VsZi0+ZHJhaW5fY29uZCk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5kcmFpbl9sb2NrKTsKKyAgICByZXR1cm47CisgIH0KKworZ290X251bGxfb3V0cHV0X2J1ZmZlcjoKKyAgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzZWxmLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAorICAgICAgICAoIkdvdCBubyBvdXRwdXQgYnVmZmVyIikpOworICAgIGdzdF9wYWRfcHVzaF9ldmVudCAoR1NUX1ZJREVPX0VOQ09ERVJfU1JDX1BBRCAoc2VsZiksIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKKyAgICBnc3RfcGFkX3BhdXNlX3Rhc2sgKEdTVF9WSURFT19FTkNPREVSX1NSQ19QQUQgKHNlbGYpKTsKKyAgICBzZWxmLT5kb3duc3RyZWFtX2Zsb3dfcmV0ID0gR1NUX0ZMT1dfRVJST1I7CiAgICAgR1NUX1ZJREVPX0VOQ09ERVJfU1RSRUFNX1VOTE9DSyAoc2VsZik7CiAgICAgZ19tdXRleF9sb2NrICgmc2VsZi0+ZHJhaW5fbG9jayk7CiAgICAgc2VsZi0+ZHJhaW5pbmcgPSBGQUxTRTsKQEAgLTEyOTEsNyArMTMwOCw3IEBACiAgICAgICBHU1RfU1RSX05VTEwgKGZvcm1hdF9zdHJpbmcpKTsKICAgZ19mcmVlIChmb3JtYXRfc3RyaW5nKTsKIAotICBpZiAoIWdzdF9hbWNfY29kZWNfY29uZmlndXJlIChzZWxmLT5jb2RlYywgZm9ybWF0LCAxLCAmZXJyKSkgeworICBpZiAoIWdzdF9hbWNfY29kZWNfY29uZmlndXJlIChzZWxmLT5jb2RlYywgZm9ybWF0LCBOVUxMLCAxLCAmZXJyKSkgewogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNlbGYsICJGYWlsZWQgdG8gY29uZmlndXJlIGNvZGVjIik7CiAgICAgR1NUX0VMRU1FTlRfRVJST1JfRlJPTV9FUlJPUiAoc2VsZiwgZXJyKTsKICAgICBnb3RvIHF1aXQ7CkBAIC0xNDUyLDggKzE0NjksMTAgQEAKICAgLyogQ29weSB0aGUgYnVmZmVyIGNvbnRlbnQgaW4gY2h1bmtzIG9mIHNpemUgYXMgcmVxdWVzdGVkCiAgICAqIGJ5IHRoZSBwb3J0ICovCiAgIGJ1ZiA9IGdzdF9hbWNfY29kZWNfZ2V0X2lucHV0X2J1ZmZlciAoc2VsZi0+Y29kZWMsIGlkeCwgJmVycik7Ci0gIGlmICghYnVmKQorICBpZiAoZXJyKQogICAgIGdvdG8gZmFpbGVkX3RvX2dldF9pbnB1dF9idWZmZXI7CisgIGVsc2UgaWYgKCFidWYpCisgICAgZ290byBnb3RfbnVsbF9pbnB1dF9idWZmZXI7CiAKICAgbWVtc2V0ICgmYnVmZmVyX2luZm8sIDAsIHNpemVvZiAoYnVmZmVyX2luZm8pKTsKICAgYnVmZmVyX2luZm8ub2Zmc2V0ID0gMDsKQEAgLTE1MjIsMTEgKzE1NDEsMTkgQEAKICAgICBnc3RfdmlkZW9fY29kZWNfZnJhbWVfdW5yZWYgKGZyYW1lKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KK2dvdF9udWxsX2lucHV0X2J1ZmZlcjoKKyAgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzZWxmLCBMSUJSQVJZLCBTRVRUSU5HUywgKE5VTEwpLAorICAgICAgICAoIkdvdCBubyBpbnB1dCBidWZmZXIiKSk7CisgICAgZ3N0X3ZpZGVvX2NvZGVjX2ZyYW1lX3VucmVmIChmcmFtZSk7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CiBidWZmZXJfZmlsbF9lcnJvcjoKICAgewogICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzZWxmLCBSRVNPVVJDRSwgV1JJVEUsIChOVUxMKSwKLSAgICAgICAgKCJGYWlsZWQgdG8gd3JpdGUgaW5wdXQgaW50byB0aGUgYW1jIGJ1ZmZlcih3cml0ZSAlZEIgdG8gYSAlZEIgYnVmZmVyKSIsCi0gICAgICAgICAgICBzZWxmLT5jb2xvcl9mb3JtYXRfaW5mby5mcmFtZV9zaXplLCBidWYtPnNpemUpKTsKKyAgICAgICAgKCJGYWlsZWQgdG8gd3JpdGUgaW5wdXQgaW50byB0aGUgYW1jIGJ1ZmZlcih3cml0ZSAlZEIgdG8gYSAlIgorICAgICAgICAgICAgR19HU0laRV9GT1JNQVQgIkIgYnVmZmVyKSIsIHNlbGYtPmNvbG9yX2Zvcm1hdF9pbmZvLmZyYW1lX3NpemUsCisgICAgICAgICAgICBidWYtPnNpemUpKTsKICAgICBnc3RfdmlkZW9fY29kZWNfZnJhbWVfdW5yZWYgKGZyYW1lKTsKICAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CiAgIH0KZGlmZiAtLWdpdCBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0am5pdXRpbHMuYyBiL3N5cy9hbmRyb2lkbWVkaWEvZ3N0am5pdXRpbHMuYwppbmRleCBmOTM2MDI3Li40ZmUzNzQ3IDEwMDY0NAotLS0gYS9zeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmMKKysrIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5jCkBAIC00MSw2ICs0MSw3IEBACiBzdGF0aWMgSmF2YVZNICpqYXZhX3ZtOwogc3RhdGljIGdib29sZWFuIHN0YXJ0ZWRfamF2YV92bSA9IEZBTFNFOwogc3RhdGljIHB0aHJlYWRfa2V5X3QgY3VycmVudF9qbmlfZW52Oworc3RhdGljIGpvYmplY3QgKCpnZXRfY2xhc3NfbG9hZGVyKSAodm9pZCk7CiAKIHN0YXRpYyBzdHJ1Y3QKIHsKQEAgLTIxMSwxMiArMjEyLDE2IEBACiB2b2lkCiBnc3RfYW1jX2puaV9vYmplY3RfdW5yZWYgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmplY3QpCiB7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKG9iamVjdCAhPSBOVUxMKTsKKwogICAoKmVudiktPkRlbGV0ZUdsb2JhbFJlZiAoZW52LCBvYmplY3QpOwogfQogCiB2b2lkCiBnc3RfYW1jX2puaV9vYmplY3RfbG9jYWxfdW5yZWYgKEpOSUVudiAqIGVudiwgam9iamVjdCBvYmplY3QpCiB7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKG9iamVjdCAhPSBOVUxMKTsKKwogICAoKmVudiktPkRlbGV0ZUxvY2FsUmVmIChlbnYsIG9iamVjdCk7CiB9CiAKQEAgLTU2MCw2ICs1NjUsMjYgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCitjaGVja19hcHBsaWNhdGlvbl9jbGFzc19sb2FkZXIgKHZvaWQpCit7CisgIGdib29sZWFuIHJldCA9IFRSVUU7CisgIEdNb2R1bGUgKm1vZHVsZSA9IE5VTEw7CisKKyAgbW9kdWxlID0gZ19tb2R1bGVfb3BlbiAoTlVMTCwgR19NT0RVTEVfQklORF9MT0NBTCk7CisgIGlmICghbW9kdWxlKSB7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisgIGlmICghZ19tb2R1bGVfc3ltYm9sIChtb2R1bGUsICJnc3RfYW5kcm9pZF9nZXRfYXBwbGljYXRpb25fY2xhc3NfbG9hZGVyIiwKKyAgICAgICAgICAoZ3BvaW50ZXIgKikgJiBnZXRfY2xhc3NfbG9hZGVyKSkgeworICAgIHJldCA9IEZBTFNFOworICB9CisKKyAgZ19tb2R1bGVfY2xvc2UgKG1vZHVsZSk7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdib29sZWFuCiBpbml0aWFsaXplX2NsYXNzZXMgKHZvaWQpCiB7CiAgIEpOSUVudiAqZW52OwpAQCAtNjE5LDYgKzY0NCwxMSBAQAogICAgIHJldHVybiBGQUxTRTsKICAgfQogCisgIGlmICghY2hlY2tfYXBwbGljYXRpb25fY2xhc3NfbG9hZGVyICgpKSB7CisgICAgR1NUX0VSUk9SICgiQ291bGQgbm90IGZpbmQgYXBwbGljYXRpb24gY2xhc3MgbG9hZGVyIHByb3ZpZGVyIik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKICAgcmV0dXJuIFRSVUU7CiB9CiAKQEAgLTc5OCw2ICs4MjgsNTcgQEAKICAgcmV0dXJuIHN0YXJ0ZWRfamF2YV92bTsKIH0KIAoramNsYXNzCitnc3RfYW1jX2puaV9nZXRfYXBwbGljYXRpb25fY2xhc3MgKEpOSUVudiAqIGVudiwgY29uc3QgZ2NoYXIgKiBuYW1lLAorICAgIEdFcnJvciAqKiBlcnIpCit7CisgIGpjbGFzcyB0bXAgPSBOVUxMOworICBqY2xhc3MgY2xhc3MgPSBOVUxMOworICBqc3RyaW5nIG5hbWVfanN0ciA9IE5VTEw7CisKKyAgam9iamVjdCBjbGFzc19sb2FkZXIgPSBOVUxMOworICBqY2xhc3MgY2xhc3NfbG9hZGVyX2NscyA9IE5VTEw7CisgIGptZXRob2RJRCBsb2FkX2NsYXNzX2lkID0gMDsKKworCisgIGNsYXNzX2xvYWRlciA9IGdldF9jbGFzc19sb2FkZXIgKCk7CisgIGlmICghY2xhc3NfbG9hZGVyKSB7CisgICAgZ19zZXRfZXJyb3IgKGVyciwgR1NUX0xJQlJBUllfRVJST1IsIEdTVF9MSUJSQVJZX0VSUk9SX0ZBSUxFRCwKKyAgICAgICAgIkNvdWxkIG5vdCByZXRyZWl2ZSBhcHBsaWNhdGlvbiBjbGFzcyBsb2FkZXIiKTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBjbGFzc19sb2FkZXJfY2xzID0gKCplbnYpLT5HZXRPYmplY3RDbGFzcyAoZW52LCBjbGFzc19sb2FkZXIpOworICBpZiAoIWNsYXNzX2xvYWRlcl9jbHMpIHsKKyAgICBnX3NldF9lcnJvciAoZXJyLCBHU1RfTElCUkFSWV9FUlJPUiwgR1NUX0xJQlJBUllfRVJST1JfRkFJTEVELAorICAgICAgICAiQ291bGQgbm90IHJldHJlaXZlIGFwcGxpY2F0aW9uIGNsYXNzIGxvYWRlciBqYXZhIGNsYXNzIik7CisgICAgZ290byBkb25lOworICB9CisKKyAgbG9hZF9jbGFzc19pZCA9CisgICAgICBnc3RfYW1jX2puaV9nZXRfbWV0aG9kX2lkIChlbnYsIGVyciwgY2xhc3NfbG9hZGVyX2NscywgImxvYWRDbGFzcyIsCisgICAgICAiKExqYXZhL2xhbmcvU3RyaW5nOylMamF2YS9sYW5nL0NsYXNzOyIpOworICBpZiAoIWNsYXNzX2xvYWRlcl9jbHMpIHsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBuYW1lX2pzdHIgPSBnc3RfYW1jX2puaV9zdHJpbmdfZnJvbV9nY2hhciAoZW52LCBlcnIsIEZBTFNFLCBuYW1lKTsKKyAgaWYgKCFuYW1lX2pzdHIpIHsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBpZiAoZ3N0X2FtY19qbmlfY2FsbF9vYmplY3RfbWV0aG9kIChlbnYsIGVyciwgY2xhc3NfbG9hZGVyLAorICAgICAgICAgIGxvYWRfY2xhc3NfaWQsICZ0bXAsIG5hbWVfanN0cikpIHsKKyAgICBjbGFzcyA9IGdzdF9hbWNfam5pX29iamVjdF9tYWtlX2dsb2JhbCAoZW52LCB0bXApOworICB9CisKK2RvbmU6CisgIGdzdF9hbWNfam5pX29iamVjdF9sb2NhbF91bnJlZiAoZW52LCBuYW1lX2pzdHIpOworICBnc3RfYW1jX2puaV9vYmplY3RfbG9jYWxfdW5yZWYgKGVudiwgY2xhc3NfbG9hZGVyX2Nscyk7CisKKyAgcmV0dXJuIGNsYXNzOworfQorCiAjZGVmaW5lIENBTExfU1RBVElDX1RZUEVfTUVUSE9EKF90eXBlLCBfbmFtZSwgIF9qbmFtZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIGdib29sZWFuIGdzdF9hbWNfam5pX2NhbGxfc3RhdGljXyMjX25hbWUjI19tZXRob2QgKEpOSUVudiAqZW52LCBHRXJyb3IgKiogZXJyLCBqY2xhc3Mga2xhc3MsIGptZXRob2RJRCBtZXRob2RJRCwgX3R5cGUgKiB2YWx1ZSwgLi4uKSAgIFwKICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCkBAIC05NDcsMTIgKzEwMjgsMTcgQEAKICAgICBqb2JqZWN0IGJ1ZmZlciA9IE5VTEw7CiAKICAgICBidWZmZXIgPSAoKmVudiktPkdldE9iamVjdEFycmF5RWxlbWVudCAoZW52LCBhcnJheSwgaSk7Ci0gICAgaWYgKCgqZW52KS0+RXhjZXB0aW9uQ2hlY2sgKGVudikgfHwgIWJ1ZmZlcikgeworICAgIGlmICgoKmVudiktPkV4Y2VwdGlvbkNoZWNrIChlbnYpKSB7CiAgICAgICBnc3RfYW1jX2puaV9zZXRfZXJyb3IgKGVudiwgZXJyLCBHU1RfTElCUkFSWV9FUlJPUiwKICAgICAgICAgICBHU1RfTElCUkFSWV9FUlJPUl9GQUlMRUQsICJGYWlsZWQgdG8gZ2V0IGJ1ZmZlciAlZCIsIGkpOwogICAgICAgZ290byBlcnJvcjsKICAgICB9CiAKKyAgICAvKiBOVUxMIGJ1ZmZlcnMgYXJlIG5vdCBhIHByb2JsZW0gYW5kIGFyZSBoYXBwZW5pbmcgd2hlbiB3ZSBjb25maWd1cmVkCisgICAgICogYSBzdXJmYWNlIGFzIGlucHV0L291dHB1dCAqLworICAgIGlmICghYnVmZmVyKQorICAgICAgY29udGludWU7CisKICAgICAoKmJ1ZmZlcnMpW2ldLm9iamVjdCA9IGdzdF9hbWNfam5pX29iamVjdF9tYWtlX2dsb2JhbCAoZW52LCBidWZmZXIpOwogICAgIGlmICghKCpidWZmZXJzKVtpXS5vYmplY3QpIHsKICAgICAgIGdzdF9hbWNfam5pX3NldF9lcnJvciAoZW52LCBlcnIsIEdTVF9MSUJSQVJZX0VSUk9SLApkaWZmIC0tZ2l0IGEvc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5oIGIvc3lzL2FuZHJvaWRtZWRpYS9nc3Rqbml1dGlscy5oCmluZGV4IGE2YmM2OGEuLmMzMjNjZjggMTAwNjQ0Ci0tLSBhL3N5cy9hbmRyb2lkbWVkaWEvZ3N0am5pdXRpbHMuaAorKysgYi9zeXMvYW5kcm9pZG1lZGlhL2dzdGpuaXV0aWxzLmgKQEAgLTEwNyw2ICsxMDcsMTAgQEAKIAogSk5JRW52ICpnc3RfYW1jX2puaV9nZXRfZW52ICAgICAgICAgICAgICAgICAgKHZvaWQpOwogCitqY2xhc3MgZ3N0X2FtY19qbmlfZ2V0X2FwcGxpY2F0aW9uX2NsYXNzICAgICAoSk5JRW52ICogZW52LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKiBuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0Vycm9yICoqIGVycik7CisKICNkZWZpbmUgREVGX0NBTExfU1RBVElDX1RZUEVfTUVUSE9EKF90eXBlLCBfbmFtZSwgIF9qbmFtZSwgX3JldHZhbCkgXAogZ2Jvb2xlYW4gZ3N0X2FtY19qbmlfY2FsbF9zdGF0aWNfIyNfbmFtZSMjX21ldGhvZCAoSk5JRW52ICplbnYsIEdFcnJvciAqKiBlcnIsIGpjbGFzcyBrbGFzcywgam1ldGhvZElEIG1ldGhvZElELCBfdHlwZSAqIHZhbHVlLCAuLi4pCiAKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhLW5vbnB1YmxpYy9NYWtlZmlsZS5pbiBiL3N5cy9hcHBsZW1lZGlhLW5vbnB1YmxpYy9NYWtlZmlsZS5pbgppbmRleCBhNDczMDc5Li5jZjI5M2NjIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS1ub25wdWJsaWMvTWFrZWZpbGUuaW4KKysrIGIvc3lzL2FwcGxlbWVkaWEtbm9ucHVibGljL01ha2VmaWxlLmluCkBAIC0xMjUsMTYgKzEyNSwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTMxNiw2ICszMTUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTM1Myw2ICszNTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTM2MSw3ICszNjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zODAsOCArMzgyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM5OCwxNiArNDAxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQzMyw2ICs0MzcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00NTgsNiArNDY0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTU5LDYgKzU2Nyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NzIsOCArNTgxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTg5LDYgKzU5Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02NDYsMTYgKzY1NSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTcwNyw2ICs3MTgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNzE3LDYgKzcyOSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTcyNiw2ICs3MzksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzYzLDcgKzc3OCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvTWFrZWZpbGUuYW0gYi9zeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbQppbmRleCAzNGEwMTY5Li44N2I4MGI1IDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbQorKysgYi9zeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5hbQpAQCAtMywxMCArMywxMiBAQAogbGliZ3N0YXBwbGVtZWRpYV9sYV9TT1VSQ0VTID0JCQlcCiAJcGx1Z2luLm0JCQkJXAogCXZ0dXRpbC5jCQkJCVwKKwljb3JldmlkZW9tZW1vcnkuYwkJCVwKIAljb3JldmlkZW9idWZmZXIuYwkJCVwKIAljb3JlbWVkaWFidWZmZXIuYwkJCVwKLQljb3JldmlkZW90ZXh0dXJlY2FjaGUubSAJCVwKLQlhdGRlYy5jCisJdmlkZW90ZXh0dXJlY2FjaGUubSAJCQlcCisJYXRkZWMuYyAJCQkJXAorCWdsY29udGV4dGhlbHBlci5jCiAKIGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MgPQkJCVwKIAktRGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXc9Z3N0X2NvcmVfbWVkaWFfYnVmZmVyX3ByaXZfbmV3CQlcCkBAIC0yMiwxMCArMjQsMTggQEAKIAkkKEdTVF9CQVNFX0NGTEFHUykJCQlcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykKIAoraWYgSEFWRV9JT1MKK0dTVF9PQkpDRkxBR1NfV0lUSF9WRVJTSU9OID0gJChHU1RfT0JKQ0ZMQUdTKQorZWxzZQorIyBBZGQgbWluIHZlcnNpb24gaW4gZnJvbnQgc28gdGhlIHVzZXIgb3IgY2VyYmVybyBjYW4gb3ZlcnJpZGUgaXQgc2luY2UgaXQKKyMgYWx3YXlzIHBpY2tzIHRoZSBsYXN0IG9jY3VyZW5jZSB3aGVuIHBhc3Npbmcgc2V2ZXJhbCAtbW1hY29zeC12ZXJzaW9uLW1pbi4KK0dTVF9PQkpDRkxBR1NfV0lUSF9WRVJTSU9OID0gLW1tYWNvc3gtdmVyc2lvbi1taW49MTAuOCAkKEdTVF9PQkpDRkxBR1MpCitlbmRpZgorCiBsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUyA9CQkJXAogCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyAgICAgICAgICAgICAgICBcCiAJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgICAgICAgICAgICAgIFwKLQkkKEdTVF9PQkpDRkxBR1MpCQkJXAorCSQoR1NUX09CSkNGTEFHU19XSVRIX1ZFUlNJT04pCQlcCiAJJChHU1RfQkFTRV9DRkxBR1MpCQkJXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpCiAKQEAgLTYyLDEwICs3MiwxMSBAQAogCXZ0dXRpbC5oCQkJCVwKIAljb3JldmlkZW9idWZmZXIuaAkJCVwKIAljb3JlbWVkaWFidWZmZXIuaAkJCVwKLQljb3JldmlkZW90ZXh0dXJlY2FjaGUuaAkJCVwKKwl2aWRlb3RleHR1cmVjYWNoZS5oCQkJXAogCWF0ZGVjLmggCQkJCVwKIAlpb3Nhc3NldHNyYy5oCQkJCVwKLQlhdmZhc3NldHNyYy5oCisJYXZmYXNzZXRzcmMuaCAgCQkJCVwKKwlnbGNvbnRleHRoZWxwZXIuaAogCiBpZiBIQVZFX0lPUwogCkBAIC03OSwxMSArOTAsMTMgQEAKIGVsc2UKIAogbGliZ3N0YXBwbGVtZWRpYV9sYV9TT1VSQ0VTICs9CQkJXAotCXF0a2l0dmlkZW9zcmMubQorCXF0a2l0dmlkZW9zcmMubSAJCQkJCVwKKwlpb3N1cmZhY2VtZW1vcnkuYwogCiBsaWJnc3RhcHBsZW1lZGlhX2xhX0xERkxBR1MgKz0JCQlcCiAJLVdsLC1mcmFtZXdvcmsgLVdsLENvY29hCQlcCi0JLVdsLC1mcmFtZXdvcmsgLVdsLFFUS2l0CisJLVdsLC1mcmFtZXdvcmsgLVdsLFFUS2l0CQlcCisJLVdsLC1mcmFtZXdvcmsgLVdsLElPU3VyZmFjZQogCiBlbmRpZgogCmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9NYWtlZmlsZS5pbiBiL3N5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmluCmluZGV4IGU0ZDU3YzUuLmQ2MWUwNzAgMTAwNjQ0Ci0tLSBhL3N5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmluCisrKyBiL3N5cy9hcHBsZW1lZGlhL01ha2VmaWxlLmluCkBAIC05OSwxMSArOTksMTMgQEAKIEBIQVZFX0lPU19UUlVFQAktV2wsLWZyYW1ld29yayAtV2wsQXNzZXRzTGlicmFyeQogCiBASEFWRV9JT1NfRkFMU0VAYW1fX2FwcGVuZF80ID0gXAotQEhBVkVfSU9TX0ZBTFNFQAlxdGtpdHZpZGVvc3JjLm0KK0BIQVZFX0lPU19GQUxTRUAJcXRraXR2aWRlb3NyYy5tIAkJCQkJXAorQEhBVkVfSU9TX0ZBTFNFQAlpb3N1cmZhY2VtZW1vcnkuYwogCiBASEFWRV9JT1NfRkFMU0VAYW1fX2FwcGVuZF81ID0gXAogQEhBVkVfSU9TX0ZBTFNFQAktV2wsLWZyYW1ld29yayAtV2wsQ29jb2EJCVwKLUBIQVZFX0lPU19GQUxTRUAJLVdsLC1mcmFtZXdvcmsgLVdsLFFUS2l0CitASEFWRV9JT1NfRkFMU0VACS1XbCwtZnJhbWV3b3JrIC1XbCxRVEtpdAkJXAorQEhBVkVfSU9TX0ZBTFNFQAktV2wsLWZyYW1ld29yayAtV2wsSU9TdXJmYWNlCiAKIEBIQVZFX0FWRk9VTkRBVElPTl9UUlVFQGFtX19hcHBlbmRfNiA9IFwKIEBIQVZFX0FWRk9VTkRBVElPTl9UUlVFQAlhdmZ2aWRlb3NyYy5tCQkJCVwKQEAgLTE0NCwxNiArMTQ2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTk2LDExICsxOTcsMTMgQEAKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGFtX19saWJnc3RhcHBsZW1lZGlhX2xhX1NPVVJDRVNfRElTVCA9IHBsdWdpbi5tIHZ0dXRpbC5jIFwKLQljb3JldmlkZW9idWZmZXIuYyBjb3JlbWVkaWFidWZmZXIuYyBjb3JldmlkZW90ZXh0dXJlY2FjaGUubSBcCi0JYXRkZWMuYyBpb3Nhc3NldHNyYy5tIHF0a2l0dmlkZW9zcmMubSBhdmZ2aWRlb3NyYy5tIFwKLQlhdmZhc3NldHNyYy5tIGF2c2FtcGxldmlkZW9zaW5rLm0gdnRlbmMuYyB2dGRlYy5jCisJY29yZXZpZGVvbWVtb3J5LmMgY29yZXZpZGVvYnVmZmVyLmMgY29yZW1lZGlhYnVmZmVyLmMgXAorCXZpZGVvdGV4dHVyZWNhY2hlLm0gYXRkZWMuYyBnbGNvbnRleHRoZWxwZXIuYyBpb3Nhc3NldHNyYy5tIFwKKwlxdGtpdHZpZGVvc3JjLm0gaW9zdXJmYWNlbWVtb3J5LmMgYXZmdmlkZW9zcmMubSBhdmZhc3NldHNyYy5tIFwKKwlhdnNhbXBsZXZpZGVvc2luay5tIHZ0ZW5jLmMgdnRkZWMuYwogQEhBVkVfSU9TX1RSVUVAYW1fX29iamVjdHNfMSA9IGxpYmdzdGFwcGxlbWVkaWFfbGEtaW9zYXNzZXRzcmMubG8KLUBIQVZFX0lPU19GQUxTRUBhbV9fb2JqZWN0c18yID0gbGliZ3N0YXBwbGVtZWRpYV9sYS1xdGtpdHZpZGVvc3JjLmxvCitASEFWRV9JT1NfRkFMU0VAYW1fX29iamVjdHNfMiA9IGxpYmdzdGFwcGxlbWVkaWFfbGEtcXRraXR2aWRlb3NyYy5sbyBcCitASEFWRV9JT1NfRkFMU0VACWxpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LmxvCiBASEFWRV9BVkZPVU5EQVRJT05fVFJVRUBhbV9fb2JqZWN0c18zID0gIFwKIEBIQVZFX0FWRk9VTkRBVElPTl9UUlVFQAlsaWJnc3RhcHBsZW1lZGlhX2xhLWF2ZnZpZGVvc3JjLmxvIFwKIEBIQVZFX0FWRk9VTkRBVElPTl9UUlVFQAlsaWJnc3RhcHBsZW1lZGlhX2xhLWF2ZmFzc2V0c3JjLmxvIFwKQEAgLTIwOSwxMSArMjEyLDEzIEBACiBASEFWRV9WSURFT1RPT0xCT1hfVFJVRUAJbGliZ3N0YXBwbGVtZWRpYV9sYS12dGRlYy5sbwogYW1fbGliZ3N0YXBwbGVtZWRpYV9sYV9PQkpFQ1RTID0gbGliZ3N0YXBwbGVtZWRpYV9sYS1wbHVnaW4ubG8gXAogCWxpYmdzdGFwcGxlbWVkaWFfbGEtdnR1dGlsLmxvIFwKKwlsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb21lbW9yeS5sbyBcCiAJbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9idWZmZXIubG8gXAogCWxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZW1lZGlhYnVmZmVyLmxvIFwKLQlsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb3RleHR1cmVjYWNoZS5sbyBcCi0JbGliZ3N0YXBwbGVtZWRpYV9sYS1hdGRlYy5sbyAkKGFtX19vYmplY3RzXzEpICQoYW1fX29iamVjdHNfMikgXAotCSQoYW1fX29iamVjdHNfMykgJChhbV9fb2JqZWN0c180KQorCWxpYmdzdGFwcGxlbWVkaWFfbGEtdmlkZW90ZXh0dXJlY2FjaGUubG8gXAorCWxpYmdzdGFwcGxlbWVkaWFfbGEtYXRkZWMubG8gXAorCWxpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLmxvICQoYW1fX29iamVjdHNfMSkgXAorCSQoYW1fX29iamVjdHNfMikgJChhbV9fb2JqZWN0c18zKSAkKGFtX19vYmplY3RzXzQpCiBsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGFwcGxlbWVkaWFfbGFfT0JKRUNUUykKIEFNX1ZfbHQgPSAkKGFtX192X2x0X0BBTV9WQCkKIGFtX192X2x0XyA9ICQoYW1fX3ZfbHRfQEFNX0RFRkFVTFRfVkApCkBAIC0zMzksNiArMzQ0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zNzYsNiArMzgzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zODQsNyArMzkzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtNDAzLDggKzQxMSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC00MjEsMTYgKzQzMCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00NTYsNiArNDY2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDgxLDYgKzQ5Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTU4Miw2ICs1OTYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTk1LDggKzYxMCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTYxMiw2ICs2MjUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjY5LDE2ICs2ODQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC03MzAsNiArNzQ3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTc0MCw2ICs3NTgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03NDksNiArNzY4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTc4Niw3ICs4MDcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTgyNywxMCArODQ3LDEwIEBACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAogcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0YXBwbGVtZWRpYS5sYQotbGliZ3N0YXBwbGVtZWRpYV9sYV9TT1VSQ0VTID0gcGx1Z2luLm0gdnR1dGlsLmMgY29yZXZpZGVvYnVmZmVyLmMgXAotCWNvcmVtZWRpYWJ1ZmZlci5jIGNvcmV2aWRlb3RleHR1cmVjYWNoZS5tIGF0ZGVjLmMgXAotCSQoYW1fX2FwcGVuZF8yKSAkKGFtX19hcHBlbmRfNCkgJChhbV9fYXBwZW5kXzYpIFwKLQkkKGFtX19hcHBlbmRfOCkKK2xpYmdzdGFwcGxlbWVkaWFfbGFfU09VUkNFUyA9IHBsdWdpbi5tIHZ0dXRpbC5jIGNvcmV2aWRlb21lbW9yeS5jIFwKKwljb3JldmlkZW9idWZmZXIuYyBjb3JlbWVkaWFidWZmZXIuYyB2aWRlb3RleHR1cmVjYWNoZS5tIFwKKwlhdGRlYy5jIGdsY29udGV4dGhlbHBlci5jICQoYW1fX2FwcGVuZF8yKSAkKGFtX19hcHBlbmRfNCkgXAorCSQoYW1fX2FwcGVuZF82KSAkKGFtX19hcHBlbmRfOCkKIGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MgPSBcCiAJLURnc3RfY29yZV9tZWRpYV9idWZmZXJfbmV3PWdzdF9jb3JlX21lZGlhX2J1ZmZlcl9wcml2X25ldwkJXAogCS1EZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX2dldF90eXBlPWdzdF9jb3JlX21lZGlhX2J1ZmZlcl9wcml2X2dldF90eXBlCVwKQEAgLTg0NSw5ICs4NjUsMTMgQEAKIAkkKEdTVF9CQVNFX0NGTEFHUykJCQlcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykKIAorIyBBZGQgbWluIHZlcnNpb24gaW4gZnJvbnQgc28gdGhlIHVzZXIgb3IgY2VyYmVybyBjYW4gb3ZlcnJpZGUgaXQgc2luY2UgaXQKKyMgYWx3YXlzIHBpY2tzIHRoZSBsYXN0IG9jY3VyZW5jZSB3aGVuIHBhc3Npbmcgc2V2ZXJhbCAtbW1hY29zeC12ZXJzaW9uLW1pbi4KK0BIQVZFX0lPU19GQUxTRUBHU1RfT0JKQ0ZMQUdTX1dJVEhfVkVSU0lPTiA9IC1tbWFjb3N4LXZlcnNpb24tbWluPTEwLjggJChHU1RfT0JKQ0ZMQUdTKQorQEhBVkVfSU9TX1RSVUVAR1NUX09CSkNGTEFHU19XSVRIX1ZFUlNJT04gPSAkKEdTVF9PQkpDRkxBR1MpCiBsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUyA9IC1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0JLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgJChHU1RfT0JKQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoYW1fX2FwcGVuZF8xKQorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzICQoR1NUX09CSkNGTEFHU19XSVRIX1ZFUlNJT04pIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChhbV9fYXBwZW5kXzEpCiBsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQkFERCA9IFwKIAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSAJXAogCSQoR1NUX0JBU0VfTElCUykJCQkJCQlcCkBAIC04NzIsMTAgKzg5NiwxMSBAQAogCXZ0dXRpbC5oCQkJCVwKIAljb3JldmlkZW9idWZmZXIuaAkJCVwKIAljb3JlbWVkaWFidWZmZXIuaAkJCVwKLQljb3JldmlkZW90ZXh0dXJlY2FjaGUuaAkJCVwKKwl2aWRlb3RleHR1cmVjYWNoZS5oCQkJXAogCWF0ZGVjLmggCQkJCVwKIAlpb3Nhc3NldHNyYy5oCQkJCVwKLQlhdmZhc3NldHNyYy5oCisJYXZmYXNzZXRzcmMuaCAgCQkJCVwKKwlnbGNvbnRleHRoZWxwZXIuaAogCiBhbGw6IGFsbC1hbQogCkBAIC05NjEsMTAgKzk4NiwxMyBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtYXZzYW1wbGV2aWRlb3NpbmsuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmVtZWRpYWJ1ZmZlci5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvYnVmZmVyLlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW90ZXh0dXJlY2FjaGUuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb21lbW9yeS5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3Nhc3NldHNyYy5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1wbHVnaW4uUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXF0a2l0dmlkZW9zcmMuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLlBsb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS12dGRlYy5QbG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtdnRlbmMuUGxvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXZ0dXRpbC5QbG9AYW1fX3F1b3RlQApAQCAtMTAwMCw2ICsxMDI4LDEzIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS12dHV0aWwubG8gYHRlc3QgLWYgJ3Z0dXRpbC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2dHV0aWwuYwogCitsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb21lbW9yeS5sbzogY29yZXZpZGVvbWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9tZW1vcnkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LlRwbyAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb21lbW9yeS5sbyBgdGVzdCAtZiAnY29yZXZpZGVvbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGNvcmV2aWRlb21lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb21lbW9yeS5UcG8gJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2NvcmV2aWRlb21lbW9yeS5jJyBvYmplY3Q9J2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvbWVtb3J5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9tZW1vcnkubG8gYHRlc3QgLWYgJ2NvcmV2aWRlb21lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bjb3JldmlkZW9tZW1vcnkuYworCiBsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb2J1ZmZlci5sbzogY29yZXZpZGVvYnVmZmVyLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW9idWZmZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvYnVmZmVyLlRwbyAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb2J1ZmZlci5sbyBgdGVzdCAtZiAnY29yZXZpZGVvYnVmZmVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGNvcmV2aWRlb2J1ZmZlci5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb2J1ZmZlci5UcG8gJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvYnVmZmVyLlBsbwpAQCAtMTAyMSw2ICsxMDU2LDIwIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS1hdGRlYy5sbyBgdGVzdCAtZiAnYXRkZWMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgYXRkZWMuYwogCitsaWJnc3RhcHBsZW1lZGlhX2xhLWdsY29udGV4dGhlbHBlci5sbzogZ2xjb250ZXh0aGVscGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXBwbGVtZWRpYV9sYS1nbGNvbnRleHRoZWxwZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLlRwbyAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWdsY29udGV4dGhlbHBlci5sbyBgdGVzdCAtZiAnZ2xjb250ZXh0aGVscGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdsY29udGV4dGhlbHBlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWdsY29udGV4dGhlbHBlci5UcG8gJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dsY29udGV4dGhlbHBlci5jJyBvYmplY3Q9J2xpYmdzdGFwcGxlbWVkaWFfbGEtZ2xjb250ZXh0aGVscGVyLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS1nbGNvbnRleHRoZWxwZXIubG8gYHRlc3QgLWYgJ2dsY29udGV4dGhlbHBlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BnbGNvbnRleHRoZWxwZXIuYworCitsaWJnc3RhcHBsZW1lZGlhX2xhLWlvc3VyZmFjZW1lbW9yeS5sbzogaW9zdXJmYWNlbWVtb3J5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3N1cmZhY2VtZW1vcnkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LlRwbyAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLWlvc3VyZmFjZW1lbW9yeS5sbyBgdGVzdCAtZiAnaW9zdXJmYWNlbWVtb3J5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGlvc3VyZmFjZW1lbW9yeS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWlvc3VyZmFjZW1lbW9yeS5UcG8gJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2lvc3VyZmFjZW1lbW9yeS5jJyBvYmplY3Q9J2xpYmdzdGFwcGxlbWVkaWFfbGEtaW9zdXJmYWNlbWVtb3J5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3N1cmZhY2VtZW1vcnkubG8gYHRlc3QgLWYgJ2lvc3VyZmFjZW1lbW9yeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bpb3N1cmZhY2VtZW1vcnkuYworCiBsaWJnc3RhcHBsZW1lZGlhX2xhLXZ0ZW5jLmxvOiB2dGVuYy5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGFwcGxlbWVkaWFfbGEtdnRlbmMubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtdnRlbmMuVHBvIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtdnRlbmMubG8gYHRlc3QgLWYgJ3Z0ZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHZ0ZW5jLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdGFwcGxlbWVkaWFfbGEtdnRlbmMuVHBvICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXZ0ZW5jLlBsbwpAQCAtMTA2NiwxMiArMTExNSwxMiBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwT0JKQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKE9CSkNERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcE9CSkNfRkFMU0VACSQoQU1fVl9PQkpDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKE9CSkMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9PQkpDRkxBR1MpICQoT0JKQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLXBsdWdpbi5sbyBgdGVzdCAtZiAncGx1Z2luLm0nIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHBsdWdpbi5tCiAKLWxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLmxvOiBjb3JldmlkZW90ZXh0dXJlY2FjaGUubQotQGFtX19mYXN0ZGVwT0JKQ19UUlVFQAkkKEFNX1ZfT0JKQykkKExJQlRPT0wpICQoQU1fVl9sdCkgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoT0JKQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUykgJChPQkpDRkxBR1MpIC1NVCBsaWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb3RleHR1cmVjYWNoZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW90ZXh0dXJlY2FjaGUuVHBvIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLmxvIGB0ZXN0IC1mICdjb3JldmlkZW90ZXh0dXJlY2FjaGUubScgfHwgZWNobyAnJChzcmNkaXIpLydgY29yZXZpZGVvdGV4dHVyZWNhY2hlLm0KLUBhbV9fZmFzdGRlcE9CSkNfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW90ZXh0dXJlY2FjaGUuVHBvICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLWNvcmV2aWRlb3RleHR1cmVjYWNoZS5QbG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcE9CSkNfRkFMU0VACSQoQU1fVl9PQkpDKXNvdXJjZT0nY29yZXZpZGVvdGV4dHVyZWNhY2hlLm0nIG9iamVjdD0nbGliZ3N0YXBwbGVtZWRpYV9sYS1jb3JldmlkZW90ZXh0dXJlY2FjaGUubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdGFwcGxlbWVkaWFfbGEtdmlkZW90ZXh0dXJlY2FjaGUubG86IHZpZGVvdGV4dHVyZWNhY2hlLm0KK0BhbV9fZmFzdGRlcE9CSkNfVFJVRUAJJChBTV9WX09CSkMpJChMSUJUT09MKSAkKEFNX1ZfbHQpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKE9CSkMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9PQkpDRkxBR1MpICQoT0JKQ0ZMQUdTKSAtTVQgbGliZ3N0YXBwbGVtZWRpYV9sYS12aWRlb3RleHR1cmVjYWNoZS5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS12aWRlb3RleHR1cmVjYWNoZS5UcG8gLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS12aWRlb3RleHR1cmVjYWNoZS5sbyBgdGVzdCAtZiAndmlkZW90ZXh0dXJlY2FjaGUubScgfHwgZWNobyAnJChzcmNkaXIpLydgdmlkZW90ZXh0dXJlY2FjaGUubQorQGFtX19mYXN0ZGVwT0JKQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLlRwbyAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS12aWRlb3RleHR1cmVjYWNoZS5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcE9CSkNfRkFMU0VACSQoQU1fVl9PQkpDKXNvdXJjZT0ndmlkZW90ZXh0dXJlY2FjaGUubScgb2JqZWN0PSdsaWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBPQkpDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoT0JKQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwT0JKQ19GQUxTRUAJJChBTV9WX09CSkNAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgJChsaWJnc3RhcHBsZW1lZGlhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoT0JKQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RhcHBsZW1lZGlhX2xhX09CSkNGTEFHUykgJChPQkpDRkxBR1MpIC1jIC1vIGxpYmdzdGFwcGxlbWVkaWFfbGEtY29yZXZpZGVvdGV4dHVyZWNhY2hlLmxvIGB0ZXN0IC1mICdjb3JldmlkZW90ZXh0dXJlY2FjaGUubScgfHwgZWNobyAnJChzcmNkaXIpLydgY29yZXZpZGVvdGV4dHVyZWNhY2hlLm0KK0BhbV9fZmFzdGRlcE9CSkNfRkFMU0VACSQoQU1fVl9PQkpDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKE9CSkMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9PQkpDRkxBR1MpICQoT0JKQ0ZMQUdTKSAtYyAtbyBsaWJnc3RhcHBsZW1lZGlhX2xhLXZpZGVvdGV4dHVyZWNhY2hlLmxvIGB0ZXN0IC1mICd2aWRlb3RleHR1cmVjYWNoZS5tJyB8fCBlY2hvICckKHNyY2RpcikvJ2B2aWRlb3RleHR1cmVjYWNoZS5tCiAKIGxpYmdzdGFwcGxlbWVkaWFfbGEtaW9zYXNzZXRzcmMubG86IGlvc2Fzc2V0c3JjLm0KIEBhbV9fZmFzdGRlcE9CSkNfVFJVRUAJJChBTV9WX09CSkMpJChMSUJUT09MKSAkKEFNX1ZfbHQpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKE9CSkMpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKGxpYmdzdGFwcGxlbWVkaWFfbGFfQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0YXBwbGVtZWRpYV9sYV9PQkpDRkxBR1MpICQoT0JKQ0ZMQUdTKSAtTVQgbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3Nhc3NldHNyYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3Nhc3NldHNyYy5UcG8gLWMgLW8gbGliZ3N0YXBwbGVtZWRpYV9sYS1pb3Nhc3NldHNyYy5sbyBgdGVzdCAtZiAnaW9zYXNzZXRzcmMubScgfHwgZWNobyAnJChzcmNkaXIpLydgaW9zYXNzZXRzcmMubQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvYXRkZWMuYyBiL3N5cy9hcHBsZW1lZGlhL2F0ZGVjLmMKaW5kZXggZDU4MWZiOC4uYzAwZjBiNyAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvYXRkZWMuYworKysgYi9zeXMvYXBwbGVtZWRpYS9hdGRlYy5jCkBAIC0yNCw3ICsyNCw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPWZpbGUubW92ICEgcXRkZW11eCAhIHF1ZXVlICEgYWFjcGFyc2UgISBhdGRlYyAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249ZmlsZS5tb3YgISBxdGRlbXV4ICEgcXVldWUgISBhYWNwYXJzZSAhIGF0ZGVjICEgYXV0b2F1ZGlvc2luawogICogXXwKICAqIERlY29kZSBhYWMgYXVkaW8gZnJvbSBhIG1vdiBmaWxlCiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvYXZmYXNzZXRzcmMubSBiL3N5cy9hcHBsZW1lZGlhL2F2ZmFzc2V0c3JjLm0KaW5kZXggMGFhZjNhZC4uNDA0OTZhNCAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvYXZmYXNzZXRzcmMubQorKysgYi9zeXMvYXBwbGVtZWRpYS9hdmZhc3NldHNyYy5tCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiAtbSBhdmZhc3NldHNyYyB1cmk9ImZpbGU6Ly9tb3ZpZS5tcDQiICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgLXYgLW0gYXZmYXNzZXRzcmMgdXJpPSJmaWxlOi8vbW92aWUubXA0IiAhIGF1dG92aWRlb3NpbmsKICAqIF18CiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC0yMDgsOSArMjA4LDcgQEAKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKICAgICBjYXNlIFBST1BfVVJJOgotICAgICAgaWYgKHNlbGYtPnVyaSkgewotICAgICAgICBnX2ZyZWUgKHNlbGYtPnVyaSk7Ci0gICAgICB9CisgICAgICBnX2ZyZWUgKHNlbGYtPnVyaSk7CiAgICAgICBzZWxmLT51cmkgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKICAgICAgIGJyZWFrOwogICAgIGRlZmF1bHQ6CkBAIC04MjAsOSArODE4LDcgQEAKIAogICBpZiAoYXNzZXQucGxheWFibGUpIHsKICAgICByZXQgPSBUUlVFOwotICAgIGlmIChzZWxmLT51cmkpIHsKLSAgICAgIGdfZnJlZSAoc2VsZi0+dXJpKTsKLSAgICB9CisgICAgZ19mcmVlIChzZWxmLT51cmkpOwogICAgIHNlbGYtPnVyaSA9IGdfc3RyZHVwICh1cmkpOwogICB9IGVsc2UgewogICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1VSSV9FUlJPUiwgR1NUX1VSSV9FUlJPUl9CQURfVVJJLApAQCAtMTA4Myw3ICsxMDc5LDcgQEAKICAgICByZXR1cm4gTlVMTDsKICAgfQogCi0gIGJ1ZiA9IGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXcgKGNtYnVmLCBGQUxTRSwgVFJVRSk7CisgIGJ1ZiA9IGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXcgKGNtYnVmLCBGQUxTRSk7CiAgIENGUmVsZWFzZSAoY21idWYpOwogICBpZiAoYnVmID09IE5VTEwpCiAgICAgcmV0dXJuIE5VTEw7CmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tIGIvc3lzL2FwcGxlbWVkaWEvYXZmdmlkZW9zcmMubQppbmRleCBhMDMzYWMwLi41MjliZDg1IDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9hdmZ2aWRlb3NyYy5tCisrKyBiL3N5cy9hcHBsZW1lZGlhL2F2ZnZpZGVvc3JjLm0KQEAgLTEsNSArMSw2IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDEwIE9sZSBBbmRyw6kgVmFkbGEgUmF2bsOlcyA8b2xlYXZyQHNvdW5kcm9wLmNvbT4KKyAqIENvcHlyaWdodCAoQykgMjAxNiBBbGVzc2FuZHJvIERlY2luYSA8dHdpQGNlbnRyaWN1bGFyLmNvbT4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjIsNiArMjMsNyBAQAogI2VuZGlmCiAKICNpbmNsdWRlICJhdmZ2aWRlb3NyYy5oIgorI2luY2x1ZGUgImdsY29udGV4dGhlbHBlci5oIgogCiAjaW1wb3J0IDxBVkZvdW5kYXRpb24vQVZGb3VuZGF0aW9uLmg+CiAjaWYgIUhBVkVfSU9TCkBAIC0zMCw3ICszMiw3IEBACiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsY29udGV4dC5oPgogI2luY2x1ZGUgImNvcmVtZWRpYWJ1ZmZlci5oIgotI2luY2x1ZGUgImNvcmV2aWRlb3RleHR1cmVjYWNoZS5oIgorI2luY2x1ZGUgInZpZGVvdGV4dHVyZWNhY2hlLmgiCiAKICNkZWZpbmUgREVGQVVMVF9ERVZJQ0VfSU5ERVggIC0xCiAjZGVmaW5lIERFRkFVTFRfRE9fU1RBVFMgICAgICBGQUxTRQpAQCAtNDYsNyArNDgsMTkgQEAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmNfdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCiAgICAgR1NUX1BBRF9TUkMsCiAgICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcsICIKKyAgICBHU1RfU1RBVElDX0NBUFMgKAorI2lmICFIQVZFX0lPUworICAgICAgICBHU1RfVklERU9fQ0FQU19NQUtFX1dJVEhfRkVBVFVSRVMKKyAgICAgICAgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwKKyAgICAgICAgICAgICJVWVZZIikgIiwgIgorICAgICAgICAidGV4dHVyZS10YXJnZXQgPSAiIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSICI7IgorI2Vsc2UKKyAgICAgICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTCisgICAgICAgIChHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksCisgICAgICAgICAgICAiTlYxMiIpICIsICIKKyAgICAgICAgInRleHR1cmUtdGFyZ2V0ID0gIiBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSICI7ICIKKyNlbmRpZgorICAgICAgICAidmlkZW8veC1yYXcsICIKICAgICAgICAgImZvcm1hdCA9IChzdHJpbmcpIHsgTlYxMiwgVVlWWSwgWVVZMiB9LCAiCiAgICAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwgIgogICAgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKQEAgLTU3LDEwICs3MSw2IEBACiAgICAgICAgICJmcmFtZXJhdGUgPSAiIEdTVF9WSURFT19GUFNfUkFOR0UgIiwgIgogICAgICAgICAid2lkdGggPSAiIEdTVF9WSURFT19TSVpFX1JBTkdFICIsICIKICAgICAgICAgImhlaWdodCA9ICIgR1NUX1ZJREVPX1NJWkVfUkFOR0UgIjsgIgotCi0gICAgICAgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUwotICAgICAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLAotICAgICAgICAgICAgIlJHQkEiKSAiOyAiCiApKTsKIAogdHlwZWRlZiBlbnVtIF9RdWV1ZVN0YXRlIHsKQEAgLTkzLDcgKzEwMyw2IEBACiAgIEJPT0wgc3RvcFJlcXVlc3Q7CiAKICAgR3N0Q2FwcyAqY2FwczsKLSAgR3N0VmlkZW9Gb3JtYXQgaW50ZXJuYWxGb3JtYXQ7CiAgIEdzdFZpZGVvRm9ybWF0IGZvcm1hdDsKICAgZ2ludCB3aWR0aCwgaGVpZ2h0OwogICBHc3RDbG9ja1RpbWUgbGF0ZW5jeTsKQEAgLTEwNyw3ICsxMTYsOCBAQAogICBCT09MIGNhcHR1cmVTY3JlZW5Nb3VzZUNsaWNrczsKIAogICBCT09MIHVzZVZpZGVvTWV0YTsKLSAgR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICp0ZXh0dXJlQ2FjaGU7CisgIEdzdEdMQ29udGV4dEhlbHBlciAqY3R4aDsKKyAgR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKnRleHR1cmVDYWNoZTsKIH0KIAogLSAoaWQpaW5pdDsKQEAgLTEyOSw3ICsxMzksNyBAQAogI2lmICFIQVZFX0lPUwogLSAoQ0dEaXJlY3REaXNwbGF5SUQpZ2V0RGlzcGxheUlkRnJvbURldmljZUluZGV4OwogI2VuZGlmCi0tIChCT09MKWdldERldmljZUNhcHM6KEdzdENhcHMgKilyZXN1bHQ7CistIChHc3RDYXBzICopZ2V0RGV2aWNlQ2FwczsKIC0gKEJPT0wpc2V0RGV2aWNlQ2FwczooR3N0VmlkZW9JbmZvICopaW5mbzsKIC0gKEJPT0wpZ2V0U2Vzc2lvblByZXNldENhcHM6KEdzdENhcHMgKilyZXN1bHQ7CiAtIChCT09MKXNldFNlc3Npb25QcmVzZXRDYXBzOihHc3RWaWRlb0luZm8gKilpbmZvOwpAQCAtMTQwLDggKzE1MCwxMSBAQAogLSAoQk9PTCl1bmxvY2s7CiAtIChCT09MKXVubG9ja1N0b3A7CiAtIChCT09MKXF1ZXJ5OihHc3RRdWVyeSAqKXF1ZXJ5OworLSAodm9pZClzZXRDb250ZXh0OihHc3RDb250ZXh0ICopY29udGV4dDsKIC0gKEdzdFN0YXRlQ2hhbmdlUmV0dXJuKWNoYW5nZVN0YXRlOihHc3RTdGF0ZUNoYW5nZSl0cmFuc2l0aW9uOwogLSAoR3N0Rmxvd1JldHVybiljcmVhdGU6KEdzdEJ1ZmZlciAqKilidWY7CistIChHc3RDYXBzICopZml4YXRlOihHc3RDYXBzICopY2FwczsKKy0gKEJPT0wpZGVjaWRlQWxsb2NhdGlvbjooR3N0UXVlcnkgKilxdWVyeTsKIC0gKHZvaWQpdXBkYXRlU3RhdGlzdGljczsKIC0gKHZvaWQpY2FwdHVyZU91dHB1dDooQVZDYXB0dXJlT3V0cHV0ICopY2FwdHVyZU91dHB1dAogZGlkT3V0cHV0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYW1wbGVCdWZmZXIKQEAgLTE3Miw3ICsxODUsNyBAQAogICAgIGNhcHR1cmVTY3JlZW5Nb3VzZUNsaWNrcyA9IE5POwogICAgIHVzZVZpZGVvTWV0YSA9IE5POwogICAgIHRleHR1cmVDYWNoZSA9IE5VTEw7Ci0KKyAgICBjdHhoID0gZ3N0X2dsX2NvbnRleHRfaGVscGVyX25ldyAoZWxlbWVudCk7CiAgICAgbWFpblF1ZXVlID0KICAgICAgICAgZGlzcGF0Y2hfcXVldWVfY3JlYXRlICgib3JnLmZyZWVkZXNrdG9wLmdzdHJlYW1lci5hdmZ2aWRlb3NyYy5tYWluIiwgTlVMTCk7CiAgICAgd29ya2VyUXVldWUgPQpAQCAtMzczLDkgKzM4Niw2IEBACiAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQTogLyogQkdSQSAqLwogICAgIGdzdF9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX0JHUkE7CiAgICAgYnJlYWs7Ci0gIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzMyUkdCQTogLyogUkdCQSAqLwotICAgIGdzdF9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1JHQkE7Ci0gICAgYnJlYWs7CiAgIGNhc2Uga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjhfeXV2czogLyogeXV2cyAqLwogICAgIGdzdF9mb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1lVWTI7CiAgICAgYnJlYWs7CkBAIC00MDgsMTMgKzQxOCwyMiBAQAogfQogI2VuZGlmCiAKLS0gKEJPT0wpZ2V0RGV2aWNlQ2FwczooR3N0Q2FwcyAqKXJlc3VsdAorLSAoR3N0Q2FwcyAqKWdldERldmljZUNhcHMKIHsKICAgTlNBcnJheSAqZm9ybWF0cyA9IFtkZXZpY2UgdmFsdWVGb3JLZXk6QCJmb3JtYXRzIl07CiAgIE5TQXJyYXkgKnBpeGVsX2Zvcm1hdHMgPSBvdXRwdXQuYXZhaWxhYmxlVmlkZW9DVlBpeGVsRm9ybWF0VHlwZXM7CisgIEdzdENhcHMgKnJlc3VsdF9jYXBzLCAqcmVzdWx0X2dsX2NhcHM7CisjaWYgIUhBVkVfSU9TCisgIEdzdFZpZGVvRm9ybWF0IGdsX2Zvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfVVlWWTsKKyNlbHNlCisgIEdzdFZpZGVvRm9ybWF0IGdsX2Zvcm1hdCA9IEdTVF9WSURFT19GT1JNQVRfTlYxMjsKKyNlbmRpZgogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJHZXR0aW5nIGRldmljZSBjYXBzIik7CiAKKyAgcmVzdWx0X2NhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7CisgIHJlc3VsdF9nbF9jYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOworCiAgIC8qIERvIG5vdCB1c2UgQVZDYXB0dXJlRGV2aWNlRm9ybWF0IG9yIEFWRnJhbWVSYXRlUmFuZ2Ugb25seQogICAgKiBhdmFpbGFibGUgaW4gaU9TID49IDcuMC4gV2UgdXNlIGEgZHluYW1pYyBhcHByb2FjaCB3aXRoIGtleS12YWx1ZQogICAgKiBjb2Rpbmcgb3IgcGVyZm9ybVNlbGVjdG9yICovCkBAIC00MzcsMjcgKzQ1Niw0OCBAQAogCiAgICAgICBmb3IgKE5TTnVtYmVyICpwaXhlbF9mb3JtYXQgaW4gcGl4ZWxfZm9ybWF0cykgewogICAgICAgICBHc3RWaWRlb0Zvcm1hdCBnc3RfZm9ybWF0ID0gW3NlbGYgZ2V0R3N0VmlkZW9Gb3JtYXQ6cGl4ZWxfZm9ybWF0XTsKKwogICAgICAgICBpZiAoZ3N0X2Zvcm1hdCAhPSBHU1RfVklERU9fRk9STUFUX1VOS05PV04pIHsKICAgICAgICAgICBpZiAobWluX2ZwcyAhPSBtYXhfZnBzKQotICAgICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChyZXN1bHQsIEdTVF9BVkZfRlBTX1JBTkdFX0NBUFNfTkVXIChnc3RfZm9ybWF0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCwgbWluX2Zwc19uLCBtaW5fZnBzX2QsIG1heF9mcHNfbiwgbWF4X2Zwc19kKSk7CisgICAgICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKHJlc3VsdF9jYXBzLCBHU1RfQVZGX0ZQU19SQU5HRV9DQVBTX05FVyAoZ3N0X2Zvcm1hdCwgZGltZW5zaW9ucy53aWR0aCwgZGltZW5zaW9ucy5oZWlnaHQsIG1pbl9mcHNfbiwgbWluX2Zwc19kLCBtYXhfZnBzX24sIG1heF9mcHNfZCkpOwogICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAocmVzdWx0LCBHU1RfQVZGX0NBUFNfTkVXIChnc3RfZm9ybWF0LCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCwgbWF4X2Zwc19uLCBtYXhfZnBzX2QpKTsKKyAgICAgICAgICAgIGdzdF9jYXBzX2FwcGVuZCAocmVzdWx0X2NhcHMsIEdTVF9BVkZfQ0FQU19ORVcgKGdzdF9mb3JtYXQsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtYXhfZnBzX24sIG1heF9mcHNfZCkpOwogICAgICAgICB9CiAKLSAgICAgICAgaWYgKGdzdF9mb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9CR1JBKSB7Ci0gICAgICAgICAgR3N0Q2FwcyAqcmdiYV9jYXBzOwotICAgICAgICAgIGlmIChtaW5fZnBzICE9IG1heF9mcHMpCi0gICAgICAgICAgICByZ2JhX2NhcHMgPSBHU1RfQVZGX0ZQU19SQU5HRV9DQVBTX05FVyAoR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLCBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCwgbWluX2Zwc19uLCBtaW5fZnBzX2QsIG1heF9mcHNfbiwgbWF4X2Zwc19kKTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICByZ2JhX2NhcHMgPSBHU1RfQVZGX0NBUFNfTkVXIChHU1RfVklERU9fRk9STUFUX1JHQkEsIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LCBtYXhfZnBzX24sIG1heF9mcHNfZCk7Ci0gICAgICAgICAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzIChyZ2JhX2NhcHMsIDAsIGdzdF9jYXBzX2ZlYXR1cmVzX25ldyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBOVUxMKSk7Ci0gICAgICAgICAgZ3N0X2NhcHNfYXBwZW5kIChyZXN1bHQsIHJnYmFfY2Fwcyk7CisgICAgICAgIGlmIChnc3RfZm9ybWF0ID09IGdsX2Zvcm1hdCkgeworICAgICAgICAgIEdzdENhcHMgKmdsX2NhcHM7CisgICAgICAgICAgaWYgKG1pbl9mcHMgIT0gbWF4X2ZwcykgeworICAgICAgICAgICAgZ2xfY2FwcyA9IEdTVF9BVkZfRlBTX1JBTkdFX0NBUFNfTkVXIChnbF9mb3JtYXQsCisgICAgICAgICAgICAgICAgICAgIGRpbWVuc2lvbnMud2lkdGgsIGRpbWVuc2lvbnMuaGVpZ2h0LAorICAgICAgICAgICAgICAgICAgICBtaW5fZnBzX24sIG1pbl9mcHNfZCwKKyAgICAgICAgICAgICAgICAgICAgbWF4X2Zwc19uLCBtYXhfZnBzX2QpOworICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBnbF9jYXBzID0gR1NUX0FWRl9DQVBTX05FVyAoZ2xfZm9ybWF0LAorICAgICAgICAgICAgICAgICAgICBkaW1lbnNpb25zLndpZHRoLCBkaW1lbnNpb25zLmhlaWdodCwKKyAgICAgICAgICAgICAgICAgICAgbWF4X2Zwc19uLCBtYXhfZnBzX2QpOworICAgICAgICAgIH0KKyAgICAgICAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKGdsX2NhcHMsIDAsCisgICAgICAgICAgICAgICAgICBnc3RfY2Fwc19mZWF0dXJlc19uZXcgKEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSwKKyAgICAgICAgICAgICAgICAgICAgICBOVUxMKSk7CisgICAgICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoZ2xfY2FwcywKKyAgICAgICAgICAgICAgICAgICJ0ZXh0dXJlLXRhcmdldCIsIEdfVFlQRV9TVFJJTkcsCisjaWYgIUhBVkVfSU9TCisgICAgICAgICAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfUkVDVEFOR0xFX1NUUiwKKyNlbHNlCisgICAgICAgICAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSLAorI2VuZGlmCisgICAgICAgICAgICAgICAgICBOVUxMKTsKKyAgICAgICAgICBnc3RfY2Fwc19hcHBlbmQgKHJlc3VsdF9nbF9jYXBzLCBnbF9jYXBzKTsKICAgICAgICAgfQogICAgICAgfQogICAgIH0KICAgfQotICBHU1RfTE9HX09CSkVDVCAoZWxlbWVudCwgIkRldmljZSByZXR1cm5lZCB0aGUgZm9sbG93aW5nIGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHJlc3VsdCk7Ci0gIHJldHVybiBZRVM7CisKKyAgcmVzdWx0X2dsX2NhcHMgPSBnc3RfY2Fwc19zaW1wbGlmeSAoZ3N0X2NhcHNfbWVyZ2UgKHJlc3VsdF9nbF9jYXBzLCByZXN1bHRfY2FwcykpOworCisgIEdTVF9ERUJVR19PQkpFQ1QgKGVsZW1lbnQsICJEZXZpY2UgcmV0dXJuZWQgdGhlIGZvbGxvd2luZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCByZXN1bHRfZ2xfY2Fwcyk7CisKKyAgcmV0dXJuIHJlc3VsdF9nbF9jYXBzOwogfQogCiAtIChCT09MKXNldERldmljZUNhcHM6KEdzdFZpZGVvSW5mbyAqKWluZm8KQEAgLTQ4NiwxNiArNTI2LDIyIEBACiAgICAgICAgICAgW1tyYXRlIHZhbHVlRm9yS2V5OkAibWF4RnJhbWVSYXRlIl0gZ2V0VmFsdWU6Jm1heF9mcmFtZV9yYXRlXTsKICAgICAgICAgICBpZiAoKGZyYW1lcmF0ZSA+PSBtaW5fZnJhbWVfcmF0ZSAtIDAuMDAwMDEpICYmCiAgICAgICAgICAgICAgIChmcmFtZXJhdGUgPD0gbWF4X2ZyYW1lX3JhdGUgKyAwLjAwMDAxKSkgewotICAgICAgICAgICAgTlNWYWx1ZSAqbWluX2ZyYW1lX2R1cmF0aW9uLCAqbWF4X2ZyYW1lX2R1cmF0aW9uOwotCisgICAgICAgICAgICBOU1ZhbHVlICpmcmFtZV9kdXJhdGlvbl92YWx1ZTsKICAgICAgICAgICAgIGZvdW5kX2ZyYW1lcmF0ZSA9IFRSVUU7Ci0gICAgICAgICAgICBtaW5fZnJhbWVfZHVyYXRpb24gPSBbcmF0ZSB2YWx1ZUZvcktleTpAIm1pbkZyYW1lRHVyYXRpb24iXTsKLSAgICAgICAgICAgIG1heF9mcmFtZV9kdXJhdGlvbiA9IFtyYXRlIHZhbHVlRm9yS2V5OkAibWF4RnJhbWVEdXJhdGlvbiJdOwotICAgICAgICAgICAgW2RldmljZSBzZXRWYWx1ZTptaW5fZnJhbWVfZHVyYXRpb24gZm9yS2V5OkAiYWN0aXZlVmlkZW9NaW5GcmFtZUR1cmF0aW9uIl07CisgICAgICAgICAgICBpZiAobWluX2ZyYW1lX3JhdGUgPT0gbWF4X2ZyYW1lX3JhdGUpIHsKKyAgICAgICAgICAgICAgLyogb24gbWFjIHdlIGdldCB0aWdodCByYW5nZXMgYW5kIGFuIGV4Y2VwdGlvbiBpcyByYWlzZWQgaWYgdGhlCisgICAgICAgICAgICAgICAqIGZyYW1lIGR1cmF0aW9uIGRvZXNuJ3QgbWF0Y2ggdGhlIG9uZSByZXBvcnRlZCBpbiB0aGUgcmFuZ2UgdG8KKyAgICAgICAgICAgICAgICogdGhlIGxhc3QgZGVjaW1hbCBwb2ludAorICAgICAgICAgICAgICAgKi8KKyAgICAgICAgICAgICAgZnJhbWVfZHVyYXRpb25fdmFsdWUgPSBbcmF0ZSB2YWx1ZUZvcktleTpAIm1pbkZyYW1lRHVyYXRpb24iXTsKKyAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgIC8vIEludmVydCBmcHNfbiBhbmQgZnBzX2QgdG8gZ2V0IGZyYW1lIGR1cmF0aW9uIHZhbHVlIGFuZCB0aW1lc2NhbGUgKG9yIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IpCisgICAgICAgICAgICAgIGZyYW1lX2R1cmF0aW9uX3ZhbHVlID0gW05TVmFsdWUgdmFsdWVXaXRoQ01UaW1lOkNNVGltZU1ha2UgKGluZm8tPmZwc19kLCBpbmZvLT5mcHNfbildOworICAgICAgICAgICAgfQorICAgICAgICAgICAgW2RldmljZSBzZXRWYWx1ZTpmcmFtZV9kdXJhdGlvbl92YWx1ZSBmb3JLZXk6QCJhY3RpdmVWaWRlb01pbkZyYW1lRHVyYXRpb24iXTsKICAgICAgICAgICAgIEB0cnkgewogICAgICAgICAgICAgICAvKiBPbmx5IGF2YWlsYWJsZSBvbiBPU1ggPj0gMTAuOCBhbmQgaU9TID49IDcuMCAqLwotICAgICAgICAgICAgICAvLyBSZXN0cmljdCBhY3RpdmVWaWRlb01heEZyYW1lRHVyYXRpb24gdG8gdGhlIG1pbmltdW0gdmFsdWUgc28gd2UgZ2V0IGEgYmV0dGVyIGNhcHR1cmUgZnJhbWUgcmF0ZQotICAgICAgICAgICAgICBbZGV2aWNlIHNldFZhbHVlOm1pbl9mcmFtZV9kdXJhdGlvbiBmb3JLZXk6QCJhY3RpdmVWaWRlb01heEZyYW1lRHVyYXRpb24iXTsKKyAgICAgICAgICAgICAgW2RldmljZSBzZXRWYWx1ZTpmcmFtZV9kdXJhdGlvbl92YWx1ZSBmb3JLZXk6QCJhY3RpdmVWaWRlb01heEZyYW1lRHVyYXRpb24iXTsKICAgICAgICAgICAgIH0gQGNhdGNoIChOU0V4Y2VwdGlvbiAqZXhjZXB0aW9uKSB7CiAgICAgICAgICAgICAgIGlmICghW1tleGNlcHRpb24gbmFtZV0gaXNFcXVhbFRvU3RyaW5nOk5TVW5kZWZpbmVkS2V5RXhjZXB0aW9uXSkgewogICAgICAgICAgICAgICAgIEdTVF9XQVJOSU5HICgiQW4gdW5leGNlcHRlZCBlcnJvciBvY2N1cmVkOiAlcyIsCkBAIC02MTgsMTEgKzY2NCw4IEBACiAgIH0KIAogICBAdHJ5IHsKLQotICAgIFtzZWxmIGdldERldmljZUNhcHM6cmVzdWx0XTsKLQorICAgIHJlc3VsdCA9IGdzdF9jYXBzX21lcmdlIChyZXN1bHQsIFtzZWxmIGdldERldmljZUNhcHNdKTsKICAgfSBAY2F0Y2ggKE5TRXhjZXB0aW9uICpleGNlcHRpb24pIHsKLQogICAgIGlmICghW1tleGNlcHRpb24gbmFtZV0gaXNFcXVhbFRvU3RyaW5nOk5TVW5kZWZpbmVkS2V5RXhjZXB0aW9uXSkgewogICAgICAgR1NUX1dBUk5JTkcgKCJBbiB1bmV4Y2VwdGVkIGVycm9yIG9jY3VyZWQ6ICVzIiwgW2V4Y2VwdGlvbi5yZWFzb24gVVRGOFN0cmluZ10pOwogICAgICAgcmV0dXJuIHJlc3VsdDsKQEAgLTY0NiwxNCArNjg5LDExIEBACiAgIHdpZHRoID0gaW5mby53aWR0aDsKICAgaGVpZ2h0ID0gaW5mby5oZWlnaHQ7CiAgIGZvcm1hdCA9IGluZm8uZmluZm8tPmZvcm1hdDsKLSAgaW50ZXJuYWxGb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX1VOS05PV047CiAgIGxhdGVuY3kgPSBnc3RfdXRpbF91aW50NjRfc2NhbGUgKEdTVF9TRUNPTkQsIGluZm8uZnBzX2QsIGluZm8uZnBzX24pOwogCiAgIGRpc3BhdGNoX3N5bmMgKG1haW5RdWV1ZSwgXnsKICAgICBpbnQgbmV3Zm9ybWF0OwogCi0gICAgZ19hc3NlcnQgKCFbc2Vzc2lvbiBpc1J1bm5pbmddKTsKLQogICAgIGlmIChjYXB0dXJlU2NyZWVuKSB7CiAjaWYgIUhBVkVfSU9TCiAgICAgICBBVkNhcHR1cmVTY3JlZW5JbnB1dCAqc2NyZWVuSW5wdXQgPSAoQVZDYXB0dXJlU2NyZWVuSW5wdXQgKilpbnB1dDsKQEAgLTY4Niw3ICs3MjYsNiBAQAogICAgICAgfQogICAgIH0KIAotICAgIGludGVybmFsRm9ybWF0ID0gZm9ybWF0OwogICAgIHN3aXRjaCAoZm9ybWF0KSB7CiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKICAgICAgICAgbmV3Zm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U7CkBAIC02OTcsMTUgKzczNiw2IEBACiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKICAgICAgICAgbmV3Zm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjhfeXV2czsKICAgICAgICAgYnJlYWs7Ci0gICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKLSNpZiAhSEFWRV9JT1MKLSAgICAgICAgbmV3Zm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjg7Ci0gICAgICAgIGludGVybmFsRm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOwotI2Vsc2UKLSAgICAgICAgbmV3Zm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQTsKLSAgICAgICAgaW50ZXJuYWxGb3JtYXQgPSBHU1RfVklERU9fRk9STUFUX0JHUkE7Ci0jZW5kaWYKLSAgICAgICAgYnJlYWs7CiAgICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQkdSQToKICAgICAgICAgbmV3Zm9ybWF0ID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzMyQkdSQTsKICAgICAgICAgYnJlYWs7CkBAIC03MTYsMTkgKzc0NiwxOSBAQAogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgR1NUX0lORk9fT0JKRUNUKGVsZW1lbnQsCi0gICAgICAgICJ3aWR0aDogJWQgaGVpZ2h0OiAlZCBmb3JtYXQ6ICVzIGludGVybmFsRm9ybWF0OiAlcyIsIHdpZHRoLCBoZWlnaHQsCi0gICAgICAgIGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nIChmb3JtYXQpLAotICAgICAgICBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAoaW50ZXJuYWxGb3JtYXQpKTsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKGVsZW1lbnQsCisgICAgICAgICJ3aWR0aDogJWQgaGVpZ2h0OiAlZCBmb3JtYXQ6ICVzIiwgd2lkdGgsIGhlaWdodCwKKyAgICAgICAgZ3N0X3ZpZGVvX2Zvcm1hdF90b19zdHJpbmcgKGZvcm1hdCkpOwogCiAgICAgb3V0cHV0LnZpZGVvU2V0dGluZ3MgPSBbTlNEaWN0aW9uYXJ5CiAgICAgICAgIGRpY3Rpb25hcnlXaXRoT2JqZWN0OltOU051bWJlciBudW1iZXJXaXRoSW50Om5ld2Zvcm1hdF0KICAgICAgICAgZm9yS2V5OihOU1N0cmluZyopa0NWUGl4ZWxCdWZmZXJQaXhlbEZvcm1hdFR5cGVLZXldOwogCi0gICAgaWYgKGNhcHMpCi0gICAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0gICAgY2FwcyA9IGdzdF9jYXBzX2NvcHkgKG5ld19jYXBzKTsKLSAgICBbc2Vzc2lvbiBzdGFydFJ1bm5pbmddOworICAgIGdzdF9jYXBzX3JlcGxhY2UgKCZjYXBzLCBuZXdfY2Fwcyk7CisgICAgR1NUX0lORk9fT0JKRUNUIChlbGVtZW50LCAiY29uZmlndXJlZCBjYXBzICUiR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgICAgaWYgKCFbc2Vzc2lvbiBpc1J1bm5pbmddKQorICAgICAgW3Nlc3Npb24gc3RhcnRSdW5uaW5nXTsKIAogICAgIC8qIFVubG9jayBkZXZpY2UgY29uZmlndXJhdGlvbiBvbmx5IGFmdGVyIHNlc3Npb24gaXMgc3RhcnRlZCBzbyB0aGUgc2Vzc2lvbgogICAgICAqIHdvbid0IHJlc2V0IHRoZSBjYXB0dXJlIGZvcm1hdHMgKi8KQEAgLTc2NSw5ICs3OTUsMTMgQEAKICAgYnVmUXVldWUgPSBuaWw7CiAKICAgaWYgKHRleHR1cmVDYWNoZSkKLSAgICAgIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAodGV4dHVyZUNhY2hlKTsKKyAgICBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9mcmVlICh0ZXh0dXJlQ2FjaGUpOwogICB0ZXh0dXJlQ2FjaGUgPSBOVUxMOwogCisgIGlmIChjdHhoKQorICAgIGdzdF9nbF9jb250ZXh0X2hlbHBlcl9mcmVlIChjdHhoKTsKKyAgY3R4aCA9IE5VTEw7CisKICAgcmV0dXJuIFlFUzsKIH0KIApAQCAtNzk0LDQzICs4MjgsNiBAQAogICByZXR1cm4gcmVzdWx0OwogfQogCi0tIChCT09MKWRlY2lkZUFsbG9jYXRpb246KEdzdFF1ZXJ5ICopcXVlcnkKLXsKLSAgdXNlVmlkZW9NZXRhID0gZ3N0X3F1ZXJ5X2ZpbmRfYWxsb2NhdGlvbl9tZXRhIChxdWVyeSwKLSAgICAgIEdTVF9WSURFT19NRVRBX0FQSV9UWVBFLCBOVUxMKTsKLQotICAvKiBkZXRlcm1pbmUgd2hldGhlciB3ZSBjYW4gcGFzcyBHTCB0ZXh0dXJlcyB0byBkb3duc3RyZWFtIGVsZW1lbnQgKi8KLSAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCk7Ci0gIGlmIChnc3RfY2Fwc19mZWF0dXJlc19jb250YWlucyAoZmVhdHVyZXMsIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSkpIHsKLSAgICBHc3RHTENvbnRleHQgKmdsQ29udGV4dCA9IE5VTEw7Ci0KLSAgICAvKiBnZXQgR0wgY29udGV4dCBmcm9tIGRvd25zdHJlYW0gZWxlbWVudCAqLwotICAgIEdzdFF1ZXJ5ICpxdWVyeSA9IGdzdF9xdWVyeV9uZXdfY29udGV4dCAoImdzdC5nbC5sb2NhbF9jb250ZXh0Iik7Ci0gICAgaWYgKGdzdF9wYWRfcGVlcl9xdWVyeSAoR1NUX0JBU0VfU1JDX1BBRCAoZWxlbWVudCksIHF1ZXJ5KSkgewotICAgICAgR3N0Q29udGV4dCAqY29udGV4dDsKLSAgICAgIGdzdF9xdWVyeV9wYXJzZV9jb250ZXh0IChxdWVyeSwgJmNvbnRleHQpOwotICAgICAgaWYgKGNvbnRleHQpIHsKLSAgICAgICAgY29uc3QgR3N0U3RydWN0dXJlICpzID0gZ3N0X2NvbnRleHRfZ2V0X3N0cnVjdHVyZSAoY29udGV4dCk7Ci0gICAgICAgIGdzdF9zdHJ1Y3R1cmVfZ2V0IChzLCAiY29udGV4dCIsIEdTVF9HTF9UWVBFX0NPTlRFWFQsICZnbENvbnRleHQsCi0gICAgICAgICAgICBOVUxMKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7Ci0KLSAgICBpZiAoZ2xDb250ZXh0KSB7Ci0gICAgICBHU1RfSU5GT19PQkpFQ1QgKGVsZW1lbnQsICJwdXNoaW5nIHRleHR1cmVzLiBJbnRlcm5hbCBmb3JtYXQgJXMsIGNvbnRleHQgJXAiLAotICAgICAgICAgIGdzdF92aWRlb19mb3JtYXRfdG9fc3RyaW5nIChpbnRlcm5hbEZvcm1hdCksIGdsQ29udGV4dCk7Ci0gICAgICB0ZXh0dXJlQ2FjaGUgPSBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX25ldyAoZ2xDb250ZXh0KTsKLSAgICAgIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfc2V0X2Zvcm1hdCAodGV4dHVyZUNhY2hlLCBpbnRlcm5hbEZvcm1hdCwgY2Fwcyk7Ci0gICAgICBnc3Rfb2JqZWN0X3VucmVmIChnbENvbnRleHQpOwotICAgIH0gZWxzZSB7Ci0gICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVsZW1lbnQsICJnb3QgbWVtb3J5OkdMTWVtb3J5IGNhcHMgYnV0IG5vdCBHTCBjb250ZXh0IGZyb20gZG93bnN0cmVhbSBlbGVtZW50Iik7Ci0gICAgfQotICB9IAotCi0gIHJldHVybiBZRVM7Ci19Ci0KIC0gKEJPT0wpdW5sb2NrCiB7CiAgIFtidWZRdWV1ZUxvY2sgbG9ja107CkBAIC05NDEsMjUgKzkzOCwxNSBAQAogICAgIH0KICAgfQogCi0gICpidWYgPSBnc3RfY29yZV9tZWRpYV9idWZmZXJfbmV3IChzYnVmLCB1c2VWaWRlb01ldGEsIHRleHR1cmVDYWNoZSA9PSBOVUxMKTsKKyAgKmJ1ZiA9IGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXcgKHNidWYsIHVzZVZpZGVvTWV0YSk7CiAgIGlmICgqYnVmID09IE5VTEwpIHsKICAgICBDRlJlbGVhc2UgKHNidWYpOwogICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQotCi0gIGlmIChmb3JtYXQgPT0gR1NUX1ZJREVPX0ZPUk1BVF9SR0JBKSB7Ci0gICAgLyogU28gbm93IGJ1ZiBjb250YWlucyBCR1JBIGRhdGEgKCEpIC4gU2luY2UgZG93bnN0cmVhbSBpcyBhY3R1YWxseSBnb2luZyB0bwotICAgICAqIHVzZSB0aGUgR0wgdXBsb2FkIG1ldGEgdG8gZ2V0IFJHQkEgdGV4dHVyZXMgKD8/KSwgd2UgbmVlZCB0byBvdmVycmlkZSB0aGUKLSAgICAgKiBWaWRlb01ldGEgZm9ybWF0ICghISEpLiBZZXMgdGhpcyBpcyBjb25mdXNpbmcsIHNlZSBzZXRDYXBzOiAgKi8KLSAgICBHc3RWaWRlb01ldGEgKnZpZGVvX21ldGEgPSBnc3RfYnVmZmVyX2dldF92aWRlb19tZXRhICgqYnVmKTsKLSAgICBpZiAodmlkZW9fbWV0YSkgewotICAgICAgdmlkZW9fbWV0YS0+Zm9ybWF0ID0gZm9ybWF0OwotICAgIH0KLSAgfQogICBDRlJlbGVhc2UgKHNidWYpOwogCiAgIGlmICh0ZXh0dXJlQ2FjaGUgIT0gTlVMTCkgewotICAgICpidWYgPSBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKHRleHR1cmVDYWNoZSwgKmJ1Zik7CisgICAgKmJ1ZiA9IGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKHRleHR1cmVDYWNoZSwgKmJ1Zik7CiAgICAgaWYgKCpidWYgPT0gTlVMTCkKICAgICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKICAgfQpAQCAtOTc1LDYgKzk2Miw1NyBAQAogICByZXR1cm4gR1NUX0ZMT1dfT0s7CiB9CiAKKy0gKEdzdENhcHMgKilmaXhhdGU6KEdzdENhcHMgKiluZXdfY2FwcworeworICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKKworICBuZXdfY2FwcyA9IGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKG5ld19jYXBzKTsKKyAgbmV3X2NhcHMgPSBnc3RfY2Fwc190cnVuY2F0ZSAobmV3X2NhcHMpOworICBzdHJ1Y3R1cmUgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChuZXdfY2FwcywgMCk7CisgIC8qIGNyYW5rIHVwIHRvIDExLiBUaGlzIGlzIHdoYXQgdGhlIHByZXNldHMgZG8sIGJ1dCB3ZSBkb24ndCB1c2UgdGhlIHByZXNldHMKKyAgICogaW4gaW9zID49IDcuMCAqLworICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgR19NQVhJTlQpOworICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9uZWFyZXN0X2ZyYWN0aW9uIChzdHJ1Y3R1cmUsICJmcmFtZXJhdGUiLCBHX01BWElOVCwgMSk7CisKKyAgcmV0dXJuIGdzdF9jYXBzX2ZpeGF0ZSAobmV3X2NhcHMpOworfQorCistIChCT09MKWRlY2lkZUFsbG9jYXRpb246KEdzdFF1ZXJ5ICopcXVlcnkKK3sKKyAgR3N0Q2FwcyAqYWxsb2NfY2FwczsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlczsKKyAgZ2Jvb2xlYW4gcmV0OworCisgIHJldCA9IEdTVF9CQVNFX1NSQ19DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGVjaWRlX2FsbG9jYXRpb24gKGJhc2VTcmMsIHF1ZXJ5KTsKKyAgaWYgKCFyZXQpCisgICAgcmV0dXJuIHJldDsKKworICBnc3RfcXVlcnlfcGFyc2VfYWxsb2NhdGlvbiAocXVlcnksICZhbGxvY19jYXBzLCBOVUxMKTsKKyAgZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGFsbG9jX2NhcHMsIDApOworICBpZiAoZ3N0X2NhcHNfZmVhdHVyZXNfY29udGFpbnMgKGZlYXR1cmVzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpKSB7CisgICAgZ3N0X2dsX2NvbnRleHRfaGVscGVyX2Vuc3VyZV9jb250ZXh0IChjdHhoKTsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKGVsZW1lbnQsICJwdXNoaW5nIHRleHR1cmVzLCBjb250ZXh0ICVwIG9sZCBjb250ZXh0ICVwIiwKKyAgICAgICAgY3R4aC0+Y29udGV4dCwgdGV4dHVyZUNhY2hlID8gdGV4dHVyZUNhY2hlLT5jdHggOiBOVUxMKTsKKyAgICBpZiAodGV4dHVyZUNhY2hlICYmIHRleHR1cmVDYWNoZS0+Y3R4ICE9IGN0eGgtPmNvbnRleHQpIHsKKyAgICAgIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2ZyZWUgKHRleHR1cmVDYWNoZSk7CisgICAgICB0ZXh0dXJlQ2FjaGUgPSBOVUxMOworICAgIH0KKyAgICB0ZXh0dXJlQ2FjaGUgPSBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9uZXcgKGN0eGgtPmNvbnRleHQpOworICAgIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX3NldF9mb3JtYXQgKHRleHR1cmVDYWNoZSwgZm9ybWF0LCBhbGxvY19jYXBzKTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCistICh2b2lkKXNldENvbnRleHQ6KEdzdENvbnRleHQgKiljb250ZXh0Cit7CisgIEdTVF9JTkZPX09CSkVDVCAoZWxlbWVudCwgInNldHRpbmcgY29udGV4dCAlcyIsCisgICAgICAgICAgZ3N0X2NvbnRleHRfZ2V0X2NvbnRleHRfdHlwZSAoY29udGV4dCkpOworICBnc3RfZ2xfaGFuZGxlX3NldF9jb250ZXh0IChlbGVtZW50LCBjb250ZXh0LAorICAgICAgICAgICZjdHhoLT5kaXNwbGF5LCAmY3R4aC0+b3RoZXJfY29udGV4dCk7CisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7Cit9CisKIC0gKHZvaWQpZ2V0U2FtcGxlQnVmZmVyOihDTVNhbXBsZUJ1ZmZlclJlZilzYnVmCiAgICAgICAgICAgICAgIHRpbWVzdGFtcDooR3N0Q2xvY2tUaW1lICopb3V0VGltZXN0YW1wCiAgICAgICAgICAgICAgICBkdXJhdGlvbjooR3N0Q2xvY2tUaW1lICopb3V0RHVyYXRpb24KQEAgLTEwOTksMTQgKzExMzcsMTYgQEAKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYXZmX3ZpZGVvX3NyY19zdG9wIChHc3RCYXNlU3JjICogYmFzZXNyYyk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X2F2Zl92aWRlb19zcmNfcXVlcnkgKEdzdEJhc2VTcmMgKiBiYXNlc3JjLAogICAgIEdzdFF1ZXJ5ICogcXVlcnkpOwotc3RhdGljIGdib29sZWFuIGdzdF9hdmZfdmlkZW9fc3JjX2RlY2lkZV9hbGxvY2F0aW9uIChHc3RCYXNlU3JjICogYmFzZXNyYywKLSAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYXZmX3ZpZGVvX3NyY191bmxvY2sgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfYXZmX3ZpZGVvX3NyY191bmxvY2tfc3RvcCAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpOwogc3RhdGljIEdzdEZsb3dSZXR1cm4gZ3N0X2F2Zl92aWRlb19zcmNfY3JlYXRlIChHc3RQdXNoU3JjICogcHVzaHNyYywKICAgICBHc3RCdWZmZXIgKiogYnVmKTsKLXN0YXRpYyBnYm9vbGVhbiBnc3RfYXZmX3ZpZGVvX3NyY19uZWdvdGlhdGUgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKLQorc3RhdGljIEdzdENhcHMgKiBnc3RfYXZmX3ZpZGVvX3NyY19maXhhdGUgKEdzdEJhc2VTcmMgKiBic3JjLAorICAgIEdzdENhcHMgKiBjYXBzKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfYXZmX3ZpZGVvX3NyY19kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QmFzZVNyYyAqIGJzcmMsCisgICAgR3N0UXVlcnkgKiBxdWVyeSk7CitzdGF0aWMgdm9pZCBnc3RfYXZmX3ZpZGVvX3NyY19zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsCisgICAgICAgIEdzdENvbnRleHQgKiBjb250ZXh0KTsKIAogc3RhdGljIHZvaWQKIGdzdF9hdmZfdmlkZW9fc3JjX2NsYXNzX2luaXQgKEdzdEFWRlZpZGVvU3JjQ2xhc3MgKiBrbGFzcykKQEAgLTExMjEsNiArMTE2MSw3IEBACiAgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9IGdzdF9hdmZfdmlkZW9fc3JjX3NldF9wcm9wZXJ0eTsKIAogICBnc3RlbGVtZW50X2NsYXNzLT5jaGFuZ2Vfc3RhdGUgPSBnc3RfYXZmX3ZpZGVvX3NyY19jaGFuZ2Vfc3RhdGU7CisgIGdzdGVsZW1lbnRfY2xhc3MtPnNldF9jb250ZXh0ID0gZ3N0X2F2Zl92aWRlb19zcmNfc2V0X2NvbnRleHQ7CiAKICAgZ3N0YmFzZXNyY19jbGFzcy0+Z2V0X2NhcHMgPSBnc3RfYXZmX3ZpZGVvX3NyY19nZXRfY2FwczsKICAgZ3N0YmFzZXNyY19jbGFzcy0+c2V0X2NhcHMgPSBnc3RfYXZmX3ZpZGVvX3NyY19zZXRfY2FwczsKQEAgLTExMjksOCArMTE3MCw4IEBACiAgIGdzdGJhc2VzcmNfY2xhc3MtPnF1ZXJ5ID0gZ3N0X2F2Zl92aWRlb19zcmNfcXVlcnk7CiAgIGdzdGJhc2VzcmNfY2xhc3MtPnVubG9jayA9IGdzdF9hdmZfdmlkZW9fc3JjX3VubG9jazsKICAgZ3N0YmFzZXNyY19jbGFzcy0+dW5sb2NrX3N0b3AgPSBnc3RfYXZmX3ZpZGVvX3NyY191bmxvY2tfc3RvcDsKKyAgZ3N0YmFzZXNyY19jbGFzcy0+Zml4YXRlID0gZ3N0X2F2Zl92aWRlb19zcmNfZml4YXRlOwogICBnc3RiYXNlc3JjX2NsYXNzLT5kZWNpZGVfYWxsb2NhdGlvbiA9IGdzdF9hdmZfdmlkZW9fc3JjX2RlY2lkZV9hbGxvY2F0aW9uOwotICBnc3RiYXNlc3JjX2NsYXNzLT5uZWdvdGlhdGUgPSBnc3RfYXZmX3ZpZGVvX3NyY19uZWdvdGlhdGU7CiAKICAgZ3N0cHVzaHNyY19jbGFzcy0+Y3JlYXRlID0gZ3N0X2F2Zl92aWRlb19zcmNfY3JlYXRlOwogCkBAIC0xMzM4LDE4ICsxMzc5LDYgQEAKIH0KIAogc3RhdGljIGdib29sZWFuCi1nc3RfYXZmX3ZpZGVvX3NyY19kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsIEdzdFF1ZXJ5ICogcXVlcnkpCi17Ci0gIGdib29sZWFuIHJldDsKLQotICBPQkpDX0NBTExPVVRfQkVHSU4gKCk7Ci0gIHJldCA9IFtHU1RfQVZGX1ZJREVPX1NSQ19JTVBMIChiYXNlc3JjKSBkZWNpZGVBbGxvY2F0aW9uOnF1ZXJ5XTsKLSAgT0JKQ19DQUxMT1VUX0VORCAoKTsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KIGdzdF9hdmZfdmlkZW9fc3JjX3VubG9jayAoR3N0QmFzZVNyYyAqIGJhc2VzcmMpCiB7CiAgIGdib29sZWFuIHJldDsKQEAgLTEzODUsMTMgKzE0MTQsMzYgQEAKICAgcmV0dXJuIHJldDsKIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfYXZmX3ZpZGVvX3NyY19uZWdvdGlhdGUgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKQotewotICAvKiBGSVhNRTogV2UgZG9uJ3Qgc3VwcG9ydCByZWNvbmZpZ3VyYXRpb24geWV0ICovCi0gIGlmIChnc3RfcGFkX2hhc19jdXJyZW50X2NhcHMgKEdTVF9CQVNFX1NSQ19QQUQgKGJhc2VzcmMpKSkKLSAgICByZXR1cm4gVFJVRTsKIAotICByZXR1cm4gR1NUX0JBU0VfU1JDX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5uZWdvdGlhdGUgKGJhc2VzcmMpOworc3RhdGljIEdzdENhcHMgKgorZ3N0X2F2Zl92aWRlb19zcmNfZml4YXRlIChHc3RCYXNlU3JjICogYnNyYywgR3N0Q2FwcyAqIGNhcHMpCit7CisgIEdzdENhcHMgKnJldDsKKworICBPQkpDX0NBTExPVVRfQkVHSU4gKCk7CisgIHJldCA9IFtHU1RfQVZGX1ZJREVPX1NSQ19JTVBMIChic3JjKSBmaXhhdGU6Y2Fwc107CisgIE9CSkNfQ0FMTE9VVF9FTkQgKCk7CisKKyAgcmV0dXJuIHJldDsKIH0KIAorc3RhdGljIGdib29sZWFuCitnc3RfYXZmX3ZpZGVvX3NyY19kZWNpZGVfYWxsb2NhdGlvbiAoR3N0QmFzZVNyYyAqIGJzcmMsCisgICAgR3N0UXVlcnkgKiBxdWVyeSkKK3sKKyAgZ2Jvb2xlYW4gcmV0OworCisgIE9CSkNfQ0FMTE9VVF9CRUdJTiAoKTsKKyAgcmV0ID0gW0dTVF9BVkZfVklERU9fU1JDX0lNUEwgKGJzcmMpIGRlY2lkZUFsbG9jYXRpb246cXVlcnldOworICBPQkpDX0NBTExPVVRfRU5EICgpOworCisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYXZmX3ZpZGVvX3NyY19zZXRfY29udGV4dCAoR3N0RWxlbWVudCAqIGVsZW1lbnQsIEdzdENvbnRleHQgKiBjb250ZXh0KQoreworICBPQkpDX0NBTExPVVRfQkVHSU4gKCk7CisgIFtHU1RfQVZGX1ZJREVPX1NSQ19JTVBMIChlbGVtZW50KSBzZXRDb250ZXh0OmNvbnRleHRdOworICBPQkpDX0NBTExPVVRfRU5EICgpOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvY29yZW1lZGlhYnVmZmVyLmMgYi9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuYwppbmRleCA2ODFmZTE0Li5jZjM0MjI0IDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuYworKysgYi9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuYwpAQCAtMTksMTUgKzE5LDQyIEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCisjaW5jbHVkZSAiY29yZXZpZGVvYnVmZmVyLmgiCiAjaW5jbHVkZSAiY29yZW1lZGlhYnVmZmVyLmgiCisjaW5jbHVkZSAiY29yZXZpZGVvbWVtb3J5LmgiCisKK3N0YXRpYyBjb25zdCBHc3RNZXRhSW5mbyAqZ3N0X2NvcmVfbWVkaWFfbWV0YV9nZXRfaW5mbyAodm9pZCk7CisKK3N0YXRpYyB2b2lkCitnc3RfY29yZV9tZWRpYV9tZXRhX2FkZCAoR3N0QnVmZmVyICogYnVmZmVyLCBDTVNhbXBsZUJ1ZmZlclJlZiBzYW1wbGVfYnVmLAorICAgIENWSW1hZ2VCdWZmZXJSZWYgaW1hZ2VfYnVmLCBDTUJsb2NrQnVmZmVyUmVmIGJsb2NrX2J1ZikKK3sKKyAgR3N0Q29yZU1lZGlhTWV0YSAqbWV0YTsKKworICBtZXRhID0KKyAgICAgIChHc3RDb3JlTWVkaWFNZXRhICopIGdzdF9idWZmZXJfYWRkX21ldGEgKGJ1ZmZlciwKKyAgICAgIGdzdF9jb3JlX21lZGlhX21ldGFfZ2V0X2luZm8gKCksIE5VTEwpOworICBDRlJldGFpbiAoc2FtcGxlX2J1Zik7CisgIGlmIChpbWFnZV9idWYpCisgICAgQ1ZCdWZmZXJSZXRhaW4gKGltYWdlX2J1Zik7CisgIGlmIChibG9ja19idWYpCisgICAgQ0ZSZXRhaW4gKGJsb2NrX2J1Zik7CisgIG1ldGEtPnNhbXBsZV9idWYgPSBzYW1wbGVfYnVmOworICBtZXRhLT5pbWFnZV9idWYgPSBpbWFnZV9idWY7CisgIG1ldGEtPmJsb2NrX2J1ZiA9IGJsb2NrX2J1ZjsKKyAgaWYgKGltYWdlX2J1ZiAhPSBOVUxMICYmIENGR2V0VHlwZUlEIChpbWFnZV9idWYpID09IENWUGl4ZWxCdWZmZXJHZXRUeXBlSUQgKCkpCisgICAgbWV0YS0+cGl4ZWxfYnVmID0gKENWUGl4ZWxCdWZmZXJSZWYpIGltYWdlX2J1ZjsKKyAgZWxzZQorICAgIG1ldGEtPnBpeGVsX2J1ZiA9IE5VTEw7Cit9CiAKIHN0YXRpYyB2b2lkCiBnc3RfY29yZV9tZWRpYV9tZXRhX2ZyZWUgKEdzdENvcmVNZWRpYU1ldGEgKiBtZXRhLCBHc3RCdWZmZXIgKiBidWYpCiB7CiAgIGlmIChtZXRhLT5pbWFnZV9idWYgIT0gTlVMTCkgewotICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyAobWV0YS0+aW1hZ2VfYnVmLCAwKTsKICAgICBDVkJ1ZmZlclJlbGVhc2UgKG1ldGEtPmltYWdlX2J1Zik7CiAgIH0KKwogICBpZiAobWV0YS0+YmxvY2tfYnVmICE9IE5VTEwpIHsKICAgICBDRlJlbGVhc2UgKG1ldGEtPmJsb2NrX2J1Zik7CiAgIH0KQEAgLTM1LDYgKzYyLDIyIEBACiAgIENGUmVsZWFzZSAobWV0YS0+c2FtcGxlX2J1Zik7CiB9CiAKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2NvcmVfbWVkaWFfbWV0YV90cmFuc2Zvcm0gKEdzdEJ1ZmZlciAqIHRyYW5zYnVmLCBHc3RDb3JlTWVkaWFNZXRhICogbWV0YSwKKyAgICBHc3RCdWZmZXIgKiBidWZmZXIsIEdRdWFyayB0eXBlLCBHc3RNZXRhVHJhbnNmb3JtQ29weSAqIGRhdGEpCit7CisgIGlmICghZGF0YS0+cmVnaW9uKSB7CisgICAgLyogb25seSBjb3B5IGlmIHRoZSBjb21wbGV0ZSBkYXRhIGlzIGNvcGllZCBhcyB3ZWxsICovCisgICAgZ3N0X2NvcmVfbWVkaWFfbWV0YV9hZGQgKHRyYW5zYnVmLCBtZXRhLT5zYW1wbGVfYnVmLCBtZXRhLT5pbWFnZV9idWYsCisgICAgICAgIG1ldGEtPmJsb2NrX2J1Zik7CisgIH0gZWxzZSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh0cmFuc2J1ZiwKKyAgICAgICAgImRyb3BwaW5nIENvcmUgTWVkaWEgbWV0YWRhdGEgZHVlIHRvIHBhcnRpYWwgYnVmZmVyIik7CisgIH0KKworICByZXR1cm4gVFJVRTsgICAgICAgICAgICAgICAgICAvKiByZXR2YWwgdW51c2VkICovCit9CisKIEdUeXBlCiBnc3RfY29yZV9tZWRpYV9tZXRhX2FwaV9nZXRfdHlwZSAodm9pZCkKIHsKQEAgLTU4LDcgKzEwMSw3IEBACiAgICAgICAgICJHc3RDb3JlTWVkaWFNZXRhIiwgc2l6ZW9mIChHc3RDb3JlTWVkaWFNZXRhKSwKICAgICAgICAgKEdzdE1ldGFJbml0RnVuY3Rpb24pIE5VTEwsCiAgICAgICAgIChHc3RNZXRhRnJlZUZ1bmN0aW9uKSBnc3RfY29yZV9tZWRpYV9tZXRhX2ZyZWUsCi0gICAgICAgIChHc3RNZXRhVHJhbnNmb3JtRnVuY3Rpb24pIE5VTEwpOworICAgICAgICAoR3N0TWV0YVRyYW5zZm9ybUZ1bmN0aW9uKSBnc3RfY29yZV9tZWRpYV9tZXRhX3RyYW5zZm9ybSk7CiAgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZjb3JlX21lZGlhX21ldGFfaW5mbywgbWV0YSk7CiAgIH0KICAgcmV0dXJuIGNvcmVfbWVkaWFfbWV0YV9pbmZvOwpAQCAtODUsNjggKzEyOCw2IEBACiB9CiAKIHN0YXRpYyBnYm9vbGVhbgotZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX3dyYXBfcGl4ZWxfYnVmZmVyIChHc3RCdWZmZXIgKiBidWYsIEdzdFZpZGVvSW5mbyAqIGluZm8sCi0gICAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWYsIGdib29sZWFuICogaGFzX3BhZGRpbmcsIGdib29sZWFuIG1hcCkKLXsKLSAgZ3VpbnQgbl9wbGFuZXM7Ci0gIGdzaXplIG9mZnNldFtHU1RfVklERU9fTUFYX1BMQU5FU10gPSB7IDAgfTsKLSAgZ2ludCBzdHJpZGVbR1NUX1ZJREVPX01BWF9QTEFORVNdID0geyAwIH07Ci0gIEdzdFZpZGVvTWV0YSAqdmlkZW9fbWV0YTsKLSAgVUludDMyIHNpemU7Ci0KLSAgaWYgKG1hcCAmJiBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzIChwaXhlbF9idWYsIDApICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKLSAgICBHU1RfRVJST1IgKCJDb3VsZCBub3QgbG9jayBwaXhlbCBidWZmZXIgYmFzZSBhZGRyZXNzIik7Ci0gICAgcmV0dXJuIEZBTFNFOwotICB9Ci0KLSAgKmhhc19wYWRkaW5nID0gRkFMU0U7Ci0KLSAgaWYgKENWUGl4ZWxCdWZmZXJJc1BsYW5hciAocGl4ZWxfYnVmKSkgewotICAgIGdpbnQgaSwgc2l6ZSA9IDAsIHBsYW5lX29mZnNldCA9IDA7Ci0KLSAgICBuX3BsYW5lcyA9IENWUGl4ZWxCdWZmZXJHZXRQbGFuZUNvdW50IChwaXhlbF9idWYpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuX3BsYW5lczsgaSsrKSB7Ci0gICAgICBzdHJpZGVbaV0gPSBDVlBpeGVsQnVmZmVyR2V0Qnl0ZXNQZXJSb3dPZlBsYW5lIChwaXhlbF9idWYsIGkpOwotCi0gICAgICBpZiAoc3RyaWRlW2ldICE9IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSAoaW5mbywgaSkpIHsKLSAgICAgICAgKmhhc19wYWRkaW5nID0gVFJVRTsKLSAgICAgIH0KLQotICAgICAgc2l6ZSA9IHN0cmlkZVtpXSAqIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHRPZlBsYW5lIChwaXhlbF9idWYsIGkpOwotICAgICAgb2Zmc2V0W2ldID0gcGxhbmVfb2Zmc2V0OwotICAgICAgcGxhbmVfb2Zmc2V0ICs9IHNpemU7Ci0KLSAgICAgIGlmIChtYXApIHsKLSAgICAgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWYsCi0gICAgICAgICAgICBnc3RfbWVtb3J5X25ld193cmFwcGVkIChHU1RfTUVNT1JZX0ZMQUdfTk9fU0hBUkUsCi0gICAgICAgICAgICAgICAgQ1ZQaXhlbEJ1ZmZlckdldEJhc2VBZGRyZXNzT2ZQbGFuZSAocGl4ZWxfYnVmLCBpKSwgc2l6ZSwgMCwKLSAgICAgICAgICAgICAgICBzaXplLCBOVUxMLCBOVUxMKSk7Ci0gICAgICB9Ci0gICAgfQotICB9IGVsc2UgewotCi0gICAgbl9wbGFuZXMgPSAxOwotICAgIHN0cmlkZVswXSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyAocGl4ZWxfYnVmKTsKLSAgICBvZmZzZXRbMF0gPSAwOwotICAgIHNpemUgPSBzdHJpZGVbMF0gKiBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0IChwaXhlbF9idWYpOwotCi0gICAgaWYgKG1hcCkgewotICAgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWYsCi0gICAgICAgICAgZ3N0X21lbW9yeV9uZXdfd3JhcHBlZCAoR1NUX01FTU9SWV9GTEFHX05PX1NIQVJFLAotICAgICAgICAgICAgICBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3MgKHBpeGVsX2J1ZiksIHNpemUsIDAsIHNpemUsIE5VTEwsCi0gICAgICAgICAgICAgIE5VTEwpKTsKLSAgICB9Ci0gIH0KLQotICB2aWRlb19tZXRhID0KLSAgICAgIGdzdF9idWZmZXJfYWRkX3ZpZGVvX21ldGFfZnVsbCAoYnVmLCBHU1RfVklERU9fRlJBTUVfRkxBR19OT05FLAotICAgICAgR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbmZvKSwgaW5mby0+d2lkdGgsIGluZm8tPmhlaWdodCwgbl9wbGFuZXMsIG9mZnNldCwKLSAgICAgIHN0cmlkZSk7Ci0KLSAgcmV0dXJuIFRSVUU7Ci19Ci0KLXN0YXRpYyBnYm9vbGVhbgogZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX3dyYXBfYmxvY2tfYnVmZmVyIChHc3RCdWZmZXIgKiBidWYsCiAgICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWYpCiB7CkBAIC0yNDcsMTEgKzIyOCwxMCBAQAogCiBHc3RCdWZmZXIgKgogZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX25ldyAoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlX2J1ZiwKLSAgICBnYm9vbGVhbiB1c2VfdmlkZW9fbWV0YSwgZ2Jvb2xlYW4gbWFwKQorICAgIGdib29sZWFuIHVzZV92aWRlb19tZXRhKQogewogICBDVkltYWdlQnVmZmVyUmVmIGltYWdlX2J1ZjsKICAgQ01CbG9ja0J1ZmZlclJlZiBibG9ja19idWY7Ci0gIEdzdENvcmVNZWRpYU1ldGEgKm1ldGE7CiAgIEdzdEJ1ZmZlciAqYnVmOwogCiAgIGltYWdlX2J1ZiA9IENNU2FtcGxlQnVmZmVyR2V0SW1hZ2VCdWZmZXIgKHNhbXBsZV9idWYpOwpAQCAtMjU5LDM1ICsyMzksMjIgQEAKIAogICBidWYgPSBnc3RfYnVmZmVyX25ldyAoKTsKIAotICBtZXRhID0gKEdzdENvcmVNZWRpYU1ldGEgKikgZ3N0X2J1ZmZlcl9hZGRfbWV0YSAoYnVmLAotICAgICAgZ3N0X2NvcmVfbWVkaWFfbWV0YV9nZXRfaW5mbyAoKSwgTlVMTCk7Ci0gIENGUmV0YWluIChzYW1wbGVfYnVmKTsKLSAgaWYgKGltYWdlX2J1ZikKLSAgICBDVkJ1ZmZlclJldGFpbiAoaW1hZ2VfYnVmKTsKLSAgaWYgKGJsb2NrX2J1ZikKLSAgICBDRlJldGFpbiAoYmxvY2tfYnVmKTsKLSAgbWV0YS0+c2FtcGxlX2J1ZiA9IHNhbXBsZV9idWY7Ci0gIG1ldGEtPmltYWdlX2J1ZiA9IGltYWdlX2J1ZjsKLSAgbWV0YS0+cGl4ZWxfYnVmID0gTlVMTDsKLSAgbWV0YS0+YmxvY2tfYnVmID0gYmxvY2tfYnVmOworICBnc3RfY29yZV9tZWRpYV9tZXRhX2FkZCAoYnVmLCBzYW1wbGVfYnVmLCBpbWFnZV9idWYsIGJsb2NrX2J1Zik7CiAKICAgaWYgKGltYWdlX2J1ZiAhPSBOVUxMICYmIENGR2V0VHlwZUlEIChpbWFnZV9idWYpID09IENWUGl4ZWxCdWZmZXJHZXRUeXBlSUQgKCkpIHsKICAgICBHc3RWaWRlb0luZm8gaW5mbzsKICAgICBnYm9vbGVhbiBoYXNfcGFkZGluZyA9IEZBTFNFOworICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmID0gKENWUGl4ZWxCdWZmZXJSZWYpIGltYWdlX2J1ZjsKIAotICAgIG1ldGEtPnBpeGVsX2J1ZiA9IChDVlBpeGVsQnVmZmVyUmVmKSBpbWFnZV9idWY7Ci0gICAgaWYgKCFnc3RfdmlkZW9faW5mb19pbml0X2Zyb21fcGl4ZWxfYnVmZmVyICgmaW5mbywgbWV0YS0+cGl4ZWxfYnVmKSkgeworICAgIGlmICghZ3N0X3ZpZGVvX2luZm9faW5pdF9mcm9tX3BpeGVsX2J1ZmZlciAoJmluZm8sIHBpeGVsX2J1ZikpIHsKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogCi0gICAgaWYgKCFnc3RfY29yZV9tZWRpYV9idWZmZXJfd3JhcF9waXhlbF9idWZmZXIgKGJ1ZiwgJmluZm8sIG1ldGEtPnBpeGVsX2J1ZiwKLSAgICAgICAgICAgICZoYXNfcGFkZGluZywgbWFwKSkgewotICAgICAgZ290byBlcnJvcjsKLSAgICB9CisgICAgZ3N0X2NvcmVfdmlkZW9fd3JhcF9waXhlbF9idWZmZXIgKGJ1ZiwgJmluZm8sIHBpeGVsX2J1ZiwgJmhhc19wYWRkaW5nKTsKIAogICAgIC8qIElmIHRoZSB2aWRlbyBtZXRhIEFQSSBpcyBub3Qgc3VwcG9ydGVkLCByZW1vdmUgcGFkZGluZyBieQogICAgICAqIGNvcHlpbmcgdGhlIGNvcmUgbWVkaWEgYnVmZmVyIHRvIGEgc3lzdGVtIG1lbW9yeSBidWZmZXIgKi8KLSAgICBpZiAobWFwICYmIGhhc19wYWRkaW5nICYmICF1c2VfdmlkZW9fbWV0YSkgeworICAgIGlmIChoYXNfcGFkZGluZyAmJiAhdXNlX3ZpZGVvX21ldGEpIHsKICAgICAgIEdzdEJ1ZmZlciAqY29weV9idWY7CiAgICAgICBjb3B5X2J1ZiA9IGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXdfZnJvbV9idWZmZXIgKGJ1ZiwgJmluZm8pOwogICAgICAgaWYgKCFjb3B5X2J1ZikgewpAQCAtMjk5LDcgKzI2Niw3IEBACiAgICAgfQogCiAgIH0gZWxzZSBpZiAoYmxvY2tfYnVmICE9IE5VTEwpIHsKLSAgICBpZiAobWFwICYmICFnc3RfY29yZV9tZWRpYV9idWZmZXJfd3JhcF9ibG9ja19idWZmZXIgKGJ1ZiwgYmxvY2tfYnVmKSkgeworICAgIGlmICghZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX3dyYXBfYmxvY2tfYnVmZmVyIChidWYsIGJsb2NrX2J1ZikpIHsKICAgICAgIGdvdG8gZXJyb3I7CiAgICAgfQogICB9IGVsc2UgewpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvY29yZW1lZGlhYnVmZmVyLmggYi9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuaAppbmRleCAyYjNiNzRkLi5iYzE4YWNmIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuaAorKysgYi9zeXMvYXBwbGVtZWRpYS9jb3JlbWVkaWFidWZmZXIuaApAQCAtNDMsOCArNDMsNyBAQAogCiAKIEdzdEJ1ZmZlciAqIGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXcgICAgICAoQ01TYW1wbGVCdWZmZXJSZWYgc2FtcGxlX2J1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gdXNlX3ZpZGVvX21ldGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIG1hcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdib29sZWFuIHVzZV92aWRlb19tZXRhKTsKIENWUGl4ZWxCdWZmZXJSZWYgZ3N0X2NvcmVfbWVkaWFfYnVmZmVyX2dldF9waXhlbF9idWZmZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoR3N0QnVmZmVyICogYnVmKTsKIEdUeXBlIGdzdF9jb3JlX21lZGlhX21ldGFfYXBpX2dldF90eXBlICh2b2lkKTsKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb2J1ZmZlci5jIGIvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmMKaW5kZXggMjY5ZTE5ZC4uNjdkODk5YyAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmMKKysrIGIvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmMKQEAgLTE4LDE1ICsxOCw0MCBAQAogICovCiAKICNpbmNsdWRlICJjb3JldmlkZW9idWZmZXIuaCIKKyNpbmNsdWRlICJjb3JldmlkZW9tZW1vcnkuaCIKKworc3RhdGljIGNvbnN0IEdzdE1ldGFJbmZvICpnc3RfY29yZV92aWRlb19tZXRhX2dldF9pbmZvICh2b2lkKTsKKworc3RhdGljIHZvaWQKK2dzdF9jb3JlX3ZpZGVvX21ldGFfYWRkIChHc3RCdWZmZXIgKiBidWZmZXIsIENWQnVmZmVyUmVmIGN2YnVmKQoreworICBHc3RDb3JlVmlkZW9NZXRhICptZXRhOworCisgIG1ldGEgPSAoR3N0Q29yZVZpZGVvTWV0YSAqKSBnc3RfYnVmZmVyX2FkZF9tZXRhIChidWZmZXIsCisgICAgICBnc3RfY29yZV92aWRlb19tZXRhX2dldF9pbmZvICgpLCBOVUxMKTsKKyAgbWV0YS0+Y3ZidWYgPSBDVkJ1ZmZlclJldGFpbiAoY3ZidWYpOworICBtZXRhLT5waXhidWYgPSAoQ1ZQaXhlbEJ1ZmZlclJlZikgY3ZidWY7Cit9CiAKIHN0YXRpYyB2b2lkCiBnc3RfY29yZV92aWRlb19tZXRhX2ZyZWUgKEdzdENvcmVWaWRlb01ldGEgKiBtZXRhLCBHc3RCdWZmZXIgKiBidWYpCiB7Ci0gIGlmIChtZXRhLT5waXhidWYgIT0gTlVMTCkgewotICAgIENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyAobWV0YS0+cGl4YnVmLCAwKTsKKyAgQ1ZCdWZmZXJSZWxlYXNlIChtZXRhLT5jdmJ1Zik7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2NvcmVfdmlkZW9fbWV0YV90cmFuc2Zvcm0gKEdzdEJ1ZmZlciAqIHRyYW5zYnVmLCBHc3RDb3JlVmlkZW9NZXRhICogbWV0YSwKKyAgICBHc3RCdWZmZXIgKiBidWZmZXIsIEdRdWFyayB0eXBlLCBHc3RNZXRhVHJhbnNmb3JtQ29weSAqIGRhdGEpCit7CisgIGlmICghZGF0YS0+cmVnaW9uKSB7CisgICAgLyogb25seSBjb3B5IGlmIHRoZSBjb21wbGV0ZSBkYXRhIGlzIGNvcGllZCBhcyB3ZWxsICovCisgICAgZ3N0X2NvcmVfdmlkZW9fbWV0YV9hZGQgKHRyYW5zYnVmLCBtZXRhLT5jdmJ1Zik7CisgIH0gZWxzZSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUICh0cmFuc2J1ZiwKKyAgICAgICAgImRyb3BwaW5nIENvcmUgVmlkZW8gbWV0YWRhdGEgZHVlIHRvIHBhcnRpYWwgYnVmZmVyIik7CiAgIH0KIAotICBDVkJ1ZmZlclJlbGVhc2UgKG1ldGEtPmN2YnVmKTsKKyAgcmV0dXJuIFRSVUU7ICAgICAgICAgICAgICAgICAgLyogcmV0dmFsIHVudXNlZCAqLwogfQogCiBHVHlwZQpAQCAtNTIsODkgKzc3LDg5IEBACiAgICAgICAgICJHc3RDb3JlVmlkZW9NZXRhIiwgc2l6ZW9mIChHc3RDb3JlVmlkZW9NZXRhKSwKICAgICAgICAgKEdzdE1ldGFJbml0RnVuY3Rpb24pIE5VTEwsCiAgICAgICAgIChHc3RNZXRhRnJlZUZ1bmN0aW9uKSBnc3RfY29yZV92aWRlb19tZXRhX2ZyZWUsCi0gICAgICAgIChHc3RNZXRhVHJhbnNmb3JtRnVuY3Rpb24pIE5VTEwpOworICAgICAgICAoR3N0TWV0YVRyYW5zZm9ybUZ1bmN0aW9uKSBnc3RfY29yZV92aWRlb19tZXRhX3RyYW5zZm9ybSk7CiAgICAgZ19vbmNlX2luaXRfbGVhdmUgKCZjb3JlX3ZpZGVvX21ldGFfaW5mbywgbWV0YSk7CiAgIH0KICAgcmV0dXJuIGNvcmVfdmlkZW9fbWV0YV9pbmZvOwogfQogCit2b2lkCitnc3RfY29yZV92aWRlb193cmFwX3BpeGVsX2J1ZmZlciAoR3N0QnVmZmVyICogYnVmLCBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmLCBnYm9vbGVhbiAqIGhhc19wYWRkaW5nKQoreworICBndWludCBuX3BsYW5lczsKKyAgZ3NpemUgb2Zmc2V0W0dTVF9WSURFT19NQVhfUExBTkVTXSA9IHsgMCB9OworICBnaW50IHN0cmlkZVtHU1RfVklERU9fTUFYX1BMQU5FU10gPSB7IDAgfTsKKyAgVUludDMyIHNpemU7CisgIEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKmdwaXhidWY7CisKKyAgZ3BpeGJ1ZiA9IGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9uZXcgKHBpeGVsX2J1Zik7CisgICpoYXNfcGFkZGluZyA9IEZBTFNFOworCisgIGlmIChDVlBpeGVsQnVmZmVySXNQbGFuYXIgKHBpeGVsX2J1ZikpIHsKKyAgICBnaW50IGksIHNpemUgPSAwLCBwbGFuZV9vZmZzZXQgPSAwOworCisgICAgbl9wbGFuZXMgPSBDVlBpeGVsQnVmZmVyR2V0UGxhbmVDb3VudCAocGl4ZWxfYnVmKTsKKyAgICBmb3IgKGkgPSAwOyBpIDwgbl9wbGFuZXM7IGkrKykgeworICAgICAgc3RyaWRlW2ldID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93T2ZQbGFuZSAocGl4ZWxfYnVmLCBpKTsKKworICAgICAgaWYgKHN0cmlkZVtpXSAhPSBHU1RfVklERU9fSU5GT19QTEFORV9TVFJJREUgKGluZm8sIGkpKSB7CisgICAgICAgICpoYXNfcGFkZGluZyA9IFRSVUU7CisgICAgICB9CisKKyAgICAgIHNpemUgPSBzdHJpZGVbaV0gKiBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0T2ZQbGFuZSAocGl4ZWxfYnVmLCBpKTsKKyAgICAgIG9mZnNldFtpXSA9IHBsYW5lX29mZnNldDsKKyAgICAgIHBsYW5lX29mZnNldCArPSBzaXplOworCisgICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZiwKKyAgICAgICAgICBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfbmV3X3dyYXBwZWQgKGdwaXhidWYsIGksIHNpemUpKTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgbl9wbGFuZXMgPSAxOworICAgIHN0cmlkZVswXSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvdyAocGl4ZWxfYnVmKTsKKyAgICBvZmZzZXRbMF0gPSAwOworICAgIHNpemUgPSBzdHJpZGVbMF0gKiBDVlBpeGVsQnVmZmVyR2V0SGVpZ2h0IChwaXhlbF9idWYpOworCisgICAgZ3N0X2J1ZmZlcl9hcHBlbmRfbWVtb3J5IChidWYsCisgICAgICAgIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeV9uZXdfd3JhcHBlZCAoZ3BpeGJ1ZiwKKyAgICAgICAgICAgIEdTVF9BUFBMRV9DT1JFX1ZJREVPX05PX1BMQU5FLCBzaXplKSk7CisgIH0KKworICBnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfdW5yZWYgKGdwaXhidWYpOworCisgIGlmIChpbmZvKSB7CisgICAgR3N0VmlkZW9NZXRhICp2aWRlb19tZXRhOworCisgICAgdmlkZW9fbWV0YSA9CisgICAgICAgIGdzdF9idWZmZXJfYWRkX3ZpZGVvX21ldGFfZnVsbCAoYnVmLCBHU1RfVklERU9fRlJBTUVfRkxBR19OT05FLAorICAgICAgICBHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pLCBpbmZvLT53aWR0aCwgaW5mby0+aGVpZ2h0LCBuX3BsYW5lcywKKyAgICAgICAgb2Zmc2V0LCBzdHJpZGUpOworICB9Cit9CisKIEdzdEJ1ZmZlciAqCi1nc3RfY29yZV92aWRlb19idWZmZXJfbmV3IChDVkJ1ZmZlclJlZiBjdmJ1ZiwgR3N0VmlkZW9JbmZvICogdmluZm8sCi0gICAgZ2Jvb2xlYW4gbWFwKQorZ3N0X2NvcmVfdmlkZW9fYnVmZmVyX25ldyAoQ1ZCdWZmZXJSZWYgY3ZidWYsIEdzdFZpZGVvSW5mbyAqIHZpbmZvKQogewogICBDVlBpeGVsQnVmZmVyUmVmIHBpeGJ1ZiA9IE5VTEw7CiAgIEdzdEJ1ZmZlciAqYnVmOwogICBHc3RDb3JlVmlkZW9NZXRhICptZXRhOwotICBndWludCBuX3BsYW5lczsKLSAgZ3NpemUgb2Zmc2V0W0dTVF9WSURFT19NQVhfUExBTkVTXTsKLSAgZ2ludCBzdHJpZGVbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBnYm9vbGVhbiBoYXNfcGFkZGluZzsgICAgICAgICAvKiBub3QgdXNlZCBmb3Igbm93ICovCiAKICAgaWYgKENGR2V0VHlwZUlEIChjdmJ1ZikgIT0gQ1ZQaXhlbEJ1ZmZlckdldFR5cGVJRCAoKSkKICAgICAvKiBUT0RPOiBEbyB3ZSBuZWVkIHRvIGhhbmRsZSBvdGhlciBidWZmZXIgdHlwZXM/ICovCi0gICAgZ290byBlcnJvcjsKKyAgICByZXR1cm4gTlVMTDsKIAogICBwaXhidWYgPSAoQ1ZQaXhlbEJ1ZmZlclJlZikgY3ZidWY7CiAKLSAgaWYgKG1hcCAmJiBDVlBpeGVsQnVmZmVyTG9ja0Jhc2VBZGRyZXNzIChwaXhidWYsIDApICE9IGtDVlJldHVyblN1Y2Nlc3MpIHsKLSAgICBnb3RvIGVycm9yOwotICB9Ci0KICAgYnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7CiAKLSAgLyogYWRkIHRoZSBjb3JldmlkZW8gbWV0YSB0byBmcmVlIHRoZSB1bmRlcmx5aW5nIGNvcmV2aWRlbyBidWZmZXIgKi8KKyAgLyogYWRkIHRoZSBjb3JldmlkZW8gbWV0YSB0byBwYXNzIHRoZSB1bmRlcmx5aW5nIGNvcmV2aWRlbyBidWZmZXIgKi8KICAgbWV0YSA9IChHc3RDb3JlVmlkZW9NZXRhICopIGdzdF9idWZmZXJfYWRkX21ldGEgKGJ1ZiwKICAgICAgIGdzdF9jb3JlX3ZpZGVvX21ldGFfZ2V0X2luZm8gKCksIE5VTEwpOwogICBtZXRhLT5jdmJ1ZiA9IENWQnVmZmVyUmV0YWluIChjdmJ1Zik7CiAgIG1ldGEtPnBpeGJ1ZiA9IHBpeGJ1ZjsKIAotICAvKiBzZXQgc3RyaWRlLCBvZmZzZXQgYW5kIHNpemUgKi8KLSAgbWVtc2V0ICgmb2Zmc2V0LCAwLCBzaXplb2YgKG9mZnNldCkpOwotICBtZW1zZXQgKCZzdHJpZGUsIDAsIHNpemVvZiAoc3RyaWRlKSk7Ci0KLSAgaWYgKENWUGl4ZWxCdWZmZXJJc1BsYW5hciAocGl4YnVmKSkgewotICAgIGludCBpLCBzaXplLCBvZmY7Ci0KLSAgICBuX3BsYW5lcyA9IENWUGl4ZWxCdWZmZXJHZXRQbGFuZUNvdW50IChwaXhidWYpOwotICAgIG9mZiA9IDA7Ci0gICAgZm9yIChpID0gMDsgaSA8IG5fcGxhbmVzOyArK2kpIHsKLSAgICAgIHN0cmlkZVtpXSA9IENWUGl4ZWxCdWZmZXJHZXRCeXRlc1BlclJvd09mUGxhbmUgKHBpeGJ1ZiwgaSk7Ci0gICAgICBzaXplID0gc3RyaWRlW2ldICogQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodE9mUGxhbmUgKHBpeGJ1ZiwgaSk7Ci0gICAgICBvZmZzZXRbaV0gPSBvZmY7Ci0gICAgICBvZmYgKz0gc2l6ZTsKLQotICAgICAgaWYgKG1hcCkgewotICAgICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZiwKLSAgICAgICAgICAgIGdzdF9tZW1vcnlfbmV3X3dyYXBwZWQgKEdTVF9NRU1PUllfRkxBR19OT19TSEFSRSwKLSAgICAgICAgICAgICAgICBDVlBpeGVsQnVmZmVyR2V0QmFzZUFkZHJlc3NPZlBsYW5lIChwaXhidWYsIGkpLCBzaXplLCAwLCBzaXplLAotICAgICAgICAgICAgICAgIE5VTEwsIE5VTEwpKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0gZWxzZSB7Ci0gICAgaW50IHNpemU7Ci0KLSAgICBuX3BsYW5lcyA9IDE7Ci0gICAgc3RyaWRlWzBdID0gQ1ZQaXhlbEJ1ZmZlckdldEJ5dGVzUGVyUm93IChwaXhidWYpOwotICAgIG9mZnNldFswXSA9IDA7Ci0gICAgc2l6ZSA9IHN0cmlkZVswXSAqIENWUGl4ZWxCdWZmZXJHZXRIZWlnaHQgKHBpeGJ1Zik7Ci0KLSAgICBpZiAobWFwKSB7Ci0gICAgICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZiwKLSAgICAgICAgICBnc3RfbWVtb3J5X25ld193cmFwcGVkIChHU1RfTUVNT1JZX0ZMQUdfTk9fU0hBUkUsCi0gICAgICAgICAgICAgIENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyAocGl4YnVmKSwgc2l6ZSwgMCwgc2l6ZSwgTlVMTCwgTlVMTCkpOwotICAgIH0KLSAgfQotCi0gIGlmICh2aW5mbykgewotICAgIEdzdFZpZGVvTWV0YSAqdmlkZW9fbWV0YTsKLQotICAgIHZpZGVvX21ldGEgPQotICAgICAgICBnc3RfYnVmZmVyX2FkZF92aWRlb19tZXRhX2Z1bGwgKGJ1ZiwgR1NUX1ZJREVPX0ZSQU1FX0ZMQUdfTk9ORSwKLSAgICAgICAgdmluZm8tPmZpbmZvLT5mb3JtYXQsIENWUGl4ZWxCdWZmZXJHZXRXaWR0aCAocGl4YnVmKSwKLSAgICAgICAgQ1ZQaXhlbEJ1ZmZlckdldEhlaWdodCAocGl4YnVmKSwgbl9wbGFuZXMsIG9mZnNldCwgc3RyaWRlKTsKLSAgfQorICBnc3RfY29yZV92aWRlb193cmFwX3BpeGVsX2J1ZmZlciAoYnVmLCB2aW5mbywgcGl4YnVmLCAmaGFzX3BhZGRpbmcpOwogCiAgIHJldHVybiBidWY7Ci0KLWVycm9yOgotICByZXR1cm4gTlVMTDsKIH0KZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb2J1ZmZlci5oIGIvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmgKaW5kZXggOGY1OGE2ZS4uMGVhN2QxZSAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmgKKysrIGIvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvYnVmZmVyLmgKQEAgLTQxLDggKzQxLDExIEBACiB9IEdzdENvcmVWaWRlb01ldGE7CiAKIEdzdEJ1ZmZlciAqIGdzdF9jb3JlX3ZpZGVvX2J1ZmZlcl9uZXcgICAgICAoQ1ZCdWZmZXJSZWYgY3ZidWYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvSW5mbyAqaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gbWFwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9JbmZvICppbmZvKTsKK3ZvaWQgZ3N0X2NvcmVfdmlkZW9fd3JhcF9waXhlbF9idWZmZXIgICAgICAoR3N0QnVmZmVyICogYnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2Jvb2xlYW4gKiBoYXNfcGFkZGluZyk7CiBHVHlwZSBnc3RfY29yZV92aWRlb19tZXRhX2FwaV9nZXRfdHlwZSAodm9pZCk7CiAKIEdfRU5EX0RFQ0xTCmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9tZW1vcnkuYyBiL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb21lbW9yeS5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjYjA4NWQKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW9tZW1vcnkuYwpAQCAtMCwwICsxLDQ2NSBAQAorLyogR1N0cmVhbWVyIEFwcGxlIENvcmUgVmlkZW8gbWVtb3J5CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgSWx5YSBLb25zdGFudGlub3YKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorICogQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiY29yZXZpZGVvbWVtb3J5LmgiCisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKEdTVF9DQVRfQVBQTEVfQ09SRV9WSURFT19NRU1PUlkpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgR1NUX0NBVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWQorCitzdGF0aWMgY29uc3QgY2hhciAqX2xvY2tfc3RhdGVfbmFtZXNbXSA9IHsKKyAgIlVubG9ja2VkIiwgIkxvY2tlZCBSZWFkLU9ubHkiLCAiTG9ja2VkIFJlYWQtV3JpdGUiCit9OworCisvKioKKyAqIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9uZXc6CisgKiBAYnVmOiBhbiB1bmxvY2tlZCBDVlBpeGVsQnVmZmVyCisgKgorICogSW5pdGlhbGl6ZXMgYSB3cmFwcGVyIHRvIG1hbmFnZSBsb2NraW5nIHN0YXRlIGZvciBhIENWUGl4ZWxCdWZmZXIuCisgKiBUaGlzIGZ1bmN0aW9uIGV4cGVjdHMgdG8gcmVjZWl2ZSB1bmxvY2tlZCBDVlBpeGVsQnVmZmVyLCBhbmQgZnVydGhlciBhc3N1bWVzCisgKiB0aGF0IG5vIG9uZSBlbHNlIHdpbGwgbG9jayBpdCAoYXMgbG9uZyBhcyB0aGUgd3JhcHBlciBleGlzdHMpLgorICoKKyAqIFRoaXMgZnVuY3Rpb24gcmV0YWlucyBAYnVmLgorICoKKyAqIFJldHVybnM6IFRoZSB3cmFwcGVkIEBidWYuCisgKi8KK0dzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKgorZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX25ldyAoQ1ZQaXhlbEJ1ZmZlclJlZiBidWYpCit7CisgIEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKmdwaXhidWYgPQorICAgICAgZ19zbGljZV9uZXcgKEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIpOworICBncGl4YnVmLT5yZWZjb3VudCA9IDE7CisgIGdfbXV0ZXhfaW5pdCAoJmdwaXhidWYtPm11dGV4KTsKKyAgZ3BpeGJ1Zi0+YnVmID0gQ1ZQaXhlbEJ1ZmZlclJldGFpbiAoYnVmKTsKKyAgZ3BpeGJ1Zi0+bG9ja19zdGF0ZSA9IEdTVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWV9VTkxPQ0tFRDsKKyAgZ3BpeGJ1Zi0+bG9ja19jb3VudCA9IDA7CisgIHJldHVybiBncGl4YnVmOworfQorCitHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyICoKK2dzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9yZWYgKEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKiBncGl4YnVmKQoreworICBnX2F0b21pY19pbnRfaW5jICgmZ3BpeGJ1Zi0+cmVmY291bnQpOworICByZXR1cm4gZ3BpeGJ1ZjsKK30KKwordm9pZAorZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX3VucmVmIChHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyICogZ3BpeGJ1ZikKK3sKKyAgaWYgKGdfYXRvbWljX2ludF9kZWNfYW5kX3Rlc3QgKCZncGl4YnVmLT5yZWZjb3VudCkpIHsKKyAgICBpZiAoZ3BpeGJ1Zi0+bG9ja19zdGF0ZSAhPSBHU1RfQVBQTEVfQ09SRV9WSURFT19NRU1PUllfVU5MT0NLRUQpIHsKKyAgICAgIEdTVF9FUlJPUgorICAgICAgICAgICgiJXA6IENWUGl4ZWxCdWZmZXIgbWVtb3J5IHN0aWxsIGxvY2tlZCAobG9ja19jb3VudCA9ICVkKSwgbGlrZWx5IGZvcmdvdCB0byB1bm1hcCBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSIsCisgICAgICAgICAgZ3BpeGJ1ZiwgZ3BpeGJ1Zi0+bG9ja19jb3VudCk7CisgICAgfQorICAgIENWUGl4ZWxCdWZmZXJSZWxlYXNlIChncGl4YnVmLT5idWYpOworICAgIGdfbXV0ZXhfY2xlYXIgKCZncGl4YnVmLT5tdXRleCk7CisgICAgZ19zbGljZV9mcmVlIChHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyLCBncGl4YnVmKTsKKyAgfQorfQorCisvKioKKyAqIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9sb2NrOgorICogQGdwaXhidWY6IHRoZSB3cmFwcGVkIENWUGl4ZWxCdWZmZXIKKyAqIEBmbGFnczogbWFwcGluZyBmbGFncyBmb3IgZWl0aGVyIHJlYWQtb25seSBvciByZWFkLXdyaXRlIGxvY2tpbmcKKyAqCisgKiBMb2NrcyB0aGUgcGl4ZWwgYnVmZmVyIGludG8gQ1BVIG1lbW9yeSBmb3IgcmVhZGluZyBvbmx5LCBvcgorICogcmVhZGluZyBhbmQgd3JpdGluZy4gVGhlIGRlc2lyZWQgbG9jayBtb2RlIGlzIGRlZHVjZWQgZnJvbSBAZmxhZ3MuCisgKgorICogRm9yIHBsYW5hciBidWZmZXJzLCBlYWNoIHBsYW5lJ3MgI0dzdEFwcGxlQ29yZVZpZGVvTWVtb3J5IHdpbGwgcmVmZXJlbmNlCisgKiB0aGUgc2FtZSAjR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlcjsgdGhlcmVmb3JlIHRoaXMgZnVuY3Rpb24gd2lsbCBiZQorICogY2FsbGVkIG11bHRpcGxlIHRpbWVzIGZvciB0aGUgc2FtZSBAZ3BpeGJ1Zi4gRWFjaCBjYWxsIHRvIHRoaXMgZnVuY3Rpb24KKyAqIHNob3VsZCBiZSBtYXRjaGVkIGJ5IGEgY2FsbCB0byBnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfdW5sb2NrKCkuCisgKgorICogTm90ZXM6CisgKgorICogLSBSZWFkLW9ubHkgbG9ja2luZyBpbXByb3ZlcyBwZXJmb3JtYW5jZSBieSBwcmV2ZW50aW5nIENvcmUgVmlkZW8KKyAqICAgZnJvbSBpbnZhbGlkYXRpbmcgZXhpc3RpbmcgY2FjaGVzIG9mIHRoZSBidWZmZXLigJlzIGNvbnRlbnRzLgorICoKKyAqIC0gT25seSB0aGUgZmlyc3QgY2FsbCBhY3R1YWxseSBsb2Nrczsgc3Vic2VxdWVudCBjYWxscyBzdWNjZWVkCisgKiAgIGFzIGxvbmcgYXMgdGhlaXIgcmVxdWVzdGVkIGZsYWdzIGFyZSBjb21wYXRpYmxlIHdpdGggaG93IHRoZSBidWZmZXIKKyAqICAgaXMgYWxyZWFkeSBsb2NrZWQuCisgKgorICogICBGb3IgZXhhbXBsZSwgdGhlIGZvbGxvd2luZyBjb2RlIHdpbGwgc3VjY2VlZDoKKyAqICAgfFs8IS0tIGxhbmd1YWdlPSJDIiAtLT4KKyAqICAgZ3N0X21lbW9yeV9tYXAocGxhbmUxLCBHU1RfTUFQX1JFQURXUklURSk7CisgKiAgIGdzdF9tZW1vcnlfbWFwKHBsYW5lMiwgR1NUX01BUF9SRUFEKTsKKyAqICAgXXwKKyAqICAgd2hpbGUgdGhlIMaSb2xsb3dpbmcgY29kZSB3aWxsIGZhaWw6CisgKiAgIHxbPCEtLSBsYW5ndWFnZT0iQyIgLS0+CisgKiAgIGdzdF9tZW1vcnlfbWFwKHBsYW5lMSwgR1NUX01BUF9SRUFEKTsKKyAqICAgZ3N0X21lbW9yeV9tYXAocGxhbmUyLCBHU1RfTUFQX1JFQURXUklURSk7IC88IS0tIC0tPiogRVJST1I6IGFscmVhZHkgbG9ja2VkIGZvciByZWFkLW9ubHkgKjwhLS0gLS0+LworICogICBdfAorICoKKyAqIFJldHVybnM6ICVUUlVFIGlmIHRoZSBidWZmZXIgd2FzIGxvY2tlZCBhcyByZXF1ZXN0ZWQKKyAqLworc3RhdGljIGdib29sZWFuCitnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfbG9jayAoR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlciAqIGdwaXhidWYsCisgICAgR3N0TWFwRmxhZ3MgZmxhZ3MpCit7CisgIENWUmV0dXJuIGN2cmV0OworICBDVk9wdGlvbkZsYWdzIGxvY2tGbGFnczsKKworICBnX211dGV4X2xvY2sgKCZncGl4YnVmLT5tdXRleCk7CisKKyAgc3dpdGNoIChncGl4YnVmLT5sb2NrX3N0YXRlKSB7CisgICAgY2FzZSBHU1RfQVBQTEVfQ09SRV9WSURFT19NRU1PUllfVU5MT0NLRUQ6CisgICAgICBsb2NrRmxhZ3MgPSAoZmxhZ3MgJiBHU1RfTUFQX1dSSVRFKSA/IDAgOiBrQ1ZQaXhlbEJ1ZmZlckxvY2tfUmVhZE9ubHk7CisgICAgICBjdnJldCA9IENWUGl4ZWxCdWZmZXJMb2NrQmFzZUFkZHJlc3MgKGdwaXhidWYtPmJ1ZiwgbG9ja0ZsYWdzKTsKKyAgICAgIGlmIChjdnJldCAhPSBrQ1ZSZXR1cm5TdWNjZXNzKSB7CisgICAgICAgIGdfbXV0ZXhfdW5sb2NrICgmZ3BpeGJ1Zi0+bXV0ZXgpOworICAgICAgICAvKiBUT0RPOiBNYXAga0NWUmV0dXJuRXJyb3IgZXRjLiBpbnRvIHN0cmluZ3MgKi8KKyAgICAgICAgR1NUX0VSUk9SICgiJXA6IHVuYWJsZSB0byBsb2NrIGJhc2UgYWRkcmVzcyBmb3IgcGl4YnVmICVwOiAlZCIsIGdwaXhidWYsCisgICAgICAgICAgICBncGl4YnVmLT5idWYsIGN2cmV0KTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgfQorICAgICAgZ3BpeGJ1Zi0+bG9ja19zdGF0ZSA9CisgICAgICAgICAgKGZsYWdzICYgR1NUX01BUF9XUklURSkgPworICAgICAgICAgIEdTVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWV9MT0NLRURfUkVBRF9XUklURSA6CisgICAgICAgICAgR1NUX0FQUExFX0NPUkVfVklERU9fTUVNT1JZX0xPQ0tFRF9SRUFET05MWTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBHU1RfQVBQTEVfQ09SRV9WSURFT19NRU1PUllfTE9DS0VEX1JFQURPTkxZOgorICAgICAgaWYgKGZsYWdzICYgR1NUX01BUF9XUklURSkgeworICAgICAgICBnX211dGV4X3VubG9jayAoJmdwaXhidWYtPm11dGV4KTsKKyAgICAgICAgR1NUX0VSUk9SICgiJXA6IHBpeGVsIGJ1ZmZlciAlcCBhbHJlYWR5IGxvY2tlZCBmb3IgcmVhZC1vbmx5IGFjY2VzcyIsCisgICAgICAgICAgICBncGl4YnVmLCBncGl4YnVmLT5idWYpOworICAgICAgICByZXR1cm4gRkFMU0U7CisgICAgICB9CisgICAgICBicmVhazsKKworICAgIGNhc2UgR1NUX0FQUExFX0NPUkVfVklERU9fTUVNT1JZX0xPQ0tFRF9SRUFEX1dSSVRFOgorICAgICAgYnJlYWs7ICAgICAgICAgICAgICAgICAgICAvKiBub3RoaW5nIHRvIGRvLCBhbHJlYWR5IG1vc3QgcGVybWlzc2l2ZSBtYXBwaW5nICovCisgIH0KKworICBnX2F0b21pY19pbnRfaW5jICgmZ3BpeGJ1Zi0+bG9ja19jb3VudCk7CisKKyAgZ19tdXRleF91bmxvY2sgKCZncGl4YnVmLT5tdXRleCk7CisKKyAgR1NUX0RFQlVHICgiJXA6IHBpeGJ1ZiAlcCwgJXMgKCVkIHRpbWVzKSIsCisgICAgICBncGl4YnVmLAorICAgICAgZ3BpeGJ1Zi0+YnVmLAorICAgICAgX2xvY2tfc3RhdGVfbmFtZXNbZ3BpeGJ1Zi0+bG9ja19zdGF0ZV0sIGdwaXhidWYtPmxvY2tfY291bnQpOworCisgIHJldHVybiBUUlVFOworfQorCisvKioKKyAqIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl91bmxvY2s6CisgKiBAZ3BpeGJ1ZjogdGhlIHdyYXBwZWQgQ1ZQaXhlbEJ1ZmZlcgorICoKKyAqIFVubG9ja3MgdGhlIHBpeGVsIGJ1ZmZlciBmcm9tIENQVSBtZW1vcnkuIFNob3VsZCBiZSBjYWxsZWQKKyAqIGZvciBldmVyeSBnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfbG9jaygpIGNhbGwuCisgKi8KK3N0YXRpYyBnYm9vbGVhbgorZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX3VubG9jayAoR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlciAqCisgICAgZ3BpeGJ1ZikKK3sKKyAgQ1ZPcHRpb25GbGFncyBsb2NrRmxhZ3M7CisgIENWUmV0dXJuIGN2cmV0OworCisgIGlmIChncGl4YnVmLT5sb2NrX3N0YXRlID09IEdTVF9BUFBMRV9DT1JFX1ZJREVPX01FTU9SWV9VTkxPQ0tFRCkgeworICAgIEdTVF9FUlJPUiAoIiVwOiBwaXhlbCBidWZmZXIgJXAgbm90IGxvY2tlZCIsIGdwaXhidWYsIGdwaXhidWYtPmJ1Zik7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFnX2F0b21pY19pbnRfZGVjX2FuZF90ZXN0ICgmZ3BpeGJ1Zi0+bG9ja19jb3VudCkpIHsKKyAgICByZXR1cm4gVFJVRTsgICAgICAgICAgICAgICAgLyogc3RpbGwgbG9ja2VkLCBieSBjdXJyZW50IGFuZC9vciBvdGhlciBjYWxsZXJzICovCisgIH0KKworICBnX211dGV4X2xvY2sgKCZncGl4YnVmLT5tdXRleCk7CisKKyAgbG9ja0ZsYWdzID0KKyAgICAgIChncGl4YnVmLT5sb2NrX3N0YXRlID09CisgICAgICBHU1RfQVBQTEVfQ09SRV9WSURFT19NRU1PUllfTE9DS0VEX1JFQURPTkxZKSA/IGtDVlBpeGVsQnVmZmVyTG9ja19SZWFkT25seQorICAgICAgOiAwOworICBjdnJldCA9IENWUGl4ZWxCdWZmZXJVbmxvY2tCYXNlQWRkcmVzcyAoZ3BpeGJ1Zi0+YnVmLCBsb2NrRmxhZ3MpOworICBpZiAoY3ZyZXQgIT0ga0NWUmV0dXJuU3VjY2VzcykgeworICAgIGdfbXV0ZXhfdW5sb2NrICgmZ3BpeGJ1Zi0+bXV0ZXgpOworICAgIGdfYXRvbWljX2ludF9pbmMgKCZncGl4YnVmLT5sb2NrX2NvdW50KTsKKyAgICAvKiBUT0RPOiBNYXAga0NWUmV0dXJuRXJyb3IgZXRjLiBpbnRvIHN0cmluZ3MgKi8KKyAgICBHU1RfRVJST1IgKCIlcDogdW5hYmxlIHRvIHVubG9jayBiYXNlIGFkZHJlc3MgZm9yIHBpeGJ1ZiAlcDogJWQiLCBncGl4YnVmLAorICAgICAgICBncGl4YnVmLT5idWYsIGN2cmV0KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBncGl4YnVmLT5sb2NrX3N0YXRlID0gR1NUX0FQUExFX0NPUkVfVklERU9fTUVNT1JZX1VOTE9DS0VEOworCisgIGdfbXV0ZXhfdW5sb2NrICgmZ3BpeGJ1Zi0+bXV0ZXgpOworCisgIEdTVF9ERUJVRyAoIiVwOiBwaXhidWYgJXAsICVzICglZCBsb2NrcyByZW1haW5pbmcpIiwKKyAgICAgIGdwaXhidWYsCisgICAgICBncGl4YnVmLT5idWYsCisgICAgICBfbG9ja19zdGF0ZV9uYW1lc1tncGl4YnVmLT5sb2NrX3N0YXRlXSwgZ3BpeGJ1Zi0+bG9ja19jb3VudCk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKKy8qCisgKiBHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvcgorICovCisKK3N0cnVjdCBfR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3JDbGFzcworeworICBHc3RBbGxvY2F0b3JDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCit0eXBlZGVmIHN0cnVjdCBfR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3JDbGFzcyBHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvckNsYXNzOworCitzdHJ1Y3QgX0dzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yCit7CisgIEdzdEFsbG9jYXRvciBwYXJlbnRfaW5zdGFuY2U7Cit9OworCit0eXBlZGVmIHN0cnVjdCBfR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3IgR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3I7CisKKy8qIEdUeXBlIGZvciBHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvciAqLworR1R5cGUgZ3N0X2FwcGxlX2NvcmVfdmlkZW9fYWxsb2NhdG9yX2dldF90eXBlICh2b2lkKTsKKyNkZWZpbmUgR1NUX1RZUEVfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1IgICAgICAgICAgICAgKGdzdF9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvcl9nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfSVNfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1Iob2JqKSAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUgKChvYmopLCBHU1RfVFlQRV9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUikpCisjZGVmaW5lIEdTVF9JU19BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUl9DTEFTUyhrbGFzcykgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSAoKGtsYXNzKSwgR1NUX1RZUEVfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1IpKQorI2RlZmluZSBHU1RfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1JfR0VUX0NMQVNTKG9iaikgICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUyAoKG9iaiksIEdTVF9UWVBFX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SLCBHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvckNsYXNzKSkKKyNkZWZpbmUgR1NUX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SKG9iaikgICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUICgob2JqKSwgR1NUX1RZUEVfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1IsIEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yKSkKKyNkZWZpbmUgR1NUX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SX0NMQVNTKGtsYXNzKSAgICAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUICgoa2xhc3MpLCBHU1RfVFlQRV9BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUiwgR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3JDbGFzcykpCisKK0dfREVGSU5FX1RZUEUgKEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yLCBnc3RfYXBwbGVfY29yZV92aWRlb19hbGxvY2F0b3IsCisgICAgR1NUX1RZUEVfQUxMT0NBVE9SKTsKKworLyogTmFtZSBmb3IgYWxsb2NhdG9yIHJlZ2lzdHJhdGlvbiAqLworI2RlZmluZSBHU1RfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1JfTkFNRSAiQXBwbGVDb3JlVmlkZW9NZW1vcnkiCisKKy8qIFNpbmdsZXRvbiBpbnN0YW5jZSBvZiBHc3RBcHBsZUNvcmVWaWRlb0FsbG9jYXRvciAqLworc3RhdGljIEdzdEFwcGxlQ29yZVZpZGVvQWxsb2NhdG9yICpfYXBwbGVfY29yZV92aWRlb19hbGxvY2F0b3I7CisKKy8qKgorICogZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X2luaXQ6CisgKgorICogSW5pdGlhbGl6ZXMgdGhlIENvcmUgVmlkZW8gTWVtb3J5IGFsbG9jYXRvci4gVGhpcyBmdW5jdGlvbiBtdXN0IGJlIGNhbGxlZAorICogYmVmb3JlICNHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSBjYW4gYmUgY3JlYXRlZC4KKyAqCisgKiBJdCBpcyBzYWZlIHRvIGNhbGwgdGhpcyBmdW5jdGlvbiBtdWx0aXBsZSB0aW1lcy4KKyAqLwordm9pZAorZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X2luaXQgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfQVBQTEVfQ09SRV9WSURFT19NRU1PUlksICJjb3JldmlkZW9tZW1vcnkiLAorICAgICAgICAwLCAiQXBwbGUgQ29yZSBWaWRlbyBNZW1vcnkiKTsKKworICAgIF9hcHBsZV9jb3JlX3ZpZGVvX2FsbG9jYXRvciA9CisgICAgICAgIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfQVBQTEVfQ09SRV9WSURFT19BTExPQ0FUT1IsIE5VTEwpOworCisgICAgZ3N0X2FsbG9jYXRvcl9yZWdpc3RlciAoR1NUX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SX05BTUUsCisgICAgICAgIGdzdF9vYmplY3RfcmVmIChfYXBwbGVfY29yZV92aWRlb19hbGxvY2F0b3IpKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCisvKioKKyAqIGdzdF9pc19hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeToKKyAqIEBtZW06ICNHc3RNZW1vcnkKKyAqCisgKiBDaGVja3Mgd2hldGhlciBAbWVtIGlzIGJhY2tlZCBieSBhIENWUGl4ZWxCdWZmZXIuCisgKiBUaGlzIGhhcyBsaW1pdGVkIHVzZSBzaW5jZSAjR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgaXMgdHJhbnNwYXJlbnRseQorICogbWFwcGVkIGludG8gQ1BVIG1lbW9yeSBvbiByZXF1ZXN0LgorICoKKyAqIFJldHVybnM6ICVUUlVFIHdoZW4gQG1lbSBpcyBiYWNrZWQgYnkgYSBDVlBpeGVsQnVmZmVyCisgKi8KK2dib29sZWFuCitnc3RfaXNfYXBwbGVfY29yZV92aWRlb19tZW1vcnkgKEdzdE1lbW9yeSAqIG1lbSkKK3sKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKG1lbSAhPSBOVUxMLCBGQUxTRSk7CisKKyAgcmV0dXJuIEdTVF9JU19BUFBMRV9DT1JFX1ZJREVPX0FMTE9DQVRPUiAobWVtLT5hbGxvY2F0b3IpOworfQorCisvKioKKyAqIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeV9uZXc6CisgKgorICogSGVscGVyIGZ1bmN0aW9uIGZvciBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1fc2hhcmUoKS4KKyAqIFVzZXJzIHNob3VsZCBjYWxsIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeV9uZXdfd3JhcHBlZCgpIGluc3RlYWQuCisgKi8KK3N0YXRpYyBHc3RNZW1vcnkgKgorZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X25ldyAoR3N0TWVtb3J5RmxhZ3MgZmxhZ3MsIEdzdE1lbW9yeSAqIHBhcmVudCwKKyAgICBHc3RBcHBsZUNvcmVWaWRlb1BpeGVsQnVmZmVyICogZ3BpeGJ1ZiwgZ3NpemUgcGxhbmUsIGdzaXplIG1heHNpemUsCisgICAgZ3NpemUgYWxpZ24sIGdzaXplIG9mZnNldCwgZ3NpemUgc2l6ZSkKK3sKKyAgR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgKm1lbTsKKworICBnX3JldHVybl92YWxfaWZfZmFpbCAoZ3BpeGJ1ZiAhPSBOVUxMLCBOVUxMKTsKKworICBtZW0gPSBnX3NsaWNlX25ldzAgKEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5KTsKKyAgZ3N0X21lbW9yeV9pbml0IChHU1RfTUVNT1JZX0NBU1QgKG1lbSksIGZsYWdzLAorICAgICAgR1NUX0FMTE9DQVRPUl9DQVNUIChfYXBwbGVfY29yZV92aWRlb19hbGxvY2F0b3IpLCBwYXJlbnQsIG1heHNpemUsIGFsaWduLAorICAgICAgb2Zmc2V0LCBzaXplKTsKKworICBtZW0tPmdwaXhidWYgPSBnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfcmVmIChncGl4YnVmKTsKKyAgbWVtLT5wbGFuZSA9IHBsYW5lOworCisgIEdTVF9ERUJVRyAoIiVwOiBncGl4YnVmICVwLCBwbGFuZTogJSIgR19HU1NJWkVfRk9STUFUICIsIHNpemUgJSIKKyAgICAgIEdfR1NJWkVfRk9STUFULCBtZW0sIG1lbS0+Z3BpeGJ1ZiwgbWVtLT5wbGFuZSwgbWVtLT5tZW0uc2l6ZSk7CisKKyAgcmV0dXJuIChHc3RNZW1vcnkgKikgbWVtOworfQorCisvKioKKyAqIGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbW9yeV9uZXdfd3JhcHBlZDoKKyAqIEBncGl4YnVmOiB0aGUgYmFja2luZyAjR3N0QXBwbGVDb3JlVmlkZW9QaXhlbEJ1ZmZlcgorICogQHBsYW5lOiB0aGUgcGxhbmUgdGhpcyBtZW1vcnkgd2lsbCByZXByZXNlbnQsIG9yICNHU1RfQVBQTEVfQ09SRV9WSURFT19OT19QTEFORSBmb3Igbm9uLXBsYW5hciBidWZmZXIKKyAqIEBzaXplOiB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIG9yIHNwZWNpZmljIHBsYW5lCisgKgorICogUmV0dXJuczogYSBuZXdseSBhbGxvY2F0ZWQgI0dzdEFwcGxlQ29yZVZpZGVvTWVtb3J5CisgKi8KK0dzdE1lbW9yeSAqCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfbmV3X3dyYXBwZWQgKEdzdEFwcGxlQ29yZVZpZGVvUGl4ZWxCdWZmZXIgKiBncGl4YnVmLAorICAgIGdzaXplIHBsYW5lLCBnc2l6ZSBzaXplKQoreworICByZXR1cm4gZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X25ldyAoMCwgTlVMTCwgZ3BpeGJ1ZiwgcGxhbmUsIHNpemUsIDAsIDAsCisgICAgICBzaXplKTsKK30KKworc3RhdGljIGdwb2ludGVyCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1fbWFwIChHc3RNZW1vcnkgKiBnbWVtLCBnc2l6ZSBtYXhzaXplLAorICAgIEdzdE1hcEZsYWdzIGZsYWdzKQoreworICBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSAqbWVtID0gKEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5ICopIGdtZW07CisgIGdwb2ludGVyIHJldDsKKworICBpZiAoIWdzdF9hcHBsZV9jb3JlX3ZpZGVvX3BpeGVsX2J1ZmZlcl9sb2NrIChtZW0tPmdwaXhidWYsIGZsYWdzKSkKKyAgICByZXR1cm4gTlVMTDsKKworICBpZiAobWVtLT5wbGFuZSAhPSBHU1RfQVBQTEVfQ09SRV9WSURFT19OT19QTEFORSkgeworICAgIHJldCA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzc09mUGxhbmUgKG1lbS0+Z3BpeGJ1Zi0+YnVmLCBtZW0tPnBsYW5lKTsKKworICAgIGlmIChyZXQgIT0gTlVMTCkKKyAgICAgIEdTVF9ERUJVRyAoIiVwOiBwaXhidWYgJXAgcGxhbmUgJSIgR19HU0laRV9GT1JNQVQKKyAgICAgICAgICAiIGZsYWdzICUwOHg6IG1hcHBlZCAlcCIsIG1lbSwgbWVtLT5ncGl4YnVmLT5idWYsIG1lbS0+cGxhbmUsIGZsYWdzLAorICAgICAgICAgIHJldCk7CisgICAgZWxzZQorICAgICAgR1NUX0VSUk9SICgiJXA6IGludmFsaWQgcGxhbmUgYmFzZSBhZGRyZXNzIChOVUxMKSBmb3IgcGl4YnVmICVwIHBsYW5lICUiCisgICAgICAgICAgR19HU0laRV9GT1JNQVQsIG1lbSwgbWVtLT5ncGl4YnVmLT5idWYsIG1lbS0+cGxhbmUpOworICB9IGVsc2UgeworICAgIHJldCA9IENWUGl4ZWxCdWZmZXJHZXRCYXNlQWRkcmVzcyAobWVtLT5ncGl4YnVmLT5idWYpOworCisgICAgaWYgKHJldCAhPSBOVUxMKQorICAgICAgR1NUX0RFQlVHICgiJXA6IHBpeGJ1ZiAlcCBmbGFncyAlMDh4OiBtYXBwZWQgJXAiLCBtZW0sIG1lbS0+Z3BpeGJ1Zi0+YnVmLAorICAgICAgICAgIGZsYWdzLCByZXQpOworICAgIGVsc2UKKyAgICAgIEdTVF9FUlJPUiAoIiVwOiBpbnZhbGlkIGJhc2UgYWRkcmVzcyAoTlVMTCkgZm9yIHBpeGJ1ZiAlcCIKKyAgICAgICAgICBHX0dTSVpFX0ZPUk1BVCwgbWVtLCBtZW0tPmdwaXhidWYtPmJ1Zik7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtX3VubWFwIChHc3RNZW1vcnkgKiBnbWVtKQoreworICBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSAqbWVtID0gKEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5ICopIGdtZW07CisgICh2b2lkKSBnc3RfYXBwbGVfY29yZV92aWRlb19waXhlbF9idWZmZXJfdW5sb2NrIChtZW0tPmdwaXhidWYpOworICBpZiAobWVtLT5wbGFuZSAhPSBHU1RfQVBQTEVfQ09SRV9WSURFT19OT19QTEFORSkKKyAgICBHU1RfREVCVUcgKCIlcDogcGl4YnVmICVwIHBsYW5lICUiIEdfR1NJWkVfRk9STUFULCBtZW0sCisgICAgICAgIG1lbS0+Z3BpeGJ1Zi0+YnVmLCBtZW0tPnBsYW5lKTsKKyAgZWxzZQorICAgIEdTVF9ERUJVRyAoIiVwOiBwaXhidWYgJXAiLCBtZW0sIG1lbS0+Z3BpeGJ1Zi0+YnVmKTsKK30KKworc3RhdGljIEdzdE1lbW9yeSAqCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1fc2hhcmUgKEdzdE1lbW9yeSAqIGdtZW0sIGdzc2l6ZSBvZmZzZXQsIGdzc2l6ZSBzaXplKQoreworICBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSAqbWVtOworICBHc3RNZW1vcnkgKnBhcmVudCwgKnN1YjsKKworICBtZW0gPSAoR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgKikgZ21lbTsKKworICAvKiBmaW5kIHRoZSByZWFsIHBhcmVudCAqLworICBwYXJlbnQgPSBnbWVtLT5wYXJlbnQ7CisgIGlmIChwYXJlbnQgPT0gTlVMTCkKKyAgICBwYXJlbnQgPSBnbWVtOworCisgIGlmIChzaXplID09IC0xKQorICAgIHNpemUgPSBnbWVtLT5zaXplIC0gb2Zmc2V0OworCisgIC8qIHRoZSBzaGFyZWQgbWVtb3J5IGlzIGFsd2F5cyByZWFkb25seSAqLworICBzdWIgPQorICAgICAgZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtb3J5X25ldyAoR1NUX01JTklfT0JKRUNUX0ZMQUdTIChwYXJlbnQpIHwKKyAgICAgIEdTVF9NSU5JX09CSkVDVF9GTEFHX0xPQ0tfUkVBRE9OTFksIHBhcmVudCwgbWVtLT5ncGl4YnVmLCBtZW0tPnBsYW5lLAorICAgICAgZ21lbS0+bWF4c2l6ZSwgZ21lbS0+YWxpZ24sIGdtZW0tPm9mZnNldCArIG9mZnNldCwgc2l6ZSk7CisKKyAgcmV0dXJuIHN1YjsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1faXNfc3BhbiAoR3N0TWVtb3J5ICogbWVtMSwgR3N0TWVtb3J5ICogbWVtMiwKKyAgICBnc2l6ZSAqIG9mZnNldCkKK3sKKyAgLyogV2UgbWF5IG9ubHkgcmV0dXJuIEZBTFNFIHNpbmNlOgorICAgKiAxKSBDb3JlIFZpZGVvIGdpdmVzIG5vIGd1YXJhbnRlZXMgYWJvdXQgcGxhbmVzIGJlaW5nIGNvbnNlY3V0aXZlLgorICAgKiAgICBXZSBtYXkgb25seSBrbm93IHRoaXMgYWZ0ZXIgbWFwcGluZy4KKyAgICogMikgR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnkgaW5zdGFuY2VzIGZvciBwbGFuZXMgZG8gbm90IHNoYXJlIGEgY29tbW9uCisgICAqICAgIHBhcmVudCAtLSBpLmUuIHRoZXkncmUgbm90IG9mZnNldHMgaW50byB0aGUgc2FtZSBwYXJlbnQKKyAgICogICAgbWVtb3J5IGluc3RhbmNlLgorICAgKgorICAgKiBJdCdzIG5vdCB1bmxpa2VseSB0aGF0IHBsYW5lcyB3aWxsIGJlIHN0b3JlZCBpbiBjb25zZWN1dGl2ZSBtZW1vcnkKKyAgICogYnV0IGl0IHNob3VsZCBiZSBjaGVja2VkIGJ5IHRoZSB1c2VyIGFmdGVyIG1hcHBpbmcuCisgICAqLworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYXBwbGVfY29yZV92aWRlb19tZW1fZnJlZSAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBHc3RNZW1vcnkgKiBnbWVtKQoreworICBHc3RBcHBsZUNvcmVWaWRlb01lbW9yeSAqbWVtID0gKEdzdEFwcGxlQ29yZVZpZGVvTWVtb3J5ICopIGdtZW07CisKKyAgZ3N0X2FwcGxlX2NvcmVfdmlkZW9fcGl4ZWxfYnVmZmVyX3VucmVmIChtZW0tPmdwaXhidWYpOworCisgIGdfc2xpY2VfZnJlZSAoR3N0QXBwbGVDb3JlVmlkZW9NZW1vcnksIG1lbSk7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYXBwbGVfY29yZV92aWRlb19hbGxvY2F0b3JfY2xhc3NfaW5pdCAoR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3JDbGFzcyAqCisgICAga2xhc3MpCit7CisgIEdzdEFsbG9jYXRvckNsYXNzICphbGxvY2F0b3JfY2xhc3M7CisKKyAgYWxsb2NhdG9yX2NsYXNzID0gKEdzdEFsbG9jYXRvckNsYXNzICopIGtsYXNzOworCisgIC8qIHdlIGRvbid0IGRvIGFsbG9jYXRpb25zLCBvbmx5IHdyYXAgZXhpc3RpbmcgcGl4ZWwgYnVmZmVycyAqLworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gTlVMTDsKKyAgYWxsb2NhdG9yX2NsYXNzLT5mcmVlID0gZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtX2ZyZWU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYXBwbGVfY29yZV92aWRlb19hbGxvY2F0b3JfaW5pdCAoR3N0QXBwbGVDb3JlVmlkZW9BbGxvY2F0b3IgKiBhbGxvY2F0b3IpCit7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CisKKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0FQUExFX0NPUkVfVklERU9fQUxMT0NBVE9SX05BTUU7CisgIGFsbG9jLT5tZW1fbWFwID0gZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtX21hcDsKKyAgYWxsb2MtPm1lbV91bm1hcCA9IGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbV91bm1hcDsKKyAgYWxsb2MtPm1lbV9zaGFyZSA9IGdzdF9hcHBsZV9jb3JlX3ZpZGVvX21lbV9zaGFyZTsKKyAgYWxsb2MtPm1lbV9pc19zcGFuID0gZ3N0X2FwcGxlX2NvcmVfdmlkZW9fbWVtX2lzX3NwYW47CisKKyAgR1NUX09CSkVDVF9GTEFHX1NFVCAoYWxsb2NhdG9yLCBHU1RfQUxMT0NBVE9SX0ZMQUdfQ1VTVE9NX0FMTE9DKTsKK30KZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5tIGIvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YjlhZWIuLjAwMDAwMDAKLS0tIGEvc3lzL2FwcGxlbWVkaWEvY29yZXZpZGVvdGV4dHVyZWNhY2hlLm0KKysrIC9kZXYvbnVsbApAQCAtMSwyNTcgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAxMCBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgPG9sZWF2ckBzb3VuZHJvcC5jb20+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2lmZGVmIEhBVkVfQ09ORklHX0gKLSMgIGluY2x1ZGUgImNvbmZpZy5oIgotI2VuZGlmCi0KLSNpZiAhSEFWRV9JT1MKLSNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KLSNpbmNsdWRlIDxnc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLmg+Ci0jZW5kaWYKLSNpbmNsdWRlICJjb3JldmlkZW90ZXh0dXJlY2FjaGUuaCIKLSNpbmNsdWRlICJjb3JlbWVkaWFidWZmZXIuaCIKLSNpbmNsdWRlICJjb3JldmlkZW9idWZmZXIuaCIKLSNpbmNsdWRlICJ2dHV0aWwuaCIKLQotdHlwZWRlZiBzdHJ1Y3QgX0NvbnRleHRUaHJlYWREYXRhCi17Ci0gIEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqY2FjaGU7Ci0gIEdzdEJ1ZmZlciAqaW5wdXRfYnVmZmVyOwotICBHc3RCdWZmZXIgKm91dHB1dF9idWZmZXI7Ci19IENvbnRleHRUaHJlYWREYXRhOwotCi1Hc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKgotZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9uZXcgKEdzdEdMQ29udGV4dCAqIGN0eCkKLXsKLSAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGN0eCAhPSBOVUxMLCBOVUxMKTsKLQotICBHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKmNhY2hlID0gZ19uZXcwIChHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUsIDEpOwotICBjYWNoZS0+Y3R4ID0gZ3N0X29iamVjdF9yZWYgKGN0eCk7Ci0gIGdzdF92aWRlb19pbmZvX2luaXQgKCZjYWNoZS0+aW5wdXRfaW5mbyk7Ci0gIGNhY2hlLT5jb252ZXJ0ID0gZ3N0X2dsX2NvbG9yX2NvbnZlcnRfbmV3IChjYWNoZS0+Y3R4KTsKLQotI2lmICFIQVZFX0lPUwotICBDR0xQaXhlbEZvcm1hdE9iaiBwaXhlbEZvcm1hdCA9Ci0gICAgICBnc3RfZ2xfY29udGV4dF9jb2NvYV9nZXRfcGl4ZWxfZm9ybWF0IChHU1RfR0xfQ09OVEVYVF9DT0NPQSAoY3R4KSk7Ci0gIENHTENvbnRleHRPYmogcGxhdGZvcm1fY3R4ID0KLSAgICAgIChDR0xDb250ZXh0T2JqKSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfY29udGV4dCAoY3R4KTsKLSAgQ1ZPcGVuR0xUZXh0dXJlQ2FjaGVDcmVhdGUgKGtDRkFsbG9jYXRvckRlZmF1bHQsIE5VTEwsIHBsYXRmb3JtX2N0eCwKLSAgICAgIHBpeGVsRm9ybWF0LCBOVUxMLCAmY2FjaGUtPmNhY2hlKTsKLSNlbHNlCi0gIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2FjaGVfYXR0cnMgPQotICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLAotICAgICAgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOwotICBnc3RfdnR1dGlsX2RpY3Rfc2V0X2kzMiAoY2FjaGVfYXR0cnMsCi0gICAgICBrQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZU1heGltdW1UZXh0dXJlQWdlS2V5LCAwKTsKLSAgQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwgKENGRGljdGlvbmFyeVJlZikgY2FjaGVfYXR0cnMsCi0gICAgICAoQ1ZFQUdMQ29udGV4dCkgZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2NvbnRleHQgKGN0eCksIE5VTEwsICZjYWNoZS0+Y2FjaGUpOwotI2VuZGlmCi0KLSAgcmV0dXJuIGNhY2hlOwotfQotCi12b2lkCi1nc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX2ZyZWUgKEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlKQotewotICBnX3JldHVybl9pZl9mYWlsIChjYWNoZSAhPSBOVUxMKTsKLQotI2lmICFIQVZFX0lPUwotICBDVk9wZW5HTFRleHR1cmVDYWNoZVJlbGVhc2UgKGNhY2hlLT5jYWNoZSk7Ci0jZWxzZQotICBDRlJlbGVhc2UgKGNhY2hlLT5jYWNoZSk7IC8qIGlPUyBoYXMgbm8gIkNWT3BlbkdMRVNUZXh0dXJlQ2FjaGVSZWxlYXNlIiAqLwotI2VuZGlmCi0gIGdzdF9vYmplY3RfdW5yZWYgKGNhY2hlLT5jb252ZXJ0KTsKLSAgZ3N0X29iamVjdF91bnJlZiAoY2FjaGUtPmN0eCk7Ci0gIGdfZnJlZSAoY2FjaGUpOwotfQotCi12b2lkCi1nc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX3NldF9mb3JtYXQgKEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlLAotICAgIEdzdFZpZGVvRm9ybWF0IGluX2Zvcm1hdCwgR3N0Q2FwcyAqIG91dF9jYXBzKQotewotICBHc3RDYXBzICppbl9jYXBzOwotICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzOwotCi0gIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9jYXBzX2lzX2ZpeGVkIChvdXRfY2FwcykpOwotCi0gIG91dF9jYXBzID0gZ3N0X2NhcHNfY29weSAob3V0X2NhcHMpOwotICBmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAob3V0X2NhcHMsIDApOwotICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGZlYXR1cmVzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOwotICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZjYWNoZS0+b3V0cHV0X2luZm8sIG91dF9jYXBzKTsgCi0gIAotICBpbl9jYXBzID0gZ3N0X2NhcHNfY29weSAob3V0X2NhcHMpOwotICBnc3RfY2Fwc19zZXRfc2ltcGxlIChpbl9jYXBzLCAiZm9ybWF0IiwKLSAgICAgICAgICBHX1RZUEVfU1RSSU5HLCBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAoaW5fZm9ybWF0KSwgTlVMTCk7Ci0gIGZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChpbl9jYXBzLCAwKTsKLSAgZ3N0X2NhcHNfZmVhdHVyZXNfYWRkIChmZWF0dXJlcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKLSAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmY2FjaGUtPmlucHV0X2luZm8sIGluX2NhcHMpOwotCi0gIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3NldF9jYXBzIChjYWNoZS0+Y29udmVydCwgaW5fY2Fwcywgb3V0X2NhcHMpOwotCi0gIGdzdF9jYXBzX3VucmVmIChvdXRfY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChpbl9jYXBzKTsKLX0KLQotc3RhdGljIENWUGl4ZWxCdWZmZXJSZWYKLWN2X3BpeGVsX2J1ZmZlcl9mcm9tX2dzdF9idWZmZXIgKEdzdEJ1ZmZlciAqIGJ1ZmZlcikKLXsKLSAgR3N0Q29yZU1lZGlhTWV0YSAqY21fbWV0YSA9Ci0gICAgICAoR3N0Q29yZU1lZGlhTWV0YSAqKSBnc3RfYnVmZmVyX2dldF9tZXRhIChidWZmZXIsCi0gICAgICBnc3RfY29yZV9tZWRpYV9tZXRhX2FwaV9nZXRfdHlwZSAoKSk7Ci0gIEdzdENvcmVWaWRlb01ldGEgKmN2X21ldGEgPQotICAgICAgKEdzdENvcmVWaWRlb01ldGEgKikgZ3N0X2J1ZmZlcl9nZXRfbWV0YSAoYnVmZmVyLAotICAgICAgZ3N0X2NvcmVfdmlkZW9fbWV0YV9hcGlfZ2V0X3R5cGUgKCkpOwotCi0gIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbV9tZXRhIHx8IGN2X21ldGEsIE5VTEwpOwotCi0gIHJldHVybiBjbV9tZXRhID8gY21fbWV0YS0+cGl4ZWxfYnVmIDogY3ZfbWV0YS0+cGl4YnVmOwotfQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWdsX21lbV9mcm9tX2J1ZmZlciAoR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUsCi0gICAgICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgR3N0TWVtb3J5ICoqbWVtMSwgR3N0TWVtb3J5ICoqbWVtMikKLXsKLSAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKLSNpZiAhSEFWRV9JT1MKLSAgQ1ZPcGVuR0xUZXh0dXJlUmVmIHRleHR1cmUgPSBOVUxMOwotI2Vsc2UKLSAgQ1ZPcGVuR0xFU1RleHR1cmVSZWYgdGV4dHVyZSA9IE5VTEw7Ci0jZW5kaWYKLSAgQ1ZQaXhlbEJ1ZmZlclJlZiBwaXhlbF9idWYgPSBjdl9waXhlbF9idWZmZXJfZnJvbV9nc3RfYnVmZmVyIChidWZmZXIpOwotCi0gICptZW0xID0gTlVMTDsKLSAgKm1lbTIgPSBOVUxMOwotCi0jaWYgIUhBVkVfSU9TCi0gIENWT3BlbkdMVGV4dHVyZUNhY2hlRmx1c2ggKGNhY2hlLT5jYWNoZSwgMCk7Ci0jZWxzZQotICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlRmx1c2ggKGNhY2hlLT5jYWNoZSwgMCk7Ci0jZW5kaWYKLQotICBzd2l0Y2ggKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoJmNhY2hlLT5pbnB1dF9pbmZvKSkgewotI2lmICFIQVZFX0lPUwotICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1VZVlk6Ci0gICAgICAgIC8qIGJvdGggYXZmdmlkZW9zcmMgYW5kIHZ0ZGVjIG9uIE9TWCB3aGVuIGRvaW5nIEdMTWVtb3J5IG5lZ290aWF0ZSBVWVZZCi0gICAgICAgICAqIHVuZGVyIHRoZSBob29kLCB3aGljaCBtZWFucyBhIHNpbmdsZSBvdXRwdXQgdGV4dHVyZS4gKi8KLSAgICAgICAgaWYgKENWT3BlbkdMVGV4dHVyZUNhY2hlQ3JlYXRlVGV4dHVyZUZyb21JbWFnZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwKLSAgICAgICAgICAgICAgY2FjaGUtPmNhY2hlLCBwaXhlbF9idWYsIE5VTEwsICZ0ZXh0dXJlKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQotICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgKm1lbTEgPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlIChjYWNoZS0+Y3R4LAotICAgICAgICAgICAgQ1ZPcGVuR0xUZXh0dXJlR2V0TmFtZSAodGV4dHVyZSksIENWT3BlbkdMVGV4dHVyZUdldFRhcmdldCAodGV4dHVyZSksCi0gICAgICAgICAgICAmY2FjaGUtPmlucHV0X2luZm8sIDAsIE5VTEwsIHRleHR1cmUsIChHRGVzdHJveU5vdGlmeSkgQ0ZSZWxlYXNlKTsKLSAgICAgICAgYnJlYWs7Ci0jZWxzZQotICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUkE6Ci0gICAgICAgIC8qIGF2ZnZpZGVvc3JjIGRvZXMgQkdSQSBvbiBpT1Mgd2hlbiBkb2luZyBHTE1lbW9yeSAqLwotICAgICAgICBpZiAoQ1ZPcGVuR0xFU1RleHR1cmVDYWNoZUNyZWF0ZVRleHR1cmVGcm9tSW1hZ2UgKGtDRkFsbG9jYXRvckRlZmF1bHQsCi0gICAgICAgICAgICAgIGNhY2hlLT5jYWNoZSwgcGl4ZWxfYnVmLCBOVUxMLCBHTF9URVhUVVJFXzJELCBHTF9SR0JBLAotICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmNhY2hlLT5pbnB1dF9pbmZvKSwKLSAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmY2FjaGUtPmlucHV0X2luZm8pLAotICAgICAgICAgICAgICBHTF9SR0JBLCBHTF9VTlNJR05FRF9CWVRFLCAwLCAmdGV4dHVyZSkgIT0ga0NWUmV0dXJuU3VjY2VzcykKLSAgICAgICAgICBnb3RvIGVycm9yOwotCi0gICAgICAgICptZW0xID0gKEdzdE1lbW9yeSAqKSBnc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZSAoY2FjaGUtPmN0eCwKLSAgICAgICAgICAgIENWT3BlbkdMRVNUZXh0dXJlR2V0TmFtZSAodGV4dHVyZSksIENWT3BlbkdMRVNUZXh0dXJlR2V0VGFyZ2V0ICh0ZXh0dXJlKSwKLSAgICAgICAgICAgICZjYWNoZS0+aW5wdXRfaW5mbywgMCwgTlVMTCwgdGV4dHVyZSwgKEdEZXN0cm95Tm90aWZ5KSBDRlJlbGVhc2UpOwotICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOiB7Ci0gICAgICAgIEdzdFZpZGVvR0xUZXh0dXJlVHlwZSB0ZXh0eXBlOwotICAgICAgICBHTGVudW0gdGV4Zm10OwotCi0gICAgICAgIHRleHR5cGUgPSBnc3RfZ2xfdGV4dHVyZV90eXBlX2Zyb21fZm9ybWF0IChjYWNoZS0+Y3R4LCBHU1RfVklERU9fRk9STUFUX05WMTIsIDApOwotICAgICAgICB0ZXhmbXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlICh0ZXh0eXBlKTsKLQotICAgICAgICAvKiB2dGRlYyBkb2VzIE5WMTIgb24gaU9TIHdoZW4gZG9pbmcgR0xNZW1vcnkgKi8KLSAgICAgICAgaWYgKENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAotICAgICAgICAgICAgICBjYWNoZS0+Y2FjaGUsIHBpeGVsX2J1ZiwgTlVMTCwgR0xfVEVYVFVSRV8yRCwgdGV4Zm10LAotICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19XSURUSCAoJmNhY2hlLT5pbnB1dF9pbmZvKSwKLSAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmY2FjaGUtPmlucHV0X2luZm8pLAotICAgICAgICAgICAgICB0ZXhmbXQsIEdMX1VOU0lHTkVEX0JZVEUsIDAsICZ0ZXh0dXJlKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQotICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgKm1lbTEgPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlIChjYWNoZS0+Y3R4LAotICAgICAgICAgICAgQ1ZPcGVuR0xFU1RleHR1cmVHZXROYW1lICh0ZXh0dXJlKSwgQ1ZPcGVuR0xFU1RleHR1cmVHZXRUYXJnZXQgKHRleHR1cmUpLAotICAgICAgICAgICAgJmNhY2hlLT5pbnB1dF9pbmZvLCAwLCBOVUxMLCB0ZXh0dXJlLCAoR0Rlc3Ryb3lOb3RpZnkpIENGUmVsZWFzZSk7Ci0KLSAgICAgICAgdGV4dHlwZSA9IGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKGNhY2hlLT5jdHgsIEdTVF9WSURFT19GT1JNQVRfTlYxMiwgMSk7Ci0gICAgICAgIHRleGZtdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKHRleHR5cGUpOwotCi0gICAgICAgIGlmIChDVk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlVGV4dHVyZUZyb21JbWFnZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwKLSAgICAgICAgICAgICAgY2FjaGUtPmNhY2hlLCBwaXhlbF9idWYsIE5VTEwsIEdMX1RFWFRVUkVfMkQsIHRleGZtdCwKLSAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZjYWNoZS0+aW5wdXRfaW5mbykgLyAyLAotICAgICAgICAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKCZjYWNoZS0+aW5wdXRfaW5mbykgLyAyLAotICAgICAgICAgICAgICB0ZXhmbXQsIEdMX1VOU0lHTkVEX0JZVEUsIDEsICZ0ZXh0dXJlKSAhPSBrQ1ZSZXR1cm5TdWNjZXNzKQotICAgICAgICAgIGdvdG8gZXJyb3I7Ci0KLSAgICAgICAgKm1lbTIgPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZF90ZXh0dXJlIChjYWNoZS0+Y3R4LAotICAgICAgICAgICAgQ1ZPcGVuR0xFU1RleHR1cmVHZXROYW1lICh0ZXh0dXJlKSwgQ1ZPcGVuR0xFU1RleHR1cmVHZXRUYXJnZXQgKHRleHR1cmUpLAotICAgICAgICAgICAgJmNhY2hlLT5pbnB1dF9pbmZvLCAwLCBOVUxMLCB0ZXh0dXJlLCAoR0Rlc3Ryb3lOb3RpZnkpIENGUmVsZWFzZSk7Ci0gICAgICAgIGJyZWFrOwotICAgICAgfQotI2VuZGlmCi0gICAgICBkZWZhdWx0OgotICAgICAgICBnX3dhcm5faWZfcmVhY2hlZCAoKTsKLSAgICAgICAgcmV0ID0gRkFMU0U7Ci0gICAgfQotCi0gIHJldHVybiByZXQ7Ci0KLWVycm9yOgotICByZXQgPSBGQUxTRTsKLQotICBpZiAoKm1lbTEpCi0gICAgICBnc3RfbWVtb3J5X3VucmVmICgqbWVtMSk7Ci0gIGlmICgqbWVtMikKLSAgICAgIGdzdF9tZW1vcnlfdW5yZWYgKCptZW0yKTsKLQotICByZXR1cm4gcmV0OwotfQotCi1zdGF0aWMgdm9pZAotX2RvX2dldF9nbF9idWZmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIENvbnRleHRUaHJlYWREYXRhICogZGF0YSkKLXsKLSAgR3N0TWVtb3J5ICptZW0xID0gTlVMTCwgKm1lbTIgPSBOVUxMOwotICBHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKmNhY2hlID0gZGF0YS0+Y2FjaGU7Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyID0gZGF0YS0+aW5wdXRfYnVmZmVyOwotCi0gIGlmICghZ2xfbWVtX2Zyb21fYnVmZmVyIChjYWNoZSwgYnVmZmVyLCAmbWVtMSwgJm1lbTIpKSB7Ci0gICAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKLSAgICBkYXRhLT5vdXRwdXRfYnVmZmVyID0gTlVMTDsKLSAgICByZXR1cm47Ci0gIH0KLQotICBnc3RfYnVmZmVyX2FwcGVuZF9tZW1vcnkgKGJ1ZmZlciwgbWVtMSk7Ci0gIGlmIChtZW0yKQotICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmZmVyLCBtZW0yKTsKLQotICBkYXRhLT5vdXRwdXRfYnVmZmVyID0gZ3N0X2dsX2NvbG9yX2NvbnZlcnRfcGVyZm9ybSAoY2FjaGUtPmNvbnZlcnQsIGJ1ZmZlcik7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7Ci19Ci0KLUdzdEJ1ZmZlciAqCi1nc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlLAotICAgICAgICBHc3RCdWZmZXIgKiBjdl9idWZmZXIpCi17Ci0gIENvbnRleHRUaHJlYWREYXRhIGRhdGEgPSB7Y2FjaGUsIGN2X2J1ZmZlciwgTlVMTH07Ci0gIGdzdF9nbF9jb250ZXh0X3RocmVhZF9hZGQgKGNhY2hlLT5jdHgsCi0gICAgICAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX2RvX2dldF9nbF9idWZmZXIsICZkYXRhKTsKLSAgcmV0dXJuIGRhdGEub3V0cHV0X2J1ZmZlcjsKLX0KZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL2dsY29udGV4dGhlbHBlci5jIGIvc3lzL2FwcGxlbWVkaWEvZ2xjb250ZXh0aGVscGVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGU2ZjYxNwotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9hcHBsZW1lZGlhL2dsY29udGV4dGhlbHBlci5jCkBAIC0wLDAgKzEsMTMyIEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBBbGVzc2FuZHJvIERlY2luYSA8YWxlc3NhbmRyby5kQGdtYWlsLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSAiZ2xjb250ZXh0aGVscGVyLmgiCisKK3N0YXRpYyBHc3RHTENvbnRleHQgKgorX2ZpbmRfbG9jYWxfZ2xfY29udGV4dCAoR3N0R0xDb250ZXh0SGVscGVyICogY3R4aCkKK3sKKyAgR3N0UXVlcnkgKnF1ZXJ5OworICBHc3RDb250ZXh0ICpjb250ZXh0OworICBHc3RHTENvbnRleHQgKmdsX2NvbnRleHQgPSBOVUxMOworICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnM7CisKKyAgZ19yZXR1cm5fdmFsX2lmX2ZhaWwgKGN0eGggIT0gTlVMTCwgRkFMU0UpOworCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19jb250ZXh0ICgiZ3N0LmdsLmxvY2FsX2NvbnRleHQiKTsKKyAgaWYgKGdzdF9nbF9ydW5fcXVlcnkgKGN0eGgtPmVsZW1lbnQsIHF1ZXJ5LCBHU1RfUEFEX1NSQykpIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjb250ZXh0KTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQgKHMsICJjb250ZXh0IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgJmdsX2NvbnRleHQsIE5VTEwpOworICAgIH0KKyAgfQorICBpZiAoIWdsX2NvbnRleHQgJiYgZ3N0X2dsX3J1bl9xdWVyeSAoY3R4aC0+ZWxlbWVudCwgcXVlcnksIEdTVF9QQURfU0lOSykpIHsKKyAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjb250ZXh0KTsKKyAgICBpZiAoY29udGV4dCkgeworICAgICAgcyA9IGdzdF9jb250ZXh0X2dldF9zdHJ1Y3R1cmUgKGNvbnRleHQpOworICAgICAgZ3N0X3N0cnVjdHVyZV9nZXQgKHMsICJjb250ZXh0IiwgR1NUX0dMX1RZUEVfQ09OVEVYVCwgJmdsX2NvbnRleHQsIE5VTEwpOworICAgIH0KKyAgfQorCisgIEdTVF9ERUJVR19PQkpFQ1QgKGN0eGgtPmVsZW1lbnQsICJmb3VuZCBsb2NhbCBjb250ZXh0ICVwIiwgZ2xfY29udGV4dCk7CisKKyAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisKKyAgcmV0dXJuIGdsX2NvbnRleHQ7Cit9CisKK0dzdEdMQ29udGV4dEhlbHBlciAqCitnc3RfZ2xfY29udGV4dF9oZWxwZXJfbmV3IChHc3RFbGVtZW50ICogZWxlbWVudCkKK3sKKyAgR3N0R0xDb250ZXh0SGVscGVyICpjdHhoID0gZ19uZXcwIChHc3RHTENvbnRleHRIZWxwZXIsIDEpOworICBjdHhoLT5lbGVtZW50ID0gZ3N0X29iamVjdF9yZWYgKGVsZW1lbnQpOworCisgIHJldHVybiBjdHhoOworfQorCit2b2lkCitnc3RfZ2xfY29udGV4dF9oZWxwZXJfZnJlZSAoR3N0R0xDb250ZXh0SGVscGVyICogY3R4aCkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoY3R4aCAhPSBOVUxMKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChjdHhoLT5lbGVtZW50KTsKKworICBpZiAoY3R4aC0+ZGlzcGxheSkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChjdHhoLT5kaXNwbGF5KTsKKworICBpZiAoY3R4aC0+Y29udGV4dCkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChjdHhoLT5jb250ZXh0KTsKKworICBpZiAoY3R4aC0+b3RoZXJfY29udGV4dCkKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChjdHhoLT5vdGhlcl9jb250ZXh0KTsKKworICBnX2ZyZWUgKGN0eGgpOworfQorCit2b2lkCitnc3RfZ2xfY29udGV4dF9oZWxwZXJfZW5zdXJlX2NvbnRleHQgKEdzdEdMQ29udGV4dEhlbHBlciAqIGN0eGgpCit7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworICBHc3RHTENvbnRleHQgKmNvbnRleHQ7CisKKyAgZ19yZXR1cm5faWZfZmFpbCAoY3R4aCAhPSBOVUxMKTsKKworICBpZiAoIWN0eGgtPmRpc3BsYXkpCisgICAgZ3N0X2dsX2Vuc3VyZV9lbGVtZW50X2RhdGEgKGN0eGgtPmVsZW1lbnQsICZjdHhoLT5kaXNwbGF5LAorICAgICAgICAmY3R4aC0+b3RoZXJfY29udGV4dCk7CisKKyAgY29udGV4dCA9IF9maW5kX2xvY2FsX2dsX2NvbnRleHQgKGN0eGgpOworICBpZiAoY29udGV4dCkgeworICAgIEdTVF9JTkZPX09CSkVDVCAoY3R4aC0+ZWxlbWVudCwgImZvdW5kIGxvY2FsIGNvbnRleHQgJXAsIG9sZCBjb250ZXh0ICVwIiwKKyAgICAgICAgY29udGV4dCwgY3R4aC0+Y29udGV4dCk7CisgICAgaWYgKGN0eGgtPmNvbnRleHQpCisgICAgICBnc3Rfb2JqZWN0X3VucmVmIChjdHhoLT5jb250ZXh0KTsKKyAgICBjdHhoLT5jb250ZXh0ID0gY29udGV4dDsKKyAgfQorCisgIGlmICghY3R4aC0+Y29udGV4dCkgeworICAgIEdTVF9PQkpFQ1RfTE9DSyAoY3R4aC0+ZGlzcGxheSk7CisgICAgZG8geworICAgICAgaWYgKGN0eGgtPmNvbnRleHQpCisgICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGN0eGgtPmNvbnRleHQpOworICAgICAgY3R4aC0+Y29udGV4dCA9CisgICAgICAgICAgZ3N0X2dsX2Rpc3BsYXlfZ2V0X2dsX2NvbnRleHRfZm9yX3RocmVhZCAoY3R4aC0+ZGlzcGxheSwgTlVMTCk7CisgICAgICBpZiAoIWN0eGgtPmNvbnRleHQpIHsKKyAgICAgICAgaWYgKCFnc3RfZ2xfZGlzcGxheV9jcmVhdGVfY29udGV4dCAoY3R4aC0+ZGlzcGxheSwKKyAgICAgICAgICAgICAgICBjdHhoLT5vdGhlcl9jb250ZXh0LCAmY3R4aC0+Y29udGV4dCwgJmVycm9yKSkgeworICAgICAgICAgIEdTVF9PQkpFQ1RfVU5MT0NLIChjdHhoLT5kaXNwbGF5KTsKKyAgICAgICAgICBnb3RvIGNvbnRleHRfZXJyb3I7CisgICAgICAgIH0KKyAgICAgIH0KKyAgICB9IHdoaWxlICghZ3N0X2dsX2Rpc3BsYXlfYWRkX2NvbnRleHQgKGN0eGgtPmRpc3BsYXksIGN0eGgtPmNvbnRleHQpKTsKKyAgICBHU1RfT0JKRUNUX1VOTE9DSyAoY3R4aC0+ZGlzcGxheSk7CisgIH0KKworICByZXR1cm47CisKK2NvbnRleHRfZXJyb3I6CisgIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoY3R4aC0+ZWxlbWVudCwgUkVTT1VSQ0UsIE5PVF9GT1VORCwgKCIlcyIsCisgICAgICAgICAgICBlcnJvci0+bWVzc2FnZSksIChOVUxMKSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKworICAgIHJldHVybjsKKyAgfQorfQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvZ2xjb250ZXh0aGVscGVyLmggYi9zeXMvYXBwbGVtZWRpYS9nbGNvbnRleHRoZWxwZXIuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTA0M2YxCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FwcGxlbWVkaWEvZ2xjb250ZXh0aGVscGVyLmgKQEAgLTAsMCArMSwzOSBAQAorLyogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfR1NUX0dMX0NPTlRFWFRfSEVMUEVSX0hfCisjZGVmaW5lIF9HU1RfR0xfQ09OVEVYVF9IRUxQRVJfSF8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEdMQ29udGV4dEhlbHBlcgoreworICBHc3RFbGVtZW50ICplbGVtZW50OworICBHc3RHTERpc3BsYXkgKmRpc3BsYXk7CisgIEdzdEdMQ29udGV4dCAqY29udGV4dDsKKyAgR3N0R0xDb250ZXh0ICpvdGhlcl9jb250ZXh0OworfSBHc3RHTENvbnRleHRIZWxwZXI7CisKK0dzdEdMQ29udGV4dEhlbHBlciAqIGdzdF9nbF9jb250ZXh0X2hlbHBlcl9uZXcgKEdzdEVsZW1lbnQgKmVsZW1lbnQpOwordm9pZCBnc3RfZ2xfY29udGV4dF9oZWxwZXJfZnJlZSAoR3N0R0xDb250ZXh0SGVscGVyICpjdHhoKTsKK3ZvaWQgZ3N0X2dsX2NvbnRleHRfaGVscGVyX2Vuc3VyZV9jb250ZXh0IChHc3RHTENvbnRleHRIZWxwZXIgKmN0eGgpOworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvaW9zYXNzZXRzcmMubSBiL3N5cy9hcHBsZW1lZGlhL2lvc2Fzc2V0c3JjLm0KaW5kZXggOWNmNzQ5OC4uMDUzOTM0MCAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvaW9zYXNzZXRzcmMubQorKysgYi9zeXMvYXBwbGVtZWRpYS9pb3Nhc3NldHNyYy5tCkBAIC0yOSw3ICsyOSw3IEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBsYXVuY2ggbGluZTwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBpb3Nhc3NldHNyYyB1cmk9YXNzZXRzLWxpYnJhcnk6Ly9hc3NldC9hc3NldC5NNFY/aWQ9MTEmZXh0PU00ViAhIGRlY29kZWJpbiAhIGF1dG9hdWRpb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGlvc2Fzc2V0c3JjIHVyaT1hc3NldHMtbGlicmFyeTovL2Fzc2V0L2Fzc2V0Lk00Vj9pZD0xMSZleHQ9TTRWICEgZGVjb2RlYmluICEgYXV0b2F1ZGlvc2luawogICogXXwgUGxheXMgYXNzZXQgd2l0aCBpZCBhIHNvbmcub2dnIGZyb20gbG9jYWwgZGlyLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5LmMgYi9zeXMvYXBwbGVtZWRpYS9pb3N1cmZhY2VtZW1vcnkuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTQyMDJjCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FwcGxlbWVkaWEvaW9zdXJmYWNlbWVtb3J5LmMKQEAgLTAsMCArMSwyNDEgQEAKKy8qCisgKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNSBBbGVzc2FuZHJvIERlY2luYSA8dHdpQGNlbnRyaWN1bGFyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlICJpb3N1cmZhY2VtZW1vcnkuaCIKKworR1NUX0RFQlVHX0NBVEVHT1JZX1NUQVRJQyAoR1NUX0NBVF9JT19TVVJGQUNFX01FTU9SWSk7CisjZGVmaW5lIEdTVF9DQVRfREVGQVVMVCBHU1RfQ0FUX0lPX1NVUkZBQ0VfTUVNT1JZCisKK0dfREVGSU5FX1RZUEUgKEdzdElPU3VyZmFjZU1lbW9yeUFsbG9jYXRvciwgZ3N0X2lvX3N1cmZhY2VfbWVtb3J5X2FsbG9jYXRvciwKKyAgICBHU1RfVFlQRV9HTF9NRU1PUllfQUxMT0NBVE9SKTsKKworc3RhdGljIHZvaWQgX2lvX3N1cmZhY2VfbWVtb3J5X3NldF9zdXJmYWNlIChHc3RJT1N1cmZhY2VNZW1vcnkgKiBtZW1vcnksCisgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UpOworCitzdGF0aWMgR3N0QWxsb2NhdG9yICpfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yOworCitzdGF0aWMgZ2Jvb2xlYW4KK19pb19zdXJmYWNlX21lbW9yeV9jcmVhdGUgKEdzdEdMQmFzZU1lbW9yeSAqIGJtZW0sIEdFcnJvciAqKiBlcnJvcikKK3sKKyAgR3N0R0xNZW1vcnkgKmdsX21lbSA9IChHc3RHTE1lbW9yeSAqKSBibWVtOworICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBnbF9tZW0tPm1lbS5jb250ZXh0OworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKyAgR0x1aW50IHRhcmdldDsKKworICB0YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfdG9fZ2wgKGdsX21lbS0+dGV4X3RhcmdldCk7CisgIGdsLT5HZW5UZXh0dXJlcyAoMSwgJmdsX21lbS0+dGV4X2lkKTsKKyAgZ2wtPkJpbmRUZXh0dXJlICh0YXJnZXQsIGdsX21lbS0+dGV4X2lkKTsKKyAgZ2wtPkJpbmRUZXh0dXJlICh0YXJnZXQsIDApOworCisgIEdTVF9MT0cgKCJnZW5lcmF0ZWQgdGV4dHVyZSBpZDolZCIsIGdsX21lbS0+dGV4X2lkKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK19pb19zdXJmYWNlX21lbW9yeV9kZXN0cm95IChHc3RHTEJhc2VNZW1vcnkgKiBnbF9tZW0pCit7CisgIEdTVF9HTF9CQVNFX01FTU9SWV9BTExPQ0FUT1JfQ0xBU1MKKyAgICAgIChnc3RfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yX3BhcmVudF9jbGFzcyktPmRlc3Ryb3kgKGdsX21lbSk7CisgIF9pb19zdXJmYWNlX21lbW9yeV9zZXRfc3VyZmFjZSAoKEdzdElPU3VyZmFjZU1lbW9yeSAqKSBnbF9tZW0sIE5VTEwpOworfQorCitzdGF0aWMgZ3BvaW50ZXIKK19pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3JfbWFwIChHc3RHTEJhc2VNZW1vcnkgKiBibWVtLAorICAgIEdzdE1hcEluZm8gKiBpbmZvLCBnc2l6ZSBzaXplKQoreworICBHc3RHTE1lbW9yeSAqZ2xfbWVtID0gKEdzdEdMTWVtb3J5ICopIGJtZW07CisgIEdzdElPU3VyZmFjZU1lbW9yeSAqbWVtID0gKEdzdElPU3VyZmFjZU1lbW9yeSAqKSBnbF9tZW07CisKKyAgR1NUX0xPRyAoIm1hcHBpbmcgc3VyZmFjZSAlcCBmbGFncyAlZCBnbD8gJWQiLAorICAgICAgbWVtLT5zdXJmYWNlLCBpbmZvLT5mbGFncywgKChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpICE9IDApKTsKKworICBpZiAoaW5mby0+ZmxhZ3MgJiBHU1RfTUFQX0dMKSB7CisgICAgcmV0dXJuICZnbF9tZW0tPnRleF9pZDsKKyAgfSBlbHNlIGlmICghKGluZm8tPmZsYWdzICYgR1NUX01BUF9XUklURSkpIHsKKyAgICBJT1N1cmZhY2VMb2NrIChtZW0tPnN1cmZhY2UsIGtJT1N1cmZhY2VMb2NrUmVhZE9ubHksIE5VTEwpOworICAgIHJldHVybiBJT1N1cmZhY2VHZXRCYXNlQWRkcmVzc09mUGxhbmUgKG1lbS0+c3VyZmFjZSwgZ2xfbWVtLT5wbGFuZSk7CisgIH0gZWxzZSB7CisgICAgR1NUX0VSUk9SICgiY291bGRuJ3QgbWFwIElPU3VyZmFjZSAlcCBmbGFncyAlZCIsIG1lbS0+c3VyZmFjZSwgaW5mby0+ZmxhZ3MpOworICAgIHJldHVybiBOVUxMOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yX3VubWFwIChHc3RHTEJhc2VNZW1vcnkgKiBibWVtLCBHc3RNYXBJbmZvICogaW5mbykKK3sKKyAgR3N0R0xNZW1vcnkgKmdsX21lbSA9IChHc3RHTE1lbW9yeSAqKSBibWVtOworICBHc3RJT1N1cmZhY2VNZW1vcnkgKm1lbSA9IChHc3RJT1N1cmZhY2VNZW1vcnkgKikgZ2xfbWVtOworCisgIEdTVF9MT0cgKCJ1bm1hcHBpbmcgc3VyZmFjZSAlcCBmbGFncyAlZCBnbD8gJWQiLAorICAgICAgbWVtLT5zdXJmYWNlLCBpbmZvLT5mbGFncywgKChpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpICE9IDApKTsKKworICBpZiAoIShpbmZvLT5mbGFncyAmIEdTVF9NQVBfR0wpKSB7CisgICAgSU9TdXJmYWNlVW5sb2NrIChtZW0tPnN1cmZhY2UsIGtJT1N1cmZhY2VMb2NrUmVhZE9ubHksIE5VTEwpOworICB9Cit9CisKK3N0YXRpYyBHc3RNZW1vcnkgKgorX21lbV9hbGxvYyAoR3N0QWxsb2NhdG9yICogYWxsb2NhdG9yLCBnc2l6ZSBzaXplLCBHc3RBbGxvY2F0aW9uUGFyYW1zICogcGFyYW1zKQoreworICBnX3dhcm5pbmcgKCJ1c2UgZ3N0X2lvX3N1cmZhY2VfbWVtb3J5X3dyYXBwZWQgKCkgdG8gYWxsb2NhdGUgZnJvbSB0aGlzICIKKyAgICAgICJJT1N1cmZhY2UgYWxsb2NhdG9yIik7CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yX2NsYXNzX2luaXQgKEdzdElPU3VyZmFjZU1lbW9yeUFsbG9jYXRvckNsYXNzICoKKyAgICBrbGFzcykKK3sKKyAgR3N0QWxsb2NhdG9yQ2xhc3MgKmFsbG9jYXRvcl9jbGFzcyA9IChHc3RBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yQ2xhc3MgKmdsX2Jhc2VfYWxsb2NhdG9yX2NsYXNzID0KKyAgICAgIChHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3JDbGFzcyAqKSBrbGFzczsKKworICBhbGxvY2F0b3JfY2xhc3MtPmFsbG9jID0gX21lbV9hbGxvYzsKKworICBnbF9iYXNlX2FsbG9jYXRvcl9jbGFzcy0+Y3JlYXRlID0gX2lvX3N1cmZhY2VfbWVtb3J5X2NyZWF0ZTsKKyAgZ2xfYmFzZV9hbGxvY2F0b3JfY2xhc3MtPmRlc3Ryb3kgPSBfaW9fc3VyZmFjZV9tZW1vcnlfZGVzdHJveTsKKyAgZ2xfYmFzZV9hbGxvY2F0b3JfY2xhc3MtPm1hcCA9IF9pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3JfbWFwOworICBnbF9iYXNlX2FsbG9jYXRvcl9jbGFzcy0+dW5tYXAgPSBfaW9fc3VyZmFjZV9tZW1vcnlfYWxsb2NhdG9yX3VubWFwOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2lvX3N1cmZhY2VfbWVtb3J5X2FsbG9jYXRvcl9pbml0IChHc3RJT1N1cmZhY2VNZW1vcnlBbGxvY2F0b3IgKiBhbGxvY2F0b3IpCit7CisgIEdzdEFsbG9jYXRvciAqYWxsb2MgPSBHU1RfQUxMT0NBVE9SX0NBU1QgKGFsbG9jYXRvcik7CisKKyAgYWxsb2MtPm1lbV90eXBlID0gR1NUX0lPX1NVUkZBQ0VfTUVNT1JZX0FMTE9DQVRPUl9OQU1FOworICBHU1RfT0JKRUNUX0ZMQUdfU0VUIChhbGxvY2F0b3IsIEdTVF9BTExPQ0FUT1JfRkxBR19DVVNUT01fQUxMT0MpOworfQorCit2b2lkCitnc3RfaW9zX3N1cmZhY2VfbWVtb3J5X2luaXQgKHZvaWQpCit7CisgIHN0YXRpYyB2b2xhdGlsZSBnc2l6ZSBfaW5pdCA9IDA7CisKKyAgaWYgKGdfb25jZV9pbml0X2VudGVyICgmX2luaXQpKSB7CisgICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKEdTVF9DQVRfSU9fU1VSRkFDRV9NRU1PUlksICJpb3N1cmZhY2UiLCAwLAorICAgICAgICAiSU9TdXJmYWNlIEJ1ZmZlciIpOworCisgICAgX2lvX3N1cmZhY2VfbWVtb3J5X2FsbG9jYXRvciA9CisgICAgICAgIGdfb2JqZWN0X25ldyAoR1NUX1RZUEVfSU9fU1VSRkFDRV9NRU1PUllfQUxMT0NBVE9SLCBOVUxMKTsKKworICAgIGdzdF9hbGxvY2F0b3JfcmVnaXN0ZXIgKEdTVF9JT19TVVJGQUNFX01FTU9SWV9BTExPQ0FUT1JfTkFNRSwKKyAgICAgICAgZ3N0X29iamVjdF9yZWYgKF9pb19zdXJmYWNlX21lbW9yeV9hbGxvY2F0b3IpKTsKKyAgICBnX29uY2VfaW5pdF9sZWF2ZSAoJl9pbml0LCAxKTsKKyAgfQorfQorCitnYm9vbGVhbgorZ3N0X2lzX2lvX3N1cmZhY2VfbWVtb3J5IChHc3RNZW1vcnkgKiBtZW0pCit7CisgIHJldHVybiBtZW0gIT0gTlVMTCAmJiBtZW0tPmFsbG9jYXRvciAhPSBOVUxMICYmCisgICAgICBnX3R5cGVfaXNfYSAoR19PQkpFQ1RfVFlQRSAobWVtLT5hbGxvY2F0b3IpLAorICAgICAgR1NUX1RZUEVfSU9fU1VSRkFDRV9NRU1PUllfQUxMT0NBVE9SKTsKK30KKworc3RhdGljIEdzdElPU3VyZmFjZU1lbW9yeSAqCitfaW9fc3VyZmFjZV9tZW1vcnlfbmV3IChHc3RHTENvbnRleHQgKiBjb250ZXh0LAorICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlLAorICAgIEdzdEdMVGV4dHVyZVRhcmdldCB0YXJnZXQsCisgICAgR3N0VmlkZW9JbmZvICogaW5mbywKKyAgICBndWludCBwbGFuZSwKKyAgICBHc3RWaWRlb0FsaWdubWVudCAqIHZhbGlnbiwgZ3BvaW50ZXIgdXNlcl9kYXRhLCBHRGVzdHJveU5vdGlmeSBub3RpZnkpCit7CisgIEdzdElPU3VyZmFjZU1lbW9yeSAqbWVtOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh0YXJnZXQgPT0gR1NUX0dMX1RFWFRVUkVfVEFSR0VUX1JFQ1RBTkdMRSwgTlVMTCk7CisKKyAgbWVtID0gZ19uZXcwIChHc3RJT1N1cmZhY2VNZW1vcnksIDEpOworICBnc3RfZ2xfbWVtb3J5X2luaXQgKCZtZW0tPmdsX21lbSwgX2lvX3N1cmZhY2VfbWVtb3J5X2FsbG9jYXRvciwgTlVMTCwgY29udGV4dCwKKyAgICAgIHRhcmdldCwgTlVMTCwgaW5mbywgcGxhbmUsIHZhbGlnbiwgdXNlcl9kYXRhLCBub3RpZnkpOworCisgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfTUVNT1JZX0ZMQUdfUkVBRE9OTFkpOworCisgIG1lbS0+c3VyZmFjZSA9IE5VTEw7CisgIF9pb19zdXJmYWNlX21lbW9yeV9zZXRfc3VyZmFjZSAobWVtLCBzdXJmYWNlKTsKKworICByZXR1cm4gbWVtOworfQorCitHc3RJT1N1cmZhY2VNZW1vcnkgKgorZ3N0X2lvX3N1cmZhY2VfbWVtb3J5X3dyYXBwZWQgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsCisgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UsCisgICAgR3N0R0xUZXh0dXJlVGFyZ2V0IHRhcmdldCwKKyAgICBHc3RWaWRlb0luZm8gKiBpbmZvLAorICAgIGd1aW50IHBsYW5lLAorICAgIEdzdFZpZGVvQWxpZ25tZW50ICogdmFsaWduLCBncG9pbnRlciB1c2VyX2RhdGEsIEdEZXN0cm95Tm90aWZ5IG5vdGlmeSkKK3sKKyAgcmV0dXJuIF9pb19zdXJmYWNlX21lbW9yeV9uZXcgKGNvbnRleHQsIHN1cmZhY2UsIHRhcmdldCwgaW5mbywKKyAgICAgIHBsYW5lLCB2YWxpZ24sIHVzZXJfZGF0YSwgbm90aWZ5KTsKK30KKworc3RhdGljIHZvaWQKK19pb19zdXJmYWNlX21lbW9yeV9zZXRfc3VyZmFjZSAoR3N0SU9TdXJmYWNlTWVtb3J5ICogbWVtb3J5LAorICAgIElPU3VyZmFjZVJlZiBzdXJmYWNlKQoreworICBHc3RHTE1lbW9yeSAqZ2xfbWVtID0gKEdzdEdMTWVtb3J5ICopIG1lbW9yeTsKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gKChHc3RHTEJhc2VNZW1vcnkgKikgZ2xfbWVtKS0+Y29udGV4dDsKKyAgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgaWYgKG1lbW9yeS0+c3VyZmFjZSkKKyAgICBJT1N1cmZhY2VEZWNyZW1lbnRVc2VDb3VudCAobWVtb3J5LT5zdXJmYWNlKTsKKyAgbWVtb3J5LT5zdXJmYWNlID0gc3VyZmFjZTsKKyAgaWYgKHN1cmZhY2UpIHsKKyAgICBHTHVpbnQgdGV4X2lkLCB0ZXhfdGFyZ2V0LCB0ZXhpZm10LCB0ZXhmbXQ7CisgICAgZ3VpbnQgcGxhbmU7CisgICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleHR5cGU7CisgICAgQ0dMRXJyb3IgY2dsRXJyb3I7CisKKyAgICBwbGFuZSA9IGdsX21lbS0+cGxhbmU7CisgICAgdGV4X2lkID0gZ2xfbWVtLT50ZXhfaWQ7CisgICAgdGV4X3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF90b19nbCAoZ2xfbWVtLT50ZXhfdGFyZ2V0KTsKKyAgICB0ZXh0eXBlID0gZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAoY29udGV4dCwKKyAgICAgICAgR1NUX1ZJREVPX0lORk9fRk9STUFUICgmZ2xfbWVtLT5pbmZvKSwgcGxhbmUpOworICAgIHRleGlmbXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlICh0ZXh0eXBlKTsKKyAgICB0ZXhmbXQgPQorICAgICAgICBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKGNvbnRleHQsIHRleGlmbXQsCisgICAgICAgIEdMX1VOU0lHTkVEX0JZVEUpOworICAgIGdsLT5CaW5kVGV4dHVyZSAodGV4X3RhcmdldCwgdGV4X2lkKTsKKyAgICBjZ2xFcnJvciA9IENHTFRleEltYWdlSU9TdXJmYWNlMkQgKChDR0xDb250ZXh0T2JqKQorICAgICAgICBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfY29udGV4dCAoY29udGV4dCksIHRleF90YXJnZXQsIHRleGlmbXQsCisgICAgICAgIElPU3VyZmFjZUdldFdpZHRoT2ZQbGFuZSAoc3VyZmFjZSwgcGxhbmUpLAorICAgICAgICBJT1N1cmZhY2VHZXRIZWlnaHRPZlBsYW5lIChzdXJmYWNlLCBwbGFuZSksIHRleGlmbXQsIEdMX1VOU0lHTkVEX0JZVEUsCisgICAgICAgIHN1cmZhY2UsIHBsYW5lKTsKKyAgICBnbC0+QmluZFRleHR1cmUgKHRleF90YXJnZXQsIDApOworICAgIElPU3VyZmFjZUluY3JlbWVudFVzZUNvdW50IChzdXJmYWNlKTsKKyAgICBHU1RfREVCVUcgKCJib3VuZCBzdXJmYWNlICVwIHRvIHRleHR1cmUgJXU6ICVkIiwgc3VyZmFjZSwgdGV4X2lkLCBjZ2xFcnJvcik7CisgIH0KK30KKwordm9pZAorZ3N0X2lvX3N1cmZhY2VfbWVtb3J5X3NldF9zdXJmYWNlIChHc3RJT1N1cmZhY2VNZW1vcnkgKiBtZW1vcnksCisgICAgSU9TdXJmYWNlUmVmIHN1cmZhY2UpCit7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9pc19pb19zdXJmYWNlX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBtZW1vcnkpKTsKKyAgZ19yZXR1cm5faWZfZmFpbCAobWVtb3J5LT5zdXJmYWNlID09IE5VTEwpOworCisgIF9pb19zdXJmYWNlX21lbW9yeV9zZXRfc3VyZmFjZSAobWVtb3J5LCBzdXJmYWNlKTsKK30KZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL3BsdWdpbi5tIGIvc3lzL2FwcGxlbWVkaWEvcGx1Z2luLm0KaW5kZXggYzE3YzM4Yi4uMGZmNGVjMSAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvcGx1Z2luLm0KKysrIGIvc3lzL2FwcGxlbWVkaWEvcGx1Z2luLm0KQEAgLTIyLDYgKzIyLDcgQEAKICNlbmRpZgogCiAjaW5jbHVkZSA8Rm91bmRhdGlvbi9Gb3VuZGF0aW9uLmg+CisjaW5jbHVkZSAiY29yZXZpZGVvbWVtb3J5LmgiCiAjaWZkZWYgSEFWRV9JT1MKICNpbmNsdWRlICJpb3Nhc3NldHNyYy5oIgogI2Vsc2UKQEAgLTYzLDYgKzY0LDggQEAKIHsKICAgZ2Jvb2xlYW4gcmVzID0gVFJVRTsKIAorICBnc3RfYXBwbGVfY29yZV92aWRlb19tZW1vcnlfaW5pdCAoKTsKKwogI2lmZGVmIEhBVkVfSU9TCiAgIHJlcyAmPSBnc3RfZWxlbWVudF9yZWdpc3RlciAocGx1Z2luLCAiaW9zYXNzZXRzcmMiLCBHU1RfUkFOS19TRUNPTkRBUlksCiAgICAgICBHU1RfVFlQRV9JT1NfQVNTRVRfU1JDKTsKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL3F0a2l0dmlkZW9zcmMubSBiL3N5cy9hcHBsZW1lZGlhL3F0a2l0dmlkZW9zcmMubQppbmRleCAyYzE1YmI1Li5lNmI0MjdmIDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9xdGtpdHZpZGVvc3JjLm0KKysrIGIvc3lzL2FwcGxlbWVkaWEvcXRraXR2aWRlb3NyYy5tCkBAIC00MzQsNyArNDM0LDcgQEAKICAgW3F1ZXVlTG9jayB1bmxvY2tXaXRoQ29uZGl0aW9uOgogICAgICAgKFtxdWV1ZSBjb3VudF0gPT0gMCkgPyBOT19GUkFNRVMgOiBIQVNfRlJBTUVfT1JfU1RPUF9SRVFVRVNUXTsKIAotICAqYnVmID0gZ3N0X2NvcmVfdmlkZW9fYnVmZmVyX25ldyAoKENWQnVmZmVyUmVmKWZyYW1lLCBOVUxMLCBUUlVFKTsKKyAgKmJ1ZiA9IGdzdF9jb3JlX3ZpZGVvX2J1ZmZlcl9uZXcgKChDVkJ1ZmZlclJlZilmcmFtZSwgTlVMTCk7CiAgIENWQnVmZmVyUmVsZWFzZSAoZnJhbWUpOwogCiAgIFtzZWxmIHRpbWVzdGFtcEJ1ZmZlcjoqYnVmXTsKZGlmZiAtLWdpdCBhL3N5cy9hcHBsZW1lZGlhL2NvcmV2aWRlb3RleHR1cmVjYWNoZS5oIGIvc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUuaApzaW1pbGFyaXR5IGluZGV4IDY3JQpyZW5hbWUgZnJvbSBzeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUuaApyZW5hbWUgdG8gc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUuaAppbmRleCBkNTNlYzQxLi4wYjQzNTY2IDEwMDY0NAotLS0gYS9zeXMvYXBwbGVtZWRpYS9jb3JldmlkZW90ZXh0dXJlY2FjaGUuaAorKysgYi9zeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5oCkBAIC0yMiwyOSArMjIsMzIgQEAKIAogI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb21ldGEuaD4KICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb250ZXh0Lmg+Ci0jaW5jbHVkZSAiQ29yZVZpZGVvL0NvcmVWaWRlby5oIgorI2luY2x1ZGUgPENvcmVWaWRlby9Db3JlVmlkZW8uaD4KIAogR19CRUdJTl9ERUNMUwogCi10eXBlZGVmIHN0cnVjdCBfR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlCit0eXBlZGVmIHN0cnVjdCBfR3N0VmlkZW9UZXh0dXJlQ2FjaGUKIHsKICAgR3N0R0xDb250ZXh0ICpjdHg7Ci0jaWYgIUhBVkVfSU9TCi0gIENWT3BlbkdMVGV4dHVyZUNhY2hlUmVmIGNhY2hlOwotI2Vsc2UKKyNpZiBIQVZFX0lPUwogICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlUmVmIGNhY2hlOworI2Vsc2UKKyAgR3N0QnVmZmVyUG9vbCAqcG9vbDsKICNlbmRpZgogICBHc3RWaWRlb0luZm8gaW5wdXRfaW5mbzsKICAgR3N0VmlkZW9JbmZvIG91dHB1dF9pbmZvOwotICBHc3RHTENvbG9yQ29udmVydCAqY29udmVydDsKLX0gR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlOwogCi1Hc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKmdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfbmV3IChHc3RHTENvbnRleHQgKiBjdHgpOwotdm9pZCBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX2ZyZWUgKEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlKTsKLXZvaWQgZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9zZXRfZm9ybWF0IChHc3RDb3JlVmlkZW9UZXh0dXJlQ2FjaGUgKiBjYWNoZSwKKyAgZ2Jvb2xlYW4gY29uZmlndXJlZDsKKyAgR3N0Q2FwcyAqaW5fY2FwczsKKyAgR3N0Q2FwcyAqb3V0X2NhcHM7Cit9IEdzdFZpZGVvVGV4dHVyZUNhY2hlOworCitHc3RWaWRlb1RleHR1cmVDYWNoZSAqZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfbmV3IChHc3RHTENvbnRleHQgKiBjdHgpOwordm9pZCBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9mcmVlIChHc3RWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlKTsKK3ZvaWQgZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfc2V0X2Zvcm1hdCAoR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKiBjYWNoZSwKICAgICBHc3RWaWRlb0Zvcm1hdCBpbl9mb3JtYXQsIEdzdENhcHMgKiBvdXRfY2Fwcyk7Ci1nYm9vbGVhbiBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX3VwbG9hZCAoR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhICogbWV0YSwgZ3VpbnQgdGV4dHVyZV9pZFs0XSk7Ci1Hc3RCdWZmZXIgKiBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKEdzdENvcmVWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlLAorZ2Jvb2xlYW4gZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfdXBsb2FkIChHc3RWaWRlb0dMVGV4dHVyZVVwbG9hZE1ldGEgKiBtZXRhLCBndWludCB0ZXh0dXJlX2lkWzRdKTsKK0dzdEJ1ZmZlciAqIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKEdzdFZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUsCiAgICAgICAgIEdzdEJ1ZmZlciAqIGN2X2J1ZmZlcik7CiAKIEdfRU5EX0RFQ0xTCmRpZmYgLS1naXQgYS9zeXMvYXBwbGVtZWRpYS92aWRlb3RleHR1cmVjYWNoZS5tIGIvc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWJkYjY0Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL2FwcGxlbWVkaWEvdmlkZW90ZXh0dXJlY2FjaGUubQpAQCAtMCwwICsxLDI4MSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxMCBPbGUgQW5kcsOpIFZhZGxhIFJhdm7DpXMgPG9sZWF2ckBzb3VuZHJvcC5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgIGluY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpZiAhSEFWRV9JT1MKKyNpbXBvcnQgPEFwcEtpdC9BcHBLaXQuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvY29jb2EvZ3N0Z2xjb250ZXh0X2NvY29hLmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsYnVmZmVycG9vbC5oPgorI2luY2x1ZGUgImlvc3VyZmFjZW1lbW9yeS5oIgorI2VuZGlmCisjaW5jbHVkZSAidmlkZW90ZXh0dXJlY2FjaGUuaCIKKyNpbmNsdWRlICJjb3JlbWVkaWFidWZmZXIuaCIKKyNpbmNsdWRlICJjb3JldmlkZW9idWZmZXIuaCIKKyNpbmNsdWRlICJ2dHV0aWwuaCIKKwordHlwZWRlZiBzdHJ1Y3QgX0NvbnRleHRUaHJlYWREYXRhCit7CisgIEdzdFZpZGVvVGV4dHVyZUNhY2hlICpjYWNoZTsKKyAgR3N0QnVmZmVyICppbnB1dF9idWZmZXI7CisgIEdzdEJ1ZmZlciAqb3V0cHV0X2J1ZmZlcjsKK30gQ29udGV4dFRocmVhZERhdGE7CisKK0dzdFZpZGVvVGV4dHVyZUNhY2hlICoKK2dzdF92aWRlb190ZXh0dXJlX2NhY2hlX25ldyAoR3N0R0xDb250ZXh0ICogY3R4KQoreworICBnX3JldHVybl92YWxfaWZfZmFpbCAoY3R4ICE9IE5VTEwsIE5VTEwpOworCisgIEdzdFZpZGVvVGV4dHVyZUNhY2hlICpjYWNoZSA9IGdfbmV3MCAoR3N0VmlkZW9UZXh0dXJlQ2FjaGUsIDEpOworCisgIGNhY2hlLT5jdHggPSBnc3Rfb2JqZWN0X3JlZiAoY3R4KTsKKyAgZ3N0X3ZpZGVvX2luZm9faW5pdCAoJmNhY2hlLT5pbnB1dF9pbmZvKTsKKworI2lmIEhBVkVfSU9TCisgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgY2FjaGVfYXR0cnMgPQorICAgICAgQ0ZEaWN0aW9uYXJ5Q3JlYXRlTXV0YWJsZSAoTlVMTCwgMCwgJmtDRlR5cGVEaWN0aW9uYXJ5S2V5Q2FsbEJhY2tzLAorICAgICAgJmtDRlR5cGVEaWN0aW9uYXJ5VmFsdWVDYWxsQmFja3MpOworICBDVk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LCAoQ0ZEaWN0aW9uYXJ5UmVmKSBjYWNoZV9hdHRycywKKyAgICAgIChDVkVBR0xDb250ZXh0KSBnc3RfZ2xfY29udGV4dF9nZXRfZ2xfY29udGV4dCAoY3R4KSwgTlVMTCwgJmNhY2hlLT5jYWNoZSk7CisjZWxzZQorICBnc3RfaW9zX3N1cmZhY2VfbWVtb3J5X2luaXQgKCk7CisjaWYgMAorICBjYWNoZS0+cG9vbCA9IEdTVF9CVUZGRVJfUE9PTCAoZ3N0X2dsX2J1ZmZlcl9wb29sX25ldyAoY3R4KSk7CisjZW5kaWYKKyNlbmRpZgorCisgIHJldHVybiBjYWNoZTsKK30KKwordm9pZAorZ3N0X3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAoR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKiBjYWNoZSkKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAoY2FjaGUgIT0gTlVMTCk7CisKKyNpZiBIQVZFX0lPUworICBDRlJlbGVhc2UgKGNhY2hlLT5jYWNoZSk7IC8qIGlPUyBoYXMgbm8gIkNWT3BlbkdMRVNUZXh0dXJlQ2FjaGVSZWxlYXNlIiAqLworI2Vsc2UKKyNpZiAwCisgIGdzdF9idWZmZXJfcG9vbF9zZXRfYWN0aXZlIChjYWNoZS0+cG9vbCwgRkFMU0UpOworICBnc3Rfb2JqZWN0X3VucmVmIChjYWNoZS0+cG9vbCk7CisjZW5kaWYKKyNlbmRpZgorICBnc3Rfb2JqZWN0X3VucmVmIChjYWNoZS0+Y3R4KTsKKyAgaWYgKGNhY2hlLT5pbl9jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChjYWNoZS0+aW5fY2Fwcyk7CisgIGlmIChjYWNoZS0+b3V0X2NhcHMpCisgICAgZ3N0X2NhcHNfdW5yZWYgKGNhY2hlLT5vdXRfY2Fwcyk7CisgIGdfZnJlZSAoY2FjaGUpOworfQorCit2b2lkCitnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9zZXRfZm9ybWF0IChHc3RWaWRlb1RleHR1cmVDYWNoZSAqIGNhY2hlLAorICAgIEdzdFZpZGVvRm9ybWF0IGluX2Zvcm1hdCwgR3N0Q2FwcyAqIG91dF9jYXBzKQoreworICBHc3RDYXBzICppbl9jYXBzOworICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzOworCisgIGdfcmV0dXJuX2lmX2ZhaWwgKGdzdF9jYXBzX2lzX2ZpeGVkIChvdXRfY2FwcykpOworCisgIG91dF9jYXBzID0gZ3N0X2NhcHNfY29weSAob3V0X2NhcHMpOworICBmZWF0dXJlcyA9IGdzdF9jYXBzX2dldF9mZWF0dXJlcyAob3V0X2NhcHMsIDApOworICBnc3RfY2Fwc19mZWF0dXJlc19hZGQgKGZlYXR1cmVzLCBHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlkpOworICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZjYWNoZS0+b3V0cHV0X2luZm8sIG91dF9jYXBzKTsKKworICBpbl9jYXBzID0gZ3N0X2NhcHNfY29weSAob3V0X2NhcHMpOworICBnc3RfY2Fwc19zZXRfc2ltcGxlIChpbl9jYXBzLCAiZm9ybWF0IiwKKyAgICAgICAgICBHX1RZUEVfU1RSSU5HLCBnc3RfdmlkZW9fZm9ybWF0X3RvX3N0cmluZyAoaW5fZm9ybWF0KSwgTlVMTCk7CisgIGZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChpbl9jYXBzLCAwKTsKKyAgZ3N0X2NhcHNfZmVhdHVyZXNfYWRkIChmZWF0dXJlcywgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKKyAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmY2FjaGUtPmlucHV0X2luZm8sIGluX2NhcHMpOworCisgIGlmIChjYWNoZS0+aW5fY2FwcykKKyAgICBnc3RfY2Fwc191bnJlZiAoY2FjaGUtPmluX2NhcHMpOworICBpZiAoY2FjaGUtPm91dF9jYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChjYWNoZS0+b3V0X2NhcHMpOworICBjYWNoZS0+aW5fY2FwcyA9IGluX2NhcHM7CisgIGNhY2hlLT5vdXRfY2FwcyA9IG91dF9jYXBzOworCisjaWYgMAorICBHc3RTdHJ1Y3R1cmUgKmNvbmZpZyA9IGdzdF9idWZmZXJfcG9vbF9nZXRfY29uZmlnIChjYWNoZS0+cG9vbCk7CisgIGdzdF9idWZmZXJfcG9vbF9jb25maWdfc2V0X3BhcmFtcyAoY29uZmlnLCBjYWNoZS0+aW5fY2FwcywKKyAgICAgICAgICBHU1RfVklERU9fSU5GT19TSVpFICgmY2FjaGUtPmlucHV0X2luZm8pLCAwLCAwKTsKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19zZXRfYWxsb2NhdG9yIChjb25maWcsCisgICAgICAgICAgZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfSU9fU1VSRkFDRV9NRU1PUllfQUxMT0NBVE9SX05BTUUpLCBOVUxMKTsKKyAgZ3N0X2J1ZmZlcl9wb29sX2NvbmZpZ19hZGRfb3B0aW9uIChjb25maWcsCisgICAgICAgICAgR1NUX0JVRkZFUl9QT09MX09QVElPTl9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUpOworICBnc3RfYnVmZmVyX3Bvb2xfc2V0X2NvbmZpZyAoY2FjaGUtPnBvb2wsIGNvbmZpZyk7CisgIGdzdF9idWZmZXJfcG9vbF9zZXRfYWN0aXZlIChjYWNoZS0+cG9vbCwgVFJVRSk7CisjZW5kaWYKK30KKworc3RhdGljIENWUGl4ZWxCdWZmZXJSZWYKK2N2X3BpeGVsX2J1ZmZlcl9mcm9tX2dzdF9idWZmZXIgKEdzdEJ1ZmZlciAqIGJ1ZmZlcikKK3sKKyAgR3N0Q29yZU1lZGlhTWV0YSAqY21fbWV0YSA9CisgICAgICAoR3N0Q29yZU1lZGlhTWV0YSAqKSBnc3RfYnVmZmVyX2dldF9tZXRhIChidWZmZXIsCisgICAgICBnc3RfY29yZV9tZWRpYV9tZXRhX2FwaV9nZXRfdHlwZSAoKSk7CisgIEdzdENvcmVWaWRlb01ldGEgKmN2X21ldGEgPQorICAgICAgKEdzdENvcmVWaWRlb01ldGEgKikgZ3N0X2J1ZmZlcl9nZXRfbWV0YSAoYnVmZmVyLAorICAgICAgZ3N0X2NvcmVfdmlkZW9fbWV0YV9hcGlfZ2V0X3R5cGUgKCkpOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChjbV9tZXRhIHx8IGN2X21ldGEsIE5VTEwpOworCisgIHJldHVybiBjbV9tZXRhID8gY21fbWV0YS0+cGl4ZWxfYnVmIDogY3ZfbWV0YS0+cGl4YnVmOworfQorCisjaWYgSEFWRV9JT1MKK3N0YXRpYyB2b2lkCitfZG9fZ2V0X2dsX2J1ZmZlciAoR3N0R0xDb250ZXh0ICogY29udGV4dCwgQ29udGV4dFRocmVhZERhdGEgKiBkYXRhKQoreworICBDVk9wZW5HTEVTVGV4dHVyZVJlZiB0ZXh0dXJlID0gTlVMTDsKKyAgR3N0VmlkZW9UZXh0dXJlQ2FjaGUgKmNhY2hlID0gZGF0YS0+Y2FjaGU7CisgIENWUGl4ZWxCdWZmZXJSZWYgcGl4ZWxfYnVmID0gY3ZfcGl4ZWxfYnVmZmVyX2Zyb21fZ3N0X2J1ZmZlciAoZGF0YS0+aW5wdXRfYnVmZmVyKTsKKyAgR3N0R0xUZXh0dXJlVGFyZ2V0IGdsX3RhcmdldDsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpiYXNlX21lbV9hbGxvYzsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKKyAgR3N0QnVmZmVyICpvdXRwdXRfYnVmZmVyOworCisgIGJhc2VfbWVtX2FsbG9jID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoZ3N0X2dsX21lbW9yeV9hbGxvY2F0b3JfZ2V0X2RlZmF1bHQgKGNhY2hlLT5jdHgpKTsKKyAgb3V0cHV0X2J1ZmZlciA9IGdzdF9idWZmZXJfbmV3ICgpOworICBnc3RfYnVmZmVyX2NvcHlfaW50byAob3V0cHV0X2J1ZmZlciwgZGF0YS0+aW5wdXRfYnVmZmVyLCBHU1RfQlVGRkVSX0NPUFlfQUxMLCAwLCAtMSk7CisKKyAgc3dpdGNoIChHU1RfVklERU9fSU5GT19GT1JNQVQgKCZjYWNoZS0+aW5wdXRfaW5mbykpIHsKKyAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1JBOgorICAgICAgICAvKiBhdmZ2aWRlb3NyYyBkb2VzIEJHUkEgb24gaU9TIHdoZW4gZG9pbmcgR0xNZW1vcnkgKi8KKyAgICAgICAgaWYgKENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgICAgICAgICAgICBjYWNoZS0+Y2FjaGUsIHBpeGVsX2J1ZiwgTlVMTCwgR0xfVEVYVFVSRV8yRCwgR0xfUkdCQSwKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZjYWNoZS0+aW5wdXRfaW5mbyksCisgICAgICAgICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmNhY2hlLT5pbnB1dF9pbmZvKSwKKyAgICAgICAgICAgICAgR0xfUkdCQSwgR0xfVU5TSUdORURfQllURSwgMCwgJnRleHR1cmUpICE9IGtDVlJldHVyblN1Y2Nlc3MpCisgICAgICAgICAgZ290byBlcnJvcjsKKworICAgICAgICBnbF90YXJnZXQgPSBnc3RfZ2xfdGV4dHVyZV90YXJnZXRfZnJvbV9nbCAoQ1ZPcGVuR0xFU1RleHR1cmVHZXRUYXJnZXQgKHRleHR1cmUpKTsKKyAgICAgICAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX3RleHR1cmUgKGNhY2hlLT5jdHgsCisgICAgICAgICAgICBOVUxMLCAmY2FjaGUtPmlucHV0X2luZm8sIDAsIE5VTEwsIGdsX3RhcmdldCwKKyAgICAgICAgICAgIENWT3BlbkdMRVNUZXh0dXJlR2V0TmFtZSAodGV4dHVyZSksIHRleHR1cmUsCisgICAgICAgICAgICAoR0Rlc3Ryb3lOb3RpZnkpIENGUmVsZWFzZSk7CisKKyAgICAgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlX21lbW9yeSAob3V0cHV0X2J1ZmZlciwgMCwKKyAgICAgICAgICAgICAgICAoR3N0TWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2MsCisgICAgICAgICAgICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKSk7CisgICAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6IHsKKyAgICAgICAgR3N0VmlkZW9HTFRleHR1cmVUeXBlIHRleHR5cGU7CisgICAgICAgIEdMZW51bSB0ZXhpZm10LCB0ZXhmbXQ7CisKKyAgICAgICAgdGV4dHlwZSA9IGdzdF9nbF90ZXh0dXJlX3R5cGVfZnJvbV9mb3JtYXQgKGNhY2hlLT5jdHgsIEdTVF9WSURFT19GT1JNQVRfTlYxMiwgMCk7CisgICAgICAgIHRleGlmbXQgPSBnc3RfZ2xfZm9ybWF0X2Zyb21fZ2xfdGV4dHVyZV90eXBlICh0ZXh0eXBlKTsKKyAgICAgICAgdGV4Zm10ID0gZ3N0X2dsX3NpemVkX2dsX2Zvcm1hdF9mcm9tX2dsX2Zvcm1hdF90eXBlIChjYWNoZS0+Y3R4LCB0ZXhpZm10LCBHTF9VTlNJR05FRF9CWVRFKTsKKworICAgICAgICAvKiB2dGRlYyBkb2VzIE5WMTIgb24gaU9TIHdoZW4gZG9pbmcgR0xNZW1vcnkgKi8KKyAgICAgICAgaWYgKENWT3BlbkdMRVNUZXh0dXJlQ2FjaGVDcmVhdGVUZXh0dXJlRnJvbUltYWdlIChrQ0ZBbGxvY2F0b3JEZWZhdWx0LAorICAgICAgICAgICAgICBjYWNoZS0+Y2FjaGUsIHBpeGVsX2J1ZiwgTlVMTCwgR0xfVEVYVFVSRV8yRCwgdGV4aWZtdCwKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fV0lEVEggKCZjYWNoZS0+aW5wdXRfaW5mbyksCisgICAgICAgICAgICAgIEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJmNhY2hlLT5pbnB1dF9pbmZvKSwKKyAgICAgICAgICAgICAgdGV4Zm10LCBHTF9VTlNJR05FRF9CWVRFLCAwLCAmdGV4dHVyZSkgIT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGdsX3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsIChDVk9wZW5HTEVTVGV4dHVyZUdldFRhcmdldCAodGV4dHVyZSkpOworICAgICAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZSAoY2FjaGUtPmN0eCwKKyAgICAgICAgICAgIE5VTEwsICZjYWNoZS0+aW5wdXRfaW5mbywgMCwgTlVMTCwgZ2xfdGFyZ2V0LAorICAgICAgICAgICAgQ1ZPcGVuR0xFU1RleHR1cmVHZXROYW1lICh0ZXh0dXJlKSwgdGV4dHVyZSwKKyAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgQ0ZSZWxlYXNlKTsKKworICAgICAgICBnc3RfYnVmZmVyX3JlcGxhY2VfbWVtb3J5IChvdXRwdXRfYnVmZmVyLCAwLAorICAgICAgICAgICAgICAgIChHc3RNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvYywKKyAgICAgICAgICAgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpKTsKKyAgICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKworICAgICAgICB0ZXh0eXBlID0gZ3N0X2dsX3RleHR1cmVfdHlwZV9mcm9tX2Zvcm1hdCAoY2FjaGUtPmN0eCwgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyLCAxKTsKKyAgICAgICAgdGV4aWZtdCA9IGdzdF9nbF9mb3JtYXRfZnJvbV9nbF90ZXh0dXJlX3R5cGUgKHRleHR5cGUpOworICAgICAgICB0ZXhmbXQgPSBnc3RfZ2xfc2l6ZWRfZ2xfZm9ybWF0X2Zyb21fZ2xfZm9ybWF0X3R5cGUgKGNhY2hlLT5jdHgsIHRleGlmbXQsIEdMX1VOU0lHTkVEX0JZVEUpOworCisgICAgICAgIGlmIChDVk9wZW5HTEVTVGV4dHVyZUNhY2hlQ3JlYXRlVGV4dHVyZUZyb21JbWFnZSAoa0NGQWxsb2NhdG9yRGVmYXVsdCwKKyAgICAgICAgICAgICAgY2FjaGUtPmNhY2hlLCBwaXhlbF9idWYsIE5VTEwsIEdMX1RFWFRVUkVfMkQsIHRleGlmbXQsCisgICAgICAgICAgICAgIEdTVF9WSURFT19JTkZPX1dJRFRIICgmY2FjaGUtPmlucHV0X2luZm8pIC8gMiwKKyAgICAgICAgICAgICAgR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmY2FjaGUtPmlucHV0X2luZm8pIC8gMiwKKyAgICAgICAgICAgICAgdGV4Zm10LCBHTF9VTlNJR05FRF9CWVRFLCAxLCAmdGV4dHVyZSkgIT0ga0NWUmV0dXJuU3VjY2VzcykKKyAgICAgICAgICBnb3RvIGVycm9yOworCisgICAgICAgIGdsX3RhcmdldCA9IGdzdF9nbF90ZXh0dXJlX3RhcmdldF9mcm9tX2dsIChDVk9wZW5HTEVTVGV4dHVyZUdldFRhcmdldCAodGV4dHVyZSkpOworICAgICAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfdGV4dHVyZSAoY2FjaGUtPmN0eCwKKyAgICAgICAgICAgIE5VTEwsICZjYWNoZS0+aW5wdXRfaW5mbywgMSwgTlVMTCwgZ2xfdGFyZ2V0LAorICAgICAgICAgICAgQ1ZPcGVuR0xFU1RleHR1cmVHZXROYW1lICh0ZXh0dXJlKSwgdGV4dHVyZSwKKyAgICAgICAgICAgIChHRGVzdHJveU5vdGlmeSkgQ0ZSZWxlYXNlKTsKKworICAgICAgICBnc3RfYnVmZmVyX3JlcGxhY2VfbWVtb3J5IChvdXRwdXRfYnVmZmVyLCAxLAorICAgICAgICAgICAgICAgIChHc3RNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvYywKKyAgICAgICAgICAgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpKTsKKyAgICAgICAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgICAgICAgYnJlYWs7CisgICAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIGdfd2Fybl9pZl9yZWFjaGVkICgpOworICAgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGdzdF9vYmplY3RfdW5yZWYgKGJhc2VfbWVtX2FsbG9jKTsKKworICBkYXRhLT5vdXRwdXRfYnVmZmVyID0gb3V0cHV0X2J1ZmZlcjsKKworICByZXR1cm47CisKK2Vycm9yOgorICBkYXRhLT5vdXRwdXRfYnVmZmVyID0gTlVMTDsKK30KKyNlbHNlIC8qICFIQVZFX0lPUyAqLworc3RhdGljIHZvaWQKK19kb19nZXRfZ2xfYnVmZmVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBDb250ZXh0VGhyZWFkRGF0YSAqIGRhdGEpCit7CisgIEdzdFZpZGVvVGV4dHVyZUNhY2hlICpjYWNoZSA9IGRhdGEtPmNhY2hlOworICBDVlBpeGVsQnVmZmVyUmVmIHBpeGVsX2J1ZiA9IGN2X3BpeGVsX2J1ZmZlcl9mcm9tX2dzdF9idWZmZXIgKGRhdGEtPmlucHV0X2J1ZmZlcik7CisgIElPU3VyZmFjZVJlZiBzdXJmYWNlID0gQ1ZQaXhlbEJ1ZmZlckdldElPU3VyZmFjZSAocGl4ZWxfYnVmKTsKKworICBkYXRhLT5vdXRwdXRfYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXcgKCk7CisgIGdzdF9idWZmZXJfY29weV9pbnRvIChkYXRhLT5vdXRwdXRfYnVmZmVyLCBkYXRhLT5pbnB1dF9idWZmZXIsIEdTVF9CVUZGRVJfQ09QWV9BTEwsIDAsIC0xKTsKKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJmNhY2hlLT5pbnB1dF9pbmZvKTsgaSsrKSB7CisgICAgR3N0SU9TdXJmYWNlTWVtb3J5ICptZW07CisKKyAgICBDRlJldGFpbiAocGl4ZWxfYnVmKTsKKyAgICBtZW0gPSBnc3RfaW9fc3VyZmFjZV9tZW1vcnlfd3JhcHBlZCAoY2FjaGUtPmN0eCwKKyAgICAgICAgICAgIHN1cmZhY2UsIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEUsICZjYWNoZS0+aW5wdXRfaW5mbywKKyAgICAgICAgICAgIGksIE5VTEwsIHBpeGVsX2J1ZiwgKEdEZXN0cm95Tm90aWZ5KSBDRlJlbGVhc2UpOworCisgICAgZ3N0X2J1ZmZlcl9yZXBsYWNlX21lbW9yeSAoZGF0YS0+b3V0cHV0X2J1ZmZlciwgaSwgKEdzdE1lbW9yeSAqKSBtZW0pOworICB9Cit9CisjZW5kaWYKKworR3N0QnVmZmVyICoKK2dzdF92aWRlb190ZXh0dXJlX2NhY2hlX2dldF9nbF9idWZmZXIgKEdzdFZpZGVvVGV4dHVyZUNhY2hlICogY2FjaGUsCisgICAgICAgIEdzdEJ1ZmZlciAqIGN2X2J1ZmZlcikKK3sKKyAgQ29udGV4dFRocmVhZERhdGEgZGF0YSA9IHtjYWNoZSwgY3ZfYnVmZmVyLCBOVUxMfTsKKworICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjYWNoZS0+Y3R4LAorICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9kb19nZXRfZ2xfYnVmZmVyLCAmZGF0YSk7CisKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoY3ZfYnVmZmVyKTsKKworICByZXR1cm4gZGF0YS5vdXRwdXRfYnVmZmVyOworfQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvdnRkZWMuYyBiL3N5cy9hcHBsZW1lZGlhL3Z0ZGVjLmMKaW5kZXggNWM1YTk5NC4uODJhNjU2YyAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvdnRkZWMuYworKysgYi9zeXMvYXBwbGVtZWRpYS92dGRlYy5jCkBAIC0xLDYgKzEsNiBAQAogLyogR1N0cmVhbWVyCiAgKiBDb3B5cmlnaHQgKEMpIDIwMTAsIDIwMTMgT2xlIEFuZHLDqSBWYWRsYSBSYXZuw6VzIDxvbGVhdnJAc291bmRyb3AuY29tPgotICogQ29weXJpZ2h0IChDKSAyMDEyLCAyMDEzIEFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPgorICogQ29weXJpZ2h0IChDKSAyMDEyLTIwMTYgQWxlc3NhbmRybyBEZWNpbmEgPGFsZXNzYW5kcm8uZEBnbWFpbC5jb20+CiAgKgogICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgogICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKQEAgLTI1LDcgKzI1LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZpbGVzcmMgbG9jYXRpb249ZmlsZS5tb3YgISBxdGRlbXV4ICEgcXVldWUgISBoMjY0cGFyc2UgISB2dGRlYyAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZpbGVzcmMgbG9jYXRpb249ZmlsZS5tb3YgISBxdGRlbXV4ICEgcXVldWUgISBoMjY0cGFyc2UgISB2dGRlYyAhIHZpZGVvY29udmVydCAhIGF1dG92aWRlb3NpbmsKICAqIF18CiAgKiBEZWNvZGUgaDI2NCB2aWRlbyBmcm9tIGEgbW92IGZpbGUuCiAgKiA8L3JlZnNlY3QyPgpAQCAtNDgsMTIgKzQ4LDE4IEBACiBHU1RfREVCVUdfQ0FURUdPUllfU1RBVElDIChnc3RfdnRkZWNfZGVidWdfY2F0ZWdvcnkpOwogI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X3Z0ZGVjX2RlYnVnX2NhdGVnb3J5CiAKK2VudW0KK3sKKyAgLyogbGVhdmUgc29tZSBoZWFkcm9vbSBmb3IgbmV3IEdzdFZpZGVvQ29kZWNGcmFtZUZsYWdzIGZsYWdzICovCisgIFZUREVDX0ZSQU1FX0ZMQUdfU0tJUCA9ICgxIDw8IDEwKSwKKyAgVlRERUNfRlJBTUVfRkxBR19EUk9QID0gKDEgPDwgMTEpLAorfTsKKwogc3RhdGljIHZvaWQgZ3N0X3Z0ZGVjX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqZWN0KTsKIAogc3RhdGljIGdib29sZWFuIGdzdF92dGRlY19zdGFydCAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2Rlcik7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z0ZGVjX3N0b3AgKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIpOwotc3RhdGljIGdib29sZWFuIGdzdF92dGRlY19kZWNpZGVfYWxsb2NhdGlvbiAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2RlciwKLSAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdnRkZWNfbmVnb3RpYXRlIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKTsKIHN0YXRpYyBnYm9vbGVhbiBnc3RfdnRkZWNfc2V0X2Zvcm1hdCAoR3N0VmlkZW9EZWNvZGVyICogZGVjb2RlciwKICAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKiBzdGF0ZSk7CiBzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Z0ZGVjX2ZsdXNoIChHc3RWaWRlb0RlY29kZXIgKiBkZWNvZGVyKTsKQEAgLTgyLDYgKzg4LDcgQEAKIHN0YXRpYyBnYm9vbGVhbiBnc3RfdnRkZWNfY29tcHV0ZV9yZW9yZGVyX3F1ZXVlX2xlbmd0aCAoR3N0VnRkZWMgKiB2dGRlYywKICAgICBDTVZpZGVvQ29kZWNUeXBlIGNtX2Zvcm1hdCwgR3N0QnVmZmVyICogY29kZWNfZGF0YSk7CiBzdGF0aWMgdm9pZCBnc3RfdnRkZWNfc2V0X2xhdGVuY3kgKEdzdFZ0ZGVjICogdnRkZWMpOworc3RhdGljIHZvaWQgZ3N0X3Z0ZGVjX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpOwogCiBzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3Z0ZGVjX3NpbmtfdGVtcGxhdGUgPQogICAgIEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCkBAIC0xMDIsMjIgKzEwOSwxMSBAQAogQ0ZTVFIgKCJSZXF1aXJlSGFyZHdhcmVBY2NlbGVyYXRlZFZpZGVvRGVjb2RlciIpOwogI2VuZGlmCiAKLSNpZmRlZiBIQVZFX0lPUwotI2RlZmluZSBHU1RfVlRERUNfVklERU9fRk9STUFUX1NUUiAiTlYxMiIKLSNlbHNlCi0jZGVmaW5lIEdTVF9WVERFQ19WSURFT19GT1JNQVRfU1RSICJVWVZZIgotI2VuZGlmCi0KLSNpZmRlZiBIQVZFX0lPUwogI2RlZmluZSBWSURFT19TUkNfQ0FQUyBcCi0gICAgR1NUX1ZJREVPX0NBUFNfTUFLRV9XSVRIX0ZFQVRVUkVTIFwKLSAgICAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZLCBcCi0gICAgICAgICJSR0JBIikgIjsiIFwKLSAgICBHU1RfVklERU9fQ0FQU19NQUtFKEdTVF9WVERFQ19WSURFT19GT1JNQVRfU1RSKSAiOyIKLSNlbHNlCi0jZGVmaW5lIFZJREVPX1NSQ19DQVBTIFwKLSAgICBHU1RfVklERU9fQ0FQU19NQUtFKEdTVF9WVERFQ19WSURFT19GT1JNQVRfU1RSKSAiOyIKLSNlbmRpZgorICAgIEdTVF9WSURFT19DQVBTX01BS0VfV0lUSF9GRUFUVVJFUyhHU1RfQ0FQU19GRUFUVVJFX01FTU9SWV9HTF9NRU1PUlksXAorICAgICAgICAiTlYxMiIpICIsICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICJ0ZXh0dXJlLXRhcmdldCA9IChzdHJpbmcpIHJlY3RhbmdsZTsiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIEdTVF9WSURFT19DQVBTX01BS0UoIk5WMTIiKSAiOyIKIAogR19ERUZJTkVfVFlQRSAoR3N0VnRkZWMsIGdzdF92dGRlYywgR1NUX1RZUEVfVklERU9fREVDT0RFUik7CiAKQEAgLTEyNSwxNyArMTIxLDE4IEBACiBnc3RfdnRkZWNfY2xhc3NfaW5pdCAoR3N0VnRkZWNDbGFzcyAqIGtsYXNzKQogewogICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOwogICBHc3RWaWRlb0RlY29kZXJDbGFzcyAqdmlkZW9fZGVjb2Rlcl9jbGFzcyA9IEdTVF9WSURFT19ERUNPREVSX0NMQVNTIChrbGFzcyk7CiAKICAgLyogU2V0dGluZyB1cCBwYWRzIGFuZCBzZXR0aW5nIG1ldGFkYXRhIHNob3VsZCBiZSBtb3ZlZCB0bwogICAgICBiYXNlX2NsYXNzX2luaXQgaWYgeW91IGludGVuZCB0byBzdWJjbGFzcyB0aGlzIGNsYXNzLiAqLwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpLAorICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAogICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3Z0ZGVjX3NpbmtfdGVtcGxhdGUpKTsKLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKSwKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKICAgICAgIGdzdF9wYWRfdGVtcGxhdGVfbmV3ICgic3JjIiwgR1NUX1BBRF9TUkMsIEdTVF9QQURfQUxXQVlTLAogICAgICAgICAgIGdzdF9jYXBzX2Zyb21fc3RyaW5nIChWSURFT19TUkNfQ0FQUykpKTsKIAotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpLAorICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAogICAgICAgIkFwcGxlIFZpZGVvVG9vbGJveCBkZWNvZGVyIiwKICAgICAgICJDb2RlYy9EZWNvZGVyL1ZpZGVvIiwKICAgICAgICJBcHBsZSBWaWRlb1Rvb2xib3ggRGVjb2RlciIsCkBAIC0xNDMsMTAgKzE0MCwxMCBAQAogICAgICAgIkFsZXNzYW5kcm8gRGVjaW5hIDxhbGVzc2FuZHJvLmRAZ21haWwuY29tPiIpOwogCiAgIGdvYmplY3RfY2xhc3MtPmZpbmFsaXplID0gZ3N0X3Z0ZGVjX2ZpbmFsaXplOworICBlbGVtZW50X2NsYXNzLT5zZXRfY29udGV4dCA9IGdzdF92dGRlY19zZXRfY29udGV4dDsKICAgdmlkZW9fZGVjb2Rlcl9jbGFzcy0+c3RhcnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z0ZGVjX3N0YXJ0KTsKICAgdmlkZW9fZGVjb2Rlcl9jbGFzcy0+c3RvcCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnRkZWNfc3RvcCk7Ci0gIHZpZGVvX2RlY29kZXJfY2xhc3MtPmRlY2lkZV9hbGxvY2F0aW9uID0KLSAgICAgIEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnRkZWNfZGVjaWRlX2FsbG9jYXRpb24pOworICB2aWRlb19kZWNvZGVyX2NsYXNzLT5uZWdvdGlhdGUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z0ZGVjX25lZ290aWF0ZSk7CiAgIHZpZGVvX2RlY29kZXJfY2xhc3MtPnNldF9mb3JtYXQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z0ZGVjX3NldF9mb3JtYXQpOwogICB2aWRlb19kZWNvZGVyX2NsYXNzLT5mbHVzaCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdnRkZWNfZmx1c2gpOwogICB2aWRlb19kZWNvZGVyX2NsYXNzLT5maW5pc2ggPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Z0ZGVjX2ZpbmlzaCk7CkBAIC0xNTgsNiArMTU1LDcgQEAKIGdzdF92dGRlY19pbml0IChHc3RWdGRlYyAqIHZ0ZGVjKQogewogICB2dGRlYy0+cmVvcmRlcl9xdWV1ZSA9IGdfYXN5bmNfcXVldWVfbmV3ICgpOworICB2dGRlYy0+Y3R4aCA9IGdzdF9nbF9jb250ZXh0X2hlbHBlcl9uZXcgKEdTVF9FTEVNRU5UICh2dGRlYykpOwogfQogCiB2b2lkCkBAIC0xNjgsNyArMTY2LDcgQEAKICAgR1NUX0RFQlVHX09CSkVDVCAodnRkZWMsICJmaW5hbGl6ZSIpOwogCiAgIGdfYXN5bmNfcXVldWVfdW5yZWYgKHZ0ZGVjLT5yZW9yZGVyX3F1ZXVlKTsKLQorICBnc3RfZ2xfY29udGV4dF9oZWxwZXJfZnJlZSAodnRkZWMtPmN0eGgpOwogCiAgIEdfT0JKRUNUX0NMQVNTIChnc3RfdnRkZWNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7CiB9CkBAIC0xODgsMTEgKzE4NiwxNSBAQAogewogICBHc3RWdGRlYyAqdnRkZWMgPSBHU1RfVlRERUMgKGRlY29kZXIpOwogCisgIGlmICh2dGRlYy0+aW5wdXRfc3RhdGUpCisgICAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmICh2dGRlYy0+aW5wdXRfc3RhdGUpOworICB2dGRlYy0+aW5wdXRfc3RhdGUgPSBOVUxMOworCiAgIGlmICh2dGRlYy0+c2Vzc2lvbikKICAgICBnc3RfdnRkZWNfaW52YWxpZGF0ZV9zZXNzaW9uICh2dGRlYyk7CiAKICAgaWYgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlKQotICAgIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAodnRkZWMtPnRleHR1cmVfY2FjaGUpOworICAgIGdzdF92aWRlb190ZXh0dXJlX2NhY2hlX2ZyZWUgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlKTsKICAgdnRkZWMtPnRleHR1cmVfY2FjaGUgPSBOVUxMOwogCiAgIEdTVF9ERUJVR19PQkpFQ1QgKHZ0ZGVjLCAic3RvcCIpOwpAQCAtMjAwLDExMiArMjAyLDEwOCBAQAogICByZXR1cm4gVFJVRTsKIH0KIAotc3RhdGljIGdib29sZWFuCi1nc3RfdnRkZWNfZGVjaWRlX2FsbG9jYXRpb24gKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIsIEdzdFF1ZXJ5ICogcXVlcnkpCitzdGF0aWMgdm9pZAorc2V0dXBfdGV4dHVyZV9jYWNoZSAoR3N0VnRkZWMgKiB2dGRlYywgR3N0R0xDb250ZXh0ICogY29udGV4dCkKIHsKLSAgZ2Jvb2xlYW4gcmV0OwotICBHc3RDYXBzICpjYXBzOwotICBHc3RDYXBzRmVhdHVyZXMgKmZlYXR1cmVzOwotICBHc3RWdGRlYyAqdnRkZWMgPSBHU1RfVlRERUMgKGRlY29kZXIpOworICBHc3RWaWRlb0NvZGVjU3RhdGUgKm91dHB1dF9zdGF0ZTsKIAotICByZXQgPQotICAgICAgR1NUX1ZJREVPX0RFQ09ERVJfQ0xBU1MgKGdzdF92dGRlY19wYXJlbnRfY2xhc3MpLT5kZWNpZGVfYWxsb2NhdGlvbgotICAgICAgKGRlY29kZXIsIHF1ZXJ5KTsKLSAgaWYgKCFyZXQpCi0gICAgZ290byBvdXQ7CisgIGdfcmV0dXJuX2lmX2ZhaWwgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlID09IE5VTEwpOwogCi0gIGdzdF9xdWVyeV9wYXJzZV9hbGxvY2F0aW9uIChxdWVyeSwgJmNhcHMsIE5VTEwpOwotICBpZiAoY2FwcykgewotICAgIEdzdEdMQ29udGV4dCAqZ2xfY29udGV4dCA9IE5VTEw7Ci0gICAgZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGNhcHMsIDApOwotCi0gICAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywKLSAgICAgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSkpIHsKLSAgICAgIEdzdENvbnRleHQgKmNvbnRleHQgPSBOVUxMOwotICAgICAgR3N0UXVlcnkgKnF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19jb250ZXh0ICgiZ3N0LmdsLmxvY2FsX2NvbnRleHQiKTsKLSAgICAgIGlmIChnc3RfcGFkX3BlZXJfcXVlcnkgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKGRlY29kZXIpLCBxdWVyeSkpIHsKLQotICAgICAgICBnc3RfcXVlcnlfcGFyc2VfY29udGV4dCAocXVlcnksICZjb250ZXh0KTsKLSAgICAgICAgaWYgKGNvbnRleHQpIHsKLSAgICAgICAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnMgPSBnc3RfY29udGV4dF9nZXRfc3RydWN0dXJlIChjb250ZXh0KTsKLSAgICAgICAgICBnc3Rfc3RydWN0dXJlX2dldCAocywgImNvbnRleHQiLCBHU1RfR0xfVFlQRV9DT05URVhULCAmZ2xfY29udGV4dCwKLSAgICAgICAgICAgICAgTlVMTCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOwotCi0gICAgICBpZiAoY29udGV4dCkgewotICAgICAgICBHc3RWaWRlb0Zvcm1hdCBpbnRlcm5hbF9mb3JtYXQ7Ci0gICAgICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqb3V0cHV0X3N0YXRlID0KLSAgICAgICAgICAgIGdzdF92aWRlb19kZWNvZGVyX2dldF9vdXRwdXRfc3RhdGUgKGRlY29kZXIpOwotCi0gICAgICAgIEdTVF9JTkZPX09CSkVDVCAoZGVjb2RlciwgInB1c2hpbmcgdGV4dHVyZXMuIEdMIGNvbnRleHQgJXAiLCBjb250ZXh0KTsKLSAgICAgICAgaWYgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlKQotICAgICAgICAgIGdzdF9jb3JlX3ZpZGVvX3RleHR1cmVfY2FjaGVfZnJlZSAodnRkZWMtPnRleHR1cmVfY2FjaGUpOwotCi0jaWZkZWYgSEFWRV9JT1MKLSAgICAgICAgaW50ZXJuYWxfZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOwotI2Vsc2UKLSAgICAgICAgaW50ZXJuYWxfZm9ybWF0ID0gR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOwotI2VuZGlmCi0gICAgICAgIHZ0ZGVjLT50ZXh0dXJlX2NhY2hlID0gZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9uZXcgKGdsX2NvbnRleHQpOwotICAgICAgICBnc3RfY29yZV92aWRlb190ZXh0dXJlX2NhY2hlX3NldF9mb3JtYXQgKHZ0ZGVjLT50ZXh0dXJlX2NhY2hlLAotICAgICAgICAgICAgaW50ZXJuYWxfZm9ybWF0LCBvdXRwdXRfc3RhdGUtPmNhcHMpOwotICAgICAgICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKG91dHB1dF9zdGF0ZSk7Ci0gICAgICAgIGdzdF9vYmplY3RfdW5yZWYgKGdsX2NvbnRleHQpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChkZWNvZGVyLAotICAgICAgICAgICAgImdvdCBtZW1vcnk6R0xNZW1vcnkgY2FwcyBidXQgbm90IEdMIGNvbnRleHQgZnJvbSBkb3duc3RyZWFtIGVsZW1lbnQiKTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotb3V0OgotICByZXR1cm4gcmV0OworICBvdXRwdXRfc3RhdGUgPSBnc3RfdmlkZW9fZGVjb2Rlcl9nZXRfb3V0cHV0X3N0YXRlIChHU1RfVklERU9fREVDT0RFUiAodnRkZWMpKTsKKyAgdnRkZWMtPnRleHR1cmVfY2FjaGUgPSBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9uZXcgKGNvbnRleHQpOworICBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9zZXRfZm9ybWF0ICh2dGRlYy0+dGV4dHVyZV9jYWNoZSwKKyAgICAgIEdTVF9WSURFT19GT1JNQVRfTlYxMiwgb3V0cHV0X3N0YXRlLT5jYXBzKTsKKyAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmIChvdXRwdXRfc3RhdGUpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KLWdzdF92dGRlY19uZWdvdGlhdGVfb3V0cHV0X2Zvcm1hdCAoR3N0VnRkZWMgKiB2dGRlYywKLSAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKiBpbnB1dF9zdGF0ZSkKK2dzdF92dGRlY19uZWdvdGlhdGUgKEdzdFZpZGVvRGVjb2RlciAqIGRlY29kZXIpCiB7Ci0gIEdzdENhcHMgKmNhcHMgPSBOVUxMLCAqcGVlcmNhcHMgPSBOVUxMLCAqdGVtcGxjYXBzOwotICBHc3RWaWRlb0Zvcm1hdCBvdXRwdXRfZm9ybWF0OwogICBHc3RWaWRlb0NvZGVjU3RhdGUgKm91dHB1dF9zdGF0ZSA9IE5VTEw7Ci0gIEdzdENhcHNGZWF0dXJlcyAqZmVhdHVyZXM7CisgIEdzdENhcHMgKmNhcHMgPSBOVUxMLCAqdGVtcGxjYXBzID0gTlVMTCwgKnByZXZjYXBzID0gTlVMTDsKKyAgR3N0VmlkZW9Gb3JtYXQgZm9ybWF0OwogICBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKICAgY29uc3QgZ2NoYXIgKnM7CisgIEdzdFZ0ZGVjICp2dGRlYzsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKyAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlcyA9IE5VTEw7CisgIGdib29sZWFuIG91dHB1dF90ZXh0dXJlczsKIAotICBwZWVyY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChHU1RfVklERU9fREVDT0RFUl9TUkNfUEFEICh2dGRlYyksIE5VTEwpOwotCi0gIC8qIENoZWNrIGlmIG91dHB1dCBzdXBwb3J0cyBHTCBjYXBzIGJ5IHByZWZlcmVuY2UgKi8KLSAgdGVtcGxjYXBzID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKEdTVF9WSURFT19ERUNPREVSX1NSQ19QQUQgKHZ0ZGVjKSk7CisgIHZ0ZGVjID0gR1NUX1ZUREVDIChkZWNvZGVyKTsKKyAgdGVtcGxjYXBzID0KKyAgICAgIGdzdF9wYWRfZ2V0X3BhZF90ZW1wbGF0ZV9jYXBzIChHU1RfVklERU9fREVDT0RFUl9TUkNfUEFEIChkZWNvZGVyKSk7CiAgIGNhcHMgPQotICAgICAgZ3N0X2NhcHNfaW50ZXJzZWN0X2Z1bGwgKHRlbXBsY2FwcywgcGVlcmNhcHMsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7Ci0KLSAgZ3N0X2NhcHNfdW5yZWYgKHBlZXJjYXBzKTsKKyAgICAgIGdzdF9jYXBzX21ha2Vfd3JpdGFibGUgKGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChHU1RfVklERU9fREVDT0RFUl9TUkNfUEFECisgICAgICAgICAgKHZ0ZGVjKSwgdGVtcGxjYXBzKSk7CiAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbGNhcHMpOwogCiAgIGNhcHMgPSBnc3RfY2Fwc190cnVuY2F0ZSAoY2Fwcyk7CiAgIHN0cnVjdHVyZSA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOwogICBzID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzdHJ1Y3R1cmUsICJmb3JtYXQiKTsKLSAgb3V0cHV0X2Zvcm1hdCA9IGdzdF92aWRlb19mb3JtYXRfZnJvbV9zdHJpbmcgKHMpOwotICBmZWF0dXJlcyA9IGdzdF9jYXBzX2ZlYXR1cmVzX2NvcHkgKGdzdF9jYXBzX2dldF9mZWF0dXJlcyAoY2FwcywgMCkpOwotCi0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICBpZiAoIWdzdF92dGRlY19jcmVhdGVfc2Vzc2lvbiAodnRkZWMsIG91dHB1dF9mb3JtYXQpKSB7Ci0gICAgZ3N0X2NhcHNfZmVhdHVyZXNfZnJlZSAoZmVhdHVyZXMpOwotICAgIHJldHVybiBGQUxTRTsKLSAgfQorICBmb3JtYXQgPSBnc3RfdmlkZW9fZm9ybWF0X2Zyb21fc3RyaW5nIChzKTsKKyAgZmVhdHVyZXMgPSBnc3RfY2Fwc19nZXRfZmVhdHVyZXMgKGNhcHMsIDApOworICBpZiAoZmVhdHVyZXMpCisgICAgZmVhdHVyZXMgPSBnc3RfY2Fwc19mZWF0dXJlc19jb3B5IChmZWF0dXJlcyk7CiAKICAgb3V0cHV0X3N0YXRlID0gZ3N0X3ZpZGVvX2RlY29kZXJfc2V0X291dHB1dF9zdGF0ZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHZ0ZGVjKSwKLSAgICAgIG91dHB1dF9mb3JtYXQsIHZ0ZGVjLT52aWRlb19pbmZvLndpZHRoLCB2dGRlYy0+dmlkZW9faW5mby5oZWlnaHQsCi0gICAgICBpbnB1dF9zdGF0ZSk7Ci0KKyAgICAgIGZvcm1hdCwgdnRkZWMtPnZpZGVvX2luZm8ud2lkdGgsIHZ0ZGVjLT52aWRlb19pbmZvLmhlaWdodCwKKyAgICAgIHZ0ZGVjLT5pbnB1dF9zdGF0ZSk7CiAgIG91dHB1dF9zdGF0ZS0+Y2FwcyA9IGdzdF92aWRlb19pbmZvX3RvX2NhcHMgKCZvdXRwdXRfc3RhdGUtPmluZm8pOwotICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKG91dHB1dF9zdGF0ZS0+Y2FwcywgMCwgZmVhdHVyZXMpOworICBpZiAoZmVhdHVyZXMpIHsKKyAgICBnc3RfY2Fwc19zZXRfZmVhdHVyZXMgKG91dHB1dF9zdGF0ZS0+Y2FwcywgMCwgZmVhdHVyZXMpOworICAgIG91dHB1dF90ZXh0dXJlcyA9CisgICAgICAgIGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywKKyAgICAgICAgR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKTsKKyAgICBpZiAob3V0cHV0X3RleHR1cmVzKQorICAgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAob3V0cHV0X3N0YXRlLT5jYXBzLCAidGV4dHVyZS10YXJnZXQiLCBHX1RZUEVfU1RSSU5HLAorI2lmICFIQVZFX0lPUworICAgICAgICAgIEdTVF9HTF9URVhUVVJFX1RBUkdFVF9SRUNUQU5HTEVfU1RSLAorI2Vsc2UKKyAgICAgICAgICBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkRfU1RSLAorI2VuZGlmCisgICAgICAgICAgTlVMTCk7CisgIH0KKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogCi0gIHJldHVybiBUUlVFOworICBwcmV2Y2FwcyA9IGdzdF9wYWRfZ2V0X2N1cnJlbnRfY2FwcyAoZGVjb2Rlci0+c3JjcGFkKTsKKyAgaWYgKCFwcmV2Y2FwcyB8fCAhZ3N0X2NhcHNfaXNfZXF1YWwgKHByZXZjYXBzLCBvdXRwdXRfc3RhdGUtPmNhcHMpKSB7CisgICAgR1NUX0lORk9fT0JKRUNUICh2dGRlYywgIm5lZ290aWF0ZWQgb3V0cHV0IGZvcm1hdCAlIiBHU1RfUFRSX0ZPUk1BVCwKKyAgICAgICAgb3V0cHV0X3N0YXRlLT5jYXBzKTsKKworICAgIGlmICh2dGRlYy0+c2Vzc2lvbikgeworICAgICAgZ3N0X3Z0ZGVjX3B1c2hfZnJhbWVzX2lmX25lZWRlZCAodnRkZWMsIFRSVUUsIEZBTFNFKTsKKyAgICAgIGdzdF92dGRlY19pbnZhbGlkYXRlX3Nlc3Npb24gKHZ0ZGVjKTsKKyAgICB9CisKKyAgICByZXQgPSBnc3RfdnRkZWNfY3JlYXRlX3Nlc3Npb24gKHZ0ZGVjLCBmb3JtYXQpOworICB9CisKKyAgaWYgKHJldCAmJiBvdXRwdXRfdGV4dHVyZXMpIHsKKyAgICAvKiBjYWxsIHRoaXMgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGNhcHMgaGF2ZSBjaGFuZ2VkIG9yIG5vdCBzaW5jZSBhIG5ldworICAgICAqIGxvY2FsIGNvbnRleHQgY291bGQgaGF2ZSBiZWNvbWUgYXZhaWxhYmxlCisgICAgICovCisgICAgZ3N0X2dsX2NvbnRleHRfaGVscGVyX2Vuc3VyZV9jb250ZXh0ICh2dGRlYy0+Y3R4aCk7CisKKyAgICBHU1RfSU5GT19PQkpFQ1QgKHZ0ZGVjLCAicHVzaGluZyB0ZXh0dXJlcywgY29udGV4dCAlcCBvbGQgY29udGV4dCAlcCIsCisgICAgICAgIHZ0ZGVjLT5jdHhoLT5jb250ZXh0LAorICAgICAgICB2dGRlYy0+dGV4dHVyZV9jYWNoZSA/IHZ0ZGVjLT50ZXh0dXJlX2NhY2hlLT5jdHggOiBOVUxMKTsKKworICAgIGlmICh2dGRlYy0+dGV4dHVyZV9jYWNoZQorICAgICAgICAmJiB2dGRlYy0+dGV4dHVyZV9jYWNoZS0+Y3R4ICE9IHZ0ZGVjLT5jdHhoLT5jb250ZXh0KSB7CisgICAgICBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9mcmVlICh2dGRlYy0+dGV4dHVyZV9jYWNoZSk7CisgICAgICB2dGRlYy0+dGV4dHVyZV9jYWNoZSA9IE5VTEw7CisgICAgfQorICAgIGlmICghdnRkZWMtPnRleHR1cmVfY2FjaGUpCisgICAgICBzZXR1cF90ZXh0dXJlX2NhY2hlICh2dGRlYywgdnRkZWMtPmN0eGgtPmNvbnRleHQpOworICB9CisKKyAgaWYgKHByZXZjYXBzKQorICAgIGdzdF9jYXBzX3VucmVmIChwcmV2Y2Fwcyk7CisKKyAgaWYgKCFyZXQpCisgICAgcmV0dXJuIHJldDsKKworICByZXR1cm4gR1NUX1ZJREVPX0RFQ09ERVJfQ0xBU1MgKGdzdF92dGRlY19wYXJlbnRfY2xhc3MpLT5uZWdvdGlhdGUgKGRlY29kZXIpOwogfQogCiBzdGF0aWMgZ2Jvb2xlYW4KQEAgLTMzNCw4ICszMzIsMTAgQEAKICAgICByZXR1cm4gVFJVRTsKICAgfQogCi0gIGlmICh2dGRlYy0+c2Vzc2lvbikKKyAgaWYgKHZ0ZGVjLT5zZXNzaW9uKSB7CisgICAgZ3N0X3Z0ZGVjX3B1c2hfZnJhbWVzX2lmX25lZWRlZCAodnRkZWMsIFRSVUUsIEZBTFNFKTsKICAgICBnc3RfdnRkZWNfaW52YWxpZGF0ZV9zZXNzaW9uICh2dGRlYyk7CisgIH0KIAogICBnc3RfdmlkZW9faW5mb19mcm9tX2NhcHMgKCZ2dGRlYy0+dmlkZW9faW5mbywgc3RhdGUtPmNhcHMpOwogCkBAIC0zNTUsMTAgKzM1NSwxMSBAQAogICAgIENGUmVsZWFzZSAodnRkZWMtPmZvcm1hdF9kZXNjcmlwdGlvbik7CiAgIHZ0ZGVjLT5mb3JtYXRfZGVzY3JpcHRpb24gPSBmb3JtYXRfZGVzY3JpcHRpb247CiAKLSAgaWYgKCFnc3RfdnRkZWNfbmVnb3RpYXRlX291dHB1dF9mb3JtYXQgKHZ0ZGVjLCBzdGF0ZSkpCi0gICAgcmV0dXJuIEZBTFNFOworICBpZiAodnRkZWMtPmlucHV0X3N0YXRlKQorICAgIGdzdF92aWRlb19jb2RlY19zdGF0ZV91bnJlZiAodnRkZWMtPmlucHV0X3N0YXRlKTsKKyAgdnRkZWMtPmlucHV0X3N0YXRlID0gZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3JlZiAoc3RhdGUpOwogCi0gIHJldHVybiBUUlVFOworICByZXR1cm4gZ3N0X3ZpZGVvX2RlY29kZXJfbmVnb3RpYXRlIChkZWNvZGVyKTsKIH0KIAogc3RhdGljIGdib29sZWFuCkBAIC00MzMsNiArNDM0LDE2IEBACiAgIGdvdG8gb3V0OwogfQogCitzdGF0aWMgdm9pZAorZ3N0X3Z0ZGVjX2ludmFsaWRhdGVfc2Vzc2lvbiAoR3N0VnRkZWMgKiB2dGRlYykKK3sKKyAgZ19yZXR1cm5faWZfZmFpbCAodnRkZWMtPnNlc3Npb24pOworCisgIFZURGVjb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlICh2dGRlYy0+c2Vzc2lvbik7CisgIENGUmVsZWFzZSAodnRkZWMtPnNlc3Npb24pOworICB2dGRlYy0+c2Vzc2lvbiA9IE5VTEw7Cit9CisKIHN0YXRpYyBnYm9vbGVhbgogZ3N0X3Z0ZGVjX2NyZWF0ZV9zZXNzaW9uIChHc3RWdGRlYyAqIHZ0ZGVjLCBHc3RWaWRlb0Zvcm1hdCBmb3JtYXQpCiB7CkBAIC00NDAsNyArNDUxLDkgQEAKICAgVlREZWNvbXByZXNzaW9uT3V0cHV0Q2FsbGJhY2tSZWNvcmQgY2FsbGJhY2s7CiAgIENGTXV0YWJsZURpY3Rpb25hcnlSZWYgdmlkZW9EZWNvZGVyU3BlY2lmaWNhdGlvbjsKICAgT1NTdGF0dXMgc3RhdHVzOwotICBndWludDMyIGN2X2Zvcm1hdDsKKyAgZ3VpbnQzMiBjdl9mb3JtYXQgPSAwOworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsICh2dGRlYy0+c2Vzc2lvbiA9PSBOVUxMLCBGQUxTRSk7CiAKICAgc3dpdGNoIChmb3JtYXQpIHsKICAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfTlYxMjoKQEAgLTQ1MCwxMSArNDYzLDcgQEAKICAgICAgIGN2X2Zvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjJZcENiQ3I4OwogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQkE6Ci0jaWZkZWYgSEFWRV9JT1MKICAgICAgIGN2X2Zvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjBZcENiQ3I4QmlQbGFuYXJWaWRlb1JhbmdlOwotI2Vsc2UKLSAgICAgIGN2X2Zvcm1hdCA9IGtDVlBpeGVsRm9ybWF0VHlwZV80MjJZcENiQ3I4OwotI2VuZGlmCiAgICAgICBicmVhazsKICAgICBkZWZhdWx0OgogICAgICAgZ193YXJuX2lmX3JlYWNoZWQgKCk7CkBAIC01MDMsMTYgKzUxMiw2IEBACiAgIHJldHVybiBUUlVFOwogfQogCi1zdGF0aWMgdm9pZAotZ3N0X3Z0ZGVjX2ludmFsaWRhdGVfc2Vzc2lvbiAoR3N0VnRkZWMgKiB2dGRlYykKLXsKLSAgZ19yZXR1cm5faWZfZmFpbCAodnRkZWMtPnNlc3Npb24pOwotCi0gIFZURGVjb21wcmVzc2lvblNlc3Npb25JbnZhbGlkYXRlICh2dGRlYy0+c2Vzc2lvbik7Ci0gIENGUmVsZWFzZSAodnRkZWMtPnNlc3Npb24pOwotICB2dGRlYy0+c2Vzc2lvbiA9IE5VTEw7Ci19Ci0KIHN0YXRpYyBDTUZvcm1hdERlc2NyaXB0aW9uUmVmCiBjcmVhdGVfZm9ybWF0X2Rlc2NyaXB0aW9uIChHc3RWdGRlYyAqIHZ0ZGVjLCBDTVZpZGVvQ29kZWNUeXBlIGNtX2Zvcm1hdCkKIHsKQEAgLTcwMiw4ICs3MDEsMTEgQEAKIAogICBmcmFtZTEgPSAoR3N0VmlkZW9Db2RlY0ZyYW1lICopIGYxOwogICBmcmFtZTIgPSAoR3N0VmlkZW9Db2RlY0ZyYW1lICopIGYyOwotICBwdHMxID0gR1NUX0JVRkZFUl9QVFMgKGZyYW1lMS0+b3V0cHV0X2J1ZmZlcik7Ci0gIHB0czIgPSBHU1RfQlVGRkVSX1BUUyAoZnJhbWUyLT5vdXRwdXRfYnVmZmVyKTsKKyAgcHRzMSA9IHB0czIgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOworICBpZiAoZnJhbWUxLT5vdXRwdXRfYnVmZmVyKQorICAgIHB0czEgPSBHU1RfQlVGRkVSX1BUUyAoZnJhbWUxLT5vdXRwdXRfYnVmZmVyKTsKKyAgaWYgKGZyYW1lMi0+b3V0cHV0X2J1ZmZlcikKKyAgICBwdHMyID0gR1NUX0JVRkZFUl9QVFMgKGZyYW1lMi0+b3V0cHV0X2J1ZmZlcik7CiAKICAgaWYgKCFHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAocHRzMSkgfHwgIUdTVF9DTE9DS19USU1FX0lTX1ZBTElEIChwdHMyKSkKICAgICByZXR1cm4gMDsKQEAgLTcyMyw1OCArNzI1LDQ1IEBACiB7CiAgIEdzdFZ0ZGVjICp2dGRlYyA9IChHc3RWdGRlYyAqKSBkZWNvbXByZXNzaW9uX291dHB1dF9yZWZfY29uOwogICBHc3RWaWRlb0NvZGVjRnJhbWUgKmZyYW1lID0gKEdzdFZpZGVvQ29kZWNGcmFtZSAqKSBzb3VyY2VfZnJhbWVfcmVmX2NvbjsKLSAgR3N0QnVmZmVyICpidWY7CiAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqc3RhdGU7CiAKICAgR1NUX0xPR19PQkpFQ1QgKHZ0ZGVjLCAiZ290IG91dHB1dCBmcmFtZSAlcCAlZCBhbmQgVlQgYnVmZmVyICVwIiwgZnJhbWUsCiAgICAgICBmcmFtZS0+ZGVjb2RlX2ZyYW1lX251bWJlciwgaW1hZ2VfYnVmZmVyKTsKIAorICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9IE5VTEw7CisKICAgaWYgKHN0YXR1cyAhPSBub0VycikgewogICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHZ0ZGVjLCAiRXJyb3IgZGVjb2RpbmcgZnJhbWUgJWQiLCAoaW50KSBzdGF0dXMpOwotICAgIGdvdG8gZHJvcDsKICAgfQogCi0gIGlmIChpbWFnZV9idWZmZXIgPT0gTlVMTCkgewotICAgIGlmIChpbmZvX2ZsYWdzICYga1ZURGVjb2RlSW5mb19GcmFtZURyb3BwZWQpCi0gICAgICBHU1RfREVCVUdfT0JKRUNUICh2dGRlYywgIkZyYW1lIGRyb3BwZWQgYnkgdmlkZW8gdG9vbGJveCIpOwotICAgIGVsc2UKKyAgaWYgKGltYWdlX2J1ZmZlcikgeworICAgIEdzdEJ1ZmZlciAqYnVmID0gTlVMTDsKKworICAgIC8qIEZJWE1FOiB1c2UgZ3N0X3ZpZGVvX2RlY29kZXJfYWxsb2NhdGVfb3V0cHV0X2J1ZmZlciAqLworICAgIHN0YXRlID0gZ3N0X3ZpZGVvX2RlY29kZXJfZ2V0X291dHB1dF9zdGF0ZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHZ0ZGVjKSk7CisgICAgaWYgKHN0YXRlID09IE5VTEwpIHsKKyAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnRkZWMsICJPdXRwdXQgc3RhdGUgbm90IGNvbmZpZ3VyZWQsIHJlbGVhc2UgYnVmZmVyIik7CisgICAgICBmcmFtZS0+ZmxhZ3MgJj0gVlRERUNfRlJBTUVfRkxBR19TS0lQOworICAgIH0gZWxzZSB7CisgICAgICBidWYgPSBnc3RfY29yZV92aWRlb19idWZmZXJfbmV3IChpbWFnZV9idWZmZXIsICZzdGF0ZS0+aW5mbyk7CisgICAgICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKHN0YXRlKTsKKyAgICAgIEdTVF9CVUZGRVJfUFRTIChidWYpID0gcHRzLnZhbHVlOworICAgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IGR1cmF0aW9uLnZhbHVlOworICAgICAgZnJhbWUtPm91dHB1dF9idWZmZXIgPSBidWY7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChpbmZvX2ZsYWdzICYga1ZURGVjb2RlSW5mb19GcmFtZURyb3BwZWQpIHsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKHZ0ZGVjLCAiRnJhbWUgZHJvcHBlZCBieSB2aWRlbyB0b29sYm94ICVwICVkIiwKKyAgICAgICAgICBmcmFtZSwgZnJhbWUtPmRlY29kZV9mcmFtZV9udW1iZXIpOworICAgICAgZnJhbWUtPmZsYWdzIHw9IFZUREVDX0ZSQU1FX0ZMQUdfRFJPUDsKKyAgICB9IGVsc2UgewogICAgICAgR1NUX0RFQlVHX09CSkVDVCAodnRkZWMsICJEZWNvZGVkIGZyYW1lIGlzIE5VTEwiKTsKLSAgICBnb3RvIGRyb3A7CisgICAgICBmcmFtZS0+ZmxhZ3MgfD0gVlRERUNfRlJBTUVfRkxBR19TS0lQOworICAgIH0KICAgfQogCi0gIC8qIEZJWE1FOiB1c2UgZ3N0X3ZpZGVvX2RlY29kZXJfYWxsb2NhdGVfb3V0cHV0X2J1ZmZlciAqLwotICBzdGF0ZSA9IGdzdF92aWRlb19kZWNvZGVyX2dldF9vdXRwdXRfc3RhdGUgKEdTVF9WSURFT19ERUNPREVSICh2dGRlYykpOwotICBpZiAoc3RhdGUgPT0gTlVMTCkgewotICAgIEdTVF9XQVJOSU5HX09CSkVDVCAodnRkZWMsICJPdXRwdXQgc3RhdGUgbm90IGNvbmZpZ3VyZWQsIHJlbGVhc2UgYnVmZmVyIik7Ci0gICAgLyogcmVsZWFzZSBhcyB0aGlzIHVzdWFsbHkgbWVhbnMgdGhhdCB0aGUgYmFzZWNsYXNzIGlzbid0IHJlYWR5IHRvIGRvCi0gICAgICogdGhlIFFvUyB0aGF0IF9kcm9wIHJlcXVpcmVzIGFuZCB3aWxsIGxlYWQgdG8gYW4gYXNzZXJ0aW9uIHdpdGggdGhlCi0gICAgICogc2VnbWVudC5mb3JtYXQgYmVpbmcgdW5kZWZpbmVkICovCi0gICAgZ290byByZWxlYXNlOwotICB9Ci0gIGJ1ZiA9Ci0gICAgICBnc3RfY29yZV92aWRlb19idWZmZXJfbmV3IChpbWFnZV9idWZmZXIsICZzdGF0ZS0+aW5mbywKLSAgICAgIHZ0ZGVjLT50ZXh0dXJlX2NhY2hlID09IE5VTEwpOwotICBnc3RfdmlkZW9fY29kZWNfc3RhdGVfdW5yZWYgKHN0YXRlKTsKLQotICBHU1RfQlVGRkVSX1BUUyAoYnVmKSA9IHB0cy52YWx1ZTsKLSAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IGR1cmF0aW9uLnZhbHVlOwotICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9IGJ1ZjsKICAgZ19hc3luY19xdWV1ZV9wdXNoX3NvcnRlZCAodnRkZWMtPnJlb3JkZXJfcXVldWUsIGZyYW1lLAogICAgICAgc29ydF9mcmFtZXNfYnlfcHRzLCBOVUxMKTsKLQotICByZXR1cm47Ci0KLWRyb3A6Ci0gIEdTVF9XQVJOSU5HX09CSkVDVCAodnRkZWMsICJGcmFtZSBkcm9wcGVkICVwICVkIiwgZnJhbWUsCi0gICAgICBmcmFtZS0+ZGVjb2RlX2ZyYW1lX251bWJlcik7Ci0gIGdzdF92aWRlb19kZWNvZGVyX2Ryb3BfZnJhbWUgKEdTVF9WSURFT19ERUNPREVSICh2dGRlYyksIGZyYW1lKTsKLSAgcmV0dXJuOwotCi1yZWxlYXNlOgotICBHU1RfV0FSTklOR19PQkpFQ1QgKHZ0ZGVjLCAiRnJhbWUgcmVsZWFzZWQgJXAgJWQiLCBmcmFtZSwKLSAgICAgIGZyYW1lLT5kZWNvZGVfZnJhbWVfbnVtYmVyKTsKLSAgZ3N0X3ZpZGVvX2RlY29kZXJfcmVsZWFzZV9mcmFtZSAoR1NUX1ZJREVPX0RFQ09ERVIgKHZ0ZGVjKSwgZnJhbWUpOwotICByZXR1cm47CiB9CiAKIHN0YXRpYyBHc3RGbG93UmV0dXJuCkBAIC03ODUsMTMgKzc3NCwxMSBAQAogICBHc3RGbG93UmV0dXJuIHJldCA9IEdTVF9GTE9XX09LOwogICBHc3RWaWRlb0RlY29kZXIgKmRlY29kZXIgPSBHU1RfVklERU9fREVDT0RFUiAodnRkZWMpOwogCi0gIC8qIEZJWE1FOiBJbnN0ZWFkIG9mIHRoaXMsIGltcGxlbWVudCBHc3RWaWRlb0RlY29kZXI6Om5lZ290aWF0ZSgpIGFuZAotICAgKiBqdXN0IGNhbGwgZ3N0X3ZpZGVvX2RlY29kZXJfbmVnb3RpYXRlKCkKLSAgICovCiAgIC8qIG5lZ290aWF0ZSBub3cgc28gdGhhdCB3ZSBrbm93IHdoZXRoZXIgd2UgbmVlZCB0byB1c2UgdGhlIEdMIHVwbG9hZCBtZXRhIG9yCiAgICAqIG5vdCAqLwotICBpZiAoZ3N0X3BhZF9jaGVja19yZWNvbmZpZ3VyZSAoZGVjb2Rlci0+c3JjcGFkKSkKKyAgaWYgKGdzdF9wYWRfY2hlY2tfcmVjb25maWd1cmUgKGRlY29kZXItPnNyY3BhZCkpIHsKICAgICBnc3RfdmlkZW9fZGVjb2Rlcl9uZWdvdGlhdGUgKGRlY29kZXIpOworICB9CiAKICAgaWYgKGRyYWluKQogICAgIFZURGVjb21wcmVzc2lvblNlc3Npb25XYWl0Rm9yQXN5bmNocm9ub3VzRnJhbWVzICh2dGRlYy0+c2Vzc2lvbik7CkBAIC04MDIsOSArNzg5LDkgQEAKICAgd2hpbGUgKChnX2FzeW5jX3F1ZXVlX2xlbmd0aCAodnRkZWMtPnJlb3JkZXJfcXVldWUpID49CiAgICAgICAgICAgdnRkZWMtPnJlb3JkZXJfcXVldWVfbGVuZ3RoKSB8fCBkcmFpbiB8fCBmbHVzaCkgewogICAgIGZyYW1lID0gKEdzdFZpZGVvQ29kZWNGcmFtZSAqKSBnX2FzeW5jX3F1ZXVlX3RyeV9wb3AgKHZ0ZGVjLT5yZW9yZGVyX3F1ZXVlKTsKLSAgICBpZiAoZnJhbWUgJiYgdnRkZWMtPnRleHR1cmVfY2FjaGUgIT0gTlVMTCkgeworICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+b3V0cHV0X2J1ZmZlciAmJiB2dGRlYy0+dGV4dHVyZV9jYWNoZSAhPSBOVUxMKSB7CiAgICAgICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9Ci0gICAgICAgICAgZ3N0X2NvcmVfdmlkZW9fdGV4dHVyZV9jYWNoZV9nZXRfZ2xfYnVmZmVyICh2dGRlYy0+dGV4dHVyZV9jYWNoZSwKKyAgICAgICAgICBnc3RfdmlkZW9fdGV4dHVyZV9jYWNoZV9nZXRfZ2xfYnVmZmVyICh2dGRlYy0+dGV4dHVyZV9jYWNoZSwKICAgICAgICAgICBmcmFtZS0+b3V0cHV0X2J1ZmZlcik7CiAgICAgICBpZiAoIWZyYW1lLT5vdXRwdXRfYnVmZmVyKQogICAgICAgICBHU1RfRVJST1JfT0JKRUNUICh2dGRlYywgImNvdWxkbid0IGdldCB0ZXh0dXJlcyBmcm9tIGJ1ZmZlciIpOwpAQCAtODE0LDcgKzgwMSw5IEBACiAgICAgICogZXhhbXBsZSkgb3Igd2UncmUgZHJhaW5pbmcvZmx1c2hpbmcKICAgICAgKi8KICAgICBpZiAoZnJhbWUpIHsKLSAgICAgIGlmIChmbHVzaCkKKyAgICAgIGlmIChmbHVzaCB8fCBmcmFtZS0+ZmxhZ3MgJiBWVERFQ19GUkFNRV9GTEFHX1NLSVApCisgICAgICAgIGdzdF92aWRlb19kZWNvZGVyX3JlbGVhc2VfZnJhbWUgKGRlY29kZXIsIGZyYW1lKTsKKyAgICAgIGVsc2UgaWYgKGZyYW1lLT5mbGFncyAmIFZUREVDX0ZSQU1FX0ZMQUdfRFJPUCkKICAgICAgICAgZ3N0X3ZpZGVvX2RlY29kZXJfZHJvcF9mcmFtZSAoZGVjb2RlciwgZnJhbWUpOwogICAgICAgZWxzZQogICAgICAgICByZXQgPSBnc3RfdmlkZW9fZGVjb2Rlcl9maW5pc2hfZnJhbWUgKGRlY29kZXIsIGZyYW1lKTsKQEAgLTk4OSw2ICs5NzgsMTggQEAKICAgZ3N0X3ZpZGVvX2RlY29kZXJfc2V0X2xhdGVuY3kgKEdTVF9WSURFT19ERUNPREVSICh2dGRlYyksIGxhdGVuY3ksIGxhdGVuY3kpOwogfQogCitzdGF0aWMgdm9pZAorZ3N0X3Z0ZGVjX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpCit7CisgIEdzdFZ0ZGVjICp2dGRlYyA9IEdTVF9WVERFQyAoZWxlbWVudCk7CisKKyAgR1NUX0lORk9fT0JKRUNUIChlbGVtZW50LCAic2V0dGluZyBjb250ZXh0ICVzIiwKKyAgICAgIGdzdF9jb250ZXh0X2dldF9jb250ZXh0X3R5cGUgKGNvbnRleHQpKTsKKyAgZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCwKKyAgICAgICZ2dGRlYy0+Y3R4aC0+ZGlzcGxheSwgJnZ0ZGVjLT5jdHhoLT5vdGhlcl9jb250ZXh0KTsKKyAgR1NUX0VMRU1FTlRfQ0xBU1MgKGdzdF92dGRlY19wYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7Cit9CisKICNpZm5kZWYgSEFWRV9JT1MKICNkZWZpbmUgR1NUX1RZUEVfVlRERUNfSFcgICAoZ3N0X3Z0ZGVjX2h3X2dldF90eXBlKCkpCiAjZGVmaW5lIEdTVF9WVERFQ19IVyhvYmopICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1ZUREVDX0hXLEdzdFZ0ZGVjSHcpKQpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvdnRkZWMuaCBiL3N5cy9hcHBsZW1lZGlhL3Z0ZGVjLmgKaW5kZXggNGI5Yzc4OC4uNDYzNTRkOCAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvdnRkZWMuaAorKysgYi9zeXMvYXBwbGVtZWRpYS92dGRlYy5oCkBAIC0yNSw3ICsyNSw4IEBACiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvZGVjb2Rlci5oPgogI2luY2x1ZGUgPENvcmVNZWRpYS9Db3JlTWVkaWEuaD4KICNpbmNsdWRlIDxWaWRlb1Rvb2xib3gvVmlkZW9Ub29sYm94Lmg+Ci0jaW5jbHVkZSAiY29yZXZpZGVvdGV4dHVyZWNhY2hlLmgiCisjaW5jbHVkZSAidmlkZW90ZXh0dXJlY2FjaGUuaCIKKyNpbmNsdWRlICJnbGNvbnRleHRoZWxwZXIuaCIKIAogR19CRUdJTl9ERUNMUwogCkBAIC00MSwxMiArNDIsMTQgQEAKIHN0cnVjdCBfR3N0VnRkZWMKIHsKICAgR3N0VmlkZW9EZWNvZGVyIGJhc2VfdnRkZWM7CisgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqaW5wdXRfc3RhdGU7CiAgIEdzdFZpZGVvSW5mbyB2aWRlb19pbmZvOwogICBDTUZvcm1hdERlc2NyaXB0aW9uUmVmIGZvcm1hdF9kZXNjcmlwdGlvbjsKICAgVlREZWNvbXByZXNzaW9uU2Vzc2lvblJlZiBzZXNzaW9uOwogICBHQXN5bmNRdWV1ZSAqcmVvcmRlcl9xdWV1ZTsKICAgZ2ludCByZW9yZGVyX3F1ZXVlX2xlbmd0aDsKLSAgR3N0Q29yZVZpZGVvVGV4dHVyZUNhY2hlICp0ZXh0dXJlX2NhY2hlOworICBHc3RWaWRlb1RleHR1cmVDYWNoZSAqdGV4dHVyZV9jYWNoZTsKKyAgR3N0R0xDb250ZXh0SGVscGVyICpjdHhoOwogCiAgIGdib29sZWFuIHJlcXVpcmVfaGFyZHdhcmU7CiB9OwpkaWZmIC0tZ2l0IGEvc3lzL2FwcGxlbWVkaWEvdnRlbmMuYyBiL3N5cy9hcHBsZW1lZGlhL3Z0ZW5jLmMKaW5kZXggZjBhZjc1MS4uZGU2MDI3MiAxMDA2NDQKLS0tIGEvc3lzL2FwcGxlbWVkaWEvdnRlbmMuYworKysgYi9zeXMvYXBwbGVtZWRpYS92dGVuYy5jCkBAIC0xMzYsOCArMTM2LDEzIEBACiAgICAgY29uc3Qgdm9pZCAqcGxhbmVBZGRyZXNzZXNbXSk7CiAjZW5kaWYKIAorI2lmZGVmIEhBVkVfSU9TCiBzdGF0aWMgR3N0U3RhdGljQ2FwcyBzaW5rX2NhcHMgPQogR1NUX1NUQVRJQ19DQVBTIChHU1RfVklERU9fQ0FQU19NQUtFICgieyBOVjEyLCBJNDIwIH0iKSk7CisjZWxzZQorc3RhdGljIEdzdFN0YXRpY0NhcHMgc2lua19jYXBzID0KK0dTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoInsgVVlWWSwgTlYxMiwgSTQyMCB9IikpOworI2VuZGlmCiAKIHN0YXRpYyB2b2lkCiBnc3RfdnRlbmNfYmFzZV9pbml0IChHc3RWVEVuY0NsYXNzICoga2xhc3MpCkBAIC0xMTA3LDggKzExMTIsNyBAQAogICAgICAgZ290byBjdl9lcnJvcjsKICAgICB9CiAKLSAgICBvdXRidWYgPQotICAgICAgICBnc3RfY29yZV92aWRlb19idWZmZXJfbmV3ICgoQ1ZCdWZmZXJSZWYpIHBidWYsICZzZWxmLT52aWRlb19pbmZvLCBUUlVFKTsKKyAgICBvdXRidWYgPSBnc3RfY29yZV92aWRlb19idWZmZXJfbmV3ICgoQ1ZCdWZmZXJSZWYpIHBidWYsICZzZWxmLT52aWRlb19pbmZvKTsKICAgICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZvdXRmcmFtZSwgJnNlbGYtPnZpZGVvX2luZm8sIG91dGJ1ZiwKICAgICAgICAgICAgIEdTVF9NQVBfV1JJVEUpKSB7CiAgICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZpbmZyYW1lKTsKQEAgLTExNjQsNiArMTE2OCw5IEBACiAgICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgogICAgICAgICAgIHBpeGVsX2Zvcm1hdF90eXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMFlwQ2JDcjhCaVBsYW5hclZpZGVvUmFuZ2U7CiAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9VWVZZOgorICAgICAgICAgIHBpeGVsX2Zvcm1hdF90eXBlID0ga0NWUGl4ZWxGb3JtYXRUeXBlXzQyMllwQ2JDcjg7CisgICAgICAgICAgYnJlYWs7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAgZ3N0X3Z0ZW5jX2ZyYW1lX2ZyZWUgKHZmcmFtZSk7CiAgICAgICAgICAgZ290byBjdl9lcnJvcjsKQEAgLTEyODcsNyArMTI5NCw3IEBACiAKICAgLyogV2UgYXJlIGRlYWxpbmcgd2l0aCBibG9jayBidWZmZXJzIGhlcmUsIHNvIHdlIGRvbid0IG5lZWQKICAgICogdG8gZW5hYmxlIHRoZSB1c2Ugb2YgdGhlIHZpZGVvIG1ldGEgQVBJIG9uIHRoZSBjb3JlIG1lZGlhIGJ1ZmZlciAqLwotICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9IGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXcgKHNhbXBsZUJ1ZmZlciwgRkFMU0UsIFRSVUUpOworICBmcmFtZS0+b3V0cHV0X2J1ZmZlciA9IGdzdF9jb3JlX21lZGlhX2J1ZmZlcl9uZXcgKHNhbXBsZUJ1ZmZlciwgRkFMU0UpOwogCiBiZWFjaDoKICAgLyogbmVlZGVkIGFueXdheSBzbyB0aGUgZnJhbWUgd2lsbCBiZSByZWxlYXNlZCAqLwpkaWZmIC0tZ2l0IGEvc3lzL2F2Yy9NYWtlZmlsZS5pbiBiL3N5cy9hdmMvTWFrZWZpbGUuaW4KaW5kZXggNzIyZGU1Zi4uMGNkZTAxMiAxMDA2NDQKLS0tIGEvc3lzL2F2Yy9NYWtlZmlsZS5pbgorKysgYi9zeXMvYXZjL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3NSw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMiw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMCw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzksOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NywxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Miw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTcsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE4LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzEsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ4LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDUsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Niw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc2LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NSw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIyLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL2JsdWV6L01ha2VmaWxlLmluIGIvc3lzL2JsdWV6L01ha2VmaWxlLmluCmluZGV4IDZkYjY2OTIuLjYyMTdhZjMgMTAwNjQ0Ci0tLSBhL3N5cy9ibHVlei9NYWtlZmlsZS5pbgorKysgYi9zeXMvYmx1ZXovTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjgwLDYgKzI3OSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE3LDYgKzMxOCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI1LDcgKzMyOCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0NCw4ICszNDYsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYyLDE2ICszNjUsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk3LDYgKzQwMSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMiw2ICs0MjgsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjMsNiArNTMxLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNiw4ICs1NDUsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTMsNiArNTYwLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxMCwxNiArNjE5LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcxLDYgKzY4Miw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODEsNiArNjkzLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjkwLDYgKzcwMyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjcsNyArNzQyLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvYmx1ZXovZ3N0YTJkcHNpbmsuYyBiL3N5cy9ibHVlei9nc3RhMmRwc2luay5jCmluZGV4IDdiOWY5MjIuLjQyNGI1NmMgMTAwNjQ0Ci0tLSBhL3N5cy9ibHVlei9nc3RhMmRwc2luay5jCisrKyBiL3N5cy9ibHVlei9nc3RhMmRwc2luay5jCkBAIC0xNTcsOCArMTU3LDcgQEAKICAgICAgIGlmIChzZWxmLT5zaW5rICE9IE5VTEwpCiAgICAgICAgIGdzdF9hdmR0cF9zaW5rX3NldF9kZXZpY2UgKHNlbGYtPnNpbmssIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKIAotICAgICAgaWYgKHNlbGYtPmRldmljZSAhPSBOVUxMKQotICAgICAgICBnX2ZyZWUgKHNlbGYtPmRldmljZSk7CisgICAgICBnX2ZyZWUgKHNlbGYtPmRldmljZSk7CiAgICAgICBzZWxmLT5kZXZpY2UgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKICAgICAgIGJyZWFrOwogCkBAIC0xNjYsOCArMTY1LDcgQEAKICAgICAgIGlmIChzZWxmLT5zaW5rICE9IE5VTEwpCiAgICAgICAgIGdzdF9hdmR0cF9zaW5rX3NldF90cmFuc3BvcnQgKHNlbGYtPnNpbmssIGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKIAotICAgICAgaWYgKHNlbGYtPnRyYW5zcG9ydCAhPSBOVUxMKQotICAgICAgICBnX2ZyZWUgKHNlbGYtPnRyYW5zcG9ydCk7CisgICAgICBnX2ZyZWUgKHNlbGYtPnRyYW5zcG9ydCk7CiAgICAgICBzZWxmLT50cmFuc3BvcnQgPSBnX3ZhbHVlX2R1cF9zdHJpbmcgKHZhbHVlKTsKICAgICAgIGJyZWFrOwogCmRpZmYgLS1naXQgYS9zeXMvYmx1ZXovZ3N0YXZkdHBzaW5rLmMgYi9zeXMvYmx1ZXovZ3N0YXZkdHBzaW5rLmMKaW5kZXggNzBkYzc0Mi4uMGY3MmE3NCAxMDA2NDQKLS0tIGEvc3lzL2JsdWV6L2dzdGF2ZHRwc2luay5jCisrKyBiL3N5cy9ibHVlei9nc3RhdmR0cHNpbmsuYwpAQCAtNDUxLDggKzQ1MSw3IEBACiB2b2lkCiBnc3RfYXZkdHBfc2lua19zZXRfZGV2aWNlIChHc3RBdmR0cFNpbmsgKiBzZWxmLCBjb25zdCBnY2hhciAqIGRldikKIHsKLSAgaWYgKHNlbGYtPmNvbm4uZGV2aWNlICE9IE5VTEwpCi0gICAgZ19mcmVlIChzZWxmLT5jb25uLmRldmljZSk7CisgIGdfZnJlZSAoc2VsZi0+Y29ubi5kZXZpY2UpOwogCiAgIEdTVF9MT0dfT0JKRUNUIChzZWxmLCAiU2V0dGluZyBkZXZpY2U6ICVzIiwgZGV2KTsKICAgc2VsZi0+Y29ubi5kZXZpY2UgPSBnX3N0cmR1cCAoZGV2KTsKQEAgLTQ2MSw4ICs0NjAsNyBAQAogdm9pZAogZ3N0X2F2ZHRwX3Npbmtfc2V0X3RyYW5zcG9ydCAoR3N0QXZkdHBTaW5rICogc2VsZiwgY29uc3QgZ2NoYXIgKiB0cmFucykKIHsKLSAgaWYgKHNlbGYtPmNvbm4udHJhbnNwb3J0ICE9IE5VTEwpCi0gICAgZ19mcmVlIChzZWxmLT5jb25uLnRyYW5zcG9ydCk7CisgIGdfZnJlZSAoc2VsZi0+Y29ubi50cmFuc3BvcnQpOwogCiAgIEdTVF9MT0dfT0JKRUNUIChzZWxmLCAiU2V0dGluZyB0cmFuc3BvcnQ6ICVzIiwgdHJhbnMpOwogICBzZWxmLT5jb25uLnRyYW5zcG9ydCA9IGdfc3RyZHVwICh0cmFucyk7CmRpZmYgLS1naXQgYS9zeXMvYmx1ZXovZ3N0YXZkdHB1dGlsLmMgYi9zeXMvYmx1ZXovZ3N0YXZkdHB1dGlsLmMKaW5kZXggYTQzNWM2YS4uZWZjNGY0MiAxMDA2NDQKLS0tIGEvc3lzL2JsdWV6L2dzdGF2ZHRwdXRpbC5jCisrKyBiL3N5cy9ibHVlei9nc3RhdmR0cHV0aWwuYwpAQCAtMjEzLDggKzIxMyw3IEBACiB2b2lkCiBnc3RfYXZkdHBfY29ubmVjdGlvbl9zZXRfZGV2aWNlIChHc3RBdmR0cENvbm5lY3Rpb24gKiBjb25uLCBjb25zdCBjaGFyICpkZXZpY2UpCiB7Ci0gIGlmIChjb25uLT5kZXZpY2UpCi0gICAgZ19mcmVlIChjb25uLT5kZXZpY2UpOworICBnX2ZyZWUgKGNvbm4tPmRldmljZSk7CiAKICAgY29ubi0+ZGV2aWNlID0gZ19zdHJkdXAgKGRldmljZSk7CiB9CkBAIC0yMjMsOCArMjIyLDcgQEAKIGdzdF9hdmR0cF9jb25uZWN0aW9uX3NldF90cmFuc3BvcnQgKEdzdEF2ZHRwQ29ubmVjdGlvbiAqIGNvbm4sCiAgICAgY29uc3QgY2hhciAqdHJhbnNwb3J0KQogewotICBpZiAoY29ubi0+dHJhbnNwb3J0KQotICAgIGdfZnJlZSAoY29ubi0+dHJhbnNwb3J0KTsKKyAgZ19mcmVlIChjb25uLT50cmFuc3BvcnQpOwogCiAgIGNvbm4tPnRyYW5zcG9ydCA9IGdfc3RyZHVwICh0cmFuc3BvcnQpOwogfQpkaWZmIC0tZ2l0IGEvc3lzL2QzZHZpZGVvc2luay9NYWtlZmlsZS5pbiBiL3N5cy9kM2R2aWRlb3NpbmsvTWFrZWZpbGUuaW4KaW5kZXggYjM3Mjg4YS4uNTZmZTM5NyAxMDA2NDQKLS0tIGEvc3lzL2QzZHZpZGVvc2luay9NYWtlZmlsZS5pbgorKysgYi9zeXMvZDNkdmlkZW9zaW5rL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL2RlY2tsaW5rL01ha2VmaWxlLmluIGIvc3lzL2RlY2tsaW5rL01ha2VmaWxlLmluCmluZGV4IGE1MjA1NDUuLjlkMzU1ZmQgMTAwNjQ0Ci0tLSBhL3N5cy9kZWNrbGluay9NYWtlZmlsZS5pbgorKysgYi9zeXMvZGVja2xpbmsvTWFrZWZpbGUuaW4KQEAgLTEyNSwxNiArMTI1LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjk2LDYgKzI5NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzMzLDYgKzMzNCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzQxLDcgKzM0NCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM2MCw4ICszNjIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzc4LDE2ICszODEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDEzLDYgKzQxNyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQzOCw2ICs0NDQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MzksNiArNTQ3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU1Miw4ICs1NjEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NjksNiArNTc2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYyNiwxNiArNjM1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjg3LDYgKzY5OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02OTcsNiArNzA5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNzA2LDYgKzcxOSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03NDMsNyArNzU4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmsuY3BwIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rLmNwcAppbmRleCBlYjM5YmRiLi42NDYzN2YxIDEwMDY0NAotLS0gYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmsuY3BwCisrKyBiL3N5cy9kZWNrbGluay9nc3RkZWNrbGluay5jcHAKQEAgLTMxNiwyOCArMzE2LDUzIEBACiB9CiAKIHN0YXRpYyBHc3RTdHJ1Y3R1cmUgKgotZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X3N0cnVjdHVyZSAoR3N0RGVja2xpbmtNb2RlRW51bSBlKQorZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X3N0cnVjdHVyZSAoR3N0RGVja2xpbmtNb2RlRW51bSBlLCBCTURQaXhlbEZvcm1hdCBmKQogewogICBjb25zdCBHc3REZWNrbGlua01vZGUgKm1vZGUgPSAmbW9kZXNbZV07Ci0KLSAgcmV0dXJuIGdzdF9zdHJ1Y3R1cmVfbmV3ICgidmlkZW8veC1yYXciLAotICAgICAgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJVWVZZIiwKKyAgR3N0U3RydWN0dXJlICpzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJ2aWRlby94LXJhdyIsCiAgICAgICAid2lkdGgiLCBHX1RZUEVfSU5ULCBtb2RlLT53aWR0aCwKICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCBtb2RlLT5oZWlnaHQsCi0gICAgICAiZnJhbWVyYXRlIiwgR1NUX1RZUEVfRlJBQ1RJT04sIG1vZGUtPmZwc19uLCBtb2RlLT5mcHNfZCwKLSAgICAgICJpbnRlcmxhY2UtbW9kZSIsIEdfVFlQRV9TVFJJTkcsCi0gICAgICBtb2RlLT5pbnRlcmxhY2VkID8gImludGVybGVhdmVkIiA6ICJwcm9ncmVzc2l2ZSIsICJwaXhlbC1hc3BlY3QtcmF0aW8iLAotICAgICAgR1NUX1RZUEVfRlJBQ1RJT04sIG1vZGUtPnBhcl9uLCBtb2RlLT5wYXJfZCwgImNvbG9yaW1ldHJ5IiwgR19UWVBFX1NUUklORywKLSAgICAgIG1vZGUtPmNvbG9yaW1ldHJ5LCAiY2hyb21hLXNpdGUiLCBHX1RZUEVfU1RSSU5HLCAibXBlZzIiLCBOVUxMKTsKKyAgICAgICJwaXhlbC1hc3BlY3QtcmF0aW8iLCBHU1RfVFlQRV9GUkFDVElPTiwgbW9kZS0+cGFyX24sIG1vZGUtPnBhcl9kLAorICAgICAgImludGVybGFjZS1tb2RlIiwgR19UWVBFX1NUUklORywgbW9kZS0+aW50ZXJsYWNlZCA/ICJpbnRlcmxlYXZlZCIgOiAicHJvZ3Jlc3NpdmUiLAorICAgICAgImZyYW1lcmF0ZSIsIEdTVF9UWVBFX0ZSQUNUSU9OLCBtb2RlLT5mcHNfbiwgbW9kZS0+ZnBzX2QsIE5VTEwpOworCisgIHN3aXRjaCAoZikgeworICAgIGNhc2UgYm1kRm9ybWF0OEJpdFlVVjogLyogJzJ2dXknICovCisgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJVWVZZIiwKKyAgICAgICAgICAiY29sb3JpbWV0cnkiLCBHX1RZUEVfU1RSSU5HLCBtb2RlLT5jb2xvcmltZXRyeSwKKyAgICAgICAgICAiY2hyb21hLXNpdGUiLCBHX1RZUEVfU1RSSU5HLCAibXBlZzIiLCBOVUxMKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgYm1kRm9ybWF0MTBCaXRZVVY6IC8qICd2MjEwJyAqLworICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJmb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAidjIxMCIsIE5VTEwpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBibWRGb3JtYXQ4Qml0QVJHQjogLyogJ0FSR0InICovCisgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgImZvcm1hdCIsIEdfVFlQRV9TVFJJTkcsICJBUkdCIiwgTlVMTCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIGJtZEZvcm1hdDhCaXRCR1JBOiAvKiAnQkdSQScgKi8KKyAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgIkJHUkEiLCBOVUxMKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgYm1kRm9ybWF0MTBCaXRSR0I6IC8qICdyMjEwJyBCaWctZW5kaWFuIFJHQiAxMC1iaXQgcGVyIGNvbXBvbmVudCB3aXRoIFNNUFRFIHZpZGVvIGxldmVscyAoNjQtOTYwKS4gUGFja2VkIGFzIDI6MTA6MTA6MTAgKi8KKyAgICBjYXNlIGJtZEZvcm1hdDEyQml0UkdCOiAvKiAnUjEyQicgQmlnLWVuZGlhbiBSR0IgMTItYml0IHBlciBjb21wb25lbnQgd2l0aCBmdWxsIHJhbmdlICgwLTQwOTUpLiBQYWNrZWQgYXMgMTItYml0IHBlciBjb21wb25lbnQgKi8KKyAgICBjYXNlIGJtZEZvcm1hdDEyQml0UkdCTEU6IC8qICdSMTJMJyBMaXR0bGUtZW5kaWFuIFJHQiAxMi1iaXQgcGVyIGNvbXBvbmVudCB3aXRoIGZ1bGwgcmFuZ2UgKDAtNDA5NSkuIFBhY2tlZCBhcyAxMi1iaXQgcGVyIGNvbXBvbmVudCAqLworICAgIGNhc2UgYm1kRm9ybWF0MTBCaXRSR0JYTEU6IC8qICdSMTBsJyBMaXR0bGUtZW5kaWFuIDEwLWJpdCBSR0Igd2l0aCBTTVBURSB2aWRlbyBsZXZlbHMgKDY0LTk0MCkgKi8KKyAgICBjYXNlIGJtZEZvcm1hdDEwQml0UkdCWDogLyogJ1IxMGInIEJpZy1lbmRpYW4gMTAtYml0IFJHQiB3aXRoIFNNUFRFIHZpZGVvIGxldmVscyAoNjQtOTQwKSAqLworICAgIGRlZmF1bHQ6CisgICAgICBHU1RfV0FSTklORyAoImZvcm1hdCBub3Qgc3VwcG9ydGVkICVkIiwgZik7CisgICAgICBnc3Rfc3RydWN0dXJlX2ZyZWUgKHMpOworICAgICAgcyA9IE5VTEw7CisgICAgICBicmVhazsKKyAgfQorCisgIHJldHVybiBzOwogfQogCiBHc3RDYXBzICoKLWdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChHc3REZWNrbGlua01vZGVFbnVtIGUpCitnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoR3N0RGVja2xpbmtNb2RlRW51bSBlLCBCTURQaXhlbEZvcm1hdCBmKQogewogICBHc3RDYXBzICpjYXBzOwogCiAgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHkgKCk7Ci0gIGdzdF9jYXBzX2FwcGVuZF9zdHJ1Y3R1cmUgKGNhcHMsIGdzdF9kZWNrbGlua19tb2RlX2dldF9zdHJ1Y3R1cmUgKGUpKTsKKyAgZ3N0X2NhcHNfYXBwZW5kX3N0cnVjdHVyZSAoY2FwcywgZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X3N0cnVjdHVyZSAoZSwgZikpOwogCiAgIHJldHVybiBjYXBzOwogfQpAQCAtMzUxLDEzICszNzYsMzMgQEAKIAogICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5ICgpOwogICBmb3IgKGkgPSAxOyBpIDwgKGludCkgR19OX0VMRU1FTlRTIChtb2Rlcyk7IGkrKykgewotICAgIHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfc3RydWN0dXJlICgoR3N0RGVja2xpbmtNb2RlRW51bSkgaSk7CisgICAgcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9zdHJ1Y3R1cmUgKChHc3REZWNrbGlua01vZGVFbnVtKSBpLCBibWRGb3JtYXQ4Qml0WVVWKTsKKyAgICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlIChjYXBzLCBzKTsKKyAgICBzID0gZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X3N0cnVjdHVyZSAoKEdzdERlY2tsaW5rTW9kZUVudW0pIGksIGJtZEZvcm1hdDhCaXRBUkdCKTsKICAgICBnc3RfY2Fwc19hcHBlbmRfc3RydWN0dXJlIChjYXBzLCBzKTsKICAgfQogCiAgIHJldHVybiBjYXBzOwogfQogCitjb25zdCBHc3REZWNrbGlua01vZGUgKgorZ3N0X2RlY2tsaW5rX2ZpbmRfbW9kZV9mb3JfY2FwcyAoR3N0Q2FwcyAqIGNhcHMpCit7CisgIGludCBpOworICBHc3RDYXBzICptb2RlX2NhcHM7CisKKyAgZm9yIChpID0gMTsgaSA8IChpbnQpIEdfTl9FTEVNRU5UUyAobW9kZXMpOyBpKyspIHsKKyAgICBtb2RlX2NhcHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoKEdzdERlY2tsaW5rTW9kZUVudW0pIGksIGJtZEZvcm1hdDhCaXRZVVYpOworICAgIGlmIChnc3RfY2Fwc19jYW5faW50ZXJzZWN0IChjYXBzLCBtb2RlX2NhcHMpKSB7CisgICAgICBnc3RfY2Fwc191bnJlZiAobW9kZV9jYXBzKTsKKyAgICAgIHJldHVybiBnc3RfZGVja2xpbmtfZ2V0X21vZGUgKChHc3REZWNrbGlua01vZGVFbnVtKSBpKTsKKyAgICB9CisgICAgZ3N0X2NhcHNfdW5yZWYgKG1vZGVfY2Fwcyk7CisgIH0KKworICByZXR1cm4gTlVMTDsKK30KKwogI2RlZmluZSBHU1RfVFlQRV9ERUNLTElOS19DTE9DSyBcCiAgIChnc3RfZGVja2xpbmtfY2xvY2tfZ2V0X3R5cGUoKSkKICNkZWZpbmUgR1NUX0RFQ0tMSU5LX0NMT0NLKG9iaikgXApAQCAtNDUyLDE5ICs0OTcsMjUgQEAKIAogICB2aXJ0dWFsIEhSRVNVTFQgU1RETUVUSE9EQ0FMTFRZUEUKICAgICAgIFZpZGVvSW5wdXRGb3JtYXRDaGFuZ2VkIChCTURWaWRlb0lucHV0Rm9ybWF0Q2hhbmdlZEV2ZW50cywKLSAgICAgIElEZWNrTGlua0Rpc3BsYXlNb2RlICogbW9kZSwgQk1ERGV0ZWN0ZWRWaWRlb0lucHV0Rm9ybWF0RmxhZ3MpCisgICAgICBJRGVja0xpbmtEaXNwbGF5TW9kZSAqIG1vZGUsIEJNRERldGVjdGVkVmlkZW9JbnB1dEZvcm1hdEZsYWdzIGZvcm1hdEZsYWdzKQogICB7CisgICAgQk1EUGl4ZWxGb3JtYXQgcGl4ZWxGb3JtYXQgPSBibWRGb3JtYXQ4Qml0WVVWOworCiAgICAgR1NUX0lORk8gKCJWaWRlbyBpbnB1dCBmb3JtYXQgY2hhbmdlZCIpOwogCisgICAgaWYgKGZvcm1hdEZsYWdzICYgYm1kRGV0ZWN0ZWRWaWRlb0lucHV0UkdCNDQ0KQorICAgICAgcGl4ZWxGb3JtYXQgPSBibWRGb3JtYXQ4Qml0QVJHQjsKKwogICAgIGdfbXV0ZXhfbG9jayAoJm1faW5wdXQtPmxvY2spOwogICAgIG1faW5wdXQtPmlucHV0LT5QYXVzZVN0cmVhbXMgKCk7CiAgICAgbV9pbnB1dC0+aW5wdXQtPkVuYWJsZVZpZGVvSW5wdXQgKG1vZGUtPkdldERpc3BsYXlNb2RlICgpLAotICAgICAgICBibWRGb3JtYXQ4Qml0WVVWLCBibWRWaWRlb0lucHV0RW5hYmxlRm9ybWF0RGV0ZWN0aW9uKTsKKyAgICAgICAgcGl4ZWxGb3JtYXQsIGJtZFZpZGVvSW5wdXRFbmFibGVGb3JtYXREZXRlY3Rpb24pOwogICAgIG1faW5wdXQtPmlucHV0LT5GbHVzaFN0cmVhbXMgKCk7CiAgICAgbV9pbnB1dC0+aW5wdXQtPlN0YXJ0U3RyZWFtcyAoKTsKICAgICBtX2lucHV0LT5tb2RlID0KICAgICAgICAgZ3N0X2RlY2tsaW5rX2dldF9tb2RlIChnc3RfZGVja2xpbmtfZ2V0X21vZGVfZW51bV9mcm9tX2JtZAogICAgICAgICAobW9kZS0+R2V0RGlzcGxheU1vZGUgKCkpKTsKKyAgICBtX2lucHV0LT5mb3JtYXQgPSBwaXhlbEZvcm1hdDsKICAgICBnX211dGV4X3VubG9jayAoJm1faW5wdXQtPmxvY2spOwogCiAgICAgcmV0dXJuIFNfT0s7CmRpZmYgLS1naXQgYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmsuaCBiL3N5cy9kZWNrbGluay9nc3RkZWNrbGluay5oCmluZGV4IDM1Mzc2OWYuLjZjMzJmZWUgMTAwNjQ0Ci0tLSBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGluay5oCisrKyBiL3N5cy9kZWNrbGluay9nc3RkZWNrbGluay5oCkBAIC0xMjYsNyArMTI2LDcgQEAKIGNvbnN0IEdzdERlY2tsaW5rTW9kZSAqIGdzdF9kZWNrbGlua19nZXRfbW9kZSAoR3N0RGVja2xpbmtNb2RlRW51bSBlKTsKIGNvbnN0IEdzdERlY2tsaW5rTW9kZUVudW0gZ3N0X2RlY2tsaW5rX2dldF9tb2RlX2VudW1fZnJvbV9ibWQgKEJNRERpc3BsYXlNb2RlIG1vZGUpOwogY29uc3QgQk1EVmlkZW9Db25uZWN0aW9uIGdzdF9kZWNrbGlua19nZXRfY29ubmVjdGlvbiAoR3N0RGVja2xpbmtDb25uZWN0aW9uRW51bSBlKTsKLUdzdENhcHMgKiBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoR3N0RGVja2xpbmtNb2RlRW51bSBlKTsKK0dzdENhcHMgKiBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoR3N0RGVja2xpbmtNb2RlRW51bSBlLCBCTURQaXhlbEZvcm1hdCBmKTsKIEdzdENhcHMgKiBnc3RfZGVja2xpbmtfbW9kZV9nZXRfdGVtcGxhdGVfY2FwcyAodm9pZCk7CiAKIHR5cGVkZWYgc3RydWN0IF9Hc3REZWNrbGlua091dHB1dCBHc3REZWNrbGlua091dHB1dDsKQEAgLTE3Miw2ICsxNzIsNyBAQAogICB2b2lkICgqZ290X3ZpZGVvX2ZyYW1lKSAoR3N0RWxlbWVudCAqdmlkZW9zcmMsIElEZWNrTGlua1ZpZGVvSW5wdXRGcmFtZSAqIGZyYW1lLCBHc3REZWNrbGlua01vZGVFbnVtIG1vZGUsIEdzdENsb2NrVGltZSBjYXB0dXJlX3RpbWUsIEdzdENsb2NrVGltZSBjYXB0dXJlX2R1cmF0aW9uKTsKICAgLyogQ29uZmlndXJlZCBtb2RlIG9yIE5VTEwgKi8KICAgY29uc3QgR3N0RGVja2xpbmtNb2RlICptb2RlOworICBCTURQaXhlbEZvcm1hdCBmb3JtYXQ7CiAKICAgLyogU2V0IGJ5IHRoZSBhdWRpbyBzb3VyY2UgKi8KICAgdm9pZCAoKmdvdF9hdWRpb19wYWNrZXQpIChHc3RFbGVtZW50ICp2aWRlb3NyYywgSURlY2tMaW5rQXVkaW9JbnB1dFBhY2tldCAqIHBhY2tldCwgR3N0Q2xvY2tUaW1lIGNhcHR1cmVfdGltZSk7CkBAIC0xOTIsNCArMTkzLDYgQEAKIEdzdERlY2tsaW5rSW5wdXQgKiAgZ3N0X2RlY2tsaW5rX2FjcXVpcmVfbnRoX2lucHV0IChnaW50IG4sIEdzdEVsZW1lbnQgKiBzcmMsIGdib29sZWFuIGlzX2F1ZGlvKTsKIHZvaWQgICAgICAgICAgICAgICAgZ3N0X2RlY2tsaW5rX3JlbGVhc2VfbnRoX2lucHV0IChnaW50IG4sIEdzdEVsZW1lbnQgKiBzcmMsIGdib29sZWFuIGlzX2F1ZGlvKTsKIAorY29uc3QgR3N0RGVja2xpbmtNb2RlICogZ3N0X2RlY2tsaW5rX2ZpbmRfbW9kZV9mb3JfY2FwcyAoR3N0Q2FwcyAqIGNhcHMpOworCiAjZW5kaWYKZGlmZiAtLWdpdCBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua2F1ZGlvc3JjLmNwcCBiL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua2F1ZGlvc3JjLmNwcAppbmRleCBhOTI4NGQxLi45YTcwMWVlIDEwMDY0NAotLS0gYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmthdWRpb3NyYy5jcHAKKysrIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rYXVkaW9zcmMuY3BwCkBAIC01NTYsOSArNTU2LDEwIEBACiAgICAgICAgICAgc2VsZi0+bmV4dF9vZmZzZXQsIHN0YXJ0X29mZnNldCk7CiAgICAgR1NUX0JVRkZFUl9GTEFHX1NFVCAoKmJ1ZmZlciwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwogICAgIHNlbGYtPm5leHRfb2Zmc2V0ID0gZW5kX29mZnNldDsKKyAgICAvLyBHb3QgYSBkaXNjb250IGFuZCBhZGp1c3RlZCwgcmVzZXQgdGhlIGRpc2NvbnRfdGltZSBtYXJrZXIuCisgICAgc2VsZi0+ZGlzY29udF90aW1lID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgfSBlbHNlIHsKICAgICAvLyBObyBkaXNjb250LCBqdXN0IGtlZXAgY291bnRpbmcKLSAgICBzZWxmLT5kaXNjb250X3RpbWUgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwogICAgIHRpbWVzdGFtcCA9CiAgICAgICAgIGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAoc2VsZi0+bmV4dF9vZmZzZXQsIEdTVF9TRUNPTkQsIHNlbGYtPmluZm8ucmF0ZSk7CiAgICAgc2VsZi0+bmV4dF9vZmZzZXQgKz0gc2FtcGxlX2NvdW50OwpAQCAtNjg4LDggKzY4OSw3IEBACiB7CiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNlbGYsICJTdG9wcGluZyIpOwogCi0gIGdfcXVldWVfZm9yZWFjaCAoJnNlbGYtPmN1cnJlbnRfcGFja2V0cywgKEdGdW5jKSBjYXB0dXJlX3BhY2tldF9mcmVlLAotICAgICAgTlVMTCk7CisgIGdfcXVldWVfZm9yZWFjaCAoJnNlbGYtPmN1cnJlbnRfcGFja2V0cywgKEdGdW5jKSBjYXB0dXJlX3BhY2tldF9mcmVlLCBOVUxMKTsKICAgZ19xdWV1ZV9jbGVhciAoJnNlbGYtPmN1cnJlbnRfcGFja2V0cyk7CiAKICAgaWYgKHNlbGYtPmlucHV0ICYmIHNlbGYtPmlucHV0LT5hdWRpb19lbmFibGVkKSB7CmRpZmYgLS1naXQgYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NpbmsuY3BwIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zaW5rLmNwcAppbmRleCBjNTBkMDliLi5lZWJlZmYzIDEwMDY0NAotLS0gYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NpbmsuY3BwCisrKyBiL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc2luay5jcHAKQEAgLTI5Miw4ICsyOTIsMTcgQEAKICAgc2VsZi0+b3V0cHV0LT5vdXRwdXQtPlNldFNjaGVkdWxlZEZyYW1lQ29tcGxldGlvbkNhbGxiYWNrIChuZXcKICAgICAgIEdTdHJlYW1lclZpZGVvT3V0cHV0Q2FsbGJhY2sgKHNlbGYpKTsKIAotICBtb2RlID0gZ3N0X2RlY2tsaW5rX2dldF9tb2RlIChzZWxmLT5tb2RlKTsKLSAgZ19hc3NlcnQgKG1vZGUgIT0gTlVMTCk7CisgIGlmIChzZWxmLT5tb2RlID09IEdTVF9ERUNLTElOS19NT0RFX0FVVE8pIHsKKyAgICBtb2RlID0gZ3N0X2RlY2tsaW5rX2ZpbmRfbW9kZV9mb3JfY2FwcyAoY2Fwcyk7CisgICAgaWYgKG1vZGUgPT0gTlVMTCkgeworICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChzZWxmLAorICAgICAgICAgICJGYWlsZWQgdG8gZmluZCBjb21wYXRpYmxlIG1vZGUgZm9yIGNhcHMgICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgbW9kZSA9IGdzdF9kZWNrbGlua19nZXRfbW9kZSAoc2VsZi0+bW9kZSk7CisgICAgZ19hc3NlcnQgKG1vZGUgIT0gTlVMTCk7CisgIH07CiAKICAgcmV0ID0gc2VsZi0+b3V0cHV0LT5vdXRwdXQtPkVuYWJsZVZpZGVvT3V0cHV0IChtb2RlLT5tb2RlLAogICAgICAgYm1kVmlkZW9PdXRwdXRGbGFnRGVmYXVsdCk7CkBAIC0zMTgsNyArMzI3LDEwIEBACiAgIEdzdERlY2tsaW5rVmlkZW9TaW5rICpzZWxmID0gR1NUX0RFQ0tMSU5LX1ZJREVPX1NJTktfQ0FTVCAoYnNpbmspOwogICBHc3RDYXBzICptb2RlX2NhcHMsICpjYXBzOwogCi0gIG1vZGVfY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChzZWxmLT5tb2RlKTsKKyAgaWYgKHNlbGYtPm1vZGUgPT0gR1NUX0RFQ0tMSU5LX01PREVfQVVUTykKKyAgICBtb2RlX2NhcHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfdGVtcGxhdGVfY2FwcyAoKTsKKyAgZWxzZQorICAgIG1vZGVfY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChzZWxmLT5tb2RlLCBibWRGb3JtYXQ4Qml0WVVWKTsKICAgbW9kZV9jYXBzID0gZ3N0X2NhcHNfbWFrZV93cml0YWJsZSAobW9kZV9jYXBzKTsKICAgLyogRm9yIG91dHB1dCB3ZSBzdXBwb3J0IGFueSBmcmFtZXJhdGUgYW5kIG9ubHkgcmVhbGx5IGNhcmUgYWJvdXQgdGltZXN0YW1wcyAqLwogICBnc3RfY2Fwc19tYXBfaW5fcGxhY2UgKG1vZGVfY2FwcywgcmVzZXRfZnJhbWVyYXRlLCBOVUxMKTsKZGlmZiAtLWdpdCBhL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc3JjLmNwcCBiL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc3JjLmNwcAppbmRleCA5MTUzOTNlLi4yYjMwNGY5IDEwMDY0NAotLS0gYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5jcHAKKysrIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zcmMuY3BwCkBAIC00Nyw2ICs0Nyw3IEBACiAgIElEZWNrTGlua1ZpZGVvSW5wdXRGcmFtZSAqZnJhbWU7CiAgIEdzdENsb2NrVGltZSBjYXB0dXJlX3RpbWUsIGNhcHR1cmVfZHVyYXRpb247CiAgIEdzdERlY2tsaW5rTW9kZUVudW0gbW9kZTsKKyAgQk1EUGl4ZWxGb3JtYXQgZm9ybWF0OwogfSBDYXB0dXJlRnJhbWU7CiAKIHN0YXRpYyB2b2lkCkBAIC0xNzgsNiArMTc5LDcgQEAKIHsKICAgc2VsZi0+bW9kZSA9IERFRkFVTFRfTU9ERTsKICAgc2VsZi0+Y2Fwc19tb2RlID0gR1NUX0RFQ0tMSU5LX01PREVfQVVUTzsKKyAgc2VsZi0+Y2Fwc19mb3JtYXQgPSBibWRGb3JtYXQ4Qml0WVVWOwogICBzZWxmLT5jb25uZWN0aW9uID0gREVGQVVMVF9DT05ORUNUSU9OOwogICBzZWxmLT5kZXZpY2VfbnVtYmVyID0gMDsKICAgc2VsZi0+YnVmZmVyX3NpemUgPSBERUZBVUxUX0JVRkZFUl9TSVpFOwpAQCAtMzUyLDkgKzM1NCw5IEBACiAKICAgZ19tdXRleF9sb2NrICgmc2VsZi0+bG9jayk7CiAgIGlmIChzZWxmLT5jYXBzX21vZGUgIT0gR1NUX0RFQ0tMSU5LX01PREVfQVVUTykKLSAgICBtb2RlX2NhcHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoc2VsZi0+Y2Fwc19tb2RlKTsKKyAgICBtb2RlX2NhcHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoc2VsZi0+Y2Fwc19tb2RlLCBzZWxmLT5jYXBzX2Zvcm1hdCk7CiAgIGVsc2UKLSAgICBtb2RlX2NhcHMgPSBnc3RfZGVja2xpbmtfbW9kZV9nZXRfY2FwcyAoc2VsZi0+bW9kZSk7CisgICAgbW9kZV9jYXBzID0gZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X2NhcHMgKHNlbGYtPm1vZGUsIHNlbGYtPmNhcHNfZm9ybWF0KTsKICAgZ19tdXRleF91bmxvY2sgKCZzZWxmLT5sb2NrKTsKIAogICBpZiAoZmlsdGVyKSB7CkBAIC00ODEsNiArNDgzLDcgQEAKICAgICBmLT5jYXB0dXJlX3RpbWUgPSBjYXB0dXJlX3RpbWU7CiAgICAgZi0+Y2FwdHVyZV9kdXJhdGlvbiA9IGNhcHR1cmVfZHVyYXRpb247CiAgICAgZi0+bW9kZSA9IG1vZGU7CisgICAgZi0+Zm9ybWF0ID0gZnJhbWUtPkdldFBpeGVsRm9ybWF0ICgpOwogICAgIGZyYW1lLT5BZGRSZWYgKCk7CiAgICAgZ19xdWV1ZV9wdXNoX3RhaWwgKCZzZWxmLT5jdXJyZW50X2ZyYW1lcywgZik7CiAgICAgZ19jb25kX3NpZ25hbCAoJnNlbGYtPmNvbmQpOwpAQCAtNTE1LDEyICs1MTgsMTQgQEAKICAgfQogCiAgIGdfbXV0ZXhfbG9jayAoJnNlbGYtPmxvY2spOwotICBpZiAoc2VsZi0+bW9kZSA9PSBHU1RfREVDS0xJTktfTU9ERV9BVVRPICYmIHNlbGYtPmNhcHNfbW9kZSAhPSBmLT5tb2RlKSB7Ci0gICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgIk1vZGUgY2hhbmdlZCBmcm9tICVkIHRvICVkIiwgc2VsZi0+Y2Fwc19tb2RlLAotICAgICAgICBmLT5tb2RlKTsKKyAgaWYgKHNlbGYtPm1vZGUgPT0gR1NUX0RFQ0tMSU5LX01PREVfQVVUTyAmJgorICAgICAgKHNlbGYtPmNhcHNfbW9kZSAhPSBmLT5tb2RlIHx8IHNlbGYtPmNhcHNfZm9ybWF0ICE9IGYtPmZvcm1hdCkpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzZWxmLCAiTW9kZS9Gb3JtYXQgY2hhbmdlZCBmcm9tICVkLyVkIHRvICVkLyVkIiwKKyAgICAgICAgc2VsZi0+Y2Fwc19tb2RlLCBzZWxmLT5jYXBzX2Zvcm1hdCwgZi0+bW9kZSwgZi0+Zm9ybWF0KTsKICAgICBzZWxmLT5jYXBzX21vZGUgPSBmLT5tb2RlOworICAgIHNlbGYtPmNhcHNfZm9ybWF0ID0gZi0+Zm9ybWF0OwogICAgIGdfbXV0ZXhfdW5sb2NrICgmc2VsZi0+bG9jayk7Ci0gICAgY2FwcyA9IGdzdF9kZWNrbGlua19tb2RlX2dldF9jYXBzIChmLT5tb2RlKTsKKyAgICBjYXBzID0gZ3N0X2RlY2tsaW5rX21vZGVfZ2V0X2NhcHMgKGYtPm1vZGUsIGYtPmZvcm1hdCk7CiAgICAgZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmc2VsZi0+aW5mbywgY2Fwcyk7CiAgICAgZ3N0X2Jhc2Vfc3JjX3NldF9jYXBzIChHU1RfQkFTRV9TUkNfQ0FTVCAoYnNyYyksIGNhcHMpOwogICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlRfQ0FTVCAoc2VsZiksCmRpZmYgLS1naXQgYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5oIGIvc3lzL2RlY2tsaW5rL2dzdGRlY2tsaW5rdmlkZW9zcmMuaAppbmRleCA2Y2I1YmI5Li5iODM0OTVmIDEwMDY0NAotLS0gYS9zeXMvZGVja2xpbmsvZ3N0ZGVja2xpbmt2aWRlb3NyYy5oCisrKyBiL3N5cy9kZWNrbGluay9nc3RkZWNrbGlua3ZpZGVvc3JjLmgKQEAgLTUyLDYgKzUyLDcgQEAKIAogICBHc3REZWNrbGlua01vZGVFbnVtIG1vZGU7CiAgIEdzdERlY2tsaW5rTW9kZUVudW0gY2Fwc19tb2RlOworICBCTURQaXhlbEZvcm1hdCBjYXBzX2Zvcm1hdDsKICAgR3N0RGVja2xpbmtDb25uZWN0aW9uRW51bSBjb25uZWN0aW9uOwogICBnaW50IGRldmljZV9udW1iZXI7CiAKZGlmZiAtLWdpdCBhL3N5cy9kaXJlY3Rzb3VuZC9NYWtlZmlsZS5pbiBiL3N5cy9kaXJlY3Rzb3VuZC9NYWtlZmlsZS5pbgppbmRleCA0OGNhNjMwLi43YmZjMzBkIDEwMDY0NAotLS0gYS9zeXMvZGlyZWN0c291bmQvTWFrZWZpbGUuaW4KKysrIGIvc3lzL2RpcmVjdHNvdW5kL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL2RpcmVjdHNvdW5kL2dzdGRpcmVjdHNvdW5kc3JjLmMgYi9zeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYwppbmRleCAzYjAxZjA2Li5iODhlNjhlIDEwMDY0NAotLS0gYS9zeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYworKysgYi9zeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuYwpAQCAtNDUsNyArNDUsNyBAQAogICovCiAKIC8qCi0gIFRPRE86IGFkZCBkZXZpY2Ugc2VsZWN0aW9uIGFuZCBjaGVjayByYXRlIGV0Yy4KKyAgVE9ETzogYWRkIG1peGVyIGRldmljZSBpbml0IGZvciBzZWxlY3Rpb24gYnkgZGV2aWNlLWd1aWQKICovCiAKIC8qKgpAQCAtNTYsNyArNTYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGRpcmVjdHNvdW5kc3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249ZHNvdW5kLm9nZworICogZ3N0LWxhdW5jaC0xLjAgLXYgZGlyZWN0c291bmRzcmMgISBhdWRpb2NvbnZlcnQgISB2b3JiaXNlbmMgISBvZ2dtdXggISBmaWxlc2luayBsb2NhdGlvbj1kc291bmQub2dnCiAgKiBdfCBSZWNvcmQgZnJvbSBEaXJlY3RTb3VuZCBhbmQgZW5jb2RlIHRvIE9nZy9Wb3JiaXMuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC04Nyw2ICs4Nyw3IEBACiB7CiAgIFBST1BfMCwKICAgUFJPUF9ERVZJQ0VfTkFNRSwKKyAgUFJPUF9ERVZJQ0UsCiAgIFBST1BfVk9MVU1FLAogICBQUk9QX01VVEUKIH07CkBAIC0xMzAsNiArMTMxLDExIEBACiBzdGF0aWMgdm9pZCBnc3RfZGlyZWN0c291bmRfc3JjX3NldF9tdXRlIChHc3REaXJlY3RTb3VuZFNyYyAqIGRzb3VuZHNyYywKICAgICBnYm9vbGVhbiBtdXRlKTsKIAorc3RhdGljIGNvbnN0IGdjaGFyICpnc3RfZGlyZWN0c291bmRfc3JjX2dldF9kZXZpY2UgKEdzdERpcmVjdFNvdW5kU3JjICoKKyAgICBkc291bmRzcmMpOworc3RhdGljIHZvaWQgZ3N0X2RpcmVjdHNvdW5kX3NyY19zZXRfZGV2aWNlIChHc3REaXJlY3RTb3VuZFNyYyAqIGRzb3VuZHNyYywKKyAgICBjb25zdCBnY2hhciAqIGRldmljZV9pZCk7CisKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBkaXJlY3Rzb3VuZF9zcmNfc3JjX2ZhY3RvcnkgPQogR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAogICAgIEdTVF9QQURfU1JDLApAQCAtMTU4LDYgKzE2NCw5IEBACiAgIGdfbXV0ZXhfY2xlYXIgKCZkc291bmRzcmMtPmRzb3VuZF9sb2NrKTsKIAogICBnX2ZyZWUgKGRzb3VuZHNyYy0+ZGV2aWNlX25hbWUpOworCisgIGdfZnJlZSAoZHNvdW5kc3JjLT5kZXZpY2VfaWQpOworCiAgIGdfZnJlZSAoZHNvdW5kc3JjLT5kZXZpY2VfZ3VpZCk7CiAKICAgR19PQkpFQ1RfQ0xBU1MgKHBhcmVudF9jbGFzcyktPmZpbmFsaXplIChvYmplY3QpOwpAQCAtMjEyLDYgKzIyMSwxMiBAQAogICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoImRldmljZS1uYW1lIiwgIkRldmljZSBuYW1lIiwKICAgICAgICAgICAiSHVtYW4tcmVhZGFibGUgbmFtZSBvZiB0aGUgc291bmQgZGV2aWNlIiwgTlVMTCwgR19QQVJBTV9SRUFEV1JJVEUpKTsKIAorICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9ERVZJQ0UsCisgICAgICBnX3BhcmFtX3NwZWNfc3RyaW5nICgiZGV2aWNlIiwgIkRldmljZSIsCisgICAgICAgICAgIkRpcmVjdFNvdW5kIHBsYXliYWNrIGRldmljZSBhcyBhIEdVSUQgc3RyaW5nICh2b2x1bWUgYW5kIG11dGUgd2lsbCBub3Qgd29yayEpIiwKKyAgICAgICAgICBOVUxMLCBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKwogICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5CiAgICAgICAoZ29iamVjdF9jbGFzcywgUFJPUF9WT0xVTUUsCiAgICAgICBnX3BhcmFtX3NwZWNfZG91YmxlICgidm9sdW1lIiwgIlZvbHVtZSIsCkBAIC0yNTEsNyArMjY2LDYgQEAKICAgICAgIGlmIChnX3ZhbHVlX2dldF9zdHJpbmcgKHZhbHVlKSkgewogICAgICAgICBzcmMtPmRldmljZV9uYW1lID0gZ19zdHJkdXAgKGdfdmFsdWVfZ2V0X3N0cmluZyAodmFsdWUpKTsKICAgICAgIH0KLQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBQUk9QX1ZPTFVNRToKICAgICAgIGdzdF9kaXJlY3Rzb3VuZF9zcmNfc2V0X3ZvbHVtZSAoc3JjLCBnX3ZhbHVlX2dldF9kb3VibGUgKHZhbHVlKSk7CkBAIC0yNTksNiArMjczLDkgQEAKICAgICBjYXNlIFBST1BfTVVURToKICAgICAgIGdzdF9kaXJlY3Rzb3VuZF9zcmNfc2V0X211dGUgKHNyYywgZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpKTsKICAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9ERVZJQ0U6CisgICAgICBnc3RfZGlyZWN0c291bmRfc3JjX3NldF9kZXZpY2UgKHNyYywgZ192YWx1ZV9nZXRfc3RyaW5nICh2YWx1ZSkpOworICAgICAgYnJlYWs7CiAgICAgZGVmYXVsdDoKICAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CiAgICAgICBicmVhazsKQEAgLTI3Nyw2ICsyOTQsOSBAQAogICAgIGNhc2UgUFJPUF9ERVZJQ0VfTkFNRToKICAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHNyYy0+ZGV2aWNlX25hbWUpOwogICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0RFVklDRToKKyAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIGdzdF9kaXJlY3Rzb3VuZF9zcmNfZ2V0X2RldmljZSAoc3JjKSk7CisgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfVk9MVU1FOgogICAgICAgZ192YWx1ZV9zZXRfZG91YmxlICh2YWx1ZSwgZ3N0X2RpcmVjdHNvdW5kX3NyY19nZXRfdm9sdW1lIChzcmMpKTsKICAgICAgIGJyZWFrOwpAQCAtMzAxLDYgKzMyMSw3IEBACiAgIEdTVF9ERUJVR19PQkpFQ1QgKHNyYywgImluaXRpYWxpemluZyBkaXJlY3Rzb3VuZHNyYyIpOwogICBnX211dGV4X2luaXQgKCZzcmMtPmRzb3VuZF9sb2NrKTsKICAgc3JjLT5kZXZpY2VfZ3VpZCA9IE5VTEw7CisgIHNyYy0+ZGV2aWNlX2lkID0gTlVMTDsKICAgc3JjLT5kZXZpY2VfbmFtZSA9IE5VTEw7CiAgIHNyYy0+bWl4ZXIgPSBOVUxMOwogICBzcmMtPmNvbnRyb2xfaWRfbXV0ZSA9IC0xOwpAQCAtMzM1LDYgKzM1NiwyOCBAQAogICByZXR1cm4gVFJVRTsKIH0KIAorc3RhdGljIExQR1VJRAorc3RyaW5nX3RvX2d1aWQgKGNvbnN0IGdjaGFyICogc3RyKQoreworICBIUkVTVUxUIHJldDsKKyAgZ3VuaWNoYXIyICp3c3RyOworICBMUEdVSUQgb3V0OworCisgIHdzdHIgPSBnX3V0ZjhfdG9fdXRmMTYgKHN0ciwgLTEsIE5VTEwsIE5VTEwsIE5VTEwpOworICBpZiAoIXdzdHIpCisgICAgcmV0dXJuIE5VTEw7CisKKyAgb3V0ID0gZ19uZXcgKEdVSUQsIDEpOworICByZXQgPSBDTFNJREZyb21TdHJpbmcgKChMUE9MRVNUUikgd3N0ciwgb3V0KTsKKyAgZ19mcmVlICh3c3RyKTsKKyAgaWYgKHJldCAhPSBOT0VSUk9SKSB7CisgICAgZ19mcmVlIChvdXQpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgcmV0dXJuIG91dDsKK30KKwogc3RhdGljIGdib29sZWFuCiBnc3RfZGlyZWN0c291bmRfc3JjX29wZW4gKEdzdEF1ZGlvU3JjICogYXNyYykKIHsKQEAgLTM2MSwxOSArNDA0LDM3IEBACiAgICAgZ290byBjYXB0dXJlX2Z1bmN0aW9uOwogICB9CiAKLSAgaFJlcyA9IERpcmVjdFNvdW5kQ2FwdHVyZUVudW1lcmF0ZSAoKExQRFNFTlVNQ0FMTEJBQ0spCi0gICAgICBnc3RfZGlyZWN0c291bmRfZW51bV9jYWxsYmFjaywgKFZPSUQgKikgZHNvdW5kc3JjKTsKLSAgaWYgKEZBSUxFRCAoaFJlcykpIHsKLSAgICBnb3RvIGNhcHR1cmVfZW51bWVyYXRlOwotICB9CisgIGlmIChkc291bmRzcmMtPmRldmljZV9pZCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKGFzcmMsICJkZXZpY2UgaWQgc2V0IHRvOiAlcyAiLCBkc291bmRzcmMtPmRldmljZV9pZCk7CisgICAgZHNvdW5kc3JjLT5kZXZpY2VfZ3VpZCA9IHN0cmluZ190b19ndWlkIChkc291bmRzcmMtPmRldmljZV9pZCk7CisgICAgaWYgKGRzb3VuZHNyYy0+ZGV2aWNlX2d1aWQgPT0gTlVMTCkgeworICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKGRzb3VuZHNyYywgUkVTT1VSQ0UsIE9QRU5fUkVBRCwKKyAgICAgICAgICAoImdzdF9kaXJlY3Rzb3VuZF9zcmNfb3BlbjogZGV2aWNlIHNldCwgYnV0IGd1aWQgbm90IGZvdW5kOiAlcyIsCisgICAgICAgICAgICAgIGRzb3VuZHNyYy0+ZGV2aWNlX2lkKSwgKE5VTEwpKTsKKyAgICAgIGdfZnJlZSAoZHNvdW5kc3JjLT5kZXZpY2VfZ3VpZCk7CisgICAgICByZXR1cm4gRkFMU0U7CisgICAgfQorICB9IGVsc2UgewogCisgICAgaFJlcyA9IERpcmVjdFNvdW5kQ2FwdHVyZUVudW1lcmF0ZSAoKExQRFNFTlVNQ0FMTEJBQ0spCisgICAgICAgIGdzdF9kaXJlY3Rzb3VuZF9lbnVtX2NhbGxiYWNrLCAoVk9JRCAqKSBkc291bmRzcmMpOworCisgICAgaWYgKEZBSUxFRCAoaFJlcykpIHsKKyAgICAgIGdvdG8gY2FwdHVyZV9lbnVtZXJhdGU7CisgICAgfQorICB9CiAgIC8qIENyZWF0ZSBjYXB0dXJlIG9iamVjdCAqLwogICBoUmVzID0gcERTb3VuZENhcHR1cmVDcmVhdGUgKGRzb3VuZHNyYy0+ZGV2aWNlX2d1aWQsICZkc291bmRzcmMtPnBEU0MsIE5VTEwpOworCisKICAgaWYgKEZBSUxFRCAoaFJlcykpIHsKICAgICBnb3RvIGNhcHR1cmVfb2JqZWN0OwogICB9CisgIC8vIG1peGVyIGlzIG9ubHkgc3VwcG9ydGVkIHdoZW4gZGV2aWNlLWlkIGlzIG5vdCBzZXQKKyAgaWYgKCFkc291bmRzcmMtPmRldmljZV9pZCkgeworICAgIGdzdF9kaXJlY3Rzb3VuZF9zcmNfbWl4ZXJfaW5pdCAoZHNvdW5kc3JjKTsKKyAgfQogCi0gIGdzdF9kaXJlY3Rzb3VuZF9zcmNfbWl4ZXJfaW5pdCAoZHNvdW5kc3JjKTsKICAgcmV0dXJuIFRSVUU7CiAKIGNhcHR1cmVfZnVuY3Rpb246CkBAIC05MzYsMyArOTk3LDE3IEBACiAgIGVsc2UKICAgICBkc291bmRzcmMtPm11dGUgPSBtdXRlOwogfQorCitzdGF0aWMgY29uc3QgZ2NoYXIgKgorZ3N0X2RpcmVjdHNvdW5kX3NyY19nZXRfZGV2aWNlIChHc3REaXJlY3RTb3VuZFNyYyAqIGRzb3VuZHNyYykKK3sKKyAgcmV0dXJuIGRzb3VuZHNyYy0+ZGV2aWNlX2lkOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2RpcmVjdHNvdW5kX3NyY19zZXRfZGV2aWNlIChHc3REaXJlY3RTb3VuZFNyYyAqIGRzb3VuZHNyYywKKyAgICBjb25zdCBnY2hhciAqIGRldmljZV9pZCkKK3sKKyAgZ19mcmVlIChkc291bmRzcmMtPmRldmljZV9pZCk7CisgIGRzb3VuZHNyYy0+ZGV2aWNlX2lkID0gZ19zdHJkdXAgKGRldmljZV9pZCk7Cit9CmRpZmYgLS1naXQgYS9zeXMvZGlyZWN0c291bmQvZ3N0ZGlyZWN0c291bmRzcmMuaCBiL3N5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5oCmluZGV4IGEyYWM2ZmYuLjlhYTIyNWYgMTAwNjQ0Ci0tLSBhL3N5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5oCisrKyBiL3N5cy9kaXJlY3Rzb3VuZC9nc3RkaXJlY3Rzb3VuZHNyYy5oCkBAIC0xLDk3ICsxLDk3IEBACi0vKg0KLSAqIEdTdHJlYW1lcg0KLSAqIENvcHlyaWdodCAyMDA1IFRob21hcyBWYW5kZXIgU3RpY2hlbGUgPHRob21hc0BhcGVzdGFhcnQub3JnPg0KLSAqIENvcHlyaWdodCAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4NCi0gKiBDb3B5cmlnaHQgMjAwNSBT6WJhc3RpZW4gTW91dHRlIDxzZWJhc3RpZW5AbW91dHRlLm5ldD4NCi0gKiBDb3B5cmlnaHQgMjAwNiBKb25pIFZhbHRhbmVuIDxqb25pLnZhbHRhbmVuQG1vdmlhbC5maT4NCi0gKiANCi0gKiBQZXJtaXNzaW9uIGlzIGhlcmVieSBncmFudGVkLCBmcmVlIG9mIGNoYXJnZSwgdG8gYW55IHBlcnNvbiBvYnRhaW5pbmcgYQ0KLSAqIGNvcHkgb2YgdGhpcyBzb2Z0d2FyZSBhbmQgYXNzb2NpYXRlZCBkb2N1bWVudGF0aW9uIGZpbGVzICh0aGUgIlNvZnR3YXJlIiksDQotICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbg0KLSAqIHRoZSByaWdodHMgdG8gdXNlLCBjb3B5LCBtb2RpZnksIG1lcmdlLCBwdWJsaXNoLCBkaXN0cmlidXRlLCBzdWJsaWNlbnNlLA0KLSAqIGFuZC9vciBzZWxsIGNvcGllcyBvZiB0aGUgU29mdHdhcmUsIGFuZCB0byBwZXJtaXQgcGVyc29ucyB0byB3aG9tIHRoZQ0KLSAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6DQotICoNCi0gKiBUaGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSBhbmQgdGhpcyBwZXJtaXNzaW9uIG5vdGljZSBzaGFsbCBiZSBpbmNsdWRlZCBpbg0KLSAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLg0KLSAqDQotICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIsIFdJVEhPVVQgV0FSUkFOVFkgT0YgQU5ZIEtJTkQsIEVYUFJFU1MgT1INCi0gKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwNCi0gKiBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBTkQgTk9OSU5GUklOR0VNRU5ULiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUNCi0gKiBBVVRIT1JTIE9SIENPUFlSSUdIVCBIT0xERVJTIEJFIExJQUJMRSBGT1IgQU5ZIENMQUlNLCBEQU1BR0VTIE9SIE9USEVSDQotICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcNCi0gKiBGUk9NLCBPVVQgT0YgT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSDQotICogREVBTElOR1MgSU4gVEhFIFNPRlRXQVJFLg0KLSAqDQotICogQWx0ZXJuYXRpdmVseSwgdGhlIGNvbnRlbnRzIG9mIHRoaXMgZmlsZSBtYXkgYmUgdXNlZCB1bmRlciB0aGUNCi0gKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgVmVyc2lvbiAyLjEgKHRoZSAiTEdQTCIpLCBpbg0KLSAqIHdoaWNoIGNhc2UgdGhlIGZvbGxvd2luZyBwcm92aXNpb25zIGFwcGx5IGluc3RlYWQgb2YgdGhlIG9uZXMNCi0gKiBtZW50aW9uZWQgYWJvdmU6DQotICoNCi0gKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yDQotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMNCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXINCi0gKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uDQotICoNCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwNCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZg0KLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VDQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuDQotICoNCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYw0KLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlDQotICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsDQotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuDQotICovDQotDQotI2lmbmRlZiBfX0dTVF9ESVJFQ1RTT1VORFNSQ19IX18NCi0jZGVmaW5lIF9fR1NUX0RJUkVDVFNPVU5EU1JDX0hfXw0KLQ0KLSNpbmNsdWRlIDxnc3QvZ3N0Lmg+DQotI2luY2x1ZGUgPGdzdC9hdWRpby9hdWRpby5oPg0KLSNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9zcmMuaD4NCi0jaW5jbHVkZSA8d2luZG93cy5oPg0KLSNpbmNsdWRlIDxkc291bmQuaD4NCisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgMjAwNSBUaG9tYXMgVmFuZGVyIFN0aWNoZWxlIDx0aG9tYXNAYXBlc3RhYXJ0Lm9yZz4KKyAqIENvcHlyaWdodCAyMDA1IFJvbmFsZCBTLiBCdWx0amUgPHJidWx0amVAcm9uYWxkLmJpdGZyZWFrLm5ldD4KKyAqIENvcHlyaWdodCAyMDA1IFPpYmFzdGllbiBNb3V0dGUgPHNlYmFzdGllbkBtb3V0dGUubmV0PgorICogQ29weXJpZ2h0IDIwMDYgSm9uaSBWYWx0YW5lbiA8am9uaS52YWx0YW5lbkBtb3ZpYWwuZmk+CisgKiAKKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZyBhCisgKiBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICJTb2Z0d2FyZSIpLAorICogdG8gZGVhbCBpbiB0aGUgU29mdHdhcmUgd2l0aG91dCByZXN0cmljdGlvbiwgaW5jbHVkaW5nIHdpdGhvdXQgbGltaXRhdGlvbgorICogdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsIGRpc3RyaWJ1dGUsIHN1YmxpY2Vuc2UsCisgKiBhbmQvb3Igc2VsbCBjb3BpZXMgb2YgdGhlIFNvZnR3YXJlLCBhbmQgdG8gcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUKKyAqIFNvZnR3YXJlIGlzIGZ1cm5pc2hlZCB0byBkbyBzbywgc3ViamVjdCB0byB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnM6CisgKgorICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2Ugc2hhbGwgYmUgaW5jbHVkZWQgaW4KKyAqIGFsbCBjb3BpZXMgb3Igc3Vic3RhbnRpYWwgcG9ydGlvbnMgb2YgdGhlIFNvZnR3YXJlLgorICoKKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELCBFWFBSRVNTIE9SCisgKiBJTVBMSUVELCBJTkNMVURJTkcgQlVUIE5PVCBMSU1JVEVEIFRPIFRIRSBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSwKKyAqIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFORCBOT05JTkZSSU5HRU1FTlQuIElOIE5PIEVWRU5UIFNIQUxMIFRIRQorICogQVVUSE9SUyBPUiBDT1BZUklHSFQgSE9MREVSUyBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUgorICogTElBQklMSVRZLCBXSEVUSEVSIElOIEFOIEFDVElPTiBPRiBDT05UUkFDVCwgVE9SVCBPUiBPVEhFUldJU0UsIEFSSVNJTkcKKyAqIEZST00sIE9VVCBPRiBPUiBJTiBDT05ORUNUSU9OIFdJVEggVEhFIFNPRlRXQVJFIE9SIFRIRSBVU0UgT1IgT1RIRVIKKyAqIERFQUxJTkdTIElOIFRIRSBTT0ZUV0FSRS4KKyAqCisgKiBBbHRlcm5hdGl2ZWx5LCB0aGUgY29udGVudHMgb2YgdGhpcyBmaWxlIG1heSBiZSB1c2VkIHVuZGVyIHRoZQorICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIFZlcnNpb24gMi4xICh0aGUgIkxHUEwiKSwgaW4KKyAqIHdoaWNoIGNhc2UgdGhlIGZvbGxvd2luZyBwcm92aXNpb25zIGFwcGx5IGluc3RlYWQgb2YgdGhlIG9uZXMKKyAqIG1lbnRpb25lZCBhYm92ZToKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX0RJUkVDVFNPVU5EU1JDX0hfXworI2RlZmluZSBfX0dTVF9ESVJFQ1RTT1VORFNSQ19IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vYXVkaW8uaD4KKyNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9zcmMuaD4KKyNpbmNsdWRlIDx3aW5kb3dzLmg+CisjaW5jbHVkZSA8ZHNvdW5kLmg+CiAjaW5jbHVkZSA8bW1zeXN0ZW0uaD4KLQ0KLS8qIGFkZCBoZXJlIHNvbWUgaGVhZGVycyBpZiBuZWVkZWQgKi8NCi0NCi0NCi1HX0JFR0lOX0RFQ0xTDQotDQotLyogI2RlZmluZXMgZG9uJ3QgbGlrZSB3aGl0ZXNwYWNleSBiaXRzICovDQotI2RlZmluZSBHU1RfVFlQRV9ESVJFQ1RTT1VORF9TUkMgKGdzdF9kaXJlY3Rzb3VuZF9zcmNfZ2V0X3R5cGUoKSkNCi0jZGVmaW5lIEdTVF9ESVJFQ1RTT1VORF9TUkMob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfRElSRUNUU09VTkRfU1JDLEdzdERpcmVjdFNvdW5kU3JjKSkNCi0jZGVmaW5lIEdTVF9ESVJFQ1RTT1VORF9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQyxHc3REaXJlY3RTb3VuZFNyY0NsYXNzKSkNCi0jZGVmaW5lIEdTVF9JU19ESVJFQ1RTT1VORF9TUkMob2JqKSAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX1RZUEUoKG9iaiksR1NUX1RZUEVfRElSRUNUU09VTkRfU1JDKSkNCi0jZGVmaW5lIEdTVF9JU19ESVJFQ1RTT1VORF9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfVFlQRSgoa2xhc3MpLEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQykpDQotDQotdHlwZWRlZiBzdHJ1Y3QgX0dzdERpcmVjdFNvdW5kU3JjICAgICAgR3N0RGlyZWN0U291bmRTcmM7DQotdHlwZWRlZiBzdHJ1Y3QgX0dzdERpcmVjdFNvdW5kU3JjQ2xhc3MgR3N0RGlyZWN0U291bmRTcmNDbGFzczsNCi0NCi0jZGVmaW5lIEdTVF9EU09VTkRfTE9DSyhvYmopCShnX211dGV4X2xvY2sgKCZvYmotPmRzb3VuZF9sb2NrKSkNCi0jZGVmaW5lIEdTVF9EU09VTkRfVU5MT0NLKG9iaikJKGdfbXV0ZXhfdW5sb2NrICgmb2JqLT5kc291bmRfbG9jaykpDQotDQotc3RydWN0IF9Hc3REaXJlY3RTb3VuZFNyYw0KLXsNCi0NCi0gIEdzdEF1ZGlvU3JjIHNyYzsNCi0NCi0gIEhJTlNUQU5DRSBEU291bmRETEw7IC8qIERMTCBpbnN0YW5jZSAqLw0KLSAgTFBESVJFQ1RTT1VORENBUFRVUkUgcERTQzsgLyogRGlyZWN0U291bmRDYXB0dXJlKi8NCi0gIExQRElSRUNUU09VTkRDQVBUVVJFQlVGRkVSIHBEU0JTZWNvbmRhcnk7ICAvKlNlY29uZGF0eSBjYXB0dXJlYnVmZmVyKi8NCi0gIERXT1JEIGN1cnJlbnRfY2lyY3VsYXJfb2Zmc2V0Ow0KLQ0KLSAgSEFORExFIHJnaEV2ZW50Ow0KLSAgRFdPUkQgbm90aWZ5c2l6ZTsNCi0NCi0gIGd1aW50IGJ1ZmZlcl9zaXplOw0KLSAgZ3VpbnQgbGF0ZW5jeV9zaXplOw0KLSAgZ3VpbnQgYnl0ZXNfcGVyX3NhbXBsZTsNCi0NCi0gIGd1aW50IGJ1ZmZlcl90aW1lOw0KLSAgZ3VpbnQgbGF0ZW5jeV90aW1lOw0KLQ0KKworLyogYWRkIGhlcmUgc29tZSBoZWFkZXJzIGlmIG5lZWRlZCAqLworCisKK0dfQkVHSU5fREVDTFMKKworLyogI2RlZmluZXMgZG9uJ3QgbGlrZSB3aGl0ZXNwYWNleSBiaXRzICovCisjZGVmaW5lIEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQyAoZ3N0X2RpcmVjdHNvdW5kX3NyY19nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfRElSRUNUU09VTkRfU1JDKG9iaikgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQyxHc3REaXJlY3RTb3VuZFNyYykpCisjZGVmaW5lIEdTVF9ESVJFQ1RTT1VORF9TUkNfQ0xBU1Moa2xhc3MpIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX0RJUkVDVFNPVU5EX1NSQyxHc3REaXJlY3RTb3VuZFNyY0NsYXNzKSkKKyNkZWZpbmUgR1NUX0lTX0RJUkVDVFNPVU5EX1NSQyhvYmopIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9ESVJFQ1RTT1VORF9TUkMpKQorI2RlZmluZSBHU1RfSVNfRElSRUNUU09VTkRfU1JDX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9ESVJFQ1RTT1VORF9TUkMpKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0RGlyZWN0U291bmRTcmMgICAgICBHc3REaXJlY3RTb3VuZFNyYzsKK3R5cGVkZWYgc3RydWN0IF9Hc3REaXJlY3RTb3VuZFNyY0NsYXNzIEdzdERpcmVjdFNvdW5kU3JjQ2xhc3M7CisKKyNkZWZpbmUgR1NUX0RTT1VORF9MT0NLKG9iaikJKGdfbXV0ZXhfbG9jayAoJm9iai0+ZHNvdW5kX2xvY2spKQorI2RlZmluZSBHU1RfRFNPVU5EX1VOTE9DSyhvYmopCShnX211dGV4X3VubG9jayAoJm9iai0+ZHNvdW5kX2xvY2spKQorCitzdHJ1Y3QgX0dzdERpcmVjdFNvdW5kU3JjCit7CisKKyAgR3N0QXVkaW9TcmMgc3JjOworCisgIEhJTlNUQU5DRSBEU291bmRETEw7IC8qIERMTCBpbnN0YW5jZSAqLworICBMUERJUkVDVFNPVU5EQ0FQVFVSRSBwRFNDOyAvKiBEaXJlY3RTb3VuZENhcHR1cmUqLworICBMUERJUkVDVFNPVU5EQ0FQVFVSRUJVRkZFUiBwRFNCU2Vjb25kYXJ5OyAgLypTZWNvbmRhdHkgY2FwdHVyZWJ1ZmZlciovCisgIERXT1JEIGN1cnJlbnRfY2lyY3VsYXJfb2Zmc2V0OworCisgIEhBTkRMRSByZ2hFdmVudDsKKyAgRFdPUkQgbm90aWZ5c2l6ZTsKKworICBndWludCBidWZmZXJfc2l6ZTsKKyAgZ3VpbnQgbGF0ZW5jeV9zaXplOworICBndWludCBieXRlc19wZXJfc2FtcGxlOworCisgIGd1aW50IGJ1ZmZlcl90aW1lOworICBndWludCBsYXRlbmN5X3RpbWU7CisKICAgSE1JWEVSIG1peGVyOwogICBEV09SRCBtaXhlcmxpbmVfY2NoYW5uZWxzOwogICBnaW50IGNvbnRyb2xfaWRfdm9sdW1lOwpAQCAtMTAxLDIxICsxMDEsMjMgQEAKIAogICBnbG9uZyB2b2x1bWU7CiAgIGdib29sZWFuIG11dGU7Ci0NCi0gIEdVSUQgKmRldmljZV9ndWlkOw0KLSAgY2hhciAqZGV2aWNlX25hbWU7DQotDQotICBHTXV0ZXggZHNvdW5kX2xvY2s7DQotDQotfTsNCi0NCi1zdHJ1Y3QgX0dzdERpcmVjdFNvdW5kU3JjQ2xhc3MgDQotew0KLSAgR3N0QXVkaW9TcmNDbGFzcyBwYXJlbnRfY2xhc3M7DQotfTsNCi0NCi1HVHlwZSBnc3RfZGlyZWN0c291bmRfc3JjX2dldF90eXBlICh2b2lkKTsNCi0NCi1HX0VORF9ERUNMUw0KLQ0KLSNlbmRpZiAvKiBfX0dTVF9ESVJFQ1RTT1VORFNSQ19IX18gKi8NCisKKyAgR1VJRCAqZGV2aWNlX2d1aWQ7CisKKyAgY2hhciAqZGV2aWNlX25hbWU7CisgIGNoYXIgKmRldmljZV9pZDsKKworICBHTXV0ZXggZHNvdW5kX2xvY2s7CisKK307CisKK3N0cnVjdCBfR3N0RGlyZWN0U291bmRTcmNDbGFzcyAKK3sKKyAgR3N0QXVkaW9TcmNDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSBnc3RfZGlyZWN0c291bmRfc3JjX2dldF90eXBlICh2b2lkKTsKKworR19FTkRfREVDTFMKKworI2VuZGlmIC8qIF9fR1NUX0RJUkVDVFNPVU5EU1JDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvc3lzL2RzaG93ZGVjd3JhcHBlci9NYWtlZmlsZS5pbiBiL3N5cy9kc2hvd2RlY3dyYXBwZXIvTWFrZWZpbGUuaW4KaW5kZXggNmZjOGI5Yy4uOGM5MzBlYiAxMDA2NDQKLS0tIGEvc3lzL2RzaG93ZGVjd3JhcHBlci9NYWtlZmlsZS5pbgorKysgYi9zeXMvZHNob3dkZWN3cmFwcGVyL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4MCw2ICsyNzksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNyw2ICszMTgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNSw3ICszMjgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDQsOCArMzQ2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MiwxNiArMzY1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Nyw2ICs0MDEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjIsNiArNDI4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIzLDYgKzUzMSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzYsOCArNTQ1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUzLDYgKzU2MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTAsMTYgKzYxOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MSw2ICs2ODIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgxLDYgKzY5Myw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5MCw2ICs3MDMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI3LDcgKzc0Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL2RzaG93ZGVjd3JhcHBlci9nc3Rkc2hvd2F1ZGlvZGVjLmNwcCBiL3N5cy9kc2hvd2RlY3dyYXBwZXIvZ3N0ZHNob3dhdWRpb2RlYy5jcHAKaW5kZXggY2FlYmVjNS4uOWZiODNlNSAxMDA2NDQKLS0tIGEvc3lzL2RzaG93ZGVjd3JhcHBlci9nc3Rkc2hvd2F1ZGlvZGVjLmNwcAorKysgYi9zeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93YXVkaW9kZWMuY3BwCkBAIC04NTQsOCArODU0LDcgQEAKIHN0YXRpYyB2b2lkCiBkc2hvd2FkZWNfZnJlZV9tZWRpYXR5cGUgKEFNX01FRElBX1RZUEUgKm1lZGlhdHlwZSkKIHsKLSAgaWYgKG1lZGlhdHlwZS0+cGJGb3JtYXQpCi0gICAgZ19mcmVlIChtZWRpYXR5cGUtPnBiRm9ybWF0KTsKKyAgZ19mcmVlIChtZWRpYXR5cGUtPnBiRm9ybWF0KTsKICAgZ19mcmVlIChtZWRpYXR5cGUpOwogfQogCmRpZmYgLS1naXQgYS9zeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93dmlkZW9kZWMuY3BwIGIvc3lzL2RzaG93ZGVjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvZGVjLmNwcAppbmRleCBlYWMwZjcyLi45YzJmNTljIDEwMDY0NAotLS0gYS9zeXMvZHNob3dkZWN3cmFwcGVyL2dzdGRzaG93dmlkZW9kZWMuY3BwCisrKyBiL3N5cy9kc2hvd2RlY3dyYXBwZXIvZ3N0ZHNob3d2aWRlb2RlYy5jcHAKQEAgLTg0NSw4ICs4NDUsNyBAQAogICBpZiAoY2Fwc19vdXQpCiAgICAgZ3N0X2NhcHNfdW5yZWYgKGNhcHNfb3V0KTsKICAgZ3N0X29iamVjdF91bnJlZiAodmRlYyk7Ci0gIGlmIChpbnB1dF92aGVhZGVyKQotICAgIGdfZnJlZSAoaW5wdXRfdmhlYWRlcik7CisgIGdfZnJlZSAoaW5wdXRfdmhlYWRlcik7CiAgIGlmIChzcmNmaWx0ZXIpCiAgICAgc3JjZmlsdGVyLT5SZWxlYXNlKCk7CiAgIGlmIChzaW5rZmlsdGVyKQpkaWZmIC0tZ2l0IGEvc3lzL2RzaG93c3Jjd3JhcHBlci9NYWtlZmlsZS5pbiBiL3N5cy9kc2hvd3NyY3dyYXBwZXIvTWFrZWZpbGUuaW4KaW5kZXggZmFjZGE3Yy4uYmE0ZGY1NiAxMDA2NDQKLS0tIGEvc3lzL2RzaG93c3Jjd3JhcHBlci9NYWtlZmlsZS5pbgorKysgYi9zeXMvZHNob3dzcmN3cmFwcGVyL01ha2VmaWxlLmluCkBAIC0xMTcsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTkxLDYgKzE5MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjI4LDYgKzIyOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjM2LDcgKzIzOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTI1NSw4ICsyNTcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMjczLDE2ICsyNzYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzA4LDYgKzMxMiw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTMzMyw2ICszMzksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00MzQsNiArNDQyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ0Nyw4ICs0NTYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC00NjQsNiArNDcxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTUyMSwxNiArNTMwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNTgyLDYgKzU5Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC01OTIsNiArNjA0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjAxLDYgKzYxNCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02MzgsNyArNjUzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvZHNob3dzcmN3cmFwcGVyL2dzdGRzaG93LmNwcCBiL3N5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3cuY3BwCmluZGV4IDI5MjY2YmEuLjcwNWFkYzkgMTAwNjQ0Ci0tLSBhL3N5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3cuY3BwCisrKyBiL3N5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3cuY3BwCkBAIC0xMjUsMTAgKzEyNSw4IEBACiB2b2lkCiBnc3RfZHNob3dfZnJlZV9waW5zX21lZGlhdHlwZXMgKEdMaXN0ICogcGluc19tZWRpYXR5cGVzKQogewotICB3aGlsZSAocGluc19tZWRpYXR5cGVzICE9IE5VTEwpIHsKLSAgICBnc3RfZHNob3dfZnJlZV9waW5fbWVkaWF0eXBlIChwaW5zX21lZGlhdHlwZXMtPmRhdGEpOwotICAgIHBpbnNfbWVkaWF0eXBlcyA9IGdfbGlzdF9yZW1vdmVfbGluayAocGluc19tZWRpYXR5cGVzLCBwaW5zX21lZGlhdHlwZXMpOwotICB9CisgIGdfbGlzdF9mcmVlX2Z1bGwgKHBpbnNfbWVkaWF0eXBlcywKKyAgICAgIChHRGVzdHJveU5vdGlmeSkgZ3N0X2RzaG93X2ZyZWVfcGluX21lZGlhdHlwZSk7CiB9CiAKIGdib29sZWFuCkBAIC0yNzMsMTQgKzI3MSwxMiBAQAogICAgICAgZmlsdGVyX3RlbXAtPlJlbGVhc2UgKCk7CiAgICAgfQogCi0gICAgaWYgKGZyaWVuZGx5X25hbWUpCi0gICAgICBnX2ZyZWUgKGZyaWVuZGx5X25hbWUpOworICAgIGdfZnJlZSAoZnJpZW5kbHlfbmFtZSk7CiAgICAgbW9uaWtlci0+UmVsZWFzZSAoKTsKICAgfQogCiBjbGVhbjoKLSAgaWYgKHByZWZlcmVkX2ZpbHRlcl91cHBlcikKLSAgICBnX2ZyZWUgKHByZWZlcmVkX2ZpbHRlcl91cHBlcik7CisgIGdfZnJlZSAocHJlZmVyZWRfZmlsdGVyX3VwcGVyKTsKICAgaWYgKGVudW1fbW9uaWtlcikKICAgICBlbnVtX21vbmlrZXItPlJlbGVhc2UgKCk7CiAgIGlmIChtYXBwZXIpCmRpZmYgLS1naXQgYS9zeXMvZHNob3dzcmN3cmFwcGVyL2dzdGRzaG93dmlkZW9zcmMuY3BwIGIvc3lzL2RzaG93c3Jjd3JhcHBlci9nc3Rkc2hvd3ZpZGVvc3JjLmNwcAppbmRleCA4NDZjMDUwLi43NzI1ZmNiIDEwMDY0NAotLS0gYS9zeXMvZHNob3dzcmN3cmFwcGVyL2dzdGRzaG93dmlkZW9zcmMuY3BwCisrKyBiL3N5cy9kc2hvd3NyY3dyYXBwZXIvZ3N0ZHNob3d2aWRlb3NyYy5jcHAKQEAgLTM5Niw5ICszOTYsNyBAQAogICAgIH0KICAgfQogCi0gIGlmICh1bmlkZXZpY2UpIHsKLSAgICBnX2ZyZWUgKHVuaWRldmljZSk7Ci0gIH0KKyAgZ19mcmVlICh1bmlkZXZpY2UpOwogCiAgIGlmIChzcmMtPmNhcHMpIHsKICAgICBHc3RDYXBzICpjYXBzOwpkaWZmIC0tZ2l0IGEvc3lzL2RzaG93dmlkZW9zaW5rL01ha2VmaWxlLmluIGIvc3lzL2RzaG93dmlkZW9zaW5rL01ha2VmaWxlLmluCmluZGV4IDU3YWI0ODUuLmVkZTAwMmQgMTAwNjQ0Ci0tLSBhL3N5cy9kc2hvd3ZpZGVvc2luay9NYWtlZmlsZS5pbgorKysgYi9zeXMvZHNob3d2aWRlb3NpbmsvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0xOTEsNiArMTkwLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yMjgsNiArMjI5LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yMzYsNyArMjM5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMjU1LDggKzI1Nyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0yNzMsMTYgKzI3NiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zMDgsNiArMzEyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzMzLDYgKzMzOSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQzNCw2ICs0NDIsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNDQ3LDggKzQ1Niw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTQ2NCw2ICs0NzEsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTIxLDE2ICs1MzAsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC01ODIsNiArNTkzLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTU5Miw2ICs2MDQsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02MDEsNiArNjE0LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTYzOCw3ICs2NTMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9kc2hvd3ZpZGVvc2luay9kc2hvd3ZpZGVvc2luay5jcHAgYi9zeXMvZHNob3d2aWRlb3NpbmsvZHNob3d2aWRlb3NpbmsuY3BwCmluZGV4IGNkN2IyMTIuLmMzZDRiYzMgMTAwNjQ0Ci0tLSBhL3N5cy9kc2hvd3ZpZGVvc2luay9kc2hvd3ZpZGVvc2luay5jcHAKKysrIGIvc3lzL2RzaG93dmlkZW9zaW5rL2RzaG93dmlkZW9zaW5rLmNwcApAQCAtMjg1LDggKzI4NSw3IEBACiB7CiAgIEdzdERzaG93VmlkZW9TaW5rICpzaW5rID0gR1NUX0RTSE9XVklERU9TSU5LIChnb2JqZWN0KTsKIAotICBpZiAoc2luay0+cHJlZmVycmVkcmVuZGVyZXIpCi0gICAgZ19mcmVlIChzaW5rLT5wcmVmZXJyZWRyZW5kZXJlcik7CisgIGdfZnJlZSAoc2luay0+cHJlZmVycmVkcmVuZGVyZXIpOwogCiAgIC8qIHNpZ25hbCB0aGUgQ09NIHRocmVhZCB0aGF0IGl0IHNvdWxkIHVuaW5pdGlhbGl6ZSBDT00gKi8KICAgaWYgKHNpbmstPmNvbUluaXRpYWxpemVkKSB7CkBAIC0zMTUsOSArMzE0LDcgQEAKIAogICBzd2l0Y2ggKHByb3BfaWQpIHsKICAgICBjYXNlIFBST1BfUkVOREVSRVI6Ci0gICAgICBpZiAoc2luay0+cHJlZmVycmVkcmVuZGVyZXIpCi0gICAgICAgIGdfZnJlZSAoc2luay0+cHJlZmVycmVkcmVuZGVyZXIpOwotCisgICAgICBnX2ZyZWUgKHNpbmstPnByZWZlcnJlZHJlbmRlcmVyKTsKICAgICAgIHNpbmstPnByZWZlcnJlZHJlbmRlcmVyID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CiAgICAgICBicmVhazsKICAgICBjYXNlIFBST1BfS0VFUF9BU1BFQ1RfUkFUSU86CmRpZmYgLS1naXQgYS9zeXMvZHZiL01ha2VmaWxlLmluIGIvc3lzL2R2Yi9NYWtlZmlsZS5pbgppbmRleCBhYWIzNWQ0Li4wZGM1Njk4IDEwMDY0NAotLS0gYS9zeXMvZHZiL01ha2VmaWxlLmluCisrKyBiL3N5cy9kdmIvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjg0LDYgKzI4Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzIxLDYgKzMyMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI5LDcgKzMzMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0OCw4ICszNTAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY2LDE2ICszNjksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDAxLDYgKzQwNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNiw2ICs0MzIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjcsNiArNTM1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0MCw4ICs1NDksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTcsNiArNTY0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxNCwxNiArNjIzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODUsNiArNjk3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk0LDYgKzcwNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzEsNyArNzQ2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvZHZiL1JFQURNRSBiL3N5cy9kdmIvUkVBRE1FCmluZGV4IDEzMjlkYTkuLjRkM2M4M2IgMTAwNjQ0Ci0tLSBhL3N5cy9kdmIvUkVBRE1FCisrKyBiL3N5cy9kdmIvUkVBRE1FCkBAIC01LDcgKzUsNyBAQAogCiBUcnk6CiAKLSAgICAgZ3N0LWxhdW5jaCBkdmJzcmMgZnJlcXVlbmN5PTExOTU0IHBvbGFyaXR5PWggc3ltYm9sLXJhdGU9Mjc1MDAgcGlkcz0yMTA6MjIwCisgICAgIGdzdC1sYXVuY2gtMS4wIGR2YnNyYyBmcmVxdWVuY3k9MTE5NTQgcG9sYXJpdHk9aCBzeW1ib2wtcmF0ZT0yNzUwMCBwaWRzPTIxMDoyMjAKICAgICAgICAgICEgbXBlZ3RzZGVtdXggZXMtcGlkcz0yMTA6MjIwIG5hbWU9ZGVtdXggISBxdWV1ZSAhIG1wZWcyZGVjCiAgICAgICAgICAhIHh2aW1hZ2VzaW5rIGRlbXV4LiAhIHF1ZXVlICEgbWFkICEgYXVkaW9jb252ZXJ0ICEgYXV0b2F1ZGlvc2luawogCmRpZmYgLS1naXQgYS9zeXMvZHZiL2NhbXN3Y2xpZW50LmMgYi9zeXMvZHZiL2NhbXN3Y2xpZW50LmMKaW5kZXggZjVkMDdjZi4uNjhhM2Q0MyAxMDA2NDQKLS0tIGEvc3lzL2R2Yi9jYW1zd2NsaWVudC5jCisrKyBiL3N5cy9kdmIvY2Ftc3djbGllbnQuYwpAQCAtNTIsOCArNTIsNyBAQAogICBpZiAoY2xpZW50LT5zb2NrKQogICAgIGNsb3NlIChjbGllbnQtPnNvY2spOwogCi0gIGlmIChjbGllbnQtPnNvY2tfcGF0aCkKLSAgICBnX2ZyZWUgKGNsaWVudC0+c29ja19wYXRoKTsKKyAgZ19mcmVlIChjbGllbnQtPnNvY2tfcGF0aCk7CiB9CiAKIHZvaWQKZGlmZiAtLWdpdCBhL3N5cy9kdmIvZHZiYmFzZWJpbi5jIGIvc3lzL2R2Yi9kdmJiYXNlYmluLmMKaW5kZXggMmU2ZGNmZC4uZjAwMzM1NSAxMDA2NDQKLS0tIGEvc3lzL2R2Yi9kdmJiYXNlYmluLmMKKysrIGIvc3lzL2R2Yi9kdmJiYXNlYmluLmMKQEAgLTU5Nyw4ICs1OTcsNyBAQAogCiAgIC8qIEZJWE1FIDogRGVhY3RpdmF0ZSBwcm9ncmFtcyBubyBsb25nZXIgc2VsZWN0ZWQgKi8KIAotICBpZiAoZHZiYmFzZWJpbi0+cHJvZ3JhbV9udW1iZXJzKQotICAgIGdfZnJlZSAoZHZiYmFzZWJpbi0+cHJvZ3JhbV9udW1iZXJzKTsKKyAgZ19mcmVlIChkdmJiYXNlYmluLT5wcm9ncmFtX251bWJlcnMpOwogICBkdmJiYXNlYmluLT5wcm9ncmFtX251bWJlcnMgPSBnX3N0cmR1cCAocG4pOwogCiAgIGlmICgwKQpkaWZmIC0tZ2l0IGEvc3lzL2R2Yi9nc3RkdmJzcmMuYyBiL3N5cy9kdmIvZ3N0ZHZic3JjLmMKaW5kZXggYWRiYzk3My4uYjkzMjU1ZiAxMDA2NDQKLS0tIGEvc3lzL2R2Yi9nc3RkdmJzcmMuYworKysgYi9zeXMvZHZiL2dzdGR2YnNyYy5jCkBAIC0yOCwxNiArMjgsMTYgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGR2YnNyYyBtb2R1bGF0aW9uPSJRQU0gNjQiIHRyYW5zLW1vZGU9OGsgYmFuZHdpZHRoPTggZnJlcXVlbmN5PTUxNDAwMDAwMCBjb2RlLXJhdGUtbHA9QVVUTyBjb2RlLXJhdGUtaHA9Mi8zIGd1YXJkPTQgIGhpZXJhcmNoeT0wICEgbXBlZ3RzZGVtdXggbmFtZT1kZW11eCAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtcGVnMmRlYyAhIHh2aW1hZ2VzaW5rIGRlbXV4LiAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtYWQgISBhbHNhc2luaworICogZ3N0LWxhdW5jaC0xLjAgZHZic3JjIG1vZHVsYXRpb249IlFBTSA2NCIgdHJhbnMtbW9kZT04ayBiYW5kd2lkdGg9OCBmcmVxdWVuY3k9NTE0MDAwMDAwIGNvZGUtcmF0ZS1scD1BVVRPIGNvZGUtcmF0ZS1ocD0yLzMgZ3VhcmQ9NCAgaGllcmFyY2h5PTAgISBtcGVndHNkZW11eCBuYW1lPWRlbXV4ICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1wZWcyZGVjICEgeHZpbWFnZXNpbmsgZGVtdXguICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1hZCAhIGFsc2FzaW5rCiAgKiBdfCBDYXB0dXJlcyBhIGZ1bGwgdHJhbnNwb3J0IHN0cmVhbSBmcm9tIERWQiBjYXJkIDAgdGhhdCBpcyBhIERWQi1UIGNhcmQgYXQgdHVuZWQgZnJlcXVlbmN5IDUxNDAwMDAwMCBIeiB3aXRoIG90aGVyIHBhcmFtZXRlcnMgYXMgc2VlbiBpbiB0aGUgcGlwZWxpbmUgYW5kIHJlbmRlcnMgdGhlIGZpcnN0IFRWIHByb2dyYW0gb24gdGhlIHRyYW5zcG9ydCBzdHJlYW0uCiAgKiB8WwotICogZ3N0LWxhdW5jaCBkdmJzcmMgbW9kdWxhdGlvbj0iUUFNIDY0IiB0cmFucy1tb2RlPThrIGJhbmR3aWR0aD04IGZyZXF1ZW5jeT01MTQwMDAwMDAgY29kZS1yYXRlLWxwPUFVVE8gY29kZS1yYXRlLWhwPTIvMyBndWFyZD00ICBoaWVyYXJjaHk9MCBwaWRzPTEwMDoyNTY6MjU3ICEgbXBlZ3RzZGVtdXggbmFtZT1kZW11eCAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtcGVnMmRlYyAhIHh2aW1hZ2VzaW5rIGRlbXV4LiAhIHF1ZXVlIG1heC1zaXplLWJ1ZmZlcnM9MCBtYXgtc2l6ZS10aW1lPTAgISBtYWQgISBhbHNhc2luaworICogZ3N0LWxhdW5jaC0xLjAgZHZic3JjIG1vZHVsYXRpb249IlFBTSA2NCIgdHJhbnMtbW9kZT04ayBiYW5kd2lkdGg9OCBmcmVxdWVuY3k9NTE0MDAwMDAwIGNvZGUtcmF0ZS1scD1BVVRPIGNvZGUtcmF0ZS1ocD0yLzMgZ3VhcmQ9NCAgaGllcmFyY2h5PTAgcGlkcz0xMDA6MjU2OjI1NyAhIG1wZWd0c2RlbXV4IG5hbWU9ZGVtdXggISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbXBlZzJkZWMgISB4dmltYWdlc2luayBkZW11eC4gISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbWFkICEgYWxzYXNpbmsKICAqIF18IENhcHR1cmVzIGFuZCByZW5kZXJzIGEgdHJhbnNwb3J0IHN0cmVhbSBmcm9tIERWQiBjYXJkIDAgdGhhdCBpcyBhIERWQi1UIGNhcmQgZm9yIGEgcHJvZ3JhbSBhdCB0dW5lZCBmcmVxdWVuY3kgNTE0MDAwMDAwIEh6IHdpdGggUE1UIFBJRCAxMDAgYW5kIGVsZW1lbnRhcnkgc3RyZWFtIFBJRHMgb2YgMjU2LCAyNTcgd2l0aCBvdGhlciBwYXJhbWV0ZXJzIGFzIHNlZW4gaW4gdGhlIHBpcGVsaW5lLgogICogfFsKLSAqIGdzdC1sYXVuY2ggZHZic3JjIHBvbGFyaXR5PSJoIiBmcmVxdWVuY3k9MTEzMDIwMDAgc3ltYm9sLXJhdGU9Mjc1MDAgZGlzZXFjLXNvdXJjZT0wIHBpZHM9NTA6MTAyOjEwMyAhIG1wZWd0c2RlbXV4IG5hbWU9ZGVtdXggISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbXBlZzJkZWMgISB4dmltYWdlc2luayBkZW11eC4gISBxdWV1ZSBtYXgtc2l6ZS1idWZmZXJzPTAgbWF4LXNpemUtdGltZT0wICEgbWFkICEgYWxzYXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGR2YnNyYyBwb2xhcml0eT0iaCIgZnJlcXVlbmN5PTExMzAyMDAwIHN5bWJvbC1yYXRlPTI3NTAwIGRpc2VxYy1zb3VyY2U9MCBwaWRzPTUwOjEwMjoxMDMgISBtcGVndHNkZW11eCBuYW1lPWRlbXV4ICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1wZWcyZGVjICEgeHZpbWFnZXNpbmsgZGVtdXguICEgcXVldWUgbWF4LXNpemUtYnVmZmVycz0wIG1heC1zaXplLXRpbWU9MCAhIG1hZCAhIGFsc2FzaW5rCiAgKiBdfCBDYXB0dXJlcyBhbmQgcmVuZGVycyBhIHRyYW5zcG9ydCBzdHJlYW0gZnJvbSBEVkIgY2FyZCAwIHRoYXQgaXMgYSBEVkItUyBjYXJkIGZvciBhIHByb2dyYW0gYXQgdHVuZWQgZnJlcXVlbmN5IDExMzAyMDAwIGtIeiwgc3ltYm9sIHJhdGUgb2YgMjc1MDAga0JkIChraWxvIGJhdWRzKSB3aXRoIFBNVCBQSUQgb2YgNTAgYW5kIGVsZW1lbnRhcnkgc3RyZWFtIFBJRHMgb2YgMTAyIGFuZCAxMDMuCiAgKiB8WwotIGdzdC1sYXVuY2ggZHZic3JjIGZyZXF1ZW5jeT01MTUxNDI4NTcgZ3VhcmQ9MTYgdHJhbnMtbW9kZT0iOGsiIGlzZGJ0LWxheWVyLWVuYWJsZWQ9NyBpc2RidC1wYXJ0aWFsLXJlY2VwdGlvbj0xIGlzZGJ0LWxheWVyYS1mZWM9IjIvMyIgaXNkYnQtbGF5ZXJhLW1vZHVsYXRpb249IlFQU0siIGlzZGJ0LWxheWVyYS1zZWdtZW50LWNvdW50PTEgaXNkYnQtbGF5ZXJhLXRpbWUtaW50ZXJsZWF2aW5nPTQgaXNkYnQtbGF5ZXJiLWZlYz0iMy80IiBpc2RidC1sYXllcmItbW9kdWxhdGlvbj0icWFtLTY0IiBpc2RidC1sYXllcmItc2VnbWVudC1jb3VudD0xMiBpc2RidC1sYXllcmItdGltZS1pbnRlcmxlYXZpbmc9MiBpc2RidC1sYXllcmMtZmVjPSIxLzIiIGlzZGJ0LWxheWVyYy1tb2R1bGF0aW9uPSJxYW0tNjQiIGlzZGJ0LWxheWVyYy1zZWdtZW50LWNvdW50PTAgaXNkYnQtbGF5ZXJjLXRpbWUtaW50ZXJsZWF2aW5nPTAgZGVsc3lzPSJpc2RiLXQiICEgdHNkZW11eCAhICJ2aWRlby94LWgyNjQiICEgaDI2NHBhcnNlICEgcXVldWUgISBhdmRlY19oMjY0ICEgdmlkZW9jb252ZXJ0ICEgcXVldWUgISBhdXRvdmlkZW9zaW5rCisgZ3N0LWxhdW5jaC0xLjAgZHZic3JjIGZyZXF1ZW5jeT01MTUxNDI4NTcgZ3VhcmQ9MTYgdHJhbnMtbW9kZT0iOGsiIGlzZGJ0LWxheWVyLWVuYWJsZWQ9NyBpc2RidC1wYXJ0aWFsLXJlY2VwdGlvbj0xIGlzZGJ0LWxheWVyYS1mZWM9IjIvMyIgaXNkYnQtbGF5ZXJhLW1vZHVsYXRpb249IlFQU0siIGlzZGJ0LWxheWVyYS1zZWdtZW50LWNvdW50PTEgaXNkYnQtbGF5ZXJhLXRpbWUtaW50ZXJsZWF2aW5nPTQgaXNkYnQtbGF5ZXJiLWZlYz0iMy80IiBpc2RidC1sYXllcmItbW9kdWxhdGlvbj0icWFtLTY0IiBpc2RidC1sYXllcmItc2VnbWVudC1jb3VudD0xMiBpc2RidC1sYXllcmItdGltZS1pbnRlcmxlYXZpbmc9MiBpc2RidC1sYXllcmMtZmVjPSIxLzIiIGlzZGJ0LWxheWVyYy1tb2R1bGF0aW9uPSJxYW0tNjQiIGlzZGJ0LWxheWVyYy1zZWdtZW50LWNvdW50PTAgaXNkYnQtbGF5ZXJjLXRpbWUtaW50ZXJsZWF2aW5nPTAgZGVsc3lzPSJpc2RiLXQiICEgdHNkZW11eCAhICJ2aWRlby94LWgyNjQiICEgaDI2NHBhcnNlICEgcXVldWUgISBhdmRlY19oMjY0ICEgdmlkZW9jb252ZXJ0ICEgcXVldWUgISBhdXRvdmlkZW9zaW5rCiAgKiBdfCBDYXB0dXJlcyBhbmQgcmVuZGVycyB0aGUgdmlkZW8gdHJhY2sgb2YgVFYgUGFyYcOtYmEgSEQgKEdsb2JvIGFmZmlsaWF0ZSkgaW4gQ2FtcGluYSBHcmFuZGUsIEJyYXppbC4gVGhpcyBpcyBhbiBJU0RCLVQgKEJyYXppbGlhbiBJU0RCLVRiIHZhcmlhbnQpIGJyb2FkY2FzdC4KICAqIDwvcmVmc2VjdDI+CiAgKi8KQEAgLTk5LDcgKzk5LDYgQEAKICNpbmNsdWRlIDxzdGRpby5oPgogI2luY2x1ZGUgPHN0ZGxpYi5oPgogI2luY2x1ZGUgPHN0cmluZy5oPgotI2luY2x1ZGUgIl9zdGRpbnQuaCIKIAogI2luY2x1ZGUgPHVuaXN0ZC5oPgogCkBAIC0yMDU2LDggKzIwNTUsOCBAQAogZ3N0X2R2YnNyY19vdXRwdXRfZnJvbnRlbmRfc3RhdHMgKEdzdER2YlNyYyAqIHNyYykKIHsKICAgZmVfc3RhdHVzX3Qgc3RhdHVzOwotICB1aW50MTZfdCBzbnIsIF9zaWduYWw7Ci0gIHVpbnQzMl90IGJlciwgYmFkX2Jsa3M7CisgIGd1aW50MTYgc25yLCBfc2lnbmFsOworICBndWludDMyIGJlciwgYmFkX2Jsa3M7CiAgIEdzdE1lc3NhZ2UgKm1lc3NhZ2U7CiAgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOwogICBpbnQgZmVfZmQgPSBzcmMtPmZkX2Zyb250ZW5kOwpAQCAtMjA5OSw3ICsyMDk4LDcgQEAKIHN0cnVjdCBkaXNlcWNfY21kCiB7CiAgIHN0cnVjdCBkdmJfZGlzZXFjX21hc3Rlcl9jbWQgY21kOwotICB1aW50MzJfdCB3YWl0OworICBndWludDMyIHdhaXQ7CiB9OwogCiBzdGF0aWMgdm9pZApAQCAtMjI5Myw4ICsyMjkyLDggQEAKICAgICBpZiAob2JqZWN0LT50dW5pbmdfdGltZW91dCkKICAgICAgIGVsYXBzZWRfdGltZSA9IEdTVF9DTE9DS19ESUZGIChzdGFydCwgZ3N0X3V0aWxfZ2V0X3RpbWVzdGFtcCAoKSk7CiAgICAgR1NUX0xPR19PQkpFQ1QgKG9iamVjdCwKLSAgICAgICAgIlR1bmluZy4gVGltZSBlbGFwc2VkICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBMaW1pdCAlIiBHX0dVSU5UNjRfRk9STUFULAotICAgICAgICBlbGFwc2VkX3RpbWUsIG9iamVjdC0+dHVuaW5nX3RpbWVvdXQpOworICAgICAgICAiVHVuaW5nLiBUaW1lIGVsYXBzZWQgJSIgR1NUX1NUSU1FX0ZPUk1BVCAiIExpbWl0ICUiIEdfR1VJTlQ2NF9GT1JNQVQsCisgICAgICAgIEdTVF9TVElNRV9BUkdTIChlbGFwc2VkX3RpbWUpLCBvYmplY3QtPnR1bmluZ190aW1lb3V0KTsKICAgfQogCiAgIGlmICghKHN0YXR1cyAmIEZFX0hBU19MT0NLKSkgewpkaWZmIC0tZ2l0IGEvc3lzL2R2Yi9wYXJzZWNoYW5uZWxzLmMgYi9zeXMvZHZiL3BhcnNlY2hhbm5lbHMuYwppbmRleCA5YzQ2ZGRiLi4xZDMwNTgwIDEwMDY0NAotLS0gYS9zeXMvZHZiL3BhcnNlY2hhbm5lbHMuYworKysgYi9zeXMvZHZiL3BhcnNlY2hhbm5lbHMuYwpAQCAtNTQsNiArNTQsOSBAQAogICBnY2hhciAqKmxpbmVzOwogICBnY2hhciAqbGluZTsKICAgZ2NoYXIgKipmaWVsZHM7CisgIGludCBpLCBwYXJzZWRjaGFubmVscyA9IDA7CisgIEdIYXNoVGFibGUgKnJlczsKKyAgR0Vycm9yICplcnIgPSBOVUxMOwogICBjb25zdCBnY2hhciAqdGVycmVzdHJpYWxbXSA9IHsgImludmVyc2lvbiIsICJiYW5kd2lkdGgiLAogICAgICJjb2RlLXJhdGUtaHAiLCAiY29kZS1yYXRlLWxwIiwgIm1vZHVsYXRpb24iLCAidHJhbnNtaXNzaW9uLW1vZGUiLAogICAgICJndWFyZCIsICJoaWVyYXJjaHkiCkBAIC02NCw5ICs2Nyw2IEBACiAgIGNvbnN0IGdjaGFyICpjYWJsZVtdID0geyAiaW52ZXJzaW9uIiwgInN5bWJvbC1yYXRlIiwgImNvZGUtcmF0ZS1ocCIsCiAgICAgIm1vZHVsYXRpb24iCiAgIH07Ci0gIGludCBpLCBwYXJzZWRjaGFubmVscyA9IDA7Ci0gIEdIYXNoVGFibGUgKnJlczsKLSAgR0Vycm9yICplcnIgPSBOVUxMOwogCiAgIEdTVF9JTkZPX09CSkVDVCAoZHZiYmFzZWJpbiwgInBhcnNpbmcgJyVzJyIsIGZpbGVuYW1lKTsKIApAQCAtNzksMTggKzc5LDM3IEBACiAgIGkgPSAwOwogICBsaW5lID0gbGluZXNbMF07CiAgIHdoaWxlIChsaW5lICE9IE5VTEwpIHsKLSAgICBpZiAobGluZVswXSAhPSAnIycpIHsKLSAgICAgIGludCBudW1maWVsZHM7Ci0gICAgICBnYm9vbGVhbiBwYXJzZWQgPSBGQUxTRTsKLSAgICAgIEdIYXNoVGFibGUgKnBhcmFtcyA9IGdfaGFzaF90YWJsZV9uZXdfZnVsbCAoZ19zdHJfaGFzaCwgZ19zdHJfZXF1YWwsCi0gICAgICAgICAgZ19mcmVlLCBnX2ZyZWUpOworICAgIEdIYXNoVGFibGUgKnBhcmFtczsKKyAgICBpbnQgaiwgbnVtZmllbGRzOwogCi0gICAgICBmaWVsZHMgPSBnX3N0cnNwbGl0IChsaW5lLCAiOiIsIDApOwotICAgICAgbnVtZmllbGRzID0gZ19zdHJ2X2xlbmd0aCAoZmllbGRzKTsKLSAgICAgIGlmIChudW1maWVsZHMgPT0gOCkgewotICAgICAgICAvKiBzYXRlbGxpdGUgKi8KLSAgICAgICAgaW50IGo7CisgICAgaWYgKGxpbmVbMF0gPT0gJyMnKQorICAgICAgZ290byBuZXh0X2xpbmU7CiAKKyAgICBwYXJhbXMgPSBnX2hhc2hfdGFibGVfbmV3X2Z1bGwgKGdfc3RyX2hhc2gsIGdfc3RyX2VxdWFsLCBnX2ZyZWUsIGdfZnJlZSk7CisgICAgZmllbGRzID0gZ19zdHJzcGxpdCAobGluZSwgIjoiLCAwKTsKKyAgICBudW1maWVsZHMgPSBnX3N0cnZfbGVuZ3RoIChmaWVsZHMpOworCisgICAgc3dpdGNoIChudW1maWVsZHMpIHsKKyAgICAgIGNhc2UgMTM6ICAgICAgICAgICAgICAgICAvKiB0ZXJyZXN0cmlhbCAqLworICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgidHlwZSIpLAorICAgICAgICAgICAgZ19zdHJkdXAgKCJ0ZXJyZXN0cmlhbCIpKTsKKyAgICAgICAgZm9yIChqID0gMjsgaiA8PSA5OyBqKyspIHsKKyAgICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICh0ZXJyZXN0cmlhbFtqIC0gMl0pLAorICAgICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzW2pdKSk7CisgICAgICAgIH0KKyAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoImZyZXF1ZW5jeSIpLAorICAgICAgICAgICAgZ19zdHJkdXAgKGZpZWxkc1sxXSkpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgOTogICAgICAgICAgICAgICAgICAvKiBjYWJsZSAqLworICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgidHlwZSIpLCBnX3N0cmR1cCAoImNhYmxlIikpOworICAgICAgICBmb3IgKGogPSAyOyBqIDw9IDU7IGorKykgeworICAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKGNhYmxlW2ogLSAyXSksCisgICAgICAgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbal0pKTsKKyAgICAgICAgfQorICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgiZnJlcXVlbmN5IiksCisgICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzWzFdKSk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSA4OiAgICAgICAgICAgICAgICAgIC8qIHNhdGVsbGl0ZSAqLwogICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgidHlwZSIpLCBnX3N0cmR1cCAoInNhdGVsbGl0ZSIpKTsKICAgICAgICAgZm9yIChqID0gMjsgaiA8PSA0OyBqKyspIHsKICAgICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwIChzYXRlbGxpdGVbaiAtIDJdKSwKQEAgLTEwNyw1MiArMTI2LDMxIEBACiAgICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoImZyZXF1ZW5jeSIpLAogICAgICAgICAgICAgICBnX3N0cmR1cF9wcmludGYgKCIlZCIsIGF0b2kgKGZpZWxkc1sxXSkpKTsKICAgICAgICAgfQotICAgICAgICBwYXJzZWQgPSBUUlVFOwotICAgICAgfSBlbHNlIGlmIChudW1maWVsZHMgPT0gMTMpIHsKLSAgICAgICAgLyogdGVycmVzdHJpYWwgKi8KLSAgICAgICAgaW50IGo7Ci0KLSAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoInR5cGUiKSwKLSAgICAgICAgICAgIGdfc3RyZHVwICgidGVycmVzdHJpYWwiKSk7Ci0gICAgICAgIGZvciAoaiA9IDI7IGogPD0gOTsgaisrKSB7Ci0gICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAodGVycmVzdHJpYWxbaiAtIDJdKSwKLSAgICAgICAgICAgICAgZ19zdHJkdXAgKGZpZWxkc1tqXSkpOwotICAgICAgICB9Ci0gICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJmcmVxdWVuY3kiKSwKLSAgICAgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbMV0pKTsKLSAgICAgICAgcGFyc2VkID0gVFJVRTsKLSAgICAgIH0gZWxzZSBpZiAobnVtZmllbGRzID09IDkpIHsKLSAgICAgICAgLyogY2FibGUgKi8KLSAgICAgICAgaW50IGo7Ci0KLSAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoInR5cGUiKSwgZ19zdHJkdXAgKCJjYWJsZSIpKTsKLSAgICAgICAgZm9yIChqID0gMjsgaiA8PSA1OyBqKyspIHsKLSAgICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwIChjYWJsZVtqIC0gMl0pLAotICAgICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzW2pdKSk7Ci0gICAgICAgIH0KLSAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoImZyZXF1ZW5jeSIpLAotICAgICAgICAgICAgZ19zdHJkdXAgKGZpZWxkc1sxXSkpOwotICAgICAgICBwYXJzZWQgPSBUUlVFOwotICAgICAgfSBlbHNlIGlmIChudW1maWVsZHMgPT0gNikgewotICAgICAgICAvKiBhdHNjICh2c2IvcWFtKSAqLworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgNjogICAgICAgICAgICAgICAgICAvKiBhdHNjICh2c2IvcWFtKSAqLwogICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgidHlwZSIpLCBnX3N0cmR1cCAoImF0c2MiKSk7CiAgICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHBhcmFtcywgZ19zdHJkdXAgKCJtb2R1bGF0aW9uIiksCiAgICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzWzJdKSk7CiAKICAgICAgICAgZ19oYXNoX3RhYmxlX2luc2VydCAocGFyYW1zLCBnX3N0cmR1cCAoImZyZXF1ZW5jeSIpLAogICAgICAgICAgICAgZ19zdHJkdXAgKGZpZWxkc1sxXSkpOwotICAgICAgICBwYXJzZWQgPSBUUlVFOwotICAgICAgfQotICAgICAgaWYgKHBhcnNlZCkgewotICAgICAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgic2lkIiksCi0gICAgICAgICAgICBnX3N0cmR1cCAoZmllbGRzW251bWZpZWxkcyAtIDFdKSk7Ci0gICAgICAgIGdfaGFzaF90YWJsZV9pbnNlcnQgKHJlcywgZ19zdHJkdXAgKGZpZWxkc1swXSksIHBhcmFtcyk7Ci0gICAgICAgIHBhcnNlZGNoYW5uZWxzKys7Ci0gICAgICB9Ci0gICAgICBnX3N0cmZyZWV2IChmaWVsZHMpOworICAgICAgICBicmVhazsKKyAgICAgIGRlZmF1bHQ6CisgICAgICAgIGdvdG8gbm90X3BhcnNlZDsKICAgICB9CisKKyAgICAvKiBwYXJzZWQgKi8KKyAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChwYXJhbXMsIGdfc3RyZHVwICgic2lkIiksCisgICAgICAgIGdfc3RyZHVwIChmaWVsZHNbbnVtZmllbGRzIC0gMV0pKTsKKyAgICBnX2hhc2hfdGFibGVfaW5zZXJ0IChyZXMsIGdfc3RyZHVwIChmaWVsZHNbMF0pLCBwYXJhbXMpOworICAgIHBhcnNlZGNoYW5uZWxzKys7CisKKyAgbm90X3BhcnNlZDoKKyAgICBnX3N0cmZyZWV2IChmaWVsZHMpOworICBuZXh0X2xpbmU6CiAgICAgbGluZSA9IGxpbmVzWysraV07CiAgIH0KKwogICBnX3N0cmZyZWV2IChsaW5lcyk7CiAgIGdfZnJlZSAoY29udGVudHMpOwogCkBAIC0xNjIsMzIgKzE2MCwyNyBAQAogICByZXR1cm4gcmVzOwogCiBvcGVuX2ZhaWw6Ci0gIHsKLSAgICBpZiAoZXJyLT5jb2RlID09IEdfRklMRV9FUlJPUl9OT0VOVCkgewotICAgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfUkVTT1VSQ0VfRVJST1IsIEdTVF9SRVNPVVJDRV9FUlJPUl9OT1RfRk9VTkQsCi0gICAgICAgICAgXygiQ291bGRuJ3QgZmluZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUiKSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1JFU09VUkNFX0VSUk9SLCBHU1RfUkVTT1VSQ0VfRVJST1JfUkVBRCwKLSAgICAgICAgICBfKCJDb3VsZG4ndCBsb2FkIERWQiBjaGFubmVsIGNvbmZpZ3VyYXRpb24gZmlsZTogJXMiKSwgZXJyLT5tZXNzYWdlKTsKLSAgICB9Ci0gICAgZ19jbGVhcl9lcnJvciAoJmVycik7Ci0gICAgcmV0dXJuIE5VTEw7CisgIGlmIChlcnItPmNvZGUgPT0gR19GSUxFX0VSUk9SX05PRU5UKSB7CisgICAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfUkVTT1VSQ0VfRVJST1IsIEdTVF9SRVNPVVJDRV9FUlJPUl9OT1RfRk9VTkQsCisgICAgICAgIF8oIkNvdWxkbid0IGZpbmQgRFZCIGNoYW5uZWwgY29uZmlndXJhdGlvbiBmaWxlIikpOworICB9IGVsc2UgeworICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1JFU09VUkNFX0VSUk9SLCBHU1RfUkVTT1VSQ0VfRVJST1JfUkVBRCwKKyAgICAgICAgXygiQ291bGRuJ3QgbG9hZCBEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGU6ICVzIiksIGVyci0+bWVzc2FnZSk7CiAgIH0KKyAgZ19jbGVhcl9lcnJvciAoJmVycik7CisgIHJldHVybiBOVUxMOwogCiBub19jaGFubmVsczoKLSAgewotICAgIGdfc2V0X2Vycm9yIChlcnJvciwgR1NUX1JFU09VUkNFX0VSUk9SLCBHU1RfUkVTT1VSQ0VfRVJST1JfRkFJTEVELAotICAgICAgICBfKCJEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUgZG9lc24ndCBjb250YWluIGFueSBjaGFubmVscyIpKTsKLSAgICBnX2hhc2hfdGFibGVfdW5yZWYgKHJlcyk7Ci0gICAgcmV0dXJuIE5VTEw7Ci0gIH0KKyAgZ19zZXRfZXJyb3IgKGVycm9yLCBHU1RfUkVTT1VSQ0VfRVJST1IsIEdTVF9SRVNPVVJDRV9FUlJPUl9GQUlMRUQsCisgICAgICBfKCJEVkIgY2hhbm5lbCBjb25maWd1cmF0aW9uIGZpbGUgZG9lc24ndCBjb250YWluIGFueSBjaGFubmVscyIpKTsKKyAgZ19oYXNoX3RhYmxlX3VucmVmIChyZXMpOworICByZXR1cm4gTlVMTDsKIH0KIAogc3RhdGljIGdib29sZWFuCiByZW1vdmVfY2hhbm5lbF9mcm9tX2hhc2ggKGdwb2ludGVyIGtleSwgZ3BvaW50ZXIgdmFsdWUsIGdwb2ludGVyIHVzZXJfZGF0YSkKIHsKLSAgaWYgKGtleSkKLSAgICBnX2ZyZWUgKGtleSk7CisgIGdfZnJlZSAoa2V5KTsKICAgaWYgKHZhbHVlKQogICAgIGdfaGFzaF90YWJsZV9kZXN0cm95ICgoR0hhc2hUYWJsZSAqKSB2YWx1ZSk7CiAgIHJldHVybiBUUlVFOwpkaWZmIC0tZ2l0IGEvc3lzL2ZiZGV2L01ha2VmaWxlLmluIGIvc3lzL2ZiZGV2L01ha2VmaWxlLmluCmluZGV4IDgyYTFkN2QuLmVkMmFhZmQgMTAwNjQ0Ci0tLSBhL3N5cy9mYmRldi9NYWtlZmlsZS5pbgorKysgYi9zeXMvZmJkZXYvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc0LDYgKzI3Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzExLDYgKzMxMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzE5LDcgKzMyMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzOCw4ICszNDAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzU2LDE2ICszNTksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5NSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQxNiw2ICs0MjIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTcsNiArNTI1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzMCw4ICs1MzksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDcsNiArNTU0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwNCwxNiArNjEzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjY1LDYgKzY3Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NzUsNiArNjg3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg0LDYgKzY5Nyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjEsNyArNzM2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvZmJkZXYvZ3N0ZmJkZXZzaW5rLmMgYi9zeXMvZmJkZXYvZ3N0ZmJkZXZzaW5rLmMKaW5kZXggY2MzOTEzYi4uYjU1OWE3ZSAxMDA2NDQKLS0tIGEvc3lzL2ZiZGV2L2dzdGZiZGV2c2luay5jCisrKyBiL3N5cy9mYmRldi9nc3RmYmRldnNpbmsuYwpAQCAtMjI3LDcgKzIyNyw3IEBACiAgIGdzdF9zdHJ1Y3R1cmVfZ2V0X2ludCAoc3RydWN0dXJlLCAiaGVpZ2h0IiwgJmZiZGV2c2luay0+aGVpZ2h0KTsKIAogICAvKiBjYWxjdWxhdGUgY2VudGVyaW5nIGFuZCBzY2FubGVuZ3RocyBmb3IgdGhlIHZpZGVvICovCi0gIGZiZGV2c2luay0+Ynl0ZXNwcCA9IGZiZGV2c2luay0+Zml4aW5mby5saW5lX2xlbmd0aCAvIGZiZGV2c2luay0+dmFyaW5mby54cmVzOworICBmYmRldnNpbmstPmJ5dGVzcHAgPSBmYmRldnNpbmstPmZpeGluZm8ubGluZV9sZW5ndGggLyBmYmRldnNpbmstPnZhcmluZm8ueHJlc192aXJ0dWFsOwogCiAgIGZiZGV2c2luay0+Y3ggPSAoKGludCkgZmJkZXZzaW5rLT52YXJpbmZvLnhyZXMgLSBmYmRldnNpbmstPndpZHRoKSAvIDI7CiAgIGlmIChmYmRldnNpbmstPmN4IDwgMCkKZGlmZiAtLWdpdCBhL3N5cy9saW5zeXMvTWFrZWZpbGUuaW4gYi9zeXMvbGluc3lzL01ha2VmaWxlLmluCmluZGV4IDExY2E3NjQuLjhiNjE1ZGYgMTAwNjQ0Ci0tLSBhL3N5cy9saW5zeXMvTWFrZWZpbGUuaW4KKysrIGIvc3lzL2xpbnN5cy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzYsNiArMjc1LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTMsNiArMzE0LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMjEsNyArMzI0LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzQwLDggKzM0Miw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTgsMTYgKzM2MSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTMsNiArMzk3LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE4LDYgKzQyNCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxOSw2ICs1MjcsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMyLDggKzU0MSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0OSw2ICs1NTYsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA2LDE2ICs2MTUsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjcsNiArNjc4LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3Nyw2ICs2ODksNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODYsNiArNjk5LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMyw3ICs3MzgsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy9udmVuYy9NYWtlZmlsZS5hbSBiL3N5cy9udmVuYy9NYWtlZmlsZS5hbQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OGM5YTJjCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMzMgQEAKK3BsdWdpbl9MVExJQlJBUklFUyA9IGxpYmdzdG52ZW5jLmxhCisKK2xpYmdzdG52ZW5jX2xhX1NPVVJDRVMgPSBcCisJZ3N0bnZlbmMuYyBcCisJZ3N0bnZiYXNlZW5jLmMgXAorCWdzdG52aDI2NGVuYy5jCisKK25vaW5zdF9IRUFERVJTID0gXAorCWdzdG52ZW5jLmggXAorCWdzdG52YmFzZWVuYy5oIFwKKwlnc3RudmgyNjRlbmMuaAorCitsaWJnc3RudmVuY19sYV9DRkxBR1MgPSBcCisJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9DRkxBR1MpIFwKKwkkKEdTVF9QQlVUSUxTX0NGTEFHUykgXAorCSQoR1NUX1ZJREVPX0NGTEFHUykgXAorCSQoQ1VEQV9DRkxBR1MpIFwKKwkkKE5WRU5DT0RFX0NGTEFHUykKKworbGliZ3N0bnZlbmNfbGFfTElCQUREID0gXAorCSQoR1NUX0xJQlMpIFwKKwkkKEdTVF9QQlVUSUxTX0xJQlMpIFwKKwkkKEdTVF9WSURFT19MSUJTKSBcCisJJChDVURBX0xJQlMpIFwKKwkkKE5WRU5DT0RFX0xJQlMpCisKK2lmIFVTRV9OVkVOQ19HU1RfR0wKK2xpYmdzdG52ZW5jX2xhX0xJQkFERCArPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC0kKEdTVF9BUElfVkVSU0lPTikubGEKK2VuZGlmCitsaWJnc3RudmVuY19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQpkaWZmIC0tZ2l0IGEvZ3N0L3J0cC9NYWtlZmlsZS5pbiBiL3N5cy9udmVuYy9NYWtlZmlsZS5pbgpzaW1pbGFyaXR5IGluZGV4IDg0JQpyZW5hbWUgZnJvbSBnc3QvcnRwL01ha2VmaWxlLmluCnJlbmFtZSB0byBzeXMvbnZlbmMvTWFrZWZpbGUuaW4KaW5kZXggNzZhZTFlMC4uMTg2NDQ3YyAxMDA2NDQKLS0tIGEvZ3N0L3J0cC9NYWtlZmlsZS5pbgorKysgYi9zeXMvbnZlbmMvTWFrZWZpbGUuaW4KQEAgLTkwLDcgKzkwLDEwIEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1zdWJkaXIgPSBnc3QvcnRwCitAVVNFX05WRU5DX0dTVF9HTF9UUlVFQGFtX19hcHBlbmRfMSA9IFwKK0BVU0VfTlZFTkNfR1NUX0dMX1RSVUVACSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhCisKK3N1YmRpciA9IHN5cy9udmVuYwogQUNMT0NBTF9NNCA9ICQodG9wX3NyY2RpcikvYWNsb2NhbC5tNAogYW1fX2FjbG9jYWxfbTRfZGVwcyA9ICQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWFjLWV4cGFuZC5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYXV0by1hbHQubTQgXApAQCAtMTE2LDE2ICsxMTksMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0xNjQsMjIgKzE2NiwyMCBAQAogYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKHBsdWdpbmRpcikiCiBMVExJQlJBUklFUyA9ICQocGx1Z2luX0xUTElCUkFSSUVTKQogYW1fX0RFUEVOREVOQ0lFU18xID0KLWxpYmdzdHJ0cGJhZF9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvY29kZWNwYXJzZXJzL2xpYmdzdGNvZGVjcGFyc2Vycy0kKEdTVF9BUElfVkVSU0lPTikubGEgXAorbGliZ3N0bnZlbmNfbGFfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKIAkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKLQkkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2xpYmdzdHJ0cGJhZF9sYV9PQkpFQ1RTID0gbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cC5sbyBcCi0JbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVkZXBheS5sbyBcCi0JbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkubG8KLWxpYmdzdHJ0cGJhZF9sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RydHBiYWRfbGFfT0JKRUNUUykKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX2FwcGVuZF8xKQorYW1fbGliZ3N0bnZlbmNfbGFfT0JKRUNUUyA9IGxpYmdzdG52ZW5jX2xhLWdzdG52ZW5jLmxvIFwKKwlsaWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMubG8gbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLmxvCitsaWJnc3RudmVuY19sYV9PQkpFQ1RTID0gJChhbV9saWJnc3RudmVuY19sYV9PQkpFQ1RTKQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKIGFtX192X2x0XzAgPSAtLXNpbGVudAogYW1fX3ZfbHRfMSA9IAotbGliZ3N0cnRwYmFkX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAotCSQobGliZ3N0cnRwYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKLQkkKENDTEQpICQobGliZ3N0cnRwYmFkX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKLQkkKGxpYmdzdHJ0cGJhZF9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitsaWJnc3RudmVuY19sYV9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKGxpYmdzdG52ZW5jX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKKwkkKENDTEQpICQobGliZ3N0bnZlbmNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQobGliZ3N0bnZlbmNfbGFfTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxNCw4ICsyMTQsOCBAQAogYW1fX3ZfQ0NMRF8gPSAkKGFtX192X0NDTERfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9DQ0xEXzAgPSBAZWNobyAiICBDQ0xEICAgICIgJEA7CiBhbV9fdl9DQ0xEXzEgPSAKLVNPVVJDRVMgPSAkKGxpYmdzdHJ0cGJhZF9sYV9TT1VSQ0VTKQotRElTVF9TT1VSQ0VTID0gJChsaWJnc3RydHBiYWRfbGFfU09VUkNFUykKK1NPVVJDRVMgPSAkKGxpYmdzdG52ZW5jX2xhX1NPVVJDRVMpCitESVNUX1NPVVJDRVMgPSAkKGxpYmdzdG52ZW5jX2xhX1NPVVJDRVMpCiBhbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKICAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCiAgICAgbnxub3xOTykgZmFsc2U7OyBcCkBAIC0yNDEsNyArMjQxLDggQEAKICAgZG9uZSB8ICQoYW1fX3VuaXF1aWZ5X2lucHV0KWAKIEVUQUdTID0gZXRhZ3MKIENUQUdTID0gY3RhZ3MKLWFtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL2RlcGNvbXAKK2FtX19ESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9zcmNkaXIpL2RlcGNvbXAgUkVBRE1FIFwKKwlUT0RPCiBESVNURklMRVMgPSAkKERJU1RfQ09NTU9OKSAkKERJU1RfU09VUkNFUykgJChURVhJTkZPUykgJChFWFRSQV9ESVNUKQogQUNMT0NBTCA9IEBBQ0xPQ0FMQAogQUNMT0NBTF9BTUZMQUdTID0gQEFDTE9DQUxfQU1GTEFHU0AKQEAgLTI3OCw2ICsyNzksOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTgsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjgsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ2LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzY1LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICs0MDEsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI4LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUzMSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQ1LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU2MCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxOSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODIsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5Myw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDMsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0Miw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzY1LDMxICs3ODEsMzAgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0cnRwYmFkLmxhCi1saWJnc3RydHBiYWRfbGFfU09VUkNFUyA9IFwKLQlnc3RydHAuYyBcCi0JZ3N0cnRwaDI2NWRlcGF5LmMgXAotCWdzdHJ0cGgyNjVwYXkuYworcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bnZlbmMubGEKK2xpYmdzdG52ZW5jX2xhX1NPVVJDRVMgPSBcCisJZ3N0bnZlbmMuYyBcCisJZ3N0bnZiYXNlZW5jLmMgXAorCWdzdG52aDI2NGVuYy5jCiAKLWxpYmdzdHJ0cGJhZF9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSBcCi0JJChHU1RfQ0ZMQUdTKQotCi1saWJnc3RydHBiYWRfbGFfTElCQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIFwKLQkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2NvZGVjcGFyc2Vycy9saWJnc3Rjb2RlY3BhcnNlcnMtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKLQktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdHZpZGVvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQktbGdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JLWxnc3RydHAtQEdTVF9BUElfVkVSU0lPTkAgXAotCS1sZ3N0cGJ1dGlscy1AR1NUX0FQSV9WRVJTSU9OQCBcCi0JJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSBcCi0JJChMSUJNKQotCi1saWJnc3RydHBiYWRfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0cnRwYmFkX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCiBub2luc3RfSEVBREVSUyA9IFwKLQlnc3RydHBoMjY1ZGVwYXkuaCBcCi0JZ3N0cnRwaDI2NXBheS5oCisJZ3N0bnZlbmMuaCBcCisJZ3N0bnZiYXNlZW5jLmggXAorCWdzdG52aDI2NGVuYy5oCiAKK2xpYmdzdG52ZW5jX2xhX0NGTEFHUyA9IFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCSQoR1NUX0NGTEFHUykgXAorCSQoR1NUX1BCVVRJTFNfQ0ZMQUdTKSBcCisJJChHU1RfVklERU9fQ0ZMQUdTKSBcCisJJChDVURBX0NGTEFHUykgXAorCSQoTlZFTkNPREVfQ0ZMQUdTKQorCitsaWJnc3RudmVuY19sYV9MSUJBREQgPSAkKEdTVF9MSUJTKSAkKEdTVF9QQlVUSUxTX0xJQlMpIFwKKwkkKEdTVF9WSURFT19MSUJTKSAkKENVREFfTElCUykgJChOVkVOQ09ERV9MSUJTKSBcCisJJChhbV9fYXBwZW5kXzEpCitsaWJnc3RudmVuY19sYV9MREZMQUdTID0gJChHU1RfUExVR0lOX0xERkxBR1MpCitsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQogYWxsOiBhbGwtYW0KIAogLlNVRkZJWEVTOgpAQCAtODAzLDkgKzgxOCw5IEBACiAJICAgICAgZXhpdCAxOzsgXAogCSAgZXNhYzsgXAogCWRvbmU7IFwKLQllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSBnc3QvcnRwL01ha2VmaWxlJzsgXAorCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IHN5cy9udmVuYy9NYWtlZmlsZSc7IFwKIAkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCi0JICAkKEFVVE9NQUtFKSAtLWdudSBnc3QvcnRwL01ha2VmaWxlCisJICAkKEFVVE9NQUtFKSAtLWdudSBzeXMvbnZlbmMvTWFrZWZpbGUKIE1ha2VmaWxlOiAkKHNyY2RpcikvTWFrZWZpbGUuaW4gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKIAlAY2FzZSAnJD8nIGluIFwKIAkgICpjb25maWcuc3RhdHVzKikgXApAQCAtODU5LDggKzg3NCw4IEBACiAJICBybSAtZiAkJHtsb2NzfTsgXAogCX0KIAotbGliZ3N0cnRwYmFkLmxhOiAkKGxpYmdzdHJ0cGJhZF9sYV9PQkpFQ1RTKSAkKGxpYmdzdHJ0cGJhZF9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0cnRwYmFkX2xhX0RFUEVOREVOQ0lFUykgCi0JJChBTV9WX0NDTEQpJChsaWJnc3RydHBiYWRfbGFfTElOSykgLXJwYXRoICQocGx1Z2luZGlyKSAkKGxpYmdzdHJ0cGJhZF9sYV9PQkpFQ1RTKSAkKGxpYmdzdHJ0cGJhZF9sYV9MSUJBREQpICQoTElCUykKK2xpYmdzdG52ZW5jLmxhOiAkKGxpYmdzdG52ZW5jX2xhX09CSkVDVFMpICQobGliZ3N0bnZlbmNfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdG52ZW5jX2xhX0RFUEVOREVOQ0lFUykgCisJJChBTV9WX0NDTEQpJChsaWJnc3RudmVuY19sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0bnZlbmNfbGFfT0JKRUNUUykgJChsaWJnc3RudmVuY19sYV9MSUJBREQpICQoTElCUykKIAogbW9zdGx5Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi4kKE9CSkVYVCkKQEAgLTg2OCw5ICs4ODMsOSBAQAogZGlzdGNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICoudGFiLmMKIAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHAuUGxvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LlBsb0BhbV9fcXVvdGVACi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMuUGxvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmVuYy5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52aDI2NGVuYy5QbG9AYW1fX3F1b3RlQAogCiAuYy5vOgogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKWRlcGJhc2U9YGVjaG8gJEAgfCBzZWQgJ3N8W14vXSokJHwkKERFUERJUikvJnw7c3xcLm8kJHx8J2A7XApAQCAtODk2LDI2ICs5MTEsMjYgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExUQ09NUElMRSkgLWMgLW8gJEAgJDwKIAotbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cC5sbzogZ3N0cnRwLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RydHBiYWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cnRwYmFkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RydHBiYWRfbGEtZ3N0cnRwLlRwbyAtYyAtbyBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwLmxvIGB0ZXN0IC1mICdnc3RydHAuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHAuVHBvICQoREVQRElSKS9saWJnc3RydHBiYWRfbGEtZ3N0cnRwLlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHJ0cC5jJyBvYmplY3Q9J2xpYmdzdHJ0cGJhZF9sYS1nc3RydHAubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdG52ZW5jX2xhLWdzdG52ZW5jLmxvOiBnc3RudmVuYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bnZlbmNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bnZlbmNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG52ZW5jX2xhLWdzdG52ZW5jLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmVuYy5UcG8gLWMgLW8gbGliZ3N0bnZlbmNfbGEtZ3N0bnZlbmMubG8gYHRlc3QgLWYgJ2dzdG52ZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG52ZW5jLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdG52ZW5jX2xhLWdzdG52ZW5jLlRwbyAkKERFUERJUikvbGliZ3N0bnZlbmNfbGEtZ3N0bnZlbmMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0bnZlbmMuYycgb2JqZWN0PSdsaWJnc3RudmVuY19sYS1nc3RudmVuYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHJ0cGJhZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RydHBiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cC5sbyBgdGVzdCAtZiAnZ3N0cnRwLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdHJ0cC5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bnZlbmNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bnZlbmNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0bnZlbmNfbGEtZ3N0bnZlbmMubG8gYHRlc3QgLWYgJ2dzdG52ZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG52ZW5jLmMKIAotbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVkZXBheS5sbzogZ3N0cnRwaDI2NWRlcGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RydHBiYWRfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0cnRwYmFkX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LlRwbyAtYyAtbyBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LmxvIGB0ZXN0IC1mICdnc3RydHBoMjY1ZGVwYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwaDI2NWRlcGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkuVHBvICQoREVQRElSKS9saWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LlBsbwotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdHJ0cGgyNjVkZXBheS5jJyBvYmplY3Q9J2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1ZGVwYXkubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKK2xpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5sbzogZ3N0bnZiYXNlZW5jLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RudmVuY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0bnZlbmNfbGEtZ3N0bnZiYXNlZW5jLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMuVHBvIC1jIC1vIGxpYmdzdG52ZW5jX2xhLWdzdG52YmFzZWVuYy5sbyBgdGVzdCAtZiAnZ3N0bnZiYXNlZW5jLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGdzdG52YmFzZWVuYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMuVHBvICQoREVQRElSKS9saWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0bnZiYXNlZW5jLmMnIG9iamVjdD0nbGliZ3N0bnZlbmNfbGEtZ3N0bnZiYXNlZW5jLmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0cnRwYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHJ0cGJhZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NWRlcGF5LmxvIGB0ZXN0IC1mICdnc3RydHBoMjY1ZGVwYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwaDI2NWRlcGF5LmMKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RudmVuY19sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RudmVuY19sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJnc3RudmVuY19sYS1nc3RudmJhc2VlbmMubG8gYHRlc3QgLWYgJ2dzdG52YmFzZWVuYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RudmJhc2VlbmMuYwogCi1saWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NXBheS5sbzogZ3N0cnRwaDI2NXBheS5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0cnRwYmFkX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHJ0cGJhZF9sYV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1cGF5LlRwbyAtYyAtbyBsaWJnc3RydHBiYWRfbGEtZ3N0cnRwaDI2NXBheS5sbyBgdGVzdCAtZiAnZ3N0cnRwaDI2NXBheS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RydHBoMjY1cGF5LmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1cGF5LlRwbyAkKERFUERJUikvbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ3N0cnRwaDI2NXBheS5jJyBvYmplY3Q9J2xpYmdzdHJ0cGJhZF9sYS1nc3RydHBoMjY1cGF5LmxvJyBsaWJ0b29sPXllcyBAQU1ERVBCQUNLU0xBU0hACitsaWJnc3RudmVuY19sYS1nc3RudmgyNjRlbmMubG86IGdzdG52aDI2NGVuYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bnZlbmNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bnZlbmNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdG52ZW5jX2xhLWdzdG52aDI2NGVuYy5sbyAtTUQgLU1QIC1NRiAkKERFUERJUikvbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLlRwbyAtYyAtbyBsaWJnc3RudmVuY19sYS1nc3RudmgyNjRlbmMubG8gYHRlc3QgLWYgJ2dzdG52aDI2NGVuYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2Bnc3RudmgyNjRlbmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLlRwbyAkKERFUERJUikvbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLlBsbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2dzdG52aDI2NGVuYy5jJyBvYmplY3Q9J2xpYmdzdG52ZW5jX2xhLWdzdG52aDI2NGVuYy5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHJ0cGJhZF9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RydHBiYWRfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0cnRwYmFkX2xhLWdzdHJ0cGgyNjVwYXkubG8gYHRlc3QgLWYgJ2dzdHJ0cGgyNjVwYXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0cnRwaDI2NXBheS5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0bnZlbmNfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bnZlbmNfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0bnZlbmNfbGEtZ3N0bnZoMjY0ZW5jLmxvIGB0ZXN0IC1mICdnc3RudmgyNjRlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ3N0bnZoMjY0ZW5jLmMKIAogbW9zdGx5Y2xlYW4tbGlidG9vbDoKIAktcm0gLWYgKi5sbwpkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL1JFQURNRSBiL3N5cy9udmVuYy9SRUFETUUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjJhNTJkMQotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9udmVuYy9SRUFETUUKQEAgLTAsMCArMSwzMCBAQAorVGhpcyBwbHVnaW4gaXMgaW50ZW5kZWQgZm9yIHVzZSB3aXRoIE5WSURJQSBoYXJkd2FyZS4gIFNwZWNpZmljYWxseSwgdGhlIE5WRU5DCitibG9jayBhdmFpbGFibGUgaW4gcmVjZW50IE5WSURJQSBHUFUgaGFyZHdhcmUuICBUaGlzIGlzIHByb3ZpZGVkIGJ5IGEKK2xpYm52aWRpYS1lbmNvZGUgbGlicmFyeSBwcm92aWRlZCBieSBOVklESUEgZ3JhcGhpYyBkcml2ZXJzLgorCitSZXF1aXJlbWVudHMKKy0tLS0tLS0tLS0tLQorQ3VkYSA+IDYuNQorTlZFTkMgNS4wCisKK1NlZSBodHRwczovL2RldmVsb3Blci5udmlkaWEuY29tL252aWRpYS12aWRlby1jb2RlYy1zZGsgZm9yIGEgbGlzdCBvZgorc3VwcG9ydGVkIEdQVSdzLgorCitCdWlsZGluZworLS0tLS0tLS0KKzEuIFJldHJpZXZlIHRoZSBOVkVOQyBTREsKK2Zyb20gaHR0cHM6Ly9kZXZlbG9wZXIubnZpZGlhLmNvbS9udmlkaWEtdmlkZW8tY29kZWMtc2RrCistIGh0dHA6Ly9kZXZlbG9wZXIuZG93bmxvYWQubnZpZGlhLmNvbS9jb21wdXRlL252ZW5jL3Y1LjAvbnZlbmNfNS4wLjFfc2RrLnppcAorMi4gdW56aXAgdGhpcyBzb21ld2hlcmUgYW5kIHJldHJlaXZlIG9yIG5vdGUgdGhlIGxvY2F0aW9uIG9mIHRoZQorbnZFbmNvZGVBUEkuaCB1bmRlciBudmVuY19hcGktNS4wLjEvU2FtcGxlcy9jb21tb24vaW5jLworMy4gUmV0cmVpdmUgYSB2ZXJzaW9uIG9mIGN1ZGEgZnJvbQoraHR0cHM6Ly9kZXZlbG9wZXIubnZpZGlhLmNvbS9jdWRhLWRvd25sb2FkcyBhbmQgaW5zdGFsbCBzb21ld2hlcmUgbm90aW5nCit0aGUgaW5zdGFsbGF0aW9uIHByZWZpeCAodHlwaWNhbGx5IC9vcHQvY3VkYSBvciAvdXNyL2xvY2FsL2N1ZGEpCis0LiBOb3cgdGhhdCB0aGUgZGVwZW5kZW5jaWVzIGFyZSBzb3J0ZWQsIHRoZXJlIGFyZSBhIGNvdXBsZSBvZgorZW52aXJvbm1lbnQgdmFyaWFibGVzIGFuZC9vciBvciBjb25maWd1cmUgYXJndW1lbnRzIHRoYXQgYXJlIG5lZWRlZCB0bworZGV0ZWN0IHRoZSBuZWNlc3NhcnkgbGlicmFyaWVzL2hlYWRlcnMuCisKK01vcmUgaW5mb3JtYXRpb24gaXMgYXZhaWxhYmxlIGZyb20gdGhlIGZvbGxvd2luZyBsb2NhdGlvbnMKKworWzFdIC0gaHR0cHM6Ly9kZXZlbG9wZXIubnZpZGlhLmNvbS9jdWRhLWRvd25sb2FkcworWzJdIC0gaHR0cHM6Ly9kZXZlbG9wZXIubnZpZGlhLmNvbS9udmlkaWEtdmlkZW8tY29kZWMtc2RrIApkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL1RPRE8gYi9zeXMvbnZlbmMvVE9ETwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzQyMmNlCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL1RPRE8KQEAgLTAsMCArMSwxMSBAQAorLSBjaGVjayBzdXBwb3J0ZWQgZW5jb2RpbmcgZm9ybWF0cyAoSC4yNjQgZXRjLiksIGRvbid0IGFzc3VtZSBILjI2NAorCistIGNoZWNrIHBlcmZvcm1hbmNlICh0aW1lIHRha2VuKSBvZiBmaXJzdCBjdUluaXQoKQorCistIHByb3ZpZGUgYnVmZmVyIHBvb2wKKworLSBtb3JlIGZvcm1hdHMKKworLSByZW5lZ290aWF0aW9uCisKKy0gc3VwcG9ydCBvdXRwdXR0aW5nIG9mIEFWQyBhcyB3ZWxsIGFzIGJ5dGUtc3RyZWFtLCBuZWdvdGlhdGUgYXV0b21hdGljYWxseQpkaWZmIC0tZ2l0IGEvc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jIGIvc3lzL252ZW5jL2dzdG52YmFzZWVuYy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiYmRmZTMKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvbnZlbmMvZ3N0bnZiYXNlZW5jLmMKQEAgLTAsMCArMSwxNTk0IEBACisvKiBHU3RyZWFtZXIgTlZFTkMgcGx1Z2luCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2VudHJpY3VsYXIgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0bnZiYXNlZW5jLmgiCisKKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9jb2RlYy11dGlscy5oPgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorI2luY2x1ZGUgPGN1ZGEuaD4KKyNpbmNsdWRlIDxjdWRhX3J1bnRpbWVfYXBpLmg+CisjaW5jbHVkZSA8Y3VkYV9nbF9pbnRlcm9wLmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisjZW5kaWYKKworLyogVE9ETzoKKyAqICAtIHJlc2V0IGxhc3RfZmxvdyBvbiBGTFVTSF9TVE9QIChzZWVraW5nKQorICovCisKKyNkZWZpbmUgTl9CVUZGRVJTX1BFUl9GUkFNRSAxCisjZGVmaW5lIFNVUFBPUlRFRF9HTF9BUElTIEdTVF9HTF9BUElfT1BFTkdMMworCisvKiBtYWdpYyBwb2ludGVyIHZhbHVlIHdlIGNhbiBwdXQgaW4gdGhlIGFzeW5jIHF1ZXVlIHRvIHNpZ25hbCBzaHV0IGRvd24gKi8KKyNkZWZpbmUgU0hVVERPV05fQ09PS0lFICgoZ3BvaW50ZXIpR0lOVF9UT19QT0lOVEVSICgxKSkKKworI2RlZmluZSBwYXJlbnRfY2xhc3MgZ3N0X252X2Jhc2VfZW5jX3BhcmVudF9jbGFzcworR19ERUZJTkVfQUJTVFJBQ1RfVFlQRSAoR3N0TnZCYXNlRW5jLCBnc3RfbnZfYmFzZV9lbmMsIEdTVF9UWVBFX1ZJREVPX0VOQ09ERVIpOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc2lua19mYWN0b3J5ID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzaW5rIiwKKyAgICBHU1RfUEFEX1NJTkssCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1yYXcsICIgImZvcm1hdCA9IChzdHJpbmcpIE5WMTIsICIgLy8gVE9ETzogSTQyMCwgWVYxMiwgWTQ0NCBzdXBwb3J0CisgICAgICAgICJ3aWR0aCA9IChpbnQpIFsgMTYsIDQwOTYgXSwgaGVpZ2h0ID0gKGludCkgWyAxNiwgMjE2MCBdLCAiCisgICAgICAgICJmcmFtZXJhdGUgPSAoZnJhY3Rpb24pIFswLCBNQVhdLCIKKyAgICAgICAgImludGVybGFjZS1tb2RlID0geyBwcm9ncmVzc2l2ZSwgbWl4ZWQsIGludGVybGVhdmVkIH0gIgorI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisgICAgICAgICI7IgorICAgICAgICAidmlkZW8veC1yYXcobWVtb3J5OkdMTWVtb3J5KSwgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgeyBOVjEyLCBZNDQ0IH0sICIKKyAgICAgICAgIndpZHRoID0gKGludCkgWyAxNiwgNDA5NiBdLCBoZWlnaHQgPSAoaW50KSBbIDE2LCAyMTYwIF0sICIKKyAgICAgICAgImZyYW1lcmF0ZSA9IChmcmFjdGlvbikgWzAsIE1BWF0sIgorICAgICAgICAiaW50ZXJsYWNlLW1vZGUgPSB7IHByb2dyZXNzaXZlLCBtaXhlZCwgaW50ZXJsZWF2ZWQgfSAiCisjZW5kaWYKKyAgICApKTsKKworZW51bQoreworICBQUk9QXzAsCisgIFBST1BfREVWSUNFX0lELAorfTsKKworLyogVGhpcyBsb2NrIGlzIG5lZWRlZCB0byBwcmV2ZW50IHRoZSBzaXR1YXRpb24gd2hlcmUgbXVsdGlwbGUgZW5jb2RlcnMgYXJlCisgKiBpbml0aWFsaXNlZCBhdCB0aGUgc2FtZSB0aW1lIHdoaWNoIGFwcGVhcnMgdG8gY2F1c2UgZXhjZXNzaXZlIENQVSB1c2FnZSBvdmVyCisgKiBzb21lIHBlcmlvZCBvZiB0aW1lLiAqLworR19MT0NLX0RFRklORV9TVEFUSUMgKGluaXRpYWxpemF0aW9uX2xvY2spOworCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKK3N0cnVjdCBnbF9pbnB1dF9yZXNvdXJjZQoreworICBHc3RHTE1lbW9yeSAqZ2xfbWVtW0dTVF9WSURFT19NQVhfUExBTkVTXTsKKyAgc3RydWN0IGN1ZGFHcmFwaGljc1Jlc291cmNlICpjdWRhX3RleHR1cmU7CisgIGdwb2ludGVyIGN1ZGFfcGxhbmVfcG9pbnRlcnNbR1NUX1ZJREVPX01BWF9QTEFORVNdOworICBncG9pbnRlciBjdWRhX3BvaW50ZXI7CisgIGdzaXplIGN1ZGFfc3RyaWRlOworICBnc2l6ZSBjdWRhX251bV9ieXRlczsKKyAgTlZfRU5DX1JFR0lTVEVSX1JFU09VUkNFIG52X3Jlc291cmNlOworICBOVl9FTkNfTUFQX0lOUFVUX1JFU09VUkNFIG52X21hcHBlZF9yZXNvdXJjZTsKK307CisjZW5kaWYKKworc3RydWN0IGZyYW1lX3N0YXRlCit7CisgIGdpbnQgbl9idWZmZXJzOworICBncG9pbnRlciBpbl9idWZzW05fQlVGRkVSU19QRVJfRlJBTUVdOworICBncG9pbnRlciBvdXRfYnVmc1tOX0JVRkZFUlNfUEVSX0ZSQU1FXTsKK307CisKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfYmFzZV9lbmNfb3BlbiAoR3N0VmlkZW9FbmNvZGVyICogZW5jKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfYmFzZV9lbmNfY2xvc2UgKEdzdFZpZGVvRW5jb2RlciAqIGVuYyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X252X2Jhc2VfZW5jX3N0YXJ0IChHc3RWaWRlb0VuY29kZXIgKiBlbmMpOworc3RhdGljIGdib29sZWFuIGdzdF9udl9iYXNlX2VuY19zdG9wIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpOworc3RhdGljIHZvaWQgZ3N0X252X2Jhc2VfZW5jX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwKKyAgICBHc3RDb250ZXh0ICogY29udGV4dCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X252X2Jhc2VfZW5jX3NpbmtfcXVlcnkgKEdzdFZpZGVvRW5jb2RlciAqIGVuYywKKyAgICBHc3RRdWVyeSAqIHF1ZXJ5KTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfYmFzZV9lbmNfc2V0X2Zvcm1hdCAoR3N0VmlkZW9FbmNvZGVyICogZW5jLAorICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF9udl9iYXNlX2VuY19oYW5kbGVfZnJhbWUgKEdzdFZpZGVvRW5jb2RlciAqIGVuYywKKyAgICBHc3RWaWRlb0NvZGVjRnJhbWUgKiBmcmFtZSk7CitzdGF0aWMgdm9pZCBnc3RfbnZfYmFzZV9lbmNfZnJlZV9idWZmZXJzIChHc3ROdkJhc2VFbmMgKiBudmVuYyk7CitzdGF0aWMgR3N0Rmxvd1JldHVybiBnc3RfbnZfYmFzZV9lbmNfZmluaXNoIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpOworc3RhdGljIHZvaWQgZ3N0X252X2Jhc2VfZW5jX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKTsKK3N0YXRpYyB2b2lkIGdzdF9udl9iYXNlX2VuY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgdm9pZCBnc3RfbnZfYmFzZV9lbmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmopOworc3RhdGljIEdzdENhcHMgKmdzdF9udl9iYXNlX2VuY19nZXRjYXBzIChHc3RWaWRlb0VuY29kZXIgKiBlbmMsCisgICAgR3N0Q2FwcyAqIGZpbHRlcik7CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfYmFzZV9lbmNfY2xhc3NfaW5pdCAoR3N0TnZCYXNlRW5jQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0RWxlbWVudENsYXNzICplbGVtZW50X2NsYXNzID0gR1NUX0VMRU1FTlRfQ0xBU1MgKGtsYXNzKTsKKyAgR3N0VmlkZW9FbmNvZGVyQ2xhc3MgKnZpZGVvZW5jX2NsYXNzID0gR1NUX1ZJREVPX0VOQ09ERVJfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfbnZfYmFzZV9lbmNfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfbnZfYmFzZV9lbmNfZ2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9udl9iYXNlX2VuY19maW5hbGl6ZTsKKworICBlbGVtZW50X2NsYXNzLT5zZXRfY29udGV4dCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbnZfYmFzZV9lbmNfc2V0X2NvbnRleHQpOworCisgIHZpZGVvZW5jX2NsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19vcGVuKTsKKyAgdmlkZW9lbmNfY2xhc3MtPmNsb3NlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19jbG9zZSk7CisKKyAgdmlkZW9lbmNfY2xhc3MtPnN0YXJ0ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19zdGFydCk7CisgIHZpZGVvZW5jX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19zdG9wKTsKKworICB2aWRlb2VuY19jbGFzcy0+c2V0X2Zvcm1hdCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbnZfYmFzZV9lbmNfc2V0X2Zvcm1hdCk7CisgIHZpZGVvZW5jX2NsYXNzLT5nZXRjYXBzID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19nZXRjYXBzKTsKKyAgdmlkZW9lbmNfY2xhc3MtPmhhbmRsZV9mcmFtZSA9CisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX2hhbmRsZV9mcmFtZSk7CisgIHZpZGVvZW5jX2NsYXNzLT5maW5pc2ggPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X252X2Jhc2VfZW5jX2ZpbmlzaCk7CisgIHZpZGVvZW5jX2NsYXNzLT5zaW5rX3F1ZXJ5ID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9iYXNlX2VuY19zaW5rX3F1ZXJ5KTsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc2lua19mYWN0b3J5KSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9ERVZJQ0VfSUQsCisgICAgICBnX3BhcmFtX3NwZWNfdWludCAoImN1ZGEtZGV2aWNlLWlkIiwKKyAgICAgICAgICAiQ3VkYSBEZXZpY2UgSUQiLAorICAgICAgICAgICJTZXQgdGhlIEdQVSBkZXZpY2UgdG8gdXNlIGZvciBvcGVyYXRpb25zIiwKKyAgICAgICAgICAwLCBHX01BWFVJTlQsIDAsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19nZXRfc3VwcG9ydGVkX2lucHV0X2Zvcm1hdHMgKEdzdE52QmFzZUVuYyAqIG52ZW5jKQoreworICBHc3ROdkJhc2VFbmNDbGFzcyAqbnZlbmNfY2xhc3MgPSBHU1RfTlZfQkFTRV9FTkNfR0VUX0NMQVNTIChudmVuYyk7CisgIGd1aW50NjQgZm9ybWF0X21hc2sgPSAwOworICB1aW50MzJfdCBpLCBudW0gPSAwOworICBOVl9FTkNfQlVGRkVSX0ZPUk1BVCBmb3JtYXRzWzY0XTsKKyAgR1ZhbHVlIGxpc3QgPSBHX1ZBTFVFX0lOSVQ7CisgIEdWYWx1ZSB2YWwgPSBHX1ZBTFVFX0lOSVQ7CisKKyAgTnZFbmNHZXRJbnB1dEZvcm1hdHMgKG52ZW5jLT5lbmNvZGVyLCBudmVuY19jbGFzcy0+Y29kZWNfaWQsIGZvcm1hdHMsCisgICAgICBHX05fRUxFTUVOVFMgKGZvcm1hdHMpLCAmbnVtKTsKKworICBmb3IgKGkgPSAwOyBpIDwgbnVtOyArK2kpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAiaW5wdXQgZm9ybWF0OiAweCUwOHgiLCBmb3JtYXRzW2ldKTsKKyAgICAvKiBBcHBhcmVudGx5IHdlIGNhbiBqdXN0IGlnbm9yZSB0aGUgdGlsZWQgZm9ybWF0cyBhbmQgY2FuIGZlZWQKKyAgICAgKiBpdCB0aGUgcmVzcGVjdGl2ZSB1bnRpbGVkIHBsYW5hciBmb3JtYXQgaW5zdGVhZCA/ISAqLworICAgIHN3aXRjaCAoZm9ybWF0c1tpXSkgeworICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9OVjEyX1BMOgorICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9OVjEyX1RJTEVEMTZ4MTY6CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX05WMTJfVElMRUQ2NHgxNjoKKyAgICAgICAgZm9ybWF0X21hc2sgfD0gKDEgPDwgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyKTsKKyAgICAgICAgYnJlYWs7CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX1lWMTJfUEw6CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX1lWMTJfVElMRUQxNngxNjoKKyAgICAgIGNhc2UgTlZfRU5DX0JVRkZFUl9GT1JNQVRfWVYxMl9USUxFRDY0eDE2OgorICAgICAgICBmb3JtYXRfbWFzayB8PSAoMSA8PCBHU1RfVklERU9fRk9STUFUX1lWMTIpOworICAgICAgICBicmVhazsKKyAgICAgIGNhc2UgTlZfRU5DX0JVRkZFUl9GT1JNQVRfSVlVVl9QTDoKKyAgICAgIGNhc2UgTlZfRU5DX0JVRkZFUl9GT1JNQVRfSVlVVl9USUxFRDE2eDE2OgorICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9JWVVWX1RJTEVENjR4MTY6CisgICAgICAgIGZvcm1hdF9tYXNrIHw9ICgxIDw8IEdTVF9WSURFT19GT1JNQVRfSTQyMCk7CisgICAgICAgIGJyZWFrOworICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9ZVVY0NDRfUEw6CisgICAgICBjYXNlIE5WX0VOQ19CVUZGRVJfRk9STUFUX1lVVjQ0NF9USUxFRDE2eDE2OgorICAgICAgY2FzZSBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9ZVVY0NDRfVElMRUQ2NHgxNjp7CisgICAgICAgIE5WX0VOQ19DQVBTX1BBUkFNIGNhcHNfcGFyYW0gPSB7IDAsIH07CisgICAgICAgIGludCB5dXY0NDRfc3VwcG9ydGVkID0gMDsKKworICAgICAgICBjYXBzX3BhcmFtLnZlcnNpb24gPSBOVl9FTkNfQ0FQU19QQVJBTV9WRVI7CisgICAgICAgIGNhcHNfcGFyYW0uY2Fwc1RvUXVlcnkgPSBOVl9FTkNfQ0FQU19TVVBQT1JUX1lVVjQ0NF9FTkNPREU7CisKKyAgICAgICAgaWYgKE52RW5jR2V0RW5jb2RlQ2FwcyAobnZlbmMtPmVuY29kZXIsIG52ZW5jX2NsYXNzLT5jb2RlY19pZCwKKyAgICAgICAgICAgICAgICAmY2Fwc19wYXJhbSwgJnl1djQ0NF9zdXBwb3J0ZWQpICE9IE5WX0VOQ19TVUNDRVNTKQorICAgICAgICAgIHl1djQ0NF9zdXBwb3J0ZWQgPSAwOworCisgICAgICAgIGlmICh5dXY0NDRfc3VwcG9ydGVkKQorICAgICAgICAgIGZvcm1hdF9tYXNrIHw9ICgxIDw8IEdTVF9WSURFT19GT1JNQVRfWTQ0NCk7CisgICAgICAgIGJyZWFrOworICAgICAgfQorICAgICAgZGVmYXVsdDoKKyAgICAgICAgR1NUX0ZJWE1FICgidW5tYXBwZWQgaW5wdXQgZm9ybWF0OiAweCUwOHgiLCBmb3JtYXRzW2ldKTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorICB9CisKKyAgaWYgKGZvcm1hdF9tYXNrID09IDApCisgICAgcmV0dXJuIEZBTFNFOworCisgIC8qIHByb2Nlc3MgYSBzZWNvbmQgdGltZSBzbyB3ZSBjYW4gYWRkIGZvcm1hdHMgaW4gdGhlIG9yZGVyIHdlIHdhbnQgKi8KKyAgZ192YWx1ZV9pbml0ICgmbGlzdCwgR1NUX1RZUEVfTElTVCk7CisgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX1NUUklORyk7CisgIGlmICgoZm9ybWF0X21hc2sgJiAoMSA8PCBHU1RfVklERU9fRk9STUFUX05WMTIpKSkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJOVjEyIik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7CisgIH0KKyAgaWYgKChmb3JtYXRfbWFzayAmICgxIDw8IEdTVF9WSURFT19GT1JNQVRfWVYxMikpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgIllWMTIiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKKyAgfQorICBpZiAoKGZvcm1hdF9tYXNrICYgKDEgPDwgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwKSkpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAiSTQyMCIpOworICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZ2YWwpOworICB9CisgIGlmICgoZm9ybWF0X21hc2sgJiAoMSA8PCBHU1RfVklERU9fRk9STUFUX1k0NDQpKSkgeworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJZNDQ0Iik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7CisgIH0KKyAgZ192YWx1ZV91bnNldCAoJnZhbCk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChudmVuYyk7CisgIGdfZnJlZSAobnZlbmMtPmlucHV0X2Zvcm1hdHMpOworICBudmVuYy0+aW5wdXRfZm9ybWF0cyA9IGdfbWVtZHVwICgmbGlzdCwgc2l6ZW9mIChHVmFsdWUpKTsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG52ZW5jKTsKKworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfb3BlbiAoR3N0VmlkZW9FbmNvZGVyICogZW5jKQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChlbmMpOworCisgIG52ZW5jLT5jdWRhX2N0eCA9IGdzdF9udmVuY19jcmVhdGVfY3VkYV9jb250ZXh0IChudmVuYy0+Y3VkYV9kZXZpY2VfaWQpOworICBpZiAobnZlbmMtPmN1ZGFfY3R4ID09IE5VTEwpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoZW5jLCBMSUJSQVJZLCBJTklULCAoTlVMTCksCisgICAgICAgICgiRmFpbGVkIHRvIGNyZWF0ZSBDVURBIGNvbnRleHQsIHBlcmhhcHMgQ1VEQSBpcyBub3Qgc3VwcG9ydGVkLiIpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICB7CisgICAgTlZfRU5DX09QRU5fRU5DT0RFX1NFU1NJT05fRVhfUEFSQU1TIHBhcmFtcyA9IHsgMCwgfTsKKyAgICBOVkVOQ1NUQVRVUyBudl9yZXQ7CisKKyAgICBwYXJhbXMudmVyc2lvbiA9IE5WX0VOQ19PUEVOX0VOQ09ERV9TRVNTSU9OX0VYX1BBUkFNU19WRVI7CisgICAgcGFyYW1zLmFwaVZlcnNpb24gPSBOVkVOQ0FQSV9WRVJTSU9OOworICAgIHBhcmFtcy5kZXZpY2UgPSBudmVuYy0+Y3VkYV9jdHg7CisgICAgcGFyYW1zLmRldmljZVR5cGUgPSBOVl9FTkNfREVWSUNFX1RZUEVfQ1VEQTsKKyAgICBudl9yZXQgPSBOdkVuY09wZW5FbmNvZGVTZXNzaW9uRXggKCZwYXJhbXMsICZudmVuYy0+ZW5jb2Rlcik7CisgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgICAgR1NUX0VSUk9SICgiRmFpbGVkIHRvIGNyZWF0ZSBOVkVOQyBlbmNvZGVyIHNlc3Npb24sIHJldD0lZCIsIG52X3JldCk7CisgICAgICBpZiAoZ3N0X252ZW5jX2Rlc3Ryb3lfY3VkYV9jb250ZXh0IChudmVuYy0+Y3VkYV9jdHgpKQorICAgICAgICBudmVuYy0+Y3VkYV9jdHggPSBOVUxMOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgICBHU1RfSU5GTyAoImNyZWF0ZWQgTlZFTkMgZW5jb2RlciAlcCIsIG52ZW5jLT5lbmNvZGVyKTsKKyAgfQorCisgIC8qIHF1ZXJ5IHN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzICovCisgIGlmICghX2dldF9zdXBwb3J0ZWRfaW5wdXRfZm9ybWF0cyAobnZlbmMpKSB7CisgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChudmVuYywgIk5vIHN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzIik7CisgICAgZ3N0X252X2Jhc2VfZW5jX2Nsb3NlIChlbmMpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X252X2Jhc2VfZW5jX3NldF9jb250ZXh0IChHc3RFbGVtZW50ICogZWxlbWVudCwgR3N0Q29udGV4dCAqIGNvbnRleHQpCit7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKGVsZW1lbnQpOworCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgZ3N0X2dsX2hhbmRsZV9zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCwKKyAgICAgIChHc3RHTERpc3BsYXkgKiopICYgbnZlbmMtPmRpc3BsYXksCisgICAgICAoR3N0R0xDb250ZXh0ICoqKSAmIG52ZW5jLT5vdGhlcl9jb250ZXh0KTsKKyAgaWYgKG52ZW5jLT5kaXNwbGF5KQorICAgIGdzdF9nbF9kaXNwbGF5X2ZpbHRlcl9nbF9hcGkgKEdTVF9HTF9ESVNQTEFZIChudmVuYy0+ZGlzcGxheSksCisgICAgICAgIFNVUFBPUlRFRF9HTF9BUElTKTsKKyNlbmRpZgorCisgIEdTVF9FTEVNRU5UX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zZXRfY29udGV4dCAoZWxlbWVudCwgY29udGV4dCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2Jhc2VfZW5jX3NpbmtfcXVlcnkgKEdzdFZpZGVvRW5jb2RlciAqIGVuYywgR3N0UXVlcnkgKiBxdWVyeSkKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKTsKKworICBzd2l0Y2ggKEdTVF9RVUVSWV9UWVBFIChxdWVyeSkpIHsKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorICAgIGNhc2UgR1NUX1FVRVJZX0NPTlRFWFQ6eworICAgICAgZ2Jvb2xlYW4gcmV0OworCisgICAgICByZXQgPSBnc3RfZ2xfaGFuZGxlX2NvbnRleHRfcXVlcnkgKChHc3RFbGVtZW50ICopIG52ZW5jLCBxdWVyeSwKKyAgICAgICAgICAoR3N0R0xEaXNwbGF5ICoqKSAmIG52ZW5jLT5kaXNwbGF5LAorICAgICAgICAgIChHc3RHTENvbnRleHQgKiopICYgbnZlbmMtPm90aGVyX2NvbnRleHQpOworICAgICAgaWYgKG52ZW5jLT5kaXNwbGF5KQorICAgICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpIChHU1RfR0xfRElTUExBWSAobnZlbmMtPmRpc3BsYXkpLAorICAgICAgICAgICAgU1VQUE9SVEVEX0dMX0FQSVMpOworCisgICAgICBpZiAocmV0KQorICAgICAgICByZXR1cm4gcmV0OworICAgICAgYnJlYWs7CisgICAgfQorI2VuZGlmCisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIEdTVF9WSURFT19FTkNPREVSX0NMQVNTIChwYXJlbnRfY2xhc3MpLT5zaW5rX3F1ZXJ5IChlbmMsIHF1ZXJ5KTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfc3RhcnQgKEdzdFZpZGVvRW5jb2RlciAqIGVuYykKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKTsKKworICBudmVuYy0+Yml0c3RyZWFtX3Bvb2wgPSBnX2FzeW5jX3F1ZXVlX25ldyAoKTsKKyAgbnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSA9IGdfYXN5bmNfcXVldWVfbmV3ICgpOworICBudmVuYy0+aW5fYnVmc19wb29sID0gZ19hc3luY19xdWV1ZV9uZXcgKCk7CisKKyAgbnZlbmMtPmxhc3RfZmxvdyA9IEdTVF9GTE9XX09LOworCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgeworICAgIGdzdF9nbF9lbnN1cmVfZWxlbWVudF9kYXRhIChHU1RfRUxFTUVOVCAobnZlbmMpLAorICAgICAgICAoR3N0R0xEaXNwbGF5ICoqKSAmIG52ZW5jLT5kaXNwbGF5LAorICAgICAgICAoR3N0R0xDb250ZXh0ICoqKSAmIG52ZW5jLT5vdGhlcl9jb250ZXh0KTsKKyAgICBpZiAobnZlbmMtPmRpc3BsYXkpCisgICAgICBnc3RfZ2xfZGlzcGxheV9maWx0ZXJfZ2xfYXBpIChHU1RfR0xfRElTUExBWSAobnZlbmMtPmRpc3BsYXkpLAorICAgICAgICAgIFNVUFBPUlRFRF9HTF9BUElTKTsKKyAgfQorI2VuZGlmCisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2Jhc2VfZW5jX3N0b3AgKEdzdFZpZGVvRW5jb2RlciAqIGVuYykKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKTsKKworICBnc3RfbnZfYmFzZV9lbmNfZnJlZV9idWZmZXJzIChudmVuYyk7CisKKyAgaWYgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCkgeworICAgIGdfYXN5bmNfcXVldWVfdW5yZWYgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCk7CisgICAgbnZlbmMtPmJpdHN0cmVhbV9wb29sID0gTlVMTDsKKyAgfQorICBpZiAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSkgeworICAgIGdfYXN5bmNfcXVldWVfdW5yZWYgKG52ZW5jLT5iaXRzdHJlYW1fcXVldWUpOworICAgIG52ZW5jLT5iaXRzdHJlYW1fcXVldWUgPSBOVUxMOworICB9CisgIGlmIChudmVuYy0+aW5fYnVmc19wb29sKSB7CisgICAgZ19hc3luY19xdWV1ZV91bnJlZiAobnZlbmMtPmluX2J1ZnNfcG9vbCk7CisgICAgbnZlbmMtPmluX2J1ZnNfcG9vbCA9IE5VTEw7CisgIH0KKyAgaWYgKG52ZW5jLT5kaXNwbGF5KSB7CisgICAgZ3N0X29iamVjdF91bnJlZiAobnZlbmMtPmRpc3BsYXkpOworICAgIG52ZW5jLT5kaXNwbGF5ID0gTlVMTDsKKyAgfQorICBpZiAobnZlbmMtPm90aGVyX2NvbnRleHQpIHsKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChudmVuYy0+b3RoZXJfY29udGV4dCk7CisgICAgbnZlbmMtPm90aGVyX2NvbnRleHQgPSBOVUxMOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHVmFsdWUgKgorX2dldF9pbnRlcmxhY2VfbW9kZXMgKEdzdE52QmFzZUVuYyAqIG52ZW5jKQoreworICBHc3ROdkJhc2VFbmNDbGFzcyAqbnZlbmNfY2xhc3MgPSBHU1RfTlZfQkFTRV9FTkNfR0VUX0NMQVNTIChudmVuYyk7CisgIE5WX0VOQ19DQVBTX1BBUkFNIGNhcHNfcGFyYW0gPSB7IDAsIH07CisgIEdWYWx1ZSAqbGlzdCA9IGdfbmV3MCAoR1ZhbHVlLCAxKTsKKyAgR1ZhbHVlIHZhbCA9IEdfVkFMVUVfSU5JVDsKKworICBnX3ZhbHVlX2luaXQgKGxpc3QsIEdTVF9UWVBFX0xJU1QpOworICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdfVFlQRV9TVFJJTkcpOworCisgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJwcm9ncmVzc2l2ZSIpOworICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKGxpc3QsICZ2YWwpOworCisgIGNhcHNfcGFyYW0udmVyc2lvbiA9IE5WX0VOQ19DQVBTX1BBUkFNX1ZFUjsKKyAgY2Fwc19wYXJhbS5jYXBzVG9RdWVyeSA9IE5WX0VOQ19DQVBTX1NVUFBPUlRfRklFTERfRU5DT0RJTkc7CisKKyAgaWYgKE52RW5jR2V0RW5jb2RlQ2FwcyAobnZlbmMtPmVuY29kZXIsIG52ZW5jX2NsYXNzLT5jb2RlY19pZCwKKyAgICAgICAgICAmY2Fwc19wYXJhbSwgJm52ZW5jLT5pbnRlcmxhY2VfbW9kZXMpICE9IE5WX0VOQ19TVUNDRVNTKQorICAgIG52ZW5jLT5pbnRlcmxhY2VfbW9kZXMgPSAwOworCisgIGlmIChudmVuYy0+aW50ZXJsYWNlX21vZGVzID49IDEpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAiaW50ZXJsZWF2ZWQiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKGxpc3QsICZ2YWwpOworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJtaXhlZCIpOworICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAobGlzdCwgJnZhbCk7CisgIH0KKyAgLyogVE9ETzogZmlndXJlIG91dCB3aGF0IG52ZW5jIGZyYW1lIGJhc2VkIGludGVybGFjaW5nIG1lYW5zIGluIGdzdCB0ZXJtcyAqLworCisgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitnc3RfbnZfYmFzZV9lbmNfZ2V0Y2FwcyAoR3N0VmlkZW9FbmNvZGVyICogZW5jLCBHc3RDYXBzICogZmlsdGVyKQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChlbmMpOworICBHc3RDYXBzICpzdXBwb3J0ZWRfaW5jYXBzID0gTlVMTDsKKyAgR3N0Q2FwcyAqdGVtcGxhdGVfY2FwcywgKmNhcHM7CisKKyAgR1NUX09CSkVDVF9MT0NLIChudmVuYyk7CisKKyAgaWYgKG52ZW5jLT5pbnB1dF9mb3JtYXRzICE9IE5VTEwpIHsKKyAgICBHVmFsdWUgKnZhbDsKKworICAgIHRlbXBsYXRlX2NhcHMgPSBnc3RfcGFkX2dldF9wYWRfdGVtcGxhdGVfY2FwcyAoZW5jLT5zaW5rcGFkKTsKKyAgICBzdXBwb3J0ZWRfaW5jYXBzID0gZ3N0X2NhcHNfY29weSAodGVtcGxhdGVfY2Fwcyk7CisgICAgZ3N0X2NhcHNfc2V0X3ZhbHVlIChzdXBwb3J0ZWRfaW5jYXBzLCAiZm9ybWF0IiwgbnZlbmMtPmlucHV0X2Zvcm1hdHMpOworCisgICAgdmFsID0gX2dldF9pbnRlcmxhY2VfbW9kZXMgKG52ZW5jKTsKKyAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKHN1cHBvcnRlZF9pbmNhcHMsICJpbnRlcmxhY2UtbW9kZSIsIHZhbCk7CisgICAgZ19mcmVlICh2YWwpOworCisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgImNvZGVjIGlucHV0IGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHN1cHBvcnRlZF9pbmNhcHMpOworICAgIEdTVF9MT0dfT0JKRUNUIChlbmMsICIgICB0ZW1wbGF0ZSBjYXBzICUiIEdTVF9QVFJfRk9STUFULCB0ZW1wbGF0ZV9jYXBzKTsKKyAgICBjYXBzID0gZ3N0X2NhcHNfaW50ZXJzZWN0ICh0ZW1wbGF0ZV9jYXBzLCBzdXBwb3J0ZWRfaW5jYXBzKTsKKyAgICBnc3RfY2Fwc191bnJlZiAodGVtcGxhdGVfY2Fwcyk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHN1cHBvcnRlZF9pbmNhcHMpOworICAgIHN1cHBvcnRlZF9pbmNhcHMgPSBjYXBzOworICAgIEdTVF9MT0dfT0JKRUNUIChlbmMsICIgIHN1cHBvcnRlZCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBzdXBwb3J0ZWRfaW5jYXBzKTsKKyAgfQorCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChudmVuYyk7CisKKyAgY2FwcyA9IGdzdF92aWRlb19lbmNvZGVyX3Byb3h5X2dldGNhcHMgKGVuYywgc3VwcG9ydGVkX2luY2FwcywgZmlsdGVyKTsKKworICBpZiAoc3VwcG9ydGVkX2luY2FwcykKKyAgICBnc3RfY2Fwc191bnJlZiAoc3VwcG9ydGVkX2luY2Fwcyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICIgIHJldHVybmluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKworICByZXR1cm4gY2FwczsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfY2xvc2UgKEdzdFZpZGVvRW5jb2RlciAqIGVuYykKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKTsKKworICBpZiAobnZlbmMtPmVuY29kZXIpIHsKKyAgICBpZiAoTnZFbmNEZXN0cm95RW5jb2RlciAobnZlbmMtPmVuY29kZXIpICE9IE5WX0VOQ19TVUNDRVNTKQorICAgICAgcmV0dXJuIEZBTFNFOworICAgIG52ZW5jLT5lbmNvZGVyID0gTlVMTDsKKyAgfQorCisgIGlmIChudmVuYy0+Y3VkYV9jdHgpIHsKKyAgICBpZiAoIWdzdF9udmVuY19kZXN0cm95X2N1ZGFfY29udGV4dCAobnZlbmMtPmN1ZGFfY3R4KSkKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICBudmVuYy0+Y3VkYV9jdHggPSBOVUxMOworICB9CisKKyAgR1NUX09CSkVDVF9MT0NLIChudmVuYyk7CisgIGdfZnJlZSAobnZlbmMtPmlucHV0X2Zvcm1hdHMpOworICBudmVuYy0+aW5wdXRfZm9ybWF0cyA9IE5VTEw7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChudmVuYyk7CisKKyAgaWYgKG52ZW5jLT5pbnB1dF9zdGF0ZSkgeworICAgIGdzdF92aWRlb19jb2RlY19zdGF0ZV91bnJlZiAobnZlbmMtPmlucHV0X3N0YXRlKTsKKyAgICBudmVuYy0+aW5wdXRfc3RhdGUgPSBOVUxMOworICB9CisKKyAgaWYgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCAhPSBOVUxMKSB7CisgICAgZ19hc3NlcnQgKGdfYXN5bmNfcXVldWVfbGVuZ3RoIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wpID09IDApOworICAgIGdfYXN5bmNfcXVldWVfdW5yZWYgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCk7CisgICAgbnZlbmMtPmJpdHN0cmVhbV9wb29sID0gTlVMTDsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X252X2Jhc2VfZW5jX2luaXQgKEdzdE52QmFzZUVuYyAqIG52ZW5jKQoreworICBHc3RWaWRlb0VuY29kZXIgKmVuY29kZXIgPSBHU1RfVklERU9fRU5DT0RFUiAobnZlbmMpOworCisgIEdTVF9WSURFT19FTkNPREVSX1NUUkVBTV9MT0NLIChlbmNvZGVyKTsKKyAgR1NUX1ZJREVPX0VOQ09ERVJfU1RSRUFNX1VOTE9DSyAoZW5jb2Rlcik7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfYmFzZV9lbmNfZmluYWxpemUgKEdPYmplY3QgKiBvYmopCit7CisgIEdfT0JKRUNUX0NMQVNTIChnc3RfbnZfYmFzZV9lbmNfcGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iaik7Cit9CisKK3N0YXRpYyBHc3RWaWRlb0NvZGVjRnJhbWUgKgorX2ZpbmRfZnJhbWVfd2l0aF9vdXRwdXRfYnVmZmVyIChHc3ROdkJhc2VFbmMgKiBudmVuYywgTlZfRU5DX09VVFBVVF9QVFIgb3V0X2J1ZikKK3sKKyAgR0xpc3QgKmwsICp3YWxrID0gZ3N0X3ZpZGVvX2VuY29kZXJfZ2V0X2ZyYW1lcyAoR1NUX1ZJREVPX0VOQ09ERVIgKG52ZW5jKSk7CisgIEdzdFZpZGVvQ29kZWNGcmFtZSAqcmV0ID0gTlVMTDsKKyAgZ2ludCBpOworCisgIGZvciAobCA9IHdhbGs7IGw7IGwgPSBsLT5uZXh0KSB7CisgICAgR3N0VmlkZW9Db2RlY0ZyYW1lICpmcmFtZSA9IChHc3RWaWRlb0NvZGVjRnJhbWUgKikgbC0+ZGF0YTsKKyAgICBzdHJ1Y3QgZnJhbWVfc3RhdGUgKnN0YXRlID0gZnJhbWUtPnVzZXJfZGF0YTsKKworICAgIGlmICghc3RhdGUpCisgICAgICBjb250aW51ZTsKKworICAgIGZvciAoaSA9IDA7IGkgPCBOX0JVRkZFUlNfUEVSX0ZSQU1FOyBpKyspIHsKKworICAgICAgaWYgKCFzdGF0ZS0+b3V0X2J1ZnNbaV0pCisgICAgICAgIGJyZWFrOworCisgICAgICBpZiAoc3RhdGUtPm91dF9idWZzW2ldID09IG91dF9idWYpCisgICAgICAgIHJldCA9IGZyYW1lOworICAgIH0KKyAgfQorCisgIGlmIChyZXQpCisgICAgZ3N0X3ZpZGVvX2NvZGVjX2ZyYW1lX3JlZiAocmV0KTsKKworICBnX2xpc3RfZnJlZV9mdWxsICh3YWxrLCAoR0Rlc3Ryb3lOb3RpZnkpIGdzdF92aWRlb19jb2RlY19mcmFtZV91bnJlZik7CisKKyAgcmV0dXJuIHJldDsKK30KKworc3RhdGljIGdwb2ludGVyCitnc3RfbnZfYmFzZV9lbmNfYml0c3RyZWFtX3RocmVhZCAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RWaWRlb0VuY29kZXIgKmVuYyA9IHVzZXJfZGF0YTsKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IHVzZXJfZGF0YTsKKworICAvKiBvdmVydmlldyBvZiBvcGVyYXRpb246CisgICAqIDEuIHJldHJlaXZlIHRoZSBuZXh0IGJ1ZmZlciBzdWJtaXR0ZWQgdG8gdGhlIGJpdHN0cmVhbSBwb29sCisgICAqIDIuIHdhaXQgZm9yIHRoYXQgYnVmZmVyIHRvIGJlIHJlYWR5IGZyb20gbnZlbmMgKExvY2tCaXRzcmVhbSkKKyAgICogMy4gcmV0cmVpdmUgdGhlIEdzdFZpZGVvQ29kZWNGcmFtZSBhc3NvY2lhdGVkIHdpdGggdGhhdCBidWZmZXIKKyAgICogNC4gZm9yIGVhY2ggYnVmZmVyIGluIHRoZSBmcmFtZQorICAgKiA0LjEgKHN0ZXAgMik6IHdhaXQgZm9yIHRoYXQgYnVmZmVyIHRvIGJlIHJlYWR5IGZyb20gbnZlbmMgKExvY2tCaXRzcmVhbSkKKyAgICogNC4yIGNyZWF0ZSBhbiBvdXRwdXQgR3N0QnVmZmVyIGZyb20gdGhlIG52ZW5jIGJ1ZmZlcnMKKyAgICogNC4zIHVubG9jayB0aGUgbnZlbmMgYml0c3RyZWFtIGJ1ZmZlcnMgVW5sb2NrQml0c3JlYW0KKyAgICogNS4gZmluaXNoX2ZyYW1lKCkKKyAgICogNi4gY2xlYW51cAorICAgKi8KKyAgZG8geworICAgIEdzdEJ1ZmZlciAqYnVmZmVyc1tOX0JVRkZFUlNfUEVSX0ZSQU1FXTsKKyAgICBzdHJ1Y3QgZnJhbWVfc3RhdGUgKnN0YXRlID0gTlVMTDsKKyAgICBHc3RWaWRlb0NvZGVjRnJhbWUgKmZyYW1lID0gTlVMTDsKKyAgICBOVkVOQ1NUQVRVUyBudl9yZXQ7CisgICAgR3N0Rmxvd1JldHVybiBmbG93ID0gR1NUX0ZMT1dfT0s7CisgICAgZ2ludCBpOworCisgICAgeworICAgICAgTlZfRU5DX0xPQ0tfQklUU1RSRUFNIGxvY2tfYnMgPSB7IDAsIH07CisgICAgICBOVl9FTkNfT1VUUFVUX1BUUiBvdXRfYnVmOworCisgICAgICBmb3IgKGkgPSAwOyBpIDwgTl9CVUZGRVJTX1BFUl9GUkFNRTsgaSsrKSB7CisgICAgICAgIC8qIGdldCBhbmQgbG9jayBiaXRzdHJlYW0gYnVmZmVycyAqLworICAgICAgICBHc3RWaWRlb0NvZGVjRnJhbWUgKnRtcF9mcmFtZTsKKworICAgICAgICBpZiAoc3RhdGUgJiYgaSA+PSBzdGF0ZS0+bl9idWZmZXJzKQorICAgICAgICAgIGJyZWFrOworCisgICAgICAgIEdTVF9MT0dfT0JKRUNUIChlbmMsICJ3YWl0IGZvciBiaXRzdHJlYW0gYnVmZmVyLi4iKTsKKworICAgICAgICAvKiBhc3N1bWVzIGJ1ZmZlcnMgYXJlIHN1Ym1pdHRlZCBpbiBvcmRlciAqLworICAgICAgICBvdXRfYnVmID0gZ19hc3luY19xdWV1ZV9wb3AgKG52ZW5jLT5iaXRzdHJlYW1fcXVldWUpOworICAgICAgICBpZiAoKGdwb2ludGVyKSBvdXRfYnVmID09IFNIVVRET1dOX0NPT0tJRSkKKyAgICAgICAgICBicmVhazsKKworICAgICAgICBHU1RfTE9HX09CSkVDVCAobnZlbmMsICJ3YWl0aW5nIGZvciBvdXRwdXQgYnVmZmVyICVwIHRvIGJlIHJlYWR5IiwKKyAgICAgICAgICAgIG91dF9idWYpOworCisgICAgICAgIGxvY2tfYnMudmVyc2lvbiA9IE5WX0VOQ19MT0NLX0JJVFNUUkVBTV9WRVI7CisgICAgICAgIGxvY2tfYnMub3V0cHV0Qml0c3RyZWFtID0gb3V0X2J1ZjsKKyAgICAgICAgbG9ja19icy5kb05vdFdhaXQgPSAwOworCisgICAgICAgIC8qIEZJWE1FOiB0aGlzIHdvdWxkIG5lZWQgdG8gYmUgdXBkYXRlZCBmb3Igb3RoZXIgc2xpY2UgbW9kZXMgKi8KKyAgICAgICAgbG9ja19icy5zbGljZU9mZnNldHMgPSBOVUxMOworCisgICAgICAgIG52X3JldCA9IE52RW5jTG9ja0JpdHN0cmVhbSAobnZlbmMtPmVuY29kZXIsICZsb2NrX2JzKTsKKyAgICAgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgICAgICAgIC8qIEZJWE1FOiB3aGF0IHRvIGRvIGhlcmU/ICovCisgICAgICAgICAgR1NUX0VMRU1FTlRfRVJST1IgKG52ZW5jLCBTVFJFQU0sIEVOQ09ERSwgKE5VTEwpLAorICAgICAgICAgICAgICAoIkZhaWxlZCB0byBsb2NrIGJpdHN0cmVhbSBidWZmZXIgJXAsIHJldCAlZCIsCisgICAgICAgICAgICAgICAgICBsb2NrX2JzLm91dHB1dEJpdHN0cmVhbSwgbnZfcmV0KSk7CisgICAgICAgICAgb3V0X2J1ZiA9IFNIVVRET1dOX0NPT0tJRTsKKyAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorCisgICAgICAgIEdTVF9MT0dfT0JKRUNUIChudmVuYywgInBpY3R1cmUgdHlwZSAlZCIsIGxvY2tfYnMucGljdHVyZVR5cGUpOworCisgICAgICAgIHRtcF9mcmFtZSA9IF9maW5kX2ZyYW1lX3dpdGhfb3V0cHV0X2J1ZmZlciAobnZlbmMsIG91dF9idWYpOworICAgICAgICBnX2Fzc2VydCAodG1wX2ZyYW1lICE9IE5VTEwpOworICAgICAgICBpZiAoZnJhbWUpCisgICAgICAgICAgZ19hc3NlcnQgKGZyYW1lID09IHRtcF9mcmFtZSk7CisgICAgICAgIGZyYW1lID0gdG1wX2ZyYW1lOworCisgICAgICAgIHN0YXRlID0gZnJhbWUtPnVzZXJfZGF0YTsKKyAgICAgICAgZ19hc3NlcnQgKHN0YXRlLT5vdXRfYnVmc1tpXSA9PSBvdXRfYnVmKTsKKworICAgICAgICAvKiBjb3B5IGludG8gb3V0cHV0IGJ1ZmZlciAqLworICAgICAgICBidWZmZXJzW2ldID0KKyAgICAgICAgICAgIGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlIChOVUxMLCBsb2NrX2JzLmJpdHN0cmVhbVNpemVJbkJ5dGVzLCBOVUxMKTsKKyAgICAgICAgZ3N0X2J1ZmZlcl9maWxsIChidWZmZXJzW2ldLCAwLCBsb2NrX2JzLmJpdHN0cmVhbUJ1ZmZlclB0ciwKKyAgICAgICAgICAgIGxvY2tfYnMuYml0c3RyZWFtU2l6ZUluQnl0ZXMpOworCisgICAgICAgIGlmIChsb2NrX2JzLnBpY3R1cmVUeXBlID09IE5WX0VOQ19QSUNfVFlQRV9JRFIpIHsKKyAgICAgICAgICBHU1RfREVCVUdfT0JKRUNUIChudmVuYywgIlRoaXMgaXMgYSBrZXlmcmFtZSIpOworICAgICAgICAgIEdTVF9WSURFT19DT0RFQ19GUkFNRV9TRVRfU1lOQ19QT0lOVCAoZnJhbWUpOworICAgICAgICB9CisKKyAgICAgICAgLyogVE9ETzogdXNlIGxvY2tfYnMub3V0cHV0VGltZVN0YW1wIGFuZCBsb2NrX2JzLm91dHB1dER1cmF0aW9uICovCisgICAgICAgIC8qIFRPRE86IGNoZWNrIHB0cy9kdHMgaXMgaGFuZGxlZCBwcm9wZXJseSBpZiB0aGVyZSBhcmUgQi1mcmFtZXMgKi8KKworICAgICAgICBudl9yZXQgPSBOdkVuY1VubG9ja0JpdHN0cmVhbSAobnZlbmMtPmVuY29kZXIsIHN0YXRlLT5vdXRfYnVmc1tpXSk7CisgICAgICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICAgICAgICAvKiBGSVhNRTogd2hhdCB0byBkbyBoZXJlPyAqLworICAgICAgICAgIEdTVF9FTEVNRU5UX0VSUk9SIChudmVuYywgU1RSRUFNLCBFTkNPREUsIChOVUxMKSwKKyAgICAgICAgICAgICAgKCJGYWlsZWQgdG8gdW5sb2NrIGJpdHN0cmVhbSBidWZmZXIgJXAsIHJldCAlZCIsCisgICAgICAgICAgICAgICAgICBsb2NrX2JzLm91dHB1dEJpdHN0cmVhbSwgbnZfcmV0KSk7CisgICAgICAgICAgc3RhdGUtPm91dF9idWZzW2ldID0gU0hVVERPV05fQ09PS0lFOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgR1NUX0xPR19PQkpFQ1QgKG52ZW5jLCAicmV0dXJuaW5nIGJpdHN0cmVhbSBidWZmZXIgJXAgdG8gcG9vbCIsCisgICAgICAgICAgICBzdGF0ZS0+b3V0X2J1ZnNbaV0pOworICAgICAgICBnX2FzeW5jX3F1ZXVlX3B1c2ggKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCwgc3RhdGUtPm91dF9idWZzW2ldKTsKKyAgICAgIH0KKworICAgICAgaWYgKG91dF9idWYgPT0gU0hVVERPV05fQ09PS0lFKQorICAgICAgICBicmVhazsKKyAgICB9CisKKyAgICB7CisgICAgICBHc3RCdWZmZXIgKm91dHB1dF9idWZmZXIgPSBnc3RfYnVmZmVyX25ldyAoKTsKKworICAgICAgZm9yIChpID0gMDsgaSA8IHN0YXRlLT5uX2J1ZmZlcnM7IGkrKykKKyAgICAgICAgb3V0cHV0X2J1ZmZlciA9IGdzdF9idWZmZXJfYXBwZW5kIChvdXRwdXRfYnVmZmVyLCBidWZmZXJzW2ldKTsKKworICAgICAgZnJhbWUtPm91dHB1dF9idWZmZXIgPSBvdXRwdXRfYnVmZmVyOworICAgIH0KKworICAgIGZvciAoaSA9IDA7IGkgPCBzdGF0ZS0+bl9idWZmZXJzOyBpKyspIHsKKyAgICAgIHZvaWQgKmluX2J1ZiA9IHN0YXRlLT5pbl9idWZzW2ldOworICAgICAgZ19hc3NlcnQgKGluX2J1ZiAhPSBOVUxMKTsKKworI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisgICAgICBpZiAobnZlbmMtPmdsX2lucHV0KSB7CisgICAgICAgIHN0cnVjdCBnbF9pbnB1dF9yZXNvdXJjZSAqaW5fZ2xfcmVzb3VyY2UgPSBpbl9idWY7CisKKyAgICAgICAgbnZfcmV0ID0KKyAgICAgICAgICAgIE52RW5jVW5tYXBJbnB1dFJlc291cmNlIChudmVuYy0+ZW5jb2RlciwKKyAgICAgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9tYXBwZWRfcmVzb3VyY2UubWFwcGVkUmVzb3VyY2UpOworICAgICAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAobnZlbmMsICJGYWlsZWQgdG8gdW5tYXAgaW5wdXQgcmVzb3VyY2UgJXAsIHJldCAlZCIsCisgICAgICAgICAgICAgIGluX2dsX3Jlc291cmNlLCBudl9yZXQpOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisKKyAgICAgICAgbWVtc2V0ICgmaW5fZ2xfcmVzb3VyY2UtPm52X21hcHBlZF9yZXNvdXJjZSwgMCwKKyAgICAgICAgICAgIHNpemVvZiAoaW5fZ2xfcmVzb3VyY2UtPm52X21hcHBlZF9yZXNvdXJjZSkpOworICAgICAgfQorI2VuZGlmCisKKyAgICAgIGdfYXN5bmNfcXVldWVfcHVzaCAobnZlbmMtPmluX2J1ZnNfcG9vbCwgaW5fYnVmKTsKKyAgICB9CisKKyAgICBmbG93ID0gZ3N0X3ZpZGVvX2VuY29kZXJfZmluaXNoX2ZyYW1lIChlbmMsIGZyYW1lKTsKKyAgICBmcmFtZSA9IE5VTEw7CisKKyAgICBpZiAoZmxvdyAhPSBHU1RfRkxPV19PSykgeworICAgICAgR1NUX0lORk9fT0JKRUNUIChlbmMsICJnb3QgZmxvdyAlcyIsIGdzdF9mbG93X2dldF9uYW1lIChmbG93KSk7CisgICAgICBnX2F0b21pY19pbnRfc2V0ICgmbnZlbmMtPmxhc3RfZmxvdywgZmxvdyk7CisgICAgICBicmVhazsKKyAgICB9CisgIH0KKyAgd2hpbGUgKFRSVUUpOworCisgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJleGl0aW5nIHRocmVhZCIpOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9iYXNlX2VuY19zdGFydF9iaXRzdHJlYW1fdGhyZWFkIChHc3ROdkJhc2VFbmMgKiBudmVuYykKK3sKKyAgZ2NoYXIgKm5hbWUgPSBnX3N0cmR1cF9wcmludGYgKCIlcy1yZWFkLWJpdHMiLCBHU1RfT0JKRUNUX05BTUUgKG52ZW5jKSk7CisKKyAgZ19hc3NlcnQgKG52ZW5jLT5iaXRzdHJlYW1fdGhyZWFkID09IE5VTEwpOworCisgIGdfYXNzZXJ0IChnX2FzeW5jX3F1ZXVlX2xlbmd0aCAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSkgPT0gMCk7CisKKyAgbnZlbmMtPmJpdHN0cmVhbV90aHJlYWQgPQorICAgICAgZ190aHJlYWRfdHJ5X25ldyAobmFtZSwgZ3N0X252X2Jhc2VfZW5jX2JpdHN0cmVhbV90aHJlYWQsIG52ZW5jLCBOVUxMKTsKKworICBnX2ZyZWUgKG5hbWUpOworCisgIGlmIChudmVuYy0+Yml0c3RyZWFtX3RocmVhZCA9PSBOVUxMKQorICAgIHJldHVybiBGQUxTRTsKKworICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAic3RhcnRlZCB0aHJlYWQgdG8gcmVhZCBiaXRzdHJlYW0iKTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2Jhc2VfZW5jX3N0b3BfYml0c3RyZWFtX3RocmVhZCAoR3N0TnZCYXNlRW5jICogbnZlbmMpCit7CisgIGdwb2ludGVyIG91dF9idWY7CisKKyAgaWYgKG52ZW5jLT5iaXRzdHJlYW1fdGhyZWFkID09IE5VTEwpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgLyogRklYTUUgKi8KKyAgR1NUX0ZJWE1FX09CSkVDVCAobnZlbmMsICJzdG9wIGJpdHN0cmVhbSByZWFkaW5nIHRocmVhZCBwcm9wZXJseSIpOworICBnX2FzeW5jX3F1ZXVlX2xvY2sgKG52ZW5jLT5iaXRzdHJlYW1fcXVldWUpOworICBnX2FzeW5jX3F1ZXVlX2xvY2sgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCk7CisgIHdoaWxlICgob3V0X2J1ZiA9IGdfYXN5bmNfcXVldWVfdHJ5X3BvcF91bmxvY2tlZCAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSkpKSB7CisgICAgR1NUX0lORk9fT0JKRUNUIChudmVuYywgInN0b2xlIGJpdHN0cmVhbSBidWZmZXIgJXAgZnJvbSBxdWV1ZSIsIG91dF9idWYpOworICAgIGdfYXN5bmNfcXVldWVfcHVzaF91bmxvY2tlZCAobnZlbmMtPmJpdHN0cmVhbV9wb29sLCBvdXRfYnVmKTsKKyAgfQorICBnX2FzeW5jX3F1ZXVlX3B1c2hfdW5sb2NrZWQgKG52ZW5jLT5iaXRzdHJlYW1fcXVldWUsIFNIVVRET1dOX0NPT0tJRSk7CisgIGdfYXN5bmNfcXVldWVfdW5sb2NrIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wpOworICBnX2FzeW5jX3F1ZXVlX3VubG9jayAobnZlbmMtPmJpdHN0cmVhbV9xdWV1ZSk7CisKKyAgLyogdGVtcG9yYXJ5IHVubG9jaywgc28gb3RoZXIgdGhyZWFkIGNhbiBmaW5kIGFuZCBwdXNoIGZyYW1lICovCisgIEdTVF9WSURFT19FTkNPREVSX1NUUkVBTV9VTkxPQ0sgKG52ZW5jKTsKKyAgZ190aHJlYWRfam9pbiAobnZlbmMtPmJpdHN0cmVhbV90aHJlYWQpOworICBHU1RfVklERU9fRU5DT0RFUl9TVFJFQU1fTE9DSyAobnZlbmMpOworCisgIG52ZW5jLT5iaXRzdHJlYW1fdGhyZWFkID0gTlVMTDsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfYmFzZV9lbmNfcmVzZXRfcXVldWVzIChHc3ROdkJhc2VFbmMgKiBudmVuYywgZ2Jvb2xlYW4gcmVmaWxsKQoreworICBncG9pbnRlciBwdHI7CisgIGdpbnQgaTsKKworICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAiY2xlYXJpbmcgcXVldWVzIik7CisKKyAgd2hpbGUgKChwdHIgPSBnX2FzeW5jX3F1ZXVlX3RyeV9wb3AgKG52ZW5jLT5iaXRzdHJlYW1fcXVldWUpKSkgeworICAgIC8qIGRvIG5vdGhpbmcgKi8KKyAgfQorICB3aGlsZSAoKHB0ciA9IGdfYXN5bmNfcXVldWVfdHJ5X3BvcCAobnZlbmMtPmJpdHN0cmVhbV9wb29sKSkpIHsKKyAgICAvKiBkbyBub3RoaW5nICovCisgIH0KKyAgd2hpbGUgKChwdHIgPSBnX2FzeW5jX3F1ZXVlX3RyeV9wb3AgKG52ZW5jLT5pbl9idWZzX3Bvb2wpKSkgeworICAgIC8qIGRvIG5vdGhpbmcgKi8KKyAgfQorCisgIGlmIChyZWZpbGwpIHsKKyAgICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAicmVmaWxsaW5nIGJ1ZmZlciBwb29scyIpOworICAgIGZvciAoaSA9IDA7IGkgPCBudmVuYy0+bl9idWZzOyArK2kpIHsKKyAgICAgIGdfYXN5bmNfcXVldWVfcHVzaCAobnZlbmMtPmJpdHN0cmVhbV9wb29sLCBudmVuYy0+aW5wdXRfYnVmc1tpXSk7CisgICAgICBnX2FzeW5jX3F1ZXVlX3B1c2ggKG52ZW5jLT5pbl9idWZzX3Bvb2wsIG52ZW5jLT5vdXRwdXRfYnVmc1tpXSk7CisgICAgfQorICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfYmFzZV9lbmNfZnJlZV9idWZmZXJzIChHc3ROdkJhc2VFbmMgKiBudmVuYykKK3sKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworICBndWludCBpOworCisgIGlmIChudmVuYy0+ZW5jb2RlciA9PSBOVUxMKQorICAgIHJldHVybjsKKworICBnc3RfbnZfYmFzZV9lbmNfcmVzZXRfcXVldWVzIChudmVuYywgRkFMU0UpOworCisgIGZvciAoaSA9IDA7IGkgPCBudmVuYy0+bl9idWZzOyArK2kpIHsKKyAgICBOVl9FTkNfT1VUUFVUX1BUUiBvdXRfYnVmID0gbnZlbmMtPm91dHB1dF9idWZzW2ldOworCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKKyAgICBpZiAobnZlbmMtPmdsX2lucHV0KSB7CisgICAgICBzdHJ1Y3QgZ2xfaW5wdXRfcmVzb3VyY2UgKmluX2dsX3Jlc291cmNlID0gbnZlbmMtPmlucHV0X2J1ZnNbaV07CisKKyAgICAgIGN1Q3R4UHVzaEN1cnJlbnQgKG52ZW5jLT5jdWRhX2N0eCk7CisgICAgICBudl9yZXQgPQorICAgICAgICAgIE52RW5jVW5yZWdpc3RlclJlc291cmNlIChudmVuYy0+ZW5jb2RlciwKKyAgICAgICAgICBpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2UucmVnaXN0ZXJlZFJlc291cmNlKTsKKyAgICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpCisgICAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIHVucmVnaXN0ZXIgcmVzb3VyY2UgJXAsIHJldCAlZCIsCisgICAgICAgICAgICBpbl9nbF9yZXNvdXJjZSwgbnZfcmV0KTsKKworICAgICAgZ19mcmVlIChpbl9nbF9yZXNvdXJjZSk7CisgICAgICBjdUN0eFBvcEN1cnJlbnQgKE5VTEwpOworICAgIH0gZWxzZQorI2VuZGlmCisgICAgeworICAgICAgTlZfRU5DX0lOUFVUX1BUUiBpbl9idWYgPSAoTlZfRU5DX0lOUFVUX1BUUikgbnZlbmMtPmlucHV0X2J1ZnNbaV07CisKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKG52ZW5jLCAiRGVzdHJveWluZyBpbnB1dCBidWZmZXIgJXAiLCBpbl9idWYpOworICAgICAgbnZfcmV0ID0gTnZFbmNEZXN0cm95SW5wdXRCdWZmZXIgKG52ZW5jLT5lbmNvZGVyLCBpbl9idWYpOworICAgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIkZhaWxlZCB0byBkZXN0cm95IGlucHV0IGJ1ZmZlciAlcCwgcmV0ICVkIiwKKyAgICAgICAgICAgIGluX2J1ZiwgbnZfcmV0KTsKKyAgICAgIH0KKyAgICB9CisKKyAgICBHU1RfREVCVUdfT0JKRUNUIChudmVuYywgIkRlc3Ryb3lpbmcgb3V0cHV0IGJpdHN0cmVhbSBidWZmZXIgJXAiLCBvdXRfYnVmKTsKKyAgICBudl9yZXQgPSBOdkVuY0Rlc3Ryb3lCaXRzdHJlYW1CdWZmZXIgKG52ZW5jLT5lbmNvZGVyLCBvdXRfYnVmKTsKKyAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIkZhaWxlZCB0byBkZXN0cm95IG91dHB1dCBidWZmZXIgJXAsIHJldCAlZCIsCisgICAgICAgICAgb3V0X2J1ZiwgbnZfcmV0KTsKKyAgICB9CisgIH0KKworICBudmVuYy0+bl9idWZzID0gMDsKKyAgZ19mcmVlIChudmVuYy0+b3V0cHV0X2J1ZnMpOworICBudmVuYy0+b3V0cHV0X2J1ZnMgPSBOVUxMOworICBnX2ZyZWUgKG52ZW5jLT5pbnB1dF9idWZzKTsKKyAgbnZlbmMtPmlucHV0X2J1ZnMgPSBOVUxMOworfQorCitzdGF0aWMgaW5saW5lIGd1aW50CitfZ2V0X3BsYW5lX3dpZHRoIChHc3RWaWRlb0luZm8gKiBpbmZvLCBndWludCBwbGFuZSkKK3sKKyAgaWYgKEdTVF9WSURFT19JTkZPX0lTX1lVViAoaW5mbykpCisgICAgLyogRm9yIG5vdyBjb21wb25lbnQgd2lkdGggYW5kIHBsYW5lIHdpZHRoIGFyZSB0aGUgc2FtZSBhbmQgdGhlCisgICAgICogcGxhbmUtY29tcG9uZW50IG1hcHBpbmcgbWF0Y2hlcworICAgICAqLworICAgIHJldHVybiBHU1RfVklERU9fSU5GT19DT01QX1dJRFRIIChpbmZvLCBwbGFuZSk7CisgIGVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgIC8qIFJHQiwgR1JBWSAqLworICAgIHJldHVybiBHU1RfVklERU9fSU5GT19XSURUSCAoaW5mbyk7Cit9CisKK3N0YXRpYyBpbmxpbmUgZ3VpbnQKK19nZXRfcGxhbmVfaGVpZ2h0IChHc3RWaWRlb0luZm8gKiBpbmZvLCBndWludCBwbGFuZSkKK3sKKyAgaWYgKEdTVF9WSURFT19JTkZPX0lTX1lVViAoaW5mbykpCisgICAgLyogRm9yIG5vdyBjb21wb25lbnQgd2lkdGggYW5kIHBsYW5lIHdpZHRoIGFyZSB0aGUgc2FtZSBhbmQgdGhlCisgICAgICogcGxhbmUtY29tcG9uZW50IG1hcHBpbmcgbWF0Y2hlcworICAgICAqLworICAgIHJldHVybiBHU1RfVklERU9fSU5GT19DT01QX0hFSUdIVCAoaW5mbywgcGxhbmUpOworICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBSR0IsIEdSQVkgKi8KKyAgICByZXR1cm4gR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKTsKK30KKworc3RhdGljIGlubGluZSBnc2l6ZQorX2dldF9mcmFtZV9kYXRhX2hlaWdodCAoR3N0VmlkZW9JbmZvICogaW5mbykKK3sKKyAgZ3NpemUgcmV0ID0gMDsKKyAgZ2ludCBpOworCisgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoaW5mbyk7IGkrKykgeworICAgIHJldCArPSBfZ2V0X3BsYW5lX2hlaWdodCAoaW5mbywgaSk7CisgIH0KKworICByZXR1cm4gcmV0OworfQorCit2b2lkCitnc3RfbnZfYmFzZV9lbmNfc2V0X21heF9lbmNvZGVfc2l6ZSAoR3N0TnZCYXNlRW5jICogbnZlbmMsIGd1aW50IG1heF93aWR0aCwKKyAgICBndWludCBtYXhfaGVpZ2h0KQoreworICBudmVuYy0+bWF4X2VuY29kZV93aWR0aCA9IG1heF93aWR0aDsKKyAgbnZlbmMtPm1heF9lbmNvZGVfaGVpZ2h0ID0gbWF4X2hlaWdodDsKK30KKwordm9pZAorZ3N0X252X2Jhc2VfZW5jX2dldF9tYXhfZW5jb2RlX3NpemUgKEdzdE52QmFzZUVuYyAqIG52ZW5jLCBndWludCAqIG1heF93aWR0aCwKKyAgICBndWludCAqIG1heF9oZWlnaHQpCit7CisgICptYXhfd2lkdGggPSBudmVuYy0+bWF4X2VuY29kZV93aWR0aDsKKyAgKm1heF9oZWlnaHQgPSBudmVuYy0+bWF4X2VuY29kZV9oZWlnaHQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2Jhc2VfZW5jX3NldF9mb3JtYXQgKEdzdFZpZGVvRW5jb2RlciAqIGVuYywgR3N0VmlkZW9Db2RlY1N0YXRlICogc3RhdGUpCit7CisgIEdzdE52QmFzZUVuY0NsYXNzICpudmVuY19jbGFzcyA9IEdTVF9OVl9CQVNFX0VOQ19HRVRfQ0xBU1MgKGVuYyk7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKGVuYyk7CisgIEdzdFZpZGVvSW5mbyAqaW5mbyA9ICZzdGF0ZS0+aW5mbzsKKyAgR3N0VmlkZW9Db2RlY1N0YXRlICpvbGRfc3RhdGUgPSBudmVuYy0+aW5wdXRfc3RhdGU7CisgIE5WRU5DU1RBVFVTIG52X3JldDsKKworICBnX2Fzc2VydCAobnZlbmNfY2xhc3MtPmluaXRpYWxpemVfZW5jb2Rlcik7CisKKyAgR19MT0NLIChpbml0aWFsaXphdGlvbl9sb2NrKTsKKyAgaWYgKCFudmVuY19jbGFzcy0+aW5pdGlhbGl6ZV9lbmNvZGVyIChudmVuYywgb2xkX3N0YXRlLCBzdGF0ZSkpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChlbmMsICJTdWJjbGFzcyBmYWlsZWQgdG8gcmVjb25maWd1cmUgZW5jb2RlciIpOworICAgIEdfVU5MT0NLIChpbml0aWFsaXphdGlvbl9sb2NrKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgR19VTkxPQ0sgKGluaXRpYWxpemF0aW9uX2xvY2spOworCisgIGlmICghbnZlbmMtPm1heF9lbmNvZGVfd2lkdGggJiYgIW52ZW5jLT5tYXhfZW5jb2RlX2hlaWdodCkgeworICAgIGdzdF9udl9iYXNlX2VuY19zZXRfbWF4X2VuY29kZV9zaXplIChudmVuYywgR1NUX1ZJREVPX0lORk9fV0lEVEggKGluZm8pLAorICAgICAgICBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pKTsKKyAgfQorCisgIGlmICghb2xkX3N0YXRlKSB7CisgICAgbnZlbmMtPmlucHV0X2luZm8gPSAqaW5mbzsKKyAgICBudmVuYy0+Z2xfaW5wdXQgPSBGQUxTRTsKKyAgfQorCisgIGlmIChudmVuYy0+aW5wdXRfc3RhdGUpCisgICAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmIChudmVuYy0+aW5wdXRfc3RhdGUpOworICBudmVuYy0+aW5wdXRfc3RhdGUgPSBnc3RfdmlkZW9fY29kZWNfc3RhdGVfcmVmIChzdGF0ZSk7CisgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJjb25maWd1cmVkIGVuY29kZXIiKTsKKworICAvKiBub3cgYWxsb2NhdGUgc29tZSBidWZmZXJzIG9ubHkgb24gZmlyc3QgY29uZmlndXJhdGlvbiAqLworICBpZiAoIW9sZF9zdGF0ZSkgeworI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisgICAgR3N0Q2Fwc0ZlYXR1cmVzICpmZWF0dXJlczsKKyNlbmRpZgorICAgIGd1aW50IG51bV9tYWNyb2Jsb2NrcywgaTsKKyAgICBndWludCBpbnB1dF93aWR0aCwgaW5wdXRfaGVpZ2h0OworCisgICAgaW5wdXRfd2lkdGggPSBHU1RfVklERU9fSU5GT19XSURUSCAoaW5mbyk7CisgICAgaW5wdXRfaGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKTsKKworICAgIG51bV9tYWNyb2Jsb2NrcyA9IChHU1RfUk9VTkRfVVBfMTYgKGlucHV0X3dpZHRoKSA+PiA0KQorICAgICAgICAqIChHU1RfUk9VTkRfVVBfMTYgKGlucHV0X2hlaWdodCkgPj4gNCk7CisgICAgbnZlbmMtPm5fYnVmcyA9IChudW1fbWFjcm9ibG9ja3MgPj0gODE2MCkgPyAzMiA6IDQ4OworCisgICAgLyogaW5wdXQgYnVmZmVycyAqLworICAgIG52ZW5jLT5pbnB1dF9idWZzID0gZ19uZXcwIChncG9pbnRlciwgbnZlbmMtPm5fYnVmcyk7CisKKyNpZiBIQVZFX05WRU5DX0dTVF9HTAorICAgIGZlYXR1cmVzID0gZ3N0X2NhcHNfZ2V0X2ZlYXR1cmVzIChzdGF0ZS0+Y2FwcywgMCk7CisgICAgaWYgKGdzdF9jYXBzX2ZlYXR1cmVzX2NvbnRhaW5zIChmZWF0dXJlcywKKyAgICAgICAgICAgIEdTVF9DQVBTX0ZFQVRVUkVfTUVNT1JZX0dMX01FTU9SWSkpIHsKKyAgICAgIGd1aW50IHBpeGVsX2RlcHRoID0gMDsKKyAgICAgIG52ZW5jLT5nbF9pbnB1dCA9IFRSVUU7CisKKyAgICAgIGZvciAoaSA9IDA7IGkgPCBHU1RfVklERU9fSU5GT19OX0NPTVBPTkVOVFMgKGluZm8pOyBpKyspIHsKKyAgICAgICAgcGl4ZWxfZGVwdGggKz0gR1NUX1ZJREVPX0lORk9fQ09NUF9ERVBUSCAoaW5mbywgaSk7CisgICAgICB9CisKKyAgICAgIGN1Q3R4UHVzaEN1cnJlbnQgKG52ZW5jLT5jdWRhX2N0eCk7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgbnZlbmMtPm5fYnVmczsgKytpKSB7CisgICAgICAgIHN0cnVjdCBnbF9pbnB1dF9yZXNvdXJjZSAqaW5fZ2xfcmVzb3VyY2UgPQorICAgICAgICAgICAgZ19uZXcwIChzdHJ1Y3QgZ2xfaW5wdXRfcmVzb3VyY2UsIDEpOworICAgICAgICBDVXJlc3VsdCBjdV9yZXQ7CisKKyAgICAgICAgbWVtc2V0ICgmaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlLCAwLAorICAgICAgICAgICAgc2l6ZW9mIChpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2UpKTsKKyAgICAgICAgbWVtc2V0ICgmaW5fZ2xfcmVzb3VyY2UtPm52X21hcHBlZF9yZXNvdXJjZSwgMCwKKyAgICAgICAgICAgIHNpemVvZiAoaW5fZ2xfcmVzb3VyY2UtPm52X21hcHBlZF9yZXNvdXJjZSkpOworCisgICAgICAgIC8qIHNjcmF0Y2ggYnVmZmVyIGZvciBub24tY29udGlnaW91cyBwbGFuZXIgaW50byBhIGNvbnRpZ2lvdXMgYnVmZmVyICovCisgICAgICAgIGN1X3JldCA9CisgICAgICAgICAgICBjdU1lbUFsbG9jUGl0Y2ggKChDVWRldmljZXB0ciAqKSAmIGluX2dsX3Jlc291cmNlLT5jdWRhX3BvaW50ZXIsCisgICAgICAgICAgICAmaW5fZ2xfcmVzb3VyY2UtPmN1ZGFfc3RyaWRlLCBpbnB1dF93aWR0aCwKKyAgICAgICAgICAgIF9nZXRfZnJhbWVfZGF0YV9oZWlnaHQgKGluZm8pLCAxNik7CisgICAgICAgIGlmIChjdV9yZXQgIT0gQ1VEQV9TVUNDRVNTKSB7CisgICAgICAgICAgY29uc3QgZ2NoYXIgKmVycjsKKworICAgICAgICAgIGN1R2V0RXJyb3JTdHJpbmcgKGN1X3JldCwgJmVycik7CisgICAgICAgICAgR1NUX0VSUk9SX09CSkVDVCAobnZlbmMsICJmYWlsZWQgdG8gYWxvY2F0ZSBjdWRhIHNjcmF0Y2ggYnVmZmVyICIKKyAgICAgICAgICAgICAgInJldCAlZCBlcnJvciA6JXMiLCBjdV9yZXQsIGVycik7CisgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICAgIH0KKworICAgICAgICBpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2UudmVyc2lvbiA9IE5WX0VOQ19SRUdJU1RFUl9SRVNPVVJDRV9WRVI7CisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZS5yZXNvdXJjZVR5cGUgPQorICAgICAgICAgICAgTlZfRU5DX0lOUFVUX1JFU09VUkNFX1RZUEVfQ1VEQURFVklDRVBUUjsKKyAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlLndpZHRoID0gaW5wdXRfd2lkdGg7CisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZS5oZWlnaHQgPSBpbnB1dF9oZWlnaHQ7CisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZS5waXRjaCA9IGluX2dsX3Jlc291cmNlLT5jdWRhX3N0cmlkZTsKKyAgICAgICAgaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlLmJ1ZmZlckZvcm1hdCA9CisgICAgICAgICAgICBnc3RfbnZlbmNfZ2V0X252X2J1ZmZlcl9mb3JtYXQgKEdTVF9WSURFT19JTkZPX0ZPUk1BVCAoaW5mbykpOworICAgICAgICBpbl9nbF9yZXNvdXJjZS0+bnZfcmVzb3VyY2UucmVzb3VyY2VUb1JlZ2lzdGVyID0KKyAgICAgICAgICAgIGluX2dsX3Jlc291cmNlLT5jdWRhX3BvaW50ZXI7CisKKyAgICAgICAgbnZfcmV0ID0KKyAgICAgICAgICAgIE52RW5jUmVnaXN0ZXJSZXNvdXJjZSAobnZlbmMtPmVuY29kZXIsCisgICAgICAgICAgICAmaW5fZ2xfcmVzb3VyY2UtPm52X3Jlc291cmNlKTsKKyAgICAgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykKKyAgICAgICAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIkZhaWxlZCB0byByZWdpc3RlciByZXNvdXJjZSAlcCwgcmV0ICVkIiwKKyAgICAgICAgICAgICAgaW5fZ2xfcmVzb3VyY2UsIG52X3JldCk7CisKKyAgICAgICAgbnZlbmMtPmlucHV0X2J1ZnNbaV0gPSBpbl9nbF9yZXNvdXJjZTsKKyAgICAgICAgZ19hc3luY19xdWV1ZV9wdXNoIChudmVuYy0+aW5fYnVmc19wb29sLCBudmVuYy0+aW5wdXRfYnVmc1tpXSk7CisgICAgICB9CisKKyAgICAgIGN1Q3R4UG9wQ3VycmVudCAoTlVMTCk7CisgICAgfSBlbHNlCisjZW5kaWYKKyAgICB7CisgICAgICBmb3IgKGkgPSAwOyBpIDwgbnZlbmMtPm5fYnVmczsgKytpKSB7CisgICAgICAgIE5WX0VOQ19DUkVBVEVfSU5QVVRfQlVGRkVSIGNpbl9idWYgPSB7IDAsIH07CisKKyAgICAgICAgY2luX2J1Zi52ZXJzaW9uID0gTlZfRU5DX0NSRUFURV9JTlBVVF9CVUZGRVJfVkVSOworCisgICAgICAgIGNpbl9idWYud2lkdGggPSBHU1RfUk9VTkRfVVBfMzIgKGlucHV0X3dpZHRoKTsKKyAgICAgICAgY2luX2J1Zi5oZWlnaHQgPSBHU1RfUk9VTkRfVVBfMzIgKGlucHV0X2hlaWdodCk7CisKKyAgICAgICAgY2luX2J1Zi5tZW1vcnlIZWFwID0gTlZfRU5DX01FTU9SWV9IRUFQX1NZU01FTV9DQUNIRUQ7CisgICAgICAgIGNpbl9idWYuYnVmZmVyRm10ID0KKyAgICAgICAgICAgIGdzdF9udmVuY19nZXRfbnZfYnVmZmVyX2Zvcm1hdCAoR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbmZvKSk7CisKKyAgICAgICAgbnZfcmV0ID0gTnZFbmNDcmVhdGVJbnB1dEJ1ZmZlciAobnZlbmMtPmVuY29kZXIsICZjaW5fYnVmKTsKKworICAgICAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICAgICAgR1NUX1dBUk5JTkdfT0JKRUNUIChlbmMsICJGYWlsZWQgdG8gYWxsb2NhdGUgaW5wdXQgYnVmZmVyOiAlZCIsCisgICAgICAgICAgICAgIG52X3JldCk7CisgICAgICAgICAgLyogRklYTUU6IGNsZWFuIHVwICovCisgICAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgICB9CisKKyAgICAgICAgbnZlbmMtPmlucHV0X2J1ZnNbaV0gPSBjaW5fYnVmLmlucHV0QnVmZmVyOworCisgICAgICAgIEdTVF9JTkZPX09CSkVDVCAobnZlbmMsICJhbGxvY2F0ZWQgIGlucHV0IGJ1ZmZlciAlMmQ6ICVwIiwgaSwKKyAgICAgICAgICAgIG52ZW5jLT5pbnB1dF9idWZzW2ldKTsKKworICAgICAgICBnX2FzeW5jX3F1ZXVlX3B1c2ggKG52ZW5jLT5pbl9idWZzX3Bvb2wsIG52ZW5jLT5pbnB1dF9idWZzW2ldKTsKKyAgICAgIH0KKyAgICB9CisKKyAgICAvKiBvdXRwdXQgYnVmZmVycyAqLworICAgIG52ZW5jLT5vdXRwdXRfYnVmcyA9IGdfbmV3MCAoTlZfRU5DX09VVFBVVF9QVFIsIG52ZW5jLT5uX2J1ZnMpOworICAgIGZvciAoaSA9IDA7IGkgPCBudmVuYy0+bl9idWZzOyArK2kpIHsKKyAgICAgIE5WX0VOQ19DUkVBVEVfQklUU1RSRUFNX0JVRkZFUiBjb3V0X2J1ZiA9IHsgMCwgfTsKKworICAgICAgY291dF9idWYudmVyc2lvbiA9IE5WX0VOQ19DUkVBVEVfQklUU1RSRUFNX0JVRkZFUl9WRVI7CisKKyAgICAgIC8qIDEgTUIgc2hvdWxkIGJlIGxhcmdlIGVub3VnaCB0byBob2xkIG1vc3Qgb3V0cHV0IGZyYW1lcy4KKyAgICAgICAqIE5WRU5DIHdpbGwgYXV0b21hdGljYWxseSBpbmNyZWFzZSB0aGlzIGlmIGl0J3Mgbm90IGVub3VnaC4gKi8KKyAgICAgIGNvdXRfYnVmLnNpemUgPSAxMDI0ICogMTAyNDsKKyAgICAgIGNvdXRfYnVmLm1lbW9yeUhlYXAgPSBOVl9FTkNfTUVNT1JZX0hFQVBfU1lTTUVNX0NBQ0hFRDsKKworICAgICAgR19MT0NLIChpbml0aWFsaXphdGlvbl9sb2NrKTsKKyAgICAgIG52X3JldCA9IE52RW5jQ3JlYXRlQml0c3RyZWFtQnVmZmVyIChudmVuYy0+ZW5jb2RlciwgJmNvdXRfYnVmKTsKKyAgICAgIEdfVU5MT0NLIChpbml0aWFsaXphdGlvbl9sb2NrKTsKKworICAgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgICAgICBHU1RfV0FSTklOR19PQkpFQ1QgKGVuYywgIkZhaWxlZCB0byBhbGxvY2F0ZSBpbnB1dCBidWZmZXI6ICVkIiwgbnZfcmV0KTsKKyAgICAgICAgLyogRklYTUU6IGNsZWFuIHVwICovCisgICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgIH0KKworICAgICAgbnZlbmMtPm91dHB1dF9idWZzW2ldID0gY291dF9idWYuYml0c3RyZWFtQnVmZmVyOworCisgICAgICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAiYWxsb2NhdGVkIG91dHB1dCBidWZmZXIgJTJkOiAlcCIsIGksCisgICAgICAgICAgbnZlbmMtPm91dHB1dF9idWZzW2ldKTsKKworICAgICAgZ19hc3luY19xdWV1ZV9wdXNoIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wsIG52ZW5jLT5vdXRwdXRfYnVmc1tpXSk7CisgICAgfQorCisjaWYgMAorICAgIC8qIEdldCBTUFMvUFBTICovCisgICAgeworICAgICAgTlZfRU5DX1NFUVVFTkNFX1BBUkFNX1BBWUxPQUQgc2VxX3BhcmFtID0geyAwIH07CisgICAgICB1aW50MzJfdCBzZXFfc2l6ZSA9IDA7CisKKyAgICAgIHNlcV9wYXJhbS52ZXJzaW9uID0gTlZfRU5DX1NFUVVFTkNFX1BBUkFNX1BBWUxPQURfVkVSOworICAgICAgc2VxX3BhcmFtLnNwc3Bwc0J1ZmZlciA9IGdfYWxsb2NhICgxMDI0KTsKKyAgICAgIHNlcV9wYXJhbS5pbkJ1ZmZlclNpemUgPSAxMDI0OworICAgICAgc2VxX3BhcmFtLm91dFNQU1BQU1BheWxvYWRTaXplID0gJnNlcV9zaXplOworCisgICAgICBudl9yZXQgPSBOdkVuY0dldFNlcXVlbmNlUGFyYW1zIChudmVuYy0+ZW5jb2RlciwgJnNlcV9wYXJhbSk7CisgICAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoZW5jLCAiRmFpbGVkIHRvIHJldHJpZXZlIFNQUy9QUFM6ICVkIiwgbnZfcmV0KTsKKyAgICAgICAgcmV0dXJuIEZBTFNFOworICAgICAgfQorCisgICAgICAvKiBGSVhNRTogdXNlIFNQUy9QUFMgKi8KKyAgICAgIEdTVF9NRU1EVU1QX09CSkVDVCAoZW5jLCAiU1BTL1BQUyIsIHNlcV9wYXJhbS5zcHNwcHNCdWZmZXIsIHNlcV9zaXplKTsKKyAgICB9CisjZW5kaWYKKyAgfQorCisgIGdfYXNzZXJ0IChudmVuY19jbGFzcy0+c2V0X3NyY19jYXBzKTsKKyAgaWYgKCFudmVuY19jbGFzcy0+c2V0X3NyY19jYXBzIChudmVuYywgc3RhdGUpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAobnZlbmMsICJTdWJjbGFzcyBmYWlsZWQgdG8gc2V0IG91dHB1dCBjYXBzIik7CisgICAgLyogRklYTUU6IGNsZWFuIHVwICovCisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBpbmxpbmUgZ3VpbnQKK19wbGFuZV9nZXRfbl9jb21wb25lbnRzIChHc3RWaWRlb0luZm8gKiBpbmZvLCBndWludCBwbGFuZSkKK3sKKyAgc3dpdGNoIChHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pKSB7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQng6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUng6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX3hSR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX3hCR1I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQkE6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0JHUkE6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FSR0I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FCR1I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0FZVVY6CisgICAgICByZXR1cm4gNDsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1I6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1JHQjE2OgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9CR1IxNjoKKyAgICAgIHJldHVybiAzOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9HUkFZMTZfQkU6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0dSQVkxNl9MRToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVVZMjoKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfVVlWWToKKyAgICAgIHJldHVybiAyOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjEyOgorICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9OVjIxOgorICAgICAgcmV0dXJuIHBsYW5lID09IDAgPyAxIDogMjsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfR1JBWTg6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0NDQ6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0MkI6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0MUI6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX0k0MjA6CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1lWMTI6CisgICAgICByZXR1cm4gMTsKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICByZXR1cm4gMTsKKyAgfQorfQorCisjaWYgSEFWRV9OVkVOQ19HU1RfR0wKK3N0cnVjdCBtYXBfZ2xfaW5wdXQKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYzsKKyAgR3N0VmlkZW9Db2RlY0ZyYW1lICpmcmFtZTsKKyAgR3N0VmlkZW9JbmZvICppbmZvOworICBzdHJ1Y3QgZ2xfaW5wdXRfcmVzb3VyY2UgKmluX2dsX3Jlc291cmNlOworfTsKKworc3RhdGljIHZvaWQKK19tYXBfZ2xfaW5wdXRfYnVmZmVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBzdHJ1Y3QgbWFwX2dsX2lucHV0ICpkYXRhKQoreworICBjdWRhRXJyb3JfdCBjdWRhX3JldDsKKyAgZ3VpbnQ4ICpkYXRhX3BvaW50ZXI7CisgIGd1aW50IGk7CisKKyAgY3VDdHhQdXNoQ3VycmVudCAoZGF0YS0+bnZlbmMtPmN1ZGFfY3R4KTsKKyAgZGF0YV9wb2ludGVyID0gZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmN1ZGFfcG9pbnRlcjsKKyAgZm9yIChpID0gMDsgaSA8IEdTVF9WSURFT19JTkZPX05fUExBTkVTIChkYXRhLT5pbmZvKTsgaSsrKSB7CisgICAgZ3VpbnQgcGxhbmVfbl9jb21wb25lbnRzOworICAgIEdzdEdMQnVmZmVyICpnbF9idWZfb2JqOworICAgIEdzdEdMTWVtb3J5UEJPICpnbF9tZW07CisgICAgZ3VpbnQgc3JjX3N0cmlkZSwgZGVzdF9zdHJpZGU7CisKKyAgICBnbF9tZW0gPQorICAgICAgICAoR3N0R0xNZW1vcnlQQk8gKikgZ3N0X2J1ZmZlcl9wZWVrX21lbW9yeSAoZGF0YS0+ZnJhbWUtPmlucHV0X2J1ZmZlciwKKyAgICAgICAgaSk7CisgICAgZ19yZXR1cm5faWZfZmFpbCAoZ3N0X2lzX2dsX21lbW9yeV9wYm8gKChHc3RNZW1vcnkgKikgZ2xfbWVtKSk7CisgICAgZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmdsX21lbVtpXSA9IEdTVF9HTF9NRU1PUllfQ0FTVCAoZ2xfbWVtKTsKKyAgICBwbGFuZV9uX2NvbXBvbmVudHMgPSBfcGxhbmVfZ2V0X25fY29tcG9uZW50cyAoZGF0YS0+aW5mbywgaSk7CisKKyAgICBnbF9idWZfb2JqID0gKEdzdEdMQnVmZmVyICopIGdsX21lbS0+cGJvOworICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGdsX2J1Zl9vYmogIT0gTlVMTCk7CisKKyAgICAvKiBnZXQgdGhlIHRleHR1cmUgaW50byB0aGUgUEJPICovCisgICAgZ3N0X2dsX21lbW9yeV9wYm9fdXBsb2FkX3RyYW5zZmVyIChnbF9tZW0pOworICAgIGdzdF9nbF9tZW1vcnlfcGJvX2Rvd25sb2FkX3RyYW5zZmVyIChnbF9tZW0pOworCisgICAgR1NUX0xPR19PQkpFQ1QgKGRhdGEtPm52ZW5jLCAiYXR0ZW1wdGluZyB0byBjb3B5IHRleHR1cmUgJXUgaW50byBjdWRhIiwKKyAgICAgICAgZ2xfbWVtLT5tZW0udGV4X2lkKTsKKworICAgIGN1ZGFfcmV0ID0KKyAgICAgICAgY3VkYUdyYXBoaWNzR0xSZWdpc3RlckJ1ZmZlciAoJmRhdGEtPmluX2dsX3Jlc291cmNlLT5jdWRhX3RleHR1cmUsCisgICAgICAgIGdsX2J1Zl9vYmotPmlkLCBjdWRhR3JhcGhpY3NSZWdpc3RlckZsYWdzUmVhZE9ubHkpOworICAgIGlmIChjdWRhX3JldCAhPSBjdWRhU3VjY2VzcykgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZGF0YS0+bnZlbmMsICJmYWlsZWQgdG8gcmVnaXN0ZXIgR0wgdGV4dHVyZSAldSB0byBjdWRhICIKKyAgICAgICAgICAicmV0IDolZCIsIGdsX21lbS0+bWVtLnRleF9pZCwgY3VkYV9yZXQpOworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgfQorCisgICAgY3VkYV9yZXQgPQorICAgICAgICBjdWRhR3JhcGhpY3NNYXBSZXNvdXJjZXMgKDEsICZkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV90ZXh0dXJlLCAwKTsKKyAgICBpZiAoY3VkYV9yZXQgIT0gY3VkYVN1Y2Nlc3MpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRhdGEtPm52ZW5jLCAiZmFpbGVkIHRvIG1hcCBHTCB0ZXh0dXJlICV1IGludG8gY3VkYSAiCisgICAgICAgICAgInJldCA6JWQiLCBnbF9tZW0tPm1lbS50ZXhfaWQsIGN1ZGFfcmV0KTsKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgIH0KKworICAgIGN1ZGFfcmV0ID0KKyAgICAgICAgY3VkYUdyYXBoaWNzUmVzb3VyY2VHZXRNYXBwZWRQb2ludGVyICgmZGF0YS0+CisgICAgICAgIGluX2dsX3Jlc291cmNlLT5jdWRhX3BsYW5lX3BvaW50ZXJzW2ldLAorICAgICAgICAmZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmN1ZGFfbnVtX2J5dGVzLAorICAgICAgICBkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV90ZXh0dXJlKTsKKyAgICBpZiAoY3VkYV9yZXQgIT0gY3VkYVN1Y2Nlc3MpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKGRhdGEtPm52ZW5jLCAiZmFpbGVkIHRvIGdldCBtYXBwZWQgcG9pbnRlciBvZiBtYXAgR0wgIgorICAgICAgICAgICJ0ZXh0dXJlICV1IGluIGN1ZGEgcmV0IDolZCIsIGdsX21lbS0+bWVtLnRleF9pZCwgY3VkYV9yZXQpOworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgfQorCisgICAgc3JjX3N0cmlkZSA9IEdTVF9WSURFT19JTkZPX1BMQU5FX1NUUklERSAoZGF0YS0+aW5mbywgaSk7CisgICAgZGVzdF9zdHJpZGUgPSBkYXRhLT5pbl9nbF9yZXNvdXJjZS0+Y3VkYV9zdHJpZGU7CisKKyAgICAvKiBjb3B5IGludG8gc2NyYXRjaCBidWZmZXIgKi8KKyAgICBjdWRhX3JldCA9CisgICAgICAgIGN1ZGFNZW1jcHkyRCAoZGF0YV9wb2ludGVyLCBkZXN0X3N0cmlkZSwKKyAgICAgICAgZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmN1ZGFfcGxhbmVfcG9pbnRlcnNbaV0sIHNyY19zdHJpZGUsCisgICAgICAgIF9nZXRfcGxhbmVfd2lkdGggKGRhdGEtPmluZm8sIGkpICogcGxhbmVfbl9jb21wb25lbnRzLAorICAgICAgICBfZ2V0X3BsYW5lX2hlaWdodCAoZGF0YS0+aW5mbywgaSksIGN1ZGFNZW1jcHlEZXZpY2VUb0RldmljZSk7CisgICAgaWYgKGN1ZGFfcmV0ICE9IGN1ZGFTdWNjZXNzKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChkYXRhLT5udmVuYywgImZhaWxlZCB0byBjb3B5IEdMIHRleHR1cmUgJXUgaW50byBjdWRhICIKKyAgICAgICAgICAicmV0IDolZCIsIGdsX21lbS0+bWVtLnRleF9pZCwgY3VkYV9yZXQpOworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgfQorCisgICAgY3VkYV9yZXQgPQorICAgICAgICBjdWRhR3JhcGhpY3NVbm1hcFJlc291cmNlcyAoMSwgJmRhdGEtPmluX2dsX3Jlc291cmNlLT5jdWRhX3RleHR1cmUsIDApOworICAgIGlmIChjdWRhX3JldCAhPSBjdWRhU3VjY2VzcykgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoZGF0YS0+bnZlbmMsICJmYWlsZWQgdG8gdW5tYXAgR0wgdGV4dHVyZSAldSBmcm9tIGN1ZGEgIgorICAgICAgICAgICJyZXQgOiVkIiwgZ2xfbWVtLT5tZW0udGV4X2lkLCBjdWRhX3JldCk7CisgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCAoKTsKKyAgICB9CisKKyAgICBjdWRhX3JldCA9CisgICAgICAgIGN1ZGFHcmFwaGljc1VucmVnaXN0ZXJSZXNvdXJjZSAoZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmN1ZGFfdGV4dHVyZSk7CisgICAgaWYgKGN1ZGFfcmV0ICE9IGN1ZGFTdWNjZXNzKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChkYXRhLT5udmVuYywgImZhaWxlZCB0byB1bnJlZ2lzdGVyIEdMIHRleHR1cmUgJXUgZnJvbSAiCisgICAgICAgICAgImN1ZGEgcmV0IDolZCIsIGdsX21lbS0+bWVtLnRleF9pZCwgY3VkYV9yZXQpOworICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgfQorCisgICAgZGF0YV9wb2ludGVyID0KKyAgICAgICAgZGF0YV9wb2ludGVyICsKKyAgICAgICAgZGF0YS0+aW5fZ2xfcmVzb3VyY2UtPmN1ZGFfc3RyaWRlICoKKyAgICAgICAgX2dldF9wbGFuZV9oZWlnaHQgKCZkYXRhLT5udmVuYy0+aW5wdXRfaW5mbywgaSk7CisgIH0KKyAgY3VDdHhQb3BDdXJyZW50IChOVUxMKTsKK30KKyNlbmRpZgorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorX2FjcXVpcmVfaW5wdXRfYnVmZmVyIChHc3ROdkJhc2VFbmMgKiBudmVuYywgZ3BvaW50ZXIgKiBpbnB1dCkKK3sKKyAgZ19hc3NlcnQgKGlucHV0KTsKKworICBHU1RfTE9HX09CSkVDVCAobnZlbmMsICJhY3F1aXJpbmcgaW5wdXQgYnVmZmVyLi4iKTsKKyAgR1NUX1ZJREVPX0VOQ09ERVJfU1RSRUFNX1VOTE9DSyAobnZlbmMpOworICAqaW5wdXQgPSBnX2FzeW5jX3F1ZXVlX3BvcCAobnZlbmMtPmluX2J1ZnNfcG9vbCk7CisgIEdTVF9WSURFT19FTkNPREVSX1NUUkVBTV9MT0NLIChudmVuYyk7CisKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorX3N1Ym1pdF9pbnB1dF9idWZmZXIgKEdzdE52QmFzZUVuYyAqIG52ZW5jLCBHc3RWaWRlb0NvZGVjRnJhbWUgKiBmcmFtZSwKKyAgICBHc3RWaWRlb0ZyYW1lICogdmZyYW1lLCB2b2lkICppbnB1dEJ1ZmZlciwgdm9pZCAqaW5wdXRCdWZmZXJQdHIsCisgICAgTlZfRU5DX0JVRkZFUl9GT1JNQVQgYnVmZmVyRm9ybWF0LCB2b2lkICpvdXRwdXRCdWZmZXJQdHIpCit7CisgIEdzdE52QmFzZUVuY0NsYXNzICpudmVuY19jbGFzcyA9IEdTVF9OVl9CQVNFX0VOQ19HRVRfQ0xBU1MgKG52ZW5jKTsKKyAgTlZfRU5DX1BJQ19QQVJBTVMgcGljX3BhcmFtcyA9IHsgMCwgfTsKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworCisgIEdTVF9MT0dfT0JKRUNUIChudmVuYywgIiV1OiBpbnB1dCBidWZmZXIgJXAsIG91dHB1dCBidWZmZXIgJXAsICIKKyAgICAgICJwdHMgJSIgR1NUX1RJTUVfRk9STUFULCBmcmFtZS0+c3lzdGVtX2ZyYW1lX251bWJlciwgaW5wdXRCdWZmZXIsCisgICAgICBvdXRwdXRCdWZmZXJQdHIsIEdTVF9USU1FX0FSR1MgKGZyYW1lLT5wdHMpKTsKKworICBwaWNfcGFyYW1zLnZlcnNpb24gPSBOVl9FTkNfUElDX1BBUkFNU19WRVI7CisgIHBpY19wYXJhbXMuaW5wdXRCdWZmZXIgPSBpbnB1dEJ1ZmZlclB0cjsKKyAgcGljX3BhcmFtcy5idWZmZXJGbXQgPSBidWZmZXJGb3JtYXQ7CisKKyAgcGljX3BhcmFtcy5pbnB1dFdpZHRoID0gR1NUX1ZJREVPX0ZSQU1FX1dJRFRIICh2ZnJhbWUpOworICBwaWNfcGFyYW1zLmlucHV0SGVpZ2h0ID0gR1NUX1ZJREVPX0ZSQU1FX0hFSUdIVCAodmZyYW1lKTsKKyAgcGljX3BhcmFtcy5vdXRwdXRCaXRzdHJlYW0gPSBvdXRwdXRCdWZmZXJQdHI7CisgIHBpY19wYXJhbXMuY29tcGxldGlvbkV2ZW50ID0gTlVMTDsKKyAgaWYgKEdTVF9WSURFT19GUkFNRV9JU19JTlRFUkxBQ0VEICh2ZnJhbWUpKSB7CisgICAgaWYgKEdTVF9WSURFT19GUkFNRV9JU19URkYgKHZmcmFtZSkpCisgICAgICBwaWNfcGFyYW1zLnBpY3R1cmVTdHJ1Y3QgPSBOVl9FTkNfUElDX1NUUlVDVF9GSUVMRF9UT1BfQk9UVE9NOworICAgIGVsc2UKKyAgICAgIHBpY19wYXJhbXMucGljdHVyZVN0cnVjdCA9IE5WX0VOQ19QSUNfU1RSVUNUX0ZJRUxEX0JPVFRPTV9UT1A7CisgIH0gZWxzZSB7CisgICAgcGljX3BhcmFtcy5waWN0dXJlU3RydWN0ID0gTlZfRU5DX1BJQ19TVFJVQ1RfRlJBTUU7CisgIH0KKyAgcGljX3BhcmFtcy5pbnB1dFRpbWVTdGFtcCA9IGZyYW1lLT5wdHM7CisgIHBpY19wYXJhbXMuaW5wdXREdXJhdGlvbiA9CisgICAgICBHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAoZnJhbWUtPmR1cmF0aW9uKSA/IGZyYW1lLT5kdXJhdGlvbiA6IDA7CisgIHBpY19wYXJhbXMuZnJhbWVJZHggPSBmcmFtZS0+c3lzdGVtX2ZyYW1lX251bWJlcjsKKworICBpZiAoR1NUX1ZJREVPX0NPREVDX0ZSQU1FX0lTX0ZPUkNFX0tFWUZSQU1FIChmcmFtZSkpCisgICAgcGljX3BhcmFtcy5lbmNvZGVQaWNGbGFncyA9IE5WX0VOQ19QSUNfRkxBR19GT1JDRUlEUjsKKyAgZWxzZQorICAgIHBpY19wYXJhbXMuZW5jb2RlUGljRmxhZ3MgPSAwOworCisgIGlmIChudmVuY19jbGFzcy0+c2V0X3BpY19wYXJhbXMKKyAgICAgICYmICFudmVuY19jbGFzcy0+c2V0X3BpY19wYXJhbXMgKG52ZW5jLCBmcmFtZSwgJnBpY19wYXJhbXMpKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAobnZlbmMsICJTdWJjbGFzcyBmYWlsZWQgdG8gc3VibWl0IGJ1ZmZlciIpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorCisgIG52X3JldCA9IE52RW5jRW5jb2RlUGljdHVyZSAobnZlbmMtPmVuY29kZXIsICZwaWNfcGFyYW1zKTsKKyAgaWYgKG52X3JldCA9PSBOVl9FTkNfU1VDQ0VTUykgeworICAgIEdTVF9MT0dfT0JKRUNUIChudmVuYywgIkVuY29kZWQgcGljdHVyZSIpOworICB9IGVsc2UgaWYgKG52X3JldCA9PSBOVl9FTkNfRVJSX05FRURfTU9SRV9JTlBVVCkgeworICAgIC8qIEZJWE1FOiB3ZSBzaG91bGQgcHJvYmFibHkgcXVldWUgcGVuZGluZyBvdXRwdXQgYnVmZmVycyBoZXJlIGFuZCBvbmx5CisgICAgICogc3VibWl0IHRoZW0gdG8gdGhlIGFzeW5jIHF1ZXVlIG9uY2Ugd2UgZ290IHN1Y2VzcyBiYWNrICovCisgICAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICJFbmNvZGVkIHBpY3R1cmUgKGVuY29kZXIgbmVlZHMgbW9yZSBpbnB1dCkiKTsKKyAgfSBlbHNlIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIkZhaWxlZCB0byBlbmNvZGUgcGljdHVyZTogJWQiLCBudl9yZXQpOworICAgIEdTVF9ERUJVR19PQkpFQ1QgKG52ZW5jLCAicmUtZW5xdWV1ZWluZyBpbnB1dCBidWZmZXIgJXAiLCBpbnB1dEJ1ZmZlcik7CisgICAgZ19hc3luY19xdWV1ZV9wdXNoIChudmVuYy0+aW5fYnVmc19wb29sLCBpbnB1dEJ1ZmZlcik7CisgICAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICJyZS1lbnF1ZXVlaW5nIG91dHB1dCBidWZmZXIgJXAiLCBvdXRwdXRCdWZmZXJQdHIpOworICAgIGdfYXN5bmNfcXVldWVfcHVzaCAobnZlbmMtPmJpdHN0cmVhbV9wb29sLCBvdXRwdXRCdWZmZXJQdHIpOworCisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisKKyAgZ19hc3luY19xdWV1ZV9wdXNoIChudmVuYy0+Yml0c3RyZWFtX3F1ZXVlLCBvdXRwdXRCdWZmZXJQdHIpOworCisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9udl9iYXNlX2VuY19oYW5kbGVfZnJhbWUgKEdzdFZpZGVvRW5jb2RlciAqIGVuYywgR3N0VmlkZW9Db2RlY0ZyYW1lICogZnJhbWUpCit7CisgIGdwb2ludGVyIGlucHV0X2J1ZmZlciA9IE5VTEw7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKGVuYyk7CisgIE5WX0VOQ19PVVRQVVRfUFRSIG91dF9idWY7CisgIE5WRU5DU1RBVFVTIG52X3JldDsKKyAgR3N0VmlkZW9GcmFtZSB2ZnJhbWU7CisgIEdzdFZpZGVvSW5mbyAqaW5mbyA9ICZudmVuYy0+aW5wdXRfc3RhdGUtPmluZm87CisgIEdzdEZsb3dSZXR1cm4gZmxvdyA9IEdTVF9GTE9XX09LOworICBHc3RNYXBGbGFncyBpbl9tYXBfZmxhZ3MgPSBHU1RfTUFQX1JFQUQ7CisgIHN0cnVjdCBmcmFtZV9zdGF0ZSAqc3RhdGU7CisgIGd1aW50IGZyYW1lX24gPSAwOworCisgIGdfYXNzZXJ0IChudmVuYy0+ZW5jb2RlciAhPSBOVUxMKTsKKworI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisgIGlmIChudmVuYy0+Z2xfaW5wdXQpCisgICAgaW5fbWFwX2ZsYWdzIHw9IEdTVF9NQVBfR0w7CisjZW5kaWYKKworICBpZiAoIWdzdF92aWRlb19mcmFtZV9tYXAgKCZ2ZnJhbWUsIGluZm8sIGZyYW1lLT5pbnB1dF9idWZmZXIsIGluX21hcF9mbGFncykpCisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworCisgIC8qIG1ha2Ugc3VyZSBvdXIgdGhyZWFkIHRoYXQgd2FpdHMgZm9yIG91dHB1dCB0byBiZSByZWFkeSBpcyBzdGFydGVkICovCisgIGlmIChudmVuYy0+Yml0c3RyZWFtX3RocmVhZCA9PSBOVUxMKSB7CisgICAgaWYgKCFnc3RfbnZfYmFzZV9lbmNfc3RhcnRfYml0c3RyZWFtX3RocmVhZCAobnZlbmMpKQorICAgICAgZ290byBlcnJvcjsKKyAgfQorCisgIGZsb3cgPSBfYWNxdWlyZV9pbnB1dF9idWZmZXIgKG52ZW5jLCAmaW5wdXRfYnVmZmVyKTsKKyAgaWYgKGZsb3cgIT0gR1NUX0ZMT1dfT0spCisgICAgcmV0dXJuIGZsb3c7CisgIGlmIChpbnB1dF9idWZmZXIgPT0gTlVMTCkKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisKKyAgc3RhdGUgPSBmcmFtZS0+dXNlcl9kYXRhOworICBpZiAoIXN0YXRlKQorICAgIHN0YXRlID0gZ19uZXcwIChzdHJ1Y3QgZnJhbWVfc3RhdGUsIDEpOworICBzdGF0ZS0+bl9idWZmZXJzID0gMTsKKworI2lmIEhBVkVfTlZFTkNfR1NUX0dMCisgIGlmIChudmVuYy0+Z2xfaW5wdXQpIHsKKyAgICBzdHJ1Y3QgZ2xfaW5wdXRfcmVzb3VyY2UgKmluX2dsX3Jlc291cmNlID0gaW5wdXRfYnVmZmVyOworICAgIHN0cnVjdCBtYXBfZ2xfaW5wdXQgZGF0YTsKKworICAgIEdTVF9MT0dfT0JKRUNUIChlbmMsICJnb3QgaW5wdXQgYnVmZmVyICVwIiwgaW5fZ2xfcmVzb3VyY2UpOworCisgICAgaW5fZ2xfcmVzb3VyY2UtPmdsX21lbVswXSA9CisgICAgICAgIChHc3RHTE1lbW9yeSAqKSBnc3RfYnVmZmVyX3BlZWtfbWVtb3J5IChmcmFtZS0+aW5wdXRfYnVmZmVyLCAwKTsKKyAgICBnX2Fzc2VydCAoZ3N0X2lzX2dsX21lbW9yeSAoKEdzdE1lbW9yeSAqKSBpbl9nbF9yZXNvdXJjZS0+Z2xfbWVtWzBdKSk7CisKKyAgICBkYXRhLm52ZW5jID0gbnZlbmM7CisgICAgZGF0YS5mcmFtZSA9IGZyYW1lOworICAgIGRhdGEuaW5mbyA9ICZ2ZnJhbWUuaW5mbzsKKyAgICBkYXRhLmluX2dsX3Jlc291cmNlID0gaW5fZ2xfcmVzb3VyY2U7CisKKyAgICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChpbl9nbF9yZXNvdXJjZS0+Z2xfbWVtWzBdLT5tZW0uY29udGV4dCwKKyAgICAgICAgKEdzdEdMQ29udGV4dFRocmVhZEZ1bmMpIF9tYXBfZ2xfaW5wdXRfYnVmZmVyLCAmZGF0YSk7CisKKyAgICBpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlLnZlcnNpb24gPSBOVl9FTkNfTUFQX0lOUFVUX1JFU09VUkNFX1ZFUjsKKyAgICBpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlLnJlZ2lzdGVyZWRSZXNvdXJjZSA9CisgICAgICAgIGluX2dsX3Jlc291cmNlLT5udl9yZXNvdXJjZS5yZWdpc3RlcmVkUmVzb3VyY2U7CisKKyAgICBudl9yZXQgPQorICAgICAgICBOdkVuY01hcElucHV0UmVzb3VyY2UgKG52ZW5jLT5lbmNvZGVyLAorICAgICAgICAmaW5fZ2xfcmVzb3VyY2UtPm52X21hcHBlZF9yZXNvdXJjZSk7CisgICAgaWYgKG52X3JldCAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAobnZlbmMsICJGYWlsZWQgdG8gbWFwIGlucHV0IHJlc291cmNlICVwLCByZXQgJWQiLAorICAgICAgICAgIGluX2dsX3Jlc291cmNlLCBudl9yZXQpOworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisKKyAgICBvdXRfYnVmID0gZ19hc3luY19xdWV1ZV90cnlfcG9wIChudmVuYy0+Yml0c3RyZWFtX3Bvb2wpOworICAgIGlmIChvdXRfYnVmID09IE5VTEwpIHsKKyAgICAgIEdTVF9ERUJVR19PQkpFQ1QgKG52ZW5jLCAid2FpdCBmb3Igb3V0cHV0IGJ1ZiB0byBiZWNvbWUgYXZhaWxhYmxlIGFnYWluIik7CisgICAgICBvdXRfYnVmID0gZ19hc3luY19xdWV1ZV9wb3AgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCk7CisgICAgfQorCisgICAgc3RhdGUtPmluX2J1ZnNbZnJhbWVfbl0gPSBpbl9nbF9yZXNvdXJjZTsKKyAgICBzdGF0ZS0+b3V0X2J1ZnNbZnJhbWVfbisrXSA9IG91dF9idWY7CisKKyAgICBmcmFtZS0+dXNlcl9kYXRhID0gc3RhdGU7CisgICAgZnJhbWUtPnVzZXJfZGF0YV9kZXN0cm95X25vdGlmeSA9IChHRGVzdHJveU5vdGlmeSkgZ19mcmVlOworCisgICAgZmxvdyA9CisgICAgICAgIF9zdWJtaXRfaW5wdXRfYnVmZmVyIChudmVuYywgZnJhbWUsICZ2ZnJhbWUsIGluX2dsX3Jlc291cmNlLAorICAgICAgICBpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlLm1hcHBlZFJlc291cmNlLAorICAgICAgICBpbl9nbF9yZXNvdXJjZS0+bnZfbWFwcGVkX3Jlc291cmNlLm1hcHBlZEJ1ZmZlckZtdCwgb3V0X2J1Zik7CisKKyAgICAvKiBlbmNvZGVyIHdpbGwga2VlcCBmcmFtZSBpbiBsaXN0IGludGVybmFsbHksIHdlJ2xsIGxvb2sgaXQgdXAgYWdhaW4gbGF0ZXIKKyAgICAgKiBpbiB0aGUgdGhyZWFkIHdoZXJlIHdlIGdldCB0aGUgb3V0cHV0IGJ1ZmZlcnMgYW5kIGZpbmlzaCBpdCB0aGVyZSAqLworICAgIGdzdF92aWRlb19jb2RlY19mcmFtZV91bnJlZiAoZnJhbWUpOworICAgIGZyYW1lID0gTlVMTDsKKyAgfQorI2VuZGlmCisKKyAgaWYgKCFudmVuYy0+Z2xfaW5wdXQpIHsKKyAgICBOVl9FTkNfTE9DS19JTlBVVF9CVUZGRVIgaW5fYnVmX2xvY2sgPSB7IDAsIH07CisgICAgTlZfRU5DX0lOUFVUX1BUUiBpbl9idWYgPSBpbnB1dF9idWZmZXI7CisgICAgZ3VpbnQ4ICpzcmMsICpkZXN0OworICAgIGd1aW50IHNyY19zdHJpZGUsIGRlc3Rfc3RyaWRlOworICAgIGd1aW50IGhlaWdodCwgd2lkdGg7CisgICAgZ3VpbnQgeTsKKworICAgIEdTVF9MT0dfT0JKRUNUIChlbmMsICJnb3QgaW5wdXQgYnVmZmVyICVwIiwgaW5fYnVmKTsKKworICAgIGluX2J1Zl9sb2NrLnZlcnNpb24gPSBOVl9FTkNfTE9DS19JTlBVVF9CVUZGRVJfVkVSOworICAgIGluX2J1Zl9sb2NrLmlucHV0QnVmZmVyID0gaW5fYnVmOworCisgICAgbnZfcmV0ID0gTnZFbmNMb2NrSW5wdXRCdWZmZXIgKG52ZW5jLT5lbmNvZGVyLCAmaW5fYnVmX2xvY2spOworICAgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICAgIEdTVF9FUlJPUl9PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIGxvY2sgaW5wdXQgYnVmZmVyOiAlZCIsIG52X3JldCk7CisgICAgICAvKiBGSVhNRTogcG9zdCBwcm9wZXIgZXJyb3IgbWVzc2FnZSAqLworICAgICAgZ290byBlcnJvcjsKKyAgICB9CisgICAgR1NUX0xPR19PQkpFQ1QgKG52ZW5jLCAiTG9ja2VkIGlucHV0IGJ1ZmZlciAlcCIsIGluX2J1Zik7CisKKyAgICB3aWR0aCA9IEdTVF9WSURFT19GUkFNRV9XSURUSCAoJnZmcmFtZSk7CisgICAgaGVpZ2h0ID0gR1NUX1ZJREVPX0ZSQU1FX0hFSUdIVCAoJnZmcmFtZSk7CisKKyAgICAvLyBGSVhNRTogdGhpcyBvbmx5IHdvcmtzIGZvciBOVjEyCisgICAgZ19hc3NlcnQgKEdTVF9WSURFT19GUkFNRV9GT1JNQVQgKCZ2ZnJhbWUpID09IEdTVF9WSURFT19GT1JNQVRfTlYxMik7CisKKyAgICAvKiBjb3B5IFkgcGxhbmUgKi8KKyAgICBzcmMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoJnZmcmFtZSwgMCk7CisgICAgc3JjX3N0cmlkZSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKCZ2ZnJhbWUsIDApOworICAgIGRlc3QgPSBpbl9idWZfbG9jay5idWZmZXJEYXRhUHRyOworICAgIGRlc3Rfc3RyaWRlID0gaW5fYnVmX2xvY2sucGl0Y2g7CisgICAgZm9yICh5ID0gMDsgeSA8IGhlaWdodDsgKyt5KSB7CisgICAgICBtZW1jcHkgKGRlc3QsIHNyYywgd2lkdGgpOworICAgICAgZGVzdCArPSBkZXN0X3N0cmlkZTsKKyAgICAgIHNyYyArPSBzcmNfc3RyaWRlOworICAgIH0KKworICAgIC8qIGNvcHkgVVYgcGxhbmUgKi8KKyAgICBzcmMgPSBHU1RfVklERU9fRlJBTUVfUExBTkVfREFUQSAoJnZmcmFtZSwgMSk7CisgICAgc3JjX3N0cmlkZSA9IEdTVF9WSURFT19GUkFNRV9QTEFORV9TVFJJREUgKCZ2ZnJhbWUsIDEpOworICAgIGRlc3QgPQorICAgICAgICAoZ3VpbnQ4ICopIGluX2J1Zl9sb2NrLmJ1ZmZlckRhdGFQdHIgKworICAgICAgICBHU1RfUk9VTkRfVVBfMzIgKEdTVF9WSURFT19JTkZPX0hFSUdIVCAoJm52ZW5jLT5pbnB1dF9pbmZvKSkgKgorICAgICAgICBpbl9idWZfbG9jay5waXRjaDsKKyAgICBkZXN0X3N0cmlkZSA9IGluX2J1Zl9sb2NrLnBpdGNoOworICAgIGZvciAoeSA9IDA7IHkgPCBHU1RfUk9VTkRfVVBfMiAoaGVpZ2h0KSAvIDI7ICsreSkgeworICAgICAgbWVtY3B5IChkZXN0LCBzcmMsIHdpZHRoKTsKKyAgICAgIGRlc3QgKz0gZGVzdF9zdHJpZGU7CisgICAgICBzcmMgKz0gc3JjX3N0cmlkZTsKKyAgICB9CisKKyAgICBudl9yZXQgPSBOdkVuY1VubG9ja0lucHV0QnVmZmVyIChudmVuYy0+ZW5jb2RlciwgaW5fYnVmKTsKKyAgICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgICBHU1RfRVJST1JfT0JKRUNUIChudmVuYywgIkZhaWxlZCB0byB1bmxvY2sgaW5wdXQgYnVmZmVyOiAlZCIsIG52X3JldCk7CisgICAgICBnb3RvIGVycm9yOworICAgIH0KKworICAgIG91dF9idWYgPSBnX2FzeW5jX3F1ZXVlX3RyeV9wb3AgKG52ZW5jLT5iaXRzdHJlYW1fcG9vbCk7CisgICAgaWYgKG91dF9idWYgPT0gTlVMTCkgeworICAgICAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICJ3YWl0IGZvciBvdXRwdXQgYnVmIHRvIGJlY29tZSBhdmFpbGFibGUgYWdhaW4iKTsKKyAgICAgIG91dF9idWYgPSBnX2FzeW5jX3F1ZXVlX3BvcCAobnZlbmMtPmJpdHN0cmVhbV9wb29sKTsKKyAgICB9CisKKyAgICBzdGF0ZS0+aW5fYnVmc1tmcmFtZV9uXSA9IGluX2J1ZjsKKyAgICBzdGF0ZS0+b3V0X2J1ZnNbZnJhbWVfbisrXSA9IG91dF9idWY7CisgICAgZnJhbWUtPnVzZXJfZGF0YSA9IHN0YXRlOworICAgIGZyYW1lLT51c2VyX2RhdGFfZGVzdHJveV9ub3RpZnkgPSAoR0Rlc3Ryb3lOb3RpZnkpIGdfZnJlZTsKKworICAgIGZsb3cgPQorICAgICAgICBfc3VibWl0X2lucHV0X2J1ZmZlciAobnZlbmMsIGZyYW1lLCAmdmZyYW1lLCBpbl9idWYsIGluX2J1ZiwKKyAgICAgICAgZ3N0X252ZW5jX2dldF9udl9idWZmZXJfZm9ybWF0IChHU1RfVklERU9fSU5GT19GT1JNQVQgKGluZm8pKSwgb3V0X2J1Zik7CisKKyAgICAvKiBlbmNvZGVyIHdpbGwga2VlcCBmcmFtZSBpbiBsaXN0IGludGVybmFsbHksIHdlJ2xsIGxvb2sgaXQgdXAgYWdhaW4gbGF0ZXIKKyAgICAgKiBpbiB0aGUgdGhyZWFkIHdoZXJlIHdlIGdldCB0aGUgb3V0cHV0IGJ1ZmZlcnMgYW5kIGZpbmlzaCBpdCB0aGVyZSAqLworICAgIGdzdF92aWRlb19jb2RlY19mcmFtZV91bnJlZiAoZnJhbWUpOworICAgIGZyYW1lID0gTlVMTDsKKyAgfQorCisgIGlmIChmbG93ICE9IEdTVF9GTE9XX09LKQorICAgIGdvdG8gb3V0OworCisgIGZsb3cgPSBnX2F0b21pY19pbnRfZ2V0ICgmbnZlbmMtPmxhc3RfZmxvdyk7CisKK291dDoKKworICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZ2ZnJhbWUpOworCisgIHJldHVybiBmbG93OworCitlcnJvcjoKKyAgZmxvdyA9IEdTVF9GTE9XX0VSUk9SOworICBnb3RvIG91dDsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfYmFzZV9lbmNfZHJhaW5fZW5jb2RlciAoR3N0TnZCYXNlRW5jICogbnZlbmMpCit7CisgIE5WX0VOQ19QSUNfUEFSQU1TIHBpY19wYXJhbXMgPSB7IDAsIH07CisgIE5WRU5DU1RBVFVTIG52X3JldDsKKworICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAiZHJhaW5pbmcgZW5jb2RlciIpOworCisgIGlmIChudmVuYy0+aW5wdXRfc3RhdGUgPT0gTlVMTCkgeworICAgIEdTVF9ERUJVR19PQkpFQ1QgKG52ZW5jLCAibm8gaW5wdXQgc3RhdGUsIG5vdGhpbmcgdG8gZG8iKTsKKyAgICByZXR1cm4gVFJVRTsKKyAgfQorCisgIHBpY19wYXJhbXMudmVyc2lvbiA9IE5WX0VOQ19QSUNfUEFSQU1TX1ZFUjsKKyAgcGljX3BhcmFtcy5lbmNvZGVQaWNGbGFncyA9IE5WX0VOQ19QSUNfRkxBR19FT1M7CisKKyAgbnZfcmV0ID0gTnZFbmNFbmNvZGVQaWN0dXJlIChudmVuYy0+ZW5jb2RlciwgJnBpY19wYXJhbXMpOworICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgR1NUX0xPR19PQkpFQ1QgKG52ZW5jLCAiRmFpbGVkIHRvIGRyYWluIGVuY29kZXIsIHJldCAlZCIsIG52X3JldCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfbnZfYmFzZV9lbmNfZmluaXNoIChHc3RWaWRlb0VuY29kZXIgKiBlbmMpCit7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKGVuYyk7CisKKyAgR1NUX0ZJWE1FX09CSkVDVCAoZW5jLCAiaW1wbGVtZW50IGZpbmlzaCIpOworCisgIGdzdF9udl9iYXNlX2VuY19kcmFpbl9lbmNvZGVyIChudmVuYyk7CisKKyAgLyogd2FpdCBmb3IgZW5jb2RlciB0byBvdXRwdXQgdGhlIHJlbWFpbmluZyBidWZmZXJzICovCisgIGdzdF9udl9iYXNlX2VuY19zdG9wX2JpdHN0cmVhbV90aHJlYWQgKG52ZW5jKTsKKworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKKyNpZiAwCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9iYXNlX2VuY19mbHVzaCAoR3N0VmlkZW9FbmNvZGVyICogZW5jKQoreworICBHc3ROdkJhc2VFbmMgKm52ZW5jID0gR1NUX05WX0JBU0VfRU5DIChlbmMpOworICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAiZG9uZSBmbHVzaGluZyBlbmNvZGVyIik7CisgIHJldHVybiBUUlVFOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkCitnc3RfbnZfYmFzZV9lbmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdE52QmFzZUVuYyAqbnZlbmMgPSBHU1RfTlZfQkFTRV9FTkMgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0RFVklDRV9JRDoKKyAgICAgIG52ZW5jLT5jdWRhX2RldmljZV9pZCA9IGdfdmFsdWVfZ2V0X3VpbnQgKHZhbHVlKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIHZvaWQKK2dzdF9udl9iYXNlX2VuY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsIEdWYWx1ZSAqIHZhbHVlLAorICAgIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0TnZCYXNlRW5jICpudmVuYyA9IEdTVF9OVl9CQVNFX0VOQyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfREVWSUNFX0lEOgorICAgICAgZ192YWx1ZV9zZXRfdWludCAodmFsdWUsIG52ZW5jLT5jdWRhX2RldmljZV9pZCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CmRpZmYgLS1naXQgYS9zeXMvbnZlbmMvZ3N0bnZiYXNlZW5jLmggYi9zeXMvbnZlbmMvZ3N0bnZiYXNlZW5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGE4NDNlOQotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9udmVuYy9nc3RudmJhc2VlbmMuaApAQCAtMCwwICsxLDExNCBAQAorLyogR1N0cmVhbWVyIE5WRU5DIHBsdWdpbgorICogQ29weXJpZ2h0IChDKSAyMDE1IENlbnRyaWN1bGFyIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfTlZfQkFTRV9FTkNfSF9JTkNMVURFRF9fCisjZGVmaW5lIF9fR1NUX05WX0JBU0VfRU5DX0hfSU5DTFVERURfXworCisjaW5jbHVkZSAiZ3N0bnZlbmMuaCIKKworI2luY2x1ZGUgPGdzdC92aWRlby9nc3R2aWRlb2VuY29kZXIuaD4KKworI2RlZmluZSBHU1RfVFlQRV9OVl9CQVNFX0VOQyBcCisgIChnc3RfbnZfYmFzZV9lbmNfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX05WX0JBU0VfRU5DKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QoKG9iaiksR1NUX1RZUEVfTlZfQkFTRV9FTkMsR3N0TnZCYXNlRW5jKSkKKyNkZWZpbmUgR1NUX05WX0JBU0VfRU5DX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX05WX0JBU0VfRU5DLEdzdE52QmFzZUVuY0NsYXNzKSkKKyNkZWZpbmUgR1NUX05WX0JBU0VfRU5DX0dFVF9DTEFTUyhvYmopIFwKKyAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MoKG9iaiksR1NUX1RZUEVfTlZfQkFTRV9FTkMsR3N0TnZCYXNlRW5jQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfTlZfQkFTRV9FTkMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSxHU1RfVFlQRV9OVl9CQVNFX0VOQykpCisjZGVmaW5lIEdTVF9JU19OVl9CQVNFX0VOQ19DTEFTUyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19UWVBFKChrbGFzcyksR1NUX1RZUEVfTlZfQkFTRV9FTkMpKQorCit0eXBlZGVmIHN0cnVjdCB7CisgIEdzdFZpZGVvRW5jb2RlciB2aWRlb19lbmNvZGVyOworCisgIC8qIHByb3BlcnRpZXMgKi8KKyAgZ3VpbnQgICAgICAgICAgIGN1ZGFfZGV2aWNlX2lkOworCisgIENVY29udGV4dCAgICAgICBjdWRhX2N0eDsKKyAgdm9pZCAgICAgICAgICAqIGVuY29kZXI7CisKKyAgLyogdGhlIHN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzICovCisgIEdWYWx1ZSAgICAgICAgKiBpbnB1dF9mb3JtYXRzOyAgICAgICAgICAgICAgICAgIC8qIE9CSkVDVCBMT0NLICovCisKKyAgR3N0VmlkZW9Db2RlY1N0YXRlICppbnB1dF9zdGF0ZTsKKyAgZ2Jvb2xlYW4gICAgICAgICAgICBnbF9pbnB1dDsKKworICAvKiBhbGxvY2F0ZWQgYnVmZmVycyAqLworICBncG9pbnRlciAgICAgICAgICAqaW5wdXRfYnVmczsgICAvKiBhcnJheSBvZiBuX2FsbG9jcyBpbnB1dCBidWZmZXJzICAqLworICBOVl9FTkNfT1VUUFVUX1BUUiAqb3V0cHV0X2J1ZnM7ICAvKiBhcnJheSBvZiBuX2FsbG9jcyBvdXRwdXQgYnVmZmVycyAqLworICBndWludCAgICAgICAgICAgICAgbl9idWZzOworCisgIC8qIGlucHV0IGFuZCBvdXRwdXQgYnVmZmVycyBjdXJyZW50bHkgYXZhaWxhYmxlICovCisgIEdBc3luY1F1ZXVlICAgICppbl9idWZzX3Bvb2w7CisgIEdBc3luY1F1ZXVlICAgICpiaXRzdHJlYW1fcG9vbDsKKworICAvKiBvdXRwdXQgYnVmcyBpbiB1c2UgKGlucHV0IGJ1ZnMgaW4gdXNlIGFyZSB0cmFja2VkIHZpYSB0aGUgY29kZWMgZnJhbWVzKSAqLworICBHQXN5bmNRdWV1ZSAgICAqYml0c3RyZWFtX3F1ZXVlOworCisgIC8qIHdlIHNwYXduIGEgdGhyZWFkIHRoYXQgZG9lcyB0aGUgKGJsb2NraW5nKSB3YWl0cyBmb3Igb3V0cHV0IGJ1ZmZlcnMKKyAgICogdG8gYmVjb21lIGF2YWlsYWJsZSwgc28gd2UgY2FuIGNvbnRpbnVlIHRvIGZlZWQgZGF0YSB0byB0aGUgZW5jb2RlcgorICAgKiB3aGlsZSB3ZSB3YWl0ICovCisgIEdUaHJlYWQgICAgICAgICpiaXRzdHJlYW1fdGhyZWFkOworCisgIC8qIHN1cHBvcnRlZCBpbnRlcmxhY2luZyBpbnB1dCBtb2Rlcy4KKyAgICogMCA9IG5vbmUsIDEgPSBmaWVsZHMsIDIgPSBpbnRlcmxlYXZlZCAqLworICBnaW50ICAgICAgICAgICAgaW50ZXJsYWNlX21vZGVzOworCisgIHZvaWQgICAgICAgICAgICpkaXNwbGF5OyAgICAgICAgICAgIC8qIEdzdEdMRGlzcGxheSAqLworICB2b2lkICAgICAgICAgICAqb3RoZXJfY29udGV4dDsgICAgICAvKiBHc3RHTENvbnRleHQgKi8KKworICAvKiB0aGUgbWF4aW11bSBidWZmZXIgc2l6ZSB0aGUgZW5jb2RlciBpcyBjb25maWd1cmVkIGZvciAqLworICBndWludCAgICAgICAgICAgICAgIG1heF9lbmNvZGVfd2lkdGg7CisgIGd1aW50ICAgICAgICAgICAgICAgbWF4X2VuY29kZV9oZWlnaHQ7CisKKyAgR3N0VmlkZW9JbmZvICAgICAgICBpbnB1dF9pbmZvOyAgICAgLyogYnVmZmVyIGNvbmZpZ3VyYXRpb24gZm9yIGJ1ZmZlcnMgc2VudCB0byBOVkVOQyAqLworCisgIEdzdEZsb3dSZXR1cm4gICBsYXN0X2Zsb3c7ICAgICAgICAgIC8qIEFUT01JQyAqLworfSBHc3ROdkJhc2VFbmM7CisKK3R5cGVkZWYgc3RydWN0IHsKKyAgR3N0VmlkZW9FbmNvZGVyQ2xhc3MgdmlkZW9fZW5jb2Rlcl9jbGFzczsKKworICBHVUlEIGNvZGVjX2lkOworCisgIGdib29sZWFuICgqaW5pdGlhbGl6ZV9lbmNvZGVyKSAoR3N0TnZCYXNlRW5jICogbnZlbmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9Db2RlY1N0YXRlICogb2xkX3N0YXRlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKTsKKyAgZ2Jvb2xlYW4gKCpzZXRfc3JjX2NhcHMpICAgICAgIChHc3ROdkJhc2VFbmMgKiBudmVuYywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKiBzdGF0ZSk7CisgIGdib29sZWFuICgqc2V0X3BpY19wYXJhbXMpICAgICAoR3N0TnZCYXNlRW5jICogbnZlbmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR3N0VmlkZW9Db2RlY0ZyYW1lICogZnJhbWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlZfRU5DX1BJQ19QQVJBTVMgKiBwaWNfcGFyYW1zKTsKK30gR3N0TnZCYXNlRW5jQ2xhc3M7CisKK0dfR05VQ19JTlRFUk5BTAorR1R5cGUgZ3N0X252X2Jhc2VfZW5jX2dldF90eXBlICh2b2lkKTsKKworCit2b2lkIGdzdF9udl9iYXNlX2VuY19nZXRfbWF4X2VuY29kZV9zaXplICAgICAgKEdzdE52QmFzZUVuYyAqIG52ZW5jLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCAqIG1heF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgKiBtYXhfaGVpZ2h0KTsKK3ZvaWQgZ3N0X252X2Jhc2VfZW5jX3NldF9tYXhfZW5jb2RlX3NpemUgICAgICAoR3N0TnZCYXNlRW5jICogbnZlbmMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd1aW50IG1heF93aWR0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQgbWF4X2hlaWdodCk7CisKKyNlbmRpZiAvKiBfX0dTVF9OVl9CQVNFX0VOQ19IX0lOQ0xVREVEX18gKi8KZGlmZiAtLWdpdCBhL3N5cy9udmVuYy9nc3RudmVuYy5jIGIvc3lzL252ZW5jL2dzdG52ZW5jLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmIwZDU2OAotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9udmVuYy9nc3RudmVuYy5jCkBAIC0wLDAgKzEsMzI4IEBACisvKiBHU3RyZWFtZXIgTlZFTkMgcGx1Z2luCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2VudHJpY3VsYXIgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0bnZlbmMuaCIKKyNpbmNsdWRlICJnc3RudmgyNjRlbmMuaCIKKworR1NUX0RFQlVHX0NBVEVHT1JZIChnc3RfbnZlbmNfZGVidWcpOworCitzdGF0aWMgTlZfRU5DT0RFX0FQSV9GVU5DVElPTl9MSVNUIG52ZW5jX2FwaTsKKworTlZFTkNTVEFUVVMKK052RW5jT3BlbkVuY29kZVNlc3Npb25FeCAoTlZfRU5DX09QRU5fRU5DT0RFX1NFU1NJT05fRVhfUEFSQU1TICogcGFyYW1zLAorICAgIHZvaWQgKiplbmNvZGVyKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jT3BlbkVuY29kZVNlc3Npb25FeCAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY09wZW5FbmNvZGVTZXNzaW9uRXggKHBhcmFtcywgZW5jb2Rlcik7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0Rlc3Ryb3lFbmNvZGVyICh2b2lkICplbmNvZGVyKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jRGVzdHJveUVuY29kZXIgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNEZXN0cm95RW5jb2RlciAoZW5jb2Rlcik7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0dldEVuY29kZUdVSURzICh2b2lkICplbmNvZGVyLCBHVUlEICogYXJyYXksIHVpbnQzMl90IGFycmF5X3NpemUsCisgICAgdWludDMyX3QgKiBjb3VudCkKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0dldEVuY29kZUdVSURzICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jR2V0RW5jb2RlR1VJRHMgKGVuY29kZXIsIGFycmF5LCBhcnJheV9zaXplLCBjb3VudCk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0dldEVuY29kZVByb2ZpbGVHVUlEQ291bnQgKHZvaWQgKmVuY29kZXIsIEdVSUQgZW5jb2RlR1VJRCwKKyAgICB1aW50MzJfdCAqIGVuY29kZVByb2ZpbGVHVUlEQ291bnQpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNHZXRFbmNvZGVQcm9maWxlR1VJRENvdW50ICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jR2V0RW5jb2RlUHJvZmlsZUdVSURDb3VudCAoZW5jb2RlciwgZW5jb2RlR1VJRCwKKyAgICAgIGVuY29kZVByb2ZpbGVHVUlEQ291bnQpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNHZXRFbmNvZGVQcm9maWxlR1VJRHMgKHZvaWQgKmVuY29kZXIsIEdVSUQgZW5jb2RlR1VJRCwKKyAgICBHVUlEICogcHJvZmlsZUdVSURzLCB1aW50MzJfdCBndWlkQXJyYXlTaXplLCB1aW50MzJfdCAqIEdVSURDb3VudCkKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0dldEVuY29kZVByb2ZpbGVHVUlEcyAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0dldEVuY29kZVByb2ZpbGVHVUlEcyAoZW5jb2RlciwgZW5jb2RlR1VJRCwKKyAgICAgIHByb2ZpbGVHVUlEcywgZ3VpZEFycmF5U2l6ZSwgR1VJRENvdW50KTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jR2V0SW5wdXRGb3JtYXRzICh2b2lkICplbmNvZGVyLCBHVUlEIGVuY19ndWlkLAorICAgIE5WX0VOQ19CVUZGRVJfRk9STUFUICogYXJyYXksIHVpbnQzMl90IHNpemUsIHVpbnQzMl90ICogbnVtKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jR2V0SW5wdXRGb3JtYXRzICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jR2V0SW5wdXRGb3JtYXRzIChlbmNvZGVyLCBlbmNfZ3VpZCwgYXJyYXksIHNpemUsIG51bSk7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0dldEVuY29kZVByZXNldENvbmZpZyAodm9pZCAqZW5jb2RlciwgR1VJRCBlbmNvZGVHVUlELAorICAgIEdVSUQgcHJlc2V0R1VJRCwgTlZfRU5DX1BSRVNFVF9DT05GSUcgKiBwcmVzZXRDb25maWcpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNHZXRFbmNvZGVQcmVzZXRDb25maWcgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNHZXRFbmNvZGVQcmVzZXRDb25maWcgKGVuY29kZXIsIGVuY29kZUdVSUQsIHByZXNldEdVSUQsCisgICAgICBwcmVzZXRDb25maWcpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNHZXRFbmNvZGVDYXBzICh2b2lkICplbmNvZGVyLCBHVUlEIGVuY29kZUdVSUQsCisgICAgTlZfRU5DX0NBUFNfUEFSQU0gKiBjYXBzUGFyYW0sIGludCAqY2Fwc1ZhbCkKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0dldEVuY29kZUNhcHMgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNHZXRFbmNvZGVDYXBzIChlbmNvZGVyLCBlbmNvZGVHVUlELCBjYXBzUGFyYW0sIGNhcHNWYWwpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNHZXRTZXF1ZW5jZVBhcmFtcyAodm9pZCAqZW5jb2RlciwKKyAgICBOVl9FTkNfU0VRVUVOQ0VfUEFSQU1fUEFZTE9BRCAqIHNlcXVlbmNlUGFyYW1QYXlsb2FkKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jR2V0U2VxdWVuY2VQYXJhbXMgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNHZXRTZXF1ZW5jZVBhcmFtcyAoZW5jb2Rlciwgc2VxdWVuY2VQYXJhbVBheWxvYWQpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNJbml0aWFsaXplRW5jb2RlciAodm9pZCAqZW5jb2RlciwgTlZfRU5DX0lOSVRJQUxJWkVfUEFSQU1TICogcGFyYW1zKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jSW5pdGlhbGl6ZUVuY29kZXIgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNJbml0aWFsaXplRW5jb2RlciAoZW5jb2RlciwgcGFyYW1zKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jUmVjb25maWd1cmVFbmNvZGVyICh2b2lkICplbmNvZGVyLCBOVl9FTkNfUkVDT05GSUdVUkVfUEFSQU1TICogcGFyYW1zKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jUmVjb25maWd1cmVFbmNvZGVyICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jUmVjb25maWd1cmVFbmNvZGVyIChlbmNvZGVyLCBwYXJhbXMpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNSZWdpc3RlclJlc291cmNlICh2b2lkICplbmNvZGVyLCBOVl9FTkNfUkVHSVNURVJfUkVTT1VSQ0UgKiBwYXJhbXMpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNSZWdpc3RlclJlc291cmNlICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jUmVnaXN0ZXJSZXNvdXJjZSAoZW5jb2RlciwgcGFyYW1zKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jVW5yZWdpc3RlclJlc291cmNlICh2b2lkICplbmNvZGVyLCBOVl9FTkNfUkVHSVNURVJFRF9QVFIgcmVzb3VyY2UpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNVbnJlZ2lzdGVyUmVzb3VyY2UgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNVbnJlZ2lzdGVyUmVzb3VyY2UgKGVuY29kZXIsIHJlc291cmNlKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jTWFwSW5wdXRSZXNvdXJjZSAodm9pZCAqZW5jb2RlciwgTlZfRU5DX01BUF9JTlBVVF9SRVNPVVJDRSAqIHBhcmFtcykKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY01hcElucHV0UmVzb3VyY2UgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNNYXBJbnB1dFJlc291cmNlIChlbmNvZGVyLCBwYXJhbXMpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNVbm1hcElucHV0UmVzb3VyY2UgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19JTlBVVF9QVFIgaW5wdXRfYnVmZmVyKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jVW5tYXBJbnB1dFJlc291cmNlICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jVW5tYXBJbnB1dFJlc291cmNlIChlbmNvZGVyLCBpbnB1dF9idWZmZXIpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNDcmVhdGVJbnB1dEJ1ZmZlciAodm9pZCAqZW5jb2RlciwgTlZfRU5DX0NSRUFURV9JTlBVVF9CVUZGRVIgKiBpbnB1dF9idWYpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNDcmVhdGVJbnB1dEJ1ZmZlciAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0NyZWF0ZUlucHV0QnVmZmVyIChlbmNvZGVyLCBpbnB1dF9idWYpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNMb2NrSW5wdXRCdWZmZXIgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19MT0NLX0lOUFVUX0JVRkZFUiAqIGlucHV0X2J1ZikKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0xvY2tJbnB1dEJ1ZmZlciAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0xvY2tJbnB1dEJ1ZmZlciAoZW5jb2RlciwgaW5wdXRfYnVmKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jVW5sb2NrSW5wdXRCdWZmZXIgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19JTlBVVF9QVFIgaW5wdXRfYnVmKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jVW5sb2NrSW5wdXRCdWZmZXIgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNVbmxvY2tJbnB1dEJ1ZmZlciAoZW5jb2RlciwgaW5wdXRfYnVmKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jRGVzdHJveUlucHV0QnVmZmVyICh2b2lkICplbmNvZGVyLCBOVl9FTkNfSU5QVVRfUFRSIGlucHV0X2J1ZikKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0Rlc3Ryb3lJbnB1dEJ1ZmZlciAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0Rlc3Ryb3lJbnB1dEJ1ZmZlciAoZW5jb2RlciwgaW5wdXRfYnVmKTsKK30KKworTlZFTkNTVEFUVVMKK052RW5jQ3JlYXRlQml0c3RyZWFtQnVmZmVyICh2b2lkICplbmNvZGVyLCBOVl9FTkNfQ1JFQVRFX0JJVFNUUkVBTV9CVUZGRVIgKiBiYikKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0NyZWF0ZUJpdHN0cmVhbUJ1ZmZlciAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0NyZWF0ZUJpdHN0cmVhbUJ1ZmZlciAoZW5jb2RlciwgYmIpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNMb2NrQml0c3RyZWFtICh2b2lkICplbmNvZGVyLCBOVl9FTkNfTE9DS19CSVRTVFJFQU0gKiBsb2NrX2JzKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jTG9ja0JpdHN0cmVhbSAhPSBOVUxMKTsKKyAgcmV0dXJuIG52ZW5jX2FwaS5udkVuY0xvY2tCaXRzdHJlYW0gKGVuY29kZXIsIGxvY2tfYnMpOworfQorCitOVkVOQ1NUQVRVUworTnZFbmNVbmxvY2tCaXRzdHJlYW0gKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19PVVRQVVRfUFRSIGJiKQoreworICBnX2Fzc2VydCAobnZlbmNfYXBpLm52RW5jVW5sb2NrQml0c3RyZWFtICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jVW5sb2NrQml0c3RyZWFtIChlbmNvZGVyLCBiYik7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0Rlc3Ryb3lCaXRzdHJlYW1CdWZmZXIgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19PVVRQVVRfUFRSIGJpdF9idWYpCit7CisgIGdfYXNzZXJ0IChudmVuY19hcGkubnZFbmNEZXN0cm95Qml0c3RyZWFtQnVmZmVyICE9IE5VTEwpOworICByZXR1cm4gbnZlbmNfYXBpLm52RW5jRGVzdHJveUJpdHN0cmVhbUJ1ZmZlciAoZW5jb2RlciwgYml0X2J1Zik7Cit9CisKK05WRU5DU1RBVFVTCitOdkVuY0VuY29kZVBpY3R1cmUgKHZvaWQgKmVuY29kZXIsIE5WX0VOQ19QSUNfUEFSQU1TICogcGljX3BhcmFtcykKK3sKKyAgZ19hc3NlcnQgKG52ZW5jX2FwaS5udkVuY0VuY29kZVBpY3R1cmUgIT0gTlVMTCk7CisgIHJldHVybiBudmVuY19hcGkubnZFbmNFbmNvZGVQaWN0dXJlIChlbmNvZGVyLCBwaWNfcGFyYW1zKTsKK30KKworZ2Jvb2xlYW4KK2dzdF9udmVuY19jbXBfZ3VpZCAoR1VJRCBnMSwgR1VJRCBnMikKK3sKKyAgcmV0dXJuIChnMS5EYXRhMSA9PSBnMi5EYXRhMSAmJiBnMS5EYXRhMiA9PSBnMi5EYXRhMiAmJiBnMS5EYXRhMyA9PSBnMi5EYXRhMworICAgICAgJiYgZzEuRGF0YTRbMF0gPT0gZzIuRGF0YTRbMF0gJiYgZzEuRGF0YTRbMV0gPT0gZzIuRGF0YTRbMV0KKyAgICAgICYmIGcxLkRhdGE0WzJdID09IGcyLkRhdGE0WzJdICYmIGcxLkRhdGE0WzNdID09IGcyLkRhdGE0WzNdCisgICAgICAmJiBnMS5EYXRhNFs0XSA9PSBnMi5EYXRhNFs0XSAmJiBnMS5EYXRhNFs1XSA9PSBnMi5EYXRhNFs1XQorICAgICAgJiYgZzEuRGF0YTRbNl0gPT0gZzIuRGF0YTRbNl0gJiYgZzEuRGF0YTRbN10gPT0gZzIuRGF0YTRbN10pOworfQorCitOVl9FTkNfQlVGRkVSX0ZPUk1BVAorZ3N0X252ZW5jX2dldF9udl9idWZmZXJfZm9ybWF0IChHc3RWaWRlb0Zvcm1hdCBmbXQpCit7CisgIHN3aXRjaCAoZm10KSB7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX05WMTI6CisgICAgICByZXR1cm4gTlZfRU5DX0JVRkZFUl9GT1JNQVRfTlYxMl9QTDsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfWVYxMjoKKyAgICAgIHJldHVybiBOVl9FTkNfQlVGRkVSX0ZPUk1BVF9ZVjEyX1BMOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwOgorICAgICAgcmV0dXJuIE5WX0VOQ19CVUZGRVJfRk9STUFUX0lZVVZfUEw7CisgICAgY2FzZSBHU1RfVklERU9fRk9STUFUX1k0NDQ6CisgICAgICByZXR1cm4gTlZfRU5DX0JVRkZFUl9GT1JNQVRfWVVWNDQ0X1BMOworICAgIGRlZmF1bHQ6CisgICAgICBicmVhazsKKyAgfQorICByZXR1cm4gTlZfRU5DX0JVRkZFUl9GT1JNQVRfVU5ERUZJTkVEOworfQorCitDVWNvbnRleHQKK2dzdF9udmVuY19jcmVhdGVfY3VkYV9jb250ZXh0IChndWludCBkZXZpY2VfaWQpCit7CisgIENVY29udGV4dCBjdWRhX2N0eCwgb2xkX2N0eDsKKyAgQ1VyZXN1bHQgY3JlcyA9IENVREFfU1VDQ0VTUzsKKyAgQ1VkZXZpY2UgY2RldiA9IDAsIGN1ZGFfZGV2ID0gLTE7CisgIGludCBkZXZfY291bnQgPSAwOworICBjaGFyIG5hbWVbMjU2XTsKKyAgaW50IG1pbiA9IDAsIG1haiA9IDA7CisgIGludCBpOworCisgIEdTVF9JTkZPICgiSW5pdGlhbGlzaW5nIENVREEuLiIpOworCisgIGNyZXMgPSBjdUluaXQgKDApOworCisgIGlmIChjcmVzICE9IENVREFfU1VDQ0VTUykgeworICAgIEdTVF9XQVJOSU5HICgiRmFpbGVkIHRvIGluaXRpYWxpc2UgQ1VEQSwgZXJyb3IgY29kZTogMHglMDh4IiwgY3Jlcyk7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBHU1RfSU5GTyAoIkluaXRpYWxpc2VkIENVREEiKTsKKworICBjcmVzID0gY3VEZXZpY2VHZXRDb3VudCAoJmRldl9jb3VudCk7CisgIGlmIChjcmVzICE9IENVREFfU1VDQ0VTUyB8fCBkZXZfY291bnQgPT0gMCkgeworICAgIEdTVF9XQVJOSU5HICgiTm8gQ1VEQSBkZXZpY2VzIGRldGVjdGVkIik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBHU1RfSU5GTyAoIiVkIENVREEgZGV2aWNlKHMpIGRldGVjdGVkIiwgZGV2X2NvdW50KTsKKyAgZm9yIChpID0gMDsgaSA8IGRldl9jb3VudDsgKytpKSB7CisgICAgaWYgKGN1RGV2aWNlR2V0ICgmY2RldiwgaSkgPT0gQ1VEQV9TVUNDRVNTCisgICAgICAgICYmIGN1RGV2aWNlR2V0TmFtZSAobmFtZSwgc2l6ZW9mIChuYW1lKSwgY2RldikgPT0gQ1VEQV9TVUNDRVNTCisgICAgICAgICYmIGN1RGV2aWNlQ29tcHV0ZUNhcGFiaWxpdHkgKCZtYWosICZtaW4sIGNkZXYpID09IENVREFfU1VDQ0VTUykgeworICAgICAgR1NUX0lORk8gKCJHUFUgIyVkIHN1cHBvcnRzIE5WRU5DOiAlcyAoJXMpIChDb21wdXRlIFNNICVkLiVkKSIsCisgICAgICAgICAgaSwgKCgobWFqIDw8IDQpICsgbWluKSA+PSAweDMwKSA/ICJ5ZXMiIDogIm5vIiwgbmFtZSwgbWFqLCBtaW4pOworICAgICAgaWYgKGkgPT0gZGV2aWNlX2lkKSB7CisgICAgICAgIGN1ZGFfZGV2ID0gY2RldjsKKyAgICAgIH0KKyAgICB9CisgIH0KKworICBpZiAoY3VkYV9kZXYgPT0gLTEpIHsKKyAgICBHU1RfV0FSTklORyAoIkRldmljZSB3aXRoIGlkICVkIGRvZXMgbm90IGV4aXN0IG9yIGRvZXMgbm90IHN1cHBvcnQgTlZFTkMiLAorICAgICAgICBkZXZpY2VfaWQpOworICAgIHJldHVybiBOVUxMOworICB9CisKKyAgaWYgKGN1Q3R4Q3JlYXRlICgmY3VkYV9jdHgsIDAsIGN1ZGFfZGV2KSAhPSBDVURBX1NVQ0NFU1MpIHsKKyAgICBHU1RfV0FSTklORyAoIkZhaWxlZCB0byBjcmVhdGUgQ1VEQSBjb250ZXh0IGZvciBjdWRhIGRldmljZSAlZCIsIGN1ZGFfZGV2KTsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIGlmIChjdUN0eFBvcEN1cnJlbnQgKCZvbGRfY3R4KSAhPSBDVURBX1NVQ0NFU1MpIHsKKyAgICByZXR1cm4gTlVMTDsKKyAgfQorCisgIEdTVF9JTkZPICgiQ3JlYXRlZCBDVURBIGNvbnRleHQgJXAiLCBjdWRhX2N0eCk7CisKKyAgcmV0dXJuIGN1ZGFfY3R4OworfQorCitnYm9vbGVhbgorZ3N0X252ZW5jX2Rlc3Ryb3lfY3VkYV9jb250ZXh0IChDVWNvbnRleHQgY3R4KQoreworICBHU1RfSU5GTyAoIkRlc3Ryb3lpbmcgQ1VEQSBjb250ZXh0ICVwIiwgY3R4KTsKKyAgcmV0dXJuIChjdUN0eERlc3Ryb3kgKGN0eCkgPT0gQ1VEQV9TVUNDRVNTKTsKK30KKworc3RhdGljIGdib29sZWFuCitwbHVnaW5faW5pdCAoR3N0UGx1Z2luICogcGx1Z2luKQoreworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X252ZW5jX2RlYnVnLCAibnZlbmMiLCAwLCAiTnZpZGlhIE5WRU5DIGVuY29kZXIiKTsKKworICBudmVuY19hcGkudmVyc2lvbiA9IE5WX0VOQ09ERV9BUElfRlVOQ1RJT05fTElTVF9WRVI7CisgIGlmIChOdkVuY29kZUFQSUNyZWF0ZUluc3RhbmNlICgmbnZlbmNfYXBpKSAhPSBOVl9FTkNfU1VDQ0VTUykgeworICAgIEdTVF9FUlJPUiAoIkZhaWxlZCB0byBnZXQgTlZFbmNvZGVBUEkgZnVuY3Rpb24gdGFibGUhIik7CisgIH0gZWxzZSB7CisgICAgR1NUX0lORk8gKCJDcmVhdGVkIE5WRW5jb2RlQVBJIGluc3RhbmNlLCBnb3QgZnVuY3Rpb24gdGFibGUiKTsKKworICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJudmgyNjRlbmMiLCBHU1RfUkFOS19QUklNQVJZICogMiwKKyAgICAgICAgZ3N0X252X2gyNjRfZW5jX2dldF90eXBlICgpKTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitHU1RfUExVR0lOX0RFRklORSAoR1NUX1ZFUlNJT05fTUFKT1IsCisgICAgR1NUX1ZFUlNJT05fTUlOT1IsCisgICAgbnZlbmMsCisgICAgIkdTdHJlYW1lciBOVkVOQyBwbHVnaW4iLAorICAgIHBsdWdpbl9pbml0LCBWRVJTSU9OLCAiTEdQTCIsIEdTVF9QQUNLQUdFX05BTUUsIEdTVF9QQUNLQUdFX09SSUdJTikKZGlmZiAtLWdpdCBhL3N5cy9udmVuYy9nc3RudmVuYy5oIGIvc3lzL252ZW5jL2dzdG52ZW5jLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRlYjM0YgotLS0gL2Rldi9udWxsCisrKyBiL3N5cy9udmVuYy9nc3RudmVuYy5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIEdTdHJlYW1lciBOVkVOQyBwbHVnaW4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDZW50cmljdWxhciBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX05WRU5DX0hfSU5DTFVERURfXworI2RlZmluZSBfX0dTVF9OVkVOQ19IX0lOQ0xVREVEX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKworI2luY2x1ZGUgPG52RW5jb2RlQVBJLmg+CisjaW5jbHVkZSA8Y3VkYS5oPgorCitHU1RfREVCVUdfQ0FURUdPUllfRVhURVJOIChnc3RfbnZlbmNfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgZ3N0X252ZW5jX2RlYnVnCisKK0NVY29udGV4dCAgICAgICAgICAgICAgIGdzdF9udmVuY19jcmVhdGVfY3VkYV9jb250ZXh0IChndWludCBkZXZpY2VfaWQpOworCitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfbnZlbmNfZGVzdHJveV9jdWRhX2NvbnRleHQgKENVY29udGV4dCBjdHgpOworCitnYm9vbGVhbiAgICAgICAgICAgICAgICBnc3RfbnZlbmNfY21wX2d1aWQgKEdVSUQgZzEsIEdVSUQgZzIpOworCitOVl9FTkNfQlVGRkVSX0ZPUk1BVCAgICBnc3RfbnZlbmNfZ2V0X252X2J1ZmZlcl9mb3JtYXQgKEdzdFZpZGVvRm9ybWF0IGZtdCk7CisKKyNlbmRpZiAvKiBfX0dTVF9OVkVOQ19IX0lOQ0xVREVEX18gKi8KZGlmZiAtLWdpdCBhL3N5cy9udmVuYy9nc3RudmgyNjRlbmMuYyBiL3N5cy9udmVuYy9nc3RudmgyNjRlbmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNzBlM2Y3Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL2dzdG52aDI2NGVuYy5jCkBAIC0wLDAgKzEsNjEwIEBACisvKiBHU3RyZWFtZXIgTlZFTkMgcGx1Z2luCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQ2VudHJpY3VsYXIgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyNpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSAiZ3N0bnZoMjY0ZW5jLmgiCisKKyNpbmNsdWRlIDxnc3QvcGJ1dGlscy9jb2RlYy11dGlscy5oPgorCisjaW5jbHVkZSA8c3RyaW5nLmg+CisKKyNpZiBIQVZFX0dTVF9HTAorI2luY2x1ZGUgPGN1ZGEuaD4KKyNpbmNsdWRlIDxjdWRhX3J1bnRpbWVfYXBpLmg+CisjaW5jbHVkZSA8Y3VkYV9nbF9pbnRlcm9wLmg+CisjZGVmaW5lIEdTVF9VU0VfVU5TVEFCTEVfQVBJCisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisjZW5kaWYKKworI2RlZmluZSBwYXJlbnRfY2xhc3MgZ3N0X252X2gyNjRfZW5jX3BhcmVudF9jbGFzcworR19ERUZJTkVfVFlQRSAoR3N0TnZIMjY0RW5jLCBnc3RfbnZfaDI2NF9lbmMsIEdTVF9UWVBFX05WX0JBU0VfRU5DKTsKKworLyogKklOREVOVC1PRkYqICovCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjX2ZhY3RvcnkgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTICgidmlkZW8veC1oMjY0LCAiCisgICAgICAgICJ3aWR0aCA9IChpbnQpIFsgMSwgNDA5NiBdLCBoZWlnaHQgPSAoaW50KSBbIDEsIDIxNjAgXSwgIgorICAgICAgICAiZnJhbWVyYXRlID0gKGZyYWN0aW9uKSBbMC8xLCBNQVhdLCAiCisgICAgICAgICJzdHJlYW0tZm9ybWF0ID0gKHN0cmluZykgYnl0ZS1zdHJlYW0sICIgLy8gVE9ETzogYXZjIHN1cHBvcnQKKyAgICAgICAgImFsaWdubWVudCA9IChzdHJpbmcpIGF1LCAiCisgICAgICAgICJwcm9maWxlID0gKHN0cmluZykgeyBoaWdoLCBtYWluLCBiYXNlbGluZSB9IikgLy8gVE9ETzogYSBjb3VwbGUgb2Ygb3RoZXJzCisgICAgKTsKKy8qICpJTkRFTlQtT04qICovCisKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfaDI2NF9lbmNfb3BlbiAoR3N0VmlkZW9FbmNvZGVyICogZW5jKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfaDI2NF9lbmNfY2xvc2UgKEdzdFZpZGVvRW5jb2RlciAqIGVuYyk7CitzdGF0aWMgR3N0Q2FwcyAqZ3N0X252X2gyNjRfZW5jX2dldGNhcHMgKEdzdFZpZGVvRW5jb2RlciAqIGVuYywKKyAgICBHc3RDYXBzICogZmlsdGVyKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfbnZfaDI2NF9lbmNfc2V0X3NyY19jYXBzIChHc3ROdkJhc2VFbmMgKiBudmVuYywKKyAgICBHc3RWaWRlb0NvZGVjU3RhdGUgKiBzdGF0ZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X252X2gyNjRfZW5jX2luaXRpYWxpemVfZW5jb2RlciAoR3N0TnZCYXNlRW5jICogbnZlbmMsCisgICAgR3N0VmlkZW9Db2RlY1N0YXRlICogb2xkX3N0YXRlLCBHc3RWaWRlb0NvZGVjU3RhdGUgKiBzdGF0ZSk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X252X2gyNjRfZW5jX3NldF9waWNfcGFyYW1zIChHc3ROdkJhc2VFbmMgKiBudmVuYywKKyAgICBHc3RWaWRlb0NvZGVjRnJhbWUgKiBmcmFtZSwgTlZfRU5DX1BJQ19QQVJBTVMgKiBwaWNfcGFyYW1zKTsKK3N0YXRpYyB2b2lkIGdzdF9udl9oMjY0X2VuY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgdm9pZCBnc3RfbnZfaDI2NF9lbmNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpOworc3RhdGljIHZvaWQgZ3N0X252X2gyNjRfZW5jX2ZpbmFsaXplIChHT2JqZWN0ICogb2JqKTsKKworc3RhdGljIHZvaWQKK2dzdF9udl9oMjY0X2VuY19jbGFzc19pbml0IChHc3ROdkgyNjRFbmNDbGFzcyAqIGtsYXNzKQoreworICBHT2JqZWN0Q2xhc3MgKmdvYmplY3RfY2xhc3MgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworICBHc3RFbGVtZW50Q2xhc3MgKmVsZW1lbnRfY2xhc3MgPSBHU1RfRUxFTUVOVF9DTEFTUyAoa2xhc3MpOworICBHc3RWaWRlb0VuY29kZXJDbGFzcyAqdmlkZW9lbmNfY2xhc3MgPSBHU1RfVklERU9fRU5DT0RFUl9DTEFTUyAoa2xhc3MpOworICBHc3ROdkJhc2VFbmNDbGFzcyAqbnZlbmNfY2xhc3MgPSBHU1RfTlZfQkFTRV9FTkNfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfbnZfaDI2NF9lbmNfc2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPSBnc3RfbnZfaDI2NF9lbmNfZ2V0X3Byb3BlcnR5OworICBnb2JqZWN0X2NsYXNzLT5maW5hbGl6ZSA9IGdzdF9udl9oMjY0X2VuY19maW5hbGl6ZTsKKworICB2aWRlb2VuY19jbGFzcy0+b3BlbiA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbnZfaDI2NF9lbmNfb3Blbik7CisgIHZpZGVvZW5jX2NsYXNzLT5jbG9zZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfbnZfaDI2NF9lbmNfY2xvc2UpOworCisgIHZpZGVvZW5jX2NsYXNzLT5nZXRjYXBzID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF9udl9oMjY0X2VuY19nZXRjYXBzKTsKKworICBudmVuY19jbGFzcy0+Y29kZWNfaWQgPSBOVl9FTkNfQ09ERUNfSDI2NF9HVUlEOworICBudmVuY19jbGFzcy0+aW5pdGlhbGl6ZV9lbmNvZGVyID0gZ3N0X252X2gyNjRfZW5jX2luaXRpYWxpemVfZW5jb2RlcjsKKyAgbnZlbmNfY2xhc3MtPnNldF9zcmNfY2FwcyA9IGdzdF9udl9oMjY0X2VuY19zZXRfc3JjX2NhcHM7CisgIG52ZW5jX2NsYXNzLT5zZXRfcGljX3BhcmFtcyA9IGdzdF9udl9oMjY0X2VuY19zZXRfcGljX3BhcmFtczsKKworICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAorICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmc3JjX2ZhY3RvcnkpKTsKKworICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLAorICAgICAgIk5WRU5DIEguMjY0IFZpZGVvIEVuY29kZXIiLAorICAgICAgIkNvZGVjL0VuY29kZXIvVmlkZW8iLAorICAgICAgIkVuY29kZSBILjI2NCB2aWRlbyBzdHJlYW1zIHVzaW5nIE5WSURJQSdzIGhhcmR3YXJlLWFjY2VsZXJhdGVkIE5WRU5DIGVuY29kZXIgQVBJIiwKKyAgICAgICJUaW0tUGhpbGlwcCBNw7xsbGVyIDx0aW1AY2VudHJpY3VsYXIuY29tPlxuIgorICAgICAgIk1hdHRoZXcgV2F0ZXJzIDxtYXR0aGV3QGNlbnRyaWN1bGFyLmNvbT4iKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9udl9oMjY0X2VuY19pbml0IChHc3ROdkgyNjRFbmMgKiBudmVuYykKK3sKK30KKworc3RhdGljIHZvaWQKK2dzdF9udl9oMjY0X2VuY19maW5hbGl6ZSAoR09iamVjdCAqIG9iaikKK3sKKyAgR19PQkpFQ1RfQ0xBU1MgKGdzdF9udl9oMjY0X2VuY19wYXJlbnRfY2xhc3MpLT5maW5hbGl6ZSAob2JqKTsKK30KKworc3RhdGljIGdib29sZWFuCitfZ2V0X3N1cHBvcnRlZF9wcm9maWxlcyAoR3N0TnZIMjY0RW5jICogbnZlbmMpCit7CisgIE5WRU5DU1RBVFVTIG52X3JldDsKKyAgR1VJRCBwcm9maWxlX2d1aWRzWzY0XTsKKyAgR1ZhbHVlIGxpc3QgPSBHX1ZBTFVFX0lOSVQ7CisgIEdWYWx1ZSB2YWwgPSBHX1ZBTFVFX0lOSVQ7CisgIGd1aW50IGksIG4sIG5fcHJvZmlsZXM7CisKKyAgbnZfcmV0ID0KKyAgICAgIE52RW5jR2V0RW5jb2RlUHJvZmlsZUdVSURDb3VudCAoR1NUX05WX0JBU0VfRU5DIChudmVuYyktPmVuY29kZXIsCisgICAgICBOVl9FTkNfQ09ERUNfSDI2NF9HVUlELCAmbik7CisgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpCisgICAgcmV0dXJuIEZBTFNFOworCisgIG52X3JldCA9CisgICAgICBOdkVuY0dldEVuY29kZVByb2ZpbGVHVUlEcyAoR1NUX05WX0JBU0VfRU5DIChudmVuYyktPmVuY29kZXIsCisgICAgICBOVl9FTkNfQ09ERUNfSDI2NF9HVUlELCBwcm9maWxlX2d1aWRzLCBHX05fRUxFTUVOVFMgKHByb2ZpbGVfZ3VpZHMpLCAmbik7CisgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpCisgICAgcmV0dXJuIEZBTFNFOworCisgIG5fcHJvZmlsZXMgPSAwOworICBnX3ZhbHVlX2luaXQgKCZsaXN0LCBHU1RfVFlQRV9MSVNUKTsKKyAgZm9yIChpID0gMDsgaSA8IG47IGkrKykgeworICAgIGdfdmFsdWVfaW5pdCAoJnZhbCwgR19UWVBFX1NUUklORyk7CisKKyAgICBpZiAoZ3N0X252ZW5jX2NtcF9ndWlkIChwcm9maWxlX2d1aWRzW2ldLAorICAgICAgICAgICAgTlZfRU5DX0gyNjRfUFJPRklMRV9CQVNFTElORV9HVUlEKSkgeworICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgImJhc2VsaW5lIik7CisgICAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKCZsaXN0LCAmdmFsKTsKKyAgICAgIG5fcHJvZmlsZXMrKzsKKyAgICB9IGVsc2UgaWYgKGdzdF9udmVuY19jbXBfZ3VpZCAocHJvZmlsZV9ndWlkc1tpXSwKKyAgICAgICAgICAgIE5WX0VOQ19IMjY0X1BST0ZJTEVfTUFJTl9HVUlEKSkgeworICAgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJnZhbCwgIm1haW4iKTsKKyAgICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAoJmxpc3QsICZ2YWwpOworICAgICAgbl9wcm9maWxlcysrOworICAgIH0gZWxzZSBpZiAoZ3N0X252ZW5jX2NtcF9ndWlkIChwcm9maWxlX2d1aWRzW2ldLAorICAgICAgICAgICAgTlZfRU5DX0gyNjRfUFJPRklMRV9ISUdIX0dVSUQpKSB7CisgICAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAiaGlnaCIpOworICAgICAgZ3N0X3ZhbHVlX2xpc3RfYXBwZW5kX3ZhbHVlICgmbGlzdCwgJnZhbCk7CisgICAgICBuX3Byb2ZpbGVzKys7CisgICAgfQorICAgIC8qIFRPRE86IG1hcCBISUdIXzQ0NCwgU1RFUkVPLCBDT05TVFJBSU5FRF9ISUdILCBTVkNfVEVNUE9SQUxfU0NBTEFCSUxJVFkgKi8KKworICAgIGdfdmFsdWVfdW5zZXQgKCZ2YWwpOworICB9CisKKyAgaWYgKG5fcHJvZmlsZXMgPT0gMCkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgR1NUX09CSkVDVF9MT0NLIChudmVuYyk7CisgIGdfZnJlZSAobnZlbmMtPnN1cHBvcnRlZF9wcm9maWxlcyk7CisgIG52ZW5jLT5zdXBwb3J0ZWRfcHJvZmlsZXMgPSBnX21lbWR1cCAoJmxpc3QsIHNpemVvZiAoR1ZhbHVlKSk7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChudmVuYyk7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2gyNjRfZW5jX29wZW4gKEdzdFZpZGVvRW5jb2RlciAqIGVuYykKK3sKKyAgR3N0TnZIMjY0RW5jICpudmVuYyA9IEdTVF9OVl9IMjY0X0VOQyAoZW5jKTsKKworICBpZiAoIUdTVF9WSURFT19FTkNPREVSX0NMQVNTIChnc3RfbnZfaDI2NF9lbmNfcGFyZW50X2NsYXNzKS0+b3BlbiAoZW5jKSkKKyAgICByZXR1cm4gRkFMU0U7CisKKyAgLyogQ2hlY2sgaWYgSC4yNjQgaXMgc3VwcG9ydGVkICovCisgIHsKKyAgICB1aW50MzJfdCBpLCBudW0gPSAwOworICAgIEdVSUQgZ3VpZHNbMTZdOworCisgICAgTnZFbmNHZXRFbmNvZGVHVUlEcyAoR1NUX05WX0JBU0VfRU5DIChudmVuYyktPmVuY29kZXIsIGd1aWRzLAorICAgICAgICBHX05fRUxFTUVOVFMgKGd1aWRzKSwgJm51bSk7CisKKyAgICBmb3IgKGkgPSAwOyBpIDwgbnVtOyArK2kpIHsKKyAgICAgIGlmIChnc3RfbnZlbmNfY21wX2d1aWQgKGd1aWRzW2ldLCBOVl9FTkNfQ09ERUNfSDI2NF9HVUlEKSkKKyAgICAgICAgYnJlYWs7CisgICAgfQorICAgIEdTVF9JTkZPX09CSkVDVCAoZW5jLCAiSC4yNjQgZW5jb2RpbmcgJXNzdXBwb3J0ZWQiLCAoaSA9PSBudW0pID8gInVuIiA6ICIiKTsKKyAgICBpZiAoaSA9PSBudW0pIHsKKyAgICAgIGdzdF9udl9oMjY0X2VuY19jbG9zZSAoZW5jKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0KKworICAvKiBxdWVyeSBzdXBwb3J0ZWQgaW5wdXQgZm9ybWF0cyAqLworICBpZiAoIV9nZXRfc3VwcG9ydGVkX3Byb2ZpbGVzIChudmVuYykpIHsKKyAgICBHU1RfV0FSTklOR19PQkpFQ1QgKG52ZW5jLCAiTm8gc3VwcG9ydGVkIGVuY29kaW5nIHByb2ZpbGVzIik7CisgICAgZ3N0X252X2gyNjRfZW5jX2Nsb3NlIChlbmMpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9oMjY0X2VuY19jbG9zZSAoR3N0VmlkZW9FbmNvZGVyICogZW5jKQoreworICBHc3ROdkgyNjRFbmMgKm52ZW5jID0gR1NUX05WX0gyNjRfRU5DIChlbmMpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAobnZlbmMpOworICBnX2ZyZWUgKG52ZW5jLT5zdXBwb3J0ZWRfcHJvZmlsZXMpOworICBudmVuYy0+c3VwcG9ydGVkX3Byb2ZpbGVzID0gTlVMTDsKKyAgR1NUX09CSkVDVF9VTkxPQ0sgKG52ZW5jKTsKKworICByZXR1cm4gR1NUX1ZJREVPX0VOQ09ERVJfQ0xBU1MgKGdzdF9udl9oMjY0X2VuY19wYXJlbnRfY2xhc3MpLT5jbG9zZSAoZW5jKTsKK30KKworc3RhdGljIEdWYWx1ZSAqCitfZ2V0X2ludGVybGFjZV9tb2RlcyAoR3N0TnZIMjY0RW5jICogbnZlbmMpCit7CisgIE5WX0VOQ19DQVBTX1BBUkFNIGNhcHNfcGFyYW0gPSB7IDAsIH07CisgIEdWYWx1ZSAqbGlzdCA9IGdfbmV3MCAoR1ZhbHVlLCAxKTsKKyAgR1ZhbHVlIHZhbCA9IEdfVkFMVUVfSU5JVDsKKworICBnX3ZhbHVlX2luaXQgKGxpc3QsIEdTVF9UWVBFX0xJU1QpOworICBnX3ZhbHVlX2luaXQgKCZ2YWwsIEdfVFlQRV9TVFJJTkcpOworCisgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJwcm9ncmVzc2l2ZSIpOworICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKGxpc3QsICZ2YWwpOworCisgIGNhcHNfcGFyYW0udmVyc2lvbiA9IE5WX0VOQ19DQVBTX1BBUkFNX1ZFUjsKKyAgY2Fwc19wYXJhbS5jYXBzVG9RdWVyeSA9IE5WX0VOQ19DQVBTX1NVUFBPUlRfRklFTERfRU5DT0RJTkc7CisKKyAgaWYgKE52RW5jR2V0RW5jb2RlQ2FwcyAoR1NUX05WX0JBU0VfRU5DIChudmVuYyktPmVuY29kZXIsCisgICAgICAgICAgTlZfRU5DX0NPREVDX0gyNjRfR1VJRCwgJmNhcHNfcGFyYW0sCisgICAgICAgICAgJm52ZW5jLT5pbnRlcmxhY2VfbW9kZXMpICE9IE5WX0VOQ19TVUNDRVNTKQorICAgIG52ZW5jLT5pbnRlcmxhY2VfbW9kZXMgPSAwOworCisgIGlmIChudmVuYy0+aW50ZXJsYWNlX21vZGVzID49IDEpIHsKKyAgICBnX3ZhbHVlX3NldF9zdGF0aWNfc3RyaW5nICgmdmFsLCAiaW50ZXJsZWF2ZWQiKTsKKyAgICBnc3RfdmFsdWVfbGlzdF9hcHBlbmRfdmFsdWUgKGxpc3QsICZ2YWwpOworICAgIGdfdmFsdWVfc2V0X3N0YXRpY19zdHJpbmcgKCZ2YWwsICJtaXhlZCIpOworICAgIGdzdF92YWx1ZV9saXN0X2FwcGVuZF92YWx1ZSAobGlzdCwgJnZhbCk7CisgIH0KKyAgLyogVE9ETzogZmlndXJlIG91dCB3aGF0IG52ZW5jIGZyYW1lIGJhc2VkIGludGVybGFjaW5nIG1lYW5zIGluIGdzdCB0ZXJtcyAqLworCisgIHJldHVybiBsaXN0OworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitnc3RfbnZfaDI2NF9lbmNfZ2V0Y2FwcyAoR3N0VmlkZW9FbmNvZGVyICogZW5jLCBHc3RDYXBzICogZmlsdGVyKQoreworICBHc3ROdkgyNjRFbmMgKm52ZW5jID0gR1NUX05WX0gyNjRfRU5DIChlbmMpOworICBHc3RDYXBzICpzdXBwb3J0ZWRfaW5jYXBzID0gTlVMTDsKKyAgR3N0Q2FwcyAqdGVtcGxhdGVfY2FwcywgKmNhcHM7CisgIEdWYWx1ZSAqaW5wdXRfZm9ybWF0cyA9IEdTVF9OVl9CQVNFX0VOQyAoZW5jKS0+aW5wdXRfZm9ybWF0czsKKworICBHU1RfT0JKRUNUX0xPQ0sgKG52ZW5jKTsKKworICBpZiAoaW5wdXRfZm9ybWF0cyAhPSBOVUxMKSB7CisgICAgR1ZhbHVlICp2YWw7CisKKyAgICB0ZW1wbGF0ZV9jYXBzID0gZ3N0X3BhZF9nZXRfcGFkX3RlbXBsYXRlX2NhcHMgKGVuYy0+c2lua3BhZCk7CisgICAgc3VwcG9ydGVkX2luY2FwcyA9IGdzdF9jYXBzX2NvcHkgKHRlbXBsYXRlX2NhcHMpOworICAgIGdzdF9jYXBzX3NldF92YWx1ZSAoc3VwcG9ydGVkX2luY2FwcywgImZvcm1hdCIsIGlucHV0X2Zvcm1hdHMpOworCisgICAgdmFsID0gX2dldF9pbnRlcmxhY2VfbW9kZXMgKG52ZW5jKTsKKyAgICBnc3RfY2Fwc19zZXRfdmFsdWUgKHN1cHBvcnRlZF9pbmNhcHMsICJpbnRlcmxhY2UtbW9kZSIsIHZhbCk7CisgICAgZ19mcmVlICh2YWwpOworCisgICAgR1NUX0xPR19PQkpFQ1QgKGVuYywgImNvZGVjIGlucHV0IGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIHN1cHBvcnRlZF9pbmNhcHMpOworICAgIEdTVF9MT0dfT0JKRUNUIChlbmMsICIgICB0ZW1wbGF0ZSBjYXBzICUiIEdTVF9QVFJfRk9STUFULCB0ZW1wbGF0ZV9jYXBzKTsKKyAgICBjYXBzID0gZ3N0X2NhcHNfaW50ZXJzZWN0ICh0ZW1wbGF0ZV9jYXBzLCBzdXBwb3J0ZWRfaW5jYXBzKTsKKyAgICBnc3RfY2Fwc191bnJlZiAodGVtcGxhdGVfY2Fwcyk7CisgICAgZ3N0X2NhcHNfdW5yZWYgKHN1cHBvcnRlZF9pbmNhcHMpOworICAgIHN1cHBvcnRlZF9pbmNhcHMgPSBjYXBzOworICAgIEdTVF9MT0dfT0JKRUNUIChlbmMsICIgIHN1cHBvcnRlZCBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBzdXBwb3J0ZWRfaW5jYXBzKTsKKyAgfQorCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChudmVuYyk7CisKKyAgY2FwcyA9IGdzdF92aWRlb19lbmNvZGVyX3Byb3h5X2dldGNhcHMgKGVuYywgc3VwcG9ydGVkX2luY2FwcywgZmlsdGVyKTsKKworICBpZiAoc3VwcG9ydGVkX2luY2FwcykKKyAgICBnc3RfY2Fwc191bnJlZiAoc3VwcG9ydGVkX2luY2Fwcyk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAobnZlbmMsICIgIHJldHVybmluZyBjYXBzICUiIEdTVF9QVFJfRk9STUFULCBjYXBzKTsKKworICByZXR1cm4gY2FwczsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfbnZfaDI2NF9lbmNfc2V0X3Byb2ZpbGVfYW5kX2xldmVsIChHc3ROdkgyNjRFbmMgKiBudmVuYywgR3N0Q2FwcyAqIGNhcHMpCit7CisjZGVmaW5lIE5fQllURVNfU1BTIDEyOAorICBndWludDggc3BzW05fQllURVNfU1BTXTsKKyAgTlZfRU5DX1NFUVVFTkNFX1BBUkFNX1BBWUxPQUQgc3BwID0geyAwLCB9OworICBHc3RTdHJ1Y3R1cmUgKnM7CisgIGNvbnN0IGdjaGFyICpwcm9maWxlOworICBHc3RDYXBzICphbGxvd2VkX2NhcHM7CisgIEdzdFN0cnVjdHVyZSAqczI7CisgIGNvbnN0IGdjaGFyICphbGxvd2VkX3Byb2ZpbGU7CisgIE5WRU5DU1RBVFVTIG52X3JldDsKKyAgZ3VpbnQzMiBzZXFfc2l6ZTsKKworICBzcHAudmVyc2lvbiA9IE5WX0VOQ19TRVFVRU5DRV9QQVJBTV9QQVlMT0FEX1ZFUjsKKyAgc3BwLmluQnVmZmVyU2l6ZSA9IE5fQllURVNfU1BTOworICBzcHAuc3BzSWQgPSAwOworICBzcHAucHBzSWQgPSAwOworICBzcHAuc3BzcHBzQnVmZmVyID0gJnNwczsKKyAgc3BwLm91dFNQU1BQU1BheWxvYWRTaXplID0gJnNlcV9zaXplOworICBudl9yZXQgPSBOdkVuY0dldFNlcXVlbmNlUGFyYW1zIChHU1RfTlZfQkFTRV9FTkMgKG52ZW5jKS0+ZW5jb2RlciwgJnNwcCk7CisgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAobnZlbmMsIFNUUkVBTSwgRU5DT0RFLCAoIkVuY29kZSBoZWFkZXIgZmFpbGVkLiIpLAorICAgICAgICAoIk52RW5jR2V0U2VxdWVuY2VQYXJhbXMgcmV0dXJuIGNvZGU9JWQiLCBudl9yZXQpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBpZiAoc2VxX3NpemUgPCA4KSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKG52ZW5jLCBTVFJFQU0sIEVOQ09ERSwgKCJFbmNvZGUgaGVhZGVyIGZhaWxlZC4iKSwKKyAgICAgICAgKCJOdkVuY0dldFNlcXVlbmNlUGFyYW1zIHJldHVybmVkIGluY29tcGxldGUgZGF0YSIpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICAvKiBza2lwIG5hbCBoZWFkZXIgYW5kIGlkZW50aWZpZXIgKi8KKyAgZ3N0X2NvZGVjX3V0aWxzX2gyNjRfY2Fwc19zZXRfbGV2ZWxfYW5kX3Byb2ZpbGUgKGNhcHMsICZzcHNbNV0sIDMpOworCisgIC8qIENvbnN0cmFpbmVkIGJhc2VsaW5lIGlzIGEgc3RyaWN0IHN1YnNldCBvZiBiYXNlbGluZS4gSWYgZG93bnN0cmVhbQorICAgKiB3YW50ZWQgYmFzZWxpbmUgYW5kIHdlIHByb2R1Y2VkIGNvbnN0cmFpbmVkIGJhc2VsaW5lLCB3ZSBjYW4ganVzdAorICAgKiBzZXQgdGhlIHByb2ZpbGUgdG8gYmFzZWxpbmUgaW4gdGhlIGNhcHMgdG8gbWFrZSBuZWdvdGlhdGlvbiBoYXBweS4KKyAgICogU2FtZSBnb2VzIGZvciBiYXNlbGluZSBhcyBzdWJzZXQgb2YgbWFpbiBwcm9maWxlIGFuZCBtYWluIGFzIGEgc3Vic2V0CisgICAqIG9mIGhpZ2ggcHJvZmlsZS4KKyAgICovCisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgcHJvZmlsZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAocywgInByb2ZpbGUiKTsKKworICBhbGxvd2VkX2NhcHMgPSBnc3RfcGFkX2dldF9hbGxvd2VkX2NhcHMgKEdTVF9WSURFT19FTkNPREVSX1NSQ19QQUQgKG52ZW5jKSk7CisKKyAgaWYgKGFsbG93ZWRfY2FwcyA9PSBOVUxMKQorICAgIGdvdG8gbm9fcGVlcjsKKworICBpZiAoIWdzdF9jYXBzX2Nhbl9pbnRlcnNlY3QgKGFsbG93ZWRfY2FwcywgY2FwcykpIHsKKyAgICBhbGxvd2VkX2NhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChhbGxvd2VkX2NhcHMpOworICAgIGFsbG93ZWRfY2FwcyA9IGdzdF9jYXBzX3RydW5jYXRlIChhbGxvd2VkX2NhcHMpOworICAgIHMyID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoYWxsb3dlZF9jYXBzLCAwKTsKKyAgICBnc3Rfc3RydWN0dXJlX2ZpeGF0ZV9maWVsZF9zdHJpbmcgKHMyLCAicHJvZmlsZSIsIHByb2ZpbGUpOworICAgIGFsbG93ZWRfcHJvZmlsZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X3N0cmluZyAoczIsICJwcm9maWxlIik7CisgICAgaWYgKCFzdHJjbXAgKGFsbG93ZWRfcHJvZmlsZSwgImhpZ2giKSkgeworICAgICAgaWYgKCFzdHJjbXAgKHByb2ZpbGUsICJjb25zdHJhaW5lZC1iYXNlbGluZSIpCisgICAgICAgICAgfHwgIXN0cmNtcCAocHJvZmlsZSwgImJhc2VsaW5lIikgfHwgIXN0cmNtcCAocHJvZmlsZSwgIm1haW4iKSkgeworICAgICAgICBnc3Rfc3RydWN0dXJlX3NldCAocywgInByb2ZpbGUiLCBHX1RZUEVfU1RSSU5HLCAiaGlnaCIsIE5VTEwpOworICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAiZG93bnN0cmVhbSByZXF1ZXN0ZWQgaGlnaCBwcm9maWxlLCBidXQgIgorICAgICAgICAgICAgImVuY29kZXIgd2lsbCBub3cgb3V0cHV0ICVzIHByb2ZpbGUgKHdoaWNoIGlzIGEgc3Vic2V0KSwgZHVlICIKKyAgICAgICAgICAgICJ0byBob3cgaXQncyBiZWVuIGNvbmZpZ3VyZWQiLCBwcm9maWxlKTsKKyAgICAgIH0KKyAgICB9IGVsc2UgaWYgKCFzdHJjbXAgKGFsbG93ZWRfcHJvZmlsZSwgIm1haW4iKSkgeworICAgICAgaWYgKCFzdHJjbXAgKHByb2ZpbGUsICJjb25zdHJhaW5lZC1iYXNlbGluZSIpCisgICAgICAgICAgfHwgIXN0cmNtcCAocHJvZmlsZSwgImJhc2VsaW5lIikpIHsKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHMsICJwcm9maWxlIiwgR19UWVBFX1NUUklORywgIm1haW4iLCBOVUxMKTsKKyAgICAgICAgR1NUX0lORk9fT0JKRUNUIChudmVuYywgImRvd25zdHJlYW0gcmVxdWVzdGVkIG1haW4gcHJvZmlsZSwgYnV0ICIKKyAgICAgICAgICAgICJlbmNvZGVyIHdpbGwgbm93IG91dHB1dCAlcyBwcm9maWxlICh3aGljaCBpcyBhIHN1YnNldCksIGR1ZSAiCisgICAgICAgICAgICAidG8gaG93IGl0J3MgYmVlbiBjb25maWd1cmVkIiwgcHJvZmlsZSk7CisgICAgICB9CisgICAgfSBlbHNlIGlmICghc3RyY21wIChhbGxvd2VkX3Byb2ZpbGUsICJiYXNlbGluZSIpKSB7CisgICAgICBpZiAoIXN0cmNtcCAocHJvZmlsZSwgImNvbnN0cmFpbmVkLWJhc2VsaW5lIikpCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzLCAicHJvZmlsZSIsIEdfVFlQRV9TVFJJTkcsICJiYXNlbGluZSIsIE5VTEwpOworICAgIH0KKyAgfQorICBnc3RfY2Fwc191bnJlZiAoYWxsb3dlZF9jYXBzKTsKKworbm9fcGVlcjoKKworICByZXR1cm4gVFJVRTsKKworI3VuZGVmIE5fQllURVNfU1BTCit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X252X2gyNjRfZW5jX3NldF9zcmNfY2FwcyAoR3N0TnZCYXNlRW5jICogbnZlbmMsIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIHN0YXRlKQoreworICBHc3ROdkgyNjRFbmMgKmgyNjRlbmMgPSBHU1RfTlZfSDI2NF9FTkMgKG52ZW5jKTsKKyAgR3N0VmlkZW9Db2RlY1N0YXRlICpvdXRfc3RhdGU7CisgIEdzdFN0cnVjdHVyZSAqczsKKyAgR3N0Q2FwcyAqb3V0X2NhcHM7CisKKyAgb3V0X2NhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgidmlkZW8veC1oMjY0Iik7CisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChvdXRfY2FwcywgMCk7CisKKyAgLyogVE9ETzogYWRkIHN1cHBvcnQgZm9yIGF2YyBmb3JtYXQgYXMgd2VsbCAqLworICBnc3Rfc3RydWN0dXJlX3NldCAocywgInN0cmVhbS1mb3JtYXQiLCBHX1RZUEVfU1RSSU5HLCAiYnl0ZS1zdHJlYW0iLAorICAgICAgImFsaWdubWVudCIsIEdfVFlQRV9TVFJJTkcsICJhdSIsIE5VTEwpOworCisgIGlmICghZ3N0X252X2gyNjRfZW5jX3NldF9wcm9maWxlX2FuZF9sZXZlbCAoaDI2NGVuYywgb3V0X2NhcHMpKSB7CisgICAgZ3N0X2NhcHNfdW5yZWYgKG91dF9jYXBzKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKworICBvdXRfc3RhdGUgPSBnc3RfdmlkZW9fZW5jb2Rlcl9zZXRfb3V0cHV0X3N0YXRlIChHU1RfVklERU9fRU5DT0RFUiAobnZlbmMpLAorICAgICAgb3V0X2NhcHMsIHN0YXRlKTsKKworICBHU1RfSU5GT19PQkpFQ1QgKG52ZW5jLCAib3V0cHV0IGNhcHM6ICUiIEdTVF9QVFJfRk9STUFULCBvdXRfc3RhdGUtPmNhcHMpOworCisgIC8qIGVuY29kZXIgd2lsbCBrZWVwIGl0IGFyb3VuZCBmb3IgdXMgKi8KKyAgZ3N0X3ZpZGVvX2NvZGVjX3N0YXRlX3VucmVmIChvdXRfc3RhdGUpOworCisgIC8qIFRPRE86IHdvdWxkIGJlIG5pY2UgdG8gYWxzbyBzZW5kIHNvbWUgdGFncyB3aXRoIHRoZSBjb2RlYyBuYW1lICovCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9oMjY0X2VuY19pbml0aWFsaXplX2VuY29kZXIgKEdzdE52QmFzZUVuYyAqIG52ZW5jLAorICAgIEdzdFZpZGVvQ29kZWNTdGF0ZSAqIG9sZF9zdGF0ZSwgR3N0VmlkZW9Db2RlY1N0YXRlICogc3RhdGUpCit7CisgIEdzdE52SDI2NEVuYyAqaDI2NGVuYyA9IEdTVF9OVl9IMjY0X0VOQyAobnZlbmMpOworICBOVl9FTkNfUkVDT05GSUdVUkVfUEFSQU1TIHJlY29uZmlndXJlX3BhcmFtcyA9IHsgMCwgfTsKKyAgTlZfRU5DX0lOSVRJQUxJWkVfUEFSQU1TIGluaXRfcGFyYW1zID0geyAwLCB9OworICBOVl9FTkNfSU5JVElBTElaRV9QQVJBTVMgKnBhcmFtczsKKyAgTlZfRU5DX1BSRVNFVF9DT05GSUcgcHJlc2V0X2NvbmZpZyA9IHsgMCwgfTsKKyAgTlZFTkNTVEFUVVMgbnZfcmV0OworICBHc3RWaWRlb0luZm8gKmluZm8gPSAmc3RhdGUtPmluZm87CisgIEdzdENhcHMgKmFsbG93ZWRfY2FwcywgKnRlbXBsYXRlX2NhcHM7CisgIEdVSUQgc2VsZWN0ZWRfcHJvZmlsZSA9IE5WX0VOQ19DT0RFQ19QUk9GSUxFX0FVVE9TRUxFQ1RfR1VJRDsKKyAgaW50IGxldmVsX2lkYyA9IE5WX0VOQ19MRVZFTF9BVVRPU0VMRUNUOworCisgIC8qIFRPRE86IHN1cHBvcnQgcmVjb25maWd1cmF0aW9uICovCisgIGlmIChvbGRfc3RhdGUpIHsKKyAgICByZWNvbmZpZ3VyZV9wYXJhbXMudmVyc2lvbiA9IE5WX0VOQ19SRUNPTkZJR1VSRV9QQVJBTVNfVkVSOworICAgIHBhcmFtcyA9ICZyZWNvbmZpZ3VyZV9wYXJhbXMucmVJbml0RW5jb2RlUGFyYW1zOworICB9IGVsc2UgeworICAgIHBhcmFtcyA9ICZpbml0X3BhcmFtczsKKyAgfQorCisgIHRlbXBsYXRlX2NhcHMgPSBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXRfY2FwcyAoJnNyY19mYWN0b3J5KTsKKyAgYWxsb3dlZF9jYXBzID0gZ3N0X3BhZF9nZXRfYWxsb3dlZF9jYXBzIChHU1RfVklERU9fRU5DT0RFUl9TUkNfUEFEIChoMjY0ZW5jKSk7CisKKyAgaWYgKHRlbXBsYXRlX2NhcHMgPT0gYWxsb3dlZF9jYXBzKSB7CisgICAgR1NUX0lORk9fT0JKRUNUIChoMjY0ZW5jLCAiZG93bnN0cmVhbSBoYXMgQU5ZIGNhcHMiKTsKKyAgfSBlbHNlIGlmIChhbGxvd2VkX2NhcHMpIHsKKyAgICBHc3RTdHJ1Y3R1cmUgKnM7CisgICAgY29uc3QgZ2NoYXIgKnByb2ZpbGU7CisgICAgY29uc3QgZ2NoYXIgKmxldmVsOworCisgICAgaWYgKGdzdF9jYXBzX2lzX2VtcHR5IChhbGxvd2VkX2NhcHMpKSB7CisgICAgICBnc3RfY2Fwc191bnJlZiAoYWxsb3dlZF9jYXBzKTsKKyAgICAgIGdzdF9jYXBzX3VucmVmICh0ZW1wbGF0ZV9jYXBzKTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisKKyAgICBhbGxvd2VkX2NhcHMgPSBnc3RfY2Fwc19tYWtlX3dyaXRhYmxlIChhbGxvd2VkX2NhcHMpOworICAgIGFsbG93ZWRfY2FwcyA9IGdzdF9jYXBzX2ZpeGF0ZSAoYWxsb3dlZF9jYXBzKTsKKyAgICBzID0gZ3N0X2NhcHNfZ2V0X3N0cnVjdHVyZSAoYWxsb3dlZF9jYXBzLCAwKTsKKworICAgIHByb2ZpbGUgPSBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHMsICJwcm9maWxlIik7CisgICAgaWYgKHByb2ZpbGUpIHsKKyAgICAgIGlmICghc3RyY21wIChwcm9maWxlLCAiYmFzZWxpbmUiKSkgeworICAgICAgICBzZWxlY3RlZF9wcm9maWxlID0gTlZfRU5DX0gyNjRfUFJPRklMRV9CQVNFTElORV9HVUlEOworICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4IChwcm9maWxlLCAiaGlnaC00OjQ6NCIpKSB7CisgICAgICAgIHNlbGVjdGVkX3Byb2ZpbGUgPSBOVl9FTkNfSDI2NF9QUk9GSUxFX0hJR0hfNDQ0X0dVSUQ7CisgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKHByb2ZpbGUsICJoaWdoLTEwIikpIHsKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKHByb2ZpbGUsICJoaWdoLTQ6MjoyIikpIHsKKyAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgICAgICB9IGVsc2UgaWYgKGdfc3RyX2hhc19wcmVmaXggKHByb2ZpbGUsICJoaWdoIikpIHsKKyAgICAgICAgc2VsZWN0ZWRfcHJvZmlsZSA9IE5WX0VOQ19IMjY0X1BST0ZJTEVfSElHSF9HVUlEOworICAgICAgfSBlbHNlIGlmIChnX3N0cl9oYXNfcHJlZml4IChwcm9maWxlLCAibWFpbiIpKSB7CisgICAgICAgIHNlbGVjdGVkX3Byb2ZpbGUgPSBOVl9FTkNfSDI2NF9QUk9GSUxFX01BSU5fR1VJRDsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgfQorICAgIH0KKworICAgIGxldmVsID0gZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChzLCAibGV2ZWwiKTsKKyAgICBpZiAobGV2ZWwpCisgICAgICAvKiBtYXRjaGVzIHZhbHVlcyBzdG9yZWQgaW4gTlZfRU5DX0xFVkVMICovCisgICAgICBsZXZlbF9pZGMgPSBnc3RfY29kZWNfdXRpbHNfaDI2NF9nZXRfbGV2ZWxfaWRjIChsZXZlbCk7CisKKyAgICBnc3RfY2Fwc191bnJlZiAoYWxsb3dlZF9jYXBzKTsKKyAgfQorICBnc3RfY2Fwc191bnJlZiAodGVtcGxhdGVfY2Fwcyk7CisKKyAgcGFyYW1zLT52ZXJzaW9uID0gTlZfRU5DX0lOSVRJQUxJWkVfUEFSQU1TX1ZFUjsKKyAgcGFyYW1zLT5lbmNvZGVHVUlEID0gTlZfRU5DX0NPREVDX0gyNjRfR1VJRDsKKyAgcGFyYW1zLT5lbmNvZGVXaWR0aCA9IEdTVF9WSURFT19JTkZPX1dJRFRIIChpbmZvKTsKKyAgcGFyYW1zLT5lbmNvZGVIZWlnaHQgPSBHU1RfVklERU9fSU5GT19IRUlHSFQgKGluZm8pOworICAvKiBGSVhNRTogbWFrZSB0aGlzIGEgcHJvcGVydHkgKi8KKyAgcGFyYW1zLT5wcmVzZXRHVUlEID0gTlZfRU5DX1BSRVNFVF9IUF9HVUlEOyAgIC8vIF9ERUZBVUxUCisgIHBhcmFtcy0+ZW5hYmxlUFREID0gMTsKKyAgaWYgKCFvbGRfc3RhdGUpIHsKKyAgICAvKiB0aGlzIHNldHMgdGhlIHJlcXVpcmVkIGJ1ZmZlciBzaXplIGFuZCB0aGUgbWF4aW11bSBhbGxvd2VkIHNpemUgb24KKyAgICAgKiBzdWJzZXF1ZW50IHJlY29uZmlndXJlcyAqLworICAgIC8qIEZJWE1FOiBwcm9wZXJ0aXNlIHRoaXMgKi8KKyAgICBwYXJhbXMtPm1heEVuY29kZVdpZHRoID0gR1NUX1ZJREVPX0lORk9fV0lEVEggKGluZm8pOworICAgIHBhcmFtcy0+bWF4RW5jb2RlSGVpZ2h0ID0gR1NUX1ZJREVPX0lORk9fSEVJR0hUIChpbmZvKTsKKyAgICBnc3RfbnZfYmFzZV9lbmNfc2V0X21heF9lbmNvZGVfc2l6ZSAoR1NUX05WX0JBU0VfRU5DIChoMjY0ZW5jKSwKKyAgICAgICAgcGFyYW1zLT5tYXhFbmNvZGVXaWR0aCwgcGFyYW1zLT5tYXhFbmNvZGVIZWlnaHQpOworICB9IGVsc2UgeworICAgIGd1aW50IG1heF93aWR0aCwgbWF4X2hlaWdodDsKKworICAgIGdzdF9udl9iYXNlX2VuY19nZXRfbWF4X2VuY29kZV9zaXplIChHU1RfTlZfQkFTRV9FTkMgKGgyNjRlbmMpLAorICAgICAgICAmbWF4X3dpZHRoLCAmbWF4X2hlaWdodCk7CisKKyAgICBpZiAoR1NUX1ZJREVPX0lORk9fV0lEVEggKGluZm8pID4gbWF4X3dpZHRoCisgICAgICAgIHx8IEdTVF9WSURFT19JTkZPX0hFSUdIVCAoaW5mbykgPiBtYXhfaGVpZ2h0KSB7CisgICAgICBHU1RfRUxFTUVOVF9FUlJPUiAoaDI2NGVuYywgU1RSRUFNLCBGT1JNQVQsICgiJXMiLCAiUmVxdWVzdGVkIHN0cmVhbSAiCisgICAgICAgICAgICAgICJzaXplIGlzIGxhcmdlciB0aGFuIHRoZSBtYXhpbXVtIGNvbmZpZ3VyZWQgc2l6ZSIpLCAoTlVMTCkpOworICAgICAgcmV0dXJuIEZBTFNFOworICAgIH0KKyAgfQorCisgIHByZXNldF9jb25maWcudmVyc2lvbiA9IE5WX0VOQ19QUkVTRVRfQ09ORklHX1ZFUjsKKyAgcHJlc2V0X2NvbmZpZy5wcmVzZXRDZmcudmVyc2lvbiA9IE5WX0VOQ19DT05GSUdfVkVSOworCisgIG52X3JldCA9CisgICAgICBOdkVuY0dldEVuY29kZVByZXNldENvbmZpZyAoR1NUX05WX0JBU0VfRU5DIChoMjY0ZW5jKS0+ZW5jb2RlciwKKyAgICAgIHBhcmFtcy0+ZW5jb2RlR1VJRCwgcGFyYW1zLT5wcmVzZXRHVUlELCAmcHJlc2V0X2NvbmZpZyk7CisgIGlmIChudl9yZXQgIT0gTlZfRU5DX1NVQ0NFU1MpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoaDI2NGVuYywgTElCUkFSWSwgU0VUVElOR1MsIChOVUxMKSwKKyAgICAgICAgKCJGYWlsZWQgdG8gZ2V0IGVuY29kZSBwcmVzZXQgY29uZmlndXJhdGlvbjogJWQiLCBudl9yZXQpKTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgcGFyYW1zLT5lbmNvZGVDb25maWcgPSAmcHJlc2V0X2NvbmZpZy5wcmVzZXRDZmc7CisKKyAgLyogb3ZlcnJpZGUgc29tZSBkZWZhdWx0cyAqLworICBHU1RfTE9HX09CSkVDVCAoaDI2NGVuYywgInNldHRpbmcgcGFyYW1ldGVycyIpOworICBwcmVzZXRfY29uZmlnLnByZXNldENmZy52ZXJzaW9uID0gTlZfRU5DX0NPTkZJR19WRVI7CisgIHByZXNldF9jb25maWcucHJlc2V0Q2ZnLnByb2ZpbGVHVUlEID0gc2VsZWN0ZWRfcHJvZmlsZTsKKyAgcHJlc2V0X2NvbmZpZy5wcmVzZXRDZmcuZW5jb2RlQ29kZWNDb25maWcuaDI2NENvbmZpZy5sZXZlbCA9IGxldmVsX2lkYzsKKyAgcHJlc2V0X2NvbmZpZy5wcmVzZXRDZmcuZW5jb2RlQ29kZWNDb25maWcuaDI2NENvbmZpZy5jaHJvbWFGb3JtYXRJREMgPSAxOworICBpZiAoR1NUX1ZJREVPX0lORk9fRk9STUFUIChpbmZvKSA9PSBHU1RfVklERU9fRk9STUFUX1k0NDQpIHsKKyAgICBHU1RfREVCVUdfT0JKRUNUIChoMjY0ZW5jLCAiaGF2ZSBZNDQ0IGlucHV0LCBzZXR0aW5nIGNvbmZpZyBhY2NvcmRpbmdseSIpOworICAgIHByZXNldF9jb25maWcucHJlc2V0Q2ZnLmVuY29kZUNvZGVjQ29uZmlnLgorICAgICAgICBoMjY0Q29uZmlnLnNlcGFyYXRlQ29sb3VyUGxhbmVGbGFnID0gMTsKKyAgICBwcmVzZXRfY29uZmlnLnByZXNldENmZy5lbmNvZGVDb2RlY0NvbmZpZy5oMjY0Q29uZmlnLmNocm9tYUZvcm1hdElEQyA9IDM7CisgIH0KKworICAvKiBGSVhNRTogbWFrZSBwcm9wZXJ0eSAqLworICBwcmVzZXRfY29uZmlnLnByZXNldENmZy5lbmNvZGVDb2RlY0NvbmZpZy5oMjY0Q29uZmlnLm91dHB1dEFVRCA9IDE7CisKKyAgaWYgKEdTVF9WSURFT19JTkZPX0lTX0lOVEVSTEFDRUQgKGluZm8pKSB7CisgICAgaWYgKEdTVF9WSURFT19JTkZPX0lOVEVSTEFDRV9NT0RFIChpbmZvKSA9PQorICAgICAgICBHU1RfVklERU9fSU5URVJMQUNFX01PREVfSU5URVJMRUFWRUQKKyAgICAgICAgfHwgR1NUX1ZJREVPX0lORk9fSU5URVJMQUNFX01PREUgKGluZm8pID09CisgICAgICAgIEdTVF9WSURFT19JTlRFUkxBQ0VfTU9ERV9NSVhFRCkgeworICAgICAgcHJlc2V0X2NvbmZpZy5wcmVzZXRDZmcuZnJhbWVGaWVsZE1vZGUgPQorICAgICAgICAgIE5WX0VOQ19QQVJBTVNfRlJBTUVfRklFTERfTU9ERV9GSUVMRDsKKyAgICB9CisgIH0KKworICBpZiAoaW5mby0+ZnBzX2QgPiAwICYmIGluZm8tPmZwc19uID4gMCkgeworICAgIHBhcmFtcy0+ZnJhbWVSYXRlTnVtID0gaW5mby0+ZnBzX247CisgICAgcGFyYW1zLT5mcmFtZVJhdGVEZW4gPSBpbmZvLT5mcHNfZDsKKyAgfSBlbHNlIHsKKyAgICBHU1RfRklYTUVfT0JKRUNUIChoMjY0ZW5jLCAidmFyaWFibGUgZnJhbWVyYXRlIik7CisgIH0KKworICBpZiAob2xkX3N0YXRlKSB7CisgICAgbnZfcmV0ID0KKyAgICAgICAgTnZFbmNSZWNvbmZpZ3VyZUVuY29kZXIgKEdTVF9OVl9CQVNFX0VOQyAoaDI2NGVuYyktPmVuY29kZXIsCisgICAgICAgICZyZWNvbmZpZ3VyZV9wYXJhbXMpOworICB9IGVsc2UgeworICAgIG52X3JldCA9CisgICAgICAgIE52RW5jSW5pdGlhbGl6ZUVuY29kZXIgKEdTVF9OVl9CQVNFX0VOQyAoaDI2NGVuYyktPmVuY29kZXIsIHBhcmFtcyk7CisgIH0KKworICBpZiAobnZfcmV0ICE9IE5WX0VOQ19TVUNDRVNTKSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKGgyNjRlbmMsIExJQlJBUlksIFNFVFRJTkdTLCAoTlVMTCksCisgICAgICAgICgiRmFpbGVkIHRvICVzaW5pdCBlbmNvZGVyOiAlZCIsIG9sZF9zdGF0ZSA/ICJyZSIgOiAiIiwgbnZfcmV0KSk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisgIEdTVF9JTkZPX09CSkVDVCAoaDI2NGVuYywgImNvbmZpZ3VyZWQgZW5jb2RlciIpOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9udl9oMjY0X2VuY19zZXRfcGljX3BhcmFtcyAoR3N0TnZCYXNlRW5jICogZW5jLCBHc3RWaWRlb0NvZGVjRnJhbWUgKiBmcmFtZSwKKyAgICBOVl9FTkNfUElDX1BBUkFNUyAqIHBpY19wYXJhbXMpCit7CisgIC8qIGVuY29kZSB3aG9sZSBwaWN0dXJlIGluIG9uZSBzaW5nbGUgc2xpY2UgKi8KKyAgcGljX3BhcmFtcy0+Y29kZWNQaWNQYXJhbXMuaDI2NFBpY1BhcmFtcy5zbGljZU1vZGUgPSAwOworICBwaWNfcGFyYW1zLT5jb2RlY1BpY1BhcmFtcy5oMjY0UGljUGFyYW1zLnNsaWNlTW9kZURhdGEgPSAwOworCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgdm9pZAorZ3N0X252X2gyNjRfZW5jX3NldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBjb25zdCBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfbnZfaDI2NF9lbmNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLCBHVmFsdWUgKiB2YWx1ZSwKKyAgICBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIHN3aXRjaCAocHJvcF9pZCkgeworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KZGlmZiAtLWdpdCBhL3N5cy9udmVuYy9nc3RudmgyNjRlbmMuaCBiL3N5cy9udmVuYy9nc3RudmgyNjRlbmMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZWQ2NTc0Ci0tLSAvZGV2L251bGwKKysrIGIvc3lzL252ZW5jL2dzdG52aDI2NGVuYy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qIEdTdHJlYW1lciBOVkVOQyBwbHVnaW4KKyAqIENvcHlyaWdodCAoQykgMjAxNSBDZW50cmljdWxhciBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX05WX0gyNjRfRU5DX0hfSU5DTFVERURfXworI2RlZmluZSBfX0dTVF9OVl9IMjY0X0VOQ19IX0lOQ0xVREVEX18KKworI2luY2x1ZGUgImdzdG52YmFzZWVuYy5oIgorCisjZGVmaW5lIEdTVF9UWVBFX05WX0gyNjRfRU5DIFwKKyAgKGdzdF9udl9oMjY0X2VuY19nZXRfdHlwZSgpKQorI2RlZmluZSBHU1RfTlZfSDI2NF9FTkMob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9OVl9IMjY0X0VOQyxHc3ROdkgyNjRFbmMpKQorI2RlZmluZSBHU1RfTlZfSDI2NF9FTkNfQ0xBU1Moa2xhc3MpIFwKKyAgKEdfVFlQRV9DSEVDS19DTEFTU19DQVNUKChrbGFzcyksR1NUX1RZUEVfTlZfSDI2NF9FTkMsR3N0TnZIMjY0RW5jQ2xhc3MpKQorI2RlZmluZSBHU1RfTlZfSDI2NF9FTkNfR0VUX0NMQVNTKG9iaikgXAorICAoR19UWVBFX0lOU1RBTkNFX0dFVF9DTEFTUygob2JqKSxHU1RfVFlQRV9OVl9IMjY0X0VOQyxHc3ROdkgyNjRFbmNDbGFzcykpCisjZGVmaW5lIEdTVF9JU19OVl9IMjY0X0VOQyhvYmopIFwKKyAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFKChvYmopLEdTVF9UWVBFX05WX0gyNjRfRU5DKSkKKyNkZWZpbmUgR1NUX0lTX05WX0gyNjRfRU5DX0NMQVNTKG9iaikgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSxHU1RfVFlQRV9OVl9IMjY0X0VOQykpCisKK3R5cGVkZWYgc3RydWN0IHsKKyAgR3N0TnZCYXNlRW5jIGJhc2VfbnZlbmM7CisKKyAgLyogdGhlIHN1cHBvcnRlZCBpbnB1dCBmb3JtYXRzICovCisgIEdWYWx1ZSAgICAgICAgKiBzdXBwb3J0ZWRfcHJvZmlsZXM7ICAgICAgICAgICAgIC8qIE9CSkVDVCBMT0NLICovCisKKyAgR3N0VmlkZW9Db2RlY1N0YXRlICppbnB1dF9zdGF0ZTsKKyAgZ2Jvb2xlYW4gICAgICAgICAgICBnbF9pbnB1dDsKKworICAvKiBzdXBwb3J0ZWQgaW50ZXJsYWNpbmcgaW5wdXQgbW9kZXMuCisgICAqIDAgPSBub25lLCAxID0gZmllbGRzLCAyID0gaW50ZXJsZWF2ZWQgKi8KKyAgZ2ludCAgICAgICAgICAgIGludGVybGFjZV9tb2RlczsKK30gR3N0TnZIMjY0RW5jOworCit0eXBlZGVmIHN0cnVjdCB7CisgIEdzdE52QmFzZUVuY0NsYXNzIHZpZGVvX2VuY29kZXJfY2xhc3M7Cit9IEdzdE52SDI2NEVuY0NsYXNzOworCitHX0dOVUNfSU5URVJOQUwKK0dUeXBlIGdzdF9udl9oMjY0X2VuY19nZXRfdHlwZSAodm9pZCk7CisKKyNlbmRpZiAvKiBfX0dTVF9OVl9IMjY0X0VOQ19IX0lOQ0xVREVEX18gKi8KZGlmZiAtLWdpdCBhL3N5cy9vcGVuc2xlcy9NYWtlZmlsZS5pbiBiL3N5cy9vcGVuc2xlcy9NYWtlZmlsZS5pbgppbmRleCAwNDUzOGI0Li40ZDg2YzU5IDEwMDY0NAotLS0gYS9zeXMvb3BlbnNsZXMvTWFrZWZpbGUuaW4KKysrIGIvc3lzL29wZW5zbGVzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Nyw2ICsyNzYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNCw2ICszMTUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMiw3ICszMjUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDEsOCArMzQzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OSwxNiArMzYyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NCw2ICszOTgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTksNiArNDI1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIwLDYgKzUyOCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzMsOCArNTQyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUwLDYgKzU1Nyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDcsMTYgKzYxNiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OCw2ICs2NzksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc4LDYgKzY5MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Nyw2ICs3MDAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI0LDcgKzczOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL29wZW5zbGVzL29wZW5zbGVzc2luay5jIGIvc3lzL29wZW5zbGVzL29wZW5zbGVzc2luay5jCmluZGV4IGNlOTNkMjUuLmMyZWM4MDYgMTAwNjQ0Ci0tLSBhL3N5cy9vcGVuc2xlcy9vcGVuc2xlc3NpbmsuYworKysgYi9zeXMvb3BlbnNsZXMvb3BlbnNsZXNzaW5rLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBmaWxlc3JjIGxvY2F0aW9uPW11c2ljLm9nZyAhIG9nZ2RlbXV4ICEgdm9yYmlzZGVjICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIG9wZXNsZXNzaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBmaWxlc3JjIGxvY2F0aW9uPW11c2ljLm9nZyAhIG9nZ2RlbXV4ICEgdm9yYmlzZGVjICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIG9wZXNsZXNzaW5rCiAgKiBdfCBQbGF5IGFuIE9nZy9Wb3JiaXMgZmlsZS4KICAqIDwvcmVmc2VjdDI+CiAgKgpkaWZmIC0tZ2l0IGEvc3lzL29wZW5zbGVzL29wZW5zbGVzc3JjLmMgYi9zeXMvb3BlbnNsZXMvb3BlbnNsZXNzcmMuYwppbmRleCBkMGRmYTMyLi42NTA1YWIxIDEwMDY0NAotLS0gYS9zeXMvb3BlbnNsZXMvb3BlbnNsZXNzcmMuYworKysgYi9zeXMvb3BlbnNsZXMvb3BlbnNsZXNzcmMuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgcGlwZWxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IG9wZW5zbGVzc3JjICEgYXVkaW9jb252ZXJ0ICEgdm9yYmlzZW5jICEgb2dnbXV4ICEgZmlsZXNpbmsgbG9jYXRpb249cmVjb3JkZWQub2dnCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBvcGVuc2xlc3NyYyAhIGF1ZGlvY29udmVydCAhIHZvcmJpc2VuYyAhIG9nZ211eCAhIGZpbGVzaW5rIGxvY2F0aW9uPXJlY29yZGVkLm9nZwogICogXXwgUmVjb3JkIGZyb20gZGVmYXVsdCBhdWRpbyBpbnB1dCBhbmQgZW5jb2RlIHRvIE9nZy9Wb3JiaXMuCiAgKiA8L3JlZnNlY3QyPgogICoKZGlmZiAtLWdpdCBhL3N5cy9wdnIyZC9NYWtlZmlsZS5pbiBiL3N5cy9wdnIyZC9NYWtlZmlsZS5pbgppbmRleCA0ZThhZTlmLi4xZmUzMWFlIDEwMDY0NAotLS0gYS9zeXMvcHZyMmQvTWFrZWZpbGUuaW4KKysrIGIvc3lzL3B2cjJkL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3B2cjJkL2dzdHB2cnZpZGVvc2luay5jIGIvc3lzL3B2cjJkL2dzdHB2cnZpZGVvc2luay5jCmluZGV4IDZkMTE3ZmIuLjdjMTAyNDMgMTAwNjQ0Ci0tLSBhL3N5cy9wdnIyZC9nc3RwdnJ2aWRlb3NpbmsuYworKysgYi9zeXMvcHZyMmQvZ3N0cHZydmlkZW9zaW5rLmMKQEAgLTEzMTYsMTEgKzEzMTYsOCBAQAogewogICBHU1RfREVCVUcgKCJGcmVlaW5nIGRjb250ZXh0ICVwIiwgZGNvbnRleHQpOwogCi0gIGlmIChkY29udGV4dC0+cF9ibHRfaW5mbykKLSAgICBnX2ZyZWUgKGRjb250ZXh0LT5wX2JsdF9pbmZvKTsKLQotICBpZiAoZGNvbnRleHQtPnBfYmx0MmRfaW5mbykKLSAgICBnX2ZyZWUgKGRjb250ZXh0LT5wX2JsdDJkX2luZm8pOworICBnX2ZyZWUgKGRjb250ZXh0LT5wX2JsdF9pbmZvKTsKKyAgZ19mcmVlIChkY29udGV4dC0+cF9ibHQyZF9pbmZvKTsKIAogICBpZiAoZGNvbnRleHQtPnhfbG9jaykKICAgICBnX211dGV4X2xvY2sgKGRjb250ZXh0LT54X2xvY2spOwpkaWZmIC0tZ2l0IGEvc3lzL3NobS9NYWtlZmlsZS5pbiBiL3N5cy9zaG0vTWFrZWZpbGUuaW4KaW5kZXggZWQ4NjUxZC4uNTBmMzcwNSAxMDA2NDQKLS0tIGEvc3lzL3NobS9NYWtlZmlsZS5pbgorKysgYi9zeXMvc2htL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3Niw2ICsyNzUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMyw2ICszMTQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMSw3ICszMjQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDAsOCArMzQyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1OCwxNiArMzYxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Myw2ICszOTcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTgsNiArNDI0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE5LDYgKzUyNyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzIsOCArNTQxLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ5LDYgKzU1Niw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDYsMTYgKzYxNSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2Nyw2ICs2NzgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc3LDYgKzY4OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4Niw2ICs2OTksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIzLDcgKzczOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3NobS9nc3RzaG1zaW5rLmMgYi9zeXMvc2htL2dzdHNobXNpbmsuYwppbmRleCA1YTcwNDE3Li4xM2Q2N2JkIDEwMDY0NAotLS0gYS9zeXMvc2htL2dzdHNobXNpbmsuYworKysgYi9zeXMvc2htL2dzdHNobXNpbmsuYwpAQCAtMjYsNyArMjYsNyBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IHZpZGVvdGVzdHNyYyAhICBzaG1zaW5rIHNvY2tldC1wYXRoPS90bXAvYmxhaCBzaG0tc2l6ZT0xMDAwMDAwCisgKiBnc3QtbGF1bmNoLTEuMCAtdiB2aWRlb3Rlc3RzcmMgISAgc2htc2luayBzb2NrZXQtcGF0aD0vdG1wL2JsYWggc2htLXNpemU9MTAwMDAwMAogICogXXwgU2VuZCB2aWRlbyB0byBzaG0gYnVmZmVycy4KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL3N5cy9zaG0vZ3N0c2htc3JjLmMgYi9zeXMvc2htL2dzdHNobXNyYy5jCmluZGV4IDFlNjlhZjcuLjNjYWY5MGIgMTAwNjQ0Ci0tLSBhL3N5cy9zaG0vZ3N0c2htc3JjLmMKKysrIGIvc3lzL3NobS9nc3RzaG1zcmMuYwpAQCAtMjYsOSArMjYsOSBAQAogICogPHJlZnNlY3QyPgogICogPHRpdGxlPkV4YW1wbGUgbGF1bmNoIGxpbmVzPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIHNobXNyYyBzb2NrZXQtcGF0aD0vdG1wL2JsYWggISBcCi0gKiAidmlkZW8veC1yYXcteXV2LCBmb3JtYXQ9KGZvdXJjYylZVVkyLCBjb2xvci1tYXRyaXg9KHN0cmluZylzZHR2LCBcCi0gKiBjaHJvbWEtc2l0ZT0oc3RyaW5nKW1wZWcyLCB3aWR0aD0oaW50KTMyMCwgaGVpZ2h0PShpbnQpMjQwLCBmcmFtZXJhdGU9KGZyYWN0aW9uKTMwLzEiICEgYXV0b3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgc2htc3JjIHNvY2tldC1wYXRoPS90bXAvYmxhaCAhIFwKKyAqICJ2aWRlby94LXl1diwgZm9ybWF0PVlVWTIsIGNvbG9yLW1hdHJpeD1zZHR2LCBcCisgKiBjaHJvbWEtc2l0ZT1tcGVnMiwgd2lkdGg9KGludCkzMjAsIGhlaWdodD0oaW50KTI0MCwgZnJhbWVyYXRlPShmcmFjdGlvbikzMC8xIiAhIGF1dG92aWRlb3NpbmsKICAqIF18IFJlbmRlciB2aWRlbyBmcm9tIHNobSBidWZmZXJzLgogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL3RpbnlhbHNhL01ha2VmaWxlLmFtIGIvc3lzL3RpbnlhbHNhL01ha2VmaWxlLmFtCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0OTJlYzgKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvdGlueWFsc2EvTWFrZWZpbGUuYW0KQEAgLTAsMCArMSwxOSBAQAorCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R0aW55YWxzYS5sYQorCitsaWJnc3R0aW55YWxzYV9sYV9TT1VSQ0VTID0gdGlueWFsc2FzaW5rLmMgCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aW55YWxzYS5jCisKK2xpYmdzdHRpbnlhbHNhX2xhX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgXAorICAgIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMKK2xpYmdzdHRpbnlhbHNhX2xhX0xJQkFERCA9ICAgICAgICAgICAgXAorICAgIC1sdGlueWFsc2EgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCAgICAgIFwKKyAgICAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgICAgICAgICAgXAorICAgICQoR1NUX0JBU0VfTElCUykgICAgICAgICAgICAgICAgICBcCisgICAgJChHU1RfTElCUykKK2xpYmdzdHRpbnlhbHNhX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdHRpbnlhbHNhX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCisKK25vaW5zdF9IRUFERVJTID0gdGlueWFsc2FzaW5rLmgKKwpkaWZmIC0tZ2l0IGEvZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbiBiL3N5cy90aW55YWxzYS9NYWtlZmlsZS5pbgpzaW1pbGFyaXR5IGluZGV4IDg2JQpjb3B5IGZyb20gZ3N0L2xpdmVhZGRlci9NYWtlZmlsZS5pbgpjb3B5IHRvIHN5cy90aW55YWxzYS9NYWtlZmlsZS5pbgppbmRleCBiYTllNWEyLi5lMTNjNjA2IDEwMDY0NAotLS0gYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluCisrKyBiL3N5cy90aW55YWxzYS9NYWtlZmlsZS5pbgpAQCAtOTAsNyArOTAsNyBAQAogYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotc3ViZGlyID0gZ3N0L2xpdmVhZGRlcgorc3ViZGlyID0gc3lzL3RpbnlhbHNhCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hdXRvLWFsdC5tNCBcCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTE2NCwxOCArMTYzLDE5IEBACiBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQocGx1Z2luZGlyKSIKIExUTElCUkFSSUVTID0gJChwbHVnaW5fTFRMSUJSQVJJRVMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitsaWJnc3R0aW55YWxzYV9sYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTID0gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbwotbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdGxpdmVhZGRlcl9sYV9PQkpFQ1RTKQorYW1fbGliZ3N0dGlueWFsc2FfbGFfT0JKRUNUUyA9IGxpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhc2luay5sbyBcCisJbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EubG8KK2xpYmdzdHRpbnlhbHNhX2xhX09CSkVDVFMgPSAkKGFtX2xpYmdzdHRpbnlhbHNhX2xhX09CSkVDVFMpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCi1saWJnc3RsaXZlYWRkZXJfbGFfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAotCSQoQ0NMRCkgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2xpYmdzdHRpbnlhbHNhX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQobGliZ3N0dGlueWFsc2FfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgXAorCSQoQ0NMRCkgJChsaWJnc3R0aW55YWxzYV9sYV9DRkxBR1MpICQoQ0ZMQUdTKSBcCisJJChsaWJnc3R0aW55YWxzYV9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBBTV9WX1AgPSAkKGFtX192X1BfQEFNX1ZAKQogYW1fX3ZfUF8gPSAkKGFtX192X1BfQEFNX0RFRkFVTFRfVkApCiBhbV9fdl9QXzAgPSBmYWxzZQpAQCAtMjEwLDggKzIxMCw4IEBACiBhbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKIGFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQobGliZ3N0dGlueWFsc2FfbGFfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQobGliZ3N0dGlueWFsc2FfbGFfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKQEAgLTI3NCw2ICsyNzQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICszMTMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICszMjMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzQxLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzYwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszOTYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArNDIzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzUyNiw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTQwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzU1NSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzYxNCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NzcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY4OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2OTgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzczNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzYxLDE2ICs3NzYsMjMgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bGl2ZWFkZGVyLmxhCi1saWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUyA9IGxpdmVhZGRlci5jCi1saWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCitwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJnc3R0aW55YWxzYS5sYQorbGliZ3N0dGlueWFsc2FfbGFfU09VUkNFUyA9IHRpbnlhbHNhc2luay5jIAlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGlueWFsc2EuYwogCi1saWJnc3RsaXZlYWRkZXJfbGFfTERGTEFHUyA9ICQoR1NUX1BMVUdJTl9MREZMQUdTKQotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCi1ub2luc3RfSEVBREVSUyA9IGxpdmVhZGRlci5oCitsaWJnc3R0aW55YWxzYV9sYV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpIFwKKyAgICAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zCisKK2xpYmdzdHRpbnlhbHNhX2xhX0xJQkFERCA9IFwKKyAgICAtbHRpbnlhbHNhICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgIC1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAgICAgICBcCisgICAgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICAgICAgICAgIFwKKyAgICAkKEdTVF9CQVNFX0xJQlMpICAgICAgICAgICAgICAgICAgXAorICAgICQoR1NUX0xJQlMpCisKK2xpYmdzdHRpbnlhbHNhX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKK2xpYmdzdHRpbnlhbHNhX2xhX0xJQlRPT0xGTEFHUyA9ICQoR1NUX1BMVUdJTl9MSUJUT09MRkxBR1MpCitub2luc3RfSEVBREVSUyA9IHRpbnlhbHNhc2luay5oCiBhbGw6IGFsbC1hbQogCiAuU1VGRklYRVM6CkBAIC03ODQsOSArODA2LDkgQEAKIAkgICAgICBleGl0IDE7OyBcCiAJICBlc2FjOyBcCiAJZG9uZTsgXAotCWVjaG8gJyBjZCAkKHRvcF9zcmNkaXIpICYmICQoQVVUT01BS0UpIC0tZ251IGdzdC9saXZlYWRkZXIvTWFrZWZpbGUnOyBcCisJZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgc3lzL3RpbnlhbHNhL01ha2VmaWxlJzsgXAogCSQoYW1fX2NkKSAkKHRvcF9zcmNkaXIpICYmIFwKLQkgICQoQVVUT01BS0UpIC0tZ251IGdzdC9saXZlYWRkZXIvTWFrZWZpbGUKKwkgICQoQVVUT01BS0UpIC0tZ251IHN5cy90aW55YWxzYS9NYWtlZmlsZQogTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBjYXNlICckPycgaW4gXAogCSAgKmNvbmZpZy5zdGF0dXMqKSBcCkBAIC04NDAsOCArODYyLDggQEAKIAkgIHJtIC1mICQke2xvY3N9OyBcCiAJfQogCi1saWJnc3RsaXZlYWRkZXIubGE6ICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAKLQkkKEFNX1ZfQ0NMRCkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSU5LKSAtcnBhdGggJChwbHVnaW5kaXIpICQobGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQkFERCkgJChMSUJTKQorbGliZ3N0dGlueWFsc2EubGE6ICQobGliZ3N0dGlueWFsc2FfbGFfT0JKRUNUUykgJChsaWJnc3R0aW55YWxzYV9sYV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGliZ3N0dGlueWFsc2FfbGFfREVQRU5ERU5DSUVTKSAKKwkkKEFNX1ZfQ0NMRCkkKGxpYmdzdHRpbnlhbHNhX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3R0aW55YWxzYV9sYV9PQkpFQ1RTKSAkKGxpYmdzdHRpbnlhbHNhX2xhX0xJQkFERCkgJChMSUJTKQogCiBtb3N0bHljbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLiQoT0JKRVhUKQpAQCAtODQ5LDcgKzg3MSw4IEBACiBkaXN0Y2xlYW4tY29tcGlsZToKIAktcm0gLWYgKi50YWIuYwogCi1AQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5QbG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQC4vJChERVBESVIpL2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLlBsb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04NzUsMTIgKzg5OCwxOSBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvOiBsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGl2ZWFkZGVyLmMnIG9iamVjdD0nbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLmxvOiB0aW55YWxzYXNpbmsuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHRpbnlhbHNhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHRpbnlhbHNhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJnc3R0aW55YWxzYV9sYS10aW55YWxzYXNpbmsubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhc2luay5UcG8gLWMgLW8gbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2FzaW5rLmxvIGB0ZXN0IC1mICd0aW55YWxzYXNpbmsuYycgfHwgZWNobyAnJChzcmNkaXIpLydgdGlueWFsc2FzaW5rLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhc2luay5UcG8gJChERVBESVIpL2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhc2luay5QbG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSd0aW55YWxzYXNpbmsuYycgb2JqZWN0PSdsaWJnc3R0aW55YWxzYV9sYS10aW55YWxzYXNpbmsubG8nIGxpYnRvb2w9eWVzIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYworQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHRpbnlhbHNhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHRpbnlhbHNhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhc2luay5sbyBgdGVzdCAtZiAndGlueWFsc2FzaW5rLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHRpbnlhbHNhc2luay5jCisKK2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhLmxvOiB0aW55YWxzYS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQobGliZ3N0dGlueWFsc2FfbGFfTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWNvbXBpbGUgJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGliZ3N0dGlueWFsc2FfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhLmxvIC1NRCAtTVAgLU1GICQoREVQRElSKS9saWJnc3R0aW55YWxzYV9sYS10aW55YWxzYS5UcG8gLWMgLW8gbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EubG8gYHRlc3QgLWYgJ3RpbnlhbHNhLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYHRpbnlhbHNhLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2xpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhLlRwbyAkKERFUERJUikvbGliZ3N0dGlueWFsc2FfbGEtdGlueWFsc2EuUGxvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0ndGlueWFsc2EuYycgb2JqZWN0PSdsaWJnc3R0aW55YWxzYV9sYS10aW55YWxzYS5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdHRpbnlhbHNhX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1jb21waWxlICQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYmdzdHRpbnlhbHNhX2xhX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYmdzdHRpbnlhbHNhX2xhLXRpbnlhbHNhLmxvIGB0ZXN0IC1mICd0aW55YWxzYS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2B0aW55YWxzYS5jCiAKIG1vc3RseWNsZWFuLWxpYnRvb2w6CiAJLXJtIC1mICoubG8KZGlmZiAtLWdpdCBhL2dzdC9ydHAvZ3N0cnRwLmMgYi9zeXMvdGlueWFsc2EvdGlueWFsc2EuYwpzaW1pbGFyaXR5IGluZGV4IDY5JQpyZW5hbWUgZnJvbSBnc3QvcnRwL2dzdHJ0cC5jCnJlbmFtZSB0byBzeXMvdGlueWFsc2EvdGlueWFsc2EuYwppbmRleCBmZDA3NzQ4Li41YjY3NmFiIDEwMDY0NAotLS0gYS9nc3QvcnRwL2dzdHJ0cC5jCisrKyBiL3N5cy90aW55YWxzYS90aW55YWxzYS5jCkBAIC0xLDUgKzEsNiBAQAogLyogR1N0cmVhbWVyCi0gKiBDb3B5cmlnaHQgKEMpIDwxOTk5PiBFcmlrIFdhbHRoaW5zZW4gPG9tZWdhQGNzZS5vZ2kuZWR1PgorICogQ29weXJpZ2h0IChDKSAyMDE2IENlbnRyaWN1bGFyIEx0ZC4KKyAqIEF1dGhvcjogQXJ1biBSYWdoYXZhbgogICoKICAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCkBAIC0yMSwyNyArMjIsMjMgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNlbmRpZgogCi0jaW5jbHVkZSA8Z3N0L3RhZy90YWcuaD4KKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAKLSNpbmNsdWRlICJnc3RydHBoMjY1ZGVwYXkuaCIKLSNpbmNsdWRlICJnc3RydHBoMjY1cGF5LmgiCisjaW5jbHVkZSAidGlueWFsc2FzaW5rLmgiCiAKIHN0YXRpYyBnYm9vbGVhbgogcGx1Z2luX2luaXQgKEdzdFBsdWdpbiAqIHBsdWdpbikKIHsKLSAgZ3N0X3RhZ19pbWFnZV90eXBlX2dldF90eXBlICgpOwotCi0gIGlmICghZ3N0X3J0cF9oMjY1X2RlcGF5X3BsdWdpbl9pbml0IChwbHVnaW4pKQorICBpZiAoIWdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sICJ0aW55YWxzYXNpbmsiLCBHU1RfUkFOS19OT05FLAorICAgICAgICAgIEdTVF9UWVBFX1RJTllBTFNBX1NJTkspKSB7CiAgICAgcmV0dXJuIEZBTFNFOwotCi0gIGlmICghZ3N0X3J0cF9oMjY1X3BheV9wbHVnaW5faW5pdCAocGx1Z2luKSkKLSAgICByZXR1cm4gRkFMU0U7CisgIH0KIAogICByZXR1cm4gVFJVRTsKIH0KIAogR1NUX1BMVUdJTl9ERUZJTkUgKEdTVF9WRVJTSU9OX01BSk9SLAogICAgIEdTVF9WRVJTSU9OX01JTk9SLAotICAgIHJ0cGJhZCwKLSAgICAiUmVhbC10aW1lIHByb3RvY29sIHBsdWdpbnMiLAotICAgIHBsdWdpbl9pbml0LCBWRVJTSU9OLCAiTEdQTCIsIEdTVF9QQUNLQUdFX05BTUUsIEdTVF9QQUNLQUdFX09SSUdJTik7CisgICAgdGlueWFsc2EsCisgICAgInRpbnlhbHNhIHBsdWdpbiBsaWJyYXJ5IiwKKyAgICBwbHVnaW5faW5pdCwgVkVSU0lPTiwgR1NUX0xJQ0VOU0UsIEdTVF9QQUNLQUdFX05BTUUsIEdTVF9QQUNLQUdFX09SSUdJTikKZGlmZiAtLWdpdCBhL3N5cy90aW55YWxzYS90aW55YWxzYXNpbmsuYyBiL3N5cy90aW55YWxzYS90aW55YWxzYXNpbmsuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMjk3NTVlCi0tLSAvZGV2L251bGwKKysrIGIvc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5jCkBAIC0wLDAgKzEsNTAyIEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBDZW50cmljdWxhciBMdGQuCisgKiBBdXRob3I6IEFydW4gUmFnaGF2YW4gPGFydW5AY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qKgorICogU0VDVElPTjplbGVtZW50LXRpbnlhbHNhc2luaworICogQHNlZV9hbHNvOiBhbHNhc2luaworICoKKyAqIFRoaXMgZWxlbWVudCByZW5kZXJzIHJhdyBhdWRpbyBzYW1wbGVzIHVzaW5nIHRoZSBBTFNBIGF1ZGlvIEFQSSB2aWEgdGhlCisgKiB0aW55YWxzYSBsaWJyYXJ5LgorICoKKyAqIDxyZWZzZWN0Mj4KKyAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CisgKiB8WworICogZ3N0LWxhdW5jaC0xLjAgLXYgdXJpZGVjb2RlYmluIHVyaT1maWxlOi8vL3BhdGgvdG8vYXVkaW8ub2dnICEgYXVkaW9jb252ZXJ0ICEgYXVkaW9yZXNhbXBsZSAhIHRpbnlhbHNhc2luaworICogXXwgUGxheSBhbiBPZ2cvVm9yYmlzIGZpbGUgYW5kIG91dHB1dCBhdWRpbyB2aWEgQUxTQSB1c2luZyB0aGUgdGlueWFsc2EKKyAqIGxpYnJhcnkuCisgKiA8L3JlZnNlY3QyPgorICovCisKKyNpbmNsdWRlIDxnc3QvYXVkaW8vZ3N0YXVkaW9iYXNlc2luay5oPgorCisjaW5jbHVkZSA8dGlueWFsc2EvYXNvdW5kbGliLmg+CisKKyNpbmNsdWRlICJ0aW55YWxzYXNpbmsuaCIKKworLyogSGFyZGNvZGluZyB0aGVzZSBiaXRtYXNrIHZhbHVlcyByYXRoZXIgdGhhbiBpbmNsdWRpbmcgYSBrZXJuZWwgaGVhZGVyICovCisjZGVmaW5lIFNORFJWX1BDTV9GT1JNQVRfUzggMAorI2RlZmluZSBTTkRSVl9QQ01fRk9STUFUX1MxNl9MRSAyCisjZGVmaW5lIFNORFJWX1BDTV9GT1JNQVRfUzI0X0xFIDYKKyNkZWZpbmUgU05EUlZfUENNX0ZPUk1BVF9TMzJfTEUgMTAKKyNkZWZpbmUgU05EUlZfUENNX0ZPUk1BVF9BTlkgICAgICAgICAgICBcCisgICgoMSA8PCBTTkRSVl9QQ01fRk9STUFUX1M4KSAgICAgfCAgICAgXAorICAgKDEgPDwgU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUpIHwgICAgIFwKKyAgICgxIDw8IFNORFJWX1BDTV9GT1JNQVRfUzI0X0xFKSB8ICAgICBcCisgICAoMSA8PCBTTkRSVl9QQ01fRk9STUFUX1MzMl9MRSkpCisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKHRpbnlhbHNhX3NpbmtfZGVidWcpOworI2RlZmluZSBHU1RfQ0FUX0RFRkFVTFQgdGlueWFsc2Ffc2lua19kZWJ1ZworCisjZGVmaW5lIHBhcmVudF9jbGFzcyBnc3RfdGlueWFsc2Ffc2lua19wYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEUgKEdzdFRpbnlhbHNhU2luaywgZ3N0X3RpbnlhbHNhX3NpbmssIEdTVF9UWVBFX0FVRElPX1NJTkspOworCitlbnVtCit7CisgIFBST1BfMCwKKyAgUFJPUF9DQVJELAorICBQUk9QX0RFVklDRSwKKyAgUFJPUF9MQVNUCit9OworCisjZGVmaW5lIERFRkFVTFRfQ0FSRCAwCisjZGVmaW5lIERFRkFVTFRfREVWSUNFIDAKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmtfdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAorICAgIEdTVF9QQURfU0lOSywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgIgorICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgeyBTMTZMRSwgUzMyTEUsIFMyNF8zMkxFLCBTOCB9LCAiCisgICAgICAgICJjaGFubmVscyA9IChpbnQpIFsgMSwgTUFYIF0sICIKKyAgICAgICAgInJhdGUgPSAoaW50KSBbIDEsIE1BWCBdLCAiICJsYXlvdXQgPSAoc3RyaW5nKSBpbnRlcmxlYXZlZCIpKTsKKworc3RhdGljIHZvaWQKK2dzdF90aW55YWxzYV9zaW5rX2dldF9wcm9wZXJ0eSAoR09iamVjdCAqIG9iamVjdCwgZ3VpbnQgcHJvcF9pZCwKKyAgICBHVmFsdWUgKiB2YWx1ZSwgR1BhcmFtU3BlYyAqIHBzcGVjKQoreworICBHc3RUaW55YWxzYVNpbmsgKnNpbmsgPSBHU1RfVElOWUFMU0FfU0lOSyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfQ0FSRDoKKyAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBzaW5rLT5jYXJkKTsKKyAgICAgIGJyZWFrOworCisgICAgY2FzZSBQUk9QX0RFVklDRToKKyAgICAgIGdfdmFsdWVfc2V0X3VpbnQgKHZhbHVlLCBzaW5rLT5kZXZpY2UpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGlueWFsc2Ffc2lua19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYykKK3sKKyAgR3N0VGlueWFsc2FTaW5rICpzaW5rID0gR1NUX1RJTllBTFNBX1NJTksgKG9iamVjdCk7CisKKyAgc3dpdGNoIChwcm9wX2lkKSB7CisgICAgY2FzZSBQUk9QX0NBUkQ6CisgICAgICBzaW5rLT5jYXJkID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgYnJlYWs7CisKKyAgICBjYXNlIFBST1BfREVWSUNFOgorICAgICAgc2luay0+ZGV2aWNlID0gZ192YWx1ZV9nZXRfdWludCAodmFsdWUpOworICAgICAgYnJlYWs7CisKKyAgICBkZWZhdWx0OgorICAgICAgR19PQkpFQ1RfV0FSTl9JTlZBTElEX1BST1BFUlRZX0lEIChvYmplY3QsIHByb3BfaWQsIHBzcGVjKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK3N0YXRpYyBHc3RDYXBzICoKK2dzdF90aW55YWxzYV9zaW5rX2dldGNhcHMgKEdzdEJhc2VTaW5rICogYnNpbmssIEdzdENhcHMgKiBmaWx0ZXIpCit7CisgIEdzdFRpbnlhbHNhU2luayAqc2luayA9IEdTVF9USU5ZQUxTQV9TSU5LIChic2luayk7CisgIEdzdENhcHMgKmNhcHMgPSBOVUxMOworICBHVmFsdWUgZm9ybWF0cyA9IHsgMCwgfTsKKyAgR1ZhbHVlIGZvcm1hdCA9IHsgMCwgfTsKKyAgc3RydWN0IHBjbV9wYXJhbXMgKnBhcmFtcyA9IE5VTEw7CisgIHN0cnVjdCBwY21fbWFzayAqbWFzazsKKyAgaW50IHJhdGVfbWluLCByYXRlX21heCwgY2hhbm5lbHNfbWluLCBjaGFubmVsc19tYXg7CisgIGd1aW50MTYgbTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiUXVlcnlpbmcgY2FwcyIpOworCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7CisKKyAgaWYgKHNpbmstPmNhY2hlZF9jYXBzKSB7CisgICAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIlJldHVybmluZyBjYWNoZWQgY2FwcyIpOworICAgIGNhcHMgPSBnc3RfY2Fwc19yZWYgKHNpbmstPmNhY2hlZF9jYXBzKTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBpZiAoc2luay0+cGNtKSB7CisgICAgLyogV2UgY2FuJ3QgcXVlcnkgdGhlIGRldmljZSB3aGlsZSBpdCdzIG9wZW4sIHNvIHJldHVybiBjdXJyZW50IGNhcHMgKi8KKyAgICBjYXBzID0gZ3N0X3BhZF9nZXRfY3VycmVudF9jYXBzIChHU1RfQkFTRV9TSU5LX1BBRCAoYnNpbmspKTsKKyAgICBnb3RvIGRvbmU7CisgIH0KKworICBwYXJhbXMgPSBwY21fcGFyYW1zX2dldCAoc2luay0+Y2FyZCwgc2luay0+ZGV2aWNlLCBQQ01fT1VUKTsKKyAgaWYgKCFwYXJhbXMpIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IGdldCBQQ00gcGFyYW1zIik7CisgICAgZ290byBkb25lOworICB9CisKKyAgbWFzayA9IHBjbV9wYXJhbXNfZ2V0X21hc2sgKHBhcmFtcywgUENNX1BBUkFNX0ZPUk1BVCk7CisgIG0gPSAobWFzay0+Yml0c1sxXSA8PCA4KSB8IG1hc2stPmJpdHNbMF07CisKKyAgaWYgKCEobSAmIFNORFJWX1BDTV9GT1JNQVRfQU5ZKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJDb3VsZCBub3QgZmluZCBhbnkgc3VwcG9ydGVkIGZvcm1hdCIpOworICAgIGdvdG8gZG9uZTsKKyAgfQorCisgIGNhcHMgPSBnc3RfY2Fwc19uZXdfZW1wdHlfc2ltcGxlICgiYXVkaW8veC1yYXciKTsKKworICBnX3ZhbHVlX2luaXQgKCZmb3JtYXRzLCBHU1RfVFlQRV9MSVNUKTsKKyAgZ192YWx1ZV9pbml0ICgmZm9ybWF0LCBHX1RZUEVfU1RSSU5HKTsKKworICBpZiAobSAmICgxIDw8IFNORFJWX1BDTV9GT1JNQVRfUzgpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJmZvcm1hdCwgIlM4Iik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfcHJlcGVuZF92YWx1ZSAoJmZvcm1hdHMsICZmb3JtYXQpOworICB9CisgIGlmIChtICYgKDEgPDwgU05EUlZfUENNX0ZPUk1BVF9TMTZfTEUpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJmZvcm1hdCwgIlMxNkxFIik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfcHJlcGVuZF92YWx1ZSAoJmZvcm1hdHMsICZmb3JtYXQpOworICB9CisgIGlmIChtICYgKDEgPDwgU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJmZvcm1hdCwgIlMyNF8zMkxFIik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfcHJlcGVuZF92YWx1ZSAoJmZvcm1hdHMsICZmb3JtYXQpOworICB9CisgIGlmIChtICYgKDEgPDwgU05EUlZfUENNX0ZPUk1BVF9TMzJfTEUpKSB7CisgICAgZ192YWx1ZV9zZXRfc3RhdGljX3N0cmluZyAoJmZvcm1hdCwgIlMzMkxFIik7CisgICAgZ3N0X3ZhbHVlX2xpc3RfcHJlcGVuZF92YWx1ZSAoJmZvcm1hdHMsICZmb3JtYXQpOworICB9CisKKyAgZ3N0X2NhcHNfc2V0X3ZhbHVlIChjYXBzLCAiZm9ybWF0IiwgJmZvcm1hdHMpOworCisgIGdfdmFsdWVfdW5zZXQgKCZmb3JtYXQpOworICBnX3ZhbHVlX3Vuc2V0ICgmZm9ybWF0cyk7CisKKyAgLyogVGhpcyBpcyBhIGJpdCBvZiBhIGxpZSwgc2luY2UgdGhlIGRldmljZSBsaWtlbHkgb25seSBzdXBwb3J0cyBzb21lCisgICAqIHN0YW5kYXJkIHJhdGVzIGluIHRoaXMgcmFuZ2UuIFdlIHNob3VsZCBwcm9iYWJseSBmaWx0ZXIgdGhlIHJhbmdlIHRvCisgICAqIHRob3NlLCBzdGFuZGFyZCBhdWRpbyByYXRlcyBidXQgZXZlbiB0aGF0IGlzbid0IGd1YXJhbnRlZWQgdG8gYmUgYWNjdXJhdGUuCisgICAqLworICByYXRlX21pbiA9IHBjbV9wYXJhbXNfZ2V0X21pbiAocGFyYW1zLCBQQ01fUEFSQU1fUkFURSk7CisgIHJhdGVfbWF4ID0gcGNtX3BhcmFtc19nZXRfbWF4IChwYXJhbXMsIFBDTV9QQVJBTV9SQVRFKTsKKworICBpZiAocmF0ZV9taW4gPT0gcmF0ZV9tYXgpCisgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgInJhdGUiLCBHX1RZUEVfSU5ULCByYXRlX21pbiwgTlVMTCk7CisgIGVsc2UKKyAgICBnc3RfY2Fwc19zZXRfc2ltcGxlIChjYXBzLCAicmF0ZSIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgcmF0ZV9taW4sIHJhdGVfbWF4LAorICAgICAgICBOVUxMKTsKKworICBjaGFubmVsc19taW4gPSBwY21fcGFyYW1zX2dldF9taW4gKHBhcmFtcywgUENNX1BBUkFNX0NIQU5ORUxTKTsKKyAgY2hhbm5lbHNfbWF4ID0gcGNtX3BhcmFtc19nZXRfbWF4IChwYXJhbXMsIFBDTV9QQVJBTV9DSEFOTkVMUyk7CisKKyAgaWYgKGNoYW5uZWxzX21pbiA9PSBjaGFubmVsc19tYXgpCisgICAgZ3N0X2NhcHNfc2V0X3NpbXBsZSAoY2FwcywgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgY2hhbm5lbHNfbWluLCBOVUxMKTsKKyAgZWxzZQorICAgIGdzdF9jYXBzX3NldF9zaW1wbGUgKGNhcHMsICJjaGFubmVscyIsIEdTVF9UWVBFX0lOVF9SQU5HRSwgY2hhbm5lbHNfbWluLAorICAgICAgICBjaGFubmVsc19tYXgsIE5VTEwpOworCisgIGdzdF9jYXBzX3JlcGxhY2UgKCZzaW5rLT5jYWNoZWRfY2FwcywgY2Fwcyk7CisKK2RvbmU6CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiR290IGNhcHMgJSIgR1NUX1BUUl9GT1JNQVQsIGNhcHMpOworCisgIGlmIChjYXBzICYmIGZpbHRlcikgeworICAgIEdzdENhcHMgKmludGVyc2VjdGlvbiA9CisgICAgICAgIGdzdF9jYXBzX2ludGVyc2VjdF9mdWxsIChmaWx0ZXIsIGNhcHMsIEdTVF9DQVBTX0lOVEVSU0VDVF9GSVJTVCk7CisKKyAgICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisgICAgY2FwcyA9IGludGVyc2VjdGlvbjsKKyAgfQorCisgIGlmIChwYXJhbXMpCisgICAgcGNtX3BhcmFtc19mcmVlIChwYXJhbXMpOworCisgIHJldHVybiBjYXBzOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90aW55YWxzYV9zaW5rX29wZW4gKEdzdEF1ZGlvU2luayAqIGFzaW5rKQoreworICAvKiBOb3RoaW5nIHRvIGRvIGhlcmUsIHdlIGNhbid0IGNhbGwgcGNtX29wZW4oKSB0aWxsIHdlIGhhdmUgc3RyZWFtCisgICAqIHBhcmFtZXRlcnMgYXZhaWxhYmxlICovCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZW51bSBwY21fZm9ybWF0CitwY21fZm9ybWF0X2Zyb21fZ3N0IChHc3RBdWRpb0Zvcm1hdCBmb3JtYXQpCit7CisgIHN3aXRjaCAoZm9ybWF0KSB7CisgICAgY2FzZSBHU1RfQVVESU9fRk9STUFUX1M4OgorICAgICAgcmV0dXJuIFBDTV9GT1JNQVRfUzg7CisKKyAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzE2TEU6CisgICAgICByZXR1cm4gUENNX0ZPUk1BVF9TMTZfTEU7CisKKyAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzI0XzMyTEU6CisgICAgICByZXR1cm4gUENNX0ZPUk1BVF9TMjRfTEU7CisKKyAgICBjYXNlIEdTVF9BVURJT19GT1JNQVRfUzMyTEU6CisgICAgICByZXR1cm4gUENNX0ZPUk1BVF9TMzJfTEU7CisKKyAgICBkZWZhdWx0OgorICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQgKCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3BjbV9jb25maWdfZnJvbV9zcGVjIChzdHJ1Y3QgcGNtX2NvbmZpZyAqY29uZmlnLAorICAgIGNvbnN0IEdzdEF1ZGlvUmluZ0J1ZmZlclNwZWMgKiBzcGVjKQoreworICBnaW50NjQgZnJhbWVzOworCisgIGNvbmZpZy0+Zm9ybWF0ID0gcGNtX2Zvcm1hdF9mcm9tX2dzdCAoR1NUX0FVRElPX0lORk9fRk9STUFUICgmc3BlYy0+aW5mbykpOworICBjb25maWctPmNoYW5uZWxzID0gR1NUX0FVRElPX0lORk9fQ0hBTk5FTFMgKCZzcGVjLT5pbmZvKTsKKyAgY29uZmlnLT5yYXRlID0gR1NUX0FVRElPX0lORk9fUkFURSAoJnNwZWMtPmluZm8pOworCisgIGdzdF9hdWRpb19pbmZvX2NvbnZlcnQgKCZzcGVjLT5pbmZvLAorICAgICAgR1NUX0ZPUk1BVF9USU1FLCBzcGVjLT5sYXRlbmN5X3RpbWUgKiBHU1RfVVNFQ09ORCwKKyAgICAgIEdTVF9GT1JNQVRfREVGQVVMVCAvKiBmcmFtZXMgKi8gLCAmZnJhbWVzKTsKKworICBjb25maWctPnBlcmlvZF9zaXplID0gZnJhbWVzOworICBjb25maWctPnBlcmlvZF9jb3VudCA9IHNwZWMtPmJ1ZmZlcl90aW1lIC8gc3BlYy0+bGF0ZW5jeV90aW1lOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90aW55YWxzYV9zaW5rX3ByZXBhcmUgKEdzdEF1ZGlvU2luayAqIGFzaW5rLCBHc3RBdWRpb1JpbmdCdWZmZXJTcGVjICogc3BlYykKK3sKKyAgR3N0VGlueWFsc2FTaW5rICpzaW5rID0gR1NUX1RJTllBTFNBX1NJTksgKGFzaW5rKTsKKyAgc3RydWN0IHBjbV9jb25maWcgY29uZmlnID0geyAwLCB9OworICBzdHJ1Y3QgcGNtX3BhcmFtcyAqcGFyYW1zID0gTlVMTDsKKyAgaW50IHBlcmlvZF9zaXplX21pbiwgcGVyaW9kX3NpemVfbWF4OworICBpbnQgcGVyaW9kc19taW4sIHBlcmlvZHNfbWF4OworCisgIHBjbV9jb25maWdfZnJvbV9zcGVjICgmY29uZmlnLCBzcGVjKTsKKworICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiUmVxdWVzdGluZyAldSBwZXJpb2RzIG9mICV1IGZyYW1lcyIsCisgICAgICBjb25maWcucGVyaW9kX2NvdW50LCBjb25maWcucGVyaW9kX3NpemUpOworCisgIHBhcmFtcyA9IHBjbV9wYXJhbXNfZ2V0IChzaW5rLT5jYXJkLCBzaW5rLT5kZXZpY2UsIFBDTV9PVVQpOworICBpZiAoIXBhcmFtcykKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IGdldCBQQ00gcGFyYW1zIik7CisKKyAgcGVyaW9kX3NpemVfbWluID0gcGNtX3BhcmFtc19nZXRfbWluIChwYXJhbXMsIFBDTV9QQVJBTV9QRVJJT0RfU0laRSk7CisgIHBlcmlvZF9zaXplX21heCA9IHBjbV9wYXJhbXNfZ2V0X21heCAocGFyYW1zLCBQQ01fUEFSQU1fUEVSSU9EX1NJWkUpOworICBwZXJpb2RzX21pbiA9IHBjbV9wYXJhbXNfZ2V0X21pbiAocGFyYW1zLCBQQ01fUEFSQU1fUEVSSU9EUyk7CisgIHBlcmlvZHNfbWF4ID0gcGNtX3BhcmFtc19nZXRfbWF4IChwYXJhbXMsIFBDTV9QQVJBTV9QRVJJT0RTKTsKKworICBwY21fcGFyYW1zX2ZyZWUgKHBhcmFtcyk7CisKKyAgLyogU25hcCBwZXJpb2Qgc2l6ZS9jb3VudCB0byB0aGUgcGVybWl0dGVkIHJhbmdlICovCisgIGNvbmZpZy5wZXJpb2Rfc2l6ZSA9CisgICAgICBDTEFNUCAoY29uZmlnLnBlcmlvZF9zaXplLCBwZXJpb2Rfc2l6ZV9taW4sIHBlcmlvZF9zaXplX21heCk7CisgIGNvbmZpZy5wZXJpb2RfY291bnQgPSBDTEFNUCAoY29uZmlnLnBlcmlvZF9jb3VudCwgcGVyaW9kc19taW4sIHBlcmlvZHNfbWF4KTsKKworICAvKiBtdXRleCB3aXRoIGdldGNhcHMgKi8KKyAgR1NUX09CSkVDVF9MT0NLIChzaW5rKTsKKworICBzaW5rLT5wY20gPSBwY21fb3BlbiAoc2luay0+Y2FyZCwgc2luay0+ZGV2aWNlLCBQQ01fT1VUIHwgUENNX05PUkVTVEFSVCwKKyAgICAgICZjb25maWcpOworCisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzaW5rKTsKKworICBpZiAoIXNpbmstPnBjbSB8fCAhcGNtX2lzX3JlYWR5IChzaW5rLT5wY20pKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBvcGVuIGRldmljZTogJXMiLAorICAgICAgICBwY21fZ2V0X2Vycm9yIChzaW5rLT5wY20pKTsKKyAgICBnb3RvIGZhaWw7CisgIH0KKworICBpZiAocGNtX3ByZXBhcmUgKHNpbmstPnBjbSkgPCAwKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBwcmVwYXJlIGRldmljZTogJXMiLAorICAgICAgICBwY21fZ2V0X2Vycm9yIChzaW5rLT5wY20pKTsKKyAgICBnb3RvIGZhaWw7CisgIH0KKworICBzcGVjLT5zZWdzaXplID0gcGNtX2ZyYW1lc190b19ieXRlcyAoc2luay0+cGNtLCBjb25maWcucGVyaW9kX3NpemUpOworICBzcGVjLT5zZWd0b3RhbCA9IGNvbmZpZy5wZXJpb2RfY291bnQ7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIkNvbmZpZ3VyZWQgZm9yICV1IHBlcmlvZHMgb2YgJXUgZnJhbWVzIiwKKyAgICAgIGNvbmZpZy5wZXJpb2RfY291bnQsIGNvbmZpZy5wZXJpb2Rfc2l6ZSk7CisKKyAgcmV0dXJuIFRSVUU7CisKK2ZhaWw6CisgIGlmIChzaW5rLT5wY20pCisgICAgcGNtX2Nsb3NlIChzaW5rLT5wY20pOworCisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGlueWFsc2Ffc2lua191bnByZXBhcmUgKEdzdEF1ZGlvU2luayAqIGFzaW5rKQoreworICBHc3RUaW55YWxzYVNpbmsgKnNpbmsgPSBHU1RfVElOWUFMU0FfU0lOSyAoYXNpbmspOworCisgIGlmIChwY21fc3RvcCAoc2luay0+cGNtKSA8IDApIHsKKyAgICBHU1RfRVJST1JfT0JKRUNUIChzaW5rLCAiQ291bGQgbm90IHN0b3AgZGV2aWNlOiAlcyIsCisgICAgICAgIHBjbV9nZXRfZXJyb3IgKHNpbmstPnBjbSkpOworICB9CisKKyAgLyogbXV0ZXggd2l0aCBnZXRjYXBzICovCisgIEdTVF9PQkpFQ1RfTE9DSyAoc2luayk7CisKKyAgaWYgKHBjbV9jbG9zZSAoc2luay0+cGNtKSkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJDb3VsZCBub3QgY2xvc2UgZGV2aWNlOiAlcyIsCisgICAgICAgIHBjbV9nZXRfZXJyb3IgKHNpbmstPnBjbSkpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHNpbmstPnBjbSA9IE5VTEw7CisKKyAgZ3N0X2NhcHNfcmVwbGFjZSAoJnNpbmstPmNhY2hlZF9jYXBzLCBOVUxMKTsKKworICBHU1RfT0JKRUNUX1VOTE9DSyAoc2luayk7CisKKyAgR1NUX0RFQlVHX09CSkVDVCAoc2luaywgIkRldmljZSB1bnByZXBhcmVkIik7CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3RpbnlhbHNhX3NpbmtfY2xvc2UgKEdzdEF1ZGlvU2luayAqIGFzaW5rKQoreworICAvKiBOb3RoaW5nIHRvIGRvIGhlcmUsIHNlZSBnc3RfdGlueWFsc2Ffc2lua19vcGVuKCkgKi8KKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnaW50Citnc3RfdGlueWFsc2Ffc2lua193cml0ZSAoR3N0QXVkaW9TaW5rICogYXNpbmssIGdwb2ludGVyIGRhdGEsIGd1aW50IGxlbmd0aCkKK3sKKyAgR3N0VGlueWFsc2FTaW5rICpzaW5rID0gR1NUX1RJTllBTFNBX1NJTksgKGFzaW5rKTsKKyAgaW50IHJldDsKKworYWdhaW46CisgIEdTVF9ERUJVR19PQkpFQ1QgKHNpbmssICJTdGFydGluZyB3cml0ZSIpOworCisgIHJldCA9IHBjbV93cml0ZSAoc2luay0+cGNtLCBkYXRhLCBsZW5ndGgpOworICBpZiAocmV0ID09IC1FUElQRSkgeworICAgIEdTVF9XQVJOSU5HX09CSkVDVCAoc2luaywgIkdvdCBhbiB1bmRlcnJ1biIpOworCisgICAgaWYgKHBjbV9wcmVwYXJlIChzaW5rLT5wY20pIDwgMCkgeworICAgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBwcmVwYXJlIGRldmljZTogJXMiLAorICAgICAgICAgIHBjbV9nZXRfZXJyb3IgKHNpbmstPnBjbSkpOworICAgICAgcmV0dXJuIC0xOworICAgIH0KKworICAgIGdvdG8gYWdhaW47CisKKyAgfSBlbHNlIGlmIChyZXQgPCAwKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCB3cml0ZSBkYXRhIHRvIGRldmljZTogJXMiLAorICAgICAgICBwY21fZ2V0X2Vycm9yIChzaW5rLT5wY20pKTsKKyAgICByZXR1cm4gLTE7CisgIH0KKworICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiV3JvdGUgJXUgYnl0ZXMiLCBsZW5ndGgpOworCisgIHJldHVybiBsZW5ndGg7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGlueWFsc2Ffc2lua19yZXNldCAoR3N0QXVkaW9TaW5rICogYXNpbmspCit7CisgIEdzdFRpbnlhbHNhU2luayAqc2luayA9IEdTVF9USU5ZQUxTQV9TSU5LIChhc2luayk7CisKKyAgaWYgKHBjbV9zdG9wIChzaW5rLT5wY20pIDwgMCkgeworICAgIEdTVF9FUlJPUl9PQkpFQ1QgKHNpbmssICJDb3VsZCBub3Qgc3RvcCBkZXZpY2U6ICVzIiwKKyAgICAgICAgcGNtX2dldF9lcnJvciAoc2luay0+cGNtKSk7CisgIH0KKworICBpZiAocGNtX3ByZXBhcmUgKHNpbmstPnBjbSkgPCAwKSB7CisgICAgR1NUX0VSUk9SX09CSkVDVCAoc2luaywgIkNvdWxkIG5vdCBwcmVwYXJlIGRldmljZTogJXMiLAorICAgICAgICBwY21fZ2V0X2Vycm9yIChzaW5rLT5wY20pKTsKKyAgfQorfQorCitzdGF0aWMgZ3VpbnQKK2dzdF90aW55YWxzYV9zaW5rX2RlbGF5IChHc3RBdWRpb1NpbmsgKiBhc2luaykKK3sKKyAgR3N0VGlueWFsc2FTaW5rICpzaW5rID0gR1NUX1RJTllBTFNBX1NJTksgKGFzaW5rKTsKKyAgaW50IGRlbGF5OworCisgIGRlbGF5ID0gcGNtX2dldF9kZWxheSAoc2luay0+cGNtKTsKKworICBpZiAoZGVsYXkgPCAwKSB7CisgICAgLyogVGhpcyBtaWdodCBoYXBwZW4gYmVmb3JlIHRoZSBzdHJlYW0gaGFzIHN0YXJ0ZWQgKi8KKyAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiR290IG5lZ2F0aXZlIGRlbGF5Iik7CisgICAgZGVsYXkgPSAwOworICB9IGVsc2UKKyAgICBHU1RfREVCVUdfT0JKRUNUIChzaW5rLCAiR290IGRlbGF5IG9mICV1IiwgZGVsYXkpOworCisgIHJldHVybiBkZWxheTsKK30KKworc3RhdGljIHZvaWQKK2dzdF90aW55YWxzYV9zaW5rX2NsYXNzX2luaXQgKEdzdFRpbnlhbHNhU2lua0NsYXNzICoga2xhc3MpCit7CisgIEdPYmplY3RDbGFzcyAqZ29iamVjdF9jbGFzcyA9IEdfT0JKRUNUX0NMQVNTIChrbGFzcyk7CisgIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisgIEdzdEJhc2VTaW5rQ2xhc3MgKmJhc2VzaW5rX2NsYXNzID0gR1NUX0JBU0VfU0lOS19DTEFTUyAoa2xhc3MpOworICBHc3RBdWRpb1NpbmtDbGFzcyAqYXVkaW9zaW5rX2NsYXNzID0gR1NUX0FVRElPX1NJTktfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5nZXRfcHJvcGVydHkgPQorICAgICAgR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90aW55YWxzYV9zaW5rX2dldF9wcm9wZXJ0eSk7CisgIGdvYmplY3RfY2xhc3MtPnNldF9wcm9wZXJ0eSA9CisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3Npbmtfc2V0X3Byb3BlcnR5KTsKKworICBiYXNlc2lua19jbGFzcy0+Z2V0X2NhcHMgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3NpbmtfZ2V0Y2Fwcyk7CisKKyAgYXVkaW9zaW5rX2NsYXNzLT5vcGVuID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90aW55YWxzYV9zaW5rX29wZW4pOworICBhdWRpb3NpbmtfY2xhc3MtPnByZXBhcmUgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3NpbmtfcHJlcGFyZSk7CisgIGF1ZGlvc2lua19jbGFzcy0+dW5wcmVwYXJlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90aW55YWxzYV9zaW5rX3VucHJlcGFyZSk7CisgIGF1ZGlvc2lua19jbGFzcy0+Y2xvc2UgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3NpbmtfY2xvc2UpOworICBhdWRpb3NpbmtfY2xhc3MtPndyaXRlID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90aW55YWxzYV9zaW5rX3dyaXRlKTsKKyAgYXVkaW9zaW5rX2NsYXNzLT5yZXNldCA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGlueWFsc2Ffc2lua19yZXNldCk7CisgIGF1ZGlvc2lua19jbGFzcy0+ZGVsYXkgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3RpbnlhbHNhX3NpbmtfZGVsYXkpOworCisgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9zdGF0aWNfbWV0YWRhdGEgKGVsZW1lbnRfY2xhc3MsCisgICAgICAidGlueWFsc2EgQXVkaW8gU2luayIsCisgICAgICAiU2luay9BdWRpbyIsICJQbGF5cyBhdWRpbyB0byBhbiBBTFNBIGRldmljZSIsCisgICAgICAiQXJ1biBSYWdoYXZhbiA8YXJ1bkBjZW50cmljdWxhci5jb20+Iik7CisKKyAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKKyAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJnNpbmtfdGVtcGxhdGUpKTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLAorICAgICAgUFJPUF9DQVJELAorICAgICAgZ19wYXJhbV9zcGVjX3VpbnQgKCJjYXJkIiwgIkNhcmQiLCAiVGhlIEFMU0EgY2FyZCB0byB1c2UiLAorICAgICAgICAgIDAsIEdfTUFYVUlOVCwgREVGQVVMVF9DQVJELAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsCisgICAgICBQUk9QX0RFVklDRSwKKyAgICAgIGdfcGFyYW1fc3BlY191aW50ICgiZGV2aWNlIiwgIkRldmljZSIsICJUaGUgQUxTQSBkZXZpY2UgdG8gdXNlIiwKKyAgICAgICAgICAwLCBHX01BWFVJTlQsIERFRkFVTFRfQ0FSRCwKKyAgICAgICAgICBHX1BBUkFNX1JFQURXUklURSB8IEdfUEFSQU1fU1RBVElDX1NUUklOR1MpKTsKKworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAodGlueWFsc2Ffc2lua19kZWJ1ZywgInRpbnlhbHNhc2luayIsIDAsCisgICAgICAidGlueWFsc2EgU2luayIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3RpbnlhbHNhX3NpbmtfaW5pdCAoR3N0VGlueWFsc2FTaW5rICogc2luaykKK3sKKyAgc2luay0+Y2FyZCA9IERFRkFVTFRfQ0FSRDsKKyAgc2luay0+ZGV2aWNlID0gREVGQVVMVF9ERVZJQ0U7CisKKyAgc2luay0+Y2FjaGVkX2NhcHMgPSBOVUxMOworfQpkaWZmIC0tZ2l0IGEvc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5oIGIvc3lzL3RpbnlhbHNhL3RpbnlhbHNhc2luay5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2YWUzYmYKLS0tIC9kZXYvbnVsbAorKysgYi9zeXMvdGlueWFsc2EvdGlueWFsc2FzaW5rLmgKQEAgLTAsMCArMSw1NyBAQAorLyogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTYgQ2VudHJpY3VsYXIgTHRkLgorICogQXV0aG9yOiBBcnVuIFJhZ2hhdmFuCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmbmRlZiBfX1RJTllBTFNBU0lOS19IX18KKyNkZWZpbmUgX19USU5ZQUxTQVNJTktfSF9fCisKKyNpbmNsdWRlIDx0aW55YWxzYS9hc291bmRsaWIuaD4KKworI2luY2x1ZGUgPGdzdC9hdWRpby9nc3RhdWRpb3NpbmsuaD4KKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX1RJTllBTFNBX1NJTksgXAorICAoZ3N0X3RpbnlhbHNhX3NpbmtfZ2V0X3R5cGUoKSkKKyNkZWZpbmUgR1NUX1RJTllBTFNBX1NJTksob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSxHU1RfVFlQRV9USU5ZQUxTQV9TSU5LLEdzdFRpbnlhbHNhU2luaykpCisjZGVmaW5lIEdTVF9USU5ZQUxTQV9TSU5LX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1RJTllBTFNBX1NJTkssR3N0VGlueWFsc2FTaW5rQ2xhc3MpKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0VGlueWFsc2FTaW5rIEdzdFRpbnlhbHNhU2luazsKK3R5cGVkZWYgc3RydWN0IF9Hc3RUaW55YWxzYVNpbmtDbGFzcyBHc3RUaW55YWxzYVNpbmtDbGFzczsKKworc3RydWN0IF9Hc3RUaW55YWxzYVNpbmsgeworICBHc3RBdWRpb1NpbmsgcGFyZW50OworCisgIGludCBjYXJkOworICBpbnQgZGV2aWNlOworCisgIHN0cnVjdCBwY20gKnBjbTsKKworICBHc3RDYXBzICpjYWNoZWRfY2FwczsgLyogZm9yIHF1ZXJpZXMgbWFkZSB3aGlsZSB0aGUgZGV2aWNlIGlzIG9wZW4gKi8KK307CisKK3N0cnVjdCBfR3N0VGlueWFsc2FTaW5rQ2xhc3MgeworICBHc3RBdWRpb1NpbmtDbGFzcyBwYXJlbnRfY2xhc3M7Cit9OworCitHVHlwZSBnc3RfdGlueWFsc2Ffc2lua19nZXRfdHlwZSAodm9pZCk7CisKKyNlbmRpZiAvKiBfX1RJTllBTFNBU0lOS19IX18gKi8KZGlmZiAtLWdpdCBhL3N5cy91dmNoMjY0L01ha2VmaWxlLmluIGIvc3lzL3V2Y2gyNjQvTWFrZWZpbGUuaW4KaW5kZXggOTczZGEwMC4uYjIzNDNmOSAxMDA2NDQKLS0tIGEvc3lzL3V2Y2gyNjQvTWFrZWZpbGUuaW4KKysrIGIvc3lzL3V2Y2gyNjQvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjc5LDYgKzI3OCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzE2LDYgKzMxNyw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI0LDcgKzMyNyw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0Myw4ICszNDUsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzYxLDE2ICszNjQsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzk2LDYgKzQwMCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyMSw2ICs0MjcsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjIsNiArNTMwLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUzNSw4ICs1NDQsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTIsNiArNTU5LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYwOSwxNiArNjE4LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjcwLDYgKzY4MSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODAsNiArNjkyLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjg5LDYgKzcwMiw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MjYsNyArNzQxLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS9zeXMvdXZjaDI2NC9nc3R1dmNoMjY0X21qcGdkZW11eC5jIGIvc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9tanBnZGVtdXguYwppbmRleCA5OTczNGFkLi4xZjliMWM0IDEwMDY0NAotLS0gYS9zeXMvdXZjaDI2NC9nc3R1dmNoMjY0X21qcGdkZW11eC5jCisrKyBiL3N5cy91dmNoMjY0L2dzdHV2Y2gyNjRfbWpwZ2RlbXV4LmMKQEAgLTI5Niw4ICsyOTYsNyBAQAogICBpZiAoc2VsZi0+cHJpdi0+bnYxMl9jYXBzKQogICAgIGdzdF9jYXBzX3VucmVmIChzZWxmLT5wcml2LT5udjEyX2NhcHMpOwogICBzZWxmLT5wcml2LT5udjEyX2NhcHMgPSBOVUxMOwotICBpZiAoc2VsZi0+cHJpdi0+Y2xvY2tfc2FtcGxlcykKLSAgICBnX2ZyZWUgKHNlbGYtPnByaXYtPmNsb2NrX3NhbXBsZXMpOworICBnX2ZyZWUgKHNlbGYtPnByaXYtPmNsb2NrX3NhbXBsZXMpOwogICBzZWxmLT5wcml2LT5jbG9ja19zYW1wbGVzID0gTlVMTDsKIAogICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZGlzcG9zZSAob2JqZWN0KTsKZGlmZiAtLWdpdCBhL3N5cy91dmNoMjY0L2dzdHV2Y2gyNjRfc3JjLmMgYi9zeXMvdXZjaDI2NC9nc3R1dmNoMjY0X3NyYy5jCmluZGV4IDk0YzA5ZmEuLmVhZTdkODIgMTAwNjQ0Ci0tLSBhL3N5cy91dmNoMjY0L2dzdHV2Y2gyNjRfc3JjLmMKKysrIGIvc3lzL3V2Y2gyNjQvZ3N0dXZjaDI2NF9zcmMuYwpAQCAtMzA0Miw4ICszMDQyLDggQEAKICAgaWYgKHNlbGYtPnY0bDJfc3JjKSB7CiAgICAgR3N0Q2FwcyAqZmlsdGVyOwogICAgIEdzdFBhZCAqdjRsX3BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChzZWxmLT52NGwyX3NyYywgInNyYyIpOwotICAgIEdzdENhcHMgKnY0bF9jYXBzID0gZ3N0X3BhZF9xdWVyeV9jYXBzICh2NGxfcGFkLCBOVUxMKTsKLSAgICBHc3RDYXBzICpuZXdfY2FwcyA9IGdzdF91dmNfaDI2NF9zcmNfdHJhbnNmb3JtX2NhcHMgKHNlbGYsIHY0bF9jYXBzKTsKKyAgICBHc3RDYXBzICp2NGxfY2FwcyA9IE5VTEw7CisgICAgR3N0Q2FwcyAqbmV3X2NhcHMgPSBOVUxMOwogCiAgICAgZ3N0X3F1ZXJ5X3BhcnNlX2NhcHMgKHF1ZXJ5LCAmZmlsdGVyKTsKICAgICB2NGxfY2FwcyA9IGdzdF9wYWRfcXVlcnlfY2FwcyAodjRsX3BhZCwgZmlsdGVyKTsKZGlmZiAtLWdpdCBhL3N5cy92Y2QvTWFrZWZpbGUuaW4gYi9zeXMvdmNkL01ha2VmaWxlLmluCmluZGV4IGVhY2YzODIuLjE5ZDA5ZGUgMTAwNjQ0Ci0tLSBhL3N5cy92Y2QvTWFrZWZpbGUuaW4KKysrIGIvc3lzL3ZjZC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy92ZHBhdS9NYWtlZmlsZS5pbiBiL3N5cy92ZHBhdS9NYWtlZmlsZS5pbgppbmRleCA5OTliYTlhLi4xY2U0MmU4IDEwMDY0NAotLS0gYS9zeXMvdmRwYXUvTWFrZWZpbGUuaW4KKysrIGIvc3lzL3ZkcGF1L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI4Miw2ICsyODEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxOSw2ICszMjAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNyw3ICszMzAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDYsOCArMzQ4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NCwxNiArMzY3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5OSw2ICs0MDMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjQsNiArNDMwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI1LDYgKzUzMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzgsOCArNTQ3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU1LDYgKzU2Miw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTIsMTYgKzYyMSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3Myw2ICs2ODQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgzLDYgKzY5NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5Miw2ICs3MDUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI5LDcgKzc0NCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3ZkcGF1L2dzdHZkcHZpZGVvbWVtb3J5LmMgYi9zeXMvdmRwYXUvZ3N0dmRwdmlkZW9tZW1vcnkuYwppbmRleCA4ZDBmYTUxLi44MjE3NjUzIDEwMDY0NAotLS0gYS9zeXMvdmRwYXUvZ3N0dmRwdmlkZW9tZW1vcnkuYworKysgYi9zeXMvdmRwYXUvZ3N0dmRwdmlkZW9tZW1vcnkuYwpAQCAtMjIyLDggKzIyMiw3IEBACiAKICAgZ3N0X29iamVjdF91bnJlZiAodm1lbS0+ZGV2aWNlKTsKIAotICBpZiAodm1lbS0+Y2FjaGUpCi0gICAgZ19mcmVlICh2bWVtLT5jYWNoZSk7CisgIGdfZnJlZSAodm1lbS0+Y2FjaGUpOwogCiAgIGdfc2xpY2VfZnJlZSAoR3N0VmRwVmlkZW9NZW1vcnksIHZtZW0pOwogfQpkaWZmIC0tZ2l0IGEvc3lzL3ZkcGF1L21wZWcvZ3N0dmRwbXBlZ2RlYy5jIGIvc3lzL3ZkcGF1L21wZWcvZ3N0dmRwbXBlZ2RlYy5jCmluZGV4IGVmYTgzNmQuLmU2ZjZmOTUgMTAwNjQ0Ci0tLSBhL3N5cy92ZHBhdS9tcGVnL2dzdHZkcG1wZWdkZWMuYworKysgYi9zeXMvdmRwYXUvbXBlZy9nc3R2ZHBtcGVnZGVjLmMKQEAgLTI2LDcgKzI2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IC1tIGZha2VzcmMgISB2ZHBhdW1wZWdkZWMgISBmYWtlc2luayBzaWxlbnQ9VFJVRQorICogZ3N0LWxhdW5jaC0xLjAgLXYgLW0gZmFrZXNyYyAhIHZkcGF1bXBlZ2RlYyAhIGZha2VzaW5rIHNpbGVudD1UUlVFCiAgKiBdfAogICogPC9yZWZzZWN0Mj4KICAqLwpkaWZmIC0tZ2l0IGEvc3lzL3dhc2FwaS9NYWtlZmlsZS5pbiBiL3N5cy93YXNhcGkvTWFrZWZpbGUuaW4KaW5kZXggMTYwYTkyYi4uMGZiM2FlYiAxMDA2NDQKLS0tIGEvc3lzL3dhc2FwaS9NYWtlZmlsZS5pbgorKysgYi9zeXMvd2FzYXBpL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3dpbmluZXQvTWFrZWZpbGUuaW4gYi9zeXMvd2luaW5ldC9NYWtlZmlsZS5pbgppbmRleCA1NGY0MjUzLi5iN2FmZDlkIDEwMDY0NAotLS0gYS9zeXMvd2luaW5ldC9NYWtlZmlsZS5pbgorKysgYi9zeXMvd2luaW5ldC9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKG5vaW5zdF9IRUFERVJTKSBcCkBAIC0yNzQsNiArMjczLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMTEsNiArMzEyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMTksNyArMzIyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzM4LDggKzM0MCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNTYsMTYgKzM1OSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zOTEsNiArMzk1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDE2LDYgKzQyMiw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUxNyw2ICs1MjUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTMwLDggKzUzOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU0Nyw2ICs1NTQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjA0LDE2ICs2MTMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NjUsNiArNjc2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY3NSw2ICs2ODcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02ODQsNiArNjk3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcyMSw3ICs3MzYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3N5cy93aW5rcy9NYWtlZmlsZS5pbiBiL3N5cy93aW5rcy9NYWtlZmlsZS5pbgppbmRleCBlODdkYjVkLi42NGVlY2FjIDEwMDY0NAotLS0gYS9zeXMvd2lua3MvTWFrZWZpbGUuaW4KKysrIGIvc3lzL3dpbmtzL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OSw2ICsyNzgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNiw2ICszMTcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyNCw3ICszMjcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDMsOCArMzQ1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MSwxNiArMzY0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5Niw2ICs0MDAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjEsNiArNDI3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIyLDYgKzUzMCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzUsOCArNTQ0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUyLDYgKzU1OSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDksMTYgKzYxOCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3MCw2ICs2ODEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjgwLDYgKzY5Miw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OSw2ICs3MDIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI2LDcgKzc0MSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3dpbmtzL2dzdGtzdmlkZW9zcmMuYyBiL3N5cy93aW5rcy9nc3Rrc3ZpZGVvc3JjLmMKaW5kZXggMDdjZGY4Yi4uYzJiYWQzNCAxMDA2NDQKLS0tIGEvc3lzL3dpbmtzL2dzdGtzdmlkZW9zcmMuYworKysgYi9zeXMvd2lua3MvZ3N0a3N2aWRlb3NyYy5jCkBAIC0yNiwxMSArMjYsMTEgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCAtdiBrc3ZpZGVvc3JjIGRvLXN0YXRzPVRSVUUgISBmZm1wZWdjb2xvcnNwYWNlICEgZHNob3d2aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGtzdmlkZW9zcmMgZG8tc3RhdHM9VFJVRSAhIHZpZGVvY29udmVydCAhIGRzaG93dmlkZW9zaW5rCiAgKiBdfCBDYXB0dXJlIGZyb20gYSBjYW1lcmEgYW5kIHJlbmRlciB1c2luZyBkc2hvd3ZpZGVvc2luay4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGtzdmlkZW9zcmMgZG8tc3RhdHM9VFJVRSAhIGltYWdlL2pwZWcsIHdpZHRoPTY0MCwgaGVpZ2h0PTQ4MAotICogISBqcGVnZGVjICEgZmZtcGVnY29sb3JzcGFjZSAhIGRzaG93dmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCAtdiBrc3ZpZGVvc3JjIGRvLXN0YXRzPVRSVUUgISBpbWFnZS9qcGVnLCB3aWR0aD02NDAsIGhlaWdodD00ODAKKyAqICEganBlZ2RlYyAhIHZpZGVvY29udmVydCAhIGRzaG93dmlkZW9zaW5rCiAgKiBdfCBDYXB0dXJlIGZyb20gYW4gTUpQRUcgY2FtZXJhIGFuZCByZW5kZXIgdXNpbmcgZHNob3d2aWRlb3NpbmsuCiAgKiA8L3JlZnNlY3QyPgogICovCkBAIC05OCw4ICs5OCw2IEBACiAgIEdzdEtzQ2xvY2sgKmtzY2xvY2s7CiAgIEdzdEtzVmlkZW9EZXZpY2UgKmRldmljZTsKIAotICBndWludDY0IG9mZnNldDsKLSAgR3N0Q2xvY2tUaW1lIHByZXZfdHM7CiAgIGdib29sZWFuIHJ1bm5pbmc7CiAKICAgLyogV29ya2VyIHRocmVhZCAqLwpAQCAtMzQzLDEwICszNDEsNiBAQAogICBwcml2LT5jb3VudCA9IDA7CiAgIHByaXYtPmZwcyA9IC0xOwogCi0gIC8qIFJlc2V0IHRpbWVzdGFtcGluZyBzdGF0ZSAqLwotICBwcml2LT5vZmZzZXQgPSAwOwotICBwcml2LT5wcmV2X3RzID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKLQogICBwcml2LT5ydW5uaW5nID0gRkFMU0U7CiB9CiAKQEAgLTgxMywxMiArODA3LDExIEBACiAgIEdzdEtzVmlkZW9TcmNQcml2YXRlICpwcml2ID0gR1NUX0tTX1ZJREVPX1NSQ19HRVRfUFJJVkFURSAoc2VsZik7CiAgIEdzdENsb2NrVGltZSBkdXJhdGlvbjsKICAgR3N0Q2xvY2sgKmNsb2NrOwotICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wOworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wLCBiYXNlX3RpbWU7CiAKICAgLyogRG9uJ3QgdGltZXN0YW1wIG11eGVkIHN0cmVhbXMgKi8KICAgaWYgKGdzdF9rc192aWRlb19kZXZpY2Vfc3RyZWFtX2lzX211eGVkIChwcml2LT5kZXZpY2UpKSB7CiAgICAgZHVyYXRpb24gPSB0aW1lc3RhbXAgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotICAgIHByaXYtPm9mZnNldCsrOwogICAgIGdvdG8gdGltZXN0YW1wOwogICB9CiAKQEAgLTgyOCw4OCArODIxLDI1IEBACiAgIGNsb2NrID0gR1NUX0VMRU1FTlRfQ0xPQ0sgKHNlbGYpOwogICBpZiAoY2xvY2sgIT0gTlVMTCkgewogICAgIGdzdF9vYmplY3RfcmVmIChjbG9jayk7Ci0gICAgdGltZXN0YW1wID0gR1NUX0VMRU1FTlQgKHNlbGYpLT5iYXNlX3RpbWU7Ci0KLSAgICBpZiAoR1NUX0NMT0NLX1RJTUVfSVNfVkFMSUQgKHByZXNlbnRhdGlvbl90aW1lKSkgewotICAgICAgaWYgKHByZXNlbnRhdGlvbl90aW1lID4gR1NUX0VMRU1FTlQgKHNlbGYpLT5iYXNlX3RpbWUpCi0gICAgICAgIHByZXNlbnRhdGlvbl90aW1lIC09IEdTVF9FTEVNRU5UIChzZWxmKS0+YmFzZV90aW1lOwotICAgICAgZWxzZQotICAgICAgICBwcmVzZW50YXRpb25fdGltZSA9IDA7Ci0gICAgfQorICAgIGJhc2VfdGltZSA9IEdTVF9FTEVNRU5UIChzZWxmKS0+YmFzZV90aW1lOwogICB9IGVsc2UgewogICAgIHRpbWVzdGFtcCA9IEdTVF9DTE9DS19USU1FX05PTkU7CiAgIH0KICAgR1NUX09CSkVDVF9VTkxPQ0sgKHNlbGYpOwogCiAgIGlmIChjbG9jayAhPSBOVUxMKSB7Ci0KICAgICAvKiBUaGUgdGltZSBhY2NvcmRpbmcgdG8gdGhlIGN1cnJlbnQgY2xvY2sgKi8KLSAgICB0aW1lc3RhbXAgPSBnc3RfY2xvY2tfZ2V0X3RpbWUgKGNsb2NrKSAtIHRpbWVzdGFtcDsKKyAgICB0aW1lc3RhbXAgPSBnc3RfY2xvY2tfZ2V0X3RpbWUgKGNsb2NrKSAtIGJhc2VfdGltZTsKICAgICBpZiAodGltZXN0YW1wID4gZHVyYXRpb24pCiAgICAgICB0aW1lc3RhbXAgLT0gZHVyYXRpb247CiAgICAgZWxzZQogICAgICAgdGltZXN0YW1wID0gMDsKIAotICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAocHJlc2VudGF0aW9uX3RpbWUpKSB7Ci0gICAgICAvKgotICAgICAgICogV2UgZG9uJ3QgdXNlIHRoaXMgZm9yIGFueXRoaW5nIHlldCwgbmVlZCB0byBwb25kZXIgaG93IHRvIGRlYWwKLSAgICAgICAqIHdpdGggcGlucyB0aGF0IHVzZSBhbiBpbnRlcm5hbCBjbG9jayBhbmQgdGltZXN0YW1wIGZyb20gMC4KLSAgICAgICAqLwotICAgICAgR3N0Q2xvY2tUaW1lRGlmZiBkaWZmID0gR1NUX0NMT0NLX0RJRkYgKHByZXNlbnRhdGlvbl90aW1lLCB0aW1lc3RhbXApOwotICAgICAgR1NUX0RFQlVHX09CSkVDVCAoc2VsZiwgImRpZmYgYmV0d2VlbiBnc3QgYW5kIGRyaXZlciB0aW1lc3RhbXA6ICUiCi0gICAgICAgICAgR19HSU5UNjRfRk9STUFULCBkaWZmKTsKLSAgICB9Ci0KICAgICBnc3Rfb2JqZWN0X3VucmVmIChjbG9jayk7CiAgICAgY2xvY2sgPSBOVUxMOwotCi0gICAgLyogVW5sZXNzIGl0J3MgdGhlIGZpcnN0IGZyYW1lLCBhbGlnbiB0aGUgY3VycmVudCB0aW1lc3RhbXAgb24gYSBtdWx0aXBsZQotICAgICAqIG9mIGR1cmF0aW9uIHNpbmNlIHRoZSBwcmV2aW91cyAqLwotICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAocHJpdi0+cHJldl90cykpIHsKLSAgICAgIEdzdENsb2NrVGltZSBkZWx0YTsKLSAgICAgIGd1aW50IGRlbHRhX3JlbWFpbmRlciwgZGVsdGFfb2Zmc2V0OwotCi0gICAgICAvKiBSRVZJU0lUOiBJJ3ZlIHNlZW4gdGhpcyBoYXBwZW4gd2l0aCB0aGUgR3N0U3lzdGVtQ2xvY2sgb24gV2luZG93cywKLSAgICAgICAqICAgICAgICAgIHNjYXJ5Li4uICovCi0gICAgICBpZiAodGltZXN0YW1wIDwgcHJpdi0+cHJldl90cykgewotICAgICAgICBHU1RfSU5GT19PQkpFQ1QgKHNlbGYsICJjbG9jayBpcyB0aWNraW5nIGJhY2t3YXJkcyIpOwotICAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgICB9Ci0KLSAgICAgIC8qIFJvdW5kIHRvIGEgZHVyYXRpb24gYm91bmRhcnkgKi8KLSAgICAgIGRlbHRhID0gdGltZXN0YW1wIC0gcHJpdi0+cHJldl90czsKLSAgICAgIGRlbHRhX3JlbWFpbmRlciA9IGRlbHRhICUgZHVyYXRpb247Ci0KLSAgICAgIGlmIChkZWx0YV9yZW1haW5kZXIgPCBkdXJhdGlvbiAvIDMpCi0gICAgICAgIHRpbWVzdGFtcCAtPSBkZWx0YV9yZW1haW5kZXI7Ci0gICAgICBlbHNlCi0gICAgICAgIHRpbWVzdGFtcCArPSBkdXJhdGlvbiAtIGRlbHRhX3JlbWFpbmRlcjsKLQotICAgICAgLyogSG93IG1hbnkgZnJhbWVzIGFyZSB3ZSBvZmYgdGhlbj8gKi8KLSAgICAgIGRlbHRhID0gdGltZXN0YW1wIC0gcHJpdi0+cHJldl90czsKLSAgICAgIGRlbHRhX29mZnNldCA9IGRlbHRhIC8gZHVyYXRpb247Ci0KLSAgICAgIGlmIChkZWx0YV9vZmZzZXQgPT0gMSkgICAgLyogcGVyZmVjdCAqLwotICAgICAgICBHU1RfQlVGRkVSX0ZMQUdfVU5TRVQgKGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RJU0NPTlQpOwotICAgICAgZWxzZSBpZiAoZGVsdGFfb2Zmc2V0ID4gMSkgewotICAgICAgICBndWludCBsb3N0ID0gZGVsdGFfb2Zmc2V0IC0gMTsKLSAgICAgICAgR1NUX0lORk9fT0JKRUNUIChzZWxmLCAibG9zdCAlZCBmcmFtZSVzLCBzZXR0aW5nIGRpc2NvbnQgZmxhZyIsCi0gICAgICAgICAgICBsb3N0LCAobG9zdCA+IDEpID8gInMiIDogIiIpOwotICAgICAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKTsKLSAgICAgIH0gZWxzZSBpZiAoZGVsdGFfb2Zmc2V0ID09IDApIHsgICAvKiBvdmVycHJvZHVjdGlvbiwgc2tpcCB0aGlzIGZyYW1lICovCi0gICAgICAgIEdTVF9JTkZPX09CSkVDVCAoc2VsZiwgInNraXBwaW5nIGZyYW1lIik7Ci0gICAgICAgIHJldHVybiBGQUxTRTsKLSAgICAgIH0KLQotICAgICAgcHJpdi0+b2Zmc2V0ICs9IGRlbHRhX29mZnNldDsKLSAgICB9Ci0KLSAgICBwcml2LT5wcmV2X3RzID0gdGltZXN0YW1wOwogICB9CiAKIHRpbWVzdGFtcDoKLSAgR1NUX0JVRkZFUl9PRkZTRVQgKGJ1ZikgPSBwcml2LT5vZmZzZXQ7Ci0gIEdTVF9CVUZGRVJfT0ZGU0VUX0VORCAoYnVmKSA9IEdTVF9CVUZGRVJfT0ZGU0VUIChidWYpICsgMTsKICAgR1NUX0JVRkZFUl9QVFMgKGJ1ZikgPSB0aW1lc3RhbXA7CiAgIEdTVF9CVUZGRVJfRFRTIChidWYpID0gR1NUX0NMT0NLX1RJTUVfTk9ORTsKICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IGR1cmF0aW9uOwpkaWZmIC0tZ2l0IGEvc3lzL3dpbnNjcmVlbmNhcC9NYWtlZmlsZS5pbiBiL3N5cy93aW5zY3JlZW5jYXAvTWFrZWZpbGUuaW4KaW5kZXggZDc5YmZkZC4uY2Q1MzlhZSAxMDA2NDQKLS0tIGEvc3lzL3dpbnNjcmVlbmNhcC9NYWtlZmlsZS5pbgorKysgYi9zeXMvd2luc2NyZWVuY2FwL01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQobm9pbnN0X0hFQURFUlMpIFwKQEAgLTI3OCw2ICsyNzcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxNSw2ICszMTYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyMyw3ICszMjYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDIsOCArMzQ0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2MCwxNiArMzYzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5NSw2ICszOTksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjAsNiArNDI2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTIxLDYgKzUyOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzQsOCArNTQzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTUxLDYgKzU1OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDgsMTYgKzYxNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2OSw2ICs2ODAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc5LDYgKzY5MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4OCw2ICs3MDEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzI1LDcgKzc0MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvc3lzL3dpbnNjcmVlbmNhcC9nc3RkeDlzY3JlZW5jYXBzcmMuYyBiL3N5cy93aW5zY3JlZW5jYXAvZ3N0ZHg5c2NyZWVuY2Fwc3JjLmMKaW5kZXggOWE4NTZlMC4uMGY4ODliMiAxMDA2NDQKLS0tIGEvc3lzL3dpbnNjcmVlbmNhcC9nc3RkeDlzY3JlZW5jYXBzcmMuYworKysgYi9zeXMvd2luc2NyZWVuY2FwL2dzdGR4OXNjcmVlbmNhcHNyYy5jCkBAIC0zMCwxMSArMzAsMTEgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIHBpcGVsaW5lczwvdGl0bGU+CiAgKiB8WwotICogZ3N0LWxhdW5jaCBkeDlzY3JlZW5jYXBzcmMgISBmZm1wZWdjb2xvcnNwYWNlICEgZHNob3d2aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGR4OXNjcmVlbmNhcHNyYyAhIHZpZGVvY29udmVydCAhIGRzaG93dmlkZW9zaW5rCiAgKiBdfCBDYXB0dXJlIHRoZSBkZXNrdG9wIGFuZCBkaXNwbGF5IGl0LgogICogfFsKLSAqIGdzdC1sYXVuY2ggZHg5c2NyZWVuY2Fwc3JjIHg9MTAwIHk9MTAwIHdpZHRoPTMyMCBoZWlnaHQ9MjQwICEKLSAqIGZmbXBlZ2NvbG9yc3BhY2UgISBkc2hvd3ZpZGVvc2luaworICogZ3N0LWxhdW5jaC0xLjAgZHg5c2NyZWVuY2Fwc3JjIHg9MTAwIHk9MTAwIHdpZHRoPTMyMCBoZWlnaHQ9MjQwICEKKyAqIHZpZGVvY29udmVydCAhIGRzaG93dmlkZW9zaW5rCiAgKiBdfCBDYXB0dXJlIGEgcG9ydGlvbiBvZiB0aGUgZGVza3RvcCBhbmQgZGlzcGxheSBpdC4KICAqIDwvcmVmc2VjdDI+CiAgKi8KZGlmZiAtLWdpdCBhL3N5cy93aW5zY3JlZW5jYXAvZ3N0Z2Rpc2NyZWVuY2Fwc3JjLmMgYi9zeXMvd2luc2NyZWVuY2FwL2dzdGdkaXNjcmVlbmNhcHNyYy5jCmluZGV4IDkyZDllYzIuLjU1YmQ0YjUgMTAwNjQ0Ci0tLSBhL3N5cy93aW5zY3JlZW5jYXAvZ3N0Z2Rpc2NyZWVuY2Fwc3JjLmMKKysrIGIvc3lzL3dpbnNjcmVlbmNhcC9nc3RnZGlzY3JlZW5jYXBzcmMuYwpAQCAtMzIsMTEgKzMyLDExIEBACiAgKiA8cmVmc2VjdDI+CiAgKiA8dGl0bGU+RXhhbXBsZSBwaXBlbGluZXM8L3RpdGxlPgogICogfFsKLSAqIGdzdC1sYXVuY2ggZ2Rpc2NyZWVuY2Fwc3JjICEgZmZtcGVnY29sb3JzcGFjZSAhIGRzaG93dmlkZW9zaW5rCisgKiBnc3QtbGF1bmNoLTEuMCBnZGlzY3JlZW5jYXBzcmMgISB2aWRlb2NvbnZlcnQgISBkc2hvd3ZpZGVvc2luawogICogXXwgQ2FwdHVyZSB0aGUgZGVza3RvcCBhbmQgZGlzcGxheSBpdC4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIGdkaXNjcmVlbmNhcHNyYyB4PTEwMCB5PTEwMCB3aWR0aD0zMjAgaGVpZ2h0PTI0MCBjdXJzb3I9VFJVRQotICogISBmZm1wZWdjb2xvcnNwYWNlICEgZHNob3d2aWRlb3NpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIGdkaXNjcmVlbmNhcHNyYyB4PTEwMCB5PTEwMCB3aWR0aD0zMjAgaGVpZ2h0PTI0MCBjdXJzb3I9VFJVRQorICogISB2aWRlb2NvbnZlcnQgISBkc2hvd3ZpZGVvc2luawogICogXXwgQ2FwdHVyZSBhIHBvcnRpb24gb2YgdGhlIGRlc2t0b3AsIGluY2x1ZGluZyB0aGUgbW91c2UgY3Vyc29yLCBhbmQKICAqIGRpc3BsYXkgaXQuCiAgKiA8L3JlZnNlY3QyPgpkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuaW4gYi90ZXN0cy9NYWtlZmlsZS5pbgppbmRleCAyMTE2MjZjLi42ODQ2MjVhIDEwMDY0NAotLS0gYS90ZXN0cy9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9NYWtlZmlsZS5pbgpAQCAtMTE0LDE2ICsxMTQsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0Nyw2ICsyNDYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4NCw2ICsyODUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5Miw3ICsyOTUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTEsOCArMzEzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyOSwxNiArMzMyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2NCw2ICszNjgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODksNiArMzk1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDkwLDYgKzQ5OCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDMsOCArNTEyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTIwLDYgKzUyNyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzcsMTYgKzU4NiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzOCw2ICs2NDksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ4LDYgKzY2MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Nyw2ICs2NzAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk0LDcgKzcwOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQppbmRleCBmYmNlNGQ3Li4zZjlhZDlkIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQorKysgYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQpAQCAtOSwxNSArOSwxNSBAQAogCUdTVF9SRUdJU1RSWV8xXzA9JChDSEVDS19SRUdJU1RSWSkKIAogIyBHU1RfUExVR0lOU19YWVpfRElSIGlzIG9ubHkgc2V0IGluIGFuIHVuaW5zdGFsbGVkIHNldHVwCi1BTV9URVNUU19FTlZJUk9OTUVOVCA9IFwKK0FNX1RFU1RTX0VOVklST05NRU5UICs9IFwKIAkkKFJFR0lTVFJZX0VOVklST05NRU5UKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKIAlHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMD0JCQkJXAogCUdTVF9QTFVHSU5fUEFUSF8xXzA9JCh0b3BfYnVpbGRkaXIpL2dzdDokKHRvcF9idWlsZGRpcikvc3lzOiQodG9wX2J1aWxkZGlyKS9leHQ6JChHU1RfUExVR0lOU19MSUJBVl9ESVIpOiQoR1NUX1BMVUdJTlNfVUdMWV9ESVIpOiQoR1NUX1BMVUdJTlNfR09PRF9ESVIpOiQoR1NUX1BMVUdJTlNfQkFTRV9ESVIpOiQoR1NUX1BMVUdJTlNfRElSKSBcCiAJR1NUX1BMVUdJTl9MT0FESU5HX1dISVRFTElTVD0iZ3N0cmVhbWVyQCQoR1NUX1BMVUdJTlNfRElSKTpnc3QtcGx1Z2lucy1iYXNlQCQoR1NUUEJfUExVR0lOU19ESVIpOmdzdC1wbHVnaW5zLWdvb2Q6Z3N0LXBsdWdpbnMtdWdseTpnc3QtbGliYXY6Z3N0LXBsdWdpbnMtYmFkQCQodG9wX2J1aWxkZGlyKSIgXAogCUdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFM9ImFwZXhzaW5rIGF2ZHRwc3JjIGNhbWVyYWJpbiBkYzEzOTRzcmMgXAogCSAgICBkY2NwY2xpZW50c3JjIGRjY3BjbGllbnRzaW5rIGRjY3BzZXJ2ZXJzcmMgZGNjcHNlcnZlcnNpbmsgZGVja2xpbmtzcmMgXAotCSAgICBkZWNrbGlua3NpbmsgZHRsc3NydHBkZWMgZHRsc3NydHBlbmMgZHZic3JjIGR2YmJhc2ViaW4gZGZidmlkZW9zaW5rIGZlc3RpdmFsIGZsdWlkc3ludGggZ3NldHRpbmdzdmlkZW9zcmMgXAotCSAgICBnc2V0dGluZ3N2aWRlb3NpbmsgZ3NldHRpbmdzYXVkaW9zcmMgZ3NldHRpbmdzYXVkaW9zaW5rIGxpbnN5c3NkaXNyYyBsaW5zeXNzZGlzaW5rIG5hc3NpbmsgXAorCSAgICBkZWNrbGlua3NpbmsgZHRsc3NydHBkZWMgZHRsc3NydHBlbmMgZHZic3JjIGR2YmJhc2ViaW4gZGZidmlkZW9zaW5rIGZlc3RpdmFsIGZsdWlkc3ludGggXAorCSAgICBsaW5zeXNzZGlzcmMgbGluc3lzc2Rpc2luayBuYXNzaW5rIFwKIAkgICAgcnNuZHZkYmluIHNkbGF1ZGlvc2luayBzZGx2aWRlb3NpbmsgdmNkc3JjIHJmYnNyYyB2ZHBhdXl1dnZpZGVvIHZkcGF1dmlkZW95dXYgXAogCSAgICB2ZHBhdW1wZWdkZWMgdmRwYXVtcGVnNGRlYyB2ZHBhdWgyNjRkZWMgdmRwYXV2aWRlb3Bvc3Rwcm9jZXNzIHZkcGF1c2luayBuZW9uaHR0cHNyYyIKIApAQCAtNDIsOCArNDIsMTAgQEAKIAogaWYgVVNFX0RBU0gKIGNoZWNrX2Rhc2ggPSBlbGVtZW50cy9kYXNoX21wZAorY2hlY2tfZGFzaF9kZW11eCA9IGVsZW1lbnRzL2Rhc2hfZGVtdXgKIGVsc2UKIGNoZWNrX2Rhc2ggPQorY2hlY2tfZGFzaF9kZW11eCA9CiBlbmRpZgogCiBpZiBVU0VfRkFBQwpAQCAtODIsMTggKzg0LDE4IEBACiBjaGVja19tcGVnMmVuYyA9CiBlbmRpZgogCi1pZiBVU0VfTVBHMTIzCi1jaGVja19tcGcxMjMgPSBlbGVtZW50cy9tcGcxMjNhdWRpb2RlYwotZWxzZQotY2hlY2tfbXBnMTIzID0KLWVuZGlmCi0KIGlmIFVTRV9NUExFWAogY2hlY2tfbXBsZXggPSBlbGVtZW50cy9tcGxleAogZWxzZQogY2hlY2tfbXBsZXggPQogZW5kaWYKIAoraWYgVVNFX1NNT09USFNUUkVBTUlORworY2hlY2tfbXNzZGVtdXggPSBlbGVtZW50cy9tc3NkZW11eAorZWxzZQorY2hlY2tfbXNzZGVtdXggPQorZW5kaWYKKwogaWYgVVNFX05FT04KIGNoZWNrX25lb24gPSBlbGVtZW50cy9uZW9uaHR0cHNyYwogZWxzZQpAQCAtMTU0LDEyICsxNTYsNiBAQAogY2hlY2tfb3BlbmN2ID0KIGVuZGlmCiAKLWlmIFVTRV9PUFVTCi1jaGVja19vcHVzID0gZWxlbWVudHMvb3B1cwotZWxzZQotY2hlY2tfb3B1cyA9Ci1lbmRpZgotCiBpZiBVU0VfU1NIMgogY2hlY2tfY3VybF9zZnRwID0gZWxlbWVudHMvY3VybHNmdHBzaW5rCiBlbHNlCkBAIC0xNjcsMTEgKzE2MywxOSBAQAogZW5kaWYKIAogaWYgVVNFX0hMUwotY2hlY2tfaGxzZGVtdXggPSBlbGVtZW50cy9obHNkZW11eF9tM3U4CitjaGVja19obHNkZW11eF9tM3U4ID0gZWxlbWVudHMvaGxzZGVtdXhfbTN1OAorY2hlY2tfaGxzZGVtdXggPSBlbGVtZW50cy9obHNfZGVtdXgKIGVsc2UKK2NoZWNrX2hsc2RlbXV4X20zdTggPQogY2hlY2tfaGxzZGVtdXggPQogZW5kaWYKIAoraWYgV0lUSF9HU1RfUExBWUVSX1RFU1RTCitjaGVja19wbGF5ZXIgPSBsaWJzL3BsYXllcgorZWxzZQorY2hlY2tfcGxheWVyID0KK2VuZGlmCisKIGlmIFVTRV9DVVJMCiBjaGVja19jdXJsID0gZWxlbWVudHMvY3VybGh0dHBzaW5rIFwKIAllbGVtZW50cy9jdXJsZmlsZXNpbmsgXApAQCAtMjA1LDYgKzIwOSw4IEBACiAgICAgbGlicy9nc3RnbG1lbW9yeSBcCiAgICAgbGlicy9nc3RnbHVwbG9hZCBcCiAgICAgbGlicy9nc3RnbGNvbG9yY29udmVydCBcCisgICAgbGlicy9nc3RnbHF1ZXJ5IFwKKyAgICBsaWJzL2dzdGdsc2wgXAogICAgIGVsZW1lbnRzL2dsaW1hZ2VzaW5rCiBlbHNlCiBjaGVja19nbD0KQEAgLTIyOSwyNiArMjM1LDI3IEBACiAJZ2VuZXJpYy9zdGF0ZXMgXAogCSQoY2hlY2tfYXNzcmVuZGVyKSBcCiAJJChjaGVja19kYXNoKSBcCisJJChjaGVja19kYXNoX2RlbXV4KSBcCiAJJChjaGVja19mYWFjKSAgXAogCSQoY2hlY2tfZmFhZCkgIFwKIAkkKGNoZWNrX3ZvYWFjZW5jKSBcCiAJJChjaGVja192b2FtcndiZW5jKSBcCiAJJChjaGVja19tcGVnMmVuYykgIFwKIAkkKGNoZWNrX21wbGV4KSAgICAgXAorCSQoY2hlY2tfbXNzZGVtdXgpIFwKIAkkKGNoZWNrX29mYSkgICAgICAgIFwKIAkkKGNoZWNrX3RpbWlkaXR5KSAgXAogCSQoY2hlY2tfa2F0ZSkgIFwKIAkkKGNoZWNrX29wZW5jdikgXAotCSQoY2hlY2tfb3B1cykgIFwKIAkkKGNoZWNrX2N1cmwpIFwKIAkkKGNoZWNrX3NobSkgXAogCWVsZW1lbnRzL2FpZmZwYXJzZSBcCisJZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsIFwKIAllbGVtZW50cy9hdXRvY29udmVydCBcCiAJZWxlbWVudHMvYXV0b3ZpZGVvY29udmVydCBcCiAJZWxlbWVudHMvYXVkaW9pbnRlcmxlYXZlIFwKIAllbGVtZW50cy9hdWRpb21peGVyIFwKIAllbGVtZW50cy9hc2ZtdXggXAotCWVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIgXAogCWVsZW1lbnRzL2NhbWVyYWJpbiBcCiAJZWxlbWVudHMvZGF0YXVyaXNyYyBcCiAJZWxlbWVudHMvZ2RwcGF5IFwKQEAgLTI2MSwxMSArMjY4LDEyIEBACiAJZWxlbWVudHMvbXBlZ3RzbXV4IFwKIAllbGVtZW50cy9tcGVndmlkZW9wYXJzZSBcCiAJZWxlbWVudHMvbXBlZzR2aWRlb3BhcnNlIFwKLQkkKGNoZWNrX21wZzEyMykgXAogCWVsZW1lbnRzL214ZmRlbXV4IFwKIAllbGVtZW50cy9teGZtdXggXAorCWVsZW1lbnRzL25ldHNpbSBcCiAJZWxlbWVudHMvcGNhcHBhcnNlIFwKLQllbGVtZW50cy9ydHBvbnZpZiBcCisJZWxlbWVudHMvcnRwb252aWZwYXJzZSBcCisJZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAgXAogCWVsZW1lbnRzL2lkM211eCBcCiAJcGlwZWxpbmVzL214ZiBcCiAJJChjaGVja19taW1pYykgXApAQCAtMjgzLDcgKzI5MSw5IEBACiAJJChjaGVja19vcmMpIFwKIAlsaWJzL2luc2VydGJpbiBcCiAJJChjaGVja19nbCkgXAorCSQoY2hlY2tfaGxzZGVtdXhfbTN1OCkgXAogCSQoY2hlY2tfaGxzZGVtdXgpIFwKKwkkKGNoZWNrX3BsYXllcikgXAogCSQoRVhQRVJJTUVOVEFMX0NIRUNLUykKIAogbm9pbnN0X0hFQURFUlMgPSBlbGVtZW50cy9teGZkZW11eC5oCkBAIC0zNjksNiArMzc5LDEzIEBACiAJJChHU1RfUExVR0lOU19CQURfTElCUykgLWxnc3Rjb2RlY3BhcnNlcnMtQEdTVF9BUElfVkVSU0lPTkAgXAogCSQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkKIAorZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX0NGTEFHUyA9IFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCitlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfTERBREQgPSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkgXAorCS1sZ3N0YXVkaW8tQEdTVF9BUElfVkVSU0lPTkAKKwogZWxlbWVudHNfZmFhZF9DRkxBR1MgPSBcCiAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQpAQCAtMzk4LDE1ICs0MTUsNiBAQAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpIFwKIAktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ACiAKLWVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfU09VUkNFUyA9IGVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYwotZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0JJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NPTlRST0xMRVJfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQotZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9MREFERCA9IFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCAgXAotCS1sZ3N0dmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgCSQoR1NUX0JBU0VfTElCUykgJChHU1RfQ09OVFJPTExFUl9MSUJTKSBcCi0JJChHU1RfTElCUykgJChMREFERCkKLQogZWxlbWVudHNfY2FtZXJhYmluX0NGTEFHUyA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgLURHU1RfVVNFX1VOU1RBQkxFX0FQSQpAQCAtNDMzLDExICs0NDEsNiBAQAogZWxlbWVudHNfbXBlZ3RzbXV4X0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKIGVsZW1lbnRzX21wZWd0c211eF9MREFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSAkKEdTVF9CQVNFX0xJQlMpICQoTERBREQpCiAKLWVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKLWVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0xEQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpIFwKLQktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIC1sZ3N0ZmZ0LUBHU1RfQVBJX1ZFUlNJT05AIC1sZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ACi0KIGVsZW1lbnRzX3V2Y2gyNjRkZW11eF9DRkxBR1MgPSAtRFVWQ0gyNjRERU1VWF9EQVRBRElSPSIkKHNyY2RpcikvZWxlbWVudHMvdXZjaDI2NGRlbXV4X2RhdGEiIFwKIAkJCQkkKEFNX0NGTEFHUykKIApAQCAtNDQ2LDYgKzQ0OSwyNCBAQAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhCiBlbGVtZW50c19kYXNoX21wZF9TT1VSQ0VTID0gZWxlbWVudHMvZGFzaF9tcGQuYwogCitlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKExJQlhNTDJfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpCitlbGVtZW50c19kYXNoX2RlbXV4X0xEQUREID0gXAorCSQoTERBREQpICQoTElCWE1MMl9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YXBwLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEKKworZWxlbWVudHNfZGFzaF9kZW11eF9TT1VSQ0VTID0gZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jIGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uaCBlbGVtZW50cy9kYXNoX2RlbXV4LmMKKworZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTID0gJChBTV9DRkxBR1MpICQoTElCWE1MMl9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykKK2VsZW1lbnRzX21zc2RlbXV4X0xEQUREID0gXAorCSQoTERBREQpICQoTElCWE1MMl9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YXBwLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEKKworZWxlbWVudHNfbXNzZGVtdXhfU09VUkNFUyA9IGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmggZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmggZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmggZWxlbWVudHMvbXNzZGVtdXguYworCiBwaXBlbGluZXNfc3RyZWFtaGVhZGVyX0NGTEFHUyA9ICQoR0lPX0NGTEFHUykgJChBTV9DRkxBR1MpCiBwaXBlbGluZXNfc3RyZWFtaGVhZGVyX0xEQUREID0gJChHSU9fTElCUykgJChMREFERCkKIApAQCAtNDU1LDggKzQ3Niw0MSBAQAogbGlic19pbnNlcnRiaW5fQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpCiAKLWVsZW1lbnRzX3J0cG9udmlmX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKLWVsZW1lbnRzX3J0cG9udmlmX0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgLWxnc3RydHAtJChHU1RfQVBJX1ZFUlNJT04pICQoTERBREQpCitsaWJzX3BsYXllcl9TT1VSQ0VTID0gbGlicy9wbGF5ZXIuYworCitsaWJzX3BsYXllcl9MREFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3BsYXllci9saWJnc3RwbGF5ZXItQEdTVF9BUElfVkVSU0lPTkAubGEgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpCitsaWJzX3BsYXllcl9DRkxBR1MgPSBcCisJJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgXAorCS1EVEVTVF9QQVRIPVwiJChidWlsZGRpcikvbWVkaWFcIgorCitpZiBXSVRIX0dTVF9QTEFZRVJfVEVTVFMKK1BMQVlFUl9NRURJQV9GSUxFUyA9IFwKKwltZWRpYS9hdWRpby5vZ2cgXAorCW1lZGlhL2F1ZGlvLXZpZGVvLm9nZyBcCisJbWVkaWEvYXVkaW8tc2hvcnQub2dnIFwKKwltZWRpYS9hdWRpby12aWRlby1zaG9ydC5vZ2cgXAorCW1lZGlhL3NpbnRlbC5ta3YgXAorCW1lZGlhL3Rlc3Rfc3ViLnNydAorCiskKFBMQVlFUl9NRURJQV9GSUxFUyk6CisJJChNS0RJUl9QKSBtZWRpYQorCSQoV0dFVCkgLWMgaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvZGF0YS9tZWRpYS9zbWFsbC8kKHN1YnN0IG1lZGlhLywsJEApIC1PIG1lZGlhLyQoc3Vic3QgbWVkaWEvLCwkQCkKKworbGlicy9wbGF5ZXJfZHVtbXkuYzogJChQTEFZRVJfTUVESUFfRklMRVMpCisJdG91Y2ggbGlicy9wbGF5ZXJfZHVtbXkuYworCitub2Rpc3RfbGlic19wbGF5ZXJfU09VUkNFUyA9IGxpYnMvcGxheWVyX2R1bW15LmMKKworQ0xFQU5GSUxFUyArPSAkKFBMQVlFUl9NRURJQV9GSUxFUykgbGlicy9wbGF5ZXJfZHVtbXkuYworZW5kaWYKKworZWxlbWVudHNfcnRwb252aWZwYXJzZV9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChBTV9DRkxBR1MpCitlbGVtZW50c19ydHBvbnZpZnBhcnNlX0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgLWxnc3RydHAtJChHU1RfQVBJX1ZFUlNJT04pICQoTERBREQpCisKK2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKK2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgLWxnc3RydHAtJChHU1RfQVBJX1ZFUlNJT04pICQoTERBREQpCiAKIEVYVFJBX0RJU1QgPSBnc3QtcGx1Z2lucy1iYWQuc3VwcCAkKHV2Y2gyNjRfZGlzdF9kYXRhKQogCkBAIC01MTUsNiArNTY5LDI0IEBACiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKIAkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpCiAKK2xpYnNfZ3N0Z2xxdWVyeV9MREFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKQorCitsaWJzX2dzdGdscXVlcnlfQ0ZMQUdTID0gXAorCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorCitsaWJzX2dzdGdsc2xfTERBREQgPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkKKworbGlic19nc3RnbHNsX0NGTEFHUyA9IFwKKwkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwktREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKKwogZWxlbWVudHNfZ2xpbWFnZXNpbmtfQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXApAQCAtNTQ2LDYgKzYxOCwxMyBAQAogZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9MREFERCA9ICQoR1NUX0JBU0VfTElCUykgJChMREFERCkKIGVsZW1lbnRzX2hsc2RlbXV4X20zdThfU09VUkNFUyA9IGVsZW1lbnRzL2hsc2RlbXV4X20zdTguYwogCitlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTID0gJChHU1RfQkFTRV9DRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpCitlbGVtZW50c19obHNfZGVtdXhfTERBREQgPSAkKEdTVF9CQVNFX0xJQlMpICQoTERBREQpIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YXBwLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEKK2VsZW1lbnRzX2hsc19kZW11eF9TT1VSQ0VTID0gZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jIGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uaCBlbGVtZW50cy9obHNfZGVtdXguYworCiBvcmNfY29tcG9zaXRvcl9DRkxBR1MgPSAkKE9SQ19DRkxBR1MpCiBvcmNfY29tcG9zaXRvcl9MREFERCA9ICQoT1JDX0xJQlMpIC1sb3JjLXRlc3QtMC40CiBub2Rpc3Rfb3JjX2NvbXBvc2l0b3JfU09VUkNFUyA9IG9yYy9jb21wb3NpdG9yLmMKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmluIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuaW4KaW5kZXggYzIwY2JiMC4uM2NjM2FkOSAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvY2hlY2svTWFrZWZpbGUuaW4KQEAgLTkxLDM0ICs5MSwzNyBAQAogYnVpbGRfdHJpcGxldCA9IEBidWlsZEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAotbm9pbnN0X1BST0dSQU1TID0gcGlwZWxpbmVzL3N0cmVhbWhlYWRlciQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMjcpCitub2luc3RfUFJPR1JBTVMgPSBwaXBlbGluZXMvc3RyZWFtaGVhZGVyJChFWEVFWFQpICQoYW1fX0VYRUVYVF8yOSkKIGNoZWNrX1BST0dSQU1TID0gZ2VuZXJpYy9zdGF0ZXMkKEVYRUVYVCkgJChhbV9fRVhFRVhUXzEpIFwKIAkkKGFtX19FWEVFWFRfMikgJChhbV9fRVhFRVhUXzMpICQoYW1fX0VYRUVYVF80KSBcCiAJJChhbV9fRVhFRVhUXzUpICQoYW1fX0VYRUVYVF82KSAkKGFtX19FWEVFWFRfNykgXAogCSQoYW1fX0VYRUVYVF84KSAkKGFtX19FWEVFWFRfOSkgJChhbV9fRVhFRVhUXzEwKSBcCiAJJChhbV9fRVhFRVhUXzExKSAkKGFtX19FWEVFWFRfMTIpICQoYW1fX0VYRUVYVF8xMykgXAotCSQoYW1fX0VYRUVYVF8xNSkgJChhbV9fRVhFRVhUXzE2KSBlbGVtZW50cy9haWZmcGFyc2UkKEVYRUVYVCkgXAorCSQoYW1fX0VYRUVYVF8xNCkgJChhbV9fRVhFRVhUXzE2KSAkKGFtX19FWEVFWFRfMTcpIFwKKwllbGVtZW50cy9haWZmcGFyc2UkKEVYRUVYVCkgXAorCWVsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbCQoRVhFRVhUKSBcCiAJZWxlbWVudHMvYXV0b2NvbnZlcnQkKEVYRUVYVCkgXAogCWVsZW1lbnRzL2F1dG92aWRlb2NvbnZlcnQkKEVYRUVYVCkgXAogCWVsZW1lbnRzL2F1ZGlvaW50ZXJsZWF2ZSQoRVhFRVhUKSBlbGVtZW50cy9hdWRpb21peGVyJChFWEVFWFQpIFwKLQllbGVtZW50cy9hc2ZtdXgkKEVYRUVYVCkgZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplciQoRVhFRVhUKSBcCi0JZWxlbWVudHMvY2FtZXJhYmluJChFWEVFWFQpIGVsZW1lbnRzL2RhdGF1cmlzcmMkKEVYRUVYVCkgXAotCWVsZW1lbnRzL2dkcHBheSQoRVhFRVhUKSBlbGVtZW50cy9nZHBkZXBheSQoRVhFRVhUKSBcCi0JZWxlbWVudHMvY29tcG9zaXRvciQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMTcpIFwKLQllbGVtZW50cy9qcGVncGFyc2UkKEVYRUVYVCkgZWxlbWVudHMvaDI2M3BhcnNlJChFWEVFWFQpIFwKLQllbGVtZW50cy9oMjY0cGFyc2UkKEVYRUVYVCkgZWxlbWVudHMvbXBlZ3RzbXV4JChFWEVFWFQpIFwKLQllbGVtZW50cy9tcGVndmlkZW9wYXJzZSQoRVhFRVhUKSBcCi0JZWxlbWVudHMvbXBlZzR2aWRlb3BhcnNlJChFWEVFWFQpICQoYW1fX0VYRUVYVF8xOCkgXAotCWVsZW1lbnRzL214ZmRlbXV4JChFWEVFWFQpIGVsZW1lbnRzL214Zm11eCQoRVhFRVhUKSBcCi0JZWxlbWVudHMvcGNhcHBhcnNlJChFWEVFWFQpIGVsZW1lbnRzL3J0cG9udmlmJChFWEVFWFQpIFwKLQllbGVtZW50cy9pZDNtdXgkKEVYRUVYVCkgcGlwZWxpbmVzL214ZiQoRVhFRVhUKSBcCi0JJChhbV9fRVhFRVhUXzE5KSBsaWJzL21wZWd2aWRlb3BhcnNlciQoRVhFRVhUKSBcCi0JbGlicy9tcGVndHMkKEVYRUVYVCkgbGlicy9oMjY0cGFyc2VyJChFWEVFWFQpIFwKLQlsaWJzL3ZwOHBhcnNlciQoRVhFRVhUKSBsaWJzL2FnZ3JlZ2F0b3IkKEVYRUVYVCkgXAotCSQoYW1fX0VYRUVYVF8yMCkgbGlicy92YzFwYXJzZXIkKEVYRUVYVCkgJChhbV9fRVhFRVhUXzIxKSBcCi0JJChhbV9fRVhFRVhUXzIyKSBlbGVtZW50cy92aWV3ZmluZGVyYmluJChFWEVFWFQpIFwKLQkkKGFtX19FWEVFWFRfMjMpICQoYW1fX0VYRUVYVF8yNCkgbGlicy9pbnNlcnRiaW4kKEVYRUVYVCkgXAotCSQoYW1fX0VYRUVYVF8yNSkgJChhbV9fRVhFRVhUXzI2KQorCWVsZW1lbnRzL2FzZm11eCQoRVhFRVhUKSBlbGVtZW50cy9jYW1lcmFiaW4kKEVYRUVYVCkgXAorCWVsZW1lbnRzL2RhdGF1cmlzcmMkKEVYRUVYVCkgZWxlbWVudHMvZ2RwcGF5JChFWEVFWFQpIFwKKwllbGVtZW50cy9nZHBkZXBheSQoRVhFRVhUKSBlbGVtZW50cy9jb21wb3NpdG9yJChFWEVFWFQpIFwKKwkkKGFtX19FWEVFWFRfMTgpIGVsZW1lbnRzL2pwZWdwYXJzZSQoRVhFRVhUKSBcCisJZWxlbWVudHMvaDI2M3BhcnNlJChFWEVFWFQpIGVsZW1lbnRzL2gyNjRwYXJzZSQoRVhFRVhUKSBcCisJZWxlbWVudHMvbXBlZ3RzbXV4JChFWEVFWFQpIGVsZW1lbnRzL21wZWd2aWRlb3BhcnNlJChFWEVFWFQpIFwKKwllbGVtZW50cy9tcGVnNHZpZGVvcGFyc2UkKEVYRUVYVCkgZWxlbWVudHMvbXhmZGVtdXgkKEVYRUVYVCkgXAorCWVsZW1lbnRzL214Zm11eCQoRVhFRVhUKSBlbGVtZW50cy9uZXRzaW0kKEVYRUVYVCkgXAorCWVsZW1lbnRzL3BjYXBwYXJzZSQoRVhFRVhUKSBlbGVtZW50cy9ydHBvbnZpZnBhcnNlJChFWEVFWFQpIFwKKwllbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcCQoRVhFRVhUKSBlbGVtZW50cy9pZDNtdXgkKEVYRUVYVCkgXAorCXBpcGVsaW5lcy9teGYkKEVYRUVYVCkgJChhbV9fRVhFRVhUXzE5KSBcCisJbGlicy9tcGVndmlkZW9wYXJzZXIkKEVYRUVYVCkgbGlicy9tcGVndHMkKEVYRUVYVCkgXAorCWxpYnMvaDI2NHBhcnNlciQoRVhFRVhUKSBsaWJzL3ZwOHBhcnNlciQoRVhFRVhUKSBcCisJbGlicy9hZ2dyZWdhdG9yJChFWEVFWFQpICQoYW1fX0VYRUVYVF8yMCkgXAorCWxpYnMvdmMxcGFyc2VyJChFWEVFWFQpICQoYW1fX0VYRUVYVF8yMSkgJChhbV9fRVhFRVhUXzIyKSBcCisJZWxlbWVudHMvdmlld2ZpbmRlcmJpbiQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMjMpIFwKKwkkKGFtX19FWEVFWFRfMjQpIGxpYnMvaW5zZXJ0YmluJChFWEVFWFQpICQoYW1fX0VYRUVYVF8yNSkgXAorCSQoYW1fX0VYRUVYVF8yNikgJChhbV9fRVhFRVhUXzI3KSAkKGFtX19FWEVFWFRfMjgpCitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVAYW1fX2FwcGVuZF8xID0gJChQTEFZRVJfTUVESUFfRklMRVMpIGxpYnMvcGxheWVyX2R1bW15LmMKIHN1YmRpciA9IHRlc3RzL2NoZWNrCiBBQ0xPQ0FMX000ID0gJCh0b3Bfc3JjZGlyKS9hY2xvY2FsLm00CiBhbV9fYWNsb2NhbF9tNF9kZXBzID0gJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvYXMtYWMtZXhwYW5kLm00IFwKQEAgLTE0NSwxNiArMTQ4LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMTc3LDI1ICsxNzksMjUgQEAKIAkkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBAVVNFX0FTU1JFTkRFUl9UUlVFQGFtX19FWEVFWFRfMSA9IGVsZW1lbnRzL2Fzc3JlbmRlciQoRVhFRVhUKQogQFVTRV9EQVNIX1RSVUVAYW1fX0VYRUVYVF8yID0gZWxlbWVudHMvZGFzaF9tcGQkKEVYRUVYVCkKLUBVU0VfRkFBQ19UUlVFQGFtX19FWEVFWFRfMyA9IGVsZW1lbnRzL2ZhYWMkKEVYRUVYVCkKLUBVU0VfRkFBRF9UUlVFQGFtX19FWEVFWFRfNCA9IGVsZW1lbnRzL2ZhYWQkKEVYRUVYVCkKLUBVU0VfVk9BQUNFTkNfVFJVRUBhbV9fRVhFRVhUXzUgPSBlbGVtZW50cy92b2FhY2VuYyQoRVhFRVhUKQotQFVTRV9WT0FNUldCRU5DX1RSVUVAYW1fX0VYRUVYVF82ID0gZWxlbWVudHMvdm9hbXJ3YmVuYyQoRVhFRVhUKQotQFVTRV9NUEVHMkVOQ19UUlVFQGFtX19FWEVFWFRfNyA9IGVsZW1lbnRzL21wZWcyZW5jJChFWEVFWFQpCi1AVVNFX01QTEVYX1RSVUVAYW1fX0VYRUVYVF84ID0gZWxlbWVudHMvbXBsZXgkKEVYRUVYVCkKLUBVU0VfT0ZBX1RSVUVAYW1fX0VYRUVYVF85ID0gZWxlbWVudHMvb2ZhJChFWEVFWFQpCi1AVVNFX1RJTUlESVRZX1RSVUVAYW1fX0VYRUVYVF8xMCA9IGVsZW1lbnRzL3RpbWlkaXR5JChFWEVFWFQpCi1AVVNFX0tBVEVfVFJVRUBhbV9fRVhFRVhUXzExID0gZWxlbWVudHMva2F0ZSQoRVhFRVhUKQotQFVTRV9PUEVOQ1ZfVFJVRUBhbV9fRVhFRVhUXzEyID0gZWxlbWVudHMvdGVtcGxhdGVtYXRjaCQoRVhFRVhUKQotQFVTRV9PUFVTX1RSVUVAYW1fX0VYRUVYVF8xMyA9IGVsZW1lbnRzL29wdXMkKEVYRUVYVCkKLUBVU0VfU1NIMl9UUlVFQGFtX19FWEVFWFRfMTQgPSBlbGVtZW50cy9jdXJsc2Z0cHNpbmskKEVYRUVYVCkKLUBVU0VfQ1VSTF9UUlVFQGFtX19FWEVFWFRfMTUgPSBlbGVtZW50cy9jdXJsaHR0cHNpbmskKEVYRUVYVCkgXAorQFVTRV9EQVNIX1RSVUVAYW1fX0VYRUVYVF8zID0gZWxlbWVudHMvZGFzaF9kZW11eCQoRVhFRVhUKQorQFVTRV9GQUFDX1RSVUVAYW1fX0VYRUVYVF80ID0gZWxlbWVudHMvZmFhYyQoRVhFRVhUKQorQFVTRV9GQUFEX1RSVUVAYW1fX0VYRUVYVF81ID0gZWxlbWVudHMvZmFhZCQoRVhFRVhUKQorQFVTRV9WT0FBQ0VOQ19UUlVFQGFtX19FWEVFWFRfNiA9IGVsZW1lbnRzL3ZvYWFjZW5jJChFWEVFWFQpCitAVVNFX1ZPQU1SV0JFTkNfVFJVRUBhbV9fRVhFRVhUXzcgPSBlbGVtZW50cy92b2FtcndiZW5jJChFWEVFWFQpCitAVVNFX01QRUcyRU5DX1RSVUVAYW1fX0VYRUVYVF84ID0gZWxlbWVudHMvbXBlZzJlbmMkKEVYRUVYVCkKK0BVU0VfTVBMRVhfVFJVRUBhbV9fRVhFRVhUXzkgPSBlbGVtZW50cy9tcGxleCQoRVhFRVhUKQorQFVTRV9TTU9PVEhTVFJFQU1JTkdfVFJVRUBhbV9fRVhFRVhUXzEwID0gZWxlbWVudHMvbXNzZGVtdXgkKEVYRUVYVCkKK0BVU0VfT0ZBX1RSVUVAYW1fX0VYRUVYVF8xMSA9IGVsZW1lbnRzL29mYSQoRVhFRVhUKQorQFVTRV9USU1JRElUWV9UUlVFQGFtX19FWEVFWFRfMTIgPSBlbGVtZW50cy90aW1pZGl0eSQoRVhFRVhUKQorQFVTRV9LQVRFX1RSVUVAYW1fX0VYRUVYVF8xMyA9IGVsZW1lbnRzL2thdGUkKEVYRUVYVCkKK0BVU0VfT1BFTkNWX1RSVUVAYW1fX0VYRUVYVF8xNCA9IGVsZW1lbnRzL3RlbXBsYXRlbWF0Y2gkKEVYRUVYVCkKK0BVU0VfU1NIMl9UUlVFQGFtX19FWEVFWFRfMTUgPSBlbGVtZW50cy9jdXJsc2Z0cHNpbmskKEVYRUVYVCkKK0BVU0VfQ1VSTF9UUlVFQGFtX19FWEVFWFRfMTYgPSBlbGVtZW50cy9jdXJsaHR0cHNpbmskKEVYRUVYVCkgXAogQFVTRV9DVVJMX1RSVUVACWVsZW1lbnRzL2N1cmxmaWxlc2luayQoRVhFRVhUKSBcCi1AVVNFX0NVUkxfVFJVRUAJZWxlbWVudHMvY3VybGZ0cHNpbmskKEVYRUVYVCkgJChhbV9fRVhFRVhUXzE0KSBcCitAVVNFX0NVUkxfVFJVRUAJZWxlbWVudHMvY3VybGZ0cHNpbmskKEVYRUVYVCkgJChhbV9fRVhFRVhUXzE1KSBcCiBAVVNFX0NVUkxfVFJVRUAJZWxlbWVudHMvY3VybHNtdHBzaW5rJChFWEVFWFQpCi1AVVNFX1NITV9UUlVFQGFtX19FWEVFWFRfMTYgPSBlbGVtZW50cy9zaG0kKEVYRUVYVCkKLUBVU0VfRVhJRl9UUlVFQGFtX19FWEVFWFRfMTcgPSBlbGVtZW50cy9qaWZtdXgkKEVYRUVYVCkKLUBVU0VfTVBHMTIzX1RSVUVAYW1fX0VYRUVYVF8xOCA9IGVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjJChFWEVFWFQpCitAVVNFX1NITV9UUlVFQGFtX19FWEVFWFRfMTcgPSBlbGVtZW50cy9zaG0kKEVYRUVYVCkKK0BVU0VfRVhJRl9UUlVFQGFtX19FWEVFWFRfMTggPSBlbGVtZW50cy9qaWZtdXgkKEVYRUVYVCkKIEBVU0VfTUlNSUNfVFJVRUBhbV9fRVhFRVhUXzE5ID0gcGlwZWxpbmVzL21pbWljJChFWEVFWFQpCiBAVVNFX1VWQ0gyNjRfVFJVRUBhbV9fRVhFRVhUXzIwID0gZWxlbWVudHMvdXZjaDI2NGRlbXV4JChFWEVFWFQpCiBAVVNFX1NDSFJPX1RSVUVAYW1fX0VYRUVYVF8yMSA9IGVsZW1lbnRzL3NjaHJvZW5jJChFWEVFWFQpCkBAIC0yMDcsOSArMjA5LDEyIEBACiBAVVNFX0dMX1RSVUVACWxpYnMvZ3N0Z2xtZW1vcnkkKEVYRUVYVCkgXAogQFVTRV9HTF9UUlVFQAlsaWJzL2dzdGdsdXBsb2FkJChFWEVFWFQpIFwKIEBVU0VfR0xfVFJVRUAJbGlicy9nc3RnbGNvbG9yY29udmVydCQoRVhFRVhUKSBcCitAVVNFX0dMX1RSVUVACWxpYnMvZ3N0Z2xxdWVyeSQoRVhFRVhUKSBsaWJzL2dzdGdsc2wkKEVYRUVYVCkgXAogQFVTRV9HTF9UUlVFQAllbGVtZW50cy9nbGltYWdlc2luayQoRVhFRVhUKQogQFVTRV9ITFNfVFJVRUBhbV9fRVhFRVhUXzI2ID0gZWxlbWVudHMvaGxzZGVtdXhfbTN1OCQoRVhFRVhUKQotQFVTRV9ORU9OX1RSVUVAYW1fX0VYRUVYVF8yNyA9IGVsZW1lbnRzL25lb25odHRwc3JjJChFWEVFWFQpCitAVVNFX0hMU19UUlVFQGFtX19FWEVFWFRfMjcgPSBlbGVtZW50cy9obHNfZGVtdXgkKEVYRUVYVCkKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUBhbV9fRVhFRVhUXzI4ID0gbGlicy9wbGF5ZXIkKEVYRUVYVCkKK0BVU0VfTkVPTl9UUlVFQGFtX19FWEVFWFRfMjkgPSBlbGVtZW50cy9uZW9uaHR0cHNyYyQoRVhFRVhUKQogUFJPR1JBTVMgPSAkKG5vaW5zdF9QUk9HUkFNUykKIGVsZW1lbnRzX2FpZmZwYXJzZV9TT1VSQ0VTID0gZWxlbWVudHMvYWlmZnBhcnNlLmMKIGVsZW1lbnRzX2FpZmZwYXJzZV9PQkpFQ1RTID0gZWxlbWVudHMvYWlmZnBhcnNlLiQoT0JKRVhUKQpAQCAtMjU3LDE2ICsyNjIsNiBAQAogCWVsZW1lbnRzL2F1dG92aWRlb2NvbnZlcnQuJChPQkpFWFQpCiBlbGVtZW50c19hdXRvdmlkZW9jb252ZXJ0X0xEQUREID0gJChMREFERCkKIGVsZW1lbnRzX2F1dG92aWRlb2NvbnZlcnRfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpCi1hbV9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX09CSkVDVFMgPSBlbGVtZW50cy9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuJChPQkpFWFQpCi1lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX09CSkVDVFMgPSAgXAotCSQoYW1fZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9PQkpFQ1RTKQotZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMikKLWVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKLQkkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSBcCi0JJChMREZMQUdTKSAtbyAkQAogYW1fZWxlbWVudHNfY2FtZXJhYmluX09CSkVDVFMgPSAgXAogCWVsZW1lbnRzL2VsZW1lbnRzX2NhbWVyYWJpbi1jYW1lcmFiaW4uJChPQkpFWFQpCiBlbGVtZW50c19jYW1lcmFiaW5fT0JKRUNUUyA9ICQoYW1fZWxlbWVudHNfY2FtZXJhYmluX09CSkVDVFMpCkBAIC0zMDcsNiArMzAyLDE5IEBACiBlbGVtZW50c19jdXJsc210cHNpbmtfT0JKRUNUUyA9IGVsZW1lbnRzL2N1cmxzbXRwc2luay4kKE9CSkVYVCkKIGVsZW1lbnRzX2N1cmxzbXRwc2lua19MREFERCA9ICQoTERBREQpCiBlbGVtZW50c19jdXJsc210cHNpbmtfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpCithbV9lbGVtZW50c19kYXNoX2RlbXV4X09CSkVDVFMgPSAgXAorCWVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy4kKE9CSkVYVCkgXAorCWVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLiQoT0JKRVhUKSBcCisJZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uJChPQkpFWFQpIFwKKwllbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXguJChPQkpFWFQpCitlbGVtZW50c19kYXNoX2RlbXV4X09CSkVDVFMgPSAkKGFtX2VsZW1lbnRzX2Rhc2hfZGVtdXhfT0JKRUNUUykKK2VsZW1lbnRzX2Rhc2hfZGVtdXhfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzIpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYQorZWxlbWVudHNfZGFzaF9kZW11eF9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAorCSQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpIFwKKwkkKExERkxBR1MpIC1vICRACiBhbV9lbGVtZW50c19kYXNoX21wZF9PQkpFQ1RTID0gIFwKIAllbGVtZW50cy9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC4kKE9CSkVYVCkKIGVsZW1lbnRzX2Rhc2hfbXBkX09CSkVDVFMgPSAkKGFtX2VsZW1lbnRzX2Rhc2hfbXBkX09CSkVDVFMpCkBAIC0zNzEsNiArMzc5LDE5IEBACiBlbGVtZW50c19oMjY0cGFyc2VfU09VUkNFUyA9IGVsZW1lbnRzL2gyNjRwYXJzZS5jCiBlbGVtZW50c19oMjY0cGFyc2VfT0JKRUNUUyA9IGVsZW1lbnRzL2gyNjRwYXJzZS4kKE9CSkVYVCkKIGVsZW1lbnRzX2gyNjRwYXJzZV9ERVBFTkRFTkNJRVMgPSBsaWJwYXJzZXIubGEgJChhbV9fREVQRU5ERU5DSUVTXzIpCithbV9lbGVtZW50c19obHNfZGVtdXhfT0JKRUNUUyA9ICBcCisJZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMuJChPQkpFWFQpIFwKKwllbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLiQoT0JKRVhUKSBcCisJZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi4kKE9CSkVYVCkgXAorCWVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXguJChPQkpFWFQpCitlbGVtZW50c19obHNfZGVtdXhfT0JKRUNUUyA9ICQoYW1fZWxlbWVudHNfaGxzX2RlbXV4X09CSkVDVFMpCitlbGVtZW50c19obHNfZGVtdXhfREVQRU5ERU5DSUVTID0gJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMikgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhCitlbGVtZW50c19obHNfZGVtdXhfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKKwkkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpIFwKKwkkKExERkxBR1MpIC1vICRACiBhbV9lbGVtZW50c19obHNkZW11eF9tM3U4X09CSkVDVFMgPSAgXAogCWVsZW1lbnRzL2VsZW1lbnRzX2hsc2RlbXV4X20zdTgtaGxzZGVtdXhfbTN1OC4kKE9CSkVYVCkKIGVsZW1lbnRzX2hsc2RlbXV4X20zdThfT0JKRUNUUyA9ICQoYW1fZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9PQkpFQ1RTKQpAQCAtNDI2LDIwICs0NDcsMjMgQEAKIGVsZW1lbnRzX21wZWd2aWRlb3BhcnNlX09CSkVDVFMgPSBlbGVtZW50cy9tcGVndmlkZW9wYXJzZS4kKE9CSkVYVCkKIGVsZW1lbnRzX21wZWd2aWRlb3BhcnNlX0RFUEVOREVOQ0lFUyA9IGxpYnBhcnNlci5sYSBcCiAJJChhbV9fREVQRU5ERU5DSUVTXzIpCi1lbGVtZW50c19tcGcxMjNhdWRpb2RlY19TT1VSQ0VTID0gZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYwotZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfT0JKRUNUUyA9ICBcCi0JZWxlbWVudHMvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMuJChPQkpFWFQpCi1lbGVtZW50c19tcGcxMjNhdWRpb2RlY19ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAotCSQoYW1fX0RFUEVOREVOQ0lFU18yKQotZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCi0JJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKLQkkKGVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgXAotCSQoTERGTEFHUykgLW8gJEAKIGVsZW1lbnRzX21wbGV4X1NPVVJDRVMgPSBlbGVtZW50cy9tcGxleC5jCiBlbGVtZW50c19tcGxleF9PQkpFQ1RTID0gZWxlbWVudHMvbXBsZXguJChPQkpFWFQpCiBlbGVtZW50c19tcGxleF9MREFERCA9ICQoTERBREQpCiBlbGVtZW50c19tcGxleF9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2FtX2VsZW1lbnRzX21zc2RlbXV4X09CSkVDVFMgPSAgXAorCWVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMuJChPQkpFWFQpIFwKKwllbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuJChPQkpFWFQpIFwKKwllbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uJChPQkpFWFQpIFwKKwllbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC4kKE9CSkVYVCkKK2VsZW1lbnRzX21zc2RlbXV4X09CSkVDVFMgPSAkKGFtX2VsZW1lbnRzX21zc2RlbXV4X09CSkVDVFMpCitlbGVtZW50c19tc3NkZW11eF9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMikgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhCitlbGVtZW50c19tc3NkZW11eF9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAorCSQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIFwKKwktbyAkQAogZWxlbWVudHNfbXhmZGVtdXhfU09VUkNFUyA9IGVsZW1lbnRzL214ZmRlbXV4LmMKIGVsZW1lbnRzX214ZmRlbXV4X09CSkVDVFMgPSBlbGVtZW50cy9teGZkZW11eC4kKE9CSkVYVCkKIGVsZW1lbnRzX214ZmRlbXV4X0xEQUREID0gJChMREFERCkKQEAgLTQ1MiwyNyArNDc2LDM2IEBACiBlbGVtZW50c19uZW9uaHR0cHNyY19PQkpFQ1RTID0gZWxlbWVudHMvbmVvbmh0dHBzcmMuJChPQkpFWFQpCiBlbGVtZW50c19uZW9uaHR0cHNyY19MREFERCA9ICQoTERBREQpCiBlbGVtZW50c19uZW9uaHR0cHNyY19ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKK2VsZW1lbnRzX25ldHNpbV9TT1VSQ0VTID0gZWxlbWVudHMvbmV0c2ltLmMKK2VsZW1lbnRzX25ldHNpbV9PQkpFQ1RTID0gZWxlbWVudHMvbmV0c2ltLiQoT0JKRVhUKQorZWxlbWVudHNfbmV0c2ltX0xEQUREID0gJChMREFERCkKK2VsZW1lbnRzX25ldHNpbV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGVsZW1lbnRzX29mYV9TT1VSQ0VTID0gZWxlbWVudHMvb2ZhLmMKIGVsZW1lbnRzX29mYV9PQkpFQ1RTID0gZWxlbWVudHMvb2ZhLiQoT0JKRVhUKQogZWxlbWVudHNfb2ZhX0xEQUREID0gJChMREFERCkKIGVsZW1lbnRzX29mYV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKLWVsZW1lbnRzX29wdXNfU09VUkNFUyA9IGVsZW1lbnRzL29wdXMuYwotZWxlbWVudHNfb3B1c19PQkpFQ1RTID0gZWxlbWVudHMvb3B1cy4kKE9CSkVYVCkKLWVsZW1lbnRzX29wdXNfTERBREQgPSAkKExEQUREKQotZWxlbWVudHNfb3B1c19ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGVsZW1lbnRzX3BjYXBwYXJzZV9TT1VSQ0VTID0gZWxlbWVudHMvcGNhcHBhcnNlLmMKIGVsZW1lbnRzX3BjYXBwYXJzZV9PQkpFQ1RTID0gZWxlbWVudHMvcGNhcHBhcnNlLiQoT0JKRVhUKQogZWxlbWVudHNfcGNhcHBhcnNlX0RFUEVOREVOQ0lFUyA9IGxpYnBhcnNlci5sYSAkKGFtX19ERVBFTkRFTkNJRVNfMikKLWVsZW1lbnRzX3J0cG9udmlmX1NPVVJDRVMgPSBlbGVtZW50cy9ydHBvbnZpZi5jCi1lbGVtZW50c19ydHBvbnZpZl9PQkpFQ1RTID0gIFwKLQllbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi4kKE9CSkVYVCkKLWVsZW1lbnRzX3J0cG9udmlmX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitlbGVtZW50c19ydHBvbnZpZnBhcnNlX1NPVVJDRVMgPSBlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMKK2VsZW1lbnRzX3J0cG9udmlmcGFyc2VfT0JKRUNUUyA9ICBcCisJZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLiQoT0JKRVhUKQorZWxlbWVudHNfcnRwb252aWZwYXJzZV9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAogCSQoYW1fX0RFUEVOREVOQ0lFU18yKQotZWxlbWVudHNfcnRwb252aWZfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCitlbGVtZW50c19ydHBvbnZpZnBhcnNlX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAogCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCi0JJChlbGVtZW50c19ydHBvbnZpZl9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgXAotCS1vICRACisJJChlbGVtZW50c19ydHBvbnZpZnBhcnNlX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgXAorCSQoTERGTEFHUykgLW8gJEAKK2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX1NPVVJDRVMgPSBlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jCitlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9PQkpFQ1RTID0gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuJChPQkpFWFQpCitlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18yKQorZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyBcCisJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKKwkkKGVsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgXAorCSQoTERGTEFHUykgLW8gJEAKIGVsZW1lbnRzX3NjaHJvZW5jX1NPVVJDRVMgPSBlbGVtZW50cy9zY2hyb2VuYy5jCiBlbGVtZW50c19zY2hyb2VuY19PQkpFQ1RTID0gZWxlbWVudHMvc2Nocm9lbmMuJChPQkpFWFQpCiBlbGVtZW50c19zY2hyb2VuY19MREFERCA9ICQoTERBREQpCkBAIC01MDMsNiArNTM2LDE2IEBACiAJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKIAkkKGVsZW1lbnRzX3V2Y2gyNjRkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpIFwKIAkkKExERkxBR1MpIC1vICRACitlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfU09VUkNFUyA9ICBcCisJZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9PQkpFQ1RTID0gZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC4kKE9CSkVYVCkKK2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18yKQorZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCisJJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfQ0ZMQUdTKSAkKENGTEFHUykgXAorCSQoQU1fTERGTEFHUykgJChMREZMQUdTKSAtbyAkQAogZWxlbWVudHNfdmlld2ZpbmRlcmJpbl9TT1VSQ0VTID0gZWxlbWVudHMvdmlld2ZpbmRlcmJpbi5jCiBlbGVtZW50c192aWV3ZmluZGVyYmluX09CSkVDVFMgPSBlbGVtZW50cy92aWV3ZmluZGVyYmluLiQoT0JKRVhUKQogZWxlbWVudHNfdmlld2ZpbmRlcmJpbl9MREFERCA9ICQoTERBREQpCkBAIC01NzksNiArNjIyLDI1IEBACiAJJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpIFwKIAkkKGxpYnNfZ3N0Z2xtZW1vcnlfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIFwKIAktbyAkQAorbGlic19nc3RnbHF1ZXJ5X1NPVVJDRVMgPSBsaWJzL2dzdGdscXVlcnkuYworbGlic19nc3RnbHF1ZXJ5X09CSkVDVFMgPSBsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5LiQoT0JKRVhUKQorbGlic19nc3RnbHF1ZXJ5X0RFUEVOREVOQ0lFUyA9ICBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18yKQorbGlic19nc3RnbHF1ZXJ5X0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAorCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCisJJChsaWJzX2dzdGdscXVlcnlfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIFwKKwktbyAkQAorbGlic19nc3RnbHNsX1NPVVJDRVMgPSBsaWJzL2dzdGdsc2wuYworbGlic19nc3RnbHNsX09CSkVDVFMgPSBsaWJzL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLiQoT0JKRVhUKQorbGlic19nc3RnbHNsX0RFUEVOREVOQ0lFUyA9ICBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCisJJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18yKQorbGlic19nc3RnbHNsX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKKwkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSAkKGxpYnNfZ3N0Z2xzbF9DRkxBR1MpIFwKKwkkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBsaWJzX2dzdGdsdXBsb2FkX1NPVVJDRVMgPSBsaWJzL2dzdGdsdXBsb2FkLmMKIGxpYnNfZ3N0Z2x1cGxvYWRfT0JKRUNUUyA9ICBcCiAJbGlicy9saWJzX2dzdGdsdXBsb2FkLWdzdGdsdXBsb2FkLiQoT0JKRVhUKQpAQCAtNjI2LDYgKzY4OCwxNiBAQAogCSQoQU1fTElCVE9PTEZMQUdTKSAkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSBcCiAJJChsaWJzX21wZWd2aWRlb3BhcnNlcl9DRkxBR1MpICQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpIFwKIAkkKExERkxBR1MpIC1vICRACithbV9saWJzX3BsYXllcl9PQkpFQ1RTID0gbGlicy9saWJzX3BsYXllci1wbGF5ZXIuJChPQkpFWFQpCitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVAbm9kaXN0X2xpYnNfcGxheWVyX09CSkVDVFMgPSBsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS4kKE9CSkVYVCkKK2xpYnNfcGxheWVyX09CSkVDVFMgPSAkKGFtX2xpYnNfcGxheWVyX09CSkVDVFMpIFwKKwkkKG5vZGlzdF9saWJzX3BsYXllcl9PQkpFQ1RTKQorbGlic19wbGF5ZXJfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9wbGF5ZXIvbGliZ3N0cGxheWVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzEpIFwKKwkkKGFtX19ERVBFTkRFTkNJRVNfMSkgJChhbV9fREVQRU5ERU5DSUVTXzIpCitsaWJzX3BsYXllcl9MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDICQoQU1fTElCVE9PTEZMQUdTKSBcCisJJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgJChsaWJzX3BsYXllcl9DRkxBR1MpIFwKKwkkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACiBsaWJzX3ZjMXBhcnNlcl9TT1VSQ0VTID0gbGlicy92YzFwYXJzZXIuYwogbGlic192YzFwYXJzZXJfT0JKRUNUUyA9IGxpYnMvbGlic192YzFwYXJzZXItdmMxcGFyc2VyLiQoT0JKRVhUKQogbGlic192YzFwYXJzZXJfREVQRU5ERU5DSUVTID0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9jb2RlY3BhcnNlcnMvbGliZ3N0Y29kZWNwYXJzZXJzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKQEAgLTcyMSw2MCArNzkzLDY2IEBACiAJZWxlbWVudHMvYXNmbXV4LmMgZWxlbWVudHMvYXNzcmVuZGVyLmMgXAogCWVsZW1lbnRzL2F1ZGlvaW50ZXJsZWF2ZS5jIGVsZW1lbnRzL2F1ZGlvbWl4ZXIuYyBcCiAJZWxlbWVudHMvYXV0b2NvbnZlcnQuYyBlbGVtZW50cy9hdXRvdmlkZW9jb252ZXJ0LmMgXAotCSQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9TT1VSQ0VTKSBcCiAJJChlbGVtZW50c19jYW1lcmFiaW5fU09VUkNFUykgZWxlbWVudHMvY29tcG9zaXRvci5jIFwKIAllbGVtZW50cy9jdXJsZmlsZXNpbmsuYyBlbGVtZW50cy9jdXJsZnRwc2luay5jIFwKIAllbGVtZW50cy9jdXJsaHR0cHNpbmsuYyBlbGVtZW50cy9jdXJsc2Z0cHNpbmsuYyBcCi0JZWxlbWVudHMvY3VybHNtdHBzaW5rLmMgJChlbGVtZW50c19kYXNoX21wZF9TT1VSQ0VTKSBcCi0JZWxlbWVudHMvZGF0YXVyaXNyYy5jIGVsZW1lbnRzL2ZhYWMuYyBlbGVtZW50cy9mYWFkLmMgXAotCWVsZW1lbnRzL2dkcGRlcGF5LmMgZWxlbWVudHMvZ2RwcGF5LmMgZWxlbWVudHMvZ2xpbWFnZXNpbmsuYyBcCi0JZWxlbWVudHMvaDI2M3BhcnNlLmMgZWxlbWVudHMvaDI2NHBhcnNlLmMgXAorCWVsZW1lbnRzL2N1cmxzbXRwc2luay5jICQoZWxlbWVudHNfZGFzaF9kZW11eF9TT1VSQ0VTKSBcCisJJChlbGVtZW50c19kYXNoX21wZF9TT1VSQ0VTKSBlbGVtZW50cy9kYXRhdXJpc3JjLmMgXAorCWVsZW1lbnRzL2ZhYWMuYyBlbGVtZW50cy9mYWFkLmMgZWxlbWVudHMvZ2RwZGVwYXkuYyBcCisJZWxlbWVudHMvZ2RwcGF5LmMgZWxlbWVudHMvZ2xpbWFnZXNpbmsuYyBlbGVtZW50cy9oMjYzcGFyc2UuYyBcCisJZWxlbWVudHMvaDI2NHBhcnNlLmMgJChlbGVtZW50c19obHNfZGVtdXhfU09VUkNFUykgXAogCSQoZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9TT1VSQ0VTKSBlbGVtZW50cy9pZDNtdXguYyBcCiAJJChlbGVtZW50c19qaWZtdXhfU09VUkNFUykgZWxlbWVudHMvanBlZ3BhcnNlLmMgXAogCWVsZW1lbnRzL2thdGUuYyBlbGVtZW50cy9tcGVnMmVuYy5jIGVsZW1lbnRzL21wZWc0dmlkZW9wYXJzZS5jIFwKIAllbGVtZW50cy9tcGVndHNtdXguYyBlbGVtZW50cy9tcGVndmlkZW9wYXJzZS5jIFwKLQllbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jIGVsZW1lbnRzL21wbGV4LmMgZWxlbWVudHMvbXhmZGVtdXguYyBcCi0JZWxlbWVudHMvbXhmbXV4LmMgZWxlbWVudHMvbmVvbmh0dHBzcmMuYyBlbGVtZW50cy9vZmEuYyBcCi0JZWxlbWVudHMvb3B1cy5jIGVsZW1lbnRzL3BjYXBwYXJzZS5jIGVsZW1lbnRzL3J0cG9udmlmLmMgXAorCWVsZW1lbnRzL21wbGV4LmMgJChlbGVtZW50c19tc3NkZW11eF9TT1VSQ0VTKSBcCisJZWxlbWVudHMvbXhmZGVtdXguYyBlbGVtZW50cy9teGZtdXguYyBlbGVtZW50cy9uZW9uaHR0cHNyYy5jIFwKKwllbGVtZW50cy9uZXRzaW0uYyBlbGVtZW50cy9vZmEuYyBlbGVtZW50cy9wY2FwcGFyc2UuYyBcCisJZWxlbWVudHMvcnRwb252aWZwYXJzZS5jIGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMgXAogCWVsZW1lbnRzL3NjaHJvZW5jLmMgZWxlbWVudHMvc2htLmMgZWxlbWVudHMvdGVtcGxhdGVtYXRjaC5jIFwKIAllbGVtZW50cy90aW1pZGl0eS5jIGVsZW1lbnRzL3V2Y2gyNjRkZW11eC5jIFwKLQllbGVtZW50cy92aWV3ZmluZGVyYmluLmMgZWxlbWVudHMvdm9hYWNlbmMuYyBcCi0JZWxlbWVudHMvdm9hbXJ3YmVuYy5jIGVsZW1lbnRzL3gyNjVlbmMuYyBlbGVtZW50cy96YmFyLmMgXAotCWdlbmVyaWMvc3RhdGVzLmMgbGlicy9hZ2dyZWdhdG9yLmMgbGlicy9nc3RnbGNvbG9yY29udmVydC5jIFwKLQlsaWJzL2dzdGdsY29udGV4dC5jIGxpYnMvZ3N0Z2xtZW1vcnkuYyBsaWJzL2dzdGdsdXBsb2FkLmMgXAotCWxpYnMvaDI2NHBhcnNlci5jIGxpYnMvaW5zZXJ0YmluLmMgbGlicy9tcGVndHMuYyBcCi0JbGlicy9tcGVndmlkZW9wYXJzZXIuYyBsaWJzL3ZjMXBhcnNlci5jIGxpYnMvdnA4cGFyc2VyLmMgXAotCSQobm9kaXN0X29yY19hdWRpb21peGVyX1NPVVJDRVMpICQobm9kaXN0X29yY19iYXllcl9TT1VSQ0VTKSBcCi0JJChub2Rpc3Rfb3JjX2NvbXBvc2l0b3JfU09VUkNFUykgcGlwZWxpbmVzL21pbWljLmMgXAotCXBpcGVsaW5lcy9teGYuYyBwaXBlbGluZXMvc3RyZWFtaGVhZGVyLmMKKwllbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYyBlbGVtZW50cy92aWV3ZmluZGVyYmluLmMgXAorCWVsZW1lbnRzL3ZvYWFjZW5jLmMgZWxlbWVudHMvdm9hbXJ3YmVuYy5jIGVsZW1lbnRzL3gyNjVlbmMuYyBcCisJZWxlbWVudHMvemJhci5jIGdlbmVyaWMvc3RhdGVzLmMgbGlicy9hZ2dyZWdhdG9yLmMgXAorCWxpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYyBsaWJzL2dzdGdsY29udGV4dC5jIFwKKwlsaWJzL2dzdGdsbWVtb3J5LmMgbGlicy9nc3RnbHF1ZXJ5LmMgbGlicy9nc3RnbHNsLmMgXAorCWxpYnMvZ3N0Z2x1cGxvYWQuYyBsaWJzL2gyNjRwYXJzZXIuYyBsaWJzL2luc2VydGJpbi5jIFwKKwlsaWJzL21wZWd0cy5jIGxpYnMvbXBlZ3ZpZGVvcGFyc2VyLmMgJChsaWJzX3BsYXllcl9TT1VSQ0VTKSBcCisJJChub2Rpc3RfbGlic19wbGF5ZXJfU09VUkNFUykgbGlicy92YzFwYXJzZXIuYyBcCisJbGlicy92cDhwYXJzZXIuYyAkKG5vZGlzdF9vcmNfYXVkaW9taXhlcl9TT1VSQ0VTKSBcCisJJChub2Rpc3Rfb3JjX2JheWVyX1NPVVJDRVMpICQobm9kaXN0X29yY19jb21wb3NpdG9yX1NPVVJDRVMpIFwKKwlwaXBlbGluZXMvbWltaWMuYyBwaXBlbGluZXMvbXhmLmMgcGlwZWxpbmVzL3N0cmVhbWhlYWRlci5jCiBESVNUX1NPVVJDRVMgPSAkKGxpYnBhcnNlcl9sYV9TT1VSQ0VTKSBlbGVtZW50cy9haWZmcGFyc2UuYyBcCiAJZWxlbWVudHMvYXNmbXV4LmMgZWxlbWVudHMvYXNzcmVuZGVyLmMgXAogCWVsZW1lbnRzL2F1ZGlvaW50ZXJsZWF2ZS5jIGVsZW1lbnRzL2F1ZGlvbWl4ZXIuYyBcCiAJZWxlbWVudHMvYXV0b2NvbnZlcnQuYyBlbGVtZW50cy9hdXRvdmlkZW9jb252ZXJ0LmMgXAotCSQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9TT1VSQ0VTKSBcCiAJJChlbGVtZW50c19jYW1lcmFiaW5fU09VUkNFUykgZWxlbWVudHMvY29tcG9zaXRvci5jIFwKIAllbGVtZW50cy9jdXJsZmlsZXNpbmsuYyBlbGVtZW50cy9jdXJsZnRwc2luay5jIFwKIAllbGVtZW50cy9jdXJsaHR0cHNpbmsuYyBlbGVtZW50cy9jdXJsc2Z0cHNpbmsuYyBcCi0JZWxlbWVudHMvY3VybHNtdHBzaW5rLmMgJChlbGVtZW50c19kYXNoX21wZF9TT1VSQ0VTKSBcCi0JZWxlbWVudHMvZGF0YXVyaXNyYy5jIGVsZW1lbnRzL2ZhYWMuYyBlbGVtZW50cy9mYWFkLmMgXAotCWVsZW1lbnRzL2dkcGRlcGF5LmMgZWxlbWVudHMvZ2RwcGF5LmMgZWxlbWVudHMvZ2xpbWFnZXNpbmsuYyBcCi0JZWxlbWVudHMvaDI2M3BhcnNlLmMgZWxlbWVudHMvaDI2NHBhcnNlLmMgXAorCWVsZW1lbnRzL2N1cmxzbXRwc2luay5jICQoZWxlbWVudHNfZGFzaF9kZW11eF9TT1VSQ0VTKSBcCisJJChlbGVtZW50c19kYXNoX21wZF9TT1VSQ0VTKSBlbGVtZW50cy9kYXRhdXJpc3JjLmMgXAorCWVsZW1lbnRzL2ZhYWMuYyBlbGVtZW50cy9mYWFkLmMgZWxlbWVudHMvZ2RwZGVwYXkuYyBcCisJZWxlbWVudHMvZ2RwcGF5LmMgZWxlbWVudHMvZ2xpbWFnZXNpbmsuYyBlbGVtZW50cy9oMjYzcGFyc2UuYyBcCisJZWxlbWVudHMvaDI2NHBhcnNlLmMgJChlbGVtZW50c19obHNfZGVtdXhfU09VUkNFUykgXAogCSQoZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9TT1VSQ0VTKSBlbGVtZW50cy9pZDNtdXguYyBcCiAJJChlbGVtZW50c19qaWZtdXhfU09VUkNFUykgZWxlbWVudHMvanBlZ3BhcnNlLmMgXAogCWVsZW1lbnRzL2thdGUuYyBlbGVtZW50cy9tcGVnMmVuYy5jIGVsZW1lbnRzL21wZWc0dmlkZW9wYXJzZS5jIFwKIAllbGVtZW50cy9tcGVndHNtdXguYyBlbGVtZW50cy9tcGVndmlkZW9wYXJzZS5jIFwKLQllbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jIGVsZW1lbnRzL21wbGV4LmMgZWxlbWVudHMvbXhmZGVtdXguYyBcCi0JZWxlbWVudHMvbXhmbXV4LmMgZWxlbWVudHMvbmVvbmh0dHBzcmMuYyBlbGVtZW50cy9vZmEuYyBcCi0JZWxlbWVudHMvb3B1cy5jIGVsZW1lbnRzL3BjYXBwYXJzZS5jIGVsZW1lbnRzL3J0cG9udmlmLmMgXAorCWVsZW1lbnRzL21wbGV4LmMgJChlbGVtZW50c19tc3NkZW11eF9TT1VSQ0VTKSBcCisJZWxlbWVudHMvbXhmZGVtdXguYyBlbGVtZW50cy9teGZtdXguYyBlbGVtZW50cy9uZW9uaHR0cHNyYy5jIFwKKwllbGVtZW50cy9uZXRzaW0uYyBlbGVtZW50cy9vZmEuYyBlbGVtZW50cy9wY2FwcGFyc2UuYyBcCisJZWxlbWVudHMvcnRwb252aWZwYXJzZS5jIGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMgXAogCWVsZW1lbnRzL3NjaHJvZW5jLmMgZWxlbWVudHMvc2htLmMgZWxlbWVudHMvdGVtcGxhdGVtYXRjaC5jIFwKIAllbGVtZW50cy90aW1pZGl0eS5jIGVsZW1lbnRzL3V2Y2gyNjRkZW11eC5jIFwKLQllbGVtZW50cy92aWV3ZmluZGVyYmluLmMgZWxlbWVudHMvdm9hYWNlbmMuYyBcCi0JZWxlbWVudHMvdm9hbXJ3YmVuYy5jIGVsZW1lbnRzL3gyNjVlbmMuYyBlbGVtZW50cy96YmFyLmMgXAotCWdlbmVyaWMvc3RhdGVzLmMgbGlicy9hZ2dyZWdhdG9yLmMgbGlicy9nc3RnbGNvbG9yY29udmVydC5jIFwKLQlsaWJzL2dzdGdsY29udGV4dC5jIGxpYnMvZ3N0Z2xtZW1vcnkuYyBsaWJzL2dzdGdsdXBsb2FkLmMgXAotCWxpYnMvaDI2NHBhcnNlci5jIGxpYnMvaW5zZXJ0YmluLmMgbGlicy9tcGVndHMuYyBcCi0JbGlicy9tcGVndmlkZW9wYXJzZXIuYyBsaWJzL3ZjMXBhcnNlci5jIGxpYnMvdnA4cGFyc2VyLmMgXAotCXBpcGVsaW5lcy9taW1pYy5jIHBpcGVsaW5lcy9teGYuYyBwaXBlbGluZXMvc3RyZWFtaGVhZGVyLmMKKwllbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYyBlbGVtZW50cy92aWV3ZmluZGVyYmluLmMgXAorCWVsZW1lbnRzL3ZvYWFjZW5jLmMgZWxlbWVudHMvdm9hbXJ3YmVuYy5jIGVsZW1lbnRzL3gyNjVlbmMuYyBcCisJZWxlbWVudHMvemJhci5jIGdlbmVyaWMvc3RhdGVzLmMgbGlicy9hZ2dyZWdhdG9yLmMgXAorCWxpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYyBsaWJzL2dzdGdsY29udGV4dC5jIFwKKwlsaWJzL2dzdGdsbWVtb3J5LmMgbGlicy9nc3RnbHF1ZXJ5LmMgbGlicy9nc3RnbHNsLmMgXAorCWxpYnMvZ3N0Z2x1cGxvYWQuYyBsaWJzL2gyNjRwYXJzZXIuYyBsaWJzL2luc2VydGJpbi5jIFwKKwlsaWJzL21wZWd0cy5jIGxpYnMvbXBlZ3ZpZGVvcGFyc2VyLmMgJChsaWJzX3BsYXllcl9TT1VSQ0VTKSBcCisJbGlicy92YzFwYXJzZXIuYyBsaWJzL3ZwOHBhcnNlci5jIHBpcGVsaW5lcy9taW1pYy5jIFwKKwlwaXBlbGluZXMvbXhmLmMgcGlwZWxpbmVzL3N0cmVhbWhlYWRlci5jCiBhbV9fY2FuX3J1bl9pbnN0YWxsaW5mbyA9IFwKICAgY2FzZSAkJEFNX1VQREFURV9JTkZPX0RJUiBpbiBcCiAgICAgbnxub3xOTykgZmFsc2U7OyBcCkBAIC0xMDQyLDYgKzExMjAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTEwNzksNiArMTE1OSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMTA4Nyw3ICsxMTY5LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMTEwNiw4ICsxMTg3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTExMjQsMTYgKzEyMDYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMTE1OSw2ICsxMjQyLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMTE4NCw2ICsxMjY5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gJCh0b3BfYnVpbGRkaXIpL3Rvb2xzCitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtMTI4NSw2ICsxMzcyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTEyOTgsOCArMTM4Niw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTEzMTUsNiArMTQwMSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC0xMzcyLDE2ICsxNDYwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtMTQzMyw2ICsxNTIzLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTE0NDMsNiArMTUzNCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTE0NTIsNiArMTU0NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC0xNDg5LDcgKzE1ODMsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTE1MzAsNiArMTYyMywyMCBAQAogdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAogd2F5bGFuZF9zY2FubmVyID0gQHdheWxhbmRfc2Nhbm5lckAKIAorIyBHU1RfUExVR0lOU19YWVpfRElSIGlzIG9ubHkgc2V0IGluIGFuIHVuaW5zdGFsbGVkIHNldHVwCitBTV9URVNUU19FTlZJUk9OTUVOVCA9IENLX0RFRkFVTFRfVElNRU9VVD0yMCAkKFJFR0lTVFJZX0VOVklST05NRU5UKSBcCisJR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9IFwKKwlHU1RfUExVR0lOX1BBVEhfMV8wPSQodG9wX2J1aWxkZGlyKS9nc3Q6JCh0b3BfYnVpbGRkaXIpL3N5czokKHRvcF9idWlsZGRpcikvZXh0OiQoR1NUX1BMVUdJTlNfTElCQVZfRElSKTokKEdTVF9QTFVHSU5TX1VHTFlfRElSKTokKEdTVF9QTFVHSU5TX0dPT0RfRElSKTokKEdTVF9QTFVHSU5TX0JBU0VfRElSKTokKEdTVF9QTFVHSU5TX0RJUikgXAorCUdTVF9QTFVHSU5fTE9BRElOR19XSElURUxJU1Q9ImdzdHJlYW1lckAkKEdTVF9QTFVHSU5TX0RJUik6Z3N0LXBsdWdpbnMtYmFzZUAkKEdTVFBCX1BMVUdJTlNfRElSKTpnc3QtcGx1Z2lucy1nb29kOmdzdC1wbHVnaW5zLXVnbHk6Z3N0LWxpYmF2OmdzdC1wbHVnaW5zLWJhZEAkKHRvcF9idWlsZGRpcikiIFwKKwlHU1RfU1RBVEVfSUdOT1JFX0VMRU1FTlRTPSJhcGV4c2luayBhdmR0cHNyYyBjYW1lcmFiaW4gXAorCWRjMTM5NHNyYyBkY2NwY2xpZW50c3JjIGRjY3BjbGllbnRzaW5rIGRjY3BzZXJ2ZXJzcmMgXAorCWRjY3BzZXJ2ZXJzaW5rIGRlY2tsaW5rc3JjIGRlY2tsaW5rc2luayBkdGxzc3J0cGRlYyBcCisJZHRsc3NydHBlbmMgZHZic3JjIGR2YmJhc2ViaW4gZGZidmlkZW9zaW5rIGZlc3RpdmFsIGZsdWlkc3ludGggXAorCWxpbnN5c3NkaXNyYyBsaW5zeXNzZGlzaW5rIG5hc3NpbmsgcnNuZHZkYmluIHNkbGF1ZGlvc2luayBcCisJc2RsdmlkZW9zaW5rIHZjZHNyYyByZmJzcmMgdmRwYXV5dXZ2aWRlbyB2ZHBhdXZpZGVveXV2IFwKKwl2ZHBhdW1wZWdkZWMgdmRwYXVtcGVnNGRlYyB2ZHBhdWgyNjRkZWMgdmRwYXV2aWRlb3Bvc3Rwcm9jZXNzIFwKKwl2ZHBhdXNpbmsgbmVvbmh0dHBzcmMiCisKICMgaW5zcGVjdCBldmVyeSBwbHVnaW4gZmVhdHVyZQogR1NUX0lOU1BFQ1QgPSAkKEdTVF9UT09MU19ESVIpL2dzdC1pbnNwZWN0LSQoR1NUX0FQSV9WRVJTSU9OKQogQ0hFQ0tfUkVHSVNUUlkgPSAkKHRvcF9idWlsZGRpcikvdGVzdHMvY2hlY2svdGVzdC1yZWdpc3RyeS5yZWcKQEAgLTE1MzgsMjcgKzE2NDUsMTUgQEAKIAlHU1RfUkVHSVNUUllfMV8wPSQoQ0hFQ0tfUkVHSVNUUlkpCiAKIAotIyBHU1RfUExVR0lOU19YWVpfRElSIGlzIG9ubHkgc2V0IGluIGFuIHVuaW5zdGFsbGVkIHNldHVwCi1BTV9URVNUU19FTlZJUk9OTUVOVCA9IFwKLQkkKFJFR0lTVFJZX0VOVklST05NRU5UKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLQlHU1RfUExVR0lOX1NZU1RFTV9QQVRIXzFfMD0JCQkJXAotCUdTVF9QTFVHSU5fUEFUSF8xXzA9JCh0b3BfYnVpbGRkaXIpL2dzdDokKHRvcF9idWlsZGRpcikvc3lzOiQodG9wX2J1aWxkZGlyKS9leHQ6JChHU1RfUExVR0lOU19MSUJBVl9ESVIpOiQoR1NUX1BMVUdJTlNfVUdMWV9ESVIpOiQoR1NUX1BMVUdJTlNfR09PRF9ESVIpOiQoR1NUX1BMVUdJTlNfQkFTRV9ESVIpOiQoR1NUX1BMVUdJTlNfRElSKSBcCi0JR1NUX1BMVUdJTl9MT0FESU5HX1dISVRFTElTVD0iZ3N0cmVhbWVyQCQoR1NUX1BMVUdJTlNfRElSKTpnc3QtcGx1Z2lucy1iYXNlQCQoR1NUUEJfUExVR0lOU19ESVIpOmdzdC1wbHVnaW5zLWdvb2Q6Z3N0LXBsdWdpbnMtdWdseTpnc3QtbGliYXY6Z3N0LXBsdWdpbnMtYmFkQCQodG9wX2J1aWxkZGlyKSIgXAotCUdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFM9ImFwZXhzaW5rIGF2ZHRwc3JjIGNhbWVyYWJpbiBkYzEzOTRzcmMgXAotCSAgICBkY2NwY2xpZW50c3JjIGRjY3BjbGllbnRzaW5rIGRjY3BzZXJ2ZXJzcmMgZGNjcHNlcnZlcnNpbmsgZGVja2xpbmtzcmMgXAotCSAgICBkZWNrbGlua3NpbmsgZHRsc3NydHBkZWMgZHRsc3NydHBlbmMgZHZic3JjIGR2YmJhc2ViaW4gZGZidmlkZW9zaW5rIGZlc3RpdmFsIGZsdWlkc3ludGggZ3NldHRpbmdzdmlkZW9zcmMgXAotCSAgICBnc2V0dGluZ3N2aWRlb3NpbmsgZ3NldHRpbmdzYXVkaW9zcmMgZ3NldHRpbmdzYXVkaW9zaW5rIGxpbnN5c3NkaXNyYyBsaW5zeXNzZGlzaW5rIG5hc3NpbmsgXAotCSAgICByc25kdmRiaW4gc2RsYXVkaW9zaW5rIHNkbHZpZGVvc2luayB2Y2RzcmMgcmZic3JjIHZkcGF1eXV2dmlkZW8gdmRwYXV2aWRlb3l1diBcCi0JICAgIHZkcGF1bXBlZ2RlYyB2ZHBhdW1wZWc0ZGVjIHZkcGF1aDI2NGRlYyB2ZHBhdXZpZGVvcG9zdHByb2Nlc3MgdmRwYXVzaW5rIG5lb25odHRwc3JjIgotCi0KICMgdGhlIGNvcmUgZHVtcHMgb2Ygc29tZSBtYWNoaW5lcyBoYXZlIFBJRHMgYXBwZW5kZWQKLUNMRUFORklMRVMgPSBjb3JlLiogdGVzdC1yZWdpc3RyeS4qCitDTEVBTkZJTEVTID0gY29yZS4qIHRlc3QtcmVnaXN0cnkuKiAkKGFtX19hcHBlbmRfMSkKIFNVUFBSRVNTSU9OUyA9ICQodG9wX3NyY2RpcikvY29tbW9uL2dzdC5zdXBwICQoc3JjZGlyKS9nc3QtcGx1Z2lucy1iYWQuc3VwcAogQFVTRV9BU1NSRU5ERVJfRkFMU0VAY2hlY2tfYXNzcmVuZGVyID0gCiBAVVNFX0FTU1JFTkRFUl9UUlVFQGNoZWNrX2Fzc3JlbmRlciA9IGVsZW1lbnRzL2Fzc3JlbmRlcgogQFVTRV9EQVNIX0ZBTFNFQGNoZWNrX2Rhc2ggPSAKIEBVU0VfREFTSF9UUlVFQGNoZWNrX2Rhc2ggPSBlbGVtZW50cy9kYXNoX21wZAorQFVTRV9EQVNIX0ZBTFNFQGNoZWNrX2Rhc2hfZGVtdXggPSAKK0BVU0VfREFTSF9UUlVFQGNoZWNrX2Rhc2hfZGVtdXggPSBlbGVtZW50cy9kYXNoX2RlbXV4CiBAVVNFX0ZBQUNfRkFMU0VAY2hlY2tfZmFhYyA9IAogQFVTRV9GQUFDX1RSVUVAY2hlY2tfZmFhYyA9IGVsZW1lbnRzL2ZhYWMKIEBVU0VfRkFBRF9GQUxTRUBjaGVja19mYWFkID0gCkBAIC0xNTcxLDEwICsxNjY2LDEwIEBACiBAVVNFX0VYSUZfVFJVRUBjaGVja19qaWZtdXggPSBlbGVtZW50cy9qaWZtdXgKIEBVU0VfTVBFRzJFTkNfRkFMU0VAY2hlY2tfbXBlZzJlbmMgPSAKIEBVU0VfTVBFRzJFTkNfVFJVRUBjaGVja19tcGVnMmVuYyA9IGVsZW1lbnRzL21wZWcyZW5jCi1AVVNFX01QRzEyM19GQUxTRUBjaGVja19tcGcxMjMgPSAKLUBVU0VfTVBHMTIzX1RSVUVAY2hlY2tfbXBnMTIzID0gZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMKIEBVU0VfTVBMRVhfRkFMU0VAY2hlY2tfbXBsZXggPSAKIEBVU0VfTVBMRVhfVFJVRUBjaGVja19tcGxleCA9IGVsZW1lbnRzL21wbGV4CitAVVNFX1NNT09USFNUUkVBTUlOR19GQUxTRUBjaGVja19tc3NkZW11eCA9IAorQFVTRV9TTU9PVEhTVFJFQU1JTkdfVFJVRUBjaGVja19tc3NkZW11eCA9IGVsZW1lbnRzL21zc2RlbXV4CiBAVVNFX05FT05fRkFMU0VAY2hlY2tfbmVvbiA9IAogQFVTRV9ORU9OX1RSVUVAY2hlY2tfbmVvbiA9IGVsZW1lbnRzL25lb25odHRwc3JjCiBAVVNFX09GQV9GQUxTRUBjaGVja19vZmEgPSAKQEAgLTE1OTUsMTIgKzE2OTAsMTQgQEAKIEBVU0VfWkJBUl9UUlVFQGNoZWNrX3piYXIgPSBlbGVtZW50cy96YmFyCiBAVVNFX09QRU5DVl9GQUxTRUBjaGVja19vcGVuY3YgPSAKIEBVU0VfT1BFTkNWX1RSVUVAY2hlY2tfb3BlbmN2ID0gZWxlbWVudHMvdGVtcGxhdGVtYXRjaAotQFVTRV9PUFVTX0ZBTFNFQGNoZWNrX29wdXMgPSAKLUBVU0VfT1BVU19UUlVFQGNoZWNrX29wdXMgPSBlbGVtZW50cy9vcHVzCiBAVVNFX1NTSDJfRkFMU0VAY2hlY2tfY3VybF9zZnRwID0gCiBAVVNFX1NTSDJfVFJVRUBjaGVja19jdXJsX3NmdHAgPSBlbGVtZW50cy9jdXJsc2Z0cHNpbmsKK0BVU0VfSExTX0ZBTFNFQGNoZWNrX2hsc2RlbXV4X20zdTggPSAKK0BVU0VfSExTX1RSVUVAY2hlY2tfaGxzZGVtdXhfbTN1OCA9IGVsZW1lbnRzL2hsc2RlbXV4X20zdTgKIEBVU0VfSExTX0ZBTFNFQGNoZWNrX2hsc2RlbXV4ID0gCi1AVVNFX0hMU19UUlVFQGNoZWNrX2hsc2RlbXV4ID0gZWxlbWVudHMvaGxzZGVtdXhfbTN1OAorQFVTRV9ITFNfVFJVRUBjaGVja19obHNkZW11eCA9IGVsZW1lbnRzL2hsc19kZW11eAorQFdJVEhfR1NUX1BMQVlFUl9URVNUU19GQUxTRUBjaGVja19wbGF5ZXIgPSAKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUBjaGVja19wbGF5ZXIgPSBsaWJzL3BsYXllcgogQFVTRV9DVVJMX0ZBTFNFQGNoZWNrX2N1cmwgPSAKIEBVU0VfQ1VSTF9UUlVFQGNoZWNrX2N1cmwgPSBlbGVtZW50cy9jdXJsaHR0cHNpbmsgXAogQFVTRV9DVVJMX1RSVUVACWVsZW1lbnRzL2N1cmxmaWxlc2luayBcCkBAIC0xNjI0LDYgKzE3MjEsOCBAQAogQFVTRV9HTF9UUlVFQCAgICBsaWJzL2dzdGdsbWVtb3J5IFwKIEBVU0VfR0xfVFJVRUAgICAgbGlicy9nc3RnbHVwbG9hZCBcCiBAVVNFX0dMX1RSVUVAICAgIGxpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQgXAorQFVTRV9HTF9UUlVFQCAgICBsaWJzL2dzdGdscXVlcnkgXAorQFVTRV9HTF9UUlVFQCAgICBsaWJzL2dzdGdsc2wgXAogQFVTRV9HTF9UUlVFQCAgICBlbGVtZW50cy9nbGltYWdlc2luawogCiBWQUxHUklORF9UT19GSVggPSBcCkBAIC0xNzEwLDYgKzE4MDksMTQgQEAKIAkkKEdTVF9QTFVHSU5TX0JBRF9MSUJTKSAtbGdzdGNvZGVjcGFyc2Vycy1AR1NUX0FQSV9WRVJTSU9OQCBcCiAJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKQogCitlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfQ0ZMQUdTID0gXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKKworZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX0xEQUREID0gXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpIFwKKwktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ACisKIGVsZW1lbnRzX2ZhYWRfQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKIAkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKQEAgLTE3NDIsMTYgKzE4NDksNiBAQAogCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpIFwKIAktbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05ACiAKLWVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfU09VUkNFUyA9IGVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYwotZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCi0JJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NPTlRST0xMRVJfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQotCi1lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0xEQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AICBcCi0JLWxnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQCAJJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9DT05UUk9MTEVSX0xJQlMpIFwKLQkkKEdTVF9MSUJTKSAkKExEQUREKQotCiBlbGVtZW50c19jYW1lcmFiaW5fQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKSAtREdTVF9VU0VfVU5TVEFCTEVfQVBJCkBAIC0xNzc0LDExICsxODcxLDYgQEAKIGVsZW1lbnRzX2Fzc3JlbmRlcl9MREFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSAtbGdzdGFwcC0kKEdTVF9BUElfVkVSU0lPTikgJChHU1RfQkFTRV9MSUJTKSAkKExEQUREKQogZWxlbWVudHNfbXBlZ3RzbXV4X0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKIGVsZW1lbnRzX21wZWd0c211eF9MREFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSAkKEdTVF9CQVNFX0xJQlMpICQoTERBREQpCi1lbGVtZW50c19tcGcxMjNhdWRpb2RlY19DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChBTV9DRkxBR1MpCi1lbGVtZW50c19tcGcxMjNhdWRpb2RlY19MREFERCA9IFwKLQkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKSBcCi0JLWxnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQCAtbGdzdGZmdC1AR1NUX0FQSV9WRVJTSU9OQCAtbGdzdGFwcC1AR1NUX0FQSV9WRVJTSU9OQAotCiBlbGVtZW50c191dmNoMjY0ZGVtdXhfQ0ZMQUdTID0gLURVVkNIMjY0REVNVVhfREFUQURJUj0iJChzcmNkaXIpL2VsZW1lbnRzL3V2Y2gyNjRkZW11eF9kYXRhIiBcCiAJCQkJJChBTV9DRkxBR1MpCiAKQEAgLTE3ODcsNiArMTg3OSwyMiBAQAogCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdXJpZG93bmxvYWRlci9saWJnc3R1cmlkb3dubG9hZGVyLUBHU1RfQVBJX1ZFUlNJT05ALmxhCiAKIGVsZW1lbnRzX2Rhc2hfbXBkX1NPVVJDRVMgPSBlbGVtZW50cy9kYXNoX21wZC5jCitlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKExJQlhNTDJfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpCitlbGVtZW50c19kYXNoX2RlbXV4X0xEQUREID0gXAorCSQoTERBREQpICQoTElCWE1MMl9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpIFwKKwktbGdzdHRhZy0kKEdTVF9BUElfVkVSU0lPTikgXAorCS1sZ3N0YXBwLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hZGFwdGl2ZWRlbXV4L2xpYmdzdGFkYXB0aXZlZGVtdXgtQEdTVF9BUElfVkVSU0lPTkAubGEKKworZWxlbWVudHNfZGFzaF9kZW11eF9TT1VSQ0VTID0gZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jIGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uaCBlbGVtZW50cy9kYXNoX2RlbXV4LmMKK2VsZW1lbnRzX21zc2RlbXV4X0NGTEFHUyA9ICQoQU1fQ0ZMQUdTKSAkKExJQlhNTDJfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpCitlbGVtZW50c19tc3NkZW11eF9MREFERCA9IFwKKwkkKExEQUREKSAkKExJQlhNTDJfTElCUykgJChHU1RfQkFTRV9MSUJTKSBcCisJLWxnc3R0YWctJChHU1RfQVBJX1ZFUlNJT04pIFwKKwktbGdzdGFwcC0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvYWRhcHRpdmVkZW11eC9saWJnc3RhZGFwdGl2ZWRlbXV4LUBHU1RfQVBJX1ZFUlNJT05ALmxhCisKK2VsZW1lbnRzX21zc2RlbXV4X1NPVVJDRVMgPSBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jIGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5oIGVsZW1lbnRzL21zc2RlbXV4LmMKIHBpcGVsaW5lc19zdHJlYW1oZWFkZXJfQ0ZMQUdTID0gJChHSU9fQ0ZMQUdTKSAkKEFNX0NGTEFHUykKIHBpcGVsaW5lc19zdHJlYW1oZWFkZXJfTERBREQgPSAkKEdJT19MSUJTKSAkKExEQUREKQogbGlic19pbnNlcnRiaW5fTERBREQgPSBcCkBAIC0xNzk2LDggKzE5MDQsMjggQEAKIGxpYnNfaW5zZXJ0YmluX0NGTEFHUyA9IFwKIAkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQogCi1lbGVtZW50c19ydHBvbnZpZl9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9CQVNFX0NGTEFHUykgJChBTV9DRkxBR1MpCi1lbGVtZW50c19ydHBvbnZpZl9MREFERCA9ICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpIC1sZ3N0cnRwLSQoR1NUX0FQSV9WRVJTSU9OKSAkKExEQUREKQorbGlic19wbGF5ZXJfU09VUkNFUyA9IGxpYnMvcGxheWVyLmMKK2xpYnNfcGxheWVyX0xEQUREID0gXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvcGxheWVyL2xpYmdzdHBsYXllci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkKKworbGlic19wbGF5ZXJfQ0ZMQUdTID0gXAorCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChBTV9DRkxBR1MpIFwKKwktRFRFU1RfUEFUSD1cIiQoYnVpbGRkaXIpL21lZGlhXCIKKworQFdJVEhfR1NUX1BMQVlFUl9URVNUU19UUlVFQFBMQVlFUl9NRURJQV9GSUxFUyA9IFwKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJbWVkaWEvYXVkaW8ub2dnIFwKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJbWVkaWEvYXVkaW8tdmlkZW8ub2dnIFwKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJbWVkaWEvYXVkaW8tc2hvcnQub2dnIFwKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJbWVkaWEvYXVkaW8tdmlkZW8tc2hvcnQub2dnIFwKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJbWVkaWEvc2ludGVsLm1rdiBcCitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVACW1lZGlhL3Rlc3Rfc3ViLnNydAorCitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVAbm9kaXN0X2xpYnNfcGxheWVyX1NPVVJDRVMgPSBsaWJzL3BsYXllcl9kdW1teS5jCitlbGVtZW50c19ydHBvbnZpZnBhcnNlX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKK2VsZW1lbnRzX3J0cG9udmlmcGFyc2VfTERBREQgPSAkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAtbGdzdHJ0cC0kKEdTVF9BUElfVkVSU0lPTikgJChMREFERCkKK2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0NGTEFHUyA9ICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKK2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgLWxnc3RydHAtJChHU1RfQVBJX1ZFUlNJT04pICQoTERBREQpCiBFWFRSQV9ESVNUID0gZ3N0LXBsdWdpbnMtYmFkLnN1cHAgJCh1dmNoMjY0X2Rpc3RfZGF0YSkKIG9yY19iYXllcl9DRkxBR1MgPSAkKE9SQ19DRkxBR1MpCiBvcmNfYmF5ZXJfTERBREQgPSAkKE9SQ19MSUJTKSAtbG9yYy10ZXN0LTAuNApAQCAtMTg0NCw2ICsxOTcyLDI0IEBACiAJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pIFwKIAkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpICQoTERBREQpCiAKK2xpYnNfZ3N0Z2xxdWVyeV9MREFERCA9IFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfTElCUykgJChHU1RfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSAkKExEQUREKQorCitsaWJzX2dzdGdscXVlcnlfQ0ZMQUdTID0gXAorCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAorCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXAorCSQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpICQoQU1fQ0ZMQUdTKQorCitsaWJzX2dzdGdsc2xfTERBREQgPSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9nbC9saWJnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCisJJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0JBU0VfTElCUykgJChHU1RfTElCUykgJChMREFERCkKKworbGlic19nc3RnbHNsX0NGTEFHUyA9IFwKKwkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKKwktREdTVF9VU0VfVU5TVEFCTEVfQVBJIFwKKwkkKEdTVF9CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEFNX0NGTEFHUykKKwogZWxlbWVudHNfZ2xpbWFnZXNpbmtfQ0ZMQUdTID0gXAogCSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogCS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkgXApAQCAtMTg3NSw2ICsyMDIxLDEzIEBACiBlbGVtZW50c19obHNkZW11eF9tM3U4X0NGTEFHUyA9ICQoR1NUX0JBU0VfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgLUkkKHRvcF9zcmNkaXIpL2V4dC9obHMKIGVsZW1lbnRzX2hsc2RlbXV4X20zdThfTERBREQgPSAkKEdTVF9CQVNFX0xJQlMpICQoTERBREQpCiBlbGVtZW50c19obHNkZW11eF9tM3U4X1NPVVJDRVMgPSBlbGVtZW50cy9obHNkZW11eF9tM3U4LmMKK2VsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MgPSAkKEdTVF9CQVNFX0NGTEFHUykgJChBTV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykKK2VsZW1lbnRzX2hsc19kZW11eF9MREFERCA9ICQoR1NUX0JBU0VfTElCUykgJChMREFERCkgXAorCS1sZ3N0dGFnLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJLWxnc3RhcHAtJChHU1RfQVBJX1ZFUlNJT04pIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2FkYXB0aXZlZGVtdXgvbGliZ3N0YWRhcHRpdmVkZW11eC1AR1NUX0FQSV9WRVJTSU9OQC5sYQorCitlbGVtZW50c19obHNfZGVtdXhfU09VUkNFUyA9IGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyBlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmggZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmggZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmggZWxlbWVudHMvaGxzX2RlbXV4LmMKIG9yY19jb21wb3NpdG9yX0NGTEFHUyA9ICQoT1JDX0NGTEFHUykKIG9yY19jb21wb3NpdG9yX0xEQUREID0gJChPUkNfTElCUykgLWxvcmMtdGVzdC0wLjQKIG5vZGlzdF9vcmNfY29tcG9zaXRvcl9TT1VSQ0VTID0gb3JjL2NvbXBvc2l0b3IuYwpAQCAtMTk5NSwxMiArMjE0OCw2IEBACiBlbGVtZW50cy9hdXRvdmlkZW9jb252ZXJ0JChFWEVFWFQpOiAkKGVsZW1lbnRzX2F1dG92aWRlb2NvbnZlcnRfT0JKRUNUUykgJChlbGVtZW50c19hdXRvdmlkZW9jb252ZXJ0X0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19hdXRvdmlkZW9jb252ZXJ0X0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCiAJQHJtIC1mIGVsZW1lbnRzL2F1dG92aWRlb2NvbnZlcnQkKEVYRUVYVCkKIAkkKEFNX1ZfQ0NMRCkkKExJTkspICQoZWxlbWVudHNfYXV0b3ZpZGVvY29udmVydF9PQkpFQ1RTKSAkKGVsZW1lbnRzX2F1dG92aWRlb2NvbnZlcnRfTERBREQpICQoTElCUykKLWVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci4kKE9CSkVYVCk6ICBcCi0JZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKLQotZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplciQoRVhFRVhUKTogJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX09CSkVDVFMpICQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQotCUBybSAtZiBlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyJChFWEVFWFQpCi0JJChBTV9WX0NDTEQpJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0xJTkspICQoZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplcl9PQkpFQ1RTKSAkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfTERBREQpICQoTElCUykKIGVsZW1lbnRzL2VsZW1lbnRzX2NhbWVyYWJpbi1jYW1lcmFiaW4uJChPQkpFWFQpOiAgXAogCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKQEAgLTIwNDMsNiArMjE5MCwxOCBAQAogZWxlbWVudHMvY3VybHNtdHBzaW5rJChFWEVFWFQpOiAkKGVsZW1lbnRzX2N1cmxzbXRwc2lua19PQkpFQ1RTKSAkKGVsZW1lbnRzX2N1cmxzbXRwc2lua19ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfY3VybHNtdHBzaW5rX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCiAJQHJtIC1mIGVsZW1lbnRzL2N1cmxzbXRwc2luayQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQoTElOSykgJChlbGVtZW50c19jdXJsc210cHNpbmtfT0JKRUNUUykgJChlbGVtZW50c19jdXJsc210cHNpbmtfTERBREQpICQoTElCUykKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXguJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisKK2VsZW1lbnRzL2Rhc2hfZGVtdXgkKEVYRUVYVCk6ICQoZWxlbWVudHNfZGFzaF9kZW11eF9PQkpFQ1RTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX2Rhc2hfZGVtdXhfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKKwlAcm0gLWYgZWxlbWVudHMvZGFzaF9kZW11eCQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQoZWxlbWVudHNfZGFzaF9kZW11eF9MSU5LKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfT0JKRUNUUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0xEQUREKSAkKExJQlMpCiBlbGVtZW50cy9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC4kKE9CSkVYVCk6ICBcCiAJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIApAQCAtMjA5Nyw2ICsyMjU2LDE4IEBACiBlbGVtZW50cy9oMjY0cGFyc2UkKEVYRUVYVCk6ICQoZWxlbWVudHNfaDI2NHBhcnNlX09CSkVDVFMpICQoZWxlbWVudHNfaDI2NHBhcnNlX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19oMjY0cGFyc2VfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgZWxlbWVudHMvaDI2NHBhcnNlJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChMSU5LKSAkKGVsZW1lbnRzX2gyNjRwYXJzZV9PQkpFQ1RTKSAkKGVsZW1lbnRzX2gyNjRwYXJzZV9MREFERCkgJChMSUJTKQorZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMuJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXguJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisKK2VsZW1lbnRzL2hsc19kZW11eCQoRVhFRVhUKTogJChlbGVtZW50c19obHNfZGVtdXhfT0JKRUNUUykgJChlbGVtZW50c19obHNfZGVtdXhfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX2hsc19kZW11eF9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQorCUBybSAtZiBlbGVtZW50cy9obHNfZGVtdXgkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGVsZW1lbnRzX2hsc19kZW11eF9MSU5LKSAkKGVsZW1lbnRzX2hsc19kZW11eF9PQkpFQ1RTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9MREFERCkgJChMSUJTKQogZWxlbWVudHMvZWxlbWVudHNfaGxzZGVtdXhfbTN1OC1obHNkZW11eF9tM3U4LiQoT0JKRVhUKTogIFwKIAllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCkBAIC0yMTUxLDE4ICsyMzIyLDI0IEBACiBlbGVtZW50cy9tcGVndmlkZW9wYXJzZSQoRVhFRVhUKTogJChlbGVtZW50c19tcGVndmlkZW9wYXJzZV9PQkpFQ1RTKSAkKGVsZW1lbnRzX21wZWd2aWRlb3BhcnNlX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19tcGVndmlkZW9wYXJzZV9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQogCUBybSAtZiBlbGVtZW50cy9tcGVndmlkZW9wYXJzZSQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQoTElOSykgJChlbGVtZW50c19tcGVndmlkZW9wYXJzZV9PQkpFQ1RTKSAkKGVsZW1lbnRzX21wZWd2aWRlb3BhcnNlX0xEQUREKSAkKExJQlMpCi1lbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy4kKE9CSkVYVCk6ICBcCi0JZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKLQotZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMkKEVYRUVYVCk6ICQoZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfT0JKRUNUUykgJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKLQlAcm0gLWYgZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMkKEVYRUVYVCkKLQkkKEFNX1ZfQ0NMRCkkKGVsZW1lbnRzX21wZzEyM2F1ZGlvZGVjX0xJTkspICQoZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfT0JKRUNUUykgJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19MREFERCkgJChMSUJTKQogZWxlbWVudHMvbXBsZXguJChPQkpFWFQpOiBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgXAogCWVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIAogZWxlbWVudHMvbXBsZXgkKEVYRUVYVCk6ICQoZWxlbWVudHNfbXBsZXhfT0JKRUNUUykgJChlbGVtZW50c19tcGxleF9ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfbXBsZXhfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgZWxlbWVudHMvbXBsZXgkKEVYRUVYVCkKIAkkKEFNX1ZfQ0NMRCkkKExJTkspICQoZWxlbWVudHNfbXBsZXhfT0JKRUNUUykgJChlbGVtZW50c19tcGxleF9MREFERCkgJChMSUJTKQorZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi4kKE9CSkVYVCk6ICBcCisJZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIGVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4LiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorCitlbGVtZW50cy9tc3NkZW11eCQoRVhFRVhUKTogJChlbGVtZW50c19tc3NkZW11eF9PQkpFQ1RTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19tc3NkZW11eF9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQorCUBybSAtZiBlbGVtZW50cy9tc3NkZW11eCQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQoZWxlbWVudHNfbXNzZGVtdXhfTElOSykgJChlbGVtZW50c19tc3NkZW11eF9PQkpFQ1RTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0xEQUREKSAkKExJQlMpCiBlbGVtZW50cy9teGZkZW11eC4kKE9CSkVYVCk6IGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBcCiAJZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCkBAIC0yMTgxLDMwICsyMzU4LDM2IEBACiBlbGVtZW50cy9uZW9uaHR0cHNyYyQoRVhFRVhUKTogJChlbGVtZW50c19uZW9uaHR0cHNyY19PQkpFQ1RTKSAkKGVsZW1lbnRzX25lb25odHRwc3JjX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19uZW9uaHR0cHNyY19ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQogCUBybSAtZiBlbGVtZW50cy9uZW9uaHR0cHNyYyQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQoTElOSykgJChlbGVtZW50c19uZW9uaHR0cHNyY19PQkpFQ1RTKSAkKGVsZW1lbnRzX25lb25odHRwc3JjX0xEQUREKSAkKExJQlMpCitlbGVtZW50cy9uZXRzaW0uJChPQkpFWFQpOiBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgXAorCWVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKworZWxlbWVudHMvbmV0c2ltJChFWEVFWFQpOiAkKGVsZW1lbnRzX25ldHNpbV9PQkpFQ1RTKSAkKGVsZW1lbnRzX25ldHNpbV9ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfbmV0c2ltX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCisJQHJtIC1mIGVsZW1lbnRzL25ldHNpbSQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQoTElOSykgJChlbGVtZW50c19uZXRzaW1fT0JKRUNUUykgJChlbGVtZW50c19uZXRzaW1fTERBREQpICQoTElCUykKIGVsZW1lbnRzL29mYS4kKE9CSkVYVCk6IGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBcCiAJZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCiBlbGVtZW50cy9vZmEkKEVYRUVYVCk6ICQoZWxlbWVudHNfb2ZhX09CSkVDVFMpICQoZWxlbWVudHNfb2ZhX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19vZmFfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgZWxlbWVudHMvb2ZhJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChMSU5LKSAkKGVsZW1lbnRzX29mYV9PQkpFQ1RTKSAkKGVsZW1lbnRzX29mYV9MREFERCkgJChMSUJTKQotZWxlbWVudHMvb3B1cy4kKE9CSkVYVCk6IGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBcCi0JZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQotCi1lbGVtZW50cy9vcHVzJChFWEVFWFQpOiAkKGVsZW1lbnRzX29wdXNfT0JKRUNUUykgJChlbGVtZW50c19vcHVzX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19vcHVzX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCi0JQHJtIC1mIGVsZW1lbnRzL29wdXMkKEVYRUVYVCkKLQkkKEFNX1ZfQ0NMRCkkKExJTkspICQoZWxlbWVudHNfb3B1c19PQkpFQ1RTKSAkKGVsZW1lbnRzX29wdXNfTERBREQpICQoTElCUykKIGVsZW1lbnRzL3BjYXBwYXJzZS4kKE9CSkVYVCk6IGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBcCiAJZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCiBlbGVtZW50cy9wY2FwcGFyc2UkKEVYRUVYVCk6ICQoZWxlbWVudHNfcGNhcHBhcnNlX09CSkVDVFMpICQoZWxlbWVudHNfcGNhcHBhcnNlX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19wY2FwcGFyc2VfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgZWxlbWVudHMvcGNhcHBhcnNlJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChMSU5LKSAkKGVsZW1lbnRzX3BjYXBwYXJzZV9PQkpFQ1RTKSAkKGVsZW1lbnRzX3BjYXBwYXJzZV9MREFERCkgJChMSUJTKQotZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYuJChPQkpFWFQpOiAgXAorZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLiQoT0JKRVhUKTogIFwKIAllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQogCi1lbGVtZW50cy9ydHBvbnZpZiQoRVhFRVhUKTogJChlbGVtZW50c19ydHBvbnZpZl9PQkpFQ1RTKSAkKGVsZW1lbnRzX3J0cG9udmlmX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19ydHBvbnZpZl9ERVBFTkRFTkNJRVMpIGVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKQotCUBybSAtZiBlbGVtZW50cy9ydHBvbnZpZiQoRVhFRVhUKQotCSQoQU1fVl9DQ0xEKSQoZWxlbWVudHNfcnRwb252aWZfTElOSykgJChlbGVtZW50c19ydHBvbnZpZl9PQkpFQ1RTKSAkKGVsZW1lbnRzX3J0cG9udmlmX0xEQUREKSAkKExJQlMpCitlbGVtZW50cy9ydHBvbnZpZnBhcnNlJChFWEVFWFQpOiAkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfT0JKRUNUUykgJChlbGVtZW50c19ydHBvbnZpZnBhcnNlX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c19ydHBvbnZpZnBhcnNlX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCisJQHJtIC1mIGVsZW1lbnRzL3J0cG9udmlmcGFyc2UkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfTElOSykgJChlbGVtZW50c19ydHBvbnZpZnBhcnNlX09CSkVDVFMpICQoZWxlbWVudHNfcnRwb252aWZwYXJzZV9MREFERCkgJChMSUJTKQorZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuJChPQkpFWFQpOiAgXAorCWVsZW1lbnRzLyQoYW1fX2RpcnN0YW1wKSBlbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisKK2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wJChFWEVFWFQpOiAkKGVsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX09CSkVDVFMpICQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCisJQHJtIC1mIGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wJChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9MSU5LKSAkKGVsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX09CSkVDVFMpICQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfTERBREQpICQoTElCUykKIGVsZW1lbnRzL3NjaHJvZW5jLiQoT0JKRVhUKTogZWxlbWVudHMvJChhbV9fZGlyc3RhbXApIFwKIAllbGVtZW50cy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKQEAgLTIyMzUsNiArMjQxOCwxMiBAQAogZWxlbWVudHMvdXZjaDI2NGRlbXV4JChFWEVFWFQpOiAkKGVsZW1lbnRzX3V2Y2gyNjRkZW11eF9PQkpFQ1RTKSAkKGVsZW1lbnRzX3V2Y2gyNjRkZW11eF9ERVBFTkRFTkNJRVMpICQoRVhUUkFfZWxlbWVudHNfdXZjaDI2NGRlbXV4X0RFUEVOREVOQ0lFUykgZWxlbWVudHMvJChhbV9fZGlyc3RhbXApCiAJQHJtIC1mIGVsZW1lbnRzL3V2Y2gyNjRkZW11eCQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQoZWxlbWVudHNfdXZjaDI2NGRlbXV4X0xJTkspICQoZWxlbWVudHNfdXZjaDI2NGRlbXV4X09CSkVDVFMpICQoZWxlbWVudHNfdXZjaDI2NGRlbXV4X0xEQUREKSAkKExJQlMpCitlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLiQoT0JKRVhUKTogIFwKKwllbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgZWxlbWVudHMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorCitlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwkKEVYRUVYVCk6ICQoZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX09CSkVDVFMpICQoZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX0RFUEVOREVOQ0lFUykgJChFWFRSQV9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfREVQRU5ERU5DSUVTKSBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkKKwlAcm0gLWYgZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsJChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfTElOSykgJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfT0JKRUNUUykgJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfTERBREQpICQoTElCUykKIGVsZW1lbnRzL3ZpZXdmaW5kZXJiaW4uJChPQkpFWFQpOiBlbGVtZW50cy8kKGFtX19kaXJzdGFtcCkgXAogCWVsZW1lbnRzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIApAQCAtMjMwNyw2ICsyNDk2LDE4IEBACiBsaWJzL2dzdGdsbWVtb3J5JChFWEVFWFQpOiAkKGxpYnNfZ3N0Z2xtZW1vcnlfT0JKRUNUUykgJChsaWJzX2dzdGdsbWVtb3J5X0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJzX2dzdGdsbWVtb3J5X0RFUEVOREVOQ0lFUykgbGlicy8kKGFtX19kaXJzdGFtcCkKIAlAcm0gLWYgbGlicy9nc3RnbG1lbW9yeSQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQobGlic19nc3RnbG1lbW9yeV9MSU5LKSAkKGxpYnNfZ3N0Z2xtZW1vcnlfT0JKRUNUUykgJChsaWJzX2dzdGdsbWVtb3J5X0xEQUREKSAkKExJQlMpCitsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5LiQoT0JKRVhUKTogbGlicy8kKGFtX19kaXJzdGFtcCkgXAorCWxpYnMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorCitsaWJzL2dzdGdscXVlcnkkKEVYRUVYVCk6ICQobGlic19nc3RnbHF1ZXJ5X09CSkVDVFMpICQobGlic19nc3RnbHF1ZXJ5X0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJzX2dzdGdscXVlcnlfREVQRU5ERU5DSUVTKSBsaWJzLyQoYW1fX2RpcnN0YW1wKQorCUBybSAtZiBsaWJzL2dzdGdscXVlcnkkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGxpYnNfZ3N0Z2xxdWVyeV9MSU5LKSAkKGxpYnNfZ3N0Z2xxdWVyeV9PQkpFQ1RTKSAkKGxpYnNfZ3N0Z2xxdWVyeV9MREFERCkgJChMSUJTKQorbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC4kKE9CSkVYVCk6IGxpYnMvJChhbV9fZGlyc3RhbXApIFwKKwlsaWJzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKKworbGlicy9nc3RnbHNsJChFWEVFWFQpOiAkKGxpYnNfZ3N0Z2xzbF9PQkpFQ1RTKSAkKGxpYnNfZ3N0Z2xzbF9ERVBFTkRFTkNJRVMpICQoRVhUUkFfbGlic19nc3RnbHNsX0RFUEVOREVOQ0lFUykgbGlicy8kKGFtX19kaXJzdGFtcCkKKwlAcm0gLWYgbGlicy9nc3RnbHNsJChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChsaWJzX2dzdGdsc2xfTElOSykgJChsaWJzX2dzdGdsc2xfT0JKRUNUUykgJChsaWJzX2dzdGdsc2xfTERBREQpICQoTElCUykKIGxpYnMvbGlic19nc3RnbHVwbG9hZC1nc3RnbHVwbG9hZC4kKE9CSkVYVCk6IGxpYnMvJChhbV9fZGlyc3RhbXApIFwKIAlsaWJzLyQoREVQRElSKS8kKGFtX19kaXJzdGFtcCkKIApAQCAtMjMzNyw2ICsyNTM4LDE0IEBACiBsaWJzL21wZWd2aWRlb3BhcnNlciQoRVhFRVhUKTogJChsaWJzX21wZWd2aWRlb3BhcnNlcl9PQkpFQ1RTKSAkKGxpYnNfbXBlZ3ZpZGVvcGFyc2VyX0RFUEVOREVOQ0lFUykgJChFWFRSQV9saWJzX21wZWd2aWRlb3BhcnNlcl9ERVBFTkRFTkNJRVMpIGxpYnMvJChhbV9fZGlyc3RhbXApCiAJQHJtIC1mIGxpYnMvbXBlZ3ZpZGVvcGFyc2VyJChFWEVFWFQpCiAJJChBTV9WX0NDTEQpJChsaWJzX21wZWd2aWRlb3BhcnNlcl9MSU5LKSAkKGxpYnNfbXBlZ3ZpZGVvcGFyc2VyX09CSkVDVFMpICQobGlic19tcGVndmlkZW9wYXJzZXJfTERBREQpICQoTElCUykKK2xpYnMvbGlic19wbGF5ZXItcGxheWVyLiQoT0JKRVhUKTogbGlicy8kKGFtX19kaXJzdGFtcCkgXAorCWxpYnMvJChERVBESVIpLyQoYW1fX2RpcnN0YW1wKQorbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkuJChPQkpFWFQpOiBsaWJzLyQoYW1fX2RpcnN0YW1wKSBcCisJbGlicy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCisKK2xpYnMvcGxheWVyJChFWEVFWFQpOiAkKGxpYnNfcGxheWVyX09CSkVDVFMpICQobGlic19wbGF5ZXJfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYnNfcGxheWVyX0RFUEVOREVOQ0lFUykgbGlicy8kKGFtX19kaXJzdGFtcCkKKwlAcm0gLWYgbGlicy9wbGF5ZXIkKEVYRUVYVCkKKwkkKEFNX1ZfQ0NMRCkkKGxpYnNfcGxheWVyX0xJTkspICQobGlic19wbGF5ZXJfT0JKRUNUUykgJChsaWJzX3BsYXllcl9MREFERCkgJChMSUJTKQogbGlicy9saWJzX3ZjMXBhcnNlci12YzFwYXJzZXIuJChPQkpFWFQpOiBsaWJzLyQoYW1fX2RpcnN0YW1wKSBcCiAJbGlicy8kKERFUERJUikvJChhbV9fZGlyc3RhbXApCiAKQEAgLTI0MjMsMjMgKzI2MzIsMzUgQEAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfYXNzcmVuZGVyLWFzc3JlbmRlci5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2F1ZGlvaW50ZXJsZWF2ZS1hdWRpb2ludGVybGVhdmUuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19hdWRpb21peGVyLWF1ZGlvbWl4ZXIuUG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19jYW1lcmFiaW4tY2FtZXJhYmluLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfY29tcG9zaXRvci1jb21wb3NpdG9yLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfbXBkLWRhc2hfbXBkLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZmFhYy1mYWFjLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZmFhZC1mYWFkLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZ2RwZGVwYXktZ2RwZGVwYXkuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19nZHBwYXktZ2RwcGF5LlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZ2xpbWFnZXNpbmstZ2xpbWFnZXNpbmsuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXguUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc2RlbXV4X20zdTgtaGxzZGVtdXhfbTN1OC5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2ppZm11eC1qaWZtdXguUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19rYXRlLWthdGUuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tcGVndHNtdXgtbXBlZ3RzbXV4LlBvQGFtX19xdW90ZUAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMuUG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4LlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdGltaWRpdHktdGltaWRpdHkuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c191dmNoMjY0ZGVtdXgtdXZjaDI2NGRlbXV4LlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3ZvYWFjZW5jLXZvYWFjZW5jLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvaDI2M3BhcnNlLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvaDI2NHBhcnNlLlBvQGFtX19xdW90ZUAKQEAgLTI0NTMsOCArMjY3NCw4IEBACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAZWxlbWVudHMvJChERVBESVIpL214ZmRlbXV4LlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvbXhmbXV4LlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvbmVvbmh0dHBzcmMuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9uZXRzaW0uUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9vZmEuUG9AYW1fX3F1b3RlQAotQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9vcHVzLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvcGNhcHBhcnNlLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBlbGVtZW50cy8kKERFUERJUikvc2Nocm9lbmMuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGVsZW1lbnRzLyQoREVQRElSKS9zaG0uUG9AYW1fX3F1b3RlQApAQCAtMjQ2OCwxMSArMjY4OSwxNSBAQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xjb2xvcmNvbnZlcnQtZ3N0Z2xjb2xvcmNvbnZlcnQuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xjb250ZXh0LWdzdGdsY29udGV4dC5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19nc3RnbG1lbW9yeS1nc3RnbG1lbW9yeS5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkuUG9AYW1fX3F1b3RlQAorQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsdXBsb2FkLWdzdGdsdXBsb2FkLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX2gyNjRwYXJzZXItaDI2NHBhcnNlci5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19pbnNlcnRiaW4taW5zZXJ0YmluLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX21wZWd0cy1tcGVndHMuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfbXBlZ3ZpZGVvcGFyc2VyLW1wZWd2aWRlb3BhcnNlci5Qb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyLlBvQGFtX19xdW90ZUAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkuUG9AYW1fX3F1b3RlQAogQEFNREVQX1RSVUVAQGFtX19pbmNsdWRlQCBAYW1fX3F1b3RlQGxpYnMvJChERVBESVIpL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci5Qb0BhbV9fcXVvdGVACiBAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVAbGlicy8kKERFUERJUikvbGlic192cDhwYXJzZXItdnA4cGFyc2VyLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUBvcmMvJChERVBESVIpL29yY19hdWRpb21peGVyLWF1ZGlvbWl4ZXIuUG9AYW1fX3F1b3RlQApAQCAtMjU1NSwyMCArMjc4MCw2IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfYXVkaW9taXhlcl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19hdWRpb21peGVyLWF1ZGlvbWl4ZXIub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hdWRpb21peGVyLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYXVkaW9taXhlci5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hdWRpb21peGVyLmMnOyBmaWAKIAotZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm86IGVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vIGB0ZXN0IC1mICdlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLlBvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vIGB0ZXN0IC1mICdlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYwotCi1lbGVtZW50cy9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIub2JqOiBlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19iYXNlYXVkaW92aXN1YWxpemVyLWJhc2VhdWRpb3Zpc3VhbGl6ZXIuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYyc7IGZpYAotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLlBvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXItYmFzZWF1ZGlvdmlzdWFsaXplci5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAotQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Jhc2VhdWRpb3Zpc3VhbGl6ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfYmFzZWF1ZGlvdmlzdWFsaXplci1iYXNlYXVkaW92aXN1YWxpemVyLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jJzsgZmlgCi0KIGVsZW1lbnRzL2VsZW1lbnRzX2NhbWVyYWJpbi1jYW1lcmFiaW4ubzogZWxlbWVudHMvY2FtZXJhYmluLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19jYW1lcmFiaW5fQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2NhbWVyYWJpbi1jYW1lcmFiaW4ubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfY2FtZXJhYmluLWNhbWVyYWJpbi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfY2FtZXJhYmluLWNhbWVyYWJpbi5vIGB0ZXN0IC1mICdlbGVtZW50cy9jYW1lcmFiaW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvY2FtZXJhYmluLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2NhbWVyYWJpbi1jYW1lcmFiaW4uVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19jYW1lcmFiaW4tY2FtZXJhYmluLlBvCkBAIC0yNTk3LDYgKzI4MDgsNjIgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19jb21wb3NpdG9yX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2NvbXBvc2l0b3ItY29tcG9zaXRvci5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2NvbXBvc2l0b3IuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9jb21wb3NpdG9yLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2NvbXBvc2l0b3IuYyc7IGZpYAogCitlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMubzogZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5vYmo6IGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC10ZXN0X2h0dHBfc3JjLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubzogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubyBgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKKworZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqOiBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgZmlgCisKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm86IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubyBgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iajogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19kYXNoX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGZpYAorCitlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgubzogZWxlbWVudHMvZGFzaF9kZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2Rhc2hfZGVtdXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvZGFzaF9kZW11eC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXguVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXguUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9kYXNoX2RlbXV4LmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2Rhc2hfZGVtdXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvZGFzaF9kZW11eC5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5vYmo6IGVsZW1lbnRzL2Rhc2hfZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2Rhc2hfZGVtdXgtZGFzaF9kZW11eC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvZGFzaF9kZW11eC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2Rhc2hfZGVtdXguYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvZGFzaF9kZW11eC5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXguVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXguUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9kYXNoX2RlbXV4LmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfZGFzaF9kZW11eC1kYXNoX2RlbXV4Lm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZGFzaF9kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19kYXNoX2RlbXV4LWRhc2hfZGVtdXgub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9kYXNoX2RlbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvZGFzaF9kZW11eC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9kYXNoX2RlbXV4LmMnOyBmaWAKKwogZWxlbWVudHMvZWxlbWVudHNfZGFzaF9tcGQtZGFzaF9tcGQubzogZWxlbWVudHMvZGFzaF9tcGQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2Rhc2hfbXBkX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZGFzaF9tcGQtZGFzaF9tcGQubyBgdGVzdCAtZiAnZWxlbWVudHMvZGFzaF9tcGQuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvZGFzaF9tcGQuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfZGFzaF9tcGQtZGFzaF9tcGQuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19kYXNoX21wZC1kYXNoX21wZC5QbwpAQCAtMjY4MSw2ICsyOTQ4LDYyIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfZ2xpbWFnZXNpbmtfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfZ2xpbWFnZXNpbmstZ2xpbWFnZXNpbmsub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9nbGltYWdlc2luay5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2dsaW1hZ2VzaW5rLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2dsaW1hZ2VzaW5rLmMnOyBmaWAKIAorZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMubzogZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMubyBgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLm9iajogZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC10ZXN0X2h0dHBfc3JjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LXRlc3RfaHR0cF9zcmMuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtdGVzdF9odHRwX3NyYy5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGZpYAorCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm86IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubyBgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUubyBgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqOiBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgZmlgCisKK2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubzogZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKKworZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmo6IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzX2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5vOiBlbGVtZW50cy9obHNfZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4LlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2hsc19kZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9obHNfZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXguUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9obHNfZGVtdXguYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX2hsc19kZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2hsc19kZW11eC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9obHNfZGVtdXguYworCitlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm9iajogZWxlbWVudHMvaGxzX2RlbXV4LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXgub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4LlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4Lm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvaGxzX2RlbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvaGxzX2RlbXV4LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2hsc19kZW11eC5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNfZGVtdXgtaGxzX2RlbXV4LlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2hsc19kZW11eC5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX2hsc19kZW11eC1obHNfZGVtdXgub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19obHNfZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzX2RlbXV4LWhsc19kZW11eC5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2hsc19kZW11eC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2hsc19kZW11eC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9obHNfZGVtdXguYyc7IGZpYAorCiBlbGVtZW50cy9lbGVtZW50c19obHNkZW11eF9tM3U4LWhsc2RlbXV4X20zdTgubzogZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfaGxzZGVtdXhfbTN1OF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfaGxzZGVtdXhfbTN1OC1obHNkZW11eF9tM3U4Lm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX2hsc2RlbXV4X20zdTgtaGxzZGVtdXhfbTN1OC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfaGxzZGVtdXhfbTN1OC1obHNkZW11eF9tM3U4Lm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jCiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNkZW11eF9tM3U4LWhsc2RlbXV4X20zdTguVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19obHNkZW11eF9tM3U4LWhsc2RlbXV4X20zdTguUG8KQEAgLTI3MzcsMzMgKzMwNjAsODkgQEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKIEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tcGVndHNtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXBlZ3RzbXV4LW1wZWd0c211eC5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL21wZWd0c211eC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL21wZWd0c211eC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9tcGVndHNtdXguYyc7IGZpYAogCi1lbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vOiBlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLm8gLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vIGB0ZXN0IC1mICdlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jCi1AYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLlBvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvbXBnMTIzYXVkaW9kZWMuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMubzogZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5vIGB0ZXN0IC1mICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vIGB0ZXN0IC1mICdlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5vIGB0ZXN0IC1mICdlbGVtZW50cy90ZXN0X2h0dHBfc3JjLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYwogCi1lbGVtZW50cy9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5vYmo6IGVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tcGcxMjNhdWRpb2RlY19DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tcGcxMjNhdWRpb2RlYy1tcGcxMjNhdWRpb2RlYy5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnOyBmaWAKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX21wZzEyM2F1ZGlvZGVjLW1wZzEyM2F1ZGlvZGVjLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLm9iajogZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LXRlc3RfaHR0cF9zcmMub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLlRwbyAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtdGVzdF9odHRwX3NyYy5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXBnMTIzYXVkaW9kZWNfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXBnMTIzYXVkaW9kZWMtbXBnMTIzYXVkaW9kZWMub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC10ZXN0X2h0dHBfc3JjLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jJzsgZmlgCiAKLWVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLm86IGVsZW1lbnRzL3J0cG9udmlmLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZl9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3J0cG9udmlmLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9ydHBvbnZpZi5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm86IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKIEBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKLUBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZl9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5vIGB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZi5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9ydHBvbnZpZi5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYwogCi1lbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5vYmo6IGVsZW1lbnRzL3J0cG9udmlmLmMKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZl9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZi1ydHBvbnZpZi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3J0cG9udmlmLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3J0cG9udmlmLmMnOyBmaWAKLUBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYuUG8KLUBBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9ydHBvbnZpZi5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmLXJ0cG9udmlmLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqOiBlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2VuZ2luZS5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfZW5naW5lLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACi1AYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfcnRwb252aWZfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWYtcnRwb252aWYub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3J0cG9udmlmLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3J0cG9udmlmLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9lbmdpbmUub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm86IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vIGB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ubyBgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCisKK2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmo6IGVsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5vYmogLU1EIC1NUCAtTUYgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LWFkYXB0aXZlX2RlbXV4X2NvbW1vbi5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtYWRhcHRpdmVfZGVtdXhfY29tbW9uLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24uUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1hZGFwdGl2ZV9kZW11eF9jb21tb24ub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9jb21tb24uYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgubzogZWxlbWVudHMvbXNzZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX21zc2RlbXV4X0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgubyBgdGVzdCAtZiAnZWxlbWVudHMvbXNzZGVtdXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvbXNzZGVtdXguYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXguVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2VsZW1lbnRzL21zc2RlbXV4LmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgubyBgdGVzdCAtZiAnZWxlbWVudHMvbXNzZGVtdXguYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvbXNzZGVtdXguYworCitlbGVtZW50cy9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5vYmo6IGVsZW1lbnRzL21zc2RlbXV4LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19tc3NkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19tc3NkZW11eC1tc3NkZW11eC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9tc3NkZW11eC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL21zc2RlbXV4LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL21zc2RlbXV4LmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4LlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXguUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9tc3NkZW11eC5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX21zc2RlbXV4LW1zc2RlbXV4Lm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfbXNzZGVtdXhfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfbXNzZGVtdXgtbXNzZGVtdXgub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy9tc3NkZW11eC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL21zc2RlbXV4LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL21zc2RlbXV4LmMnOyBmaWAKKworZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm86IGVsZW1lbnRzL3J0cG9udmlmcGFyc2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vIGB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3J0cG9udmlmcGFyc2UuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvcnRwb252aWZwYXJzZS5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZnBhcnNlX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vIGB0ZXN0IC1mICdlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3J0cG9udmlmcGFyc2UuYworCitlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2Uub2JqOiBlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZnBhcnNlX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2Uub2JqIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnBhcnNlLXJ0cG9udmlmcGFyc2UuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvcnRwb252aWZwYXJzZS5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmcGFyc2UtcnRwb252aWZwYXJzZS5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmcGFyc2VfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZwYXJzZS1ydHBvbnZpZnBhcnNlLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvcnRwb252aWZwYXJzZS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvcnRwb252aWZwYXJzZS5jJzsgZmlgCisKK2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm86IGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLlRwbyBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJyBvYmplY3Q9J2VsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMKKworZWxlbWVudHMvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAub2JqOiBlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXBfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfcnRwb252aWZ0aW1lc3RhbXAtcnRwb252aWZ0aW1lc3RhbXAuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c19ydHBvbnZpZnRpbWVzdGFtcC1ydHBvbnZpZnRpbWVzdGFtcC5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3J0cG9udmlmdGltZXN0YW1wLXJ0cG9udmlmdGltZXN0YW1wLm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jJzsgZmlgCiAKIGVsZW1lbnRzL2VsZW1lbnRzX3RpbWlkaXR5LXRpbWlkaXR5Lm86IGVsZW1lbnRzL3RpbWlkaXR5LmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c190aW1pZGl0eV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZWxlbWVudHMvZWxlbWVudHNfdGltaWRpdHktdGltaWRpdHkubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdGltaWRpdHktdGltaWRpdHkuVHBvIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3RpbWlkaXR5LXRpbWlkaXR5Lm8gYHRlc3QgLWYgJ2VsZW1lbnRzL3RpbWlkaXR5LmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGVsZW1lbnRzL3RpbWlkaXR5LmMKQEAgLTI3OTMsNiArMzE3MiwyMCBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3V2Y2gyNjRkZW11eF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBlbGVtZW50cy9lbGVtZW50c191dmNoMjY0ZGVtdXgtdXZjaDI2NGRlbXV4Lm9iaiBgaWYgdGVzdCAtZiAnZWxlbWVudHMvdXZjaDI2NGRlbXV4LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnZWxlbWVudHMvdXZjaDI2NGRlbXV4LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2VsZW1lbnRzL3V2Y2gyNjRkZW11eC5jJzsgZmlgCiAKK2VsZW1lbnRzL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwubzogZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGVsZW1lbnRzL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwubyAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vIGB0ZXN0IC1mICdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMnIG9iamVjdD0nZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChlbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vIGB0ZXN0IC1mICdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKKworZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vYmo6IGVsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLm9iaiAtTUQgLU1QIC1NRiBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5vYmogYGlmIHRlc3QgLWYgJ2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9lbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsLXZpZGVvZnJhbWUtYXVkaW9sZXZlbC5UcG8gZWxlbWVudHMvJChERVBESVIpL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYycgb2JqZWN0PSdlbGVtZW50cy9lbGVtZW50c192aWRlb2ZyYW1lX2F1ZGlvbGV2ZWwtdmlkZW9mcmFtZS1hdWRpb2xldmVsLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZWxlbWVudHNfdmlkZW9mcmFtZV9hdWRpb2xldmVsX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGVsZW1lbnRzL2VsZW1lbnRzX3ZpZGVvZnJhbWVfYXVkaW9sZXZlbC12aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwub2JqIGBpZiB0ZXN0IC1mICdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMnOyBmaWAKKwogZWxlbWVudHMvZWxlbWVudHNfdm9hYWNlbmMtdm9hYWNlbmMubzogZWxlbWVudHMvdm9hYWNlbmMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGVsZW1lbnRzX3ZvYWFjZW5jX0NGTEFHUykgJChDRkxBR1MpIC1NVCBlbGVtZW50cy9lbGVtZW50c192b2FhY2VuYy12b2FhY2VuYy5vIC1NRCAtTVAgLU1GIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192b2FhY2VuYy12b2FhY2VuYy5UcG8gLWMgLW8gZWxlbWVudHMvZWxlbWVudHNfdm9hYWNlbmMtdm9hYWNlbmMubyBgdGVzdCAtZiAnZWxlbWVudHMvdm9hYWNlbmMuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZWxlbWVudHMvdm9hYWNlbmMuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBlbGVtZW50cy8kKERFUERJUikvZWxlbWVudHNfdm9hYWNlbmMtdm9hYWNlbmMuVHBvIGVsZW1lbnRzLyQoREVQRElSKS9lbGVtZW50c192b2FhY2VuYy12b2FhY2VuYy5QbwpAQCAtMjg3Nyw2ICszMjcwLDM0IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19nc3RnbG1lbW9yeV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfZ3N0Z2xtZW1vcnktZ3N0Z2xtZW1vcnkub2JqIGBpZiB0ZXN0IC1mICdsaWJzL2dzdGdsbWVtb3J5LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9nc3RnbG1lbW9yeS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9saWJzL2dzdGdsbWVtb3J5LmMnOyBmaWAKIAorbGlicy9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5vOiBsaWJzL2dzdGdscXVlcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfZ3N0Z2xxdWVyeV9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGlicy9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5vIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5LlRwbyAtYyAtbyBsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm8gYHRlc3QgLWYgJ2xpYnMvZ3N0Z2xxdWVyeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL2dzdGdscXVlcnkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5UcG8gbGlicy8kKERFUERJUikvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdsaWJzL2dzdGdscXVlcnkuYycgb2JqZWN0PSdsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfZ3N0Z2xxdWVyeV9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm8gYHRlc3QgLWYgJ2xpYnMvZ3N0Z2xxdWVyeS5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL2dzdGdscXVlcnkuYworCitsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm9iajogbGlicy9nc3RnbHF1ZXJ5LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX2dzdGdscXVlcnlfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkub2JqIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5LlRwbyAtYyAtbyBsaWJzL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5Lm9iaiBgaWYgdGVzdCAtZiAnbGlicy9nc3RnbHF1ZXJ5LmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9nc3RnbHF1ZXJ5LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvZ3N0Z2xxdWVyeS5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xxdWVyeS1nc3RnbHF1ZXJ5LlRwbyBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpYnMvZ3N0Z2xxdWVyeS5jJyBvYmplY3Q9J2xpYnMvbGlic19nc3RnbHF1ZXJ5LWdzdGdscXVlcnkub2JqJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX2dzdGdscXVlcnlfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlicy9saWJzX2dzdGdscXVlcnktZ3N0Z2xxdWVyeS5vYmogYGlmIHRlc3QgLWYgJ2xpYnMvZ3N0Z2xxdWVyeS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xpYnMvZ3N0Z2xxdWVyeS5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9saWJzL2dzdGdscXVlcnkuYyc7IGZpYAorCitsaWJzL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLm86IGxpYnMvZ3N0Z2xzbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19nc3RnbHNsX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLm8gLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19nc3RnbHNsLWdzdGdsc2wuVHBvIC1jIC1vIGxpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wubyBgdGVzdCAtZiAnbGlicy9nc3RnbHNsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpYnMvZ3N0Z2xzbC5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLlRwbyBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpYnMvZ3N0Z2xzbC5jJyBvYmplY3Q9J2xpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19nc3RnbHNsX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGxpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wubyBgdGVzdCAtZiAnbGlicy9nc3RnbHNsLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpYnMvZ3N0Z2xzbC5jCisKK2xpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wub2JqOiBsaWJzL2dzdGdsc2wuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfZ3N0Z2xzbF9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5vYmogLU1EIC1NUCAtTUYgbGlicy8kKERFUERJUikvbGlic19nc3RnbHNsLWdzdGdsc2wuVHBvIC1jIC1vIGxpYnMvbGlic19nc3RnbHNsLWdzdGdsc2wub2JqIGBpZiB0ZXN0IC1mICdsaWJzL2dzdGdsc2wuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdsaWJzL2dzdGdsc2wuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbGlicy9nc3RnbHNsLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgbGlicy8kKERFUERJUikvbGlic19nc3RnbHNsLWdzdGdsc2wuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGlicy9nc3RnbHNsLmMnIG9iamVjdD0nbGlicy9saWJzX2dzdGdsc2wtZ3N0Z2xzbC5vYmonIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAorQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAorQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfZ3N0Z2xzbF9DRkxBR1MpICQoQ0ZMQUdTKSAtYyAtbyBsaWJzL2xpYnNfZ3N0Z2xzbC1nc3RnbHNsLm9iaiBgaWYgdGVzdCAtZiAnbGlicy9nc3RnbHNsLmMnOyB0aGVuICQoQ1lHUEFUSF9XKSAnbGlicy9nc3RnbHNsLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvZ3N0Z2xzbC5jJzsgZmlgCisKIGxpYnMvbGlic19nc3RnbHVwbG9hZC1nc3RnbHVwbG9hZC5vOiBsaWJzL2dzdGdsdXBsb2FkLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX2dzdGdsdXBsb2FkX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfZ3N0Z2x1cGxvYWQtZ3N0Z2x1cGxvYWQubyAtTUQgLU1QIC1NRiBsaWJzLyQoREVQRElSKS9saWJzX2dzdGdsdXBsb2FkLWdzdGdsdXBsb2FkLlRwbyAtYyAtbyBsaWJzL2xpYnNfZ3N0Z2x1cGxvYWQtZ3N0Z2x1cGxvYWQubyBgdGVzdCAtZiAnbGlicy9nc3RnbHVwbG9hZC5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaWJzL2dzdGdsdXBsb2FkLmMKIEBhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgbGlicy8kKERFUERJUikvbGlic19nc3RnbHVwbG9hZC1nc3RnbHVwbG9hZC5UcG8gbGlicy8kKERFUERJUikvbGlic19nc3RnbHVwbG9hZC1nc3RnbHVwbG9hZC5QbwpAQCAtMjk0Nyw2ICszMzY4LDM0IEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19tcGVndmlkZW9wYXJzZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlicy9saWJzX21wZWd2aWRlb3BhcnNlci1tcGVndmlkZW9wYXJzZXIub2JqIGBpZiB0ZXN0IC1mICdsaWJzL21wZWd2aWRlb3BhcnNlci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xpYnMvbXBlZ3ZpZGVvcGFyc2VyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvbXBlZ3ZpZGVvcGFyc2VyLmMnOyBmaWAKIAorbGlicy9saWJzX3BsYXllci1wbGF5ZXIubzogbGlicy9wbGF5ZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfcGxheWVyX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllci5UcG8gLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXIubyBgdGVzdCAtZiAnbGlicy9wbGF5ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGlicy9wbGF5ZXIuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXIuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllci5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpYnMvcGxheWVyLmMnIG9iamVjdD0nbGlicy9saWJzX3BsYXllci1wbGF5ZXIubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19wbGF5ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXIubyBgdGVzdCAtZiAnbGlicy9wbGF5ZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGlicy9wbGF5ZXIuYworCitsaWJzL2xpYnNfcGxheWVyLXBsYXllci5vYmo6IGxpYnMvcGxheWVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX3BsYXllcl9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGlicy9saWJzX3BsYXllci1wbGF5ZXIub2JqIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllci5UcG8gLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXIub2JqIGBpZiB0ZXN0IC1mICdsaWJzL3BsYXllci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xpYnMvcGxheWVyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvcGxheWVyLmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyLlRwbyBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXIuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdsaWJzL3BsYXllci5jJyBvYmplY3Q9J2xpYnMvbGlic19wbGF5ZXItcGxheWVyLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19wbGF5ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXIub2JqIGBpZiB0ZXN0IC1mICdsaWJzL3BsYXllci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xpYnMvcGxheWVyLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvcGxheWVyLmMnOyBmaWAKKworbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkubzogbGlicy9wbGF5ZXJfZHVtbXkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfcGxheWVyX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5UcG8gLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkubyBgdGVzdCAtZiAnbGlicy9wbGF5ZXJfZHVtbXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGlicy9wbGF5ZXJfZHVtbXkuYworQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J2xpYnMvcGxheWVyX2R1bW15LmMnIG9iamVjdD0nbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkubycgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19wbGF5ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkubyBgdGVzdCAtZiAnbGlicy9wbGF5ZXJfZHVtbXkuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGlicy9wbGF5ZXJfZHVtbXkuYworCitsaWJzL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5vYmo6IGxpYnMvcGxheWVyX2R1bW15LmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJzX3BsYXllcl9DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkub2JqIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfcGxheWVyLXBsYXllcl9kdW1teS5UcG8gLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkub2JqIGBpZiB0ZXN0IC1mICdsaWJzL3BsYXllcl9kdW1teS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xpYnMvcGxheWVyX2R1bW15LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvcGxheWVyX2R1bW15LmMnOyBmaWAKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgbGlicy8kKERFUERJUikvbGlic19wbGF5ZXItcGxheWVyX2R1bW15LlRwbyBsaWJzLyQoREVQRElSKS9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdsaWJzL3BsYXllcl9kdW1teS5jJyBvYmplY3Q9J2xpYnMvbGlic19wbGF5ZXItcGxheWVyX2R1bW15Lm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQobGlic19wbGF5ZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGlicy9saWJzX3BsYXllci1wbGF5ZXJfZHVtbXkub2JqIGBpZiB0ZXN0IC1mICdsaWJzL3BsYXllcl9kdW1teS5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2xpYnMvcGxheWVyX2R1bW15LmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL2xpYnMvcGxheWVyX2R1bW15LmMnOyBmaWAKKwogbGlicy9saWJzX3ZjMXBhcnNlci12YzFwYXJzZXIubzogbGlicy92YzFwYXJzZXIuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGxpYnNfdmMxcGFyc2VyX0NGTEFHUykgJChDRkxBR1MpIC1NVCBsaWJzL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci5vIC1NRCAtTVAgLU1GIGxpYnMvJChERVBESVIpL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci5UcG8gLWMgLW8gbGlicy9saWJzX3ZjMXBhcnNlci12YzFwYXJzZXIubyBgdGVzdCAtZiAnbGlicy92YzFwYXJzZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgbGlicy92YzFwYXJzZXIuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSBsaWJzLyQoREVQRElSKS9saWJzX3ZjMXBhcnNlci12YzFwYXJzZXIuVHBvIGxpYnMvJChERVBESVIpL2xpYnNfdmMxcGFyc2VyLXZjMXBhcnNlci5QbwpAQCAtMzI1Niw2ICszNzA1LDEzIEBACiAJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCiAJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKIAkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCitlbGVtZW50cy9kYXNoX2RlbXV4LmxvZzogZWxlbWVudHMvZGFzaF9kZW11eCQoRVhFRVhUKQorCUBwPSdlbGVtZW50cy9kYXNoX2RlbXV4JChFWEVFWFQpJzsgXAorCWI9J2VsZW1lbnRzL2Rhc2hfZGVtdXgnOyBcCisJJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKKwktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKKwkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAorCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKIGVsZW1lbnRzL2ZhYWMubG9nOiBlbGVtZW50cy9mYWFjJChFWEVFWFQpCiAJQHA9J2VsZW1lbnRzL2ZhYWMkKEVYRUVYVCknOyBcCiAJYj0nZWxlbWVudHMvZmFhYyc7IFwKQEAgLTMyOTgsNiArMzc1NCwxMyBAQAogCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAogCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCiAJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQorZWxlbWVudHMvbXNzZGVtdXgubG9nOiBlbGVtZW50cy9tc3NkZW11eCQoRVhFRVhUKQorCUBwPSdlbGVtZW50cy9tc3NkZW11eCQoRVhFRVhUKSc7IFwKKwliPSdlbGVtZW50cy9tc3NkZW11eCc7IFwKKwkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAorCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAorCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCisJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQogZWxlbWVudHMvb2ZhLmxvZzogZWxlbWVudHMvb2ZhJChFWEVFWFQpCiAJQHA9J2VsZW1lbnRzL29mYSQoRVhFRVhUKSc7IFwKIAliPSdlbGVtZW50cy9vZmEnOyBcCkBAIC0zMzI2LDEzICszNzg5LDYgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKLWVsZW1lbnRzL29wdXMubG9nOiBlbGVtZW50cy9vcHVzJChFWEVFWFQpCi0JQHA9J2VsZW1lbnRzL29wdXMkKEVYRUVYVCknOyBcCi0JYj0nZWxlbWVudHMvb3B1cyc7IFwKLQkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAotCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAotCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCi0JIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQogZWxlbWVudHMvY3VybGh0dHBzaW5rLmxvZzogZWxlbWVudHMvY3VybGh0dHBzaW5rJChFWEVFWFQpCiAJQHA9J2VsZW1lbnRzL2N1cmxodHRwc2luayQoRVhFRVhUKSc7IFwKIAliPSdlbGVtZW50cy9jdXJsaHR0cHNpbmsnOyBcCkBAIC0zMzgyLDYgKzM4MzgsMTMgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKK2VsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbC5sb2c6IGVsZW1lbnRzL3ZpZGVvZnJhbWUtYXVkaW9sZXZlbCQoRVhFRVhUKQorCUBwPSdlbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwkKEVYRUVYVCknOyBcCisJYj0nZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsJzsgXAorCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCisJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCisJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKKwkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCiBlbGVtZW50cy9hdXRvY29udmVydC5sb2c6IGVsZW1lbnRzL2F1dG9jb252ZXJ0JChFWEVFWFQpCiAJQHA9J2VsZW1lbnRzL2F1dG9jb252ZXJ0JChFWEVFWFQpJzsgXAogCWI9J2VsZW1lbnRzL2F1dG9jb252ZXJ0JzsgXApAQCAtMzQxNywxMyArMzg4MCw2IEBACiAJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCiAJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKIAkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCi1lbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyLmxvZzogZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplciQoRVhFRVhUKQotCUBwPSdlbGVtZW50cy9iYXNlYXVkaW92aXN1YWxpemVyJChFWEVFWFQpJzsgXAotCWI9J2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXInOyBcCi0JJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKLQktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKLQkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAotCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKIGVsZW1lbnRzL2NhbWVyYWJpbi5sb2c6IGVsZW1lbnRzL2NhbWVyYWJpbiQoRVhFRVhUKQogCUBwPSdlbGVtZW50cy9jYW1lcmFiaW4kKEVYRUVYVCknOyBcCiAJYj0nZWxlbWVudHMvY2FtZXJhYmluJzsgXApAQCAtMzUwOCwxMyArMzk2NCw2IEBACiAJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCiAJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKIAkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCi1lbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5sb2c6IGVsZW1lbnRzL21wZzEyM2F1ZGlvZGVjJChFWEVFWFQpCi0JQHA9J2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjJChFWEVFWFQpJzsgXAotCWI9J2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjJzsgXAotCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCi0JLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCi0JJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKLQkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCiBlbGVtZW50cy9teGZkZW11eC5sb2c6IGVsZW1lbnRzL214ZmRlbXV4JChFWEVFWFQpCiAJQHA9J2VsZW1lbnRzL214ZmRlbXV4JChFWEVFWFQpJzsgXAogCWI9J2VsZW1lbnRzL214ZmRlbXV4JzsgXApAQCAtMzUyOSw2ICszOTc4LDEzIEBACiAJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCiAJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKIAkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCitlbGVtZW50cy9uZXRzaW0ubG9nOiBlbGVtZW50cy9uZXRzaW0kKEVYRUVYVCkKKwlAcD0nZWxlbWVudHMvbmV0c2ltJChFWEVFWFQpJzsgXAorCWI9J2VsZW1lbnRzL25ldHNpbSc7IFwKKwkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAorCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAorCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCisJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQogZWxlbWVudHMvcGNhcHBhcnNlLmxvZzogZWxlbWVudHMvcGNhcHBhcnNlJChFWEVFWFQpCiAJQHA9J2VsZW1lbnRzL3BjYXBwYXJzZSQoRVhFRVhUKSc7IFwKIAliPSdlbGVtZW50cy9wY2FwcGFyc2UnOyBcCkBAIC0zNTM2LDkgKzM5OTIsMTYgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKLWVsZW1lbnRzL3J0cG9udmlmLmxvZzogZWxlbWVudHMvcnRwb252aWYkKEVYRUVYVCkKLQlAcD0nZWxlbWVudHMvcnRwb252aWYkKEVYRUVYVCknOyBcCi0JYj0nZWxlbWVudHMvcnRwb252aWYnOyBcCitlbGVtZW50cy9ydHBvbnZpZnBhcnNlLmxvZzogZWxlbWVudHMvcnRwb252aWZwYXJzZSQoRVhFRVhUKQorCUBwPSdlbGVtZW50cy9ydHBvbnZpZnBhcnNlJChFWEVFWFQpJzsgXAorCWI9J2VsZW1lbnRzL3J0cG9udmlmcGFyc2UnOyBcCisJJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKKwktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKKwkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAorCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKK2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmxvZzogZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAkKEVYRUVYVCkKKwlAcD0nZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAkKEVYRUVYVCknOyBcCisJYj0nZWxlbWVudHMvcnRwb252aWZ0aW1lc3RhbXAnOyBcCiAJJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXApAQCAtMzY5Nyw2ICs0MTYwLDIwIEBACiAJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCiAJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKIAkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCitsaWJzL2dzdGdscXVlcnkubG9nOiBsaWJzL2dzdGdscXVlcnkkKEVYRUVYVCkKKwlAcD0nbGlicy9nc3RnbHF1ZXJ5JChFWEVFWFQpJzsgXAorCWI9J2xpYnMvZ3N0Z2xxdWVyeSc7IFwKKwkkKGFtX19jaGVja19wcmUpICQoTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAorCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAorCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpICQoQU1fTE9HX0RSSVZFUl9GTEFHUykgJChMT0dfRFJJVkVSX0ZMQUdTKSAtLSAkKExPR19DT01QSUxFKSBcCisJIiQkdHN0IiAkKEFNX1RFU1RTX0ZEX1JFRElSRUNUKQorbGlicy9nc3RnbHNsLmxvZzogbGlicy9nc3RnbHNsJChFWEVFWFQpCisJQHA9J2xpYnMvZ3N0Z2xzbCQoRVhFRVhUKSc7IFwKKwliPSdsaWJzL2dzdGdsc2wnOyBcCisJJChhbV9fY2hlY2tfcHJlKSAkKExPR19EUklWRVIpIC0tdGVzdC1uYW1lICIkJGYiIFwKKwktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKKwkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAorCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKIGVsZW1lbnRzL2dsaW1hZ2VzaW5rLmxvZzogZWxlbWVudHMvZ2xpbWFnZXNpbmskKEVYRUVYVCkKIAlAcD0nZWxlbWVudHMvZ2xpbWFnZXNpbmskKEVYRUVYVCknOyBcCiAJYj0nZWxlbWVudHMvZ2xpbWFnZXNpbmsnOyBcCkBAIC0zNzExLDYgKzQxODgsMjAgQEAKIAktLWxvZy1maWxlICQkYi5sb2cgLS10cnMtZmlsZSAkJGIudHJzIFwKIAkkKGFtX19jb21tb25fZHJpdmVyX2ZsYWdzKSAkKEFNX0xPR19EUklWRVJfRkxBR1MpICQoTE9HX0RSSVZFUl9GTEFHUykgLS0gJChMT0dfQ09NUElMRSkgXAogCSIkJHRzdCIgJChBTV9URVNUU19GRF9SRURJUkVDVCkKK2VsZW1lbnRzL2hsc19kZW11eC5sb2c6IGVsZW1lbnRzL2hsc19kZW11eCQoRVhFRVhUKQorCUBwPSdlbGVtZW50cy9obHNfZGVtdXgkKEVYRUVYVCknOyBcCisJYj0nZWxlbWVudHMvaGxzX2RlbXV4JzsgXAorCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCisJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCisJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKKwkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCitsaWJzL3BsYXllci5sb2c6IGxpYnMvcGxheWVyJChFWEVFWFQpCisJQHA9J2xpYnMvcGxheWVyJChFWEVFWFQpJzsgXAorCWI9J2xpYnMvcGxheWVyJzsgXAorCSQoYW1fX2NoZWNrX3ByZSkgJChMT0dfRFJJVkVSKSAtLXRlc3QtbmFtZSAiJCRmIiBcCisJLS1sb2ctZmlsZSAkJGIubG9nIC0tdHJzLWZpbGUgJCRiLnRycyBcCisJJChhbV9fY29tbW9uX2RyaXZlcl9mbGFncykgJChBTV9MT0dfRFJJVkVSX0ZMQUdTKSAkKExPR19EUklWRVJfRkxBR1MpIC0tICQoTE9HX0NPTVBJTEUpIFwKKwkiJCR0c3QiICQoQU1fVEVTVFNfRkRfUkVESVJFQ1QpCiAudGVzdC5sb2c6CiAJQHA9JyQ8JzsgXAogCSQoYW1fX3NldF9iKTsgXApAQCAtMzkxMywzMSArNDQwNCwyNiBAQAogIyBpZiB0aGUgdGVzdCBmYWlscywgcnVuIGl0IGFnYWluIGF0IGF0IGxlYXN0IGRlYnVnIGxldmVsIDIKICUuY2hlY2s6ICUKIAlAJChBTV9URVNUU19FTlZJUk9OTUVOVCkJCQkJCVwKLQlDS19ERUZBVUxUX1RJTUVPVVQ9MjAJCQkJCVwKIAkkKiB8fAkJCQkJCQlcCiAJJChBTV9URVNUU19FTlZJUk9OTUVOVCkJCQkJCVwKIAlHU1RfREVCVUc9JCRHU1RfREVCVUcsKjoyCQkJCVwKLQlDS19ERUZBVUxUX1RJTUVPVVQ9MjAJCQkJCVwKIAkkKgogCiAjIGp1c3QgbGlrZSAnY2hlY2snLCBidXQgZG9uJ3QgcnVuIGl0IGFnYWluIGlmIGl0IGZhaWxzICh1c2VmdWwgZm9yIGRlYnVnZ2luZykKICUuY2hlY2stbm9yZXBlYXQ6ICUKIAlAJChBTV9URVNUU19FTlZJUk9OTUVOVCkJCQkJCVwKLQlDS19ERUZBVUxUX1RJTUVPVVQ9MjAJCQkJCVwKIAkkKgogCiAjIHJ1biBhbnkgZ2l2ZW4gdGVzdCBpbiBhIGxvb3AKICUudG9ydHVyZTogJQogCUBmb3IgaSBpbiBgc2VxIDEgJChMT09QUylgOyBkbwkJCQlcCiAJJChBTV9URVNUU19FTlZJUk9OTUVOVCkJCQkJCVwKLQlDS19ERUZBVUxUX1RJTUVPVVQ9MjAJCQkJCVwKIAkkKjsgZG9uZQogCiAjIHJ1biBhbnkgZ2l2ZW4gdGVzdCBpbiBhbiBpbmZpbml0ZSBsb29wCiAlLmZvcmV2ZXI6ICUKIAlAd2hpbGUgdHJ1ZTsgZG8JCQkJCQlcCiAJJChBTV9URVNUU19FTlZJUk9OTUVOVCkJCQkJCVwKLQlDS19ERUZBVUxUX1RJTUVPVVQ9MjAJCQkJCVwKIAkkKiB8fCBicmVhazsgZG9uZQogCiAjIHZhbGdyaW5kIGFueSBnaXZlbiB0ZXN0IGJ5IHJ1bm5pbmcgbWFrZSB0ZXN0LnZhbGdyaW5kCkBAIC0zOTUzLDcgKzQ0MzksNyBAQAogCS0tc2hvdy1wb3NzaWJseS1sb3N0PW5vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAogCS0tbGVhay1yZXNvbHV0aW9uPWhpZ2ggLS1udW0tY2FsbGVycz0yMAkJCVwKIAkuLyQqIDI+JjEgfCB0ZWUgJCR2YWxncmluZF9sb2cgOwkJCVwKLQlpZiBncmVwICI9PSIgJCR2YWxncmluZF9sb2cgPiAvZGV2L251bGwgMj4mMTsgdGhlbglcCisJaWYgZ3JlcCAiXj09IiAkJHZhbGdyaW5kX2xvZyA+IC9kZXYvbnVsbCAyPiYxOyB0aGVuCVwKIAkgICAgcm0gJCR2YWxncmluZF9sb2c7CQkJCQlcCiAJICAgIGV4aXQgMTsJCQkJCQlcCiAJZmkgOwkJCQkJCQlcCkBAIC00MTQ1LDYgKzQ2MzEsMTMgQEAKIGNsZWFuLWxvY2FsOiBjbGVhbi1sb2NhbC1jaGVjawogZGlzdGNsZWFuLWxvY2FsOiBkaXN0Y2xlYW4tbG9jYWwtb3JjCiAKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAkKFBMQVlFUl9NRURJQV9GSUxFUyk6CitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVACSQoTUtESVJfUCkgbWVkaWEKK0BXSVRIX0dTVF9QTEFZRVJfVEVTVFNfVFJVRUAJJChXR0VUKSAtYyBodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9kYXRhL21lZGlhL3NtYWxsLyQoc3Vic3QgbWVkaWEvLCwkQCkgLU8gbWVkaWEvJChzdWJzdCBtZWRpYS8sLCRAKQorCitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVAbGlicy9wbGF5ZXJfZHVtbXkuYzogJChQTEFZRVJfTUVESUFfRklMRVMpCitAV0lUSF9HU1RfUExBWUVSX1RFU1RTX1RSVUVACXRvdWNoIGxpYnMvcGxheWVyX2R1bW15LmMKKwogb3JjL2JheWVyLmM6ICQodG9wX3NyY2RpcikvZ3N0L2JheWVyL2dzdGJheWVyb3JjLm9yYwogCSQoTUtESVJfUCkgb3JjCiAJJChPUkNDKSAtLXRlc3QgLW8gJEAgJDwKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDRmZDA1MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5jCkBAIC0wLDAgKzEsNTExIEBACisvKiBBIHNldCBvZiB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFyZSBjb21tb24gYmV0d2VlbiBlbGVtZW50cworICogYmFzZWQgdXBvbiBHc3RBZGFwdGl2ZURlbXV4CisgKgorICogQ29weXJpZ2h0IChjKSA8MjAxNT4gWW91VmlldyBUViBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisjaW5jbHVkZSAiYWRhcHRpdmVfZGVtdXhfZW5naW5lLmgiCisjaW5jbHVkZSAiYWRhcHRpdmVfZGVtdXhfY29tbW9uLmgiCisKKyNkZWZpbmUgR1NUX1RFU1RfSFRUUF9TUkNfTkFNRSAgICAgICAgICAgICJ0ZXN0aHR0cHNyYyIKKworc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4VGVzdENhc2VDbGFzcworeworICBHT2JqZWN0Q2xhc3MgcGFyZW50X2NsYXNzOworfTsKKworI2RlZmluZSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKKworc3RhdGljIHZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9kaXNwb3NlIChHT2JqZWN0ICogb2JqZWN0KTsKK3N0YXRpYyB2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpOworc3RhdGljIHZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9jbGVhciAoR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICoKKyAgICB0ZXN0RGF0YSk7CisKK0dfREVGSU5FX1RZUEUgKEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSwgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZSwKKyAgICBHX1RZUEVfT0JKRUNUKTsKKworc3RhdGljIHZvaWQKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfY2xhc3NfaW5pdCAoR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpvYmplY3QgPSBHX09CSkVDVF9DTEFTUyAoa2xhc3MpOworCisgIG9iamVjdC0+ZGlzcG9zZSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfZGlzcG9zZTsKKyAgb2JqZWN0LT5maW5hbGl6ZSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfZmluYWxpemU7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX2luaXQgKEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqIHRlc3REYXRhKQoreworICB0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMgPSBOVUxMOworICB0ZXN0RGF0YS0+dGVzdF90YXNrID0gTlVMTDsKKyAgZ19yZWNfbXV0ZXhfaW5pdCAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfbG9jayk7CisgIGdfbXV0ZXhfaW5pdCAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfbG9jayk7CisgIGdfY29uZF9pbml0ICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9jb25kKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9jbGVhciAodGVzdERhdGEpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9jbGVhciAoR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICogdGVzdERhdGEpCit7CisgIGlmICh0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMpIHsKKyAgICBnX2xpc3RfZnJlZSAodGVzdERhdGEtPm91dHB1dF9zdHJlYW1zKTsKKyAgICB0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMgPSBOVUxMOworICB9CisgIHRlc3REYXRhLT5jb3VudF9vZl9maW5pc2hlZF9zdHJlYW1zID0gMDsKKyAgaWYgKHRlc3REYXRhLT50ZXN0X3Rhc2spIHsKKyAgICBnc3RfdGFza19zdG9wICh0ZXN0RGF0YS0+dGVzdF90YXNrKTsKKyAgICBnc3RfdGFza19qb2luICh0ZXN0RGF0YS0+dGVzdF90YXNrKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YS0+dGVzdF90YXNrKTsKKyAgICB0ZXN0RGF0YS0+dGVzdF90YXNrID0gTlVMTDsKKyAgfQorICB0ZXN0RGF0YS0+c2lnbmFsX2NvbnRleHQgPSBOVUxMOworICB0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlID0gVEVTVF9UQVNLX1NUQVRFX05PVF9TVEFSVEVEOworICB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrID0gMDsKKyAgZ3N0X2V2ZW50X3JlcGxhY2UgKCZ0ZXN0RGF0YS0+c2Vla19ldmVudCwgTlVMTCk7CisgIHRlc3REYXRhLT5zaWduYWxfY29udGV4dCA9IE5VTEw7Cit9CisKKworc3RhdGljIHZvaWQKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfZGlzcG9zZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKG9iamVjdCk7CisKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9jbGVhciAodGVzdERhdGEpOworCisgIEdTVF9DQUxMX1BBUkVOVCAoR19PQkpFQ1RfQ0xBU1MsIGRpc3Bvc2UsIChvYmplY3QpKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfZmluYWxpemUgKEdPYmplY3QgKiBvYmplY3QpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFIChvYmplY3QpOworCisgIGdfY29uZF9jbGVhciAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfY29uZCk7CisgIGdfbXV0ZXhfY2xlYXIgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworICBnX3JlY19tdXRleF9jbGVhciAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfbG9jayk7CisgIGlmICh0ZXN0RGF0YS0+dGVzdF90YXNrKSB7CisgICAgZ3N0X3Rhc2tfc3RvcCAodGVzdERhdGEtPnRlc3RfdGFzayk7CisgICAgZ3N0X3Rhc2tfam9pbiAodGVzdERhdGEtPnRlc3RfdGFzayk7CisgICAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEtPnRlc3RfdGFzayk7CisgICAgdGVzdERhdGEtPnRlc3RfdGFzayA9IE5VTEw7CisgIH0KKyAgaWYgKHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcykgeworICAgIGdfbGlzdF9mcmVlICh0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMpOworICAgIHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcyA9IE5VTEw7CisgIH0KKworICBHU1RfQ0FMTF9QQVJFTlQgKEdfT0JKRUNUX0NMQVNTLCBmaW5hbGl6ZSwgKG9iamVjdCkpOworfQorCisvKioKKyAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3OgorICoKKyAqIENyZWF0ZXMgYSBuZXcgI0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZS4gRnJlZSB3aXRoIGdfb2JqZWN0X3VucmVmKCkuCisgKgorICogUmV0dXJuczogKHRyYW5zZmVyIGZ1bGwpOiBhIG5ldyAjR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlCisgKi8KK0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqCitnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAodm9pZCkKK3sKKyAgcmV0dXJuIGdfb2JqZWN0X25ld3YgKEdTVF9UWVBFX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSwgMCwgTlVMTCk7Cit9CisKKworR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqCitnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9maW5kX3Rlc3RfZGF0YV9ieV9zdHJlYW0gKEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqCisgICAgdGVzdERhdGEsIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLCBndWludCAqIGluZGV4KQoreworICBnY2hhciAqcGFkX25hbWU7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnJldCA9IE5VTEw7CisgIGd1aW50IGNvdW50ID0gMDsKKworICBwYWRfbmFtZSA9IGdzdF9wYWRfZ2V0X25hbWUgKHN0cmVhbS0+cGFkKTsKKyAgZmFpbF91bmxlc3MgKHBhZF9uYW1lICE9IE5VTEwpOworICBmb3IgKEdMaXN0ICogd2FsayA9IHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtczsgd2Fsazsgd2FsayA9IGdfbGlzdF9uZXh0ICh3YWxrKSkgeworICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRkID0gd2Fsay0+ZGF0YTsKKyAgICBpZiAoc3RyY21wICh0ZC0+bmFtZSwgcGFkX25hbWUpID09IDApIHsKKyAgICAgIHJldCA9IHRkOworICAgICAgaWYgKGluZGV4KQorICAgICAgICAqaW5kZXggPSBjb3VudDsKKyAgICB9CisgICAgKytjb3VudDsKKyAgfQorICBnX2ZyZWUgKHBhZF9uYW1lKTsKKyAgcmV0dXJuIHJldDsKK30KKworLyogZnVuY3Rpb24gdG8gdmFsaWRhdGUgZGF0YSByZWNlaXZlZCBieSBBcHBTaW5rICovCitnYm9vbGVhbgorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKgorICAgIGVuZ2luZSwgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIEdzdEJ1ZmZlciAqIGJ1ZmZlciwKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdE1hcEluZm8gaW5mbzsKKyAgZ3VpbnQgcGF0dGVybjsKKyAgZ3VpbnQ2NCBzdHJlYW1PZmZzZXQ7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICp0ZXN0T3V0cHV0U3RyZWFtRGF0YTsKKworICBmYWlsX3VubGVzcyAoc3RyZWFtICE9IE5VTEwpOworICBmYWlsX3VubGVzcyAoZW5naW5lLT5waXBlbGluZSAhPSBOVUxMKTsKKyAgdGVzdE91dHB1dFN0cmVhbURhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZmluZF90ZXN0X2RhdGFfYnlfc3RyZWFtICh0ZXN0RGF0YSwgc3RyZWFtLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHRlc3RPdXRwdXRTdHJlYW1EYXRhICE9IE5VTEwpOworICBzdHJlYW1PZmZzZXQgPSBzdHJlYW0tPnNlZ21lbnRfc3RhcnQgKyBzdHJlYW0tPnNlZ21lbnRfcmVjZWl2ZWRfc2l6ZTsKKyAgaWYgKHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9kYXRhKSB7CisgICAgZ3NpemUgc2l6ZSA9IGdzdF9idWZmZXJfZ2V0X3NpemUgKGJ1ZmZlcik7CisgICAgaWYgKGdzdF9idWZmZXJfbWVtY21wIChidWZmZXIsIDAsCisgICAgICAgICAgICAmdGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX2RhdGFbc3RyZWFtT2Zmc2V0XSwgc2l6ZSkgPT0gMCkgeworICAgICAgcmV0dXJuIFRSVUU7CisgICAgfQorICAgIC8qIElmIGJ1ZmZlcnMgZG8gbm90IG1hdGNoLCBmYWxsIGJhY2sgdG8gYSBzbG93ZXIgYnl0ZS1iYXNlZCBjaGVjaworICAgICAgIHNvIHRoYXQgdGhlIHRlc3QgY2FuIG91dHB1dCB0aGUgcG9zaXRpb24gd2hlcmUgdGhlIHJlY2VpdmVkIGRhdGEKKyAgICAgICBkaXZlcmdlcyBmcm9tIGV4cGVjdGVkX2RhdGEKKyAgICAgKi8KKyAgfQorCisgIGdzdF9idWZmZXJfbWFwIChidWZmZXIsICZpbmZvLCBHU1RfTUFQX1JFQUQpOworCisgIEdTVF9ERUJVRworICAgICAgKCJzZWdtZW50X3N0YXJ0ID0gJSIgR19HVUlOVDY0X0ZPUk1BVCAiIHNlZ21lbnRfcmVjZWl2ZWRfc2l6ZSA9ICUiCisgICAgICBHX0dVSU5UNjRfRk9STUFUICIgYnVmZmVyU2l6ZT0lZCIsCisgICAgICBzdHJlYW0tPnNlZ21lbnRfc3RhcnQsIHN0cmVhbS0+c2VnbWVudF9yZWNlaXZlZF9zaXplLCAoZ2ludCkgaW5mby5zaXplKTsKKworICBwYXR0ZXJuID0gc3RyZWFtT2Zmc2V0IC0gc3RyZWFtT2Zmc2V0ICUgc2l6ZW9mIChwYXR0ZXJuKTsKKyAgZm9yIChndWludDY0IGkgPSAwOyBpICE9IGluZm8uc2l6ZTsgKytpKSB7CisgICAgZ3VpbnQgcmVjZWl2ZWQgPSBpbmZvLmRhdGFbaV07CisgICAgZ3VpbnQgZXhwZWN0ZWQ7CisKKyAgICBpZiAodGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX2RhdGEpIHsKKyAgICAgIGZhaWxfdW5sZXNzIChzdHJlYW1PZmZzZXQgKyBpIDwgdGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX3NpemUpOworICAgICAgZXhwZWN0ZWQgPSB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfZGF0YVtzdHJlYW1PZmZzZXQgKyBpXTsKKyAgICB9IGVsc2UgeworICAgICAgZ2NoYXIgcGF0dGVybl9ieXRlX3RvX3JlYWQ7CisKKyAgICAgIHBhdHRlcm5fYnl0ZV90b19yZWFkID0gKHN0cmVhbU9mZnNldCArIGkpICUgc2l6ZW9mIChwYXR0ZXJuKTsKKyAgICAgIGlmIChwYXR0ZXJuX2J5dGVfdG9fcmVhZCA9PSAwKSB7CisgICAgICAgIHBhdHRlcm4gPSBzdHJlYW1PZmZzZXQgKyBpOworICAgICAgfQorCisgICAgICBleHBlY3RlZCA9IChwYXR0ZXJuID4+IChwYXR0ZXJuX2J5dGVfdG9fcmVhZCAqIDgpKSAmIDB4RkY7CisjaWYgMAorICAgICAgR1NUX0RFQlVHCisgICAgICAgICAgKCJyZWNlaXZlZCAnMHglMDJ4JyBleHBlY3RlZCAnMHglMDJ4JyBvZmZzZXQgJSIgR19HVUlOVDY0X0ZPUk1BVAorICAgICAgICAgICIgcGF0dGVybj0lMDh4IGJ5dGVfdG9fcmVhZD0lZCIsCisgICAgICAgICAgcmVjZWl2ZWQsIGV4cGVjdGVkLCBpLCBwYXR0ZXJuLCBwYXR0ZXJuX2J5dGVfdG9fcmVhZCk7CisjZW5kaWYKKyAgICB9CisKKyAgICBmYWlsX3VubGVzcyAocmVjZWl2ZWQgPT0gZXhwZWN0ZWQsCisgICAgICAgICJvdXRwdXQgdmFsaWRhdGlvbiBmYWlsZWQ6IHJlY2VpdmVkICcweCUwMngnIGV4cGVjdGVkICcweCUwMngnIGJ5dGUgJSIKKyAgICAgICAgR19HVUlOVDY0X0ZPUk1BVCAiIG9mZnNldD0lIiBHX0dVSU5UNjRfRk9STUFUICJcbiIsIHJlY2VpdmVkLCBleHBlY3RlZCwKKyAgICAgICAgaSwgc3RyZWFtT2Zmc2V0KTsKKyAgfQorCisgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZmZlciwgJmluZm8pOworICByZXR1cm4gVFJVRTsKK30KKworLyogZnVuY3Rpb24gdG8gY2hlY2sgdG90YWwgc2l6ZSBvZiBkYXRhIHJlY2VpdmVkIGJ5IEFwcFNpbmsKKyAqIHdpbGwgYmUgY2FsbGVkIHdoZW4gQXBwU2luayByZWNlaXZlcyBlb3MuCisgKi8KK3ZvaWQKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICAqIGVuZ2luZSwgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKHVzZXJfZGF0YSk7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRlc3RPdXRwdXRTdHJlYW1EYXRhOworCisgIHRlc3RPdXRwdXRTdHJlYW1EYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAodGVzdERhdGEsIHN0cmVhbSwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh0ZXN0T3V0cHV0U3RyZWFtRGF0YSAhPSBOVUxMKTsKKworICBmYWlsX3VubGVzcyAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplID09CisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwKKyAgICAgICJzaXplIHZhbGlkYXRpb24gZmFpbGVkLCBleHBlY3RlZCAlZCByZWNlaXZlZCAlZCIsCisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwgc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplKTsKKyAgdGVzdERhdGEtPmNvdW50X29mX2ZpbmlzaGVkX3N0cmVhbXMrKzsKKyAgaWYgKHRlc3REYXRhLT5jb3VudF9vZl9maW5pc2hlZF9zdHJlYW1zID09CisgICAgICBnX2xpc3RfbGVuZ3RoICh0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMpKSB7CisgICAgZ19tYWluX2xvb3BfcXVpdCAoZW5naW5lLT5sb29wKTsKKyAgfQorfQorCit0eXBlZGVmIHN0cnVjdCBfU2Vla1Rhc2tDb250ZXh0Cit7CisgIEdzdEVsZW1lbnQgKnBpcGVsaW5lOworICBHc3RUYXNrICp0YXNrOworICBHc3RFdmVudCAqc2Vla19ldmVudDsKK30gU2Vla1Rhc2tDb250ZXh0OworCisvKiBmdW5jdGlvbiB0byBnZW5lcmF0ZSBhIHNlZWsgZXZlbnQuIFdpbGwgYmUgcnVuIGluIGEgc2VwYXJhdGUgdGhyZWFkICovCitzdGF0aWMgdm9pZAordGVzdFNlZWtUYXNrRG9TZWVrIChncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIFNlZWtUYXNrQ29udGV4dCAqY29udGV4dCA9IChTZWVrVGFza0NvbnRleHQgKikgdXNlcl9kYXRhOworICBHc3RUYXNrICp0YXNrOworCisgIEdTVF9ERUJVRyAoInRlc3RTZWVrVGFza0RvU2VlayBjYWxsaW5nIHNlZWsiKTsKKworICBmYWlsX3VubGVzcyAoR1NUX0lTX0VWRU5UIChjb250ZXh0LT5zZWVrX2V2ZW50KSk7CisgIGZhaWxfdW5sZXNzIChHU1RfRVZFTlRfVFlQRSAoY29udGV4dC0+c2Vla19ldmVudCkgPT0gR1NUX0VWRU5UX1NFRUspOworCisgIGlmICghZ3N0X2VsZW1lbnRfc2VuZF9ldmVudCAoR1NUX0VMRU1FTlQgKGNvbnRleHQtPnBpcGVsaW5lKSwKKyAgICAgICAgICBjb250ZXh0LT5zZWVrX2V2ZW50KSkKKyAgICBmYWlsICgiU2VlayBmYWlsZWQhXG4iKTsKKyAgR1NUX0RFQlVHICgic2VlayBvayIpOworICB0YXNrID0gY29udGV4dC0+dGFzazsKKyAgZ19zbGljZV9mcmVlIChTZWVrVGFza0NvbnRleHQsIGNvbnRleHQpOworICBnc3RfdGFza19zdG9wICh0YXNrKTsKK30KKworLyogZnVuY3Rpb24gdG8gYmUgY2FsbGVkIGR1cmluZyBzZWVrIHRlc3Qgd2hlbiBkZW11eCBzZW5kcyBkYXRhIHRvIEFwcFNpbmsKKyAqIEl0IG1vbml0b3JzIHRoZSBkYXRhIHNlbnQgYW5kIGFmdGVyIGEgd2hpbGUgd2lsbCBnZW5lcmF0ZSBhIHNlZWsgcmVxdWVzdC4KKyAqLworc3RhdGljIGdib29sZWFuCit0ZXN0U2Vla0FkYXB0aXZlRGVtdXhTZW5kc0RhdGEgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAodXNlcl9kYXRhKTsKKyAgU2Vla1Rhc2tDb250ZXh0ICpzZWVrQ29udGV4dDsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqdGVzdE91dHB1dFN0cmVhbURhdGE7CisgIGd1aW50IGluZGV4ID0gMDsKKworICB0ZXN0T3V0cHV0U3RyZWFtRGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9maW5kX3Rlc3RfZGF0YV9ieV9zdHJlYW0gKHRlc3REYXRhLCBzdHJlYW0sCisgICAgICAmaW5kZXgpOworICBmYWlsX3VubGVzcyAodGVzdE91dHB1dFN0cmVhbURhdGEgIT0gTlVMTCk7CisgIC8qIGZpcnN0IGVudHJ5IGluIHRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcyBpcyB0aGUKKyAgICAgUEFEIG9uIHdoaWNoIHRvIHBlcmZvcm0gdGhlIHNlZWsgKi8KKyAgaWYgKGluZGV4ID09IDAgJiYKKyAgICAgIHRlc3REYXRhLT50ZXN0X3Rhc2sgPT0gTlVMTCAmJgorICAgICAgKHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSArIHN0cmVhbS0+c2VnbWVudF9yZWNlaXZlZF9zaXplKSA+PQorICAgICAgdGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlaykgeworICAgIEdzdFNlZWtGbGFncyBzZWVrX2ZsYWdzOworCisgICAgdGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlayA9CisgICAgICAgIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSArIHN0cmVhbS0+c2VnbWVudF9yZWNlaXZlZF9zaXplOworCisgICAgZ3N0X2V2ZW50X3BhcnNlX3NlZWsgKHRlc3REYXRhLT5zZWVrX2V2ZW50LCBOVUxMLCBOVUxMLCAmc2Vla19mbGFncywgTlVMTCwKKyAgICAgICAgTlVMTCwgTlVMTCwgTlVMTCk7CisgICAgaWYgKHNlZWtfZmxhZ3MgJiBHU1RfU0VFS19GTEFHX0ZMVVNIKQorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX3NpemUgKz0gdGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlazsKKworICAgIEdTVF9ERUJVRyAoInN0YXJ0aW5nIHNlZWsgdGFzayIpOworCisgICAgZ19tdXRleF9sb2NrICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9sb2NrKTsKKyAgICB0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlID0KKyAgICAgICAgVEVTVF9UQVNLX1NUQVRFX1dBSVRJTkdfRk9SX1RFU1RTUkNfU1RBVEVfQ0hBTkdFOworICAgIGdfbXV0ZXhfdW5sb2NrICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9sb2NrKTsKKworICAgIHNlZWtDb250ZXh0ID0gZ19zbGljZV9uZXcgKFNlZWtUYXNrQ29udGV4dCk7CisgICAgc2Vla0NvbnRleHQtPnBpcGVsaW5lID0gZW5naW5lLT5waXBlbGluZTsKKyAgICBzZWVrQ29udGV4dC0+c2Vla19ldmVudCA9IGdzdF9ldmVudF9yZWYgKHRlc3REYXRhLT5zZWVrX2V2ZW50KTsKKyAgICB0ZXN0RGF0YS0+dGVzdF90YXNrID0gc2Vla0NvbnRleHQtPnRhc2sgPQorICAgICAgICBnc3RfdGFza19uZXcgKChHc3RUYXNrRnVuY3Rpb24pIHRlc3RTZWVrVGFza0RvU2Vlaywgc2Vla0NvbnRleHQsIE5VTEwpOworICAgIGdzdF90YXNrX3NldF9sb2NrICh0ZXN0RGF0YS0+dGVzdF90YXNrLCAmdGVzdERhdGEtPnRlc3RfdGFza19sb2NrKTsKKyAgICBnc3RfdGFza19zdGFydCAodGVzdERhdGEtPnRlc3RfdGFzayk7CisKKyAgICBHU1RfREVCVUcgKCJzZWVrIHRhc2sgc3RhcnRlZCIpOworCisgICAgaWYgKHNlZWtfZmxhZ3MgJiBHU1RfU0VFS19GTEFHX0ZMVVNIKSB7CisgICAgICBnX211dGV4X2xvY2sgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworCisgICAgICBHU1RfREVCVUcgKCJ3YWl0aW5nIGZvciBzZWVrIHRhc2sgdG8gY2hhbmdlIHN0YXRlIG9uIHRlc3RzcmMiKTsKKworICAgICAgLyogd2FpdCBmb3IgdGVzdF90YXNrIHRvIHJ1biwgc2VuZCBhIGZsdXNoIHN0YXJ0IGV2ZW50IHRvIEFwcFNpbmsKKyAgICAgICAqIGFuZCBjaGFuZ2UgdGhlIHRlc3RodHRwc3JjIGVsZW1lbnQgc3RhdGUgZnJvbSBQTEFZSU5HIHRvIFBBVVNFRAorICAgICAgICovCisgICAgICB3aGlsZSAodGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZSA9PQorICAgICAgICAgIFRFU1RfVEFTS19TVEFURV9XQUlUSU5HX0ZPUl9URVNUU1JDX1NUQVRFX0NIQU5HRSkgeworICAgICAgICBnX2NvbmRfd2FpdCAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfY29uZCwKKyAgICAgICAgICAgICZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworICAgICAgfQorICAgICAgZ19tdXRleF91bmxvY2sgKCZ0ZXN0RGF0YS0+dGVzdF90YXNrX3N0YXRlX2xvY2spOworICAgICAgLyogd2UgY2FuIGNvbnRpbnVlIG5vdywgYnV0IHRoaXMgYnVmZmVyIHdpbGwgYmUgcmVqZWN0ZWQgYnkgQXBwU2luaworICAgICAgICogYmVjYXVzZSBpdCBpcyBpbiBmbHVzaGluZyBtb2RlCisgICAgICAgKi8KKyAgICAgIEdTVF9ERUJVRyAoInNlZWsgdGFzayBjaGFuZ2VkIHN0YXRlIG9uIHRlc3RzcmMsIHJlc3VtaW5nIik7CisgICAgfQorICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0U2Vla0FkYXB0aXZlQXBwU2lua0V2ZW50IChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwKKyAgICBHc3RFdmVudCAqIGV2ZW50LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICp0ZXN0T3V0cHV0U3RyZWFtRGF0YTsKKyAgZ3VpbnQgaW5kZXggPSAwOworCisgIHRlc3RPdXRwdXRTdHJlYW1EYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAodGVzdERhdGEsIHN0cmVhbSwKKyAgICAgICZpbmRleCk7CisgIGZhaWxfdW5sZXNzICh0ZXN0T3V0cHV0U3RyZWFtRGF0YSAhPSBOVUxMKTsKKworICBpZiAodGVzdERhdGEtPnNlZWtfZXZlbnQgJiYgR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSA9PSBHU1RfRVZFTlRfU0VHTUVOVAorICAgICAgJiYgdGVzdE91dHB1dFN0cmVhbURhdGEtPnBvc3Rfc2Vla19zZWdtZW50LmZvcm1hdCAhPSBHU1RfRk9STUFUX1VOREVGSU5FRAorICAgICAgJiYgZ3N0X2V2ZW50X2dldF9zZXFudW0gKGV2ZW50KSA9PQorICAgICAgZ3N0X2V2ZW50X2dldF9zZXFudW0gKHRlc3REYXRhLT5zZWVrX2V2ZW50KSkgeworICAgIGNvbnN0IEdzdFNlZ21lbnQgKnNlZWtfc2VnbWVudDsKKworCisgICAgZ3N0X2V2ZW50X3BhcnNlX3NlZ21lbnQgKGV2ZW50LCAmc2Vla19zZWdtZW50KTsKKyAgICBmYWlsX3VubGVzcyAoc2Vla19zZWdtZW50LT5mb3JtYXQgPT0KKyAgICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPnBvc3Rfc2Vla19zZWdtZW50LmZvcm1hdCk7CisgICAgZmFpbF91bmxlc3MgKHNlZWtfc2VnbWVudC0+cmF0ZSA9PQorICAgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+cG9zdF9zZWVrX3NlZ21lbnQucmF0ZSk7CisgICAgZmFpbF91bmxlc3MgKHNlZWtfc2VnbWVudC0+c3RhcnQgPT0KKyAgICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPnBvc3Rfc2Vla19zZWdtZW50LnN0YXJ0KTsKKyAgICBmYWlsX3VubGVzcyAoc2Vla19zZWdtZW50LT5zdG9wID09CisgICAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5wb3N0X3NlZWtfc2VnbWVudC5zdG9wKTsKKyAgICBmYWlsX3VubGVzcyAoc2Vla19zZWdtZW50LT5iYXNlID09CisgICAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5wb3N0X3NlZWtfc2VnbWVudC5iYXNlKTsKKyAgICBmYWlsX3VubGVzcyAoc2Vla19zZWdtZW50LT50aW1lID09CisgICAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5wb3N0X3NlZWtfc2VnbWVudC50aW1lKTsKKworICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5zZWdtZW50X3ZlcmlmaWNhdGlvbl9uZWVkZWQgPSBGQUxTRTsKKyAgfQorfQorCisvKiBjYWxsYmFjayBjYWxsZWQgd2hlbiBtYWluX2xvb3AgZGV0ZWN0cyBhIHN0YXRlIGNoYW5nZWQgZXZlbnQgKi8KK3N0YXRpYyB2b2lkCit0ZXN0U2Vla09uU3RhdGVDaGFuZ2VkIChHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKHVzZXJfZGF0YSk7CisgIEdzdFN0YXRlIG9sZF9zdGF0ZSwgbmV3X3N0YXRlOworICBjb25zdCBjaGFyICpzcmNOYW1lID0gR1NUX09CSkVDVF9OQU1FIChtc2ctPnNyYyk7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2Vfc3RhdGVfY2hhbmdlZCAobXNnLCAmb2xkX3N0YXRlLCAmbmV3X3N0YXRlLCBOVUxMKTsKKyAgR1NUX0RFQlVHICgiRWxlbWVudCAlcyBjaGFuZ2VkIHN0YXRlIGZyb20gJXMgdG8gJXMiLAorICAgICAgR1NUX09CSkVDVF9OQU1FIChtc2ctPnNyYyksCisgICAgICBnc3RfZWxlbWVudF9zdGF0ZV9nZXRfbmFtZSAob2xkX3N0YXRlKSwKKyAgICAgIGdzdF9lbGVtZW50X3N0YXRlX2dldF9uYW1lIChuZXdfc3RhdGUpKTsKKworICBpZiAoc3Ryc3RyIChzcmNOYW1lLCAic3JjYmluIikgPT0gc3JjTmFtZSAmJgorICAgICAgb2xkX3N0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HICYmIG5ld19zdGF0ZSA9PSBHU1RfU1RBVEVfUEFVU0VEKSB7CisgICAgZ19tdXRleF9sb2NrICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9sb2NrKTsKKyAgICBpZiAodGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZSA9PQorICAgICAgICBURVNUX1RBU0tfU1RBVEVfV0FJVElOR19GT1JfVEVTVFNSQ19TVEFURV9DSEFOR0UpIHsKKyAgICAgIEdTVF9ERUJVRyAoImNoYW5naW5nIHRlc3RfdGFza19zdGF0ZSIpOworICAgICAgdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZSA9IFRFU1RfVEFTS19TVEFURV9FWElUSU5HOworICAgICAgZ19jb25kX3NpZ25hbCAoJnRlc3REYXRhLT50ZXN0X3Rhc2tfc3RhdGVfY29uZCk7CisgICAgfQorICAgIGdfbXV0ZXhfdW5sb2NrICgmdGVzdERhdGEtPnRlc3RfdGFza19zdGF0ZV9sb2NrKTsKKyAgfQorfQorCisvKgorICogSXNzdWUgYSBzZWVrIHJlcXVlc3QgYWZ0ZXIgbWVkaWEgc2VnbWVudCBoYXMgc3RhcnRlZCB0byBiZSBkb3dubG9hZGVkCisgKiBvbiB0aGUgZmlyc3QgcGFkIGxpc3RlZCBpbiBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbURhdGEgYW5kIHRoZQorICogZmlyc3QgY2h1bmsgb2YgYXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGFscmVhZHkgYXJyaXZlZCBpbiBBcHBTaW5rCisgKi8KK3N0YXRpYyB2b2lkCit0ZXN0U2Vla1ByZVRlc3RDYWxsYmFjayAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAodXNlcl9kYXRhKTsKKyAgR3N0QnVzICpidXM7CisKKyAgLyogcmVnaXN0ZXIgYSBjYWxsYmFjayB0byBsaXN0ZW4gZm9yIHN0YXRlIGNoYW5nZSBldmVudHMgKi8KKyAgYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMgKEdTVF9QSVBFTElORSAoZW5naW5lLT5waXBlbGluZSkpOworICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2ggKGJ1cyk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGJ1cywgIm1lc3NhZ2U6OnN0YXRlLWNoYW5nZWQiLAorICAgICAgR19DQUxMQkFDSyAodGVzdFNlZWtPblN0YXRlQ2hhbmdlZCksIHRlc3REYXRhKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RTZWVrUG9zdFRlc3RDYWxsYmFjayAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAodXNlcl9kYXRhKTsKKyAgZm9yIChHTGlzdCAqIHdhbGsgPSB0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXM7IHdhbGs7IHdhbGsgPSBnX2xpc3RfbmV4dCAod2FsaykpIHsKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICp0ZCA9IHdhbGstPmRhdGE7CisKKyAgICBmYWlsX2lmICh0ZC0+c2VnbWVudF92ZXJpZmljYXRpb25fbmVlZGVkKTsKKyAgfQorfQorCisvKiBmdW5jdGlvbiB0byBjaGVjayB0b3RhbCBzaXplIG9mIGRhdGEgcmVjZWl2ZWQgYnkgQXBwU2luaworICogd2lsbCBiZSBjYWxsZWQgd2hlbiBBcHBTaW5rIHJlY2VpdmVzIGVvcy4KKyAqLwordm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9kb3dubG9hZF9lcnJvcl9zaXplX29mX3JlY2VpdmVkX2RhdGEKKyAgICAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YSA9IEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UgKHVzZXJfZGF0YSk7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKnRlc3RPdXRwdXRTdHJlYW1EYXRhOworCisgIHRlc3RPdXRwdXRTdHJlYW1EYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbSAodGVzdERhdGEsIHN0cmVhbSwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh0ZXN0T3V0cHV0U3RyZWFtRGF0YSAhPSBOVUxMKTsKKyAgLyogZXhwZWN0IHRvIHJlY2VpdmUgbW9yZSB0aGFuIDAgKi8KKyAgZmFpbF91bmxlc3MgKHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSA+IDAsCisgICAgICAic2l6ZSB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXMsIGV4cGVjdGVkID4gMCwgcmVjZWl2ZWQgJWQiLAorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPm5hbWUsIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSk7CisKKyAgLyogZXhwZWN0IHRvIHJlY2VpdmUgbGVzcyB0aGFuIGZpbGUgc2l6ZSAqLworICBmYWlsX3VubGVzcyAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplIDwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLAorICAgICAgInNpemUgdmFsaWRhdGlvbiBmYWlsZWQgZm9yICVzLCBleHBlY3RlZCA8ICVkIHJlY2VpdmVkICVkIiwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5uYW1lLCB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwKKyAgICAgIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSk7CisgIGlmICh0ZXN0RGF0YS0+Y291bnRfb2ZfZmluaXNoZWRfc3RyZWFtcyA9PQorICAgICAgZ19saXN0X2xlbmd0aCAodGVzdERhdGEtPm91dHB1dF9zdHJlYW1zKSkgeworICAgIGdfbWFpbl9sb29wX3F1aXQgKGVuZ2luZS0+bG9vcCk7CisgIH0KK30KKwordm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2VlayAoY29uc3QgZ2NoYXIgKiBlbGVtZW50X25hbWUsCisgICAgY29uc3QgZ2NoYXIgKiBtYW5pZmVzdF91cmksIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqIHRlc3REYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyBjYiA9IHsgMCB9OworICBjYi5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhOworICBjYi5hcHBzaW5rX2VvcyA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKyAgY2IuYXBwc2lua19ldmVudCA9IHRlc3RTZWVrQWRhcHRpdmVBcHBTaW5rRXZlbnQ7CisgIGNiLnByZV90ZXN0ID0gdGVzdFNlZWtQcmVUZXN0Q2FsbGJhY2s7CisgIGNiLnBvc3RfdGVzdCA9IHRlc3RTZWVrUG9zdFRlc3RDYWxsYmFjazsKKyAgY2IuZGVtdXhfc2VudF9kYXRhID0gdGVzdFNlZWtBZGFwdGl2ZURlbXV4U2VuZHNEYXRhOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKGVsZW1lbnRfbmFtZSwgbWFuaWZlc3RfdXJpLCAmY2IsIHRlc3REYXRhKTsKKyAgLyogdGhlIGNhbGwgdG8gZ19vYmplY3RfdW5yZWYgb2YgdGVzdERhdGEgd2lsbCBjbGVhbiB1cCB0aGUgc2VlayB0YXNrICovCit9CisKK3ZvaWQKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NldHVwICh2b2lkKQoreworICBHc3RSZWdpc3RyeSAqcmVnaXN0cnk7CisgIGdib29sZWFuIHJldDsKKworICByZWdpc3RyeSA9IGdzdF9yZWdpc3RyeV9nZXQgKCk7CisgIHJldCA9IGdzdF90ZXN0X2h0dHBfc3JjX3JlZ2lzdGVyX3BsdWdpbiAocmVnaXN0cnksIEdTVF9URVNUX0hUVFBfU1JDX05BTUUpOworICBmYWlsX3VubGVzcyAocmV0KTsKK30KKwordm9pZAorZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfdGVhcmRvd24gKHZvaWQpCit7CisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzIChOVUxMLCBOVUxMKTsKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfc2V0X2RlZmF1bHRfYmxvY2tzaXplICgwKTsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5oIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfY29tbW9uLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4YmRlMAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2NvbW1vbi5oCkBAIC0wLDAgKzEsMjEyIEBACisvKiBBIHNldCBvZiB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGFyZSBjb21tb24gYmV0d2VlbiBlbGVtZW50cworICogYmFzZWQgdXBvbiBHc3RBZGFwdGl2ZURlbXV4CisgKgorICogQ29weXJpZ2h0IChjKSA8MjAxNT4gWW91VmlldyBUViBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX0FEQVBUSVZFX0RFTVVYX0NPTU1PTl9URVNUX0hfXworI2RlZmluZSBfX0dTVF9BREFQVElWRV9ERU1VWF9DT01NT05fVEVTVF9IX18KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlICJhZGFwdGl2ZV9kZW11eF9lbmdpbmUuaCIKKworR19CRUdJTl9ERUNMUworCisjZGVmaW5lIEdTVF9UWVBFX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSBcCisgIChnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX2dldF90eXBlKCkpCisjZGVmaW5lIEdTVF9BREFQVElWRV9ERU1VWF9URVNUX0NBU0Uob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfQ0FTVCgob2JqKSwgR1NUX1RZUEVfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFLCBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UpKQorI2RlZmluZSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFX0NMQVNTKGtsYXNzKSBcCisgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLCBHU1RfVFlQRV9BREFQVElWRV9ERU1VWF9URVNUX0NBU0UsIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZUNsYXNzKSkKKyNkZWZpbmUgR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRV9HRVRfQ0xBU1Mob2JqKSBcCisgIChHX1RZUEVfSU5TVEFOQ0VfR0VUX0NMQVNTICgob2JqKSwgR1NUX1RZUEVfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFLCBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2VDbGFzcykpCisjZGVmaW5lIEdTVF9JU19BREFQVElWRV9ERU1VWF9URVNUX0NBU0Uob2JqKSBcCisgIChHX1RZUEVfQ0hFQ0tfSU5TVEFOQ0VfVFlQRSgob2JqKSwgR1NUX1RZUEVfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFKSkKKyNkZWZpbmUgR1NUX0lTX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRV9DTEFTUyhrbGFzcykgXAorICAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUoKGtsYXNzKSwgR1NUX1RZUEVfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFKSkKKworLyoqCisgKiBUZXN0VGFza1N0YXRlOgorICogVGhlIHNlZWsgdGVzdCB1c2VzIGEgc2VwYXJhdGUgdGFzayB0byBwZXJmb3JtIHRoZSBzZWVrIG9wZXJhdGlvbi4KKyAqIEFmdGVyIHN0YXJ0aW5nIHRoZSB0YXNrLCB0aGUgY2FsbGVyIGJsb2NrcyB1bnRpbCB0aGUgc2VlayB0YXNrCisgKiBmbHVzaGVzIHRoZSBBcHBTaW5rIGFuZCBjaGFuZ2VzIHRoZSBHc3RGYWtlU291cEhUVFBTcmMgZWxlbWVudCBzdGF0ZSBmcm9tCisgKiBQTEFZSU5HIHRvIFBBVVNFRC4KKyAqIFdoZW4gdGhhdCBldmVudCBpcyBkZXRlY3RlZCwgdGhlIGNhbGxlciBpcyBhbGxvd2VkIHRvIHJlc3VtZS4KKyAqIEFueSBkYXRhIHRoYXQgd2lsbCBiZSBzZW50IHRvIEFwcFNpbmsgYWZ0ZXIgcmVzdW1lIHdpbGwgYmUgcmVqZWN0ZWQgYmVjYXVzZQorICogQXBwU2luayBpcyBpbiBmbHVzaGluZyBtb2RlLgorICovCit0eXBlZGVmIGVudW0KK3sKKyAgVEVTVF9UQVNLX1NUQVRFX05PVF9TVEFSVEVELAorICBURVNUX1RBU0tfU1RBVEVfV0FJVElOR19GT1JfVEVTVFNSQ19TVEFURV9DSEFOR0UsCisgIFRFU1RfVEFTS19TVEFURV9FWElUSU5HLAorfSBUZXN0VGFza1N0YXRlOworCisvKioKKyAqIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQ6CisgKiBTdHJ1Y3R1cmUgdXNlZCB0byBzdG9yZSBvdXRwdXQgc3RyZWFtIHJlbGF0ZWQgZGF0YS4KKyAqIEl0IGlzIHVzZWQgYnkgdGhlIHRlc3QgZHVyaW5nIG91dHB1dCB2YWxpZGF0aW9uLgorICogVGhlIGZpZWxkcyBhcmUgc2V0IGJ5IHRoZSB0ZXN0Y2FzZSBmdW5jdGlvbiBwcmlvcgorICogdG8gc3RhcnRpbmcgdGhlIHRlc3QuCisgKi8KK3R5cGVkZWYgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0Cit7CisgIC8qIHRoZSBuYW1lIG9mIHRoZSBkZW11eCBzcmMgcGFkIGdlbmVyYXRpbmcgdGhpcyBzdHJlYW0gKi8KKyAgY29uc3QgY2hhciAqbmFtZTsKKyAgLyogdGhlIGV4cGVjdGVkIHNpemUgb24gdGhpcyBzdHJlYW0gKi8KKyAgZ3VpbnQ2NCBleHBlY3RlZF9zaXplOworICAvKiB0aGUgZXhwZWN0ZWQgZGF0YSBvbiB0aGlzIHN0cmVhbSAob3B0aW9uYWwpICovCisgIGNvbnN0IGd1aW50OCogZXhwZWN0ZWRfZGF0YTsKKworICBHc3RTZWdtZW50IHBvc3Rfc2Vla19zZWdtZW50OworICBnYm9vbGVhbiBzZWdtZW50X3ZlcmlmaWNhdGlvbl9uZWVkZWQ7Cit9IEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQ7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4VGVzdENhc2VDbGFzcyBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2VDbGFzczsKK3R5cGVkZWYgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UKK3sKKyAgR09iamVjdCBwYXJlbnQ7CisKKyAgLyogb3V0cHV0IGRhdGEgdXNlZCB0byB2YWxpZGF0ZSB0aGUgdGVzdAorICAgKiBsaXN0IG9mIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQsIG9uZSBlbnRyeSBwZXIgc3RyZWFtCisgICAqLworICBHTGlzdCAqb3V0cHV0X3N0cmVhbXM7IC8qR0xpc3Q8R3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dD4qLworCisgIC8qIHRoZSBudW1iZXIgb2Ygc3RyZWFtcyB0aGF0IGZpbmlzaGVkLgorICAgKiBNYWluIHRocmVhZCB3aWxsIHN0b3AgdGhlIHBpcGVsaW5lIHdoZW4gYWxsIHN0cmVhbXMgYXJlIGZpbmlzaGVkCisgICAqIChpLmUuIGNvdW50X29mX2ZpbmlzaGVkX3N0cmVhbXMgPT0gZ19saXN0X2xlbmd0aChvdXRwdXRfc3RyZWFtcykgKQorICAgKi8KKyAgZ3VpbnQgY291bnRfb2ZfZmluaXNoZWRfc3RyZWFtczsKKworICAvKiB0YXNrVGVzay4uLiBpcyBhIHNldCBvZiB2YXJpYWJsZXMgdGhhdCBjYW4gYmUgdXNlZCBieSBhIHRlc3QKKyAgICogdGhhdCBuZWVkcyB0byBwZXJmb3JtIG9wZXJhdGlvbnMgZnJvbSBhbm90aGVyIHRocmVhZAorICAgKiBGb3IgZXhhbXBsZSwgaXQgaXMgdXNlZCBieSB0aGUgc2VlayB0ZXN0IHRvIHBlcmZvcm0gdGhlIHNlZWsKKyAgICogb3BlcmF0aW9uCisgICAqLworICBHc3RUYXNrICp0ZXN0X3Rhc2s7CisgIEdSZWNNdXRleCB0ZXN0X3Rhc2tfbG9jazsKKyAgVGVzdFRhc2tTdGF0ZSB0ZXN0X3Rhc2tfc3RhdGU7CisgIEdNdXRleCB0ZXN0X3Rhc2tfc3RhdGVfbG9jazsKKyAgR0NvbmQgdGVzdF90YXNrX3N0YXRlX2NvbmQ7CisKKyAgLyogc2VlayB0ZXN0IHdpbGwgd2FpdCBmb3IgdGhpcyBhbW91bnQgb2YgYnl0ZXMgdG8gYmUgc2VudCBieSAKKyAgICogZGVtdXggdG8gQXBwU2luayBiZWZvcmUgdHJpZ2dlcmluZyBhIHNlZWsgcmVxdWVzdAorICAgKi8KKyAgZ3VpbnQ2NCB0aHJlc2hvbGRfZm9yX3NlZWs7CisgIEdzdEV2ZW50ICpzZWVrX2V2ZW50OworCisgIGdwb2ludGVyIHNpZ25hbF9jb250ZXh0OworfSBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2U7CisKKy8qIGhpZ2gtbGV2ZWwgdW5pdCB0ZXN0IGZ1bmN0aW9ucyAqLworCisvKioKKyAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NldHVwOgorICogQ2F1c2VzIHRoZSB0ZXN0IEhUVFAgc3JjIGVsZW1lbnQgdG8gYmUgcmVnaXN0ZXJlZAorICovCit2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NldHVwICh2b2lkKTsKKwordm9pZCBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF90ZWFyZG93biAodm9pZCk7CisKK0dUeXBlIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfZ2V0X3R5cGUgKHZvaWQpOworCisvKioKKyAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3OiBjcmVhdGVzIG5ldyAjR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlCisgKiBvYmplY3QuIFVzZSAjZ19vYmplY3RfdW5yZWYgdG8gZnJlZS4KKyAqLworR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKHZvaWQpIEdfR05VQ19NQUxMT0M7CisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2VlazogdGVzdCB0aGF0IGVsZW1lbnQgc3VwcG9ydHMgc2Vla2luZworICogQGVsZW1lbnRfbmFtZTogVGhlIG5hbWUgb2YgdGhlIGRlbXV4IGVsZW1lbnQgKGUuZy4gImRhc2hkZW11eCIpCisgKiBAbWFuaWZlc3RfdXJpOiBUaGUgVVJJIG9mIHRoZSBtYW5pZmVzdCB0byBsb2FkCisgKiBAdGVzdERhdGE6IFRoZSAjR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlIHRoYXQgdGhlIHRlc3QgZXhwZWN0cyB0aGUKKyAqIGRlbXV4IGVsZW1lbnQgdG8gcHJvZHVjZS4KKyAqIAorICogQ3JlYXRlcyBhIHBpcGVsaW5lIGFuZCBzdGFydHMgaXQuIE9uY2UgZGF0YSBpcyBmbG93aW5nLCByZXF1ZXN0IGEKKyAqIHNlZWsgdG8gYWxtb3N0IHRoZSBzdGFydCBvZiB0aGUgc3RyZWFtLgorICovCit2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NlZWsgKGNvbnN0IGdjaGFyICogZWxlbWVudF9uYW1lLAorICAgIGNvbnN0IGdjaGFyICogbWFuaWZlc3RfdXJpLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEpOworCisvKiBVdGlsaXR5IGZ1bmN0aW9ucyBmb3IgdXNlIHdpdGhpbiBhIHVuaXQgdGVzdCAqLworCisvKioKKyAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YToKKyAqIEBlbmdpbmU6IFRoZSAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgdGhhdCBjYXVzZWQgdGhpcyBjYWxsYmFjaworICogQHN0cmVhbTogVGhlICNHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSB0aGF0IGNhdXNlZCB0aGlzIGNhbGxiYWNrCisgKiBAdXNlcl9kYXRhOiBBIHBvaW50ZXIgdG8gYSAjR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlIG9iamVjdAorICoKKyAqIFRoaXMgZnVuY3Rpb24gY2FuIGJlIHVzZWQgYXMgYW4gRU9TIGNhbGxiYWNrIHRvIGNoZWNrIHRoYXQgdGhlCisgKiBzaXplIG9mIHJlY2VpdmVkIGRhdGEgZXF1YWxzIGV4cGVjdGVkX3NpemUuIEl0IHNob3VsZCBiZSB1c2VkIHdpdGgKKyAqIGEgdGVzdCB0aGF0IGV4cGVjdHMgdGhlIGVudGlyZSBmaWxlIHRvIGJlIGRvd25sb2FkZWQuCisgKi8KK3ZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhKAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmUsCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKy8qKgorICogZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZG93bmxvYWRfZXJyb3Jfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOgorICogQGVuZ2luZTogVGhlICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSB0aGF0IGNhdXNlZCB0aGlzIGNhbGxiYWNrCisgKiBAc3RyZWFtOiBUaGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtIHRoYXQgY2F1c2VkIHRoaXMgY2FsbGJhY2sKKyAqIEB1c2VyX2RhdGE6IEEgcG9pbnRlciB0byBhICNHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2Ugb2JqZWN0CisgKgorICogVGhpcyBmdW5jdGlvbiBjYW4gYmUgdXNlZCBhcyBhbiBFT1MgY2FsbGJhY2sgdG8gY2hlY2sgdGhhdCB0aGUKKyAqIHNpemUgb2YgcmVjZWl2ZWQgZGF0YSBpcyA+MCAmJiA8ZXhwZWN0ZWRfc2l6ZS4gSXQgc2hvdWxkIGJlIHVzZWQgd2l0aAorICogYSB0ZXN0IHRoYXQgZG9lcyBub3QgZXhwZWN0IHRoZSBlbnRpcmUgZmlsZSB0byBiZSBkb3dubG9hZGVkLgorICovCit2b2lkIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Rvd25sb2FkX2Vycm9yX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YSAoCisgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKmVuZ2luZSwKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworLyoqCisgKiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhOgorICogQGVuZ2luZTogVGhlICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSB0aGF0IGNhdXNlZCB0aGlzIGNhbGxiYWNrCisgKiBAc3RyZWFtOiBUaGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtIHRoYXQgY2F1c2VkIHRoaXMgY2FsbGJhY2sKKyAqIEBidWZmZXI6IFRoZSAjR3N0QnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRhdGEgdG8gY2hlY2sKKyAqIEB1c2VyX2RhdGE6IEEgcG9pbnRlciB0byBhICNHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2Ugb2JqZWN0CisgKiBSZXR1cm5zOiBUUlVFIGlmIGJ1ZmZlciBjb250YWlucyB0aGUgZXhwZWN0ZWQgZGF0YS4KKyAqCisgKiBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIGFzIGFuIGFwcFNpbmtHb3REYXRhIGNhbGxiYWNrLCB0byBjaGVjaworICogdGhhdCB0aGUgY29udGVudHMgb2YgdGhlIHJlY2VpdmVkIGRhdGEgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgZGF0YQorICovCitnYm9vbGVhbiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhICgKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCisvKioKKyAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2ZpbmRfdGVzdF9kYXRhX2J5X3N0cmVhbToKKyAqIEB0ZXN0RGF0YTogVGhlICNHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2Ugb2JqZWN0IHRoYXQgY29udGFpbnMgdGhlCisgKiBvdXRwdXRfc3RyZWFtcyBsaXN0IHRvIHNlYXJjaAorICogQHN0cmVhbTogdGhlICNHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSB0byBzZWFyY2ggZm9yCisgKiBAaW5kZXg6IChvdXQpIChhbGxvdyBub25lKSB0aGUgaW5kZXggb2YgdGhlIGVudHJ5IGluIG91dHB1dF9zdHJlYW1zCisgKiBSZXR1cm5zOiBUaGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgdGhhdCBtYXRjaGVzIEBzdHJlYW0sIG9yCisgKiAlTlVMTCBpZiBub3QgZm91bmQKKyAqCisgKiBTZWFyY2ggdGhlIGxpc3Qgb2Ygb3V0cHV0IHRlc3QgZGF0YSBmb3IgdGhlIGVudHJ5IHRoYXQgbWF0Y2hlcyBzdHJlYW0uCisgKi8KK0dzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgKiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9maW5kX3Rlc3RfZGF0YV9ieV9zdHJlYW0gKAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqIHRlc3REYXRhLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgIGd1aW50ICogaW5kZXgpOworCitHX0VORF9ERUNMUworI2VuZGlmIC8qIF9fR1NUX0FEQVBUSVZFX0RFTVVYX0NPTU1PTl9URVNUX0hfXyAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9hZGFwdGl2ZV9kZW11eF9lbmdpbmUuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTcxZmUzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmMKQEAgLTAsMCArMSw1MjUgQEAKKy8qIEEgZ2VuZXJpYyB0ZXN0IGVuZ2luZSBmb3IgZWxlbWVudHMgYmFzZWQgdXBvbiBHc3RBZGFwdGl2ZURlbXV4CisgKgorICogQ29weXJpZ2h0IChjKSA8MjAxNT4gWW91VmlldyBUViBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisjaW5jbHVkZSAiYWRhcHRpdmVfZGVtdXhfZW5naW5lLmgiCisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgZW5naW5lOworICBjb25zdCBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyAqY2FsbGJhY2tzOworICBncG9pbnRlciB1c2VyX2RhdGE7Cit9IEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZTsKKworCisjZGVmaW5lIEdTVF9URVNUX0dFVF9MT0NLKGQpICAoJigoKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSopKGQpKS0+ZW5naW5lLmxvY2spKQorI2RlZmluZSBHU1RfVEVTVF9MT0NLKGQpICAgICAgZ19tdXRleF9sb2NrIChHU1RfVEVTVF9HRVRfTE9DSyAoZCkpCisjZGVmaW5lIEdTVF9URVNUX1VOTE9DSyhkKSAgICBnX211dGV4X3VubG9jayAoR1NUX1RFU1RfR0VUX0xPQ0sgKGQpKQorCitzdGF0aWMgdm9pZAorYWRhcHRpdmVfZGVtdXhfZW5naW5lX3N0cmVhbV9zdGF0ZV9maW5hbGl6ZSAoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKnN0cmVhbSA9CisgICAgICAoR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKikgZGF0YTsKKyAgaWYgKHN0cmVhbS0+YXBwc2luaykKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzdHJlYW0tPmFwcHNpbmspOworICBpZiAoc3RyZWFtLT5wYWQpCisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtLT5wYWQpOworICBpZiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQpCisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQpOworICBnX3NsaWNlX2ZyZWUgKEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtLCBzdHJlYW0pOworfQorCisvKiBnZXQgdGhlIHRlc3RPdXRwdXQgZW50cnkgaW4gdGVzdERhdGEgY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gQXBwU2luayAqLworc3RhdGljIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICoKK2dldFRlc3RPdXRwdXREYXRhQnlBcHBzaW5rIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKiBwcml2LAorICAgIEdzdEFwcFNpbmsgKiBhcHBzaW5rKQoreworICBmb3IgKGd1aW50IGkgPSAwOyBpIDwgcHJpdi0+ZW5naW5lLm91dHB1dF9zdHJlYW1zLT5sZW47ICsraSkgeworICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICpzdGF0ZTsKKyAgICBzdGF0ZSA9IGdfcHRyX2FycmF5X2luZGV4IChwcml2LT5lbmdpbmUub3V0cHV0X3N0cmVhbXMsIGkpOworICAgIGlmIChzdGF0ZS0+YXBwc2luayA9PSBhcHBzaW5rKSB7CisgICAgICByZXR1cm4gc3RhdGU7CisgICAgfQorICB9CisgIGNrX2Fib3J0X21zZyAoImNhbm5vdCBmaW5kIGFwcHNpbmsgJXAgaW4gdGhlIG91dHB1dCBkYXRhIiwgYXBwc2luayk7CisgIHJldHVybiBOVUxMOworfQorCisvKiBnZXQgdGhlIG91dHB1dCBzdHJlYW0gZW50cnkgaW4gY29ycmVzcG9uZGluZyB0byB0aGUgZ2l2ZW4gUGFkICovCitzdGF0aWMgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKgorZ2V0VGVzdE91dHB1dERhdGFCeVBhZCAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICogcHJpdiwKKyAgICBHc3RQYWQgKiBwYWQsIGdib29sZWFuIGFib3J0X2lmX25vdF9mb3VuZCkKK3sKKyAgZm9yIChndWludCBpID0gMDsgaSA8IHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcy0+bGVuOyArK2kpIHsKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqc3RyZWFtOworICAgIHN0cmVhbSA9IGdfcHRyX2FycmF5X2luZGV4IChwcml2LT5lbmdpbmUub3V0cHV0X3N0cmVhbXMsIGkpOworICAgIGlmIChzdHJlYW0tPmludGVybmFsX3BhZCA9PSBwYWQgfHwgc3RyZWFtLT5wYWQgPT0gcGFkKSB7CisgICAgICByZXR1cm4gc3RyZWFtOworICAgIH0KKyAgfQorICBpZiAoYWJvcnRfaWZfbm90X2ZvdW5kKQorICAgIGNrX2Fib3J0X21zZyAoImNhbm5vdCBmaW5kIHBhZCAlcCBpbiB0aGUgb3V0cHV0IGRhdGEiLCBwYWQpOworICByZXR1cm4gTlVMTDsKK30KKworLyogY2FsbGJhY2sgY2FsbGVkIHdoZW4gQXBwU2luayByZWNlaXZlcyBkYXRhICovCitzdGF0aWMgR3N0Rmxvd1JldHVybgorb25fYXBwU2lua05ld1NhbXBsZSAoR3N0QXBwU2luayAqIGFwcHNpbmssIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2ID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKikgdXNlcl9kYXRhOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqdGVzdE91dHB1dFN0cmVhbSA9IE5VTEw7CisgIEdzdFNhbXBsZSAqc2FtcGxlOworICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKyAgZ2Jvb2xlYW4gcmV0ID0gVFJVRTsKKworICBmYWlsX3VubGVzcyAocHJpdiAhPSBOVUxMKTsKKyAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisgIGVuZ2luZSA9ICZwcml2LT5lbmdpbmU7CisgIHRlc3RPdXRwdXRTdHJlYW0gPSBnZXRUZXN0T3V0cHV0RGF0YUJ5QXBwc2luayAocHJpdiwgYXBwc2luayk7CisKKyAgc2FtcGxlID0gZ3N0X2FwcF9zaW5rX3B1bGxfc2FtcGxlIChhcHBzaW5rKTsKKyAgZmFpbF91bmxlc3MgKHNhbXBsZSAhPSBOVUxMKTsKKyAgYnVmZmVyID0gZ3N0X3NhbXBsZV9nZXRfYnVmZmVyIChzYW1wbGUpOworICBmYWlsX3VubGVzcyAoYnVmZmVyICE9IE5VTEwpOworCisgIC8qIGNhbGwgdGhlIHRlc3QgY2FsbGJhY2ssIGlmIHJlZ2lzdGVyZWQgKi8KKyAgaWYgKHByaXYtPmNhbGxiYWNrcy0+YXBwc2lua19yZWNlaXZlZF9kYXRhKQorICAgIHJldCA9IHByaXYtPmNhbGxiYWNrcy0+YXBwc2lua19yZWNlaXZlZF9kYXRhIChlbmdpbmUsCisgICAgICAgIHRlc3RPdXRwdXRTdHJlYW0sIGJ1ZmZlciwgcHJpdi0+dXNlcl9kYXRhKTsKKworICB0ZXN0T3V0cHV0U3RyZWFtLT5zZWdtZW50X3JlY2VpdmVkX3NpemUgKz0gZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKTsKKworICBnc3Rfc2FtcGxlX3VucmVmIChzYW1wbGUpOworCisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisKKyAgaWYgKCFyZXQpCisgICAgcmV0dXJuIEdTVF9GTE9XX0VPUzsKKworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKKy8qIGNhbGxiYWNrIGNhbGxlZCB3aGVuIEFwcFNpbmsgcmVjZWl2ZXMgZW9zICovCitzdGF0aWMgdm9pZAorb25fYXBwU2lua0VPUyAoR3N0QXBwU2luayAqIGFwcHNpbmssIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2ID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKikgdXNlcl9kYXRhOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqdGVzdE91dHB1dFN0cmVhbSA9IE5VTEw7CisKKyAgZmFpbF91bmxlc3MgKHByaXYgIT0gTlVMTCk7CisgIEdTVF9URVNUX0xPQ0sgKHByaXYpOworICB0ZXN0T3V0cHV0U3RyZWFtID0gZ2V0VGVzdE91dHB1dERhdGFCeUFwcHNpbmsgKHByaXYsIGFwcHNpbmspOworCisgIHRlc3RPdXRwdXRTdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUgKz0KKyAgICAgIHRlc3RPdXRwdXRTdHJlYW0tPnNlZ21lbnRfcmVjZWl2ZWRfc2l6ZTsKKyAgdGVzdE91dHB1dFN0cmVhbS0+c2VnbWVudF9yZWNlaXZlZF9zaXplID0gMDsKKworICBpZiAocHJpdi0+Y2FsbGJhY2tzLT5hcHBzaW5rX2VvcykKKyAgICBwcml2LT5jYWxsYmFja3MtPmFwcHNpbmtfZW9zICgmcHJpdi0+ZW5naW5lLAorICAgICAgICB0ZXN0T3V0cHV0U3RyZWFtLCBwcml2LT51c2VyX2RhdGEpOworCisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7Cit9CisKK3N0YXRpYyBHc3RQYWRQcm9iZVJldHVybgorb25fYXBwc2lua19ldmVudCAoR3N0UGFkICogcGFkLCBHc3RQYWRQcm9iZUluZm8gKiBpbmZvLCBncG9pbnRlciBkYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSBkYXRhOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqc3RyZWFtID0gTlVMTDsKKyAgR3N0RXZlbnQgKmV2ZW50OworCisgIGV2ZW50ID0gR1NUX1BBRF9QUk9CRV9JTkZPX0VWRU5UIChpbmZvKTsKKyAgR1NUX0RFQlVHICgiUmVjZWl2ZWQgZXZlbnQgJSIgR1NUX1BUUl9GT1JNQVQgIiBvbiBwYWQgJSIgR1NUX1BUUl9GT1JNQVQsCisgICAgICBldmVudCwgcGFkKTsKKworICBpZiAocHJpdi0+Y2FsbGJhY2tzLT5hcHBzaW5rX2V2ZW50KSB7CisgICAgR3N0UGFkICpzdHJlYW1fcGFkID0gZ3N0X3BhZF9nZXRfcGVlciAocGFkKTsKKyAgICBmYWlsX3VubGVzcyAoc3RyZWFtX3BhZCAhPSBOVUxMKTsKKworICAgIEdTVF9URVNUX0xPQ0sgKHByaXYpOworICAgIHN0cmVhbSA9IGdldFRlc3RPdXRwdXREYXRhQnlQYWQgKHByaXYsIHN0cmVhbV9wYWQsIFRSVUUpOworICAgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtX3BhZCk7CisgICAgcHJpdi0+Y2FsbGJhY2tzLT5hcHBzaW5rX2V2ZW50ICgmcHJpdi0+ZW5naW5lLCBzdHJlYW0sIGV2ZW50LAorICAgICAgICBwcml2LT51c2VyX2RhdGEpOworICB9CisKKyAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7Cit9CisKKworLyogY2FsbGJhY2sgY2FsbGVkIHdoZW4gZGVtdXggc2VuZHMgZGF0YSB0byBBcHBTaW5rICovCitzdGF0aWMgR3N0UGFkUHJvYmVSZXR1cm4KK29uX2RlbXV4X3NlbnRfZGF0YSAoR3N0UGFkICogcGFkLCBHc3RQYWRQcm9iZUluZm8gKiBpbmZvLCBncG9pbnRlciBkYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSBkYXRhOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqc3RyZWFtID0gTlVMTDsKKyAgR3N0QnVmZmVyICpidWZmZXI7CisKKyAgYnVmZmVyID0gR1NUX1BBRF9QUk9CRV9JTkZPX0JVRkZFUiAoaW5mbyk7CisKKyAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisgIHN0cmVhbSA9IGdldFRlc3RPdXRwdXREYXRhQnlQYWQgKHByaXYsIHBhZCwgVFJVRSk7CisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisKKyAgaWYgKHByaXYtPmNhbGxiYWNrcy0+ZGVtdXhfc2VudF9kYXRhKSB7CisgICAgKCpwcml2LT5jYWxsYmFja3MtPmRlbXV4X3NlbnRfZGF0YSkgKCZwcml2LT5lbmdpbmUsCisgICAgICAgIHN0cmVhbSwgYnVmZmVyLCBwcml2LT51c2VyX2RhdGEpOworICB9CisKKyAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7Cit9CisKKy8qIGNhbGxiYWNrIGNhbGxlZCB3aGVuIGRlbXV4IHJlY2VpdmVzIGV2ZW50cyBmcm9tIEdzdEZha2VTb3VwSFRUUFNyYyAqLworc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuCitvbl9kZW11eFJlY2VpdmVzRXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0UGFkUHJvYmVJbmZvICogaW5mbywgZ3BvaW50ZXIgZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2ID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKikgZGF0YTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKnN0cmVhbSA9IE5VTEw7CisgIEdzdEV2ZW50ICpldmVudDsKKyAgY29uc3QgR3N0U2VnbWVudCAqc2VnbWVudDsKKworICBldmVudCA9IEdTVF9QQURfUFJPQkVfSU5GT19FVkVOVCAoaW5mbyk7CisgIEdTVF9ERUJVRyAoIlJlY2VpdmVkIGV2ZW50ICUiIEdTVF9QVFJfRk9STUFUICIgb24gcGFkICUiIEdTVF9QVFJfRk9STUFULAorICAgICAgZXZlbnQsIHBhZCk7CisKKyAgaWYgKEdTVF9FVkVOVF9UWVBFIChldmVudCkgPT0gR1NUX0VWRU5UX1NFR01FTlQpIHsKKyAgICAvKiBhIG5ldyBzZWdtZW50IHdpbGwgc3RhcnQgYXJyaXZpbmcKKyAgICAgKiB1cGRhdGUgc2VnbWVudF9zdGFydCB1c2VkIGJ5IHBhdHRlcm4gdmFsaWRhdGlvbgorICAgICAqLworICAgIGdzdF9ldmVudF9wYXJzZV9zZWdtZW50IChldmVudCwgJnNlZ21lbnQpOworCisgICAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisgICAgc3RyZWFtID0gZ2V0VGVzdE91dHB1dERhdGFCeVBhZCAocHJpdiwgcGFkLCBUUlVFKTsKKyAgICBzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUgKz0gc3RyZWFtLT5zZWdtZW50X3JlY2VpdmVkX3NpemU7CisgICAgc3RyZWFtLT5zZWdtZW50X3JlY2VpdmVkX3NpemUgPSAwOworICAgIHN0cmVhbS0+c2VnbWVudF9zdGFydCA9IHNlZ21lbnQtPnN0YXJ0OworICAgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisgIH0KKworICByZXR1cm4gR1NUX1BBRF9QUk9CRV9PSzsKK30KKworCitzdGF0aWMgdm9pZAorb25fZGVtdXhFbGVtZW50QWRkZWQgKEdzdEJpbiAqIGRlbXV4LCBHc3RFbGVtZW50ICogZWxlbWVudCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKnByaXYgPQorICAgICAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqKSB1c2VyX2RhdGE7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICpzdHJlYW0gPSBOVUxMOworICBHc3RQYWQgKmludGVybmFsX3BhZDsKKyAgZ2NoYXIgKnNyY2Jpbl9uYW1lOworICBnaW50IGk7CisKKyAgc3JjYmluX25hbWUgPSBHU1RfRUxFTUVOVF9OQU1FIChlbGVtZW50KTsKKyAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisgIGZvciAoaSA9IDA7IGkgPCBwcml2LT5lbmdpbmUub3V0cHV0X3N0cmVhbXMtPmxlbjsgaSsrKSB7CisgICAgc3RyZWFtID0gZ19wdHJfYXJyYXlfaW5kZXggKHByaXYtPmVuZ2luZS5vdXRwdXRfc3RyZWFtcywgaSk7CisgICAgaWYgKHN0cnN0ciAoc3JjYmluX25hbWUsIEdTVF9QQURfTkFNRSAoc3RyZWFtLT5wYWQpKSAhPSBOVUxMKQorICAgICAgYnJlYWs7CisgIH0KKyAgZmFpbF91bmxlc3MgKHN0cmVhbSAhPSBOVUxMKTsKKworICAvKiBrZWVwIHRoZSByZWZlcmVuY2UgdG8gdGhlIGludGVybmFsX3BhZC4KKyAgICogV2Ugd2lsbCBuZWVkIGl0IHRvIGlkZW50aWZ5IHRoZSBzdHJlYW0gaW4gdGhlIG9uX2RlbXV4UmVjZWl2ZXNFdmVudCBjYWxsYmFjaworICAgKi8KKyAgaWYgKHN0cmVhbS0+aW50ZXJuYWxfcGFkKSB7CisgICAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUgKHN0cmVhbS0+aW50ZXJuYWxfcGFkLCBzdHJlYW0tPmludGVybmFsX3BhZF9wcm9iZSk7CisgICAgZ3N0X29iamVjdF91bnJlZiAoc3RyZWFtLT5pbnRlcm5hbF9wYWQpOworICB9CisgIGludGVybmFsX3BhZCA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChlbGVtZW50LCAic3JjIik7CisgIHN0cmVhbS0+aW50ZXJuYWxfcGFkX3Byb2JlID0KKyAgICAgIGdzdF9wYWRfYWRkX3Byb2JlIChpbnRlcm5hbF9wYWQsIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNLAorICAgICAgKEdzdFBhZFByb2JlQ2FsbGJhY2spIG9uX2RlbXV4UmVjZWl2ZXNFdmVudCwgcHJpdiwgTlVMTCk7CisgIHN0cmVhbS0+aW50ZXJuYWxfcGFkID0gaW50ZXJuYWxfcGFkOworICBHU1RfVEVTVF9VTkxPQ0sgKHByaXYpOworCit9CisKKworLyogY2FsbGJhY2sgY2FsbGVkIHdoZW4gZGVtdXggY3JlYXRlcyBhIHNyYyBwYWQuCisgKiBXZSB3aWxsIGNyZWF0ZSBhbiBBcHBTaW5rIHRvIGdldCB0aGUgZGF0YQorICovCitzdGF0aWMgdm9pZAorb25fZGVtdXhOZXdQYWQgKEdzdEVsZW1lbnQgKiBkZW11eCwgR3N0UGFkICogcGFkLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqcHJpdiA9CisgICAgICAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICopIHVzZXJfZGF0YTsKKyAgR3N0RWxlbWVudCAqcGlwZWxpbmU7CisgIEdzdEVsZW1lbnQgKnNpbms7CisgIGdib29sZWFuIHJldDsKKyAgZ2NoYXIgKm5hbWU7CisgIEdzdFBhZCAqYXBwc2lua19wYWQ7CisgIEdzdEFwcFNpbmtDYWxsYmFja3MgYXBwU2lua0NhbGxiYWNrczsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKnN0cmVhbTsKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworCisgIGZhaWxfdW5sZXNzIChwcml2ICE9IE5VTEwpOworICBuYW1lID0gZ3N0X3BhZF9nZXRfbmFtZSAocGFkKTsKKworICBzdHJlYW0gPSBnX3NsaWNlX25ldzAgKEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtKTsKKyAgR1NUX0RFQlVHICgiY3JlYXRlZCBwYWQgJXAiLCBwYWQpOworCisgIHNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJhcHBzaW5rIiwgbmFtZSk7CisgIGdfZnJlZSAobmFtZSk7CisgIGZhaWxfdW5sZXNzIChzaW5rICE9IE5VTEwpOworCisgIEdTVF9URVNUX0xPQ0sgKHByaXYpOworCisgIC8qIHJlZ2lzdGVyIHRoZSBBcHBTaW5rIHBvaW50ZXIgaW4gdGhlIHRlc3Qgb3V0cHV0IGRhdGEgKi8KKyAgZ3N0X29iamVjdF9yZWYgKHNpbmspOworICBzdHJlYW0tPmFwcHNpbmsgPSBHU1RfQVBQX1NJTksgKHNpbmspOworCisgIGFwcFNpbmtDYWxsYmFja3MuZW9zID0gb25fYXBwU2lua0VPUzsKKyAgYXBwU2lua0NhbGxiYWNrcy5uZXdfcHJlcm9sbCA9IE5VTEw7CisgIGFwcFNpbmtDYWxsYmFja3MubmV3X3NhbXBsZSA9IG9uX2FwcFNpbmtOZXdTYW1wbGU7CisKKyAgZ3N0X2FwcF9zaW5rX3NldF9jYWxsYmFja3MgKEdTVF9BUFBfU0lOSyAoc2luayksICZhcHBTaW5rQ2FsbGJhY2tzLCBwcml2LAorICAgICAgTlVMTCk7CisgIGFwcHNpbmtfcGFkID0gZ3N0X2VsZW1lbnRfZ2V0X3N0YXRpY19wYWQgKHNpbmssICJzaW5rIik7CisgIGdzdF9wYWRfYWRkX3Byb2JlIChhcHBzaW5rX3BhZCwKKyAgICAgIEdTVF9QQURfUFJPQkVfVFlQRV9FVkVOVF9ET1dOU1RSRUFNIHwgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0ZMVVNILAorICAgICAgKEdzdFBhZFByb2JlQ2FsbGJhY2spIG9uX2FwcHNpbmtfZXZlbnQsIHByaXYsIE5VTEwpOworICBnc3Rfb2JqZWN0X3VucmVmIChhcHBzaW5rX3BhZCk7CisKKyAgZ3N0X3BhZF9hZGRfcHJvYmUgKHBhZCwgR1NUX1BBRF9QUk9CRV9UWVBFX0JVRkZFUiwKKyAgICAgIChHc3RQYWRQcm9iZUNhbGxiYWNrKSBvbl9kZW11eF9zZW50X2RhdGEsIHByaXYsIE5VTEwpOworICBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfR0VUX0NMQVNTIChzaW5rKTsKKyAgaWYgKGdfb2JqZWN0X2NsYXNzX2ZpbmRfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsICJzeW5jIikpIHsKKyAgICBHU1RfREVCVUcgKCJTZXR0aW5nIHN5bmM9RkFMU0Ugb24gQXBwU2luayIpOworICAgIGdfb2JqZWN0X3NldCAoR19PQkpFQ1QgKHNpbmspLCAic3luYyIsIEZBTFNFLCBOVUxMKTsKKyAgfQorICBzdHJlYW0tPnBhZCA9IGdzdF9vYmplY3RfcmVmIChwYWQpOworCisKKyAgZ19wdHJfYXJyYXlfYWRkIChwcml2LT5lbmdpbmUub3V0cHV0X3N0cmVhbXMsIHN0cmVhbSk7CisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisKKyAgcGlwZWxpbmUgPSBHU1RfRUxFTUVOVCAoZ3N0X2VsZW1lbnRfZ2V0X3BhcmVudCAoZGVtdXgpKTsKKyAgZmFpbF91bmxlc3MgKHBpcGVsaW5lICE9IE5VTEwpOworICByZXQgPSBnc3RfYmluX2FkZCAoR1NUX0JJTiAocGlwZWxpbmUpLCBzaW5rKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKyAgZ3N0X29iamVjdF91bnJlZiAocGlwZWxpbmUpOworICByZXQgPSBnc3RfZWxlbWVudF9saW5rIChkZW11eCwgc2luayk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisgIHJldCA9IGdzdF9lbGVtZW50X3N5bmNfc3RhdGVfd2l0aF9wYXJlbnQgKHNpbmspOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChyZXQsIFRSVUUpOworICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKyAgaWYgKHByaXYtPmNhbGxiYWNrcy0+ZGVtdXhfcGFkX2FkZGVkKSB7CisgICAgcHJpdi0+Y2FsbGJhY2tzLT5kZW11eF9wYWRfYWRkZWQgKCZwcml2LT5lbmdpbmUsIHN0cmVhbSwgcHJpdi0+dXNlcl9kYXRhKTsKKyAgfQorICBHU1RfVEVTVF9VTkxPQ0sgKHByaXYpOworfQorCisvKiBjYWxsYmFjayBjYWxsZWQgd2hlbiBkZW11eCByZW1vdmVzIGEgc3JjIHBhZC4KKyAqIFdlIHJlbW92ZSB0aGUgQXBwU2luayBhc3NvY2lhdGVkIHdpdGggdGhpcyBwYWQKKyAqLworc3RhdGljIHZvaWQKK29uX2RlbXV4UGFkUmVtb3ZlZCAoR3N0RWxlbWVudCAqIGRlbXV4LCBHc3RQYWQgKiBwYWQsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2ID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKikgdXNlcl9kYXRhOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqc3RyZWFtID0gTlVMTDsKKyAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gcmV0OworICBHc3RTdGF0ZSBjdXJyZW50U3RhdGUsIHBlbmRpbmc7CisgIEdzdEVsZW1lbnQgKmFwcFNpbms7CisKKyAgZmFpbF91bmxlc3MgKHByaXYgIT0gTlVMTCk7CisKKyAgR1NUX0RFQlVHICgiUGFkIHJlbW92ZWQ6ICUiIEdTVF9QVFJfRk9STUFULCBwYWQpOworCisgIEdTVF9URVNUX0xPQ0sgKHByaXYpOworICBzdHJlYW0gPSBnZXRUZXN0T3V0cHV0RGF0YUJ5UGFkIChwcml2LCBwYWQsIFRSVUUpOworICBpZiAocHJpdi0+Y2FsbGJhY2tzLT5kZW11eF9wYWRfcmVtb3ZlZCkgeworICAgIHByaXYtPmNhbGxiYWNrcy0+ZGVtdXhfcGFkX3JlbW92ZWQgKCZwcml2LT5lbmdpbmUsIHN0cmVhbSwgcHJpdi0+dXNlcl9kYXRhKTsKKyAgfQorICBmYWlsX3VubGVzcyAoc3RyZWFtLT5hcHBzaW5rICE9IE5VTEwpOworICBmYWlsX3VubGVzcyAoc3RyZWFtLT5pbnRlcm5hbF9wYWQgIT0gTlVMTCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHN0cmVhbS0+aW50ZXJuYWxfcGFkKTsKKyAgc3RyZWFtLT5pbnRlcm5hbF9wYWQgPSBOVUxMOworICBhcHBTaW5rID0gR1NUX0VMRU1FTlQgKHN0cmVhbS0+YXBwc2luayk7CisgIHJldCA9IGdzdF9lbGVtZW50X2dldF9zdGF0ZSAoYXBwU2luaywgJmN1cnJlbnRTdGF0ZSwgJnBlbmRpbmcsIDApOworICBpZiAoKHJldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MgJiYgY3VycmVudFN0YXRlID09IEdTVF9TVEFURV9QTEFZSU5HKQorICAgICAgfHwgKHJldCA9PSBHU1RfU1RBVEVfQ0hBTkdFX0FTWU5DICYmIHBlbmRpbmcgPT0gR1NUX1NUQVRFX1BMQVlJTkcpKSB7CisgICAgR1NUX0RFQlVHICgiQ2hhbmdpbmcgQXBwU2luayBlbGVtZW50IHRvIFBBVVNFRCIpOworICAgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoYXBwU2luaywgR1NUX1NUQVRFX1BBVVNFRCk7CisgIH0KKyAgR1NUX1RFU1RfVU5MT0NLIChwcml2KTsKK30KKworLyogY2FsbGJhY2sgY2FsbGVkIHdoZW4gbWFpbl9sb29wIGRldGVjdHMgYW4gZXJyb3IgbWVzc2FnZQorICogV2Ugd2lsbCBzaWduYWwgbWFpbiBsb29wIHRvIHF1aXQKKyAqLworc3RhdGljIHZvaWQKK29uX0Vycm9yTWVzc2FnZU9uQnVzIChHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2ID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKikgdXNlcl9kYXRhOworICBHRXJyb3IgKmVyciA9IE5VTEw7CisgIGdjaGFyICpkYmdfaW5mbyA9IE5VTEw7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1zZywgJmVyciwgJmRiZ19pbmZvKTsKKyAgR1NUX0RFQlVHICgiRVJST1IgZnJvbSBlbGVtZW50ICVzOiAnJXMnLiBEZWJ1Z2dpbmcgaW5mbzogJXMiLAorICAgICAgR1NUX09CSkVDVF9OQU1FIChtc2ctPnNyYyksIGVyci0+bWVzc2FnZSwgKGRiZ19pbmZvKSA/IGRiZ19pbmZvIDogIm5vbmUiKTsKKyAgZ19lcnJvcl9mcmVlIChlcnIpOworICBnX2ZyZWUgKGRiZ19pbmZvKTsKKworICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKworICBmYWlsX3VubGVzcyAocHJpdi0+Y2FsbGJhY2tzLT5idXNfZXJyb3JfbWVzc2FnZSwKKyAgICAgICJ1bmV4cGVjdGVkIGVycm9yIGRldGVjdGVkIG9uIGJ1cyIpOworCisgIHByaXYtPmNhbGxiYWNrcy0+YnVzX2Vycm9yX21lc3NhZ2UgKCZwcml2LT5lbmdpbmUsIG1zZywgcHJpdi0+dXNlcl9kYXRhKTsKKworICBHU1RfVEVTVF9VTkxPQ0sgKHByaXYpOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3N0YXJ0X3BpcGVsaW5lX3BsYXlpbmcgKGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlICpwcml2ID0KKyAgICAgIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUgKikgdXNlcl9kYXRhOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZUNoYW5nZTsKKworICBHU1RfREVCVUcgKCJNb3ZpbmcgcGlwZWxpbmUgdG8gUExBWUlORyBzdGF0ZSIpOworICBzdGF0ZUNoYW5nZSA9CisgICAgICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHByaXYtPmVuZ2luZS5waXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpOworICBmYWlsX3VubGVzcyAoc3RhdGVDaGFuZ2UgIT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKTsKKyAgR1NUX0RFQlVHICgiUExBWUlORyBzdGF0ZUNoYW5nZSA9ICVkIiwgc3RhdGVDaGFuZ2UpOworICByZXR1cm4gRkFMU0U7Cit9CisKKy8qCisgKiBDcmVhdGUgYSBkZW11eCBlbGVtZW50LCBydW4gYSB0ZXN0IHVzaW5nIHRoZSBpbnB1dCBkYXRhIGFuZCBjaGVjaworICogdGhlIG91dHB1dCBkYXRhCisgKi8KK3ZvaWQKK2dzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoY29uc3QgZ2NoYXIgKiBlbGVtZW50X25hbWUsCisgICAgY29uc3QgZ2NoYXIgKiBtYW5pZmVzdF91cmksCisgICAgY29uc3QgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgKiBjYWxsYmFja3MsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QnVzICpidXM7CisgIEdzdEVsZW1lbnQgKmRlbXV4OworICBHc3RFbGVtZW50ICptYW5pZmVzdF9zb3VyY2U7CisgIGdib29sZWFuIHJldDsKKyAgR3N0U3RhdGVDaGFuZ2VSZXR1cm4gc3RhdGVDaGFuZ2U7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lUHJpdmF0ZSAqcHJpdjsKKworICBwcml2ID0gZ19zbGljZV9uZXcwIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZVByaXZhdGUpOworICBwcml2LT5lbmdpbmUub3V0cHV0X3N0cmVhbXMgPQorICAgICAgZ19wdHJfYXJyYXlfbmV3X3dpdGhfZnJlZV9mdW5jCisgICAgICAoYWRhcHRpdmVfZGVtdXhfZW5naW5lX3N0cmVhbV9zdGF0ZV9maW5hbGl6ZSk7CisgIGdfbXV0ZXhfaW5pdCAoJnByaXYtPmVuZ2luZS5sb2NrKTsKKyAgcHJpdi0+Y2FsbGJhY2tzID0gY2FsbGJhY2tzOworICBwcml2LT51c2VyX2RhdGEgPSB1c2VyX2RhdGE7CisgIHByaXYtPmVuZ2luZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKHByaXYtPmVuZ2luZS5sb29wICE9IE5VTEwpOworICBHU1RfVEVTVF9MT0NLIChwcml2KTsKKyAgcHJpdi0+ZW5naW5lLnBpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldyAoInBpcGVsaW5lIik7CisgIGZhaWxfdW5sZXNzIChwcml2LT5lbmdpbmUucGlwZWxpbmUgIT0gTlVMTCk7CisgIEdTVF9ERUJVRyAoImNyZWF0ZWQgcGlwZWxpbmUgJSIgR1NUX1BUUl9GT1JNQVQsIHByaXYtPmVuZ2luZS5waXBlbGluZSk7CisKKyAgLyogcmVnaXN0ZXIgYSBjYWxsYmFjayB0byBsaXN0ZW4gZm9yIGVycm9yIG1lc3NhZ2VzICovCisgIGJ1cyA9IGdzdF9waXBlbGluZV9nZXRfYnVzIChHU1RfUElQRUxJTkUgKHByaXYtPmVuZ2luZS5waXBlbGluZSkpOworICBnc3RfYnVzX2FkZF9zaWduYWxfd2F0Y2hfZnVsbCAoYnVzLCBHX1BSSU9SSVRZX0hJR0gpOworICBnX3NpZ25hbF9jb25uZWN0IChidXMsICJtZXNzYWdlOjplcnJvciIsCisgICAgICBHX0NBTExCQUNLIChvbl9FcnJvck1lc3NhZ2VPbkJ1cyksIHByaXYpOworCisgIG1hbmlmZXN0X3NvdXJjZSA9CisgICAgICBnc3RfZWxlbWVudF9tYWtlX2Zyb21fdXJpIChHU1RfVVJJX1NSQywgbWFuaWZlc3RfdXJpLCBOVUxMLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKG1hbmlmZXN0X3NvdXJjZSAhPSBOVUxMKTsKKyAgcHJpdi0+ZW5naW5lLm1hbmlmZXN0X3NvdXJjZSA9IG1hbmlmZXN0X3NvdXJjZTsKKworICBkZW11eCA9IGdzdF9jaGVja19zZXR1cF9lbGVtZW50IChlbGVtZW50X25hbWUpOworICBmYWlsX3VubGVzcyAoZGVtdXggIT0gTlVMTCk7CisgIHByaXYtPmVuZ2luZS5kZW11eCA9IGRlbXV4OworICBHU1RfREVCVUcgKCJjcmVhdGVkIGRlbXV4ICUiIEdTVF9QVFJfRk9STUFULCBkZW11eCk7CisKKyAgZ19zaWduYWxfY29ubmVjdCAoZGVtdXgsICJlbGVtZW50LWFkZGVkIiwgR19DQUxMQkFDSyAob25fZGVtdXhFbGVtZW50QWRkZWQpLAorICAgICAgcHJpdik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGRlbXV4LCAicGFkLWFkZGVkIiwgR19DQUxMQkFDSyAob25fZGVtdXhOZXdQYWQpLCBwcml2KTsKKyAgZ19zaWduYWxfY29ubmVjdCAoZGVtdXgsICJwYWQtcmVtb3ZlZCIsCisgICAgICBHX0NBTExCQUNLIChvbl9kZW11eFBhZFJlbW92ZWQpLCBwcml2KTsKKworICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOIChwcml2LT5lbmdpbmUucGlwZWxpbmUpLCBtYW5pZmVzdF9zb3VyY2UsIGRlbXV4LAorICAgICAgTlVMTCk7CisgIEFTU0VSVF9PQkpFQ1RfUkVGQ09VTlQgKG1hbmlmZXN0X3NvdXJjZSwgZWxlbWVudF9uYW1lLCAxKTsKKyAgQVNTRVJUX09CSkVDVF9SRUZDT1VOVCAoZGVtdXgsIGVsZW1lbnRfbmFtZSwgMSk7CisKKyAgcmV0ID0gZ3N0X2VsZW1lbnRfbGluayAobWFuaWZlc3Rfc291cmNlLCBkZW11eCk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgLyogY2FsbCBhIHRlc3QgY2FsbGJhY2sgYmVmb3JlIHdlIHN0YXJ0IHRoZSBwaXBlbGluZSAqLworICBpZiAoY2FsbGJhY2tzLT5wcmVfdGVzdCkKKyAgICAoKmNhbGxiYWNrcy0+cHJlX3Rlc3QpICgmcHJpdi0+ZW5naW5lLCBwcml2LT51c2VyX2RhdGEpOworCisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisKKyAgR1NUX0RFQlVHICgiU3RhcnRpbmcgcGlwZWxpbmUiKTsKKyAgc3RhdGVDaGFuZ2UgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHByaXYtPmVuZ2luZS5waXBlbGluZSwgR1NUX1NUQVRFX1BBVVNFRCk7CisgIGZhaWxfdW5sZXNzIChzdGF0ZUNoYW5nZSAhPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpOworICAvKiB3YWl0IGZvciBjb21wbGV0aW9uIG9mIHRoZSBtb3ZlIHRvIFBBVVNFRCAqLworICBzdGF0ZUNoYW5nZSA9IGdzdF9lbGVtZW50X2dldF9zdGF0ZSAocHJpdi0+ZW5naW5lLnBpcGVsaW5lLCBOVUxMLCBOVUxMLAorICAgICAgR1NUX0NMT0NLX1RJTUVfTk9ORSk7CisgIGZhaWxfdW5sZXNzIChzdGF0ZUNoYW5nZSAhPSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpOworCisgIGdfaWRsZV9hZGQgKChHU291cmNlRnVuYykgc3RhcnRfcGlwZWxpbmVfcGxheWluZywgcHJpdik7CisKKyAgLyogYmxvY2sgdW50aWwgYSBjYWxsYmFjayBjYWxscyBnX21haW5fbG9vcF9xdWl0IChlbmdpbmUubG9vcCkgKi8KKyAgR1NUX0RFQlVHICgibWFpbiB0aHJlYWQgd2FpdGluZyBmb3Igc3RyZWFtcyB0byBmaW5pc2giKTsKKyAgZ19tYWluX2xvb3BfcnVuIChwcml2LT5lbmdpbmUubG9vcCk7CisgIEdTVF9ERUJVRyAoIm1haW4gdGhyZWFkIGZpbmlzaGVkLiBTdG9wcGluZyBwaXBlbGluZSIpOworCisgIC8qIG5vIG5lZWQgdG8gdXNlIGdzdF9lbGVtZW50X2dldF9zdGF0ZSBhcyB0aGUgbW92ZSB0aGUgR1NUX1NUQVRFX05VTEwKKyAgICAgaXMgYWx3YXlzIHN5bmNocm9ub3VzICovCisgIHN0YXRlQ2hhbmdlID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChwcml2LT5lbmdpbmUucGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKKyAgZmFpbF91bmxlc3MgKHN0YXRlQ2hhbmdlICE9IEdTVF9TVEFURV9DSEFOR0VfRkFJTFVSRSk7CisKKyAgR1NUX1RFU1RfTE9DSyAocHJpdik7CisKKyAgLyogY2FsbCBhIHRlc3QgY2FsbGJhY2sgYWZ0ZXIgdGhlIHN0b3Agb2YgdGhlIHBpcGVsaW5lICovCisgIGlmIChjYWxsYmFja3MtPnBvc3RfdGVzdCkKKyAgICAoKmNhbGxiYWNrcy0+cG9zdF90ZXN0KSAoJnByaXYtPmVuZ2luZSwgcHJpdi0+dXNlcl9kYXRhKTsKKworICBnX3NpZ25hbF9oYW5kbGVyc19kaXNjb25uZWN0X2J5X2Z1bmMgKGJ1cywKKyAgICAgIEdfQ0FMTEJBQ0sgKG9uX0Vycm9yTWVzc2FnZU9uQnVzKSwgcHJpdik7CisgIGdzdF9idXNfcmVtb3ZlX3NpZ25hbF93YXRjaCAoYnVzKTsKKyAgZ19zaWduYWxfaGFuZGxlcnNfZGlzY29ubmVjdF9ieV9mdW5jIChkZW11eCwgR19DQUxMQkFDSyAob25fZGVtdXhOZXdQYWQpLAorICAgICAgcHJpdik7CisgIGdfc2lnbmFsX2hhbmRsZXJzX2Rpc2Nvbm5lY3RfYnlfZnVuYyAoZGVtdXgsIEdfQ0FMTEJBQ0sgKG9uX2RlbXV4UGFkUmVtb3ZlZCksCisgICAgICBwcml2KTsKKworICBHU1RfREVCVUcgKCJtYWluIHRocmVhZCBwaXBlbGluZSBzdG9wcGVkIik7CisgIGdzdF9vYmplY3RfdW5yZWYgKHByaXYtPmVuZ2luZS5waXBlbGluZSk7CisgIHByaXYtPmVuZ2luZS5waXBlbGluZSA9IE5VTEw7CisgIGdfbWFpbl9sb29wX3VucmVmIChwcml2LT5lbmdpbmUubG9vcCk7CisgIGdfcHRyX2FycmF5X3VucmVmIChwcml2LT5lbmdpbmUub3V0cHV0X3N0cmVhbXMpOworCisgIEdTVF9URVNUX1VOTE9DSyAocHJpdik7CisgIGdfbXV0ZXhfY2xlYXIgKCZwcml2LT5lbmdpbmUubG9jayk7CisgIGdfc2xpY2VfZnJlZSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmVQcml2YXRlLCBwcml2KTsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYWRhcHRpdmVfZGVtdXhfZW5naW5lLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjcxNWVjYgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2FkYXB0aXZlX2RlbXV4X2VuZ2luZS5oCkBAIC0wLDAgKzEsMTg4IEBACisvKiBBIGdlbmVyaWMgdGVzdCBlbmdpbmUgZm9yIGVsZW1lbnRzIGJhc2VkIHVwb24gR3N0QWRhcHRpdmVEZW11eCAKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDwyMDE1PiBZb3VWaWV3IFRWIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZm5kZWYgX19HU1RfQURBUFRJVkVfREVNVVhfVEVTVF9FTkdJTkVfSF9fCisjZGVmaW5lIF9fR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfRU5HSU5FX0hfXworCisjaW5jbHVkZSA8Z3N0L2dzdC5oPgorI2luY2x1ZGUgPGdzdC9hcHAvZ3N0YXBwc2luay5oPgorI2luY2x1ZGUgInRlc3RfaHR0cF9zcmMuaCIKKworR19CRUdJTl9ERUNMUworCit0eXBlZGVmIHN0cnVjdCBfR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmU7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSB7CisgIC8qIHRoZSBHc3RBcHBTaW5rIGVsZW1lbnQgZ2V0dGluZyB0aGUgZGF0YSBmb3IgdGhpcyBzdHJlYW0gKi8KKyAgR3N0QXBwU2luayAqYXBwc2luazsKKyAgR3N0UGFkICpwYWQ7CisgIC8qIHRoZSBpbnRlcm5hbCBwYWQgb2YgYWRhcHRpdmVkZW11eCBlbGVtZW50IHVzZWQgdG8gc2VuZCBkYXRhIHRvIHRoZSBHc3RBcHBTaW5rIGVsZW1lbnQgKi8KKyAgR3N0UGFkICppbnRlcm5hbF9wYWQ7CisgIGd1bG9uZyBpbnRlcm5hbF9wYWRfcHJvYmU7CisgIC8qIGN1cnJlbnQgc2VnbWVudCBzdGFydCBvZmZzZXQgKi8KKyAgZ3VpbnQ2NCBzZWdtZW50X3N0YXJ0OworICAvKiB0aGUgc2l6ZSByZWNlaXZlZCBzbyBmYXIgb24gdGhpcyBzZWdtZW50ICovCisgIGd1aW50NjQgc2VnbWVudF9yZWNlaXZlZF9zaXplOworICAvKiB0aGUgdG90YWwgc2l6ZSByZWNlaXZlZCBzbyBmYXIgb24gdGhpcyBzdHJlYW0sIGV4Y2x1ZGluZyBjdXJyZW50IHNlZ21lbnQgKi8KKyAgZ3VpbnQ2NCB0b3RhbF9yZWNlaXZlZF9zaXplOworfSBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbTsKKworLyogR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3M6IGNvbnRhaW5zIHZhcmlvdXMgY2FsbGJhY2tzIHRoYXQgY2FuCisgKiBiZSByZWdpc3RlcmVkIGJ5IGEgdGVzdC4gTm90IGFsbCBjYWxsYmFja3MgbmVlZHMgdG8gYmUgY29uZmlndXJlZAorICogYnkgYSB0ZXN0LiBBIGNhbGxiYWNrIHRoYXQgaXMgbm90IHJlcXVpcmVkIGJ5IGEgdGVzdCBtdXN0IGJlIHNldAorICogdG8gTlVMTC4KKyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzCit7CisgIC8qKgorICAgKiBwcmVfdGVzdDogY2FsbGVkIGJlZm9yZSBzdGFydGluZyB0aGUgcGlwZWxpbmUKKyAgICogQGVuZ2luZTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqLworICB2b2lkICgqcHJlX3Rlc3QpIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLCBncG9pbnRlciB1c2VyX2RhdGEpOworICAKKyAgLyoqCisgICAqIHBvc3RfdGVzdDogY2FsbGVkIGFmdGVyIHN0b3BwaW5nIHRoZSBwaXBlbGluZS4KKyAgICogQGVuZ2luZTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqLworICB2b2lkICgqcG9zdF90ZXN0KSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKmVuZ2luZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICAvKioKKyAgICogYXBwc2lua19yZWNlaXZlZF9kYXRhOiBjYWxsZWQgZWFjaCB0aW1lIEFwcFNpbmsgcmVjZWl2ZXMgZGF0YQorICAgKiBAZW5naW5lOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICogQHN0cmVhbTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtCisgICAqIEBidWZmZXI6IHRoZSAjR3N0QnVmZmVyIHRoYXQgd2FzIHJlY2V2aWVkIGJ5ICNHc3RBcHBTaW5rCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqIFJldHVybnM6ICNUUlVFIHRvIGNvbnRpbnVlIHByb2Nlc3NpbmcsICNGQUxTRSB0byBjYXVzZSBFT1MKKyAgICoKKyAgICogQ2FuIGJlIHVzZWQgYnkgYSB0ZXN0IHRvIHBlcmZvcm0gYWRkaXRpb25hbCBvcGVyYXRpb25zIChlZyB2YWxpZGF0ZQorICAgKiBvdXRwdXQgZGF0YSkKKyAgICovCisgIGdib29sZWFuICgqYXBwc2lua19yZWNlaXZlZF9kYXRhKSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKmVuZ2luZSwKKyAgICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgICAgR3N0QnVmZmVyICogYnVmZmVyLCBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIC8qKgorICAgKiBhcHBzaW5rX2VvczogY2FsbGVkIGVhY2ggdGltZSBBcHBTaW5rIHJlY2VpdmVzIGVvcworICAgKiBAZW5naW5lOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICogQHN0cmVhbTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqCisgICAqIENhbiBiZSB1c2VkIGJ5IGEgdGVzdCB0byBwZXJmb3JtIGFkZGl0aW9uYWwgb3BlcmF0aW9ucyAoZWcgdmFsaWRhdGUKKyAgICogb3V0cHV0IGRhdGEpCisgICAqLworICB2b2lkICgqYXBwc2lua19lb3MpIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLAorICAgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKyAgLyoqCisgICAqIGFwcHNpbmtfZXZlbnQ6IGNhbGxlZCB3aGVuIGFuIGV2ZW50IGlzIHJlY2VpdmVkIGJ5IGFwcHNpbmsKKyAgICogQGVuZ2luZTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCisgICAqIEBzdHJlYW06ICNHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbQorICAgKiBAZXZlbnQ6IHRoZSAjR3N0RXZlbnQgdGhhdCB3YXMgcHVzaGVkIGluIHRoZSBkZW11eGVyIHBhZAorICAgKiBAdXNlcl9kYXRhOiB0aGUgdXNlcl9kYXRhIHBhc3NlZCB0byBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4oKQorICAgKgorICAgKiBDYW4gYmUgdXNlZCBieSBhIHRlc3QgdG8gZG8gc29tZSBjaGVja3Mgb24gdGhlIGV2ZW50cworICAgKi8KKyAgdm9pZCAoKmFwcHNpbmtfZXZlbnQpIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lLAorICAgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sCisgICAgICBHc3RFdmVudCAqIGV2ZW50LCBncG9pbnRlciB1c2VyX2RhdGEpOworCisgIC8qKgorICAgKiBkZW11eF9wYWRfYWRkZWQ6IGNhbGxlZCBlYWNoIHRpbWUgdGhlIGRlbXV4IGNyZWF0ZXMgYSBuZXcgcGFkCisgICAqIEBlbmdpbmU6ICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZQorICAgKiBAc3RyZWFtOiB0aGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtIHRoYXQgaGFzIGJlZW4gY3JlYXRlZAorICAgKiBAdXNlcl9kYXRhOiB0aGUgdXNlcl9kYXRhIHBhc3NlZCB0byBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4oKQorICAgKi8KKyAgdm9pZCAoKmRlbXV4X3BhZF9hZGRlZCkgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgICAgR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW0gKiBzdHJlYW0sIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKyAgLyoqCisgICAqIGRlbXV4X3BhZF9yZW1vdmVkOiBjYWxsZWQgZWFjaCB0aW1lIHRoZSBkZW11eCByZW1vdmVzIGEgcGFkCisgICAqIEBlbmdpbmU6ICNHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZQorICAgKiBAc3RyZWFtOiB0aGUgI0dzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtIHRoYXQgd2lsbCBubyBsb25nZXIKKyAgICogYmUgdXNlZAorICAgKiBAdXNlcl9kYXRhOiB0aGUgdXNlcl9kYXRhIHBhc3NlZCB0byBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4oKQorICAgKi8KKyAgdm9pZCAoKmRlbXV4X3BhZF9yZW1vdmVkKSAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICAvKioKKyAgICogZGVtdXhfc2VudF9kYXRhOiBjYWxsZWQgZWFjaCB0aW1lIHRoZSBkZW11eCBzZW5kcyBkYXRhIHRvIEFwcFNpbmsKKyAgICogQGVuZ2luZTogI0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCisgICAqIEBzdHJlYW06ICNHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbQorICAgKiBAYnVmZmVyOiB0aGUgI0dzdEJ1ZmZlciB0aGF0IHdhcyBzZW50IGJ5IGRlbXV4CisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqLworICBnYm9vbGVhbiAoKmRlbXV4X3NlbnRfZGF0YSkgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICplbmdpbmUsCisgICAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwKKyAgICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgZ3BvaW50ZXIgdXNlcl9kYXRhKTsKKworICAvKioKKyAgICogYnVzX2Vycm9yX21lc3NhZ2U6IGNhbGxlZCBpZiBhbiBlcnJvciBpcyBwb3N0ZWQgdG8gdGhlIGJ1cworICAgKiBAZW5naW5lOiAjR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUKKyAgICogQG1zZzogdGhlICNHc3RNZXNzYWdlIHRoYXQgY29udGFpbnMgdGhlIGVycm9yCisgICAqIEB1c2VyX2RhdGE6IHRoZSB1c2VyX2RhdGEgcGFzc2VkIHRvIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bigpCisgICAqCisgICAqIFRoZSBjYWxsYmFjayBjYW4gZGVjaWRlIGlmIHRoaXMgZXJyb3IgaXMgZXhwZWN0ZWQsIG9yIHRvIGZhaWwKKyAgICogdGhlIHRlc3QKKyAgICovCisgIHZvaWQgKCpidXNfZXJyb3JfbWVzc2FnZSkoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKmVuZ2luZSwKKyAgICAgIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSk7Cit9IEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzOworCisvKiBzdHJ1Y3R1cmUgY29udGFpbmluZyBhbGwgZGF0YSB1c2VkIGJ5IGEgdGVzdAorICogQW55IGNhbGxiYWNrIGRlZmluZWQgYnkgYSB0ZXN0IHdpbGwgcmVjZWl2ZSB0aGlzIGFzIGZpcnN0IHBhcmFtZXRlcgorICovCitzdHJ1Y3QgX0dzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCit7CisgIEdzdEVsZW1lbnQgKnBpcGVsaW5lOworICBHc3RFbGVtZW50ICpkZW11eDsKKyAgR3N0RWxlbWVudCAqbWFuaWZlc3Rfc291cmNlOworICBHTWFpbkxvb3AgKmxvb3A7CisgIEdQdHJBcnJheSAqb3V0cHV0X3N0cmVhbXM7IC8qIEdQdHJBcnJheTxHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbT4gKi8KKyAgLyogbXV0ZXggdG8gbG9jayBhY2Nlc3NlcyB0byB0aGlzIHN0cnVjdHVyZSB3aGVuIGRhdGEgaXMgc2hhcmVkIAorICAgKiBiZXR3ZWVuIHRocmVhZHMgKi8KKyAgR011dGV4IGxvY2s7Cit9OworCisvKioKKyAqIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1bjoKKyAqIEBlbGVtZW50X25hbWU6IFRoZSBuYW1lIG9mIHRoZSBkZW11eCBlbGVtZW50IChlLmcuICJkYXNoZGVtdXgiKQorICogQG1hbmlmZXN0X3VyaTogVGhlIFVSSSBvZiB0aGUgbWFuaWZlc3QgdG8gbG9hZAorICogQGNhbGxiYWNrczogVGhlIGNhbGxiYWNrcyB0byB1c2Ugd2hpbGUgdGhlIHRlc3QgaXMgaW4gb3BlcmF0aW5nCisgKiBAdXNlcl9kYXRhOiBPcGFxdWUgcG9pbnRlciB0aGF0IGlzIHBhc3NlZCB0byBldmVyeSBjYWxsYmFjaworICoKKyAqIENyZWF0ZXMgYSBwaXBlbGluZSB3aXRoIHRoZSBzcGVjaWZpZWQgZGVtdXggZWxlbWVudCBpbiBpdCwKKyAqIGNvbm5lY3QgYSB0ZXN0aHR0cHNyYyBlbGVtZW50IHRvIHRoaXMgZGVtdXggZWxlbWVudCBhbmQKKyAqIHJlcXVlc3QgbWFuaWZlc3RfdXJpLiBXaGVuIHRoZSBkZW11eCBlbGVtZW50IGFkZHMgYSBuZXcKKyAqIHBhZCwgdGhlIGVuZ2luZSB3aWxsIGNyZWF0ZSBhbiBBcHBTaW5rIGVsZW1lbnQgYW5kIGF0dGFjaAorICogaXQgdG8gdGhpcyBwYWQuIAorICoKKyAqIEluZm9ybWF0aW9uIGFib3V0IHRoZXNlIHBhZHMgaXMgY29sbGVjdGVkIGluIAorICogR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmU6Om91dHB1dF9zdHJlYW1zCisgKi8KK3ZvaWQgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChjb25zdCBnY2hhciAqIGVsZW1lbnRfbmFtZSwKKyAgICBjb25zdCBnY2hhciAqIG1hbmlmZXN0X3VyaSwKKyAgICBjb25zdCBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyAqIGNhbGxiYWNrcywKKyAgICBncG9pbnRlciB1c2VyX2RhdGEpOworCitHX0VORF9ERUNMUworI2VuZGlmIC8qIF9fR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfRU5HSU5FX0hfXyAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvYmFzZWF1ZGlvdmlzdWFsaXplci5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMGZkOTNhLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2Jhc2VhdWRpb3Zpc3VhbGl6ZXIuYworKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi0vKiBHU3RyZWFtZXIKLSAqIENvcHlyaWdodCAoQykgPDIwMTE+IFN0ZWZhbiBLb3N0IDxlbnNvbmljQHVzZXJzLnNmLm5ldD4KLSAqCi0gKiB1bml0IHRlc3QgZm9yIHRoZSBiYXNlYXVkaW92aXN1YWxpemVyIGNsYXNzCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgIi4uLy4uL2dzdC9hdWRpb3Zpc3VhbGl6ZXJzL2dzdGF1ZGlvdmlzdWFsaXplci5jIgotI3VuZGVmIEdTVF9DQVRfREVGQVVMVAotCi0jaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+Ci0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0KLS8qIGR1bW15IHN1YmNsYXNzIGZvciB0ZXN0aW5nICovCi0KLSNkZWZpbmUgR1NUX1RZUEVfVEVTVF9TQ09QRSAgICAgICAgICAgIChnc3RfdGVzdF9zY29wZV9nZXRfdHlwZSgpKQotI2RlZmluZSBHU1RfVEVTVF9TQ09QRShvYmopICAgICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9DQVNUKChvYmopLEdTVF9UWVBFX1RFU1RfU0NPUEUsR3N0VGVzdFNjb3BlKSkKLSNkZWZpbmUgR1NUX1RFU1RfU0NPUEVfQ0xBU1Moa2xhc3MpICAgIChHX1RZUEVfQ0hFQ0tfQ0xBU1NfQ0FTVCgoa2xhc3MpLEdTVF9UWVBFX1RFU1RfU0NPUEUsR3N0VGVzdFNjb3BlQ2xhc3MpKQotdHlwZWRlZiBzdHJ1Y3QgX0dzdFRlc3RTY29wZSBHc3RUZXN0U2NvcGU7Ci10eXBlZGVmIHN0cnVjdCBfR3N0VGVzdFNjb3BlQ2xhc3MgR3N0VGVzdFNjb3BlQ2xhc3M7Ci0KLXN0cnVjdCBfR3N0VGVzdFNjb3BlCi17Ci0gIEdzdEF1ZGlvVmlzdWFsaXplciBwYXJlbnQ7Ci19OwotCi1zdHJ1Y3QgX0dzdFRlc3RTY29wZUNsYXNzCi17Ci0gIEdzdEF1ZGlvVmlzdWFsaXplckNsYXNzIHBhcmVudF9jbGFzczsKLX07Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBnc3RfdGVzdF9zY29wZV9zcmNfdGVtcGxhdGUgPQotR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoR1NUX1ZJREVPX0NBUFNfTUFLRSAoInhSR0IiKSkKLSAgICApOwotCi1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X3Rlc3Rfc2NvcGVfc2lua190ZW1wbGF0ZSA9Ci1HU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgIgotICAgICAgICAiZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfQVVESU9fTkUgKFMxNikgIiwgIgotICAgICAgICAibGF5b3V0ID0gKHN0cmluZykgaW50ZXJsZWF2ZWQsICIKLSAgICAgICAgImNoYW5uZWxzID0gKGludCkgMiwgIgotICAgICAgICAiY2hhbm5lbC1tYXNrID0gKGJpdG1hc2spIDMsICIgInJhdGUgPSAoaW50KSA0NDEwMCIpCi0gICAgKTsKLQotc3RhdGljIEdUeXBlIGdzdF90ZXN0X3Njb3BlX2dldF90eXBlICh2b2lkKTsKLQotR19ERUZJTkVfVFlQRSAoR3N0VGVzdFNjb3BlLCBnc3RfdGVzdF9zY29wZSwgR1NUX1RZUEVfQVVESU9fVklTVUFMSVpFUik7Ci0KLXN0YXRpYyB2b2lkCi1nc3RfdGVzdF9zY29wZV9jbGFzc19pbml0IChHc3RUZXN0U2NvcGVDbGFzcyAqIGdfY2xhc3MpCi17Ci0gIEdzdEVsZW1lbnRDbGFzcyAqZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChnX2NsYXNzKTsKLQotICBnc3RfZWxlbWVudF9jbGFzc19zZXRfc3RhdGljX21ldGFkYXRhIChlbGVtZW50X2NsYXNzLCAidGVzdCBzY29wZSIsCi0gICAgICAiVmlzdWFsaXphdGlvbiIsCi0gICAgICAiRHVtbXkgdGVzdCBzY29wZSIsICJTdGVmYW4gS29zdCA8ZW5zb25pY0B1c2Vycy5zZi5uZXQ+Iik7Ci0KLSAgZ3N0X2VsZW1lbnRfY2xhc3NfYWRkX3BhZF90ZW1wbGF0ZSAoZWxlbWVudF9jbGFzcywKLSAgICAgIGdzdF9zdGF0aWNfcGFkX3RlbXBsYXRlX2dldCAoJmdzdF90ZXN0X3Njb3BlX3NyY190ZW1wbGF0ZSkpOwotICBnc3RfZWxlbWVudF9jbGFzc19hZGRfcGFkX3RlbXBsYXRlIChlbGVtZW50X2NsYXNzLAotICAgICAgZ3N0X3N0YXRpY19wYWRfdGVtcGxhdGVfZ2V0ICgmZ3N0X3Rlc3Rfc2NvcGVfc2lua190ZW1wbGF0ZSkpOwotfQotCi1zdGF0aWMgdm9pZAotZ3N0X3Rlc3Rfc2NvcGVfaW5pdCAoR3N0VGVzdFNjb3BlICogc2NvcGUpCi17Ci0gIC8qIGRvIG5vdGhpbmcgKi8KLX0KLQotLyogdGVzdHMgKi8KLSNkZWZpbmUgQ0FQUyAiYXVkaW8veC1yYXcsICIgIFwKLSAgICAgICAgImZvcm1hdCA9IChzdHJpbmcpICIgR1NUX0FVRElPX05FIChTMTYpICIsICIgXAotICAgICAgICAibGF5b3V0ID0gKHN0cmluZykgaW50ZXJsZWF2ZWQsICIgXAotICAgICAgICAicmF0ZSA9IChpbnQpIDQ0MTAwLCAiIFwKLSAgICAgICAgImNoYW5uZWxzID0gKGludCkgMiwgIiBcCi0gICAgICAgICJjaGFubmVsLW1hc2sgPSAoYml0bWFzaykgMyIKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmt0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoInZpZGVvL3gtcmF3LCAiCi0gICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSB4UkdCLCAiCi0gICAgICAgICJ3aWR0aCA9IChpbnQpIDMyMCwgIgotICAgICAgICAiaGVpZ2h0ID0gKGludCkgMjQwLCAiICJmcmFtZXJhdGUgPSAoZnJhY3Rpb24pIDMwLzEiKQotICAgICk7Ci1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgc3JjdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTIChDQVBTKQotICAgICk7Ci0KLUdTVF9TVEFSVF9URVNUIChjb3VudF9pbl9vdXQpCi17Ci0gIEdzdEVsZW1lbnQgKmVsZW07Ci0gIEdzdFBhZCAqc3JjcGFkLCAqc2lua3BhZDsKLSAgR3N0QnVmZmVyICpidWZmZXI7Ci0gIEdzdENhcHMgKmNhcHM7Ci0KLSAgLyogc2V0dXAgdXAgKi8KLSAgZWxlbSA9IGdzdF9jaGVja19zZXR1cF9lbGVtZW50ICgidGVzdHNjb3BlIik7Ci0gIHNyY3BhZCA9IGdzdF9jaGVja19zZXR1cF9zcmNfcGFkIChlbGVtLCAmc3JjdGVtcGxhdGUpOwotICBzaW5rcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkIChlbGVtLCAmc2lua3RlbXBsYXRlKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzcmNwYWQsIFRSVUUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKHNpbmtwYWQsIFRSVUUpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGVsZW0sCi0gICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHBsYXlpbmciKTsKLQotICBjYXBzID0gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKENBUFMpOwotICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChzcmNwYWQsIGVsZW0sIGNhcHMsIEdTVF9GT1JNQVRfVElNRSk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICAvKiBwdXNoIDFzIGF1ZGlvIHRvIGdldCAzMCB2aWRlby1mcmFtZXMgKi8KLSAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jICg0NDEwMCAqIDIgKiBzaXplb2YgKGdpbnQxNikpOwotICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChidWZmZXIsICJidWZmZXIiLCAxKTsKLQotICAvKiBwdXNoaW5nIGdpdmVzIGF3YXkgbXkgcmVmZXJlbmNlIC4uLiAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChzcmNwYWQsIGJ1ZmZlcikgPT0gR1NUX0ZMT1dfT0spOwotICAvKiAuLi4gYnV0IGl0IGVuZHMgdXAgYmVpbmcgY29sbGVjdGVkIG9uIHRoZSBnbG9iYWwgYnVmZmVyIGxpc3QgKi8KLSAgQVNTRVJUX0JVRkZFUl9SRUZDT1VOVCAoYnVmZmVyLCAiYnVmZmVyIiwgMSk7Ci0gIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAzMCk7Ci0KLSAgLyogY2xlYW4gdXAgKi8KLSAgZ19saXN0X2ZvcmVhY2ggKGJ1ZmZlcnMsIChHRnVuYykgZ3N0X21pbmlfb2JqZWN0X3VucmVmLCBOVUxMKTsKLSAgZ19saXN0X2ZyZWUgKGJ1ZmZlcnMpOwotICBidWZmZXJzID0gTlVMTDsKLQotICBnc3RfcGFkX3NldF9hY3RpdmUgKHNyY3BhZCwgRkFMU0UpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKHNpbmtwYWQsIEZBTFNFKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQgKGVsZW0pOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQgKGVsZW0pOwotICBnc3RfY2hlY2tfdGVhcmRvd25fZWxlbWVudCAoZWxlbSk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotc3RhdGljIHZvaWQKLWJhc2VhdWRpb3Zpc3VhbGl6ZXJfaW5pdCAodm9pZCkKLXsKLSAgZ3N0X2VsZW1lbnRfcmVnaXN0ZXIgKE5VTEwsICJ0ZXN0c2NvcGUiLCBHU1RfUkFOS19OT05FLCBHU1RfVFlQRV9URVNUX1NDT1BFKTsKLX0KLQotc3RhdGljIFN1aXRlICoKLWJhc2VhdWRpb3Zpc3VhbGl6ZXJfc3VpdGUgKHZvaWQpCi17Ci0gIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgiYmFzZWF1ZGlvdmlzdWFsaXplciIpOwotICBUQ2FzZSAqdGNfY2hhaW4gPSB0Y2FzZV9jcmVhdGUgKCJnZW5lcmFsIik7Ci0KLSAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7Ci0gIHRjYXNlX2FkZF9jaGVja2VkX2ZpeHR1cmUgKHRjX2NoYWluLCBiYXNlYXVkaW92aXN1YWxpemVyX2luaXQsIE5VTEwpOwotCi0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgY291bnRfaW5fb3V0KTsKLQotICByZXR1cm4gczsKLX0KLQotCi1HU1RfQ0hFQ0tfTUFJTiAoYmFzZWF1ZGlvdmlzdWFsaXplcik7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9jb21wb3NpdG9yLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9jb21wb3NpdG9yLmMKaW5kZXggY2NkNjhhMS4uOGI1ZmQ1YiAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvY29tcG9zaXRvci5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2NvbXBvc2l0b3IuYwpAQCAtNDUsNiArNDUsMjQgQEAKIAogc3RhdGljIEdNYWluTG9vcCAqbWFpbl9sb29wOwogCitzdGF0aWMgR3N0Q2FwcyAqCitfY29tcG9zaXRvcl9nZXRfYWxsX3N1cHBvcnRlZF9jYXBzICh2b2lkKQoreworICByZXR1cm4gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKEdTVF9WSURFT19DQVBTX01BS0UKKyAgICAgICgiIHsgQVlVViwgQkdSQSwgQVJHQiwgUkdCQSwgQUJHUiwgWTQ0NCwgWTQyQiwgWVVZMiwgVVlWWSwgIgorICAgICAgICAgICIgICBZVllVLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZNDFCLCBSR0IsIEJHUiwgeFJHQiwgeEJHUiwgIgorICAgICAgICAgICIgICBSR0J4LCBCR1J4IH0gIikpOworfQorCitzdGF0aWMgR3N0Q2FwcyAqCitfY29tcG9zaXRvcl9nZXRfbm9uX2FscGhhX3N1cHBvcnRlZF9jYXBzICh2b2lkKQoreworICByZXR1cm4gZ3N0X2NhcHNfZnJvbV9zdHJpbmcgKEdTVF9WSURFT19DQVBTX01BS0UKKyAgICAgICgiIHsgWTQ0NCwgWTQyQiwgWVVZMiwgVVlWWSwgIgorICAgICAgICAgICIgICBZVllVLCBJNDIwLCBZVjEyLCBOVjEyLCBOVjIxLCBZNDFCLCBSR0IsIEJHUiwgeFJHQiwgeEJHUiwgIgorICAgICAgICAgICIgICBSR0J4LCBCR1J4IH0gIikpOworfQorCiAvKiBtYWtlIHN1cmUgZG93bnN0cmVhbSBnZXRzIGEgQ0FQUyBldmVudCBiZWZvcmUgYnVmZmVycyBhcmUgc2VudCAqLwogR1NUX1NUQVJUX1RFU1QgKHRlc3RfY2FwcykKIHsKQEAgLTI0NSw2ICsyNjMsMjA4IEBACiAKIEdTVF9FTkRfVEVTVDsKIAorc3RhdGljIEdzdEJ1ZmZlciAqCitjcmVhdGVfdmlkZW9fYnVmZmVyIChHc3RDYXBzICogY2FwcywgZ2ludCB0c19pbl9zZWNvbmRzKQoreworICBHc3RWaWRlb0luZm8gaW5mbzsKKyAgZ3VpbnQgc2l6ZTsKKyAgR3N0QnVmZmVyICpidWY7CisgIEdzdE1hcEluZm8gbWFwaW5mbzsKKworICBmYWlsX3VubGVzcyAoZ3N0X3ZpZGVvX2luZm9fZnJvbV9jYXBzICgmaW5mbywgY2FwcykpOworCisgIHNpemUgPSBHU1RfVklERU9fSU5GT19XSURUSCAoJmluZm8pICogR1NUX1ZJREVPX0lORk9fSEVJR0hUICgmaW5mbyk7CisKKyAgc3dpdGNoIChHU1RfVklERU9fSU5GT19GT1JNQVQgKCZpbmZvKSkgeworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9SR0I6CisgICAgICBzaXplICo9IDM7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfUkdCQToKKyAgICBjYXNlIEdTVF9WSURFT19GT1JNQVRfQVJHQjoKKyAgICAgIHNpemUgKj0gNDsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwOgorICAgICAgc2l6ZSAqPSAyOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGZhaWwgKCJVbnN1cHBvcnRlZCB0ZXN0IGZvcm1hdCIpOworICB9CisKKyAgYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChzaXplKTsKKyAgLyogd3JpdGUgc29tZXRoaW5nIHRvIGF2b2lkIHVuaW5pdGlhbGl6ZWQgZXJyb3IgaXNzdWVzICh2YWxncmluZCkgKi8KKyAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcGluZm8sIEdTVF9NQVBfV1JJVEUpOworICBtZW1zZXQgKG1hcGluZm8uZGF0YSwgMCwgbWFwaW5mby5zaXplKTsKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwaW5mbyk7CisKKyAgR1NUX0JVRkZFUl9QVFMgKGJ1ZikgPSB0c19pbl9zZWNvbmRzICogR1NUX1NFQ09ORDsKKyAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IEdTVF9TRUNPTkQ7CisgIHJldHVybiBidWY7Cit9CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfY2Fwc19xdWVyeSkKK3sKKyAgR3N0RWxlbWVudCAqY29tcG9zaXRvciwgKmNhcHNmaWx0ZXIsICpzaW5rOworICBHc3RFbGVtZW50ICpwaXBlbGluZTsKKyAgZ2Jvb2xlYW4gcmVzOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXM7CisgIEdzdFBhZCAqc2lua3BhZDsKKyAgR3N0Q2FwcyAqY2FwcywgKnJlc3RyaWN0aW9uX2NhcHM7CisgIEdzdENhcHMgKmFsbF9jYXBzLCAqbm9uX2FscGhhX2NhcHM7CisKKyAgLyogaW5pdGlhbCBzZXR1cCAqLworICBhbGxfY2FwcyA9IF9jb21wb3NpdG9yX2dldF9hbGxfc3VwcG9ydGVkX2NhcHMgKCk7CisgIG5vbl9hbHBoYV9jYXBzID0gX2NvbXBvc2l0b3JfZ2V0X25vbl9hbHBoYV9zdXBwb3J0ZWRfY2FwcyAoKTsKKworICBjb21wb3NpdG9yID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiY29tcG9zaXRvciIsICJjb21wb3NpdG9yIik7CisgIGNhcHNmaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJjYXBzZmlsdGVyIiwgIm91dC1jZiIpOworICBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZmFrZXNpbmsiLCAic2luayIpOworICBwaXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcgKCJ0ZXN0LXBpcGVsaW5lIik7CisKKyAgZ3N0X2Jpbl9hZGRfbWFueSAoR1NUX0JJTiAocGlwZWxpbmUpLCBjb21wb3NpdG9yLCBjYXBzZmlsdGVyLCBzaW5rLCBOVUxMKTsKKyAgcmVzID0gZ3N0X2VsZW1lbnRfbGluayAoY29tcG9zaXRvciwgY2Fwc2ZpbHRlcik7CisgIGZhaWxfdW5sZXNzIChyZXMgPT0gVFJVRSwgTlVMTCk7CisgIHJlcyA9IGdzdF9lbGVtZW50X2xpbmsgKGNhcHNmaWx0ZXIsIHNpbmspOworICBmYWlsX3VubGVzcyAocmVzID09IFRSVUUsIE5VTEwpOworCisgIHNpbmtwYWQgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsICJzaW5rXyV1Iik7CisKKyAgc3RhdGVfcmVzID0gZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChwaXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpOworICBmYWlsX2lmIChzdGF0ZV9yZXMgPT0gR1NUX1NUQVRFX0NIQU5HRV9GQUlMVVJFKTsKKworICAvKiB0cnkgYW4gdW5yZXN0cmljdGVkIGNhcHMgcXVlcnksIHNob3VsZCByZXR1cm4gYWxsIGZvcm1hdHMgKi8KKyAgY2FwcyA9IGdzdF9wYWRfcXVlcnlfY2FwcyAoc2lua3BhZCwgTlVMTCk7CisgIGZhaWxfdW5sZXNzIChnc3RfY2Fwc19pc19lcXVhbCAoY2FwcywgYWxsX2NhcHMpKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworCisgIC8qIG5vdyByZXN0cmljdCBkb3duc3RyZWFtIHRvIGEgc2luZ2xlIGFscGhhIGZvcm1hdCwgaXQgc2hvdWxkIHN0aWxsCisgICAqIGJlIGFibGUgdG8gY29udmVydCBhbnl0aGluZyBlbHNlIHRvIGl0ICovCisgIHJlc3RyaWN0aW9uX2NhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylBWVVWIik7CisgIGdfb2JqZWN0X3NldCAoY2Fwc2ZpbHRlciwgImNhcHMiLCByZXN0cmljdGlvbl9jYXBzLCBOVUxMKTsKKyAgY2FwcyA9IGdzdF9wYWRfcXVlcnlfY2FwcyAoc2lua3BhZCwgTlVMTCk7CisgIGZhaWxfdW5sZXNzIChnc3RfY2Fwc19pc19lcXVhbCAoY2FwcywgYWxsX2NhcHMpKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworICBnc3RfY2Fwc191bnJlZiAocmVzdHJpY3Rpb25fY2Fwcyk7CisKKyAgLyogbm93IHJlc3RyaWN0IGRvd25zdHJlYW0gdG8gYSBub24tYWxwaGEgZm9ybWF0LCBpdCBzaG91bGQKKyAgICogYmUgYWJsZSB0byBhY2NlcHQgbm9uLWFscGhhIGZvcm1hdHMgKi8KKyAgcmVzdHJpY3Rpb25fY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKUk0MjAiKTsKKyAgZ19vYmplY3Rfc2V0IChjYXBzZmlsdGVyLCAiY2FwcyIsIHJlc3RyaWN0aW9uX2NhcHMsIE5VTEwpOworICBjYXBzID0gZ3N0X3BhZF9xdWVyeV9jYXBzIChzaW5rcGFkLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9jYXBzX2lzX2VxdWFsIChjYXBzLCBub25fYWxwaGFfY2FwcykpOworICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7CisgIGdzdF9jYXBzX3VucmVmIChyZXN0cmljdGlvbl9jYXBzKTsKKworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsIHNpbmtwYWQpOworICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rcGFkKTsKKyAgZ3N0X29iamVjdF91bnJlZiAocGlwZWxpbmUpOworICBnc3RfY2Fwc191bnJlZiAoYWxsX2NhcHMpOworICBnc3RfY2Fwc191bnJlZiAobm9uX2FscGhhX2NhcHMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKyNkZWZpbmUgTU9ERV9BTEwgMQorI2RlZmluZSBNT0RFX05PTl9BTFBIQSAyCisKK3N0YXRpYyB2b2lkCitydW5fbGF0ZV9jYXBzX3F1ZXJ5X3Rlc3QgKEdzdENhcHMgKiBpbnB1dF9jYXBzLCBHc3RDYXBzICogb3V0cHV0X2FsbG93ZWRfY2FwcywKKyAgICBnaW50IGV4cGVjdGVkX2NhcHNfbW9kZSkKK3sKKyAgR3N0RWxlbWVudCAqY29tcG9zaXRvciwgKmNhcHNmaWx0ZXIsICpzaW5rOworICBHc3RFbGVtZW50ICpwaXBlbGluZTsKKyAgZ2Jvb2xlYW4gcmVzOworICBHc3RTdGF0ZUNoYW5nZVJldHVybiBzdGF0ZV9yZXM7CisgIEdzdFBhZCAqc3JjcGFkMSwgKnNyY3BhZDI7CisgIEdzdFBhZCAqc2lua3BhZDEsICpzaW5rcGFkMjsKKyAgR3N0U2VnbWVudCBzZWdtZW50OworICBHc3RDYXBzICpjYXBzLCAqYWxsX2NhcHMsICpub25fYWxwaGFfY2FwczsKKworICBhbGxfY2FwcyA9IF9jb21wb3NpdG9yX2dldF9hbGxfc3VwcG9ydGVkX2NhcHMgKCk7CisgIG5vbl9hbHBoYV9jYXBzID0gX2NvbXBvc2l0b3JfZ2V0X25vbl9hbHBoYV9zdXBwb3J0ZWRfY2FwcyAoKTsKKworICBjb21wb3NpdG9yID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiY29tcG9zaXRvciIsICJjb21wb3NpdG9yIik7CisgIGNhcHNmaWx0ZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJjYXBzZmlsdGVyIiwgIm91dC1jZiIpOworICBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZmFrZXNpbmsiLCAic2luayIpOworICBwaXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcgKCJ0ZXN0LXBpcGVsaW5lIik7CisKKyAgZ3N0X2Jpbl9hZGRfbWFueSAoR1NUX0JJTiAocGlwZWxpbmUpLCBjb21wb3NpdG9yLCBjYXBzZmlsdGVyLCBzaW5rLCBOVUxMKTsKKyAgcmVzID0gZ3N0X2VsZW1lbnRfbGluayAoY29tcG9zaXRvciwgY2Fwc2ZpbHRlcik7CisgIGZhaWxfdW5sZXNzIChyZXMgPT0gVFJVRSwgTlVMTCk7CisgIHJlcyA9IGdzdF9lbGVtZW50X2xpbmsgKGNhcHNmaWx0ZXIsIHNpbmspOworICBmYWlsX3VubGVzcyAocmVzID09IFRSVUUsIE5VTEwpOworCisgIHNpbmtwYWQxID0gZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkIChjb21wb3NpdG9yLCAic2lua18ldSIpOworICBzcmNwYWQxID0gZ3N0X3BhZF9uZXcgKCJzcmMxIiwgR1NUX1BBRF9TUkMpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9saW5rIChzcmNwYWQxLCBzaW5rcGFkMSkgPT0gR1NUX1BBRF9MSU5LX09LKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzcmNwYWQxLCBUUlVFKTsKKworICBzdGF0ZV9yZXMgPSBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7CisgIGZhaWxfaWYgKHN0YXRlX3JlcyA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpOworCisgIGlmIChvdXRwdXRfYWxsb3dlZF9jYXBzKQorICAgIGdfb2JqZWN0X3NldCAoY2Fwc2ZpbHRlciwgImNhcHMiLCBvdXRwdXRfYWxsb3dlZF9jYXBzLCBOVUxMKTsKKworICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAoc3JjcGFkMSwKKyAgICAgICAgICBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QtMSIpKSk7CisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKHNyY3BhZDEsIGdzdF9ldmVudF9uZXdfY2FwcyAoaW5wdXRfY2FwcykpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAoc3JjcGFkMSwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaCAoc3JjcGFkMSwKKyAgICAgICAgICBjcmVhdGVfdmlkZW9fYnVmZmVyIChpbnB1dF9jYXBzLCAwKSkgPT0gR1NUX0ZMT1dfT0spOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChzcmNwYWQxLAorICAgICAgICAgIGNyZWF0ZV92aWRlb19idWZmZXIgKGlucHV0X2NhcHMsIDEpKSA9PSBHU1RfRkxPV19PSyk7CisKKyAgLyogbm93IGNvbWVzIHRoZSBzZWNvbmQgcGFkICovCisgIHNpbmtwYWQyID0gZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkIChjb21wb3NpdG9yLCAic2lua18ldSIpOworICBzcmNwYWQyID0gZ3N0X3BhZF9uZXcgKCJzcmMyIiwgR1NUX1BBRF9TUkMpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9saW5rIChzcmNwYWQyLCBzaW5rcGFkMikgPT0gR1NUX1BBRF9MSU5LX09LKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChzcmNwYWQyLCBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAoc3JjcGFkMiwKKyAgICAgICAgICBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QtMiIpKSk7CisKKyAgY2FwcyA9IGdzdF9wYWRfcGVlcl9xdWVyeV9jYXBzIChzcmNwYWQyLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9jYXBzX2lzX2VxdWFsIChjYXBzLAorICAgICAgICAgIGV4cGVjdGVkX2NhcHNfbW9kZSA9PSBNT0RFX0FMTCA/IGFsbF9jYXBzIDogbm9uX2FscGhhX2NhcHMpKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworCisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoc3JjcGFkMSwgRkFMU0UpOworICBnc3RfcGFkX3NldF9hY3RpdmUgKHNyY3BhZDIsIEZBTFNFKTsKKyAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChwaXBlbGluZSwgR1NUX1NUQVRFX05VTEwpOworICBnc3RfZWxlbWVudF9yZWxlYXNlX3JlcXVlc3RfcGFkIChjb21wb3NpdG9yLCBzaW5rcGFkMSk7CisgIGdzdF9lbGVtZW50X3JlbGVhc2VfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsIHNpbmtwYWQyKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoc2lua3BhZDEpOworICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rcGFkMik7CisgIGdzdF9vYmplY3RfdW5yZWYgKHBpcGVsaW5lKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoc3JjcGFkMSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHNyY3BhZDIpOworICBnc3RfY2Fwc191bnJlZiAoYWxsX2NhcHMpOworICBnc3RfY2Fwc191bnJlZiAobm9uX2FscGhhX2NhcHMpOworfQorCitHU1RfU1RBUlRfVEVTVCAodGVzdF9sYXRlX2NhcHNfcXVlcnkpCit7CisgIEdzdENhcHMgKnJnYl9jYXBzOworICBHc3RDYXBzICpub25fYWxwaGFfY2FwczsKKworICByZ2JfY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXcsIGZvcm1hdD0oc3RyaW5nKVJHQiwgIgorICAgICAgIndpZHRoPShpbnQpMTAwLCBoZWlnaHQ9KGludCkxMDAsIGZyYW1lcmF0ZT0oZnJhY3Rpb24pMS8xIik7CisKKyAgbm9uX2FscGhhX2NhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoInZpZGVvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylSR0IiKTsKKworICAvKiBjaGVjayB0aGF0IGEgMm5kIHBhZCB0aGF0IGlzIGFkZGVkIGxhdGUgdG8gY29tcG9zaXRvciB3aWxsIGJlIGFibGUgdG8KKyAgICogbmVnb3RpYXRlIHRvIGZvcm1hdHMgdGhhdCBkZXBlbmQgb25seSBvbiBkb3duc3RyZWFtIGNhcHMgYW5kIG5vdCBvbiB3aGF0CisgICAqIHRoZSBvdGhlciBwYWRzIGhhdmUgYWxyZWFkeSBuZWdvdGlhdGVkICovCisgIHJ1bl9sYXRlX2NhcHNfcXVlcnlfdGVzdCAocmdiX2NhcHMsIE5VTEwsIE1PREVfQUxMKTsKKyAgcnVuX2xhdGVfY2Fwc19xdWVyeV90ZXN0IChyZ2JfY2Fwcywgbm9uX2FscGhhX2NhcHMsIE1PREVfTk9OX0FMUEhBKTsKKworICBnc3RfY2Fwc191bnJlZiAobm9uX2FscGhhX2NhcHMpOworICBnc3RfY2Fwc191bnJlZiAocmdiX2NhcHMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKIHN0YXRpYyBndWludCBwbGF5X2NvdW50ID0gMDsKIHN0YXRpYyBHc3RFdmVudCAqcGxheV9zZWVrX2V2ZW50ID0gTlVMTDsKIApAQCAtMTQ0NCw2ICsxNjY0LDUwIEBACiAKIEdTVF9FTkRfVEVTVDsKIAorLyogVGVzdCB0aGF0IHRoZSBHU1RfRUxFTUVOVCh2YWdnKS0+c2lua3BhZHMgR0xpc3QgaXMgYWx3YXlzIHNvcnRlZCBieSB6b3JkZXIgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0X3BhZF96X29yZGVyKQoreworICBHc3RFbGVtZW50ICpjb21wb3NpdG9yOworICBHc3RQYWQgKnNpbmtwYWQxLCAqc2lua3BhZDIsICpzaW5rcGFkMzsKKyAgZ3VpbnQgem9yZGVyMSwgem9yZGVyMjsKKyAgR0xpc3QgKnNpbmtwYWRzOworCisgIEdTVF9JTkZPICgicHJlcGFyaW5nIHRlc3QiKTsKKworICBjb21wb3NpdG9yID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiY29tcG9zaXRvciIsIE5VTEwpOworICBzaW5rcGFkMSA9IGdzdF9lbGVtZW50X2dldF9yZXF1ZXN0X3BhZCAoY29tcG9zaXRvciwgInNpbmtfJXUiKTsKKyAgc2lua3BhZDIgPSBnc3RfZWxlbWVudF9nZXRfcmVxdWVzdF9wYWQgKGNvbXBvc2l0b3IsICJzaW5rXyV1Iik7CisKKyAgLyogUGFkcyByZXF1ZXN0ZWQgbGF0ZXIgaGF2ZSBhIGhpZ2hlciB6LW9yZGVyIHRoYW4gZWFybGllciBvbmVzIGJ5IGRlZmF1bHQgKi8KKyAgZ19vYmplY3RfZ2V0IChzaW5rcGFkMSwgInpvcmRlciIsICZ6b3JkZXIxLCBOVUxMKTsKKyAgZ19vYmplY3RfZ2V0IChzaW5rcGFkMiwgInpvcmRlciIsICZ6b3JkZXIyLCBOVUxMKTsKKyAgY2tfYXNzZXJ0X2ludF9ndCAoem9yZGVyMiwgem9yZGVyMSk7CisgIHNpbmtwYWRzID0gR1NUX0VMRU1FTlQgKGNvbXBvc2l0b3IpLT5zaW5rcGFkczsKKyAgY2tfYXNzZXJ0X3B0cl9lcSAoc2lua3BhZHMtPmRhdGEsIHNpbmtwYWQxKTsKKyAgY2tfYXNzZXJ0X3B0cl9lcSAoc2lua3BhZHMtPm5leHQtPmRhdGEsIHNpbmtwYWQyKTsKKworICAvKiBNYWtlIHNpbmtwYWQxJ3Mgem9yZGVyIHRoZSBsYXJnZXN0LCB3aGljaCBzaG91bGQgcmUtc29ydCB0aGUgc2lua3BhZHMgKi8KKyAgZ19vYmplY3Rfc2V0IChzaW5rcGFkMSwgInpvcmRlciIsIHpvcmRlcjIgKyAxLCBOVUxMKTsKKyAgc2lua3BhZHMgPSBHU1RfRUxFTUVOVCAoY29tcG9zaXRvciktPnNpbmtwYWRzOworICBja19hc3NlcnRfcHRyX2VxIChzaW5rcGFkcy0+ZGF0YSwgc2lua3BhZDIpOworICBja19hc3NlcnRfcHRyX2VxIChzaW5rcGFkcy0+bmV4dC0+ZGF0YSwgc2lua3BhZDEpOworCisgIC8qIEdldCBhIG5ldyBwYWQsIHdoaWNoIHNob3VsZCBiZSB0aGUgaGlnaGVzdCBwYWQgbm93ICovCisgIHNpbmtwYWQzID0gZ3N0X2VsZW1lbnRfZ2V0X3JlcXVlc3RfcGFkIChjb21wb3NpdG9yLCAic2lua18ldSIpOworICBzaW5rcGFkcyA9IEdTVF9FTEVNRU5UIChjb21wb3NpdG9yKS0+c2lua3BhZHM7CisgIGNrX2Fzc2VydF9wdHJfZXEgKHNpbmtwYWRzLT5kYXRhLCBzaW5rcGFkMik7CisgIGNrX2Fzc2VydF9wdHJfZXEgKHNpbmtwYWRzLT5uZXh0LT5kYXRhLCBzaW5rcGFkMSk7CisgIGNrX2Fzc2VydF9wdHJfZXEgKHNpbmtwYWRzLT5uZXh0LT5uZXh0LT5kYXRhLCBzaW5rcGFkMyk7CisKKyAgLyogY2xlYW51cCAqLworICBnc3Rfb2JqZWN0X3VucmVmIChjb21wb3NpdG9yKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoc2lua3BhZDEpOworICBnc3Rfb2JqZWN0X3VucmVmIChzaW5rcGFkMik7CisgIGdzdF9vYmplY3RfdW5yZWYgKHNpbmtwYWQzKTsKK30KKworR1NUX0VORF9URVNUOworCiB0eXBlZGVmIHN0cnVjdAogewogICBnaW50IGJ1ZmZlcnNfc2VudDsKQEAgLTE2MTYsNiArMTg4MCw4IEBACiAgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfY2Fwcyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9ldmVudCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9jYXBzX3F1ZXJ5KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2xhdGVfY2Fwc19xdWVyeSk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wbGF5X3R3aWNlKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3BsYXlfdHdpY2VfdGhlbl9hZGRfYW5kX3BsYXlfYWdhaW4pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfYWRkX3BhZCk7CkBAIC0xNjI4LDYgKzE4OTQsNyBAQAogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfc2VnbWVudF9iYXNlX2hhbmRsaW5nKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X29ic2N1cmVkX3NraXBwZWQpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfaWdub3JlX2Vvcyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9wYWRfel9vcmRlcik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9zdGFydF90aW1lX3plcm9fbGl2ZV9kcm9wXzApOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfc3RhcnRfdGltZV96ZXJvX2xpdmVfZHJvcF8zKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3N0YXJ0X3RpbWVfemVyb19saXZlX2Ryb3BfM191bmxpbmtlZF8xKTsKQEAgLTE2MzUsMTcgKzE5MDIsNiBAQAogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfc3RhcnRfdGltZV9maXJzdF9saXZlX2Ryb3BfMyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9zdGFydF90aW1lX2ZpcnN0X2xpdmVfZHJvcF8zX3VubGlua2VkXzEpOwogCi0gIC8qIFVzZSBhIGxvbmdlciB0aW1lb3V0ICovCi0jaWZkZWYgSEFWRV9WQUxHUklORAotICBpZiAoUlVOTklOR19PTl9WQUxHUklORCkgewotICAgIHRjYXNlX3NldF90aW1lb3V0ICh0Y19jaGFpbiwgNSAqIDYwKTsKLSAgfSBlbHNlCi0jZW5kaWYKLSAgewotICAgIC8qIHRoaXMgaXMgc2hvcnRlciB0aGFuIHRoZSBkZWZhdWx0IDYwIHNlY29uZHM/ISAodHBtKSAqLwotICAgIC8qIHRjYXNlX3NldF90aW1lb3V0ICh0Y19jaGFpbiwgNik7ICovCi0gIH0KLQogICByZXR1cm4gczsKIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGZ0cHNpbmsuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxmdHBzaW5rLmMKaW5kZXggZjg3MDZmNy4uMTg1YTE1MiAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvY3VybGZ0cHNpbmsuYworKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsZnRwc2luay5jCkBAIC02Myw4ICs2Myw3IEBACiAgICAgICAiZXBzdi1tb2RlIiwgJnJlc19lcHN2X21vZGUsCiAgICAgICAiY3JlYXRlLWRpcnMiLCAmcmVzX2NyZWF0ZV9kaXJzLAogICAgICAgImNyZWF0ZS10bXAtZmlsZSIsICZyZXNfY3JlYXRlX3RtcGZpbGUsCi0gICAgICAidGVtcC1maWxlLW5hbWUiLCAmcmVzX3RtcF9maWxlX25hbWUsCi0gICAgICBOVUxMKTsKKyAgICAgICJ0ZW1wLWZpbGUtbmFtZSIsICZyZXNfdG1wX2ZpbGVfbmFtZSwgTlVMTCk7CiAKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19sb2NhdGlvbiwgIm15bG9jYXRpb24iLCBzdHJsZW4gKCJteWxvY2F0aW9uIikpCiAgICAgICA9PSAwKTsKQEAgLTcyLDEyICs3MSwxMyBAQAogICAgICAgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfZnRwX3BvcnQsICIxLjIuMy40OjAiLCBzdHJsZW4gKCIxLjIuMy40OjAiKSkKICAgICAgID09IDApOwotICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX3RtcF9maWxlX25hbWUsICJ0ZXN0X3RtcF9maWxlXyIsIHN0cmxlbiAoInRlc3RfdG1wX2ZpbGVfIikpCisgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfdG1wX2ZpbGVfbmFtZSwgInRlc3RfdG1wX2ZpbGVfIiwKKyAgICAgICAgICBzdHJsZW4gKCJ0ZXN0X3RtcF9maWxlXyIpKQogICAgICAgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChyZXNfZXBzdl9tb2RlID09IEZBTFNFKTsKICAgZmFpbF91bmxlc3MgKHJlc19jcmVhdGVfZGlycyA9PSBGQUxTRSk7CiAgIGZhaWxfdW5sZXNzIChyZXNfY3JlYXRlX3RtcGZpbGUgPT0gRkFMU0UpOwotICAKKwogICBnX2ZyZWUgKHJlc19sb2NhdGlvbik7CiAgIGdfZnJlZSAocmVzX2ZpbGVfbmFtZSk7CiAgIGdfZnJlZSAocmVzX2Z0cF9wb3J0KTsKQEAgLTk5LDggKzk5LDcgQEAKICAgICAgICJlcHN2LW1vZGUiLCAmcmVzX2Vwc3ZfbW9kZSwKICAgICAgICJjcmVhdGUtZGlycyIsICZyZXNfY3JlYXRlX2RpcnMsCiAgICAgICAiY3JlYXRlLXRtcC1maWxlIiwgJnJlc19jcmVhdGVfdG1wZmlsZSwKLSAgICAgICJ0ZW1wLWZpbGUtbmFtZSIsICZyZXNfdG1wX2ZpbGVfbmFtZSwKLSAgICAgIE5VTEwpOworICAgICAgInRlbXAtZmlsZS1uYW1lIiwgJnJlc190bXBfZmlsZV9uYW1lLCBOVUxMKTsKIAogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX2xvY2F0aW9uLCAibmV3bG9jYXRpb24iLCBzdHJsZW4gKCJuZXdsb2NhdGlvbiIpKQogICAgICAgPT0gMCk7CkBAIC0xMDgsMTMgKzEwNywxNCBAQAogICAgICAgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfZnRwX3BvcnQsICIiLCBzdHJsZW4gKCIiKSkKICAgICAgID09IDApOwotICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX3RtcF9maWxlX25hbWUsICJ0ZXN0X3RtcF9maWxlXyIsIHN0cmxlbiAoInRlc3RfdG1wX2ZpbGVfIikpCisgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfdG1wX2ZpbGVfbmFtZSwgInRlc3RfdG1wX2ZpbGVfIiwKKyAgICAgICAgICBzdHJsZW4gKCJ0ZXN0X3RtcF9maWxlXyIpKQogICAgICAgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChyZXNfZXBzdl9tb2RlID09IFRSVUUpOwogICBmYWlsX3VubGVzcyAocmVzX2NyZWF0ZV9kaXJzID09IFRSVUUpOwogICBmYWlsX3VubGVzcyAocmVzX2NyZWF0ZV9kaXJzID09IFRSVUUpOwogICBmYWlsX3VubGVzcyAocmVzX2NyZWF0ZV90bXBmaWxlID09IFRSVUUpOwotICAKKwogICBnX2ZyZWUgKHJlc19sb2NhdGlvbik7CiAgIGdfZnJlZSAocmVzX2ZpbGVfbmFtZSk7CiAgIGdfZnJlZSAocmVzX2Z0cF9wb3J0KTsKQEAgLTEyMiw2ICsxMjIsNyBAQAogCiAgIGNsZWFudXBfY3VybGZ0cHNpbmsgKHNpbmspOwogfQorCiBHU1RfRU5EX1RFU1Q7CiAKIHN0YXRpYyBTdWl0ZSAqCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsaHR0cHNpbmsuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxodHRwc2luay5jCmluZGV4IGZjZGI2ZTEuLjY4MzcwZmIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxodHRwc2luay5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxodHRwc2luay5jCkBAIC01NCwxNiArNTQsMTQgQEAKIAogICBnX29iamVjdF9zZXQgKEdfT0JKRUNUIChzaW5rKSwKICAgICAgICJsb2NhdGlvbiIsICJteWxvY2F0aW9uIiwKLSAgICAgICJmaWxlLW5hbWUiLCJteWZpbGUiLAorICAgICAgImZpbGUtbmFtZSIsICJteWZpbGUiLAogICAgICAgInVzZXIiLCAidXNlciIsCiAgICAgICAicGFzc3dkIiwgInBhc3N3ZCIsCiAgICAgICAicHJveHkiLCAibXlwcm94eSIsCiAgICAgICAicHJveHktcG9ydCIsIDc3NzcsCiAgICAgICAicHJveHktdXNlciIsICJwcm94eV91c2VyIiwKICAgICAgICJwcm94eS1wYXNzd2QiLCAicHJveHlfcGFzc3dkIiwKLSAgICAgICJjb250ZW50LXR5cGUiLCAiaW1hZ2UvanBlZyIsCi0gICAgICAidXNlLWNvbnRlbnQtbGVuZ3RoIiwgVFJVRSwKLSAgICAgIE5VTEwpOworICAgICAgImNvbnRlbnQtdHlwZSIsICJpbWFnZS9qcGVnIiwgInVzZS1jb250ZW50LWxlbmd0aCIsIFRSVUUsIE5VTEwpOwogCiAgIGdfb2JqZWN0X2dldCAoc2luaywKICAgICAgICJsb2NhdGlvbiIsICZyZXNfbG9jYXRpb24sCkBAIC03NSw4ICs3Myw3IEBACiAgICAgICAicHJveHktdXNlciIsICZyZXNfcHJveHlfdXNlciwKICAgICAgICJwcm94eS1wYXNzd2QiLCAmcmVzX3Byb3h5X3Bhc3N3ZCwKICAgICAgICJjb250ZW50LXR5cGUiLCAmcmVzX2NvbnRlbnRfdHlwZSwKLSAgICAgICJ1c2UtY29udGVudC1sZW5ndGgiLCAmcmVzX3VzZV9jb250ZW50X2xlbmd0aCwKLSAgICAgIE5VTEwpOworICAgICAgInVzZS1jb250ZW50LWxlbmd0aCIsICZyZXNfdXNlX2NvbnRlbnRfbGVuZ3RoLCBOVUxMKTsKIAogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX2xvY2F0aW9uLCAibXlsb2NhdGlvbiIsIHN0cmxlbiAoIm15bG9jYXRpb24iKSkKICAgICAgID09IDApOwpAQCAtODksNyArODYsNyBAQAogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX3Byb3h5X3VzZXIsICJwcm94eV91c2VyIiwgc3RybGVuICgicHJveHlfdXNlciIpKQogICAgICAgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfcHJveHlfcGFzc3dkLCAicHJveHlfcGFzc3dkIiwKLSAgICAgICAgc3RybGVuICgicHJveHlfcGFzc3dkIikpID09IDApOworICAgICAgICAgIHN0cmxlbiAoInByb3h5X3Bhc3N3ZCIpKSA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19jb250ZW50X3R5cGUsICJpbWFnZS9qcGVnIiwgc3RybGVuICgiaW1hZ2UvanBlZyIpKQogICAgICAgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChyZXNfdXNlX2NvbnRlbnRfbGVuZ3RoID09IFRSVUUpOwpAQCAtMTE4LDYgKzExNSw3IEBACiAKICAgY2xlYW51cF9jdXJsaHR0cHNpbmsgKHNpbmspOwogfQorCiBHU1RfRU5EX1RFU1Q7CiAKIHN0YXRpYyBTdWl0ZSAqCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9jdXJsc210cHNpbmsuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxzbXRwc2luay5jCmluZGV4IGU1MjYzMjcuLjQ1MGI3MjEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxzbXRwc2luay5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2N1cmxzbXRwc2luay5jCkBAIC04MCw5ICs4MCw3IEBACiAgICAgICAibmJyLWF0dGFjaG1lbnRzIiwgJnJlc19uYnJfYXR0YWNoLAogICAgICAgInVzZS1zc2wiLCAmcmVzX3VzZV9zc2wsCiAgICAgICAicG9wLWxvY2F0aW9uIiwgJnJlc19wb3BfbG9jYXRpb24sCi0gICAgICAicG9wX3VzZXIiLCAmcmVzX3BvcF91c3IsCi0gICAgICAicG9wLXBhc3N3ZCIsICZyZXNfcG9wX3Bhc3N3ZCwKLSAgICAgIE5VTEwpOworICAgICAgInBvcF91c2VyIiwgJnJlc19wb3BfdXNyLCAicG9wLXBhc3N3ZCIsICZyZXNfcG9wX3Bhc3N3ZCwgTlVMTCk7CiAKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19sb2NhdGlvbiwgIm15bG9jYXRpb24iLCBzdHJsZW4gKCJteWxvY2F0aW9uIikpCiAgICAgICA9PSAwKTsKQEAgLTE0Nyw5ICsxNDUsNyBAQAogICAgICAgInN1YmplY3QiLCAmcmVzX3N1YmosCiAgICAgICAidXNlLXNzbCIsICZyZXNfdXNlX3NzbCwKICAgICAgICJtZXNzYWdlLWJvZHkiLCAmcmVzX21zZywKLSAgICAgICJtYWlsLWZyb20iLCAmcmVzX21haWxfZnJvbSwKLSAgICAgICJtYWlsLXJjcHQiLCAmcmVzX21haWxfcmNwdCwKLSAgICAgIE5VTEwpOworICAgICAgIm1haWwtZnJvbSIsICZyZXNfbWFpbF9mcm9tLCAibWFpbC1yY3B0IiwgJnJlc19tYWlsX3JjcHQsIE5VTEwpOwogCiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfbG9jYXRpb24sICJuZXdsb2NhdGlvbiIsIHN0cmxlbiAoIm5ld2xvY2F0aW9uIikpCiAgICAgICA9PSAwKTsKQEAgLTE2MCw3ICsxNTYsNyBAQAogICBmYWlsX3VubGVzcyAoc3RybmNtcCAocmVzX3Bhc3N3ZCwgIm5ld3Bhc3N3ZCIsIHN0cmxlbiAoIm5ld3Bhc3N3ZCIpKQogICAgICAgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfbWFpbF9yY3B0LCAicmNwdDEscmNwdDIscmNwdDMiLAotICAgICAgc3RybGVuICgicmNwdDEscmNwdDIscmNwdDMiKSkgPT0gMCk7CisgICAgICAgICAgc3RybGVuICgicmNwdDEscmNwdDIscmNwdDMiKSkgPT0gMCk7CiAgIGZhaWxfdW5sZXNzIChzdHJuY21wIChyZXNfbWFpbF9mcm9tLCAibmV3c2VuZGVyIiwgc3RybGVuICgibmV3c2VuZGVyIikpCiAgICAgICA9PSAwKTsKICAgZmFpbF91bmxlc3MgKHN0cm5jbXAgKHJlc19zdWJqLCAibmV3c3ViamVjdCIsIHN0cmxlbiAoIm5ld3N1YmplY3QiKSkKQEAgLTE5MCw2ICsxODYsNyBAQAogCiAgIGNsZWFudXBfY3VybHNtdHBzaW5rIChzaW5rKTsKIH0KKwogR1NUX0VORF9URVNUOwogCiBzdGF0aWMgU3VpdGUgKgpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9kZW11eC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2MWUxMmUKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX2RlbXV4LmMKQEAgLTAsMCArMSwxMDI4IEBACisvKiBHU3RyZWFtZXIgdW5pdCB0ZXN0IGZvciBNUEVHLURBU0gKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDwyMDE1PiBZb3VWaWV3IFRWIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKyNpbmNsdWRlICJhZGFwdGl2ZV9kZW11eF9jb21tb24uaCIKKworI2RlZmluZSBERU1VWF9FTEVNRU5UX05BTUUgImRhc2hkZW11eCIKKworI2RlZmluZSBDT1BZX09VVFBVVF9URVNUX0RBVEEob3V0cHV0VGVzdERhdGEsdGVzdERhdGEpIGRvIHsgXAorICAgIGd1aW50IG90ZFBvcywgb3RkTGVuID0gc2l6ZW9mKChvdXRwdXRUZXN0RGF0YSkpIC8gc2l6ZW9mKChvdXRwdXRUZXN0RGF0YSlbMF0pOyBcCisgICAgZm9yKG90ZFBvcz0wOyBvdGRQb3M8b3RkTGVuOyArK290ZFBvcyl7IFwKKyAgKHRlc3REYXRhKS0+b3V0cHV0X3N0cmVhbXMgPSBnX2xpc3RfYXBwZW5kICgodGVzdERhdGEpLT5vdXRwdXRfc3RyZWFtcywgJihvdXRwdXRUZXN0RGF0YSlbb3RkUG9zXSk7IFwKKyAgICB9IFwKKyAgfSB3aGlsZSgwKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YQoreworICBjb25zdCBnY2hhciAqdXJpOworICBjb25zdCBndWludDggKnBheWxvYWQ7CisgIGd1aW50NjQgc2l6ZTsKK30gR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YTsKKworc3RhdGljIGdib29sZWFuCitnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX3N0YXJ0IChHc3RUZXN0SFRUUFNyYyAqIHNyYywKKyAgICBjb25zdCBnY2hhciAqIHVyaSwgR3N0VGVzdEhUVFBTcmNJbnB1dCAqIGlucHV0X2RhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgY29uc3QgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSAqaW5wdXQgPQorICAgICAgKGNvbnN0IEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgKikgdXNlcl9kYXRhOworICBmb3IgKGd1aW50IGkgPSAwOyBpbnB1dFtpXS51cmk7ICsraSkgeworICAgIGlmIChzdHJjbXAgKGlucHV0W2ldLnVyaSwgdXJpKSA9PSAwKSB7CisgICAgICBpbnB1dF9kYXRhLT5jb250ZXh0ID0gKGdwb2ludGVyKSAmIGlucHV0W2ldOworICAgICAgaW5wdXRfZGF0YS0+c2l6ZSA9IGlucHV0W2ldLnNpemU7CisgICAgICBpZiAoaW5wdXRbaV0uc2l6ZSA9PSAwKQorICAgICAgICBpbnB1dF9kYXRhLT5zaXplID0gc3RybGVuICgoZ2NoYXIgKikgaW5wdXRbaV0ucGF5bG9hZCk7CisgICAgICByZXR1cm4gVFJVRTsKKyAgICB9CisgIH0KKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19jcmVhdGUgKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGd1aW50NjQgb2Zmc2V0LAorICAgIGd1aW50IGxlbmd0aCwgR3N0QnVmZmVyICoqIHJldGJ1ZiwgZ3BvaW50ZXIgY29udGV4dCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICAvKiAgY29uc3QgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSAqaW5wdXQgPQorICAgICAoY29uc3QgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSAqKSB1c2VyX2RhdGE7ICovCisgIGNvbnN0IEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgKmlucHV0ID0KKyAgICAgIChjb25zdCBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhICopIGNvbnRleHQ7CisgIEdzdEJ1ZmZlciAqYnVmOworCisgIGJ1ZiA9IGdzdF9idWZmZXJfbmV3X2FsbG9jYXRlIChOVUxMLCBsZW5ndGgsIE5VTEwpOworICBmYWlsX2lmIChidWYgPT0gTlVMTCwgIk5vdCBlbm91Z2ggbWVtb3J5IHRvIGFsbG9jYXRlIGJ1ZmZlciIpOworCisgIGlmIChpbnB1dC0+cGF5bG9hZCkgeworICAgIGdzdF9idWZmZXJfZmlsbCAoYnVmLCAwLCBpbnB1dC0+cGF5bG9hZCArIG9mZnNldCwgbGVuZ3RoKTsKKyAgfSBlbHNlIHsKKyAgICBHc3RNYXBJbmZvIGluZm87CisgICAgZ3VpbnQgcGF0dGVybjsKKworICAgIHBhdHRlcm4gPSBvZmZzZXQgLSBvZmZzZXQgJSBzaXplb2YgKHBhdHRlcm4pOworCisgICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJmluZm8sIEdTVF9NQVBfV1JJVEUpOworICAgIGZvciAoZ3VpbnQ2NCBpID0gMDsgaSA8IGxlbmd0aDsgKytpKSB7CisgICAgICBnY2hhciBwYXR0ZXJuX2J5dGVfdG9fd3JpdGUgPSAob2Zmc2V0ICsgaSkgJSBzaXplb2YgKHBhdHRlcm4pOworICAgICAgaWYgKHBhdHRlcm5fYnl0ZV90b193cml0ZSA9PSAwKSB7CisgICAgICAgIHBhdHRlcm4gPSBvZmZzZXQgKyBpOworICAgICAgfQorICAgICAgaW5mby5kYXRhW2ldID0gKHBhdHRlcm4gPj4gKHBhdHRlcm5fYnl0ZV90b193cml0ZSAqIDgpKSAmIDB4RkY7CisgICAgfQorICAgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJmluZm8pOworICB9CisgICpyZXRidWYgPSBidWY7CisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworLyoqKioqKioqKioqKioqKioqKioqIFRlc3Qgc3BlY2lmaWMgY29kZSBzdGFydHMgaGVyZSAqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworLyoKKyAqIFRlc3QgYW4gbXBkIHdpdGggYW4gYXVkaW8gYW5kIGEgdmlkZW8gc3RyZWFtCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAoc2ltcGxlVGVzdCkKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxNUEQgeG1sbnM6eHNpPVwiaHR0cDovL3d3dy53My5vcmcvMjAwMS9YTUxTY2hlbWEtaW5zdGFuY2VcIiIKKyAgICAgICIgICAgIHhtbG5zPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTFcIiIKKyAgICAgICIgICAgIHhzaTpzY2hlbWFMb2NhdGlvbj1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExIERBU0gtTVBELnhzZFwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtb24tZGVtYW5kOjIwMTFcIiIKKyAgICAgICIgICAgIHR5cGU9XCJzdGF0aWNcIiIKKyAgICAgICIgICAgIG1pbkJ1ZmZlclRpbWU9XCJQVDEuNTAwU1wiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlBUMTM1Ljc0M1NcIj4iCisgICAgICAiICA8UGVyaW9kPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJhdWRpby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjE3MVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2b3JiaXNcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYXVkaW9TYW1wbGluZ1JhdGU9XCI0NDEwMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjEyOTU1M1wiPiIKKyAgICAgICIgICAgICAgIDxBdWRpb0NoYW5uZWxDb25maWd1cmF0aW9uIgorICAgICAgIiAgICAgICAgICAgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOjIzMDAzOjM6YXVkaW9fY2hhbm5lbF9jb25maWd1cmF0aW9uOjIwMTFcIiIKKyAgICAgICIgICAgICAgICAgIHZhbHVlPVwiMlwiIC8+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+YXVkaW8ud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjQ0NTItNDY4NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtNDQ1MVwiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgIDwvQWRhcHRhdGlvblNldD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwidmlkZW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIyNDJcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidnA5XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNDI2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0MFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjQ5MDIwOFwiPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPnZpZGVvLndlYm08L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRCYXNlIGluZGV4UmFuZ2U9XCIyMzQtNjgyXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC0yMzNcIiAvPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudEJhc2U+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisgIEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8ud2VibSIsIE5VTEwsIDUwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC92aWRlby53ZWJtIiwgTlVMTCwgOTAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCA1MDAwLCBOVUxMfSwKKyAgICB7InZpZGVvXzAwIiwgOTAwMCwgTlVMTH0KKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgdGVzdF9jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworCisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwgImh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLAorICAgICAgJnRlc3RfY2FsbGJhY2tzLCB0ZXN0RGF0YSk7CisgIGdfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3QgYW4gbXBkIHdpdGggMiBwZXJpb2RzCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAodGVzdFR3b1BlcmlvZHMpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8TVBEIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIiCisgICAgICAiICAgICB4bWxucz1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExXCIiCisgICAgICAiICAgICB4c2k6c2NoZW1hTG9jYXRpb249XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMSBEQVNILU1QRC54c2RcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW9uLWRlbWFuZDoyMDExXCIiCisgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCisgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUFQxLjUwMFNcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQVDMwMFNcIj4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIGR1cmF0aW9uPVwiUFQwLjFTXCI+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cImF1ZGlvL3dlYm1cIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgc3Vic2VnbWVudEFsaWdubWVudD1cInRydWVcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwiMTcxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcz1cInZvcmJpc1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBhdWRpb1NhbXBsaW5nUmF0ZT1cIjQ0MTAwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiMTI5NTUzXCI+IgorICAgICAgIiAgICAgICAgPEF1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24iCisgICAgICAiICAgICAgICAgICBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMVwiIgorICAgICAgIiAgICAgICAgICAgdmFsdWU9XCIyXCIgLz4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5hdWRpbzEud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjQ0NTItNDY4NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtNDQ1MVwiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgIDwvQWRhcHRhdGlvblNldD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwidmlkZW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIyNDJcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidnA5XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNDI2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0MFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjQ5MDIwOFwiPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPnZpZGVvMS53ZWJtPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50QmFzZSBpbmRleFJhbmdlPVwiMjM0LTY4MlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtMjMzXCIgLz4iCisgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgPC9BZGFwdGF0aW9uU2V0PiIKKyAgICAgICIgIDwvUGVyaW9kPiIKKyAgICAgICIgIDxQZXJpb2Q+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cImF1ZGlvL3dlYm1cIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgc3Vic2VnbWVudEFsaWdubWVudD1cInRydWVcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwiMTcxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcz1cInZvcmJpc1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBhdWRpb1NhbXBsaW5nUmF0ZT1cIjQ0MTAwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiMTI5NTUzXCI+IgorICAgICAgIiAgICAgICAgPEF1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24iCisgICAgICAiICAgICAgICAgICBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMVwiIgorICAgICAgIiAgICAgICAgICAgdmFsdWU9XCIyXCIgLz4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5hdWRpbzIud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjQ0NTItNDY4NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtNDQ1MVwiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgIDwvQWRhcHRhdGlvblNldD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwidmlkZW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIyNDJcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidnA5XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHdpZHRoPVwiNDI2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGhlaWdodD1cIjI0MFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjQ5MDIwOFwiPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPnZpZGVvMi53ZWJtPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50QmFzZSBpbmRleFJhbmdlPVwiMjM0LTY4MlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtMjMzXCIgLz4iCisgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8xLndlYm0iLCBOVUxMLCA1MDAxfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvdmlkZW8xLndlYm0iLCBOVUxMLCA5MDAxfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8yLndlYm0iLCBOVUxMLCA1MDAyfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvdmlkZW8yLndlYm0iLCBOVUxMLCA5MDAyfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJhdWRpb18wMCIsIDUwMDEsIE5VTEx9LAorICAgIHsidmlkZW9fMDAiLCA5MDAxLCBOVUxMfSwKKyAgICB7ImF1ZGlvXzAxIiwgNTAwMiwgTlVMTH0sCisgICAgeyJ2aWRlb18wMSIsIDkwMDIsIE5VTEx9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyB0ZXN0X2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBDT1BZX09VVFBVVF9URVNUX0RBVEEgKG91dHB1dFRlc3REYXRhLCB0ZXN0RGF0YSk7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfcmVjZWl2ZWRfZGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19zaXplX29mX3JlY2VpdmVkX2RhdGE7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgJnRlc3RfY2FsbGJhY2tzLCB0ZXN0RGF0YSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX0VORF9URVNUOworCisvKiB0ZXN0IHNldHRpbmcgYSBwcm9wZXJ0eSBvbiBhbiBvYmplY3QgKi8KKyNkZWZpbmUgdGVzdF9pbnRfcHJvcChvYmplY3QsIG5hbWUsIHZhbHVlKSBcCitkbyBcCit7IFwKKyAgaW50IHZhbCA9IHZhbHVlOyBcCisgIGludCB2YWxfYWZ0ZXI7IFwKKyAgZ19vYmplY3Rfc2V0IChvYmplY3QsIG5hbWUsIHZhbCwgTlVMTCk7IFwKKyAgZ19vYmplY3RfZ2V0IChvYmplY3QsIG5hbWUsICZ2YWxfYWZ0ZXIsIE5VTEwpOyBcCisgIGZhaWxfdW5sZXNzICh2YWxfYWZ0ZXIgPT0gdmFsLCAicHJvcGVydHkgY2hlY2sgZmFpbGVkIGZvciAlczogc2V0IHRvICVkLCBidXQgZ290ICVkIiwgXAorICAgICAgbmFtZSwgdmFsLCB2YWxfYWZ0ZXIpOyBcCit9IHdoaWxlICgwKQorCisjZGVmaW5lIHRlc3RfZmxvYXRfcHJvcChvYmplY3QsIG5hbWUsIHZhbHVlKSBcCitkbyBcCit7IFwKKyAgZmxvYXQgdmFsID0gdmFsdWU7IFwKKyAgZmxvYXQgdmFsX2FmdGVyOyBcCisgIGdfb2JqZWN0X3NldCAob2JqZWN0LCBuYW1lLCB2YWwsIE5VTEwpOyBcCisgIGdfb2JqZWN0X2dldCAob2JqZWN0LCBuYW1lLCAmdmFsX2FmdGVyLCBOVUxMKTsgXAorICBmYWlsX3VubGVzcyAodmFsX2FmdGVyID09IHZhbCwgInByb3BlcnR5IGNoZWNrIGZhaWxlZCBmb3IgJXM6IHNldCB0byAlZiwgYnV0IGdvdCAlZiIsIFwKKyAgICAgIG5hbWUsIHZhbCwgdmFsX2FmdGVyKTsgXAorfSB3aGlsZSAoMCkKKworLyogdGVzdCBzZXR0aW5nIGFuIGludmFsaWQgdmFsdWUgZm9yIGEgcHJvcGVydHkgb24gYW4gb2JqZWN0LgorICogRXhwZWN0IGFuIGFzc2VydCBhbmQgdGhlIHByb3BlcnR5IHRvIHJlbWFpbiB1bmNoYW5nZWQKKyAqLworI2RlZmluZSB0ZXN0X2ludmFsaWRfaW50X3Byb3Aob2JqZWN0LCBuYW1lLCB2YWx1ZSkgXAorZG8gXAoreyBcCisgIGludCB2YWxfYmVmb3JlOyBcCisgIGludCB2YWxfYWZ0ZXI7IFwKKyAgaW50IHZhbCA9IHZhbHVlOyBcCisgIGdfb2JqZWN0X2dldCAob2JqZWN0LCBuYW1lLCAmdmFsX2JlZm9yZSwgTlVMTCk7IFwKKyAgQVNTRVJUX1dBUk5JTkcgKGdfb2JqZWN0X3NldCAob2JqZWN0LCBuYW1lLCB2YWwsIE5VTEwpKTsgXAorICBnX29iamVjdF9nZXQgKG9iamVjdCwgbmFtZSwgJnZhbF9hZnRlciwgTlVMTCk7IFwKKyAgZmFpbF91bmxlc3MgKHZhbF9hZnRlciA9PSB2YWxfYmVmb3JlLCAicHJvcGVydHkgY2hlY2sgZmFpbGVkIGZvciAlczogYmVmb3JlICVkLCBhZnRlciAlZCIsIFwKKyAgICAgIG5hbWUsIHZhbF9iZWZvcmUsIHZhbF9hZnRlcik7IFwKK30gd2hpbGUgKDApCisKKyNkZWZpbmUgdGVzdF9pbnZhbGlkX2Zsb2F0X3Byb3Aob2JqZWN0LCBuYW1lLCB2YWx1ZSkgXAorZG8gXAoreyBcCisgIGZsb2F0IHZhbF9iZWZvcmU7IFwKKyAgZmxvYXQgdmFsX2FmdGVyOyBcCisgIGZsb2F0IHZhbCA9IHZhbHVlOyBcCisgIGdfb2JqZWN0X2dldCAob2JqZWN0LCBuYW1lLCAmdmFsX2JlZm9yZSwgTlVMTCk7IFwKKyAgQVNTRVJUX1dBUk5JTkcgKGdfb2JqZWN0X3NldCAob2JqZWN0LCBuYW1lLCB2YWwsIE5VTEwpKTsgXAorICBnX29iamVjdF9nZXQgKG9iamVjdCwgbmFtZSwgJnZhbF9hZnRlciwgTlVMTCk7IFwKKyAgZmFpbF91bmxlc3MgKHZhbF9hZnRlciA9PSB2YWxfYmVmb3JlLCAicHJvcGVydHkgY2hlY2sgZmFpbGVkIGZvciAlczogYmVmb3JlICVmLCBhZnRlciAlZiIsIFwKKyAgICAgIG5hbWUsIHZhbF9iZWZvcmUsIHZhbF9hZnRlcik7IFwKK30gd2hpbGUgKDApCisKK3N0YXRpYyB2b2lkCitzZXRBbmRUZXN0RGFzaFBhcmFtcyAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgLyogIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqIHRlc3REYXRhID0gKEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSopdXNlcl9kYXRhOyAqLworICBHT2JqZWN0ICpkYXNoZGVtdXggPSBHX09CSkVDVCAoZW5naW5lLT5kZW11eCk7CisKKyAgdGVzdF9pbnRfcHJvcCAoZGFzaGRlbXV4LCAiY29ubmVjdGlvbi1zcGVlZCIsIDEwMDApOworICB0ZXN0X2ludmFsaWRfaW50X3Byb3AgKGRhc2hkZW11eCwgImNvbm5lY3Rpb24tc3BlZWQiLCA0Mjk0OTY3ICsgMSk7CisKKyAgdGVzdF9mbG9hdF9wcm9wIChkYXNoZGVtdXgsICJiaXRyYXRlLWxpbWl0IiwgMSk7CisgIHRlc3RfaW52YWxpZF9mbG9hdF9wcm9wIChkYXNoZGVtdXgsICJiaXRyYXRlLWxpbWl0IiwgMi4xKTsKKworICB0ZXN0X2ludF9wcm9wIChkYXNoZGVtdXgsICJtYXgtYnVmZmVyaW5nLXRpbWUiLCAxNSk7CisgIHRlc3RfaW52YWxpZF9pbnRfcHJvcCAoZGFzaGRlbXV4LCAibWF4LWJ1ZmZlcmluZy10aW1lIiwgMSk7CisKKyAgdGVzdF9mbG9hdF9wcm9wIChkYXNoZGVtdXgsICJiYW5kd2lkdGgtdXNhZ2UiLCAwLjUpOworICB0ZXN0X2ludmFsaWRfZmxvYXRfcHJvcCAoZGFzaGRlbXV4LCAiYmFuZHdpZHRoLXVzYWdlIiwgMik7CisKKyAgdGVzdF9pbnRfcHJvcCAoZGFzaGRlbXV4LCAibWF4LWJpdHJhdGUiLCAxMDAwKTsKKyAgdGVzdF9pbnZhbGlkX2ludF9wcm9wIChkYXNoZGVtdXgsICJtYXgtYml0cmF0ZSIsIDEwKTsKK30KKworLyoKKyAqIFRlc3Qgc2V0dGluZyBwYXJhbWV0ZXJzCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAodGVzdFBhcmFtZXRlcnMpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8TVBEIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIiCisgICAgICAiICAgICB4bWxucz1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExXCIiCisgICAgICAiICAgICB4c2k6c2NoZW1hTG9jYXRpb249XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMSBEQVNILU1QRC54c2RcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW9uLWRlbWFuZDoyMDExXCIiCisgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCisgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUFQxLjUwMFNcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQVDEzNS43NDNTXCI+IgorICAgICAgIiAgPFBlcmlvZD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwiYXVkaW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIxNzFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidm9yYmlzXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvU2FtcGxpbmdSYXRlPVwiNDQxMDBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoU0FQPVwiMVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGg9XCIxMjk1NTNcIj4iCisgICAgICAiICAgICAgICA8QXVkaW9DaGFubmVsQ29uZmlndXJhdGlvbiIKKyAgICAgICIgICAgICAgICAgIHNjaGVtZUlkVXJpPVwidXJuOm1wZWc6ZGFzaDoyMzAwMzozOmF1ZGlvX2NoYW5uZWxfY29uZmlndXJhdGlvbjoyMDExXCIiCisgICAgICAiICAgICAgICAgICB2YWx1ZT1cIjJcIiAvPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPmF1ZGlvLndlYm08L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRCYXNlIGluZGV4UmFuZ2U9XCI0NDUyLTQ2ODZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlRXhhY3Q9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgICAgICA8SW5pdGlhbGl6YXRpb24gcmFuZ2U9XCIwLTQ0NTFcIiAvPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudEJhc2U+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9hdWRpby53ZWJtIiwgTlVMTCwgNTAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCA1MDAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgdGVzdF9jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5wcmVfdGVzdCA9IHNldEFuZFRlc3REYXNoUGFyYW1zOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsICJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwKKyAgICAgICZ0ZXN0X2NhbGxiYWNrcywgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3Qgc2Vla2luZworICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrKQoreworICBjb25zdCBnY2hhciAqbXBkID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz4iCisgICAgICAiPE1QRCB4bWxuczp4c2k9XCJodHRwOi8vd3d3LnczLm9yZy8yMDAxL1hNTFNjaGVtYS1pbnN0YW5jZVwiIgorICAgICAgIiAgICAgeG1sbnM9XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMVwiIgorICAgICAgIiAgICAgeHNpOnNjaGVtYUxvY2F0aW9uPVwidXJuOm1wZWc6REFTSDpzY2hlbWE6TVBEOjIwMTEgREFTSC1NUEQueHNkXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1vbi1kZW1hbmQ6MjAxMVwiIgorICAgICAgIiAgICAgdHlwZT1cInN0YXRpY1wiIgorICAgICAgIiAgICAgbWluQnVmZmVyVGltZT1cIlBUMS41MDBTXCIiCisgICAgICAiICAgICBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uPVwiUFQxMzUuNzQzU1wiPiIKKyAgICAgICIgIDxQZXJpb2Q+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cImF1ZGlvL3dlYm1cIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgc3Vic2VnbWVudEFsaWdubWVudD1cInRydWVcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwiMTcxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGNvZGVjcz1cInZvcmJpc1wiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBhdWRpb1NhbXBsaW5nUmF0ZT1cIjQ0MTAwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIHN0YXJ0V2l0aFNBUD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYmFuZHdpZHRoPVwiMTI5NTUzXCI+IgorICAgICAgIiAgICAgICAgPEF1ZGlvQ2hhbm5lbENvbmZpZ3VyYXRpb24iCisgICAgICAiICAgICAgICAgICBzY2hlbWVJZFVyaT1cInVybjptcGVnOmRhc2g6MjMwMDM6MzphdWRpb19jaGFubmVsX2NvbmZpZ3VyYXRpb246MjAxMVwiIgorICAgICAgIiAgICAgICAgICAgdmFsdWU9XCIyXCIgLz4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5hdWRpby53ZWJtPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50QmFzZSBpbmRleFJhbmdlPVwiNDQ1Mi00Njg2XCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZUV4YWN0PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICAgICAgPEluaXRpYWxpemF0aW9uIHJhbmdlPVwiMC00NDUxXCIgLz4iCisgICAgICAiICAgICAgICA8L1NlZ21lbnRCYXNlPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworICBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLCAoZ3VpbnQ4ICopIG1wZCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L2F1ZGlvLndlYm0iLCBOVUxMLCAxMDAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCAxMDAwMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworCisgIC8qIG1lZGlhIHNlZ21lbnQgc3RhcnRzIGF0IDQ2ODcKKyAgICogSXNzdWUgYSBzZWVrIHJlcXVlc3QgYWZ0ZXIgbWVkaWEgc2VnbWVudCBoYXMgc3RhcnRlZCB0byBiZSBkb3dubG9hZGVkCisgICAqIG9uIHRoZSBmaXJzdCBwYWQgbGlzdGVkIGluIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtRGF0YSBhbmQgdGhlCisgICAqIGZpcnN0IGNodW5rIG9mIGF0IGxlYXN0IG9uZSBieXRlIGhhcyBhbHJlYWR5IGFycml2ZWQgaW4gQXBwU2luaworICAgKi8KKyAgdGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlayA9IDQ2ODcgKyAxOworCisgIC8qIHNlZWsgdG8gNW1zLgorICAgKiBCZWNhdXNlIHRoZXJlIGlzIG9ubHkgb25lIGZyYWdtZW50LCB3ZSBleHBlY3QgdGhlIHdob2xlIGZpbGUgdG8gYmUKKyAgICogZG93bmxvYWRlZCBhZ2FpbgorICAgKi8KKyAgdGVzdERhdGEtPnNlZWtfZXZlbnQgPQorICAgICAgZ3N0X2V2ZW50X25ld19zZWVrICgxLjAsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX0tFWV9VTklULCBHU1RfU0VFS19UWVBFX1NFVCwKKyAgICAgIDUgKiBHU1RfTVNFQ09ORCwgR1NUX1NFRUtfVFlQRV9OT05FLCAwKTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NlZWsgKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCisjZGVmaW5lIFNFR01FTlRfU0laRSAxMDAwMAorc3RhdGljIHZvaWQKK3J1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKGdkb3VibGUgcmF0ZSwgR3N0U2Vla1R5cGUgc3RhcnRfdHlwZSwKKyAgICBndWludDY0IHNlZWtfc3RhcnQsIEdzdFNlZWtUeXBlIHN0b3BfdHlwZSwgZ3VpbnQ2NCBzZWVrX3N0b3AsCisgICAgR3N0U2Vla0ZsYWdzIGZsYWdzLCBndWludDY0IHNlZ21lbnRfc3RhcnQsIGd1aW50NjQgc2VnbWVudF9zdG9wLAorICAgIGdpbnQgc2VnbWVudHMsIGdpbnQgc2Vla190aHJlc2hvbGRfYnl0ZXMpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8TVBEIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIiCisgICAgICAiICAgICB4bWxucz1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExXCIiCisgICAgICAiICAgICB4c2k6c2NoZW1hTG9jYXRpb249XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMSBEQVNILU1QRC54c2RcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW9uLWRlbWFuZDoyMDExXCIiCisgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCisgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUFQxLjUwMFNcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQVDEzNS43NDNTXCI+IgorICAgICAgIiAgPFBlcmlvZD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0ICIKKyAgICAgICIgICAgICAgIG1pbWVUeXBlPVwiYXVkaW8vbXA0XCIgbWluQmFuZHdpZHRoPVwiMTI4MDAwXCIgIgorICAgICAgIiAgICAgICAgbWF4QmFuZHdpZHRoPVwiMTI4MDAwXCIgc2VnbWVudEFsaWdubWVudD1cInRydWVcIj4iCisgICAgICAiICAgICAgPFNlZ21lbnRUZW1wbGF0ZSB0aW1lc2NhbGU9XCI0ODAwMFwiICIKKyAgICAgICIgICAgICAgICAgaW5pdGlhbGl6YXRpb249XCJpbml0LSRSZXByZXNlbnRhdGlvbklEJC5tcDRcIiAiCisgICAgICAiICAgICAgICAgIG1lZGlhPVwiJFJlcHJlc2VudGF0aW9uSUQkLSROdW1iZXIkLm1wNFwiICIKKyAgICAgICIgICAgICAgICAgc3RhcnROdW1iZXI9XCIxXCI+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRUaW1lbGluZT4iCisgICAgICAiICAgICAgICAgIDxTIHQ9XCIwXCIgZD1cIjQ4MDAwXCIgLz4gIgorICAgICAgIiAgICAgICAgICA8UyBkPVwiNDgwMDBcIiAvPiAiCisgICAgICAiICAgICAgICAgIDxTIGQ9XCI0ODAwMFwiIC8+ICIKKyAgICAgICIgICAgICAgICAgPFMgZD1cIjQ4MDAwXCIgLz4gIgorICAgICAgIiAgICAgICAgPC9TZWdtZW50VGltZWxpbmU+IgorICAgICAgIiAgICAgIDwvU2VnbWVudFRlbXBsYXRlPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCJhdWRpb1wiIGJhbmR3aWR0aD1cIjEyODAwMFwiICIKKyAgICAgICIgICAgICAgICAgY29kZWNzPVwibXA0YS40MC4yXCIgYXVkaW9TYW1wbGluZ1JhdGU9XCI0ODAwMFwiPiAiCisgICAgICAiICAgICAgICA8QXVkaW9DaGFubmVsQ29uZmlndXJhdGlvbiAiCisgICAgICAiICAgICAgICAgICAgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOjIzMDAzOjM6YXVkaW9fY2hhbm5lbF9jb25maWd1cmF0aW9uOjIwMTFcIiIKKyAgICAgICIgICAgICAgICAgICB2YWx1ZT1cIjJcIj4gIgorICAgICAgIiAgICAgICAgPC9BdWRpb0NoYW5uZWxDb25maWd1cmF0aW9uPiAiCisgICAgICAiICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisgIEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvaW5pdC1hdWRpby5tcDQiLCBOVUxMLCAxMDAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L2F1ZGlvLTEubXA0IiwgTlVMTCwgMTAwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9hdWRpby0yLm1wNCIsIE5VTEwsIDEwMDAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8tMy5tcDQiLCBOVUxMLCAxMDAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L2F1ZGlvLTQubXA0IiwgTlVMTCwgMTAwMDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICAvKiAxIGZyb20gdGhlIGluaXQgc2VnbWVudCAqLworICAgIHsiYXVkaW9fMDAiLCAoc2VnbWVudHMgPyAxICsgc2VnbWVudHMgOiAwKSAqIDEwMDAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBDT1BZX09VVFBVVF9URVNUX0RBVEEgKG91dHB1dFRlc3REYXRhLCB0ZXN0RGF0YSk7CisKKyAgLyogbWVkaWEgc2VnbWVudCBzdGFydHMgYXQgNDY4NworICAgKiBJc3N1ZSBhIHNlZWsgcmVxdWVzdCBhZnRlciBtZWRpYSBzZWdtZW50IGhhcyBzdGFydGVkIHRvIGJlIGRvd25sb2FkZWQKKyAgICogb24gdGhlIGZpcnN0IHBhZCBsaXN0ZWQgaW4gR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW1EYXRhIGFuZCB0aGUKKyAgICogZmlyc3QgY2h1bmsgb2YgYXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGFscmVhZHkgYXJyaXZlZCBpbiBBcHBTaW5rCisgICAqLworICBpZiAoc2Vla190aHJlc2hvbGRfYnl0ZXMpCisgICAgdGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlayA9IHNlZWtfdGhyZXNob2xkX2J5dGVzOworICBlbHNlCisgICAgdGVzdERhdGEtPnRocmVzaG9sZF9mb3Jfc2VlayA9IDQ2ODcgKyAxOworCisgIC8qIEZJWE1FIGhhY2sgdG8gYXZvaWQgaGF2aW5nIGEgMCBzZXFudW0gKi8KKyAgZ3N0X3V0aWxfc2VxbnVtX25leHQgKCk7CisKKyAgLyogc2VlayB0byA1bXMuCisgICAqIEJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgZnJhZ21lbnQsIHdlIGV4cGVjdCB0aGUgd2hvbGUgZmlsZSB0byBiZQorICAgKiBkb3dubG9hZGVkIGFnYWluCisgICAqLworICB0ZXN0RGF0YS0+c2Vla19ldmVudCA9CisgICAgICBnc3RfZXZlbnRfbmV3X3NlZWsgKHJhdGUsIEdTVF9GT1JNQVRfVElNRSwgZmxhZ3MsIHN0YXJ0X3R5cGUsCisgICAgICBzZWVrX3N0YXJ0LCBzdG9wX3R5cGUsIHNlZWtfc3RvcCk7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZWVrIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtLZXlVbml0UG9zaXRpb24pCit7CisgIC8qIFNlZWsgdG8gMS41cyB3aXRoIGtleSB1bml0LCBpdCBzaG91bGQgZ28gYmFjayB0byAxLjBzLiAzIHNlZ21lbnRzIHdpbGwgYmUKKyAgICogcHVzaGVkICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfS0VZX1VOSVQsCisgICAgICAxMDAwICogR1NUX01TRUNPTkQsIC0xLCAzLCAwKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1VwZGF0ZVN0b3BQb3NpdGlvbikKK3sKKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX05PTkUsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAzMDAwICogR1NUX01TRUNPTkQsIDAsIDAsIDMwMDAgKiBHU1RfTVNFQ09ORCwgMywgMCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrUG9zaXRpb24pCit7CisgIC8qIFNlZWsgdG8gMS41cyB3aXRob3V0IGtleSB1bml0LCBpdCBzaG91bGQga2VlcCB0aGUgMS41cywgYnV0IHN0aWxsIHB1c2gKKyAgICogZnJvbSB0aGUgMXN0IHNlZ21lbnQsIHNvIDMgc2VnbWVudHMgd2lsbCBiZQorICAgKiBwdXNoZWQgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNILCAxNTAwICogR1NUX01TRUNPTkQsIC0xLCAzLCAwKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtTbmFwQmVmb3JlUG9zaXRpb24pCit7CisgIC8qIFNlZWsgdG8gMS41cywgc25hcCBiZWZvcmUsIGl0IGdvIHRvIDFzICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUsCisgICAgICAxMDAwICogR1NUX01TRUNPTkQsIC0xLCAzLCAwKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1NuYXBBZnRlclBvc2l0aW9uKQoreworICAvKiBTZWVrIHRvIDEuNXMgd2l0aCBzbmFwIGFmdGVyLCBpdCBzaG91bGQgbW92ZSB0byAycyAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIsCisgICAgICAyMDAwICogR1NUX01TRUNPTkQsIC0xLCAyLCAwKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1NuYXBCZWZvcmVTYW1lUG9zaXRpb24pCit7CisgIC8qIFNuYXAgc2VlayB3aXRob3V0IHBvc2l0aW9uICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9OT05FLCBHU1RfQ0xPQ0tfVElNRV9OT05FLAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSwKKyAgICAgIDIgKiBHU1RfTVNFQ09ORCwgLTEsIDIsIFNFR01FTlRfU0laRSAqIDMgKyAxKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1NuYXBBZnRlclNhbWVQb3NpdGlvbikKK3sKKyAgLyogU25hcCBzZWVrIHdpdGhvdXQgcG9zaXRpb24gKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX05PTkUsIEdTVF9DTE9DS19USU1FX05PTkUsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIsCisgICAgICAzICogR1NUX01TRUNPTkQsIC0xLCAxLCBTRUdNRU5UX1NJWkUgKiAzICsgMSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0UmV2ZXJzZVNlZWtTbmFwQmVmb3JlUG9zaXRpb24pCit7CisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKC0xLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgMjUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9CRUZPUkUsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIDMwMDAgKiBHU1RfTVNFQ09ORCwgMiwgMCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFJldmVyc2VTZWVrU25hcEFmdGVyUG9zaXRpb24pCit7CisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKC0xLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX1NFVCwgMjUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUiwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgMjAwMCAqIEdTVF9NU0VDT05ELCAxLCAwKTsKK30KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgdm9pZAordGVzdERvd25sb2FkRXJyb3JNZXNzYWdlQ2FsbGJhY2sgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR0Vycm9yICplcnIgPSBOVUxMOworICBnY2hhciAqZGJnX2luZm8gPSBOVUxMOworCisgIGZhaWxfdW5sZXNzIChHU1RfTUVTU0FHRV9UWVBFIChtc2cpID09IEdTVF9NRVNTQUdFX0VSUk9SKTsKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1zZywgJmVyciwgJmRiZ19pbmZvKTsKKyAgR1NUX0RFQlVHICgiRXJyb3IgZnJvbSBlbGVtZW50ICVzIDogJXNcbiIsCisgICAgICBHU1RfT0JKRUNUX05BTUUgKG1zZy0+c3JjKSwgZXJyLT5tZXNzYWdlKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX3N0cmluZyAoR1NUX09CSkVDVF9OQU1FIChtc2ctPnNyYyksIERFTVVYX0VMRU1FTlRfTkFNRSk7CisgIC8qR1NUX0RFQlVHICgiZGJnX2luZm89JXNcbiIsIGRiZ19pbmZvKTsgKi8KKyAgZ19lcnJvcl9mcmVlIChlcnIpOworICBnX2ZyZWUgKGRiZ19pbmZvKTsKKyAgZ19tYWluX2xvb3BfcXVpdCAoZW5naW5lLT5sb29wKTsKK30KKworLyoKKyAqIFRlc3QgZXJyb3IgY2FzZSBvZiBmYWlsaW5nIHRvIGRvd25sb2FkIGEgc2VnbWVudAorICovCitHU1RfU1RBUlRfVEVTVCAodGVzdERvd25sb2FkRXJyb3IpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8TVBEIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIiCisgICAgICAiICAgICB4bWxucz1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExXCIiCisgICAgICAiICAgICB4c2k6c2NoZW1hTG9jYXRpb249XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMSBEQVNILU1QRC54c2RcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW9uLWRlbWFuZDoyMDExXCIiCisgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCisgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUFQxLjUwMFNcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQVDAuNVNcIj4iCisgICAgICAiICA8UGVyaW9kPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJhdWRpby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjE3MVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2b3JiaXNcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYXVkaW9TYW1wbGluZ1JhdGU9XCI0NDEwMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjEyOTU1M1wiPiIKKyAgICAgICIgICAgICAgIDxBdWRpb0NoYW5uZWxDb25maWd1cmF0aW9uIgorICAgICAgIiAgICAgICAgICAgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOjIzMDAzOjM6YXVkaW9fY2hhbm5lbF9jb25maWd1cmF0aW9uOjIwMTFcIiIKKyAgICAgICIgICAgICAgICAgIHZhbHVlPVwiMlwiIC8+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+YXVkaW9fZmlsZV9ub3RfYXZhaWxhYmxlLndlYm08L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRCYXNlIGluZGV4UmFuZ2U9XCI0NDUyLTQ2ODZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlRXhhY3Q9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgICAgICA8SW5pdGlhbGl6YXRpb24gcmFuZ2U9XCIwLTQ0NTFcIiAvPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudEJhc2U+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7ImF1ZGlvXzAwIiwgMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIHRlc3RfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIHRlc3RfY2FsbGJhY2tzLmJ1c19lcnJvcl9tZXNzYWdlID0gdGVzdERvd25sb2FkRXJyb3JNZXNzYWdlQ2FsbGJhY2s7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLCAiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsCisgICAgICAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qIGdlbmVyYXRlIHF1ZXJpZXMgdG8gYWRhcHRpdmUgZGVtdXggKi8KK3N0YXRpYyBnYm9vbGVhbgordGVzdFF1ZXJ5Q2hlY2tEYXRhUmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHTGlzdCAqcGFkczsKKyAgR3N0UGFkICpwYWQ7CisgIEdzdFF1ZXJ5ICpxdWVyeTsKKyAgZ2Jvb2xlYW4gcmV0OworICBnaW50NjQgZHVyYXRpb247CisgIGdib29sZWFuIHNlZWthYmxlOworICBnaW50NjQgc2VnbWVudF9zdGFydDsKKyAgZ2ludDY0IHNlZ21lbnRfZW5kOworICBnY2hhciAqdXJpOworICBnY2hhciAqcmVkaXJlY3RfdXJpOworICBnYm9vbGVhbiByZWRpcmVjdF9wZXJtYW5lbnQ7CisKKyAgcGFkcyA9IEdTVF9FTEVNRU5UX1BBRFMgKHN0cmVhbS0+YXBwc2luayk7CisKKyAgLyogQXBwU2luayBzaG91bGQgaGF2ZSBvbmx5IDEgcGFkICovCisgIGZhaWxfdW5sZXNzIChwYWRzICE9IE5VTEwpOworICBmYWlsX3VubGVzcyAoZ19saXN0X2xlbmd0aCAocGFkcykgPT0gMSk7CisgIHBhZCA9IEdTVF9QQUQgKHBhZHMtPmRhdGEpOworCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19kdXJhdGlvbiAoR1NUX0ZPUk1BVF9USU1FKTsKKyAgcmV0ID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKKyAgZmFpbF91bmxlc3MgKHJldCA9PSBUUlVFKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2R1cmF0aW9uIChxdWVyeSwgTlVMTCwgJmR1cmF0aW9uKTsKKyAgZmFpbF91bmxlc3MgKGR1cmF0aW9uID09IDEzNTc0MyAqIEdTVF9NU0VDT05EKTsKKyAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisKKyAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3NlZWtpbmcgKEdTVF9GT1JNQVRfVElNRSk7CisgIHJldCA9IGdzdF9wYWRfcGVlcl9xdWVyeSAocGFkLCBxdWVyeSk7CisgIGZhaWxfdW5sZXNzIChyZXQgPT0gVFJVRSk7CisgIGdzdF9xdWVyeV9wYXJzZV9zZWVraW5nIChxdWVyeSwgTlVMTCwgJnNlZWthYmxlLCAmc2VnbWVudF9zdGFydCwKKyAgICAgICZzZWdtZW50X2VuZCk7CisgIGZhaWxfdW5sZXNzIChzZWVrYWJsZSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKHNlZ21lbnRfc3RhcnQgPT0gMCk7CisgIGZhaWxfdW5sZXNzIChzZWdtZW50X2VuZCA9PSBkdXJhdGlvbik7CisgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld191cmkgKCk7CisgIHJldCA9IGdzdF9wYWRfcGVlcl9xdWVyeSAocGFkLCBxdWVyeSk7CisgIGZhaWxfdW5sZXNzIChyZXQgPT0gVFJVRSk7CisgIGdzdF9xdWVyeV9wYXJzZV91cmkgKHF1ZXJ5LCAmdXJpKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX3VyaV9yZWRpcmVjdGlvbiAocXVlcnksICZyZWRpcmVjdF91cmkpOworICBnc3RfcXVlcnlfcGFyc2VfdXJpX3JlZGlyZWN0aW9uX3Blcm1hbmVudCAocXVlcnksICZyZWRpcmVjdF9wZXJtYW5lbnQpOworICBmYWlsX3VubGVzcyAoc3RyY21wICh1cmksICJodHRwOi8vdW5pdC50ZXN0L3Rlc3QubXBkIikgPT0gMCk7CisgIC8qIGFkYXB0aXZlIGRlbXV4IGRvZXMgbm90IHJlcGx5IHdpdGggcmVkaXJlY3QgaW5mb3JtYXRpb24gKi8KKyAgZmFpbF91bmxlc3MgKHJlZGlyZWN0X3VyaSA9PSBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHJlZGlyZWN0X3Blcm1hbmVudCA9PSBGQUxTRSk7CisgIGdfZnJlZSAodXJpKTsKKyAgZ19mcmVlIChyZWRpcmVjdF91cmkpOworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICByZXR1cm4gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YSAoZW5naW5lLAorICAgICAgc3RyZWFtLCBidWZmZXIsIHVzZXJfZGF0YSk7Cit9CisKKy8qCisgKiBUZXN0IHF1ZXJpZXMKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0UXVlcnkpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8TVBEIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIiCisgICAgICAiICAgICB4bWxucz1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExXCIiCisgICAgICAiICAgICB4c2k6c2NoZW1hTG9jYXRpb249XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMSBEQVNILU1QRC54c2RcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW9uLWRlbWFuZDoyMDExXCIiCisgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCisgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUFQxLjUwMFNcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQVDEzNS43NDNTXCI+IgorICAgICAgIiAgPFBlcmlvZD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwiYXVkaW8vd2VibVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICBzdWJzZWdtZW50QWxpZ25tZW50PVwidHJ1ZVwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCIxNzFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgY29kZWNzPVwidm9yYmlzXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGF1ZGlvU2FtcGxpbmdSYXRlPVwiNDQxMDBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgc3RhcnRXaXRoU0FQPVwiMVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBiYW5kd2lkdGg9XCIxMjk1NTNcIj4iCisgICAgICAiICAgICAgICA8QXVkaW9DaGFubmVsQ29uZmlndXJhdGlvbiIKKyAgICAgICIgICAgICAgICAgIHNjaGVtZUlkVXJpPVwidXJuOm1wZWc6ZGFzaDoyMzAwMzozOmF1ZGlvX2NoYW5uZWxfY29uZmlndXJhdGlvbjoyMDExXCIiCisgICAgICAiICAgICAgICAgICB2YWx1ZT1cIjJcIiAvPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPmF1ZGlvLndlYm08L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRCYXNlIGluZGV4UmFuZ2U9XCI0NDUyLTQ2ODZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlRXhhY3Q9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgICAgICA8SW5pdGlhbGl6YXRpb24gcmFuZ2U9XCIwLTQ0NTFcIiAvPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudEJhc2U+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisgIEdzdERhc2hEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvYXVkaW8ud2VibSIsIE5VTEwsIDUwMDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7ImF1ZGlvXzAwIiwgNTAwMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIHRlc3RfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9kYXNoZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2Rhc2hkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0gdGVzdFF1ZXJ5Q2hlY2tEYXRhUmVjZWl2ZWQ7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLCAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCit0ZXN0X2ZyYWdtZW50X2Rvd25sb2FkX2Vycm9yX3NyY19jcmVhdGUgKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGd1aW50NjQgb2Zmc2V0LAorICAgIGd1aW50IGxlbmd0aCwgR3N0QnVmZmVyICoqIHJldGJ1ZiwgZ3BvaW50ZXIgY29udGV4dCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBjb25zdCBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9CisgICAgICAoY29uc3QgR3N0RGFzaERlbXV4VGVzdElucHV0RGF0YSAqKSBjb250ZXh0OworICBmYWlsX3VubGVzcyAoaW5wdXQgIT0gTlVMTCk7CisgIGlmICghZ19zdHJfaGFzX3N1ZmZpeCAoaW5wdXQtPnVyaSwgIi5tcGQiKSAmJiBvZmZzZXQgPiAyMDAwKSB7CisgICAgR1NUX0RFQlVHICgibmV0d29ya19lcnJvciAlcyAlIiBHX0dVSU5UNjRfRk9STUFUICIgQCAlZCIsCisgICAgICAgIGlucHV0LT51cmksIG9mZnNldCwgMjAwMCk7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIFJFQUQsCisgICAgICAgICgoIkEgbmV0d29yayBlcnJvciBvY2N1cnJlZCwgb3IgdGhlIHNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5LiIpKSwgKCJBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQsIG9yIHRoZSBzZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRseS4iKSk7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisgIHJldHVybiBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX2NyZWF0ZSAoc3JjLCBvZmZzZXQsIGxlbmd0aCwgcmV0YnVmLCBjb250ZXh0LAorICAgICAgdXNlcl9kYXRhKTsKK30KKworLyogZnVuY3Rpb24gdG8gY2hlY2sgdG90YWwgc2l6ZSBvZiBkYXRhIHJlY2VpdmVkIGJ5IEFwcFNpbmsKKyAqIHdpbGwgYmUgY2FsbGVkIHdoZW4gQXBwU2luayByZWNlaXZlcyBlb3MuCisgKi8KK3N0YXRpYyB2b2lkCit0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yQ2hlY2tTaXplT2ZEYXRhUmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICoKKyAgICBlbmdpbmUsIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICp0ZXN0T3V0cHV0U3RyZWFtRGF0YTsKKworICB0ZXN0T3V0cHV0U3RyZWFtRGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9maW5kX3Rlc3RfZGF0YV9ieV9zdHJlYW0gKHRlc3REYXRhLCBzdHJlYW0sIE5VTEwpOworICBmYWlsX3VubGVzcyAodGVzdE91dHB1dFN0cmVhbURhdGEgIT0gTlVMTCk7CisKKyAgLyogZXhwZWN0IHRvIHJlY2VpdmUgbW9yZSB0aGFuIDAgKi8KKyAgZmFpbF91bmxlc3MgKHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSA+IDAsCisgICAgICAic2l6ZSB2YWxpZGF0aW9uIGZhaWxlZCBmb3IgJXMsIGV4cGVjdGVkID4gMCwgcmVjZWl2ZWQgJWQiLAorICAgICAgdGVzdE91dHB1dFN0cmVhbURhdGEtPm5hbWUsIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSk7CisKKyAgLyogZXhwZWN0IHRvIHJlY2VpdmUgbGVzcyB0aGFuIGZpbGUgc2l6ZSAqLworICBmYWlsX3VubGVzcyAoc3RyZWFtLT50b3RhbF9yZWNlaXZlZF9zaXplIDwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5leHBlY3RlZF9zaXplLAorICAgICAgInNpemUgdmFsaWRhdGlvbiBmYWlsZWQgZm9yICVzLCBleHBlY3RlZCA8ICVkIHJlY2VpdmVkICVkIiwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5uYW1lLCB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwKKyAgICAgIHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSk7Cit9CisKKy8qCisgKiBUZXN0IGZyYWdtZW50IGRvd25sb2FkIGVycm9yCisgKiBMZXQgdGhlIGFkYXB0aXZlIGRlbXV4IGRvd25sb2FkIGEgZmV3IGJ5dGVzLCB0aGVuIGluc3RydWN0IHRoZQorICogR3N0VGVzdEhUVFBTcmMgZWxlbWVudCB0byBnZW5lcmF0ZSBhbiBlcnJvci4KKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RGcmFnbWVudERvd25sb2FkRXJyb3IpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8TVBEIHhtbG5zOnhzaT1cImh0dHA6Ly93d3cudzMub3JnLzIwMDEvWE1MU2NoZW1hLWluc3RhbmNlXCIiCisgICAgICAiICAgICB4bWxucz1cInVybjptcGVnOkRBU0g6c2NoZW1hOk1QRDoyMDExXCIiCisgICAgICAiICAgICB4c2k6c2NoZW1hTG9jYXRpb249XCJ1cm46bXBlZzpEQVNIOnNjaGVtYTpNUEQ6MjAxMSBEQVNILU1QRC54c2RcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW9uLWRlbWFuZDoyMDExXCIiCisgICAgICAiICAgICB0eXBlPVwic3RhdGljXCIiCisgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUFQxLjUwMFNcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQVDAuNVNcIj4iCisgICAgICAiICA8UGVyaW9kPiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJhdWRpby93ZWJtXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHN1YnNlZ21lbnRBbGlnbm1lbnQ9XCJ0cnVlXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIjE3MVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBjb2RlY3M9XCJ2b3JiaXNcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgYXVkaW9TYW1wbGluZ1JhdGU9XCI0NDEwMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBzdGFydFdpdGhTQVA9XCIxXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjEyOTU1M1wiPiIKKyAgICAgICIgICAgICAgIDxBdWRpb0NoYW5uZWxDb25maWd1cmF0aW9uIgorICAgICAgIiAgICAgICAgICAgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOjIzMDAzOjM6YXVkaW9fY2hhbm5lbF9jb25maWd1cmF0aW9uOjIwMTFcIiIKKyAgICAgICIgICAgICAgICAgIHZhbHVlPVwiMlwiIC8+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+YXVkaW8ud2VibTwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudEJhc2UgaW5kZXhSYW5nZT1cIjQ0NTItNDY4NlwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cInRydWVcIj4iCisgICAgICAiICAgICAgICAgIDxJbml0aWFsaXphdGlvbiByYW5nZT1cIjAtNDQ1MVwiIC8+IgorICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBHc3REYXNoRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvdGVzdC5tcGQiLCAoZ3VpbnQ4ICopIG1wZCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L2F1ZGlvLndlYm0iLCBOVUxMLCA1MDAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGh0dHBfc3JjX2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJhdWRpb18wMCIsIDUwMDAsIE5VTEx9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyB0ZXN0X2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfZGFzaGRlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IHRlc3RfZnJhZ21lbnRfZG93bmxvYWRfZXJyb3Jfc3JjX2NyZWF0ZTsKKyAgQ09QWV9PVVRQVVRfVEVTVF9EQVRBIChvdXRwdXRUZXN0RGF0YSwgdGVzdERhdGEpOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19lb3MgPSB0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yQ2hlY2tTaXplT2ZEYXRhUmVjZWl2ZWQ7CisgIC8qICB0ZXN0X2NhbGxiYWNrcy5kZW11eF9zZW50X2VvcyA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsgKi8KKworICB0ZXN0X2NhbGxiYWNrcy5idXNfZXJyb3JfbWVzc2FnZSA9IHRlc3REb3dubG9hZEVycm9yTWVzc2FnZUNhbGxiYWNrOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCBpbnB1dFRlc3REYXRhKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC90ZXN0Lm1wZCIsICZ0ZXN0X2NhbGxiYWNrcywgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK2Rhc2hfZGVtdXhfc3VpdGUgKHZvaWQpCit7CisgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgiZGFzaF9kZW11eCIpOworICBUQ2FzZSAqdGNfYmFzaWNUZXN0ID0gdGNhc2VfY3JlYXRlICgiYmFzaWNUZXN0Iik7CisKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgc2ltcGxlVGVzdCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RUd29QZXJpb2RzKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFBhcmFtZXRlcnMpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vlayk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrS2V5VW5pdFBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrVXBkYXRlU3RvcFBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtTbmFwQmVmb3JlUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1NuYXBBZnRlclBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtTbmFwQmVmb3JlU2FtZVBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtTbmFwQWZ0ZXJTYW1lUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0UmV2ZXJzZVNlZWtTbmFwQmVmb3JlUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0UmV2ZXJzZVNlZWtTbmFwQWZ0ZXJQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3REb3dubG9hZEVycm9yKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdEZyYWdtZW50RG93bmxvYWRFcnJvcik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RRdWVyeSk7CisKKyAgdGNhc2VfYWRkX3VuY2hlY2tlZF9maXh0dXJlICh0Y19iYXNpY1Rlc3QsIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NldHVwLAorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfdGVhcmRvd24pOworCisgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfYmFzaWNUZXN0KTsKKworICByZXR1cm4gczsKK30KKworR1NUX0NIRUNLX01BSU4gKGRhc2hfZGVtdXgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2Rhc2hfbXBkLmMKaW5kZXggMDVkOTcxMS4uMzQ4YjY1YyAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvZGFzaF9tcGQuYworKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXNoX21wZC5jCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAiICAgICBpZD1cInRlc3RJZFwiIgogICAgICAgIiAgICAgdHlwZT1cInN0YXRpY1wiIgogICAgICAgIiAgICAgYXZhaWxhYmlsaXR5U3RhcnRUaW1lPVwiMjAxNS0wMy0yNFQxOjEwOjUwXCIiCi0gICAgICAiICAgICBhdmFpbGFiaWxpdHlFbmRUaW1lPVwiMjAxNS0wMy0yNFQxOjEwOjUwXCIiCisgICAgICAiICAgICBhdmFpbGFiaWxpdHlFbmRUaW1lPVwiMjAxNS0wMy0yNFQxOjEwOjUwLjEyMzQ1NlwiIgogICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlAwWTFNMkRUMTJIMTBNMjAuNVNcIiIKICAgICAgICIgICAgIG1pbmltdW1VcGRhdGVQZXJpb2Q9XCJQMFkxTTJEVDEySDEwTTIwLjVTXCIiCiAgICAgICAiICAgICBtaW5CdWZmZXJUaW1lPVwiUDBZMU0yRFQxMkgxME0yMC41U1wiIgpAQCAtMTE5LDYgKzExOSw3IEBACiAgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9ob3VyIChhdmFpbGFiaWxpdHlTdGFydFRpbWUpLCAxKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21pbnV0ZSAoYXZhaWxhYmlsaXR5U3RhcnRUaW1lKSwgMTApOwogICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfc2Vjb25kIChhdmFpbGFiaWxpdHlTdGFydFRpbWUpLCA1MCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9taWNyb3NlY29uZCAoYXZhaWxhYmlsaXR5U3RhcnRUaW1lKSwgMCk7CiAKICAgYXZhaWxhYmlsaXR5RW5kVGltZSA9IG1wZGNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eUVuZFRpbWU7CiAgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF95ZWFyIChhdmFpbGFiaWxpdHlFbmRUaW1lKSwgMjAxNSk7CkBAIC0xMjcsMjcgKzEyOCwyOSBAQAogICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfaG91ciAoYXZhaWxhYmlsaXR5RW5kVGltZSksIDEpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbWludXRlIChhdmFpbGFiaWxpdHlFbmRUaW1lKSwgMTApOwogICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfc2Vjb25kIChhdmFpbGFiaWxpdHlFbmRUaW1lKSwgNTApOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbWljcm9zZWNvbmQgKGF2YWlsYWJpbGl0eUVuZFRpbWUpLAorICAgICAgMTIzNDU2KTsKIAotICBhc3NlcnRfZXF1YWxzX2ludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+bWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbiwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKIAotICBhc3NlcnRfZXF1YWxzX2ludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5taW5pbXVtVXBkYXRlUGVyaW9kLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+bWluaW11bVVwZGF0ZVBlcmlvZCwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKIAotICBhc3NlcnRfZXF1YWxzX2ludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT5taW5CdWZmZXJUaW1lLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+bWluQnVmZmVyVGltZSwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKIAotICBhc3NlcnRfZXF1YWxzX2ludDY0IChtcGRjbGllbnQtPm1wZF9ub2RlLT50aW1lU2hpZnRCdWZmZXJEZXB0aCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPnRpbWVTaGlmdEJ1ZmZlckRlcHRoLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOwogCi0gIGFzc2VydF9lcXVhbHNfaW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPnN1Z2dlc3RlZFByZXNlbnRhdGlvbkRlbGF5LAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+c3VnZ2VzdGVkUHJlc2VudGF0aW9uRGVsYXksCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgNTAwKSk7CiAKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+bWF4U2VnbWVudER1cmF0aW9uLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobXBkY2xpZW50LT5tcGRfbm9kZS0+bWF4U2VnbWVudER1cmF0aW9uLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOwogCi0gIGFzc2VydF9lcXVhbHNfaW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPm1heFN1YnNlZ21lbnREdXJhdGlvbiwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKG1wZGNsaWVudC0+bXBkX25vZGUtPm1heFN1YnNlZ21lbnREdXJhdGlvbiwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKIAogICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOwogfQpAQCAtMzAxLDEwICszMDQsMTAgQEAKICAgbWV0cmljc05vZGUgPSAoR3N0TWV0cmljc05vZGUgKikgbXBkY2xpZW50LT5tcGRfbm9kZS0+TWV0cmljcy0+ZGF0YTsKICAgYXNzZXJ0X2VxdWFsc19wb2ludGVyIChtZXRyaWNzTm9kZS0+bWV0cmljcywgTlVMTCk7CiAgIG1ldHJpY3NSYW5nZU5vZGUgPSAoR3N0TWV0cmljc1JhbmdlTm9kZSAqKSBtZXRyaWNzTm9kZS0+TWV0cmljc1Jhbmdlcy0+ZGF0YTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAobWV0cmljc1JhbmdlTm9kZS0+c3RhcnR0aW1lLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDUwMCkpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChtZXRyaWNzUmFuZ2VOb2RlLT5kdXJhdGlvbiwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCAxMjMpKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKG1ldHJpY3NSYW5nZU5vZGUtPnN0YXJ0dGltZSwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA1MDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKG1ldHJpY3NSYW5nZU5vZGUtPmR1cmF0aW9uLAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDEyMykpOwogCiAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7CiB9CkBAIC0zNjIsMTAgKzM2NSwxMCBAQAogCiAgIHBlcmlvZE5vZGUgPSAoR3N0UGVyaW9kTm9kZSAqKSBtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLT5kYXRhOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocGVyaW9kTm9kZS0+aWQsICJUZXN0SWQiKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgMTIzKSk7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPmR1cmF0aW9uLAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDEsIDIsIDEyLCAxMCwgMjAsIDc2NSkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMSwgMiwgMTIsIDEwLCAyMCwgMTIzKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChwZXJpb2ROb2RlLT5kdXJhdGlvbiwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAyLCAxMiwgMTAsIDIwLCA3NjUpKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKHBlcmlvZE5vZGUtPmJpdHN0cmVhbVN3aXRjaGluZywgMSk7CiAKICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKQEAgLTUzMSw3ICs1MzQsNyBAQAogICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgogICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgogICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgotICAgICAgIiAgPFBlcmlvZD48U2VnbWVudExpc3Q+PC9TZWdtZW50TGlzdD48L1BlcmlvZD48L01QRD4iOworICAgICAgIiAgPFBlcmlvZD48U2VnbWVudExpc3QgZHVyYXRpb249XCIxXCI+PC9TZWdtZW50TGlzdD48L1BlcmlvZD48L01QRD4iOwogCiAgIGdib29sZWFuIHJldDsKICAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBnc3RfbXBkX2NsaWVudF9uZXcgKCk7CkBAIC02MDAsNiArNjAzLDcgQEAKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKICAgICAgICIgIDxQZXJpb2Q+IgogICAgICAgIiAgICA8U2VnbWVudExpc3QgdGltZXNjYWxlPVwiMTBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgIGR1cmF0aW9uPVwiMVwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uVGltZU9mZnNldD1cIjExXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICBpbmRleFJhbmdlPVwiMjAtMjFcIiIKICAgICAgICIgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2VFeGFjdD1cImZhbHNlXCI+IgpAQCAtNzIxLDcgKzcyNSw3IEBACiAgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCiAgICAgICAiICA8UGVyaW9kPiIKLSAgICAgICIgICAgPFNlZ21lbnRMaXN0PiIKKyAgICAgICIgICAgPFNlZ21lbnRMaXN0IGR1cmF0aW9uPVwiMFwiPiIKICAgICAgICIgICAgICA8Qml0c3RyZWFtU3dpdGNoaW5nIHNvdXJjZVVSTD1cIlRlc3RTb3VyY2VVUkxcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlPVwiMTAwLTIwMFwiPiIKICAgICAgICIgICAgICA8L0JpdHN0cmVhbVN3aXRjaGluZz48L1NlZ21lbnRMaXN0PjwvUGVyaW9kPjwvTVBEPiI7CkBAIC03NTksNyArNzYzLDcgQEAKICAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiPiIKICAgICAgICIgIDxQZXJpb2Q+IgotICAgICAgIiAgICA8U2VnbWVudExpc3Q+IgorICAgICAgIiAgICA8U2VnbWVudExpc3QgZHVyYXRpb249XCIxXCI+IgogICAgICAgIiAgICAgIDxTZWdtZW50VVJMIG1lZGlhPVwiVGVzdE1lZGlhXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgbWVkaWFSYW5nZT1cIjEwMC0yMDBcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICBpbmRleD1cIlRlc3RJbmRleFwiIgpAQCAtODAxLDYgKzgwNSw3IEBACiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCiAgICAgICAiICA8UGVyaW9kPiIKICAgICAgICIgICAgPFNlZ21lbnRUZW1wbGF0ZSBtZWRpYT1cIlRlc3RNZWRpYVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGR1cmF0aW9uPVwiMFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4XCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb249XCJUZXN0SW5pdGlhbGl6YXRpb25cIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICBiaXRzdHJlYW1Td2l0Y2hpbmc9XCJUZXN0Qml0c3RyZWFtU3dpdGNoaW5nXCI+IgpAQCAtODc3LDYgKzg4Miw3IEBACiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCiAgICAgICAiICA8UGVyaW9kPiIKICAgICAgICIgICAgPFNlZ21lbnRUZW1wbGF0ZSB0aW1lc2NhbGU9XCIxMjM0NTZcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICBkdXJhdGlvbj1cIjFcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICBwcmVzZW50YXRpb25UaW1lT2Zmc2V0PVwiMTIzNDU2Nzg5XCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5kZXhSYW5nZT1cIjEwMC0yMDBcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICBpbmRleFJhbmdlRXhhY3Q9XCJ0cnVlXCI+IgpAQCAtOTk4LDcgKzEwMDQsNyBAQAogICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgogICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgogICAgICAgIiAgPFBlcmlvZD4iCi0gICAgICAiICAgIDxTZWdtZW50VGVtcGxhdGU+IgorICAgICAgIiAgICA8U2VnbWVudFRlbXBsYXRlIGR1cmF0aW9uPVwiMVwiPiIKICAgICAgICIgICAgICA8Qml0c3RyZWFtU3dpdGNoaW5nIHNvdXJjZVVSTD1cIlRlc3RTb3VyY2VVUkxcIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgIHJhbmdlPVwiMTAwLTIwMFwiPiIKICAgICAgICIgICAgICA8L0JpdHN0cmVhbVN3aXRjaGluZz48L1NlZ21lbnRUZW1wbGF0ZT48L1BlcmlvZD48L01QRD4iOwpAQCAtMTA3NCwxMCArMTA4MCwxNCBAQAogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+bWF4V2lkdGgsIDIwMDApOwogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+bWluSGVpZ2h0LCAxMTAwKTsKICAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGFkYXB0YXRpb25TZXQtPm1heEhlaWdodCwgMjEwMCk7Ci0gIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5taW5GcmFtZVJhdGUtPm51bSwgMjUpOwotICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+bWluRnJhbWVSYXRlLT5kZW4sIDEyMyk7Ci0gIGFzc2VydF9lcXVhbHNfdWludDY0IChhZGFwdGF0aW9uU2V0LT5tYXhGcmFtZVJhdGUtPm51bSwgMjYpOwotICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+bWF4RnJhbWVSYXRlLT5kZW4sIDEpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+UmVwcmVzZW50YXRpb25CYXNlLT5taW5GcmFtZVJhdGUtPm51bSwKKyAgICAgIDI1KTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGFkYXB0YXRpb25TZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+bWluRnJhbWVSYXRlLT5kZW4sCisgICAgICAxMjMpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+UmVwcmVzZW50YXRpb25CYXNlLT5tYXhGcmFtZVJhdGUtPm51bSwKKyAgICAgIDI2KTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGFkYXB0YXRpb25TZXQtPlJlcHJlc2VudGF0aW9uQmFzZS0+bWF4RnJhbWVSYXRlLT5kZW4sCisgICAgICAxKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGFkYXB0YXRpb25TZXQtPnNlZ21lbnRBbGlnbm1lbnQtPmZsYWcsIDEpOwogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoYWRhcHRhdGlvblNldC0+c2VnbWVudEFsaWdubWVudC0+dmFsdWUsIDIpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoYWRhcHRhdGlvblNldC0+c3Vic2VnbWVudEFsaWdubWVudC0+ZmxhZywgMCk7CkBAIC0xODk3LDcgKzE5MDcsNyBAQAogICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgogICAgICAgIiAgPFBlcmlvZD4iCiAgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0PiIKLSAgICAgICIgICAgICA8U2VnbWVudExpc3Q+PC9TZWdtZW50TGlzdD48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKyAgICAgICIgICAgICA8U2VnbWVudExpc3QgZHVyYXRpb249XCIxXCI+PC9TZWdtZW50TGlzdD48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKIAogICBnYm9vbGVhbiByZXQ7CiAgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gZ3N0X21wZF9jbGllbnRfbmV3ICgpOwpAQCAtMTkzMSw2ICsxOTQxLDcgQEAKICAgICAgICIgIDxQZXJpb2Q+IgogICAgICAgIiAgICA8QWRhcHRhdGlvblNldD4iCiAgICAgICAiICAgICAgPFNlZ21lbnRUZW1wbGF0ZSBtZWRpYT1cIlRlc3RNZWRpYVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249XCIxXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBpbmRleD1cIlRlc3RJbmRleFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb249XCJUZXN0SW5pdGlhbGl6YXRpb25cIiIKICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgIGJpdHN0cmVhbVN3aXRjaGluZz1cIlRlc3RCaXRzdHJlYW1Td2l0Y2hpbmdcIj4iCkBAIC0xOTcxLDExICsxOTgyLDEyIEBACiAgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCiAgICAgICAiICA8UGVyaW9kPiIKLSAgICAgICIgICAgPFNlZ21lbnRUZW1wbGF0ZSBtZWRpYT1cIlBhcmVudE1lZGlhXCIgIgorICAgICAgIiAgICA8U2VnbWVudFRlbXBsYXRlIG1lZGlhPVwiUGFyZW50TWVkaWFcIiBkdXJhdGlvbj1cIjFcIiAiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgaW5pdGlhbGl6YXRpb249XCJQYXJlbnRJbml0aWFsaXphdGlvblwiPiIKICAgICAgICIgICAgPC9TZWdtZW50VGVtcGxhdGU+IgogICAgICAgIiAgICA8QWRhcHRhdGlvblNldD4iCiAgICAgICAiICAgICAgPFNlZ21lbnRUZW1wbGF0ZSBtZWRpYT1cIlRlc3RNZWRpYVwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgZHVyYXRpb249XCIxXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICBpbmRleD1cIlRlc3RJbmRleFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgYml0c3RyZWFtU3dpdGNoaW5nPVwiVGVzdEJpdHN0cmVhbVN3aXRjaGluZ1wiPiIKICAgICAgICIgICAgICA8L1NlZ21lbnRUZW1wbGF0ZT48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKQEAgLTIwMTYsNyArMjAyOCw3IEBACiAgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCiAgICAgICAiICA8UGVyaW9kPiIKICAgICAgICIgICAgPEFkYXB0YXRpb25TZXQ+IgotICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbiBpZD1cIlRlc3QgSWRcIiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24gaWQ9XCJUZXN0X0lkXCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGJhbmR3aWR0aD1cIjEwMFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBxdWFsaXR5UmFua2luZz1cIjIwMFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICBkZXBlbmRlbmN5SWQ9XCJvbmUgdHdvIHRocmVlXCIiCkBAIC0yMDMzLDcgKzIwNDUsNyBAQAogICBhZGFwdGF0aW9uU2V0ID0gKEdzdEFkYXB0YXRpb25TZXROb2RlICopIHBlcmlvZE5vZGUtPkFkYXB0YXRpb25TZXRzLT5kYXRhOwogICByZXByZXNlbnRhdGlvbiA9IChHc3RSZXByZXNlbnRhdGlvbk5vZGUgKikKICAgICAgIGFkYXB0YXRpb25TZXQtPlJlcHJlc2VudGF0aW9ucy0+ZGF0YTsKLSAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHJlcHJlc2VudGF0aW9uLT5pZCwgIlRlc3QgSWQiKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHJlcHJlc2VudGF0aW9uLT5pZCwgIlRlc3RfSWQiKTsKICAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHJlcHJlc2VudGF0aW9uLT5iYW5kd2lkdGgsIDEwMCk7CiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChyZXByZXNlbnRhdGlvbi0+cXVhbGl0eVJhbmtpbmcsIDIwMCk7CiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChyZXByZXNlbnRhdGlvbi0+ZGVwZW5kZW5jeUlkWzBdLCAib25lIik7CkBAIC0yMjc3LDcgKzIyODksNyBAQAogICAgICAgIiAgPFBlcmlvZD4iCiAgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0PiIKICAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgotICAgICAgIiAgICAgICAgPFNlZ21lbnRMaXN0PiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50TGlzdCBkdXJhdGlvbj1cIjFcIj4iCiAgICAgICAiICAgICAgICA8L1NlZ21lbnRMaXN0PiIKICAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOwogCkBAIC0yMzE2LDcgKzIzMjgsNyBAQAogICAgICAgIiAgPFBlcmlvZD4iCiAgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0PiIKICAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgotICAgICAgIiAgICAgICAgPFNlZ21lbnRUZW1wbGF0ZT4iCisgICAgICAiICAgICAgICA8U2VnbWVudFRlbXBsYXRlIGR1cmF0aW9uPVwiMVwiPiIKICAgICAgICIgICAgICAgIDwvU2VnbWVudFRlbXBsYXRlPiIKICAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOwogCkBAIC0yNDIxLDYgKzI0MzMsNDggQEAKICAgICAgICZzZWxlY3RlZF9tZXRob2QpOwogICBmYWlsX2lmICh1cmxzID09IE5VTEwpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoc2VsZWN0ZWRfbWV0aG9kLCBHU1RfTVBEX1VUQ1RJTUlOR19UWVBFX0hUVFBfWFNEQVRFKTsKKyAgdXJscyA9CisgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfdXRjX3RpbWluZ19zb3VyY2VzIChtcGRjbGllbnQsCisgICAgICBHU1RfTVBEX1VUQ1RJTUlOR19UWVBFX05UUCwgJnNlbGVjdGVkX21ldGhvZCk7CisgIGZhaWxfaWYgKHVybHMgPT0gTlVMTCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChzZWxlY3RlZF9tZXRob2QsIEdTVF9NUERfVVRDVElNSU5HX1RZUEVfTlRQKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdfc3Rydl9sZW5ndGggKHVybHMpLCA0KTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHVybHNbMF0sICIwLmV1cm9wZS5wb29sLm50cC5vcmciKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHVybHNbMV0sICIxLmV1cm9wZS5wb29sLm50cC5vcmciKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHVybHNbMl0sICIyLmV1cm9wZS5wb29sLm50cC5vcmciKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHVybHNbM10sICIzLmV1cm9wZS5wb29sLm50cC5vcmciKTsKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBwYXJzaW5nIGludmFsaWQgVVRDVGltaW5nIHZhbHVlczoKKyAqIC0gZWxlbWVudHMgd2l0aCBubyBzY2hlbWVJZFVyaSBwcm9wZXJ0eSBzaG91bGQgYmUgcmVqZWN0ZWQKKyAqIC0gZWxlbWVudHMgd2l0aCBubyB2YWx1ZSBwcm9wZXJ0eSBzaG91bGQgYmUgcmVqZWN0ZWQKKyAqIC0gZWxlbWVudHMgd2l0aCB1bnJlY29nbmlzZWQgVVRDVGltaW5nIHNjaGVtZSBzaG91bGQgYmUgcmVqZWN0ZWQKKyAqIC0gZWxlbWVudHMgd2l0aCBlbXB0eSB2YWx1ZXMgc2hvdWxkIGJlIHJlamVjdGVkCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfdXRjdGltaW5nX2ludmFsaWRfdmFsdWUpCit7CisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCisgICAgICAiPFVUQ1RpbWluZyBpbnZhbGlkX3NjaGVtZUlkVXJpPVwiZHVtbXkudXJpLnNjaGVtZVwiIHZhbHVlPVwiZHVtbXkgdmFsdWVcIi8+IgorICAgICAgIjxVVENUaW1pbmcgc2NoZW1lSWRVcmk9XCJ1cm46bXBlZzpkYXNoOnV0YzpudHA6MjAxNFwiIGludmFsaWRfdmFsdWU9XCJkdW1teSB2YWx1ZVwiLz4iCisgICAgICAiPFVUQ1RpbWluZyBzY2hlbWVJZFVyaT1cImR1bW15LnVyaS5zY2hlbWVcIiB2YWx1ZT1cImR1bW15IHZhbHVlXCIvPiIKKyAgICAgICI8VVRDVGltaW5nIHNjaGVtZUlkVXJpPVwidXJuOm1wZWc6ZGFzaDp1dGM6bnRwOjIwMTRcIiB2YWx1ZT1cIlwiLz4iCisgICAgICAiPC9NUEQ+IjsKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgKGdpbnQpIHN0cmxlbiAoeG1sKSk7CisKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisgIGZhaWxfaWYgKG1wZGNsaWVudC0+bXBkX25vZGUgPT0gTlVMTCk7CisgIGZhaWxfaWYgKG1wZGNsaWVudC0+bXBkX25vZGUtPlVUQ1RpbWluZyAhPSBOVUxMKTsKICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKIH0KIApAQCAtMjQ1OSwyMCArMjUxMyw2MCBAQAogICovCiBHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfdGVtcGxhdGVfcGFyc2luZykKIHsKLSAgY29uc3QgZ2NoYXIgKnVybF90ZW1wbGF0ZTsKICAgY29uc3QgZ2NoYXIgKmlkID0gIlRlc3RJZCI7CiAgIGd1aW50IG51bWJlciA9IDc7CiAgIGd1aW50IGJhbmR3aWR0aCA9IDI1MDA7CiAgIGd1aW50NjQgdGltZSA9IDEwMDsKICAgZ2NoYXIgKnJlc3VsdDsKIAotICB1cmxfdGVtcGxhdGUgPSAiVGVzdE1lZGlhJEJhbmR3aWR0aCQkJHRlc3QiOwotICByZXN1bHQgPQotICAgICAgZ3N0X21wZHBhcnNlcl9idWlsZF9VUkxfZnJvbV90ZW1wbGF0ZSAodXJsX3RlbXBsYXRlLCBpZCwgbnVtYmVyLAotICAgICAgYmFuZHdpZHRoLCB0aW1lKTsKLSAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHJlc3VsdCwgIlRlc3RNZWRpYTI1MDAkdGVzdCIpOwotICBnX2ZyZWUgKHJlc3VsdCk7CisgIHN0cnVjdCBUZXN0VXJsCisgIHsKKyAgICBjb25zdCBnY2hhciAqdXJsVGVtcGxhdGU7CisgICAgY29uc3QgZ2NoYXIgKmV4cGVjdGVkUmVzcG9uc2U7CisgIH07CiAKKyAgLyogdmFyaW91cyB0ZXN0IHNjZW5hcmlvcyB0byBhdHRlbXB0ICovCisgIHN0cnVjdCBUZXN0VXJsIHRlc3RVcmxbXSA9IHsKKyAgICB7IiIsIE5VTEx9LCAgICAgICAgICAgICAgICAgLyogZW1wdHkgc3RyaW5nIGZvciB0ZW1wbGF0ZSAqLworICAgIHsiJCQiLCAiJCJ9LCAgICAgICAgICAgICAgICAvKiBlc2NhcGVkICQgKi8KKyAgICB7Ik51bWJlciIsICJOdW1iZXIifSwgICAgICAgLyogc3RyaW5nIHNpbWlsYXIgd2l0aCBhbiBpZGVudGlmaWVyLCBidXQgd2l0aG91dCAkICovCisgICAgeyJOdW1iZXIkTnVtYmVyJCIsICJOdW1iZXI3In0sICAgICAgLyogTnVtYmVyIGlkZW50aWZpZXIgKi8KKyAgICB7Ik51bWJlciROdW1iZXIkJCQiLCAiTnVtYmVyNyQifSwgICAvKiBOdW1iZXIgaWRlbnRpZmllciBmb2xsb3dlZCBieSAkJCAqLworICAgIHsiTnVtYmVyJE51bWJlciROdW1iZXIkTnVtYmVyJCIsICJOdW1iZXI3TnVtYmVyNyJ9LCAvKiBzZXJpZXMgb2YgIk51bWJlciIgc3RyaW5nIGFuZCBOdW1iZXIgaWRlbnRpZmllciAqLworICAgIHsiUmVwcmVzZW50YXRpb24kUmVwcmVzZW50YXRpb25JRCQiLCAiUmVwcmVzZW50YXRpb25UZXN0SWQifSwgICAgICAgLyogUmVwcmVzZW50YXRpb25JRCBpZGVudGlmaWVyICovCisgICAgeyJUZXN0TWVkaWEkQmFuZHdpZHRoJCQkdGVzdCIsICJUZXN0TWVkaWEyNTAwJHRlc3QifSwgICAgICAgLyogQmFuZHdpZHRoIGlkZW50aWZpZXIgKi8KKyAgICB7IlRlc3RNZWRpYSRUaW1lJCIsICJUZXN0TWVkaWExMDAifSwgICAgICAgIC8qIFRpbWUgaWRlbnRpZmllciAqLworICAgIHsiVGVzdE1lZGlhJFRpbWUiLCBOVUxMfSwgICAvKiBJZGVudGlmaWVyIG5vdCBmaW5pc2hlZCB3aXRoICQgKi8KKyAgICB7IlRpbWUkVGltZSVkJCIsIE5VTEx9LCAgICAgLyogdXNhZ2Ugb2YgJWQgKG5vIHdpZHRoKSAqLworICAgIHsiVGltZSRUaW1lJTBkJCIsICJUaW1lMTAwIn0sICAgICAgIC8qIHVzYWdlIG9mIGZvcm1hdCBzbWFsbGVyIHRoYW4gbnVtYmVyIG9mIGRpZ2l0cyAqLworICAgIHsiVGltZSRUaW1lJTAxZCQiLCAiVGltZTEwMCJ9LCAgICAgIC8qIHVzYWdlIG9mIGZvcm1hdCBzbWFsbGVyIHRoYW4gbnVtYmVyIG9mIGRpZ2l0cyAqLworICAgIHsiVGltZSRUaW1lJTA1ZCQiLCAiVGltZTAwMTAwIn0sICAgIC8qIHVzYWdlIG9mIGZvcm1hdCBiaWdnZXIgdGhhbiBudW1iZXIgb2YgZGlnaXRzICovCisgICAgeyJUaW1lJFRpbWUlMDVkdGVzdCQiLCAiVGltZTAwMTAwdGVzdCJ9LCAgICAvKiB1c2FnZSBleHRyYSB0ZXh0IGluIGZvcm1hdCAqLworICAgIHsiVGltZSRUaW1lJTNkJCIsIE5VTEx9LCAgICAvKiBpbmNvcnJlY3QgZm9ybWF0OiB3aWR0aCBkb2VzIG5vdCBzdGFydCB3aXRoIDAgKi8KKyAgICB7IlRpbWUkVGltZSUwLTRkJCIsIE5VTEx9LCAgLyogaW5jb3JyZWN0IGZvcm1hdDogd2lkdGggaXMgbm90IGEgbnVtYmVyICovCisgICAgeyJUaW1lJFRpbWUlMCQiLCBOVUxMfSwgICAgIC8qIGluY29ycmVjdCBmb3JtYXQ6IG5vIGQsIHggb3IgdSAqLworICAgIHsiVGltZSRUaW1lMSUwMWQkIiwgTlVMTH0sICAvKiBpbmNvcnJlY3QgZm9ybWF0OiBkb2VzIG5vdCBzdGFydCB3aXRoICUgYWZ0ZXIgaWRlbnRpZmllciAqLworICAgIHsiJEJhbmR3aWR0aCUvaW5pdC5tcDR2IiwgTlVMTH0sICAgIC8qIGluY29ycmVjdCBpZGVudGlmaWVyOiBub3QgZmluaXNoZWQgd2l0aCAkICovCisgICAgeyIkTnVtYmVyJS8kVGltZSQubXA0diIsIE5VTEx9LCAgICAgLyogaW5jb3JyZWN0IG51bWJlciBvZiAkIHNlcGFyYXRvcnMgKi8KKyAgICB7IiRSZXByZXNlbnRhdGlvbklEMSQiLCBOVUxMfSwgICAgICAvKiBpbmNvcnJlY3QgaWRlbnRpZmllciAqLworICAgIHsiJEJhbmR3aWR0aDEkIiwgTlVMTH0sICAgICAvKiBpbmNvcnJlY3QgaWRlbnRpZmllciAqLworICAgIHsiJE51bWJlcjEkIiwgTlVMTH0sICAgICAgICAvKiBpbmNvcnJlY3QgaWRlbnRpZmllciAqLworICAgIHsiJFJlcHJlc2VudGF0aW9uSUQlMDFkJCIsIE5VTEx9LCAgIC8qIGluY29ycmVjdCBmb3JtYXQ6IFJlcHJlc2VudGF0aW9uSUQgZG9lcyBub3Qgc3VwcG9ydCBmb3JtYXR0aW5nICovCisgICAgeyJUaW1lJFRpbWUlMDV1JCIsIE5VTEx9LCAgIC8qICV1IGZvcm1hdCAqLworICAgIHsiVGltZSRUaW1lJTA1eCQiLCBOVUxMfSwgICAvKiAleCBmb3JtYXQgKi8KKyAgICB7IlRpbWUkVGltZSUwNXV0ZXN0JCIsIE5VTEx9LCAgICAgICAvKiAldSBmb3JtYXQgZm9sbG93ZWQgYnkgdGV4dCAqLworICAgIHsiVGltZSRUaW1lJTA1eHRlc3QkIiwgTlVMTH0sICAgICAgIC8qICV4IGZvcm1hdCBmb2xsb3dlZCBieSB0ZXh0ICovCisgICAgeyJUaW1lJFRpbWUlMDV4dGVzdCUkIiwgTlVMTH0sICAgICAgLyogc2Vjb25kICUgY2hhcmFjdGVyIGluIGZvcm1hdCAqLworICB9OworCisgIGd1aW50IGNvdW50ID0gc2l6ZW9mICh0ZXN0VXJsKSAvIHNpemVvZiAodGVzdFVybFswXSk7CisgIGZvciAoaW50IGkgPSAwOyBpIDwgY291bnQ7IGkrKykgeworICAgIHJlc3VsdCA9CisgICAgICAgIGdzdF9tcGRwYXJzZXJfYnVpbGRfVVJMX2Zyb21fdGVtcGxhdGUgKHRlc3RVcmxbaV0udXJsVGVtcGxhdGUsIGlkLAorICAgICAgICBudW1iZXIsIGJhbmR3aWR0aCwgdGltZSk7CisgICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHJlc3VsdCwgdGVzdFVybFtpXS5leHBlY3RlZFJlc3BvbnNlKTsKKyAgICBnX2ZyZWUgKHJlc3VsdCk7CisgIH0KIH0KIAogR1NUX0VORF9URVNUOwpAQCAtMjU0MSw2ICsyNjM1LDExNCBAQAogR1NUX0VORF9URVNUOwogCiAvKgorICogVGVzdCBiaXRzdHJlYW1Td2l0Y2hpbmcgaW5oZXJpdGFuY2UgZnJvbSBQZXJpb2QgdG8gQWRhcHRhdGlvblNldAorICoKKyAqIERlc2NyaXB0aW9uIG9mIGJpc3RyZWFtU3dpdGNoaW5nIGF0dHJpYnV0ZSBpbiBQZXJpb2Q6CisgKiAiV2hlbiBzZXQgdG8g4oCYdHJ1ZeKAmSwgdGhpcyBpcyBlcXVpdmFsZW50IGFzIGlmIHRoZQorICogQWRhcHRhdGlvblNldEBiaXRzdHJlYW1Td2l0Y2hpbmcgZm9yIGVhY2ggQWRhcHRhdGlvbiBTZXQgY29udGFpbmVkIGluIHRoaXMKKyAqIFBlcmlvZCBpcyBzZXQgdG8gJ3RydWUnLiBJbiB0aGlzIGNhc2UsIHRoZSBBZGFwdGF0aW9uU2V0QGJpdHN0cmVhbVN3aXRjaGluZworICogYXR0cmlidXRlIHNoYWxsIG5vdCBiZSBzZXQgdG8gJ2ZhbHNlJyBmb3IgYW55IEFkYXB0YXRpb24gU2V0IGluIHRoaXMgUGVyaW9kIgorICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX2JpdHN0cmVhbVN3aXRjaGluZ19pbmhlcml0YW5jZSkKK3sKKyAgR0xpc3QgKmFkYXB0YXRpb25TZXRzOworICBHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqYWRhcHRfc2V0OworICBndWludCBhY3RpdmVTdHJlYW1zOworICBHc3RBY3RpdmVTdHJlYW0gKmFjdGl2ZVN0cmVhbTsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgR3N0U3RydWN0dXJlICpzOworICBnYm9vbGVhbiBiaXRzdHJlYW1Td2l0Y2hpbmdGbGFnOworCisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgorICAgICAgIiAgPFBlcmlvZCBpZD1cIlBlcmlvZDBcIiIKKyAgICAgICIgICAgICAgICAgZHVyYXRpb249XCJQMFkwTTFEVDFIMU0xU1wiIgorICAgICAgIiAgICAgICAgICBiaXRzdHJlYW1Td2l0Y2hpbmc9XCJ0cnVlXCI+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBpZD1cIjFcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgbWltZVR5cGU9XCJ2aWRlby9tcDRcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgPC9BZGFwdGF0aW9uU2V0PiIKKyAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgaWQ9XCIyXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIG1pbWVUeXBlPVwiYXVkaW9cIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgYml0c3RyZWFtU3dpdGNoaW5nPVwiZmFsc2VcIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIGdib29sZWFuIHJldDsKKyAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBnc3RfbXBkX2NsaWVudF9uZXcgKCk7CisKKyAgcmV0ID0gZ3N0X21wZF9wYXJzZSAobXBkY2xpZW50LCB4bWwsIChnaW50KSBzdHJsZW4gKHhtbCkpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBwcm9jZXNzIHRoZSB4bWwgZGF0YSAqLworICByZXQgPSBnc3RfbXBkX2NsaWVudF9zZXR1cF9tZWRpYV9wcmVzZW50YXRpb24gKG1wZGNsaWVudCwgR1NUX0NMT0NLX1RJTUVfTk9ORSwKKyAgICAgIC0xLCBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgLyogZ2V0IHRoZSBsaXN0IG9mIGFkYXB0YXRpb24gc2V0cyBvZiB0aGUgZmlyc3QgcGVyaW9kICovCisgIGFkYXB0YXRpb25TZXRzID0gZ3N0X21wZF9jbGllbnRfZ2V0X2FkYXB0YXRpb25fc2V0cyAobXBkY2xpZW50KTsKKyAgZmFpbF9pZiAoYWRhcHRhdGlvblNldHMgPT0gTlVMTCk7CisKKyAgLyogc2V0dXAgc3RyZWFtaW5nIGZyb20gdGhlIGZpcnN0IGFkYXB0YXRpb24gc2V0ICovCisgIGFkYXB0X3NldCA9IChHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKGFkYXB0YXRpb25TZXRzLCAwKTsKKyAgZmFpbF9pZiAoYWRhcHRfc2V0ID09IE5VTEwpOworICByZXQgPSBnc3RfbXBkX2NsaWVudF9zZXR1cF9zdHJlYW1pbmcgKG1wZGNsaWVudCwgYWRhcHRfc2V0KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgLyogc2V0dXAgc3RyZWFtaW5nIGZyb20gdGhlIHNlY29uZCBhZGFwdGF0aW9uIHNldCAqLworICBhZGFwdF9zZXQgPSAoR3N0QWRhcHRhdGlvblNldE5vZGUgKikgZ19saXN0X250aF9kYXRhIChhZGFwdGF0aW9uU2V0cywgMSk7CisgIGZhaWxfaWYgKGFkYXB0X3NldCA9PSBOVUxMKTsKKyAgcmV0ID0gZ3N0X21wZF9jbGllbnRfc2V0dXBfc3RyZWFtaW5nIChtcGRjbGllbnQsIGFkYXB0X3NldCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIC8qIDIgYWN0aXZlIHN0cmVhbXMgKi8KKyAgYWN0aXZlU3RyZWFtcyA9IGdzdF9tcGRwYXJzZXJfZ2V0X25iX2FjdGl2ZV9zdHJlYW0gKG1wZGNsaWVudCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChhY3RpdmVTdHJlYW1zLCAyKTsKKworICAvKiBnZXQgZGV0YWlscyBvZiB0aGUgZmlyc3QgYWN0aXZlIHN0cmVhbSAqLworICBhY3RpdmVTdHJlYW0gPSBnc3RfbXBkcGFyc2VyX2dldF9hY3RpdmVfc3RyZWFtX2J5X2luZGV4IChtcGRjbGllbnQsIDApOworICBmYWlsX2lmIChhY3RpdmVTdHJlYW0gPT0gTlVMTCk7CisKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGFjdGl2ZVN0cmVhbS0+bWltZVR5cGUsIEdTVF9TVFJFQU1fVklERU8pOworICBjYXBzID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9jYXBzIChhY3RpdmVTdHJlYW0pOworICBmYWlsX3VubGVzcyAoY2FwcyAhPSBOVUxMKTsKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAocyksICJ2aWRlby9xdWlja3RpbWUiKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworCisgIC8qIGluaGVyaXRlZCBmcm9tIFBlcmlvZCdzIGJpdHN0cmVhbVN3aXRjaGluZyAqLworICBiaXRzdHJlYW1Td2l0Y2hpbmdGbGFnID0KKyAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9iaXRzdHJlYW1fc3dpdGNoaW5nX2ZsYWcgKGFjdGl2ZVN0cmVhbSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChiaXRzdHJlYW1Td2l0Y2hpbmdGbGFnLCBUUlVFKTsKKworICAvKiBnZXQgZGV0YWlscyBvZiB0aGUgc2Vjb25kIGFjdGl2ZSBzdHJlYW0gKi8KKyAgYWN0aXZlU3RyZWFtID0gZ3N0X21wZHBhcnNlcl9nZXRfYWN0aXZlX3N0cmVhbV9ieV9pbmRleCAobXBkY2xpZW50LCAxKTsKKyAgZmFpbF9pZiAoYWN0aXZlU3RyZWFtID09IE5VTEwpOworCisgIGFzc2VydF9lcXVhbHNfaW50IChhY3RpdmVTdHJlYW0tPm1pbWVUeXBlLCBHU1RfU1RSRUFNX0FVRElPKTsKKyAgY2FwcyA9IGdzdF9tcGRfY2xpZW50X2dldF9zdHJlYW1fY2FwcyAoYWN0aXZlU3RyZWFtKTsKKyAgZmFpbF91bmxlc3MgKGNhcHMgIT0gTlVMTCk7CisgIHMgPSBnc3RfY2Fwc19nZXRfc3RydWN0dXJlIChjYXBzLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHMpLCAiYXVkaW8iKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOworCisgIC8qIHNldCB0byBGQUxTRSBpbiBvdXIgZXhhbXBsZSwgYnV0IG92ZXJ3cml0dGVuIHRvIFRSVUUgYnkgUGVyaW9kJ3MKKyAgICogYml0c3RyZWFtU3dpdGNoaW5nCisgICAqLworICBiaXRzdHJlYW1Td2l0Y2hpbmdGbGFnID0KKyAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9iaXRzdHJlYW1fc3dpdGNoaW5nX2ZsYWcgKGFjdGl2ZVN0cmVhbSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChiaXRzdHJlYW1Td2l0Y2hpbmdGbGFnLCBUUlVFKTsKKworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCiAgKiBUZXN0IHZhcmlvdXMgZHVyYXRpb24gZm9ybWF0cwogICovCiBHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfdmFyaW91c19kdXJhdGlvbl9mb3JtYXRzKQpAQCAtMjU3NSw1MCArMjc3Nyw1MCBAQAogICBwZXJpb2ROb2RlID0KICAgICAgIChHc3RQZXJpb2ROb2RlICopIGdfbGlzdF9udGhfZGF0YSAobXBkY2xpZW50LT5tcGRfbm9kZS0+UGVyaW9kcywgMCk7CiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChwZXJpb2ROb2RlLT5pZCwgIlBlcmlvZDAiKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMCwgMCwgMSwgMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMCwgMCwgMSwgMCkpOwogCiAgIHBlcmlvZE5vZGUgPQogICAgICAgKEdzdFBlcmlvZE5vZGUgKikgZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLCAxKTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHBlcmlvZE5vZGUtPmlkLCAiUGVyaW9kMSIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAwLCAxLCA1MDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDAsIDEsIDUwMCkpOwogCiAgIHBlcmlvZE5vZGUgPQogICAgICAgKEdzdFBlcmlvZE5vZGUgKikgZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLCAyKTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHBlcmlvZE5vZGUtPmlkLCAiUGVyaW9kMiIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAwLCAxLCA3MDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDAsIDEsIDcwMCkpOwogCiAgIHBlcmlvZE5vZGUgPQogICAgICAgKEdzdFBlcmlvZE5vZGUgKikgZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLCAzKTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHBlcmlvZE5vZGUtPmlkLCAiUGVyaW9kMyIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAxLCAwLCAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAxLCAwLCAwKSk7CiAKICAgcGVyaW9kTm9kZSA9CiAgICAgICAoR3N0UGVyaW9kTm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMsIDQpOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocGVyaW9kTm9kZS0+aWQsICJQZXJpb2Q0Iik7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDEsIDAsIDAsIDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAorICAgICAgZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDEsIDAsIDAsIDApKTsKIAogICBwZXJpb2ROb2RlID0KICAgICAgIChHc3RQZXJpb2ROb2RlICopIGdfbGlzdF9udGhfZGF0YSAobXBkY2xpZW50LT5tcGRfbm9kZS0+UGVyaW9kcywgNSk7CiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChwZXJpb2ROb2RlLT5pZCwgIlBlcmlvZDUiKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCi0gICAgICAoZ2ludDY0KSBkdXJhdGlvbl90b19tcyAoMCwgMCwgMSwgMCwgMCwgMCwgMCkpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAocGVyaW9kTm9kZS0+c3RhcnQsCisgICAgICBkdXJhdGlvbl90b19tcyAoMCwgMCwgMSwgMCwgMCwgMCwgMCkpOwogCiAgIHBlcmlvZE5vZGUgPQogICAgICAgKEdzdFBlcmlvZE5vZGUgKikgZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLCA2KTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHBlcmlvZE5vZGUtPmlkLCAiUGVyaW9kNiIpOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKLSAgICAgIChnaW50NjQpIGR1cmF0aW9uX3RvX21zICgwLCAxLCAwLCAwLCAwLCAwLCAwKSk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChwZXJpb2ROb2RlLT5zdGFydCwKKyAgICAgIGR1cmF0aW9uX3RvX21zICgwLCAxLCAwLCAwLCAwLCAwLCAwKSk7CiAKICAgcGVyaW9kTm9kZSA9CiAgICAgICAoR3N0UGVyaW9kTm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMsIDcpOwogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAocGVyaW9kTm9kZS0+aWQsICJQZXJpb2Q3Iik7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAotICAgICAgKGdpbnQ2NCkgZHVyYXRpb25fdG9fbXMgKDEsIDAsIDAsIDAsIDAsIDAsIDApKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHBlcmlvZE5vZGUtPnN0YXJ0LAorICAgICAgZHVyYXRpb25fdG9fbXMgKDEsIDAsIDAsIDAsIDAsIDAsIDApKTsKIAogICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOwogfQpAQCAtMzA4MCw3ICszMjgyLDggQEAKICAgR3N0QWRhcHRhdGlvblNldE5vZGUgKmFkYXB0X3NldDsKICAgZ3VpbnQgYWN0aXZlU3RyZWFtczsKICAgR3N0QWN0aXZlU3RyZWFtICphY3RpdmVTdHJlYW07Ci0gIGNvbnN0IGdjaGFyICptaW1lVHlwZTsKKyAgR3N0Q2FwcyAqY2FwczsKKyAgR3N0U3RydWN0dXJlICpzOwogICBnYm9vbGVhbiBiaXRzdHJlYW1Td2l0Y2hpbmdGbGFnOwogICBndWludCB2aWRlb1N0cmVhbVdpZHRoOwogICBndWludCB2aWRlb1N0cmVhbUhlaWdodDsKQEAgLTMxMzMsOCArMzMzNiwxMSBAQAogICBmYWlsX2lmIChhY3RpdmVTdHJlYW0gPT0gTlVMTCk7CiAKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGFjdGl2ZVN0cmVhbS0+bWltZVR5cGUsIEdTVF9TVFJFQU1fVklERU8pOwotICBtaW1lVHlwZSA9IGdzdF9tcGRfY2xpZW50X2dldF9zdHJlYW1fbWltZVR5cGUgKGFjdGl2ZVN0cmVhbSk7Ci0gIGFzc2VydF9lcXVhbHNfc3RyaW5nIChtaW1lVHlwZSwgInZpZGVvL3F1aWNrdGltZSIpOworICBjYXBzID0gZ3N0X21wZF9jbGllbnRfZ2V0X3N0cmVhbV9jYXBzIChhY3RpdmVTdHJlYW0pOworICBmYWlsX3VubGVzcyAoY2FwcyAhPSBOVUxMKTsKKyAgcyA9IGdzdF9jYXBzX2dldF9zdHJ1Y3R1cmUgKGNhcHMsIDApOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0X3N0cnVjdHVyZV9nZXRfbmFtZSAocyksICJ2aWRlby9xdWlja3RpbWUiKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwogCiAgIGJpdHN0cmVhbVN3aXRjaGluZ0ZsYWcgPQogICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X2JpdHN0cmVhbV9zd2l0Y2hpbmdfZmxhZyAoYWN0aXZlU3RyZWFtKTsKQEAgLTM0MTYsNiArMzYyMiwxNzkgQEAKIAogR1NUX0VORF9URVNUOwogCisvKiB0ZXN0IG11bHRpcGxlIEJhc2VVcmwgZW50cmllcyBwZXIgc2VjdGlvbiAqLworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMNSkKK3sKKyAgR3N0UGVyaW9kTm9kZSAqcGVyaW9kTm9kZTsKKyAgR3N0QWRhcHRhdGlvblNldE5vZGUgKmFkYXB0YXRpb25TZXQ7CisgIEdzdFJlcHJlc2VudGF0aW9uTm9kZSAqcmVwcmVzZW50YXRpb247CisgIGNvbnN0IGdjaGFyICpiYXNlVVJMOworICBHc3RCYXNlVVJMICpnc3RCYXNlVVJMOworCisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgorICAgICAgIiAgPEJhc2VVUkw+L21wZF9iYXNlX3VybDEvPC9CYXNlVVJMPiIKKyAgICAgICIgIDxCYXNlVVJMPi9tcGRfYmFzZV91cmwyLzwvQmFzZVVSTD4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIGR1cmF0aW9uPVwiUDBZME0xRFQxSDFNMVNcIj4iCisgICAgICAiICAgIDxCYXNlVVJMPiBwZXJpb2RfYmFzZV91cmwxLzwvQmFzZVVSTD4iCisgICAgICAiICAgIDxCYXNlVVJMPiBwZXJpb2RfYmFzZV91cmwyLzwvQmFzZVVSTD4iCisgICAgICAiICAgIDxCYXNlVVJMPiBwZXJpb2RfYmFzZV91cmwzLzwvQmFzZVVSTD4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IGlkPVwiMVwiIG1pbWVUeXBlPVwiYXVkaW9cIiBsYW5nPVwiZW5cIj4iCisgICAgICAiICAgICAgPEJhc2VVUkw+YWRhcHRhdGlvbl9iYXNlX3VybDEvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICA8QmFzZVVSTD5hZGFwdGF0aW9uX2Jhc2VfdXJsMi88L0Jhc2VVUkw+IgorICAgICAgIiAgICAgIDxCYXNlVVJMPmFkYXB0YXRpb25fYmFzZV91cmwzLzwvQmFzZVVSTD4iCisgICAgICAiICAgICAgPEJhc2VVUkw+YWRhcHRhdGlvbl9iYXNlX3VybDQvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+cmVwcmVzZW50YXRpb25fYmFzZV91cmwxLzwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5yZXByZXNlbnRhdGlvbl9iYXNlX3VybDIvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICAgIDxCYXNlVVJMPnJlcHJlc2VudGF0aW9uX2Jhc2VfdXJsMy88L0Jhc2VVUkw+IgorICAgICAgIiAgICAgICAgPEJhc2VVUkw+cmVwcmVzZW50YXRpb25fYmFzZV91cmw0LzwvQmFzZVVSTD4iCisgICAgICAiICAgICAgICA8QmFzZVVSTD5yZXByZXNlbnRhdGlvbl9iYXNlX3VybDUvPC9CYXNlVVJMPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gc2V0dXBfbXBkX2NsaWVudCAoeG1sKTsKKworICBhc3NlcnRfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAobXBkY2xpZW50LT5tcGRfbm9kZS0+QmFzZVVSTHMpLCAyKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAobXBkY2xpZW50LT5tcGRfbm9kZS0+QmFzZVVSTHMsIDApOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgIi9tcGRfYmFzZV91cmwxLyIpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChtcGRjbGllbnQtPm1wZF9ub2RlLT5CYXNlVVJMcywgMSk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAiL21wZF9iYXNlX3VybDIvIik7CisKKyAgcGVyaW9kTm9kZSA9IChHc3RQZXJpb2ROb2RlICopIG1wZGNsaWVudC0+bXBkX25vZGUtPlBlcmlvZHMtPmRhdGE7CisgIGFzc2VydF9lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChwZXJpb2ROb2RlLT5CYXNlVVJMcyksIDMpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChwZXJpb2ROb2RlLT5CYXNlVVJMcywgMCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAiIHBlcmlvZF9iYXNlX3VybDEvIik7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKHBlcmlvZE5vZGUtPkJhc2VVUkxzLCAxKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICIgcGVyaW9kX2Jhc2VfdXJsMi8iKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAocGVyaW9kTm9kZS0+QmFzZVVSTHMsIDIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgIiBwZXJpb2RfYmFzZV91cmwzLyIpOworCisgIGFkYXB0YXRpb25TZXQgPSAoR3N0QWRhcHRhdGlvblNldE5vZGUgKikgcGVyaW9kTm9kZS0+QWRhcHRhdGlvblNldHMtPmRhdGE7CisgIGFzc2VydF9lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChhZGFwdGF0aW9uU2V0LT5CYXNlVVJMcyksIDQpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChhZGFwdGF0aW9uU2V0LT5CYXNlVVJMcywgMCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAiYWRhcHRhdGlvbl9iYXNlX3VybDEvIik7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKGFkYXB0YXRpb25TZXQtPkJhc2VVUkxzLCAxKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICJhZGFwdGF0aW9uX2Jhc2VfdXJsMi8iKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAoYWRhcHRhdGlvblNldC0+QmFzZVVSTHMsIDIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgImFkYXB0YXRpb25fYmFzZV91cmwzLyIpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChhZGFwdGF0aW9uU2V0LT5CYXNlVVJMcywgMyk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAiYWRhcHRhdGlvbl9iYXNlX3VybDQvIik7CisKKyAgcmVwcmVzZW50YXRpb24gPSAoR3N0UmVwcmVzZW50YXRpb25Ob2RlICopCisgICAgICBhZGFwdGF0aW9uU2V0LT5SZXByZXNlbnRhdGlvbnMtPmRhdGE7CisgIGFzc2VydF9lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChyZXByZXNlbnRhdGlvbi0+QmFzZVVSTHMpLCA1KTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAocmVwcmVzZW50YXRpb24tPkJhc2VVUkxzLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICJyZXByZXNlbnRhdGlvbl9iYXNlX3VybDEvIik7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKHJlcHJlc2VudGF0aW9uLT5CYXNlVVJMcywgMSk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAicmVwcmVzZW50YXRpb25fYmFzZV91cmwyLyIpOworICBnc3RCYXNlVVJMID0gZ19saXN0X250aF9kYXRhIChyZXByZXNlbnRhdGlvbi0+QmFzZVVSTHMsIDIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZ3N0QmFzZVVSTC0+YmFzZVVSTCwgInJlcHJlc2VudGF0aW9uX2Jhc2VfdXJsMy8iKTsKKyAgZ3N0QmFzZVVSTCA9IGdfbGlzdF9udGhfZGF0YSAocmVwcmVzZW50YXRpb24tPkJhc2VVUkxzLCAzKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGdzdEJhc2VVUkwtPmJhc2VVUkwsICJyZXByZXNlbnRhdGlvbl9iYXNlX3VybDQvIik7CisgIGdzdEJhc2VVUkwgPSBnX2xpc3RfbnRoX2RhdGEgKHJlcHJlc2VudGF0aW9uLT5CYXNlVVJMcywgNCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChnc3RCYXNlVVJMLT5iYXNlVVJMLCAicmVwcmVzZW50YXRpb25fYmFzZV91cmw1LyIpOworCisgIC8qIHRlc3QgYmFzZVVSTC4gSXRzIHZhbHVlIHNob3VsZCBiZSBjb21wdXRlZCBsaWtlIHRoaXM6CisgICAqICAtIHN0YXJ0IHdpdGggeG1sIHVybCAobnVsbCkKKyAgICogIC0gc2V0IGl0IHRvIHRoZSB2YWx1ZSBmcm9tIE1QRCdzIEJhc2VVUkwgZWxlbWVudDogIi9tcGRfYmFzZV91cmwxLyIKKyAgICogIC0gdXBkYXRlIHRoZSB2YWx1ZSB3aXRoIEJhc2VVUkwgZWxlbWVudCBmcm9tIFBlcmlvZC4gQmVjYXVzZSB0aGlzCisgICAqIGlzIGEgcmVsYXRpdmUgdXJsLCBpdCB3aWxsIHVwZGF0ZSB0aGUgY3VycmVudCB2YWx1ZS4gYmFzZVVSTCBiZWNvbWVzCisgICAqICIvbXBkX2Jhc2VfdXJsMS9wZXJpb2RfYmFzZV91cmwxLyIKKyAgICogIC0gdXBkYXRlIHRoZSB2YWx1ZSB3aXRoIEJhc2VVUkwgZWxlbWVudCBmcm9tIEFkYXB0YXRpb25TZXQuIEJlY2F1c2UgdGhpcworICAgKiBpcyBhIHJlbGF0aXZlIHVybCwgaXQgd2lsbCB1cGRhdGUgdGhlIGN1cnJlbnQgdmFsdWUuIGJhc2VVUkwgYmVjb21lcworICAgKiAiL21wZF9iYXNlX3VybDEvcGVyaW9kX2Jhc2VfdXJsMS9hZGFwdGF0aW9uX2Jhc2VfdXJsMS8iCisgICAqICAtIHVwZGF0ZSB0aGUgdmFsdWUgd2l0aCBCYXNlVVJMIGVsZW1lbnQgZnJvbSBSZXByZXNlbnRhdGlvbi4gQmVjYXVzZSB0aGlzCisgICAqIGlzIGFuIHJlbGF0aXZlIHVybCwgaXQgd2lsbCB1cGRhdGUgdGhlIGN1cnJlbnQgdmFsdWUuIgorICAgKi8KKyAgYmFzZVVSTCA9IGdzdF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkwgKG1wZGNsaWVudCwgMCk7CisgIGZhaWxfaWYgKGJhc2VVUkwgPT0gTlVMTCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChiYXNlVVJMLAorICAgICAgIi9tcGRfYmFzZV91cmwxL3BlcmlvZF9iYXNlX3VybDEvYWRhcHRhdGlvbl9iYXNlX3VybDEvcmVwcmVzZW50YXRpb25fYmFzZV91cmwxLyIpOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyogdGVzdCBubyBCYXNlVVJMICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw2KQoreworICBjb25zdCBnY2hhciAqYmFzZVVSTDsKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIj4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIGR1cmF0aW9uPVwiUDBZME0xRFQxSDFNMVNcIj4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IGlkPVwiMVwiIG1pbWVUeXBlPVwiYXVkaW9cIiBsYW5nPVwiZW5cIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gc2V0dXBfbXBkX2NsaWVudCAoeG1sKTsKKworICBiYXNlVVJMID0gZ3N0X21wZHBhcnNlcl9nZXRfYmFzZVVSTCAobXBkY2xpZW50LCAwKTsKKyAgZmFpbF9pZiAoYmFzZVVSTCA9PSBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGJhc2VVUkwsICIiKTsKKworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qIEJhc2VVUkw6IHRlc3QgdGhhdCB0aGUgcGF0aCBpcyBtYWRlIGFic29sdXRlIChhIC8gaXMgcHJlcGVuZGVkIGlmIG5lZWRlZCAqLworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMNykKK3sKKyAgY29uc3QgZ2NoYXIgKmJhc2VVUkw7CisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgorICAgICAgIiAgPEJhc2VVUkw+eC9leGFtcGxlLmNvbS88L0Jhc2VVUkw+IgorICAgICAgIiAgPFBlcmlvZCBpZD1cIlBlcmlvZDBcIiBkdXJhdGlvbj1cIlAwWTBNMURUMUgxTTFTXCI+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBpZD1cIjFcIiBtaW1lVHlwZT1cImF1ZGlvXCIgbGFuZz1cImVuXCI+IgorICAgICAgIiAgICAgIDxSZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKKworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudDsKKworICBtcGRjbGllbnQgPSBzZXR1cF9tcGRfY2xpZW50ICh4bWwpOworCisgIGJhc2VVUkwgPSBnc3RfbXBkcGFyc2VyX2dldF9iYXNlVVJMIChtcGRjbGllbnQsIDApOworICBmYWlsX2lmIChiYXNlVVJMID09IE5VTEwpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoYmFzZVVSTCwgIi94L2V4YW1wbGUuY29tLyIpOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyogQmFzZVVSTDogdGVzdCB0aGF0IGEgLyBpcyBub3QgcHJlcGVuZGVkIGlmIHRoZSBzdHJpbmcgY29udGFpbnMgJzonCisgKiBUaGlzIHRlc3RzIHVyaXMgd2l0aCBzY2hlbWEgcHJlc2VudCAqLworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMOCkKK3sKKyAgY29uc3QgZ2NoYXIgKmJhc2VVUkw7CisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCI+IgorICAgICAgIiAgPEJhc2VVUkw+eDp5L2V4YW1wbGUuY29tLzwvQmFzZVVSTD4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIGR1cmF0aW9uPVwiUDBZME0xRFQxSDFNMVNcIj4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IGlkPVwiMVwiIG1pbWVUeXBlPVwiYXVkaW9cIiBsYW5nPVwiZW5cIj4iCisgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uPiIKKyAgICAgICIgICAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIEdzdE1wZENsaWVudCAqbXBkY2xpZW50ID0gc2V0dXBfbXBkX2NsaWVudCAoeG1sKTsKKworICBiYXNlVVJMID0gZ3N0X21wZHBhcnNlcl9nZXRfYmFzZVVSTCAobXBkY2xpZW50LCAwKTsKKyAgZmFpbF9pZiAoYmFzZVVSTCA9PSBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGJhc2VVUkwsICJ4OnkvZXhhbXBsZS5jb20vIik7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCiAvKgogICogVGVzdCBnZXR0aW5nIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24KICAqCkBAIC0zNTA5LDEyICszODg4LDkgQEAKICAgZ2Jvb2xlYW4gaGFzTmV4dFNlZ21lbnQ7CiAgIEdzdEFjdGl2ZVN0cmVhbSAqYWN0aXZlU3RyZWFtOwogICBHc3RGbG93UmV0dXJuIGZsb3c7Ci0gIEdzdE1lZGlhU2VnbWVudCBzZWdtZW50OwotICBHc3REYXRlVGltZSAqc2VnbWVudEVuZFRpbWU7CisgIEdzdERhdGVUaW1lICpzZWdtZW50QXZhaWxhYmlsaXR5OwogICBHc3REYXRlVGltZSAqZ3N0X3RpbWU7CiAgIEdEYXRlVGltZSAqZ190aW1lOwotICBHc3RDbG9ja1RpbWUgdHM7Ci0gIGdpbnQ2NCBkaWZmOwogCiAgIGNvbnN0IGdjaGFyICp4bWwgPQogICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgpAQCAtMzUyMyw3ICszODk5LDcgQEAKICAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiIgogICAgICAgIiAgICAgYXZhaWxhYmlsaXR5U3RhcnRUaW1lPVwiMjAxNS0wMy0yNFQwOjA6MFwiIgogICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlAwWTBNMERUM0gzTTMwU1wiPiIKLSAgICAgICIgIDxQZXJpb2QgaWQ9XCJQZXJpb2QwXCI+IgorICAgICAgIiAgPFBlcmlvZCBpZD1cIlBlcmlvZDBcIiBzdGFydD1cIlAwWTBNMERUMEgwTTEwU1wiPiIKICAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJ2aWRlby9tcDRcIj4iCiAgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uPiIKICAgICAgICIgICAgICAgIDxTZWdtZW50TGlzdCBkdXJhdGlvbj1cIjQ1XCI+IgpAQCAtMzYwMiwxMSArMzk3OCw2IEBACiAgICAgICBnc3RfbXBkX2NsaWVudF9oYXNfbmV4dF9zZWdtZW50IChtcGRjbGllbnQsIGFjdGl2ZVN0cmVhbSwgVFJVRSk7CiAgIGFzc2VydF9lcXVhbHNfaW50IChoYXNOZXh0U2VnbWVudCwgMCk7CiAKLSAgLyogZ2V0IGNodW5rIDAuIHNlZ21lbnRfaW5kZXggd2lsbCBub3QgY2hhbmdlICovCi0gIHJldCA9IGdzdF9tcGRwYXJzZXJfZ2V0X2NodW5rX2J5X2luZGV4IChtcGRjbGllbnQsIDAsIDAsICZzZWdtZW50KTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgMSk7Ci0gIGFzc2VydF9lcXVhbHNfaW50IChzZWdtZW50Lm51bWJlciwgMSk7Ci0KICAgLyogc2VnbWVudCBpbmRleCBpcyBzdGlsbCAxICovCiAgIGhhc05leHRTZWdtZW50ID0KICAgICAgIGdzdF9tcGRfY2xpZW50X2hhc19uZXh0X3NlZ21lbnQgKG1wZGNsaWVudCwgYWN0aXZlU3RyZWFtLCBUUlVFKTsKQEAgLTM2MTQsMTggKzM5ODUsMjIgQEAKIAogICAvKiBlYWNoIHNlZ21lbnQgaGFzIGEgZHVyYXRpb24gb2YgMCBob3VycywgMCBtaW4gNDUgc2Vjb25kcwogICAgKiBzZWdtZW50IGluZGV4IGlzIDEuCi0gICAqIEVuZCB0aW1lIGlzIGF0IHRoZSBlbmQgb2Ygc2VnbWVudCAxLCBzbyAyICogc2VnbWVudF9kdXJhdGlvbiA9IDIgKiA0NXMKKyAgICogU3RhcnQgdGltZSBpcyBhdCB0aGUgYmVnaW5uaW5nIG9mIHNlZ21lbnQgMSwgc28gMSAqIHNlZ21lbnRfZHVyYXRpb24gPSAxICogNDVzCisgICAqIEF2YWlsYWJpbGl0eSBzdGFydCB0aW1lIGlzIGF0IHRoZSBlbmQgb2YgdGhlIHNlZ21lbnQsIHNvIHdlIGFkZCBkdXJhdGlvbiAoNDVzKQorICAgKiBXZSBhbHNvIGFkZCBwZXJpb2Qgc3RhcnQgdGltZSAoMTBzKQorICAgKiBTbywgYXZhaWxhYmlsaXR5IHN0YXJ0IHRpbWUgZm9yIHNlZ21lbnQgMSBpczogMTAgKHBlcmlvZCBzdGFydCkgKworICAgKiA0NSAoc2VnbWVudCBzdGFydCkgKyA0NSAoZHVyYXRpb24pID0gMSc0MHMKICAgICovCi0gIHNlZ21lbnRFbmRUaW1lID0KLSAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X3NlZ21lbnRfYXZhaWxhYmlsaXR5X2VuZF90aW1lIChtcGRjbGllbnQsCisgIHNlZ21lbnRBdmFpbGFiaWxpdHkgPQorICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfc2VnbWVudF9hdmFpbGFiaWxpdHlfc3RhcnRfdGltZSAobXBkY2xpZW50LAogICAgICAgYWN0aXZlU3RyZWFtKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3llYXIgKHNlZ21lbnRFbmRUaW1lKSwgMjAxNSk7Ci0gIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9tb250aCAoc2VnbWVudEVuZFRpbWUpLCAzKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2RheSAoc2VnbWVudEVuZFRpbWUpLCAyNCk7Ci0gIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9ob3VyIChzZWdtZW50RW5kVGltZSksIDApOwotICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbWludXRlIChzZWdtZW50RW5kVGltZSksIDEpOwotICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfc2Vjb25kIChzZWdtZW50RW5kVGltZSksIDMwKTsKLSAgZ3N0X2RhdGVfdGltZV91bnJlZiAoc2VnbWVudEVuZFRpbWUpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfeWVhciAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDIwMTUpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbW9udGggKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAzKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2RheSAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDI0KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X2hvdXIgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21pbnV0ZSAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDEpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfc2Vjb25kIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgNDApOworICBnc3RfZGF0ZV90aW1lX3VucmVmIChzZWdtZW50QXZhaWxhYmlsaXR5KTsKIAogICAvKiBzZWVrIHRvIHRpbWUgKi8KICAgZ3N0X3RpbWUgPSBnc3RfZGF0ZV90aW1lX25ld19mcm9tX2lzbzg2MDFfc3RyaW5nICgiMjAxNS0wMy0yNFQwOjA6MjBaIik7CkBAIC0zNjQwLDE1ICs0MDE1LDYgQEAKICAgICAgIGdzdF9tcGRfY2xpZW50X2hhc19uZXh0X3NlZ21lbnQgKG1wZGNsaWVudCwgYWN0aXZlU3RyZWFtLCBUUlVFKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKGhhc05leHRTZWdtZW50LCAxKTsKIAotICAvKiBjaGVjayBpZiBzdHJlYW0gYXQgbW9tZW50IHRzIGlzIGF2YWlsYWJsZS4KLSAgICogdGltZVNoaWZ0QnVmZmVyRGVwdGggd2FzIG5vdCBzZXQsIHNvIGl0IGlzIGNvbnNpZGVyZWQgaW5maW5pdGUuCi0gICAqIEFsbCBzZWdtZW50cyBmcm9tIHRoZSBwYXN0IG11c3QgYmUgYXZhaWxhYmxlCi0gICAqLwotICB0cyA9IDMwICogR1NUX1NFQ09ORDsKLSAgcmV0ID0gZ3N0X21wZF9jbGllbnRfY2hlY2tfdGltZV9wb3NpdGlvbiAobXBkY2xpZW50LCBhY3RpdmVTdHJlYW0sIHRzLCAmZGlmZik7Ci0gIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIDApOwotICBhc3NlcnRfZXF1YWxzX2ludDY0IChkaWZmLCAwKTsKLQogICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOwogfQogCkBAIC0zNjgwLDYgKzQwNDYsOCBAQAogICAgICAgIiAgICAgICAgICA8SW5pdGlhbGl6YXRpb24gc291cmNlVVJMPVwiVGVzdFNvdXJjZVVybFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgcmFuZ2U9XCIxMDAtMjAwXCI+IgogICAgICAgIiAgICAgICAgICA8L0luaXRpYWxpemF0aW9uPiIKKyAgICAgICIgICAgICAgICAgPFJlcHJlc2VudGF0aW9uSW5kZXggc291cmNlVVJMPVwiVGVzdFNvdXJjZUluZGV4XCI+IgorICAgICAgIiAgICAgICAgICA8L1JlcHJlc2VudGF0aW9uSW5kZXg+IgogICAgICAgIiAgICAgICAgPC9TZWdtZW50QmFzZT4iCiAgICAgICAiICAgICAgPC9SZXByZXNlbnRhdGlvbj48L0FkYXB0YXRpb25TZXQ+PC9QZXJpb2Q+PC9NUEQ+IjsKIApAQCAtMzcyMCw3ICs0MDg4LDcgQEAKICAgICAgIGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X2hlYWRlcl9pbmRleCAobXBkY2xpZW50LCAmdXJpLCAwLCAmcmFuZ2Vfc3RhcnQsCiAgICAgICAmcmFuZ2VfZW5kKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7Ci0gIGFzc2VydF9lcXVhbHNfc3RyaW5nICh1cmksICJUZXN0U291cmNlVXJsIik7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nICh1cmksICJUZXN0U291cmNlSW5kZXgiKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocmFuZ2Vfc3RhcnQsIDEwKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAocmFuZ2VfZW5kLCAyMCk7CiAgIGdfZnJlZSAodXJpKTsKQEAgLTM5NDAsMzYgKzQzMDgsMTEgQEAKICAgZXhwZWN0ZWREdXJhdGlvbiA9IGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAwLCAxMTAsIDApOwogICBleHBlY3RlZFRpbWVzdGFtcCA9IGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAwLCAwLCAwLCAwKTsKIAotICAvKiB0aGUgcmVwcmVzZW50YXRpb24gY29udGFpbnMgMiBzZWdtZW50cwotICAgKiAgLSBvbmUgaW5oZXJpdGVkIGZyb20gQWRhcHRhdGlvblNldCAoZHVyYXRpb24gMTAwKQotICAgKiAgLSB0aGUgc2Vjb25kIGRlZmluZWQgaW4gdGhlIFJlcHJlc2VudGF0aW9uIChkdXJhdGlvbiAxMTApCi0gICAqCi0gICAqIEJvdGggd2lsbCBoYXZlIHRoZSBkdXJhdGlvbiBzcGVjaWZpZWQgaW4gdGhlIFJlcHJlc2VudGF0aW9uICgxMTApCi0gICAqLworICAvKiB0aGUgcmVwcmVzZW50YXRpb24gY29udGFpbnMgMSBzZWdtZW50ICh0aGUgb25lIGZyb20gUmVwcmVzZW50YXRpb24pICovCiAKICAgLyogY2hlY2sgZmlyc3Qgc2VnbWVudCAqLwogICByZXQgPSBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9mcmFnbWVudCAobXBkY2xpZW50LCAwLCAmZnJhZ21lbnQpOwogICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKLSAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGZyYWdtZW50LnVyaSwgIi9UZXN0TWVkaWFBZGFwdGF0aW9uIik7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LnJhbmdlX3N0YXJ0LCAxMCk7Ci0gIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LnJhbmdlX2VuZCwgMjApOwotICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZnJhZ21lbnQuaW5kZXhfdXJpLCAiL1Rlc3RJbmRleEFkYXB0YXRpb24iKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQuaW5kZXhfcmFuZ2Vfc3RhcnQsIDMwKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQuaW5kZXhfcmFuZ2VfZW5kLCA0MCk7Ci0gIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC5kdXJhdGlvbiwgZXhwZWN0ZWREdXJhdGlvbiAqIEdTVF9NU0VDT05EKTsKLSAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGZyYWdtZW50LnRpbWVzdGFtcCwgZXhwZWN0ZWRUaW1lc3RhbXAgKiBHU1RfTVNFQ09ORCk7Ci0gIGdzdF9tZWRpYV9mcmFnbWVudF9pbmZvX2NsZWFyICgmZnJhZ21lbnQpOwotCi0gIC8qIGFkdmFuY2UgdG8gbmV4dCBzZWdtZW50ICovCi0gIGZsb3cgPSBnc3RfbXBkX2NsaWVudF9hZHZhbmNlX3NlZ21lbnQgKG1wZGNsaWVudCwgYWN0aXZlU3RyZWFtLCBUUlVFKTsKLSAgYXNzZXJ0X2VxdWFsc19pbnQgKGZsb3csIEdTVF9GTE9XX09LKTsKLQotICAvKiBzZWNvbmQgc2VnbWVudCBzdGFydHMgYWZ0ZXIgZmlyc3QgZW5kcyAqLwotICBleHBlY3RlZFRpbWVzdGFtcCA9IGV4cGVjdGVkVGltZXN0YW1wICsgZXhwZWN0ZWREdXJhdGlvbjsKLQotICAvKiBjaGVjayBzZWNvbmQgc2VnbWVudCAqLwotICByZXQgPSBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9mcmFnbWVudCAobXBkY2xpZW50LCAwLCAmZnJhZ21lbnQpOwotICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGZyYWdtZW50LnVyaSwgIi9UZXN0TWVkaWFSZXAiKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQucmFuZ2Vfc3RhcnQsIDEwMCk7CiAgIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LnJhbmdlX2VuZCwgMjAwKTsKQEAgLTM5ODAsNiArNDMyMywxMCBAQAogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoZnJhZ21lbnQudGltZXN0YW1wLCBleHBlY3RlZFRpbWVzdGFtcCAqIEdTVF9NU0VDT05EKTsKICAgZ3N0X21lZGlhX2ZyYWdtZW50X2luZm9fY2xlYXIgKCZmcmFnbWVudCk7CiAKKyAgLyogdHJ5IHRvIGFkdmFuY2UgdG8gbmV4dCBzZWdtZW50LiBTaG91bGQgZmFpbCAqLworICBmbG93ID0gZ3N0X21wZF9jbGllbnRfYWR2YW5jZV9zZWdtZW50IChtcGRjbGllbnQsIGFjdGl2ZVN0cmVhbSwgVFJVRSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChmbG93LCBHU1RfRkxPV19FT1MpOworCiAgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7CiB9CiAKQEAgLTQwNzgsNiArNDQyNSw4IEBACiAgIEdzdENsb2NrVGltZSBleHBlY3RlZER1cmF0aW9uOwogICBHc3RDbG9ja1RpbWUgZXhwZWN0ZWRUaW1lc3RhbXA7CiAgIEdzdENsb2NrVGltZSBwZXJpb2RTdGFydFRpbWU7CisgIEdzdENsb2NrVGltZSBvZmZzZXQ7CisgIEdzdENsb2NrVGltZSBsYXN0RnJhZ21lbnRUaW1lc3RhbXBFbmQ7CiAgIGNvbnN0IGdjaGFyICp4bWwgPQogICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgogICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgpAQCAtNDA4OCw2ICs0NDM3LDcgQEAKICAgICAgICIgICAgPEFkYXB0YXRpb25TZXQgbWltZVR5cGU9XCJ2aWRlby9tcDRcIj4iCiAgICAgICAiICAgICAgPFJlcHJlc2VudGF0aW9uIGlkPVwicmVwSWRcIiBiYW5kd2lkdGg9XCIyNTAwMDBcIj4iCiAgICAgICAiICAgICAgICA8U2VnbWVudFRlbXBsYXRlIGR1cmF0aW9uPVwiMTIwMDBcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgcHJlc2VudGF0aW9uVGltZU9mZnNldD1cIjE1XCIiCiAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgIG1lZGlhPVwiVGVzdE1lZGlhX3JlcD0kUmVwcmVzZW50YXRpb25JRCRudW1iZXI9JE51bWJlciRiYW5kd2lkdGg9JEJhbmR3aWR0aCR0aW1lPSRUaW1lJFwiIgogICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICBpbmRleD1cIlRlc3RJbmRleFwiPiIKICAgICAgICIgICAgICAgIDwvU2VnbWVudFRlbXBsYXRlPiIKQEAgLTQxNDcsOCArNDQ5NywyMiBAQAogICBwZXJpb2RTdGFydFRpbWUgPSBnc3RfbXBkX3BhcnNlcl9nZXRfcGVyaW9kX3N0YXJ0X3RpbWUgKG1wZGNsaWVudCk7CiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChwZXJpb2RTdGFydFRpbWUsIDEwICogR1NUX1NFQ09ORCk7CiAKKyAgb2Zmc2V0ID0gZ3N0X21wZF9wYXJzZXJfZ2V0X3N0cmVhbV9wcmVzZW50YXRpb25fb2Zmc2V0IChtcGRjbGllbnQsIDApOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAob2Zmc2V0LCAxNSAqIEdTVF9TRUNPTkQpOworCiAgIGdzdF9tZWRpYV9mcmFnbWVudF9pbmZvX2NsZWFyICgmZnJhZ21lbnQpOwogCisgIC8qCisgICAqIFBlcmlvZCBzdGFydHMgYXQgMTBzLgorICAgKiBNUEQgaGFzIGEgZHVyYXRpb24gb2YgM2gzbTMwcywgc28gcGVyaW9kIGR1cmF0aW9uIGlzIDNoM20yMHMuCisgICAqIFdlIGV4cGVjdCB0aGUgbGFzdCBmcmFnbWVudCB0byBlbmQgYXQgcGVyaW9kIHN0YXJ0ICsgcGVyaW9kIGR1cmF0aW9uOiAzaDNtMzBzCisgICAqLworICBleHBlY3RlZFRpbWVzdGFtcCA9IGR1cmF0aW9uX3RvX21zICgwLCAwLCAwLCAzLCAzLCAzMCwgMCk7CisgIGdzdF9tcGRfY2xpZW50X2dldF9sYXN0X2ZyYWdtZW50X3RpbWVzdGFtcF9lbmQgKG1wZGNsaWVudCwgMCwKKyAgICAgICZsYXN0RnJhZ21lbnRUaW1lc3RhbXBFbmQpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAobGFzdEZyYWdtZW50VGltZXN0YW1wRW5kLAorICAgICAgZXhwZWN0ZWRUaW1lc3RhbXAgKiBHU1RfTVNFQ09ORCk7CisKICAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKIH0KIApAQCAtNDE2Nyw2ICs0NTMxLDcgQEAKICAgR3N0Q2xvY2tUaW1lIGV4cGVjdGVkRHVyYXRpb247CiAgIEdzdENsb2NrVGltZSBleHBlY3RlZFRpbWVzdGFtcDsKICAgR3N0Rmxvd1JldHVybiBmbG93OworICBHc3REYXRlVGltZSAqc2VnbWVudEF2YWlsYWJpbGl0eTsKIAogICBjb25zdCBnY2hhciAqeG1sID0KICAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKQEAgLTQyMzMsNiArNDU5OCwyMiBAQAogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoZnJhZ21lbnQudGltZXN0YW1wLCBleHBlY3RlZFRpbWVzdGFtcCAqIEdTVF9NU0VDT05EKTsKICAgZ3N0X21lZGlhX2ZyYWdtZW50X2luZm9fY2xlYXIgKCZmcmFnbWVudCk7CiAKKyAgLyogZmlyc3Qgc2VnbWVudCBzdGFydHMgYXQgM3MgYW5kIGhhcyBhIGR1cmF0aW9uIG9mIDJzLgorICAgKiBXZSBhbHNvIGFkZCBwZXJpb2Qgc3RhcnQgdGltZSAoMTBzKSBzbyB3ZSBleHBlY3QgYSBzZWdtZW50IGF2YWlsYWJpbGl0eQorICAgKiBzdGFydCB0aW1lIG9mIDE1cworICAgKi8KKyAgc2VnbWVudEF2YWlsYWJpbGl0eSA9CisgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lIChtcGRjbGllbnQsCisgICAgICBhY3RpdmVTdHJlYW0pOworICBmYWlsX3VubGVzcyAoc2VnbWVudEF2YWlsYWJpbGl0eSAhPSBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3llYXIgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAyMDE1KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21vbnRoIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMyk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9kYXkgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAyNCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9ob3VyIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9taW51dGUgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3NlY29uZCAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDE1KTsKKyAgZ3N0X2RhdGVfdGltZV91bnJlZiAoc2VnbWVudEF2YWlsYWJpbGl0eSk7CisKICAgLyogYWR2YW5jZSB0byBuZXh0IHNlZ21lbnQgKi8KICAgZmxvdyA9IGdzdF9tcGRfY2xpZW50X2FkdmFuY2Vfc2VnbWVudCAobXBkY2xpZW50LCBhY3RpdmVTdHJlYW0sIFRSVUUpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoZmxvdywgR1NUX0ZMT1dfT0spOwpAQCAtNDI1MSw2ICs0NjMyLDI0IEBACiAgIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC50aW1lc3RhbXAsIGV4cGVjdGVkVGltZXN0YW1wICogR1NUX01TRUNPTkQpOwogICBnc3RfbWVkaWFfZnJhZ21lbnRfaW5mb19jbGVhciAoJmZyYWdtZW50KTsKIAorICAvKiBmaXJzdCBzZWdtZW50IHN0YXJ0cyBhdCAzcyBhbmQgaGFzIGEgZHVyYXRpb24gb2YgMnMuCisgICAqIFNlY29uZCBzZWdtZW50IHN0YXJ0cyB3aGVuIHRoZSBmaXJzdCBlbmRzICg1cykgYW5kIGhhcyBhIGR1cmF0aW9uIG9mIDJzLAorICAgKiBzbyBpdCBlbmRzIGF0IDdzLgorICAgKiBXZSBhbHNvIGFkZCBwZXJpb2Qgc3RhcnQgdGltZSAoMTBzKSBzbyB3ZSBleHBlY3QgYSBzZWdtZW50IGF2YWlsYWJpbGl0eQorICAgKiBzdGFydCB0aW1lIG9mIDE3cworICAgKi8KKyAgc2VnbWVudEF2YWlsYWJpbGl0eSA9CisgICAgICBnc3RfbXBkX2NsaWVudF9nZXRfbmV4dF9zZWdtZW50X2F2YWlsYWJpbGl0eV9zdGFydF90aW1lIChtcGRjbGllbnQsCisgICAgICBhY3RpdmVTdHJlYW0pOworICBmYWlsX3VubGVzcyAoc2VnbWVudEF2YWlsYWJpbGl0eSAhPSBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3llYXIgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAyMDE1KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X21vbnRoIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMyk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9kYXkgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAyNCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9ob3VyIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9taW51dGUgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKGdzdF9kYXRlX3RpbWVfZ2V0X3NlY29uZCAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDE3KTsKKyAgZ3N0X2RhdGVfdGltZV91bnJlZiAoc2VnbWVudEF2YWlsYWJpbGl0eSk7CisKICAgLyogYWR2YW5jZSB0byBuZXh0IHNlZ21lbnQgKi8KICAgZmxvdyA9IGdzdF9tcGRfY2xpZW50X2FkdmFuY2Vfc2VnbWVudCAobXBkY2xpZW50LCBhY3RpdmVTdHJlYW0sIFRSVUUpOwogICBhc3NlcnRfZXF1YWxzX2ludCAoZmxvdywgR1NUX0ZMT1dfT0spOwpAQCAtNDI2OCw2ICs0NjY3LDE1NCBAQAogICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoZnJhZ21lbnQudGltZXN0YW1wLCBleHBlY3RlZFRpbWVzdGFtcCAqIEdTVF9NU0VDT05EKTsKICAgZ3N0X21lZGlhX2ZyYWdtZW50X2luZm9fY2xlYXIgKCZmcmFnbWVudCk7CiAKKyAgLyogVGhpcmQgc2VnbWVudCBzdGFydHMgYXQgMTBzIGFuZCBoYXMgYSBkdXJhdGlvbiBvZiAzcyBzbyBpdCBlbmRzIGF0IDEzcy4KKyAgICogV2UgYWxzbyBhZGQgcGVyaW9kIHN0YXJ0IHRpbWUgKDEwcykgc28gd2UgZXhwZWN0IGEgc2VnbWVudCBhdmFpbGFiaWxpdHkKKyAgICogc3RhcnQgdGltZSBvZiAyM3MKKyAgICovCisgIHNlZ21lbnRBdmFpbGFiaWxpdHkgPQorICAgICAgZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfc2VnbWVudF9hdmFpbGFiaWxpdHlfc3RhcnRfdGltZSAobXBkY2xpZW50LAorICAgICAgYWN0aXZlU3RyZWFtKTsKKyAgZmFpbF91bmxlc3MgKHNlZ21lbnRBdmFpbGFiaWxpdHkgIT0gTlVMTCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF95ZWFyIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMjAxNSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9tb250aCAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDMpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfZGF5IChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMjQpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfaG91ciAoc2VnbWVudEF2YWlsYWJpbGl0eSksIDApOworICBhc3NlcnRfZXF1YWxzX2ludCAoZ3N0X2RhdGVfdGltZV9nZXRfbWludXRlIChzZWdtZW50QXZhaWxhYmlsaXR5KSwgMCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnc3RfZGF0ZV90aW1lX2dldF9zZWNvbmQgKHNlZ21lbnRBdmFpbGFiaWxpdHkpLCAyMyk7CisgIGdzdF9kYXRlX3RpbWVfdW5yZWYgKHNlZ21lbnRBdmFpbGFiaWxpdHkpOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3QgU2VnbWVudExpc3Qgd2l0aCBtdWx0aXBsZSBpbmhlcml0ZWQgc2VnbWVudFVSTHMKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl9tdWx0aXBsZV9pbmhlcml0ZWRfc2VnbWVudFVSTCkKK3sKKyAgR0xpc3QgKmFkYXB0YXRpb25TZXRzOworICBHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqYWRhcHRfc2V0OworICBHc3RBY3RpdmVTdHJlYW0gKmFjdGl2ZVN0cmVhbTsKKyAgR3N0TWVkaWFGcmFnbWVudEluZm8gZnJhZ21lbnQ7CisgIEdzdENsb2NrVGltZSBleHBlY3RlZER1cmF0aW9uOworICBHc3RDbG9ja1RpbWUgZXhwZWN0ZWRUaW1lc3RhbXA7CisgIEdzdEZsb3dSZXR1cm4gZmxvdzsKKworICAvKgorICAgKiBQZXJpb2QgZHVyYXRpb24gaXMgMzAgc2Vjb25kcworICAgKiBQZXJpb2Qgc3RhcnQgaXMgMTAgc2Vjb25kcy4gVGh1cywgcGVyaW9kIGR1cmF0aW9uIGlzIDIwIHNlY29uZHMuCisgICAqCisgICAqIFRoZXJlIGFyZSAyIHNlZ21lbnRzIGluIHRoZSBBZGFwdGF0aW9uU2V0IHNlZ21lbnQgbGlzdCBhbmQgMiBpbiB0aGUKKyAgICogUmVwcmVzZW50YXRpb24ncyBzZWdtZW50IGxpc3QuCisgICAqIFNlZ21lbnQgZHVyYXRpb24gaXMgNXMgZm9yIHRoZSBBZGFwdGF0aW9uIHNlZ21lbnRzIGFuZCA4cyBmb3IKKyAgICogUmVwcmVzZW50YXRpb24gc2VnbWVudHMuCisgICAqIFNlcGFyYXRlbHksIGVhY2ggc2VnbWVudCBsaXN0IChkdXJhdGlvbiAyKjU9MTAgb3IgMio4PTE2KSBmaXRzIGNvbWZvcnRhYmx5CisgICAqIGluIHRoZSBQZXJpb2QncyAyMHMgZHVyYXRpb24uCisgICAqCisgICAqIFdlIGV4cGVjdCB0aGUgUmVwcmVzZW50YXRpb24gc2VnbWVudHMgdG8gb3ZlcndyaXRlIHRoZSBBZGFwdGF0aW9uU2V0IHNlZ21lbnRzLgorICAgKi8KKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiIgorICAgICAgIiBhdmFpbGFiaWxpdHlTdGFydFRpbWU9XCIyMDE1LTAzLTI0VDA6MDowXCIiCisgICAgICAiIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQMFkwTTBEVDBIME0zMFNcIj4iCisgICAgICAiPFBlcmlvZCBzdGFydD1cIlAwWTBNMERUMEgwTTEwU1wiPiIKKyAgICAgICIgIDxBZGFwdGF0aW9uU2V0IG1pbWVUeXBlPVwidmlkZW8vbXA0XCI+IgorICAgICAgIiAgICA8U2VnbWVudExpc3QgZHVyYXRpb249XCI1XCI+IgorICAgICAgIiAgICAgIDxTZWdtZW50VVJMIgorICAgICAgIiAgICAgICAgIG1lZGlhPVwiVGVzdE1lZGlhMFwiIG1lZGlhUmFuZ2U9XCIxMC0yMFwiIgorICAgICAgIiAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4MFwiIGluZGV4UmFuZ2U9XCIxMDAtMjAwXCIiCisgICAgICAiICAgICAgPjwvU2VnbWVudFVSTD4iCisgICAgICAiICAgICAgPFNlZ21lbnRVUkwiCisgICAgICAiICAgICAgICAgbWVkaWE9XCJUZXN0TWVkaWExXCIgbWVkaWFSYW5nZT1cIjIwLTMwXCIiCisgICAgICAiICAgICAgICAgaW5kZXg9XCJUZXN0SW5kZXgxXCIgaW5kZXhSYW5nZT1cIjIwMC0zMDBcIiIKKyAgICAgICIgICAgICA+PC9TZWdtZW50VVJMPiIKKyAgICAgICIgICAgPC9TZWdtZW50TGlzdD4iCisgICAgICAiICAgIDxSZXByZXNlbnRhdGlvbj4iCisgICAgICAiICAgICAgPFNlZ21lbnRMaXN0IGR1cmF0aW9uPVwiOFwiPiIKKyAgICAgICIgICAgICAgIDxTZWdtZW50VVJMIgorICAgICAgIiAgICAgICAgICAgbWVkaWE9XCJUZXN0TWVkaWEyXCIgbWVkaWFSYW5nZT1cIjMwLTQwXCIiCisgICAgICAiICAgICAgICAgICBpbmRleD1cIlRlc3RJbmRleDJcIiBpbmRleFJhbmdlPVwiMzAwLTQwMFwiIgorICAgICAgIiAgICAgICAgPjwvU2VnbWVudFVSTD4iCisgICAgICAiICAgICAgICA8U2VnbWVudFVSTCIKKyAgICAgICIgICAgICAgICAgIG1lZGlhPVwiVGVzdE1lZGlhM1wiIG1lZGlhUmFuZ2U9XCI0MC01MFwiIgorICAgICAgIiAgICAgICAgICAgaW5kZXg9XCJUZXN0SW5kZXgzXCIgaW5kZXhSYW5nZT1cIjQwMC01MDBcIiIKKyAgICAgICIgICAgICAgID48L1NlZ21lbnRVUkw+IgorICAgICAgIiAgICAgIDwvU2VnbWVudExpc3Q+IgorICAgICAgIiAgICA8L1JlcHJlc2VudGF0aW9uPjwvQWRhcHRhdGlvblNldD48L1BlcmlvZD48L01QRD4iOworCisgIGdib29sZWFuIHJldDsKKyAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBnc3RfbXBkX2NsaWVudF9uZXcgKCk7CisKKyAgcmV0ID0gZ3N0X21wZF9wYXJzZSAobXBkY2xpZW50LCB4bWwsIChnaW50KSBzdHJsZW4gKHhtbCkpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBwcm9jZXNzIHRoZSB4bWwgZGF0YSAqLworICByZXQgPSBnc3RfbXBkX2NsaWVudF9zZXR1cF9tZWRpYV9wcmVzZW50YXRpb24gKG1wZGNsaWVudCwgR1NUX0NMT0NLX1RJTUVfTk9ORSwKKyAgICAgIC0xLCBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgLyogZ2V0IHRoZSBsaXN0IG9mIGFkYXB0YXRpb24gc2V0cyBvZiB0aGUgZmlyc3QgcGVyaW9kICovCisgIGFkYXB0YXRpb25TZXRzID0gZ3N0X21wZF9jbGllbnRfZ2V0X2FkYXB0YXRpb25fc2V0cyAobXBkY2xpZW50KTsKKyAgZmFpbF9pZiAoYWRhcHRhdGlvblNldHMgPT0gTlVMTCk7CisKKyAgLyogc2V0dXAgc3RyZWFtaW5nIGZyb20gdGhlIGZpcnN0IGFkYXB0YXRpb24gc2V0ICovCisgIGFkYXB0X3NldCA9IChHc3RBZGFwdGF0aW9uU2V0Tm9kZSAqKSBnX2xpc3RfbnRoX2RhdGEgKGFkYXB0YXRpb25TZXRzLCAwKTsKKyAgZmFpbF9pZiAoYWRhcHRfc2V0ID09IE5VTEwpOworICByZXQgPSBnc3RfbXBkX2NsaWVudF9zZXR1cF9zdHJlYW1pbmcgKG1wZGNsaWVudCwgYWRhcHRfc2V0KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgYWN0aXZlU3RyZWFtID0gZ3N0X21wZHBhcnNlcl9nZXRfYWN0aXZlX3N0cmVhbV9ieV9pbmRleCAobXBkY2xpZW50LCAwKTsKKyAgZmFpbF9pZiAoYWN0aXZlU3RyZWFtID09IE5VTEwpOworCisgIGV4cGVjdGVkRHVyYXRpb24gPSBkdXJhdGlvbl90b19tcyAoMCwgMCwgMCwgMCwgMCwgOCwgMCk7CisgIGV4cGVjdGVkVGltZXN0YW1wID0gZHVyYXRpb25fdG9fbXMgKDAsIDAsIDAsIDAsIDAsIDAsIDApOworCisgIC8qIHRoZSByZXByZXNlbnRhdGlvbiBjb250YWlucyAyIHNlZ21lbnRzIGRlZmluZWQgaW4gdGhlIFJlcHJlc2VudGF0aW9uCisgICAqCisgICAqIEJvdGggd2lsbCBoYXZlIHRoZSBkdXJhdGlvbiBzcGVjaWZpZWQgaW4gdGhlIFJlcHJlc2VudGF0aW9uICg4KQorICAgKi8KKworICAvKiBjaGVjayBmaXJzdCBzZWdtZW50ICovCisgIHJldCA9IGdzdF9tcGRfY2xpZW50X2dldF9uZXh0X2ZyYWdtZW50IChtcGRjbGllbnQsIDAsICZmcmFnbWVudCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZnJhZ21lbnQudXJpLCAiL1Rlc3RNZWRpYTIiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQucmFuZ2Vfc3RhcnQsIDMwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQucmFuZ2VfZW5kLCA0MCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChmcmFnbWVudC5pbmRleF91cmksICIvVGVzdEluZGV4MiIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5pbmRleF9yYW5nZV9zdGFydCwgMzAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAoZnJhZ21lbnQuaW5kZXhfcmFuZ2VfZW5kLCA0MDApOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoZnJhZ21lbnQuZHVyYXRpb24sIGV4cGVjdGVkRHVyYXRpb24gKiBHU1RfTVNFQ09ORCk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC50aW1lc3RhbXAsIGV4cGVjdGVkVGltZXN0YW1wICogR1NUX01TRUNPTkQpOworICBnc3RfbWVkaWFfZnJhZ21lbnRfaW5mb19jbGVhciAoJmZyYWdtZW50KTsKKworICAvKiBhZHZhbmNlIHRvIG5leHQgc2VnbWVudCAqLworICBmbG93ID0gZ3N0X21wZF9jbGllbnRfYWR2YW5jZV9zZWdtZW50IChtcGRjbGllbnQsIGFjdGl2ZVN0cmVhbSwgVFJVRSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChmbG93LCBHU1RfRkxPV19PSyk7CisKKyAgLyogc2Vjb25kIHNlZ21lbnQgc3RhcnRzIGFmdGVyIHByZXZpb3VzIGVuZHMgKi8KKyAgZXhwZWN0ZWRUaW1lc3RhbXAgPSBleHBlY3RlZFRpbWVzdGFtcCArIGV4cGVjdGVkRHVyYXRpb247CisKKyAgLyogY2hlY2sgc2Vjb25kIHNlZ21lbnQgKi8KKyAgcmV0ID0gZ3N0X21wZF9jbGllbnRfZ2V0X25leHRfZnJhZ21lbnQgKG1wZGNsaWVudCwgMCwgJmZyYWdtZW50KTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChmcmFnbWVudC51cmksICIvVGVzdE1lZGlhMyIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5yYW5nZV9zdGFydCwgNDApOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5yYW5nZV9lbmQsIDUwKTsKKyAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGZyYWdtZW50LmluZGV4X3VyaSwgIi9UZXN0SW5kZXgzIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKGZyYWdtZW50LmluZGV4X3JhbmdlX3N0YXJ0LCA0MDApOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChmcmFnbWVudC5pbmRleF9yYW5nZV9lbmQsIDUwMCk7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChmcmFnbWVudC5kdXJhdGlvbiwgZXhwZWN0ZWREdXJhdGlvbiAqIEdTVF9NU0VDT05EKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKGZyYWdtZW50LnRpbWVzdGFtcCwgZXhwZWN0ZWRUaW1lc3RhbXAgKiBHU1RfTVNFQ09ORCk7CisgIGdzdF9tZWRpYV9mcmFnbWVudF9pbmZvX2NsZWFyICgmZnJhZ21lbnQpOworCisgIC8qIHRyeSB0byBhZHZhbmNlIHRvIHRoZSBuZXh0IHNlZ21lbnQuIFRoZXJlIGlzbid0IGFueSwgc28gaXQgc2hvdWxkIGZhaWwgKi8KKyAgZmxvdyA9IGdzdF9tcGRfY2xpZW50X2FkdmFuY2Vfc2VnbWVudCAobXBkY2xpZW50LCBhY3RpdmVTdHJlYW0sIFRSVUUpOworICBhc3NlcnRfZXF1YWxzX2ludCAoZmxvdywgR1NUX0ZMT1dfRU9TKTsKKwogICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOwogfQogCkBAIC00NDM4LDYgKzQ5ODUsMzY4IEBACiAKIEdTVF9FTkRfVEVTVDsKIAorR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX3doaXRlc3BhY2Vfc3RyaW5ncykKK3sKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfbm9fd2hpdGVzcGFjZSAoIiIpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9ub193aGl0ZXNwYWNlICgiLyIpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9ub193aGl0ZXNwYWNlICgiICIpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfbm9fd2hpdGVzcGFjZSAoImFhYWFhYWFhICIpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfbm9fd2hpdGVzcGFjZSAoImFcdGEiKSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX25vX3doaXRlc3BhY2UgKCJhXHJhIikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9ub193aGl0ZXNwYWNlICgiYVxuYSIpID09IEZBTFNFKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfcmZjMTczOF9zdHJpbmdzKQoreworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoIi8iKSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKCIgIikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoImFhYWFhYWFhICIpID09IEZBTFNFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoIiIpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoImEiKSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwKKyAgICAgICgiOzpAJj1hQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaMDEyMzQ1Njc4OSQtXy4rISonKCksJUFBIikKKyAgICAgID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybAorICAgICAgKCI7OkAmPWFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelowMTIzNDU2Nzg5JC1fLishKicoKSwvJUFBIikKKyAgICAgID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybAorICAgICAgKCI7OkAmPWFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelowMTIzNDU2Nzg5JC1fLishKicoKSwlICIpCisgICAgICA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiJUFBIikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiJUEiKSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiJSIpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKCIlWEEiKSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3ZhbGlkYXRlX3JmYzE3MzhfdXJsICgiJUFYIikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl92YWxpZGF0ZV9yZmMxNzM4X3VybCAoIiVYWCIpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfdmFsaWRhdGVfcmZjMTczOF91cmwgKCJcMDAxIikgPT0gRkFMU0UpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCisgKiBUZXN0IG5lZ2F0aXZlIHBlcmlvZCBkdXJhdGlvbgorICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfbmVnYXRpdmVfcGVyaW9kX2R1cmF0aW9uKQoreworICBjb25zdCBnY2hhciAqeG1sID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKKyAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiIgorICAgICAgIiAgICAgYXZhaWxhYmlsaXR5U3RhcnRUaW1lPVwiMjAxNS0wMy0yNFQwOjA6MFwiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIlAwWTBNMERUM0gzTTMwU1wiPiIKKyAgICAgICIgIDxQZXJpb2QgaWQ9XCJQZXJpb2QwXCIiCisgICAgICAiICAgICAgICAgIHN0YXJ0PVwiUDBZME0wRFQxSDBNMFNcIiIKKyAgICAgICIgICAgICAgICAgZHVyYXRpb249XCItUFQxMFNcIj4iCisgICAgICAiICA8L1BlcmlvZD48UGVyaW9kIGlkPVwiUGVyaW9kMVwiPjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgKGdpbnQpIHN0cmxlbiAoeG1sKSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIC8qIHByb2Nlc3MgdGhlIHhtbCBkYXRhCisgICAqIHNob3VsZCBmYWlsIGR1ZSB0byBuZWdhdGl2ZSBkdXJhdGlvbiBvZiBQZXJpb2QwCisgICAqLworICByZXQgPSBnc3RfbXBkX2NsaWVudF9zZXR1cF9tZWRpYV9wcmVzZW50YXRpb24gKG1wZGNsaWVudCwgR1NUX0NMT0NLX1RJTUVfTk9ORSwKKyAgICAgIC0xLCBOVUxMKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgRkFMU0UpOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3QgcGFyc2luZyBuZWdhdGl2ZSB2YWx1ZXMgZnJvbSBhdHRyaWJ1dGVzIHRoYXQgc2hvdWxkIGJlIHVuc2lnbmVkCisgKgorICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfcmVhZF91bnNpZ25lZF9mcm9tX25lZ2F0aXZlX3ZhbHVlcykKK3sKKyAgR3N0UGVyaW9kTm9kZSAqcGVyaW9kTm9kZTsKKyAgR3N0U2VnbWVudEJhc2VUeXBlICpzZWdtZW50QmFzZTsKKyAgR3N0QWRhcHRhdGlvblNldE5vZGUgKmFkYXB0YXRpb25TZXQ7CisgIEdzdFJlcHJlc2VudGF0aW9uTm9kZSAqcmVwcmVzZW50YXRpb247CisgIEdzdFN1YlJlcHJlc2VudGF0aW9uTm9kZSAqc3ViUmVwcmVzZW50YXRpb247CisKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIiIKKyAgICAgICIgICAgIGF2YWlsYWJpbGl0eVN0YXJ0VGltZT1cIjIwMTUtLTEtMTNUMTI6MjU6MzdcIj4iCisgICAgICAiICA8UGVyaW9kIHN0YXJ0PVwiLVAtMjAxNVlcIiBkdXJhdGlvbj1cIi1QLTVNXCI+IgorICAgICAgIiAgICA8U2VnbWVudEJhc2UgcHJlc2VudGF0aW9uVGltZU9mZnNldD1cIi0xMFwiIgorICAgICAgIiAgICAgICAgICAgICAgICAgdGltZXNjYWxlPVwiLTVcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgIGluZGV4UmFuZ2U9XCIxLS0xMFwiPiIKKyAgICAgICIgICAgPC9TZWdtZW50QmFzZT4iCisgICAgICAiICAgIDxBZGFwdGF0aW9uU2V0IHBhcj1cIi0xOjdcIiIKKyAgICAgICIgICAgICAgICAgICAgICAgICAgbWluRnJhbWVSYXRlPVwiIC0xXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgIHNlZ21lbnRBbGlnbm1lbnQ9XCItNFwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgICAgPFN1YlJlcHJlc2VudGF0aW9uIGRlcGVuZGVuY3lMZXZlbD1cIjEgLTIgM1wiPiIKKyAgICAgICIgICAgICAgIDwvU3ViUmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgKGdpbnQpIHN0cmxlbiAoeG1sKSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIHBlcmlvZE5vZGUgPSAoR3N0UGVyaW9kTm9kZSAqKSBtcGRjbGllbnQtPm1wZF9ub2RlLT5QZXJpb2RzLT5kYXRhOworICBzZWdtZW50QmFzZSA9IHBlcmlvZE5vZGUtPlNlZ21lbnRCYXNlOworICBhZGFwdGF0aW9uU2V0ID0gKEdzdEFkYXB0YXRpb25TZXROb2RlICopIHBlcmlvZE5vZGUtPkFkYXB0YXRpb25TZXRzLT5kYXRhOworICByZXByZXNlbnRhdGlvbiA9IChHc3RSZXByZXNlbnRhdGlvbk5vZGUgKikKKyAgICAgIGFkYXB0YXRpb25TZXQtPlJlcHJlc2VudGF0aW9ucy0+ZGF0YTsKKyAgc3ViUmVwcmVzZW50YXRpb24gPSAoR3N0U3ViUmVwcmVzZW50YXRpb25Ob2RlICopCisgICAgICByZXByZXNlbnRhdGlvbi0+U3ViUmVwcmVzZW50YXRpb25zLT5kYXRhOworCisgIC8qIGF2YWlsYWJpbGl0eVN0YXJ0VGltZSBwYXJzaW5nIHNob3VsZCBmYWlsICovCisgIGZhaWxfaWYgKG1wZGNsaWVudC0+bXBkX25vZGUtPmF2YWlsYWJpbGl0eVN0YXJ0VGltZSAhPSBOVUxMKTsKKworICAvKiBQZXJpb2Qgc3RhcnQgcGFyc2luZyBzaG91bGQgZmFpbCAqLworICBhc3NlcnRfZXF1YWxzX2ludDY0IChwZXJpb2ROb2RlLT5zdGFydCwgLTEpOworCisgIC8qIFBlcmlvZCBkdXJhdGlvbiBwYXJzaW5nIHNob3VsZCBmYWlsICovCisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHBlcmlvZE5vZGUtPmR1cmF0aW9uLCAtMSk7CisKKyAgLyogZXhwZWN0IG5lZ2F0aXZlIHZhbHVlIHRvIGJlIHJlamVjdGVkIGFuZCBwcmVzZW50YXRpb25UaW1lT2Zmc2V0IHRvIGJlIDAgKi8KKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHNlZ21lbnRCYXNlLT5wcmVzZW50YXRpb25UaW1lT2Zmc2V0LCAwKTsKKyAgYXNzZXJ0X2VxdWFsc191aW50NjQgKHNlZ21lbnRCYXNlLT50aW1lc2NhbGUsIDEpOworICBmYWlsX2lmIChzZWdtZW50QmFzZS0+aW5kZXhSYW5nZSAhPSBOVUxMKTsKKworICAvKiBwYXIgcmF0aW8gcGFyc2luZyBzaG91bGQgZmFpbCAqLworICBmYWlsX2lmIChhZGFwdGF0aW9uU2V0LT5wYXIgIT0gTlVMTCk7CisKKyAgLyogbWluRnJhbWVSYXRlIHBhcnNpbmcgc2hvdWxkIGZhaWwgKi8KKyAgZmFpbF9pZiAoYWRhcHRhdGlvblNldC0+UmVwcmVzZW50YXRpb25CYXNlLT5taW5GcmFtZVJhdGUgIT0gTlVMTCk7CisKKyAgLyogc2VnbWVudEFsaWdubWVudCBwYXJzaW5nIHNob3VsZCBmYWlsICovCisgIGZhaWxfaWYgKGFkYXB0YXRpb25TZXQtPnNlZ21lbnRBbGlnbm1lbnQgIT0gTlVMTCk7CisKKyAgLyogZGVwZW5kZW5jeSBsZXZlbCBwYXJzaW5nIHNob3VsZCBmYWlsICovCisgIGZhaWxfaWYgKHN1YlJlcHJlc2VudGF0aW9uLT5kZXBlbmRlbmN5TGV2ZWwgIT0gTlVMTCk7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBuZWdhdGl2ZSBtZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uIGR1cmF0aW9uCisgKi8KK0dTVF9TVEFSVF9URVNUIChkYXNoX21wZHBhcnNlcl9uZWdhdGl2ZV9tZWRpYVByZXNlbnRhdGlvbkR1cmF0aW9uKQoreworICBjb25zdCBnY2hhciAqeG1sID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKKyAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIiIKKyAgICAgICIgICAgIHByb2ZpbGVzPVwidXJuOm1wZWc6ZGFzaDpwcm9maWxlOmlzb2ZmLW1haW46MjAxMVwiIgorICAgICAgIiAgICAgYXZhaWxhYmlsaXR5U3RhcnRUaW1lPVwiMjAxNS0wMy0yNFQwOjA6MFwiIgorICAgICAgIiAgICAgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbj1cIi1QMFkwTTBEVDNIM00zMFNcIj4iCisgICAgICAiICA8UGVyaW9kIGlkPVwiUGVyaW9kMFwiIHN0YXJ0PVwiUDBZME0wRFQxSDBNMFNcIj48L1BlcmlvZD48L01QRD4iOworCisgIGdib29sZWFuIHJldDsKKyAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBnc3RfbXBkX2NsaWVudF9uZXcgKCk7CisKKyAgcmV0ID0gZ3N0X21wZF9wYXJzZSAobXBkY2xpZW50LCB4bWwsIChnaW50KSBzdHJsZW4gKHhtbCkpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBwcm9jZXNzIHRoZSB4bWwgZGF0YQorICAgKiBzaG91bGQgZmFpbCBkdWUgdG8gbmVnYXRpdmUgZHVyYXRpb24gb2YgbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbgorICAgKi8KKyAgcmV0ID0gZ3N0X21wZF9jbGllbnRfc2V0dXBfbWVkaWFfcHJlc2VudGF0aW9uIChtcGRjbGllbnQsIEdTVF9DTE9DS19USU1FX05PTkUsCisgICAgICAtMSwgTlVMTCk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIEZBTFNFKTsKKworICBnc3RfbXBkX2NsaWVudF9mcmVlIChtcGRjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCisgKiBUZXN0IHBhcnNpbmcgYW4gTVBEIHdpdGggbm8gcHJvZmlsZXMKKyAqLworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX25vX3Byb2ZpbGVzKQoreworICBjb25zdCBnY2hhciAqeG1sID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCI/PiIKKyAgICAgICI8TVBEIHhtbG5zPVwidXJuOm1wZWc6ZGFzaDpzY2hlbWE6bXBkOjIwMTFcIj48L01QRD4iOworCisgIGdib29sZWFuIHJldDsKKyAgR3N0TXBkQ2xpZW50ICptcGRjbGllbnQgPSBnc3RfbXBkX2NsaWVudF9uZXcgKCk7CisKKyAgcmV0ID0gZ3N0X21wZF9wYXJzZSAobXBkY2xpZW50LCB4bWwsIHN0cmxlbiAoeG1sKSk7CisKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBTIG5vZGUgbGlzdCBncmVhdGVyIHRoYW4gU2VnbWVudFVSTCBsaXN0CisgKgorICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfdW5tYXRjaGVkX3NlZ21lbnRUaW1lbGluZV9zZWdtZW50VVJMKQoreworICBHTGlzdCAqYWRhcHRhdGlvblNldHM7CisgIEdzdEFkYXB0YXRpb25TZXROb2RlICphZGFwdF9zZXQ7CisKKyAgY29uc3QgZ2NoYXIgKnhtbCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiPz4iCisgICAgICAiPE1QRCB4bWxucz1cInVybjptcGVnOmRhc2g6c2NoZW1hOm1wZDoyMDExXCIiCisgICAgICAiICAgICBwcm9maWxlcz1cInVybjptcGVnOmRhc2g6cHJvZmlsZTppc29mZi1tYWluOjIwMTFcIiIKKyAgICAgICIgICAgIGF2YWlsYWJpbGl0eVN0YXJ0VGltZT1cIjIwMTUtMDMtMjRUMDowOjBcIiIKKyAgICAgICIgICAgIG1lZGlhUHJlc2VudGF0aW9uRHVyYXRpb249XCJQMFkwTTBEVDNIM00zMFNcIj4iCisgICAgICAiICA8UGVyaW9kIHN0YXJ0PVwiUDBZME0wRFQwSDBNMTBTXCI+IgorICAgICAgIiAgICA8QWRhcHRhdGlvblNldCBtaW1lVHlwZT1cInZpZGVvL21wNFwiPiIKKyAgICAgICIgICAgICA8UmVwcmVzZW50YXRpb24+IgorICAgICAgIiAgICAgICAgPFNlZ21lbnRMaXN0PiIKKyAgICAgICIgICAgICAgICAgPFNlZ21lbnRUaW1lbGluZT4iCisgICAgICAiICAgICAgICAgICAgPFMgdD1cIjNcIiAgZD1cIjJcIiByPVwiMVwiPjwvUz4iCisgICAgICAiICAgICAgICAgICAgPFMgdD1cIjEwXCIgZD1cIjNcIiByPVwiMFwiPjwvUz4iCisgICAgICAiICAgICAgICAgIDwvU2VnbWVudFRpbWVsaW5lPiIKKyAgICAgICIgICAgICAgICAgPFNlZ21lbnRVUkwgbWVkaWE9XCJUZXN0TWVkaWEwXCIiCisgICAgICAiICAgICAgICAgICAgICAgICAgICAgIGluZGV4PVwiVGVzdEluZGV4MFwiPiIKKyAgICAgICIgICAgICAgICAgPC9TZWdtZW50VVJMPiIKKyAgICAgICIgICAgICAgIDwvU2VnbWVudExpc3Q+IgorICAgICAgIiAgICAgIDwvUmVwcmVzZW50YXRpb24+PC9BZGFwdGF0aW9uU2V0PjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKworICByZXQgPSBnc3RfbXBkX3BhcnNlIChtcGRjbGllbnQsIHhtbCwgKGdpbnQpIHN0cmxlbiAoeG1sKSk7CisgIGFzc2VydF9lcXVhbHNfaW50IChyZXQsIFRSVUUpOworCisgIC8qIHByb2Nlc3MgdGhlIHhtbCBkYXRhICovCisgIHJldCA9IGdzdF9tcGRfY2xpZW50X3NldHVwX21lZGlhX3ByZXNlbnRhdGlvbiAobXBkY2xpZW50LCBHU1RfQ0xPQ0tfVElNRV9OT05FLAorICAgICAgLTEsIE5VTEwpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBUUlVFKTsKKworICAvKiBnZXQgdGhlIGxpc3Qgb2YgYWRhcHRhdGlvbiBzZXRzIG9mIHRoZSBmaXJzdCBwZXJpb2QgKi8KKyAgYWRhcHRhdGlvblNldHMgPSBnc3RfbXBkX2NsaWVudF9nZXRfYWRhcHRhdGlvbl9zZXRzIChtcGRjbGllbnQpOworICBmYWlsX2lmIChhZGFwdGF0aW9uU2V0cyA9PSBOVUxMKTsKKworICBhZGFwdF9zZXQgPSAoR3N0QWRhcHRhdGlvblNldE5vZGUgKikgZ19saXN0X250aF9kYXRhIChhZGFwdGF0aW9uU2V0cywgMCk7CisgIGZhaWxfaWYgKGFkYXB0X3NldCA9PSBOVUxMKTsKKworICAvKiBzZXR1cCBzdHJlYW1pbmcgZnJvbSB0aGUgZmlyc3QgYWRhcHRhdGlvbiBzZXQuCisgICAqIFNob3VsZCBmYWlsIGJlY2F1c2UgdGhlIHNlY29uZCBTIG5vZGUgZG9lcyBub3QgaGF2ZSBhICBtYXRjaGluZworICAgKiBTZWdtZW50VVJMIG5vZGUKKyAgICovCisgIHJldCA9IGdzdF9tcGRfY2xpZW50X3NldHVwX3N0cmVhbWluZyAobXBkY2xpZW50LCBhZGFwdF9zZXQpOworICBhc3NlcnRfZXF1YWxzX2ludCAocmV0LCBGQUxTRSk7CisKKyAgZ3N0X21wZF9jbGllbnRfZnJlZSAobXBkY2xpZW50KTsKK30KKworR1NUX0VORF9URVNUOworCisvKgorICogVGVzdCBwYXJzaW5nIG9mIHRoZSBkZWZhdWx0IHByZXNlbnRhdGlvbiBkZWxheSBwcm9wZXJ0eQorICovCitHU1RfU1RBUlRfVEVTVCAoZGFzaF9tcGRwYXJzZXJfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkpCit7CisgIGNvbnN0IGdjaGFyICp4bWwgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIj8+IgorICAgICAgIjxNUEQgeG1sbnM9XCJ1cm46bXBlZzpkYXNoOnNjaGVtYTptcGQ6MjAxMVwiIgorICAgICAgIiAgICAgcHJvZmlsZXM9XCJ1cm46bXBlZzpkYXNoOnByb2ZpbGU6aXNvZmYtbWFpbjoyMDExXCIiCisgICAgICAiICAgICBtYXhTZWdtZW50RHVyYXRpb249XCJQVDJTXCI+IgorICAgICAgIiAgPFBlcmlvZCBpZD1cIlBlcmlvZDBcIiBzdGFydD1cIlAwU1wiPjwvUGVyaW9kPjwvTVBEPiI7CisKKyAgZ2Jvb2xlYW4gcmV0OworICBHc3RNcGRDbGllbnQgKm1wZGNsaWVudCA9IGdzdF9tcGRfY2xpZW50X25ldyAoKTsKKyAgZ2ludDY0IHZhbHVlOworCisgIHJldCA9IGdzdF9tcGRfcGFyc2UgKG1wZGNsaWVudCwgeG1sLCAoZ2ludCkgc3RybGVuICh4bWwpKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQgKHJldCwgVFJVRSk7CisgIHZhbHVlID0gZ3N0X21wZF9jbGllbnRfcGFyc2VfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgKG1wZGNsaWVudCwgIjVzIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHZhbHVlLCA1MDAwKTsKKyAgdmFsdWUgPSBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LCAiNVMiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAodmFsdWUsIDUwMDApOworICB2YWx1ZSA9CisgICAgICBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LCAiNSBzZWNvbmRzIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHZhbHVlLCA1MDAwKTsKKyAgdmFsdWUgPSBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LCAiMjUwMG1zIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHZhbHVlLCAyNTAwKTsKKyAgdmFsdWUgPSBnc3RfbXBkX2NsaWVudF9wYXJzZV9kZWZhdWx0X3ByZXNlbnRhdGlvbl9kZWxheSAobXBkY2xpZW50LCAiM2YiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAodmFsdWUsIDYwMDApOworICB2YWx1ZSA9IGdzdF9tcGRfY2xpZW50X3BhcnNlX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5IChtcGRjbGllbnQsICIzRiIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0ICh2YWx1ZSwgNjAwMCk7CisgIHZhbHVlID0gZ3N0X21wZF9jbGllbnRfcGFyc2VfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgKG1wZGNsaWVudCwgIiIpOworICBhc3NlcnRfZXF1YWxzX2ludDY0ICh2YWx1ZSwgMCk7CisgIHZhbHVlID0gZ3N0X21wZF9jbGllbnRfcGFyc2VfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgKG1wZGNsaWVudCwgIjEwIik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHZhbHVlLCAwKTsKKyAgdmFsdWUgPQorICAgICAgZ3N0X21wZF9jbGllbnRfcGFyc2VfZGVmYXVsdF9wcmVzZW50YXRpb25fZGVsYXkgKG1wZGNsaWVudCwKKyAgICAgICJub3QgYSBudW1iZXIiKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAodmFsdWUsIDApOworCisgIGdzdF9tcGRfY2xpZW50X2ZyZWUgKG1wZGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKGRhc2hfbXBkcGFyc2VyX2R1cmF0aW9uKQoreworICBndWludDY0IHY7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCIiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIiAiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIjAiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIkQtMSIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiVCIsICZ2KSA9PSBGQUxTRSk7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQIiwgJnYpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUIiwgJnYpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBYIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQUFQiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUVCIsICZ2KSA9PSBGQUxTRSk7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQMUQiLCAmdikgPT0gVFJVRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUDFEMUQiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAxRDFNIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQMU0xRCIsICZ2KSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQMU0xRDFNIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQMU0xRDFEIiwgJnYpID09IEZBTFNFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAwTTBEIiwgJnYpID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAtMU0iLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAxNU0iLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAtMUQiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAzNUQiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlAtMVkiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBULTFIIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVDI1SCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQtMU0iLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUNjVNIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVC0xUyIsICZ2KSA9PSBGQUxTRSk7CisgIC8qIHNlY29uZHMgYXJlIGFsbG93ZWQgdG8gYmUgbGFyZ2VyIHRoYW4gNjAgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVDY1UyIsICZ2KSA9PSBUUlVFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUMS4xSCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQxLTFIIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVDEtSCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFQtSCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUFRIIiwgJnYpID09IEZBTFNFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVDAiLCAmdikgPT0gRkFMU0UpOworICBmYWlsX3VubGVzcyAoZ3N0X21wZHBhcnNlcl9wYXJzZV9kdXJhdGlvbiAoIlBUMS4xUyIsICZ2KSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQVDEuMS4xUyIsICZ2KSA9PSBGQUxTRSk7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQNTg1WSIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUDU4NFkiLCAmdikgPT0gVFJVRSk7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCIgUDEwRFQ4SCIsICZ2KSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tcGRwYXJzZXJfcGFyc2VfZHVyYXRpb24gKCJQMTBEIFQ4SCIsICZ2KSA9PSBGQUxTRSk7CisgIGZhaWxfdW5sZXNzIChnc3RfbXBkcGFyc2VyX3BhcnNlX2R1cmF0aW9uICgiUDEwRFQ4SCAiLCAmdikgPT0gVFJVRSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKwogLyoKICAqIGNyZWF0ZSBhIHRlc3Qgc3VpdGUgY29udGFpbmluZyBhbGwgZGFzaCB0ZXN0Y2FzZXMKICAqLwpAQCAtNDQ0OCw2ICs1MzU3LDggQEAKICAgVENhc2UgKnRjX3NpbXBsZU1QRCA9IHRjYXNlX2NyZWF0ZSAoInNpbXBsZU1QRCIpOwogICBUQ2FzZSAqdGNfY29tcGxleE1QRCA9IHRjYXNlX2NyZWF0ZSAoImNvbXBsZXhNUEQiKTsKICAgVENhc2UgKnRjX25lZ2F0aXZlVGVzdHMgPSB0Y2FzZV9jcmVhdGUgKCJuZWdhdGl2ZVRlc3RzIik7CisgIFRDYXNlICp0Y19zdHJpbmdUZXN0cyA9IHRjYXNlX2NyZWF0ZSAoInN0cmluZ1Rlc3RzIik7CisgIFRDYXNlICp0Y19kdXJhdGlvbiA9IHRjYXNlX2NyZWF0ZSAoImR1cmF0aW9uIik7CiAKICAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGdzdF9kYXNoX2RlbXV4X2RlYnVnLCAiZ3N0X2Rhc2hfZGVtdXhfZGVidWciLCAwLAogICAgICAgIm1wZWcgZGFzaCB0ZXN0cyIpOwpAQCAtNDU1MSwxMyArNTQ2MiwxNiBAQAogICAgICAgZGFzaF9tcGRwYXJzZXJfcGVyaW9kX2FkYXB0YXRpb25TZXRfcmVwcmVzZW50YXRpb25fc2VnbWVudFRlbXBsYXRlKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfcGVyaW9kX3N1YnNldCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19zaW1wbGVNUEQsIGRhc2hfbXBkcGFyc2VyX3V0Y3RpbWluZyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19zaW1wbGVNUEQsIGRhc2hfbXBkcGFyc2VyX3V0Y3RpbWluZ19pbnZhbGlkX3ZhbHVlKTsKIAogICAvKiB0ZXN0cyBjaGVja2luZyBvdGhlciBwb3NzaWJsZSB2YWx1ZXMgZm9yIGF0dHJpYnV0ZXMgKi8KICAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfdHlwZV9keW5hbWljKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX3NpbXBsZU1QRCwgZGFzaF9tcGRwYXJzZXJfdGVtcGxhdGVfcGFyc2luZyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19zaW1wbGVNUEQsIGRhc2hfbXBkcGFyc2VyX2lzb2ZmX29uZGVtYW5kX3Byb2ZpbGUpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfc2ltcGxlTVBELCBkYXNoX21wZHBhcnNlcl9Hc3REYXRlVGltZSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19zaW1wbGVNUEQsIGRhc2hfbXBkcGFyc2VyX2JpdHN0cmVhbVN3aXRjaGluZ19pbmhlcml0YW5jZSk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19zaW1wbGVNUEQsIGRhc2hfbXBkcGFyc2VyX3ZhcmlvdXNfZHVyYXRpb25fZm9ybWF0cyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19zaW1wbGVNUEQsIGRhc2hfbXBkcGFyc2VyX2RlZmF1bHRfcHJlc2VudGF0aW9uX2RlbGF5KTsKIAogICAvKiB0ZXN0cyBjaGVja2luZyB0aGUgTVBEIG1hbmFnZW1lbnQKICAgICogKGVnLiBzZXR0aW5nIGFjdGl2ZSBzdHJlYW1zLCBvYnRhaW5pbmcgYXR0cmlidXRlcyB2YWx1ZXMpCkBAIC00NTc1LDYgKzU0ODksMTAgQEAKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMMik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9nZXRfYmFzZVVSTDMpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw0KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMNSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9nZXRfYmFzZVVSTDYpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfZ2V0X2Jhc2VVUkw3KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX2dldF9iYXNlVVJMOCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9nZXRfbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9nZXRfc3RyZWFtUHJlc2VudGF0aW9uT2Zmc2V0KTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX3NlZ21lbnRzKTsKQEAgLTQ1ODUsMjAgKzU1MDMsMzYgQEAKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX3NlZ21lbnRfbGlzdCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jb21wbGV4TVBELCBkYXNoX21wZHBhcnNlcl9zZWdtZW50X3RlbXBsYXRlKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NvbXBsZXhNUEQsIGRhc2hfbXBkcGFyc2VyX3NlZ21lbnRfdGltZWxpbmUpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY29tcGxleE1QRCwgZGFzaF9tcGRwYXJzZXJfbXVsdGlwbGVfaW5oZXJpdGVkX3NlZ21lbnRVUkwpOwogCiAgIC8qIHRlc3RzIGNoZWNraW5nIHRoZSBwYXJzaW5nIG9mIG1pc3NpbmcvaW5jb21wbGV0ZSBhdHRyaWJ1dGVzIG9mIHhtbCAqLwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbmVnYXRpdmVUZXN0cywgZGFzaF9tcGRwYXJzZXJfbWlzc2luZ194bWwpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbmVnYXRpdmVUZXN0cywgZGFzaF9tcGRwYXJzZXJfbWlzc2luZ19tcGQpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbmVnYXRpdmVUZXN0cywgZGFzaF9tcGRwYXJzZXJfbm9fZW5kX3RhZyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLCBkYXNoX21wZHBhcnNlcl9ub19wcm9maWxlcyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLCBkYXNoX21wZHBhcnNlcl9ub19kZWZhdWx0X25hbWVzcGFjZSk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLAogICAgICAgZGFzaF9tcGRwYXJzZXJfd3JvbmdfcGVyaW9kX2R1cmF0aW9uX2luZmVycmVkX2Zyb21fbmV4dF9wZXJpb2QpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbmVnYXRpdmVUZXN0cywKICAgICAgIGRhc2hfbXBkcGFyc2VyX3dyb25nX3BlcmlvZF9kdXJhdGlvbl9pbmZlcnJlZF9mcm9tX25leHRfbWVkaWFQcmVzZW50YXRpb25EdXJhdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19uZWdhdGl2ZVRlc3RzLCBkYXNoX21wZHBhcnNlcl9uZWdhdGl2ZV9wZXJpb2RfZHVyYXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfbmVnYXRpdmVUZXN0cywKKyAgICAgIGRhc2hfbXBkcGFyc2VyX3JlYWRfdW5zaWduZWRfZnJvbV9uZWdhdGl2ZV92YWx1ZXMpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfbmVnYXRpdmVUZXN0cywKKyAgICAgIGRhc2hfbXBkcGFyc2VyX25lZ2F0aXZlX21lZGlhUHJlc2VudGF0aW9uRHVyYXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfbmVnYXRpdmVUZXN0cywKKyAgICAgIGRhc2hfbXBkcGFyc2VyX3VubWF0Y2hlZF9zZWdtZW50VGltZWxpbmVfc2VnbWVudFVSTCk7CisKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX3N0cmluZ1Rlc3RzLCBkYXNoX21wZHBhcnNlcl93aGl0ZXNwYWNlX3N0cmluZ3MpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfc3RyaW5nVGVzdHMsIGRhc2hfbXBkcGFyc2VyX3JmYzE3Mzhfc3RyaW5ncyk7CisKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2R1cmF0aW9uLCBkYXNoX21wZHBhcnNlcl9kdXJhdGlvbik7CiAKICAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19zaW1wbGVNUEQpOwogICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NvbXBsZXhNUEQpOwogICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX25lZ2F0aXZlVGVzdHMpOworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX3N0cmluZ1Rlc3RzKTsKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19kdXJhdGlvbik7CiAKICAgcmV0dXJuIHM7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXRhdXJpc3JjLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9kYXRhdXJpc3JjLmMKaW5kZXggOGRlZWNjZi4uYjAzNGIyZSAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvZGF0YXVyaXNyYy5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2RhdGF1cmlzcmMuYwpAQCAtMjMsNyArMjMsNyBAQAogI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgogCiAvKiBzaW5lIHdhdmUgZW5jb2RlZCBpbiBvZ2cvdm9yYmlzLCBjcmVhdGVkIHdpdGg6Ci0gKiAgIGdzdC1sYXVuY2gtMC4xMCBhdWRpb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTEwICEgYXVkaW9jb252ZXJ0ICEgXAorICogICBnc3QtbGF1bmNoLTEuMCBhdWRpb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MTEwICEgYXVkaW9jb252ZXJ0ICEgXAogICogICAgICAgICAgICAgICAgICAgYXVkaW8veC1yYXcsY2hhbm5lbHM9MSAhIHZvcmJpc2VuYyAhIG9nZ211eCAhIFwKICAqICAgICAgICAgICAgICAgICAgIGZpbGVzaW5rIGxvY2F0aW9uPXNpbmUub2dnCiAgKiBhbmQgdGhlbiBlbmNvZGVkIHRvIGJhc2U2NCAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzX2RlbXV4LmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9obHNfZGVtdXguYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDA3ZWEwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzX2RlbXV4LmMKQEAgLTAsMCArMSw3NDQgQEAKKy8qIEdTdHJlYW1lciB1bml0IHRlc3QgZm9yIEhMUyBkZW11eAorICoKKyAqIENvcHlyaWdodCAoYykgPDIwMTU+IFlvdVZpZXcgVFYgTHRkCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorI2luY2x1ZGUgImFkYXB0aXZlX2RlbXV4X2NvbW1vbi5oIgorCisjZGVmaW5lIERFTVVYX0VMRU1FTlRfTkFNRSAiaGxzZGVtdXgiCisKKyNkZWZpbmUgVFNfUEFDS0VUX0xFTiAxODgKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdEhsc0RlbXV4VGVzdElucHV0RGF0YQoreworICBjb25zdCBnY2hhciAqdXJpOworICBjb25zdCBndWludDggKnBheWxvYWQ7CisgIGd1aW50NjQgc2l6ZTsKK30gR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhOworCit0eXBlZGVmIHN0cnVjdCBfR3N0SGxzRGVtdXhUZXN0Q2FzZQoreworICBjb25zdCBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgKmlucHV0OworICBHc3RTdHJ1Y3R1cmUgKnN0YXRlOworfSBHc3RIbHNEZW11eFRlc3RDYXNlOworCit0eXBlZGVmIHN0cnVjdCBfR3N0SGxzRGVtdXhUZXN0QXBwZW5kVXJpQ29udGV4dAoreworICBHUXVhcmsgZmllbGRfaWQ7CisgIGNvbnN0IGdjaGFyICp1cmk7Cit9IEdzdEhsc0RlbXV4VGVzdEFwcGVuZFVyaUNvbnRleHQ7CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RIbHNEZW11eFRlc3RTZWxlY3RCaXRyYXRlQ29udGV4dAoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqZW5naW5lOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworICBndWludCBzZWxlY3RfY291bnQ7CisgIGd1bG9uZyBzaWduYWxfaGFuZGxlOworfSBHc3RIbHNEZW11eFRlc3RTZWxlY3RCaXRyYXRlQ29udGV4dDsKKworc3RhdGljIEdCeXRlQXJyYXkgKgorZ2VuZXJhdGVfdHJhbnNwb3J0X3N0cmVhbSAoZ3VpbnQgbGVuZ3RoKQoreworICBndWludCBwb3M7CisgIGd1aW50IGNjID0gMDsKKyAgR0J5dGVBcnJheSAqbXBlZ190czsKKworICBmYWlsX3VubGVzcyAoKGxlbmd0aCAlIFRTX1BBQ0tFVF9MRU4pID09IDApOworICBtcGVnX3RzID0gZ19ieXRlX2FycmF5X3NpemVkX25ldyAobGVuZ3RoKTsKKyAgaWYgKCFtcGVnX3RzKSB7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgbWVtc2V0IChtcGVnX3RzLT5kYXRhLCAweEZGLCBsZW5ndGgpOworICBmb3IgKHBvcyA9IDA7IHBvcyA8IGxlbmd0aDsgcG9zICs9IFRTX1BBQ0tFVF9MRU4pIHsKKyAgICBtcGVnX3RzLT5kYXRhW3Bvc10gPSAweDQ3OworICAgIG1wZWdfdHMtPmRhdGFbcG9zICsgMV0gPSAweDFGOworICAgIG1wZWdfdHMtPmRhdGFbcG9zICsgMl0gPSAweEZGOworICAgIG1wZWdfdHMtPmRhdGFbcG9zICsgM10gPSBjYzsKKyAgICBjYyA9IChjYyArIDEpICYgMHgwRjsKKyAgfQorICByZXR1cm4gbXBlZ190czsKK30KKworc3RhdGljIEdCeXRlQXJyYXkgKgorc2V0dXBfdGVzdF92YXJpYWJsZXMgKGNvbnN0IGdjaGFyICogZnVuY25hbWUsCisgICAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhICogaW5wdXRUZXN0RGF0YSwKKyAgICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICogb3V0cHV0VGVzdERhdGEsCisgICAgR3N0SGxzRGVtdXhUZXN0Q2FzZSAqIGhsc1Rlc3RDYXNlLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqIGVuZ2luZVRlc3REYXRhLCBndWludCBzZWdtZW50X3NpemUpCit7CisgIEdCeXRlQXJyYXkgKm1wZWdfdHMgPSBOVUxMOworCisgIGlmIChzZWdtZW50X3NpemUpIHsKKyAgICBtcGVnX3RzID0gZ2VuZXJhdGVfdHJhbnNwb3J0X3N0cmVhbSAoKHNlZ21lbnRfc2l6ZSkpOworICAgIGZhaWxfdW5sZXNzIChtcGVnX3RzICE9IE5VTEwpOworICAgIGZvciAoZ3VpbnQgaXRkID0gMDsgaW5wdXRUZXN0RGF0YVtpdGRdLnVyaTsgKytpdGQpIHsKKyAgICAgIGlmIChnX3N0cl9oYXNfc3VmZml4IChpbnB1dFRlc3REYXRhW2l0ZF0udXJpLCAiLnRzIikpIHsKKyAgICAgICAgaW5wdXRUZXN0RGF0YVtpdGRdLnBheWxvYWQgPSBtcGVnX3RzLT5kYXRhOworICAgICAgfQorICAgIH0KKyAgICBmb3IgKGd1aW50IG90ZCA9IDA7IG91dHB1dFRlc3REYXRhW290ZF0ubmFtZTsgKytvdGQpIHsKKyAgICAgIG91dHB1dFRlc3REYXRhW290ZF0uZXhwZWN0ZWRfZGF0YSA9IG1wZWdfdHMtPmRhdGE7CisgICAgICBlbmdpbmVUZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMgPQorICAgICAgICAgIGdfbGlzdF9hcHBlbmQgKGVuZ2luZVRlc3REYXRhLT5vdXRwdXRfc3RyZWFtcywgJm91dHB1dFRlc3REYXRhW290ZF0pOworICAgIH0KKyAgfQorICBobHNUZXN0Q2FzZS0+aW5wdXQgPSBpbnB1dFRlc3REYXRhOworICBobHNUZXN0Q2FzZS0+c3RhdGUgPSBnc3Rfc3RydWN0dXJlX25ld19lbXB0eSAoZnVuY25hbWUpOworICByZXR1cm4gbXBlZ190czsKK30KKworI2RlZmluZSBURVNUQ0FTRV9JTklUX0JPSUxFUlBMQVRFKHNlZ21lbnRfc2l6ZSkgXAorICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsgXAorICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyBlbmdpbmVfY2FsbGJhY2tzID0geyAwIH07IFwKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICplbmdpbmVUZXN0RGF0YTsgXAorICBHc3RIbHNEZW11eFRlc3RDYXNlIGhsc1Rlc3RDYXNlID0geyAwIH07IFwKKyAgR0J5dGVBcnJheSAqbXBlZ190cz1OVUxMOyBcCisgIGVuZ2luZVRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcoKTsgXAorICBmYWlsX3VubGVzcyAoZW5naW5lVGVzdERhdGEhPU5VTEwpOyBcCisgIG1wZWdfdHMgPSBzZXR1cF90ZXN0X3ZhcmlhYmxlcyhfX0ZVTkNUSU9OX18sIGlucHV0VGVzdERhdGEsIG91dHB1dFRlc3REYXRhLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaGxzVGVzdENhc2UsIGVuZ2luZVRlc3REYXRhLCBzZWdtZW50X3NpemUpOyBcCisKKyNkZWZpbmUgVEVTVENBU0VfVU5SRUZfQk9JTEVSUExBVEUgZG97IFwKKyAgaWYoZW5naW5lVGVzdERhdGEtPnNpZ25hbF9jb250ZXh0KXsgXAorICAgIGdfc2xpY2VfZnJlZSAoR3N0SGxzRGVtdXhUZXN0U2VsZWN0Qml0cmF0ZUNvbnRleHQsIGVuZ2luZVRlc3REYXRhLT5zaWduYWxfY29udGV4dCk7ICAgICAgICBcCisgIH0gXAorICBpZihtcGVnX3RzKSB7IGdfYnl0ZV9hcnJheV9mcmVlIChtcGVnX3RzLCBUUlVFKTsgfSAgICAgICAgIFwKKyAgZ3N0X3N0cnVjdHVyZV9mcmVlIChobHNUZXN0Q2FzZS5zdGF0ZSk7IFwKKyAgZ19vYmplY3RfdW5yZWYgKGVuZ2luZVRlc3REYXRhKTsgXAorfSB3aGlsZSgwKQorCitzdGF0aWMgZ2Jvb2xlYW4KK2FwcGVuZF9yZXF1ZXN0X3VyaSAoR1F1YXJrIGZpZWxkX2lkLCBHVmFsdWUgKiB2YWx1ZSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RIbHNEZW11eFRlc3RBcHBlbmRVcmlDb250ZXh0ICpjb250ZXh0ID0KKyAgICAgIChHc3RIbHNEZW11eFRlc3RBcHBlbmRVcmlDb250ZXh0ICopIHVzZXJfZGF0YTsKKyAgR1ZhbHVlIHVyaV92YWwgPSBHX1ZBTFVFX0lOSVQ7CisKKyAgaWYgKGNvbnRleHQtPmZpZWxkX2lkID09IGZpZWxkX2lkKSB7CisgICAgZ192YWx1ZV9pbml0ICgmdXJpX3ZhbCwgR19UWVBFX1NUUklORyk7CisgICAgZ192YWx1ZV9zZXRfc3RyaW5nICgmdXJpX3ZhbCwgY29udGV4dC0+dXJpKTsKKyAgICBnc3RfdmFsdWVfYXJyYXlfYXBwZW5kX3ZhbHVlICh2YWx1ZSwgJnVyaV92YWwpOworICAgIGdfdmFsdWVfdW5zZXQgKCZ1cmlfdmFsKTsKKyAgfQorICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIHZvaWQKK2dzdF9obHNkZW11eF90ZXN0X3NldF9pbnB1dF9kYXRhIChjb25zdCBHc3RIbHNEZW11eFRlc3RDYXNlICogdGVzdF9jYXNlLAorICAgIGNvbnN0IEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSAqIGlucHV0LCBHc3RUZXN0SFRUUFNyY0lucHV0ICogb3V0cHV0KQoreworICBvdXRwdXQtPnNpemUgPSBpbnB1dC0+c2l6ZTsKKyAgb3V0cHV0LT5jb250ZXh0ID0gKGdwb2ludGVyKSBpbnB1dDsKKyAgaWYgKG91dHB1dC0+c2l6ZSA9PSAwKSB7CisgICAgb3V0cHV0LT5zaXplID0gc3RybGVuICgoZ2NoYXIgKikgaW5wdXQtPnBheWxvYWQpOworICB9CisgIGZhaWxfdW5sZXNzIChpbnB1dC0+dXJpICE9IE5VTEwpOworICBpZiAoZ19zdHJfaGFzX3N1ZmZpeCAoaW5wdXQtPnVyaSwgIi5tM3U4IikpIHsKKyAgICBvdXRwdXQtPnJlc3BvbnNlX2hlYWRlcnMgPSBnc3Rfc3RydWN0dXJlX25ldyAoInJlc3BvbnNlLWhlYWRlcnMiLAorICAgICAgICAiQ29udGVudC1UeXBlIiwgR19UWVBFX1NUUklORywgImFwcGxpY2F0aW9uL3ZuZC5hcHBsZS5tcGVndXJsIiwgTlVMTCk7CisgIH0gZWxzZSBpZiAoZ19zdHJfaGFzX3N1ZmZpeCAoaW5wdXQtPnVyaSwgIi50cyIpKSB7CisgICAgb3V0cHV0LT5yZXNwb25zZV9oZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXcgKCJyZXNwb25zZS1oZWFkZXJzIiwKKyAgICAgICAgIkNvbnRlbnQtVHlwZSIsIEdfVFlQRV9TVFJJTkcsICJ2aWRlby9tcDJ0IiwgTlVMTCk7CisgIH0KKyAgaWYgKGdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkICh0ZXN0X2Nhc2UtPnN0YXRlLCAicmVxdWVzdHMiKSkgeworICAgIEdzdEhsc0RlbXV4VGVzdEFwcGVuZFVyaUNvbnRleHQgY29udGV4dCA9CisgICAgICAgIHsgZ19xdWFya19mcm9tX3N0cmluZyAoInJlcXVlc3RzIiksIGlucHV0LT51cmkgfTsKKyAgICBnc3Rfc3RydWN0dXJlX21hcF9pbl9wbGFjZSAodGVzdF9jYXNlLT5zdGF0ZSwgYXBwZW5kX3JlcXVlc3RfdXJpLCAmY29udGV4dCk7CisgIH0gZWxzZSB7CisgICAgR1ZhbHVlIHJlcXVlc3RzID0gR19WQUxVRV9JTklUOworICAgIEdWYWx1ZSB1cmlfdmFsID0gR19WQUxVRV9JTklUOworCisgICAgZ192YWx1ZV9pbml0ICgmcmVxdWVzdHMsIEdTVF9UWVBFX0FSUkFZKTsKKyAgICBnX3ZhbHVlX2luaXQgKCZ1cmlfdmFsLCBHX1RZUEVfU1RSSU5HKTsKKyAgICBnX3ZhbHVlX3NldF9zdHJpbmcgKCZ1cmlfdmFsLCBpbnB1dC0+dXJpKTsKKyAgICBnc3RfdmFsdWVfYXJyYXlfYXBwZW5kX3ZhbHVlICgmcmVxdWVzdHMsICZ1cmlfdmFsKTsKKyAgICBnc3Rfc3RydWN0dXJlX3NldF92YWx1ZSAodGVzdF9jYXNlLT5zdGF0ZSwgInJlcXVlc3RzIiwgJnJlcXVlc3RzKTsKKyAgICBnX3ZhbHVlX3Vuc2V0ICgmdXJpX3ZhbCk7CisgICAgZ192YWx1ZV91bnNldCAoJnJlcXVlc3RzKTsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF9obHNkZW11eF90ZXN0X3NyY19zdGFydCAoR3N0VGVzdEhUVFBTcmMgKiBzcmMsCisgICAgY29uc3QgZ2NoYXIgKiB1cmksIEdzdFRlc3RIVFRQU3JjSW5wdXQgKiBpbnB1dF9kYXRhLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGNvbnN0IEdzdEhsc0RlbXV4VGVzdENhc2UgKnRlc3RfY2FzZSA9CisgICAgICAoY29uc3QgR3N0SGxzRGVtdXhUZXN0Q2FzZSAqKSB1c2VyX2RhdGE7CisgIGd1aW50IGZhaWxfY291bnQgPSAwOworCisgIEdTVF9ERUJVRyAoInNyY19zdGFydCAlcyIsIHVyaSk7CisgIGZvciAoZ3VpbnQgaSA9IDA7IHRlc3RfY2FzZS0+aW5wdXRbaV0udXJpOyArK2kpIHsKKyAgICBpZiAoc3RyY21wICh0ZXN0X2Nhc2UtPmlucHV0W2ldLnVyaSwgdXJpKSA9PSAwKSB7CisgICAgICBnc3RfaGxzZGVtdXhfdGVzdF9zZXRfaW5wdXRfZGF0YSAodGVzdF9jYXNlLCAmdGVzdF9jYXNlLT5pbnB1dFtpXSwKKyAgICAgICAgICBpbnB1dF9kYXRhKTsKKyAgICAgIEdTVF9ERUJVRyAoIm9wZW4gVVJJICVzIiwgdXJpKTsKKyAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgfQorICBnc3Rfc3RydWN0dXJlX2dldF91aW50ICh0ZXN0X2Nhc2UtPnN0YXRlLCAiZmFpbHVyZS1jb3VudCIsICZmYWlsX2NvdW50KTsKKyAgZmFpbF9jb3VudCsrOworICBnc3Rfc3RydWN0dXJlX3NldCAodGVzdF9jYXNlLT5zdGF0ZSwgImZhaWx1cmUtY291bnQiLCBHX1RZUEVfVUlOVCwKKyAgICAgIGZhaWxfY291bnQsIE5VTEwpOworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitnc3RfaGxzZGVtdXhfdGVzdF9zcmNfY3JlYXRlIChHc3RUZXN0SFRUUFNyYyAqIHNyYywKKyAgICBndWludDY0IG9mZnNldCwKKyAgICBndWludCBsZW5ndGgsIEdzdEJ1ZmZlciAqKiByZXRidWYsIGdwb2ludGVyIGNvbnRleHQsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgR3N0QnVmZmVyICpidWY7CisgIC8qICBjb25zdCBHc3RIbHNEZW11eFRlc3RDYXNlICp0ZXN0X2Nhc2UgPSAoY29uc3QgR3N0SGxzRGVtdXhUZXN0Q2FzZSAqKSB1c2VyX2RhdGE7ICovCisgIEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSAqaW5wdXQgPSAoR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhICopIGNvbnRleHQ7CisKKyAgYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYWxsb2NhdGUgKE5VTEwsIGxlbmd0aCwgTlVMTCk7CisgIGZhaWxfaWYgKGJ1ZiA9PSBOVUxMLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgYnVmZmVyIik7CisgIGZhaWxfaWYgKGlucHV0LT5wYXlsb2FkID09IE5VTEwpOworICBnc3RfYnVmZmVyX2ZpbGwgKGJ1ZiwgMCwgaW5wdXQtPnBheWxvYWQgKyBvZmZzZXQsIGxlbmd0aCk7CisgICpyZXRidWYgPSBidWY7CisgIHJldHVybiBHU1RfRkxPV19PSzsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9obHNkZW11eF90ZXN0X25ldHdvcmtfZXJyb3Jfc3JjX2NyZWF0ZSAoR3N0VGVzdEhUVFBTcmMgKiBzcmMsCisgICAgZ3VpbnQ2NCBvZmZzZXQsCisgICAgZ3VpbnQgbGVuZ3RoLCBHc3RCdWZmZXIgKiogcmV0YnVmLCBncG9pbnRlciBjb250ZXh0LCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGNvbnN0IEdzdEhsc0RlbXV4VGVzdENhc2UgKnRlc3RfY2FzZSA9CisgICAgICAoY29uc3QgR3N0SGxzRGVtdXhUZXN0Q2FzZSAqKSB1c2VyX2RhdGE7CisgIEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSAqaW5wdXQgPSAoR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhICopIGNvbnRleHQ7CisgIGNvbnN0IGdjaGFyICpmYWlsdXJlX3N1ZmZpeDsKKyAgZ3VpbnQ2NCBmYWlsdXJlX3Bvc2l0aW9uID0gMDsKKworICBmYWlsX3VubGVzcyAodGVzdF9jYXNlICE9IE5VTEwpOworICBmYWlsX3VubGVzcyAoaW5wdXQgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChpbnB1dC0+dXJpICE9IE5VTEwpOworICBmYWlsdXJlX3N1ZmZpeCA9CisgICAgICBnc3Rfc3RydWN0dXJlX2dldF9zdHJpbmcgKHRlc3RfY2FzZS0+c3RhdGUsICJmYWlsdXJlLXN1ZmZpeCIpOworICBpZiAoIWZhaWx1cmVfc3VmZml4KSB7CisgICAgZmFpbHVyZV9zdWZmaXggPSAiLnRzIjsKKyAgfQorICBpZiAoIWdzdF9zdHJ1Y3R1cmVfZ2V0X3VpbnQ2NCAodGVzdF9jYXNlLT5zdGF0ZSwgImZhaWx1cmUtcG9zaXRpb24iLAorICAgICAgICAgICZmYWlsdXJlX3Bvc2l0aW9uKSkgeworICAgIGZhaWx1cmVfcG9zaXRpb24gPSAxMCAqIFRTX1BBQ0tFVF9MRU47CisgIH0KKyAgR1NUX0RFQlVHICgibmV0d29ya19lcnJvciAlcyAlcyAlIiBHX0dVSU5UNjRfRk9STUFUICIgQCAlIiBHX0dVSU5UNjRfRk9STUFULAorICAgICAgaW5wdXQtPnVyaSwgZmFpbHVyZV9zdWZmaXgsIG9mZnNldCwgZmFpbHVyZV9wb3NpdGlvbik7CisgIGlmIChnX3N0cl9oYXNfc3VmZml4IChpbnB1dC0+dXJpLCBmYWlsdXJlX3N1ZmZpeCkKKyAgICAgICYmIG9mZnNldCA+PSBmYWlsdXJlX3Bvc2l0aW9uKSB7CisgICAgR1NUX0RFQlVHICgicmV0dXJuIGVycm9yIik7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIFJFQUQsCisgICAgICAgICgoIkEgbmV0d29yayBlcnJvciBvY2N1cnJlZCwgb3IgdGhlIHNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5LiIpKSwgKCJBIG5ldHdvcmsgZXJyb3Igb2NjdXJyZWQsIG9yIHRoZSBzZXJ2ZXIgY2xvc2VkIHRoZSBjb25uZWN0aW9uIHVuZXhwZWN0ZWRseS4iKSk7CisgICAgKnJldGJ1ZiA9IE5VTEw7CisgICAgcmV0dXJuIEdTVF9GTE9XX0VSUk9SOworICB9CisgIHJldHVybiBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfY3JlYXRlIChzcmMsIG9mZnNldCwgbGVuZ3RoLCByZXRidWYsIGNvbnRleHQsCisgICAgICB1c2VyX2RhdGEpOworfQorCisvKioqKioqKioqKioqKioqKioqKiogVGVzdCBzcGVjaWZpYyBjb2RlIHN0YXJ0cyBoZXJlICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogVGVzdCBhIG1lZGlhIG1hbmlmZXN0IHdpdGggYSBzaW5nbGUgc2VnbWVudAorICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKHNpbXBsZVRlc3QpCit7CisgIC8qIHNlZ21lbnRfc2l6ZSBuZWVkcyB0byBsYXJnZXIgdGhhbiAySywgb3RoZXJ3aXNlIGdzdGhsc2RlbXV4IHdpbGwKKyAgICAgbm90IHBlcmZvcm0gYSB0eXBlZmluZCBvbiB0aGUgYnVmZmVyICovCisgIGNvbnN0IGd1aW50IHNlZ21lbnRfc2l6ZSA9IDMwICogVFNfUEFDS0VUX0xFTjsKKyAgY29uc3QgZ2NoYXIgKm1hbmlmZXN0ID0KKyAgICAgICIjRVhUTTNVIFxuIgorICAgICAgIiNFWFQtWC1UQVJHRVREVVJBVElPTjoxXG4iCisgICAgICAiI0VYVElORjoxLFRlc3RcbiIgIjAwMS50c1xuIiAiI0VYVC1YLUVORExJU1RcbiI7CisgIEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L21lZGlhLm0zdTgiLCAoZ3VpbnQ4ICopIG1hbmlmZXN0LCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMDAxLnRzIiwgTlVMTCwgc2VnbWVudF9zaXplfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7InNyY18wIiwgc2VnbWVudF9zaXplLCBOVUxMfSwKKyAgICB7TlVMTCwgMCwgTlVMTH0KKyAgfTsKKyAgVEVTVENBU0VfSU5JVF9CT0lMRVJQTEFURSAoc2VnbWVudF9zaXplKTsKKworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19jcmVhdGU7CisgIGVuZ2luZV9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIGVuZ2luZV9jYWxsYmFja3MuYXBwc2lua19lb3MgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfc2l6ZV9vZl9yZWNlaXZlZF9kYXRhOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCAmaGxzVGVzdENhc2UpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgIGlucHV0VGVzdERhdGFbMF0udXJpLCAmZW5naW5lX2NhbGxiYWNrcywgZW5naW5lVGVzdERhdGEpOworICBURVNUQ0FTRV9VTlJFRl9CT0lMRVJQTEFURTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdE1hc3RlclBsYXlsaXN0KQoreworICBjb25zdCBndWludCBzZWdtZW50X3NpemUgPSAzMCAqIFRTX1BBQ0tFVF9MRU47CisgIGNvbnN0IGdjaGFyICptYXN0ZXJfcGxheWxpc3QgPQorICAgICAgIiNFWFRNM1VcbiIKKyAgICAgICIjRVhULVgtVkVSU0lPTjo0XG4iCisgICAgICAiI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLCBCQU5EV0lEVEg9MTI1MTEzNSwgQ09ERUNTPVwiYXZjMS40MjAwMWYgbXA0YS40MC4yXCIsIFJFU09MVVRJT049NjQweDM1MlxuIgorICAgICAgIjEyMDAubTN1OFxuIjsKKyAgY29uc3QgZ2NoYXIgKm1lZGlhX3BsYXlsaXN0ID0KKyAgICAgICIjRVhUTTNVIFxuIgorICAgICAgIiNFWFQtWC1UQVJHRVREVVJBVElPTjoxXG4iCisgICAgICAiI0VYVElORjoxLFRlc3RcbiIgIjAwMS50c1xuIiAiI0VYVC1YLUVORExJU1RcbiI7CisgIEdzdEhsc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L21hc3Rlci5tM3U4IiwgKGd1aW50OCAqKSBtYXN0ZXJfcGxheWxpc3QsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC8xMjAwLm0zdTgiLCAoZ3VpbnQ4ICopIG1lZGlhX3BsYXlsaXN0LCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvMDAxLnRzIiwgTlVMTCwgc2VnbWVudF9zaXplfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0KKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsic3JjXzAiLCBzZWdtZW50X3NpemUsIE5VTEx9LAorICAgIHtOVUxMLCAwLCBOVUxMfQorICB9OworICBjb25zdCBHVmFsdWUgKnJlcXVlc3RzOworICBURVNUQ0FTRV9JTklUX0JPSUxFUlBMQVRFIChzZWdtZW50X3NpemUpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX2NyZWF0ZTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX3JlY2VpdmVkX2RhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2hlY2tfcmVjZWl2ZWRfZGF0YTsKKyAgZW5naW5lX2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19zaXplX29mX3JlY2VpdmVkX2RhdGE7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsICZobHNUZXN0Q2FzZSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvbWFzdGVyLm0zdTgiLCAmZW5naW5lX2NhbGxiYWNrcywgZW5naW5lVGVzdERhdGEpOworCisgIHJlcXVlc3RzID0gZ3N0X3N0cnVjdHVyZV9nZXRfdmFsdWUgKGhsc1Rlc3RDYXNlLnN0YXRlLCAicmVxdWVzdHMiKTsKKyAgZmFpbF91bmxlc3MgKHJlcXVlc3RzICE9IE5VTEwpOworICBhc3NlcnRfZXF1YWxzX3VpbnQ2NCAoZ3N0X3ZhbHVlX2FycmF5X2dldF9zaXplIChyZXF1ZXN0cyksCisgICAgICBzaXplb2YgKGlucHV0VGVzdERhdGEpIC8gc2l6ZW9mIChpbnB1dFRlc3REYXRhWzBdKSAtIDEpOworICBmb3IgKGd1aW50IGkgPSAwOyBpbnB1dFRlc3REYXRhW2ldLnVyaTsgKytpKSB7CisgICAgY29uc3QgR1ZhbHVlICp1cmk7CisgICAgdXJpID0gZ3N0X3ZhbHVlX2FycmF5X2dldF92YWx1ZSAocmVxdWVzdHMsIGkpOworICAgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgICAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKGlucHV0VGVzdERhdGFbaV0udXJpLCBnX3ZhbHVlX2dldF9zdHJpbmcgKHVyaSkpOworICB9CisgIFRFU1RDQVNFX1VOUkVGX0JPSUxFUlBMQVRFOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qCisgKiBUZXN0IHNlZWtpbmcKKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0U2VlaykKK3sKKyAgY29uc3QgZ3VpbnQgc2VnbWVudF9zaXplID0gNjAgKiBUU19QQUNLRVRfTEVOOworICBjb25zdCBnY2hhciAqbWFuaWZlc3QgPQorICAgICAgIiNFWFRNM1UgXG4iCisgICAgICAiI0VYVC1YLVRBUkdFVERVUkFUSU9OOjFcbiIKKyAgICAgICIjRVhUSU5GOjEsVGVzdFxuIiAiMDAxLnRzXG4iICIjRVhULVgtRU5ETElTVFxuIjsKKyAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvbWVkaWEubTN1OCIsIChndWludDggKikgbWFuaWZlc3QsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC8wMDEudHMiLCBOVUxMLCBzZWdtZW50X3NpemV9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsic3JjXzAiLCBzZWdtZW50X3NpemUsIE5VTEx9LAorICAgIHtOVUxMLCAwLCBOVUxMfQorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICplbmdpbmVUZXN0RGF0YTsKKyAgR3N0SGxzRGVtdXhUZXN0Q2FzZSBobHNUZXN0Q2FzZSA9IHsgMCB9OworICBHQnl0ZUFycmF5ICptcGVnX3RzID0gTlVMTDsKKworICBlbmdpbmVUZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBtcGVnX3RzID0gc2V0dXBfdGVzdF92YXJpYWJsZXMgKF9fRlVOQ1RJT05fXywgaW5wdXRUZXN0RGF0YSwgb3V0cHV0VGVzdERhdGEsCisgICAgICAmaGxzVGVzdENhc2UsIGVuZ2luZVRlc3REYXRhLCBzZWdtZW50X3NpemUpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX2NyZWF0ZTsKKyAgLyogc2VlayB0byA1bXMuCisgICAqIEJlY2F1c2UgdGhlcmUgaXMgb25seSBvbmUgZnJhZ21lbnQsIHdlIGV4cGVjdCB0aGUgd2hvbGUgZmlsZSB0byBiZQorICAgKiBkb3dubG9hZGVkIGFnYWluCisgICAqLworICBlbmdpbmVUZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrID0gMjAgKiBUU19QQUNLRVRfTEVOOworICBlbmdpbmVUZXN0RGF0YS0+c2Vla19ldmVudCA9CisgICAgICBnc3RfZXZlbnRfbmV3X3NlZWsgKDEuMCwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfS0VZX1VOSVQsIEdTVF9TRUVLX1RZUEVfU0VULAorICAgICAgNSAqIEdTVF9NU0VDT05ELCBHU1RfU0VFS19UWVBFX05PTkUsIDApOworCisgIGdzdF90ZXN0X2h0dHBfc3JjX2luc3RhbGxfY2FsbGJhY2tzICgmaHR0cF9zcmNfY2FsbGJhY2tzLCAmaGxzVGVzdENhc2UpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZWVrIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICBpbnB1dFRlc3REYXRhWzBdLnVyaSwgZW5naW5lVGVzdERhdGEpOworCisgIFRFU1RDQVNFX1VOUkVGX0JPSUxFUlBMQVRFOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCitydW5fc2Vla19wb3NpdGlvbl90ZXN0IChnZG91YmxlIHJhdGUsIEdzdFNlZWtUeXBlIHN0YXJ0X3R5cGUsCisgICAgZ3VpbnQ2NCBzZWVrX3N0YXJ0LCBHc3RTZWVrVHlwZSBzdG9wX3R5cGUsCisgICAgZ3VpbnQ2NCBzZWVrX3N0b3AsIEdzdFNlZWtGbGFncyBmbGFncywgZ3VpbnQ2NCBzZWdtZW50X3N0YXJ0LAorICAgIGd1aW50NjQgc2VnbWVudF9zdG9wLCBnaW50IHNlZ21lbnRzKQoreworICBjb25zdCBndWludCBzZWdtZW50X3NpemUgPSA2MCAqIFRTX1BBQ0tFVF9MRU47CisgIGNvbnN0IGdjaGFyICptYW5pZmVzdCA9CisgICAgICAiI0VYVE0zVSBcbiIKKyAgICAgICIjRVhULVgtVEFSR0VURFVSQVRJT046MVxuIgorICAgICAgIiNFWFRJTkY6MSxUZXN0XG4iICIwMDEudHNcbiIKKyAgICAgICIjRVhUSU5GOjEsVGVzdFxuIiAiMDAyLnRzXG4iCisgICAgICAiI0VYVElORjoxLFRlc3RcbiIgIjAwMy50c1xuIgorICAgICAgIiNFWFRJTkY6MSxUZXN0XG4iICIwMDQudHNcbiIgIiNFWFQtWC1FTkRMSVNUXG4iOworICBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9tZWRpYS5tM3U4IiwgKGd1aW50OCAqKSBtYW5pZmVzdCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzAwMS50cyIsIE5VTEwsIHNlZ21lbnRfc2l6ZX0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzAwMi50cyIsIE5VTEwsIHNlZ21lbnRfc2l6ZX0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzAwMy50cyIsIE5VTEwsIHNlZ21lbnRfc2l6ZX0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzAwNC50cyIsIE5VTEwsIHNlZ21lbnRfc2l6ZX0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJzcmNfMCIsIHNlZ21lbnRfc2l6ZSAqIHNlZ21lbnRzLCBOVUxMfSwKKyAgICB7TlVMTCwgMCwgTlVMTH0KKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqZW5naW5lVGVzdERhdGE7CisgIEdzdEhsc0RlbXV4VGVzdENhc2UgaGxzVGVzdENhc2UgPSB7IDAgfTsKKyAgR0J5dGVBcnJheSAqbXBlZ190cyA9IE5VTEw7CisKKyAgZW5naW5lVGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgbXBlZ190cyA9IHNldHVwX3Rlc3RfdmFyaWFibGVzIChfX0ZVTkNUSU9OX18sIGlucHV0VGVzdERhdGEsIG91dHB1dFRlc3REYXRhLAorICAgICAgJmhsc1Rlc3RDYXNlLCBlbmdpbmVUZXN0RGF0YSwgc2VnbWVudF9zaXplKTsKKworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19jcmVhdGU7CisKKyAgLyogRklYTUUgaGFjayB0byBhdm9pZCBoYXZpbmcgYSAwIHNlcW51bSAqLworICBnc3RfdXRpbF9zZXFudW1fbmV4dCAoKTsKKworICAvKiBTZWVrIHRvIDEuNXMsIGV4cGVjdCBpdCB0byBzdGFydCBmcm9tIDFzICovCisgIGVuZ2luZVRlc3REYXRhLT50aHJlc2hvbGRfZm9yX3NlZWsgPSAyMCAqIFRTX1BBQ0tFVF9MRU47CisgIGVuZ2luZVRlc3REYXRhLT5zZWVrX2V2ZW50ID0KKyAgICAgIGdzdF9ldmVudF9uZXdfc2VlayAocmF0ZSwgR1NUX0ZPUk1BVF9USU1FLCBmbGFncywgc3RhcnRfdHlwZSwKKyAgICAgIHNlZWtfc3RhcnQsIHN0b3BfdHlwZSwgc2Vla19zdG9wKTsKKyAgZ3N0X3NlZ21lbnRfaW5pdCAoJm91dHB1dFRlc3REYXRhWzBdLnBvc3Rfc2Vla19zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBvdXRwdXRUZXN0RGF0YVswXS5wb3N0X3NlZWtfc2VnbWVudC5yYXRlID0gcmF0ZTsKKyAgb3V0cHV0VGVzdERhdGFbMF0ucG9zdF9zZWVrX3NlZ21lbnQuc3RhcnQgPSBzZWdtZW50X3N0YXJ0OworICBvdXRwdXRUZXN0RGF0YVswXS5wb3N0X3NlZWtfc2VnbWVudC50aW1lID0gc2VnbWVudF9zdGFydDsKKyAgb3V0cHV0VGVzdERhdGFbMF0ucG9zdF9zZWVrX3NlZ21lbnQuc3RvcCA9IHNlZ21lbnRfc3RvcDsKKyAgb3V0cHV0VGVzdERhdGFbMF0uc2VnbWVudF92ZXJpZmljYXRpb25fbmVlZGVkID0gVFJVRTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgJmhsc1Rlc3RDYXNlKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2VlayAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgaW5wdXRUZXN0RGF0YVswXS51cmksIGVuZ2luZVRlc3REYXRhKTsKKworICBURVNUQ0FTRV9VTlJFRl9CT0lMRVJQTEFURTsKK30KKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtLZXlVbml0UG9zaXRpb24pCit7CisgIC8qIFNlZWsgdG8gMS41cyB3aXRoIGtleSB1bml0LCBpdCBzaG91bGQgZ28gYmFjayB0byAxLjBzLiAzIHNlZ21lbnRzIHdpbGwgYmUKKyAgICogcHVzaGVkICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfS0VZX1VOSVQsCisgICAgICAxMDAwICogR1NUX01TRUNPTkQsIC0xLCAzKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGhvdXQga2V5IHVuaXQsIGl0IHNob3VsZCBrZWVwIHRoZSAxLjVzLCBidXQgc3RpbGwgcHVzaAorICAgKiBmcm9tIHRoZSAxc3Qgc2VnbWVudCwgc28gMyBzZWdtZW50cyB3aWxsIGJlCisgICAqIHB1c2hlZCAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0gsIDE1MDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1VwZGF0ZVN0b3BQb3NpdGlvbikKK3sKKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX05PTkUsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAzMDAwICogR1NUX01TRUNPTkQsIDAsIDAsIDMwMDAgKiBHU1RfTVNFQ09ORCwgMyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrU25hcEJlZm9yZVBvc2l0aW9uKQoreworICAvKiBTZWVrIHRvIDEuNXMsIHNuYXAgYmVmb3JlLCBpdCBnbyB0byAxcyAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFLAorICAgICAgMTAwMCAqIEdTVF9NU0VDT05ELCAtMSwgMyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtTbmFwQWZ0ZXJQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGggc25hcCBhZnRlciwgaXQgc2hvdWxkIG1vdmUgdG8gMnMgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSLAorICAgICAgMjAwMCAqIEdTVF9NU0VDT05ELCAtMSwgMik7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitHU1RfU1RBUlRfVEVTVCAodGVzdFJldmVyc2VTZWVrU25hcEJlZm9yZVBvc2l0aW9uKQoreworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgtMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDI1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQkVGT1JFLCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICAzMDAwICogR1NUX01TRUNPTkQsIDIpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RSZXZlcnNlU2Vla1NuYXBBZnRlclBvc2l0aW9uKQoreworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgtMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDI1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX0ZMQUdfRkxVU0ggfCBHU1RfU0VFS19GTEFHX1NOQVBfQUZURVIsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIDIwMDAgKiBHU1RfTVNFQ09ORCwgMSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3REb3dubG9hZEVycm9yTWVzc2FnZUNhbGxiYWNrIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqIGVuZ2luZSwKKyAgICBHc3RNZXNzYWdlICogbXNnLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdFcnJvciAqZXJyID0gTlVMTDsKKyAgZ2NoYXIgKmRiZ19pbmZvID0gTlVMTDsKKworICBmYWlsX3VubGVzcyAoR1NUX01FU1NBR0VfVFlQRSAobXNnKSA9PSBHU1RfTUVTU0FHRV9FUlJPUik7CisgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yIChtc2csICZlcnIsICZkYmdfaW5mbyk7CisgIEdTVF9ERUJVRyAoIkVycm9yIGZyb20gZWxlbWVudCAlcyA6ICVzXG4iLAorICAgICAgR1NUX09CSkVDVF9OQU1FIChtc2ctPnNyYyksIGVyci0+bWVzc2FnZSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19zdHJpbmcgKEdTVF9PQkpFQ1RfTkFNRSAobXNnLT5zcmMpLCBERU1VWF9FTEVNRU5UX05BTUUpOworICBnX2Vycm9yX2ZyZWUgKGVycik7CisgIGdfZnJlZSAoZGJnX2luZm8pOworICBnX21haW5fbG9vcF9xdWl0IChlbmdpbmUtPmxvb3ApOworfQorCisvKiB0ZXN0IGZhaWxpbmcgdG8gZG93bmxvYWQgdGhlIG1lZGlhIHBsYXlsaXN0ICovCitHU1RfU1RBUlRfVEVTVCAodGVzdE1lZGlhUGxheWxpc3ROb3RGb3VuZCkKK3sKKyAgY29uc3QgZ2NoYXIgKm1hc3Rlcl9wbGF5bGlzdCA9CisgICAgICAiI0VYVE0zVVxuIgorICAgICAgIiNFWFQtWC1WRVJTSU9OOjRcbiIKKyAgICAgICIjRVhULVgtU1RSRUFNLUlORjpQUk9HUkFNLUlEPTEsIEJBTkRXSURUSD0xMjUxMTM1LCBDT0RFQ1M9XCJhdmMxLjQyMDAxZiBtcDRhLjQwLjJcIiwgUkVTT0xVVElPTj02NDB4MzUyXG4iCisgICAgICAiMTIwMC5tM3U4XG4iOworICBHc3RIbHNEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9tYXN0ZXIubTN1OCIsIChndWludDggKikgbWFzdGVyX3BsYXlsaXN0LCAwfSwKKyAgICB7TlVMTCwgTlVMTCwgMH0KKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsic3JjXzAiLCAwLCBOVUxMfSwKKyAgICB7TlVMTCwgMCwgTlVMTH0KKyAgfTsKKyAgVEVTVENBU0VfSU5JVF9CT0lMRVJQTEFURSAoMCk7CisKKyAgZ3N0X3N0cnVjdHVyZV9zZXQgKGhsc1Rlc3RDYXNlLnN0YXRlLAorICAgICAgImZhaWx1cmUtY291bnQiLCBHX1RZUEVfVUlOVCwgMCwKKyAgICAgICJmYWlsdXJlLXN1ZmZpeCIsIEdfVFlQRV9TVFJJTkcsICIxMjAwLm0zdTgiLCBOVUxMKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfY3JlYXRlOworICBlbmdpbmVfY2FsbGJhY2tzLmFwcHNpbmtfcmVjZWl2ZWRfZGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhOworICBlbmdpbmVfY2FsbGJhY2tzLmJ1c19lcnJvcl9tZXNzYWdlID0gdGVzdERvd25sb2FkRXJyb3JNZXNzYWdlQ2FsbGJhY2s7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsICZobHNUZXN0Q2FzZSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvbWFzdGVyLm0zdTgiLCAmZW5naW5lX2NhbGxiYWNrcywgZW5naW5lVGVzdERhdGEpOworCisgIFRFU1RDQVNFX1VOUkVGX0JPSUxFUlBMQVRFOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCitobHNkZW11eF90ZXN0X2NoZWNrX25vX2RhdGFfcmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lCisgICAgKiBlbmdpbmUsIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGFzc2VydF9lcXVhbHNfdWludDY0IChzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUsIDApOworICBnX21haW5fbG9vcF9xdWl0IChlbmdpbmUtPmxvb3ApOworfQorCisvKiB0ZXN0IGZhaWxpbmcgdG8gZG93bmxvYWQgYSBtZWRpYSBzZWdtZW50IChhIDQwNCBlcnJvcikgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0RnJhZ21lbnROb3RGb3VuZCkKK3sKKyAgY29uc3QgZ2NoYXIgKm1hc3Rlcl9wbGF5bGlzdCA9CisgICAgICAiI0VYVE0zVVxuIgorICAgICAgIiNFWFQtWC1WRVJTSU9OOjRcbiIKKyAgICAgICIjRVhULVgtU1RSRUFNLUlORjpQUk9HUkFNLUlEPTEsIEJBTkRXSURUSD0xMjUxMTM1LCBDT0RFQ1M9XCJhdmMxLjQyMDAxZiBtcDRhLjQwLjJcIiwgUkVTT0xVVElPTj02NDB4MzUyXG4iCisgICAgICAiMTIwMC5tM3U4XG4iOworICBjb25zdCBnY2hhciAqbWVkaWFfcGxheWxpc3QgPQorICAgICAgIiNFWFRNM1UgXG4iCisgICAgICAiI0VYVC1YLVRBUkdFVERVUkFUSU9OOjFcbiIKKyAgICAgICIjRVhUSU5GOjEsVGVzdFxuIiAiMDAxLnRzXG4iICIjRVhULVgtRU5ETElTVFxuIjsKKyAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvbWFzdGVyLm0zdTgiLCAoZ3VpbnQ4ICopIG1hc3Rlcl9wbGF5bGlzdCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzEyMDAubTN1OCIsIChndWludDggKikgbWVkaWFfcGxheWxpc3QsIDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfQorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJzcmNfMCIsIDAsIE5VTEx9LAorICAgIHtOVUxMLCAwLCBOVUxMfQorICB9OworICBURVNUQ0FTRV9JTklUX0JPSUxFUlBMQVRFICgwKTsKKworICBnc3Rfc3RydWN0dXJlX3NldCAoaGxzVGVzdENhc2Uuc3RhdGUsCisgICAgICAiZmFpbHVyZS1jb3VudCIsIEdfVFlQRV9VSU5ULCAwLAorICAgICAgImZhaWx1cmUtc3VmZml4IiwgR19UWVBFX1NUUklORywgIjAwMS50cyIsIE5VTEwpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X2hsc2RlbXV4X3Rlc3Rfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9obHNkZW11eF90ZXN0X3NyY19jcmVhdGU7CisgIGVuZ2luZV9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIGVuZ2luZV9jYWxsYmFja3MuYXBwc2lua19lb3MgPSBobHNkZW11eF90ZXN0X2NoZWNrX25vX2RhdGFfcmVjZWl2ZWQ7CisgIGVuZ2luZV9jYWxsYmFja3MuYnVzX2Vycm9yX21lc3NhZ2UgPSB0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjazsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgJmhsc1Rlc3RDYXNlKTsKKyAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfcnVuIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC9tYXN0ZXIubTN1OCIsICZlbmdpbmVfY2FsbGJhY2tzLCBlbmdpbmVUZXN0RGF0YSk7CisKKyAgVEVTVENBU0VfVU5SRUZfQk9JTEVSUExBVEU7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyogd29yay1hcm91bmQgdGhhdCBhZGFwdGl2ZWRlbXV4IGlzIG5vdCBwb3N0aW5nIGFuIGVycm9yIG1lc3NhZ2UKKyAgIGFib3V0IGZhaWx1cmUgdG8gZG93bmxvYWQgYSBmcmFnbWVudCAqLworc3RhdGljIHZvaWQKK21pc3NpbmdfbWVzc2FnZV9lb3NfY2FsbGJhY2sgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGEgPSBHU1RfQURBUFRJVkVfREVNVVhfVEVTVF9DQVNFICh1c2VyX2RhdGEpOworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0ICp0ZXN0T3V0cHV0U3RyZWFtRGF0YTsKKworICBmYWlsX3VubGVzcyAoc3RyZWFtICE9IE5VTEwpOworICB0ZXN0T3V0cHV0U3RyZWFtRGF0YSA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9maW5kX3Rlc3RfZGF0YV9ieV9zdHJlYW0gKHRlc3REYXRhLCBzdHJlYW0sIE5VTEwpOworICBmYWlsX3VubGVzcyAodGVzdE91dHB1dFN0cmVhbURhdGEgIT0gTlVMTCk7CisgIC8qIGV4cGVjdCB0byByZWNlaXZlIGxlc3MgdGhhbiBmaWxlIHNpemUgKi8KKyAgZmFpbF91bmxlc3MgKHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSA8CisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwKKyAgICAgICJzaXplIHZhbGlkYXRpb24gZmFpbGVkIGZvciAlcywgZXhwZWN0ZWQgPCAlZCByZWNlaXZlZCAlZCIsCisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+bmFtZSwgdGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX3NpemUsCisgICAgICBzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUpOworICB0ZXN0RGF0YS0+Y291bnRfb2ZfZmluaXNoZWRfc3RyZWFtcysrOworICBHU1RfREVCVUcgKCJFT1MgY2FsbGJhY2sgJWQgJWQiLAorICAgICAgdGVzdERhdGEtPmNvdW50X29mX2ZpbmlzaGVkX3N0cmVhbXMsCisgICAgICBnX2xpc3RfbGVuZ3RoICh0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMpKTsKKyAgaWYgKHRlc3REYXRhLT5jb3VudF9vZl9maW5pc2hlZF9zdHJlYW1zID09CisgICAgICBnX2xpc3RfbGVuZ3RoICh0ZXN0RGF0YS0+b3V0cHV0X3N0cmVhbXMpKSB7CisgICAgZ19tYWluX2xvb3BfcXVpdCAoZW5naW5lLT5sb29wKTsKKyAgfQorfQorCisKKy8qCisgKiBUZXN0IGZyYWdtZW50IGRvd25sb2FkIGVycm9yCisgKiBMZXQgdGhlIGFkYXB0aXZlIGRlbXV4IGRvd25sb2FkIGEgZmV3IGJ5dGVzLCB0aGVuIGluc3RydWN0IHRoZQorICogdGVzdCBzb3VwIGh0dHAgc3JjIGVsZW1lbnQgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yKQoreworICBjb25zdCBndWludCBzZWdtZW50X3NpemUgPSAzMCAqIFRTX1BBQ0tFVF9MRU47CisgIGNvbnN0IGdjaGFyICptYXN0ZXJfcGxheWxpc3QgPQorICAgICAgIiNFWFRNM1VcbiIKKyAgICAgICIjRVhULVgtVkVSU0lPTjo0XG4iCisgICAgICAiI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLCBCQU5EV0lEVEg9MTI1MTEzNSwgQ09ERUNTPVwiYXZjMS40MjAwMWYgbXA0YS40MC4yXCIsIFJFU09MVVRJT049NjQweDM1MlxuIgorICAgICAgIjEyMDAubTN1OFxuIjsKKyAgY29uc3QgZ2NoYXIgKm1lZGlhX3BsYXlsaXN0ID0KKyAgICAgICIjRVhUTTNVIFxuIgorICAgICAgIiNFWFQtWC1WRVJTSU9OOjRcbiIKKyAgICAgICIjRVhULVgtVEFSR0VURFVSQVRJT046MVxuIgorICAgICAgIiNFWFRJTkY6MSxUZXN0XG4iICIwMDEudHNcbiIKKyAgICAgICIjRVhUSU5GOjEsVGVzdFxuIiAiMDAyLnRzXG4iICIjRVhULVgtRU5ETElTVFxuIjsKKyAgR3N0SGxzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvbWFzdGVyLm0zdTgiLCAoZ3VpbnQ4ICopIG1hc3Rlcl9wbGF5bGlzdCwgMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0LzEyMDAubTN1OCIsIChndWludDggKikgbWVkaWFfcGxheWxpc3QsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC8wMDEudHMiLCBOVUxMLCBzZWdtZW50X3NpemV9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC8wMDIudHMiLCBOVUxMLCBzZWdtZW50X3NpemV9LAorICAgIHtOVUxMLCBOVUxMLCAwfQorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdEV4cGVjdGVkT3V0cHV0IG91dHB1dFRlc3REYXRhW10gPSB7CisgICAgeyJzcmNfMCIsIDIgKiBzZWdtZW50X3NpemUsIE5VTEx9LAorICAgIHtOVUxMLCAwLCBOVUxMfQorICB9OworICBjb25zdCBndWludDY0IGZhaWx1cmVfcG9zaXRpb24gPSAyMDQ4OworICBURVNUQ0FTRV9JTklUX0JPSUxFUlBMQVRFIChzZWdtZW50X3NpemUpOworCisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfaGxzZGVtdXhfdGVzdF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X2hsc2RlbXV4X3Rlc3RfbmV0d29ya19lcnJvcl9zcmNfY3JlYXRlOworICBnc3Rfc3RydWN0dXJlX3NldCAoaGxzVGVzdENhc2Uuc3RhdGUsCisgICAgICAiZmFpbHVyZS1zdWZmaXgiLCBHX1RZUEVfU1RSSU5HLCAiMDAxLnRzIiwKKyAgICAgICJmYWlsdXJlLXBvc2l0aW9uIiwgR19UWVBFX1VJTlQ2NCwgZmFpbHVyZV9wb3NpdGlvbiwgTlVMTCk7CisgIGVuZ2luZV9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIGVuZ2luZV9jYWxsYmFja3MuYXBwc2lua19lb3MgPSBtaXNzaW5nX21lc3NhZ2VfZW9zX2NhbGxiYWNrOworICBlbmdpbmVfY2FsbGJhY2tzLmJ1c19lcnJvcl9tZXNzYWdlID0gdGVzdERvd25sb2FkRXJyb3JNZXNzYWdlQ2FsbGJhY2s7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsICZobHNUZXN0Q2FzZSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgaW5wdXRUZXN0RGF0YVswXS51cmksICZlbmdpbmVfY2FsbGJhY2tzLCBlbmdpbmVUZXN0RGF0YSk7CisKKyAgVEVTVENBU0VfVU5SRUZfQk9JTEVSUExBVEU7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK2hsc19kZW11eF9zdWl0ZSAodm9pZCkKK3sKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJobHNfZGVtdXgiKTsKKyAgVENhc2UgKnRjX2Jhc2ljVGVzdCA9IHRjYXNlX2NyZWF0ZSAoImJhc2ljVGVzdCIpOworCisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHNpbXBsZVRlc3QpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0TWFzdGVyUGxheWxpc3QpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0TWVkaWFQbGF5bGlzdE5vdEZvdW5kKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdEZyYWdtZW50Tm90Rm91bmQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWspOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla0tleVVuaXRQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1VwZGF0ZVN0b3BQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrU25hcEJlZm9yZVBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtTbmFwQWZ0ZXJQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RSZXZlcnNlU2Vla1NuYXBCZWZvcmVQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RSZXZlcnNlU2Vla1NuYXBBZnRlclBvc2l0aW9uKTsKKworICB0Y2FzZV9hZGRfdW5jaGVja2VkX2ZpeHR1cmUgKHRjX2Jhc2ljVGVzdCwgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2V0dXAsCisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF90ZWFyZG93bik7CisKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19iYXNpY1Rlc3QpOworCisgIHJldHVybiBzOworfQorCitHU1RfQ0hFQ0tfTUFJTiAoaGxzX2RlbXV4KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL2hsc2RlbXV4X20zdTguYwppbmRleCA0MDYxMjNlLi5mNDllOTAxIDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9obHNkZW11eF9tM3U4LmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvaGxzZGVtdXhfbTN1OC5jCkBAIC0zMCw3ICszMCw3IEBACiAjaW5jbHVkZSAibTN1OC5oIgogI2luY2x1ZGUgIm0zdTguYyIKIAotR1NUX0RFQlVHX0NBVEVHT1JZIChmcmFnbWVudGVkX2RlYnVnKTsKK0dTVF9ERUJVR19DQVRFR09SWSAoaGxzX2RlYnVnKTsKIAogc3RhdGljIGNvbnN0IGdjaGFyICpJTlZBTElEX1BMQVlMSVNUID0gIiNFWFRNMyBVSU5WQUxJRCI7CiAKQEAgLTk0LDYgKzk0LDE2IEBACiAjRVhULVgtU1RSRUFNLUlORjpQUk9HUkFNLUlEPTEsQkFORFdJRFRIPTY1MDAwLENPREVDUz1cIm1wNGEuNDAuNVwiXG5cCiBodHRwOi8vZXhhbXBsZS5jb20vYXVkaW8tb25seS5tM3U4IjsKIAorc3RhdGljIGNvbnN0IGdjaGFyICpWQVJJQU5UX1BMQVlMSVNUX1dJVEhfVVJJX01JU1NJTkcgPSAiI0VYVE0zVSBcblwKKyNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSxCQU5EV0lEVEg9MTI4MDAwXG5cCitodHRwOi8vZXhhbXBsZS5jb20vbG93Lm0zdThcblwKKyNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSxCQU5EV0lEVEg9MjU2MDAwXG5cCitcblwKKyNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSxCQU5EV0lEVEg9NzY4MDAwXG5cCitodHRwOi8vZXhhbXBsZS5jb20vaGkubTN1OFxuXAorI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLEJBTkRXSURUSD02NTAwMCxDT0RFQ1M9XCJtcDRhLjQwLjVcIlxuXAoraHR0cDovL2V4YW1wbGUuY29tL2F1ZGlvLW9ubHkubTN1OCI7CisKIHN0YXRpYyBjb25zdCBnY2hhciAqRU1QVFlfTElORVNfVkFSSUFOVF9QTEFZTElTVCA9ICIjRVhUTTNVIFxuXAogI0VYVC1YLVNUUkVBTS1JTkY6UFJPR1JBTS1JRD0xLEJBTkRXSURUSD0xMjgwMDBcblxuXAogaHR0cDovL2V4YW1wbGUuY29tL2xvdy5tM3U4XG5cblwKQEAgLTM3MSw3ICszODEsNyBAQAogICBhc3NlcnRfZXF1YWxzX2ludCAoc3RyZWFtLT5iYW5kd2lkdGgsIDY1MDAwKTsKICAgYXNzZXJ0X2VxdWFsc19pbnQgKHN0cmVhbS0+cHJvZ3JhbV9pZCwgMSk7CiAgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChzdHJlYW0tPnVyaSwgImh0dHA6Ly9leGFtcGxlLmNvbS9hdWRpby1vbmx5Lm0zdTgiKTsKLSAgYXNzZXJ0X2VxdWFsc19zdHJpbmcgKHN0cmVhbS0+Y29kZWNzLCAiXCJtcDRhLjQwLjVcIiIpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoc3RyZWFtLT5jb2RlY3MsICJtcDRhLjQwLjUiKTsKIAogICAvKiBMb3cgKi8KICAgdG1wID0gZ19saXN0X25leHQgKHRtcCk7CkBAIC00MDgsNiArNDE4LDE3IEBACiAKIEdTVF9FTkRfVEVTVDsKIAorR1NUX1NUQVJUX1RFU1QgKHRlc3RfbG9hZF9tYWluX3BsYXlsaXN0X3ZhcmlhbnRfd2l0aF9taXNzaW5nX3VyaSkKK3sKKyAgR3N0TTNVOENsaWVudCAqY2xpZW50OworCisgIGNsaWVudCA9IGxvYWRfcGxheWxpc3QgKFZBUklBTlRfUExBWUxJU1RfV0lUSF9VUklfTUlTU0lORyk7CisgIGFzc2VydF9lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChjbGllbnQtPm1haW4tPmxpc3RzKSwgMyk7CisgIGdzdF9tM3U4X2NsaWVudF9mcmVlIChjbGllbnQpOworfQorCitHU1RfRU5EX1RFU1Q7CisKIEdTVF9TVEFSVF9URVNUICh0ZXN0X2xvYWRfd2luZG93c19saW5lX2VuZGluZ3NfdmFyaWFudF9wbGF5bGlzdCkKIHsKICAgZG9fdGVzdF9sb2FkX21haW5fcGxheWxpc3RfdmFyaWFudCAoV0lORE9XU19MSU5FX0VORElOR1NfVkFSSUFOVF9QTEFZTElTVCk7CkBAIC00OTAsNiArNTExLDggQEAKICAgR3N0TTNVOENsaWVudCAqY2xpZW50OwogICBHc3RNM1U4ICpwbDsKICAgR3N0TTNVOE1lZGlhRmlsZSAqZmlsZTsKKyAgZ2ludDY0IHN0YXJ0ID0gLTE7CisgIGdpbnQ2NCBzdG9wID0gLTE7CiAKICAgY2xpZW50ID0gbG9hZF9wbGF5bGlzdCAoTElWRV9QTEFZTElTVCk7CiAKQEAgLTUwOSw2ICs1MzIsOSBAQAogICBhc3NlcnRfZXF1YWxzX3N0cmluZyAoZmlsZS0+dXJpLAogICAgICAgImh0dHBzOi8vcHJpdi5leGFtcGxlLmNvbS9maWxlU2VxdWVuY2UyNjgzLnRzIik7CiAgIGFzc2VydF9lcXVhbHNfaW50IChmaWxlLT5zZXF1ZW5jZSwgMjY4Myk7CisgIGZhaWxfdW5sZXNzIChnc3RfbTN1OF9jbGllbnRfZ2V0X3NlZWtfcmFuZ2UgKGNsaWVudCwgJnN0YXJ0LCAmc3RvcCkpOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChzdGFydCwgMCk7CisgIGFzc2VydF9lcXVhbHNfZmxvYXQgKHN0b3AgLyAoZG91YmxlKSBHU1RfU0VDT05ELCAxNi4wKTsKIAogICBnc3RfbTN1OF9jbGllbnRfZnJlZSAoY2xpZW50KTsKIH0KQEAgLTU1Miw2ICs1NzgsOCBAQAogICBHc3RNM1U4Q2xpZW50ICpjbGllbnQ7CiAgIEdzdE0zVTggKnBsOwogICBHc3RNM1U4TWVkaWFGaWxlICpmaWxlOworICBnaW50NjQgc3RhcnQgPSAtMTsKKyAgZ2ludDY0IHN0b3AgPSAtMTsKIAogICBjbGllbnQgPSBsb2FkX3BsYXlsaXN0IChET1VCTEVTX1BMQVlMSVNUKTsKIApAQCAtNTY1LDYgKzU5MywxMCBAQAogICBhc3NlcnRfZXF1YWxzX2Zsb2F0IChmaWxlLT5kdXJhdGlvbiAvIChkb3VibGUpIEdTVF9TRUNPTkQsIDEwLjIzNDQpOwogICBmaWxlID0gR1NUX00zVThfTUVESUFfRklMRSAoZ19saXN0X250aF9kYXRhIChwbC0+ZmlsZXMsIDMpKTsKICAgYXNzZXJ0X2VxdWFsc19mbG9hdCAoZmlsZS0+ZHVyYXRpb24gLyAoZG91YmxlKSBHU1RfU0VDT05ELCA5LjkyKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9tM3U4X2NsaWVudF9nZXRfc2Vla19yYW5nZSAoY2xpZW50LCAmc3RhcnQsICZzdG9wKSk7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKHN0YXJ0LCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19mbG9hdCAoc3RvcCAvIChkb3VibGUpIEdTVF9TRUNPTkQsCisgICAgICAxMC4zMjEgKyA5LjY3ODkgKyAxMC4yMzQ0ICsgOS45Mik7CiAgIGdzdF9tM3U4X2NsaWVudF9mcmVlIChjbGllbnQpOwogfQogCkBAIC0xMzAxLDE5ICsxMzMzLDYyIEBACiBHU1RfRU5EX1RFU1Q7CiAjZW5kaWYKIAorR1NUX1NUQVJUX1RFU1QgKHRlc3RfdXJsX3dpdGhfc2xhc2hfcXVlcnlfcGFyYW0pCit7CisgIHN0YXRpYyBjb25zdCBnY2hhciAqTUFTVEVSX1BMQVlMSVNUID0gIiNFWFRNM1UgXG4iCisgICAgICAiI0VYVC1YLVZFUlNJT046NFxuIgorICAgICAgIiNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSwgQkFORFdJRFRIPTEyNTExMzUsIENPREVDUz1cImF2YzEuNDIwMDFmLCBtcDRhLjQwLjJcIiwgUkVTT0xVVElPTj02NDB4MzUyXG4iCisgICAgICAiMTI1MS9tZWRpYS5tM3U4P2FjbD0vKjEwNTQ1NTlfaDI2NF8xNTAway5tcDRcbiI7CisgIEdzdE0zVThDbGllbnQgKmNsaWVudDsKKyAgR3N0TTNVOCAqbWVkaWE7CisKKyAgY2xpZW50ID0gbG9hZF9wbGF5bGlzdCAoTUFTVEVSX1BMQVlMSVNUKTsKKworICBhc3NlcnRfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoY2xpZW50LT5tYWluLT5saXN0cyksIDEpOworICBtZWRpYSA9IGdfbGlzdF9udGhfZGF0YSAoY2xpZW50LT5tYWluLT5saXN0cywgMCk7CisgIGFzc2VydF9lcXVhbHNfc3RyaW5nIChtZWRpYS0+dXJpLAorICAgICAgImh0dHA6Ly9sb2NhbGhvc3QvMTI1MS9tZWRpYS5tM3U4P2FjbD0vKjEwNTQ1NTlfaDI2NF8xNTAway5tcDQiKTsKKyAgZ3N0X20zdThfY2xpZW50X2ZyZWUgKGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3Rfc3RyZWFtX2luZl90YWcpCit7CisgIHN0YXRpYyBjb25zdCBnY2hhciAqTUFTVEVSX1BMQVlMSVNUID0gIiNFWFRNM1UgXG4iCisgICAgICAiI0VYVC1YLVZFUlNJT046NFxuIgorICAgICAgIiNFWFQtWC1TVFJFQU0tSU5GOlBST0dSQU0tSUQ9MSwgQkFORFdJRFRIPTEyNTExMzUsIENPREVDUz1cImF2YzEuNDIwMDFmLCBtcDRhLjQwLjJcIiwgUkVTT0xVVElPTj02NDB4MzUyXG4iCisgICAgICAibWVkaWEubTN1OFxuIjsKKyAgR3N0TTNVOENsaWVudCAqY2xpZW50OworICBHc3RNM1U4ICptZWRpYTsKKworICBjbGllbnQgPSBsb2FkX3BsYXlsaXN0IChNQVNURVJfUExBWUxJU1QpOworCisgIGFzc2VydF9lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChjbGllbnQtPm1haW4tPmxpc3RzKSwgMSk7CisgIG1lZGlhID0gZ19saXN0X250aF9kYXRhIChjbGllbnQtPm1haW4tPmxpc3RzLCAwKTsKKyAgYXNzZXJ0X2VxdWFsc19pbnQ2NCAobWVkaWEtPnByb2dyYW1faWQsIDEpOworICBhc3NlcnRfZXF1YWxzX2ludDY0IChtZWRpYS0+d2lkdGgsIDY0MCk7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKG1lZGlhLT5oZWlnaHQsIDM1Mik7CisgIGFzc2VydF9lcXVhbHNfaW50NjQgKG1lZGlhLT5iYW5kd2lkdGgsIDEyNTExMzUpOworICBhc3NlcnRfZXF1YWxzX3N0cmluZyAobWVkaWEtPmNvZGVjcywgImF2YzEuNDIwMDFmLCBtcDRhLjQwLjIiKTsKKyAgZ3N0X20zdThfY2xpZW50X2ZyZWUgKGNsaWVudCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKwogc3RhdGljIFN1aXRlICoKIGhsc2RlbXV4X3N1aXRlICh2b2lkKQogewogICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoImhsc2RlbXV4X20zdTgiKTsKICAgVENhc2UgKnRjX20zdTggPSB0Y2FzZV9jcmVhdGUgKCJtM3U4Y2xpZW50Iik7CiAKLSAgR1NUX0RFQlVHX0NBVEVHT1JZX0lOSVQgKGZyYWdtZW50ZWRfZGVidWcsICJobHNkZW11eF9tM3UiLCAwLAotICAgICAgImhsc2RlbXV4IG0zdSB0ZXN0Iik7CisgIEdTVF9ERUJVR19DQVRFR09SWV9JTklUIChobHNfZGVidWcsICJobHNkZW11eF9tM3UiLCAwLCAiaGxzZGVtdXggbTN1IHRlc3QiKTsKIAogICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX20zdTgpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbTN1OCwgdGVzdF9sb2FkX21haW5fcGxheWxpc3RfaW52YWxpZCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X2xvYWRfbWFpbl9wbGF5bGlzdF9yZW5kaXRpb24pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbTN1OCwgdGVzdF9sb2FkX21haW5fcGxheWxpc3RfdmFyaWFudCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X2xvYWRfbWFpbl9wbGF5bGlzdF92YXJpYW50X3dpdGhfbWlzc2luZ191cmkpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbTN1OCwgdGVzdF9sb2FkX3dpbmRvd3NfbGluZV9lbmRpbmdzX3ZhcmlhbnRfcGxheWxpc3QpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbTN1OCwgdGVzdF9sb2FkX21haW5fcGxheWxpc3Rfd2l0aF9lbXB0eV9saW5lcyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X2xvYWRfd2luZG93c19tYWluX3BsYXlsaXN0X3dpdGhfZW1wdHlfbGluZXMpOwpAQCAtMTM0MSw3ICsxNDE2LDggQEAKICNlbmRpZgogICB0Y2FzZV9hZGRfdGVzdCAodGNfbTN1OCwgdGVzdF9wbGF5bGlzdF93aXRoX2RvdWJsZXNfZHVyYXRpb24pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfbTN1OCwgdGVzdF9wbGF5bGlzdF93aXRoX2VuY3J5cHRpb24pOwotCisgIHRjYXNlX2FkZF90ZXN0ICh0Y19tM3U4LCB0ZXN0X3VybF93aXRoX3NsYXNoX3F1ZXJ5X3BhcmFtKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX20zdTgsIHRlc3Rfc3RyZWFtX2luZl90YWcpOwogICByZXR1cm4gczsKIH0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvaWQzbXV4LmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9pZDNtdXguYwppbmRleCAxMzU2ZWMyLi4xOTBhZmY0IDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy9pZDNtdXguYworKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9pZDNtdXguYwpAQCAtNDUsNiArNDUsOCBAQAogICAweDA4LCAweDAwLCAweDRiLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDIwLCAweDAwLCAweDAwCiB9OwogCitzdGF0aWMgY29uc3QgZ3VpbnQ4IHByaXZhdGVkYXRhW10gPSB7IDB4OTksIDB4NjYsIDB4MzMsIDB4MTEsIDB4MjIsIDB4NDQgfTsKKwogI2RlZmluZSBNUDNfRlJBTUVfU0laRSA2MjYKIAogLyogdGhlIHBlYWsgYW5kIGdhaW4gdmFsdWVzIGFyZSBzdG9yZWQgcHJldHR5IHJvdWdobHksIHNvIGNoZWNrIHRoYXQgdGhleSdyZQpAQCAtMTIyLDYgKzEyNCwyMCBAQAogICAgICAgICBHU1RfVEFHX0JFQVRTX1BFUl9NSU5VVEUsIFRFU1RfQlBNLCBOVUxMKTsKICAgfQogICBpZiAobWFzayAmICgxIDw8IDEzKSkgeworICAgIEdzdFNhbXBsZSAqc2FtcGxlOworICAgIEdzdEJ1ZmZlciAqYnVmOworCisgICAgYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChzaXplb2YgKHByaXZhdGVkYXRhKSk7CisgICAgZ3N0X2J1ZmZlcl9maWxsIChidWYsIDAsIHByaXZhdGVkYXRhLCBzaXplb2YgKHByaXZhdGVkYXRhKSk7CisgICAgc2FtcGxlID0gZ3N0X3NhbXBsZV9uZXcgKGJ1ZiwgTlVMTCwgTlVMTCwKKyAgICAgICAgZ3N0X3N0cnVjdHVyZV9uZXcgKCJJRDNQcml2YXRlRnJhbWUiLAorICAgICAgICAgICAgIm93bmVyIiwgR19UWVBFX1NUUklORywgIm1lIiwgTlVMTCkpOworICAgIGdzdF9idWZmZXJfdW5yZWYgKGJ1Zik7CisgICAgZ3N0X3RhZ19saXN0X2FkZCAodGFncywgR1NUX1RBR19NRVJHRV9LRUVQLAorICAgICAgICBHU1RfVEFHX1BSSVZBVEVfREFUQSwgc2FtcGxlLCBOVUxMKTsKKyAgICBnc3Rfc2FtcGxlX3VucmVmIChzYW1wbGUpOworICB9CisgIGlmIChtYXNrICYgKDEgPDwgMTQpKSB7CiAgIH0KICAgcmV0dXJuIHRhZ3M7CiB9CkBAIC0yNzAsNiArMjg2LDIwIEBACiAgICAgZmFpbF91bmxlc3Nfc29ydGFfZXF1YWxzX2Zsb2F0IChicG0sIFRFU1RfQlBNKTsKICAgfQogICBpZiAobWFzayAmICgxIDw8IDEzKSkgeworICAgIEdzdFNhbXBsZSAqc2FtcGxlID0gTlVMTDsKKyAgICBjb25zdCBHc3RTdHJ1Y3R1cmUgKmluZm87CisgICAgR3N0QnVmZmVyICpidWY7CisKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3RhZ19saXN0X2dldF9zYW1wbGUgKHRhZ3MsIEdTVF9UQUdfUFJJVkFURV9EQVRBLCAmc2FtcGxlKSk7CisgICAgZmFpbF91bmxlc3MgKHNhbXBsZSAhPSBOVUxMKTsKKyAgICBidWYgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIgKHNhbXBsZSk7CisgICAgZmFpbF9pZiAoZ3N0X2J1ZmZlcl9tZW1jbXAgKGJ1ZiwgMCwgcHJpdmF0ZWRhdGEsIHNpemVvZiAocHJpdmF0ZWRhdGEpKSk7CisgICAgaW5mbyA9IGdzdF9zYW1wbGVfZ2V0X2luZm8gKHNhbXBsZSk7CisgICAgZmFpbF91bmxlc3MgKGdzdF9zdHJ1Y3R1cmVfaGFzX25hbWUgKGluZm8sICJJRDNQcml2YXRlRnJhbWUiKSk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX3N0cmluZyAoZ3N0X3N0cnVjdHVyZV9nZXRfc3RyaW5nIChpbmZvLCAib3duZXIiKSwgIm1lIik7CisgICAgZ3N0X3NhbXBsZV91bnJlZiAoc2FtcGxlKTsKKyAgfQorICBpZiAobWFzayAmICgxIDw8IDE0KSkgewogICB9CiB9CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9tcGcxMjNhdWRpb2RlYy5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGQ2ZTc3Li4wMDAwMDAwCi0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL21wZzEyM2F1ZGlvZGVjLmMKKysrIC9kZXYvbnVsbApAQCAtMSw1MzQgKzAsMCBAQAotLyogR1N0cmVhbWVyCi0gKgotICogdW5pdCB0ZXN0IGZvciBtcGcxMjNhdWRpb2RlYwotICoKLSAqIENvcHlyaWdodCAoYykgMjAxMiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0gKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAqCi0gKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKLSAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAotICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCi0gKi8KLQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotCi0jaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+Ci0jaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+Ci0KLSNpbmNsdWRlIDxnc3QvZmZ0L2dzdGZmdC5oPgotI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0czE2Lmg+Ci0jaW5jbHVkZSA8Z3N0L2ZmdC9nc3RmZnRzMzIuaD4KLSNpbmNsdWRlIDxnc3QvZmZ0L2dzdGZmdGYzMi5oPgotI2luY2x1ZGUgPGdzdC9mZnQvZ3N0ZmZ0ZjY0Lmg+Ci0KLSNpbmNsdWRlIDxnc3QvYXBwL2dzdGFwcHNpbmsuaD4KLQotLyogRm9yIGVhc2Ugb2YgcHJvZ3JhbW1pbmcgd2UgdXNlIGdsb2JhbHMgdG8ga2VlcCByZWZzIGZvciBvdXIgZmxvYXRpbmcKLSAqIHNyYyBhbmQgc2luayBwYWRzIHdlIGNyZWF0ZTsgb3RoZXJ3aXNlIHdlIGFsd2F5cyBoYXZlIHRvIGRvIGdldF9wYWQsCi0gKiBnZXRfcGVlciwgYW5kIHRoZW4gcmVtb3ZlIHJlZmVyZW5jZXMgaW4gZXZlcnkgdGVzdCBmdW5jdGlvbiAqLwotc3RhdGljIEdzdFBhZCAqbXlzcmNwYWQsICpteXNpbmtwYWQ7Ci0KLQotI2RlZmluZSBNUDJfU1RSRUFNX0ZJTEVOQU1FICJzdHJlYW0ubXAyIgotI2RlZmluZSBNUDNfQ0JSX1NUUkVBTV9GSUxFTkFNRSAiY2JyX3N0cmVhbS5tcDMiCi0jZGVmaW5lIE1QM19WQlJfU1RSRUFNX0ZJTEVOQU1FICJ2YnJfc3RyZWFtLm1wMyIKLQotCi0vKiBtcGVnIDEgbGF5ZXIgMiBzdHJlYW0gY3JlYXRlZCB3aXRoOgotICogZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjIHdhdmU9c2luZSBmcmVxPTQ0MCB2b2x1bWU9MSBudW0tYnVmZmVycz0zMiAhIFwKLSAqICAgImF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCk0NDEwMCwgY2hhbm5lbHM9KGludCkxIiAhIFwKLSAqICAgYXZlbmNfbXAyIGJpdHJhdGU9MzIwMDAgISB0ZWUgbmFtZT10IFwKLSAqICAgdC4gISBxdWV1ZSAhIGZha2VzaW5rIHNpbGVudD1mYWxzZSBcCi0gKiAgIHQuICEgcXVldWUgISBmaWxlc2luayBsb2NhdGlvbj10ZXN0Lm1wMgotICoKLSAqIG1wZWcgMSBsYXllciAzIENCUiBzdHJlYW0gY3JlYXRlZCB3aXRoOgotICogZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjIHdhdmU9c2luZSBmcmVxPTQ0MCB2b2x1bWU9MSBudW0tYnVmZmVycz0zMiAhIFwKLSAqICAgImF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCk0NDEwMCwgY2hhbm5lbHM9KGludCkxIiAhIFwKLSAqICAgbGFtZW1wM2VuYyBlbmNvZGluZy1lbmdpbmUtcXVhbGl0eT1oaWdoIGNicj10cnVlIHRhcmdldD1iaXRyYXRlIGJpdHJhdGU9MzIgISBcCi0gKiAgICJhdWRpby9tcGVnLCByYXRlPShpbnQpNDQxMDAsIGNoYW5uZWxzPShpbnQpMSIgISB0ZWUgbmFtZT10IFwKLSAqICAgdC4gISBxdWV1ZSAhIGZha2VzaW5rIHNpbGVudD1mYWxzZSBcCi0gKiAgIHQuICEgcXVldWUgISBmaWxlc2luayBsb2NhdGlvbj10ZXN0Lm1wMwotICoKLSAqIG1wZWcgMSBsYXllciAzIFZCUiBzdHJlYW0gY3JlYXRlZCB3aXRoOgotICogZ3N0LWxhdW5jaC0xLjAgLXYgYXVkaW90ZXN0c3JjIHdhdmU9c2luZSBmcmVxPTQ0MCB2b2x1bWU9MSBudW0tYnVmZmVycz0zMiAhIFwKLSAqICAgImF1ZGlvL3gtcmF3LCBmb3JtYXQ9KHN0cmluZylTMTZMRSwgbGF5b3V0PShzdHJpbmcpaW50ZXJsZWF2ZWQsIHJhdGU9KGludCk0NDEwMCwgY2hhbm5lbHM9KGludCkxIiAhIFwKLSAqICAgbGFtZW1wM2VuYyBlbmNvZGluZy1lbmdpbmUtcXVhbGl0eT1oaWdoIGNicj1mYWxzZSB0YXJnZXQ9cXVhbGl0eSBxdWFsaXR5PTcgISBcCi0gKiAgICJhdWRpby9tcGVnLCByYXRlPShpbnQpNDQxMDAsIGNoYW5uZWxzPShpbnQpMSIgISB0ZWUgbmFtZT10IFwKLSAqICAgdC4gISBxdWV1ZSAhIGZha2VzaW5rIHNpbGVudD1mYWxzZSBcCi0gKiAgIHQuICEgcXVldWUgISBmaWxlc2luayBsb2NhdGlvbj10ZXN0Lm1wMwotICovCi0KLQotLyogRkZUIHRlc3QgaGVscGVycyB0YWtlbiBmcm9tIGdzdC1wbHVnaW5zLWJhc2UgdGVzdHMvY2hlY2svYXVkaW9yZXNhbXBsZS5jICovCi0KLSNkZWZpbmUgRkZUX0hFTFBFUlModHlwZSxmZnR0YWcsZmZ0dGFnMixzY2FsZSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBnZG91YmxlIG1hZ25pdHVkZSMjZmZ0dGFnIChjb25zdCBHc3RGRlQjI2ZmdHRhZyMjQ29tcGxleCAqYykgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ2RvdWJsZSBtYWcgPSAoZ2RvdWJsZSkgYy0+ciAqIChnZG91YmxlKSBjLT5yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbWFnICs9IChnZG91YmxlKSBjLT5pICogKGdkb3VibGUpIGMtPmk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbWFnIC89IHNjYWxlICogc2NhbGU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbWFnID0gMTAuMCAqIGxvZzEwIChtYWcpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcmV0dXJuIG1hZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBnZG91YmxlIGZpbmRfbWFpbl9mcmVxdWVuY3lfc3BvdF8jI2ZmdHRhZyAoICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBjb25zdCBHc3RGRlQjI2ZmdHRhZyMjQ29tcGxleCAqdiwgaW50IGVsZW1lbnRzKSAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW50IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ2RvdWJsZSBtYXhtYWcgPSAtOTk5OTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW50IG1heGlkeCA9IDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZm9yIChpPTA7IGk8ZWxlbWVudHM7ICsraSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZG91YmxlIG1hZyA9IG1hZ25pdHVkZSMjZmZ0dGFnICh2K2kpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAobWFnID4gbWF4bWFnKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIG1heG1hZyA9IG1hZzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIG1heGlkeCA9IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcmV0dXJuIG1heGlkeCAvIChnZG91YmxlKSBlbGVtZW50czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyBnYm9vbGVhbiBpc196ZXJvX2V4Y2VwdF8jI2ZmdHRhZyAoY29uc3QgR3N0RkZUIyNmZnR0YWcjI0NvbXBsZXggKnYsICAgIFwKLSAgICBpbnQgZWxlbWVudHMsIGdkb3VibGUgc3BvdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW50IGk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZm9yIChpPTA7IGk8ZWxlbWVudHM7ICsraSkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZG91YmxlIHBvcyA9IGkgLyAoZ2RvdWJsZSkgZWxlbWVudHM7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBnZG91YmxlIG1hZyA9IG1hZ25pdHVkZSMjZmZ0dGFnICh2K2kpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBpZiAoZmFicyAocG9zIC0gc3BvdCkgPiAwLjAxKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIGlmIChtYWcgPiAtMzUuMCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgR1NUX0xPRygiRm91bmQgbWFnbml0dWRlIGF0ICVmIDogJWYgKHBlYWsgYXQgJWYpXG4iLCBwb3MsIG1hZywgc3BvdCk7IFwKLSAgICAgICAgcmV0dXJuIEZBTFNFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgcmV0dXJuIFRSVUU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXN0YXRpYyB2b2lkIGNoZWNrX21haW5fZnJlcXVlbmN5X3Nwb3RfIyNmZnR0YWcgKEdzdEJ1ZmZlciAqYnVmZmVyLCBnZG91YmxlICAgIFwKLSAgICBleHBlY3RlZF9zcG90KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLXsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgR3N0TWFwSW5mbyBtYXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgaW50IG51bV9zYW1wbGVzOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ2RvdWJsZSBhY3R1YWxfc3BvdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgR3N0RkZUIyNmZnR0YWcgKmN0eDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgR3N0RkZUIyNmZnR0YWcjI0NvbXBsZXggKmZmdGRhdGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZmZlciwgJm1hcCwgR1NUX01BUF9SRUFEKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgbnVtX3NhbXBsZXMgPSBtYXAuc2l6ZSAvIHNpemVvZih0eXBlKSAmIH4xOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgY3R4ID0gZ3N0X2ZmdF8jI2ZmdHRhZzIjI19uZXcgKG51bV9zYW1wbGVzLCBGQUxTRSk7ICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZmZ0ZGF0YSA9IGdfbmV3IChHc3RGRlQjI2ZmdHRhZyMjQ29tcGxleCwgbnVtX3NhbXBsZXMgLyAyICsgMSk7ICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ3N0X2ZmdF8jI2ZmdHRhZzIjI193aW5kb3cgKGN0eCwgKHR5cGUqKW1hcC5kYXRhLCAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICBHU1RfRkZUX1dJTkRPV19IQU1NSU5HKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ3N0X2ZmdF8jI2ZmdHRhZzIjI19mZnQgKGN0eCwgKHR5cGUqKW1hcC5kYXRhLCBmZnRkYXRhKTsgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgYWN0dWFsX3Nwb3QgPSBmaW5kX21haW5fZnJlcXVlbmN5X3Nwb3RfIyNmZnR0YWcgKGZmdGRhdGEsICAgICAgICAgICAgICAgICAgIFwKLSAgICBudW1fc2FtcGxlcyAvIDIgKyAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgR1NUX0xPRyAoIkV4cGVjdGVkIHNwb3Q6ICUuM2YgYWN0dWFsOiAlLjNmICVmIiwgZXhwZWN0ZWRfc3BvdCwgYWN0dWFsX3Nwb3QsIFwKLSAgICBmYWJzIChleHBlY3RlZF9zcG90IC0gYWN0dWFsX3Nwb3QpKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZmFpbF91bmxlc3MgKGZhYnMgKGV4cGVjdGVkX3Nwb3QgLSBhY3R1YWxfc3BvdCkgPCAwLjA1LCAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAiQWN0dWFsIG1haW4gZnJlcXVlbmN5IHNwb3QgaXMgdG9vIGZhciBhd2F5IGZyb20gZXhwZWN0ZWQgb25lIik7ICAgICAgICAgIFwKLSAgZmFpbF91bmxlc3MgKGlzX3plcm9fZXhjZXB0XyMjZmZ0dGFnIChmZnRkYXRhLCBudW1fc2FtcGxlcyAvIDIgKyAxLCAgICAgICAgIFwKLSAgICBhY3R1YWxfc3BvdCksICJPbmUgc2Vjb25kYXJ5IHBlYWsgaW4gc3BlY3RydW0gZXhjZWVkcyB0aHJlc2hvbGQiKTsgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmZmVyLCAmbWFwKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ3N0X2ZmdF8jI2ZmdHRhZzIjI19mcmVlIChjdHgpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgZ19mcmVlIChmZnRkYXRhKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLX0KLUZGVF9IRUxQRVJTIChnaW50MzIsIFMzMiwgczMyLCAyMTQ3NDgzNjQ3LjApOwotCi0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFMgKCJhdWRpby94LXJhdywgZm9ybWF0ID0gKHN0cmluZykgIiBHU1RfQVVESU9fTkUgKFMzMikpCi0gICAgKTsKLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBsYXllcjJfc3JjdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCi0gICAgR1NUX1BBRF9TUkMsCi0gICAgR1NUX1BBRF9BTFdBWVMsCi0gICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7Ci1zdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgbGF5ZXIzX3NyY3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQU19BTlkpOwotCi0KLXN0YXRpYyB2b2lkCi1zZXR1cF9pbnB1dF9waXBlbGluZSAoZ2NoYXIgY29uc3QgKnN0cmVhbV9maWxlbmFtZSwgR3N0RWxlbWVudCAqKiBwaXBlbGluZSwKLSAgICBHc3RFbGVtZW50ICoqIGFwcHNpbmspCi17Ci0gIEdzdEVsZW1lbnQgKnNvdXJjZSwgKnBhcnNlcjsKLQotICAqcGlwZWxpbmUgPSBnc3RfcGlwZWxpbmVfbmV3IChOVUxMKTsKLSAgc291cmNlID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZmlsZXNyYyIsIE5VTEwpOwotICBwYXJzZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJtcGVnYXVkaW9wYXJzZSIsIE5VTEwpOwotICAqYXBwc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImFwcHNpbmsiLCBOVUxMKTsKLQotICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOICgqcGlwZWxpbmUpLCBzb3VyY2UsIHBhcnNlciwgKmFwcHNpbmssIE5VTEwpOwotICBnc3RfZWxlbWVudF9saW5rX21hbnkgKHNvdXJjZSwgcGFyc2VyLCAqYXBwc2luaywgTlVMTCk7Ci0KLSAgewotICAgIGNoYXIgKmZ1bGxfZmlsZW5hbWUgPQotICAgICAgICBnX2J1aWxkX2ZpbGVuYW1lIChHU1RfVEVTVF9GSUxFU19QQVRILCBzdHJlYW1fZmlsZW5hbWUsIE5VTEwpOwotICAgIGdfb2JqZWN0X3NldCAoR19PQkpFQ1QgKHNvdXJjZSksICJsb2NhdGlvbiIsIGZ1bGxfZmlsZW5hbWUsIE5VTEwpOwotICAgIGdfZnJlZSAoZnVsbF9maWxlbmFtZSk7Ci0gIH0KLQotICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKCpwaXBlbGluZSwgR1NUX1NUQVRFX1BMQVlJTkcpOwotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9pbnB1dF9waXBlbGluZSAoR3N0RWxlbWVudCAqIHBpcGVsaW5lKQotewotICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKHBpcGVsaW5lKTsKLX0KLQotc3RhdGljIEdzdEVsZW1lbnQgKgotc2V0dXBfbXBlZzFsYXllcjJkZWMgKHZvaWQpCi17Ci0gIEdzdEVsZW1lbnQgKm1wZzEyM2F1ZGlvZGVjOwotICBHc3RDYXBzICpjYXBzOwotCi0gIEdTVF9ERUJVRyAoInNldHVwX21wZWcxbGF5ZXIyZGVjIik7Ci0gIG1wZzEyM2F1ZGlvZGVjID0gZ3N0X2NoZWNrX3NldHVwX2VsZW1lbnQgKCJtcGcxMjNhdWRpb2RlYyIpOwotICBteXNyY3BhZCA9IGdzdF9jaGVja19zZXR1cF9zcmNfcGFkIChtcGcxMjNhdWRpb2RlYywgJmxheWVyMl9zcmN0ZW1wbGF0ZSk7Ci0gIG15c2lua3BhZCA9IGdzdF9jaGVja19zZXR1cF9zaW5rX3BhZCAobXBnMTIzYXVkaW9kZWMsICZzaW5rdGVtcGxhdGUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c3JjcGFkLCBUUlVFKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNpbmtwYWQsIFRSVUUpOwotCi0gIC8qIFRoaXMgaXMgbmVjZXNzYXJ5IHRvIHRyaWdnZXIgYSBzZXRfZm9ybWF0IGNhbGwgaW4gdGhlIGRlY29kZXI7Ci0gICAqIGZpeGVkIGNhcHMgZG9uJ3QgdHJpZ2dlciBpdCAqLwotICBjYXBzID0gZ3N0X2NhcHNfbmV3X3NpbXBsZSAoImF1ZGlvL21wZWciLAotICAgICAgIm1wZWd2ZXJzaW9uIiwgR19UWVBFX0lOVCwgMSwKLSAgICAgICJsYXllciIsIEdfVFlQRV9JTlQsIDIsCi0gICAgICAicmF0ZSIsIEdfVFlQRV9JTlQsIDQ0MTAwLAotICAgICAgImNoYW5uZWxzIiwgR19UWVBFX0lOVCwgMSwgInBhcnNlZCIsIEdfVFlQRV9CT09MRUFOLCBUUlVFLCBOVUxMKTsKLSAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIG1wZzEyM2F1ZGlvZGVjLCBjYXBzLCBHU1RfRk9STUFUX1RJTUUpOwotICBnc3RfY2Fwc191bnJlZiAoY2Fwcyk7Ci0KLSAgcmV0dXJuIG1wZzEyM2F1ZGlvZGVjOwotfQotCi1zdGF0aWMgR3N0RWxlbWVudCAqCi1zZXR1cF9tcGVnMWxheWVyM2RlYyAodm9pZCkKLXsKLSAgR3N0RWxlbWVudCAqbXBnMTIzYXVkaW9kZWM7Ci0gIEdzdENhcHMgKmNhcHM7Ci0KLSAgR1NUX0RFQlVHICgic2V0dXBfbXBlZzFsYXllcjNkZWMiKTsKLSAgbXBnMTIzYXVkaW9kZWMgPSBnc3RfY2hlY2tfc2V0dXBfZWxlbWVudCAoIm1wZzEyM2F1ZGlvZGVjIik7Ci0gIG15c3JjcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NyY19wYWQgKG1wZzEyM2F1ZGlvZGVjLCAmbGF5ZXIzX3NyY3RlbXBsYXRlKTsKLSAgbXlzaW5rcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkIChtcGcxMjNhdWRpb2RlYywgJnNpbmt0ZW1wbGF0ZSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzcmNwYWQsIFRSVUUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c2lua3BhZCwgVFJVRSk7Ci0KLSAgLyogVGhpcyBpcyBuZWNlc3NhcnkgdG8gdHJpZ2dlciBhIHNldF9mb3JtYXQgY2FsbCBpbiB0aGUgZGVjb2RlcjsKLSAgICogZml4ZWQgY2FwcyBkb24ndCB0cmlnZ2VyIGl0ICovCi0gIGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlICgiYXVkaW8vbXBlZyIsCi0gICAgICAibXBlZ3ZlcnNpb24iLCBHX1RZUEVfSU5ULCAxLAotICAgICAgImxheWVyIiwgR19UWVBFX0lOVCwgMywKLSAgICAgICJyYXRlIiwgR19UWVBFX0lOVCwgNDQxMDAsCi0gICAgICAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCAicGFyc2VkIiwgR19UWVBFX0JPT0xFQU4sIFRSVUUsIE5VTEwpOwotICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgbXBnMTIzYXVkaW9kZWMsIGNhcHMsIEdTVF9GT1JNQVRfVElNRSk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICByZXR1cm4gbXBnMTIzYXVkaW9kZWM7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX21wZzEyM2F1ZGlvZGVjIChHc3RFbGVtZW50ICogbXBnMTIzYXVkaW9kZWMpCi17Ci0gIEdTVF9ERUJVRyAoImNsZWFudXBfbXBlZzFsYXllcjJkZWMiKTsKLSAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChtcGcxMjNhdWRpb2RlYywgR1NUX1NUQVRFX05VTEwpOwotCi0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzcmNwYWQsIEZBTFNFKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNpbmtwYWQsIEZBTFNFKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQgKG1wZzEyM2F1ZGlvZGVjKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NpbmtfcGFkIChtcGcxMjNhdWRpb2RlYyk7Ci0gIGdzdF9jaGVja190ZWFyZG93bl9lbGVtZW50IChtcGcxMjNhdWRpb2RlYyk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1ydW5fZGVjb2RpbmdfdGVzdCAoR3N0RWxlbWVudCAqIG1wZzEyM2F1ZGlvZGVjLCBnY2hhciBjb25zdCAqZmlsZW5hbWUpCi17Ci0gIEdzdEJ1cyAqYnVzOwotICB1bnNpZ25lZCBpbnQgbnVtX2lucHV0X2J1ZmZlcnMsIG51bV9kZWNvZGVkX2J1ZmZlcnM7Ci0gIGdpbnQgZXhwZWN0ZWRfc2l6ZTsKLSAgR3N0Q2FwcyAqb3V0X2NhcHMsICpjYXBzOwotICBHc3RBdWRpb0luZm8gYXVkaW9pbmZvOwotICBHc3RFbGVtZW50ICppbnB1dF9waXBlbGluZSwgKmlucHV0X2FwcHNpbms7Ci0gIGludCBpOwotICBHc3RCdWZmZXIgKm91dGJ1ZmZlcjsKLQotICAvKiA0NDAgSHogPSBmcmVxdWVuY3kgb2Ygc2luZSB3YXZlIGluIGF1ZGlvIGRhdGEKLSAgICogNDQxMDAgSHogPSBzYW1wbGUgcmF0ZQotICAgKiAoNDQxMDAgLyAyKSBIeiA9IE55cXVpc3QgZnJlcXVlbmN5ICovCi0gIHN0YXRpYyBkb3VibGUgY29uc3QgZXhwZWN0ZWRfZnJlcXVlbmN5X3Nwb3QgPSA0NDAuMCAvICg0NDEwMC4wIC8gMi4wKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChtcGcxMjNhdWRpb2RlYywKLSAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcGxheWluZyIpOwotICBidXMgPSBnc3RfYnVzX25ldyAoKTsKLQotICBnc3RfZWxlbWVudF9zZXRfYnVzIChtcGcxMjNhdWRpb2RlYywgYnVzKTsKLQotICBzZXR1cF9pbnB1dF9waXBlbGluZSAoZmlsZW5hbWUsICZpbnB1dF9waXBlbGluZSwgJmlucHV0X2FwcHNpbmspOwotCi0gIG51bV9pbnB1dF9idWZmZXJzID0gMDsKLSAgd2hpbGUgKFRSVUUpIHsKLSAgICBHc3RTYW1wbGUgKnNhbXBsZTsKLSAgICBHc3RCdWZmZXIgKmlucHV0X2J1ZmZlcjsKLQotICAgIHNhbXBsZSA9IGdzdF9hcHBfc2lua19wdWxsX3NhbXBsZSAoR1NUX0FQUF9TSU5LIChpbnB1dF9hcHBzaW5rKSk7Ci0gICAgaWYgKHNhbXBsZSA9PSBOVUxMKQotICAgICAgYnJlYWs7Ci0KLSAgICBmYWlsX3VubGVzcyAoR1NUX0lTX1NBTVBMRSAoc2FtcGxlKSk7Ci0KLSAgICBpbnB1dF9idWZmZXIgPSBnc3Rfc2FtcGxlX2dldF9idWZmZXIgKHNhbXBsZSk7Ci0gICAgZmFpbF9pZiAoaW5wdXRfYnVmZmVyID09IE5VTEwpOwotCi0gICAgLyogVGhpcyBpcyBkb25lIHRvIGJlIG9uIHRoZSBzYWZlIHNpZGUgLSBkb2NzIHNheSBsaWZldGltZSBvZiB0aGUgaW5wdXQgYnVmZmVyCi0gICAgICogZGVwZW5kcyAqc29sZWx5KiBvbiB0aGUgc2FtcGxlICovCi0gICAgaW5wdXRfYnVmZmVyID0gZ3N0X2J1ZmZlcl9jb3B5IChpbnB1dF9idWZmZXIpOwotCi0gICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgaW5wdXRfYnVmZmVyKSwgR1NUX0ZMT1dfT0spOwotCi0gICAgKytudW1faW5wdXRfYnVmZmVyczsKLQotICAgIGdzdF9zYW1wbGVfdW5yZWYgKHNhbXBsZSk7Ci0gIH0KLQotICBudW1fZGVjb2RlZF9idWZmZXJzID0gZ19saXN0X2xlbmd0aCAoYnVmZmVycyk7Ci0KLSAgLyogY2hlY2sgbnVtYmVyIG9mIGRlY29kZWQgYnVmZmVycyAqLwotICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChudW1fZGVjb2RlZF9idWZmZXJzLCBudW1faW5wdXRfYnVmZmVycyAtIDIpOwotCi0gIGNhcHMgPSBnc3RfcGFkX2dldF9jdXJyZW50X2NhcHMgKG15c2lua3BhZCk7Ci0gIEdTVF9MT0cgKCJvdXRwdXQgY2FwcyAlIiBHU1RfUFRSX0ZPUk1BVCwgY2Fwcyk7Ci0gIGZhaWxfdW5sZXNzIChnc3RfYXVkaW9faW5mb19mcm9tX2NhcHMgKCZhdWRpb2luZm8sIGNhcHMpLAotICAgICAgIkdldHRpbmcgYXVkaW8gaW5mbyBmcm9tIGNhcHMgZmFpbGVkIik7Ci0KLSAgLyogY2hlY2sgY2FwcyAqLwotICBvdXRfY2FwcyA9IGdzdF9jYXBzX25ld19zaW1wbGUgKCJhdWRpby94LXJhdyIsCi0gICAgICAiZm9ybWF0IiwgR19UWVBFX1NUUklORywgR1NUX0FVRElPX05FIChTMzIpLAotICAgICAgImxheW91dCIsIEdfVFlQRV9TVFJJTkcsICJpbnRlcmxlYXZlZCIsCi0gICAgICAicmF0ZSIsIEdfVFlQRV9JTlQsIDQ0MTAwLCAiY2hhbm5lbHMiLCBHX1RZUEVfSU5ULCAxLCBOVUxMKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2NhcHNfaXNfZXF1YWxfZml4ZWQgKGNhcHMsIG91dF9jYXBzKSwgIkluY29ycmVjdCBvdXQgY2FwcyIpOwotCi0gIGdzdF9jYXBzX3VucmVmIChvdXRfY2Fwcyk7Ci0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICAvKiBoZXJlLCB0ZXN0IGlmIGRlY29kZWQgZGF0YSBpcyBhIHNpbmUgdG9uZSwgYW5kIGlmIHRoZSBzaW5lIGZyZXF1ZW5jeSBpcyBhdCB0aGUKLSAgICogcmlnaHQgc3BvdCBpbiB0aGUgc3BlY3RydW0gKi8KLSAgZm9yIChpID0gMDsgaSA8IG51bV9kZWNvZGVkX2J1ZmZlcnM7ICsraSkgewotICAgIG91dGJ1ZmZlciA9IEdTVF9CVUZGRVIgKGJ1ZmZlcnMtPmRhdGEpOwotICAgIGZhaWxfaWYgKG91dGJ1ZmZlciA9PSBOVUxMLCAiSW52YWxpZCBidWZmZXIgcmV0cmlldmVkIik7Ci0KLSAgICAvKiBNUEVHIDEgbGF5ZXIgMiB1c2VzIDExNTIgc2FtcGxlcyBwZXIgZnJhbWUgKi8KLSAgICBleHBlY3RlZF9zaXplID0gMTE1MiAqIEdTVF9BVURJT19JTkZPX0JQRiAoJmF1ZGlvaW5mbyk7Ci0gICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAob3V0YnVmZmVyKSwgZXhwZWN0ZWRfc2l6ZSk7Ci0KLSAgICBjaGVja19tYWluX2ZyZXF1ZW5jeV9zcG90X1MzMiAob3V0YnVmZmVyLCBleHBlY3RlZF9mcmVxdWVuY3lfc3BvdCk7Ci0KLSAgICBidWZmZXJzID0gZ19saXN0X3JlbW92ZSAoYnVmZmVycywgb3V0YnVmZmVyKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWZmZXIpOwotICAgIG91dGJ1ZmZlciA9IE5VTEw7Ci0gIH0KLQotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci0gIGJ1ZmZlcnMgPSBOVUxMOwotCi0gIGNsZWFudXBfaW5wdXRfcGlwZWxpbmUgKGlucHV0X3BpcGVsaW5lKTsKLSAgZ3N0X2J1c19zZXRfZmx1c2hpbmcgKGJ1cywgVFJVRSk7Ci0gIGdzdF9lbGVtZW50X3NldF9idXMgKG1wZzEyM2F1ZGlvZGVjLCBOVUxMKTsKLSAgZ3N0X29iamVjdF91bnJlZiAoR1NUX09CSkVDVCAoYnVzKSk7Ci19Ci0KLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfZGVjb2RlX21wZWcxbGF5ZXIyKQotewotICBHc3RFbGVtZW50ICptcGcxMjNhdWRpb2RlYzsKLSAgbXBnMTIzYXVkaW9kZWMgPSBzZXR1cF9tcGVnMWxheWVyMmRlYyAoKTsKLSAgcnVuX2RlY29kaW5nX3Rlc3QgKG1wZzEyM2F1ZGlvZGVjLCBNUDJfU1RSRUFNX0ZJTEVOQU1FKTsKLSAgY2xlYW51cF9tcGcxMjNhdWRpb2RlYyAobXBnMTIzYXVkaW9kZWMpOwotICBtcGcxMjNhdWRpb2RlYyA9IE5VTEw7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9kZWNvZGVfbXBlZzFsYXllcjNfY2JyKQotewotICBHc3RFbGVtZW50ICptcGcxMjNhdWRpb2RlYzsKLSAgbXBnMTIzYXVkaW9kZWMgPSBzZXR1cF9tcGVnMWxheWVyM2RlYyAoKTsKLSAgcnVuX2RlY29kaW5nX3Rlc3QgKG1wZzEyM2F1ZGlvZGVjLCBNUDNfQ0JSX1NUUkVBTV9GSUxFTkFNRSk7Ci0gIGNsZWFudXBfbXBnMTIzYXVkaW9kZWMgKG1wZzEyM2F1ZGlvZGVjKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X2RlY29kZV9tcGVnMWxheWVyM192YnIpCi17Ci0gIEdzdEVsZW1lbnQgKm1wZzEyM2F1ZGlvZGVjOwotICBtcGcxMjNhdWRpb2RlYyA9IHNldHVwX21wZWcxbGF5ZXIzZGVjICgpOwotICBydW5fZGVjb2RpbmdfdGVzdCAobXBnMTIzYXVkaW9kZWMsIE1QM19WQlJfU1RSRUFNX0ZJTEVOQU1FKTsKLSAgY2xlYW51cF9tcGcxMjNhdWRpb2RlYyAobXBnMTIzYXVkaW9kZWMpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfZGVjb2RlX2dhcmJhZ2VfbXBlZzFsYXllcjIpCi17Ci0gIEdzdEVsZW1lbnQgKm1wZzEyM2F1ZGlvZGVjOwotICBHc3RCdWZmZXIgKmluYnVmZmVyOwotICBHc3RCdXMgKmJ1czsKLSAgaW50IGksIG51bV9idWZmZXJzOwotICBndWludDMyICp0bXBidWY7Ci0KLSAgbXBnMTIzYXVkaW9kZWMgPSBzZXR1cF9tcGVnMWxheWVyMmRlYyAoKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChtcGcxMjNhdWRpb2RlYywKLSAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcGxheWluZyIpOwotICBidXMgPSBnc3RfYnVzX25ldyAoKTsKLQotICAvKiBpbml0aWFsaXplIHRoZSBidWZmZXIgd2l0aCBzb21ldGhpbmcgdGhhdCBpcyBubyBtcGVnMiAqLwotICB0bXBidWYgPSBnX25ldyAoZ3VpbnQzMiwgNDA5Nik7Ci0gIGZvciAoaSA9IDA7IGkgPCA0MDk2OyBpKyspIHsKLSAgICB0bXBidWZbaV0gPSBpOwotICB9Ci0gIGluYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfd3JhcHBlZCAodG1wYnVmLCA0MDk2ICogc2l6ZW9mIChndWludDMyKSk7Ci0KLSAgQVNTRVJUX0JVRkZFUl9SRUZDT1VOVCAoaW5idWZmZXIsICJpbmJ1ZmZlciIsIDEpOwotCi0gIGdzdF9lbGVtZW50X3NldF9idXMgKG1wZzEyM2F1ZGlvZGVjLCBidXMpOwotCi0gIC8qIHNob3VsZCBiZSBwb3NzaWJsZSB0byBwdXNoIHdpdGhvdXQgcHJvYmxlbXMgYnV0IG5vdGhpbmcgZ2V0cyBkZWNvZGVkICovCi0gIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGluYnVmZmVyKSwgR1NUX0ZMT1dfT0spOwotCi0gIG51bV9idWZmZXJzID0gZ19saXN0X2xlbmd0aCAoYnVmZmVycyk7Ci0KLSAgLyogc2hvdWxkIGJlIDAgYnVmZmVycyBhcyBkZWNvZGluZyBzaG91bGQndmUgYmVlbiBpbXBvc3NpYmxlICovCi0gIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG51bV9idWZmZXJzLCAwKTsKLQotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci0gIGJ1ZmZlcnMgPSBOVUxMOwotCi0gIGdzdF9idXNfc2V0X2ZsdXNoaW5nIChidXMsIFRSVUUpOwotICBnc3RfZWxlbWVudF9zZXRfYnVzIChtcGcxMjNhdWRpb2RlYywgTlVMTCk7Ci0gIGdzdF9vYmplY3RfdW5yZWYgKEdTVF9PQkpFQ1QgKGJ1cykpOwotICBjbGVhbnVwX21wZzEyM2F1ZGlvZGVjIChtcGcxMjNhdWRpb2RlYyk7Ci0gIG1wZzEyM2F1ZGlvZGVjID0gTlVMTDsKLX0KLQotR1NUX0VORF9URVNUOwotCi0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X2RlY29kZV9nYXJiYWdlX21wZWcxbGF5ZXIzKQotewotICBHc3RFbGVtZW50ICptcGcxMjNhdWRpb2RlYzsKLSAgR3N0QnVmZmVyICppbmJ1ZmZlcjsKLSAgR3N0QnVzICpidXM7Ci0gIGludCBpLCBudW1fYnVmZmVyczsKLSAgZ3VpbnQzMiAqdG1wYnVmOwotCi0gIG1wZzEyM2F1ZGlvZGVjID0gc2V0dXBfbXBlZzFsYXllcjNkZWMgKCk7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAobXBnMTIzYXVkaW9kZWMsCi0gICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHBsYXlpbmciKTsKLSAgYnVzID0gZ3N0X2J1c19uZXcgKCk7Ci0KLSAgLyogaW5pdGlhbGl6ZSB0aGUgYnVmZmVyIHdpdGggc29tZXRoaW5nIHRoYXQgaXMgbm8gbXBlZzIgKi8KLSAgdG1wYnVmID0gZ19uZXcgKGd1aW50MzIsIDQwOTYpOwotICBmb3IgKGkgPSAwOyBpIDwgNDA5NjsgaSsrKSB7Ci0gICAgdG1wYnVmW2ldID0gaTsKLSAgfQotICBpbmJ1ZmZlciA9IGdzdF9idWZmZXJfbmV3X3dyYXBwZWQgKHRtcGJ1ZiwgNDA5NiAqIHNpemVvZiAoZ3VpbnQzMikpOwotCi0gIEFTU0VSVF9CVUZGRVJfUkVGQ09VTlQgKGluYnVmZmVyLCAiaW5idWZmZXIiLCAxKTsKLQotICBnc3RfZWxlbWVudF9zZXRfYnVzIChtcGcxMjNhdWRpb2RlYywgYnVzKTsKLQotICAvKiBzaG91bGQgYmUgcG9zc2libGUgdG8gcHVzaCB3aXRob3V0IHByb2JsZW1zIGJ1dCBub3RoaW5nIGdldHMgZGVjb2RlZCAqLwotICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBpbmJ1ZmZlciksIEdTVF9GTE9XX09LKTsKLQotICBudW1fYnVmZmVycyA9IGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpOwotCi0gIC8qIHNob3VsZCBiZSAwIGJ1ZmZlcnMgYXMgZGVjb2Rpbmcgc2hvdWxkJ3ZlIGJlZW4gaW1wb3NzaWJsZSAqLwotICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChudW1fYnVmZmVycywgMCk7Ci0KLSAgZ19saXN0X2ZyZWUgKGJ1ZmZlcnMpOwotICBidWZmZXJzID0gTlVMTDsKLQotICBnc3RfYnVzX3NldF9mbHVzaGluZyAoYnVzLCBUUlVFKTsKLSAgZ3N0X2VsZW1lbnRfc2V0X2J1cyAobXBnMTIzYXVkaW9kZWMsIE5VTEwpOwotICBnc3Rfb2JqZWN0X3VucmVmIChHU1RfT0JKRUNUIChidXMpKTsKLSAgY2xlYW51cF9tcGcxMjNhdWRpb2RlYyAobXBnMTIzYXVkaW9kZWMpOwotICBtcGcxMjNhdWRpb2RlYyA9IE5VTEw7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotCi1zdGF0aWMgZ2Jvb2xlYW4KLWlzX3Rlc3RfZmlsZV9hdmFpbGFibGUgKGdjaGFyIGNvbnN0ICpmaWxlbmFtZSkKLXsKLSAgZ2Jvb2xlYW4gcmV0OwotICBnY2hhciAqZnVsbF9maWxlbmFtZTsKLSAgZ2NoYXIgKmN3ZDsKLQotICBjd2QgPSBnX2dldF9jdXJyZW50X2RpciAoKTsKLSAgZnVsbF9maWxlbmFtZSA9IGdfYnVpbGRfZmlsZW5hbWUgKGN3ZCwgR1NUX1RFU1RfRklMRVNfUEFUSCwgZmlsZW5hbWUsIE5VTEwpOwotICByZXQgPQotICAgICAgZ19maWxlX3Rlc3QgKGZ1bGxfZmlsZW5hbWUsIEdfRklMRV9URVNUX0lTX1JFR1VMQVIgfCBHX0ZJTEVfVEVTVF9FWElTVFMpOwotICBnX2ZyZWUgKGZ1bGxfZmlsZW5hbWUpOwotICBnX2ZyZWUgKGN3ZCk7Ci0gIHJldHVybiByZXQ7Ci19Ci0KLXN0YXRpYyBTdWl0ZSAqCi1tcGcxMjNhdWRpb2RlY19zdWl0ZSAodm9pZCkKLXsKLSAgR3N0UmVnaXN0cnkgKnJlZ2lzdHJ5OwotICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIm1wZzEyM2F1ZGlvZGVjIik7Ci0gIFRDYXNlICp0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoImdlbmVyYWwiKTsKLQotICByZWdpc3RyeSA9IGdzdF9yZWdpc3RyeV9nZXQgKCk7Ci0KLSAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7Ci0gIGlmIChnc3RfcmVnaXN0cnlfY2hlY2tfZmVhdHVyZV92ZXJzaW9uIChyZWdpc3RyeSwgImZpbGVzcmMiLAotICAgICAgICAgIEdTVF9WRVJTSU9OX01BSk9SLCBHU1RfVkVSU0lPTl9NSU5PUiwgMCkgJiYKLSAgICAgIGdzdF9yZWdpc3RyeV9jaGVja19mZWF0dXJlX3ZlcnNpb24gKHJlZ2lzdHJ5LCAibXBlZ2F1ZGlvcGFyc2UiLAotICAgICAgICAgIEdTVF9WRVJTSU9OX01BSk9SLCBHU1RfVkVSU0lPTl9NSU5PUiwgMCkgJiYKLSAgICAgIGdzdF9yZWdpc3RyeV9jaGVja19mZWF0dXJlX3ZlcnNpb24gKHJlZ2lzdHJ5LCAiYXBwc3JjIiwKLSAgICAgICAgICBHU1RfVkVSU0lPTl9NQUpPUiwgR1NUX1ZFUlNJT05fTUlOT1IsIDApKSB7Ci0gICAgaWYgKGlzX3Rlc3RfZmlsZV9hdmFpbGFibGUgKE1QMl9TVFJFQU1fRklMRU5BTUUpKQotICAgICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2RlY29kZV9tcGVnMWxheWVyMik7Ci0gICAgaWYgKGlzX3Rlc3RfZmlsZV9hdmFpbGFibGUgKE1QM19DQlJfU1RSRUFNX0ZJTEVOQU1FKSkKLSAgICAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9kZWNvZGVfbXBlZzFsYXllcjNfY2JyKTsKLSAgICBpZiAoaXNfdGVzdF9maWxlX2F2YWlsYWJsZSAoTVAzX1ZCUl9TVFJFQU1fRklMRU5BTUUpKQotICAgICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2RlY29kZV9tcGVnMWxheWVyM192YnIpOwotICB9Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9kZWNvZGVfZ2FyYmFnZV9tcGVnMWxheWVyMik7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9kZWNvZGVfZ2FyYmFnZV9tcGVnMWxheWVyMyk7Ci0KLSAgcmV0dXJuIHM7Ci19Ci0KLQotR1NUX0NIRUNLX01BSU4gKG1wZzEyM2F1ZGlvZGVjKQpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvbXNzZGVtdXguYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL21zc2RlbXV4LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhhMTg2MwotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL21zc2RlbXV4LmMKQEAgLTAsMCArMSw2MzIgQEAKKy8qIEdTdHJlYW1lciB1bml0IHRlc3QgZm9yIE1TUworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNiBTYW1zdW5nIEVsZWN0cm9uaWNzLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICogICBBdXRob3I6IFRoaWFnbyBTYW50b3MgPHRoaWFnb3NzQG9zZy5zYW1zdW5nLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisjaW5jbHVkZSAiYWRhcHRpdmVfZGVtdXhfY29tbW9uLmgiCisKKyNkZWZpbmUgREVNVVhfRUxFTUVOVF9OQU1FICJtc3NkZW11eCIKKworI2RlZmluZSBDT1BZX09VVFBVVF9URVNUX0RBVEEob3V0cHV0VGVzdERhdGEsdGVzdERhdGEpIGRvIHsgXAorICAgIGd1aW50IG90ZFBvcywgb3RkTGVuID0gc2l6ZW9mKChvdXRwdXRUZXN0RGF0YSkpIC8gc2l6ZW9mKChvdXRwdXRUZXN0RGF0YSlbMF0pOyBcCisgICAgZm9yKG90ZFBvcz0wOyBvdGRQb3M8b3RkTGVuOyArK290ZFBvcyl7IFwKKyAgKHRlc3REYXRhKS0+b3V0cHV0X3N0cmVhbXMgPSBnX2xpc3RfYXBwZW5kICgodGVzdERhdGEpLT5vdXRwdXRfc3RyZWFtcywgJihvdXRwdXRUZXN0RGF0YSlbb3RkUG9zXSk7IFwKKyAgICB9IFwKKyAgfSB3aGlsZSgwKQorCit0eXBlZGVmIHN0cnVjdCBfR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhCit7CisgIGNvbnN0IGdjaGFyICp1cmk7CisgIGNvbnN0IGd1aW50OCAqcGF5bG9hZDsKKyAgZ3VpbnQ2NCBzaXplOworfSBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGE7CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X21zc2RlbXV4X2h0dHBfc3JjX3N0YXJ0IChHc3RUZXN0SFRUUFNyYyAqIHNyYywKKyAgICBjb25zdCBnY2hhciAqIHVyaSwgR3N0VGVzdEhUVFBTcmNJbnB1dCAqIGlucHV0X2RhdGEsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgY29uc3QgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9CisgICAgICAoY29uc3QgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhICopIHVzZXJfZGF0YTsKKworCisgIGZvciAoZ3VpbnQgaSA9IDA7IGlucHV0W2ldLnVyaTsgKytpKSB7CisgICAgaWYgKHN0cmNtcCAoaW5wdXRbaV0udXJpLCB1cmkpID09IDApIHsKKyAgICAgIGlucHV0X2RhdGEtPmNvbnRleHQgPSAoZ3BvaW50ZXIpICYgaW5wdXRbaV07CisgICAgICBpbnB1dF9kYXRhLT5zaXplID0gaW5wdXRbaV0uc2l6ZTsKKyAgICAgIGlmIChpbnB1dFtpXS5zaXplID09IDApCisgICAgICAgIGlucHV0X2RhdGEtPnNpemUgPSBzdHJsZW4gKChnY2hhciAqKSBpbnB1dFtpXS5wYXlsb2FkKTsKKyAgICAgIHJldHVybiBUUlVFOworICAgIH0KKyAgfQorCisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF9tc3NkZW11eF9odHRwX3NyY19jcmVhdGUgKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGd1aW50NjQgb2Zmc2V0LAorICAgIGd1aW50IGxlbmd0aCwgR3N0QnVmZmVyICoqIHJldGJ1ZiwgZ3BvaW50ZXIgY29udGV4dCwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICAvKiAgY29uc3QgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9CisgICAgIChjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKikgdXNlcl9kYXRhOyAqLworICBjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKmlucHV0ID0KKyAgICAgIChjb25zdCBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgKikgY29udGV4dDsKKyAgR3N0QnVmZmVyICpidWY7CisKKyAgYnVmID0gZ3N0X2J1ZmZlcl9uZXdfYWxsb2NhdGUgKE5VTEwsIGxlbmd0aCwgTlVMTCk7CisgIGZhaWxfaWYgKGJ1ZiA9PSBOVUxMLCAiTm90IGVub3VnaCBtZW1vcnkgdG8gYWxsb2NhdGUgYnVmZmVyIik7CisKKyAgaWYgKGlucHV0LT5wYXlsb2FkKSB7CisgICAgZ3N0X2J1ZmZlcl9maWxsIChidWYsIDAsIGlucHV0LT5wYXlsb2FkICsgb2Zmc2V0LCBsZW5ndGgpOworICB9IGVsc2UgeworICAgIEdzdE1hcEluZm8gaW5mbzsKKyAgICBndWludCBwYXR0ZXJuOworCisgICAgcGF0dGVybiA9IG9mZnNldCAtIG9mZnNldCAlIHNpemVvZiAocGF0dGVybik7CisKKyAgICBnc3RfYnVmZmVyX21hcCAoYnVmLCAmaW5mbywgR1NUX01BUF9XUklURSk7CisgICAgZm9yIChndWludDY0IGkgPSAwOyBpIDwgbGVuZ3RoOyArK2kpIHsKKyAgICAgIGdjaGFyIHBhdHRlcm5fYnl0ZV90b193cml0ZSA9IChvZmZzZXQgKyBpKSAlIHNpemVvZiAocGF0dGVybik7CisgICAgICBpZiAocGF0dGVybl9ieXRlX3RvX3dyaXRlID09IDApIHsKKyAgICAgICAgcGF0dGVybiA9IG9mZnNldCArIGk7CisgICAgICB9CisgICAgICBpbmZvLmRhdGFbaV0gPSAocGF0dGVybiA+PiAocGF0dGVybl9ieXRlX3RvX3dyaXRlICogOCkpICYgMHhGRjsKKyAgICB9CisgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmaW5mbyk7CisgIH0KKyAgKnJldGJ1ZiA9IGJ1ZjsKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCisvKioqKioqKioqKioqKioqKioqKiogVGVzdCBzcGVjaWZpYyBjb2RlIHN0YXJ0cyBoZXJlICoqKioqKioqKioqKioqKioqKioqKioqKioqLworCisvKgorICogVGVzdCBhbiBtcGQgd2l0aCBhbiBhdWRpbyBhbmQgYSB2aWRlbyBzdHJlYW0KKyAqCisgKi8KK0dTVF9TVEFSVF9URVNUIChzaW1wbGVUZXN0KQoreworICBjb25zdCBnY2hhciAqbXBkID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz4iCisgICAgICAiPFNtb290aFN0cmVhbWluZ01lZGlhIE1ham9yVmVyc2lvbj1cIjJcIiBNaW5vclZlcnNpb249XCIwXCIgRHVyYXRpb249XCI0MDAwMDAwMFwiPiIKKyAgICAgICI8U3RyZWFtSW5kZXggVHlwZT1cInZpZGVvXCIgUXVhbGl0eUxldmVscz1cIjFcIiBDaHVua3M9XCIxXCIgVXJsPVwiUXVhbGl0eUxldmVscyh7Yml0cmF0ZX0pL0ZyYWdtZW50cyh2aWRlbz17c3RhcnQgdGltZX0pXCI+IgorICAgICAgIjxRdWFsaXR5TGV2ZWwgSW5kZXg9XCIwXCIgQml0cmF0ZT1cIjQ4MDExMVwiIEZvdXJDQz1cIkgyNjRcIiBNYXhXaWR0aD1cIjEwMjRcIiBNYXhIZWlnaHQ9XCI0MzZcIiBDb2RlY1ByaXZhdGVEYXRhPVwiMDAwXCIgLz4iCisgICAgICAiPGMgbj1cIjBcIiBkPVwiMTAwMDAwMDBcIiAvPiIKKyAgICAgICI8YyBuPVwiMVwiIGQ9XCIxMDAwMDAwMFwiIC8+IgorICAgICAgIjxjIG49XCIyXCIgZD1cIjEwMDAwMDAwXCIgLz4iCisgICAgICAiPGMgbj1cIjNcIiBkPVwiMTAwMDAwMDBcIiAvPiIKKyAgICAgICI8L1N0cmVhbUluZGV4PiIKKyAgICAgICI8U3RyZWFtSW5kZXggVHlwZT1cImF1ZGlvXCIgTGFuZ3VhZ2U9XCJlbmdcIiBRdWFsaXR5TGV2ZWxzPVwiMVwiIENodW5rcz1cIjFcIiBVcmw9XCJRdWFsaXR5TGV2ZWxzKHtiaXRyYXRlfSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz17c3RhcnQgdGltZX0pXCI+IgorICAgICAgIjxRdWFsaXR5TGV2ZWwgSW5kZXg9XCIwXCIgQml0cmF0ZT1cIjIwMDAyOVwiIEZvdXJDQz1cIkFBQ0xcIiBTYW1wbGluZ1JhdGU9XCI0ODAwMFwiIENoYW5uZWxzPVwiMlwiIEJpdHNQZXJTYW1wbGU9XCIxNlwiIFBhY2tldFNpemU9XCI0XCIgQXVkaW9UYWc9XCIyNTVcIiBDb2RlY1ByaXZhdGVEYXRhPVwiMTE5MFwiIC8+IgorICAgICAgIjxjIG49XCIwXCIgZD1cIjQwMDAwMDAwXCIgLz4iICI8L1N0cmVhbUluZGV4PiIgIjwvU21vb3RoU3RyZWFtaW5nTWVkaWE+IjsKKworICBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvUXVhbGl0eUxldmVscyg0ODAxMTEpL0ZyYWdtZW50cyh2aWRlbz0wKSIsIE5VTEwsIDkwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDQ4MDExMSkvRnJhZ21lbnRzKHZpZGVvPTEwMDAwMDAwKSIsIE5VTEwsCisgICAgICAgIDkwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDQ4MDExMSkvRnJhZ21lbnRzKHZpZGVvPTIwMDAwMDAwKSIsIE5VTEwsCisgICAgICAgIDkwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDQ4MDExMSkvRnJhZ21lbnRzKHZpZGVvPTMwMDAwMDAwKSIsIE5VTEwsCisgICAgICAgIDkwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDIwMDAyOSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz0wKSIsIE5VTEwsCisgICAgICAgIDUwMDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7ImF1ZGlvXzAwIiwgNTAwMCwgTlVMTH0sCisgICAgeyJ2aWRlb18wMCIsIDQgKiA5MDAwLCBOVUxMfQorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhbGxiYWNrcyB0ZXN0X2NhbGxiYWNrcyA9IHsgMCB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfc3RhcnQgPSBnc3RfbXNzZGVtdXhfaHR0cF9zcmNfc3RhcnQ7CisgIGh0dHBfc3JjX2NhbGxiYWNrcy5zcmNfY3JlYXRlID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX2NyZWF0ZTsKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworCisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwgImh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiLAorICAgICAgJnRlc3RfY2FsbGJhY2tzLCB0ZXN0RGF0YSk7CisgIGdfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworLyoKKyAqIFRlc3Qgc2Vla2luZworICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrKQoreworICBjb25zdCBnY2hhciAqbXBkID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz4iCisgICAgICAiPFNtb290aFN0cmVhbWluZ01lZGlhIE1ham9yVmVyc2lvbj1cIjJcIiBNaW5vclZlcnNpb249XCIwXCIgRHVyYXRpb249XCI0MDAwMDAwMFwiPiIKKyAgICAgICI8U3RyZWFtSW5kZXggVHlwZT1cImF1ZGlvXCIgTGFuZ3VhZ2U9XCJlbmdcIiBRdWFsaXR5TGV2ZWxzPVwiMVwiIENodW5rcz1cIjFcIiBVcmw9XCJRdWFsaXR5TGV2ZWxzKHtiaXRyYXRlfSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz17c3RhcnQgdGltZX0pXCI+IgorICAgICAgIjxRdWFsaXR5TGV2ZWwgSW5kZXg9XCIwXCIgQml0cmF0ZT1cIjIwMDAyOVwiIEZvdXJDQz1cIkFBQ0xcIiBTYW1wbGluZ1JhdGU9XCI0ODAwMFwiIENoYW5uZWxzPVwiMlwiIEJpdHNQZXJTYW1wbGU9XCIxNlwiIFBhY2tldFNpemU9XCI0XCIgQXVkaW9UYWc9XCIyNTVcIiBDb2RlY1ByaXZhdGVEYXRhPVwiMTE5MFwiIC8+IgorICAgICAgIjxjIG49XCIwXCIgZD1cIjQ1MDM0NjY2NlwiIC8+IgorICAgICAgIjwvU3RyZWFtSW5kZXg+IiAiPC9TbW9vdGhTdHJlYW1pbmdNZWRpYT4iOworICBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvUXVhbGl0eUxldmVscygyMDAwMjkpL0ZyYWdtZW50cyhhdWRpb19lbmc9MCkiLCBOVUxMLAorICAgICAgICAxMDAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCAxMDAwMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKworICAvKiBtZWRpYSBzZWdtZW50IHN0YXJ0cyBhdCA0Njg3CisgICAqIElzc3VlIGEgc2VlayByZXF1ZXN0IGFmdGVyIG1lZGlhIHNlZ21lbnQgaGFzIHN0YXJ0ZWQgdG8gYmUgZG93bmxvYWRlZAorICAgKiBvbiB0aGUgZmlyc3QgcGFkIGxpc3RlZCBpbiBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbURhdGEgYW5kIHRoZQorICAgKiBmaXJzdCBjaHVuayBvZiBhdCBsZWFzdCBvbmUgYnl0ZSBoYXMgYWxyZWFkeSBhcnJpdmVkIGluIEFwcFNpbmsKKyAgICovCisgIHRlc3REYXRhLT50aHJlc2hvbGRfZm9yX3NlZWsgPSA0Njg3ICsgMTsKKworICAvKiBzZWVrIHRvIDVtcy4KKyAgICogQmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBmcmFnbWVudCwgd2UgZXhwZWN0IHRoZSB3aG9sZSBmaWxlIHRvIGJlCisgICAqIGRvd25sb2FkZWQgYWdhaW4KKyAgICovCisgIHRlc3REYXRhLT5zZWVrX2V2ZW50ID0KKyAgICAgIGdzdF9ldmVudF9uZXdfc2VlayAoMS4wLCBHU1RfRk9STUFUX1RJTUUsCisgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19LRVlfVU5JVCwgR1NUX1NFRUtfVFlQRV9TRVQsCisgICAgICA1ICogR1NUX01TRUNPTkQsIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCk7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9zZWVrIChERU1VWF9FTEVNRU5UX05BTUUsCisgICAgICAiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworc3RhdGljIHZvaWQKK3J1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKGdkb3VibGUgcmF0ZSwgR3N0U2Vla1R5cGUgc3RhcnRfdHlwZSwKKyAgICBndWludDY0IHNlZWtfc3RhcnQsIEdzdFNlZWtUeXBlIHN0b3BfdHlwZSwgZ3VpbnQ2NCBzZWVrX3N0b3AsCisgICAgR3N0U2Vla0ZsYWdzIGZsYWdzLCBndWludDY0IHNlZ21lbnRfc3RhcnQsIGd1aW50NjQgc2VnbWVudF9zdG9wLAorICAgIGdpbnQgc2VnbWVudHMpCit7CisgIGNvbnN0IGdjaGFyICptcGQgPQorICAgICAgIjw/eG1sIHZlcnNpb249XCIxLjBcIiBlbmNvZGluZz1cInV0Zi04XCI/PiIKKyAgICAgICI8U21vb3RoU3RyZWFtaW5nTWVkaWEgTWFqb3JWZXJzaW9uPVwiMlwiIE1pbm9yVmVyc2lvbj1cIjBcIiBEdXJhdGlvbj1cIjQwMDAwMDAwXCI+IgorICAgICAgIjxTdHJlYW1JbmRleCBUeXBlPVwiYXVkaW9cIiBMYW5ndWFnZT1cImVuZ1wiIFF1YWxpdHlMZXZlbHM9XCIxXCIgQ2h1bmtzPVwiMVwiIFVybD1cIlF1YWxpdHlMZXZlbHMoe2JpdHJhdGV9KS9GcmFnbWVudHMoYXVkaW9fZW5nPXtzdGFydCB0aW1lfSlcIj4iCisgICAgICAiPFF1YWxpdHlMZXZlbCBJbmRleD1cIjBcIiBCaXRyYXRlPVwiMjAwMDI5XCIgRm91ckNDPVwiQUFDTFwiIFNhbXBsaW5nUmF0ZT1cIjQ4MDAwXCIgQ2hhbm5lbHM9XCIyXCIgQml0c1BlclNhbXBsZT1cIjE2XCIgUGFja2V0U2l6ZT1cIjRcIiBBdWRpb1RhZz1cIjI1NVwiIENvZGVjUHJpdmF0ZURhdGE9XCIxMTkwXCIgLz4iCisgICAgICAiPGMgbj1cIjBcIiBkPVwiMTAwMDAwMDBcIiAvPiIKKyAgICAgICI8YyBuPVwiMVwiIGQ9XCIxMDAwMDAwMFwiIC8+IgorICAgICAgIjxjIG49XCIyXCIgZD1cIjEwMDAwMDAwXCIgLz4iCisgICAgICAiPGMgbj1cIjNcIiBkPVwiMTAwMDAwMDBcIiAvPiIgIjwvU3RyZWFtSW5kZXg+IiAiPC9TbW9vdGhTdHJlYW1pbmdNZWRpYT4iOworICBHc3RNc3NEZW11eFRlc3RJbnB1dERhdGEgaW5wdXRUZXN0RGF0YVtdID0geworICAgIHsiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsIChndWludDggKikgbXBkLCAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvUXVhbGl0eUxldmVscygyMDAwMjkpL0ZyYWdtZW50cyhhdWRpb19lbmc9MCkiLCBOVUxMLAorICAgICAgICAxMDAwMH0sCisgICAgeyJodHRwOi8vdW5pdC50ZXN0L1F1YWxpdHlMZXZlbHMoMjAwMDI5KS9GcmFnbWVudHMoYXVkaW9fZW5nPTEwMDAwMDAwKSIsCisgICAgICAgIE5VTEwsIDEwMDAwfSwKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvUXVhbGl0eUxldmVscygyMDAwMjkpL0ZyYWdtZW50cyhhdWRpb19lbmc9MjAwMDAwMDApIiwKKyAgICAgICAgTlVMTCwgMTAwMDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDIwMDAyOSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz0zMDAwMDAwMCkiLAorICAgICAgICBOVUxMLCAxMDAwMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIC8qIDEgZnJvbSB0aGUgaW5pdCBzZWdtZW50ICovCisgICAgeyJhdWRpb18wMCIsIHNlZ21lbnRzICogMTAwMDAsIE5VTEx9LAorICB9OworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhOworCisgIHRlc3REYXRhID0gZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfY2FzZV9uZXcgKCk7CisKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfbXNzZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBDT1BZX09VVFBVVF9URVNUX0RBVEEgKG91dHB1dFRlc3REYXRhLCB0ZXN0RGF0YSk7CisKKyAgLyogbWVkaWEgc2VnbWVudCBzdGFydHMgYXQgNDY4NworICAgKiBJc3N1ZSBhIHNlZWsgcmVxdWVzdCBhZnRlciBtZWRpYSBzZWdtZW50IGhhcyBzdGFydGVkIHRvIGJlIGRvd25sb2FkZWQKKyAgICogb24gdGhlIGZpcnN0IHBhZCBsaXN0ZWQgaW4gR3N0QWRhcHRpdmVEZW11eFRlc3RPdXRwdXRTdHJlYW1EYXRhIGFuZCB0aGUKKyAgICogZmlyc3QgY2h1bmsgb2YgYXQgbGVhc3Qgb25lIGJ5dGUgaGFzIGFscmVhZHkgYXJyaXZlZCBpbiBBcHBTaW5rCisgICAqLworICB0ZXN0RGF0YS0+dGhyZXNob2xkX2Zvcl9zZWVrID0gNDY4NyArIDE7CisKKyAgLyogRklYTUUgaGFjayB0byBhdm9pZCBoYXZpbmcgYSAwIHNlcW51bSAqLworICBnc3RfdXRpbF9zZXFudW1fbmV4dCAoKTsKKworICAvKiBzZWVrIHRvIDVtcy4KKyAgICogQmVjYXVzZSB0aGVyZSBpcyBvbmx5IG9uZSBmcmFnbWVudCwgd2UgZXhwZWN0IHRoZSB3aG9sZSBmaWxlIHRvIGJlCisgICAqIGRvd25sb2FkZWQgYWdhaW4KKyAgICovCisgIHRlc3REYXRhLT5zZWVrX2V2ZW50ID0KKyAgICAgIGdzdF9ldmVudF9uZXdfc2VlayAocmF0ZSwgR1NUX0ZPUk1BVF9USU1FLCBmbGFncywgc3RhcnRfdHlwZSwKKyAgICAgIHNlZWtfc3RhcnQsIHN0b3BfdHlwZSwgc2Vla19zdG9wKTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3NlZWsgKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgdGVzdERhdGEpOworICBnc3Rfb2JqZWN0X3VucmVmICh0ZXN0RGF0YSk7Cit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla0tleVVuaXRQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGgga2V5IHVuaXQsIGl0IHNob3VsZCBnbyBiYWNrIHRvIDEuMHMuIDMgc2VnbWVudHMgd2lsbCBiZQorICAgKiBwdXNoZWQgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19LRVlfVU5JVCwKKyAgICAgIDEwMDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrVXBkYXRlU3RvcFBvc2l0aW9uKQoreworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfTk9ORSwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDMwMDAgKiBHU1RfTVNFQ09ORCwgMCwgMCwgMzAwMCAqIEdTVF9NU0VDT05ELCAzKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdFNlZWtQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzIHdpdGhvdXQga2V5IHVuaXQsIGl0IHNob3VsZCBrZWVwIHRoZSAxLjVzLCBidXQgc3RpbGwgcHVzaAorICAgKiBmcm9tIHRoZSAxc3Qgc2VnbWVudCwgc28gMyBzZWdtZW50cyB3aWxsIGJlCisgICAqIHB1c2hlZCAqLworICBydW5fc2Vla19wb3NpdGlvbl90ZXN0ICgxLjAsIEdTVF9TRUVLX1RZUEVfU0VULCAxNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19UWVBFX05PTkUsIDAsIEdTVF9TRUVLX0ZMQUdfRkxVU0gsIDE1MDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0U2Vla1NuYXBCZWZvcmVQb3NpdGlvbikKK3sKKyAgLyogU2VlayB0byAxLjVzLCBzbmFwIGJlZm9yZSwgaXQgZ28gdG8gMXMgKi8KKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoMS4wLCBHU1RfU0VFS19UWVBFX1NFVCwgMTUwMCAqIEdTVF9NU0VDT05ELAorICAgICAgR1NUX1NFRUtfVFlQRV9OT05FLCAwLCBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSwKKyAgICAgIDEwMDAgKiBHU1RfTVNFQ09ORCwgLTEsIDMpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RTZWVrU25hcEFmdGVyUG9zaXRpb24pCit7CisgIC8qIFNlZWsgdG8gMS41cyB3aXRoIHNuYXAgYWZ0ZXIsIGl0IHNob3VsZCBtb3ZlIHRvIDJzICovCisgIHJ1bl9zZWVrX3Bvc2l0aW9uX3Rlc3QgKDEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDE1MDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfTk9ORSwgMCwgR1NUX1NFRUtfRkxBR19GTFVTSCB8IEdTVF9TRUVLX0ZMQUdfU05BUF9BRlRFUiwKKyAgICAgIDIwMDAgKiBHU1RfTVNFQ09ORCwgLTEsIDIpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RSZXZlcnNlU2Vla1NuYXBCZWZvcmVQb3NpdGlvbikKK3sKKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoLTEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAyNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0JFRk9SRSwgMTAwMCAqIEdTVF9NU0VDT05ELAorICAgICAgMzAwMCAqIEdTVF9NU0VDT05ELCAyKTsKK30KKworR1NUX0VORF9URVNUOworCisKK0dTVF9TVEFSVF9URVNUICh0ZXN0UmV2ZXJzZVNlZWtTbmFwQWZ0ZXJQb3NpdGlvbikKK3sKKyAgcnVuX3NlZWtfcG9zaXRpb25fdGVzdCAoLTEuMCwgR1NUX1NFRUtfVFlQRV9TRVQsIDEwMDAgKiBHU1RfTVNFQ09ORCwKKyAgICAgIEdTVF9TRUVLX1RZUEVfU0VULCAyNTAwICogR1NUX01TRUNPTkQsCisgICAgICBHU1RfU0VFS19GTEFHX0ZMVVNIIHwgR1NUX1NFRUtfRkxBR19TTkFQX0FGVEVSLCAxMDAwICogR1NUX01TRUNPTkQsCisgICAgICAyMDAwICogR1NUX01TRUNPTkQsIDEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCit0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjayAoR3N0QWRhcHRpdmVEZW11eFRlc3RFbmdpbmUgKiBlbmdpbmUsCisgICAgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHRXJyb3IgKmVyciA9IE5VTEw7CisgIGdjaGFyICpkYmdfaW5mbyA9IE5VTEw7CisKKyAgZmFpbF91bmxlc3MgKEdTVF9NRVNTQUdFX1RZUEUgKG1zZykgPT0gR1NUX01FU1NBR0VfRVJST1IpOworICBnc3RfbWVzc2FnZV9wYXJzZV9lcnJvciAobXNnLCAmZXJyLCAmZGJnX2luZm8pOworICBHU1RfREVCVUcgKCJFcnJvciBmcm9tIGVsZW1lbnQgJXMgOiAlc1xuIiwKKyAgICAgIEdTVF9PQkpFQ1RfTkFNRSAobXNnLT5zcmMpLCBlcnItPm1lc3NhZ2UpOworICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChHU1RfT0JKRUNUX05BTUUgKG1zZy0+c3JjKSwgREVNVVhfRUxFTUVOVF9OQU1FKTsKKyAgLypHU1RfREVCVUcgKCJkYmdfaW5mbz0lc1xuIiwgZGJnX2luZm8pOyAqLworICBnX2Vycm9yX2ZyZWUgKGVycik7CisgIGdfZnJlZSAoZGJnX2luZm8pOworICBnX21haW5fbG9vcF9xdWl0IChlbmdpbmUtPmxvb3ApOworfQorCisvKgorICogVGVzdCBlcnJvciBjYXNlIG9mIGZhaWxpbmcgdG8gZG93bmxvYWQgYSBzZWdtZW50CisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0RG93bmxvYWRFcnJvcikKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxTbW9vdGhTdHJlYW1pbmdNZWRpYSBNYWpvclZlcnNpb249XCIyXCIgTWlub3JWZXJzaW9uPVwiMFwiIER1cmF0aW9uPVwiNDAwMDAwMDBcIj4iCisgICAgICAiPFN0cmVhbUluZGV4IFR5cGU9XCJhdWRpb1wiIExhbmd1YWdlPVwiZW5nXCIgUXVhbGl0eUxldmVscz1cIjFcIiBDaHVua3M9XCIxXCIgVXJsPVwiUXVhbGl0eUxldmVscyh7Yml0cmF0ZX0pL0ZyYWdtZW50cyhhdWRpb19lbmc9e3N0YXJ0IHRpbWV9KVwiPiIKKyAgICAgICI8UXVhbGl0eUxldmVsIEluZGV4PVwiMFwiIEJpdHJhdGU9XCIyMDAwMjlcIiBGb3VyQ0M9XCJBQUNMXCIgU2FtcGxpbmdSYXRlPVwiNDgwMDBcIiBDaGFubmVscz1cIjJcIiBCaXRzUGVyU2FtcGxlPVwiMTZcIiBQYWNrZXRTaXplPVwiNFwiIEF1ZGlvVGFnPVwiMjU1XCIgQ29kZWNQcml2YXRlRGF0YT1cIjExOTBcIiAvPiIKKyAgICAgICI8YyBuPVwiMFwiIGQ9XCI0MDAwMDAwMFwiIC8+IiAiPC9TdHJlYW1JbmRleD4iICI8L1Ntb290aFN0cmVhbWluZ01lZGlhPiI7CisKKyAgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhIGlucHV0VGVzdERhdGFbXSA9IHsKKyAgICB7Imh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiLCAoZ3VpbnQ4ICopIG1wZCwgMH0sCisgICAge05VTEwsIE5VTEwsIDB9LAorICB9OworICBHc3RUZXN0SFRUUFNyY0NhbGxiYWNrcyBodHRwX3NyY19jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCBvdXRwdXRUZXN0RGF0YVtdID0geworICAgIHsiYXVkaW9fMDAiLCAwLCBOVUxMfSwKKyAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYWxsYmFja3MgdGVzdF9jYWxsYmFja3MgPSB7IDAgfTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RDYXNlICp0ZXN0RGF0YTsKKworICB0ZXN0RGF0YSA9IGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2Nhc2VfbmV3ICgpOworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX3N0YXJ0ID0gZ3N0X21zc2RlbXV4X2h0dHBfc3JjX3N0YXJ0OworICBodHRwX3NyY19jYWxsYmFja3Muc3JjX2NyZWF0ZSA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIHRlc3RfY2FsbGJhY2tzLmJ1c19lcnJvcl9tZXNzYWdlID0gdGVzdERvd25sb2FkRXJyb3JNZXNzYWdlQ2FsbGJhY2s7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3NpemVfb2ZfcmVjZWl2ZWRfZGF0YTsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLCAiaHR0cDovL3VuaXQudGVzdC9NYW5pZmVzdCIsCisgICAgICAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKKy8qIGdlbmVyYXRlIHF1ZXJpZXMgdG8gYWRhcHRpdmUgZGVtdXggKi8KK3N0YXRpYyBnYm9vbGVhbgordGVzdFF1ZXJ5Q2hlY2tEYXRhUmVjZWl2ZWQgKEdzdEFkYXB0aXZlRGVtdXhUZXN0RW5naW5lICogZW5naW5lLAorICAgIEdzdEFkYXB0aXZlRGVtdXhUZXN0T3V0cHV0U3RyZWFtICogc3RyZWFtLAorICAgIEdzdEJ1ZmZlciAqIGJ1ZmZlciwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHTGlzdCAqcGFkczsKKyAgR3N0UGFkICpwYWQ7CisgIEdzdFF1ZXJ5ICpxdWVyeTsKKyAgZ2Jvb2xlYW4gcmV0OworICBnaW50NjQgZHVyYXRpb247CisgIGdib29sZWFuIHNlZWthYmxlOworICBnaW50NjQgc2VnbWVudF9zdGFydDsKKyAgZ2ludDY0IHNlZ21lbnRfZW5kOworICBnY2hhciAqdXJpOworICBnY2hhciAqcmVkaXJlY3RfdXJpOworICBnYm9vbGVhbiByZWRpcmVjdF9wZXJtYW5lbnQ7CisKKyAgcGFkcyA9IEdTVF9FTEVNRU5UX1BBRFMgKHN0cmVhbS0+YXBwc2luayk7CisKKyAgLyogQXBwU2luayBzaG91bGQgaGF2ZSBvbmx5IDEgcGFkICovCisgIGZhaWxfdW5sZXNzIChwYWRzICE9IE5VTEwpOworICBmYWlsX3VubGVzcyAoZ19saXN0X2xlbmd0aCAocGFkcykgPT0gMSk7CisgIHBhZCA9IEdTVF9QQUQgKHBhZHMtPmRhdGEpOworCisgIHF1ZXJ5ID0gZ3N0X3F1ZXJ5X25ld19kdXJhdGlvbiAoR1NUX0ZPUk1BVF9USU1FKTsKKyAgcmV0ID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKKyAgZmFpbF91bmxlc3MgKHJldCA9PSBUUlVFKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX2R1cmF0aW9uIChxdWVyeSwgTlVMTCwgJmR1cmF0aW9uKTsKKyAgZmFpbF91bmxlc3MgKGR1cmF0aW9uID09IEdTVF9TRUNPTkQpOworICBnc3RfcXVlcnlfdW5yZWYgKHF1ZXJ5KTsKKworICBxdWVyeSA9IGdzdF9xdWVyeV9uZXdfc2Vla2luZyAoR1NUX0ZPUk1BVF9USU1FKTsKKyAgcmV0ID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKKyAgZmFpbF91bmxlc3MgKHJldCA9PSBUUlVFKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX3NlZWtpbmcgKHF1ZXJ5LCBOVUxMLCAmc2Vla2FibGUsICZzZWdtZW50X3N0YXJ0LAorICAgICAgJnNlZ21lbnRfZW5kKTsKKyAgZmFpbF91bmxlc3MgKHNlZWthYmxlID09IFRSVUUpOworICBmYWlsX3VubGVzcyAoc2VnbWVudF9zdGFydCA9PSAwKTsKKyAgZmFpbF91bmxlc3MgKHNlZ21lbnRfZW5kID09IGR1cmF0aW9uKTsKKyAgZ3N0X3F1ZXJ5X3VucmVmIChxdWVyeSk7CisKKyAgcXVlcnkgPSBnc3RfcXVlcnlfbmV3X3VyaSAoKTsKKyAgcmV0ID0gZ3N0X3BhZF9wZWVyX3F1ZXJ5IChwYWQsIHF1ZXJ5KTsKKyAgZmFpbF91bmxlc3MgKHJldCA9PSBUUlVFKTsKKyAgZ3N0X3F1ZXJ5X3BhcnNlX3VyaSAocXVlcnksICZ1cmkpOworICBnc3RfcXVlcnlfcGFyc2VfdXJpX3JlZGlyZWN0aW9uIChxdWVyeSwgJnJlZGlyZWN0X3VyaSk7CisgIGdzdF9xdWVyeV9wYXJzZV91cmlfcmVkaXJlY3Rpb25fcGVybWFuZW50IChxdWVyeSwgJnJlZGlyZWN0X3Blcm1hbmVudCk7CisgIGZhaWxfdW5sZXNzIChzdHJjbXAgKHVyaSwgImh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiKSA9PSAwKTsKKyAgLyogYWRhcHRpdmUgZGVtdXggZG9lcyBub3QgcmVwbHkgd2l0aCByZWRpcmVjdCBpbmZvcm1hdGlvbiAqLworICBmYWlsX3VubGVzcyAocmVkaXJlY3RfdXJpID09IE5VTEwpOworICBmYWlsX3VubGVzcyAocmVkaXJlY3RfcGVybWFuZW50ID09IEZBTFNFKTsKKyAgZ19mcmVlICh1cmkpOworICBnX2ZyZWUgKHJlZGlyZWN0X3VyaSk7CisgIGdzdF9xdWVyeV91bnJlZiAocXVlcnkpOworCisgIHJldHVybiBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19yZWNlaXZlZF9kYXRhIChlbmdpbmUsCisgICAgICBzdHJlYW0sIGJ1ZmZlciwgdXNlcl9kYXRhKTsKK30KKworLyoKKyAqIFRlc3QgcXVlcmllcworICoKKyAqLworR1NUX1NUQVJUX1RFU1QgKHRlc3RRdWVyeSkKK3sKKyAgY29uc3QgZ2NoYXIgKm1wZCA9CisgICAgICAiPD94bWwgdmVyc2lvbj1cIjEuMFwiIGVuY29kaW5nPVwidXRmLThcIj8+IgorICAgICAgIjxTbW9vdGhTdHJlYW1pbmdNZWRpYSBNYWpvclZlcnNpb249XCIyXCIgTWlub3JWZXJzaW9uPVwiMFwiIER1cmF0aW9uPVwiMTAwMDAwMDBcIj4iCisgICAgICAiPFN0cmVhbUluZGV4IFR5cGU9XCJhdWRpb1wiIExhbmd1YWdlPVwiZW5nXCIgUXVhbGl0eUxldmVscz1cIjFcIiBDaHVua3M9XCIxXCIgVXJsPVwiUXVhbGl0eUxldmVscyh7Yml0cmF0ZX0pL0ZyYWdtZW50cyhhdWRpb19lbmc9e3N0YXJ0IHRpbWV9KVwiPiIKKyAgICAgICI8UXVhbGl0eUxldmVsIEluZGV4PVwiMFwiIEJpdHJhdGU9XCIyMDAwMjlcIiBGb3VyQ0M9XCJBQUNMXCIgU2FtcGxpbmdSYXRlPVwiNDgwMDBcIiBDaGFubmVscz1cIjJcIiBCaXRzUGVyU2FtcGxlPVwiMTZcIiBQYWNrZXRTaXplPVwiNFwiIEF1ZGlvVGFnPVwiMjU1XCIgQ29kZWNQcml2YXRlRGF0YT1cIjExOTBcIiAvPiIKKyAgICAgICI8YyBuPVwiMFwiIGQ9XCIxMDAwMDAwMFwiIC8+IiAiPC9TdHJlYW1JbmRleD4iICI8L1Ntb290aFN0cmVhbWluZ01lZGlhPiI7CisgIEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDIwMDAyOSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz0wKSIsIE5VTEwsCisgICAgICAgIDUwMDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7ImF1ZGlvXzAwIiwgNTAwMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIHRlc3RfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSBnc3RfbXNzZGVtdXhfaHR0cF9zcmNfY3JlYXRlOworICBDT1BZX09VVFBVVF9URVNUX0RBVEEgKG91dHB1dFRlc3REYXRhLCB0ZXN0RGF0YSk7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfcmVjZWl2ZWRfZGF0YSA9IHRlc3RRdWVyeUNoZWNrRGF0YVJlY2VpdmVkOworICB0ZXN0X2NhbGxiYWNrcy5hcHBzaW5rX2VvcyA9CisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19zaXplX29mX3JlY2VpdmVkX2RhdGE7CisKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKCZodHRwX3NyY19jYWxsYmFja3MsIGlucHV0VGVzdERhdGEpOworICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9ydW4gKERFTVVYX0VMRU1FTlRfTkFNRSwKKyAgICAgICJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgJnRlc3RfY2FsbGJhY2tzLCB0ZXN0RGF0YSk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHRlc3REYXRhKTsKK30KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgR3N0Rmxvd1JldHVybgordGVzdF9mcmFnbWVudF9kb3dubG9hZF9lcnJvcl9zcmNfY3JlYXRlIChHc3RUZXN0SFRUUFNyYyAqIHNyYywKKyAgICBndWludDY0IG9mZnNldCwKKyAgICBndWludCBsZW5ndGgsIEdzdEJ1ZmZlciAqKiByZXRidWYsIGdwb2ludGVyIGNvbnRleHQsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgY29uc3QgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhICppbnB1dCA9CisgICAgICAoY29uc3QgR3N0TXNzRGVtdXhUZXN0SW5wdXREYXRhICopIGNvbnRleHQ7CisgIGZhaWxfdW5sZXNzIChpbnB1dCAhPSBOVUxMKTsKKyAgaWYgKCFnX3N0cl9oYXNfc3VmZml4IChpbnB1dC0+dXJpLCAiLm1wZCIpICYmIG9mZnNldCA+IDIwMDApIHsKKyAgICBHU1RfREVCVUcgKCJuZXR3b3JrX2Vycm9yICVzICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBAICVkIiwKKyAgICAgICAgaW5wdXQtPnVyaSwgb2Zmc2V0LCAyMDAwKTsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgUkVBRCwKKyAgICAgICAgKCgiQSBuZXR3b3JrIGVycm9yIG9jY3VycmVkLCBvciB0aGUgc2VydmVyIGNsb3NlZCB0aGUgY29ubmVjdGlvbiB1bmV4cGVjdGVkbHkuIikpLCAoIkEgbmV0d29yayBlcnJvciBvY2N1cnJlZCwgb3IgdGhlIHNlcnZlciBjbG9zZWQgdGhlIGNvbm5lY3Rpb24gdW5leHBlY3RlZGx5LiIpKTsKKyAgICByZXR1cm4gR1NUX0ZMT1dfRVJST1I7CisgIH0KKyAgcmV0dXJuIGdzdF9tc3NkZW11eF9odHRwX3NyY19jcmVhdGUgKHNyYywgb2Zmc2V0LCBsZW5ndGgsIHJldGJ1ZiwgY29udGV4dCwKKyAgICAgIHVzZXJfZGF0YSk7Cit9CisKKy8qIGZ1bmN0aW9uIHRvIGNoZWNrIHRvdGFsIHNpemUgb2YgZGF0YSByZWNlaXZlZCBieSBBcHBTaW5rCisgKiB3aWxsIGJlIGNhbGxlZCB3aGVuIEFwcFNpbmsgcmVjZWl2ZXMgZW9zLgorICovCitzdGF0aWMgdm9pZAordGVzdEZyYWdtZW50RG93bmxvYWRFcnJvckNoZWNrU2l6ZU9mRGF0YVJlY2VpdmVkIChHc3RBZGFwdGl2ZURlbXV4VGVzdEVuZ2luZSAqCisgICAgZW5naW5lLCBHc3RBZGFwdGl2ZURlbXV4VGVzdE91dHB1dFN0cmVhbSAqIHN0cmVhbSwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHc3RBZGFwdGl2ZURlbXV4VGVzdENhc2UgKnRlc3REYXRhID0gR1NUX0FEQVBUSVZFX0RFTVVYX1RFU1RfQ0FTRSAodXNlcl9kYXRhKTsKKyAgR3N0QWRhcHRpdmVEZW11eFRlc3RFeHBlY3RlZE91dHB1dCAqdGVzdE91dHB1dFN0cmVhbURhdGE7CisKKyAgdGVzdE91dHB1dFN0cmVhbURhdGEgPQorICAgICAgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3RfZmluZF90ZXN0X2RhdGFfYnlfc3RyZWFtICh0ZXN0RGF0YSwgc3RyZWFtLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHRlc3RPdXRwdXRTdHJlYW1EYXRhICE9IE5VTEwpOworCisgIC8qIGV4cGVjdCB0byByZWNlaXZlIG1vcmUgdGhhbiAwICovCisgIGZhaWxfdW5sZXNzIChzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUgPiAwLAorICAgICAgInNpemUgdmFsaWRhdGlvbiBmYWlsZWQgZm9yICVzLCBleHBlY3RlZCA+IDAsIHJlY2VpdmVkICVkIiwKKyAgICAgIHRlc3RPdXRwdXRTdHJlYW1EYXRhLT5uYW1lLCBzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUpOworCisgIC8qIGV4cGVjdCB0byByZWNlaXZlIGxlc3MgdGhhbiBmaWxlIHNpemUgKi8KKyAgZmFpbF91bmxlc3MgKHN0cmVhbS0+dG90YWxfcmVjZWl2ZWRfc2l6ZSA8CisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+ZXhwZWN0ZWRfc2l6ZSwKKyAgICAgICJzaXplIHZhbGlkYXRpb24gZmFpbGVkIGZvciAlcywgZXhwZWN0ZWQgPCAlZCByZWNlaXZlZCAlZCIsCisgICAgICB0ZXN0T3V0cHV0U3RyZWFtRGF0YS0+bmFtZSwgdGVzdE91dHB1dFN0cmVhbURhdGEtPmV4cGVjdGVkX3NpemUsCisgICAgICBzdHJlYW0tPnRvdGFsX3JlY2VpdmVkX3NpemUpOworfQorCisvKgorICogVGVzdCBmcmFnbWVudCBkb3dubG9hZCBlcnJvcgorICogTGV0IHRoZSBhZGFwdGl2ZSBkZW11eCBkb3dubG9hZCBhIGZldyBieXRlcywgdGhlbiBpbnN0cnVjdCB0aGUKKyAqIEdzdFRlc3RIVFRQU3JjIGVsZW1lbnQgdG8gZ2VuZXJhdGUgYW4gZXJyb3IuCisgKi8KK0dTVF9TVEFSVF9URVNUICh0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yKQoreworICBjb25zdCBnY2hhciAqbXBkID0KKyAgICAgICI8P3htbCB2ZXJzaW9uPVwiMS4wXCIgZW5jb2Rpbmc9XCJ1dGYtOFwiPz4iCisgICAgICAiPFNtb290aFN0cmVhbWluZ01lZGlhIE1ham9yVmVyc2lvbj1cIjJcIiBNaW5vclZlcnNpb249XCIwXCIgRHVyYXRpb249XCI0MDAwMDAwXCI+IgorICAgICAgIjxTdHJlYW1JbmRleCBUeXBlPVwiYXVkaW9cIiBMYW5ndWFnZT1cImVuZ1wiIFF1YWxpdHlMZXZlbHM9XCIxXCIgQ2h1bmtzPVwiMVwiIFVybD1cIlF1YWxpdHlMZXZlbHMoe2JpdHJhdGV9KS9GcmFnbWVudHMoYXVkaW9fZW5nPXtzdGFydCB0aW1lfSlcIj4iCisgICAgICAiPFF1YWxpdHlMZXZlbCBJbmRleD1cIjBcIiBCaXRyYXRlPVwiMjAwMDI5XCIgRm91ckNDPVwiQUFDTFwiIFNhbXBsaW5nUmF0ZT1cIjQ4MDAwXCIgQ2hhbm5lbHM9XCIyXCIgQml0c1BlclNhbXBsZT1cIjE2XCIgUGFja2V0U2l6ZT1cIjRcIiBBdWRpb1RhZz1cIjI1NVwiIENvZGVjUHJpdmF0ZURhdGE9XCIxMTkwXCIgLz4iCisgICAgICAiPGMgbj1cIjBcIiBkPVwiMTAwMDAwMDBcIiAvPiIgIjwvU3RyZWFtSW5kZXg+IiAiPC9TbW9vdGhTdHJlYW1pbmdNZWRpYT4iOworCisgIEdzdE1zc0RlbXV4VGVzdElucHV0RGF0YSBpbnB1dFRlc3REYXRhW10gPSB7CisgICAgeyJodHRwOi8vdW5pdC50ZXN0L01hbmlmZXN0IiwgKGd1aW50OCAqKSBtcGQsIDB9LAorICAgIHsiaHR0cDovL3VuaXQudGVzdC9RdWFsaXR5TGV2ZWxzKDIwMDAyOSkvRnJhZ21lbnRzKGF1ZGlvX2VuZz0wKSIsIE5VTEwsCisgICAgICAgIDUwMDB9LAorICAgIHtOVUxMLCBOVUxMLCAwfSwKKyAgfTsKKyAgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgaHR0cF9zcmNfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0RXhwZWN0ZWRPdXRwdXQgb3V0cHV0VGVzdERhdGFbXSA9IHsKKyAgICB7ImF1ZGlvXzAwIiwgNTAwMCwgTlVMTH0sCisgIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FsbGJhY2tzIHRlc3RfY2FsbGJhY2tzID0geyAwIH07CisgIEdzdEFkYXB0aXZlRGVtdXhUZXN0Q2FzZSAqdGVzdERhdGE7CisKKyAgdGVzdERhdGEgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jYXNlX25ldyAoKTsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19zdGFydCA9IGdzdF9tc3NkZW11eF9odHRwX3NyY19zdGFydDsKKyAgaHR0cF9zcmNfY2FsbGJhY2tzLnNyY19jcmVhdGUgPSB0ZXN0X2ZyYWdtZW50X2Rvd25sb2FkX2Vycm9yX3NyY19jcmVhdGU7CisgIENPUFlfT1VUUFVUX1RFU1RfREFUQSAob3V0cHV0VGVzdERhdGEsIHRlc3REYXRhKTsKKyAgdGVzdF9jYWxsYmFja3MuYXBwc2lua19yZWNlaXZlZF9kYXRhID0KKyAgICAgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X2NoZWNrX3JlY2VpdmVkX2RhdGE7CisgIHRlc3RfY2FsbGJhY2tzLmFwcHNpbmtfZW9zID0gdGVzdEZyYWdtZW50RG93bmxvYWRFcnJvckNoZWNrU2l6ZU9mRGF0YVJlY2VpdmVkOworICAvKiAgdGVzdF9jYWxsYmFja3MuZGVtdXhfc2VudF9lb3MgPSBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF9jaGVja19zaXplX29mX3JlY2VpdmVkX2RhdGE7ICovCisKKyAgdGVzdF9jYWxsYmFja3MuYnVzX2Vycm9yX21lc3NhZ2UgPSB0ZXN0RG93bmxvYWRFcnJvck1lc3NhZ2VDYWxsYmFjazsKKworICBnc3RfdGVzdF9odHRwX3NyY19pbnN0YWxsX2NhbGxiYWNrcyAoJmh0dHBfc3JjX2NhbGxiYWNrcywgaW5wdXRUZXN0RGF0YSk7CisgIGdzdF9hZGFwdGl2ZV9kZW11eF90ZXN0X3J1biAoREVNVVhfRUxFTUVOVF9OQU1FLAorICAgICAgImh0dHA6Ly91bml0LnRlc3QvTWFuaWZlc3QiLCAmdGVzdF9jYWxsYmFja3MsIHRlc3REYXRhKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodGVzdERhdGEpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyBTdWl0ZSAqCittc3NfZGVtdXhfc3VpdGUgKHZvaWQpCit7CisgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgibXNzX2RlbXV4Iik7CisgIFRDYXNlICp0Y19iYXNpY1Rlc3QgPSB0Y2FzZV9jcmVhdGUgKCJiYXNpY1Rlc3QiKTsKKworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCBzaW1wbGVUZXN0KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWspOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla0tleVVuaXRQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrUG9zaXRpb24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0U2Vla1VwZGF0ZVN0b3BQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RTZWVrU25hcEJlZm9yZVBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFNlZWtTbmFwQWZ0ZXJQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RSZXZlcnNlU2Vla1NuYXBCZWZvcmVQb3NpdGlvbik7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19iYXNpY1Rlc3QsIHRlc3RSZXZlcnNlU2Vla1NuYXBBZnRlclBvc2l0aW9uKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdERvd25sb2FkRXJyb3IpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfYmFzaWNUZXN0LCB0ZXN0RnJhZ21lbnREb3dubG9hZEVycm9yKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2Jhc2ljVGVzdCwgdGVzdFF1ZXJ5KTsKKworICB0Y2FzZV9hZGRfdW5jaGVja2VkX2ZpeHR1cmUgKHRjX2Jhc2ljVGVzdCwgZ3N0X2FkYXB0aXZlX2RlbXV4X3Rlc3Rfc2V0dXAsCisgICAgICBnc3RfYWRhcHRpdmVfZGVtdXhfdGVzdF90ZWFyZG93bik7CisKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19iYXNpY1Rlc3QpOworCisgIHJldHVybiBzOworfQorCitHU1RfQ0hFQ0tfTUFJTiAobXNzX2RlbXV4KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL214Zm11eC5jIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvbXhmbXV4LmMKaW5kZXggYjEyZGQ5MS4uNzQ4ZWJjMCAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvbXhmbXV4LmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvbXhmbXV4LmMKQEAgLTIzOSw2ICsyMzksMzIgQEAKIAogR1NUX0VORF9URVNUOwogCitHU1RfU1RBUlRfVEVTVCAodGVzdF9oMjY0X3Jhd19hdWRpbykKK3sKKyAgZ2NoYXIgKnBpcGVsaW5lOworICBHc3RFbGVtZW50RmFjdG9yeSAqZmFjdG9yeSA9IE5VTEw7CisKKyAgaWYgKChmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kICgieDI2NGVuYyIpKSA9PSBOVUxMKQorICAgIHJldHVybjsKKyAgZ3N0X29iamVjdF91bnJlZiAoZmFjdG9yeSk7CisgIGlmICgoZmFjdG9yeSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfZmluZCAoImgyNjRwYXJzZSIpKSA9PSBOVUxMKQorICAgIHJldHVybjsKKyAgZ3N0X29iamVjdF91bnJlZiAoZmFjdG9yeSk7CisKKyAgcGlwZWxpbmUgPSBnX3N0cmR1cF9wcmludGYgKCJ2aWRlb3Rlc3RzcmMgbnVtLWJ1ZmZlcnM9MjUwICEgIgorICAgICAgInZpZGVvL3gtcmF3LGZyYW1lcmF0ZT0yNS8xICEgIgorICAgICAgIngyNjRlbmMgISBoMjY0cGFyc2UgISAiCisgICAgICAibXhmbXV4IG5hbWU9bXV4ICEgIgorICAgICAgImZha2VzaW5rICAiCisgICAgICAiYXVkaW90ZXN0c3JjIG51bS1idWZmZXJzPTI1MCAhICIKKyAgICAgICJhdWRpb2NvbnZlcnQgISAiICJhdWRpby94LXJhdyxmb3JtYXQ9UzI0TEUsY2hhbm5lbHM9MiAhIG11eC4gIik7CisKKyAgcnVuX3Rlc3QgKHBpcGVsaW5lKTsKKyAgZ19mcmVlIChwaXBlbGluZSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKwogc3RhdGljIFN1aXRlICoKIG14Zm11eF9zdWl0ZSAodm9pZCkKIHsKQEAgLTI0OCwxNiArMjc0LDEyIEBACiAgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOwogICB0Y2FzZV9zZXRfdGltZW91dCAodGNfY2hhaW4sIDE4MCk7CiAKLSAgLyogRklYTUU6IHJlbW92ZSBhZ2FpbiBvbmNlIHBvcnRlZCAqLwotICBpZiAoIWdzdF9yZWdpc3RyeV9jaGVja19mZWF0dXJlX3ZlcnNpb24gKGdzdF9yZWdpc3RyeV9nZXQgKCksICJteGZtdXgiLCAxLCAwLAotICAgICAgICAgIDApKQotICAgIHJldHVybiBzOwotCiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9tcGVnMik7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9yYXdfdmlkZW9fcmF3X2F1ZGlvKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3Jhd192aWRlb19zdHJpZGVfdHJhbnNmb3JtKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2pwZWcyMDAwX2FsYXcpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfZG54aGRfbXAzKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2gyNjRfcmF3X2F1ZGlvKTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X211bHRpcGxlX2F2X3N0cmVhbXMpOwogCiAgIHJldHVybiBzOwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvbmV0c2ltLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9uZXRzaW0uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUwMjZjCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvbmV0c2ltLmMKQEAgLTAsMCArMSw2NSBAQAorI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RoYXJuZXNzLmg+CisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisKK0dTVF9TVEFSVF9URVNUIChuZXRzaW1fc3RyZXNzKQoreworICBHc3RIYXJuZXNzICpoID0gZ3N0X2hhcm5lc3NfbmV3ICgibmV0c2ltIik7CisgIEdzdENhcHMgKmNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoIm15Y2FwcyIpOworICBHc3RCdWZmZXIgKmJ1ZiA9IGdzdF9oYXJuZXNzX2NyZWF0ZV9idWZmZXIgKGgsIDEwMCk7CisgIEdzdEhhcm5lc3NUaHJlYWQgKnN0YXRlLCAqcHVzaDsKKyAgR3N0U2VnbWVudCBzZWdtZW50OworCisgIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBzdGF0ZSA9IGdzdF9oYXJuZXNzX3N0cmVzc19zdGF0ZWNoYW5nZV9zdGFydCAoaCk7CisgIHB1c2ggPSBnc3RfaGFybmVzc19zdHJlc3NfcHVzaF9idWZmZXJfc3RhcnQgKGgsIGNhcHMsICZzZWdtZW50LCBidWYpOworCisgIGdfdXNsZWVwIChHX1VTRUNfUEVSX1NFQyAqIDEpOworCisgIGdzdF9oYXJuZXNzX3N0cmVzc190aHJlYWRfc3RvcCAoc3RhdGUpOworICBnc3RfaGFybmVzc19zdHJlc3NfdGhyZWFkX3N0b3AgKHB1c2gpOworCisgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgZ3N0X2hhcm5lc3NfdGVhcmRvd24gKGgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUIChuZXRzaW1fc3RyZXNzX2RlbGF5ZWQpCit7CisgIEdzdEhhcm5lc3MgKmggPSBnc3RfaGFybmVzc19uZXdfcGFyc2UgKCJuZXRzaW0gZGVsYXktcHJvYmFiaWxpdHk9MC41Iik7CisgIEdzdENhcHMgKmNhcHMgPSBnc3RfY2Fwc19mcm9tX3N0cmluZyAoIm15Y2FwcyIpOworICBHc3RCdWZmZXIgKmJ1ZiA9IGdzdF9oYXJuZXNzX2NyZWF0ZV9idWZmZXIgKGgsIDEwMCk7CisgIEdzdEhhcm5lc3NUaHJlYWQgKnN0YXRlLCAqcHVzaDsKKyAgR3N0U2VnbWVudCBzZWdtZW50OworCisgIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBzdGF0ZSA9IGdzdF9oYXJuZXNzX3N0cmVzc19zdGF0ZWNoYW5nZV9zdGFydCAoaCk7CisgIHB1c2ggPSBnc3RfaGFybmVzc19zdHJlc3NfcHVzaF9idWZmZXJfc3RhcnQgKGgsIGNhcHMsICZzZWdtZW50LCBidWYpOworCisgIGdfdXNsZWVwIChHX1VTRUNfUEVSX1NFQyAqIDEpOworCisgIGdzdF9oYXJuZXNzX3N0cmVzc190aHJlYWRfc3RvcCAoc3RhdGUpOworICBnc3RfaGFybmVzc19zdHJlc3NfdGhyZWFkX3N0b3AgKHB1c2gpOworCisgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmKTsKKyAgZ3N0X2hhcm5lc3NfdGVhcmRvd24gKGgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyBTdWl0ZSAqCituZXRzaW1fc3VpdGUgKHZvaWQpCit7CisgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgibmV0c2ltIik7CisgIFRDYXNlICp0Y19jaGFpbjsKKworICBzdWl0ZV9hZGRfdGNhc2UgKHMsICh0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoImdlbmVyYWwiKSkpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIG5ldHNpbV9zdHJlc3MpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIG5ldHNpbV9zdHJlc3NfZGVsYXllZCk7CisKKyAgcmV0dXJuIHM7Cit9CisKK0dTVF9DSEVDS19NQUlOIChuZXRzaW0pCmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9vcHVzLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9vcHVzLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhZmViNGUuLjAwMDAwMDAKLS0tIGEvdGVzdHMvY2hlY2svZWxlbWVudHMvb3B1cy5jCisrKyAvZGV2L251bGwKQEAgLTEsMzc4ICswLDAgQEAKLS8qIEdTdHJlYW1lcgotICoKLSAqIHVuaXQgdGVzdCBmb3Igb3B1cwotICoKLSAqIENvcHlyaWdodCAoQykgPDIwMTE+IFZpbmNlbnQgUGVucXVlcmMnaCA8dmluY2VudC5wZW5xdWVyY2hAY29sbGJhb3JhLmNvLnVrPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0gKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAqCi0gKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0gKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCi0gKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKLSAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgotICovCi0KLSNpbmNsdWRlIDx1bmlzdGQuaD4KLQotI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgotCi0jaWYgR19CWVRFX09SREVSID09IEdfQklHX0VORElBTgotI2RlZmluZSBBRk9STUFUICJTMTZCRSIKLSNlbHNlCi0jZGVmaW5lIEFGT1JNQVQgIlMxNkxFIgotI2VuZGlmCi0KLSNkZWZpbmUgQVVESU9fQ0FQU19TVFJJTkcgImF1ZGlvL3gtcmF3LCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXQgPSAoc3RyaW5nKSAiIEFGT1JNQVQgIiwgIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXlvdXQgPSAoc3RyaW5nKSBpbnRlcmxlYXZlZCwgIiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAicmF0ZSA9IChpbnQpIDQ4MDAwLCAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICJjaGFubmVscyA9IChpbnQpIDEgIgotCi1zdGF0aWMgY29uc3QgZ3VpbnQ4IG9wdXNfb2dnX2lkX2hlYWRlclsxOV0gPSB7Ci0gIDB4NGYsIDB4NzAsIDB4NzUsIDB4NzMsIDB4NDgsIDB4NjUsIDB4NjEsIDB4NjQsIDB4MDAsIDB4MDIsIDB4MDAsIDB4MDAsIDB4MDAsCi0gIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAKLX07Ci0KLS8qIEEgbG90IG9mIHRoZXNlIHRha2VuIGZyb20gdGhlIHZvcmJpc2RlYyB0ZXN0ICovCi0KLS8qIEZvciBlYXNlIG9mIHByb2dyYW1taW5nIHdlIHVzZSBnbG9iYWxzIHRvIGtlZXAgcmVmcyBmb3Igb3VyIGZsb2F0aW5nCi0gKiBzcmMgYW5kIHNpbmsgcGFkcyB3ZSBjcmVhdGU7IG90aGVyd2lzZSB3ZSBhbHdheXMgaGF2ZSB0byBkbyBnZXRfcGFkLAotICogZ2V0X3BlZXIsIGFuZCB0aGVuIHJlbW92ZSByZWZlcmVuY2VzIGluIGV2ZXJ5IHRlc3QgZnVuY3Rpb24gKi8KLXN0YXRpYyBHc3RQYWQgKm15ZGVjc3JjcGFkLCAqbXlkZWNzaW5rcGFkOwotc3RhdGljIEdzdFBhZCAqbXllbmNzcmNwYWQsICpteWVuY3NpbmtwYWQ7Ci0KLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAotICAgIEdTVF9QQURfU0lOSywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFNfQU5ZKTsKLXN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmN0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKLSAgICBHU1RfUEFEX1NSQywKLSAgICBHU1RfUEFEX0FMV0FZUywKLSAgICBHU1RfU1RBVElDX0NBUFNfQU5ZKTsKLQotc3RhdGljIEdzdEVsZW1lbnQgKgotc2V0dXBfb3B1c2RlYyAodm9pZCkKLXsKLSAgR3N0RWxlbWVudCAqb3B1c2RlYzsKLQotICBHU1RfREVCVUcgKCJzZXR1cF9vcHVzZGVjIik7Ci0gIG9wdXNkZWMgPSBnc3RfY2hlY2tfc2V0dXBfZWxlbWVudCAoIm9wdXNkZWMiKTsKLSAgbXlkZWNzcmNwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc3JjX3BhZCAob3B1c2RlYywgJnNyY3RlbXBsYXRlKTsKLSAgbXlkZWNzaW5rcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkIChvcHVzZGVjLCAmc2lua3RlbXBsYXRlKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteWRlY3NyY3BhZCwgVFJVRSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlkZWNzaW5rcGFkLCBUUlVFKTsKLQotICByZXR1cm4gb3B1c2RlYzsKLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfb3B1c2RlYyAoR3N0RWxlbWVudCAqIG9wdXNkZWMpCi17Ci0gIEdTVF9ERUJVRyAoImNsZWFudXBfb3B1c2RlYyIpOwotICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG9wdXNkZWMsIEdTVF9TVEFURV9OVUxMKTsKLQotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15ZGVjc3JjcGFkLCBGQUxTRSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlkZWNzaW5rcGFkLCBGQUxTRSk7Ci0gIGdzdF9jaGVja190ZWFyZG93bl9zcmNfcGFkIChvcHVzZGVjKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NpbmtfcGFkIChvcHVzZGVjKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX2VsZW1lbnQgKG9wdXNkZWMpOwotfQotCi1zdGF0aWMgR3N0RWxlbWVudCAqCi1zZXR1cF9vcHVzZW5jICh2b2lkKQotewotICBHc3RFbGVtZW50ICpvcHVzZW5jOwotCi0gIEdTVF9ERUJVRyAoInNldHVwX29wdXNlbmMiKTsKLSAgb3B1c2VuYyA9IGdzdF9jaGVja19zZXR1cF9lbGVtZW50ICgib3B1c2VuYyIpOwotICBteWVuY3NyY3BhZCA9IGdzdF9jaGVja19zZXR1cF9zcmNfcGFkIChvcHVzZW5jLCAmc3JjdGVtcGxhdGUpOwotICBteWVuY3NpbmtwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc2lua19wYWQgKG9wdXNlbmMsICZzaW5rdGVtcGxhdGUpOwotICBnc3RfcGFkX3NldF9hY3RpdmUgKG15ZW5jc3JjcGFkLCBUUlVFKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteWVuY3NpbmtwYWQsIFRSVUUpOwotCi0gIHJldHVybiBvcHVzZW5jOwotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9vcHVzZW5jIChHc3RFbGVtZW50ICogb3B1c2VuYykKLXsKLSAgR1NUX0RFQlVHICgiY2xlYW51cF9vcHVzZW5jIik7Ci0gIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob3B1c2VuYywgR1NUX1NUQVRFX05VTEwpOwotCi0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXllbmNzcmNwYWQsIEZBTFNFKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteWVuY3NpbmtwYWQsIEZBTFNFKTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQgKG9wdXNlbmMpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQgKG9wdXNlbmMpOwotICBnc3RfY2hlY2tfdGVhcmRvd25fZWxlbWVudCAob3B1c2VuYyk7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jaGVja19idWZmZXJzIChndWludCBleHBlY3RlZCkKLXsKLSAgR3N0QnVmZmVyICpvdXRidWZmZXI7Ci0gIGd1aW50IGksIG51bV9idWZmZXJzOwotCi0gIC8qIGNoZWNrIGJ1ZmZlcnMgYXJlIHRoZSB0eXBlIHdlIGV4cGVjdCAqLwotICBudW1fYnVmZmVycyA9IGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpOwotICBmYWlsX3VubGVzcyAobnVtX2J1ZmZlcnMgPj0gZXhwZWN0ZWQpOwotICBmb3IgKGkgPSAwOyBpIDwgbnVtX2J1ZmZlcnM7ICsraSkgewotICAgIG91dGJ1ZmZlciA9IEdTVF9CVUZGRVIgKGJ1ZmZlcnMtPmRhdGEpOwotICAgIGZhaWxfaWYgKG91dGJ1ZmZlciA9PSBOVUxMKTsKLSAgICBmYWlsX2lmIChnc3RfYnVmZmVyX2dldF9zaXplIChvdXRidWZmZXIpID09IDApOwotCi0gICAgYnVmZmVycyA9IGdfbGlzdF9yZW1vdmUgKGJ1ZmZlcnMsIG91dGJ1ZmZlcik7Ci0KLSAgICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChvdXRidWZmZXIsICJvdXRidWZmZXIiLCAxKTsKLSAgICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWZmZXIpOwotICAgIG91dGJ1ZmZlciA9IE5VTEw7Ci0gIH0KLX0KLQotR1NUX1NUQVJUX1RFU1QgKHRlc3Rfb3B1c19pZF9oZWFkZXIpCi17Ci0gIEdzdEVsZW1lbnQgKm9wdXNkZWM7Ci0gIEdzdEJ1ZmZlciAqaW5idWZmZXI7Ci0gIEdzdENhcHMgKmNhcHM7Ci0KLSAgb3B1c2RlYyA9IHNldHVwX29wdXNkZWMgKCk7Ci0gIGZhaWxfdW5sZXNzIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKG9wdXNkZWMsCi0gICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHBsYXlpbmciKTsKLQotICBjYXBzID0gZ3N0X2NhcHNfbmV3X2VtcHR5X3NpbXBsZSAoImF1ZGlvL3gtb3B1cyIpOwotICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteWRlY3NyY3BhZCwgb3B1c2RlYywgY2FwcywgR1NUX0ZPUk1BVF9USU1FKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotCi0gIGluYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChzaXplb2YgKG9wdXNfb2dnX2lkX2hlYWRlcikpOwotICBnc3RfYnVmZmVyX2ZpbGwgKGluYnVmZmVyLCAwLCBvcHVzX29nZ19pZF9oZWFkZXIsCi0gICAgICBzaXplb2YgKG9wdXNfb2dnX2lkX2hlYWRlcikpOwotICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChpbmJ1ZmZlciwgImluYnVmZmVyIiwgMSk7Ci0gIGdzdF9idWZmZXJfcmVmIChpbmJ1ZmZlcik7Ci0KLSAgLyogcHVzaGluZyBnaXZlcyBhd2F5IG15IHJlZmVyZW5jZSAuLi4gKi8KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaCAobXlkZWNzcmNwYWQsIGluYnVmZmVyKSA9PSBHU1RfRkxPV19PSyk7Ci0gIC8qIC4uLiBhbmQgbm90aGluZyBlbmRzIHVwIG9uIHRoZSBnbG9iYWwgYnVmZmVyIGxpc3QgKi8KLSAgQVNTRVJUX0JVRkZFUl9SRUZDT1VOVCAoaW5idWZmZXIsICJpbmJ1ZmZlciIsIDEpOwotICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1ZmZlcik7Ci0gIGNoZWNrX2J1ZmZlcnMgKDApOwotCi0gIC8qIGNsZWFudXAgKi8KLSAgY2xlYW51cF9vcHVzZGVjIChvcHVzZGVjKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9vcHVzX2VuY29kZV9ub3RoaW5nKQotewotICBHc3RFbGVtZW50ICpvcHVzZW5jOwotCi0gIG9wdXNlbmMgPSBzZXR1cF9vcHVzZW5jICgpOwotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZW5jLAotICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXllbmNzcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKSA9PSBUUlVFKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZW5jLAotICAgICAgICAgIEdTVF9TVEFURV9SRUFEWSkgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcmVhZHkiKTsKLQotICAvKiBjbGVhbnVwICovCi0gIGNsZWFudXBfb3B1c2VuYyAob3B1c2VuYyk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotR1NUX1NUQVJUX1RFU1QgKHRlc3Rfb3B1c19kZWNvZGVfbm90aGluZykKLXsKLSAgR3N0RWxlbWVudCAqb3B1c2RlYzsKLQotICBvcHVzZGVjID0gc2V0dXBfb3B1c2RlYyAoKTsKLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob3B1c2RlYywKLSAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcGxheWluZyIpOwotCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15ZGVjc3JjcGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSkgPT0gVFJVRSk7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob3B1c2RlYywKLSAgICAgICAgICBHU1RfU1RBVEVfUkVBRFkpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHJlYWR5Iik7Ci0KLSAgLyogY2xlYW51cCAqLwotICBjbGVhbnVwX29wdXNkZWMgKG9wdXNkZWMpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X29wdXNfZW5jb2RlX3NhbXBsZXMpCi17Ci0gIGNvbnN0IHVuc2lnbmVkIGludCBuc2FtcGxlcyA9IDQwOTY7Ci0gIEdzdEVsZW1lbnQgKm9wdXNlbmM7Ci0gIEdzdEJ1ZmZlciAqaW5idWZmZXI7Ci0gIEdzdENhcHMgKmNhcHM7Ci0KLSAgb3B1c2VuYyA9IHNldHVwX29wdXNlbmMgKCk7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob3B1c2VuYywKLSAgICAgICAgICBHU1RfU1RBVEVfUExBWUlORykgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcGxheWluZyIpOwotCi0gIGluYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXdfYW5kX2FsbG9jIChuc2FtcGxlcyAqIDIpOwotICBnc3RfYnVmZmVyX21lbXNldCAoaW5idWZmZXIsIDAsIDAsIG5zYW1wbGVzICogMik7Ci0KLSAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGluYnVmZmVyKSA9IEdTVF9CVUZGRVJfT0ZGU0VUIChpbmJ1ZmZlcikgPSAwOwotICBHU1RfQlVGRkVSX0RVUkFUSU9OIChpbmJ1ZmZlcikgPSBHU1RfQ0xPQ0tfVElNRV9OT05FOwotICBBU1NFUlRfQlVGRkVSX1JFRkNPVU5UIChpbmJ1ZmZlciwgImluYnVmZmVyIiwgMSk7Ci0KLSAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChBVURJT19DQVBTX1NUUklORyk7Ci0gIGZhaWxfdW5sZXNzIChjYXBzICE9IE5VTEwpOwotICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteWVuY3NyY3BhZCwgb3B1c2VuYywgY2FwcywgR1NUX0ZPUk1BVF9USU1FKTsKLSAgZ3N0X2NhcHNfdW5yZWYgKGNhcHMpOwotICBnc3RfYnVmZmVyX3JlZiAoaW5idWZmZXIpOwotCi0gIC8qIHB1c2hpbmcgZ2l2ZXMgYXdheSBteSByZWZlcmVuY2UgLi4uICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2ggKG15ZW5jc3JjcGFkLCBpbmJ1ZmZlcikgPT0gR1NUX0ZMT1dfT0spOwotICAvKiAuLi4gYW5kIG5vdGhpbmcgZW5kcyB1cCBvbiB0aGUgZ2xvYmFsIGJ1ZmZlciBsaXN0ICovCi0gIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15ZW5jc3JjcGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSkgPT0gVFJVRSk7Ci0KLSAgQVNTRVJUX0JVRkZFUl9SRUZDT1VOVCAoaW5idWZmZXIsICJpbmJ1ZmZlciIsIDEpOwotICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1ZmZlcik7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAob3B1c2VuYywKLSAgICAgICAgICBHU1RfU1RBVEVfUkVBRFkpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUywKLSAgICAgICJjb3VsZCBub3Qgc2V0IHRvIHJlYWR5Iik7Ci0KLSAgLyogZGVmYXVsdCBmcmFtZSBzaXplIGlzIDIwIG1zLCBhdCA0ODAwMCBIeiB0aGF0J3MgOTYwIHNhbXBsZXMgKi8KLSAgY2hlY2tfYnVmZmVycyAoKG5zYW1wbGVzICsgOTU5KSAvIDk2MCk7Ci0KLSAgLyogY2xlYW51cCAqLwotICBjbGVhbnVwX29wdXNlbmMgKG9wdXNlbmMpOwotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotR1NUX1NUQVJUX1RFU1QgKHRlc3Rfb3B1c19lbmNvZGVfcHJvcGVydGllcykKLXsKLSAgY29uc3QgdW5zaWduZWQgaW50IG5zYW1wbGVzID0gNDA5NjsKLSAgZW51bQotICB7IHN0ZXBzID0gMjAgfTsKLSAgR3N0RWxlbWVudCAqb3B1c2VuYzsKLSAgR3N0QnVmZmVyICppbmJ1ZmZlcjsKLSAgR3N0Q2FwcyAqY2FwczsKLSAgdW5zaWduZWQgaW50IHN0ZXA7Ci0gIHN0YXRpYyBjb25zdCBzdHJ1Y3QKLSAgewotICAgIGNvbnN0IGNoYXIgKnBhcmFtOwotICAgIGludCB2YWx1ZTsKLSAgfSBwYXJhbV9jaGFuZ2VzW3N0ZXBzXSA9IHsKLSAgICB7Ci0gICAgImZyYW1lLXNpemUiLCA0MH0sIHsKLSAgICAiaW5iYW5kLWZlYyIsIDF9LCB7Ci0gICAgImNvbXBsZXhpdHkiLCA1fSwgewotICAgICJiYW5kd2lkdGgiLCAxMTA0fSwgewotICAgICJmcmFtZS1zaXplIiwgMn0sIHsKLSAgICAibWF4LXBheWxvYWQtc2l6ZSIsIDgwfSwgewotICAgICJmcmFtZS1zaXplIiwgNjB9LCB7Ci0gICAgIm1heC1wYXlsb2FkLXNpemUiLCA5MDB9LCB7Ci0gICAgImNvbXBsZXhpdHkiLCAxfSwgewotICAgICJiaXRyYXRlIiwgMzAwMDB9LCB7Ci0gICAgImZyYW1lLXNpemUiLCAxMH0sIHsKLSAgICAiYml0cmF0ZSIsIDMwMDAwMH0sIHsKLSAgICAiaW5iYW5kLWZlYyIsIDB9LCB7Ci0gICAgImZyYW1lLXNpemUiLCA1fSwgewotICAgICJiYW5kd2lkdGgiLCAxMTAxfSwgewotICAgICJmcmFtZS1zaXplIiwgMTB9LCB7Ci0gICAgImJpdHJhdGUiLCA1MDAwMDB9LCB7Ci0gICAgImZyYW1lLXNpemUiLCA1fSwgewotICAgICJiaXRyYXRlIiwgODAwMDB9LCB7Ci0gICJjb21wbGV4aXR5IiwgOH0sfTsKLQotICBvcHVzZW5jID0gc2V0dXBfb3B1c2VuYyAoKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZW5jLAotICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Ci0KLSAgY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nIChBVURJT19DQVBTX1NUUklORyk7Ci0gIGZhaWxfdW5sZXNzIChjYXBzICE9IE5VTEwpOwotCi0gIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15ZW5jc3JjcGFkLCBvcHVzZW5jLCBjYXBzLCBHU1RfRk9STUFUX1RJTUUpOwotCi0gIGZvciAoc3RlcCA9IDA7IHN0ZXAgPCBzdGVwczsgKytzdGVwKSB7Ci0gICAgR3N0U2VnbWVudCBzZWdtZW50OwotCi0gICAgZ3N0X3NlZ21lbnRfaW5pdCAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSk7Ci0gICAgZ3N0X3BhZF9wdXNoX2V2ZW50IChteWVuY3NyY3BhZCwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpOwotCi0gICAgaW5idWZmZXIgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKG5zYW1wbGVzICogMik7Ci0gICAgZ3N0X2J1ZmZlcl9tZW1zZXQgKGluYnVmZmVyLCAwLCAwLCBuc2FtcGxlcyAqIDIpOwotCi0gICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGluYnVmZmVyKSA9IEdTVF9CVUZGRVJfT0ZGU0VUIChpbmJ1ZmZlcikgPSAwOwotICAgIEdTVF9CVUZGRVJfRFVSQVRJT04gKGluYnVmZmVyKSA9IEdTVF9DTE9DS19USU1FX05PTkU7Ci0gICAgQVNTRVJUX0JVRkZFUl9SRUZDT1VOVCAoaW5idWZmZXIsICJpbmJ1ZmZlciIsIDEpOwotCi0gICAgZ3N0X2J1ZmZlcl9yZWYgKGluYnVmZmVyKTsKLQotICAgIC8qIHB1c2hpbmcgZ2l2ZXMgYXdheSBteSByZWZlcmVuY2UgLi4uICovCi0gICAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaCAobXllbmNzcmNwYWQsIGluYnVmZmVyKSA9PSBHU1RfRkxPV19PSyk7Ci0gICAgLyogLi4uIGFuZCBub3RoaW5nIGVuZHMgdXAgb24gdGhlIGdsb2JhbCBidWZmZXIgbGlzdCAqLwotICAgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15ZW5jc3JjcGFkLAotICAgICAgICAgICAgZ3N0X2V2ZW50X25ld19lb3MgKCkpID09IFRSVUUpOwotCi0gICAgQVNTRVJUX0JVRkZFUl9SRUZDT1VOVCAoaW5idWZmZXIsICJpbmJ1ZmZlciIsIDEpOwotICAgIGdzdF9idWZmZXJfdW5yZWYgKGluYnVmZmVyKTsKLQotICAgIC8qIGNoYW5nZSByYW5kb20gcGFyYW1ldGVycyAqLwotICAgIGdfb2JqZWN0X3NldCAob3B1c2VuYywgcGFyYW1fY2hhbmdlc1tzdGVwXS5wYXJhbSwgcGFyYW1fY2hhbmdlc1tzdGVwXS52YWx1ZSwKLSAgICAgICAgTlVMTCk7Ci0KLSAgICBjaGVja19idWZmZXJzICgxKTsKLQotICAgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15ZW5jc3JjcGFkLAotICAgICAgICAgICAgZ3N0X2V2ZW50X25ld19mbHVzaF9zdGFydCAoKSkgPT0gVFJVRSk7Ci0gICAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXllbmNzcmNwYWQsCi0gICAgICAgICAgICBnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0b3AgKFRSVUUpKSA9PSBUUlVFKTsKLSAgfQotCi0gIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChvcHVzZW5jLAotICAgICAgICAgIEdTVF9TVEFURV9SRUFEWSkgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLAotICAgICAgImNvdWxkIG5vdCBzZXQgdG8gcmVhZHkiKTsKLQotICAvKiBjbGVhbnVwICovCi0gIGNsZWFudXBfb3B1c2VuYyAob3B1c2VuYyk7Ci0gIGdfbGlzdF9mcmVlIChidWZmZXJzKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1zdGF0aWMgU3VpdGUgKgotb3B1c19zdWl0ZSAodm9pZCkKLXsKLSAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJvcHVzIik7Ci0gIFRDYXNlICp0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoImdlbmVyYWwiKTsKLQotICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKLQotI2RlZmluZSBYIGlmICgwKQotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfb3B1c19pZF9oZWFkZXIpOwotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfb3B1c19lbmNvZGVfbm90aGluZyk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9vcHVzX2RlY29kZV9ub3RoaW5nKTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X29wdXNfZW5jb2RlX3NhbXBsZXMpOwotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3Rfb3B1c19lbmNvZGVfcHJvcGVydGllcyk7Ci0jdW5kZWYgWAotCi0gIHJldHVybiBzOwotfQotCi1HU1RfQ0hFQ0tfTUFJTiAob3B1cyk7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9wY2FwcGFyc2UuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3BjYXBwYXJzZS5jCmluZGV4IDhhMmEwNTQuLjE1ZDM1NTUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3BjYXBwYXJzZS5jCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3BjYXBwYXJzZS5jCkBAIC0xLDUgKzEsNiBAQAogI2luY2x1ZGUgInBhcnNlci5oIgogI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RoYXJuZXNzLmg+CiAKIHN0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmN0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKICAgICBHU1RfUEFEX1NSQywKQEAgLTM2LDcgKzM3LDcgQEAKICAgaWYgKHZkYXRhLT5kYXRhX3RvX3ZlcmlmeSA9PSBwY2FwX2ZyYW1lX3dpdGhfZXRoX3BhZGRpbmcpIHsKICAgICBvZmZzZXQgPSBwY2FwX2ZyYW1lX3dpdGhfZXRoX3BhZGRpbmdfb2Zmc2V0OwogICAgIHNpemUgPSBzaXplb2YgKHBjYXBfZnJhbWVfd2l0aF9ldGhfcGFkZGluZykgLQotICAgICAgcGNhcF9mcmFtZV93aXRoX2V0aF9wYWRkaW5nX29mZnNldCAtIDI7CisgICAgICAgIHBjYXBfZnJhbWVfd2l0aF9ldGhfcGFkZGluZ19vZmZzZXQgLSAyOwogICB9CiAKICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X2J1ZmZlcl9nZXRfc2l6ZSAoYnVmZmVyKSwgc2l6ZSk7CkBAIC01MCw3ICs1MSw3IEBACiBzZXR1cF9lbGVtZW50IChjb25zdCBnY2hhciAqIGRlc2MpCiB7CiAgIEdzdEVsZW1lbnQgKmVsZW1lbnQ7Ci0gIEdzdENhcHMgKiBjYXBzOworICBHc3RDYXBzICpjYXBzOwogCiAgICh2b2lkKSBkZXNjOwogCkBAIC02Nyw2ICs2OCw1MSBAQAogICBnc3RfcGFyc2VyX3Rlc3Rfc3BsaXQgKHBjYXBfZnJhbWVfd2l0aF9ldGhfcGFkZGluZywKICAgICAgIHNpemVvZiAocGNhcF9mcmFtZV93aXRoX2V0aF9wYWRkaW5nKSk7CiB9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIGNvbnN0IGd1aW50OCB6ZXJvc2l6ZV9kYXRhW10gPSB7CisgIDB4ZDQsIDB4YzMsIDB4YjIsIDB4YTEsIDB4MDIsIDB4MDAsIDB4MDQsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDQsIDB4MDAsIDB4MDEsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4ZDMsIDB4ZmYsIDB4N2EsIDB4NTYsIDB4YmIsIDB4ZDgsIDB4MGUsIDB4MDAsCisgIDB4MmEsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MmEsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsCisgIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDAsIDB4MDgsIDB4MDAsIDB4NDUsIDB4MDAsCisgIDB4MDAsIDB4MWMsIDB4MDYsIDB4ZTcsIDB4NDAsIDB4MDAsIDB4NDAsIDB4MTEsCisgIDB4MzUsIDB4ZTgsIDB4N2YsIDB4MDAsIDB4MDAsIDB4MDEsIDB4N2YsIDB4MDAsCisgIDB4MDAsIDB4MDEsIDB4ZDIsIDB4YTMsIDB4MTMsIDB4OGMsIDB4MDAsIDB4MDgsCisgIDB4ZmUsIDB4MWIKK307CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3BhcnNlX3plcm9zaXplX2ZyYW1lcykKK3sKKyAgR3N0QnVmZmVyICppbl9idWYsICpvdXRfYnVmOworICBHc3RIYXJuZXNzICpoOworICBnc2l6ZSBkYXRhX3NpemU7CisKKyAgaCA9IGdzdF9oYXJuZXNzX25ldyAoInBjYXBwYXJzZSIpOworCisgIGdzdF9oYXJuZXNzX3NldF9zcmNfY2Fwc19zdHIgKGgsICJyYXcveC1wY2FwIik7CisKKyAgZGF0YV9zaXplID0gc2l6ZW9mICh6ZXJvc2l6ZV9kYXRhKTsKKworICBpbl9idWYgPSBnc3RfYnVmZmVyX25ld193cmFwcGVkIChnX21lbWR1cCAoemVyb3NpemVfZGF0YSwgZGF0YV9zaXplKSwKKyAgICAgIGRhdGFfc2l6ZSk7CisKKyAgZ3N0X2hhcm5lc3NfcHVzaCAoaCwgaW5fYnVmKTsKKyAgZ3N0X2hhcm5lc3NfcGxheSAoaCk7CisgIGdzdF9oYXJuZXNzX3B1c2hfZXZlbnQgKGgsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKKworICAvKiBjaGVjayB0aGF0IGEgYnVmZmVyIGNvbWVzIG91dCBhbmQgdGhhdCBpdCBpcyAwIGJ5dGVzIGluIHNpemUgKi8KKyAgb3V0X2J1ZiA9IGdzdF9oYXJuZXNzX3B1bGwgKGgpOworCisgIGZhaWxfdW5sZXNzIChnc3RfYnVmZmVyX2dldF9zaXplIChvdXRfYnVmKSA9PSAwKTsKKworICBnc3RfYnVmZmVyX3VucmVmIChvdXRfYnVmKTsKKyAgZ3N0X2hhcm5lc3NfdGVhcmRvd24gKGgpOworfQorCiBHU1RfRU5EX1RFU1Q7CiAKIHN0YXRpYyBTdWl0ZSAqCkBAIC04Niw2ICsxMzIsNyBAQAogCiAgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2VfZnJhbWVzX3dpdGhfZXRoX3BhZGRpbmcpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2VfemVyb3NpemVfZnJhbWVzKTsKIAogICByZXR1cm4gczsKIH0KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZi5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2U4MDhiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmLmMKKysrIC9kZXYvbnVsbApAQCAtMSw0MzkgKzAsMCBAQAotLyoKLSAqIG9udmlmdGltZXN0YW1wLmMKLSAqCi0gKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXhpcyBDb21tdW5pY2F0aW9ucyBBQgotICogIEF1dGhvcjogR3VpbGxhdW1lIERlc21vdHRlcyA8Z3VpbGxhdW1lLmRlc21vdHRlc0Bjb2xsYWJvcmEuY29tPgotICoKLSAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgotICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0gKgotICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gKgotICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotICovCi0KLSNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KLSNpbmNsdWRlIDxnc3QvcnRwL2dzdHJ0cGJ1ZmZlci5oPgotCi0vKiBGb3IgZWFzZSBvZiBwcm9ncmFtbWluZyB3ZSB1c2UgZ2xvYmFscyB0byBrZWVwIHJlZnMgZm9yIG91ciBmbG9hdGluZwotICogc3JjIGFuZCBzaW5rIHBhZHMgd2UgY3JlYXRlOyBvdGhlcndpc2Ugd2UgYWx3YXlzIGhhdmUgdG8gZG8gZ2V0X3BhZCwKLSAqIGdldF9wZWVyLCBhbmQgdGhlbiByZW1vdmUgcmVmZXJlbmNlcyBpbiBldmVyeSB0ZXN0IGZ1bmN0aW9uICovCi1zdGF0aWMgR3N0UGFkICpteXNyY3BhZCwgKm15c2lua3BhZDsKLQotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmt0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCi0gICAgR1NUX1BBRF9TSU5LLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwIikKLSAgICApOwotc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAotICAgIEdTVF9QQURfU1JDLAotICAgIEdTVF9QQURfQUxXQVlTLAotICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwIikKLSAgICApOwotCi0jZGVmaW5lIE5UUF9PRkZTRVQgKGd1aW50NjQpIDEyNDUKLSNkZWZpbmUgVElNRVNUQU1QIDQyCi0KLXN0YXRpYyB2b2lkCi1zZXR1cF9lbGVtZW50IChHc3RFbGVtZW50ICogZWxlbWVudCkKLXsKLSAgbXlzcmNwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc3JjX3BhZCAoZWxlbWVudCwgJnNyY3RlbXBsYXRlKTsKLSAgbXlzaW5rcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkIChlbGVtZW50LCAmc2lua3RlbXBsYXRlKTsKLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNyY3BhZCwgVFJVRSk7Ci0gIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzaW5rcGFkLCBUUlVFKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChlbGVtZW50LAotICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCi0gICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Ci19Ci0KLXN0YXRpYyBHc3RFbGVtZW50ICoKLXNldHVwX3J0cG9udmlmdGltZXN0YW1wIChnYm9vbGVhbiBzZXRfZV9iaXQpCi17Ci0gIEdzdEVsZW1lbnQgKnRpbWVzdGFtcDsKLQotICBHU1RfREVCVUcgKCJzZXR1cF9ydHBvbnZpZnRpbWVzdGFtcCIpOwotICB0aW1lc3RhbXAgPSBnc3RfY2hlY2tfc2V0dXBfZWxlbWVudCAoInJ0cG9udmlmdGltZXN0YW1wIik7Ci0KLSAgZ19vYmplY3Rfc2V0ICh0aW1lc3RhbXAsICJudHAtb2Zmc2V0IiwgTlRQX09GRlNFVCwgImNzZXEiLCAweDEyMzQ1Njc4LAotICAgICAgInNldC1lLWJpdCIsIHNldF9lX2JpdCwgTlVMTCk7Ci0KLSAgc2V0dXBfZWxlbWVudCAodGltZXN0YW1wKTsKLQotICByZXR1cm4gdGltZXN0YW1wOwotfQotCi1zdGF0aWMgdm9pZAotY2xlYW51cF9lbGVtZW50IChHc3RFbGVtZW50ICogZWxlbWVudCkKLXsKLSAgZmFpbF91bmxlc3MgKGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZWxlbWVudCwKLSAgICAgICAgICBHU1RfU1RBVEVfTlVMTCkgPT0gR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTLCAiY291bGQgbm90IHNldCB0byBudWxsIik7Ci0KLSAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNyY3BhZCwgRkFMU0UpOwotICBpZiAobXlzaW5rcGFkKQotICAgIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzaW5rcGFkLCBGQUxTRSk7Ci0gIGdzdF9jaGVja190ZWFyZG93bl9zcmNfcGFkIChlbGVtZW50KTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX3NpbmtfcGFkIChlbGVtZW50KTsKLSAgZ3N0X2NoZWNrX3RlYXJkb3duX2VsZW1lbnQgKGVsZW1lbnQpOwotICBteXNyY3BhZCA9IE5VTEw7Ci0gIG15c2lua3BhZCA9IE5VTEw7Ci19Ci0KLXN0YXRpYyB2b2lkCi1jbGVhbnVwX3J0cG9udmlmdGltZXN0YW1wIChHc3RFbGVtZW50ICogdGltZXN0YW1wKQotewotICBHU1RfREVCVUcgKCJjbGVhbnVwX3J0cG9udmlmdGltZXN0YW1wIik7Ci0KLSAgY2xlYW51cF9lbGVtZW50ICh0aW1lc3RhbXApOwotfQotCi1zdGF0aWMgdm9pZAotY2hlY2tfYnVmZmVyX2VxdWFsIChHc3RCdWZmZXIgKiBidWYsIEdzdEJ1ZmZlciAqIGV4cGVjdGVkKQotewotICBHc3RNYXBJbmZvIGluZm9fYnVmLCBpbmZvX2V4cGVjdGVkOwotCi0gIGZhaWxfaWYgKGJ1ZiA9PSBOVUxMKTsKLSAgZmFpbF9pZiAoZXhwZWN0ZWQgPT0gTlVMTCk7Ci0KLSAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJmluZm9fYnVmLCBHU1RfTUFQX1JFQUQpOwotICBnc3RfYnVmZmVyX21hcCAoZXhwZWN0ZWQsICZpbmZvX2V4cGVjdGVkLCBHU1RfTUFQX1JFQUQpOwotCi0gIEdTVF9MT0cgKCJidWZmZXI6IHNpemUgJSIgR19HU0laRV9GT1JNQVQsIGluZm9fYnVmLnNpemUpOwotICBHU1RfTE9HICgiZXhwZWN0ZWQ6IHNpemUgJSIgR19HU0laRV9GT1JNQVQsIGluZm9fZXhwZWN0ZWQuc2l6ZSk7Ci0gIEdTVF9NRU1EVU1QICgiYnVmZmVyIiwgaW5mb19idWYuZGF0YSwgaW5mb19idWYuc2l6ZSk7Ci0gIEdTVF9NRU1EVU1QICgiZXhwZWN0ZWQiLCBpbmZvX2V4cGVjdGVkLmRhdGEsIGluZm9fZXhwZWN0ZWQuc2l6ZSk7Ci0KLSAgZmFpbF91bmxlc3MgKGluZm9fYnVmLnNpemUgPT0gaW5mb19leHBlY3RlZC5zaXplLAotICAgICAgInNpemUgb2YgdGhlIGJ1ZmZlcnMgYXJlIG5vdCB0aGUgc2FtZSIpOwotICBmYWlsX3VubGVzcyAobWVtY21wIChpbmZvX2J1Zi5kYXRhLCBpbmZvX2V4cGVjdGVkLmRhdGEsIGluZm9fYnVmLnNpemUpID09IDAsCi0gICAgICAiZGF0YSBpcyBub3QgdGhlIHNhbWUiKTsKLQotICBnc3RfYnVmZmVyX3VubWFwIChidWYsICZpbmZvX2J1Zik7Ci0gIGdzdF9idWZmZXJfdW5tYXAgKGV4cGVjdGVkLCAmaW5mb19leHBlY3RlZCk7Ci19Ci0KLS8qIENyZWF0ZSBhIFJUUCBidWZmZXIgd2l0aG91dCB0aGUgZXh0ZW5zaW9uICovCi1zdGF0aWMgR3N0QnVmZmVyICoKLWNyZWF0ZV9ydHBfYnVmZmVyIChndWludDY0IHRpbWVzdGFtcCwgZ2Jvb2xlYW4gY2xlYW5fcG9pbnQsIGdib29sZWFuIGRpc2NvbnQpCi17Ci0gIEdzdEJ1ZmZlciAqYnVmZmVyX2luOwotICBHc3RSVFBCdWZmZXIgcnRwYnVmZmVyX2luID0gR1NUX1JUUF9CVUZGRVJfSU5JVDsKLQotICBidWZmZXJfaW4gPSBnc3RfcnRwX2J1ZmZlcl9uZXdfYWxsb2NhdGUgKDQsIDAsIDApOwotICBidWZmZXJfaW4tPnB0cyA9IHRpbWVzdGFtcDsKLQotICBpZiAoIWNsZWFuX3BvaW50KQotICAgIEdTVF9CVUZGRVJfRkxBR19TRVQgKGJ1ZmZlcl9pbiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpOwotICBpZiAoZGlzY29udCkKLSAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChidWZmZXJfaW4sIEdTVF9CVUZGRVJfRkxBR19ESVNDT05UKTsKLQotICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfbWFwIChidWZmZXJfaW4sIEdTVF9NQVBfUkVBRCwgJnJ0cGJ1ZmZlcl9pbikpOwotICBmYWlsX2lmIChnc3RfcnRwX2J1ZmZlcl9nZXRfZXh0ZW5zaW9uICgmcnRwYnVmZmVyX2luKSk7Ci0gIGdzdF9ydHBfYnVmZmVyX3VubWFwICgmcnRwYnVmZmVyX2luKTsKLQotICByZXR1cm4gYnVmZmVyX2luOwotfQotCi1zdGF0aWMgZ3VpbnQ2NAotY29udmVydF90b19udHAgKGd1aW50NjQgdCkKLXsKLSAgZ3VpbnQ2NCBudHB0aW1lOwotCi0gIC8qIGNvbnZlcnQgdG8gTlRQIHRpbWUuIHVwcGVyIDMyIGJpdHMgc2hvdWxkIGNvbnRhaW4gdGhlIHNlY29uZHMKLSAgICogYW5kIHRoZSBsb3dlciAzMiBiaXRzLCB0aGUgZnJhY3Rpb25zIG9mIGEgc2Vjb25kLiAqLwotICBudHB0aW1lID0gZ3N0X3V0aWxfdWludDY0X3NjYWxlICh0LCAoR19HSU5UNjRfQ09OU1RBTlQgKDEpIDw8IDMyKSwKLSAgICAgIEdTVF9TRUNPTkQpOwotCi0gIHJldHVybiBudHB0aW1lOwotfQotCi0vKiBDcmVhdGUgYSBjb3B5IG9mIEBidWZmZXJfaW4gaGF2aW5nIHRoZSBSVFAgZXh0ZW5zaW9uICovCi1zdGF0aWMgR3N0QnVmZmVyICoKLWNyZWF0ZV9leHRlbnNpb25fYnVmZmVyIChHc3RCdWZmZXIgKiBidWZmZXJfaW4sIGdib29sZWFuIGNsZWFuX3BvaW50LAotICAgIGdib29sZWFuIGVuZF9jb250aWd1b3VzLCBnYm9vbGVhbiBkaXNjb250KQotewotICBHc3RCdWZmZXIgKmJ1ZmZlcl9vdXQ7Ci0gIEdzdFJUUEJ1ZmZlciBydHBidWZmZXJfb3V0ID0gR1NUX1JUUF9CVUZGRVJfSU5JVDsKLSAgZ3VpbnQ4ICpkYXRhOwotICBndWludDggZmxhZ3MgPSAwOwotCi0gIGJ1ZmZlcl9vdXQgPSBnc3RfYnVmZmVyX2NvcHkgKGJ1ZmZlcl9pbik7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9ydHBfYnVmZmVyX21hcCAoYnVmZmVyX291dCwgR1NUX01BUF9SRUFEV1JJVEUsCi0gICAgICAgICAgJnJ0cGJ1ZmZlcl9vdXQpKTsKLQotICAvKiBleHRlbnNpb24gKi8KLSAgZ3N0X3J0cF9idWZmZXJfc2V0X2V4dGVuc2lvbl9kYXRhICgmcnRwYnVmZmVyX291dCwgMHhBQkFDLCAzKTsKLSAgZmFpbF91bmxlc3MgKGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb24gKCZydHBidWZmZXJfb3V0KSk7Ci0gIGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb25fZGF0YSAoJnJ0cGJ1ZmZlcl9vdXQsIE5VTEwsIChncG9pbnRlcikgJiBkYXRhLAotICAgICAgTlVMTCk7Ci0KLSAgLyogTlRQIHRpbWVzdGFtcCAqLwotICBHU1RfV1JJVEVfVUlOVDY0X0JFIChkYXRhLCBjb252ZXJ0X3RvX250cCAoYnVmZmVyX2luLT5wdHMgKyBOVFBfT0ZGU0VUKSk7Ci0KLSAgLyogQyBFIEQgbWJ6ICovCi0gIGlmIChjbGVhbl9wb2ludCkKLSAgICBmbGFncyB8PSAoMSA8PCA3KTsKLSAgaWYgKGVuZF9jb250aWd1b3VzKQotICAgIGZsYWdzIHw9ICgxIDw8IDYpOwotICBpZiAoZGlzY29udCkKLSAgICBmbGFncyB8PSAoMSA8PCA1KTsKLQotICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyA4LCBmbGFncyk7Ci0KLSAgLyogQ1NlcSAqLwotICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyA5LCAweDc4KTsKLQotICBtZW1zZXQgKGRhdGEgKyAxMCwgMCwgNCk7Ci0KLSAgZ3N0X3J0cF9idWZmZXJfdW5tYXAgKCZydHBidWZmZXJfb3V0KTsKLQotICByZXR1cm4gYnVmZmVyX291dDsKLX0KLQotc3RhdGljIHZvaWQKLWRvX29uZV9idWZmZXJfdGVzdF9hcHBseSAoZ2Jvb2xlYW4gY2xlYW5fcG9pbnQsIGdib29sZWFuIGRpc2NvbnQpCi17Ci0gIEdzdEVsZW1lbnQgKmFwcGx5OwotICBHc3RCdWZmZXIgKmJ1ZmZlcl9pbiwgKmJ1ZmZlcl9vdXQ7Ci0gIEdzdFNlZ21lbnQgc2VnbWVudDsKLQotICBhcHBseSA9IHNldHVwX3J0cG9udmlmdGltZXN0YW1wIChGQUxTRSk7Ci0KLSAgYnVmZmVyX2luID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCwgY2xlYW5fcG9pbnQsIGRpc2NvbnQpOwotICBidWZmZXJfb3V0ID0gY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKGJ1ZmZlcl9pbiwgY2xlYW5fcG9pbnQsIEZBTFNFLCBkaXNjb250KTsKLQotICAvKiBzdHJlYW0gc3RhcnQgKi8KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsCi0gICAgICAgICAgZ3N0X2V2ZW50X25ld19zdHJlYW1fc3RhcnQgKCJ0ZXN0IikpKTsKLQotICAvKiBQdXNoIGEgc2VnbWVudCAqLwotICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnNlZ21lbnQpKSk7Ci0KLSAgLyogUHVzaCBidWZmZXIgKi8KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlcl9pbikgPT0gR1NUX0ZMT1dfT0ssCi0gICAgICAiZmFpbGVkIHB1c2hpbmcgYnVmZmVyIik7Ci0KLSAgY2hlY2tfYnVmZmVyX2VxdWFsIChidWZmZXJzLT5kYXRhLCBidWZmZXJfb3V0KTsKLQotICBnX2xpc3RfZm9yZWFjaCAoYnVmZmVycywgKEdGdW5jKSBnc3RfbWluaV9vYmplY3RfdW5yZWYsIE5VTEwpOwotICBnX2xpc3RfZnJlZSAoYnVmZmVycyk7Ci0gIGJ1ZmZlcnMgPSBOVUxMOwotCi0gIEFTU0VSVF9PQkpFQ1RfUkVGQ09VTlQgKGFwcGx5LCAicnRwb252aWZ0aW1lc3RhbXAiLCAxKTsKLSAgY2xlYW51cF9ydHBvbnZpZnRpbWVzdGFtcCAoYXBwbHkpOwotfQotCi1zdGF0aWMgdm9pZAotZG9fdHdvX2J1ZmZlcnNfdGVzdF9hcHBseSAoZ2Jvb2xlYW4gZW5kX2NvbnRpZ3VvdXMpCi17Ci0gIEdzdEVsZW1lbnQgKmFwcGx5OwotICBHc3RCdWZmZXIgKmJ1ZmZlcl9pbiwgKmJ1ZmZlcl9vdXQ7Ci0gIEdzdFNlZ21lbnQgc2VnbWVudDsKLQotICBhcHBseSA9IHNldHVwX3J0cG9udmlmdGltZXN0YW1wIChUUlVFKTsKLQotICBidWZmZXJfaW4gPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBGQUxTRSwgRkFMU0UpOwotICBidWZmZXJfb3V0ID0gY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKGJ1ZmZlcl9pbiwgRkFMU0UsIGVuZF9jb250aWd1b3VzLAotICAgICAgRkFMU0UpOwotCi0gIC8qIHN0cmVhbSBzdGFydCAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwKLSAgICAgICAgICBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QiKSkpOwotCi0gIC8qIFB1c2ggYSBzZWdtZW50ICovCi0gIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpKTsKLQotICAvKiBQdXNoIGJ1ZmZlciAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyX2luKSA9PSBHU1RfRkxPV19PSywKLSAgICAgICJmYWlsZWQgcHVzaGluZyBidWZmZXIiKTsKLQotICAvKiBUaGUgYnVmZmVyIGhhc24ndCBiZWVuIHB1c2hlZCBpdCBhcyB0aGUgZWxlbWVudCBpcyB3YWl0aW5nIGZvciB0aGUgbmV4dAotICAgKiBidWZmZXIuICovCi0gIGdfYXNzZXJ0X2NtcHVpbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCA9PSwgMCk7Ci0KLSAgLyogQSBzZWNvbmQgYnVmZmVyIGlzIHB1c2hlZCwgaXQgaGFzIHRoZSBESVNDT05UIGZsYWcgaWYgd2Ugd2FudCB0aGF0IHRoZQotICAgKiBmaXJzdCBvbmUgaGFzIHRoZSAnRScgYml0IHNldC4gKi8KLSAgYnVmZmVyX2luID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDEsIEZBTFNFLCBlbmRfY29udGlndW91cyk7Ci0KLSAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlcl9pbikgPT0gR1NUX0ZMT1dfT0ssCi0gICAgICAiZmFpbGVkIHB1c2hpbmcgYnVmZmVyIik7Ci0KLSAgLyogVGhlIGZpcnN0IGJ1ZmZlciBoYXMgbm93IGJlZW4gcHVzaGVkIG91dCAqLwotICBnX2Fzc2VydF9jbXB1aW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgPT0sIDEpOwotCi0gIGNoZWNrX2J1ZmZlcl9lcXVhbCAoYnVmZmVycy0+ZGF0YSwgYnVmZmVyX291dCk7Ci0KLSAgZ19saXN0X2ZvcmVhY2ggKGJ1ZmZlcnMsIChHRnVuYykgZ3N0X21pbmlfb2JqZWN0X3VucmVmLCBOVUxMKTsKLSAgZ19saXN0X2ZyZWUgKGJ1ZmZlcnMpOwotICBidWZmZXJzID0gTlVMTDsKLQotICAvKiBQdXNoIEVPUyAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpKTsKLQotICAvKiBUaGUgc2Vjb25kIGJ1ZmZlciBoYXMgYmVlbiBwdXNoZWQgb3V0ICovCi0gIGdfYXNzZXJ0X2NtcHVpbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCA9PSwgMSk7Ci0KLSAgLyogTGF0ZXN0IGJ1ZmZlciBhbHdheXMgaGFzIHRoZSAnRScgZmxhZyAqLwotICBidWZmZXJfb3V0ID0gY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKGJ1ZmZlcl9pbiwgRkFMU0UsIFRSVUUsIGVuZF9jb250aWd1b3VzKTsKLSAgY2hlY2tfYnVmZmVyX2VxdWFsIChidWZmZXJzLT5kYXRhLCBidWZmZXJfb3V0KTsKLQotICBBU1NFUlRfT0JKRUNUX1JFRkNPVU5UIChhcHBseSwgInJ0cG9udmlmdGltZXN0YW1wIiwgMSk7Ci0gIGNsZWFudXBfcnRwb252aWZ0aW1lc3RhbXAgKGFwcGx5KTsKLX0KLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfYXBwbHlfZGlzY29udCkKLXsKLSAgZG9fb25lX2J1ZmZlcl90ZXN0X2FwcGx5IChGQUxTRSwgVFJVRSk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfYXBwbHlfbm90X2Rpc2NvbnQpCi17Ci0gIGRvX29uZV9idWZmZXJfdGVzdF9hcHBseSAoRkFMU0UsIEZBTFNFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9hcHBseV9jbGVhbl9wb2ludCkKLXsKLSAgZG9fb25lX2J1ZmZlcl90ZXN0X2FwcGx5IChUUlVFLCBGQUxTRSk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfYXBwbHlfbm9fZV9iaXQpCi17Ci0gIGRvX3R3b19idWZmZXJzX3Rlc3RfYXBwbHkgKEZBTFNFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9hcHBseV9lX2JpdCkKLXsKLSAgZG9fdHdvX2J1ZmZlcnNfdGVzdF9hcHBseSAoVFJVRSk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotc3RhdGljIEdzdEVsZW1lbnQgKgotc2V0dXBfcnRwb252aWZwYXJzZSAoZ2Jvb2xlYW4gc2V0X2VfYml0KQotewotICBHc3RFbGVtZW50ICpwYXJzZTsKLQotICBHU1RfREVCVUcgKCJzZXR1cF9ydHBvbnZpZnBhcnNlIik7Ci0gIHBhcnNlID0gZ3N0X2NoZWNrX3NldHVwX2VsZW1lbnQgKCJydHBvbnZpZnBhcnNlIik7Ci0KLSAgc2V0dXBfZWxlbWVudCAocGFyc2UpOwotCi0gIHJldHVybiBwYXJzZTsKLX0KLQotc3RhdGljIHZvaWQKLWNsZWFudXBfcnRwb252aWZwYXJzZSAoR3N0RWxlbWVudCAqIHBhcnNlKQotewotICBHU1RfREVCVUcgKCJjbGVhbnVwX3J0cG9udmlmcGFyc2UiKTsKLQotICBjbGVhbnVwX2VsZW1lbnQgKHBhcnNlKTsKLX0KLQotc3RhdGljIHZvaWQKLXRlc3RfcGFyc2UgKGdib29sZWFuIGNsZWFuX3BvaW50LCBnYm9vbGVhbiBkaXNjb250KQotewotICBHc3RFbGVtZW50ICpwYXJzZTsKLSAgR3N0QnVmZmVyICpydHAsICpidWY7Ci0gIEdzdFNlZ21lbnQgc2VnbWVudDsKLQotICBwYXJzZSA9IHNldHVwX3J0cG9udmlmcGFyc2UgKEZBTFNFKTsKLQotICBydHAgPSBnc3RfcnRwX2J1ZmZlcl9uZXdfYWxsb2NhdGUgKDQsIDAsIDApOwotICBidWYgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAocnRwLCBjbGVhbl9wb2ludCwgRkFMU0UsIGRpc2NvbnQpOwotICBnc3RfYnVmZmVyX3VucmVmIChydHApOwotCi0gIC8qIHN0cmVhbSBzdGFydCAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwKLSAgICAgICAgICBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QiKSkpOwotCi0gIC8qIFB1c2ggYSBzZWdtZW50ICovCi0gIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoX2V2ZW50IChteXNyY3BhZCwgZ3N0X2V2ZW50X25ld19zZWdtZW50ICgmc2VnbWVudCkpKTsKLQotICAvKiBQdXNoIGJ1ZmZlciAqLwotICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmKSA9PSBHU1RfRkxPV19PSywKLSAgICAgICJmYWlsZWQgcHVzaGluZyBidWZmZXIiKTsKLQotICBnX2Fzc2VydF9jbXB1aW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgPT0sIDEpOwotICBidWYgPSBidWZmZXJzLT5kYXRhOwotCi0gIGlmIChjbGVhbl9wb2ludCkKLSAgICBnX2Fzc2VydCAoIUdTVF9CVUZGRVJfRkxBR19JU19TRVQgKGJ1ZiwgR1NUX0JVRkZFUl9GTEFHX0RFTFRBX1VOSVQpKTsKLSAgZWxzZQotICAgIGdfYXNzZXJ0IChHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKSk7Ci0KLSAgaWYgKGRpc2NvbnQpCi0gICAgZ19hc3NlcnQgKEdTVF9CVUZGRVJfSVNfRElTQ09OVCAoYnVmKSk7Ci0gIGVsc2UKLSAgICBnX2Fzc2VydCAoIUdTVF9CVUZGRVJfSVNfRElTQ09OVCAoYnVmKSk7Ci0KLSAgZ19saXN0X2ZvcmVhY2ggKGJ1ZmZlcnMsIChHRnVuYykgZ3N0X21pbmlfb2JqZWN0X3VucmVmLCBOVUxMKTsKLSAgZ19saXN0X2ZyZWUgKGJ1ZmZlcnMpOwotICBidWZmZXJzID0gTlVMTDsKLQotICBBU1NFUlRfT0JKRUNUX1JFRkNPVU5UIChwYXJzZSwgInJ0cG9udmlmcGFyc2UiLCAxKTsKLSAgY2xlYW51cF9ydHBvbnZpZnBhcnNlIChwYXJzZSk7Ci19Ci0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X3BhcnNlX25vX2ZsYWcpCi17Ci0gIHRlc3RfcGFyc2UgKEZBTFNFLCBGQUxTRSk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotR1NUX1NUQVJUX1RFU1QgKHRlc3RfcGFyc2VfY2xlYW5fcG9pbnQpCi17Ci0gIHRlc3RfcGFyc2UgKFRSVUUsIEZBTFNFKTsKLX0KLQotR1NUX0VORF9URVNUOwotCi1HU1RfU1RBUlRfVEVTVCAodGVzdF9wYXJzZV9kaXNjb250KQotewotICB0ZXN0X3BhcnNlIChGQUxTRSwgVFJVRSk7Ci19Ci0KLUdTVF9FTkRfVEVTVDsKLQotc3RhdGljIFN1aXRlICoKLW9udmlmdGltZXN0YW1wX3N1aXRlICh2b2lkKQotewotICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIm9udmlmdGltZXN0YW1wIik7Ci0gIFRDYXNlICp0Y19jaGFpbjsKLQotICB0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoImFwcGx5Iik7Ci0gIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOwotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfYXBwbHlfZGlzY29udCk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9hcHBseV9ub3RfZGlzY29udCk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9hcHBseV9jbGVhbl9wb2ludCk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9hcHBseV9ub19lX2JpdCk7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9hcHBseV9lX2JpdCk7Ci0KLSAgdGNfY2hhaW4gPSB0Y2FzZV9jcmVhdGUgKCJwYXJzZSIpOwotICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKLSAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3BhcnNlX25vX2ZsYWcpOwotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2VfY2xlYW5fcG9pbnQpOwotICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2VfZGlzY29udCk7Ci0KLSAgcmV0dXJuIHM7Ci19Ci0KLUdTVF9DSEVDS19NQUlOIChvbnZpZnRpbWVzdGFtcCk7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnBhcnNlLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY1MWFjOAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmcGFyc2UuYwpAQCAtMCwwICsxLDI0NiBAQAorLyoKKyAqIG9udmlmdGltZXN0YW1wLmMKKyAqCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXhpcyBDb21tdW5pY2F0aW9ucyBBQgorICogIEF1dGhvcjogR3VpbGxhdW1lIERlc21vdHRlcyA8Z3VpbGxhdW1lLmRlc21vdHRlc0Bjb2xsYWJvcmEuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorICovCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKyNpbmNsdWRlIDxnc3QvcnRwL2dzdHJ0cGJ1ZmZlci5oPgorCisvKiBGb3IgZWFzZSBvZiBwcm9ncmFtbWluZyB3ZSB1c2UgZ2xvYmFscyB0byBrZWVwIHJlZnMgZm9yIG91ciBmbG9hdGluZworICogc3JjIGFuZCBzaW5rIHBhZHMgd2UgY3JlYXRlOyBvdGhlcndpc2Ugd2UgYWx3YXlzIGhhdmUgdG8gZG8gZ2V0X3BhZCwKKyAqIGdldF9wZWVyLCBhbmQgdGhlbiByZW1vdmUgcmVmZXJlbmNlcyBpbiBldmVyeSB0ZXN0IGZ1bmN0aW9uICovCitzdGF0aWMgR3N0UGFkICpteXNyY3BhZCwgKm15c2lua3BhZDsKKworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNpbmt0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic2luayIsCisgICAgR1NUX1BBRF9TSU5LLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwIikKKyAgICApOworc3RhdGljIEdzdFN0YXRpY1BhZFRlbXBsYXRlIHNyY3RlbXBsYXRlID0gR1NUX1NUQVRJQ19QQURfVEVNUExBVEUgKCJzcmMiLAorICAgIEdTVF9QQURfU1JDLAorICAgIEdTVF9QQURfQUxXQVlTLAorICAgIEdTVF9TVEFUSUNfQ0FQUyAoImFwcGxpY2F0aW9uL3gtcnRwIikKKyAgICApOworCisjZGVmaW5lIE5UUF9PRkZTRVQgKGd1aW50NjQpIDEyNDUKKyNkZWZpbmUgVElNRVNUQU1QIDQyCisKK3N0YXRpYyB2b2lkCitzZXR1cF9lbGVtZW50IChHc3RFbGVtZW50ICogZWxlbWVudCkKK3sKKyAgbXlzcmNwYWQgPSBnc3RfY2hlY2tfc2V0dXBfc3JjX3BhZCAoZWxlbWVudCwgJnNyY3RlbXBsYXRlKTsKKyAgbXlzaW5rcGFkID0gZ3N0X2NoZWNrX3NldHVwX3NpbmtfcGFkIChlbGVtZW50LCAmc2lua3RlbXBsYXRlKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNyY3BhZCwgVFJVRSk7CisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzaW5rcGFkLCBUUlVFKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChlbGVtZW50LAorICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsCisgICAgICAiY291bGQgbm90IHNldCB0byBwbGF5aW5nIik7Cit9CisKK3N0YXRpYyB2b2lkCitjbGVhbnVwX2VsZW1lbnQgKEdzdEVsZW1lbnQgKiBlbGVtZW50KQoreworICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChlbGVtZW50LAorICAgICAgICAgIEdTVF9TVEFURV9OVUxMKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MsICJjb3VsZCBub3Qgc2V0IHRvIG51bGwiKTsKKworICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c3JjcGFkLCBGQUxTRSk7CisgIGlmIChteXNpbmtwYWQpCisgICAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNpbmtwYWQsIEZBTFNFKTsKKyAgZ3N0X2NoZWNrX3RlYXJkb3duX3NyY19wYWQgKGVsZW1lbnQpOworICBnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQgKGVsZW1lbnQpOworICBnc3RfY2hlY2tfdGVhcmRvd25fZWxlbWVudCAoZWxlbWVudCk7CisgIG15c3JjcGFkID0gTlVMTDsKKyAgbXlzaW5rcGFkID0gTlVMTDsKK30KKworc3RhdGljIGd1aW50NjQKK2NvbnZlcnRfdG9fbnRwIChndWludDY0IHQpCit7CisgIGd1aW50NjQgbnRwdGltZTsKKworICAvKiBjb252ZXJ0IHRvIE5UUCB0aW1lLiB1cHBlciAzMiBiaXRzIHNob3VsZCBjb250YWluIHRoZSBzZWNvbmRzCisgICAqIGFuZCB0aGUgbG93ZXIgMzIgYml0cywgdGhlIGZyYWN0aW9ucyBvZiBhIHNlY29uZC4gKi8KKyAgbnRwdGltZSA9IGdzdF91dGlsX3VpbnQ2NF9zY2FsZSAodCwgKEdfR0lOVDY0X0NPTlNUQU5UICgxKSA8PCAzMiksCisgICAgICBHU1RfU0VDT05EKTsKKworICByZXR1cm4gbnRwdGltZTsKK30KKworLyogQ3JlYXRlIGEgY29weSBvZiBAYnVmZmVyX2luIGhhdmluZyB0aGUgUlRQIGV4dGVuc2lvbiAqLworc3RhdGljIEdzdEJ1ZmZlciAqCitjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoR3N0QnVmZmVyICogYnVmZmVyX2luLCBnYm9vbGVhbiBjbGVhbl9wb2ludCwKKyAgICBnYm9vbGVhbiBlbmRfY29udGlndW91cywgZ2Jvb2xlYW4gZGlzY29udCkKK3sKKyAgR3N0QnVmZmVyICpidWZmZXJfb3V0OworICBHc3RSVFBCdWZmZXIgcnRwYnVmZmVyX291dCA9IEdTVF9SVFBfQlVGRkVSX0lOSVQ7CisgIGd1aW50OCAqZGF0YTsKKyAgZ3VpbnQ4IGZsYWdzID0gMDsKKworICBidWZmZXJfb3V0ID0gZ3N0X2J1ZmZlcl9jb3B5IChidWZmZXJfaW4pOworCisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9tYXAgKGJ1ZmZlcl9vdXQsIEdTVF9NQVBfUkVBRFdSSVRFLAorICAgICAgICAgICZydHBidWZmZXJfb3V0KSk7CisKKyAgLyogZXh0ZW5zaW9uICovCisgIGdzdF9ydHBfYnVmZmVyX3NldF9leHRlbnNpb25fZGF0YSAoJnJ0cGJ1ZmZlcl9vdXQsIDB4QUJBQywgMyk7CisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9nZXRfZXh0ZW5zaW9uICgmcnRwYnVmZmVyX291dCkpOworICBnc3RfcnRwX2J1ZmZlcl9nZXRfZXh0ZW5zaW9uX2RhdGEgKCZydHBidWZmZXJfb3V0LCBOVUxMLCAoZ3BvaW50ZXIpICYgZGF0YSwKKyAgICAgIE5VTEwpOworCisgIC8qIE5UUCB0aW1lc3RhbXAgKi8KKyAgR1NUX1dSSVRFX1VJTlQ2NF9CRSAoZGF0YSwgY29udmVydF90b19udHAgKGJ1ZmZlcl9pbi0+cHRzICsgTlRQX09GRlNFVCkpOworCisgIC8qIEMgRSBEIG1ieiAqLworICBpZiAoY2xlYW5fcG9pbnQpCisgICAgZmxhZ3MgfD0gKDEgPDwgNyk7CisgIGlmIChlbmRfY29udGlndW91cykKKyAgICBmbGFncyB8PSAoMSA8PCA2KTsKKyAgaWYgKGRpc2NvbnQpCisgICAgZmxhZ3MgfD0gKDEgPDwgNSk7CisKKyAgR1NUX1dSSVRFX1VJTlQ4IChkYXRhICsgOCwgZmxhZ3MpOworCisgIC8qIENTZXEgKi8KKyAgR1NUX1dSSVRFX1VJTlQ4IChkYXRhICsgOSwgMHg3OCk7CisKKyAgbWVtc2V0IChkYXRhICsgMTAsIDAsIDQpOworCisgIGdzdF9ydHBfYnVmZmVyX3VubWFwICgmcnRwYnVmZmVyX291dCk7CisKKyAgcmV0dXJuIGJ1ZmZlcl9vdXQ7Cit9CisKK3N0YXRpYyBHc3RFbGVtZW50ICoKK3NldHVwX3J0cG9udmlmcGFyc2UgKGdib29sZWFuIHNldF9lX2JpdCkKK3sKKyAgR3N0RWxlbWVudCAqcGFyc2U7CisKKyAgR1NUX0RFQlVHICgic2V0dXBfcnRwb252aWZwYXJzZSIpOworICBwYXJzZSA9IGdzdF9jaGVja19zZXR1cF9lbGVtZW50ICgicnRwb252aWZwYXJzZSIpOworCisgIHNldHVwX2VsZW1lbnQgKHBhcnNlKTsKKworICByZXR1cm4gcGFyc2U7Cit9CisKK3N0YXRpYyB2b2lkCitjbGVhbnVwX3J0cG9udmlmcGFyc2UgKEdzdEVsZW1lbnQgKiBwYXJzZSkKK3sKKyAgR1NUX0RFQlVHICgiY2xlYW51cF9ydHBvbnZpZnBhcnNlIik7CisKKyAgY2xlYW51cF9lbGVtZW50IChwYXJzZSk7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BhcnNlIChnYm9vbGVhbiBjbGVhbl9wb2ludCwgZ2Jvb2xlYW4gZGlzY29udCkKK3sKKyAgR3N0RWxlbWVudCAqcGFyc2U7CisgIEdzdEJ1ZmZlciAqcnRwLCAqYnVmOworICBHc3RTZWdtZW50IHNlZ21lbnQ7CisKKyAgcGFyc2UgPSBzZXR1cF9ydHBvbnZpZnBhcnNlIChGQUxTRSk7CisKKyAgcnRwID0gZ3N0X3J0cF9idWZmZXJfbmV3X2FsbG9jYXRlICg0LCAwLCAwKTsKKyAgYnVmID0gY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKHJ0cCwgY2xlYW5fcG9pbnQsIEZBTFNFLCBkaXNjb250KTsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAocnRwKTsKKworICAvKiBzdHJlYW0gc3RhcnQgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsCisgICAgICAgICAgZ3N0X2V2ZW50X25ld19zdHJlYW1fc3RhcnQgKCJ0ZXN0IikpKTsKKworICAvKiBQdXNoIGEgc2VnbWVudCAqLworICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnNlZ21lbnQpKSk7CisKKyAgLyogUHVzaCBidWZmZXIgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZikgPT0gR1NUX0ZMT1dfT0ssCisgICAgICAiZmFpbGVkIHB1c2hpbmcgYnVmZmVyIik7CisKKyAgZ19hc3NlcnRfY21wdWludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksID09LCAxKTsKKyAgYnVmID0gYnVmZmVycy0+ZGF0YTsKKworICBpZiAoY2xlYW5fcG9pbnQpCisgICAgZ19hc3NlcnQgKCFHU1RfQlVGRkVSX0ZMQUdfSVNfU0VUIChidWYsIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKSk7CisgIGVsc2UKKyAgICBnX2Fzc2VydCAoR1NUX0JVRkZFUl9GTEFHX0lTX1NFVCAoYnVmLCBHU1RfQlVGRkVSX0ZMQUdfREVMVEFfVU5JVCkpOworCisgIGlmIChkaXNjb250KQorICAgIGdfYXNzZXJ0IChHU1RfQlVGRkVSX0lTX0RJU0NPTlQgKGJ1ZikpOworICBlbHNlCisgICAgZ19hc3NlcnQgKCFHU1RfQlVGRkVSX0lTX0RJU0NPTlQgKGJ1ZikpOworCisgIGdfbGlzdF9mb3JlYWNoIChidWZmZXJzLCAoR0Z1bmMpIGdzdF9taW5pX29iamVjdF91bnJlZiwgTlVMTCk7CisgIGdfbGlzdF9mcmVlIChidWZmZXJzKTsKKyAgYnVmZmVycyA9IE5VTEw7CisKKyAgQVNTRVJUX09CSkVDVF9SRUZDT1VOVCAocGFyc2UsICJydHBvbnZpZnBhcnNlIiwgMSk7CisgIGNsZWFudXBfcnRwb252aWZwYXJzZSAocGFyc2UpOworfQorCitHU1RfU1RBUlRfVEVTVCAodGVzdF9wYXJzZV9ub19mbGFnKQoreworICB0ZXN0X3BhcnNlIChGQUxTRSwgRkFMU0UpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3BhcnNlX2NsZWFuX3BvaW50KQoreworICB0ZXN0X3BhcnNlIChUUlVFLCBGQUxTRSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfcGFyc2VfZGlzY29udCkKK3sKKyAgdGVzdF9wYXJzZSAoRkFMU0UsIFRSVUUpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyBTdWl0ZSAqCitvbnZpZnRpbWVzdGFtcF9zdWl0ZSAodm9pZCkKK3sKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJvbnZpZnRpbWVzdGFtcCIpOworICBUQ2FzZSAqdGNfY2hhaW47CisKKyAgdGNfY2hhaW4gPSB0Y2FzZV9jcmVhdGUgKCJwYXJzZSIpOworICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3BhcnNlX25vX2ZsYWcpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2VfY2xlYW5fcG9pbnQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcGFyc2VfZGlzY29udCk7CisKKyAgcmV0dXJuIHM7Cit9CisKK2ludAorbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQoreworICBpbnQgbmY7CisgIFN1aXRlICpzID0gb252aWZ0aW1lc3RhbXBfc3VpdGUgKCk7CisgIFNSdW5uZXIgKnNyID0gc3J1bm5lcl9jcmVhdGUgKHMpOworCisgIGdzdF9jaGVja19pbml0ICgmYXJnYywgJmFyZ3YpOworCisgIHNydW5uZXJfcnVuX2FsbCAoc3IsIENLX05PUk1BTCk7CisgIG5mID0gc3J1bm5lcl9udGVzdHNfZmFpbGVkIChzcik7CisgIHNydW5uZXJfZnJlZSAoc3IpOworCisgIHJldHVybiBuZjsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3J0cG9udmlmdGltZXN0YW1wLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5NDEzYTgKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9lbGVtZW50cy9ydHBvbnZpZnRpbWVzdGFtcC5jCkBAIC0wLDAgKzEsNzg2IEBACisvKgorICogb252aWZ0aW1lc3RhbXAuYworICoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBeGlzIENvbW11bmljYXRpb25zIEFCCisgKiAgQXV0aG9yOiBHdWlsbGF1bWUgRGVzbW90dGVzIDxndWlsbGF1bWUuZGVzbW90dGVzQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgKi8KKworI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorI2luY2x1ZGUgPGdzdC9ydHAvZ3N0cnRwYnVmZmVyLmg+CisKKy8qIEZvciBlYXNlIG9mIHByb2dyYW1taW5nIHdlIHVzZSBnbG9iYWxzIHRvIGtlZXAgcmVmcyBmb3Igb3VyIGZsb2F0aW5nCisgKiBzcmMgYW5kIHNpbmsgcGFkcyB3ZSBjcmVhdGU7IG90aGVyd2lzZSB3ZSBhbHdheXMgaGF2ZSB0byBkbyBnZXRfcGFkLAorICogZ2V0X3BlZXIsIGFuZCB0aGVuIHJlbW92ZSByZWZlcmVuY2VzIGluIGV2ZXJ5IHRlc3QgZnVuY3Rpb24gKi8KK3N0YXRpYyBHc3RFbGVtZW50ICplbGVtZW50Oworc3RhdGljIEdzdFBhZCAqbXlzcmNwYWQ7CitzdGF0aWMgR3N0UGFkICpteXNpbmtwYWQ7CisvKiBUaGVzZSBhcmUgZ2xvYmFsIG1haW5seSBiZWNhdXNlIHRoZXkgYXJlIHVzZWQgZnJvbSB0aGUgc2V0dXAvY2xlYW51cAorICogZml4dHVyZSBmdW5jdGlvbnMgKi8KK3N0YXRpYyBndWxvbmcgbXlwcm9iZTsKK3N0YXRpYyBHTGlzdCAqbXlwdXNoZWRldmVudHM7CitzdGF0aWMgR0xpc3QgKm15cmVjZWl2ZWRldmVudHM7CisKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzaW5rdGVtcGxhdGUgPSBHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNpbmsiLAorICAgIEdTVF9QQURfU0lOSywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJhcHBsaWNhdGlvbi94LXJ0cCIpCisgICAgKTsKK3N0YXRpYyBHc3RTdGF0aWNQYWRUZW1wbGF0ZSBzcmN0ZW1wbGF0ZSA9IEdTVF9TVEFUSUNfUEFEX1RFTVBMQVRFICgic3JjIiwKKyAgICBHU1RfUEFEX1NSQywKKyAgICBHU1RfUEFEX0FMV0FZUywKKyAgICBHU1RfU1RBVElDX0NBUFMgKCJhcHBsaWNhdGlvbi94LXJ0cCIpCisgICAgKTsKKworI2RlZmluZSBOVFBfT0ZGU0VUICAoKGd1aW50NjQpIDEyNDUpCisjZGVmaW5lIFRJTUVTVEFNUCAgICgoR3N0Q2xvY2tUaW1lKTQyKQorI2RlZmluZSBDU0VRICAgICAgICAweDc4CisjZGVmaW5lIENPTVBBUkUgICAgIFRSVUUKKyNkZWZpbmUgTk9fQ09NUEFSRSAgRkFMU0UKKworc3RhdGljIEdzdFBhZFByb2JlUmV0dXJuCitldmVudF9wcm9iZSAoR3N0UGFkICogcGFkLCBHc3RQYWRQcm9iZUluZm8gKiBpbmZvLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIEdzdEV2ZW50ICpldmVudCA9IEdTVF9QQURfUFJPQkVfSU5GT19FVkVOVCAoaW5mbyk7CisKKyAgR1NUX0lORk8gKCJnb3QgJSIgR1NUX1BUUl9GT1JNQVQsIGV2ZW50KTsKKyAgbXlyZWNlaXZlZGV2ZW50cyA9IGdfbGlzdF9hcHBlbmQgKG15cmVjZWl2ZWRldmVudHMsIGdzdF9ldmVudF9yZWYgKGV2ZW50KSk7CisKKyAgcmV0dXJuIEdTVF9QQURfUFJPQkVfT0s7Cit9CisKK3N0YXRpYyBHc3RFdmVudCAqCitjcmVhdGVfbnRwX29mZnNldF9ldmVudCAoR3N0Q2xvY2tUaW1lIG50cF9vZmZzZXQsIGdib29sZWFuIGRpc2NvbnQpCit7CisgIEdzdFN0cnVjdHVyZSAqc3RydWN0dXJlOworCisgIHN0cnVjdHVyZSA9IGdzdF9zdHJ1Y3R1cmVfbmV3ICgiR3N0TnRwT2Zmc2V0IiwgIm50cC1vZmZzZXQiLCBHX1RZUEVfVUlOVDY0LAorICAgICAgbnRwX29mZnNldCwgImRpc2NvbnQiLCBHX1RZUEVfQk9PTEVBTiwgZGlzY29udCwgTlVMTCk7CisKKyAgcmV0dXJuIGdzdF9ldmVudF9uZXdfY3VzdG9tIChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU0sIHN0cnVjdHVyZSk7Cit9CisKK3N0YXRpYyBHc3RFdmVudCAqCitjcmVhdGVfZXZlbnQgKEdzdEV2ZW50VHlwZSB0eXBlKQoreworICBHc3RFdmVudCAqZXZlbnQgPSBOVUxMOworCisgIHN3aXRjaCAodHlwZSkgeworICAgIGNhc2UgR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNOgorICAgICAgZXZlbnQgPSBnc3RfZXZlbnRfbmV3X2N1c3RvbSAoR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNLAorICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfbmV3ICgieC1hcHAvdGVzdCIsICJ0ZXN0LWZpZWxkIiwgR19UWVBFX1NUUklORywKKyAgICAgICAgICAgICAgInRlc3QtdmFsdWUiLCBOVUxMKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0I6CisgICAgICBldmVudCA9IGdzdF9ldmVudF9uZXdfY3VzdG9tIChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CLAorICAgICAgICAgIGdzdF9zdHJ1Y3R1cmVfbmV3ICgieC1hcHAvdGVzdCIsICJ0ZXN0LWZpZWxkIiwgR19UWVBFX1NUUklORywKKyAgICAgICAgICAgICAgInRlc3QtdmFsdWUiLCBOVUxMKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9FT1M6CisgICAgICBldmVudCA9IGdzdF9ldmVudF9uZXdfZW9zICgpOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgYnJlYWs7CisgIH0KKworICByZXR1cm4gZXZlbnQ7Cit9CisKK3N0YXRpYyB2b2lkCitjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdzdEV2ZW50VHlwZSB0eXBlKQoreworICBHc3RFdmVudCAqZXZlbnQgPSBjcmVhdGVfZXZlbnQgKHR5cGUpOworCisgIG15cHVzaGVkZXZlbnRzID0gZ19saXN0X2FwcGVuZCAobXlwdXNoZWRldmVudHMsIGV2ZW50KTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGV2ZW50KSk7Cit9CisKK3N0YXRpYyB2b2lkCitjaGVja19hbmRfY2xlYXJfZXZlbnRzIChnaW50IGV4cGVjdGVkLCBnYm9vbGVhbiBjb21wYXJlKQoreworICBHTGlzdCAqcDsKKyAgR0xpc3QgKnI7CisKKyAgLyogdmVyaWZ5IHRoYXQgdGhlcmUncyBhcyBtYW55IHF1ZXVlZCBldmVudHMgYXMgZXhwZWN0ZWQgKi8KKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAobXlyZWNlaXZlZGV2ZW50cyksIGV4cGVjdGVkKTsKKworICBpZiAoY29tcGFyZSkgeworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGV4cGVjdGVkLCBnX2xpc3RfbGVuZ3RoIChteXB1c2hlZGV2ZW50cykpOworCisgICAgLyogdmVyaWZ5IHRoYXQgdGhlIGV2ZW50cyBhcmUgcXVldWVkIGluIHRoZSBleHBlY3RlZCBvcmRlciAqLworICAgIHIgPSBteXJlY2VpdmVkZXZlbnRzOworICAgIHAgPSBteXB1c2hlZGV2ZW50czsKKworICAgIHdoaWxlIChwICE9IE5VTEwpIHsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19wb2ludGVyIChwLT5kYXRhLCByLT5kYXRhKTsKKyAgICAgIHAgPSBnX2xpc3RfbmV4dCAocCk7CisgICAgICByID0gZ19saXN0X25leHQgKHIpOworICAgIH0KKyAgfQorCisgIGdfbGlzdF9mcmVlX2Z1bGwgKG15cmVjZWl2ZWRldmVudHMsIChHRGVzdHJveU5vdGlmeSkgZ3N0X2V2ZW50X3VucmVmKTsKKyAgbXlyZWNlaXZlZGV2ZW50cyA9IE5VTEw7CisgIGdfbGlzdF9mcmVlIChteXB1c2hlZGV2ZW50cyk7CisgIG15cHVzaGVkZXZlbnRzID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK3NldHVwICh2b2lkKQoreworICBlbGVtZW50ID0gZ3N0X2NoZWNrX3NldHVwX2VsZW1lbnQgKCJydHBvbnZpZnRpbWVzdGFtcCIpOworCisgIG15c2lua3BhZCA9IGdzdF9jaGVja19zZXR1cF9zaW5rX3BhZCAoZWxlbWVudCwgJnNpbmt0ZW1wbGF0ZSk7CisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAobXlzaW5rcGFkLCBUUlVFKTsKKworICBteXNyY3BhZCA9IGdzdF9jaGVja19zZXR1cF9zcmNfcGFkIChlbGVtZW50LCAmc3JjdGVtcGxhdGUpOworICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c3JjcGFkLCBUUlVFKTsKK30KKworc3RhdGljIHZvaWQKK2NsZWFudXAgKHZvaWQpCit7CisgIGdzdF9jaGVja19kcm9wX2J1ZmZlcnMgKCk7CisKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlIChteXNyY3BhZCwgRkFMU0UpOworICBnc3RfY2hlY2tfdGVhcmRvd25fc3JjX3BhZCAoZWxlbWVudCk7CisgIG15c3JjcGFkID0gTlVMTDsKKworICBnc3RfcGFkX3NldF9hY3RpdmUgKG15c2lua3BhZCwgRkFMU0UpOworICBnc3RfY2hlY2tfdGVhcmRvd25fc2lua19wYWQgKGVsZW1lbnQpOworICBteXNpbmtwYWQgPSBOVUxMOworCisgIGdzdF9jaGVja190ZWFyZG93bl9lbGVtZW50IChlbGVtZW50KTsKKyAgZWxlbWVudCA9IE5VTEw7CisKKyAgZ3N0X2NoZWNrX2Ryb3BfYnVmZmVycyAoKTsKK30KKworc3RhdGljIHZvaWQKK3NldHVwX3dpdGhfZXZlbnQgKHZvaWQpCit7CisgIHNldHVwICgpOworCisgIG15cHJvYmUgPSBnc3RfcGFkX2FkZF9wcm9iZSAobXlzaW5rcGFkLAorICAgICAgR1NUX1BBRF9QUk9CRV9UWVBFX0VWRU5UX0RPV05TVFJFQU0sIGV2ZW50X3Byb2JlLCBOVUxMLCBOVUxMKTsKKyAgbXlyZWNlaXZlZGV2ZW50cyA9IE5VTEw7CisgIG15cHVzaGVkZXZlbnRzID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK2NsZWFudXBfd2l0aF9ldmVudCAodm9pZCkKK3sKKyAgZ3N0X3BhZF9yZW1vdmVfcHJvYmUgKG15c2lua3BhZCwgbXlwcm9iZSk7CisgIG15cHJvYmUgPSAwOworICBteXJlY2VpdmVkZXZlbnRzID0gTlVMTDsKKyAgbXlwdXNoZWRldmVudHMgPSBOVUxMOworCisgIGNsZWFudXAgKCk7Cit9CisKK3N0YXRpYyB2b2lkCitjaGVja19idWZmZXJfZXF1YWwgKEdzdEJ1ZmZlciAqIGJ1ZiwgR3N0QnVmZmVyICogZXhwZWN0ZWQpCit7CisgIEdzdE1hcEluZm8gaW5mb19idWYsIGluZm9fZXhwZWN0ZWQ7CisKKyAgZmFpbF9pZiAoYnVmID09IE5VTEwpOworICBmYWlsX2lmIChleHBlY3RlZCA9PSBOVUxMKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJmluZm9fYnVmLCBHU1RfTUFQX1JFQUQpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9idWZmZXJfbWFwIChleHBlY3RlZCwgJmluZm9fZXhwZWN0ZWQsIEdTVF9NQVBfUkVBRCkpOworCisgIEdTVF9MT0cgKCJidWZmZXI6IHNpemUgJSIgR19HU0laRV9GT1JNQVQsIGluZm9fYnVmLnNpemUpOworICBHU1RfTE9HICgiZXhwZWN0ZWQ6IHNpemUgJSIgR19HU0laRV9GT1JNQVQsIGluZm9fZXhwZWN0ZWQuc2l6ZSk7CisgIEdTVF9NRU1EVU1QICgiYnVmZmVyIiwgaW5mb19idWYuZGF0YSwgaW5mb19idWYuc2l6ZSk7CisgIEdTVF9NRU1EVU1QICgiZXhwZWN0ZWQiLCBpbmZvX2V4cGVjdGVkLmRhdGEsIGluZm9fZXhwZWN0ZWQuc2l6ZSk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAoaW5mb19idWYuc2l6ZSwgaW5mb19leHBlY3RlZC5zaXplKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobWVtY21wIChpbmZvX2J1Zi5kYXRhLCBpbmZvX2V4cGVjdGVkLmRhdGEsCisgICAgICAgICAgaW5mb19idWYuc2l6ZSksIDApOworCisgIGdzdF9idWZmZXJfdW5tYXAgKGJ1ZiwgJmluZm9fYnVmKTsKKyAgZ3N0X2J1ZmZlcl91bm1hcCAoZXhwZWN0ZWQsICZpbmZvX2V4cGVjdGVkKTsKK30KKworLyogQ3JlYXRlIGEgUlRQIGJ1ZmZlciB3aXRob3V0IHRoZSBleHRlbnNpb24gKi8KK3N0YXRpYyBHc3RCdWZmZXIgKgorY3JlYXRlX3J0cF9idWZmZXIgKEdzdENsb2NrVGltZSB0aW1lc3RhbXAsIGdib29sZWFuIGNsZWFuX3BvaW50KQoreworICBHc3RCdWZmZXIgKmJ1ZmZlcl9pbjsKKyAgR3N0UlRQQnVmZmVyIHJ0cGJ1ZmZlcl9pbiA9IEdTVF9SVFBfQlVGRkVSX0lOSVQ7CisKKyAgYnVmZmVyX2luID0gZ3N0X3J0cF9idWZmZXJfbmV3X2FsbG9jYXRlICgwLCAwLCAwKTsKKyAgR1NUX0JVRkZFUl9QVFMgKGJ1ZmZlcl9pbikgPSB0aW1lc3RhbXA7CisKKyAgaWYgKCFjbGVhbl9wb2ludCkKKyAgICBHU1RfQlVGRkVSX0ZMQUdfU0VUIChidWZmZXJfaW4sIEdTVF9CVUZGRVJfRkxBR19ERUxUQV9VTklUKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfbWFwIChidWZmZXJfaW4sIEdTVF9NQVBfUkVBRCwgJnJ0cGJ1ZmZlcl9pbikpOworICBmYWlsX2lmIChnc3RfcnRwX2J1ZmZlcl9nZXRfZXh0ZW5zaW9uICgmcnRwYnVmZmVyX2luKSk7CisgIGdzdF9ydHBfYnVmZmVyX3VubWFwICgmcnRwYnVmZmVyX2luKTsKKworICByZXR1cm4gYnVmZmVyX2luOworfQorCitzdGF0aWMgZ3VpbnQ2NAorY29udmVydF90b19udHAgKEdzdENsb2NrVGltZSB0KQoreworICBndWludDY0IG50cHRpbWU7CisKKyAgLyogY29udmVydCB0byBOVFAgdGltZS4gdXBwZXIgMzIgYml0cyBzaG91bGQgY29udGFpbiB0aGUgc2Vjb25kcworICAgKiBhbmQgdGhlIGxvd2VyIDMyIGJpdHMsIHRoZSBmcmFjdGlvbnMgb2YgYSBzZWNvbmQuICovCisgIG50cHRpbWUgPSBnc3RfdXRpbF91aW50NjRfc2NhbGUgKHQsIChHX0dJTlQ2NF9DT05TVEFOVCAoMSkgPDwgMzIpLAorICAgICAgR1NUX1NFQ09ORCk7CisKKyAgcmV0dXJuIG50cHRpbWU7Cit9CisKKy8qIENyZWF0ZSBhIGNvcHkgb2YgQGJ1ZmZlcl9pbiBoYXZpbmcgdGhlIFJUUCBleHRlbnNpb24gKi8KK3N0YXRpYyBHc3RCdWZmZXIgKgorY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKEdzdEJ1ZmZlciAqIGJ1ZmZlcl9pbiwgZ2Jvb2xlYW4gY2xlYW5fcG9pbnQsCisgICAgZ2Jvb2xlYW4gZW5kX2NvbnRpZ3VvdXMsIGdib29sZWFuIGRpc2NvbnQsIGd1aW50NjQgbnRwX29mZnNldCwgZ3VpbnQ4IGNzZXEpCit7CisgIEdzdEJ1ZmZlciAqYnVmZmVyX291dDsKKyAgR3N0UlRQQnVmZmVyIHJ0cGJ1ZmZlcl9vdXQgPSBHU1RfUlRQX0JVRkZFUl9JTklUOworICBndWludDggKmRhdGE7CisgIGd1aW50OCBmbGFncyA9IDA7CisKKyAgYnVmZmVyX291dCA9IGdzdF9idWZmZXJfY29weSAoYnVmZmVyX2luKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfbWFwIChidWZmZXJfb3V0LCBHU1RfTUFQX1JFQURXUklURSwKKyAgICAgICAgICAmcnRwYnVmZmVyX291dCkpOworCisgIC8qIGV4dGVuc2lvbiAqLworICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfc2V0X2V4dGVuc2lvbl9kYXRhICgmcnRwYnVmZmVyX291dCwgMHhBQkFDLCAzKSk7CisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9nZXRfZXh0ZW5zaW9uICgmcnRwYnVmZmVyX291dCkpOworICBmYWlsX3VubGVzcyAoZ3N0X3J0cF9idWZmZXJfZ2V0X2V4dGVuc2lvbl9kYXRhICgmcnRwYnVmZmVyX291dCwgTlVMTCwKKyAgICAgICAgICAoZ3BvaW50ZXIpICYgZGF0YSwgTlVMTCkpOworCisgIC8qIE5UUCB0aW1lc3RhbXAgKi8KKyAgR1NUX1dSSVRFX1VJTlQ2NF9CRSAoZGF0YSwgY29udmVydF90b19udHAgKEdTVF9CVUZGRVJfUFRTIChidWZmZXJfaW4pICsKKyAgICAgICAgICBudHBfb2Zmc2V0KSk7CisKKyAgLyogQyBFIEQgbWJ6ICovCisgIGlmIChjbGVhbl9wb2ludCkKKyAgICBmbGFncyB8PSAoMSA8PCA3KTsKKyAgaWYgKGVuZF9jb250aWd1b3VzKQorICAgIGZsYWdzIHw9ICgxIDw8IDYpOworICBpZiAoZGlzY29udCkKKyAgICBmbGFncyB8PSAoMSA8PCA1KTsKKworICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyA4LCBmbGFncyk7CisKKyAgLyogQ1NlcSAqLworICBHU1RfV1JJVEVfVUlOVDggKGRhdGEgKyA5LCBjc2VxKTsKKworICBtZW1zZXQgKGRhdGEgKyAxMCwgMCwgNCk7CisKKyAgZ3N0X3J0cF9idWZmZXJfdW5tYXAgKCZydHBidWZmZXJfb3V0KTsKKworICByZXR1cm4gYnVmZmVyX291dDsKK30KKworc3RhdGljIHZvaWQKK2RvX29uZV9idWZmZXJfdGVzdF9hcHBseSAoZ2Jvb2xlYW4gY2xlYW5fcG9pbnQpCit7CisgIEdzdEJ1ZmZlciAqYnVmZmVyX2luLCAqYnVmZmVyX291dDsKKworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJudHAtb2Zmc2V0IiwgTlRQX09GRlNFVCwgImNzZXEiLCAweDEyMzQ1Njc4LAorICAgICAgInNldC1lLWJpdCIsIEZBTFNFLCBOVUxMKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfUExBWUlORywgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKworICBidWZmZXJfaW4gPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBjbGVhbl9wb2ludCk7CisgIGJ1ZmZlcl9vdXQgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoYnVmZmVyX2luLCBjbGVhbl9wb2ludCwgRkFMU0UsIEZBTFNFLAorICAgICAgTlRQX09GRlNFVCwgQ1NFUSk7CisKKyAgLyogcHVzaCBpbml0aWFsIGV2ZW50cyAqLworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBQdXNoIGJ1ZmZlciAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXJfaW4pLCBHU1RfRkxPV19PSyk7CisKKyAgY2hlY2tfYnVmZmVyX2VxdWFsICgoR3N0QnVmZmVyICopIGJ1ZmZlcnMtPmRhdGEsIGJ1ZmZlcl9vdXQpOworICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXJfb3V0KTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfTlVMTCwgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKK30KKworc3RhdGljIHZvaWQKK2RvX3R3b19idWZmZXJzX3Rlc3RfYXBwbHkgKGdib29sZWFuIGVuZF9jb250aWd1b3VzKQoreworICBHc3RCdWZmZXIgKmJ1ZmZlcl9pbiwgKmJ1ZmZlcl9vdXQ7CisgIEdMaXN0ICpub2RlOworCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgIm50cC1vZmZzZXQiLCBOVFBfT0ZGU0VULCAiY3NlcSIsIDB4MTIzNDU2NzgsCisgICAgICAic2V0LWUtYml0IiwgVFJVRSwgTlVMTCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX1BMQVlJTkcsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgYnVmZmVyX2luID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCwgRkFMU0UpOworICBidWZmZXJfb3V0ID0gY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKGJ1ZmZlcl9pbiwgRkFMU0UsIGVuZF9jb250aWd1b3VzLAorICAgICAgRkFMU0UsIE5UUF9PRkZTRVQsIENTRVEpOworCisgIC8qIHB1c2ggaW5pdGlhbCBldmVudHMgKi8KKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisKKyAgLyogUHVzaCBidWZmZXIgKi8KKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyX2luKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIFRoZSBidWZmZXIgaGFzbid0IGJlZW4gcHVzaGVkIGl0IGFzIHRoZSBlbGVtZW50IGlzIHdhaXRpbmcgZm9yIHRoZSBuZXh0CisgICAqIGJ1ZmZlci4gKi8KKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDApOworCisgIC8qIHB1c2ggYW4gbnRwLW9mZnNldCBldmVudCB0byB0cmlnZ2VyIGEgZGlzY29udGludXR5ICovCisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLAorICAgICAgICAgIGNyZWF0ZV9udHBfb2Zmc2V0X2V2ZW50IChOVFBfT0ZGU0VULCBlbmRfY29udGlndW91cykpKTsKKworICAvKiBBIHNlY29uZCBidWZmZXIgaXMgcHVzaGVkICovCisgIGJ1ZmZlcl9pbiA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAxLCBGQUxTRSk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyX2luKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIFRoZSBmaXJzdCBidWZmZXIgaGFzIG5vdyBiZWVuIHB1c2hlZCBvdXQgKi8KKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDEpOworCisgIG5vZGUgPSBnX2xpc3RfbGFzdCAoYnVmZmVycyk7CisgIGNoZWNrX2J1ZmZlcl9lcXVhbCAoKEdzdEJ1ZmZlciAqKSBub2RlLT5kYXRhLCBidWZmZXJfb3V0KTsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyX291dCk7CisKKyAgLyogUHVzaCBFT1MgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKSk7CisKKyAgLyogVGhlIHNlY29uZCBidWZmZXIgaGFzIGJlZW4gcHVzaGVkIG91dCAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMik7CisKKyAgLyogTGFzdCBidWZmZXIgYWx3YXlzIGhhcyB0aGUgJ0UnIGZsYWcgKi8KKyAgYnVmZmVyX291dCA9IGNyZWF0ZV9leHRlbnNpb25fYnVmZmVyIChidWZmZXJfaW4sIEZBTFNFLCBUUlVFLCBlbmRfY29udGlndW91cywKKyAgICAgIE5UUF9PRkZTRVQsIENTRVEpOworICBub2RlID0gZ19saXN0X2xhc3QgKGJ1ZmZlcnMpOworICBjaGVja19idWZmZXJfZXF1YWwgKChHc3RCdWZmZXIgKikgbm9kZS0+ZGF0YSwgYnVmZmVyX291dCk7CisgIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcl9vdXQpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9OVUxMLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworfQorCitHU1RfU1RBUlRfVEVTVCAodGVzdF9hcHBseV9jbGVhbl9wb2ludCkKK3sKKyAgZG9fb25lX2J1ZmZlcl90ZXN0X2FwcGx5IChUUlVFKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9hcHBseV9ub19lX2JpdCkKK3sKKyAgZG9fdHdvX2J1ZmZlcnNfdGVzdF9hcHBseSAoRkFMU0UpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2FwcGx5X2VfYml0KQoreworICBkb190d29fYnVmZmVyc190ZXN0X2FwcGx5IChUUlVFKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9mbHVzaGluZykKK3sKKyAgR3N0QnVmZmVyICpidWZmZXI7CisKKyAgLyogc2V0IHRoZSBlLWJpdCwgc28gdGhlIGVsZW1lbnQgdXNlIGNhY2hpbmcgKi8KKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAic2V0LWUtYml0IiwgVFJVRSwgTlVMTCk7CisgIC8qIHNldCB0aGUgbnRwLW9mZnNldCwgc2luY2Ugbm8gb25lIHdpbGwgcHJvdmlkZSBhIGNsb2NrICovCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgIm50cC1vZmZzZXQiLCBOVFBfT0ZGU0VULCBOVUxMKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfUExBWUlORywgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIHRoZSBmaXJzdCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICAvKiBubyBidWZmZXJzIHNob3VsZCBoYXZlIG1hZGUgaXQgdGhyb3VnaCAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMCk7CisKKyAgLyogZmx1c2ggdGhlIGVsZW1lbnQgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGdzdF9ldmVudF9uZXdfZmx1c2hfc3RhcnQgKCkpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wYWRfcHVzaF9ldmVudCAobXlzcmNwYWQsIGdzdF9ldmVudF9uZXdfZmx1c2hfc3RvcCAoRkFMU0UpKSk7CisKKyAgLyogcmVzZW5kIGV2ZW50cyAqLworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggYSBzZWNvbmQgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAxLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIHN0aWxsIG5vIGJ1ZmZlcnMgc2hvdWxkIGhhdmUgbWFkZSBpdCB0aHJvdWdoICh0aGUgZmlyc3Qgb25lIHNob3VsZCBoYXZlCisgICAqIGJlZW4gZHJvcHBlZCBkdXJpbmcgZmx1c2hpbmcpICovCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAwKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfTlVMTCwgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9yZXVzYWJsZV9lbGVtZW50X25vX2VfYml0KQoreworICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKworICAvKiBzZXQgdGhlIG50cC1vZmZzZXQsIHNpbmNlIG5vIG9uZSB3aWxsIHByb3ZpZGUgYSBjbG9jayAqLworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJudHAtb2Zmc2V0IiwgTlRQX09GRlNFVCwgTlVMTCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX1BMQVlJTkcsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisgIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15c3JjcGFkLCBlbGVtZW50LCBOVUxMLCBHU1RfRk9STUFUX1RJTUUpOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCB0aGUgZmlyc3QgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIGEgc2Vjb25kIGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QICsgMSwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggYSB0aGlyZCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDIsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX05VTEwsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDMpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggdGhlIGZpcnN0IGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCBhIHNlY29uZCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDEsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIGEgdGhpcmQgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAyLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9OVUxMLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCA2KTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9yZXVzYWJsZV9lbGVtZW50X2VfYml0KQoreworICBHc3RCdWZmZXIgKmJ1ZmZlcjsKKworICAvKiBzZXQgdGhlIGUtYml0LCBzbyB0aGUgZWxlbWVudCB1c2UgY2FjaGluZyAqLworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJzZXQtZS1iaXQiLCBUUlVFLCBOVUxMKTsKKyAgLyogc2V0IHRoZSBudHAtb2Zmc2V0LCBzaW5jZSBubyBvbmUgd2lsbCBwcm92aWRlIGEgY2xvY2sgKi8KKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAibnRwLW9mZnNldCIsIE5UUF9PRkZTRVQsIE5VTEwpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworICBnc3RfY2hlY2tfc2V0dXBfZXZlbnRzIChteXNyY3BhZCwgZWxlbWVudCwgTlVMTCwgR1NUX0ZPUk1BVF9USU1FKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggdGhlIGZpcnN0IGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCBhIHNlY29uZCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCArIDEsIFRSVUUpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIGEgdGhpcmQgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAyLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9OVUxMLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAyKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfUExBWUlORywgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIHRoZSBmaXJzdCBidWZmZXIgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggYSBzZWNvbmQgYnVmZmVyICovCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChUSU1FU1RBTVAgKyAxLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIGNyZWF0ZSBhbmQgcHVzaCBhIHRoaXJkIGJ1ZmZlciAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QICsgMiwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfTlVMTCwgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgNCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfbnRwX29mZnNldF9ldmVudCkKK3sKKyAgR3N0QnVmZmVyICpidWZmZXJfaW4sICpidWZmZXIxX291dCwgKmJ1ZmZlcjJfb3V0OworICBHTGlzdCAqbm9kZTsKKworICAvKiBzZXQgdGhlIGUtYml0LCBzbyB0aGUgZWxlbWVudCB1c2UgY2FjaGluZyAqLworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJzZXQtZS1iaXQiLCBUUlVFLCBOVUxMKTsKKworICBBU1NFUlRfU0VUX1NUQVRFIChlbGVtZW50LCBHU1RfU1RBVEVfUExBWUlORywgR1NUX1NUQVRFX0NIQU5HRV9TVUNDRVNTKTsKKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisKKyAgLyogcHVzaCBhbiBudHAtb2Zmc2V0IGV2ZW50ICovCisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLAorICAgICAgICAgIGNyZWF0ZV9udHBfb2Zmc2V0X2V2ZW50IChOVFBfT0ZGU0VULCBGQUxTRSkpKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggdGhlIGZpcnN0IGJ1ZmZlciAqLworICBidWZmZXJfaW4gPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgYnVmZmVyMV9vdXQgPSBjcmVhdGVfZXh0ZW5zaW9uX2J1ZmZlciAoYnVmZmVyX2luLCBUUlVFLCBUUlVFLCBGQUxTRSwKKyAgICAgIE5UUF9PRkZTRVQsIDApOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXJfaW4pLCBHU1RfRkxPV19PSyk7CisKKyAgLyogcHVzaCBhIG5ldyBudHAgb2Zmc2V0ICovCisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLAorICAgICAgICAgIGNyZWF0ZV9udHBfb2Zmc2V0X2V2ZW50ICgyICogTlRQX09GRlNFVCwgVFJVRSkpKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggYSBzZWNvbmQgYnVmZmVyIChsYXN0KSAqLworICBidWZmZXJfaW4gPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QICsgMSwgVFJVRSk7CisgIGJ1ZmZlcjJfb3V0ID0gY3JlYXRlX2V4dGVuc2lvbl9idWZmZXIgKGJ1ZmZlcl9pbiwgVFJVRSwgVFJVRSwgVFJVRSwKKyAgICAgIDIgKiBOVFBfT0ZGU0VULCAwKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyX2luKSwgR1NUX0ZMT1dfT0spOworCisgIC8qIHRoZSBmaXJzdCBidWZmZXIgc2hvdWxkIGhhdmUgYmVlbiBwdXNoZWQgbm93ICovCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAxKTsKKyAgbm9kZSA9IGdfbGlzdF9sYXN0IChidWZmZXJzKTsKKyAgY2hlY2tfYnVmZmVyX2VxdWFsICgoR3N0QnVmZmVyICopIG5vZGUtPmRhdGEsIGJ1ZmZlcjFfb3V0KTsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyMV9vdXQpOworCisgIC8qIHB1c2ggRU9TICovCisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLCBnc3RfZXZlbnRfbmV3X2VvcyAoKSkpOworCisgIC8qIHRoZSBzZWNvbmQgYnVmZmVyIGhhcyBub3cgYmVlbiBwdXNoZWQgKi8KKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDIpOworICBub2RlID0gZ19saXN0X2xhc3QgKGJ1ZmZlcnMpOworICBjaGVja19idWZmZXJfZXF1YWwgKChHc3RCdWZmZXIgKikgbm9kZS0+ZGF0YSwgYnVmZmVyMl9vdXQpOworICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIyX291dCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX05VTEwsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3Rfc2VyaWFsaXplZF9ldmVudHMpCit7CisgIEdzdEJ1ZmZlciAqYnVmZmVyOworCisgIC8qIHdlIHdhbnQgdGhlIGUtYml0IHNldCBzbyB0aGF0IGJ1ZmZlcnMgYXJlIGNhY2hlZCAqLworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJzZXQtZS1iaXQiLCBUUlVFLCBOVUxMKTsKKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAibnRwLW9mZnNldCIsIE5UUF9PRkZTRVQsIE5VTEwpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworCisgIC8qIHNlbmQgaW50aXRpYWwgZXZlbnRzIChzdHJlYW0tc3RhcnQgYW5kIHNlZ21lbnQpICovCisgIGdzdF9jaGVja19zZXR1cF9ldmVudHMgKG15c3JjcGFkLCBlbGVtZW50LCBOVUxMLCBHU1RfRk9STUFUX1RJTUUpOworICBjaGVja19hbmRfY2xlYXJfZXZlbnRzICgyLCBOT19DT01QQVJFKTsKKworICAvKiBldmVudHMgcmVjZWl2ZWQgd2hpbGUgbm8gYnVmZmVyIGlzIGNhY2hlZCBzaG91bGQgYmUgZm9yd2FyZGVkICovCisgIGNyZWF0ZV9hbmRfcHVzaF9ldmVudCAoR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNKTsKKyAgY2hlY2tfYW5kX2NsZWFyX2V2ZW50cyAoMSwgTk9fQ09NUEFSRSk7CisKKyAgLyogY3JlYXRlIGFuZCBwdXNoIHRoZSBmaXJzdCBidWZmZXIsIHdoaWNoIHNob3VsZCBiZSBjYWNoZWQgKi8KKyAgYnVmZmVyID0gY3JlYXRlX3J0cF9idWZmZXIgKFRJTUVTVEFNUCwgVFJVRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wYWRfcHVzaCAobXlzcmNwYWQsIGJ1ZmZlciksIEdTVF9GTE9XX09LKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAoYnVmZmVycyksIDApOworICAvKiBzZXJpYWxpemVkIGV2ZW50cyBzaG91bGQgYmUgcXVldWVkIHdoZW4gdGhlcmUncyBhIGJ1ZmZlciBjYWNoZWQgKi8KKyAgY3JlYXRlX2FuZF9wdXNoX2V2ZW50IChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU0pOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChteXJlY2VpdmVkZXZlbnRzKSwgMCk7CisgIC8qIHRoZXJlJ3Mgc3RpbGwgYSBidWZmZXIgY2FjaGVkLi4uICovCisgIGNyZWF0ZV9hbmRfcHVzaF9ldmVudCAoR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAobXlyZWNlaXZlZGV2ZW50cyksIDApOworCisgIC8qIHJlY2VpdmluZyBhIG5ldyBidWZmZXIgc2hvdWxkIGxldCB0aGUgZmlyc3QgdGhyb3VnaCwgYWxvbmcgd2l0aCB0aGUKKyAgICogcXVldWVkIHNlcmlhbGl6ZWQgZXZlbnRzICAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMSk7CisgIGNoZWNrX2FuZF9jbGVhcl9ldmVudHMgKDIsIENPTVBBUkUpOworCisgIC8qIHRoZXJlJ3Mgc3RpbGwgYSBidWZmZXIgY2FjaGVkLCBhIG5ldyBzZXJpYWxpemVkIGV2ZW50IHNob3VsZCBiZSBxdXVldWQgKi8KKyAgY3JlYXRlX2FuZF9wdXNoX2V2ZW50IChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU0pOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChteXJlY2VpdmVkZXZlbnRzKSwgMCk7CisKKyAgLyogd2hlbiByZWNlaXZpbmcgYW4gRU9TIGNhY2hlZCBidWZmZXIgYW5kIHF1ZXVlZCBldmVudHMgc2hvdWxkIGJlIGZvcndhcmRlZCAqLworICBjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdTVF9FVkVOVF9FT1MpOworICBjaGVja19hbmRfY2xlYXJfZXZlbnRzICgyLCBDT01QQVJFKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF9ub25fc2VyaWFsaXplZF9ldmVudHMpCit7CisgIEdzdEV2ZW50ICpldmVudDsKKyAgR3N0QnVmZmVyICpidWZmZXI7CisKKyAgLyogd2Ugd2FudCB0aGUgZS1iaXQgc2V0IHNvIHRoYXQgYnVmZmVycyBhcmUgY2FjaGVkICovCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgInNldC1lLWJpdCIsIFRSVUUsIE5VTEwpOworICBnX29iamVjdF9zZXQgKGVsZW1lbnQsICJudHAtb2Zmc2V0IiwgTlRQX09GRlNFVCwgTlVMTCk7CisKKyAgQVNTRVJUX1NFVF9TVEFURSAoZWxlbWVudCwgR1NUX1NUQVRFX1BMQVlJTkcsIEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgLyogc2VuZCBpbnRpdGlhbCBldmVudHMgKHN0cmVhbS1zdGFydCBhbmQgc2VnbWVudCkgKi8KKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKG15cmVjZWl2ZWRldmVudHMpLCAyKTsKKyAgY2hlY2tfYW5kX2NsZWFyX2V2ZW50cyAoMiwgTk9fQ09NUEFSRSk7CisKKyAgLyogZXZlbnRzIHJlY2VpdmVkIHdoaWxlIG5vIGJ1ZmZlciBpcyBjYWNoZWQgc2hvdWxkIGJlIGZvcndhcmRlZCAqLworICBjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9PT0IpOworICBjaGVja19hbmRfY2xlYXJfZXZlbnRzICgxLCBDT01QQVJFKTsKKworICAvKiBjcmVhdGUgYW5kIHB1c2ggdGhlIGZpcnN0IGJ1ZmZlciwgd2hpY2ggc2hvdWxkIGJlIGNhY2hlZCAqLworICBidWZmZXIgPSBjcmVhdGVfcnRwX2J1ZmZlciAoVElNRVNUQU1QLCBUUlVFKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BhZF9wdXNoIChteXNyY3BhZCwgYnVmZmVyKSwgR1NUX0ZMT1dfT0spOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMCk7CisgIC8qIG5vbi1zZXJpYWxpemVkIGV2ZW50cyBzaG91bGQgYmUgZm9yd2FyZGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgorICAgKiB0aGVyZSBpcyBhIGNhY2hlZCBidWZmZXIgKi8KKyAgY3JlYXRlX2FuZF9wdXNoX2V2ZW50IChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU1fT09CKTsKKyAgY2hlY2tfYW5kX2NsZWFyX2V2ZW50cyAoMSwgQ09NUEFSRSk7CisKKyAgLyogdGhlcmUncyBzdGlsbCBhIGJ1ZmZlciBjYWNoZWQsIHB1c2ggYSBzZXJpYWxpemVkIGV2ZW50IGFuZCBtYWtlIHN1cmUKKyAgICogaXQncyBxdWV1ZWQgKi8KKyAgY3JlYXRlX2FuZF9wdXNoX2V2ZW50IChHU1RfRVZFTlRfQ1VTVE9NX0RPV05TVFJFQU0pOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChteXJlY2VpdmVkZXZlbnRzKSwgMCk7CisgIC8qIG5vbi1zZXJpYWxpemVkIGV2ZW50cyBzaG91bGQgYmUgZm9yd2FyZGVkIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciB0aGVyZQorICAgKiBhcmUgc2VyaWFsaXplZCBldmVudHMgcXVldWVkLCB0aHVzIHRoZSBnX2xpc3RfcHJlcGVuZCBiZWxvdyAqLworICBldmVudCA9IGNyZWF0ZV9ldmVudCAoR1NUX0VWRU5UX0NVU1RPTV9ET1dOU1RSRUFNX09PQik7CisgIG15cHVzaGVkZXZlbnRzID0gZ19saXN0X3ByZXBlbmQgKG15cHVzaGVkZXZlbnRzLCBldmVudCk7CisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLCBldmVudCkpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChteXJlY2VpdmVkZXZlbnRzKSwgMSk7CisKKyAgLyogd2hlbiByZWNlaXZpbmcgYW4gRU9TIGNhY2hlZCBidWZmZXIgYW5kIHF1ZXVlZCBldmVudHMgc2hvdWxkIGJlIGZvcndhcmRlZCAqLworICBjcmVhdGVfYW5kX3B1c2hfZXZlbnQgKEdTVF9FVkVOVF9FT1MpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChidWZmZXJzKSwgMSk7CisgIGNoZWNrX2FuZF9jbGVhcl9ldmVudHMgKDMsIENPTVBBUkUpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCitkb19udHBfdGltZSAoR3N0Q2xvY2tUaW1lIGJ1ZmZlcl90aW1lLCBnaW50IHNlZ21lbnRfc3RhcnQsIGdpbnQgc2VnbWVudF9iYXNlKQoreworICBHc3RTZWdtZW50IHNlZ21lbnQ7CisgIEdzdEJ1ZmZlciAqYnVmZmVyOworICBHc3RSVFBCdWZmZXIgcnRwYnVmZmVyID0gR1NUX1JUUF9CVUZGRVJfSU5JVDsKKyAgZ3VpbnQ4ICpkYXRhOworICBndWludDY0IGV4cGVjdGVkX250cF90aW1lOworICBndWludDY0IHRpbWVzdGFtcDsKKworICAvKiBjcmVhdGUgYSBzZWdtZW50IHRoYXQgY29udHJvbHMgdGhlIGJlaGF2aW9yCisgICAqIGJ5IGNoYW5naW5nIHNlZ21lbnQuc3RhcnQgYW5kIHNlZ21lbnQuYmFzZSB3ZSBhZmZlY3QgdGhlIHN0cmVhbSB0aW1lIGFuZAorICAgKiBydW5uaW5nIHRpbWUgcmVzcGVjdGl2ZWx5ICovCisgIGdzdF9zZWdtZW50X2luaXQgKCZzZWdtZW50LCBHU1RfRk9STUFUX1RJTUUpOworICBzZWdtZW50LnN0YXJ0ID0gc2VnbWVudF9zdGFydDsKKyAgc2VnbWVudC5iYXNlID0gc2VnbWVudF9iYXNlOworICBnc3RfcGFkX3B1c2hfZXZlbnQgKG15c3JjcGFkLCBnc3RfZXZlbnRfbmV3X3NlZ21lbnQgKCZzZWdtZW50KSk7CisKKyAgZXhwZWN0ZWRfbnRwX3RpbWUgPSBnc3Rfc2VnbWVudF90b19zdHJlYW1fdGltZSAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgIGJ1ZmZlcl90aW1lKTsKKyAgZXhwZWN0ZWRfbnRwX3RpbWUgKz0gTlRQX09GRlNFVDsKKyAgZXhwZWN0ZWRfbnRwX3RpbWUgPSBnc3RfdXRpbF91aW50NjRfc2NhbGUgKGV4cGVjdGVkX250cF90aW1lLAorICAgICAgKEdfR0lOVDY0X0NPTlNUQU5UICgxKSA8PCAzMiksIEdTVF9TRUNPTkQpOworCisgIGJ1ZmZlciA9IGNyZWF0ZV9ydHBfYnVmZmVyIChidWZmZXJfdGltZSwgRkFMU0UpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGFkX3B1c2ggKG15c3JjcGFkLCBidWZmZXIpLCBHU1RfRkxPV19PSyk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGJ1ZmZlcnMpLCAxKTsKKworICBidWZmZXIgPSBnX2xpc3RfbGFzdCAoYnVmZmVycyktPmRhdGE7CisKKyAgLyogZ2V0IHRoZSBleHRlbnNpb24gaGVhZGVyICovCisgIGZhaWxfdW5sZXNzIChnc3RfcnRwX2J1ZmZlcl9tYXAgKGJ1ZmZlciwgR1NUX01BUF9SRUFEV1JJVEUsICZydHBidWZmZXIpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9ydHBfYnVmZmVyX2dldF9leHRlbnNpb25fZGF0YSAoJnJ0cGJ1ZmZlciwgTlVMTCwKKyAgICAgICAgICAoZ3BvaW50ZXIpICYgZGF0YSwgTlVMTCkpOworCisgIC8qIC4uLmFuZCByZWFkIHRoZSBOVFAgdGltZXN0YW1wIGFuZCB2ZXJpZnkgdGhhdCBpdCdzIHRoZSBleHBlY3RlZCBvbmUgKi8KKyAgdGltZXN0YW1wID0gR1NUX1JFQURfVUlOVDY0X0JFIChkYXRhKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAodGltZXN0YW1wLCBleHBlY3RlZF9udHBfdGltZSk7CisKKyAgZ3N0X3J0cF9idWZmZXJfdW5tYXAgKCZydHBidWZmZXIpOworICBnc3RfY2hlY2tfZHJvcF9idWZmZXJzICgpOworfQorCitHU1RfU1RBUlRfVEVTVCAodGVzdF9udHBfdGltZSkKK3sKKyAgLyogd2UgZG8gbm90IG5lZWQgYnVmZmVyIGNhY2hpbmcsIHNvIGRvIG5vdCBzZXQgdGhlIGUtYml0ICovCisgIGdfb2JqZWN0X3NldCAoZWxlbWVudCwgInNldC1lLWJpdCIsIEZBTFNFLCBOVUxMKTsKKyAgLyogc2V0IGFuIG50cCBvZmZzZXQgc3VpdGFibGUgZm9yIHRlc3RpbmcgKi8KKyAgZ19vYmplY3Rfc2V0IChlbGVtZW50LCAibnRwLW9mZnNldCIsIE5UUF9PRkZTRVQsIE5VTEwpOworCisgIEFTU0VSVF9TRVRfU1RBVEUgKGVsZW1lbnQsIEdTVF9TVEFURV9QTEFZSU5HLCBHU1RfU1RBVEVfQ0hBTkdFX1NVQ0NFU1MpOworCisgIC8qIHB1c2ggaW5pdGlhbCBldmVudHMgKi8KKyAgZ3N0X2NoZWNrX3NldHVwX2V2ZW50cyAobXlzcmNwYWQsIGVsZW1lbnQsIE5VTEwsIEdTVF9GT1JNQVRfVElNRSk7CisKKyAgLyogZmlyc3QgdGVzdCB3aXRoIGEgImNsZWFuIiBzZWdtZW50ICovCisgIGRvX250cF90aW1lIChHU1RfTVNFQ09ORCwgMCwgMCk7CisgIGRvX250cF90aW1lIChHU1RfU0VDT05EICsgR1NUX01TRUNPTkQsIDAsIDApOworCisgIC8qIHZlcmlmeSB0aGF0IGNoYW5naW5nIHRoZSBydW5uaW5nIHRpbWUgZG9lcyBub3QgYWZmZWN0IHRoZSBudHAgdGltZSBzdGFtcHMgICovCisgIGRvX250cF90aW1lIChHU1RfTVNFQ09ORCwgMCwgR1NUX1NFQ09ORCk7CisgIGRvX250cF90aW1lIChHU1RfU0VDT05EICsgR1NUX01TRUNPTkQsIDAsIEdTVF9TRUNPTkQpOworCisgIC8qIGNoYW5naW5nIHRoZSBzZWdtZW50LnN0YXJ0IGFmZmVjdHMgdGhlIHN0cmVhbSB0aW1lLCB2ZXJpZnkgdGhhdCB0aGUgZWxlbWVudAorICAgKiBoYW5kbGVzIGl0IGNvcnJlY3RseSAqLworICBkb19udHBfdGltZSAoR1NUX01TRUNPTkQsIEdTVF9NU0VDT05EIC8gMiwgMCk7CisgIGRvX250cF90aW1lIChHU1RfU0VDT05EICsgR1NUX01TRUNPTkQsIEdTVF9NU0VDT05EIC8gMiwgMCk7CisKKyAgLyogYW5kIGZpbmFsbHkgY2hhbmdlIGJvdGggb2YgdGhlbSBhbmQgdmVyaWZ5IHRoYXQgYWxsJ3MgZmluZSAqLworICBkb19udHBfdGltZSAoR1NUX01TRUNPTkQsIEdTVF9NU0VDT05EIC8gMiwgR1NUX1NFQ09ORCk7CisgIGRvX250cF90aW1lIChHU1RfU0VDT05EICsgR1NUX01TRUNPTkQsIEdTVF9NU0VDT05EIC8gMiwgR1NUX1NFQ09ORCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK29udmlmdGltZXN0YW1wX3N1aXRlICh2b2lkKQoreworICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIm9udmlmdGltZXN0YW1wIik7CisgIFRDYXNlICp0Y19nZW5lcmFsLCAqdGNfZXZlbnRzOworCisgIHRjX2dlbmVyYWwgPSB0Y2FzZV9jcmVhdGUgKCJnZW5lcmFsIik7CisgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfZ2VuZXJhbCk7CisgIHRjYXNlX2FkZF9jaGVja2VkX2ZpeHR1cmUgKHRjX2dlbmVyYWwsIHNldHVwLCBjbGVhbnVwKTsKKworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9hcHBseV9jbGVhbl9wb2ludCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X2FwcGx5X25vX2VfYml0KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfYXBwbHlfZV9iaXQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9mbHVzaGluZyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3JldXNhYmxlX2VsZW1lbnRfbm9fZV9iaXQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9yZXVzYWJsZV9lbGVtZW50X2VfYml0KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfbnRwX29mZnNldF9ldmVudCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X250cF90aW1lKTsKKworICB0Y19ldmVudHMgPSB0Y2FzZV9jcmVhdGUgKCJldmVudHMiKTsKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19ldmVudHMpOworICB0Y2FzZV9hZGRfY2hlY2tlZF9maXh0dXJlICh0Y19ldmVudHMsIHNldHVwX3dpdGhfZXZlbnQsIGNsZWFudXBfd2l0aF9ldmVudCk7CisKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2V2ZW50cywgdGVzdF9zZXJpYWxpemVkX2V2ZW50cyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19ldmVudHMsIHRlc3Rfbm9uX3NlcmlhbGl6ZWRfZXZlbnRzKTsKKworICByZXR1cm4gczsKK30KKworR1NUX0NIRUNLX01BSU4gKG9udmlmdGltZXN0YW1wKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3RlbXBsYXRlbWF0Y2guYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3RlbXBsYXRlbWF0Y2guYwppbmRleCA1YjU2NzE4Li45OWZjNzk0IDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9lbGVtZW50cy90ZW1wbGF0ZW1hdGNoLmMKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvdGVtcGxhdGVtYXRjaC5jCkBAIC05Miw3ICs5Miw4IEBACiAgIEdzdEVsZW1lbnQgKmVsZW1lbnQ7CiAgIEdzdFBhZCAqc2lua3BhZCwgKnNyY3BhZDsKICAgR3N0Q2FwcyAqY2FwcyA9Ci0gICAgICBnc3RfY2Fwc19mcm9tX3N0cmluZyAoQ0FQU19UTVBMICIsIHdpZHRoPShpbnQpMTYsIGhlaWdodD0oaW50KTE2Iik7CisgICAgICBnc3RfY2Fwc19mcm9tX3N0cmluZyAoQ0FQU19UTVBMCisgICAgICAiLCB3aWR0aD0oaW50KTE2LCBoZWlnaHQ9KGludCkxNiwgZnJhbWVyYXRlPTEvMSIpOwogICBHc3RCdXMgKmJ1czsKICAgR3N0TWVzc2FnZSAqbXNnOwogICBjb25zdCBHc3RTdHJ1Y3R1cmUgKnN0cnVjdHVyZTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTViYjUxCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvdGVzdF9odHRwX3NyYy5jCkBAIC0wLDAgKzEsNzIwIEBACisvKiBIVFRQIHNvdXJjZSBlbGVtZW50IGZvciB1c2UgaW4gdGVzdHMKKyAqCisgKiBDb3B5cmlnaHQgKGMpIDwyMDE1PiBZb3VWaWV3IFRWIEx0ZAorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKyNpbmNsdWRlIDxnc3QvYmFzZS9nc3RiYXNlc3JjLmg+CisKKyNpbmNsdWRlICJ0ZXN0X2h0dHBfc3JjLmgiCisKKyNpZm5kZWYgR1NUX1BBQ0tBR0VfTkFNRQorI2RlZmluZSBHU1RfUEFDS0FHRV9OQU1FICJnc3QtcGx1Z2lucy1iYWQiCisjZW5kaWYKKworI2lmbmRlZiBHU1RfUEFDS0FHRV9PUklHSU4KKyNkZWZpbmUgR1NUX1BBQ0tBR0VfT1JJR0lOICJodHRwczovL2RldmVsb3Blci5nbm9tZS5vcmcvZ3N0cmVhbWVyLyIKKyNlbmRpZgorCisjZGVmaW5lIEdTVF9URVNUX0hUVFBfU1JDKG9iaikgICAgICAgICAgICAoR19UWVBFX0NIRUNLX0lOU1RBTkNFX0NBU1QgKChvYmopLCBHU1RfVFlQRV9URVNUX0hUVFBfU1JDLCBHc3RUZXN0SFRUUFNyYykpCisjZGVmaW5lIEdTVF9URVNUX0hUVFBfU1JDX0NMQVNTKGtsYXNzKSAgICAoR19UWVBFX0NIRUNLX0NMQVNTX0NBU1QgKChrbGFzcyksIEdTVF9UWVBFX1RFU1RfSFRUUF9TUkMsIEdzdFRlc3RIVFRQU3JjQ2xhc3MpKQorI2RlZmluZSBHU1RfSVNfVEVTVF9IVFRQX1NSQyhvYmopICAgICAgICAgKEdfVFlQRV9DSEVDS19JTlNUQU5DRV9UWVBFICgob2JqKSwgR1NUX1RZUEVfVEVTVF9IVFRQX1NSQykpCisjZGVmaW5lIEdTVF9JU19URVNUX0hUVFBfU1JDX0NMQVNTKGtsYXNzKSAoR19UWVBFX0NIRUNLX0NMQVNTX1RZUEUgKChrbGFzcyksIEdTVF9UWVBFX1RFU1RfSFRUUF9TUkMpKQorI2RlZmluZSBHU1RfVEVTVF9IVFRQX1NSQ19HRVRfQ0xBU1Mob2JqKSAgKEdfVFlQRV9JTlNUQU5DRV9HRVRfQ0xBU1MgKChvYmopLCBHU1RfVFlQRV9URVNUX0hUVFBfU1JDLCBHc3RUZXN0SFRUUFNyY0NsYXNzKSkKKworI2RlZmluZSBERUZBVUxUX1VTRVJfQUdFTlQgICJHU3RyZWFtZXIgdGVzdGh0dHBzcmMgIgorI2RlZmluZSBERUZBVUxUX0NPTVBSRVNTICAgIEZBTFNFCisjZGVmaW5lIERFRkFVTFRfSFRUUF9NRVRIT0QgTlVMTAorI2RlZmluZSBERUZBVUxUX0tFRVBfQUxJVkUgIEZBTFNFCisKK2VudW0KK3sKKyAgUFJPUF8wLAorICBQUk9QX1VTRVJfQUdFTlQsCisgIFBST1BfRVhUUkFfSEVBREVSUywKKyAgUFJPUF9DT01QUkVTUywKKyAgUFJPUF9LRUVQX0FMSVZFLAorICBQUk9QX01FVEhPRCwKKyAgUFJPUF9MQVNUCit9OworCit0eXBlZGVmIGVudW0KK3sKKyAgTUVUSE9EX0lOVkFMSUQsCisgIE1FVEhPRF9HRVQsCisgIE1FVEhPRF9QT1NULAorICBNRVRIT0RfSEVBRCwKKyAgTUVUSE9EX09QVElPTlMKK30gSHR0cE1ldGhvZDsKKwordHlwZWRlZiBzdHJ1Y3QgX0dzdFRlc3RIVFRQU3JjTWV0aG9kTmFtZQoreworICBjb25zdCBnY2hhciAqbmFtZTsKKyAgSHR0cE1ldGhvZCBtZXRob2Q7Cit9IEdzdFRlc3RIVFRQU3JjTWV0aG9kTmFtZTsKKworc3RhdGljIGNvbnN0IEdzdFRlc3RIVFRQU3JjTWV0aG9kTmFtZSBnc3RfdGVzdF9odHRwX3NyY19tZXRob2RzW10gPSB7CisgIHsiR0VUIiwgTUVUSE9EX0dFVH0sCisgIHsiUE9TVCIsIE1FVEhPRF9QT1NUfSwKKyAgeyJIRUFEIiwgTUVUSE9EX0hFQUR9LAorICB7Ik9QVElPTlMiLCBNRVRIT0RfT1BUSU9OU30sCisgIHtOVUxMLCBNRVRIT0RfSU5WQUxJRH0KK307CisKK3R5cGVkZWYgc3RydWN0IF9Hc3RUZXN0SFRUUFNyYworeworICBHc3RCYXNlU3JjIHBhcmVudDsKKworICBHTXV0ZXggbXV0ZXg7CisKKyAgR3N0VGVzdEhUVFBTcmNJbnB1dCBpbnB1dDsKKworICBnY2hhciAqdXJpOyAgICAgICAgICAgICAgICAgICAvKiB0aGUgdXJpIGZvciB3aGljaCBkYXRhIGlzIGJlaW5nIHJlcXVlc3RlZCAqLworICBnYm9vbGVhbiBjb21wcmVzczsKKyAgZ2Jvb2xlYW4ga2VlcF9hbGl2ZTsKKyAgZ2NoYXIgKmh0dHBfbWV0aG9kX25hbWU7CisgIEh0dHBNZXRob2QgaHR0cF9tZXRob2Q7CisgIEdzdFN0cnVjdHVyZSAqZXh0cmFfaGVhZGVyczsKKyAgZ2NoYXIgKnVzZXJfYWdlbnQ7CisKKyAgZ3VpbnQ2NCBwb3NpdGlvbjsKKyAgLyogaW5kZXggaW1tZWRpYXRlbHkgYWZ0ZXIgdGhlIGxhc3QgYnl0ZSBmcm9tIHRoZSBzZWdtZW50IHRvIGJlIHJldHJpZXZlZCAqLworICBndWludDY0IHNlZ21lbnRfZW5kOworCisgIEdzdEV2ZW50ICpodHRwX2hlYWRlcnNfZXZlbnQ7CisgIGdib29sZWFuIGR1cmF0aW9uX2NoYW5nZWQ7Cit9IEdzdFRlc3RIVFRQU3JjOworCit0eXBlZGVmIHN0cnVjdCBfR3N0VGVzdEhUVFBTcmNDbGFzcworeworICBHc3RCYXNlU3JjQ2xhc3MgcGFyZW50X2NsYXNzOworfSBHc3RUZXN0SFRUUFNyY0NsYXNzOworCit0eXBlZGVmIHN0cnVjdCBfUGx1Z2luSW5pdENvbnRleHQKK3sKKyAgY29uc3QgZ2NoYXIgKm5hbWU7CisgIGd1aW50IHJhbms7CisgIEdUeXBlIHR5cGU7Cit9IFBsdWdpbkluaXRDb250ZXh0OworCitzdGF0aWMgY29uc3QgR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgKmdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrcyA9IE5VTEw7CitzdGF0aWMgZ3BvaW50ZXIgZ3N0X3Rlc3RfaHR0cF9zcmNfY2FsbGJhY2tfdXNlcl9kYXRhID0gTlVMTDsKK3N0YXRpYyBndWludCBnc3RfdGVzdF9odHRwX3NyY19ibG9ja3NpemUgPSAwOworCitzdGF0aWMgR3N0U3RhdGljUGFkVGVtcGxhdGUgZ3N0X2Rhc2hkZW11eF90ZXN0X3NvdXJjZV90ZW1wbGF0ZSA9CitHU1RfU1RBVElDX1BBRF9URU1QTEFURSAoInNyYyIsCisgICAgR1NUX1BBRF9TUkMsCisgICAgR1NUX1BBRF9BTFdBWVMsCisgICAgR1NUX1NUQVRJQ19DQVBTX0FOWSk7CisKK3N0YXRpYyB2b2lkIGdzdF90ZXN0X2h0dHBfc3JjX3VyaV9oYW5kbGVyX2luaXQgKGdwb2ludGVyIGdfaWZhY2UsCisgICAgZ3BvaW50ZXIgaWZhY2VfZGF0YSk7CitzdGF0aWMgdm9pZCBnc3RfdGVzdF9odHRwX3NyY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Rlc3RfaHR0cF9zcmNfaXNfc2Vla2FibGUgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdGVzdF9odHRwX3NyY19kb19zZWVrIChHc3RCYXNlU3JjICogYmFzZXNyYywKKyAgICBHc3RTZWdtZW50ICogc2VnbWVudCk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Rlc3RfaHR0cF9zcmNfc3RhcnQgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKTsKK3N0YXRpYyBnYm9vbGVhbiBnc3RfdGVzdF9odHRwX3NyY19zdG9wIChHc3RCYXNlU3JjICogYmFzZXNyYyk7CitzdGF0aWMgZ2Jvb2xlYW4gZ3N0X3Rlc3RfaHR0cF9zcmNfZ2V0X3NpemUgKEdzdEJhc2VTcmMgKiBiYXNlc3JjLAorICAgIGd1aW50NjQgKiBzaXplKTsKK3N0YXRpYyBHc3RGbG93UmV0dXJuIGdzdF90ZXN0X2h0dHBfc3JjX2NyZWF0ZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsCisgICAgZ3VpbnQ2NCBvZmZzZXQsIGd1aW50IGxlbmd0aCwgR3N0QnVmZmVyICoqIHJldCk7CitzdGF0aWMgdm9pZCBnc3RfdGVzdF9odHRwX3NyY19zZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgY29uc3QgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CitzdGF0aWMgdm9pZCBnc3RfdGVzdF9odHRwX3NyY19nZXRfcHJvcGVydHkgKEdPYmplY3QgKiBvYmplY3QsIGd1aW50IHByb3BfaWQsCisgICAgR1ZhbHVlICogdmFsdWUsIEdQYXJhbVNwZWMgKiBwc3BlYyk7CisKKworI2RlZmluZSBfZG9faW5pdCBcCisgIEdfSU1QTEVNRU5UX0lOVEVSRkFDRSAoR1NUX1RZUEVfVVJJX0hBTkRMRVIsIGdzdF90ZXN0X2h0dHBfc3JjX3VyaV9oYW5kbGVyX2luaXQpOworCisjZGVmaW5lIGdzdF90ZXN0X2h0dHBfc3JjX3BhcmVudF9jbGFzcyBwYXJlbnRfY2xhc3MKK0dfREVGSU5FX1RZUEVfV0lUSF9DT0RFIChHc3RUZXN0SFRUUFNyYywgZ3N0X3Rlc3RfaHR0cF9zcmMsCisgICAgR1NUX1RZUEVfQkFTRV9TUkMsIF9kb19pbml0KTsKKworc3RhdGljIHZvaWQKK2dzdF90ZXN0X2h0dHBfc3JjX2NsYXNzX2luaXQgKEdzdFRlc3RIVFRQU3JjQ2xhc3MgKiBrbGFzcykKK3sKKyAgR09iamVjdENsYXNzICpnb2JqZWN0X2NsYXNzOworICBHc3RFbGVtZW50Q2xhc3MgKmdzdGVsZW1lbnRfY2xhc3M7CisgIEdzdEJhc2VTcmNDbGFzcyAqZ3N0YmFzZXNyY19jbGFzczsKKworICBnb2JqZWN0X2NsYXNzID0gR19PQkpFQ1RfQ0xBU1MgKGtsYXNzKTsKKyAgZ3N0ZWxlbWVudF9jbGFzcyA9IEdTVF9FTEVNRU5UX0NMQVNTIChrbGFzcyk7CisgIGdzdGJhc2VzcmNfY2xhc3MgPSBHU1RfQkFTRV9TUkNfQ0xBU1MgKGtsYXNzKTsKKworICBnb2JqZWN0X2NsYXNzLT5zZXRfcHJvcGVydHkgPSBnc3RfdGVzdF9odHRwX3NyY19zZXRfcHJvcGVydHk7CisgIGdvYmplY3RfY2xhc3MtPmdldF9wcm9wZXJ0eSA9IGdzdF90ZXN0X2h0dHBfc3JjX2dldF9wcm9wZXJ0eTsKKyAgZ29iamVjdF9jbGFzcy0+ZmluYWxpemUgPSBnc3RfdGVzdF9odHRwX3NyY19maW5hbGl6ZTsKKworICBnX29iamVjdF9jbGFzc19pbnN0YWxsX3Byb3BlcnR5IChnb2JqZWN0X2NsYXNzLCBQUk9QX0NPTVBSRVNTLAorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJjb21wcmVzcyIsICJDb21wcmVzcyIsCisgICAgICAgICAgIkFsbG93IGNvbXByZXNzZWQgY29udGVudCBlbmNvZGluZ3MiLAorICAgICAgICAgIERFRkFVTFRfQ09NUFJFU1MsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfRVhUUkFfSEVBREVSUywKKyAgICAgIGdfcGFyYW1fc3BlY19ib3hlZCAoImV4dHJhLWhlYWRlcnMiLCAiRXh0cmEgSGVhZGVycyIsCisgICAgICAgICAgIkV4dHJhIGhlYWRlcnMgdG8gYXBwZW5kIHRvIHRoZSBIVFRQIHJlcXVlc3QiLAorICAgICAgICAgIEdTVF9UWVBFX1NUUlVDVFVSRSwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywgUFJPUF9LRUVQX0FMSVZFLAorICAgICAgZ19wYXJhbV9zcGVjX2Jvb2xlYW4gKCJrZWVwLWFsaXZlIiwgImtlZXAtYWxpdmUiLAorICAgICAgICAgICJVc2UgSFRUUCBwZXJzaXN0ZW50IGNvbm5lY3Rpb25zIiwgREVGQVVMVF9LRUVQX0FMSVZFLAorICAgICAgICAgIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdfb2JqZWN0X2NsYXNzX2luc3RhbGxfcHJvcGVydHkgKGdvYmplY3RfY2xhc3MsIFBST1BfTUVUSE9ELAorICAgICAgZ19wYXJhbV9zcGVjX3N0cmluZyAoIm1ldGhvZCIsICJIVFRQIG1ldGhvZCIsCisgICAgICAgICAgIlRoZSBIVFRQIG1ldGhvZCB0byB1c2UgKEdFVCwgSEVBRCwgT1BUSU9OUywgZXRjKSIsCisgICAgICAgICAgREVGQVVMVF9IVFRQX01FVEhPRCwgR19QQVJBTV9SRUFEV1JJVEUgfCBHX1BBUkFNX1NUQVRJQ19TVFJJTkdTKSk7CisKKyAgZ19vYmplY3RfY2xhc3NfaW5zdGFsbF9wcm9wZXJ0eSAoZ29iamVjdF9jbGFzcywKKyAgICAgIFBST1BfVVNFUl9BR0VOVCwKKyAgICAgIGdfcGFyYW1fc3BlY19zdHJpbmcgKCJ1c2VyLWFnZW50IiwgIlVzZXItQWdlbnQiLAorICAgICAgICAgICJWYWx1ZSBvZiB0aGUgVXNlci1BZ2VudCBIVFRQIHJlcXVlc3QgaGVhZGVyIGZpZWxkIiwKKyAgICAgICAgICBERUZBVUxUX1VTRVJfQUdFTlQsIEdfUEFSQU1fUkVBRFdSSVRFIHwgR19QQVJBTV9TVEFUSUNfU1RSSU5HUykpOworCisgIGdzdF9lbGVtZW50X2NsYXNzX3NldF9tZXRhZGF0YSAoZ3N0ZWxlbWVudF9jbGFzcywKKyAgICAgICJUZXN0IEhUVFAgc291cmNlIGVsZW1lbnQgZm9yIHVuaXQgdGVzdHMiLAorICAgICAgIlNvdXJjZS9OZXR3b3JrIiwKKyAgICAgICJVc2UgaW4gdW5pdCB0ZXN0cyIsICJBbGV4IEFzaGxleSA8YWxleC5hc2hsZXlAeW91dmlldy5jb20+Iik7CisgIGdzdF9lbGVtZW50X2NsYXNzX2FkZF9wYWRfdGVtcGxhdGUgKGdzdGVsZW1lbnRfY2xhc3MsCisgICAgICBnc3Rfc3RhdGljX3BhZF90ZW1wbGF0ZV9nZXQgKCZnc3RfZGFzaGRlbXV4X3Rlc3Rfc291cmNlX3RlbXBsYXRlKSk7CisKKyAgZ3N0YmFzZXNyY19jbGFzcy0+c3RhcnQgPSBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Rlc3RfaHR0cF9zcmNfc3RhcnQpOworICBnc3RiYXNlc3JjX2NsYXNzLT5zdG9wID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZXN0X2h0dHBfc3JjX3N0b3ApOworICBnc3RiYXNlc3JjX2NsYXNzLT5pc19zZWVrYWJsZSA9CisgICAgICBHU1RfREVCVUdfRlVOQ1BUUiAoZ3N0X3Rlc3RfaHR0cF9zcmNfaXNfc2Vla2FibGUpOworICBnc3RiYXNlc3JjX2NsYXNzLT5kb19zZWVrID0gR1NUX0RFQlVHX0ZVTkNQVFIgKGdzdF90ZXN0X2h0dHBfc3JjX2RvX3NlZWspOworICBnc3RiYXNlc3JjX2NsYXNzLT5nZXRfc2l6ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVzdF9odHRwX3NyY19nZXRfc2l6ZSk7CisgIGdzdGJhc2VzcmNfY2xhc3MtPmNyZWF0ZSA9IEdTVF9ERUJVR19GVU5DUFRSIChnc3RfdGVzdF9odHRwX3NyY19jcmVhdGUpOworCit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGVzdF9odHRwX3NyY19pbml0IChHc3RUZXN0SFRUUFNyYyAqIHNyYykKK3sKKyAgZ19tdXRleF9pbml0ICgmc3JjLT5tdXRleCk7CisgIHNyYy0+dXJpID0gTlVMTDsKKyAgbWVtc2V0ICgmc3JjLT5pbnB1dCwgMCwgc2l6ZW9mIChzcmMtPmlucHV0KSk7CisgIHNyYy0+Y29tcHJlc3MgPSBGQUxTRTsKKyAgc3JjLT5rZWVwX2FsaXZlID0gRkFMU0U7CisgIHNyYy0+aHR0cF9tZXRob2RfbmFtZSA9IE5VTEw7CisgIHNyYy0+aHR0cF9tZXRob2QgPSBNRVRIT0RfR0VUOworICBzcmMtPnVzZXJfYWdlbnQgPSBOVUxMOworICBzcmMtPnBvc2l0aW9uID0gMDsKKyAgc3JjLT5zZWdtZW50X2VuZCA9IDA7CisgIHNyYy0+aHR0cF9oZWFkZXJzX2V2ZW50ID0gTlVMTDsKKyAgc3JjLT5kdXJhdGlvbl9jaGFuZ2VkID0gRkFMU0U7CisgIGlmIChnc3RfdGVzdF9odHRwX3NyY19ibG9ja3NpemUpCisgICAgZ3N0X2Jhc2Vfc3JjX3NldF9ibG9ja3NpemUgKEdTVF9CQVNFX1NSQyAoc3JjKSwKKyAgICAgICAgZ3N0X3Rlc3RfaHR0cF9zcmNfYmxvY2tzaXplKTsKK30KKworc3RhdGljIHZvaWQKK2dzdF90ZXN0X2h0dHBfc3JjX3Jlc2V0X2lucHV0IChHc3RUZXN0SFRUUFNyYyAqIHNyYykKK3sKKyAgc3JjLT5pbnB1dC5jb250ZXh0ID0gTlVMTDsKKyAgc3JjLT5pbnB1dC5zaXplID0gMDsKKyAgc3JjLT5pbnB1dC5zdGF0dXNfY29kZSA9IDA7CisgIGlmIChzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycykgeworICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZSAoc3JjLT5pbnB1dC5yZXF1ZXN0X2hlYWRlcnMpOworICAgIHNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzID0gTlVMTDsKKyAgfQorICBpZiAoc3JjLT5pbnB1dC5yZXNwb25zZV9oZWFkZXJzKSB7CisgICAgZ3N0X3N0cnVjdHVyZV9mcmVlIChzcmMtPmlucHV0LnJlc3BvbnNlX2hlYWRlcnMpOworICAgIHNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycyA9IE5VTEw7CisgIH0KKyAgaWYgKHNyYy0+aHR0cF9oZWFkZXJzX2V2ZW50KSB7CisgICAgZ3N0X2V2ZW50X3VucmVmIChzcmMtPmh0dHBfaGVhZGVyc19ldmVudCk7CisgICAgc3JjLT5odHRwX2hlYWRlcnNfZXZlbnQgPSBOVUxMOworICB9CisgIGlmIChzcmMtPmV4dHJhX2hlYWRlcnMpIHsKKyAgICBnc3Rfc3RydWN0dXJlX2ZyZWUgKHNyYy0+ZXh0cmFfaGVhZGVycyk7CisgICAgc3JjLT5leHRyYV9oZWFkZXJzID0gTlVMTDsKKyAgfQorICBnX2ZyZWUgKHNyYy0+aHR0cF9tZXRob2RfbmFtZSk7CisgIHNyYy0+aHR0cF9tZXRob2RfbmFtZSA9IE5VTEw7CisgIGdfZnJlZSAoc3JjLT51c2VyX2FnZW50KTsKKyAgc3JjLT51c2VyX2FnZW50ID0gTlVMTDsKKyAgc3JjLT5kdXJhdGlvbl9jaGFuZ2VkID0gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitnc3RfdGVzdF9odHRwX3NyY19maW5hbGl6ZSAoR09iamVjdCAqIG9iamVjdCkKK3sKKyAgR3N0VGVzdEhUVFBTcmMgKnNyYzsKKworICBzcmMgPSBHU1RfVEVTVF9IVFRQX1NSQyAob2JqZWN0KTsKKworICBnX2ZyZWUgKHNyYy0+dXJpKTsKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfcmVzZXRfaW5wdXQgKHNyYyk7CisgIGdfbXV0ZXhfY2xlYXIgKCZzcmMtPm11dGV4KTsKKworICBHX09CSkVDVF9DTEFTUyAocGFyZW50X2NsYXNzKS0+ZmluYWxpemUgKG9iamVjdCk7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Rlc3RfaHR0cF9zcmNfc3RhcnQgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjOworICBHc3RTdHJ1Y3R1cmUgKmh0dHBfaGVhZGVyczsKKworICBzcmMgPSBHU1RfVEVTVF9IVFRQX1NSQyAoYmFzZXNyYyk7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+bXV0ZXgpOworICBnc3RfdGVzdF9odHRwX3NyY19yZXNldF9pbnB1dCAoc3JjKTsKKyAgaWYgKCFzcmMtPnVyaSkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBPUEVOX1JFQUQsICgoIk5vIFVSTCBzZXQuIikpLAorICAgICAgICAoIk1pc3NpbmcgbG9jYXRpb24gcHJvcGVydHkiKSk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgaWYgKCFnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja3MpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgT1BFTl9SRUFELAorICAgICAgICAoKCJDYWxsYmFja3Mgbm90IHJlZ2lzdGVyZWQuIikpLCAoIkNhbGxiYWNrcyBub3QgcmVnaXN0ZXJlZCIpKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorICBpZiAoIWdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrcy0+c3JjX3N0YXJ0KSB7CisgICAgR1NUX0VMRU1FTlRfRVJST1IgKHNyYywgUkVTT1VSQ0UsIE9QRU5fUkVBRCwKKyAgICAgICAgKCgic3JjX3N0YXJ0IGNhbGxiYWNrIG5vdCBkZWZpbmVkLiIpKSwKKyAgICAgICAgKCJzcmNfc3RhcnQgY2FsbGJhY2sgbm90IHJlZ2lzdGVyZWQiKSk7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgICByZXR1cm4gRkFMU0U7CisgIH0KKyAgaWYgKCFnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja3MtPnNyY19zdGFydCAoc3JjLCBzcmMtPnVyaSwgJnNyYy0+aW5wdXQsCisgICAgICAgICAgZ3N0X3Rlc3RfaHR0cF9zcmNfY2FsbGJhY2tfdXNlcl9kYXRhKSkgeworICAgIGlmIChzcmMtPmlucHV0LnN0YXR1c19jb2RlID09IDApIHsKKyAgICAgIHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPSA0MDQ7CisgICAgfQorICB9IGVsc2UgeworICAgIGlmIChzcmMtPmlucHV0LnN0YXR1c19jb2RlID09IDApIHsKKyAgICAgIHNyYy0+aW5wdXQuc3RhdHVzX2NvZGUgPSAyMDA7CisgICAgfQorICAgIHNyYy0+cG9zaXRpb24gPSAwOworICAgIHNyYy0+c2VnbWVudF9lbmQgPSBzcmMtPmlucHV0LnNpemU7CisgICAgZ3N0X2Jhc2Vfc3JjX3NldF9keW5hbWljX3NpemUgKGJhc2VzcmMsIEZBTFNFKTsKKyAgICBiYXNlc3JjLT5zZWdtZW50LmR1cmF0aW9uID0gc3JjLT5pbnB1dC5zaXplOworICAgIHNyYy0+ZHVyYXRpb25fY2hhbmdlZCA9IFRSVUU7CisgIH0KKyAgaHR0cF9oZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkgKCJodHRwLWhlYWRlcnMiKTsKKyAgZ3N0X3N0cnVjdHVyZV9zZXQgKGh0dHBfaGVhZGVycywgInVyaSIsIEdfVFlQRV9TVFJJTkcsIHNyYy0+dXJpLCBOVUxMKTsKKyAgaWYgKCFzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycykgeworICAgIHNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzID0gZ3N0X3N0cnVjdHVyZV9uZXdfZW1wdHkgKCJyZXF1ZXN0LWhlYWRlcnMiKTsKKyAgfQorICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkX3R5cGVkIChzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycywKKyAgICAgICAgICAiVXNlci1BZ2VudCIsIEdfVFlQRV9TVFJJTkcpKSB7CisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHNyYy0+aW5wdXQucmVxdWVzdF9oZWFkZXJzLAorICAgICAgICAiVXNlci1BZ2VudCIsIEdfVFlQRV9TVFJJTkcsCisgICAgICAgIHNyYy0+dXNlcl9hZ2VudCA/IHNyYy0+dXNlcl9hZ2VudCA6IERFRkFVTFRfVVNFUl9BR0VOVCwgTlVMTCk7CisgIH0KKyAgaWYgKCFnc3Rfc3RydWN0dXJlX2hhc19maWVsZF90eXBlZCAoc3JjLT5pbnB1dC5yZXF1ZXN0X2hlYWRlcnMsCisgICAgICAgICAgIkNvbm5lY3Rpb24iLCBHX1RZUEVfU1RSSU5HKSkgeworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycywKKyAgICAgICAgIkNvbm5lY3Rpb24iLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICBzcmMtPmtlZXBfYWxpdmUgPyAiS2VlcC1BbGl2ZSIgOiAiQ2xvc2UiLCBOVUxMKTsKKyAgfQorICBpZiAoc3JjLT5jb21wcmVzcworICAgICAgJiYgIWdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkX3R5cGVkIChzcmMtPmlucHV0LnJlcXVlc3RfaGVhZGVycywKKyAgICAgICAgICAiQWNjZXB0LUVuY29kaW5nIiwgR19UWVBFX1NUUklORykpIHsKKyAgICBnc3Rfc3RydWN0dXJlX3NldCAoc3JjLT5pbnB1dC5yZXF1ZXN0X2hlYWRlcnMsICJBY2NlcHQtRW5jb2RpbmciLAorICAgICAgICBHX1RZUEVfU1RSSU5HLCAiY29tcHJlc3MsIGd6aXAiLCBOVUxMKTsKKyAgfQorICBnc3Rfc3RydWN0dXJlX3NldCAoaHR0cF9oZWFkZXJzLCAicmVxdWVzdC1oZWFkZXJzIiwgR1NUX1RZUEVfU1RSVUNUVVJFLAorICAgICAgc3JjLT5pbnB1dC5yZXF1ZXN0X2hlYWRlcnMsIE5VTEwpOworICBpZiAoIXNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycykgeworICAgIHNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycyA9IGdzdF9zdHJ1Y3R1cmVfbmV3X2VtcHR5ICgicmVzcG9uc2UtaGVhZGVycyIpOworICB9CisgIGlmICghZ3N0X3N0cnVjdHVyZV9oYXNfZmllbGRfdHlwZWQgKHNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycywKKyAgICAgICAgICAiQ29ubmVjdGlvbiIsIEdfVFlQRV9TVFJJTkcpKSB7CisgICAgZ3N0X3N0cnVjdHVyZV9zZXQgKHNyYy0+aW5wdXQucmVzcG9uc2VfaGVhZGVycywKKyAgICAgICAgIkNvbm5lY3Rpb24iLCBHX1RZUEVfU1RSSU5HLAorICAgICAgICBzcmMtPmtlZXBfYWxpdmUgPyAia2VlcC1hbGl2ZSIgOiAiY2xvc2UiLCBOVUxMKTsKKyAgfQorICBpZiAoIWdzdF9zdHJ1Y3R1cmVfaGFzX2ZpZWxkX3R5cGVkIChzcmMtPmlucHV0LnJlc3BvbnNlX2hlYWRlcnMsCisgICAgICAgICAgIkRhdGUiLCBHX1RZUEVfU1RSSU5HKSkgeworICAgIEdEYXRlVGltZSAqbm93OworICAgIGdjaGFyICpkYXRlX3N0cjsKKworICAgIG5vdyA9IGdfZGF0ZV90aW1lX25ld19ub3dfbG9jYWwgKCk7CisgICAgZmFpbF91bmxlc3MgKG5vdyAhPSBOVUxMKTsKKyAgICBkYXRlX3N0ciA9IGdfZGF0ZV90aW1lX2Zvcm1hdCAobm93LCAiJWEsICVlICViICVZICVUICVaIik7CisgICAgZmFpbF91bmxlc3MgKGRhdGVfc3RyICE9IE5VTEwpOworICAgIGdzdF9zdHJ1Y3R1cmVfc2V0IChzcmMtPmlucHV0LnJlc3BvbnNlX2hlYWRlcnMsCisgICAgICAgICJEYXRlIiwgR19UWVBFX1NUUklORywgZGF0ZV9zdHIsIE5VTEwpOworICAgIGdfZnJlZSAoZGF0ZV9zdHIpOworICAgIGdfZGF0ZV90aW1lX3VucmVmIChub3cpOworICB9CisgIGdzdF9zdHJ1Y3R1cmVfc2V0IChodHRwX2hlYWRlcnMsICJyZXNwb25zZS1oZWFkZXJzIiwgR1NUX1RZUEVfU1RSVUNUVVJFLAorICAgICAgc3JjLT5pbnB1dC5yZXNwb25zZV9oZWFkZXJzLCBOVUxMKTsKKyAgaWYgKHNyYy0+aHR0cF9oZWFkZXJzX2V2ZW50KSB7CisgICAgZ3N0X2V2ZW50X3VucmVmIChzcmMtPmh0dHBfaGVhZGVyc19ldmVudCk7CisgIH0KKyAgc3JjLT5odHRwX2hlYWRlcnNfZXZlbnQgPQorICAgICAgZ3N0X2V2ZW50X25ld19jdXN0b20gKEdTVF9FVkVOVF9DVVNUT01fRE9XTlNUUkVBTV9TVElDS1ksIGh0dHBfaGVhZGVycyk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK2dzdF90ZXN0X2h0dHBfc3JjX3N0b3AgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjOworCisgIHNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChiYXNlc3JjKTsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5tdXRleCk7CisgIHNyYy0+cG9zaXRpb24gPSAwOworICBnc3RfdGVzdF9odHRwX3NyY19yZXNldF9pbnB1dCAoc3JjKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Rlc3RfaHR0cF9zcmNfaXNfc2Vla2FibGUgKEdzdEJhc2VTcmMgKiBiYXNlc3JjKQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjOworICBnYm9vbGVhbiByZXQ7CisKKyAgc3JjID0gR1NUX1RFU1RfSFRUUF9TUkMgKGJhc2VzcmMpOworICBnX211dGV4X2xvY2sgKCZzcmMtPm11dGV4KTsKKyAgLyogaWYgc2l6ZSBpcyBzZXQsIHdlIGNhbiBzZWVrICovCisgIHJldCA9IHNyYy0+aW5wdXQuc2l6ZSA+IDA7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Rlc3RfaHR0cF9zcmNfZG9fc2VlayAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsIEdzdFNlZ21lbnQgKiBzZWdtZW50KQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjID0gR1NUX1RFU1RfSFRUUF9TUkMgKGJhc2VzcmMpOworCisgIEdTVF9ERUJVRyAoImdzdF90ZXN0X2h0dHBfc3JjX2RvX3NlZWsgc3RhcnQgPSAlIiBHX0dVSU5UNjRfRk9STUFULAorICAgICAgc2VnbWVudC0+c3RhcnQpOworCisgIC8qCisgICAgIEFjY29yZGluZyB0byBSRkM3MjMzLCB0aGUgcmFuZ2UgaXMgaW5jbHVzaXZlOgorICAgICBUaGUgZmlyc3QtYnl0ZS1wb3MgdmFsdWUgaW4gYSBieXRlLXJhbmdlLXNwZWMgZ2l2ZXMgdGhlIGJ5dGUtb2Zmc2V0CisgICAgIG9mIHRoZSBmaXJzdCBieXRlIGluIGEgcmFuZ2UuICBUaGUgbGFzdC1ieXRlLXBvcyB2YWx1ZSBnaXZlcyB0aGUKKyAgICAgYnl0ZS1vZmZzZXQgb2YgdGhlIGxhc3QgYnl0ZSBpbiB0aGUgcmFuZ2U7IHRoYXQgaXMsIHRoZSBieXRlCisgICAgIHBvc2l0aW9ucyBzcGVjaWZpZWQgYXJlIGluY2x1c2l2ZS4gIEJ5dGUgb2Zmc2V0cyBzdGFydCBhdCB6ZXJvLgorICAgKi8KKworICBnX211dGV4X2xvY2sgKCZzcmMtPm11dGV4KTsKKyAgaWYgKCFzcmMtPnVyaSkgeworICAgIEdTVF9ERUJVRyAoImF0dGVtcHQgdG8gc2VlayBiZWZvcmUgVVJJIHNldCIpOworICAgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisgIGlmIChzcmMtPmlucHV0LnN0YXR1c19jb2RlID49IDIwMCAmJiBzcmMtPmlucHV0LnN0YXR1c19jb2RlIDwgMzAwKSB7CisgICAgaWYgKHNlZ21lbnQtPnN0YXJ0ID49IHNyYy0+aW5wdXQuc2l6ZSkgeworICAgICAgR1NUX0RFQlVHICgiYXR0ZW1wdCB0byBzZWVrIHRvICUiIEdfR1VJTlQ2NF9GT1JNQVQgIiBidXQgc2l6ZSBpcyAlIgorICAgICAgICAgIEdfR1VJTlQ2NF9GT1JNQVQsIHNlZ21lbnQtPnN0YXJ0LCBzcmMtPmlucHV0LnNpemUpOworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgICAgaWYgKHNlZ21lbnQtPnN0b3AgIT0gLTEgJiYgc2VnbWVudC0+c3RvcCA+IHNyYy0+aW5wdXQuc2l6ZSkgeworICAgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgICAgIHJldHVybiBGQUxTRTsKKyAgICB9CisgIH0gZWxzZSB7CisgICAgR1NUX0RFQlVHICgiQXR0ZW1wdCB0byBzZWVrIG9uIGEgVVJMIHRoYXQgd2lsbCBnZW5lcmF0ZSBIVFRQIGVycm9yICV1IiwKKyAgICAgICAgc3JjLT5pbnB1dC5zdGF0dXNfY29kZSk7CisgIH0KKyAgc3JjLT5wb3NpdGlvbiA9IHNlZ21lbnQtPnN0YXJ0OworCisgIGlmIChzZWdtZW50LT5zdG9wICE9IC0xKSB7CisgICAgc3JjLT5zZWdtZW50X2VuZCA9IHNlZ21lbnQtPnN0b3A7CisgIH0gZWxzZSB7CisgICAgc3JjLT5zZWdtZW50X2VuZCA9IHNyYy0+aW5wdXQuc2l6ZTsKKyAgfQorICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICByZXR1cm4gVFJVRTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGVzdF9odHRwX3NyY19nZXRfc2l6ZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsIGd1aW50NjQgKiBzaXplKQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjOworCisgIHNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChiYXNlc3JjKTsKKworICBnX211dGV4X2xvY2sgKCZzcmMtPm11dGV4KTsKKyAgLyogaWYgaXQgd2FzIHN0YXJ0ZWQsIHNpemUgaXMgc2V0ICovCisgIGlmIChzcmMtPnVyaSAmJiBzcmMtPmlucHV0LnN0YXR1c19jb2RlID49IDIwMCAmJiBzcmMtPmlucHV0LnN0YXR1c19jb2RlIDwgMzAwKSB7CisgICAgKnNpemUgPSBzcmMtPmlucHV0LnNpemU7CisgICAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgICByZXR1cm4gVFJVRTsKKyAgfQorICAvKiBjYW5ub3QgZ2V0IHRoZSBzaXplIGlmIGl0IHdhc24ndCBzdGFydGVkICovCisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgIHJldHVybiBGQUxTRTsKK30KKworc3RhdGljIEdzdEZsb3dSZXR1cm4KK2dzdF90ZXN0X2h0dHBfc3JjX2NyZWF0ZSAoR3N0QmFzZVNyYyAqIGJhc2VzcmMsIGd1aW50NjQgb2Zmc2V0LAorICAgIGd1aW50IGxlbmd0aCwgR3N0QnVmZmVyICoqIHJldGJ1ZikKK3sKKyAgR3N0VGVzdEhUVFBTcmMgKnNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChiYXNlc3JjKTsKKyAgZ3VpbnQgYnl0ZXNfcmVhZDsKKyAgR3N0Rmxvd1JldHVybiByZXQgPSBHU1RfRkxPV19PSzsKKyAgZ3VpbnQgYmxvY2tzaXplOworCisgIGZhaWxfdW5sZXNzIChnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja3MgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja3MtPnNyY19jcmVhdGUgIT0gTlVMTCk7CisKKyAgR1NUX09CSkVDVF9MT0NLIChzcmMpOworICBibG9ja3NpemUgPSBiYXNlc3JjLT5ibG9ja3NpemU7CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChzcmMpOworCisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+bXV0ZXgpOworICBHU1RfREVCVUcgKCJnc3RfdGVzdF9odHRwX3NyY19jcmVhdGUgZmVlZGluZyBmcm9tICUiIEdfR1VJTlQ2NF9GT1JNQVQsCisgICAgICBzcmMtPnBvc2l0aW9uKTsKKyAgaWYgKHNyYy0+dXJpID09IE5VTEwpIHsKKyAgICBHU1RfRUxFTUVOVF9FUlJPUiAoc3JjLCBSRVNPVVJDRSwgUkVBRCwgKE5VTEwpLCBHU1RfRVJST1JfU1lTVEVNKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorICBpZiAoc3JjLT5pbnB1dC5zdGF0dXNfY29kZSA8IDIwMCB8fCBzcmMtPmlucHV0LnN0YXR1c19jb2RlID49IDMwMCkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBOT1RfRk9VTkQsICgiJXMiLAorICAgICAgICAgICAgIkdlbmVyYXRlZCByZXF1ZXN0ZWQgZXJyb3IiKSwgKCIlcyAoJWQpLCBVUkw6ICVzLCBSZWRpcmVjdCB0bzogJXMiLAorICAgICAgICAgICAgIkdlbmVyYXRlZCByZXF1ZXN0ZWQgZXJyb3IiLCBzcmMtPmlucHV0LnN0YXR1c19jb2RlLCBzcmMtPnVyaSwKKyAgICAgICAgICAgIEdTVF9TVFJfTlVMTCAoTlVMTCkpKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfQorICBpZiAoc3JjLT5odHRwX21ldGhvZCA9PSBNRVRIT0RfSU5WQUxJRCkgeworICAgIEdTVF9FTEVNRU5UX0VSUk9SIChzcmMsIFJFU09VUkNFLCBSRUFELCAoIiVzIiwKKyAgICAgICAgICAgICJJbnZhbGlkIEhUVFAgbWV0aG9kIiksICgiJXMgKCVzKSwgVVJMOiAlcyIsCisgICAgICAgICAgICAiSW52YWxpZCBIVFRQIG1ldGhvZCIsIHNyYy0+aHR0cF9tZXRob2RfbmFtZSwgc3JjLT51cmkpKTsKKyAgICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICAgIHJldHVybiBHU1RfRkxPV19FUlJPUjsKKyAgfSBlbHNlIGlmIChzcmMtPmh0dHBfbWV0aG9kID09IE1FVEhPRF9IRUFEKSB7CisgICAgcmV0ID0gR1NUX0ZMT1dfRU9TOworICAgIGdvdG8gaHR0cF9ldmVudHM7CisgIH0KKyAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAob2Zmc2V0LCBzcmMtPnBvc2l0aW9uKTsKKyAgYnl0ZXNfcmVhZCA9IE1JTiAoKHNyYy0+c2VnbWVudF9lbmQgLSBzcmMtPnBvc2l0aW9uKSwgYmxvY2tzaXplKTsKKyAgaWYgKGJ5dGVzX3JlYWQgPT0gMCkgeworICAgIHJldCA9IEdTVF9GTE9XX0VPUzsKKyAgICBnb3RvIGh0dHBfZXZlbnRzOworICB9CisgIHJldCA9IGdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrcy0+c3JjX2NyZWF0ZSAoc3JjLAorICAgICAgb2Zmc2V0LCBieXRlc19yZWFkLCByZXRidWYsCisgICAgICBzcmMtPmlucHV0LmNvbnRleHQsIGdzdF90ZXN0X2h0dHBfc3JjX2NhbGxiYWNrX3VzZXJfZGF0YSk7CisgIGlmIChyZXQgIT0gR1NUX0ZMT1dfT0spIHsKKyAgICBnb3RvIGh0dHBfZXZlbnRzOworICB9CisKKyAgR1NUX0JVRkZFUl9PRkZTRVQgKCpyZXRidWYpID0gc3JjLT5wb3NpdGlvbjsKKyAgR1NUX0JVRkZFUl9PRkZTRVRfRU5EICgqcmV0YnVmKSA9IHNyYy0+cG9zaXRpb24gKyBieXRlc19yZWFkOworCisgIHNyYy0+cG9zaXRpb24gKz0gYnl0ZXNfcmVhZDsKK2h0dHBfZXZlbnRzOgorICBpZiAoc3JjLT5odHRwX2hlYWRlcnNfZXZlbnQpIHsKKyAgICBnc3RfcGFkX3B1c2hfZXZlbnQgKEdTVF9CQVNFX1NSQ19QQUQgKHNyYyksIHNyYy0+aHR0cF9oZWFkZXJzX2V2ZW50KTsKKyAgICBzcmMtPmh0dHBfaGVhZGVyc19ldmVudCA9IE5VTEw7CisgIH0KKyAgaWYgKHNyYy0+ZHVyYXRpb25fY2hhbmdlZCkgeworICAgIHNyYy0+ZHVyYXRpb25fY2hhbmdlZCA9IEZBTFNFOworICAgIGdzdF9lbGVtZW50X3Bvc3RfbWVzc2FnZSAoR1NUX0VMRU1FTlQgKHNyYyksCisgICAgICAgIGdzdF9tZXNzYWdlX25ld19kdXJhdGlvbl9jaGFuZ2VkIChHU1RfT0JKRUNUIChzcmMpKSk7CisgIH0KKworICBnX211dGV4X3VubG9jayAoJnNyYy0+bXV0ZXgpOworICByZXR1cm4gcmV0OworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Rlc3RfaHR0cF9zcmNfc2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIGNvbnN0IEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmMgPSBHU1RfVEVTVF9IVFRQX1NSQyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfVVNFUl9BR0VOVDoKKyAgICAgIGdfZnJlZSAoc3JjLT51c2VyX2FnZW50KTsKKyAgICAgIHNyYy0+dXNlcl9hZ2VudCA9IGdfdmFsdWVfZHVwX3N0cmluZyAodmFsdWUpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0VYVFJBX0hFQURFUlM6eworICAgICAgY29uc3QgR3N0U3RydWN0dXJlICpzID0gZ3N0X3ZhbHVlX2dldF9zdHJ1Y3R1cmUgKHZhbHVlKTsKKyAgICAgIGlmIChzcmMtPmV4dHJhX2hlYWRlcnMpCisgICAgICAgIGdzdF9zdHJ1Y3R1cmVfZnJlZSAoc3JjLT5leHRyYV9oZWFkZXJzKTsKKyAgICAgIHNyYy0+ZXh0cmFfaGVhZGVycyA9IHMgPyBnc3Rfc3RydWN0dXJlX2NvcHkgKHMpIDogTlVMTDsKKyAgICAgIGJyZWFrOworICAgIH0KKyAgICBjYXNlIFBST1BfQ09NUFJFU1M6CisgICAgICBzcmMtPmNvbXByZXNzID0gZ192YWx1ZV9nZXRfYm9vbGVhbiAodmFsdWUpOworICAgICAgR1NUX0RFQlVHICgiU2V0IGNvbXByZXNzPSVzIiwgc3JjLT5jb21wcmVzcyA/ICJUUlVFIiA6ICJGQUxTRSIpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBQUk9QX0tFRVBfQUxJVkU6CisgICAgICBzcmMtPmtlZXBfYWxpdmUgPSBnX3ZhbHVlX2dldF9ib29sZWFuICh2YWx1ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVUSE9EOgorICAgICAgZ19mcmVlIChzcmMtPmh0dHBfbWV0aG9kX25hbWUpOworICAgICAgc3JjLT5odHRwX21ldGhvZF9uYW1lID0gZ192YWx1ZV9kdXBfc3RyaW5nICh2YWx1ZSk7CisgICAgICBzcmMtPmh0dHBfbWV0aG9kID0gTUVUSE9EX0lOVkFMSUQ7CisgICAgICBmb3IgKGd1aW50IGkgPSAwOyBnc3RfdGVzdF9odHRwX3NyY19tZXRob2RzW2ldLm5hbWU7ICsraSkgeworICAgICAgICBpZiAoc3RyY21wIChnc3RfdGVzdF9odHRwX3NyY19tZXRob2RzW2ldLm5hbWUsCisgICAgICAgICAgICAgICAgc3JjLT5odHRwX21ldGhvZF9uYW1lKSA9PSAwKSB7CisgICAgICAgICAgc3JjLT5odHRwX21ldGhvZCA9IGdzdF90ZXN0X2h0dHBfc3JjX21ldGhvZHNbaV0ubWV0aG9kOworICAgICAgICAgIGJyZWFrOworICAgICAgICB9CisgICAgICB9CisgICAgICAvKiB3ZSBkb24ndCBjYXVzZSBhbiBlcnJvciBmb3IgYW4gaW52YWxpZCBtZXRob2QgYXQgdGhpcyBwb2ludCwKKyAgICAgICAgIGFzIEdzdFNvdXBIVFRQU3JjIGRvZXMgbm90IHVzZSB0aGUgaHR0cF9tZXRob2RfbmFtZSBzdHJpbmcgdW50aWwKKyAgICAgICAgIHRyeWluZyB0byBvcGVuIGEgY29ubmVjdGlvbi4KKyAgICAgICAqLworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIEdfT0JKRUNUX1dBUk5fSU5WQUxJRF9QUk9QRVJUWV9JRCAob2JqZWN0LCBwcm9wX2lkLCBwc3BlYyk7CisgICAgICBicmVhazsKKyAgfQorfQorCitzdGF0aWMgdm9pZAorZ3N0X3Rlc3RfaHR0cF9zcmNfZ2V0X3Byb3BlcnR5IChHT2JqZWN0ICogb2JqZWN0LCBndWludCBwcm9wX2lkLAorICAgIEdWYWx1ZSAqIHZhbHVlLCBHUGFyYW1TcGVjICogcHNwZWMpCit7CisgIEdzdFRlc3RIVFRQU3JjICpzcmMgPSBHU1RfVEVTVF9IVFRQX1NSQyAob2JqZWN0KTsKKworICBzd2l0Y2ggKHByb3BfaWQpIHsKKyAgICBjYXNlIFBST1BfVVNFUl9BR0VOVDoKKyAgICAgIGdfdmFsdWVfc2V0X3N0cmluZyAodmFsdWUsIHNyYy0+dXNlcl9hZ2VudCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfRVhUUkFfSEVBREVSUzoKKyAgICAgIGdzdF92YWx1ZV9zZXRfc3RydWN0dXJlICh2YWx1ZSwgc3JjLT5leHRyYV9oZWFkZXJzKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9DT01QUkVTUzoKKyAgICAgIGdfdmFsdWVfc2V0X2Jvb2xlYW4gKHZhbHVlLCBzcmMtPmNvbXByZXNzKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgUFJPUF9LRUVQX0FMSVZFOgorICAgICAgZ192YWx1ZV9zZXRfYm9vbGVhbiAodmFsdWUsIHNyYy0+a2VlcF9hbGl2ZSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIFBST1BfTUVUSE9EOgorICAgICAgZ192YWx1ZV9zZXRfc3RyaW5nICh2YWx1ZSwgc3JjLT5odHRwX21ldGhvZF9uYW1lKTsKKyAgICAgIGJyZWFrOworICAgIGRlZmF1bHQ6CisgICAgICBHX09CSkVDVF9XQVJOX0lOVkFMSURfUFJPUEVSVFlfSUQgKG9iamVjdCwgcHJvcF9pZCwgcHNwZWMpOworICAgICAgYnJlYWs7CisgIH0KK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGVzdF9odHRwX3NyY19zZXRfbG9jYXRpb24gKEdzdFRlc3RIVFRQU3JjICogc3JjLAorICAgIGNvbnN0IGdjaGFyICogdXJpLCBHRXJyb3IgKiogZXJyb3IpCit7CisgIGdfbXV0ZXhfbG9jayAoJnNyYy0+bXV0ZXgpOworICBnX2ZyZWUgKHNyYy0+dXJpKTsKKyAgc3JjLT51cmkgPSBnX3N0cmR1cCAodXJpKTsKKyAgZ19tdXRleF91bmxvY2sgKCZzcmMtPm11dGV4KTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBHc3RVUklUeXBlCitnc3RfdGVzdF9odHRwX3NyY191cmlfZ2V0X3R5cGUgKEdUeXBlIHR5cGUpCit7CisgIHJldHVybiBHU1RfVVJJX1NSQzsKK30KKworc3RhdGljIGNvbnN0IGdjaGFyICpjb25zdCAqCitnc3RfdGVzdF9odHRwX3NyY191cmlfZ2V0X3Byb3RvY29scyAoR1R5cGUgdHlwZSkKK3sKKyAgc3RhdGljIGNvbnN0IGdjaGFyICpwcm90b2NvbHNbXSA9IHsgImh0dHAiLCBOVUxMIH07CisKKyAgcmV0dXJuIHByb3RvY29sczsKK30KKworc3RhdGljIGdjaGFyICoKK2dzdF90ZXN0X2h0dHBfc3JjX3VyaV9nZXRfdXJpIChHc3RVUklIYW5kbGVyICogaGFuZGxlcikKK3sKKyAgR3N0VGVzdEhUVFBTcmMgKnNyYyA9IEdTVF9URVNUX0hUVFBfU1JDIChoYW5kbGVyKTsKKyAgZ2NoYXIgKnJldDsKKyAgZ19tdXRleF9sb2NrICgmc3JjLT5tdXRleCk7CisgIHJldCA9IGdfc3RyZHVwIChzcmMtPnVyaSk7CisgIGdfbXV0ZXhfdW5sb2NrICgmc3JjLT5tdXRleCk7CisgIHJldHVybiByZXQ7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorZ3N0X3Rlc3RfaHR0cF9zcmNfdXJpX3NldF91cmkgKEdzdFVSSUhhbmRsZXIgKiBoYW5kbGVyLCBjb25zdCBnY2hhciAqIHVyaSwKKyAgICBHRXJyb3IgKiogZXJyKQoreworICBHc3RUZXN0SFRUUFNyYyAqc3JjID0gR1NUX1RFU1RfSFRUUF9TUkMgKGhhbmRsZXIpOworCisgIHJldHVybiBnc3RfdGVzdF9odHRwX3NyY19zZXRfbG9jYXRpb24gKHNyYywgdXJpLCBlcnIpOworfQorCitzdGF0aWMgdm9pZAorZ3N0X3Rlc3RfaHR0cF9zcmNfdXJpX2hhbmRsZXJfaW5pdCAoZ3BvaW50ZXIgZ19pZmFjZSwgZ3BvaW50ZXIgaWZhY2VfZGF0YSkKK3sKKyAgR3N0VVJJSGFuZGxlckludGVyZmFjZSAqaWZhY2UgPSAoR3N0VVJJSGFuZGxlckludGVyZmFjZSAqKSBnX2lmYWNlOworCisgIGlmYWNlLT5nZXRfdHlwZSA9IGdzdF90ZXN0X2h0dHBfc3JjX3VyaV9nZXRfdHlwZTsKKyAgaWZhY2UtPmdldF9wcm90b2NvbHMgPSBnc3RfdGVzdF9odHRwX3NyY191cmlfZ2V0X3Byb3RvY29sczsKKyAgaWZhY2UtPmdldF91cmkgPSBnc3RfdGVzdF9odHRwX3NyY191cmlfZ2V0X3VyaTsKKyAgaWZhY2UtPnNldF91cmkgPSBnc3RfdGVzdF9odHRwX3NyY191cmlfc2V0X3VyaTsKK30KKworc3RhdGljIGdib29sZWFuCitnc3RfdGVzdF9odHRwX3NyY19wbHVnaW5faW5pdF9mdW5jIChHc3RQbHVnaW4gKiBwbHVnaW4sIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgUGx1Z2luSW5pdENvbnRleHQgKmNvbnRleHQgPSAoUGx1Z2luSW5pdENvbnRleHQgKikgdXNlcl9kYXRhOworICBnYm9vbGVhbiByZXQ7CisKKyAgcmV0ID0KKyAgICAgIGdzdF9lbGVtZW50X3JlZ2lzdGVyIChwbHVnaW4sIGNvbnRleHQtPm5hbWUsIGNvbnRleHQtPnJhbmssCisgICAgICBjb250ZXh0LT50eXBlKTsKKyAgcmV0dXJuIHJldDsKK30KKworZ2Jvb2xlYW4KK2dzdF90ZXN0X2h0dHBfc3JjX3JlZ2lzdGVyX3BsdWdpbiAoR3N0UmVnaXN0cnkgKiByZWdpc3RyeSwgY29uc3QgZ2NoYXIgKiBuYW1lKQoreworICBnYm9vbGVhbiByZXQ7CisgIFBsdWdpbkluaXRDb250ZXh0IGNvbnRleHQ7CisKKyAgY29udGV4dC5uYW1lID0gbmFtZTsKKyAgY29udGV4dC5yYW5rID0gR1NUX1JBTktfUFJJTUFSWSArIDE7CisgIGNvbnRleHQudHlwZSA9IEdTVF9UWVBFX1RFU1RfSFRUUF9TUkM7CisgIHJldCA9IGdzdF9wbHVnaW5fcmVnaXN0ZXJfc3RhdGljX2Z1bGwgKEdTVF9WRVJTSU9OX01BSk9SLCAgICAgLyogdmVyc2lvbiAqLworICAgICAgR1NUX1ZFUlNJT05fTUlOT1IsICAgICAgICAvKiB2ZXJzaW9uICovCisgICAgICBuYW1lLCAgICAgICAgICAgICAgICAgICAgIC8qIG5hbWUgKi8KKyAgICAgICJSZXBsYWNlcyBhIHNvdXBodHRwc3JjIHBsdWdpbiBhbmQgcmV0dXJucyBwcmVkZWZpbmVkIGRhdGEuIiwgICAgIC8qIGRlc2NyaXB0aW9uICovCisgICAgICBnc3RfdGVzdF9odHRwX3NyY19wbHVnaW5faW5pdF9mdW5jLCAgICAgICAvKiBpbml0IGZ1bmN0aW9uICovCisgICAgICAiMC4wLjAiLCAgICAgICAgICAgICAgICAgIC8qIHZlcnNpb24gc3RyaW5nICovCisgICAgICBHU1RfTElDRU5TRV9VTktOT1dOLCAgICAgIC8qIGxpY2Vuc2UgKi8KKyAgICAgIF9fRklMRV9fLCAgICAgICAgICAgICAgICAgLyogc291cmNlICovCisgICAgICBHU1RfUEFDS0FHRV9OQU1FLCAgICAgICAgIC8qIHBhY2thZ2UgKi8KKyAgICAgIEdTVF9QQUNLQUdFX09SSUdJTiwgICAgICAgLyogb3JpZ2luICovCisgICAgICAmY29udGV4dCAgICAgICAgICAgICAgICAgIC8qIHVzZXJfZGF0YSAqLworICAgICAgKTsKKyAgcmV0dXJuIHJldDsKK30KKwordm9pZAorZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKGNvbnN0IEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzICoKKyAgICBjYWxsYmFja3MsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgZ3N0X3Rlc3RfaHR0cF9zcmNfY2FsbGJhY2tzID0gY2FsbGJhY2tzOworICBnc3RfdGVzdF9odHRwX3NyY19jYWxsYmFja191c2VyX2RhdGEgPSB1c2VyX2RhdGE7Cit9CisKK3ZvaWQKK2dzdF90ZXN0X2h0dHBfc3JjX3NldF9kZWZhdWx0X2Jsb2Nrc2l6ZSAoZ3VpbnQgYmxvY2tzaXplKQoreworICBnc3RfdGVzdF9odHRwX3NyY19ibG9ja3NpemUgPSBibG9ja3NpemU7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9lbGVtZW50cy90ZXN0X2h0dHBfc3JjLmggYi90ZXN0cy9jaGVjay9lbGVtZW50cy90ZXN0X2h0dHBfc3JjLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjExNjFhZgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3Rlc3RfaHR0cF9zcmMuaApAQCAtMCwwICsxLDEzMiBAQAorLyogSFRUUCBzb3VyY2UgZWxlbWVudCBmb3IgdXNlIGluIHRlc3RzCisgKgorICogQ29weXJpZ2h0IChjKSA8MjAxNT4gWW91VmlldyBUViBMdGQKKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZuZGVmIF9fR1NUX1RFU1RfSFRUUF9TUkNfSF9fCisjZGVmaW5lIF9fR1NUX1RFU1RfSFRUUF9TUkNfSF9fCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisKK0dfQkVHSU5fREVDTFMKKworI2RlZmluZSBHU1RfVFlQRV9URVNUX0hUVFBfU1JDICAgICAgICAgICAgKGdzdF90ZXN0X2h0dHBfc3JjX2dldF90eXBlICgpKQorCisvKiBzdHJ1Y3R1cmUgdXNlZCBieSBzcmNfc3RhcnQgZnVuY3Rpb24gdG8gY29uZmlndXJlIHRoZQorICogR3N0VGVzdEhUVFBTcmMgcGx1Z2luLgorICogSXQgc3BlY2lmaWVzIGluZm9ybWF0aW9uIGFib3V0IGEgZ2l2ZW4gVVJJLgorICovCit0eXBlZGVmIHN0cnVjdCBfR3N0VGVzdEhUVFBTcmNJbnB1dAoreworICBncG9pbnRlciBjb250ZXh0OyAvKiBvcGFxdWUgcG9pbnRlciB0aGF0IGNhbiBiZSB1c2VkIGluIGNhbGxiYWNrcyAqLworICBndWludDY0IHNpemU7IC8qIHNpemUgb2YgcmVzb3VyY2UsIGluIGJ5dGVzICovCisgIEdzdFN0cnVjdHVyZSAqcmVxdWVzdF9oZWFkZXJzOworICBHc3RTdHJ1Y3R1cmUgKnJlc3BvbnNlX2hlYWRlcnM7CisgIGd1aW50IHN0YXR1c19jb2RlOyAvKiBIVFRQIHN0YXR1cyBjb2RlICovCit9IEdzdFRlc3RIVFRQU3JjSW5wdXQ7CisKKy8qIE9wYXF1ZSBzdHJ1Y3R1cmUgdXNlZCBieSBHc3RUZXN0SFRUUFNyYyAqLwordHlwZWRlZiBzdHJ1Y3QgX0dzdFRlc3RIVFRQU3JjIEdzdFRlc3RIVFRQU3JjOworCit0eXBlZGVmIHN0cnVjdCBfR3N0VGVzdEhUVFBTcmNDYWxsYmFja3MgeworICAvKioKKyAgICogc3JjX3N0YXJ0OgorICAgKiBAc3JjOiBUaGUgI0dzdFRlc3RIVFRQU3JjIGNhbGxpbmcgdGhpcyBjYWxsYmFjaworICAgKiBAdXJpOiBUaGUgVVJJIHRoYXQgaXMgYmVpbmcgcmVxdWVzdGVkCisgICAqIEBpbnB1dF9kYXRhOiAob3V0KSBUaGUgaW1wbGVtZW50YXRpb24gb2YgdGhpcyBjYWxsYmFjayBpcworICAgKiByZXNwb25zaWJsZSBmb3IgZmlsbGluZyBpbiB0aGlzICNHc3RUZXN0SFRUUFNyY0lucHV0CisgICAqIHdpdGggdGhlIGFwcHJvcHJpYXRlIGluZm9ybWF0aW9uLCByZXR1cm4gcmV0dXJuaW5nICVUUlVFLgorICAgKiBJZiByZXR1cm5pbmcgJUZBTFNFLCBvbmx5IEdzdFRlc3RIVFRQU3JjSW5wdXQ6OnN0YXR1c19jb2RlCisgICAqIHNob3VsZCBiZSB1cGRhdGVkLgorICAgKiBSZXR1cm5zOiAlVFJVRSBpZiBHc3RUZXN0SFRUUFNyYyBzaG91bGQgcmVzcG9uZCB0byB0aGlzIFVSSSwKKyAgICogdXNpbmcgdGhlIHN1cHBsaWVkIGlucHV0X2RhdGEuCisgICAqCisgICAqIHNyY19zdGFydCBpcyB1c2VkIHRvICJvcGVuIiB0aGUgZ2l2ZW4gVVJJLiBUaGUgY2FsbGJhY2sgbXVzdCByZXR1cm4KKyAgICogJVRSVUUgdG8gc2ltdWxhdGUgYSBzdWNjZXNzLCBhbmQgc2V0IGFwcHJvcHJpYXRlIGZpZWxkcyBpbiBpbnB1dF9kYXRhLgorICAgKiBSZXR1cm5pbmcgJUZBTFNFIGluZGljYXRlcyB0aGF0IHRoZSByZXF1ZXN0IFVSSSBpcyBub3QgZm91bmQuCisgICAqIEluIHRoaXMgc2l0dWF0aW9uIEdzdFRlc3RIVFRQU3JjIHdpbGwgY2F1c2UgdGhlIGFwcHJvcHJpYXRlCisgICAqIDQwNCBlcnJvciB0byBiZSBwb3N0ZWQgdG8gdGhlIGJ1cyAKKyAgICovCisgIGdib29sZWFuICgqc3JjX3N0YXJ0KShHc3RUZXN0SFRUUFNyYyAqc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgZ2NoYXIgKnVyaSwKKyAgICAgICAgICAgICAgICAgICAgICAgIEdzdFRlc3RIVFRQU3JjSW5wdXQgKmlucHV0X2RhdGEsCisgICAgICAgICAgICAgICAgICAgICAgICBncG9pbnRlciB1c2VyX2RhdGEpOworICAvKioKKyAgICogc3JjX2NyZWF0ZToKKyAgICogQHNyYzogdGhlICNHc3RUZXN0SFRUUFNyYyBjYWxsaW5nIHRoaXMgY2FsbGJhY2sKKyAgICogQG9mZnNldDogdGhlIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcmVzb3VyY2UKKyAgICogQGxlbmd0aDogcmVxdWVzdGVkIG51bWJlciBvZiBieXRlcworICAgKiBAcmV0YnVmOiAob3V0KSB1c2VkIHRvIHJldHVybiBhIG5ld2x5IGFsbG9jYXRlZCAjR3N0QnVmZmVyCisgICAqIEBjb250ZXh0OiAoYWxsb3cgbm9uZSkgdGhlIHZhbHVlIG9mIHRoZSBjb250ZXh0IGZpZWxkCisgICAqIGluICNHc3RUZXN0SFRUUFNyY0lucHV0LgorICAgKiBAdXNlcl9kYXRhOiB0aGUgdmFsdWUgb2YgdXNlcl9kYXRhIHByb3ZpZGVkIHRvIAorICAgKiAjZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MKKyAgICogUmV0dXJuczogJUdTVF9GTE9XX09LIHRvIGluZGljYXRlIHN1Y2Nlc3MsIG9yIHNvbWUgb3RoZXIgdmFsdWUgb2YKKyAgICogI0dzdEZsb3dSZXR1cm4gdG8gaW5kaWNhdGUgRU9TIG9yIGVycm9yLgorICAgKgorICAgKiBUaGUgc3JjX2NyZWF0ZSBmdW5jdGlvbiBpcyB1c2VkIHRvIGNyZWF0ZSBhICNHc3RCdWZmZXIgZm9yCisgICAqIHNpbXVsYXRpbmcgdGhlIGRhdGEgdGhhdCBpcyByZXR1cm5lZCB3aGVuIGFjY2Vzc2luZyB0aGlzCisgICAqICJvcGVuIiBzdHJlYW0uIEl0IGNhbiBhbHNvIGJlIHVzZWQgdG8gc2ltdWxhdGUgdmFyaW91cyBlcnJvcgorICAgKiBjb25kaXRpb25zIGJ5IHJldHVybmluZyBzb21ldGhpbmcgb3RoZXIgdGhhbiAlR1NUX0ZMT1dfT0sKKyAgICovCisgIEdzdEZsb3dSZXR1cm4gKCpzcmNfY3JlYXRlKShHc3RUZXN0SFRUUFNyYyAqc3JjLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3VpbnQ2NCBvZmZzZXQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndWludCBsZW5ndGgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHc3RCdWZmZXIgKiogcmV0YnVmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgY29udGV4dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwb2ludGVyIHVzZXJfZGF0YSk7Cit9IEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzOworCitHVHlwZSBnc3RfdGVzdF9odHRwX3NyY19nZXRfdHlwZSAodm9pZCk7CisKKy8qKgorICogZ3N0X3Rlc3RfaHR0cF9zcmNfcmVnaXN0ZXJfcGx1Z2luOgorICogQHJlZ2lzdHJ5OiB0aGUgI0dzdFJlZ2lzdHJ5IHRvIHVzZSBmb3IgcmVnaXN0ZXJpbmcgdGhpcyBwbHVnaW4KKyAqIEBuYW1lOiB0aGUgbmFtZSB0byB1c2UgZm9yIHRoaXMgcGx1Z2luCisgKiBSZXR1cm5zOiB0cnVlIGlmIHN1Y2Nlc3NmdWwKKyAqCisgKiBSZWdpc3RlcnMgdGhpcyBwbHVnaW4gd2l0aCB0aGUgR3N0UmVnaXRyeSB1c2luZyB0aGUgZ2l2ZW4gbmFtZS4gSXQgd2lsbAorICogYmUgZ2l2ZW4gYSBoaWdoIHJhbmssIHNvIHRoYXQgaXQgd2lsbCBiZSBwaWNrZWQgaW4gcHJlZmVyZW5jZSB0byBhbnkKKyAqIG90aGVyIGVsZW1lbnQgdGhhdCBpbXBsZW1lbnRzICNHc3RVUklIYW5kbGVyLgorICovCitnYm9vbGVhbiBnc3RfdGVzdF9odHRwX3NyY19yZWdpc3Rlcl9wbHVnaW4gKEdzdFJlZ2lzdHJ5ICogcmVnaXN0cnksIGNvbnN0IGdjaGFyICogbmFtZSk7CisKKy8qKgorICogZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3M6CisgKiBAY2FsbGJhY2tzOiB0aGUgI0dzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzIGNhbGxiYWNrIGZ1bmN0aW9ucyB0aGF0IHdpbGwKKyAqIGJlIGNhbGxlZCBldmVyeSB0aW1lIHRoaXMgZWxlbWVudCBpcyBhc2tlZCB0byBvcGVuIGEgVVJJIG9yIHByb3ZpZGUgZGF0YQorICogZm9yIGFuIG9wZW4gVVJJLgorICogQHVzZXJfZGF0YTogYSBwb2ludGVyIHRoYXQgaXMgcGFzc2VkIHRvIGV2ZXJ5IGNhbGxiYWNrCisgKi8KK3ZvaWQgZ3N0X3Rlc3RfaHR0cF9zcmNfaW5zdGFsbF9jYWxsYmFja3MgKGNvbnN0IEdzdFRlc3RIVFRQU3JjQ2FsbGJhY2tzICpjYWxsYmFja3MsIGdwb2ludGVyIHVzZXJfZGF0YSk7CisKKy8qKgorICogZ3N0X3Rlc3RfaHR0cF9zcmNfc2V0X2RlZmF1bHRfYmxvY2tzaXplOgorICogQGJsb2Nrc2l6ZTogdGhlIGRlZmF1bHQgYmxvY2sgc2l6ZSB0byB1c2UgKDA9dXNlICNHc3RCYXNlU3JjIGRlZmF1bHQpCisgKgorICogU2V0IHRoZSBkZWZhdWx0IGJsb2Nrc2l6ZSB0aGF0IHdpbGwgYmUgdXNlZCBieSBpbnN0YW5jZXMgb2YKKyAqICNHc3RUZXN0SFRUUFNyYy4gSXQgc3BlY2lmaWVzIHRoZSBzaXplIChpbiBieXRlcykgdGhhdCB3aWxsIGJlCisgKiByZXR1cm5lZCBpbiBlYWNoICNHc3RCdWZmZXIuIFRoaXMgZGVmYXVsdCBjYW4gYmUgb3ZlcnJpZGRlbgorICogYnkgYW4gaW5zdGFuY2Ugb2YgI0dzdFRlc3RIVFRQU3JjIHVzaW5nIHRoZSAiYmxvY2tzaXplIiBwcm9wZXJ0eQorICogb2YgI0dzdEJhc2VTcmMKKyAqLwordm9pZCBnc3RfdGVzdF9odHRwX3NyY19zZXRfZGVmYXVsdF9ibG9ja3NpemUgKGd1aW50IGJsb2Nrc2l6ZSk7CisKK0dfRU5EX0RFQ0xTCisKKyNlbmRpZiAvKiBfX0dTVF9URVNUX0hUVFBfU1JDX0hfXyAqLwpkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMgYi90ZXN0cy9jaGVjay9lbGVtZW50cy92aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDU3MzkwCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svZWxlbWVudHMvdmlkZW9mcmFtZS1hdWRpb2xldmVsLmMKQEAgLTAsMCArMSw2MzYgQEAKKy8qIEdTdHJlYW1lciB1bml0IHRlc3QgZm9yIHZpZGVvZnJhbWUtYXVkaW9sZXZlbAorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNSBWaXZpYSBOaWtvbGFpZG91IDx2aXZpYUB0b29sc29uYWlyLmNvbT4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisgKiB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKKyAqIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBsaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZQorICogRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdCwgRmlmdGggRmxvb3IsCisgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorIyBpbmNsdWRlIDxjb25maWcuaD4KKyNlbmRpZgorCisvKiBzdXBwcmVzcyB3YXJuaW5ncyBmb3IgZGVwcmVjYXRlZCBBUEkgc3VjaCBhcyBHVmFsdWVBcnJheQorICogd2l0aCBuZXdlciBHTGliIHZlcnNpb25zICg+PSAyLjMxLjApICovCisjZGVmaW5lIEdMSUJfRElTQUJMRV9ERVBSRUNBVElPTl9XQVJOSU5HUworCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisjaW5jbHVkZSA8Z3N0L2F1ZGlvL2F1ZGlvLmg+CisKK3N0YXRpYyBnYm9vbGVhbiBnb3RfZW9zOworc3RhdGljIGd1aW50IGF1ZGlvX2J1ZmZlcl9jb3VudCwgdmlkZW9fYnVmZmVyX2NvdW50Oworc3RhdGljIEdzdFNlZ21lbnQgY3VycmVudF9hdWRpb19zZWdtZW50LCBjdXJyZW50X3ZpZGVvX3NlZ21lbnQ7CitzdGF0aWMgZ3VpbnQgbnVtX21zZ3M7CitzdGF0aWMgR1F1ZXVlIHZfdGltZXN0YW1wX3EsIG1zZ190aW1lc3RhbXBfcTsKKworc3RhdGljIGd1aW50IG5fYWJ1ZmZlcnMsIG5fdmJ1ZmZlcnM7CitzdGF0aWMgZ3VpbnQgY2hhbm5lbHMsIGZpbGxfdmFsdWU7CitzdGF0aWMgZ2RvdWJsZSBleHBlY3RlZF9ybXM7CitzdGF0aWMgZ2Jvb2xlYW4gYXVkaW9kZWxheSwgdmlkZW9kZWxheSwgcGVyX2NoYW5uZWwsIGxvbmdfdmlkZW87CitzdGF0aWMgZ2Jvb2xlYW4gZWFybHlfdmlkZW8sIGxhdGVfdmlkZW87CitzdGF0aWMgZ2Jvb2xlYW4gdmlkZW9fZ2FwcywgdmlkZW9fb3ZlcmxhcHM7CitzdGF0aWMgZ2Jvb2xlYW4gYXVkaW9fbm9uZGlzY29udCwgYXVkaW9fZHJpZnQ7CisKK3N0YXRpYyBndWludCBmaWxsX3ZhbHVlX3Blcl9jaGFubmVsW10gPSB7IDAsIDEgfTsKK3N0YXRpYyBnZG91YmxlIGV4cGVjdGVkX3Jtc19wZXJfY2hhbm5lbFtdID0geyAwLCAwLjAwNzgxMjUgfTsKKworc3RhdGljIHZvaWQKK3NldF9kZWZhdWx0X3BhcmFtcyAodm9pZCkKK3sKKyAgbl9hYnVmZmVycyA9IDQwOworICBuX3ZidWZmZXJzID0gMTU7CisgIGNoYW5uZWxzID0gMjsKKyAgZXhwZWN0ZWRfcm1zID0gMC4wMDc4MTI1OworICBmaWxsX3ZhbHVlID0gMTsKKyAgYXVkaW9kZWxheSA9IEZBTFNFOworICB2aWRlb2RlbGF5ID0gRkFMU0U7CisgIHBlcl9jaGFubmVsID0gRkFMU0U7CisgIGxvbmdfdmlkZW8gPSBGQUxTRTsKKyAgdmlkZW9fZ2FwcyA9IEZBTFNFOworICB2aWRlb19vdmVybGFwcyA9IEZBTFNFOworICBhdWRpb19ub25kaXNjb250ID0gRkFMU0U7CisgIGF1ZGlvX2RyaWZ0ID0gRkFMU0U7CisgIGVhcmx5X3ZpZGVvID0gRkFMU0U7CisgIGxhdGVfdmlkZW8gPSBGQUxTRTsKK307CisKK3N0YXRpYyBHc3RGbG93UmV0dXJuCitvdXRwdXRfYWNoYWluIChHc3RQYWQgKiBwYWQsIEdzdE9iamVjdCAqIHBhcmVudCwgR3N0QnVmZmVyICogYnVmZmVyKQoreworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wOworICBndWludDggYjsKKyAgZ2Jvb2xlYW4gYXVkaW9faml0dGVyID0gYXVkaW9fbm9uZGlzY29udCB8fCBhdWRpb19kcmlmdCB8fCBlYXJseV92aWRlbzsKKworICB0aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKTsKKyAgaWYgKCFhdWRpb19qaXR0ZXIpCisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludDY0ICh0aW1lc3RhbXAsCisgICAgICAgIChhdWRpb19idWZmZXJfY291bnQgJSBuX2FidWZmZXJzKSAqIDEgKiBHU1RfU0VDT05EKTsKKyAgdGltZXN0YW1wID0KKyAgICAgIGdzdF9zZWdtZW50X3RvX3N0cmVhbV90aW1lICgmY3VycmVudF9hdWRpb19zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCisgICAgICB0aW1lc3RhbXApOworICBpZiAoIWF1ZGlvX2ppdHRlcikKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50NjQgKHRpbWVzdGFtcCwKKyAgICAgICAgKGF1ZGlvX2J1ZmZlcl9jb3VudCAlIG5fYWJ1ZmZlcnMpICogMSAqIEdTVF9TRUNPTkQpOworCisgIHRpbWVzdGFtcCA9IEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWZmZXIpOworICB0aW1lc3RhbXAgPQorICAgICAgZ3N0X3NlZ21lbnRfdG9fcnVubmluZ190aW1lICgmY3VycmVudF9hdWRpb19zZWdtZW50LCBHU1RfRk9STUFUX1RJTUUsCisgICAgICB0aW1lc3RhbXApOworICBpZiAoIWF1ZGlvX2ppdHRlcikKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50NjQgKHRpbWVzdGFtcCwgYXVkaW9fYnVmZmVyX2NvdW50ICogMSAqIEdTVF9TRUNPTkQpOworCisgIGdzdF9idWZmZXJfZXh0cmFjdCAoYnVmZmVyLCAwLCAmYiwgMSk7CisKKyAgaWYgKHBlcl9jaGFubmVsKSB7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoYiwgZmlsbF92YWx1ZV9wZXJfY2hhbm5lbFswXSk7CisgIH0gZWxzZSB7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoYiwgZmlsbF92YWx1ZSk7CisgIH0KKworICBhdWRpb19idWZmZXJfY291bnQrKzsKKyAgZ3N0X2J1ZmZlcl91bnJlZiAoYnVmZmVyKTsKKyAgcmV0dXJuIEdTVF9GTE9XX09LOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK291dHB1dF9hZXZlbnQgKEdzdFBhZCAqIHBhZCwgR3N0T2JqZWN0ICogcGFyZW50LCBHc3RFdmVudCAqIGV2ZW50KQoreworICBzd2l0Y2ggKEdTVF9FVkVOVF9UWVBFIChldmVudCkpIHsKKyAgICBjYXNlIEdTVF9FVkVOVF9GTFVTSF9TVE9QOgorICAgICAgZ3N0X3NlZ21lbnRfaW5pdCAoJmN1cnJlbnRfYXVkaW9fc2VnbWVudCwgR1NUX0ZPUk1BVF9VTkRFRklORUQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfU0VHTUVOVDoKKyAgICAgIGdzdF9ldmVudF9jb3B5X3NlZ21lbnQgKGV2ZW50LCAmY3VycmVudF9hdWRpb19zZWdtZW50KTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgR1NUX0VWRU5UX0VPUzoKKyAgICAgIGdvdF9lb3MgPSBUUlVFOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgZ3N0X2V2ZW50X3VucmVmIChldmVudCk7CisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0Rmxvd1JldHVybgorb3V0cHV0X3ZjaGFpbiAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEJ1ZmZlciAqIGJ1ZmZlcikKK3sKKyAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcDsKKyAgZ3VpbnQ4IGI7CisgIGdib29sZWFuIGppdHRlciA9IHZpZGVvX2dhcHMgfHwgdmlkZW9fb3ZlcmxhcHMgfHwgbGF0ZV92aWRlbzsKKworICB0aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKTsKKyAgaWYgKCFqaXR0ZXIpCisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludDY0ICh0aW1lc3RhbXAsCisgICAgICAgICh2aWRlb19idWZmZXJfY291bnQgJSBuX3ZidWZmZXJzKSAqIDI1ICogR1NUX01TRUNPTkQpOworICB0aW1lc3RhbXAgPQorICAgICAgZ3N0X3NlZ21lbnRfdG9fc3RyZWFtX3RpbWUgKCZjdXJyZW50X3ZpZGVvX3NlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwKKyAgICAgIHRpbWVzdGFtcCk7CisgIGlmICghaml0dGVyKQorICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQ2NCAodGltZXN0YW1wLAorICAgICAgICAodmlkZW9fYnVmZmVyX2NvdW50ICUgbl92YnVmZmVycykgKiAyNSAqIEdTVF9NU0VDT05EKTsKKworICB0aW1lc3RhbXAgPSBHU1RfQlVGRkVSX1RJTUVTVEFNUCAoYnVmZmVyKTsKKyAgdGltZXN0YW1wID0KKyAgICAgIGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSAoJmN1cnJlbnRfdmlkZW9fc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FLAorICAgICAgdGltZXN0YW1wKTsKKyAgaWYgKCFqaXR0ZXIpCisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludDY0ICh0aW1lc3RhbXAsIHZpZGVvX2J1ZmZlcl9jb3VudCAqIDI1ICogR1NUX01TRUNPTkQpOworCisgIGdzdF9idWZmZXJfZXh0cmFjdCAoYnVmZmVyLCAwLCAmYiwgMSk7CisgIGlmICghaml0dGVyKQorICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGIsIHZpZGVvX2J1ZmZlcl9jb3VudCAlIG5fdmJ1ZmZlcnMpOworCisgIHZpZGVvX2J1ZmZlcl9jb3VudCsrOworICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOworICByZXR1cm4gR1NUX0ZMT1dfT0s7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorb3V0cHV0X3ZldmVudCAoR3N0UGFkICogcGFkLCBHc3RPYmplY3QgKiBwYXJlbnQsIEdzdEV2ZW50ICogZXZlbnQpCit7CisgIHN3aXRjaCAoR1NUX0VWRU5UX1RZUEUgKGV2ZW50KSkgeworICAgIGNhc2UgR1NUX0VWRU5UX0ZMVVNIX1NUT1A6CisgICAgICBnc3Rfc2VnbWVudF9pbml0ICgmY3VycmVudF92aWRlb19zZWdtZW50LCBHU1RfRk9STUFUX1VOREVGSU5FRCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9FVkVOVF9TRUdNRU5UOgorICAgICAgZ3N0X2V2ZW50X2NvcHlfc2VnbWVudCAoZXZlbnQsICZjdXJyZW50X3ZpZGVvX3NlZ21lbnQpOworICAgICAgYnJlYWs7CisgICAgY2FzZSBHU1RfRVZFTlRfRU9TOgorICAgICAgZ290X2VvcyA9IFRSVUU7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgYnJlYWs7CisgIH0KKworICBnc3RfZXZlbnRfdW5yZWYgKGV2ZW50KTsKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBncG9pbnRlcgorcHVzaF9hYnVmZmVycyAoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgR3N0U2VnbWVudCBzZWdtZW50OworICBHc3RQYWQgKnBhZCA9IGRhdGE7CisgIGdpbnQgaSwgaiwgazsKKyAgR3N0Q2xvY2tUaW1lIHRpbWVzdGFtcCA9IDA7CisgIEdzdEF1ZGlvSW5mbyBpbmZvOworICBHc3RDYXBzICpjYXBzOworICBndWludCBidWZfc2l6ZSA9IDEwMDA7CisKKyAgaWYgKGF1ZGlvZGVsYXkpCisgICAgZ191c2xlZXAgKDIwMDApOworCisgIGlmIChlYXJseV92aWRlbykKKyAgICB0aW1lc3RhbXAgPSA1MCAqIEdTVF9NU0VDT05EOworCisgIGdzdF9wYWRfc2VuZF9ldmVudCAocGFkLCBnc3RfZXZlbnRfbmV3X3N0cmVhbV9zdGFydCAoInRlc3QiKSk7CisKKyAgZ3N0X2F1ZGlvX2luZm9fc2V0X2Zvcm1hdCAoJmluZm8sIEdTVF9BVURJT19GT1JNQVRfUzgsIGJ1Zl9zaXplLCBjaGFubmVscywKKyAgICAgIE5VTEwpOworICBjYXBzID0gZ3N0X2F1ZGlvX2luZm9fdG9fY2FwcyAoJmluZm8pOworICBnc3RfcGFkX3NlbmRfZXZlbnQgKHBhZCwgZ3N0X2V2ZW50X25ld19jYXBzIChjYXBzKSk7CisgIGdzdF9jYXBzX3VucmVmIChjYXBzKTsKKworICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKKyAgZ3N0X3BhZF9zZW5kX2V2ZW50IChwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnNlZ21lbnQpKTsKKworICBmb3IgKGkgPSAwOyBpIDwgbl9hYnVmZmVyczsgaSsrKSB7CisgICAgR3N0QnVmZmVyICpidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKGNoYW5uZWxzICogYnVmX3NpemUpOworCisgICAgaWYgKHBlcl9jaGFubmVsKSB7CisgICAgICBHc3RNYXBJbmZvIG1hcDsKKyAgICAgIGd1aW50OCAqaW5fZGF0YTsKKworICAgICAgZ3N0X2J1ZmZlcl9tYXAgKGJ1ZiwgJm1hcCwgR1NUX01BUF9XUklURSk7CisgICAgICBpbl9kYXRhID0gbWFwLmRhdGE7CisKKyAgICAgIGZvciAoaiA9IDA7IGogPCBidWZfc2l6ZTsgaisrKSB7CisgICAgICAgIGZvciAoayA9IDA7IGsgPCBjaGFubmVsczsgaysrKSB7CisgICAgICAgICAgaW5fZGF0YVtqICogY2hhbm5lbHMgKyBrXSA9IGZpbGxfdmFsdWVfcGVyX2NoYW5uZWxba107CisgICAgICAgIH0KKyAgICAgIH0KKworICAgICAgZ3N0X2J1ZmZlcl91bm1hcCAoYnVmLCAmbWFwKTsKKyAgICB9IGVsc2UgeworICAgICAgZ3N0X2J1ZmZlcl9tZW1zZXQgKGJ1ZiwgMCwgZmlsbF92YWx1ZSwgY2hhbm5lbHMgKiBidWZfc2l6ZSk7CisgICAgfQorCisgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPSB0aW1lc3RhbXA7CisgICAgdGltZXN0YW1wICs9IDEgKiBHU1RfU0VDT05EOworICAgIGlmIChhdWRpb19kcmlmdCkKKyAgICAgIHRpbWVzdGFtcCArPSA1MCAqIEdTVF9NU0VDT05EOworICAgIGVsc2UgaWYgKGkgPT0gNCAmJiBhdWRpb19ub25kaXNjb250KQorICAgICAgdGltZXN0YW1wICs9IDMwICogR1NUX01TRUNPTkQ7CisgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IHRpbWVzdGFtcCAtIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOworCisgICAgZmFpbF91bmxlc3MgKGdzdF9wYWRfY2hhaW4gKHBhZCwgYnVmKSA9PSBHU1RfRkxPV19PSyk7CisgIH0KKyAgZ3N0X3BhZF9zZW5kX2V2ZW50IChwYWQsIGdzdF9ldmVudF9uZXdfZW9zICgpKTsKKworICByZXR1cm4gTlVMTDsKK30KKworc3RhdGljIGdwb2ludGVyCitwdXNoX3ZidWZmZXJzIChncG9pbnRlciBkYXRhKQoreworICBHc3RTZWdtZW50IHNlZ21lbnQ7CisgIEdzdFBhZCAqcGFkID0gZGF0YTsKKyAgZ2ludCBpOworICBHc3RDbG9ja1RpbWUgdGltZXN0YW1wID0gMDsKKworICBpZiAodmlkZW9kZWxheSkKKyAgICBnX3VzbGVlcCAoMjAwMCk7CisKKyAgaWYgKGxhdGVfdmlkZW8pCisgICAgdGltZXN0YW1wID0gNTAgKiBHU1RfTVNFQ09ORDsKKworICBnc3RfcGFkX3NlbmRfZXZlbnQgKHBhZCwgZ3N0X2V2ZW50X25ld19zdHJlYW1fc3RhcnQgKCJ0ZXN0IikpOworICBnc3Rfc2VnbWVudF9pbml0ICgmc2VnbWVudCwgR1NUX0ZPUk1BVF9USU1FKTsKKyAgZ3N0X3BhZF9zZW5kX2V2ZW50IChwYWQsIGdzdF9ldmVudF9uZXdfc2VnbWVudCAoJnNlZ21lbnQpKTsKKworICBmb3IgKGkgPSAwOyBpIDwgbl92YnVmZmVyczsgaSsrKSB7CisgICAgR3N0QnVmZmVyICpidWYgPSBnc3RfYnVmZmVyX25ld19hbmRfYWxsb2MgKDEwMDApOworICAgIEdzdENsb2NrVGltZSAqcnRpbWUgPSBnX25ldyAoR3N0Q2xvY2tUaW1lLCAxKTsKKworICAgIGdzdF9idWZmZXJfbWVtc2V0IChidWYsIDAsIGksIDEpOworCisgICAgR1NUX0JVRkZFUl9USU1FU1RBTVAgKGJ1ZikgPSB0aW1lc3RhbXA7CisgICAgdGltZXN0YW1wICs9IDI1ICogR1NUX01TRUNPTkQ7CisgICAgR1NUX0JVRkZFUl9EVVJBVElPTiAoYnVmKSA9IHRpbWVzdGFtcCAtIEdTVF9CVUZGRVJfVElNRVNUQU1QIChidWYpOworICAgICpydGltZSA9IGdzdF9zZWdtZW50X3RvX3J1bm5pbmdfdGltZSAoJnNlZ21lbnQsIEdTVF9GT1JNQVRfVElNRSwgdGltZXN0YW1wKTsKKyAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoJnZfdGltZXN0YW1wX3EsIHJ0aW1lKTsKKworICAgIGlmIChpID09IDQpIHsKKyAgICAgIGlmICh2aWRlb19nYXBzKQorICAgICAgICB0aW1lc3RhbXAgKz0gMTAgKiBHU1RfTVNFQ09ORDsKKyAgICAgIGVsc2UgaWYgKHZpZGVvX292ZXJsYXBzKQorICAgICAgICB0aW1lc3RhbXAgLT0gMTAgKiBHU1RfTVNFQ09ORDsKKyAgICB9CisKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9jaGFpbiAocGFkLCBidWYpID09IEdTVF9GTE9XX09LKTsKKyAgfQorICBnc3RfcGFkX3NlbmRfZXZlbnQgKHBhZCwgZ3N0X2V2ZW50X25ld19lb3MgKCkpOworCisgIHJldHVybiBOVUxMOworfQorCitzdGF0aWMgR3N0QnVzU3luY1JlcGx5Citvbl9tZXNzYWdlIChHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtZXNzYWdlLCBncG9pbnRlciB1c2VyX2RhdGEpCit7CisgIGNvbnN0IEdzdFN0cnVjdHVyZSAqcyA9IGdzdF9tZXNzYWdlX2dldF9zdHJ1Y3R1cmUgKG1lc3NhZ2UpOworICBjb25zdCBnY2hhciAqbmFtZSA9IGdzdF9zdHJ1Y3R1cmVfZ2V0X25hbWUgKHMpOworICBHVmFsdWVBcnJheSAqcm1zX2FycjsKKyAgY29uc3QgR1ZhbHVlICphcnJheV92YWw7CisgIGNvbnN0IEdWYWx1ZSAqdmFsdWU7CisgIGdkb3VibGUgcm1zOworICBnaW50IGNoYW5uZWxzMjsKKyAgZ3VpbnQgaTsKKyAgR3N0Q2xvY2tUaW1lICpydGltZSA9IGdfbmV3IChHc3RDbG9ja1RpbWUsIDEpOworCisgIGlmIChtZXNzYWdlLT50eXBlICE9IEdTVF9NRVNTQUdFX0VMRU1FTlQKKyAgICAgIHx8IHN0cmNtcCAobmFtZSwgInZpZGVvZnJhbWUtYXVkaW9sZXZlbCIpICE9IDApCisgICAgZ290byBkb25lOworCisgIG51bV9tc2dzKys7CisgIGlmICghZ3N0X3N0cnVjdHVyZV9nZXRfY2xvY2tfdGltZSAocywgInJ1bm5pbmctdGltZSIsIHJ0aW1lKSkKKyAgICBnX3dhcm5pbmcgKCJDb3VsZCBub3QgcGFyc2UgcnVubmluZyB0aW1lIik7CisgIGVsc2UKKyAgICBnX3F1ZXVlX3B1c2hfdGFpbCAoJm1zZ190aW1lc3RhbXBfcSwgcnRpbWUpOworCisgIC8qIHRoZSB2YWx1ZXMgYXJlIHBhY2tlZCBpbnRvIEdWYWx1ZUFycmF5cyB3aXRoIHRoZSB2YWx1ZSBwZXIgY2hhbm5lbCAqLworICBhcnJheV92YWwgPSBnc3Rfc3RydWN0dXJlX2dldF92YWx1ZSAocywgInJtcyIpOworICBybXNfYXJyID0gKEdWYWx1ZUFycmF5ICopIGdfdmFsdWVfZ2V0X2JveGVkIChhcnJheV92YWwpOworICBjaGFubmVsczIgPSBybXNfYXJyLT5uX3ZhbHVlczsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbm5lbHMyLCBjaGFubmVscyk7CisKKyAgZm9yIChpID0gMDsgaSA8IGNoYW5uZWxzOyArK2kpIHsKKyAgICB2YWx1ZSA9IGdfdmFsdWVfYXJyYXlfZ2V0X250aCAocm1zX2FyciwgaSk7CisgICAgcm1zID0gZ192YWx1ZV9nZXRfZG91YmxlICh2YWx1ZSk7CisgICAgaWYgKHBlcl9jaGFubmVsKSB7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfZmxvYXQgKHJtcywgZXhwZWN0ZWRfcm1zX3Blcl9jaGFubmVsW2ldKTsKKyAgICB9IGVsc2UgaWYgKGVhcmx5X3ZpZGVvICYmICpydGltZSA8PSA1MCAqIEdTVF9NU0VDT05EKSB7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfZmxvYXQgKHJtcywgMCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19mbG9hdCAocm1zLCBleHBlY3RlZF9ybXMpOworICAgIH0KKyAgfQorCitkb25lOgorICByZXR1cm4gR1NUX0JVU19QQVNTOworfQorCitzdGF0aWMgdm9pZAordGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAodm9pZCkKK3sKKyAgR3N0RWxlbWVudCAqYWxldmVsOworICBHc3RQYWQgKmFzaW5rLCAqdnNpbmssICphc3JjLCAqdnNyYywgKmFvdXRwdXRfc2luaywgKnZvdXRwdXRfc2luazsKKyAgR1RocmVhZCAqYXRocmVhZCwgKnZ0aHJlYWQ7CisgIEdzdEJ1cyAqYnVzOworICBndWludCBpOworCisgIGdvdF9lb3MgPSBGQUxTRTsKKyAgYXVkaW9fYnVmZmVyX2NvdW50ID0gMDsKKyAgdmlkZW9fYnVmZmVyX2NvdW50ID0gMDsKKyAgbnVtX21zZ3MgPSAwOworCisgIGdfcXVldWVfaW5pdCAoJnZfdGltZXN0YW1wX3EpOworICBnX3F1ZXVlX2luaXQgKCZtc2dfdGltZXN0YW1wX3EpOworCisgIGFsZXZlbCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoInZpZGVvZnJhbWUtYXVkaW9sZXZlbCIsIE5VTEwpOworICBmYWlsX3VubGVzcyAoYWxldmVsICE9IE5VTEwpOworCisgIGJ1cyA9IGdzdF9idXNfbmV3ICgpOworICBnc3RfZWxlbWVudF9zZXRfYnVzIChhbGV2ZWwsIGJ1cyk7CisgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlciAoYnVzLCBvbl9tZXNzYWdlLCBOVUxMLCBOVUxMKTsKKworICBhc2luayA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChhbGV2ZWwsICJhc2luayIpOworICBmYWlsX3VubGVzcyAoYXNpbmsgIT0gTlVMTCk7CisKKyAgdnNpbmsgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoYWxldmVsLCAidnNpbmsiKTsKKyAgZmFpbF91bmxlc3MgKHZzaW5rICE9IE5VTEwpOworCisgIGFzcmMgPSBnc3RfZWxlbWVudF9nZXRfc3RhdGljX3BhZCAoYWxldmVsLCAiYXNyYyIpOworICBhb3V0cHV0X3NpbmsgPSBnc3RfcGFkX25ldyAoInNpbmsiLCBHU1RfUEFEX1NJTkspOworICBmYWlsX3VubGVzcyAoYW91dHB1dF9zaW5rICE9IE5VTEwpOworICBmYWlsX3VubGVzcyAoZ3N0X3BhZF9saW5rIChhc3JjLCBhb3V0cHV0X3NpbmspID09IEdTVF9QQURfTElOS19PSyk7CisKKyAgdnNyYyA9IGdzdF9lbGVtZW50X2dldF9zdGF0aWNfcGFkIChhbGV2ZWwsICJ2c3JjIik7CisgIHZvdXRwdXRfc2luayA9IGdzdF9wYWRfbmV3ICgic2luayIsIEdTVF9QQURfU0lOSyk7CisgIGZhaWxfdW5sZXNzICh2b3V0cHV0X3NpbmsgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChnc3RfcGFkX2xpbmsgKHZzcmMsIHZvdXRwdXRfc2luaykgPT0gR1NUX1BBRF9MSU5LX09LKTsKKworICBnc3RfcGFkX3NldF9jaGFpbl9mdW5jdGlvbiAoYW91dHB1dF9zaW5rLCBvdXRwdXRfYWNoYWluKTsKKyAgZ3N0X3BhZF9zZXRfZXZlbnRfZnVuY3Rpb24gKGFvdXRwdXRfc2luaywgb3V0cHV0X2FldmVudCk7CisKKyAgZ3N0X3BhZF9zZXRfY2hhaW5fZnVuY3Rpb24gKHZvdXRwdXRfc2luaywgb3V0cHV0X3ZjaGFpbik7CisgIGdzdF9wYWRfc2V0X2V2ZW50X2Z1bmN0aW9uICh2b3V0cHV0X3NpbmssIG91dHB1dF92ZXZlbnQpOworCisgIGdzdF9wYWRfc2V0X2FjdGl2ZSAoYW91dHB1dF9zaW5rLCBUUlVFKTsKKyAgZ3N0X3BhZF9zZXRfYWN0aXZlICh2b3V0cHV0X3NpbmssIFRSVUUpOworICBmYWlsX3VubGVzcyAoZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChhbGV2ZWwsCisgICAgICAgICAgR1NUX1NUQVRFX1BMQVlJTkcpID09IEdTVF9TVEFURV9DSEFOR0VfU1VDQ0VTUyk7CisKKyAgYXRocmVhZCA9IGdfdGhyZWFkX25ldyAoImF0aHJlYWQiLCAoR1RocmVhZEZ1bmMpIHB1c2hfYWJ1ZmZlcnMsIGFzaW5rKTsKKyAgdnRocmVhZCA9IGdfdGhyZWFkX25ldyAoInZ0aHJlYWQiLCAoR1RocmVhZEZ1bmMpIHB1c2hfdmJ1ZmZlcnMsIHZzaW5rKTsKKworICBnX3RocmVhZF9qb2luICh2dGhyZWFkKTsKKyAgZ190aHJlYWRfam9pbiAoYXRocmVhZCk7CisKKyAgZmFpbF91bmxlc3MgKGdvdF9lb3MpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChhdWRpb19idWZmZXJfY291bnQsIG5fYWJ1ZmZlcnMpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50ICh2aWRlb19idWZmZXJfY291bnQsIG5fdmJ1ZmZlcnMpOworICBpZiAoIWxvbmdfdmlkZW8pCisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobnVtX21zZ3MsIG5fdmJ1ZmZlcnMpOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfcXVldWVfZ2V0X2xlbmd0aCAoJnZfdGltZXN0YW1wX3EpLCBuX3ZidWZmZXJzKTsKKyAgLyogbnVtX21zZ3MgaXMgZXF1YWwgdG8gbl92YnVmZmVycyBleGNlcHQgaW4gdGhlIGNhc2Ugb2YgbG9uZ192aWRlbyAqLworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX3F1ZXVlX2dldF9sZW5ndGggKCZtc2dfdGltZXN0YW1wX3EpLCBudW1fbXNncyk7CisKKyAgZm9yIChpID0gMDsgaSA8IGdfcXVldWVfZ2V0X2xlbmd0aCAoJm1zZ190aW1lc3RhbXBfcSk7IGkrKykgeworICAgIEdzdENsb2NrVGltZSAqdnQgPSBnX3F1ZXVlX3BvcF9oZWFkICgmdl90aW1lc3RhbXBfcSk7CisgICAgR3N0Q2xvY2tUaW1lICptdCA9IGdfcXVldWVfcG9wX2hlYWQgKCZtc2dfdGltZXN0YW1wX3EpOworICAgIGZhaWxfdW5sZXNzICh2dCAhPSBOVUxMKTsKKyAgICBmYWlsX3VubGVzcyAobXQgIT0gTlVMTCk7CisgICAgaWYgKCF2aWRlb19nYXBzICYmICF2aWRlb19vdmVybGFwcyAmJiAhZWFybHlfdmlkZW8pCisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfdWludDY0ICgqdnQsICptdCk7CisgICAgZ19mcmVlICh2dCk7CisgICAgZ19mcmVlIChtdCk7CisgIH0KKworICAvKiB0ZWFyZG93biAqLworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGFsZXZlbCwgR1NUX1NUQVRFX05VTEwpOworICBnc3RfYnVzX3NldF9mbHVzaGluZyAoYnVzLCBUUlVFKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYnVzKTsKKyAgZ19xdWV1ZV9mb3JlYWNoICgmdl90aW1lc3RhbXBfcSwgKEdGdW5jKSBnX2ZyZWUsIE5VTEwpOworICBnX3F1ZXVlX2ZvcmVhY2ggKCZtc2dfdGltZXN0YW1wX3EsIChHRnVuYykgZ19mcmVlLCBOVUxMKTsKKyAgZ19xdWV1ZV9jbGVhciAoJnZfdGltZXN0YW1wX3EpOworICBnX3F1ZXVlX2NsZWFyICgmbXNnX3RpbWVzdGFtcF9xKTsKKyAgZ3N0X3BhZF91bmxpbmsgKGFzcmMsIGFvdXRwdXRfc2luayk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFzcmMpOworICBnc3RfcGFkX3VubGluayAodnNyYywgdm91dHB1dF9zaW5rKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodnNyYyk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGFzaW5rKTsKKyAgZ3N0X29iamVjdF91bnJlZiAodnNpbmspOworICBnc3RfcGFkX3NldF9hY3RpdmUgKGFvdXRwdXRfc2luaywgRkFMU0UpOworICBnc3Rfb2JqZWN0X3VucmVmIChhb3V0cHV0X3NpbmspOworICBnc3RfcGFkX3NldF9hY3RpdmUgKHZvdXRwdXRfc2luaywgRkFMU0UpOworICBnc3Rfb2JqZWN0X3VucmVmICh2b3V0cHV0X3NpbmspOworICBnc3Rfb2JqZWN0X3VucmVmIChhbGV2ZWwpOworfQorCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMTZjaGFuXzEpCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgY2hhbm5lbHMgPSAxNjsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfOGNoYW5fMSkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBjaGFubmVscyA9IDg7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzJjaGFuXzEpCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMWNoYW5fMSkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBjaGFubmVscyA9IDE7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzE2Y2hhbl8wKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGNoYW5uZWxzID0gMTY7CisgIGV4cGVjdGVkX3JtcyA9IDA7CisgIGZpbGxfdmFsdWUgPSAwOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF84Y2hhbl8wKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGNoYW5uZWxzID0gODsKKyAgZXhwZWN0ZWRfcm1zID0gMDsKKyAgZmlsbF92YWx1ZSA9IDA7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzJjaGFuXzApCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgY2hhbm5lbHMgPSAyOworICBleHBlY3RlZF9ybXMgPSAwOworICBmaWxsX3ZhbHVlID0gMDsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMWNoYW5fMCkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBjaGFubmVscyA9IDE7CisgIGV4cGVjdGVkX3JtcyA9IDA7CisgIGZpbGxfdmFsdWUgPSAwOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9hZGVsYXkpCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgYXVkaW9kZWxheSA9IFRSVUU7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX3ZkZWxheSkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICB2aWRlb2RlbGF5ID0gVFJVRTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfcGVyX2NoYW5uZWwpCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgcGVyX2NoYW5uZWwgPSBUUlVFOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9sb25nX3ZpZGVvKQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIG5fYWJ1ZmZlcnMgPSA2OworICBuX3ZidWZmZXJzID0gMjU1OworICBsb25nX3ZpZGVvID0gVFJVRTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdmlkZW9fZ2FwcykKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICB2aWRlb19nYXBzID0gVFJVRTsKKyAgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfZ2VuZXJpYyAoKTsKK30KKworR1NUX0VORF9URVNUOworCitHU1RfU1RBUlRfVEVTVCAodGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdmlkZW9fb3ZlcmxhcHMpCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgdmlkZW9fb3ZlcmxhcHMgPSBUUlVFOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9hdWRpb19ub25kaXNjb250KQoreworICBzZXRfZGVmYXVsdF9wYXJhbXMgKCk7CisgIGF1ZGlvX25vbmRpc2NvbnQgPSBUUlVFOworICB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9nZW5lcmljICgpOworfQorCitHU1RfRU5EX1RFU1Q7CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9hdWRpb19kcmlmdCkKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBhdWRpb19kcmlmdCA9IFRSVUU7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9lYXJseV92aWRlbykKK3sKKyAgc2V0X2RlZmF1bHRfcGFyYW1zICgpOworICBlYXJseV92aWRlbyA9IFRSVUU7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2xhdGVfdmlkZW8pCit7CisgIHNldF9kZWZhdWx0X3BhcmFtcyAoKTsKKyAgbGF0ZV92aWRlbyA9IFRSVUU7CisgIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2dlbmVyaWMgKCk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworCitzdGF0aWMgU3VpdGUgKgordmlkZW9mcmFtZV9hdWRpb2xldmVsX3N1aXRlICh2b2lkKQoreworICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoInZpZGVvZnJhbWUtYXVkaW9sZXZlbCIpOworICBUQ2FzZSAqdGNfY2hhaW47CisKKyAgdGNfY2hhaW4gPSB0Y2FzZV9jcmVhdGUgKCJ2aWRlb2ZyYW1lLWF1ZGlvbGV2ZWwiKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF8xNmNoYW5fMSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfOGNoYW5fMSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMmNoYW5fMSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMWNoYW5fMSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfMTZjaGFuXzApOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzhjaGFuXzApOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzJjaGFuXzApOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsXzFjaGFuXzApOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2FkZWxheSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdmRlbGF5KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9wZXJfY2hhbm5lbCk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbG9uZ192aWRlbyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdmlkZW9fZ2Fwcyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfdmlkZW9fb3ZlcmxhcHMpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2F1ZGlvX25vbmRpc2NvbnQpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdmlkZW9mcmFtZV9hdWRpb2xldmVsX2F1ZGlvX2RyaWZ0KTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3ZpZGVvZnJhbWVfYXVkaW9sZXZlbF9lYXJseV92aWRlbyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF92aWRlb2ZyYW1lX2F1ZGlvbGV2ZWxfbGF0ZV92aWRlbyk7CisgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOworCisgIHJldHVybiBzOworfQorCitHU1RfQ0hFQ0tfTUFJTiAodmlkZW9mcmFtZV9hdWRpb2xldmVsKTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2xpYnMvYWdncmVnYXRvci5jIGIvdGVzdHMvY2hlY2svbGlicy9hZ2dyZWdhdG9yLmMKaW5kZXggYjIxYzdjZC4uMTYzNTViOSAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svbGlicy9hZ2dyZWdhdG9yLmMKKysrIGIvdGVzdHMvY2hlY2svbGlicy9hZ2dyZWdhdG9yLmMKQEAgLTM0NCw3ICszNDQsNyBAQAogICAgICAgZ19hdG9taWNfaW50X2luYyAoJnRlc3QtPmZsdXNoX3N0b3BfZXZlbnRzKTsKICAgfQogCi0gIHJldHVybiBHU1RfUEFEX1BST0JFX0RST1A7CisgIHJldHVybiBHU1RfUEFEX1BST0JFX0hBTkRMRUQ7CiB9CiAKIC8qCkBAIC03MjMsNiArNzIzLDcgQEAKIAogICBnc3Rfc2VnbWVudF9pbml0ICgmR1NUX0FHR1JFR0FUT1IgKHRlc3QuYWdncmVnYXRvciktPnNlZ21lbnQsCiAgICAgICBHU1RfRk9STUFUX1RJTUUpOworCiAgIC8qIG5vdyBkbyBhIHN1Y2Nlc3NmdWwgZmx1c2hpbmcgc2VlayAqLwogICBldmVudCA9IGdzdF9ldmVudF9uZXdfc2VlayAoMSwgR1NUX0ZPUk1BVF9USU1FLCBHU1RfU0VFS19GTEFHX0ZMVVNILAogICAgICAgR1NUX1NFRUtfVFlQRV9TRVQsIDAsIEdTVF9TRUVLX1RZUEVfU0VULCAxMCAqIEdTVF9TRUNPTkQpOwpAQCAtNzY1LDcgKzc2Niw3IEBACiAgIGdzdF9wYWRfcHVzaF9ldmVudCAoZGF0YTIuc3JjcGFkLCBnc3RfZXZlbnRfbmV3X2ZsdXNoX3N0b3AgKFRSVUUpKTsKIAogICAvKiBhbmQgdGhlIGxhc3QgRkxVU0hfU1RPUCBpcyBmb3J3YXJkZWQgZG93bnN0cmVhbSAqLwotICBmYWlsX3VubGVzc19lcXVhbHNfaW50ICh0ZXN0LmZsdXNoX3N0YXJ0X2V2ZW50cywgMSk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHRlc3QuZmx1c2hfc3RvcF9ldmVudHMsIDEpOwogCiAgIC8qICBDaGVjayBjb2xsZWN0ZWQgKi8KICAgZ3N0X3BhZF9hZGRfcHJvYmUgKHRlc3Quc3JjcGFkLCBHU1RfUEFEX1BST0JFX1RZUEVfQlVGRkVSLApkaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbG9yY29udmVydC5jIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbG9yY29udmVydC5jCmluZGV4IDJhMDEyNjMuLmYyYmU1MTQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb2xvcmNvbnZlcnQuYworKysgYi90ZXN0cy9jaGVjay9saWJzL2dzdGdsY29sb3Jjb252ZXJ0LmMKQEAgLTExNiwxNyArMTE2LDIwIEBACiBzdGF0aWMgdm9pZAogY2hlY2tfY29udmVyc2lvbiAoVGVzdEZyYW1lICogZnJhbWVzLCBndWludCBzaXplKQogeworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jOwogICBnaW50IGksIGosIGssIGw7CiAgIGdpbnQgcmVmX2NvdW50ID0gMDsKIAorICBiYXNlX21lbV9hbGxvYyA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfYWxsb2NhdG9yX2ZpbmQKKyAgICAgIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FKSk7CisKICAgZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgewogICAgIEdzdEJ1ZmZlciAqaW5idWY7CiAgICAgR3N0VmlkZW9JbmZvIGluX2luZm87CiAgICAgZ2ludCBpbl93aWR0aCA9IGZyYW1lc1tpXS53aWR0aDsKICAgICBnaW50IGluX2hlaWdodCA9IGZyYW1lc1tpXS5oZWlnaHQ7CiAgICAgR3N0VmlkZW9Gb3JtYXQgaW5fdl9mb3JtYXQgPSBmcmFtZXNbaV0udl9mb3JtYXQ7Ci0gICAgZ2NoYXIgKmluX2RhdGFbR1NUX1ZJREVPX01BWF9QTEFORVNdID0geyAwIH07Ci0gICAgR3N0R0xNZW1vcnkgKmluX21lbVtHU1RfVklERU9fTUFYX1BMQU5FU10gPSB7IDAgfTsKICAgICBHc3RWaWRlb0ZyYW1lIGluX2ZyYW1lOwogICAgIEdzdENhcHMgKmluX2NhcHM7CiAKQEAgLTEzNSwxOCArMTM4LDIyIEBACiAgICAgZ3N0X2NhcHNfc2V0X2ZlYXR1cmVzIChpbl9jYXBzLCAwLAogICAgICAgICBnc3RfY2Fwc19mZWF0dXJlc19mcm9tX3N0cmluZyAoR1NUX0NBUFNfRkVBVFVSRV9NRU1PUllfR0xfTUVNT1JZKSk7CiAKLSAgICBmb3IgKGogPSAwOyBqIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZpbl9pbmZvKTsgaisrKSB7Ci0gICAgICBpbl9kYXRhW2pdID0gZnJhbWVzW2ldLmRhdGFbal07Ci0gICAgfQotCiAgICAgLyogY3JlYXRlIEdMIGJ1ZmZlciAqLwotICAgIHJlZl9jb3VudCArPSBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJmluX2luZm8pOwogICAgIGluYnVmID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gICAgZmFpbF91bmxlc3MgKGdzdF9nbF9tZW1vcnlfc2V0dXBfd3JhcHBlZCAoY29udGV4dCwgJmluX2luZm8sIE5VTEwsCi0gICAgICAgICAgICAoZ3BvaW50ZXIgKikgaW5fZGF0YSwgaW5fbWVtLCAmcmVmX2NvdW50LCBfZnJhbWVfdW5yZWYpKTsKLQogICAgIGZvciAoaiA9IDA7IGogPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJmluX2luZm8pOyBqKyspIHsKLSAgICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoaW5idWYsIChHc3RNZW1vcnkgKikgaW5fbWVtW2pdKTsKKyAgICAgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CisgICAgICBHc3RHTEJhc2VNZW1vcnkgKm1lbTsKKworICAgICAgcmVmX2NvdW50Kys7CisgICAgICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YSAoY29udGV4dCwgTlVMTCwKKyAgICAgICAgICAmaW5faW5mbywgaiwgTlVMTCwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJELCBmcmFtZXNbaV0uZGF0YVtqXSwKKyAgICAgICAgICAmcmVmX2NvdW50LCBfZnJhbWVfdW5yZWYpOworCisgICAgICBtZW0gPSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgICAgIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoaW5idWYsIEdTVF9NRU1PUllfQ0FTVCAobWVtKSk7CisKKyAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CiAgICAgfQogCiAgICAgZmFpbF91bmxlc3MgKGdzdF92aWRlb19mcmFtZV9tYXAgKCZpbl9mcmFtZSwgJmluX2luZm8sIGluYnVmLApAQCAtMTU1LDggKzE2Miw4IEBACiAgICAgLyogc2FuaXR5IGNoZWNrIHRoYXQgdGhlIGNvcnJlY3QgdmFsdWVzIHdlcmUgd3JhcHBlZCAqLwogICAgIGZvciAoaiA9IDA7IGogPCBHU1RfVklERU9fSU5GT19OX1BMQU5FUyAoJmluX2luZm8pOyBqKyspIHsKICAgICAgIGZvciAoayA9IDA7IGsgPCBfdmlkZW9faW5mb19wbGFuZV9zaXplICgmaW5faW5mbywgaik7IGsrKykgewotICAgICAgICBpZiAoaW5fZGF0YVtqXVtrXSAhPSBJR05PUkVfTUFHSUMpCi0gICAgICAgICAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgaW5fZnJhbWUuZGF0YVtqXSlba10gPT0gaW5fZGF0YVtqXVtrXSk7CisgICAgICAgIGlmIChmcmFtZXNbaV0uZGF0YVtqXVtrXSAhPSBJR05PUkVfTUFHSUMpCisgICAgICAgICAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgaW5fZnJhbWUuZGF0YVtqXSlba10gPT0gZnJhbWVzW2ldLmRhdGFbal1ba10pOwogICAgICAgfQogICAgIH0KIApAQCAtMjE0LDYgKzIyMSw4IEBACiAKICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChyZWZfY291bnQsIDApOwogICB9CisKKyAgZ3N0X29iamVjdF91bnJlZiAoYmFzZV9tZW1fYWxsb2MpOwogfQogCiBHU1RfU1RBUlRfVEVTVCAodGVzdF9yZW9yZGVyX2J1ZmZlcikKQEAgLTIzMiw3ICsyNDEsNyBAQAogc3RhdGljIFN1aXRlICoKIGdzdF9nbF9jb2xvcl9jb252ZXJ0X3N1aXRlICh2b2lkKQogewotICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIkdzdEdMVXBsb2FkIik7CisgIFN1aXRlICpzID0gc3VpdGVfY3JlYXRlICgiR3N0R0xDb2xvckNvbnZlcnQiKTsKICAgVENhc2UgKnRjX2NoYWluID0gdGNhc2VfY3JlYXRlICgidXBsb2FkIik7CiAKICAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsY29udGV4dC5jIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbGNvbnRleHQuYwppbmRleCA4YmI1Zjk5Li5mMmYyN2Y4IDEwMDY0NAotLS0gYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsY29udGV4dC5jCisrKyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xjb250ZXh0LmMKQEAgLTI4LDI5ICsyOCw2IEBACiAKICNpbmNsdWRlIDxzdGRpby5oPgogCi0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLS8qICpJTkRFTlQtT0ZGKiAqLwotc3RhdGljIGNvbnN0IGdjaGFyICp2ZXJ0ZXhfc2hhZGVyX3N0cl9nbGVzMiA9Ci0gICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgXG4iCi0gICAgICAiICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7ICBcbiIKLSAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotc3RhdGljIGNvbnN0IGdjaGFyICpmcmFnbWVudF9zaGFkZXJfc3RyX2dsZXMyID0KLSAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCBzX3RleHR1cmUsIHZfdGV4Q29vcmQgKTtcbiIKLSAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotLyogKklOREVOVC1PTiogKi8KLSNlbmRpZgotCiBzdGF0aWMgR3N0R0xEaXNwbGF5ICpkaXNwbGF5OwogCiBzdGF0aWMgdm9pZApAQCAtNjUsMTkgKzQyLDI3IEBACiAgIGdzdF9vYmplY3RfdW5yZWYgKGRpc3BsYXkpOwogfQogCi1zdGF0aWMgR0x1aW50IGZib19pZCwgcmJvLCB0ZXg7CitzdGF0aWMgR0x1aW50IHZibywgdmJvX2luZGljZXMsIHZhbywgZmJvX2lkLCByYm8sIHRleDsKIHN0YXRpYyBHc3RHTEZyYW1lYnVmZmVyICpmYm87Ci0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLXN0YXRpYyBHRXJyb3IgKmVycm9yOwogc3RhdGljIEdzdEdMU2hhZGVyICpzaGFkZXI7CiBzdGF0aWMgR0xpbnQgc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jOwogc3RhdGljIEdMaW50IHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jOwotI2VuZGlmCisKK3N0YXRpYyBjb25zdCBHTGZsb2F0IHZlcnRpY2VzW10gPSB7CisgIC8qIHgsIHksIHosIHMsIHQgKi8KKyAgMS4wZiwgMS4wZiwgMC4wZiwgMS4wZiwgMC4wZiwKKyAgLTEuMGYsIDEuMGYsIDAuMGYsIDAuMGYsIDAuMGYsCisgIC0xLjBmLCAtMS4wZiwgMC4wZiwgMC4wZiwgMS4wZiwKKyAgMS4wZiwgLTEuMGYsIDAuMGYsIDEuMGYsIDEuMGYKK307CisKK3N0YXRpYyBjb25zdCBHTHVzaG9ydCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIsIDMgfTsKIAogc3RhdGljIHZvaWQKIGluaXQgKGdwb2ludGVyIGRhdGEpCiB7CiAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGRhdGE7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOwogCiAgIC8qIGhhcyB0byBiZSBjYWxsZWQgaW4gdGhlIHRocmVhZCB0aGF0IGlzIGdvaW5nIHRvIHVzZSB0aGUgZnJhbWVidWZmZXIgKi8KICAgZmJvID0gZ3N0X2dsX2ZyYW1lYnVmZmVyX25ldyAoY29udGV4dCk7CkBAIC04OCwyNSArNzMsMTQgQEAKICAgZ3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmUgKGNvbnRleHQsICZ0ZXgsIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgMzIwLCAyNDApOwogICBmYWlsX2lmICh0ZXggPT0gMCwgImZhaWxlZCB0byBjcmVhdGUgdGV4dHVyZSIpOwogCi0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9HTEVTMikgewotICAgIHNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb250ZXh0KTsKLSAgICBmYWlsX2lmIChzaGFkZXIgPT0gTlVMTCwgImZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIG9iamVjdCIpOworICBzaGFkZXIgPSBnc3RfZ2xfc2hhZGVyX25ld19kZWZhdWx0IChjb250ZXh0LCAmZXJyb3IpOworICBmYWlsX2lmIChzaGFkZXIgPT0gTlVMTCwgImZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIG9iamVjdDogJXMiLAorICAgICAgZXJyb3ItPm1lc3NhZ2UpOwogCi0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfdmVydGV4X3NvdXJjZSAoc2hhZGVyLCB2ZXJ0ZXhfc2hhZGVyX3N0cl9nbGVzMik7Ci0gICAgZ3N0X2dsX3NoYWRlcl9zZXRfZnJhZ21lbnRfc291cmNlIChzaGFkZXIsIGZyYWdtZW50X3NoYWRlcl9zdHJfZ2xlczIpOwotCi0gICAgZXJyb3IgPSBOVUxMOwotICAgIGdzdF9nbF9zaGFkZXJfY29tcGlsZSAoc2hhZGVyLCAmZXJyb3IpOwotICAgIGZhaWxfaWYgKGVycm9yICE9IE5VTEwsICJFcnJvciBjb21waWxpbmcgc2hhZGVyICVzXG4iLAotICAgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiKTsKLQotICAgIHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYyA9Ci0gICAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV9wb3NpdGlvbiIpOwotICAgIHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jID0KLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3RleENvb3JkIik7Ci0gIH0KLSNlbmRpZgorICBzaGFkZXJfYXR0cl9wb3NpdGlvbl9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3Bvc2l0aW9uIik7CisgIHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jID0KKyAgICAgIGdzdF9nbF9zaGFkZXJfZ2V0X2F0dHJpYnV0ZV9sb2NhdGlvbiAoc2hhZGVyLCAiYV90ZXhjb29yZCIpOwogfQogCiBzdGF0aWMgdm9pZApAQCAtMTE1LDExICs4OSwxMCBAQAogICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBkYXRhOwogICBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKICAgZ2wtPkRlbGV0ZVRleHR1cmVzICgxLCAmdGV4KTsKKyAgaWYgKHZhbykKKyAgICBnbC0+RGVsZXRlVmVydGV4QXJyYXlzICgxLCAmdmFvKTsKICAgZ3N0X29iamVjdF91bnJlZiAoZmJvKTsKLSNpZiBHU1RfR0xfSEFWRV9HTEVTMgotICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX0dMRVMyKQotICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7Ci0jZW5kaWYKKyAgZ3N0X29iamVjdF91bnJlZiAoc2hhZGVyKTsKIH0KIAogc3RhdGljIHZvaWQKQEAgLTE0NSw4NiArMTE4LDExMiBAQAogfQogCiBzdGF0aWMgdm9pZAorX2JpbmRfYnVmZmVyIChHc3RHTENvbnRleHQgKiBjb250ZXh0KQoreworICBjb25zdCBHc3RHTEZ1bmNzICpnbCA9IGNvbnRleHQtPmdsX3Z0YWJsZTsKKworICBnbC0+QmluZEJ1ZmZlciAoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIHZib19pbmRpY2VzKTsKKyAgZ2wtPkJpbmRCdWZmZXIgKEdMX0FSUkFZX0JVRkZFUiwgdmJvKTsKKworICAvKiBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24gKi8KKyAgZ2wtPlZlcnRleEF0dHJpYlBvaW50ZXIgKHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYywgMywgR0xfRkxPQVQsIEdMX0ZBTFNFLAorICAgICAgNSAqIHNpemVvZiAoR0xmbG9hdCksICh2b2lkICopIDApOworCisgIC8qIExvYWQgdGhlIHRleHR1cmUgY29vcmRpbmF0ZSAqLworICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MsIDIsIEdMX0ZMT0FULCBHTF9GQUxTRSwKKyAgICAgIDUgKiBzaXplb2YgKEdMZmxvYXQpLCAodm9pZCAqKSAoMyAqIHNpemVvZiAoR0xmbG9hdCkpKTsKKworICBnbC0+RW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYyk7CisgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MpOworfQorCitzdGF0aWMgdm9pZAorX3VuYmluZF9idWZmZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQpCit7CisgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworCisgIGdsLT5CaW5kQnVmZmVyIChHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgMCk7CisgIGdsLT5CaW5kQnVmZmVyIChHTF9BUlJBWV9CVUZGRVIsIDApOworCisgIGdsLT5EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgKHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYyk7CisgIGdsLT5EaXNhYmxlVmVydGV4QXR0cmliQXJyYXkgKHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jKTsKK30KKworc3RhdGljIHZvaWQKK2luaXRfYmxpdCAoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZGF0YTsKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgaWYgKCF2Ym8pIHsKKyAgICBpZiAoZ2wtPkdlblZlcnRleEFycmF5cykgeworICAgICAgZ2wtPkdlblZlcnRleEFycmF5cyAoMSwgJnZhbyk7CisgICAgICBnbC0+QmluZFZlcnRleEFycmF5ICh2YW8pOworICAgIH0KKworICAgIGdsLT5HZW5CdWZmZXJzICgxLCAmdmJvKTsKKyAgICBnbC0+QmluZEJ1ZmZlciAoR0xfQVJSQVlfQlVGRkVSLCB2Ym8pOworICAgIGdsLT5CdWZmZXJEYXRhIChHTF9BUlJBWV9CVUZGRVIsIDQgKiA1ICogc2l6ZW9mIChHTGZsb2F0KSwgdmVydGljZXMsCisgICAgICAgIEdMX1NUQVRJQ19EUkFXKTsKKworICAgIGdsLT5HZW5CdWZmZXJzICgxLCAmdmJvX2luZGljZXMpOworICAgIGdsLT5CaW5kQnVmZmVyIChHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgdmJvX2luZGljZXMpOworICAgIGdsLT5CdWZmZXJEYXRhIChHTF9FTEVNRU5UX0FSUkFZX0JVRkZFUiwgc2l6ZW9mIChpbmRpY2VzKSwgaW5kaWNlcywKKyAgICAgICAgR0xfU1RBVElDX0RSQVcpOworCisgICAgaWYgKGdsLT5HZW5WZXJ0ZXhBcnJheXMpIHsKKyAgICAgIF9iaW5kX2J1ZmZlciAoY29udGV4dCk7CisgICAgICBnbC0+QmluZFZlcnRleEFycmF5ICgwKTsKKyAgICB9CisKKyAgICBnbC0+QmluZEJ1ZmZlciAoR0xfQVJSQVlfQlVGRkVSLCAwKTsKKyAgICBnbC0+QmluZEJ1ZmZlciAoR0xfRUxFTUVOVF9BUlJBWV9CVUZGRVIsIDApOworICB9Cit9CisKK3N0YXRpYyB2b2lkCitkZWluaXRfYmxpdCAoZ3BvaW50ZXIgZGF0YSkKK3sKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0ID0gZGF0YTsKKyAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CisKKyAgaWYgKHZibykKKyAgICBnbC0+RGVsZXRlQnVmZmVycyAoMSwgJnZibyk7CisgIHZibyA9IDA7CisgIGlmICh2Ym9faW5kaWNlcykKKyAgICBnbC0+RGVsZXRlQnVmZmVycyAoMSwgJnZib19pbmRpY2VzKTsKKyAgdmJvX2luZGljZXMgPSAwOworICBpZiAodmFvKQorICAgIGdsLT5EZWxldGVWZXJ0ZXhBcnJheXMgKDEsICZ2YW8pOworICB2YW8gPSAwOworfQorCitzdGF0aWMgdm9pZAogZHJhd19yZW5kZXIgKGdwb2ludGVyIGRhdGEpCiB7CiAgIEdzdEdMQ29udGV4dCAqY29udGV4dCA9IGRhdGE7CiAgIEdzdEdMQ29udGV4dENsYXNzICpjb250ZXh0X2NsYXNzID0gR1NUX0dMX0NPTlRFWFRfR0VUX0NMQVNTIChjb250ZXh0KTsKICAgY29uc3QgR3N0R0xGdW5jcyAqZ2wgPSBjb250ZXh0LT5nbF92dGFibGU7CiAKLSAgLyogcmVkcmF3IHRoZSB0ZXh0dXJlIGludG8gdGhlIHN5c3RlbSBwcm92aWRlZCBmcmFtZWJ1ZmZlciAqLworICBnbC0+Q2xlYXIgKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwogCi0jaWYgR1NUX0dMX0hBVkVfT1BFTkdMCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb250ZXh0KSAmIEdTVF9HTF9BUElfT1BFTkdMKSB7Ci0gICAgR0xmbG9hdCB2ZXJ0c1s4XSA9IHsgMS4wZiwgMS4wZiwKLSAgICAgIC0xLjBmLCAxLjBmLAotICAgICAgLTEuMGYsIC0xLjBmLAotICAgICAgMS4wZiwgLTEuMGYKLSAgICB9OwotICAgIEdMZmxvYXQgdGV4Y29vcmRzWzhdID0geyAxLjBmLCAwLjBmLAotICAgICAgMC4wZiwgMC4wZiwKLSAgICAgIDAuMGYsIDEuMGYsCi0gICAgICAxLjBmLCAxLjBmCi0gICAgfTsKKyAgZ3N0X2dsX3NoYWRlcl91c2UgKHNoYWRlcik7CiAKLSAgICBnbC0+Vmlld3BvcnQgKDAsIDAsIDMyMCwgMjQwKTsKKyAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKKyAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXgpOworICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsICJzX3RleHR1cmUiLCAwKTsKIAotICAgIGdsLT5DbGVhciAoR0xfQ09MT1JfQlVGRkVSX0JJVCB8IEdMX0RFUFRIX0JVRkZFUl9CSVQpOworICBpZiAoZ2wtPkdlblZlcnRleEFycmF5cykKKyAgICBnbC0+QmluZFZlcnRleEFycmF5ICh2YW8pOworICBlbHNlCisgICAgX2JpbmRfYnVmZmVyIChjb250ZXh0KTsKIAotICAgIGdsLT5NYXRyaXhNb2RlIChHTF9QUk9KRUNUSU9OKTsKLSAgICBnbC0+TG9hZElkZW50aXR5ICgpOworICBnbC0+RHJhd0VsZW1lbnRzIChHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCAwKTsKIAotICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7Ci0gICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXgpOwotCi0gICAgZ2wtPkVuYWJsZUNsaWVudFN0YXRlIChHTF9WRVJURVhfQVJSQVkpOwotICAgIGdsLT5WZXJ0ZXhQb2ludGVyICgyLCBHTF9GTE9BVCwgMCwgJnZlcnRzKTsKLQotICAgIGdsLT5DbGllbnRBY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7Ci0gICAgZ2wtPkVuYWJsZUNsaWVudFN0YXRlIChHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKLSAgICBnbC0+VGV4Q29vcmRQb2ludGVyICgyLCBHTF9GTE9BVCwgMCwgJnRleGNvb3Jkcyk7Ci0KLSAgICBnbC0+RHJhd0FycmF5cyAoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKLQotICAgIGdsLT5EaXNhYmxlQ2xpZW50U3RhdGUgKEdMX1ZFUlRFWF9BUlJBWSk7Ci0gICAgZ2wtPkRpc2FibGVDbGllbnRTdGF0ZSAoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7Ci0gIH0KLSNlbmRpZgotI2lmIEdTVF9HTF9IQVZFX0dMRVMyCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb250ZXh0KSAmIEdTVF9HTF9BUElfR0xFUzIpIHsKLSAgICBjb25zdCBHTGZsb2F0IHZWZXJ0aWNlc1tdID0geyAxLjBmLCAxLjBmLCAwLjBmLAotICAgICAgMS4wZiwgMC4wZiwKLSAgICAgIC0xLjBmLCAxLjBmLCAwLjBmLAotICAgICAgMC4wZiwgMC4wZiwKLSAgICAgIC0xLjBmLCAtMS4wZiwgMC4wZiwKLSAgICAgIDAuMGYsIDEuMGYsCi0gICAgICAxLjBmLCAtMS4wZiwgMC4wZiwKLSAgICAgIDEuMGYsIDEuMGYKLSAgICB9OwotCi0gICAgR0x1c2hvcnQgaW5kaWNlc1tdID0geyAwLCAxLCAyLCAwLCAyLCAzIH07Ci0KLSAgICBnbC0+Q2xlYXIgKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgZ3N0X2dsX3NoYWRlcl91c2UgKHNoYWRlcik7Ci0KLSAgICAvKiBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24gKi8KLSAgICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jLCAzLAotICAgICAgICBHTF9GTE9BVCwgR0xfRkFMU0UsIDUgKiBzaXplb2YgKEdMZmxvYXQpLCB2VmVydGljZXMpOwotCi0gICAgLyogTG9hZCB0aGUgdGV4dHVyZSBjb29yZGluYXRlICovCi0gICAgZ2wtPlZlcnRleEF0dHJpYlBvaW50ZXIgKHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jLCAyLAotICAgICAgICBHTF9GTE9BVCwgR0xfRkFMU0UsIDUgKiBzaXplb2YgKEdMZmxvYXQpLCAmdlZlcnRpY2VzWzNdKTsKLQotICAgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jKTsKLSAgICBnbC0+RW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jKTsKLQotICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7Ci0gICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXgpOwotICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgInNfdGV4dHVyZSIsIDApOwotCi0gICAgZ2wtPkRyYXdFbGVtZW50cyAoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9TSE9SVCwgaW5kaWNlcyk7Ci0gIH0KLSNlbmRpZgorICBpZiAoZ2wtPkdlblZlcnRleEFycmF5cykKKyAgICBnbC0+QmluZFZlcnRleEFycmF5ICgwKTsKKyAgZWxzZQorICAgIF91bmJpbmRfYnVmZmVyIChjb250ZXh0KTsKIAogICBjb250ZXh0X2NsYXNzLT5zd2FwX2J1ZmZlcnMgKGNvbnRleHQpOwogfQpAQCAtMjYzLDYgKzI2Miw3IEBACiAgIGdzdF9nbF93aW5kb3dfZHJhdyAod2luZG93KTsKIAogICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAob3RoZXJfd2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChpbml0KSwgY29udGV4dCk7CisgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlICh3aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGluaXRfYmxpdCksIGNvbnRleHQpOwogCiAgIHdoaWxlIChpIDwgMTApIHsKICAgICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAob3RoZXJfd2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChkcmF3X3RleCksCkBAIC0yNzMsNiArMjczLDcgQEAKICAgfQogCiAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlIChvdGhlcl93aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGRlaW5pdCksIGNvbnRleHQpOworICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAod2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChkZWluaXRfYmxpdCksIGNvbnRleHQpOwogCiAgIGdzdF9vYmplY3RfdW5yZWYgKHdpbmRvdyk7CiAgIGdzdF9vYmplY3RfdW5yZWYgKG90aGVyX3dpbmRvdyk7CkBAIC0zMTQsNiArMzE1LDcgQEAKICAgZmFpbF9pZiAoIXJldCwgImVycm9yIHJlY2VpdmVkICVzXG4iLAogICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJVbmtub3duIGVycm9yIik7CiAgIGZhaWxfaWYgKHdyYXBwZWRfY29udGV4dC0+Z2xfdnRhYmxlLT5UZXhJbWFnZTJEID09IE5VTEwpOworICBnc3RfZ2xfY29udGV4dF9hY3RpdmF0ZSAod3JhcHBlZF9jb250ZXh0LCBGQUxTRSk7CiB9CiAKIEdTVF9TVEFSVF9URVNUICh0ZXN0X3dyYXBwZWRfY29udGV4dCkKQEAgLTM2NSw2ICszNjcsNyBAQAogICBnc3RfZ2xfd2luZG93X2RyYXcgKHdpbmRvdyk7CiAKICAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKG90aGVyX3dpbmRvdywgR1NUX0dMX1dJTkRPV19DQiAoaW5pdCksIGNvbnRleHQpOworICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAod2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChpbml0X2JsaXQpLCBjb250ZXh0KTsKIAogICB3aGlsZSAoaSA8IDEwKSB7CiAgICAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKG90aGVyX3dpbmRvdywgR1NUX0dMX1dJTkRPV19DQiAoZHJhd190ZXgpLApAQCAtMzc4LDYgKzM4MSw3IEBACiAgICAgICB3cmFwcGVkX2NvbnRleHQpOwogCiAgIGdzdF9nbF93aW5kb3dfc2VuZF9tZXNzYWdlIChvdGhlcl93aW5kb3csIEdTVF9HTF9XSU5ET1dfQ0IgKGRlaW5pdCksIGNvbnRleHQpOworICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAod2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChkZWluaXRfYmxpdCksIGNvbnRleHQpOwogCiAgIGdzdF9vYmplY3RfdW5yZWYgKG90aGVyX2NvbnRleHQpOwogICBnc3Rfb2JqZWN0X3VucmVmIChvdGhlcl93aW5kb3cpOwpAQCAtNDg1LDYgKzQ4OSwxMjUgQEAKIAogR1NUX0VORF9URVNUOwogCitHU1RfU1RBUlRfVEVTVCAodGVzdF9pc19zaGFyZWQpCit7CisgIEdzdEdMQ29udGV4dCAqYzEsICpjMjsKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgYzEgPSBnc3RfZ2xfY29udGV4dF9uZXcgKGRpc3BsYXkpOworICBnc3RfZ2xfY29udGV4dF9jcmVhdGUgKGMxLCBOVUxMLCAmZXJyb3IpOworICBmYWlsX2lmIChlcnJvciAhPSBOVUxMLCAiRXJyb3IgY3JlYXRpbmcgY29udGV4dCAlc1xuIiwKKyAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiVW5rbm93biBFcnJvciIpOworCisgIGMyID0gZ3N0X2dsX2NvbnRleHRfbmV3IChkaXNwbGF5KTsKKyAgZ3N0X2dsX2NvbnRleHRfY3JlYXRlIChjMiwgYzEsICZlcnJvcik7CisgIGZhaWxfaWYgKGVycm9yICE9IE5VTEwsICJFcnJvciBjcmVhdGluZyBjb250ZXh0ICVzXG4iLAorICAgICAgZXJyb3IgPyBlcnJvci0+bWVzc2FnZSA6ICJVbmtub3duIEVycm9yIik7CisKKyAgZmFpbF91bmxlc3MgKGdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCAoYzEpKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCAoYzIpKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChjMik7CisgIGMyID0gTlVMTDsKKworICBmYWlsX3VubGVzcyAoIWdzdF9nbF9jb250ZXh0X2lzX3NoYXJlZCAoYzEpKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChjMSk7Cit9CisKK0dTVF9FTkRfVEVTVDsKKworR1NUX1NUQVJUX1RFU1QgKHRlc3RfZGlzcGxheV9saXN0KQoreworICBHc3RHTENvbnRleHQgKmMxLCAqYzI7CisgIEdFcnJvciAqZXJyb3IgPSBOVUxMOworCisgIGMxID0gZ3N0X2dsX2NvbnRleHRfbmV3IChkaXNwbGF5KTsKKyAgZ3N0X2dsX2NvbnRleHRfY3JlYXRlIChjMSwgTlVMTCwgJmVycm9yKTsKKyAgZmFpbF9pZiAoZXJyb3IgIT0gTlVMTCwgIkVycm9yIGNyZWF0aW5nIGNvbnRleHQgJXNcbiIsCisgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiKTsKKworICBHU1RfT0JKRUNUX0xPQ0sgKGRpc3BsYXkpOworICB7CisgICAgLyogbm8gY29udGV4dCBhZGRlZCBzbyBnZXQgc2hvdWxkIHJldHVybiBOVUxMICovCisgICAgR3N0R0xDb250ZXh0ICp0bXAgPQorICAgICAgICBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkIChkaXNwbGF5LCBOVUxMKTsKKyAgICBmYWlsX3VubGVzcyAodG1wID09IE5VTEwpOworICB9CisKKyAgZmFpbF91bmxlc3MgKGdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0IChkaXNwbGF5LCBjMSkpOworICAvKiByZS1hZGRpbmcgdGhlIHNhbWUgY29udGV4dCBpcyBhIG5vLW9wICovCisgIGZhaWxfdW5sZXNzIChnc3RfZ2xfZGlzcGxheV9hZGRfY29udGV4dCAoZGlzcGxheSwgYzEpKTsKKworICB7CisgICAgR1RocmVhZCAqdGhyZWFkOworICAgIEdzdEdMQ29udGV4dCAqdG1wOworCisgICAgdGhyZWFkID0gZ3N0X2dsX2NvbnRleHRfZ2V0X3RocmVhZCAoYzEpOworICAgIGZhaWxfdW5sZXNzICh0aHJlYWQgIT0gTlVMTCk7CisKKyAgICB0bXAgPSBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkIChkaXNwbGF5LCB0aHJlYWQpOworICAgIGZhaWxfdW5sZXNzICh0bXAgPT0gYzEpOworICAgIGdfdGhyZWFkX3VucmVmICh0aHJlYWQpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHRtcCk7CisKKyAgICB0bXAgPSBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkIChkaXNwbGF5LCBOVUxMKTsKKyAgICBmYWlsX3VubGVzcyAodG1wID09IGMxKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXApOworICB9CisKKyAgYzIgPSBnc3RfZ2xfY29udGV4dF9uZXcgKGRpc3BsYXkpOworICBnc3RfZ2xfY29udGV4dF9jcmVhdGUgKGMyLCBjMSwgJmVycm9yKTsKKyAgZmFpbF9pZiAoZXJyb3IgIT0gTlVMTCwgIkVycm9yIGNyZWF0aW5nIGNvbnRleHQgJXNcbiIsCisgICAgICBlcnJvciA/IGVycm9yLT5tZXNzYWdlIDogIlVua25vd24gRXJyb3IiKTsKKworICBmYWlsX3VubGVzcyAoZ3N0X2dsX2Rpc3BsYXlfYWRkX2NvbnRleHQgKGRpc3BsYXksIGMyKSk7CisgIC8qIHJlLWFkZGluZyB0aGUgc2FtZSBjb250ZXh0IGlzIGEgbm8tb3AgKi8KKyAgZmFpbF91bmxlc3MgKGdzdF9nbF9kaXNwbGF5X2FkZF9jb250ZXh0IChkaXNwbGF5LCBjMikpOworCisgIHsKKyAgICBHVGhyZWFkICp0aHJlYWQ7CisgICAgR3N0R0xDb250ZXh0ICp0bXA7CisKKyAgICB0aHJlYWQgPSBnc3RfZ2xfY29udGV4dF9nZXRfdGhyZWFkIChjMik7CisgICAgZmFpbF91bmxlc3MgKHRocmVhZCAhPSBOVUxMKTsKKworICAgIHRtcCA9IGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKGRpc3BsYXksIHRocmVhZCk7CisgICAgZmFpbF91bmxlc3MgKHRtcCA9PSBjMik7CisgICAgZ190aHJlYWRfdW5yZWYgKHRocmVhZCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAodG1wKTsKKworICAgIC8qIHVuZGVmaW5lZCB3aGljaCBjb250ZXh0IHdpbGwgYmUgcmV0dXJuZWQgZm9yIHRoZSBOVUxMIHRocmVhZCAqLworICAgIHRtcCA9IGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKGRpc3BsYXksIE5VTEwpOworICAgIGZhaWxfdW5sZXNzICh0bXAgIT0gTlVMTCk7CisgICAgZ3N0X29iamVjdF91bnJlZiAodG1wKTsKKyAgfQorCisgIGdzdF9vYmplY3RfdW5yZWYgKGMxKTsKKyAgLyogYzEgaXMgbm93IGRlYWQgKi8KKworICB7CisgICAgR3N0R0xDb250ZXh0ICp0bXA7CisKKyAgICB0bXAgPSBnc3RfZ2xfZGlzcGxheV9nZXRfZ2xfY29udGV4dF9mb3JfdGhyZWFkIChkaXNwbGF5LCBOVUxMKTsKKyAgICBmYWlsX3VubGVzcyAodG1wID09IGMyKTsKKyAgICBnc3Rfb2JqZWN0X3VucmVmICh0bXApOworICB9CisgIEdTVF9PQkpFQ1RfVU5MT0NLIChkaXNwbGF5KTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChjMik7CisgIC8qIGMyIGlzIG5vdyBkZWFkICovCisKKyAgeworICAgIC8qIG5vIG1vcmUgY29udGV4dHMgYWxpdmUgKi8KKyAgICBHc3RHTENvbnRleHQgKnRtcCA9CisgICAgICAgIGdzdF9nbF9kaXNwbGF5X2dldF9nbF9jb250ZXh0X2Zvcl90aHJlYWQgKGRpc3BsYXksIE5VTEwpOworICAgIGZhaWxfdW5sZXNzICh0bXAgPT0gTlVMTCk7CisgIH0KK30KKworR1NUX0VORF9URVNUOworCiBzdGF0aWMgU3VpdGUgKgogZ3N0X2dsX2NvbnRleHRfc3VpdGUgKHZvaWQpCiB7CkBAIC00OTcsNiArNjIwLDggQEAKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3dyYXBwZWRfY29udGV4dCk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9jdXJyZW50X2NvbnRleHQpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfY29udGV4dF9jYW5fc2hhcmUpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfaXNfc2hhcmVkKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2Rpc3BsYXlfbGlzdCk7CiAKICAgcmV0dXJuIHM7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmMgYi90ZXN0cy9jaGVjay9saWJzL2dzdGdsbWVtb3J5LmMKaW5kZXggMjM4ZTJiYi4uNDEzMGUzYiAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svbGlicy9nc3RnbG1lbW9yeS5jCisrKyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xtZW1vcnkuYwpAQCAtMjYsNyArMjYsNyBAQAogCiAjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CiAKLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xtZW1vcnkuaD4KKyNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KIAogI2luY2x1ZGUgPHN0ZGlvLmg+CiAKQEAgLTM5LDcgKzM5LDcgQEAKICAgZGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X25ldyAoKTsKICAgY29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25ldyAoZGlzcGxheSk7CiAgIGdzdF9nbF9jb250ZXh0X2NyZWF0ZSAoY29udGV4dCwgMCwgTlVMTCk7Ci0gIGdzdF9nbF9tZW1vcnlfaW5pdCAoKTsKKyAgZ3N0X2dsX21lbW9yeV9pbml0X29uY2UgKCk7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC01NCwxNCArNTQsMTYgQEAKICAgR3N0TWVtb3J5ICptZW0sICptZW0yOwogICBHc3RHTE1lbW9yeSAqZ2xfbWVtLCAqZ2xfbWVtMjsKICAgR3N0QWxsb2NhdG9yICpnbF9hbGxvY2F0b3I7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9tZW1fYWxsb2M7CiAgIGdpbnQgaSwgajsKICAgc3RhdGljIEdzdFZpZGVvRm9ybWF0IGZvcm1hdHNbXSA9IHsKICAgICBHU1RfVklERU9fRk9STUFUX1JHQkEsIEdTVF9WSURFT19GT1JNQVRfUkdCLAogICAgIEdTVF9WSURFT19GT1JNQVRfWVVZMiwgR1NUX1ZJREVPX0ZPUk1BVF9JNDIwCiAgIH07CiAKLSAgZ2xfYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUik7CisgIGdsX2FsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZCAoR1NUX0dMX01FTU9SWV9BTExPQ0FUT1JfTkFNRSk7CiAgIGZhaWxfaWYgKGdsX2FsbG9jYXRvciA9PSBOVUxMKTsKKyAgYmFzZV9tZW1fYWxsb2MgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnbF9hbGxvY2F0b3IpOwogCiAgIC8qIHRlc3QgYWxsb2NhdG9yIGNyZWF0aW9uICovCiAgIEFTU0VSVF9XQVJOSU5HIChtZW0gPSBnc3RfYWxsb2NhdG9yX2FsbG9jIChnbF9hbGxvY2F0b3IsIDAsIE5VTEwpKTsKQEAgLTczLDcgKzc1LDEzIEBACiAgICAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJnZfaW5mbywgZm9ybWF0c1tpXSwgd2lkdGgsIGhlaWdodCk7CiAKICAgICBmb3IgKGogPSAwOyBqIDwgR1NUX1ZJREVPX0lORk9fTl9QTEFORVMgKCZ2X2luZm8pOyBqKyspIHsKLSAgICAgIG1lbSA9IGdzdF9nbF9tZW1vcnlfYWxsb2MgKGNvbnRleHQsIE5VTEwsICZ2X2luZm8sIGosIE5VTEwpOworICAgICAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKKworICAgICAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ldyAoY29udGV4dCwgTlVMTCwgJnZfaW5mbywgaiwKKyAgICAgICAgICBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpOworCisgICAgICBtZW0gPSAoR3N0TWVtb3J5ICopIGdzdF9nbF9iYXNlX21lbW9yeV9hbGxvYyAoYmFzZV9tZW1fYWxsb2MsCisgICAgICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOwogICAgICAgZmFpbF9pZiAobWVtID09IE5VTEwpOwogICAgICAgZ2xfbWVtID0gKEdzdEdMTWVtb3J5ICopIG1lbTsKIApAQCAtOTYsNiArMTA0LDcgQEAKICAgICAgICAgcHJpbnRmICgiJXNcbiIsIGdzdF9nbF9jb250ZXh0X2dldF9lcnJvciAoKSk7CiAgICAgICBmYWlsX2lmIChnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkgIT0gTlVMTCk7CiAKKyAgICAgIGdzdF9nbF9hbGxvY2F0aW9uX3BhcmFtc19mcmVlICgoR3N0R0xBbGxvY2F0aW9uUGFyYW1zICopIHBhcmFtcyk7CiAgICAgICBnc3RfbWVtb3J5X3VucmVmIChtZW0pOwogICAgICAgZ3N0X21lbW9yeV91bnJlZiAobWVtMik7CiAgICAgfQpAQCAtMTExLDk3ICsxMjAsMTE2IEBACiAgIDB4ZmYsIDB4MDAsIDB4MDAsIDB4ZmYsCiB9OwogCi1HU1RfU1RBUlRfVEVTVCAodGVzdF90cmFuc2ZlcikKK3N0YXRpYyB2b2lkCit0ZXN0X3RyYW5zZmVyX2FsbG9jYXRvciAoY29uc3QgZ2NoYXIgKiBhbGxvY2F0b3JfbmFtZSkKIHsKICAgR3N0QWxsb2NhdG9yICpnbF9hbGxvY2F0b3I7CisgIEdzdEdMQmFzZU1lbW9yeUFsbG9jYXRvciAqYmFzZV9tZW1fYWxsb2M7CiAgIEdzdFZpZGVvSW5mbyB2X2luZm87CiAgIEdzdE1lbW9yeSAqbWVtLCAqbWVtMiwgKm1lbTM7CiAgIEdzdE1hcEluZm8gbWFwX2luZm87CisgIEdzdEdMVmlkZW9BbGxvY2F0aW9uUGFyYW1zICpwYXJhbXM7CiAKLSAgZ2xfYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUik7CisgIGdsX2FsbG9jYXRvciA9IGdzdF9hbGxvY2F0b3JfZmluZCAoYWxsb2NhdG9yX25hbWUpOwogICBmYWlsX2lmIChnbF9hbGxvY2F0b3IgPT0gTlVMTCk7CisgIGJhc2VfbWVtX2FsbG9jID0gR1NUX0dMX0JBU0VfTUVNT1JZX0FMTE9DQVRPUiAoZ2xfYWxsb2NhdG9yKTsKIAogICBnc3RfdmlkZW9faW5mb19zZXRfZm9ybWF0ICgmdl9pbmZvLCBHU1RfVklERU9fRk9STUFUX1JHQkEsIDEsIDEpOwogCisgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXcgKGNvbnRleHQsIE5VTEwsICZ2X2luZm8sIDAsCisgICAgICBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQpOworCiAgIC8qIHRleHR1cmUgY3JlYXRpb24gKi8KLSAgbWVtID0gKEdzdE1lbW9yeSAqKSBnc3RfZ2xfbWVtb3J5X2FsbG9jIChjb250ZXh0LCBOVUxMLCAmdl9pbmZvLCAwLCBOVUxMKTsKKyAgbWVtID0gKEdzdE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAogICAvKiB0ZXN0IHdyYXBwaW5nIHJhdyBkYXRhICovCisgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF9kYXRhIChjb250ZXh0LCBOVUxMLAorICAgICAgJnZfaW5mbywgMCwgTlVMTCwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJELCByZ2JhX3BpeGVsLCBOVUxMLCBOVUxMKTsKICAgbWVtMiA9Ci0gICAgICAoR3N0TWVtb3J5ICopIGdzdF9nbF9tZW1vcnlfd3JhcHBlZCAoY29udGV4dCwgJnZfaW5mbywgMCwgTlVMTCwKLSAgICAgIHJnYmFfcGl4ZWwsIE5VTEwsIE5VTEwpOworICAgICAgKEdzdE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOwogICBmYWlsX2lmIChtZW0gPT0gTlVMTCk7CiAKICAgZmFpbF91bmxlc3MgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTIsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKTsKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCiAgIC8qIHdyYXBwZWQgdGV4dHVyZSBjcmVhdGlvbiAqLwotICBtZW0zID0gKEdzdE1lbW9yeSAqKSBnc3RfZ2xfbWVtb3J5X3dyYXBwZWRfdGV4dHVyZSAoY29udGV4dCwKLSAgICAgICgoR3N0R0xNZW1vcnkgKikgbWVtKS0+dGV4X2lkLCBHTF9URVhUVVJFXzJELCAmdl9pbmZvLCAwLCBOVUxMLCBOVUxMLAotICAgICAgTlVMTCk7CisgIHBhcmFtcyA9IGdzdF9nbF92aWRlb19hbGxvY2F0aW9uX3BhcmFtc19uZXdfd3JhcHBlZF90ZXh0dXJlIChjb250ZXh0LCBOVUxMLAorICAgICAgJnZfaW5mbywgMCwgTlVMTCwgR1NUX0dMX1RFWFRVUkVfVEFSR0VUXzJELCAoKEdzdEdMTWVtb3J5ICopIG1lbSktPnRleF9pZCwKKyAgICAgIE5VTEwsIE5VTEwpOworICBtZW0zID0KKyAgICAgIChHc3RNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvYywKKyAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0zLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0zLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCkpOwogCiAgIC8qIGNoZWNrIGRhdGEvZmxhZ3MgYXJlIGNvcnJlY3QgKi8KICAgZmFpbF91bmxlc3MgKGdzdF9tZW1vcnlfbWFwIChtZW0yLCAmbWFwX2luZm8sIEdTVF9NQVBfUkVBRCkpOwogCiAgIGZhaWxfdW5sZXNzIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMiwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVswXSA9PSByZ2JhX3BpeGVsWzBdKTsKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbMV0gPT0gcmdiYV9waXhlbFsxXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIG1hcF9pbmZvLmRhdGEpWzJdID09IHJnYmFfcGl4ZWxbMl0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVszXSA9PSByZ2JhX3BpeGVsWzNdKTsKKyAgZmFpbF91bmxlc3MgKG1lbWNtcCAobWFwX2luZm8uZGF0YSwgcmdiYV9waXhlbCwKKyAgICAgICAgICBHX05fRUxFTUVOVFMgKHJnYmFfcGl4ZWwpKSA9PSAwLAorICAgICAgIjB4JTAyeCUwMnglMDJ4JTAyeCAhPSAweCUwMnglMDJ4JTAyeCUwMngiLCBtYXBfaW5mby5kYXRhWzBdLAorICAgICAgbWFwX2luZm8uZGF0YVsxXSwgbWFwX2luZm8uZGF0YVsyXSwgbWFwX2luZm8uZGF0YVszXSwKKyAgICAgIChndWludDgpIHJnYmFfcGl4ZWxbMF0sIChndWludDgpIHJnYmFfcGl4ZWxbMV0sIChndWludDgpIHJnYmFfcGl4ZWxbMl0sCisgICAgICAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzNdKTsKIAogICBnc3RfbWVtb3J5X3VubWFwIChtZW0yLCAmbWFwX2luZm8pOwogCiAgIGZhaWxfdW5sZXNzIChHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMiwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAogICBmYWlsX3VubGVzcyAoZ3N0X21lbW9yeV9tYXAgKG1lbTIsICZtYXBfaW5mbywgR1NUX01BUF9SRUFEIHwgR1NUX01BUF9HTCkpOwogCiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMiwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTIsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSk7CiAKICAgLyogdGVzdCB0ZXh0dXJlIGNvcHkgKi8KLSAgZmFpbF91bmxlc3MgKGdzdF9nbF9tZW1vcnlfY29weV9pbnRvX3RleHR1cmUgKChHc3RHTE1lbW9yeSAqKSBtZW0yLAotICAgICAgICAgICgoR3N0R0xNZW1vcnkgKikgbWVtKS0+dGV4X2lkLCBHU1RfVklERU9fR0xfVEVYVFVSRV9UWVBFX1JHQkEsIDEsIDEsCi0gICAgICAgICAgNCwgRkFMU0UpKTsKLSAgR1NUX01JTklfT0JKRUNUX0ZMQUdfU0VUIChtZW0sIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfRE9XTkxPQUQpOwotICBHU1RfR0xfTUVNT1JZX0FERF9UUkFOU0ZFUiAobWVtLCBHU1RfR0xfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpOworICBmYWlsX3VubGVzcyAoZ3N0X2dsX21lbW9yeV9jb3B5X2ludG8gKChHc3RHTE1lbW9yeSAqKSBtZW0yLAorICAgICAgICAgICgoR3N0R0xNZW1vcnkgKikgbWVtKS0+dGV4X2lkLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsCisgICAgICAgICAgR1NUX1ZJREVPX0dMX1RFWFRVUkVfVFlQRV9SR0JBLCAxLCAxKSk7CisgIEdTVF9NSU5JX09CSkVDVF9GTEFHX1NFVCAobWVtLCBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9ET1dOTE9BRCk7CiAKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0yLAotICAgICAgICAgIEdTVF9HTF9CQVNFX0JVRkZFUl9GTEFHX05FRURfVVBMT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfVVBMT0FEKSk7CiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMiwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0sCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKTsKICAgZmFpbF91bmxlc3MgKEdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAogICBnc3RfbWVtb3J5X3VubWFwIChtZW0yLCAmbWFwX2luZm8pOwogCiAgIC8qIHRlc3QgZG93bmxvYWQgb2YgY29waWVkIHRleHR1cmUgKi8KICAgZmFpbF91bmxlc3MgKGdzdF9tZW1vcnlfbWFwIChtZW0sICZtYXBfaW5mbywgR1NUX01BUF9SRUFEKSk7CiAKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbMF0gPT0gcmdiYV9waXhlbFswXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIG1hcF9pbmZvLmRhdGEpWzFdID09IHJnYmFfcGl4ZWxbMV0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVsyXSA9PSByZ2JhX3BpeGVsWzJdKTsKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbM10gPT0gcmdiYV9waXhlbFszXSk7CisgIGZhaWxfdW5sZXNzIChtZW1jbXAgKG1hcF9pbmZvLmRhdGEsIHJnYmFfcGl4ZWwsCisgICAgICAgICAgR19OX0VMRU1FTlRTIChyZ2JhX3BpeGVsKSkgPT0gMCwKKyAgICAgICIweCUwMnglMDJ4JTAyeCUwMnggIT0gMHglMDJ4JTAyeCUwMnglMDJ4IiwgKGd1aW50OCkgbWFwX2luZm8uZGF0YVswXSwKKyAgICAgIChndWludDgpIG1hcF9pbmZvLmRhdGFbMV0sIChndWludDgpIG1hcF9pbmZvLmRhdGFbMl0sCisgICAgICAoZ3VpbnQ4KSBtYXBfaW5mby5kYXRhWzNdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzBdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzFdLAorICAgICAgKGd1aW50OCkgcmdiYV9waXhlbFsyXSwgKGd1aW50OCkgcmdiYV9waXhlbFszXSk7CiAKICAgZ3N0X21lbW9yeV91bm1hcCAobWVtLCAmbWFwX2luZm8pOwogCkBAIC0yMDksMTQgKzIzNywxNiBAQAogICBmYWlsX3VubGVzcyAoZ3N0X21lbW9yeV9tYXAgKG1lbTMsICZtYXBfaW5mbywgR1NUX01BUF9SRUFEKSk7CiAKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0sCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9VUExPQUQpKTsKKyAgICAgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfVFJBTlNGRVJfTkVFRF9VUExPQUQpKTsKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0sCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSk7CiAKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbMF0gPT0gcmdiYV9waXhlbFswXSk7Ci0gIGZhaWxfdW5sZXNzICgoKGdjaGFyICopIG1hcF9pbmZvLmRhdGEpWzFdID09IHJnYmFfcGl4ZWxbMV0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBtYXBfaW5mby5kYXRhKVsyXSA9PSByZ2JhX3BpeGVsWzJdKTsKLSAgZmFpbF91bmxlc3MgKCgoZ2NoYXIgKikgbWFwX2luZm8uZGF0YSlbM10gPT0gcmdiYV9waXhlbFszXSk7CisgIGZhaWxfdW5sZXNzIChtZW1jbXAgKG1hcF9pbmZvLmRhdGEsIHJnYmFfcGl4ZWwsCisgICAgICAgICAgR19OX0VMRU1FTlRTIChyZ2JhX3BpeGVsKSkgPT0gMCwKKyAgICAgICIweCUwMnglMDJ4JTAyeCUwMnggIT0gMHglMDJ4JTAyeCUwMnglMDJ4IiwgKGd1aW50OCkgbWFwX2luZm8uZGF0YVswXSwKKyAgICAgIChndWludDgpIG1hcF9pbmZvLmRhdGFbMV0sIChndWludDgpIG1hcF9pbmZvLmRhdGFbMl0sCisgICAgICAoZ3VpbnQ4KSBtYXBfaW5mby5kYXRhWzNdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzBdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzFdLAorICAgICAgKGd1aW50OCkgcmdiYV9waXhlbFsyXSwgKGd1aW50OCkgcmdiYV9waXhlbFszXSk7CiAKICAgZ3N0X21lbW9yeV91bm1hcCAobWVtMywgJm1hcF9pbmZvKTsKIApAQCAtMjI1LDE4ICsyNTUsMTggQEAKICAgZ3N0X21lbW9yeV91bm1hcCAobWVtMywgJm1hcF9pbmZvKTsKIAogICBmYWlsX3VubGVzcyAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMywKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbTMsCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSk7CiAKICAgLyogdGVzdCBkb3dubG9hZCBmbGFnICovCiAgIGZhaWxfdW5sZXNzIChnc3RfbWVtb3J5X21hcCAobWVtMywgJm1hcF9pbmZvLCBHU1RfTUFQX1dSSVRFIHwgR1NUX01BUF9HTCkpOwogICBnc3RfbWVtb3J5X3VubWFwIChtZW0zLCAmbWFwX2luZm8pOwogCiAgIGZhaWxfdW5sZXNzICghR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMywKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX1VQTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX1VQTE9BRCkpOwogICBmYWlsX3VubGVzcyAoR1NUX01FTU9SWV9GTEFHX0lTX1NFVCAobWVtMywKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAogICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2Vycm9yICgpKQogICAgIHByaW50ZiAoIiVzXG4iLCBnc3RfZ2xfY29udGV4dF9nZXRfZXJyb3IgKCkpOwpAQCAtMjQ4LDM4ICsyNzgsNTIgQEAKICAgZ3N0X29iamVjdF91bnJlZiAoZ2xfYWxsb2NhdG9yKTsKIH0KIAorCitHU1RfU1RBUlRfVEVTVCAodGVzdF90cmFuc2ZlcikKK3sKKyAgdGVzdF90cmFuc2Zlcl9hbGxvY2F0b3IgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SX05BTUUpOworICB0ZXN0X3RyYW5zZmVyX2FsbG9jYXRvciAoR1NUX0dMX01FTU9SWV9QQk9fQUxMT0NBVE9SX05BTUUpOworfQorCiBHU1RfRU5EX1RFU1Q7CiAKIEdTVF9TVEFSVF9URVNUICh0ZXN0X3NlcGFyYXRlX3RyYW5zZmVyKQogeworICBHc3RHTEJhc2VNZW1vcnlBbGxvY2F0b3IgKmJhc2VfbWVtX2FsbG9jOworICBHc3RHTFZpZGVvQWxsb2NhdGlvblBhcmFtcyAqcGFyYW1zOwogICBHc3RBbGxvY2F0b3IgKmdsX2FsbG9jYXRvcjsKICAgR3N0VmlkZW9JbmZvIHZfaW5mbzsKICAgR3N0TWVtb3J5ICptZW07CiAgIEdzdE1hcEluZm8gaW5mbzsKIAotICBnbF9hbGxvY2F0b3IgPSBnc3RfYWxsb2NhdG9yX2ZpbmQgKEdTVF9HTF9NRU1PUllfQUxMT0NBVE9SKTsKKyAgZ2xfYWxsb2NhdG9yID0gZ3N0X2FsbG9jYXRvcl9maW5kIChHU1RfR0xfTUVNT1JZX1BCT19BTExPQ0FUT1JfTkFNRSk7CiAgIGZhaWxfaWYgKGdsX2FsbG9jYXRvciA9PSBOVUxMKTsKKyAgYmFzZV9tZW1fYWxsb2MgPSBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnbF9hbGxvY2F0b3IpOwogCiAgIGdzdF92aWRlb19pbmZvX3NldF9mb3JtYXQgKCZ2X2luZm8sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgMSwgMSk7CiAKKyAgcGFyYW1zID0gZ3N0X2dsX3ZpZGVvX2FsbG9jYXRpb25fcGFyYW1zX25ld193cmFwcGVkX2RhdGEgKGNvbnRleHQsIE5VTEwsCisgICAgICAmdl9pbmZvLCAwLCBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsIHJnYmFfcGl4ZWwsIE5VTEwsIE5VTEwpOwogICBtZW0gPQotICAgICAgKEdzdE1lbW9yeSAqKSBnc3RfZ2xfbWVtb3J5X3dyYXBwZWQgKGNvbnRleHQsICZ2X2luZm8sIDAsIE5VTEwsCi0gICAgICByZ2JhX3BpeGVsLCBOVUxMLCBOVUxMKTsKKyAgICAgIChHc3RNZW1vcnkgKikgZ3N0X2dsX2Jhc2VfbWVtb3J5X2FsbG9jIChiYXNlX21lbV9hbGxvYywKKyAgICAgIChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKKyAgZ3N0X2dsX2FsbG9jYXRpb25fcGFyYW1zX2ZyZWUgKChHc3RHTEFsbG9jYXRpb25QYXJhbXMgKikgcGFyYW1zKTsKICAgZmFpbF9pZiAobWVtID09IE5VTEwpOwogICBmYWlsX3VubGVzcyAoIUdTVF9NRU1PUllfRkxBR19JU19TRVQgKG1lbSwKLSAgICAgICAgICBHU1RfR0xfQkFTRV9CVUZGRVJfRkxBR19ORUVEX0RPV05MT0FEKSk7CisgICAgICAgICAgR1NUX0dMX0JBU0VfTUVNT1JZX1RSQU5TRkVSX05FRURfRE9XTkxPQUQpKTsKIAotICBnc3RfZ2xfbWVtb3J5X3VwbG9hZF90cmFuc2ZlciAoKEdzdEdMTWVtb3J5ICopIG1lbSk7CisgIGdzdF9nbF9tZW1vcnlfcGJvX3VwbG9hZF90cmFuc2ZlciAoKEdzdEdMTWVtb3J5UEJPICopIG1lbSk7CiAKICAgZmFpbF91bmxlc3MgKCFHU1RfTUVNT1JZX0ZMQUdfSVNfU0VUIChtZW0sCi0gICAgICAgICAgR1NUX0dMX0JBU0VfQlVGRkVSX0ZMQUdfTkVFRF9ET1dOTE9BRCkpOworICAgICAgICAgIEdTVF9HTF9CQVNFX01FTU9SWV9UUkFOU0ZFUl9ORUVEX0RPV05MT0FEKSk7CiAKICAgZmFpbF91bmxlc3MgKGdzdF9tZW1vcnlfbWFwIChtZW0sICZpbmZvLCBHU1RfTUFQX1JFQUQpKTsKIAotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBpbmZvLmRhdGEpWzBdID09IHJnYmFfcGl4ZWxbMF0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBpbmZvLmRhdGEpWzFdID09IHJnYmFfcGl4ZWxbMV0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBpbmZvLmRhdGEpWzJdID09IHJnYmFfcGl4ZWxbMl0pOwotICBmYWlsX3VubGVzcyAoKChnY2hhciAqKSBpbmZvLmRhdGEpWzNdID09IHJnYmFfcGl4ZWxbM10pOworICBmYWlsX3VubGVzcyAobWVtY21wIChpbmZvLmRhdGEsIHJnYmFfcGl4ZWwsIEdfTl9FTEVNRU5UUyAocmdiYV9waXhlbCkpID09IDAsCisgICAgICAiMHglMDJ4JTAyeCUwMnglMDJ4ICE9IDB4JTAyeCUwMnglMDJ4JTAyeCIsIChndWludDgpIGluZm8uZGF0YVswXSwKKyAgICAgIChndWludDgpIGluZm8uZGF0YVsxXSwgKGd1aW50OCkgaW5mby5kYXRhWzJdLAorICAgICAgKGd1aW50OCkgaW5mby5kYXRhWzNdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzBdLCAoZ3VpbnQ4KSByZ2JhX3BpeGVsWzFdLAorICAgICAgKGd1aW50OCkgcmdiYV9waXhlbFsyXSwgKGd1aW50OCkgcmdiYV9waXhlbFszXSk7CiAKICAgZ3N0X21lbW9yeV91bm1hcCAobWVtLCAmaW5mbyk7CiAKZGlmZiAtLWdpdCBhL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xxdWVyeS5jIGIvdGVzdHMvY2hlY2svbGlicy9nc3RnbHF1ZXJ5LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRmYTI0MAotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xxdWVyeS5jCkBAIC0wLDAgKzEsMTUwIEBACisvKiBHU3RyZWFtZXIKKyAqIENvcHlyaWdodCAoQykgMjAxNiBNYXR0aGV3IFdhdGVycyA8bWF0dGhld0BjZW50cmljdWxhci5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2lmZGVmIEhBVkVfQ09ORklHX0gKKyMgIGluY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnc3QvY2hlY2svZ3N0Y2hlY2suaD4KKworI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworc3RhdGljIEdzdEdMRGlzcGxheSAqZGlzcGxheTsKK3N0YXRpYyBHc3RHTENvbnRleHQgKmNvbnRleHQ7CisKK0dTVF9ERUJVR19DQVRFR09SWV9TVEFUSUMgKGdzdF90ZXN0X2RlYnVnX2NhdCk7CisKK3N0YXRpYyB2b2lkCitzZXR1cCAodm9pZCkKK3sKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisKKyAgZGlzcGxheSA9IGdzdF9nbF9kaXNwbGF5X25ldyAoKTsKKyAgY29udGV4dCA9IGdzdF9nbF9jb250ZXh0X25ldyAoZGlzcGxheSk7CisKKyAgZ3N0X2dsX2NvbnRleHRfY3JlYXRlIChjb250ZXh0LCBOVUxMLCAmZXJyb3IpOworCisgIGZhaWxfaWYgKGVycm9yICE9IE5VTEwsICJFcnJvciBjcmVhdGluZyBjb250ZXh0OiAlc1xuIiwKKyAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiVW5rbm93biBFcnJvciIpOworfQorCitzdGF0aWMgdm9pZAordGVhcmRvd24gKHZvaWQpCit7CisgIGdzdF9vYmplY3RfdW5yZWYgKGRpc3BsYXkpOworICBnc3Rfb2JqZWN0X3VucmVmIChjb250ZXh0KTsKK30KKworc3RhdGljIHZvaWQKK190ZXN0X3F1ZXJ5X2dsIChHc3RHTENvbnRleHQgKiBjb250ZXh0LCBncG9pbnRlciBkYXRhKQoreworICBHc3RHTFF1ZXJ5ICpxMSwgcTI7CisKKyAgcTEgPSBnc3RfZ2xfcXVlcnlfbmV3IChjb250ZXh0LCBHU1RfR0xfUVVFUllfVElNRV9FTEFQU0VEKTsKKyAgZmFpbF9pZiAocTEgPT0gTlVMTCk7CisKKyAgZ3N0X2dsX3F1ZXJ5X3N0YXJ0X2xvZyAocTEsIE5VTEwsIEdTVF9MRVZFTF9FUlJPUiwgTlVMTCwgIiVzIiwKKyAgICAgICIxLiB0ZXN0aW5nIHF1ZXJ5IHByb3h5LWxvZ2dpbmciKTsKKyAgZ3N0X2dsX3F1ZXJ5X2VuZCAocTEpOworICAvKiBHU1RfR0xfUVVFUllfVElNRV9FTEFQU0VEIGRvZXNuJ3Qgc3VwcG9ydGVkIGNvdW50ZXIoKSAqLworICBBU1NFUlRfQ1JJVElDQUwgKGdzdF9nbF9xdWVyeV9jb3VudGVyIChxMSkpOworICBnc3RfZ2xfcXVlcnlfcmVzdWx0IChxMSk7CisKKyAgZ3N0X2dsX3F1ZXJ5X2ZyZWUgKHExKTsKKworICBnc3RfZ2xfcXVlcnlfaW5pdCAoJnEyLCBjb250ZXh0LCBHU1RfR0xfUVVFUllfVElNRVNUQU1QKTsKKworICAvKiBHU1RfR0xfUVVFUllfVElNRVNUQU1QIGRvZXNuJ3Qgc3VwcG9ydGVkIHN0YXJ0KCkvZW5kKCkgKi8KKyAgQVNTRVJUX0NSSVRJQ0FMIChnc3RfZ2xfcXVlcnlfc3RhcnQgKCZxMikpOworICBBU1NFUlRfQ1JJVElDQUwgKGdzdF9nbF9xdWVyeV9lbmQgKCZxMikpOworCisgIGdzdF9nbF9xdWVyeV9jb3VudGVyX2xvZyAoJnEyLCBnc3RfdGVzdF9kZWJ1Z19jYXQsIEdTVF9MRVZFTF9FUlJPUiwgTlVMTCwKKyAgICAgICIlcyIsICIyLiB0ZXN0aW5nIHF1ZXJ5IHByb3h5LWxvZ2dpbmcgd29ya3MgZnJvbSBfdW5zZXQoKSIpOworICBnc3RfZ2xfcXVlcnlfcmVzdWx0ICgmcTIpOworCisgIGdzdF9nbF9xdWVyeV91bnNldCAoJnEyKTsKKworICAvKiBubyB1c2FnZSAqLworICBnc3RfZ2xfcXVlcnlfaW5pdCAoJnEyLCBjb250ZXh0LCBHU1RfR0xfUVVFUllfVElNRVNUQU1QKTsKKyAgZ3N0X2dsX3F1ZXJ5X3Vuc2V0ICgmcTIpOworCisgIC8qIHRlc3QgbWlzbWF0Y2hlZCBzdGFydCgpL2ZyZWUoKSAqLworICBxMSA9IGdzdF9nbF9xdWVyeV9uZXcgKGNvbnRleHQsIEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQpOworICBmYWlsX2lmIChxMSA9PSBOVUxMKTsKKworICBnc3RfZ2xfcXVlcnlfc3RhcnQgKHExKTsKKworICBBU1NFUlRfQ1JJVElDQUwgKGdzdF9nbF9xdWVyeV9mcmVlIChxMSkpOworCisgIC8qIHRlc3QgbWlzbWF0Y2hlZCBzdGFydCgpL3Jlc3VsdCgpICovCisgIHExID0gZ3N0X2dsX3F1ZXJ5X25ldyAoY29udGV4dCwgR1NUX0dMX1FVRVJZX1RJTUVfRUxBUFNFRCk7CisgIGZhaWxfaWYgKHExID09IE5VTEwpOworCisgIGdzdF9nbF9xdWVyeV9zdGFydCAocTEpOworICBBU1NFUlRfQ1JJVElDQUwgKGdzdF9nbF9xdWVyeV9yZXN1bHQgKHExKSk7CisgIGdzdF9nbF9xdWVyeV9lbmQgKHExKTsKKworICBnc3RfZ2xfcXVlcnlfZnJlZSAocTEpOworCisgIC8qIHRlc3QgbWlzbWF0Y2hlZCBlbmQoKSAqLworICBxMSA9IGdzdF9nbF9xdWVyeV9uZXcgKGNvbnRleHQsIEdTVF9HTF9RVUVSWV9USU1FX0VMQVBTRUQpOworICBmYWlsX2lmIChxMSA9PSBOVUxMKTsKKyAgQVNTRVJUX0NSSVRJQ0FMIChnc3RfZ2xfcXVlcnlfZW5kIChxMSkpOworICBnc3RfZ2xfcXVlcnlfZnJlZSAocTEpOworCisgIC8qIHRlc3QgZG91YmxlIGVuZCgpICovCisgIHExID0gZ3N0X2dsX3F1ZXJ5X25ldyAoY29udGV4dCwgR1NUX0dMX1FVRVJZX1RJTUVfRUxBUFNFRCk7CisgIGZhaWxfaWYgKHExID09IE5VTEwpOworCisgIGdzdF9nbF9xdWVyeV9zdGFydCAocTEpOworICBnc3RfZ2xfcXVlcnlfZW5kIChxMSk7CisgIEFTU0VSVF9DUklUSUNBTCAoZ3N0X2dsX3F1ZXJ5X2VuZCAocTEpKTsKKworICBnc3RfZ2xfcXVlcnlfZnJlZSAocTEpOworCisgIC8qIGRvdWJsZSBzdGFydCBpcyBhbGxvd2VkICovCit9CisKK0dTVF9TVEFSVF9URVNUICh0ZXN0X3F1ZXJ5KQoreworICBnc3RfZ2xfY29udGV4dF90aHJlYWRfYWRkIChjb250ZXh0LCAoR3N0R0xDb250ZXh0VGhyZWFkRnVuYykgX3Rlc3RfcXVlcnlfZ2wsCisgICAgICBOVUxMKTsKK30KKworR1NUX0VORF9URVNUOworCitzdGF0aWMgU3VpdGUgKgorZ3N0X2dsX3VwbG9hZF9zdWl0ZSAodm9pZCkKK3sKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJHc3RHTFF1ZXJ5Iik7CisgIFRDYXNlICp0Y19jaGFpbiA9IHRjYXNlX2NyZWF0ZSAoImdscXVlcnkiKTsKKworICBHU1RfREVCVUdfQ0FURUdPUllfSU5JVCAoZ3N0X3Rlc3RfZGVidWdfY2F0LCAidGVzdC1kZWJ1ZyIsIDAsCisgICAgICAicHJveHktbG9nZ2luZyB0ZXN0IGRlYnVnIik7CisKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19jaGFpbik7CisgIHRjYXNlX2FkZF9jaGVja2VkX2ZpeHR1cmUgKHRjX2NoYWluLCBzZXR1cCwgdGVhcmRvd24pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcXVlcnkpOworCisgIHJldHVybiBzOworfQorCitHU1RfQ0hFQ0tfTUFJTiAoZ3N0X2dsX3VwbG9hZCk7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsc2wuYyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2xzbC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3YTdjMGMKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9jaGVjay9saWJzL2dzdGdsc2wuYwpAQCAtMCwwICsxLDMwOCBAQAorLyogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpZmRlZiBIQVZFX0NPTkZJR19ICisjICBpbmNsdWRlICJjb25maWcuaCIKKyNlbmRpZgorCisjaW5jbHVkZSA8Z3N0L2NoZWNrL2dzdGNoZWNrLmg+CisKKyNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xzbC5oPgorCisjaW5jbHVkZSA8c3RkaW8uaD4KKworc3RhdGljIHZvaWQKK3NldHVwICh2b2lkKQoreworfQorCitzdGF0aWMgdm9pZAordGVhcmRvd24gKHZvaWQpCit7Cit9CisKKy8qICpJTkRFTlQtT0ZGKiAqLworc3RhdGljIGNvbnN0IHN0cnVjdCB7R3N0R0xTTFZlcnNpb24gdmVyc2lvbjsgY29uc3QgZ2NoYXIgKiBuYW1lO30gZ2xzbF92ZXJzaW9uc1tdID0geworICB7R1NUX0dMU0xfVkVSU0lPTl8xMDAsICIxMDAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTEwLCAiMTEwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEyMCwgIjEyMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMzAsICIxMzAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTQwLCAiMTQwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzE1MCwgIjE1MCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMDAsICIzMDAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzEwLCAiMzEwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMyMCwgIjMyMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMzAsICIzMzAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDAwLCAiNDAwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQxMCwgIjQxMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MjAsICI0MjAifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDMwLCAiNDMwIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ0MCwgIjQ0MCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80NTAsICI0NTAifSwKK307CisKK3N0YXRpYyBjb25zdCBzdHJ1Y3Qge0dzdEdMU0xQcm9maWxlIHByb2ZpbGU7IGNvbnN0IGdjaGFyICogbmFtZTt9IGdsc2xfcHJvZmlsZXNbXSA9IHsKKyAge0dTVF9HTFNMX1BST0ZJTEVfRVMsICJlcyJ9LAorICB7R1NUX0dMU0xfUFJPRklMRV9DT1JFLCAiY29yZSJ9LAorICB7R1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiY29tcGF0aWJpbGl0eSJ9LAorfTsKKworc3RhdGljIGNvbnN0IHN0cnVjdCB7R3N0R0xTTFZlcnNpb24gdmVyc2lvbjsgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsgY29uc3QgZ2NoYXIgKiBuYW1lO30gZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzW10gPSB7CisgIHtHU1RfR0xTTF9WRVJTSU9OXzEwMCwgR1NUX0dMU0xfUFJPRklMRV9FUywgIjEwMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjExMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMjAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjEyMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMzAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjEzMCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjE0MCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjE1MCJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMDAsIEdTVF9HTFNMX1BST0ZJTEVfRVMsICIzMDAgZXMifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzEwLCBHU1RfR0xTTF9QUk9GSUxFX0VTLCAiMzEwIGVzIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMyMCwgR1NUX0dMU0xfUFJPRklMRV9FUywgIjMyMCBlcyJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMzAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRSwgIjMzMCBjb3JlIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMzMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiMzMwIGNvbXBhdGliaWxpdHkifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDAwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkUsICI0MDAgY29yZSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjQwMCBjb21wYXRpYmlsaXR5In0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQxMCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFLCAiNDEwIGNvcmUifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDEwLCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksICI0MTAgY29tcGF0aWJpbGl0eSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MjAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRSwgIjQyMCBjb3JlIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQyMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiNDIwIGNvbXBhdGliaWxpdHkifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDMwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkUsICI0MzAgY29yZSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80MzAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWSwgIjQzMCBjb21wYXRpYmlsaXR5In0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ0MCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFLCAiNDQwIGNvcmUifSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fNDQwLCBHU1RfR0xTTF9QUk9GSUxFX0NPTVBBVElCSUxJVFksICI0NDAgY29tcGF0aWJpbGl0eSJ9LAorICB7R1NUX0dMU0xfVkVSU0lPTl80NTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRSwgIjQ1MCBjb3JlIn0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ1MCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZLCAiNDUwIGNvbXBhdGliaWxpdHkifSwKK307CisKK3N0YXRpYyBjb25zdCBnY2hhciAqIGludmFsaWRfZGVzZXJpYWxpemVfZ2xzbFtdID0geworICAiIiwKKyAgIiBcdFxyXG4iLAorICAiYWVsIGRqYSIsCisgICJlcyIsCisgICJjb3JlIiwKKyAgImNvbXBhdGliaWxpdHkiLAorICAiMTAwMCIsCisgICIxMDAgZXMiLAorICAiMTAwIGNvcmUiLAorICAiMTAwIGNvbXBhdGliaWxpdHkiLAorICAiMTUwIGVzIiwKKyAgIjE1MCBjb3JlIiwKKyAgIjE1MCBjb21wYXRpYmlsaXR5IiwKKyAgIjMwMCBjb3JlIiwKKyAgIjMwMCBjb21wYXRpYmlsaXR5IiwKKyAgIjMxMCBjb3JlIiwKKyAgIjMxMCBjb21wYXRpYmlsaXR5IiwKKyAgIjMyMCBjb3JlIiwKKyAgIjMyMCBjb21wYXRpYmlsaXR5IiwKKyAgIjMzMCBlcyIsCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHtHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOyBHc3RHTFNMUHJvZmlsZSBwcm9maWxlO30gaW52YWxpZF9zZXJpYWxpemVfZ2xzbFtdID0geworICB7R1NUX0dMU0xfVkVSU0lPTl8xMDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEwMCwgR1NUX0dMU0xfUFJPRklMRV9DT01QQVRJQklMSVRZfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTEwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTEwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMjAsIEdTVF9HTFNMX1BST0ZJTEVfRVN9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xMjAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEzMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzEzMCwgR1NUX0dMU0xfUFJPRklMRV9DT1JFfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTQwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMTQwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNTAsIEdTVF9HTFNMX1BST0ZJTEVfRVN9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8xNTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09SRX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMwMCwgR1NUX0dMU0xfUFJPRklMRV9OT05FfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzAwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMDAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMxMCwgR1NUX0dMU0xfUFJPRklMRV9OT05FfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzEwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMTAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMyMCwgR1NUX0dMU0xfUFJPRklMRV9OT05FfSwKKyAge0dTVF9HTFNMX1ZFUlNJT05fMzIwLCBHU1RfR0xTTF9QUk9GSUxFX0NPUkV9LAorICB7R1NUX0dMU0xfVkVSU0lPTl8zMjAsIEdTVF9HTFNMX1BST0ZJTEVfQ09NUEFUSUJJTElUWX0sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzMzMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQwMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQxMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQyMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQzMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ0MCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHtHU1RfR0xTTF9WRVJTSU9OXzQ1MCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCit9OworCitzdGF0aWMgY29uc3Qgc3RydWN0IHtjb25zdCBnY2hhciAqbmFtZTsgZ2Jvb2xlYW4gc3VjY2VlZDsgR3N0R0xTTFZlcnNpb24gdmVyc2lvbjsgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTt9IGdsc2xfc3RyX21hcFtdID0geworICB7Ii8vI3ZlcnNpb24gMTAwXG4iLCBGQUxTRSwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7Ii8qXG4jdmVyc2lvbiAxMDAqL1xuIiwgRkFMU0UsIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwgR1NUX0dMU0xfUFJPRklMRV9OT05FfSwKKyAgeyIvKlxyI3ZlcnNpb24gMTAwKi8iLCBGQUxTRSwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7IiNccnZlcnNpb24gMTAwIiwgRkFMU0UsIEdTVF9HTFNMX1ZFUlNJT05fTk9ORSwgR1NUX0dMU0xfUFJPRklMRV9OT05FfSwKKyAgeyIjXG52ZXJzaW9uIDEwMCIsIEZBTFNFLCBHU1RfR0xTTF9WRVJTSU9OX05PTkUsIEdTVF9HTFNMX1BST0ZJTEVfTk9ORX0sCisgIHsiXHQjdmVyc2lvbiAxMDAiLCBGQUxTRSwgR1NUX0dMU0xfVkVSU0lPTl9OT05FLCBHU1RfR0xTTF9QUk9GSUxFX05PTkV9LAorICB7Ii8vXHIjdmVyc2lvbiAxMDAiLCBUUlVFLCBHU1RfR0xTTF9WRVJTSU9OXzEwMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHsiLy9cbiN2ZXJzaW9uIDEwMCIsIFRSVUUsIEdTVF9HTFNMX1ZFUlNJT05fMTAwLCBHU1RfR0xTTF9QUk9GSUxFX0VTfSwKKyAgeyIjIFx0dmVyc2lvbiAxMDAiLCBUUlVFLCBHU1RfR0xTTF9WRVJTSU9OXzEwMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHsiXG4jdmVyc2lvbiAxMDAiLCBUUlVFLCBHU1RfR0xTTF9WRVJTSU9OXzEwMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCisgIHsiXHIjdmVyc2lvbiAxMDAiLCBUUlVFLCBHU1RfR0xTTF9WRVJTSU9OXzEwMCwgR1NUX0dMU0xfUFJPRklMRV9FU30sCit9OworLyogKklOREVOVC1PTiogKi8KKworR1NUX1NUQVJUX1RFU1QgKHRlc3Rfc2VyaWFsaXphdGlvbikKK3sKKyAgZ2ludCBpOworCisgIC8qIHZlcnNpb25zICovCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGdsc2xfdmVyc2lvbnMpOyBpKyspIHsKKyAgICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOworICAgIGNvbnN0IGdjaGFyICp2ZXJzaW9uX3M7CisKKyAgICB2ZXJzaW9uX3MgPSBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAoZ2xzbF92ZXJzaW9uc1tpXS52ZXJzaW9uKTsKKyAgICBmYWlsX3VubGVzcyAoZ19zdHJjbXAwICh2ZXJzaW9uX3MsIGdsc2xfdmVyc2lvbnNbaV0ubmFtZSkgPT0gMCwgIiVzICE9ICVzIiwKKyAgICAgICAgdmVyc2lvbl9zLCBnbHNsX3ZlcnNpb25zW2ldLm5hbWUpOworICAgIHZlcnNpb24gPSBnc3RfZ2xzbF92ZXJzaW9uX2Zyb21fc3RyaW5nIChnbHNsX3ZlcnNpb25zW2ldLm5hbWUpOworICAgIGZhaWxfdW5sZXNzICh2ZXJzaW9uID09IGdsc2xfdmVyc2lvbnNbaV0udmVyc2lvbiwgIiVzICE9ICVzIiwKKyAgICAgICAgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgKGdsc2xfdmVyc2lvbnNbaV0udmVyc2lvbiksCisgICAgICAgIGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nICh2ZXJzaW9uKSk7CisgIH0KKworICAvKiBwcm9maWxlcyAqLworICBmb3IgKGkgPSAwOyBpIDwgR19OX0VMRU1FTlRTIChnbHNsX3Byb2ZpbGVzKTsgaSsrKSB7CisgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsKKyAgICBjb25zdCBnY2hhciAqcHJvZmlsZV9zOworCisgICAgcHJvZmlsZV9zID0gZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKGdsc2xfcHJvZmlsZXNbaV0ucHJvZmlsZSk7CisgICAgZmFpbF91bmxlc3MgKGdfc3RyY21wMCAocHJvZmlsZV9zLCBnbHNsX3Byb2ZpbGVzW2ldLm5hbWUpID09IDAsICIlcyAhPSAlcyIsCisgICAgICAgIHByb2ZpbGVfcywgZ2xzbF9wcm9maWxlc1tpXS5uYW1lKTsKKyAgICBwcm9maWxlID0gZ3N0X2dsc2xfcHJvZmlsZV9mcm9tX3N0cmluZyAoZ2xzbF9wcm9maWxlc1tpXS5uYW1lKTsKKyAgICBmYWlsX3VubGVzcyAocHJvZmlsZSA9PSBnbHNsX3Byb2ZpbGVzW2ldLnByb2ZpbGUsICIlcyAhPSAlcyIsCisgICAgICAgIGdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nIChnbHNsX3Byb2ZpbGVzW2ldLnByb2ZpbGUpLAorICAgICAgICBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAocHJvZmlsZSkpOworICB9CisKKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzKTsgaSsrKSB7CisgICAgZ2NoYXIgKnZlcnNpb25fcHJvZmlsZV9zOworICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsKKworICAgIHZlcnNpb25fcHJvZmlsZV9zID0KKyAgICAgICAgZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZyAoZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzW2ldLnZlcnNpb24sCisgICAgICAgIGdsc2xfdmVyc2lvbl9wcm9maWxlc1tpXS5wcm9maWxlKTsKKyAgICBmYWlsX3VubGVzcyAoZ19zdHJjbXAwICh2ZXJzaW9uX3Byb2ZpbGVfcywKKyAgICAgICAgICAgIGdsc2xfdmVyc2lvbl9wcm9maWxlc1tpXS5uYW1lKSA9PSAwLCAiJXMgIT0gJXMiLCB2ZXJzaW9uX3Byb2ZpbGVfcywKKyAgICAgICAgZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzW2ldLm5hbWUpOworICAgIGZhaWxfdW5sZXNzIChnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfZnJvbV9zdHJpbmcgKGdsc2xfdmVyc2lvbl9wcm9maWxlcworICAgICAgICAgICAgW2ldLm5hbWUsICZ2ZXJzaW9uLCAmcHJvZmlsZSksICJGYWlsZWQgdG8gcGFyc2UgJXMiLAorICAgICAgICBnbHNsX3ZlcnNpb25fcHJvZmlsZXNbaV0ubmFtZSk7CisgICAgZmFpbF91bmxlc3MgKHByb2ZpbGUgPT0gZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzW2ldLnByb2ZpbGUKKyAgICAgICAgJiYgdmVyc2lvbiA9PSBnbHNsX3ZlcnNpb25fcHJvZmlsZXNbaV0udmVyc2lvbiwgIiVzICE9ICVzICVzIiwKKyAgICAgICAgZ2xzbF92ZXJzaW9uX3Byb2ZpbGVzW2ldLm5hbWUsIGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nICh2ZXJzaW9uKSwKKyAgICAgICAgZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKHByb2ZpbGUpKTsKKyAgICBnX2ZyZWUgKHZlcnNpb25fcHJvZmlsZV9zKTsKKyAgfQorCisgIC8qIGZhaWx1cmVzICovCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGludmFsaWRfZGVzZXJpYWxpemVfZ2xzbCk7IGkrKykgeworICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsKKworICAgIGZhaWxfaWYgKGdzdF9nbHNsX3ZlcnNpb25fcHJvZmlsZV9mcm9tX3N0cmluZyAoaW52YWxpZF9kZXNlcmlhbGl6ZV9nbHNsW2ldLAorICAgICAgICAgICAgJnZlcnNpb24sICZwcm9maWxlKSwKKyAgICAgICAgInN1Y2Nlc3NmdWxseSBkZXNlcmlhbGl6ZWQgJXMgaW50byAlcyAlcyAoc2hvdWxkIGhhdmUgZmFpbGVkKSIsCisgICAgICAgIGludmFsaWRfZGVzZXJpYWxpemVfZ2xzbFtpXSwgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgKHZlcnNpb24pLAorICAgICAgICBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAocHJvZmlsZSkpOworICB9CisKKyAgLyogZmFpbHVyZXMgKi8KKyAgZm9yIChpID0gMDsgaSA8IEdfTl9FTEVNRU5UUyAoaW52YWxpZF9zZXJpYWxpemVfZ2xzbCk7IGkrKykgeworICAgIGdjaGFyICp2ZXJzaW9uX3Byb2ZpbGVfczsKKworICAgIHZlcnNpb25fcHJvZmlsZV9zID0KKyAgICAgICAgZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX3RvX3N0cmluZyAoaW52YWxpZF9zZXJpYWxpemVfZ2xzbFtpXS52ZXJzaW9uLAorICAgICAgICBpbnZhbGlkX3NlcmlhbGl6ZV9nbHNsW2ldLnByb2ZpbGUpOworCisgICAgZmFpbF9pZiAodmVyc2lvbl9wcm9maWxlX3MgIT0gTlVMTCwKKyAgICAgICAgInN1Y2Nlc3NmdWxseSBzZXJpYWxpemVkICVzIGZyb20gJXMgJXMgKHNob3VsZCBoYXZlIGZhaWxlZCkiLAorICAgICAgICB2ZXJzaW9uX3Byb2ZpbGVfcywKKyAgICAgICAgZ3N0X2dsc2xfdmVyc2lvbl90b19zdHJpbmcgKGludmFsaWRfc2VyaWFsaXplX2dsc2xbaV0udmVyc2lvbiksCisgICAgICAgIGdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nIChpbnZhbGlkX3NlcmlhbGl6ZV9nbHNsW2ldLnByb2ZpbGUpKTsKKworICAgIGdfZnJlZSAodmVyc2lvbl9wcm9maWxlX3MpOworICB9CisKKyAgLyogbWFwIHN0cmluZ3MgdG8gdmVyc2lvbi9wcm9maWxlICovCisgIGZvciAoaSA9IDA7IGkgPCBHX05fRUxFTUVOVFMgKGdsc2xfc3RyX21hcCk7IGkrKykgeworICAgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgICAgR3N0R0xTTFByb2ZpbGUgcHJvZmlsZTsKKworICAgIGZhaWxfdW5sZXNzIChnbHNsX3N0cl9tYXBbaV0uc3VjY2VlZCA9PQorICAgICAgICBnc3RfZ2xzbF9zdHJpbmdfZ2V0X3ZlcnNpb25fcHJvZmlsZSAoZ2xzbF9zdHJfbWFwW2ldLm5hbWUsICZ2ZXJzaW9uLAorICAgICAgICAgICAgJnByb2ZpbGUpLCAiSW5jb3JyZWN0IHJlc3VsdCBmb3IgcGFyc2luZyBcJyVzXCc6ICVzIiwKKyAgICAgICAgZ2xzbF9zdHJfbWFwW2ldLm5hbWUsIGdsc2xfc3RyX21hcFtpXS5zdWNjZWVkID8gImZhbHNlIiA6ICJ0cnVlIik7CisgICAgaWYgKGdsc2xfc3RyX21hcFtpXS5zdWNjZWVkKSB7CisgICAgICBmYWlsX3VubGVzcyAodmVyc2lvbiA9PSBnbHNsX3N0cl9tYXBbaV0udmVyc2lvbiwgIldpdGggJXM6ICVzICE9ICVzIiwKKyAgICAgICAgICBnbHNsX3N0cl9tYXBbaV0ubmFtZSwKKyAgICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3RvX3N0cmluZyAoZ2xzbF9zdHJfbWFwW2ldLnZlcnNpb24pLAorICAgICAgICAgIGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nICh2ZXJzaW9uKSk7CisgICAgICBmYWlsX3VubGVzcyAocHJvZmlsZSA9PSBnbHNsX3N0cl9tYXBbaV0ucHJvZmlsZSwgIldpdGggJXM6ICVzICE9ICVzIiwKKyAgICAgICAgICBnbHNsX3N0cl9tYXBbaV0ubmFtZSwKKyAgICAgICAgICBnc3RfZ2xzbF9wcm9maWxlX3RvX3N0cmluZyAoZ2xzbF9zdHJfbWFwW2ldLnByb2ZpbGUpLAorICAgICAgICAgIGdzdF9nbHNsX3Byb2ZpbGVfdG9fc3RyaW5nIChwcm9maWxlKSk7CisgICAgfQorICB9CisKKyAgLyogc3BlY2lhbCBvbmVzICovCisgIHsKKyAgICBHc3RHTFNMVmVyc2lvbiB2ZXJzaW9uOworICAgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGU7CisgICAgZ2NoYXIgKnZlcnNpb25fcHJvZmlsZV9zOworCisgICAgdmVyc2lvbl9wcm9maWxlX3MgPQorICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nIChHU1RfR0xTTF9WRVJTSU9OXzEwMCwKKyAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9FUyk7CisgICAgZmFpbF91bmxlc3MgKGdfc3RyY21wMCAodmVyc2lvbl9wcm9maWxlX3MsICIxMDAiKSA9PSAwLCAiJXMgIT0gMTAwIiwKKyAgICAgICAgdmVyc2lvbl9wcm9maWxlX3MpOworICAgIGdfZnJlZSAodmVyc2lvbl9wcm9maWxlX3MpOworCisgICAgdmVyc2lvbl9wcm9maWxlX3MgPQorICAgICAgICBnc3RfZ2xzbF92ZXJzaW9uX3Byb2ZpbGVfdG9fc3RyaW5nIChHU1RfR0xTTF9WRVJTSU9OXzEwMCwKKyAgICAgICAgR1NUX0dMU0xfUFJPRklMRV9OT05FKTsKKyAgICBmYWlsX3VubGVzcyAoZ19zdHJjbXAwICh2ZXJzaW9uX3Byb2ZpbGVfcywgIjEwMCIpID09IDAsICIlcyAhPSAxMDAiLAorICAgICAgICB2ZXJzaW9uX3Byb2ZpbGVfcyk7CisgICAgZ19mcmVlICh2ZXJzaW9uX3Byb2ZpbGVfcyk7CisKKyAgICBmYWlsX3VubGVzcyAoZ3N0X2dsc2xfdmVyc2lvbl9wcm9maWxlX2Zyb21fc3RyaW5nICgiMTAwIiwgJnZlcnNpb24sCisgICAgICAgICAgICAmcHJvZmlsZSkpOworICAgIGZhaWxfdW5sZXNzICh2ZXJzaW9uID09IEdTVF9HTFNMX1ZFUlNJT05fMTAwCisgICAgICAgICYmIHByb2ZpbGUgPT0gR1NUX0dMU0xfUFJPRklMRV9FUywgIjEwMCAhPSAlcyAlcyIsCisgICAgICAgIGdzdF9nbHNsX3ZlcnNpb25fdG9fc3RyaW5nICh2ZXJzaW9uKSwKKyAgICAgICAgZ3N0X2dsc2xfcHJvZmlsZV90b19zdHJpbmcgKHByb2ZpbGUpKTsKKyAgfQorfQorCitHU1RfRU5EX1RFU1Q7CisKK3N0YXRpYyBTdWl0ZSAqCitnc3RfZ2xfdXBsb2FkX3N1aXRlICh2b2lkKQoreworICBTdWl0ZSAqcyA9IHN1aXRlX2NyZWF0ZSAoIkdzdEdMU0wiKTsKKyAgVENhc2UgKnRjX2NoYWluID0gdGNhc2VfY3JlYXRlICgiZ2xzbCIpOworCisgIHN1aXRlX2FkZF90Y2FzZSAocywgdGNfY2hhaW4pOworICB0Y2FzZV9hZGRfY2hlY2tlZF9maXh0dXJlICh0Y19jaGFpbiwgc2V0dXAsIHRlYXJkb3duKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X3NlcmlhbGl6YXRpb24pOworCisgIHJldHVybiBzOworfQorCitHU1RfQ0hFQ0tfTUFJTiAoZ3N0X2dsX3VwbG9hZCk7CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmMgYi90ZXN0cy9jaGVjay9saWJzL2dzdGdsdXBsb2FkLmMKaW5kZXggMTFlMmZlMC4uNjRkN2EzMyAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svbGlicy9nc3RnbHVwbG9hZC5jCisrKyBiL3Rlc3RzL2NoZWNrL2xpYnMvZ3N0Z2x1cGxvYWQuYwpAQCAtMjksNDEgKzI5LDE0IEBACiAKICNpbmNsdWRlIDxzdGRpby5oPgogCi0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLS8qICpJTkRFTlQtT0ZGKiAqLwotc3RhdGljIGNvbnN0IGdjaGFyICp2ZXJ0ZXhfc2hhZGVyX3N0cl9nbGVzMiA9Ci0gICAgICAiYXR0cmlidXRlIHZlYzQgYV9wb3NpdGlvbjsgICBcbiIKLSAgICAgICJhdHRyaWJ1dGUgdmVjMiBhX3RleENvb3JkOyAgIFxuIgotICAgICAgInZhcnlpbmcgdmVjMiB2X3RleENvb3JkOyAgICAgXG4iCi0gICAgICAidm9pZCBtYWluKCkgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgIiAgIGdsX1Bvc2l0aW9uID0gYV9wb3NpdGlvbjsgXG4iCi0gICAgICAiICAgdl90ZXhDb29yZCA9IGFfdGV4Q29vcmQ7ICBcbiIKLSAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIjsKLQotc3RhdGljIGNvbnN0IGdjaGFyICpmcmFnbWVudF9zaGFkZXJfc3RyX2dsZXMyID0KLSAgICAgICJwcmVjaXNpb24gbWVkaXVtcCBmbG9hdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAidmFyeWluZyB2ZWMyIHZfdGV4Q29vcmQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgInVuaWZvcm0gc2FtcGxlcjJEIHNfdGV4dHVyZTsgICAgICAgICAgICAgICAgICAgICAgICBcbiIKLSAgICAgICJ2b2lkIG1haW4oKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iCi0gICAgICAieyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxuIgotICAgICAgIiAgZ2xfRnJhZ0NvbG9yID0gdGV4dHVyZTJEKCBzX3RleHR1cmUsIHZfdGV4Q29vcmQgKTtcbiIKLSAgICAgICJ9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXG4iOwotLyogKklOREVOVC1PTiogKi8KLSNlbmRpZgotCiBzdGF0aWMgR3N0R0xEaXNwbGF5ICpkaXNwbGF5Owogc3RhdGljIEdzdEdMQ29udGV4dCAqY29udGV4dDsKIHN0YXRpYyBHc3RHTFdpbmRvdyAqd2luZG93Owogc3RhdGljIEdzdEdMVXBsb2FkICp1cGxvYWQ7CiBzdGF0aWMgZ3VpbnQgdGV4X2lkOwotI2lmIEdTVF9HTF9IQVZFX0dMRVMyCi1zdGF0aWMgR0Vycm9yICplcnJvcjsKIHN0YXRpYyBHc3RHTFNoYWRlciAqc2hhZGVyOwogc3RhdGljIEdMaW50IHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYzsKIHN0YXRpYyBHTGludCBzaGFkZXJfYXR0cl90ZXh0dXJlX2xvYzsKLSNlbmRpZgotCiAKICNkZWZpbmUgRk9STUFUIEdTVF9WSURFT19HTF9URVhUVVJFX1RZUEVfUkdCQQogI2RlZmluZSBXSURUSCAxMApAQCAtMTE4LDI1ICs5MSwxNSBAQAogc3RhdGljIHZvaWQKIGluaXQgKGdwb2ludGVyIGRhdGEpCiB7Ci0jaWYgR1NUX0dMX0hBVkVfR0xFUzIKLSAgaWYgKGdzdF9nbF9jb250ZXh0X2dldF9nbF9hcGkgKGNvbnRleHQpICYgR1NUX0dMX0FQSV9HTEVTMikgewotICAgIHNoYWRlciA9IGdzdF9nbF9zaGFkZXJfbmV3IChjb250ZXh0KTsKLSAgICBmYWlsX2lmIChzaGFkZXIgPT0gTlVMTCwgImZhaWxlZCB0byBjcmVhdGUgc2hhZGVyIG9iamVjdCIpOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKIAotICAgIGdzdF9nbF9zaGFkZXJfc2V0X3ZlcnRleF9zb3VyY2UgKHNoYWRlciwgdmVydGV4X3NoYWRlcl9zdHJfZ2xlczIpOwotICAgIGdzdF9nbF9zaGFkZXJfc2V0X2ZyYWdtZW50X3NvdXJjZSAoc2hhZGVyLCBmcmFnbWVudF9zaGFkZXJfc3RyX2dsZXMyKTsKKyAgc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXdfZGVmYXVsdCAoY29udGV4dCwgJmVycm9yKTsKKyAgZmFpbF9pZiAoc2hhZGVyID09IE5VTEwsICJmYWlsZWQgdG8gY3JlYXRlIHNoYWRlciBvYmplY3QgJXMiLCBlcnJvci0+bWVzc2FnZSk7CiAKLSAgICBlcnJvciA9IE5VTEw7Ci0gICAgZ3N0X2dsX3NoYWRlcl9jb21waWxlIChzaGFkZXIsICZlcnJvcik7Ci0gICAgZmFpbF9pZiAoZXJyb3IgIT0gTlVMTCwgIkVycm9yIGNvbXBpbGluZyBzaGFkZXIgJXNcbiIsCi0gICAgICAgIGVycm9yID8gZXJyb3ItPm1lc3NhZ2UgOiAiVW5rbm93biBFcnJvciIpOwotCi0gICAgc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jID0KLSAgICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3Bvc2l0aW9uIik7Ci0gICAgc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MgPQotICAgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfdGV4Q29vcmQiKTsKLSAgfQotI2VuZGlmCisgIHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYyA9CisgICAgICBnc3RfZ2xfc2hhZGVyX2dldF9hdHRyaWJ1dGVfbG9jYXRpb24gKHNoYWRlciwgImFfcG9zaXRpb24iKTsKKyAgc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MgPQorICAgICAgZ3N0X2dsX3NoYWRlcl9nZXRfYXR0cmlidXRlX2xvY2F0aW9uIChzaGFkZXIsICJhX3RleENvb3JkIik7CiB9CiAKIHN0YXRpYyB2b2lkCkBAIC0xNDUsODEgKzEwOCwzOCBAQAogICBHc3RHTENvbnRleHQgKmNvbnRleHQgPSBkYXRhOwogICBHc3RHTENvbnRleHRDbGFzcyAqY29udGV4dF9jbGFzcyA9IEdTVF9HTF9DT05URVhUX0dFVF9DTEFTUyAoY29udGV4dCk7CiAgIGNvbnN0IEdzdEdMRnVuY3MgKmdsID0gY29udGV4dC0+Z2xfdnRhYmxlOworICBjb25zdCBHTGZsb2F0IHZWZXJ0aWNlc1tdID0geyAxLjBmLCAxLjBmLCAwLjBmLAorICAgIDEuMGYsIDAuMGYsCisgICAgLTEuMGYsIDEuMGYsIDAuMGYsCisgICAgMC4wZiwgMC4wZiwKKyAgICAtMS4wZiwgLTEuMGYsIDAuMGYsCisgICAgMC4wZiwgMS4wZiwKKyAgICAxLjBmLCAtMS4wZiwgMC4wZiwKKyAgICAxLjBmLCAxLjBmCisgIH07CiAKLSAgLyogcmVkcmF3IHRoZSB0ZXh0dXJlIGludG8gdGhlIHN5c3RlbSBwcm92aWRlZCBmcmFtZWJ1ZmZlciAqLworICBHTHVzaG9ydCBpbmRpY2VzW10gPSB7IDAsIDEsIDIsIDAsIDIsIDMgfTsKIAotI2lmIEdTVF9HTF9IQVZFX09QRU5HTAotICBpZiAoZ3N0X2dsX2NvbnRleHRfZ2V0X2dsX2FwaSAoY29udGV4dCkgJiBHU1RfR0xfQVBJX09QRU5HTCkgewotICAgIEdMZmxvYXQgdmVydHNbOF0gPSB7IDEuMGYsIDEuMGYsCi0gICAgICAtMS4wZiwgMS4wZiwKLSAgICAgIC0xLjBmLCAtMS4wZiwKLSAgICAgIDEuMGYsIC0xLjBmCi0gICAgfTsKLSAgICBHTGZsb2F0IHRleGNvb3Jkc1s4XSA9IHsgMS4wZiwgMC4wZiwKLSAgICAgIDAuMGYsIDAuMGYsCi0gICAgICAwLjBmLCAxLjBmLAotICAgICAgMS4wZiwgMS4wZgotICAgIH07CisgIGdsLT5DbGVhciAoR0xfQ09MT1JfQlVGRkVSX0JJVCk7CiAKLSAgICBnbC0+Vmlld3BvcnQgKDAsIDAsIDEwLCAxMCk7CisgIGdzdF9nbF9zaGFkZXJfdXNlIChzaGFkZXIpOwogCi0gICAgZ2wtPkNsZWFyIChHTF9DT0xPUl9CVUZGRVJfQklUIHwgR0xfREVQVEhfQlVGRkVSX0JJVCk7CisgIC8qIExvYWQgdGhlIHZlcnRleCBwb3NpdGlvbiAqLworICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jLCAzLAorICAgICAgR0xfRkxPQVQsIEdMX0ZBTFNFLCA1ICogc2l6ZW9mIChHTGZsb2F0KSwgdlZlcnRpY2VzKTsKIAotICAgIGdsLT5NYXRyaXhNb2RlIChHTF9QUk9KRUNUSU9OKTsKLSAgICBnbC0+TG9hZElkZW50aXR5ICgpOworICAvKiBMb2FkIHRoZSB0ZXh0dXJlIGNvb3JkaW5hdGUgKi8KKyAgZ2wtPlZlcnRleEF0dHJpYlBvaW50ZXIgKHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jLCAyLAorICAgICAgR0xfRkxPQVQsIEdMX0ZBTFNFLCA1ICogc2l6ZW9mIChHTGZsb2F0KSwgJnZWZXJ0aWNlc1szXSk7CiAKLSAgICBnbC0+QWN0aXZlVGV4dHVyZSAoR0xfVEVYVFVSRV8yRCk7Ci0gICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXhfaWQpOworICBnbC0+RW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKHNoYWRlcl9hdHRyX3Bvc2l0aW9uX2xvYyk7CisgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfdGV4dHVyZV9sb2MpOwogCi0gICAgZ2wtPkVuYWJsZUNsaWVudFN0YXRlIChHTF9WRVJURVhfQVJSQVkpOwotICAgIGdsLT5WZXJ0ZXhQb2ludGVyICgyLCBHTF9GTE9BVCwgMCwgJnZlcnRzKTsKKyAgZ2wtPkFjdGl2ZVRleHR1cmUgKEdMX1RFWFRVUkUwKTsKKyAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXhfaWQpOworICBnc3RfZ2xfc2hhZGVyX3NldF91bmlmb3JtXzFpIChzaGFkZXIsICJzX3RleHR1cmUiLCAwKTsKIAotICAgIGdsLT5DbGllbnRBY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7Ci0gICAgZ2wtPkVuYWJsZUNsaWVudFN0YXRlIChHTF9URVhUVVJFX0NPT1JEX0FSUkFZKTsKLSAgICBnbC0+VGV4Q29vcmRQb2ludGVyICgyLCBHTF9GTE9BVCwgMCwgJnRleGNvb3Jkcyk7Ci0KLSAgICBnbC0+RHJhd0FycmF5cyAoR0xfVFJJQU5HTEVfRkFOLCAwLCA0KTsKLQotICAgIGdsLT5EaXNhYmxlQ2xpZW50U3RhdGUgKEdMX1ZFUlRFWF9BUlJBWSk7Ci0gICAgZ2wtPkRpc2FibGVDbGllbnRTdGF0ZSAoR0xfVEVYVFVSRV9DT09SRF9BUlJBWSk7Ci0gIH0KLSNlbmRpZgotI2lmIEdTVF9HTF9IQVZFX0dMRVMyCi0gIGlmIChnc3RfZ2xfY29udGV4dF9nZXRfZ2xfYXBpIChjb250ZXh0KSAmIEdTVF9HTF9BUElfR0xFUzIpIHsKLSAgICBjb25zdCBHTGZsb2F0IHZWZXJ0aWNlc1tdID0geyAxLjBmLCAxLjBmLCAwLjBmLAotICAgICAgMS4wZiwgMC4wZiwKLSAgICAgIC0xLjBmLCAxLjBmLCAwLjBmLAotICAgICAgMC4wZiwgMC4wZiwKLSAgICAgIC0xLjBmLCAtMS4wZiwgMC4wZiwKLSAgICAgIDAuMGYsIDEuMGYsCi0gICAgICAxLjBmLCAtMS4wZiwgMC4wZiwKLSAgICAgIDEuMGYsIDEuMGYKLSAgICB9OwotCi0gICAgR0x1c2hvcnQgaW5kaWNlc1tdID0geyAwLCAxLCAyLCAwLCAyLCAzIH07Ci0KLSAgICBnbC0+Q2xlYXIgKEdMX0NPTE9SX0JVRkZFUl9CSVQpOwotCi0gICAgZ3N0X2dsX3NoYWRlcl91c2UgKHNoYWRlcik7Ci0KLSAgICAvKiBMb2FkIHRoZSB2ZXJ0ZXggcG9zaXRpb24gKi8KLSAgICBnbC0+VmVydGV4QXR0cmliUG9pbnRlciAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jLCAzLAotICAgICAgICBHTF9GTE9BVCwgR0xfRkFMU0UsIDUgKiBzaXplb2YgKEdMZmxvYXQpLCB2VmVydGljZXMpOwotCi0gICAgLyogTG9hZCB0aGUgdGV4dHVyZSBjb29yZGluYXRlICovCi0gICAgZ2wtPlZlcnRleEF0dHJpYlBvaW50ZXIgKHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jLCAyLAotICAgICAgICBHTF9GTE9BVCwgR0xfRkFMU0UsIDUgKiBzaXplb2YgKEdMZmxvYXQpLCAmdlZlcnRpY2VzWzNdKTsKLQotICAgIGdsLT5FbmFibGVWZXJ0ZXhBdHRyaWJBcnJheSAoc2hhZGVyX2F0dHJfcG9zaXRpb25fbG9jKTsKLSAgICBnbC0+RW5hYmxlVmVydGV4QXR0cmliQXJyYXkgKHNoYWRlcl9hdHRyX3RleHR1cmVfbG9jKTsKLQotICAgIGdsLT5BY3RpdmVUZXh0dXJlIChHTF9URVhUVVJFMCk7Ci0gICAgZ2wtPkJpbmRUZXh0dXJlIChHTF9URVhUVVJFXzJELCB0ZXhfaWQpOwotICAgIGdzdF9nbF9zaGFkZXJfc2V0X3VuaWZvcm1fMWkgKHNoYWRlciwgInNfdGV4dHVyZSIsIDApOwotCi0gICAgZ2wtPkRyYXdFbGVtZW50cyAoR0xfVFJJQU5HTEVTLCA2LCBHTF9VTlNJR05FRF9TSE9SVCwgaW5kaWNlcyk7Ci0gIH0KLSNlbmRpZgorICBnbC0+RHJhd0VsZW1lbnRzIChHTF9UUklBTkdMRVMsIDYsIEdMX1VOU0lHTkVEX1NIT1JULCBpbmRpY2VzKTsKIAogICBjb250ZXh0X2NsYXNzLT5zd2FwX2J1ZmZlcnMgKGNvbnRleHQpOwogfQpAQCAtMjY1LDYgKzE4NSw4IEBACiAgICAgaSsrOwogICB9CiAKKyAgZ3N0X2NhcHNfdW5yZWYgKGluX2NhcHMpOworICBnc3RfY2Fwc191bnJlZiAob3V0X2NhcHMpOwogICBnc3RfYnVmZmVyX3VucmVmIChpbmJ1Zik7CiAgIGdzdF9idWZmZXJfdW5yZWYgKG91dGJ1Zik7CiB9CkBAIC0yNzMsNiArMTk1LDggQEAKIAogR1NUX1NUQVJUX1RFU1QgKHRlc3RfdXBsb2FkX2J1ZmZlcikKIHsKKyAgR3N0R0xCYXNlTWVtb3J5QWxsb2NhdG9yICpiYXNlX21lbV9hbGxvYzsKKyAgR3N0R0xWaWRlb0FsbG9jYXRpb25QYXJhbXMgKnBhcmFtczsKICAgR3N0QnVmZmVyICpidWZmZXIsICpvdXRidWY7CiAgIEdzdEdMTWVtb3J5ICpnbF9tZW07CiAgIEdzdENhcHMgKmluX2NhcHMsICpvdXRfY2FwczsKQEAgLTI4MSwxMyArMjA1LDIwIEBACiAgIGdpbnQgaSA9IDA7CiAgIGdib29sZWFuIHJlczsKIAorICBiYXNlX21lbV9hbGxvYyA9CisgICAgICBHU1RfR0xfQkFTRV9NRU1PUllfQUxMT0NBVE9SIChnc3RfYWxsb2NhdG9yX2ZpbmQKKyAgICAgIChHU1RfR0xfTUVNT1JZX0FMTE9DQVRPUl9OQU1FKSk7CisKICAgaW5fY2FwcyA9IGdzdF9jYXBzX2Zyb21fc3RyaW5nICgidmlkZW8veC1yYXcsZm9ybWF0PVJHQkEsd2lkdGg9MTAsaGVpZ2h0PTEwIik7CiAgIGdzdF92aWRlb19pbmZvX2Zyb21fY2FwcyAoJmluX2luZm8sIGluX2NhcHMpOwogCiAgIC8qIGNyZWF0ZSBHTCBidWZmZXIgKi8KICAgYnVmZmVyID0gZ3N0X2J1ZmZlcl9uZXcgKCk7Ci0gIGdsX21lbSA9Ci0gICAgICBnc3RfZ2xfbWVtb3J5X3dyYXBwZWQgKGNvbnRleHQsICZpbl9pbmZvLCAwLCBOVUxMLCByZ2JhX2RhdGEsIE5VTEwsIE5VTEwpOworICBwYXJhbXMgPSBnc3RfZ2xfdmlkZW9fYWxsb2NhdGlvbl9wYXJhbXNfbmV3X3dyYXBwZWRfZGF0YSAoY29udGV4dCwgTlVMTCwKKyAgICAgICZpbl9pbmZvLCAwLCBOVUxMLCBHU1RfR0xfVEVYVFVSRV9UQVJHRVRfMkQsIHJnYmFfZGF0YSwgTlVMTCwgTlVMTCk7CisgIGdsX21lbSA9IChHc3RHTE1lbW9yeSAqKSBnc3RfZ2xfYmFzZV9tZW1vcnlfYWxsb2MgKGJhc2VfbWVtX2FsbG9jLAorICAgICAgKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOworICBnc3RfZ2xfYWxsb2NhdGlvbl9wYXJhbXNfZnJlZSAoKEdzdEdMQWxsb2NhdGlvblBhcmFtcyAqKSBwYXJhbXMpOwogCiAgIHJlcyA9CiAgICAgICBnc3RfbWVtb3J5X21hcCAoKEdzdE1lbW9yeSAqKSBnbF9tZW0sICZtYXBfaW5mbywKQEAgLTMxOCw2NCArMjQ5LDExIEBACiAgICAgaSsrOwogICB9CiAKLSAgZ3N0X2dsX3VwbG9hZF9yZWxlYXNlX2J1ZmZlciAodXBsb2FkKTsKKyAgZ3N0X2NhcHNfdW5yZWYgKGluX2NhcHMpOworICBnc3RfY2Fwc191bnJlZiAob3V0X2NhcHMpOwogICBnc3RfYnVmZmVyX3VucmVmIChidWZmZXIpOwogICBnc3RfYnVmZmVyX3VucmVmIChvdXRidWYpOwotfQotCi1HU1RfRU5EX1RFU1Q7Ci0KLUdTVF9TVEFSVF9URVNUICh0ZXN0X3VwbG9hZF9tZXRhX3Byb2R1Y2VyKQotewotICBHc3RCdWZmZXIgKmJ1ZmZlcjsKLSAgR3N0R0xNZW1vcnkgKmdsX21lbTsKLSAgR3N0VmlkZW9JbmZvIGluX2luZm87Ci0gIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YSAqZ2xfdXBsb2FkX21ldGE7Ci0gIGd1aW50IHRleF9pZHNbXSA9IHsgMCwgMCwgMCwgMCB9OwotICBHc3RHTFVwbG9hZE1ldGEgKnVwbG9hZF9tZXRhOwotICBnYm9vbGVhbiByZXM7Ci0gIGdpbnQgaSA9IDA7Ci0KLSAgZ3N0X3ZpZGVvX2luZm9fc2V0X2Zvcm1hdCAoJmluX2luZm8sIEdTVF9WSURFT19GT1JNQVRfUkdCQSwgV0lEVEgsIEhFSUdIVCk7Ci0KLSAgLyogY3JlYXRlIEdMIGJ1ZmZlciAqLwotICBidWZmZXIgPSBnc3RfYnVmZmVyX25ldyAoKTsKLSAgZ2xfbWVtID0KLSAgICAgIGdzdF9nbF9tZW1vcnlfd3JhcHBlZCAoY29udGV4dCwgJmluX2luZm8sIDAsIE5VTEwsIHJnYmFfZGF0YSwgTlVMTCwgTlVMTCk7Ci0gIGdzdF9idWZmZXJfYXBwZW5kX21lbW9yeSAoYnVmZmVyLCAoR3N0TWVtb3J5ICopIGdsX21lbSk7Ci0KLSAgZ3N0X2dsX2NvbnRleHRfZ2VuX3RleHR1cmUgKGNvbnRleHQsICZ0ZXhfaWRzWzBdLCBHU1RfVklERU9fRk9STUFUX1JHQkEsCi0gICAgICBXSURUSCwgSEVJR0hUKTsKLQotICB1cGxvYWRfbWV0YSA9IGdzdF9nbF91cGxvYWRfbWV0YV9uZXcgKGNvbnRleHQpOwotICBnc3RfZ2xfdXBsb2FkX21ldGFfc2V0X2Zvcm1hdCAodXBsb2FkX21ldGEsICZpbl9pbmZvKTsKLQotICBnc3RfYnVmZmVyX2FkZF92aWRlb19tZXRhX2Z1bGwgKGJ1ZmZlciwgMCwgR1NUX1ZJREVPX0ZPUk1BVF9SR0JBLCBXSURUSCwKLSAgICAgIEhFSUdIVCwgMSwgaW5faW5mby5vZmZzZXQsIGluX2luZm8uc3RyaWRlKTsKLSAgZ3N0X2dsX3VwbG9hZF9tZXRhX2FkZF90b19idWZmZXIgKHVwbG9hZF9tZXRhLCBidWZmZXIpOwotCi0gIGdsX3VwbG9hZF9tZXRhID0gZ3N0X2J1ZmZlcl9nZXRfdmlkZW9fZ2xfdGV4dHVyZV91cGxvYWRfbWV0YSAoYnVmZmVyKTsKLSAgZmFpbF9pZiAoZ2xfdXBsb2FkX21ldGEgPT0gTlVMTCwgIkZhaWxlZCB0byBhZGQgR3N0VmlkZW9HTFRleHR1cmVVcGxvYWRNZXRhIgotICAgICAgIiB0byBidWZmZXJcbiIpOwotCi0gIHJlcyA9IGdzdF92aWRlb19nbF90ZXh0dXJlX3VwbG9hZF9tZXRhX3VwbG9hZCAoZ2xfdXBsb2FkX21ldGEsIHRleF9pZHMpOwotICBmYWlsX2lmIChyZXMgPT0gRkFMU0UsICJGYWlsZWQgdG8gdXBsb2FkIEdzdFZpZGVvR0xUZXh0dXJlVXBsb2FkTWV0YVxuIik7Ci0KLSAgdGV4X2lkID0gdGV4X2lkc1swXTsKLQotICBnc3RfZ2xfd2luZG93X3NldF9wcmVmZXJyZWRfc2l6ZSAod2luZG93LCBXSURUSCwgSEVJR0hUKTsKLSAgZ3N0X2dsX3dpbmRvd19kcmF3ICh3aW5kb3cpOwotICBnc3RfZ2xfd2luZG93X3NlbmRfbWVzc2FnZSAod2luZG93LCBHU1RfR0xfV0lORE9XX0NCIChpbml0KSwgY29udGV4dCk7Ci0KLSAgd2hpbGUgKGkgPCAyKSB7Ci0gICAgZ3N0X2dsX3dpbmRvd19zZW5kX21lc3NhZ2UgKHdpbmRvdywgR1NUX0dMX1dJTkRPV19DQiAoZHJhd19yZW5kZXIpLAotICAgICAgICBjb250ZXh0KTsKLSAgICBpKys7Ci0gIH0KLQotICBnc3Rfb2JqZWN0X3VucmVmICh1cGxvYWRfbWV0YSk7Ci0gIGdzdF9nbF9jb250ZXh0X2RlbF90ZXh0dXJlIChjb250ZXh0LCAmdGV4X2lkc1swXSk7Ci0gIGdzdF9idWZmZXJfdW5yZWYgKGJ1ZmZlcik7CisgIGdzdF9vYmplY3RfdW5yZWYgKGJhc2VfbWVtX2FsbG9jKTsKIH0KIAogR1NUX0VORF9URVNUOwpAQCAtMzkxLDcgKzI2OSw2IEBACiAgIHRjYXNlX2FkZF9jaGVja2VkX2ZpeHR1cmUgKHRjX2NoYWluLCBzZXR1cCwgdGVhcmRvd24pOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdXBsb2FkX2RhdGEpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfdXBsb2FkX2J1ZmZlcik7Ci0gIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF91cGxvYWRfbWV0YV9wcm9kdWNlcik7CiAKICAgcmV0dXJuIHM7CiB9CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9saWJzL3BsYXllci5jIGIvdGVzdHMvY2hlY2svbGlicy9wbGF5ZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NTg2ZTYzCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvY2hlY2svbGlicy9wbGF5ZXIuYwpAQCAtMCwwICsxLDE0OTkgQEAKKy8qIEdTdHJlYW1lcgorICoKKyAqIENvcHlyaWdodCAoQykgMjAxNC0yMDE1IFNlYmFzdGlhbiBEcsO2Z2UgPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgQnJpamVzaCBTaW5naCA8YnJpamVzaC5rc2luZ2hAZ21haWwuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKy8qIFRPRE86CisgKiAtIHN0YXJ0IHdpdGggcGF1c2UsIGdvIHRvIHBsYXlpbmcKKyAqIC0gcGxheSwgcGF1c2UsIHBsYXkKKyAqIC0gc2V0IHVyaSBpbiBwbGF5L3BhdXNlCisgKiAtIHBsYXkvcGF1c2UgYWZ0ZXIgZW9zCisgKiAtIHNlZWsgaW4gcGxheS9wYXVzZS9zdG9wcGVkLCBhZnRlciBlb3MsIGJhY2sgdG8gMCwgYWZ0ZXIgZHVyYXRpb24KKyAqIC0gaHR0cCBidWZmZXJpbmcKKyAqLworCisjaWZkZWYgSEFWRV9DT05GSUdfSAorI2luY2x1ZGUgImNvbmZpZy5oIgorI2VuZGlmCisKKyNpZmRlZiBIQVZFX1ZBTEdSSU5ECisjIGluY2x1ZGUgPHZhbGdyaW5kL3ZhbGdyaW5kLmg+CisjZW5kaWYKKworI2luY2x1ZGUgPGdzdC9jaGVjay9nc3RjaGVjay5oPgorCisjZGVmaW5lIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQoYSwgYikgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitHX1NUTVRfU1RBUlQgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGludCBmaXJzdCA9IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGludCBzZWNvbmQgPSBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGZhaWxfdW5sZXNzKGZpcnN0ID09IHNlY29uZCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgIiciICNhICInICglZCkgaXMgbm90IGVxdWFsIHRvICciICNiIicgKCVkKSIsIGZpcnN0LCBzZWNvbmQpOyAgICAgICBcCit9IEdfU1RNVF9FTkQ7CisKKyNkZWZpbmUgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NChhLCBiKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0dfU1RNVF9TVEFSVCB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZ3VpbnQ2NCBmaXJzdCA9IGE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZ3VpbnQ2NCBzZWNvbmQgPSBiOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgZmFpbF91bmxlc3MoZmlyc3QgPT0gc2Vjb25kLCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAiJyIgI2EgIicgKCUiIEdfR1VJTlQ2NF9GT1JNQVQgIikgaXMgbm90IGVxdWFsIHRvICciICNiIicgKCUiICAgICAgIFwKKyAgICBHX0dVSU5UNjRfRk9STUFUICIpIiwgZmlyc3QsIHNlY29uZCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK30gR19TVE1UX0VORDsKKworI2RlZmluZSBmYWlsX3VubGVzc19lcXVhbHNfZG91YmxlKGEsIGIpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorR19TVE1UX1NUQVJUIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkb3VibGUgZmlyc3QgPSBhOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBkb3VibGUgc2Vjb25kID0gYjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBmYWlsX3VubGVzcyhmaXJzdCA9PSBzZWNvbmQsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICInIiAjYSAiJyAoJWxmKSBpcyBub3QgZXF1YWwgdG8gJyIgI2IiJyAoJWxmKSIsIGZpcnN0LCBzZWNvbmQpOyAgICAgXAorfSBHX1NUTVRfRU5EOworCisjaW5jbHVkZSA8Z3N0L3BsYXllci9wbGF5ZXIuaD4KKworU1RBUlRfVEVTVCAodGVzdF9jcmVhdGVfYW5kX2ZyZWUpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworCisgIHBsYXllciA9IGdzdF9wbGF5ZXJfbmV3IChOVUxMLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7Cit9CisKK0VORF9URVNUOworCitTVEFSVF9URVNUICh0ZXN0X3NldF9hbmRfZ2V0X3VyaSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIGdjaGFyICp1cmk7CisKKyAgcGxheWVyID0gZ3N0X3BsYXllcl9uZXcgKE5VTEwsIE5VTEwpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsICJmaWxlOi8vL3BhdGgvdG8vYS9maWxlIik7CisgIHVyaSA9IGdzdF9wbGF5ZXJfZ2V0X3VyaSAocGxheWVyKTsKKworICBmYWlsX3VubGVzcyAoZ19zdHJjbXAwICh1cmksICJmaWxlOi8vL3BhdGgvdG8vYS9maWxlIikgPT0gMCk7CisKKyAgZ19mcmVlICh1cmkpOworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKK30KKworRU5EX1RFU1Q7CisKK1NUQVJUX1RFU1QgKHRlc3Rfc2V0X2FuZF9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgZ3VpbnQgaW50ZXJ2YWwgPSAwOworCisgIHBsYXllciA9IGdzdF9wbGF5ZXJfbmV3IChOVUxMLCBOVUxMKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIGdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCAocGxheWVyLCA1MDApOworICBpbnRlcnZhbCA9IGdzdF9wbGF5ZXJfZ2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCAocGxheWVyKTsKKworICBmYWlsX3VubGVzcyAoaW50ZXJ2YWwgPT0gNTAwKTsKKworICBnX29iamVjdF9zZXQgKHBsYXllciwgInBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIsIDEwMDAsIE5VTEwpOworICBnX29iamVjdF9nZXQgKHBsYXllciwgInBvc2l0aW9uLXVwZGF0ZS1pbnRlcnZhbCIsICZpbnRlcnZhbCwgTlVMTCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoaW50ZXJ2YWwsIDEwMDApOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworfQorCitFTkRfVEVTVDsKKwordHlwZWRlZiBlbnVtCit7CisgIFNUQVRFX0NIQU5HRV9CVUZGRVJJTkcsCisgIFNUQVRFX0NIQU5HRV9EVVJBVElPTl9DSEFOR0VELAorICBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSwKKyAgU1RBVEVfQ0hBTkdFX0VSUk9SLAorICBTVEFURV9DSEFOR0VfV0FSTklORywKKyAgU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQsCisgIFNUQVRFX0NIQU5HRV9TVEFURV9DSEFOR0VELAorICBTVEFURV9DSEFOR0VfVklERU9fRElNRU5TSU9OU19DSEFOR0VELAorICBTVEFURV9DSEFOR0VfTUVESUFfSU5GT19VUERBVEVELAorICBTVEFURV9DSEFOR0VfU0VFS19ET05FLAorfSBUZXN0UGxheWVyU3RhdGVDaGFuZ2U7CisKK3N0YXRpYyBjb25zdCBnY2hhciAqCit0ZXN0X3BsYXllcl9zdGF0ZV9jaGFuZ2VfZ2V0X25hbWUgKFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UpCit7CisgIHN3aXRjaCAoY2hhbmdlKSB7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfQlVGRkVSSU5HOgorICAgICAgcmV0dXJuICJidWZmZXJpbmciOworICAgIGNhc2UgU1RBVEVfQ0hBTkdFX0RVUkFUSU9OX0NIQU5HRUQ6CisgICAgICByZXR1cm4gImR1cmF0aW9uLWNoYW5nZWQiOworICAgIGNhc2UgU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU06CisgICAgICByZXR1cm4gImVuZC1vZi1zdHJlYW0iOworICAgIGNhc2UgU1RBVEVfQ0hBTkdFX1dBUk5JTkc6CisgICAgICByZXR1cm4gIndhcm5pbmciOworICAgIGNhc2UgU1RBVEVfQ0hBTkdFX0VSUk9SOgorICAgICAgcmV0dXJuICJlcnJvciI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRDoKKyAgICAgIHJldHVybiAicG9zaXRpb24tdXBkYXRlZCI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRDoKKyAgICAgIHJldHVybiAic3RhdGUtY2hhbmdlZCI7CisgICAgY2FzZSBTVEFURV9DSEFOR0VfVklERU9fRElNRU5TSU9OU19DSEFOR0VEOgorICAgICAgcmV0dXJuICJ2aWRlby1kaW1lbnNpb25zLWNoYW5nZWQiOworICAgIGNhc2UgU1RBVEVfQ0hBTkdFX01FRElBX0lORk9fVVBEQVRFRDoKKyAgICAgIHJldHVybiAibWVkaWEtaW5mby11cGRhdGVkIjsKKyAgICBjYXNlIFNUQVRFX0NIQU5HRV9TRUVLX0RPTkU6CisgICAgICByZXR1cm4gInNlZWstZG9uZSI7CisgICAgZGVmYXVsdDoKKyAgICAgIGdfYXNzZXJ0X25vdF9yZWFjaGVkICgpOworICAgICAgYnJlYWs7CisgIH0KK30KKwordHlwZWRlZiBzdHJ1Y3QgX1Rlc3RQbGF5ZXJTdGF0ZSBUZXN0UGxheWVyU3RhdGU7CitzdHJ1Y3QgX1Rlc3RQbGF5ZXJTdGF0ZQoreworICBHTWFpbkxvb3AgKmxvb3A7CisKKyAgZ2ludCBidWZmZXJpbmdfcGVyY2VudDsKKyAgZ3VpbnQ2NCBwb3NpdGlvbiwgZHVyYXRpb24sIHNlZWtfZG9uZV9wb3NpdGlvbjsKKyAgZ2Jvb2xlYW4gZW5kX29mX3N0cmVhbSwgZXJyb3IsIHdhcm5pbmcsIHNlZWtfZG9uZTsKKyAgR3N0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdpbnQgd2lkdGgsIGhlaWdodDsKKyAgR3N0UGxheWVyTWVkaWFJbmZvICptZWRpYV9pbmZvOworCisgIHZvaWQgKCp0ZXN0X2NhbGxiYWNrKSAoR3N0UGxheWVyICogcGxheWVyLCBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLAorICAgICAgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLCBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpOworICBncG9pbnRlciB0ZXN0X2RhdGE7Cit9OworCitzdGF0aWMgdm9pZAordGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgR1NUX0RFQlVHX09CSkVDVCAocGxheWVyLCAiQ2hhbmdlZCAlczpcbiIKKyAgICAgICJcdGJ1ZmZlcmluZyAlZCUlIC0+ICVkJSVcbiIKKyAgICAgICJcdHBvc2l0aW9uICUiIEdTVF9USU1FX0ZPUk1BVCAiIC0+ICUiIEdTVF9USU1FX0ZPUk1BVCAiXG4iCisgICAgICAiXHRkdXJhdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQgIiAtPiAlIiBHU1RfVElNRV9GT1JNQVQgIlxuIgorICAgICAgIlx0c2VlayBwb3NpdGlvbiAlIiBHU1RfVElNRV9GT1JNQVQgIiAtPiAlIiBHU1RfVElNRV9GT1JNQVQgIlxuIgorICAgICAgIlx0ZW5kLW9mLXN0cmVhbSAlZCAtPiAlZFxuIgorICAgICAgIlx0ZXJyb3IgJWQgLT4gJWRcbiIKKyAgICAgICJcdHNlZWtfZG9uZSAlZCAtPiAlZFxuIgorICAgICAgIlx0c3RhdGUgJXMgLT4gJXNcbiIKKyAgICAgICJcdHdpZHRoL2hlaWdodCAlZC8lZCAtPiAlZC8lZFxuIgorICAgICAgIlx0bWVkaWFfaW5mbyAlcCAtPiAlcCIsCisgICAgICB0ZXN0X3BsYXllcl9zdGF0ZV9jaGFuZ2VfZ2V0X25hbWUgKGNoYW5nZSksCisgICAgICBvbGRfc3RhdGUtPmJ1ZmZlcmluZ19wZXJjZW50LCBuZXdfc3RhdGUtPmJ1ZmZlcmluZ19wZXJjZW50LAorICAgICAgR1NUX1RJTUVfQVJHUyAob2xkX3N0YXRlLT5wb3NpdGlvbiksIEdTVF9USU1FX0FSR1MgKG5ld19zdGF0ZS0+cG9zaXRpb24pLAorICAgICAgR1NUX1RJTUVfQVJHUyAob2xkX3N0YXRlLT5kdXJhdGlvbiksIEdTVF9USU1FX0FSR1MgKG5ld19zdGF0ZS0+ZHVyYXRpb24pLAorICAgICAgR1NUX1RJTUVfQVJHUyAob2xkX3N0YXRlLT5zZWVrX2RvbmVfcG9zaXRpb24pLAorICAgICAgR1NUX1RJTUVfQVJHUyAobmV3X3N0YXRlLT5zZWVrX2RvbmVfcG9zaXRpb24pLCBvbGRfc3RhdGUtPmVuZF9vZl9zdHJlYW0sCisgICAgICBuZXdfc3RhdGUtPmVuZF9vZl9zdHJlYW0sIG9sZF9zdGF0ZS0+ZXJyb3IsIG5ld19zdGF0ZS0+ZXJyb3IsCisgICAgICBvbGRfc3RhdGUtPnNlZWtfZG9uZSwgbmV3X3N0YXRlLT5zZWVrX2RvbmUsCisgICAgICBnc3RfcGxheWVyX3N0YXRlX2dldF9uYW1lIChvbGRfc3RhdGUtPnN0YXRlKSwKKyAgICAgIGdzdF9wbGF5ZXJfc3RhdGVfZ2V0X25hbWUgKG5ld19zdGF0ZS0+c3RhdGUpLCBvbGRfc3RhdGUtPndpZHRoLAorICAgICAgb2xkX3N0YXRlLT5oZWlnaHQsIG5ld19zdGF0ZS0+d2lkdGgsIG5ld19zdGF0ZS0+aGVpZ2h0LAorICAgICAgb2xkX3N0YXRlLT5tZWRpYV9pbmZvLCBuZXdfc3RhdGUtPm1lZGlhX2luZm8pOworfQorCitzdGF0aWMgdm9pZAordGVzdF9wbGF5ZXJfc3RhdGVfcmVzZXQgKFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBzdGF0ZS0+YnVmZmVyaW5nX3BlcmNlbnQgPSAxMDA7CisgIHN0YXRlLT5wb3NpdGlvbiA9IHN0YXRlLT5kdXJhdGlvbiA9IHN0YXRlLT5zZWVrX2RvbmVfcG9zaXRpb24gPSAtMTsKKyAgc3RhdGUtPmVuZF9vZl9zdHJlYW0gPSBzdGF0ZS0+ZXJyb3IgPSBzdGF0ZS0+c2Vla19kb25lID0gRkFMU0U7CisgIHN0YXRlLT5zdGF0ZSA9IEdTVF9QTEFZRVJfU1RBVEVfU1RPUFBFRDsKKyAgc3RhdGUtPndpZHRoID0gc3RhdGUtPmhlaWdodCA9IDA7CisgIHN0YXRlLT5tZWRpYV9pbmZvID0gTlVMTDsKK30KKworc3RhdGljIHZvaWQKK2J1ZmZlcmluZ19jYiAoR3N0UGxheWVyICogcGxheWVyLCBnaW50IHBlcmNlbnQsIFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBUZXN0UGxheWVyU3RhdGUgb2xkX3N0YXRlID0gKnN0YXRlOworCisgIHN0YXRlLT5idWZmZXJpbmdfcGVyY2VudCA9IHBlcmNlbnQ7CisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfQlVGRkVSSU5HLCAmb2xkX3N0YXRlLAorICAgICAgc3RhdGUpOworICBzdGF0ZS0+dGVzdF9jYWxsYmFjayAocGxheWVyLCBTVEFURV9DSEFOR0VfQlVGRkVSSU5HLCAmb2xkX3N0YXRlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitkdXJhdGlvbl9jaGFuZ2VkX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIGd1aW50NjQgZHVyYXRpb24sCisgICAgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPmR1cmF0aW9uID0gZHVyYXRpb247CisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfRFVSQVRJT05fQ0hBTkdFRCwKKyAgICAgICZvbGRfc3RhdGUsIHN0YXRlKTsKKyAgc3RhdGUtPnRlc3RfY2FsbGJhY2sgKHBsYXllciwgU1RBVEVfQ0hBTkdFX0RVUkFUSU9OX0NIQU5HRUQsICZvbGRfc3RhdGUsCisgICAgICBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitlbmRfb2Zfc3RyZWFtX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBUZXN0UGxheWVyU3RhdGUgb2xkX3N0YXRlID0gKnN0YXRlOworCisgIHN0YXRlLT5lbmRfb2Zfc3RyZWFtID0gVFJVRTsKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNLAorICAgICAgJm9sZF9zdGF0ZSwgc3RhdGUpOworICBzdGF0ZS0+dGVzdF9jYWxsYmFjayAocGxheWVyLCBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSwgJm9sZF9zdGF0ZSwgc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorZXJyb3JfY2IgKEdzdFBsYXllciAqIHBsYXllciwgR0Vycm9yICogZXJyb3IsIFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBUZXN0UGxheWVyU3RhdGUgb2xkX3N0YXRlID0gKnN0YXRlOworCisgIHN0YXRlLT5lcnJvciA9IFRSVUU7CisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfRVJST1IsICZvbGRfc3RhdGUsCisgICAgICBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9FUlJPUiwgJm9sZF9zdGF0ZSwgc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAord2FybmluZ19jYiAoR3N0UGxheWVyICogcGxheWVyLCBHRXJyb3IgKiBlcnJvciwgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPndhcm5pbmcgPSBUUlVFOworICB0ZXN0X3BsYXllcl9zdGF0ZV9jaGFuZ2VfZGVidWcgKHBsYXllciwgU1RBVEVfQ0hBTkdFX1dBUk5JTkcsICZvbGRfc3RhdGUsCisgICAgICBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9XQVJOSU5HLCAmb2xkX3N0YXRlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitwb3NpdGlvbl91cGRhdGVkX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIGd1aW50NjQgcG9zaXRpb24sCisgICAgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPnBvc2l0aW9uID0gcG9zaXRpb247CisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCwKKyAgICAgICZvbGRfc3RhdGUsIHN0YXRlKTsKKyAgc3RhdGUtPnRlc3RfY2FsbGJhY2sgKHBsYXllciwgU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQsICZvbGRfc3RhdGUsCisgICAgICBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCittZWRpYV9pbmZvX3VwZGF0ZWRfY2IgKEdzdFBsYXllciAqIHBsYXllciwgR3N0UGxheWVyTWVkaWFJbmZvICogbWVkaWFfaW5mbywKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBzdGF0ZSkKK3sKKyAgVGVzdFBsYXllclN0YXRlIG9sZF9zdGF0ZSA9ICpzdGF0ZTsKKworICBzdGF0ZS0+bWVkaWFfaW5mbyA9IG1lZGlhX2luZm87CisKKyAgdGVzdF9wbGF5ZXJfc3RhdGVfY2hhbmdlX2RlYnVnIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9NRURJQV9JTkZPX1VQREFURUQsCisgICAgICAmb2xkX3N0YXRlLCBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9NRURJQV9JTkZPX1VQREFURUQsICZvbGRfc3RhdGUsCisgICAgICBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCitzdGF0ZV9jaGFuZ2VkX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIEdzdFBsYXllclN0YXRlIHBsYXllcl9zdGF0ZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBzdGF0ZSkKK3sKKyAgVGVzdFBsYXllclN0YXRlIG9sZF9zdGF0ZSA9ICpzdGF0ZTsKKworICBzdGF0ZS0+c3RhdGUgPSBwbGF5ZXJfc3RhdGU7CisKKyAgaWYgKHBsYXllcl9zdGF0ZSA9PSBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpCisgICAgdGVzdF9wbGF5ZXJfc3RhdGVfcmVzZXQgKHN0YXRlKTsKKworICB0ZXN0X3BsYXllcl9zdGF0ZV9jaGFuZ2VfZGVidWcgKHBsYXllciwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQsCisgICAgICAmb2xkX3N0YXRlLCBzdGF0ZSk7CisgIHN0YXRlLT50ZXN0X2NhbGxiYWNrIChwbGF5ZXIsIFNUQVRFX0NIQU5HRV9TVEFURV9DSEFOR0VELCAmb2xkX3N0YXRlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyB2b2lkCit2aWRlb19kaW1lbnNpb25zX2NoYW5nZWRfY2IgKEdzdFBsYXllciAqIHBsYXllciwgZ2ludCB3aWR0aCwgZ2ludCBoZWlnaHQsCisgICAgVGVzdFBsYXllclN0YXRlICogc3RhdGUpCit7CisgIFRlc3RQbGF5ZXJTdGF0ZSBvbGRfc3RhdGUgPSAqc3RhdGU7CisKKyAgc3RhdGUtPndpZHRoID0gd2lkdGg7CisgIHN0YXRlLT5oZWlnaHQgPSBoZWlnaHQ7CisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfVklERU9fRElNRU5TSU9OU19DSEFOR0VELAorICAgICAgJm9sZF9zdGF0ZSwgc3RhdGUpOworICBzdGF0ZS0+dGVzdF9jYWxsYmFjayAocGxheWVyLCBTVEFURV9DSEFOR0VfVklERU9fRElNRU5TSU9OU19DSEFOR0VELAorICAgICAgJm9sZF9zdGF0ZSwgc3RhdGUpOworfQorCitzdGF0aWMgdm9pZAorc2Vla19kb25lX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIGd1aW50NjQgcG9zaXRpb24sIFRlc3RQbGF5ZXJTdGF0ZSAqIHN0YXRlKQoreworICBUZXN0UGxheWVyU3RhdGUgb2xkX3N0YXRlID0gKnN0YXRlOworCisgIHN0YXRlLT5zZWVrX2RvbmUgPSBUUlVFOworICBzdGF0ZS0+c2Vla19kb25lX3Bvc2l0aW9uID0gcG9zaXRpb247CisgIHRlc3RfcGxheWVyX3N0YXRlX2NoYW5nZV9kZWJ1ZyAocGxheWVyLCBTVEFURV9DSEFOR0VfU0VFS19ET05FLAorICAgICAgJm9sZF9zdGF0ZSwgc3RhdGUpOworICBzdGF0ZS0+dGVzdF9jYWxsYmFjayAocGxheWVyLCBTVEFURV9DSEFOR0VfU0VFS19ET05FLCAmb2xkX3N0YXRlLCBzdGF0ZSk7Cit9CisKK3N0YXRpYyBHc3RQbGF5ZXIgKgordGVzdF9wbGF5ZXJfbmV3IChUZXN0UGxheWVyU3RhdGUgKiBzdGF0ZSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIEdzdEVsZW1lbnQgKnBsYXliaW4sICpmYWtlc2luazsKKworICBwbGF5ZXIgPQorICAgICAgZ3N0X3BsYXllcl9uZXcgKE5VTEwsCisgICAgICBnc3RfcGxheWVyX2dfbWFpbl9jb250ZXh0X3NpZ25hbF9kaXNwYXRjaGVyX25ldyAoTlVMTCkpOworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHRlc3RfcGxheWVyX3N0YXRlX3Jlc2V0IChzdGF0ZSk7CisKKyAgcGxheWJpbiA9IGdzdF9wbGF5ZXJfZ2V0X3BpcGVsaW5lIChwbGF5ZXIpOworICBmYWtlc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImZha2VzaW5rIiwgImF1ZGlvLXNpbmsiKTsKKyAgZ19vYmplY3Rfc2V0IChmYWtlc2luaywgInN5bmMiLCBUUlVFLCBOVUxMKTsKKyAgZ19vYmplY3Rfc2V0IChwbGF5YmluLCAiYXVkaW8tc2luayIsIGZha2VzaW5rLCBOVUxMKTsKKyAgZmFrZXNpbmsgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJmYWtlc2luayIsICJ2aWRlby1zaW5rIik7CisgIGdfb2JqZWN0X3NldCAoZmFrZXNpbmssICJzeW5jIiwgVFJVRSwgTlVMTCk7CisgIGdfb2JqZWN0X3NldCAocGxheWJpbiwgInZpZGVvLXNpbmsiLCBmYWtlc2luaywgTlVMTCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKHBsYXliaW4pOworCisgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXllciwgImJ1ZmZlcmluZyIsIEdfQ0FMTEJBQ0sgKGJ1ZmZlcmluZ19jYiksIHN0YXRlKTsKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAiZHVyYXRpb24tY2hhbmdlZCIsCisgICAgICBHX0NBTExCQUNLIChkdXJhdGlvbl9jaGFuZ2VkX2NiKSwgc3RhdGUpOworICBnX3NpZ25hbF9jb25uZWN0IChwbGF5ZXIsICJlbmQtb2Ytc3RyZWFtIiwgR19DQUxMQkFDSyAoZW5kX29mX3N0cmVhbV9jYiksCisgICAgICBzdGF0ZSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXllciwgImVycm9yIiwgR19DQUxMQkFDSyAoZXJyb3JfY2IpLCBzdGF0ZSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXllciwgIndhcm5pbmciLCBHX0NBTExCQUNLICh3YXJuaW5nX2NiKSwgc3RhdGUpOworICBnX3NpZ25hbF9jb25uZWN0IChwbGF5ZXIsICJwb3NpdGlvbi11cGRhdGVkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHBvc2l0aW9uX3VwZGF0ZWRfY2IpLCBzdGF0ZSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHBsYXllciwgInN0YXRlLWNoYW5nZWQiLCBHX0NBTExCQUNLIChzdGF0ZV9jaGFuZ2VkX2NiKSwKKyAgICAgIHN0YXRlKTsKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAibWVkaWEtaW5mby11cGRhdGVkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKG1lZGlhX2luZm9fdXBkYXRlZF9jYiksIHN0YXRlKTsKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAidmlkZW8tZGltZW5zaW9ucy1jaGFuZ2VkIiwKKyAgICAgIEdfQ0FMTEJBQ0sgKHZpZGVvX2RpbWVuc2lvbnNfY2hhbmdlZF9jYiksIHN0YXRlKTsKKyAgZ19zaWduYWxfY29ubmVjdCAocGxheWVyLCAic2Vlay1kb25lIiwgR19DQUxMQkFDSyAoc2Vla19kb25lX2NiKSwgc3RhdGUpOworCisgIHJldHVybiBwbGF5ZXI7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYXlfYXVkaW9fdmlkZW9fZW9zX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsCisgICAgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLCBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIGdpbnQgc3RlcCA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworICBnYm9vbGVhbiB2aWRlbzsKKworICB2aWRlbyA9ICEgIShzdGVwICYgMHgxMCk7CisgIHN0ZXAgPSAoc3RlcCAmICh+MHgxMCkpOworCisgIHN3aXRjaCAoc3RlcCkgeworICAgIGNhc2UgMDoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAob2xkX3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0KKyAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKCh2aWRlbyA/IDB4MTAgOiAweDAwKSB8IChzdGVwICsgMSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAxOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfTUVESUFfSU5GT19VUERBVEVEKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0KKyAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKCh2aWRlbyA/IDB4MTAgOiAweDAwKSB8IChzdGVwICsgMSkpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfVklERU9fRElNRU5TSU9OU19DSEFOR0VEKTsKKyAgICAgIGlmICh2aWRlbykgeworICAgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPndpZHRoLCAzMjApOworICAgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPmhlaWdodCwgMjQwKTsKKyAgICAgIH0gZWxzZSB7CisgICAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+d2lkdGgsIDApOworICAgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPmhlaWdodCwgMCk7CisgICAgICB9CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9CisgICAgICAgICAgR0lOVF9UT19QT0lOVEVSICgodmlkZW8gPyAweDEwIDogMHgwMCkgfCAoc3RlcCArIDEpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX0RVUkFUSU9OX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX3VpbnQ2NCAobmV3X3N0YXRlLT5kdXJhdGlvbiwKKyAgICAgICAgICBHX0dVSU5UNjRfQ09OU1RBTlQgKDQ2NDM5OTA5MikpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPQorICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKHZpZGVvID8gMHgxMCA6IDB4MDApIHwgKHN0ZXAgKyAxKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9QT1NJVElPTl9VUERBVEVEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc191aW50NjQgKG5ld19zdGF0ZS0+cG9zaXRpb24sIEdfR1VJTlQ2NF9DT05TVEFOVCAoMCkpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPQorICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKHZpZGVvID8gMHgxMCA6IDB4MDApIHwgKHN0ZXAgKyAxKSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDU6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9TVEFURV9DSEFOR0VEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG9sZF9zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyk7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9CisgICAgICAgICAgR0lOVF9UT19QT0lOVEVSICgodmlkZW8gPyAweDEwIDogMHgwMCkgfCAoc3RlcCArIDEpKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgNjoKKyAgICAgIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQpIHsKKyAgICAgICAgZmFpbF91bmxlc3MgKG9sZF9zdGF0ZS0+cG9zaXRpb24gPD0gbmV3X3N0YXRlLT5wb3NpdGlvbik7CisgICAgICB9IGVsc2UgeworICAgICAgICBmYWlsX3VubGVzc19lcXVhbHNfdWludDY0IChvbGRfc3RhdGUtPnBvc2l0aW9uLCBvbGRfc3RhdGUtPmR1cmF0aW9uKTsKKyAgICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSk7CisgICAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0KKyAgICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKHZpZGVvID8gMHgxMCA6IDB4MDApIHwgKHN0ZXAgKyAxKSk7CisgICAgICB9CisgICAgICBicmVhazsKKyAgICBjYXNlIDc6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9TVEFURV9DSEFOR0VEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG9sZF9zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPQorICAgICAgICAgIEdJTlRfVE9fUE9JTlRFUiAoKHZpZGVvID8gMHgxMCA6IDB4MDApIHwgKHN0ZXAgKyAxKSk7CisgICAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGZhaWwgKCk7CisgICAgICBicmVhazsKKyAgfQorfQorCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfYXVkaW9fZW9zKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworICBnY2hhciAqdXJpOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9hdWRpb192aWRlb19lb3NfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvYXVkaW8tc2hvcnQub2dnIiwgTlVMTCk7CisgIGZhaWxfdW5sZXNzICh1cmkgIT0gTlVMTCk7CisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCB1cmkpOworICBnX2ZyZWUgKHVyaSk7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSwgOCk7CisKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3VucmVmIChzdGF0ZS5sb29wKTsKK30KKworRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCit0ZXN0X2F1ZGlvX2luZm8gKEdzdFBsYXllck1lZGlhSW5mbyAqIG1lZGlhX2luZm8pCit7CisgIGdpbnQgaSA9IDA7CisgIEdMaXN0ICpsaXN0OworCisgIGZvciAobGlzdCA9IGdzdF9wbGF5ZXJfZ2V0X2F1ZGlvX3N0cmVhbXMgKG1lZGlhX2luZm8pOworICAgICAgbGlzdCAhPSBOVUxMOyBsaXN0ID0gbGlzdC0+bmV4dCkgeworICAgIEdzdFBsYXllclN0cmVhbUluZm8gKnN0cmVhbSA9IChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGxpc3QtPmRhdGE7CisgICAgR3N0UGxheWVyQXVkaW9JbmZvICphdWRpb19pbmZvID0gKEdzdFBsYXllckF1ZGlvSW5mbyAqKSBzdHJlYW07CisKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfdGFncyAoc3RyZWFtKSAhPSBOVUxMKTsKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY2FwcyAoc3RyZWFtKSAhPSBOVUxMKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZSAoc3RyZWFtKSwKKyAgICAgICAgImF1ZGlvIik7CisKKyAgICBpZiAoaSA9PSAwKSB7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoc3RyZWFtKSwKKyAgICAgICAgICAiTVBFRy0xIExheWVyIDMgKE1QMykiKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGUKKyAgICAgICAgICAoYXVkaW9faW5mbyksIDQ4MDAwKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHMgKGF1ZGlvX2luZm8pLAorICAgICAgICAgIDIpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ3N0X3BsYXllcl9hdWRpb19pbmZvX2dldF9tYXhfYml0cmF0ZQorICAgICAgICAgIChhdWRpb19pbmZvKSwgMTkyMDAwKTsKKyAgICAgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX2F1ZGlvX2luZm9fZ2V0X2xhbmd1YWdlIChhdWRpb19pbmZvKSAhPSBOVUxMKTsKKyAgICB9IGVsc2UgeworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX3N0cmluZyAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWMgKHN0cmVhbSksCisgICAgICAgICAgIk1QRUctNCBBQUMiKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfc2FtcGxlX3JhdGUKKyAgICAgICAgICAoYXVkaW9faW5mbyksIDQ4MDAwKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfY2hhbm5lbHMgKGF1ZGlvX2luZm8pLAorICAgICAgICAgIDYpOworICAgICAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfYXVkaW9faW5mb19nZXRfbGFuZ3VhZ2UgKGF1ZGlvX2luZm8pICE9IE5VTEwpOworICAgIH0KKworICAgIGkrKzsKKyAgfQorfQorCitzdGF0aWMgdm9pZAordGVzdF92aWRlb19pbmZvIChHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvKQoreworICBHTGlzdCAqbGlzdDsKKworICBmb3IgKGxpc3QgPSBnc3RfcGxheWVyX2dldF92aWRlb19zdHJlYW1zIChtZWRpYV9pbmZvKTsKKyAgICAgIGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKyAgICBnaW50IGZwc19kLCBmcHNfbjsKKyAgICBndWludCBwYXJfZCwgcGFyX247CisgICAgR3N0UGxheWVyU3RyZWFtSW5mbyAqc3RyZWFtID0gKEdzdFBsYXllclN0cmVhbUluZm8gKikgbGlzdC0+ZGF0YTsKKyAgICBHc3RQbGF5ZXJWaWRlb0luZm8gKnZpZGVvX2luZm8gPSAoR3N0UGxheWVyVmlkZW9JbmZvICopIHN0cmVhbTsKKworICAgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF90YWdzIChzdHJlYW0pICE9IE5VTEwpOworICAgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jYXBzIChzdHJlYW0pICE9IE5VTEwpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2luZGV4IChzdHJlYW0pLCAwKTsKKyAgICBmYWlsX3VubGVzcyAoc3Ryc3RyIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoc3RyZWFtKSwKKyAgICAgICAgICAgICJILjI2NCIpICE9IE5VTEwKKyAgICAgICAgfHwgc3Ryc3RyIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9jb2RlYyAoc3RyZWFtKSwgIkgyNjQiKSAhPSBOVUxMKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3dpZHRoICh2aWRlb19pbmZvKSwgMzIwKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X2hlaWdodCAodmlkZW9faW5mbyksIDI0MCk7CisgICAgZ3N0X3BsYXllcl92aWRlb19pbmZvX2dldF9mcmFtZXJhdGUgKHZpZGVvX2luZm8sICZmcHNfbiwgJmZwc19kKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChmcHNfbiwgMjQpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGZwc19kLCAxKTsKKyAgICBnc3RfcGxheWVyX3ZpZGVvX2luZm9fZ2V0X3BpeGVsX2FzcGVjdF9yYXRpbyAodmlkZW9faW5mbywgJnBhcl9uLCAmcGFyX2QpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHBhcl9uLCAzMyk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAocGFyX2QsIDIwKTsKKyAgfQorfQorCitzdGF0aWMgdm9pZAordGVzdF9zdWJ0aXRsZV9pbmZvIChHc3RQbGF5ZXJNZWRpYUluZm8gKiBtZWRpYV9pbmZvKQoreworICBHTGlzdCAqbGlzdDsKKworICBmb3IgKGxpc3QgPSBnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV9zdHJlYW1zIChtZWRpYV9pbmZvKTsKKyAgICAgIGxpc3QgIT0gTlVMTDsgbGlzdCA9IGxpc3QtPm5leHQpIHsKKyAgICBHc3RQbGF5ZXJTdHJlYW1JbmZvICpzdHJlYW0gPSAoR3N0UGxheWVyU3RyZWFtSW5mbyAqKSBsaXN0LT5kYXRhOworICAgIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqc3ViID0gKEdzdFBsYXllclN1YnRpdGxlSW5mbyAqKSBzdHJlYW07CisKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChnc3RfcGxheWVyX3N0cmVhbV9pbmZvX2dldF9zdHJlYW1fdHlwZSAoc3RyZWFtKSwKKyAgICAgICAgInN1YnRpdGxlIik7CisgICAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X3RhZ3MgKHN0cmVhbSkgIT0gTlVMTCk7CisgICAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfc3RyZWFtX2luZm9fZ2V0X2NhcHMgKHN0cmVhbSkgIT0gTlVMTCk7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX3N0cmluZyAoZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfY29kZWMgKHN0cmVhbSksCisgICAgICAgICJUaW1lZCBUZXh0Iik7CisgICAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfc3VidGl0bGVfaW5mb19nZXRfbGFuZ3VhZ2UgKHN1YikgIT0gTlVMTCk7CisgIH0KK30KKworc3RhdGljIHZvaWQKK3Rlc3RfbWVkaWFfaW5mb19vYmplY3QgKEdzdFBsYXllciAqIHBsYXllciwgR3N0UGxheWVyTWVkaWFJbmZvICogbWVkaWFfaW5mbykKK3sKKyAgR0xpc3QgKmxpc3Q7CisKKyAgLyogZ2xvYWJsIHRhZyAqLworICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9tZWRpYV9pbmZvX2lzX3NlZWthYmxlIChtZWRpYV9pbmZvKSA9PSBUUlVFKTsKKyAgZmFpbF91bmxlc3MgKGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGFncyAobWVkaWFfaW5mbykgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19zdHJpbmcgKGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdGl0bGUgKG1lZGlhX2luZm8pLAorICAgICAgIlNpbnRlbCIpOworICBmYWlsX3VubGVzc19lcXVhbHNfc3RyaW5nIChnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2NvbnRhaW5lcl9mb3JtYXQKKyAgICAgIChtZWRpYV9pbmZvKSwgIk1hdHJvc2thIik7CisgIGZhaWxfdW5sZXNzIChnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X2ltYWdlX3NhbXBsZSAobWVkaWFfaW5mbykgPT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzIChzdHJzdHIgKGdzdF9wbGF5ZXJfbWVkaWFfaW5mb19nZXRfdXJpIChtZWRpYV9pbmZvKSwKKyAgICAgICAgICAic2ludGVsLm1rdiIpICE9IE5VTEwpOworCisgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCisgIGxpc3QgPSBnc3RfcGxheWVyX21lZGlhX2luZm9fZ2V0X3N0cmVhbV9saXN0IChtZWRpYV9pbmZvKTsKKyAgZmFpbF91bmxlc3MgKGxpc3QgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGxpc3QpLCAxMCk7CisKKyAgbGlzdCA9IGdzdF9wbGF5ZXJfZ2V0X3ZpZGVvX3N0cmVhbXMgKG1lZGlhX2luZm8pOworICBmYWlsX3VubGVzcyAobGlzdCAhPSBOVUxMKTsKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoZ19saXN0X2xlbmd0aCAobGlzdCksIDEpOworCisgIGxpc3QgPSBnc3RfcGxheWVyX2dldF9hdWRpb19zdHJlYW1zIChtZWRpYV9pbmZvKTsKKyAgZmFpbF91bmxlc3MgKGxpc3QgIT0gTlVMTCk7CisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGdfbGlzdF9sZW5ndGggKGxpc3QpLCAyKTsKKworICBsaXN0ID0gZ3N0X3BsYXllcl9nZXRfc3VidGl0bGVfc3RyZWFtcyAobWVkaWFfaW5mbyk7CisgIGZhaWxfdW5sZXNzIChsaXN0ICE9IE5VTEwpOworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX2xpc3RfbGVuZ3RoIChsaXN0KSwgNyk7CisKKyAgLyogdGVzdCBzdWJ0aXRsZSAqLworICB0ZXN0X3N1YnRpdGxlX2luZm8gKG1lZGlhX2luZm8pOworCisgIC8qIHRlc3QgYXVkaW8gKi8KKyAgdGVzdF9hdWRpb19pbmZvIChtZWRpYV9pbmZvKTsKKworICAvKiB0ZXN0IHZpZGVvICovCisgIHRlc3RfdmlkZW9faW5mbyAobWVkaWFfaW5mbyk7Cit9CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYXlfbWVkaWFfaW5mb19jYiAoR3N0UGxheWVyICogcGxheWVyLCBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG9sZF9zdGF0ZSwgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBnaW50IGNvbXBsZXRlZCA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworCisgIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX01FRElBX0lORk9fVVBEQVRFRCkgeworICAgIHRlc3RfbWVkaWFfaW5mb19vYmplY3QgKHBsYXllciwgbmV3X3N0YXRlLT5tZWRpYV9pbmZvKTsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoY29tcGxldGVkICsgMSk7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgfSBlbHNlIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0gfHwKKyAgICAgIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICB9Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9tZWRpYV9pbmZvKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworICBnY2hhciAqdXJpOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9tZWRpYV9pbmZvX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL3NpbnRlbC5ta3YiLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHVyaSAhPSBOVUxMKTsKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsIHVyaSk7CisgIGdfZnJlZSAodXJpKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCAxKTsKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3VucmVmIChzdGF0ZS5sb29wKTsKK30KKworRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYXlfZXJyb3JfaW52YWxpZF9leHRlcm5hbF9zdWJ1cmlfY2IgKEdzdFBsYXllciAqIHBsYXllciwKKyAgICBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLCBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBnaW50IHN0ZXBzID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSk7CisKKyAgaWYgKG5ld19zdGF0ZS0+c3RhdGUgPT0gR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HICYmICFzdGVwcykgeworICAgIGdjaGFyICpzdWJ1cmk7CisKKyAgICBzdWJ1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChURVNUX1BBVEggIi9mb28uc3J0IiwgTlVMTCk7CisgICAgZmFpbF91bmxlc3MgKHN1YnVyaSAhPSBOVUxMKTsKKworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworICAgIC8qIGxvYWQgaW52YWxpZCBzdWJ1cmkgKi8KKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpIChwbGF5ZXIsIHN1YnVyaSkgIT0gRkFMU0UpOworICAgIGdfZnJlZSAoc3VidXJpKTsKKworICB9IGVsc2UgaWYgKHN0ZXBzICYmIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfV0FSTklORykgeworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisKKyAgfSBlbHNlIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0gfHwKKyAgICAgIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpCisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKK30KKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9zdHJlYW1fZGlzYWJsZV9jYiAoR3N0UGxheWVyICogcGxheWVyLAorICAgIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsIFRlc3RQbGF5ZXJTdGF0ZSAqIG9sZF9zdGF0ZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIGdpbnQgc3RlcHMgPSBHUE9JTlRFUl9UT19JTlQgKG5ld19zdGF0ZS0+dGVzdF9kYXRhKSAmIDB4ZjsKKyAgZ2ludCBtYXNrID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSkgJiAweGYwOworCisgIGlmIChuZXdfc3RhdGUtPnN0YXRlID09IEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyAmJiAhc3RlcHMpIHsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMHgxMCArIHN0ZXBzICsgMSk7CisgICAgZ3N0X3BsYXllcl9zZXRfYXVkaW9fdHJhY2tfZW5hYmxlZCAocGxheWVyLCBGQUxTRSk7CisKKyAgfSBlbHNlIGlmIChtYXNrID09IDB4MTAgJiYgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9QT1NJVElPTl9VUERBVEVEKSB7CisgICAgR3N0UGxheWVyQXVkaW9JbmZvICphdWRpbzsKKworICAgIGF1ZGlvID0gZ3N0X3BsYXllcl9nZXRfY3VycmVudF9hdWRpb190cmFjayAocGxheWVyKTsKKyAgICBmYWlsX3VubGVzcyAoYXVkaW8gPT0gTlVMTCk7CisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDB4MjAgKyBzdGVwcyArIDEpOworICAgIGdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrX2VuYWJsZWQgKHBsYXllciwgRkFMU0UpOworCisgIH0gZWxzZSBpZiAobWFzayA9PSAweDIwICYmIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCkgeworICAgIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqc3ViOworCisgICAgc3ViID0gZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFjayAocGxheWVyKTsKKyAgICBmYWlsX3VubGVzcyAoc3ViID09IE5VTEwpOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgweDMwICsgc3RlcHMgKyAxKTsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworCisgIH0gZWxzZSBpZiAoY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNIHx8CisgICAgICBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VSUk9SKSB7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgfQorfQorCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfc3RyZWFtX2Rpc2FibGUpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X3N0cmVhbV9kaXNhYmxlX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL3NpbnRlbC5ta3YiLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHVyaSAhPSBOVUxMKTsKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsIHVyaSk7CisgIGdfZnJlZSAodXJpKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCAweDMzKTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9zdHJlYW1fc3dpdGNoX2F1ZGlvX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwcyA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworCisgIGlmIChuZXdfc3RhdGUtPnN0YXRlID09IEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyAmJiAhc3RlcHMpIHsKKyAgICBnaW50IHJldDsKKworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworICAgIHJldCA9IGdzdF9wbGF5ZXJfc2V0X2F1ZGlvX3RyYWNrIChwbGF5ZXIsIDEpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHJldCwgMSk7CisKKyAgfSBlbHNlIGlmIChzdGVwcyAmJiBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQpIHsKKyAgICBnaW50IGluZGV4OworICAgIEdzdFBsYXllckF1ZGlvSW5mbyAqYXVkaW87CisKKyAgICBhdWRpbyA9IGdzdF9wbGF5ZXJfZ2V0X2N1cnJlbnRfYXVkaW9fdHJhY2sgKHBsYXllcik7CisgICAgZmFpbF91bmxlc3MgKGF1ZGlvICE9IE5VTEwpOworICAgIGluZGV4ID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXggKChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIGF1ZGlvKTsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChpbmRleCwgMSk7CisgICAgZ19vYmplY3RfdW5yZWYgKGF1ZGlvKTsKKworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisKKyAgfSBlbHNlIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0gfHwKKyAgICAgIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICB9Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9zdHJlYW1fc3dpdGNoX2F1ZGlvKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworICBnY2hhciAqdXJpOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9zdHJlYW1fc3dpdGNoX2F1ZGlvX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL3NpbnRlbC5ta3YiLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHVyaSAhPSBOVUxMKTsKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsIHVyaSk7CisgIGdfZnJlZSAodXJpKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCAyKTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9zdHJlYW1fc3dpdGNoX3N1YnRpdGxlX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwcyA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworCisgIGlmIChuZXdfc3RhdGUtPnN0YXRlID09IEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyAmJiAhc3RlcHMpIHsKKyAgICBnaW50IHJldDsKKworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwcyArIDEpOworICAgIHJldCA9IGdzdF9wbGF5ZXJfc2V0X3N1YnRpdGxlX3RyYWNrIChwbGF5ZXIsIDUpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKHJldCwgMSk7CisKKyAgfSBlbHNlIGlmIChzdGVwcyAmJiBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQpIHsKKyAgICBnaW50IGluZGV4OworICAgIEdzdFBsYXllclN1YnRpdGxlSW5mbyAqc3ViOworCisgICAgc3ViID0gZ3N0X3BsYXllcl9nZXRfY3VycmVudF9zdWJ0aXRsZV90cmFjayAocGxheWVyKTsKKyAgICBmYWlsX3VubGVzcyAoc3ViICE9IE5VTEwpOworICAgIGluZGV4ID0gZ3N0X3BsYXllcl9zdHJlYW1faW5mb19nZXRfaW5kZXggKChHc3RQbGF5ZXJTdHJlYW1JbmZvICopIHN1Yik7CisgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoaW5kZXgsIDUpOworICAgIGdfb2JqZWN0X3VucmVmIChzdWIpOworCisgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXBzICsgMSk7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKworICB9IGVsc2UgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRU5EX09GX1NUUkVBTSB8fAorICAgICAgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FUlJPUikgeworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgIH0KK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfc3VidGl0bGUpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X3N0cmVhbV9zd2l0Y2hfc3VidGl0bGVfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvc2ludGVsLm1rdiIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDIpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfZXJyb3JfaW52YWxpZF9leHRlcm5hbF9zdWJ1cmkpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X2Vycm9yX2ludmFsaWRfZXh0ZXJuYWxfc3VidXJpX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL2F1ZGlvLXZpZGVvLm9nZyIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDIpOworCisgIGdfb2JqZWN0X3VucmVmIChwbGF5ZXIpOworICBnX21haW5fbG9vcF91bnJlZiAoc3RhdGUubG9vcCk7Cit9CisKK0VORF9URVNUOworCitzdGF0aWMgZ2Jvb2xlYW4KK2hhc19zdWJ0aXRsZV9zdHJlYW0gKFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgaWYgKGdzdF9wbGF5ZXJfZ2V0X3N1YnRpdGxlX3N0cmVhbXMgKG5ld19zdGF0ZS0+bWVkaWFfaW5mbykpCisgICAgcmV0dXJuIFRSVUU7CisKKyAgcmV0dXJuIEZBTFNFOworfQorCitzdGF0aWMgdm9pZAordGVzdF9wbGF5X2V4dGVybmFsX3N1YnVyaV9jYiAoR3N0UGxheWVyICogcGxheWVyLAorICAgIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsIFRlc3RQbGF5ZXJTdGF0ZSAqIG9sZF9zdGF0ZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIGdpbnQgc3RlcHMgPSBHUE9JTlRFUl9UT19JTlQgKG5ld19zdGF0ZS0+dGVzdF9kYXRhKTsKKworICBpZiAobmV3X3N0YXRlLT5zdGF0ZSA9PSBHU1RfUExBWUVSX1NUQVRFX1BMQVlJTkcgJiYgIXN0ZXBzKSB7CisgICAgZ2NoYXIgKnN1YnVyaTsKKworICAgIHN1YnVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL3Rlc3Rfc3ViLnNydCIsIE5VTEwpOworICAgIGZhaWxfdW5sZXNzIChzdWJ1cmkgIT0gTlVMTCk7CisKKyAgICBmYWlsX3VubGVzcyAoZ3N0X3BsYXllcl9zZXRfc3VidGl0bGVfdXJpIChwbGF5ZXIsIHN1YnVyaSkgIT0gRkFMU0UpOworICAgIGdfZnJlZSAoc3VidXJpKTsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcHMgKyAxKTsKKworICB9IGVsc2UgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfTUVESUFfSU5GT19VUERBVEVEICYmCisgICAgICBoYXNfc3VidGl0bGVfc3RyZWFtIChuZXdfc3RhdGUpKSB7CisgICAgZ2NoYXIgKmN1cnJlbnRfc3VidXJpLCAqc3VidXJpOworCisgICAgY3VycmVudF9zdWJ1cmkgPSBnc3RfcGxheWVyX2dldF9zdWJ0aXRsZV91cmkgKHBsYXllcik7CisgICAgZmFpbF91bmxlc3MgKGN1cnJlbnRfc3VidXJpICE9IE5VTEwpOworICAgIHN1YnVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL3Rlc3Rfc3ViLnNydCIsIE5VTEwpOworICAgIGZhaWxfdW5sZXNzIChzdWJ1cmkgIT0gTlVMTCk7CisKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChnX3N0cmNtcDAgKGN1cnJlbnRfc3VidXJpLCBzdWJ1cmkpLCAwKTsKKworICAgIGdfZnJlZSAoY3VycmVudF9zdWJ1cmkpOworICAgIGdfZnJlZSAoc3VidXJpKTsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcHMgKyAxKTsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworCisgIH0gZWxzZSBpZiAoY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNIHx8CisgICAgICBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VSUk9SKQorICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9leHRlcm5hbF9zdWJ1cmkpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X2V4dGVybmFsX3N1YnVyaV9jYjsKKyAgc3RhdGUudGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgwKTsKKworICBwbGF5ZXIgPSB0ZXN0X3BsYXllcl9uZXcgKCZzdGF0ZSk7CisKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKworICB1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChURVNUX1BBVEggIi9hdWRpby12aWRlby5vZ2ciLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHVyaSAhPSBOVUxMKTsKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsIHVyaSk7CisgIGdfZnJlZSAodXJpKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCAyKTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9yYXRlX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwcyA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpICYgMHhmOworICBnaW50IG1hc2sgPSBHUE9JTlRFUl9UT19JTlQgKG5ld19zdGF0ZS0+dGVzdF9kYXRhKSAmIDB4ZjA7CisKKyAgaWYgKG5ld19zdGF0ZS0+c3RhdGUgPT0gR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HICYmICFzdGVwcykgeworICAgIGd1aW50NjQgZHVyID0gLTEsIHBvcyA9IC0xOworCisgICAgZ19vYmplY3RfZ2V0IChwbGF5ZXIsICJwb3NpdGlvbiIsICZwb3MsICJkdXJhdGlvbiIsICZkdXIsIE5VTEwpOworICAgIHBvcyA9IHBvcyArIGR1ciAqIDAuMjsgICAgICAvKiBzZWVrIDIwJSAqLworICAgIGdzdF9wbGF5ZXJfc2VlayAocGxheWVyLCBwb3MpOworCisgICAgLyogZGVmYXVsdCByYXRlIHNob3VsZCBiZSAxLjAgKi8KKyAgICBmYWlsX3VubGVzc19lcXVhbHNfZG91YmxlIChnc3RfcGxheWVyX2dldF9yYXRlIChwbGF5ZXIpLCAxLjApOworICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChtYXNrICsgc3RlcHMgKyAxKTsKKyAgfSBlbHNlIGlmIChjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VORF9PRl9TVFJFQU0gfHwKKyAgICAgIGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpIHsKKyAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICB9IGVsc2UgaWYgKHN0ZXBzID09IDEgJiYgY2hhbmdlID09IFNUQVRFX0NIQU5HRV9TRUVLX0RPTkUpIHsKKyAgICBpZiAobWFzayA9PSAweDEwKQorICAgICAgZ3N0X3BsYXllcl9zZXRfcmF0ZSAocGxheWVyLCAxLjUpOworICAgIGVsc2UgaWYgKG1hc2sgPT0gMHgyMCkKKyAgICAgIGdzdF9wbGF5ZXJfc2V0X3JhdGUgKHBsYXllciwgLTEuMCk7CisKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAobWFzayArIHN0ZXBzICsgMSk7CisgIH0gZWxzZSBpZiAoc3RlcHMgJiYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfUE9TSVRJT05fVVBEQVRFRCkpIHsKKyAgICBpZiAoc3RlcHMgPT0gMTApIHsKKyAgICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgICAgfSBlbHNlIHsKKyAgICAgIGlmIChtYXNrID09IDB4MTAgJiYgKG5ld19zdGF0ZS0+cG9zaXRpb24gPiBvbGRfc3RhdGUtPnBvc2l0aW9uKSkKKyAgICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKG1hc2sgKyBzdGVwcyArIDEpOworICAgICAgZWxzZSBpZiAobWFzayA9PSAweDIwICYmIChuZXdfc3RhdGUtPnBvc2l0aW9uIDwgb2xkX3N0YXRlLT5wb3NpdGlvbikpCisgICAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChtYXNrICsgc3RlcHMgKyAxKTsKKyAgICB9CisgIH0KK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X2ZvcndhcmRfcmF0ZSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfcmF0ZV9jYjsKKyAgc3RhdGUudGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgweDEwKTsKKworICBwbGF5ZXIgPSB0ZXN0X3BsYXllcl9uZXcgKCZzdGF0ZSk7CisKKyAgZmFpbF91bmxlc3MgKHBsYXllciAhPSBOVUxMKTsKKworICB1cmkgPSBnc3RfZmlsZW5hbWVfdG9fdXJpIChURVNUX1BBVEggIi9hdWRpby5vZ2ciLCBOVUxMKTsKKyAgZmFpbF91bmxlc3MgKHVyaSAhPSBOVUxMKTsKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsIHVyaSk7CisgIGdfZnJlZSAodXJpKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpICYgMHhmLCAxMCk7CisKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3VucmVmIChzdGF0ZS5sb29wKTsKK30KKworRU5EX1RFU1Q7CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9iYWNrd2FyZF9yYXRlKQoreworICBHc3RQbGF5ZXIgKnBsYXllcjsKKyAgVGVzdFBsYXllclN0YXRlIHN0YXRlOworICBnY2hhciAqdXJpOworCisgIG1lbXNldCAoJnN0YXRlLCAwLCBzaXplb2YgKHN0YXRlKSk7CisgIHN0YXRlLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKE5VTEwsIEZBTFNFKTsKKyAgc3RhdGUudGVzdF9jYWxsYmFjayA9IHRlc3RfcGxheV9yYXRlX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDB4MjApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL2F1ZGlvLm9nZyIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSkgJiAweGYsIDEwKTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X2F1ZGlvX3ZpZGVvX2VvcykKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfYXVkaW9fdmlkZW9fZW9zX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDB4MTApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL2F1ZGlvLXZpZGVvLXNob3J0Lm9nZyIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSkgJiAofjB4MTApLCA4KTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9lcnJvcl9pbnZhbGlkX3VyaV9jYiAoR3N0UGxheWVyICogcGxheWVyLAorICAgIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsIFRlc3RQbGF5ZXJTdGF0ZSAqIG9sZF9zdGF0ZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIGdpbnQgc3RlcCA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworCisgIHN3aXRjaCAoc3RlcCkgeworICAgIGNhc2UgMDoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAob2xkX3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9FUlJPUik7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChvbGRfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgICAgICBicmVhazsKKyAgICBkZWZhdWx0OgorICAgICAgZmFpbCAoKTsKKyAgICAgIGJyZWFrOworICB9Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9lcnJvcl9pbnZhbGlkX3VyaSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfZXJyb3JfaW52YWxpZF91cmlfY2I7CisgIHN0YXRlLnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoMCk7CisKKyAgcGxheWVyID0gdGVzdF9wbGF5ZXJfbmV3ICgmc3RhdGUpOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsICJmb286Ly9iYXIiKTsKKworICBnc3RfcGxheWVyX3BsYXkgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCAzKTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9lcnJvcl9pbnZhbGlkX3VyaV9hbmRfcGxheV9jYiAoR3N0UGxheWVyICogcGxheWVyLAorICAgIFRlc3RQbGF5ZXJTdGF0ZUNoYW5nZSBjaGFuZ2UsIFRlc3RQbGF5ZXJTdGF0ZSAqIG9sZF9zdGF0ZSwKKyAgICBUZXN0UGxheWVyU3RhdGUgKiBuZXdfc3RhdGUpCit7CisgIGdpbnQgc3RlcCA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworICBnY2hhciAqdXJpOworCisgIHN3aXRjaCAoc3RlcCkgeworICAgIGNhc2UgMDoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAob2xkX3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDE6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9FUlJPUik7CisgICAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworICAgICAgYnJlYWs7CisgICAgY2FzZSAyOgorICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoY2hhbmdlLCBTVEFURV9DSEFOR0VfU1RBVEVfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChvbGRfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX0JVRkZFUklORyk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPnN0YXRlLCBHU1RfUExBWUVSX1NUQVRFX1NUT1BQRUQpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKworICAgICAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvYXVkaW8tc2hvcnQub2dnIiwgTlVMTCk7CisgICAgICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICAgICAgZ3N0X3BsYXllcl9zZXRfdXJpIChwbGF5ZXIsIHVyaSk7CisgICAgICBnX2ZyZWUgKHVyaSk7CisKKyAgICAgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgMzoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAob2xkX3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9TVE9QUEVEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+c3RhdGUsIEdTVF9QTEFZRVJfU1RBVEVfQlVGRkVSSU5HKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDQ6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9NRURJQV9JTkZPX1VQREFURUQpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgNToKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1ZJREVPX0RJTUVOU0lPTlNfQ0hBTkdFRCk7CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChuZXdfc3RhdGUtPndpZHRoLCAwKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKG5ld19zdGF0ZS0+aGVpZ2h0LCAwKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDY6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9EVVJBVElPTl9DSEFOR0VEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc191aW50NjQgKG5ld19zdGF0ZS0+ZHVyYXRpb24sCisgICAgICAgICAgR19HVUlOVDY0X0NPTlNUQU5UICg0NjQzOTkwOTIpKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBicmVhazsKKyAgICBjYXNlIDc6CisgICAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9QT1NJVElPTl9VUERBVEVEKTsKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc191aW50NjQgKG5ld19zdGF0ZS0+cG9zaXRpb24sIEdfR1VJTlQ2NF9DT05TVEFOVCAoMCkpOworICAgICAgbmV3X3N0YXRlLT50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKHN0ZXAgKyAxKTsKKyAgICAgIGJyZWFrOworICAgIGNhc2UgODoKKyAgICAgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKGNoYW5nZSwgU1RBVEVfQ0hBTkdFX1NUQVRFX0NIQU5HRUQpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAob2xkX3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9CVUZGRVJJTkcpOworICAgICAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAobmV3X3N0YXRlLT5zdGF0ZSwgR1NUX1BMQVlFUl9TVEFURV9QTEFZSU5HKTsKKyAgICAgIG5ld19zdGF0ZS0+dGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSIChzdGVwICsgMSk7CisgICAgICBnX21haW5fbG9vcF9xdWl0IChuZXdfc3RhdGUtPmxvb3ApOworICAgICAgYnJlYWs7CisgICAgZGVmYXVsdDoKKyAgICAgIGZhaWwgKCk7CisgICAgICBicmVhazsKKyAgfQorfQorCitTVEFSVF9URVNUICh0ZXN0X3BsYXlfZXJyb3JfaW52YWxpZF91cmlfYW5kX3BsYXkpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X2Vycm9yX2ludmFsaWRfdXJpX2FuZF9wbGF5X2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIGdzdF9wbGF5ZXJfc2V0X3VyaSAocGxheWVyLCAiZm9vOi8vYmFyIik7CisKKyAgZ3N0X3BsYXllcl9wbGF5IChwbGF5ZXIpOworICBnX21haW5fbG9vcF9ydW4gKHN0YXRlLmxvb3ApOworCisgIGZhaWxfdW5sZXNzX2VxdWFsc19pbnQgKEdQT0lOVEVSX1RPX0lOVCAoc3RhdGUudGVzdF9kYXRhKSwgOSk7CisKKyAgZ19vYmplY3RfdW5yZWYgKHBsYXllcik7CisgIGdfbWFpbl9sb29wX3VucmVmIChzdGF0ZS5sb29wKTsKK30KKworRU5EX1RFU1Q7CisKK3N0YXRpYyB2b2lkCit0ZXN0X3BsYXlfc2Vla19kb25lX2NiIChHc3RQbGF5ZXIgKiBwbGF5ZXIsCisgICAgVGVzdFBsYXllclN0YXRlQ2hhbmdlIGNoYW5nZSwgVGVzdFBsYXllclN0YXRlICogb2xkX3N0YXRlLAorICAgIFRlc3RQbGF5ZXJTdGF0ZSAqIG5ld19zdGF0ZSkKK3sKKyAgZ2ludCBzdGVwID0gR1BPSU5URVJfVE9fSU5UIChuZXdfc3RhdGUtPnRlc3RfZGF0YSkgJiAofjB4MTApOworCisgIGlmIChuZXdfc3RhdGUtPnN0YXRlID09IEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyAmJiAhc3RlcCkgeworICAgIGdzdF9wbGF5ZXJfc2VlayAocGxheWVyLCAwKTsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworICB9IGVsc2UgaWYgKGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfU0VFS19ET05FIHx8IGNoYW5nZSA9PSBTVEFURV9DSEFOR0VfRVJST1IpIHsKKyAgICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChjaGFuZ2UsIFNUQVRFX0NIQU5HRV9TRUVLX0RPTkUpOworICAgIGZhaWxfdW5sZXNzX2VxdWFsc191aW50NjQgKG5ld19zdGF0ZS0+c2Vla19kb25lX3Bvc2l0aW9uLAorICAgICAgICBHX0dVSU5UNjRfQ09OU1RBTlQgKDApKTsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcCArIDEpOworICAgIGdfbWFpbl9sb29wX3F1aXQgKG5ld19zdGF0ZS0+bG9vcCk7CisgIH0KK30KKworU1RBUlRfVEVTVCAodGVzdF9wbGF5X2F1ZGlvX3ZpZGVvX3NlZWtfZG9uZSkKK3sKKyAgR3N0UGxheWVyICpwbGF5ZXI7CisgIFRlc3RQbGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgZ2NoYXIgKnVyaTsKKworICBtZW1zZXQgKCZzdGF0ZSwgMCwgc2l6ZW9mIChzdGF0ZSkpOworICBzdGF0ZS5sb29wID0gZ19tYWluX2xvb3BfbmV3IChOVUxMLCBGQUxTRSk7CisgIHN0YXRlLnRlc3RfY2FsbGJhY2sgPSB0ZXN0X3BsYXlfc2Vla19kb25lX2NiOworICBzdGF0ZS50ZXN0X2RhdGEgPSBHSU5UX1RPX1BPSU5URVIgKDApOworCisgIHBsYXllciA9IHRlc3RfcGxheWVyX25ldyAoJnN0YXRlKTsKKworICBmYWlsX3VubGVzcyAocGxheWVyICE9IE5VTEwpOworCisgIHVyaSA9IGdzdF9maWxlbmFtZV90b191cmkgKFRFU1RfUEFUSCAiL2F1ZGlvLXZpZGVvLm9nZyIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSkgJiAofjB4MTApLCAyKTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIHZvaWQKK3Rlc3RfcGxheV9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWxfY2IgKEdzdFBsYXllciAqIHBsYXllciwKKyAgICBUZXN0UGxheWVyU3RhdGVDaGFuZ2UgY2hhbmdlLCBUZXN0UGxheWVyU3RhdGUgKiBvbGRfc3RhdGUsCisgICAgVGVzdFBsYXllclN0YXRlICogbmV3X3N0YXRlKQoreworICBzdGF0aWMgZ2Jvb2xlYW4gZG9fcXVpdCA9IFRSVUU7CisgIHN0YXRpYyBHc3RDbG9ja1RpbWUgbGFzdF9wb3NpdGlvbiA9IEdTVF9DTE9DS19USU1FX05PTkU7CisKKyAgZ2ludCBzdGVwcyA9IEdQT0lOVEVSX1RPX0lOVCAobmV3X3N0YXRlLT50ZXN0X2RhdGEpOworCisgIGlmIChuZXdfc3RhdGUtPnN0YXRlID09IEdTVF9QTEFZRVJfU1RBVEVfUExBWUlORyAmJiAhc3RlcHMpIHsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcHMgKyAxKTsKKyAgfSBlbHNlIGlmIChzdGVwcyAmJiBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX1BPU0lUSU9OX1VQREFURUQpIHsKKyAgICBHc3RDbG9ja1RpbWUgcG9zaXRpb24gPSBnc3RfcGxheWVyX2dldF9wb3NpdGlvbiAocGxheWVyKTsKKyAgICBuZXdfc3RhdGUtPnRlc3RfZGF0YSA9IEdJTlRfVE9fUE9JTlRFUiAoc3RlcHMgKyAxKTsKKworICAgIGlmIChHU1RfQ0xPQ0tfVElNRV9JU19WQUxJRCAobGFzdF9wb3NpdGlvbikpIHsKKyAgICAgIEdzdENsb2NrVGltZSBpbnRlcnZhbCA9IEdTVF9DTE9DS19ESUZGIChsYXN0X3Bvc2l0aW9uLCBwb3NpdGlvbik7CisgICAgICBHU1RfREVCVUdfT0JKRUNUIChwbGF5ZXIsCisgICAgICAgICAgInBvc2l0aW9uIHVwZGF0ZSBpbnRlcnZhbDogJSIgR1NUX1RJTUVfRk9STUFUICJcbiIsCisgICAgICAgICAgR1NUX1RJTUVfQVJHUyAoaW50ZXJ2YWwpKTsKKyAgICAgIGZhaWxfdW5sZXNzIChpbnRlcnZhbCA+ICg1OTAgKiBHU1RfTVNFQ09ORCkKKyAgICAgICAgICAmJiBpbnRlcnZhbCA8ICg2MTAgKiBHU1RfTVNFQ09ORCkpOworICAgIH0KKworICAgIGxhc3RfcG9zaXRpb24gPSBwb3NpdGlvbjsKKworICAgIGlmIChkb19xdWl0ICYmIHBvc2l0aW9uID49IDIwMDAgKiBHU1RfTVNFQ09ORCkgeworICAgICAgZG9fcXVpdCA9IEZBTFNFOworICAgICAgZ3N0X3BsYXllcl9zZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsIChwbGF5ZXIsIDApOworICAgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgICB9CisgIH0gZWxzZSBpZiAoY2hhbmdlID09IFNUQVRFX0NIQU5HRV9FTkRfT0ZfU1RSRUFNIHx8CisgICAgICBjaGFuZ2UgPT0gU1RBVEVfQ0hBTkdFX0VSUk9SKSB7CisgICAgZ19tYWluX2xvb3BfcXVpdCAobmV3X3N0YXRlLT5sb29wKTsKKyAgfQorfQorCitzdGF0aWMgZ2Jvb2xlYW4KK3F1aXRfbG9vcF9jYiAoZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBHTWFpbkxvb3AgKmxvb3AgPSB1c2VyX2RhdGE7CisgIGdfbWFpbl9sb29wX3F1aXQgKGxvb3ApOworCisgIHJldHVybiBHX1NPVVJDRV9SRU1PVkU7Cit9CisKK1NUQVJUX1RFU1QgKHRlc3RfcGxheV9wb3NpdGlvbl91cGRhdGVfaW50ZXJ2YWwpCit7CisgIEdzdFBsYXllciAqcGxheWVyOworICBUZXN0UGxheWVyU3RhdGUgc3RhdGU7CisgIGdjaGFyICp1cmk7CisKKyAgbWVtc2V0ICgmc3RhdGUsIDAsIHNpemVvZiAoc3RhdGUpKTsKKyAgc3RhdGUubG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworICBzdGF0ZS50ZXN0X2NhbGxiYWNrID0gdGVzdF9wbGF5X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbF9jYjsKKyAgc3RhdGUudGVzdF9kYXRhID0gR0lOVF9UT19QT0lOVEVSICgwKTsKKworICBwbGF5ZXIgPSB0ZXN0X3BsYXllcl9uZXcgKCZzdGF0ZSk7CisgIGdzdF9wbGF5ZXJfc2V0X3Bvc2l0aW9uX3VwZGF0ZV9pbnRlcnZhbCAocGxheWVyLCA2MDApOworCisgIGZhaWxfdW5sZXNzIChwbGF5ZXIgIT0gTlVMTCk7CisKKyAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoVEVTVF9QQVRIICIvc2ludGVsLm1rdiIsIE5VTEwpOworICBmYWlsX3VubGVzcyAodXJpICE9IE5VTEwpOworICBnc3RfcGxheWVyX3NldF91cmkgKHBsYXllciwgdXJpKTsKKyAgZ19mcmVlICh1cmkpOworCisgIGdzdF9wbGF5ZXJfcGxheSAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfcnVuIChzdGF0ZS5sb29wKTsKKworICBmYWlsX3VubGVzc19lcXVhbHNfaW50IChHUE9JTlRFUl9UT19JTlQgKHN0YXRlLnRlc3RfZGF0YSksIDUpOworCisgIGdfdGltZW91dF9hZGQgKDIwMDAsIHF1aXRfbG9vcF9jYiwgc3RhdGUubG9vcCk7CisgIGdfbWFpbl9sb29wX3J1biAoc3RhdGUubG9vcCk7CisKKyAgZmFpbF91bmxlc3NfZXF1YWxzX2ludCAoR1BPSU5URVJfVE9fSU5UIChzdGF0ZS50ZXN0X2RhdGEpLCA1KTsKKworICBnX29iamVjdF91bnJlZiAocGxheWVyKTsKKyAgZ19tYWluX2xvb3BfdW5yZWYgKHN0YXRlLmxvb3ApOworfQorCitFTkRfVEVTVDsKKworc3RhdGljIFN1aXRlICoKK3BsYXllcl9zdWl0ZSAodm9pZCkKK3sKKyAgU3VpdGUgKnMgPSBzdWl0ZV9jcmVhdGUgKCJHc3RQbGF5ZXIiKTsKKworICBUQ2FzZSAqdGNfZ2VuZXJhbCA9IHRjYXNlX2NyZWF0ZSAoImdlbmVyYWwiKTsKKworICAvKiBVc2UgYSBsb25nZXIgdGltZW91dCAqLworI2lmZGVmIEhBVkVfVkFMR1JJTkQKKyAgaWYgKFJVTk5JTkdfT05fVkFMR1JJTkQpIHsKKyAgICB0Y2FzZV9zZXRfdGltZW91dCAodGNfZ2VuZXJhbCwgNSAqIDYwKTsKKyAgfSBlbHNlCisjZW5kaWYKKyAgeworICAgIHRjYXNlX3NldF90aW1lb3V0ICh0Y19nZW5lcmFsLCAyICogNjApOworICB9CisKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfY3JlYXRlX2FuZF9mcmVlKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3Rfc2V0X2FuZF9nZXRfdXJpKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3Rfc2V0X2FuZF9nZXRfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsKTsKKworI2lmZGVmIEhBVkVfVkFMR1JJTkQKKyAgaWYgKFJVTk5JTkdfT05fVkFMR1JJTkQpIHsKKyAgfSBlbHNlCisjZW5kaWYKKyAgeworICAgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfcG9zaXRpb25fdXBkYXRlX2ludGVydmFsKTsKKyAgfQorICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X2F1ZGlvX2Vvcyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfYXVkaW9fdmlkZW9fZW9zKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9lcnJvcl9pbnZhbGlkX3VyaSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfZXJyb3JfaW52YWxpZF91cmlfYW5kX3BsYXkpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X21lZGlhX2luZm8pOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X3N0cmVhbV9kaXNhYmxlKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9zdHJlYW1fc3dpdGNoX2F1ZGlvKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9zdHJlYW1fc3dpdGNoX3N1YnRpdGxlKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9lcnJvcl9pbnZhbGlkX2V4dGVybmFsX3N1YnVyaSk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19nZW5lcmFsLCB0ZXN0X3BsYXlfZXh0ZXJuYWxfc3VidXJpKTsKKyAgdGNhc2VfYWRkX3Rlc3QgKHRjX2dlbmVyYWwsIHRlc3RfcGxheV9mb3J3YXJkX3JhdGUpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X2JhY2t3YXJkX3JhdGUpOworICB0Y2FzZV9hZGRfdGVzdCAodGNfZ2VuZXJhbCwgdGVzdF9wbGF5X2F1ZGlvX3ZpZGVvX3NlZWtfZG9uZSk7CisKKyAgc3VpdGVfYWRkX3RjYXNlIChzLCB0Y19nZW5lcmFsKTsKKworICByZXR1cm4gczsKK30KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCit7CisgIGludCBudW1iZXJfZmFpbGVkOworICBTdWl0ZSAqczsKKyAgU1J1bm5lciAqc3I7CisKKyAgZ3N0X2luaXQgKE5VTEwsIE5VTEwpOworCisgIHMgPSBwbGF5ZXJfc3VpdGUgKCk7CisgIHNyID0gc3J1bm5lcl9jcmVhdGUgKHMpOworCisgIHNydW5uZXJfcnVuX2FsbCAoc3IsIENLX05PUk1BTCk7CisKKyAgbnVtYmVyX2ZhaWxlZCA9IHNydW5uZXJfbnRlc3RzX2ZhaWxlZCAoc3IpOworCisgIHNydW5uZXJfZnJlZSAoc3IpOworICByZXR1cm4gKG51bWJlcl9mYWlsZWQgPT0gMCkgPyAwIDogLTE7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9waXBlbGluZXMvbXhmLmMgYi90ZXN0cy9jaGVjay9waXBlbGluZXMvbXhmLmMKaW5kZXggNWFiM2E1MC4uNGI1OWUzZCAxMDA2NDQKLS0tIGEvdGVzdHMvY2hlY2svcGlwZWxpbmVzL214Zi5jCisrKyBiL3Rlc3RzL2NoZWNrL3BpcGVsaW5lcy9teGYuYwpAQCAtMjYwLDYgKzI2MCwzMyBAQAogCiBHU1RfRU5EX1RFU1Q7CiAKK0dTVF9TVEFSVF9URVNUICh0ZXN0X2gyNjRfcmF3X2F1ZGlvKQoreworICBnY2hhciAqcGlwZWxpbmU7CisgIEdzdEVsZW1lbnRGYWN0b3J5ICpmYWN0b3J5ID0gTlVMTDsKKworICBpZiAoKGZhY3RvcnkgPSBnc3RfZWxlbWVudF9mYWN0b3J5X2ZpbmQgKCJ4MjY0ZW5jIikpID09IE5VTEwpCisgICAgcmV0dXJuOworICBnc3Rfb2JqZWN0X3VucmVmIChmYWN0b3J5KTsKKyAgaWYgKChmYWN0b3J5ID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9maW5kICgiaDI2NHBhcnNlIikpID09IE5VTEwpCisgICAgcmV0dXJuOworICBnc3Rfb2JqZWN0X3VucmVmIChmYWN0b3J5KTsKKworICBwaXBlbGluZSA9IGdfc3RyZHVwX3ByaW50ZiAoInZpZGVvdGVzdHNyYyBudW0tYnVmZmVycz0yNTAgISAiCisgICAgICAidmlkZW8veC1yYXcsZnJhbWVyYXRlPTI1LzEgISAiCisgICAgICAieDI2NGVuYyAhIGgyNjRwYXJzZSAhICIKKyAgICAgICJteGZtdXggbmFtZT1tdXggISAiCisgICAgICAibXhmZGVtdXggbmFtZT1kZW11eCAhICIKKyAgICAgICJmYWtlc2luayAgIgorICAgICAgImF1ZGlvdGVzdHNyYyBudW0tYnVmZmVycz0yNTAgISAiCisgICAgICAiYXVkaW9jb252ZXJ0ICEgIiAiYXVkaW8veC1yYXcsZm9ybWF0PVMyNExFLGNoYW5uZWxzPTIgISBtdXguICIpOworCisgIHJ1bl90ZXN0IChwaXBlbGluZSwgMik7CisgIGdfZnJlZSAocGlwZWxpbmUpOworfQorCitHU1RfRU5EX1RFU1Q7CisKIHN0YXRpYyBTdWl0ZSAqCiBteGZfc3VpdGUgKHZvaWQpCiB7CkBAIC0yNjksMTYgKzI5NiwxMiBAQAogICBzdWl0ZV9hZGRfdGNhc2UgKHMsIHRjX2NoYWluKTsKICAgdGNhc2Vfc2V0X3RpbWVvdXQgKHRjX2NoYWluLCAxODApOwogCi0gIC8qIEZJWE1FOiByZW1vdmUgYWdhaW4gb25jZSBwb3J0ZWQgKi8KLSAgaWYgKCFnc3RfcmVnaXN0cnlfY2hlY2tfZmVhdHVyZV92ZXJzaW9uIChnc3RfcmVnaXN0cnlfZ2V0ICgpLCAibXhmbXV4IiwgMSwKLSAgICAgICAgICAwLCAwKSkKLSAgICByZXR1cm4gczsKLQogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfbXBlZzIpOwogICB0Y2FzZV9hZGRfdGVzdCAodGNfY2hhaW4sIHRlc3RfcmF3X3ZpZGVvX3Jhd19hdWRpbyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9yYXdfdmlkZW9fc3RyaWRlX3RyYW5zZm9ybSk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9qcGVnMjAwMF9hbGF3KTsKICAgdGNhc2VfYWRkX3Rlc3QgKHRjX2NoYWluLCB0ZXN0X2RueGhkX21wMyk7CisgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9oMjY0X3Jhd19hdWRpbyk7CiAgIHRjYXNlX2FkZF90ZXN0ICh0Y19jaGFpbiwgdGVzdF9tdWx0aXBsZV9hdl9zdHJlYW1zKTsKIAogICByZXR1cm4gczsKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL01ha2VmaWxlLmFtIGIvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuYW0KaW5kZXggYzI2ZDNkOS4uNTdlZDZkZCAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuYW0KKysrIGIvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuYW0KQEAgLTQwLDYgKzQwLDE2IEBACiBHVEszX0RJUj0KIGVuZGlmCiAKK2lmIFVTRV9XQVlMQU5ECitpZiBIQVZFX0dUSzMKK1dBWUxBTkRfRElSPXdheWxhbmRzaW5rCitlbHNlCitXQVlMQU5EX0RJUj0KK2VuZGlmCitlbHNlCitXQVlMQU5EX0RJUj0KK2VuZGlmCisKIG5vaW5zdF9QUk9HUkFNUyA9IHBsYXlvdXQKIAogcGxheW91dF9TT1VSQ0VTID0gcGxheW91dC5jCkBAIC00Nyw3ICs1Nyw4IEBACiBwbGF5b3V0X0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pICQoR1NUX0xJQlMpCiAKIFNVQkRJUlM9IGNvZGVjcGFyc2VycyBtcGVndHMgJChESVJFQ1RGQl9ESVIpICQoR1RLX0VYQU1QTEVTKSAkKE9QRU5DVl9FWEFNUExFUykgXAotICAgICAgICAkKEdMX0RJUikgJChHVEszX0RJUikgJChBVlNBTVBMRV9ESVIpCi1ESVNUX1NVQkRJUlM9IGNvZGVjcGFyc2VycyBtcGVndHMgY2FtZXJhYmluMiBkaXJlY3RmYiBteGYgb3BlbmN2IHV2Y2gyNjQgZ2wgZ3RrIGF2c2FtcGxlc2luaworICAgICAgICAkKEdMX0RJUikgJChHVEszX0RJUikgJChBVlNBTVBMRV9ESVIpICQoV0FZTEFORF9ESVIpCitESVNUX1NVQkRJUlM9IGNvZGVjcGFyc2VycyBtcGVndHMgY2FtZXJhYmluMiBkaXJlY3RmYiBteGYgb3BlbmN2IHV2Y2gyNjQgZ2wgZ3RrIFwKKyAgICAgICAgYXZzYW1wbGVzaW5rIHdheWxhbmRzaW5rCiAKIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9jb21tb24vcGFyYWxsZWwtc3ViZGlycy5tYWsKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuaW4KaW5kZXggMWE3ZGZiMS4uZDBiZTI5NSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvTWFrZWZpbGUuaW4KQEAgLTEyMSwxNiArMTIxLDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yOTAsNiArMjg5LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMjcsNiArMzI4LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMzUsNyArMzM4LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzU0LDggKzM1Niw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNzIsMTYgKzM3NSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC00MDcsNiArNDExLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDMyLDYgKzQzOCw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUzMyw2ICs1NDEsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTQ2LDggKzU1NSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTU2Myw2ICs1NzAsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNjIwLDE2ICs2MjksMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02ODEsNiArNjkyLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY5MSw2ICs3MDMsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC03MDAsNiArNzEzLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTczNyw3ICs3NTIsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKQEAgLTc5MSwxMyArODA1LDE4IEBACiBASEFWRV9BVkZPVU5EQVRJT05fVFJVRUBASEFWRV9JT1NfVFJVRUBBVlNBTVBMRV9ESVIgPSAKIEBVU0VfR1RLM19GQUxTRUBHVEszX0RJUiA9IAogQFVTRV9HVEszX1RSVUVAR1RLM19ESVIgPSBndGsKK0BIQVZFX0dUSzNfRkFMU0VAQFVTRV9XQVlMQU5EX1RSVUVAV0FZTEFORF9ESVIgPSAKK0BIQVZFX0dUSzNfVFJVRUBAVVNFX1dBWUxBTkRfVFJVRUBXQVlMQU5EX0RJUiA9IHdheWxhbmRzaW5rCitAVVNFX1dBWUxBTkRfRkFMU0VAV0FZTEFORF9ESVIgPSAKIHBsYXlvdXRfU09VUkNFUyA9IHBsYXlvdXQuYwogcGxheW91dF9DRkxBR1MgPSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCiBwbGF5b3V0X0xEQUREID0gJChHU1RfUExVR0lOU19CQVNFX0xJQlMpIC1sZ3N0dmlkZW8tJChHU1RfQVBJX1ZFUlNJT04pICQoR1NUX0xJQlMpCiBTVUJESVJTID0gY29kZWNwYXJzZXJzIG1wZWd0cyAkKERJUkVDVEZCX0RJUikgJChHVEtfRVhBTVBMRVMpICQoT1BFTkNWX0VYQU1QTEVTKSBcCi0gICAgICAgICQoR0xfRElSKSAkKEdUSzNfRElSKSAkKEFWU0FNUExFX0RJUikKKyAgICAgICAgJChHTF9ESVIpICQoR1RLM19ESVIpICQoQVZTQU1QTEVfRElSKSAkKFdBWUxBTkRfRElSKQogCi1ESVNUX1NVQkRJUlMgPSBjb2RlY3BhcnNlcnMgbXBlZ3RzIGNhbWVyYWJpbjIgZGlyZWN0ZmIgbXhmIG9wZW5jdiB1dmNoMjY0IGdsIGd0ayBhdnNhbXBsZXNpbmsKK0RJU1RfU1VCRElSUyA9IGNvZGVjcGFyc2VycyBtcGVndHMgY2FtZXJhYmluMiBkaXJlY3RmYiBteGYgb3BlbmN2IHV2Y2gyNjQgZ2wgZ3RrIFwKKyAgICAgICAgYXZzYW1wbGVzaW5rIHdheWxhbmRzaW5rCisKIGFsbDogYWxsLXJlY3Vyc2l2ZQogCiAuU1VGRklYRVM6CmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9hdnNhbXBsZXNpbmsvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9hdnNhbXBsZXNpbmsvTWFrZWZpbGUuaW4KaW5kZXggNzhlZDdjNi4uMWEzZjQ3YiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvYXZzYW1wbGVzaW5rL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2F2c2FtcGxlc2luay9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0NCw2ICsyNDMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4MSw2ICsyODIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4OSw3ICsyOTIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDgsOCArMzEwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNiwxNiArMzI5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2MSw2ICszNjUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODYsNiArMzkyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg3LDYgKzQ5NSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDAsOCArNTA5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE3LDYgKzUyNCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzQsMTYgKzU4MywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNSw2ICs2NDYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ1LDYgKzY1Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1NCw2ICs2NjcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkxLDcgKzcwNiw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvY2FtZXJhYmluMi9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvTWFrZWZpbGUuaW4KaW5kZXggMWViY2M1ZC4uMmJjNjM4MiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvY2FtZXJhYmluMi9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9jYW1lcmFiaW4yL01ha2VmaWxlLmluCkBAIC0xMTcsMTYgKzExNywxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjYyLDYgKzI2MSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjk5LDYgKzMwMCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzA3LDcgKzMxMCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMyNiw4ICszMjgsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzQ0LDE2ICszNDcsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzc5LDYgKzM4Myw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQwNCw2ICs0MTAsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MDUsNiArNTEzLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUxOCw4ICs1MjcsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MzUsNiArNTQyLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU5MiwxNiArNjAxLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjUzLDYgKzY2NCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NjMsNiArNjc1LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjcyLDYgKzY4NSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MDksNyArNzI0LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9jYW1lcmFiaW4yL2dzdC1jYW1lcmFiaW4yLXRlc3QuYyBiL3Rlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvZ3N0LWNhbWVyYWJpbjItdGVzdC5jCmluZGV4IDkwZTAxMGEuLjFjNjE5NTcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvZ3N0LWNhbWVyYWJpbjItdGVzdC5jCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2NhbWVyYWJpbjIvZ3N0LWNhbWVyYWJpbjItdGVzdC5jCkBAIC00MjgsNyArNDI4LDcgQEAKIAogICAgICAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1lc3NhZ2UsICZlcnIsICZkZWJ1Zyk7CiAgICAgICBnX3ByaW50ICgiRXJyb3I6ICVzXG4iLCBlcnItPm1lc3NhZ2UpOwotICAgICAgZ19lcnJvcl9mcmVlIChlcnIpOworICAgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CiAgICAgICBnX2ZyZWUgKGRlYnVnKTsKIAogICAgICAgLyogV3JpdGUgZGVidWcgZ3JhcGggdG8gZmlsZSAqLwpAQCAtNTU2LDggKzU1Niw3IEBACiAgICAgICAgICAgZ2VwX2ZpbGVuYW1lKTsKICAgICAgIGlmIChlcnJvcikgewogICAgICAgICBHU1RfV0FSTklORyAoIkVycm9yIGZyb20gZmlsZSBsb2FkaW5nOiAlcyIsIGVycm9yLT5tZXNzYWdlKTsKLSAgICAgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7Ci0gICAgICAgIGVycm9yID0gTlVMTDsKKyAgICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICAgIH0KICAgICB9IGVsc2UgewogICAgICAgcHJvZiA9IGdzdF9lbmNvZGluZ190YXJnZXRfZ2V0X3Byb2ZpbGUgKHRhcmdldCwgZ2VwX3Byb2ZpbGVuYW1lKTsKQEAgLTYwMSw3ICs2MDAsNyBAQAogICAgICAgICAgIHByb3BlcnR5X25hbWUpOwogICAgICAgaWYgKGVycm9yKSB7CiAgICAgICAgIEdTVF9FUlJPUiAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOwotICAgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKyAgICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICAgIH0KICAgICAgIHJlcyA9IEZBTFNFOwogICAgIH0KQEAgLTEyNTMsNiArMTI1Miw4IEBACiAgIGdfb3B0aW9uX2NvbnRleHRfYWRkX2dyb3VwIChjdHgsIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAgKCkpOwogICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGN0eCwgJmFyZ2MsICZhcmd2LCAmZXJyKSkgewogICAgIGdfcHJpbnQgKCJFcnJvciBpbml0aWFsaXppbmc6ICVzXG4iLCBlcnItPm1lc3NhZ2UpOworICAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY3R4KTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKICAgICBleGl0ICgxKTsKICAgfQogICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGN0eCk7CmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9jb2RlY3BhcnNlcnMvTWFrZWZpbGUuaW4KaW5kZXggMDE5YmQ1MC4uOTQ2ZGMwMiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2NvZGVjcGFyc2Vycy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0Nyw2ICsyNDYsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4NCw2ICsyODUsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5Miw3ICsyOTUsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTEsOCArMzEzLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyOSwxNiArMzMyLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2NCw2ICszNjgsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODksNiArMzk1LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDkwLDYgKzQ5OCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDMsOCArNTEyLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTIwLDYgKzUyNyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzcsMTYgKzU4NiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzOCw2ICs2NDksNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ4LDYgKzY2MCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Nyw2ICs2NzAsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk0LDcgKzcwOSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL3BhcnNlLWpwZWcuYyBiL3Rlc3RzL2V4YW1wbGVzL2NvZGVjcGFyc2Vycy9wYXJzZS1qcGVnLmMKaW5kZXggZmU0Mjk5OS4uY2E5Y2YxYiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvY29kZWNwYXJzZXJzL3BhcnNlLWpwZWcuYworKysgYi90ZXN0cy9leGFtcGxlcy9jb2RlY3BhcnNlcnMvcGFyc2UtanBlZy5jCkBAIC0yMzksNyArMjM5LDcgQEAKIAogICBpZiAoIWdfZmlsZV9nZXRfY29udGVudHMgKGZuLCAmZGF0YSwgJnNpemUsICZlcnIpKSB7CiAgICAgZ19lcnJvciAoIiVzIiwgZXJyLT5tZXNzYWdlKTsKLSAgICBnX2Vycm9yX2ZyZWUgKGVycik7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CiAgICAgcmV0dXJuOwogICB9CiAKQEAgLTI4Niw2ICsyODYsOCBAQAogICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cCAoY3R4LCBnc3RfaW5pdF9nZXRfb3B0aW9uX2dyb3VwICgpKTsKICAgaWYgKCFnX29wdGlvbl9jb250ZXh0X3BhcnNlIChjdHgsICZhcmdjLCAmYXJndiwgJmVycikpIHsKICAgICBnX3ByaW50ICgiRXJyb3IgaW5pdGlhbGl6aW5nOiAlc1xuIiwgR1NUX1NUUl9OVUxMIChlcnItPm1lc3NhZ2UpKTsKKyAgICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGN0eCk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CiAgICAgZXhpdCAoMSk7CiAgIH0KICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjdHgpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZGlyZWN0ZmIvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9kaXJlY3RmYi9NYWtlZmlsZS5pbgppbmRleCA0YTU3Zjk2Li4xZDZjNGU1IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9kaXJlY3RmYi9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9kaXJlY3RmYi9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0MSw2ICsyNDAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI3OCw2ICsyNzksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4Niw3ICsyODksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDUsOCArMzA3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyMywxNiArMzI2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM1OCw2ICszNjIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODMsNiArMzg5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg0LDYgKzQ5Miw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00OTcsOCArNTA2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE0LDYgKzUyMSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzEsMTYgKzU4MCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzMiw2ICs2NDMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQyLDYgKzY1NCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1MSw2ICs2NjQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjg4LDcgKzcwMyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9NYWtlZmlsZS5pbgppbmRleCBhZjM0YjVlLi45ZTQwOTU4IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9NYWtlZmlsZS5pbgpAQCAtMTE5LDE2ICsxMTksMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI1Miw2ICsyNTEsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4OSw2ICsyOTAsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5Nyw3ICszMDAsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTYsOCArMzE4LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMzNCwxNiArMzM3LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2OSw2ICszNzMsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zOTQsNiArNDAwLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDk1LDYgKzUwMyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDgsOCArNTE3LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTI1LDYgKzUzMiw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01ODIsMTYgKzU5MSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY0Myw2ICs2NTQsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjUzLDYgKzY2NSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY2Miw2ICs2NzUsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk5LDcgKzcxNCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvY2x1dHRlci9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvTWFrZWZpbGUuaW4KaW5kZXggMTYwZDEwOS4uODU0ZTc1YSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvY2x1dHRlci9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL01ha2VmaWxlLmluCkBAIC0xMjAsMTYgKzEyMCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjg0LDYgKzI4Myw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzIxLDYgKzMyMiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzI5LDcgKzMzMiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTM0OCw4ICszNTAsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzY2LDE2ICszNjksMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtNDAxLDYgKzQwNSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQyNiw2ICs0MzIsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MjcsNiArNTM1LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTU0MCw4ICs1NDksNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NTcsNiArNTY0LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTYxNCwxNiArNjIzLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjc1LDYgKzY4Niw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02ODUsNiArNjk3LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjk0LDYgKzcwNyw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MzEsNyArNzQ2LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL2NsdXR0ZXJzaGFyZS5jIGIvdGVzdHMvZXhhbXBsZXMvZ2wvY2x1dHRlci9jbHV0dGVyc2hhcmUuYwppbmRleCBkZTdjZDY2Li5lZTRlYjdkIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9jbHV0dGVyL2NsdXR0ZXJzaGFyZS5jCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2NsdXR0ZXIvY2x1dHRlcnNoYXJlLmMKQEAgLTM2LDcgKzM2LDcgQEAKICNpbmNsdWRlIDxnc3QvZ3N0Lmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL3ZpZGVvLmg+CiAjaW5jbHVkZSA8Z3N0L3ZpZGVvL2dzdHZpZGVvbWV0YS5oPgotI2luY2x1ZGUgPGdzdC9nbC9nc3RnbG1lbW9yeS5oPgorI2luY2x1ZGUgPGdzdC9nbC9nbC5oPgogCiAvKiBUaGlzIGV4YW1wbGUgc2hvd3MgaG93IHRvIHVzZSB0ZXh0dXJlcyB0aGF0IGNvbWUgZnJvbSBhCiAgKiBnc3QtcGx1Z2lucy1nbCBwaXBlbGluZSwgaW50byB0aGUgY2x1dHRlciBmcmFtZXdvcmsKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2NvY29hL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvY29jb2EvTWFrZWZpbGUuaW4KaW5kZXggMmU2MDU0YS4uZjVmNDYwNiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvY29jb2EvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvY29jb2EvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDcsNiArMjQ2LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODQsNiArMjg1LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTIsNyArMjk1LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzExLDggKzMxMyw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjksMTYgKzMzMiwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjQsNiArMzY4LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg5LDYgKzM5NSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5MCw2ICs0OTgsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAzLDggKzUxMiw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyMCw2ICs1MjcsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc3LDE2ICs1ODYsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzgsNiArNjQ5LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0OCw2ICs2NjAsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTcsNiArNjcwLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5NCw3ICs3MDksNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL01ha2VmaWxlLmluCmluZGV4IDE0MDM5NWEuLmE0ZmIwNGMgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9NYWtlZmlsZS5pbgpAQCAtMTE0LDE2ICsxMTQsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0OCw2ICsyNDcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4NSw2ICsyODYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5Myw3ICsyOTYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTIsOCArMzE0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMzMCwxNiArMzMzLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2NSw2ICszNjksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zOTAsNiArMzk2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDkxLDYgKzQ5OSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDQsOCArNTEzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTIxLDYgKzUyOCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzgsMTYgKzU4NywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzOSw2ICs2NTAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ5LDYgKzY2MSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1OCw2ICs2NzEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjk1LDcgKzcxMCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL01ha2VmaWxlLmluCmluZGV4IGM4NTYxYTAuLjQwNTMyNzYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZS9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDMsNiArMjQyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODAsNiArMjgxLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yODgsNyArMjkxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA3LDggKzMwOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjUsMTYgKzMyOCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjAsNiArMzY0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg1LDYgKzM5MSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4Niw2ICs0OTQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNDk5LDggKzUwOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxNiw2ICs1MjMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTczLDE2ICs1ODIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzQsNiArNjQ1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0NCw2ICs2NTYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTMsNiArNjY2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5MCw3ICs3MDUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZS9tYWluLmNwcCBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZS9tYWluLmNwcAppbmRleCAzYTU0ZmU2Li5kYTRhYTE3IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmUvbWFpbi5jcHAKKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJlL21haW4uY3BwCkBAIC0xMjAsNyArMTIwLDggQEAKICAgICBnbE1hdHJpeE1vZGUoR0xfTU9ERUxWSUVXKTsKICAgICBnbExvYWRJZGVudGl0eSgpOwogCi0gICAgZ2xTY2FsZWYoMC41ZiwwLjVmLDAuNWYpOworICAgIC8qIGludmVydCB0aGUgeS1heGlzIHRvIGdldCB0aGUgZnJvbnQgZmFjZSB0aGUgY29ycmVjdCB3YXkgdXAgKi8KKyAgICBnbFNjYWxlZiAoMC41ZiwgLTAuNWYsIDAuNWYpOwogCiAgICAgZ2xSb3RhdGVmKHhyb3QsMS4wZiwwLjBmLDAuMGYpOwogICAgIGdsUm90YXRlZih5cm90LDAuMGYsMS4wZiwwLjBmKTsKQEAgLTE4Miw2ICsxODMsOSBAQAogICAgIEdNYWluTG9vcCAqbG9vcDsKICAgICBHc3RCdXMgKmJ1czsKIAorICAgIC8qIEZJWE1FOiByZW1vdmUgb25jZSB0aGUgZXhhbXBsZSBzdXBwb3J0cyBnbDMgYW5kL29yIGdsZXMyICovCisgICAgZ19zZXRlbnYgKCJHU1RfR0xfQVBJIiwgIm9wZW5nbCIsIEZBTFNFKTsKKwogICAgIC8qIGluaXRpYWxpemF0aW9uICovCiAgICAgZ3N0X2luaXQgKCZhcmdjLCAmYXJndik7CiAgICAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOwpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L01ha2VmaWxlLmluCmluZGV4IDU4YjUzOWMuLjhjNDI2NzIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZXl1di9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmV5dXYvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDMsNiArMjQyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODAsNiArMjgxLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yODgsNyArMjkxLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA3LDggKzMwOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjUsMTYgKzMyOCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjAsNiArMzY0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg1LDYgKzM5MSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4Niw2ICs0OTQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNDk5LDggKzUwOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxNiw2ICs1MjMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTczLDE2ICs1ODIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzQsNiArNjQ1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0NCw2ICs2NTYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTMsNiArNjY2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5MCw3ICs3MDUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZXl1di9tYWluLmNwcCBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvY3ViZXl1di9tYWluLmNwcAppbmRleCA5YzRiMmNjLi5jZGE5OTBmIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2N1YmV5dXYvbWFpbi5jcHAKKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9jdWJleXV2L21haW4uY3BwCkBAIC0xNDMsMTIgKzE0MywxMyBAQAogICAgIGdsTWF0cml4TW9kZShHTF9NT0RFTFZJRVcpOwogICAgIGdsTG9hZElkZW50aXR5KCk7CiAKLSAgICBnbFRyYW5zbGF0ZWYoMC4wZiwwLjBmLC01LjBmKTsKLQogICAgIGdsUm90YXRlZih4cm90LDEuMGYsMC4wZiwwLjBmKTsKICAgICBnbFJvdGF0ZWYoeXJvdCwwLjBmLDEuMGYsMC4wZik7CiAgICAgZ2xSb3RhdGVmKHpyb3QsMC4wZiwwLjBmLDEuMGYpOwogCisgICAgLyogaW52ZXJ0IHRoZSB5LWF4aXMgdG8gZ2V0IHRoZSBmcm9udCBmYWNlIHRoZSBjb3JyZWN0IHdheSB1cCAqLworICAgIGdsU2NhbGVmICgwLjVmLCAtMC41ZiwgMC41Zik7CisKICAgICBnbEJlZ2luKEdMX1FVQURTKTsKIAkgICAgICAvLyBGcm9udCBGYWNlCiAJICAgICAgZ2xUZXhDb29yZDJmKDEuMGYsIDAuMGYpOyBnbFZlcnRleDNmKC0xLjBmLCAtMS4wZiwgIDEuMGYpOwpAQCAtMTgyLDYgKzE4Myw4IEBACiAJICAgICAgZ2xUZXhDb29yZDJmKDEuMGYsIDEuMGYpOyBnbFZlcnRleDNmKC0xLjBmLCAgMS4wZiwgLTEuMGYpOwogICAgIGdsRW5kKCk7CiAKKyAgICBnbERpc2FibGUoR0xfREVQVEhfVEVTVCk7CisKICAgICBnc3RfdmlkZW9fZnJhbWVfdW5tYXAgKCZ2X2ZyYW1lKTsKIAogCXhyb3QrPTAuMDNmOwpAQCAtMjI3LDYgKzIzMCw5IEBACiAgICAgICAgIHJldHVybiAtMTsKICAgICB9CiAKKyAgICAvKiBGSVhNRTogcmVtb3ZlIG9uY2UgdGhlIGV4YW1wbGUgc3VwcG9ydHMgZ2wzIGFuZC9vciBnbGVzMiAqLworICAgIGdfc2V0ZW52ICgiR1NUX0dMX0FQSSIsICJvcGVuZ2wiLCBGQUxTRSk7CisKICAgICBzdGQ6OnN0cmluZyB2aWRlb19sb2NhdGlvbihhcmd2WzFdKTsKIAogICAgIC8qIGluaXRpYWxpemF0aW9uICovCkBAIC0yNDcsMjIgKzI1MywxNSBAQAogICAgIEdzdEVsZW1lbnQqIGRlY29kZWJpbiA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImRlY29kZWJpbiIsICJkZWNvZGViaW4iKTsKICAgICBHc3RFbGVtZW50KiBpZGVudGl0eSAgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJpZGVudGl0eSIsICJpZGVudGl0eTAiKTsKICAgICBHc3RFbGVtZW50KiB0ZXh0b3ZlcmxheSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoInRleHRvdmVybGF5IiwgInRleHRvdmVybGF5MCIpOwotICAgIEdzdEVsZW1lbnQqIGdsY29sb3JzY2FsZSA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsY29sb3JzY2FsZSIsICJnbGNvbG9yc2NhbGUwIik7CiAgICAgR3N0RWxlbWVudCogZ2xpbWFnZXNpbmsgID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ2xpbWFnZXNpbmsiLCAiZ2xpbWFnZXNpbmswIik7CiAKIAotICAgIGlmICghdmlkZW9zcmMgfHwgIWRlY29kZWJpbiB8fCAhaWRlbnRpdHkgfHwgIXRleHRvdmVybGF5IHx8Ci0gICAgICAgICFnbGNvbG9yc2NhbGUgfHwgIWdsaW1hZ2VzaW5rKQorICAgIGlmICghdmlkZW9zcmMgfHwgIWRlY29kZWJpbiB8fCAhaWRlbnRpdHkgfHwgIXRleHRvdmVybGF5IHx8ICFnbGltYWdlc2luaykKICAgICB7CiAgICAgICAgIGdfcHJpbnQgKCJvbmUgZWxlbWVudCBjb3VsZCBub3QgYmUgZm91bmQgXG4iKTsKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotICAgIEdzdENhcHMgKm91dGNhcHMgPSBnc3RfY2Fwc19uZXdfc2ltcGxlKCJ2aWRlby94LXJhdyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndpZHRoIiwgR19UWVBFX0lOVCwgNjQwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJoZWlnaHQiLCBHX1RZUEVfSU5ULCA0ODAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMTCk7Ci0KICAgICAvKiBjb25maWd1cmUgZWxlbWVudHMgKi8KICAgICBnX29iamVjdF9zZXQoR19PQkpFQ1QodmlkZW9zcmMpLCAibnVtLWJ1ZmZlcnMiLCA4MDAsIE5VTEwpOwogICAgIGdfb2JqZWN0X3NldChHX09CSkVDVCh2aWRlb3NyYyksICJsb2NhdGlvbiIsIHZpZGVvX2xvY2F0aW9uLmNfc3RyKCksIE5VTEwpOwpAQCAtMjczLDcgKzI3Miw3IEBACiAKICAgICAvKiBhZGQgZWxlbWVudHMgKi8KICAgICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOIChwaXBlbGluZSksIHZpZGVvc3JjLCBkZWNvZGViaW4sIGlkZW50aXR5LAotICAgICAgICB0ZXh0b3ZlcmxheSwgZ2xjb2xvcnNjYWxlLCBnbGltYWdlc2luaywgTlVMTCk7CisgICAgICAgIHRleHRvdmVybGF5LCBnbGltYWdlc2luaywgTlVMTCk7CiAKICAgICAvKiBsaW5rIGVsZW1lbnRzICovCiAJZ3N0X2VsZW1lbnRfbGlua19wYWRzICh2aWRlb3NyYywgInNyYyIsIGRlY29kZWJpbiwgInNpbmsiKTsKQEAgLTI4NiwxMCArMjg1LDcgQEAKICAgICAgICAgcmV0dXJuIC0xOwogICAgIH0KIAotCWdzdF9lbGVtZW50X2xpbmsgKHRleHRvdmVybGF5LCBnbGNvbG9yc2NhbGUpOwotCi0gICAgZ2Jvb2xlYW4gbGlua19vayA9IGdzdF9lbGVtZW50X2xpbmtfZmlsdGVyZWQoZ2xjb2xvcnNjYWxlLCBnbGltYWdlc2luaywgb3V0Y2FwcykgOwotICAgIGdzdF9jYXBzX3VucmVmKG91dGNhcHMpIDsKKyAgICBnYm9vbGVhbiBsaW5rX29rID0gZ3N0X2VsZW1lbnRfbGluayAodGV4dG92ZXJsYXksIGdsaW1hZ2VzaW5rKTsKICAgICBpZighbGlua19vaykKICAgICB7CiAgICAgICAgIGdfd2FybmluZygiRmFpbGVkIHRvIGxpbmsgdGV4dG92ZXJsYXkgdG8gZ2xpbWFnZXNpbmshXG4iKSA7CmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2RvdWJsZWN1YmUvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL2RvdWJsZWN1YmUvTWFrZWZpbGUuaW4KaW5kZXggMTRjZTUyMi4uYzM2NzNjOSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9kb3VibGVjdWJlL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvZG91YmxlY3ViZS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0Myw2ICsyNDIsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4MCw2ICsyODEsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4OCw3ICsyOTEsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDcsOCArMzA5LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNSwxNiArMzI4LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2MCw2ICszNjQsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODUsNiArMzkxLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg2LDYgKzQ5NCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00OTksOCArNTA4LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE2LDYgKzUyMyw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzMsMTYgKzU4MiwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNCw2ICs2NDUsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ0LDYgKzY1Niw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Myw2ICs2NjYsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkwLDcgKzcwNSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9yZWNvcmRncmFwaGljL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ2VuZXJpYy9yZWNvcmRncmFwaGljL01ha2VmaWxlLmluCmluZGV4IGViZTNhNmQuLmNlMzZlZDUgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2dlbmVyaWMvcmVjb3JkZ3JhcGhpYy9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9nZW5lcmljL3JlY29yZGdyYXBoaWMvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDQsNiArMjQzLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODEsNiArMjgyLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yODksNyArMjkyLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA4LDggKzMxMCw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjYsMTYgKzMyOSwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjEsNiArMzY1LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg2LDYgKzM5Miw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4Nyw2ICs0OTUsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAwLDggKzUwOSw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxNyw2ICs1MjQsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc0LDE2ICs1ODMsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzUsNiArNjQ2LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0NSw2ICs2NTcsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTQsNiArNjY3LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5MSw3ICs3MDYsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay8zZHZpZGVvL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrLzNkdmlkZW8vTWFrZWZpbGUuaW4KaW5kZXggYWUwZmRkYy4uMWE0ODFkMSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrLzNkdmlkZW8vTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrLzNkdmlkZW8vTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjY3LDYgKzI2Niw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMzA0LDYgKzMwNSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzEyLDcgKzMxNSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMzMSw4ICszMzMsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzQ5LDE2ICszNTIsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzg0LDYgKzM4OCw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTQwOSw2ICs0MTUsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC01MTAsNiArNTE4LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUyMyw4ICs1MzIsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01NDAsNiArNTQ3LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU5NywxNiArNjA2LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjU4LDYgKzY2OSw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NjgsNiArNjgwLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjc3LDYgKzY5MCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MTQsNyArNzI5LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvTWFrZWZpbGUuaW4KaW5kZXggNTAzM2Y5MC4uMTJmN2E0YiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI4NCw2ICsyODMsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMyMSw2ICszMjIsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMyOSw3ICszMzIsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zNDgsOCArMzUwLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM2NiwxNiArMzY5LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTQwMSw2ICs0MDUsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MjYsNiArNDMyLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTI3LDYgKzUzNSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01NDAsOCArNTQ5LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTU3LDYgKzU2NCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MTQsMTYgKzYyMywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY3NSw2ICs2ODYsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjg1LDYgKzY5Nyw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY5NCw2ICs3MDcsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzMxLDcgKzc0Niw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcm5vdmlkZW9vdmVybGF5L01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcm5vdmlkZW9vdmVybGF5L01ha2VmaWxlLmluCmluZGV4IDVhM2MyOTMuLjI5NDk2MDQgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJub3ZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZmlsdGVybm92aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KQEAgLTExNiwxNiArMTE2LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDUsNiArMjQ0LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODIsNiArMjgzLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTAsNyArMjkzLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzA5LDggKzMxMSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMjcsMTYgKzMzMCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjIsNiArMzY2LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzg3LDYgKzM5Myw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ4OCw2ICs0OTYsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTAxLDggKzUxMCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUxOCw2ICs1MjUsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc1LDE2ICs1ODQsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02MzYsNiArNjQ3LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY0Niw2ICs2NTgsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTUsNiArNjY4LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5Miw3ICs3MDcsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJ2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZmlsdGVydmlkZW9vdmVybGF5L01ha2VmaWxlLmluCmluZGV4IDRjNzY5N2UuLjUwYWFkNzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9maWx0ZXJ2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2ZpbHRlcnZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0NSw2ICsyNDQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Miw2ICsyODMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5MCw3ICsyOTMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDksOCArMzExLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNywxNiArMzMwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Miw2ICszNjYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODcsNiArMzkzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg4LDYgKzQ5Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDEsOCArNTEwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE4LDYgKzUyNSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzUsMTYgKzU4NCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNiw2ICs2NDcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ2LDYgKzY1OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1NSw2ICs2NjgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkyLDcgKzcwNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvTWFrZWZpbGUuaW4KaW5kZXggNjkyZTZhNC4uZjk2YzJkNiAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjUyLDYgKzI1MSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjg5LDYgKzI5MCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjk3LDcgKzMwMCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxNiw4ICszMTgsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzM0LDE2ICszMzcsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzY5LDYgKzM3Myw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5NCw2ICs0MDAsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTUsNiArNTAzLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwOCw4ICs1MTcsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjUsNiArNTMyLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU4MiwxNiArNTkxLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjQzLDYgKzY1NCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NTMsNiArNjY1LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjYyLDYgKzY3NSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTksNyArNzE0LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L2Z4dGVzdC5jIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2Z4dGVzdC9meHRlc3QuYwppbmRleCBmODNmMTg5Li5jMWNkZGVhIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L2Z4dGVzdC5jCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvZnh0ZXN0LmMKQEAgLTc2LDcgKzc2LDcgQEAKICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yIChtZXNzYWdlLCAmZXJyLCAmZGVidWcpOwogCiAgICAgICBnX3ByaW50ICgiRXJyb3I6ICVzXG4iLCBlcnItPm1lc3NhZ2UpOwotICAgICAgZ19lcnJvcl9mcmVlIChlcnIpOworICAgICAgZ19jbGVhcl9lcnJvciAoJmVycik7CiAKICAgICAgIGlmIChkZWJ1ZykgewogICAgICAgICBnX3ByaW50ICgiRGVidWcgZGV0YWlsczogJXNcbiIsIGRlYnVnKTsKQEAgLTE3NCw3ICsxNzQsNyBAQAogewogICBHc3RTdGF0ZUNoYW5nZVJldHVybiByZXQ7CiAgIEdzdEVsZW1lbnQgKnBpcGVsaW5lOwotICBHc3RFbGVtZW50ICpmaWx0ZXIsICpzaW5rOworICBHc3RFbGVtZW50ICp1cGxvYWQsICpmaWx0ZXIsICpzaW5rOwogICBHc3RFbGVtZW50ICpzb3VyY2ViaW47CiAgIEdzdEJ1cyAqYnVzOwogICBHRXJyb3IgKmVycm9yID0gTlVMTDsKQEAgLTIwMiw2ICsyMDIsOCBAQAogICBnX29wdGlvbl9jb250ZXh0X2FkZF9ncm91cCAoY29udGV4dCwgZ3RrX2dldF9vcHRpb25fZ3JvdXAgKFRSVUUpKTsKICAgaWYgKCFnX29wdGlvbl9jb250ZXh0X3BhcnNlIChjb250ZXh0LCAmYXJnYywgJmFyZ3YsICZlcnJvcikpIHsKICAgICBnX3ByaW50ICgiSW5pemlhbGl6YXRpb24gZXJyb3I6ICVzXG4iLCBHU1RfU1RSX05VTEwgKGVycm9yLT5tZXNzYWdlKSk7CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgIHJldHVybiAtMTsKICAgfQogICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGNvbnRleHQpOwpAQCAtMjMyLDEyICsyMzQsMTMgQEAKIAogICBwaXBlbGluZSA9IGdzdF9waXBlbGluZV9uZXcgKCJwaXBlbGluZSIpOwogCisgIHVwbG9hZCA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsdXBsb2FkIiwgTlVMTCk7CiAgIGZpbHRlciA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsZWZmZWN0cyIsICJmbHQiKTsKICAgc2luayA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoImdsaW1hZ2VzaW5rIiwgImdsc2luayIpOwogCi0gIGdzdF9iaW5fYWRkX21hbnkgKEdTVF9CSU4gKHBpcGVsaW5lKSwgc291cmNlYmluLCBmaWx0ZXIsIHNpbmssIE5VTEwpOworICBnc3RfYmluX2FkZF9tYW55IChHU1RfQklOIChwaXBlbGluZSksIHNvdXJjZWJpbiwgdXBsb2FkLCBmaWx0ZXIsIHNpbmssIE5VTEwpOwogCi0gIGlmICghZ3N0X2VsZW1lbnRfbGlua19tYW55IChzb3VyY2ViaW4sIGZpbHRlciwgc2luaywgTlVMTCkpIHsKKyAgaWYgKCFnc3RfZWxlbWVudF9saW5rX21hbnkgKHNvdXJjZWJpbiwgdXBsb2FkLCBmaWx0ZXIsIHNpbmssIE5VTEwpKSB7CiAgICAgZ19wcmludCAoIkZhaWxlZCB0byBsaW5rIG9uZSBvciBtb3JlIGVsZW1lbnRzIVxuIik7CiAgICAgcmV0dXJuIC0xOwogICB9CmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZnh0ZXN0L3BpeGJ1ZmRyb3AuYyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvcGl4YnVmZHJvcC5jCmluZGV4IDQ2M2FkZDMuLjY5YmYzYWYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvcGl4YnVmZHJvcC5jCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9meHRlc3QvcGl4YnVmZHJvcC5jCkBAIC0yMDYsNiArMjA2LDggQEAKICAgZ19vcHRpb25fY29udGV4dF9hZGRfZ3JvdXAgKGNvbnRleHQsIGd0a19nZXRfb3B0aW9uX2dyb3VwIChUUlVFKSk7CiAgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZSAoY29udGV4dCwgJmFyZ2MsICZhcmd2LCAmZXJyb3IpKSB7CiAgICAgZ19wcmludCAoIkluaXppYWxpemF0aW9uIGVycm9yOiAlc1xuIiwgR1NUX1NUUl9OVUxMIChlcnJvci0+bWVzc2FnZSkpOworICAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY29udGV4dCk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICByZXR1cm4gLTE7CiAgIH0KICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjb250ZXh0KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9ndGt2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvZ3RrdmlkZW9vdmVybGF5L01ha2VmaWxlLmluCmluZGV4IDE4NzMxMzkuLjJjNjhhM2MgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9ndGt2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KKysrIGIvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL2d0a3ZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0NSw2ICsyNDQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Miw2ICsyODMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5MCw3ICsyOTMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDksOCArMzExLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyNywxNiArMzMwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Miw2ICszNjYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODcsNiArMzkzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg4LDYgKzQ5Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDEsOCArNTEwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE4LDYgKzUyNSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzUsMTYgKzU4NCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNiw2ICs2NDcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ2LDYgKzY1OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1NSw2ICs2NjgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkyLDcgKzcwNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL3N3aXRjaHZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL2d0ay9zd2l0Y2h2aWRlb292ZXJsYXkvTWFrZWZpbGUuaW4KaW5kZXggMWVhZDYwZC4uYzdiZmUzMSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvZ3RrL3N3aXRjaHZpZGVvb3ZlcmxheS9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9nbC9ndGsvc3dpdGNodmlkZW9vdmVybGF5L01ha2VmaWxlLmluCkBAIC0xMTYsMTYgKzExNiwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMjQ1LDYgKzI0NCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgyLDYgKzI4Myw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkwLDcgKzI5Myw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMwOSw4ICszMTEsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI3LDE2ICszMzAsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYyLDYgKzM2Niw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4Nyw2ICszOTMsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODgsNiArNDk2LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMSw4ICs1MTAsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTgsNiArNTI1LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NSwxNiArNTg0LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM2LDYgKzY0Nyw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDYsNiArNjU4LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU1LDYgKzY2OCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTIsNyArNzA3LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9xdC9NYWtlZmlsZS5pbiBiL3Rlc3RzL2V4YW1wbGVzL2dsL3F0L01ha2VmaWxlLmluCmluZGV4IDRiMTk1ZTEuLjFkZDk3YzcgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2dsL3F0L01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL3F0L01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTg4LDYgKzE4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjI1LDYgKzIyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjMzLDcgKzIzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTI1Miw4ICsyNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMjcwLDE2ICsyNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzA1LDYgKzMwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTMzMCw2ICszMzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00MzEsNiArNDM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ0NCw4ICs0NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC00NjEsNiArNDY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTUxOCwxNiArNTI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNTc5LDYgKzU5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC01ODksNiArNjAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNTk4LDYgKzYxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02MzUsNyArNjUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9nbC9zZGwvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9nbC9zZGwvTWFrZWZpbGUuaW4KaW5kZXggOTc0Yzg4NC4uNGQ1MWEyZCAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvZ2wvc2RsL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL2dsL3NkbC9NYWtlZmlsZS5pbgpAQCAtMTE5LDE2ICsxMTksMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI1OSw2ICsyNTgsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI5Niw2ICsyOTcsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMwNCw3ICszMDcsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMjMsOCArMzI1LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM0MSwxNiArMzQ0LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM3Niw2ICszODAsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MDEsNiArNDA3LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTAyLDYgKzUxMCw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MTUsOCArNTI0LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTMyLDYgKzUzOSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01ODksMTYgKzU5OCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY1MCw2ICs2NjEsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjYwLDYgKzY3Miw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY2OSw2ICs2ODIsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzA2LDcgKzcyMSw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlLmFtIGIvdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlLmFtCmluZGV4IDk0NTMzMWQuLmFkZjVlMzEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2d0ay9NYWtlZmlsZS5hbQorKysgYi90ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuYW0KQEAgLTksMTYgKzksMzMgQEAKIAogaWYgVVNFX0dUSzNfR0wKIGlmIFVTRV9HTAotbm9pbnN0X1BST0dSQU1TICs9IGd0a2dsc2luaworbm9pbnN0X1BST0dSQU1TICs9IGd0a2dsc2luayBnbGxpdmVzaGFkZXIKIAogZ3RrZ2xzaW5rX1NPVVJDRVMgPSBndGtnbHNpbmsuYwogZ3RrZ2xzaW5rX0NGTEFHUyA9ICQoR1RLM19DRkxBR1MpIFwKIAkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKIAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCiAJJChHU1RfQ0ZMQUdTKSBcCi0JJChHTF9DRkxBR1MpCisJJChHTF9DRkxBR1MpIFwKKwktREdTVF9VU0VfVU5TVEFCTEVfQVBJCiBndGtnbHNpbmtfTERBREQgPSAkKEdUSzNfTElCUykgXAogCSQoR1NUX0xJQlMpIFwKLQkkKEdMX0xJQlMpCisJJChHTF9MSUJTKSBcCisJJChYMTFfTElCUykKKworZ2xsaXZlc2hhZGVyX1NPVVJDRVMgPSBnbGxpdmVzaGFkZXIuYworZ2xsaXZlc2hhZGVyX0NGTEFHUyA9ICQoR1RLM19DRkxBR1MpIFwKKwktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKKwkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKKwkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCisJJChHU1RfQ0ZMQUdTKSBcCisJJChHTF9DRkxBR1MpIFwKKwktREdTVF9VU0VfVU5TVEFCTEVfQVBJCitnbGxpdmVzaGFkZXJfTERBREQgPSAkKEdUSzNfTElCUykgXAorCSQoR1NUX0xJQlMpIFwKKwkkKEdMX0xJQlMpIFwKKwkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCisJJChYMTFfTElCUykKIGVuZGlmCiBlbmRpZgpkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvZ3RrL01ha2VmaWxlLmluCmluZGV4IGY5MjllN2YuLjA0YmNiNGIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL2d0ay9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9ndGsvTWFrZWZpbGUuaW4KQEAgLTkwLDcgKzkwLDcgQEAKIGhvc3RfdHJpcGxldCA9IEBob3N0QAogdGFyZ2V0X3RyaXBsZXQgPSBAdGFyZ2V0QAogbm9pbnN0X1BST0dSQU1TID0gZ3Rrc2luayQoRVhFRVhUKSAkKGFtX19FWEVFWFRfMSkKLUBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBhbV9fYXBwZW5kXzEgPSBndGtnbHNpbmsKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBhbV9fYXBwZW5kXzEgPSBndGtnbHNpbmsgZ2xsaXZlc2hhZGVyCiBzdWJkaXIgPSB0ZXN0cy9leGFtcGxlcy9ndGsKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXApAQCAtMTE3LDE2ICsxMTcsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTEzNCwyMSArMTMzLDM1IEBACiBDT05GSUdfSEVBREVSID0gJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5oCiBDT05GSUdfQ0xFQU5fRklMRVMgPQogQ09ORklHX0NMRUFOX1ZQQVRIX0ZJTEVTID0KLUBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBhbV9fRVhFRVhUXzEgPSBndGtnbHNpbmskKEVYRUVYVCkKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBhbV9fRVhFRVhUXzEgPSBndGtnbHNpbmskKEVYRUVYVCkgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAlnbGxpdmVzaGFkZXIkKEVYRUVYVCkKIFBST0dSQU1TID0gJChub2luc3RfUFJPR1JBTVMpCi1hbV9fZ3RrZ2xzaW5rX1NPVVJDRVNfRElTVCA9IGd0a2dsc2luay5jCi1AVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVAYW1fZ3RrZ2xzaW5rX09CSkVDVFMgPSAgXAotQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAlndGtnbHNpbmstZ3RrZ2xzaW5rLiQoT0JKRVhUKQotZ3RrZ2xzaW5rX09CSkVDVFMgPSAkKGFtX2d0a2dsc2lua19PQkpFQ1RTKQorYW1fX2dsbGl2ZXNoYWRlcl9TT1VSQ0VTX0RJU1QgPSBnbGxpdmVzaGFkZXIuYworQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGFtX2dsbGl2ZXNoYWRlcl9PQkpFQ1RTID0gZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci4kKE9CSkVYVCkKK2dsbGl2ZXNoYWRlcl9PQkpFQ1RTID0gJChhbV9nbGxpdmVzaGFkZXJfT0JKRUNUUykKIGFtX19ERVBFTkRFTkNJRVNfMSA9Ci1AVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVAZ3RrZ2xzaW5rX0RFUEVOREVOQ0lFUyA9ICBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVAZ2xsaXZlc2hhZGVyX0RFUEVOREVOQ0lFUyA9ICBcCiBAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCiBAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvZ2wvbGliZ3N0Z2wtJChHU1RfQVBJX1ZFUlNJT04pLmxhIFwKIEBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChhbV9fREVQRU5ERU5DSUVTXzEpCiBBTV9WX2x0ID0gJChhbV9fdl9sdF9AQU1fVkApCiBhbV9fdl9sdF8gPSAkKGFtX192X2x0X0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfbHRfMCA9IC0tc2lsZW50CiBhbV9fdl9sdF8xID0gCitnbGxpdmVzaGFkZXJfTElOSyA9ICQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKEFNX0xJQlRPT0xGTEFHUykgXAorCSQoTElCVE9PTEZMQUdTKSAtLW1vZGU9bGluayAkKENDTEQpICQoZ2xsaXZlc2hhZGVyX0NGTEFHUykgXAorCSQoQ0ZMQUdTKSAkKEFNX0xERkxBR1MpICQoTERGTEFHUykgLW8gJEAKK2FtX19ndGtnbHNpbmtfU09VUkNFU19ESVNUID0gZ3RrZ2xzaW5rLmMKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBhbV9ndGtnbHNpbmtfT0JKRUNUUyA9ICBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACWd0a2dsc2luay1ndGtnbHNpbmsuJChPQkpFWFQpCitndGtnbHNpbmtfT0JKRUNUUyA9ICQoYW1fZ3RrZ2xzaW5rX09CSkVDVFMpCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVAZ3RrZ2xzaW5rX0RFUEVOREVOQ0lFUyA9ICBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoYW1fX0RFUEVOREVOQ0lFU18xKQogZ3RrZ2xzaW5rX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgJChBTV9MSUJUT09MRkxBR1MpIFwKIAkkKExJQlRPT0xGTEFHUykgLS1tb2RlPWxpbmsgJChDQ0xEKSAkKGd0a2dsc2lua19DRkxBR1MpIFwKIAkkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACkBAIC0xOTIsOCArMjA1LDEwIEBACiBhbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKIGFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQoZ3RrZ2xzaW5rX1NPVVJDRVMpICQoZ3Rrc2lua19TT1VSQ0VTKQotRElTVF9TT1VSQ0VTID0gJChhbV9fZ3RrZ2xzaW5rX1NPVVJDRVNfRElTVCkgJChndGtzaW5rX1NPVVJDRVMpCitTT1VSQ0VTID0gJChnbGxpdmVzaGFkZXJfU09VUkNFUykgJChndGtnbHNpbmtfU09VUkNFUykgXAorCSQoZ3Rrc2lua19TT1VSQ0VTKQorRElTVF9TT1VSQ0VTID0gJChhbV9fZ2xsaXZlc2hhZGVyX1NPVVJDRVNfRElTVCkgXAorCSQoYW1fX2d0a2dsc2lua19TT1VSQ0VTX0RJU1QpICQoZ3Rrc2lua19TT1VSQ0VTKQogYW1fX2Nhbl9ydW5faW5zdGFsbGluZm8gPSBcCiAgIGNhc2UgJCRBTV9VUERBVEVfSU5GT19ESVIgaW4gXAogICAgIG58bm98Tk8pIGZhbHNlOzsgXApAQCAtMjU1LDYgKzI3MCw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjkyLDYgKzMwOSw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMzAwLDcgKzMxOSw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxOSw4ICszMzcsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzM3LDE2ICszNTYsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzcyLDYgKzM5Miw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM5Nyw2ICs0MTksOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00OTgsNiArNTIyLDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUxMSw4ICs1MzYsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MjgsNiArNTUxLDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU4NSwxNiArNjEwLDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjQ2LDYgKzY3Myw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NTYsNiArNjg0LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjY1LDYgKzY5NCw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC03MDIsNyArNzMzLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC03NTQsMTEgKzc4NCwyOSBAQAogQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MpIFwKIEBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgXAogQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdTVF9DRkxBR1MpIFwKLUBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHTF9DRkxBR1MpCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR0xfQ0ZMQUdTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACS1ER1NUX1VTRV9VTlNUQUJMRV9BUEkKIAogQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGd0a2dsc2lua19MREFERCA9ICQoR1RLM19MSUJTKSBcCiBAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR1NUX0xJQlMpIFwKLUBVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChHTF9MSUJTKQorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdMX0xJQlMpIFwKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUAJJChYMTFfTElCUykKKworQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQGdsbGl2ZXNoYWRlcl9TT1VSQ0VTID0gZ2xsaXZlc2hhZGVyLmMKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBnbGxpdmVzaGFkZXJfQ0ZMQUdTID0gJChHVEszX0NGTEFHUykgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR1NUX1BMVUdJTlNfQkFEX0NGTEFHUykgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR1NUX0NGTEFHUykgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdMX0NGTEFHUykgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAktREdTVF9VU0VfVU5TVEFCTEVfQVBJCisKK0BVU0VfR0xfVFJVRUBAVVNFX0dUSzNfR0xfVFJVRUBnbGxpdmVzaGFkZXJfTERBREQgPSAkKEdUSzNfTElCUykgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKEdTVF9MSUJTKSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoR0xfTElCUykgXAorQFVTRV9HTF9UUlVFQEBVU0VfR1RLM19HTF9UUlVFQAkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2dsL2xpYmdzdGdsLSQoR1NUX0FQSV9WRVJTSU9OKS5sYSBcCitAVVNFX0dMX1RSVUVAQFVTRV9HVEszX0dMX1RSVUVACSQoWDExX0xJQlMpCiAKIGFsbDogYWxsLWFtCiAKQEAgLTgwMyw2ICs4NTEsMTAgQEAKIAllY2hvICIgcm0gLWYiICQkbGlzdDsgXAogCXJtIC1mICQkbGlzdAogCitnbGxpdmVzaGFkZXIkKEVYRUVYVCk6ICQoZ2xsaXZlc2hhZGVyX09CSkVDVFMpICQoZ2xsaXZlc2hhZGVyX0RFUEVOREVOQ0lFUykgJChFWFRSQV9nbGxpdmVzaGFkZXJfREVQRU5ERU5DSUVTKSAKKwlAcm0gLWYgZ2xsaXZlc2hhZGVyJChFWEVFWFQpCisJJChBTV9WX0NDTEQpJChnbGxpdmVzaGFkZXJfTElOSykgJChnbGxpdmVzaGFkZXJfT0JKRUNUUykgJChnbGxpdmVzaGFkZXJfTERBREQpICQoTElCUykKKwogZ3RrZ2xzaW5rJChFWEVFWFQpOiAkKGd0a2dsc2lua19PQkpFQ1RTKSAkKGd0a2dsc2lua19ERVBFTkRFTkNJRVMpICQoRVhUUkFfZ3RrZ2xzaW5rX0RFUEVOREVOQ0lFUykgCiAJQHJtIC1mIGd0a2dsc2luayQoRVhFRVhUKQogCSQoQU1fVl9DQ0xEKSQoZ3RrZ2xzaW5rX0xJTkspICQoZ3RrZ2xzaW5rX09CSkVDVFMpICQoZ3RrZ2xzaW5rX0xEQUREKSAkKExJQlMpCkBAIC04MTcsNiArODY5LDcgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKK0BBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9nbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9ndGtnbHNpbmstZ3RrZ2xzaW5rLlBvQGFtX19xdW90ZUAKIEBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9ndGtzaW5rLWd0a3NpbmsuUG9AYW1fX3F1b3RlQAogCkBAIC04NDQsNiArODk3LDIwIEBACiBAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACiBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChMVENPTVBJTEUpIC1jIC1vICRAICQ8CiAKK2dsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIubzogZ2xsaXZlc2hhZGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChnbGxpdmVzaGFkZXJfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGdsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIubyAtTUQgLU1QIC1NRiAkKERFUERJUikvZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5UcG8gLWMgLW8gZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vIGB0ZXN0IC1mICdnbGxpdmVzaGFkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ2xsaXZlc2hhZGVyLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9hdCkkKGFtX19tdikgJChERVBESVIpL2dsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIuVHBvICQoREVQRElSKS9nbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLlBvCitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nZ2xsaXZlc2hhZGVyLmMnIG9iamVjdD0nZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vJyBsaWJ0b29sPW5vIEBBTURFUEJBQ0tTTEFTSEAKK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAlERVBESVI9JChERVBESVIpICQoQ0NERVBNT0RFKSAkKGRlcGNvbXApIEBBTURFUEJBQ0tTTEFTSEAKK0BhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0NAYW1fX25vZGVwQCkkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChnbGxpdmVzaGFkZXJfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vIGB0ZXN0IC1mICdnbGxpdmVzaGFkZXIuYycgfHwgZWNobyAnJChzcmNkaXIpLydgZ2xsaXZlc2hhZGVyLmMKKworZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vYmo6IGdsbGl2ZXNoYWRlci5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZ2xsaXZlc2hhZGVyX0NGTEFHUykgJChDRkxBR1MpIC1NVCBnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLm9iaiAtTUQgLU1QIC1NRiAkKERFUERJUikvZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5UcG8gLWMgLW8gZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5vYmogYGlmIHRlc3QgLWYgJ2dsbGl2ZXNoYWRlci5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ2dsbGl2ZXNoYWRlci5jJzsgZWxzZSAkKENZR1BBVEhfVykgJyQoc3JjZGlyKS9nbGxpdmVzaGFkZXIuYyc7IGZpYAorQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvZ2xsaXZlc2hhZGVyLWdsbGl2ZXNoYWRlci5UcG8gJChERVBESVIpL2dsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIuUG8KK0BBTURFUF9UUlVFQEBhbV9fZmFzdGRlcENDX0ZBTFNFQAkkKEFNX1ZfQ0Mpc291cmNlPSdnbGxpdmVzaGFkZXIuYycgb2JqZWN0PSdnbGxpdmVzaGFkZXItZ2xsaXZlc2hhZGVyLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZ2xsaXZlc2hhZGVyX0NGTEFHUykgJChDRkxBR1MpIC1jIC1vIGdsbGl2ZXNoYWRlci1nbGxpdmVzaGFkZXIub2JqIGBpZiB0ZXN0IC1mICdnbGxpdmVzaGFkZXIuYyc7IHRoZW4gJChDWUdQQVRIX1cpICdnbGxpdmVzaGFkZXIuYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvZ2xsaXZlc2hhZGVyLmMnOyBmaWAKKwogZ3RrZ2xzaW5rLWd0a2dsc2luay5vOiBndGtnbHNpbmsuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoQ0MpICQoREVGUykgJChERUZBVUxUX0lOQ0xVREVTKSAkKElOQ0xVREVTKSAkKEFNX0NQUEZMQUdTKSAkKENQUEZMQUdTKSAkKGd0a2dsc2lua19DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZ3RrZ2xzaW5rLWd0a2dsc2luay5vIC1NRCAtTVAgLU1GICQoREVQRElSKS9ndGtnbHNpbmstZ3RrZ2xzaW5rLlRwbyAtYyAtbyBndGtnbHNpbmstZ3RrZ2xzaW5rLm8gYHRlc3QgLWYgJ2d0a2dsc2luay5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BndGtnbHNpbmsuYwogQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvZ3RrZ2xzaW5rLWd0a2dsc2luay5UcG8gJChERVBESVIpL2d0a2dsc2luay1ndGtnbHNpbmsuUG8KZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL2d0ay9nbGxpdmVzaGFkZXIuYyBiL3Rlc3RzL2V4YW1wbGVzL2d0ay9nbGxpdmVzaGFkZXIuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOGM4ZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZXhhbXBsZXMvZ3RrL2dsbGl2ZXNoYWRlci5jCkBAIC0wLDAgKzEsMzQ1IEBACisvKgorICogR1N0cmVhbWVyCisgKiBDb3B5cmlnaHQgKEMpIDIwMTUgTWF0dGhldyBXYXRlcnMgPG1hdHRoZXdAY2VudHJpY3VsYXIuY29tPgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCisgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKKyAqIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIGxpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorICogTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIGxpYnJhcnk7IGlmIG5vdCwgd3JpdGUgdG8gdGhlCisgKiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0LCBGaWZ0aCBGbG9vciwKKyAqIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSwgVVNBLgorICovCisKKyNpbmNsdWRlIDxnc3QvZ3N0Lmg+CisjaW5jbHVkZSA8Z3N0L2dsL2dsLmg+CisjaW5jbHVkZSA8Z3RrL2d0ay5oPgorI2lmIEdTVF9HTF9IQVZFX1dJTkRPV19YMTEKKyNpbmNsdWRlIDxYMTEvWGxpYi5oPgorI2VuZGlmCisKK3N0YXRpYyBHTWFpbkxvb3AgKmxvb3A7CisKK3N0YXRpYyBjb25zdCBnY2hhciAqdmVydCA9ICIjdmVyc2lvbiAzMzBcblwKK2luIHZlYzQgYV9wb3NpdGlvbjtcblwKK2luIHZlYzIgYV90ZXhjb29yZDtcblwKK291dCB2ZWMyIHZfdGV4Y29vcmQ7XG5cCit1bmlmb3JtIGZsb2F0IHRpbWU7XG5cCit1bmlmb3JtIGZsb2F0IHdpZHRoO1xuXAordW5pZm9ybSBmbG9hdCBoZWlnaHQ7XG5cCit2b2lkIG1haW4oKVxuXAore1xuXAorICBnbF9Qb3NpdGlvbiA9IGFfcG9zaXRpb247XG5cCisgIHZfdGV4Y29vcmQgPSBhX3RleGNvb3JkO1xuXAorfVxuIjsKKworc3RhdGljIGNvbnN0IGdjaGFyICpnZW9tID0gIiN2ZXJzaW9uIDMzMFxuXAorXG5cCitsYXlvdXQodHJpYW5nbGVzKSBpbjtcblwKK2xheW91dCh0cmlhbmdsZV9zdHJpcCwgbWF4X3ZlcnRpY2VzID0gMykgb3V0O1xuXAoraW4gdmVjMiB2X3RleGNvb3JkW107XG5cCitvdXQgdmVjMiBnX3RleGNvb3JkO1xuXAorXG5cCit2b2lkIG1haW4oKSB7XG5cCisgIGZvcihpbnQgaSA9IDA7IGkgPCAzOyBpKyspIHtcblwKKyAgICBnbF9Qb3NpdGlvbiA9IGdsX2luW2ldLmdsX1Bvc2l0aW9uO1xuXAorICAgIGdfdGV4Y29vcmQgPSB2X3RleGNvb3JkW2ldO1xuXAorICAgIEVtaXRWZXJ0ZXgoKTtcblwKKyAgfVxuXAorICBFbmRQcmltaXRpdmUoKTtcblwKK31cbiI7CisKK3N0YXRpYyBjb25zdCBnY2hhciAqZnJhZyA9ICIjdmVyc2lvbiAzMzBcblwKK2luIHZlYzIgZ190ZXhjb29yZDtcblwKK3VuaWZvcm0gc2FtcGxlcjJEIHRleDtcblwKK3VuaWZvcm0gZmxvYXQgdGltZTtcblwKK3VuaWZvcm0gZmxvYXQgd2lkdGg7XG5cCit1bmlmb3JtIGZsb2F0IGhlaWdodDtcblwKK3ZvaWQgbWFpbigpXG5cCit7XG5cCisgIGdsX0ZyYWdDb2xvciA9IHRleHR1cmUyRCh0ZXgsIGdfdGV4Y29vcmQpO1xuXAorfVxuIjsKKworI2RlZmluZSBNQVhfU0hBREVSX1NUQUdFUyA4CitzdHJ1Y3Qgc2hhZGVyX3N0YXRlOworCitzdHJ1Y3QgdGV4dF92aWV3X3N0YXRlCit7CisgIHN0cnVjdCBzaGFkZXJfc3RhdGUgKnN0YXRlOworCisgIEdMZW51bSB0eXBlOworICBnY2hhciAqc3RyOworfTsKKworc3RydWN0IHNoYWRlcl9zdGF0ZQoreworICBHc3RHTENvbnRleHQgKmNvbnRleHQ7CisgIEdzdEVsZW1lbnQgKnNoYWRlcjsKKyAgZ2Jvb2xlYW4gc2hhZGVyX2xpbmtlZDsKKyAgR3RrV2lkZ2V0ICpsYWJlbDsKKyAgc3RydWN0IHRleHRfdmlld19zdGF0ZSB0ZXh0X3N0YXRlc1tNQVhfU0hBREVSX1NUQUdFU107CisgIGdpbnQgbl9zdGFnZXM7Cit9OworCitzdGF0aWMgZ2Jvb2xlYW4KK2J1c19jYWxsIChHc3RCdXMgKiBidXMsIEdzdE1lc3NhZ2UgKiBtc2csIGdwb2ludGVyIGRhdGEpCit7CisgIHN3aXRjaCAoR1NUX01FU1NBR0VfVFlQRSAobXNnKSkgeworICAgIGNhc2UgR1NUX01FU1NBR0VfRU9TOgorICAgICAgZ19wcmludCAoIkVuZCBvZiBzdHJlYW1cbiIpOworICAgICAgZ19tYWluX2xvb3BfcXVpdCAobG9vcCk7CisgICAgICBicmVhazsKKyAgICBjYXNlIEdTVF9NRVNTQUdFX0VSUk9SOnsKKyAgICAgIGdjaGFyICpkZWJ1ZzsKKyAgICAgIEdFcnJvciAqZXJyb3I7CisKKyAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yIChtc2csICZlcnJvciwgJmRlYnVnKTsKKyAgICAgIGdfZnJlZSAoZGVidWcpOworCisgICAgICBnX3ByaW50ZXJyICgiRXJyb3I6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgICBnX2Vycm9yX2ZyZWUgKGVycm9yKTsKKworICAgICAgZ19tYWluX2xvb3BfcXVpdCAobG9vcCk7CisgICAgICBicmVhazsKKyAgICB9CisgICAgZGVmYXVsdDoKKyAgICAgIGJyZWFrOworICB9CisKKyAgcmV0dXJuIFRSVUU7Cit9CisKK3N0YXRpYyBnY2hhciAqCitfZmluZF9zb3VyY2VfZm9yX3NoYWRlcl90eXBlIChzdHJ1Y3Qgc2hhZGVyX3N0YXRlICpzdGF0ZSwgR0xlbnVtIHR5cGUpCit7CisgIGludCBpID0gMDsKKworICBmb3IgKGkgPSAwOyBpIDwgc3RhdGUtPm5fc3RhZ2VzOyBpKyspIHsKKyAgICBpZiAoc3RhdGUtPnRleHRfc3RhdGVzW2ldLnR5cGUgPT0gdHlwZSkKKyAgICAgIHJldHVybiBzdGF0ZS0+dGV4dF9zdGF0ZXNbaV0uc3RyOworICB9CisKKyAgcmV0dXJuIE5VTEw7Cit9CisKK3N0YXRpYyBnYm9vbGVhbgorX2FkZF9zdGFnZV90b19zaGFkZXIgKEdzdEdMU2hhZGVyICogc2hhZGVyLCBzdHJ1Y3Qgc2hhZGVyX3N0YXRlICpzdGF0ZSwKKyAgICBHTGVudW0gdHlwZSwgY29uc3QgZ2NoYXIgKiBkZWZhdWx0X3NyYykKK3sKKyAgR0Vycm9yICplcnJvciA9IE5VTEw7CisgIEdzdEdMU0xWZXJzaW9uIHZlcnNpb247CisgIEdzdEdMU0xQcm9maWxlIHByb2ZpbGU7CisgIEdzdEdMU0xTdGFnZSAqc3RhZ2U7CisgIGNvbnN0IGdjaGFyICpzcmM7CisKKyAgc3JjID0gX2ZpbmRfc291cmNlX2Zvcl9zaGFkZXJfdHlwZSAoc3RhdGUsIHR5cGUpOworICBpZiAoIXNyYykKKyAgICBzcmMgPSBkZWZhdWx0X3NyYzsKKyAgaWYgKCFzcmMpCisgICAgLyogRklYTUU6IGFzc3VtZSB0aGlzIHN0YWdlIGlzIG5vdCBuZWVkZWQgKi8KKyAgICByZXR1cm4gVFJVRTsKKworICBpZiAoIWdzdF9nbHNsX3N0cmluZ19nZXRfdmVyc2lvbl9wcm9maWxlIChzcmMsICZ2ZXJzaW9uLCAmcHJvZmlsZSkpIHsKKyAgICBnX3ByaW50ICgiV2FybmluZzogZmFpbGVkIHRvIHJldHJlaXZlIEdMU0wgdmVyc2lvbiBhbmQgcHJvZmlsZSBmb3IgIgorICAgICAgICAic2hhZGVyIHR5cGUgMHgleFxuc3JjOlxuJXNcbiIsIHR5cGUsIHNyYyk7CisgIH0KKworICBpZiAoIShzdGFnZSA9IGdzdF9nbHNsX3N0YWdlX25ld193aXRoX3N0cmluZyAoc2hhZGVyLT5jb250ZXh0LCB0eXBlLAorICAgICAgICAgICAgICB2ZXJzaW9uLCBwcm9maWxlLCBzcmMpKSkgeworICAgIGdfcHJpbnQgKCJFcnJvcjogRmFpbGVkIHRvIGNyZWF0ZSBHTFNMIFN0YWdlIGZyb20gc3JjOlxuJXNcbiIsIHNyYyk7CisgICAgcmV0dXJuIEZBTFNFOworICB9CisKKyAgaWYgKCFnc3RfZ2xfc2hhZGVyX2NvbXBpbGVfYXR0YWNoX3N0YWdlIChzaGFkZXIsIHN0YWdlLCAmZXJyb3IpKSB7CisgICAgLyogaWdub3JlIGZhaWxlZCBzaGFkZXIgY29tcGlsYXRpb25zICovCisgICAgZ19wcmludCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIHJldHVybiBGQUxTRTsKKyAgfQorCisgIHJldHVybiBUUlVFOworfQorCitzdGF0aWMgR3N0R0xTaGFkZXIgKgorX25ld19zaGFkZXIgKEdzdEdMQ29udGV4dCAqIGNvbnRleHQsIHN0cnVjdCBzaGFkZXJfc3RhdGUgKnN0YXRlKQoreworICBHc3RHTFNoYWRlciAqc2hhZGVyID0gZ3N0X2dsX3NoYWRlcl9uZXcgKGNvbnRleHQpOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBpZiAoIV9hZGRfc3RhZ2VfdG9fc2hhZGVyIChzaGFkZXIsIHN0YXRlLCBHTF9WRVJURVhfU0hBREVSLCB2ZXJ0KSkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgaWYgKCFfYWRkX3N0YWdlX3RvX3NoYWRlciAoc2hhZGVyLCBzdGF0ZSwgR0xfR0VPTUVUUllfU0hBREVSLCBnZW9tKSkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKyAgaWYgKCFfYWRkX3N0YWdlX3RvX3NoYWRlciAoc2hhZGVyLCBzdGF0ZSwgR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnKSkgeworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICBpZiAoIWdzdF9nbF9zaGFkZXJfbGluayAoc2hhZGVyLCAmZXJyb3IpKSB7CisgICAgLyogaWdub3JlIGZhaWxlZCBzaGFkZXIgY29tcGlsYXRpb25zICovCisgICAgZ19wcmludCAoIiVzIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdzdF9vYmplY3RfdW5yZWYgKHNoYWRlcik7CisgICAgcmV0dXJuIE5VTEw7CisgIH0KKworICByZXR1cm4gc2hhZGVyOworfQorCitzdGF0aWMgZ2Jvb2xlYW4KK19zZXRfY29tcGlsYXRpb25fc3RhdGUgKHN0cnVjdCBzaGFkZXJfc3RhdGUgKnN0YXRlKQoreworICBndGtfbGFiZWxfc2V0X3RleHQgKEdUS19MQUJFTCAoc3RhdGUtPmxhYmVsKSwKKyAgICAgIHN0YXRlLT5zaGFkZXJfbGlua2VkID8gIlN1Y2Nlc3MiIDogIkZhaWx1cmUiKTsKKworICByZXR1cm4gR19TT1VSQ0VfUkVNT1ZFOworfQorCitzdGF0aWMgR3N0R0xTaGFkZXIgKgorX2NyZWF0ZV9zaGFkZXIgKEdzdEVsZW1lbnQgKiBlbGVtZW50LCBzdHJ1Y3Qgc2hhZGVyX3N0YXRlICpzdGF0ZSkKK3sKKyAgR3N0R0xDb250ZXh0ICpjb250ZXh0OworICBHc3RHTFNoYWRlciAqc2hhZGVyLCAqbmV3X3NoYWRlcjsKKworICBnX29iamVjdF9nZXQgKEdfT0JKRUNUIChlbGVtZW50KSwgImNvbnRleHQiLCAmY29udGV4dCwgInNoYWRlciIsICZzaGFkZXIsCisgICAgICBOVUxMKTsKKworICBuZXdfc2hhZGVyID0gX25ld19zaGFkZXIgKGNvbnRleHQsIHN0YXRlKTsKKyAgaWYgKCFzaGFkZXIgJiYgIW5ld19zaGFkZXIpCisgICAgZ193YXJuaW5nICgiRmFpbGVkIHRvIGNyZWF0ZSBhIHNoYWRlciEiKTsKKyAgc3RhdGUtPnNoYWRlcl9saW5rZWQgPSBuZXdfc2hhZGVyICE9IE5VTEw7CisKKyAgaWYgKHNoYWRlcikKKyAgICBnc3Rfb2JqZWN0X3VucmVmIChzaGFkZXIpOworICBnc3Rfb2JqZWN0X3VucmVmIChjb250ZXh0KTsKKworICBnX21haW5fY29udGV4dF9pbnZva2UgKE5VTEwsIChHU291cmNlRnVuYykgX3NldF9jb21waWxhdGlvbl9zdGF0ZSwgc3RhdGUpOworCisgIHJldHVybiBuZXdfc2hhZGVyOworfQorCitzdGF0aWMgdm9pZAorX29uX3RleHRfY2hhbmdlZCAoR3RrVGV4dEJ1ZmZlciAqIHRleHQsIHN0cnVjdCB0ZXh0X3ZpZXdfc3RhdGUgKnN0YXRlKQoreworICBHdGtUZXh0SXRlciBzdGFydCwgZW5kOworCisgIGd0a190ZXh0X2J1ZmZlcl9nZXRfYm91bmRzICh0ZXh0LCAmc3RhcnQsICZlbmQpOworICBnX2ZyZWUgKHN0YXRlLT5zdHIpOworICBzdGF0ZS0+c3RyID0gZ3RrX3RleHRfYnVmZmVyX2dldF90ZXh0ICh0ZXh0LCAmc3RhcnQsICZlbmQsIEZBTFNFKTsKKyAgZ19vYmplY3Rfc2V0IChzdGF0ZS0+c3RhdGUtPnNoYWRlciwgInVwZGF0ZS1zaGFkZXIiLCBUUlVFLCBOVUxMKTsKK30KKworc3RhdGljIEd0a1dpZGdldCAqCitfbmV3X3NvdXJjZV92aWV3IChzdHJ1Y3Qgc2hhZGVyX3N0YXRlICpzdGF0ZSwgR0xlbnVtIHR5cGUsIGNvbnN0IGdjaGFyICogdGVtcGwpCit7CisgIHN0YXRpYyBpbnQgaSA9IDA7CisgIEd0a1dpZGdldCAqc2Nyb2xsLCAqdGV4dF92aWV3OworICBHdGtUZXh0QnVmZmVyICp0ZXh0OworCisgIGdfcmV0dXJuX3ZhbF9pZl9mYWlsIChpIDwgTUFYX1NIQURFUl9TVEFHRVMsIE5VTEwpOworCisgIHN0YXRlLT50ZXh0X3N0YXRlc1tpXS5zdGF0ZSA9IHN0YXRlOworICBzdGF0ZS0+dGV4dF9zdGF0ZXNbaV0udHlwZSA9IHR5cGU7CisgIHN0YXRlLT50ZXh0X3N0YXRlc1tpXS5zdHIgPSBnX3N0cmR1cCAodGVtcGwpOworCisgIHNjcm9sbCA9IGd0a19zY3JvbGxlZF93aW5kb3dfbmV3IChOVUxMLCBOVUxMKTsKKyAgZ3RrX3dpZGdldF9zZXRfc2l6ZV9yZXF1ZXN0IChzY3JvbGwsIDIwLCAyMCk7CisgIHRleHRfdmlldyA9IGd0a190ZXh0X3ZpZXdfbmV3ICgpOworICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAoc2Nyb2xsKSwgdGV4dF92aWV3KTsKKyAgdGV4dCA9IGd0a190ZXh0X3ZpZXdfZ2V0X2J1ZmZlciAoR1RLX1RFWFRfVklFVyAodGV4dF92aWV3KSk7CisgIGlmIChzdGF0ZS0+dGV4dF9zdGF0ZXNbaV0uc3RyKQorICAgIGd0a190ZXh0X2J1ZmZlcl9zZXRfdGV4dCAodGV4dCwgc3RhdGUtPnRleHRfc3RhdGVzW2ldLnN0ciwgLTEpOworICBnX3NpZ25hbF9jb25uZWN0ICh0ZXh0LCAiY2hhbmdlZCIsIEdfQ0FMTEJBQ0sgKF9vbl90ZXh0X2NoYW5nZWQpLAorICAgICAgJnN0YXRlLT50ZXh0X3N0YXRlc1tpXSk7CisgIHN0YXRlLT5uX3N0YWdlcysrOworICBpKys7CisKKyAgcmV0dXJuIHNjcm9sbDsKK30KKworaW50CittYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQoreworICBHc3RFbGVtZW50ICpwaXBlbGluZSwgKnNyYywgKnVwbG9hZCwgKnNoYWRlciwgKnNpbms7CisgIEd0a1dpZGdldCAqd2luZG93LCAqcGFuZWQsICp2aWRlbywgKnJpZ2h0X2JveCwgKmJvb2s7CisgIHN0cnVjdCBzaGFkZXJfc3RhdGUgc3RhdGUgPSB7IDAsIH07CisgIEdzdEJ1cyAqYnVzOworCisjaWYgR1NUX0dMX0hBVkVfV0lORE9XX1gxMQorICBYSW5pdFRocmVhZHMgKCk7CisjZW5kaWYKKworICBnc3RfaW5pdCAoJmFyZ2MsICZhcmd2KTsKKyAgZ3RrX2luaXQgKCZhcmdjLCAmYXJndik7CisKKyAgbG9vcCA9IGdfbWFpbl9sb29wX25ldyAoTlVMTCwgRkFMU0UpOworCisgIHBpcGVsaW5lID0gZ3N0X3BpcGVsaW5lX25ldyAoTlVMTCk7CisgIHNyYyA9IGdzdF9lbGVtZW50X2ZhY3RvcnlfbWFrZSAoInZpZGVvdGVzdHNyYyIsIE5VTEwpOworICB1cGxvYWQgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJnbHVwbG9hZCIsIE5VTEwpOworICBzaGFkZXIgPSBnc3RfZWxlbWVudF9mYWN0b3J5X21ha2UgKCJnbHNoYWRlciIsIE5VTEwpOworICBzaW5rID0gZ3N0X2VsZW1lbnRfZmFjdG9yeV9tYWtlICgiZ3RrZ2xzaW5rIiwgTlVMTCk7CisgIGdfb2JqZWN0X2dldCAoc2luaywgIndpZGdldCIsICZ2aWRlbywgTlVMTCk7CisKKyAgZ19hc3NlcnQgKHNyYyAmJiBzaGFkZXIgJiYgc2luayk7CisgIGdzdF9iaW5fYWRkX21hbnkgKEdTVF9CSU4gKHBpcGVsaW5lKSwgc3JjLCB1cGxvYWQsIHNoYWRlciwgc2luaywgTlVMTCk7CisgIGdfYXNzZXJ0IChnc3RfZWxlbWVudF9saW5rX21hbnkgKHNyYywgdXBsb2FkLCBzaGFkZXIsIHNpbmssIE5VTEwpKTsKKworICBidXMgPSBnc3RfcGlwZWxpbmVfZ2V0X2J1cyAoR1NUX1BJUEVMSU5FIChwaXBlbGluZSkpOworICBnc3RfYnVzX2FkZF93YXRjaCAoYnVzLCBidXNfY2FsbCwgbG9vcCk7CisgIGdzdF9vYmplY3RfdW5yZWYgKGJ1cyk7CisKKyAgc3RhdGUuc2hhZGVyID0gZ3N0X29iamVjdF9yZWYgKHNoYWRlcik7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKHNoYWRlciwgImNyZWF0ZS1zaGFkZXIiLCBHX0NBTExCQUNLIChfY3JlYXRlX3NoYWRlciksCisgICAgICAmc3RhdGUpOworCisgIGJvb2sgPSBndGtfbm90ZWJvb2tfbmV3ICgpOworICAvKiB0ZXh0IHZpZXcgaW5zaWRlIGEgc2Nyb2xsIHZpZXcgKi8KKyAgZ3RrX25vdGVib29rX2FwcGVuZF9wYWdlIChHVEtfTk9URUJPT0sgKGJvb2spLCBfbmV3X3NvdXJjZV92aWV3ICgmc3RhdGUsCisgICAgICAgICAgR0xfVkVSVEVYX1NIQURFUiwgdmVydCksIGd0a19sYWJlbF9uZXcgKCJWZXJ0ZXgiKSk7CisgIGd0a19ub3RlYm9va19hcHBlbmRfcGFnZSAoR1RLX05PVEVCT09LIChib29rKSwgX25ld19zb3VyY2VfdmlldyAoJnN0YXRlLAorICAgICAgICAgIEdMX0dFT01FVFJZX1NIQURFUiwgZ2VvbSksIGd0a19sYWJlbF9uZXcgKCJHZW9tZXRyeSIpKTsKKyAgZ3RrX25vdGVib29rX2FwcGVuZF9wYWdlIChHVEtfTk9URUJPT0sgKGJvb2spLCBfbmV3X3NvdXJjZV92aWV3ICgmc3RhdGUsCisgICAgICAgICAgR0xfRlJBR01FTlRfU0hBREVSLCBmcmFnKSwgZ3RrX2xhYmVsX25ldyAoIkZyYWdtZW50IikpOworICAvKiBzdGF0dXMgbGFiZWwgKi8KKyAgc3RhdGUubGFiZWwgPSBndGtfbGFiZWxfbmV3ICgiU3VjY2VzcyIpOworCisgIC8qIHJpZ2h0IHNpZGUgc291cmNlIGNvZGUgZWRpdG9yICovCisgIHJpZ2h0X2JveCA9IGd0a19ib3hfbmV3IChHVEtfT1JJRU5UQVRJT05fVkVSVElDQUwsIDApOworICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKHJpZ2h0X2JveCksIGJvb2ssIFRSVUUsIFRSVUUsIDApOworICBndGtfYm94X3BhY2tfc3RhcnQgKEdUS19CT1ggKHJpZ2h0X2JveCksIHN0YXRlLmxhYmVsLCBGQUxTRSwgVFJVRSwgMCk7CisKKyAgcGFuZWQgPSBndGtfcGFuZWRfbmV3IChHVEtfT1JJRU5UQVRJT05fSE9SSVpPTlRBTCk7CisgIGd0a19wYW5lZF9wYWNrMSAoR1RLX1BBTkVEIChwYW5lZCksIHZpZGVvLCBUUlVFLCBGQUxTRSk7CisgIGd0a193aWRnZXRfc2V0X3NpemVfcmVxdWVzdCAodmlkZW8sIDIwLCAyMCk7CisgIGd0a19wYW5lZF9wYWNrMiAoR1RLX1BBTkVEIChwYW5lZCksIHJpZ2h0X2JveCwgVFJVRSwgRkFMU0UpOworCisgIHdpbmRvdyA9IGd0a193aW5kb3dfbmV3IChHVEtfV0lORE9XX1RPUExFVkVMKTsKKyAgZ3RrX3dpbmRvd19zZXRfZGVmYXVsdF9zaXplIChHVEtfV0lORE9XICh3aW5kb3cpLCA2NDAsIDQ4MCk7CisgIGd0a19jb250YWluZXJfYWRkIChHVEtfQ09OVEFJTkVSICh3aW5kb3cpLCBwYW5lZCk7CisKKyAgZ3RrX3dpZGdldF9zaG93X2FsbCAod2luZG93KTsKKworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7CisKKyAgZ19tYWluX2xvb3BfcnVuIChsb29wKTsKKworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7CisKKyAgLypzaGFkZXIgc3RyaW5ncyBsZWFrZWQgaGVyZSAqLworICAvKmdfZnJlZSAoc3RhdGUuc3RyKTsgKi8KKyAgZ3N0X29iamVjdF91bnJlZiAoc3RhdGUuc2hhZGVyKTsKKworICBnc3Rfb2JqZWN0X3VucmVmIChwaXBlbGluZSk7CisKKyAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9tcGVndHMvTWFrZWZpbGUuaW4gYi90ZXN0cy9leGFtcGxlcy9tcGVndHMvTWFrZWZpbGUuaW4KaW5kZXggYWVkM2UzNS4uMGQzZjc1OSAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvbXBlZ3RzL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL21wZWd0cy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0MSw2ICsyNDAsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI3OCw2ICsyNzksOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI4Niw3ICsyODksNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMDUsOCArMzA3LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyMywxNiArMzI2LDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM1OCw2ICszNjIsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODMsNiArMzg5LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg0LDYgKzQ5Miw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00OTcsOCArNTA2LDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE0LDYgKzUyMSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzEsMTYgKzU4MCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzMiw2ICs2NDMsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQyLDYgKzY1NCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1MSw2ICs2NjQsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjg4LDcgKzcwMyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvbXhmL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvbXhmL01ha2VmaWxlLmluCmluZGV4IDkyMGVlMzQuLjJlOTM3NDYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL214Zi9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9teGYvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXApAQCAtMjQ2LDYgKzI0NSw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjgzLDYgKzI4NCw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjkxLDcgKzI5NCw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTMxMCw4ICszMTIsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMzI4LDE2ICszMzEsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzYzLDYgKzM2Nyw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTM4OCw2ICszOTQsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00ODksNiArNDk3LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTUwMiw4ICs1MTEsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC01MTksNiArNTI2LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTU3NiwxNiArNTg1LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNjM3LDYgKzY0OCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC02NDcsNiArNjU5LDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNjU2LDYgKzY2OSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02OTMsNyArNzA4LDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy9teGYvbXhmZGVtdXgtc3RydWN0dXJlLmMgYi90ZXN0cy9leGFtcGxlcy9teGYvbXhmZGVtdXgtc3RydWN0dXJlLmMKaW5kZXggMWE4MDJhNy4uYTI0YTMxMCAxMDA2NDQKLS0tIGEvdGVzdHMvZXhhbXBsZXMvbXhmL214ZmRlbXV4LXN0cnVjdHVyZS5jCisrKyBiL3Rlc3RzL2V4YW1wbGVzL214Zi9teGZkZW11eC1zdHJ1Y3R1cmUuYwpAQCAtMTgyLDYgKzE4Miw3IEBACiAgIEdzdEVsZW1lbnQgKmJpbiA9IChHc3RFbGVtZW50ICopIGdzdF9lbGVtZW50X2dldF9wYXJlbnQgKHNyYyk7CiAKICAgZ3N0X2Jpbl9hZGQgKEdTVF9CSU4gKGJpbiksIGZha2VzaW5rKTsKKyAgZ3N0X2VsZW1lbnRfc3luY19zdGF0ZV93aXRoX3BhcmVudCAoZmFrZXNpbmspOwogCiAgIGdzdF9wYWRfbGluayAocGFkLCBzaW5rcGFkKTsKIApAQCAtMjQ0LDcgKzI0NSwxMCBAQAogICBndGtfY29udGFpbmVyX2FkZCAoR1RLX0NPTlRBSU5FUiAod2luZG93KSwgc2Nyb2xsZWRfd2luZG93KTsKICAgZ3RrX3dpZGdldF9zaG93X2FsbCAod2luZG93KTsKIAotICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7CisgIGlmIChnc3RfZWxlbWVudF9zZXRfc3RhdGUgKHBpcGVsaW5lLAorICAgICAgICAgIEdTVF9TVEFURV9QTEFZSU5HKSA9PSBHU1RfU1RBVEVfQ0hBTkdFX0ZBSUxVUkUpIHsKKyAgICBnX2Vycm9yICgiRmFpbGVkIHRvIGNoYW5nZSBzdGF0ZSB0byBQTEFZSU5HIik7CisgIH0KIAogICBndGtfbWFpbiAoKTsKIApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvb3BlbmN2L01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvb3BlbmN2L01ha2VmaWxlLmluCmluZGV4IDFkYTIxYTcuLjZhMTJiYTYgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2V4YW1wbGVzL29wZW5jdi9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9leGFtcGxlcy9vcGVuY3YvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNjMsNiArMjYyLDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0zMDAsNiArMzAxLDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0zMDgsNyArMzExLDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzI3LDggKzMyOSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zNDUsMTYgKzM0OCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zODAsNiArMzg0LDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtNDA1LDYgKzQxMSw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTUwNiw2ICs1MTQsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTE5LDggKzUyOCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUzNiw2ICs1NDMsOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTkzLDE2ICs2MDIsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NTQsNiArNjY1LDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY2NCw2ICs2NzYsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NzMsNiArNjg2LDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTcxMCw3ICs3MjUsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL29wZW5jdi9nc3RmYWNlZGV0ZWN0X3Rlc3QuYyBiL3Rlc3RzL2V4YW1wbGVzL29wZW5jdi9nc3RmYWNlZGV0ZWN0X3Rlc3QuYwppbmRleCA4Y2NiZGEwLi45ZWNmM2QwIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9vcGVuY3YvZ3N0ZmFjZWRldGVjdF90ZXN0LmMKKysrIGIvdGVzdHMvZXhhbXBsZXMvb3BlbmN2L2dzdGZhY2VkZXRlY3RfdGVzdC5jCkBAIC0xNTQsNiArMTU0LDggQEAKICAgZ19vcHRpb25fY29udGV4dF9hZGRfZ3JvdXAgKGN0eCwgZ3N0X2luaXRfZ2V0X29wdGlvbl9ncm91cCAoKSk7CiAgIGlmICghZ19vcHRpb25fY29udGV4dF9wYXJzZSAoY3R4LCAmYXJnYywgJmFyZ3YsICZlcnIpKSB7CiAgICAgZ19wcmludCAoIkVycm9yIGluaXRpYWxpemluZzogJXNcbiIsIGVyci0+bWVzc2FnZSk7CisgICAgZ19vcHRpb25fY29udGV4dF9mcmVlIChjdHgpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnIpOwogICAgIGV4aXQgKDEpOwogICB9CiAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY3R4KTsKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL3BsYXlvdXQuYyBiL3Rlc3RzL2V4YW1wbGVzL3BsYXlvdXQuYwppbmRleCBjODU1MDlhLi4wNzA0OGQ4IDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy9wbGF5b3V0LmMKKysrIGIvdGVzdHMvZXhhbXBsZXMvcGxheW91dC5jCkBAIC02ODAsNyArNjgwLDcgQEAKICAgdXJpID0gZ3N0X2ZpbGVuYW1lX3RvX3VyaSAoaXRlbS0+Zm4sICZlcnIpOwogICBpZiAoZXJyICE9IE5VTEwpIHsKICAgICBHU1RfV0FSTklORyAoIkNvdWxkIG5vdCBjb252ZXJ0ICclcycgdG8gdXJpOiAlcyIsIGl0ZW0tPmZuLCBlcnItPm1lc3NhZ2UpOwotICAgIGdfZXJyb3JfZnJlZSAoZXJyKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKICAgICByZXR1cm4gTlVMTDsKICAgfQogCkBAIC0xMDY0LDYgKzEwNjQsOCBAQAogICAgICAgZ19wcmludGVyciAoIkVycm9yIGluaXRpYWxpemluZzogJXNcbiIsIGVyci0+bWVzc2FnZSk7CiAgICAgZWxzZQogICAgICAgZ19wcmludGVyciAoIkVycm9yIGluaXRpYWxpemluZzogVW5rbm93biBlcnJvciFcbiIpOworICAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY3R4KTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyKTsKICAgICByZXR1cm4gMTsKICAgfQogCmRpZmYgLS1naXQgYS90ZXN0cy9leGFtcGxlcy91dmNoMjY0L01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvdXZjaDI2NC9NYWtlZmlsZS5pbgppbmRleCAxYmYzYTFhLi4wZDYxYmNjIDEwMDY0NAotLS0gYS90ZXN0cy9leGFtcGxlcy91dmNoMjY0L01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL3V2Y2gyNjQvTWFrZWZpbGUuaW4KQEAgLTExNywxNiArMTE3LDE1IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQogRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCkBAIC0yNDksNiArMjQ4LDggQEAKIENMVVRURVJfWDExX0xJQlMgPSBAQ0xVVFRFUl9YMTFfTElCU0AKIENQUCA9IEBDUFBACiBDUFBGTEFHUyA9IEBDUFBGTEFHU0AKK0NVREFfQ0ZMQUdTID0gQENVREFfQ0ZMQUdTQAorQ1VEQV9MSUJTID0gQENVREFfTElCU0AKIENVUkxfQ0ZMQUdTID0gQENVUkxfQ0ZMQUdTQAogQ1VSTF9MSUJTID0gQENVUkxfTElCU0AKIENYWCA9IEBDWFhACkBAIC0yODYsNiArMjg3LDggQEAKIEVDSE9fQyA9IEBFQ0hPX0NACiBFQ0hPX04gPSBARUNIT19OQAogRUNIT19UID0gQEVDSE9fVEAKK0VHTF9DRkxBR1MgPSBARUdMX0NGTEFHU0AKK0VHTF9MSUJTID0gQEVHTF9MSUJTQAogRUdSRVAgPSBARUdSRVBACiBFUlJPUl9DRkxBR1MgPSBARVJST1JfQ0ZMQUdTQAogRVJST1JfQ1hYRkxBR1MgPSBARVJST1JfQ1hYRkxBR1NACkBAIC0yOTQsNyArMjk3LDYgQEAKIEVYSUZfQ0ZMQUdTID0gQEVYSUZfQ0ZMQUdTQAogRVhJRl9MSUJTID0gQEVYSUZfTElCU0AKIEZBQUNfTElCUyA9IEBGQUFDX0xJQlNACi1GQUFEX0lTX05FQUFDID0gQEZBQURfSVNfTkVBQUNACiBGQUFEX0xJQlMgPSBARkFBRF9MSUJTQAogRkZMQUdTID0gQEZGTEFHU0AKIEZHUkVQID0gQEZHUkVQQApAQCAtMzEzLDggKzMxNSw5IEBACiBHSU9fTElCUyA9IEBHSU9fTElCU0AKIEdJT19VTklYX0NGTEFHUyA9IEBHSU9fVU5JWF9DRkxBR1NACiBHSU9fVU5JWF9MSUJTID0gQEdJT19VTklYX0xJQlNACitHTEVTMl9DRkxBR1MgPSBAR0xFUzJfQ0ZMQUdTQAorR0xFUzJfTElCUyA9IEBHTEVTMl9MSUJTQAogR0xJQl9DRkxBR1MgPSBAR0xJQl9DRkxBR1NACi1HTElCX0NPTVBJTEVfU0NIRU1BUyA9IEBHTElCX0NPTVBJTEVfU0NIRU1BU0AKIEdMSUJfRVhUUkFfQ0ZMQUdTID0gQEdMSUJfRVhUUkFfQ0ZMQUdTQAogR0xJQl9HRU5NQVJTSEFMID0gQEdMSUJfR0VOTUFSU0hBTEAKIEdMSUJfTElCUyA9IEBHTElCX0xJQlNACkBAIC0zMzEsMTYgKzMzNCwxNyBAQAogR01PRFVMRV9OT19FWFBPUlRfTElCUyA9IEBHTU9EVUxFX05PX0VYUE9SVF9MSUJTQAogR01TR0ZNVCA9IEBHTVNHRk1UQAogR01TR0ZNVF8wMTUgPSBAR01TR0ZNVF8wMTVACitHTlVTVExfQ0ZMQUdTID0gQEdOVVNUTF9DRkxBR1NACitHTlVTVExfTElCUyA9IEBHTlVTVExfTElCU0AKIEdSQVBIRU5FX0NGTEFHUyA9IEBHUkFQSEVORV9DRkxBR1NACiBHUkFQSEVORV9MSUJTID0gQEdSQVBIRU5FX0xJQlNACiBHUkVQID0gQEdSRVBACi1HU0VUVElOR1NfQ0ZMQUdTID0gQEdTRVRUSU5HU19DRkxBR1NACi1HU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEUgPSBAR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFQAotR1NFVFRJTkdTX0xJQlMgPSBAR1NFVFRJTkdTX0xJQlNACiBHU01fTElCUyA9IEBHU01fTElCU0AKIEdTVFBCX1BMVUdJTlNfRElSID0gQEdTVFBCX1BMVUdJTlNfRElSQAogR1NUUEJfUFJFRklYID0gQEdTVFBCX1BSRUZJWEAKIEdTVF9BR0UgPSBAR1NUX0FHRUAKK0dTVF9BTExPQ0FUT1JTX0NGTEFHUyA9IEBHU1RfQUxMT0NBVE9SU19DRkxBR1NACitHU1RfQUxMT0NBVE9SU19MSUJTID0gQEdTVF9BTExPQ0FUT1JTX0xJQlNACiBHU1RfQUxMX0xERkxBR1MgPSBAR1NUX0FMTF9MREZMQUdTQAogR1NUX0FQSV9WRVJTSU9OID0gQEdTVF9BUElfVkVSU0lPTkAKIEdTVF9CQVNFX0NGTEFHUyA9IEBHU1RfQkFTRV9DRkxBR1NACkBAIC0zNjYsNiArMzcwLDggQEAKIEdTVF9PUFRJT05fT0JKQ0ZMQUdTID0gQEdTVF9PUFRJT05fT0JKQ0ZMQUdTQAogR1NUX1BBQ0tBR0VfTkFNRSA9IEBHU1RfUEFDS0FHRV9OQU1FQAogR1NUX1BBQ0tBR0VfT1JJR0lOID0gQEdTVF9QQUNLQUdFX09SSUdJTkAKK0dTVF9QQlVUSUxTX0NGTEFHUyA9IEBHU1RfUEJVVElMU19DRkxBR1NACitHU1RfUEJVVElMU19MSUJTID0gQEdTVF9QQlVUSUxTX0xJQlNACiBHU1RfUEtHX0NPTkZJR19QQVRIID0gQEdTVF9QS0dfQ09ORklHX1BBVEhACiBHU1RfUExVR0lOU19BTEwgPSBAR1NUX1BMVUdJTlNfQUxMQAogR1NUX1BMVUdJTlNfQkFEX0NGTEFHUyA9IEBHU1RfUExVR0lOU19CQURfQ0ZMQUdTQApAQCAtMzkxLDYgKzM5Nyw4IEBACiBHU1RfUFJFRklYID0gQEdTVF9QUkVGSVhACiBHU1RfUkVWSVNJT04gPSBAR1NUX1JFVklTSU9OQAogR1NUX1RPT0xTX0RJUiA9IEBHU1RfVE9PTFNfRElSQAorR1NUX1ZJREVPX0NGTEFHUyA9IEBHU1RfVklERU9fQ0ZMQUdTQAorR1NUX1ZJREVPX0xJQlMgPSBAR1NUX1ZJREVPX0xJQlNACiBHVEszX0NGTEFHUyA9IEBHVEszX0NGTEFHU0AKIEdUSzNfR0xfQ0ZMQUdTID0gQEdUSzNfR0xfQ0ZMQUdTQAogR1RLM19HTF9MSUJTID0gQEdUSzNfR0xfTElCU0AKQEAgLTQ5Miw2ICs1MDAsNyBAQAogTFRMSUJJQ09OViA9IEBMVExJQklDT05WQAogTFRMSUJJTlRMID0gQExUTElCSU5UTEAKIExUTElCT0JKUyA9IEBMVExJQk9CSlNACitMVF9TWVNfTElCUkFSWV9QQVRIID0gQExUX1NZU19MSUJSQVJZX1BBVEhACiBNQUlOVCA9IEBNQUlOVEAKIE1BS0VJTkZPID0gQE1BS0VJTkZPQAogTUFOSUZFU1RfVE9PTCA9IEBNQU5JRkVTVF9UT09MQApAQCAtNTA1LDggKzUxNCw2IEBACiBNT0RQTFVHX0xJQlMgPSBATU9EUExVR19MSUJTQAogTVBFRzJFTkNfQ0ZMQUdTID0gQE1QRUcyRU5DX0NGTEFHU0AKIE1QRUcyRU5DX0xJQlMgPSBATVBFRzJFTkNfTElCU0AKLU1QRzEyM19DRkxBR1MgPSBATVBHMTIzX0NGTEFHU0AKLU1QRzEyM19MSUJTID0gQE1QRzEyM19MSUJTQAogTVBMRVhfQ0ZMQUdTID0gQE1QTEVYX0NGTEFHU0AKIE1QTEVYX0xERkxBR1MgPSBATVBMRVhfTERGTEFHU0AKIE1QTEVYX0xJQlMgPSBATVBMRVhfTElCU0AKQEAgLTUyMiw2ICs1MjksOCBAQAogTkVUVExFX0xJQlMgPSBATkVUVExFX0xJQlNACiBOTSA9IEBOTUAKIE5NRURJVCA9IEBOTUVESVRACitOVkVOQ09ERV9DRkxBR1MgPSBATlZFTkNPREVfQ0ZMQUdTQAorTlZFTkNPREVfTElCUyA9IEBOVkVOQ09ERV9MSUJTQAogT0JKQyA9IEBPQkpDQAogT0JKQ0RFUE1PREUgPSBAT0JKQ0RFUE1PREVACiBPQkpDRkxBR1MgPSBAT0JKQ0ZMQUdTQApAQCAtNTc5LDE2ICs1ODgsMTggQEAKIFBZVEhPTl9QTEFURk9STSA9IEBQWVRIT05fUExBVEZPUk1ACiBQWVRIT05fUFJFRklYID0gQFBZVEhPTl9QUkVGSVhACiBQWVRIT05fVkVSU0lPTiA9IEBQWVRIT05fVkVSU0lPTkAKK1FUX0FORFJPSURfQ0ZMQUdTID0gQFFUX0FORFJPSURfQ0ZMQUdTQAorUVRfQU5EUk9JRF9MSUJTID0gQFFUX0FORFJPSURfTElCU0AKIFFUX0NGTEFHUyA9IEBRVF9DRkxBR1NACiBRVF9MSUJTID0gQFFUX0xJQlNACitRVF9NQUNfQ0ZMQUdTID0gQFFUX01BQ19DRkxBR1NACitRVF9NQUNfTElCUyA9IEBRVF9NQUNfTElCU0AKIFFUX1dBWUxBTkRfQ0ZMQUdTID0gQFFUX1dBWUxBTkRfQ0ZMQUdTQAogUVRfV0FZTEFORF9MSUJTID0gQFFUX1dBWUxBTkRfTElCU0AKIFFUX1gxMV9DRkxBR1MgPSBAUVRfWDExX0NGTEFHU0AKIFFUX1gxMV9MSUJTID0gQFFUX1gxMV9MSUJTQAogUkFOTElCID0gQFJBTkxJQkAKIFJDQyA9IEBSQ0NACi1SU1ZHXzJfMzZfMl9DRkxBR1MgPSBAUlNWR18yXzM2XzJfQ0ZMQUdTQAotUlNWR18yXzM2XzJfTElCUyA9IEBSU1ZHXzJfMzZfMl9MSUJTQAogUlNWR19DRkxBR1MgPSBAUlNWR19DRkxBR1NACiBSU1ZHX0xJQlMgPSBAUlNWR19MSUJTQAogUlRNUF9DRkxBR1MgPSBAUlRNUF9DRkxBR1NACkBAIC02NDAsNiArNjUxLDcgQEAKIFZPQUFDRU5DX0xJQlMgPSBAVk9BQUNFTkNfTElCU0AKIFZPQU1SV0JFTkNfQ0ZMQUdTID0gQFZPQU1SV0JFTkNfQ0ZMQUdTQAogVk9BTVJXQkVOQ19MSUJTID0gQFZPQU1SV0JFTkNfTElCU0AKK1ZVTEtBTl9MSUJTID0gQFZVTEtBTl9MSUJTQAogV0FSTklOR19DRkxBR1MgPSBAV0FSTklOR19DRkxBR1NACiBXQVJOSU5HX0NYWEZMQUdTID0gQFdBUk5JTkdfQ1hYRkxBR1NACiBXQVJOSU5HX09CSkNGTEFHUyA9IEBXQVJOSU5HX09CSkNGTEFHU0AKQEAgLTY1MCw2ICs2NjIsNyBAQAogV0FZTEFORF9MSUJTID0gQFdBWUxBTkRfTElCU0AKIFdFQlBfQ0ZMQUdTID0gQFdFQlBfQ0ZMQUdTQAogV0VCUF9MSUJTID0gQFdFQlBfTElCU0AKK1dHRVQgPSBAV0dFVEAKIFdJTERNSURJX0NGTEFHUyA9IEBXSUxETUlESV9DRkxBR1NACiBXSUxETUlESV9MSUJTID0gQFdJTERNSURJX0xJQlNACiBXSU5LU19MSUJTID0gQFdJTktTX0xJQlNACkBAIC02NTksNiArNjcyLDggQEAKIFgxMV9MSUJTID0gQFgxMV9MSUJTQAogWDI2NV9DRkxBR1MgPSBAWDI2NV9DRkxBR1NACiBYMjY1X0xJQlMgPSBAWDI2NV9MSUJTQAorWENCX0NGTEFHUyA9IEBYQ0JfQ0ZMQUdTQAorWENCX0xJQlMgPSBAWENCX0xJQlNACiBYQ09NUE9TSVRFX0NGTEFHUyA9IEBYQ09NUE9TSVRFX0NGTEFHU0AKIFhDT01QT1NJVEVfTElCUyA9IEBYQ09NUE9TSVRFX0xJQlNACiBYR0VUVEVYVCA9IEBYR0VUVEVYVEAKQEAgLTY5Niw3ICs3MTEsNiBAQAogZG9jZGlyID0gQGRvY2RpckAKIGR2aWRpciA9IEBkdmlkaXJACiBleGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKLWdzZXR0aW5nc3NjaGVtYWRpciA9IEBnc2V0dGluZ3NzY2hlbWFkaXJACiBob3N0ID0gQGhvc3RACiBob3N0X2FsaWFzID0gQGhvc3RfYWxpYXNACiBob3N0X2NwdSA9IEBob3N0X2NwdUAKZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlLmFtIGIvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuYW0KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjViYTkyMQotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlLmFtCkBAIC0wLDAgKzEsMTEgQEAKK25vaW5zdF9QUk9HUkFNUyA9IGd0a3dheWxhbmRzaW5rCisKK2d0a3dheWxhbmRzaW5rX1NPVVJDRVMgPSBtYWluLmMKKworZ3Rrd2F5bGFuZHNpbmtfQ0ZMQUdTPS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyAtSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCisJJChHU1RfUExVR0lOU19CQVNFX0NGTEFHUykgJChHU1RfQ0ZMQUdTKSAkKEdUSzNfQ0ZMQUdTKQorZ3Rrd2F5bGFuZHNpbmtfTERBREQ9JChHVEszX0xJQlMpICQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAkKEdTVF9MSUJTKSBcCisJLWxnc3R2aWRlby0kKEdTVF9BUElfVkVSU0lPTikgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3Qvd2F5bGFuZC9saWJnc3R3YXlsYW5kLSQoR1NUX0FQSV9WRVJTSU9OKS5sYQorCitFWFRSQV9ESVNUID0gd2luZG93LnVpCmRpZmYgLS1naXQgYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluIGIvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvTWFrZWZpbGUuaW4Kc2ltaWxhcml0eSBpbmRleCA4MCUKY29weSBmcm9tIGdzdC9saXZlYWRkZXIvTWFrZWZpbGUuaW4KY29weSB0byB0ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9NYWtlZmlsZS5pbgppbmRleCBiYTllNWEyLi5lOTAxMWM2IDEwMDY0NAotLS0gYS9nc3QvbGl2ZWFkZGVyL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL01ha2VmaWxlLmluCkBAIC0xNCw3ICsxNCw2IEBACiAKIEBTRVRfTUFLRUAKIAotCiBWUEFUSCA9IEBzcmNkaXJACiBhbV9faXNfZ251X21ha2UgPSB7IFwKICAgaWYgdGVzdCAteiAnJChNQUtFTEVWRUwpJzsgdGhlbiBcCkBAIC05MCw3ICs4OSw4IEBACiBidWlsZF90cmlwbGV0ID0gQGJ1aWxkQAogaG9zdF90cmlwbGV0ID0gQGhvc3RACiB0YXJnZXRfdHJpcGxldCA9IEB0YXJnZXRACi1zdWJkaXIgPSBnc3QvbGl2ZWFkZGVyCitub2luc3RfUFJPR1JBTVMgPSBndGt3YXlsYW5kc2luayQoRVhFRVhUKQorc3ViZGlyID0gdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsKIEFDTE9DQUxfTTQgPSAkKHRvcF9zcmNkaXIpL2FjbG9jYWwubTQKIGFtX19hY2xvY2FsX200X2RlcHMgPSAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9hcy1hYy1leHBhbmQubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2FzLWF1dG8tYWx0Lm00IFwKQEAgLTExNiw2NiArMTE2LDM3IEBACiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvZ3RrLWRvYy5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBcCiAJJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvb3JjLm00ICQodG9wX3NyY2RpcikvY29tbW9uL200L3BrZy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3NldHRpbmdzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgXAotCSQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCAkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00ICQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00ICQodG9wX3NyY2RpcikvbTQvbmxzLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L3BvLm00ICQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgXAotCSQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCisJJCh0b3Bfc3JjZGlyKS9tNC9nZXR0ZXh0Lm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2dzdC1zZGwubTQgJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9pbnRsbWFjb3N4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYi1saW5rLm00ICQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWJnY3J5cHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0b3B0aW9ucy5tNCAkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHR2ZXJzaW9uLm00ICQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbmxzLm00ICQodG9wX3NyY2RpcikvbTQvcG8ubTQgXAorCSQodG9wX3NyY2RpcikvbTQvcHJvZ3Rlc3QubTQgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKIGFtX19jb25maWd1cmVfZGVwcyA9ICQoYW1fX2FjbG9jYWxfbTRfZGVwcykgJChDT05GSUdVUkVfREVQRU5ERU5DSUVTKSBcCiAJJChBQ0xPQ0FMX000KQotRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChub2luc3RfSEVBREVSUykgXAotCSQoYW1fX0RJU1RfQ09NTU9OKQorRElTVF9DT01NT04gPSAkKHNyY2RpcikvTWFrZWZpbGUuYW0gJChhbV9fRElTVF9DT01NT04pCiBta2luc3RhbGxkaXJzID0gJChpbnN0YWxsX3NoKSAtZAogQ09ORklHX0hFQURFUiA9ICQodG9wX2J1aWxkZGlyKS9jb25maWcuaAogQ09ORklHX0NMRUFOX0ZJTEVTID0KIENPTkZJR19DTEVBTl9WUEFUSF9GSUxFUyA9Ci1hbV9fdnBhdGhfYWRqX3NldHVwID0gc3JjZGlyc3RyaXA9YGVjaG8gIiQoc3JjZGlyKSIgfCBzZWQgJ3N8LnwufGcnYDsKLWFtX192cGF0aF9hZGogPSBjYXNlICQkcCBpbiBcCi0gICAgJChzcmNkaXIpLyopIGY9YGVjaG8gIiQkcCIgfCBzZWQgInN8XiQkc3JjZGlyc3RyaXAvfHwiYDs7IFwKLSAgICAqKSBmPSQkcDs7IFwKLSAgZXNhYzsKLWFtX19zdHJpcF9kaXIgPSBmPWBlY2hvICQkcCB8IHNlZCAtZSAnc3xeLiovfHwnYDsKLWFtX19pbnN0YWxsX21heCA9IDQwCi1hbV9fbm9iYXNlX3N0cmlwX3NldHVwID0gXAotICBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqfF0vXFxcXCYvZydgCi1hbV9fbm9iYXNlX3N0cmlwID0gXAotICBmb3IgcCBpbiAkJGxpc3Q7IGRvIGVjaG8gIiQkcCI7IGRvbmUgfCBzZWQgLWUgInN8JCRzcmNkaXJzdHJpcC98fCIKLWFtX19ub2Jhc2VfbGlzdCA9ICQoYW1fX25vYmFzZV9zdHJpcF9zZXR1cCk7IFwKLSAgZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICIkJHAgJCRwIjsgZG9uZSB8IFwKLSAgc2VkICJzfCAkJHNyY2RpcnN0cmlwL3wgfDsiJyAvIC4qXC8vIXMvIC4qLyAuLzsgcyxcKCAuKlwpL1teL10qJCQsXDEsJyB8IFwKLSAgJChBV0spICdCRUdJTiB7IGZpbGVzWyIuIl0gPSAiIiB9IHsgZmlsZXNbJCQyXSA9IGZpbGVzWyQkMl0gIiAiICQkMTsgXAotICAgIGlmICgrK25bJCQyXSA9PSAkKGFtX19pbnN0YWxsX21heCkpIFwKLSAgICAgIHsgcHJpbnQgJCQyLCBmaWxlc1skJDJdOyBuWyQkMl0gPSAwOyBmaWxlc1skJDJdID0gIiIgfSB9IFwKLSAgICBFTkQgeyBmb3IgKGRpciBpbiBmaWxlcykgcHJpbnQgZGlyLCBmaWxlc1tkaXJdIH0nCi1hbV9fYmFzZV9saXN0ID0gXAotICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnIHwgXAotICBzZWQgJyQkIU47JCQhTjskJCFOOyQkIU47cy9cbi8gL2cnCi1hbV9fdW5pbnN0YWxsX2ZpbGVzX2Zyb21fZGlyID0geyBcCi0gIHRlc3QgLXogIiQkZmlsZXMiIFwKLSAgICB8fCB7IHRlc3QgISAtZCAiJCRkaXIiICYmIHRlc3QgISAtZiAiJCRkaXIiICYmIHRlc3QgISAtciAiJCRkaXIiOyB9IFwKLSAgICB8fCB7IGVjaG8gIiAoIGNkICckJGRpcicgJiYgcm0gLWYiICQkZmlsZXMgIikiOyBcCi0gICAgICAgICAkKGFtX19jZCkgIiQkZGlyIiAmJiBybSAtZiAkJGZpbGVzOyB9OyBcCi0gIH0KLWFtX19pbnN0YWxsZGlycyA9ICIkKERFU1RESVIpJChwbHVnaW5kaXIpIgotTFRMSUJSQVJJRVMgPSAkKHBsdWdpbl9MVExJQlJBUklFUykKK1BST0dSQU1TID0gJChub2luc3RfUFJPR1JBTVMpCithbV9ndGt3YXlsYW5kc2lua19PQkpFQ1RTID0gZ3Rrd2F5bGFuZHNpbmstbWFpbi4kKE9CSkVYVCkKK2d0a3dheWxhbmRzaW5rX09CSkVDVFMgPSAkKGFtX2d0a3dheWxhbmRzaW5rX09CSkVDVFMpCiBhbV9fREVQRU5ERU5DSUVTXzEgPQotbGliZ3N0bGl2ZWFkZGVyX2xhX0RFUEVOREVOQ0lFUyA9ICQoYW1fX0RFUEVOREVOQ0lFU18xKSBcCi0JJChhbV9fREVQRU5ERU5DSUVTXzEpICQoYW1fX0RFUEVOREVOQ0lFU18xKQotYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMgPSBsaWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvCi1saWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUyA9ICQoYW1fbGliZ3N0bGl2ZWFkZGVyX2xhX09CSkVDVFMpCitndGt3YXlsYW5kc2lua19ERVBFTkRFTkNJRVMgPSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkgXAorCSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3Qvd2F5bGFuZC9saWJnc3R3YXlsYW5kLSQoR1NUX0FQSV9WRVJTSU9OKS5sYQogQU1fVl9sdCA9ICQoYW1fX3ZfbHRfQEFNX1ZAKQogYW1fX3ZfbHRfID0gJChhbV9fdl9sdF9AQU1fREVGQVVMVF9WQCkKIGFtX192X2x0XzAgPSAtLXNpbGVudAogYW1fX3ZfbHRfMSA9IAotbGliZ3N0bGl2ZWFkZGVyX2xhX0xJTksgPSAkKExJQlRPT0wpICQoQU1fVl9sdCkgLS10YWc9Q0MgXAotCSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rIFwKLQkkKENDTEQpICQobGliZ3N0bGl2ZWFkZGVyX2xhX0NGTEFHUykgJChDRkxBR1MpIFwKLQkkKGxpYmdzdGxpdmVhZGRlcl9sYV9MREZMQUdTKSAkKExERkxBR1MpIC1vICRACitndGt3YXlsYW5kc2lua19MSU5LID0gJChMSUJUT09MKSAkKEFNX1ZfbHQpIC0tdGFnPUNDIFwKKwkkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1saW5rICQoQ0NMRCkgXAorCSQoZ3Rrd2F5bGFuZHNpbmtfQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpIC1vIFwKKwkkQAogQU1fVl9QID0gJChhbV9fdl9QX0BBTV9WQCkKIGFtX192X1BfID0gJChhbV9fdl9QX0BBTV9ERUZBVUxUX1ZAKQogYW1fX3ZfUF8wID0gZmFsc2UKQEAgLTIxMCwxNCArMTgxLDEzIEBACiBhbV9fdl9DQ0xEXyA9ICQoYW1fX3ZfQ0NMRF9AQU1fREVGQVVMVF9WQCkKIGFtX192X0NDTERfMCA9IEBlY2hvICIgIENDTEQgICAgIiAkQDsKIGFtX192X0NDTERfMSA9IAotU09VUkNFUyA9ICQobGliZ3N0bGl2ZWFkZGVyX2xhX1NPVVJDRVMpCi1ESVNUX1NPVVJDRVMgPSAkKGxpYmdzdGxpdmVhZGRlcl9sYV9TT1VSQ0VTKQorU09VUkNFUyA9ICQoZ3Rrd2F5bGFuZHNpbmtfU09VUkNFUykKK0RJU1RfU09VUkNFUyA9ICQoZ3Rrd2F5bGFuZHNpbmtfU09VUkNFUykKIGFtX19jYW5fcnVuX2luc3RhbGxpbmZvID0gXAogICBjYXNlICQkQU1fVVBEQVRFX0lORk9fRElSIGluIFwKICAgICBufG5vfE5PKSBmYWxzZTs7IFwKICAgICAqKSAoaW5zdGFsbC1pbmZvIC0tdmVyc2lvbikgPi9kZXYvbnVsbCAyPiYxOzsgXAogICBlc2FjCi1IRUFERVJTID0gJChub2luc3RfSEVBREVSUykKIGFtX190YWdnZWRfZmlsZXMgPSAkKEhFQURFUlMpICQoU09VUkNFUykgJChUQUdTX0ZJTEVTKSAkKExJU1ApCiAjIFJlYWQgYSBsaXN0IG9mIG5ld2xpbmUtc2VwYXJhdGVkIHN0cmluZ3MgZnJvbSB0aGUgc3RhbmRhcmQgaW5wdXQsCiAjIGFuZCBwcmludCBlYWNoIG9mIHRoZW0gb25jZSwgd2l0aG91dCBkdXBsaWNhdGVzLiAgSW5wdXQgb3JkZXIgaXMKQEAgLTI3NCw2ICsyNDQsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTMxMSw2ICsyODMsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTMxOSw3ICsyOTMsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMzgsOCArMzExLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTM1NiwxNiArMzMwLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM5MSw2ICszNjYsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC00MTYsNiArMzkzLDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNTE3LDYgKzQ5Niw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MzAsOCArNTEwLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTQ3LDYgKzUyNSw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC02MDQsMTYgKzU4NCwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTY2NSw2ICs2NDcsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjc1LDYgKzY1OCw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY4NCw2ICs2NjgsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNzIxLDcgKzcwNyw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApAQCAtNzYxLDE2ICs3NDYsMTUgQEAKIHRvcF9idWlsZGRpciA9IEB0b3BfYnVpbGRkaXJACiB0b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACiB3YXlsYW5kX3NjYW5uZXIgPSBAd2F5bGFuZF9zY2FubmVyQAotcGx1Z2luX0xUTElCUkFSSUVTID0gbGliZ3N0bGl2ZWFkZGVyLmxhCi1saWJnc3RsaXZlYWRkZXJfbGFfU09VUkNFUyA9IGxpdmVhZGRlci5jCi1saWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTID0gJChHU1RfUExVR0lOU19CQURfQ0ZMQUdTKSAkKEdTVF9QTFVHSU5TX0JBU0VfQ0ZMQUdTKSAkKEdTVF9DRkxBR1MpCi1saWJnc3RsaXZlYWRkZXJfbGFfTElCQUREID0gXAotCSQoR1NUX1BMVUdJTlNfQkFTRV9MSUJTKSAtbGdzdGF1ZGlvLUBHU1RfQVBJX1ZFUlNJT05AIFwKLQkkKEdTVF9CQVNFX0xJQlMpICQoR1NUX0xJQlMpCitndGt3YXlsYW5kc2lua19TT1VSQ0VTID0gbWFpbi5jCitndGt3YXlsYW5kc2lua19DRkxBR1MgPSAtSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAorCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpICQoR1NUX0NGTEFHUykgJChHVEszX0NGTEFHUykKIAotbGliZ3N0bGl2ZWFkZGVyX2xhX0xERkxBR1MgPSAkKEdTVF9QTFVHSU5fTERGTEFHUykKLWxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MgPSAkKEdTVF9QTFVHSU5fTElCVE9PTEZMQUdTKQotbm9pbnN0X0hFQURFUlMgPSBsaXZlYWRkZXIuaAorZ3Rrd2F5bGFuZHNpbmtfTERBREQgPSAkKEdUSzNfTElCUykgJChHU1RfUExVR0lOU19CQVNFX0xJQlMpICQoR1NUX0xJQlMpIFwKKwktbGdzdHZpZGVvLSQoR1NUX0FQSV9WRVJTSU9OKSBcCisJJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC93YXlsYW5kL2xpYmdzdHdheWxhbmQtJChHU1RfQVBJX1ZFUlNJT04pLmxhCisKK0VYVFJBX0RJU1QgPSB3aW5kb3cudWkKIGFsbDogYWxsLWFtCiAKIC5TVUZGSVhFUzoKQEAgLTc4NCw5ICs3NjgsOSBAQAogCSAgICAgIGV4aXQgMTs7IFwKIAkgIGVzYWM7IFwKIAlkb25lOyBcCi0JZWNobyAnIGNkICQodG9wX3NyY2RpcikgJiYgJChBVVRPTUFLRSkgLS1nbnUgZ3N0L2xpdmVhZGRlci9NYWtlZmlsZSc7IFwKKwllY2hvICcgY2QgJCh0b3Bfc3JjZGlyKSAmJiAkKEFVVE9NQUtFKSAtLWdudSB0ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9NYWtlZmlsZSc7IFwKIAkkKGFtX19jZCkgJCh0b3Bfc3JjZGlyKSAmJiBcCi0JICAkKEFVVE9NQUtFKSAtLWdudSBnc3QvbGl2ZWFkZGVyL01ha2VmaWxlCisJICAkKEFVVE9NQUtFKSAtLWdudSB0ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9NYWtlZmlsZQogTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwogCUBjYXNlICckPycgaW4gXAogCSAgKmNvbmZpZy5zdGF0dXMqKSBcCkBAIC04MDUsNDMgKzc4OSwxOCBAQAogCWNkICQodG9wX2J1aWxkZGlyKSAmJiAkKE1BS0UpICQoQU1fTUFLRUZMQUdTKSBhbS0tcmVmcmVzaAogJChhbV9fYWNsb2NhbF9tNF9kZXBzKToKIAotaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUzogJChwbHVnaW5fTFRMSUJSQVJJRVMpCi0JQCQoTk9STUFMX0lOU1RBTEwpCi0JQGxpc3Q9JyQocGx1Z2luX0xUTElCUkFSSUVTKSc7IHRlc3QgLW4gIiQocGx1Z2luZGlyKSIgfHwgbGlzdD07IFwKLQlsaXN0Mj07IGZvciBwIGluICQkbGlzdDsgZG8gXAotCSAgaWYgdGVzdCAtZiAkJHA7IHRoZW4gXAotCSAgICBsaXN0Mj0iJCRsaXN0MiAkJHAiOyBcCi0JICBlbHNlIDo7IGZpOyBcCi0JZG9uZTsgXAotCXRlc3QgLXogIiQkbGlzdDIiIHx8IHsgXAotCSAgZWNobyAiICQoTUtESVJfUCkgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChNS0RJUl9QKSAiJChERVNURElSKSQocGx1Z2luZGlyKSIgfHwgZXhpdCAxOyBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgJyQoREVTVERJUikkKHBsdWdpbmRpciknIjsgXAotCSAgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT1pbnN0YWxsICQoSU5TVEFMTCkgJChJTlNUQUxMX1NUUklQX0ZMQUcpICQkbGlzdDIgIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBcCi0JfQorY2xlYW4tbm9pbnN0UFJPR1JBTVM6CisJQGxpc3Q9JyQobm9pbnN0X1BST0dSQU1TKSc7IHRlc3QgLW4gIiQkbGlzdCIgfHwgZXhpdCAwOyBcCisJZWNobyAiIHJtIC1mIiAkJGxpc3Q7IFwKKwlybSAtZiAkJGxpc3QgfHwgZXhpdCAkJD87IFwKKwl0ZXN0IC1uICIkKEVYRUVYVCkiIHx8IGV4aXQgMDsgXAorCWxpc3Q9YGZvciBwIGluICQkbGlzdDsgZG8gZWNobyAiJCRwIjsgZG9uZSB8IHNlZCAncy8kKEVYRUVYVCkkJC8vJ2A7IFwKKwllY2hvICIgcm0gLWYiICQkbGlzdDsgXAorCXJtIC1mICQkbGlzdAogCi11bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVM6Ci0JQCQoTk9STUFMX1VOSU5TVEFMTCkKLQlAbGlzdD0nJChwbHVnaW5fTFRMSUJSQVJJRVMpJzsgdGVzdCAtbiAiJChwbHVnaW5kaXIpIiB8fCBsaXN0PTsgXAotCWZvciBwIGluICQkbGlzdDsgZG8gXAotCSAgJChhbV9fc3RyaXBfZGlyKSBcCi0JICBlY2hvICIgJChMSUJUT09MKSAkKEFNX0xJQlRPT0xGTEFHUykgJChMSUJUT09MRkxBR1MpIC0tbW9kZT11bmluc3RhbGwgcm0gLWYgJyQoREVTVERJUikkKHBsdWdpbmRpcikvJCRmJyI7IFwKLQkgICQoTElCVE9PTCkgJChBTV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9dW5pbnN0YWxsIHJtIC1mICIkKERFU1RESVIpJChwbHVnaW5kaXIpLyQkZiI7IFwKLQlkb25lCi0KLWNsZWFuLXBsdWdpbkxUTElCUkFSSUVTOgotCS10ZXN0IC16ICIkKHBsdWdpbl9MVExJQlJBUklFUykiIHx8IHJtIC1mICQocGx1Z2luX0xUTElCUkFSSUVTKQotCUBsaXN0PSckKHBsdWdpbl9MVExJQlJBUklFUyknOyBcCi0JbG9jcz1gZm9yIHAgaW4gJCRsaXN0OyBkbyBlY2hvICQkcDsgZG9uZSB8IFwKLQkgICAgICBzZWQgJ3N8XlteL10qJCR8Lnw7IHN8L1teL10qJCR8fDsgc3wkJHwvc29fbG9jYXRpb25zfCcgfCBcCi0JICAgICAgc29ydCAtdWA7IFwKLQl0ZXN0IC16ICIkJGxvY3MiIHx8IHsgXAotCSAgZWNobyBybSAtZiAkJHtsb2NzfTsgXAotCSAgcm0gLWYgJCR7bG9jc307IFwKLQl9Ci0KLWxpYmdzdGxpdmVhZGRlci5sYTogJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfREVQRU5ERU5DSUVTKSAkKEVYVFJBX2xpYmdzdGxpdmVhZGRlcl9sYV9ERVBFTkRFTkNJRVMpIAotCSQoQU1fVl9DQ0xEKSQobGliZ3N0bGl2ZWFkZGVyX2xhX0xJTkspIC1ycGF0aCAkKHBsdWdpbmRpcikgJChsaWJnc3RsaXZlYWRkZXJfbGFfT0JKRUNUUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfTElCQUREKSAkKExJQlMpCitndGt3YXlsYW5kc2luayQoRVhFRVhUKTogJChndGt3YXlsYW5kc2lua19PQkpFQ1RTKSAkKGd0a3dheWxhbmRzaW5rX0RFUEVOREVOQ0lFUykgJChFWFRSQV9ndGt3YXlsYW5kc2lua19ERVBFTkRFTkNJRVMpIAorCUBybSAtZiBndGt3YXlsYW5kc2luayQoRVhFRVhUKQorCSQoQU1fVl9DQ0xEKSQoZ3Rrd2F5bGFuZHNpbmtfTElOSykgJChndGt3YXlsYW5kc2lua19PQkpFQ1RTKSAkKGd0a3dheWxhbmRzaW5rX0xEQUREKSAkKExJQlMpCiAKIG1vc3RseWNsZWFuLWNvbXBpbGU6CiAJLXJtIC1mICouJChPQkpFWFQpCkBAIC04NDksNyArODA4LDcgQEAKIGRpc3RjbGVhbi1jb21waWxlOgogCS1ybSAtZiAqLnRhYi5jCiAKLUBBTURFUF9UUlVFQEBhbV9faW5jbHVkZUAgQGFtX19xdW90ZUAuLyQoREVQRElSKS9saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLlBsb0BhbV9fcXVvdGVACitAQU1ERVBfVFJVRUBAYW1fX2luY2x1ZGVAIEBhbV9fcXVvdGVALi8kKERFUERJUikvZ3Rrd2F5bGFuZHNpbmstbWFpbi5Qb0BhbV9fcXVvdGVACiAKIC5jLm86CiBAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpZGVwYmFzZT1gZWNobyAkQCB8IHNlZCAnc3xbXi9dKiQkfCQoREVQRElSKS8mfDtzfFwubyQkfHwnYDtcCkBAIC04NzUsMTIgKzgzNCwxOSBAQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAogQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTFRDT01QSUxFKSAtYyAtbyAkQCAkPAogCi1saWJnc3RsaXZlYWRkZXJfbGEtbGl2ZWFkZGVyLmxvOiBsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX0NDKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gLU1EIC1NUCAtTUYgJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuVHBvIC1jIC1vIGxpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIubG8gYHRlc3QgLWYgJ2xpdmVhZGRlci5jJyB8fCBlY2hvICckKHNyY2RpcikvJ2BsaXZlYWRkZXIuYwotQGFtX19mYXN0ZGVwQ0NfVFJVRUAJJChBTV9WX2F0KSQoYW1fX212KSAkKERFUERJUikvbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5UcG8gJChERVBESVIpL2xpYmdzdGxpdmVhZGRlcl9sYS1saXZlYWRkZXIuUGxvCi1AQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDKXNvdXJjZT0nbGl2ZWFkZGVyLmMnIG9iamVjdD0nbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbycgbGlidG9vbD15ZXMgQEFNREVQQkFDS1NMQVNIQAorZ3Rrd2F5bGFuZHNpbmstbWFpbi5vOiBtYWluLmMKK0BhbV9fZmFzdGRlcENDX1RSVUVACSQoQU1fVl9DQykkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChndGt3YXlsYW5kc2lua19DRkxBR1MpICQoQ0ZMQUdTKSAtTVQgZ3Rrd2F5bGFuZHNpbmstbWFpbi5vIC1NRCAtTVAgLU1GICQoREVQRElSKS9ndGt3YXlsYW5kc2luay1tYWluLlRwbyAtYyAtbyBndGt3YXlsYW5kc2luay1tYWluLm8gYHRlc3QgLWYgJ21haW4uYycgfHwgZWNobyAnJChzcmNkaXIpLydgbWFpbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9ndGt3YXlsYW5kc2luay1tYWluLlRwbyAkKERFUERJUikvZ3Rrd2F5bGFuZHNpbmstbWFpbi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J21haW4uYycgb2JqZWN0PSdndGt3YXlsYW5kc2luay1tYWluLm8nIGxpYnRvb2w9bm8gQEFNREVQQkFDS1NMQVNIQAogQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACURFUERJUj0kKERFUERJUikgJChDQ0RFUE1PREUpICQoZGVwY29tcCkgQEFNREVQQkFDS1NMQVNIQAotQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQ0BhbV9fbm9kZXBAKSQoTElCVE9PTCkgJChBTV9WX2x0KSAtLXRhZz1DQyAkKGxpYmdzdGxpdmVhZGRlcl9sYV9MSUJUT09MRkxBR1MpICQoTElCVE9PTEZMQUdTKSAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKERFRlMpICQoREVGQVVMVF9JTkNMVURFUykgJChJTkNMVURFUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChsaWJnc3RsaXZlYWRkZXJfbGFfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gbGliZ3N0bGl2ZWFkZGVyX2xhLWxpdmVhZGRlci5sbyBgdGVzdCAtZiAnbGl2ZWFkZGVyLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYGxpdmVhZGRlci5jCitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZ3Rrd2F5bGFuZHNpbmtfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZ3Rrd2F5bGFuZHNpbmstbWFpbi5vIGB0ZXN0IC1mICdtYWluLmMnIHx8IGVjaG8gJyQoc3JjZGlyKS8nYG1haW4uYworCitndGt3YXlsYW5kc2luay1tYWluLm9iajogbWFpbi5jCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfQ0MpJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZ3Rrd2F5bGFuZHNpbmtfQ0ZMQUdTKSAkKENGTEFHUykgLU1UIGd0a3dheWxhbmRzaW5rLW1haW4ub2JqIC1NRCAtTVAgLU1GICQoREVQRElSKS9ndGt3YXlsYW5kc2luay1tYWluLlRwbyAtYyAtbyBndGt3YXlsYW5kc2luay1tYWluLm9iaiBgaWYgdGVzdCAtZiAnbWFpbi5jJzsgdGhlbiAkKENZR1BBVEhfVykgJ21haW4uYyc7IGVsc2UgJChDWUdQQVRIX1cpICckKHNyY2RpcikvbWFpbi5jJzsgZmlgCitAYW1fX2Zhc3RkZXBDQ19UUlVFQAkkKEFNX1ZfYXQpJChhbV9fbXYpICQoREVQRElSKS9ndGt3YXlsYW5kc2luay1tYWluLlRwbyAkKERFUERJUikvZ3Rrd2F5bGFuZHNpbmstbWFpbi5QbworQEFNREVQX1RSVUVAQGFtX19mYXN0ZGVwQ0NfRkFMU0VACSQoQU1fVl9DQylzb3VyY2U9J21haW4uYycgb2JqZWN0PSdndGt3YXlsYW5kc2luay1tYWluLm9iaicgbGlidG9vbD1ubyBAQU1ERVBCQUNLU0xBU0hACitAQU1ERVBfVFJVRUBAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJREVQRElSPSQoREVQRElSKSAkKENDREVQTU9ERSkgJChkZXBjb21wKSBAQU1ERVBCQUNLU0xBU0hACitAYW1fX2Zhc3RkZXBDQ19GQUxTRUAJJChBTV9WX0NDQGFtX19ub2RlcEApJChDQykgJChERUZTKSAkKERFRkFVTFRfSU5DTFVERVMpICQoSU5DTFVERVMpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoZ3Rrd2F5bGFuZHNpbmtfQ0ZMQUdTKSAkKENGTEFHUykgLWMgLW8gZ3Rrd2F5bGFuZHNpbmstbWFpbi5vYmogYGlmIHRlc3QgLWYgJ21haW4uYyc7IHRoZW4gJChDWUdQQVRIX1cpICdtYWluLmMnOyBlbHNlICQoQ1lHUEFUSF9XKSAnJChzcmNkaXIpL21haW4uYyc7IGZpYAogCiBtb3N0bHljbGVhbi1saWJ0b29sOgogCS1ybSAtZiAqLmxvCkBAIC05NzIsMTEgKzkzOCw4IEBACiAJZG9uZQogY2hlY2stYW06IGFsbC1hbQogY2hlY2s6IGNoZWNrLWFtCi1hbGwtYW06IE1ha2VmaWxlICQoTFRMSUJSQVJJRVMpICQoSEVBREVSUykKK2FsbC1hbTogTWFrZWZpbGUgJChQUk9HUkFNUykKIGluc3RhbGxkaXJzOgotCWZvciBkaXIgaW4gIiQoREVTVERJUikkKHBsdWdpbmRpcikiOyBkbyBcCi0JICB0ZXN0IC16ICIkJGRpciIgfHwgJChNS0RJUl9QKSAiJCRkaXIiOyBcCi0JZG9uZQogaW5zdGFsbDogaW5zdGFsbC1hbQogaW5zdGFsbC1leGVjOiBpbnN0YWxsLWV4ZWMtYW0KIGluc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLWFtCkBAIC0xMDA5LDcgKzk3Miw3IEBACiAJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgogY2xlYW46IGNsZWFuLWFtCiAKLWNsZWFuLWFtOiBjbGVhbi1nZW5lcmljIGNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgXAorY2xlYW4tYW06IGNsZWFuLWdlbmVyaWMgY2xlYW4tbGlidG9vbCBjbGVhbi1ub2luc3RQUk9HUkFNUyBcCiAJbW9zdGx5Y2xlYW4tYW0KIAogZGlzdGNsZWFuOiBkaXN0Y2xlYW4tYW0KQEAgLTEwMzAsNyArOTkzLDcgQEAKIAogaW5mby1hbToKIAotaW5zdGFsbC1kYXRhLWFtOiBpbnN0YWxsLXBsdWdpbkxUTElCUkFSSUVTCitpbnN0YWxsLWRhdGEtYW06CiAKIGluc3RhbGwtZHZpOiBpbnN0YWxsLWR2aS1hbQogCkBAIC0xMDc2LDI0ICsxMDM5LDIzIEBACiAKIHBzLWFtOgogCi11bmluc3RhbGwtYW06IHVuaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUwordW5pbnN0YWxsLWFtOgogCiAuTUFLRTogaW5zdGFsbC1hbSBpbnN0YWxsLXN0cmlwCiAKIC5QSE9OWTogQ1RBR1MgR1RBR1MgVEFHUyBhbGwgYWxsLWFtIGNoZWNrIGNoZWNrLWFtIGNsZWFuIGNsZWFuLWdlbmVyaWMgXAotCWNsZWFuLWxpYnRvb2wgY2xlYW4tcGx1Z2luTFRMSUJSQVJJRVMgY3Njb3BlbGlzdC1hbSBjdGFncyBcCisJY2xlYW4tbGlidG9vbCBjbGVhbi1ub2luc3RQUk9HUkFNUyBjc2NvcGVsaXN0LWFtIGN0YWdzIFwKIAljdGFncy1hbSBkaXN0Y2xlYW4gZGlzdGNsZWFuLWNvbXBpbGUgZGlzdGNsZWFuLWdlbmVyaWMgXAogCWRpc3RjbGVhbi1saWJ0b29sIGRpc3RjbGVhbi10YWdzIGRpc3RkaXIgZHZpIGR2aS1hbSBodG1sIFwKIAlodG1sLWFtIGluZm8gaW5mby1hbSBpbnN0YWxsIGluc3RhbGwtYW0gaW5zdGFsbC1kYXRhIFwKIAlpbnN0YWxsLWRhdGEtYW0gaW5zdGFsbC1kdmkgaW5zdGFsbC1kdmktYW0gaW5zdGFsbC1leGVjIFwKIAlpbnN0YWxsLWV4ZWMtYW0gaW5zdGFsbC1odG1sIGluc3RhbGwtaHRtbC1hbSBpbnN0YWxsLWluZm8gXAogCWluc3RhbGwtaW5mby1hbSBpbnN0YWxsLW1hbiBpbnN0YWxsLXBkZiBpbnN0YWxsLXBkZi1hbSBcCi0JaW5zdGFsbC1wbHVnaW5MVExJQlJBUklFUyBpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gXAotCWluc3RhbGwtc3RyaXAgaW5zdGFsbGNoZWNrIGluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBcCi0JbWFpbnRhaW5lci1jbGVhbiBtYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gXAotCW1vc3RseWNsZWFuLWNvbXBpbGUgbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIFwKLQlwZGYgcGRmLWFtIHBzIHBzLWFtIHRhZ3MgdGFncy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtIFwKLQl1bmluc3RhbGwtcGx1Z2luTFRMSUJSQVJJRVMKKwlpbnN0YWxsLXBzIGluc3RhbGwtcHMtYW0gaW5zdGFsbC1zdHJpcCBpbnN0YWxsY2hlY2sgXAorCWluc3RhbGxjaGVjay1hbSBpbnN0YWxsZGlycyBtYWludGFpbmVyLWNsZWFuIFwKKwltYWludGFpbmVyLWNsZWFuLWdlbmVyaWMgbW9zdGx5Y2xlYW4gbW9zdGx5Y2xlYW4tY29tcGlsZSBcCisJbW9zdGx5Y2xlYW4tZ2VuZXJpYyBtb3N0bHljbGVhbi1saWJ0b29sIHBkZiBwZGYtYW0gcHMgcHMtYW0gXAorCXRhZ3MgdGFncy1hbSB1bmluc3RhbGwgdW5pbnN0YWxsLWFtCiAKIC5QUkVDSU9VUzogTWFrZWZpbGUKIApkaWZmIC0tZ2l0IGEvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvbWFpbi5jIGIvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvbWFpbi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmOWJmODkKLS0tIC9kZXYvbnVsbAorKysgYi90ZXN0cy9leGFtcGxlcy93YXlsYW5kc2luay9tYWluLmMKQEAgLTAsMCArMSwyNzkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQtMjAxNSBDb2xsYWJvcmEgTHRkLgorICogICBAYXV0aG9yIEdlb3JnZSBLaWFnaWFkYWtpcyA8Z2VvcmdlLmtpYWdpYWRha2lzQGNvbGxhYm9yYS5jb20+CisgKgorICogVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKyAqIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorICogdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisgKiBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworICogTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUKKyAqIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3QsIEZpZnRoIEZsb29yLAorICogQm9zdG9uLCBNQSAwMjExMC0xMzAxLCBVU0EuCisgKi8KKworI2luY2x1ZGUgPGdzdC9nc3QuaD4KKyNpbmNsdWRlIDxndGsvZ3RrLmg+CisjaW5jbHVkZSA8Z2RrL2dkay5oPgorCisjaWZkZWYgR0RLX1dJTkRPV0lOR19XQVlMQU5ECisjaW5jbHVkZSA8Z2RrL2dka3dheWxhbmQuaD4KKyNlbHNlCisjZXJyb3IgIldheWxhbmQgaXMgbm90IHN1cHBvcnRlZCBpbiBHVEsrIgorI2VuZGlmCisKKyNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW9vdmVybGF5Lmg+CisjaW5jbHVkZSA8Z3N0L3dheWxhbmQvd2F5bGFuZC5oPgorCisKK3N0YXRpYyBnYm9vbGVhbiBsaXZlID0gRkFMU0U7CisKK3N0YXRpYyBHT3B0aW9uRW50cnkgZW50cmllc1tdID0geworICB7ImxpdmUiLCAnbCcsIDAsIEdfT1BUSU9OX0FSR19OT05FLCAmbGl2ZSwgIlVzZSBhIGxpdmUgc291cmNlIiwgTlVMTH0sCisgIHtOVUxMfQorfTsKKwordHlwZWRlZiBzdHJ1Y3QKK3sKKyAgR3RrV2lkZ2V0ICphcHBfd2lkZ2V0OworICBHdGtXaWRnZXQgKnZpZGVvX3dpZGdldDsKKworICBHc3RFbGVtZW50ICpwaXBlbGluZTsKKyAgR3N0VmlkZW9PdmVybGF5ICpvdmVybGF5OworCisgIGdjaGFyICoqYXJndjsKKyAgZ2ludCBjdXJyZW50X3VyaTsgICAgICAgICAgICAgLyogaW5kZXggZm9yIGFyZ3YgKi8KK30gRGVtb0FwcDsKKworc3RhdGljIHZvaWQKK29uX2Fib3V0X3RvX2ZpbmlzaCAoR3N0RWxlbWVudCAqIHBsYXliaW4sIERlbW9BcHAgKiBkKQoreworICBpZiAoZC0+YXJndlsrK2QtPmN1cnJlbnRfdXJpXSA9PSBOVUxMKQorICAgIGQtPmN1cnJlbnRfdXJpID0gMTsKKworICBnX3ByaW50ICgiTm93IHBsYXlpbmcgJXNcbiIsIGQtPmFyZ3ZbZC0+Y3VycmVudF91cmldKTsKKyAgZ19vYmplY3Rfc2V0IChwbGF5YmluLCAidXJpIiwgZC0+YXJndltkLT5jdXJyZW50X3VyaV0sIE5VTEwpOworfQorCitzdGF0aWMgdm9pZAorZXJyb3JfY2IgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1zZywgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBEZW1vQXBwICpkID0gdXNlcl9kYXRhOworICBnY2hhciAqZGVidWcgPSBOVUxMOworICBHRXJyb3IgKmVyciA9IE5VTEw7CisKKyAgZ3N0X21lc3NhZ2VfcGFyc2VfZXJyb3IgKG1zZywgJmVyciwgJmRlYnVnKTsKKworICBnX3ByaW50ICgiRXJyb3I6ICVzXG4iLCBlcnItPm1lc3NhZ2UpOworICBnX2Vycm9yX2ZyZWUgKGVycik7CisKKyAgaWYgKGRlYnVnKSB7CisgICAgZ19wcmludCAoIkRlYnVnIGRldGFpbHM6ICVzXG4iLCBkZWJ1Zyk7CisgICAgZ19mcmVlIChkZWJ1Zyk7CisgIH0KKworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGQtPnBpcGVsaW5lLCBHU1RfU1RBVEVfTlVMTCk7Cit9CisKK3N0YXRpYyBHc3RCdXNTeW5jUmVwbHkKK2J1c19zeW5jX2hhbmRsZXIgKEdzdEJ1cyAqIGJ1cywgR3N0TWVzc2FnZSAqIG1lc3NhZ2UsIGdwb2ludGVyIHVzZXJfZGF0YSkKK3sKKyAgRGVtb0FwcCAqZCA9IHVzZXJfZGF0YTsKKworICBpZiAoZ3N0X2lzX3dheWxhbmRfZGlzcGxheV9oYW5kbGVfbmVlZF9jb250ZXh0X21lc3NhZ2UgKG1lc3NhZ2UpKSB7CisgICAgR3N0Q29udGV4dCAqY29udGV4dDsKKyAgICBHZGtEaXNwbGF5ICpkaXNwbGF5OworICAgIHN0cnVjdCB3bF9kaXNwbGF5ICpkaXNwbGF5X2hhbmRsZTsKKworICAgIGRpc3BsYXkgPSBndGtfd2lkZ2V0X2dldF9kaXNwbGF5IChkLT52aWRlb193aWRnZXQpOworICAgIGRpc3BsYXlfaGFuZGxlID0gZ2RrX3dheWxhbmRfZGlzcGxheV9nZXRfd2xfZGlzcGxheSAoZGlzcGxheSk7CisgICAgY29udGV4dCA9IGdzdF93YXlsYW5kX2Rpc3BsYXlfaGFuZGxlX2NvbnRleHRfbmV3IChkaXNwbGF5X2hhbmRsZSk7CisgICAgZ3N0X2VsZW1lbnRfc2V0X2NvbnRleHQgKEdTVF9FTEVNRU5UIChHU1RfTUVTU0FHRV9TUkMgKG1lc3NhZ2UpKSwgY29udGV4dCk7CisKKyAgICBnb3RvIGRyb3A7CisgIH0gZWxzZSBpZiAoZ3N0X2lzX3ZpZGVvX292ZXJsYXlfcHJlcGFyZV93aW5kb3dfaGFuZGxlX21lc3NhZ2UgKG1lc3NhZ2UpKSB7CisgICAgR3RrQWxsb2NhdGlvbiBhbGxvY2F0aW9uOworICAgIEdka1dpbmRvdyAqd2luZG93OworICAgIHN0cnVjdCB3bF9zdXJmYWNlICp3aW5kb3dfaGFuZGxlOworCisgICAgLyogR1NUX01FU1NBR0VfU1JDIChtZXNzYWdlKSB3aWxsIGJlIHRoZSBvdmVybGF5IG9iamVjdCB0aGF0IHdlIGhhdmUgdG8KKyAgICAgKiB1c2UuIFRoaXMgbWF5IGJlIHdheWxhbmRzaW5rLCBidXQgaXQgbWF5IGFsc28gYmUgcGxheWJpbi4gSW4gdGhlIGxhdHRlcgorICAgICAqIGNhc2UsIHdlIG11c3QgbWFrZSBzdXJlIHRvIHVzZSBwbGF5YmluIGluc3RlYWQgb2Ygd2F5bGFuZHNpbmssIGJlY2F1c2UKKyAgICAgKiBwbGF5YmluIHJlc2V0cyB0aGUgd2luZG93IGhhbmRsZSBhbmQgcmVuZGVyX3JlY3RhbmdsZSBhZnRlciByZXN0YXJ0aW5nCisgICAgICogcGxheWJhY2sgYW5kIHRoZSBhY3R1YWwgd2luZG93IHNpemUgaXMgbG9zdCAqLworICAgIGQtPm92ZXJsYXkgPSBHU1RfVklERU9fT1ZFUkxBWSAoR1NUX01FU1NBR0VfU1JDIChtZXNzYWdlKSk7CisKKyAgICBndGtfd2lkZ2V0X2dldF9hbGxvY2F0aW9uIChkLT52aWRlb193aWRnZXQsICZhbGxvY2F0aW9uKTsKKyAgICB3aW5kb3cgPSBndGtfd2lkZ2V0X2dldF93aW5kb3cgKGQtPnZpZGVvX3dpZGdldCk7CisgICAgd2luZG93X2hhbmRsZSA9IGdka193YXlsYW5kX3dpbmRvd19nZXRfd2xfc3VyZmFjZSAod2luZG93KTsKKworICAgIGdfcHJpbnQgKCJzZXR0aW5nIHdpbmRvdyBoYW5kbGUgYW5kIHNpemUgKCVkIHggJWQpXG4iLAorICAgICAgICBhbGxvY2F0aW9uLndpZHRoLCBhbGxvY2F0aW9uLmhlaWdodCk7CisKKyAgICBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfd2luZG93X2hhbmRsZSAoZC0+b3ZlcmxheSwgKGd1aW50cHRyKSB3aW5kb3dfaGFuZGxlKTsKKyAgICBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfcmVuZGVyX3JlY3RhbmdsZSAoZC0+b3ZlcmxheSwgYWxsb2NhdGlvbi54LAorICAgICAgICBhbGxvY2F0aW9uLnksIGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KTsKKworICAgIGdvdG8gZHJvcDsKKyAgfQorCisgIHJldHVybiBHU1RfQlVTX1BBU1M7CisKK2Ryb3A6CisgIGdzdF9tZXNzYWdlX3VucmVmIChtZXNzYWdlKTsKKyAgcmV0dXJuIEdTVF9CVVNfRFJPUDsKK30KKworLyogV2UgdXNlIHRoZSAiZHJhdyIgY2FsbGJhY2sgdG8gY2hhbmdlIHRoZSBzaXplIG9mIHRoZSBzaW5rCisgKiBiZWNhdXNlIHRoZSAiY29uZmlndXJlLWV2ZW50IiBpcyBvbmx5IHNlbnQgdG8gdG9wLWxldmVsIHdpZGdldHMuICovCitzdGF0aWMgZ2Jvb2xlYW4KK3ZpZGVvX3dpZGdldF9kcmF3X2NiIChHdGtXaWRnZXQgKiB3aWRnZXQsIGNhaXJvX3QgKiBjciwgZ3BvaW50ZXIgdXNlcl9kYXRhKQoreworICBEZW1vQXBwICpkID0gdXNlcl9kYXRhOworICBHdGtBbGxvY2F0aW9uIGFsbG9jYXRpb247CisKKyAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGlvbiAod2lkZ2V0LCAmYWxsb2NhdGlvbik7CisKKyAgZ19wcmludCAoImRyYXdfY2IgeCAlZCwgeSAlZCwgdyAlZCwgaCAlZFxuIiwKKyAgICAgIGFsbG9jYXRpb24ueCwgYWxsb2NhdGlvbi55LCBhbGxvY2F0aW9uLndpZHRoLCBhbGxvY2F0aW9uLmhlaWdodCk7CisKKyAgaWYgKGQtPm92ZXJsYXkpIHsKKyAgICBnc3RfdmlkZW9fb3ZlcmxheV9zZXRfcmVuZGVyX3JlY3RhbmdsZSAoZC0+b3ZlcmxheSwgYWxsb2NhdGlvbi54LAorICAgICAgICBhbGxvY2F0aW9uLnksIGFsbG9jYXRpb24ud2lkdGgsIGFsbG9jYXRpb24uaGVpZ2h0KTsKKyAgfQorCisgIC8qIFRoZXJlIGlzIG5vIG5lZWQgdG8gY2FsbCBnc3RfdmlkZW9fb3ZlcmxheV9leHBvc2UoKS4KKyAgICogVGhlIHdheWxhbmQgY29tcG9zaXRvciBjYW4gYWx3YXlzIHJlLWRyYXcgdGhlIHdpbmRvdworICAgKiBiYXNlZCBvbiBpdHMgbGFzdCBjb250ZW50cyBpZiBuZWNlc3NhcnkgKi8KKworICByZXR1cm4gRkFMU0U7Cit9CisKK3N0YXRpYyB2b2lkCitwbGF5aW5nX2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgRGVtb0FwcCAqIGQpCit7CisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZC0+cGlwZWxpbmUsIEdTVF9TVEFURV9QTEFZSU5HKTsKK30KKworc3RhdGljIHZvaWQKK3BhdXNlZF9jbGlja2VkX2NiIChHdGtCdXR0b24gKiBidXR0b24sIERlbW9BcHAgKiBkKQoreworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGQtPnBpcGVsaW5lLCBHU1RfU1RBVEVfUEFVU0VEKTsKK30KKworc3RhdGljIHZvaWQKK3JlYWR5X2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgRGVtb0FwcCAqIGQpCit7CisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZC0+cGlwZWxpbmUsIEdTVF9TVEFURV9SRUFEWSk7Cit9CisKK3N0YXRpYyB2b2lkCitudWxsX2NsaWNrZWRfY2IgKEd0a0J1dHRvbiAqIGJ1dHRvbiwgRGVtb0FwcCAqIGQpCit7CisgIGdzdF9lbGVtZW50X3NldF9zdGF0ZSAoZC0+cGlwZWxpbmUsIEdTVF9TVEFURV9OVUxMKTsKK30KKworc3RhdGljIHZvaWQKK2J1aWxkX3dpbmRvdyAoRGVtb0FwcCAqIGQpCit7CisgIEd0a0J1aWxkZXIgKmJ1aWxkZXI7CisgIEd0a1dpZGdldCAqYnV0dG9uOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBidWlsZGVyID0gZ3RrX2J1aWxkZXJfbmV3ICgpOworICBpZiAoIWd0a19idWlsZGVyX2FkZF9mcm9tX2ZpbGUgKGJ1aWxkZXIsICJ3aW5kb3cudWkiLCAmZXJyb3IpKSB7CisgICAgZ19lcnJvciAoIkZhaWxlZCB0byBsb2FkIHdpbmRvdy51aTogJXMiLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19lcnJvcl9mcmVlIChlcnJvcik7CisgICAgZ290byBleGl0OworICB9CisKKyAgZC0+YXBwX3dpZGdldCA9IEdUS19XSURHRVQgKGd0a19idWlsZGVyX2dldF9vYmplY3QgKGJ1aWxkZXIsICJ3aW5kb3ciKSk7CisgIGdfb2JqZWN0X3JlZiAoZC0+YXBwX3dpZGdldCk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGQtPmFwcF93aWRnZXQsICJkZXN0cm95IiwgR19DQUxMQkFDSyAoZ3RrX21haW5fcXVpdCksIE5VTEwpOworCisgIGQtPnZpZGVvX3dpZGdldCA9IEdUS19XSURHRVQgKGd0a19idWlsZGVyX2dldF9vYmplY3QgKGJ1aWxkZXIsICJ2aWRlb2FyZWEiKSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGQtPnZpZGVvX3dpZGdldCwgImRyYXciLAorICAgICAgR19DQUxMQkFDSyAodmlkZW9fd2lkZ2V0X2RyYXdfY2IpLCBkKTsKKworICBidXR0b24gPSBHVEtfV0lER0VUIChndGtfYnVpbGRlcl9nZXRfb2JqZWN0IChidWlsZGVyLCAiYnV0dG9uX3BsYXlpbmciKSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGJ1dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLIChwbGF5aW5nX2NsaWNrZWRfY2IpLCBkKTsKKworICBidXR0b24gPSBHVEtfV0lER0VUIChndGtfYnVpbGRlcl9nZXRfb2JqZWN0IChidWlsZGVyLCAiYnV0dG9uX3BhdXNlZCIpKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoYnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0sgKHBhdXNlZF9jbGlja2VkX2NiKSwgZCk7CisKKyAgYnV0dG9uID0gR1RLX1dJREdFVCAoZ3RrX2J1aWxkZXJfZ2V0X29iamVjdCAoYnVpbGRlciwgImJ1dHRvbl9yZWFkeSIpKTsKKyAgZ19zaWduYWxfY29ubmVjdCAoYnV0dG9uLCAiY2xpY2tlZCIsIEdfQ0FMTEJBQ0sgKHJlYWR5X2NsaWNrZWRfY2IpLCBkKTsKKworICBidXR0b24gPSBHVEtfV0lER0VUIChndGtfYnVpbGRlcl9nZXRfb2JqZWN0IChidWlsZGVyLCAiYnV0dG9uX251bGwiKSk7CisgIGdfc2lnbmFsX2Nvbm5lY3QgKGJ1dHRvbiwgImNsaWNrZWQiLCBHX0NBTExCQUNLIChudWxsX2NsaWNrZWRfY2IpLCBkKTsKKworICBndGtfd2lkZ2V0X3Nob3dfYWxsIChkLT5hcHBfd2lkZ2V0KTsKKworZXhpdDoKKyAgZ19vYmplY3RfdW5yZWYgKGJ1aWxkZXIpOworfQorCitpbnQKK21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKK3sKKyAgRGVtb0FwcCAqZDsKKyAgR09wdGlvbkNvbnRleHQgKmNvbnRleHQ7CisgIEdzdEJ1cyAqYnVzOworICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKworICBndGtfaW5pdCAoJmFyZ2MsICZhcmd2KTsKKyAgZ3N0X2luaXQgKCZhcmdjLCAmYXJndik7CisKKyAgY29udGV4dCA9IGdfb3B0aW9uX2NvbnRleHRfbmV3ICgiLSB3YXlsYW5kc2luayBndGsgZGVtbyIpOworICBnX29wdGlvbl9jb250ZXh0X2FkZF9tYWluX2VudHJpZXMgKGNvbnRleHQsIGVudHJpZXMsIE5VTEwpOworICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGNvbnRleHQsICZhcmdjLCAmYXJndiwgJmVycm9yKSkgeworICAgIGdfcHJpbnRlcnIgKCJvcHRpb24gcGFyc2luZyBmYWlsZWQ6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgcmV0dXJuIDE7CisgIH0KKworICBkID0gZ19zbGljZV9uZXcwIChEZW1vQXBwKTsKKyAgYnVpbGRfd2luZG93IChkKTsKKworICBpZiAoYXJnYyA+IDEpIHsKKyAgICBkLT5hcmd2ID0gYXJndjsKKyAgICBkLT5jdXJyZW50X3VyaSA9IDE7CisKKyAgICBkLT5waXBlbGluZSA9IGdzdF9wYXJzZV9sYXVuY2ggKCJwbGF5YmluIHZpZGVvLXNpbms9d2F5bGFuZHNpbmsiLCBOVUxMKTsKKyAgICBnX29iamVjdF9zZXQgKGQtPnBpcGVsaW5lLCAidXJpIiwgYXJndltkLT5jdXJyZW50X3VyaV0sIE5VTEwpOworCisgICAgLyogZW5hYmxlIGxvb3BpbmcgKi8KKyAgICBnX3NpZ25hbF9jb25uZWN0IChkLT5waXBlbGluZSwgImFib3V0LXRvLWZpbmlzaCIsCisgICAgICAgIEdfQ0FMTEJBQ0sgKG9uX2Fib3V0X3RvX2ZpbmlzaCksIGQpOworICB9IGVsc2UgeworICAgIGlmIChsaXZlKSB7CisgICAgICBkLT5waXBlbGluZSA9IGdzdF9wYXJzZV9sYXVuY2ggKCJ2aWRlb3Rlc3RzcmMgcGF0dGVybj0xOCAiCisgICAgICAgICAgImJhY2tncm91bmQtY29sb3I9MHgwMDAwNjJGRiBpcy1saXZlPXRydWUgISB3YXlsYW5kc2luayIsIE5VTEwpOworICAgIH0gZWxzZSB7CisgICAgICBkLT5waXBlbGluZSA9IGdzdF9wYXJzZV9sYXVuY2ggKCJ2aWRlb3Rlc3RzcmMgcGF0dGVybj0xOCAiCisgICAgICAgICAgImJhY2tncm91bmQtY29sb3I9MHgwMDAwNjJGRiAhIHdheWxhbmRzaW5rIiwgTlVMTCk7CisgICAgfQorICB9CisKKyAgYnVzID0gZ3N0X3BpcGVsaW5lX2dldF9idXMgKEdTVF9QSVBFTElORSAoZC0+cGlwZWxpbmUpKTsKKyAgZ3N0X2J1c19hZGRfc2lnbmFsX3dhdGNoIChidXMpOworICBnX3NpZ25hbF9jb25uZWN0IChidXMsICJtZXNzYWdlOjplcnJvciIsIEdfQ0FMTEJBQ0sgKGVycm9yX2NiKSwgZCk7CisgIGdzdF9idXNfc2V0X3N5bmNfaGFuZGxlciAoYnVzLCBidXNfc3luY19oYW5kbGVyLCBkLCBOVUxMKTsKKyAgZ3N0X29iamVjdF91bnJlZiAoYnVzKTsKKworICBnc3RfZWxlbWVudF9zZXRfc3RhdGUgKGQtPnBpcGVsaW5lLCBHU1RfU1RBVEVfUExBWUlORyk7CisKKyAgZ3RrX21haW4gKCk7CisKKyAgZ3N0X2VsZW1lbnRfc2V0X3N0YXRlIChkLT5waXBlbGluZSwgR1NUX1NUQVRFX05VTEwpOworICBnc3Rfb2JqZWN0X3VucmVmIChkLT5waXBlbGluZSk7CisgIGdfb2JqZWN0X3VucmVmIChkLT5hcHBfd2lkZ2V0KTsKKyAgZ19zbGljZV9mcmVlIChEZW1vQXBwLCBkKTsKKworICByZXR1cm4gMDsKK30KZGlmZiAtLWdpdCBhL3Rlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL3dpbmRvdy51aSBiL3Rlc3RzL2V4YW1wbGVzL3dheWxhbmRzaW5rL3dpbmRvdy51aQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTZjZjgyCi0tLSAvZGV2L251bGwKKysrIGIvdGVzdHMvZXhhbXBsZXMvd2F5bGFuZHNpbmsvd2luZG93LnVpCkBAIC0wLDAgKzEsOTkgQEAKKzw/eG1sIHZlcnNpb249IjEuMCIgZW5jb2Rpbmc9IlVURi04Ij8+Cis8IS0tIEdlbmVyYXRlZCB3aXRoIGdsYWRlIDMuMTguMiAtLT4KKzxpbnRlcmZhY2U+CisgIDxyZXF1aXJlcyBsaWI9Imd0aysiIHZlcnNpb249IjMuMCIvPgorICA8b2JqZWN0IGNsYXNzPSJHdGtXaW5kb3ciIGlkPSJ3aW5kb3ciPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5HU3RyZWFtZXIgV2F5bGFuZCBHVEsgRGVtbzwvcHJvcGVydHk+CisgICAgPGNoaWxkPgorICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQm94IiBpZD0iYm94Ij4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+dmVydGljYWw8L3Byb3BlcnR5PgorICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrRXZlbnRCb3giIGlkPSJ2aWRlb2FyZWEiPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndpZHRoX3JlcXVlc3QiPjQwMDwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iaGVpZ2h0X3JlcXVlc3QiPjMwMDwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iYXBwX3BhaW50YWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZG91YmxlX2J1ZmZlcmVkIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDxwbGFjZWhvbGRlci8+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgIDwvY2hpbGQ+CisgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCdXR0b25Cb3giIGlkPSJidXR0b25ib3giPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxheW91dF9zdHlsZSI+Y2VudGVyPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQnV0dG9uIiBpZD0iYnV0dG9uX3BsYXlpbmciPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlBMQVlJTkc8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVjZWl2ZXNfZGVmYXVsdCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0J1dHRvbiIgaWQ9ImJ1dHRvbl9wYXVzZWQiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlBBVVNFRDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWNlaXZlc19kZWZhdWx0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQnV0dG9uIiBpZD0iYnV0dG9uX3JlYWR5Ij4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5SRUFEWTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZWNlaXZlc19kZWZhdWx0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4yPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQnV0dG9uIiBpZD0iYnV0dG9uX251bGwiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPk5VTEw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icmVjZWl2ZXNfZGVmYXVsdCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MzwvcHJvcGVydHk+CisgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjE8L3Byb3BlcnR5PgorICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgPC9jaGlsZD4KKyAgICAgIDwvb2JqZWN0PgorICAgIDwvY2hpbGQ+CisgIDwvb2JqZWN0PgorPC9pbnRlcmZhY2U+CmRpZmYgLS1naXQgYS90ZXN0cy9maWxlcy9NYWtlZmlsZS5hbSBiL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmFtCmluZGV4IDI4MDc2MTIuLjM1OWQ2MDEgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmFtCisrKyBiL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmFtCkBAIC0xLDcgKzEsNCBAQAogRVhUUkFfRElTVCA9IFwKIAliYXJjb2RlLnBuZyBcCiAJYmx1ZS1zcXVhcmUucG5nIFwKLQljYnJfc3RyZWFtLm1wMyBcCi0JczE2YmUtaWQzdjIuYWlmZiBcCi0Jc3RyZWFtLm1wMiBcCi0JdmJyX3N0cmVhbS5tcDMKKwlzMTZiZS1pZDN2Mi5haWZmCmRpZmYgLS1naXQgYS90ZXN0cy9maWxlcy9NYWtlZmlsZS5pbiBiL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmluCmluZGV4IDc1NTA0ODUuLmYwYmE2NGIgMTAwNjQ0Ci0tLSBhL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmluCisrKyBiL3Rlc3RzL2ZpbGVzL01ha2VmaWxlLmluCkBAIC0xMTQsMTYgKzExNCwxNSBAQAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2d0ay1kb2MubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgXAogCSQodG9wX3NyY2RpcikvY29tbW9uL200L29yYy5tNCAkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9wa2cubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzZXR0aW5ncy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2ljb252Lm00ICQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00ICQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCAkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCAkKHRvcF9zcmNkaXIpL200L25scy5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCAkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00IFwKLQkkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYworCSQodG9wX3NyY2RpcikvbTQvZ2V0dGV4dC5tNCAkKHRvcF9zcmNkaXIpL200L2dzdC1maW9ucmVhZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9nc3Qtc2RsLm00ICQodG9wX3NyY2RpcikvbTQvaWNvbnYubTQgXAorCSQodG9wX3NyY2RpcikvbTQvaW50bG1hY29zeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1sZC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9saWItbGluay5tNCAkKHRvcF9zcmNkaXIpL200L2xpYi1wcmVmaXgubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliZ2NyeXB0Lm00ICQodG9wX3NyY2RpcikvbTQvbGlidG9vbC5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdG9wdGlvbnMubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHN1Z2FyLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2x0dmVyc2lvbi5tNCAkKHRvcF9zcmNkaXIpL200L2x0fm9ic29sZXRlLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L25scy5tNCAkKHRvcF9zcmNkaXIpL200L3BvLm00IFwKKwkkKHRvcF9zcmNkaXIpL200L3Byb2d0ZXN0Lm00ICQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjCiBhbV9fY29uZmlndXJlX2RlcHMgPSAkKGFtX19hY2xvY2FsX200X2RlcHMpICQoQ09ORklHVVJFX0RFUEVOREVOQ0lFUykgXAogCSQoQUNMT0NBTF9NNCkKIERJU1RfQ09NTU9OID0gJChzcmNkaXIpL01ha2VmaWxlLmFtICQoYW1fX0RJU1RfQ09NTU9OKQpAQCAtMTg4LDYgKzE4Nyw4IEBACiBDTFVUVEVSX1gxMV9MSUJTID0gQENMVVRURVJfWDExX0xJQlNACiBDUFAgPSBAQ1BQQAogQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACitDVURBX0NGTEFHUyA9IEBDVURBX0NGTEFHU0AKK0NVREFfTElCUyA9IEBDVURBX0xJQlNACiBDVVJMX0NGTEFHUyA9IEBDVVJMX0NGTEFHU0AKIENVUkxfTElCUyA9IEBDVVJMX0xJQlNACiBDWFggPSBAQ1hYQApAQCAtMjI1LDYgKzIyNiw4IEBACiBFQ0hPX0MgPSBARUNIT19DQAogRUNIT19OID0gQEVDSE9fTkAKIEVDSE9fVCA9IEBFQ0hPX1RACitFR0xfQ0ZMQUdTID0gQEVHTF9DRkxBR1NACitFR0xfTElCUyA9IEBFR0xfTElCU0AKIEVHUkVQID0gQEVHUkVQQAogRVJST1JfQ0ZMQUdTID0gQEVSUk9SX0NGTEFHU0AKIEVSUk9SX0NYWEZMQUdTID0gQEVSUk9SX0NYWEZMQUdTQApAQCAtMjMzLDcgKzIzNiw2IEBACiBFWElGX0NGTEFHUyA9IEBFWElGX0NGTEFHU0AKIEVYSUZfTElCUyA9IEBFWElGX0xJQlNACiBGQUFDX0xJQlMgPSBARkFBQ19MSUJTQAotRkFBRF9JU19ORUFBQyA9IEBGQUFEX0lTX05FQUFDQAogRkFBRF9MSUJTID0gQEZBQURfTElCU0AKIEZGTEFHUyA9IEBGRkxBR1NACiBGR1JFUCA9IEBGR1JFUEAKQEAgLTI1Miw4ICsyNTQsOSBAQAogR0lPX0xJQlMgPSBAR0lPX0xJQlNACiBHSU9fVU5JWF9DRkxBR1MgPSBAR0lPX1VOSVhfQ0ZMQUdTQAogR0lPX1VOSVhfTElCUyA9IEBHSU9fVU5JWF9MSUJTQAorR0xFUzJfQ0ZMQUdTID0gQEdMRVMyX0NGTEFHU0AKK0dMRVMyX0xJQlMgPSBAR0xFUzJfTElCU0AKIEdMSUJfQ0ZMQUdTID0gQEdMSUJfQ0ZMQUdTQAotR0xJQl9DT01QSUxFX1NDSEVNQVMgPSBAR0xJQl9DT01QSUxFX1NDSEVNQVNACiBHTElCX0VYVFJBX0NGTEFHUyA9IEBHTElCX0VYVFJBX0NGTEFHU0AKIEdMSUJfR0VOTUFSU0hBTCA9IEBHTElCX0dFTk1BUlNIQUxACiBHTElCX0xJQlMgPSBAR0xJQl9MSUJTQApAQCAtMjcwLDE2ICsyNzMsMTcgQEAKIEdNT0RVTEVfTk9fRVhQT1JUX0xJQlMgPSBAR01PRFVMRV9OT19FWFBPUlRfTElCU0AKIEdNU0dGTVQgPSBAR01TR0ZNVEAKIEdNU0dGTVRfMDE1ID0gQEdNU0dGTVRfMDE1QAorR05VU1RMX0NGTEFHUyA9IEBHTlVTVExfQ0ZMQUdTQAorR05VU1RMX0xJQlMgPSBAR05VU1RMX0xJQlNACiBHUkFQSEVORV9DRkxBR1MgPSBAR1JBUEhFTkVfQ0ZMQUdTQAogR1JBUEhFTkVfTElCUyA9IEBHUkFQSEVORV9MSUJTQAogR1JFUCA9IEBHUkVQQAotR1NFVFRJTkdTX0NGTEFHUyA9IEBHU0VUVElOR1NfQ0ZMQUdTQAotR1NFVFRJTkdTX0RJU0FCTEVfU0NIRU1BU19DT01QSUxFID0gQEdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRUAKLUdTRVRUSU5HU19MSUJTID0gQEdTRVRUSU5HU19MSUJTQAogR1NNX0xJQlMgPSBAR1NNX0xJQlNACiBHU1RQQl9QTFVHSU5TX0RJUiA9IEBHU1RQQl9QTFVHSU5TX0RJUkAKIEdTVFBCX1BSRUZJWCA9IEBHU1RQQl9QUkVGSVhACiBHU1RfQUdFID0gQEdTVF9BR0VACitHU1RfQUxMT0NBVE9SU19DRkxBR1MgPSBAR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTQAorR1NUX0FMTE9DQVRPUlNfTElCUyA9IEBHU1RfQUxMT0NBVE9SU19MSUJTQAogR1NUX0FMTF9MREZMQUdTID0gQEdTVF9BTExfTERGTEFHU0AKIEdTVF9BUElfVkVSU0lPTiA9IEBHU1RfQVBJX1ZFUlNJT05ACiBHU1RfQkFTRV9DRkxBR1MgPSBAR1NUX0JBU0VfQ0ZMQUdTQApAQCAtMzA1LDYgKzMwOSw4IEBACiBHU1RfT1BUSU9OX09CSkNGTEFHUyA9IEBHU1RfT1BUSU9OX09CSkNGTEFHU0AKIEdTVF9QQUNLQUdFX05BTUUgPSBAR1NUX1BBQ0tBR0VfTkFNRUAKIEdTVF9QQUNLQUdFX09SSUdJTiA9IEBHU1RfUEFDS0FHRV9PUklHSU5ACitHU1RfUEJVVElMU19DRkxBR1MgPSBAR1NUX1BCVVRJTFNfQ0ZMQUdTQAorR1NUX1BCVVRJTFNfTElCUyA9IEBHU1RfUEJVVElMU19MSUJTQAogR1NUX1BLR19DT05GSUdfUEFUSCA9IEBHU1RfUEtHX0NPTkZJR19QQVRIQAogR1NUX1BMVUdJTlNfQUxMID0gQEdTVF9QTFVHSU5TX0FMTEAKIEdTVF9QTFVHSU5TX0JBRF9DRkxBR1MgPSBAR1NUX1BMVUdJTlNfQkFEX0NGTEFHU0AKQEAgLTMzMCw2ICszMzYsOCBAQAogR1NUX1BSRUZJWCA9IEBHU1RfUFJFRklYQAogR1NUX1JFVklTSU9OID0gQEdTVF9SRVZJU0lPTkAKIEdTVF9UT09MU19ESVIgPSBAR1NUX1RPT0xTX0RJUkAKK0dTVF9WSURFT19DRkxBR1MgPSBAR1NUX1ZJREVPX0NGTEFHU0AKK0dTVF9WSURFT19MSUJTID0gQEdTVF9WSURFT19MSUJTQAogR1RLM19DRkxBR1MgPSBAR1RLM19DRkxBR1NACiBHVEszX0dMX0NGTEFHUyA9IEBHVEszX0dMX0NGTEFHU0AKIEdUSzNfR0xfTElCUyA9IEBHVEszX0dMX0xJQlNACkBAIC00MzEsNiArNDM5LDcgQEAKIExUTElCSUNPTlYgPSBATFRMSUJJQ09OVkAKIExUTElCSU5UTCA9IEBMVExJQklOVExACiBMVExJQk9CSlMgPSBATFRMSUJPQkpTQAorTFRfU1lTX0xJQlJBUllfUEFUSCA9IEBMVF9TWVNfTElCUkFSWV9QQVRIQAogTUFJTlQgPSBATUFJTlRACiBNQUtFSU5GTyA9IEBNQUtFSU5GT0AKIE1BTklGRVNUX1RPT0wgPSBATUFOSUZFU1RfVE9PTEAKQEAgLTQ0NCw4ICs0NTMsNiBAQAogTU9EUExVR19MSUJTID0gQE1PRFBMVUdfTElCU0AKIE1QRUcyRU5DX0NGTEFHUyA9IEBNUEVHMkVOQ19DRkxBR1NACiBNUEVHMkVOQ19MSUJTID0gQE1QRUcyRU5DX0xJQlNACi1NUEcxMjNfQ0ZMQUdTID0gQE1QRzEyM19DRkxBR1NACi1NUEcxMjNfTElCUyA9IEBNUEcxMjNfTElCU0AKIE1QTEVYX0NGTEFHUyA9IEBNUExFWF9DRkxBR1NACiBNUExFWF9MREZMQUdTID0gQE1QTEVYX0xERkxBR1NACiBNUExFWF9MSUJTID0gQE1QTEVYX0xJQlNACkBAIC00NjEsNiArNDY4LDggQEAKIE5FVFRMRV9MSUJTID0gQE5FVFRMRV9MSUJTQAogTk0gPSBATk1ACiBOTUVESVQgPSBATk1FRElUQAorTlZFTkNPREVfQ0ZMQUdTID0gQE5WRU5DT0RFX0NGTEFHU0AKK05WRU5DT0RFX0xJQlMgPSBATlZFTkNPREVfTElCU0AKIE9CSkMgPSBAT0JKQ0AKIE9CSkNERVBNT0RFID0gQE9CSkNERVBNT0RFQAogT0JKQ0ZMQUdTID0gQE9CSkNGTEFHU0AKQEAgLTUxOCwxNiArNTI3LDE4IEBACiBQWVRIT05fUExBVEZPUk0gPSBAUFlUSE9OX1BMQVRGT1JNQAogUFlUSE9OX1BSRUZJWCA9IEBQWVRIT05fUFJFRklYQAogUFlUSE9OX1ZFUlNJT04gPSBAUFlUSE9OX1ZFUlNJT05ACitRVF9BTkRST0lEX0NGTEFHUyA9IEBRVF9BTkRST0lEX0NGTEFHU0AKK1FUX0FORFJPSURfTElCUyA9IEBRVF9BTkRST0lEX0xJQlNACiBRVF9DRkxBR1MgPSBAUVRfQ0ZMQUdTQAogUVRfTElCUyA9IEBRVF9MSUJTQAorUVRfTUFDX0NGTEFHUyA9IEBRVF9NQUNfQ0ZMQUdTQAorUVRfTUFDX0xJQlMgPSBAUVRfTUFDX0xJQlNACiBRVF9XQVlMQU5EX0NGTEFHUyA9IEBRVF9XQVlMQU5EX0NGTEFHU0AKIFFUX1dBWUxBTkRfTElCUyA9IEBRVF9XQVlMQU5EX0xJQlNACiBRVF9YMTFfQ0ZMQUdTID0gQFFUX1gxMV9DRkxBR1NACiBRVF9YMTFfTElCUyA9IEBRVF9YMTFfTElCU0AKIFJBTkxJQiA9IEBSQU5MSUJACiBSQ0MgPSBAUkNDQAotUlNWR18yXzM2XzJfQ0ZMQUdTID0gQFJTVkdfMl8zNl8yX0NGTEFHU0AKLVJTVkdfMl8zNl8yX0xJQlMgPSBAUlNWR18yXzM2XzJfTElCU0AKIFJTVkdfQ0ZMQUdTID0gQFJTVkdfQ0ZMQUdTQAogUlNWR19MSUJTID0gQFJTVkdfTElCU0AKIFJUTVBfQ0ZMQUdTID0gQFJUTVBfQ0ZMQUdTQApAQCAtNTc5LDYgKzU5MCw3IEBACiBWT0FBQ0VOQ19MSUJTID0gQFZPQUFDRU5DX0xJQlNACiBWT0FNUldCRU5DX0NGTEFHUyA9IEBWT0FNUldCRU5DX0NGTEFHU0AKIFZPQU1SV0JFTkNfTElCUyA9IEBWT0FNUldCRU5DX0xJQlNACitWVUxLQU5fTElCUyA9IEBWVUxLQU5fTElCU0AKIFdBUk5JTkdfQ0ZMQUdTID0gQFdBUk5JTkdfQ0ZMQUdTQAogV0FSTklOR19DWFhGTEFHUyA9IEBXQVJOSU5HX0NYWEZMQUdTQAogV0FSTklOR19PQkpDRkxBR1MgPSBAV0FSTklOR19PQkpDRkxBR1NACkBAIC01ODksNiArNjAxLDcgQEAKIFdBWUxBTkRfTElCUyA9IEBXQVlMQU5EX0xJQlNACiBXRUJQX0NGTEFHUyA9IEBXRUJQX0NGTEFHU0AKIFdFQlBfTElCUyA9IEBXRUJQX0xJQlNACitXR0VUID0gQFdHRVRACiBXSUxETUlESV9DRkxBR1MgPSBAV0lMRE1JRElfQ0ZMQUdTQAogV0lMRE1JRElfTElCUyA9IEBXSUxETUlESV9MSUJTQAogV0lOS1NfTElCUyA9IEBXSU5LU19MSUJTQApAQCAtNTk4LDYgKzYxMSw4IEBACiBYMTFfTElCUyA9IEBYMTFfTElCU0AKIFgyNjVfQ0ZMQUdTID0gQFgyNjVfQ0ZMQUdTQAogWDI2NV9MSUJTID0gQFgyNjVfTElCU0AKK1hDQl9DRkxBR1MgPSBAWENCX0NGTEFHU0AKK1hDQl9MSUJTID0gQFhDQl9MSUJTQAogWENPTVBPU0lURV9DRkxBR1MgPSBAWENPTVBPU0lURV9DRkxBR1NACiBYQ09NUE9TSVRFX0xJQlMgPSBAWENPTVBPU0lURV9MSUJTQAogWEdFVFRFWFQgPSBAWEdFVFRFWFRACkBAIC02MzUsNyArNjUwLDYgQEAKIGRvY2RpciA9IEBkb2NkaXJACiBkdmlkaXIgPSBAZHZpZGlyQAogZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1nc2V0dGluZ3NzY2hlbWFkaXIgPSBAZ3NldHRpbmdzc2NoZW1hZGlyQAogaG9zdCA9IEBob3N0QAogaG9zdF9hbGlhcyA9IEBob3N0X2FsaWFzQAogaG9zdF9jcHUgPSBAaG9zdF9jcHVACkBAIC02NzgsMTAgKzY5Miw3IEBACiBFWFRSQV9ESVNUID0gXAogCWJhcmNvZGUucG5nIFwKIAlibHVlLXNxdWFyZS5wbmcgXAotCWNicl9zdHJlYW0ubXAzIFwKLQlzMTZiZS1pZDN2Mi5haWZmIFwKLQlzdHJlYW0ubXAyIFwKLQl2YnJfc3RyZWFtLm1wMworCXMxNmJlLWlkM3YyLmFpZmYKIAogYWxsOiBhbGwtYW0KIApkaWZmIC0tZ2l0IGEvdGVzdHMvZmlsZXMvY2JyX3N0cmVhbS5tcDMgYi90ZXN0cy9maWxlcy9jYnJfc3RyZWFtLm1wMwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjFhNWM0My4uMDAwMDAwMAotLS0gYS90ZXN0cy9maWxlcy9jYnJfc3RyZWFtLm1wMworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RzL2ZpbGVzL3N0cmVhbS5tcDIgYi90ZXN0cy9maWxlcy9zdHJlYW0ubXAyCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjZlOTAwLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZpbGVzL3N0cmVhbS5tcDIKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0cy9maWxlcy92YnJfc3RyZWFtLm1wMyBiL3Rlc3RzL2ZpbGVzL3Zicl9zdHJlYW0ubXAzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MWZjMzhiLi4wMDAwMDAwCi0tLSBhL3Rlc3RzL2ZpbGVzL3Zicl9zdHJlYW0ubXAzCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdHMvaWNsZXMvTWFrZWZpbGUuaW4gYi90ZXN0cy9pY2xlcy9NYWtlZmlsZS5pbgppbmRleCBiYzg0YTYwLi5kMDU1MmE0IDEwMDY0NAotLS0gYS90ZXN0cy9pY2xlcy9NYWtlZmlsZS5pbgorKysgYi90ZXN0cy9pY2xlcy9NYWtlZmlsZS5pbgpAQCAtMTE2LDE2ICsxMTYsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTI0Niw2ICsyNDUsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTI4Myw2ICsyODQsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTI5MSw3ICsyOTQsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0zMTAsOCArMzEyLDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTMyOCwxNiArMzMxLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTM2Myw2ICszNjcsOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zODgsNiArMzk0LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDg5LDYgKzQ5Nyw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC01MDIsOCArNTExLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNTE5LDYgKzUyNiw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01NzYsMTYgKzU4NSwxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTYzNyw2ICs2NDgsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNjQ3LDYgKzY1OSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTY1Niw2ICs2NjksOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjkzLDcgKzcwOCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdG9vbHMvTWFrZWZpbGUuaW4gYi90b29scy9NYWtlZmlsZS5pbgppbmRleCAxMmRiYWRlLi42NWFjNmUwIDEwMDY0NAotLS0gYS90b29scy9NYWtlZmlsZS5pbgorKysgYi90b29scy9NYWtlZmlsZS5pbgpAQCAtMTE0LDE2ICsxMTQsMTUgQEAKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9ndGstZG9jLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IFwKIAkkKHRvcF9zcmNkaXIpL2NvbW1vbi9tNC9vcmMubTQgJCh0b3Bfc3JjZGlyKS9jb21tb24vbTQvcGtnLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc2V0dGluZ3MubTQgXAotCSQodG9wX3NyY2RpcikvbTQvZ3N0LWZpb25yZWFkLm00ICQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9pY29udi5tNCAkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLWxkLm00ICQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbGliLXByZWZpeC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9tNC9saWJ0b29sLm00ICQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00IFwKLQkkKHRvcF9zcmNkaXIpL200L2x0c3VnYXIubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgXAotCSQodG9wX3NyY2RpcikvbTQvbHR+b2Jzb2xldGUubTQgJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgXAotCSQodG9wX3NyY2RpcikvbTQvcG8ubTQgJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCBcCi0JJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMKKwkkKHRvcF9zcmNkaXIpL200L2dldHRleHQubTQgJCh0b3Bfc3JjZGlyKS9tNC9nc3QtZmlvbnJlYWQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvZ3N0LXNkbC5tNCAkKHRvcF9zcmNkaXIpL200L2ljb252Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2ludGxtYWNvc3gubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItbGQubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbGliLWxpbmsubTQgJCh0b3Bfc3JjZGlyKS9tNC9saWItcHJlZml4Lm00IFwKKwkkKHRvcF9zcmNkaXIpL200L2xpYmdjcnlwdC5tNCAkKHRvcF9zcmNkaXIpL200L2xpYnRvb2wubTQgXAorCSQodG9wX3NyY2RpcikvbTQvbHRvcHRpb25zLm00ICQodG9wX3NyY2RpcikvbTQvbHRzdWdhci5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9sdHZlcnNpb24ubTQgJCh0b3Bfc3JjZGlyKS9tNC9sdH5vYnNvbGV0ZS5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9ubHMubTQgJCh0b3Bfc3JjZGlyKS9tNC9wby5tNCBcCisJJCh0b3Bfc3JjZGlyKS9tNC9wcm9ndGVzdC5tNCAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYwogYW1fX2NvbmZpZ3VyZV9kZXBzID0gJChhbV9fYWNsb2NhbF9tNF9kZXBzKSAkKENPTkZJR1VSRV9ERVBFTkRFTkNJRVMpIFwKIAkkKEFDTE9DQUxfTTQpCiBESVNUX0NPTU1PTiA9ICQoc3JjZGlyKS9NYWtlZmlsZS5hbSAkKGFtX19ESVNUX0NPTU1PTikKQEAgLTE4OCw2ICsxODcsOCBAQAogQ0xVVFRFUl9YMTFfTElCUyA9IEBDTFVUVEVSX1gxMV9MSUJTQAogQ1BQID0gQENQUEAKIENQUEZMQUdTID0gQENQUEZMQUdTQAorQ1VEQV9DRkxBR1MgPSBAQ1VEQV9DRkxBR1NACitDVURBX0xJQlMgPSBAQ1VEQV9MSUJTQAogQ1VSTF9DRkxBR1MgPSBAQ1VSTF9DRkxBR1NACiBDVVJMX0xJQlMgPSBAQ1VSTF9MSUJTQAogQ1hYID0gQENYWEAKQEAgLTIyNSw2ICsyMjYsOCBAQAogRUNIT19DID0gQEVDSE9fQ0AKIEVDSE9fTiA9IEBFQ0hPX05ACiBFQ0hPX1QgPSBARUNIT19UQAorRUdMX0NGTEFHUyA9IEBFR0xfQ0ZMQUdTQAorRUdMX0xJQlMgPSBARUdMX0xJQlNACiBFR1JFUCA9IEBFR1JFUEAKIEVSUk9SX0NGTEFHUyA9IEBFUlJPUl9DRkxBR1NACiBFUlJPUl9DWFhGTEFHUyA9IEBFUlJPUl9DWFhGTEFHU0AKQEAgLTIzMyw3ICsyMzYsNiBAQAogRVhJRl9DRkxBR1MgPSBARVhJRl9DRkxBR1NACiBFWElGX0xJQlMgPSBARVhJRl9MSUJTQAogRkFBQ19MSUJTID0gQEZBQUNfTElCU0AKLUZBQURfSVNfTkVBQUMgPSBARkFBRF9JU19ORUFBQ0AKIEZBQURfTElCUyA9IEBGQUFEX0xJQlNACiBGRkxBR1MgPSBARkZMQUdTQAogRkdSRVAgPSBARkdSRVBACkBAIC0yNTIsOCArMjU0LDkgQEAKIEdJT19MSUJTID0gQEdJT19MSUJTQAogR0lPX1VOSVhfQ0ZMQUdTID0gQEdJT19VTklYX0NGTEFHU0AKIEdJT19VTklYX0xJQlMgPSBAR0lPX1VOSVhfTElCU0AKK0dMRVMyX0NGTEFHUyA9IEBHTEVTMl9DRkxBR1NACitHTEVTMl9MSUJTID0gQEdMRVMyX0xJQlNACiBHTElCX0NGTEFHUyA9IEBHTElCX0NGTEFHU0AKLUdMSUJfQ09NUElMRV9TQ0hFTUFTID0gQEdMSUJfQ09NUElMRV9TQ0hFTUFTQAogR0xJQl9FWFRSQV9DRkxBR1MgPSBAR0xJQl9FWFRSQV9DRkxBR1NACiBHTElCX0dFTk1BUlNIQUwgPSBAR0xJQl9HRU5NQVJTSEFMQAogR0xJQl9MSUJTID0gQEdMSUJfTElCU0AKQEAgLTI3MCwxNiArMjczLDE3IEBACiBHTU9EVUxFX05PX0VYUE9SVF9MSUJTID0gQEdNT0RVTEVfTk9fRVhQT1JUX0xJQlNACiBHTVNHRk1UID0gQEdNU0dGTVRACiBHTVNHRk1UXzAxNSA9IEBHTVNHRk1UXzAxNUAKK0dOVVNUTF9DRkxBR1MgPSBAR05VU1RMX0NGTEFHU0AKK0dOVVNUTF9MSUJTID0gQEdOVVNUTF9MSUJTQAogR1JBUEhFTkVfQ0ZMQUdTID0gQEdSQVBIRU5FX0NGTEFHU0AKIEdSQVBIRU5FX0xJQlMgPSBAR1JBUEhFTkVfTElCU0AKIEdSRVAgPSBAR1JFUEAKLUdTRVRUSU5HU19DRkxBR1MgPSBAR1NFVFRJTkdTX0NGTEFHU0AKLUdTRVRUSU5HU19ESVNBQkxFX1NDSEVNQVNfQ09NUElMRSA9IEBHU0VUVElOR1NfRElTQUJMRV9TQ0hFTUFTX0NPTVBJTEVACi1HU0VUVElOR1NfTElCUyA9IEBHU0VUVElOR1NfTElCU0AKIEdTTV9MSUJTID0gQEdTTV9MSUJTQAogR1NUUEJfUExVR0lOU19ESVIgPSBAR1NUUEJfUExVR0lOU19ESVJACiBHU1RQQl9QUkVGSVggPSBAR1NUUEJfUFJFRklYQAogR1NUX0FHRSA9IEBHU1RfQUdFQAorR1NUX0FMTE9DQVRPUlNfQ0ZMQUdTID0gQEdTVF9BTExPQ0FUT1JTX0NGTEFHU0AKK0dTVF9BTExPQ0FUT1JTX0xJQlMgPSBAR1NUX0FMTE9DQVRPUlNfTElCU0AKIEdTVF9BTExfTERGTEFHUyA9IEBHU1RfQUxMX0xERkxBR1NACiBHU1RfQVBJX1ZFUlNJT04gPSBAR1NUX0FQSV9WRVJTSU9OQAogR1NUX0JBU0VfQ0ZMQUdTID0gQEdTVF9CQVNFX0NGTEFHU0AKQEAgLTMwNSw2ICszMDksOCBAQAogR1NUX09QVElPTl9PQkpDRkxBR1MgPSBAR1NUX09QVElPTl9PQkpDRkxBR1NACiBHU1RfUEFDS0FHRV9OQU1FID0gQEdTVF9QQUNLQUdFX05BTUVACiBHU1RfUEFDS0FHRV9PUklHSU4gPSBAR1NUX1BBQ0tBR0VfT1JJR0lOQAorR1NUX1BCVVRJTFNfQ0ZMQUdTID0gQEdTVF9QQlVUSUxTX0NGTEFHU0AKK0dTVF9QQlVUSUxTX0xJQlMgPSBAR1NUX1BCVVRJTFNfTElCU0AKIEdTVF9QS0dfQ09ORklHX1BBVEggPSBAR1NUX1BLR19DT05GSUdfUEFUSEAKIEdTVF9QTFVHSU5TX0FMTCA9IEBHU1RfUExVR0lOU19BTExACiBHU1RfUExVR0lOU19CQURfQ0ZMQUdTID0gQEdTVF9QTFVHSU5TX0JBRF9DRkxBR1NACkBAIC0zMzAsNiArMzM2LDggQEAKIEdTVF9QUkVGSVggPSBAR1NUX1BSRUZJWEAKIEdTVF9SRVZJU0lPTiA9IEBHU1RfUkVWSVNJT05ACiBHU1RfVE9PTFNfRElSID0gQEdTVF9UT09MU19ESVJACitHU1RfVklERU9fQ0ZMQUdTID0gQEdTVF9WSURFT19DRkxBR1NACitHU1RfVklERU9fTElCUyA9IEBHU1RfVklERU9fTElCU0AKIEdUSzNfQ0ZMQUdTID0gQEdUSzNfQ0ZMQUdTQAogR1RLM19HTF9DRkxBR1MgPSBAR1RLM19HTF9DRkxBR1NACiBHVEszX0dMX0xJQlMgPSBAR1RLM19HTF9MSUJTQApAQCAtNDMxLDYgKzQzOSw3IEBACiBMVExJQklDT05WID0gQExUTElCSUNPTlZACiBMVExJQklOVEwgPSBATFRMSUJJTlRMQAogTFRMSUJPQkpTID0gQExUTElCT0JKU0AKK0xUX1NZU19MSUJSQVJZX1BBVEggPSBATFRfU1lTX0xJQlJBUllfUEFUSEAKIE1BSU5UID0gQE1BSU5UQAogTUFLRUlORk8gPSBATUFLRUlORk9ACiBNQU5JRkVTVF9UT09MID0gQE1BTklGRVNUX1RPT0xACkBAIC00NDQsOCArNDUzLDYgQEAKIE1PRFBMVUdfTElCUyA9IEBNT0RQTFVHX0xJQlNACiBNUEVHMkVOQ19DRkxBR1MgPSBATVBFRzJFTkNfQ0ZMQUdTQAogTVBFRzJFTkNfTElCUyA9IEBNUEVHMkVOQ19MSUJTQAotTVBHMTIzX0NGTEFHUyA9IEBNUEcxMjNfQ0ZMQUdTQAotTVBHMTIzX0xJQlMgPSBATVBHMTIzX0xJQlNACiBNUExFWF9DRkxBR1MgPSBATVBMRVhfQ0ZMQUdTQAogTVBMRVhfTERGTEFHUyA9IEBNUExFWF9MREZMQUdTQAogTVBMRVhfTElCUyA9IEBNUExFWF9MSUJTQApAQCAtNDYxLDYgKzQ2OCw4IEBACiBORVRUTEVfTElCUyA9IEBORVRUTEVfTElCU0AKIE5NID0gQE5NQAogTk1FRElUID0gQE5NRURJVEAKK05WRU5DT0RFX0NGTEFHUyA9IEBOVkVOQ09ERV9DRkxBR1NACitOVkVOQ09ERV9MSUJTID0gQE5WRU5DT0RFX0xJQlNACiBPQkpDID0gQE9CSkNACiBPQkpDREVQTU9ERSA9IEBPQkpDREVQTU9ERUAKIE9CSkNGTEFHUyA9IEBPQkpDRkxBR1NACkBAIC01MTgsMTYgKzUyNywxOCBAQAogUFlUSE9OX1BMQVRGT1JNID0gQFBZVEhPTl9QTEFURk9STUAKIFBZVEhPTl9QUkVGSVggPSBAUFlUSE9OX1BSRUZJWEAKIFBZVEhPTl9WRVJTSU9OID0gQFBZVEhPTl9WRVJTSU9OQAorUVRfQU5EUk9JRF9DRkxBR1MgPSBAUVRfQU5EUk9JRF9DRkxBR1NACitRVF9BTkRST0lEX0xJQlMgPSBAUVRfQU5EUk9JRF9MSUJTQAogUVRfQ0ZMQUdTID0gQFFUX0NGTEFHU0AKIFFUX0xJQlMgPSBAUVRfTElCU0AKK1FUX01BQ19DRkxBR1MgPSBAUVRfTUFDX0NGTEFHU0AKK1FUX01BQ19MSUJTID0gQFFUX01BQ19MSUJTQAogUVRfV0FZTEFORF9DRkxBR1MgPSBAUVRfV0FZTEFORF9DRkxBR1NACiBRVF9XQVlMQU5EX0xJQlMgPSBAUVRfV0FZTEFORF9MSUJTQAogUVRfWDExX0NGTEFHUyA9IEBRVF9YMTFfQ0ZMQUdTQAogUVRfWDExX0xJQlMgPSBAUVRfWDExX0xJQlNACiBSQU5MSUIgPSBAUkFOTElCQAogUkNDID0gQFJDQ0AKLVJTVkdfMl8zNl8yX0NGTEFHUyA9IEBSU1ZHXzJfMzZfMl9DRkxBR1NACi1SU1ZHXzJfMzZfMl9MSUJTID0gQFJTVkdfMl8zNl8yX0xJQlNACiBSU1ZHX0NGTEFHUyA9IEBSU1ZHX0NGTEFHU0AKIFJTVkdfTElCUyA9IEBSU1ZHX0xJQlNACiBSVE1QX0NGTEFHUyA9IEBSVE1QX0NGTEFHU0AKQEAgLTU3OSw2ICs1OTAsNyBAQAogVk9BQUNFTkNfTElCUyA9IEBWT0FBQ0VOQ19MSUJTQAogVk9BTVJXQkVOQ19DRkxBR1MgPSBAVk9BTVJXQkVOQ19DRkxBR1NACiBWT0FNUldCRU5DX0xJQlMgPSBAVk9BTVJXQkVOQ19MSUJTQAorVlVMS0FOX0xJQlMgPSBAVlVMS0FOX0xJQlNACiBXQVJOSU5HX0NGTEFHUyA9IEBXQVJOSU5HX0NGTEFHU0AKIFdBUk5JTkdfQ1hYRkxBR1MgPSBAV0FSTklOR19DWFhGTEFHU0AKIFdBUk5JTkdfT0JKQ0ZMQUdTID0gQFdBUk5JTkdfT0JKQ0ZMQUdTQApAQCAtNTg5LDYgKzYwMSw3IEBACiBXQVlMQU5EX0xJQlMgPSBAV0FZTEFORF9MSUJTQAogV0VCUF9DRkxBR1MgPSBAV0VCUF9DRkxBR1NACiBXRUJQX0xJQlMgPSBAV0VCUF9MSUJTQAorV0dFVCA9IEBXR0VUQAogV0lMRE1JRElfQ0ZMQUdTID0gQFdJTERNSURJX0NGTEFHU0AKIFdJTERNSURJX0xJQlMgPSBAV0lMRE1JRElfTElCU0AKIFdJTktTX0xJQlMgPSBAV0lOS1NfTElCU0AKQEAgLTU5OCw2ICs2MTEsOCBAQAogWDExX0xJQlMgPSBAWDExX0xJQlNACiBYMjY1X0NGTEFHUyA9IEBYMjY1X0NGTEFHU0AKIFgyNjVfTElCUyA9IEBYMjY1X0xJQlNACitYQ0JfQ0ZMQUdTID0gQFhDQl9DRkxBR1NACitYQ0JfTElCUyA9IEBYQ0JfTElCU0AKIFhDT01QT1NJVEVfQ0ZMQUdTID0gQFhDT01QT1NJVEVfQ0ZMQUdTQAogWENPTVBPU0lURV9MSUJTID0gQFhDT01QT1NJVEVfTElCU0AKIFhHRVRURVhUID0gQFhHRVRURVhUQApAQCAtNjM1LDcgKzY1MCw2IEBACiBkb2NkaXIgPSBAZG9jZGlyQAogZHZpZGlyID0gQGR2aWRpckAKIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotZ3NldHRpbmdzc2NoZW1hZGlyID0gQGdzZXR0aW5nc3NjaGVtYWRpckAKIGhvc3QgPSBAaG9zdEAKIGhvc3RfYWxpYXMgPSBAaG9zdF9hbGlhc0AKIGhvc3RfY3B1ID0gQGhvc3RfY3B1QApkaWZmIC0tZ2l0IGEvdG9vbHMvZ3N0LWFwcC1tYWtlciBiL3Rvb2xzL2dzdC1hcHAtbWFrZXIKaW5kZXggNzg2Y2Q2NC4uZjNjM2QxZiAxMDA3NTUKLS0tIGEvdG9vbHMvZ3N0LWFwcC1tYWtlcgorKysgYi90b29scy9nc3QtYXBwLW1ha2VyCkBAIC0xNTEsNiArMTUxLDggQEAKICAgZ19vcHRpb25fY29udGV4dF9hZGRfZ3JvdXAgKGNvbnRleHQsIGdzdF9pbml0X2dldF9vcHRpb25fZ3JvdXAgKCkpOwogICBpZiAoIWdfb3B0aW9uX2NvbnRleHRfcGFyc2UgKGNvbnRleHQsICZhcmdjLCAmYXJndiwgJmVycm9yKSkgewogICAgIGdfcHJpbnQgKCJvcHRpb24gcGFyc2luZyBmYWlsZWQ6ICVzXG4iLCBlcnJvci0+bWVzc2FnZSk7CisgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKKyAgICBnX29wdGlvbl9jb250ZXh0X2ZyZWUgKGNvbnRleHQpOwogICAgIGV4aXQgKDEpOwogICB9CiAgIGdfb3B0aW9uX2NvbnRleHRfZnJlZSAoY29udGV4dCk7CkBAIC0yMjMsNiArMjI1LDcgQEAKIAogICBpZiAoZXJyb3IpIHsKICAgICBnX3ByaW50KCJwaXBlbGluZSBwYXJzaW5nIGVycm9yOiAlc1xuIiwgZXJyb3ItPm1lc3NhZ2UpOworICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgZ3N0X29iamVjdF91bnJlZiAocGlwZWxpbmUpOwogICAgIHJldHVybjsKICAgfQpAQCAtMjYyLDYgKzI2NSw3IEBACiAKICAgaWYgKGVycm9yKSB7CiAgICAgZ19wcmludCgicGlwZWxpbmUgcGFyc2luZyBlcnJvcjogJXNcbiIsIGVycm9yLT5tZXNzYWdlKTsKKyAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgIGdzdF9vYmplY3RfdW5yZWYgKHBpcGVsaW5lKTsKICAgICByZXR1cm47CiAgIH0KQEAgLTM3OCw2ICszODIsNyBAQAogCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX2Vycm9yIChtZXNzYWdlLCAmZXJyb3IsICZkZWJ1Zyk7CiAgICAgICAgIGdzdF9yZXBsYWNlX2hhbmRsZV9lcnJvciAocmVwbGFjZSwgZXJyb3IsIGRlYnVnKTsKKyAgICAgICAgZ19jbGVhcl9lcnJvciAoJmVycm9yKTsKICAgICAgIH0KICAgICAgIGJyZWFrOwogICAgIGNhc2UgR1NUX01FU1NBR0VfV0FSTklORzoKQEAgLTM4Nyw2ICszOTIsNyBAQAogCiAgICAgICAgIGdzdF9tZXNzYWdlX3BhcnNlX3dhcm5pbmcgKG1lc3NhZ2UsICZlcnJvciwgJmRlYnVnKTsKICAgICAgICAgZ3N0X3JlcGxhY2VfaGFuZGxlX3dhcm5pbmcgKHJlcGxhY2UsIGVycm9yLCBkZWJ1Zyk7CisgICAgICAgIGdfY2xlYXJfZXJyb3IgKCZlcnJvcik7CiAgICAgICB9CiAgICAgICBicmVhazsKICAgICBjYXNlIEdTVF9NRVNTQUdFX0lORk86CkBAIC0zOTYsNiArNDAyLDcgQEAKIAogICAgICAgICBnc3RfbWVzc2FnZV9wYXJzZV9pbmZvIChtZXNzYWdlLCAmZXJyb3IsICZkZWJ1Zyk7CiAgICAgICAgIGdzdF9yZXBsYWNlX2hhbmRsZV9pbmZvIChyZXBsYWNlLCBlcnJvciwgZGVidWcpOworICAgICAgICBnX2NsZWFyX2Vycm9yICgmZXJyb3IpOwogICAgICAgfQogICAgICAgYnJlYWs7CiAgICAgY2FzZSBHU1RfTUVTU0FHRV9UQUc6CmRpZmYgLS1naXQgYS90b29scy9nc3QtZWxlbWVudC1tYWtlciBiL3Rvb2xzL2dzdC1lbGVtZW50LW1ha2VyCmluZGV4IGZhY2IyNDIuLmNlZmQ2NGEgMTAwNzU1Ci0tLSBhL3Rvb2xzL2dzdC1lbGVtZW50LW1ha2VyCisrKyBiL3Rvb2xzL2dzdC1lbGVtZW50LW1ha2VyCkBAIC0xMTYsNyArMTE2LDcgQEAKICAqIDxyZWZzZWN0Mj4KICAqIDx0aXRsZT5FeGFtcGxlIGxhdW5jaCBsaW5lPC90aXRsZT4KICAqIHxbCi0gKiBnc3QtbGF1bmNoIC12IGZha2VzcmMgISAkcmVwbGFjZSAhIEZJWE1FICEgZmFrZXNpbmsKKyAqIGdzdC1sYXVuY2gtMS4wIC12IGZha2VzcmMgISAkcmVwbGFjZSAhIEZJWE1FICEgZmFrZXNpbmsKICAqIF18CiAgKiBGSVhNRSBEZXNjcmliZSB3aGF0IHRoZSBwaXBlbGluZSBkb2VzLgogICogPC9yZWZzZWN0Mj4KZGlmZiAtLWdpdCBhL3dpbjMyL01BTklGRVNUIGIvd2luMzIvTUFOSUZFU1QKaW5kZXggY2ZiYTNiMy4uMzVjNjQ0MyAxMDA2NDQKLS0tIGEvd2luMzIvTUFOSUZFU1QKKysrIGIvd2luMzIvTUFOSUZFU1QKQEAgLTEsOSArMSwyIEBACiB3aW4zMi9NQU5JRkVTVAogd2luMzIvY29tbW9uL2NvbmZpZy5oCi13aW4zMi92czYvZ3N0X3BsdWdpbnNfYmFkLmRzdwotd2luMzIvdnM2L2xpYmdzdGRzaG93LmRzcAotd2luMzIvdnM2L2xpYmdzdGRzaG93ZGVjd3JhcHBlci5kc3AKLXdpbjMyL3ZzNi9saWJnc3RmbHYuZHNwCi13aW4zMi92czYvbGliZ3N0bXBlZ3ZpZGVvcGFyc2UuZHNwCi13aW4zMi92czYvbGliZ3N0bmVvbi5kc3AKLXdpbjMyL3ZzOC9nc3QtcGx1Z2lucy1iYWQuc2xuCmRpZmYgLS1naXQgYS93aW4zMi9jb21tb24vY29uZmlnLmggYi93aW4zMi9jb21tb24vY29uZmlnLmgKaW5kZXggOWVhNTJkNC4uY2U3MjNjNyAxMDA2NDQKLS0tIGEvd2luMzIvY29tbW9uL2NvbmZpZy5oCisrKyBiL3dpbjMyL2NvbW1vbi9jb25maWcuaApAQCAtMzEsMTIgKzMxLDYgQEAKICAgIGxhbmd1YWdlIGlzIHJlcXVlc3RlZC4gKi8KICN1bmRlZiBFTkFCTEVfTkxTCiAKLS8qIFRoZSB4IGluIDIueCAqLwotI3VuZGVmIEZBQUQyX01JTk9SX1ZFUlNJT04KLQotLyogRGVmaW5lIGlmIEFBQyBpcyB1c2luZyBuZXcgYXBpIHByZWZpeCAqLwotI3VuZGVmIEZBQURfSVNfTkVBQUMKLQogLyogZ2V0dGV4dCBwYWNrYWdlIG5hbWUgKi8KICNkZWZpbmUgR0VUVEVYVF9QQUNLQUdFICJnc3QtcGx1Z2lucy1iYWQtMS4wIgogCkBAIC01NSwxMiArNDksMTggQEAKIC8qIEdTdHJlYW1lciBBUEkgVmVyc2lvbiAqLwogI2RlZmluZSBHU1RfQVBJX1ZFUlNJT04gIjEuMCIKIAorLyogRGVmaW5lIGlmIGV4dHJhIHJ1bnRpbWUgY2hlY2tzIHNob3VsZCBiZSBlbmFibGVkICovCisjdW5kZWYgR1NUX0VOQUJMRV9FWFRSQV9DSEVDS1MKKwogLyogRXh0cmEgcGxhdGZvcm0gc3BlY2lmaWMgcGx1Z2luIHN1ZmZpeCAqLwogI3VuZGVmIEdTVF9FWFRSQV9NT0RVTEVfU1VGRklYCiAKIC8qIERlZmluZWQgaWYgZ2NvdiBpcyBlbmFibGVkIHRvIGZvcmNlIGEgcmVidWlsZCBkdWUgdG8gY29uZmlnLmggY2hhbmdpbmcgKi8KICN1bmRlZiBHU1RfR0NPVl9FTkFCTEVECiAKKy8qIERNQUJVRiBhdmFpbGFibGUgZm9yIGdsIHBsdWdpbnMgKi8KKyN1bmRlZiBHU1RfR0xfSEFWRV9ETUFCVUYKKwogLyogRUdMIG1vZHVsZSBuYW1lICovCiAjdW5kZWYgR1NUX0dMX0xJQkVHTF9NT0RVTEVfTkFNRQogCkBAIC04OSw3ICs4OSw3IEBACiAjZGVmaW5lIEdTVF9QQUNLQUdFX09SSUdJTiAiVW5rbm93biBwYWNrYWdlIG9yaWdpbiIKIAogLyogR1N0cmVhbWVyIHBhY2thZ2UgcmVsZWFzZSBkYXRlL3RpbWUgZm9yIHBsdWdpbnMgYXMgWVlZWS1NTS1ERCAqLwotI2RlZmluZSBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FICIyMDE2LTAxLTIwIgorI2RlZmluZSBHU1RfUEFDS0FHRV9SRUxFQVNFX0RBVEVUSU1FICIyMDE2LTAzLTE1IgogCiAvKiBEZWZpbmUgaWYgc3RhdGljIHBsdWdpbnMgc2hvdWxkIGJlIGJ1aWx0ICovCiAjdW5kZWYgR1NUX1BMVUdJTl9CVUlMRF9TVEFUSUMKQEAgLTIzOCw3ICsyMzgsNyBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSBBQUMgZW5jb2RlciBwbHVnLWluICh1c2VkIGJ5IGZhYWMpLiAqLwogI3VuZGVmIEhBVkVfRkFBQwogCi0vKiBEZWZpbmUgdG8gZW5hYmxlIEFBQyBkZWNvZGVyIHBsdWctaW4gKHVzZWQgYnkgZmFhZCkuICovCisvKiBEZWZpbmUgdG8gZW5hYmxlIEZBQUQyIEFBQyBkZWNvZGVyIHBsdWctaW4gKHVzZWQgYnkgZmFhZCkuICovCiAjdW5kZWYgSEFWRV9GQUFECiAKIC8qIERlZmluZSB0byBlbmFibGUgbGludXggZnJhbWVidWZmZXIgKHVzZWQgYnkgZmJkZXZzaW5rKS4gKi8KQEAgLTI3NCw2ICsyNzQsOSBAQAogLyogRGVmaW5lIHRvIDEgaWYgdGhlIHN5c3RlbSBoYXMgdGhlIHR5cGUgYEdMZWdsSW1hZ2VPRVMnLiAqLwogI3VuZGVmIEhBVkVfR0xFR0xJTUFHRU9FUwogCisvKiBEZWZpbmUgdG8gMSBpZiB0aGUgc3lzdGVtIGhhcyB0aGUgdHlwZSBgR0xpbnQ2NCcuICovCisjdW5kZWYgSEFWRV9HTElOVDY0CisKIC8qIERlZmluZSB0byAxIGlmIHRoZSBzeXN0ZW0gaGFzIHRoZSB0eXBlIGBHTGludHB0cicuICovCiAjdW5kZWYgSEFWRV9HTElOVFBUUgogCkBAIC0yOTUsOSArMjk4LDYgQEAKIC8qIFVzZSBncmFwaGVuZSAqLwogI3VuZGVmIEhBVkVfR1JBUEhFTkUKIAotLyogRGVmaW5lIHRvIGVuYWJsZSBHU2V0dGluZ3MgcGx1Z2luICh1c2VkIGJ5IGdzZXR0aW5ncykuICovCi0jdW5kZWYgSEFWRV9HU0VUVElOR1MKLQogLyogRGVmaW5lIHRvIGVuYWJsZSBHU00gbGlicmFyeSAodXNlZCBieSBnc21lbmMgZ3NtZGVjKS4gKi8KICN1bmRlZiBIQVZFX0dTTQogCkBAIC0zNzksOSArMzc5LDYgQEAKIC8qIERlZmluZSB0byBlbmFibGUgbXBlZzJlbmMgKHVzZWQgYnkgbXBlZzJlbmMpLiAqLwogI3VuZGVmIEhBVkVfTVBFRzJFTkMKIAotLyogRGVmaW5lIHRvIGVuYWJsZSBtcGcxMjMgYXVkaW8gZGVjb2RlciAodXNlZCBieSBtcGcxMjMpLiAqLwotI3VuZGVmIEhBVkVfTVBHMTIzCi0KIC8qIERlZmluZSB0byBlbmFibGUgbXBsZXggKHVzZWQgYnkgbXBsZXgpLiAqLwogI3VuZGVmIEhBVkVfTVBMRVgKIApAQCAtNDA5LDYgKzQwNiwxMiBAQAogLyogRGVmaW5lIGlmIG5ldHRsZSBpcyBhdmFpbGFibGUgKi8KICN1bmRlZiBIQVZFX05FVFRMRQogCisvKiBEZWZpbmUgdG8gZW5hYmxlIE5WSURJQSBFbmNvZGUgQVBJICh1c2VkIGJ5IG52ZW5jKS4gKi8KKyN1bmRlZiBIQVZFX05WRU5DCisKKy8qIE5WRU5DIEdTdHJlYW1lciBPcGVuR0wgc3VwcG9ydCBhdmFpbGFibGUgKi8KKyN1bmRlZiBIQVZFX05WRU5DX0dTVF9HTAorCiAvKiBEZWZpbmUgdG8gZW5hYmxlIG9mYSBwbHVnaW5zICh1c2VkIGJ5IG9mYSkuICovCiAjdW5kZWYgSEFWRV9PRkEKIApAQCAtNTAxLDYgKzUwNCwxNSBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSBRdCBlbGVtZW50cyAodXNlZCBieSBxdCkuICovCiAjdW5kZWYgSEFWRV9RVAogCisvKiBEZWZpbmUgaWYgUXQgQW5kcm9pZCBpbnRlZ3JhdGlvbiBpcyBpbnN0YWxsZWQgKi8KKyN1bmRlZiBIQVZFX1FUX0FORFJPSUQKKworLyogRGVmaW5lIGlmIFF0IGlPUyBpbnRlZ3JhdGlvbiBpcyBpbnN0YWxsZWQgKi8KKyN1bmRlZiBIQVZFX1FUX0lPUworCisvKiBEZWZpbmUgaWYgUXQgTWFjIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLworI3VuZGVmIEhBVkVfUVRfTUFDCisKIC8qIERlZmluZSBpZiBRdCBXYXlsYW5kIGludGVncmF0aW9uIGlzIGluc3RhbGxlZCAqLwogI3VuZGVmIEhBVkVfUVRfV0FZTEFORAogCkBAIC01MTYsOSArNTI4LDYgQEAKIC8qIERlZmluZSB0byBlbmFibGUgcnN2ZyBkZWNvZGVyICh1c2VkIGJ5IHJzdmcpLiAqLwogI3VuZGVmIEhBVkVfUlNWRwogCi0vKiBIYXZlIFJTVkcgMi4zNi4yIG9yIG5ld2VyICovCi0jdW5kZWYgSEFWRV9SU1ZHXzJfMzZfMgotCiAvKiBEZWZpbmUgdG8gZW5hYmxlIHJ0bXAgbGlicmFyeSAodXNlZCBieSBydG1wKS4gKi8KICN1bmRlZiBIQVZFX1JUTVAKIApAQCAtNjAwLDYgKzYwOSw5IEBACiAvKiBEZWZpbmUgdG8gZW5hYmxlIHRpbWlkaXR5IG1pZGkgc29mdCBzeW50aCBwbHVnaW4gKHVzZWQgYnkgdGltaWRpdHkpLiAqLwogI3VuZGVmIEhBVkVfVElNSURJVFkKIAorLyogRGVmaW5lIHRvIGVuYWJsZSB0aW55YWxzYSAodXNlZCBieSB0aW55YWxzYSkuICovCisjdW5kZWYgSEFWRV9USU5ZQUxTQQorCiAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHVuaXN0ZC5oPiBoZWFkZXIgZmlsZS4gKi8KICN1bmRlZiBIQVZFX1VOSVNURF9ICiAKQEAgLTYyNyw2ICs2MzksOSBAQAogLyogRGVmaW5lIHRvIGVuYWJsZSB2by1hbXJ3YmVuYyBsaWJyYXJ5ICh1c2VkIGJ5IHZvLWFtcndiZW5jKS4gKi8KICN1bmRlZiBIQVZFX1ZPQU1SV0JFTkMKIAorLyogRGVmaW5lIHRvIGVuYWJsZSBWdWxrYW4gZWxlbWVudHMgKHVzZWQgYnkgdnVsa2FuKS4gKi8KKyN1bmRlZiBIQVZFX1ZVTEtBTgorCiAvKiBEZWZpbmUgdG8gZW5hYmxlIFdBU0FQSSBwbHVnLWluICh1c2VkIGJ5IHdhc2FwaSkuICovCiAjdW5kZWYgSEFWRV9XQVNBUEkKIApAQCAtNjk0LDggKzcwOSw3IEBACiAvKiBnZXR0ZXh0IGxvY2FsZSBkaXIgKi8KICNkZWZpbmUgTE9DQUxFRElSIFBSRUZJWCAiXFxzaGFyZVxcbG9jYWxlIgogCi0vKiBEZWZpbmUgdG8gdGhlIHN1Yi1kaXJlY3RvcnkgaW4gd2hpY2ggbGlidG9vbCBzdG9yZXMgdW5pbnN0YWxsZWQgbGlicmFyaWVzLgotICAgKi8KKy8qIERlZmluZSB0byB0aGUgc3ViLWRpcmVjdG9yeSB3aGVyZSBsaWJ0b29sIHN0b3JlcyB1bmluc3RhbGxlZCBsaWJyYXJpZXMuICovCiAjdW5kZWYgTFRfT0JKRElSCiAKIC8qIERlZmluZSBpZiB0aGUgb2xkIE11c2VQYWNrIEFQSSBpcyB1c2VkICovCkBAIC03MTcsNyArNzMxLDcgQEAKICNkZWZpbmUgUEFDS0FHRV9OQU1FICJHU3RyZWFtZXIgQmFkIFBsdWctaW5zIgogCiAvKiBEZWZpbmUgdG8gdGhlIGZ1bGwgbmFtZSBhbmQgdmVyc2lvbiBvZiB0aGlzIHBhY2thZ2UuICovCi0jZGVmaW5lIFBBQ0tBR0VfU1RSSU5HICJHU3RyZWFtZXIgQmFkIFBsdWctaW5zIDEuNi4zIgorI2RlZmluZSBQQUNLQUdFX1NUUklORyAiR1N0cmVhbWVyIEJhZCBQbHVnLWlucyAxLjcuOTEiCiAKIC8qIERlZmluZSB0byB0aGUgb25lIHN5bWJvbCBzaG9ydCBuYW1lIG9mIHRoaXMgcGFja2FnZS4gKi8KICNkZWZpbmUgUEFDS0FHRV9UQVJOQU1FICJnc3QtcGx1Z2lucy1iYWQiCkBAIC03MjYsNyArNzQwLDcgQEAKICN1bmRlZiBQQUNLQUdFX1VSTAogCiAvKiBEZWZpbmUgdG8gdGhlIHZlcnNpb24gb2YgdGhpcyBwYWNrYWdlLiAqLwotI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEuNi4zIgorI2RlZmluZSBQQUNLQUdFX1ZFUlNJT04gIjEuNy45MSIKIAogLyogZGlyZWN0b3J5IHdoZXJlIHBsdWdpbnMgYXJlIGxvY2F0ZWQgKi8KICNpZmRlZiBfREVCVUcKQEAgLTc3MCw3ICs3ODQsNyBAQAogI3VuZGVmIFVTRV9FR0xfUlBJCiAKIC8qIFZlcnNpb24gbnVtYmVyIG9mIHBhY2thZ2UgKi8KLSNkZWZpbmUgVkVSU0lPTiAiMS42LjMiCisjZGVmaW5lIFZFUlNJT04gIjEuNy45MSIKIAogLyogRGVmaW5lIFdPUkRTX0JJR0VORElBTiB0byAxIGlmIHlvdXIgcHJvY2Vzc29yIHN0b3JlcyB3b3JkcyB3aXRoIHRoZSBtb3N0CiAgICBzaWduaWZpY2FudCBieXRlIGZpcnN0IChsaWtlIE1vdG9yb2xhIGFuZCBTUEFSQywgdW5saWtlIEludGVsKS4gKi8KZGlmZiAtLWdpdCBhL3dpbjMyL3ZzNi9nc3RfcGx1Z2luc19iYWQuZHN3IGIvd2luMzIvdnM2L2dzdF9wbHVnaW5zX2JhZC5kc3cKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkMGM5YjUuLjAwMDAwMDAKLS0tIGEvd2luMzIvdnM2L2dzdF9wbHVnaW5zX2JhZC5kc3cKKysrIC9kZXYvbnVsbApAQCAtMSw2NSArMCwwIEBACi1NaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBXb3Jrc3BhY2UgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgV0FSTklORzogRE8gTk9UIEVESVQgT1IgREVMRVRFIFRISVMgV09SS1NQQUNFIEZJTEUhDQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJnc3RjZHhhcGFyc2UiPSIuXGxpYmdzdGNkeGFwYXJzZS5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJnc3RmbHYiPSIuXGxpYmdzdGZsdi5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLVByb2plY3Q6ICJsaWJnc3RtcGVndmlkZW9wYXJzZSI9Ii5cbGliZ3N0bXBlZ3ZpZGVvcGFyc2UuZHNwIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotDQotUGFja2FnZT08NT4NCi17e3sNCi19fX0NCi0NCi1QYWNrYWdlPTw0Pg0KLXt7ew0KLX19fQ0KLQ0KLSMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMNCi0NCi1Qcm9qZWN0OiAibGliZ3N0bmVvbiI9Ii5cbGliZ3N0bmVvbi5kc3AiIC0gUGFja2FnZSBPd25lcj08ND4NCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDQ+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KLUdsb2JhbDoNCi0NCi1QYWNrYWdlPTw1Pg0KLXt7ew0KLX19fQ0KLQ0KLVBhY2thZ2U9PDM+DQote3t7DQotfX19DQotDQotIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIw0KLQ0KZGlmZiAtLWdpdCBhL3dpbjMyL3ZzNi9saWJnc3Rkc2hvdy5kc3AgYi93aW4zMi92czYvbGliZ3N0ZHNob3cuZHNwCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTkxNzQ5Li4wMDAwMDAwCi0tLSBhL3dpbjMyL3ZzNi9saWJnc3Rkc2hvdy5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJsaWJnc3Rkc2hvdyIgLSBQYWNrYWdlIE93bmVyPTw0Pg0KLSMgTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gR2VuZXJhdGVkIEJ1aWxkIEZpbGUsIEZvcm1hdCBWZXJzaW9uIDYuMDANCi0jICoqIERPIE5PVCBFRElUICoqDQotDQotIyBUQVJHVFlQRSAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiIDB4MDEwMg0KLQ0KLUNGRz1saWJnc3Rkc2hvdyAtIFdpbjMyIERlYnVnDQotIU1FU1NBR0UgVGhpcyBpcyBub3QgYSB2YWxpZCBtYWtlZmlsZS4gVG8gYnVpbGQgdGhpcyBwcm9qZWN0IHVzaW5nIE5NQUtFLA0KLSFNRVNTQUdFIHVzZSB0aGUgRXhwb3J0IE1ha2VmaWxlIGNvbW1hbmQgYW5kIHJ1bg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJsaWJnc3Rkc2hvdy5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0ZHNob3cubWFrIiBDRkc9ImxpYmdzdGRzaG93IC0gV2luMzIgRGVidWciDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgUG9zc2libGUgY2hvaWNlcyBmb3IgY29uZmlndXJhdGlvbiBhcmU6DQotIU1FU1NBR0UgDQotIU1FU1NBR0UgImxpYmdzdGRzaG93IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgImxpYmdzdGRzaG93IC0gV2luMzIgRGVidWciIChiYXNlZCBvbiAiV2luMzIgKHg4NikgRHluYW1pYy1MaW5rIExpYnJhcnkiKQ0KLSFNRVNTQUdFIA0KLQ0KLSMgQmVnaW4gUHJvamVjdA0KLSMgUFJPUCBBbGxvd1BlckNvbmZpZ0RlcGVuZGVuY2llcyAwDQotIyBQUk9QIFNjY19Qcm9qTmFtZSAiIg0KLSMgUFJPUCBTY2NfTG9jYWxQYXRoICIiDQotQ1BQPWNsLmV4ZQ0KLU1UTD1taWRsLmV4ZQ0KLVJTQz1yYy5leGUNCi0NCi0hSUYgICIkKENGRykiID09ICJsaWJnc3Rkc2hvdyAtIFdpbjMyIFJlbGVhc2UiDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVCAvVzMgL0dYIC9PMiAvRCAiV0lOMzIiIC9EICJOREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVERTSE9XX0VYUE9SVFMiIC9ZdSJzdGRhZnguaCIgL0ZEIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCRFNIT1dfRVhQT1JUUyIgL1l1InN0ZGFmeC5oIiAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBsaWJnc3RyZWFtZXItMC4xMC5saWIgZ2xpYi0yLjAubGliIEM6XERYOTBTREtcU2FtcGxlc1xDKytcRGlyZWN0U2hvd1xCYXNlQ2xhc3Nlc1xSZWxlYXNlXHN0cm1iYXNlLmxpYiBxdWFydHoubGliIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiBjb21kbGczMi5saWIgb2xlMzIubGliIHdpbm1tLmxpYiBtc2FjbTMyLmxpYiBvbGVwcm8zMi5saWIgdXVpZC5saWIgc3RybWlpZHMubGliIGFkdmFwaTMyLmxpYiBvbGVwcm8zMi5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL291dDoiUmVsZWFzZS9saWJnc3Rkc2hvdy0wLjEwLmRsbCINCi0jIFNVQlRSQUNUIExJTkszMiAvbm9kZWZhdWx0bGliDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cUmVsZWFzZVxsaWJnc3Rkc2hvdy0wLjEwLmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcYmluDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93IC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1REU0hPV19FWFBPUlRTIiAvWXUic3RkYWZ4LmgiIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJEU0hPV19FWFBPUlRTIiAvWXUic3RkYWZ4LmgiIC9GRCAvR1ogL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBsaWJnc3RyZWFtZXItMC4xMC5saWIgZ2xpYi0yLjBELmxpYiBzdHJtYmFzZC5saWIgcXVhcnR6LmxpYiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgY29tZGxnMzIubGliIG9sZTMyLmxpYiB3aW5tbS5saWIgbXNhY20zMi5saWIgb2xlcHJvMzIubGliIG9sZWF1dDMyLmxpYiBhZHZhcGkzMi5saWIgdXVpZC5saWIgc3RybWlpZHMubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvb3V0OiJEZWJ1Zy9saWJnc3Rkc2hvdy0wLjEwLmRsbCIgL3BkYnR5cGU6c2VwdA0KLSMgU1VCVFJBQ1QgTElOSzMyIC9ub2RlZmF1bHRsaWINCi0jIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbA0KLVRhcmdldFBhdGg9LlxEZWJ1Z1xsaWJnc3Rkc2hvdy0wLjEwLmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcZGVidWdcYmluDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJsaWJnc3Rkc2hvdyAtIFdpbjMyIFJlbGVhc2UiDQotIyBOYW1lICJsaWJnc3Rkc2hvdyAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cZ3N0LWxpYnNcZ3N0XGRzaG93XGdzdGRzaG93LmNwcCINCi0jIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cZ3N0LWxpYnNcZ3N0XGRzaG93XGdzdGRzaG93ZmFrZXNpbmsuY3BwIg0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWCAvWWMgL1l1DQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3dmYWtlc3JjLmNwcCINCi0jIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cZ3N0LWxpYnNcZ3N0XGRzaG93XGdzdGRzaG93aW50ZXJmYWNlLmNwcCINCi0jIFNVQlRSQUNUIENQUCAvWVggL1ljIC9ZdQ0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlxjb21tb25cbGliZ3N0ZHNob3cuZGVmDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cZ3N0LWxpYnNcZ3N0XGRzaG93XGdzdGRzaG93LmgiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPSIuLlwuLlxnc3QtbGlic1xnc3RcZHNob3dcZ3N0ZHNob3dmYWtlc2luay5oIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cZ3N0LWxpYnNcZ3N0XGRzaG93XGdzdGRzaG93ZmFrZXNyYy5oIg0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0iLi5cLi5cZ3N0LWxpYnNcZ3N0XGRzaG93XGdzdGRzaG93aW50ZXJmYWNlLmgiDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLSMgRW5kIEdyb3VwDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL3ZzNi9saWJnc3Rkc2hvd2RlY3dyYXBwZXIuZHNwIGIvd2luMzIvdnM2L2xpYmdzdGRzaG93ZGVjd3JhcHBlci5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2NjM1ZDYuLjAwMDAwMDAKLS0tIGEvd2luMzIvdnM2L2xpYmdzdGRzaG93ZGVjd3JhcHBlci5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxNjQgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9bGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgImxpYmdzdGRzaG93ZGVjd3JhcHBlci5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0ZHNob3dkZWN3cmFwcGVyLm1hayIgQ0ZHPSJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLUNQUD1jbC5leGUNCi1NVEw9bWlkbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NURFNIT1dERUNXUkFQUEVSX0VYUE9SVFMiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uL2NvbW1vbiIgL0kgIi4uLy4uL2dzdC1saWJzL2dzdCIgL0QgIk5ERUJVRyIgL0QgIldJTjMyIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJIQVZFX0NPTkZJR19IIiAvRCAiQ09CSk1BQ1JPUyIgL0QgIl9XSU4zMl9EQ09NIiAvWVggL0ZEIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDBjIC9kICJOREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDBjIC9kICJOREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYNCi0jIEFERCBMSU5LMzIgbGliZ3N0ZHNob3ctMC4xMC5saWIgbGliZ3N0cmVhbWVyLTAuMTAubGliIGxpYmdzdGJhc2UtMC4xMC5saWIgbGliZ3N0YXVkaW8tMC4xMC5saWIgbGliZ3N0aW50ZXJmYWNlcy0wLjEwLmxpYiBnbGliLTIuMC5saWIgZ29iamVjdC0yLjAubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgUnBjcnQ0LmxpYiBTdHJtaWlkcy5saWIgU3RybWJhc2QubGliIHVzZXIzMi5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL2xpYnBhdGg6Ii4vcmVsZWFzZS8iIC9saWJwYXRoOiIuLi8uLi8uLi9nc3RyZWFtZXIvd2luMzIvdnM2L3JlbGVhc2UiIC9saWJwYXRoOiIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL3dpbjMyL3ZzNi9yZWxlYXNlIg0KLSMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sDQotVGFyZ2V0UGF0aD0uXFJlbGVhc2VcbGliZ3N0ZHNob3dkZWN3cmFwcGVyLmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcbGliXGdzdHJlYW1lci0wLjEwDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NURFNIT1dERUNXUkFQUEVSX0VYUE9SVFMiIC9ZWCAvRkQgL0daIC9jDQotIyBBREQgQ1BQIC9ub2xvZ28gL01EZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9JICIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL2dzdC1saWJzIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyL2xpYnMiIC9JICIuLi9jb21tb24iIC9JICIuLi8uLi9nc3QtbGlicy9nc3QiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiSEFWRV9DT05GSUdfSCIgL0QgIkNPQkpNQUNST1MiIC9EICJfV0lOMzJfRENPTSIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBsaWJnc3Rkc2hvdy0wLjEwLmxpYiBsaWJnc3RyZWFtZXItMC4xMC5saWIgbGliZ3N0YmFzZS0wLjEwLmxpYiBsaWJnc3RhdWRpby0wLjEwLmxpYiBsaWJnc3RpbnRlcmZhY2VzLTAuMTAubGliIGdsaWItMi4wRC5saWIgZ29iamVjdC0yLjBELmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIFJwY3J0NC5saWIgU3RybWlpZHMubGliIFN0cm1iYXNkLmxpYiB1c2VyMzIubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuL2RlYnVnIiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0cmVhbWVyL3dpbjMyL3ZzNi9kZWJ1ZyIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2Uvd2luMzIvdnM2L2RlYnVnIg0KLSMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sDQotVGFyZ2V0UGF0aD0uXERlYnVnXGxpYmdzdGRzaG93ZGVjd3JhcHBlci5kbGwNCi1TT1VSQ0U9IiQoSW5wdXRQYXRoKSINCi1Qb3N0QnVpbGRfQ21kcz1jb3B5IC9ZICQoVGFyZ2V0UGF0aCkgYzpcZ3N0cmVhbWVyXGRlYnVnXGxpYlxnc3RyZWFtZXItMC4xMA0KLSMgRW5kIFNwZWNpYWwgQnVpbGQgVG9vbA0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAibGliZ3N0ZHNob3dkZWN3cmFwcGVyIC0gV2luMzIgUmVsZWFzZSINCi0jIE5hbWUgImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxzeXNcZHNob3dkZWN3cmFwcGVyXGdzdGRzaG93YXVkaW9kZWMuYw0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIFJlbGVhc2UiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLQ0KLSFFTkRJRiANCi0NCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cc3lzXGRzaG93ZGVjd3JhcHBlclxnc3Rkc2hvd2RlY3dyYXBwZXIuYw0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIFJlbGVhc2UiDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdGRzaG93ZGVjd3JhcHBlciAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgU1VCVFJBQ1QgQ1BQIC9ZWA0KLQ0KLSFFTkRJRiANCi0NCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cc3lzXGRzaG93ZGVjd3JhcHBlclxnc3Rkc2hvd3ZpZGVvZGVjLmMNCi0NCi0hSUYgICIkKENGRykiID09ICJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIgLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJsaWJnc3Rkc2hvd2RlY3dyYXBwZXIgLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0NCi0hRU5ESUYgDQotDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxzeXNcZHNob3dkZWN3cmFwcGVyXGdzdGRzaG93YXVkaW9kZWMuaA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxzeXNcZHNob3dkZWN3cmFwcGVyXGdzdGRzaG93ZGVjd3JhcHBlci5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXHN5c1xkc2hvd2RlY3dyYXBwZXJcZ3N0ZHNob3d2aWRlb2RlYy5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLSMgRW5kIEdyb3VwDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL3ZzNi9saWJnc3RmbHYuZHNwIGIvd2luMzIvdnM2L2xpYmdzdGZsdi5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMjA3YWIuLjAwMDAwMDAKLS0tIGEvd2luMzIvdnM2L2xpYmdzdGZsdi5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjkgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJsaWJnc3RmbHYiIC0gUGFja2FnZSBPd25lcj08ND4NCi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIEdlbmVyYXRlZCBCdWlsZCBGaWxlLCBGb3JtYXQgVmVyc2lvbiA2LjAwDQotIyAqKiBETyBOT1QgRURJVCAqKg0KLQ0KLSMgVEFSR1RZUEUgIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IiAweDAxMDINCi0NCi1DRkc9bGliZ3N0Zmx2IC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgImxpYmdzdGZsdi5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0Zmx2Lm1hayIgQ0ZHPSJsaWJnc3RmbHYgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAibGliZ3N0Zmx2IC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgImxpYmdzdGZsdiAtIFdpbjMyIERlYnVnIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSANCi0NCi0jIEJlZ2luIFByb2plY3QNCi0jIFBST1AgQWxsb3dQZXJDb25maWdEZXBlbmRlbmNpZXMgMA0KLSMgUFJPUCBTY2NfUHJvak5hbWUgIiINCi0jIFBST1AgU2NjX0xvY2FsUGF0aCAiIg0KLUNQUD1jbC5leGUNCi1NVEw9bWlkbC5leGUNCi1SU0M9cmMuZXhlDQotDQotIUlGICAiJChDRkcpIiA9PSAibGliZ3N0Zmx2IC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NURkxWX0VYUE9SVFMiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uL2dzdC1saWJzIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyIiAvSSAiLi4vY29tbW9uIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyL2xpYnMiIC9JICIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL2dzdC1saWJzIiAvRCAiTkRFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVEZMVl9FWFBPUlRTIiAvRCAiSEFWRV9DT05GSUdfSCIgL1lYIC9GRCAvYw0KLSMgQUREIEJBU0UgTVRMIC9ub2xvZ28gL0QgIk5ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBCQVNFIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLSMgQUREIFJTQyAvbCAweDQwYyAvZCAiTkRFQlVHIg0KLUJTQzMyPWJzY21ha2UuZXhlDQotIyBBREQgQkFTRSBCU0MzMiAvbm9sb2dvDQotIyBBREQgQlNDMzIgL25vbG9nbw0KLUxJTkszMj1saW5rLmV4ZQ0KLSMgQUREIEJBU0UgTElOSzMyIGtlcm5lbDMyLmxpYiB1c2VyMzIubGliIGdkaTMyLmxpYiB3aW5zcG9vbC5saWIgY29tZGxnMzIubGliIGFkdmFwaTMyLmxpYiBzaGVsbDMyLmxpYiBvbGUzMi5saWIgb2xlYXV0MzIubGliIHV1aWQubGliIG9kYmMzMi5saWIgb2RiY2NwMzIubGliIC9ub2xvZ28gL2RsbCAvbWFjaGluZTpJMzg2DQotIyBBREQgTElOSzMyIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBsaWJnc3RiYXNlLTAuMTAubGliIGdsaWItMi4wLmxpYiBnb2JqZWN0LTIuMC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdHJlYW1lci93aW4zMi92czYvcmVsZWFzZSIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2Uvd2luMzIvdnM2L3JlbGVhc2UiIC9saWJwYXRoOiIuL3JlbGVhc2UiDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cUmVsZWFzZVxsaWJnc3RmbHYuZGxsDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotUG9zdEJ1aWxkX0NtZHM9Y29weSAvWSAkKFRhcmdldFBhdGgpIGM6XGdzdHJlYW1lclxsaWJcZ3N0cmVhbWVyLTAuMTANCi0jIEVuZCBTcGVjaWFsIEJ1aWxkIFRvb2wNCi0NCi0hRUxTRUlGICAiJChDRkcpIiA9PSAibGliZ3N0Zmx2IC0gV2luMzIgRGVidWciDQotDQotIyBQUk9QIEJBU0UgVXNlX01GQyAwDQotIyBQUk9QIEJBU0UgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIEJBU0UgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAxDQotIyBQUk9QIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVRkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0QgIldJTjMyIiAvRCAiX0RFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1RGTFZfRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uL2dzdC1saWJzIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyIiAvSSAiLi4vY29tbW9uIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyL2xpYnMiIC9JICIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL2dzdC1saWJzIiAvRCAiX0RFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVEZMVl9FWFBPUlRTIiAvRCAiSEFWRV9DT05GSUdfSCIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBsaWJnc3RyZWFtZXItMC4xMC5saWIgbGliZ3N0YmFzZS0wLjEwLmxpYiBnbGliLTIuMEQubGliIGdvYmplY3QtMi4wRC5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdHJlYW1lci93aW4zMi92czYvZGVidWciIC9saWJwYXRoOiIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL3dpbjMyL3ZzNi9kZWJ1ZyIgL2xpYnBhdGg6Ii4vZGVidWciDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cRGVidWdcbGliZ3N0Zmx2LmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcZGVidWdcbGliXGdzdHJlYW1lci0wLjEwDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVORElGIA0KLQ0KLSMgQmVnaW4gVGFyZ2V0DQotDQotIyBOYW1lICJsaWJnc3RmbHYgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAibGliZ3N0Zmx2IC0gV2luMzIgRGVidWciDQotIyBCZWdpbiBHcm91cCAiU291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiY3BwO2M7Y3h4O3JjO2RlZjtyO29kbDtpZGw7aHBqO2JhdCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGdzdFxmbHZcZ3N0Zmx2ZGVtdXguYw0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxnc3RcZmx2XGdzdGZsdnBhcnNlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGdzdFxmbHZcZ3N0Zmx2ZGVtdXguaA0KLSMgRW5kIFNvdXJjZSBGaWxlDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxnc3RcZmx2XGdzdGZsdnBhcnNlLmgNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiUmVzb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJpY287Y3VyO2JtcDtkbGc7cmMyO3JjdDtiaW47cmdzO2dpZjtqcGc7anBlZztqcGUiDQotIyBFbmQgR3JvdXANCi0jIEVuZCBUYXJnZXQNCi0jIEVuZCBQcm9qZWN0DQpkaWZmIC0tZ2l0IGEvd2luMzIvdnM2L2xpYmdzdG1wZWd2aWRlb3BhcnNlLmRzcCBiL3dpbjMyL3ZzNi9saWJnc3RtcGVndmlkZW9wYXJzZS5kc3AKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2MzdlNDAuLjAwMDAwMDAKLS0tIGEvd2luMzIvdnM2L2xpYmdzdG1wZWd2aWRlb3BhcnNlLmRzcAorKysgL2Rldi9udWxsCkBAIC0xLDEzMSArMCwwIEBACi0jIE1pY3Jvc29mdCBEZXZlbG9wZXIgU3R1ZGlvIFByb2plY3QgRmlsZSAtIE5hbWU9ImxpYmdzdG1wZWd2aWRlb3BhcnNlIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPWxpYmdzdG1wZWd2aWRlb3BhcnNlIC0gV2luMzIgRGVidWcNCi0hTUVTU0FHRSBUaGlzIGlzIG5vdCBhIHZhbGlkIG1ha2VmaWxlLiBUbyBidWlsZCB0aGlzIHByb2plY3QgdXNpbmcgTk1BS0UsDQotIU1FU1NBR0UgdXNlIHRoZSBFeHBvcnQgTWFrZWZpbGUgY29tbWFuZCBhbmQgcnVuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgTk1BS0UgL2YgImxpYmdzdG1wZWd2aWRlb3BhcnNlLm1hayIuDQotIU1FU1NBR0UgDQotIU1FU1NBR0UgWW91IGNhbiBzcGVjaWZ5IGEgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgTk1BS0UNCi0hTUVTU0FHRSBieSBkZWZpbmluZyB0aGUgbWFjcm8gQ0ZHIG9uIHRoZSBjb21tYW5kIGxpbmUuIEZvciBleGFtcGxlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIE5NQUtFIC9mICJsaWJnc3RtcGVndmlkZW9wYXJzZS5tYWsiIENGRz0ibGliZ3N0bXBlZ3ZpZGVvcGFyc2UgLSBXaW4zMiBEZWJ1ZyINCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBQb3NzaWJsZSBjaG9pY2VzIGZvciBjb25maWd1cmF0aW9uIGFyZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSAibGliZ3N0bXBlZ3ZpZGVvcGFyc2UgLSBXaW4zMiBSZWxlYXNlIiAoYmFzZWQgb24gIldpbjMyICh4ODYpIER5bmFtaWMtTGluayBMaWJyYXJ5IikNCi0hTUVTU0FHRSAibGliZ3N0bXBlZ3ZpZGVvcGFyc2UgLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotTVRMPW1pZGwuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdG1wZWd2aWRlb3BhcnNlIC0gV2luMzIgUmVsZWFzZSINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJSZWxlYXNlIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgVGFyZ2V0X0RpciAiIg0KLSMgUFJPUCBVc2VfTUZDIDANCi0jIFBST1AgVXNlX0RlYnVnX0xpYnJhcmllcyAwDQotIyBQUk9QIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UIC9XMyAvR1ggL08yIC9EICJXSU4zMiIgL0QgIk5ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NUTVBFR1ZJREVPUEFSU0VfRVhQT1JUUyIgL1lYIC9GRCAvYw0KLSMgQUREIENQUCAvbm9sb2dvIC9NRCAvVzMgL08yIC9JICIuLyIgL0kgIi4uLy4uL2dzdC1saWJzIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyIiAvSSAiLi4vY29tbW9uIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyL2xpYnMiIC9JICIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL2dzdC1saWJzIiAvRCAiTkRFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVE1QRUdWSURFT1BBUlNFX0VYUE9SVFMiIC9EICJIQVZFX0NPTkZJR19IIiAvRkQgL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiBsaWJnc3RyaWZmLTAuMTAubGliIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBsaWJnc3RiYXNlLTAuMTAubGliIGdsaWItMi4wLmxpYiBnb2JqZWN0LTIuMC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdHJlYW1lci93aW4zMi92czYvcmVsZWFzZSIgL2xpYnBhdGg6Ii4vcmVsZWFzZSIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2Uvd2luMzIvdnM2L3JlbGVhc2UiDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cUmVsZWFzZVxsaWJnc3RtcGVndmlkZW9wYXJzZS5kbGwNCi1TT1VSQ0U9IiQoSW5wdXRQYXRoKSINCi1Qb3N0QnVpbGRfQ21kcz1jb3B5IC9ZICQoVGFyZ2V0UGF0aCkgYzpcZ3N0cmVhbWVyXGxpYlxnc3RyZWFtZXItMC4xMA0KLSMgRW5kIFNwZWNpYWwgQnVpbGQgVG9vbA0KLQ0KLSFFTFNFSUYgICIkKENGRykiID09ICJsaWJnc3RtcGVndmlkZW9wYXJzZSAtIFdpbjMyIERlYnVnIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBCQVNFIFRhcmdldF9EaXIgIiINCi0jIFBST1AgVXNlX01GQyAwDQotIyBQUk9QIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMQ0KLSMgUFJPUCBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiRGVidWciDQotIyBQUk9QIElnbm9yZV9FeHBvcnRfTGliIDANCi0jIFBST1AgVGFyZ2V0X0RpciAiIg0KLSMgQUREIEJBU0UgQ1BQIC9ub2xvZ28gL01UZCAvVzMgL0dtIC9HWCAvWkkgL09kIC9EICJXSU4zMiIgL0QgIl9ERUJVRyIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NUTVBFR1ZJREVPUEFSU0VfRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL1pJIC9PZCAvSSAiLi4vLi4vZ3N0LWxpYnMiIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIiIC9JICIuLi9jb21tb24iIC9JICIuLi8uLi8uLi9nc3RyZWFtZXIvbGlicyIgL0kgIi4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2UvZ3N0LWxpYnMiIC9EICJfREVCVUciIC9EICJXSU4zMiIgL0QgIl9XSU5ET1dTIiAvRCAiX01CQ1MiIC9EICJfVVNSRExMIiAvRCAiTElCR1NUTVBFR1ZJREVPUEFSU0VfRVhQT1JUUyIgL0QgIkhBVkVfQ09ORklHX0giIC9GRCAvR1ogL2MNCi0jIFNVQlRSQUNUIENQUCAvWVgNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJfREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIl9ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdA0KLSMgQUREIExJTkszMiBsaWJnc3RyaWZmLTAuMTAubGliIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBsaWJnc3RiYXNlLTAuMTAubGliIGdsaWItMi4wRC5saWIgZ29iamVjdC0yLjBELmxpYiAvbm9sb2dvIC9kbGwgL2RlYnVnIC9tYWNoaW5lOkkzODYgL3BkYnR5cGU6c2VwdCAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0cmVhbWVyL3dpbjMyL3ZzNi9kZWJ1ZyIgL2xpYnBhdGg6Ii4vZGVidWciIC9saWJwYXRoOiIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL3dpbjMyL3ZzNi9kZWJ1ZyINCi0jIEJlZ2luIFNwZWNpYWwgQnVpbGQgVG9vbA0KLVRhcmdldFBhdGg9LlxEZWJ1Z1xsaWJnc3RtcGVndmlkZW9wYXJzZS5kbGwNCi1TT1VSQ0U9IiQoSW5wdXRQYXRoKSINCi1Qb3N0QnVpbGRfQ21kcz1jb3B5IC9ZICQoVGFyZ2V0UGF0aCkgYzpcZ3N0cmVhbWVyXGRlYnVnXGxpYlxnc3RyZWFtZXItMC4xMA0KLSMgRW5kIFNwZWNpYWwgQnVpbGQgVG9vbA0KLQ0KLSFFTkRJRiANCi0NCi0jIEJlZ2luIFRhcmdldA0KLQ0KLSMgTmFtZSAibGliZ3N0bXBlZ3ZpZGVvcGFyc2UgLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAibGliZ3N0bXBlZ3ZpZGVvcGFyc2UgLSBXaW4zMiBEZWJ1ZyINCi0jIEJlZ2luIEdyb3VwICJTb3VyY2UgRmlsZXMiDQotDQotIyBQUk9QIERlZmF1bHRfRmlsdGVyICJjcHA7YztjeHg7cmM7ZGVmO3I7b2RsO2lkbDtocGo7YmF0Ig0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cZ3N0XG1wZWd2aWRlb3BhcnNlXG1wZWdwYWNrZXRpc2VyLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgQmVnaW4gU291cmNlIEZpbGUNCi0NCi1TT1VSQ0U9Li5cLi5cZ3N0XG1wZWd2aWRlb3BhcnNlXG1wZWd2aWRlb3BhcnNlLmMNCi0jIEVuZCBTb3VyY2UgRmlsZQ0KLSMgRW5kIEdyb3VwDQotIyBCZWdpbiBHcm91cCAiSGVhZGVyIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaDtocHA7aHh4O2htO2lubCINCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGdzdFxtcGVndmlkZW9wYXJzZVxtcGVncGFja2V0aXNlci5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEJlZ2luIFNvdXJjZSBGaWxlDQotDQotU09VUkNFPS4uXC4uXGdzdFxtcGVndmlkZW9wYXJzZVxtcGVndmlkZW9wYXJzZS5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLSMgRW5kIEdyb3VwDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL3ZzNi9saWJnc3RuZW9uLmRzcCBiL3dpbjMyL3ZzNi9saWJnc3RuZW9uLmRzcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5NjJiOS4uMDAwMDAwMAotLS0gYS93aW4zMi92czYvbGliZ3N0bmVvbi5kc3AKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBQcm9qZWN0IEZpbGUgLSBOYW1lPSJsaWJnc3RuZW9uIiAtIFBhY2thZ2UgT3duZXI9PDQ+DQotIyBNaWNyb3NvZnQgRGV2ZWxvcGVyIFN0dWRpbyBHZW5lcmF0ZWQgQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMA0KLSMgKiogRE8gTk9UIEVESVQgKioNCi0NCi0jIFRBUkdUWVBFICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIgMHgwMTAyDQotDQotQ0ZHPWxpYmdzdG5lb24gLSBXaW4zMiBEZWJ1Zw0KLSFNRVNTQUdFIFRoaXMgaXMgbm90IGEgdmFsaWQgbWFrZWZpbGUuIFRvIGJ1aWxkIHRoaXMgcHJvamVjdCB1c2luZyBOTUFLRSwNCi0hTUVTU0FHRSB1c2UgdGhlIEV4cG9ydCBNYWtlZmlsZSBjb21tYW5kIGFuZCBydW4NCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0bmVvbi5tYWsiLg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFlvdSBjYW4gc3BlY2lmeSBhIGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIE5NQUtFDQotIU1FU1NBR0UgYnkgZGVmaW5pbmcgdGhlIG1hY3JvIENGRyBvbiB0aGUgY29tbWFuZCBsaW5lLiBGb3IgZXhhbXBsZToNCi0hTUVTU0FHRSANCi0hTUVTU0FHRSBOTUFLRSAvZiAibGliZ3N0bmVvbi5tYWsiIENGRz0ibGliZ3N0bmVvbiAtIFdpbjMyIERlYnVnIg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFIFBvc3NpYmxlIGNob2ljZXMgZm9yIGNvbmZpZ3VyYXRpb24gYXJlOg0KLSFNRVNTQUdFIA0KLSFNRVNTQUdFICJsaWJnc3RuZW9uIC0gV2luMzIgUmVsZWFzZSIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgImxpYmdzdG5lb24gLSBXaW4zMiBEZWJ1ZyIgKGJhc2VkIG9uICJXaW4zMiAoeDg2KSBEeW5hbWljLUxpbmsgTGlicmFyeSIpDQotIU1FU1NBR0UgDQotDQotIyBCZWdpbiBQcm9qZWN0DQotIyBQUk9QIEFsbG93UGVyQ29uZmlnRGVwZW5kZW5jaWVzIDANCi0jIFBST1AgU2NjX1Byb2pOYW1lICIiDQotIyBQUk9QIFNjY19Mb2NhbFBhdGggIiINCi1DUFA9Y2wuZXhlDQotTVRMPW1pZGwuZXhlDQotUlNDPXJjLmV4ZQ0KLQ0KLSFJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdG5lb24gLSBXaW4zMiBSZWxlYXNlIg0KLQ0KLSMgUFJPUCBCQVNFIFVzZV9NRkMgMA0KLSMgUFJPUCBCQVNFIFVzZV9EZWJ1Z19MaWJyYXJpZXMgMA0KLSMgUFJPUCBCQVNFIE91dHB1dF9EaXIgIlJlbGVhc2UiDQotIyBQUk9QIEJBU0UgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDANCi0jIFBST1AgT3V0cHV0X0RpciAiUmVsZWFzZSINCi0jIFBST1AgSW50ZXJtZWRpYXRlX0RpciAiUmVsZWFzZSINCi0jIFBST1AgSWdub3JlX0V4cG9ydF9MaWIgMA0KLSMgUFJPUCBUYXJnZXRfRGlyICIiDQotIyBBREQgQkFTRSBDUFAgL25vbG9nbyAvTVQgL1czIC9HWCAvTzIgL0QgIldJTjMyIiAvRCAiTkRFQlVHIiAvRCAiX1dJTkRPV1MiIC9EICJfTUJDUyIgL0QgIl9VU1JETEwiIC9EICJMSUJHU1RORU9OX0VYUE9SVFMiIC9ZWCAvRkQgL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTUQgL1czIC9HWCAvTzIgL0kgIi4uLy4uL2dzdC1saWJzIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyIiAvSSAiLi4vY29tbW9uIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyL2xpYnMiIC9JICIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL2dzdC1saWJzIiAvRCAiTkRFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVE5FT05fRVhQT1JUUyIgL0QgIkhBVkVfQ09ORklHX0giIC9ZWCAvRkQgL2MNCi0jIEFERCBCQVNFIE1UTCAvbm9sb2dvIC9EICJOREVCVUciIC9ta3R5cGxpYjIwMyAvd2luMzINCi0jIEFERCBNVEwgL25vbG9nbyAvRCAiTkRFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgQkFTRSBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi0jIEFERCBSU0MgL2wgMHg0MGMgL2QgIk5ERUJVRyINCi1CU0MzMj1ic2NtYWtlLmV4ZQ0KLSMgQUREIEJBU0UgQlNDMzIgL25vbG9nbw0KLSMgQUREIEJTQzMyIC9ub2xvZ28NCi1MSU5LMzI9bGluay5leGUNCi0jIEFERCBCQVNFIExJTkszMiBrZXJuZWwzMi5saWIgdXNlcjMyLmxpYiBnZGkzMi5saWIgd2luc3Bvb2wubGliIGNvbWRsZzMyLmxpYiBhZHZhcGkzMi5saWIgc2hlbGwzMi5saWIgb2xlMzIubGliIG9sZWF1dDMyLmxpYiB1dWlkLmxpYiBvZGJjMzIubGliIG9kYmNjcDMyLmxpYiAvbm9sb2dvIC9kbGwgL21hY2hpbmU6STM4Ng0KLSMgQUREIExJTkszMiB3czJfMzIubGliIGxpYm5lb24ubGliIGxpYmdzdHJlYW1lci0wLjEwLmxpYiBsaWJnc3RiYXNlLTAuMTAubGliIGdsaWItMi4wLmxpYiBnb2JqZWN0LTIuMC5saWIgL25vbG9nbyAvZGxsIC9tYWNoaW5lOkkzODYgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdHJlYW1lci93aW4zMi92czYvcmVsZWFzZSIgL2xpYnBhdGg6Ii4uLy4uLy4uL2dzdC1wbHVnaW5zLWJhc2Uvd2luMzIvdnM2L3JlbGVhc2UiIC9saWJwYXRoOiIuL3JlbGVhc2UiDQotIyBCZWdpbiBTcGVjaWFsIEJ1aWxkIFRvb2wNCi1UYXJnZXRQYXRoPS5cUmVsZWFzZVxsaWJnc3RuZW9uLmRsbA0KLVNPVVJDRT0iJChJbnB1dFBhdGgpIg0KLVBvc3RCdWlsZF9DbWRzPWNvcHkgL1kgJChUYXJnZXRQYXRoKSBjOlxnc3RyZWFtZXJcbGliXGdzdHJlYW1lci0wLjEwDQotIyBFbmQgU3BlY2lhbCBCdWlsZCBUb29sDQotDQotIUVMU0VJRiAgIiQoQ0ZHKSIgPT0gImxpYmdzdG5lb24gLSBXaW4zMiBEZWJ1ZyINCi0NCi0jIFBST1AgQkFTRSBVc2VfTUZDIDANCi0jIFBST1AgQkFTRSBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgQkFTRSBPdXRwdXRfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBJbnRlcm1lZGlhdGVfRGlyICJEZWJ1ZyINCi0jIFBST1AgQkFTRSBUYXJnZXRfRGlyICIiDQotIyBQUk9QIFVzZV9NRkMgMA0KLSMgUFJPUCBVc2VfRGVidWdfTGlicmFyaWVzIDENCi0jIFBST1AgT3V0cHV0X0RpciAiRGVidWciDQotIyBQUk9QIEludGVybWVkaWF0ZV9EaXIgIkRlYnVnIg0KLSMgUFJPUCBJZ25vcmVfRXhwb3J0X0xpYiAwDQotIyBQUk9QIFRhcmdldF9EaXIgIiINCi0jIEFERCBCQVNFIENQUCAvbm9sb2dvIC9NVGQgL1czIC9HbSAvR1ggL1pJIC9PZCAvRCAiV0lOMzIiIC9EICJfREVCVUciIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVE5FT05fRVhQT1JUUyIgL1lYIC9GRCAvR1ogL2MNCi0jIEFERCBDUFAgL25vbG9nbyAvTURkIC9XMyAvR20gL0dYIC9aSSAvT2QgL0kgIi4uLy4uL2dzdC1saWJzIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyIiAvSSAiLi4vY29tbW9uIiAvSSAiLi4vLi4vLi4vZ3N0cmVhbWVyL2xpYnMiIC9JICIuLi8uLi8uLi9nc3QtcGx1Z2lucy1iYXNlL2dzdC1saWJzIiAvRCAiX0RFQlVHIiAvRCAiV0lOMzIiIC9EICJfV0lORE9XUyIgL0QgIl9NQkNTIiAvRCAiX1VTUkRMTCIgL0QgIkxJQkdTVE5FT05fRVhQT1JUUyIgL0QgIkhBVkVfQ09ORklHX0giIC9ZWCAvRkQgL0daIC9jDQotIyBBREQgQkFTRSBNVEwgL25vbG9nbyAvRCAiX0RFQlVHIiAvbWt0eXBsaWIyMDMgL3dpbjMyDQotIyBBREQgTVRMIC9ub2xvZ28gL0QgIl9ERUJVRyIgL21rdHlwbGliMjAzIC93aW4zMg0KLSMgQUREIEJBU0UgUlNDIC9sIDB4NDBjIC9kICJfREVCVUciDQotIyBBREQgUlNDIC9sIDB4NDBjIC9kICJfREVCVUciDQotQlNDMzI9YnNjbWFrZS5leGUNCi0jIEFERCBCQVNFIEJTQzMyIC9ub2xvZ28NCi0jIEFERCBCU0MzMiAvbm9sb2dvDQotTElOSzMyPWxpbmsuZXhlDQotIyBBREQgQkFTRSBMSU5LMzIga2VybmVsMzIubGliIHVzZXIzMi5saWIgZ2RpMzIubGliIHdpbnNwb29sLmxpYiBjb21kbGczMi5saWIgYWR2YXBpMzIubGliIHNoZWxsMzIubGliIG9sZTMyLmxpYiBvbGVhdXQzMi5saWIgdXVpZC5saWIgb2RiYzMyLmxpYiBvZGJjY3AzMi5saWIgL25vbG9nbyAvZGxsIC9kZWJ1ZyAvbWFjaGluZTpJMzg2IC9wZGJ0eXBlOnNlcHQNCi0jIEFERCBMSU5LMzIgd3MyXzMyLmxpYiBsaWJuZW9uRC5saWIgbGliZ3N0cmVhbWVyLTAuMTAubGliIGxpYmdzdGJhc2UtMC4xMC5saWIgZ2xpYi0yLjBELmxpYiBnb2JqZWN0LTIuMEQubGliIC9ub2xvZ28gL2RsbCAvZGVidWcgL21hY2hpbmU6STM4NiAvcGRidHlwZTpzZXB0IC9saWJwYXRoOiIuLi8uLi8uLi9nc3RyZWFtZXIvd2luMzIvdnM2L2RlYnVnIiAvbGlicGF0aDoiLi4vLi4vLi4vZ3N0LXBsdWdpbnMtYmFzZS93aW4zMi92czYvZGVidWciIC9saWJwYXRoOiIuL2RlYnVnIg0KLSMgQmVnaW4gU3BlY2lhbCBCdWlsZCBUb29sDQotVGFyZ2V0UGF0aD0uXERlYnVnXGxpYmdzdG5lb24uZGxsDQotU09VUkNFPSIkKElucHV0UGF0aCkiDQotUG9zdEJ1aWxkX0NtZHM9Y29weSAvWSAkKFRhcmdldFBhdGgpIGM6XGdzdHJlYW1lclxkZWJ1Z1xsaWJcZ3N0cmVhbWVyLTAuMTANCi0jIEVuZCBTcGVjaWFsIEJ1aWxkIFRvb2wNCi0NCi0hRU5ESUYgDQotDQotIyBCZWdpbiBUYXJnZXQNCi0NCi0jIE5hbWUgImxpYmdzdG5lb24gLSBXaW4zMiBSZWxlYXNlIg0KLSMgTmFtZSAibGliZ3N0bmVvbiAtIFdpbjMyIERlYnVnIg0KLSMgQmVnaW4gR3JvdXAgIlNvdXJjZSBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImNwcDtjO2N4eDtyYztkZWY7cjtvZGw7aWRsO2hwajtiYXQiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxleHRcbmVvblxnc3RuZW9uaHR0cHNyYy5jDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIkhlYWRlciBGaWxlcyINCi0NCi0jIFBST1AgRGVmYXVsdF9GaWx0ZXIgImg7aHBwO2h4eDtobTtpbmwiDQotIyBCZWdpbiBTb3VyY2UgRmlsZQ0KLQ0KLVNPVVJDRT0uLlwuLlxleHRcbmVvblxnc3RuZW9uaHR0cHNyYy5oDQotIyBFbmQgU291cmNlIEZpbGUNCi0jIEVuZCBHcm91cA0KLSMgQmVnaW4gR3JvdXAgIlJlc291cmNlIEZpbGVzIg0KLQ0KLSMgUFJPUCBEZWZhdWx0X0ZpbHRlciAiaWNvO2N1cjtibXA7ZGxnO3JjMjtyY3Q7YmluO3JncztnaWY7anBnO2pwZWc7anBlIg0KLSMgRW5kIEdyb3VwDQotIyBFbmQgVGFyZ2V0DQotIyBFbmQgUHJvamVjdA0KZGlmZiAtLWdpdCBhL3dpbjMyL3ZzOC9nc3QtcGx1Z2lucy1iYWQuc2xuIGIvd2luMzIvdnM4L2dzdC1wbHVnaW5zLWJhZC5zbG4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwN2VkZjIuLjAwMDAwMDAKLS0tIGEvd2luMzIvdnM4L2dzdC1wbHVnaW5zLWJhZC5zbG4KKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1NaWNyb3NvZnQgVmlzdWFsIFN0dWRpbyBTb2x1dGlvbiBGaWxlLCBGb3JtYXQgVmVyc2lvbiA5LjAwDQotIyBWaXN1YWwgU3R1ZGlvIDIwMDUNCi1Qcm9qZWN0KCJ7OEJDOUNFQjgtOEI0QS0xMUQwLThEMTEtMDBBMEM5MUJDOTQyfSIpID0gImxpYmdzdGRpcmVjdGRyYXciLCAibGliZ3N0ZGlyZWN0ZHJhdy52Y3Byb2oiLCAiezE1OTRBNjIzLTU1MjktNEI4Ni1CRDRBLTY5NENGMEJEQjVDNH0iDQotRW5kUHJvamVjdA0KLVByb2plY3QoIns4QkM5Q0VCOC04QjRBLTExRDAtOEQxMS0wMEEwQzkxQkM5NDJ9IikgPSAibGliZ3N0ZGlyZWN0c291bmQiLCAibGliZ3N0ZGlyZWN0c291bmQudmNwcm9qIiwgIns2NjdCMDQzNy1GNjY4LTQ0M0ItQUZGMC04OTkxREU3NURCRUR9Ig0KLUVuZFByb2plY3QNCi1HbG9iYWwNCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvbkNvbmZpZ3VyYXRpb25QbGF0Zm9ybXMpID0gcHJlU29sdXRpb24NCi0JCURlYnVnfFdpbjMyID0gRGVidWd8V2luMzINCi0JCVJlbGVhc2V8V2luMzIgPSBSZWxlYXNlfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihQcm9qZWN0Q29uZmlndXJhdGlvblBsYXRmb3JtcykgPSBwb3N0U29sdXRpb24NCi0JCXsxNTk0QTYyMy01NTI5LTRCODYtQkQ0QS02OTRDRjBCREI1QzR9LkRlYnVnfFdpbjMyLkFjdGl2ZUNmZyA9IERlYnVnfFdpbjMyDQotCQl7MTU5NEE2MjMtNTUyOS00Qjg2LUJENEEtNjk0Q0YwQkRCNUM0fS5EZWJ1Z3xXaW4zMi5CdWlsZC4wID0gRGVidWd8V2luMzINCi0JCXsxNTk0QTYyMy01NTI5LTRCODYtQkQ0QS02OTRDRjBCREI1QzR9LlJlbGVhc2V8V2luMzIuQWN0aXZlQ2ZnID0gUmVsZWFzZXxXaW4zMg0KLQkJezE1OTRBNjIzLTU1MjktNEI4Ni1CRDRBLTY5NENGMEJEQjVDNH0uUmVsZWFzZXxXaW4zMi5CdWlsZC4wID0gUmVsZWFzZXxXaW4zMg0KLQkJezY2N0IwNDM3LUY2NjgtNDQzQi1BRkYwLTg5OTFERTc1REJFRH0uRGVidWd8V2luMzIuQWN0aXZlQ2ZnID0gRGVidWd8V2luMzINCi0JCXs2NjdCMDQzNy1GNjY4LTQ0M0ItQUZGMC04OTkxREU3NURCRUR9LkRlYnVnfFdpbjMyLkJ1aWxkLjAgPSBEZWJ1Z3xXaW4zMg0KLQkJezY2N0IwNDM3LUY2NjgtNDQzQi1BRkYwLTg5OTFERTc1REJFRH0uUmVsZWFzZXxXaW4zMi5BY3RpdmVDZmcgPSBSZWxlYXNlfFdpbjMyDQotCQl7NjY3QjA0MzctRjY2OC00NDNCLUFGRjAtODk5MURFNzVEQkVEfS5SZWxlYXNlfFdpbjMyLkJ1aWxkLjAgPSBSZWxlYXNlfFdpbjMyDQotCUVuZEdsb2JhbFNlY3Rpb24NCi0JR2xvYmFsU2VjdGlvbihTb2x1dGlvblByb3BlcnRpZXMpID0gcHJlU29sdXRpb24NCi0JCUhpZGVTb2x1dGlvbk5vZGUgPSBGQUxTRQ0KLQlFbmRHbG9iYWxTZWN0aW9uDQotRW5kR2xvYmFsDQo=